From 47e150f42e2f981d87ab06616fcabd137931e352 Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Tue, 4 May 2021 17:29:48 +0530 Subject: [PATCH] Remove dist --- docs/dist/1065.1065.js | 1 - docs/dist/1134.1134.js | 1 - docs/dist/1147.1147.js | 1 - docs/dist/1156.1156.js | 1 - docs/dist/1259.1259.js | 1 - docs/dist/1448.1448.js | 1 - docs/dist/1471.1471.js | 1 - docs/dist/180.180.js | 1 - docs/dist/1886.1886.js | 1 - docs/dist/1960.1960.js | 1 - docs/dist/1961.1961.js | 1 - docs/dist/2060.2060.js | 1 - docs/dist/2075.2075.js | 1 - docs/dist/2140.2140.js | 1 - docs/dist/249.249.js | 1 - docs/dist/2571.2571.js | 1 - docs/dist/2798.2798.js | 1 - docs/dist/2892.2892.js | 1 - docs/dist/2911.2911.js | 2 - docs/dist/2911.2911.js.LICENSE.txt | 3 - docs/dist/2954.2954.js | 1 - docs/dist/3036.3036.js | 1 - docs/dist/3585.3585.js | 1 - docs/dist/3632.3632.js | 1 - docs/dist/3919.3919.js | 1 - docs/dist/4129.4129.js | 1 - docs/dist/4368.4368.js | 1 - docs/dist/4386.4386.js | 1 - docs/dist/4407.4407.js | 1 - docs/dist/4902.4902.js | 1 - docs/dist/4912.4912.js | 1 - docs/dist/4946.4946.js | 1 - docs/dist/5062.5062.js | 1 - docs/dist/525.525.js | 1 - docs/dist/5470.5470.js | 1 - docs/dist/5593.5593.js | 1 - docs/dist/5703.5703.js | 1 - docs/dist/5849.5849.js | 1 - docs/dist/6082.6082.js | 1 - docs/dist/6241.6241.js | 1 - docs/dist/6424.6424.js | 1 - docs/dist/6449.6449.js | 1 - docs/dist/6489.6489.js | 1 - docs/dist/6587.6587.js | 1 - docs/dist/6717.6717.js | 1 - docs/dist/6917.6917.js | 1 - docs/dist/7043.7043.js | 1 - docs/dist/7194.7194.js | 1 - docs/dist/7287.7287.js | 1 - docs/dist/7562.7562.js | 1 - docs/dist/7637.7637.js | 1 - docs/dist/7778.7778.js | 1 - docs/dist/7835.7835.js | 1 - docs/dist/8070.8070.js | 1 - docs/dist/8084.8084.js | 1 - docs/dist/8180.8180.js | 1 - docs/dist/8183.8183.js | 1 - docs/dist/8424.8424.js | 1 - docs/dist/848.848.js | 1 - docs/dist/854.854.js | 1 - docs/dist/8670.8670.js | 1 - docs/dist/8715.8715.js | 1 - docs/dist/8719.8719.js | 1 - docs/dist/8946.8946.js | 1 - docs/dist/911.911.js | 1 - docs/dist/9343.9343.js | 1 - docs/dist/9398.9398.js | 1 - docs/dist/9537.9537.js | 1 - docs/dist/9684.9684.js | 1 - docs/dist/9907.9907.js | 1 - docs/dist/996.996.js | 1 - docs/dist/bundle.css | 3903 ---------------------------- docs/dist/bundle.js | 2 - docs/dist/bundle.js.LICENSE.txt | 803 ------ docs/dist/bundle.js.map | 1 - docs/dist/codicon.ttf | Bin 61024 -> 0 bytes docs/dist/editor.worker.js | 1 - docs/dist/editor.worker.js.map | 1 - docs/dist/json.worker.js | 1 - docs/dist/json.worker.js.map | 1 - 80 files changed, 4787 deletions(-) delete mode 100644 docs/dist/1065.1065.js delete mode 100644 docs/dist/1134.1134.js delete mode 100644 docs/dist/1147.1147.js delete mode 100644 docs/dist/1156.1156.js delete mode 100644 docs/dist/1259.1259.js delete mode 100644 docs/dist/1448.1448.js delete mode 100644 docs/dist/1471.1471.js delete mode 100644 docs/dist/180.180.js delete mode 100644 docs/dist/1886.1886.js delete mode 100644 docs/dist/1960.1960.js delete mode 100644 docs/dist/1961.1961.js delete mode 100644 docs/dist/2060.2060.js delete mode 100644 docs/dist/2075.2075.js delete mode 100644 docs/dist/2140.2140.js delete mode 100644 docs/dist/249.249.js delete mode 100644 docs/dist/2571.2571.js delete mode 100644 docs/dist/2798.2798.js delete mode 100644 docs/dist/2892.2892.js delete mode 100644 docs/dist/2911.2911.js delete mode 100644 docs/dist/2911.2911.js.LICENSE.txt delete mode 100644 docs/dist/2954.2954.js delete mode 100644 docs/dist/3036.3036.js delete mode 100644 docs/dist/3585.3585.js delete mode 100644 docs/dist/3632.3632.js delete mode 100644 docs/dist/3919.3919.js delete mode 100644 docs/dist/4129.4129.js delete mode 100644 docs/dist/4368.4368.js delete mode 100644 docs/dist/4386.4386.js delete mode 100644 docs/dist/4407.4407.js delete mode 100644 docs/dist/4902.4902.js delete mode 100644 docs/dist/4912.4912.js delete mode 100644 docs/dist/4946.4946.js delete mode 100644 docs/dist/5062.5062.js delete mode 100644 docs/dist/525.525.js delete mode 100644 docs/dist/5470.5470.js delete mode 100644 docs/dist/5593.5593.js delete mode 100644 docs/dist/5703.5703.js delete mode 100644 docs/dist/5849.5849.js delete mode 100644 docs/dist/6082.6082.js delete mode 100644 docs/dist/6241.6241.js delete mode 100644 docs/dist/6424.6424.js delete mode 100644 docs/dist/6449.6449.js delete mode 100644 docs/dist/6489.6489.js delete mode 100644 docs/dist/6587.6587.js delete mode 100644 docs/dist/6717.6717.js delete mode 100644 docs/dist/6917.6917.js delete mode 100644 docs/dist/7043.7043.js delete mode 100644 docs/dist/7194.7194.js delete mode 100644 docs/dist/7287.7287.js delete mode 100644 docs/dist/7562.7562.js delete mode 100644 docs/dist/7637.7637.js delete mode 100644 docs/dist/7778.7778.js delete mode 100644 docs/dist/7835.7835.js delete mode 100644 docs/dist/8070.8070.js delete mode 100644 docs/dist/8084.8084.js delete mode 100644 docs/dist/8180.8180.js delete mode 100644 docs/dist/8183.8183.js delete mode 100644 docs/dist/8424.8424.js delete mode 100644 docs/dist/848.848.js delete mode 100644 docs/dist/854.854.js delete mode 100644 docs/dist/8670.8670.js delete mode 100644 docs/dist/8715.8715.js delete mode 100644 docs/dist/8719.8719.js delete mode 100644 docs/dist/8946.8946.js delete mode 100644 docs/dist/911.911.js delete mode 100644 docs/dist/9343.9343.js delete mode 100644 docs/dist/9398.9398.js delete mode 100644 docs/dist/9537.9537.js delete mode 100644 docs/dist/9684.9684.js delete mode 100644 docs/dist/9907.9907.js delete mode 100644 docs/dist/996.996.js delete mode 100644 docs/dist/bundle.css delete mode 100644 docs/dist/bundle.js delete mode 100644 docs/dist/bundle.js.LICENSE.txt delete mode 100644 docs/dist/bundle.js.map delete mode 100644 docs/dist/codicon.ttf delete mode 100644 docs/dist/editor.worker.js delete mode 100644 docs/dist/editor.worker.js.map delete mode 100644 docs/dist/json.worker.js delete mode 100644 docs/dist/json.worker.js.map diff --git a/docs/dist/1065.1065.js b/docs/dist/1065.1065.js deleted file mode 100644 index 521e2d4b..00000000 --- a/docs/dist/1065.1065.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1065],{71065:(e,n,s)=>{"use strict";s.r(n),s.d(n,{conf:()=>i,language:()=>t});var i={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">",notIn:["string"]}],surroundingPairs:[{open:"(",close:")"},{open:"[",close:"]"},{open:"`",close:"`"}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#?region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#?endregion\\b.*--\x3e")}}},t={defaultToken:"",tokenPostfix:".rst",control:/[\\`*_\[\]{}()#+\-\.!]/,escapes:/\\(?:@control)/,empty:["area","base","basefont","br","col","frame","hr","img","input","isindex","link","meta","param"],alphanumerics:/[A-Za-z0-9]/,alphanumericsplus:/[A-Za-z0-9-_+:.]/,simpleRefNameWithoutBq:/(?:@alphanumerics@alphanumericsplus*@alphanumerics)+|(?:@alphanumerics+)/,simpleRefName:/(?:`@simpleRefNameWithoutBq`|@simpleRefNameWithoutBq)/,phrase:/@simpleRefName(?:\s@simpleRefName)*/,citationName:/[A-Za-z][A-Za-z0-9-_.]*/,blockLiteralStart:/(?:[!"#$%&'()*+,-./:;<=>?@\[\]^_`{|}~]|[\s])/,precedingChars:/(?:[ -:/'"<([{])/,followingChars:/(?:[ -.,:;!?/'")\]}>]|$)/,punctuation:/(=|-|~|`|#|"|\^|\+|\*|:|\.|'|_|\+)/,tokenizer:{root:[[/^(@punctuation{3,}$){1,1}?/,"keyword"],[/^\s*([\*\-+‣•]|[a-zA-Z0-9]+\.|\([a-zA-Z0-9]+\)|[a-zA-Z0-9]+\))\s/,"keyword"],[/([ ]::)\s*$/,"keyword","@blankLineOfLiteralBlocks"],[/(::)\s*$/,"keyword","@blankLineOfLiteralBlocks"],{include:"@tables"},{include:"@explicitMarkupBlocks"},{include:"@inlineMarkup"}],explicitMarkupBlocks:[{include:"@citations"},{include:"@footnotes"},[/^(\.\.\s)(@simpleRefName)(::\s)(.*)$/,[{token:"",next:"subsequentLines"},"keyword","",""]],[/^(\.\.)(\s+)(_)(@simpleRefName)(:)(\s+)(.*)/,[{token:"",next:"hyperlinks"},"","","string.link","","","string.link"]],[/^((?:(?:\.\.)(?:\s+))?)(__)(:)(\s+)(.*)/,[{token:"",next:"subsequentLines"},"","","","string.link"]],[/^(__\s+)(.+)/,["","string.link"]],[/^(\.\.)( \|)([^| ]+[^|]*[^| ]*)(\| )(@simpleRefName)(:: .*)/,[{token:"",next:"subsequentLines"},"","string.link","","keyword",""],"@rawBlocks"],[/(\|)([^| ]+[^|]*[^| ]*)(\|_{0,2})/,["","string.link",""]],[/^(\.\.)([ ].*)$/,[{token:"",next:"@comments"},"comment"]]],inlineMarkup:[{include:"@citationsReference"},{include:"@footnotesReference"},[/(@simpleRefName)(_{1,2})/,["string.link",""]],[/(`)([^<`]+\s+)(<)(.*)(>)(`)(_)/,["","string.link","","string.link","","",""]],[/\*\*([^\\*]|\*(?!\*))+\*\*/,"strong"],[/\*[^*]+\*/,"emphasis"],[/(``)((?:[^`]|\`(?!`))+)(``)/,["","keyword",""]],[/(__\s+)(.+)/,["","keyword"]],[/(:)((?:@simpleRefNameWithoutBq)?)(:`)([^`]+)(`)/,["","keyword","","",""]],[/(`)([^`]+)(`:)((?:@simpleRefNameWithoutBq)?)(:)/,["","","","keyword",""]],[/(`)([^`]+)(`)/,""],[/(_`)(@phrase)(`)/,["","string.link",""]]],citations:[[/^(\.\.\s+\[)((?:@citationName))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]]],citationsReference:[[/(\[)(@citationName)(\]_)/,["","string.link",""]]],footnotes:[[/^(\.\.\s+\[)((?:[0-9]+))(\]\s+.*)/,[{token:"",next:"@subsequentLines"},"string.link",""]],[/^(\.\.\s+\[)((?:#@simpleRefName?))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]],[/^(\.\.\s+\[)((?:\*))(\]\s+)(.*)/,[{token:"",next:"@subsequentLines"},"string.link","",""]]],footnotesReference:[[/(\[)([0-9]+)(\])(_)/,["","string.link","",""]],[/(\[)(#@simpleRefName?)(\])(_)/,["","string.link","",""]],[/(\[)(\*)(\])(_)/,["","string.link","",""]]],blankLineOfLiteralBlocks:[[/^$/,"","@subsequentLinesOfLiteralBlocks"],[/^.*$/,"","@pop"]],subsequentLinesOfLiteralBlocks:[[/(@blockLiteralStart+)(.*)/,["keyword",""]],[/^(?!blockLiteralStart)/,"","@popall"]],subsequentLines:[[/^[\s]+.*/,""],[/^(?!\s)/,"","@pop"]],hyperlinks:[[/^[\s]+.*/,"string.link"],[/^(?!\s)/,"","@pop"]],comments:[[/^[\s]+.*/,"comment"],[/^(?!\s)/,"","@pop"]],tables:[[/\+-[+-]+/,"keyword"],[/\+=[+=]+/,"keyword"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/1134.1134.js b/docs/dist/1134.1134.js deleted file mode 100644 index 02bf161f..00000000 --- a/docs/dist/1134.1134.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1134,6717],{41134:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>o,language:()=>r});var i=n(96717),o=i.conf,r={defaultToken:"invalid",tokenPostfix:".js",keywords:["break","case","catch","class","continue","const","constructor","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","get","if","import","in","instanceof","let","new","null","return","set","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"],typeKeywords:[],operators:i.language.operators,symbols:i.language.symbols,escapes:i.language.escapes,digits:i.language.digits,octaldigits:i.language.octaldigits,binarydigits:i.language.binarydigits,hexdigits:i.language.hexdigits,regexpctl:i.language.regexpctl,regexpesc:i.language.regexpesc,tokenizer:i.language.tokenizer}},96717:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>o,language:()=>r});var i=n(89587),o={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:i.Mj.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:i.Mj.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:i.Mj.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:i.Mj.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],folding:{markers:{start:new RegExp("^\\s*//\\s*#?region\\b"),end:new RegExp("^\\s*//\\s*#?endregion\\b")}}},r={defaultToken:"invalid",tokenPostfix:".ts",keywords:["abstract","any","as","asserts","bigint","boolean","break","case","catch","class","continue","const","constructor","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","infer","instanceof","interface","is","keyof","let","module","namespace","never","new","null","number","object","package","private","protected","public","readonly","require","global","return","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unique","unknown","var","void","while","with","yield","async","await","of"],operators:["<=",">=","==","!=","===","!==","=>","+","-","**","*","/","%","++","--","<<",">",">>>","&","|","^","!","~","&&","||","??","?",":","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=","@"],symbols:/[=>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"common"}]}}}}]); \ No newline at end of file diff --git a/docs/dist/1147.1147.js b/docs/dist/1147.1147.js deleted file mode 100644 index e6dd26a5..00000000 --- a/docs/dist/1147.1147.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1147],{21147:(e,r,t)=>{"use strict";t.r(r),t.d(r,{conf:()=>n,language:()=>s});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".coffee",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:["and","or","is","isnt","not","on","yes","@","no","off","true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","if","else","switch","for","while","do","try","catch","finally","class","extends","super","undefined","then","unless","until","loop","of","by","when"],symbols:/[=>{"use strict";i.r(e),i.d(e,{conf:()=>d,language:()=>f});var d={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},f={defaultToken:"",tokenPostfix:".sol",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["pragma","solidity","contract","library","using","struct","function","modifier","constructor","address","string","bool","Int","Uint","Byte","Fixed","Ufixed","int","int8","int16","int24","int32","int40","int48","int56","int64","int72","int80","int88","int96","int104","int112","int120","int128","int136","int144","int152","int160","int168","int176","int184","int192","int200","int208","int216","int224","int232","int240","int248","int256","uint","uint8","uint16","uint24","uint32","uint40","uint48","uint56","uint64","uint72","uint80","uint88","uint96","uint104","uint112","uint120","uint128","uint136","uint144","uint152","uint160","uint168","uint176","uint184","uint192","uint200","uint208","uint216","uint224","uint232","uint240","uint248","uint256","byte","bytes","bytes1","bytes2","bytes3","bytes4","bytes5","bytes6","bytes7","bytes8","bytes9","bytes10","bytes11","bytes12","bytes13","bytes14","bytes15","bytes16","bytes17","bytes18","bytes19","bytes20","bytes21","bytes22","bytes23","bytes24","bytes25","bytes26","bytes27","bytes28","bytes29","bytes30","bytes31","bytes32","fixed","fixed0x8","fixed0x16","fixed0x24","fixed0x32","fixed0x40","fixed0x48","fixed0x56","fixed0x64","fixed0x72","fixed0x80","fixed0x88","fixed0x96","fixed0x104","fixed0x112","fixed0x120","fixed0x128","fixed0x136","fixed0x144","fixed0x152","fixed0x160","fixed0x168","fixed0x176","fixed0x184","fixed0x192","fixed0x200","fixed0x208","fixed0x216","fixed0x224","fixed0x232","fixed0x240","fixed0x248","fixed0x256","fixed8x8","fixed8x16","fixed8x24","fixed8x32","fixed8x40","fixed8x48","fixed8x56","fixed8x64","fixed8x72","fixed8x80","fixed8x88","fixed8x96","fixed8x104","fixed8x112","fixed8x120","fixed8x128","fixed8x136","fixed8x144","fixed8x152","fixed8x160","fixed8x168","fixed8x176","fixed8x184","fixed8x192","fixed8x200","fixed8x208","fixed8x216","fixed8x224","fixed8x232","fixed8x240","fixed8x248","fixed16x8","fixed16x16","fixed16x24","fixed16x32","fixed16x40","fixed16x48","fixed16x56","fixed16x64","fixed16x72","fixed16x80","fixed16x88","fixed16x96","fixed16x104","fixed16x112","fixed16x120","fixed16x128","fixed16x136","fixed16x144","fixed16x152","fixed16x160","fixed16x168","fixed16x176","fixed16x184","fixed16x192","fixed16x200","fixed16x208","fixed16x216","fixed16x224","fixed16x232","fixed16x240","fixed24x8","fixed24x16","fixed24x24","fixed24x32","fixed24x40","fixed24x48","fixed24x56","fixed24x64","fixed24x72","fixed24x80","fixed24x88","fixed24x96","fixed24x104","fixed24x112","fixed24x120","fixed24x128","fixed24x136","fixed24x144","fixed24x152","fixed24x160","fixed24x168","fixed24x176","fixed24x184","fixed24x192","fixed24x200","fixed24x208","fixed24x216","fixed24x224","fixed24x232","fixed32x8","fixed32x16","fixed32x24","fixed32x32","fixed32x40","fixed32x48","fixed32x56","fixed32x64","fixed32x72","fixed32x80","fixed32x88","fixed32x96","fixed32x104","fixed32x112","fixed32x120","fixed32x128","fixed32x136","fixed32x144","fixed32x152","fixed32x160","fixed32x168","fixed32x176","fixed32x184","fixed32x192","fixed32x200","fixed32x208","fixed32x216","fixed32x224","fixed40x8","fixed40x16","fixed40x24","fixed40x32","fixed40x40","fixed40x48","fixed40x56","fixed40x64","fixed40x72","fixed40x80","fixed40x88","fixed40x96","fixed40x104","fixed40x112","fixed40x120","fixed40x128","fixed40x136","fixed40x144","fixed40x152","fixed40x160","fixed40x168","fixed40x176","fixed40x184","fixed40x192","fixed40x200","fixed40x208","fixed40x216","fixed48x8","fixed48x16","fixed48x24","fixed48x32","fixed48x40","fixed48x48","fixed48x56","fixed48x64","fixed48x72","fixed48x80","fixed48x88","fixed48x96","fixed48x104","fixed48x112","fixed48x120","fixed48x128","fixed48x136","fixed48x144","fixed48x152","fixed48x160","fixed48x168","fixed48x176","fixed48x184","fixed48x192","fixed48x200","fixed48x208","fixed56x8","fixed56x16","fixed56x24","fixed56x32","fixed56x40","fixed56x48","fixed56x56","fixed56x64","fixed56x72","fixed56x80","fixed56x88","fixed56x96","fixed56x104","fixed56x112","fixed56x120","fixed56x128","fixed56x136","fixed56x144","fixed56x152","fixed56x160","fixed56x168","fixed56x176","fixed56x184","fixed56x192","fixed56x200","fixed64x8","fixed64x16","fixed64x24","fixed64x32","fixed64x40","fixed64x48","fixed64x56","fixed64x64","fixed64x72","fixed64x80","fixed64x88","fixed64x96","fixed64x104","fixed64x112","fixed64x120","fixed64x128","fixed64x136","fixed64x144","fixed64x152","fixed64x160","fixed64x168","fixed64x176","fixed64x184","fixed64x192","fixed72x8","fixed72x16","fixed72x24","fixed72x32","fixed72x40","fixed72x48","fixed72x56","fixed72x64","fixed72x72","fixed72x80","fixed72x88","fixed72x96","fixed72x104","fixed72x112","fixed72x120","fixed72x128","fixed72x136","fixed72x144","fixed72x152","fixed72x160","fixed72x168","fixed72x176","fixed72x184","fixed80x8","fixed80x16","fixed80x24","fixed80x32","fixed80x40","fixed80x48","fixed80x56","fixed80x64","fixed80x72","fixed80x80","fixed80x88","fixed80x96","fixed80x104","fixed80x112","fixed80x120","fixed80x128","fixed80x136","fixed80x144","fixed80x152","fixed80x160","fixed80x168","fixed80x176","fixed88x8","fixed88x16","fixed88x24","fixed88x32","fixed88x40","fixed88x48","fixed88x56","fixed88x64","fixed88x72","fixed88x80","fixed88x88","fixed88x96","fixed88x104","fixed88x112","fixed88x120","fixed88x128","fixed88x136","fixed88x144","fixed88x152","fixed88x160","fixed88x168","fixed96x8","fixed96x16","fixed96x24","fixed96x32","fixed96x40","fixed96x48","fixed96x56","fixed96x64","fixed96x72","fixed96x80","fixed96x88","fixed96x96","fixed96x104","fixed96x112","fixed96x120","fixed96x128","fixed96x136","fixed96x144","fixed96x152","fixed96x160","fixed104x8","fixed104x16","fixed104x24","fixed104x32","fixed104x40","fixed104x48","fixed104x56","fixed104x64","fixed104x72","fixed104x80","fixed104x88","fixed104x96","fixed104x104","fixed104x112","fixed104x120","fixed104x128","fixed104x136","fixed104x144","fixed104x152","fixed112x8","fixed112x16","fixed112x24","fixed112x32","fixed112x40","fixed112x48","fixed112x56","fixed112x64","fixed112x72","fixed112x80","fixed112x88","fixed112x96","fixed112x104","fixed112x112","fixed112x120","fixed112x128","fixed112x136","fixed112x144","fixed120x8","fixed120x16","fixed120x24","fixed120x32","fixed120x40","fixed120x48","fixed120x56","fixed120x64","fixed120x72","fixed120x80","fixed120x88","fixed120x96","fixed120x104","fixed120x112","fixed120x120","fixed120x128","fixed120x136","fixed128x8","fixed128x16","fixed128x24","fixed128x32","fixed128x40","fixed128x48","fixed128x56","fixed128x64","fixed128x72","fixed128x80","fixed128x88","fixed128x96","fixed128x104","fixed128x112","fixed128x120","fixed128x128","fixed136x8","fixed136x16","fixed136x24","fixed136x32","fixed136x40","fixed136x48","fixed136x56","fixed136x64","fixed136x72","fixed136x80","fixed136x88","fixed136x96","fixed136x104","fixed136x112","fixed136x120","fixed144x8","fixed144x16","fixed144x24","fixed144x32","fixed144x40","fixed144x48","fixed144x56","fixed144x64","fixed144x72","fixed144x80","fixed144x88","fixed144x96","fixed144x104","fixed144x112","fixed152x8","fixed152x16","fixed152x24","fixed152x32","fixed152x40","fixed152x48","fixed152x56","fixed152x64","fixed152x72","fixed152x80","fixed152x88","fixed152x96","fixed152x104","fixed160x8","fixed160x16","fixed160x24","fixed160x32","fixed160x40","fixed160x48","fixed160x56","fixed160x64","fixed160x72","fixed160x80","fixed160x88","fixed160x96","fixed168x8","fixed168x16","fixed168x24","fixed168x32","fixed168x40","fixed168x48","fixed168x56","fixed168x64","fixed168x72","fixed168x80","fixed168x88","fixed176x8","fixed176x16","fixed176x24","fixed176x32","fixed176x40","fixed176x48","fixed176x56","fixed176x64","fixed176x72","fixed176x80","fixed184x8","fixed184x16","fixed184x24","fixed184x32","fixed184x40","fixed184x48","fixed184x56","fixed184x64","fixed184x72","fixed192x8","fixed192x16","fixed192x24","fixed192x32","fixed192x40","fixed192x48","fixed192x56","fixed192x64","fixed200x8","fixed200x16","fixed200x24","fixed200x32","fixed200x40","fixed200x48","fixed200x56","fixed208x8","fixed208x16","fixed208x24","fixed208x32","fixed208x40","fixed208x48","fixed216x8","fixed216x16","fixed216x24","fixed216x32","fixed216x40","fixed224x8","fixed224x16","fixed224x24","fixed224x32","fixed232x8","fixed232x16","fixed232x24","fixed240x8","fixed240x16","fixed248x8","ufixed","ufixed0x8","ufixed0x16","ufixed0x24","ufixed0x32","ufixed0x40","ufixed0x48","ufixed0x56","ufixed0x64","ufixed0x72","ufixed0x80","ufixed0x88","ufixed0x96","ufixed0x104","ufixed0x112","ufixed0x120","ufixed0x128","ufixed0x136","ufixed0x144","ufixed0x152","ufixed0x160","ufixed0x168","ufixed0x176","ufixed0x184","ufixed0x192","ufixed0x200","ufixed0x208","ufixed0x216","ufixed0x224","ufixed0x232","ufixed0x240","ufixed0x248","ufixed0x256","ufixed8x8","ufixed8x16","ufixed8x24","ufixed8x32","ufixed8x40","ufixed8x48","ufixed8x56","ufixed8x64","ufixed8x72","ufixed8x80","ufixed8x88","ufixed8x96","ufixed8x104","ufixed8x112","ufixed8x120","ufixed8x128","ufixed8x136","ufixed8x144","ufixed8x152","ufixed8x160","ufixed8x168","ufixed8x176","ufixed8x184","ufixed8x192","ufixed8x200","ufixed8x208","ufixed8x216","ufixed8x224","ufixed8x232","ufixed8x240","ufixed8x248","ufixed16x8","ufixed16x16","ufixed16x24","ufixed16x32","ufixed16x40","ufixed16x48","ufixed16x56","ufixed16x64","ufixed16x72","ufixed16x80","ufixed16x88","ufixed16x96","ufixed16x104","ufixed16x112","ufixed16x120","ufixed16x128","ufixed16x136","ufixed16x144","ufixed16x152","ufixed16x160","ufixed16x168","ufixed16x176","ufixed16x184","ufixed16x192","ufixed16x200","ufixed16x208","ufixed16x216","ufixed16x224","ufixed16x232","ufixed16x240","ufixed24x8","ufixed24x16","ufixed24x24","ufixed24x32","ufixed24x40","ufixed24x48","ufixed24x56","ufixed24x64","ufixed24x72","ufixed24x80","ufixed24x88","ufixed24x96","ufixed24x104","ufixed24x112","ufixed24x120","ufixed24x128","ufixed24x136","ufixed24x144","ufixed24x152","ufixed24x160","ufixed24x168","ufixed24x176","ufixed24x184","ufixed24x192","ufixed24x200","ufixed24x208","ufixed24x216","ufixed24x224","ufixed24x232","ufixed32x8","ufixed32x16","ufixed32x24","ufixed32x32","ufixed32x40","ufixed32x48","ufixed32x56","ufixed32x64","ufixed32x72","ufixed32x80","ufixed32x88","ufixed32x96","ufixed32x104","ufixed32x112","ufixed32x120","ufixed32x128","ufixed32x136","ufixed32x144","ufixed32x152","ufixed32x160","ufixed32x168","ufixed32x176","ufixed32x184","ufixed32x192","ufixed32x200","ufixed32x208","ufixed32x216","ufixed32x224","ufixed40x8","ufixed40x16","ufixed40x24","ufixed40x32","ufixed40x40","ufixed40x48","ufixed40x56","ufixed40x64","ufixed40x72","ufixed40x80","ufixed40x88","ufixed40x96","ufixed40x104","ufixed40x112","ufixed40x120","ufixed40x128","ufixed40x136","ufixed40x144","ufixed40x152","ufixed40x160","ufixed40x168","ufixed40x176","ufixed40x184","ufixed40x192","ufixed40x200","ufixed40x208","ufixed40x216","ufixed48x8","ufixed48x16","ufixed48x24","ufixed48x32","ufixed48x40","ufixed48x48","ufixed48x56","ufixed48x64","ufixed48x72","ufixed48x80","ufixed48x88","ufixed48x96","ufixed48x104","ufixed48x112","ufixed48x120","ufixed48x128","ufixed48x136","ufixed48x144","ufixed48x152","ufixed48x160","ufixed48x168","ufixed48x176","ufixed48x184","ufixed48x192","ufixed48x200","ufixed48x208","ufixed56x8","ufixed56x16","ufixed56x24","ufixed56x32","ufixed56x40","ufixed56x48","ufixed56x56","ufixed56x64","ufixed56x72","ufixed56x80","ufixed56x88","ufixed56x96","ufixed56x104","ufixed56x112","ufixed56x120","ufixed56x128","ufixed56x136","ufixed56x144","ufixed56x152","ufixed56x160","ufixed56x168","ufixed56x176","ufixed56x184","ufixed56x192","ufixed56x200","ufixed64x8","ufixed64x16","ufixed64x24","ufixed64x32","ufixed64x40","ufixed64x48","ufixed64x56","ufixed64x64","ufixed64x72","ufixed64x80","ufixed64x88","ufixed64x96","ufixed64x104","ufixed64x112","ufixed64x120","ufixed64x128","ufixed64x136","ufixed64x144","ufixed64x152","ufixed64x160","ufixed64x168","ufixed64x176","ufixed64x184","ufixed64x192","ufixed72x8","ufixed72x16","ufixed72x24","ufixed72x32","ufixed72x40","ufixed72x48","ufixed72x56","ufixed72x64","ufixed72x72","ufixed72x80","ufixed72x88","ufixed72x96","ufixed72x104","ufixed72x112","ufixed72x120","ufixed72x128","ufixed72x136","ufixed72x144","ufixed72x152","ufixed72x160","ufixed72x168","ufixed72x176","ufixed72x184","ufixed80x8","ufixed80x16","ufixed80x24","ufixed80x32","ufixed80x40","ufixed80x48","ufixed80x56","ufixed80x64","ufixed80x72","ufixed80x80","ufixed80x88","ufixed80x96","ufixed80x104","ufixed80x112","ufixed80x120","ufixed80x128","ufixed80x136","ufixed80x144","ufixed80x152","ufixed80x160","ufixed80x168","ufixed80x176","ufixed88x8","ufixed88x16","ufixed88x24","ufixed88x32","ufixed88x40","ufixed88x48","ufixed88x56","ufixed88x64","ufixed88x72","ufixed88x80","ufixed88x88","ufixed88x96","ufixed88x104","ufixed88x112","ufixed88x120","ufixed88x128","ufixed88x136","ufixed88x144","ufixed88x152","ufixed88x160","ufixed88x168","ufixed96x8","ufixed96x16","ufixed96x24","ufixed96x32","ufixed96x40","ufixed96x48","ufixed96x56","ufixed96x64","ufixed96x72","ufixed96x80","ufixed96x88","ufixed96x96","ufixed96x104","ufixed96x112","ufixed96x120","ufixed96x128","ufixed96x136","ufixed96x144","ufixed96x152","ufixed96x160","ufixed104x8","ufixed104x16","ufixed104x24","ufixed104x32","ufixed104x40","ufixed104x48","ufixed104x56","ufixed104x64","ufixed104x72","ufixed104x80","ufixed104x88","ufixed104x96","ufixed104x104","ufixed104x112","ufixed104x120","ufixed104x128","ufixed104x136","ufixed104x144","ufixed104x152","ufixed112x8","ufixed112x16","ufixed112x24","ufixed112x32","ufixed112x40","ufixed112x48","ufixed112x56","ufixed112x64","ufixed112x72","ufixed112x80","ufixed112x88","ufixed112x96","ufixed112x104","ufixed112x112","ufixed112x120","ufixed112x128","ufixed112x136","ufixed112x144","ufixed120x8","ufixed120x16","ufixed120x24","ufixed120x32","ufixed120x40","ufixed120x48","ufixed120x56","ufixed120x64","ufixed120x72","ufixed120x80","ufixed120x88","ufixed120x96","ufixed120x104","ufixed120x112","ufixed120x120","ufixed120x128","ufixed120x136","ufixed128x8","ufixed128x16","ufixed128x24","ufixed128x32","ufixed128x40","ufixed128x48","ufixed128x56","ufixed128x64","ufixed128x72","ufixed128x80","ufixed128x88","ufixed128x96","ufixed128x104","ufixed128x112","ufixed128x120","ufixed128x128","ufixed136x8","ufixed136x16","ufixed136x24","ufixed136x32","ufixed136x40","ufixed136x48","ufixed136x56","ufixed136x64","ufixed136x72","ufixed136x80","ufixed136x88","ufixed136x96","ufixed136x104","ufixed136x112","ufixed136x120","ufixed144x8","ufixed144x16","ufixed144x24","ufixed144x32","ufixed144x40","ufixed144x48","ufixed144x56","ufixed144x64","ufixed144x72","ufixed144x80","ufixed144x88","ufixed144x96","ufixed144x104","ufixed144x112","ufixed152x8","ufixed152x16","ufixed152x24","ufixed152x32","ufixed152x40","ufixed152x48","ufixed152x56","ufixed152x64","ufixed152x72","ufixed152x80","ufixed152x88","ufixed152x96","ufixed152x104","ufixed160x8","ufixed160x16","ufixed160x24","ufixed160x32","ufixed160x40","ufixed160x48","ufixed160x56","ufixed160x64","ufixed160x72","ufixed160x80","ufixed160x88","ufixed160x96","ufixed168x8","ufixed168x16","ufixed168x24","ufixed168x32","ufixed168x40","ufixed168x48","ufixed168x56","ufixed168x64","ufixed168x72","ufixed168x80","ufixed168x88","ufixed176x8","ufixed176x16","ufixed176x24","ufixed176x32","ufixed176x40","ufixed176x48","ufixed176x56","ufixed176x64","ufixed176x72","ufixed176x80","ufixed184x8","ufixed184x16","ufixed184x24","ufixed184x32","ufixed184x40","ufixed184x48","ufixed184x56","ufixed184x64","ufixed184x72","ufixed192x8","ufixed192x16","ufixed192x24","ufixed192x32","ufixed192x40","ufixed192x48","ufixed192x56","ufixed192x64","ufixed200x8","ufixed200x16","ufixed200x24","ufixed200x32","ufixed200x40","ufixed200x48","ufixed200x56","ufixed208x8","ufixed208x16","ufixed208x24","ufixed208x32","ufixed208x40","ufixed208x48","ufixed216x8","ufixed216x16","ufixed216x24","ufixed216x32","ufixed216x40","ufixed224x8","ufixed224x16","ufixed224x24","ufixed224x32","ufixed232x8","ufixed232x16","ufixed232x24","ufixed240x8","ufixed240x16","ufixed248x8","event","enum","let","mapping","private","public","external","inherited","payable","true","false","var","import","constant","if","else","for","else","for","while","do","break","continue","throw","returns","return","suicide","new","is","this","super"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/1259.1259.js b/docs/dist/1259.1259.js deleted file mode 100644 index 96c493d9..00000000 --- a/docs/dist/1259.1259.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1259],{91259:(E,S,e)=>{"use strict";e.r(S),e.d(S,{conf:()=>T,language:()=>R});var T={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},R={defaultToken:"",tokenPostfix:".redis",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["APPEND","AUTH","BGREWRITEAOF","BGSAVE","BITCOUNT","BITFIELD","BITOP","BITPOS","BLPOP","BRPOP","BRPOPLPUSH","CLIENT","KILL","LIST","GETNAME","PAUSE","REPLY","SETNAME","CLUSTER","ADDSLOTS","COUNT-FAILURE-REPORTS","COUNTKEYSINSLOT","DELSLOTS","FAILOVER","FORGET","GETKEYSINSLOT","INFO","KEYSLOT","MEET","NODES","REPLICATE","RESET","SAVECONFIG","SET-CONFIG-EPOCH","SETSLOT","SLAVES","SLOTS","COMMAND","COUNT","GETKEYS","CONFIG","GET","REWRITE","SET","RESETSTAT","DBSIZE","DEBUG","OBJECT","SEGFAULT","DECR","DECRBY","DEL","DISCARD","DUMP","ECHO","EVAL","EVALSHA","EXEC","EXISTS","EXPIRE","EXPIREAT","FLUSHALL","FLUSHDB","GEOADD","GEOHASH","GEOPOS","GEODIST","GEORADIUS","GEORADIUSBYMEMBER","GETBIT","GETRANGE","GETSET","HDEL","HEXISTS","HGET","HGETALL","HINCRBY","HINCRBYFLOAT","HKEYS","HLEN","HMGET","HMSET","HSET","HSETNX","HSTRLEN","HVALS","INCR","INCRBY","INCRBYFLOAT","KEYS","LASTSAVE","LINDEX","LINSERT","LLEN","LPOP","LPUSH","LPUSHX","LRANGE","LREM","LSET","LTRIM","MGET","MIGRATE","MONITOR","MOVE","MSET","MSETNX","MULTI","PERSIST","PEXPIRE","PEXPIREAT","PFADD","PFCOUNT","PFMERGE","PING","PSETEX","PSUBSCRIBE","PUBSUB","PTTL","PUBLISH","PUNSUBSCRIBE","QUIT","RANDOMKEY","READONLY","READWRITE","RENAME","RENAMENX","RESTORE","ROLE","RPOP","RPOPLPUSH","RPUSH","RPUSHX","SADD","SAVE","SCARD","SCRIPT","FLUSH","LOAD","SDIFF","SDIFFSTORE","SELECT","SETBIT","SETEX","SETNX","SETRANGE","SHUTDOWN","SINTER","SINTERSTORE","SISMEMBER","SLAVEOF","SLOWLOG","SMEMBERS","SMOVE","SORT","SPOP","SRANDMEMBER","SREM","STRLEN","SUBSCRIBE","SUNION","SUNIONSTORE","SWAPDB","SYNC","TIME","TOUCH","TTL","TYPE","UNSUBSCRIBE","UNLINK","UNWATCH","WAIT","WATCH","ZADD","ZCARD","ZCOUNT","ZINCRBY","ZINTERSTORE","ZLEXCOUNT","ZRANGE","ZRANGEBYLEX","ZREVRANGEBYLEX","ZRANGEBYSCORE","ZRANK","ZREM","ZREMRANGEBYLEX","ZREMRANGEBYRANK","ZREMRANGEBYSCORE","ZREVRANGE","ZREVRANGEBYSCORE","ZREVRANK","ZSCORE","ZUNIONSTORE","SCAN","SSCAN","HSCAN","ZSCAN"],operators:[],builtinFunctions:[],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/docs/dist/1448.1448.js b/docs/dist/1448.1448.js deleted file mode 100644 index f4b5b2d1..00000000 --- a/docs/dist/1448.1448.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1448],{11448:(e,t,o)=>{"use strict";o.r(t),o.d(t,{conf:()=>n,language:()=>s});var n={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".cameligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["abs","begin","Bytes","Crypto","Current","else","end","failwith","false","fun","if","in","let","let%entry","let%init","List","list","Map","map","match","match%nat","mod","not","operation","Operation","of","Set","set","sender","source","String","then","true","type","with"],typeKeywords:["int","unit","string","tz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%","->","<-"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/1471.1471.js b/docs/dist/1471.1471.js deleted file mode 100644 index 57070e0a..00000000 --- a/docs/dist/1471.1471.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1471],{31471:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>s,language:()=>i});var s={comments:{lineComment:"#"}},i={defaultToken:"keyword",ignoreCase:!0,tokenPostfix:".azcli",str:/[^#\s]/,tokenizer:{root:[{include:"@comment"},[/\s-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}],[/^-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":{token:"key.identifier",next:"@type"}}}]],type:[{include:"@comment"},[/-+@str*\s*/,{cases:{"@eos":{token:"key.identifier",next:"@popall"},"@default":"key.identifier"}}],[/@str+\s*/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}]],comment:[[/#.*$/,{cases:{"@eos":{token:"comment",next:"@popall"}}}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/180.180.js b/docs/dist/180.180.js deleted file mode 100644 index ebf6533c..00000000 --- a/docs/dist/180.180.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[180],{90180:(e,t,o)=>{"use strict";o.r(t),o.d(t,{conf:()=>r,language:()=>n});var r={wordPattern:/(unary_[@~!#%^&*()\-=+\\|:<>\/?]+)|([a-zA-Z_$][\w$]*?_=)|(`[^`]+`)|([a-zA-Z_$][\w$]*)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:))")}}},n={tokenPostfix:".scala",keywords:["asInstanceOf","catch","class","classOf","def","do","else","extends","finally","for","foreach","forSome","if","import","isInstanceOf","macro","match","new","object","package","return","throw","trait","try","type","until","val","var","while","with","yield","given","enum","then"],softKeywords:["as","export","extension","end","derives","on"],constants:["true","false","null","this","super"],modifiers:["abstract","final","implicit","lazy","override","private","protected","sealed"],softModifiers:["inline","opaque","open","transparent","using"],name:/(?:[a-z_$][\w$]*|`[^`]+`)/,type:/(?:[A-Z][\w$]*)/,symbols:/[=>))/,["@brackets","white","variable"]],[/@name/,{cases:{"@keywords":"keyword","@softKeywords":"keyword","@modifiers":"keyword.modifier","@softModifiers":"keyword.modifier","@constants":{token:"constant",next:"@allowMethod"},"@default":{token:"identifier",next:"@allowMethod"}}}],[/@type/,"type","@allowMethod"],{include:"@whitespace"},[/@[a-zA-Z_$][\w$]*(?:\.[a-zA-Z_$][\w$]*)*/,"annotation"],[/[{(]/,"@brackets"],[/[})]/,"@brackets","@allowMethod"],[/\[/,"operator.square"],[/](?!\s*(?:va[rl]|def|type)\b)/,"operator.square","@allowMethod"],[/]/,"operator.square"],[/([=-]>|<-|>:|<:|:>|<%)(?=[\s\w()[\]{},\."'`])/,"keyword"],[/@symbols/,"operator"],[/[;,\.]/,"delimiter"],[/'[a-zA-Z$][\w$]*(?!')/,"attribute.name"],[/'[^\\']'/,"string","@allowMethod"],[/(')(@escapes)(')/,["string","string.escape",{token:"string",next:"@allowMethod"}]],[/'/,"string.invalid"]],import:[[/;/,"delimiter","@pop"],[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/@name|@type/,"type"],[/[(){}]/,"@brackets"],[/[[\]]/,"operator.square"],[/[\.,]/,"delimiter"]],allowMethod:[[/^|$/,"","@pop"],[/[ \t]+/,"white"],[/[\n\r]+/,"white","@pop"],[/\/\*/,"comment","@comment"],[/(?==>[\s\w([{])/,"keyword","@pop"],[/(@name|@symbols)(?=[ \t]*[[({"'`]|[ \t]+(?:[+-]?\.?\d|\w))/,{cases:{"@keywords":{token:"keyword",next:"@pop"},"->|<-|>:|<:|<%":{token:"keyword",next:"@pop"},"@default":{token:"@rematch",next:"@pop"}}}],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],case:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword","@allowMethod"],[/\bif\b|=>/,"keyword","@pop"],[/`[^`]+`/,"identifier","@allowMethod"],[/@name/,"variable","@allowMethod"],[/:::?|\||@(?![a-z_$])/,"keyword"],{include:"@root"}],vardef:[[/\b_\*/,"key"],[/\b(_|true|false|null|this|super)\b/,"keyword"],[/@name/,"variable"],[/:::?|\||@(?![a-z_$])/,"keyword"],[/=|:(?!:)/,"operator","@pop"],[/$/,"white","@pop"],{include:"@root"}],string:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],stringt:[[/[^\\"\n\r]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],fstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([\-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],fstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/%%/,"string"],[/(%)([\-#+ 0,(])(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","keyword.modifier","number","metatag"]],[/(%)(\d+|\.\d+|\d+\.\d+)(@fstring_conv)/,["metatag","number","metatag"]],[/(%)([\-#+ 0,(])(@fstring_conv)/,["metatag","keyword.modifier","metatag"]],[/(%)(@fstring_conv)/,["metatag","metatag"]],[/./,"string"]],sstring:[[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],sstringt:[[/@escapes/,"string.escape"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/\$\$/,"string"],[/(\$)([a-z_]\w*)/,["operator","identifier"]],[/\$\{/,"operator","@interp"],[/./,"string"]],interp:[[/{/,"operator","@push"],[/}/,"operator","@pop"],{include:"@root"}],rawstring:[[/[^"]/,"string"],[/"/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}]],rawstringt:[[/[^"]/,"string"],[/"(?=""")/,"string"],[/"""/,{token:"string.quote",bracket:"@close",switchTo:"@allowMethod"}],[/"/,"string"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/1886.1886.js b/docs/dist/1886.1886.js deleted file mode 100644 index 44119629..00000000 --- a/docs/dist/1886.1886.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1886],{81886:(e,n,i)=>{"use strict";i.r(n),i.d(n,{conf:()=>t,language:()=>r});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["begin","end"],["case","endcase"],["casex","endcase"],["casez","endcase"],["checker","endchecker"],["class","endclass"],["clocking","endclocking"],["config","endconfig"],["function","endfunction"],["generate","endgenerate"],["group","endgroup"],["interface","endinterface"],["module","endmodule"],["package","endpackage"],["primitive","endprimitive"],["program","endprogram"],["property","endproperty"],["specify","endspecify"],["sequence","endsequence"],["table","endtable"],["task","endtask"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!1,markers:{start:new RegExp("^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:begin|case(x|z)?|class|clocking|config|covergroup|function|generate|interface|module|package|primitive|property|program|sequence|specify|table|task)\\b"),end:new RegExp("^(?:\\s*|.*(?!\\/[\\/\\*])[^\\w])(?:end|endcase|endclass|endclocking|endconfig|endgroup|endfunction|endgenerate|endinterface|endmodule|endpackage|endprimitive|endproperty|endprogram|endsequence|endspecify|endtable|endtask)\\b")}}},r={defaultToken:"",tokenPostfix:".sv",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["accept_on","alias","always","always_comb","always_ff","always_latch","and","assert","assign","assume","automatic","before","begin","bind","bins","binsof","bit","break","buf","bufif0","bufif1","byte","case","casex","casez","cell","chandle","checker","class","clocking","cmos","config","const","constraint","context","continue","cover","covergroup","coverpoint","cross","deassign","default","defparam","design","disable","dist","do","edge","else","end","endcase","endchecker","endclass","endclocking","endconfig","endfunction","endgenerate","endgroup","endinterface","endmodule","endpackage","endprimitive","endprogram","endproperty","endspecify","endsequence","endtable","endtask","enum","event","eventually","expect","export","extends","extern","final","first_match","for","force","foreach","forever","fork","forkjoin","function","generate","genvar","global","highz0","highz1","if","iff","ifnone","ignore_bins","illegal_bins","implements","implies","import","incdir","include","initial","inout","input","inside","instance","int","integer","interconnect","interface","intersect","join","join_any","join_none","large","let","liblist","library","local","localparam","logic","longint","macromodule","matches","medium","modport","module","nand","negedge","nettype","new","nexttime","nmos","nor","noshowcancelled","not","notif0","notif1","null","or","output","package","packed","parameter","pmos","posedge","primitive","priority","program","property","protected","pull0","pull1","pulldown","pullup","pulsestyle_ondetect","pulsestyle_onevent","pure","rand","randc","randcase","randsequence","rcmos","real","realtime","ref","reg","reject_on","release","repeat","restrict","return","rnmos","rpmos","rtran","rtranif0","rtranif1","s_always","s_eventually","s_nexttime","s_until","s_until_with","scalared","sequence","shortint","shortreal","showcancelled","signed","small","soft","solve","specify","specparam","static","string","strong","strong0","strong1","struct","super","supply0","supply1","sync_accept_on","sync_reject_on","table","tagged","task","this","throughout","time","timeprecision","timeunit","tran","tranif0","tranif1","tri","tri0","tri1","triand","trior","trireg","type","typedef","union","unique","unique0","unsigned","until","until_with","untyped","use","uwire","var","vectored","virtual","void","wait","wait_order","wand","weak","weak0","weak1","while","wildcard","wire","with","within","wor","xnor","xor"],builtin_gates:["and","nand","nor","or","xor","xnor","buf","not","bufif0","bufif1","notif1","notif0","cmos","nmos","pmos","rcmos","rnmos","rpmos","tran","tranif1","tranif0","rtran","rtranif1","rtranif0"],operators:["=","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>+","<<<=",">>>=","?",":","+","-","!","~","&","~&","|","~|","^","~^","^~","+","-","*","/","%","==","!=","===","!==","==?","!=?","&&","||","**","<","<=",">",">=","&","|","^",">>","<<",">>>","<<<","++","--","->","<->","inside","dist","::","+:","-:","*>","&&&","|->","|=>","#=#"],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],{include:"@numbers"},[/[;,.]/,"delimiter"],{include:"@strings"}],identifier_or_keyword:[[/@identifier/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}]],numbers:[[/\d+?[\d_]*(?:\.[\d_]+)?[eE][\-+]?\d+/,"number.float"],[/\d+?[\d_]*\.[\d_]+(?:\s*@timeunits)?/,"number.float"],[/(?:\d+?[\d_]*\s*)?'[sS]?[dD]\s*[0-9xXzZ?]+?[0-9xXzZ?_]*/,"number"],[/(?:\d+?[\d_]*\s*)?'[sS]?[bB]\s*[0-1xXzZ?]+?[0-1xXzZ?_]*/,"number.binary"],[/(?:\d+?[\d_]*\s*)?'[sS]?[oO]\s*[0-7xXzZ?]+?[0-7xXzZ?_]*/,"number.octal"],[/(?:\d+?[\d_]*\s*)?'[sS]?[hH]\s*[0-9a-fA-FxXzZ?]+?[0-9a-fA-FxXzZ?_]*/,"number.hex"],[/1step/,"number"],[/[\dxXzZ]+?[\dxXzZ_]*(?:\s*@timeunits)?/,"number"],[/'[01xXzZ]+/,"number"]],module_instance:[{include:"@whitespace"},[/(#?)(\()/,["",{token:"@brackets",next:"@port_connection"}]],[/@identifier\s*[;={}\[\],]/,{token:"@rematch",next:"@pop"}],[/@symbols|[;={}\[\],]/,{token:"@rematch",next:"@pop"}],[/@identifier/,"type"],[/;/,"delimiter","@pop"]],port_connection:[{include:"@identifier_or_keyword"},{include:"@whitespace"},[/@systemcall/,"variable.predefined"],{include:"@numbers"},{include:"@strings"},[/[,]/,"delimiter"],[/\(/,"@brackets","@port_connection"],[/\)/,"@brackets","@pop"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],strings:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],include:[[/(\s*)(")([\w*\/*]*)(.\w*)(")/,["","string.include.identifier","string.include.identifier","string.include.identifier",{token:"string.include.identifier",next:"@pop"}]],[/(\s*)(<)([\w*\/*]*)(.\w*)(>)/,["","string.include.identifier","string.include.identifier","string.include.identifier",{token:"string.include.identifier",next:"@pop"}]]]}}}}]); \ No newline at end of file diff --git a/docs/dist/1960.1960.js b/docs/dist/1960.1960.js deleted file mode 100644 index 7d9fcb2b..00000000 --- a/docs/dist/1960.1960.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1960],{71960:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>i,language:()=>r});var i={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},r={defaultToken:"",tokenPostfix:".cpp",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.angle",open:"<",close:">"}],keywords:["abstract","amp","array","auto","bool","break","case","catch","char","class","const","constexpr","const_cast","continue","cpu","decltype","default","delegate","delete","do","double","dynamic_cast","each","else","enum","event","explicit","export","extern","false","final","finally","float","for","friend","gcnew","generic","goto","if","in","initonly","inline","int","interface","interior_ptr","internal","literal","long","mutable","namespace","new","noexcept","nullptr","__nullptr","operator","override","partial","pascal","pin_ptr","private","property","protected","public","ref","register","reinterpret_cast","restrict","return","safe_cast","sealed","short","signed","sizeof","static","static_assert","static_cast","struct","switch","template","this","thread_local","throw","tile_static","true","try","typedef","typeid","typename","union","unsigned","using","virtual","void","volatile","wchar_t","where","while","_asm","_based","_cdecl","_declspec","_fastcall","_if_exists","_if_not_exists","_inline","_multiple_inheritance","_pascal","_single_inheritance","_stdcall","_virtual_inheritance","_w64","__abstract","__alignof","__asm","__assume","__based","__box","__builtin_alignof","__cdecl","__clrcall","__declspec","__delegate","__event","__except","__fastcall","__finally","__forceinline","__gc","__hook","__identifier","__if_exists","__if_not_exists","__inline","__int128","__int16","__int32","__int64","__int8","__interface","__leave","__m128","__m128d","__m128i","__m256","__m256d","__m256i","__m64","__multiple_inheritance","__newslot","__nogc","__noop","__nounwind","__novtordisp","__pascal","__pin","__pragma","__property","__ptr32","__ptr64","__raise","__restrict","__resume","__sealed","__single_inheritance","__stdcall","__super","__thiscall","__try","__try_cast","__typeof","__unaligned","__unhook","__uuidof","__value","__virtual_inheritance","__w64","__wchar_t"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F](@integersuffix)/,"number.hex"],[/0[0-7']*[0-7](@integersuffix)/,"number.octal"],[/0[bB][0-1']*[0-1](@integersuffix)/,"number.binary"],[/\d[\d']*\d(@integersuffix)/,"number"],[/\d(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],raw:[[/(.*)(\))(?:([^ ()\\\t"]*))(\")/,{cases:{"$3==$S2":["string.raw","string.raw.end","string.raw.end",{token:"string.raw.end",next:"@pop"}],"@default":["string.raw","string.raw","string.raw","string.raw"]}}],[/.*/,"string.raw"]],include:[[/(\s*)(<)([^<>]*)(>)/,["","keyword.directive.include.begin","string.include.identifier",{token:"keyword.directive.include.end",next:"@pop"}]],[/(\s*)(")([^"]*)(")/,["","keyword.directive.include.begin","string.include.identifier",{token:"keyword.directive.include.end",next:"@pop"}]]]}}}}]); \ No newline at end of file diff --git a/docs/dist/1961.1961.js b/docs/dist/1961.1961.js deleted file mode 100644 index fc93e22c..00000000 --- a/docs/dist/1961.1961.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[1961],{31961:(E,T,S)=>{"use strict";S.r(T),S.d(T,{conf:()=>R,language:()=>A});var R={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},A={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ACCESSIBLE","ACCOUNT","ACTION","ADD","AFTER","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ALWAYS","ANALYSE","ANALYZE","AND","ANY","AS","ASC","ASCII","ASENSITIVE","AT","AUTOEXTEND_SIZE","AUTO_INCREMENT","AVG","AVG_ROW_LENGTH","BACKUP","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BINLOG","BIT","BLOB","BLOCK","BOOL","BOOLEAN","BOTH","BTREE","BY","BYTE","CACHE","CALL","CASCADE","CASCADED","CASE","CATALOG_NAME","CHAIN","CHANGE","CHANGED","CHANNEL","CHAR","CHARACTER","CHARSET","CHECK","CHECKSUM","CIPHER","CLASS_ORIGIN","CLIENT","CLOSE","COALESCE","CODE","COLLATE","COLLATION","COLUMN","COLUMNS","COLUMN_FORMAT","COLUMN_NAME","COMMENT","COMMIT","COMMITTED","COMPACT","COMPLETION","COMPRESSED","COMPRESSION","CONCURRENT","CONDITION","CONNECTION","CONSISTENT","CONSTRAINT","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONTAINS","CONTEXT","CONTINUE","CONVERT","CPU","CREATE","CROSS","CUBE","CURRENT","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURSOR","CURSOR_NAME","DATA","DATABASE","DATABASES","DATAFILE","DATE","DATETIME","DAY","DAY_HOUR","DAY_MICROSECOND","DAY_MINUTE","DAY_SECOND","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULT_AUTH","DEFINER","DELAYED","DELAY_KEY_WRITE","DELETE","DESC","DESCRIBE","DES_KEY_FILE","DETERMINISTIC","DIAGNOSTICS","DIRECTORY","DISABLE","DISCARD","DISK","DISTINCT","DISTINCTROW","DIV","DO","DOUBLE","DROP","DUAL","DUMPFILE","DUPLICATE","DYNAMIC","EACH","ELSE","ELSEIF","ENABLE","ENCLOSED","ENCRYPTION","END","ENDS","ENGINE","ENGINES","ENUM","ERROR","ERRORS","ESCAPE","ESCAPED","EVENT","EVENTS","EVERY","EXCHANGE","EXECUTE","EXISTS","EXIT","EXPANSION","EXPIRE","EXPLAIN","EXPORT","EXTENDED","EXTENT_SIZE","FALSE","FAST","FAULTS","FETCH","FIELDS","FILE","FILE_BLOCK_SIZE","FILTER","FIRST","FIXED","FLOAT","FLOAT4","FLOAT8","FLUSH","FOLLOWS","FOR","FORCE","FOREIGN","FORMAT","FOUND","FROM","FULL","FULLTEXT","FUNCTION","GENERAL","GENERATED","GEOMETRY","GEOMETRYCOLLECTION","GET","GET_FORMAT","GLOBAL","GRANT","GRANTS","GROUP","GROUP_REPLICATION","HANDLER","HASH","HAVING","HELP","HIGH_PRIORITY","HOST","HOSTS","HOUR","HOUR_MICROSECOND","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IGNORE","IGNORE_SERVER_IDS","IMPORT","INDEX","INDEXES","INFILE","INITIAL_SIZE","INNER","INOUT","INSENSITIVE","INSERT","INSERT_METHOD","INSTALL","INSTANCE","INT","INT1","INT2","INT3","INT4","INT8","INTEGER","INTERVAL","INTO","INVOKER","IO","IO_AFTER_GTIDS","IO_BEFORE_GTIDS","IO_THREAD","IPC","ISOLATION","ISSUER","ITERATE","JOIN","JSON","KEY","KEYS","KEY_BLOCK_SIZE","KILL","LANGUAGE","LAST","LEADING","LEAVE","LEAVES","LEFT","LESS","LEVEL","LIKE","LIMIT","LINEAR","LINES","LINESTRING","LIST","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCK","LOCKS","LOGFILE","LOGS","LONG","LONGBLOB","LONGTEXT","LOOP","LOW_PRIORITY","MASTER","MASTER_AUTO_POSITION","MASTER_BIND","MASTER_CONNECT_RETRY","MASTER_DELAY","MASTER_HEARTBEAT_PERIOD","MASTER_HOST","MASTER_LOG_FILE","MASTER_LOG_POS","MASTER_PASSWORD","MASTER_PORT","MASTER_RETRY_COUNT","MASTER_SERVER_ID","MASTER_SSL","MASTER_SSL_CA","MASTER_SSL_CAPATH","MASTER_SSL_CERT","MASTER_SSL_CIPHER","MASTER_SSL_CRL","MASTER_SSL_CRLPATH","MASTER_SSL_KEY","MASTER_SSL_VERIFY_SERVER_CERT","MASTER_TLS_VERSION","MASTER_USER","MATCH","MAXVALUE","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_SIZE","MAX_STATEMENT_TIME","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MEDIUMBLOB","MEDIUMINT","MEDIUMTEXT","MEMORY","MERGE","MESSAGE_TEXT","MICROSECOND","MIDDLEINT","MIGRATE","MINUTE","MINUTE_MICROSECOND","MINUTE_SECOND","MIN_ROWS","MOD","MODE","MODIFIES","MODIFY","MONTH","MULTILINESTRING","MULTIPOINT","MULTIPOLYGON","MUTEX","MYSQL_ERRNO","NAME","NAMES","NATIONAL","NATURAL","NCHAR","NDB","NDBCLUSTER","NEVER","NEW","NEXT","NO","NODEGROUP","NONBLOCKING","NONE","NO_WAIT","NO_WRITE_TO_BINLOG","NUMBER","NUMERIC","NVARCHAR","OFFSET","OLD_PASSWORD","ON","ONE","ONLY","OPEN","OPTIMIZE","OPTIMIZER_COSTS","OPTION","OPTIONALLY","OPTIONS","OR","ORDER","OUT","OUTER","OUTFILE","OWNER","PACK_KEYS","PAGE","PARSER","PARSE_GCOL_EXPR","PARTIAL","PARTITION","PARTITIONING","PARTITIONS","PASSWORD","PHASE","PLUGIN","PLUGINS","PLUGIN_DIR","POINT","POLYGON","PORT","PRECEDES","PRECISION","PREPARE","PRESERVE","PREV","PRIMARY","PRIVILEGES","PROCEDURE","PROCESSLIST","PROFILE","PROFILES","PROXY","PURGE","QUARTER","QUERY","QUICK","RANGE","READ","READS","READ_ONLY","READ_WRITE","REAL","REBUILD","RECOVER","REDOFILE","REDO_BUFFER_SIZE","REDUNDANT","REFERENCES","REGEXP","RELAY","RELAYLOG","RELAY_LOG_FILE","RELAY_LOG_POS","RELAY_THREAD","RELEASE","RELOAD","REMOVE","RENAME","REORGANIZE","REPAIR","REPEAT","REPEATABLE","REPLACE","REPLICATE_DO_DB","REPLICATE_DO_TABLE","REPLICATE_IGNORE_DB","REPLICATE_IGNORE_TABLE","REPLICATE_REWRITE_DB","REPLICATE_WILD_DO_TABLE","REPLICATE_WILD_IGNORE_TABLE","REPLICATION","REQUIRE","RESET","RESIGNAL","RESTORE","RESTRICT","RESUME","RETURN","RETURNED_SQLSTATE","RETURNS","REVERSE","REVOKE","RIGHT","RLIKE","ROLLBACK","ROLLUP","ROTATE","ROUTINE","ROW","ROWS","ROW_COUNT","ROW_FORMAT","RTREE","SAVEPOINT","SCHEDULE","SCHEMA","SCHEMAS","SCHEMA_NAME","SECOND","SECOND_MICROSECOND","SECURITY","SELECT","SENSITIVE","SEPARATOR","SERIAL","SERIALIZABLE","SERVER","SESSION","SET","SHARE","SHOW","SHUTDOWN","SIGNAL","SIGNED","SIMPLE","SLAVE","SLOW","SMALLINT","SNAPSHOT","SOCKET","SOME","SONAME","SOUNDS","SOURCE","SPATIAL","SPECIFIC","SQL","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQL_AFTER_GTIDS","SQL_AFTER_MTS_GAPS","SQL_BEFORE_GTIDS","SQL_BIG_RESULT","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_NO_CACHE","SQL_SMALL_RESULT","SQL_THREAD","SQL_TSI_DAY","SQL_TSI_HOUR","SQL_TSI_MINUTE","SQL_TSI_MONTH","SQL_TSI_QUARTER","SQL_TSI_SECOND","SQL_TSI_WEEK","SQL_TSI_YEAR","SSL","STACKED","START","STARTING","STARTS","STATS_AUTO_RECALC","STATS_PERSISTENT","STATS_SAMPLE_PAGES","STATUS","STOP","STORAGE","STORED","STRAIGHT_JOIN","STRING","SUBCLASS_ORIGIN","SUBJECT","SUBPARTITION","SUBPARTITIONS","SUPER","SUSPEND","SWAPS","SWITCHES","TABLE","TABLES","TABLESPACE","TABLE_CHECKSUM","TABLE_NAME","TEMPORARY","TEMPTABLE","TERMINATED","TEXT","THAN","THEN","TIME","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TINYBLOB","TINYINT","TINYTEXT","TO","TRAILING","TRANSACTION","TRIGGER","TRIGGERS","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNDEFINED","UNDO","UNDOFILE","UNDO_BUFFER_SIZE","UNICODE","UNINSTALL","UNION","UNIQUE","UNKNOWN","UNLOCK","UNSIGNED","UNTIL","UPDATE","UPGRADE","USAGE","USE","USER","USER_RESOURCES","USE_FRM","USING","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","VALIDATION","VALUE","VALUES","VARBINARY","VARCHAR","VARCHARACTER","VARIABLES","VARYING","VIEW","VIRTUAL","WAIT","WARNINGS","WEEK","WEIGHT_STRING","WHEN","WHERE","WHILE","WITH","WITHOUT","WORK","WRAPPER","WRITE","X509","XA","XID","XML","XOR","YEAR","YEAR_MONTH","ZEROFILL"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["ABS","ACOS","ADDDATE","ADDTIME","AES_DECRYPT","AES_ENCRYPT","ANY_VALUE","Area","AsBinary","AsWKB","ASCII","ASIN","AsText","AsWKT","ASYMMETRIC_DECRYPT","ASYMMETRIC_DERIVE","ASYMMETRIC_ENCRYPT","ASYMMETRIC_SIGN","ASYMMETRIC_VERIFY","ATAN","ATAN2","ATAN","AVG","BENCHMARK","BIN","BIT_AND","BIT_COUNT","BIT_LENGTH","BIT_OR","BIT_XOR","Buffer","CAST","CEIL","CEILING","Centroid","CHAR","CHAR_LENGTH","CHARACTER_LENGTH","CHARSET","COALESCE","COERCIBILITY","COLLATION","COMPRESS","CONCAT","CONCAT_WS","CONNECTION_ID","Contains","CONV","CONVERT","CONVERT_TZ","ConvexHull","COS","COT","COUNT","CRC32","CREATE_ASYMMETRIC_PRIV_KEY","CREATE_ASYMMETRIC_PUB_KEY","CREATE_DH_PARAMETERS","CREATE_DIGEST","Crosses","CURDATE","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURTIME","DATABASE","DATE","DATE_ADD","DATE_FORMAT","DATE_SUB","DATEDIFF","DAY","DAYNAME","DAYOFMONTH","DAYOFWEEK","DAYOFYEAR","DECODE","DEFAULT","DEGREES","DES_DECRYPT","DES_ENCRYPT","Dimension","Disjoint","Distance","ELT","ENCODE","ENCRYPT","EndPoint","Envelope","Equals","EXP","EXPORT_SET","ExteriorRing","EXTRACT","ExtractValue","FIELD","FIND_IN_SET","FLOOR","FORMAT","FOUND_ROWS","FROM_BASE64","FROM_DAYS","FROM_UNIXTIME","GeomCollFromText","GeometryCollectionFromText","GeomCollFromWKB","GeometryCollectionFromWKB","GeometryCollection","GeometryN","GeometryType","GeomFromText","GeometryFromText","GeomFromWKB","GeometryFromWKB","GET_FORMAT","GET_LOCK","GLength","GREATEST","GROUP_CONCAT","GTID_SUBSET","GTID_SUBTRACT","HEX","HOUR","IF","IFNULL","INET_ATON","INET_NTOA","INET6_ATON","INET6_NTOA","INSERT","INSTR","InteriorRingN","Intersects","INTERVAL","IS_FREE_LOCK","IS_IPV4","IS_IPV4_COMPAT","IS_IPV4_MAPPED","IS_IPV6","IS_USED_LOCK","IsClosed","IsEmpty","ISNULL","IsSimple","JSON_APPEND","JSON_ARRAY","JSON_ARRAY_APPEND","JSON_ARRAY_INSERT","JSON_CONTAINS","JSON_CONTAINS_PATH","JSON_DEPTH","JSON_EXTRACT","JSON_INSERT","JSON_KEYS","JSON_LENGTH","JSON_MERGE","JSON_MERGE_PRESERVE","JSON_OBJECT","JSON_QUOTE","JSON_REMOVE","JSON_REPLACE","JSON_SEARCH","JSON_SET","JSON_TYPE","JSON_UNQUOTE","JSON_VALID","LAST_INSERT_ID","LCASE","LEAST","LEFT","LENGTH","LineFromText","LineStringFromText","LineFromWKB","LineStringFromWKB","LineString","LN","LOAD_FILE","LOCALTIME","LOCALTIMESTAMP","LOCATE","LOG","LOG10","LOG2","LOWER","LPAD","LTRIM","MAKE_SET","MAKEDATE","MAKETIME","MASTER_POS_WAIT","MAX","MBRContains","MBRCoveredBy","MBRCovers","MBRDisjoint","MBREqual","MBREquals","MBRIntersects","MBROverlaps","MBRTouches","MBRWithin","MD5","MICROSECOND","MID","MIN","MINUTE","MLineFromText","MultiLineStringFromText","MLineFromWKB","MultiLineStringFromWKB","MOD","MONTH","MONTHNAME","MPointFromText","MultiPointFromText","MPointFromWKB","MultiPointFromWKB","MPolyFromText","MultiPolygonFromText","MPolyFromWKB","MultiPolygonFromWKB","MultiLineString","MultiPoint","MultiPolygon","NAME_CONST","NOT IN","NOW","NULLIF","NumGeometries","NumInteriorRings","NumPoints","OCT","OCTET_LENGTH","OLD_PASSWORD","ORD","Overlaps","PASSWORD","PERIOD_ADD","PERIOD_DIFF","PI","Point","PointFromText","PointFromWKB","PointN","PolyFromText","PolygonFromText","PolyFromWKB","PolygonFromWKB","Polygon","POSITION","POW","POWER","PROCEDURE ANALYSE","QUARTER","QUOTE","RADIANS","RAND","RANDOM_BYTES","RELEASE_ALL_LOCKS","RELEASE_LOCK","REPEAT","REPLACE","REVERSE","RIGHT","ROUND","ROW_COUNT","RPAD","RTRIM","SCHEMA","SEC_TO_TIME","SECOND","SESSION_USER","SHA1","SHA","SHA2","SIGN","SIN","SLEEP","SOUNDEX","SPACE","SQRT","SRID","ST_Area","ST_AsBinary","ST_AsWKB","ST_AsGeoJSON","ST_AsText","ST_AsWKT","ST_Buffer","ST_Buffer_Strategy","ST_Centroid","ST_Contains","ST_ConvexHull","ST_Crosses","ST_Difference","ST_Dimension","ST_Disjoint","ST_Distance","ST_Distance_Sphere","ST_EndPoint","ST_Envelope","ST_Equals","ST_ExteriorRing","ST_GeoHash","ST_GeomCollFromText","ST_GeometryCollectionFromText","ST_GeomCollFromTxt","ST_GeomCollFromWKB","ST_GeometryCollectionFromWKB","ST_GeometryN","ST_GeometryType","ST_GeomFromGeoJSON","ST_GeomFromText","ST_GeometryFromText","ST_GeomFromWKB","ST_GeometryFromWKB","ST_InteriorRingN","ST_Intersection","ST_Intersects","ST_IsClosed","ST_IsEmpty","ST_IsSimple","ST_IsValid","ST_LatFromGeoHash","ST_Length","ST_LineFromText","ST_LineStringFromText","ST_LineFromWKB","ST_LineStringFromWKB","ST_LongFromGeoHash","ST_MakeEnvelope","ST_MLineFromText","ST_MultiLineStringFromText","ST_MLineFromWKB","ST_MultiLineStringFromWKB","ST_MPointFromText","ST_MultiPointFromText","ST_MPointFromWKB","ST_MultiPointFromWKB","ST_MPolyFromText","ST_MultiPolygonFromText","ST_MPolyFromWKB","ST_MultiPolygonFromWKB","ST_NumGeometries","ST_NumInteriorRing","ST_NumInteriorRings","ST_NumPoints","ST_Overlaps","ST_PointFromGeoHash","ST_PointFromText","ST_PointFromWKB","ST_PointN","ST_PolyFromText","ST_PolygonFromText","ST_PolyFromWKB","ST_PolygonFromWKB","ST_Simplify","ST_SRID","ST_StartPoint","ST_SymDifference","ST_Touches","ST_Union","ST_Validate","ST_Within","ST_X","ST_Y","StartPoint","STD","STDDEV","STDDEV_POP","STDDEV_SAMP","STR_TO_DATE","STRCMP","SUBDATE","SUBSTR","SUBSTRING","SUBSTRING_INDEX","SUBTIME","SUM","SYSDATE","SYSTEM_USER","TAN","TIME","TIME_FORMAT","TIME_TO_SEC","TIMEDIFF","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TO_BASE64","TO_DAYS","TO_SECONDS","Touches","TRIM","TRUNCATE","UCASE","UNCOMPRESS","UNCOMPRESSED_LENGTH","UNHEX","UNIX_TIMESTAMP","UpdateXML","UPPER","USER","UTC_DATE","UTC_TIME","UTC_TIMESTAMP","UUID","UUID_SHORT","VALIDATE_PASSWORD_STRENGTH","VALUES","VAR_POP","VAR_SAMP","VARIANCE","VERSION","WAIT_FOR_EXECUTED_GTID_SET","WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS","WEEK","WEEKDAY","WEEKOFYEAR","WEIGHT_STRING","Within","X","Y","YEAR","YEARWEEK"],builtinVariables:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/#+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}],[/"/,{token:"string.double",next:"@stringDouble"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],stringDouble:[[/[^"]+/,"string.double"],[/""/,"string.double"],[/"/,{token:"string.double",next:"@pop"}]],complexIdentifiers:[[/`/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^`]+/,"identifier"],[/``/,"identifier"],[/`/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/docs/dist/2060.2060.js b/docs/dist/2060.2060.js deleted file mode 100644 index 95002d20..00000000 --- a/docs/dist/2060.2060.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[2060],{32060:(e,o,n)=>{"use strict";n.r(o),n.d(o,{conf:()=>t,language:()=>s});var t={comments:{lineComment:";",blockComment:["#|","|#"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},s={defaultToken:"",ignoreCase:!0,tokenPostfix:".scheme",brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],keywords:["case","do","let","loop","if","else","when","cons","car","cdr","cond","lambda","lambda*","syntax-rules","format","set!","quote","eval","append","list","list?","member?","load"],constants:["#t","#f"],operators:["eq?","eqv?","equal?","and","or","not","null?"],tokenizer:{root:[[/#[xXoObB][0-9a-fA-F]+/,"number.hex"],[/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?/,"number.float"],[/(?:\b(?:(define|define-syntax|define-macro))\b)(\s+)((?:\w|\-|\!|\?)*)/,["keyword","white","variable"]],{include:"@whitespace"},{include:"@strings"},[/[a-zA-Z_#][a-zA-Z0-9_\-\?\!\*]*/,{cases:{"@keywords":"keyword","@constants":"constant","@operators":"operators","@default":"identifier"}}]],comment:[[/[^\|#]+/,"comment"],[/#\|/,"comment","@push"],[/\|#/,"comment","@pop"],[/[\|#]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/#\|/,"comment","@comment"],[/;.*$/,"comment"]],strings:[[/"$/,"string","@popall"],[/"(?=.)/,"string","@multiLineString"]],multiLineString:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string.escape"],[/"/,"string","@popall"],[/\\$/,"string"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/2075.2075.js b/docs/dist/2075.2075.js deleted file mode 100644 index db93e007..00000000 --- a/docs/dist/2075.2075.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[2075],{62075:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>i,language:()=>r});var i={wordPattern:/(#?-?\d*\.\d\w*%?)|((::|[@#.!:])?[\w-?]+%?)|::|[@#.!:]/g,comments:{blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},r={defaultToken:"",tokenPostfix:".css",ws:"[ \t\n\r\f]*",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.bracket"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@selector"}],selector:[{include:"@comments"},{include:"@import"},{include:"@strings"},["[@](keyframes|-webkit-keyframes|-moz-keyframes|-o-keyframes)",{token:"keyword",next:"@keyframedeclaration"}],["[@](page|content|font-face|-moz-document)",{token:"keyword"}],["[@](charset|namespace)",{token:"keyword",next:"@declarationbody"}],["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@selectorname"},["[\\*]","tag"],["[>\\+,]","delimiter"],["\\[",{token:"delimiter.bracket",next:"@selectorattribute"}],["{",{token:"delimiter.bracket",next:"@selectorbody"}]],selectorbody:[{include:"@comments"},["[*_]?@identifier@ws:(?=(\\s|\\d|[^{;}]*[;}]))","attribute.name","@rulevalue"],["}",{token:"delimiter.bracket",next:"@pop"}]],selectorname:[["(\\.|#(?=[^{])|%|(@identifier)|:)+","tag"]],selectorattribute:[{include:"@term"},["]",{token:"delimiter.bracket",next:"@pop"}]],term:[{include:"@comments"},["(url-prefix)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],["(url)(\\()",["attribute.value",{token:"delimiter.parenthesis",next:"@urldeclaration"}]],{include:"@functioninvocation"},{include:"@numbers"},{include:"@name"},["([<>=\\+\\-\\*\\/\\^\\|\\~,])","delimiter"],[",","delimiter"]],rulevalue:[{include:"@comments"},{include:"@strings"},{include:"@term"},["!important","keyword"],[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],warndebug:[["[@](warn|debug)",{token:"keyword",next:"@declarationbody"}]],import:[["[@](import)",{token:"keyword",next:"@declarationbody"}]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],parenthizedterm:[{include:"@term"},["\\)",{token:"delimiter.parenthesis",next:"@pop"}]],declarationbody:[{include:"@term"},[";","delimiter","@pop"],["(?=})",{token:"",next:"@pop"}]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[/[^*/]+/,"comment"],[/./,"comment"]],name:[["@identifier","attribute.value"]],numbers:[["-?(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],keyframedeclaration:[["@identifier","attribute.value"],["{",{token:"delimiter.bracket",switchTo:"@keyframebody"}]],keyframebody:[{include:"@term"},["{",{token:"delimiter.bracket",next:"@selectorbody"}],["}",{token:"delimiter.bracket",next:"@pop"}]],functioninvocation:[["@identifier\\(",{token:"attribute.value",next:"@functionarguments"}]],functionarguments:[["\\$@identifier@ws:","attribute.name"],["[,]","delimiter"],{include:"@term"},["\\)",{token:"attribute.value",next:"@pop"}]],strings:[['~?"',{token:"string",next:"@stringenddoublequote"}],["~?'",{token:"string",next:"@stringendquote"}]],stringenddoublequote:[["\\\\.","string"],['"',{token:"string",next:"@pop"}],[/[^\\"]+/,"string"],[".","string"]],stringendquote:[["\\\\.","string"],["'",{token:"string",next:"@pop"}],[/[^\\']+/,"string"],[".","string"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/2140.2140.js b/docs/dist/2140.2140.js deleted file mode 100644 index 35d6c17f..00000000 --- a/docs/dist/2140.2140.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[2140],{22140:(e,o,r)=>{"use strict";r.r(o),r.d(o,{conf:()=>t,language:()=>a});var t={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}]},a={defaultToken:"",tokenPostfix:".r",roxygen:["@param","@return","@name","@rdname","@examples","@include","@docType","@S3method","@TODO","@aliases","@alias","@assignee","@author","@callGraphDepth","@callGraph","@callGraphPrimitives","@concept","@exportClass","@exportMethod","@exportPattern","@export","@formals","@format","@importClassesFrom","@importFrom","@importMethodsFrom","@import","@keywords","@method","@nord","@note","@references","@seealso","@setClass","@slot","@source","@title","@usage"],constants:["NULL","FALSE","TRUE","NA","Inf","NaN ","NA_integer_","NA_real_","NA_complex_","NA_character_ ","T","F","LETTERS","letters","month.abb","month.name","pi","R.version.string"],keywords:["break","next","return","if","else","for","in","repeat","while","array","category","character","complex","double","function","integer","list","logical","matrix","numeric","vector","data.frame","factor","library","require","attach","detach","source"],special:["\\n","\\r","\\t","\\b","\\a","\\f","\\v","\\'",'\\"',"\\\\"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@numbers"},{include:"@strings"},[/[{}\[\]()]/,"@brackets"],{include:"@operators"},[/#'/,"comment.doc","@roxygen"],[/(^#.*$)/,"comment"],[/\s+/,"white"],[/[,:;]/,"delimiter"],[/@[a-zA-Z]\w*/,"tag"],[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@constants":"constant","@default":"identifier"}}]],roxygen:[[/@\w+/,{cases:{"@roxygen":"tag","@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/\s+/,{cases:{"@eos":{token:"comment.doc",next:"@pop"},"@default":"comment.doc"}}],[/.*/,{token:"comment.doc",next:"@pop"}]],numbers:[[/0[xX][0-9a-fA-F]+/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/,"number"]],operators:[[/<{1,2}-/,"operator"],[/->{1,2}/,"operator"],[/%[^%\s]+%/,"operator"],[/\*\*/,"operator"],[/%%/,"operator"],[/&&/,"operator"],[/\|\|/,"operator"],[/<>/,"operator"],[/[-+=&|!<>^~*/:$]/,"operator"]],strings:[[/'/,"string.escape","@stringBody"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/'/,"string.escape","@popall"],[/./,"string"]],dblStringBody:[[/\\./,{cases:{"@special":"string","@default":"error-token"}}],[/"/,"string.escape","@popall"],[/./,"string"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/249.249.js b/docs/dist/249.249.js deleted file mode 100644 index 57f75b20..00000000 --- a/docs/dist/249.249.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[249],{80249:(e,n,t)=>{"use strict";t.r(n),t.d(n,{conf:()=>o,language:()=>s});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"`",close:"`"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".go",keywords:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var","bool","true","false","uint8","uint16","uint32","uint64","int8","int16","int32","int64","float32","float64","complex64","complex128","byte","rune","uint","int","uintptr","string","nil"],operators:["+","-","*","/","%","&","|","^","<<",">>","&^","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=","&^=","&&","||","<-","++","--","==","<",">","=","!","!=","<=",">=",":=","...","(",")","","]","{","}",",",";",".",":"],symbols:/[=>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex"],[/0[0-7']*[0-7]/,"number.octal"],[/0[bB][0-1']*[0-1]/,"number.binary"],[/\d[\d']*/,"number"],[/\d/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/`/,"string","@rawstring"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@doccomment"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],doccomment:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],rawstring:[[/[^\`]/,"string"],[/`/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/2571.2571.js b/docs/dist/2571.2571.js deleted file mode 100644 index 391aa6ec..00000000 --- a/docs/dist/2571.2571.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[2571],{2571:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>o,language:()=>d});var i=n(89587),r=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],o={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:i.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:i.Mj.IndentAction.Indent}}],folding:{markers:{start:new RegExp("^\\s*\x3c!--\\s*#region\\b.*--\x3e"),end:new RegExp("^\\s*\x3c!--\\s*#endregion\\b.*--\x3e")}}},d={defaultToken:"",tokenPostfix:".html",ignoreCase:!0,tokenizer:{root:[[/)/,["delimiter","tag","","delimiter"]],[/(<)(script)/,["delimiter",{token:"tag",next:"@script"}]],[/(<)(style)/,["delimiter",{token:"tag",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter",{token:"tag",next:"@otherTag"}]],[/]+/,"metatag.content"],[/>/,"metatag","@pop"]],comment:[[/-->/,"comment","@pop"],[/[^-]+/,"comment.content"],[/./,"comment.content"]],otherTag:[[/\/?>/,"delimiter","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter","tag",{token:"delimiter",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}}]); \ No newline at end of file diff --git a/docs/dist/2798.2798.js b/docs/dist/2798.2798.js deleted file mode 100644 index fa47bff3..00000000 --- a/docs/dist/2798.2798.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[2798],{52798:(e,n,s)=>{"use strict";s.r(n),s.d(n,{conf:()=>i,language:()=>o});var i={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},o={defaultToken:"",tokenPostfix:".ini",escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^\[[^\]]*\]/,"metatag"],[/(^\w+)(\s*)(\=)/,["key","","delimiter"]],{include:"@whitespace"},[/\d+/,"number"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/^\s*[#;].*$/,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/2892.2892.js b/docs/dist/2892.2892.js deleted file mode 100644 index 7b34a461..00000000 --- a/docs/dist/2892.2892.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[2892],{22892:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>o,language:()=>a});var o={comments:{lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}],folding:{offSide:!0}},a={defaultToken:"",tokenPostfix:".pug",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["append","block","case","default","doctype","each","else","extends","for","if","in","include","mixin","typeof","unless","var","when"],tags:["a","abbr","acronym","address","area","article","aside","audio","b","base","basefont","bdi","bdo","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","keygen","kbd","label","li","link","map","mark","menu","meta","meter","nav","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strike","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","tracks","tt","u","ul","video","wbr"],symbols:/[\+\-\*\%\&\|\!\=\/\.\,\:]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/^(\s*)([a-zA-Z_-][\w-]*)/,{cases:{"$2@tags":{cases:{"@eos":["","tag"],"@default":["",{token:"tag",next:"@tag.$1"}]}},"$2@keywords":["",{token:"keyword.$2"}],"@default":["",""]}}],[/^(\s*)(#[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.id"],"@default":["",{token:"tag.id",next:"@tag.$1"}]}}],[/^(\s*)(\.[a-zA-Z_-][\w-]*)/,{cases:{"@eos":["","tag.class"],"@default":["",{token:"tag.class",next:"@tag.$1"}]}}],[/^(\s*)(\|.*)$/,""],{include:"@whitespace"},[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\d+/,"number"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],tag:[[/(\.)(\s*$)/,[{token:"delimiter",next:"@blockText.$S2."},""]],[/\s+/,{token:"",next:"@simpleText"}],[/#[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.id",next:"@pop"},"@default":"tag.id"}}],[/\.[a-zA-Z_-][\w-]*/,{cases:{"@eos":{token:"tag.class",next:"@pop"},"@default":"tag.class"}}],[/\(/,{token:"delimiter.parenthesis",next:"@attributeList"}]],simpleText:[[/[^#]+$/,{token:"",next:"@popall"}],[/[^#]+/,{token:""}],[/(#{)([^}]*)(})/,{cases:{"@eos":["interpolation.delimiter","interpolation",{token:"interpolation.delimiter",next:"@popall"}],"@default":["interpolation.delimiter","interpolation","interpolation.delimiter"]}}],[/#$/,{token:"",next:"@popall"}],[/#/,""]],attributeList:[[/\s+/,""],[/(\w+)(\s*=\s*)("|')/,["attribute.name","delimiter",{token:"attribute.value",next:"@value.$3"}]],[/\w+/,"attribute.name"],[/,/,{cases:{"@eos":{token:"attribute.delimiter",next:"@popall"},"@default":"attribute.delimiter"}}],[/\)$/,{token:"delimiter.parenthesis",next:"@popall"}],[/\)/,{token:"delimiter.parenthesis",next:"@pop"}]],whitespace:[[/^(\s*)(\/\/.*)$/,{token:"comment",next:"@blockText.$1.comment"}],[/[ \t\r\n]+/,""],[//,{token:"comment",next:"@pop"}],[//,"comment","@pop"],[//,{token:"comment",next:"@pop"}],[/|<\/?script\s*\/?>?/i);if(0===u.length)return c.goToEnd(),m(t,fe.Script);if("\x3c!--"===u)1===d&&(d=2);else if("--\x3e"===u)d=1;else if("/"!==u[1])2===d&&(d=3);else{if(3!==d){c.goBack(u.length);break}d=2}}return h=ge.WithinContent,t=0){var n=this.children[t];if(e>n.start){if(e=0){var n=this.children[t];if(e>n.start&&e<=n.end)return n.findNodeAt(e)}return this}}();var Fe={"Aacute;":"Á",Aacute:"Á","aacute;":"á",aacute:"á","Abreve;":"Ă","abreve;":"ă","ac;":"∾","acd;":"∿","acE;":"∾̳","Acirc;":"Â",Acirc:"Â","acirc;":"â",acirc:"â","acute;":"´",acute:"´","Acy;":"А","acy;":"а","AElig;":"Æ",AElig:"Æ","aelig;":"æ",aelig:"æ","af;":"⁡","Afr;":"𝔄","afr;":"𝔞","Agrave;":"À",Agrave:"À","agrave;":"à",agrave:"à","alefsym;":"ℵ","aleph;":"ℵ","Alpha;":"Α","alpha;":"α","Amacr;":"Ā","amacr;":"ā","amalg;":"⨿","AMP;":"&",AMP:"&","amp;":"&",amp:"&","And;":"⩓","and;":"∧","andand;":"⩕","andd;":"⩜","andslope;":"⩘","andv;":"⩚","ang;":"∠","ange;":"⦤","angle;":"∠","angmsd;":"∡","angmsdaa;":"⦨","angmsdab;":"⦩","angmsdac;":"⦪","angmsdad;":"⦫","angmsdae;":"⦬","angmsdaf;":"⦭","angmsdag;":"⦮","angmsdah;":"⦯","angrt;":"∟","angrtvb;":"⊾","angrtvbd;":"⦝","angsph;":"∢","angst;":"Å","angzarr;":"⍼","Aogon;":"Ą","aogon;":"ą","Aopf;":"𝔸","aopf;":"𝕒","ap;":"≈","apacir;":"⩯","apE;":"⩰","ape;":"≊","apid;":"≋","apos;":"'","ApplyFunction;":"⁡","approx;":"≈","approxeq;":"≊","Aring;":"Å",Aring:"Å","aring;":"å",aring:"å","Ascr;":"𝒜","ascr;":"𝒶","Assign;":"≔","ast;":"*","asymp;":"≈","asympeq;":"≍","Atilde;":"Ã",Atilde:"Ã","atilde;":"ã",atilde:"ã","Auml;":"Ä",Auml:"Ä","auml;":"ä",auml:"ä","awconint;":"∳","awint;":"⨑","backcong;":"≌","backepsilon;":"϶","backprime;":"‵","backsim;":"∽","backsimeq;":"⋍","Backslash;":"∖","Barv;":"⫧","barvee;":"⊽","Barwed;":"⌆","barwed;":"⌅","barwedge;":"⌅","bbrk;":"⎵","bbrktbrk;":"⎶","bcong;":"≌","Bcy;":"Б","bcy;":"б","bdquo;":"„","becaus;":"∵","Because;":"∵","because;":"∵","bemptyv;":"⦰","bepsi;":"϶","bernou;":"ℬ","Bernoullis;":"ℬ","Beta;":"Β","beta;":"β","beth;":"ℶ","between;":"≬","Bfr;":"𝔅","bfr;":"𝔟","bigcap;":"⋂","bigcirc;":"◯","bigcup;":"⋃","bigodot;":"⨀","bigoplus;":"⨁","bigotimes;":"⨂","bigsqcup;":"⨆","bigstar;":"★","bigtriangledown;":"▽","bigtriangleup;":"△","biguplus;":"⨄","bigvee;":"⋁","bigwedge;":"⋀","bkarow;":"⤍","blacklozenge;":"⧫","blacksquare;":"▪","blacktriangle;":"▴","blacktriangledown;":"▾","blacktriangleleft;":"◂","blacktriangleright;":"▸","blank;":"␣","blk12;":"▒","blk14;":"░","blk34;":"▓","block;":"█","bne;":"=⃥","bnequiv;":"≡⃥","bNot;":"⫭","bnot;":"⌐","Bopf;":"𝔹","bopf;":"𝕓","bot;":"⊥","bottom;":"⊥","bowtie;":"⋈","boxbox;":"⧉","boxDL;":"╗","boxDl;":"╖","boxdL;":"╕","boxdl;":"┐","boxDR;":"╔","boxDr;":"╓","boxdR;":"╒","boxdr;":"┌","boxH;":"═","boxh;":"─","boxHD;":"╦","boxHd;":"╤","boxhD;":"╥","boxhd;":"┬","boxHU;":"╩","boxHu;":"╧","boxhU;":"╨","boxhu;":"┴","boxminus;":"⊟","boxplus;":"⊞","boxtimes;":"⊠","boxUL;":"╝","boxUl;":"╜","boxuL;":"╛","boxul;":"┘","boxUR;":"╚","boxUr;":"╙","boxuR;":"╘","boxur;":"└","boxV;":"║","boxv;":"│","boxVH;":"╬","boxVh;":"╫","boxvH;":"╪","boxvh;":"┼","boxVL;":"╣","boxVl;":"╢","boxvL;":"╡","boxvl;":"┤","boxVR;":"╠","boxVr;":"╟","boxvR;":"╞","boxvr;":"├","bprime;":"‵","Breve;":"˘","breve;":"˘","brvbar;":"¦",brvbar:"¦","Bscr;":"ℬ","bscr;":"𝒷","bsemi;":"⁏","bsim;":"∽","bsime;":"⋍","bsol;":"\\","bsolb;":"⧅","bsolhsub;":"⟈","bull;":"•","bullet;":"•","bump;":"≎","bumpE;":"⪮","bumpe;":"≏","Bumpeq;":"≎","bumpeq;":"≏","Cacute;":"Ć","cacute;":"ć","Cap;":"⋒","cap;":"∩","capand;":"⩄","capbrcup;":"⩉","capcap;":"⩋","capcup;":"⩇","capdot;":"⩀","CapitalDifferentialD;":"ⅅ","caps;":"∩︀","caret;":"⁁","caron;":"ˇ","Cayleys;":"ℭ","ccaps;":"⩍","Ccaron;":"Č","ccaron;":"č","Ccedil;":"Ç",Ccedil:"Ç","ccedil;":"ç",ccedil:"ç","Ccirc;":"Ĉ","ccirc;":"ĉ","Cconint;":"∰","ccups;":"⩌","ccupssm;":"⩐","Cdot;":"Ċ","cdot;":"ċ","cedil;":"¸",cedil:"¸","Cedilla;":"¸","cemptyv;":"⦲","cent;":"¢",cent:"¢","CenterDot;":"·","centerdot;":"·","Cfr;":"ℭ","cfr;":"𝔠","CHcy;":"Ч","chcy;":"ч","check;":"✓","checkmark;":"✓","Chi;":"Χ","chi;":"χ","cir;":"○","circ;":"ˆ","circeq;":"≗","circlearrowleft;":"↺","circlearrowright;":"↻","circledast;":"⊛","circledcirc;":"⊚","circleddash;":"⊝","CircleDot;":"⊙","circledR;":"®","circledS;":"Ⓢ","CircleMinus;":"⊖","CirclePlus;":"⊕","CircleTimes;":"⊗","cirE;":"⧃","cire;":"≗","cirfnint;":"⨐","cirmid;":"⫯","cirscir;":"⧂","ClockwiseContourIntegral;":"∲","CloseCurlyDoubleQuote;":"”","CloseCurlyQuote;":"’","clubs;":"♣","clubsuit;":"♣","Colon;":"∷","colon;":":","Colone;":"⩴","colone;":"≔","coloneq;":"≔","comma;":",","commat;":"@","comp;":"∁","compfn;":"∘","complement;":"∁","complexes;":"ℂ","cong;":"≅","congdot;":"⩭","Congruent;":"≡","Conint;":"∯","conint;":"∮","ContourIntegral;":"∮","Copf;":"ℂ","copf;":"𝕔","coprod;":"∐","Coproduct;":"∐","COPY;":"©",COPY:"©","copy;":"©",copy:"©","copysr;":"℗","CounterClockwiseContourIntegral;":"∳","crarr;":"↵","Cross;":"⨯","cross;":"✗","Cscr;":"𝒞","cscr;":"𝒸","csub;":"⫏","csube;":"⫑","csup;":"⫐","csupe;":"⫒","ctdot;":"⋯","cudarrl;":"⤸","cudarrr;":"⤵","cuepr;":"⋞","cuesc;":"⋟","cularr;":"↶","cularrp;":"⤽","Cup;":"⋓","cup;":"∪","cupbrcap;":"⩈","CupCap;":"≍","cupcap;":"⩆","cupcup;":"⩊","cupdot;":"⊍","cupor;":"⩅","cups;":"∪︀","curarr;":"↷","curarrm;":"⤼","curlyeqprec;":"⋞","curlyeqsucc;":"⋟","curlyvee;":"⋎","curlywedge;":"⋏","curren;":"¤",curren:"¤","curvearrowleft;":"↶","curvearrowright;":"↷","cuvee;":"⋎","cuwed;":"⋏","cwconint;":"∲","cwint;":"∱","cylcty;":"⌭","Dagger;":"‡","dagger;":"†","daleth;":"ℸ","Darr;":"↡","dArr;":"⇓","darr;":"↓","dash;":"‐","Dashv;":"⫤","dashv;":"⊣","dbkarow;":"⤏","dblac;":"˝","Dcaron;":"Ď","dcaron;":"ď","Dcy;":"Д","dcy;":"д","DD;":"ⅅ","dd;":"ⅆ","ddagger;":"‡","ddarr;":"⇊","DDotrahd;":"⤑","ddotseq;":"⩷","deg;":"°",deg:"°","Del;":"∇","Delta;":"Δ","delta;":"δ","demptyv;":"⦱","dfisht;":"⥿","Dfr;":"𝔇","dfr;":"𝔡","dHar;":"⥥","dharl;":"⇃","dharr;":"⇂","DiacriticalAcute;":"´","DiacriticalDot;":"˙","DiacriticalDoubleAcute;":"˝","DiacriticalGrave;":"`","DiacriticalTilde;":"˜","diam;":"⋄","Diamond;":"⋄","diamond;":"⋄","diamondsuit;":"♦","diams;":"♦","die;":"¨","DifferentialD;":"ⅆ","digamma;":"ϝ","disin;":"⋲","div;":"÷","divide;":"÷",divide:"÷","divideontimes;":"⋇","divonx;":"⋇","DJcy;":"Ђ","djcy;":"ђ","dlcorn;":"⌞","dlcrop;":"⌍","dollar;":"$","Dopf;":"𝔻","dopf;":"𝕕","Dot;":"¨","dot;":"˙","DotDot;":"⃜","doteq;":"≐","doteqdot;":"≑","DotEqual;":"≐","dotminus;":"∸","dotplus;":"∔","dotsquare;":"⊡","doublebarwedge;":"⌆","DoubleContourIntegral;":"∯","DoubleDot;":"¨","DoubleDownArrow;":"⇓","DoubleLeftArrow;":"⇐","DoubleLeftRightArrow;":"⇔","DoubleLeftTee;":"⫤","DoubleLongLeftArrow;":"⟸","DoubleLongLeftRightArrow;":"⟺","DoubleLongRightArrow;":"⟹","DoubleRightArrow;":"⇒","DoubleRightTee;":"⊨","DoubleUpArrow;":"⇑","DoubleUpDownArrow;":"⇕","DoubleVerticalBar;":"∥","DownArrow;":"↓","Downarrow;":"⇓","downarrow;":"↓","DownArrowBar;":"⤓","DownArrowUpArrow;":"⇵","DownBreve;":"̑","downdownarrows;":"⇊","downharpoonleft;":"⇃","downharpoonright;":"⇂","DownLeftRightVector;":"⥐","DownLeftTeeVector;":"⥞","DownLeftVector;":"↽","DownLeftVectorBar;":"⥖","DownRightTeeVector;":"⥟","DownRightVector;":"⇁","DownRightVectorBar;":"⥗","DownTee;":"⊤","DownTeeArrow;":"↧","drbkarow;":"⤐","drcorn;":"⌟","drcrop;":"⌌","Dscr;":"𝒟","dscr;":"𝒹","DScy;":"Ѕ","dscy;":"ѕ","dsol;":"⧶","Dstrok;":"Đ","dstrok;":"đ","dtdot;":"⋱","dtri;":"▿","dtrif;":"▾","duarr;":"⇵","duhar;":"⥯","dwangle;":"⦦","DZcy;":"Џ","dzcy;":"џ","dzigrarr;":"⟿","Eacute;":"É",Eacute:"É","eacute;":"é",eacute:"é","easter;":"⩮","Ecaron;":"Ě","ecaron;":"ě","ecir;":"≖","Ecirc;":"Ê",Ecirc:"Ê","ecirc;":"ê",ecirc:"ê","ecolon;":"≕","Ecy;":"Э","ecy;":"э","eDDot;":"⩷","Edot;":"Ė","eDot;":"≑","edot;":"ė","ee;":"ⅇ","efDot;":"≒","Efr;":"𝔈","efr;":"𝔢","eg;":"⪚","Egrave;":"È",Egrave:"È","egrave;":"è",egrave:"è","egs;":"⪖","egsdot;":"⪘","el;":"⪙","Element;":"∈","elinters;":"⏧","ell;":"ℓ","els;":"⪕","elsdot;":"⪗","Emacr;":"Ē","emacr;":"ē","empty;":"∅","emptyset;":"∅","EmptySmallSquare;":"◻","emptyv;":"∅","EmptyVerySmallSquare;":"▫","emsp;":" ","emsp13;":" ","emsp14;":" ","ENG;":"Ŋ","eng;":"ŋ","ensp;":" ","Eogon;":"Ę","eogon;":"ę","Eopf;":"𝔼","eopf;":"𝕖","epar;":"⋕","eparsl;":"⧣","eplus;":"⩱","epsi;":"ε","Epsilon;":"Ε","epsilon;":"ε","epsiv;":"ϵ","eqcirc;":"≖","eqcolon;":"≕","eqsim;":"≂","eqslantgtr;":"⪖","eqslantless;":"⪕","Equal;":"⩵","equals;":"=","EqualTilde;":"≂","equest;":"≟","Equilibrium;":"⇌","equiv;":"≡","equivDD;":"⩸","eqvparsl;":"⧥","erarr;":"⥱","erDot;":"≓","Escr;":"ℰ","escr;":"ℯ","esdot;":"≐","Esim;":"⩳","esim;":"≂","Eta;":"Η","eta;":"η","ETH;":"Ð",ETH:"Ð","eth;":"ð",eth:"ð","Euml;":"Ë",Euml:"Ë","euml;":"ë",euml:"ë","euro;":"€","excl;":"!","exist;":"∃","Exists;":"∃","expectation;":"ℰ","ExponentialE;":"ⅇ","exponentiale;":"ⅇ","fallingdotseq;":"≒","Fcy;":"Ф","fcy;":"ф","female;":"♀","ffilig;":"ffi","fflig;":"ff","ffllig;":"ffl","Ffr;":"𝔉","ffr;":"𝔣","filig;":"fi","FilledSmallSquare;":"◼","FilledVerySmallSquare;":"▪","fjlig;":"fj","flat;":"♭","fllig;":"fl","fltns;":"▱","fnof;":"ƒ","Fopf;":"𝔽","fopf;":"𝕗","ForAll;":"∀","forall;":"∀","fork;":"⋔","forkv;":"⫙","Fouriertrf;":"ℱ","fpartint;":"⨍","frac12;":"½",frac12:"½","frac13;":"⅓","frac14;":"¼",frac14:"¼","frac15;":"⅕","frac16;":"⅙","frac18;":"⅛","frac23;":"⅔","frac25;":"⅖","frac34;":"¾",frac34:"¾","frac35;":"⅗","frac38;":"⅜","frac45;":"⅘","frac56;":"⅚","frac58;":"⅝","frac78;":"⅞","frasl;":"⁄","frown;":"⌢","Fscr;":"ℱ","fscr;":"𝒻","gacute;":"ǵ","Gamma;":"Γ","gamma;":"γ","Gammad;":"Ϝ","gammad;":"ϝ","gap;":"⪆","Gbreve;":"Ğ","gbreve;":"ğ","Gcedil;":"Ģ","Gcirc;":"Ĝ","gcirc;":"ĝ","Gcy;":"Г","gcy;":"г","Gdot;":"Ġ","gdot;":"ġ","gE;":"≧","ge;":"≥","gEl;":"⪌","gel;":"⋛","geq;":"≥","geqq;":"≧","geqslant;":"⩾","ges;":"⩾","gescc;":"⪩","gesdot;":"⪀","gesdoto;":"⪂","gesdotol;":"⪄","gesl;":"⋛︀","gesles;":"⪔","Gfr;":"𝔊","gfr;":"𝔤","Gg;":"⋙","gg;":"≫","ggg;":"⋙","gimel;":"ℷ","GJcy;":"Ѓ","gjcy;":"ѓ","gl;":"≷","gla;":"⪥","glE;":"⪒","glj;":"⪤","gnap;":"⪊","gnapprox;":"⪊","gnE;":"≩","gne;":"⪈","gneq;":"⪈","gneqq;":"≩","gnsim;":"⋧","Gopf;":"𝔾","gopf;":"𝕘","grave;":"`","GreaterEqual;":"≥","GreaterEqualLess;":"⋛","GreaterFullEqual;":"≧","GreaterGreater;":"⪢","GreaterLess;":"≷","GreaterSlantEqual;":"⩾","GreaterTilde;":"≳","Gscr;":"𝒢","gscr;":"ℊ","gsim;":"≳","gsime;":"⪎","gsiml;":"⪐","GT;":">",GT:">","Gt;":"≫","gt;":">",gt:">","gtcc;":"⪧","gtcir;":"⩺","gtdot;":"⋗","gtlPar;":"⦕","gtquest;":"⩼","gtrapprox;":"⪆","gtrarr;":"⥸","gtrdot;":"⋗","gtreqless;":"⋛","gtreqqless;":"⪌","gtrless;":"≷","gtrsim;":"≳","gvertneqq;":"≩︀","gvnE;":"≩︀","Hacek;":"ˇ","hairsp;":" ","half;":"½","hamilt;":"ℋ","HARDcy;":"Ъ","hardcy;":"ъ","hArr;":"⇔","harr;":"↔","harrcir;":"⥈","harrw;":"↭","Hat;":"^","hbar;":"ℏ","Hcirc;":"Ĥ","hcirc;":"ĥ","hearts;":"♥","heartsuit;":"♥","hellip;":"…","hercon;":"⊹","Hfr;":"ℌ","hfr;":"𝔥","HilbertSpace;":"ℋ","hksearow;":"⤥","hkswarow;":"⤦","hoarr;":"⇿","homtht;":"∻","hookleftarrow;":"↩","hookrightarrow;":"↪","Hopf;":"ℍ","hopf;":"𝕙","horbar;":"―","HorizontalLine;":"─","Hscr;":"ℋ","hscr;":"𝒽","hslash;":"ℏ","Hstrok;":"Ħ","hstrok;":"ħ","HumpDownHump;":"≎","HumpEqual;":"≏","hybull;":"⁃","hyphen;":"‐","Iacute;":"Í",Iacute:"Í","iacute;":"í",iacute:"í","ic;":"⁣","Icirc;":"Î",Icirc:"Î","icirc;":"î",icirc:"î","Icy;":"И","icy;":"и","Idot;":"İ","IEcy;":"Е","iecy;":"е","iexcl;":"¡",iexcl:"¡","iff;":"⇔","Ifr;":"ℑ","ifr;":"𝔦","Igrave;":"Ì",Igrave:"Ì","igrave;":"ì",igrave:"ì","ii;":"ⅈ","iiiint;":"⨌","iiint;":"∭","iinfin;":"⧜","iiota;":"℩","IJlig;":"IJ","ijlig;":"ij","Im;":"ℑ","Imacr;":"Ī","imacr;":"ī","image;":"ℑ","ImaginaryI;":"ⅈ","imagline;":"ℐ","imagpart;":"ℑ","imath;":"ı","imof;":"⊷","imped;":"Ƶ","Implies;":"⇒","in;":"∈","incare;":"℅","infin;":"∞","infintie;":"⧝","inodot;":"ı","Int;":"∬","int;":"∫","intcal;":"⊺","integers;":"ℤ","Integral;":"∫","intercal;":"⊺","Intersection;":"⋂","intlarhk;":"⨗","intprod;":"⨼","InvisibleComma;":"⁣","InvisibleTimes;":"⁢","IOcy;":"Ё","iocy;":"ё","Iogon;":"Į","iogon;":"į","Iopf;":"𝕀","iopf;":"𝕚","Iota;":"Ι","iota;":"ι","iprod;":"⨼","iquest;":"¿",iquest:"¿","Iscr;":"ℐ","iscr;":"𝒾","isin;":"∈","isindot;":"⋵","isinE;":"⋹","isins;":"⋴","isinsv;":"⋳","isinv;":"∈","it;":"⁢","Itilde;":"Ĩ","itilde;":"ĩ","Iukcy;":"І","iukcy;":"і","Iuml;":"Ï",Iuml:"Ï","iuml;":"ï",iuml:"ï","Jcirc;":"Ĵ","jcirc;":"ĵ","Jcy;":"Й","jcy;":"й","Jfr;":"𝔍","jfr;":"𝔧","jmath;":"ȷ","Jopf;":"𝕁","jopf;":"𝕛","Jscr;":"𝒥","jscr;":"𝒿","Jsercy;":"Ј","jsercy;":"ј","Jukcy;":"Є","jukcy;":"є","Kappa;":"Κ","kappa;":"κ","kappav;":"ϰ","Kcedil;":"Ķ","kcedil;":"ķ","Kcy;":"К","kcy;":"к","Kfr;":"𝔎","kfr;":"𝔨","kgreen;":"ĸ","KHcy;":"Х","khcy;":"х","KJcy;":"Ќ","kjcy;":"ќ","Kopf;":"𝕂","kopf;":"𝕜","Kscr;":"𝒦","kscr;":"𝓀","lAarr;":"⇚","Lacute;":"Ĺ","lacute;":"ĺ","laemptyv;":"⦴","lagran;":"ℒ","Lambda;":"Λ","lambda;":"λ","Lang;":"⟪","lang;":"⟨","langd;":"⦑","langle;":"⟨","lap;":"⪅","Laplacetrf;":"ℒ","laquo;":"«",laquo:"«","Larr;":"↞","lArr;":"⇐","larr;":"←","larrb;":"⇤","larrbfs;":"⤟","larrfs;":"⤝","larrhk;":"↩","larrlp;":"↫","larrpl;":"⤹","larrsim;":"⥳","larrtl;":"↢","lat;":"⪫","lAtail;":"⤛","latail;":"⤙","late;":"⪭","lates;":"⪭︀","lBarr;":"⤎","lbarr;":"⤌","lbbrk;":"❲","lbrace;":"{","lbrack;":"[","lbrke;":"⦋","lbrksld;":"⦏","lbrkslu;":"⦍","Lcaron;":"Ľ","lcaron;":"ľ","Lcedil;":"Ļ","lcedil;":"ļ","lceil;":"⌈","lcub;":"{","Lcy;":"Л","lcy;":"л","ldca;":"⤶","ldquo;":"“","ldquor;":"„","ldrdhar;":"⥧","ldrushar;":"⥋","ldsh;":"↲","lE;":"≦","le;":"≤","LeftAngleBracket;":"⟨","LeftArrow;":"←","Leftarrow;":"⇐","leftarrow;":"←","LeftArrowBar;":"⇤","LeftArrowRightArrow;":"⇆","leftarrowtail;":"↢","LeftCeiling;":"⌈","LeftDoubleBracket;":"⟦","LeftDownTeeVector;":"⥡","LeftDownVector;":"⇃","LeftDownVectorBar;":"⥙","LeftFloor;":"⌊","leftharpoondown;":"↽","leftharpoonup;":"↼","leftleftarrows;":"⇇","LeftRightArrow;":"↔","Leftrightarrow;":"⇔","leftrightarrow;":"↔","leftrightarrows;":"⇆","leftrightharpoons;":"⇋","leftrightsquigarrow;":"↭","LeftRightVector;":"⥎","LeftTee;":"⊣","LeftTeeArrow;":"↤","LeftTeeVector;":"⥚","leftthreetimes;":"⋋","LeftTriangle;":"⊲","LeftTriangleBar;":"⧏","LeftTriangleEqual;":"⊴","LeftUpDownVector;":"⥑","LeftUpTeeVector;":"⥠","LeftUpVector;":"↿","LeftUpVectorBar;":"⥘","LeftVector;":"↼","LeftVectorBar;":"⥒","lEg;":"⪋","leg;":"⋚","leq;":"≤","leqq;":"≦","leqslant;":"⩽","les;":"⩽","lescc;":"⪨","lesdot;":"⩿","lesdoto;":"⪁","lesdotor;":"⪃","lesg;":"⋚︀","lesges;":"⪓","lessapprox;":"⪅","lessdot;":"⋖","lesseqgtr;":"⋚","lesseqqgtr;":"⪋","LessEqualGreater;":"⋚","LessFullEqual;":"≦","LessGreater;":"≶","lessgtr;":"≶","LessLess;":"⪡","lesssim;":"≲","LessSlantEqual;":"⩽","LessTilde;":"≲","lfisht;":"⥼","lfloor;":"⌊","Lfr;":"𝔏","lfr;":"𝔩","lg;":"≶","lgE;":"⪑","lHar;":"⥢","lhard;":"↽","lharu;":"↼","lharul;":"⥪","lhblk;":"▄","LJcy;":"Љ","ljcy;":"љ","Ll;":"⋘","ll;":"≪","llarr;":"⇇","llcorner;":"⌞","Lleftarrow;":"⇚","llhard;":"⥫","lltri;":"◺","Lmidot;":"Ŀ","lmidot;":"ŀ","lmoust;":"⎰","lmoustache;":"⎰","lnap;":"⪉","lnapprox;":"⪉","lnE;":"≨","lne;":"⪇","lneq;":"⪇","lneqq;":"≨","lnsim;":"⋦","loang;":"⟬","loarr;":"⇽","lobrk;":"⟦","LongLeftArrow;":"⟵","Longleftarrow;":"⟸","longleftarrow;":"⟵","LongLeftRightArrow;":"⟷","Longleftrightarrow;":"⟺","longleftrightarrow;":"⟷","longmapsto;":"⟼","LongRightArrow;":"⟶","Longrightarrow;":"⟹","longrightarrow;":"⟶","looparrowleft;":"↫","looparrowright;":"↬","lopar;":"⦅","Lopf;":"𝕃","lopf;":"𝕝","loplus;":"⨭","lotimes;":"⨴","lowast;":"∗","lowbar;":"_","LowerLeftArrow;":"↙","LowerRightArrow;":"↘","loz;":"◊","lozenge;":"◊","lozf;":"⧫","lpar;":"(","lparlt;":"⦓","lrarr;":"⇆","lrcorner;":"⌟","lrhar;":"⇋","lrhard;":"⥭","lrm;":"‎","lrtri;":"⊿","lsaquo;":"‹","Lscr;":"ℒ","lscr;":"𝓁","Lsh;":"↰","lsh;":"↰","lsim;":"≲","lsime;":"⪍","lsimg;":"⪏","lsqb;":"[","lsquo;":"‘","lsquor;":"‚","Lstrok;":"Ł","lstrok;":"ł","LT;":"<",LT:"<","Lt;":"≪","lt;":"<",lt:"<","ltcc;":"⪦","ltcir;":"⩹","ltdot;":"⋖","lthree;":"⋋","ltimes;":"⋉","ltlarr;":"⥶","ltquest;":"⩻","ltri;":"◃","ltrie;":"⊴","ltrif;":"◂","ltrPar;":"⦖","lurdshar;":"⥊","luruhar;":"⥦","lvertneqq;":"≨︀","lvnE;":"≨︀","macr;":"¯",macr:"¯","male;":"♂","malt;":"✠","maltese;":"✠","Map;":"⤅","map;":"↦","mapsto;":"↦","mapstodown;":"↧","mapstoleft;":"↤","mapstoup;":"↥","marker;":"▮","mcomma;":"⨩","Mcy;":"М","mcy;":"м","mdash;":"—","mDDot;":"∺","measuredangle;":"∡","MediumSpace;":" ","Mellintrf;":"ℳ","Mfr;":"𝔐","mfr;":"𝔪","mho;":"℧","micro;":"µ",micro:"µ","mid;":"∣","midast;":"*","midcir;":"⫰","middot;":"·",middot:"·","minus;":"−","minusb;":"⊟","minusd;":"∸","minusdu;":"⨪","MinusPlus;":"∓","mlcp;":"⫛","mldr;":"…","mnplus;":"∓","models;":"⊧","Mopf;":"𝕄","mopf;":"𝕞","mp;":"∓","Mscr;":"ℳ","mscr;":"𝓂","mstpos;":"∾","Mu;":"Μ","mu;":"μ","multimap;":"⊸","mumap;":"⊸","nabla;":"∇","Nacute;":"Ń","nacute;":"ń","nang;":"∠⃒","nap;":"≉","napE;":"⩰̸","napid;":"≋̸","napos;":"ʼn","napprox;":"≉","natur;":"♮","natural;":"♮","naturals;":"ℕ","nbsp;":" ",nbsp:" ","nbump;":"≎̸","nbumpe;":"≏̸","ncap;":"⩃","Ncaron;":"Ň","ncaron;":"ň","Ncedil;":"Ņ","ncedil;":"ņ","ncong;":"≇","ncongdot;":"⩭̸","ncup;":"⩂","Ncy;":"Н","ncy;":"н","ndash;":"–","ne;":"≠","nearhk;":"⤤","neArr;":"⇗","nearr;":"↗","nearrow;":"↗","nedot;":"≐̸","NegativeMediumSpace;":"​","NegativeThickSpace;":"​","NegativeThinSpace;":"​","NegativeVeryThinSpace;":"​","nequiv;":"≢","nesear;":"⤨","nesim;":"≂̸","NestedGreaterGreater;":"≫","NestedLessLess;":"≪","NewLine;":"\n","nexist;":"∄","nexists;":"∄","Nfr;":"𝔑","nfr;":"𝔫","ngE;":"≧̸","nge;":"≱","ngeq;":"≱","ngeqq;":"≧̸","ngeqslant;":"⩾̸","nges;":"⩾̸","nGg;":"⋙̸","ngsim;":"≵","nGt;":"≫⃒","ngt;":"≯","ngtr;":"≯","nGtv;":"≫̸","nhArr;":"⇎","nharr;":"↮","nhpar;":"⫲","ni;":"∋","nis;":"⋼","nisd;":"⋺","niv;":"∋","NJcy;":"Њ","njcy;":"њ","nlArr;":"⇍","nlarr;":"↚","nldr;":"‥","nlE;":"≦̸","nle;":"≰","nLeftarrow;":"⇍","nleftarrow;":"↚","nLeftrightarrow;":"⇎","nleftrightarrow;":"↮","nleq;":"≰","nleqq;":"≦̸","nleqslant;":"⩽̸","nles;":"⩽̸","nless;":"≮","nLl;":"⋘̸","nlsim;":"≴","nLt;":"≪⃒","nlt;":"≮","nltri;":"⋪","nltrie;":"⋬","nLtv;":"≪̸","nmid;":"∤","NoBreak;":"⁠","NonBreakingSpace;":" ","Nopf;":"ℕ","nopf;":"𝕟","Not;":"⫬","not;":"¬",not:"¬","NotCongruent;":"≢","NotCupCap;":"≭","NotDoubleVerticalBar;":"∦","NotElement;":"∉","NotEqual;":"≠","NotEqualTilde;":"≂̸","NotExists;":"∄","NotGreater;":"≯","NotGreaterEqual;":"≱","NotGreaterFullEqual;":"≧̸","NotGreaterGreater;":"≫̸","NotGreaterLess;":"≹","NotGreaterSlantEqual;":"⩾̸","NotGreaterTilde;":"≵","NotHumpDownHump;":"≎̸","NotHumpEqual;":"≏̸","notin;":"∉","notindot;":"⋵̸","notinE;":"⋹̸","notinva;":"∉","notinvb;":"⋷","notinvc;":"⋶","NotLeftTriangle;":"⋪","NotLeftTriangleBar;":"⧏̸","NotLeftTriangleEqual;":"⋬","NotLess;":"≮","NotLessEqual;":"≰","NotLessGreater;":"≸","NotLessLess;":"≪̸","NotLessSlantEqual;":"⩽̸","NotLessTilde;":"≴","NotNestedGreaterGreater;":"⪢̸","NotNestedLessLess;":"⪡̸","notni;":"∌","notniva;":"∌","notnivb;":"⋾","notnivc;":"⋽","NotPrecedes;":"⊀","NotPrecedesEqual;":"⪯̸","NotPrecedesSlantEqual;":"⋠","NotReverseElement;":"∌","NotRightTriangle;":"⋫","NotRightTriangleBar;":"⧐̸","NotRightTriangleEqual;":"⋭","NotSquareSubset;":"⊏̸","NotSquareSubsetEqual;":"⋢","NotSquareSuperset;":"⊐̸","NotSquareSupersetEqual;":"⋣","NotSubset;":"⊂⃒","NotSubsetEqual;":"⊈","NotSucceeds;":"⊁","NotSucceedsEqual;":"⪰̸","NotSucceedsSlantEqual;":"⋡","NotSucceedsTilde;":"≿̸","NotSuperset;":"⊃⃒","NotSupersetEqual;":"⊉","NotTilde;":"≁","NotTildeEqual;":"≄","NotTildeFullEqual;":"≇","NotTildeTilde;":"≉","NotVerticalBar;":"∤","npar;":"∦","nparallel;":"∦","nparsl;":"⫽⃥","npart;":"∂̸","npolint;":"⨔","npr;":"⊀","nprcue;":"⋠","npre;":"⪯̸","nprec;":"⊀","npreceq;":"⪯̸","nrArr;":"⇏","nrarr;":"↛","nrarrc;":"⤳̸","nrarrw;":"↝̸","nRightarrow;":"⇏","nrightarrow;":"↛","nrtri;":"⋫","nrtrie;":"⋭","nsc;":"⊁","nsccue;":"⋡","nsce;":"⪰̸","Nscr;":"𝒩","nscr;":"𝓃","nshortmid;":"∤","nshortparallel;":"∦","nsim;":"≁","nsime;":"≄","nsimeq;":"≄","nsmid;":"∤","nspar;":"∦","nsqsube;":"⋢","nsqsupe;":"⋣","nsub;":"⊄","nsubE;":"⫅̸","nsube;":"⊈","nsubset;":"⊂⃒","nsubseteq;":"⊈","nsubseteqq;":"⫅̸","nsucc;":"⊁","nsucceq;":"⪰̸","nsup;":"⊅","nsupE;":"⫆̸","nsupe;":"⊉","nsupset;":"⊃⃒","nsupseteq;":"⊉","nsupseteqq;":"⫆̸","ntgl;":"≹","Ntilde;":"Ñ",Ntilde:"Ñ","ntilde;":"ñ",ntilde:"ñ","ntlg;":"≸","ntriangleleft;":"⋪","ntrianglelefteq;":"⋬","ntriangleright;":"⋫","ntrianglerighteq;":"⋭","Nu;":"Ν","nu;":"ν","num;":"#","numero;":"№","numsp;":" ","nvap;":"≍⃒","nVDash;":"⊯","nVdash;":"⊮","nvDash;":"⊭","nvdash;":"⊬","nvge;":"≥⃒","nvgt;":">⃒","nvHarr;":"⤄","nvinfin;":"⧞","nvlArr;":"⤂","nvle;":"≤⃒","nvlt;":"<⃒","nvltrie;":"⊴⃒","nvrArr;":"⤃","nvrtrie;":"⊵⃒","nvsim;":"∼⃒","nwarhk;":"⤣","nwArr;":"⇖","nwarr;":"↖","nwarrow;":"↖","nwnear;":"⤧","Oacute;":"Ó",Oacute:"Ó","oacute;":"ó",oacute:"ó","oast;":"⊛","ocir;":"⊚","Ocirc;":"Ô",Ocirc:"Ô","ocirc;":"ô",ocirc:"ô","Ocy;":"О","ocy;":"о","odash;":"⊝","Odblac;":"Ő","odblac;":"ő","odiv;":"⨸","odot;":"⊙","odsold;":"⦼","OElig;":"Œ","oelig;":"œ","ofcir;":"⦿","Ofr;":"𝔒","ofr;":"𝔬","ogon;":"˛","Ograve;":"Ò",Ograve:"Ò","ograve;":"ò",ograve:"ò","ogt;":"⧁","ohbar;":"⦵","ohm;":"Ω","oint;":"∮","olarr;":"↺","olcir;":"⦾","olcross;":"⦻","oline;":"‾","olt;":"⧀","Omacr;":"Ō","omacr;":"ō","Omega;":"Ω","omega;":"ω","Omicron;":"Ο","omicron;":"ο","omid;":"⦶","ominus;":"⊖","Oopf;":"𝕆","oopf;":"𝕠","opar;":"⦷","OpenCurlyDoubleQuote;":"“","OpenCurlyQuote;":"‘","operp;":"⦹","oplus;":"⊕","Or;":"⩔","or;":"∨","orarr;":"↻","ord;":"⩝","order;":"ℴ","orderof;":"ℴ","ordf;":"ª",ordf:"ª","ordm;":"º",ordm:"º","origof;":"⊶","oror;":"⩖","orslope;":"⩗","orv;":"⩛","oS;":"Ⓢ","Oscr;":"𝒪","oscr;":"ℴ","Oslash;":"Ø",Oslash:"Ø","oslash;":"ø",oslash:"ø","osol;":"⊘","Otilde;":"Õ",Otilde:"Õ","otilde;":"õ",otilde:"õ","Otimes;":"⨷","otimes;":"⊗","otimesas;":"⨶","Ouml;":"Ö",Ouml:"Ö","ouml;":"ö",ouml:"ö","ovbar;":"⌽","OverBar;":"‾","OverBrace;":"⏞","OverBracket;":"⎴","OverParenthesis;":"⏜","par;":"∥","para;":"¶",para:"¶","parallel;":"∥","parsim;":"⫳","parsl;":"⫽","part;":"∂","PartialD;":"∂","Pcy;":"П","pcy;":"п","percnt;":"%","period;":".","permil;":"‰","perp;":"⊥","pertenk;":"‱","Pfr;":"𝔓","pfr;":"𝔭","Phi;":"Φ","phi;":"φ","phiv;":"ϕ","phmmat;":"ℳ","phone;":"☎","Pi;":"Π","pi;":"π","pitchfork;":"⋔","piv;":"ϖ","planck;":"ℏ","planckh;":"ℎ","plankv;":"ℏ","plus;":"+","plusacir;":"⨣","plusb;":"⊞","pluscir;":"⨢","plusdo;":"∔","plusdu;":"⨥","pluse;":"⩲","PlusMinus;":"±","plusmn;":"±",plusmn:"±","plussim;":"⨦","plustwo;":"⨧","pm;":"±","Poincareplane;":"ℌ","pointint;":"⨕","Popf;":"ℙ","popf;":"𝕡","pound;":"£",pound:"£","Pr;":"⪻","pr;":"≺","prap;":"⪷","prcue;":"≼","prE;":"⪳","pre;":"⪯","prec;":"≺","precapprox;":"⪷","preccurlyeq;":"≼","Precedes;":"≺","PrecedesEqual;":"⪯","PrecedesSlantEqual;":"≼","PrecedesTilde;":"≾","preceq;":"⪯","precnapprox;":"⪹","precneqq;":"⪵","precnsim;":"⋨","precsim;":"≾","Prime;":"″","prime;":"′","primes;":"ℙ","prnap;":"⪹","prnE;":"⪵","prnsim;":"⋨","prod;":"∏","Product;":"∏","profalar;":"⌮","profline;":"⌒","profsurf;":"⌓","prop;":"∝","Proportion;":"∷","Proportional;":"∝","propto;":"∝","prsim;":"≾","prurel;":"⊰","Pscr;":"𝒫","pscr;":"𝓅","Psi;":"Ψ","psi;":"ψ","puncsp;":" ","Qfr;":"𝔔","qfr;":"𝔮","qint;":"⨌","Qopf;":"ℚ","qopf;":"𝕢","qprime;":"⁗","Qscr;":"𝒬","qscr;":"𝓆","quaternions;":"ℍ","quatint;":"⨖","quest;":"?","questeq;":"≟","QUOT;":'"',QUOT:'"',"quot;":'"',quot:'"',"rAarr;":"⇛","race;":"∽̱","Racute;":"Ŕ","racute;":"ŕ","radic;":"√","raemptyv;":"⦳","Rang;":"⟫","rang;":"⟩","rangd;":"⦒","range;":"⦥","rangle;":"⟩","raquo;":"»",raquo:"»","Rarr;":"↠","rArr;":"⇒","rarr;":"→","rarrap;":"⥵","rarrb;":"⇥","rarrbfs;":"⤠","rarrc;":"⤳","rarrfs;":"⤞","rarrhk;":"↪","rarrlp;":"↬","rarrpl;":"⥅","rarrsim;":"⥴","Rarrtl;":"⤖","rarrtl;":"↣","rarrw;":"↝","rAtail;":"⤜","ratail;":"⤚","ratio;":"∶","rationals;":"ℚ","RBarr;":"⤐","rBarr;":"⤏","rbarr;":"⤍","rbbrk;":"❳","rbrace;":"}","rbrack;":"]","rbrke;":"⦌","rbrksld;":"⦎","rbrkslu;":"⦐","Rcaron;":"Ř","rcaron;":"ř","Rcedil;":"Ŗ","rcedil;":"ŗ","rceil;":"⌉","rcub;":"}","Rcy;":"Р","rcy;":"р","rdca;":"⤷","rdldhar;":"⥩","rdquo;":"”","rdquor;":"”","rdsh;":"↳","Re;":"ℜ","real;":"ℜ","realine;":"ℛ","realpart;":"ℜ","reals;":"ℝ","rect;":"▭","REG;":"®",REG:"®","reg;":"®",reg:"®","ReverseElement;":"∋","ReverseEquilibrium;":"⇋","ReverseUpEquilibrium;":"⥯","rfisht;":"⥽","rfloor;":"⌋","Rfr;":"ℜ","rfr;":"𝔯","rHar;":"⥤","rhard;":"⇁","rharu;":"⇀","rharul;":"⥬","Rho;":"Ρ","rho;":"ρ","rhov;":"ϱ","RightAngleBracket;":"⟩","RightArrow;":"→","Rightarrow;":"⇒","rightarrow;":"→","RightArrowBar;":"⇥","RightArrowLeftArrow;":"⇄","rightarrowtail;":"↣","RightCeiling;":"⌉","RightDoubleBracket;":"⟧","RightDownTeeVector;":"⥝","RightDownVector;":"⇂","RightDownVectorBar;":"⥕","RightFloor;":"⌋","rightharpoondown;":"⇁","rightharpoonup;":"⇀","rightleftarrows;":"⇄","rightleftharpoons;":"⇌","rightrightarrows;":"⇉","rightsquigarrow;":"↝","RightTee;":"⊢","RightTeeArrow;":"↦","RightTeeVector;":"⥛","rightthreetimes;":"⋌","RightTriangle;":"⊳","RightTriangleBar;":"⧐","RightTriangleEqual;":"⊵","RightUpDownVector;":"⥏","RightUpTeeVector;":"⥜","RightUpVector;":"↾","RightUpVectorBar;":"⥔","RightVector;":"⇀","RightVectorBar;":"⥓","ring;":"˚","risingdotseq;":"≓","rlarr;":"⇄","rlhar;":"⇌","rlm;":"‏","rmoust;":"⎱","rmoustache;":"⎱","rnmid;":"⫮","roang;":"⟭","roarr;":"⇾","robrk;":"⟧","ropar;":"⦆","Ropf;":"ℝ","ropf;":"𝕣","roplus;":"⨮","rotimes;":"⨵","RoundImplies;":"⥰","rpar;":")","rpargt;":"⦔","rppolint;":"⨒","rrarr;":"⇉","Rrightarrow;":"⇛","rsaquo;":"›","Rscr;":"ℛ","rscr;":"𝓇","Rsh;":"↱","rsh;":"↱","rsqb;":"]","rsquo;":"’","rsquor;":"’","rthree;":"⋌","rtimes;":"⋊","rtri;":"▹","rtrie;":"⊵","rtrif;":"▸","rtriltri;":"⧎","RuleDelayed;":"⧴","ruluhar;":"⥨","rx;":"℞","Sacute;":"Ś","sacute;":"ś","sbquo;":"‚","Sc;":"⪼","sc;":"≻","scap;":"⪸","Scaron;":"Š","scaron;":"š","sccue;":"≽","scE;":"⪴","sce;":"⪰","Scedil;":"Ş","scedil;":"ş","Scirc;":"Ŝ","scirc;":"ŝ","scnap;":"⪺","scnE;":"⪶","scnsim;":"⋩","scpolint;":"⨓","scsim;":"≿","Scy;":"С","scy;":"с","sdot;":"⋅","sdotb;":"⊡","sdote;":"⩦","searhk;":"⤥","seArr;":"⇘","searr;":"↘","searrow;":"↘","sect;":"§",sect:"§","semi;":";","seswar;":"⤩","setminus;":"∖","setmn;":"∖","sext;":"✶","Sfr;":"𝔖","sfr;":"𝔰","sfrown;":"⌢","sharp;":"♯","SHCHcy;":"Щ","shchcy;":"щ","SHcy;":"Ш","shcy;":"ш","ShortDownArrow;":"↓","ShortLeftArrow;":"←","shortmid;":"∣","shortparallel;":"∥","ShortRightArrow;":"→","ShortUpArrow;":"↑","shy;":"­",shy:"­","Sigma;":"Σ","sigma;":"σ","sigmaf;":"ς","sigmav;":"ς","sim;":"∼","simdot;":"⩪","sime;":"≃","simeq;":"≃","simg;":"⪞","simgE;":"⪠","siml;":"⪝","simlE;":"⪟","simne;":"≆","simplus;":"⨤","simrarr;":"⥲","slarr;":"←","SmallCircle;":"∘","smallsetminus;":"∖","smashp;":"⨳","smeparsl;":"⧤","smid;":"∣","smile;":"⌣","smt;":"⪪","smte;":"⪬","smtes;":"⪬︀","SOFTcy;":"Ь","softcy;":"ь","sol;":"/","solb;":"⧄","solbar;":"⌿","Sopf;":"𝕊","sopf;":"𝕤","spades;":"♠","spadesuit;":"♠","spar;":"∥","sqcap;":"⊓","sqcaps;":"⊓︀","sqcup;":"⊔","sqcups;":"⊔︀","Sqrt;":"√","sqsub;":"⊏","sqsube;":"⊑","sqsubset;":"⊏","sqsubseteq;":"⊑","sqsup;":"⊐","sqsupe;":"⊒","sqsupset;":"⊐","sqsupseteq;":"⊒","squ;":"□","Square;":"□","square;":"□","SquareIntersection;":"⊓","SquareSubset;":"⊏","SquareSubsetEqual;":"⊑","SquareSuperset;":"⊐","SquareSupersetEqual;":"⊒","SquareUnion;":"⊔","squarf;":"▪","squf;":"▪","srarr;":"→","Sscr;":"𝒮","sscr;":"𝓈","ssetmn;":"∖","ssmile;":"⌣","sstarf;":"⋆","Star;":"⋆","star;":"☆","starf;":"★","straightepsilon;":"ϵ","straightphi;":"ϕ","strns;":"¯","Sub;":"⋐","sub;":"⊂","subdot;":"⪽","subE;":"⫅","sube;":"⊆","subedot;":"⫃","submult;":"⫁","subnE;":"⫋","subne;":"⊊","subplus;":"⪿","subrarr;":"⥹","Subset;":"⋐","subset;":"⊂","subseteq;":"⊆","subseteqq;":"⫅","SubsetEqual;":"⊆","subsetneq;":"⊊","subsetneqq;":"⫋","subsim;":"⫇","subsub;":"⫕","subsup;":"⫓","succ;":"≻","succapprox;":"⪸","succcurlyeq;":"≽","Succeeds;":"≻","SucceedsEqual;":"⪰","SucceedsSlantEqual;":"≽","SucceedsTilde;":"≿","succeq;":"⪰","succnapprox;":"⪺","succneqq;":"⪶","succnsim;":"⋩","succsim;":"≿","SuchThat;":"∋","Sum;":"∑","sum;":"∑","sung;":"♪","Sup;":"⋑","sup;":"⊃","sup1;":"¹",sup1:"¹","sup2;":"²",sup2:"²","sup3;":"³",sup3:"³","supdot;":"⪾","supdsub;":"⫘","supE;":"⫆","supe;":"⊇","supedot;":"⫄","Superset;":"⊃","SupersetEqual;":"⊇","suphsol;":"⟉","suphsub;":"⫗","suplarr;":"⥻","supmult;":"⫂","supnE;":"⫌","supne;":"⊋","supplus;":"⫀","Supset;":"⋑","supset;":"⊃","supseteq;":"⊇","supseteqq;":"⫆","supsetneq;":"⊋","supsetneqq;":"⫌","supsim;":"⫈","supsub;":"⫔","supsup;":"⫖","swarhk;":"⤦","swArr;":"⇙","swarr;":"↙","swarrow;":"↙","swnwar;":"⤪","szlig;":"ß",szlig:"ß","Tab;":"\t","target;":"⌖","Tau;":"Τ","tau;":"τ","tbrk;":"⎴","Tcaron;":"Ť","tcaron;":"ť","Tcedil;":"Ţ","tcedil;":"ţ","Tcy;":"Т","tcy;":"т","tdot;":"⃛","telrec;":"⌕","Tfr;":"𝔗","tfr;":"𝔱","there4;":"∴","Therefore;":"∴","therefore;":"∴","Theta;":"Θ","theta;":"θ","thetasym;":"ϑ","thetav;":"ϑ","thickapprox;":"≈","thicksim;":"∼","ThickSpace;":"  ","thinsp;":" ","ThinSpace;":" ","thkap;":"≈","thksim;":"∼","THORN;":"Þ",THORN:"Þ","thorn;":"þ",thorn:"þ","Tilde;":"∼","tilde;":"˜","TildeEqual;":"≃","TildeFullEqual;":"≅","TildeTilde;":"≈","times;":"×",times:"×","timesb;":"⊠","timesbar;":"⨱","timesd;":"⨰","tint;":"∭","toea;":"⤨","top;":"⊤","topbot;":"⌶","topcir;":"⫱","Topf;":"𝕋","topf;":"𝕥","topfork;":"⫚","tosa;":"⤩","tprime;":"‴","TRADE;":"™","trade;":"™","triangle;":"▵","triangledown;":"▿","triangleleft;":"◃","trianglelefteq;":"⊴","triangleq;":"≜","triangleright;":"▹","trianglerighteq;":"⊵","tridot;":"◬","trie;":"≜","triminus;":"⨺","TripleDot;":"⃛","triplus;":"⨹","trisb;":"⧍","tritime;":"⨻","trpezium;":"⏢","Tscr;":"𝒯","tscr;":"𝓉","TScy;":"Ц","tscy;":"ц","TSHcy;":"Ћ","tshcy;":"ћ","Tstrok;":"Ŧ","tstrok;":"ŧ","twixt;":"≬","twoheadleftarrow;":"↞","twoheadrightarrow;":"↠","Uacute;":"Ú",Uacute:"Ú","uacute;":"ú",uacute:"ú","Uarr;":"↟","uArr;":"⇑","uarr;":"↑","Uarrocir;":"⥉","Ubrcy;":"Ў","ubrcy;":"ў","Ubreve;":"Ŭ","ubreve;":"ŭ","Ucirc;":"Û",Ucirc:"Û","ucirc;":"û",ucirc:"û","Ucy;":"У","ucy;":"у","udarr;":"⇅","Udblac;":"Ű","udblac;":"ű","udhar;":"⥮","ufisht;":"⥾","Ufr;":"𝔘","ufr;":"𝔲","Ugrave;":"Ù",Ugrave:"Ù","ugrave;":"ù",ugrave:"ù","uHar;":"⥣","uharl;":"↿","uharr;":"↾","uhblk;":"▀","ulcorn;":"⌜","ulcorner;":"⌜","ulcrop;":"⌏","ultri;":"◸","Umacr;":"Ū","umacr;":"ū","uml;":"¨",uml:"¨","UnderBar;":"_","UnderBrace;":"⏟","UnderBracket;":"⎵","UnderParenthesis;":"⏝","Union;":"⋃","UnionPlus;":"⊎","Uogon;":"Ų","uogon;":"ų","Uopf;":"𝕌","uopf;":"𝕦","UpArrow;":"↑","Uparrow;":"⇑","uparrow;":"↑","UpArrowBar;":"⤒","UpArrowDownArrow;":"⇅","UpDownArrow;":"↕","Updownarrow;":"⇕","updownarrow;":"↕","UpEquilibrium;":"⥮","upharpoonleft;":"↿","upharpoonright;":"↾","uplus;":"⊎","UpperLeftArrow;":"↖","UpperRightArrow;":"↗","Upsi;":"ϒ","upsi;":"υ","upsih;":"ϒ","Upsilon;":"Υ","upsilon;":"υ","UpTee;":"⊥","UpTeeArrow;":"↥","upuparrows;":"⇈","urcorn;":"⌝","urcorner;":"⌝","urcrop;":"⌎","Uring;":"Ů","uring;":"ů","urtri;":"◹","Uscr;":"𝒰","uscr;":"𝓊","utdot;":"⋰","Utilde;":"Ũ","utilde;":"ũ","utri;":"▵","utrif;":"▴","uuarr;":"⇈","Uuml;":"Ü",Uuml:"Ü","uuml;":"ü",uuml:"ü","uwangle;":"⦧","vangrt;":"⦜","varepsilon;":"ϵ","varkappa;":"ϰ","varnothing;":"∅","varphi;":"ϕ","varpi;":"ϖ","varpropto;":"∝","vArr;":"⇕","varr;":"↕","varrho;":"ϱ","varsigma;":"ς","varsubsetneq;":"⊊︀","varsubsetneqq;":"⫋︀","varsupsetneq;":"⊋︀","varsupsetneqq;":"⫌︀","vartheta;":"ϑ","vartriangleleft;":"⊲","vartriangleright;":"⊳","Vbar;":"⫫","vBar;":"⫨","vBarv;":"⫩","Vcy;":"В","vcy;":"в","VDash;":"⊫","Vdash;":"⊩","vDash;":"⊨","vdash;":"⊢","Vdashl;":"⫦","Vee;":"⋁","vee;":"∨","veebar;":"⊻","veeeq;":"≚","vellip;":"⋮","Verbar;":"‖","verbar;":"|","Vert;":"‖","vert;":"|","VerticalBar;":"∣","VerticalLine;":"|","VerticalSeparator;":"❘","VerticalTilde;":"≀","VeryThinSpace;":" ","Vfr;":"𝔙","vfr;":"𝔳","vltri;":"⊲","vnsub;":"⊂⃒","vnsup;":"⊃⃒","Vopf;":"𝕍","vopf;":"𝕧","vprop;":"∝","vrtri;":"⊳","Vscr;":"𝒱","vscr;":"𝓋","vsubnE;":"⫋︀","vsubne;":"⊊︀","vsupnE;":"⫌︀","vsupne;":"⊋︀","Vvdash;":"⊪","vzigzag;":"⦚","Wcirc;":"Ŵ","wcirc;":"ŵ","wedbar;":"⩟","Wedge;":"⋀","wedge;":"∧","wedgeq;":"≙","weierp;":"℘","Wfr;":"𝔚","wfr;":"𝔴","Wopf;":"𝕎","wopf;":"𝕨","wp;":"℘","wr;":"≀","wreath;":"≀","Wscr;":"𝒲","wscr;":"𝓌","xcap;":"⋂","xcirc;":"◯","xcup;":"⋃","xdtri;":"▽","Xfr;":"𝔛","xfr;":"𝔵","xhArr;":"⟺","xharr;":"⟷","Xi;":"Ξ","xi;":"ξ","xlArr;":"⟸","xlarr;":"⟵","xmap;":"⟼","xnis;":"⋻","xodot;":"⨀","Xopf;":"𝕏","xopf;":"𝕩","xoplus;":"⨁","xotime;":"⨂","xrArr;":"⟹","xrarr;":"⟶","Xscr;":"𝒳","xscr;":"𝓍","xsqcup;":"⨆","xuplus;":"⨄","xutri;":"△","xvee;":"⋁","xwedge;":"⋀","Yacute;":"Ý",Yacute:"Ý","yacute;":"ý",yacute:"ý","YAcy;":"Я","yacy;":"я","Ycirc;":"Ŷ","ycirc;":"ŷ","Ycy;":"Ы","ycy;":"ы","yen;":"¥",yen:"¥","Yfr;":"𝔜","yfr;":"𝔶","YIcy;":"Ї","yicy;":"ї","Yopf;":"𝕐","yopf;":"𝕪","Yscr;":"𝒴","yscr;":"𝓎","YUcy;":"Ю","yucy;":"ю","Yuml;":"Ÿ","yuml;":"ÿ",yuml:"ÿ","Zacute;":"Ź","zacute;":"ź","Zcaron;":"Ž","zcaron;":"ž","Zcy;":"З","zcy;":"з","Zdot;":"Ż","zdot;":"ż","zeetrf;":"ℨ","ZeroWidthSpace;":"​","Zeta;":"Ζ","zeta;":"ζ","Zfr;":"ℨ","zfr;":"𝔷","ZHcy;":"Ж","zhcy;":"ж","zigrarr;":"⇝","Zopf;":"ℤ","zopf;":"𝕫","Zscr;":"𝒵","zscr;":"𝓏","zwj;":"‍","zwnj;":"‌"};function Be(e,t){if(e.length0))return a;r=a-1}}var s;return-(i+1)}(Ze,e.toLowerCase())>=0}function et(e){return void 0!==e}var tt=function(){function e(e,t){var n=this;this.id=e,this._tags=[],this._tagMap={},this._valueSetMap={},this._tags=t.tags||[],this._globalAttributes=t.globalAttributes||[],this._tags.forEach((function(e){n._tagMap[e.name.toLowerCase()]=e})),t.valueSets&&t.valueSets.forEach((function(e){n._valueSetMap[e.name]=e.values}))}return e.prototype.isApplicable=function(){return!0},e.prototype.getId=function(){return this.id},e.prototype.provideTags=function(){return this._tags},e.prototype.provideAttributes=function(e){var t=[],n=function(e){t.push(e)},i=this._tagMap[e.toLowerCase()];return i&&i.attributes.forEach(n),this._globalAttributes.forEach(n),t},e.prototype.provideValues=function(e,t){var n=this,i=[];t=t.toLowerCase();var r=function(e){e.forEach((function(e){e.name.toLowerCase()===t&&(e.values&&e.values.forEach((function(e){i.push(e)})),e.valueSet&&n._valueSetMap[e.valueSet]&&n._valueSetMap[e.valueSet].forEach((function(e){i.push(e)})))}))},a=this._tagMap[e.toLowerCase()];return a?(r(a.attributes),r(this._globalAttributes),i):[]},e}();function nt(e,t){var n={kind:t?"markdown":"plaintext",value:""};if(e.description){var i=function(e){if(e)return"string"==typeof e?{kind:"markdown",value:e}:{kind:"markdown",value:e.value}}(e.description);i&&(n.value+=i.value)}if(e.references&&e.references.length>0&&(n.value+="\n\n",n.value+=t?e.references.map((function(e){return"["+e.name+"]("+e.url+")"})).join(" | "):e.references.map((function(e){return e.name+": "+e.url})).join("\n")),""!==n.value)return n}var it=function(e,t,n,i){return new(n||(n=Promise))((function(r,a){function o(e){try{l(i.next(e))}catch(e){a(e)}}function s(e){try{l(i.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,s)}l((i=i.apply(e,t||[])).next())}))},rt=function(e,t){var n,i,r,a,o={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,i=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!((r=(r=o.trys).length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]0&&r[r.length-1])||6!==a[0]&&2!==a[0])){o=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]d&&(t=d),{start:e.positionAt(t),end:e.positionAt(n)}}function b(e,t){var n=g(e,t);return l.forEach((function(e){e.provideTags().forEach((function(e){o.items.push({label:e.name,kind:P.Property,documentation:nt(e,c),textEdit:_.replace(n,e.name),insertTextFormat:O.PlainText})}))})),o}function w(e){for(var t=e;t>0;){var n=h.charAt(t-1);if("\n\r".indexOf(n)>=0)return h.substring(t,e);if(!dt(n))return null;t--}return h.substring(0,e)}function v(e,t,n){void 0===n&&(n=d);var i=g(e,n),r=ut(h,n,ge.WithinEndTag,fe.EndTagClose)?"":">",a=u;for(t&&(a=a.parent);a;){var s=a.tag;if(s&&(!a.closed||a.endTagStart&&a.endTagStart>d)){var p={label:"/"+s,kind:P.Property,filterText:"/"+s,textEdit:_.replace(i,"/"+s+r),insertTextFormat:O.PlainText},m=w(a.start),f=w(e-1);if(null!==m&&null!==f&&m!==f){var b=m+"",kind:P.Property,filterText:"",textEdit:_.insert(i,"$0"),insertTextFormat:O.Snippet})}return o}function T(e,t){return b(e,t),v(e,!0,t),o}function k(e,t){void 0===t&&(t=d);for(var i=d;in&&d<=i&&(m=h[n],/^["']*$/.test(m))){var b=n+1,w=i;i>n&&h[i-1]===h[n]&&w--;var v=function(e,t,n){for(;t>n&&!dt(e[t-1]);)t--;return t}(h,d,b),y=function(e,t,n){for(;t=b&&d<=w?h.substring(b,d):"",a=!1}else r=g(n,i),u=h.substring(n,d),a=!0;if(s.length>0)for(var T=f.toLowerCase(),k=p.toLowerCase(),S=g(n,i),x=0,M=s;x=0&&$e(h,a);)a--,s--;if(a>=0&&"&"===h[a]){var l=r.create(i.create(t.line,s-1),t);for(var c in Fe)if(";",void 0,(n=(e=c).length-";".length)>0?e.lastIndexOf(";")===n:0===n&&";"===e){var u="&"+c;o.items.push({label:u,kind:P.Keyword,documentation:ht("entity.propose","Character entity representing '"+Fe[c]+"'"),textEdit:_.replace(l,u),insertTextFormat:O.PlainText})}}return o}for(var E,A=m.scan();A!==fe.EOS&&m.getTokenOffset()<=d;){switch(A){case fe.StartTagOpen:if(m.getTokenEnd()===d){var z=x(fe.StartTag);return 0===t.line&&(void 0,E=g(d,z),o.items.push({label:"!DOCTYPE",kind:P.Property,documentation:"A preamble for an HTML document.",textEdit:_.replace(E,"!DOCTYPE html>"),insertTextFormat:O.PlainText})),T(d,z)}break;case fe.StartTag:if(m.getTokenOffset()<=d&&d<=m.getTokenEnd())return b(m.getTokenOffset(),m.getTokenEnd());f=m.getTokenText();break;case fe.AttributeName:if(m.getTokenOffset()<=d&&d<=m.getTokenEnd())return k(m.getTokenOffset(),m.getTokenEnd());p=m.getTokenText();break;case fe.DelimiterAssign:if(m.getTokenEnd()===d)return z=x(fe.AttributeValue),S(d,z);break;case fe.AttributeValue:if(m.getTokenOffset()<=d&&d<=m.getTokenEnd())return S(m.getTokenOffset(),m.getTokenEnd());break;case fe.Whitespace:if(d<=m.getTokenEnd())switch(m.getScannerState()){case ge.AfterOpeningStartTag:return T(m.getTokenOffset(),x(fe.StartTag));case ge.WithinTag:case ge.AfterAttributeName:return k(m.getTokenEnd());case ge.BeforeAttributeValue:return S(m.getTokenEnd());case ge.AfterOpeningEndTag:return v(m.getTokenOffset()-1,!1);case ge.WithinContent:return M()}break;case fe.EndTagOpen:if(d<=m.getTokenEnd())return v(m.getTokenOffset()+1,!1,x(fe.EndTag));break;case fe.EndTag:if(d<=m.getTokenEnd())for(var R=m.getTokenOffset()-1;R>=0;){var I=h.charAt(R);if("/"===I)return v(R,!1,m.getTokenEnd());if(!dt(I))break;R--}break;case fe.StartTagClose:if(d<=m.getTokenEnd()&&f)return y(m.getTokenEnd(),f);break;case fe.Content:if(d<=m.getTokenEnd())return M();break;default:if(d<=m.getTokenEnd())return o}A=m.scan()}return o},e.prototype.doTagComplete=function(e,t,n){var i=e.offsetAt(t);if(i<=0)return null;var r=e.getText().charAt(i-1);if(">"===r){if((o=n.findNodeBefore(i))&&o.tag&&!Qe(o.tag)&&o.starti))for(var a=(s=Ne(e.getText(),o.start)).scan();a!==fe.EOS&&s.getTokenEnd()<=i;){if(a===fe.StartTagClose&&s.getTokenEnd()===i)return"$0";a=s.scan()}}else if("/"===r){for(var o=n.findNodeBefore(i);o&&o.closed;)o=o.parent;var s;if(o&&o.tag)for(a=(s=Ne(e.getText(),o.start)).scan();a!==fe.EOS&&s.getTokenEnd()<=i;){if(a===fe.EndTagOpen&&s.getTokenEnd()===i)return o.tag+">";a=s.scan()}}return null},e.prototype.convertCompletionList=function(e){return this.doesSupportMarkdown()||e.items.forEach((function(e){e.documentation&&"string"!=typeof e.documentation&&(e.documentation={kind:"plaintext",value:e.documentation.value})})),e},e.prototype.doesSupportMarkdown=function(){var e,t,n;if(!et(this.supportsMarkdown)){if(!et(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var i=null===(n=null===(t=null===(e=this.lsOptions.clientCapabilities.textDocument)||void 0===e?void 0:e.completion)||void 0===t?void 0:t.completionItem)||void 0===n?void 0:n.documentationFormat;this.supportsMarkdown=Array.isArray(i)&&-1!==i.indexOf(W.Markdown)}return this.supportsMarkdown}}(),function(){function e(e,t){this.lsOptions=e,this.dataManager=t}e.prototype.doHover=function(e,t,n){var i=this.convertContents.bind(this),r=this.doesSupportMarkdown(),a=e.offsetAt(t),o=n.findNodeAt(a);if(!o||!o.tag)return null;var s=this.dataManager.getDataProviders().filter((function(t){return t.isApplicable(e.languageId)}));function l(e,t,n){for(var a=function(n){var a=null;if(n.provideTags().forEach((function(n){if(n.name.toLowerCase()===e.toLowerCase()){var i=nt(n,r);i||(i={kind:r?"markdown":"plaintext",value:""}),a={contents:i,range:t}}})),a)return a.contents=i(a.contents),{value:a}},o=0,l=s;o=o.endTagStart){var h=c(fe.EndTag,o.endTagStart);return h?l(o.tag,h):null}var d=c(fe.StartTag,o.start);if(d)return l(o.tag,d);var u=c(fe.AttributeName,o.start);if(u)return function(e,t,n){for(var a=function(a){var o=null;if(a.provideAttributes(e).forEach((function(e){if(t===e.name&&e.description){var i=nt(e,r);o=i?{contents:i,range:n}:null}})),o)return o.contents=i(o.contents),{value:o}},o=0,l=s;o0&&(t=new Array(e.indent_level+1).join(this.__indent_string)),this.__base_string=t,this.__base_string_length=t.length}function a(e,t){this.__indent_cache=new r(e,t),this.raw=!1,this._end_with_newline=e.end_with_newline,this.indent_size=e.indent_size,this.wrap_line_length=e.wrap_line_length,this.indent_empty_lines=e.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new i(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}i.prototype.clone_empty=function(){var e=new i(this.__parent);return e.set_indent(this.__indent_count,this.__alignment_count),e},i.prototype.item=function(e){return e<0?this.__items[this.__items.length+e]:this.__items[e]},i.prototype.has_match=function(e){for(var t=this.__items.length-1;t>=0;t--)if(this.__items[t].match(e))return!0;return!1},i.prototype.set_indent=function(e,t){this.is_empty()&&(this.__indent_count=e||0,this.__alignment_count=t||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},i.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},i.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},i.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var e=this.__parent.current_line;return e.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),e.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),e.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===e.__items[0]&&(e.__items.splice(0,1),e.__character_count-=1),!0}return!1},i.prototype.is_empty=function(){return 0===this.__items.length},i.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},i.prototype.push=function(e){this.__items.push(e);var t=e.lastIndexOf("\n");-1!==t?this.__character_count=e.length-t:this.__character_count+=e.length},i.prototype.pop=function(){var e=null;return this.is_empty()||(e=this.__items.pop(),this.__character_count-=e.length),e},i.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},i.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},i.prototype.trim=function(){for(;" "===this.last();)this.__items.pop(),this.__character_count-=1},i.prototype.toString=function(){var e="";return this.is_empty()?this.__parent.indent_empty_lines&&(e=this.__parent.get_indent_string(this.__indent_count)):(e=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),e+=this.__items.join("")),e},r.prototype.get_indent_size=function(e,t){var n=this.__base_string_length;return t=t||0,e<0&&(n=0),(n+=e*this.__indent_size)+t},r.prototype.get_indent_string=function(e,t){var n=this.__base_string;return t=t||0,e<0&&(e=0,n=""),t+=e*this.__indent_size,this.__ensure_cache(t),n+this.__cache[t]},r.prototype.__ensure_cache=function(e){for(;e>=this.__cache.length;)this.__add_column()},r.prototype.__add_column=function(){var e=this.__cache.length,t=0,n="";this.__indent_size&&e>=this.__indent_size&&(e-=(t=Math.floor(e/this.__indent_size))*this.__indent_size,n=new Array(t+1).join(this.__indent_string)),e&&(n+=new Array(e+1).join(" ")),this.__cache.push(n)},a.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},a.prototype.get_line_number=function(){return this.__lines.length},a.prototype.get_indent_string=function(e,t){return this.__indent_cache.get_indent_string(e,t)},a.prototype.get_indent_size=function(e,t){return this.__indent_cache.get_indent_size(e,t)},a.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},a.prototype.add_new_line=function(e){return!(this.is_empty()||!e&&this.just_added_newline()||(this.raw||this.__add_outputline(),0))},a.prototype.get_code=function(e){this.trim(!0);var t=this.current_line.pop();t&&("\n"===t[t.length-1]&&(t=t.replace(/\n+$/g,"")),this.current_line.push(t)),this._end_with_newline&&this.__add_outputline();var n=this.__lines.join("\n");return"\n"!==e&&(n=n.replace(/[\n]/g,e)),n},a.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},a.prototype.set_indent=function(e,t){return e=e||0,t=t||0,this.next_line.set_indent(e,t),this.__lines.length>1?(this.current_line.set_indent(e,t),!0):(this.current_line.set_indent(),!1)},a.prototype.add_raw_token=function(e){for(var t=0;t1&&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},a.prototype.just_added_newline=function(){return this.current_line.is_empty()},a.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},a.prototype.ensure_empty_line_above=function(e,t){for(var n=this.__lines.length-2;n>=0;){var r=this.__lines[n];if(r.is_empty())break;if(0!==r.item(0).indexOf(e)&&r.item(-1)!==t){this.__lines.splice(n+1,0,new i(this)),this.previous_line=this.__lines[this.__lines.length-2];break}n--}},e.exports.Output=a},,,,function(e,t,n){function i(e,t){this.raw_options=r(e,t),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","\t"===this.indent_char),this.indent_with_tabs&&(this.indent_char="\t",1===this.indent_size&&(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"],["auto"])}function r(e,t){var n,i={};for(n in e=a(e))n!==t&&(i[n]=e[n]);if(t&&e[t])for(n in e[t])i[n]=e[t][n];return i}function a(e){var t,n={};for(t in e)n[t.replace(/-/g,"_")]=e[t];return n}i.prototype._get_array=function(e,t){var n=this.raw_options[e],i=t||[];return"object"==typeof n?null!==n&&"function"==typeof n.concat&&(i=n.concat()):"string"==typeof n&&(i=n.split(/[^a-zA-Z0-9_\/\-]+/)),i},i.prototype._get_boolean=function(e,t){var n=this.raw_options[e];return void 0===n?!!t:!!n},i.prototype._get_characters=function(e,t){var n=this.raw_options[e],i=t||"";return"string"==typeof n&&(i=n.replace(/\\r/,"\r").replace(/\\n/,"\n").replace(/\\t/,"\t")),i},i.prototype._get_number=function(e,t){var n=this.raw_options[e];t=parseInt(t,10),isNaN(t)&&(t=0);var i=parseInt(n,10);return isNaN(i)&&(i=t),i},i.prototype._get_selection=function(e,t,n){var i=this._get_selection_list(e,t,n);if(1!==i.length)throw new Error("Invalid Option Value: The option '"+e+"' can only be one of the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i[0]},i.prototype._get_selection_list=function(e,t,n){if(!t||0===t.length)throw new Error("Selection list cannot be empty.");if(n=n||[t[0]],!this._is_valid_selection(n,t))throw new Error("Invalid Default Value!");var i=this._get_array(e,n);if(!this._is_valid_selection(i,t))throw new Error("Invalid Option Value: The option '"+e+"' can contain only the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i},i.prototype._is_valid_selection=function(e,t){return e.length&&t.length&&!e.some((function(e){return-1===t.indexOf(e)}))},e.exports.Options=i,e.exports.normalizeOpts=a,e.exports.mergeOpts=r},,function(e,t,n){var i=RegExp.prototype.hasOwnProperty("sticky");function r(e){this.__input=e||"",this.__input_length=this.__input.length,this.__position=0}r.prototype.restart=function(){this.__position=0},r.prototype.back=function(){this.__position>0&&(this.__position-=1)},r.prototype.hasNext=function(){return this.__position=0&&e=0&&t=e.length&&this.__input.substring(t-e.length,t).toLowerCase()===e},e.exports.InputScanner=r},,,,,function(e,t,n){function i(e,t){e="string"==typeof e?e:e.source,t="string"==typeof t?t:t.source,this.__directives_block_pattern=new RegExp(e+/ beautify( \w+[:]\w+)+ /.source+t,"g"),this.__directive_pattern=/ (\w+)[:](\w+)/g,this.__directives_end_ignore_pattern=new RegExp(e+/\sbeautify\signore:end\s/.source+t,"g")}i.prototype.get_directives=function(e){if(!e.match(this.__directives_block_pattern))return null;var t={};this.__directive_pattern.lastIndex=0;for(var n=this.__directive_pattern.exec(e);n;)t[n[1]]=n[2],n=this.__directive_pattern.exec(e);return t},i.prototype.readIgnored=function(e){return e.readUntilAfter(this.__directives_end_ignore_pattern)},e.exports.Directives=i},,function(e,t,n){var i=n(16).Beautifier,r=n(17).Options;e.exports=function(e,t){return new i(e,t).beautify()},e.exports.defaultOptions=function(){return new r}},function(e,t,n){var i=n(17).Options,r=n(2).Output,a=n(8).InputScanner,o=new(0,n(13).Directives)(/\/\*/,/\*\//),s=/\r\n|[\r\n]/,l=/\r\n|[\r\n]/g,c=/\s/,h=/(?:\s|\n)+/g,d=/\/\*(?:[\s\S]*?)((?:\*\/)|$)/g,u=/\/\/(?:[^\n\r\u2028\u2029]*)/g;function p(e,t){this._source_text=e||"",this._options=new i(t),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}}p.prototype.eatString=function(e){var t="";for(this._ch=this._input.next();this._ch;){if(t+=this._ch,"\\"===this._ch)t+=this._input.next();else if(-1!==e.indexOf(this._ch)||"\n"===this._ch)break;this._ch=this._input.next()}return t},p.prototype.eatWhitespace=function(e){for(var t=c.test(this._input.peek()),n=!0;c.test(this._input.peek());)this._ch=this._input.next(),e&&"\n"===this._ch&&(this._options.preserve_newlines||n)&&(n=!1,this._output.add_new_line(!0));return t},p.prototype.foundNestedPseudoClass=function(){for(var e=0,t=1,n=this._input.peek(t);n;){if("{"===n)return!0;if("("===n)e+=1;else if(")"===n){if(0===e)return!1;e-=1}else if(";"===n||"}"===n)return!1;t++,n=this._input.peek(t)}return!1},p.prototype.print_string=function(e){this._output.set_indent(this._indentLevel),this._output.non_breaking_space=!0,this._output.add_token(e)},p.prototype.preserveSingleSpace=function(e){e&&(this._output.space_before_token=!0)},p.prototype.indent=function(){this._indentLevel++},p.prototype.outdent=function(){this._indentLevel>0&&this._indentLevel--},p.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var e=this._source_text,t=this._options.eol;"auto"===t&&(t="\n",e&&s.test(e||"")&&(t=e.match(s)[0]));var n=(e=e.replace(l,"\n")).match(/^[\t ]*/)[0];this._output=new r(this._options,n),this._input=new a(e),this._indentLevel=0,this._nestedLevel=0,this._ch=null;for(var i,p,m=0,f=!1,g=!1,b=!1,_=!1,w=!1,v=this._ch;i=""!==this._input.read(h),p=v,this._ch=this._input.next(),"\\"===this._ch&&this._input.hasNext()&&(this._ch+=this._input.next()),v=this._ch,this._ch;)if("/"===this._ch&&"*"===this._input.peek()){this._output.add_new_line(),this._input.back();var y=this._input.read(d),T=o.get_directives(y);T&&"start"===T.ignore&&(y+=o.readIgnored(this._input)),this.print_string(y),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(u)),this.eatWhitespace(!0);else if("@"===this._ch)if(this.preserveSingleSpace(i),"{"===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),"extend"===(k=k.replace(/\s$/,""))?_=!0:"import"===k&&(w=!0),k in this.NESTED_AT_RULE?(this._nestedLevel+=1,k in this.CONDITIONAL_GROUP_RULE&&(b=!0)):f||0!==m||-1===k.indexOf(":")||(g=!0,this.indent())}else"#"===this._ch&&"{"===this._input.peek()?(this.preserveSingleSpace(i),this.print_string(this._ch+this.eatString("}"))):"{"===this._ch?(g&&(g=!1,this.outdent()),this.indent(),this._output.space_before_token=!0,this.print_string(this._ch),b?(b=!1,f=this._indentLevel>this._nestedLevel):f=this._indentLevel>=this._nestedLevel,this._options.newline_between_rules&&f&&this._output.previous_line&&"{"!==this._output.previous_line.item(-1)&&this._output.ensure_empty_line_above("/",","),this.eatWhitespace(!0),this._output.add_new_line()):"}"===this._ch?(this.outdent(),this._output.add_new_line(),"{"===p&&this._output.trim(!0),w=!1,_=!1,g&&(this.outdent(),g=!1),this.print_string(this._ch),f=!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?!f&&!b||this._input.lookBack("&")||this.foundNestedPseudoClass()||this._input.lookBack("(")||_||0!==m?(this._input.lookBack(" ")&&(this._output.space_before_token=!0),":"===this._input.peek()?(this._ch=this._input.next(),this.print_string("::")):this.print_string(":")):(this.print_string(":"),g||(g=!0,this._output.space_before_token=!0,this.eatWhitespace(!0),this.indent())):'"'===this._ch||"'"===this._ch?(this.preserveSingleSpace(i),this.print_string(this._ch+this.eatString(this._ch)),this.eatWhitespace(!0)):";"===this._ch?0===m?(g&&(this.outdent(),g=!1),_=!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(),m++,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(")")),m&&(m--,this.outdent()))):(this.preserveSingleSpace(i),this.print_string(this._ch),this.eatWhitespace(),m++,this.indent()):")"===this._ch?(m&&(m--,this.outdent()),this.print_string(this._ch)):","===this._ch?(this.print_string(this._ch),this.eatWhitespace(!0),!this._options.selector_separator_newline||g||0!==m||w?this._output.space_before_token=!0:this._output.add_new_line()):">"!==this._ch&&"+"!==this._ch&&"~"!==this._ch||g||0!==m?"]"===this._ch?this.print_string(this._ch):"["===this._ch?(this.preserveSingleSpace(i),this.print_string(this._ch)):"="===this._ch?(this.eatWhitespace(),this.print_string("="),c.test(this._ch)&&(this._ch="")):"!"!==this._ch||this._input.lookBack("\\")?(this.preserveSingleSpace(i),this.print_string(this._ch)):(this.print_string(" "),this.print_string(this._ch)):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&&c.test(this._ch)&&(this._ch=""));return this._output.get_code(t)},e.exports.Beautifier=p},function(e,t,n){var i=n(6).Options;function r(e){i.call(this,e,"css"),this.selector_separator_newline=this._get_boolean("selector_separator_newline",!0),this.newline_between_rules=this._get_boolean("newline_between_rules",!0);var t=this._get_boolean("space_around_selector_separator");this.space_around_combinator=this._get_boolean("space_around_combinator")||t}r.prototype=new i,e.exports.Options=r}]),function(e){var t={};function n(i){if(t[i])return t[i].exports;var r=t[i]={i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=18)}([,,function(e,t,n){function i(e){this.__parent=e,this.__character_count=0,this.__indent_count=-1,this.__alignment_count=0,this.__wrap_point_index=0,this.__wrap_point_character_count=0,this.__wrap_point_indent_count=-1,this.__wrap_point_alignment_count=0,this.__items=[]}function r(e,t){this.__cache=[""],this.__indent_size=e.indent_size,this.__indent_string=e.indent_char,e.indent_with_tabs||(this.__indent_string=new Array(e.indent_size+1).join(e.indent_char)),t=t||"",e.indent_level>0&&(t=new Array(e.indent_level+1).join(this.__indent_string)),this.__base_string=t,this.__base_string_length=t.length}function a(e,t){this.__indent_cache=new r(e,t),this.raw=!1,this._end_with_newline=e.end_with_newline,this.indent_size=e.indent_size,this.wrap_line_length=e.wrap_line_length,this.indent_empty_lines=e.indent_empty_lines,this.__lines=[],this.previous_line=null,this.current_line=null,this.next_line=new i(this),this.space_before_token=!1,this.non_breaking_space=!1,this.previous_token_wrapped=!1,this.__add_outputline()}i.prototype.clone_empty=function(){var e=new i(this.__parent);return e.set_indent(this.__indent_count,this.__alignment_count),e},i.prototype.item=function(e){return e<0?this.__items[this.__items.length+e]:this.__items[e]},i.prototype.has_match=function(e){for(var t=this.__items.length-1;t>=0;t--)if(this.__items[t].match(e))return!0;return!1},i.prototype.set_indent=function(e,t){this.is_empty()&&(this.__indent_count=e||0,this.__alignment_count=t||0,this.__character_count=this.__parent.get_indent_size(this.__indent_count,this.__alignment_count))},i.prototype._set_wrap_point=function(){this.__parent.wrap_line_length&&(this.__wrap_point_index=this.__items.length,this.__wrap_point_character_count=this.__character_count,this.__wrap_point_indent_count=this.__parent.next_line.__indent_count,this.__wrap_point_alignment_count=this.__parent.next_line.__alignment_count)},i.prototype._should_wrap=function(){return this.__wrap_point_index&&this.__character_count>this.__parent.wrap_line_length&&this.__wrap_point_character_count>this.__parent.next_line.__character_count},i.prototype._allow_wrap=function(){if(this._should_wrap()){this.__parent.add_new_line();var e=this.__parent.current_line;return e.set_indent(this.__wrap_point_indent_count,this.__wrap_point_alignment_count),e.__items=this.__items.slice(this.__wrap_point_index),this.__items=this.__items.slice(0,this.__wrap_point_index),e.__character_count+=this.__character_count-this.__wrap_point_character_count,this.__character_count=this.__wrap_point_character_count," "===e.__items[0]&&(e.__items.splice(0,1),e.__character_count-=1),!0}return!1},i.prototype.is_empty=function(){return 0===this.__items.length},i.prototype.last=function(){return this.is_empty()?null:this.__items[this.__items.length-1]},i.prototype.push=function(e){this.__items.push(e);var t=e.lastIndexOf("\n");-1!==t?this.__character_count=e.length-t:this.__character_count+=e.length},i.prototype.pop=function(){var e=null;return this.is_empty()||(e=this.__items.pop(),this.__character_count-=e.length),e},i.prototype._remove_indent=function(){this.__indent_count>0&&(this.__indent_count-=1,this.__character_count-=this.__parent.indent_size)},i.prototype._remove_wrap_indent=function(){this.__wrap_point_indent_count>0&&(this.__wrap_point_indent_count-=1)},i.prototype.trim=function(){for(;" "===this.last();)this.__items.pop(),this.__character_count-=1},i.prototype.toString=function(){var e="";return this.is_empty()?this.__parent.indent_empty_lines&&(e=this.__parent.get_indent_string(this.__indent_count)):(e=this.__parent.get_indent_string(this.__indent_count,this.__alignment_count),e+=this.__items.join("")),e},r.prototype.get_indent_size=function(e,t){var n=this.__base_string_length;return t=t||0,e<0&&(n=0),(n+=e*this.__indent_size)+t},r.prototype.get_indent_string=function(e,t){var n=this.__base_string;return t=t||0,e<0&&(e=0,n=""),t+=e*this.__indent_size,this.__ensure_cache(t),n+this.__cache[t]},r.prototype.__ensure_cache=function(e){for(;e>=this.__cache.length;)this.__add_column()},r.prototype.__add_column=function(){var e=this.__cache.length,t=0,n="";this.__indent_size&&e>=this.__indent_size&&(e-=(t=Math.floor(e/this.__indent_size))*this.__indent_size,n=new Array(t+1).join(this.__indent_string)),e&&(n+=new Array(e+1).join(" ")),this.__cache.push(n)},a.prototype.__add_outputline=function(){this.previous_line=this.current_line,this.current_line=this.next_line.clone_empty(),this.__lines.push(this.current_line)},a.prototype.get_line_number=function(){return this.__lines.length},a.prototype.get_indent_string=function(e,t){return this.__indent_cache.get_indent_string(e,t)},a.prototype.get_indent_size=function(e,t){return this.__indent_cache.get_indent_size(e,t)},a.prototype.is_empty=function(){return!this.previous_line&&this.current_line.is_empty()},a.prototype.add_new_line=function(e){return!(this.is_empty()||!e&&this.just_added_newline()||(this.raw||this.__add_outputline(),0))},a.prototype.get_code=function(e){this.trim(!0);var t=this.current_line.pop();t&&("\n"===t[t.length-1]&&(t=t.replace(/\n+$/g,"")),this.current_line.push(t)),this._end_with_newline&&this.__add_outputline();var n=this.__lines.join("\n");return"\n"!==e&&(n=n.replace(/[\n]/g,e)),n},a.prototype.set_wrap_point=function(){this.current_line._set_wrap_point()},a.prototype.set_indent=function(e,t){return e=e||0,t=t||0,this.next_line.set_indent(e,t),this.__lines.length>1?(this.current_line.set_indent(e,t),!0):(this.current_line.set_indent(),!1)},a.prototype.add_raw_token=function(e){for(var t=0;t1&&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},a.prototype.just_added_newline=function(){return this.current_line.is_empty()},a.prototype.just_added_blankline=function(){return this.is_empty()||this.current_line.is_empty()&&this.previous_line.is_empty()},a.prototype.ensure_empty_line_above=function(e,t){for(var n=this.__lines.length-2;n>=0;){var r=this.__lines[n];if(r.is_empty())break;if(0!==r.item(0).indexOf(e)&&r.item(-1)!==t){this.__lines.splice(n+1,0,new i(this)),this.previous_line=this.__lines[this.__lines.length-2];break}n--}},e.exports.Output=a},function(e,t,n){e.exports.Token=function(e,t,n,i){this.type=e,this.text=t,this.comments_before=null,this.newlines=n||0,this.whitespace_before=i||"",this.parent=null,this.next=null,this.previous=null,this.opened=null,this.closed=null,this.directives=null}},,,function(e,t,n){function i(e,t){this.raw_options=r(e,t),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","\t"===this.indent_char),this.indent_with_tabs&&(this.indent_char="\t",1===this.indent_size&&(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"],["auto"])}function r(e,t){var n,i={};for(n in e=a(e))n!==t&&(i[n]=e[n]);if(t&&e[t])for(n in e[t])i[n]=e[t][n];return i}function a(e){var t,n={};for(t in e)n[t.replace(/-/g,"_")]=e[t];return n}i.prototype._get_array=function(e,t){var n=this.raw_options[e],i=t||[];return"object"==typeof n?null!==n&&"function"==typeof n.concat&&(i=n.concat()):"string"==typeof n&&(i=n.split(/[^a-zA-Z0-9_\/\-]+/)),i},i.prototype._get_boolean=function(e,t){var n=this.raw_options[e];return void 0===n?!!t:!!n},i.prototype._get_characters=function(e,t){var n=this.raw_options[e],i=t||"";return"string"==typeof n&&(i=n.replace(/\\r/,"\r").replace(/\\n/,"\n").replace(/\\t/,"\t")),i},i.prototype._get_number=function(e,t){var n=this.raw_options[e];t=parseInt(t,10),isNaN(t)&&(t=0);var i=parseInt(n,10);return isNaN(i)&&(i=t),i},i.prototype._get_selection=function(e,t,n){var i=this._get_selection_list(e,t,n);if(1!==i.length)throw new Error("Invalid Option Value: The option '"+e+"' can only be one of the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i[0]},i.prototype._get_selection_list=function(e,t,n){if(!t||0===t.length)throw new Error("Selection list cannot be empty.");if(n=n||[t[0]],!this._is_valid_selection(n,t))throw new Error("Invalid Default Value!");var i=this._get_array(e,n);if(!this._is_valid_selection(i,t))throw new Error("Invalid Option Value: The option '"+e+"' can contain only the following values:\n"+t+"\nYou passed in: '"+this.raw_options[e]+"'");return i},i.prototype._is_valid_selection=function(e,t){return e.length&&t.length&&!e.some((function(e){return-1===t.indexOf(e)}))},e.exports.Options=i,e.exports.normalizeOpts=a,e.exports.mergeOpts=r},,function(e,t,n){var i=RegExp.prototype.hasOwnProperty("sticky");function r(e){this.__input=e||"",this.__input_length=this.__input.length,this.__position=0}r.prototype.restart=function(){this.__position=0},r.prototype.back=function(){this.__position>0&&(this.__position-=1)},r.prototype.hasNext=function(){return this.__position=0&&e=0&&t=e.length&&this.__input.substring(t-e.length,t).toLowerCase()===e},e.exports.InputScanner=r},function(e,t,n){var i=n(8).InputScanner,r=n(3).Token,a=n(10).TokenStream,o=n(11).WhitespacePattern,s={START:"TK_START",RAW:"TK_RAW",EOF:"TK_EOF"},l=function(e,t){this._input=new i(e),this._options=t||{},this.__tokens=null,this._patterns={},this._patterns.whitespace=new o(this._input)};l.prototype.tokenize=function(){var e;this._input.restart(),this.__tokens=new a,this._reset();for(var t=new r(s.START,""),n=null,i=[],o=new a;t.type!==s.EOF;){for(e=this._get_next_token(t,n);this._is_comment(e);)o.add(e),e=this._get_next_token(t,n);o.isEmpty()||(e.comments_before=o,o=new a),e.parent=n,this._is_opening(e)?(i.push(n),n=e):n&&this._is_closing(e,n)&&(e.opened=n,n.closed=e,n=i.pop(),e.parent=n),e.previous=t,t.next=e,this.__tokens.add(e),t=e}return this.__tokens},l.prototype._is_first_token=function(){return this.__tokens.isEmpty()},l.prototype._reset=function(){},l.prototype._get_next_token=function(e,t){this._readWhitespace();var n=this._input.read(/.+/g);return n?this._create_token(s.RAW,n):this._create_token(s.EOF,"")},l.prototype._is_comment=function(e){return!1},l.prototype._is_opening=function(e){return!1},l.prototype._is_closing=function(e,t){return!1},l.prototype._create_token=function(e,t){return new r(e,t,this._patterns.whitespace.newline_count,this._patterns.whitespace.whitespace_before_token)},l.prototype._readWhitespace=function(){return this._patterns.whitespace.read()},e.exports.Tokenizer=l,e.exports.TOKEN=s},function(e,t,n){function i(e){this.__tokens=[],this.__tokens_length=this.__tokens.length,this.__position=0,this.__parent_token=e}i.prototype.restart=function(){this.__position=0},i.prototype.isEmpty=function(){return 0===this.__tokens_length},i.prototype.hasNext=function(){return this.__position=0&&e/),erb:n.starting_with(/<%[^%]/).until_after(/[^%]%>/),django:n.starting_with(/{%/).until_after(/%}/),django_value:n.starting_with(/{{/).until_after(/}}/),django_comment:n.starting_with(/{#/).until_after(/#}/)}}a.prototype=new i,a.prototype._create=function(){return new a(this._input,this)},a.prototype._update=function(){this.__set_templated_pattern()},a.prototype.disable=function(e){var t=this._create();return t._disabled[e]=!0,t._update(),t},a.prototype.read_options=function(e){var t=this._create();for(var n in r)t._disabled[n]=-1===e.templating.indexOf(n);return t._update(),t},a.prototype.exclude=function(e){var t=this._create();return t._excluded[e]=!0,t._update(),t},a.prototype.read=function(){var e="";e=this._match_pattern?this._input.read(this._starting_pattern):this._input.read(this._starting_pattern,this.__template_pattern);for(var t=this._read_template();t;)this._match_pattern?t+=this._input.read(this._match_pattern):t+=this._input.readUntil(this.__template_pattern),e+=t,t=this._read_template();return this._until_after&&(e+=this._input.readUntilAfter(this._until_pattern)),e},a.prototype.__set_templated_pattern=function(){var e=[];this._disabled.php||e.push(this.__patterns.php._starting_pattern.source),this._disabled.handlebars||e.push(this.__patterns.handlebars._starting_pattern.source),this._disabled.erb||e.push(this.__patterns.erb._starting_pattern.source),this._disabled.django||(e.push(this.__patterns.django._starting_pattern.source),e.push(this.__patterns.django_value._starting_pattern.source),e.push(this.__patterns.django_comment._starting_pattern.source)),this._until_pattern&&e.push(this._until_pattern.source),this.__template_pattern=this._input.get_regexp("(?:"+e.join("|")+")")},a.prototype._read_template=function(){var e="",t=this._input.peek();if("<"===t){var n=this._input.peek(1);this._disabled.php||this._excluded.php||"?"!==n||(e=e||this.__patterns.php.read()),this._disabled.erb||this._excluded.erb||"%"!==n||(e=e||this.__patterns.erb.read())}else"{"===t&&(this._disabled.handlebars||this._excluded.handlebars||(e=(e=(e=e||this.__patterns.handlebars_comment.read())||this.__patterns.handlebars_unescaped.read())||this.__patterns.handlebars.read()),this._disabled.django||(this._excluded.django||this._excluded.handlebars||(e=e||this.__patterns.django_value.read()),this._excluded.django||(e=(e=e||this.__patterns.django_comment.read())||this.__patterns.django.read())));return e},e.exports.TemplatablePattern=a},,,,function(e,t,n){var i=n(19).Beautifier,r=n(20).Options;e.exports=function(e,t,n,r){return new i(e,t,n,r).beautify()},e.exports.defaultOptions=function(){return new r}},function(e,t,n){var i=n(20).Options,r=n(2).Output,a=n(21).Tokenizer,o=n(21).TOKEN,s=/\r\n|[\r\n]/,l=/\r\n|[\r\n]/g,c=function(e,t){this.indent_level=0,this.alignment_size=0,this.max_preserve_newlines=e.max_preserve_newlines,this.preserve_newlines=e.preserve_newlines,this._output=new r(e,t)};c.prototype.current_line_has_match=function(e){return this._output.current_line.has_match(e)},c.prototype.set_space_before_token=function(e,t){this._output.space_before_token=e,this._output.non_breaking_space=t},c.prototype.set_wrap_point=function(){this._output.set_indent(this.indent_level,this.alignment_size),this._output.set_wrap_point()},c.prototype.add_raw_token=function(e){this._output.add_raw_token(e)},c.prototype.print_preserved_newlines=function(e){var t=0;e.type!==o.TEXT&&e.previous.type!==o.TEXT&&(t=e.newlines?1:0),this.preserve_newlines&&(t=e.newlines0);return 0!==t},c.prototype.traverse_whitespace=function(e){return!(!e.whitespace_before&&!e.newlines||(this.print_preserved_newlines(e)||(this._output.space_before_token=!0),0))},c.prototype.previous_token_wrapped=function(){return this._output.previous_token_wrapped},c.prototype.print_newline=function(e){this._output.add_new_line(e)},c.prototype.print_token=function(e){e.text&&(this._output.set_indent(this.indent_level,this.alignment_size),this._output.add_token(e.text))},c.prototype.indent=function(){this.indent_level++},c.prototype.get_full_indent=function(e){return(e=this.indent_level+(e||0))<1?"":this._output.get_indent_string(e)};function h(e,t){return-1!==t.indexOf(e)}function d(e,t,n){this.parent=e||null,this.tag=t?t.tag_name:"",this.indent_level=n||0,this.parser_token=t||null}function u(e){this._printer=e,this._current_frame=null}function p(e,t,n,r){this._source_text=e||"",t=t||{},this._js_beautify=n,this._css_beautify=r,this._tag_stack=null;var a=new i(t,"html");this._options=a,this._is_wrap_attributes_force="force"===this._options.wrap_attributes.substr(0,"force".length),this._is_wrap_attributes_force_expand_multiline="force-expand-multiline"===this._options.wrap_attributes,this._is_wrap_attributes_force_aligned="force-aligned"===this._options.wrap_attributes,this._is_wrap_attributes_aligned_multiple="aligned-multiple"===this._options.wrap_attributes,this._is_wrap_attributes_preserve="preserve"===this._options.wrap_attributes.substr(0,"preserve".length),this._is_wrap_attributes_preserve_aligned="preserve-aligned"===this._options.wrap_attributes}u.prototype.get_parser_token=function(){return this._current_frame?this._current_frame.parser_token:null},u.prototype.record_tag=function(e){var t=new d(this._current_frame,e,this._printer.indent_level);this._current_frame=t},u.prototype._try_pop_frame=function(e){var t=null;return e&&(t=e.parser_token,this._printer.indent_level=e.indent_level,this._current_frame=e.parent),t},u.prototype._get_frame=function(e,t){for(var n=this._current_frame;n&&-1===e.indexOf(n.tag);){if(t&&-1!==t.indexOf(n.tag)){n=null;break}n=n.parent}return n},u.prototype.try_pop=function(e,t){var n=this._get_frame([e],t);return this._try_pop_frame(n)},u.prototype.indent_to_tag=function(e){var t=this._get_frame(e);t&&(this._printer.indent_level=t.indent_level)},p.prototype.beautify=function(){if(this._options.disabled)return this._source_text;var e=this._source_text,t=this._options.eol;"auto"===this._options.eol&&(t="\n",e&&s.test(e)&&(t=e.match(s)[0]));var n=(e=e.replace(l,"\n")).match(/^[\t ]*/)[0],i={text:"",type:""},r=new m,h=new c(this._options,n),d=new a(e,this._options).tokenize();this._tag_stack=new u(h);for(var p=null,f=d.next();f.type!==o.EOF;)f.type===o.TAG_OPEN||f.type===o.COMMENT?r=p=this._handle_tag_open(h,f,r,i):f.type===o.ATTRIBUTE||f.type===o.EQUALS||f.type===o.VALUE||f.type===o.TEXT&&!r.tag_complete?p=this._handle_inside_tag(h,f,r,d):f.type===o.TAG_CLOSE?p=this._handle_tag_close(h,f,r):f.type===o.TEXT?p=this._handle_text(h,f,r):h.add_raw_token(f),i=p,f=d.next();return h._output.get_code(t)},p.prototype._handle_tag_close=function(e,t,n){var i={text:t.text,type:t.type};return e.alignment_size=0,n.tag_complete=!0,e.set_space_before_token(t.newlines||""!==t.whitespace_before,!0),n.is_unformatted?e.add_raw_token(t):("<"===n.tag_start_char&&(e.set_space_before_token("/"===t.text[0],!0),this._is_wrap_attributes_force_expand_multiline&&n.has_wrapped_attrs&&e.print_newline(!1)),e.print_token(t)),!n.indent_content||n.is_unformatted||n.is_content_unformatted||(e.indent(),n.indent_content=!1),n.is_inline_element||n.is_unformatted||n.is_content_unformatted||e.set_wrap_point(),i},p.prototype._handle_inside_tag=function(e,t,n,i){var r=n.has_wrapped_attrs,a={text:t.text,type:t.type};if(e.set_space_before_token(t.newlines||""!==t.whitespace_before,!0),n.is_unformatted)e.add_raw_token(t);else if("{"===n.tag_start_char&&t.type===o.TEXT)e.print_preserved_newlines(t)?(t.newlines=0,e.add_raw_token(t)):e.print_token(t);else{if(t.type===o.ATTRIBUTE?(e.set_space_before_token(!0),n.attr_count+=1):(t.type===o.EQUALS||t.type===o.VALUE&&t.previous.type===o.EQUALS)&&e.set_space_before_token(!1),t.type===o.ATTRIBUTE&&"<"===n.tag_start_char&&((this._is_wrap_attributes_preserve||this._is_wrap_attributes_preserve_aligned)&&(e.traverse_whitespace(t),r=r||0!==t.newlines),this._is_wrap_attributes_force)){var s=n.attr_count>1;if(this._is_wrap_attributes_force_expand_multiline&&1===n.attr_count){var l,c=!0,h=0;do{if((l=i.peek(h)).type===o.ATTRIBUTE){c=!1;break}h+=1}while(h<4&&l.type!==o.EOF&&l.type!==o.TAG_CLOSE);s=!c}s&&(e.print_newline(!1),r=!0)}e.print_token(t),r=r||e.previous_token_wrapped(),n.has_wrapped_attrs=r}return a},p.prototype._handle_text=function(e,t,n){var i={text:t.text,type:"TK_CONTENT"};return n.custom_beautifier_name?this._print_custom_beatifier_text(e,t,n):n.is_unformatted||n.is_content_unformatted?e.add_raw_token(t):(e.traverse_whitespace(t),e.print_token(t)),i},p.prototype._print_custom_beatifier_text=function(e,t,n){var i=this;if(""!==t.text){var r,a=t.text,o=1,s="",l="";"javascript"===n.custom_beautifier_name&&"function"==typeof this._js_beautify?r=this._js_beautify:"css"===n.custom_beautifier_name&&"function"==typeof this._css_beautify?r=this._css_beautify:"html"===n.custom_beautifier_name&&(r=function(e,t){return new p(e,t,i._js_beautify,i._css_beautify).beautify()}),"keep"===this._options.indent_scripts?o=0:"separate"===this._options.indent_scripts&&(o=-e.indent_level);var c=e.get_full_indent(o);if(a=a.replace(/\n[ \t]*$/,""),"html"!==n.custom_beautifier_name&&"<"===a[0]&&a.match(/^(|]]>)$/.exec(a);if(!h)return void e.add_raw_token(t);s=c+h[1]+"\n",a=h[4],h[5]&&(l=c+h[5]),a=a.replace(/\n[ \t]*$/,""),(h[2]||-1!==h[3].indexOf("\n"))&&(h=h[3].match(/[ \t]+$/))&&(t.whitespace_before=h[0])}if(a)if(r){var d=function(){this.eol="\n"};d.prototype=this._options.raw_options,a=r(c+a,new d)}else{var u=t.whitespace_before;u&&(a=a.replace(new RegExp("\n("+u+")?","g"),"\n")),a=c+a.replace(/\n/g,"\n"+c)}s&&(a=a?s+a+"\n"+l:s+l),e.print_newline(!1),a&&(t.text=a,t.whitespace_before="",t.newlines=0,e.add_raw_token(t),e.print_newline(!0))}},p.prototype._handle_tag_open=function(e,t,n,i){var r=this._get_tag_open_token(t);return(n.is_unformatted||n.is_content_unformatted)&&t.type===o.TAG_OPEN&&0===t.text.indexOf("]*)/),this.tag_check=n?n[1]:""):(n=t.text.match(/^{{(?:[\^]|#\*?)?([^\s}]+)/),this.tag_check=n?n[1]:"","{{#>"===t.text&&">"===this.tag_check&&null!==t.next&&(this.tag_check=t.next.text)),this.tag_check=this.tag_check.toLowerCase(),t.type===o.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||t.closed&&"/>"===t.closed.text,this.is_end_tag=this.is_end_tag||"{"===this.tag_start_char&&(this.text.length<3||/[^#\^]/.test(this.text.charAt(2)))):this.tag_complete=!0};p.prototype._get_tag_open_token=function(e){var t=new m(this._tag_stack.get_parser_token(),e);return t.alignment_size=this._options.wrap_attributes_indent_size,t.is_end_tag=t.is_end_tag||h(t.tag_check,this._options.void_elements),t.is_empty_element=t.tag_complete||t.is_start_tag&&t.is_end_tag,t.is_unformatted=!t.tag_complete&&h(t.tag_check,this._options.unformatted),t.is_content_unformatted=!t.is_empty_element&&h(t.tag_check,this._options.content_unformatted),t.is_inline_element=h(t.tag_name,this._options.inline)||"{"===t.tag_start_char,t},p.prototype._set_tag_position=function(e,t,n,i,r){n.is_empty_element||(n.is_end_tag?n.start_tag_token=this._tag_stack.try_pop(n.tag_name):(this._do_optional_end_element(n)&&(n.is_inline_element||(n.parent&&(n.parent.multiline_content=!0),e.print_newline(!1))),this._tag_stack.record_tag(n),"script"!==n.tag_name&&"style"!==n.tag_name||n.is_unformatted||n.is_content_unformatted||(n.custom_beautifier_name=function(e,t){var n=null,i=null;return t.closed?("script"===e?n="text/javascript":"style"===e&&(n="text/css"),(n=function(e){for(var t=null,n=e.next;n.type!==o.EOF&&e.closed!==n;){if(n.type===o.ATTRIBUTE&&"type"===n.text){n.next&&n.next.type===o.EQUALS&&n.next.next&&n.next.next.type===o.VALUE&&(t=n.next.next.text);break}n=n.next}return t}(t)||n).search("text/css")>-1?i="css":n.search(/module|((text|application|dojo)\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\+)?json|method|aspect))/)>-1?i="javascript":n.search(/(text|application|dojo)\/(x-)?(html)/)>-1?i="html":n.search(/test\/null/)>-1&&(i="null"),i):null}(n.tag_check,t)))),h(n.tag_check,this._options.extra_liners)&&(e.print_newline(!1),e._output.just_added_blankline()||e.print_newline(!0)),n.is_empty_element?("{"===n.tag_start_char&&"else"===n.tag_check&&(this._tag_stack.indent_to_tag(["if","unless","each"]),n.indent_content=!0,e.current_line_has_match(/{{#if/)||e.print_newline(!1)),"!--"===n.tag_name&&r.type===o.TAG_CLOSE&&i.is_end_tag&&-1===n.text.indexOf("\n")||n.is_inline_element||n.is_unformatted||e.print_newline(!1)):n.is_unformatted||n.is_content_unformatted?n.is_inline_element||n.is_unformatted||e.print_newline(!1):n.is_end_tag?(n.start_tag_token&&n.start_tag_token.multiline_content||!(n.is_inline_element||i.is_inline_element||r.type===o.TAG_CLOSE&&n.start_tag_token===i||"TK_CONTENT"===r.type))&&e.print_newline(!1):(n.indent_content=!n.custom_beautifier_name,"<"===n.tag_start_char&&("html"===n.tag_name?n.indent_content=this._options.indent_inner_html:"head"===n.tag_name?n.indent_content=this._options.indent_head_inner_html:"body"===n.tag_name&&(n.indent_content=this._options.indent_body_inner_html)),n.is_inline_element||"TK_CONTENT"===r.type||(n.parent&&(n.parent.multiline_content=!0),e.print_newline(!1)))};var f=["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"],g=["a","audio","del","ins","map","noscript","video"];p.prototype._do_optional_end_element=function(e){var t=null;if(!e.is_empty_element&&e.is_start_tag&&e.parent){if("body"===e.tag_name)t=t||this._tag_stack.try_pop("head");else if("li"===e.tag_name)t=t||this._tag_stack.try_pop("li",["ol","ul"]);else if("dd"===e.tag_name||"dt"===e.tag_name)t=(t=t||this._tag_stack.try_pop("dt",["dl"]))||this._tag_stack.try_pop("dd",["dl"]);else if("p"===e.parent.tag_name&&-1!==f.indexOf(e.tag_name)){var n=e.parent.parent;n&&-1!==g.indexOf(n.tag_name)||(t=t||this._tag_stack.try_pop("p"))}else"rp"===e.tag_name||"rt"===e.tag_name?t=(t=t||this._tag_stack.try_pop("rt",["ruby","rtc"]))||this._tag_stack.try_pop("rp",["ruby","rtc"]):"optgroup"===e.tag_name?t=t||this._tag_stack.try_pop("optgroup",["select"]):"option"===e.tag_name?t=t||this._tag_stack.try_pop("option",["select","datalist","optgroup"]):"colgroup"===e.tag_name?t=t||this._tag_stack.try_pop("caption",["table"]):"thead"===e.tag_name?t=(t=t||this._tag_stack.try_pop("caption",["table"]))||this._tag_stack.try_pop("colgroup",["table"]):"tbody"===e.tag_name||"tfoot"===e.tag_name?t=(t=(t=(t=t||this._tag_stack.try_pop("caption",["table"]))||this._tag_stack.try_pop("colgroup",["table"]))||this._tag_stack.try_pop("thead",["table"]))||this._tag_stack.try_pop("tbody",["table"]):"tr"===e.tag_name?t=(t=(t=t||this._tag_stack.try_pop("caption",["table"]))||this._tag_stack.try_pop("colgroup",["table"]))||this._tag_stack.try_pop("tr",["table","thead","tbody","tfoot"]):"th"!==e.tag_name&&"td"!==e.tag_name||(t=(t=t||this._tag_stack.try_pop("td",["table","thead","tbody","tfoot","tr"]))||this._tag_stack.try_pop("th",["table","thead","tbody","tfoot","tr"]));return e.parent=this._tag_stack.get_parser_token(),t}},e.exports.Beautifier=p},function(e,t,n){var i=n(6).Options;function r(e){i.call(this,e,"html"),1===this.templating.length&&"auto"===this.templating[0]&&(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","math","meter","noscript","object","output","progress","q","ruby","s","samp","select","small","span","strong","sub","sup","svg","template","textarea","time","u","var","video","wbr","text","acronym","big","strike","tt"]),this.void_elements=this._get_array("void_elements",["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr","!doctype","?xml","basefont","isindex"]),this.unformatted=this._get_array("unformatted",[]),this.content_unformatted=this._get_array("content_unformatted",["pre","textarea"]),this.unformatted_content_delimiter=this._get_characters("unformatted_content_delimiter"),this.indent_scripts=this._get_selection("indent_scripts",["normal","keep","separate"])}r.prototype=new i,e.exports.Options=r},function(e,t,n){var i=n(9).Tokenizer,r=n(9).TOKEN,a=n(13).Directives,o=n(14).TemplatablePattern,s=n(12).Pattern,l={TAG_OPEN:"TK_TAG_OPEN",TAG_CLOSE:"TK_TAG_CLOSE",ATTRIBUTE:"TK_ATTRIBUTE",EQUALS:"TK_EQUALS",VALUE:"TK_VALUE",COMMENT:"TK_COMMENT",TEXT:"TK_TEXT",UNKNOWN:"TK_UNKNOWN",START:r.START,RAW:r.RAW,EOF:r.EOF},c=new a(/<\!--/,/-->/),h=function(e,t){i.call(this,e,t),this._current_tag_name="";var n=new o(this._input).read_options(this._options),r=new s(this._input);if(this.__patterns={word:n.until(/[\n\r\t <]/),single_quote:n.until_after(/'/),double_quote:n.until_after(/"/),attribute:n.until(/[\n\r\t =>]|\/>/),element_name:n.until(/[\n\r\t >\/]/),handlebars_comment:r.starting_with(/{{!--/).until_after(/--}}/),handlebars:r.starting_with(/{{/).until_after(/}}/),handlebars_open:r.until(/[\n\r\t }]/),handlebars_raw_close:r.until(/}}/),comment:r.starting_with(//),cdata:r.starting_with(//),conditional_comment:r.starting_with(//),processing:r.starting_with(/<\?/).until_after(/\?>/)},this._options.indent_handlebars&&(this.__patterns.word=this.__patterns.word.exclude("handlebars")),this._unformatted_content_delimiter=null,this._options.unformatted_content_delimiter){var a=this._input.get_literal_regexp(this._options.unformatted_content_delimiter);this.__patterns.unformatted_content_delimiter=r.matching(a).until_after(a)}};(h.prototype=new i)._is_comment=function(e){return!1},h.prototype._is_opening=function(e){return e.type===l.TAG_OPEN},h.prototype._is_closing=function(e,t){return e.type===l.TAG_CLOSE&&t&&((">"===e.text||"/>"===e.text)&&"<"===t.text[0]||"}}"===e.text&&"{"===t.text[0]&&"{"===t.text[1])},h.prototype._reset=function(){this._current_tag_name=""},h.prototype._get_next_token=function(e,t){var n=null;this._readWhitespace();var i=this._input.peek();return null===i?this._create_token(l.EOF,""):n=(n=(n=(n=(n=(n=(n=(n=(n=n||this._read_open_handlebars(i,t))||this._read_attribute(i,e,t))||this._read_raw_content(i,e,t))||this._read_close(i,t))||this._read_content_word(i))||this._read_comment_or_cdata(i))||this._read_processing(i))||this._read_open(i,t))||this._create_token(l.UNKNOWN,this._input.next())},h.prototype._read_comment_or_cdata=function(e){var t=null,n=null,i=null;return"<"===e&&("!"===this._input.peek(1)&&((n=this.__patterns.comment.read())?(i=c.get_directives(n))&&"start"===i.ignore&&(n+=c.readIgnored(this._input)):n=this.__patterns.cdata.read()),n&&((t=this._create_token(l.COMMENT,n)).directives=i)),t},h.prototype._read_processing=function(e){var t=null,n=null;if("<"===e){var i=this._input.peek(1);"!"!==i&&"?"!==i||(n=(n=this.__patterns.conditional_comment.read())||this.__patterns.processing.read()),n&&((t=this._create_token(l.COMMENT,n)).directives=null)}return t},h.prototype._read_open=function(e,t){var n=null,i=null;return t||"<"===e&&(n=this._input.next(),"/"===this._input.peek()&&(n+=this._input.next()),n+=this.__patterns.element_name.read(),i=this._create_token(l.TAG_OPEN,n)),i},h.prototype._read_open_handlebars=function(e,t){var n=null,i=null;return t||this._options.indent_handlebars&&"{"===e&&"{"===this._input.peek(1)&&("!"===this._input.peek(2)?(n=(n=this.__patterns.handlebars_comment.read())||this.__patterns.handlebars.read(),i=this._create_token(l.COMMENT,n)):(n=this.__patterns.handlebars_open.read(),i=this._create_token(l.TAG_OPEN,n))),i},h.prototype._read_close=function(e,t){var n=null,i=null;return t&&("<"===t.text[0]&&(">"===e||"/"===e&&">"===this._input.peek(1))?(n=this._input.next(),"/"===e&&(n+=this._input.next()),i=this._create_token(l.TAG_CLOSE,n)):"{"===t.text[0]&&"}"===e&&"}"===this._input.peek(1)&&(this._input.next(),this._input.next(),i=this._create_token(l.TAG_CLOSE,"}}"))),i},h.prototype._read_attribute=function(e,t,n){var i=null,r="";if(n&&"<"===n.text[0])if("="===e)i=this._create_token(l.EQUALS,this._input.next());else if('"'===e||"'"===e){var a=this._input.next();a+='"'===e?this.__patterns.double_quote.read():this.__patterns.single_quote.read(),i=this._create_token(l.VALUE,a)}else(r=this.__patterns.attribute.read())&&(i=t.type===l.EQUALS?this._create_token(l.VALUE,r):this._create_token(l.ATTRIBUTE,r));return i},h.prototype._is_content_unformatted=function(e){return-1===this._options.void_elements.indexOf(e)&&(-1!==this._options.content_unformatted.indexOf(e)||-1!==this._options.unformatted.indexOf(e))},h.prototype._read_raw_content=function(e,t,n){var i="";if(n&&"{"===n.text[0])i=this.__patterns.handlebars_raw_close.read();else if(t.type===l.TAG_CLOSE&&"<"===t.opened.text[0]){var r=t.opened.text.substr(1).toLowerCase();if("script"===r||"style"===r){var a=this._read_comment_or_cdata(e);if(a)return a.type=l.TEXT,a;i=this._input.readUntil(new RegExp("","ig"))}else this._is_content_unformatted(r)&&(i=this._input.readUntil(new RegExp("","ig")))}return i?this._create_token(l.TEXT,i):null},h.prototype._read_content_word=function(e){var t="";if(this._options.unformatted_content_delimiter&&e===this._options.unformatted_content_delimiter[0]&&(t=this.__patterns.unformatted_content_delimiter.read()),t||(t=this.__patterns.word.read()),t)return this._create_token(l.TEXT,t)},e.exports.Tokenizer=h,e.exports.TOKEN=l}]);var pt,mt,ft,gt=(pt=function(e,t){return(pt=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}pt(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});if("object"==typeof process)ft="win32"===process.platform;else if("object"==typeof navigator){var bt=navigator.userAgent;ft=bt.indexOf("Windows")>=0}var _t=/^\w[\w\d+.-]*$/,wt=/^\//,vt=/^\/\//,yt="",Tt="/",kt=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,St=function(){function e(e,t,n,i,r,a){void 0===a&&(a=!1),"object"==typeof e?(this.scheme=e.scheme||yt,this.authority=e.authority||yt,this.path=e.path||yt,this.query=e.query||yt,this.fragment=e.fragment||yt):(this.scheme=function(e,t){return e||t?e:"file"}(e,a),this.authority=t||yt,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==Tt&&(t=Tt+t):t=Tt}return t}(this.scheme,n||yt),this.query=i||yt,this.fragment=r||yt,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!_t.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!wt.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(vt.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,a))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return zt(this,!1)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,i=e.path,r=e.query,a=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=yt),void 0===n?n=this.authority:null===n&&(n=yt),void 0===i?i=this.path:null===i&&(i=yt),void 0===r?r=this.query:null===r&&(r=yt),void 0===a?a=this.fragment:null===a&&(a=yt),t===this.scheme&&n===this.authority&&i===this.path&&r===this.query&&a===this.fragment?this:new Mt(t,n,i,r,a)},e.parse=function(e,t){void 0===t&&(t=!1);var n=kt.exec(e);return n?new Mt(n[2]||yt,Ct(n[4]||yt),Ct(n[5]||yt),Ct(n[7]||yt),Ct(n[9]||yt),t):new Mt(yt,yt,yt,yt,yt)},e.file=function(e){var t=yt;if(ft&&(e=e.replace(/\\/g,Tt)),e[0]===Tt&&e[1]===Tt){var n=e.indexOf(Tt,2);-1===n?(t=e.substring(2),e=Tt):(t=e.substring(2,n),e=e.substring(n)||Tt)}return new Mt("file",t,e,yt,yt)},e.from=function(e){return new Mt(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),Rt(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new Mt(t);return n._formatted=t.external,n._fsPath=t._sep===xt?t.fsPath:null,n}return t},e}(),xt=ft?1:void 0,Mt=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return gt(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=zt(this,!1)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?Rt(this,!0):(this._formatted||(this._formatted=Rt(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=xt),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(St),Lt=((mt={})[58]="%3A",mt[47]="%2F",mt[63]="%3F",mt[35]="%23",mt[91]="%5B",mt[93]="%5D",mt[64]="%40",mt[33]="%21",mt[36]="%24",mt[38]="%26",mt[39]="%27",mt[40]="%28",mt[41]="%29",mt[42]="%2A",mt[43]="%2B",mt[44]="%2C",mt[59]="%3B",mt[61]="%3D",mt[32]="%20",mt);function Et(e,t){for(var n=void 0,i=-1,r=0;r=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||45===a||46===a||95===a||126===a||t&&47===a)-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),void 0!==n&&(n+=e.charAt(r));else{void 0===n&&(n=e.substr(0,r));var o=Lt[a];void 0!==o?(-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),n+=o):-1===i&&(i=r)}}return-1!==i&&(n+=encodeURIComponent(e.substring(i))),void 0!==n?n:e}function At(e){for(var t=void 0,n=0;n1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,ft&&(n=n.replace(/\//g,"\\")),n}function Rt(e,t){var n=t?At:Et,i="",r=e.scheme,a=e.authority,o=e.path,s=e.query,l=e.fragment;if(r&&(i+=r,i+=":"),(a||"file"===r)&&(i+=Tt,i+=Tt),a){var c=a.indexOf("@");if(-1!==c){var h=a.substr(0,c);a=a.substr(c+1),-1===(c=h.indexOf(":"))?i+=n(h,!1):(i+=n(h.substr(0,c),!1),i+=":",i+=n(h.substr(c+1),!1)),i+="@"}-1===(c=(a=a.toLowerCase()).indexOf(":"))?i+=n(a,!1):(i+=n(a.substr(0,c),!1),i+=a.substr(c))}if(o){if(o.length>=3&&47===o.charCodeAt(0)&&58===o.charCodeAt(2))(d=o.charCodeAt(1))>=65&&d<=90&&(o="/"+String.fromCharCode(d+32)+":"+o.substr(3));else if(o.length>=2&&58===o.charCodeAt(1)){var d;(d=o.charCodeAt(0))>=65&&d<=90&&(o=String.fromCharCode(d+32)+":"+o.substr(2))}i+=n(o,!0)}return s&&(i+="?",i+=n(s,!1)),l&&(i+="#",i+=t?l:Et(l,!1)),i}function It(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+It(e.substr(3)):e}}var Ht=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Ct(e){return e.match(Ht)?e.replace(Ht,(function(e){return It(e)})):e}var Ut={version:1.1,tags:[{name:"html",description:{kind:"markdown",value:"The html element represents the root of an HTML document."},attributes:[{name:"manifest",description:{kind:"markdown",value:"Specifies the URI of a resource manifest indicating resources that should be cached locally. See [Using the application cache](https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache) for details."}},{name:"version",description:'Specifies the version of the HTML [Document Type Definition](https://developer.mozilla.org/en-US/docs/Glossary/DTD "Document Type Definition: In HTML, the doctype is the required "" preamble found at the top of all documents. Its sole purpose is to prevent a browser from switching into so-called “quirks mode” when rendering a document; that is, the "" doctype ensures that the browser makes a best-effort attempt at following the relevant specifications, rather than using a different rendering mode that is incompatible with some specifications.") that governs the current document. This attribute is not needed, because it is redundant with the version information in the document type declaration.'},{name:"xmlns",description:'Specifies the XML Namespace of the document. Default value is `"http://www.w3.org/1999/xhtml"`. This is required in documents parsed with XML parsers, and optional in text/html documents.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/html"}]},{name:"head",description:{kind:"markdown",value:"The head element represents a collection of metadata for the Document."},attributes:[{name:"profile",description:"The URIs of one or more metadata profiles, separated by white space."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/head"}]},{name:"title",description:{kind:"markdown",value:"The title element represents the document's title or name. Authors should use titles that identify their documents even when they are used out of context, for example in a user's history or bookmarks, or in search results. The document's title is often different from its first heading, since the first heading does not have to stand alone when taken out of context."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/title"}]},{name:"base",description:{kind:"markdown",value:"The base element allows authors to specify the document base URL for the purposes of resolving relative URLs, and the name of the default browsing context for the purposes of following hyperlinks. The element does not represent any content beyond this information."},attributes:[{name:"href",description:{kind:"markdown",value:"The base URL to be used throughout the document for relative URL addresses. If this attribute is specified, this element must come before any other elements with attributes whose values are URLs. Absolute and relative URLs are allowed."}},{name:"target",description:{kind:"markdown",value:"A name or keyword indicating the default location to display the result when hyperlinks or forms cause navigation, for elements that do not have an explicit target reference. It is a name of, or keyword for, a _browsing context_ (for example: tab, window, or inline frame). The following keywords have special meanings:\n\n* `_self`: Load the result into the same browsing context as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the result into a new unnamed browsing context.\n* `_parent`: Load the result into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: Load the result into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\n\nIf this attribute is specified, this element must come before any other elements with attributes whose values are URLs."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/base"}]},{name:"link",description:{kind:"markdown",value:"The link element allows authors to link their document to other resources."},attributes:[{name:"href",description:{kind:"markdown",value:'This attribute specifies the [URL](https://developer.mozilla.org/en-US/docs/Glossary/URL "URL: Uniform Resource Locator (URL) is a text string specifying where a resource can be found on the Internet.") of the linked resource. A URL can be absolute or relative.'}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'This enumerated attribute indicates whether [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.") must be used when fetching the resource. [CORS-enabled images](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_Enabled_Image) can be reused in the [``](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas "Use the HTML 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\n`anonymous`\n\nA cross-origin request (i.e. with an [`Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin "The Origin request header indicates where a fetch originates from. It doesn\'t include any path information, but only the server name. It is sent with CORS requests, as well as with POST requests. It is similar to the Referer header, but, unlike this header, it doesn\'t disclose the whole path.") HTTP header) is performed, but no credential is sent (i.e. no cookie, X.509 certificate, or HTTP Basic authentication). If the server does not give credentials to the origin site (by not setting the [`Access-Control-Allow-Origin`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin "The Access-Control-Allow-Origin response header indicates whether the response can be shared with requesting code from the given origin.") HTTP header) the image will be tainted and its usage restricted.\n\n`use-credentials`\n\nA cross-origin request (i.e. with an `Origin` HTTP header) is performed along with a credential sent (i.e. a cookie, certificate, and/or HTTP Basic authentication is performed). If the server does not give credentials to the origin site (through [`Access-Control-Allow-Credentials`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials "The Access-Control-Allow-Credentials response header tells browsers whether to expose the response to frontend JavaScript code when the request\'s credentials mode (Request.credentials) is "include".") HTTP header), the resource will be _tainted_ and its usage restricted.\n\nIf the attribute is not present, the resource is fetched without a [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.") request (i.e. without sending the `Origin` HTTP header), preventing its non-tainted usage. If invalid, it is handled as if the enumerated keyword **anonymous** was used. See [CORS settings attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for additional information.'}},{name:"rel",description:{kind:"markdown",value:"This attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of the [link types values](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)."}},{name:"media",description:{kind:"markdown",value:"This attribute specifies the media that the linked resource applies to. Its value must be a media type / [media query](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries). This attribute is mainly useful when linking to external stylesheets — it allows the user agent to pick the best adapted one for the device it runs on.\n\n**Notes:**\n\n* In HTML 4, this can only be a simple white-space-separated list of media description literals, i.e., [media types and groups](https://developer.mozilla.org/en-US/docs/Web/CSS/@media), where defined and allowed as values for this attribute, such as `print`, `screen`, `aural`, `braille`. HTML5 extended this to any kind of [media queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries), which are a superset of the allowed values of HTML 4.\n* Browsers not supporting [CSS3 Media Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/Media_queries) won't necessarily recognize the adequate link; do not forget to set fallback links, the restricted set of media queries defined in HTML 4."}},{name:"hreflang",description:{kind:"markdown",value:"This attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt). Use this attribute only if the [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute is present."}},{name:"type",description:{kind:"markdown",value:'This attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as **text/html**, **text/css**, and so on. The common use of this attribute is to define the type of stylesheet being referenced (such as **text/css**), but given that CSS is the only stylesheet language used on the web, not only is it possible to omit the `type` attribute, but is actually now recommended practice. It is also used on `rel="preload"` link types, to make sure the browser only downloads file types that it supports.'}},{name:"sizes",description:{kind:"markdown",value:"This attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the [`rel`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-rel) contains a value of `icon` or a non-standard type such as Apple's `apple-touch-icon`. It may have the following values:\n\n* `any`, meaning that the icon can be scaled to any size as it is in a vector format, like `image/svg+xml`.\n* a white-space separated list of sizes, each in the format `__x__` or `__X__`. Each of these sizes must be contained in the resource.\n\n**Note:** Most icon formats are only able to store one single icon; therefore most of the time the [`sizes`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-sizes) contains only one entry. MS's ICO format does, as well as Apple's ICNS. ICO is more ubiquitous; you should definitely use it."}},{name:"as",description:'This attribute is only used when `rel="preload"` or `rel="prefetch"` has been set on the `` element. It specifies the type of content being loaded by the ``, which is necessary for content prioritization, request matching, application of correct [content security policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP), and setting of correct [`Accept`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept "The Accept request HTTP header advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header. Browsers set adequate values for this header depending on the context where the request is done: when fetching a CSS stylesheet a different value is set for the request than when fetching an image, video or a script.") request header.'},{name:"importance",description:"Indicates the relative importance of the resource. Priority hints are delegated using the values:"},{name:"importance",description:'**`auto`**: Indicates **no preference**. The browser may use its own heuristics to decide the priority of the resource.\n\n**`high`**: Indicates to the browser that the resource is of **high** priority.\n\n**`low`**: Indicates to the browser that the resource is of **low** priority.\n\n**Note:** The `importance` attribute may only be used for the `` element if `rel="preload"` or `rel="prefetch"` is present.'},{name:"integrity",description:"Contains inline metadata — a base64-encoded cryptographic hash of the resource (file) you’re telling the browser to fetch. The browser can use this to verify that the fetched resource has been delivered free of unexpected manipulation. See [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)."},{name:"referrerpolicy",description:'A string indicating which referrer to use when fetching the resource:\n\n* `no-referrer` means that 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` means that no [`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 be sent when navigating to an origin without TLS (HTTPS). This is a user agent’s default behavior, if no policy is otherwise specified.\n* `origin` means that the referrer will be the origin of the page, which is roughly the scheme, the host, and the port.\n* `origin-when-cross-origin` means that navigating to other origins will be limited to the scheme, the host, and the port, while navigating on the same origin will include the referrer\'s path.\n* `unsafe-url` means that the referrer 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:"title",description:'The `title` attribute has special semantics on the `` element. When used on a `` it defines a [preferred or an alternate stylesheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets). Incorrectly using it may [cause the stylesheet to be ignored](https://developer.mozilla.org/en-US/docs/Correctly_Using_Titles_With_External_Stylesheets).'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/link"}]},{name:"meta",description:{kind:"markdown",value:"The meta element represents various kinds of metadata that cannot be expressed using the title, base, link, style, and script elements."},attributes:[{name:"name",description:{kind:"markdown",value:'This attribute defines the name of a piece of document-level metadata. It should not be set if one of the attributes [`itemprop`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-itemprop), [`http-equiv`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-http-equiv) or [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) is also set.\n\nThis 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:\n\n* `application-name` which defines the name of the application running in the web page.\n \n **Note:**\n \n * Browsers may use this to identify the application. It is different from the [``](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.\n * Simple web pages shouldn\'t define an application-name.\n \n* `author` which defines the name of the document\'s author.\n* `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.\n* `generator` which contains the identifier of the software that generated the page.\n* `keywords` which contains words relevant to the page\'s content separated by commas.\n* `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:\n \n Values for the `content` attribute of `<meta name="referrer">`\n \n `no-referrer`\n \n Do not send a HTTP `Referrer` header.\n \n `origin`\n \n Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the document.\n \n `no-referrer-when-downgrade`\n \n Send the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) as a referrer to URLs as secure as the current page, (https→https), but does not send a referrer to less secure URLs (https→http). This is the default behaviour.\n \n `origin-when-cross-origin`\n \n 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.\n \n `same-origin`\n \n 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.\n \n `strict-origin`\n \n 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).\n \n `strict-origin-when-cross-origin`\n \n 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).\n \n `unsafe-URL`\n \n Send the full URL (stripped of parameters) for same-origin or cross-origin requests.\n \n **Notes:**\n \n * Some browsers support the deprecated values of `always`, `default`, and `never` for referrer.\n * 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.\n * When several conflicting policies are defined, the no-referrer policy is applied.\n \n\nThis 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:\n\n* `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.\n* `googlebot`, a synonym of `robots`, is only followed by Googlebot (the indexing crawler for Google).\n* `publisher` which defines the name of the document\'s publisher.\n* `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:\n \n Values for the content of `<meta name="robots">`\n \n Value\n \n Description\n \n Used by\n \n `index`\n \n Allows the robot to index the page (default).\n \n All\n \n `noindex`\n \n Requests the robot to not index the page.\n \n All\n \n `follow`\n \n Allows the robot to follow the links on the page (default).\n \n All\n \n `nofollow`\n \n Requests the robot to not follow the links on the page.\n \n All\n \n `none`\n \n Equivalent to `noindex, nofollow`\n \n [Google](https://support.google.com/webmasters/answer/79812)\n \n `noodp`\n \n Prevents using the [Open Directory Project](https://www.dmoz.org/) description, if any, as the page description in search engine results.\n \n [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)\n \n `noarchive`\n \n Requests the search engine not to cache the page content.\n \n [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)\n \n `nosnippet`\n \n Prevents displaying any description of the page in search engine results.\n \n [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)\n \n `noimageindex`\n \n Requests this page not to appear as the referring page of an indexed image.\n \n [Google](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives)\n \n `nocache`\n \n Synonym of `noarchive`.\n \n [Bing](https://www.bing.com/webmaster/help/which-robots-metatags-does-bing-support-5198d240)\n \n **Notes:**\n \n * Only cooperative robots follow these rules. Do not expect to prevent e-mail harvesters with them.\n * 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 crawlers are permitted or forbidden access to the web site.")_ file.\n * 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.\n * 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.\n * 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.\n \n* `slurp`, is a synonym of `robots`, but only for Slurp - the crawler for Yahoo Search.\n* `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.\n \n Values for the content of `<meta name="viewport">`\n \n Value\n \n Possible subvalues\n \n Description\n \n `width`\n \n A positive integer number, or the text `device-width`\n \n Defines the pixel width of the viewport that you want the web site to be rendered at.\n \n `height`\n \n A positive integer, or the text `device-height`\n \n Defines the height of the viewport. Not used by any browser.\n \n `initial-scale`\n \n A positive number between `0.0` and `10.0`\n \n Defines the ratio between the device width (`device-width` in portrait mode or `device-height` in landscape mode) and the viewport size.\n \n `maximum-scale`\n \n A positive number between `0.0` and `10.0`\n \n 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.\n \n `minimum-scale`\n \n A positive number between `0.0` and `10.0`\n \n 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.\n \n `user-scalable`\n \n `yes` or `no`\n \n 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.\n \n Specification\n \n Status\n \n Comment\n \n [CSS Device Adaptation \n The definition of \'<meta name="viewport">\' in that specification.](https://drafts.csswg.org/css-device-adapt/#viewport-meta)\n \n Working Draft\n \n Non-normatively describes the Viewport META element\n \n 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).")\n \n **Notes:**\n \n * Though unstandardized, this declaration is respected by most mobile browsers due to de-facto dominance.\n * The default values may vary between devices and browsers.\n * 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 attribute declares the page\'s character encoding. It must contain a [standard IANA MIME name for character encodings](https://www.iana.org/assignments/character-sets). Although the standard doesn\'t request a specific encoding, it suggests:\n\n* Authors are encouraged to use [`UTF-8`](https://developer.mozilla.org/en-US/docs/Glossary/UTF-8).\n* Authors should not use ASCII-incompatible encodings to avoid security risk: browsers not supporting them may interpret harmful content as HTML. This happens with the `JIS_C6226-1983`, `JIS_X0212-1990`, `HZ-GB-2312`, `JOHAB`, the ISO-2022 family and the EBCDIC family.\n\n**Note:** ASCII-incompatible encodings are those that don\'t map the 8-bit code points `0x20` to `0x7E` to the `0x0020` to `0x007E` Unicode code points)\n\n* Authors **must not** use `CESU-8`, `UTF-7`, `BOCU-1` and/or `SCSU` as [cross-site scripting](https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting) attacks with these encodings have been demonstrated.\n* Authors should not use `UTF-32` because not all HTML5 encoding algorithms can distinguish it from `UTF-16`.\n\n**Notes:**\n\n* The declared character encoding must match the one the page was saved with to avoid garbled characters and security holes.\n* 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 declaring the encoding must be inside the [`<head>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/head "The HTML <head> element provides general information (metadata) about the document, including its title and links to its scripts and style sheets.") element and **within the first 1024 bytes** of the HTML as some browsers only look at those bytes before choosing an encoding.\n* This [`<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 is only one part of the [algorithm to determine a page\'s character set](https://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#encoding-sniffing-algorithm "Algorithm charset page"). The [`Content-Type` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type) and any [Byte-Order Marks](https://developer.mozilla.org/en-US/docs/Glossary/Byte-Order_Mark "The definition of that term (Byte-Order Marks) has not been written yet; please consider contributing it!") override this element.\n* It is strongly recommended to define the character encoding. If a page\'s encoding is undefined, cross-scripting techniques are possible, such as the [`UTF-7` fallback cross-scripting technique](https://code.google.com/p/doctype-mirror/wiki/ArticleUtf7).\n* 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 with a `charset` attribute is a synonym for the pre-HTML5 `<meta http-equiv="Content-Type" content="text/html; charset=_IANAcharset_">`, where _`IANAcharset`_ contains the value of the equivalent [`charset`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-charset) attribute. This syntax is still allowed, although no longer recommended.'}},{name:"scheme",description:"This attribute defines the scheme in which metadata is described. A scheme is a context leading to the correct interpretations of the [`content`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#attr-content) value, like a format.\n\n**Warning:** Do not use this value, as it is obsolete. There is no replacement as there was no real usage for it."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/meta"}]},{name:"style",description:{kind:"markdown",value:"The style element allows authors to embed style information in their documents. The style element is one of several inputs to the styling processing model. The element does not represent content for the user."},attributes:[{name:"media",description:{kind:"markdown",value:"This attribute defines which media the style should be applied to. Its value is a [media query](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries), which defaults to `all` if the attribute is missing."}},{name:"nonce",description:{kind:"markdown",value:"A cryptographic nonce (number used once) used to whitelist inline styles in a [style-src Content-Security-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/style-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:"type",description:{kind:"markdown",value:"This attribute defines the styling language as a MIME type (charset should not be specified). This attribute is optional and defaults to `text/css` if it is not specified — there is very little reason to include this in modern web documents."}},{name:"scoped",valueSet:"v"},{name:"title",description:"This attribute specifies [alternative style sheet](https://developer.mozilla.org/en-US/docs/Web/CSS/Alternative_style_sheets) sets."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/style"}]},{name:"body",description:{kind:"markdown",value:"The body element represents the content of the document."},attributes:[{name:"onafterprint",description:{kind:"markdown",value:"Function to call after the user has printed the document."}},{name:"onbeforeprint",description:{kind:"markdown",value:"Function to call when the user requests printing of the document."}},{name:"onbeforeunload",description:{kind:"markdown",value:"Function to call when the document is about to be unloaded."}},{name:"onhashchange",description:{kind:"markdown",value:"Function to call when the fragment identifier part (starting with the hash (`'#'`) character) of the document's current address has changed."}},{name:"onlanguagechange",description:{kind:"markdown",value:"Function to call when the preferred languages changed."}},{name:"onmessage",description:{kind:"markdown",value:"Function to call when the document has received a message."}},{name:"onoffline",description:{kind:"markdown",value:"Function to call when network communication has failed."}},{name:"ononline",description:{kind:"markdown",value:"Function to call when network communication has been restored."}},{name:"onpagehide"},{name:"onpageshow"},{name:"onpopstate",description:{kind:"markdown",value:"Function to call when the user has navigated session history."}},{name:"onstorage",description:{kind:"markdown",value:"Function to call when the storage area has changed."}},{name:"onunload",description:{kind:"markdown",value:"Function to call when the document is going away."}},{name:"alink",description:'Color of text for hyperlinks when selected. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property in conjunction with the [`:active`](https://developer.mozilla.org/en-US/docs/Web/CSS/:active "The :active CSS pseudo-class represents an element (such as a button) that is being activated by the user.") pseudo-class instead._'},{name:"background",description:'URI of a image to use as a background. _This method is non-conforming, use CSS [`background`](https://developer.mozilla.org/en-US/docs/Web/CSS/background "The background shorthand CSS property sets all background style properties at once, such as color, image, origin and size, or repeat method.") property on the element instead._'},{name:"bgcolor",description:'Background color for the document. _This method is non-conforming, use CSS [`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 on the element instead._'},{name:"bottommargin",description:'The margin of the bottom of the body. _This method is non-conforming, use CSS [`margin-bottom`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom "The margin-bottom CSS property sets the margin area on the bottom of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"leftmargin",description:'The margin of the left of the body. _This method is non-conforming, use CSS [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left "The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"link",description:'Color of text for unvisited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property in conjunction with the [`:link`](https://developer.mozilla.org/en-US/docs/Web/CSS/:link "The :link CSS pseudo-class represents an element that has not yet been visited. It matches every unvisited <a>, <area>, or <link> element that has an href attribute.") pseudo-class instead._'},{name:"onblur",description:"Function to call when the document loses focus."},{name:"onerror",description:"Function to call when the document fails to load properly."},{name:"onfocus",description:"Function to call when the document receives focus."},{name:"onload",description:"Function to call when the document has finished loading."},{name:"onredo",description:"Function to call when the user has moved forward in undo transaction history."},{name:"onresize",description:"Function to call when the document has been resized."},{name:"onundo",description:"Function to call when the user has moved backward in undo transaction history."},{name:"rightmargin",description:'The margin of the right of the body. _This method is non-conforming, use CSS [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right "The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"text",description:'Foreground color of text. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property on the element instead._'},{name:"topmargin",description:'The margin of the top of the body. _This method is non-conforming, use CSS [`margin-top`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top "The margin-top CSS property sets the margin area on the top of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") property on the element instead._'},{name:"vlink",description:'Color of text for visited hypertext links. _This method is non-conforming, use CSS [`color`](https://developer.mozilla.org/en-US/docs/Web/CSS/color "The color CSS property sets the foreground color value of an element\'s text and text decorations, and sets the currentcolor value.") property in conjunction with the [`:visited`](https://developer.mozilla.org/en-US/docs/Web/CSS/:visited "The :visited CSS pseudo-class represents links that the user has already visited. For privacy reasons, the styles that can be modified using this selector are very limited.") pseudo-class instead._'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/body"}]},{name:"article",description:{kind:"markdown",value:"The article element represents a complete, or self-contained, composition in a document, page, application, or site and that is, in principle, independently distributable or reusable, e.g. in syndication. This could be a forum post, a magazine or newspaper article, a blog entry, a user-submitted comment, an interactive widget or gadget, or any other independent item of content. Each article should be identified, typically by including a heading (h1–h6 element) as a child of the article element."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/article"}]},{name:"section",description:{kind:"markdown",value:"The section element represents a generic section of a document or application. A section, in this context, is a thematic grouping of content. Each section should be identified, typically by including a heading ( h1- h6 element) as a child of the section element."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/section"}]},{name:"nav",description:{kind:"markdown",value:"The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/nav"}]},{name:"aside",description:{kind:"markdown",value:"The aside element represents a section of a page that consists of content that is tangentially related to the content around the aside element, and which could be considered separate from that content. Such sections are often represented as sidebars in printed typography."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/aside"}]},{name:"h1",description:{kind:"markdown",value:"The h1 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h2",description:{kind:"markdown",value:"The h2 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h3",description:{kind:"markdown",value:"The h3 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h4",description:{kind:"markdown",value:"The h4 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h5",description:{kind:"markdown",value:"The h5 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"h6",description:{kind:"markdown",value:"The h6 element represents a section heading."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/Heading_Elements"}]},{name:"header",description:{kind:"markdown",value:"The header element represents introductory content for its nearest ancestor sectioning content or sectioning root element. A header typically contains a group of introductory or navigational aids. When the nearest ancestor sectioning content or sectioning root element is the body element, then it applies to the whole page."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/header"}]},{name:"footer",description:{kind:"markdown",value:"The footer element represents a footer for its nearest ancestor sectioning content or sectioning root element. A footer typically contains information about its section such as who wrote it, links to related documents, copyright data, and the like."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/footer"}]},{name:"address",description:{kind:"markdown",value:"The address element represents the contact information for its nearest article or body element ancestor. If that is the body element, then the contact information applies to the document as a whole."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/address"}]},{name:"p",description:{kind:"markdown",value:"The p element represents a paragraph."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/p"}]},{name:"hr",description:{kind:"markdown",value:"The hr element represents a paragraph-level thematic break, e.g. a scene change in a story, or a transition to another topic within a section of a reference book."},attributes:[{name:"align",description:"Sets the alignment of the rule on the page. If no value is specified, the default value is `left`."},{name:"color",description:"Sets the color of the rule through color name or hexadecimal value."},{name:"noshade",description:"Sets the rule to have no shading."},{name:"size",description:"Sets the height, in pixels, of the rule."},{name:"width",description:"Sets the length of the rule on the page through a pixel or percentage value."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/hr"}]},{name:"pre",description:{kind:"markdown",value:"The pre element represents a block of preformatted text, in which structure is represented by typographic conventions rather than by elements."},attributes:[{name:"cols",description:'Contains the _preferred_ count of characters that a line should have. It was a non-standard synonym of [`width`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre#attr-width). To achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width "The width CSS property sets an element\'s width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.") instead.'},{name:"width",description:'Contains the _preferred_ count of characters that a line should have. Though technically still implemented, this attribute has no visual effect; to achieve such an effect, use CSS [`width`](https://developer.mozilla.org/en-US/docs/Web/CSS/width "The width CSS property sets an element\'s width. By default it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.") instead.'},{name:"wrap",description:'Is a _hint_ indicating how the overflow must happen. In modern browser this hint is ignored and no visual effect results in its present; to achieve such an effect, use CSS [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space "The white-space CSS property sets how white space inside an element is handled.") instead.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/pre"}]},{name:"blockquote",description:{kind:"markdown",value:"The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a footer or cite element, and optionally with in-line changes such as annotations and abbreviations."},attributes:[{name:"cite",description:{kind:"markdown",value:"A URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/blockquote"}]},{name:"ol",description:{kind:"markdown",value:"The ol element represents a list of items, where the items have been intentionally ordered, such that changing the order would change the meaning of the document."},attributes:[{name:"reversed",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute specifies that the items of the list are specified in reversed order."}},{name:"start",description:{kind:"markdown",value:'This integer attribute specifies the start value for numbering the individual list items. Although the ordering type of list elements might be Roman numerals, such as XXXI, or letters, the value of start is always represented as a number. To start numbering elements from the letter "C", use `<ol start="3">`.\n\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.'}},{name:"type",valueSet:"lt",description:{kind:"markdown",value:"Indicates the numbering type:\n\n* `'a'` indicates lowercase letters,\n* `'A'` indicates uppercase letters,\n* `'i'` indicates lowercase Roman numerals,\n* `'I'` indicates uppercase Roman numerals,\n* and `'1'` indicates numbers (default).\n\nThe type set is used for the entire list unless a different [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li#attr-type) attribute is used within an enclosed [`<li>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li \"The HTML <li> element is used to represent an item in a list. It must be contained in a parent element: an ordered list (<ol>), an unordered list (<ul>), or a menu (<menu>). In menus and unordered lists, list items are usually displayed using bullet points. In ordered lists, they are usually displayed with an ascending counter on the left, such as a number or letter.\") element.\n\n**Note:** This attribute was deprecated in HTML4, but reintroduced in HTML5.\n\nUnless the value of the list number matters (e.g. in legal or technical documents where items are to be referenced by their number/letter), the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type \"The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.\") property should be used instead."}},{name:"compact",description:'This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn\'t work in all browsers.\n\n**Warning:** Do not use this attribute, as it has been deprecated: the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol "The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give an effect similar to the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [`line-height`](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height "The line-height CSS property sets the amount of space used for lines, such as in text. On block-level elements, it specifies the minimum height of line boxes within the element. On non-replaced inline elements, it specifies the height that is used to calculate line box height.") can be used with a value of `80%`.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ol"}]},{name:"ul",description:{kind:"markdown",value:"The ul element represents a list of items, where the order of the items is not important — that is, where changing the order would not materially change the meaning of the document."},attributes:[{name:"compact",description:'This Boolean attribute hints that the list should be rendered in a compact style. The interpretation of this attribute depends on the user agent and it doesn\'t work in all browsers.\n\n**Usage note: **Do not use this attribute, as it has been deprecated: the [`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul "The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). To give a similar effect as the `compact` attribute, the [CSS](https://developer.mozilla.org/en-US/docs/CSS) property [line-height](https://developer.mozilla.org/en-US/docs/CSS/line-height) can be used with a value of `80%`.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ul"}]},{name:"li",description:{kind:"markdown",value:"The li element represents a list item. If its parent element is an ol, ul, or menu element, then the element is an item of the parent element's list, as defined for those elements. Otherwise, the list item has no defined list-related relationship to any other li element."},attributes:[{name:"value",description:{kind:"markdown",value:'This integer attribute indicates the current ordinal value of the list item as defined by the [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol "The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.") element. The only allowed value for this attribute is a number, even if the list is displayed with Roman numerals or letters. List items that follow this one continue numbering from the value set. The **value** attribute has no meaning for unordered lists ([`<ul>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul "The HTML <ul> element represents an unordered list of items, typically rendered as a bulleted list.")) or for menus ([`<menu>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu "The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.")).\n\n**Note**: This attribute was deprecated in HTML4, but reintroduced in HTML5.\n\n**Note:** Prior to Gecko 9.0, negative values were incorrectly converted to 0. Starting in Gecko 9.0 all integer values are correctly parsed.'}},{name:"type",description:'This character attribute indicates the numbering type:\n\n* `a`: lowercase letters\n* `A`: uppercase letters\n* `i`: lowercase Roman numerals\n* `I`: uppercase Roman numerals\n* `1`: numbers\n\nThis type overrides the one used by its parent [`<ol>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol "The HTML <ol> element represents an ordered list of items, typically rendered as a numbered list.") element, if any.\n\n**Usage note:** This attribute has been deprecated: use the CSS [`list-style-type`](https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type "The list-style-type CSS property sets the marker (such as a disc, character, or custom counter style) of a list item element.") property instead.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/li"}]},{name:"dl",description:{kind:"markdown",value:"The dl element represents an association list consisting of zero or more name-value groups (a description list). A name-value group consists of one or more names (dt elements) followed by one or more values (dd elements), ignoring any nodes other than dt and dd elements. Within a single dl element, there should not be more than one dt element for each name."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dl"}]},{name:"dt",description:{kind:"markdown",value:"The dt element represents the term, or name, part of a term-description group in a description list (dl element)."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dt"}]},{name:"dd",description:{kind:"markdown",value:"The dd element represents the description, definition, or value, part of a term-description group in a description list (dl element)."},attributes:[{name:"nowrap",description:"If the value of this attribute is set to `yes`, the definition text will not wrap. The default value is `no`."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dd"}]},{name:"figure",description:{kind:"markdown",value:"The figure element represents some flow content, optionally with a caption, that is self-contained (like a complete sentence) and is typically referenced as a single unit from the main flow of the document."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/figure"}]},{name:"figcaption",description:{kind:"markdown",value:"The figcaption element represents a caption or legend for the rest of the contents of the figcaption element's parent figure element, if any."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/figcaption"}]},{name:"main",description:{kind:"markdown",value:"The main element represents the main content of the body of a document or application. The main content area consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/main"}]},{name:"div",description:{kind:"markdown",value:"The div element has no special meaning at all. It represents its children. It can be used with the class, lang, and title attributes to mark up semantics common to a group of consecutive elements."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/div"}]},{name:"a",description:{kind:"markdown",value:"If the a element has an href attribute, then it represents a hyperlink (a hypertext anchor) labeled by its contents."},attributes:[{name:"href",description:{kind:"markdown",value:"Contains a URL or a URL fragment that the hyperlink points to."}},{name:"target",description:{kind:"markdown",value:'Specifies where to display the linked URL. It is a name of, or keyword for, a _browsing context_: a tab, window, or `<iframe>`. The following keywords have special meanings:\n\n* `_self`: Load the URL into the same browsing context as the current one. This is the default behavior.\n* `_blank`: Load the URL into a new browsing context. This is usually a tab, but users can configure browsers to use new windows instead.\n* `_parent`: Load the URL into the parent browsing context of the current one. If there is no parent, this behaves the same way as `_self`.\n* `_top`: Load the URL into the top-level browsing context (that is, the "highest" browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this behaves the same way as `_self`.\n\n**Note:** When using `target`, consider adding `rel="noreferrer"` to avoid exploitation of the `window.opener` API.\n\n**Note:** Linking to another page using `target="_blank"` will run the new page on the same process as your page. If the new page is executing expensive JS, your page\'s performance may suffer. To avoid this use `rel="noopener"`.'}},{name:"download",description:{kind:"markdown",value:"This attribute instructs browsers to download a URL instead of navigating to it, so the user will be prompted to save it as a local file. If the attribute has a value, it is used as the pre-filled file name in the Save prompt (the user can still change the file name if they want). There are no restrictions on allowed values, though `/` and `\\` are converted to underscores. Most file systems limit some punctuation in file names, and browsers will adjust the suggested name accordingly.\n\n**Notes:**\n\n* This attribute only works for [same-origin URLs](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy).\n* Although HTTP(s) URLs need to be in the same-origin, [`blob:` URLs](https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL) and [`data:` URLs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) are allowed so that content generated by JavaScript, such as pictures created in an image-editor Web app, can be downloaded.\n* If the HTTP header [`Content-Disposition:`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) gives a different filename than this attribute, the HTTP header takes priority over this attribute.\n* If `Content-Disposition:` is set to `inline`, Firefox prioritizes `Content-Disposition`, like the filename case, while Chrome prioritizes the `download` attribute."}},{name:"ping",description:{kind:"markdown",value:'Contains a space-separated list of URLs to which, when the hyperlink is followed, [`POST`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST "The HTTP POST method sends data to the server. The type of the body of the request is indicated by the Content-Type header.") requests with the body `PING` will be sent by the browser (in the background). Typically used for tracking.'}},{name:"rel",description:{kind:"markdown",value:"Specifies the relationship of the target object to the link object. The value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types)."}},{name:"hreflang",description:{kind:"markdown",value:'This attribute indicates the human language of the linked resource. It is purely advisory, with no built-in functionality. Allowed values are determined by [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt "Tags for Identifying Languages").'}},{name:"type",description:{kind:"markdown",value:'Specifies the media type in the form of a [MIME type](https://developer.mozilla.org/en-US/docs/Glossary/MIME_type "MIME type: A MIME type (now properly called "media type", but also sometimes "content type") is a string sent along with a file indicating the type of the file (describing the content format, for example, a sound file might be labeled audio/ogg, or an image file image/png).") for the linked URL. It is purely advisory, with no built-in functionality.'}},{name:"referrerpolicy",description:"Indicates which [referrer](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer) to send when fetching the URL:\n\n* `'no-referrer'` means the `Referer:` header will not be sent.\n* `'no-referrer-when-downgrade'` means no `Referer:` header will be sent when navigating to an origin without HTTPS. This is the default behavior.\n* `'origin'` means the referrer will be the [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) of the page, not including information after the domain.\n* `'origin-when-cross-origin'` meaning that navigations to other origins will be limited to the scheme, the host and the port, while navigations on the same origin will include the referrer's path.\n* `'strict-origin-when-cross-origin'`\n* `'unsafe-url'` means the referrer will include the origin and path, but not the fragment, password, or username. This is unsafe because it can leak data from secure URLs to insecure ones."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/a"}]},{name:"em",description:{kind:"markdown",value:"The em element represents stress emphasis of its contents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/em"}]},{name:"strong",description:{kind:"markdown",value:"The strong element represents strong importance, seriousness, or urgency for its contents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/strong"}]},{name:"small",description:{kind:"markdown",value:"The small element represents side comments such as small print."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/small"}]},{name:"s",description:{kind:"markdown",value:"The s element represents contents that are no longer accurate or no longer relevant."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/s"}]},{name:"cite",description:{kind:"markdown",value:"The cite element represents a reference to a creative work. It must include the title of the work or the name of the author(person, people or organization) or an URL reference, or a reference in abbreviated form as per the conventions used for the addition of citation metadata."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/cite"}]},{name:"q",description:{kind:"markdown",value:"The q element represents some phrasing content quoted from another source."},attributes:[{name:"cite",description:{kind:"markdown",value:"The value of this attribute is a URL that designates a source document or message for the information quoted. This attribute is intended to point to information explaining the context or the reference for the quote."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/q"}]},{name:"dfn",description:{kind:"markdown",value:"The dfn element represents the defining instance of a term. The paragraph, description list group, or section that is the nearest ancestor of the dfn element must also contain the definition(s) for the term given by the dfn element."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dfn"}]},{name:"abbr",description:{kind:"markdown",value:"The abbr element represents an abbreviation or acronym, optionally with its expansion. The title attribute may be used to provide an expansion of the abbreviation. The attribute, if specified, must contain an expansion of the abbreviation, and nothing else."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/abbr"}]},{name:"ruby",description:{kind:"markdown",value:"The ruby element allows one or more spans of phrasing content to be marked with ruby annotations. Ruby annotations are short runs of text presented alongside base text, primarily used in East Asian typography as a guide for pronunciation or to include other annotations. In Japanese, this form of typography is also known as furigana. Ruby text can appear on either side, and sometimes both sides, of the base text, and it is possible to control its position using CSS. A more complete introduction to ruby can be found in the Use Cases & Exploratory Approaches for Ruby Markup document as well as in CSS Ruby Module Level 1. [RUBY-UC] [CSSRUBY]"},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ruby"}]},{name:"rb",description:{kind:"markdown",value:"The rb element marks the base text component of a ruby annotation. When it is the child of a ruby element, it doesn't represent anything itself, but its parent ruby element uses it as part of determining what it represents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/rb"}]},{name:"rt",description:{kind:"markdown",value:"The rt element marks the ruby text component of a ruby annotation. When it is the child of a ruby element or of an rtc element that is itself the child of a ruby element, it doesn't represent anything itself, but its ancestor ruby element uses it as part of determining what it represents."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/rt"}]},{name:"rp",description:{kind:"markdown",value:"The rp element is used to provide fallback text to be shown by user agents that don't support ruby annotations. One widespread convention is to provide parentheses around the ruby text component of a ruby annotation."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/rp"}]},{name:"time",description:{kind:"markdown",value:"The time element represents its contents, along with a machine-readable form of those contents in the datetime attribute. The kind of content is limited to various kinds of dates, times, time-zone offsets, and durations, as described below."},attributes:[{name:"datetime",description:{kind:"markdown",value:"This attribute indicates the time and/or date of the element and must be in one of the formats described below."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/time"}]},{name:"code",description:{kind:"markdown",value:"The code element represents a fragment of computer code. This could be an XML element name, a file name, a computer program, or any other string that a computer would recognize."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/code"}]},{name:"var",description:{kind:"markdown",value:"The var element represents a variable. This could be an actual variable in a mathematical expression or programming context, an identifier representing a constant, a symbol identifying a physical quantity, a function parameter, or just be a term used as a placeholder in prose."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/var"}]},{name:"samp",description:{kind:"markdown",value:"The samp element represents sample or quoted output from another program or computing system."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/samp"}]},{name:"kbd",description:{kind:"markdown",value:"The kbd element represents user input (typically keyboard input, although it may also be used to represent other input, such as voice commands)."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/kbd"}]},{name:"sub",description:{kind:"markdown",value:"The sub element represents a subscript."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/sub"}]},{name:"sup",description:{kind:"markdown",value:"The sup element represents a superscript."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/sup"}]},{name:"i",description:{kind:"markdown",value:"The i element represents a span of text in an alternate voice or mood, or otherwise offset from the normal prose in a manner indicating a different quality of text, such as a taxonomic designation, a technical term, an idiomatic phrase from another language, transliteration, a thought, or a ship name in Western texts."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/i"}]},{name:"b",description:{kind:"markdown",value:"The b element represents a span of text to which attention is being drawn for utilitarian purposes without conveying any extra importance and with no implication of an alternate voice or mood, such as key words in a document abstract, product names in a review, actionable words in interactive text-driven software, or an article lede."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/b"}]},{name:"u",description:{kind:"markdown",value:"The u element represents a span of text with an unarticulated, though explicitly rendered, non-textual annotation, such as labeling the text as being a proper name in Chinese text (a Chinese proper name mark), or labeling the text as being misspelt."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/u"}]},{name:"mark",description:{kind:"markdown",value:"The mark element represents a run of text in one document marked or highlighted for reference purposes, due to its relevance in another context. When used in a quotation or other block of text referred to from the prose, it indicates a highlight that was not originally present but which has been added to bring the reader's attention to a part of the text that might not have been considered important by the original author when the block was originally written, but which is now under previously unexpected scrutiny. When used in the main prose of a document, it indicates a part of the document that has been highlighted due to its likely relevance to the user's current activity."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/mark"}]},{name:"bdi",description:{kind:"markdown",value:"The bdi element represents a span of text that is to be isolated from its surroundings for the purposes of bidirectional text formatting. [BIDI]"},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/bdi"}]},{name:"bdo",description:{kind:"markdown",value:"The bdo element represents explicit text directionality formatting control for its children. It allows authors to override the Unicode bidirectional algorithm by explicitly specifying a direction override. [BIDI]"},attributes:[{name:"dir",description:"The direction in which text should be rendered in this element's contents. Possible values are:\n\n* `ltr`: Indicates that the text should go in a left-to-right direction.\n* `rtl`: Indicates that the text should go in a right-to-left direction."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/bdo"}]},{name:"span",description:{kind:"markdown",value:"The span element doesn't mean anything on its own, but can be useful when used together with the global attributes, e.g. class, lang, or dir. It represents its children."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/span"}]},{name:"br",description:{kind:"markdown",value:"The br element represents a line break."},attributes:[{name:"clear",description:"Indicates where to begin the next line after the break."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/br"}]},{name:"wbr",description:{kind:"markdown",value:"The wbr element represents a line break opportunity."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/wbr"}]},{name:"ins",description:{kind:"markdown",value:"The ins element represents an addition to the document."},attributes:[{name:"cite",description:"This attribute defines the URI of a resource that explains the change, such as a link to meeting minutes or a ticket in a troubleshooting system."},{name:"datetime",description:'This attribute indicates the time and date of the change and must be a valid date with an optional time string. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article."). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.").'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/ins"}]},{name:"del",description:{kind:"markdown",value:"The del element represents a removal from the document."},attributes:[{name:"cite",description:{kind:"markdown",value:"A URI for a resource that explains the change (for example, meeting minutes)."}},{name:"datetime",description:{kind:"markdown",value:'This attribute indicates the time and date of the change and must be a valid date string with an optional time. If the value cannot be parsed as a date with an optional time string, the element does not have an associated time stamp. For the format of the string without a time, see [Format of a valid date string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_date_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article."). The format of the string if it includes both date and time is covered in [Format of a valid local date and time string](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats#Format_of_a_valid_local_date_and_time_string "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.") in [Date and time formats used in HTML](https://developer.mozilla.org/en-US/docs/Web/HTML/Date_and_time_formats "Certain HTML elements use date and/or time values. The formats of the strings that specify these are described in this article.").'}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/del"}]},{name:"picture",description:{kind:"markdown",value:"The picture element is a container which provides multiple sources to its contained img element to allow authors to declaratively control or give hints to the user agent about which image resource to use, based on the screen pixel density, viewport size, image format, and other factors. It represents its children."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/picture"}]},{name:"img",description:{kind:"markdown",value:"An img element represents an image."},attributes:[{name:"alt",description:{kind:"markdown",value:'This attribute defines an alternative text description of the image.\n\n**Note:** Browsers do not always display the image referenced by the element. This is the case for non-graphical browsers (including those used by people with visual impairments), if the user chooses not to display images, or if the browser cannot display the image because it is invalid or an [unsupported type](#Supported_image_formats). In these cases, the browser may replace the image with the text defined in this element\'s `alt` attribute. You should, for these reasons and others, provide a useful value for `alt` whenever possible.\n\n**Note:** Omitting this attribute altogether indicates that the image is a key part of the content, and no textual equivalent is available. Setting this attribute to an empty string (`alt=""`) indicates that this image is _not_ a key part of the content (decorative), and that non-visual browsers may omit it from rendering.'}},{name:"src",description:{kind:"markdown",value:"The image URL. This attribute is mandatory for the `<img>` element. On browsers supporting `srcset`, `src` is treated like a candidate image with a pixel density descriptor `1x` unless an image with this pixel density descriptor is already defined in `srcset,` or unless `srcset` contains '`w`' descriptors."}},{name:"srcset",description:{kind:"markdown",value:"A list of one or more strings separated by commas indicating a set of possible image sources for the user agent to use. Each string is composed of:\n\n1. a URL to an image,\n2. optionally, whitespace followed by one of:\n * A width descriptor, or a positive integer directly followed by '`w`'. The width descriptor is divided by the source size given in the `sizes` attribute to calculate the effective pixel density.\n * A pixel density descriptor, which is a positive floating point number directly followed by '`x`'.\n\nIf no descriptor is specified, the source is assigned the default descriptor: `1x`.\n\nIt is incorrect to mix width descriptors and pixel density descriptors in the same `srcset` attribute. Duplicate descriptors (for instance, two sources in the same `srcset` which are both described with '`2x`') are also invalid.\n\nThe user agent selects any one of the available sources at its discretion. This provides them with significant leeway to tailor their selection based on things like user preferences or bandwidth conditions. See our [Responsive images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) tutorial for an example."}},{name:"crossorigin",valueSet:"xo",description:{kind:"markdown",value:'This enumerated attribute indicates if the fetching of the related image must be done using CORS or not. [CORS-enabled images](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](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image#What_is_a_tainted_canvas)." The allowed values are:'}},{name:"usemap",description:{kind:"markdown",value:'The partial URL (starting with \'#\') of an [image map](https://developer.mozilla.org/en-US/docs/HTML/Element/map) associated with the element.\n\n**Note:** You cannot use this attribute if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a "The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.") or [`<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.") element.'}},{name:"ismap",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the image is part of a server-side map. If so, the precise coordinates of a click are sent to the server.\n\n**Note:** This attribute is allowed only if the `<img>` element is a descendant of an [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a "The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL.") element with a valid [`href`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href) attribute.'}},{name:"width",description:{kind:"markdown",value:"The intrinsic width of the image in pixels."}},{name:"height",description:{kind:"markdown",value:"The intrinsic height of the image in pixels."}},{name:"decoding",description:"Provides an image decoding hint to the browser. The allowed values are:"},{name:"decoding",description:"`sync`\n\nDecode the image synchronously for atomic presentation with other content.\n\n`async`\n\nDecode the image asynchronously to reduce delay in presenting other content.\n\n`auto`\n\nDefault 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 **no preference**. The browser may use its own heuristics to decide the priority of the image.\n\n`high`: Indicates to the browser that the image is of **high** priority.\n\n`low`: Indicates to the browser that the image is of **low** priority."},{name:"intrinsicsize",description:"This attribute tells the browser to ignore the actual intrinsic size of the image and pretend it’s 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’s 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’s 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 not support the `srcdoc` attribute, it will fall back to the URL in the `src` attribute."}},{name:"name",description:{kind:"markdown",value:'A targetable name for the embedded browsing context. This can be used in the `target` attribute of the [`<a>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a "The HTML <a> element (or anchor element) creates a hyperlink to other web pages, files, locations within the same page, email addresses, or any other URL."), [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server."), or [`<base>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base "The HTML <base> element specifies the base URL to use for all relative URLs contained within a document. There can be only one <base> element in a document.") elements; the `formtarget` attribute of the [`<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.") or [`<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.") elements; or the `windowName` parameter in the [`window.open()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/open "The Window interface\'s open() method loads the specified resource into the browsing context (window, <iframe> or tab) with the specified name. If the name doesn\'t exist, then a new window is opened and the specified resource is loaded into its browsing context.") method.'}},{name:"sandbox",valueSet:"sb",description:{kind:"markdown",value:'Applies extra restrictions to the content in the frame. The value of the attribute can either be empty to apply all restrictions, or space-separated tokens to lift particular restrictions:\n\n* `allow-forms`: Allows the resource to submit forms. If this keyword is not used, form submission is blocked.\n* `allow-modals`: Lets the resource [open modal windows](https://html.spec.whatwg.org/multipage/origin.html#sandboxed-modals-flag).\n* `allow-orientation-lock`: Lets the resource [lock the screen orientation](https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation).\n* `allow-pointer-lock`: Lets the resource use the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock).\n* `allow-popups`: Allows popups (such as `window.open()`, `target="_blank"`, or `showModalDialog()`). If this keyword is not used, the popup will silently fail to open.\n* `allow-popups-to-escape-sandbox`: Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can safely sandbox an advertisement without forcing the same restrictions upon the page the ad links to.\n* `allow-presentation`: Lets the resource start a [presentation session](https://developer.mozilla.org/en-US/docs/Web/API/PresentationRequest).\n* `allow-same-origin`: If this token is not used, the resource is treated as being from a special origin that always fails the [same-origin policy](https://developer.mozilla.org/en-US/docs/Glossary/same-origin_policy "same-origin policy: 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.").\n* `allow-scripts`: Lets the resource run scripts (but not create popup windows).\n* `allow-storage-access-by-user-activation` : Lets the resource request access to the parent\'s storage capabilities with the [Storage Access API](https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API).\n* `allow-top-navigation`: Lets the resource navigate the top-level browsing context (the one named `_top`).\n* `allow-top-navigation-by-user-activation`: Lets the resource navigate the top-level browsing context, but only if initiated by a user gesture.\n\n**Notes about sandboxing:**\n\n* When the embedded document has the same origin as the embedding page, it is **strongly discouraged** to use both `allow-scripts` and `allow-same-origin`, as that lets the embedded document remove the `sandbox` attribute — making it no more secure than not using the `sandbox` attribute at all.\n* Sandboxing is useless if the attacker can display content outside a sandboxed `iframe` — such as if the viewer opens the frame in a new tab. Such content should be also served from a _separate origin_ to limit potential damage.\n* The `sandbox` attribute is unsupported in Internet Explorer 9 and earlier.'}},{name:"seamless",valueSet:"v"},{name:"allowfullscreen",valueSet:"v",description:{kind:"markdown",value:'Set to `true` if the `<iframe>` can activate fullscreen mode by calling the [`requestFullscreen()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen "The Element.requestFullscreen() method issues an asynchronous request to make the element be displayed in full-screen mode.") method.'}},{name:"width",description:{kind:"markdown",value:"The width of the frame in CSS pixels. Default is `300`."}},{name:"height",description:{kind:"markdown",value:"The height of the frame in CSS pixels. Default is `150`."}},{name:"allow",description:"Specifies a [feature policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Feature_Policy) for the `<iframe>`."},{name:"allowpaymentrequest",description:"Set to `true` if a cross-origin `<iframe>` should be allowed to invoke the [Payment Request API](https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API)."},{name:"allowpaymentrequest",description:'This attribute is considered a legacy attribute and redefined as `allow="payment"`.'},{name:"csp",description:'A [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) enforced for the embedded resource. See [`HTMLIFrameElement.csp`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/csp "The csp property of the HTMLIFrameElement interface specifies the Content Security Policy that an embedded document must agree to enforce upon itself.") for details.'},{name:"importance",description:"The download priority of the resource in the `<iframe>`'s `src` attribute. Allowed values:\n\n`auto` (default)\n\nNo preference. The browser uses its own heuristics to decide the priority of the resource.\n\n`high`\n\nThe resource should be downloaded before other lower-priority page resources.\n\n`low`\n\nThe 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→HTTPS), but don\'t send it to a less secure destination (HTTPS→HTTP).\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→HTTPS), and send no header to a less secure destination (HTTPS→HTTP).\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/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/iframe"}]},{name:"embed",description:{kind:"markdown",value:"The embed element provides an integration point for an external (typically non-HTML) application or interactive content."},attributes:[{name:"src",description:{kind:"markdown",value:"The URL of the resource being embedded."}},{name:"type",description:{kind:"markdown",value:"The MIME type to use to select the plug-in to instantiate."}},{name:"width",description:{kind:"markdown",value:"The displayed width of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed."}},{name:"height",description:{kind:"markdown",value:"The displayed height of the resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). This must be an absolute value; percentages are _not_ allowed."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/embed"}]},{name:"object",description:{kind:"markdown",value:"The object element can represent an external resource, which, depending on the type of the resource, will either be treated as an image, as a nested browsing context, or as an external resource to be processed by a plugin."},attributes:[{name:"data",description:{kind:"markdown",value:"The address of the resource as a valid URL. At least one of **data** and **type** must be defined."}},{name:"type",description:{kind:"markdown",value:"The [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource specified by **data**. At least one of **data** and **type** must be defined."}},{name:"typemustmatch",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates if the **type** attribute and the actual [content type](https://developer.mozilla.org/en-US/docs/Glossary/Content_type) of the resource must match to be used."}},{name:"name",description:{kind:"markdown",value:"The name of valid browsing context (HTML5), or the name of the control (HTML 4)."}},{name:"usemap",description:{kind:"markdown",value:"A hash-name reference to a [`<map>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map \"The HTML <map> element is used with <area> elements to define an image map (a clickable link area).\") element; that is a '#' followed by the value of a [`name`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map#attr-name) of a map element."}},{name:"form",description:{kind:"markdown",value:'The form element, if any, that the object element is associated with (its _form owner_). The value of the attribute must be an ID of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element in the same document.'}},{name:"width",description:{kind:"markdown",value:"The width of the display resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))"}},{name:"height",description:{kind:"markdown",value:"The height of the displayed resource, in [CSS pixels](https://drafts.csswg.org/css-values/#px). -- (Absolute values only. [NO percentages](https://html.spec.whatwg.org/multipage/embedded-content.html#dimension-attributes))"}},{name:"archive",description:"A space-separated list of URIs for archives of resources for the object."},{name:"border",description:"The width of a border around the control, in pixels."},{name:"classid",description:"The URI of the object's implementation. It can be used together with, or in place of, the **data** attribute."},{name:"codebase",description:"The base path used to resolve relative URIs specified by **classid**, **data**, or **archive**. If not specified, the default is the base URI of the current document."},{name:"codetype",description:"The content type of the data specified by **classid**."},{name:"declare",description:"The presence of this Boolean attribute makes this element a declaration only. The object must be instantiated by a subsequent `<object>` element. In HTML5, repeat the <object> element completely each that that the resource is reused."},{name:"standby",description:"A message that the browser can show while loading the object's implementation and data."},{name:"tabindex",description:"The position of the element in the tabbing navigation order for the current document."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/object"}]},{name:"param",description:{kind:"markdown",value:"The param element defines parameters for plugins invoked by object elements. It does not represent anything on its own."},attributes:[{name:"name",description:{kind:"markdown",value:"Name of the parameter."}},{name:"value",description:{kind:"markdown",value:"Specifies the value of the parameter."}},{name:"type",description:'Only used if the `valuetype` is set to "ref". Specifies the MIME type of values found at the URI specified by value.'},{name:"valuetype",description:'Specifies the type of the `value` attribute. Possible values are:\n\n* data: Default value. The value is passed to the object\'s implementation as a string.\n* ref: The value is a URI to a resource where run-time values are stored.\n* 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.\n\nIf not set, `preload`'s default value is browser-defined (i.e. each browser may have its own default value). The spec advises it to be set to `metadata`.\n\n**Usage notes:**\n\n* The `autoplay` attribute has precedence over `preload`. If `autoplay` is specified, the browser would obviously need to start downloading the audio for playback.\n* The browser is not forced by the specification to follow the value of this attribute; it is a mere hint."}},{name:"autoplay",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute: if specified, the audio will automatically begin playback as soon as it can do so, without waiting for the entire audio file to finish downloading.\n\n**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: if specified, the audio player will automatically seek back to the start upon 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: the 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 to be valid. Among the list, there must be only one string containing the same tuple of width descriptor and pixel density descriptor. \nThe browser chooses the most adequate image to display at a given point of time. \nThe `srcset` 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:"media",description:'[Media query](https://developer.mozilla.org/en-US/docs/CSS/Media_queries) of the resource\'s intended media; this should be used only in 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.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/source"}]},{name:"track",description:{kind:"markdown",value:"The track element allows authors to specify explicit external timed text tracks for media elements. It does not represent anything on its own."},attributes:[{name:"default",valueSet:"v",description:{kind:"markdown",value:"This attribute indicates that the track should be enabled unless the user's preferences indicate that another track is more appropriate. This may only be used on one `track` element per media element."}},{name:"kind",valueSet:"tk",description:{kind:"markdown",value:"How the text track is meant to be used. If omitted the default kind is `subtitles`. If the attribute is not present, it will use the `subtitles`. If the attribute contains an invalid value, it will use `metadata`. (Versions of Chrome earlier than 52 treated an invalid value as `subtitles`.) The following keywords are allowed:\n\n* `subtitles`\n * Subtitles provide translation of content that cannot be understood by the viewer. For example dialogue or text that is not English in an English language film.\n * Subtitles may contain additional content, usually extra background information. For example the text at the beginning of the Star Wars films, or the date, time, and location of a scene.\n* `captions`\n * Closed captions provide a transcription and possibly a translation of audio.\n * It may include important non-verbal information such as music cues or sound effects. It may indicate the cue's source (e.g. music, text, character).\n * Suitable for users who are deaf or when the sound is muted.\n* `descriptions`\n * Textual description of the video content.\n * Suitable for users who are blind or where the video cannot be seen.\n* `chapters`\n * Chapter titles are intended to be used when the user is navigating the media resource.\n* `metadata`\n * Tracks used by scripts. Not visible to the user."}},{name:"label",description:{kind:"markdown",value:"A user-readable title of the text track which is used by the browser when listing available text tracks."}},{name:"src",description:{kind:"markdown",value:'Address of the track (`.vtt` file). Must be a valid URL. This attribute must be specified and its URL value must have the same origin as the document — unless the [`<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: the browser will choose the most suitable one. It can also be the destination for streamed media, using a MediaStream.") or [`<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.") parent element of the `track` element has a [`crossorigin`](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) attribute.'}},{name:"srclang",description:{kind:"markdown",value:"Language of the track text data. It must be a valid [BCP 47](https://r12a.github.io/app-subtags/) language tag. If the `kind` attribute is set to `subtitles,` then `srclang` must be defined."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/track"}]},{name:"map",description:{kind:"markdown",value:"The map element, in conjunction with an img element and any area element descendants, defines an image map. The element represents its children."},attributes:[{name:"name",description:{kind:"markdown",value:"The name attribute gives the map a name so that it can be referenced. The attribute must be present and must have a non-empty value with no space characters. The value of the name attribute must not be a compatibility-caseless match for the value of the name attribute of another map element in the same document. If the id attribute is also specified, both attributes must have the same value."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/map"}]},{name:"area",description:{kind:"markdown",value:"The area element represents either a hyperlink with some text and a corresponding area on an image map, or a dead area on an image map."},attributes:[{name:"alt"},{name:"coords"},{name:"shape",valueSet:"sh"},{name:"href"},{name:"target"},{name:"download"},{name:"ping"},{name:"rel"},{name:"hreflang"},{name:"type"},{name:"accesskey",description:"Specifies a keyboard navigation accelerator for the element. Pressing ALT or a similar key in association with the specified character selects the form control correlated with that key sequence. Page designers are forewarned to avoid key sequences already bound to browsers. This attribute is global since HTML5."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/area"}]},{name:"table",description:{kind:"markdown",value:"The table element represents data with more than one dimension, in the form of a table."},attributes:[{name:"border"},{name:"align",description:'This enumerated attribute indicates how the table must be aligned inside the containing document. It may have the following values:\n\n* left: the table is displayed on the left side of the document;\n* center: the table is displayed in the center of the document;\n* right: the table is displayed on the right side of the document.\n\n**Usage Note**\n\n* **Do not use this attribute**, as it has been deprecated. The [`<table>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table "The HTML <table> element represents tabular data — that is, information presented in a two-dimensional table comprised of rows and columns of cells containing data.") element should be styled using [CSS](https://developer.mozilla.org/en-US/docs/CSS). Set [`margin-left`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left "The margin-left CSS property sets the margin area on the left side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") and [`margin-right`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right "The margin-right CSS property sets the margin area on the right side of an element. A positive value places it farther from its neighbors, while a negative value places it closer.") to `auto` or [`margin`](https://developer.mozilla.org/en-US/docs/Web/CSS/margin "The margin CSS property sets the margin area on all four sides of an element. It is a shorthand for margin-top, margin-right, margin-bottom, and margin-left.") to `0 auto` to achieve an effect that is similar to the align attribute.\n* Prior to Firefox 4, Firefox also supported the `middle`, `absmiddle`, and `abscenter` values as synonyms of `center`, in quirks mode only.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/table"}]},{name:"caption",description:{kind:"markdown",value:"The caption element represents the title of the table that is its parent, if it has a parent and that is a table element."},attributes:[{name:"align",description:'This enumerated attribute indicates how the caption must be aligned with respect to the table. It may have one of the following values:\n\n`left`\n\nThe caption is displayed to the left of the table.\n\n`top`\n\nThe caption is displayed above the table.\n\n`right`\n\nThe caption is displayed to the right of the table.\n\n`bottom`\n\nThe caption is displayed below the table.\n\n**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 2212](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 inline or table-cell box. This means it works like vertical-align but in the horizontal direction.") property can be used.\n * If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-char) as the value of 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 Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/colgroup"}]},{name:"col",description:{kind:"markdown",value:"If a col element has a parent and that is a colgroup element that itself has a parent that is a table element, then the col element represents one or more columns in the column group represented by that colgroup."},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 2212](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, its value is inherited from the [`align`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup#attr-align) 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 this `<col>` element belongs too. If there are none, the `left` value is assumed.\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 [`<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.") 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 [`<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.") 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 the `td:nth-child(an+b)` CSS selector. Set `a` to zero and `b` to the position of the column in the table, e.g. `td:nth-child(2) { text-align: right; }` to right-align the second column.\n * If the table does use a [`colspan`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td#attr-colspan) attribute, the effect can be achieved by combining adequate CSS attribute selectors like `[colspan=n]`, though this is not trivial.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col#attr-char) as the value of 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 Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/col"}]},{name:"tbody",description:{kind:"markdown",value:"The tbody element represents a block of rows that consist of a body of data for the parent table element, if the tbody element has a parent and it is a table."},attributes:[{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each 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/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes.\n\nIf this attribute is not set, the `left` value is assumed.\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, use 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 on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-char) as the value of 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 Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/tbody"}]},{name:"thead",description:{kind:"markdown",value:"The thead element represents the block of rows that consist of the column labels (headers) for the parent table element, if the thead element has a parent and it is a table."},attributes:[{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each 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/thead#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-charoff) attributes Unimplemented (see [bug 2212](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.\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, use 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 on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead#attr-char) as the value of 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 Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/thead"}]},{name:"tfoot",description:{kind:"markdown",value:"The tfoot element represents the block of rows that consist of the column summaries (footers) for the parent table element, if the tfoot element has a parent and it is a table."},attributes:[{name:"align",description:'This enumerated attribute specifies how horizontal alignment of each 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/tbody#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody#attr-charoff) attributes Unimplemented (see [bug 2212](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.\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, use 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 on it.\n* To achieve the same effect as the `char` value, in CSS3, you can use the value of the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot#attr-char) as the value of 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 Unimplemented.'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/tfoot"}]},{name:"tr",description:{kind:"markdown",value:"The tr element represents a row of cells in a table."},attributes:[{name:"align",description:'A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString "DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.") which specifies how the cell\'s context should be aligned horizontally within the cells in the row; this is shorthand for using `align` on every cell in the row individually. Possible values are:\n\n`left`\n\nAlign the content of each cell at its left edge.\n\n`center`\n\nCenter the contents of each cell between their left and right edges.\n\n`right`\n\nAlign the content of each cell at its right edge.\n\n`justify`\n\nWiden whitespaces within the text of each cell so that the text fills the full width of each cell (full justification).\n\n`char`\n\nAlign each cell in the row on a specific character (such that each row in the column that is configured this way will horizontally align its cells on that character). This uses the [`char`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-char) and [`charoff`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr#attr-charoff) to establish the alignment character (typically "." or "," when aligning numerical data) and the number of characters that should follow the alignment character. This alignment type was never widely supported.\n\nIf no value is expressly set for `align`, the parent node\'s value is inherited.\n\nInstead of using the obsolete `align` attribute, you should instead use 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 establish `left`, `center`, `right`, or `justify` alignment for the row\'s cells. To apply character-based alignment, set 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 alignment character (such as `"."` or `","`).'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/tr"}]},{name:"td",description:{kind:"markdown",value:"The td element represents a data cell in a table."},attributes:[{name:"colspan"},{name:"rowspan"},{name:"headers"},{name:"abbr",description:"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.\n\n**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 2212](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:\n\n \n\n`black` = "#000000"\n\n \n\n`green` = "#008000"\n\n \n\n`silver` = "#C0C0C0"\n\n \n\n`lime` = "#00FF00"\n\n \n\n`gray` = "#808080"\n\n \n\n`olive` = "#808000"\n\n \n\n`white` = "#FFFFFF"\n\n \n\n`yellow` = "#FFFF00"\n\n \n\n`maroon` = "#800000"\n\n \n\n`navy` = "#000080"\n\n \n\n`red` = "#FF0000"\n\n \n\n`blue` = "#0000FF"\n\n \n\n`purple` = "#800080"\n\n \n\n`teal` = "#008080"\n\n \n\n`fuchsia` = "#FF00FF"\n\n \n\n`aqua` = "#00FFFF"\n\n**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:\n\n \n\n`black` = "#000000"\n\n \n\n`green` = "#008000"\n\n \n\n`silver` = "#C0C0C0"\n\n \n\n`lime` = "#00FF00"\n\n \n\n`gray` = "#808080"\n\n \n\n`olive` = "#808000"\n\n \n\n`white` = "#FFFFFF"\n\n \n\n`yellow` = "#FFFF00"\n\n \n\n`maroon` = "#800000"\n\n \n\n`navy` = "#000080"\n\n \n\n`red` = "#FF0000"\n\n \n\n`blue` = "#0000FF"\n\n \n\n`purple` = "#800080"\n\n \n\n`teal` = "#008080"\n\n \n\n`fuchsia` = "#FF00FF"\n\n \n\n`aqua` = "#00FFFF"\n\n**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 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 with the `type` attribute set to "file".\n* `text/plain`: (HTML5)\n\nThis value can be overridden by a [`formenctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formenctype) 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:"method",valueSet:"m",description:{kind:"markdown",value:'The [HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) method that the browser uses to submit the form. Possible values are:\n\n* `post`: Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) ; form data are included in the body of the form and sent to the server.\n* `get`: Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a \'?\' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\n* `dialog`: Use when the form is inside a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog "The HTML <dialog> element represents a dialog box or other interactive component, such as an inspector or window.") element to close the dialog when submitted.\n\nThis value can be overridden by a [`formmethod`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formmethod) 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:"name",description:{kind:"markdown",value:"The name of the form. In HTML 4, its use is deprecated (`id` should be used instead). It must be unique among the forms in a document and not just an empty string in HTML 5."}},{name:"novalidate",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the form is not to be validated when submitted. If this attribute is not specified (and therefore the form is validated), this default setting can be overridden by a [`formnovalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formnovalidate) 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 belonging to the form.'}},{name:"target",description:{kind:"markdown",value:'A name or keyword indicating where to display the response that is received after submitting the form. In HTML 4, this is the name/keyword for a frame. In HTML5, it is a name/keyword for a _browsing context_ (for example, tab, window, or inline frame). The following keywords have special meanings:\n\n* `_self`: Load the response into the same HTML 4 frame (or HTML5 browsing context) as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the response into a new unnamed HTML 4 window or HTML5 browsing context.\n* `_parent`: Load the response into the HTML 4 frameset parent of the current frame, or HTML5 parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: HTML 4: Load the response into the full original window, and cancel all other frames. HTML5: Load the response into the top-level browsing context (i.e., the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`.\n* _iframename_: The response is displayed in a named [`<iframe>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe "The HTML Inline Frame element (<iframe>) represents a nested browsing context, embedding another HTML page into the current one.").\n\nHTML5: This value can be overridden by a [`formtarget`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-formtarget) 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:"accept",description:'A comma-separated list of content types that the server accepts.\n\n**Usage note:** This attribute has been removed in HTML5 and should no longer be used. Instead, use the [`accept`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept) attribute of the specific [`<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:"autocapitalize",description:"This is a nonstandard attribute used by iOS Safari Mobile which controls whether and how the text value for textual form control descendants should be automatically capitalized as it is entered/edited by the user. If the `autocapitalize` attribute is specified on an individual form control descendant, it trumps the form-wide `autocapitalize` setting. The non-deprecated values are available in iOS 5 and later. The default value is `sentences`. Possible values are:\n\n* `none`: Completely disables automatic capitalization\n* `sentences`: Automatically capitalize the first letter of sentences.\n* `words`: Automatically capitalize the first letter of words.\n* `characters`: Automatically capitalize all characters.\n* `on`: Deprecated since iOS 5.\n* `off`: Deprecated since iOS 5."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/form"}]},{name:"label",description:{kind:"markdown",value:"The label element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element's labeled control, either using the for attribute, or by putting the form control inside the label element itself."},attributes:[{name:"form",description:{kind:"markdown",value:'The [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element with which the label is associated (its _form owner_). If specified, the value of the attribute is the `id` of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element in the same document. This lets you place label elements anywhere within a document, not just as descendants of their form elements.'}},{name:"for",description:{kind:"markdown",value:"The [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#attr-id) of a [labelable](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Form_labelable) form-related element in the same document as the `<label>` element. The first element in the document with an `id` matching the value of the `for` attribute is the _labeled control_ for this label element, if it is a labelable element. If it is not labelable then the `for` attribute has no effect. If there are other elements which also match the `id` value, later in the document, they are not considered.\n\n**Note**: A `<label>` element can have both a `for` attribute and a contained control element, as long as the `for` attribute points to the contained control element."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/label"}]},{name:"input",description:{kind:"markdown",value:"The input element represents a typed data field, usually with a form control to allow the user to edit the data."},attributes:[{name:"accept"},{name:"alt"},{name:"autocomplete",valueSet:"inputautocomplete"},{name:"autofocus",valueSet:"v"},{name:"checked",valueSet:"v"},{name:"dirname"},{name:"disabled",valueSet:"v"},{name:"form"},{name:"formaction"},{name:"formenctype",valueSet:"et"},{name:"formmethod",valueSet:"fm"},{name:"formnovalidate",valueSet:"v"},{name:"formtarget"},{name:"height"},{name:"inputmode",valueSet:"im"},{name:"list"},{name:"max"},{name:"maxlength"},{name:"min"},{name:"minlength"},{name:"multiple",valueSet:"v"},{name:"name"},{name:"pattern"},{name:"placeholder"},{name:"readonly",valueSet:"v"},{name:"required",valueSet:"v"},{name:"size"},{name:"src"},{name:"step"},{name:"type",valueSet:"t"},{name:"value"},{name:"width"}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/input"}]},{name:"button",description:{kind:"markdown",value:"The button element represents a button labeled by its contents."},attributes:[{name:"autofocus",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute lets you specify that the button should have input focus when the page loads, unless the user overrides it, for example by typing in a different control. Only one form-associated element in a document can have this attribute specified."}},{name:"disabled",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the user cannot interact with the button. If this attribute is not specified, the button inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset "The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form."); if there is no containing element with the **disabled** attribute set, then the button is enabled.\n\nFirefox will, unlike other browsers, by default, [persist the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of 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.") across page loads. Use the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-autocomplete) attribute to control this feature.'}},{name:"form",description:{kind:"markdown",value:'The form element that the button is associated with (its _form owner_). The value of the attribute must be the **id** attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element in the same document. If this attribute is not specified, the `<button>` element will be associated to an ancestor [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element, if one exists. This attribute enables you to associate `<button>` elements to [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") elements anywhere within a document, not just as descendants of [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") elements.'}},{name:"formaction",description:{kind:"markdown",value:"The URI of a program that processes the information submitted by the button. If specified, it overrides the [`action`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-action) attribute of the button's form owner."}},{name:"formenctype",valueSet:"et",description:{kind:"markdown",value:'If the button is a submit button, this attribute specifies the 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`: Use this value if you are using an [`<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 with the [`type`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-type) attribute set to `file`.\n* `text/plain`\n\nIf this attribute is specified, it overrides the [`enctype`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-enctype) attribute of the button\'s form owner.'}},{name:"formmethod",valueSet:"fm",description:{kind:"markdown",value:"If the button is a submit button, this attribute specifies the HTTP method that the browser uses to submit the form. Possible values are:\n\n* `post`: The data from the form are included in the body of the form and sent to the server.\n* `get`: The data from the form are appended to the **form** attribute URI, with a '?' as a separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters.\n\nIf specified, this attribute overrides the [`method`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-method) attribute of the button's form owner."}},{name:"formnovalidate",valueSet:"v",description:{kind:"markdown",value:"If the button is a submit button, this Boolean attribute specifies that the form is not to be validated when it is submitted. If this attribute is specified, it overrides the [`novalidate`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-novalidate) attribute of the button's form owner."}},{name:"formtarget",description:{kind:"markdown",value:"If the button is a submit button, this attribute is a name or keyword indicating where to display the response that is received after submitting the form. This is a name of, or keyword for, a _browsing context_ (for example, tab, window, or inline frame). If this attribute is specified, it overrides the [`target`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-target) attribute of the button's form owner. The following keywords have special meanings:\n\n* `_self`: Load the response into the same browsing context as the current one. This value is the default if the attribute is not specified.\n* `_blank`: Load the response into a new unnamed browsing context.\n* `_parent`: Load the response into the parent browsing context of the current one. If there is no parent, this option behaves the same way as `_self`.\n* `_top`: Load the response into the top-level browsing context (that is, the browsing context that is an ancestor of the current one, and has no parent). If there is no parent, this option behaves the same way as `_self`."}},{name:"name",description:{kind:"markdown",value:"The name of the button, which is submitted with the form data."}},{name:"type",valueSet:"bt",description:{kind:"markdown",value:"The type of the button. Possible values are:\n\n* `submit`: The button submits the form data to the server. This is the default if the attribute is not specified, or if the attribute is dynamically changed to an empty or invalid value.\n* `reset`: The button resets all the controls to their initial values.\n* `button`: The button has no default behavior. It can have client-side scripts associated with the element's events, which are triggered when the events occur."}},{name:"value",description:{kind:"markdown",value:"The initial value of the button. It defines the value associated with the button which is submitted with the form data. This value is passed to the server in params when the form is submitted."}},{name:"autocomplete",description:'The use of this 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.") is nonstandard and Firefox-specific. By default, unlike other browsers, [Firefox persists the dynamic disabled state](https://stackoverflow.com/questions/5985839/bug-with-firefox-disabled-attribute-of-input-not-resetting-when-refreshing) of 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.") across page loads. Setting the value of this attribute to `off` (i.e. `autocomplete="off"`) disables this feature. See [bug 654072](https://bugzilla.mozilla.org/show_bug.cgi?id=654072 "if disabled state is changed with javascript, the normal state doesn\'t return after refreshing the page").'}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/button"}]},{name:"select",description:{kind:"markdown",value:"The select element represents a control for selecting amongst a set of options."},attributes:[{name:"autocomplete",valueSet:"inputautocomplete",description:{kind:"markdown",value:'A [`DOMString`](https://developer.mozilla.org/en-US/docs/Web/API/DOMString "DOMString is a UTF-16 String. As JavaScript already uses such strings, DOMString is mapped directly to a String.") providing a hint for a [user agent\'s](https://developer.mozilla.org/en-US/docs/Glossary/user_agent "user agent\'s: A user agent is a computer program representing a person, for example, a browser in a Web context.") autocomplete feature. See [The HTML autocomplete attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for a complete list of values and details on how to use autocomplete.'}},{name:"autofocus",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form element in a document can have the `autofocus` attribute."}},{name:"disabled",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example `fieldset`; if there is no containing element with the `disabled` attribute set, then the control is enabled."}},{name:"form",description:{kind:"markdown",value:'This attribute lets you specify the form element to which the select element is associated (that is, its "form owner"). If this attribute is specified, its value must be the same as the `id` of a form element in the same document. This enables you to place select elements anywhere within a document, not just as descendants of their form elements.'}},{name:"multiple",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates that multiple options can be selected in the list. If it is not specified, then only one option can be selected at a time. When `multiple` is specified, most browsers will show a scrolling list box instead of a single line dropdown."}},{name:"name",description:{kind:"markdown",value:"This attribute is used to specify the name of the control."}},{name:"required",valueSet:"v",description:{kind:"markdown",value:"A Boolean attribute indicating that an option with a non-empty string value must be selected."}},{name:"size",description:{kind:"markdown",value:"If the control is presented as a scrolling list box (e.g. when `multiple` is specified), this attribute represents the number of rows in the list that should be visible at one time. Browsers are not required to present a select element as a scrolled list box. The default value is 0.\n\n**Note:** According to the HTML5 specification, the default value for size should be 1; however, in practice, this has been found to break some web sites, and no other browser currently does that, so Mozilla has opted to continue to return 0 for the time being with Firefox."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/select"}]},{name:"datalist",description:{kind:"markdown",value:"The datalist element represents a set of option elements that represent predefined options for other controls. In the rendering, the datalist element represents nothing and it, along with its children, should be hidden."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/datalist"}]},{name:"optgroup",description:{kind:"markdown",value:"The optgroup element represents a group of option elements with a common label."},attributes:[{name:"disabled",valueSet:"v",description:{kind:"markdown",value:"If this Boolean attribute is set, none of the items in this option group is selectable. Often browsers grey out such control and it won't receive any browsing events, like mouse clicks or focus-related ones."}},{name:"label",description:{kind:"markdown",value:"The name of the group of options, which the browser can use when labeling the options in the user interface. This attribute is mandatory if this element is used."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/optgroup"}]},{name:"option",description:{kind:"markdown",value:"The option element represents an option in a select element or as part of a list of suggestions in a datalist element."},attributes:[{name:"disabled",valueSet:"v",description:{kind:"markdown",value:'If this Boolean attribute is set, this option is not checkable. Often browsers grey out such control and it won\'t receive any browsing event, like mouse clicks or focus-related ones. If this attribute is not set, the element can still be disabled if one of its ancestors is a disabled [`<optgroup>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup "The HTML <optgroup> element creates a grouping of options within a <select> element.") element.'}},{name:"label",description:{kind:"markdown",value:"This attribute is text for the label indicating the meaning of the option. If the `label` attribute isn't defined, its value is that of the element text content."}},{name:"selected",valueSet:"v",description:{kind:"markdown",value:'If present, this Boolean attribute indicates that the option is initially selected. If the `<option>` element is the descendant of a [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select "The HTML <select> element represents a control that provides a menu of options") element whose [`multiple`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple) attribute is not set, only one single `<option>` of this [`<select>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select "The HTML <select> element represents a control that provides a menu of options") element may have the `selected` attribute.'}},{name:"value",description:{kind:"markdown",value:"The content of this attribute represents the value to be submitted with the form, should this option be selected. If this attribute is omitted, the value is taken from the text content of the option element."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/option"}]},{name:"textarea",description:{kind:"markdown",value:"The textarea element represents a multiline plain text edit control for the element's raw value. The contents of the control represent the control's default value."},attributes:[{name:"autocomplete",valueSet:"inputautocomplete",description:{kind:"markdown",value:'This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are:\n\n* `off`: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry.\n* `on`: The browser can automatically complete the value based on values that the user has entered during previous uses.\n\nIf the `autocomplete` attribute is not specified on a `<textarea>` element, then the browser uses the `autocomplete` attribute value of the `<textarea>` element\'s form owner. The form owner is either the [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element that this `<textarea>` element is a descendant of or the form element whose `id` is specified by the `form` attribute of the input element. For more information, see the [`autocomplete`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-autocomplete) attribute in [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.").'}},{name:"autofocus",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute lets you specify that a form control should have input focus when the page loads. Only one form-associated element in a document can have this attribute specified."}},{name:"cols",description:{kind:"markdown",value:"The visible width of the text control, in average character widths. If it is specified, it must be a positive integer. If it is not specified, the default value is `20`."}},{name:"dirname"},{name:"disabled",valueSet:"v",description:{kind:"markdown",value:'This Boolean attribute indicates that the user cannot interact with the control. If this attribute is not specified, the control inherits its setting from the containing element, for example [`<fieldset>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset "The HTML <fieldset> element is used to group several controls as well as labels (<label>) within a web form."); if there is no containing element when the `disabled` attribute is set, the control is enabled.'}},{name:"form",description:{kind:"markdown",value:'The form element that the `<textarea>` element is associated with (its "form owner"). The value of the attribute must be the `id` of a form element in the same document. If this attribute is not specified, the `<textarea>` element must be a descendant of a form element. This attribute enables you to place `<textarea>` elements anywhere within a document, not just as descendants of form elements.'}},{name:"inputmode",valueSet:"im"},{name:"maxlength",description:{kind:"markdown",value:"The maximum number of characters (unicode code points) that the user can enter. If this value isn't specified, the user can enter an unlimited number of characters."}},{name:"minlength",description:{kind:"markdown",value:"The minimum number of characters (unicode code points) required that the user should enter."}},{name:"name",description:{kind:"markdown",value:"The name of the control."}},{name:"placeholder",description:{kind:"markdown",value:'A hint to the user of what can be entered in the control. Carriage returns or line-feeds within the placeholder text must be treated as line breaks when rendering the hint.\n\n**Note:** Placeholders should only be used to show an example of the type of data that should be entered into a form; they are _not_ a substitute for a proper [`<label>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label "The HTML <label> element represents a caption for an item in a user interface.") element tied to the input. See [Labels and placeholders](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Labels_and_placeholders "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.") in [<input>: The Input (Form Input) element](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.") for a full explanation.'}},{name:"readonly",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates that the user cannot modify the value of the control. Unlike the `disabled` attribute, the `readonly` attribute does not prevent the user from clicking or selecting in the control. The value of a read-only control is still submitted with the form."}},{name:"required",valueSet:"v",description:{kind:"markdown",value:"This attribute specifies that the user must fill in a value before submitting a form."}},{name:"rows",description:{kind:"markdown",value:"The number of visible text lines for the control."}},{name:"wrap",valueSet:"w",description:{kind:"markdown",value:"Indicates how the control wraps text. Possible values are:\n\n* `hard`: The browser automatically inserts line breaks (CR+LF) so that each line has no more than the width of the control; the `cols` attribute must also be specified for this to take effect.\n* `soft`: The browser ensures that all line breaks in the value consist of a CR+LF pair, but does not insert any additional line breaks.\n* `off` : Like `soft` but changes appearance to `white-space: pre` so line segments exceeding `cols` are not wrapped and the `<textarea>` becomes horizontally scrollable.\n\nIf this attribute is not specified, `soft` is its default value."}},{name:"autocapitalize",description:"This is a non-standard attribute supported by WebKit on iOS (therefore nearly all browsers running on iOS, including Safari, Firefox, and Chrome), which controls whether and how the text value should be automatically capitalized as it is entered/edited by the user. The non-deprecated values are available in iOS 5 and later. Possible values are:\n\n* `none`: Completely disables automatic capitalization.\n* `sentences`: Automatically capitalize the first letter of sentences.\n* `words`: Automatically capitalize the first letter of words.\n* `characters`: Automatically capitalize all characters.\n* `on`: Deprecated since iOS 5.\n* `off`: Deprecated since iOS 5."},{name:"spellcheck",description:"Specifies whether the `<textarea>` is subject to spell checking by the underlying browser/OS. the value can be:\n\n* `true`: Indicates that the element needs to have its spelling and grammar checked.\n* `default` : Indicates that the element is to act according to a default behavior, possibly based on the parent element's own `spellcheck` value.\n* `false` : Indicates that the element should not be spell checked."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/textarea"}]},{name:"output",description:{kind:"markdown",value:"The output element represents the result of a calculation performed by the application, or the result of a user action."},attributes:[{name:"for",description:{kind:"markdown",value:"A space-separated list of other elements’ [`id`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)s, indicating that those elements contributed input values to (or otherwise affected) the calculation."}},{name:"form",description:{kind:"markdown",value:'The [form element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form) that this element is associated with (its "form owner"). The value of the attribute must be an `id` of a form element in the same document. If this attribute is not specified, the output element must be a descendant of a form element. This attribute enables you to place output elements anywhere within a document, not just as descendants of their form elements.'}},{name:"name",description:{kind:"markdown",value:'The name of the element, exposed in the [`HTMLFormElement`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement "The HTMLFormElement interface represents a <form> element in the DOM; it allows access to and in some cases modification of aspects of the form, as well as access to its component elements.") API.'}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/output"}]},{name:"progress",description:{kind:"markdown",value:"The progress element represents the completion progress of a task. The progress is either indeterminate, indicating that progress is being made but that it is not clear how much more work remains to be done before the task is complete (e.g. because the task is waiting for a remote host to respond), or the progress is a number in the range zero to a maximum, giving the fraction of work that has so far been completed."},attributes:[{name:"value",description:{kind:"markdown",value:"This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and `max`, or between 0 and 1 if `max` is omitted. If there is no `value` attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take."}},{name:"max",description:{kind:"markdown",value:"This attribute describes how much work the task indicated by the `progress` element requires. The `max` attribute, if present, must have a value greater than zero and be a valid floating point number. The default value is 1."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/progress"}]},{name:"meter",description:{kind:"markdown",value:"The meter element represents a scalar measurement within a known range, or a fractional value; for example disk usage, the relevance of a query result, or the fraction of a voting population to have selected a particular candidate."},attributes:[{name:"value",description:{kind:"markdown",value:"The current numeric value. This must be between the minimum and maximum values (`min` attribute and `max` attribute) if they are specified. If unspecified or malformed, the value is 0. If specified, but not within the range given by the `min` attribute and `max` attribute, the value is equal to the nearest end of the range.\n\n**Usage note:** Unless the `value` attribute is between `0` and `1` (inclusive), the `min` and `max` attributes should define the range so that the `value` attribute's value is within it."}},{name:"min",description:{kind:"markdown",value:"The lower numeric bound of the measured range. This must be less than the maximum value (`max` attribute), if specified. If unspecified, the minimum value is 0."}},{name:"max",description:{kind:"markdown",value:"The upper numeric bound of the measured range. This must be greater than the minimum value (`min` attribute), if specified. If unspecified, the maximum value is 1."}},{name:"low",description:{kind:"markdown",value:"The upper numeric bound of the low end of the measured range. This must be greater than the minimum value (`min` attribute), and it also must be less than the high value and maximum value (`high` attribute and `max` attribute, respectively), if any are specified. If unspecified, or if less than the minimum value, the `low` value is equal to the minimum value."}},{name:"high",description:{kind:"markdown",value:"The lower numeric bound of the high end of the measured range. This must be less than the maximum value (`max` attribute), and it also must be greater than the low value and minimum value (`low` attribute and **min** attribute, respectively), if any are specified. If unspecified, or if greater than the maximum value, the `high` value is equal to the maximum value."}},{name:"optimum",description:{kind:"markdown",value:"This attribute indicates the optimal numeric value. It must be within the range (as defined by the `min` attribute and `max` attribute). When used with the `low` attribute and `high` attribute, it gives an indication where along the range is considered preferable. For example, if it is between the `min` attribute and the `low` attribute, then the lower range is considered preferred."}},{name:"form",description:"This attribute associates the element with a `form` element that has ownership of the `meter` element. For example, a `meter` might be displaying a range corresponding to an `input` element of `type` _number_. This attribute is only used if the `meter` element is being used as a form-associated element; even then, it may be omitted if the element appears as a descendant of a `form` element."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/meter"}]},{name:"fieldset",description:{kind:"markdown",value:"The fieldset element represents a set of form controls optionally grouped under a common name."},attributes:[{name:"disabled",valueSet:"v",description:{kind:"markdown",value:"If this Boolean attribute is set, all form controls that are descendants of the `<fieldset>`, are disabled, meaning they are not editable and won't be submitted along with the `<form>`. They won't receive any browsing events, like mouse clicks or focus-related events. By default browsers display such controls grayed out. Note that form elements inside the [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend \"The HTML <legend> element represents a caption for the content of its parent <fieldset>.\") element won't be disabled."}},{name:"form",description:{kind:"markdown",value:'This attribute takes the value of the `id` attribute of a [`<form>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form "The HTML <form> element represents a document section that contains interactive controls for submitting information to a web server.") element you want the `<fieldset>` to be part of, even if it is not inside the form.'}},{name:"name",description:{kind:"markdown",value:'The name associated with the group.\n\n**Note**: The caption for the fieldset is given by the first [`<legend>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/legend "The HTML <legend> element represents a caption for the content of its parent <fieldset>.") element nested inside it.'}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/fieldset"}]},{name:"legend",description:{kind:"markdown",value:"The legend element represents a caption for the rest of the contents of the legend element's parent fieldset element, if any."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/legend"}]},{name:"details",description:{kind:"markdown",value:"The details element represents a disclosure widget from which the user can obtain additional information or controls."},attributes:[{name:"open",valueSet:"v",description:{kind:"markdown",value:"This Boolean attribute indicates whether or not the details — that is, the contents of the `<details>` element — are currently visible. The default, `false`, means the details are not visible."}}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/details"}]},{name:"summary",description:{kind:"markdown",value:"The summary element represents a summary, caption, or legend for the rest of the contents of the summary element's parent details element, if any."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/summary"}]},{name:"dialog",description:{kind:"markdown",value:"The dialog element represents a part of an application that a user interacts with to perform a task, for example a dialog box, inspector, or window."},attributes:[{name:"open",description:"Indicates that the dialog is active and available for interaction. When the `open` attribute is not set, the dialog shouldn't be shown to the user."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/dialog"}]},{name:"script",description:{kind:"markdown",value:"The script element allows authors to include dynamic script and data blocks in their documents. The element does not represent content for the user."},attributes:[{name:"src",description:{kind:"markdown",value:"This attribute specifies the URI of an external script; this can be used as an alternative to embedding a script directly within a document.\n\nIf a `script` element has a `src` attribute specified, it should not have a script embedded inside its tags."}},{name:"type",description:{kind:"markdown",value:'This attribute indicates the type of script represented. The value of this attribute will be in one of the following categories:\n\n* **Omitted or a JavaScript MIME type:** For HTML5-compliant browsers this indicates the script is JavaScript. HTML5 specification urges authors to omit the attribute rather than provide a redundant MIME type. In earlier browsers, this identified the scripting language of the embedded or imported (via the `src` attribute) code. JavaScript MIME types are [listed in the specification](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#JavaScript_types).\n* **`module`:** For HTML5-compliant browsers the code is treated as a JavaScript module. The processing of the script contents is not affected by the `charset` and `defer` attributes. For information on using `module`, see [ES6 in Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/). Code may behave differently when the `module` keyword is used.\n* **Any other value:** The embedded content is treated as a data block which won\'t be processed by the browser. Developers must use a valid MIME type that is not a JavaScript MIME type to denote data blocks. The `src` attribute will be ignored.\n\n**Note:** in Firefox you could specify the version of JavaScript contained in a `<script>` element by including a non-standard `version` parameter inside the `type` attribute — for example `type="text/javascript;version=1.8"`. This has been removed in Firefox 59 (see [bug 1428745](https://bugzilla.mozilla.org/show_bug.cgi?id=1428745 "FIXED: Remove support for version parameter from script loader")).'}},{name:"charset"},{name:"async",valueSet:"v",description:{kind:"markdown",value:'This is a Boolean attribute indicating that the browser should, if possible, load the script asynchronously.\n\nThis 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.\n\nBrowsers usually assume the worst case scenario and load scripts synchronously, (i.e. `async="false"`) during HTML parsing.\n\nDynamically 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"`.\n\nSee [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/) — 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 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 (e.g. HTTPS→HTTPS), but don\'t send it to a less secure destination (e.g. HTTPS→HTTP).\n* `strict-origin-when-cross-origin`: Send a full URL when performing a same-origin request, but only send the origin when the protocol security level stays the same (e.g.HTTPS→HTTPS), and send no header to a less secure destination (e.g. HTTPS→HTTP).\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/HTMLHyperlinkElementUtils/password), or [username](https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils/username)). **This value is unsafe**, because it leaks origins and paths from TLS-protected resources to insecure origins.\n\n**Note**: An empty string value (`""`) is both the default value, and a fallback value if `referrerpolicy` is not supported. If `referrerpolicy` is not explicitly specified on the `<script>` element, it will adopt a higher-level referrer policy, i.e. one set on the whole document or domain. If a higher-level policy is not available, the empty string is treated as being equivalent to `no-referrer-when-downgrade`.'},{name:"text",description:"Like the `textContent` attribute, this attribute sets the text content of the element. Unlike the `textContent` attribute, however, this attribute is evaluated as executable code after the node is inserted into the DOM."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/script"}]},{name:"noscript",description:{kind:"markdown",value:"The noscript element represents nothing if scripting is enabled, and represents its children if scripting is disabled. It is used to present different markup to user agents that support scripting and those that don't support scripting, by affecting how the document is parsed."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/noscript"}]},{name:"template",description:{kind:"markdown",value:"The template element is used to declare fragments of HTML that can be cloned and inserted in the document by script."},attributes:[],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/template"}]},{name:"canvas",description:{kind:"markdown",value:"The canvas element provides scripts with a resolution-dependent bitmap canvas, which can be used for rendering graphs, game graphics, art, or other visual images on the fly."},attributes:[{name:"width",description:{kind:"markdown",value:"The width of the coordinate space in CSS pixels. Defaults to 300."}},{name:"height",description:{kind:"markdown",value:"The height of the coordinate space in CSS pixels. Defaults to 150."}},{name:"moz-opaque",description:"Lets the canvas know whether or not translucency will be a factor. If the canvas knows there's no translucency, painting performance can be optimized. This is only supported by Mozilla-based browsers; use the standardized [`canvas.getContext('2d', { alpha: false })`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext \"The HTMLCanvasElement.getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\") instead."}],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Element/canvas"}]}],globalAttributes:[{name:"accesskey",description:{kind:"markdown",value:"Provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/accesskey"}]},{name:"autocapitalize",description:{kind:"markdown",value:"Controls whether and how text input is automatically capitalized as it is entered/edited by the user. It can have the following values:\n\n* `off` or `none`, no autocapitalization is applied (all letters default to lowercase)\n* `on` or `sentences`, the first letter of each sentence defaults to a capital letter; all other letters default to lowercase\n* `words`, the first letter of each word defaults to a capital letter; all other letters default to lowercase\n* `characters`, all letters should default to uppercase"},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/autocapitalize"}]},{name:"class",description:{kind:"markdown",value:'A space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the [class selectors](/en-US/docs/Web/CSS/Class_selectors) or functions like the method [`Document.getElementsByClassName()`](/en-US/docs/Web/API/Document/getElementsByClassName "returns an array-like object of all child elements which have all of the given class names.").'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/class"}]},{name:"contenteditable",description:{kind:"markdown",value:"An enumerated attribute indicating if the element should be editable by the user. If so, the browser modifies its widget to allow editing. The attribute must take one of the following values:\n\n* `true` or the _empty string_, which indicates that the element must be editable;\n* `false`, which indicates that the element must not be editable."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contenteditable"}]},{name:"contextmenu",description:{kind:"markdown",value:'The `[**id**](#attr-id)` of a [`<menu>`](/en-US/docs/Web/HTML/Element/menu "The HTML <menu> element represents a group of commands that a user can perform or activate. This includes both list menus, which might appear across the top of a screen, as well as context menus, such as those that might appear underneath a button after it has been clicked.") to use as the contextual menu for this element.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/contextmenu"}]},{name:"dir",description:{kind:"markdown",value:"An enumerated attribute indicating the directionality of the element's text. It can have the following values:\n\n* `ltr`, which means _left to right_ and is to be used for languages that are written from the left to the right (like English);\n* `rtl`, which means _right to left_ and is to be used for languages that are written from the right to the left (like Arabic);\n* `auto`, which lets the user agent decide. It uses a basic algorithm as it parses the characters inside the element until it finds a character with a strong directionality, then it applies that directionality to the whole element."},valueSet:"d",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/dir"}]},{name:"draggable",description:{kind:"markdown",value:"An enumerated attribute indicating whether the element can be dragged, using the [Drag and Drop API](/en-us/docs/DragDrop/Drag_and_Drop). It can have the following values:\n\n* `true`, which indicates that the element may be dragged\n* `false`, which indicates that the element may not be dragged."},valueSet:"b",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/draggable"}]},{name:"dropzone",description:{kind:"markdown",value:"An enumerated attribute indicating what types of content can be dropped on an element, using the [Drag and Drop API](/en-US/docs/DragDrop/Drag_and_Drop). It can have the following values:\n\n* `copy`, which indicates that dropping will create a copy of the element that was dragged\n* `move`, which indicates that the element that was dragged will be moved to this new location.\n* `link`, will create a link to the dragged data."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/dropzone"}]},{name:"exportparts",description:{kind:"markdown",value:"Used to transitively export shadow parts from a nested shadow tree into a containing light tree."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/exportparts"}]},{name:"hidden",description:{kind:"markdown",value:"A Boolean attribute indicates that the element is not yet, or is no longer, _relevant_. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown."},valueSet:"v",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/hidden"}]},{name:"id",description:{kind:"markdown",value:"Defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS)."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/id"}]},{name:"inputmode",description:{kind:"markdown",value:'Provides a hint to browsers as to the type of virtual keyboard configuration to use when editing this element or its contents. Used primarily on [`<input>`](/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.") elements, but is usable on any element while in `[contenteditable](/en-US/docs/Web/HTML/Global_attributes#attr-contenteditable)` mode.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/inputmode"}]},{name:"is",description:{kind:"markdown",value:"Allows you to specify that a standard HTML element should behave like a registered custom built-in element (see [Using custom elements](/en-US/docs/Web/Web_Components/Using_custom_elements) for more details)."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/is"}]},{name:"itemid",description:{kind:"markdown",value:"The unique, global identifier of an item."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemid"}]},{name:"itemprop",description:{kind:"markdown",value:"Used to add properties to an item. Every HTML element may have an `itemprop` attribute specified, where an `itemprop` consists of a name and value pair."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemprop"}]},{name:"itemref",description:{kind:"markdown",value:"Properties that are not descendants of an element with the `itemscope` attribute can be associated with the item using an `itemref`. It provides a list of element ids (not `itemid`s) with additional properties elsewhere in the document."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemref"}]},{name:"itemscope",description:{kind:"markdown",value:"`itemscope` (usually) works along with `[itemtype](/en-US/docs/Web/HTML/Global_attributes#attr-itemtype)` to specify that the HTML contained in a block is about a particular item. `itemscope` creates the Item and defines the scope of the `itemtype` associated with it. `itemtype` is a valid URL of a vocabulary (such as [schema.org](https://schema.org/)) that describes the item and its properties context."},valueSet:"v",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemscope"}]},{name:"itemtype",description:{kind:"markdown",value:"Specifies the URL of the vocabulary that will be used to define `itemprop`s (item properties) in the data structure. `[itemscope](/en-US/docs/Web/HTML/Global_attributes#attr-itemscope)` is used to set the scope of where in the data structure the vocabulary set by `itemtype` will be active."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/itemtype"}]},{name:"lang",description:{kind:"markdown",value:"Helps define the language of an element: the language that non-editable elements are in, or the language that editable elements should be written in by the user. The attribute contains one “language tag” (made of hyphen-separated “language subtags”) in the format defined in [_Tags for Identifying Languages (BCP47)_](https://www.ietf.org/rfc/bcp/bcp47.txt). [**xml:lang**](#attr-xml:lang) has priority over it."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/lang"}]},{name:"part",description:{kind:"markdown",value:'A space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the [`::part`](/en-US/docs/Web/CSS/::part "The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute.") pseudo-element.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/part"}]},{name:"role",valueSet:"roles"},{name:"slot",description:{kind:"markdown",value:"Assigns a slot in a [shadow DOM](/en-US/docs/Web/Web_Components/Shadow_DOM) shadow tree to an element: An element with a `slot` attribute is assigned to the slot created by the [`<slot>`](/en-US/docs/Web/HTML/Element/slot \"The HTML <slot> element—part of the Web Components technology suite—is a placeholder inside a web component that you can fill with your own markup, which lets you create separate DOM trees and present them together.\") element whose `[name](/en-US/docs/Web/HTML/Element/slot#attr-name)` attribute's value matches that `slot` attribute's value."},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/slot"}]},{name:"spellcheck",description:{kind:"markdown",value:"An enumerated attribute defines whether the element may be checked for spelling errors. It may have the following values:\n\n* `true`, which indicates that the element should be, if possible, checked for spelling errors;\n* `false`, which indicates that the element should not be checked for spelling errors."},valueSet:"b",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck"}]},{name:"style",description:{kind:"markdown",value:'Contains [CSS](/en-US/docs/Web/CSS) styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files. This attribute and the [`<style>`](/en-US/docs/Web/HTML/Element/style "The HTML <style> element contains style information for a document, or part of a document.") element have mainly the purpose of allowing for quick styling, for example for testing purposes.'},references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/HTML/Global_attributes/style"}]},{name:"tabindex",description:{kind:"markdown",value:"An integer attribute indicating if the element can take input focus (is _focusable_), if it should participate to sequential keyboard navigation, and if so, at what position. It can take several values:\n\n* a _negative value_ means that the element should be focusable, but should not be reachable via sequential keyboard navigation;\n* `0` means that the element should be focusable and reachable via sequential keyboard navigation, but its relative order is defined by the platform convention;\n* 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:"onended",description:{kind:"markdown",value:"Playback has stopped because the end of the media was reached."}},{name:"onerror",description:{kind:"markdown",value:"A resource failed to load."}},{name:"onfocus",description:{kind:"markdown",value:"An element has received focus (does not bubble)."}},{name:"onformchange"},{name:"onforminput"},{name:"oninput",description:{kind:"markdown",value:"The value of an element changes or the content of an element with the attribute contenteditable is modified."}},{name:"oninvalid",description:{kind:"markdown",value:"A submittable element has been checked and doesn't satisfy its constraints."}},{name:"onkeydown",description:{kind:"markdown",value:"A key is pressed down."}},{name:"onkeypress",description:{kind:"markdown",value:"A key is pressed down and that key normally produces a character value (use input instead)."}},{name:"onkeyup",description:{kind:"markdown",value:"A key is released."}},{name:"onload",description:{kind:"markdown",value:"A resource and its dependent resources have finished loading."}},{name:"onloadeddata",description:{kind:"markdown",value:"The first frame of the media has finished loading."}},{name:"onloadedmetadata",description:{kind:"markdown",value:"The metadata has been loaded."}},{name:"onloadstart",description:{kind:"markdown",value:"Progress has begun."}},{name:"onmousedown",description:{kind:"markdown",value:"A pointing device button (usually a mouse) is pressed on an element."}},{name:"onmousemove",description:{kind:"markdown",value:"A pointing device is moved over an element."}},{name:"onmouseout",description:{kind:"markdown",value:"A pointing device is moved off the element that has the listener attached or off one of its children."}},{name:"onmouseover",description:{kind:"markdown",value:"A pointing device is moved onto the element that has the listener attached or onto one of its children."}},{name:"onmouseup",description:{kind:"markdown",value:"A pointing device button is released over an element."}},{name:"onmousewheel"},{name:"onpause",description:{kind:"markdown",value:"Playback has been paused."}},{name:"onplay",description:{kind:"markdown",value:"Playback has begun."}},{name:"onplaying",description:{kind:"markdown",value:"Playback is ready to start after having been paused or delayed due to lack of data."}},{name:"onprogress",description:{kind:"markdown",value:"In progress."}},{name:"onratechange",description:{kind:"markdown",value:"The playback rate has changed."}},{name:"onreset",description:{kind:"markdown",value:"A form is reset."}},{name:"onresize",description:{kind:"markdown",value:"The document view has been resized."}},{name:"onreadystatechange",description:{kind:"markdown",value:"The readyState attribute of a document has changed."}},{name:"onscroll",description:{kind:"markdown",value:"The document view or an element has been scrolled."}},{name:"onseeked",description:{kind:"markdown",value:"A seek operation completed."}},{name:"onseeking",description:{kind:"markdown",value:"A seek operation began."}},{name:"onselect",description:{kind:"markdown",value:"Some text is being selected."}},{name:"onshow",description:{kind:"markdown",value:"A contextmenu event was fired on/bubbled to an element that has a contextmenu attribute"}},{name:"onstalled",description:{kind:"markdown",value:"The user agent is trying to fetch media data, but data is unexpectedly not forthcoming."}},{name:"onsubmit",description:{kind:"markdown",value:"A form is submitted."}},{name:"onsuspend",description:{kind:"markdown",value:"Media data loading has been suspended."}},{name:"ontimeupdate",description:{kind:"markdown",value:"The time indicated by the currentTime attribute has been updated."}},{name:"onvolumechange",description:{kind:"markdown",value:"The volume has changed."}},{name:"onwaiting",description:{kind:"markdown",value:"Playback has stopped because of a temporary lack of data."}},{name:"aria-activedescendant",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-activedescendant"}],description:{kind:"markdown",value:"Identifies the currently active element when DOM focus is on a [`composite`](https://www.w3.org/TR/wai-aria-1.1/#composite) widget, [`textbox`](https://www.w3.org/TR/wai-aria-1.1/#textbox), [`group`](https://www.w3.org/TR/wai-aria-1.1/#group), or [`application`](https://www.w3.org/TR/wai-aria-1.1/#application)."}},{name:"aria-atomic",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-atomic"}],description:{kind:"markdown",value:"Indicates whether [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology) will present all, or only parts of, the changed region based on the change notifications defined by the [`aria-relevant`](https://www.w3.org/TR/wai-aria-1.1/#aria-relevant) attribute."}},{name:"aria-autocomplete",valueSet:"autocomplete",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-autocomplete"}],description:{kind:"markdown",value:"Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be presented if they are made."}},{name:"aria-busy",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-busy"}],description:{kind:"markdown",value:"Indicates an element is being modified and that assistive technologies _MAY_ want to wait until the modifications are complete before exposing them to the user."}},{name:"aria-checked",valueSet:"tristate",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-checked"}],description:{kind:"markdown",value:'Indicates the current "checked" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of checkboxes, radio buttons, and other [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected).'}},{name:"aria-colcount",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-colcount"}],description:{kind:"markdown",value:"Defines the total number of columns in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex)."}},{name:"aria-colindex",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-colindex"}],description:{kind:"markdown",value:"Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) column index or position with respect to the total number of columns within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-colcount) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan)."}},{name:"aria-colspan",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-colspan"}],description:{kind:"markdown",value:"Defines the number of columns spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-colindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-colindex) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan)."}},{name:"aria-controls",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-controls"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) whose contents or presence are controlled by the current element. See related [`aria-owns`](https://www.w3.org/TR/wai-aria-1.1/#aria-owns)."}},{name:"aria-current",valueSet:"current",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-current"}],description:{kind:"markdown",value:"Indicates the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that represents the current item within a container or set of related elements."}},{name:"aria-describedat",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-describedat"}]},{name:"aria-describedby",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-describedby"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that describes the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby)."}},{name:"aria-disabled",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-disabled"}],description:{kind:"markdown",value:"Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is [perceivable](https://www.w3.org/TR/wai-aria-1.1/#dfn-perceivable) but disabled, so it is not editable or otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-hidden`](https://www.w3.org/TR/wai-aria-1.1/#aria-hidden) and [`aria-readonly`](https://www.w3.org/TR/wai-aria-1.1/#aria-readonly)."}},{name:"aria-dropeffect",valueSet:"dropeffect",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-dropeffect"}],description:{kind:"markdown",value:"\\[Deprecated in ARIA 1.1\\] Indicates what functions can be performed when a dragged object is released on the drop target."}},{name:"aria-errormessage",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides an error message for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-invalid`](https://www.w3.org/TR/wai-aria-1.1/#aria-invalid) and [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)."}},{name:"aria-expanded",valueSet:"u",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-expanded"}],description:{kind:"markdown",value:"Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed."}},{name:"aria-flowto",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-flowto"}],description:{kind:"markdown",value:"Identifies the next [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in an alternate reading order of content which, at the user's discretion, allows assistive technology to override the general default of reading in document source order."}},{name:"aria-grabbed",valueSet:"u",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-grabbed"}],description:{kind:"markdown",value:'\\[Deprecated in ARIA 1.1\\] Indicates an element\'s "grabbed" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) in a drag-and-drop operation.'}},{name:"aria-haspopup",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-haspopup"}],description:{kind:"markdown",value:"Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)."}},{name:"aria-hidden",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-hidden"}],description:{kind:"markdown",value:"Indicates whether the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is exposed to an accessibility API. See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled)."}},{name:"aria-invalid",valueSet:"invalid",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-invalid"}],description:{kind:"markdown",value:"Indicates the entered value does not conform to the format expected by the application. See related [`aria-errormessage`](https://www.w3.org/TR/wai-aria-1.1/#aria-errormessage)."}},{name:"aria-kbdshortcuts",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-kbdshortcuts"}]},{name:"aria-label",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-label"}],description:{kind:"markdown",value:"Defines a string value that labels the current element. See related [`aria-labelledby`](https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby)."}},{name:"aria-labelledby",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-labelledby"}],description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) that labels the current element. See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)."}},{name:"aria-level",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-level"}],description:{kind:"markdown",value:"Defines the hierarchical level of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) within a structure."}},{name:"aria-live",valueSet:"live",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-live"}],description:{kind:"markdown",value:"Indicates that an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) will be updated, and describes the types of updates the [user agents](https://www.w3.org/TR/wai-aria-1.1/#dfn-user-agent), [assistive technologies](https://www.w3.org/TR/wai-aria-1.1/#dfn-assistive-technology), and user can expect from the [live region](https://www.w3.org/TR/wai-aria-1.1/#dfn-live-region)."}},{name:"aria-modal",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-modal"}],description:{kind:"markdown",value:"Indicates whether an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is modal when displayed."}},{name:"aria-multiline",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-multiline"}],description:{kind:"markdown",value:"Indicates whether a text box accepts multiple lines of input or only a single line."}},{name:"aria-multiselectable",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-multiselectable"}],description:{kind:"markdown",value:"Indicates that the user may select more than one item from the current selectable descendants."}},{name:"aria-orientation",valueSet:"orientation",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-orientation"}],description:{kind:"markdown",value:"Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous."}},{name:"aria-owns",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-owns"}],description:{kind:"markdown",value:"Identifies an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) (or elements) in order to define a visual, functional, or contextual parent/child [relationship](https://www.w3.org/TR/wai-aria-1.1/#dfn-relationship) between DOM elements where the DOM hierarchy cannot be used to represent the relationship. See related [`aria-controls`](https://www.w3.org/TR/wai-aria-1.1/#aria-controls)."}},{name:"aria-placeholder",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-placeholder"}],description:{kind:"markdown",value:"Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value. A hint could be a sample value or a brief description of the expected format."}},{name:"aria-posinset",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-posinset"}],description:{kind:"markdown",value:"Defines an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)'s number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-setsize`](https://www.w3.org/TR/wai-aria-1.1/#aria-setsize)."}},{name:"aria-pressed",valueSet:"tristate",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-pressed"}],description:{kind:"markdown",value:'Indicates the current "pressed" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of toggle buttons. See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-selected`](https://www.w3.org/TR/wai-aria-1.1/#aria-selected).'}},{name:"aria-readonly",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-readonly"}],description:{kind:"markdown",value:"Indicates that the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) is not editable, but is otherwise [operable](https://www.w3.org/TR/wai-aria-1.1/#dfn-operable). See related [`aria-disabled`](https://www.w3.org/TR/wai-aria-1.1/#aria-disabled)."}},{name:"aria-relevant",valueSet:"relevant",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-relevant"}],description:{kind:"markdown",value:"Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified. See related [`aria-atomic`](https://www.w3.org/TR/wai-aria-1.1/#aria-atomic)."}},{name:"aria-required",valueSet:"b",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-required"}],description:{kind:"markdown",value:"Indicates that user input is required on the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) before a form may be submitted."}},{name:"aria-roledescription",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-roledescription"}],description:{kind:"markdown",value:"Defines a human-readable, author-localized description for the [role](https://www.w3.org/TR/wai-aria-1.1/#dfn-role) of an [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element)."}},{name:"aria-rowcount",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount"}],description:{kind:"markdown",value:"Defines the total number of rows in a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex)."}},{name:"aria-rowindex",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex"}],description:{kind:"markdown",value:"Defines an [element's](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) row index or position with respect to the total number of rows within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowcount`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowcount) and [`aria-rowspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan)."}},{name:"aria-rowspan",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-rowspan"}],description:{kind:"markdown",value:"Defines the number of rows spanned by a cell or gridcell within a [`table`](https://www.w3.org/TR/wai-aria-1.1/#table), [`grid`](https://www.w3.org/TR/wai-aria-1.1/#grid), or [`treegrid`](https://www.w3.org/TR/wai-aria-1.1/#treegrid). See related [`aria-rowindex`](https://www.w3.org/TR/wai-aria-1.1/#aria-rowindex) and [`aria-colspan`](https://www.w3.org/TR/wai-aria-1.1/#aria-colspan)."}},{name:"aria-selected",valueSet:"u",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-selected"}],description:{kind:"markdown",value:'Indicates the current "selected" [state](https://www.w3.org/TR/wai-aria-1.1/#dfn-state) of various [widgets](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-checked`](https://www.w3.org/TR/wai-aria-1.1/#aria-checked) and [`aria-pressed`](https://www.w3.org/TR/wai-aria-1.1/#aria-pressed).'}},{name:"aria-setsize",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-setsize"}],description:{kind:"markdown",value:"Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM. See related [`aria-posinset`](https://www.w3.org/TR/wai-aria-1.1/#aria-posinset)."}},{name:"aria-sort",valueSet:"sort",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-sort"}],description:{kind:"markdown",value:"Indicates if items in a table or grid are sorted in ascending or descending order."}},{name:"aria-valuemax",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuemax"}],description:{kind:"markdown",value:"Defines the maximum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)."}},{name:"aria-valuemin",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuemin"}],description:{kind:"markdown",value:"Defines the minimum allowed value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)."}},{name:"aria-valuenow",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow"}],description:{kind:"markdown",value:"Defines the current value for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget). See related [`aria-valuetext`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext)."}},{name:"aria-valuetext",references:[{name:"WAI-ARIA Reference",url:"https://www.w3.org/TR/wai-aria-1.1/#aria-valuetext"}],description:{kind:"markdown",value:"Defines the human readable text alternative of [`aria-valuenow`](https://www.w3.org/TR/wai-aria-1.1/#aria-valuenow) for a range [widget](https://www.w3.org/TR/wai-aria-1.1/#dfn-widget)."}},{name:"aria-details",description:{kind:"markdown",value:"Identifies the [element](https://www.w3.org/TR/wai-aria-1.1/#dfn-element) that provides a detailed, extended description for the [object](https://www.w3.org/TR/wai-aria-1.1/#dfn-object). See related [`aria-describedby`](https://www.w3.org/TR/wai-aria-1.1/#aria-describedby)."}},{name:"aria-keyshortcuts",description:{kind:"markdown",value:"Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element."}}],valueSets:[{name:"b",values:[{name:"true"},{name:"false"}]},{name:"u",values:[{name:"true"},{name:"false"},{name:"undefined"}]},{name:"o",values:[{name:"on"},{name:"off"}]},{name:"y",values:[{name:"yes"},{name:"no"}]},{name:"w",values:[{name:"soft"},{name:"hard"}]},{name:"d",values:[{name:"ltr"},{name:"rtl"},{name:"auto"}]},{name:"m",values:[{name:"GET",description:{kind:"markdown",value:"Corresponds to the HTTP [GET method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3); form data are appended to the `action` attribute URI with a '?' as separator, and the resulting URI is sent to the server. Use this method when the form has no side-effects and contains only ASCII characters."}},{name:"POST",description:{kind:"markdown",value:"Corresponds to the HTTP [POST method](https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5); form data are included in the body of the form and sent to the server."}},{name:"dialog",description:{kind:"markdown",value:"Use when the form is inside a [`<dialog>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog) element to close the dialog when submitted."}}]},{name:"fm",values:[{name:"GET"},{name:"POST"}]},{name:"s",values:[{name:"row"},{name:"col"},{name:"rowgroup"},{name:"colgroup"}]},{name:"t",values:[{name:"hidden"},{name:"text"},{name:"search"},{name:"tel"},{name:"url"},{name:"email"},{name:"password"},{name:"datetime"},{name:"date"},{name:"month"},{name:"week"},{name:"time"},{name:"datetime-local"},{name:"number"},{name:"range"},{name:"color"},{name:"checkbox"},{name:"radio"},{name:"file"},{name:"submit"},{name:"image"},{name:"reset"},{name:"button"}]},{name:"im",values:[{name:"verbatim"},{name:"latin"},{name:"latin-name"},{name:"latin-prose"},{name:"full-width-latin"},{name:"kana"},{name:"kana-name"},{name:"katakana"},{name:"numeric"},{name:"tel"},{name:"email"},{name:"url"}]},{name:"bt",values:[{name:"button"},{name:"submit"},{name:"reset"},{name:"menu"}]},{name:"lt",values:[{name:"1"},{name:"a"},{name:"A"},{name:"i"},{name:"I"}]},{name:"mt",values:[{name:"context"},{name:"toolbar"}]},{name:"mit",values:[{name:"command"},{name:"checkbox"},{name:"radio"}]},{name:"et",values:[{name:"application/x-www-form-urlencoded"},{name:"multipart/form-data"},{name:"text/plain"}]},{name:"tk",values:[{name:"subtitles"},{name:"captions"},{name:"descriptions"},{name:"chapters"},{name:"metadata"}]},{name:"pl",values:[{name:"none"},{name:"metadata"},{name:"auto"}]},{name:"sh",values:[{name:"circle"},{name:"default"},{name:"poly"},{name:"rect"}]},{name:"xo",values:[{name:"anonymous"},{name:"use-credentials"}]},{name:"sb",values:[{name:"allow-forms"},{name:"allow-modals"},{name:"allow-pointer-lock"},{name:"allow-popups"},{name:"allow-popups-to-escape-sandbox"},{name:"allow-same-origin"},{name:"allow-scripts"},{name:"allow-top-navigation"}]},{name:"tristate",values:[{name:"true"},{name:"false"},{name:"mixed"},{name:"undefined"}]},{name:"inputautocomplete",values:[{name:"additional-name"},{name:"address-level1"},{name:"address-level2"},{name:"address-level3"},{name:"address-level4"},{name:"address-line1"},{name:"address-line2"},{name:"address-line3"},{name:"bday"},{name:"bday-year"},{name:"bday-day"},{name:"bday-month"},{name:"billing"},{name:"cc-additional-name"},{name:"cc-csc"},{name:"cc-exp"},{name:"cc-exp-month"},{name:"cc-exp-year"},{name:"cc-family-name"},{name:"cc-given-name"},{name:"cc-name"},{name:"cc-number"},{name:"cc-type"},{name:"country"},{name:"country-name"},{name:"current-password"},{name:"email"},{name:"family-name"},{name:"fax"},{name:"given-name"},{name:"home"},{name:"honorific-prefix"},{name:"honorific-suffix"},{name:"impp"},{name:"language"},{name:"mobile"},{name:"name"},{name:"new-password"},{name:"nickname"},{name:"organization"},{name:"organization-title"},{name:"pager"},{name:"photo"},{name:"postal-code"},{name:"sex"},{name:"shipping"},{name:"street-address"},{name:"tel-area-code"},{name:"tel"},{name:"tel-country-code"},{name:"tel-extension"},{name:"tel-local"},{name:"tel-local-prefix"},{name:"tel-local-suffix"},{name:"tel-national"},{name:"transaction-amount"},{name:"transaction-currency"},{name:"url"},{name:"username"},{name:"work"}]},{name:"autocomplete",values:[{name:"inline"},{name:"list"},{name:"both"},{name:"none"}]},{name:"current",values:[{name:"page"},{name:"step"},{name:"location"},{name:"date"},{name:"time"},{name:"true"},{name:"false"}]},{name:"dropeffect",values:[{name:"copy"},{name:"move"},{name:"link"},{name:"execute"},{name:"popup"},{name:"none"}]},{name:"invalid",values:[{name:"grammar"},{name:"false"},{name:"spelling"},{name:"true"}]},{name:"live",values:[{name:"off"},{name:"polite"},{name:"assertive"}]},{name:"orientation",values:[{name:"vertical"},{name:"horizontal"},{name:"undefined"}]},{name:"relevant",values:[{name:"additions"},{name:"removals"},{name:"text"},{name:"all"},{name:"additions text"}]},{name:"sort",values:[{name:"ascending"},{name:"descending"},{name:"none"},{name:"other"}]},{name:"roles",values:[{name:"alert"},{name:"alertdialog"},{name:"button"},{name:"checkbox"},{name:"dialog"},{name:"gridcell"},{name:"link"},{name:"log"},{name:"marquee"},{name:"menuitem"},{name:"menuitemcheckbox"},{name:"menuitemradio"},{name:"option"},{name:"progressbar"},{name:"radio"},{name:"scrollbar"},{name:"searchbox"},{name:"slider"},{name:"spinbutton"},{name:"status"},{name:"switch"},{name:"tab"},{name:"tabpanel"},{name:"textbox"},{name:"timer"},{name:"tooltip"},{name:"treeitem"},{name:"combobox"},{name:"grid"},{name:"listbox"},{name:"menu"},{name:"menubar"},{name:"radiogroup"},{name:"tablist"},{name:"tree"},{name:"treegrid"},{name:"application"},{name:"article"},{name:"cell"},{name:"columnheader"},{name:"definition"},{name:"directory"},{name:"document"},{name:"feed"},{name:"figure"},{name:"group"},{name:"heading"},{name:"img"},{name:"list"},{name:"listitem"},{name:"math"},{name:"none"},{name:"note"},{name:"presentation"},{name:"region"},{name:"row"},{name:"rowgroup"},{name:"rowheader"},{name:"separator"},{name:"table"},{name:"term"},{name:"text"},{name:"toolbar"},{name:"banner"},{name:"complementary"},{name:"contentinfo"},{name:"form"},{name:"main"},{name:"navigation"},{name:"region"},{name:"search"},{name:"doc-abstract"},{name:"doc-acknowledgments"},{name:"doc-afterword"},{name:"doc-appendix"},{name:"doc-backlink"},{name:"doc-biblioentry"},{name:"doc-bibliography"},{name:"doc-biblioref"},{name:"doc-chapter"},{name:"doc-colophon"},{name:"doc-conclusion"},{name:"doc-cover"},{name:"doc-credit"},{name:"doc-credits"},{name:"doc-dedication"},{name:"doc-endnote"},{name:"doc-endnotes"},{name:"doc-epigraph"},{name:"doc-epilogue"},{name:"doc-errata"},{name:"doc-example"},{name:"doc-footnote"},{name:"doc-foreword"},{name:"doc-glossary"},{name:"doc-glossref"},{name:"doc-index"},{name:"doc-introduction"},{name:"doc-noteref"},{name:"doc-notice"},{name:"doc-pagebreak"},{name:"doc-pagelist"},{name:"doc-part"},{name:"doc-preface"},{name:"doc-prologue"},{name:"doc-pullquote"},{name:"doc-qna"},{name:"doc-subtitle"},{name:"doc-tip"},{name:"doc-toc"}]},{name:"metanames",values:[{name:"application-name"},{name:"author"},{name:"description"},{name:"format-detection"},{name:"generator"},{name:"keywords"},{name:"publisher"},{name:"referrer"},{name:"robots"},{name:"theme-color"},{name:"viewport"}]}]};!function(){function e(e){this.dataProviders=[],this.setDataProviders(!1!==e.useDefaultDataProvider,e.customDataProviders||[])}e.prototype.setDataProviders=function(e,t){var n;this.dataProviders=[],e&&this.dataProviders.push(new tt("html5",Ut)),(n=this.dataProviders).push.apply(n,t)},e.prototype.getDataProviders=function(){return this.dataProviders}}();var Wt=function(){function e(e,t,n){var i=this;this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);var r=function(e){var t,n=e.getModeId();n===i._languageId&&(i._listener[e.uri.toString()]=e.onDidChangeContent((function(){clearTimeout(t),t=setTimeout((function(){return i._doValidate(e.uri,n)}),500)})),i._doValidate(e.uri,n))},a=function(e){E.j6.setModelMarkers(e,i._languageId,[]);var t=e.uri.toString(),n=i._listener[t];n&&(n.dispose(),delete i._listener[t])};this._disposables.push(E.j6.onDidCreateModel(r)),this._disposables.push(E.j6.onWillDisposeModel((function(e){a(e)}))),this._disposables.push(E.j6.onDidChangeModelLanguage((function(e){a(e.model),r(e.model)}))),this._disposables.push(n.onDidChange((function(e){E.j6.getModels().forEach((function(e){e.getModeId()===i._languageId&&(a(e),r(e))}))}))),this._disposables.push({dispose:function(){for(var e in i._listener)i._listener[e].dispose()}}),E.j6.getModels().forEach(r)}return e.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},e.prototype._doValidate=function(e,t){this._worker(e).then((function(n){return n.doValidation(e.toString()).then((function(n){var i=n.map((function(e){return n="number"==typeof(t=e).code?String(t.code):t.code,{severity:Dt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source};var t,n}));E.j6.setModelMarkers(E.j6.getModel(e),t,i)}))})).then(void 0,(function(e){console.error(e)}))},e}();function Dt(e){switch(e){case p.Error:return E.ZL.Error;case p.Warning:return E.ZL.Warning;case p.Information:return E.ZL.Info;case p.Hint:return E.ZL.Hint;default:return E.ZL.Info}}function Pt(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function Ot(e){if(e)return new E.e6(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function qt(e){var t=E.Mj.CompletionItemKind;switch(e){case P.Text:return t.Text;case P.Method:return t.Method;case P.Function:return t.Function;case P.Constructor:return t.Constructor;case P.Field:return t.Field;case P.Variable:return t.Variable;case P.Class:return t.Class;case P.Interface:return t.Interface;case P.Module:return t.Module;case P.Property:return t.Property;case P.Unit:return t.Unit;case P.Value:return t.Value;case P.Enum:return t.Enum;case P.Keyword:return t.Keyword;case P.Snippet:return t.Snippet;case P.Color:return t.Color;case P.File:return t.File;case P.Reference:return t.Reference}return t.Property}function Nt(e){if(e)return{range:Ot(e.range),text:e.newText}}var jt=function(){function e(e){this._worker=e}return Object.defineProperty(e.prototype,"triggerCharacters",{get:function(){return[".",":","<",'"',"=","/"]},enumerable:!1,configurable:!0}),e.prototype.provideCompletionItems=function(e,t,n,i){var r=e.uri;return this._worker(r).then((function(e){return e.doComplete(r.toString(),Pt(t))})).then((function(n){if(n){var i=e.getWordUntilPosition(t),r=new E.e6(t.lineNumber,i.startColumn,t.lineNumber,i.endColumn),a=n.items.map((function(e){var t,n={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,range:r,kind:qt(e.kind)};return e.textEdit&&(void 0!==(t=e.textEdit).insert&&void 0!==t.replace?n.range={insert:Ot(e.textEdit.insert),replace:Ot(e.textEdit.replace)}:n.range=Ot(e.textEdit.range),n.insertText=e.textEdit.newText),e.additionalTextEdits&&(n.additionalTextEdits=e.additionalTextEdits.map(Nt)),e.insertTextFormat===O.Snippet&&(n.insertTextRules=E.Mj.CompletionItemInsertTextRule.InsertAsSnippet),n}));return{isIncomplete:n.isIncomplete,suggestions:a}}}))},e}();function Ft(e){return"string"==typeof e?{value:e}:(t=e)&&"object"==typeof t&&"string"==typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function Bt(e){if(e)return Array.isArray(e)?e.map(Ft):[Ft(e)]}var Gt=function(){function e(e){this._worker=e}return e.prototype.provideHover=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.doHover(i.toString(),Pt(t))})).then((function(e){if(e)return{range:Ot(e.range),contents:Bt(e.contents)}}))},e}();function Vt(e){var t=E.Mj.DocumentHighlightKind;switch(e){case J.Read:return t.Read;case J.Write:return t.Write;case J.Text:return t.Text}return t.Text}var Kt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentHighlights=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.findDocumentHighlights(i.toString(),Pt(t))})).then((function(e){if(e)return e.map((function(e){return{range:Ot(e.range),kind:Vt(e.kind)}}))}))},e}();function Jt(e){var t=E.Mj.SymbolKind;switch(e){case X.File:return t.Array;case X.Module:return t.Module;case X.Namespace:return t.Namespace;case X.Package:return t.Package;case X.Class:return t.Class;case X.Method:return t.Method;case X.Property:return t.Property;case X.Field:return t.Field;case X.Constructor:return t.Constructor;case X.Enum:return t.Enum;case X.Interface:return t.Interface;case X.Function:return t.Function;case X.Variable:return t.Variable;case X.Constant:return t.Constant;case X.String:return t.String;case X.Number:return t.Number;case X.Boolean:return t.Boolean;case X.Array:return t.Array}return t.Function}var Yt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentSymbols=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentSymbols(n.toString())})).then((function(e){if(e)return e.map((function(e){return{name:e.name,detail:"",containerName:e.containerName,kind:Jt(e.kind),tags:[],range:Ot(e.location.range),selectionRange:Ot(e.location.range)}}))}))},e}(),Xt=function(){function e(e){this._worker=e}return e.prototype.provideLinks=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentLinks(n.toString())})).then((function(e){if(e)return{links:e.map((function(e){return{range:Ot(e.range),url:e.target}}))}}))},e}();function $t(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var Zt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentFormattingEdits=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.format(i.toString(),null,$t(t)).then((function(e){if(e&&0!==e.length)return e.map(Nt)}))}))},e}(),Qt=function(){function e(e){this._worker=e}return e.prototype.provideDocumentRangeFormattingEdits=function(e,t,n,i){var r=e.uri;return this._worker(r).then((function(e){return e.format(r.toString(),function(e){if(e)return{start:Pt(e.getStartPosition()),end:Pt(e.getEndPosition())}}(t),$t(n)).then((function(e){if(e&&0!==e.length)return e.map(Nt)}))}))},e}(),en=function(){function e(e){this._worker=e}return e.prototype.provideRenameEdits=function(e,t,n,i){var r=e.uri;return this._worker(r).then((function(e){return e.doRename(r.toString(),Pt(t),n)})).then((function(e){return function(e){if(e&&e.changes){var t=[];for(var n in e.changes)for(var i=E.Sf.parse(n),r=0,a=e.changes[n];r<a.length;r++){var o=a[r];t.push({resource:i,edit:{range:Ot(o.range),text:o.newText}})}return{edits:t}}}(e)}))},e}(),tn=function(){function e(e){this._worker=e}return e.prototype.provideFoldingRanges=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.getFoldingRanges(i.toString(),t)})).then((function(e){if(e)return e.map((function(e){var t={start:e.startLine+1,end:e.endLine+1};return void 0!==e.kind&&(t.kind=function(e){switch(e){case h.Comment:return E.Mj.FoldingRangeKind.Comment;case h.Imports:return E.Mj.FoldingRangeKind.Imports;case h.Region:return E.Mj.FoldingRangeKind.Region}}(e.kind)),t}))}))},e}(),nn=function(){function e(e){this._worker=e}return e.prototype.provideSelectionRanges=function(e,t,n){var i=e.uri;return this._worker(i).then((function(e){return e.getSelectionRanges(i.toString(),t.map(Pt))})).then((function(e){if(e)return e.map((function(e){for(var t=[];e;)t.push({range:Ot(e.range)}),e=e.parent;return t}))}))},e}();function rn(e){var t=new A(e),n=function(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];return t.getLanguageServiceWorker.apply(t,e)},i=e.languageId;E.Mj.registerCompletionItemProvider(i,new jt(n)),E.Mj.registerHoverProvider(i,new Gt(n)),E.Mj.registerDocumentHighlightProvider(i,new Kt(n)),E.Mj.registerLinkProvider(i,new Xt(n)),E.Mj.registerFoldingRangeProvider(i,new tn(n)),E.Mj.registerDocumentSymbolProvider(i,new Yt(n)),E.Mj.registerSelectionRangeProvider(i,new nn(n)),E.Mj.registerRenameProvider(i,new en(n)),"html"===i&&(E.Mj.registerDocumentFormattingEditProvider(i,new Zt(n)),E.Mj.registerDocumentRangeFormattingEditProvider(i,new Qt(n)),new Wt(i,n,e))}function an(e){var t=[],n=[],i=new A(e);t.push(i);var r,a,o=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return i.getLanguageServiceWorker.apply(i,e)};return r=e.languageId,a=e.modeConfiguration,sn(n),a.completionItems&&n.push(E.Mj.registerCompletionItemProvider(r,new jt(o))),a.hovers&&n.push(E.Mj.registerHoverProvider(r,new Gt(o))),a.documentHighlights&&n.push(E.Mj.registerDocumentHighlightProvider(r,new Kt(o))),a.links&&n.push(E.Mj.registerLinkProvider(r,new Xt(o))),a.documentSymbols&&n.push(E.Mj.registerDocumentSymbolProvider(r,new Yt(o))),a.rename&&n.push(E.Mj.registerRenameProvider(r,new en(o))),a.foldingRanges&&n.push(E.Mj.registerFoldingRangeProvider(r,new tn(o))),a.selectionRanges&&n.push(E.Mj.registerSelectionRangeProvider(r,new nn(o))),a.documentFormattingEdits&&n.push(E.Mj.registerDocumentFormattingEditProvider(r,new Zt(o))),a.documentRangeFormattingEdits&&n.push(E.Mj.registerDocumentRangeFormattingEditProvider(r,new Qt(o))),a.diagnostics&&n.push(new Wt(r,o,e)),t.push(on(n)),on(t)}function on(e){return{dispose:function(){return sn(e)}}}function sn(e){for(;e.length;)e.pop().dispose()}}}]); \ No newline at end of file diff --git a/docs/dist/5593.5593.js b/docs/dist/5593.5593.js deleted file mode 100644 index 7f9099c2..00000000 --- a/docs/dist/5593.5593.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[5593],{35593:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>i,language:()=>r});var i={wordPattern:/(#?-?\d*\.\d\w*%?)|([@#!.:]?[\w-?]+%?)|[@#!.]/g,comments:{blockComment:["/*","*/"],lineComment:"//"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\/\\*\\s*#region\\b\\s*(.*?)\\s*\\*\\/"),end:new RegExp("^\\s*\\/\\*\\s*#endregion\\b.*\\*\\/")}}},r={defaultToken:"",tokenPostfix:".less",identifier:"-?-?([a-zA-Z]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",identifierPlus:"-?-?([a-zA-Z:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))([\\w\\-:.]|(\\\\(([0-9a-fA-F]{1,6}\\s?)|[^[0-9a-fA-F])))*",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],tokenizer:{root:[{include:"@nestedJSBegin"},["[ \\t\\r\\n]+",""],{include:"@comments"},{include:"@keyword"},{include:"@strings"},{include:"@numbers"},["[*_]?[a-zA-Z\\-\\s]+(?=:.*(;|(\\\\$)))","attribute.name","@attribute"],["url(\\-prefix)?\\(",{token:"tag",next:"@urldeclaration"}],["[{}()\\[\\]]","@brackets"],["[,:;]","delimiter"],["#@identifierPlus","tag.id"],["&","tag"],["\\.@identifierPlus(?=\\()","tag.class","@attribute"],["\\.@identifierPlus","tag.class"],["@identifierPlus","tag"],{include:"@operators"},["@(@identifier(?=[:,\\)]))","variable","@attribute"],["@(@identifier)","variable"],["@","key","@atRules"]],nestedJSBegin:[["``","delimiter.backtick"],["`",{token:"delimiter.backtick",next:"@nestedJSEnd",nextEmbedded:"text/javascript"}]],nestedJSEnd:[["`",{token:"delimiter.backtick",next:"@pop",nextEmbedded:"@pop"}]],operators:[["[<>=\\+\\-\\*\\/\\^\\|\\~]","operator"]],keyword:[["(@[\\s]*import|![\\s]*important|true|false|when|iscolor|isnumber|isstring|iskeyword|isurl|ispixel|ispercentage|isem|hue|saturation|lightness|alpha|lighten|darken|saturate|desaturate|fadein|fadeout|fade|spin|mix|round|ceil|floor|percentage)\\b","keyword"]],urldeclaration:[{include:"@strings"},["[^)\r\n]+","string"],["\\)",{token:"tag",next:"@pop"}]],attribute:[{include:"@nestedJSBegin"},{include:"@comments"},{include:"@strings"},{include:"@numbers"},{include:"@keyword"},["[a-zA-Z\\-]+(?=\\()","attribute.value","@attribute"],[">","operator","@pop"],["@identifier","attribute.value"],{include:"@operators"},["@(@identifier)","variable"],["[)\\}]","@brackets","@pop"],["[{}()\\[\\]>]","@brackets"],["[;]","delimiter","@pop"],["[,=:]","delimiter"],["\\s",""],[".","attribute.value"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[["(\\d*\\.)?\\d+([eE][\\-+]?\\d+)?",{token:"attribute.value.number",next:"@units"}],["#[0-9a-fA-F_]+(?!\\w)","attribute.value.hex"]],units:[["(em|ex|ch|rem|vmin|vmax|vw|vh|vm|cm|mm|in|px|pt|pc|deg|grad|rad|turn|s|ms|Hz|kHz|%)?","attribute.value.unit","@pop"]],strings:[['~?"',{token:"string.delimiter",next:"@stringsEndDoubleQuote"}],["~?'",{token:"string.delimiter",next:"@stringsEndQuote"}]],stringsEndDoubleQuote:[['\\\\"',"string"],['"',{token:"string.delimiter",next:"@popall"}],[".","string"]],stringsEndQuote:[["\\\\'","string"],["'",{token:"string.delimiter",next:"@popall"}],[".","string"]],atRules:[{include:"@comments"},{include:"@strings"},["[()]","delimiter"],["[\\{;]","delimiter","@pop"],[".","key"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/5703.5703.js b/docs/dist/5703.5703.js deleted file mode 100644 index e8f071f6..00000000 --- a/docs/dist/5703.5703.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[5703],{15703:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>m,language:()=>i});var a=n(89587),r=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],m={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{{!--","--}}"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{{","}}"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:a.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+r.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:a.Mj.IndentAction.Indent}}]},i={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/\{\{!--/,"comment.block.start.handlebars","@commentBlock"],[/\{\{!/,"comment.start.handlebars","@comment"],[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@commentHtml"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/\{/,"delimiter.html"],[/[^<{]+/]],doctype:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/\}\}/,"comment.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentBlock:[[/--\}\}/,"comment.block.end.handlebars","@pop"],[/./,"comment.content.handlebars"]],commentHtml:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/\{\{/,{token:"@rematch",switchTo:"@handlebarsInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],handlebarsInSimpleState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3"}],{include:"handlebarsRoot"}],handlebarsInEmbeddedState:[[/\{\{\{?/,"delimiter.handlebars"],[/\}\}\}?/,{token:"delimiter.handlebars",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"handlebarsRoot"}],handlebarsRoot:[[/"[^"]*"/,"string.handlebars"],[/[#/][^\s}]+/,"keyword.helper.handlebars"],[/else\b/,"keyword.helper.handlebars"],[/[\s]+/],[/[^}]/,"variable.parameter.handlebars"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/5849.5849.js b/docs/dist/5849.5849.js deleted file mode 100644 index 8efbaf45..00000000 --- a/docs/dist/5849.5849.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[5849],{25849:(e,s,o)=>{"use strict";o.r(s),o.d(s,{conf:()=>n,language:()=>l});var n={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},l={defaultToken:"",tokenPostfix:".dockerfile",variable:/\${?[\w]+}?/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/(ONBUILD)(\s+)/,["keyword",""]],[/(ENV)(\s+)([\w]+)/,["keyword","",{token:"variable",next:"@arguments"}]],[/(FROM|MAINTAINER|RUN|EXPOSE|ENV|ADD|ARG|VOLUME|LABEL|USER|WORKDIR|COPY|CMD|STOPSIGNAL|SHELL|HEALTHCHECK|ENTRYPOINT)/,{token:"keyword",next:"@arguments"}]],arguments:[{include:"@whitespace"},{include:"@strings"},[/(@variable)/,{cases:{"@eos":{token:"variable",next:"@popall"},"@default":"variable"}}],[/\\/,{cases:{"@eos":"","@default":""}}],[/./,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],whitespace:[[/\s+/,{cases:{"@eos":{token:"",next:"@popall"},"@default":""}}]],comment:[[/(^#.*$)/,"comment","@popall"]],strings:[[/\\'$/,"","@popall"],[/\\'/,""],[/'$/,"string","@popall"],[/'/,"string","@stringBody"],[/"$/,"string","@popall"],[/"/,"string","@dblStringBody"]],stringBody:[[/[^\\\$']/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/'$/,"string","@popall"],[/'/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]],dblStringBody:[[/[^\\\$"]/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/\\./,"string.escape"],[/"$/,"string","@popall"],[/"/,"string","@pop"],[/(@variable)/,"variable"],[/\\$/,"string"],[/$/,"string","@popall"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/6082.6082.js b/docs/dist/6082.6082.js deleted file mode 100644 index 3df983b0..00000000 --- a/docs/dist/6082.6082.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6082],{86082:(e,t,o)=>{"use strict";o.r(t),o.d(t,{conf:()=>r,language:()=>n});var r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["{","}"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*\\{\\$REGION(\\s\\'.*\\')?\\}"),end:new RegExp("^\\s*\\{\\$ENDREGION\\}")}}},n={defaultToken:"",tokenPostfix:".pascal",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["absolute","abstract","all","and_then","array","as","asm","attribute","begin","bindable","case","class","const","contains","default","div","else","end","except","exports","external","far","file","finalization","finally","forward","generic","goto","if","implements","import","in","index","inherited","initialization","interrupt","is","label","library","mod","module","name","near","not","object","of","on","only","operator","or_else","otherwise","override","package","packed","pow","private","program","protected","public","published","interface","implementation","qualified","read","record","resident","requires","resourcestring","restricted","segment","set","shl","shr","specialize","stored","then","threadvar","to","try","type","unit","uses","var","view","virtual","dynamic","overload","reintroduce","with","write","xor","true","false","procedure","function","constructor","destructor","property","break","continue","exit","abort","while","do","for","raise","repeat","until"],typeKeywords:["boolean","double","byte","integer","shortint","char","longint","float","string"],operators:["=",">","<","<=",">=","<>",":",":=","and","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\*\}]+/,"comment"],[/\}/,"comment","@pop"],[/[\{]/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\{/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/6241.6241.js b/docs/dist/6241.6241.js deleted file mode 100644 index 71ff73bb..00000000 --- a/docs/dist/6241.6241.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6241],{96241:(e,n,t)=>{"use strict";t.r(n),t.d(n,{conf:()=>s,language:()=>i});var s={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*//\\s*#region\\b|^\\s*\\(\\*\\s*#region(.*)\\*\\)"),end:new RegExp("^\\s*//\\s*#endregion\\b|^\\s*\\(\\*\\s*#endregion\\s*\\*\\)")}}},i={defaultToken:"",tokenPostfix:".fs",keywords:["abstract","and","atomic","as","assert","asr","base","begin","break","checked","component","const","constraint","constructor","continue","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","eager","event","external","extern","false","finally","for","fun","function","fixed","functor","global","if","in","include","inherit","inline","interface","internal","land","lor","lsl","lsr","lxor","lazy","let","match","member","mod","module","mutable","namespace","method","mixin","new","not","null","of","open","or","object","override","private","parallel","process","protected","pure","public","rec","return","static","sealed","struct","sig","then","to","true","tailcall","trait","try","type","upcast","use","val","void","virtual","volatile","when","while","with","yield"],symbols:/[=><!~?:&|+\-*\^%;\.,\/]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,integersuffix:/[uU]?[yslnLI]?/,floatsuffix:/[fFmM]?/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/\[<.*>\]/,"annotation"],[/^#(if|else|endif)/,"keyword"],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\d+[eE]([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+([eE][\-+]?\d+)?(@floatsuffix)/,"number.float"],[/0x[0-9a-fA-F]+LF/,"number.float"],[/0x[0-9a-fA-F]+(@integersuffix)/,"number.hex"],[/0b[0-1]+(@integersuffix)/,"number.bin"],[/\d+(@integersuffix)/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"""/,"string",'@string."""'],[/"/,"string",'@string."'],[/\@"/,{token:"string.quote",next:"@litstring"}],[/'[^\\']'B?/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\(\*(?!\))/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^*(]+/,"comment"],[/\*\)/,"comment","@pop"],[/\*/,"comment"],[/\(\*\)/,"comment"],[/\(/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/("""|"B?)/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/6424.6424.js b/docs/dist/6424.6424.js deleted file mode 100644 index 09e7eea5..00000000 --- a/docs/dist/6424.6424.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6424],{76424:(e,t,r)=>{"use strict";r.r(t),r.d(t,{conf:()=>m,language:()=>n});var o=r(89587),i=["area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","source","track","wbr"],m={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["\x3c!--","--\x3e"]},brackets:[["\x3c!--","--\x3e"],["<",">"],["{","}"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],onEnterRules:[{beforeText:new RegExp("<(?!(?:"+i.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/(\w[\w\d]*)\s*>$/i,action:{indentAction:o.Mj.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(?!(?:"+i.join("|")+"))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:o.Mj.IndentAction.Indent}}]},n={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/@@/],[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[ \t\r\n]+/],[/[^<@]+/]],doctype:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/@[^@]/,{token:"@rematch",switchTo:"@razorInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],razorInSimpleState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3"}]],razorInEmbeddedState:[[/@\*/,"comment.cs","@razorBlockCommentTopLevel"],[/@[{(]/,"metatag.cs","@razorRootTopLevel"],[/(@)(\s*[\w]+)/,["metatag.cs",{token:"identifier.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],[/[})]/,{token:"metatag.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],[/\*@/,{token:"comment.cs",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}]],razorBlockCommentTopLevel:[[/\*@/,"@rematch","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorBlockComment:[[/\*@/,"comment.cs","@pop"],[/[^*]+/,"comment.cs"],[/./,"comment.cs"]],razorRootTopLevel:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/[})]/,"@rematch","@pop"],{include:"razorCommon"}],razorRoot:[[/\{/,"delimiter.bracket.cs","@razorRoot"],[/\(/,"delimiter.parenthesis.cs","@razorRoot"],[/\}/,"delimiter.bracket.cs","@pop"],[/\)/,"delimiter.parenthesis.cs","@pop"],{include:"razorCommon"}],razorCommon:[[/[a-zA-Z_]\w*/,{cases:{"@razorKeywords":{token:"keyword.cs"},"@default":"identifier.cs"}}],[/[\[\]]/,"delimiter.array.cs"],[/[ \t\r\n]+/],[/\/\/.*$/,"comment.cs"],[/@\*/,"comment.cs","@razorBlockComment"],[/"([^"]*)"/,"string.cs"],[/'([^']*)'/,"string.cs"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(\w+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<\/)(\w+)(>)/,["delimiter.html","tag.html","delimiter.html"]],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,]/,"delimiter.cs"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.cs"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.cs"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.cs"],[/0[0-7']*[0-7]/,"number.octal.cs"],[/0[bB][0-1']*[0-1]/,"number.binary.cs"],[/\d[\d']*/,"number.cs"],[/\d/,"number.cs"]]},razorKeywords:["abstract","as","async","await","base","bool","break","by","byte","case","catch","char","checked","class","const","continue","decimal","default","delegate","do","double","descending","explicit","event","extern","else","enum","false","finally","fixed","float","for","foreach","from","goto","group","if","implicit","in","int","interface","internal","into","is","lock","long","nameof","new","null","namespace","object","operator","out","override","orderby","params","private","protected","public","readonly","ref","return","switch","struct","sbyte","sealed","short","sizeof","stackalloc","static","string","select","this","throw","true","try","typeof","uint","ulong","unchecked","unsafe","ushort","using","var","virtual","volatile","void","when","while","where","yield","model","inject"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/}}}]); \ No newline at end of file diff --git a/docs/dist/6449.6449.js b/docs/dist/6449.6449.js deleted file mode 100644 index 6a1439e3..00000000 --- a/docs/dist/6449.6449.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6449],{56449:(e,_,t)=>{"use strict";t.r(_),t.d(_,{conf:()=>r,language:()=>i});var r={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},i={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["AES128","AES256","ALL","ALLOWOVERWRITE","ANALYSE","ANALYZE","AND","ANY","ARRAY","AS","ASC","AUTHORIZATION","BACKUP","BETWEEN","BINARY","BLANKSASNULL","BOTH","BYTEDICT","BZIP2","CASE","CAST","CHECK","COLLATE","COLUMN","CONSTRAINT","CREATE","CREDENTIALS","CROSS","CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_USER","CURRENT_USER_ID","DEFAULT","DEFERRABLE","DEFLATE","DEFRAG","DELTA","DELTA32K","DESC","DISABLE","DISTINCT","DO","ELSE","EMPTYASNULL","ENABLE","ENCODE","ENCRYPT","ENCRYPTION","END","EXCEPT","EXPLICIT","FALSE","FOR","FOREIGN","FREEZE","FROM","FULL","GLOBALDICT256","GLOBALDICT64K","GRANT","GROUP","GZIP","HAVING","IDENTITY","IGNORE","ILIKE","IN","INITIALLY","INNER","INTERSECT","INTO","IS","ISNULL","JOIN","LEADING","LEFT","LIKE","LIMIT","LOCALTIME","LOCALTIMESTAMP","LUN","LUNS","LZO","LZOP","MINUS","MOSTLY13","MOSTLY32","MOSTLY8","NATURAL","NEW","NOT","NOTNULL","NULL","NULLS","OFF","OFFLINE","OFFSET","OID","OLD","ON","ONLY","OPEN","OR","ORDER","OUTER","OVERLAPS","PARALLEL","PARTITION","PERCENT","PERMISSIONS","PLACING","PRIMARY","RAW","READRATIO","RECOVER","REFERENCES","RESPECT","REJECTLOG","RESORT","RESTORE","RIGHT","SELECT","SESSION_USER","SIMILAR","SNAPSHOT","SOME","SYSDATE","SYSTEM","TABLE","TAG","TDES","TEXT255","TEXT32K","THEN","TIMESTAMP","TO","TOP","TRAILING","TRUE","TRUNCATECOLUMNS","UNION","UNIQUE","USER","USING","VERBOSE","WALLET","WHEN","WHERE","WITH","WITHOUT"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["current_schema","current_schemas","has_database_privilege","has_schema_privilege","has_table_privilege","age","current_time","current_timestamp","localtime","isfinite","now","ascii","get_bit","get_byte","set_bit","set_byte","to_ascii","approximate percentile_disc","avg","count","listagg","max","median","min","percentile_cont","stddev_samp","stddev_pop","sum","var_samp","var_pop","bit_and","bit_or","bool_and","bool_or","cume_dist","first_value","lag","last_value","lead","nth_value","ratio_to_report","dense_rank","ntile","percent_rank","rank","row_number","case","coalesce","decode","greatest","least","nvl","nvl2","nullif","add_months","at time zone","convert_timezone","current_date","date_cmp","date_cmp_timestamp","date_cmp_timestamptz","date_part_year","dateadd","datediff","date_part","date_trunc","extract","getdate","interval_cmp","last_day","months_between","next_day","sysdate","timeofday","timestamp_cmp","timestamp_cmp_date","timestamp_cmp_timestamptz","timestamptz_cmp","timestamptz_cmp_date","timestamptz_cmp_timestamp","timezone","to_timestamp","trunc","abs","acos","asin","atan","atan2","cbrt","ceil","ceiling","checksum","cos","cot","degrees","dexp","dlog1","dlog10","exp","floor","ln","log","mod","pi","power","radians","random","round","sin","sign","sqrt","tan","to_hex","bpcharcmp","btrim","bttext_pattern_cmp","char_length","character_length","charindex","chr","concat","crc32","func_sha1","initcap","left and rights","len","length","lower","lpad and rpads","ltrim","md5","octet_length","position","quote_ident","quote_literal","regexp_count","regexp_instr","regexp_replace","regexp_substr","repeat","replace","replicate","reverse","rtrim","split_part","strpos","strtol","substring","textlen","translate","trim","upper","cast","convert","to_char","to_date","to_number","json_array_length","json_extract_array_element_text","json_extract_path_text","current_setting","pg_cancel_backend","pg_terminate_backend","set_config","current_database","current_user","current_user_id","pg_backend_pid","pg_last_copy_count","pg_last_copy_id","pg_last_query_id","pg_last_unload_count","session_user","slice_num","user","version","abbrev","acosd","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","asind","atan2d","atand","bit","bit_length","bound_box","box","brin_summarize_new_values","broadcast","cardinality","center","circle","clock_timestamp","col_description","concat_ws","convert_from","convert_to","corr","cosd","cotd","covar_pop","covar_samp","current_catalog","current_query","current_role","currval","cursor_to_xml","diameter","div","encode","enum_first","enum_last","enum_range","every","family","format","format_type","generate_series","generate_subscripts","get_current_ts_config","gin_clean_pending_list","grouping","has_any_column_privilege","has_column_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_sequence_privilege","has_server_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","isclosed","isempty","isopen","json_agg","json_object","json_object_agg","json_populate_record","json_populate_recordset","json_to_record","json_to_recordset","jsonb_agg","jsonb_object_agg","justify_days","justify_hours","justify_interval","lastval","left","line","localtimestamp","lower_inc","lower_inf","lpad","lseg","make_date","make_interval","make_time","make_timestamp","make_timestamptz","masklen","mode","netmask","network","nextval","npoints","num_nonnulls","num_nulls","numnode","obj_description","overlay","parse_ident","path","pclose","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backup_start_time","pg_blocking_pids","pg_client_encoding","pg_collation_is_visible","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_xlog_replay_paused","pg_last_committed_xact","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_dir","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_postmaster_start_time","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_rotate_logfile","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_start_backup","pg_stat_file","pg_stop_backup","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_xact_commit_timestamp","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","plainto_tsquery","point","polygon","popen","pqserverversion","query_to_xml","querytree","quote_nullable","radius","range_merge","regexp_matches","regexp_split_to_array","regexp_split_to_table","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","right","row_security_active","row_to_json","rpad","scale","set_masklen","setseed","setval","setweight","shobj_description","sind","sprintf","statement_timestamp","stddev","string_agg","string_to_array","strip","substr","table_to_xml","table_to_xml_and_xmlschema","tand","text","to_json","to_regclass","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_tsquery","to_tsvector","transaction_timestamp","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_visible_in_snapshot","unnest","upper_inc","upper_inf","variance","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/docs/dist/6489.6489.js b/docs/dist/6489.6489.js deleted file mode 100644 index 454dbaa1..00000000 --- a/docs/dist/6489.6489.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6489],{66489:(e,n,t)=>{"use strict";t.r(n),t.d(n,{conf:()=>o,language:()=>s});var o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""',notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"""',close:'"""'},{open:'"',close:'"'}],folding:{offSide:!0}},s={defaultToken:"invalid",tokenPostfix:".gql",keywords:["null","true","false","query","mutation","subscription","extend","schema","directive","scalar","type","interface","union","enum","input","implements","fragment","on"],typeKeywords:["Int","Float","String","Boolean","ID"],directiveLocations:["SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION"],operators:["=","!","?",":","&","|"],symbols:/[=!?:&|]+/,escapes:/\\(?:["\\\/bfnrt]|u[0-9A-Fa-f]{4})/,tokenizer:{root:[[/[a-z_][\w$]*/,{cases:{"@keywords":"keyword","@default":"key.identifier"}}],[/[$][\w$]*/,{cases:{"@keywords":"keyword","@default":"argument.identifier"}}],[/[A-Z][\w\$]*/,{cases:{"@typeKeywords":"keyword","@default":"type.identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,{token:"annotation",log:"annotation token: $0"}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/"""/,{token:"string",next:"@mlstring",nextEmbedded:"markdown"}],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}]],mlstring:[[/[^"]+/,"string"],['"""',{token:"string",next:"@pop",nextEmbedded:"@pop"}]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/#.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/6587.6587.js b/docs/dist/6587.6587.js deleted file mode 100644 index 2aedca12..00000000 --- a/docs/dist/6587.6587.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6587],{75458:(e,n,o)=>{"use strict";o.r(n),o.d(n,{conf:()=>t,language:()=>r});var t={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["var","end_var"],["var_input","end_var"],["var_output","end_var"],["var_in_out","end_var"],["var_temp","end_var"],["var_global","end_var"],["var_access","end_var"],["var_external","end_var"],["type","end_type"],["struct","end_struct"],["program","end_program"],["function","end_function"],["function_block","end_function_block"],["action","end_action"],["step","end_step"],["initial_step","end_step"],["transaction","end_transaction"],["configuration","end_configuration"],["tcp","end_tcp"],["recource","end_recource"],["channel","end_channel"],["library","end_library"],["folder","end_folder"],["binaries","end_binaries"],["includes","end_includes"],["sources","end_sources"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"/*",close:"*/"},{open:"'",close:"'",notIn:["string_sq"]},{open:'"',close:'"',notIn:["string_dq"]},{open:"var_input",close:"end_var"},{open:"var_output",close:"end_var"},{open:"var_in_out",close:"end_var"},{open:"var_temp",close:"end_var"},{open:"var_global",close:"end_var"},{open:"var_access",close:"end_var"},{open:"var_external",close:"end_var"},{open:"type",close:"end_type"},{open:"struct",close:"end_struct"},{open:"program",close:"end_program"},{open:"function",close:"end_function"},{open:"function_block",close:"end_function_block"},{open:"action",close:"end_action"},{open:"step",close:"end_step"},{open:"initial_step",close:"end_step"},{open:"transaction",close:"end_transaction"},{open:"configuration",close:"end_configuration"},{open:"tcp",close:"end_tcp"},{open:"recource",close:"end_recource"},{open:"channel",close:"end_channel"},{open:"library",close:"end_library"},{open:"folder",close:"end_folder"},{open:"binaries",close:"end_binaries"},{open:"includes",close:"end_includes"},{open:"sources",close:"end_sources"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"var",close:"end_var"},{open:"var_input",close:"end_var"},{open:"var_output",close:"end_var"},{open:"var_in_out",close:"end_var"},{open:"var_temp",close:"end_var"},{open:"var_global",close:"end_var"},{open:"var_access",close:"end_var"},{open:"var_external",close:"end_var"},{open:"type",close:"end_type"},{open:"struct",close:"end_struct"},{open:"program",close:"end_program"},{open:"function",close:"end_function"},{open:"function_block",close:"end_function_block"},{open:"action",close:"end_action"},{open:"step",close:"end_step"},{open:"initial_step",close:"end_step"},{open:"transaction",close:"end_transaction"},{open:"configuration",close:"end_configuration"},{open:"tcp",close:"end_tcp"},{open:"recource",close:"end_recource"},{open:"channel",close:"end_channel"},{open:"library",close:"end_library"},{open:"folder",close:"end_folder"},{open:"binaries",close:"end_binaries"},{open:"includes",close:"end_includes"},{open:"sources",close:"end_sources"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},r={defaultToken:"",tokenPostfix:".st",ignoreCase:!0,brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","end_if","elsif","else","case","of","to","__try","__catch","__finally","do","with","by","while","repeat","end_while","end_repeat","end_case","for","end_for","task","retain","non_retain","constant","with","at","exit","return","interval","priority","address","port","on_channel","then","iec","file","uses","version","packagetype","displayname","copyright","summary","vendor","common_source","from","extends"],constant:["false","true","null"],defineKeywords:["var","var_input","var_output","var_in_out","var_temp","var_global","var_access","var_external","end_var","type","end_type","struct","end_struct","program","end_program","function","end_function","function_block","end_function_block","interface","end_interface","method","end_method","property","end_property","namespace","end_namespace","configuration","end_configuration","tcp","end_tcp","resource","end_resource","channel","end_channel","library","end_library","folder","end_folder","binaries","end_binaries","includes","end_includes","sources","end_sources","action","end_action","step","initial_step","end_step","transaction","end_transaction"],typeKeywords:["int","sint","dint","lint","usint","uint","udint","ulint","real","lreal","time","date","time_of_day","date_and_time","string","bool","byte","word","dword","array","pointer","lword"],operators:["=",">","<",":",":=","<=",">=","<>","&","+","-","*","**","MOD","^","or","and","not","xor","abs","acos","asin","atan","cos","exp","expt","ln","log","sin","sqrt","tan","sel","max","min","limit","mux","shl","shr","rol","ror","indexof","sizeof","adr","adrinst","bitadr","is_valid","ref","ref_to"],builtinVariables:[],builtinFunctions:["sr","rs","tp","ton","tof","eq","ge","le","lt","ne","round","trunc","ctd","сtu","ctud","r_trig","f_trig","move","concat","delete","find","insert","left","len","replace","right","rtc"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/(\.\.)/,"delimiter"],[/\b(16#[0-9A-Fa-f\_]*)+\b/,"number.hex"],[/\b(2#[01\_]+)+\b/,"number.binary"],[/\b(8#[0-9\_]*)+\b/,"number.octal"],[/\b\d*\.\d+([eE][\-+]?\d+)?\b/,"number.float"],[/\b(L?REAL)#[0-9\_\.e]+\b/,"number.float"],[/\b(BYTE|(?:D|L)?WORD|U?(?:S|D|L)?INT)#[0-9\_]+\b/,"number"],[/\d+/,"number"],[/\b(T|DT|TOD)#[0-9:-_shmyd]+\b/,"tag"],[/\%(I|Q|M)(X|B|W|D|L)[0-9\.]+/,"tag"],[/\%(I|Q|M)[0-9\.]*/,"tag"],[/\b[A-Za-z]{1,6}#[0-9]+\b/,"tag"],[/\b(TO_|CTU_|CTD_|CTUD_|MUX_|SEL_)[A_Za-z]+\b/,"predefined"],[/\b[A_Za-z]+(_TO_)[A_Za-z]+\b/,"predefined"],[/[;]/,"delimiter"],[/[.]/,{token:"delimiter",next:"@params"}],[/[a-zA-Z_]\w*/,{cases:{"@operators":"operators","@keywords":"keyword","@typeKeywords":"type","@defineKeywords":"variable","@constant":"constant","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",bracket:"@open",next:"@string_dq"}],[/'/,{token:"string.quote",bracket:"@open",next:"@string_sq"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],params:[[/\b[A-Za-z0-9_]+\b(?=\()/,{token:"identifier",next:"@pop"}],[/\b[A-Za-z0-9_]+\b/,"variable.name","@pop"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],comment2:[[/[^\(*]+/,"comment"],[/\(\*/,"comment","@push"],["\\*\\)","comment","@pop"],[/[\(*]/,"comment"]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\/.*$/,"comment"],[/\/\*/,"comment","@comment"],[/\(\*/,"comment","@comment2"]],string_dq:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],string_sq:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/6717.6717.js b/docs/dist/6717.6717.js deleted file mode 100644 index 72537d45..00000000 --- a/docs/dist/6717.6717.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6717],{96717:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>i,language:()=>r});var o=n(89587),i={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],onEnterRules:[{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,afterText:/^\s*\*\/$/,action:{indentAction:o.Mj.IndentAction.IndentOutdent,appendText:" * "}},{beforeText:/^\s*\/\*\*(?!\/)([^\*]|\*(?!\/))*$/,action:{indentAction:o.Mj.IndentAction.None,appendText:" * "}},{beforeText:/^(\t|(\ \ ))*\ \*(\ ([^\*]|\*(?!\/))*)?$/,action:{indentAction:o.Mj.IndentAction.None,appendText:"* "}},{beforeText:/^(\t|(\ \ ))*\ \*\/\s*$/,action:{indentAction:o.Mj.IndentAction.None,removeText:1}}],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],folding:{markers:{start:new RegExp("^\\s*//\\s*#?region\\b"),end:new RegExp("^\\s*//\\s*#?endregion\\b")}}},r={defaultToken:"invalid",tokenPostfix:".ts",keywords:["abstract","any","as","asserts","bigint","boolean","break","case","catch","class","continue","const","constructor","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","infer","instanceof","interface","is","keyof","let","module","namespace","never","new","null","number","object","package","private","protected","public","readonly","require","global","return","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unique","unknown","var","void","while","with","yield","async","await","of"],operators:["<=",">=","==","!=","===","!==","=>","+","-","**","*","/","%","++","--","<<","</",">>",">>>","&","|","^","!","~","&&","||","??","?",":","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=","@"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/[a-z_$][\w$]*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[A-Z][\w\$]*/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"],[/`/,"string","@string_backtick"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],string_single:[[/[^\\']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"]],string_backtick:[[/\$\{/,{token:"delimiter.bracket",next:"@bracketCounting"}],[/[^\\`$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/`/,"string","@pop"]],bracketCounting:[[/\{/,"delimiter.bracket","@bracketCounting"],[/\}/,"delimiter.bracket","@pop"],{include:"common"}]}}}}]); \ No newline at end of file diff --git a/docs/dist/6917.6917.js b/docs/dist/6917.6917.js deleted file mode 100644 index 9e2b912a..00000000 --- a/docs/dist/6917.6917.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[6917],{46917:(e,t,n)=>{"use strict";n.r(t),n.d(t,{setupMode:()=>fs});var r,i,o=n(61460),s=function(){function e(e){var t=this;this._defaults=e,this._worker=null,this._idleCheckInterval=window.setInterval((function(){return t._checkIfIdle()}),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange((function(){return t._stopWorker()}))}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()},e.prototype._checkIfIdle=function(){this._worker&&Date.now()-this._lastUsedTime>12e4&&this._stopWorker()},e.prototype._getClient=function(){return this._lastUsedTime=Date.now(),this._client||(this._worker=o.j6.createWebWorker({moduleId:"vs/language/css/cssWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId}}),this._client=this._worker.getProxy()),this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return this._getClient().then((function(t){e=t})).then((function(e){return t._worker.withSyncedResources(n)})).then((function(t){return e}))},e}();(i=r||(r={}))[i.Ident=0]="Ident",i[i.AtKeyword=1]="AtKeyword",i[i.String=2]="String",i[i.BadString=3]="BadString",i[i.UnquotedString=4]="UnquotedString",i[i.Hash=5]="Hash",i[i.Num=6]="Num",i[i.Percentage=7]="Percentage",i[i.Dimension=8]="Dimension",i[i.UnicodeRange=9]="UnicodeRange",i[i.CDO=10]="CDO",i[i.CDC=11]="CDC",i[i.Colon=12]="Colon",i[i.SemiColon=13]="SemiColon",i[i.CurlyL=14]="CurlyL",i[i.CurlyR=15]="CurlyR",i[i.ParenthesisL=16]="ParenthesisL",i[i.ParenthesisR=17]="ParenthesisR",i[i.BracketL=18]="BracketL",i[i.BracketR=19]="BracketR",i[i.Whitespace=20]="Whitespace",i[i.Includes=21]="Includes",i[i.Dashmatch=22]="Dashmatch",i[i.SubstringOperator=23]="SubstringOperator",i[i.PrefixOperator=24]="PrefixOperator",i[i.SuffixOperator=25]="SuffixOperator",i[i.Delim=26]="Delim",i[i.EMS=27]="EMS",i[i.EXS=28]="EXS",i[i.Length=29]="Length",i[i.Angle=30]="Angle",i[i.Time=31]="Time",i[i.Freq=32]="Freq",i[i.Exclamation=33]="Exclamation",i[i.Resolution=34]="Resolution",i[i.Comma=35]="Comma",i[i.Charset=36]="Charset",i[i.EscapedJavaScript=37]="EscapedJavaScript",i[i.BadEscapedJavaScript=38]="BadEscapedJavaScript",i[i.Comment=39]="Comment",i[i.SingleLineComment=40]="SingleLineComment",i[i.EOF=41]="EOF",i[i.CustomToken=42]="CustomToken";var a=function(){function e(e){this.source=e,this.len=e.length,this.position=0}return e.prototype.substring=function(e,t){return void 0===t&&(t=this.position),this.source.substring(e,t)},e.prototype.eos=function(){return this.len<=this.position},e.prototype.pos=function(){return this.position},e.prototype.goBackTo=function(e){this.position=e},e.prototype.goBack=function(e){this.position-=e},e.prototype.advance=function(e){this.position+=e},e.prototype.nextChar=function(){return this.source.charCodeAt(this.position++)||0},e.prototype.peekChar=function(e){return void 0===e&&(e=0),this.source.charCodeAt(this.position+e)||0},e.prototype.lookbackChar=function(e){return void 0===e&&(e=0),this.source.charCodeAt(this.position-e)||0},e.prototype.advanceIfChar=function(e){return e===this.source.charCodeAt(this.position)&&(this.position++,!0)},e.prototype.advanceIfChars=function(e){if(this.position+e.length>this.source.length)return!1;for(var t=0;t<e.length;t++)if(this.source.charCodeAt(this.position+t)!==e[t])return!1;return this.advance(t),!0},e.prototype.advanceWhileChar=function(e){for(var t=this.position;this.position<this.len&&e(this.source.charCodeAt(this.position));)this.position++;return this.position-t},e}(),l="a".charCodeAt(0),c="f".charCodeAt(0),d="z".charCodeAt(0),p="A".charCodeAt(0),h="F".charCodeAt(0),m="Z".charCodeAt(0),u="0".charCodeAt(0),f="9".charCodeAt(0),g="~".charCodeAt(0),b="^".charCodeAt(0),v="=".charCodeAt(0),y="|".charCodeAt(0),w="-".charCodeAt(0),x="_".charCodeAt(0),S="%".charCodeAt(0),k="*".charCodeAt(0),C="(".charCodeAt(0),F=")".charCodeAt(0),z="<".charCodeAt(0),E=">".charCodeAt(0),D="@".charCodeAt(0),T="#".charCodeAt(0),R="$".charCodeAt(0),I="\\".charCodeAt(0),M="/".charCodeAt(0),P="\n".charCodeAt(0),_="\r".charCodeAt(0),N="\f".charCodeAt(0),A='"'.charCodeAt(0),O="'".charCodeAt(0),W=" ".charCodeAt(0),L="\t".charCodeAt(0),U=";".charCodeAt(0),j=":".charCodeAt(0),V="{".charCodeAt(0),B="}".charCodeAt(0),$="[".charCodeAt(0),q="]".charCodeAt(0),K=",".charCodeAt(0),G=".".charCodeAt(0),H="!".charCodeAt(0),J={};J[U]=r.SemiColon,J[j]=r.Colon,J[V]=r.CurlyL,J[B]=r.CurlyR,J[q]=r.BracketR,J[$]=r.BracketL,J[C]=r.ParenthesisL,J[F]=r.ParenthesisR,J[K]=r.Comma;var Y={};Y.em=r.EMS,Y.ex=r.EXS,Y.px=r.Length,Y.cm=r.Length,Y.mm=r.Length,Y.in=r.Length,Y.pt=r.Length,Y.pc=r.Length,Y.deg=r.Angle,Y.rad=r.Angle,Y.grad=r.Angle,Y.ms=r.Time,Y.s=r.Time,Y.hz=r.Freq,Y.khz=r.Freq,Y["%"]=r.Percentage,Y.fr=r.Percentage,Y.dpi=r.Resolution,Y.dpcm=r.Resolution;var X=function(){function e(){this.stream=new a(""),this.ignoreComment=!0,this.ignoreWhitespace=!0,this.inURL=!1}return e.prototype.setSource=function(e){this.stream=new a(e)},e.prototype.finishToken=function(e,t,n){return{offset:e,len:this.stream.pos()-e,type:t,text:n||this.stream.substring(e)}},e.prototype.substring=function(e,t){return this.stream.substring(e,e+t)},e.prototype.pos=function(){return this.stream.pos()},e.prototype.goBackTo=function(e){this.stream.goBackTo(e)},e.prototype.scanUnquotedString=function(){var e=this.stream.pos(),t=[];return this._unquotedString(t)?this.finishToken(e,r.UnquotedString,t.join("")):null},e.prototype.scan=function(){var e=this.trivia();if(null!==e)return e;var t=this.stream.pos();return this.stream.eos()?this.finishToken(t,r.EOF):this.scanNext(t)},e.prototype.scanNext=function(e){if(this.stream.advanceIfChars([z,H,w,w]))return this.finishToken(e,r.CDO);if(this.stream.advanceIfChars([w,w,E]))return this.finishToken(e,r.CDC);var t=[];if(this.ident(t))return this.finishToken(e,r.Ident,t.join(""));if(this.stream.advanceIfChar(D)){if(t=["@"],this._name(t)){var n=t.join("");return"@charset"===n?this.finishToken(e,r.Charset,n):this.finishToken(e,r.AtKeyword,n)}return this.finishToken(e,r.Delim)}if(this.stream.advanceIfChar(T))return t=["#"],this._name(t)?this.finishToken(e,r.Hash,t.join("")):this.finishToken(e,r.Delim);if(this.stream.advanceIfChar(H))return this.finishToken(e,r.Exclamation);if(this._number()){var i=this.stream.pos();if(t=[this.stream.substring(e,i)],this.stream.advanceIfChar(S))return this.finishToken(e,r.Percentage);if(this.ident(t)){var o=this.stream.substring(i).toLowerCase(),s=Y[o];return void 0!==s?this.finishToken(e,s,t.join("")):this.finishToken(e,r.Dimension,t.join(""))}return this.finishToken(e,r.Num)}t=[];var a=this._string(t);return null!==a?this.finishToken(e,a,t.join("")):void 0!==(a=J[this.stream.peekChar()])?(this.stream.advance(1),this.finishToken(e,a)):this.stream.peekChar(0)===g&&this.stream.peekChar(1)===v?(this.stream.advance(2),this.finishToken(e,r.Includes)):this.stream.peekChar(0)===y&&this.stream.peekChar(1)===v?(this.stream.advance(2),this.finishToken(e,r.Dashmatch)):this.stream.peekChar(0)===k&&this.stream.peekChar(1)===v?(this.stream.advance(2),this.finishToken(e,r.SubstringOperator)):this.stream.peekChar(0)===b&&this.stream.peekChar(1)===v?(this.stream.advance(2),this.finishToken(e,r.PrefixOperator)):this.stream.peekChar(0)===R&&this.stream.peekChar(1)===v?(this.stream.advance(2),this.finishToken(e,r.SuffixOperator)):(this.stream.nextChar(),this.finishToken(e,r.Delim))},e.prototype.trivia=function(){for(;;){var e=this.stream.pos();if(this._whitespace()){if(!this.ignoreWhitespace)return this.finishToken(e,r.Whitespace)}else{if(!this.comment())return null;if(!this.ignoreComment)return this.finishToken(e,r.Comment)}}},e.prototype.comment=function(){if(this.stream.advanceIfChars([M,k])){var e=!1,t=!1;return this.stream.advanceWhileChar((function(n){return t&&n===M?(e=!0,!1):(t=n===k,!0)})),e&&this.stream.advance(1),!0}return!1},e.prototype._number=function(){var e,t=0;return this.stream.peekChar()===G&&(t=1),(e=this.stream.peekChar(t))>=u&&e<=f&&(this.stream.advance(t+1),this.stream.advanceWhileChar((function(e){return e>=u&&e<=f||0===t&&e===G})),!0)},e.prototype._newline=function(e){var t=this.stream.peekChar();switch(t){case _:case N:case P:return this.stream.advance(1),e.push(String.fromCharCode(t)),t===_&&this.stream.advanceIfChar(P)&&e.push("\n"),!0}return!1},e.prototype._escape=function(e,t){var n=this.stream.peekChar();if(n===I){this.stream.advance(1),n=this.stream.peekChar();for(var r=0;r<6&&(n>=u&&n<=f||n>=l&&n<=c||n>=p&&n<=h);)this.stream.advance(1),n=this.stream.peekChar(),r++;if(r>0){try{var i=parseInt(this.stream.substring(this.stream.pos()-r),16);i&&e.push(String.fromCharCode(i))}catch(e){}return n===W||n===L?this.stream.advance(1):this._newline([]),!0}if(n!==_&&n!==N&&n!==P)return this.stream.advance(1),e.push(String.fromCharCode(n)),!0;if(t)return this._newline(e)}return!1},e.prototype._stringChar=function(e,t){var n=this.stream.peekChar();return 0!==n&&n!==e&&n!==I&&n!==_&&n!==N&&n!==P&&(this.stream.advance(1),t.push(String.fromCharCode(n)),!0)},e.prototype._string=function(e){if(this.stream.peekChar()===O||this.stream.peekChar()===A){var t=this.stream.nextChar();for(e.push(String.fromCharCode(t));this._stringChar(t,e)||this._escape(e,!0););return this.stream.peekChar()===t?(this.stream.nextChar(),e.push(String.fromCharCode(t)),r.String):r.BadString}return null},e.prototype._unquotedChar=function(e){var t=this.stream.peekChar();return 0!==t&&t!==I&&t!==O&&t!==A&&t!==C&&t!==F&&t!==W&&t!==L&&t!==P&&t!==N&&t!==_&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e.prototype._unquotedString=function(e){for(var t=!1;this._unquotedChar(e)||this._escape(e);)t=!0;return t},e.prototype._whitespace=function(){return this.stream.advanceWhileChar((function(e){return e===W||e===L||e===P||e===N||e===_}))>0},e.prototype._name=function(e){for(var t=!1;this._identChar(e)||this._escape(e);)t=!0;return t},e.prototype.ident=function(e){var t=this.stream.pos();if(this._minus(e)&&this._minus(e)){if(this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}}else if(this._identFirstChar(e)||this._escape(e)){for(;this._identChar(e)||this._escape(e););return!0}return this.stream.goBackTo(t),!1},e.prototype._identFirstChar=function(e){var t=this.stream.peekChar();return(t===x||t>=l&&t<=d||t>=p&&t<=m||t>=128&&t<=65535)&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e.prototype._minus=function(e){var t=this.stream.peekChar();return t===w&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e.prototype._identChar=function(e){var t=this.stream.peekChar();return(t===x||t===w||t>=l&&t<=d||t>=p&&t<=m||t>=u&&t<=f||t>=128&&t<=65535)&&(this.stream.advance(1),e.push(String.fromCharCode(t)),!0)},e}();function Z(e,t){if(e.length<t.length)return!1;for(var n=0;n<t.length;n++)if(e[n]!==t[n])return!1;return!0}function Q(e,t){var n=e.length-t.length;return n>0?e.lastIndexOf(t)===n:0===n&&e===t}function ee(e,t){return void 0===t&&(t=!0),e?e.length<140?e:e.slice(0,140)+(t?"…":""):""}var te,ne,re,ie,oe=(te=function(e,t){return(te=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}te(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});function se(e,t){var n=null;return!e||t<e.offset||t>e.end?null:(e.accept((function(e){return-1===e.offset&&-1===e.length||e.offset<=t&&e.end>=t&&(n?e.length<=n.length&&(n=e):n=e,!0)})),n)}function ae(e,t){for(var n=se(e,t),r=[];n;)r.unshift(n),n=n.parent;return r}(ie=ne||(ne={}))[ie.Undefined=0]="Undefined",ie[ie.Identifier=1]="Identifier",ie[ie.Stylesheet=2]="Stylesheet",ie[ie.Ruleset=3]="Ruleset",ie[ie.Selector=4]="Selector",ie[ie.SimpleSelector=5]="SimpleSelector",ie[ie.SelectorInterpolation=6]="SelectorInterpolation",ie[ie.SelectorCombinator=7]="SelectorCombinator",ie[ie.SelectorCombinatorParent=8]="SelectorCombinatorParent",ie[ie.SelectorCombinatorSibling=9]="SelectorCombinatorSibling",ie[ie.SelectorCombinatorAllSiblings=10]="SelectorCombinatorAllSiblings",ie[ie.SelectorCombinatorShadowPiercingDescendant=11]="SelectorCombinatorShadowPiercingDescendant",ie[ie.Page=12]="Page",ie[ie.PageBoxMarginBox=13]="PageBoxMarginBox",ie[ie.ClassSelector=14]="ClassSelector",ie[ie.IdentifierSelector=15]="IdentifierSelector",ie[ie.ElementNameSelector=16]="ElementNameSelector",ie[ie.PseudoSelector=17]="PseudoSelector",ie[ie.AttributeSelector=18]="AttributeSelector",ie[ie.Declaration=19]="Declaration",ie[ie.Declarations=20]="Declarations",ie[ie.Property=21]="Property",ie[ie.Expression=22]="Expression",ie[ie.BinaryExpression=23]="BinaryExpression",ie[ie.Term=24]="Term",ie[ie.Operator=25]="Operator",ie[ie.Value=26]="Value",ie[ie.StringLiteral=27]="StringLiteral",ie[ie.URILiteral=28]="URILiteral",ie[ie.EscapedValue=29]="EscapedValue",ie[ie.Function=30]="Function",ie[ie.NumericValue=31]="NumericValue",ie[ie.HexColorValue=32]="HexColorValue",ie[ie.MixinDeclaration=33]="MixinDeclaration",ie[ie.MixinReference=34]="MixinReference",ie[ie.VariableName=35]="VariableName",ie[ie.VariableDeclaration=36]="VariableDeclaration",ie[ie.Prio=37]="Prio",ie[ie.Interpolation=38]="Interpolation",ie[ie.NestedProperties=39]="NestedProperties",ie[ie.ExtendsReference=40]="ExtendsReference",ie[ie.SelectorPlaceholder=41]="SelectorPlaceholder",ie[ie.Debug=42]="Debug",ie[ie.If=43]="If",ie[ie.Else=44]="Else",ie[ie.For=45]="For",ie[ie.Each=46]="Each",ie[ie.While=47]="While",ie[ie.MixinContentReference=48]="MixinContentReference",ie[ie.MixinContentDeclaration=49]="MixinContentDeclaration",ie[ie.Media=50]="Media",ie[ie.Keyframe=51]="Keyframe",ie[ie.FontFace=52]="FontFace",ie[ie.Import=53]="Import",ie[ie.Namespace=54]="Namespace",ie[ie.Invocation=55]="Invocation",ie[ie.FunctionDeclaration=56]="FunctionDeclaration",ie[ie.ReturnStatement=57]="ReturnStatement",ie[ie.MediaQuery=58]="MediaQuery",ie[ie.FunctionParameter=59]="FunctionParameter",ie[ie.FunctionArgument=60]="FunctionArgument",ie[ie.KeyframeSelector=61]="KeyframeSelector",ie[ie.ViewPort=62]="ViewPort",ie[ie.Document=63]="Document",ie[ie.AtApplyRule=64]="AtApplyRule",ie[ie.CustomPropertyDeclaration=65]="CustomPropertyDeclaration",ie[ie.CustomPropertySet=66]="CustomPropertySet",ie[ie.ListEntry=67]="ListEntry",ie[ie.Supports=68]="Supports",ie[ie.SupportsCondition=69]="SupportsCondition",ie[ie.NamespacePrefix=70]="NamespacePrefix",ie[ie.GridLine=71]="GridLine",ie[ie.Plugin=72]="Plugin",ie[ie.UnknownAtRule=73]="UnknownAtRule",ie[ie.Use=74]="Use",ie[ie.ModuleConfiguration=75]="ModuleConfiguration",ie[ie.Forward=76]="Forward",ie[ie.ForwardVisibility=77]="ForwardVisibility",ie[ie.Module=78]="Module",function(e){e[e.Mixin=0]="Mixin",e[e.Rule=1]="Rule",e[e.Variable=2]="Variable",e[e.Function=3]="Function",e[e.Keyframe=4]="Keyframe",e[e.Unknown=5]="Unknown",e[e.Module=6]="Module",e[e.Forward=7]="Forward",e[e.ForwardVisibility=8]="ForwardVisibility"}(re||(re={}));var le,ce=function(){function e(e,t,n){void 0===e&&(e=-1),void 0===t&&(t=-1),this.parent=null,this.offset=e,this.length=t,n&&(this.nodeType=n)}return Object.defineProperty(e.prototype,"end",{get:function(){return this.offset+this.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"type",{get:function(){return this.nodeType||ne.Undefined},set:function(e){this.nodeType=e},enumerable:!0,configurable:!0}),e.prototype.getTextProvider=function(){for(var e=this;e&&!e.textProvider;)e=e.parent;return e?e.textProvider:function(){return"unknown"}},e.prototype.getText=function(){return this.getTextProvider()(this.offset,this.length)},e.prototype.matches=function(e){return this.length===e.length&&this.getTextProvider()(this.offset,this.length)===e},e.prototype.startsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.offset,e.length)===e},e.prototype.endsWith=function(e){return this.length>=e.length&&this.getTextProvider()(this.end-e.length,e.length)===e},e.prototype.accept=function(e){if(e(this)&&this.children)for(var t=0,n=this.children;t<n.length;t++)n[t].accept(e)},e.prototype.acceptVisitor=function(e){this.accept(e.visitNode.bind(e))},e.prototype.adoptChild=function(e,t){if(void 0===t&&(t=-1),e.parent&&e.parent.children){var n=e.parent.children.indexOf(e);n>=0&&e.parent.children.splice(n,1)}e.parent=this;var r=this.children;return r||(r=this.children=[]),-1!==t?r.splice(t,0,e):r.push(e),e},e.prototype.attachTo=function(e,t){return void 0===t&&(t=-1),e&&e.adoptChild(this,t),this},e.prototype.collectIssues=function(e){this.issues&&e.push.apply(e,this.issues)},e.prototype.addIssue=function(e){this.issues||(this.issues=[]),this.issues.push(e)},e.prototype.hasIssue=function(e){return Array.isArray(this.issues)&&this.issues.some((function(t){return t.getRule()===e}))},e.prototype.isErroneous=function(e){return void 0===e&&(e=!1),!!(this.issues&&this.issues.length>0)||e&&Array.isArray(this.children)&&this.children.some((function(e){return e.isErroneous(!0)}))},e.prototype.setNode=function(e,t,n){return void 0===n&&(n=-1),!!t&&(t.attachTo(this,n),this[e]=t,!0)},e.prototype.addChild=function(e){return!!e&&(this.children||(this.children=[]),e.attachTo(this),this.updateOffsetAndLength(e),!0)},e.prototype.updateOffsetAndLength=function(e){(e.offset<this.offset||-1===this.offset)&&(this.offset=e.offset);var t=e.end;(t>this.end||-1===this.length)&&(this.length=t-this.offset)},e.prototype.hasChildren=function(){return!!this.children&&this.children.length>0},e.prototype.getChildren=function(){return this.children?this.children.slice(0):[]},e.prototype.getChild=function(e){return this.children&&e<this.children.length?this.children[e]:null},e.prototype.addChildren=function(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];this.addChild(r)}},e.prototype.findFirstChildBeforeOffset=function(e){if(this.children)for(var t=null,n=this.children.length-1;n>=0;n--)if((t=this.children[n]).offset<=e)return t;return null},e.prototype.findChildAtOffset=function(e,t){var n=this.findFirstChildBeforeOffset(e);return n&&n.end>=e?t&&n.findChildAtOffset(e,!0)||n:null},e.prototype.encloses=function(e){return this.offset<=e.offset&&this.offset+this.length>=e.offset+e.length},e.prototype.getParent=function(){for(var e=this.parent;e instanceof de;)e=e.parent;return e},e.prototype.findParent=function(e){for(var t=this;t&&t.type!==e;)t=t.parent;return t},e.prototype.findAParent=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=this;n&&!e.some((function(e){return n.type===e}));)n=n.parent;return n},e.prototype.setData=function(e,t){this.options||(this.options={}),this.options[e]=t},e.prototype.getData=function(e){return this.options&&this.options.hasOwnProperty(e)?this.options[e]:null},e}(),de=function(e){function t(t,n){void 0===n&&(n=-1);var r=e.call(this,-1,-1)||this;return r.attachTo(t,n),r.offset=-1,r.length=-1,r}return oe(t,e),t}(ce),pe=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.isCustomProperty=!1,r}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Identifier},enumerable:!0,configurable:!0}),t.prototype.containsInterpolation=function(){return this.hasChildren()},t}(ce),he=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Stylesheet},enumerable:!0,configurable:!0}),t}(ce),me=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Declarations},enumerable:!0,configurable:!0}),t}(ce),ue=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),t.prototype.getDeclarations=function(){return this.declarations},t.prototype.setDeclarations=function(e){return this.setNode("declarations",e)},t}(ce),fe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Ruleset},enumerable:!0,configurable:!0}),t.prototype.getSelectors=function(){return this.selectors||(this.selectors=new de(this)),this.selectors},t.prototype.isNested=function(){return!!this.parent&&null!==this.parent.findParent(ne.Declarations)},t}(ue),ge=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Selector},enumerable:!0,configurable:!0}),t}(ce),be=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.SimpleSelector},enumerable:!0,configurable:!0}),t}(ce),ve=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.AtApplyRule},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t}(ce),ye=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),t}(ce),we=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.CustomPropertyDeclaration},enumerable:!0,configurable:!0}),t.prototype.setProperty=function(e){return this.setNode("property",e)},t.prototype.getProperty=function(){return this.property},t.prototype.setValue=function(e){return this.setNode("value",e)},t.prototype.getValue=function(){return this.value},t.prototype.setPropertySet=function(e){return this.setNode("propertySet",e)},t.prototype.getPropertySet=function(){return this.propertySet},t}(ye),xe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.CustomPropertySet},enumerable:!0,configurable:!0}),t}(ue),Se=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.property=null,r}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Declaration},enumerable:!0,configurable:!0}),t.prototype.setProperty=function(e){return this.setNode("property",e)},t.prototype.getProperty=function(){return this.property},t.prototype.getFullPropertyName=function(){var e=this.property?this.property.getName():"unknown";if(this.parent instanceof me&&this.parent.getParent()instanceof Ne){var n=this.parent.getParent().getParent();if(n instanceof t)return n.getFullPropertyName()+e}return e},t.prototype.getNonPrefixedPropertyName=function(){var e=this.getFullPropertyName();if(e&&"-"===e.charAt(0)){var t=e.indexOf("-",1);if(-1!==t)return e.substring(t+1)}return e},t.prototype.setValue=function(e){return this.setNode("value",e)},t.prototype.getValue=function(){return this.value},t.prototype.setNestedProperties=function(e){return this.setNode("nestedProperties",e)},t.prototype.getNestedProperties=function(){return this.nestedProperties},t}(ye),ke=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Property},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return e=this.getText(),(t=/[_\+]+$/.exec(e))&&t[0].length?e.substr(0,e.length-t[0].length):e;var e,t},t.prototype.isCustomProperty=function(){return!!this.identifier&&this.identifier.isCustomProperty},t}(ce),Ce=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Function},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t}(function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Invocation},enumerable:!0,configurable:!0}),t.prototype.getArguments=function(){return this.arguments||(this.arguments=new de(this)),this.arguments},t}(ce)),Fe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.FunctionParameter},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.setDefaultValue=function(e){return this.setNode("defaultValue",e,0)},t.prototype.getDefaultValue=function(){return this.defaultValue},t}(ce),ze=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.FunctionArgument},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.setValue=function(e){return this.setNode("value",e,0)},t.prototype.getValue=function(){return this.value},t}(ce),Ee=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.If},enumerable:!0,configurable:!0}),t.prototype.setExpression=function(e){return this.setNode("expression",e,0)},t.prototype.setElseClause=function(e){return this.setNode("elseClause",e)},t}(ue),De=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.For},enumerable:!0,configurable:!0}),t.prototype.setVariable=function(e){return this.setNode("variable",e,0)},t}(ue),Te=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Each},enumerable:!0,configurable:!0}),t.prototype.getVariables=function(){return this.variables||(this.variables=new de(this)),this.variables},t}(ue),Re=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.While},enumerable:!0,configurable:!0}),t}(ue),Ie=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Else},enumerable:!0,configurable:!0}),t}(ue),Me=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.FunctionDeclaration},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.getParameters=function(){return this.parameters||(this.parameters=new de(this)),this.parameters},t}(ue),Pe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.ViewPort},enumerable:!0,configurable:!0}),t}(ue),_e=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.FontFace},enumerable:!0,configurable:!0}),t}(ue),Ne=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.NestedProperties},enumerable:!0,configurable:!0}),t}(ue),Ae=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Keyframe},enumerable:!0,configurable:!0}),t.prototype.setKeyword=function(e){return this.setNode("keyword",e,0)},t.prototype.getKeyword=function(){return this.keyword},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t}(ue),Oe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.KeyframeSelector},enumerable:!0,configurable:!0}),t}(ue),We=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Import},enumerable:!0,configurable:!0}),t.prototype.setMedialist=function(e){return!!e&&(e.attachTo(this),!0)},t}(ce),Le=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Use},enumerable:!0,configurable:!0}),t.prototype.getParameters=function(){return this.parameters||(this.parameters=new de(this)),this.parameters},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(ce),Ue=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.ModuleConfiguration},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.setValue=function(e){return this.setNode("value",e,0)},t.prototype.getValue=function(){return this.value},t}(ce),je=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Forward},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(ce),Ve=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.ForwardVisibility},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(ce),Be=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Namespace},enumerable:!0,configurable:!0}),t}(ce),$e=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Media},enumerable:!0,configurable:!0}),t}(ue),qe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Supports},enumerable:!0,configurable:!0}),t}(ue),Ke=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Document},enumerable:!0,configurable:!0}),t}(ue),Ge=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),t.prototype.getMediums=function(){return this.mediums||(this.mediums=new de(this)),this.mediums},t}(ce),He=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.MediaQuery},enumerable:!0,configurable:!0}),t}(ce),Je=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.SupportsCondition},enumerable:!0,configurable:!0}),t}(ce),Ye=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Page},enumerable:!0,configurable:!0}),t}(ue),Xe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.PageBoxMarginBox},enumerable:!0,configurable:!0}),t}(ue),Ze=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Expression},enumerable:!0,configurable:!0}),t}(ce),Qe=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.BinaryExpression},enumerable:!0,configurable:!0}),t.prototype.setLeft=function(e){return this.setNode("left",e)},t.prototype.getLeft=function(){return this.left},t.prototype.setRight=function(e){return this.setNode("right",e)},t.prototype.getRight=function(){return this.right},t.prototype.setOperator=function(e){return this.setNode("operator",e)},t.prototype.getOperator=function(){return this.operator},t}(ce),et=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Term},enumerable:!0,configurable:!0}),t.prototype.setOperator=function(e){return this.setNode("operator",e)},t.prototype.getOperator=function(){return this.operator},t.prototype.setExpression=function(e){return this.setNode("expression",e)},t.prototype.getExpression=function(){return this.expression},t}(ce),tt=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.AttributeSelector},enumerable:!0,configurable:!0}),t.prototype.setNamespacePrefix=function(e){return this.setNode("namespacePrefix",e)},t.prototype.getNamespacePrefix=function(){return this.namespacePrefix},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.setOperator=function(e){return this.setNode("operator",e)},t.prototype.getOperator=function(){return this.operator},t.prototype.setValue=function(e){return this.setNode("value",e)},t.prototype.getValue=function(){return this.value},t}(ce),nt=(function(e){function t(t,n){return e.call(this,t,n)||this}oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Operator},enumerable:!0,configurable:!0})}(ce),function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.HexColorValue},enumerable:!0,configurable:!0}),t}(ce)),rt=".".charCodeAt(0),it="0".charCodeAt(0),ot="9".charCodeAt(0),st=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.NumericValue},enumerable:!0,configurable:!0}),t.prototype.getValue=function(){for(var e,t=this.getText(),n=0,r=0,i=t.length;r<i&&(e=t.charCodeAt(r),it<=e&&e<=ot||e===rt);r++)n+=1;return{value:t.substring(0,n),unit:n<t.length?t.substring(n):void 0}},t}(ce),at=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.variable=null,r.value=null,r.needsSemicolon=!0,r}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.VariableDeclaration},enumerable:!0,configurable:!0}),t.prototype.setVariable=function(e){return!!e&&(e.attachTo(this),this.variable=e,!0)},t.prototype.getVariable=function(){return this.variable},t.prototype.getName=function(){return this.variable?this.variable.getName():""},t.prototype.setValue=function(e){return!!e&&(e.attachTo(this),this.value=e,!0)},t.prototype.getValue=function(){return this.value},t}(ye),lt=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Interpolation},enumerable:!0,configurable:!0}),t}(ce),ct=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.VariableName},enumerable:!0,configurable:!0}),t.prototype.getName=function(){return this.getText()},t}(ce),dt=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.ExtendsReference},enumerable:!0,configurable:!0}),t.prototype.getSelectors=function(){return this.selectors||(this.selectors=new de(this)),this.selectors},t}(ce),pt=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.MixinContentReference},enumerable:!0,configurable:!0}),t.prototype.getArguments=function(){return this.arguments||(this.arguments=new de(this)),this.arguments},t}(ce),ht=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.MixinContentReference},enumerable:!0,configurable:!0}),t.prototype.getParameters=function(){return this.parameters||(this.parameters=new de(this)),this.parameters},t}(ue),mt=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.MixinReference},enumerable:!0,configurable:!0}),t.prototype.getNamespaces=function(){return this.namespaces||(this.namespaces=new de(this)),this.namespaces},t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.getArguments=function(){return this.arguments||(this.arguments=new de(this)),this.arguments},t.prototype.setContent=function(e){return this.setNode("content",e)},t.prototype.getContent=function(){return this.content},t}(ce),ut=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.MixinDeclaration},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t.prototype.getName=function(){return this.identifier?this.identifier.getText():""},t.prototype.getParameters=function(){return this.parameters||(this.parameters=new de(this)),this.parameters},t.prototype.setGuard=function(e){return e&&(e.attachTo(this),this.guard=e),!1},t}(ue),ft=function(e){function t(t,n){return e.call(this,t,n)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.UnknownAtRule},enumerable:!0,configurable:!0}),t.prototype.setAtRuleName=function(e){this.atRuleName=e},t.prototype.getAtRuleName=function(){return this.atRuleName},t}(ue),gt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.ListEntry},enumerable:!0,configurable:!0}),t.prototype.setKey=function(e){return this.setNode("key",e,0)},t.prototype.setValue=function(e){return this.setNode("value",e,1)},t}(ce),bt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),t.prototype.getConditions=function(){return this.conditions||(this.conditions=new de(this)),this.conditions},t}(ce),vt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),t.prototype.setVariable=function(e){return this.setNode("variable",e)},t}(ce),yt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return oe(t,e),Object.defineProperty(t.prototype,"type",{get:function(){return ne.Module},enumerable:!0,configurable:!0}),t.prototype.setIdentifier=function(e){return this.setNode("identifier",e,0)},t.prototype.getIdentifier=function(){return this.identifier},t}(ce);!function(e){e[e.Ignore=1]="Ignore",e[e.Warning=2]="Warning",e[e.Error=4]="Error"}(le||(le={}));var wt=function(){function e(e,t,n,r,i,o){void 0===i&&(i=e.offset),void 0===o&&(o=e.length),this.node=e,this.rule=t,this.level=n,this.message=r||t.message,this.offset=i,this.length=o}return e.prototype.getRule=function(){return this.rule},e.prototype.getLevel=function(){return this.level},e.prototype.getOffset=function(){return this.offset},e.prototype.getLength=function(){return this.length},e.prototype.getNode=function(){return this.node},e.prototype.getMessage=function(){return this.message},e}(),xt=function(){function e(){this.entries=[]}return e.entries=function(t){var n=new e;return t.acceptVisitor(n),n.entries},e.prototype.visitNode=function(e){return e.isErroneous()&&e.collectIssues(this.entries),!0},e}();function St(e,t){return 0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,n){var r=n[0];return void 0!==t[r]?t[r]:e}))}function kt(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return St(t,n)}function Ct(e){return kt}var Ft=Ct(),zt=function(e,t){this.id=e,this.message=t},Et={NumberExpected:new zt("css-numberexpected",Ft("expected.number","number expected")),ConditionExpected:new zt("css-conditionexpected",Ft("expected.condt","condition expected")),RuleOrSelectorExpected:new zt("css-ruleorselectorexpected",Ft("expected.ruleorselector","at-rule or selector expected")),DotExpected:new zt("css-dotexpected",Ft("expected.dot","dot expected")),ColonExpected:new zt("css-colonexpected",Ft("expected.colon","colon expected")),SemiColonExpected:new zt("css-semicolonexpected",Ft("expected.semicolon","semi-colon expected")),TermExpected:new zt("css-termexpected",Ft("expected.term","term expected")),ExpressionExpected:new zt("css-expressionexpected",Ft("expected.expression","expression expected")),OperatorExpected:new zt("css-operatorexpected",Ft("expected.operator","operator expected")),IdentifierExpected:new zt("css-identifierexpected",Ft("expected.ident","identifier expected")),PercentageExpected:new zt("css-percentageexpected",Ft("expected.percentage","percentage expected")),URIOrStringExpected:new zt("css-uriorstringexpected",Ft("expected.uriorstring","uri or string expected")),URIExpected:new zt("css-uriexpected",Ft("expected.uri","URI expected")),VariableNameExpected:new zt("css-varnameexpected",Ft("expected.varname","variable name expected")),VariableValueExpected:new zt("css-varvalueexpected",Ft("expected.varvalue","variable value expected")),PropertyValueExpected:new zt("css-propertyvalueexpected",Ft("expected.propvalue","property value expected")),LeftCurlyExpected:new zt("css-lcurlyexpected",Ft("expected.lcurly","{ expected")),RightCurlyExpected:new zt("css-rcurlyexpected",Ft("expected.rcurly","} expected")),LeftSquareBracketExpected:new zt("css-rbracketexpected",Ft("expected.lsquare","[ expected")),RightSquareBracketExpected:new zt("css-lbracketexpected",Ft("expected.rsquare","] expected")),LeftParenthesisExpected:new zt("css-lparentexpected",Ft("expected.lparen","( expected")),RightParenthesisExpected:new zt("css-rparentexpected",Ft("expected.rparent",") expected")),CommaExpected:new zt("css-commaexpected",Ft("expected.comma","comma expected")),PageDirectiveOrDeclarationExpected:new zt("css-pagedirordeclexpected",Ft("expected.pagedirordecl","page directive or declaraton expected")),UnknownAtRule:new zt("css-unknownatrule",Ft("unknown.atrule","at-rule unknown")),UnknownKeyword:new zt("css-unknownkeyword",Ft("unknown.keyword","unknown keyword")),SelectorExpected:new zt("css-selectorexpected",Ft("expected.selector","selector expected")),StringLiteralExpected:new zt("css-stringliteralexpected",Ft("expected.stringliteral","string literal expected")),WhitespaceExpected:new zt("css-whitespaceexpected",Ft("expected.whitespace","whitespace expected")),MediaQueryExpected:new zt("css-mediaqueryexpected",Ft("expected.mediaquery","media query expected")),IdentifierOrWildcardExpected:new zt("css-idorwildcardexpected",Ft("expected.idorwildcard","identifier or wildcard expected")),WildcardExpected:new zt("css-wildcardexpected",Ft("expected.wildcard","wildcard expected")),IdentifierOrVariableExpected:new zt("css-idorvarexpected",Ft("expected.idorvar","identifier or variable expected"))},Dt={E:"Edge",FF:"Firefox",S:"Safari",C:"Chrome",IE:"IE",O:"Opera"};function Tt(e){switch(e){case"experimental":return"⚠️ Property is experimental. Be cautious when using it.️\n\n";case"nonstandard":return"🚨️ Property is nonstandard. Avoid using it.\n\n";case"obsolete":return"🚨️️️ Property is obsolete. Avoid using it.\n\n";default:return""}}function Rt(e,t){var n;if(""!==(n=t?{kind:"markdown",value:Pt(e)}:{kind:"plaintext",value:Mt(e)}).value)return n}function It(e){return(e=e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")).replace(/</g,"<").replace(/>/g,">")}function Mt(e){if(!e.description||""===e.description)return"";if("string"!=typeof e.description)return e.description.value;var t="";e.status&&(t+=Tt(e.status)),t+=e.description;var n=_t(e.browsers);return n&&(t+="\n("+n+")"),"syntax"in e&&(t+="\n\nSyntax: "+e.syntax),e.references&&e.references.length>0&&(t+="\n\n",t+=e.references.map((function(e){return e.name+": "+e.url})).join(" | ")),t}function Pt(e){if(!e.description||""===e.description)return"";var t="";e.status&&(t+=Tt(e.status)),t+=It("string"==typeof e.description?e.description:e.description.value);var n=_t(e.browsers);return n&&(t+="\n\n("+It(n)+")"),"syntax"in e&&e.syntax&&(t+="\n\nSyntax: "+It(e.syntax)),e.references&&e.references.length>0&&(t+="\n\n",t+=e.references.map((function(e){return"["+e.name+"]("+e.url+")"})).join(" | ")),t}function _t(e){return void 0===e&&(e=[]),0===e.length?null:e.map((function(e){var t="",n=e.match(/([A-Z]+)(\d+)?/),r=n[1],i=n[2];return r in Dt&&(t+=Dt[r]),i&&(t+=" "+i),t})).join(", ")}var Nt=Ct(),At=[{func:"rgb($red, $green, $blue)",desc:Nt("css.builtin.rgb","Creates a Color from red, green, and blue values.")},{func:"rgba($red, $green, $blue, $alpha)",desc:Nt("css.builtin.rgba","Creates a Color from red, green, blue, and alpha values.")},{func:"hsl($hue, $saturation, $lightness)",desc:Nt("css.builtin.hsl","Creates a Color from hue, saturation, and lightness values.")},{func:"hsla($hue, $saturation, $lightness, $alpha)",desc:Nt("css.builtin.hsla","Creates a Color from hue, saturation, lightness, and alpha values.")}],Ot={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rebeccapurple:"#663399",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},Wt={currentColor:"The value of the 'color' property. The computed value of the 'currentColor' keyword is the computed value of the 'color' property. If the 'currentColor' keyword is set on the 'color' property itself, it is treated as 'color:inherit' at parse time.",transparent:"Fully transparent. This keyword can be considered a shorthand for rgba(0,0,0,0) which is its computed value."};function Lt(e,t){var n=e.getText().match(/^([-+]?[0-9]*\.?[0-9]+)(%?)$/);if(n){n[2]&&(t=100);var r=parseFloat(n[1])/t;if(r>=0&&r<=1)return r}throw new Error}function Ut(e){return e<48?0:e<=57?e-48:(e<97&&(e+=32),e>=97&&e<=102?e-97+10:0)}function jt(e){if("#"!==e[0])return null;switch(e.length){case 4:return{red:17*Ut(e.charCodeAt(1))/255,green:17*Ut(e.charCodeAt(2))/255,blue:17*Ut(e.charCodeAt(3))/255,alpha:1};case 5:return{red:17*Ut(e.charCodeAt(1))/255,green:17*Ut(e.charCodeAt(2))/255,blue:17*Ut(e.charCodeAt(3))/255,alpha:17*Ut(e.charCodeAt(4))/255};case 7:return{red:(16*Ut(e.charCodeAt(1))+Ut(e.charCodeAt(2)))/255,green:(16*Ut(e.charCodeAt(3))+Ut(e.charCodeAt(4)))/255,blue:(16*Ut(e.charCodeAt(5))+Ut(e.charCodeAt(6)))/255,alpha:1};case 9:return{red:(16*Ut(e.charCodeAt(1))+Ut(e.charCodeAt(2)))/255,green:(16*Ut(e.charCodeAt(3))+Ut(e.charCodeAt(4)))/255,blue:(16*Ut(e.charCodeAt(5))+Ut(e.charCodeAt(6)))/255,alpha:(16*Ut(e.charCodeAt(7))+Ut(e.charCodeAt(8)))/255}}return null}var Vt={bottom:"Computes to ‘100%’ for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset.",center:"Computes to ‘50%’ (‘left 50%’) for the horizontal position if the horizontal position is not otherwise specified, or ‘50%’ (‘top 50%’) for the vertical position if it is.",left:"Computes to ‘0%’ for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset.",right:"Computes to ‘100%’ for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset.",top:"Computes to ‘0%’ for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset."},Bt={"no-repeat":"Placed once and not repeated in this direction.",repeat:"Repeated in this direction as often as needed to cover the background painting area.","repeat-x":"Computes to ‘repeat no-repeat’.","repeat-y":"Computes to ‘no-repeat repeat’.",round:"Repeated as often as will fit within the background positioning area. If it doesn’t fit a whole number of times, it is rescaled so that it does.",space:"Repeated as often as will fit within the background positioning area without being clipped and then the images are spaced out to fill the area."},$t={dashed:"A series of square-ended dashes.",dotted:"A series of round dots.",double:"Two parallel solid lines with some space between them.",groove:"Looks as if it were carved in the canvas.",hidden:"Same as ‘none’, but has different behavior in the border conflict resolution rules for border-collapsed tables.",inset:"Looks as if the content on the inside of the border is sunken into the canvas.",none:"No border. Color and width are ignored.",outset:"Looks as if the content on the inside of the border is coming out of the canvas.",ridge:"Looks as if it were coming out of the canvas.",solid:"A single line segment."},qt=["medium","thick","thin"],Kt={"border-box":"The background is painted within (clipped to) the border box.","content-box":"The background is painted within (clipped to) the content box.","padding-box":"The background is painted within (clipped to) the padding box."},Gt={"margin-box":"Uses the margin box as reference box.","fill-box":"Uses the object bounding box as reference box.","stroke-box":"Uses the stroke bounding box as reference box.","view-box":"Uses the nearest SVG viewport as reference box."},Ht={initial:"Represents the value specified as the property’s initial value.",inherit:"Represents the computed value of the property on the element’s parent.",unset:"Acts as either `inherit` or `initial`, depending on whether the property is inherited or not."},Jt={"url()":"Reference an image file by URL","image()":"Provide image fallbacks and annotations.","-webkit-image-set()":"Provide multiple resolutions. Remember to use unprefixed image-set() in addition.","image-set()":"Provide multiple resolutions of an image and const the UA decide which is most appropriate in a given situation.","-moz-element()":"Use an element in the document as an image. Remember to use unprefixed element() in addition.","element()":"Use an element in the document as an image.","cross-fade()":"Indicates the two images to be combined and how far along in the transition the combination is.","-webkit-gradient()":"Deprecated. Use modern linear-gradient() or radial-gradient() instead.","-webkit-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","-moz-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","-o-linear-gradient()":"Linear gradient. Remember to use unprefixed version in addition.","linear-gradient()":"A linear gradient is created by specifying a straight gradient line, and then several colors placed along that line.","-webkit-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","-moz-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","-o-repeating-linear-gradient()":"Repeating Linear gradient. Remember to use unprefixed version in addition.","repeating-linear-gradient()":"Same as linear-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position.","-webkit-radial-gradient()":"Radial gradient. Remember to use unprefixed version in addition.","-moz-radial-gradient()":"Radial gradient. Remember to use unprefixed version in addition.","radial-gradient()":"Colors emerge from a single point and smoothly spread outward in a circular or elliptical shape.","-webkit-repeating-radial-gradient()":"Repeating radial gradient. Remember to use unprefixed version in addition.","-moz-repeating-radial-gradient()":"Repeating radial gradient. Remember to use unprefixed version in addition.","repeating-radial-gradient()":"Same as radial-gradient, except the color-stops are repeated infinitely in both directions, with their positions shifted by multiples of the difference between the last specified color-stop’s position and the first specified color-stop’s position."},Yt={ease:"Equivalent to cubic-bezier(0.25, 0.1, 0.25, 1.0).","ease-in":"Equivalent to cubic-bezier(0.42, 0, 1.0, 1.0).","ease-in-out":"Equivalent to cubic-bezier(0.42, 0, 0.58, 1.0).","ease-out":"Equivalent to cubic-bezier(0, 0, 0.58, 1.0).",linear:"Equivalent to cubic-bezier(0.0, 0.0, 1.0, 1.0).","step-end":"Equivalent to steps(1, end).","step-start":"Equivalent to steps(1, start).","steps()":"The first parameter specifies the number of intervals in the function. The second parameter, which is optional, is either the value “start” or “end”.","cubic-bezier()":"Specifies a cubic-bezier curve. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2).","cubic-bezier(0.6, -0.28, 0.735, 0.045)":"Ease-in Back. Overshoots.","cubic-bezier(0.68, -0.55, 0.265, 1.55)":"Ease-in-out Back. Overshoots.","cubic-bezier(0.175, 0.885, 0.32, 1.275)":"Ease-out Back. Overshoots.","cubic-bezier(0.6, 0.04, 0.98, 0.335)":"Ease-in Circular. Based on half circle.","cubic-bezier(0.785, 0.135, 0.15, 0.86)":"Ease-in-out Circular. Based on half circle.","cubic-bezier(0.075, 0.82, 0.165, 1)":"Ease-out Circular. Based on half circle.","cubic-bezier(0.55, 0.055, 0.675, 0.19)":"Ease-in Cubic. Based on power of three.","cubic-bezier(0.645, 0.045, 0.355, 1)":"Ease-in-out Cubic. Based on power of three.","cubic-bezier(0.215, 0.610, 0.355, 1)":"Ease-out Cubic. Based on power of three.","cubic-bezier(0.95, 0.05, 0.795, 0.035)":"Ease-in Exponential. Based on two to the power ten.","cubic-bezier(1, 0, 0, 1)":"Ease-in-out Exponential. Based on two to the power ten.","cubic-bezier(0.19, 1, 0.22, 1)":"Ease-out Exponential. Based on two to the power ten.","cubic-bezier(0.47, 0, 0.745, 0.715)":"Ease-in Sine.","cubic-bezier(0.445, 0.05, 0.55, 0.95)":"Ease-in-out Sine.","cubic-bezier(0.39, 0.575, 0.565, 1)":"Ease-out Sine.","cubic-bezier(0.55, 0.085, 0.68, 0.53)":"Ease-in Quadratic. Based on power of two.","cubic-bezier(0.455, 0.03, 0.515, 0.955)":"Ease-in-out Quadratic. Based on power of two.","cubic-bezier(0.25, 0.46, 0.45, 0.94)":"Ease-out Quadratic. Based on power of two.","cubic-bezier(0.895, 0.03, 0.685, 0.22)":"Ease-in Quartic. Based on power of four.","cubic-bezier(0.77, 0, 0.175, 1)":"Ease-in-out Quartic. Based on power of four.","cubic-bezier(0.165, 0.84, 0.44, 1)":"Ease-out Quartic. Based on power of four.","cubic-bezier(0.755, 0.05, 0.855, 0.06)":"Ease-in Quintic. Based on power of five.","cubic-bezier(0.86, 0, 0.07, 1)":"Ease-in-out Quintic. Based on power of five.","cubic-bezier(0.23, 1, 0.320, 1)":"Ease-out Quintic. Based on power of five."},Xt={"circle()":"Defines a circle.","ellipse()":"Defines an ellipse.","inset()":"Defines an inset rectangle.","polygon()":"Defines a polygon."},Zt={length:["em","rem","ex","px","cm","mm","in","pt","pc","ch","vw","vh","vmin","vmax"],angle:["deg","rad","grad","turn"],time:["ms","s"],frequency:["Hz","kHz"],resolution:["dpi","dpcm","dppx"],percentage:["%","fr"]},Qt=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","const","video","wbr"],en=["circle","clipPath","cursor","defs","desc","ellipse","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","foreignObject","g","hatch","hatchpath","image","line","linearGradient","marker","mask","mesh","meshpatch","meshrow","metadata","mpath","path","pattern","polygon","polyline","radialGradient","rect","set","solidcolor","stop","svg","switch","symbol","text","textPath","tspan","use","view"],tn=["@bottom-center","@bottom-left","@bottom-left-corner","@bottom-right","@bottom-right-corner","@left-bottom","@left-middle","@left-top","@right-bottom","@right-middle","@right-top","@top-center","@top-left","@top-left-corner","@top-right","@top-right-corner"];function nn(e){return Object.keys(e).map((function(t){return e[t]}))}function rn(e){return void 0!==e}var on=function(){function e(e){void 0===e&&(e=new X),this.keyframeRegex=/^@(\-(webkit|ms|moz|o)\-)?keyframes$/i,this.scanner=e,this.token={type:r.EOF,offset:-1,len:0,text:""},this.prevToken=void 0}return e.prototype.peekIdent=function(e){return r.Ident===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()},e.prototype.peekKeyword=function(e){return r.AtKeyword===this.token.type&&e.length===this.token.text.length&&e===this.token.text.toLowerCase()},e.prototype.peekDelim=function(e){return r.Delim===this.token.type&&e===this.token.text},e.prototype.peek=function(e){return e===this.token.type},e.prototype.peekRegExp=function(e,t){return e===this.token.type&&t.test(this.token.text)},e.prototype.hasWhitespace=function(){return!!this.prevToken&&this.prevToken.offset+this.prevToken.len!==this.token.offset},e.prototype.consumeToken=function(){this.prevToken=this.token,this.token=this.scanner.scan()},e.prototype.mark=function(){return{prev:this.prevToken,curr:this.token,pos:this.scanner.pos()}},e.prototype.restoreAtMark=function(e){this.prevToken=e.prev,this.token=e.curr,this.scanner.goBackTo(e.pos)},e.prototype.try=function(e){var t=this.mark();return e()||(this.restoreAtMark(t),null)},e.prototype.acceptOneKeyword=function(e){if(r.AtKeyword===this.token.type)for(var t=0,n=e;t<n.length;t++){var i=n[t];if(i.length===this.token.text.length&&i===this.token.text.toLowerCase())return this.consumeToken(),!0}return!1},e.prototype.accept=function(e){return e===this.token.type&&(this.consumeToken(),!0)},e.prototype.acceptIdent=function(e){return!!this.peekIdent(e)&&(this.consumeToken(),!0)},e.prototype.acceptKeyword=function(e){return!!this.peekKeyword(e)&&(this.consumeToken(),!0)},e.prototype.acceptDelim=function(e){return!!this.peekDelim(e)&&(this.consumeToken(),!0)},e.prototype.acceptRegexp=function(e){return!!e.test(this.token.text)&&(this.consumeToken(),!0)},e.prototype._parseRegexp=function(e){var t=this.createNode(ne.Identifier);do{}while(this.acceptRegexp(e));return this.finish(t)},e.prototype.acceptUnquotedString=function(){var e=this.scanner.pos();this.scanner.goBackTo(this.token.offset);var t=this.scanner.scanUnquotedString();return t?(this.token=t,this.consumeToken(),!0):(this.scanner.goBackTo(e),!1)},e.prototype.resync=function(e,t){for(;;){if(e&&-1!==e.indexOf(this.token.type))return this.consumeToken(),!0;if(t&&-1!==t.indexOf(this.token.type))return!0;if(this.token.type===r.EOF)return!1;this.token=this.scanner.scan()}},e.prototype.createNode=function(e){return new ce(this.token.offset,this.token.len,e)},e.prototype.create=function(e){return new e(this.token.offset,this.token.len)},e.prototype.finish=function(e,t,n,r){if(!(e instanceof de)&&(t&&this.markError(e,t,n,r),this.prevToken)){var i=this.prevToken.offset+this.prevToken.len;e.length=i>e.offset?i-e.offset:0}return e},e.prototype.markError=function(e,t,n,r){this.token!==this.lastErrorToken&&(e.addIssue(new wt(e,t,le.Error,void 0,this.token.offset,this.token.len)),this.lastErrorToken=this.token),(n||r)&&this.resync(n,r)},e.prototype.parseStylesheet=function(e){var t=e.version,n=e.getText();return this.internalParse(n,this._parseStylesheet,(function(r,i){if(e.version!==t)throw new Error("Underlying model has changed, AST is no longer valid");return n.substr(r,i)}))},e.prototype.internalParse=function(e,t,n){this.scanner.setSource(e),this.token=this.scanner.scan();var r=t.bind(this)();return r&&(r.textProvider=n||function(t,n){return e.substr(t,n)}),r},e.prototype._parseStylesheet=function(){for(var e=this.create(he);e.addChild(this._parseStylesheetStart()););var t=!1;do{var n=!1;do{n=!1;var i=this._parseStylesheetStatement();for(i&&(e.addChild(i),n=!0,t=!1,this.peek(r.EOF)||!this._needsSemicolonAfter(i)||this.accept(r.SemiColon)||this.markError(e,Et.SemiColonExpected));this.accept(r.SemiColon)||this.accept(r.CDO)||this.accept(r.CDC);)n=!0,t=!1}while(n);if(this.peek(r.EOF))break;t||(this.peek(r.AtKeyword)?this.markError(e,Et.UnknownAtRule):this.markError(e,Et.RuleOrSelectorExpected),t=!0),this.consumeToken()}while(!this.peek(r.EOF));return this.finish(e)},e.prototype._parseStylesheetStart=function(){return this._parseCharset()},e.prototype._parseStylesheetStatement=function(e){return void 0===e&&(e=!1),this.peek(r.AtKeyword)?this._parseStylesheetAtStatement(e):this._parseRuleset(e)},e.prototype._parseStylesheetAtStatement=function(e){return void 0===e&&(e=!1),this._parseImport()||this._parseMedia(e)||this._parsePage()||this._parseFontFace()||this._parseKeyframe()||this._parseSupports(e)||this._parseViewPort()||this._parseNamespace()||this._parseDocument()||this._parseUnknownAtRule()},e.prototype._tryParseRuleset=function(e){var t=this.mark();if(this._parseSelector(e)){for(;this.accept(r.Comma)&&this._parseSelector(e););if(this.accept(r.CurlyL))return this.restoreAtMark(t),this._parseRuleset(e)}return this.restoreAtMark(t),null},e.prototype._parseRuleset=function(e){void 0===e&&(e=!1);var t=this.create(fe),n=t.getSelectors();if(!n.addChild(this._parseSelector(e)))return null;for(;this.accept(r.Comma);)if(!n.addChild(this._parseSelector(e)))return this.finish(t,Et.SelectorExpected);return this._parseBody(t,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseRuleSetDeclarationAtStatement=function(){return this._parseAtApply()||this._parseUnknownAtRule()},e.prototype._parseRuleSetDeclaration=function(){return this.peek(r.AtKeyword)?this._parseRuleSetDeclarationAtStatement():this._tryParseCustomPropertyDeclaration()||this._parseDeclaration()},e.prototype._parseAtApply=function(){if(!this.peekKeyword("@apply"))return null;var e=this.create(ve);return this.consumeToken(),e.setIdentifier(this._parseIdent([re.Variable]))?this.finish(e):this.finish(e,Et.IdentifierExpected)},e.prototype._needsSemicolonAfter=function(e){switch(e.type){case ne.Keyframe:case ne.ViewPort:case ne.Media:case ne.Ruleset:case ne.Namespace:case ne.If:case ne.For:case ne.Each:case ne.While:case ne.MixinDeclaration:case ne.FunctionDeclaration:case ne.MixinContentDeclaration:return!1;case ne.ExtendsReference:case ne.MixinContentReference:case ne.ReturnStatement:case ne.MediaQuery:case ne.Debug:case ne.Import:case ne.AtApplyRule:case ne.CustomPropertyDeclaration:return!0;case ne.VariableDeclaration:return e.needsSemicolon;case ne.MixinReference:return!e.getContent();case ne.Declaration:return!e.getNestedProperties()}return!1},e.prototype._parseDeclarations=function(e){var t=this.create(me);if(!this.accept(r.CurlyL))return null;for(var n=e();t.addChild(n)&&!this.peek(r.CurlyR);){if(this._needsSemicolonAfter(n)&&!this.accept(r.SemiColon))return this.finish(t,Et.SemiColonExpected,[r.SemiColon,r.CurlyR]);for(n&&this.prevToken&&this.prevToken.type===r.SemiColon&&(n.semicolonPosition=this.prevToken.offset);this.accept(r.SemiColon););n=e()}return this.accept(r.CurlyR)?this.finish(t):this.finish(t,Et.RightCurlyExpected,[r.CurlyR,r.SemiColon])},e.prototype._parseBody=function(e,t){return e.setDeclarations(this._parseDeclarations(t))?this.finish(e):this.finish(e,Et.LeftCurlyExpected,[r.CurlyR,r.SemiColon])},e.prototype._parseSelector=function(e){var t=this.create(ge),n=!1;for(e&&(n=t.addChild(this._parseCombinator()));t.addChild(this._parseSimpleSelector());)n=!0,t.addChild(this._parseCombinator());return n?this.finish(t):null},e.prototype._parseDeclaration=function(e){var t=this.create(Se);if(!t.setProperty(this._parseProperty()))return null;if(!this.accept(r.Colon)){var n=e?function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),i=0;for(t=0;t<n;t++)for(var o=arguments[t],s=0,a=o.length;s<a;s++,i++)r[i]=o[s];return r}(e,[r.SemiColon]):[r.SemiColon];return this.finish(t,Et.ColonExpected,[r.Colon],n)}return this.prevToken&&(t.colonPosition=this.prevToken.offset),t.setValue(this._parseExpr())?(t.addChild(this._parsePrio()),this.peek(r.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)):this.finish(t,Et.PropertyValueExpected)},e.prototype._tryParseCustomPropertyDeclaration=function(){if(!this.peekRegExp(r.Ident,/^--/))return null;var e=this.create(we);if(!e.setProperty(this._parseProperty()))return null;if(!this.accept(r.Colon))return this.finish(e,Et.ColonExpected,[r.Colon]);this.prevToken&&(e.colonPosition=this.prevToken.offset);var t=this.mark();if(this.peek(r.CurlyL)){var n=this.create(xe),i=this._parseDeclarations(this._parseRuleSetDeclaration.bind(this));if(n.setDeclarations(i)&&!i.isErroneous(!0)&&(n.addChild(this._parsePrio()),this.peek(r.SemiColon)))return this.finish(n),e.setPropertySet(n),e.semicolonPosition=this.token.offset,this.finish(e);this.restoreAtMark(t)}var o=this._parseExpr();return o&&!o.isErroneous(!0)&&(this._parsePrio(),this.peek(r.SemiColon))?(e.setValue(o),e.semicolonPosition=this.token.offset,this.finish(e)):(this.restoreAtMark(t),e.addChild(this._parseCustomPropertyValue()),e.addChild(this._parsePrio()),rn(e.colonPosition)&&this.token.offset===e.colonPosition+1?this.finish(e,Et.PropertyValueExpected):this.finish(e))},e.prototype._parseCustomPropertyValue=function(){var e=this.create(ce),t=0,n=0,i=0;e:for(;;){switch(this.token.type){case r.SemiColon:case r.Exclamation:if(0===t&&0===n&&0===i)break e;break;case r.CurlyL:t++;break;case r.CurlyR:if(--t<0){if(0===n&&0===i)break e;return this.finish(e,Et.LeftCurlyExpected)}break;case r.ParenthesisL:n++;break;case r.ParenthesisR:if(--n<0)return this.finish(e,Et.LeftParenthesisExpected);break;case r.BracketL:i++;break;case r.BracketR:if(--i<0)return this.finish(e,Et.LeftSquareBracketExpected);break;case r.BadString:break e;case r.EOF:var o=Et.RightCurlyExpected;return i>0?o=Et.RightSquareBracketExpected:n>0&&(o=Et.RightParenthesisExpected),this.finish(e,o)}this.consumeToken()}return this.finish(e)},e.prototype._tryToParseDeclaration=function(){var e=this.mark();return this._parseProperty()&&this.accept(r.Colon)?(this.restoreAtMark(e),this._parseDeclaration()):(this.restoreAtMark(e),null)},e.prototype._parseProperty=function(){var e=this.create(ke),t=this.mark();return(this.acceptDelim("*")||this.acceptDelim("_"))&&this.hasWhitespace()?(this.restoreAtMark(t),null):e.setIdentifier(this._parsePropertyIdentifier())?this.finish(e):null},e.prototype._parsePropertyIdentifier=function(){return this._parseIdent()},e.prototype._parseCharset=function(){if(!this.peek(r.Charset))return null;var e=this.create(ce);return this.consumeToken(),this.accept(r.String)?this.accept(r.SemiColon)?this.finish(e):this.finish(e,Et.SemiColonExpected):this.finish(e,Et.IdentifierExpected)},e.prototype._parseImport=function(){if(!this.peekKeyword("@import"))return null;var e=this.create(We);return this.consumeToken(),e.addChild(this._parseURILiteral())||e.addChild(this._parseStringLiteral())?(this.peek(r.SemiColon)||this.peek(r.EOF)||e.setMedialist(this._parseMediaQueryList()),this.finish(e)):this.finish(e,Et.URIOrStringExpected)},e.prototype._parseNamespace=function(){if(!this.peekKeyword("@namespace"))return null;var e=this.create(Be);return this.consumeToken(),e.addChild(this._parseURILiteral())||(e.addChild(this._parseIdent()),e.addChild(this._parseURILiteral())||e.addChild(this._parseStringLiteral()))?this.accept(r.SemiColon)?this.finish(e):this.finish(e,Et.SemiColonExpected):this.finish(e,Et.URIExpected,[r.SemiColon])},e.prototype._parseFontFace=function(){if(!this.peekKeyword("@font-face"))return null;var e=this.create(_e);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseViewPort=function(){if(!this.peekKeyword("@-ms-viewport")&&!this.peekKeyword("@-o-viewport")&&!this.peekKeyword("@viewport"))return null;var e=this.create(Pe);return this.consumeToken(),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._parseKeyframe=function(){if(!this.peekRegExp(r.AtKeyword,this.keyframeRegex))return null;var e=this.create(Ae),t=this.create(ce);return this.consumeToken(),e.setKeyword(this.finish(t)),t.matches("@-ms-keyframes")&&this.markError(t,Et.UnknownKeyword),e.setIdentifier(this._parseKeyframeIdent())?this._parseBody(e,this._parseKeyframeSelector.bind(this)):this.finish(e,Et.IdentifierExpected,[r.CurlyR])},e.prototype._parseKeyframeIdent=function(){return this._parseIdent([re.Keyframe])},e.prototype._parseKeyframeSelector=function(){var e=this.create(Oe);if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return null;for(;this.accept(r.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return this.finish(e,Et.PercentageExpected);return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._tryParseKeyframeSelector=function(){var e=this.create(Oe),t=this.mark();if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return null;for(;this.accept(r.Comma);)if(!e.addChild(this._parseIdent())&&!this.accept(r.Percentage))return this.restoreAtMark(t),null;return this.peek(r.CurlyL)?this._parseBody(e,this._parseRuleSetDeclaration.bind(this)):(this.restoreAtMark(t),null)},e.prototype._parseSupports=function(e){if(void 0===e&&(e=!1),!this.peekKeyword("@supports"))return null;var t=this.create(qe);return this.consumeToken(),t.addChild(this._parseSupportsCondition()),this._parseBody(t,this._parseSupportsDeclaration.bind(this,e))},e.prototype._parseSupportsDeclaration=function(e){return void 0===e&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},e.prototype._parseSupportsCondition=function(){var e=this.create(Je);if(this.acceptIdent("not"))e.addChild(this._parseSupportsConditionInParens());else if(e.addChild(this._parseSupportsConditionInParens()),this.peekRegExp(r.Ident,/^(and|or)$/i))for(var t=this.token.text.toLowerCase();this.acceptIdent(t);)e.addChild(this._parseSupportsConditionInParens());return this.finish(e)},e.prototype._parseSupportsConditionInParens=function(){var e=this.create(Je);if(this.accept(r.ParenthesisL))return this.prevToken&&(e.lParent=this.prevToken.offset),e.addChild(this._tryToParseDeclaration())||this._parseSupportsCondition()?this.accept(r.ParenthesisR)?(this.prevToken&&(e.rParent=this.prevToken.offset),this.finish(e)):this.finish(e,Et.RightParenthesisExpected,[r.ParenthesisR],[]):this.finish(e,Et.ConditionExpected);if(this.peek(r.Ident)){var t=this.mark();if(this.consumeToken(),!this.hasWhitespace()&&this.accept(r.ParenthesisL)){for(var n=1;this.token.type!==r.EOF&&0!==n;)this.token.type===r.ParenthesisL?n++:this.token.type===r.ParenthesisR&&n--,this.consumeToken();return this.finish(e)}this.restoreAtMark(t)}return this.finish(e,Et.LeftParenthesisExpected,[],[r.ParenthesisL])},e.prototype._parseMediaDeclaration=function(e){return void 0===e&&(e=!1),e?this._tryParseRuleset(!0)||this._tryToParseDeclaration()||this._parseStylesheetStatement(!0):this._parseStylesheetStatement(!1)},e.prototype._parseMedia=function(e){if(void 0===e&&(e=!1),!this.peekKeyword("@media"))return null;var t=this.create($e);return this.consumeToken(),t.addChild(this._parseMediaQueryList())?this._parseBody(t,this._parseMediaDeclaration.bind(this,e)):this.finish(t,Et.MediaQueryExpected)},e.prototype._parseMediaQueryList=function(){var e=this.create(Ge);if(!e.addChild(this._parseMediaQuery([r.CurlyL])))return this.finish(e,Et.MediaQueryExpected);for(;this.accept(r.Comma);)if(!e.addChild(this._parseMediaQuery([r.CurlyL])))return this.finish(e,Et.MediaQueryExpected);return this.finish(e)},e.prototype._parseMediaQuery=function(e){var t=this.create(He),n=!0,i=!1;if(!this.peek(r.ParenthesisL)){if(this.acceptIdent("only")||this.acceptIdent("not"),!t.addChild(this._parseIdent()))return null;i=!0,n=this.acceptIdent("and")}for(;n;)if(t.addChild(this._parseMediaContentStart()))n=this.acceptIdent("and");else{if(!this.accept(r.ParenthesisL))return i?this.finish(t,Et.LeftParenthesisExpected,[],e):null;if(!t.addChild(this._parseMediaFeatureName()))return this.finish(t,Et.IdentifierExpected,[],e);if(this.accept(r.Colon)&&!t.addChild(this._parseExpr()))return this.finish(t,Et.TermExpected,[],e);if(!this.accept(r.ParenthesisR))return this.finish(t,Et.RightParenthesisExpected,[],e);n=this.acceptIdent("and")}return this.finish(t)},e.prototype._parseMediaContentStart=function(){return null},e.prototype._parseMediaFeatureName=function(){return this._parseIdent()},e.prototype._parseMedium=function(){var e=this.create(ce);return e.addChild(this._parseIdent())?this.finish(e):null},e.prototype._parsePageDeclaration=function(){return this._parsePageMarginBox()||this._parseRuleSetDeclaration()},e.prototype._parsePage=function(){if(!this.peekKeyword("@page"))return null;var e=this.create(Ye);if(this.consumeToken(),e.addChild(this._parsePageSelector()))for(;this.accept(r.Comma);)if(!e.addChild(this._parsePageSelector()))return this.finish(e,Et.IdentifierExpected);return this._parseBody(e,this._parsePageDeclaration.bind(this))},e.prototype._parsePageMarginBox=function(){if(!this.peek(r.AtKeyword))return null;var e=this.create(Xe);return this.acceptOneKeyword(tn)||this.markError(e,Et.UnknownAtRule,[],[r.CurlyL]),this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},e.prototype._parsePageSelector=function(){if(!this.peek(r.Ident)&&!this.peek(r.Colon))return null;var e=this.create(ce);return e.addChild(this._parseIdent()),this.accept(r.Colon)&&!e.addChild(this._parseIdent())?this.finish(e,Et.IdentifierExpected):this.finish(e)},e.prototype._parseDocument=function(){if(!this.peekKeyword("@-moz-document"))return null;var e=this.create(Ke);return this.consumeToken(),this.resync([],[r.CurlyL]),this._parseBody(e,this._parseStylesheetStatement.bind(this))},e.prototype._parseUnknownAtRule=function(){if(!this.peek(r.AtKeyword))return null;var e=this.create(ft);e.addChild(this._parseUnknownAtRuleName());var t=0,n=0,i=0,o=0;e:for(;;){switch(this.token.type){case r.SemiColon:if(0===n&&0===i&&0===o)break e;break;case r.EOF:return n>0?this.finish(e,Et.RightCurlyExpected):o>0?this.finish(e,Et.RightSquareBracketExpected):i>0?this.finish(e,Et.RightParenthesisExpected):this.finish(e);case r.CurlyL:t++,n++;break;case r.CurlyR:if(n--,t>0&&0===n){if(this.consumeToken(),o>0)return this.finish(e,Et.RightSquareBracketExpected);if(i>0)return this.finish(e,Et.RightParenthesisExpected);break e}if(n<0){if(0===i&&0===o)break e;return this.finish(e,Et.LeftCurlyExpected)}break;case r.ParenthesisL:i++;break;case r.ParenthesisR:if(--i<0)return this.finish(e,Et.LeftParenthesisExpected);break;case r.BracketL:o++;break;case r.BracketR:if(--o<0)return this.finish(e,Et.LeftSquareBracketExpected)}this.consumeToken()}return e},e.prototype._parseUnknownAtRuleName=function(){var e=this.create(ce);return this.accept(r.AtKeyword)?this.finish(e):e},e.prototype._parseOperator=function(){if(this.peekDelim("/")||this.peekDelim("*")||this.peekDelim("+")||this.peekDelim("-")||this.peek(r.Dashmatch)||this.peek(r.Includes)||this.peek(r.SubstringOperator)||this.peek(r.PrefixOperator)||this.peek(r.SuffixOperator)||this.peekDelim("=")){var e=this.createNode(ne.Operator);return this.consumeToken(),this.finish(e)}return null},e.prototype._parseUnaryOperator=function(){if(!this.peekDelim("+")&&!this.peekDelim("-"))return null;var e=this.create(ce);return this.consumeToken(),this.finish(e)},e.prototype._parseCombinator=function(){if(this.peekDelim(">")){var e=this.create(ce);this.consumeToken();var t=this.mark();if(!this.hasWhitespace()&&this.acceptDelim(">")){if(!this.hasWhitespace()&&this.acceptDelim(">"))return e.type=ne.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return e.type=ne.SelectorCombinatorParent,this.finish(e)}if(this.peekDelim("+"))return e=this.create(ce),this.consumeToken(),e.type=ne.SelectorCombinatorSibling,this.finish(e);if(this.peekDelim("~"))return e=this.create(ce),this.consumeToken(),e.type=ne.SelectorCombinatorAllSiblings,this.finish(e);if(this.peekDelim("/")){if(e=this.create(ce),this.consumeToken(),t=this.mark(),!this.hasWhitespace()&&this.acceptIdent("deep")&&!this.hasWhitespace()&&this.acceptDelim("/"))return e.type=ne.SelectorCombinatorShadowPiercingDescendant,this.finish(e);this.restoreAtMark(t)}return null},e.prototype._parseSimpleSelector=function(){var e=this.create(be),t=0;for(e.addChild(this._parseElementName())&&t++;(0===t||!this.hasWhitespace())&&e.addChild(this._parseSimpleSelectorBody());)t++;return t>0?this.finish(e):null},e.prototype._parseSimpleSelectorBody=function(){return this._parsePseudo()||this._parseHash()||this._parseClass()||this._parseAttrib()},e.prototype._parseSelectorIdent=function(){return this._parseIdent()},e.prototype._parseHash=function(){if(!this.peek(r.Hash)&&!this.peekDelim("#"))return null;var e=this.createNode(ne.IdentifierSelector);if(this.acceptDelim("#")){if(this.hasWhitespace()||!e.addChild(this._parseSelectorIdent()))return this.finish(e,Et.IdentifierExpected)}else this.consumeToken();return this.finish(e)},e.prototype._parseClass=function(){if(!this.peekDelim("."))return null;var e=this.createNode(ne.ClassSelector);return this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseSelectorIdent())?this.finish(e,Et.IdentifierExpected):this.finish(e)},e.prototype._parseElementName=function(){var e=this.mark(),t=this.createNode(ne.ElementNameSelector);return t.addChild(this._parseNamespacePrefix()),t.addChild(this._parseSelectorIdent())||this.acceptDelim("*")?this.finish(t):(this.restoreAtMark(e),null)},e.prototype._parseNamespacePrefix=function(){var e=this.mark(),t=this.createNode(ne.NamespacePrefix);return!t.addChild(this._parseIdent())&&this.acceptDelim("*"),this.acceptDelim("|")?this.finish(t):(this.restoreAtMark(e),null)},e.prototype._parseAttrib=function(){if(!this.peek(r.BracketL))return null;var e=this.create(tt);return this.consumeToken(),e.setNamespacePrefix(this._parseNamespacePrefix()),e.setIdentifier(this._parseIdent())?(e.setOperator(this._parseOperator())&&(e.setValue(this._parseBinaryExpr()),this.acceptIdent("i")),this.accept(r.BracketR)?this.finish(e):this.finish(e,Et.RightSquareBracketExpected)):this.finish(e,Et.IdentifierExpected)},e.prototype._parsePseudo=function(){var e=this,t=this._tryParsePseudoIdentifier();return t?this.hasWhitespace()||!this.accept(r.ParenthesisL)||(t.addChild(this.try((function(){var t=e.create(ce);if(!t.addChild(e._parseSelector(!1)))return null;for(;e.accept(r.Comma)&&t.addChild(e._parseSelector(!1)););return e.peek(r.ParenthesisR)?e.finish(t):null}))||this._parseBinaryExpr()),this.accept(r.ParenthesisR))?this.finish(t):this.finish(t,Et.RightParenthesisExpected):null},e.prototype._tryParsePseudoIdentifier=function(){if(!this.peek(r.Colon))return null;var e=this.mark(),t=this.createNode(ne.PseudoSelector);return this.consumeToken(),this.hasWhitespace()?(this.restoreAtMark(e),null):(this.accept(r.Colon)&&this.hasWhitespace()&&this.markError(t,Et.IdentifierExpected),t.addChild(this._parseIdent())||this.markError(t,Et.IdentifierExpected),t)},e.prototype._tryParsePrio=function(){var e=this.mark();return this._parsePrio()||(this.restoreAtMark(e),null)},e.prototype._parsePrio=function(){if(!this.peek(r.Exclamation))return null;var e=this.createNode(ne.Prio);return this.accept(r.Exclamation)&&this.acceptIdent("important")?this.finish(e):null},e.prototype._parseExpr=function(e){void 0===e&&(e=!1);var t=this.create(Ze);if(!t.addChild(this._parseBinaryExpr()))return null;for(;;){if(this.peek(r.Comma)){if(e)return this.finish(t);this.consumeToken()}if(!t.addChild(this._parseBinaryExpr()))break}return this.finish(t)},e.prototype._parseNamedLine=function(){if(!this.peek(r.BracketL))return null;var e=this.createNode(ne.GridLine);for(this.consumeToken();e.addChild(this._parseIdent()););return this.accept(r.BracketR)?this.finish(e):this.finish(e,Et.RightSquareBracketExpected)},e.prototype._parseBinaryExpr=function(e,t){var n=this.create(Qe);if(!n.setLeft(e||this._parseTerm()))return null;if(!n.setOperator(t||this._parseOperator()))return this.finish(n);if(!n.setRight(this._parseTerm()))return this.finish(n,Et.TermExpected);n=this.finish(n);var r=this._parseOperator();return r&&(n=this._parseBinaryExpr(n,r)),this.finish(n)},e.prototype._parseTerm=function(){var e=this.create(et);return e.setOperator(this._parseUnaryOperator()),e.setExpression(this._parseTermExpression())?this.finish(e):null},e.prototype._parseTermExpression=function(){return this._parseURILiteral()||this._parseFunction()||this._parseIdent()||this._parseStringLiteral()||this._parseNumeric()||this._parseHexColor()||this._parseOperation()||this._parseNamedLine()},e.prototype._parseOperation=function(){if(!this.peek(r.ParenthesisL))return null;var e=this.create(ce);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,Et.RightParenthesisExpected)},e.prototype._parseNumeric=function(){if(this.peek(r.Num)||this.peek(r.Percentage)||this.peek(r.Resolution)||this.peek(r.Length)||this.peek(r.EMS)||this.peek(r.EXS)||this.peek(r.Angle)||this.peek(r.Time)||this.peek(r.Dimension)||this.peek(r.Freq)){var e=this.create(st);return this.consumeToken(),this.finish(e)}return null},e.prototype._parseStringLiteral=function(){if(!this.peek(r.String)&&!this.peek(r.BadString))return null;var e=this.createNode(ne.StringLiteral);return this.consumeToken(),this.finish(e)},e.prototype._parseURILiteral=function(){if(!this.peekRegExp(r.Ident,/^url(-prefix)?$/i))return null;var e=this.mark(),t=this.createNode(ne.URILiteral);return this.accept(r.Ident),this.hasWhitespace()||!this.peek(r.ParenthesisL)?(this.restoreAtMark(e),null):(this.scanner.inURL=!0,this.consumeToken(),t.addChild(this._parseURLArgument()),this.scanner.inURL=!1,this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,Et.RightParenthesisExpected))},e.prototype._parseURLArgument=function(){var e=this.create(ce);return this.accept(r.String)||this.accept(r.BadString)||this.acceptUnquotedString()?this.finish(e):null},e.prototype._parseIdent=function(e){if(!this.peek(r.Ident))return null;var t=this.create(pe);return e&&(t.referenceTypes=e),t.isCustomProperty=this.peekRegExp(r.Ident,/^--/),this.consumeToken(),this.finish(t)},e.prototype._parseFunction=function(){var e=this.mark(),t=this.create(Ce);if(!t.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;if(t.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)t.getArguments().addChild(this._parseFunctionArgument())||this.markError(t,Et.ExpressionExpected);return this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,Et.RightParenthesisExpected)},e.prototype._parseFunctionIdentifier=function(){if(!this.peek(r.Ident))return null;var e=this.create(pe);if(e.referenceTypes=[re.Function],this.acceptIdent("progid")){if(this.accept(r.Colon))for(;this.accept(r.Ident)&&this.acceptDelim("."););return this.finish(e)}return this.consumeToken(),this.finish(e)},e.prototype._parseFunctionArgument=function(){var e=this.create(ze);return e.setValue(this._parseExpr(!0))?this.finish(e):null},e.prototype._parseHexColor=function(){if(this.peekRegExp(r.Hash,/^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/g)){var e=this.create(nt);return this.consumeToken(),this.finish(e)}return null},e}();function sn(e,t){return-1!==e.indexOf(t)}function an(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=[],r=0,i=e;r<i.length;r++)for(var o=i[r],s=0,a=o;s<a.length;s++){var l=a[s];sn(n,l)||n.push(l)}return n}var ln,cn,dn,pn,hn,mn,un,fn,gn,bn,vn,yn,wn,xn,Sn,kn,Cn,Fn,zn,En,Dn,Tn,Rn=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),In=function(){function e(e,t){this.offset=e,this.length=t,this.symbols=[],this.parent=null,this.children=[]}return e.prototype.addChild=function(e){this.children.push(e),e.setParent(this)},e.prototype.setParent=function(e){this.parent=e},e.prototype.findScope=function(e,t){return void 0===t&&(t=0),this.offset<=e&&this.offset+this.length>e+t||this.offset===e&&this.length===t?this.findInScope(e,t):null},e.prototype.findInScope=function(e,t){void 0===t&&(t=0);var n=e+t,r=function(e,t){var r=0,i=e.length;if(0===i)return 0;for(;r<i;){var o=Math.floor((r+i)/2);e[o].offset>n?i=o:r=o+1}return r}(this.children);if(0===r)return this;var i=this.children[r-1];return i.offset<=e&&i.offset+i.length>=e+t?i.findInScope(e,t):this},e.prototype.addSymbol=function(e){this.symbols.push(e)},e.prototype.getSymbol=function(e,t){for(var n=0;n<this.symbols.length;n++){var r=this.symbols[n];if(r.name===e&&r.type===t)return r}return null},e.prototype.getSymbols=function(){return this.symbols},e}(),Mn=function(e){function t(){return e.call(this,0,Number.MAX_VALUE)||this}return Rn(t,e),t}(In),Pn=function(e,t,n,r){this.name=e,this.value=t,this.node=n,this.type=r},_n=function(){function e(e){this.scope=e}return e.prototype.addSymbol=function(e,t,n,r){if(-1!==e.offset){var i=this.scope.findScope(e.offset,e.length);i&&i.addSymbol(new Pn(t,n,e,r))}},e.prototype.addScope=function(e){if(-1!==e.offset){var t=this.scope.findScope(e.offset,e.length);if(t&&(t.offset!==e.offset||t.length!==e.length)){var n=new In(e.offset,e.length);return t.addChild(n),n}return t}return null},e.prototype.addSymbolToChildScope=function(e,t,n,r,i){if(e&&-1!==e.offset){var o=this.addScope(e);o&&o.addSymbol(new Pn(n,r,t,i))}},e.prototype.visitNode=function(e){switch(e.type){case ne.Keyframe:return this.addSymbol(e,e.getName(),void 0,re.Keyframe),!0;case ne.CustomPropertyDeclaration:return this.visitCustomPropertyDeclarationNode(e);case ne.VariableDeclaration:return this.visitVariableDeclarationNode(e);case ne.Ruleset:return this.visitRuleSet(e);case ne.MixinDeclaration:return this.addSymbol(e,e.getName(),void 0,re.Mixin),!0;case ne.FunctionDeclaration:return this.addSymbol(e,e.getName(),void 0,re.Function),!0;case ne.FunctionParameter:return this.visitFunctionParameterNode(e);case ne.Declarations:return this.addScope(e),!0;case ne.For:var t=e,n=t.getDeclarations();return n&&t.variable&&this.addSymbolToChildScope(n,t.variable,t.variable.getName(),void 0,re.Variable),!0;case ne.Each:var r=e,i=r.getDeclarations();if(i)for(var o=0,s=r.getVariables().getChildren();o<s.length;o++){var a=s[o];this.addSymbolToChildScope(i,a,a.getName(),void 0,re.Variable)}return!0}return!0},e.prototype.visitRuleSet=function(e){var t=this.scope.findScope(e.offset,e.length);if(t)for(var n=0,r=e.getSelectors().getChildren();n<r.length;n++){var i=r[n];i instanceof ge&&1===i.getChildren().length&&t.addSymbol(new Pn(i.getChild(0).getText(),void 0,i,re.Rule))}return!0},e.prototype.visitVariableDeclarationNode=function(e){var t=e.getValue()?e.getValue().getText():void 0;return this.addSymbol(e,e.getName(),t,re.Variable),!0},e.prototype.visitFunctionParameterNode=function(e){var t=e.getParent().getDeclarations();if(t){var n=e.getDefaultValue(),r=n?n.getText():void 0;this.addSymbolToChildScope(t,e,e.getName(),r,re.Variable)}return!0},e.prototype.visitCustomPropertyDeclarationNode=function(e){var t=e.getValue()?e.getValue().getText():"";return this.addCSSVariable(e.getProperty(),e.getProperty().getName(),t,re.Variable),!0},e.prototype.addCSSVariable=function(e,t,n,r){-1!==e.offset&&this.scope.addSymbol(new Pn(t,n,e,r))},e}(),Nn=function(){function e(e){this.global=new Mn,e.acceptVisitor(new _n(this.global))}return e.prototype.findSymbolsAtOffset=function(e,t){for(var n=this.global.findScope(e,0),r=[],i={};n;){for(var o=n.getSymbols(),s=0;s<o.length;s++){var a=o[s];a.type!==t||i[a.name]||(r.push(a),i[a.name]=!0)}n=n.parent}return r},e.prototype.internalFindSymbol=function(e,t){var n=e;if(e.parent instanceof Fe&&e.parent.getParent()instanceof ue&&(n=e.parent.getParent().getDeclarations()),e.parent instanceof ze&&e.parent.getParent()instanceof Ce){var r=e.parent.getParent().getIdentifier();if(r){var i=this.internalFindSymbol(r,[re.Function]);i&&(n=i.node.getDeclarations())}}if(!n)return null;for(var o=e.getText(),s=this.global.findScope(n.offset,n.length);s;){for(var a=0;a<t.length;a++){var l=t[a],c=s.getSymbol(o,l);if(c)return c}s=s.parent}return null},e.prototype.evaluateReferenceTypes=function(e){if(e instanceof pe){var t=e.referenceTypes;if(t)return t;if(e.isCustomProperty)return[re.Variable];var n=function(e){var t=e.findParent(ne.Declaration),n=t&&t.getValue();return n&&n.encloses(e)?t:null}(e);if(n){var r=n.getNonPrefixedPropertyName();if(("animation"===r||"animation-name"===r)&&n.getValue()&&n.getValue().offset===e.offset)return[re.Keyframe]}}else if(e instanceof ct)return[re.Variable];return e.findAParent(ne.Selector,ne.ExtendsReference)?[re.Rule]:null},e.prototype.findSymbolFromNode=function(e){if(!e)return null;for(;e.type===ne.Interpolation;)e=e.getParent();var t=this.evaluateReferenceTypes(e);return t?this.internalFindSymbol(e,t):null},e.prototype.matchesSymbol=function(e,t){if(!e)return!1;for(;e.type===ne.Interpolation;)e=e.getParent();if(!e.matches(t.name))return!1;var n=this.evaluateReferenceTypes(e);return!(!n||-1===n.indexOf(t.type))&&this.internalFindSymbol(e,n)===t},e.prototype.findSymbol=function(e,t,n){for(var r=this.global.findScope(n);r;){var i=r.getSymbol(e,t);if(i)return i;r=r.parent}return null},e}();!function(e){e.create=function(e,t){return{line:e,character:t}},e.is=function(e){var t=e;return mr.objectLiteral(t)&&mr.number(t.line)&&mr.number(t.character)}}(ln||(ln={})),(Tn=cn||(cn={})).create=function(e,t,n,r){if(mr.number(e)&&mr.number(t)&&mr.number(n)&&mr.number(r))return{start:ln.create(e,t),end:ln.create(n,r)};if(ln.is(e)&&ln.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")},Tn.is=function(e){var t=e;return mr.objectLiteral(t)&&ln.is(t.start)&&ln.is(t.end)},function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){var t=e;return mr.defined(t)&&cn.is(t.range)&&(mr.string(t.uri)||mr.undefined(t.uri))}}(dn||(dn={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){var t=e;return mr.defined(t)&&cn.is(t.targetRange)&&mr.string(t.targetUri)&&(cn.is(t.targetSelectionRange)||mr.undefined(t.targetSelectionRange))&&(cn.is(t.originSelectionRange)||mr.undefined(t.originSelectionRange))}}(pn||(pn={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){var t=e;return mr.number(t.red)&&mr.number(t.green)&&mr.number(t.blue)&&mr.number(t.alpha)}}(hn||(hn={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){var t=e;return cn.is(t.range)&&hn.is(t.color)}}(mn||(mn={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){var t=e;return mr.string(t.label)&&(mr.undefined(t.textEdit)||kn.is(t))&&(mr.undefined(t.additionalTextEdits)||mr.typedArray(t.additionalTextEdits,kn.is))}}(un||(un={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(fn||(fn={})),function(e){e.create=function(e,t,n,r,i){var o={startLine:e,endLine:t};return mr.defined(n)&&(o.startCharacter=n),mr.defined(r)&&(o.endCharacter=r),mr.defined(i)&&(o.kind=i),o},e.is=function(e){var t=e;return mr.number(t.startLine)&&mr.number(t.startLine)&&(mr.undefined(t.startCharacter)||mr.number(t.startCharacter))&&(mr.undefined(t.endCharacter)||mr.number(t.endCharacter))&&(mr.undefined(t.kind)||mr.string(t.kind))}}(gn||(gn={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){var t=e;return mr.defined(t)&&dn.is(t.location)&&mr.string(t.message)}}(bn||(bn={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(vn||(vn={})),function(e){e.Unnecessary=1,e.Deprecated=2}(yn||(yn={})),function(e){e.is=function(e){var t=e;return null!=t&&(mr.number(t.value)||mr.string(t.value))&&mr.string(t.target)}}(wn||(wn={})),function(e){e.create=function(e,t,n,r,i,o){var s={range:e,message:t};return mr.defined(n)&&(s.severity=n),mr.defined(r)&&(s.code=r),mr.defined(i)&&(s.source=i),mr.defined(o)&&(s.relatedInformation=o),s},e.is=function(e){var t=e;return mr.defined(t)&&cn.is(t.range)&&mr.string(t.message)&&(mr.number(t.severity)||mr.undefined(t.severity))&&(mr.number(t.code)||mr.string(t.code)||mr.undefined(t.code))&&(mr.string(t.source)||mr.undefined(t.source))&&(mr.undefined(t.relatedInformation)||mr.typedArray(t.relatedInformation,bn.is))}}(xn||(xn={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={title:e,command:t};return mr.defined(n)&&n.length>0&&(i.arguments=n),i},e.is=function(e){var t=e;return mr.defined(t)&&mr.string(t.title)&&mr.string(t.command)}}(Sn||(Sn={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){var t=e;return mr.objectLiteral(t)&&mr.string(t.newText)&&cn.is(t.range)}}(kn||(kn={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return mr.defined(t)&&On.is(t.textDocument)&&Array.isArray(t.edits)}}(Cn||(Cn={})),function(e){e.create=function(e,t){var n={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(n.options=t),n},e.is=function(e){var t=e;return t&&"create"===t.kind&&mr.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||mr.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||mr.boolean(t.options.ignoreIfExists)))}}(Fn||(Fn={})),function(e){e.create=function(e,t,n){var r={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(r.options=n),r},e.is=function(e){var t=e;return t&&"rename"===t.kind&&mr.string(t.oldUri)&&mr.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||mr.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||mr.boolean(t.options.ignoreIfExists)))}}(zn||(zn={})),function(e){e.create=function(e,t){var n={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(n.options=t),n},e.is=function(e){var t=e;return t&&"delete"===t.kind&&mr.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||mr.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||mr.boolean(t.options.ignoreIfNotExists)))}}(En||(En={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return mr.string(e.kind)?Fn.is(e)||zn.is(e)||En.is(e):Cn.is(e)})))}}(Dn||(Dn={}));var An,On,Wn,Ln,Un,jn,Vn,Bn,$n,qn,Kn,Gn,Hn,Jn,Yn,Xn,Zn,Qn,er,tr,nr,rr,ir,or,sr,ar,lr,cr,dr,pr,hr=function(){function e(e){this.edits=e}return e.prototype.insert=function(e,t){this.edits.push(kn.insert(e,t))},e.prototype.replace=function(e,t){this.edits.push(kn.replace(e,t))},e.prototype.delete=function(e){this.edits.push(kn.del(e))},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),e&&(this._workspaceEdit=e,e.documentChanges?e.documentChanges.forEach((function(e){if(Cn.is(e)){var n=new hr(e.edits);t._textEditChanges[e.textDocument.uri]=n}})):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new hr(e.changes[n]);t._textEditChanges[n]=r})))}Object.defineProperty(e.prototype,"edit",{get:function(){return void 0===this._workspaceEdit?{documentChanges:[]}:this._workspaceEdit},enumerable:!0,configurable:!0}),e.prototype.getTextEditChange=function(e){if(On.is(e)){if(this._workspaceEdit||(this._workspaceEdit={documentChanges:[]}),!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t=e;if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new hr(i),this._textEditChanges[t.uri]=r}return r}if(this._workspaceEdit||(this._workspaceEdit={changes:Object.create(null)}),!this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new hr(i),this._textEditChanges[e]=r}return r},e.prototype.createFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(Fn.create(e,t))},e.prototype.renameFile=function(e,t,n){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(zn.create(e,t,n))},e.prototype.deleteFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(En.create(e,t))},e.prototype.checkDocumentChanges=function(){if(!this._workspaceEdit||!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.")}}(),function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return mr.defined(t)&&mr.string(t.uri)}}(An||(An={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return mr.defined(t)&&mr.string(t.uri)&&(null===t.version||mr.number(t.version))}}(On||(On={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){var t=e;return mr.defined(t)&&mr.string(t.uri)&&mr.string(t.languageId)&&mr.number(t.version)&&mr.string(t.text)}}(Wn||(Wn={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(Ln||(Ln={})),function(e){e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(Ln||(Ln={})),function(e){e.is=function(e){var t=e;return mr.objectLiteral(e)&&Ln.is(t.kind)&&mr.string(t.value)}}(Un||(Un={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(jn||(jn={})),function(e){e.PlainText=1,e.Snippet=2}(Vn||(Vn={})),function(e){e.Deprecated=1}(Bn||(Bn={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){var t=e;return t&&mr.string(t.newText)&&cn.is(t.insert)&&cn.is(t.replace)}}($n||($n={})),function(e){e.create=function(e){return{label:e}}}(qn||(qn={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(Kn||(Kn={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return mr.string(t)||mr.objectLiteral(t)&&mr.string(t.language)&&mr.string(t.value)}}(Gn||(Gn={})),function(e){e.is=function(e){var t=e;return!!t&&mr.objectLiteral(t)&&(Un.is(t.contents)||Gn.is(t.contents)||mr.typedArray(t.contents,Gn.is))&&(void 0===e.range||cn.is(e.range))}}(Hn||(Hn={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(Jn||(Jn={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={label:e};return mr.defined(t)&&(i.documentation=t),mr.defined(n)?i.parameters=n:i.parameters=[],i}}(Yn||(Yn={})),function(e){e.Text=1,e.Read=2,e.Write=3}(Xn||(Xn={})),function(e){e.create=function(e,t){var n={range:e};return mr.number(t)&&(n.kind=t),n}}(Zn||(Zn={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(Qn||(Qn={})),function(e){e.Deprecated=1}(er||(er={})),function(e){e.create=function(e,t,n,r,i){var o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o}}(tr||(tr={})),function(e){e.create=function(e,t,n,r,i,o){var s={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(s.children=o),s},e.is=function(e){var t=e;return t&&mr.string(t.name)&&mr.number(t.kind)&&cn.is(t.range)&&cn.is(t.selectionRange)&&(void 0===t.detail||mr.string(t.detail))&&(void 0===t.deprecated||mr.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(nr||(nr={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(rr||(rr={})),function(e){e.create=function(e,t){var n={diagnostics:e};return null!=t&&(n.only=t),n},e.is=function(e){var t=e;return mr.defined(t)&&mr.typedArray(t.diagnostics,xn.is)&&(void 0===t.only||mr.typedArray(t.only,mr.string))}}(ir||(ir={})),function(e){e.create=function(e,t,n){var r={title:e};return Sn.is(t)?r.command=t:r.edit=t,void 0!==n&&(r.kind=n),r},e.is=function(e){var t=e;return t&&mr.string(t.title)&&(void 0===t.diagnostics||mr.typedArray(t.diagnostics,xn.is))&&(void 0===t.kind||mr.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||Sn.is(t.command))&&(void 0===t.isPreferred||mr.boolean(t.isPreferred))&&(void 0===t.edit||Dn.is(t.edit))}}(or||(or={})),function(e){e.create=function(e,t){var n={range:e};return mr.defined(t)&&(n.data=t),n},e.is=function(e){var t=e;return mr.defined(t)&&cn.is(t.range)&&(mr.undefined(t.command)||Sn.is(t.command))}}(sr||(sr={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){var t=e;return mr.defined(t)&&mr.number(t.tabSize)&&mr.boolean(t.insertSpaces)}}(ar||(ar={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){var t=e;return mr.defined(t)&&cn.is(t.range)&&(mr.undefined(t.target)||mr.string(t.target))}}(lr||(lr={})),(dr=cr||(cr={})).create=function(e,t){return{range:e,parent:t}},dr.is=function(e){var t=e;return void 0!==t&&cn.is(t.range)&&(void 0===t.parent||dr.is(t.parent))},function(e){function t(e,n){if(e.length<=1)return e;var r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);for(var s=0,a=0,l=0;s<i.length&&a<o.length;){var c=n(i[s],o[a]);e[l++]=c<=0?i[s++]:o[a++]}for(;s<i.length;)e[l++]=i[s++];for(;a<o.length;)e[l++]=o[a++];return e}e.create=function(e,t,n,r){return new ur(e,t,n,r)},e.is=function(e){var t=e;return!!(mr.defined(t)&&mr.string(t.uri)&&(mr.undefined(t.languageId)||mr.string(t.languageId))&&mr.number(t.lineCount)&&mr.func(t.getText)&&mr.func(t.positionAt)&&mr.func(t.offsetAt))},e.applyEdits=function(e,n){for(var r=e.getText(),i=t(n,(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),o=r.length,s=i.length-1;s>=0;s--){var a=i[s],l=e.offsetAt(a.range.start),c=e.offsetAt(a.range.end);if(!(c<=o))throw new Error("Overlapping edit");r=r.substring(0,l)+a.newText+r.substring(c,r.length),o=l}return r}}(pr||(pr={}));var mr,ur=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r<t.length;r++){n&&(e.push(r),n=!1);var i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return ln.create(0,e);for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return ln.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(mr||(mr={}));var fr,gr,br,vr=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(t,n){for(var r=0,i=t;r<i.length;r++){var o=i[r];if(e.isIncremental(o)){var s=xr(o.range),a=this.offsetAt(s.start),l=this.offsetAt(s.end);this._content=this._content.substring(0,a)+o.text+this._content.substring(l,this._content.length);var c=Math.max(s.start.line,0),d=Math.max(s.end.line,0),p=this._lineOffsets,h=wr(o.text,!1,a);if(d-c===h.length)for(var m=0,u=h.length;m<u;m++)p[m+c+1]=h[m];else h.length<1e4?p.splice.apply(p,[c+1,d-c].concat(h)):this._lineOffsets=p=p.slice(0,c+1).concat(h,p.slice(d+1));var f=o.text.length-(l-a);if(0!==f)for(m=c+1+h.length,u=p.length;m<u;m++)p[m]=p[m]+f}else{if(!e.isFull(o))throw new Error("Unknown change event received");this._content=o.text,this._lineOffsets=void 0}}this._version=n},e.prototype.getLineOffsets=function(){return void 0===this._lineOffsets&&(this._lineOffsets=wr(this._content,!0)),this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return{line:o,character:e-t[o]}},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e.isIncremental=function(e){var t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)},e.isFull=function(e){var t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength},e}();function yr(e,t){if(e.length<=1)return e;var n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);yr(r,t),yr(i,t);for(var o=0,s=0,a=0;o<r.length&&s<i.length;){var l=t(r[o],i[s]);e[a++]=l<=0?r[o++]:i[s++]}for(;o<r.length;)e[a++]=r[o++];for(;s<i.length;)e[a++]=i[s++];return e}function wr(e,t,n){void 0===n&&(n=0);for(var r=t?[n]:[],i=0;i<e.length;i++){var o=e.charCodeAt(i);13!==o&&10!==o||(13===o&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function xr(e){var t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function Sr(e){var t=xr(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){e.create=function(e,t,n,r){return new vr(e,t,n,r)},e.update=function(e,t,n){if(e instanceof vr)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){for(var n=e.getText(),r=0,i=[],o=0,s=yr(t.map(Sr),(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}));o<s.length;o++){var a=s[o],l=e.offsetAt(a.range.start);if(l<r)throw new Error("Overlapping edit");l>r&&i.push(n.substring(r,l)),a.newText.length&&i.push(a.newText),r=e.offsetAt(a.range.end)}return i.push(n.substr(r)),i.join("")}}(fr||(fr={})),function(e){e.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[Ln.Markdown,Ln.PlainText]}},hover:{contentFormat:[Ln.Markdown,Ln.PlainText]}}}}(gr||(gr={})),function(e){e[e.Unknown=0]="Unknown",e[e.File=1]="File",e[e.Directory=2]="Directory",e[e.SymbolicLink=64]="SymbolicLink"}(br||(br={}));var kr,Cr,Fr=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();if("object"==typeof process)Cr="win32"===process.platform;else if("object"==typeof navigator){var zr=navigator.userAgent;Cr=zr.indexOf("Windows")>=0}var Er=/^\w[\w\d+.-]*$/,Dr=/^\//,Tr=/^\/\//,Rr="",Ir="/",Mr=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,Pr=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"==typeof e?(this.scheme=e.scheme||Rr,this.authority=e.authority||Rr,this.path=e.path||Rr,this.query=e.query||Rr,this.fragment=e.fragment||Rr):(this.scheme=function(e,t){return e||t?e:"file"}(e,o),this.authority=t||Rr,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==Ir&&(t=Ir+t):t=Ir}return t}(this.scheme,n||Rr),this.query=r||Rr,this.fragment=i||Rr,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!Er.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!Dr.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(Tr.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return Lr(this,!1)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=Rr),void 0===n?n=this.authority:null===n&&(n=Rr),void 0===r?r=this.path:null===r&&(r=Rr),void 0===i?i=this.query:null===i&&(i=Rr),void 0===o?o=this.fragment:null===o&&(o=Rr),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new Nr(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=Mr.exec(e);return n?new Nr(n[2]||Rr,Br(n[4]||Rr),Br(n[5]||Rr),Br(n[7]||Rr),Br(n[9]||Rr),t):new Nr(Rr,Rr,Rr,Rr,Rr)},e.file=function(e){var t=Rr;if(Cr&&(e=e.replace(/\\/g,Ir)),e[0]===Ir&&e[1]===Ir){var n=e.indexOf(Ir,2);-1===n?(t=e.substring(2),e=Ir):(t=e.substring(2,n),e=e.substring(n)||Ir)}return new Nr("file",t,e,Rr,Rr)},e.from=function(e){return new Nr(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),Ur(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new Nr(t);return n._formatted=t.external,n._fsPath=t._sep===_r?t.fsPath:null,n}return t},e}(),_r=Cr?1:void 0,Nr=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return Fr(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=Lr(this,!1)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?Ur(this,!0):(this._formatted||(this._formatted=Ur(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=_r),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(Pr),Ar=((kr={})[58]="%3A",kr[47]="%2F",kr[63]="%3F",kr[35]="%23",kr[91]="%5B",kr[93]="%5D",kr[64]="%40",kr[33]="%21",kr[36]="%24",kr[38]="%26",kr[39]="%27",kr[40]="%28",kr[41]="%29",kr[42]="%2A",kr[43]="%2B",kr[44]="%2C",kr[59]="%3B",kr[61]="%3D",kr[32]="%20",kr);function Or(e,t){for(var n=void 0,r=-1,i=0;i<e.length;i++){var o=e.charCodeAt(i);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var s=Ar[o];void 0!==s?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=s):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function Wr(e){for(var t=void 0,n=0;n<e.length;n++){var r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=Ar[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function Lr(e,t){var n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,Cr&&(n=n.replace(/\//g,"\\")),n}function Ur(e,t){var n=t?Wr:Or,r="",i=e.scheme,o=e.authority,s=e.path,a=e.query,l=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=Ir,r+=Ir),o){var c=o.indexOf("@");if(-1!==c){var d=o.substr(0,c);o=o.substr(c+1),-1===(c=d.indexOf(":"))?r+=n(d,!1):(r+=n(d.substr(0,c),!1),r+=":",r+=n(d.substr(c+1),!1)),r+="@"}-1===(c=(o=o.toLowerCase()).indexOf(":"))?r+=n(o,!1):(r+=n(o.substr(0,c),!1),r+=o.substr(c))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2))(p=s.charCodeAt(1))>=65&&p<=90&&(s="/"+String.fromCharCode(p+32)+":"+s.substr(3));else if(s.length>=2&&58===s.charCodeAt(1)){var p;(p=s.charCodeAt(0))>=65&&p<=90&&(s=String.fromCharCode(p+32)+":"+s.substr(2))}r+=n(s,!0)}return a&&(r+="?",r+=n(a,!1)),l&&(r+="#",r+=t?l:Or(l,!1)),r}function jr(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+jr(e.substr(3)):e}}var Vr=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Br(e){return e.match(Vr)?e.replace(Vr,(function(e){return jr(e)})):e}var $r="/".charCodeAt(0),qr=".".charCodeAt(0);function Kr(e){var t=e.lastIndexOf("/");return-1!==t?e.substr(0,t):""}function Gr(e){for(var t=[],n=0,r=e;n<r.length;n++){var i=r[n];0===i.length||1===i.length&&i.charCodeAt(0)===qr||(2===i.length&&i.charCodeAt(0)===qr&&i.charCodeAt(1)===qr?t.pop():t.push(i))}e.length>1&&0===e[e.length-1].length&&t.push("");var o=t.join("/");return 0===e[0].length&&(o="/"+o),o}function Hr(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=Pr.parse(e),i=r.path.split("/"),o=0,s=t;o<s.length;o++){var a=s[o];i.push.apply(i,a.split("/"))}return r.with({path:Gr(i)}).toString()}var Jr=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))},Yr=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},Xr=function(){function e(e){this.readDirectory=e,this.literalCompletions=[],this.importCompletions=[]}return e.prototype.onCssURILiteralValue=function(e){this.literalCompletions.push(e)},e.prototype.onCssImportPath=function(e){this.importCompletions.push(e)},e.prototype.computeCompletions=function(e,t){return Jr(this,void 0,void 0,(function(){var n,r,i,o,s,a,l,c,d,p,h,m,u,f,g,b,v;return Yr(this,(function(y){switch(y.label){case 0:n={items:[],isIncomplete:!1},r=0,i=this.literalCompletions,y.label=1;case 1:return r<i.length?(o=i[r],s=o.uriValue,"."!==(u=Qr(s))&&".."!==u?[3,2]:(n.isIncomplete=!0,[3,4])):[3,5];case 2:return[4,this.providePathSuggestions(s,o.position,o.range,e,t)];case 3:for(a=y.sent(),l=0,c=a;l<c.length;l++)v=c[l],n.items.push(v);y.label=4;case 4:return r++,[3,1];case 5:d=0,p=this.importCompletions,y.label=6;case 6:return d<p.length?(h=p[d],m=h.pathValue,"."!==(u=Qr(m))&&".."!==u?[3,7]:(n.isIncomplete=!0,[3,9])):[3,10];case 7:return[4,this.providePathSuggestions(m,h.position,h.range,e,t)];case 8:for(f=y.sent(),"scss"===e.languageId&&f.forEach((function(e){Z(e.label,"_")&&Q(e.label,".scss")&&(e.textEdit?e.textEdit.newText=e.label.slice(1,-5):e.label=e.label.slice(1,-5))})),g=0,b=f;g<b.length;g++)v=b[g],n.items.push(v);y.label=9;case 9:return d++,[3,6];case 10:return[2,n]}}))}))},e.prototype.providePathSuggestions=function(e,t,n,r,i){return Jr(this,void 0,void 0,(function(){var o,s,a,l,c,d,p,h,m,u,f,g,b,v,y;return Yr(this,(function(w){switch(w.label){case 0:if(o=Qr(e),s=Z(e,"'")||Z(e,'"'),a=s?o.slice(0,t.character-(n.start.character+1)):o.slice(0,t.character-n.start.character),l=r.uri,c=s?function(e,t,n){var r=ni(e.start,1),i=ni(e.end,-1);return cn.create(r,i)}(n):n,d=function(e,t,n){var r,i=e.lastIndexOf("/");if(-1===i)r=n;else{var o,s=t.slice(i+1),a=ni(n.end,-s.length),l=s.indexOf(" ");o=-1!==l?ni(a,l):n.end,r=cn.create(a,o)}return r}(a,o,c),p=a.substring(0,a.lastIndexOf("/")+1),!(h=i.resolveReference(p||".",l)))return[3,4];w.label=1;case 1:return w.trys.push([1,3,,4]),m=[],[4,this.readDirectory(h)];case 2:for(u=w.sent(),f=0,g=u;f<g.length;f++)b=g[f],v=b[0],y=b[1],v.charCodeAt(0)===Zr||y!==br.Directory&&Hr(h,v)===l||m.push(ei(v,y===br.Directory,d));return[2,m];case 3:return w.sent(),[3,4];case 4:return[2,[]]}}))}))},e}(),Zr=".".charCodeAt(0);function Qr(e){return Z(e,"'")||Z(e,'"')?e.slice(1,-1):e}function ei(e,t,n){return t?{label:ti(e+="/"),kind:jn.Folder,textEdit:kn.replace(n,ti(e)),command:{title:"Suggest",command:"editor.action.triggerSuggest"}}:{label:ti(e),kind:jn.File,textEdit:kn.replace(n,ti(e))}}function ti(e){return e.replace(/(\s|\(|\)|,|"|')/g,"\\$1")}function ni(e,t){return ln.create(e.line,e.character+t)}var ri,ii=Ct(),oi=Vn.Snippet;!function(e){e.Enums=" ",e.Normal="d",e.VendorPrefixed="x",e.Term="y",e.Variable="z"}(ri||(ri={}));var si=function(){function e(e,t,n){void 0===e&&(e=null),this.variablePrefix=e,this.lsOptions=t,this.cssDataManager=n,this.completionParticipants=[]}return e.prototype.configure=function(e){this.settings=e},e.prototype.getSymbolContext=function(){return this.symbolContext||(this.symbolContext=new Nn(this.styleSheet)),this.symbolContext},e.prototype.setCompletionParticipants=function(e){this.completionParticipants=e||[]},e.prototype.doComplete2=function(e,t,n,r){return i=this,o=void 0,a=function(){var i,o,s,a;return function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}}(this,(function(l){switch(l.label){case 0:if(!this.lsOptions.fileSystemProvider||!this.lsOptions.fileSystemProvider.readDirectory)return[2,this.doComplete(e,t,n)];i=new Xr(this.lsOptions.fileSystemProvider.readDirectory),o=this.completionParticipants,this.completionParticipants=[i].concat(o),s=this.doComplete(e,t,n),l.label=1;case 1:return l.trys.push([1,,3,4]),[4,i.computeCompletions(e,r)];case 2:return a=l.sent(),[2,{isIncomplete:s.isIncomplete||a.isIncomplete,items:a.items.concat(s.items)}];case 3:return this.completionParticipants=o,[7];case 4:return[2]}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{l(a.next(e))}catch(e){t(e)}}function r(e){try{l(a.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof s?i:new s((function(e){e(i)}))).then(n,r)}l((a=a.apply(i,o||[])).next())}));var i,o,s,a},e.prototype.doComplete=function(e,t,n){this.offset=e.offsetAt(t),this.position=t,this.currentWord=function(e,t){for(var n=t-1,r=e.getText();n>=0&&-1===' \t\n\r":{[()]},*>+'.indexOf(r.charAt(n));)n--;return r.substring(n+1,t)}(e,this.offset),this.defaultReplaceRange=cn.create(ln.create(this.position.line,this.position.character-this.currentWord.length),this.position),this.textDocument=e,this.styleSheet=n;try{var r={isIncomplete:!1,items:[]};this.nodePath=ae(this.styleSheet,this.offset);for(var i=this.nodePath.length-1;i>=0;i--){var o=this.nodePath[i];if(o instanceof ke)this.getCompletionsForDeclarationProperty(o.getParent(),r);else if(o instanceof Ze)o.parent instanceof lt?this.getVariableProposals(null,r):this.getCompletionsForExpression(o,r);else if(o instanceof be){var s=o.findAParent(ne.ExtendsReference,ne.Ruleset);if(s)if(s.type===ne.ExtendsReference)this.getCompletionsForExtendsReference(s,o,r);else{var a=s;this.getCompletionsForSelector(a,a&&a.isNested(),r)}}else if(o instanceof ze)this.getCompletionsForFunctionArgument(o,o.getParent(),r);else if(o instanceof me)this.getCompletionsForDeclarations(o,r);else if(o instanceof at)this.getCompletionsForVariableDeclaration(o,r);else if(o instanceof fe)this.getCompletionsForRuleSet(o,r);else if(o instanceof lt)this.getCompletionsForInterpolation(o,r);else if(o instanceof Me)this.getCompletionsForFunctionDeclaration(o,r);else if(o instanceof mt)this.getCompletionsForMixinReference(o,r);else if(o instanceof Ce)this.getCompletionsForFunctionArgument(null,o,r);else if(o instanceof qe)this.getCompletionsForSupports(o,r);else if(o instanceof Je)this.getCompletionsForSupportsCondition(o,r);else if(o instanceof dt)this.getCompletionsForExtendsReference(o,null,r);else if(o.type===ne.URILiteral)this.getCompletionForUriLiteralValue(o,r);else if(null===o.parent)this.getCompletionForTopLevel(r);else{if(o.type!==ne.StringLiteral||!this.isImportPathParent(o.parent.type))continue;this.getCompletionForImportPath(o,r)}if(r.items.length>0||this.offset>o.offset)return this.finalize(r)}return this.getCompletionsForStylesheet(r),0===r.items.length&&this.variablePrefix&&0===this.currentWord.indexOf(this.variablePrefix)&&this.getVariableProposals(null,r),this.finalize(r)}finally{this.position=null,this.currentWord=null,this.textDocument=null,this.styleSheet=null,this.symbolContext=null,this.defaultReplaceRange=null,this.nodePath=null}},e.prototype.isImportPathParent=function(e){return e===ne.Import},e.prototype.finalize=function(e){return e},e.prototype.findInNodePath=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=this.nodePath.length-1;n>=0;n--){var r=this.nodePath[n];if(-1!==e.indexOf(r.type))return r}return null},e.prototype.getCompletionsForDeclarationProperty=function(e,t){return this.getPropertyProposals(e,t)},e.prototype.getPropertyProposals=function(e,t){var n=this,r=this.isTriggerPropertyValueCompletionEnabled,i=this.isCompletePropertyWithSemicolonEnabled;return this.cssDataManager.getProperties().forEach((function(o){var s,a,l=!1;e?(s=n.getCompletionRange(e.getProperty()),a=o.name,rn(e.colonPosition)||(a+=": ",l=!0)):(s=n.getCompletionRange(null),a=o.name+": ",l=!0),!e&&i&&(a+="$0;"),e&&!e.semicolonPosition&&i&&n.offset>=n.textDocument.offsetAt(s.end)&&(a+="$0;");var c={label:o.name,documentation:Rt(o,n.doesSupportMarkdown()),tags:ai(o)?[Bn.Deprecated]:[],textEdit:kn.replace(s,a),insertTextFormat:Vn.Snippet,kind:jn.Property};o.restrictions||(l=!1),r&&l&&(c.command={title:"Suggest",command:"editor.action.triggerSuggest"});var d=(255-("number"==typeof o.relevance?Math.min(Math.max(o.relevance,0),99):50)).toString(16),p=Z(o.name,"-")?ri.VendorPrefixed:ri.Normal;c.sortText=p+"_"+d,t.items.push(c)})),this.completionParticipants.forEach((function(e){e.onCssProperty&&e.onCssProperty({propertyName:n.currentWord,range:n.defaultReplaceRange})})),t},Object.defineProperty(e.prototype,"isTriggerPropertyValueCompletionEnabled",{get:function(){return!this.settings||!this.settings.completion||void 0===this.settings.completion.triggerPropertyValueCompletion||this.settings.completion.triggerPropertyValueCompletion},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"isCompletePropertyWithSemicolonEnabled",{get:function(){return!this.settings||!this.settings.completion||void 0===this.settings.completion.completePropertyWithSemicolon||this.settings.completion.completePropertyWithSemicolon},enumerable:!0,configurable:!0}),e.prototype.getCompletionsForDeclarationValue=function(e,t){for(var n=this,r=e.getFullPropertyName(),i=this.cssDataManager.getProperty(r),o=e.getValue()||null;o&&o.hasChildren();)o=o.findChildAtOffset(this.offset,!1);if(this.completionParticipants.forEach((function(e){e.onCssPropertyValue&&e.onCssPropertyValue({propertyName:r,propertyValue:n.currentWord,range:n.getCompletionRange(o)})})),i){if(i.restrictions)for(var s=0,a=i.restrictions;s<a.length;s++)switch(a[s]){case"color":this.getColorProposals(i,o,t);break;case"position":this.getPositionProposals(i,o,t);break;case"repeat":this.getRepeatStyleProposals(i,o,t);break;case"line-style":this.getLineStyleProposals(i,o,t);break;case"line-width":this.getLineWidthProposals(i,o,t);break;case"geometry-box":this.getGeometryBoxProposals(i,o,t);break;case"box":this.getBoxProposals(i,o,t);break;case"image":this.getImageProposals(i,o,t);break;case"timing-function":this.getTimingFunctionProposals(i,o,t);break;case"shape":this.getBasicShapeProposals(i,o,t)}this.getValueEnumProposals(i,o,t),this.getCSSWideKeywordProposals(i,o,t),this.getUnitProposals(i,o,t)}else for(var l=0,c=function(e,t){var n=t.getFullPropertyName(),r=new li;function i(e){return(e instanceof pe||e instanceof st||e instanceof nt)&&r.add(e.getText()),!0}return e.accept((function(e){if(e instanceof Se&&e!==t&&function(e){var t=e.getFullPropertyName();return n===t}(e)){var r=e.getValue();r&&r.accept(i)}return!0})),r}(this.styleSheet,e).getEntries();l<c.length;l++){var d=c[l];t.items.push({label:d,textEdit:kn.replace(this.getCompletionRange(o),d),kind:jn.Value})}return this.getVariableProposals(o,t),this.getTermProposals(i,o,t),t},e.prototype.getValueEnumProposals=function(e,t,n){if(e.values)for(var r=0,i=e.values;r<i.length;r++){var o=i[r],s=o.name,a=void 0;if(Q(s,")")){var l=s.lastIndexOf("(");-1!==l&&(s=s.substr(0,l)+"($1)",a=oi)}var c=ri.Enums;Z(o.name,"-")&&(c+=ri.VendorPrefixed);var d={label:o.name,documentation:Rt(o,this.doesSupportMarkdown()),tags:ai(e)?[Bn.Deprecated]:[],textEdit:kn.replace(this.getCompletionRange(t),s),sortText:c,kind:jn.Value,insertTextFormat:a};n.items.push(d)}return n},e.prototype.getCSSWideKeywordProposals=function(e,t,n){for(var r in Ht)n.items.push({label:r,documentation:Ht[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});return n},e.prototype.getCompletionsForInterpolation=function(e,t){return this.offset>=e.offset+2&&this.getVariableProposals(null,t),t},e.prototype.getVariableProposals=function(e,t){for(var n=0,r=this.getSymbolContext().findSymbolsAtOffset(this.offset,re.Variable);n<r.length;n++){var i=r[n],o=Z(i.name,"--")?"var("+i.name+")":i.name,s={label:i.name,documentation:i.value?ee(i.value):i.value,textEdit:kn.replace(this.getCompletionRange(e),o),kind:jn.Variable,sortText:ri.Variable};if("string"==typeof s.documentation&&pi(s.documentation)&&(s.kind=jn.Color),i.node.type===ne.FunctionParameter){var a=i.node.getParent();a.type===ne.MixinDeclaration&&(s.detail=ii("completion.argument","argument from '{0}'",a.getName()))}t.items.push(s)}return t},e.prototype.getVariableProposalsForCSSVarFunction=function(e){for(var t=this.getSymbolContext().findSymbolsAtOffset(this.offset,re.Variable),n=0,r=t=t.filter((function(e){return Z(e.name,"--")}));n<r.length;n++){var i=r[n],o={label:i.name,documentation:i.value?ee(i.value):i.value,textEdit:kn.replace(this.getCompletionRange(null),i.name),kind:jn.Variable};"string"==typeof o.documentation&&pi(o.documentation)&&(o.kind=jn.Color),e.items.push(o)}return e},e.prototype.getUnitProposals=function(e,t,n){var r="0";if(this.currentWord.length>0){var i=this.currentWord.match(/^-?\d[\.\d+]*/);i&&(r=i[0],n.isIncomplete=r.length===this.currentWord.length)}else 0===this.currentWord.length&&(n.isIncomplete=!0);if(t&&t.parent&&t.parent.type===ne.Term&&(t=t.getParent()),e.restrictions)for(var o=0,s=e.restrictions;o<s.length;o++){var a=s[o],l=Zt[a];if(l)for(var c=0,d=l;c<d.length;c++){var p=r+d[c];n.items.push({label:p,textEdit:kn.replace(this.getCompletionRange(t),p),kind:jn.Unit})}}return n},e.prototype.getCompletionRange=function(e){if(e&&e.offset<=this.offset&&this.offset<=e.end){var t=-1!==e.end?this.textDocument.positionAt(e.end):this.position,n=this.textDocument.positionAt(e.offset);if(n.line===t.line)return cn.create(n,t)}return this.defaultReplaceRange},e.prototype.getColorProposals=function(e,t,n){for(var r in Ot)n.items.push({label:r,documentation:Ot[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Color});for(var r in Wt)n.items.push({label:r,documentation:Wt[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});var i=new li;this.styleSheet.acceptVisitor(new di(i,this.offset));for(var o=0,s=i.getEntries();o<s.length;o++)r=s[o],n.items.push({label:r,textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Color});for(var a=function(e){var r=1,i=e.func.replace(/\[?\$(\w+)\]?/g,(function(e,t){return"${"+r+++":"+t+"}"}));n.items.push({label:e.func.substr(0,e.func.indexOf("(")),detail:e.func,documentation:e.desc,textEdit:kn.replace(l.getCompletionRange(t),i),insertTextFormat:oi,kind:jn.Function})},l=this,c=0,d=At;c<d.length;c++)a(d[c]);return n},e.prototype.getPositionProposals=function(e,t,n){for(var r in Vt)n.items.push({label:r,documentation:Vt[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});return n},e.prototype.getRepeatStyleProposals=function(e,t,n){for(var r in Bt)n.items.push({label:r,documentation:Bt[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});return n},e.prototype.getLineStyleProposals=function(e,t,n){for(var r in $t)n.items.push({label:r,documentation:$t[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});return n},e.prototype.getLineWidthProposals=function(e,t,n){for(var r=0,i=qt;r<i.length;r++){var o=i[r];n.items.push({label:o,textEdit:kn.replace(this.getCompletionRange(t),o),kind:jn.Value})}return n},e.prototype.getGeometryBoxProposals=function(e,t,n){for(var r in Gt)n.items.push({label:r,documentation:Gt[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});return n},e.prototype.getBoxProposals=function(e,t,n){for(var r in Kt)n.items.push({label:r,documentation:Kt[r],textEdit:kn.replace(this.getCompletionRange(t),r),kind:jn.Value});return n},e.prototype.getImageProposals=function(e,t,n){for(var r in Jt){var i=ci(r);n.items.push({label:r,documentation:Jt[r],textEdit:kn.replace(this.getCompletionRange(t),i),kind:jn.Function,insertTextFormat:r!==i?oi:void 0})}return n},e.prototype.getTimingFunctionProposals=function(e,t,n){for(var r in Yt){var i=ci(r);n.items.push({label:r,documentation:Yt[r],textEdit:kn.replace(this.getCompletionRange(t),i),kind:jn.Function,insertTextFormat:r!==i?oi:void 0})}return n},e.prototype.getBasicShapeProposals=function(e,t,n){for(var r in Xt){var i=ci(r);n.items.push({label:r,documentation:Xt[r],textEdit:kn.replace(this.getCompletionRange(t),i),kind:jn.Function,insertTextFormat:r!==i?oi:void 0})}return n},e.prototype.getCompletionsForStylesheet=function(e){var t=this.styleSheet.findFirstChildBeforeOffset(this.offset);return t?t instanceof fe?this.getCompletionsForRuleSet(t,e):t instanceof qe?this.getCompletionsForSupports(t,e):e:this.getCompletionForTopLevel(e)},e.prototype.getCompletionForTopLevel=function(e){var t=this;return this.cssDataManager.getAtDirectives().forEach((function(n){e.items.push({label:n.name,textEdit:kn.replace(t.getCompletionRange(null),n.name),documentation:Rt(n,t.doesSupportMarkdown()),tags:ai(n)?[Bn.Deprecated]:[],kind:jn.Keyword})})),this.getCompletionsForSelector(null,!1,e),e},e.prototype.getCompletionsForRuleSet=function(e,t){var n=e.getDeclarations();return n&&n.endsWith("}")&&this.offset>=n.end?this.getCompletionForTopLevel(t):!n||this.offset<=n.offset?this.getCompletionsForSelector(e,e.isNested(),t):this.getCompletionsForDeclarations(e.getDeclarations(),t)},e.prototype.getCompletionsForSelector=function(e,t,n){var r=this,i=this.findInNodePath(ne.PseudoSelector,ne.IdentifierSelector,ne.ClassSelector,ne.ElementNameSelector);if(!i&&this.offset-this.currentWord.length>0&&":"===this.textDocument.getText()[this.offset-this.currentWord.length-1]&&(this.currentWord=":"+this.currentWord,this.defaultReplaceRange=cn.create(ln.create(this.position.line,this.position.character-this.currentWord.length),this.position)),this.cssDataManager.getPseudoClasses().forEach((function(e){var t=ci(e.name),o={label:e.name,textEdit:kn.replace(r.getCompletionRange(i),t),documentation:Rt(e,r.doesSupportMarkdown()),tags:ai(e)?[Bn.Deprecated]:[],kind:jn.Function,insertTextFormat:e.name!==t?oi:void 0};Z(e.name,":-")&&(o.sortText=ri.VendorPrefixed),n.items.push(o)})),this.cssDataManager.getPseudoElements().forEach((function(e){var t=ci(e.name),o={label:e.name,textEdit:kn.replace(r.getCompletionRange(i),t),documentation:Rt(e,r.doesSupportMarkdown()),tags:ai(e)?[Bn.Deprecated]:[],kind:jn.Function,insertTextFormat:e.name!==t?oi:void 0};Z(e.name,"::-")&&(o.sortText=ri.VendorPrefixed),n.items.push(o)})),!t){for(var o=0,s=Qt;o<s.length;o++){var a=s[o];n.items.push({label:a,textEdit:kn.replace(this.getCompletionRange(i),a),kind:jn.Keyword})}for(var l=0,c=en;l<c.length;l++)a=c[l],n.items.push({label:a,textEdit:kn.replace(this.getCompletionRange(i),a),kind:jn.Keyword})}var d={};d[this.currentWord]=!0;var p=this.textDocument.getText();if(this.styleSheet.accept((function(e){if(e.type===ne.SimpleSelector&&e.length>0){var t=p.substr(e.offset,e.length);return"."!==t.charAt(0)||d[t]||(d[t]=!0,n.items.push({label:t,textEdit:kn.replace(r.getCompletionRange(i),t),kind:jn.Keyword})),!1}return!0})),e&&e.isNested()){var h=e.getSelectors().findFirstChildBeforeOffset(this.offset);h&&0===e.getSelectors().getChildren().indexOf(h)&&this.getPropertyProposals(null,n)}return n},e.prototype.getCompletionsForDeclarations=function(e,t){if(!e||this.offset===e.offset)return t;var n=e.findFirstChildBeforeOffset(this.offset);if(!n)return this.getCompletionsForDeclarationProperty(null,t);if(n instanceof ye){var r=n;if(!rn(r.colonPosition)||this.offset<=r.colonPosition)return this.getCompletionsForDeclarationProperty(r,t);if(rn(r.semicolonPosition)&&r.semicolonPosition<this.offset)return this.offset===r.semicolonPosition+1?t:this.getCompletionsForDeclarationProperty(null,t);if(r instanceof Se)return this.getCompletionsForDeclarationValue(r,t)}else n instanceof dt?this.getCompletionsForExtendsReference(n,null,t):(this.currentWord&&"@"===this.currentWord[0]||n instanceof fe)&&this.getCompletionsForDeclarationProperty(null,t);return t},e.prototype.getCompletionsForVariableDeclaration=function(e,t){return this.offset&&rn(e.colonPosition)&&this.offset>e.colonPosition&&this.getVariableProposals(e.getValue(),t),t},e.prototype.getCompletionsForExpression=function(e,t){var n=e.getParent();if(n instanceof ze)return this.getCompletionsForFunctionArgument(n,n.getParent(),t),t;var r=e.findParent(ne.Declaration);if(!r)return this.getTermProposals(void 0,null,t),t;var i=e.findChildAtOffset(this.offset,!0);return i?i instanceof st||i instanceof pe?this.getCompletionsForDeclarationValue(r,t):t:this.getCompletionsForDeclarationValue(r,t)},e.prototype.getCompletionsForFunctionArgument=function(e,t,n){var r=t.getIdentifier();return r&&r.matches("var")&&(t.getArguments().hasChildren()&&t.getArguments().getChild(0)!==e||this.getVariableProposalsForCSSVarFunction(n)),n},e.prototype.getCompletionsForFunctionDeclaration=function(e,t){var n=e.getDeclarations();return n&&this.offset>n.offset&&this.offset<n.end&&this.getTermProposals(void 0,null,t),t},e.prototype.getCompletionsForMixinReference=function(e,t){for(var n=this,r=0,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,re.Mixin);r<i.length;r++){var o=i[r];o.node instanceof ut&&t.items.push(this.makeTermProposal(o,o.node.getParameters(),null))}var s=e.getIdentifier()||null;return this.completionParticipants.forEach((function(e){e.onCssMixinReference&&e.onCssMixinReference({mixinName:n.currentWord,range:n.getCompletionRange(s)})})),t},e.prototype.getTermProposals=function(e,t,n){for(var r=0,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,re.Function);r<i.length;r++){var o=i[r];o.node instanceof Me&&n.items.push(this.makeTermProposal(o,o.node.getParameters(),t))}return n},e.prototype.makeTermProposal=function(e,t,n){e.node;var r=t.getChildren().map((function(e){return e instanceof Fe?e.getName():e.getText()})),i=e.name+"("+r.map((function(e,t){return"${"+(t+1)+":"+e+"}"})).join(", ")+")";return{label:e.name,detail:e.name+"("+r.join(", ")+")",textEdit:kn.replace(this.getCompletionRange(n),i),insertTextFormat:oi,kind:jn.Function,sortText:ri.Term}},e.prototype.getCompletionsForSupportsCondition=function(e,t){var n=e.findFirstChildBeforeOffset(this.offset);if(n){if(n instanceof Se)return!rn(n.colonPosition)||this.offset<=n.colonPosition?this.getCompletionsForDeclarationProperty(n,t):this.getCompletionsForDeclarationValue(n,t);if(n instanceof Je)return this.getCompletionsForSupportsCondition(n,t)}return rn(e.lParent)&&this.offset>e.lParent&&(!rn(e.rParent)||this.offset<=e.rParent)?this.getCompletionsForDeclarationProperty(null,t):t},e.prototype.getCompletionsForSupports=function(e,t){var n=e.getDeclarations();if(!n||this.offset<=n.offset){var r=e.findFirstChildBeforeOffset(this.offset);return r instanceof Je?this.getCompletionsForSupportsCondition(r,t):t}return this.getCompletionForTopLevel(t)},e.prototype.getCompletionsForExtendsReference=function(e,t,n){return n},e.prototype.getCompletionForUriLiteralValue=function(e,t){var n,r,i;if(e.hasChildren()){var o=e.getChild(0);n=o.getText(),r=this.position,i=this.getCompletionRange(o)}else{n="",r=this.position;var s=this.textDocument.positionAt(e.offset+"url(".length);i=cn.create(s,s)}return this.completionParticipants.forEach((function(e){e.onCssURILiteralValue&&e.onCssURILiteralValue({uriValue:n,position:r,range:i})})),t},e.prototype.getCompletionForImportPath=function(e,t){var n=this;return this.completionParticipants.forEach((function(t){t.onCssImportPath&&t.onCssImportPath({pathValue:e.getText(),position:n.position,range:n.getCompletionRange(e)})})),t},e.prototype.doesSupportMarkdown=function(){var e,t,n;if(!rn(this.supportsMarkdown)){if(!rn(this.lsOptions.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var r=null===(n=null===(t=null===(e=this.lsOptions.clientCapabilities.textDocument)||void 0===e?void 0:e.completion)||void 0===t?void 0:t.completionItem)||void 0===n?void 0:n.documentationFormat;this.supportsMarkdown=Array.isArray(r)&&-1!==r.indexOf(Ln.Markdown)}return this.supportsMarkdown},e}();function ai(e){return!(!e.status||"nonstandard"!==e.status&&"obsolete"!==e.status)}var li=function(){function e(){this.entries={}}return e.prototype.add=function(e){this.entries[e]=!0},e.prototype.getEntries=function(){return Object.keys(this.entries)},e}();function ci(e){return e.replace(/\(\)$/,"($1)")}var di=function(){function e(e,t){this.entries=e,this.currentOffset=t}return e.prototype.visitNode=function(e){return(e instanceof nt||e instanceof Ce&&function(e){var t=e.getName();return!!t&&/^(rgb|rgba|hsl|hsla)$/gi.test(t)}(e))&&(this.currentOffset<e.offset||e.end<this.currentOffset)&&this.entries.add(e.getText()),!0},e}();function pi(e){return e.toLowerCase()in Ot||/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(e)}var hi,mi=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),ui=Ct(),fi=function(){function e(){this.parent=null,this.children=null,this.attributes=null}return e.prototype.findAttribute=function(e){if(this.attributes)for(var t=0,n=this.attributes;t<n.length;t++){var r=n[t];if(r.name===e)return r.value}return null},e.prototype.addChild=function(t){t instanceof e&&(t.parent=this),this.children||(this.children=[]),this.children.push(t)},e.prototype.append=function(e){if(this.attributes){var t=this.attributes[this.attributes.length-1];t.value=t.value+e}},e.prototype.prepend=function(e){if(this.attributes){var t=this.attributes[0];t.value=e+t.value}},e.prototype.findRoot=function(){for(var e=this;e.parent&&!(e.parent instanceof gi);)e=e.parent;return e},e.prototype.removeChild=function(e){if(this.children){var t=this.children.indexOf(e);if(-1!==t)return this.children.splice(t,1),!0}return!1},e.prototype.addAttr=function(e,t){this.attributes||(this.attributes=[]);for(var n=0,r=this.attributes;n<r.length;n++){var i=r[n];if(i.name===e)return void(i.value+=" "+t)}this.attributes.push({name:e,value:t})},e.prototype.clone=function(t){void 0===t&&(t=!0);var n=new e;if(this.attributes){n.attributes=[];for(var r=0,i=this.attributes;r<i.length;r++){var o=i[r];n.addAttr(o.name,o.value)}}if(t&&this.children){n.children=[];for(var s=0;s<this.children.length;s++)n.addChild(this.children[s].clone())}return n},e.prototype.cloneWithParent=function(){var e=this.clone(!1);return!this.parent||this.parent instanceof gi||this.parent.cloneWithParent().addChild(e),e},e}(),gi=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return mi(t,e),t}(fi),bi=function(e){function t(t){var n=e.call(this)||this;return n.addAttr("name",t),n}return mi(t,e),t}(fi),vi=function(){function e(e){this.quote=e,this.result=[]}return e.prototype.print=function(e){return this.result=[],e instanceof gi?e.children&&this.doPrint(e.children,0):this.doPrint([e],0),[{language:"html",value:this.result.join("\n")}]},e.prototype.doPrint=function(e,t){for(var n=0,r=e;n<r.length;n++){var i=r[n];this.doPrintElement(i,t),i.children&&this.doPrint(i.children,t+1)}},e.prototype.writeLine=function(e,t){var n=new Array(e+1).join(" ");this.result.push(n+t)},e.prototype.doPrintElement=function(e,t){var n=e.findAttribute("name");if(e instanceof bi||"…"===n)this.writeLine(t,n);else{var r=["<"];if(n?r.push(n):r.push("element"),e.attributes)for(var i=0,o=e.attributes;i<o.length;i++){var s=o[i];if("name"!==s.name){r.push(" "),r.push(s.name);var a=s.value;a&&(r.push("="),r.push(hi.ensure(a,this.quote)))}}r.push(">"),this.writeLine(t,r.join(""))}},e}();!function(e){function t(e){var t=e.match(/^['"](.*)["']$/);return t?t[1]:e}e.ensure=function(e,n){return n+t(e)+n},e.remove=t}(hi||(hi={}));var yi=function(){this.id=0,this.attr=0,this.tag=0};function wi(e,t){for(var n=new fi,r=0,i=e.getChildren();r<i.length;r++){var o=i[r];switch(o.type){case ne.SelectorCombinator:if(t){var s=o.getText().split("&");if(1===s.length){n.addAttr("name",s[0]);break}n=t.cloneWithParent(),s[0]&&n.findRoot().prepend(s[0]);for(var a=1;a<s.length;a++){if(a>1){var l=t.cloneWithParent();n.addChild(l.findRoot()),n=l}n.append(s[a])}}break;case ne.SelectorPlaceholder:if(o.matches("@at-root"))return n;case ne.ElementNameSelector:var c=o.getText();n.addAttr("name","*"===c?"element":xi(c));break;case ne.ClassSelector:n.addAttr("class",xi(o.getText().substring(1)));break;case ne.IdentifierSelector:n.addAttr("id",xi(o.getText().substring(1)));break;case ne.MixinDeclaration:n.addAttr("class",o.getName());break;case ne.PseudoSelector:n.addAttr(xi(o.getText()),"");break;case ne.AttributeSelector:var d=o,p=d.getIdentifier();if(p){var h=d.getValue(),m=d.getOperator(),u=void 0;if(h&&m)switch(xi(m.getText())){case"|=":u=hi.remove(xi(h.getText()))+"-…";break;case"^=":u=hi.remove(xi(h.getText()))+"…";break;case"$=":u="…"+hi.remove(xi(h.getText()));break;case"~=":u=" … "+hi.remove(xi(h.getText()))+" … ";break;case"*=":u="…"+hi.remove(xi(h.getText()))+"…";break;default:u=hi.remove(xi(h.getText()))}n.addAttr(xi(p.getText()),u)}}}return n}function xi(e){var t=new X;t.setSource(e);var n=t.scanUnquotedString();return n?n.text:e}var Si=function(){function e(e){this.cssDataManager=e}return e.prototype.selectorToMarkedString=function(e){var t=function(e){if(e.matches("@at-root"))return null;var t=new gi,n=[],r=e.getParent();if(r instanceof fe)for(var i=r.getParent();i&&!Ci(i);){if(i instanceof fe){if(i.getSelectors().matches("@at-root"))break;n.push(i)}i=i.getParent()}for(var o=new ki(t),s=n.length-1;s>=0;s--){var a=n[s].getSelectors().getChild(0);a&&o.processSelector(a)}return o.processSelector(e),t}(e);if(t){var n=new vi('"').print(t);return n.push(this.selectorToSpecificityMarkedString(e)),n}return[]},e.prototype.simpleSelectorToMarkedString=function(e){var t=wi(e),n=new vi('"').print(t);return n.push(this.selectorToSpecificityMarkedString(e)),n},e.prototype.isPseudoElementIdentifier=function(e){var t=e.match(/^::?([\w-]+)/);return!!t&&!!this.cssDataManager.getPseudoElement("::"+t[1])},e.prototype.selectorToSpecificityMarkedString=function(e){var t=this,n=function(e){for(var i=0,o=e.getChildren();i<o.length;i++){var s=o[i];switch(s.type){case ne.IdentifierSelector:r.id++;break;case ne.ClassSelector:case ne.AttributeSelector:r.attr++;break;case ne.ElementNameSelector:if(s.matches("*"))break;r.tag++;break;case ne.PseudoSelector:var a=s.getText();if(t.isPseudoElementIdentifier(a))r.tag++;else{if(a.match(/^:not/i))break;r.attr++}}s.getChildren().length>0&&n(s)}},r=new yi;return n(e),ui("specificity","[Selector Specificity](https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity): ({0}, {1}, {2})",r.id,r.attr,r.tag)},e}(),ki=function(){function e(e){this.prev=null,this.element=e}return e.prototype.processSelector=function(e){var t=null;if(!(this.element instanceof gi)&&e.getChildren().some((function(e){return e.hasChildren()&&e.getChild(0).type===ne.SelectorCombinator}))){var n=this.element.findRoot();n.parent instanceof gi&&(t=this.element,this.element=n.parent,this.element.removeChild(n),this.prev=null)}for(var r=0,i=e.getChildren();r<i.length;r++){var o=i[r];if(o instanceof be){if(this.prev instanceof be){var s=new bi("…");this.element.addChild(s),this.element=s}else this.prev&&(this.prev.matches("+")||this.prev.matches("~"))&&this.element.parent&&(this.element=this.element.parent);this.prev&&this.prev.matches("~")&&(this.element.addChild(wi(o)),this.element.addChild(new bi("⋮")));var a=wi(o,t),l=a.findRoot();this.element.addChild(l),this.element=a}(o instanceof be||o.type===ne.SelectorCombinatorParent||o.type===ne.SelectorCombinatorShadowPiercingDescendant||o.type===ne.SelectorCombinatorSibling||o.type===ne.SelectorCombinatorAllSiblings)&&(this.prev=o)}},e}();function Ci(e){switch(e.type){case ne.MixinDeclaration:case ne.Stylesheet:return!0}return!1}!function(){function e(e,t){this.clientCapabilities=e,this.cssDataManager=t,this.selectorPrinting=new Si(t)}e.prototype.doHover=function(e,t,n){function r(t){return cn.create(e.positionAt(t.offset),e.positionAt(t.end))}for(var i=ae(n,e.offsetAt(t)),o=null,s=0;s<i.length;s++){var a=i[s];if(a instanceof ge){o={contents:this.selectorPrinting.selectorToMarkedString(a),range:r(a)};break}if(a instanceof be){Z(a.getText(),"@")||(o={contents:this.selectorPrinting.simpleSelectorToMarkedString(a),range:r(a)});break}if(a instanceof Se){var l=a.getFullPropertyName();(d=this.cssDataManager.getProperty(l))&&(o=(p=Rt(d,this.doesSupportMarkdown()))?{contents:p,range:r(a)}:null)}else if(a instanceof ft){var c=a.getText();(d=this.cssDataManager.getAtDirective(c))&&(o=(p=Rt(d,this.doesSupportMarkdown()))?{contents:p,range:r(a)}:null)}else if(a instanceof ce&&a.type===ne.PseudoSelector){var d,p,h=a.getText();(d="::"===h.slice(0,2)?this.cssDataManager.getPseudoElement(h):this.cssDataManager.getPseudoClass(h))&&(o=(p=Rt(d,this.doesSupportMarkdown()))?{contents:p,range:r(a)}:null)}}return o&&(o.contents=this.convertContents(o.contents)),o},e.prototype.convertContents=function(e){return this.doesSupportMarkdown()||"string"==typeof e?e:"kind"in e?{kind:"plaintext",value:e.value}:Array.isArray(e)?e.map((function(e){return"string"==typeof e?e:e.value})):e.value},e.prototype.doesSupportMarkdown=function(){if(!rn(this.supportsMarkdown)){if(!rn(this.clientCapabilities))return this.supportsMarkdown=!0,this.supportsMarkdown;var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.hover;this.supportsMarkdown=e&&e.contentFormat&&Array.isArray(e.contentFormat)&&-1!==e.contentFormat.indexOf(Ln.Markdown)}return this.supportsMarkdown}}();var Fi=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{l(r.next(e))}catch(e){o(e)}}function a(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}l((r=r.apply(e,t||[])).next())}))},zi=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}},Ei=Ct(),Di=function(){function e(e){this.fileSystemProvider=e}return e.prototype.findDefinition=function(e,t,n){var r=new Nn(n),i=se(n,e.offsetAt(t));if(!i)return null;var o=r.findSymbolFromNode(i);return o?{uri:e.uri,range:Ti(o.node,e)}:null},e.prototype.findReferences=function(e,t,n){return this.findDocumentHighlights(e,t,n).map((function(t){return{uri:e.uri,range:t.range}}))},e.prototype.findDocumentHighlights=function(e,t,n){var r=[],i=se(n,e.offsetAt(t));if(!i||i.type===ne.Stylesheet||i.type===ne.Declarations)return r;i.type===ne.Identifier&&i.parent&&i.parent.type===ne.ClassSelector&&(i=i.parent);var o=new Nn(n),s=o.findSymbolFromNode(i),a=i.getText();return n.accept((function(t){if(s){if(o.matchesSymbol(t,s))return r.push({kind:Ri(t),range:Ti(t,e)}),!1}else i&&i.type===t.type&&t.matches(a)&&r.push({kind:Ri(t),range:Ti(t,e)});return!0})),r},e.prototype.isRawStringDocumentLinkNode=function(e){return e.type===ne.Import},e.prototype.findDocumentLinks=function(e,t,n){for(var r=this.findUnresolvedLinks(e,t),i=0;i<r.length;i++){var o=r[i].target;if(o&&!/^\w+:\/\//g.test(o)){var s=n.resolveReference(o,e.uri);s&&(r[i].target=s)}}return r},e.prototype.findDocumentLinks2=function(e,t,n){return Fi(this,void 0,void 0,(function(){var r,i,o,s,a,l,c;return zi(this,(function(d){switch(d.label){case 0:r=this.findUnresolvedLinks(e,t),i=[],o=0,s=r,d.label=1;case 1:return o<s.length?(a=s[o],!(l=a.target)||/^\w+:\/\//g.test(l)?[3,3]:[4,this.resolveRelativeReference(l,e.uri,n)]):[3,5];case 2:return void 0!==(c=d.sent())&&(a.target=c,i.push(a)),[3,4];case 3:i.push(a),d.label=4;case 4:return o++,[3,1];case 5:return[2,i]}}))}))},e.prototype.findUnresolvedLinks=function(e,t){var n=this,r=[],i=function(t){var n=t.getText(),i=Ti(t,e);i.start.line===i.end.line&&i.start.character===i.end.character||((Z(n,"'")||Z(n,'"'))&&(n=n.slice(1,-1)),r.push({target:n,range:i}))};return t.accept((function(e){if(e.type===ne.URILiteral){var t=e.getChild(0);return t&&i(t),!1}if(e.parent&&n.isRawStringDocumentLinkNode(e.parent)){var r=e.getText();return(Z(r,"'")||Z(r,'"'))&&i(e),!1}return!0})),r},e.prototype.findDocumentSymbols=function(e,t){var n=[];return t.accept((function(t){var r={name:null,kind:Qn.Class,location:null},i=t;if(t instanceof ge)return r.name=t.getText(),(i=t.findAParent(ne.Ruleset,ne.ExtendsReference))&&(r.location=dn.create(e.uri,Ti(i,e)),n.push(r)),!1;if(t instanceof at)r.name=t.getName(),r.kind=Qn.Variable;else if(t instanceof ut)r.name=t.getName(),r.kind=Qn.Method;else if(t instanceof Me)r.name=t.getName(),r.kind=Qn.Function;else if(t instanceof Ae)r.name=Ei("literal.keyframes","@keyframes {0}",t.getName());else if(t instanceof _e)r.name=Ei("literal.fontface","@font-face");else if(t instanceof $e){var o=t.getChild(0);o instanceof Ge&&(r.name="@media "+o.getText(),r.kind=Qn.Module)}return r.name&&(r.location=dn.create(e.uri,Ti(i,e)),n.push(r)),!0})),n},e.prototype.findDocumentColors=function(e,t){var n=[];return t.accept((function(t){var r=function(e,t){var n=function(e){if(e.type===ne.HexColorValue)return jt(e.getText());if(e.type===ne.Function){var t=e,n=t.getName(),r=t.getArguments().getChildren();if(!n||r.length<3||r.length>4)return null;try{var i=4===r.length?Lt(r[3],1):1;if("rgb"===n||"rgba"===n)return{red:Lt(r[0],255),green:Lt(r[1],255),blue:Lt(r[2],255),alpha:i};if("hsl"===n||"hsla"===n)return function(e,t,n,r){if(void 0===r&&(r=1),0===t)return{red:n,green:n,blue:n,alpha:r};var i=function(e,t,n){for(;n<0;)n+=6;for(;n>=6;)n-=6;return n<1?(t-e)*n+e:n<3?t:n<4?(t-e)*(4-n)+e:e},o=n<=.5?n*(t+1):n+t-n*t,s=2*n-o;return{red:i(s,o,2+(e/=60)),green:i(s,o,e),blue:i(s,o,e-2),alpha:r}}(function(e){var t=e.getText();if(t.match(/^([-+]?[0-9]*\.?[0-9]+)(deg)?$/))return parseFloat(t)%360;throw new Error}(r[0]),Lt(r[1],100),Lt(r[2],100),i)}catch(e){return null}}else if(e.type===ne.Identifier){if(e.parent&&e.parent.type!==ne.Term)return null;var o=e.parent;if(o&&o.parent&&o.parent.type===ne.BinaryExpression){var s=o.parent;if(s.parent&&s.parent.type===ne.ListEntry&&s.parent.key===s)return null}var a=e.getText().toLowerCase();if("none"===a)return null;var l=Ot[a];if(l)return jt(l)}return null}(e);return n?{color:n,range:Ti(e,t)}:null}(t,e);return r&&n.push(r),!0})),n},e.prototype.getColorPresentations=function(e,t,n,r){var i,o=[],s=Math.round(255*n.red),a=Math.round(255*n.green),l=Math.round(255*n.blue);i=1===n.alpha?"rgb("+s+", "+a+", "+l+")":"rgba("+s+", "+a+", "+l+", "+n.alpha+")",o.push({label:i,textEdit:kn.replace(r,i)}),i=1===n.alpha?"#"+Ii(s)+Ii(a)+Ii(l):"#"+Ii(s)+Ii(a)+Ii(l)+Ii(Math.round(255*n.alpha)),o.push({label:i,textEdit:kn.replace(r,i)});var c=function(e){var t=e.red,n=e.green,r=e.blue,i=e.alpha,o=Math.max(t,n,r),s=Math.min(t,n,r),a=0,l=0,c=(s+o)/2,d=o-s;if(d>0){switch(l=Math.min(c<=.5?d/(2*c):d/(2-2*c),1),o){case t:a=(n-r)/d+(n<r?6:0);break;case n:a=(r-t)/d+2;break;case r:a=(t-n)/d+4}a*=60,a=Math.round(a)}return{h:a,s:l,l:c,a:i}}(n);return i=1===c.a?"hsl("+c.h+", "+Math.round(100*c.s)+"%, "+Math.round(100*c.l)+"%)":"hsla("+c.h+", "+Math.round(100*c.s)+"%, "+Math.round(100*c.l)+"%, "+c.a+")",o.push({label:i,textEdit:kn.replace(r,i)}),o},e.prototype.doRename=function(e,t,n,r){var i,o=this.findDocumentHighlights(e,t,r).map((function(e){return kn.replace(e.range,n)}));return{changes:(i={},i[e.uri]=o,i)}},e.prototype.resolveRelativeReference=function(e,t,n){return Fi(this,void 0,void 0,(function(){var r,i,o,s,a;return zi(this,(function(l){switch(l.label){case 0:return"~"===e[0]&&"/"!==e[1]&&this.fileSystemProvider?(e=e.substring(1),Z(t,"file://")?(r="@"===(c=e)[0]?c.substring(0,c.indexOf("/",c.indexOf("/")+1)):c.substring(0,c.indexOf("/")),i=n.resolveReference("/",t),o=Kr(t),[4,this.resolvePathToModule(r,o,i)]):[3,2]):[3,3];case 1:if(s=l.sent())return a=e.substring(r.length+1),[2,Hr(s,a)];l.label=2;case 2:case 3:return[2,n.resolveReference(e,t)]}var c}))}))},e.prototype.resolvePathToModule=function(e,t,n){return Fi(this,void 0,void 0,(function(){var r;return zi(this,(function(i){switch(i.label){case 0:return r=Hr(t,"node_modules",e,"package.json"),[4,this.fileExists(r)];case 1:return i.sent()?[2,Kr(r)]:n&&t.startsWith(n)&&t.length!==n.length?[2,this.resolvePathToModule(e,Kr(t),n)]:[2,void 0]}}))}))},e.prototype.fileExists=function(e){return Fi(this,void 0,void 0,(function(){var t;return zi(this,(function(n){switch(n.label){case 0:if(!this.fileSystemProvider)return[2,!1];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.fileSystemProvider.stat(e)];case 2:return(t=n.sent()).type===br.Unknown&&-1===t.size?[2,!1]:[2,!0];case 3:return n.sent(),[2,!1];case 4:return[2]}}))}))},e}();function Ti(e,t){return cn.create(t.positionAt(e.offset),t.positionAt(e.end))}function Ri(e){if(e.type===ne.Selector)return Xn.Write;if(e instanceof pe&&e.parent&&e.parent instanceof ke&&e.isCustomProperty)return Xn.Write;if(e.parent)switch(e.parent.type){case ne.FunctionDeclaration:case ne.MixinDeclaration:case ne.Keyframe:case ne.VariableDeclaration:case ne.FunctionParameter:return Xn.Write}return Xn.Read}function Ii(e){var t=e.toString(16);return 2!==t.length?"0"+t:t}var Mi=Ct(),Pi=le.Warning,_i=le.Error,Ni=le.Ignore,Ai=function(e,t,n){this.id=e,this.message=t,this.defaultValue=n},Oi={AllVendorPrefixes:new Ai("compatibleVendorPrefixes",Mi("rule.vendorprefixes.all","When using a vendor-specific prefix make sure to also include all other vendor-specific properties"),Ni),IncludeStandardPropertyWhenUsingVendorPrefix:new Ai("vendorPrefix",Mi("rule.standardvendorprefix.all","When using a vendor-specific prefix also include the standard property"),Pi),DuplicateDeclarations:new Ai("duplicateProperties",Mi("rule.duplicateDeclarations","Do not use duplicate style definitions"),Ni),EmptyRuleSet:new Ai("emptyRules",Mi("rule.emptyRuleSets","Do not use empty rulesets"),Pi),ImportStatemement:new Ai("importStatement",Mi("rule.importDirective","Import statements do not load in parallel"),Ni),BewareOfBoxModelSize:new Ai("boxModel",Mi("rule.bewareOfBoxModelSize","Do not use width or height when using padding or border"),Ni),UniversalSelector:new Ai("universalSelector",Mi("rule.universalSelector","The universal selector (*) is known to be slow"),Ni),ZeroWithUnit:new Ai("zeroUnits",Mi("rule.zeroWidthUnit","No unit for zero needed"),Ni),RequiredPropertiesForFontFace:new Ai("fontFaceProperties",Mi("rule.fontFaceProperties","@font-face rule must define 'src' and 'font-family' properties"),Pi),HexColorLength:new Ai("hexColorLength",Mi("rule.hexColor","Hex colors must consist of three, four, six or eight hex numbers"),_i),ArgsInColorFunction:new Ai("argumentsInColorFunction",Mi("rule.colorFunction","Invalid number of parameters"),_i),UnknownProperty:new Ai("unknownProperties",Mi("rule.unknownProperty","Unknown property."),Pi),UnknownAtRules:new Ai("unknownAtRules",Mi("rule.unknownAtRules","Unknown at-rule."),Pi),IEStarHack:new Ai("ieHack",Mi("rule.ieHack","IE hacks are only necessary when supporting IE7 and older"),Ni),UnknownVendorSpecificProperty:new Ai("unknownVendorSpecificProperties",Mi("rule.unknownVendorSpecificProperty","Unknown vendor specific property."),Ni),PropertyIgnoredDueToDisplay:new Ai("propertyIgnoredDueToDisplay",Mi("rule.propertyIgnoredDueToDisplay","Property is ignored due to the display."),Pi),AvoidImportant:new Ai("important",Mi("rule.avoidImportant","Avoid using !important. It is an indication that the specificity of the entire CSS has gotten out of control and needs to be refactored."),Ni),AvoidFloat:new Ai("float",Mi("rule.avoidFloat","Avoid using 'float'. Floats lead to fragile CSS that is easy to break if one aspect of the layout changes."),Ni),AvoidIdSelector:new Ai("idSelector",Mi("rule.avoidIdSelector","Selectors should not contain IDs because these rules are too tightly coupled with the HTML."),Ni)},Wi={ValidProperties:new function(e,t,n){this.id=e,this.message=t,this.defaultValue=n}("validProperties",Mi("rule.validProperties","A list of properties that are not validated against the `unknownProperties` rule."),[])},Li=function(){function e(e){void 0===e&&(e={}),this.conf=e}return e.prototype.getRule=function(e){if(this.conf.hasOwnProperty(e.id)){var t=function(e){switch(e){case"ignore":return le.Ignore;case"warning":return le.Warning;case"error":return le.Error}return null}(this.conf[e.id]);if(t)return t}return e.defaultValue},e.prototype.getSetting=function(e){return this.conf[e.id]},e}(),Ui=Ct(),ji=(function(){function e(e){this.cssDataManager=e}e.prototype.doCodeActions=function(e,t,n,r){return this.doCodeActions2(e,t,n,r).map((function(t){var n=t.edit&&t.edit.documentChanges&&t.edit.documentChanges[0];return Sn.create(t.title,"_css.applyCodeAction",e.uri,e.version,n&&n.edits)}))},e.prototype.doCodeActions2=function(e,t,n,r){var i=[];if(n.diagnostics)for(var o=0,s=n.diagnostics;o<s.length;o++){var a=s[o];this.appendFixesForMarker(e,r,a,i)}return i},e.prototype.getFixesForUnknownProperty=function(e,t,n,r){var i=t.getName(),o=[];this.cssDataManager.getProperties().forEach((function(e){var t=function(e,t,n){void 0===n&&(n=4);var r=Math.abs(e.length-t.length);if(r>n)return 0;var i,o,s=[],a=[];for(i=0;i<t.length+1;++i)a.push(0);for(i=0;i<e.length+1;++i)s.push(a);for(i=1;i<e.length+1;++i)for(o=1;o<t.length+1;++o)e[i-1]===t[o-1]?s[i][o]=s[i-1][o-1]+1:s[i][o]=Math.max(s[i-1][o],s[i][o-1]);return s[e.length][t.length]-Math.sqrt(r)}(i,e.name);t>=i.length/2&&o.push({property:e.name,score:t})})),o.sort((function(e,t){return t.score-e.score||e.property.localeCompare(t.property)}));for(var s=3,a=0,l=o;a<l.length;a++){var c=l[a].property,d=Ui("css.codeaction.rename","Rename to '{0}'",c),p=kn.replace(n.range,c),h=On.create(e.uri,e.version),m={documentChanges:[Cn.create(h,[p])]},u=or.create(d,m,rr.QuickFix);if(u.diagnostics=[n],r.push(u),--s<=0)return}},e.prototype.appendFixesForMarker=function(e,t,n,r){if(n.code===Oi.UnknownProperty.id)for(var i=e.offsetAt(n.range.start),o=e.offsetAt(n.range.end),s=ae(t,i),a=s.length-1;a>=0;a--){var l=s[a];if(l instanceof Se){var c=l.getProperty();if(c&&c.offset===i&&c.end===o)return void this.getFixesForUnknownProperty(e,c,n,r)}}}}(),function(e){this.fullPropertyName=e.getFullPropertyName().toLowerCase(),this.node=e});function Vi(e,t,n,r){var i=e[t];i.value=n,n&&(sn(i.properties,r)||i.properties.push(r))}function Bi(e,t,n,r){"top"===t||"right"===t||"bottom"===t||"left"===t?Vi(e,t,n,r):function(e,t,n){Vi(e,"top",t,n),Vi(e,"right",t,n),Vi(e,"bottom",t,n),Vi(e,"left",t,n)}(e,n,r)}function $i(e,t,n){switch(t.length){case 1:Bi(e,void 0,t[0],n);break;case 2:Bi(e,"top",t[0],n),Bi(e,"bottom",t[0],n),Bi(e,"right",t[1],n),Bi(e,"left",t[1],n);break;case 3:Bi(e,"top",t[0],n),Bi(e,"right",t[1],n),Bi(e,"left",t[1],n),Bi(e,"bottom",t[2],n);break;case 4:Bi(e,"top",t[0],n),Bi(e,"right",t[1],n),Bi(e,"bottom",t[2],n),Bi(e,"left",t[3],n)}}function qi(e,t){for(var n=0,r=t;n<r.length;n++){var i=r[n];if(e.matches(i))return!0}return!1}function Ki(e,t){return void 0===t&&(t=!0),!(t&&qi(e,["initial","unset"])||0===parseFloat(e.getText()))}function Gi(e,t){return void 0===t&&(t=!0),e.map((function(e){return Ki(e,t)}))}function Hi(e,t){return void 0===t&&(t=!0),!(qi(e,["none","hidden"])||t&&qi(e,["initial","unset"]))}function Ji(e,t){return void 0===t&&(t=!0),e.map((function(e){return Hi(e,t)}))}function Yi(e){var t=e.getChildren();if(1===t.length)return Ki(i=t[0])&&Hi(i);for(var n=0,r=t;n<r.length;n++){var i;if(!Ki(i=r[n],!1)||!Hi(i,!1))return!1}return!0}var Xi=Ct(),Zi=function(){function e(){this.data={}}return e.prototype.add=function(e,t,n){var r=this.data[e];r||(r={nodes:[],names:[]},this.data[e]=r),r.names.push(t),n&&r.nodes.push(n)},e}(),Qi=function(){function e(e,t,n){var r=this;this.cssDataManager=n,this.warnings=[],this.settings=t,this.documentText=e.getText(),this.keyframes=new Zi,this.validProperties={};var i=t.getSetting(Wi.ValidProperties);Array.isArray(i)&&i.forEach((function(e){if("string"==typeof e){var t=e.trim().toLowerCase();t.length&&(r.validProperties[t]=!0)}}))}return e.entries=function(t,n,r,i,o){var s=new e(n,r,i);return t.acceptVisitor(s),s.completeValidations(),s.getEntries(o)},e.prototype.isValidPropertyDeclaration=function(e){var t=e.fullPropertyName;return this.validProperties[t]},e.prototype.fetch=function(e,t){for(var n=[],r=0,i=e;r<i.length;r++){var o=i[r];o.fullPropertyName===t&&n.push(o)}return n},e.prototype.fetchWithValue=function(e,t,n){for(var r=[],i=0,o=e;i<o.length;i++){var s=o[i];if(s.fullPropertyName===t){var a=s.node.getValue();a&&this.findValueInExpression(a,n)&&r.push(s)}}return r},e.prototype.findValueInExpression=function(e,t){var n=!1;return e.accept((function(e){return e.type===ne.Identifier&&e.matches(t)&&(n=!0),!n})),n},e.prototype.getEntries=function(e){return void 0===e&&(e=le.Warning|le.Error),this.warnings.filter((function(t){return 0!=(t.getLevel()&e)}))},e.prototype.addEntry=function(e,t,n){var r=new wt(e,t,this.settings.getRule(t),n);this.warnings.push(r)},e.prototype.getMissingNames=function(e,t){for(var n=e.slice(0),r=0;r<t.length;r++){var i=n.indexOf(t[r]);-1!==i&&(n[i]=null)}var o=null;for(r=0;r<n.length;r++){var s=n[r];s&&(o=null===o?Xi("namelist.single","'{0}'",s):Xi("namelist.concatenated","{0}, '{1}'",o,s))}return o},e.prototype.visitNode=function(e){switch(e.type){case ne.UnknownAtRule:return this.visitUnknownAtRule(e);case ne.Keyframe:return this.visitKeyframe(e);case ne.FontFace:return this.visitFontFace(e);case ne.Ruleset:return this.visitRuleSet(e);case ne.SimpleSelector:return this.visitSimpleSelector(e);case ne.Function:return this.visitFunction(e);case ne.NumericValue:return this.visitNumericValue(e);case ne.Import:return this.visitImport(e);case ne.HexColorValue:return this.visitHexColorValue(e);case ne.Prio:return this.visitPrio(e)}return!0},e.prototype.completeValidations=function(){this.validateKeyframes()},e.prototype.visitUnknownAtRule=function(e){var t=e.getChild(0);return!!t&&!this.cssDataManager.getAtDirective(t.getText())&&(this.addEntry(t,Oi.UnknownAtRules,"Unknown at rule "+t.getText()),!0)},e.prototype.visitKeyframe=function(e){var t=e.getKeyword();if(!t)return!1;var n=t.getText();return this.keyframes.add(e.getName(),n,"@keyframes"!==n?t:null),!0},e.prototype.validateKeyframes=function(){var e=["@-webkit-keyframes","@-moz-keyframes","@-o-keyframes"];for(var t in this.keyframes.data){var n=this.keyframes.data[t].names,r=-1===n.indexOf("@keyframes");if(r||1!==n.length){var i=this.getMissingNames(e,n);if(i||r)for(var o=0,s=this.keyframes.data[t].nodes;o<s.length;o++){var a=s[o];if(r){var l=Xi("keyframes.standardrule.missing","Always define standard rule '@keyframes' when defining keyframes.");this.addEntry(a,Oi.IncludeStandardPropertyWhenUsingVendorPrefix,l)}i&&(l=Xi("keyframes.vendorspecific.missing","Always include all vendor specific rules: Missing: {0}",i),this.addEntry(a,Oi.AllVendorPrefixes,l))}}}return!0},e.prototype.visitSimpleSelector=function(e){var t=this.documentText.charAt(e.offset);return 1===e.length&&"*"===t&&this.addEntry(e,Oi.UniversalSelector),"#"===t&&this.addEntry(e,Oi.AvoidIdSelector),!0},e.prototype.visitImport=function(e){return this.addEntry(e,Oi.ImportStatemement),!0},e.prototype.visitRuleSet=function(t){var n=t.getDeclarations();if(!n)return!1;n.hasChildren()||this.addEntry(t.getSelectors(),Oi.EmptyRuleSet);for(var r=[],i=0,o=n.getChildren();i<o.length;i++)(k=o[i])instanceof Se&&r.push(new ji(k));var s=function(e){for(var t={top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}},n=0,r=e;n<r.length;n++){var i=r[n],o=i.node.value;if(void 0!==o)switch(i.fullPropertyName){case"box-sizing":return{top:{value:!1,properties:[]},right:{value:!1,properties:[]},bottom:{value:!1,properties:[]},left:{value:!1,properties:[]}};case"width":t.width=i;break;case"height":t.height=i;break;default:var s=i.fullPropertyName.split("-");switch(s[0]){case"border":switch(s[1]){case void 0:case"top":case"right":case"bottom":case"left":switch(s[2]){case void 0:Bi(t,s[1],Yi(o),i);break;case"width":Bi(t,s[1],Ki(o,!1),i);break;case"style":Bi(t,s[1],Hi(o,!0),i)}break;case"width":$i(t,Gi(o.getChildren(),!1),i);break;case"style":$i(t,Ji(o.getChildren(),!0),i)}break;case"padding":1===s.length?$i(t,Gi(o.getChildren(),!0),i):Bi(t,s[1],Ki(o,!0),i)}}}return t}(r);if(s.width){var a=[];if(s.right.value&&(a=an(a,s.right.properties)),s.left.value&&(a=an(a,s.left.properties)),0!==a.length){for(var l=0,c=a;l<c.length;l++){var d=c[l];this.addEntry(d.node,Oi.BewareOfBoxModelSize)}this.addEntry(s.width.node,Oi.BewareOfBoxModelSize)}}if(s.height&&(a=[],s.top.value&&(a=an(a,s.top.properties)),s.bottom.value&&(a=an(a,s.bottom.properties)),0!==a.length)){for(var p=0,h=a;p<h.length;p++)d=h[p],this.addEntry(d.node,Oi.BewareOfBoxModelSize);this.addEntry(s.height.node,Oi.BewareOfBoxModelSize)}var m=this.fetchWithValue(r,"display","inline");if(m.length>0)for(var u=0,f=["width","height","margin-top","margin-bottom","float"];u<f.length;u++)for(var g=f[u],b=this.fetch(r,g),v=0;v<b.length;v++){var y=b[v].node,w=y.getValue();("float"!==g||w&&!w.matches("none"))&&this.addEntry(y,Oi.PropertyIgnoredDueToDisplay,Xi("rule.propertyIgnoredDueToDisplayInline","Property is ignored due to the display. With 'display: inline', the width, height, margin-top, margin-bottom, and float properties have no effect."))}if((m=this.fetchWithValue(r,"display","inline-block")).length>0)for(b=this.fetch(r,"float"),v=0;v<b.length;v++){var x=b[v].node;(w=x.getValue())&&!w.matches("none")&&this.addEntry(x,Oi.PropertyIgnoredDueToDisplay,Xi("rule.propertyIgnoredDueToDisplayInlineBlock","inline-block is ignored due to the float. If 'float' has a value other than 'none', the box is floated and 'display' is treated as 'block'"))}if((m=this.fetchWithValue(r,"display","block")).length>0)for(b=this.fetch(r,"vertical-align"),v=0;v<b.length;v++)this.addEntry(b[v].node,Oi.PropertyIgnoredDueToDisplay,Xi("rule.propertyIgnoredDueToDisplayBlock","Property is ignored due to the display. With 'display: block', vertical-align should not be used."));var S=this.fetch(r,"float");for(v=0;v<S.length;v++){var k=S[v];this.isValidPropertyDeclaration(k)||this.addEntry(k.node,Oi.AvoidFloat)}for(var C=0;C<r.length;C++)if("background"!==(k=r[C]).fullPropertyName&&!this.validProperties[k.fullPropertyName]&&(w=k.node.getValue())&&"-"!==this.documentText.charAt(w.offset)){var F=this.fetch(r,k.fullPropertyName);if(F.length>1)for(var z=0;z<F.length;z++){var E=F[z].node.getValue();E&&"-"!==this.documentText.charAt(E.offset)&&F[z]!==k&&this.addEntry(k.node,Oi.DuplicateDeclarations)}}if(!t.getSelectors().matches(":export")){for(var D=new Zi,T=!1,R=0,I=r;R<I.length;R++){var M=(k=I[R]).node;if(this.isCSSDeclaration(M)){var P=k.fullPropertyName,_=P.charAt(0);if("-"===_){if("-"!==P.charAt(1)){this.cssDataManager.isKnownProperty(P)||this.validProperties[P]||this.addEntry(M.getProperty(),Oi.UnknownVendorSpecificProperty);var N=M.getNonPrefixedPropertyName();D.add(N,P,M.getProperty())}}else{var A=P;"*"!==_&&"_"!==_||(this.addEntry(M.getProperty(),Oi.IEStarHack),P=P.substr(1)),this.cssDataManager.isKnownProperty(A)||this.cssDataManager.isKnownProperty(P)||this.validProperties[P]||this.addEntry(M.getProperty(),Oi.UnknownProperty,Xi("property.unknownproperty.detailed","Unknown property: '{0}'",M.getFullPropertyName())),D.add(P,P,null)}}else T=!0}if(!T)for(var O in D.data){var W=D.data[O],L=W.names,U=this.cssDataManager.isStandardProperty(O)&&-1===L.indexOf(O);if(U||1!==L.length){for(var j=[],V=(C=0,e.prefixes.length);C<V;C++){var B=e.prefixes[C];this.cssDataManager.isStandardProperty(B+O)&&j.push(B+O)}var $=this.getMissingNames(j,L);if($||U)for(var q=0,K=W.nodes;q<K.length;q++){var G=K[q];if(U){var H=Xi("property.standard.missing","Also define the standard property '{0}' for compatibility",O);this.addEntry(G,Oi.IncludeStandardPropertyWhenUsingVendorPrefix,H)}$&&(H=Xi("property.vendorspecific.missing","Always include all vendor specific properties: Missing: {0}",$),this.addEntry(G,Oi.AllVendorPrefixes,H))}}}}return!0},e.prototype.visitPrio=function(e){return this.addEntry(e,Oi.AvoidImportant),!0},e.prototype.visitNumericValue=function(e){var t=e.findParent(ne.Function);if(t&&"calc"===t.getName())return!0;var n=e.findParent(ne.Declaration);if(n&&n.getValue()){var r=e.getValue();if(!r.unit||-1===Zt.length.indexOf(r.unit.toLowerCase()))return!0;0===parseFloat(r.value)&&r.unit&&!this.validProperties[n.getFullPropertyName()]&&this.addEntry(e,Oi.ZeroWithUnit)}return!0},e.prototype.visitFontFace=function(e){var t=e.getDeclarations();if(!t)return!1;for(var n=!1,r=!1,i=!1,o=0,s=t.getChildren();o<s.length;o++){var a=s[o];if(this.isCSSDeclaration(a)){var l=a.getProperty().getName().toLowerCase();"src"===l&&(n=!0),"font-family"===l&&(r=!0)}else i=!0}return i||n&&r||this.addEntry(e,Oi.RequiredPropertiesForFontFace),!0},e.prototype.isCSSDeclaration=function(e){if(e instanceof Se){if(!e.getValue())return!1;var t=e.getProperty();if(!t)return!1;var n=t.getIdentifier();return!(!n||n.containsInterpolation())}return!1},e.prototype.visitHexColorValue=function(e){var t=e.length;return 9!==t&&7!==t&&5!==t&&4!==t&&this.addEntry(e,Oi.HexColorLength),!1},e.prototype.visitFunction=function(e){var t=e.getName().toLowerCase(),n=-1,r=0;switch(t){case"rgb(":case"hsl(":n=3;break;case"rgba(":case"hsla(":n=4}return-1!==n&&(e.getArguments().accept((function(e){return!(e instanceof Qe&&(r+=1,1))})),r!==n&&this.addEntry(e,Oi.ArgsInColorFunction)),!0},e.prefixes=["-ms-","-moz-","-o-","-webkit-"],e}(),eo=(function(){function e(e){this.cssDataManager=e}e.prototype.configure=function(e){this.settings=e},e.prototype.doValidation=function(e,t,n){if(void 0===n&&(n=this.settings),n&&!1===n.validate)return[];var r=[];r.push.apply(r,xt.entries(t)),r.push.apply(r,Qi.entries(t,e,new Li(n&&n.lint),this.cssDataManager));var i=[];for(var o in Oi)i.push(Oi[o].id);return r.filter((function(e){return e.getLevel()!==le.Ignore})).map((function(t){var n=cn.create(e.positionAt(t.getOffset()),e.positionAt(t.getOffset()+t.getLength())),r=e.languageId;return{code:t.getRule().id,source:r,message:t.getMessage(),severity:t.getLevel()===le.Warning?vn.Warning:vn.Error,range:n}}))}}(),function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),to="/".charCodeAt(0),no="\n".charCodeAt(0),ro="\r".charCodeAt(0),io="\f".charCodeAt(0),oo="$".charCodeAt(0),so="#".charCodeAt(0),ao="{".charCodeAt(0),lo="=".charCodeAt(0),co="!".charCodeAt(0),po="<".charCodeAt(0),ho=">".charCodeAt(0),mo=".".charCodeAt(0),uo=("@".charCodeAt(0),r.CustomToken),fo=uo++,go=uo++,bo=(uo++,uo++),vo=uo++,yo=uo++,wo=uo++,xo=uo++,So=(uo++,function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return eo(t,e),t.prototype.scanNext=function(t){if(this.stream.advanceIfChar(oo)){var n=["$"];if(this.ident(n))return this.finishToken(t,fo,n.join(""));this.stream.goBackTo(t)}return this.stream.advanceIfChars([so,ao])?this.finishToken(t,go):this.stream.advanceIfChars([lo,lo])?this.finishToken(t,bo):this.stream.advanceIfChars([co,lo])?this.finishToken(t,vo):this.stream.advanceIfChar(po)?this.stream.advanceIfChar(lo)?this.finishToken(t,wo):this.finishToken(t,r.Delim):this.stream.advanceIfChar(ho)?this.stream.advanceIfChar(lo)?this.finishToken(t,yo):this.finishToken(t,r.Delim):this.stream.advanceIfChars([mo,mo,mo])?this.finishToken(t,xo):e.prototype.scanNext.call(this,t)},t.prototype.comment=function(){return!!e.prototype.comment.call(this)||!(this.inURL||!this.stream.advanceIfChars([to,to]))&&(this.stream.advanceWhileChar((function(e){switch(e){case no:case ro:case io:return!1;default:return!0}})),!0)},t}(X)),ko=Ct(),Co=function(e,t){this.id=e,this.message=t},Fo={FromExpected:new Co("scss-fromexpected",ko("expected.from","'from' expected")),ThroughOrToExpected:new Co("scss-throughexpected",ko("expected.through","'through' or 'to' expected")),InExpected:new Co("scss-fromexpected",ko("expected.in","'in' expected"))},zo=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Eo=(function(e){function t(){return e.call(this,new So)||this}zo(t,e),t.prototype._parseStylesheetStatement=function(t){return void 0===t&&(t=!1),this.peek(r.AtKeyword)?this._parseWarnAndDebug()||this._parseControlStatement()||this._parseMixinDeclaration()||this._parseMixinContent()||this._parseMixinReference()||this._parseFunctionDeclaration()||this._parseForward()||this._parseUse()||this._parseRuleset(t)||e.prototype._parseStylesheetAtStatement.call(this,t):this._parseRuleset(!0)||this._parseVariableDeclaration()},t.prototype._parseImport=function(){if(!this.peekKeyword("@import"))return null;var e=this.create(We);if(this.consumeToken(),!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))return this.finish(e,Et.URIOrStringExpected);for(;this.accept(r.Comma);)if(!e.addChild(this._parseURILiteral())&&!e.addChild(this._parseStringLiteral()))return this.finish(e,Et.URIOrStringExpected);return this.peek(r.SemiColon)||this.peek(r.EOF)||e.setMedialist(this._parseMediaQueryList()),this.finish(e)},t.prototype._parseVariableDeclaration=function(e){if(void 0===e&&(e=[]),!this.peek(fo))return null;var t=this.create(at);if(!t.setVariable(this._parseVariable()))return null;if(!this.accept(r.Colon))return this.finish(t,Et.ColonExpected);if(this.prevToken&&(t.colonPosition=this.prevToken.offset),!t.setValue(this._parseExpr()))return this.finish(t,Et.VariableValueExpected,[],e);for(;this.peek(r.Exclamation);)if(t.addChild(this._tryParsePrio()));else{if(this.consumeToken(),!this.peekRegExp(r.Ident,/^(default|global)$/))return this.finish(t,Et.UnknownKeyword);this.consumeToken()}return this.peek(r.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)},t.prototype._parseMediaContentStart=function(){return this._parseInterpolation()},t.prototype._parseMediaFeatureName=function(){return this._parseModuleMember()||this._parseFunction()||this._parseIdent()||this._parseVariable()},t.prototype._parseKeyframeSelector=function(){return this._tryParseKeyframeSelector()||this._parseControlStatement(this._parseKeyframeSelector.bind(this))||this._parseVariableDeclaration()||this._parseMixinContent()},t.prototype._parseVariable=function(){if(!this.peek(fo))return null;var e=this.create(ct);return this.consumeToken(),e},t.prototype._parseModuleMember=function(){var e=this.mark(),t=this.create(yt);return t.setIdentifier(this._parseIdent([re.Module]))?this.hasWhitespace()||!this.acceptDelim(".")||this.hasWhitespace()?(this.restoreAtMark(e),null):t.addChild(this._parseVariable()||this._parseFunction())?t:this.finish(t,Et.IdentifierOrVariableExpected):null},t.prototype._parseIdent=function(e){var t=this;if(!this.peek(r.Ident)&&!this.peek(go)&&!this.peekDelim("-"))return null;var n=this.create(pe);n.referenceTypes=e,n.isCustomProperty=this.peekRegExp(r.Ident,/^--/);for(var i,o=!1;(this.accept(r.Ident)||n.addChild((void 0,i=t.mark(),t.acceptDelim("-")&&(t.hasWhitespace()||t.acceptDelim("-"),t.hasWhitespace())?(t.restoreAtMark(i),null):t._parseInterpolation()))||o&&this.acceptRegexp(/[\w-]/))&&(o=!0,!this.hasWhitespace()););return o?this.finish(n):null},t.prototype._parseTermExpression=function(){return this._parseModuleMember()||this._parseVariable()||this._parseSelectorCombinator()||e.prototype._parseTermExpression.call(this)},t.prototype._parseInterpolation=function(){if(this.peek(go)){var e=this.create(lt);return this.consumeToken(),e.addChild(this._parseExpr())||this._parseSelectorCombinator()?this.accept(r.CurlyR)?this.finish(e):this.finish(e,Et.RightCurlyExpected):this.accept(r.CurlyR)?this.finish(e):this.finish(e,Et.ExpressionExpected)}return null},t.prototype._parseOperator=function(){if(this.peek(bo)||this.peek(vo)||this.peek(yo)||this.peek(wo)||this.peekDelim(">")||this.peekDelim("<")||this.peekIdent("and")||this.peekIdent("or")||this.peekDelim("%")){var t=this.createNode(ne.Operator);return this.consumeToken(),this.finish(t)}return e.prototype._parseOperator.call(this)},t.prototype._parseUnaryOperator=function(){if(this.peekIdent("not")){var t=this.create(ce);return this.consumeToken(),this.finish(t)}return e.prototype._parseUnaryOperator.call(this)},t.prototype._parseRuleSetDeclaration=function(){return this.peek(r.AtKeyword)?this._parseKeyframe()||this._parseImport()||this._parseMedia(!0)||this._parseFontFace()||this._parseWarnAndDebug()||this._parseControlStatement()||this._parseFunctionDeclaration()||this._parseExtends()||this._parseMixinReference()||this._parseMixinContent()||this._parseMixinDeclaration()||this._parseRuleset(!0)||this._parseSupports(!0)||e.prototype._parseRuleSetDeclarationAtStatement.call(this):this._parseVariableDeclaration()||this._tryParseRuleset(!0)||e.prototype._parseRuleSetDeclaration.call(this)},t.prototype._parseDeclaration=function(e){var t=this.create(Se);if(!t.setProperty(this._parseProperty()))return null;if(!this.accept(r.Colon))return this.finish(t,Et.ColonExpected,[r.Colon],e);this.prevToken&&(t.colonPosition=this.prevToken.offset);var n=!1;if(t.setValue(this._parseExpr())&&(n=!0,t.addChild(this._parsePrio())),this.peek(r.CurlyL))t.setNestedProperties(this._parseNestedProperties());else if(!n)return this.finish(t,Et.PropertyValueExpected);return this.peek(r.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)},t.prototype._parseNestedProperties=function(){var e=this.create(Ne);return this._parseBody(e,this._parseDeclaration.bind(this))},t.prototype._parseExtends=function(){if(this.peekKeyword("@extend")){var e=this.create(dt);if(this.consumeToken(),!e.getSelectors().addChild(this._parseSimpleSelector()))return this.finish(e,Et.SelectorExpected);for(;this.accept(r.Comma);)e.getSelectors().addChild(this._parseSimpleSelector());return this.accept(r.Exclamation)&&!this.acceptIdent("optional")?this.finish(e,Et.UnknownKeyword):this.finish(e)}return null},t.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||this._parseSelectorPlaceholder()||e.prototype._parseSimpleSelectorBody.call(this)},t.prototype._parseSelectorCombinator=function(){if(this.peekDelim("&")){var e=this.createNode(ne.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(r.Num)||this.accept(r.Dimension)||e.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(e)}return null},t.prototype._parseSelectorPlaceholder=function(){if(this.peekDelim("%")){var e=this.createNode(ne.SelectorPlaceholder);return this.consumeToken(),this._parseIdent(),this.finish(e)}return this.peekKeyword("@at-root")?(e=this.createNode(ne.SelectorPlaceholder),this.consumeToken(),this.finish(e)):null},t.prototype._parseElementName=function(){var t=this.mark(),n=e.prototype._parseElementName.call(this);return n&&!this.hasWhitespace()&&this.peek(r.ParenthesisL)?(this.restoreAtMark(t),null):n},t.prototype._tryParsePseudoIdentifier=function(){return this._parseInterpolation()||e.prototype._tryParsePseudoIdentifier.call(this)},t.prototype._parseWarnAndDebug=function(){if(!this.peekKeyword("@debug")&&!this.peekKeyword("@warn")&&!this.peekKeyword("@error"))return null;var e=this.createNode(ne.Debug);return this.consumeToken(),e.addChild(this._parseExpr()),this.finish(e)},t.prototype._parseControlStatement=function(e){return void 0===e&&(e=this._parseRuleSetDeclaration.bind(this)),this.peek(r.AtKeyword)?this._parseIfStatement(e)||this._parseForStatement(e)||this._parseEachStatement(e)||this._parseWhileStatement(e):null},t.prototype._parseIfStatement=function(e){return this.peekKeyword("@if")?this._internalParseIfStatement(e):null},t.prototype._internalParseIfStatement=function(e){var t=this.create(Ee);if(this.consumeToken(),!t.setExpression(this._parseExpr(!0)))return this.finish(t,Et.ExpressionExpected);if(this._parseBody(t,e),this.acceptKeyword("@else"))if(this.peekIdent("if"))t.setElseClause(this._internalParseIfStatement(e));else if(this.peek(r.CurlyL)){var n=this.create(Ie);this._parseBody(n,e),t.setElseClause(n)}return this.finish(t)},t.prototype._parseForStatement=function(e){if(!this.peekKeyword("@for"))return null;var t=this.create(De);return this.consumeToken(),t.setVariable(this._parseVariable())?this.acceptIdent("from")?t.addChild(this._parseBinaryExpr())?this.acceptIdent("to")||this.acceptIdent("through")?t.addChild(this._parseBinaryExpr())?this._parseBody(t,e):this.finish(t,Et.ExpressionExpected,[r.CurlyR]):this.finish(t,Fo.ThroughOrToExpected,[r.CurlyR]):this.finish(t,Et.ExpressionExpected,[r.CurlyR]):this.finish(t,Fo.FromExpected,[r.CurlyR]):this.finish(t,Et.VariableNameExpected,[r.CurlyR])},t.prototype._parseEachStatement=function(e){if(!this.peekKeyword("@each"))return null;var t=this.create(Te);this.consumeToken();var n=t.getVariables();if(!n.addChild(this._parseVariable()))return this.finish(t,Et.VariableNameExpected,[r.CurlyR]);for(;this.accept(r.Comma);)if(!n.addChild(this._parseVariable()))return this.finish(t,Et.VariableNameExpected,[r.CurlyR]);return this.finish(n),this.acceptIdent("in")?t.addChild(this._parseExpr())?this._parseBody(t,e):this.finish(t,Et.ExpressionExpected,[r.CurlyR]):this.finish(t,Fo.InExpected,[r.CurlyR])},t.prototype._parseWhileStatement=function(e){if(!this.peekKeyword("@while"))return null;var t=this.create(Re);return this.consumeToken(),t.addChild(this._parseBinaryExpr())?this._parseBody(t,e):this.finish(t,Et.ExpressionExpected,[r.CurlyR])},t.prototype._parseFunctionBodyDeclaration=function(){return this._parseVariableDeclaration()||this._parseReturnStatement()||this._parseWarnAndDebug()||this._parseControlStatement(this._parseFunctionBodyDeclaration.bind(this))},t.prototype._parseFunctionDeclaration=function(){if(!this.peekKeyword("@function"))return null;var e=this.create(Me);if(this.consumeToken(),!e.setIdentifier(this._parseIdent([re.Function])))return this.finish(e,Et.IdentifierExpected,[r.CurlyR]);if(!this.accept(r.ParenthesisL))return this.finish(e,Et.LeftParenthesisExpected,[r.CurlyR]);if(e.getParameters().addChild(this._parseParameterDeclaration()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,Et.VariableNameExpected);return this.accept(r.ParenthesisR)?this._parseBody(e,this._parseFunctionBodyDeclaration.bind(this)):this.finish(e,Et.RightParenthesisExpected,[r.CurlyR])},t.prototype._parseReturnStatement=function(){if(!this.peekKeyword("@return"))return null;var e=this.createNode(ne.ReturnStatement);return this.consumeToken(),e.addChild(this._parseExpr())?this.finish(e):this.finish(e,Et.ExpressionExpected)},t.prototype._parseMixinDeclaration=function(){if(!this.peekKeyword("@mixin"))return null;var e=this.create(ut);if(this.consumeToken(),!e.setIdentifier(this._parseIdent([re.Mixin])))return this.finish(e,Et.IdentifierExpected,[r.CurlyR]);if(this.accept(r.ParenthesisL)){if(e.getParameters().addChild(this._parseParameterDeclaration()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,Et.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,Et.RightParenthesisExpected,[r.CurlyR])}return this._parseBody(e,this._parseRuleSetDeclaration.bind(this))},t.prototype._parseParameterDeclaration=function(){var e=this.create(Fe);return e.setIdentifier(this._parseVariable())?(this.accept(xo),this.accept(r.Colon)&&!e.setDefaultValue(this._parseExpr(!0))?this.finish(e,Et.VariableValueExpected,[],[r.Comma,r.ParenthesisR]):this.finish(e)):null},t.prototype._parseMixinContent=function(){if(!this.peekKeyword("@content"))return null;var e=this.create(pt);if(this.consumeToken(),this.accept(r.ParenthesisL)){if(e.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getArguments().addChild(this._parseFunctionArgument()))return this.finish(e,Et.ExpressionExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,Et.RightParenthesisExpected)}return this.finish(e)},t.prototype._parseMixinReference=function(){if(!this.peekKeyword("@include"))return null;var e=this.create(mt);this.consumeToken();var t=this._parseIdent([re.Mixin]);if(!e.setIdentifier(t))return this.finish(e,Et.IdentifierExpected,[r.CurlyR]);if(!this.hasWhitespace()&&this.acceptDelim(".")&&!this.hasWhitespace()){var n=this._parseIdent([re.Mixin]);if(!n)return this.finish(e,Et.IdentifierExpected,[r.CurlyR]);var i=this.create(yt);t.referenceTypes=[re.Module],i.setIdentifier(t),e.setIdentifier(n),e.addChild(i)}if(this.accept(r.ParenthesisL)){if(e.getArguments().addChild(this._parseFunctionArgument()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getArguments().addChild(this._parseFunctionArgument()))return this.finish(e,Et.ExpressionExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,Et.RightParenthesisExpected)}return(this.peekIdent("using")||this.peek(r.CurlyL))&&e.setContent(this._parseMixinContentDeclaration()),this.finish(e)},t.prototype._parseMixinContentDeclaration=function(){var e=this.create(ht);if(this.acceptIdent("using")){if(!this.accept(r.ParenthesisL))return this.finish(e,Et.LeftParenthesisExpected,[r.CurlyL]);if(e.getParameters().addChild(this._parseParameterDeclaration()))for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseParameterDeclaration()))return this.finish(e,Et.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,Et.RightParenthesisExpected,[r.CurlyL])}return this.peek(r.CurlyL)&&this._parseBody(e,this._parseMixinReferenceBodyStatement.bind(this)),this.finish(e)},t.prototype._parseMixinReferenceBodyStatement=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},t.prototype._parseFunctionArgument=function(){var e=this.create(ze),t=this.mark(),n=this._parseVariable();if(n)if(this.accept(r.Colon))e.setIdentifier(n);else{if(this.accept(xo))return e.setValue(n),this.finish(e);this.restoreAtMark(t)}return e.setValue(this._parseExpr(!0))?(this.accept(xo),e.addChild(this._parsePrio()),this.finish(e)):e.setValue(this._tryParsePrio())?this.finish(e):null},t.prototype._parseURLArgument=function(){var t=this.mark(),n=e.prototype._parseURLArgument.call(this);if(!n||!this.peek(r.ParenthesisR)){this.restoreAtMark(t);var i=this.create(ce);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return n},t.prototype._parseOperation=function(){if(!this.peek(r.ParenthesisL))return null;var e=this.create(ce);for(this.consumeToken();e.addChild(this._parseListElement());)this.accept(r.Comma);return this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,Et.RightParenthesisExpected)},t.prototype._parseListElement=function(){var e=this.create(gt),t=this._parseBinaryExpr();if(!t)return null;if(this.accept(r.Colon)){if(e.setKey(t),!e.setValue(this._parseBinaryExpr()))return this.finish(e,Et.ExpressionExpected)}else e.setValue(t);return this.finish(e)},t.prototype._parseUse=function(){if(!this.peekKeyword("@use"))return null;var e=this.create(Le);if(this.consumeToken(),!e.addChild(this._parseStringLiteral()))return this.finish(e,Et.StringLiteralExpected);if(!this.peek(r.SemiColon)&&!this.peek(r.EOF)){if(!this.peekRegExp(r.Ident,/as|with/))return this.finish(e,Et.UnknownKeyword);if(this.acceptIdent("as")&&!e.setIdentifier(this._parseIdent([re.Module]))&&!this.acceptDelim("*"))return this.finish(e,Et.IdentifierOrWildcardExpected);if(this.acceptIdent("with")){if(!this.accept(r.ParenthesisL))return this.finish(e,Et.LeftParenthesisExpected,[r.ParenthesisR]);if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,Et.VariableNameExpected);for(;this.accept(r.Comma)&&!this.peek(r.ParenthesisR);)if(!e.getParameters().addChild(this._parseModuleConfigDeclaration()))return this.finish(e,Et.VariableNameExpected);if(!this.accept(r.ParenthesisR))return this.finish(e,Et.RightParenthesisExpected)}}return this.accept(r.SemiColon)||this.accept(r.EOF)?this.finish(e):this.finish(e,Et.SemiColonExpected)},t.prototype._parseModuleConfigDeclaration=function(){var e=this.create(Ue);return e.setIdentifier(this._parseVariable())?this.accept(r.Colon)&&e.setValue(this._parseExpr(!0))?this.finish(e):this.finish(e,Et.VariableValueExpected,[],[r.Comma,r.ParenthesisR]):null},t.prototype._parseForward=function(){if(!this.peekKeyword("@forward"))return null;var e=this.create(je);if(this.consumeToken(),!e.addChild(this._parseStringLiteral()))return this.finish(e,Et.StringLiteralExpected);if(!this.peek(r.SemiColon)&&!this.peek(r.EOF)){if(!this.peekRegExp(r.Ident,/as|hide|show/))return this.finish(e,Et.UnknownKeyword);if(this.acceptIdent("as")){var t=this._parseIdent([re.Forward]);if(!e.setIdentifier(t))return this.finish(e,Et.IdentifierExpected);if(this.hasWhitespace()||!this.acceptDelim("*"))return this.finish(e,Et.WildcardExpected)}if((this.peekIdent("hide")||this.peekIdent("show"))&&!e.addChild(this._parseForwardVisibility()))return this.finish(e,Et.IdentifierOrVariableExpected)}return this.accept(r.SemiColon)||this.accept(r.EOF)?this.finish(e):this.finish(e,Et.SemiColonExpected)},t.prototype._parseForwardVisibility=function(){var e=this.create(Ve);for(e.setIdentifier(this._parseIdent());e.addChild(this._parseVariable()||this._parseIdent()););return e.getChildren().length>1?e:null},t.prototype._parseSupportsCondition=function(){return this._parseInterpolation()||e.prototype._parseSupportsCondition.call(this)}}(on),function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),Do=Ct();function To(e){e.forEach((function(e){if(e.documentation&&e.references&&e.references.length>0){var t="string"==typeof e.documentation?{kind:"markdown",value:e.documentation}:{kind:"markdown",value:e.documentation.value};t.value+="\n\n",t.value+=e.references.map((function(e){return"["+e.name+"]("+e.url+")"})).join(" | "),e.documentation=t}}))}!function(e){function t(n,r){var i=e.call(this,"$",n,r)||this;return To(t.scssModuleLoaders),To(t.scssModuleBuiltIns),i}Eo(t,e),t.prototype.isImportPathParent=function(t){return t===ne.Forward||t===ne.Use||e.prototype.isImportPathParent.call(this,t)},t.prototype.getCompletionForImportPath=function(n,r){var i=n.getParent().type;if(i===ne.Forward||i===ne.Use)for(var o=0,s=t.scssModuleBuiltIns;o<s.length;o++){var a=s[o],l={label:a.label,documentation:a.documentation,textEdit:kn.replace(this.getCompletionRange(n),"'"+a.label+"'"),kind:jn.Module};r.items.push(l)}return e.prototype.getCompletionForImportPath.call(this,n,r)},t.prototype.createReplaceFunction=function(){var e=1;return function(n,r){return"\\"+r+": ${"+e+++":"+(t.variableDefaults[r]||"")+"}"}},t.prototype.createFunctionProposals=function(e,t,n,r){for(var i=0,o=e;i<o.length;i++){var s=o[i],a=s.func.replace(/\[?(\$\w+)\]?/g,this.createReplaceFunction()),l={label:s.func.substr(0,s.func.indexOf("(")),detail:s.func,documentation:s.desc,textEdit:kn.replace(this.getCompletionRange(t),a),insertTextFormat:Vn.Snippet,kind:jn.Function};n&&(l.sortText="z"),r.items.push(l)}return r},t.prototype.getCompletionsForSelector=function(n,r,i){return this.createFunctionProposals(t.selectorFuncs,null,!0,i),e.prototype.getCompletionsForSelector.call(this,n,r,i)},t.prototype.getTermProposals=function(n,r,i){var o=t.builtInFuncs;return n&&(o=o.filter((function(e){return!e.type||!n.restrictions||-1!==n.restrictions.indexOf(e.type)}))),this.createFunctionProposals(o,r,!0,i),e.prototype.getTermProposals.call(this,n,r,i)},t.prototype.getColorProposals=function(n,r,i){return this.createFunctionProposals(t.colorProposals,r,!1,i),e.prototype.getColorProposals.call(this,n,r,i)},t.prototype.getCompletionsForDeclarationProperty=function(t,n){return this.getCompletionForAtDirectives(n),this.getCompletionsForSelector(null,!0,n),e.prototype.getCompletionsForDeclarationProperty.call(this,t,n)},t.prototype.getCompletionsForExtendsReference=function(e,t,n){for(var r=0,i=this.getSymbolContext().findSymbolsAtOffset(this.offset,re.Rule);r<i.length;r++){var o=i[r],s={label:o.name,textEdit:kn.replace(this.getCompletionRange(t),o.name),kind:jn.Function};n.items.push(s)}return n},t.prototype.getCompletionForAtDirectives=function(e){var n;return(n=e.items).push.apply(n,t.scssAtDirectives),e},t.prototype.getCompletionForTopLevel=function(t){return this.getCompletionForAtDirectives(t),this.getCompletionForModuleLoaders(t),e.prototype.getCompletionForTopLevel.call(this,t),t},t.prototype.getCompletionForModuleLoaders=function(e){var n;return(n=e.items).push.apply(n,t.scssModuleLoaders),e},t.variableDefaults={$red:"1",$green:"2",$blue:"3",$alpha:"1.0",$color:"#000000",$weight:"0.5",$hue:"0",$saturation:"0%",$lightness:"0%",$degrees:"0",$amount:"0",$string:'""',$substring:'"s"',$number:"0",$limit:"1"},t.colorProposals=[{func:"red($color)",desc:Do("scss.builtin.red","Gets the red component of a color.")},{func:"green($color)",desc:Do("scss.builtin.green","Gets the green component of a color.")},{func:"blue($color)",desc:Do("scss.builtin.blue","Gets the blue component of a color.")},{func:"mix($color, $color, [$weight])",desc:Do("scss.builtin.mix","Mixes two colors together.")},{func:"hue($color)",desc:Do("scss.builtin.hue","Gets the hue component of a color.")},{func:"saturation($color)",desc:Do("scss.builtin.saturation","Gets the saturation component of a color.")},{func:"lightness($color)",desc:Do("scss.builtin.lightness","Gets the lightness component of a color.")},{func:"adjust-hue($color, $degrees)",desc:Do("scss.builtin.adjust-hue","Changes the hue of a color.")},{func:"lighten($color, $amount)",desc:Do("scss.builtin.lighten","Makes a color lighter.")},{func:"darken($color, $amount)",desc:Do("scss.builtin.darken","Makes a color darker.")},{func:"saturate($color, $amount)",desc:Do("scss.builtin.saturate","Makes a color more saturated.")},{func:"desaturate($color, $amount)",desc:Do("scss.builtin.desaturate","Makes a color less saturated.")},{func:"grayscale($color)",desc:Do("scss.builtin.grayscale","Converts a color to grayscale.")},{func:"complement($color)",desc:Do("scss.builtin.complement","Returns the complement of a color.")},{func:"invert($color)",desc:Do("scss.builtin.invert","Returns the inverse of a color.")},{func:"alpha($color)",desc:Do("scss.builtin.alpha","Gets the opacity component of a color.")},{func:"opacity($color)",desc:"Gets the alpha component (opacity) of a color."},{func:"rgba($color, $alpha)",desc:Do("scss.builtin.rgba","Changes the alpha component for a color.")},{func:"opacify($color, $amount)",desc:Do("scss.builtin.opacify","Makes a color more opaque.")},{func:"fade-in($color, $amount)",desc:Do("scss.builtin.fade-in","Makes a color more opaque.")},{func:"transparentize($color, $amount)",desc:Do("scss.builtin.transparentize","Makes a color more transparent.")},{func:"fade-out($color, $amount)",desc:Do("scss.builtin.fade-out","Makes a color more transparent.")},{func:"adjust-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])",desc:Do("scss.builtin.adjust-color","Increases or decreases one or more components of a color.")},{func:"scale-color($color, [$red], [$green], [$blue], [$saturation], [$lightness], [$alpha])",desc:Do("scss.builtin.scale-color","Fluidly scales one or more properties of a color.")},{func:"change-color($color, [$red], [$green], [$blue], [$hue], [$saturation], [$lightness], [$alpha])",desc:Do("scss.builtin.change-color","Changes one or more properties of a color.")},{func:"ie-hex-str($color)",desc:Do("scss.builtin.ie-hex-str","Converts a color into the format understood by IE filters.")}],t.selectorFuncs=[{func:"selector-nest($selectors…)",desc:Do("scss.builtin.selector-nest","Nests selector beneath one another like they would be nested in the stylesheet.")},{func:"selector-append($selectors…)",desc:Do("scss.builtin.selector-append","Appends selectors to one another without spaces in between.")},{func:"selector-extend($selector, $extendee, $extender)",desc:Do("scss.builtin.selector-extend","Extends $extendee with $extender within $selector.")},{func:"selector-replace($selector, $original, $replacement)",desc:Do("scss.builtin.selector-replace","Replaces $original with $replacement within $selector.")},{func:"selector-unify($selector1, $selector2)",desc:Do("scss.builtin.selector-unify","Unifies two selectors to produce a selector that matches elements matched by both.")},{func:"is-superselector($super, $sub)",desc:Do("scss.builtin.is-superselector","Returns whether $super matches all the elements $sub does, and possibly more.")},{func:"simple-selectors($selector)",desc:Do("scss.builtin.simple-selectors","Returns the simple selectors that comprise a compound selector.")},{func:"selector-parse($selector)",desc:Do("scss.builtin.selector-parse","Parses a selector into the format returned by &.")}],t.builtInFuncs=[{func:"unquote($string)",desc:Do("scss.builtin.unquote","Removes quotes from a string.")},{func:"quote($string)",desc:Do("scss.builtin.quote","Adds quotes to a string.")},{func:"str-length($string)",desc:Do("scss.builtin.str-length","Returns the number of characters in a string.")},{func:"str-insert($string, $insert, $index)",desc:Do("scss.builtin.str-insert","Inserts $insert into $string at $index.")},{func:"str-index($string, $substring)",desc:Do("scss.builtin.str-index","Returns the index of the first occurance of $substring in $string.")},{func:"str-slice($string, $start-at, [$end-at])",desc:Do("scss.builtin.str-slice","Extracts a substring from $string.")},{func:"to-upper-case($string)",desc:Do("scss.builtin.to-upper-case","Converts a string to upper case.")},{func:"to-lower-case($string)",desc:Do("scss.builtin.to-lower-case","Converts a string to lower case.")},{func:"percentage($number)",desc:Do("scss.builtin.percentage","Converts a unitless number to a percentage."),type:"percentage"},{func:"round($number)",desc:Do("scss.builtin.round","Rounds a number to the nearest whole number.")},{func:"ceil($number)",desc:Do("scss.builtin.ceil","Rounds a number up to the next whole number.")},{func:"floor($number)",desc:Do("scss.builtin.floor","Rounds a number down to the previous whole number.")},{func:"abs($number)",desc:Do("scss.builtin.abs","Returns the absolute value of a number.")},{func:"min($numbers)",desc:Do("scss.builtin.min","Finds the minimum of several numbers.")},{func:"max($numbers)",desc:Do("scss.builtin.max","Finds the maximum of several numbers.")},{func:"random([$limit])",desc:Do("scss.builtin.random","Returns a random number.")},{func:"length($list)",desc:Do("scss.builtin.length","Returns the length of a list.")},{func:"nth($list, $n)",desc:Do("scss.builtin.nth","Returns a specific item in a list.")},{func:"set-nth($list, $n, $value)",desc:Do("scss.builtin.set-nth","Replaces the nth item in a list.")},{func:"join($list1, $list2, [$separator])",desc:Do("scss.builtin.join","Joins together two lists into one.")},{func:"append($list1, $val, [$separator])",desc:Do("scss.builtin.append","Appends a single value onto the end of a list.")},{func:"zip($lists)",desc:Do("scss.builtin.zip","Combines several lists into a single multidimensional list.")},{func:"index($list, $value)",desc:Do("scss.builtin.index","Returns the position of a value within a list.")},{func:"list-separator(#list)",desc:Do("scss.builtin.list-separator","Returns the separator of a list.")},{func:"map-get($map, $key)",desc:Do("scss.builtin.map-get","Returns the value in a map associated with a given key.")},{func:"map-merge($map1, $map2)",desc:Do("scss.builtin.map-merge","Merges two maps together into a new map.")},{func:"map-remove($map, $keys)",desc:Do("scss.builtin.map-remove","Returns a new map with keys removed.")},{func:"map-keys($map)",desc:Do("scss.builtin.map-keys","Returns a list of all keys in a map.")},{func:"map-values($map)",desc:Do("scss.builtin.map-values","Returns a list of all values in a map.")},{func:"map-has-key($map, $key)",desc:Do("scss.builtin.map-has-key","Returns whether a map has a value associated with a given key.")},{func:"keywords($args)",desc:Do("scss.builtin.keywords","Returns the keywords passed to a function that takes variable arguments.")},{func:"feature-exists($feature)",desc:Do("scss.builtin.feature-exists","Returns whether a feature exists in the current Sass runtime.")},{func:"variable-exists($name)",desc:Do("scss.builtin.variable-exists","Returns whether a variable with the given name exists in the current scope.")},{func:"global-variable-exists($name)",desc:Do("scss.builtin.global-variable-exists","Returns whether a variable with the given name exists in the global scope.")},{func:"function-exists($name)",desc:Do("scss.builtin.function-exists","Returns whether a function with the given name exists.")},{func:"mixin-exists($name)",desc:Do("scss.builtin.mixin-exists","Returns whether a mixin with the given name exists.")},{func:"inspect($value)",desc:Do("scss.builtin.inspect","Returns the string representation of a value as it would be represented in Sass.")},{func:"type-of($value)",desc:Do("scss.builtin.type-of","Returns the type of a value.")},{func:"unit($number)",desc:Do("scss.builtin.unit","Returns the unit(s) associated with a number.")},{func:"unitless($number)",desc:Do("scss.builtin.unitless","Returns whether a number has units.")},{func:"comparable($number1, $number2)",desc:Do("scss.builtin.comparable","Returns whether two numbers can be added, subtracted, or compared.")},{func:"call($name, $args…)",desc:Do("scss.builtin.call","Dynamically calls a Sass function.")}],t.scssAtDirectives=[{label:"@extend",documentation:Do("scss.builtin.@extend","Inherits the styles of another selector."),kind:jn.Keyword},{label:"@at-root",documentation:Do("scss.builtin.@at-root","Causes one or more rules to be emitted at the root of the document."),kind:jn.Keyword},{label:"@debug",documentation:Do("scss.builtin.@debug","Prints the value of an expression to the standard error output stream. Useful for debugging complicated Sass files."),kind:jn.Keyword},{label:"@warn",documentation:Do("scss.builtin.@warn","Prints the value of an expression to the standard error output stream. Useful for libraries that need to warn users of deprecations or recovering from minor mixin usage mistakes. Warnings can be turned off with the `--quiet` command-line option or the `:quiet` Sass option."),kind:jn.Keyword},{label:"@error",documentation:Do("scss.builtin.@error","Throws the value of an expression as a fatal error with stack trace. Useful for validating arguments to mixins and functions."),kind:jn.Keyword},{label:"@if",documentation:Do("scss.builtin.@if","Includes the body if the expression does not evaluate to `false` or `null`."),insertText:"@if ${1:expr} {\n\t$0\n}",insertTextFormat:Vn.Snippet,kind:jn.Keyword},{label:"@for",documentation:Do("scss.builtin.@for","For loop that repeatedly outputs a set of styles for each `$var` in the `from/through` or `from/to` clause."),insertText:"@for \\$${1:var} from ${2:start} ${3|to,through|} ${4:end} {\n\t$0\n}",insertTextFormat:Vn.Snippet,kind:jn.Keyword},{label:"@each",documentation:Do("scss.builtin.@each","Each loop that sets `$var` to each item in the list or map, then outputs the styles it contains using that value of `$var`."),insertText:"@each \\$${1:var} in ${2:list} {\n\t$0\n}",insertTextFormat:Vn.Snippet,kind:jn.Keyword},{label:"@while",documentation:Do("scss.builtin.@while","While loop that takes an expression and repeatedly outputs the nested styles until the statement evaluates to `false`."),insertText:"@while ${1:condition} {\n\t$0\n}",insertTextFormat:Vn.Snippet,kind:jn.Keyword},{label:"@mixin",documentation:Do("scss.builtin.@mixin","Defines styles that can be re-used throughout the stylesheet with `@include`."),insertText:"@mixin ${1:name} {\n\t$0\n}",insertTextFormat:Vn.Snippet,kind:jn.Keyword},{label:"@include",documentation:Do("scss.builtin.@include","Includes the styles defined by another mixin into the current rule."),kind:jn.Keyword},{label:"@function",documentation:Do("scss.builtin.@function","Defines complex operations that can be re-used throughout stylesheets."),kind:jn.Keyword}],t.scssModuleLoaders=[{label:"@use",documentation:Do("scss.builtin.@use","Loads mixins, functions, and variables from other Sass stylesheets as 'modules', and combines CSS from multiple stylesheets together."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/at-rules/use"}],insertText:"@use '$0';",insertTextFormat:Vn.Snippet,kind:jn.Keyword},{label:"@forward",documentation:Do("scss.builtin.@forward","Loads a Sass stylesheet and makes its mixins, functions, and variables available when this stylesheet is loaded with the @use rule."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/at-rules/forward"}],insertText:"@forward '$0';",insertTextFormat:Vn.Snippet,kind:jn.Keyword}],t.scssModuleBuiltIns=[{label:"sass:math",documentation:Do("scss.builtin.sass:math","Provides functions that operate on numbers."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/math"}]},{label:"sass:string",documentation:Do("scss.builtin.sass:string","Makes it easy to combine, search, or split apart strings."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/string"}]},{label:"sass:color",documentation:Do("scss.builtin.sass:color","Generates new colors based on existing ones, making it easy to build color themes."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/color"}]},{label:"sass:list",documentation:Do("scss.builtin.sass:list","Lets you access and modify values in lists."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/list"}]},{label:"sass:map",documentation:Do("scss.builtin.sass:map","Makes it possible to look up the value associated with a key in a map, and much more."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/map"}]},{label:"sass:selector",documentation:Do("scss.builtin.sass:selector","Provides access to Sass’s powerful selector engine."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/selector"}]},{label:"sass:meta",documentation:Do("scss.builtin.sass:meta","Exposes the details of Sass’s inner workings."),references:[{name:"Sass documentation",url:"https://sass-lang.com/documentation/modules/meta"}]}]}(si);var Ro=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),Io="/".charCodeAt(0),Mo="\n".charCodeAt(0),Po="\r".charCodeAt(0),_o="\f".charCodeAt(0),No="`".charCodeAt(0),Ao=".".charCodeAt(0),Oo=r.CustomToken,Wo=Oo++,Lo=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ro(t,e),t.prototype.scanNext=function(t){var n=this.escapedJavaScript();return null!==n?this.finishToken(t,n):this.stream.advanceIfChars([Ao,Ao,Ao])?this.finishToken(t,Wo):e.prototype.scanNext.call(this,t)},t.prototype.comment=function(){return!!e.prototype.comment.call(this)||!(this.inURL||!this.stream.advanceIfChars([Io,Io]))&&(this.stream.advanceWhileChar((function(e){switch(e){case Mo:case Po:case _o:return!1;default:return!0}})),!0)},t.prototype.escapedJavaScript=function(){return this.stream.peekChar()===No?(this.stream.advance(1),this.stream.advanceWhileChar((function(e){return e!==No})),this.stream.advanceIfChar(No)?r.EscapedJavaScript:r.BadEscapedJavaScript):null},t}(X),Uo=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}(),jo=(function(e){function t(){return e.call(this,new Lo)||this}Uo(t,e),t.prototype._parseStylesheetStatement=function(t){return void 0===t&&(t=!1),this.peek(r.AtKeyword)?this._parseVariableDeclaration()||this._parsePlugin()||e.prototype._parseStylesheetAtStatement.call(this,t):this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseFunction()||this._parseRuleset(!0)},t.prototype._parseImport=function(){if(!this.peekKeyword("@import")&&!this.peekKeyword("@import-once"))return null;var e=this.create(We);if(this.consumeToken(),this.accept(r.ParenthesisL)){if(!this.accept(r.Ident))return this.finish(e,Et.IdentifierExpected,[r.SemiColon]);do{if(!this.accept(r.Comma))break}while(this.accept(r.Ident));if(!this.accept(r.ParenthesisR))return this.finish(e,Et.RightParenthesisExpected,[r.SemiColon])}return e.addChild(this._parseURILiteral())||e.addChild(this._parseStringLiteral())?(this.peek(r.SemiColon)||this.peek(r.EOF)||e.setMedialist(this._parseMediaQueryList()),this.finish(e)):this.finish(e,Et.URIOrStringExpected,[r.SemiColon])},t.prototype._parsePlugin=function(){if(!this.peekKeyword("@plugin"))return null;var e=this.createNode(ne.Plugin);return this.consumeToken(),e.addChild(this._parseStringLiteral())?this.accept(r.SemiColon)?this.finish(e):this.finish(e,Et.SemiColonExpected):this.finish(e,Et.StringLiteralExpected)},t.prototype._parseMediaQuery=function(t){var n=e.prototype._parseMediaQuery.call(this,t);if(!n){var r=this.create(He);return r.addChild(this._parseVariable())?this.finish(r):null}return n},t.prototype._parseMediaDeclaration=function(e){return void 0===e&&(e=!1),this._tryParseRuleset(e)||this._tryToParseDeclaration()||this._tryParseMixinDeclaration()||this._tryParseMixinReference()||this._parseDetachedRuleSetMixin()||this._parseStylesheetStatement(e)},t.prototype._parseMediaFeatureName=function(){return this._parseIdent()||this._parseVariable()},t.prototype._parseVariableDeclaration=function(e){void 0===e&&(e=[]);var t=this.create(at),n=this.mark();if(!t.setVariable(this._parseVariable(!0)))return null;if(!this.accept(r.Colon))return this.restoreAtMark(n),null;if(this.prevToken&&(t.colonPosition=this.prevToken.offset),t.setValue(this._parseDetachedRuleSet()))t.needsSemicolon=!1;else if(!t.setValue(this._parseExpr()))return this.finish(t,Et.VariableValueExpected,[],e);return t.addChild(this._parsePrio()),this.peek(r.SemiColon)&&(t.semicolonPosition=this.token.offset),this.finish(t)},t.prototype._parseDetachedRuleSet=function(){var e=this.mark();if(this.peekDelim("#")||this.peekDelim(".")){if(this.consumeToken(),this.hasWhitespace()||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;var t=this.create(ut);if(t.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)t.getParameters().addChild(this._parseMixinParameter())||this.markError(t,Et.IdentifierExpected,[],[r.ParenthesisR]);if(!this.accept(r.ParenthesisR))return this.restoreAtMark(e),null}if(!this.peek(r.CurlyL))return null;var n=this.create(ue);return this._parseBody(n,this._parseDetachedRuleSetBody.bind(this)),this.finish(n)},t.prototype._parseDetachedRuleSetBody=function(){return this._tryParseKeyframeSelector()||this._parseRuleSetDeclaration()},t.prototype._addLookupChildren=function(e){if(!e.addChild(this._parseLookupValue()))return!1;for(var t=!1;this.peek(r.BracketL)&&(t=!0),e.addChild(this._parseLookupValue());)t=!1;return!t},t.prototype._parseLookupValue=function(){var e=this.create(ce),t=this.mark();return this.accept(r.BracketL)&&((e.addChild(this._parseVariable(!1,!0))||e.addChild(this._parsePropertyIdentifier()))&&this.accept(r.BracketR)||this.accept(r.BracketR))?e:(this.restoreAtMark(t),null)},t.prototype._parseVariable=function(e,t){void 0===e&&(e=!1),void 0===t&&(t=!1);var n=!e&&this.peekDelim("$");if(!this.peekDelim("@")&&!n&&!this.peek(r.AtKeyword))return null;for(var i=this.create(ct),o=this.mark();this.acceptDelim("@")||!e&&this.acceptDelim("$");)if(this.hasWhitespace())return this.restoreAtMark(o),null;return!this.accept(r.AtKeyword)&&!this.accept(r.Ident)||!t&&this.peek(r.BracketL)&&!this._addLookupChildren(i)?(this.restoreAtMark(o),null):i},t.prototype._parseTermExpression=function(){return this._parseVariable()||this._parseEscaped()||e.prototype._parseTermExpression.call(this)||this._tryParseMixinReference(!1)},t.prototype._parseEscaped=function(){if(this.peek(r.EscapedJavaScript)||this.peek(r.BadEscapedJavaScript)){var e=this.createNode(ne.EscapedValue);return this.consumeToken(),this.finish(e)}return this.peekDelim("~")?(e=this.createNode(ne.EscapedValue),this.consumeToken(),this.accept(r.String)||this.accept(r.EscapedJavaScript)?this.finish(e):this.finish(e,Et.TermExpected)):null},t.prototype._parseOperator=function(){return this._parseGuardOperator()||e.prototype._parseOperator.call(this)},t.prototype._parseGuardOperator=function(){if(this.peekDelim(">")){var e=this.createNode(ne.Operator);return this.consumeToken(),this.acceptDelim("="),e}return this.peekDelim("=")?(e=this.createNode(ne.Operator),this.consumeToken(),this.acceptDelim("<"),e):this.peekDelim("<")?(e=this.createNode(ne.Operator),this.consumeToken(),this.acceptDelim("="),e):null},t.prototype._parseRuleSetDeclaration=function(){return this.peek(r.AtKeyword)?this._parseKeyframe()||this._parseMedia(!0)||this._parseImport()||this._parseSupports(!0)||this._parseDetachedRuleSetMixin()||this._parseVariableDeclaration()||e.prototype._parseRuleSetDeclarationAtStatement.call(this):this._tryParseMixinDeclaration()||this._tryParseRuleset(!0)||this._tryParseMixinReference()||this._parseFunction()||this._parseExtend()||e.prototype._parseRuleSetDeclaration.call(this)},t.prototype._parseKeyframeIdent=function(){return this._parseIdent([re.Keyframe])||this._parseVariable()},t.prototype._parseKeyframeSelector=function(){return this._parseDetachedRuleSetMixin()||e.prototype._parseKeyframeSelector.call(this)},t.prototype._parseSimpleSelectorBody=function(){return this._parseSelectorCombinator()||e.prototype._parseSimpleSelectorBody.call(this)},t.prototype._parseSelector=function(e){var t=this.create(ge),n=!1;for(e&&(n=t.addChild(this._parseCombinator()));t.addChild(this._parseSimpleSelector());){n=!0;var i=this.mark();if(t.addChild(this._parseGuard())&&this.peek(r.CurlyL))break;this.restoreAtMark(i),t.addChild(this._parseCombinator())}return n?this.finish(t):null},t.prototype._parseSelectorCombinator=function(){if(this.peekDelim("&")){var e=this.createNode(ne.SelectorCombinator);for(this.consumeToken();!this.hasWhitespace()&&(this.acceptDelim("-")||this.accept(r.Num)||this.accept(r.Dimension)||e.addChild(this._parseIdent())||this.acceptDelim("&")););return this.finish(e)}return null},t.prototype._parseSelectorIdent=function(){if(!this.peekInterpolatedIdent())return null;var e=this.createNode(ne.SelectorInterpolation);return this._acceptInterpolatedIdent(e)?this.finish(e):null},t.prototype._parsePropertyIdentifier=function(e){void 0===e&&(e=!1);var t=/^[\w-]+/;if(!this.peekInterpolatedIdent()&&!this.peekRegExp(this.token.type,t))return null;var n=this.mark(),r=this.create(pe);return r.isCustomProperty=this.acceptDelim("-")&&this.acceptDelim("-"),(e?r.isCustomProperty?r.addChild(this._parseIdent()):r.addChild(this._parseRegexp(t)):r.isCustomProperty?this._acceptInterpolatedIdent(r):this._acceptInterpolatedIdent(r,t))?(e||this.hasWhitespace()||(this.acceptDelim("+"),this.hasWhitespace()||this.acceptIdent("_")),this.finish(r)):(this.restoreAtMark(n),null)},t.prototype.peekInterpolatedIdent=function(){return this.peek(r.Ident)||this.peekDelim("@")||this.peekDelim("$")||this.peekDelim("-")},t.prototype._acceptInterpolatedIdent=function(e,t){for(var n=this,i=!1,o=function(){var e=n.mark();return n.acceptDelim("-")&&(n.hasWhitespace()||n.acceptDelim("-"),n.hasWhitespace())?(n.restoreAtMark(e),null):n._parseInterpolation()},s=t?function(){return n.acceptRegexp(t)}:function(){return n.accept(r.Ident)};(s()||e.addChild(this._parseInterpolation()||this.try(o)))&&(i=!0,!this.hasWhitespace()););return i},t.prototype._parseInterpolation=function(){var e=this.mark();if(this.peekDelim("@")||this.peekDelim("$")){var t=this.createNode(ne.Interpolation);return this.consumeToken(),this.hasWhitespace()||!this.accept(r.CurlyL)?(this.restoreAtMark(e),null):t.addChild(this._parseIdent())?this.accept(r.CurlyR)?this.finish(t):this.finish(t,Et.RightCurlyExpected):this.finish(t,Et.IdentifierExpected)}return null},t.prototype._tryParseMixinDeclaration=function(){var e=this.mark(),t=this.create(ut);if(!t.setIdentifier(this._parseMixinDeclarationIdentifier())||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;if(t.getParameters().addChild(this._parseMixinParameter()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)t.getParameters().addChild(this._parseMixinParameter())||this.markError(t,Et.IdentifierExpected,[],[r.ParenthesisR]);return this.accept(r.ParenthesisR)?(t.setGuard(this._parseGuard()),this.peek(r.CurlyL)?this._parseBody(t,this._parseMixInBodyDeclaration.bind(this)):(this.restoreAtMark(e),null)):(this.restoreAtMark(e),null)},t.prototype._parseMixInBodyDeclaration=function(){return this._parseFontFace()||this._parseRuleSetDeclaration()},t.prototype._parseMixinDeclarationIdentifier=function(){var e;if(this.peekDelim("#")||this.peekDelim(".")){if(e=this.create(pe),this.consumeToken(),this.hasWhitespace()||!e.addChild(this._parseIdent()))return null}else{if(!this.peek(r.Hash))return null;e=this.create(pe),this.consumeToken()}return e.referenceTypes=[re.Mixin],this.finish(e)},t.prototype._parsePseudo=function(){if(!this.peek(r.Colon))return null;var t=this.mark(),n=this.create(dt);return this.consumeToken(),this.acceptIdent("extend")?this._completeExtends(n):(this.restoreAtMark(t),e.prototype._parsePseudo.call(this))},t.prototype._parseExtend=function(){if(!this.peekDelim("&"))return null;var e=this.mark(),t=this.create(dt);return this.consumeToken(),!this.hasWhitespace()&&this.accept(r.Colon)&&this.acceptIdent("extend")?this._completeExtends(t):(this.restoreAtMark(e),null)},t.prototype._completeExtends=function(e){if(!this.accept(r.ParenthesisL))return this.finish(e,Et.LeftParenthesisExpected);var t=e.getSelectors();if(!t.addChild(this._parseSelector(!0)))return this.finish(e,Et.SelectorExpected);for(;this.accept(r.Comma);)if(!t.addChild(this._parseSelector(!0)))return this.finish(e,Et.SelectorExpected);return this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,Et.RightParenthesisExpected)},t.prototype._parseDetachedRuleSetMixin=function(){if(!this.peek(r.AtKeyword))return null;var e=this.mark(),t=this.create(mt);return!t.addChild(this._parseVariable(!0))||!this.hasWhitespace()&&this.accept(r.ParenthesisL)?this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,Et.RightParenthesisExpected):(this.restoreAtMark(e),null)},t.prototype._tryParseMixinReference=function(e){void 0===e&&(e=!0);for(var t=this.mark(),n=this.create(mt),i=this._parseMixinDeclarationIdentifier();i;){this.acceptDelim(">");var o=this._parseMixinDeclarationIdentifier();if(!o)break;n.getNamespaces().addChild(i),i=o}if(!n.setIdentifier(i))return this.restoreAtMark(t),null;var s=!1;if(this.accept(r.ParenthesisL)){if(s=!0,n.getArguments().addChild(this._parseMixinArgument()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)if(!n.getArguments().addChild(this._parseMixinArgument()))return this.finish(n,Et.ExpressionExpected);if(!this.accept(r.ParenthesisR))return this.finish(n,Et.RightParenthesisExpected);i.referenceTypes=[re.Mixin]}else i.referenceTypes=[re.Mixin,re.Rule];return this.peek(r.BracketL)?e||this._addLookupChildren(n):n.addChild(this._parsePrio()),s||this.peek(r.SemiColon)||this.peek(r.CurlyR)||this.peek(r.EOF)?this.finish(n):(this.restoreAtMark(t),null)},t.prototype._parseMixinArgument=function(){var e=this.create(ze),t=this.mark(),n=this._parseVariable();return n&&(this.accept(r.Colon)?e.setIdentifier(n):this.restoreAtMark(t)),e.setValue(this._parseDetachedRuleSet()||this._parseExpr(!0))?this.finish(e):(this.restoreAtMark(t),null)},t.prototype._parseMixinParameter=function(){var e=this.create(Fe);if(this.peekKeyword("@rest")){var t=this.create(ce);return this.consumeToken(),this.accept(Wo)?(e.setIdentifier(this.finish(t)),this.finish(e)):this.finish(e,Et.DotExpected,[],[r.Comma,r.ParenthesisR])}if(this.peek(Wo)){var n=this.create(ce);return this.consumeToken(),e.setIdentifier(this.finish(n)),this.finish(e)}var i=!1;return e.setIdentifier(this._parseVariable())&&(this.accept(r.Colon),i=!0),e.setDefaultValue(this._parseDetachedRuleSet()||this._parseExpr(!0))||i?this.finish(e):null},t.prototype._parseGuard=function(){if(!this.peekIdent("when"))return null;var e=this.create(bt);if(this.consumeToken(),e.isNegated=this.acceptIdent("not"),!e.getConditions().addChild(this._parseGuardCondition()))return this.finish(e,Et.ConditionExpected);for(;this.acceptIdent("and")||this.accept(r.Comma);)if(!e.getConditions().addChild(this._parseGuardCondition()))return this.finish(e,Et.ConditionExpected);return this.finish(e)},t.prototype._parseGuardCondition=function(){if(!this.peek(r.ParenthesisL))return null;var e=this.create(vt);return this.consumeToken(),e.addChild(this._parseExpr()),this.accept(r.ParenthesisR)?this.finish(e):this.finish(e,Et.RightParenthesisExpected)},t.prototype._parseFunction=function(){var e=this.mark(),t=this.create(Ce);if(!t.setIdentifier(this._parseFunctionIdentifier()))return null;if(this.hasWhitespace()||!this.accept(r.ParenthesisL))return this.restoreAtMark(e),null;if(t.getArguments().addChild(this._parseMixinArgument()))for(;(this.accept(r.Comma)||this.accept(r.SemiColon))&&!this.peek(r.ParenthesisR);)if(!t.getArguments().addChild(this._parseMixinArgument()))return this.finish(t,Et.ExpressionExpected);return this.accept(r.ParenthesisR)?this.finish(t):this.finish(t,Et.RightParenthesisExpected)},t.prototype._parseFunctionIdentifier=function(){if(this.peekDelim("%")){var t=this.create(pe);return t.referenceTypes=[re.Function],this.consumeToken(),this.finish(t)}return e.prototype._parseFunctionIdentifier.call(this)},t.prototype._parseURLArgument=function(){var t=this.mark(),n=e.prototype._parseURLArgument.call(this);if(!n||!this.peek(r.ParenthesisR)){this.restoreAtMark(t);var i=this.create(ce);return i.addChild(this._parseBinaryExpr()),this.finish(i)}return n}}(on),function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}()),Vo=Ct();!function(e){function t(t,n){return e.call(this,"@",t,n)||this}jo(t,e),t.prototype.createFunctionProposals=function(e,t,n,r){for(var i=0,o=e;i<o.length;i++){var s=o[i],a={label:s.name,detail:s.example,documentation:s.description,textEdit:kn.replace(this.getCompletionRange(t),s.name+"($0)"),insertTextFormat:Vn.Snippet,kind:jn.Function};n&&(a.sortText="z"),r.items.push(a)}return r},t.prototype.getTermProposals=function(n,r,i){var o=t.builtInProposals;return n&&(o=o.filter((function(e){return!e.type||!n.restrictions||-1!==n.restrictions.indexOf(e.type)}))),this.createFunctionProposals(o,r,!0,i),e.prototype.getTermProposals.call(this,n,r,i)},t.prototype.getColorProposals=function(n,r,i){return this.createFunctionProposals(t.colorProposals,r,!1,i),e.prototype.getColorProposals.call(this,n,r,i)},t.prototype.getCompletionsForDeclarationProperty=function(t,n){return this.getCompletionsForSelector(null,!0,n),e.prototype.getCompletionsForDeclarationProperty.call(this,t,n)},t.builtInProposals=[{name:"if",example:"if(condition, trueValue [, falseValue]);",description:Vo("less.builtin.if","returns one of two values depending on a condition.")},{name:"boolean",example:"boolean(condition);",description:Vo("less.builtin.boolean",'"store" a boolean test for later evaluation in a guard or if().')},{name:"length",example:"length(@list);",description:Vo("less.builtin.length","returns the number of elements in a value list")},{name:"extract",example:"extract(@list, index);",description:Vo("less.builtin.extract","returns a value at the specified position in the list")},{name:"range",example:"range([start, ] end [, step]);",description:Vo("less.builtin.range","generate a list spanning a range of values")},{name:"each",example:"each(@list, ruleset);",description:Vo("less.builtin.each","bind the evaluation of a ruleset to each member of a list.")},{name:"escape",example:"escape(@string);",description:Vo("less.builtin.escape","URL encodes a string")},{name:"e",example:"e(@string);",description:Vo("less.builtin.e","escape string content")},{name:"replace",example:"replace(@string, @pattern, @replacement[, @flags]);",description:Vo("less.builtin.replace","string replace")},{name:"unit",example:"unit(@dimension, [@unit: '']);",description:Vo("less.builtin.unit","remove or change the unit of a dimension")},{name:"color",example:"color(@string);",description:Vo("less.builtin.color","parses a string to a color"),type:"color"},{name:"convert",example:"convert(@value, unit);",description:Vo("less.builtin.convert","converts numbers from one type into another")},{name:"data-uri",example:"data-uri([mimetype,] url);",description:Vo("less.builtin.data-uri","inlines a resource and falls back to `url()`"),type:"url"},{name:"abs",description:Vo("less.builtin.abs","absolute value of a number"),example:"abs(number);"},{name:"acos",description:Vo("less.builtin.acos","arccosine - inverse of cosine function"),example:"acos(number);"},{name:"asin",description:Vo("less.builtin.asin","arcsine - inverse of sine function"),example:"asin(number);"},{name:"ceil",example:"ceil(@number);",description:Vo("less.builtin.ceil","rounds up to an integer")},{name:"cos",description:Vo("less.builtin.cos","cosine function"),example:"cos(number);"},{name:"floor",description:Vo("less.builtin.floor","rounds down to an integer"),example:"floor(@number);"},{name:"percentage",description:Vo("less.builtin.percentage","converts to a %, e.g. 0.5 > 50%"),example:"percentage(@number);",type:"percentage"},{name:"round",description:Vo("less.builtin.round","rounds a number to a number of places"),example:"round(number, [places: 0]);"},{name:"sqrt",description:Vo("less.builtin.sqrt","calculates square root of a number"),example:"sqrt(number);"},{name:"sin",description:Vo("less.builtin.sin","sine function"),example:"sin(number);"},{name:"tan",description:Vo("less.builtin.tan","tangent function"),example:"tan(number);"},{name:"atan",description:Vo("less.builtin.atan","arctangent - inverse of tangent function"),example:"atan(number);"},{name:"pi",description:Vo("less.builtin.pi","returns pi"),example:"pi();"},{name:"pow",description:Vo("less.builtin.pow","first argument raised to the power of the second argument"),example:"pow(@base, @exponent);"},{name:"mod",description:Vo("less.builtin.mod","first argument modulus second argument"),example:"mod(number, number);"},{name:"min",description:Vo("less.builtin.min","returns the lowest of one or more values"),example:"min(@x, @y);"},{name:"max",description:Vo("less.builtin.max","returns the lowest of one or more values"),example:"max(@x, @y);"}],t.colorProposals=[{name:"argb",example:"argb(@color);",description:Vo("less.builtin.argb","creates a #AARRGGBB")},{name:"hsl",example:"hsl(@hue, @saturation, @lightness);",description:Vo("less.builtin.hsl","creates a color")},{name:"hsla",example:"hsla(@hue, @saturation, @lightness, @alpha);",description:Vo("less.builtin.hsla","creates a color")},{name:"hsv",example:"hsv(@hue, @saturation, @value);",description:Vo("less.builtin.hsv","creates a color")},{name:"hsva",example:"hsva(@hue, @saturation, @value, @alpha);",description:Vo("less.builtin.hsva","creates a color")},{name:"hue",example:"hue(@color);",description:Vo("less.builtin.hue","returns the `hue` channel of `@color` in the HSL space")},{name:"saturation",example:"saturation(@color);",description:Vo("less.builtin.saturation","returns the `saturation` channel of `@color` in the HSL space")},{name:"lightness",example:"lightness(@color);",description:Vo("less.builtin.lightness","returns the `lightness` channel of `@color` in the HSL space")},{name:"hsvhue",example:"hsvhue(@color);",description:Vo("less.builtin.hsvhue","returns the `hue` channel of `@color` in the HSV space")},{name:"hsvsaturation",example:"hsvsaturation(@color);",description:Vo("less.builtin.hsvsaturation","returns the `saturation` channel of `@color` in the HSV space")},{name:"hsvvalue",example:"hsvvalue(@color);",description:Vo("less.builtin.hsvvalue","returns the `value` channel of `@color` in the HSV space")},{name:"red",example:"red(@color);",description:Vo("less.builtin.red","returns the `red` channel of `@color`")},{name:"green",example:"green(@color);",description:Vo("less.builtin.green","returns the `green` channel of `@color`")},{name:"blue",example:"blue(@color);",description:Vo("less.builtin.blue","returns the `blue` channel of `@color`")},{name:"alpha",example:"alpha(@color);",description:Vo("less.builtin.alpha","returns the `alpha` channel of `@color`")},{name:"luma",example:"luma(@color);",description:Vo("less.builtin.luma","returns the `luma` value (perceptual brightness) of `@color`")},{name:"saturate",example:"saturate(@color, 10%);",description:Vo("less.builtin.saturate","return `@color` 10% points more saturated")},{name:"desaturate",example:"desaturate(@color, 10%);",description:Vo("less.builtin.desaturate","return `@color` 10% points less saturated")},{name:"lighten",example:"lighten(@color, 10%);",description:Vo("less.builtin.lighten","return `@color` 10% points lighter")},{name:"darken",example:"darken(@color, 10%);",description:Vo("less.builtin.darken","return `@color` 10% points darker")},{name:"fadein",example:"fadein(@color, 10%);",description:Vo("less.builtin.fadein","return `@color` 10% points less transparent")},{name:"fadeout",example:"fadeout(@color, 10%);",description:Vo("less.builtin.fadeout","return `@color` 10% points more transparent")},{name:"fade",example:"fade(@color, 50%);",description:Vo("less.builtin.fade","return `@color` with 50% transparency")},{name:"spin",example:"spin(@color, 10);",description:Vo("less.builtin.spin","return `@color` with a 10 degree larger in hue")},{name:"mix",example:"mix(@color1, @color2, [@weight: 50%]);",description:Vo("less.builtin.mix","return a mix of `@color1` and `@color2`")},{name:"greyscale",example:"greyscale(@color);",description:Vo("less.builtin.greyscale","returns a grey, 100% desaturated color")},{name:"contrast",example:"contrast(@color1, [@darkcolor: black], [@lightcolor: white], [@threshold: 43%]);",description:Vo("less.builtin.contrast","return `@darkcolor` if `@color1 is> 43% luma` otherwise return `@lightcolor`, see notes")},{name:"multiply",example:"multiply(@color1, @color2);"},{name:"screen",example:"screen(@color1, @color2);"},{name:"overlay",example:"overlay(@color1, @color2);"},{name:"softlight",example:"softlight(@color1, @color2);"},{name:"hardlight",example:"hardlight(@color1, @color2);"},{name:"difference",example:"difference(@color1, @color2);"},{name:"exclusion",example:"exclusion(@color1, @color2);"},{name:"average",example:"average(@color1, @color2);"},{name:"negation",example:"negation(@color1, @color2);"}]}(si);var Bo={version:1.1,properties:[{name:"additive-symbols",browsers:["FF33"],syntax:"[ <integer> && <symbol> ]#",relevance:50,description:"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor. Needs to be specified if the counter system is 'additive'.",restrictions:["integer","string","image","identifier"]},{name:"align-content",values:[{name:"center",description:"Lines are packed toward the center of the flex container."},{name:"flex-end",description:"Lines are packed toward the end of the flex container."},{name:"flex-start",description:"Lines are packed toward the start of the flex container."},{name:"space-around",description:"Lines are evenly distributed in the flex container, with half-size spaces on either end."},{name:"space-between",description:"Lines are evenly distributed in the flex container."},{name:"stretch",description:"Lines stretch to take up the remaining space."}],syntax:"normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>",relevance:59,description:"Aligns a flex container’s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.",restrictions:["enum"]},{name:"align-items",values:[{name:"baseline",description:"If the flex item’s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item’s margin box is centered in the cross axis within the line."},{name:"flex-end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"flex-start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."}],syntax:"normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ]",relevance:81,description:"Aligns flex items along the cross axis of the current line of the flex container.",restrictions:["enum"]},{name:"justify-items",values:[{name:"auto"},{name:"normal"},{name:"end"},{name:"start"},{name:"flex-end",description:'"Flex items are packed toward the end of the line."'},{name:"flex-start",description:'"Flex items are packed toward the start of the line."'},{name:"self-end",description:"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis."},{name:"self-start",description:"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.."},{name:"center",description:"The items are packed flush to each other toward the center of the of the alignment container."},{name:"left"},{name:"right"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"save"},{name:"unsave"},{name:"legacy"}],syntax:"normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ]",relevance:50,description:"Defines the default justify-self for all items of the box, giving them the default way of justifying each box along the appropriate axis",restrictions:["enum"]},{name:"justify-self",browsers:["E16","FF45","S10.1","C57","O44"],values:[{name:"auto"},{name:"normal"},{name:"end"},{name:"start"},{name:"flex-end",description:'"Flex items are packed toward the end of the line."'},{name:"flex-start",description:'"Flex items are packed toward the start of the line."'},{name:"self-end",description:"The item is packed flush to the edge of the alignment container of the end side of the item, in the appropriate axis."},{name:"self-start",description:"The item is packed flush to the edge of the alignment container of the start side of the item, in the appropriate axis.."},{name:"center",description:"The items are packed flush to each other toward the center of the of the alignment container."},{name:"left"},{name:"right"},{name:"baseline"},{name:"first baseline"},{name:"last baseline"},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."},{name:"save"},{name:"unsave"}],syntax:"auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ]",relevance:52,description:"Defines the way of justifying a box inside its container along the appropriate axis.",restrictions:["enum"]},{name:"align-self",values:[{name:"auto",description:"Computes to the value of 'align-items' on the element’s parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself."},{name:"baseline",description:"If the flex item’s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item’s margin box is centered in the cross axis within the line."},{name:"flex-end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"flex-start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."}],syntax:"auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position>",relevance:69,description:"Allows the default alignment along the cross axis to be overridden for individual flex items.",restrictions:["enum"]},{name:"all",browsers:["E79","FF27","S9.1","C37","O24"],values:[],syntax:"initial | inherit | unset | revert",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/all"}],description:"Shorthand that resets all properties except 'direction' and 'unicode-bidi'.",restrictions:["enum"]},{name:"alt",browsers:["S9"],values:[],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/alt"}],description:"Provides alternative text for assistive technology to replace the generated content of a ::before or ::after element.",restrictions:["string","enum"]},{name:"animation",values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],syntax:"<single-animation>#",relevance:79,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation"}],description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","timing-function","enum","identifier","number"]},{name:"animation-delay",syntax:"<time>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-delay"}],description:"Defines when the animation will start.",restrictions:["time"]},{name:"animation-direction",values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],syntax:"<single-animation-direction>#",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-direction"}],description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"animation-duration",syntax:"<time>#",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-duration"}],description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"animation-fill-mode",values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],syntax:"<single-animation-fill-mode>#",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode"}],description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"animation-iteration-count",values:[{name:"infinite",description:"Causes the animation to repeat forever."}],syntax:"<single-animation-iteration-count>#",relevance:59,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count"}],description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"animation-name",values:[{name:"none",description:"No animation is performed"}],syntax:"[ none | <keyframes-name> ]#",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-name"}],description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"animation-play-state",values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],syntax:"<single-animation-play-state>#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-play-state"}],description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"animation-timing-function",syntax:"<timing-function>#",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/animation-timing-function"}],description:"Describes how the animation will progress over one cycle of its duration.",restrictions:["timing-function"]},{name:"backface-visibility",values:[{name:"hidden",description:"Back side is hidden."},{name:"visible",description:"Back side is visible."}],syntax:"visible | hidden",relevance:59,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/backface-visibility"}],description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"background",values:[{name:"fixed",description:"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page."},{name:"local",description:"The background is fixed with regard to the element's contents: if the element has a scrolling mechanism, the background scrolls with the element's contents."},{name:"none",description:"A value of 'none' counts as an image layer but draws nothing."},{name:"scroll",description:"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element's border.)"}],syntax:"[ <bg-layer> , ]* <final-bg-layer>",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background"}],description:"Shorthand property for setting most background properties at the same place in the style sheet.",restrictions:["enum","image","color","position","length","repeat","percentage","box"]},{name:"background-attachment",values:[{name:"fixed",description:"The background is fixed with regard to the viewport. In paged media where there is no viewport, a 'fixed' background is fixed with respect to the page box and therefore replicated on every page."},{name:"local",description:"The background is fixed with regard to the element’s contents: if the element has a scrolling mechanism, the background scrolls with the element’s contents."},{name:"scroll",description:"The background is fixed with regard to the element itself and does not scroll with its contents. (It is effectively attached to the element’s border.)"}],syntax:"<attachment>#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-attachment"}],description:"Specifies whether the background images are fixed with regard to the viewport ('fixed') or scroll along with the element ('scroll') or its contents ('local').",restrictions:["enum"]},{name:"background-blend-mode",browsers:["E79","FF30","S8","C35","O22"],values:[{name:"normal",description:"Default attribute which specifies no blending"},{name:"multiply",description:"The source color is multiplied by the destination color and replaces the destination."},{name:"screen",description:"Multiplies the complements of the backdrop and source color values, then complements the result."},{name:"overlay",description:"Multiplies or screens the colors, depending on the backdrop color value."},{name:"darken",description:"Selects the darker of the backdrop and source colors."},{name:"lighten",description:"Selects the lighter of the backdrop and source colors."},{name:"color-dodge",description:"Brightens the backdrop color to reflect the source color."},{name:"color-burn",description:"Darkens the backdrop color to reflect the source color."},{name:"hard-light",description:"Multiplies or screens the colors, depending on the source color value."},{name:"soft-light",description:"Darkens or lightens the colors, depending on the source color value."},{name:"difference",description:"Subtracts the darker of the two constituent colors from the lighter color.."},{name:"exclusion",description:"Produces an effect similar to that of the Difference mode but lower in contrast."},{name:"hue",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color."},{name:"saturation",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color."},{name:"color",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color."},{name:"luminosity",browsers:["E79","FF30","S8","C35","O22"],description:"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color."}],syntax:"<blend-mode>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-blend-mode"}],description:"Defines the blending mode of each background layer.",restrictions:["enum"]},{name:"background-clip",syntax:"<box>#",relevance:67,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-clip"}],description:"Determines the background painting area.",restrictions:["box"]},{name:"background-color",syntax:"<color>",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-color"}],description:"Sets the background color of an element.",restrictions:["color"]},{name:"background-image",values:[{name:"none",description:"Counts as an image layer but draws nothing."}],syntax:"<bg-image>#",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-image"}],description:"Sets the background image(s) of an element.",restrictions:["image","enum"]},{name:"background-origin",syntax:"<box>#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-origin"}],description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"background-position",syntax:"<bg-position>#",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position"}],description:"Specifies the initial position of the background image(s) (after any resizing) within their corresponding background positioning area.",restrictions:["position","length","percentage"]},{name:"background-position-x",values:[{name:"center",description:"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is."},{name:"left",description:"Equivalent to '0%' for the horizontal position if one or two values are given, otherwise specifies the left edge as the origin for the next offset."},{name:"right",description:"Equivalent to '100%' for the horizontal position if one or two values are given, otherwise specifies the right edge as the origin for the next offset."}],status:"experimental",syntax:"[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position-x"}],description:"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.",restrictions:["length","percentage"]},{name:"background-position-y",values:[{name:"bottom",description:"Equivalent to '100%' for the vertical position if one or two values are given, otherwise specifies the bottom edge as the origin for the next offset."},{name:"center",description:"Equivalent to '50%' ('left 50%') for the horizontal position if the horizontal position is not otherwise specified, or '50%' ('top 50%') for the vertical position if it is."},{name:"top",description:"Equivalent to '0%' for the vertical position if one or two values are given, otherwise specifies the top edge as the origin for the next offset."}],status:"experimental",syntax:"[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-position-y"}],description:"If background images have been specified, this property specifies their initial position (after any resizing) within their corresponding background positioning area.",restrictions:["length","percentage"]},{name:"background-repeat",values:[],syntax:"<repeat-style>#",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-repeat"}],description:"Specifies how background images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"background-size",values:[{name:"auto",description:"Resolved by using the image’s intrinsic ratio and the size of the other dimension, or failing that, using the image’s intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],syntax:"<bg-size>#",relevance:85,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/background-size"}],description:"Specifies the size of the background images.",restrictions:["length","percentage"]},{name:"behavior",browsers:["IE6"],relevance:50,description:"IE only. Used to extend behaviors of the browser.",restrictions:["url"]},{name:"block-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"auto",description:"Depends on the values of other properties."}],syntax:"<'width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/block-size"}],description:"Logical 'width'. Mapping depends on the element’s 'writing-mode'.",restrictions:["length","percentage"]},{name:"border",syntax:"<line-width> || <line-style> || <color>",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border"}],description:"Shorthand property for setting border width, style, and color.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <'color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end"}],description:"Logical 'border-bottom'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <'color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start"}],description:"Logical 'border-top'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-block-end-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-color"}],description:"Logical 'border-bottom-color'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-block-start-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-color"}],description:"Logical 'border-top-color'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-block-end-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-style"}],description:"Logical 'border-bottom-style'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-block-start-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-style"}],description:"Logical 'border-top-style'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-block-end-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-end-width"}],description:"Logical 'border-bottom-width'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-block-start-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-start-width"}],description:"Logical 'border-top-width'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-bottom",syntax:"<line-width> || <line-style> || <color>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom"}],description:"Shorthand property for setting border width, style and color.",restrictions:["length","line-width","line-style","color"]},{name:"border-bottom-color",syntax:"<'border-top-color'>",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-color"}],description:"Sets the color of the bottom border.",restrictions:["color"]},{name:"border-bottom-left-radius",syntax:"<length-percentage>{1,2}",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius"}],description:"Defines the radii of the bottom left outer border edge.",restrictions:["length","percentage"]},{name:"border-bottom-right-radius",syntax:"<length-percentage>{1,2}",relevance:73,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius"}],description:"Defines the radii of the bottom right outer border edge.",restrictions:["length","percentage"]},{name:"border-bottom-style",syntax:"<line-style>",relevance:57,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-style"}],description:"Sets the style of the bottom border.",restrictions:["line-style"]},{name:"border-bottom-width",syntax:"<line-width>",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-bottom-width"}],description:"Sets the thickness of the bottom border.",restrictions:["length","line-width"]},{name:"border-collapse",values:[{name:"collapse",description:"Selects the collapsing borders model."},{name:"separate",description:"Selects the separated borders border model."}],syntax:"collapse | separate",relevance:75,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-collapse"}],description:"Selects a table's border model.",restrictions:["enum"]},{name:"border-color",values:[],syntax:"<color>{1,4}",relevance:86,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-color"}],description:"The color of the border around all four edges of an element.",restrictions:["color"]},{name:"border-image",values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none",description:"Use the border styles."},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],syntax:"<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image"}],description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"border-image-outset",syntax:"[ <length> | <number> ]{1,4}",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-outset"}],description:"The values specify the amount by which the border image area extends beyond the border box on the top, right, bottom, and left sides respectively. If the fourth value is absent, it is the same as the second. If the third one is also absent, it is the same as the first. If the second one is also absent, it is the same as the first. Numbers represent multiples of the corresponding border-width.",restrictions:["length","number"]},{name:"border-image-repeat",values:[{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."}],syntax:"[ stretch | repeat | round | space ]{1,2}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-repeat"}],description:"Specifies how the images for the sides and the middle part of the border image are scaled and tiled. If the second keyword is absent, it is assumed to be the same as the first.",restrictions:["enum"]},{name:"border-image-slice",values:[{name:"fill",description:"Causes the middle part of the border-image to be preserved."}],syntax:"<number-percentage>{1,4} && fill?",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-slice"}],description:"Specifies inward offsets from the top, right, bottom, and left edges of the image, dividing it into nine regions: four corners, four edges and a middle.",restrictions:["number","percentage"]},{name:"border-image-source",values:[{name:"none",description:"Use the border styles."}],syntax:"none | <image>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-source"}],description:"Specifies an image to use instead of the border styles given by the 'border-style' properties and as an additional background layer for the element. If the value is 'none' or if the image cannot be displayed, the border styles will be used.",restrictions:["image"]},{name:"border-image-width",values:[{name:"auto",description:"The border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."}],syntax:"[ <length-percentage> | <number> | auto ]{1,4}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-image-width"}],description:"The four values of 'border-image-width' specify offsets that are used to divide the border image area into nine parts. They represent inward distances from the top, right, bottom, and left sides of the area, respectively.",restrictions:["length","percentage","number"]},{name:"border-inline-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <'color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end"}],description:"Logical 'border-right'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-inline-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'> || <'border-top-style'> || <'color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start"}],description:"Logical 'border-left'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width","line-style","color"]},{name:"border-inline-end-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-color"}],description:"Logical 'border-right-color'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-inline-start-color",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-color'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-color"}],description:"Logical 'border-left-color'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["color"]},{name:"border-inline-end-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-style"}],description:"Logical 'border-right-style'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-inline-start-style",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-style"}],description:"Logical 'border-left-style'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["line-style"]},{name:"border-inline-end-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-end-width"}],description:"Logical 'border-right-width'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-inline-start-width",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'border-top-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-start-width"}],description:"Logical 'border-left-width'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","line-width"]},{name:"border-left",syntax:"<line-width> || <line-style> || <color>",relevance:82,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left"}],description:"Shorthand property for setting border width, style and color",restrictions:["length","line-width","line-style","color"]},{name:"border-left-color",syntax:"<color>",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left-color"}],description:"Sets the color of the left border.",restrictions:["color"]},{name:"border-left-style",syntax:"<line-style>",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left-style"}],description:"Sets the style of the left border.",restrictions:["line-style"]},{name:"border-left-width",syntax:"<line-width>",relevance:58,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-left-width"}],description:"Sets the thickness of the left border.",restrictions:["length","line-width"]},{name:"border-radius",syntax:"<length-percentage>{1,4} [ / <length-percentage>{1,4} ]?",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-radius"}],description:"Defines the radii of the outer border edge.",restrictions:["length","percentage"]},{name:"border-right",syntax:"<line-width> || <line-style> || <color>",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right"}],description:"Shorthand property for setting border width, style and color",restrictions:["length","line-width","line-style","color"]},{name:"border-right-color",syntax:"<color>",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right-color"}],description:"Sets the color of the right border.",restrictions:["color"]},{name:"border-right-style",syntax:"<line-style>",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right-style"}],description:"Sets the style of the right border.",restrictions:["line-style"]},{name:"border-right-width",syntax:"<line-width>",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-right-width"}],description:"Sets the thickness of the right border.",restrictions:["length","line-width"]},{name:"border-spacing",syntax:"<length> <length>?",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-spacing"}],description:"The lengths specify the distance that separates adjoining cell borders. If one length is specified, it gives both the horizontal and vertical spacing. If two are specified, the first gives the horizontal spacing and the second the vertical spacing. Lengths may not be negative.",restrictions:["length"]},{name:"border-style",values:[],syntax:"<line-style>{1,4}",relevance:79,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-style"}],description:"The style of the border around edges of an element.",restrictions:["line-style"]},{name:"border-top",syntax:"<line-width> || <line-style> || <color>",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top"}],description:"Shorthand property for setting border width, style and color",restrictions:["length","line-width","line-style","color"]},{name:"border-top-color",syntax:"<color>",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-color"}],description:"Sets the color of the top border.",restrictions:["color"]},{name:"border-top-left-radius",syntax:"<length-percentage>{1,2}",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius"}],description:"Defines the radii of the top left outer border edge.",restrictions:["length","percentage"]},{name:"border-top-right-radius",syntax:"<length-percentage>{1,2}",relevance:72,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius"}],description:"Defines the radii of the top right outer border edge.",restrictions:["length","percentage"]},{name:"border-top-style",syntax:"<line-style>",relevance:57,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-style"}],description:"Sets the style of the top border.",restrictions:["line-style"]},{name:"border-top-width",syntax:"<line-width>",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-top-width"}],description:"Sets the thickness of the top border.",restrictions:["length","line-width"]},{name:"border-width",values:[],syntax:"<line-width>{1,4}",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-width"}],description:"Shorthand that sets the four 'border-*-width' properties. If it has four values, they set top, right, bottom and left in that order. If left is missing, it is the same as right; if bottom is missing, it is the same as top; if right is missing, it is the same as top.",restrictions:["length","line-width"]},{name:"bottom",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/bottom"}],description:"Specifies how far an absolutely positioned box's bottom margin edge is offset above the bottom edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"box-decoration-break",browsers:["E79","FF32","S6.1","C22","O15"],values:[{name:"clone",description:"Each box is independently wrapped with the border and padding."},{name:"slice",description:"The effect is as though the element were rendered with no breaks present, and then sliced by the breaks afterward."}],syntax:"slice | clone",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-decoration-break"}],description:"Specifies whether individual boxes are treated as broken pieces of one continuous box, or whether each box is individually wrapped with the border and padding.",restrictions:["enum"]},{name:"box-shadow",values:[{name:"inset",description:"Changes the drop shadow from an outer shadow (one that shadows the box onto the canvas, as if it were lifted above the canvas) to an inner shadow (one that shadows the canvas onto the box, as if the box were cut out of the canvas and shifted behind it)."},{name:"none",description:"No shadow."}],syntax:"none | <shadow>#",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-shadow"}],description:"Attaches one or more drop-shadows to the box. The property is a comma-separated list of shadows, each specified by 2-4 length values, an optional color, and an optional 'inset' keyword. Omitted lengths are 0; omitted colors are a user agent chosen color.",restrictions:["length","color","enum"]},{name:"box-sizing",values:[{name:"border-box",description:"The specified width and height (and respective min/max properties) on this element determine the border box of the element."},{name:"content-box",description:"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element."}],syntax:"content-box | border-box",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-sizing"}],description:"Specifies the behavior of the 'width' and 'height' properties.",restrictions:["enum"]},{name:"break-after",values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the principal box."},{name:"avoid",description:"Avoid a break before/after the principal box."},{name:"avoid-column",description:"Avoid a column break before/after the principal box."},{name:"avoid-page",description:"Avoid a page break before/after the principal box."},{name:"column",description:"Always force a column break before/after the principal box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the principal box."},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],syntax:"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",relevance:50,description:"Describes the page/column/region break behavior after the generated box.",restrictions:["enum"]},{name:"break-before",values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the principal box."},{name:"avoid",description:"Avoid a break before/after the principal box."},{name:"avoid-column",description:"Avoid a column break before/after the principal box."},{name:"avoid-page",description:"Avoid a page break before/after the principal box."},{name:"column",description:"Always force a column break before/after the principal box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the principal box."},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],syntax:"auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region",relevance:50,description:"Describes the page/column/region break behavior before the generated box.",restrictions:["enum"]},{name:"break-inside",values:[{name:"auto",description:"Impose no additional breaking constraints within the box."},{name:"avoid",description:"Avoid breaks within the box."},{name:"avoid-column",description:"Avoid a column break within the box."},{name:"avoid-page",description:"Avoid a page break within the box."}],syntax:"auto | avoid | avoid-page | avoid-column | avoid-region",relevance:50,description:"Describes the page/column/region break behavior inside the principal box.",restrictions:["enum"]},{name:"caption-side",values:[{name:"bottom",description:"Positions the caption box below the table box."},{name:"top",description:"Positions the caption box above the table box."}],syntax:"top | bottom | block-start | block-end | inline-start | inline-end",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/caption-side"}],description:"Specifies the position of the caption box with respect to the table box.",restrictions:["enum"]},{name:"caret-color",browsers:["E79","FF53","S11.1","C57","O44"],values:[{name:"auto",description:"The user agent selects an appropriate color for the caret. This is generally currentcolor, but the user agent may choose a different color to ensure good visibility and contrast with the surrounding content, taking into account the value of currentcolor, the background, shadows, and other factors."}],syntax:"auto | <color>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/caret-color"}],description:"Controls the color of the text insertion indicator.",restrictions:["color","enum"]},{name:"clear",values:[{name:"both",description:"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating and left-floating boxes that resulted from elements earlier in the source document."},{name:"left",description:"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any left-floating boxes that resulted from elements earlier in the source document."},{name:"none",description:"No constraint on the box's position with respect to floats."},{name:"right",description:"The clearance of the generated box is set to the amount necessary to place the top border edge below the bottom outer edge of any right-floating boxes that resulted from elements earlier in the source document."}],syntax:"none | left | right | both | inline-start | inline-end",relevance:84,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/clear"}],description:"Indicates which sides of an element's box(es) may not be adjacent to an earlier floating box. The 'clear' property does not consider floats inside the element itself or in other block formatting contexts.",restrictions:["enum"]},{name:"clip",values:[{name:"auto",description:"The element does not clip."},{name:"rect()",description:"Specifies offsets from the edges of the border box."}],syntax:"<shape> | auto",relevance:73,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/clip"}],description:"Deprecated. Use the 'clip-path' property when support allows. Defines the visible portion of an element’s box.",restrictions:["enum"]},{name:"clip-path",values:[{name:"none",description:"No clipping path gets created."},{name:"url()",description:"References a <clipPath> element to create a clipping path."}],syntax:"<clip-source> | [ <basic-shape> || <geometry-box> ] | none",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/clip-path"}],description:"Specifies a clipping path where everything inside the path is visible and everything outside is clipped out.",restrictions:["url","shape","geometry-box","enum"]},{name:"clip-rule",browsers:["E","C5","FF3","IE10","O9","S6"],values:[{name:"evenodd",description:"Determines the ‘insideness’ of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses."},{name:"nonzero",description:"Determines the ‘insideness’ of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray."}],relevance:50,description:"Indicates the algorithm which is to be used to determine what parts of the canvas are included inside the shape.",restrictions:["enum"]},{name:"color",syntax:"<color>",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/color"}],description:"Sets the color of an element's text",restrictions:["color"]},{name:"color-interpolation-filters",browsers:["E","C5","FF3","IE10","O9","S6"],values:[{name:"auto",description:"Color operations are not required to occur in a particular color space."},{name:"linearRGB",description:"Color operations should occur in the linearized RGB color space."},{name:"sRGB",description:"Color operations should occur in the sRGB color space."}],relevance:50,description:"Specifies the color space for imaging operations performed via filter effects.",restrictions:["enum"]},{name:"column-count",values:[{name:"auto",description:"Determines the number of columns by the 'column-width' property and the element width."}],syntax:"<integer> | auto",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-count"}],description:"Describes the optimal number of columns into which the content of the element will be flowed.",restrictions:["integer","enum"]},{name:"column-fill",values:[{name:"auto",description:"Fills columns sequentially."},{name:"balance",description:"Balance content equally between columns, if possible."}],syntax:"auto | balance | balance-all",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-fill"}],description:"In continuous media, this property will only be consulted if the length of columns has been constrained. Otherwise, columns will automatically be balanced.",restrictions:["enum"]},{name:"column-gap",values:[{name:"normal",description:"User agent specific and typically equivalent to 1em."}],syntax:"normal | <length-percentage>",relevance:52,description:"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.",restrictions:["length","enum"]},{name:"column-rule",syntax:"<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule"}],description:"Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.",restrictions:["length","line-width","line-style","color"]},{name:"column-rule-color",syntax:"<color>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule-color"}],description:"Sets the color of the column rule",restrictions:["color"]},{name:"column-rule-style",syntax:"<'border-style'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule-style"}],description:"Sets the style of the rule between columns of an element.",restrictions:["line-style"]},{name:"column-rule-width",syntax:"<'border-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-rule-width"}],description:"Sets the width of the rule between columns. Negative values are not allowed.",restrictions:["length","line-width"]},{name:"columns",values:[{name:"auto",description:"The width depends on the values of other properties."}],syntax:"<'column-width'> || <'column-count'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/columns"}],description:"A shorthand property which sets both 'column-width' and 'column-count'.",restrictions:["length","integer","enum"]},{name:"column-span",values:[{name:"all",description:"The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear."},{name:"none",description:"The element does not span multiple columns."}],syntax:"none | all",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-span"}],description:"Describes the page/column break behavior after the generated box.",restrictions:["enum"]},{name:"column-width",values:[{name:"auto",description:"The width depends on the values of other properties."}],syntax:"<length> | auto",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/column-width"}],description:"Describes the width of columns in multicol elements.",restrictions:["length","enum"]},{name:"contain",browsers:["E79","FF69","C52","O40"],values:[{name:"none",description:"Indicates that the property has no effect."},{name:"strict",description:"Turns on all forms of containment for the element."},{name:"content",description:"All containment rules except size are applied to the element."},{name:"size",description:"For properties that can have effects on more than just an element and its descendants, those effects don't escape the containing element."},{name:"layout",description:"Turns on layout containment for the element."},{name:"style",description:"Turns on style containment for the element."},{name:"paint",description:"Turns on paint containment for the element."}],syntax:"none | strict | content | [ size || layout || style || paint ]",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/contain"}],description:"Indicates that an element and its contents are, as much as possible, independent of the rest of the document tree.",restrictions:["enum"]},{name:"content",values:[{name:"attr()",description:"The attr(n) function returns as a string the value of attribute n for the subject of the selector."},{name:"counter(name)",description:"Counters are denoted by identifiers (see the 'counter-increment' and 'counter-reset' properties)."},{name:"icon",description:"The (pseudo-)element is replaced in its entirety by the resource referenced by its 'icon' property, and treated as a replaced element."},{name:"none",description:"On elements, this inhibits the children of the element from being rendered as children of this element, as if the element was empty. On pseudo-elements it causes the pseudo-element to have no content."},{name:"normal",description:"See http://www.w3.org/TR/css3-content/#content for computation rules."},{name:"url()"}],syntax:"normal | none | [ <content-replacement> | <content-list> ] [/ <string> ]?",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/content"}],description:"Determines which page-based occurrence of a given element is applied to a counter or string value.",restrictions:["string","url"]},{name:"counter-increment",values:[{name:"none",description:"This element does not alter the value of any counters."}],syntax:"[ <custom-ident> <integer>? ]+ | none",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/counter-increment"}],description:"Manipulate the value of existing counters.",restrictions:["identifier","integer"]},{name:"counter-reset",values:[{name:"none",description:"The counter is not modified."}],syntax:"[ <custom-ident> <integer>? ]+ | none",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/counter-reset"}],description:"Property accepts one or more names of counters (identifiers), each one optionally followed by an integer. The integer gives the value that the counter is set to on each occurrence of the element.",restrictions:["identifier","integer"]},{name:"cursor",values:[{name:"alias",description:"Indicates an alias of/shortcut to something is to be created. Often rendered as an arrow with a small curved arrow next to it."},{name:"all-scroll",description:"Indicates that the something can be scrolled in any direction. Often rendered as arrows pointing up, down, left, and right with a dot in the middle."},{name:"auto",description:"The UA determines the cursor to display based on the current context."},{name:"cell",description:"Indicates that a cell or set of cells may be selected. Often rendered as a thick plus-sign with a dot in the middle."},{name:"col-resize",description:"Indicates that the item/column can be resized horizontally. Often rendered as arrows pointing left and right with a vertical bar separating them."},{name:"context-menu",description:"A context menu is available for the object under the cursor. Often rendered as an arrow with a small menu-like graphic next to it."},{name:"copy",description:"Indicates something is to be copied. Often rendered as an arrow with a small plus sign next to it."},{name:"crosshair",description:"A simple crosshair (e.g., short line segments resembling a '+' sign). Often used to indicate a two dimensional bitmap selection mode."},{name:"default",description:"The platform-dependent default cursor. Often rendered as an arrow."},{name:"e-resize",description:"Indicates that east edge is to be moved."},{name:"ew-resize",description:"Indicates a bidirectional east-west resize cursor."},{name:"grab",description:"Indicates that something can be grabbed."},{name:"grabbing",description:"Indicates that something is being grabbed."},{name:"help",description:"Help is available for the object under the cursor. Often rendered as a question mark or a balloon."},{name:"move",description:"Indicates something is to be moved."},{name:"-moz-grab",description:"Indicates that something can be grabbed."},{name:"-moz-grabbing",description:"Indicates that something is being grabbed."},{name:"-moz-zoom-in",description:"Indicates that something can be zoomed (magnified) in."},{name:"-moz-zoom-out",description:"Indicates that something can be zoomed (magnified) out."},{name:"ne-resize",description:"Indicates that movement starts from north-east corner."},{name:"nesw-resize",description:"Indicates a bidirectional north-east/south-west cursor."},{name:"no-drop",description:"Indicates that the dragged item cannot be dropped at the current cursor location. Often rendered as a hand or pointer with a small circle with a line through it."},{name:"none",description:"No cursor is rendered for the element."},{name:"not-allowed",description:"Indicates that the requested action will not be carried out. Often rendered as a circle with a line through it."},{name:"n-resize",description:"Indicates that north edge is to be moved."},{name:"ns-resize",description:"Indicates a bidirectional north-south cursor."},{name:"nw-resize",description:"Indicates that movement starts from north-west corner."},{name:"nwse-resize",description:"Indicates a bidirectional north-west/south-east cursor."},{name:"pointer",description:"The cursor is a pointer that indicates a link."},{name:"progress",description:"A progress indicator. The program is performing some processing, but is different from 'wait' in that the user may still interact with the program. Often rendered as a spinning beach ball, or an arrow with a watch or hourglass."},{name:"row-resize",description:"Indicates that the item/row can be resized vertically. Often rendered as arrows pointing up and down with a horizontal bar separating them."},{name:"se-resize",description:"Indicates that movement starts from south-east corner."},{name:"s-resize",description:"Indicates that south edge is to be moved."},{name:"sw-resize",description:"Indicates that movement starts from south-west corner."},{name:"text",description:"Indicates text that may be selected. Often rendered as a vertical I-beam."},{name:"vertical-text",description:"Indicates vertical-text that may be selected. Often rendered as a horizontal I-beam."},{name:"wait",description:"Indicates that the program is busy and the user should wait. Often rendered as a watch or hourglass."},{name:"-webkit-grab",description:"Indicates that something can be grabbed."},{name:"-webkit-grabbing",description:"Indicates that something is being grabbed."},{name:"-webkit-zoom-in",description:"Indicates that something can be zoomed (magnified) in."},{name:"-webkit-zoom-out",description:"Indicates that something can be zoomed (magnified) out."},{name:"w-resize",description:"Indicates that west edge is to be moved."},{name:"zoom-in",description:"Indicates that something can be zoomed (magnified) in."},{name:"zoom-out",description:"Indicates that something can be zoomed (magnified) out."}],syntax:"[ [ <url> [ <x> <y> ]? , ]* [ auto | default | none | context-menu | help | pointer | progress | wait | cell | crosshair | text | vertical-text | alias | copy | move | no-drop | not-allowed | e-resize | n-resize | ne-resize | nw-resize | s-resize | se-resize | sw-resize | w-resize | ew-resize | ns-resize | nesw-resize | nwse-resize | col-resize | row-resize | all-scroll | zoom-in | zoom-out | grab | grabbing ] ]",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/cursor"}],description:"Allows control over cursor appearance in an element",restrictions:["url","number","enum"]},{name:"direction",values:[{name:"ltr",description:"Left-to-right direction."},{name:"rtl",description:"Right-to-left direction."}],syntax:"ltr | rtl",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/direction"}],description:"Specifies the inline base direction or directionality of any bidi paragraph, embedding, isolate, or override established by the box. Note: for HTML content use the 'dir' attribute and 'bdo' element rather than this property.",restrictions:["enum"]},{name:"display",values:[{name:"block",description:"The element generates a block-level box"},{name:"contents",description:"The element itself does not generate any boxes, but its children and pseudo-elements still generate boxes as normal."},{name:"flex",description:"The element generates a principal flex container box and establishes a flex formatting context."},{name:"flexbox",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"flow-root",description:"The element generates a block container box, and lays out its contents using flow layout."},{name:"grid",description:"The element generates a principal grid container box, and establishes a grid formatting context."},{name:"inline",description:"The element generates an inline-level box."},{name:"inline-block",description:"A block box, which itself is flowed as a single inline box, similar to a replaced element. The inside of an inline-block is formatted as a block box, and the box itself is formatted as an inline box."},{name:"inline-flex",description:"Inline-level flex container."},{name:"inline-flexbox",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"inline-table",description:"Inline-level table wrapper box containing table box."},{name:"list-item",description:"One or more block boxes and one marker box."},{name:"-moz-box",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"-moz-deck"},{name:"-moz-grid"},{name:"-moz-grid-group"},{name:"-moz-grid-line"},{name:"-moz-groupbox"},{name:"-moz-inline-box",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"-moz-inline-grid"},{name:"-moz-inline-stack"},{name:"-moz-marker"},{name:"-moz-popup"},{name:"-moz-stack"},{name:"-ms-flexbox",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"-ms-grid",description:"The element generates a principal grid container box, and establishes a grid formatting context."},{name:"-ms-inline-flexbox",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"-ms-inline-grid",description:"Inline-level grid container."},{name:"none",description:"The element and its descendants generates no boxes."},{name:"ruby",description:"The element generates a principal ruby container box, and establishes a ruby formatting context."},{name:"ruby-base"},{name:"ruby-base-container"},{name:"ruby-text"},{name:"ruby-text-container"},{name:"run-in",description:"The element generates a run-in box. Run-in elements act like inlines or blocks, depending on the surrounding elements."},{name:"table",description:"The element generates a principal table wrapper box containing an additionally-generated table box, and establishes a table formatting context."},{name:"table-caption"},{name:"table-cell"},{name:"table-column"},{name:"table-column-group"},{name:"table-footer-group"},{name:"table-header-group"},{name:"table-row"},{name:"table-row-group"},{name:"-webkit-box",description:"The element lays out its contents using flow layout (block-and-inline layout). Standardized as 'flex'."},{name:"-webkit-flex",description:"The element lays out its contents using flow layout (block-and-inline layout)."},{name:"-webkit-inline-box",description:"Inline-level flex container. Standardized as 'inline-flex'"},{name:"-webkit-inline-flex",description:"Inline-level flex container."}],syntax:"[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/display"}],description:"In combination with 'float' and 'position', determines the type of box or boxes that are generated for an element.",restrictions:["enum"]},{name:"empty-cells",values:[{name:"hide",description:"No borders or backgrounds are drawn around/behind empty cells."},{name:"-moz-show-background"},{name:"show",description:"Borders and backgrounds are drawn around/behind empty cells (like normal cells)."}],syntax:"show | hide",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/empty-cells"}],description:"In the separated borders model, this property controls the rendering of borders and backgrounds around cells that have no visible content.",restrictions:["enum"]},{name:"enable-background",values:[{name:"accumulate",description:"If the ancestor container element has a property of new, then all graphics elements within the current container are rendered both on the parent's background image and onto the target."},{name:"new",description:"Create a new background image canvas. All children of the current container element can access the background, and they will be rendered onto both the parent's background image canvas in addition to the target device."}],relevance:50,description:"Deprecated. Use 'isolation' property instead when support allows. Specifies how the accumulation of the background image is managed.",restrictions:["integer","length","percentage","enum"]},{name:"fallback",browsers:["FF33"],syntax:"<counter-style-name>",relevance:50,description:"@counter-style descriptor. Specifies a fallback counter style to be used when the current counter style can’t create a representation for a given counter value.",restrictions:["identifier"]},{name:"fill",values:[{name:"url()",description:"A URL reference to a paint server element, which is an element that defines a paint server: ‘hatch’, ‘linearGradient’, ‘mesh’, ‘pattern’, ‘radialGradient’ and ‘solidcolor’."},{name:"none",description:"No paint is applied in this layer."}],relevance:74,description:"Paints the interior of the given graphical element.",restrictions:["color","enum","url"]},{name:"fill-opacity",relevance:52,description:"Specifies the opacity of the painting operation used to paint the interior the current object.",restrictions:["number(0-1)"]},{name:"fill-rule",values:[{name:"evenodd",description:"Determines the ‘insideness’ of a point on the canvas by drawing a ray from that point to infinity in any direction and counting the number of path segments from the given shape that the ray crosses."},{name:"nonzero",description:"Determines the ‘insideness’ of a point on the canvas by drawing a ray from that point to infinity in any direction and then examining the places where a segment of the shape crosses the ray."}],relevance:50,description:"Indicates the algorithm (or winding rule) which is to be used to determine what parts of the canvas are included inside the shape.",restrictions:["enum"]},{name:"filter",browsers:["E12","FF35","S9.1","C53","O40"],values:[{name:"none",description:"No filter effects are applied."},{name:"blur()",description:"Applies a Gaussian blur to the input image."},{name:"brightness()",description:"Applies a linear multiplier to input image, making it appear more or less bright."},{name:"contrast()",description:"Adjusts the contrast of the input."},{name:"drop-shadow()",description:"Applies a drop shadow effect to the input image."},{name:"grayscale()",description:"Converts the input image to grayscale."},{name:"hue-rotate()",description:"Applies a hue rotation on the input image. "},{name:"invert()",description:"Inverts the samples in the input image."},{name:"opacity()",description:"Applies transparency to the samples in the input image."},{name:"saturate()",description:"Saturates the input image."},{name:"sepia()",description:"Converts the input image to sepia."},{name:"url()",browsers:["E12","FF35","S9.1","C53","O40"],description:"A filter reference to a <filter> element."}],syntax:"none | <filter-function-list>",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/filter"}],description:"Processes an element’s rendering before it is displayed in the document, by applying one or more filter effects.",restrictions:["enum","url"]},{name:"flex",values:[{name:"auto",description:"Retrieves the value of the main size property as the used 'flex-basis'."},{name:"content",description:"Indicates automatic sizing, based on the flex item’s content."},{name:"none",description:"Expands to '0 0 auto'."}],syntax:"none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]",relevance:77,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex"}],description:"Specifies the components of a flexible length: the flex grow factor and flex shrink factor, and the flex basis.",restrictions:["length","number","percentage"]},{name:"flex-basis",values:[{name:"auto",description:"Retrieves the value of the main size property as the used 'flex-basis'."},{name:"content",description:"Indicates automatic sizing, based on the flex item’s content."}],syntax:"content | <'width'>",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-basis"}],description:"Sets the flex basis.",restrictions:["length","number","percentage"]},{name:"flex-direction",values:[{name:"column",description:"The flex container’s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"row",description:"The flex container’s main axis has the same orientation as the inline axis of the current writing mode."},{name:"row-reverse",description:"Same as 'row', except the main-start and main-end directions are swapped."}],syntax:"row | row-reverse | column | column-reverse",relevance:78,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-direction"}],description:"Specifies how flex items are placed in the flex container, by setting the direction of the flex container’s main axis.",restrictions:["enum"]},{name:"flex-flow",values:[{name:"column",description:"The flex container’s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"nowrap",description:"The flex container is single-line."},{name:"row",description:"The flex container’s main axis has the same orientation as the inline axis of the current writing mode."},{name:"row-reverse",description:"Same as 'row', except the main-start and main-end directions are swapped."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],syntax:"<'flex-direction'> || <'flex-wrap'>",relevance:58,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-flow"}],description:"Specifies how flexbox items are placed in the flexbox.",restrictions:["enum"]},{name:"flex-grow",syntax:"<number>",relevance:71,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-grow"}],description:"Sets the flex grow factor. Negative numbers are invalid.",restrictions:["number"]},{name:"flex-shrink",syntax:"<number>",relevance:69,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-shrink"}],description:"Sets the flex shrink factor. Negative numbers are invalid.",restrictions:["number"]},{name:"flex-wrap",values:[{name:"nowrap",description:"The flex container is single-line."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],syntax:"nowrap | wrap | wrap-reverse",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/flex-wrap"}],description:"Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.",restrictions:["enum"]},{name:"float",values:[{name:"inline-end",description:"A keyword indicating that the element must float on the end side of its containing block. That is the right side with ltr scripts, and the left side with rtl scripts."},{name:"inline-start",description:"A keyword indicating that the element must float on the start side of its containing block. That is the left side with ltr scripts, and the right side with rtl scripts."},{name:"left",description:"The element generates a block box that is floated to the left. Content flows on the right side of the box, starting at the top (subject to the 'clear' property)."},{name:"none",description:"The box is not floated."},{name:"right",description:"Similar to 'left', except the box is floated to the right, and content flows on the left side of the box, starting at the top."}],syntax:"left | right | none | inline-start | inline-end",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/float"}],description:"Specifies how a box should be floated. It may be set for any element, but only applies to elements that generate boxes that are not absolutely positioned.",restrictions:["enum"]},{name:"flood-color",browsers:["E","C5","FF3","IE10","O9","S6"],relevance:50,description:"Indicates what color to use to flood the current filter primitive subregion.",restrictions:["color"]},{name:"flood-opacity",browsers:["E","C5","FF3","IE10","O9","S6"],relevance:50,description:"Indicates what opacity to use to flood the current filter primitive subregion.",restrictions:["number(0-1)","percentage"]},{name:"font",values:[{name:"100",description:"Thin"},{name:"200",description:"Extra Light (Ultra Light)"},{name:"300",description:"Light"},{name:"400",description:"Normal"},{name:"500",description:"Medium"},{name:"600",description:"Semi Bold (Demi Bold)"},{name:"700",description:"Bold"},{name:"800",description:"Extra Bold (Ultra Bold)"},{name:"900",description:"Black (Heavy)"},{name:"bold",description:"Same as 700"},{name:"bolder",description:"Specifies the weight of the face bolder than the inherited value."},{name:"caption",description:"The font used for captioned controls (e.g., buttons, drop-downs, etc.)."},{name:"icon",description:"The font used to label icons."},{name:"italic",description:"Selects a font that is labeled 'italic', or, if that is not available, one labeled 'oblique'."},{name:"large"},{name:"larger"},{name:"lighter",description:"Specifies the weight of the face lighter than the inherited value."},{name:"medium"},{name:"menu",description:"The font used in menus (e.g., dropdown menus and menu lists)."},{name:"message-box",description:"The font used in dialog boxes."},{name:"normal",description:"Specifies a face that is not labeled as a small-caps font."},{name:"oblique",description:"Selects a font that is labeled 'oblique'."},{name:"small"},{name:"small-caps",description:"Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font."},{name:"small-caption",description:"The font used for labeling small controls."},{name:"smaller"},{name:"status-bar",description:"The font used in window status bars."},{name:"x-large"},{name:"x-small"},{name:"xx-large"},{name:"xx-small"}],syntax:"[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar",relevance:82,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font"}],description:"Shorthand property for setting 'font-style', 'font-variant', 'font-weight', 'font-size', 'line-height', and 'font-family', at the same place in the style sheet. The syntax of this property is based on a traditional typographical shorthand notation to set multiple properties related to fonts.",restrictions:["font"]},{name:"font-family",values:[{name:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif"},{name:"Arial, Helvetica, sans-serif"},{name:"Cambria, Cochin, Georgia, Times, 'Times New Roman', serif"},{name:"'Courier New', Courier, monospace"},{name:"cursive"},{name:"fantasy"},{name:"'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif"},{name:"Georgia, 'Times New Roman', Times, serif"},{name:"'Gill Sans', 'Gill Sans MT', Calibri, 'Trebuchet MS', sans-serif"},{name:"Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif"},{name:"'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif"},{name:"monospace"},{name:"sans-serif"},{name:"'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"},{name:"serif"},{name:"'Times New Roman', Times, serif"},{name:"'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif"},{name:"Verdana, Geneva, Tahoma, sans-serif"}],syntax:"<family-name>",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-family"}],description:"Specifies a prioritized list of font family names or generic family names. A user agent iterates through the list of family names until it matches an available font that contains a glyph for the character to be rendered.",restrictions:["font"]},{name:"font-feature-settings",values:[{name:'"aalt"',description:"Access All Alternates."},{name:'"abvf"',description:"Above-base Forms. Required in Khmer script."},{name:'"abvm"',description:"Above-base Mark Positioning. Required in Indic scripts."},{name:'"abvs"',description:"Above-base Substitutions. Required in Indic scripts."},{name:'"afrc"',description:"Alternative Fractions."},{name:'"akhn"',description:"Akhand. Required in most Indic scripts."},{name:'"blwf"',description:"Below-base Form. Required in a number of Indic scripts."},{name:'"blwm"',description:"Below-base Mark Positioning. Required in Indic scripts."},{name:'"blws"',description:"Below-base Substitutions. Required in Indic scripts."},{name:'"calt"',description:"Contextual Alternates."},{name:'"case"',description:"Case-Sensitive Forms. Applies only to European scripts; particularly prominent in Spanish-language setting."},{name:'"ccmp"',description:"Glyph Composition/Decomposition."},{name:'"cfar"',description:"Conjunct Form After Ro. Required in Khmer scripts."},{name:'"cjct"',description:"Conjunct Forms. Required in Indic scripts that show similarity to Devanagari."},{name:'"clig"',description:"Contextual Ligatures."},{name:'"cpct"',description:"Centered CJK Punctuation. Used primarily in Chinese fonts."},{name:'"cpsp"',description:"Capital Spacing. Should not be used in connecting scripts (e.g. most Arabic)."},{name:'"cswh"',description:"Contextual Swash."},{name:'"curs"',description:"Cursive Positioning. Can be used in any cursive script."},{name:'"c2pc"',description:"Petite Capitals From Capitals. Applies only to bicameral scripts."},{name:'"c2sc"',description:"Small Capitals From Capitals. Applies only to bicameral scripts."},{name:'"dist"',description:"Distances. Required in Indic scripts."},{name:'"dlig"',description:"Discretionary ligatures."},{name:'"dnom"',description:"Denominators."},{name:'"dtls"',description:"Dotless Forms. Applied to math formula layout."},{name:'"expt"',description:"Expert Forms. Applies only to Japanese."},{name:'"falt"',description:"Final Glyph on Line Alternates. Can be used in any cursive script."},{name:'"fin2"',description:"Terminal Form #2. Used only with the Syriac script."},{name:'"fin3"',description:"Terminal Form #3. Used only with the Syriac script."},{name:'"fina"',description:"Terminal Forms. Can be used in any alphabetic script."},{name:'"flac"',description:"Flattened ascent forms. Applied to math formula layout."},{name:'"frac"',description:"Fractions."},{name:'"fwid"',description:"Full Widths. Applies to any script which can use monospaced forms."},{name:'"half"',description:"Half Forms. Required in Indic scripts that show similarity to Devanagari."},{name:'"haln"',description:"Halant Forms. Required in Indic scripts."},{name:'"halt"',description:"Alternate Half Widths. Used only in CJKV fonts."},{name:'"hist"',description:"Historical Forms."},{name:'"hkna"',description:"Horizontal Kana Alternates. Applies only to fonts that support kana (hiragana and katakana)."},{name:'"hlig"',description:"Historical Ligatures."},{name:'"hngl"',description:"Hangul. Korean only."},{name:'"hojo"',description:"Hojo Kanji Forms (JIS X 0212-1990 Kanji Forms). Used only with Kanji script."},{name:'"hwid"',description:"Half Widths. Generally used only in CJKV fonts."},{name:'"init"',description:"Initial Forms. Can be used in any alphabetic script."},{name:'"isol"',description:"Isolated Forms. Can be used in any cursive script."},{name:'"ital"',description:"Italics. Applies mostly to Latin; note that many non-Latin fonts contain Latin as well."},{name:'"jalt"',description:"Justification Alternates. Can be used in any cursive script."},{name:'"jp78"',description:"JIS78 Forms. Applies only to Japanese."},{name:'"jp83"',description:"JIS83 Forms. Applies only to Japanese."},{name:'"jp90"',description:"JIS90 Forms. Applies only to Japanese."},{name:'"jp04"',description:"JIS2004 Forms. Applies only to Japanese."},{name:'"kern"',description:"Kerning."},{name:'"lfbd"',description:"Left Bounds."},{name:'"liga"',description:"Standard Ligatures."},{name:'"ljmo"',description:"Leading Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported."},{name:'"lnum"',description:"Lining Figures."},{name:'"locl"',description:"Localized Forms."},{name:'"ltra"',description:"Left-to-right glyph alternates."},{name:'"ltrm"',description:"Left-to-right mirrored forms."},{name:'"mark"',description:"Mark Positioning."},{name:'"med2"',description:"Medial Form #2. Used only with the Syriac script."},{name:'"medi"',description:"Medial Forms."},{name:'"mgrk"',description:"Mathematical Greek."},{name:'"mkmk"',description:"Mark to Mark Positioning."},{name:'"nalt"',description:"Alternate Annotation Forms."},{name:'"nlck"',description:"NLC Kanji Forms. Used only with Kanji script."},{name:'"nukt"',description:"Nukta Forms. Required in Indic scripts.."},{name:'"numr"',description:"Numerators."},{name:'"onum"',description:"Oldstyle Figures."},{name:'"opbd"',description:"Optical Bounds."},{name:'"ordn"',description:"Ordinals. Applies mostly to Latin script."},{name:'"ornm"',description:"Ornaments."},{name:'"palt"',description:"Proportional Alternate Widths. Used mostly in CJKV fonts."},{name:'"pcap"',description:"Petite Capitals."},{name:'"pkna"',description:"Proportional Kana. Generally used only in Japanese fonts."},{name:'"pnum"',description:"Proportional Figures."},{name:'"pref"',description:"Pre-base Forms. Required in Khmer and Myanmar (Burmese) scripts and southern Indic scripts that may display a pre-base form of Ra."},{name:'"pres"',description:"Pre-base Substitutions. Required in Indic scripts."},{name:'"pstf"',description:"Post-base Forms. Required in scripts of south and southeast Asia that have post-base forms for consonants eg: Gurmukhi, Malayalam, Khmer."},{name:'"psts"',description:"Post-base Substitutions."},{name:'"pwid"',description:"Proportional Widths."},{name:'"qwid"',description:"Quarter Widths. Generally used only in CJKV fonts."},{name:'"rand"',description:"Randomize."},{name:'"rclt"',description:"Required Contextual Alternates. May apply to any script, but is especially important for many styles of Arabic."},{name:'"rlig"',description:"Required Ligatures. Applies to Arabic and Syriac. May apply to some other scripts."},{name:'"rkrf"',description:"Rakar Forms. Required in Devanagari and Gujarati scripts."},{name:'"rphf"',description:"Reph Form. Required in Indic scripts. E.g. Devanagari, Kannada."},{name:'"rtbd"',description:"Right Bounds."},{name:'"rtla"',description:"Right-to-left alternates."},{name:'"rtlm"',description:"Right-to-left mirrored forms."},{name:'"ruby"',description:"Ruby Notation Forms. Applies only to Japanese."},{name:'"salt"',description:"Stylistic Alternates."},{name:'"sinf"',description:"Scientific Inferiors."},{name:'"size"',description:"Optical size."},{name:'"smcp"',description:"Small Capitals. Applies only to bicameral scripts."},{name:'"smpl"',description:"Simplified Forms. Applies only to Chinese and Japanese."},{name:'"ssty"',description:"Math script style alternates."},{name:'"stch"',description:"Stretching Glyph Decomposition."},{name:'"subs"',description:"Subscript."},{name:'"sups"',description:"Superscript."},{name:'"swsh"',description:"Swash. Does not apply to ideographic scripts."},{name:'"titl"',description:"Titling."},{name:'"tjmo"',description:"Trailing Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported."},{name:'"tnam"',description:"Traditional Name Forms. Applies only to Japanese."},{name:'"tnum"',description:"Tabular Figures."},{name:'"trad"',description:"Traditional Forms. Applies only to Chinese and Japanese."},{name:'"twid"',description:"Third Widths. Generally used only in CJKV fonts."},{name:'"unic"',description:"Unicase."},{name:'"valt"',description:"Alternate Vertical Metrics. Applies only to scripts with vertical writing modes."},{name:'"vatu"',description:"Vattu Variants. Used for Indic scripts. E.g. Devanagari."},{name:'"vert"',description:"Vertical Alternates. Applies only to scripts with vertical writing modes."},{name:'"vhal"',description:"Alternate Vertical Half Metrics. Used only in CJKV fonts."},{name:'"vjmo"',description:"Vowel Jamo Forms. Required for Hangul script when Ancient Hangul writing system is supported."},{name:'"vkna"',description:"Vertical Kana Alternates. Applies only to fonts that support kana (hiragana and katakana)."},{name:'"vkrn"',description:"Vertical Kerning."},{name:'"vpal"',description:"Proportional Alternate Vertical Metrics. Used mostly in CJKV fonts."},{name:'"vrt2"',description:"Vertical Alternates and Rotation. Applies only to scripts with vertical writing modes."},{name:'"zero"',description:"Slashed Zero."},{name:"normal",description:"No change in glyph substitution or positioning occurs."},{name:"off",description:"Disable feature."},{name:"on",description:"Enable feature."}],syntax:"normal | <feature-tag-value>#",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-feature-settings"}],description:"Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.",restrictions:["string","integer"]},{name:"font-kerning",browsers:["E79","FF32","S9","C33","O20"],values:[{name:"auto",description:"Specifies that kerning is applied at the discretion of the user agent."},{name:"none",description:"Specifies that kerning is not applied."},{name:"normal",description:"Specifies that kerning is applied."}],syntax:"auto | normal | none",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-kerning"}],description:"Kerning is the contextual adjustment of inter-glyph spacing. This property controls metric kerning, kerning that utilizes adjustment data contained in the font.",restrictions:["enum"]},{name:"font-language-override",browsers:["FF34"],values:[{name:"normal",description:"Implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering."}],syntax:"normal | <string>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-language-override"}],description:"The value of 'normal' implies that when rendering with OpenType fonts the language of the document is used to infer the OpenType language system, used to select language specific features when rendering.",restrictions:["string"]},{name:"font-size",values:[{name:"large"},{name:"larger"},{name:"medium"},{name:"small"},{name:"smaller"},{name:"x-large"},{name:"x-small"},{name:"xx-large"},{name:"xx-small"}],syntax:"<absolute-size> | <relative-size> | <length-percentage>",relevance:94,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-size"}],description:"Indicates the desired height of glyphs from the font. For scalable fonts, the font-size is a scale factor applied to the EM unit of the font. (Note that certain glyphs may bleed outside their EM box.) For non-scalable fonts, the font-size is converted into absolute units and matched against the declared font-size of the font, using the same absolute coordinate space for both of the matched values.",restrictions:["length","percentage"]},{name:"font-size-adjust",browsers:["E79","FF40","C43","O30"],values:[{name:"none",description:"Do not preserve the font’s x-height."}],syntax:"none | <number>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-size-adjust"}],description:"Preserves the readability of text when font fallback occurs by adjusting the font-size so that the x-height is the same regardless of the font used.",restrictions:["number"]},{name:"font-stretch",values:[{name:"condensed"},{name:"expanded"},{name:"extra-condensed"},{name:"extra-expanded"},{name:"narrower",description:"Indicates a narrower value relative to the width of the parent element."},{name:"normal"},{name:"semi-condensed"},{name:"semi-expanded"},{name:"ultra-condensed"},{name:"ultra-expanded"},{name:"wider",description:"Indicates a wider value relative to the width of the parent element."}],syntax:"<font-stretch-absolute>{1,2}",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-stretch"}],description:"Selects a normal, condensed, or expanded face from a font family.",restrictions:["enum"]},{name:"font-style",values:[{name:"italic",description:"Selects a font that is labeled as an 'italic' face, or an 'oblique' face if one is not"},{name:"normal",description:"Selects a face that is classified as 'normal'."},{name:"oblique",description:"Selects a font that is labeled as an 'oblique' face, or an 'italic' face if one is not."}],syntax:"normal | italic | oblique <angle>{0,2}",relevance:83,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-style"}],description:"Allows italic or oblique faces to be selected. Italic forms are generally cursive in nature while oblique faces are typically sloped versions of the regular face.",restrictions:["enum"]},{name:"font-synthesis",browsers:["FF34","S9"],values:[{name:"none",description:"Disallow all synthetic faces."},{name:"style",description:"Allow synthetic italic faces."},{name:"weight",description:"Allow synthetic bold faces."}],syntax:"none | [ weight || style ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-synthesis"}],description:"Controls whether user agents are allowed to synthesize bold or oblique font faces when a font family lacks bold or italic faces.",restrictions:["enum"]},{name:"font-variant",values:[{name:"normal",description:"Specifies a face that is not labeled as a small-caps font."},{name:"small-caps",description:"Specifies a font that is labeled as a small-caps font. If a genuine small-caps font is not available, user agents should simulate a small-caps font."}],syntax:"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic(<feature-value-name>) || historical-forms || styleset(<feature-value-name>#) || character-variant(<feature-value-name>#) || swash(<feature-value-name>) || ornaments(<feature-value-name>) || annotation(<feature-value-name>) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]",relevance:63,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant"}],description:"Specifies variant representations of the font",restrictions:["enum"]},{name:"font-variant-alternates",browsers:["FF34"],values:[{name:"annotation()",description:"Enables display of alternate annotation forms."},{name:"character-variant()",description:"Enables display of specific character variants."},{name:"historical-forms",description:"Enables display of historical forms."},{name:"normal",description:"None of the features are enabled."},{name:"ornaments()",description:"Enables replacement of default glyphs with ornaments, if provided in the font."},{name:"styleset()",description:"Enables display with stylistic sets."},{name:"stylistic()",description:"Enables display of stylistic alternates."},{name:"swash()",description:"Enables display of swash glyphs."}],syntax:"normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates"}],description:"For any given character, fonts can provide a variety of alternate glyphs in addition to the default glyph for that character. This property provides control over the selection of these alternate glyphs.",restrictions:["enum"]},{name:"font-variant-caps",browsers:["E79","FF34","C52","O39"],values:[{name:"all-petite-caps",description:"Enables display of petite capitals for both upper and lowercase letters."},{name:"all-small-caps",description:"Enables display of small capitals for both upper and lowercase letters."},{name:"normal",description:"None of the features are enabled."},{name:"petite-caps",description:"Enables display of petite capitals."},{name:"small-caps",description:"Enables display of small capitals. Small-caps glyphs typically use the form of uppercase letters but are reduced to the size of lowercase letters."},{name:"titling-caps",description:"Enables display of titling capitals."},{name:"unicase",description:"Enables display of mixture of small capitals for uppercase letters with normal lowercase letters."}],syntax:"normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-caps"}],description:"Specifies control over capitalized forms.",restrictions:["enum"]},{name:"font-variant-east-asian",browsers:["E79","FF34","C63","O50"],values:[{name:"full-width",description:"Enables rendering of full-width variants."},{name:"jis04",description:"Enables rendering of JIS04 forms."},{name:"jis78",description:"Enables rendering of JIS78 forms."},{name:"jis83",description:"Enables rendering of JIS83 forms."},{name:"jis90",description:"Enables rendering of JIS90 forms."},{name:"normal",description:"None of the features are enabled."},{name:"proportional-width",description:"Enables rendering of proportionally-spaced variants."},{name:"ruby",description:"Enables display of ruby variant glyphs."},{name:"simplified",description:"Enables rendering of simplified forms."},{name:"traditional",description:"Enables rendering of traditional forms."}],syntax:"normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian"}],description:"Allows control of glyph substitute and positioning in East Asian text.",restrictions:["enum"]},{name:"font-variant-ligatures",browsers:["E79","FF34","S9.1","C34","O21"],values:[{name:"additional-ligatures",description:"Enables display of additional ligatures."},{name:"common-ligatures",description:"Enables display of common ligatures."},{name:"contextual",browsers:["E79","FF34","S9.1","C34","O21"],description:"Enables display of contextual alternates."},{name:"discretionary-ligatures",description:"Enables display of discretionary ligatures."},{name:"historical-ligatures",description:"Enables display of historical ligatures."},{name:"no-additional-ligatures",description:"Disables display of additional ligatures."},{name:"no-common-ligatures",description:"Disables display of common ligatures."},{name:"no-contextual",browsers:["E79","FF34","S9.1","C34","O21"],description:"Disables display of contextual alternates."},{name:"no-discretionary-ligatures",description:"Disables display of discretionary ligatures."},{name:"no-historical-ligatures",description:"Disables display of historical ligatures."},{name:"none",browsers:["E79","FF34","S9.1","C34","O21"],description:"Disables all ligatures."},{name:"normal",description:"Implies that the defaults set by the font are used."}],syntax:"normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures"}],description:"Specifies control over which ligatures are enabled or disabled. A value of ‘normal’ implies that the defaults set by the font are used.",restrictions:["enum"]},{name:"font-variant-numeric",browsers:["E79","FF34","S9.1","C52","O39"],values:[{name:"diagonal-fractions",description:"Enables display of lining diagonal fractions."},{name:"lining-nums",description:"Enables display of lining numerals."},{name:"normal",description:"None of the features are enabled."},{name:"oldstyle-nums",description:"Enables display of old-style numerals."},{name:"ordinal",description:"Enables display of letter forms used with ordinal numbers."},{name:"proportional-nums",description:"Enables display of proportional numerals."},{name:"slashed-zero",description:"Enables display of slashed zeros."},{name:"stacked-fractions",description:"Enables display of lining stacked fractions."},{name:"tabular-nums",description:"Enables display of tabular numerals."}],syntax:"normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric"}],description:"Specifies control over numerical forms.",restrictions:["enum"]},{name:"font-variant-position",browsers:["FF34"],values:[{name:"normal",description:"None of the features are enabled."},{name:"sub",description:"Enables display of subscript variants (OpenType feature: subs)."},{name:"super",description:"Enables display of superscript variants (OpenType feature: sups)."}],syntax:"normal | sub | super",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variant-position"}],description:"Specifies the vertical position",restrictions:["enum"]},{name:"font-weight",values:[{name:"100",description:"Thin"},{name:"200",description:"Extra Light (Ultra Light)"},{name:"300",description:"Light"},{name:"400",description:"Normal"},{name:"500",description:"Medium"},{name:"600",description:"Semi Bold (Demi Bold)"},{name:"700",description:"Bold"},{name:"800",description:"Extra Bold (Ultra Bold)"},{name:"900",description:"Black (Heavy)"},{name:"bold",description:"Same as 700"},{name:"bolder",description:"Specifies the weight of the face bolder than the inherited value."},{name:"lighter",description:"Specifies the weight of the face lighter than the inherited value."},{name:"normal",description:"Same as 400"}],syntax:"<font-weight-absolute>{1,2}",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-weight"}],description:"Specifies weight of glyphs in the font, their degree of blackness or stroke thickness.",restrictions:["enum"]},{name:"glyph-orientation-horizontal",relevance:50,description:"Controls glyph orientation when the inline-progression-direction is horizontal.",restrictions:["angle","number"]},{name:"glyph-orientation-vertical",values:[{name:"auto",description:"Sets the orientation based on the fullwidth or non-fullwidth characters and the most common orientation."}],relevance:50,description:"Controls glyph orientation when the inline-progression-direction is vertical.",restrictions:["angle","number","enum"]},{name:"grid-area",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line> [ / <grid-line> ]{0,3}",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-area"}],description:"Determine a grid item’s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement. Shorthand for 'grid-row-start', 'grid-column-start', 'grid-row-end', and 'grid-column-end'.",restrictions:["identifier","integer"]},{name:"grid",browsers:["E16","FF52","S10.1","C57","O44"],syntax:"<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid"}],description:"The grid CSS property is a shorthand property that sets all of the explicit grid properties ('grid-template-rows', 'grid-template-columns', and 'grid-template-areas'), and all the implicit grid properties ('grid-auto-rows', 'grid-auto-columns', and 'grid-auto-flow'), in a single declaration.",restrictions:["identifier","length","percentage","string","enum"]},{name:"grid-auto-columns",values:[{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."}],syntax:"<track-size>+",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns"}],description:"Specifies the size of implicitly created columns.",restrictions:["length","percentage"]},{name:"grid-auto-flow",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"row",description:"The auto-placement algorithm places items by filling each row in turn, adding new rows as necessary."},{name:"column",description:"The auto-placement algorithm places items by filling each column in turn, adding new columns as necessary."},{name:"dense",description:"If specified, the auto-placement algorithm uses a “dense” packing algorithm, which attempts to fill in holes earlier in the grid if smaller items come up later."}],syntax:"[ row | column ] || dense",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow"}],description:"Controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.",restrictions:["enum"]},{name:"grid-auto-rows",values:[{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."}],syntax:"<track-size>+",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows"}],description:"Specifies the size of implicitly created rows.",restrictions:["length","percentage"]},{name:"grid-column",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line> [ / <grid-line> ]?",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-column"}],description:"Shorthand for 'grid-column-start' and 'grid-column-end'.",restrictions:["identifier","integer","enum"]},{name:"grid-column-end",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-column-end"}],description:"Determine a grid item’s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-column-gap",browsers:["FF52","C57","S10.1","O44"],status:"obsolete",syntax:"<length-percentage>",relevance:1,description:"Specifies the gutters between grid columns. Replaced by 'column-gap' property.",restrictions:["length"]},{name:"grid-column-start",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-column-start"}],description:"Determine a grid item’s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-gap",browsers:["FF52","C57","S10.1","O44"],status:"obsolete",syntax:"<'grid-row-gap'> <'grid-column-gap'>?",relevance:1,description:"Shorthand that specifies the gutters between grid columns and grid rows in one declaration. Replaced by 'gap' property.",restrictions:["length"]},{name:"grid-row",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line> [ / <grid-line> ]?",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-row"}],description:"Shorthand for 'grid-row-start' and 'grid-row-end'.",restrictions:["identifier","integer","enum"]},{name:"grid-row-end",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-row-end"}],description:"Determine a grid item’s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-row-gap",browsers:["FF52","C57","S10.1","O44"],status:"obsolete",syntax:"<length-percentage>",relevance:1,description:"Specifies the gutters between grid rows. Replaced by 'row-gap' property.",restrictions:["length"]},{name:"grid-row-start",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"auto",description:"The property contributes nothing to the grid item’s placement, indicating auto-placement, an automatic span, or a default span of one."},{name:"span",description:"Contributes a grid span to the grid item’s placement such that the corresponding edge of the grid item’s grid area is N lines from its opposite edge."}],syntax:"<grid-line>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-row-start"}],description:"Determine a grid item’s size and location within the grid by contributing a line, a span, or nothing (automatic) to its grid placement.",restrictions:["identifier","integer","enum"]},{name:"grid-template",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"none",description:"Sets all three properties to their initial values."},{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"subgrid",description:"Sets 'grid-template-rows' and 'grid-template-columns' to 'subgrid', and 'grid-template-areas' to its initial value."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."},{name:"repeat()",description:"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form."}],syntax:"none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template"}],description:"Shorthand for setting grid-template-columns, grid-template-rows, and grid-template-areas in a single declaration.",restrictions:["identifier","length","percentage","string","enum"]},{name:"grid-template-areas",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"none",description:"The grid container doesn’t define any named grid areas."}],syntax:"none | <string>+",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template-areas"}],description:"Specifies named grid areas, which are not associated with any particular grid item, but can be referenced from the grid-placement properties.",restrictions:["string"]},{name:"grid-template-columns",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"none",description:"There is no explicit grid; any rows/columns will be implicitly generated."},{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"subgrid",description:"Indicates that the grid will align to its parent grid in that axis."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."},{name:"repeat()",description:"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form."}],syntax:"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template-columns"}],description:"specifies, as a space-separated track list, the line names and track sizing functions of the grid.",restrictions:["identifier","length","percentage","enum"]},{name:"grid-template-rows",browsers:["E16","FF52","S10.1","C57","O44"],values:[{name:"none",description:"There is no explicit grid; any rows/columns will be implicitly generated."},{name:"min-content",description:"Represents the largest min-content contribution of the grid items occupying the grid track."},{name:"max-content",description:"Represents the largest max-content contribution of the grid items occupying the grid track."},{name:"auto",description:"As a maximum, identical to 'max-content'. As a minimum, represents the largest minimum size (as specified by min-width/min-height) of the grid items occupying the grid track."},{name:"subgrid",description:"Indicates that the grid will align to its parent grid in that axis."},{name:"minmax()",description:"Defines a size range greater than or equal to min and less than or equal to max."},{name:"repeat()",description:"Represents a repeated fragment of the track list, allowing a large number of columns or rows that exhibit a recurring pattern to be written in a more compact form."}],syntax:"none | <track-list> | <auto-track-list> | subgrid <line-name-list>?",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/grid-template-rows"}],description:"specifies, as a space-separated track list, the line names and track sizing functions of the grid.",restrictions:["identifier","length","percentage","string","enum"]},{name:"height",values:[{name:"auto",description:"The height depends on the values of other properties."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>{1,2}",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/height"}],description:"Specifies the height of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.",restrictions:["length","percentage"]},{name:"hyphens",values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],syntax:"none | manual | auto",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/hyphens"}],description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"image-orientation",browsers:["E81","FF26","S13.1","C81","O67"],values:[{name:"flip",description:"After rotating by the precededing angle, the image is flipped horizontally. Defaults to 0deg if the angle is ommitted."},{name:"from-image",description:"If the image has an orientation specified in its metadata, such as EXIF, this value computes to the angle that the metadata specifies is necessary to correctly orient the image."}],syntax:"from-image | <angle> | [ <angle>? flip ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/image-orientation"}],description:"Specifies an orthogonal rotation to be applied to an image before it is laid out.",restrictions:["angle"]},{name:"image-rendering",browsers:["E79","FF3.6","S6","C13","O15"],values:[{name:"auto",description:"The image should be scaled with an algorithm that maximizes the appearance of the image."},{name:"crisp-edges",description:"The image must be scaled with an algorithm that preserves contrast and edges in the image, and which does not smooth colors or introduce blur to the image in the process."},{name:"-moz-crisp-edges",browsers:["E79","FF3.6","S6","C13","O15"]},{name:"optimizeQuality",description:"Deprecated."},{name:"optimizeSpeed",description:"Deprecated."},{name:"pixelated",description:"When scaling the image up, the 'nearest neighbor' or similar algorithm must be used, so that the image appears to be simply composed of very large pixels."}],syntax:"auto | crisp-edges | pixelated",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/image-rendering"}],description:"Provides a hint to the user-agent about what aspects of an image are most important to preserve when the image is scaled, to aid the user-agent in the choice of an appropriate scaling algorithm.",restrictions:["enum"]},{name:"ime-mode",browsers:["E12","FF3","IE5"],values:[{name:"active",description:"The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it."},{name:"auto",description:"No change is made to the current input method editor state. This is the default."},{name:"disabled",description:"The input method editor is disabled and may not be activated by the user."},{name:"inactive",description:"The input method editor is initially inactive, but the user may activate it if they wish."},{name:"normal",description:"The IME state should be normal; this value can be used in a user style sheet to override the page setting."}],status:"obsolete",syntax:"auto | normal | active | inactive | disabled",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/ime-mode"}],description:"Controls the state of the input method editor for text fields.",restrictions:["enum"]},{name:"inline-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"auto",description:"Depends on the values of other properties."}],syntax:"<'width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inline-size"}],description:"Logical 'height'. Mapping depends on the element’s 'writing-mode'.",restrictions:["length","percentage"]},{name:"isolation",browsers:["E79","FF36","S8","C41","O30"],values:[{name:"auto",description:"Elements are not isolated unless an operation is applied that causes the creation of a stacking context."},{name:"isolate",description:"In CSS will turn the element into a stacking context."}],syntax:"auto | isolate",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/isolation"}],description:"In CSS setting to 'isolate' will turn the element into a stacking context. In SVG, it defines whether an element is isolated or not.",restrictions:["enum"]},{name:"justify-content",values:[{name:"center",description:"Flex items are packed toward the center of the line."},{name:"start",description:"The items are packed flush to each other toward the start edge of the alignment container in the main axis."},{name:"end",description:"The items are packed flush to each other toward the end edge of the alignment container in the main axis."},{name:"left",description:"The items are packed flush to each other toward the left edge of the alignment container in the main axis."},{name:"right",description:"The items are packed flush to each other toward the right edge of the alignment container in the main axis."},{name:"safe",description:"If the size of the item overflows the alignment container, the item is instead aligned as if the alignment mode were start."},{name:"unsafe",description:"Regardless of the relative sizes of the item and alignment container, the given alignment value is honored."},{name:"stretch",description:"If the combined size of the alignment subjects is less than the size of the alignment container, any auto-sized alignment subjects have their size increased equally (not proportionally), while still respecting the constraints imposed by max-height/max-width (or equivalent functionality), so that the combined size exactly fills the alignment container."},{name:"space-evenly",description:"The items are evenly distributed within the alignment container along the main axis."},{name:"flex-end",description:"Flex items are packed toward the end of the line."},{name:"flex-start",description:"Flex items are packed toward the start of the line."},{name:"space-around",description:"Flex items are evenly distributed in the line, with half-size spaces on either end."},{name:"space-between",description:"Flex items are evenly distributed in the line."},{name:"baseline",description:"Specifies participation in first-baseline alignment."},{name:"first baseline",description:"Specifies participation in first-baseline alignment."},{name:"last baseline",description:"Specifies participation in last-baseline alignment."}],syntax:"normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]",relevance:82,description:"Aligns flex items along the main axis of the current line of the flex container.",restrictions:["enum"]},{name:"kerning",values:[{name:"auto",description:"Indicates that the user agent should adjust inter-glyph spacing based on kerning tables that are included in the font that will be used."}],relevance:50,description:"Indicates whether the user agent should adjust inter-glyph spacing based on kerning tables that are included in the relevant font or instead disable auto-kerning and set inter-character spacing to a specific length.",restrictions:["length","enum"]},{name:"left",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/left"}],description:"Specifies how far an absolutely positioned box's left margin edge is offset to the right of the left edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"letter-spacing",values:[{name:"normal",description:"The spacing is the normal spacing for the current font. It is typically zero-length."}],syntax:"normal | <length>",relevance:79,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/letter-spacing"}],description:"Specifies the minimum, maximum, and optimal spacing between grapheme clusters.",restrictions:["length"]},{name:"lighting-color",browsers:["E","C5","FF3","IE10","O9","S6"],relevance:50,description:"Defines the color of the light source for filter primitives 'feDiffuseLighting' and 'feSpecularLighting'.",restrictions:["color"]},{name:"line-break",values:[{name:"auto",description:"The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines."},{name:"loose",description:"Breaks text using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers."},{name:"normal",description:"Breaks text using the most common set of line-breaking rules."},{name:"strict",description:"Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'."}],syntax:"auto | loose | normal | strict | anywhere",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/line-break"}],description:"Specifies what set of line breaking restrictions are in effect within the element.",restrictions:["enum"]},{name:"line-height",values:[{name:"normal",description:"Tells user agents to set the computed value to a 'reasonable' value based on the font size of the element."}],syntax:"normal | <number> | <length> | <percentage>",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/line-height"}],description:"Determines the block-progression dimension of the text content area of an inline box.",restrictions:["number","length","percentage"]},{name:"list-style",values:[{name:"armenian"},{name:"circle",description:"A hollow circle."},{name:"decimal"},{name:"decimal-leading-zero"},{name:"disc",description:"A filled circle."},{name:"georgian"},{name:"inside",description:"The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below."},{name:"lower-alpha"},{name:"lower-greek"},{name:"lower-latin"},{name:"lower-roman"},{name:"none"},{name:"outside",description:"The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows."},{name:"square",description:"A filled square."},{name:"symbols()",description:"Allows a counter style to be defined inline."},{name:"upper-alpha"},{name:"upper-latin"},{name:"upper-roman"},{name:"url()"}],syntax:"<'list-style-type'> || <'list-style-position'> || <'list-style-image'>",relevance:84,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style"}],description:"Shorthand for setting 'list-style-type', 'list-style-position' and 'list-style-image'",restrictions:["image","enum","url"]},{name:"list-style-image",values:[{name:"none",description:"The default contents of the of the list item’s marker are given by 'list-style-type' instead."}],syntax:"<url> | none",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style-image"}],description:"Sets the image that will be used as the list item marker. When the image is available, it will replace the marker set with the 'list-style-type' marker.",restrictions:["image"]},{name:"list-style-position",values:[{name:"inside",description:"The marker box is outside the principal block box, as described in the section on the ::marker pseudo-element below."},{name:"outside",description:"The ::marker pseudo-element is an inline element placed immediately before all ::before pseudo-elements in the principal block box, after which the element's content flows."}],syntax:"inside | outside",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style-position"}],description:"Specifies the position of the '::marker' pseudo-element's box in the list item.",restrictions:["enum"]},{name:"list-style-type",values:[{name:"armenian",description:"Traditional uppercase Armenian numbering."},{name:"circle",description:"A hollow circle."},{name:"decimal",description:"Western decimal numbers."},{name:"decimal-leading-zero",description:"Decimal numbers padded by initial zeros."},{name:"disc",description:"A filled circle."},{name:"georgian",description:"Traditional Georgian numbering."},{name:"lower-alpha",description:"Lowercase ASCII letters."},{name:"lower-greek",description:"Lowercase classical Greek."},{name:"lower-latin",description:"Lowercase ASCII letters."},{name:"lower-roman",description:"Lowercase ASCII Roman numerals."},{name:"none",description:"No marker"},{name:"square",description:"A filled square."},{name:"symbols()",description:"Allows a counter style to be defined inline."},{name:"upper-alpha",description:"Uppercase ASCII letters."},{name:"upper-latin",description:"Uppercase ASCII letters."},{name:"upper-roman",description:"Uppercase ASCII Roman numerals."}],syntax:"<counter-style> | <string> | none",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/list-style-type"}],description:"Used to construct the default contents of a list item’s marker",restrictions:["enum","string"]},{name:"margin",values:[{name:"auto"}],syntax:"[ <length> | <percentage> | auto ]{1,4}",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits.",restrictions:["length","percentage"]},{name:"margin-block-end",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-block-end"}],description:"Logical 'margin-bottom'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-block-start",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-block-start"}],description:"Logical 'margin-top'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-bottom",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-bottom"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"margin-inline-end",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-inline-end"}],description:"Logical 'margin-right'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-inline-start",browsers:["E79","FF41","S12.1","C69","O56"],values:[{name:"auto"}],syntax:"<'margin-left'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-inline-start"}],description:"Logical 'margin-left'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"margin-left",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-left"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"margin-right",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-right"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"margin-top",values:[{name:"auto"}],syntax:"<length> | <percentage> | auto",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-top"}],description:"Shorthand property to set values the thickness of the margin area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. Negative values for margin properties are allowed, but there may be implementation-specific limits..",restrictions:["length","percentage"]},{name:"marker",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker symbol that shall be used for all points on the sets the value for all vertices on the given ‘path’ element or basic shape.",restrictions:["url"]},{name:"marker-end",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker that will be drawn at the last vertices of the given markable element.",restrictions:["url"]},{name:"marker-mid",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker that will be drawn at all vertices except the first and last.",restrictions:["url"]},{name:"marker-start",values:[{name:"none",description:"Indicates that no marker symbol will be drawn at the given vertex or vertices."},{name:"url()",description:"Indicates that the <marker> element referenced will be used."}],relevance:50,description:"Specifies the marker that will be drawn at the first vertices of the given markable element.",restrictions:["url"]},{name:"mask-image",browsers:["E16","FF53","S4","C1","O15"],values:[{name:"none",description:"Counts as a transparent black image layer."},{name:"url()",description:"Reference to a <mask element or to a CSS image."}],syntax:"<mask-reference>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-image"}],description:"Sets the mask layer image of an element.",restrictions:["url","image","enum"]},{name:"mask-mode",browsers:["FF53"],values:[{name:"alpha",description:"Alpha values of the mask layer image should be used as the mask values."},{name:"auto",description:"Use alpha values if 'mask-image' is an image, luminance if a <mask> element or a CSS image."},{name:"luminance",description:"Luminance values of the mask layer image should be used as the mask values."}],syntax:"<masking-mode>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-mode"}],description:"Indicates whether the mask layer image is treated as luminance mask or alpha mask.",restrictions:["url","image","enum"]},{name:"mask-origin",browsers:["E79","FF53","S4","C1","O15"],syntax:"<geometry-box>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-origin"}],description:"Specifies the mask positioning area.",restrictions:["geometry-box","enum"]},{name:"mask-position",browsers:["E18","FF53","S3.2","C1","O15"],syntax:"<position>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-position"}],description:"Specifies how mask layer images are positioned.",restrictions:["position","length","percentage"]},{name:"mask-repeat",browsers:["E18","FF53","S3.2","C1","O15"],syntax:"<repeat-style>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-repeat"}],description:"Specifies how mask layer images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"mask-size",browsers:["E18","FF53","S4","C4","O15"],values:[{name:"auto",description:"Resolved by using the image’s intrinsic ratio and the size of the other dimension, or failing that, using the image’s intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],syntax:"<bg-size>#",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-size"}],description:"Specifies the size of the mask layer images.",restrictions:["length","percentage","enum"]},{name:"mask-type",browsers:["E79","FF35","S6.1","C24","O15"],values:[{name:"alpha",description:"Indicates that the alpha values of the mask should be used."},{name:"luminance",description:"Indicates that the luminance values of the mask should be used."}],syntax:"luminance | alpha",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-type"}],description:"Defines whether the content of the <mask> element is treated as as luminance mask or alpha mask.",restrictions:["enum"]},{name:"max-block-size",browsers:["E79","FF41","S12.1","C57","O44"],values:[{name:"none",description:"No limit on the width of the box."}],syntax:"<'max-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-block-size"}],description:"Logical 'max-width'. Mapping depends on the element’s 'writing-mode'.",restrictions:["length","percentage"]},{name:"max-height",values:[{name:"none",description:"No limit on the height of the box."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:84,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-height"}],description:"Allows authors to constrain content height to a certain range.",restrictions:["length","percentage"]},{name:"max-inline-size",browsers:["E79","FF41","S10.1","C57","O44"],values:[{name:"none",description:"No limit on the height of the box."}],syntax:"<'max-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-inline-size"}],description:"Logical 'max-height'. Mapping depends on the element’s 'writing-mode'.",restrictions:["length","percentage"]},{name:"max-width",values:[{name:"none",description:"No limit on the width of the box."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:89,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/max-width"}],description:"Allows authors to constrain content width to a certain range.",restrictions:["length","percentage"]},{name:"min-block-size",browsers:["E79","FF41","S12.1","C57","O44"],syntax:"<'min-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-block-size"}],description:"Logical 'min-width'. Mapping depends on the element’s 'writing-mode'.",restrictions:["length","percentage"]},{name:"min-height",values:[{name:"auto"},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-height"}],description:"Allows authors to constrain content height to a certain range.",restrictions:["length","percentage"]},{name:"min-inline-size",browsers:["E79","FF41","S12.1","C57","O44"],syntax:"<'min-width'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-inline-size"}],description:"Logical 'min-height'. Mapping depends on the element’s 'writing-mode'.",restrictions:["length","percentage"]},{name:"min-width",values:[{name:"auto"},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/min-width"}],description:"Allows authors to constrain content width to a certain range.",restrictions:["length","percentage"]},{name:"mix-blend-mode",browsers:["E79","FF32","S8","C41","O28"],values:[{name:"normal",description:"Default attribute which specifies no blending"},{name:"multiply",description:"The source color is multiplied by the destination color and replaces the destination."},{name:"screen",description:"Multiplies the complements of the backdrop and source color values, then complements the result."},{name:"overlay",description:"Multiplies or screens the colors, depending on the backdrop color value."},{name:"darken",description:"Selects the darker of the backdrop and source colors."},{name:"lighten",description:"Selects the lighter of the backdrop and source colors."},{name:"color-dodge",description:"Brightens the backdrop color to reflect the source color."},{name:"color-burn",description:"Darkens the backdrop color to reflect the source color."},{name:"hard-light",description:"Multiplies or screens the colors, depending on the source color value."},{name:"soft-light",description:"Darkens or lightens the colors, depending on the source color value."},{name:"difference",description:"Subtracts the darker of the two constituent colors from the lighter color.."},{name:"exclusion",description:"Produces an effect similar to that of the Difference mode but lower in contrast."},{name:"hue",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the hue of the source color and the saturation and luminosity of the backdrop color."},{name:"saturation",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the saturation of the source color and the hue and luminosity of the backdrop color."},{name:"color",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the hue and saturation of the source color and the luminosity of the backdrop color."},{name:"luminosity",browsers:["E79","FF32","S8","C41","O28"],description:"Creates a color with the luminosity of the source color and the hue and saturation of the backdrop color."}],syntax:"<blend-mode>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode"}],description:"Defines the formula that must be used to mix the colors with the backdrop.",restrictions:["enum"]},{name:"motion",browsers:["C46","O33"],values:[{name:"none",description:"No motion path gets created."},{name:"path()",description:"Defines an SVG path as a string, with optional 'fill-rule' as the first argument."},{name:"auto",description:"Indicates that the object is rotated by the angle of the direction of the motion path."},{name:"reverse",description:"Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees."}],relevance:50,description:"Shorthand property for setting 'motion-path', 'motion-offset' and 'motion-rotation'.",restrictions:["url","length","percentage","angle","shape","geometry-box","enum"]},{name:"motion-offset",browsers:["C46","O33"],relevance:50,description:"A distance that describes the position along the specified motion path.",restrictions:["length","percentage"]},{name:"motion-path",browsers:["C46","O33"],values:[{name:"none",description:"No motion path gets created."},{name:"path()",description:"Defines an SVG path as a string, with optional 'fill-rule' as the first argument."}],relevance:50,description:"Specifies the motion path the element gets positioned at.",restrictions:["url","shape","geometry-box","enum"]},{name:"motion-rotation",browsers:["C46","O33"],values:[{name:"auto",description:"Indicates that the object is rotated by the angle of the direction of the motion path."},{name:"reverse",description:"Indicates that the object is rotated by the angle of the direction of the motion path plus 180 degrees."}],relevance:50,description:"Defines the direction of the element while positioning along the motion path.",restrictions:["angle"]},{name:"-moz-animation",browsers:["FF9"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","enum","timing-function","identifier","number"]},{name:"-moz-animation-delay",browsers:["FF9"],relevance:50,description:"Defines when the animation will start.",restrictions:["time"]},{name:"-moz-animation-direction",browsers:["FF9"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"-moz-animation-duration",browsers:["FF9"],relevance:50,description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"-moz-animation-iteration-count",browsers:["FF9"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],relevance:50,description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"-moz-animation-name",browsers:["FF9"],values:[{name:"none",description:"No animation is performed"}],relevance:50,description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"-moz-animation-play-state",browsers:["FF9"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],relevance:50,description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"-moz-animation-timing-function",browsers:["FF9"],relevance:50,description:"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.",restrictions:["timing-function"]},{name:"-moz-appearance",browsers:["FF1"],values:[{name:"button"},{name:"button-arrow-down"},{name:"button-arrow-next"},{name:"button-arrow-previous"},{name:"button-arrow-up"},{name:"button-bevel"},{name:"checkbox"},{name:"checkbox-container"},{name:"checkbox-label"},{name:"dialog"},{name:"groupbox"},{name:"listbox"},{name:"menuarrow"},{name:"menuimage"},{name:"menuitem"},{name:"menuitemtext"},{name:"menulist"},{name:"menulist-button"},{name:"menulist-text"},{name:"menulist-textfield"},{name:"menupopup"},{name:"menuradio"},{name:"menuseparator"},{name:"-moz-mac-unified-toolbar"},{name:"-moz-win-borderless-glass"},{name:"-moz-win-browsertabbar-toolbox"},{name:"-moz-win-communications-toolbox"},{name:"-moz-win-glass"},{name:"-moz-win-media-toolbox"},{name:"none"},{name:"progressbar"},{name:"progresschunk"},{name:"radio"},{name:"radio-container"},{name:"radio-label"},{name:"radiomenuitem"},{name:"resizer"},{name:"resizerpanel"},{name:"scrollbarbutton-down"},{name:"scrollbarbutton-left"},{name:"scrollbarbutton-right"},{name:"scrollbarbutton-up"},{name:"scrollbar-small"},{name:"scrollbartrack-horizontal"},{name:"scrollbartrack-vertical"},{name:"separator"},{name:"spinner"},{name:"spinner-downbutton"},{name:"spinner-textfield"},{name:"spinner-upbutton"},{name:"statusbar"},{name:"statusbarpanel"},{name:"tab"},{name:"tabpanels"},{name:"tab-scroll-arrow-back"},{name:"tab-scroll-arrow-forward"},{name:"textfield"},{name:"textfield-multiline"},{name:"toolbar"},{name:"toolbox"},{name:"tooltip"},{name:"treeheadercell"},{name:"treeheadersortarrow"},{name:"treeitem"},{name:"treetwistyopen"},{name:"treeview"},{name:"treewisty"},{name:"window"}],status:"nonstandard",syntax:"none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized",relevance:0,description:"Used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme.",restrictions:["enum"]},{name:"-moz-backface-visibility",browsers:["FF10"],values:[{name:"hidden"},{name:"visible"}],relevance:50,description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"-moz-background-clip",browsers:["FF1-3.6"],values:[{name:"padding"}],relevance:50,description:"Determines the background painting area.",restrictions:["box","enum"]},{name:"-moz-background-inline-policy",browsers:["FF1"],values:[{name:"bounding-box"},{name:"continuous"},{name:"each-box"}],relevance:50,description:"In Gecko-based applications like Firefox, the -moz-background-inline-policy CSS property specifies how the background image of an inline element is determined when the content of the inline element wraps onto multiple lines. The choice of position has significant effects on repetition.",restrictions:["enum"]},{name:"-moz-background-origin",browsers:["FF1"],relevance:50,description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"-moz-border-bottom-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-border-image",browsers:["FF3.6"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none"},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],relevance:50,description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"-moz-border-left-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-border-right-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-border-top-colors",browsers:["FF1"],status:"nonstandard",syntax:"<color>+ | none",relevance:0,description:"Ske Firefox, -moz-border-bottom-colors sets a list of colors for the bottom border.",restrictions:["color"]},{name:"-moz-box-align",browsers:["FF1"],values:[{name:"baseline",description:"If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used."},{name:"center",description:"Any extra space is divided evenly, with half placed above the child and the other half placed after the child."},{name:"end",description:"For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element."},{name:"start",description:"For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element."},{name:"stretch",description:"The height of each child is adjusted to that of the containing block."}],relevance:50,description:"Specifies how a XUL box aligns its contents across (perpendicular to) the direction of its layout. The effect of this is only visible if there is extra space in the box.",restrictions:["enum"]},{name:"-moz-box-direction",browsers:["FF1"],values:[{name:"normal",description:"A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom."},{name:"reverse",description:"A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top."}],relevance:50,description:"Specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).",restrictions:["enum"]},{name:"-moz-box-flex",browsers:["FF1"],relevance:50,description:"Specifies how a box grows to fill the box that contains it, in the direction of the containing box's layout.",restrictions:["number"]},{name:"-moz-box-flexgroup",browsers:["FF1"],relevance:50,description:"Flexible elements can be assigned to flex groups using the 'box-flex-group' property.",restrictions:["integer"]},{name:"-moz-box-ordinal-group",browsers:["FF1"],relevance:50,description:"Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.",restrictions:["integer"]},{name:"-moz-box-orient",browsers:["FF1"],values:[{name:"block-axis",description:"Elements are oriented along the box's axis."},{name:"horizontal",description:"The box displays its children from left to right in a horizontal line."},{name:"inline-axis",description:"Elements are oriented vertically."},{name:"vertical",description:"The box displays its children from stacked from top to bottom vertically."}],relevance:50,description:"In Mozilla applications, -moz-box-orient specifies whether a box lays out its contents horizontally or vertically.",restrictions:["enum"]},{name:"-moz-box-pack",browsers:["FF1"],values:[{name:"center",description:"The extra space is divided evenly, with half placed before the first child and the other half placed after the last child."},{name:"end",description:"For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child."},{name:"justify",description:"The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start."},{name:"start",description:"For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child."}],relevance:50,description:"Specifies how a box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.",restrictions:["enum"]},{name:"-moz-box-sizing",browsers:["FF1"],values:[{name:"border-box",description:"The specified width and height (and respective min/max properties) on this element determine the border box of the element."},{name:"content-box",description:"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element."},{name:"padding-box",description:"The specified width and height (and respective min/max properties) on this element determine the padding box of the element."}],relevance:50,description:"Box Model addition in CSS3.",restrictions:["enum"]},{name:"-moz-column-count",browsers:["FF3.5"],values:[{name:"auto",description:"Determines the number of columns by the 'column-width' property and the element width."}],relevance:50,description:"Describes the optimal number of columns into which the content of the element will be flowed.",restrictions:["integer"]},{name:"-moz-column-gap",browsers:["FF3.5"],values:[{name:"normal",description:"User agent specific and typically equivalent to 1em."}],relevance:50,description:"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.",restrictions:["length"]},{name:"-moz-column-rule",browsers:["FF3.5"],relevance:50,description:"Shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.",restrictions:["length","line-width","line-style","color"]},{name:"-moz-column-rule-color",browsers:["FF3.5"],relevance:50,description:"Sets the color of the column rule",restrictions:["color"]},{name:"-moz-column-rule-style",browsers:["FF3.5"],relevance:50,description:"Sets the style of the rule between columns of an element.",restrictions:["line-style"]},{name:"-moz-column-rule-width",browsers:["FF3.5"],relevance:50,description:"Sets the width of the rule between columns. Negative values are not allowed.",restrictions:["length","line-width"]},{name:"-moz-columns",browsers:["FF9"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"A shorthand property which sets both 'column-width' and 'column-count'.",restrictions:["length","integer"]},{name:"-moz-column-width",browsers:["FF3.5"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"This property describes the width of columns in multicol elements.",restrictions:["length"]},{name:"-moz-font-feature-settings",browsers:["FF4"],values:[{name:'"c2cs"'},{name:'"dlig"'},{name:'"kern"'},{name:'"liga"'},{name:'"lnum"'},{name:'"onum"'},{name:'"smcp"'},{name:'"swsh"'},{name:'"tnum"'},{name:"normal",description:"No change in glyph substitution or positioning occurs."},{name:"off",browsers:["FF4"]},{name:"on",browsers:["FF4"]}],relevance:50,description:"Provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.",restrictions:["string","integer"]},{name:"-moz-hyphens",browsers:["FF9"],values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],relevance:50,description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"-moz-perspective",browsers:["FF10"],values:[{name:"none",description:"No perspective transform is applied."}],relevance:50,description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length"]},{name:"-moz-perspective-origin",browsers:["FF10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-moz-text-align-last",browsers:["FF12"],values:[{name:"auto"},{name:"center",description:"The inline contents are centered within the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."}],relevance:50,description:"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.",restrictions:["enum"]},{name:"-moz-text-decoration-color",browsers:["FF6"],relevance:50,description:"Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.",restrictions:["color"]},{name:"-moz-text-decoration-line",browsers:["FF6"],values:[{name:"line-through",description:"Each line of text has a line through the middle."},{name:"none",description:"Neither produces nor inhibits text decoration."},{name:"overline",description:"Each line of text has a line above it."},{name:"underline",description:"Each line of text is underlined."}],relevance:50,description:"Specifies what line decorations, if any, are added to the element.",restrictions:["enum"]},{name:"-moz-text-decoration-style",browsers:["FF6"],values:[{name:"dashed",description:"Produces a dashed line style."},{name:"dotted",description:"Produces a dotted line."},{name:"double",description:"Produces a double line."},{name:"none",description:"Produces no line."},{name:"solid",description:"Produces a solid line."},{name:"wavy",description:"Produces a wavy line."}],relevance:50,description:"Specifies the line style for underline, line-through and overline text decoration.",restrictions:["enum"]},{name:"-moz-text-size-adjust",browsers:["FF"],values:[{name:"auto",description:"Renderers must use the default size adjustment when displaying on a small device."},{name:"none",description:"Renderers must not do size adjustment when displaying on a small device."}],relevance:50,description:"Specifies a size adjustment for displaying text content in mobile browsers.",restrictions:["enum","percentage"]},{name:"-moz-transform",browsers:["FF3.5"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"perspective",description:"Specifies a perspective projection matrix."},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-moz-transform-origin",browsers:["FF3.5"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"-moz-transition",browsers:["FF4"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"-moz-transition-delay",browsers:["FF4"],relevance:50,description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"-moz-transition-duration",browsers:["FF4"],relevance:50,description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"-moz-transition-property",browsers:["FF4"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"-moz-transition-timing-function",browsers:["FF4"],relevance:50,description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"-moz-user-focus",browsers:["FF1"],values:[{name:"ignore"},{name:"normal"}],status:"nonstandard",syntax:"ignore | normal | select-after | select-before | select-menu | select-same | select-all | none",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-user-focus"}],description:"Used to indicate whether the element can have focus."},{name:"-moz-user-select",browsers:["FF1.5"],values:[{name:"all"},{name:"element"},{name:"elements"},{name:"-moz-all"},{name:"-moz-none"},{name:"none"},{name:"text"},{name:"toggle"}],relevance:50,description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"-ms-accelerator",browsers:["E","IE10"],values:[{name:"false",description:"The element does not contain an accelerator key sequence."},{name:"true",description:"The element contains an accelerator key sequence."}],status:"nonstandard",syntax:"false | true",relevance:0,description:"IE only. Has the ability to turn off its system underlines for accelerator keys until the ALT key is pressed",restrictions:["enum"]},{name:"-ms-behavior",browsers:["IE8"],relevance:50,description:"IE only. Used to extend behaviors of the browser",restrictions:["url"]},{name:"-ms-block-progression",browsers:["IE8"],values:[{name:"bt",description:"Bottom-to-top block flow. Layout is horizontal."},{name:"lr",description:"Left-to-right direction. The flow orientation is vertical."},{name:"rl",description:"Right-to-left direction. The flow orientation is vertical."},{name:"tb",description:"Top-to-bottom direction. The flow orientation is horizontal."}],status:"nonstandard",syntax:"tb | rl | bt | lr",relevance:0,description:"Sets the block-progression value and the flow orientation",restrictions:["enum"]},{name:"-ms-content-zoom-chaining",browsers:["E","IE10"],values:[{name:"chained",description:"The nearest zoomable parent element begins zooming when the user hits a zoom limit during a manipulation. No bounce effect is shown."},{name:"none",description:"A bounce effect is shown when the user hits a zoom limit during a manipulation."}],status:"nonstandard",syntax:"none | chained",relevance:0,description:"Specifies the zoom behavior that occurs when a user hits the zoom limit during a manipulation."},{name:"-ms-content-zooming",browsers:["E","IE10"],values:[{name:"none",description:"The element is not zoomable."},{name:"zoom",description:"The element is zoomable."}],status:"nonstandard",syntax:"none | zoom",relevance:0,description:"Specifies whether zooming is enabled.",restrictions:["enum"]},{name:"-ms-content-zoom-limit",browsers:["E","IE10"],status:"nonstandard",syntax:"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>",relevance:0,description:"Shorthand property for the -ms-content-zoom-limit-min and -ms-content-zoom-limit-max properties.",restrictions:["percentage"]},{name:"-ms-content-zoom-limit-max",browsers:["E","IE10"],status:"nonstandard",syntax:"<percentage>",relevance:0,description:"Specifies the maximum zoom factor.",restrictions:["percentage"]},{name:"-ms-content-zoom-limit-min",browsers:["E","IE10"],status:"nonstandard",syntax:"<percentage>",relevance:0,description:"Specifies the minimum zoom factor.",restrictions:["percentage"]},{name:"-ms-content-zoom-snap",browsers:["E","IE10"],values:[{name:"mandatory",description:"Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point."},{name:"none",description:"Indicates that zooming is unaffected by any defined snap-points."},{name:"proximity",description:'Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop "close enough" to a snap-point.'},{name:"snapInterval(100%, 100%)",description:"Specifies where the snap-points will be placed."},{name:"snapList()",description:"Specifies the position of individual snap-points as a comma-separated list of zoom factors."}],status:"nonstandard",syntax:"<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>",relevance:0,description:"Shorthand property for the -ms-content-zoom-snap-type and -ms-content-zoom-snap-points properties."},{name:"-ms-content-zoom-snap-points",browsers:["E","IE10"],values:[{name:"snapInterval(100%, 100%)",description:"Specifies where the snap-points will be placed."},{name:"snapList()",description:"Specifies the position of individual snap-points as a comma-separated list of zoom factors."}],status:"nonstandard",syntax:"snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )",relevance:0,description:"Defines where zoom snap-points are located."},{name:"-ms-content-zoom-snap-type",browsers:["E","IE10"],values:[{name:"mandatory",description:"Indicates that the motion of the content after the contact is picked up is always adjusted so that it lands on a snap-point."},{name:"none",description:"Indicates that zooming is unaffected by any defined snap-points."},{name:"proximity",description:'Indicates that the motion of the content after the contact is picked up may be adjusted if the content would normally stop "close enough" to a snap-point.'}],status:"nonstandard",syntax:"none | proximity | mandatory",relevance:0,description:"Specifies how zooming is affected by defined snap-points.",restrictions:["enum"]},{name:"-ms-filter",browsers:["IE8-9"],status:"nonstandard",syntax:"<string>",relevance:0,description:"IE only. Used to produce visual effects.",restrictions:["string"]},{name:"-ms-flex",browsers:["IE10"],values:[{name:"auto",description:"Retrieves the value of the main size property as the used 'flex-basis'."},{name:"none",description:"Expands to '0 0 auto'."}],relevance:50,description:"specifies the parameters of a flexible length: the positive and negative flexibility, and the preferred size.",restrictions:["length","number","percentage"]},{name:"-ms-flex-align",browsers:["IE10"],values:[{name:"baseline",description:"If the flex item’s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item’s margin box is centered in the cross axis within the line."},{name:"end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"start",description:"The cross-start margin edge of the flexbox item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flexbox item is anything other than 'auto', this value is identical to 'start'."}],relevance:50,description:"Aligns flex items along the cross axis of the current line of the flex container.",restrictions:["enum"]},{name:"-ms-flex-direction",browsers:["IE10"],values:[{name:"column",description:"The flex container’s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"row",description:"The flex container’s main axis has the same orientation as the inline axis of the current writing mode."},{name:"row-reverse",description:"Same as 'row', except the main-start and main-end directions are swapped."}],relevance:50,description:"Specifies how flex items are placed in the flex container, by setting the direction of the flex container’s main axis.",restrictions:["enum"]},{name:"-ms-flex-flow",browsers:["IE10"],values:[{name:"column",description:"The flex container’s main axis has the same orientation as the block axis of the current writing mode."},{name:"column-reverse",description:"Same as 'column', except the main-start and main-end directions are swapped."},{name:"nowrap",description:"The flex container is single-line."},{name:"row",description:"The flex container’s main axis has the same orientation as the inline axis of the current writing mode."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],relevance:50,description:"Specifies how flexbox items are placed in the flexbox.",restrictions:["enum"]},{name:"-ms-flex-item-align",browsers:["IE10"],values:[{name:"auto",description:"Computes to the value of 'align-items' on the element’s parent, or 'stretch' if the element has no parent. On absolutely positioned elements, it computes to itself."},{name:"baseline",description:"If the flex item’s inline axis is the same as the cross axis, this value is identical to 'flex-start'. Otherwise, it participates in baseline alignment."},{name:"center",description:"The flex item’s margin box is centered in the cross axis within the line."},{name:"end",description:"The cross-end margin edge of the flex item is placed flush with the cross-end edge of the line."},{name:"start",description:"The cross-start margin edge of the flex item is placed flush with the cross-start edge of the line."},{name:"stretch",description:"If the cross size property of the flex item computes to auto, and neither of the cross-axis margins are auto, the flex item is stretched."}],relevance:50,description:"Allows the default alignment along the cross axis to be overridden for individual flex items.",restrictions:["enum"]},{name:"-ms-flex-line-pack",browsers:["IE10"],values:[{name:"center",description:"Lines are packed toward the center of the flex container."},{name:"distribute",description:"Lines are evenly distributed in the flex container, with half-size spaces on either end."},{name:"end",description:"Lines are packed toward the end of the flex container."},{name:"justify",description:"Lines are evenly distributed in the flex container."},{name:"start",description:"Lines are packed toward the start of the flex container."},{name:"stretch",description:"Lines stretch to take up the remaining space."}],relevance:50,description:"Aligns a flex container’s lines within the flex container when there is extra space in the cross-axis, similar to how 'justify-content' aligns individual items within the main-axis.",restrictions:["enum"]},{name:"-ms-flex-order",browsers:["IE10"],relevance:50,description:"Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.",restrictions:["integer"]},{name:"-ms-flex-pack",browsers:["IE10"],values:[{name:"center",description:"Flex items are packed toward the center of the line."},{name:"distribute",description:"Flex items are evenly distributed in the line, with half-size spaces on either end."},{name:"end",description:"Flex items are packed toward the end of the line."},{name:"justify",description:"Flex items are evenly distributed in the line."},{name:"start",description:"Flex items are packed toward the start of the line."}],relevance:50,description:"Aligns flex items along the main axis of the current line of the flex container.",restrictions:["enum"]},{name:"-ms-flex-wrap",browsers:["IE10"],values:[{name:"nowrap",description:"The flex container is single-line."},{name:"wrap",description:"The flexbox is multi-line."},{name:"wrap-reverse",description:"Same as 'wrap', except the cross-start and cross-end directions are swapped."}],relevance:50,description:"Controls whether the flex container is single-line or multi-line, and the direction of the cross-axis, which determines the direction new lines are stacked in.",restrictions:["enum"]},{name:"-ms-flow-from",browsers:["E","IE10"],values:[{name:"none",description:"The block container is not a CSS Region."}],status:"nonstandard",syntax:"[ none | <custom-ident> ]#",relevance:0,description:"Makes a block container a region and associates it with a named flow.",restrictions:["identifier"]},{name:"-ms-flow-into",browsers:["E","IE10"],values:[{name:"none",description:"The element is not moved to a named flow and normal CSS processing takes place."}],status:"nonstandard",syntax:"[ none | <custom-ident> ]#",relevance:0,description:"Places an element or its contents into a named flow.",restrictions:["identifier"]},{name:"-ms-grid-column",browsers:["E12","IE10"],values:[{name:"auto"},{name:"end"},{name:"start"}],relevance:50,description:"Used to place grid items and explicitly defined grid cells in the Grid.",restrictions:["integer","string","enum"]},{name:"-ms-grid-column-align",browsers:["E12","IE10"],values:[{name:"center",description:"Places the center of the Grid Item's margin box at the center of the Grid Item's column."},{name:"end",description:"Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's column."},{name:"start",description:"Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's column."},{name:"stretch",description:"Ensures that the Grid Item's margin box is equal to the size of the Grid Item's column."}],relevance:50,description:"Aligns the columns in a grid.",restrictions:["enum"]},{name:"-ms-grid-columns",browsers:["E12","IE10"],relevance:50,description:"Lays out the columns of the grid."},{name:"-ms-grid-column-span",browsers:["E12","IE10"],relevance:50,description:"Specifies the number of columns to span.",restrictions:["integer"]},{name:"-ms-grid-layer",browsers:["E","IE10"],relevance:50,description:"Grid-layer is similar in concept to z-index, but avoids overloading the meaning of the z-index property, which is applicable only to positioned elements.",restrictions:["integer"]},{name:"-ms-grid-row",browsers:["E12","IE10"],values:[{name:"auto"},{name:"end"},{name:"start"}],relevance:50,description:"grid-row is used to place grid items and explicitly defined grid cells in the Grid.",restrictions:["integer","string","enum"]},{name:"-ms-grid-row-align",browsers:["E12","IE10"],values:[{name:"center",description:"Places the center of the Grid Item's margin box at the center of the Grid Item's row."},{name:"end",description:"Aligns the end edge of the Grid Item's margin box to the end edge of the Grid Item's row."},{name:"start",description:"Aligns the starting edge of the Grid Item's margin box to the starting edge of the Grid Item's row."},{name:"stretch",description:"Ensures that the Grid Item's margin box is equal to the size of the Grid Item's row."}],relevance:50,description:"Aligns the rows in a grid.",restrictions:["enum"]},{name:"-ms-grid-rows",browsers:["E12","IE10"],relevance:50,description:"Lays out the columns of the grid."},{name:"-ms-grid-row-span",browsers:["E12","IE10"],relevance:50,description:"Specifies the number of rows to span.",restrictions:["integer"]},{name:"-ms-high-contrast-adjust",browsers:["E","IE10"],values:[{name:"auto",description:"Properties will be adjusted as applicable."},{name:"none",description:"No adjustments will be applied."}],status:"nonstandard",syntax:"auto | none",relevance:0,description:"Specifies if properties should be adjusted in high contrast mode.",restrictions:["enum"]},{name:"-ms-hyphenate-limit-chars",browsers:["E","IE10"],values:[{name:"auto",description:"The user agent chooses a value that adapts to the current layout."}],status:"nonstandard",syntax:"auto | <integer>{1,3}",relevance:0,description:"Specifies the minimum number of characters in a hyphenated word.",restrictions:["integer"]},{name:"-ms-hyphenate-limit-lines",browsers:["E","IE10"],values:[{name:"no-limit",description:"There is no limit."}],status:"nonstandard",syntax:"no-limit | <integer>",relevance:0,description:"Indicates the maximum number of successive hyphenated lines in an element.",restrictions:["integer"]},{name:"-ms-hyphenate-limit-zone",browsers:["E","IE10"],status:"nonstandard",syntax:"<percentage> | <length>",relevance:0,description:"Specifies the maximum amount of unfilled space (before justification) that may be left in the line box before hyphenation is triggered to pull part of a word from the next line back up into the current line.",restrictions:["percentage","length"]},{name:"-ms-hyphens",browsers:["E","IE10"],values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],relevance:50,description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"-ms-ime-mode",browsers:["IE10"],values:[{name:"active",description:"The input method editor is initially active; text entry is performed using it unless the user specifically dismisses it."},{name:"auto",description:"No change is made to the current input method editor state. This is the default."},{name:"disabled",description:"The input method editor is disabled and may not be activated by the user."},{name:"inactive",description:"The input method editor is initially inactive, but the user may activate it if they wish."},{name:"normal",description:"The IME state should be normal; this value can be used in a user style sheet to override the page setting."}],relevance:50,description:"Controls the state of the input method editor for text fields.",restrictions:["enum"]},{name:"-ms-interpolation-mode",browsers:["IE7"],values:[{name:"bicubic"},{name:"nearest-neighbor"}],relevance:50,description:"Gets or sets the interpolation (resampling) method used to stretch images.",restrictions:["enum"]},{name:"-ms-layout-grid",browsers:["E","IE10"],values:[{name:"char",description:"Any of the range of character values available to the -ms-layout-grid-char property."},{name:"line",description:"Any of the range of line values available to the -ms-layout-grid-line property."},{name:"mode",description:"Any of the range of mode values available to the -ms-layout-grid-mode property."},{name:"type",description:"Any of the range of type values available to the -ms-layout-grid-type property."}],relevance:50,description:"Sets or retrieves the composite document grid properties that specify the layout of text characters."},{name:"-ms-layout-grid-char",browsers:["E","IE10"],values:[{name:"auto",description:"Largest character in the font of the element is used to set the character grid."},{name:"none",description:"Default. No character grid is set."}],relevance:50,description:"Sets or retrieves the size of the character grid used for rendering the text content of an element.",restrictions:["enum","length","percentage"]},{name:"-ms-layout-grid-line",browsers:["E","IE10"],values:[{name:"auto",description:"Largest character in the font of the element is used to set the character grid."},{name:"none",description:"Default. No grid line is set."}],relevance:50,description:"Sets or retrieves the gridline value used for rendering the text content of an element.",restrictions:["length"]},{name:"-ms-layout-grid-mode",browsers:["E","IE10"],values:[{name:"both",description:"Default. Both the char and line grid modes are enabled. This setting is necessary to fully enable the layout grid on an element."},{name:"char",description:"Only a character grid is used. This is recommended for use with block-level elements, such as a blockquote, where the line grid is intended to be disabled."},{name:"line",description:"Only a line grid is used. This is recommended for use with inline elements, such as a span, to disable the horizontal grid on runs of text that act as a single entity in the grid layout."},{name:"none",description:"No grid is used."}],relevance:50,description:"Gets or sets whether the text layout grid uses two dimensions.",restrictions:["enum"]},{name:"-ms-layout-grid-type",browsers:["E","IE10"],values:[{name:"fixed",description:"Grid used for monospaced layout. All noncursive characters are treated as equal; every character is centered within a single grid space by default."},{name:"loose",description:"Default. Grid used for Japanese and Korean characters."},{name:"strict",description:"Grid used for Chinese, as well as Japanese (Genko) and Korean characters. Only the ideographs, kanas, and wide characters are snapped to the grid."}],relevance:50,description:"Sets or retrieves the type of grid used for rendering the text content of an element.",restrictions:["enum"]},{name:"-ms-line-break",browsers:["E","IE10"],values:[{name:"auto",description:"The UA determines the set of line-breaking restrictions to use for CJK scripts, and it may vary the restrictions based on the length of the line; e.g., use a less restrictive set of line-break rules for short lines."},{name:"keep-all",description:"Sequences of CJK characters can no longer break on implied break points. This option should only be used where the presence of word separator characters still creates line-breaking opportunities, as in Korean."},{name:"newspaper",description:"Breaks CJK scripts using the least restrictive set of line-breaking rules. Typically used for short lines, such as in newspapers."},{name:"normal",description:"Breaks CJK scripts using a normal set of line-breaking rules."},{name:"strict",description:"Breaks CJK scripts using a more restrictive set of line-breaking rules than 'normal'."}],relevance:50,description:"Specifies what set of line breaking restrictions are in effect within the element.",restrictions:["enum"]},{name:"-ms-overflow-style",browsers:["E","IE10"],values:[{name:"auto",description:"No preference, UA should use the first scrolling method in the list that it supports."},{name:"-ms-autohiding-scrollbar",description:"Indicates the element displays auto-hiding scrollbars during mouse interactions and panning indicators during touch and keyboard interactions."},{name:"none",description:"Indicates the element does not display scrollbars or panning indicators, even when its content overflows."},{name:"scrollbar",description:'Scrollbars are typically narrow strips inserted on one or two edges of an element and which often have arrows to click on and a "thumb" to drag up and down (or left and right) to move the contents of the element.'}],status:"nonstandard",syntax:"auto | none | scrollbar | -ms-autohiding-scrollbar",relevance:0,description:"Specify whether content is clipped when it overflows the element's content area.",restrictions:["enum"]},{name:"-ms-perspective",browsers:["IE10"],values:[{name:"none",description:"No perspective transform is applied."}],relevance:50,description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length"]},{name:"-ms-perspective-origin",browsers:["IE10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-ms-perspective-origin-x",browsers:["IE10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-ms-perspective-origin-y",browsers:["IE10"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-ms-progress-appearance",browsers:["IE10"],values:[{name:"bar"},{name:"ring"}],relevance:50,description:"Gets or sets a value that specifies whether a progress control displays as a bar or a ring.",restrictions:["enum"]},{name:"-ms-scrollbar-3dlight-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-arrow-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the arrow elements of a scroll arrow.",restrictions:["color"]},{name:"-ms-scrollbar-base-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.",restrictions:["color"]},{name:"-ms-scrollbar-darkshadow-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the gutter of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-face-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-highlight-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-shadow-color",browsers:["IE8"],status:"nonstandard",syntax:"<color>",relevance:0,description:"Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"-ms-scrollbar-track-color",browsers:["IE5"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-ms-scrollbar-track-color"}],description:"Determines the color of the track element of a scroll bar.",restrictions:["color"]},{name:"-ms-scroll-chaining",browsers:["E","IE10"],values:[{name:"chained"},{name:"none"}],status:"nonstandard",syntax:"chained | none",relevance:0,description:"Gets or sets a value that indicates the scrolling behavior that occurs when a user hits the content boundary during a manipulation.",restrictions:["enum","length"]},{name:"-ms-scroll-limit",browsers:["E","IE10"],values:[{name:"auto"}],status:"nonstandard",syntax:"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>",relevance:0,description:"Gets or sets a shorthand value that sets values for the -ms-scroll-limit-x-min, -ms-scroll-limit-y-min, -ms-scroll-limit-x-max, and -ms-scroll-limit-y-max properties.",restrictions:["length"]},{name:"-ms-scroll-limit-x-max",browsers:["E","IE10"],values:[{name:"auto"}],status:"nonstandard",syntax:"auto | <length>",relevance:0,description:"Gets or sets a value that specifies the maximum value for the scrollLeft property.",restrictions:["length"]},{name:"-ms-scroll-limit-x-min",browsers:["E","IE10"],status:"nonstandard",syntax:"<length>",relevance:0,description:"Gets or sets a value that specifies the minimum value for the scrollLeft property.",restrictions:["length"]},{name:"-ms-scroll-limit-y-max",browsers:["E","IE10"],values:[{name:"auto"}],status:"nonstandard",syntax:"auto | <length>",relevance:0,description:"Gets or sets a value that specifies the maximum value for the scrollTop property.",restrictions:["length"]},{name:"-ms-scroll-limit-y-min",browsers:["E","IE10"],status:"nonstandard",syntax:"<length>",relevance:0,description:"Gets or sets a value that specifies the minimum value for the scrollTop property.",restrictions:["length"]},{name:"-ms-scroll-rails",browsers:["E","IE10"],values:[{name:"none"},{name:"railed"}],status:"nonstandard",syntax:"none | railed",relevance:0,description:"Gets or sets a value that indicates whether or not small motions perpendicular to the primary axis of motion will result in either changes to both the scrollTop and scrollLeft properties or a change to the primary axis (for instance, either the scrollTop or scrollLeft properties will change, but not both).",restrictions:["enum","length"]},{name:"-ms-scroll-snap-points-x",browsers:["E","IE10"],values:[{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",relevance:0,description:"Gets or sets a value that defines where snap-points will be located along the x-axis.",restrictions:["enum"]},{name:"-ms-scroll-snap-points-y",browsers:["E","IE10"],values:[{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )",relevance:0,description:"Gets or sets a value that defines where snap-points will be located along the y-axis.",restrictions:["enum"]},{name:"-ms-scroll-snap-type",browsers:["E","IE10"],values:[{name:"none",description:"The visual viewport of this scroll container must ignore snap points, if any, when scrolled."},{name:"mandatory",description:"The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations."},{name:"proximity",description:"The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll."}],status:"nonstandard",syntax:"none | proximity | mandatory",relevance:0,description:"Gets or sets a value that defines what type of snap-point should be used for the current element. There are two type of snap-points, with the primary difference being whether or not the user is guaranteed to always stop on a snap-point.",restrictions:["enum"]},{name:"-ms-scroll-snap-x",browsers:["E","IE10"],values:[{name:"mandatory"},{name:"none"},{name:"proximity"},{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>",relevance:0,description:"Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-x properties.",restrictions:["enum"]},{name:"-ms-scroll-snap-y",browsers:["E","IE10"],values:[{name:"mandatory"},{name:"none"},{name:"proximity"},{name:"snapInterval(100%, 100%)"},{name:"snapList()"}],status:"nonstandard",syntax:"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>",relevance:0,description:"Gets or sets a shorthand value that sets values for the -ms-scroll-snap-type and -ms-scroll-snap-points-y properties.",restrictions:["enum"]},{name:"-ms-scroll-translation",browsers:["E","IE10"],values:[{name:"none"},{name:"vertical-to-horizontal"}],status:"nonstandard",syntax:"none | vertical-to-horizontal",relevance:0,description:"Gets or sets a value that specifies whether vertical-to-horizontal scroll wheel translation occurs on the specified element.",restrictions:["enum"]},{name:"-ms-text-align-last",browsers:["E","IE8"],values:[{name:"auto"},{name:"center",description:"The inline contents are centered within the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."}],relevance:50,description:"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.",restrictions:["enum"]},{name:"-ms-text-autospace",browsers:["E","IE8"],values:[{name:"ideograph-alpha",description:"Creates 1/4em extra spacing between runs of ideographic letters and non-ideographic letters, such as Latin-based, Cyrillic, Greek, Arabic or Hebrew."},{name:"ideograph-numeric",description:"Creates 1/4em extra spacing between runs of ideographic letters and numeric glyphs."},{name:"ideograph-parenthesis",description:"Creates extra spacing between normal (non wide) parenthesis and ideographs."},{name:"ideograph-space",description:"Extends the width of the space character while surrounded by ideographs."},{name:"none",description:"No extra space is created."},{name:"punctuation",description:"Creates extra non-breaking spacing around punctuation as required by language-specific typographic conventions."}],status:"nonstandard",syntax:"none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space",relevance:0,description:"Determines whether or not a full-width punctuation mark character should be trimmed if it appears at the beginning of a line, so that its 'ink' lines up with the first glyph in the line above and below.",restrictions:["enum"]},{name:"-ms-text-combine-horizontal",browsers:["E","IE11"],values:[{name:"all",description:"Attempt to typeset horizontally all consecutive characters within the box such that they take up the space of a single character within the vertical line box."},{name:"digits",description:"Attempt to typeset horizontally each maximal sequence of consecutive ASCII digits (U+0030–U+0039) that has as many or fewer characters than the specified integer such that it takes up the space of a single character within the vertical line box."},{name:"none",description:"No special processing."}],relevance:50,description:"This property specifies the combination of multiple characters into the space of a single character.",restrictions:["enum","integer"]},{name:"-ms-text-justify",browsers:["E","IE8"],values:[{name:"auto",description:"The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality."},{name:"distribute",description:"Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property."},{name:"inter-cluster",description:"Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai."},{name:"inter-ideograph",description:"Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages."},{name:"inter-word",description:"Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean."},{name:"kashida",description:"Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation."}],relevance:50,description:"Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.",restrictions:["enum"]},{name:"-ms-text-kashida-space",browsers:["E","IE10"],relevance:50,description:"Sets or retrieves the ratio of kashida expansion to white space expansion when justifying lines of text in the object.",restrictions:["percentage"]},{name:"-ms-text-overflow",browsers:["IE10"],values:[{name:"clip",description:"Clip inline content that overflows. Characters may be only partially rendered."},{name:"ellipsis",description:"Render an ellipsis character (U+2026) to represent clipped inline content."}],relevance:50,description:"Text can overflow for example when it is prevented from wrapping",restrictions:["enum"]},{name:"-ms-text-size-adjust",browsers:["E","IE10"],values:[{name:"auto",description:"Renderers must use the default size adjustment when displaying on a small device."},{name:"none",description:"Renderers must not do size adjustment when displaying on a small device."}],relevance:50,description:"Specifies a size adjustment for displaying text content in mobile browsers.",restrictions:["enum","percentage"]},{name:"-ms-text-underline-position",browsers:["E","IE10"],values:[{name:"alphabetic",description:"The underline is aligned with the alphabetic baseline. In this case the underline is likely to cross some descenders."},{name:"auto",description:"The user agent may use any algorithm to determine the underline's position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over."},{name:"over",description:"The underline is aligned with the 'top' (right in vertical writing) edge of the element's em-box. In this mode, an overline also switches sides."},{name:"under",description:"The underline is aligned with the 'bottom' (left in vertical writing) edge of the element's em-box. In this case the underline usually does not cross the descenders. This is sometimes called 'accounting' underline."}],relevance:50,description:"Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements.This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text",restrictions:["enum"]},{name:"-ms-touch-action",browsers:["IE10"],values:[{name:"auto",description:"The element is a passive element, with several exceptions."},{name:"double-tap-zoom",description:"The element will zoom on double-tap."},{name:"manipulation",description:"The element is a manipulation-causing element."},{name:"none",description:"The element is a manipulation-blocking element."},{name:"pan-x",description:"The element permits touch-driven panning on the horizontal axis. The touch pan is performed on the nearest ancestor with horizontally scrollable content."},{name:"pan-y",description:"The element permits touch-driven panning on the vertical axis. The touch pan is performed on the nearest ancestor with vertically scrollable content."},{name:"pinch-zoom",description:"The element permits pinch-zooming. The pinch-zoom is performed on the nearest ancestor with zoomable content."}],relevance:50,description:"Gets or sets a value that indicates whether and how a given region can be manipulated by the user.",restrictions:["enum"]},{name:"-ms-touch-select",browsers:["E","IE10"],values:[{name:"grippers",description:"Grippers are always on."},{name:"none",description:"Grippers are always off."}],status:"nonstandard",syntax:"grippers | none",relevance:0,description:"Gets or sets a value that toggles the 'gripper' visual elements that enable touch text selection.",restrictions:["enum"]},{name:"-ms-transform",browsers:["IE9-9"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-ms-transform-origin",browsers:["IE9-9"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"-ms-transform-origin-x",browsers:["IE10"],relevance:50,description:"The x coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-ms-transform-origin-y",browsers:["IE10"],relevance:50,description:"The y coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-ms-transform-origin-z",browsers:["IE10"],relevance:50,description:"The z coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-ms-user-select",browsers:["E","IE10"],values:[{name:"element"},{name:"none"},{name:"text"}],status:"nonstandard",syntax:"none | element | text",relevance:0,description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"-ms-word-break",browsers:["IE8"],values:[{name:"break-all",description:"Lines may break between any two grapheme clusters for non-CJK scripts."},{name:"keep-all",description:"Block characters can no longer create implied break points."},{name:"normal",description:"Breaks non-CJK scripts according to their own rules."}],relevance:50,description:"Specifies line break opportunities for non-CJK scripts.",restrictions:["enum"]},{name:"-ms-word-wrap",browsers:["IE8"],values:[{name:"break-word",description:"An unbreakable 'word' may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line."},{name:"normal",description:"Lines may break only at allowed break points."}],relevance:50,description:"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.",restrictions:["enum"]},{name:"-ms-wrap-flow",browsers:["E","IE10"],values:[{name:"auto",description:"For floats an exclusion is created, for all other elements an exclusion is not created."},{name:"both",description:"Inline flow content can flow on all sides of the exclusion."},{name:"clear",description:"Inline flow content can only wrap on top and bottom of the exclusion and must leave the areas to the start and end edges of the exclusion box empty."},{name:"end",description:"Inline flow content can wrap on the end side of the exclusion area but must leave the area to the start edge of the exclusion area empty."},{name:"maximum",description:"Inline flow content can wrap on the side of the exclusion with the largest available space for the given line, and must leave the other side of the exclusion empty."},{name:"minimum",description:"Inline flow content can flow around the edge of the exclusion with the smallest available space within the flow content’s containing block, and must leave the other edge of the exclusion empty."},{name:"start",description:"Inline flow content can wrap on the start edge of the exclusion area but must leave the area to end edge of the exclusion area empty."}],status:"nonstandard",syntax:"auto | both | start | end | maximum | clear",relevance:0,description:"An element becomes an exclusion when its 'wrap-flow' property has a computed value other than 'auto'.",restrictions:["enum"]},{name:"-ms-wrap-margin",browsers:["E","IE10"],status:"nonstandard",syntax:"<length>",relevance:0,description:"Gets or sets a value that is used to offset the inner wrap shape from other shapes.",restrictions:["length","percentage"]},{name:"-ms-wrap-through",browsers:["E","IE10"],values:[{name:"none",description:"The exclusion element does not inherit its parent node's wrapping context. Its descendants are only subject to exclusion shapes defined inside the element."},{name:"wrap",description:"The exclusion element inherits its parent node's wrapping context. Its descendant inline content wraps around exclusions defined outside the element."}],status:"nonstandard",syntax:"wrap | none",relevance:0,description:"Specifies if an element inherits its parent wrapping context. In other words if it is subject to the exclusions defined outside the element.",restrictions:["enum"]},{name:"-ms-writing-mode",browsers:["IE8"],values:[{name:"bt-lr"},{name:"bt-rl"},{name:"lr-bt"},{name:"lr-tb"},{name:"rl-bt"},{name:"rl-tb"},{name:"tb-lr"},{name:"tb-rl"}],relevance:50,description:"Shorthand property for both 'direction' and 'block-progression'.",restrictions:["enum"]},{name:"-ms-zoom",browsers:["IE8"],values:[{name:"normal"}],relevance:50,description:"Sets or retrieves the magnification scale of the object.",restrictions:["enum","integer","number","percentage"]},{name:"-ms-zoom-animation",browsers:["IE10"],values:[{name:"default"},{name:"none"}],relevance:50,description:"Gets or sets a value that indicates whether an animation is used when zooming.",restrictions:["enum"]},{name:"nav-down",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"nav-index",browsers:["O9.5"],values:[{name:"auto",description:"The element's sequential navigation order is assigned automatically by the user agent."}],relevance:50,description:"Provides an input-method-neutral way of specifying the sequential navigation order (also known as 'tabbing order').",restrictions:["number"]},{name:"nav-left",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"nav-right",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"nav-up",browsers:["O9.5"],values:[{name:"auto",description:"The user agent automatically determines which element to navigate the focus to in response to directional navigational input."},{name:"current",description:"Indicates that the user agent should target the frame that the element is in."},{name:"root",description:"Indicates that the user agent should target the full window."}],relevance:50,description:"Provides an way to control directional focus navigation.",restrictions:["enum","identifier","string"]},{name:"negative",browsers:["FF33"],syntax:"<symbol> <symbol>?",relevance:50,description:"@counter-style descriptor. Defines how to alter the representation when the counter value is negative.",restrictions:["image","identifier","string"]},{name:"-o-animation",browsers:["O12"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","enum","timing-function","identifier","number"]},{name:"-o-animation-delay",browsers:["O12"],relevance:50,description:"Defines when the animation will start.",restrictions:["time"]},{name:"-o-animation-direction",browsers:["O12"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"-o-animation-duration",browsers:["O12"],relevance:50,description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"-o-animation-fill-mode",browsers:["O12"],values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],relevance:50,description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"-o-animation-iteration-count",browsers:["O12"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],relevance:50,description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"-o-animation-name",browsers:["O12"],values:[{name:"none",description:"No animation is performed"}],relevance:50,description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"-o-animation-play-state",browsers:["O12"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],relevance:50,description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"-o-animation-timing-function",browsers:["O12"],relevance:50,description:"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.",restrictions:["timing-function"]},{name:"object-fit",browsers:["E16","FF36","S10","C31","O19"],values:[{name:"contain",description:"The replaced content is sized to maintain its aspect ratio while fitting within the element’s content box: its concrete object size is resolved as a contain constraint against the element's used width and height."},{name:"cover",description:"The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element’s used width and height."},{name:"fill",description:"The replaced content is sized to fill the element’s content box: the object's concrete object size is the element's used width and height."},{name:"none",description:"The replaced content is not resized to fit inside the element's content box"},{name:"scale-down",description:"Size the content as if ‘none’ or ‘contain’ were specified, whichever would result in a smaller concrete object size."}],syntax:"fill | contain | cover | none | scale-down",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/object-fit"}],description:"Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.",restrictions:["enum"]},{name:"object-position",browsers:["E16","FF36","S10","C31","O19"],syntax:"<position>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/object-position"}],description:"Determines the alignment of the replaced element inside its box.",restrictions:["position","length","percentage"]},{name:"-o-border-image",browsers:["O11.6"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none"},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."}],relevance:50,description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","image","enum"]},{name:"-o-object-fit",browsers:["O10.6"],values:[{name:"contain",description:"The replaced content is sized to maintain its aspect ratio while fitting within the element’s content box: its concrete object size is resolved as a contain constraint against the element's used width and height."},{name:"cover",description:"The replaced content is sized to maintain its aspect ratio while filling the element's entire content box: its concrete object size is resolved as a cover constraint against the element’s used width and height."},{name:"fill",description:"The replaced content is sized to fill the element’s content box: the object's concrete object size is the element's used width and height."},{name:"none",description:"The replaced content is not resized to fit inside the element's content box"},{name:"scale-down",description:"Size the content as if ‘none’ or ‘contain’ were specified, whichever would result in a smaller concrete object size."}],relevance:50,description:"Specifies how the contents of a replaced element should be scaled relative to the box established by its used height and width.",restrictions:["enum"]},{name:"-o-object-position",browsers:["O10.6"],relevance:50,description:"Determines the alignment of the replaced element inside its box.",restrictions:["position","length","percentage"]},{name:"opacity",syntax:"<alpha-value>",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/opacity"}],description:"Opacity of an element's text, where 1 is opaque and 0 is entirely transparent.",restrictions:["number(0-1)"]},{name:"order",syntax:"<integer>",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/order"}],description:"Controls the order in which children of a flex container appear within the flex container, by assigning them to ordinal groups.",restrictions:["integer"]},{name:"orphans",browsers:["E12","S1.3","C25","IE8","O9.2"],syntax:"<integer>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/orphans"}],description:"Specifies the minimum number of line boxes in a block container that must be left in a fragment before a fragmentation break.",restrictions:["integer"]},{name:"-o-table-baseline",browsers:["O9.6"],relevance:50,description:"Determines which row of a inline-table should be used as baseline of inline-table.",restrictions:["integer"]},{name:"-o-tab-size",browsers:["O10.6"],relevance:50,description:"This property determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.",restrictions:["integer","length"]},{name:"-o-text-overflow",browsers:["O10"],values:[{name:"clip",description:"Clip inline content that overflows. Characters may be only partially rendered."},{name:"ellipsis",description:"Render an ellipsis character (U+2026) to represent clipped inline content."}],relevance:50,description:"Text can overflow for example when it is prevented from wrapping",restrictions:["enum"]},{name:"-o-transform",browsers:["O10.5"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-o-transform-origin",browsers:["O10.5"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["positon","length","percentage"]},{name:"-o-transition",browsers:["O11.5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"-o-transition-delay",browsers:["O11.5"],relevance:50,description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"-o-transition-duration",browsers:["O11.5"],relevance:50,description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"-o-transition-property",browsers:["O11.5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"-o-transition-timing-function",browsers:["O11.5"],relevance:50,description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"offset-block-end",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'bottom'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"offset-block-start",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'top'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"offset-inline-end",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'right'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"offset-inline-start",browsers:["FF41"],values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well."}],relevance:50,description:"Logical 'left'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"outline",values:[{name:"auto",description:"Permits the user agent to render a custom outline style, typically the default platform style."},{name:"invert",description:"Performs a color inversion on the pixels on the screen."}],syntax:"[ <'outline-color'> || <'outline-style'> || <'outline-width'> ]",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline"}],description:"Shorthand property for 'outline-style', 'outline-width', and 'outline-color'.",restrictions:["length","line-width","line-style","color","enum"]},{name:"outline-color",values:[{name:"invert",description:"Performs a color inversion on the pixels on the screen."}],syntax:"<color> | invert",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-color"}],description:"The color of the outline.",restrictions:["enum","color"]},{name:"outline-offset",browsers:["E15","FF1.5","S1.2","C1","O9.5"],syntax:"<length>",relevance:59,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-offset"}],description:"Offset the outline and draw it beyond the border edge.",restrictions:["length"]},{name:"outline-style",values:[{name:"auto",description:"Permits the user agent to render a custom outline style, typically the default platform style."}],syntax:"auto | <'border-style'>",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-style"}],description:"Style of the outline.",restrictions:["line-style","enum"]},{name:"outline-width",syntax:"<line-width>",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/outline-width"}],description:"Width of the outline.",restrictions:["length","line-width"]},{name:"overflow",values:[{name:"auto",description:"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes."},{name:"hidden",description:"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region."},{name:"-moz-hidden-unscrollable",description:"Same as the standardized 'clip', except doesn’t establish a block formatting context."},{name:"scroll",description:"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped."},{name:"visible",description:"Content is not clipped, i.e., it may be rendered outside the content box."}],syntax:"[ visible | hidden | clip | scroll | auto ]{1,2}",relevance:92,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow"}],description:"Shorthand for setting 'overflow-x' and 'overflow-y'.",restrictions:["enum"]},{name:"overflow-wrap",values:[{name:"break-word",description:"An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line."},{name:"normal",description:"Lines may break only at allowed break points."}],syntax:"normal | break-word | anywhere",relevance:63,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"}],description:"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit within the line box.",restrictions:["enum"]},{name:"overflow-x",values:[{name:"auto",description:"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes."},{name:"hidden",description:"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region."},{name:"scroll",description:"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped."},{name:"visible",description:"Content is not clipped, i.e., it may be rendered outside the content box."}],syntax:"visible | hidden | clip | scroll | auto",relevance:79,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-x"}],description:"Specifies the handling of overflow in the horizontal direction.",restrictions:["enum"]},{name:"overflow-y",values:[{name:"auto",description:"The behavior of the 'auto' value is UA-dependent, but should cause a scrolling mechanism to be provided for overflowing boxes."},{name:"hidden",description:"Content is clipped and no scrolling mechanism should be provided to view the content outside the clipping region."},{name:"scroll",description:"Content is clipped and if the user agent uses a scrolling mechanism that is visible on the screen (such as a scroll bar or a panner), that mechanism should be displayed for a box whether or not any of its content is clipped."},{name:"visible",description:"Content is not clipped, i.e., it may be rendered outside the content box."}],syntax:"visible | hidden | clip | scroll | auto",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-y"}],description:"Specifies the handling of overflow in the vertical direction.",restrictions:["enum"]},{name:"pad",browsers:["FF33"],syntax:"<integer> && <symbol>",relevance:50,description:"@counter-style descriptor. Specifies a “fixed-width” counter style, where representations shorter than the pad value are padded with a particular <symbol>",restrictions:["integer","image","string","identifier"]},{name:"padding",values:[],syntax:"[ <length> | <percentage> ]{1,4}",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-bottom",syntax:"<length> | <percentage>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-bottom"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-block-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-block-end"}],description:"Logical 'padding-bottom'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-block-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-block-start"}],description:"Logical 'padding-top'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-inline-end",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-inline-end"}],description:"Logical 'padding-right'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-inline-start",browsers:["E79","FF41","S12.1","C69","O56"],syntax:"<'padding-left'>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-inline-start"}],description:"Logical 'padding-left'. Mapping depends on the parent element’s 'writing-mode', 'direction', and 'text-orientation'.",restrictions:["length","percentage"]},{name:"padding-left",syntax:"<length> | <percentage>",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-left"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-right",syntax:"<length> | <percentage>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-right"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"padding-top",syntax:"<length> | <percentage>",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-top"}],description:"Shorthand property to set values the thickness of the padding area. If left is omitted, it is the same as right. If bottom is omitted it is the same as top, if right is omitted it is the same as top. The value may not be negative.",restrictions:["length","percentage"]},{name:"page-break-after",values:[{name:"always",description:"Always force a page break after the generated box."},{name:"auto",description:"Neither force nor forbid a page break after generated box."},{name:"avoid",description:"Avoid a page break after the generated box."},{name:"left",description:"Force one or two page breaks after the generated box so that the next page is formatted as a left page."},{name:"right",description:"Force one or two page breaks after the generated box so that the next page is formatted as a right page."}],syntax:"auto | always | avoid | left | right | recto | verso",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/page-break-after"}],description:"Defines rules for page breaks after an element.",restrictions:["enum"]},{name:"page-break-before",values:[{name:"always",description:"Always force a page break before the generated box."},{name:"auto",description:"Neither force nor forbid a page break before the generated box."},{name:"avoid",description:"Avoid a page break before the generated box."},{name:"left",description:"Force one or two page breaks before the generated box so that the next page is formatted as a left page."},{name:"right",description:"Force one or two page breaks before the generated box so that the next page is formatted as a right page."}],syntax:"auto | always | avoid | left | right | recto | verso",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/page-break-before"}],description:"Defines rules for page breaks before an element.",restrictions:["enum"]},{name:"page-break-inside",values:[{name:"auto",description:"Neither force nor forbid a page break inside the generated box."},{name:"avoid",description:"Avoid a page break inside the generated box."}],syntax:"auto | avoid",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/page-break-inside"}],description:"Defines rules for page breaks inside an element.",restrictions:["enum"]},{name:"paint-order",browsers:["E17","FF60","S8","C35","O22"],values:[{name:"fill"},{name:"markers"},{name:"normal",description:"The element is painted with the standard order of painting operations: the 'fill' is painted first, then its 'stroke' and finally its markers."},{name:"stroke"}],syntax:"normal | [ fill || stroke || markers ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/paint-order"}],description:"Controls the order that the three paint operations that shapes and text are rendered with: their fill, their stroke and any markers they might have.",restrictions:["enum"]},{name:"perspective",values:[{name:"none",description:"No perspective transform is applied."}],syntax:"none | <length>",relevance:55,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/perspective"}],description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length","enum"]},{name:"perspective-origin",syntax:"<position>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/perspective-origin"}],description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"pointer-events",values:[{name:"all",description:"The given element can be the target element for pointer events whenever the pointer is over either the interior or the perimeter of the element."},{name:"fill",description:"The given element can be the target element for pointer events whenever the pointer is over the interior of the element."},{name:"none",description:"The given element does not receive pointer events."},{name:"painted",description:'The given element can be the target element for pointer events when the pointer is over a "painted" area. '},{name:"stroke",description:"The given element can be the target element for pointer events whenever the pointer is over the perimeter of the element."},{name:"visible",description:"The given element can be the target element for pointer events when the ‘visibility’ property is set to visible and the pointer is over either the interior or the perimete of the element."},{name:"visibleFill",description:"The given element can be the target element for pointer events when the ‘visibility’ property is set to visible and when the pointer is over the interior of the element."},{name:"visiblePainted",description:"The given element can be the target element for pointer events when the ‘visibility’ property is set to visible and when the pointer is over a ‘painted’ area."},{name:"visibleStroke",description:"The given element can be the target element for pointer events when the ‘visibility’ property is set to visible and when the pointer is over the perimeter of the element."}],syntax:"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",relevance:80,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/pointer-events"}],description:"Specifies under what circumstances a given element can be the target element for a pointer event.",restrictions:["enum"]},{name:"position",values:[{name:"absolute",description:"The box's position (and possibly size) is specified with the 'top', 'right', 'bottom', and 'left' properties. These properties specify offsets with respect to the box's 'containing block'."},{name:"fixed",description:"The box's position is calculated according to the 'absolute' model, but in addition, the box is fixed with respect to some reference. As with the 'absolute' model, the box's margins do not collapse with any other margins."},{name:"-ms-page",description:"The box's position is calculated according to the 'absolute' model."},{name:"relative",description:"The box's position is calculated according to the normal flow (this is called the position in normal flow). Then the box is offset relative to its normal position."},{name:"static",description:"The box is a normal box, laid out according to the normal flow. The 'top', 'right', 'bottom', and 'left' properties do not apply."},{name:"sticky",description:"The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes."},{name:"-webkit-sticky",description:"The box's position is calculated according to the normal flow. Then the box is offset relative to its flow root and containing block and in all cases, including table elements, does not affect the position of any following boxes."}],syntax:"static | relative | absolute | sticky | fixed",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/position"}],description:"The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.",restrictions:["enum"]},{name:"prefix",browsers:["FF33"],syntax:"<symbol>",relevance:50,description:"@counter-style descriptor. Specifies a <symbol> that is prepended to the marker representation.",restrictions:["image","string","identifier"]},{name:"quotes",values:[{name:"none",description:"The 'open-quote' and 'close-quote' values of the 'content' property produce no quotations marks, as if they were 'no-open-quote' and 'no-close-quote' respectively."}],syntax:"none | auto | [ <string> <string> ]+",relevance:53,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/quotes"}],description:"Specifies quotation marks for any number of embedded quotations.",restrictions:["string"]},{name:"range",browsers:["FF33"],values:[{name:"auto",description:"The range depends on the counter system."},{name:"infinite",description:"If used as the first value in a range, it represents negative infinity; if used as the second value, it represents positive infinity."}],syntax:"[ [ <integer> | infinite ]{2} ]# | auto",relevance:50,description:"@counter-style descriptor. Defines the ranges over which the counter style is defined.",restrictions:["integer","enum"]},{name:"resize",browsers:["E79","FF4","S3","C1","O12.1"],values:[{name:"both",description:"The UA presents a bidirectional resizing mechanism to allow the user to adjust both the height and the width of the element."},{name:"horizontal",description:"The UA presents a unidirectional horizontal resizing mechanism to allow the user to adjust only the width of the element."},{name:"none",description:"The UA does not present a resizing mechanism on the element, and the user is given no direct manipulation mechanism to resize the element."},{name:"vertical",description:"The UA presents a unidirectional vertical resizing mechanism to allow the user to adjust only the height of the element."}],syntax:"none | both | horizontal | vertical | block | inline",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/resize"}],description:"Specifies whether or not an element is resizable by the user, and if so, along which axis/axes.",restrictions:["enum"]},{name:"right",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:90,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/right"}],description:"Specifies how far an absolutely positioned box's right margin edge is offset to the left of the right edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"ruby-align",browsers:["FF38"],values:[{name:"auto",browsers:["FF38"],description:"The user agent determines how the ruby contents are aligned. This is the initial value."},{name:"center",description:"The ruby content is centered within its box."},{name:"distribute-letter",browsers:["FF38"],description:"If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with the first and last ruby text glyphs lining up with the corresponding first and last base glyphs. If the width of the ruby text is at least the width of the base, then the letters of the base are evenly distributed across the width of the ruby text."},{name:"distribute-space",browsers:["FF38"],description:"If the width of the ruby text is smaller than that of the base, then the ruby text contents are evenly distributed across the width of the base, with a certain amount of white space preceding the first and following the last character in the ruby text. That amount of white space is normally equal to half the amount of inter-character space of the ruby text."},{name:"left",description:"The ruby text content is aligned with the start edge of the base."},{name:"line-edge",browsers:["FF38"],description:"If the ruby text is not adjacent to a line edge, it is aligned as in 'auto'. If it is adjacent to a line edge, then it is still aligned as in auto, but the side of the ruby text that touches the end of the line is lined up with the corresponding edge of the base."},{name:"right",browsers:["FF38"],description:"The ruby text content is aligned with the end edge of the base."},{name:"start",browsers:["FF38"],description:"The ruby text content is aligned with the start edge of the base."},{name:"space-between",browsers:["FF38"],description:"The ruby content expands as defined for normal text justification (as defined by 'text-justify'),"},{name:"space-around",browsers:["FF38"],description:"As for 'space-between' except that there exists an extra justification opportunities whose space is distributed half before and half after the ruby content."}],status:"experimental",syntax:"start | center | space-between | space-around",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/ruby-align"}],description:"Specifies how text is distributed within the various ruby boxes when their contents do not exactly fill their respective boxes.",restrictions:["enum"]},{name:"ruby-overhang",browsers:["FF10","IE5"],values:[{name:"auto",description:"The ruby text can overhang text adjacent to the base on either side. This is the initial value."},{name:"end",description:"The ruby text can overhang the text that follows it."},{name:"none",description:"The ruby text cannot overhang any text adjacent to its base, only its own base."},{name:"start",description:"The ruby text can overhang the text that precedes it."}],relevance:50,description:"Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.",restrictions:["enum"]},{name:"ruby-position",browsers:["E12","FF38"],values:[{name:"after",description:"The ruby text appears after the base. This is a relatively rare setting used in ideographic East Asian writing systems, most easily found in educational text."},{name:"before",description:"The ruby text appears before the base. This is the most common setting used in ideographic East Asian writing systems."},{name:"inline"},{name:"right",description:"The ruby text appears on the right of the base. Unlike 'before' and 'after', this value is not relative to the text flow direction."}],status:"experimental",syntax:"over | under | inter-character",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/ruby-position"}],description:"Used by the parent of elements with display: ruby-text to control the position of the ruby text with respect to its base.",restrictions:["enum"]},{name:"ruby-span",browsers:["FF10"],values:[{name:"attr(x)",description:"The value of attribute 'x' is a string value. The string value is evaluated as a <number> to determine the number of ruby base elements to be spanned by the annotation element."},{name:"none",description:"No spanning. The computed value is '1'."}],relevance:50,description:"Determines whether, and on which side, ruby text is allowed to partially overhang any adjacent text in addition to its own base, when the ruby text is wider than the ruby base.",restrictions:["enum"]},{name:"scrollbar-3dlight-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-3dlight-color"}],description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-arrow-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-arrow-color"}],description:"Determines the color of the arrow elements of a scroll arrow.",restrictions:["color"]},{name:"scrollbar-base-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-base-color"}],description:"Determines the color of the main elements of a scroll bar, which include the scroll box, track, and scroll arrows.",restrictions:["color"]},{name:"scrollbar-darkshadow-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-darkshadow-color"}],description:"Determines the color of the gutter of a scroll bar.",restrictions:["color"]},{name:"scrollbar-face-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-face-color"}],description:"Determines the color of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-highlight-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-highlight-color"}],description:"Determines the color of the top and left edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-shadow-color",browsers:["IE5"],relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-shadow-color"}],description:"Determines the color of the bottom and right edges of the scroll box and scroll arrows of a scroll bar.",restrictions:["color"]},{name:"scrollbar-track-color",browsers:["IE6"],relevance:50,description:"Determines the color of the track element of a scroll bar.",restrictions:["color"]},{name:"scroll-behavior",browsers:["E79","FF36","C61","O48"],values:[{name:"auto",description:"Scrolls in an instant fashion."},{name:"smooth",description:"Scrolls in a smooth fashion using a user-agent-defined timing function and time period."}],syntax:"auto | smooth",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-behavior"}],description:"Specifies the scrolling behavior for a scrolling box, when scrolling happens due to navigation or CSSOM scrolling APIs.",restrictions:["enum"]},{name:"scroll-snap-coordinate",browsers:["FF39"],values:[{name:"none",description:"Specifies that this element does not contribute a snap point."}],status:"obsolete",syntax:"none | <position>#",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-coordinate"}],description:"Defines the x and y coordinate within the element which will align with the nearest ancestor scroll container’s snap-destination for the respective axis.",restrictions:["position","length","percentage","enum"]},{name:"scroll-snap-destination",browsers:["FF39"],status:"obsolete",syntax:"<position>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-destination"}],description:"Define the x and y coordinate within the scroll container’s visual viewport which element snap points will align with.",restrictions:["position","length","percentage"]},{name:"scroll-snap-points-x",browsers:["FF39","S9"],values:[{name:"none",description:"No snap points are defined by this scroll container."},{name:"repeat()",description:"Defines an interval at which snap points are defined, starting from the container’s relevant start edge."}],status:"obsolete",syntax:"none | repeat( <length-percentage> )",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-x"}],description:"Defines the positioning of snap points along the x axis of the scroll container it is applied to.",restrictions:["enum"]},{name:"scroll-snap-points-y",browsers:["FF39","S9"],values:[{name:"none",description:"No snap points are defined by this scroll container."},{name:"repeat()",description:"Defines an interval at which snap points are defined, starting from the container’s relevant start edge."}],status:"obsolete",syntax:"none | repeat( <length-percentage> )",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-points-y"}],description:"Defines the positioning of snap points along the y axis of the scroll container it is applied to.",restrictions:["enum"]},{name:"scroll-snap-type",values:[{name:"none",description:"The visual viewport of this scroll container must ignore snap points, if any, when scrolled."},{name:"mandatory",description:"The visual viewport of this scroll container is guaranteed to rest on a snap point when there are no active scrolling operations."},{name:"proximity",description:"The visual viewport of this scroll container may come to rest on a snap point at the termination of a scroll at the discretion of the UA given the parameters of the scroll."}],syntax:"none | [ x | y | block | inline | both ] [ mandatory | proximity ]?",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type"}],description:"Defines how strictly snap points are enforced on the scroll container.",restrictions:["enum"]},{name:"shape-image-threshold",browsers:["E79","FF62","S10.1","C37","O24"],syntax:"<alpha-value>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold"}],description:"Defines the alpha channel threshold used to extract the shape using an image. A value of 0.5 means that the shape will enclose all the pixels that are more than 50% opaque.",restrictions:["number"]},{name:"shape-margin",browsers:["E79","FF62","S10.1","C37","O24"],syntax:"<length-percentage>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/shape-margin"}],description:"Adds a margin to a 'shape-outside'. This defines a new shape that is the smallest contour that includes all the points that are the 'shape-margin' distance outward in the perpendicular direction from a point on the underlying shape.",restrictions:["url","length","percentage"]},{name:"shape-outside",browsers:["E79","FF62","S10.1","C37","O24"],values:[{name:"margin-box",description:"The background is painted within (clipped to) the margin box."},{name:"none",description:"The float area is unaffected."}],syntax:"none | <shape-box> || <basic-shape> | <image>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/shape-outside"}],description:"Specifies an orthogonal rotation to be applied to an image before it is laid out.",restrictions:["image","box","shape","enum"]},{name:"shape-rendering",values:[{name:"auto",description:"Suppresses aural rendering."},{name:"crispEdges",description:"Emphasize the contrast between clean edges of artwork over rendering speed and geometric precision."},{name:"geometricPrecision",description:"Emphasize geometric precision over speed and crisp edges."},{name:"optimizeSpeed",description:"Emphasize rendering speed over geometric precision and crisp edges."}],relevance:50,description:"Provides hints about what tradeoffs to make as it renders vector graphics elements such as <path> elements and basic shapes such as circles and rectangles.",restrictions:["enum"]},{name:"size",browsers:["C","O8"],syntax:"<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]",relevance:52,description:"The size CSS at-rule descriptor, used with the @page at-rule, defines the size and orientation of the box which is used to represent a page. Most of the time, this size corresponds to the target size of the printed page if applicable.",restrictions:["length"]},{name:"src",values:[{name:"url()",description:"Reference font by URL"},{name:"format()",description:"Optional hint describing the format of the font resource."},{name:"local()",description:"Format-specific string that identifies a locally available copy of a given font."}],syntax:"[ <url> [ format( <string># ) ]? | local( <family-name> ) ]#",relevance:67,description:"@font-face descriptor. Specifies the resource containing font data. It is required, whether the font is downloadable or locally installed.",restrictions:["enum","url","identifier"]},{name:"stop-color",relevance:51,description:"Indicates what color to use at that gradient stop.",restrictions:["color"]},{name:"stop-opacity",relevance:50,description:"Defines the opacity of a given gradient stop.",restrictions:["number(0-1)"]},{name:"stroke",values:[{name:"url()",description:"A URL reference to a paint server element, which is an element that defines a paint server: ‘hatch’, ‘linearGradient’, ‘mesh’, ‘pattern’, ‘radialGradient’ and ‘solidcolor’."},{name:"none",description:"No paint is applied in this layer."}],relevance:63,description:"Paints along the outline of the given graphical element.",restrictions:["color","enum","url"]},{name:"stroke-dasharray",values:[{name:"none",description:"Indicates that no dashing is used."}],relevance:58,description:"Controls the pattern of dashes and gaps used to stroke paths.",restrictions:["length","percentage","number","enum"]},{name:"stroke-dashoffset",relevance:58,description:"Specifies the distance into the dash pattern to start the dash.",restrictions:["percentage","length"]},{name:"stroke-linecap",values:[{name:"butt",description:"Indicates that the stroke for each subpath does not extend beyond its two endpoints."},{name:"round",description:"Indicates that at each end of each subpath, the shape representing the stroke will be extended by a half circle with a radius equal to the stroke width."},{name:"square",description:"Indicates that at the end of each subpath, the shape representing the stroke will be extended by a rectangle with the same width as the stroke width and whose length is half of the stroke width."}],relevance:53,description:"Specifies the shape to be used at the end of open subpaths when they are stroked.",restrictions:["enum"]},{name:"stroke-linejoin",values:[{name:"bevel",description:"Indicates that a bevelled corner is to be used to join path segments."},{name:"miter",description:"Indicates that a sharp corner is to be used to join path segments."},{name:"round",description:"Indicates that a round corner is to be used to join path segments."}],relevance:50,description:"Specifies the shape to be used at the corners of paths or basic shapes when they are stroked.",restrictions:["enum"]},{name:"stroke-miterlimit",relevance:50,description:"When two line segments meet at a sharp angle and miter joins have been specified for 'stroke-linejoin', it is possible for the miter to extend far beyond the thickness of the line stroking the path.",restrictions:["number"]},{name:"stroke-opacity",relevance:51,description:"Specifies the opacity of the painting operation used to stroke the current object.",restrictions:["number(0-1)"]},{name:"stroke-width",relevance:60,description:"Specifies the width of the stroke on the current object.",restrictions:["percentage","length"]},{name:"suffix",browsers:["FF33"],syntax:"<symbol>",relevance:50,description:"@counter-style descriptor. Specifies a <symbol> that is appended to the marker representation.",restrictions:["image","string","identifier"]},{name:"system",browsers:["FF33"],values:[{name:"additive",description:"Represents “sign-value” numbering systems, which, rather than using reusing digits in different positions to change their value, define additional digits with much larger values, so that the value of the number can be obtained by adding all the digits together."},{name:"alphabetic",description:'Interprets the list of counter symbols as digits to an alphabetic numbering system, similar to the default lower-alpha counter style, which wraps from "a", "b", "c", to "aa", "ab", "ac".'},{name:"cyclic",description:"Cycles repeatedly through its provided symbols, looping back to the beginning when it reaches the end of the list."},{name:"extends",description:"Use the algorithm of another counter style, but alter other aspects."},{name:"fixed",description:"Runs through its list of counter symbols once, then falls back."},{name:"numeric",description:"interprets the list of counter symbols as digits to a \"place-value\" numbering system, similar to the default 'decimal' counter style."},{name:"symbolic",description:"Cycles repeatedly through its provided symbols, doubling, tripling, etc. the symbols on each successive pass through the list."}],syntax:"cyclic | numeric | alphabetic | symbolic | additive | [ fixed <integer>? ] | [ extends <counter-style-name> ]",relevance:50,description:"@counter-style descriptor. Specifies which algorithm will be used to construct the counter’s representation based on the counter value.",restrictions:["enum","integer"]},{name:"symbols",browsers:["FF33"],syntax:"<symbol>+",relevance:50,description:"@counter-style descriptor. Specifies the symbols used by the marker-construction algorithm specified by the system descriptor.",restrictions:["image","string","identifier"]},{name:"table-layout",values:[{name:"auto",description:"Use any automatic table layout algorithm."},{name:"fixed",description:"Use the fixed table layout algorithm."}],syntax:"auto | fixed",relevance:61,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/table-layout"}],description:"Controls the algorithm used to lay out the table cells, rows, and columns.",restrictions:["enum"]},{name:"tab-size",browsers:["E79","FF4","S6.1","C21","O15"],syntax:"<integer> | <length>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/tab-size"}],description:"Determines the width of the tab character (U+0009), in space characters (U+0020), when rendered.",restrictions:["integer","length"]},{name:"text-align",values:[{name:"center",description:"The inline contents are centered within the line box."},{name:"end",description:"The inline contents are aligned to the end edge of the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."},{name:"start",description:"The inline contents are aligned to the start edge of the line box."}],syntax:"start | end | left | right | center | justify | match-parent",relevance:93,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-align"}],description:"Describes how inline contents of a block are horizontally aligned if the contents do not completely fill the line box.",restrictions:["string"]},{name:"text-align-last",browsers:["E12","FF49","C47","IE5.5","O34"],values:[{name:"auto",description:"Content on the affected line is aligned per 'text-align' unless 'text-align' is set to 'justify', in which case it is 'start-aligned'."},{name:"center",description:"The inline contents are centered within the line box."},{name:"justify",description:"The text is justified according to the method specified by the 'text-justify' property."},{name:"left",description:"The inline contents are aligned to the left edge of the line box. In vertical text, 'left' aligns to the edge of the line box that would be the start edge for left-to-right text."},{name:"right",description:"The inline contents are aligned to the right edge of the line box. In vertical text, 'right' aligns to the edge of the line box that would be the end edge for left-to-right text."}],syntax:"auto | start | end | left | right | center | justify",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-align-last"}],description:"Describes how the last line of a block or a line right before a forced line break is aligned when 'text-align' is set to 'justify'.",restrictions:["enum"]},{name:"text-anchor",values:[{name:"end",description:"The rendered characters are aligned such that the end of the resulting rendered text is at the initial current text position."},{name:"middle",description:"The rendered characters are aligned such that the geometric middle of the resulting rendered text is at the initial current text position."},{name:"start",description:"The rendered characters are aligned such that the start of the resulting rendered text is at the initial current text position."}],relevance:50,description:"Used to align (start-, middle- or end-alignment) a string of text relative to a given point.",restrictions:["enum"]},{name:"text-decoration",values:[{name:"dashed",description:"Produces a dashed line style."},{name:"dotted",description:"Produces a dotted line."},{name:"double",description:"Produces a double line."},{name:"line-through",description:"Each line of text has a line through the middle."},{name:"none",description:"Produces no line."},{name:"overline",description:"Each line of text has a line above it."},{name:"solid",description:"Produces a solid line."},{name:"underline",description:"Each line of text is underlined."},{name:"wavy",description:"Produces a wavy line."}],syntax:"<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration"}],description:"Decorations applied to font used for an element's text.",restrictions:["enum","color"]},{name:"text-decoration-color",browsers:["E79","FF36","S12.1","C57","O44"],syntax:"<color>",relevance:52,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-color"}],description:"Specifies the color of text decoration (underlines overlines, and line-throughs) set on the element with text-decoration-line.",restrictions:["color"]},{name:"text-decoration-line",browsers:["E79","FF36","S12.1","C57","O44"],values:[{name:"line-through",description:"Each line of text has a line through the middle."},{name:"none",description:"Neither produces nor inhibits text decoration."},{name:"overline",description:"Each line of text has a line above it."},{name:"underline",description:"Each line of text is underlined."}],syntax:"none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-line"}],description:"Specifies what line decorations, if any, are added to the element.",restrictions:["enum"]},{name:"text-decoration-style",browsers:["E79","FF36","S12.1","C57","O44"],values:[{name:"dashed",description:"Produces a dashed line style."},{name:"dotted",description:"Produces a dotted line."},{name:"double",description:"Produces a double line."},{name:"none",description:"Produces no line."},{name:"solid",description:"Produces a solid line."},{name:"wavy",description:"Produces a wavy line."}],syntax:"solid | double | dotted | dashed | wavy",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-style"}],description:"Specifies the line style for underline, line-through and overline text decoration.",restrictions:["enum"]},{name:"text-indent",values:[],syntax:"<length-percentage> && hanging? && each-line?",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-indent"}],description:"Specifies the indentation applied to lines of inline content in a block. The indentation only affects the first line of inline content in the block unless the 'hanging' keyword is specified, in which case it affects all lines except the first.",restrictions:["percentage","length"]},{name:"text-justify",browsers:["E12","FF55","C32","IE11","O19"],values:[{name:"auto",description:"The UA determines the justification algorithm to follow, based on a balance between performance and adequate presentation quality."},{name:"distribute",description:"Justification primarily changes spacing both at word separators and at grapheme cluster boundaries in all scripts except those in the connected and cursive groups. This value is sometimes used in e.g. Japanese, often with the 'text-align-last' property."},{name:"distribute-all-lines"},{name:"inter-cluster",description:"Justification primarily changes spacing at word separators and at grapheme cluster boundaries in clustered scripts. This value is typically used for Southeast Asian scripts such as Thai."},{name:"inter-ideograph",description:"Justification primarily changes spacing at word separators and at inter-graphemic boundaries in scripts that use no word spaces. This value is typically used for CJK languages."},{name:"inter-word",description:"Justification primarily changes spacing at word separators. This value is typically used for languages that separate words using spaces, like English or (sometimes) Korean."},{name:"kashida",description:"Justification primarily stretches Arabic and related scripts through the use of kashida or other calligraphic elongation."},{name:"newspaper"}],syntax:"auto | inter-character | inter-word | none",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-justify"}],description:"Selects the justification algorithm used when 'text-align' is set to 'justify'. The property applies to block containers, but the UA may (but is not required to) also support it on inline elements.",restrictions:["enum"]},{name:"text-orientation",browsers:["E79","FF41","S5.1","C48","O15"],values:[{name:"sideways",browsers:["E79","FF41","S5.1","C48","O15"],description:"This value is equivalent to 'sideways-right' in 'vertical-rl' writing mode and equivalent to 'sideways-left' in 'vertical-lr' writing mode."},{name:"sideways-right",browsers:["E79","FF41","S5.1","C48","O15"],description:"In vertical writing modes, this causes text to be set as if in a horizontal layout, but rotated 90° clockwise."},{name:"upright",description:"In vertical writing modes, characters from horizontal-only scripts are rendered upright, i.e. in their standard horizontal orientation."}],syntax:"mixed | upright | sideways",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-orientation"}],description:"Specifies the orientation of text within a line.",restrictions:["enum"]},{name:"text-overflow",values:[{name:"clip",description:"Clip inline content that overflows. Characters may be only partially rendered."},{name:"ellipsis",description:"Render an ellipsis character (U+2026) to represent clipped inline content."}],syntax:"[ clip | ellipsis | <string> ]{1,2}",relevance:81,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-overflow"}],description:"Text can overflow for example when it is prevented from wrapping.",restrictions:["enum","string"]},{name:"text-rendering",browsers:["E79","FF1","S5","C4","O15"],values:[{name:"auto"},{name:"geometricPrecision",description:"Indicates that the user agent shall emphasize geometric precision over legibility and rendering speed."},{name:"optimizeLegibility",description:"Indicates that the user agent shall emphasize legibility over rendering speed and geometric precision."},{name:"optimizeSpeed",description:"Indicates that the user agent shall emphasize rendering speed over legibility and geometric precision."}],syntax:"auto | optimizeSpeed | optimizeLegibility | geometricPrecision",relevance:68,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-rendering"}],description:"The creator of SVG content might want to provide a hint to the implementation about what tradeoffs to make as it renders text. The ‘text-rendering’ property provides these hints.",restrictions:["enum"]},{name:"text-shadow",values:[{name:"none",description:"No shadow."}],syntax:"none | <shadow-t>#",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-shadow"}],description:"Enables shadow effects to be applied to the text of the element.",restrictions:["length","color"]},{name:"text-transform",values:[{name:"capitalize",description:"Puts the first typographic letter unit of each word in titlecase."},{name:"lowercase",description:"Puts all letters in lowercase."},{name:"none",description:"No effects."},{name:"uppercase",description:"Puts all letters in uppercase."}],syntax:"none | capitalize | uppercase | lowercase | full-width | full-size-kana",relevance:84,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-transform"}],description:"Controls capitalization effects of an element’s text.",restrictions:["enum"]},{name:"text-underline-position",values:[{name:"above"},{name:"auto",description:"The user agent may use any algorithm to determine the underline’s position. In horizontal line layout, the underline should be aligned as for alphabetic. In vertical line layout, if the language is set to Japanese or Korean, the underline should be aligned as for over."},{name:"below",description:"The underline is aligned with the under edge of the element’s content box."}],syntax:"auto | from-font | [ under || [ left | right ] ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-underline-position"}],description:"Sets the position of an underline specified on the same element: it does not affect underlines specified by ancestor elements. This property is typically used in vertical writing contexts such as in Japanese documents where it often desired to have the underline appear 'over' (to the right of) the affected run of text",restrictions:["enum"]},{name:"top",values:[{name:"auto",description:"For non-replaced elements, the effect of this value depends on which of related properties have the value 'auto' as well"}],syntax:"<length> | <percentage> | auto",relevance:95,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/top"}],description:"Specifies how far an absolutely positioned box's top margin edge is offset below the top edge of the box's 'containing block'.",restrictions:["length","percentage"]},{name:"touch-action",values:[{name:"auto",description:"The user agent may determine any permitted touch behaviors for touches that begin on the element."},{name:"cross-slide-x"},{name:"cross-slide-y"},{name:"double-tap-zoom"},{name:"manipulation",description:"The user agent may consider touches that begin on the element only for the purposes of scrolling and continuous zooming."},{name:"none",description:"Touches that begin on the element must not trigger default touch behaviors."},{name:"pan-x",description:"The user agent may consider touches that begin on the element only for the purposes of horizontally scrolling the element’s nearest ancestor with horizontally scrollable content."},{name:"pan-y",description:"The user agent may consider touches that begin on the element only for the purposes of vertically scrolling the element’s nearest ancestor with vertically scrollable content."},{name:"pinch-zoom"}],syntax:"auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation",relevance:65,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/touch-action"}],description:"Determines whether touch input may trigger default behavior supplied by user agent.",restrictions:["enum"]},{name:"transform",values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"perspective()",description:"Specifies a perspective projection matrix."},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],syntax:"none | <transform-list>",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform"}],description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"transform-origin",syntax:"[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform-origin"}],description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"transform-style",browsers:["E12","FF16","S9","C36","O23"],values:[{name:"flat",description:"All children of this element are rendered flattened into the 2D plane of the element."},{name:"preserve-3d",browsers:["E12","FF16","S9","C36","O23"],description:"Flattening is not performed, so children maintain their position in 3D space."}],syntax:"flat | preserve-3d",relevance:54,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform-style"}],description:"Defines how nested elements are rendered in 3D space.",restrictions:["enum"]},{name:"transition",values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],syntax:"<single-transition>#",relevance:87,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition"}],description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"transition-delay",syntax:"<time>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-delay"}],description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"transition-duration",syntax:"<time>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-duration"}],description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"transition-property",values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],syntax:"none | <single-transition-property>#",relevance:64,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-property"}],description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"transition-timing-function",syntax:"<timing-function>#",relevance:60,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transition-timing-function"}],description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"unicode-bidi",values:[{name:"bidi-override",description:"Inside the element, reordering is strictly in sequence according to the 'direction' property; the implicit part of the bidirectional algorithm is ignored."},{name:"embed",description:"If the element is inline-level, this value opens an additional level of embedding with respect to the bidirectional algorithm. The direction of this embedding level is given by the 'direction' property."},{name:"isolate",description:"The contents of the element are considered to be inside a separate, independent paragraph."},{name:"isolate-override",description:"This combines the isolation behavior of 'isolate' with the directional override behavior of 'bidi-override'"},{name:"normal",description:"The element does not open an additional level of embedding with respect to the bidirectional algorithm. For inline-level elements, implicit reordering works across element boundaries."},{name:"plaintext",description:"For the purposes of the Unicode bidirectional algorithm, the base directionality of each bidi paragraph for which the element forms the containing block is determined not by the element's computed 'direction'."}],syntax:"normal | embed | isolate | bidi-override | isolate-override | plaintext",relevance:57,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/unicode-bidi"}],description:"The level of embedding with respect to the bidirectional algorithm.",restrictions:["enum"]},{name:"unicode-range",values:[{name:"U+26",description:"Ampersand."},{name:"U+20-24F, U+2B0-2FF, U+370-4FF, U+1E00-1EFF, U+2000-20CF, U+2100-23FF, U+2500-26FF, U+E000-F8FF, U+FB00–FB4F",description:"WGL4 character set (Pan-European)."},{name:"U+20-17F, U+2B0-2FF, U+2000-206F, U+20A0-20CF, U+2100-21FF, U+2600-26FF",description:"The Multilingual European Subset No. 1. Latin. Covers ~44 languages."},{name:"U+20-2FF, U+370-4FF, U+1E00-20CF, U+2100-23FF, U+2500-26FF, U+FB00-FB4F, U+FFF0-FFFD",description:"The Multilingual European Subset No. 2. Latin, Greek, and Cyrillic. Covers ~128 language."},{name:"U+20-4FF, U+530-58F, U+10D0-10FF, U+1E00-23FF, U+2440-245F, U+2500-26FF, U+FB00-FB4F, U+FE20-FE2F, U+FFF0-FFFD",description:"The Multilingual European Subset No. 3. Covers all characters belonging to European scripts."},{name:"U+00-7F",description:"Basic Latin (ASCII)."},{name:"U+80-FF",description:"Latin-1 Supplement. Accented characters for Western European languages, common punctuation characters, multiplication and division signs."},{name:"U+100-17F",description:"Latin Extended-A. Accented characters for for Czech, Dutch, Polish, and Turkish."},{name:"U+180-24F",description:"Latin Extended-B. Croatian, Slovenian, Romanian, Non-European and historic latin, Khoisan, Pinyin, Livonian, Sinology."},{name:"U+1E00-1EFF",description:"Latin Extended Additional. Vietnamese, German captial sharp s, Medievalist, Latin general use."},{name:"U+250-2AF",description:"International Phonetic Alphabet Extensions."},{name:"U+370-3FF",description:"Greek and Coptic."},{name:"U+1F00-1FFF",description:"Greek Extended. Accented characters for polytonic Greek."},{name:"U+400-4FF",description:"Cyrillic."},{name:"U+500-52F",description:"Cyrillic Supplement. Extra letters for Komi, Khanty, Chukchi, Mordvin, Kurdish, Aleut, Chuvash, Abkhaz, Azerbaijani, and Orok."},{name:"U+00-52F, U+1E00-1FFF, U+2200–22FF",description:"Latin, Greek, Cyrillic, some punctuation and symbols."},{name:"U+530–58F",description:"Armenian."},{name:"U+590–5FF",description:"Hebrew."},{name:"U+600–6FF",description:"Arabic."},{name:"U+750–77F",description:"Arabic Supplement. Additional letters for African languages, Khowar, Torwali, Burushaski, and early Persian."},{name:"U+8A0–8FF",description:"Arabic Extended-A. Additional letters for African languages, European and Central Asian languages, Rohingya, Tamazight, Arwi, and Koranic annotation signs."},{name:"U+700–74F",description:"Syriac."},{name:"U+900–97F",description:"Devanagari."},{name:"U+980–9FF",description:"Bengali."},{name:"U+A00–A7F",description:"Gurmukhi."},{name:"U+A80–AFF",description:"Gujarati."},{name:"U+B00–B7F",description:"Oriya."},{name:"U+B80–BFF",description:"Tamil."},{name:"U+C00–C7F",description:"Telugu."},{name:"U+C80–CFF",description:"Kannada."},{name:"U+D00–D7F",description:"Malayalam."},{name:"U+D80–DFF",description:"Sinhala."},{name:"U+118A0–118FF",description:"Warang Citi."},{name:"U+E00–E7F",description:"Thai."},{name:"U+1A20–1AAF",description:"Tai Tham."},{name:"U+AA80–AADF",description:"Tai Viet."},{name:"U+E80–EFF",description:"Lao."},{name:"U+F00–FFF",description:"Tibetan."},{name:"U+1000–109F",description:"Myanmar (Burmese)."},{name:"U+10A0–10FF",description:"Georgian."},{name:"U+1200–137F",description:"Ethiopic."},{name:"U+1380–139F",description:"Ethiopic Supplement. Extra Syllables for Sebatbeit, and Tonal marks"},{name:"U+2D80–2DDF",description:"Ethiopic Extended. Extra Syllables for Me'en, Blin, and Sebatbeit."},{name:"U+AB00–AB2F",description:"Ethiopic Extended-A. Extra characters for Gamo-Gofa-Dawro, Basketo, and Gumuz."},{name:"U+1780–17FF",description:"Khmer."},{name:"U+1800–18AF",description:"Mongolian."},{name:"U+1B80–1BBF",description:"Sundanese."},{name:"U+1CC0–1CCF",description:"Sundanese Supplement. Punctuation."},{name:"U+4E00–9FD5",description:"CJK (Chinese, Japanese, Korean) Unified Ideographs. Most common ideographs for modern Chinese and Japanese."},{name:"U+3400–4DB5",description:"CJK Unified Ideographs Extension A. Rare ideographs."},{name:"U+2F00–2FDF",description:"Kangxi Radicals."},{name:"U+2E80–2EFF",description:"CJK Radicals Supplement. Alternative forms of Kangxi Radicals."},{name:"U+1100–11FF",description:"Hangul Jamo."},{name:"U+AC00–D7AF",description:"Hangul Syllables."},{name:"U+3040–309F",description:"Hiragana."},{name:"U+30A0–30FF",description:"Katakana."},{name:"U+A5, U+4E00-9FFF, U+30??, U+FF00-FF9F",description:"Japanese Kanji, Hiragana and Katakana characters plus Yen/Yuan symbol."},{name:"U+A4D0–A4FF",description:"Lisu."},{name:"U+A000–A48F",description:"Yi Syllables."},{name:"U+A490–A4CF",description:"Yi Radicals."},{name:"U+2000-206F",description:"General Punctuation."},{name:"U+3000–303F",description:"CJK Symbols and Punctuation."},{name:"U+2070–209F",description:"Superscripts and Subscripts."},{name:"U+20A0–20CF",description:"Currency Symbols."},{name:"U+2100–214F",description:"Letterlike Symbols."},{name:"U+2150–218F",description:"Number Forms."},{name:"U+2190–21FF",description:"Arrows."},{name:"U+2200–22FF",description:"Mathematical Operators."},{name:"U+2300–23FF",description:"Miscellaneous Technical."},{name:"U+E000-F8FF",description:"Private Use Area."},{name:"U+FB00–FB4F",description:"Alphabetic Presentation Forms. Ligatures for latin, Armenian, and Hebrew."},{name:"U+FB50–FDFF",description:"Arabic Presentation Forms-A. Contextual forms / ligatures for Persian, Urdu, Sindhi, Central Asian languages, etc, Arabic pedagogical symbols, word ligatures."},{name:"U+1F600–1F64F",description:"Emoji: Emoticons."},{name:"U+2600–26FF",description:"Emoji: Miscellaneous Symbols."},{name:"U+1F300–1F5FF",description:"Emoji: Miscellaneous Symbols and Pictographs."},{name:"U+1F900–1F9FF",description:"Emoji: Supplemental Symbols and Pictographs."},{name:"U+1F680–1F6FF",description:"Emoji: Transport and Map Symbols."}],syntax:"<unicode-range>#",relevance:58,description:"@font-face descriptor. Defines the set of Unicode codepoints that may be supported by the font face for which it is declared.",restrictions:["unicode-range"]},{name:"user-select",values:[{name:"all",description:"The content of the element must be selected atomically"},{name:"auto"},{name:"contain",description:"UAs must not allow a selection which is started in this element to be extended outside of this element."},{name:"none",description:"The UA must not allow selections to be started in this element."},{name:"text",description:"The element imposes no constraint on the selection."}],status:"nonstandard",syntax:"auto | text | none | contain | all",relevance:24,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/user-select"}],description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"vertical-align",values:[{name:"auto",description:"Align the dominant baseline of the parent box with the equivalent, or heuristically reconstructed, baseline of the element inline box."},{name:"baseline",description:"Align the 'alphabetic' baseline of the element with the 'alphabetic' baseline of the parent element."},{name:"bottom",description:"Align the after edge of the extended inline box with the after-edge of the line box."},{name:"middle",description:"Align the 'middle' baseline of the inline element with the middle baseline of the parent."},{name:"sub",description:"Lower the baseline of the box to the proper position for subscripts of the parent's box. (This value has no effect on the font size of the element's text.)"},{name:"super",description:"Raise the baseline of the box to the proper position for superscripts of the parent's box. (This value has no effect on the font size of the element's text.)"},{name:"text-bottom",description:"Align the bottom of the box with the after-edge of the parent element's font."},{name:"text-top",description:"Align the top of the box with the before-edge of the parent element's font."},{name:"top",description:"Align the before edge of the extended inline box with the before-edge of the line box."},{name:"-webkit-baseline-middle"}],syntax:"baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/vertical-align"}],description:"Affects the vertical positioning of the inline boxes generated by an inline-level element inside a line box.",restrictions:["percentage","length"]},{name:"visibility",values:[{name:"collapse",description:"Table-specific. If used on elements other than rows, row groups, columns, or column groups, 'collapse' has the same meaning as 'hidden'."},{name:"hidden",description:"The generated box is invisible (fully transparent, nothing is drawn), but still affects layout."},{name:"visible",description:"The generated box is visible."}],syntax:"visible | hidden | collapse",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/visibility"}],description:"Specifies whether the boxes generated by an element are rendered. Invisible boxes still affect layout (set the ‘display’ property to ‘none’ to suppress box generation altogether).",restrictions:["enum"]},{name:"-webkit-animation",browsers:["C","S5"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"infinite",description:"Causes the animation to repeat forever."},{name:"none",description:"No animation is performed"},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Shorthand property combines six of the animation properties into a single property.",restrictions:["time","enum","timing-function","identifier","number"]},{name:"-webkit-animation-delay",browsers:["C","S5"],relevance:50,description:"Defines when the animation will start.",restrictions:["time"]},{name:"-webkit-animation-direction",browsers:["C","S5"],values:[{name:"alternate",description:"The animation cycle iterations that are odd counts are played in the normal direction, and the animation cycle iterations that are even counts are played in a reverse direction."},{name:"alternate-reverse",description:"The animation cycle iterations that are odd counts are played in the reverse direction, and the animation cycle iterations that are even counts are played in a normal direction."},{name:"normal",description:"Normal playback."},{name:"reverse",description:"All iterations of the animation are played in the reverse direction from the way they were specified."}],relevance:50,description:"Defines whether or not the animation should play in reverse on alternate cycles.",restrictions:["enum"]},{name:"-webkit-animation-duration",browsers:["C","S5"],relevance:50,description:"Defines the length of time that an animation takes to complete one cycle.",restrictions:["time"]},{name:"-webkit-animation-fill-mode",browsers:["C","S5"],values:[{name:"backwards",description:"The beginning property value (as defined in the first @keyframes at-rule) is applied before the animation is displayed, during the period defined by 'animation-delay'."},{name:"both",description:"Both forwards and backwards fill modes are applied."},{name:"forwards",description:"The final property value (as defined in the last @keyframes at-rule) is maintained after the animation completes."},{name:"none",description:"There is no change to the property value between the time the animation is applied and the time the animation begins playing or after the animation completes."}],relevance:50,description:"Defines what values are applied by the animation outside the time it is executing.",restrictions:["enum"]},{name:"-webkit-animation-iteration-count",browsers:["C","S5"],values:[{name:"infinite",description:"Causes the animation to repeat forever."}],relevance:50,description:"Defines the number of times an animation cycle is played. The default value is one, meaning the animation will play from beginning to end once.",restrictions:["number","enum"]},{name:"-webkit-animation-name",browsers:["C","S5"],values:[{name:"none",description:"No animation is performed"}],relevance:50,description:"Defines a list of animations that apply. Each name is used to select the keyframe at-rule that provides the property values for the animation.",restrictions:["identifier","enum"]},{name:"-webkit-animation-play-state",browsers:["C","S5"],values:[{name:"paused",description:"A running animation will be paused."},{name:"running",description:"Resume playback of a paused animation."}],relevance:50,description:"Defines whether the animation is running or paused.",restrictions:["enum"]},{name:"-webkit-animation-timing-function",browsers:["C","S5"],relevance:50,description:"Describes how the animation will progress over one cycle of its duration. See the 'transition-timing-function'.",restrictions:["timing-function"]},{name:"-webkit-appearance",browsers:["C","S3"],values:[{name:"button"},{name:"button-bevel"},{name:"caps-lock-indicator"},{name:"caret"},{name:"checkbox"},{name:"default-button"},{name:"listbox"},{name:"listitem"},{name:"media-fullscreen-button"},{name:"media-mute-button"},{name:"media-play-button"},{name:"media-seek-back-button"},{name:"media-seek-forward-button"},{name:"media-slider"},{name:"media-sliderthumb"},{name:"menulist"},{name:"menulist-button"},{name:"menulist-text"},{name:"menulist-textfield"},{name:"none"},{name:"push-button"},{name:"radio"},{name:"scrollbarbutton-down"},{name:"scrollbarbutton-left"},{name:"scrollbarbutton-right"},{name:"scrollbarbutton-up"},{name:"scrollbargripper-horizontal"},{name:"scrollbargripper-vertical"},{name:"scrollbarthumb-horizontal"},{name:"scrollbarthumb-vertical"},{name:"scrollbartrack-horizontal"},{name:"scrollbartrack-vertical"},{name:"searchfield"},{name:"searchfield-cancel-button"},{name:"searchfield-decoration"},{name:"searchfield-results-button"},{name:"searchfield-results-decoration"},{name:"slider-horizontal"},{name:"sliderthumb-horizontal"},{name:"sliderthumb-vertical"},{name:"slider-vertical"},{name:"square-button"},{name:"textarea"},{name:"textfield"}],status:"nonstandard",syntax:"none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | media-time-remaining-display | media-toggle-closed-captions-button | media-volume-slider | media-volume-slider-container | media-volume-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield",relevance:0,description:"Changes the appearance of buttons and other controls to resemble native controls.",restrictions:["enum"]},{name:"-webkit-backdrop-filter",browsers:["S9"],values:[{name:"none",description:"No filter effects are applied."},{name:"blur()",description:"Applies a Gaussian blur to the input image."},{name:"brightness()",description:"Applies a linear multiplier to input image, making it appear more or less bright."},{name:"contrast()",description:"Adjusts the contrast of the input."},{name:"drop-shadow()",description:"Applies a drop shadow effect to the input image."},{name:"grayscale()",description:"Converts the input image to grayscale."},{name:"hue-rotate()",description:"Applies a hue rotation on the input image. "},{name:"invert()",description:"Inverts the samples in the input image."},{name:"opacity()",description:"Applies transparency to the samples in the input image."},{name:"saturate()",description:"Saturates the input image."},{name:"sepia()",description:"Converts the input image to sepia."},{name:"url()",description:"A filter reference to a <filter> element."}],relevance:50,description:"Applies a filter effect where the first filter in the list takes the element's background image as the input image.",restrictions:["enum","url"]},{name:"-webkit-backface-visibility",browsers:["C","S5"],values:[{name:"hidden"},{name:"visible"}],relevance:50,description:"Determines whether or not the 'back' side of a transformed element is visible when facing the viewer. With an identity transform, the front side of an element faces the viewer.",restrictions:["enum"]},{name:"-webkit-background-clip",browsers:["C","S3"],relevance:50,description:"Determines the background painting area.",restrictions:["box"]},{name:"-webkit-background-composite",browsers:["C","S3"],values:[{name:"border"},{name:"padding"}],relevance:50,restrictions:["enum"]},{name:"-webkit-background-origin",browsers:["C","S3"],relevance:50,description:"For elements rendered as a single box, specifies the background positioning area. For elements rendered as multiple boxes (e.g., inline boxes on several lines, boxes on several pages) specifies which boxes 'box-decoration-break' operates on to determine the background positioning area(s).",restrictions:["box"]},{name:"-webkit-border-image",browsers:["C","S5"],values:[{name:"auto",description:"If 'auto' is specified then the border image width is the intrinsic width or height (whichever is applicable) of the corresponding image slice. If the image does not have the required intrinsic dimension then the corresponding border-width is used instead."},{name:"fill",description:"Causes the middle part of the border-image to be preserved."},{name:"none"},{name:"repeat",description:"The image is tiled (repeated) to fill the area."},{name:"round",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the image is rescaled so that it does."},{name:"space",description:"The image is tiled (repeated) to fill the area. If it does not fill the area with a whole number of tiles, the extra space is distributed around the tiles."},{name:"stretch",description:"The image is stretched to fill the area."},{name:"url()"}],relevance:50,description:"Shorthand property for setting 'border-image-source', 'border-image-slice', 'border-image-width', 'border-image-outset' and 'border-image-repeat'. Omitted values are set to their initial values.",restrictions:["length","percentage","number","url","enum"]},{name:"-webkit-box-align",browsers:["C","S3"],values:[{name:"baseline",description:"If this box orientation is inline-axis or horizontal, all children are placed with their baselines aligned, and extra space placed before or after as necessary. For block flows, the baseline of the first non-empty line box located within the element is used. For tables, the baseline of the first cell is used."},{name:"center",description:"Any extra space is divided evenly, with half placed above the child and the other half placed after the child."},{name:"end",description:"For normal direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element. For reverse direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element."},{name:"start",description:"For normal direction boxes, the top edge of each child is placed along the top of the box. Extra space is placed below the element. For reverse direction boxes, the bottom edge of each child is placed along the bottom of the box. Extra space is placed above the element."},{name:"stretch",description:"The height of each child is adjusted to that of the containing block."}],relevance:50,description:"Specifies the alignment of nested elements within an outer flexible box element.",restrictions:["enum"]},{name:"-webkit-box-direction",browsers:["C","S3"],values:[{name:"normal",description:"A box with a computed value of horizontal for box-orient displays its children from left to right. A box with a computed value of vertical displays its children from top to bottom."},{name:"reverse",description:"A box with a computed value of horizontal for box-orient displays its children from right to left. A box with a computed value of vertical displays its children from bottom to top."}],relevance:50,description:"In webkit applications, -webkit-box-direction specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).",restrictions:["enum"]},{name:"-webkit-box-flex",browsers:["C","S3"],relevance:50,description:"Specifies an element's flexibility.",restrictions:["number"]},{name:"-webkit-box-flex-group",browsers:["C","S3"],relevance:50,description:"Flexible elements can be assigned to flex groups using the 'box-flex-group' property.",restrictions:["integer"]},{name:"-webkit-box-ordinal-group",browsers:["C","S3"],relevance:50,description:"Indicates the ordinal group the element belongs to. Elements with a lower ordinal group are displayed before those with a higher ordinal group.",restrictions:["integer"]},{name:"-webkit-box-orient",browsers:["C","S3"],values:[{name:"block-axis",description:"Elements are oriented along the box's axis."},{name:"horizontal",description:"The box displays its children from left to right in a horizontal line."},{name:"inline-axis",description:"Elements are oriented vertically."},{name:"vertical",description:"The box displays its children from stacked from top to bottom vertically."}],relevance:50,description:"In webkit applications, -webkit-box-orient specifies whether a box lays out its contents horizontally or vertically.",restrictions:["enum"]},{name:"-webkit-box-pack",browsers:["C","S3"],values:[{name:"center",description:"The extra space is divided evenly, with half placed before the first child and the other half placed after the last child."},{name:"end",description:"For normal direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child. For reverse direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child."},{name:"justify",description:"The space is divided evenly in-between each child, with none of the extra space placed before the first child or after the last child. If there is only one child, treat the pack value as if it were start."},{name:"start",description:"For normal direction boxes, the left edge of the first child is placed at the left side, with all extra space placed after the last child. For reverse direction boxes, the right edge of the last child is placed at the right side, with all extra space placed before the first child."}],relevance:50,description:"Specifies alignment of child elements within the current element in the direction of orientation.",restrictions:["enum"]},{name:"-webkit-box-reflect",browsers:["E79","S4","C4","O15"],values:[{name:"above",description:"The reflection appears above the border box."},{name:"below",description:"The reflection appears below the border box."},{name:"left",description:"The reflection appears to the left of the border box."},{name:"right",description:"The reflection appears to the right of the border box."}],status:"nonstandard",syntax:"[ above | below | right | left ]? <length>? <image>?",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-box-reflect"}],description:"Defines a reflection of a border box."},{name:"-webkit-box-sizing",browsers:["C","S3"],values:[{name:"border-box",description:"The specified width and height (and respective min/max properties) on this element determine the border box of the element."},{name:"content-box",description:"Behavior of width and height as specified by CSS2.1. The specified width and height (and respective min/max properties) apply to the width and height respectively of the content box of the element."}],relevance:50,description:"Box Model addition in CSS3.",restrictions:["enum"]},{name:"-webkit-break-after",browsers:["S7"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-break-before",browsers:["S7"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-break-inside",browsers:["S7"],values:[{name:"auto",description:"Neither force nor forbid a page/column break inside the generated box."},{name:"avoid",description:"Avoid a page/column break inside the generated box."},{name:"avoid-column",description:"Avoid a column break inside the generated box."},{name:"avoid-page",description:"Avoid a page break inside the generated box."},{name:"avoid-region"}],relevance:50,description:"Describes the page/column break behavior inside the generated box.",restrictions:["enum"]},{name:"-webkit-column-break-after",browsers:["C","S3"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-column-break-before",browsers:["C","S3"],values:[{name:"always",description:"Always force a page break before/after the generated box."},{name:"auto",description:"Neither force nor forbid a page/column break before/after the generated box."},{name:"avoid",description:"Avoid a page/column break before/after the generated box."},{name:"avoid-column",description:"Avoid a column break before/after the generated box."},{name:"avoid-page",description:"Avoid a page break before/after the generated box."},{name:"avoid-region"},{name:"column",description:"Always force a column break before/after the generated box."},{name:"left",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a left page."},{name:"page",description:"Always force a page break before/after the generated box."},{name:"region"},{name:"right",description:"Force one or two page breaks before/after the generated box so that the next page is formatted as a right page."}],relevance:50,description:"Describes the page/column break behavior before the generated box.",restrictions:["enum"]},{name:"-webkit-column-break-inside",browsers:["C","S3"],values:[{name:"auto",description:"Neither force nor forbid a page/column break inside the generated box."},{name:"avoid",description:"Avoid a page/column break inside the generated box."},{name:"avoid-column",description:"Avoid a column break inside the generated box."},{name:"avoid-page",description:"Avoid a page break inside the generated box."},{name:"avoid-region"}],relevance:50,description:"Describes the page/column break behavior inside the generated box.",restrictions:["enum"]},{name:"-webkit-column-count",browsers:["C","S3"],values:[{name:"auto",description:"Determines the number of columns by the 'column-width' property and the element width."}],relevance:50,description:"Describes the optimal number of columns into which the content of the element will be flowed.",restrictions:["integer"]},{name:"-webkit-column-gap",browsers:["C","S3"],values:[{name:"normal",description:"User agent specific and typically equivalent to 1em."}],relevance:50,description:"Sets the gap between columns. If there is a column rule between columns, it will appear in the middle of the gap.",restrictions:["length"]},{name:"-webkit-column-rule",browsers:["C","S3"],relevance:50,description:"This property is a shorthand for setting 'column-rule-width', 'column-rule-style', and 'column-rule-color' at the same place in the style sheet. Omitted values are set to their initial values.",restrictions:["length","line-width","line-style","color"]},{name:"-webkit-column-rule-color",browsers:["C","S3"],relevance:50,description:"Sets the color of the column rule",restrictions:["color"]},{name:"-webkit-column-rule-style",browsers:["C","S3"],relevance:50,description:"Sets the style of the rule between columns of an element.",restrictions:["line-style"]},{name:"-webkit-column-rule-width",browsers:["C","S3"],relevance:50,description:"Sets the width of the rule between columns. Negative values are not allowed.",restrictions:["length","line-width"]},{name:"-webkit-columns",browsers:["C","S3"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"A shorthand property which sets both 'column-width' and 'column-count'.",restrictions:["length","integer"]},{name:"-webkit-column-span",browsers:["C","S3"],values:[{name:"all",description:"The element spans across all columns. Content in the normal flow that appears before the element is automatically balanced across all columns before the element appear."},{name:"none",description:"The element does not span multiple columns."}],relevance:50,description:"Describes the page/column break behavior after the generated box.",restrictions:["enum"]},{name:"-webkit-column-width",browsers:["C","S3"],values:[{name:"auto",description:"The width depends on the values of other properties."}],relevance:50,description:"This property describes the width of columns in multicol elements.",restrictions:["length"]},{name:"-webkit-filter",browsers:["C18","O15","S6"],values:[{name:"none",description:"No filter effects are applied."},{name:"blur()",description:"Applies a Gaussian blur to the input image."},{name:"brightness()",description:"Applies a linear multiplier to input image, making it appear more or less bright."},{name:"contrast()",description:"Adjusts the contrast of the input."},{name:"drop-shadow()",description:"Applies a drop shadow effect to the input image."},{name:"grayscale()",description:"Converts the input image to grayscale."},{name:"hue-rotate()",description:"Applies a hue rotation on the input image. "},{name:"invert()",description:"Inverts the samples in the input image."},{name:"opacity()",description:"Applies transparency to the samples in the input image."},{name:"saturate()",description:"Saturates the input image."},{name:"sepia()",description:"Converts the input image to sepia."},{name:"url()",description:"A filter reference to a <filter> element."}],relevance:50,description:"Processes an element’s rendering before it is displayed in the document, by applying one or more filter effects.",restrictions:["enum","url"]},{name:"-webkit-flow-from",browsers:["S6.1"],values:[{name:"none",description:"The block container is not a CSS Region."}],relevance:50,description:"Makes a block container a region and associates it with a named flow.",restrictions:["identifier"]},{name:"-webkit-flow-into",browsers:["S6.1"],values:[{name:"none",description:"The element is not moved to a named flow and normal CSS processing takes place."}],relevance:50,description:"Places an element or its contents into a named flow.",restrictions:["identifier"]},{name:"-webkit-font-feature-settings",browsers:["C16"],values:[{name:'"c2cs"'},{name:'"dlig"'},{name:'"kern"'},{name:'"liga"'},{name:'"lnum"'},{name:'"onum"'},{name:'"smcp"'},{name:'"swsh"'},{name:'"tnum"'},{name:"normal",description:"No change in glyph substitution or positioning occurs."},{name:"off"},{name:"on"}],relevance:50,description:"This property provides low-level control over OpenType font features. It is intended as a way of providing access to font features that are not widely used but are needed for a particular use case.",restrictions:["string","integer"]},{name:"-webkit-hyphens",browsers:["S5.1"],values:[{name:"auto",description:"Conditional hyphenation characters inside a word, if present, take priority over automatic resources when determining hyphenation points within the word."},{name:"manual",description:"Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities"},{name:"none",description:"Words are not broken at line breaks, even if characters inside the word suggest line break points."}],relevance:50,description:"Controls whether hyphenation is allowed to create more break opportunities within a line of text.",restrictions:["enum"]},{name:"-webkit-line-break",browsers:["C","S3"],values:[{name:"after-white-space"},{name:"normal"}],relevance:50,description:"Specifies line-breaking rules for CJK (Chinese, Japanese, and Korean) text."},{name:"-webkit-margin-bottom-collapse",browsers:["C","S3"],values:[{name:"collapse"},{name:"discard"},{name:"separate"}],relevance:50,restrictions:["enum"]},{name:"-webkit-margin-collapse",browsers:["C","S3"],values:[{name:"collapse"},{name:"discard"},{name:"separate"}],relevance:50,restrictions:["enum"]},{name:"-webkit-margin-start",browsers:["C","S3"],values:[{name:"auto"}],relevance:50,restrictions:["percentage","length"]},{name:"-webkit-margin-top-collapse",browsers:["C","S3"],values:[{name:"collapse"},{name:"discard"},{name:"separate"}],relevance:50,restrictions:["enum"]},{name:"-webkit-mask-clip",browsers:["C","O15","S4"],status:"nonstandard",syntax:"[ <box> | border | padding | content | text ]#",relevance:0,description:"Determines the mask painting area, which determines the area that is affected by the mask.",restrictions:["box"]},{name:"-webkit-mask-image",browsers:["C","O15","S4"],values:[{name:"none",description:"Counts as a transparent black image layer."},{name:"url()",description:"Reference to a <mask element or to a CSS image."}],status:"nonstandard",syntax:"<mask-reference>#",relevance:0,description:"Sets the mask layer image of an element.",restrictions:["url","image","enum"]},{name:"-webkit-mask-origin",browsers:["C","O15","S4"],status:"nonstandard",syntax:"[ <box> | border | padding | content ]#",relevance:0,description:"Specifies the mask positioning area.",restrictions:["box"]},{name:"-webkit-mask-repeat",browsers:["C","O15","S4"],status:"nonstandard",syntax:"<repeat-style>#",relevance:0,description:"Specifies how mask layer images are tiled after they have been sized and positioned.",restrictions:["repeat"]},{name:"-webkit-mask-size",browsers:["C","O15","S4"],values:[{name:"auto",description:"Resolved by using the image’s intrinsic ratio and the size of the other dimension, or failing that, using the image’s intrinsic size, or failing that, treating it as 100%."},{name:"contain",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area."},{name:"cover",description:"Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area."}],status:"nonstandard",syntax:"<bg-size>#",relevance:0,description:"Specifies the size of the mask layer images.",restrictions:["length","percentage","enum"]},{name:"-webkit-nbsp-mode",browsers:["C","S3"],values:[{name:"normal"},{name:"space"}],relevance:50,description:"Defines the behavior of nonbreaking spaces within text."},{name:"-webkit-overflow-scrolling",browsers:["C","S5"],values:[{name:"auto"},{name:"touch"}],status:"nonstandard",syntax:"auto | touch",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-overflow-scrolling"}],description:"Specifies whether to use native-style scrolling in an overflow:scroll element."},{name:"-webkit-padding-start",browsers:["C","S3"],relevance:50,restrictions:["percentage","length"]},{name:"-webkit-perspective",browsers:["C","S4"],values:[{name:"none",description:"No perspective transform is applied."}],relevance:50,description:"Applies the same transform as the perspective(<number>) transform function, except that it applies only to the positioned or transformed children of the element, not to the transform on the element itself.",restrictions:["length"]},{name:"-webkit-perspective-origin",browsers:["C","S4"],relevance:50,description:"Establishes the origin for the perspective property. It effectively sets the X and Y position at which the viewer appears to be looking at the children of the element.",restrictions:["position","percentage","length"]},{name:"-webkit-region-fragment",browsers:["S7"],values:[{name:"auto",description:"Content flows as it would in a regular content box."},{name:"break",description:"If the content fits within the CSS Region, then this property has no effect."}],relevance:50,description:"The 'region-fragment' property controls the behavior of the last region associated with a named flow.",restrictions:["enum"]},{name:"-webkit-tap-highlight-color",browsers:["E12","C16","O≤15"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-tap-highlight-color"}],restrictions:["color"]},{name:"-webkit-text-fill-color",browsers:["E12","FF49","S3","C1","O15"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-fill-color"}],restrictions:["color"]},{name:"-webkit-text-size-adjust",browsers:["E","C","S3"],values:[{name:"auto",description:"Renderers must use the default size adjustment when displaying on a small device."},{name:"none",description:"Renderers must not do size adjustment when displaying on a small device."}],relevance:50,description:"Specifies a size adjustment for displaying text content in mobile browsers.",restrictions:["percentage"]},{name:"-webkit-text-stroke",browsers:["E15","FF49","S3","C4","O15"],status:"nonstandard",syntax:"<length> || <color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke"}],restrictions:["length","line-width","color","percentage"]},{name:"-webkit-text-stroke-color",browsers:["E15","FF49","S3","C1","O15"],status:"nonstandard",syntax:"<color>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-color"}],restrictions:["color"]},{name:"-webkit-text-stroke-width",browsers:["E15","FF49","S3","C1","O15"],status:"nonstandard",syntax:"<length>",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-text-stroke-width"}],restrictions:["length","line-width","percentage"]},{name:"-webkit-touch-callout",browsers:["S3"],values:[{name:"none"}],status:"nonstandard",syntax:"default | none",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-touch-callout"}],restrictions:["enum"]},{name:"-webkit-transform",browsers:["C","O12","S3.1"],values:[{name:"matrix()",description:"Specifies a 2D transformation in the form of a transformation matrix of six values. matrix(a,b,c,d,e,f) is equivalent to applying the transformation matrix [a b c d e f]"},{name:"matrix3d()",description:"Specifies a 3D transformation as a 4x4 homogeneous matrix of 16 values in column-major order."},{name:"none"},{name:"perspective()",description:"Specifies a perspective projection matrix."},{name:"rotate()",description:"Specifies a 2D rotation by the angle specified in the parameter about the origin of the element, as defined by the transform-origin property."},{name:"rotate3d()",description:"Specifies a clockwise 3D rotation by the angle specified in last parameter about the [x,y,z] direction vector described by the first 3 parameters."},{name:"rotateX('angle')",description:"Specifies a clockwise rotation by the given angle about the X axis."},{name:"rotateY('angle')",description:"Specifies a clockwise rotation by the given angle about the Y axis."},{name:"rotateZ('angle')",description:"Specifies a clockwise rotation by the given angle about the Z axis."},{name:"scale()",description:"Specifies a 2D scale operation by the [sx,sy] scaling vector described by the 2 parameters. If the second parameter is not provided, it is takes a value equal to the first."},{name:"scale3d()",description:"Specifies a 3D scale operation by the [sx,sy,sz] scaling vector described by the 3 parameters."},{name:"scaleX()",description:"Specifies a scale operation using the [sx,1] scaling vector, where sx is given as the parameter."},{name:"scaleY()",description:"Specifies a scale operation using the [sy,1] scaling vector, where sy is given as the parameter."},{name:"scaleZ()",description:"Specifies a scale operation using the [1,1,sz] scaling vector, where sz is given as the parameter."},{name:"skew()",description:"Specifies a skew transformation along the X and Y axes. The first angle parameter specifies the skew on the X axis. The second angle parameter specifies the skew on the Y axis. If the second parameter is not given then a value of 0 is used for the Y angle (ie: no skew on the Y axis)."},{name:"skewX()",description:"Specifies a skew transformation along the X axis by the given angle."},{name:"skewY()",description:"Specifies a skew transformation along the Y axis by the given angle."},{name:"translate()",description:"Specifies a 2D translation by the vector [tx, ty], where tx is the first translation-value parameter and ty is the optional second translation-value parameter."},{name:"translate3d()",description:"Specifies a 3D translation by the vector [tx,ty,tz], with tx, ty and tz being the first, second and third translation-value parameters respectively."},{name:"translateX()",description:"Specifies a translation by the given amount in the X direction."},{name:"translateY()",description:"Specifies a translation by the given amount in the Y direction."},{name:"translateZ()",description:"Specifies a translation by the given amount in the Z direction. Note that percentage values are not allowed in the translateZ translation-value, and if present are evaluated as 0."}],relevance:50,description:"A two-dimensional transformation is applied to an element through the 'transform' property. This property contains a list of transform functions similar to those allowed by SVG.",restrictions:["enum"]},{name:"-webkit-transform-origin",browsers:["C","O15","S3.1"],relevance:50,description:"Establishes the origin of transformation for an element.",restrictions:["position","length","percentage"]},{name:"-webkit-transform-origin-x",browsers:["C","S3.1"],relevance:50,description:"The x coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-webkit-transform-origin-y",browsers:["C","S3.1"],relevance:50,description:"The y coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-webkit-transform-origin-z",browsers:["C","S4"],relevance:50,description:"The z coordinate of the origin for transforms applied to an element with respect to its border box.",restrictions:["length","percentage"]},{name:"-webkit-transform-style",browsers:["C","S4"],values:[{name:"flat",description:"All children of this element are rendered flattened into the 2D plane of the element."}],relevance:50,description:"Defines how nested elements are rendered in 3D space.",restrictions:["enum"]},{name:"-webkit-transition",browsers:["C","O12","S5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Shorthand property combines four of the transition properties into a single property.",restrictions:["time","property","timing-function","enum"]},{name:"-webkit-transition-delay",browsers:["C","O12","S5"],relevance:50,description:"Defines when the transition will start. It allows a transition to begin execution some period of time from when it is applied.",restrictions:["time"]},{name:"-webkit-transition-duration",browsers:["C","O12","S5"],relevance:50,description:"Specifies how long the transition from the old value to the new value should take.",restrictions:["time"]},{name:"-webkit-transition-property",browsers:["C","O12","S5"],values:[{name:"all",description:"Every property that is able to undergo a transition will do so."},{name:"none",description:"No property will transition."}],relevance:50,description:"Specifies the name of the CSS property to which the transition is applied.",restrictions:["property"]},{name:"-webkit-transition-timing-function",browsers:["C","O12","S5"],relevance:50,description:"Describes how the intermediate values used during a transition will be calculated.",restrictions:["timing-function"]},{name:"-webkit-user-drag",browsers:["S3"],values:[{name:"auto"},{name:"element"},{name:"none"}],relevance:50,restrictions:["enum"]},{name:"-webkit-user-modify",browsers:["C","S3"],values:[{name:"read-only"},{name:"read-write"},{name:"read-write-plaintext-only"}],status:"nonstandard",syntax:"read-only | read-write | read-write-plaintext-only",relevance:0,description:"Determines whether a user can edit the content of an element.",restrictions:["enum"]},{name:"-webkit-user-select",browsers:["C","S3"],values:[{name:"auto"},{name:"none"},{name:"text"}],relevance:50,description:"Controls the appearance of selection.",restrictions:["enum"]},{name:"white-space",values:[{name:"normal",description:"Sets 'white-space-collapsing' to 'collapse' and 'text-wrap' to 'normal'."},{name:"nowrap",description:"Sets 'white-space-collapsing' to 'collapse' and 'text-wrap' to 'none'."},{name:"pre",description:"Sets 'white-space-collapsing' to 'preserve' and 'text-wrap' to 'none'."},{name:"pre-line",description:"Sets 'white-space-collapsing' to 'preserve-breaks' and 'text-wrap' to 'normal'."},{name:"pre-wrap",description:"Sets 'white-space-collapsing' to 'preserve' and 'text-wrap' to 'normal'."}],syntax:"normal | pre | nowrap | pre-wrap | pre-line | break-spaces",relevance:88,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/white-space"}],description:"Shorthand property for the 'white-space-collapsing' and 'text-wrap' properties.",restrictions:["enum"]},{name:"widows",browsers:["E12","S1.3","C25","IE8","O9.2"],syntax:"<integer>",relevance:51,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/widows"}],description:"Specifies the minimum number of line boxes of a block container that must be left in a fragment after a break.",restrictions:["integer"]},{name:"width",values:[{name:"auto",description:"The width depends on the values of other properties."},{name:"fit-content",description:"Use the fit-content inline size or fit-content block size, as appropriate to the writing mode."},{name:"max-content",description:"Use the max-content inline size or max-content block size, as appropriate to the writing mode."},{name:"min-content",description:"Use the min-content inline size or min-content block size, as appropriate to the writing mode."}],syntax:"<viewport-length>{1,2}",relevance:96,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/width"}],description:"Specifies the width of the content area, padding area or border area (depending on 'box-sizing') of certain boxes.",restrictions:["length","percentage"]},{name:"will-change",browsers:["E79","FF36","S9.1","C36","O24"],values:[{name:"auto",description:"Expresses no particular intent."},{name:"contents",description:"Indicates that the author expects to animate or change something about the element’s contents in the near future."},{name:"scroll-position",description:"Indicates that the author expects to animate or change the scroll position of the element in the near future."}],syntax:"auto | <animateable-feature>#",relevance:62,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/will-change"}],description:"Provides a rendering hint to the user agent, stating what kinds of changes the author expects to perform on the element.",restrictions:["enum","identifier"]},{name:"word-break",values:[{name:"break-all",description:"Lines may break between any two grapheme clusters for non-CJK scripts."},{name:"keep-all",description:"Block characters can no longer create implied break points."},{name:"normal",description:"Breaks non-CJK scripts according to their own rules."}],syntax:"normal | break-all | keep-all | break-word",relevance:72,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/word-break"}],description:"Specifies line break opportunities for non-CJK scripts.",restrictions:["enum"]},{name:"word-spacing",values:[{name:"normal",description:"No additional spacing is applied. Computes to zero."}],syntax:"normal | <length-percentage>",relevance:57,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/word-spacing"}],description:"Specifies additional spacing between “words”.",restrictions:["length","percentage"]},{name:"word-wrap",values:[{name:"break-word",description:"An otherwise unbreakable sequence of characters may be broken at an arbitrary point if there are no otherwise-acceptable break points in the line."},{name:"normal",description:"Lines may break only at allowed break points."}],syntax:"normal | break-word",relevance:77,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-wrap"}],description:"Specifies whether the UA may break within a word to prevent overflow when an otherwise-unbreakable string is too long to fit.",restrictions:["enum"]},{name:"writing-mode",values:[{name:"horizontal-tb",description:"Top-to-bottom block flow direction. The writing mode is horizontal."},{name:"sideways-lr",description:"Left-to-right block flow direction. The writing mode is vertical, while the typographic mode is horizontal."},{name:"sideways-rl",description:"Right-to-left block flow direction. The writing mode is vertical, while the typographic mode is horizontal."},{name:"vertical-lr",description:"Left-to-right block flow direction. The writing mode is vertical."},{name:"vertical-rl",description:"Right-to-left block flow direction. The writing mode is vertical."}],syntax:"horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/writing-mode"}],description:"This is a shorthand property for both 'direction' and 'block-progression'.",restrictions:["enum"]},{name:"z-index",values:[{name:"auto",description:"The stack level of the generated box in the current stacking context is 0. The box does not establish a new stacking context unless it is the root element."}],syntax:"auto | <integer>",relevance:91,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/z-index"}],description:"For a positioned box, the 'z-index' property specifies the stack level of the box in the current stacking context and whether the box establishes a local stacking context.",restrictions:["integer"]},{name:"zoom",browsers:["E12","S3.1","C1","IE5.5","O15"],values:[{name:"normal"}],syntax:"auto | <number> | <percentage>",relevance:74,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/zoom"}],description:"Non-standard. Specifies the magnification scale of the object. See 'transform: scale()' for a standards-based alternative.",restrictions:["enum","integer","number","percentage"]},{name:"-ms-ime-align",status:"nonstandard",syntax:"auto | after",relevance:0,description:"Aligns the Input Method Editor (IME) candidate window box relative to the element on which the IME composition is active."},{name:"-moz-binding",status:"nonstandard",syntax:"<url> | none",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-binding"}],description:"The -moz-binding CSS property is used by Mozilla-based applications to attach an XBL binding to a DOM element."},{name:"-moz-context-properties",status:"nonstandard",syntax:"none | [ fill | fill-opacity | stroke | stroke-opacity ]#",relevance:0,browsers:["FF55"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-context-properties"}],description:"If you reference an SVG image in a webpage (such as with the <img> element or as a background image), the SVG image can coordinate with the embedding element (its context) to have the image adopt property values set on the embedding element. To do this the embedding element needs to list the properties that are to be made available to the image by listing them as values of the -moz-context-properties property, and the image needs to opt in to using those properties by using values such as the context-fill value.\n\nThis feature is available since Firefox 55, but is only currently supported with SVG images loaded via chrome:// or resource:// URLs. To experiment with the feature in SVG on the Web it is necessary to set the svg.context-properties.content.enabled pref to true."},{name:"-moz-float-edge",status:"nonstandard",syntax:"border-box | content-box | margin-box | padding-box",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-float-edge"}],description:"The non-standard -moz-float-edge CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness."},{name:"-moz-force-broken-image-icon",status:"nonstandard",syntax:"<integer>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-force-broken-image-icon"}],description:"The -moz-force-broken-image-icon extended CSS property can be used to force the broken image icon to be shown even when a broken image has an alt attribute."},{name:"-moz-image-region",status:"nonstandard",syntax:"<shape> | auto",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-image-region"}],description:"For certain XUL elements and pseudo-elements that use an image from the list-style-image property, this property specifies a region of the image that is used in place of the whole image. This allows elements to use different pieces of the same image to improve performance."},{name:"-moz-orient",status:"nonstandard",syntax:"inline | block | horizontal | vertical",relevance:0,browsers:["FF6"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-orient"}],description:"The -moz-orient CSS property specifies the orientation of the element to which it's applied."},{name:"-moz-outline-radius",status:"nonstandard",syntax:"<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius"}],description:"In Mozilla applications like Firefox, the -moz-outline-radius CSS property can be used to give an element's outline rounded corners."},{name:"-moz-outline-radius-bottomleft",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomleft"}],description:"In Mozilla applications, the -moz-outline-radius-bottomleft CSS property can be used to round the bottom-left corner of an element's outline."},{name:"-moz-outline-radius-bottomright",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-bottomright"}],description:"In Mozilla applications, the -moz-outline-radius-bottomright CSS property can be used to round the bottom-right corner of an element's outline."},{name:"-moz-outline-radius-topleft",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topleft"}],description:"In Mozilla applications, the -moz-outline-radius-topleft CSS property can be used to round the top-left corner of an element's outline."},{name:"-moz-outline-radius-topright",status:"nonstandard",syntax:"<outline-radius>",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-outline-radius-topright"}],description:"In Mozilla applications, the -moz-outline-radius-topright CSS property can be used to round the top-right corner of an element's outline."},{name:"-moz-stack-sizing",status:"nonstandard",syntax:"ignore | stretch-to-fit",relevance:0,description:"-moz-stack-sizing is an extended CSS property. Normally, a stack will change its size so that all of its child elements are completely visible. For example, moving a child of the stack far to the right will widen the stack so the child remains visible."},{name:"-moz-text-blink",status:"nonstandard",syntax:"none | blink",relevance:0,description:"The -moz-text-blink non-standard Mozilla CSS extension specifies the blink mode."},{name:"-moz-user-input",status:"nonstandard",syntax:"auto | none | enabled | disabled",relevance:0,browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-moz-user-input"}],description:"In Mozilla applications, -moz-user-input determines if an element will accept user input."},{name:"-moz-user-modify",status:"nonstandard",syntax:"read-only | read-write | write-only",relevance:0,description:"The -moz-user-modify property has no effect. It was originally planned to determine whether or not the content of an element can be edited by a user."},{name:"-moz-window-dragging",status:"nonstandard",syntax:"drag | no-drag",relevance:0,description:"The -moz-window-dragging CSS property specifies whether a window is draggable or not. It only works in Chrome code, and only on Mac OS X."},{name:"-moz-window-shadow",status:"nonstandard",syntax:"default | menu | tooltip | sheet | none",relevance:0,description:"The -moz-window-shadow CSS property specifies whether a window will have a shadow. It only works on Mac OS X."},{name:"-webkit-border-before",status:"nonstandard",syntax:"<'border-width'> || <'border-style'> || <'color'>",relevance:0,browsers:["E79","S5.1","C8","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-border-before"}],description:"The -webkit-border-before CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet."},{name:"-webkit-border-before-color",status:"nonstandard",syntax:"<'color'>",relevance:0,description:"The -webkit-border-before-color CSS property sets the color of the individual logical block start border in a single place in the style sheet."},{name:"-webkit-border-before-style",status:"nonstandard",syntax:"<'border-style'>",relevance:0,description:"The -webkit-border-before-style CSS property sets the style of the individual logical block start border in a single place in the style sheet."},{name:"-webkit-border-before-width",status:"nonstandard",syntax:"<'border-width'>",relevance:0,description:"The -webkit-border-before-width CSS property sets the width of the individual logical block start border in a single place in the style sheet."},{name:"-webkit-line-clamp",syntax:"none | <integer>",relevance:50,browsers:["E17","FF68","S5","C6","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-line-clamp"}],description:"The -webkit-line-clamp CSS property allows limiting of the contents of a block container to the specified number of lines."},{name:"-webkit-mask",status:"nonstandard",syntax:"[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <box> | border | padding | content | text ] || [ <box> | border | padding | content ] ]#",relevance:0,description:"The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points."},{name:"-webkit-mask-attachment",status:"nonstandard",syntax:"<attachment>#",relevance:0,browsers:["S4","C1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-attachment"}],description:"If a -webkit-mask-image is specified, -webkit-mask-attachment determines whether the mask image's position is fixed within the viewport, or scrolls along with its containing block."},{name:"-webkit-mask-composite",status:"nonstandard",syntax:"<composite-style>#",relevance:0,browsers:["E18","FF53","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-composite"}],description:"The -webkit-mask-composite property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the -webkit-mask-image property."},{name:"-webkit-mask-position",status:"nonstandard",syntax:"<position>#",relevance:0,description:"The mask-position CSS property sets the initial position, relative to the mask position layer defined by mask-origin, for each defined mask image."},{name:"-webkit-mask-position-x",status:"nonstandard",syntax:"[ <length-percentage> | left | center | right ]#",relevance:0,browsers:["E18","FF49","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-x"}],description:"The -webkit-mask-position-x CSS property sets the initial horizontal position of a mask image."},{name:"-webkit-mask-position-y",status:"nonstandard",syntax:"[ <length-percentage> | top | center | bottom ]#",relevance:0,browsers:["E18","FF49","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-position-y"}],description:"The -webkit-mask-position-y CSS property sets the initial vertical position of a mask image."},{name:"-webkit-mask-repeat-x",status:"nonstandard",syntax:"repeat | no-repeat | space | round",relevance:0,browsers:["E18","S5","C3","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-x"}],description:"The -webkit-mask-repeat-x property specifies whether and how a mask image is repeated (tiled) horizontally."},{name:"-webkit-mask-repeat-y",status:"nonstandard",syntax:"repeat | no-repeat | space | round",relevance:0,browsers:["E18","S5","C3","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/-webkit-mask-repeat-y"}],description:"The -webkit-mask-repeat-y property specifies whether and how a mask image is repeated (tiled) vertically."},{name:"appearance",status:"experimental",syntax:"none | auto | button | textfield | menulist-button | <compat-auto>",relevance:60,browsers:["E84","FF1","S3","C84","O70"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/appearance"}],description:"Changes the appearance of buttons and other controls to resemble native controls."},{name:"aspect-ratio",status:"experimental",syntax:"auto | <ratio>",relevance:50,browsers:["E79","FF71","C79"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/aspect-ratio"}],description:"The aspect-ratio CSS property sets a preferred aspect ratio for the box, which will be used in the calculation of auto sizes and some other layout functions."},{name:"azimuth",status:"obsolete",syntax:"<angle> | [ [ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards",relevance:0,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/azimuth"}],description:"In combination with elevation, the azimuth CSS property enables different audio sources to be positioned spatially for aural presentation. This is important in that it provides a natural way to tell several voices apart, as each can be positioned to originate at a different location on the sound stage. Stereo output produce a lateral sound stage, while binaural headphones and multi-speaker setups allow for a fully three-dimensional stage."},{name:"backdrop-filter",syntax:"none | <filter-function-list>",relevance:51,browsers:["E17","FF70","S9","C76","O34"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/backdrop-filter"}],description:"The backdrop-filter CSS property lets you apply graphical effects such as blurring or color shifting to the area behind an element. Because it applies to everything behind the element, to see the effect you must make the element or its background at least partially transparent."},{name:"border-block",syntax:"<'border-top-width'> || <'border-top-style'> || <'color'>",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block"}],description:"The border-block CSS property is a shorthand property for setting the individual logical block border property values in a single place in the style sheet."},{name:"border-block-color",syntax:"<'border-top-color'>{1,2}",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-color"}],description:"The border-block-color CSS property defines the color of the logical block borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-block-style",syntax:"<'border-top-style'>",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-style"}],description:"The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-block-width",syntax:"<'border-top-width'>",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-block-width"}],description:"The border-block-width CSS property defines the width of the logical block borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-end-end-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-end-end-radius"}],description:"The border-end-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on on the element's writing-mode, direction, and text-orientation."},{name:"border-end-start-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-end-start-radius"}],description:"The border-end-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation."},{name:"border-inline",syntax:"<'border-top-width'> || <'border-top-style'> || <'color'>",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline"}],description:"The border-inline CSS property is a shorthand property for setting the individual logical inline border property values in a single place in the style sheet."},{name:"border-inline-color",syntax:"<'border-top-color'>{1,2}",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-color"}],description:"The border-inline-color CSS property defines the color of the logical inline borders of an element, which maps to a physical border color depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-color and border-bottom-color, or border-right-color and border-left-color property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-inline-style",syntax:"<'border-top-style'>",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-style"}],description:"The border-inline-style CSS property defines the style of the logical inline borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-style and border-bottom-style, or border-left-style and border-right-style properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-inline-width",syntax:"<'border-top-width'>",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-inline-width"}],description:"The border-inline-width CSS property defines the width of the logical inline borders of an element, which maps to a physical border width depending on the element's writing mode, directionality, and text orientation. It corresponds to the border-top-width and border-bottom-width, or border-left-width, and border-right-width property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"border-start-end-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-start-end-radius"}],description:"The border-start-end-radius CSS property defines a logical border radius on an element, which maps to a physical border radius depending on the element's writing-mode, direction, and text-orientation."},{name:"border-start-start-radius",syntax:"<length-percentage>{1,2}",relevance:50,browsers:["FF66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/border-start-start-radius"}],description:"The border-start-start-radius CSS property defines a logical border radius on an element, which maps to a physical border radius that depends on the element's writing-mode, direction, and text-orientation."},{name:"box-align",status:"nonstandard",syntax:"start | center | end | baseline | stretch",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-align"}],description:"The box-align CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box."},{name:"box-direction",status:"nonstandard",syntax:"normal | reverse | inherit",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-direction"}],description:"The box-direction CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge)."},{name:"box-flex",status:"nonstandard",syntax:"<number>",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-flex"}],description:"The -moz-box-flex and -webkit-box-flex CSS properties specify how a -moz-box or -webkit-box grows to fill the box that contains it, in the direction of the containing box's layout."},{name:"box-flex-group",status:"nonstandard",syntax:"<integer>",relevance:0,browsers:["S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-flex-group"}],description:"The box-flex-group CSS property assigns the flexbox's child elements to a flex group."},{name:"box-lines",status:"nonstandard",syntax:"single | multiple",relevance:0,browsers:["S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-lines"}],description:"The box-lines CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes)."},{name:"box-ordinal-group",status:"nonstandard",syntax:"<integer>",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-ordinal-group"}],description:"The box-ordinal-group CSS property assigns the flexbox's child elements to an ordinal group."},{name:"box-orient",status:"nonstandard",syntax:"horizontal | vertical | inline-axis | block-axis | inherit",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-orient"}],description:"The box-orient CSS property specifies whether an element lays out its contents horizontally or vertically."},{name:"box-pack",status:"nonstandard",syntax:"start | center | end | justify",relevance:0,browsers:["E12","FF1","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/box-pack"}],description:"The -moz-box-pack and -webkit-box-pack CSS properties specify how a -moz-box or -webkit-box packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box."},{name:"color-adjust",syntax:"economy | exact",relevance:50,browsers:["E79","FF48","S6","C49","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/color-adjust"}],description:"The color-adjust property is a non-standard CSS extension that can be used to force printing of background colors and images in browsers based on the WebKit engine."},{name:"counter-set",syntax:"[ <custom-ident> <integer>? ]+ | none",relevance:50,browsers:["FF68"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/counter-set"}],description:"The counter-set CSS property sets a CSS counter to a given value. It manipulates the value of existing counters, and will only create new counters if there isn't already a counter of the given name on the element."},{name:"font-optical-sizing",syntax:"auto | none",relevance:50,browsers:["E17","FF62","S11","C79","O66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-optical-sizing"}],description:"The font-optical-sizing CSS property allows developers to control whether browsers render text with slightly differing visual representations to optimize viewing at different sizes, or not. This only works for fonts that have an optical size variation axis."},{name:"font-variation-settings",syntax:"normal | [ <string> <number> ]#",relevance:50,browsers:["E17","FF62","S11","C62","O49"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-variation-settings"}],description:"The font-variation-settings CSS property provides low-level control over OpenType or TrueType font variations, by specifying the four letter axis names of the features you want to vary, along with their variation values."},{name:"font-smooth",status:"nonstandard",syntax:"auto | never | always | <absolute-size> | <length>",relevance:0,browsers:["E79","FF25","S4","C5","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/font-smooth"}],description:""},{name:"gap",syntax:"<'row-gap'> <'column-gap'>?",relevance:50,browsers:["E84","FF63","S10.1","C84","O70"],description:"The gap CSS property is a shorthand property for row-gap and column-gap specifying the gutters between grid rows and columns."},{name:"hanging-punctuation",syntax:"none | [ first || [ force-end | allow-end ] || last ]",relevance:50,browsers:["S10"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/hanging-punctuation"}],description:"The hanging-punctuation CSS property specifies whether a punctuation mark should hang at the start or end of a line of text. Hanging punctuation may be placed outside the line box."},{name:"image-resolution",status:"experimental",syntax:"[ from-image || <resolution> ] && snap?",relevance:50,description:"The image-resolution property specifies the intrinsic resolution of all raster images used in or on the element. It affects both content images (e.g. replaced elements and generated content) and decorative images (such as background-image). The intrinsic resolution of an image is used to determine the image’s intrinsic dimensions."},{name:"initial-letter",status:"experimental",syntax:"normal | [ <number> <integer>? ]",relevance:50,browsers:["S9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/initial-letter"}],description:"The initial-letter CSS property specifies styling for dropped, raised, and sunken initial letters."},{name:"initial-letter-align",status:"experimental",syntax:"[ auto | alphabetic | hanging | ideographic ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/initial-letter-align"}],description:"The initial-letter-align CSS property specifies the alignment of initial letters within a paragraph."},{name:"inset",syntax:"<'top'>{1,4}",relevance:50,browsers:["FF66"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset"}],description:"The inset CSS property defines the logical block and inline start and end offsets of an element, which map to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-block",syntax:"<'top'>{1,2}",relevance:50,browsers:["E79","FF63","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-block"}],description:"The inset-block CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-block-end",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-block-end"}],description:"The inset-block-end CSS property defines the logical block end offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-block-start",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-block-start"}],description:"The inset-block-start CSS property defines the logical block start offset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-inline",syntax:"<'top'>{1,2}",relevance:50,browsers:["E79","FF63","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-inline"}],description:"The inset-inline CSS property defines the logical block start and end offsets of an element, which maps to physical offsets depending on the element's writing mode, directionality, and text orientation. It corresponds to the top and bottom, or right and left properties depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-inline-end",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-inline-end"}],description:"The inset-inline-end CSS property defines the logical inline end inset of an element, which maps to a physical inset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"inset-inline-start",syntax:"<'top'>",relevance:50,browsers:["E79","FF63","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/inset-inline-start"}],description:"The inset-inline-start CSS property defines the logical inline start inset of an element, which maps to a physical offset depending on the element's writing mode, directionality, and text orientation. It corresponds to the top, right, bottom, or left property depending on the values defined for writing-mode, direction, and text-orientation."},{name:"line-clamp",status:"experimental",syntax:"none | <integer>",relevance:50,description:"The line-clamp property allows limiting the contents of a block container to the specified number of lines; remaining content is fragmented away and neither rendered nor measured. Optionally, it also allows inserting content into the last line box to indicate the continuity of truncated/interrupted content."},{name:"line-height-step",status:"experimental",syntax:"<length>",relevance:50,browsers:["E79","C60","O47"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/line-height-step"}],description:"The line-height-step CSS property defines the step units for line box heights. When the step unit is positive, line box heights are rounded up to the closest multiple of the unit. Negative values are invalid."},{name:"margin-block",syntax:"<'margin-left'>{1,2}",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-block"}],description:"The margin-block CSS property defines the logical block start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation."},{name:"margin-inline",syntax:"<'margin-left'>{1,2}",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-inline"}],description:"The margin-inline CSS property defines the logical inline start and end margins of an element, which maps to physical margins depending on the element's writing mode, directionality, and text orientation."},{name:"margin-trim",status:"experimental",syntax:"none | in-flow | all",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/margin-trim"}],description:"The margin-trim property allows the container to trim the margins of its children where they adjoin the container’s edges."},{name:"mask",syntax:"<mask-layer>#",relevance:50,browsers:["E12","FF2","S3.2","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask"}],description:"The mask CSS property alters the visibility of an element by either partially or fully hiding it. This is accomplished by either masking or clipping the image at specific points."},{name:"mask-border",syntax:"<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>",relevance:50,description:"The mask-border CSS property lets you create a mask along the edge of an element's border.\n\nThis property is a shorthand for mask-border-source, mask-border-slice, mask-border-width, mask-border-outset, mask-border-repeat, and mask-border-mode. As with all shorthand properties, any omitted sub-values will be set to their initial value."},{name:"mask-border-mode",syntax:"luminance | alpha",relevance:50,description:"The mask-border-mode CSS property specifies the blending mode used in a mask border."},{name:"mask-border-outset",syntax:"[ <length> | <number> ]{1,4}",relevance:50,description:"The mask-border-outset CSS property specifies the distance by which an element's mask border is set out from its border box."},{name:"mask-border-repeat",syntax:"[ stretch | repeat | round | space ]{1,2}",relevance:50,description:"The mask-border-repeat CSS property defines how the edge regions of a source image are adjusted to fit the dimensions of an element's mask border."},{name:"mask-border-slice",syntax:"<number-percentage>{1,4} fill?",relevance:50,description:"The mask-border-slice CSS property divides the image specified by mask-border-source into regions. These regions are used to form the components of an element's mask border."},{name:"mask-border-source",syntax:"none | <image>",relevance:50,description:"The mask-border-source CSS property specifies the source image used to create an element's mask border.\n\nThe mask-border-slice property is used to divide the source image into regions, which are then dynamically applied to the final mask border."},{name:"mask-border-width",syntax:"[ <length-percentage> | <number> | auto ]{1,4}",relevance:50,description:"The mask-border-width CSS property specifies the width of an element's mask border."},{name:"mask-clip",syntax:"[ <geometry-box> | no-clip ]#",relevance:50,browsers:["E79","FF53","S4","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-clip"}],description:"The mask-clip CSS property determines the area, which is affected by a mask. The painted content of an element must be restricted to this area."},{name:"mask-composite",syntax:"<compositing-operator>#",relevance:50,browsers:["E18","FF53"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/mask-composite"}],description:"The mask-composite CSS property represents a compositing operation used on the current mask layer with the mask layers below it."},{name:"max-lines",status:"experimental",syntax:"none | <integer>",relevance:50,description:"The max-liens property forces a break after a set number of lines"},{name:"offset",syntax:"[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?",relevance:50,browsers:["E79","FF72","C55","O42"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset"}],description:"The offset CSS property is a shorthand property for animating an element along a defined path."},{name:"offset-anchor",syntax:"auto | <position>",relevance:50,browsers:["E79","FF72","C79"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-anchor"}],description:"Defines an anchor point of the box positioned along the path. The anchor point specifies the point of the box which is to be considered as the point that is moved along the path."},{name:"offset-distance",syntax:"<length-percentage>",relevance:50,browsers:["E79","FF72","C55","O42"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-distance"}],description:"The offset-distance CSS property specifies a position along an offset-path."},{name:"offset-path",syntax:"none | ray( [ <angle> && <size>? && contain? ] ) | <path()> | <url> | [ <basic-shape> || <geometry-box> ]",relevance:50,browsers:["E79","FF72","C55","O45"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-path"}],description:'The offset-path CSS property specifies the offset path where the element gets positioned. The exact element’s position on the offset path is determined by the offset-distance property. An offset path is either a specified path with one or multiple sub-paths or the geometry of a not-styled basic shape. Each shape or path must define an initial position for the computed value of "0" for offset-distance and an initial direction which specifies the rotation of the object to the initial position.\n\nIn this specification, a direction (or rotation) of 0 degrees is equivalent to the direction of the positive x-axis in the object’s local coordinate system. In other words, a rotation of 0 degree points to the right side of the UA if the object and its ancestors have no transformation applied.'},{name:"offset-position",status:"experimental",syntax:"auto | <position>",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-position"}],description:"Specifies the initial position of the offset path. If position is specified with static, offset-position would be ignored."},{name:"offset-rotate",syntax:"[ auto | reverse ] || <angle>",relevance:50,browsers:["E79","FF72","C56","O43"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/offset-rotate"}],description:"The offset-rotate CSS property defines the direction of the element while positioning along the offset path."},{name:"overflow-anchor",syntax:"auto | none",relevance:51,browsers:["E79","FF66","C56","O43"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-anchor"}],description:"The overflow-anchor CSS property provides a way to opt out browser scroll anchoring behavior which adjusts scroll position to minimize content shifts."},{name:"overflow-block",syntax:"visible | hidden | clip | scroll | auto",relevance:50,browsers:["FF69"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-block"}],description:"The overflow-block CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the block axis."},{name:"overflow-clip-box",status:"nonstandard",syntax:"padding-box | content-box",relevance:0,browsers:["FF29"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Mozilla/Gecko/Chrome/CSS/overflow-clip-box"}],description:"The overflow-clip-box CSS property specifies relative to which box the clipping happens when there is an overflow. It is short hand for the overflow-clip-box-inline and overflow-clip-box-block properties."},{name:"overflow-inline",syntax:"visible | hidden | clip | scroll | auto",relevance:50,browsers:["FF69"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overflow-inline"}],description:"The overflow-inline CSS media feature can be used to test how the output device handles content that overflows the initial containing block along the inline axis."},{name:"overscroll-behavior",syntax:"[ contain | none | auto ]{1,2}",relevance:50,browsers:["E18","FF59","C63","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior"}],description:"The overscroll-behavior CSS property is shorthand for the overscroll-behavior-x and overscroll-behavior-y properties, which allow you to control the browser's scroll overflow behavior — what happens when the boundary of a scrolling area is reached."},{name:"overscroll-behavior-block",syntax:"contain | none | auto",relevance:50,browsers:["E79","FF73","C77","O64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-block"}],description:"The overscroll-behavior-block CSS property sets the browser's behavior when the block direction boundary of a scrolling area is reached."},{name:"overscroll-behavior-inline",syntax:"contain | none | auto",relevance:50,browsers:["E79","FF73","C77","O64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-inline"}],description:"The overscroll-behavior-inline CSS property sets the browser's behavior when the inline direction boundary of a scrolling area is reached."},{name:"overscroll-behavior-x",syntax:"contain | none | auto",relevance:50,browsers:["E18","FF59","C63","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-x"}],description:"The overscroll-behavior-x CSS property is allows you to control the browser's scroll overflow behavior — what happens when the boundary of a scrolling area is reached — in the x axis direction."},{name:"overscroll-behavior-y",syntax:"contain | none | auto",relevance:50,browsers:["E18","FF59","C63","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/overscroll-behavior-y"}],description:"The overscroll-behavior-y CSS property is allows you to control the browser's scroll overflow behavior — what happens when the boundary of a scrolling area is reached — in the y axis direction."},{name:"padding-block",syntax:"<'padding-left'>{1,2}",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-block"}],description:"The padding-block CSS property defines the logical block start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation."},{name:"padding-inline",syntax:"<'padding-left'>{1,2}",relevance:50,browsers:["E79","FF66","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/padding-inline"}],description:"The padding-inline CSS property defines the logical inline start and end padding of an element, which maps to physical padding properties depending on the element's writing mode, directionality, and text orientation."},{name:"place-content",syntax:"<'align-content'> <'justify-content'>?",relevance:50,browsers:["E79","FF53","S9","C59","O46"],description:"The place-content CSS shorthand property sets both the align-content and justify-content properties."},{name:"place-items",syntax:"<'align-items'> <'justify-items'>?",relevance:50,browsers:["E79","FF45","S11","C59","O46"],description:"The CSS place-items shorthand property sets both the align-items and justify-items properties. The first value is the align-items property value, the second the justify-items one. If the second value is not present, the first value is also used for it."},{name:"place-self",syntax:"<'align-self'> <'justify-self'>?",relevance:50,browsers:["E79","FF45","C59","O46"],description:"The place-self CSS property is a shorthand property sets both the align-self and justify-self properties. The first value is the align-self property value, the second the justify-self one. If the second value is not present, the first value is also used for it."},{name:"rotate",syntax:"none | <angle> | [ x | y | z | <number>{3} ] && <angle>",relevance:50,browsers:["FF72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/rotate"}],description:"The rotate CSS property allows you to specify rotation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value."},{name:"row-gap",syntax:"normal | <length-percentage>",relevance:50,browsers:["E84","FF63","S10.1","C84","O70"],description:"The row-gap CSS property specifies the gutter between grid rows."},{name:"ruby-merge",status:"experimental",syntax:"separate | collapse | auto",relevance:50,description:"This property controls how ruby annotation boxes should be rendered when there are more than one in a ruby container box: whether each pair should be kept separate, the annotations should be collapsed and rendered as a group, or the separation should be determined based on the space available."},{name:"scale",syntax:"none | <number>{1,3}",relevance:50,browsers:["FF72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scale"}],description:"The scale CSS property allows you to specify scale transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value."},{name:"scrollbar-color",syntax:"auto | dark | light | <color>{2}",relevance:50,browsers:["FF64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-color"}],description:"The scrollbar-color CSS property sets the color of the scrollbar track and thumb."},{name:"scrollbar-width",syntax:"auto | thin | none",relevance:50,browsers:["FF64"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scrollbar-width"}],description:"The scrollbar-width property allows the author to set the maximum thickness of an element’s scrollbars when they are shown. "},{name:"scroll-margin",syntax:"<length>{1,4}",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin"}],description:"The scroll-margin property is a shorthand property which sets all of the scroll-margin longhands, assigning values much like the margin property does for the margin-* longhands."},{name:"scroll-margin-block",syntax:"<length>{1,2}",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block"}],description:"The scroll-margin-block property is a shorthand property which sets the scroll-margin longhands in the block dimension."},{name:"scroll-margin-block-start",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-start"}],description:"The scroll-margin-block-start property defines the margin of the scroll snap area at the start of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-block-end",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-block-end"}],description:"The scroll-margin-block-end property defines the margin of the scroll snap area at the end of the block dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-bottom",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-bottom"}],description:"The scroll-margin-bottom property defines the bottom margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-inline",syntax:"<length>{1,2}",relevance:50,browsers:["FF68"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline"}],description:"The scroll-margin-inline property is a shorthand property which sets the scroll-margin longhands in the inline dimension."},{name:"scroll-margin-inline-start",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-start"}],description:"The scroll-margin-inline-start property defines the margin of the scroll snap area at the start of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-inline-end",syntax:"<length>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-inline-end"}],description:"The scroll-margin-inline-end property defines the margin of the scroll snap area at the end of the inline dimension that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-left",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-left"}],description:"The scroll-margin-left property defines the left margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-right",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-right"}],description:"The scroll-margin-right property defines the right margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-margin-top",syntax:"<length>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-margin-top"}],description:"The scroll-margin-top property defines the top margin of the scroll snap area that is used for snapping this box to the snapport. The scroll snap area is determined by taking the transformed border box, finding its rectangular bounding box (axis-aligned in the scroll container’s coordinate space), then adding the specified outsets."},{name:"scroll-padding",syntax:"[ auto | <length-percentage> ]{1,4}",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding"}],description:"The scroll-padding property is a shorthand property which sets all of the scroll-padding longhands, assigning values much like the padding property does for the padding-* longhands."},{name:"scroll-padding-block",syntax:"[ auto | <length-percentage> ]{1,2}",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block"}],description:"The scroll-padding-block property is a shorthand property which sets the scroll-padding longhands for the block dimension."},{name:"scroll-padding-block-start",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-start"}],description:"The scroll-padding-block-start property defines offsets for the start edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-block-end",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-block-end"}],description:"The scroll-padding-block-end property defines offsets for the end edge in the block dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-bottom",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-bottom"}],description:"The scroll-padding-bottom property defines offsets for the bottom of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-inline",syntax:"[ auto | <length-percentage> ]{1,2}",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline"}],description:"The scroll-padding-inline property is a shorthand property which sets the scroll-padding longhands for the inline dimension."},{name:"scroll-padding-inline-start",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-start"}],description:"The scroll-padding-inline-start property defines offsets for the start edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-inline-end",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-inline-end"}],description:"The scroll-padding-inline-end property defines offsets for the end edge in the inline dimension of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-left",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-left"}],description:"The scroll-padding-left property defines offsets for the left of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-right",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-right"}],description:"The scroll-padding-right property defines offsets for the right of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-padding-top",syntax:"auto | <length-percentage>",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-padding-top"}],description:"The scroll-padding-top property defines offsets for the top of the optimal viewing region of the scrollport: the region used as the target region for placing things in view of the user. This allows the author to exclude regions of the scrollport that are obscured by other content (such as fixed-positioned toolbars or sidebars) or simply to put more breathing room between a targeted element and the edges of the scrollport."},{name:"scroll-snap-align",syntax:"[ none | start | end | center ]{1,2}",relevance:50,browsers:["E79","FF68","S11","C69","O56"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-align"}],description:"The scroll-snap-align property specifies the box’s snap position as an alignment of its snap area (as the alignment subject) within its snap container’s snapport (as the alignment container). The two values specify the snapping alignment in the block axis and inline axis, respectively. If only one value is specified, the second value defaults to the same value."},{name:"scroll-snap-stop",syntax:"normal | always",relevance:50,browsers:["E79","C75","O62"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-stop"}],description:'The scroll-snap-stop CSS property defines whether the scroll container is allowed to "pass over" possible snap positions.'},{name:"scroll-snap-type-x",status:"obsolete",syntax:"none | mandatory | proximity",relevance:0,browsers:["FF39","S9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-x"}],description:"The scroll-snap-type-x CSS property defines how strictly snap points are enforced on the horizontal axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent."},{name:"scroll-snap-type-y",status:"obsolete",syntax:"none | mandatory | proximity",relevance:0,browsers:["FF39"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/scroll-snap-type-y"}],description:"The scroll-snap-type-y CSS property defines how strictly snap points are enforced on the vertical axis of the scroll container in case there is one.\n\nSpecifying any precise animations or physics used to enforce those snap points is not covered by this property but instead left up to the user agent."},{name:"text-combine-upright",syntax:"none | all | [ digits <integer>? ]",relevance:50,references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-combine-upright"}],description:"The text-combine-upright CSS property specifies the combination of multiple characters into the space of a single character. If the combined text is wider than 1em, the user agent must fit the contents within 1em. The resulting composition is treated as a single upright glyph for layout and decoration. This property only has an effect in vertical writing modes.\n\nThis is used to produce an effect that is known as tate-chū-yoko (縦中横) in Japanese, or as 直書橫向 in Chinese."},{name:"text-decoration-skip",status:"experimental",syntax:"none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]",relevance:52,browsers:["S12.1","C57","O44"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip"}],description:"The text-decoration-skip CSS property specifies what parts of the element’s content any text decoration affecting the element must skip over. It controls all text decoration lines drawn by the element and also any text decoration lines drawn by its ancestors."},{name:"text-decoration-skip-ink",syntax:"auto | all | none",relevance:50,browsers:["E79","FF70","C64","O50"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-skip-ink"}],description:"The text-decoration-skip-ink CSS property specifies how overlines and underlines are drawn when they pass over glyph ascenders and descenders."},{name:"text-decoration-thickness",syntax:"auto | from-font | <length> | <percentage> ",relevance:50,browsers:["FF70","S12.1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-decoration-thickness"}],description:"The text-decoration-thickness CSS property sets the thickness, or width, of the decoration line that is used on text in an element, such as a line-through, underline, or overline."},{name:"text-emphasis",syntax:"<'text-emphasis-style'> || <'text-emphasis-color'>",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis"}],description:"The text-emphasis CSS property is a shorthand property for setting text-emphasis-style and text-emphasis-color in one declaration. This property will apply the specified emphasis mark to each character of the element's text, except separator characters, like spaces, and control characters."},{name:"text-emphasis-color",syntax:"<color>",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-color"}],description:"The text-emphasis-color CSS property defines the color used to draw emphasis marks on text being rendered in the HTML document. This value can also be set and reset using the text-emphasis shorthand."},{name:"text-emphasis-position",syntax:"[ over | under ] && [ right | left ]",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-position"}],description:"The text-emphasis-position CSS property describes where emphasis marks are drawn at. The effect of emphasis marks on the line height is the same as for ruby text: if there isn't enough place, the line height is increased."},{name:"text-emphasis-style",syntax:"none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>",relevance:50,browsers:["E79","FF46","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-emphasis-style"}],description:"The text-emphasis-style CSS property defines the type of emphasis used. It can also be set, and reset, using the text-emphasis shorthand."},{name:"text-size-adjust",status:"experimental",syntax:"none | auto | <percentage>",relevance:56,browsers:["E79","C54","O41"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-size-adjust"}],description:"The text-size-adjust CSS property controls the text inflation algorithm used on some smartphones and tablets. Other browsers will ignore this property."},{name:"text-underline-offset",syntax:"auto | <length> | <percentage> ",relevance:50,browsers:["FF70","S12.1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/text-underline-offset"}],description:"The text-underline-offset CSS property sets the offset distance of an underline text decoration line (applied using text-decoration) from its original position."},{name:"transform-box",syntax:"content-box | border-box | fill-box | stroke-box | view-box",relevance:50,browsers:["E79","FF55","S11","C64","O51"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/transform-box"}],description:"The transform-box CSS property defines the layout box to which the transform and transform-origin properties relate."},{name:"translate",syntax:"none | <length-percentage> [ <length-percentage> <length>? ]?",relevance:50,browsers:["FF72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/translate"}],description:"The translate CSS property allows you to specify translation transforms individually and independently of the transform property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform value."},{name:"speak-as",syntax:"auto | bullets | numbers | words | spell-out | <counter-style-name>",relevance:50,description:"The speak-as descriptor specifies how a counter symbol constructed with a given @counter-style will be represented in the spoken form. For example, an author can specify a counter symbol to be either spoken as its numerical value or just represented with an audio cue."},{name:"font-display",status:"experimental",syntax:"[ auto | block | swap | fallback | optional ]",relevance:54,description:"The font-display descriptor determines how a font face is displayed based on whether and when it is downloaded and ready to use."},{name:"bleed",syntax:"auto | <length>",relevance:50,description:"The bleed CSS at-rule descriptor, used with the @page at-rule, specifies the extent of the page bleed area outside the page box. This property only has effect if crop marks are enabled using the marks property."},{name:"marks",syntax:"none | [ crop || cross ]",relevance:50,description:"The marks CSS at-rule descriptor, used with the @page at-rule, adds crop and/or cross marks to the presentation of the document. Crop marks indicate where the page should be cut. Cross marks are used to align sheets."},{name:"max-zoom",syntax:"auto | <number> | <percentage>",relevance:50,description:"The max-zoom CSS descriptor sets the maximum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom in any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out."},{name:"min-zoom",syntax:"auto | <number> | <percentage>",relevance:50,description:"The min-zoom CSS descriptor sets the minimum zoom factor of a document defined by the @viewport at-rule. The browser will not zoom out any further than this, whether automatically or at the user's request.\n\nA zoom factor of 1.0 or 100% corresponds to no zooming. Larger values are zoomed in. Smaller values are zoomed out."},{name:"orientation",syntax:"auto | portrait | landscape",relevance:50,description:"The orientation CSS @media media feature can be used to apply styles based on the orientation of the viewport (or the page box, for paged media)."},{name:"user-zoom",syntax:"zoom | fixed",relevance:50,description:"The user-zoom CSS descriptor controls whether or not the user can change the zoom factor of a document defined by @viewport."},{name:"viewport-fit",syntax:"auto | contain | cover",relevance:50,description:"The border-block-style CSS property defines the style of the logical block borders of an element, which maps to a physical border style depending on the element's writing mode, directionality, and text orientation."}],atDirectives:[{name:"@charset",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@charset"}],description:"Defines character set of the document."},{name:"@counter-style",browsers:["FF33"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@counter-style"}],description:"Defines a custom counter style."},{name:"@font-face",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@font-face"}],description:"Allows for linking to fonts that are automatically activated when needed. This permits authors to work around the limitation of 'web-safe' fonts, allowing for consistent rendering independent of the fonts available in a given user's environment."},{name:"@font-feature-values",browsers:["FF34","S9.1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@font-feature-values"}],description:"Defines named values for the indices used to select alternate glyphs for a given font family."},{name:"@import",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@import"}],description:"Includes content of another file."},{name:"@keyframes",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@keyframes"}],description:"Defines set of animation key frames."},{name:"@media",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@media"}],description:"Defines a stylesheet for a particular media type."},{name:"@-moz-document",browsers:["FF1.8"],description:"Gecko-specific at-rule that restricts the style rules contained within it based on the URL of the document."},{name:"@-moz-keyframes",browsers:["FF5"],description:"Defines set of animation key frames."},{name:"@-ms-viewport",browsers:["E","IE10"],description:"Specifies the size, zoom factor, and orientation of the viewport."},{name:"@namespace",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@namespace"}],description:"Declares a prefix and associates it with a namespace name."},{name:"@-o-keyframes",browsers:["O12"],description:"Defines set of animation key frames."},{name:"@-o-viewport",browsers:["O11"],description:"Specifies the size, zoom factor, and orientation of the viewport."},{name:"@page",browsers:["E12","FF19","C2","IE8","O6"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@page"}],description:"Directive defines various page parameters."},{name:"@supports",browsers:["E12","FF22","S9","C28","O12.1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/@supports"}],description:"A conditional group rule whose condition tests whether the user agent supports CSS property:value pairs."},{name:"@-webkit-keyframes",browsers:["C","S4"],description:"Defines set of animation key frames."}],pseudoClasses:[{name:":active",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:active"}],description:"Applies while an element is being activated by the user. For example, between the times the user presses the mouse button and releases it."},{name:":any-link",browsers:["E79","FF50","S9","C65","O52"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:any-link"}],description:"Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links."},{name:":checked",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:checked"}],description:"Radio and checkbox elements can be toggled by the user. Some menu items are 'checked' when the user selects them. When such elements are toggled 'on' the :checked pseudo-class applies."},{name:":corner-present",browsers:["C","S5"],description:"Non-standard. Indicates whether or not a scrollbar corner is present."},{name:":decrement",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will decrement the view’s position when used."},{name:":default",browsers:["E79","FF4","S5","C10","O10"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:default"}],description:"Applies to the one or more UI elements that are the default among a set of similar elements. Typically applies to context menu items, buttons, and select lists/menus."},{name:":disabled",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:disabled"}],description:"Represents user interface elements that are in a disabled state; such elements have a corresponding enabled state."},{name:":double-button",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed together at the same end of the scrollbar."},{name:":empty",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:empty"}],description:"Represents an element that has no children at all."},{name:":enabled",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:enabled"}],description:"Represents user interface elements that are in an enabled state; such elements have a corresponding disabled state."},{name:":end",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed after the thumb."},{name:":first",browsers:["E12","S6","C18","IE8","O9.2"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:first"}],description:"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context."},{name:":first-child",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:first-child"}],description:"Same as :nth-child(1). Represents an element that is the first child of some other element."},{name:":first-of-type",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:first-of-type"}],description:"Same as :nth-of-type(1). Represents an element that is the first sibling of its type in the list of children of its parent element."},{name:":focus",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:focus"}],description:"Applies while an element has the focus (accepts keyboard or mouse events, or other forms of input)."},{name:":fullscreen",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:fullscreen"}],description:"Matches any element that has its fullscreen flag set."},{name:":future",browsers:["C","O16","S6"],description:"Represents any element that is defined to occur entirely after a :current element."},{name:":horizontal",browsers:["C","S5"],description:"Non-standard. Applies to any scrollbar pieces that have a horizontal orientation."},{name:":host",browsers:["E79","FF63","S10","C54","O41"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:host"}],description:"When evaluated in the context of a shadow tree, matches the shadow tree’s host element."},{name:":host()",browsers:["C35","O22"],description:"When evaluated in the context of a shadow tree, it matches the shadow tree’s host element if the host element, in its normal context, matches the selector argument."},{name:":host-context()",browsers:["C35","O22"],description:"Tests whether there is an ancestor, outside the shadow tree, which matches a particular selector."},{name:":hover",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:hover"}],description:"Applies while the user designates an element with a pointing device, but does not necessarily activate it. For example, a visual user agent could apply this pseudo-class when the cursor (mouse pointer) hovers over a box generated by the element."},{name:":increment",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether or not the button or track piece will increment the view’s position when used."},{name:":indeterminate",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:indeterminate"}],description:"Applies to UI elements whose value is in an indeterminate state."},{name:":in-range",browsers:["E13","FF29","S5.1","C10","O11"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:in-range"}],description:"Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes."},{name:":invalid",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:invalid"}],description:"An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification."},{name:":lang()",browsers:["E","C","FF1","IE8","O8","S3"],description:"Represents an element that is in language specified."},{name:":last-child",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:last-child"}],description:"Same as :nth-last-child(1). Represents an element that is the last child of some other element."},{name:":last-of-type",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:last-of-type"}],description:"Same as :nth-last-of-type(1). Represents an element that is the last sibling of its type in the list of children of its parent element."},{name:":left",browsers:["E12","S5.1","C6","IE8","O9.2"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:left"}],description:"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context."},{name:":link",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:link"}],description:"Applies to links that have not yet been visited."},{name:":matches()",browsers:["S9"],description:"Takes a selector list as its argument. It represents an element that is represented by its argument."},{name:":-moz-any()",browsers:["FF4"],description:"Represents an element that is represented by the selector list passed as its argument. Standardized as :matches()."},{name:":-moz-any-link",browsers:["FF1"],description:"Represents an element that acts as the source anchor of a hyperlink. Applies to both visited and unvisited links."},{name:":-moz-broken",browsers:["FF3"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-broken"}],description:"Non-standard. Matches elements representing broken images."},{name:":-moz-drag-over",browsers:["FF1"],description:"Non-standard. Matches elements when a drag-over event applies to it."},{name:":-moz-first-node",browsers:["FF1"],description:"Non-standard. Represents an element that is the first child node of some other element."},{name:":-moz-focusring",browsers:["FF4"],description:"Non-standard. Matches an element that has focus and focus ring drawing is enabled in the browser."},{name:":-moz-full-screen",browsers:["FF9"],description:"Matches any element that has its fullscreen flag set. Standardized as :fullscreen."},{name:":-moz-last-node",browsers:["FF1"],description:"Non-standard. Represents an element that is the last child node of some other element."},{name:":-moz-loading",browsers:["FF3"],description:"Non-standard. Matches elements, such as images, that haven’t started loading yet."},{name:":-moz-only-whitespace",browsers:["FF1"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-only-whitespace"}],description:"The same as :empty, except that it additionally matches elements that only contain code points affected by whitespace processing. Standardized as :blank."},{name:":-moz-placeholder",browsers:["FF4"],description:"Deprecated. Represents placeholder text in an input field. Use ::-moz-placeholder for Firefox 19+."},{name:":-moz-submit-invalid",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-submit-invalid"}],description:"Non-standard. Represents any submit button when the contents of the associated form are not valid."},{name:":-moz-suppressed",browsers:["FF3"],description:"Non-standard. Matches elements representing images that have been blocked from loading."},{name:":-moz-ui-invalid",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-ui-invalid"}],description:"Non-standard. Represents any validated form element whose value isn't valid "},{name:":-moz-ui-valid",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-ui-valid"}],description:"Non-standard. Represents any validated form element whose value is valid "},{name:":-moz-user-disabled",browsers:["FF3"],description:"Non-standard. Matches elements representing images that have been disabled due to the user’s preferences."},{name:":-moz-window-inactive",browsers:["FF4"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:-moz-window-inactive"}],description:"Non-standard. Matches elements in an inactive window."},{name:":-ms-fullscreen",browsers:["IE11"],description:"Matches any element that has its fullscreen flag set."},{name:":-ms-input-placeholder",browsers:["IE10"],description:"Represents placeholder text in an input field. Note: for Edge use the pseudo-element ::-ms-input-placeholder. Standardized as ::placeholder."},{name:":-ms-keyboard-active",browsers:["IE10"],description:"Windows Store apps only. Applies one or more styles to an element when it has focus and the user presses the space bar."},{name:":-ms-lang()",browsers:["E","IE10"],description:"Represents an element that is in the language specified. Accepts a comma separated list of language tokens."},{name:":no-button",browsers:["C","S5"],description:"Non-standard. Applies to track pieces. Applies when there is no button at that end of the track."},{name:":not()",browsers:["E","C","FF1","IE9","O9.5","S2"],description:"The negation pseudo-class, :not(X), is a functional notation taking a simple selector (excluding the negation pseudo-class itself) as an argument. It represents an element that is not represented by its argument."},{name:":nth-child()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings before it in the document tree, for any positive integer or zero value of n, and has a parent element."},{name:":nth-last-child()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings after it in the document tree, for any positive integer or zero value of n, and has a parent element."},{name:":nth-last-of-type()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings with the same expanded element name after it in the document tree, for any zero or positive integer value of n, and has a parent element."},{name:":nth-of-type()",browsers:["E","C","FF3.5","IE9","O9.5","S3.1"],description:"Represents an element that has an+b-1 siblings with the same expanded element name before it in the document tree, for any zero or positive integer value of n, and has a parent element."},{name:":only-child",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:only-child"}],description:"Represents an element that has a parent element and whose parent element has no other element children. Same as :first-child:last-child or :nth-child(1):nth-last-child(1), but with a lower specificity."},{name:":only-of-type",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:only-of-type"}],description:"Matches every element that is the only child of its type, of its parent. Same as :first-of-type:last-of-type or :nth-of-type(1):nth-last-of-type(1), but with a lower specificity."},{name:":optional",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:optional"}],description:"A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional."},{name:":out-of-range",browsers:["E13","FF29","S5.1","C10","O11"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:out-of-range"}],description:"Used in conjunction with the min and max attributes, whether on a range input, a number field, or any other types that accept those attributes."},{name:":past",browsers:["C","O16","S6"],description:"Represents any element that is defined to occur entirely prior to a :current element."},{name:":read-only",browsers:["E13","FF78","S4","C1","O9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:read-only"}],description:"An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only."},{name:":read-write",browsers:["E13","FF78","S4","C1","O9"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:read-write"}],description:"An element whose contents are not user-alterable is :read-only. However, elements whose contents are user-alterable (such as text input fields) are considered to be in a :read-write state. In typical documents, most elements are :read-only."},{name:":required",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:required"}],description:"A form element is :required or :optional if a value for it is, respectively, required or optional before the form it belongs to is submitted. Elements that are not form elements are neither required nor optional."},{name:":right",browsers:["E12","S5.1","C6","IE8","O9.2"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:right"}],description:"When printing double-sided documents, the page boxes on left and right pages may be different. This can be expressed through CSS pseudo-classes defined in the page context."},{name:":root",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:root"}],description:"Represents an element that is the root of the document. In HTML 4, this is always the HTML element."},{name:":scope",browsers:["E79","FF32","S7","C27","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:scope"}],description:"Represents any element that is in the contextual reference element set."},{name:":single-button",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Applies when both buttons are displayed separately at either end of the scrollbar."},{name:":start",browsers:["C","S5"],description:"Non-standard. Applies to buttons and track pieces. Indicates whether the object is placed before the thumb."},{name:":target",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:target"}],description:"Some URIs refer to a location within a resource. This kind of URI ends with a 'number sign' (#) followed by an anchor identifier (called the fragment identifier)."},{name:":valid",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:valid"}],description:"An element is :valid or :invalid when it is, respectively, valid or invalid with respect to data validity semantics defined by a different specification."},{name:":vertical",browsers:["C","S5"],description:"Non-standard. Applies to any scrollbar pieces that have a vertical orientation."},{name:":visited",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:visited"}],description:"Applies once the link has been visited by the user."},{name:":-webkit-any()",browsers:["C","S5"],description:"Represents an element that is represented by the selector list passed as its argument. Standardized as :matches()."},{name:":-webkit-full-screen",browsers:["C","S6"],description:"Matches any element that has its fullscreen flag set. Standardized as :fullscreen."},{name:":window-inactive",browsers:["C","S3"],description:"Non-standard. Applies to all scrollbar pieces. Indicates whether or not the window containing the scrollbar is currently active."},{name:":blank",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:blank"}],description:"The :blank CSS pseudo-class selects empty user input elements (eg. <input> or <textarea>)."},{name:":defined",status:"experimental",browsers:["E79","FF63","S10","C54","O41"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:defined"}],description:"The :defined CSS pseudo-class represents any element that has been defined. This includes any standard element built in to the browser, and custom elements that have been successfully defined (i.e. with the CustomElementRegistry.define() method)."},{name:":dir",browsers:["FF49"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:dir"}],description:"The :dir() CSS pseudo-class matches elements based on the directionality of the text contained in them."},{name:":focus-visible",status:"experimental",browsers:["E79","FF4","C67","O54"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:focus-visible"}],description:"The :focus-visible pseudo-class applies while an element matches the :focus pseudo-class and the UA determines via heuristics that the focus should be made evident on the element."},{name:":focus-within",status:"experimental",browsers:["E79","FF52","S10.1","C60","O47"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:focus-within"}],description:"The :focus-within pseudo-class applies to any element for which the :focus pseudo class applies as well as to an element whose descendant in the flat tree (including non-element nodes, such as text nodes) matches the conditions for matching :focus."},{name:":has",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:has"}],description:":The :has() CSS pseudo-class represents an element if any of the selectors passed as parameters (relative to the :scope of the given element), match at least one element."},{name:":is",status:"experimental",browsers:["E79","FF78","S9","C68","O55"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:is"}],description:"The :is() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list. This is useful for writing large selectors in a more compact form."},{name:":placeholder-shown",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:placeholder-shown"}],description:"The :placeholder-shown CSS pseudo-class represents any <input> or <textarea> element that is currently displaying placeholder text."},{name:":where",status:"experimental",browsers:["FF78","C72"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/:where"}],description:"The :where() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list."}],pseudoElements:[{name:"::after",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::after"}],description:"Represents a styleable child pseudo-element immediately after the originating element’s actual content."},{name:"::backdrop",browsers:["E12","FF47","C37","IE11","O24"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::backdrop"}],description:"Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen)."},{name:"::before",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::before"}],description:"Represents a styleable child pseudo-element immediately before the originating element’s actual content."},{name:"::content",browsers:["C35","O22"],description:"Deprecated. Matches the distribution list itself, on elements that have one. Use ::slotted for forward compatibility."},{name:"::cue",browsers:["E79","FF55","S6.1","C26","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::cue"}]},{name:"::cue()",browsers:["C","O16","S6"]},{name:"::cue-region",browsers:["C","O16","S6"]},{name:"::cue-region()",browsers:["C","O16","S6"]},{name:"::first-letter",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::first-letter"}],description:"Represents the first letter of an element, if it is not preceded by any other content (such as images or inline tables) on its line."},{name:"::first-line",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::first-line"}],description:"Describes the contents of the first formatted line of its originating element."},{name:"::-moz-focus-inner",browsers:["FF4"]},{name:"::-moz-focus-outer",browsers:["FF4"]},{name:"::-moz-list-bullet",browsers:["FF1"],description:"Used to style the bullet of a list element. Similar to the standardized ::marker."},{name:"::-moz-list-number",browsers:["FF1"],description:"Used to style the numbers of a list element. Similar to the standardized ::marker."},{name:"::-moz-placeholder",browsers:["FF19"],description:"Represents placeholder text in an input field"},{name:"::-moz-progress-bar",browsers:["FF9"],description:"Represents the bar portion of a progress bar."},{name:"::-moz-selection",browsers:["FF1"],description:"Represents the portion of a document that has been highlighted by the user."},{name:"::-ms-backdrop",browsers:["IE11"],description:"Used to create a backdrop that hides the underlying document for an element in a top layer (such as an element that is displayed fullscreen)."},{name:"::-ms-browse",browsers:["E","IE10"],description:"Represents the browse button of an input type=file control."},{name:"::-ms-check",browsers:["E","IE10"],description:"Represents the check of a checkbox or radio button input control."},{name:"::-ms-clear",browsers:["E","IE10"],description:"Represents the clear button of a text input control"},{name:"::-ms-expand",browsers:["E","IE10"],description:"Represents the drop-down button of a select control."},{name:"::-ms-fill",browsers:["E","IE10"],description:"Represents the bar portion of a progress bar."},{name:"::-ms-fill-lower",browsers:["E","IE10"],description:"Represents the portion of the slider track from its smallest value up to the value currently selected by the thumb. In a left-to-right layout, this is the portion of the slider track to the left of the thumb."},{name:"::-ms-fill-upper",browsers:["E","IE10"],description:"Represents the portion of the slider track from the value currently selected by the thumb up to the slider's largest value. In a left-to-right layout, this is the portion of the slider track to the right of the thumb."},{name:"::-ms-reveal",browsers:["E","IE10"],description:"Represents the password reveal button of an input type=password control."},{name:"::-ms-thumb",browsers:["E","IE10"],description:"Represents the portion of range input control (also known as a slider control) that the user drags."},{name:"::-ms-ticks-after",browsers:["E","IE10"],description:"Represents the tick marks of a slider that begin just after the thumb and continue up to the slider's largest value. In a left-to-right layout, these are the ticks to the right of the thumb."},{name:"::-ms-ticks-before",browsers:["E","IE10"],description:"Represents the tick marks of a slider that represent its smallest values up to the value currently selected by the thumb. In a left-to-right layout, these are the ticks to the left of the thumb."},{name:"::-ms-tooltip",browsers:["E","IE10"],description:"Represents the tooltip of a slider (input type=range)."},{name:"::-ms-track",browsers:["E","IE10"],description:"Represents the track of a slider."},{name:"::-ms-value",browsers:["E","IE10"],description:"Represents the content of a text or password input control, or a select control."},{name:"::selection",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::selection"}],description:"Represents the portion of a document that has been highlighted by the user."},{name:"::shadow",browsers:["C35","O22"],description:"Matches the shadow root if an element has a shadow tree."},{name:"::-webkit-file-upload-button",browsers:["E79","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-file-upload-button"}]},{name:"::-webkit-inner-spin-button",browsers:["E79","S5","C6","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-inner-spin-button"}]},{name:"::-webkit-input-placeholder",browsers:["C","S4"]},{name:"::-webkit-keygen-select",browsers:["C","O","S6"]},{name:"::-webkit-meter-bar",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-bar"}]},{name:"::-webkit-meter-even-less-good-value",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-even-less-good-value"}]},{name:"::-webkit-meter-optimum-value",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-optimum-value"}]},{name:"::-webkit-meter-suboptimum-value",browsers:["E79","S5.1","C12","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-meter-suboptimum-value"}]},{name:"::-webkit-outer-spin-button",browsers:["S5","C6"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-outer-spin-button"}]},{name:"::-webkit-progress-bar",browsers:["E79","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-bar"}]},{name:"::-webkit-progress-inner-element",browsers:["E79","S6.1","C23","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-inner-element"}]},{name:"::-webkit-progress-value",browsers:["E79","S6.1","C25","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-progress-value"}]},{name:"::-webkit-resizer",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-button",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-corner",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-thumb",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-track",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-scrollbar-track-piece",browsers:["E79","S4","C2","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-scrollbar"}]},{name:"::-webkit-search-cancel-button",browsers:["E79","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-cancel-button"}]},{name:"::-webkit-search-decoration",browsers:["C","S4"]},{name:"::-webkit-search-results-button",browsers:["E79","S3","C1","O15"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-webkit-search-results-button"}]},{name:"::-webkit-search-results-decoration",browsers:["C","S4"]},{name:"::-webkit-slider-runnable-track",browsers:["C","O","S6"]},{name:"::-webkit-slider-thumb",browsers:["C","O","S6"]},{name:"::-webkit-textfield-decoration-container",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-arrow",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-arrow-clipper",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-heading",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-message",browsers:["C","O","S6"]},{name:"::-webkit-validation-bubble-text-block",browsers:["C","O","S6"]},{name:"::-moz-range-progress",status:"nonstandard",browsers:["FF22"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-progress"}],description:'The ::-moz-range-progress CSS pseudo-element is a Mozilla extension that represents the lower portion of the track (i.e., groove) in which the indicator slides in an <input> of type="range". This portion corresponds to values lower than the value currently selected by the thumb (i.e., virtual knob).'},{name:"::-moz-range-thumb",status:"nonstandard",browsers:["FF21"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-thumb"}],description:'The ::-moz-range-thumb CSS pseudo-element is a Mozilla extension that represents the thumb (i.e., virtual knob) of an <input> of type="range". The user can move the thumb along the input\'s track to alter its numerical value.'},{name:"::-moz-range-track",status:"nonstandard",browsers:["FF21"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::-moz-range-track"}],description:'The ::-moz-range-track CSS pseudo-element is a Mozilla extension that represents the track (i.e., groove) in which the indicator slides in an <input> of type="range".'},{name:"::-webkit-progress-inner-value",status:"nonstandard",description:"The ::-webkit-progress-value CSS pseudo-element represents the filled-in portion of the bar of a <progress> element. It is a child of the ::-webkit-progress-bar pseudo-element.\n\nIn order to let ::-webkit-progress-value take effect, -webkit-appearance needs to be set to none on the <progress> element."},{name:"::grammar-error",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::grammar-error"}],description:"The ::grammar-error CSS pseudo-element represents a text segment which the user agent has flagged as grammatically incorrect."},{name:"::marker",browsers:["E80","FF68","S11.1","C80"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::marker"}],description:"The ::marker CSS pseudo-element selects the marker box of a list item, which typically contains a bullet or number. It works on any element or pseudo-element set to display: list-item, such as the <li> and <summary> elements."},{name:"::part",status:"experimental",browsers:["E79","FF72","S13.1","C73","O60"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::part"}],description:"The ::part CSS pseudo-element represents any element within a shadow tree that has a matching part attribute."},{name:"::placeholder",browsers:["E12","FF51","S10.1","C57","O44"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::placeholder"}],description:"The ::placeholder CSS pseudo-element represents the placeholder text of a form element."},{name:"::slotted",browsers:["E79","FF63","S10","C50","O37"],references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::slotted"}],description:"The :slotted() CSS pseudo-element represents any element that has been placed into a slot inside an HTML template."},{name:"::spelling-error",status:"experimental",references:[{name:"MDN Reference",url:"https://developer.mozilla.org/docs/Web/CSS/::spelling-error"}],description:"The ::spelling-error CSS pseudo-element represents a text segment which the user agent has flagged as incorrectly spelled."}]},$o=function(){function e(e){this._properties=[],this._atDirectives=[],this._pseudoClasses=[],this._pseudoElements=[],this.addData(e)}return e.prototype.provideProperties=function(){return this._properties},e.prototype.provideAtDirectives=function(){return this._atDirectives},e.prototype.providePseudoClasses=function(){return this._pseudoClasses},e.prototype.providePseudoElements=function(){return this._pseudoElements},e.prototype.addData=function(e){if(Array.isArray(e.properties))for(var t=0,n=e.properties;t<n.length;t++){var r=n[t];"string"==typeof r.name&&this._properties.push(r)}if(Array.isArray(e.atDirectives))for(var i=0,o=e.atDirectives;i<o.length;i++)"string"==typeof(r=o[i]).name&&this._atDirectives.push(r);if(Array.isArray(e.pseudoClasses))for(var s=0,a=e.pseudoClasses;s<a.length;s++)qo(r=a[s])&&this._pseudoClasses.push(r);if(Array.isArray(e.pseudoElements))for(var l=0,c=e.pseudoElements;l<c.length;l++)Ko(r=c[l])&&this._pseudoElements.push(r)},e}();function qo(e){return"string"==typeof e.name}function Ko(e){return"string"==typeof e.name}!function(){function e(e){this.dataProviders=[],this._propertySet={},this._atDirectiveSet={},this._pseudoClassSet={},this._pseudoElementSet={},this._properties=[],this._atDirectives=[],this._pseudoClasses=[],this._pseudoElements=[],this.setDataProviders(!1!==(null==e?void 0:e.useDefaultDataProvider),(null==e?void 0:e.customDataProviders)||[])}e.prototype.setDataProviders=function(e,t){var n;this.dataProviders=[],e&&this.dataProviders.push(new $o(Bo)),(n=this.dataProviders).push.apply(n,t),this.collectData()},e.prototype.collectData=function(){var e=this;this._propertySet={},this._atDirectiveSet={},this._pseudoClassSet={},this._pseudoElementSet={},this.dataProviders.forEach((function(t){t.provideProperties().forEach((function(t){e._propertySet[t.name]||(e._propertySet[t.name]=t)})),t.provideAtDirectives().forEach((function(t){e._atDirectiveSet[t.name]||(e._atDirectiveSet[t.name]=t)})),t.providePseudoClasses().forEach((function(t){e._pseudoClassSet[t.name]||(e._pseudoClassSet[t.name]=t)})),t.providePseudoElements().forEach((function(t){e._pseudoElementSet[t.name]||(e._pseudoElementSet[t.name]=t)}))})),this._properties=nn(this._propertySet),this._atDirectives=nn(this._atDirectiveSet),this._pseudoClasses=nn(this._pseudoClassSet),this._pseudoElements=nn(this._pseudoElementSet)},e.prototype.getProperty=function(e){return this._propertySet[e]},e.prototype.getAtDirective=function(e){return this._atDirectiveSet[e]},e.prototype.getPseudoClass=function(e){return this._pseudoClassSet[e]},e.prototype.getPseudoElement=function(e){return this._pseudoElementSet[e]},e.prototype.getProperties=function(){return this._properties},e.prototype.getAtDirectives=function(){return this._atDirectives},e.prototype.getPseudoClasses=function(){return this._pseudoClasses},e.prototype.getPseudoElements=function(){return this._pseudoElements},e.prototype.isKnownProperty=function(e){return e.toLowerCase()in this._propertySet},e.prototype.isStandardProperty=function(e){return this.isKnownProperty(e)&&(!this._propertySet[e.toLowerCase()].status||"standard"===this._propertySet[e.toLowerCase()].status)}}();var Go=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();!function(e){function t(t){return e.call(this,t)||this}Go(t,e),t.prototype.isRawStringDocumentLinkNode=function(t){return e.prototype.isRawStringDocumentLinkNode.call(this,t)||t.type===ne.Use||t.type===ne.Forward},t.prototype.resolveRelativeReference=function(t,n,r){return i=this,o=void 0,a=function(){var i,o,s,a;return function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}}(this,(function(l){switch(l.label){case 0:return Z(t,"sass:")?[2,void 0]:[4,e.prototype.resolveRelativeReference.call(this,t,n,r)];case 1:if(i=l.sent(),!this.fileSystemProvider||!i||0!==function(e){for(var t=e.length-1;t>=0;t--){var n=e.charCodeAt(t);if(n===qr){if(t>0&&e.charCodeAt(t-1)!==$r)return e.substr(t);break}if(n===$r)break}return""}(i).length)return[3,8];l.label=2;case 2:if(l.trys.push([2,7,,8]),o=Pr.parse(i),!(s=function(e){if(""!==e.path&&!e.path.endsWith(".scss")&&!e.path.endsWith(".css")){if(e.path.endsWith("/"))return[e.with({path:e.path+"index.scss"}).toString(),e.with({path:e.path+"_index.scss"}).toString()];var t=e.path.split("/"),n=t[t.length-1],r=e.path.slice(0,-n.length);if(n.startsWith("_"))return e.path.endsWith(".scss")?void 0:[e.with({path:e.path+".scss"}).toString()];var i=n+".scss",o=function(t){return e.with({path:r+t}).toString()};return[o(i),o("_"+i),o(i.slice(0,-5)+"/index.scss"),o(i.slice(0,-5)+"/_index.scss"),o(i.slice(0,-5)+".css")]}}(o)))return[3,6];a=0,l.label=3;case 3:return a<s.length?[4,this.fileExists(s[a])]:[3,6];case 4:if(l.sent())return[2,s[a]];l.label=5;case 5:return a++,[3,3];case 6:return[2,void 0];case 7:return l.sent(),[3,8];case 8:return[2,i]}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{l(a.next(e))}catch(e){t(e)}}function r(e){try{l(a.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof s?i:new s((function(e){e(i)}))).then(n,r)}l((a=a.apply(i,o||[])).next())}));var i,o,s,a}}(Di);var Ho=function(){function e(e,t,n){var r=this;this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);var i=function(e){var t,n=e.getModeId();n===r._languageId&&(r._listener[e.uri.toString()]=e.onDidChangeContent((function(){window.clearTimeout(t),t=window.setTimeout((function(){return r._doValidate(e.uri,n)}),500)})),r._doValidate(e.uri,n))},s=function(e){o.j6.setModelMarkers(e,r._languageId,[]);var t=e.uri.toString(),n=r._listener[t];n&&(n.dispose(),delete r._listener[t])};this._disposables.push(o.j6.onDidCreateModel(i)),this._disposables.push(o.j6.onWillDisposeModel(s)),this._disposables.push(o.j6.onDidChangeModelLanguage((function(e){s(e.model),i(e.model)}))),n.onDidChange((function(e){o.j6.getModels().forEach((function(e){e.getModeId()===r._languageId&&(s(e),i(e))}))})),this._disposables.push({dispose:function(){for(var e in r._listener)r._listener[e].dispose()}}),o.j6.getModels().forEach(i)}return e.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},e.prototype._doValidate=function(e,t){this._worker(e).then((function(t){return t.doValidation(e.toString())})).then((function(n){var r=n.map((function(e){return n="number"==typeof(t=e).code?String(t.code):t.code,{severity:Jo(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:n,source:t.source};var t,n})),i=o.j6.getModel(e);i.getModeId()===t&&o.j6.setModelMarkers(i,t,r)})).then(void 0,(function(e){console.error(e)}))},e}();function Jo(e){switch(e){case vn.Error:return o.ZL.Error;case vn.Warning:return o.ZL.Warning;case vn.Information:return o.ZL.Info;case vn.Hint:return o.ZL.Hint;default:return o.ZL.Info}}function Yo(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function Xo(e){if(e)return new o.e6(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Zo(e){var t=o.Mj.CompletionItemKind;switch(e){case jn.Text:return t.Text;case jn.Method:return t.Method;case jn.Function:return t.Function;case jn.Constructor:return t.Constructor;case jn.Field:return t.Field;case jn.Variable:return t.Variable;case jn.Class:return t.Class;case jn.Interface:return t.Interface;case jn.Module:return t.Module;case jn.Property:return t.Property;case jn.Unit:return t.Unit;case jn.Value:return t.Value;case jn.Enum:return t.Enum;case jn.Keyword:return t.Keyword;case jn.Snippet:return t.Snippet;case jn.Color:return t.Color;case jn.File:return t.File;case jn.Reference:return t.Reference}return t.Property}function Qo(e){if(e)return{range:Xo(e.range),text:e.newText}}var es=function(){function e(e){this._worker=e}return Object.defineProperty(e.prototype,"triggerCharacters",{get:function(){return[" ",":"]},enumerable:!1,configurable:!0}),e.prototype.provideCompletionItems=function(e,t,n,r){var i=e.uri;return this._worker(i).then((function(e){return e.doComplete(i.toString(),Yo(t))})).then((function(n){if(n){var r=e.getWordUntilPosition(t),i=new o.e6(t.lineNumber,r.startColumn,t.lineNumber,r.endColumn),s=n.items.map((function(e){var t,n={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,range:i,kind:Zo(e.kind)};return e.textEdit&&(void 0!==(t=e.textEdit).insert&&void 0!==t.replace?n.range={insert:Xo(e.textEdit.insert),replace:Xo(e.textEdit.replace)}:n.range=Xo(e.textEdit.range),n.insertText=e.textEdit.newText),e.additionalTextEdits&&(n.additionalTextEdits=e.additionalTextEdits.map(Qo)),e.insertTextFormat===Vn.Snippet&&(n.insertTextRules=o.Mj.CompletionItemInsertTextRule.InsertAsSnippet),n}));return{isIncomplete:n.isIncomplete,suggestions:s}}}))},e}();function ts(e){return"string"==typeof e?{value:e}:(t=e)&&"object"==typeof t&&"string"==typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function ns(e){if(e)return Array.isArray(e)?e.map(ts):[ts(e)]}var rs=function(){function e(e){this._worker=e}return e.prototype.provideHover=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.doHover(r.toString(),Yo(t))})).then((function(e){if(e)return{range:Xo(e.range),contents:ns(e.contents)}}))},e}();function is(e){switch(e){case Xn.Read:return o.Mj.DocumentHighlightKind.Read;case Xn.Write:return o.Mj.DocumentHighlightKind.Write;case Xn.Text:return o.Mj.DocumentHighlightKind.Text}return o.Mj.DocumentHighlightKind.Text}var os=function(){function e(e){this._worker=e}return e.prototype.provideDocumentHighlights=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.findDocumentHighlights(r.toString(),Yo(t))})).then((function(e){if(e)return e.map((function(e){return{range:Xo(e.range),kind:is(e.kind)}}))}))},e}();function ss(e){return{uri:o.Sf.parse(e.uri),range:Xo(e.range)}}var as=function(){function e(e){this._worker=e}return e.prototype.provideDefinition=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.findDefinition(r.toString(),Yo(t))})).then((function(e){if(e)return[ss(e)]}))},e}(),ls=function(){function e(e){this._worker=e}return e.prototype.provideReferences=function(e,t,n,r){var i=e.uri;return this._worker(i).then((function(e){return e.findReferences(i.toString(),Yo(t))})).then((function(e){if(e)return e.map(ss)}))},e}(),cs=function(){function e(e){this._worker=e}return e.prototype.provideRenameEdits=function(e,t,n,r){var i=e.uri;return this._worker(i).then((function(e){return e.doRename(i.toString(),Yo(t),n)})).then((function(e){return function(e){if(e&&e.changes){var t=[];for(var n in e.changes)for(var r=o.Sf.parse(n),i=0,s=e.changes[n];i<s.length;i++){var a=s[i];t.push({resource:r,edit:{range:Xo(a.range),text:a.newText}})}return{edits:t}}}(e)}))},e}();function ds(e){var t=o.Mj.SymbolKind;switch(e){case Qn.File:return t.Array;case Qn.Module:return t.Module;case Qn.Namespace:return t.Namespace;case Qn.Package:return t.Package;case Qn.Class:return t.Class;case Qn.Method:return t.Method;case Qn.Property:return t.Property;case Qn.Field:return t.Field;case Qn.Constructor:return t.Constructor;case Qn.Enum:return t.Enum;case Qn.Interface:return t.Interface;case Qn.Function:return t.Function;case Qn.Variable:return t.Variable;case Qn.Constant:return t.Constant;case Qn.String:return t.String;case Qn.Number:return t.Number;case Qn.Boolean:return t.Boolean;case Qn.Array:return t.Array}return t.Function}var ps=function(){function e(e){this._worker=e}return e.prototype.provideDocumentSymbols=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentSymbols(n.toString())})).then((function(e){if(e)return e.map((function(e){return{name:e.name,detail:"",containerName:e.containerName,kind:ds(e.kind),tags:[],range:Xo(e.location.range),selectionRange:Xo(e.location.range)}}))}))},e}(),hs=function(){function e(e){this._worker=e}return e.prototype.provideDocumentColors=function(e,t){var n=e.uri;return this._worker(n).then((function(e){return e.findDocumentColors(n.toString())})).then((function(e){if(e)return e.map((function(e){return{color:e.color,range:Xo(e.range)}}))}))},e.prototype.provideColorPresentations=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getColorPresentations(r.toString(),t.color,function(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}(t.range))})).then((function(e){if(e)return e.map((function(e){var t={label:e.label};return e.textEdit&&(t.textEdit=Qo(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(Qo)),t}))}))},e}(),ms=function(){function e(e){this._worker=e}return e.prototype.provideFoldingRanges=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getFoldingRanges(r.toString(),t)})).then((function(e){if(e)return e.map((function(e){var t={start:e.startLine+1,end:e.endLine+1};return void 0!==e.kind&&(t.kind=function(e){switch(e){case fn.Comment:return o.Mj.FoldingRangeKind.Comment;case fn.Imports:return o.Mj.FoldingRangeKind.Imports;case fn.Region:return o.Mj.FoldingRangeKind.Region}}(e.kind)),t}))}))},e}(),us=function(){function e(e){this._worker=e}return e.prototype.provideSelectionRanges=function(e,t,n){var r=e.uri;return this._worker(r).then((function(e){return e.getSelectionRanges(r.toString(),t.map(Yo))})).then((function(e){if(e)return e.map((function(e){for(var t=[];e;)t.push({range:Xo(e.range)}),e=e.parent;return t}))}))},e}();function fs(e){var t=[],n=[],r=new s(e);t.push(r);var i,a,l=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.getLanguageServiceWorker.apply(r,e)};return i=e.languageId,a=e.modeConfiguration,bs(n),a.completionItems&&n.push(o.Mj.registerCompletionItemProvider(i,new es(l))),a.hovers&&n.push(o.Mj.registerHoverProvider(i,new rs(l))),a.documentHighlights&&n.push(o.Mj.registerDocumentHighlightProvider(i,new os(l))),a.definitions&&n.push(o.Mj.registerDefinitionProvider(i,new as(l))),a.references&&n.push(o.Mj.registerReferenceProvider(i,new ls(l))),a.documentSymbols&&n.push(o.Mj.registerDocumentSymbolProvider(i,new ps(l))),a.rename&&n.push(o.Mj.registerRenameProvider(i,new cs(l))),a.colors&&n.push(o.Mj.registerColorProvider(i,new hs(l))),a.foldingRanges&&n.push(o.Mj.registerFoldingRangeProvider(i,new ms(l))),a.diagnostics&&n.push(new Ho(i,l,e)),a.selectionRanges&&n.push(o.Mj.registerSelectionRangeProvider(i,new us(l))),t.push(gs(n)),gs(t)}function gs(e){return{dispose:function(){return bs(e)}}}function bs(e){for(;e.length;)e.pop().dispose()}}}]); \ No newline at end of file diff --git a/docs/dist/7043.7043.js b/docs/dist/7043.7043.js deleted file mode 100644 index 77335506..00000000 --- a/docs/dist/7043.7043.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7043],{17043:(e,t,o)=>{"use strict";o.r(t),o.d(t,{conf:()=>s,language:()=>i});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}],folding:{markers:{start:new RegExp("^\\s*//\\s*(?:(?:#?region\\b)|(?:<editor-fold\\b))"),end:new RegExp("^\\s*//\\s*(?:(?:#?endregion\\b)|(?:</editor-fold>))")}}},i={defaultToken:"",tokenPostfix:".java",keywords:["abstract","continue","for","new","switch","assert","default","goto","package","synchronized","boolean","do","if","private","this","break","double","implements","protected","throw","byte","else","import","public","throws","case","enum","instanceof","return","transient","catch","extends","int","short","try","char","final","interface","static","void","class","finally","long","strictfp","volatile","const","float","native","super","while","true","false"],operators:["=",">","<","!","~","?",":","==","<=",">=","!=","&&","||","++","--","+","-","*","/","&","|","^","%","<<",">>",">>>","+=","-=","*=","/=","&=","|=","^=","%=","<<=",">>=",">>>="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,tokenizer:{root:[[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/@\s*[a-zA-Z_\$][\w\$]*/,"annotation"],[/(@digits)[eE]([\-+]?(@digits))?[fFdD]?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?[fFdD]?/,"number.float"],[/0[xX](@hexdigits)[Ll]?/,"number.hex"],[/0(@octaldigits)[Ll]?/,"number.octal"],[/0[bB](@binarydigits)[Ll]?/,"number.binary"],[/(@digits)[fFdD]/,"number.float"],[/(@digits)[lL]?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string"],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@javadoc"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],javadoc:[[/[^\/*]+/,"comment.doc"],[/\/\*/,"comment.doc.invalid"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/7194.7194.js b/docs/dist/7194.7194.js deleted file mode 100644 index 38246715..00000000 --- a/docs/dist/7194.7194.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7194],{97194:(e,t,r)=>{"use strict";r.r(t),r.d(t,{setupMode:()=>Cr});var n,i=r(61174),o=function(){function e(e){var t=this;this._defaults=e,this._worker=null,this._idleCheckInterval=setInterval((function(){return t._checkIfIdle()}),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange((function(){return t._stopWorker()}))}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()},e.prototype._checkIfIdle=function(){this._worker&&Date.now()-this._lastUsedTime>12e4&&this._stopWorker()},e.prototype._getClient=function(){return this._lastUsedTime=Date.now(),this._client||(this._worker=i.j6.createWebWorker({moduleId:"vs/language/json/jsonWorker",label:this._defaults.languageId,createData:{languageSettings:this._defaults.diagnosticsOptions,languageId:this._defaults.languageId,enableSchemaRequest:this._defaults.diagnosticsOptions.enableSchemaRequest}}),this._client=this._worker.getProxy()),this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,t=this,r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return this._getClient().then((function(t){e=t})).then((function(e){return t._worker.withSyncedResources(r)})).then((function(t){return e}))},e}();function a(e,t){void 0===t&&(t=!1);var r=e.length,n=0,i="",o=0,a=16,l=0,f=0,h=0,p=0,d=0;function m(t,r){for(var i=0,o=0;i<t||!r;){var a=e.charCodeAt(n);if(a>=48&&a<=57)o=16*o+a-48;else if(a>=65&&a<=70)o=16*o+a-65+10;else{if(!(a>=97&&a<=102))break;o=16*o+a-97+10}n++,i++}return i<t&&(o=-1),o}function g(){if(i="",d=0,o=n,f=l,p=h,n>=r)return o=r,a=17;var t=e.charCodeAt(n);if(s(t)){do{n++,i+=String.fromCharCode(t),t=e.charCodeAt(n)}while(s(t));return a=15}if(u(t))return n++,i+=String.fromCharCode(t),13===t&&10===e.charCodeAt(n)&&(n++,i+="\n"),l++,h=n,a=14;switch(t){case 123:return n++,a=1;case 125:return n++,a=2;case 91:return n++,a=3;case 93:return n++,a=4;case 58:return n++,a=6;case 44:return n++,a=5;case 34:return n++,i=function(){for(var t="",i=n;;){if(n>=r){t+=e.substring(i,n),d=2;break}var o=e.charCodeAt(n);if(34===o){t+=e.substring(i,n),n++;break}if(92!==o){if(o>=0&&o<=31){if(u(o)){t+=e.substring(i,n),d=2;break}d=6}n++}else{if(t+=e.substring(i,n),++n>=r){d=2;break}switch(e.charCodeAt(n++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:var a=m(4,!0);a>=0?t+=String.fromCharCode(a):d=4;break;default:d=5}i=n}}return t}(),a=10;case 47:var g=n-1;if(47===e.charCodeAt(n+1)){for(n+=2;n<r&&!u(e.charCodeAt(n));)n++;return i=e.substring(g,n),a=12}if(42===e.charCodeAt(n+1)){n+=2;for(var y=r-1,b=!1;n<y;){var x=e.charCodeAt(n);if(42===x&&47===e.charCodeAt(n+1)){n+=2,b=!0;break}n++,u(x)&&(13===x&&10===e.charCodeAt(n)&&n++,l++,h=n)}return b||(n++,d=1),i=e.substring(g,n),a=13}return i+=String.fromCharCode(t),n++,a=16;case 45:if(i+=String.fromCharCode(t),++n===r||!c(e.charCodeAt(n)))return a=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=function(){var t=n;if(48===e.charCodeAt(n))n++;else for(n++;n<e.length&&c(e.charCodeAt(n));)n++;if(n<e.length&&46===e.charCodeAt(n)){if(!(++n<e.length&&c(e.charCodeAt(n))))return d=3,e.substring(t,n);for(n++;n<e.length&&c(e.charCodeAt(n));)n++}var r=n;if(n<e.length&&(69===e.charCodeAt(n)||101===e.charCodeAt(n)))if((++n<e.length&&43===e.charCodeAt(n)||45===e.charCodeAt(n))&&n++,n<e.length&&c(e.charCodeAt(n))){for(n++;n<e.length&&c(e.charCodeAt(n));)n++;r=n}else d=3;return e.substring(t,r)}(),a=11;default:for(;n<r&&v(t);)n++,t=e.charCodeAt(n);if(o!==n){switch(i=e.substring(o,n)){case"true":return a=8;case"false":return a=9;case"null":return a=7}return a=16}return i+=String.fromCharCode(t),n++,a=16}}function v(e){if(s(e)||u(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){n=e,i="",o=0,a=16,d=0},getPosition:function(){return n},scan:t?function(){var e;do{e=g()}while(e>=12&&e<=15);return e}:g,getToken:function(){return a},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return n-o},getTokenStartLine:function(){return f},getTokenStartCharacter:function(){return o-p},getTokenError:function(){return d}}}function s(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function u(e){return 10===e||13===e||8232===e||8233===e}function c(e){return e>=48&&e<=57}!function(e){e.DEFAULT={allowTrailingComma:!1}}(n||(n={}));var l,f,h,p,d,m,g,v,y,b,x,S,k,C,w,A,I,T,j,E,O,M,P,_,F,V,N=a,R=function(e,t,r){void 0===t&&(t=[]),void 0===r&&(r=n.DEFAULT);var i=null,o=[],s=[];function u(e){Array.isArray(o)?o.push(e):null!==i&&(o[i]=e)}return function(e,t,r){void 0===r&&(r=n.DEFAULT);var i=a(e,!1);function o(e){return e?function(){return e(i.getTokenOffset(),i.getTokenLength(),i.getTokenStartLine(),i.getTokenStartCharacter())}:function(){return!0}}function s(e){return e?function(t){return e(t,i.getTokenOffset(),i.getTokenLength(),i.getTokenStartLine(),i.getTokenStartCharacter())}:function(){return!0}}var u=o(t.onObjectBegin),c=s(t.onObjectProperty),l=o(t.onObjectEnd),f=o(t.onArrayBegin),h=o(t.onArrayEnd),p=s(t.onLiteralValue),d=s(t.onSeparator),m=o(t.onComment),g=s(t.onError),v=r&&r.disallowComments,y=r&&r.allowTrailingComma;function b(){for(;;){var e=i.scan();switch(i.getTokenError()){case 4:x(14);break;case 5:x(15);break;case 3:x(13);break;case 1:v||x(11);break;case 2:x(12);break;case 6:x(16)}switch(e){case 12:case 13:v?x(10):m();break;case 16:x(1);break;case 15:case 14:break;default:return e}}}function x(e,t,r){if(void 0===t&&(t=[]),void 0===r&&(r=[]),g(e),t.length+r.length>0)for(var n=i.getToken();17!==n;){if(-1!==t.indexOf(n)){b();break}if(-1!==r.indexOf(n))break;n=b()}}function S(e){var t=i.getTokenValue();return e?p(t):c(t),b(),!0}b(),17===i.getToken()?!!r.allowEmptyContent||x(4,[],[]):function e(){switch(i.getToken()){case 3:return function(){f(),b();for(var t=!1;4!==i.getToken()&&17!==i.getToken();){if(5===i.getToken()){if(t||x(4,[],[]),d(","),b(),4===i.getToken()&&y)break}else t&&x(6,[],[]);e()||x(4,[],[4,5]),t=!0}return h(),4!==i.getToken()?x(8,[4],[]):b(),!0}();case 1:return function(){u(),b();for(var t=!1;2!==i.getToken()&&17!==i.getToken();){if(5===i.getToken()){if(t||x(4,[],[]),d(","),b(),2===i.getToken()&&y)break}else t&&x(6,[],[]);(10!==i.getToken()?(x(3,[],[2,5]),0):(S(!1),6===i.getToken()?(d(":"),b(),e()||x(4,[],[2,5])):x(5,[],[2,5]),1))||x(4,[],[2,5]),t=!0}return l(),2!==i.getToken()?x(7,[2],[]):b(),!0}();case 10:return S(!0);default:return function(){switch(i.getToken()){case 11:var e=0;try{"number"!=typeof(e=JSON.parse(i.getTokenValue()))&&(x(2),e=0)}catch(e){x(2)}p(e);break;case 7:p(null);break;case 8:p(!0);break;case 9:p(!1);break;default:return!1}return b(),!0}()}}()?17!==i.getToken()&&x(9,[],[]):x(4,[],[])}(e,{onObjectBegin:function(){var e={};u(e),s.push(o),o=e,i=null},onObjectProperty:function(e){i=e},onObjectEnd:function(){o=s.pop()},onArrayBegin:function(){var e=[];u(e),s.push(o),o=e,i=null},onArrayEnd:function(){o=s.pop()},onLiteralValue:u,onError:function(e,r,n){t.push({error:e,offset:r,length:n})}},r),o[0]},$=function e(t,r,n){if(void 0===n&&(n=!1),function(e,t,r){return void 0===r&&(r=!1),t>=e.offset&&t<e.offset+e.length||r&&t===e.offset+e.length}(t,r,n)){var i=t.children;if(Array.isArray(i))for(var o=0;o<i.length&&i[o].offset<=r;o++){var a=e(i[o],r,n);if(a)return a}return t}},L=function e(t){if(!t.parent||!t.parent.children)return[];var r=e(t.parent);if("property"===t.parent.type){var n=t.parent.children[0].value;r.push(n)}else if("array"===t.parent.type){var i=t.parent.children.indexOf(t);-1!==i&&r.push(i)}return r},D=function e(t){switch(t.type){case"array":return t.children.map(e);case"object":for(var r=Object.create(null),n=0,i=t.children;n<i.length;n++){var o=i[n],a=o.children[1];a&&(r[o.children[0].value]=e(a))}return r;case"null":case"string":case"number":case"boolean":return t.value;default:return}};function W(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;var r,n;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(r=0;r<e.length;r++)if(!W(e[r],t[r]))return!1}else{var i=[];for(n in e)i.push(n);i.sort();var o=[];for(n in t)o.push(n);if(o.sort(),!W(i,o))return!1;for(r=0;r<i.length;r++)if(!W(e[i[r]],t[i[r]]))return!1}return!0}function U(e){return"number"==typeof e}function q(e){return void 0!==e}function B(e){return"boolean"==typeof e}(V=l||(l={})).create=function(e,t){return{line:e,character:t}},V.is=function(e){var t=e;return Se.objectLiteral(t)&&Se.number(t.line)&&Se.number(t.character)},(F=f||(f={})).create=function(e,t,r,n){if(Se.number(e)&&Se.number(t)&&Se.number(r)&&Se.number(n))return{start:l.create(e,t),end:l.create(r,n)};if(l.is(e)&&l.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+r+", "+n+"]")},F.is=function(e){var t=e;return Se.objectLiteral(t)&&l.is(t.start)&&l.is(t.end)},function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){var t=e;return Se.defined(t)&&f.is(t.range)&&(Se.string(t.uri)||Se.undefined(t.uri))}}(h||(h={})),function(e){e.create=function(e,t,r,n){return{targetUri:e,targetRange:t,targetSelectionRange:r,originSelectionRange:n}},e.is=function(e){var t=e;return Se.defined(t)&&f.is(t.targetRange)&&Se.string(t.targetUri)&&(f.is(t.targetSelectionRange)||Se.undefined(t.targetSelectionRange))&&(f.is(t.originSelectionRange)||Se.undefined(t.originSelectionRange))}}(p||(p={})),function(e){e.create=function(e,t,r,n){return{red:e,green:t,blue:r,alpha:n}},e.is=function(e){var t=e;return Se.number(t.red)&&Se.number(t.green)&&Se.number(t.blue)&&Se.number(t.alpha)}}(d||(d={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){var t=e;return f.is(t.range)&&d.is(t.color)}}(m||(m={})),function(e){e.create=function(e,t,r){return{label:e,textEdit:t,additionalTextEdits:r}},e.is=function(e){var t=e;return Se.string(t.label)&&(Se.undefined(t.textEdit)||w.is(t))&&(Se.undefined(t.additionalTextEdits)||Se.typedArray(t.additionalTextEdits,w.is))}}(g||(g={})),(_=v||(v={})).Comment="comment",_.Imports="imports",_.Region="region",function(e){e.create=function(e,t,r,n,i){var o={startLine:e,endLine:t};return Se.defined(r)&&(o.startCharacter=r),Se.defined(n)&&(o.endCharacter=n),Se.defined(i)&&(o.kind=i),o},e.is=function(e){var t=e;return Se.number(t.startLine)&&Se.number(t.startLine)&&(Se.undefined(t.startCharacter)||Se.number(t.startCharacter))&&(Se.undefined(t.endCharacter)||Se.number(t.endCharacter))&&(Se.undefined(t.kind)||Se.string(t.kind))}}(y||(y={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){var t=e;return Se.defined(t)&&h.is(t.location)&&Se.string(t.message)}}(b||(b={})),(P=x||(x={})).Error=1,P.Warning=2,P.Information=3,P.Hint=4,function(e){e.Unnecessary=1,e.Deprecated=2}(S||(S={})),(M=k||(k={})).create=function(e,t,r,n,i,o){var a={range:e,message:t};return Se.defined(r)&&(a.severity=r),Se.defined(n)&&(a.code=n),Se.defined(i)&&(a.source=i),Se.defined(o)&&(a.relatedInformation=o),a},M.is=function(e){var t=e;return Se.defined(t)&&f.is(t.range)&&Se.string(t.message)&&(Se.number(t.severity)||Se.undefined(t.severity))&&(Se.number(t.code)||Se.string(t.code)||Se.undefined(t.code))&&(Se.string(t.source)||Se.undefined(t.source))&&(Se.undefined(t.relatedInformation)||Se.typedArray(t.relatedInformation,b.is))},function(e){e.create=function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i={title:e,command:t};return Se.defined(r)&&r.length>0&&(i.arguments=r),i},e.is=function(e){var t=e;return Se.defined(t)&&Se.string(t.title)&&Se.string(t.command)}}(C||(C={})),(O=w||(w={})).replace=function(e,t){return{range:e,newText:t}},O.insert=function(e,t){return{range:{start:e,end:e},newText:t}},O.del=function(e){return{range:e,newText:""}},O.is=function(e){var t=e;return Se.objectLiteral(t)&&Se.string(t.newText)&&f.is(t.range)},function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return Se.defined(t)&&J.is(t.textDocument)&&Array.isArray(t.edits)}}(A||(A={})),function(e){e.create=function(e,t){var r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),r},e.is=function(e){var t=e;return t&&"create"===t.kind&&Se.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Se.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Se.boolean(t.options.ignoreIfExists)))}}(I||(I={})),function(e){e.create=function(e,t,r){var n={kind:"rename",oldUri:e,newUri:t};return void 0===r||void 0===r.overwrite&&void 0===r.ignoreIfExists||(n.options=r),n},e.is=function(e){var t=e;return t&&"rename"===t.kind&&Se.string(t.oldUri)&&Se.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Se.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Se.boolean(t.options.ignoreIfExists)))}}(T||(T={})),function(e){e.create=function(e,t){var r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),r},e.is=function(e){var t=e;return t&&"delete"===t.kind&&Se.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Se.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Se.boolean(t.options.ignoreIfNotExists)))}}(j||(j={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return Se.string(e.kind)?I.is(e)||T.is(e)||j.is(e):A.is(e)})))}}(E||(E={}));var K,J,H,z,G,Z,X,Q,Y,ee,te,re,ne,ie,oe,ae,se,ue,ce,le,fe,he,pe,de,me,ge,ve,ye,be,xe=function(){function e(e){this.edits=e}return e.prototype.insert=function(e,t){this.edits.push(w.insert(e,t))},e.prototype.replace=function(e,t){this.edits.push(w.replace(e,t))},e.prototype.delete=function(e){this.edits.push(w.del(e))},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),e&&(this._workspaceEdit=e,e.documentChanges?e.documentChanges.forEach((function(e){if(A.is(e)){var r=new xe(e.edits);t._textEditChanges[e.textDocument.uri]=r}})):e.changes&&Object.keys(e.changes).forEach((function(r){var n=new xe(e.changes[r]);t._textEditChanges[r]=n})))}Object.defineProperty(e.prototype,"edit",{get:function(){return this._workspaceEdit},enumerable:!0,configurable:!0}),e.prototype.getTextEditChange=function(e){if(J.is(e)){if(this._workspaceEdit||(this._workspaceEdit={documentChanges:[]}),!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t=e;if(!(n=this._textEditChanges[t.uri])){var r={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(r),n=new xe(i),this._textEditChanges[t.uri]=n}return n}if(this._workspaceEdit||(this._workspaceEdit={changes:Object.create(null)}),!this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var n;if(!(n=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,n=new xe(i),this._textEditChanges[e]=n}return n},e.prototype.createFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(I.create(e,t))},e.prototype.renameFile=function(e,t,r){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(T.create(e,t,r))},e.prototype.deleteFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(j.create(e,t))},e.prototype.checkDocumentChanges=function(){if(!this._workspaceEdit||!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.")}}(),function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return Se.defined(t)&&Se.string(t.uri)}}(K||(K={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return Se.defined(t)&&Se.string(t.uri)&&(null===t.version||Se.number(t.version))}}(J||(J={})),function(e){e.create=function(e,t,r,n){return{uri:e,languageId:t,version:r,text:n}},e.is=function(e){var t=e;return Se.defined(t)&&Se.string(t.uri)&&Se.string(t.languageId)&&Se.number(t.version)&&Se.string(t.text)}}(H||(H={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(z||(z={})),function(e){e.is=function(t){var r=t;return r===e.PlainText||r===e.Markdown}}(z||(z={})),function(e){e.is=function(e){var t=e;return Se.objectLiteral(e)&&z.is(t.kind)&&Se.string(t.value)}}(G||(G={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(Z||(Z={})),function(e){e.PlainText=1,e.Snippet=2}(X||(X={})),function(e){e.Deprecated=1}(Q||(Q={})),function(e){e.create=function(e){return{label:e}}}(Y||(Y={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(ee||(ee={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return Se.string(t)||Se.objectLiteral(t)&&Se.string(t.language)&&Se.string(t.value)}}(te||(te={})),function(e){e.is=function(e){var t=e;return!!t&&Se.objectLiteral(t)&&(G.is(t.contents)||te.is(t.contents)||Se.typedArray(t.contents,te.is))&&(void 0===e.range||f.is(e.range))}}(re||(re={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(ne||(ne={})),function(e){e.create=function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i={label:e};return Se.defined(t)&&(i.documentation=t),Se.defined(r)?i.parameters=r:i.parameters=[],i}}(ie||(ie={})),function(e){e.Text=1,e.Read=2,e.Write=3}(oe||(oe={})),function(e){e.create=function(e,t){var r={range:e};return Se.number(t)&&(r.kind=t),r}}(ae||(ae={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(se||(se={})),function(e){e.Deprecated=1}(ue||(ue={})),function(e){e.create=function(e,t,r,n,i){var o={name:e,kind:t,location:{uri:n,range:r}};return i&&(o.containerName=i),o}}(ce||(ce={})),function(e){e.create=function(e,t,r,n,i,o){var a={name:e,detail:t,kind:r,range:n,selectionRange:i};return void 0!==o&&(a.children=o),a},e.is=function(e){var t=e;return t&&Se.string(t.name)&&Se.number(t.kind)&&f.is(t.range)&&f.is(t.selectionRange)&&(void 0===t.detail||Se.string(t.detail))&&(void 0===t.deprecated||Se.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))}}(le||(le={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(fe||(fe={})),function(e){e.create=function(e,t){var r={diagnostics:e};return null!=t&&(r.only=t),r},e.is=function(e){var t=e;return Se.defined(t)&&Se.typedArray(t.diagnostics,k.is)&&(void 0===t.only||Se.typedArray(t.only,Se.string))}}(he||(he={})),function(e){e.create=function(e,t,r){var n={title:e};return C.is(t)?n.command=t:n.edit=t,void 0!==r&&(n.kind=r),n},e.is=function(e){var t=e;return t&&Se.string(t.title)&&(void 0===t.diagnostics||Se.typedArray(t.diagnostics,k.is))&&(void 0===t.kind||Se.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||C.is(t.command))&&(void 0===t.isPreferred||Se.boolean(t.isPreferred))&&(void 0===t.edit||E.is(t.edit))}}(pe||(pe={})),function(e){e.create=function(e,t){var r={range:e};return Se.defined(t)&&(r.data=t),r},e.is=function(e){var t=e;return Se.defined(t)&&f.is(t.range)&&(Se.undefined(t.command)||C.is(t.command))}}(de||(de={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){var t=e;return Se.defined(t)&&Se.number(t.tabSize)&&Se.boolean(t.insertSpaces)}}(me||(me={})),function(e){e.create=function(e,t,r){return{range:e,target:t,data:r}},e.is=function(e){var t=e;return Se.defined(t)&&f.is(t.range)&&(Se.undefined(t.target)||Se.string(t.target))}}(ge||(ge={})),(ye=ve||(ve={})).create=function(e,t){return{range:e,parent:t}},ye.is=function(e){var t=e;return void 0!==t&&f.is(t.range)&&(void 0===t.parent||ye.is(t.parent))},function(e){function t(e,r){if(e.length<=1)return e;var n=e.length/2|0,i=e.slice(0,n),o=e.slice(n);t(i,r),t(o,r);for(var a=0,s=0,u=0;a<i.length&&s<o.length;){var c=r(i[a],o[s]);e[u++]=c<=0?i[a++]:o[s++]}for(;a<i.length;)e[u++]=i[a++];for(;s<o.length;)e[u++]=o[s++];return e}e.create=function(e,t,r,n){return new ke(e,t,r,n)},e.is=function(e){var t=e;return!!(Se.defined(t)&&Se.string(t.uri)&&(Se.undefined(t.languageId)||Se.string(t.languageId))&&Se.number(t.lineCount)&&Se.func(t.getText)&&Se.func(t.positionAt)&&Se.func(t.offsetAt))},e.applyEdits=function(e,r){for(var n=e.getText(),i=t(r,(function(e,t){var r=e.range.start.line-t.range.start.line;return 0===r?e.range.start.character-t.range.start.character:r})),o=n.length,a=i.length-1;a>=0;a--){var s=i[a],u=e.offsetAt(s.range.start),c=e.offsetAt(s.range.end);if(!(c<=o))throw new Error("Overlapping edit");n=n.substring(0,u)+s.newText+n.substring(c,n.length),o=u}return n}}(be||(be={}));var Se,ke=function(){function e(e,t,r,n){this._uri=e,this._languageId=t,this._version=r,this._content=n,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,r=!0,n=0;n<t.length;n++){r&&(e.push(n),r=!1);var i=t.charAt(n);r="\r"===i||"\n"===i,"\r"===i&&n+1<t.length&&"\n"===t.charAt(n+1)&&n++}r&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),r=0,n=t.length;if(0===n)return l.create(0,e);for(;r<n;){var i=Math.floor((r+n)/2);t[i]>e?n=i:r=i+1}var o=r-1;return l.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var r=t[e.line],n=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,n),r)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(Se||(Se={}));var Ce,we,Ae,Ie,Te=function(){function e(e,t,r,n){this._uri=e,this._languageId=t,this._version=r,this._content=n,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content},e.prototype.update=function(t,r){for(var n=0,i=t;n<i.length;n++){var o=i[n];if(e.isIncremental(o)){var a=Oe(o.range),s=this.offsetAt(a.start),u=this.offsetAt(a.end);this._content=this._content.substring(0,s)+o.text+this._content.substring(u,this._content.length);var c=Math.max(a.start.line,0),l=Math.max(a.end.line,0),f=this._lineOffsets,h=Ee(o.text,!1,s);if(l-c===h.length)for(var p=0,d=h.length;p<d;p++)f[p+c+1]=h[p];else h.length<1e4?f.splice.apply(f,[c+1,l-c].concat(h)):this._lineOffsets=f=f.slice(0,c+1).concat(h,f.slice(l+1));var m=o.text.length-(u-s);if(0!==m)for(p=c+1+h.length,d=f.length;p<d;p++)f[p]=f[p]+m}else{if(!e.isFull(o))throw new Error("Unknown change event received");this._content=o.text,this._lineOffsets=void 0}}this._version=r},e.prototype.getLineOffsets=function(){return void 0===this._lineOffsets&&(this._lineOffsets=Ee(this._content,!0)),this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),r=0,n=t.length;if(0===n)return{line:0,character:e};for(;r<n;){var i=Math.floor((r+n)/2);t[i]>e?n=i:r=i+1}var o=r-1;return{line:o,character:e-t[o]}},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var r=t[e.line],n=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(r+e.character,n),r)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e.isIncremental=function(e){var t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)},e.isFull=function(e){var t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength},e}();function je(e,t){if(e.length<=1)return e;var r=e.length/2|0,n=e.slice(0,r),i=e.slice(r);je(n,t),je(i,t);for(var o=0,a=0,s=0;o<n.length&&a<i.length;){var u=t(n[o],i[a]);e[s++]=u<=0?n[o++]:i[a++]}for(;o<n.length;)e[s++]=n[o++];for(;a<i.length;)e[s++]=i[a++];return e}function Ee(e,t,r){void 0===r&&(r=0);for(var n=t?[r]:[],i=0;i<e.length;i++){var o=e.charCodeAt(i);13!==o&&10!==o||(13===o&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,n.push(r+i+1))}return n}function Oe(e){var t=e.start,r=e.end;return t.line>r.line||t.line===r.line&&t.character>r.character?{start:r,end:t}:e}function Me(e){var t=Oe(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function Pe(e,t){return 0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,r){var n=r[0];return void 0!==t[n]?t[n]:e}))}function _e(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return Pe(t,r)}function Fe(e){return _e}!function(e){e.create=function(e,t,r,n){return new Te(e,t,r,n)},e.update=function(e,t,r){if(e instanceof Te)return e.update(t,r),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){for(var r=e.getText(),n=0,i=[],o=0,a=je(t.map(Me),(function(e,t){var r=e.range.start.line-t.range.start.line;return 0===r?e.range.start.character-t.range.start.character:r}));o<a.length;o++){var s=a[o],u=e.offsetAt(s.range.start);if(u<n)throw new Error("Overlapping edit");u>n&&i.push(r.substring(n,u)),s.newText.length&&i.push(s.newText),n=e.offsetAt(s.range.end)}return i.push(r.substr(n)),i.join("")}}(Ce||(Ce={})),(Ie=we||(we={}))[Ie.Undefined=0]="Undefined",Ie[Ie.EnumValueMismatch=1]="EnumValueMismatch",Ie[Ie.UnexpectedEndOfComment=257]="UnexpectedEndOfComment",Ie[Ie.UnexpectedEndOfString=258]="UnexpectedEndOfString",Ie[Ie.UnexpectedEndOfNumber=259]="UnexpectedEndOfNumber",Ie[Ie.InvalidUnicode=260]="InvalidUnicode",Ie[Ie.InvalidEscapeCharacter=261]="InvalidEscapeCharacter",Ie[Ie.InvalidCharacter=262]="InvalidCharacter",Ie[Ie.PropertyExpected=513]="PropertyExpected",Ie[Ie.CommaExpected=514]="CommaExpected",Ie[Ie.ColonExpected=515]="ColonExpected",Ie[Ie.ValueExpected=516]="ValueExpected",Ie[Ie.CommaOrCloseBacketExpected=517]="CommaOrCloseBacketExpected",Ie[Ie.CommaOrCloseBraceExpected=518]="CommaOrCloseBraceExpected",Ie[Ie.TrailingComma=519]="TrailingComma",Ie[Ie.DuplicateKey=520]="DuplicateKey",Ie[Ie.CommentNotPermitted=521]="CommentNotPermitted",Ie[Ie.SchemaResolveError=768]="SchemaResolveError",function(e){e.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[z.Markdown,z.PlainText],commitCharactersSupport:!0}}}}}(Ae||(Ae={}));var Ve,Ne,Re,$e=(Ve=function(e,t){return(Ve=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)},function(e,t){function r(){this.constructor=e}Ve(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),Le=Fe(),De={"color-hex":{errorMessage:Le("colorHexFormatWarning","Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA."),pattern:/^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/},"date-time":{errorMessage:Le("dateTimeFormatWarning","String is not a RFC3339 date-time."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},date:{errorMessage:Le("dateFormatWarning","String is not a RFC3339 date."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i},time:{errorMessage:Le("timeFormatWarning","String is not a RFC3339 time."),pattern:/^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},email:{errorMessage:Le("emailFormatWarning","String is not an e-mail address."),pattern:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/}},We=function(){function e(e,t,r){void 0===r&&(r=0),this.offset=t,this.length=r,this.parent=e}return Object.defineProperty(e.prototype,"children",{get:function(){return[]},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return"type: "+this.type+" ("+this.offset+"/"+this.length+")"+(this.parent?" parent: {"+this.parent.toString()+"}":"")},e}();function Ue(e){return B(e)?e?{}:{not:{}}:e}$e((function(e,t){var r=Re.call(this,e,t)||this;return r.type="null",r.value=null,r}),Re=We),function(e){$e((function(t,r,n){var i=e.call(this,t,n)||this;return i.type="boolean",i.value=r,i}),e)}(We),function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.type="array",n.items=[],n}$e(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.items},enumerable:!1,configurable:!0})}(We),function(e){$e((function(t,r){var n=e.call(this,t,r)||this;return n.type="number",n.isInteger=!0,n.value=Number.NaN,n}),e)}(We),function(e){$e((function(t,r,n){var i=e.call(this,t,r,n)||this;return i.type="string",i.value="",i}),e)}(We),function(e){function t(t,r,n){var i=e.call(this,t,r)||this;return i.type="property",i.colonOffset=-1,i.keyNode=n,i}$e(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.valueNode?[this.keyNode,this.valueNode]:[this.keyNode]},enumerable:!1,configurable:!0})}(We),function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.type="object",n.properties=[],n}$e(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.properties},enumerable:!1,configurable:!0})}(We),function(e){e[e.Key=0]="Key",e[e.Enum=1]="Enum"}(Ne||(Ne={}));var qe=function(){function e(e,t){void 0===e&&(e=-1),this.focusOffset=e,this.exclude=t,this.schemas=[]}return e.prototype.add=function(e){this.schemas.push(e)},e.prototype.merge=function(e){Array.prototype.push.apply(this.schemas,e.schemas)},e.prototype.include=function(e){return(-1===this.focusOffset||ze(e,this.focusOffset))&&e!==this.exclude},e.prototype.newSub=function(){return new e(-1,this.exclude)},e}(),Be=function(){function e(){}return Object.defineProperty(e.prototype,"schemas",{get:function(){return[]},enumerable:!1,configurable:!0}),e.prototype.add=function(e){},e.prototype.merge=function(e){},e.prototype.include=function(e){return!0},e.prototype.newSub=function(){return this},e.instance=new e,e}(),Ke=function(){function e(){this.problems=[],this.propertiesMatches=0,this.propertiesValueMatches=0,this.primaryValueMatches=0,this.enumValueMatch=!1,this.enumValues=void 0}return e.prototype.hasProblems=function(){return!!this.problems.length},e.prototype.mergeAll=function(e){for(var t=0,r=e;t<r.length;t++){var n=r[t];this.merge(n)}},e.prototype.merge=function(e){this.problems=this.problems.concat(e.problems)},e.prototype.mergeEnumValues=function(e){if(!this.enumValueMatch&&!e.enumValueMatch&&this.enumValues&&e.enumValues){this.enumValues=this.enumValues.concat(e.enumValues);for(var t=0,r=this.problems;t<r.length;t++){var n=r[t];n.code===we.EnumValueMismatch&&(n.message=Le("enumWarning","Value is not accepted. Valid values: {0}.",this.enumValues.map((function(e){return JSON.stringify(e)})).join(", ")))}}},e.prototype.mergePropertyMatch=function(e){this.merge(e),this.propertiesMatches++,(e.enumValueMatch||!e.hasProblems()&&e.propertiesMatches)&&this.propertiesValueMatches++,e.enumValueMatch&&e.enumValues&&1===e.enumValues.length&&this.primaryValueMatches++},e.prototype.compare=function(e){var t=this.hasProblems();return t!==e.hasProblems()?t?-1:1:this.enumValueMatch!==e.enumValueMatch?e.enumValueMatch?-1:1:this.primaryValueMatches!==e.primaryValueMatches?this.primaryValueMatches-e.primaryValueMatches:this.propertiesValueMatches!==e.propertiesValueMatches?this.propertiesValueMatches-e.propertiesValueMatches:this.propertiesMatches-e.propertiesMatches},e}();function Je(e){return D(e)}function He(e){return L(e)}function ze(e,t,r){return void 0===r&&(r=!1),t>=e.offset&&t<e.offset+e.length||r&&t===e.offset+e.length}function Ge(e,t,r,n){if(e&&n.include(e)){var i=e;switch(i.type){case"object":!function(e,t,r,n){for(var i=Object.create(null),o=[],a=0,s=e.properties;a<s.length;a++)i[D=(g=s[a]).keyNode.value]=g.valueNode,o.push(D);if(Array.isArray(t.required))for(var u=0,c=t.required;u<c.length;u++)if(!i[w=c[u]]){var l=e.parent&&"property"===e.parent.type&&e.parent.keyNode,f=l?{offset:l.offset,length:l.length}:{offset:e.offset,length:1};r.problems.push({location:f,severity:x.Warning,message:Le("MissingRequiredPropWarning",'Missing property "{0}".',w)})}var h=function(e){for(var t=o.indexOf(e);t>=0;)o.splice(t,1),t=o.indexOf(e)};if(t.properties)for(var p=0,d=Object.keys(t.properties);p<d.length;p++){h(w=d[p]);var m=t.properties[w];if(O=i[w])if(B(m))if(m)r.propertiesMatches++,r.propertiesValueMatches++;else{var g=O.parent;r.problems.push({location:{offset:g.keyNode.offset,length:g.keyNode.length},severity:x.Warning,message:t.errorMessage||Le("DisallowedExtraPropWarning","Property {0} is not allowed.",w)})}else Ge(O,m,T=new Ke,n),r.mergePropertyMatch(T)}if(t.patternProperties)for(var v=0,y=Object.keys(t.patternProperties);v<y.length;v++)for(var b=y[v],S=new RegExp(b),k=0,C=o.slice(0);k<C.length;k++){var w=C[k];S.test(w)&&(h(w),(O=i[w])&&(B(m=t.patternProperties[b])?m?(r.propertiesMatches++,r.propertiesValueMatches++):(g=O.parent,r.problems.push({location:{offset:g.keyNode.offset,length:g.keyNode.length},severity:x.Warning,message:t.errorMessage||Le("DisallowedExtraPropWarning","Property {0} is not allowed.",w)})):(Ge(O,m,T=new Ke,n),r.mergePropertyMatch(T))))}if("object"==typeof t.additionalProperties){for(var A=0,I=o;A<I.length;A++)if(O=i[w=I[A]]){var T=new Ke;Ge(O,t.additionalProperties,T,n),r.mergePropertyMatch(T)}}else if(!1===t.additionalProperties&&o.length>0)for(var j=0,E=o;j<E.length;j++){var O;(O=i[w=E[j]])&&(g=O.parent,r.problems.push({location:{offset:g.keyNode.offset,length:g.keyNode.length},severity:x.Warning,message:t.errorMessage||Le("DisallowedExtraPropWarning","Property {0} is not allowed.",w)}))}if(U(t.maxProperties)&&e.properties.length>t.maxProperties&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("MaxPropWarning","Object has more properties than limit of {0}.",t.maxProperties)}),U(t.minProperties)&&e.properties.length<t.minProperties&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("MinPropWarning","Object has fewer properties than the required number of {0}",t.minProperties)}),t.dependencies)for(var M=0,P=Object.keys(t.dependencies);M<P.length;M++)if(i[D=P[M]]){var _=t.dependencies[D];if(Array.isArray(_))for(var F=0,V=_;F<V.length;F++){var N=V[F];i[N]?r.propertiesValueMatches++:r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("RequiredDependentPropWarning","Object is missing property {0} required by property {1}.",N,D)})}else(m=Ue(_))&&(Ge(e,m,T=new Ke,n),r.mergePropertyMatch(T))}var R=Ue(t.propertyNames);if(R)for(var $=0,L=e.properties;$<L.length;$++){var D;(D=L[$].keyNode)&&Ge(D,R,r,Be.instance)}}(i,t,r,n);break;case"array":!function(e,t,r,n){if(Array.isArray(t.items)){for(var i=t.items,o=0;o<i.length;o++){var a=Ue(i[o]),s=new Ke;(h=e.items[o])?(Ge(h,a,s,n),r.mergePropertyMatch(s)):e.items.length>=i.length&&r.propertiesValueMatches++}if(e.items.length>i.length)if("object"==typeof t.additionalItems)for(var u=i.length;u<e.items.length;u++)s=new Ke,Ge(e.items[u],t.additionalItems,s,n),r.mergePropertyMatch(s);else!1===t.additionalItems&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("additionalItemsWarning","Array has too many items according to schema. Expected {0} or fewer.",i.length)})}else{var c=Ue(t.items);if(c)for(var l=0,f=e.items;l<f.length;l++){var h;Ge(h=f[l],c,s=new Ke,n),r.mergePropertyMatch(s)}}var p=Ue(t.contains);if(p&&(e.items.some((function(e){var t=new Ke;return Ge(e,p,t,Be.instance),!t.hasProblems()}))||r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:t.errorMessage||Le("requiredItemMissingWarning","Array does not contain required item.")})),U(t.minItems)&&e.items.length<t.minItems&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("minItemsWarning","Array has too few items. Expected {0} or more.",t.minItems)}),U(t.maxItems)&&e.items.length>t.maxItems&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("maxItemsWarning","Array has too many items. Expected {0} or fewer.",t.maxItems)}),!0===t.uniqueItems){var d=Je(e);d.some((function(e,t){return t!==d.lastIndexOf(e)}))&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("uniqueItemsWarning","Array has duplicate items.")})}}(i,t,r,n);break;case"string":!function(e,t,r,n){if(U(t.minLength)&&e.value.length<t.minLength&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("minLengthWarning","String is shorter than the minimum length of {0}.",t.minLength)}),U(t.maxLength)&&e.value.length>t.maxLength&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("maxLengthWarning","String is longer than the maximum length of {0}.",t.maxLength)}),"string"==typeof t.pattern&&(new RegExp(t.pattern).test(e.value)||r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:t.patternErrorMessage||t.errorMessage||Le("patternWarning",'String does not match the pattern of "{0}".',t.pattern)})),t.format)switch(t.format){case"uri":case"uri-reference":var i=void 0;if(e.value){var o=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(e.value);o?o[2]||"uri"!==t.format||(i=Le("uriSchemeMissing","URI with a scheme is expected.")):i=Le("uriMissing","URI is expected.")}else i=Le("uriEmpty","URI expected.");i&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:t.patternErrorMessage||t.errorMessage||Le("uriFormatWarning","String is not a URI: {0}",i)});break;case"color-hex":case"date-time":case"date":case"time":case"email":var a=De[t.format];e.value&&a.pattern.exec(e.value)||r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:t.patternErrorMessage||t.errorMessage||a.errorMessage})}}(i,t,r);break;case"number":!function(e,t,r,n){var i=e.value;function o(e){var t,r=/^(-?\d+)(?:\.(\d+))?(?:e([-+]\d+))?$/.exec(e.toString());return r&&{value:Number(r[1]+(r[2]||"")),multiplier:((null===(t=r[2])||void 0===t?void 0:t.length)||0)-(parseInt(r[3])||0)}}if(U(t.multipleOf)){var a=-1;if(Number.isInteger(t.multipleOf))a=i%t.multipleOf;else{var s=o(t.multipleOf),u=o(i);if(s&&u){var c=Math.pow(10,Math.abs(u.multiplier-s.multiplier));u.multiplier<s.multiplier?u.value*=c:s.value*=c,a=u.value%s.value}}0!==a&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("multipleOfWarning","Value is not divisible by {0}.",t.multipleOf)})}function l(e,t){return U(t)?t:B(t)&&t?e:void 0}function f(e,t){if(!B(t)||!t)return e}var h=l(t.minimum,t.exclusiveMinimum);U(h)&&i<=h&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("exclusiveMinimumWarning","Value is below the exclusive minimum of {0}.",h)});var p=l(t.maximum,t.exclusiveMaximum);U(p)&&i>=p&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("exclusiveMaximumWarning","Value is above the exclusive maximum of {0}.",p)});var d=f(t.minimum,t.exclusiveMinimum);U(d)&&i<d&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("minimumWarning","Value is below the minimum of {0}.",d)});var m=f(t.maximum,t.exclusiveMaximum);U(m)&&i>m&&r.problems.push({location:{offset:e.offset,length:e.length},severity:x.Warning,message:Le("maximumWarning","Value is above the maximum of {0}.",m)})}(i,t,r);break;case"property":return Ge(i.valueNode,t,r,n)}!function(){function e(e){return i.type===e||"integer"===e&&"number"===i.type&&i.isInteger}if(Array.isArray(t.type)?t.type.some(e)||r.problems.push({location:{offset:i.offset,length:i.length},severity:x.Warning,message:t.errorMessage||Le("typeArrayMismatchWarning","Incorrect type. Expected one of {0}.",t.type.join(", "))}):t.type&&(e(t.type)||r.problems.push({location:{offset:i.offset,length:i.length},severity:x.Warning,message:t.errorMessage||Le("typeMismatchWarning",'Incorrect type. Expected "{0}".',t.type)})),Array.isArray(t.allOf))for(var o=0,a=t.allOf;o<a.length;o++){var s=a[o];Ge(i,Ue(s),r,n)}var u=Ue(t.not);if(u){var c=new Ke,l=n.newSub();Ge(i,u,c,l),c.hasProblems()||r.problems.push({location:{offset:i.offset,length:i.length},severity:x.Warning,message:Le("notSchemaWarning","Matches a schema that is not allowed.")});for(var f=0,h=l.schemas;f<h.length;f++){var p=h[f];p.inverted=!p.inverted,n.add(p)}}var d=function(e,t){for(var o=[],a=void 0,s=0,u=e;s<u.length;s++){var c=Ue(u[s]),l=new Ke,f=n.newSub();if(Ge(i,c,l,f),l.hasProblems()||o.push(c),a)if(t||l.hasProblems()||a.validationResult.hasProblems()){var h=l.compare(a.validationResult);h>0?a={schema:c,validationResult:l,matchingSchemas:f}:0===h&&(a.matchingSchemas.merge(f),a.validationResult.mergeEnumValues(l))}else a.matchingSchemas.merge(f),a.validationResult.propertiesMatches+=l.propertiesMatches,a.validationResult.propertiesValueMatches+=l.propertiesValueMatches;else a={schema:c,validationResult:l,matchingSchemas:f}}return o.length>1&&t&&r.problems.push({location:{offset:i.offset,length:1},severity:x.Warning,message:Le("oneOfWarning","Matches multiple schemas when only one must validate.")}),a&&(r.merge(a.validationResult),r.propertiesMatches+=a.validationResult.propertiesMatches,r.propertiesValueMatches+=a.validationResult.propertiesValueMatches,n.merge(a.matchingSchemas)),o.length};Array.isArray(t.anyOf)&&d(t.anyOf,!1),Array.isArray(t.oneOf)&&d(t.oneOf,!0);var m=function(e){var t=new Ke,o=n.newSub();Ge(i,Ue(e),t,o),r.merge(t),r.propertiesMatches+=t.propertiesMatches,r.propertiesValueMatches+=t.propertiesValueMatches,n.merge(o)},g=Ue(t.if);if(g&&function(e,t,r){var o=Ue(e),a=new Ke,s=n.newSub();Ge(i,o,a,s),n.merge(s),a.hasProblems()?r&&m(r):t&&m(t)}(g,Ue(t.then),Ue(t.else)),Array.isArray(t.enum)){for(var v=Je(i),y=!1,b=0,S=t.enum;b<S.length;b++){if(W(v,S[b])){y=!0;break}}r.enumValues=t.enum,r.enumValueMatch=y,y||r.problems.push({location:{offset:i.offset,length:i.length},severity:x.Warning,code:we.EnumValueMismatch,message:t.errorMessage||Le("enumWarning","Value is not accepted. Valid values: {0}.",t.enum.map((function(e){return JSON.stringify(e)})).join(", "))})}q(t.const)&&(W(v=Je(i),t.const)?r.enumValueMatch=!0:(r.problems.push({location:{offset:i.offset,length:i.length},severity:x.Warning,code:we.EnumValueMismatch,message:t.errorMessage||Le("constWarning","Value must be {0}.",JSON.stringify(t.const))}),r.enumValueMatch=!1),r.enumValues=[t.const]),t.deprecationMessage&&i.parent&&r.problems.push({location:{offset:i.parent.offset,length:i.parent.length},severity:x.Warning,message:t.deprecationMessage})}(),n.add({node:i,schema:t})}}function Ze(e,t,r){if(null!==e&&"object"==typeof e){var n=t+"\t";if(Array.isArray(e)){if(0===e.length)return"[]";for(var i="[\n",o=0;o<e.length;o++)i+=n+Ze(e[o],n,r),o<e.length-1&&(i+=","),i+="\n";return i+(t+"]")}var a=Object.keys(e);if(0===a.length)return"{}";for(i="{\n",o=0;o<a.length;o++){var s=a[o];i+=n+JSON.stringify(s)+": "+Ze(e[s],n,r),o<a.length-1&&(i+=","),i+="\n"}return i+(t+"}")}return r(e)}function Xe(e,t){var r=e.length-t.length;return r>0?e.lastIndexOf(t)===r:0===r&&e===t}function Qe(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}!function(){function e(e,t,r){void 0===t&&(t=[]),void 0===r&&(r=[]),this.root=e,this.syntaxErrors=t,this.comments=r}e.prototype.getNodeFromOffset=function(e,t){if(void 0===t&&(t=!1),this.root)return $(this.root,e,t)},e.prototype.visit=function(e){if(this.root){var t=function(r){var n=e(r),i=r.children;if(Array.isArray(i))for(var o=0;o<i.length&&n;o++)n=t(i[o]);return n};t(this.root)}},e.prototype.validate=function(e,t){if(this.root&&t){var r=new Ke;return Ge(this.root,t,r,Be.instance),r.problems.map((function(t){var r=f.create(e.positionAt(t.location.offset),e.positionAt(t.location.offset+t.location.length));return k.create(r,t.message,t.severity,t.code)}))}},e.prototype.getMatchingSchemas=function(e,t,r){void 0===t&&(t=-1);var n=new qe(t,r);return this.root&&e&&Ge(this.root,e,new Ke,n),n.schemas}}();var Ye=Fe();!function(){function e(e,t,r,n){void 0===t&&(t=[]),void 0===r&&(r=Promise),void 0===n&&(n={}),this.schemaService=e,this.contributions=t,this.promiseConstructor=r,this.clientCapabilities=n}e.prototype.doResolve=function(e){for(var t=this.contributions.length-1;t>=0;t--){var r=this.contributions[t].resolveCompletion;if(r){var n=r(e);if(n)return n}}return this.promiseConstructor.resolve(e)},e.prototype.doComplete=function(e,t,r){var n=this,i={items:[],isIncomplete:!1},o=e.getText(),a=e.offsetAt(t),s=r.getNodeFromOffset(a,!0);if(this.isInComment(e,s?s.offset:0,a))return Promise.resolve(i);if(s&&a===s.offset+s.length&&a>0){var u=o[a-1];("object"===s.type&&"}"===u||"array"===s.type&&"]"===u)&&(s=s.parent)}var c,l=this.getCurrentWord(e,a);if(!s||"string"!==s.type&&"number"!==s.type&&"boolean"!==s.type&&"null"!==s.type){var h=a-l.length;h>0&&'"'===o[h-1]&&h--,c=f.create(e.positionAt(h),t)}else c=f.create(e.positionAt(s.offset),e.positionAt(s.offset+s.length));var p={},d={add:function(e){var t=e.label,r=p[t];if(r)r.documentation||(r.documentation=e.documentation);else{if((t=t.replace(/[\n]/g,"↵")).length>60){var n=t.substr(0,57).trim()+"...";p[n]||(t=n)}c&&void 0!==e.insertText&&(e.textEdit=w.replace(c,e.insertText)),e.label=t,p[t]=e,i.items.push(e)}},setAsIncomplete:function(){i.isIncomplete=!0},error:function(e){console.error(e)},log:function(e){console.log(e)},getNumberOfProposals:function(){return i.items.length}};return this.schemaService.getSchemaForResource(e.uri,r).then((function(t){var u=[],f=!0,h="",m=void 0;if(s&&"string"===s.type){var g=s.parent;g&&"property"===g.type&&g.keyNode===s&&(f=!g.valueNode,m=g,h=o.substr(s.offset+1,s.length-2),g&&(s=g.parent))}if(s&&"object"===s.type){if(s.offset===a)return i;s.properties.forEach((function(e){m&&m===e||(p[e.keyNode.value]=Y.create("__"))}));var v="";f&&(v=n.evaluateSeparatorAfter(e,e.offsetAt(c.end))),t?n.getPropertyCompletions(t,r,s,f,v,d):n.getSchemaLessPropertyCompletions(r,s,h,d);var y=He(s);n.contributions.forEach((function(t){var r=t.collectPropertyCompletions(e.uri,y,l,f,""===v,d);r&&u.push(r)})),!t&&l.length>0&&'"'!==o.charAt(a-l.length-1)&&(d.add({kind:Z.Property,label:n.getLabelForValue(l),insertText:n.getInsertTextForProperty(l,void 0,!1,v),insertTextFormat:X.Snippet,documentation:""}),d.setAsIncomplete())}var b={};return t?n.getValueCompletions(t,r,s,a,e,d,b):n.getSchemaLessValueCompletions(r,s,a,e,d),n.contributions.length>0&&n.getContributedValueCompletions(r,s,a,e,d,u),n.promiseConstructor.all(u).then((function(){if(0===d.getNumberOfProposals()){var t=a;!s||"string"!==s.type&&"number"!==s.type&&"boolean"!==s.type&&"null"!==s.type||(t=s.offset+s.length);var r=n.evaluateSeparatorAfter(e,t);n.addFillerValueCompletions(b,r,d)}return i}))}))},e.prototype.getPropertyCompletions=function(e,t,r,n,i,o){var a=this;t.getMatchingSchemas(e.schema,r.offset).forEach((function(e){if(e.node===r&&!e.inverted){var t=e.schema.properties;t&&Object.keys(t).forEach((function(e){var r=t[e];if("object"==typeof r&&!r.deprecationMessage&&!r.doNotSuggest){var s={kind:Z.Property,label:e,insertText:a.getInsertTextForProperty(e,r,n,i),insertTextFormat:X.Snippet,filterText:a.getFilterTextForValue(e),documentation:a.fromMarkup(r.markdownDescription)||r.description||""};void 0!==r.suggestSortText&&(s.sortText=r.suggestSortText),s.insertText&&Xe(s.insertText,"$1"+i)&&(s.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(s)}}));var s=e.schema.propertyNames;if("object"==typeof s&&!s.deprecationMessage&&!s.doNotSuggest){var u=function(e,t){void 0===t&&(t=void 0);var r={kind:Z.Property,label:e,insertText:a.getInsertTextForProperty(e,void 0,n,i),insertTextFormat:X.Snippet,filterText:a.getFilterTextForValue(e),documentation:t||a.fromMarkup(s.markdownDescription)||s.description||""};void 0!==s.suggestSortText&&(r.sortText=s.suggestSortText),r.insertText&&Xe(r.insertText,"$1"+i)&&(r.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(r)};if(s.enum)for(var c=0;c<s.enum.length;c++){var l=void 0;s.markdownEnumDescriptions&&c<s.markdownEnumDescriptions.length?l=a.fromMarkup(s.markdownEnumDescriptions[c]):s.enumDescriptions&&c<s.enumDescriptions.length&&(l=s.enumDescriptions[c]),u(s.enum[c],l)}s.const&&u(s.const)}}}))},e.prototype.getSchemaLessPropertyCompletions=function(e,t,r,n){var i=this,o=function(e){e.properties.forEach((function(e){var t=e.keyNode.value;n.add({kind:Z.Property,label:t,insertText:i.getInsertTextForValue(t,""),insertTextFormat:X.Snippet,filterText:i.getFilterTextForValue(t),documentation:""})}))};if(t.parent)if("property"===t.parent.type){var a=t.parent.keyNode.value;e.visit((function(e){return"property"===e.type&&e!==t.parent&&e.keyNode.value===a&&e.valueNode&&"object"===e.valueNode.type&&o(e.valueNode),!0}))}else"array"===t.parent.type&&t.parent.items.forEach((function(e){"object"===e.type&&e!==t&&o(e)}));else"object"===t.type&&n.add({kind:Z.Property,label:"$schema",insertText:this.getInsertTextForProperty("$schema",void 0,!0,""),insertTextFormat:X.Snippet,documentation:"",filterText:this.getFilterTextForValue("$schema")})},e.prototype.getSchemaLessValueCompletions=function(e,t,r,n,i){var o=this,a=r;if(!t||"string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(a=t.offset+t.length,t=t.parent),!t)return i.add({kind:this.getSuggestionKind("object"),label:"Empty object",insertText:this.getInsertTextForValue({},""),insertTextFormat:X.Snippet,documentation:""}),void i.add({kind:this.getSuggestionKind("array"),label:"Empty array",insertText:this.getInsertTextForValue([],""),insertTextFormat:X.Snippet,documentation:""});var s=this.evaluateSeparatorAfter(n,a),u=function(e){e.parent&&!ze(e.parent,r,!0)&&i.add({kind:o.getSuggestionKind(e.type),label:o.getLabelTextForMatchingNode(e,n),insertText:o.getInsertTextForMatchingNode(e,n,s),insertTextFormat:X.Snippet,documentation:""}),"boolean"===e.type&&o.addBooleanValueCompletion(!e.value,s,i)};if("property"===t.type&&r>(t.colonOffset||0)){var c=t.valueNode;if(c&&(r>c.offset+c.length||"object"===c.type||"array"===c.type))return;var l=t.keyNode.value;e.visit((function(e){return"property"===e.type&&e.keyNode.value===l&&e.valueNode&&u(e.valueNode),!0})),"$schema"===l&&t.parent&&!t.parent.parent&&this.addDollarSchemaCompletions(s,i)}if("array"===t.type)if(t.parent&&"property"===t.parent.type){var f=t.parent.keyNode.value;e.visit((function(e){return"property"===e.type&&e.keyNode.value===f&&e.valueNode&&"array"===e.valueNode.type&&e.valueNode.items.forEach(u),!0}))}else t.items.forEach(u)},e.prototype.getValueCompletions=function(e,t,r,n,i,o,a){var s=n,u=void 0,c=void 0;if(!r||"string"!==r.type&&"number"!==r.type&&"boolean"!==r.type&&"null"!==r.type||(s=r.offset+r.length,c=r,r=r.parent),r){if("property"===r.type&&n>(r.colonOffset||0)){var l=r.valueNode;if(l&&n>l.offset+l.length)return;u=r.keyNode.value,r=r.parent}if(r&&(void 0!==u||"array"===r.type)){for(var f=this.evaluateSeparatorAfter(i,s),h=0,p=t.getMatchingSchemas(e.schema,r.offset,c);h<p.length;h++){var d=p[h];if(d.node===r&&!d.inverted&&d.schema){if("array"===r.type&&d.schema.items)if(Array.isArray(d.schema.items)){var m=this.findItemAtOffset(r,i,n);m<d.schema.items.length&&this.addSchemaValueCompletions(d.schema.items[m],f,o,a)}else this.addSchemaValueCompletions(d.schema.items,f,o,a);if(void 0!==u){var g=!1;if(d.schema.properties&&(x=d.schema.properties[u])&&(g=!0,this.addSchemaValueCompletions(x,f,o,a)),d.schema.patternProperties&&!g)for(var v=0,y=Object.keys(d.schema.patternProperties);v<y.length;v++){var b=y[v];if(new RegExp(b).test(u)){g=!0;var x=d.schema.patternProperties[b];this.addSchemaValueCompletions(x,f,o,a)}}d.schema.additionalProperties&&!g&&(x=d.schema.additionalProperties,this.addSchemaValueCompletions(x,f,o,a))}}}"$schema"!==u||r.parent||this.addDollarSchemaCompletions(f,o),a.boolean&&(this.addBooleanValueCompletion(!0,f,o),this.addBooleanValueCompletion(!1,f,o)),a.null&&this.addNullValueCompletion(f,o)}}else this.addSchemaValueCompletions(e.schema,"",o,a)},e.prototype.getContributedValueCompletions=function(e,t,r,n,i,o){if(t){if("string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(t=t.parent),t&&"property"===t.type&&r>(t.colonOffset||0)){var a=t.keyNode.value,s=t.valueNode;if((!s||r<=s.offset+s.length)&&t.parent){var u=He(t.parent);this.contributions.forEach((function(e){var t=e.collectValueCompletions(n.uri,u,a,i);t&&o.push(t)}))}}}else this.contributions.forEach((function(e){var t=e.collectDefaultCompletions(n.uri,i);t&&o.push(t)}))},e.prototype.addSchemaValueCompletions=function(e,t,r,n){var i=this;"object"==typeof e&&(this.addEnumValueCompletions(e,t,r),this.addDefaultValueCompletions(e,t,r),this.collectTypes(e,n),Array.isArray(e.allOf)&&e.allOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,r,n)})),Array.isArray(e.anyOf)&&e.anyOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,r,n)})),Array.isArray(e.oneOf)&&e.oneOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,r,n)})))},e.prototype.addDefaultValueCompletions=function(e,t,r,n){var i=this;void 0===n&&(n=0);var o=!1;if(q(e.default)){for(var a=e.type,s=e.default,u=n;u>0;u--)s=[s],a="array";r.add({kind:this.getSuggestionKind(a),label:this.getLabelForValue(s),insertText:this.getInsertTextForValue(s,t),insertTextFormat:X.Snippet,detail:Ye("json.suggest.default","Default value")}),o=!0}Array.isArray(e.examples)&&e.examples.forEach((function(a){for(var s=e.type,u=a,c=n;c>0;c--)u=[u],s="array";r.add({kind:i.getSuggestionKind(s),label:i.getLabelForValue(u),insertText:i.getInsertTextForValue(u,t),insertTextFormat:X.Snippet}),o=!0})),Array.isArray(e.defaultSnippets)&&e.defaultSnippets.forEach((function(a){var s,u,c=e.type,l=a.body,f=a.label;if(q(l)){e.type;for(var h=n;h>0;h--)l=[l];s=i.getInsertTextForSnippetValue(l,t),u=i.getFilterTextForSnippetValue(l),f=f||i.getLabelForSnippetValue(l)}else{if("string"!=typeof a.bodyText)return;var p="",d="",m="";for(h=n;h>0;h--)p=p+m+"[\n",d=d+"\n"+m+"]",m+="\t",c="array";s=p+m+a.bodyText.split("\n").join("\n"+m)+d+t,f=f||s,u=s.replace(/[\n]/g,"")}r.add({kind:i.getSuggestionKind(c),label:f,documentation:i.fromMarkup(a.markdownDescription)||a.description,insertText:s,insertTextFormat:X.Snippet,filterText:u}),o=!0})),!o&&"object"==typeof e.items&&!Array.isArray(e.items)&&n<5&&this.addDefaultValueCompletions(e.items,t,r,n+1)},e.prototype.addEnumValueCompletions=function(e,t,r){if(q(e.const)&&r.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(e.const),insertText:this.getInsertTextForValue(e.const,t),insertTextFormat:X.Snippet,documentation:this.fromMarkup(e.markdownDescription)||e.description}),Array.isArray(e.enum))for(var n=0,i=e.enum.length;n<i;n++){var o=e.enum[n],a=this.fromMarkup(e.markdownDescription)||e.description;e.markdownEnumDescriptions&&n<e.markdownEnumDescriptions.length&&this.doesSupportMarkdown()?a=this.fromMarkup(e.markdownEnumDescriptions[n]):e.enumDescriptions&&n<e.enumDescriptions.length&&(a=e.enumDescriptions[n]),r.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(o),insertText:this.getInsertTextForValue(o,t),insertTextFormat:X.Snippet,documentation:a})}},e.prototype.collectTypes=function(e,t){if(!Array.isArray(e.enum)&&!q(e.const)){var r=e.type;Array.isArray(r)?r.forEach((function(e){return t[e]=!0})):r&&(t[r]=!0)}},e.prototype.addFillerValueCompletions=function(e,t,r){e.object&&r.add({kind:this.getSuggestionKind("object"),label:"{}",insertText:this.getInsertTextForGuessedValue({},t),insertTextFormat:X.Snippet,detail:Ye("defaults.object","New object"),documentation:""}),e.array&&r.add({kind:this.getSuggestionKind("array"),label:"[]",insertText:this.getInsertTextForGuessedValue([],t),insertTextFormat:X.Snippet,detail:Ye("defaults.array","New array"),documentation:""})},e.prototype.addBooleanValueCompletion=function(e,t,r){r.add({kind:this.getSuggestionKind("boolean"),label:e?"true":"false",insertText:this.getInsertTextForValue(e,t),insertTextFormat:X.Snippet,documentation:""})},e.prototype.addNullValueCompletion=function(e,t){t.add({kind:this.getSuggestionKind("null"),label:"null",insertText:"null"+e,insertTextFormat:X.Snippet,documentation:""})},e.prototype.addDollarSchemaCompletions=function(e,t){var r=this;this.schemaService.getRegisteredSchemaIds((function(e){return"http"===e||"https"===e})).forEach((function(n){return t.add({kind:Z.Module,label:r.getLabelForValue(n),filterText:r.getFilterTextForValue(n),insertText:r.getInsertTextForValue(n,e),insertTextFormat:X.Snippet,documentation:""})}))},e.prototype.getLabelForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getLabelForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getInsertTextForPlainText=function(e){return e.replace(/[\\\$\}]/g,"\\$&")},e.prototype.getInsertTextForValue=function(e,t){var r=JSON.stringify(e,null,"\t");return"{}"===r?"{$1}"+t:"[]"===r?"[$1]"+t:this.getInsertTextForPlainText(r+t)},e.prototype.getInsertTextForSnippetValue=function(e,t){return Ze(e,"",(function(e){return"string"==typeof e&&"^"===e[0]?e.substr(1):JSON.stringify(e)}))+t},e.prototype.getInsertTextForGuessedValue=function(e,t){switch(typeof e){case"object":return null===e?"${1:null}"+t:this.getInsertTextForValue(e,t);case"string":var r=JSON.stringify(e);return r=r.substr(1,r.length-2),'"${1:'+(r=this.getInsertTextForPlainText(r))+'}"'+t;case"number":case"boolean":return"${1:"+JSON.stringify(e)+"}"+t}return this.getInsertTextForValue(e,t)},e.prototype.getSuggestionKind=function(e){if(Array.isArray(e)){var t=e;e=t.length>0?t[0]:void 0}if(!e)return Z.Value;switch(e){case"string":return Z.Value;case"object":return Z.Module;case"property":return Z.Property;default:return Z.Value}},e.prototype.getLabelTextForMatchingNode=function(e,t){switch(e.type){case"array":return"[]";case"object":return"{}";default:return t.getText().substr(e.offset,e.length)}},e.prototype.getInsertTextForMatchingNode=function(e,t,r){switch(e.type){case"array":return this.getInsertTextForValue([],r);case"object":return this.getInsertTextForValue({},r);default:var n=t.getText().substr(e.offset,e.length)+r;return this.getInsertTextForPlainText(n)}},e.prototype.getInsertTextForProperty=function(e,t,r,n){var i=this.getInsertTextForValue(e,"");if(!r)return i;var o,a=i+": ",s=0;if(t){if(Array.isArray(t.defaultSnippets)){if(1===t.defaultSnippets.length){var u=t.defaultSnippets[0].body;q(u)&&(o=this.getInsertTextForSnippetValue(u,""))}s+=t.defaultSnippets.length}if(t.enum&&(o||1!==t.enum.length||(o=this.getInsertTextForGuessedValue(t.enum[0],"")),s+=t.enum.length),q(t.default)&&(o||(o=this.getInsertTextForGuessedValue(t.default,"")),s++),Array.isArray(t.examples)&&t.examples.length&&(o||(o=this.getInsertTextForGuessedValue(t.examples[0],"")),s+=t.examples.length),0===s){var c=Array.isArray(t.type)?t.type[0]:t.type;switch(c||(t.properties?c="object":t.items&&(c="array")),c){case"boolean":o="$1";break;case"string":o='"$1"';break;case"object":o="{$1}";break;case"array":o="[$1]";break;case"number":case"integer":o="${1:0}";break;case"null":o="${1:null}";break;default:return i}}}return(!o||s>1)&&(o="$1"),a+o+n},e.prototype.getCurrentWord=function(e,t){for(var r=t-1,n=e.getText();r>=0&&-1===' \t\n\r\v":{[,]}'.indexOf(n.charAt(r));)r--;return n.substring(r+1,t)},e.prototype.evaluateSeparatorAfter=function(e,t){var r=N(e.getText(),!0);switch(r.setPosition(t),r.scan()){case 5:case 2:case 4:case 17:return"";default:return","}},e.prototype.findItemAtOffset=function(e,t,r){for(var n=N(t.getText(),!0),i=e.items,o=i.length-1;o>=0;o--){var a=i[o];if(r>a.offset+a.length)return n.setPosition(a.offset+a.length),5===n.scan()&&r>=n.getTokenOffset()+n.getTokenLength()?o+1:o;if(r>=a.offset)return o}return 0},e.prototype.isInComment=function(e,t,r){var n=N(e.getText(),!1);n.setPosition(t);for(var i=n.scan();17!==i&&n.getTokenOffset()+n.getTokenLength()<r;)i=n.scan();return(12===i||13===i)&&n.getTokenOffset()<=r},e.prototype.fromMarkup=function(e){if(e&&this.doesSupportMarkdown())return{kind:z.Markdown,value:e}},e.prototype.doesSupportMarkdown=function(){if(!q(this.supportsMarkdown)){var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsMarkdown=e&&e.completionItem&&Array.isArray(e.completionItem.documentationFormat)&&-1!==e.completionItem.documentationFormat.indexOf(z.Markdown)}return this.supportsMarkdown},e.prototype.doesSupportsCommitCharacters=function(){if(!q(this.supportsCommitCharacters)){var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsCommitCharacters=e&&e.completionItem&&!!e.completionItem.commitCharactersSupport}return this.supportsCommitCharacters}}();var et,tt,rt=function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();if("object"==typeof process)tt="win32"===process.platform;else if("object"==typeof navigator){var nt=navigator.userAgent;tt=nt.indexOf("Windows")>=0}var it=/^\w[\w\d+.-]*$/,ot=/^\//,at=/^\/\//,st="",ut="/",ct=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,lt=function(){function e(e,t,r,n,i,o){void 0===o&&(o=!1),"object"==typeof e?(this.scheme=e.scheme||st,this.authority=e.authority||st,this.path=e.path||st,this.query=e.query||st,this.fragment=e.fragment||st):(this.scheme=function(e,t){return e||t?e:"file"}(e,o),this.authority=t||st,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==ut&&(t=ut+t):t=ut}return t}(this.scheme,r||st),this.query=n||st,this.fragment=i||st,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!it.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!ot.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(at.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return gt(this,!1)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,r=e.authority,n=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=st),void 0===r?r=this.authority:null===r&&(r=st),void 0===n?n=this.path:null===n&&(n=st),void 0===i?i=this.query:null===i&&(i=st),void 0===o?o=this.fragment:null===o&&(o=st),t===this.scheme&&r===this.authority&&n===this.path&&i===this.query&&o===this.fragment?this:new ht(t,r,n,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var r=ct.exec(e);return r?new ht(r[2]||st,xt(r[4]||st),xt(r[5]||st),xt(r[7]||st),xt(r[9]||st),t):new ht(st,st,st,st,st)},e.file=function(e){var t=st;if(tt&&(e=e.replace(/\\/g,ut)),e[0]===ut&&e[1]===ut){var r=e.indexOf(ut,2);-1===r?(t=e.substring(2),e=ut):(t=e.substring(2,r),e=e.substring(r)||ut)}return new ht("file",t,e,st,st)},e.from=function(e){return new ht(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),vt(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var r=new ht(t);return r._formatted=t.external,r._fsPath=t._sep===ft?t.fsPath:null,r}return t},e}(),ft=tt?1:void 0,ht=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return rt(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=gt(this,!1)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?vt(this,!0):(this._formatted||(this._formatted=vt(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=ft),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(lt),pt=((et={})[58]="%3A",et[47]="%2F",et[63]="%3F",et[35]="%23",et[91]="%5B",et[93]="%5D",et[64]="%40",et[33]="%21",et[36]="%24",et[38]="%26",et[39]="%27",et[40]="%28",et[41]="%29",et[42]="%2A",et[43]="%2B",et[44]="%2C",et[59]="%3B",et[61]="%3D",et[32]="%20",et);function dt(e,t){for(var r=void 0,n=-1,i=0;i<e.length;i++){var o=e.charCodeAt(i);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==n&&(r+=encodeURIComponent(e.substring(n,i)),n=-1),void 0!==r&&(r+=e.charAt(i));else{void 0===r&&(r=e.substr(0,i));var a=pt[o];void 0!==a?(-1!==n&&(r+=encodeURIComponent(e.substring(n,i)),n=-1),r+=a):-1===n&&(n=i)}}return-1!==n&&(r+=encodeURIComponent(e.substring(n))),void 0!==r?r:e}function mt(e){for(var t=void 0,r=0;r<e.length;r++){var n=e.charCodeAt(r);35===n||63===n?(void 0===t&&(t=e.substr(0,r)),t+=pt[n]):void 0!==t&&(t+=e[r])}return void 0!==t?t:e}function gt(e,t){var r;return r=e.authority&&e.path.length>1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,tt&&(r=r.replace(/\//g,"\\")),r}function vt(e,t){var r=t?mt:dt,n="",i=e.scheme,o=e.authority,a=e.path,s=e.query,u=e.fragment;if(i&&(n+=i,n+=":"),(o||"file"===i)&&(n+=ut,n+=ut),o){var c=o.indexOf("@");if(-1!==c){var l=o.substr(0,c);o=o.substr(c+1),-1===(c=l.indexOf(":"))?n+=r(l,!1):(n+=r(l.substr(0,c),!1),n+=":",n+=r(l.substr(c+1),!1)),n+="@"}-1===(c=(o=o.toLowerCase()).indexOf(":"))?n+=r(o,!1):(n+=r(o.substr(0,c),!1),n+=o.substr(c))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2))(f=a.charCodeAt(1))>=65&&f<=90&&(a="/"+String.fromCharCode(f+32)+":"+a.substr(3));else if(a.length>=2&&58===a.charCodeAt(1)){var f;(f=a.charCodeAt(0))>=65&&f<=90&&(a=String.fromCharCode(f+32)+":"+a.substr(2))}n+=r(a,!0)}return s&&(n+="?",n+=r(s,!1)),u&&(n+="#",n+=t?u:dt(u,!1)),n}function yt(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+yt(e.substr(3)):e}}var bt=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function xt(e){return e.match(bt)?e.replace(bt,(function(e){return yt(e)})):e}var St=Fe(),kt=function(){function e(e,t){this.patternRegExps=[],this.isInclude=[];try{for(var r=0,n=e;r<n.length;r++){var i=n[r],o="!"!==i[0];o||(i=i.substring(1)),this.patternRegExps.push(new RegExp(Qe(i)+"$")),this.isInclude.push(o)}this.uris=t}catch(e){this.patternRegExps.length=0,this.isInclude.length=0,this.uris=[]}}return e.prototype.matchesPattern=function(e){for(var t=!1,r=0;r<this.patternRegExps.length;r++)this.patternRegExps[r].test(e)&&(t=this.isInclude[r]);return t},e.prototype.getURIs=function(){return this.uris},e}(),Ct=function(){function e(e,t,r){this.service=e,this.url=t,this.dependencies={},r&&(this.unresolvedSchema=this.service.promise.resolve(new wt(r)))}return e.prototype.getUnresolvedSchema=function(){return this.unresolvedSchema||(this.unresolvedSchema=this.service.loadSchema(this.url)),this.unresolvedSchema},e.prototype.getResolvedSchema=function(){var e=this;return this.resolvedSchema||(this.resolvedSchema=this.getUnresolvedSchema().then((function(t){return e.service.resolveSchemaContent(t,e.url,e.dependencies)}))),this.resolvedSchema},e.prototype.clearSchema=function(){this.resolvedSchema=void 0,this.unresolvedSchema=void 0,this.dependencies={}},e}(),wt=function(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t},At=function(){function e(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t}return e.prototype.getSection=function(e){var t=this.getSectionRecursive(e,this.schema);if(t)return Ue(t)},e.prototype.getSectionRecursive=function(e,t){if(!t||"boolean"==typeof t||0===e.length)return t;var r=e.shift();if(t.properties&&(t.properties[r],1))return this.getSectionRecursive(e,t.properties[r]);if(t.patternProperties)for(var n=0,i=Object.keys(t.patternProperties);n<i.length;n++){var o=i[n];if(new RegExp(o).test(r))return this.getSectionRecursive(e,t.patternProperties[o])}else{if("object"==typeof t.additionalProperties)return this.getSectionRecursive(e,t.additionalProperties);if(r.match("[0-9]+"))if(Array.isArray(t.items)){var a=parseInt(r,10);if(!isNaN(a)&&t.items[a])return this.getSectionRecursive(e,t.items[a])}else if(t.items)return this.getSectionRecursive(e,t.items)}},e}(),It=(function(){function e(e,t,r){this.contextService=t,this.requestService=e,this.promiseConstructor=r||Promise,this.callOnDispose=[],this.contributionSchemas={},this.contributionAssociations=[],this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={}}e.prototype.getRegisteredSchemaIds=function(e){return Object.keys(this.registeredSchemasIds).filter((function(t){var r=lt.parse(t).scheme;return"schemaservice"!==r&&(!e||e(r))}))},Object.defineProperty(e.prototype,"promise",{get:function(){return this.promiseConstructor},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(;this.callOnDispose.length>0;)this.callOnDispose.pop()()},e.prototype.onResourceChange=function(e){for(var t=this,r=!1,n=[e=Tt(e)],i=Object.keys(this.schemasById).map((function(e){return t.schemasById[e]}));n.length;)for(var o=n.pop(),a=0;a<i.length;a++){var s=i[a];s&&(s.url===o||s.dependencies[o])&&(s.url!==o&&n.push(s.url),s.clearSchema(),i[a]=void 0,r=!0)}return r},e.prototype.setSchemaContributions=function(e){if(e.schemas){var t=e.schemas;for(var r in t){var n=Tt(r);this.contributionSchemas[n]=this.addSchemaHandle(n,t[r])}}if(Array.isArray(e.schemaAssociations))for(var i=0,o=e.schemaAssociations;i<o.length;i++){var a=o[i],s=a.uris.map(Tt),u=this.addFilePatternAssociation(a.pattern,s);this.contributionAssociations.push(u)}},e.prototype.addSchemaHandle=function(e,t){var r=new Ct(this,e,t);return this.schemasById[e]=r,r},e.prototype.getOrAddSchemaHandle=function(e,t){return this.schemasById[e]||this.addSchemaHandle(e,t)},e.prototype.addFilePatternAssociation=function(e,t){var r=new kt(e,t);return this.filePatternAssociations.push(r),r},e.prototype.registerExternalSchema=function(e,t,r){var n=Tt(e);return this.registeredSchemasIds[n]=!0,this.cachedSchemaForResource=void 0,t&&this.addFilePatternAssociation(t,[e]),r?this.addSchemaHandle(n,r):this.getOrAddSchemaHandle(n)},e.prototype.clearExternalSchemas=function(){for(var e in this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={},this.cachedSchemaForResource=void 0,this.contributionSchemas)this.schemasById[e]=this.contributionSchemas[e],this.registeredSchemasIds[e]=!0;for(var t=0,r=this.contributionAssociations;t<r.length;t++){var n=r[t];this.filePatternAssociations.push(n)}},e.prototype.getResolvedSchema=function(e){var t=Tt(e),r=this.schemasById[t];return r?r.getResolvedSchema():this.promise.resolve(void 0)},e.prototype.loadSchema=function(e){if(!this.requestService){var t=St("json.schema.norequestservice","Unable to load schema from '{0}'. No schema request service available",jt(e));return this.promise.resolve(new wt({},[t]))}return this.requestService(e).then((function(t){if(!t){var r=St("json.schema.nocontent","Unable to load schema from '{0}': No content.",jt(e));return new wt({},[r])}var n,i=[];n=R(t,i);var o=i.length?[St("json.schema.invalidFormat","Unable to parse content from '{0}': Parse error at offset {1}.",jt(e),i[0].offset)]:[];return new wt(n,o)}),(function(t){var r=t.toString(),n=t.toString().split("Error: ");return n.length>1&&(r=n[1]),Xe(r,".")&&(r=r.substr(0,r.length-1)),new wt({},[St("json.schema.nocontent","Unable to load schema from '{0}': {1}.",jt(e),r)])}))},e.prototype.resolveSchemaContent=function(e,t,r){var n=this,i=e.errors.slice(0),o=e.schema;if(o.$schema){var a=Tt(o.$schema);if("http://json-schema.org/draft-03/schema"===a)return this.promise.resolve(new At({},[St("json.schema.draft03.notsupported","Draft-03 schemas are not supported.")]));"https://json-schema.org/draft/2019-09/schema"===a&&i.push(St("json.schema.draft201909.notsupported","Draft 2019-09 schemas are not yet fully supported."))}var s=this.contextService,u=function(e,t,r,n){var o=n?decodeURIComponent(n):void 0,a=function(e,t){if(!t)return e;var r=e;return"/"===t[0]&&(t=t.substr(1)),t.split("/").some((function(e){return!(r=r[e])})),r}(t,o);if(a)for(var s in a)a.hasOwnProperty(s)&&!e.hasOwnProperty(s)&&(e[s]=a[s]);else i.push(St("json.schema.invalidref","$ref '{0}' in '{1}' can not be resolved.",o,r))},c=function(e,t,r,o,a){s&&!/^\w+:\/\/.*/.test(t)&&(t=s.resolveRelativePath(t,o)),t=Tt(t);var c=n.getOrAddSchemaHandle(t);return c.getUnresolvedSchema().then((function(n){if(a[t]=!0,n.errors.length){var o=r?t+"#"+r:t;i.push(St("json.schema.problemloadingref","Problems loading reference '{0}': {1}",o,n.errors[0]))}return u(e,n.schema,t,r),l(e,n.schema,t,c.dependencies)}))},l=function(e,t,r,i){if(!e||"object"!=typeof e)return Promise.resolve(null);for(var o=[e],a=[],s=[],l=function(e){for(var n=[];e.$ref;){var a=e.$ref,l=a.split("#",2);if(delete e.$ref,l[0].length>0)return void s.push(c(e,l[0],l[1],r,i));-1===n.indexOf(a)&&(u(e,t,r,l[1]),n.push(a))}!function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var r=0,n=e;r<n.length;r++){var i=n[r];"object"==typeof i&&o.push(i)}}(e.items,e.additionalItems,e.additionalProperties,e.not,e.contains,e.propertyNames,e.if,e.then,e.else),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var r=0,n=e;r<n.length;r++){var i=n[r];if("object"==typeof i)for(var a in i){var s=i[a];"object"==typeof s&&o.push(s)}}}(e.definitions,e.properties,e.patternProperties,e.dependencies),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var r=0,n=e;r<n.length;r++){var i=n[r];if(Array.isArray(i))for(var a=0,s=i;a<s.length;a++){var u=s[a];"object"==typeof u&&o.push(u)}}}(e.anyOf,e.allOf,e.oneOf,e.items)};o.length;){var f=o.pop();a.indexOf(f)>=0||(a.push(f),l(f))}return n.promise.all(s)};return l(o,o,t,r).then((function(e){return new At(o,i)}))},e.prototype.getSchemaForResource=function(e,t){if(t&&t.root&&"object"===t.root.type){var r=t.root.properties.filter((function(e){return"$schema"===e.keyNode.value&&e.valueNode&&"string"===e.valueNode.type}));if(r.length>0){var n=r[0].valueNode;if(n&&"string"===n.type){var i=Je(n);if(i&&function(e,t){if(e.length<".".length)return!1;for(var r=0;r<".".length;r++)if(e[r]!=="."[r])return!1;return!0}(i)&&this.contextService&&(i=this.contextService.resolveRelativePath(i,e)),i){var o=Tt(i);return this.getOrAddSchemaHandle(o).getResolvedSchema()}}}}if(this.cachedSchemaForResource&&this.cachedSchemaForResource.resource===e)return this.cachedSchemaForResource.resolvedSchema;for(var a=Object.create(null),s=[],u=0,c=this.filePatternAssociations;u<c.length;u++){var l=c[u];if(l.matchesPattern(e))for(var f=0,h=l.getURIs();f<h.length;f++){var p=h[f];a[p]||(s.push(p),a[p]=!0)}}var d=s.length>0?this.createCombinedSchema(e,s).getResolvedSchema():this.promise.resolve(void 0);return this.cachedSchemaForResource={resource:e,resolvedSchema:d},d},e.prototype.createCombinedSchema=function(e,t){if(1===t.length)return this.getOrAddSchemaHandle(t[0]);var r="schemaservice://combinedSchema/"+encodeURIComponent(e),n={allOf:t.map((function(e){return{$ref:e}}))};return this.addSchemaHandle(r,n)},e.prototype.getMatchingSchemas=function(e,t,r){if(r){var n=r.id||"schemaservice://untitled/matchingSchemas/"+It++;return this.resolveSchemaContent(new wt(r),n,{}).then((function(e){return t.getMatchingSchemas(e.schema).filter((function(e){return!e.inverted}))}))}return this.getSchemaForResource(e.uri,t).then((function(e){return e?t.getMatchingSchemas(e.schema).filter((function(e){return!e.inverted})):[]}))}}(),0);function Tt(e){try{return lt.parse(e).toString()}catch(t){return e}}function jt(e){try{var t=lt.parse(e);if("file"===t.scheme)return t.fsPath}catch(e){}return e}var Et=Fe(),Ot=(function(){function e(e,t){this.jsonSchemaService=e,this.promise=t,this.validationEnabled=!0}e.prototype.configure=function(e){e&&(this.validationEnabled=e.validate,this.commentSeverity=e.allowComments?void 0:x.Error)},e.prototype.doValidation=function(e,t,r,n){var i=this;if(!this.validationEnabled)return this.promise.resolve([]);var o=[],a={},s=function(e){var t=e.range.start.line+" "+e.range.start.character+" "+e.message;a[t]||(a[t]=!0,o.push(e))},u=function(n){var a=r?_t(r.trailingCommas):x.Error,u=r?_t(r.comments):i.commentSeverity;if(n){if(n.errors.length&&t.root){var c=t.root,l="object"===c.type?c.properties[0]:void 0;if(l&&"$schema"===l.keyNode.value){var h=l.valueNode||l,p=f.create(e.positionAt(h.offset),e.positionAt(h.offset+h.length));s(k.create(p,n.errors[0],x.Warning,we.SchemaResolveError))}else p=f.create(e.positionAt(c.offset),e.positionAt(c.offset+1)),s(k.create(p,n.errors[0],x.Warning,we.SchemaResolveError))}else{var d=t.validate(e,n.schema);d&&d.forEach(s)}Mt(n.schema)&&(u=void 0),Pt(n.schema)&&(a=void 0)}for(var m=0,g=t.syntaxErrors;m<g.length;m++){var v=g[m];if(v.code===we.TrailingComma){if("number"!=typeof a)continue;v.severity=a}s(v)}if("number"==typeof u){var y=Et("InvalidCommentToken","Comments are not permitted in JSON.");t.comments.forEach((function(e){s(k.create(e,y,u,we.CommentNotPermitted))}))}return o};if(n){var c=n.id||"schemaservice://untitled/"+Ot++;return this.jsonSchemaService.resolveSchemaContent(new wt(n),c,{}).then((function(e){return u(e)}))}return this.jsonSchemaService.getSchemaForResource(e.uri,t).then((function(e){return u(e)}))}}(),0);function Mt(e){if(e&&"object"==typeof e){if(B(e.allowComments))return e.allowComments;if(e.allOf)for(var t=0,r=e.allOf;t<r.length;t++){var n=Mt(r[t]);if(B(n))return n}}}function Pt(e){if(e&&"object"==typeof e){if(B(e.allowTrailingCommas))return e.allowTrailingCommas;var t=e;if(B(t.allowsTrailingCommas))return t.allowsTrailingCommas;if(e.allOf)for(var r=0,n=e.allOf;r<n.length;r++){var i=Pt(n[r]);if(B(i))return i}}}function _t(e){switch(e){case"error":return x.Error;case"warning":return x.Warning;case"ignore":return}}function Ft(e){return e<48?0:e<=57?e-48:(e<97&&(e+=32),e>=97&&e<=102?e-97+10:0)}function Vt(e){if("#"===e[0])switch(e.length){case 4:return{red:17*Ft(e.charCodeAt(1))/255,green:17*Ft(e.charCodeAt(2))/255,blue:17*Ft(e.charCodeAt(3))/255,alpha:1};case 5:return{red:17*Ft(e.charCodeAt(1))/255,green:17*Ft(e.charCodeAt(2))/255,blue:17*Ft(e.charCodeAt(3))/255,alpha:17*Ft(e.charCodeAt(4))/255};case 7:return{red:(16*Ft(e.charCodeAt(1))+Ft(e.charCodeAt(2)))/255,green:(16*Ft(e.charCodeAt(3))+Ft(e.charCodeAt(4)))/255,blue:(16*Ft(e.charCodeAt(5))+Ft(e.charCodeAt(6)))/255,alpha:1};case 9:return{red:(16*Ft(e.charCodeAt(1))+Ft(e.charCodeAt(2)))/255,green:(16*Ft(e.charCodeAt(3))+Ft(e.charCodeAt(4)))/255,blue:(16*Ft(e.charCodeAt(5))+Ft(e.charCodeAt(6)))/255,alpha:(16*Ft(e.charCodeAt(7))+Ft(e.charCodeAt(8)))/255}}}function Nt(e,t){return f.create(e.positionAt(t.offset),e.positionAt(t.offset+t.length))}!function(){function e(e){this.schemaService=e}e.prototype.findDocumentSymbols=function(e,t,r){var n=this;void 0===r&&(r={resultLimit:Number.MAX_VALUE});var i=t.root;if(!i)return[];var o=r.resultLimit||Number.MAX_VALUE,a=e.uri;if(("vscode://defaultsettings/keybindings.json"===a||Xe(a.toLowerCase(),"/user/keybindings.json"))&&"array"===i.type){for(var s=[],u=0,c=i.items;u<c.length;u++){var l=c[u];if("object"===l.type)for(var f=0,p=l.properties;f<p.length;f++){var d=p[f];if("key"===d.keyNode.value&&d.valueNode){var m=h.create(e.uri,Nt(e,l));if(s.push({name:Je(d.valueNode),kind:se.Function,location:m}),--o<=0)return r&&r.onResultLimitExceeded&&r.onResultLimitExceeded(a),s}}}return s}for(var g=[{node:i,containerName:""}],v=0,y=!1,b=[],x=function(t,r){"array"===t.type?t.items.forEach((function(e){e&&g.push({node:e,containerName:r})})):"object"===t.type&&t.properties.forEach((function(t){var i=t.valueNode;if(i)if(o>0){o--;var a=h.create(e.uri,Nt(e,t)),s=r?r+"."+t.keyNode.value:t.keyNode.value;b.push({name:n.getKeyLabel(t),kind:n.getSymbolKind(i.type),location:a,containerName:r}),g.push({node:i,containerName:s})}else y=!0}))};v<g.length;){var S=g[v++];x(S.node,S.containerName)}return y&&r&&r.onResultLimitExceeded&&r.onResultLimitExceeded(a),b},e.prototype.findDocumentSymbols2=function(e,t,r){var n=this;void 0===r&&(r={resultLimit:Number.MAX_VALUE});var i=t.root;if(!i)return[];var o=r.resultLimit||Number.MAX_VALUE,a=e.uri;if(("vscode://defaultsettings/keybindings.json"===a||Xe(a.toLowerCase(),"/user/keybindings.json"))&&"array"===i.type){for(var s=[],u=0,c=i.items;u<c.length;u++){var l=c[u];if("object"===l.type)for(var f=0,h=l.properties;f<h.length;f++){var p=h[f];if("key"===p.keyNode.value&&p.valueNode){var d=Nt(e,l),m=Nt(e,p.keyNode);if(s.push({name:Je(p.valueNode),kind:se.Function,range:d,selectionRange:m}),--o<=0)return r&&r.onResultLimitExceeded&&r.onResultLimitExceeded(a),s}}}return s}for(var g=[],v=[{node:i,result:g}],y=0,b=!1,x=function(t,r){"array"===t.type?t.items.forEach((function(t,i){if(t)if(o>0){o--;var a=Nt(e,t),s=a,u={name:String(i),kind:n.getSymbolKind(t.type),range:a,selectionRange:s,children:[]};r.push(u),v.push({result:u.children,node:t})}else b=!0})):"object"===t.type&&t.properties.forEach((function(t){var i=t.valueNode;if(i)if(o>0){o--;var a=Nt(e,t),s=Nt(e,t.keyNode),u={name:n.getKeyLabel(t),kind:n.getSymbolKind(i.type),range:a,selectionRange:s,children:[]};r.push(u),v.push({result:u.children,node:i})}else b=!0}))};y<v.length;){var S=v[y++];x(S.node,S.result)}return b&&r&&r.onResultLimitExceeded&&r.onResultLimitExceeded(a),g},e.prototype.getSymbolKind=function(e){switch(e){case"object":return se.Module;case"string":return se.String;case"number":return se.Number;case"array":return se.Array;case"boolean":return se.Boolean;default:return se.Variable}},e.prototype.getKeyLabel=function(e){var t=e.keyNode.value;return t&&(t=t.replace(/[\n]/g,"↵")),t&&t.trim()?t:'"'+t+'"'},e.prototype.findDocumentColors=function(e,t,r){return this.schemaService.getSchemaForResource(e.uri,t).then((function(n){var i=[];if(n)for(var o=r&&"number"==typeof r.resultLimit?r.resultLimit:Number.MAX_VALUE,a={},s=0,u=t.getMatchingSchemas(n.schema);s<u.length;s++){var c=u[s];if(!c.inverted&&c.schema&&("color"===c.schema.format||"color-hex"===c.schema.format)&&c.node&&"string"===c.node.type){var l=String(c.node.offset);if(!a[l]){var f=Vt(Je(c.node));if(f){var h=Nt(e,c.node);i.push({color:f,range:h})}if(a[l]=!0,--o<=0)return r&&r.onResultLimitExceeded&&r.onResultLimitExceeded(e.uri),i}}}return i}))},e.prototype.getColorPresentations=function(e,t,r,n){var i,o=[],a=Math.round(255*r.red),s=Math.round(255*r.green),u=Math.round(255*r.blue);function c(e){var t=e.toString(16);return 2!==t.length?"0"+t:t}return i=1===r.alpha?"#"+c(a)+c(s)+c(u):"#"+c(a)+c(s)+c(u)+c(Math.round(255*r.alpha)),o.push({label:i,textEdit:w.replace(n,JSON.stringify(i))}),o}}();var Rt=Fe(),$t={schemaAssociations:[],schemas:{"http://json-schema.org/schema#":{$ref:"http://json-schema.org/draft-07/schema#"},"http://json-schema.org/draft-04/schema#":{title:Rt("schema.json","Describes a JSON file using a schema. See json-schema.org for more info."),$schema:"http://json-schema.org/draft-04/schema#",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{default:0}]},simpleTypes:{type:"string",enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean",default:!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean",default:!1},maxLength:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minLength:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minItems:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},uniqueItems:{type:"boolean",default:!1},maxProperties:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minProperties:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},required:{allOf:[{$ref:"#/definitions/stringArray"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{anyOf:[{type:"string",enum:["date-time","uri","email","hostname","ipv4","ipv6","regex"]},{type:"string"}]},allOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},anyOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},oneOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},not:{allOf:[{$ref:"#"}]}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},default:{}},"http://json-schema.org/draft-07/schema#":{title:Rt("schema.json","Describes a JSON file using a schema. See json-schema.org for more info."),definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}},Lt={id:Rt("schema.json.id","A unique identifier for the schema."),$schema:Rt("schema.json.$schema","The schema to verify this document against."),title:Rt("schema.json.title","A descriptive title of the element."),description:Rt("schema.json.description","A long description of the element. Used in hover menus and suggestions."),default:Rt("schema.json.default","A default value. Used by suggestions."),multipleOf:Rt("schema.json.multipleOf","A number that should cleanly divide the current value (i.e. have no remainder)."),maximum:Rt("schema.json.maximum","The maximum numerical value, inclusive by default."),exclusiveMaximum:Rt("schema.json.exclusiveMaximum","Makes the maximum property exclusive."),minimum:Rt("schema.json.minimum","The minimum numerical value, inclusive by default."),exclusiveMinimum:Rt("schema.json.exclusiveMininum","Makes the minimum property exclusive."),maxLength:Rt("schema.json.maxLength","The maximum length of a string."),minLength:Rt("schema.json.minLength","The minimum length of a string."),pattern:Rt("schema.json.pattern","A regular expression to match the string against. It is not implicitly anchored."),additionalItems:Rt("schema.json.additionalItems","For arrays, only when items is set as an array. If it is a schema, then this schema validates items after the ones specified by the items array. If it is false, then additional items will cause validation to fail."),items:Rt("schema.json.items","For arrays. Can either be a schema to validate every element against or an array of schemas to validate each item against in order (the first schema will validate the first element, the second schema will validate the second element, and so on."),maxItems:Rt("schema.json.maxItems","The maximum number of items that can be inside an array. Inclusive."),minItems:Rt("schema.json.minItems","The minimum number of items that can be inside an array. Inclusive."),uniqueItems:Rt("schema.json.uniqueItems","If all of the items in the array must be unique. Defaults to false."),maxProperties:Rt("schema.json.maxProperties","The maximum number of properties an object can have. Inclusive."),minProperties:Rt("schema.json.minProperties","The minimum number of properties an object can have. Inclusive."),required:Rt("schema.json.required","An array of strings that lists the names of all properties required on this object."),additionalProperties:Rt("schema.json.additionalProperties","Either a schema or a boolean. If a schema, then used to validate all properties not matched by 'properties' or 'patternProperties'. If false, then any properties not matched by either will cause this schema to fail."),definitions:Rt("schema.json.definitions","Not used for validation. Place subschemas here that you wish to reference inline with $ref."),properties:Rt("schema.json.properties","A map of property names to schemas for each property."),patternProperties:Rt("schema.json.patternProperties","A map of regular expressions on property names to schemas for matching properties."),dependencies:Rt("schema.json.dependencies","A map of property names to either an array of property names or a schema. An array of property names means the property named in the key depends on the properties in the array being present in the object in order to be valid. If the value is a schema, then the schema is only applied to the object if the property in the key exists on the object."),enum:Rt("schema.json.enum","The set of literal values that are valid."),type:Rt("schema.json.type","Either a string of one of the basic schema types (number, integer, null, array, object, boolean, string) or an array of strings specifying a subset of those types."),format:Rt("schema.json.format","Describes the format expected for the value."),allOf:Rt("schema.json.allOf","An array of schemas, all of which must match."),anyOf:Rt("schema.json.anyOf","An array of schemas, where at least one must match."),oneOf:Rt("schema.json.oneOf","An array of schemas, exactly one of which must match."),not:Rt("schema.json.not","A schema which must not match."),$id:Rt("schema.json.$id","A unique identifier for the schema."),$ref:Rt("schema.json.$ref","Reference a definition hosted on any location."),$comment:Rt("schema.json.$comment","Comments from schema authors to readers or maintainers of the schema."),readOnly:Rt("schema.json.readOnly","Indicates that the value of the instance is managed exclusively by the owning authority."),examples:Rt("schema.json.examples","Sample JSON values associated with a particular schema, for the purpose of illustrating usage."),contains:Rt("schema.json.contains",'An array instance is valid against "contains" if at least one of its elements is valid against the given schema.'),propertyNames:Rt("schema.json.propertyNames","If the instance is an object, this keyword validates if every property name in the instance validates against the provided schema."),const:Rt("schema.json.const","An instance validates successfully against this keyword if its value is equal to the value of the keyword."),contentMediaType:Rt("schema.json.contentMediaType","Describes the media type of a string property."),contentEncoding:Rt("schema.json.contentEncoding","Describes the content encoding of a string property."),if:Rt("schema.json.if",'The validation outcome of the "if" subschema controls which of the "then" or "else" keywords are evaluated.'),then:Rt("schema.json.then",'The "if" subschema is used for validation when the "if" subschema succeeds.'),else:Rt("schema.json.else",'The "else" subschema is used for validation when the "if" subschema fails.')};for(var Dt in $t.schemas){var Wt=$t.schemas[Dt];for(var Ut in Wt.properties){var qt=Wt.properties[Ut];"boolean"==typeof qt&&(qt=Wt.properties[Ut]={});var Bt=Lt[Ut];Bt?qt.description=Bt:console.log(Ut+": localize('schema.json."+Ut+'\', "")')}}var Kt=function(){function e(e,t,r){var n=this;this._languageId=e,this._worker=t,this._disposables=[],this._listener=Object.create(null);var o=function(e){var t,r=e.getModeId();r===n._languageId&&(n._listener[e.uri.toString()]=e.onDidChangeContent((function(){clearTimeout(t),t=setTimeout((function(){return n._doValidate(e.uri,r)}),500)})),n._doValidate(e.uri,r))},a=function(e){i.j6.setModelMarkers(e,n._languageId,[]);var t=e.uri.toString(),r=n._listener[t];r&&(r.dispose(),delete n._listener[t])};this._disposables.push(i.j6.onDidCreateModel(o)),this._disposables.push(i.j6.onWillDisposeModel((function(e){a(e),n._resetSchema(e.uri)}))),this._disposables.push(i.j6.onDidChangeModelLanguage((function(e){a(e.model),o(e.model),n._resetSchema(e.model.uri)}))),this._disposables.push(r.onDidChange((function(e){i.j6.getModels().forEach((function(e){e.getModeId()===n._languageId&&(a(e),o(e))}))}))),this._disposables.push({dispose:function(){for(var e in i.j6.getModels().forEach(a),n._listener)n._listener[e].dispose()}}),i.j6.getModels().forEach(o)}return e.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},e.prototype._resetSchema=function(e){this._worker().then((function(t){t.resetSchema(e.toString())}))},e.prototype._doValidate=function(e,t){this._worker(e).then((function(r){return r.doValidation(e.toString()).then((function(r){var n=r.map((function(e){return r="number"==typeof(t=e).code?String(t.code):t.code,{severity:Jt(t.severity),startLineNumber:t.range.start.line+1,startColumn:t.range.start.character+1,endLineNumber:t.range.end.line+1,endColumn:t.range.end.character+1,message:t.message,code:r,source:t.source};var t,r})),o=i.j6.getModel(e);o&&o.getModeId()===t&&i.j6.setModelMarkers(o,t,n)}))})).then(void 0,(function(e){console.error(e)}))},e}();function Jt(e){switch(e){case x.Error:return i.ZL.Error;case x.Warning:return i.ZL.Warning;case x.Information:return i.ZL.Info;case x.Hint:return i.ZL.Hint;default:return i.ZL.Info}}function Ht(e){if(e)return{character:e.column-1,line:e.lineNumber-1}}function zt(e){if(e)return{start:{line:e.startLineNumber-1,character:e.startColumn-1},end:{line:e.endLineNumber-1,character:e.endColumn-1}}}function Gt(e){if(e)return new i.e6(e.start.line+1,e.start.character+1,e.end.line+1,e.end.character+1)}function Zt(e){var t=i.Mj.CompletionItemKind;switch(e){case Z.Text:return t.Text;case Z.Method:return t.Method;case Z.Function:return t.Function;case Z.Constructor:return t.Constructor;case Z.Field:return t.Field;case Z.Variable:return t.Variable;case Z.Class:return t.Class;case Z.Interface:return t.Interface;case Z.Module:return t.Module;case Z.Property:return t.Property;case Z.Unit:return t.Unit;case Z.Value:return t.Value;case Z.Enum:return t.Enum;case Z.Keyword:return t.Keyword;case Z.Snippet:return t.Snippet;case Z.Color:return t.Color;case Z.File:return t.File;case Z.Reference:return t.Reference}return t.Property}function Xt(e){if(e)return{range:Gt(e.range),text:e.newText}}var Qt=function(){function e(e){this._worker=e}return Object.defineProperty(e.prototype,"triggerCharacters",{get:function(){return[" ",":"]},enumerable:!1,configurable:!0}),e.prototype.provideCompletionItems=function(e,t,r,n){var o=e.uri;return this._worker(o).then((function(e){return e.doComplete(o.toString(),Ht(t))})).then((function(r){if(r){var n=e.getWordUntilPosition(t),o=new i.e6(t.lineNumber,n.startColumn,t.lineNumber,n.endColumn),a=r.items.map((function(e){var t,r={label:e.label,insertText:e.insertText||e.label,sortText:e.sortText,filterText:e.filterText,documentation:e.documentation,detail:e.detail,range:o,kind:Zt(e.kind)};return e.textEdit&&(void 0===(t=e.textEdit).insert||void 0===t.replace?r.range=Gt(e.textEdit.range):r.range={insert:Gt(e.textEdit.insert),replace:Gt(e.textEdit.replace)},r.insertText=e.textEdit.newText),e.additionalTextEdits&&(r.additionalTextEdits=e.additionalTextEdits.map(Xt)),e.insertTextFormat===X.Snippet&&(r.insertTextRules=i.Mj.CompletionItemInsertTextRule.InsertAsSnippet),r}));return{isIncomplete:r.isIncomplete,suggestions:a}}}))},e}();function Yt(e){return"string"==typeof e?{value:e}:(t=e)&&"object"==typeof t&&"string"==typeof t.kind?"plaintext"===e.kind?{value:e.value.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}:{value:e.value}:{value:"```"+e.language+"\n"+e.value+"\n```\n"};var t}function er(e){if(e)return Array.isArray(e)?e.map(Yt):[Yt(e)]}var tr=function(){function e(e){this._worker=e}return e.prototype.provideHover=function(e,t,r){var n=e.uri;return this._worker(n).then((function(e){return e.doHover(n.toString(),Ht(t))})).then((function(e){if(e)return{range:Gt(e.range),contents:er(e.contents)}}))},e}();function rr(e){var t=i.Mj.SymbolKind;switch(e){case se.File:return t.Array;case se.Module:return t.Module;case se.Namespace:return t.Namespace;case se.Package:return t.Package;case se.Class:return t.Class;case se.Method:return t.Method;case se.Property:return t.Property;case se.Field:return t.Field;case se.Constructor:return t.Constructor;case se.Enum:return t.Enum;case se.Interface:return t.Interface;case se.Function:return t.Function;case se.Variable:return t.Variable;case se.Constant:return t.Constant;case se.String:return t.String;case se.Number:return t.Number;case se.Boolean:return t.Boolean;case se.Array:return t.Array}return t.Function}var nr=function(){function e(e){this._worker=e}return e.prototype.provideDocumentSymbols=function(e,t){var r=e.uri;return this._worker(r).then((function(e){return e.findDocumentSymbols(r.toString())})).then((function(e){if(e)return e.map((function(e){return{name:e.name,detail:"",containerName:e.containerName,kind:rr(e.kind),range:Gt(e.location.range),selectionRange:Gt(e.location.range),tags:[]}}))}))},e}();function ir(e){return{tabSize:e.tabSize,insertSpaces:e.insertSpaces}}var or=function(){function e(e){this._worker=e}return e.prototype.provideDocumentFormattingEdits=function(e,t,r){var n=e.uri;return this._worker(n).then((function(e){return e.format(n.toString(),null,ir(t)).then((function(e){if(e&&0!==e.length)return e.map(Xt)}))}))},e}(),ar=function(){function e(e){this._worker=e}return e.prototype.provideDocumentRangeFormattingEdits=function(e,t,r,n){var i=e.uri;return this._worker(i).then((function(e){return e.format(i.toString(),zt(t),ir(r)).then((function(e){if(e&&0!==e.length)return e.map(Xt)}))}))},e}(),sr=function(){function e(e){this._worker=e}return e.prototype.provideDocumentColors=function(e,t){var r=e.uri;return this._worker(r).then((function(e){return e.findDocumentColors(r.toString())})).then((function(e){if(e)return e.map((function(e){return{color:e.color,range:Gt(e.range)}}))}))},e.prototype.provideColorPresentations=function(e,t,r){var n=e.uri;return this._worker(n).then((function(e){return e.getColorPresentations(n.toString(),t.color,zt(t.range))})).then((function(e){if(e)return e.map((function(e){var t={label:e.label};return e.textEdit&&(t.textEdit=Xt(e.textEdit)),e.additionalTextEdits&&(t.additionalTextEdits=e.additionalTextEdits.map(Xt)),t}))}))},e}(),ur=function(){function e(e){this._worker=e}return e.prototype.provideFoldingRanges=function(e,t,r){var n=e.uri;return this._worker(n).then((function(e){return e.getFoldingRanges(n.toString(),t)})).then((function(e){if(e)return e.map((function(e){var t={start:e.startLine+1,end:e.endLine+1};return void 0!==e.kind&&(t.kind=function(e){switch(e){case v.Comment:return i.Mj.FoldingRangeKind.Comment;case v.Imports:return i.Mj.FoldingRangeKind.Imports;case v.Region:return i.Mj.FoldingRangeKind.Region}}(e.kind)),t}))}))},e}(),cr=function(){function e(e){this._worker=e}return e.prototype.provideSelectionRanges=function(e,t,r){var n=e.uri;return this._worker(n).then((function(e){return e.getSelectionRanges(n.toString(),t.map(Ht))})).then((function(e){if(e)return e.map((function(e){for(var t=[];e;)t.push({range:Gt(e.range)}),e=e.parent;return t}))}))},e}();var lr="delimiter.bracket.json",fr="delimiter.array.json",hr="delimiter.colon.json",pr="delimiter.comma.json",dr="keyword.json",mr="keyword.json",gr="string.value.json",vr="number.json",yr="string.key.json",br="comment.block.json",xr="comment.line.json",Sr=function(){function e(e,t){this.parent=e,this.type=t}return e.pop=function(e){return e?e.parent:null},e.push=function(t,r){return new e(t,r)},e.equals=function(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;for(;e&&t;){if(e===t)return!0;if(e.type!==t.type)return!1;e=e.parent,t=t.parent}return!0},e}(),kr=function(){function e(e,t,r,n){this._state=e,this.scanError=t,this.lastWasColon=r,this.parents=n}return e.prototype.clone=function(){return new e(this._state,this.scanError,this.lastWasColon,this.parents)},e.prototype.equals=function(t){return t===this||!!(t&&t instanceof e)&&this.scanError===t.scanError&&this.lastWasColon===t.lastWasColon&&Sr.equals(this.parents,t.parents)},e.prototype.getStateData=function(){return this._state},e.prototype.setStateData=function(e){this._state=e},e}();function Cr(e){var t=[],r=[],n=new o(e);t.push(n);var a=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.getLanguageServiceWorker.apply(n,e)};function s(){var t,n=e.languageId,o=e.modeConfiguration;Ar(r),o.documentFormattingEdits&&r.push(i.Mj.registerDocumentFormattingEditProvider(n,new or(a))),o.documentRangeFormattingEdits&&r.push(i.Mj.registerDocumentRangeFormattingEditProvider(n,new ar(a))),o.completionItems&&r.push(i.Mj.registerCompletionItemProvider(n,new Qt(a))),o.hovers&&r.push(i.Mj.registerHoverProvider(n,new tr(a))),o.documentSymbols&&r.push(i.Mj.registerDocumentSymbolProvider(n,new nr(a))),o.tokens&&r.push(i.Mj.setTokensProvider(n,(t=!0,{getInitialState:function(){return new kr(null,null,!1,null)},tokenize:function(e,r,n,i){return function(e,t,r,n,i){void 0===n&&(n=0);var o=0,a=!1;switch(r.scanError){case 2:t='"'+t,o=1;break;case 1:t="/*"+t,o=2}for(var s=N(t),u=r.lastWasColon,c=r.parents,l={tokens:[],endState:r.clone()};;){var f=n+s.getPosition(),h="",p=s.scan();if(17===p)break;if(f===n+s.getPosition())throw new Error("Scanner did not advance, next 3 characters are: "+t.substr(s.getPosition(),3));switch(a&&(f-=o),a=o>0,p){case 1:c=Sr.push(c,0),h=lr,u=!1;break;case 2:c=Sr.pop(c),h=lr,u=!1;break;case 3:c=Sr.push(c,1),h=fr,u=!1;break;case 4:c=Sr.pop(c),h=fr,u=!1;break;case 6:h=hr,u=!0;break;case 5:h=pr,u=!1;break;case 8:case 9:h=dr,u=!1;break;case 7:h=mr,u=!1;break;case 10:var d=c?c.type:0;h=u||1===d?gr:yr,u=!1;break;case 11:h=vr,u=!1}if(e)switch(p){case 12:h=xr;break;case 13:h=br}l.endState=new kr(r.getStateData(),s.getTokenError(),u,c),l.tokens.push({startIndex:f,scopes:h})}return l}(t,e,r,n)}}))),o.colors&&r.push(i.Mj.registerColorProvider(n,new sr(a))),o.foldingRanges&&r.push(i.Mj.registerFoldingRangeProvider(n,new ur(a))),o.diagnostics&&r.push(new Kt(n,a,e)),o.selectionRanges&&r.push(i.Mj.registerSelectionRangeProvider(n,new cr(a)))}s(),t.push(i.Mj.setLanguageConfiguration(e.languageId,Ir));var u=e.modeConfiguration;return e.onDidChange((function(e){e.modeConfiguration!==u&&(u=e.modeConfiguration,s())})),t.push(wr(r)),wr(t)}function wr(e){return{dispose:function(){return Ar(e)}}}function Ar(e){for(;e.length;)e.pop().dispose()}var Ir={wordPattern:/(-?\d*\.\d\w*)|([^\[\{\]\}\:\"\,\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:'"',close:'"',notIn:["string"]}]}}}]); \ No newline at end of file diff --git a/docs/dist/7287.7287.js b/docs/dist/7287.7287.js deleted file mode 100644 index 1e7dba2a..00000000 --- a/docs/dist/7287.7287.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7287],{37287:(e,n,s)=>{"use strict";s.r(n),s.d(n,{conf:()=>r,language:()=>i});var t=s(89587),r={comments:{lineComment:"#",blockComment:["'''","'''"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],onEnterRules:[{beforeText:new RegExp("^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async).*?:\\s*$"),action:{indentAction:t.Mj.IndentAction.Indent}}],folding:{offSide:!0,markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},i={defaultToken:"",tokenPostfix:".python",keywords:["False","None","True","and","as","assert","async","await","break","class","continue","def","del","elif","else","except","exec","finally","for","from","global","if","import","in","is","lambda","nonlocal","not","or","pass","print","raise","return","try","while","with","yield","int","float","long","complex","hex","abs","all","any","apply","basestring","bin","bool","buffer","bytearray","callable","chr","classmethod","cmp","coerce","compile","complex","delattr","dict","dir","divmod","enumerate","eval","execfile","file","filter","format","frozenset","getattr","globals","hasattr","hash","help","id","input","intern","isinstance","issubclass","iter","len","locals","list","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","reversed","range","raw_input","reduce","reload","repr","reversed","round","self","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","unichr","unicode","vars","xrange","zip","__dict__","__methods__","__members__","__class__","__bases__","__name__","__mro__","__subclasses__","__init__","__import__"],brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.bracket"},{open:"(",close:")",token:"delimiter.parenthesis"}],tokenizer:{root:[{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()]/,"@brackets"],[/@[a-zA-Z_]\w*/,"tag"],[/[a-zA-Z_]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}]],whitespace:[[/\s+/,"white"],[/(^#.*$)/,"comment"],[/'''/,"string","@endDocString"],[/"""/,"string","@endDblDocString"]],endDocString:[[/[^']+/,"string"],[/\\'/,"string"],[/'''/,"string","@popall"],[/'/,"string"]],endDblDocString:[[/[^"]+/,"string"],[/\\"/,"string"],[/"""/,"string","@popall"],[/"/,"string"]],numbers:[[/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/,"number.hex"],[/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/,"number"]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/7562.7562.js b/docs/dist/7562.7562.js deleted file mode 100644 index bdaa0071..00000000 --- a/docs/dist/7562.7562.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7562],{37562:(e,n,s)=>{"use strict";s.r(n),s.d(n,{conf:()=>t,language:()=>o});var t={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"#",blockComment:["<#","#>"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",ignoreCase:!0,tokenPostfix:".ps1",brackets:[{token:"delimiter.curly",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],keywords:["begin","break","catch","class","continue","data","define","do","dynamicparam","else","elseif","end","exit","filter","finally","for","foreach","from","function","if","in","param","process","return","switch","throw","trap","try","until","using","var","while","workflow","parallel","sequence","inlinescript","configuration"],helpKeywords:/SYNOPSIS|DESCRIPTION|PARAMETER|EXAMPLE|INPUTS|OUTPUTS|NOTES|LINK|COMPONENT|ROLE|FUNCTIONALITY|FORWARDHELPTARGETNAME|FORWARDHELPCATEGORY|REMOTEHELPRUNSPACE|EXTERNALHELP/,symbols:/[=><!~?&%|+\-*\/\^;\.,]+/,escapes:/`(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_][\w-]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/^:\w*/,"metatag"],[/\$(\{((global|local|private|script|using):)?[\w]+\}|((global|local|private|script|using):)?[\w]+)/,"variable"],[/<#/,"comment","@comment"],[/#.*$/,"comment"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/\@"/,"string",'@herestring."'],[/\@'/,"string","@herestring.'"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\$`]+/,{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}],[/@escapes/,{cases:{"@eos":{token:"string.escape",next:"@popall"},"@default":"string.escape"}}],[/`./,{cases:{"@eos":{token:"string.escape.invalid",next:"@popall"},"@default":"string.escape.invalid"}}],[/\$[\w]+$/,{cases:{'$S2=="':{token:"variable",next:"@popall"},"@default":{token:"string",next:"@popall"}}}],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":{cases:{"@eos":{token:"string",next:"@popall"},"@default":"string"}}}}]],herestring:[[/^\s*(["'])@/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^\$`]+/,"string"],[/@escapes/,"string.escape"],[/`./,"string.escape.invalid"],[/\$[\w]+/,{cases:{'$S2=="':"variable","@default":"string"}}]],comment:[[/[^#\.]+/,"comment"],[/#>/,"comment","@pop"],[/(\.)(@helpKeywords)(?!\w)/,{token:"comment.keyword.$2"}],[/[\.#]/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/7637.7637.js b/docs/dist/7637.7637.js deleted file mode 100644 index 68721b95..00000000 --- a/docs/dist/7637.7637.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7637],{57637:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>o,language:()=>s});var o={brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={tokenPostfix:".tcl",specialFunctions:["set","unset","rename","variable","proc","coroutine","foreach","incr","append","lappend","linsert","lreplace"],mainFunctions:["if","then","elseif","else","case","switch","while","for","break","continue","return","package","namespace","catch","exit","eval","expr","uplevel","upvar"],builtinFunctions:["file","info","concat","join","lindex","list","llength","lrange","lsearch","lsort","split","array","parray","binary","format","regexp","regsub","scan","string","subst","dict","cd","clock","exec","glob","pid","pwd","close","eof","fblocked","fconfigure","fcopy","fileevent","flush","gets","open","puts","read","seek","socket","tell","interp","after","auto_execok","auto_load","auto_mkindex","auto_reset","bgerror","error","global","history","load","source","time","trace","unknown","unset","update","vwait","winfo","wm","bind","event","pack","place","grid","font","bell","clipboard","destroy","focus","grab","lower","option","raise","selection","send","tk","tkwait","tk_bisque","tk_focusNext","tk_focusPrev","tk_focusFollowsMouse","tk_popup","tk_setPalette"],symbols:/[=><!~?:&|+\-*\/\^%]+/,brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],escapes:/\\(?:[abfnrtv\\"'\[\]\{\};\$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,variables:/(?:\$+(?:(?:\:\:?)?[a-zA-Z_]\w*)+)/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@specialFunctions":{token:"keyword.flow",next:"@specialFunc"},"@mainFunctions":"keyword","@builtinFunctions":"variable","@default":"operator.scss"}}],[/\s+\-+(?!\d|\.)\w*|{\*}/,"metatag"],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/@symbols/,"operator"],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/\.(?!\d|\.)[\w\-]*/,"operator.sql"],[/\d+(\.\d+)?/,"number"],[/\d+/,"number"],[/;/,"delimiter"],[/"/,{token:"string.quote",bracket:"@open",next:"@dstring"}],[/'/,{token:"string.quote",bracket:"@open",next:"@sstring"}]],dstring:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/[^\\$\[\]"]+/,"string"],[/@escapes/,"string.escape"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],sstring:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\$+(?:\:\:)?\{/,{token:"identifier",next:"@nestedVariable"}],[/@variables/,"type.identifier"],[/[^\\$\[\]']+/,"string"],[/@escapes/,"string.escape"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/#.*\\$/,{token:"comment",next:"@newlineComment"}],[/#.*(?!\\)$/,"comment"]],newlineComment:[[/.*\\$/,"comment"],[/.*(?!\\)$/,{token:"comment",next:"@pop"}]],nestedVariable:[[/[^\{\}\$]+/,"type.identifier"],[/\}/,{token:"identifier",next:"@pop"}]],nestedCall:[[/\[/,{token:"@brackets",next:"@nestedCall"}],[/\]/,{token:"@brackets",next:"@pop"}],{include:"root"}],specialFunc:[[/"/,{token:"string",next:"@dstring"}],[/'/,{token:"string",next:"@sstring"}],[/\S+/,{token:"type",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/7778.7778.js b/docs/dist/7778.7778.js deleted file mode 100644 index ee2b0faf..00000000 --- a/docs/dist/7778.7778.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7778],{27778:(E,T,R)=>{"use strict";R.r(T),R.d(T,{conf:()=>A,language:()=>I});var A={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},I={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["ABORT_AFTER_WAIT","ABSENT","ABSOLUTE","ACCENT_SENSITIVITY","ACTION","ACTIVATION","ACTIVE","ADD","ADDRESS","ADMIN","AES","AES_128","AES_192","AES_256","AFFINITY","AFTER","AGGREGATE","ALGORITHM","ALL_CONSTRAINTS","ALL_ERRORMSGS","ALL_INDEXES","ALL_LEVELS","ALL_SPARSE_COLUMNS","ALLOW_CONNECTIONS","ALLOW_MULTIPLE_EVENT_LOSS","ALLOW_PAGE_LOCKS","ALLOW_ROW_LOCKS","ALLOW_SINGLE_EVENT_LOSS","ALLOW_SNAPSHOT_ISOLATION","ALLOWED","ALTER","ANONYMOUS","ANSI_DEFAULTS","ANSI_NULL_DEFAULT","ANSI_NULL_DFLT_OFF","ANSI_NULL_DFLT_ON","ANSI_NULLS","ANSI_PADDING","ANSI_WARNINGS","APPEND","APPLICATION","APPLICATION_LOG","ARITHABORT","ARITHIGNORE","AS","ASC","ASSEMBLY","ASYMMETRIC","ASYNCHRONOUS_COMMIT","AT","ATOMIC","ATTACH","ATTACH_REBUILD_LOG","AUDIT","AUDIT_GUID","AUTHENTICATION","AUTHORIZATION","AUTO","AUTO_CLEANUP","AUTO_CLOSE","AUTO_CREATE_STATISTICS","AUTO_SHRINK","AUTO_UPDATE_STATISTICS","AUTO_UPDATE_STATISTICS_ASYNC","AUTOMATED_BACKUP_PREFERENCE","AUTOMATIC","AVAILABILITY","AVAILABILITY_MODE","BACKUP","BACKUP_PRIORITY","BASE64","BATCHSIZE","BEGIN","BEGIN_DIALOG","BIGINT","BINARY","BINDING","BIT","BLOCKERS","BLOCKSIZE","BOUNDING_BOX","BREAK","BROKER","BROKER_INSTANCE","BROWSE","BUCKET_COUNT","BUFFER","BUFFERCOUNT","BULK","BULK_LOGGED","BY","CACHE","CALL","CALLED","CALLER","CAP_CPU_PERCENT","CASCADE","CASE","CATALOG","CATCH","CELLS_PER_OBJECT","CERTIFICATE","CHANGE_RETENTION","CHANGE_TRACKING","CHANGES","CHAR","CHARACTER","CHECK","CHECK_CONSTRAINTS","CHECK_EXPIRATION","CHECK_POLICY","CHECKALLOC","CHECKCATALOG","CHECKCONSTRAINTS","CHECKDB","CHECKFILEGROUP","CHECKIDENT","CHECKPOINT","CHECKTABLE","CLASSIFIER_FUNCTION","CLEANTABLE","CLEANUP","CLEAR","CLOSE","CLUSTER","CLUSTERED","CODEPAGE","COLLATE","COLLECTION","COLUMN","COLUMN_SET","COLUMNS","COLUMNSTORE","COLUMNSTORE_ARCHIVE","COMMIT","COMMITTED","COMPATIBILITY_LEVEL","COMPRESSION","COMPUTE","CONCAT","CONCAT_NULL_YIELDS_NULL","CONFIGURATION","CONNECT","CONSTRAINT","CONTAINMENT","CONTENT","CONTEXT","CONTINUE","CONTINUE_AFTER_ERROR","CONTRACT","CONTRACT_NAME","CONTROL","CONVERSATION","COOKIE","COPY_ONLY","COUNTER","CPU","CREATE","CREATE_NEW","CREATION_DISPOSITION","CREDENTIAL","CRYPTOGRAPHIC","CUBE","CURRENT","CURRENT_DATE","CURSOR","CURSOR_CLOSE_ON_COMMIT","CURSOR_DEFAULT","CYCLE","DATA","DATA_COMPRESSION","DATA_PURITY","DATABASE","DATABASE_DEFAULT","DATABASE_MIRRORING","DATABASE_SNAPSHOT","DATAFILETYPE","DATE","DATE_CORRELATION_OPTIMIZATION","DATEFIRST","DATEFORMAT","DATETIME","DATETIME2","DATETIMEOFFSET","DAY","DAYOFYEAR","DAYS","DB_CHAINING","DBCC","DBREINDEX","DDL_DATABASE_LEVEL_EVENTS","DEADLOCK_PRIORITY","DEALLOCATE","DEC","DECIMAL","DECLARE","DECRYPTION","DEFAULT","DEFAULT_DATABASE","DEFAULT_FULLTEXT_LANGUAGE","DEFAULT_LANGUAGE","DEFAULT_SCHEMA","DEFINITION","DELAY","DELAYED_DURABILITY","DELETE","DELETED","DENSITY_VECTOR","DENY","DEPENDENTS","DES","DESC","DESCRIPTION","DESX","DHCP","DIAGNOSTICS","DIALOG","DIFFERENTIAL","DIRECTORY_NAME","DISABLE","DISABLE_BROKER","DISABLED","DISK","DISTINCT","DISTRIBUTED","DOCUMENT","DOUBLE","DROP","DROP_EXISTING","DROPCLEANBUFFERS","DUMP","DURABILITY","DYNAMIC","EDITION","ELEMENTS","ELSE","EMERGENCY","EMPTY","EMPTYFILE","ENABLE","ENABLE_BROKER","ENABLED","ENCRYPTION","END","ENDPOINT","ENDPOINT_URL","ERRLVL","ERROR","ERROR_BROKER_CONVERSATIONS","ERRORFILE","ESCAPE","ESTIMATEONLY","EVENT","EVENT_RETENTION_MODE","EXEC","EXECUTABLE","EXECUTE","EXIT","EXPAND","EXPIREDATE","EXPIRY_DATE","EXPLICIT","EXTENDED_LOGICAL_CHECKS","EXTENSION","EXTERNAL","EXTERNAL_ACCESS","FAIL_OPERATION","FAILOVER","FAILOVER_MODE","FAILURE_CONDITION_LEVEL","FALSE","FAN_IN","FAST","FAST_FORWARD","FETCH","FIELDTERMINATOR","FILE","FILEGROUP","FILEGROWTH","FILELISTONLY","FILENAME","FILEPATH","FILESTREAM","FILESTREAM_ON","FILETABLE_COLLATE_FILENAME","FILETABLE_DIRECTORY","FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME","FILETABLE_NAMESPACE","FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME","FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME","FILLFACTOR","FILTERING","FIRE_TRIGGERS","FIRST","FIRSTROW","FLOAT","FMTONLY","FOLLOWING","FOR","FORCE","FORCE_FAILOVER_ALLOW_DATA_LOSS","FORCE_SERVICE_ALLOW_DATA_LOSS","FORCED","FORCEPLAN","FORCESCAN","FORCESEEK","FOREIGN","FORMATFILE","FORMSOF","FORWARD_ONLY","FREE","FREEPROCCACHE","FREESESSIONCACHE","FREESYSTEMCACHE","FROM","FULL","FULLSCAN","FULLTEXT","FUNCTION","GB","GEOGRAPHY_AUTO_GRID","GEOGRAPHY_GRID","GEOMETRY_AUTO_GRID","GEOMETRY_GRID","GET","GLOBAL","GO","GOTO","GOVERNOR","GRANT","GRIDS","GROUP","GROUP_MAX_REQUESTS","HADR","HASH","HASHED","HAVING","HEADERONLY","HEALTH_CHECK_TIMEOUT","HELP","HIERARCHYID","HIGH","HINT","HISTOGRAM","HOLDLOCK","HONOR_BROKER_PRIORITY","HOUR","HOURS","IDENTITY","IDENTITY_INSERT","IDENTITY_VALUE","IDENTITYCOL","IF","IGNORE_CONSTRAINTS","IGNORE_DUP_KEY","IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX","IGNORE_TRIGGERS","IMAGE","IMMEDIATE","IMPERSONATE","IMPLICIT_TRANSACTIONS","IMPORTANCE","INCLUDE","INCREMENT","INCREMENTAL","INDEX","INDEXDEFRAG","INFINITE","INFLECTIONAL","INIT","INITIATOR","INPUT","INPUTBUFFER","INSENSITIVE","INSERT","INSERTED","INSTEAD","INT","INTEGER","INTO","IO","IP","ISABOUT","ISOLATION","JOB","KB","KEEP","KEEP_CDC","KEEP_NULLS","KEEP_REPLICATION","KEEPDEFAULTS","KEEPFIXED","KEEPIDENTITY","KEEPNULLS","KERBEROS","KEY","KEY_SOURCE","KEYS","KEYSET","KILL","KILOBYTES_PER_BATCH","LABELONLY","LANGUAGE","LAST","LASTROW","LEVEL","LEVEL_1","LEVEL_2","LEVEL_3","LEVEL_4","LIFETIME","LIMIT","LINENO","LIST","LISTENER","LISTENER_IP","LISTENER_PORT","LOAD","LOADHISTORY","LOB_COMPACTION","LOCAL","LOCAL_SERVICE_NAME","LOCK_ESCALATION","LOCK_TIMEOUT","LOGIN","LOGSPACE","LOOP","LOW","MANUAL","MARK","MARK_IN_USE_FOR_REMOVAL","MASTER","MAX_CPU_PERCENT","MAX_DISPATCH_LATENCY","MAX_DOP","MAX_DURATION","MAX_EVENT_SIZE","MAX_FILES","MAX_IOPS_PER_VOLUME","MAX_MEMORY","MAX_MEMORY_PERCENT","MAX_QUEUE_READERS","MAX_ROLLOVER_FILES","MAX_SIZE","MAXDOP","MAXERRORS","MAXLENGTH","MAXRECURSION","MAXSIZE","MAXTRANSFERSIZE","MAXVALUE","MB","MEDIADESCRIPTION","MEDIANAME","MEDIAPASSWORD","MEDIUM","MEMBER","MEMORY_OPTIMIZED","MEMORY_OPTIMIZED_DATA","MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT","MEMORY_PARTITION_MODE","MERGE","MESSAGE","MESSAGE_FORWARD_SIZE","MESSAGE_FORWARDING","MICROSECOND","MILLISECOND","MIN_CPU_PERCENT","MIN_IOPS_PER_VOLUME","MIN_MEMORY_PERCENT","MINUTE","MINUTES","MINVALUE","MIRROR","MIRROR_ADDRESS","MODIFY","MONEY","MONTH","MOVE","MULTI_USER","MUST_CHANGE","NAME","NANOSECOND","NATIONAL","NATIVE_COMPILATION","NCHAR","NEGOTIATE","NESTED_TRIGGERS","NEW_ACCOUNT","NEW_BROKER","NEW_PASSWORD","NEWNAME","NEXT","NO","NO_BROWSETABLE","NO_CHECKSUM","NO_COMPRESSION","NO_EVENT_LOSS","NO_INFOMSGS","NO_TRUNCATE","NO_WAIT","NOCHECK","NOCOUNT","NOEXEC","NOEXPAND","NOFORMAT","NOINDEX","NOINIT","NOLOCK","NON","NON_TRANSACTED_ACCESS","NONCLUSTERED","NONE","NORECOMPUTE","NORECOVERY","NORESEED","NORESET","NOREWIND","NORMAL","NOSKIP","NOTIFICATION","NOTRUNCATE","NOUNLOAD","NOWAIT","NTEXT","NTLM","NUMANODE","NUMERIC","NUMERIC_ROUNDABORT","NVARCHAR","OBJECT","OF","OFF","OFFLINE","OFFSET","OFFSETS","OLD_ACCOUNT","OLD_PASSWORD","ON","ON_FAILURE","ONLINE","ONLY","OPEN","OPEN_EXISTING","OPENTRAN","OPTIMISTIC","OPTIMIZE","OPTION","ORDER","OUT","OUTPUT","OUTPUTBUFFER","OVER","OVERRIDE","OWNER","OWNERSHIP","PAD_INDEX","PAGE","PAGE_VERIFY","PAGECOUNT","PAGLOCK","PARAMETERIZATION","PARSEONLY","PARTIAL","PARTITION","PARTITIONS","PARTNER","PASSWORD","PATH","PER_CPU","PER_NODE","PERCENT","PERMISSION_SET","PERSISTED","PHYSICAL_ONLY","PLAN","POISON_MESSAGE_HANDLING","POOL","POPULATION","PORT","PRECEDING","PRECISION","PRIMARY","PRIMARY_ROLE","PRINT","PRIOR","PRIORITY","PRIORITY_LEVEL","PRIVATE","PRIVILEGES","PROC","PROCCACHE","PROCEDURE","PROCEDURE_NAME","PROCESS","PROFILE","PROPERTY","PROPERTY_DESCRIPTION","PROPERTY_INT_ID","PROPERTY_SET_GUID","PROVIDER","PROVIDER_KEY_NAME","PUBLIC","PUT","QUARTER","QUERY","QUERY_GOVERNOR_COST_LIMIT","QUEUE","QUEUE_DELAY","QUOTED_IDENTIFIER","RAISERROR","RANGE","RAW","RC2","RC4","RC4_128","READ","READ_COMMITTED_SNAPSHOT","READ_ONLY","READ_ONLY_ROUTING_LIST","READ_ONLY_ROUTING_URL","READ_WRITE","READ_WRITE_FILEGROUPS","READCOMMITTED","READCOMMITTEDLOCK","READONLY","READPAST","READTEXT","READUNCOMMITTED","READWRITE","REAL","REBUILD","RECEIVE","RECOMPILE","RECONFIGURE","RECOVERY","RECURSIVE","RECURSIVE_TRIGGERS","REFERENCES","REGENERATE","RELATED_CONVERSATION","RELATED_CONVERSATION_GROUP","RELATIVE","REMOTE","REMOTE_PROC_TRANSACTIONS","REMOTE_SERVICE_NAME","REMOVE","REORGANIZE","REPAIR_ALLOW_DATA_LOSS","REPAIR_FAST","REPAIR_REBUILD","REPEATABLE","REPEATABLEREAD","REPLICA","REPLICATION","REQUEST_MAX_CPU_TIME_SEC","REQUEST_MAX_MEMORY_GRANT_PERCENT","REQUEST_MEMORY_GRANT_TIMEOUT_SEC","REQUIRED","RESAMPLE","RESEED","RESERVE_DISK_SPACE","RESET","RESOURCE","RESTART","RESTORE","RESTRICT","RESTRICTED_USER","RESULT","RESUME","RETAINDAYS","RETENTION","RETURN","RETURNS","REVERT","REVOKE","REWIND","REWINDONLY","ROBUST","ROLE","ROLLBACK","ROLLUP","ROOT","ROUTE","ROW","ROWCOUNT","ROWGUIDCOL","ROWLOCK","ROWS","ROWS_PER_BATCH","ROWTERMINATOR","ROWVERSION","RSA_1024","RSA_2048","RSA_512","RULE","SAFE","SAFETY","SAMPLE","SAVE","SCHEDULER","SCHEMA","SCHEMA_AND_DATA","SCHEMA_ONLY","SCHEMABINDING","SCHEME","SCROLL","SCROLL_LOCKS","SEARCH","SECOND","SECONDARY","SECONDARY_ONLY","SECONDARY_ROLE","SECONDS","SECRET","SECURITY_LOG","SECURITYAUDIT","SELECT","SELECTIVE","SELF","SEND","SENT","SEQUENCE","SERIALIZABLE","SERVER","SERVICE","SERVICE_BROKER","SERVICE_NAME","SESSION","SESSION_TIMEOUT","SET","SETS","SETUSER","SHOW_STATISTICS","SHOWCONTIG","SHOWPLAN","SHOWPLAN_ALL","SHOWPLAN_TEXT","SHOWPLAN_XML","SHRINKDATABASE","SHRINKFILE","SHUTDOWN","SID","SIGNATURE","SIMPLE","SINGLE_BLOB","SINGLE_CLOB","SINGLE_NCLOB","SINGLE_USER","SINGLETON","SIZE","SKIP","SMALLDATETIME","SMALLINT","SMALLMONEY","SNAPSHOT","SORT_IN_TEMPDB","SOURCE","SPARSE","SPATIAL","SPATIAL_WINDOW_MAX_CELLS","SPECIFICATION","SPLIT","SQL","SQL_VARIANT","SQLPERF","STANDBY","START","START_DATE","STARTED","STARTUP_STATE","STAT_HEADER","STATE","STATEMENT","STATIC","STATISTICAL_SEMANTICS","STATISTICS","STATISTICS_INCREMENTAL","STATISTICS_NORECOMPUTE","STATS","STATS_STREAM","STATUS","STATUSONLY","STOP","STOP_ON_ERROR","STOPAT","STOPATMARK","STOPBEFOREMARK","STOPLIST","STOPPED","SUBJECT","SUBSCRIPTION","SUPPORTED","SUSPEND","SWITCH","SYMMETRIC","SYNCHRONOUS_COMMIT","SYNONYM","SYSNAME","SYSTEM","TABLE","TABLERESULTS","TABLESAMPLE","TABLOCK","TABLOCKX","TAKE","TAPE","TARGET","TARGET_RECOVERY_TIME","TB","TCP","TEXT","TEXTIMAGE_ON","TEXTSIZE","THEN","THESAURUS","THROW","TIES","TIME","TIMEOUT","TIMER","TIMESTAMP","TINYINT","TO","TOP","TORN_PAGE_DETECTION","TRACEOFF","TRACEON","TRACESTATUS","TRACK_CAUSALITY","TRACK_COLUMNS_UPDATED","TRAN","TRANSACTION","TRANSFER","TRANSFORM_NOISE_WORDS","TRIGGER","TRIPLE_DES","TRIPLE_DES_3KEY","TRUE","TRUNCATE","TRUNCATEONLY","TRUSTWORTHY","TRY","TSQL","TWO_DIGIT_YEAR_CUTOFF","TYPE","TYPE_WARNING","UNBOUNDED","UNCHECKED","UNCOMMITTED","UNDEFINED","UNIQUE","UNIQUEIDENTIFIER","UNKNOWN","UNLIMITED","UNLOAD","UNSAFE","UPDATE","UPDATETEXT","UPDATEUSAGE","UPDLOCK","URL","USE","USED","USER","USEROPTIONS","USING","VALID_XML","VALIDATION","VALUE","VALUES","VARBINARY","VARCHAR","VARYING","VERIFYONLY","VERSION","VIEW","VIEW_METADATA","VIEWS","VISIBILITY","WAIT_AT_LOW_PRIORITY","WAITFOR","WEEK","WEIGHT","WELL_FORMED_XML","WHEN","WHERE","WHILE","WINDOWS","WITH","WITHIN","WITHOUT","WITNESS","WORK","WORKLOAD","WRITETEXT","XACT_ABORT","XLOCK","XMAX","XMIN","XML","XMLDATA","XMLNAMESPACES","XMLSCHEMA","XQUERY","XSINIL","YEAR","YMAX","YMIN"],operators:["ALL","AND","ANY","BETWEEN","EXISTS","IN","LIKE","NOT","OR","SOME","EXCEPT","INTERSECT","UNION","APPLY","CROSS","FULL","INNER","JOIN","LEFT","OUTER","RIGHT","CONTAINS","FREETEXT","IS","NULL","PIVOT","UNPIVOT","MATCHED"],builtinFunctions:["AVG","CHECKSUM_AGG","COUNT","COUNT_BIG","GROUPING","GROUPING_ID","MAX","MIN","SUM","STDEV","STDEVP","VAR","VARP","CUME_DIST","FIRST_VALUE","LAG","LAST_VALUE","LEAD","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","COLLATE","COLLATIONPROPERTY","TERTIARY_WEIGHTS","FEDERATION_FILTERING_VALUE","CAST","CONVERT","PARSE","TRY_CAST","TRY_CONVERT","TRY_PARSE","ASYMKEY_ID","ASYMKEYPROPERTY","CERTPROPERTY","CERT_ID","CRYPT_GEN_RANDOM","DECRYPTBYASYMKEY","DECRYPTBYCERT","DECRYPTBYKEY","DECRYPTBYKEYAUTOASYMKEY","DECRYPTBYKEYAUTOCERT","DECRYPTBYPASSPHRASE","ENCRYPTBYASYMKEY","ENCRYPTBYCERT","ENCRYPTBYKEY","ENCRYPTBYPASSPHRASE","HASHBYTES","IS_OBJECTSIGNED","KEY_GUID","KEY_ID","KEY_NAME","SIGNBYASYMKEY","SIGNBYCERT","SYMKEYPROPERTY","VERIFYSIGNEDBYCERT","VERIFYSIGNEDBYASYMKEY","CURSOR_STATUS","DATALENGTH","IDENT_CURRENT","IDENT_INCR","IDENT_SEED","IDENTITY","SQL_VARIANT_PROPERTY","CURRENT_TIMESTAMP","DATEADD","DATEDIFF","DATEFROMPARTS","DATENAME","DATEPART","DATETIME2FROMPARTS","DATETIMEFROMPARTS","DATETIMEOFFSETFROMPARTS","DAY","EOMONTH","GETDATE","GETUTCDATE","ISDATE","MONTH","SMALLDATETIMEFROMPARTS","SWITCHOFFSET","SYSDATETIME","SYSDATETIMEOFFSET","SYSUTCDATETIME","TIMEFROMPARTS","TODATETIMEOFFSET","YEAR","CHOOSE","COALESCE","IIF","NULLIF","ABS","ACOS","ASIN","ATAN","ATN2","CEILING","COS","COT","DEGREES","EXP","FLOOR","LOG","LOG10","PI","POWER","RADIANS","RAND","ROUND","SIGN","SIN","SQRT","SQUARE","TAN","APP_NAME","APPLOCK_MODE","APPLOCK_TEST","ASSEMBLYPROPERTY","COL_LENGTH","COL_NAME","COLUMNPROPERTY","DATABASE_PRINCIPAL_ID","DATABASEPROPERTYEX","DB_ID","DB_NAME","FILE_ID","FILE_IDEX","FILE_NAME","FILEGROUP_ID","FILEGROUP_NAME","FILEGROUPPROPERTY","FILEPROPERTY","FULLTEXTCATALOGPROPERTY","FULLTEXTSERVICEPROPERTY","INDEX_COL","INDEXKEY_PROPERTY","INDEXPROPERTY","OBJECT_DEFINITION","OBJECT_ID","OBJECT_NAME","OBJECT_SCHEMA_NAME","OBJECTPROPERTY","OBJECTPROPERTYEX","ORIGINAL_DB_NAME","PARSENAME","SCHEMA_ID","SCHEMA_NAME","SCOPE_IDENTITY","SERVERPROPERTY","STATS_DATE","TYPE_ID","TYPE_NAME","TYPEPROPERTY","DENSE_RANK","NTILE","RANK","ROW_NUMBER","PUBLISHINGSERVERNAME","OPENDATASOURCE","OPENQUERY","OPENROWSET","OPENXML","CERTENCODED","CERTPRIVATEKEY","CURRENT_USER","HAS_DBACCESS","HAS_PERMS_BY_NAME","IS_MEMBER","IS_ROLEMEMBER","IS_SRVROLEMEMBER","LOGINPROPERTY","ORIGINAL_LOGIN","PERMISSIONS","PWDENCRYPT","PWDCOMPARE","SESSION_USER","SESSIONPROPERTY","SUSER_ID","SUSER_NAME","SUSER_SID","SUSER_SNAME","SYSTEM_USER","USER","USER_ID","USER_NAME","ASCII","CHAR","CHARINDEX","CONCAT","DIFFERENCE","FORMAT","LEFT","LEN","LOWER","LTRIM","NCHAR","PATINDEX","QUOTENAME","REPLACE","REPLICATE","REVERSE","RIGHT","RTRIM","SOUNDEX","SPACE","STR","STUFF","SUBSTRING","UNICODE","UPPER","BINARY_CHECKSUM","CHECKSUM","CONNECTIONPROPERTY","CONTEXT_INFO","CURRENT_REQUEST_ID","ERROR_LINE","ERROR_NUMBER","ERROR_MESSAGE","ERROR_PROCEDURE","ERROR_SEVERITY","ERROR_STATE","FORMATMESSAGE","GETANSINULL","GET_FILESTREAM_TRANSACTION_CONTEXT","HOST_ID","HOST_NAME","ISNULL","ISNUMERIC","MIN_ACTIVE_ROWVERSION","NEWID","NEWSEQUENTIALID","ROWCOUNT_BIG","XACT_STATE","TEXTPTR","TEXTVALID","COLUMNS_UPDATED","EVENTDATA","TRIGGER_NESTLEVEL","UPDATE","CHANGETABLE","CHANGE_TRACKING_CONTEXT","CHANGE_TRACKING_CURRENT_VERSION","CHANGE_TRACKING_IS_COLUMN_IN_MASK","CHANGE_TRACKING_MIN_VALID_VERSION","CONTAINSTABLE","FREETEXTTABLE","SEMANTICKEYPHRASETABLE","SEMANTICSIMILARITYDETAILSTABLE","SEMANTICSIMILARITYTABLE","FILETABLEROOTPATH","GETFILENAMESPACEPATH","GETPATHLOCATOR","PATHNAME","GET_TRANSMISSION_STATUS"],builtinVariables:["@@DATEFIRST","@@DBTS","@@LANGID","@@LANGUAGE","@@LOCK_TIMEOUT","@@MAX_CONNECTIONS","@@MAX_PRECISION","@@NESTLEVEL","@@OPTIONS","@@REMSERVER","@@SERVERNAME","@@SERVICENAME","@@SPID","@@TEXTSIZE","@@VERSION","@@CURSOR_ROWS","@@FETCH_STATUS","@@DATEFIRST","@@PROCID","@@ERROR","@@IDENTITY","@@ROWCOUNT","@@TRANCOUNT","@@CONNECTIONS","@@CPU_BUSY","@@IDLE","@@IO_BUSY","@@PACKET_ERRORS","@@PACK_RECEIVED","@@PACK_SENT","@@TIMETICKS","@@TOTAL_ERRORS","@@TOTAL_READ","@@TOTAL_WRITE"],pseudoColumns:["$ACTION","$IDENTITY","$ROWGUID","$PARTITION"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N'/,{token:"string",next:"@string"}],[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[[/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i,"keyword"],[/BEGIN\s+TRY\b/i,{token:"keyword.try"}],[/END\s+TRY\b/i,{token:"keyword.try"}],[/BEGIN\s+CATCH\b/i,{token:"keyword.catch"}],[/END\s+CATCH\b/i,{token:"keyword.catch"}],[/(BEGIN|CASE)\b/i,{token:"keyword.block"}],[/END\b/i,{token:"keyword.block"}],[/WHEN\b/i,{token:"keyword.choice"}],[/THEN\b/i,{token:"keyword.choice"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/7835.7835.js b/docs/dist/7835.7835.js deleted file mode 100644 index 4e19455c..00000000 --- a/docs/dist/7835.7835.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[7835],{47835:(e,t,p)=>{"use strict";p.r(t),p.d(t,{conf:()=>n,language:()=>i});var n={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string"]},{open:"[",close:"]",notIn:["string"]},{open:"(",close:")",notIn:["string"]},{open:'"',close:'"',notIn:["string"]},{open:"'",close:"'",notIn:["string","comment"]}],folding:{markers:{start:new RegExp("^\\s*(#|//)region\\b"),end:new RegExp("^\\s*(#|//)endregion\\b")}}},i={defaultToken:"",tokenPostfix:"",tokenizer:{root:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.root"}],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)(\w+)(\/>)/,["delimiter.html","tag.html","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)([:\w]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)(\w+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<]+/]],doctype:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.comment"}],[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.comment"}],[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.otherTag"}],[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/]],script:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.script"}],[/type/,"attribute.name","@scriptAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptAfterType"}],[/=/,"delimiter","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.text/javascript",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.scriptWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInEmbeddedState.scriptEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],style:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.style"}],[/type/,"attribute.name","@styleAfterType"],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleAfterType"}],[/=/,"delimiter","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleAfterTypeEquals"}],[/"([^"]*)"/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.text/css",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInSimpleState.styleWithCustomType.$S2"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value"],[/'([^']*)'/,"attribute.value"],[/[\w\-]+/,"attribute.name"],[/=/,"delimiter"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\?((php)|=)?/,{token:"@rematch",switchTo:"@phpInEmbeddedState.styleEmbedded.$S2",nextEmbedded:"@pop"}],[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}]],phpInSimpleState:[[/<\?((php)|=)?/,"metatag.php"],[/\?>/,{token:"metatag.php",switchTo:"@$S2.$S3"}],{include:"phpRoot"}],phpInEmbeddedState:[[/<\?((php)|=)?/,"metatag.php"],[/\?>/,{token:"metatag.php",switchTo:"@$S2.$S3",nextEmbedded:"$S3"}],{include:"phpRoot"}],phpRoot:[[/[a-zA-Z_]\w*/,{cases:{"@phpKeywords":{token:"keyword.php"},"@phpCompileTimeConstants":{token:"constant.php"},"@default":"identifier.php"}}],[/[$a-zA-Z_]\w*/,{cases:{"@phpPreDefinedVariables":{token:"variable.predefined.php"},"@default":"variable.php"}}],[/[{}]/,"delimiter.bracket.php"],[/[\[\]]/,"delimiter.array.php"],[/[()]/,"delimiter.parenthesis.php"],[/[ \t\r\n]+/],[/(#|\/\/)$/,"comment.php"],[/(#|\/\/)/,"comment.php","@phpLineComment"],[/\/\*/,"comment.php","@phpComment"],[/"/,"string.php","@phpDoubleQuoteString"],[/'/,"string.php","@phpSingleQuoteString"],[/[\+\-\*\%\&\|\^\~\!\=\<\>\/\?\;\:\.\,\@]/,"delimiter.php"],[/\d*\d+[eE]([\-+]?\d+)?/,"number.float.php"],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float.php"],[/0[xX][0-9a-fA-F']*[0-9a-fA-F]/,"number.hex.php"],[/0[0-7']*[0-7]/,"number.octal.php"],[/0[bB][0-1']*[0-1]/,"number.binary.php"],[/\d[\d']*/,"number.php"],[/\d/,"number.php"]],phpComment:[[/\*\//,"comment.php","@pop"],[/[^*]+/,"comment.php"],[/./,"comment.php"]],phpLineComment:[[/\?>/,{token:"@rematch",next:"@pop"}],[/.$/,"comment.php","@pop"],[/[^?]+$/,"comment.php","@pop"],[/[^?]+/,"comment.php"],[/./,"comment.php"]],phpDoubleQuoteString:[[/[^\\"]+/,"string.php"],[/@escapes/,"string.escape.php"],[/\\./,"string.escape.invalid.php"],[/"/,"string.php","@pop"]],phpSingleQuoteString:[[/[^\\']+/,"string.php"],[/@escapes/,"string.escape.php"],[/\\./,"string.escape.invalid.php"],[/'/,"string.php","@pop"]]},phpKeywords:["abstract","and","array","as","break","callable","case","catch","cfunction","class","clone","const","continue","declare","default","do","else","elseif","enddeclare","endfor","endforeach","endif","endswitch","endwhile","extends","false","final","for","foreach","function","global","goto","if","implements","interface","instanceof","insteadof","namespace","new","null","object","old_function","or","private","protected","public","resource","static","switch","throw","trait","try","true","use","var","while","xor","die","echo","empty","exit","eval","include","include_once","isset","list","require","require_once","return","print","unset","yield","__construct"],phpCompileTimeConstants:["__CLASS__","__DIR__","__FILE__","__LINE__","__NAMESPACE__","__METHOD__","__FUNCTION__","__TRAIT__"],phpPreDefinedVariables:["$GLOBALS","$_SERVER","$_GET","$_POST","$_FILES","$_REQUEST","$_SESSION","$_ENV","$_COOKIE","$php_errormsg","$HTTP_RAW_POST_DATA","$http_response_header","$argc","$argv"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/}}}]); \ No newline at end of file diff --git a/docs/dist/8070.8070.js b/docs/dist/8070.8070.js deleted file mode 100644 index 476af5d3..00000000 --- a/docs/dist/8070.8070.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8070],{8070:(e,t,s)=>{"use strict";s.r(t),s.d(t,{conf:()=>r,language:()=>i});var r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},i={defaultToken:"",tokenPostfix:".perl",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["__DATA__","else","lock","__END__","elsif","lt","__FILE__","eq","__LINE__","exp","ne","sub","__PACKAGE__","for","no","and","foreach","or","unless","cmp","ge","package","until","continue","gt","while","CORE","if","xor","do","le","__DIE__","__WARN__"],builtinFunctions:["-A","END","length","setpgrp","-B","endgrent","link","setpriority","-b","endhostent","listen","setprotoent","-C","endnetent","local","setpwent","-c","endprotoent","localtime","setservent","-d","endpwent","log","setsockopt","-e","endservent","lstat","shift","-f","eof","map","shmctl","-g","eval","mkdir","shmget","-k","exec","msgctl","shmread","-l","exists","msgget","shmwrite","-M","exit","msgrcv","shutdown","-O","fcntl","msgsnd","sin","-o","fileno","my","sleep","-p","flock","next","socket","-r","fork","not","socketpair","-R","format","oct","sort","-S","formline","open","splice","-s","getc","opendir","split","-T","getgrent","ord","sprintf","-t","getgrgid","our","sqrt","-u","getgrnam","pack","srand","-w","gethostbyaddr","pipe","stat","-W","gethostbyname","pop","state","-X","gethostent","pos","study","-x","getlogin","print","substr","-z","getnetbyaddr","printf","symlink","abs","getnetbyname","prototype","syscall","accept","getnetent","push","sysopen","alarm","getpeername","quotemeta","sysread","atan2","getpgrp","rand","sysseek","AUTOLOAD","getppid","read","system","BEGIN","getpriority","readdir","syswrite","bind","getprotobyname","readline","tell","binmode","getprotobynumber","readlink","telldir","bless","getprotoent","readpipe","tie","break","getpwent","recv","tied","caller","getpwnam","redo","time","chdir","getpwuid","ref","times","CHECK","getservbyname","rename","truncate","chmod","getservbyport","require","uc","chomp","getservent","reset","ucfirst","chop","getsockname","return","umask","chown","getsockopt","reverse","undef","chr","glob","rewinddir","UNITCHECK","chroot","gmtime","rindex","unlink","close","goto","rmdir","unpack","closedir","grep","say","unshift","connect","hex","scalar","untie","cos","index","seek","use","crypt","INIT","seekdir","utime","dbmclose","int","select","values","dbmopen","ioctl","semctl","vec","defined","join","semget","wait","delete","keys","semop","waitpid","DESTROY","kill","send","wantarray","die","last","setgrent","warn","dump","lc","sethostent","write","each","lcfirst","setnetent"],builtinFileHandlers:["ARGV","STDERR","STDOUT","ARGVOUT","STDIN","ENV"],builtinVariables:["$!","$^RE_TRIE_MAXBUF","$LAST_REGEXP_CODE_RESULT",'$"',"$^S","$LIST_SEPARATOR","$#","$^T","$MATCH","$$","$^TAINT","$MULTILINE_MATCHING","$%","$^UNICODE","$NR","$&","$^UTF8LOCALE","$OFMT","$'","$^V","$OFS","$(","$^W","$ORS","$)","$^WARNING_BITS","$OS_ERROR","$*","$^WIDE_SYSTEM_CALLS","$OSNAME","$+","$^X","$OUTPUT_AUTO_FLUSH","$,","$_","$OUTPUT_FIELD_SEPARATOR","$-","$`","$OUTPUT_RECORD_SEPARATOR","$.","$a","$PERL_VERSION","$/","$ACCUMULATOR","$PERLDB","$0","$ARG","$PID","$:","$ARGV","$POSTMATCH","$;","$b","$PREMATCH","$<","$BASETIME","$PROCESS_ID","$=","$CHILD_ERROR","$PROGRAM_NAME","$>","$COMPILING","$REAL_GROUP_ID","$?","$DEBUGGING","$REAL_USER_ID","$@","$EFFECTIVE_GROUP_ID","$RS","$[","$EFFECTIVE_USER_ID","$SUBSCRIPT_SEPARATOR","$\\","$EGID","$SUBSEP","$]","$ERRNO","$SYSTEM_FD_MAX","$^","$EUID","$UID","$^A","$EVAL_ERROR","$WARNING","$^C","$EXCEPTIONS_BEING_CAUGHT","$|","$^CHILD_ERROR_NATIVE","$EXECUTABLE_NAME","$~","$^D","$EXTENDED_OS_ERROR","%!","$^E","$FORMAT_FORMFEED","%^H","$^ENCODING","$FORMAT_LINE_BREAK_CHARACTERS","%ENV","$^F","$FORMAT_LINES_LEFT","%INC","$^H","$FORMAT_LINES_PER_PAGE","%OVERLOAD","$^I","$FORMAT_NAME","%SIG","$^L","$FORMAT_PAGE_NUMBER","@+","$^M","$FORMAT_TOP_NAME","@-","$^N","$GID","@_","$^O","$INPLACE_EDIT","@ARGV","$^OPEN","$INPUT_LINE_NUMBER","@INC","$^P","$INPUT_RECORD_SEPARATOR","@LAST_MATCH_START","$^R","$LAST_MATCH_END","$^RE_DEBUG_FLAGS","$LAST_PAREN_MATCH"],symbols:/[:+\-\^*$&%@=<>!?|\/~\.]/,quoteLikeOps:["qr","m","s","q","qq","qx","qw","tr","y"],escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[{include:"@whitespace"},[/[a-zA-Z\-_][\w\-_]*/,{cases:{"@keywords":"keyword","@builtinFunctions":"type.identifier","@builtinFileHandlers":"variable.predefined","@quoteLikeOps":{token:"@rematch",next:"quotedConstructs"},"@default":""}}],[/[\$@%][*@#?\+\-\$!\w\\\^><~:;\.]+/,{cases:{"@builtinVariables":"variable.predefined","@default":"variable"}}],{include:"@strings"},{include:"@dblStrings"},{include:"@perldoc"},{include:"@heredoc"},[/[{}\[\]()]/,"@brackets"],[/[\/](?:(?:\[(?:\\]|[^\]])+\])|(?:\\\/|[^\]\/]))*[\/]\w*\s*(?=[).,;]|$)/,"regexp"],[/@symbols/,"operators"],{include:"@numbers"},[/[,;]/,"delimiter"]],whitespace:[[/\s+/,"white"],[/(^#!.*$)/,"metatag"],[/(^#.*$)/,"comment"]],numbers:[[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"]],strings:[[/'/,"string","@stringBody"]],stringBody:[[/'/,"string","@popall"],[/\\'/,"string.escape"],[/./,"string"]],dblStrings:[[/"/,"string","@dblStringBody"]],dblStringBody:[[/"/,"string","@popall"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],{include:"@variables"},[/./,"string"]],quotedConstructs:[[/(q|qw|tr|y)\s*\(/,{token:"string.delim",switchTo:"@qstring.(.)"}],[/(q|qw|tr|y)\s*\[/,{token:"string.delim",switchTo:"@qstring.[.]"}],[/(q|qw|tr|y)\s*\{/,{token:"string.delim",switchTo:"@qstring.{.}"}],[/(q|qw|tr|y)\s*</,{token:"string.delim",switchTo:"@qstring.<.>"}],[/(q|qw|tr|y)#/,{token:"string.delim",switchTo:"@qstring.#.#"}],[/(q|qw|tr|y)\s*([^A-Za-z0-9#\s])/,{token:"string.delim",switchTo:"@qstring.$2.$2"}],[/(q|qw|tr|y)\s+(\w)/,{token:"string.delim",switchTo:"@qstring.$2.$2"}],[/(qr|m|s)\s*\(/,{token:"regexp.delim",switchTo:"@qregexp.(.)"}],[/(qr|m|s)\s*\[/,{token:"regexp.delim",switchTo:"@qregexp.[.]"}],[/(qr|m|s)\s*\{/,{token:"regexp.delim",switchTo:"@qregexp.{.}"}],[/(qr|m|s)\s*</,{token:"regexp.delim",switchTo:"@qregexp.<.>"}],[/(qr|m|s)#/,{token:"regexp.delim",switchTo:"@qregexp.#.#"}],[/(qr|m|s)\s*([^A-Za-z0-9_#\s])/,{token:"regexp.delim",switchTo:"@qregexp.$2.$2"}],[/(qr|m|s)\s+(\w)/,{token:"regexp.delim",switchTo:"@qregexp.$2.$2"}],[/(qq|qx)\s*\(/,{token:"string.delim",switchTo:"@qqstring.(.)"}],[/(qq|qx)\s*\[/,{token:"string.delim",switchTo:"@qqstring.[.]"}],[/(qq|qx)\s*\{/,{token:"string.delim",switchTo:"@qqstring.{.}"}],[/(qq|qx)\s*</,{token:"string.delim",switchTo:"@qqstring.<.>"}],[/(qq|qx)#/,{token:"string.delim",switchTo:"@qqstring.#.#"}],[/(qq|qx)\s*([^A-Za-z0-9#\s])/,{token:"string.delim",switchTo:"@qqstring.$2.$2"}],[/(qq|qx)\s+(\w)/,{token:"string.delim",switchTo:"@qqstring.$2.$2"}]],qstring:[[/\\./,"string.escape"],[/./,{cases:{"$#==$S3":{token:"string.delim",next:"@pop"},"$#==$S2":{token:"string.delim",next:"@push"},"@default":"string"}}]],qregexp:[{include:"@variables"},[/\\./,"regexp.escape"],[/./,{cases:{"$#==$S3":{token:"regexp.delim",next:"@regexpModifiers"},"$#==$S2":{token:"regexp.delim",next:"@push"},"@default":"regexp"}}]],regexpModifiers:[[/[msixpodualngcer]+/,{token:"regexp.modifier",next:"@popall"}]],qqstring:[{include:"@variables"},{include:"@qstring"}],heredoc:[[/<<\s*['"`]?([\w\-]+)['"`]?/,{token:"string.heredoc.delimiter",next:"@heredocBody.$1"}]],heredocBody:[[/^([\w\-]+)$/,{cases:{"$1==$S2":[{token:"string.heredoc.delimiter",next:"@popall"}],"@default":"string.heredoc"}}],[/./,"string.heredoc"]],perldoc:[[/^=\w/,"comment.doc","@perldocBody"]],perldocBody:[[/^=cut\b/,"type.identifier","@popall"],[/./,"comment.doc"]],variables:[[/\$\w+/,"variable"],[/@\w+/,"variable"],[/%\w+/,"variable"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/8084.8084.js b/docs/dist/8084.8084.js deleted file mode 100644 index f37f8d77..00000000 --- a/docs/dist/8084.8084.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8084],{98084:(e,o,n)=>{"use strict";n.r(o),n.d(o,{conf:()=>t,language:()=>s});var t={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".pascaligo",ignoreCase:!0,brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["begin","block","case","const","else","end","fail","for","from","function","if","is","nil","of","remove","return","skip","then","type","var","while","with","option","None","transaction"],typeKeywords:["bool","int","list","map","nat","record","string","unit","address","map","mtz","xtz"],operators:["=",">","<","<=",">=","<>",":",":=","and","mod","or","+","-","*","/","@","&","^","%"],symbols:/[=><:@\^&|+\-*\/\^%]+/,tokenizer:{root:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/\$[0-9a-fA-F]{1,16}/,"number.hex"],[/\d+/,"number"],[/[;,.]/,"delimiter"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'/,"string","@string"],[/'[^\\']'/,"string"],[/'/,"string.invalid"],[/\#\d+/,"string"]],comment:[[/[^\(\*]+/,"comment"],[/\*\)/,"comment","@pop"],[/\(\*/,"comment"]],string:[[/[^\\']+/,"string"],[/\\./,"string.escape.invalid"],[/'/,{token:"string.quote",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\(\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/8180.8180.js b/docs/dist/8180.8180.js deleted file mode 100644 index ccfa2c45..00000000 --- a/docs/dist/8180.8180.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8180],{48180:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>i,language:()=>o});var i={comments:{lineComment:"//",blockComment:["(*","*)"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]}]},o={tokenPostfix:".pats",defaultToken:"invalid",keywords:["abstype","abst0ype","absprop","absview","absvtype","absviewtype","absvt0ype","absviewt0ype","as","and","assume","begin","classdec","datasort","datatype","dataprop","dataview","datavtype","dataviewtype","do","end","extern","extype","extvar","exception","fn","fnx","fun","prfn","prfun","praxi","castfn","if","then","else","ifcase","in","infix","infixl","infixr","prefix","postfix","implmnt","implement","primplmnt","primplement","import","let","local","macdef","macrodef","nonfix","symelim","symintr","overload","of","op","rec","sif","scase","sortdef","sta","stacst","stadef","static","staload","dynload","try","tkindef","typedef","propdef","viewdef","vtypedef","viewtypedef","prval","var","prvar","when","where","with","withtype","withprop","withview","withvtype","withviewtype"],keywords_dlr:["$delay","$ldelay","$arrpsz","$arrptrsize","$d2ctype","$effmask","$effmask_ntm","$effmask_exn","$effmask_ref","$effmask_wrt","$effmask_all","$extern","$extkind","$extype","$extype_struct","$extval","$extfcall","$extmcall","$literal","$myfilename","$mylocation","$myfunction","$lst","$lst_t","$lst_vt","$list","$list_t","$list_vt","$rec","$rec_t","$rec_vt","$record","$record_t","$record_vt","$tup","$tup_t","$tup_vt","$tuple","$tuple_t","$tuple_vt","$break","$continue","$raise","$showtype","$vcopyenv_v","$vcopyenv_vt","$tempenver","$solver_assert","$solver_verify"],keywords_srp:["#if","#ifdef","#ifndef","#then","#elif","#elifdef","#elifndef","#else","#endif","#error","#prerr","#print","#assert","#undef","#define","#include","#require","#pragma","#codegen2","#codegen3"],irregular_keyword_list:["val+","val-","val","case+","case-","case","addr@","addr","fold@","free@","fix@","fix","lam@","lam","llam@","llam","viewt@ype+","viewt@ype-","viewt@ype","viewtype+","viewtype-","viewtype","view+","view-","view@","view","type+","type-","type","vtype+","vtype-","vtype","vt@ype+","vt@ype-","vt@ype","viewt@ype+","viewt@ype-","viewt@ype","viewtype+","viewtype-","viewtype","prop+","prop-","prop","type+","type-","type","t@ype","t@ype+","t@ype-","abst@ype","abstype","absviewt@ype","absvt@ype","for*","for","while*","while"],keywords_types:["bool","double","byte","int","short","char","void","unit","long","float","string","strptr"],keywords_effects:["0","fun","clo","prf","funclo","cloptr","cloref","ref","ntm","1"],operators:["@","!","|","`",":","$",".","=","#","~","..","...","=>","=<>","=/=>","=>>","=/=>>","<",">","><",".<",">.",".<>.","->","-<>"],brackets:[{open:",(",close:")",token:"delimiter.parenthesis"},{open:"`(",close:")",token:"delimiter.parenthesis"},{open:"%(",close:")",token:"delimiter.parenthesis"},{open:"'(",close:")",token:"delimiter.parenthesis"},{open:"'{",close:"}",token:"delimiter.parenthesis"},{open:"@(",close:")",token:"delimiter.parenthesis"},{open:"@{",close:"}",token:"delimiter.brace"},{open:"@[",close:"]",token:"delimiter.square"},{open:"#[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],symbols:/[=><!~?:&|+\-*\/\^%]+/,IDENTFST:/[a-zA-Z_]/,IDENTRST:/[a-zA-Z0-9_'$]/,symbolic:/[%&+-./:=@~`^|*!$#?<>]/,digit:/[0-9]/,digitseq0:/@digit*/,xdigit:/[0-9A-Za-z]/,xdigitseq0:/@xdigit*/,INTSP:/[lLuU]/,FLOATSP:/[fFlL]/,fexponent:/[eE][+-]?[0-9]+/,fexponent_bin:/[pP][+-]?[0-9]+/,deciexp:/\.[0-9]*@fexponent?/,hexiexp:/\.[0-9a-zA-Z]*@fexponent_bin?/,irregular_keywords:/val[+-]?|case[+-]?|addr\@?|fold\@|free\@|fix\@?|lam\@?|llam\@?|prop[+-]?|type[+-]?|view[+-@]?|viewt@?ype[+-]?|t@?ype[+-]?|v(iew)?t@?ype[+-]?|abst@?ype|absv(iew)?t@?ype|for\*?|while\*?/,ESCHAR:/[ntvbrfa\\\?'"\(\[\{]/,start:"root",tokenizer:{root:[{regex:/[ \t\r\n]+/,action:{token:""}},{regex:/\(\*\)/,action:{token:"invalid"}},{regex:/\(\*/,action:{token:"comment",next:"lexing_COMMENT_block_ml"}},{regex:/\(/,action:"@brackets"},{regex:/\)/,action:"@brackets"},{regex:/\[/,action:"@brackets"},{regex:/\]/,action:"@brackets"},{regex:/\{/,action:"@brackets"},{regex:/\}/,action:"@brackets"},{regex:/,\(/,action:"@brackets"},{regex:/,/,action:{token:"delimiter.comma"}},{regex:/;/,action:{token:"delimiter.semicolon"}},{regex:/@\(/,action:"@brackets"},{regex:/@\[/,action:"@brackets"},{regex:/@\{/,action:"@brackets"},{regex:/:</,action:{token:"keyword",next:"@lexing_EFFECT_commaseq0"}},{regex:/\.@symbolic+/,action:{token:"identifier.sym"}},{regex:/\.@digit*@fexponent@FLOATSP*/,action:{token:"number.float"}},{regex:/\.@digit+/,action:{token:"number.float"}},{regex:/\$@IDENTFST@IDENTRST*/,action:{cases:{"@keywords_dlr":{token:"keyword.dlr"},"@default":{token:"namespace"}}}},{regex:/\#@IDENTFST@IDENTRST*/,action:{cases:{"@keywords_srp":{token:"keyword.srp"},"@default":{token:"identifier"}}}},{regex:/%\(/,action:{token:"delimiter.parenthesis"}},{regex:/^%{(#|\^|\$)?/,action:{token:"keyword",next:"@lexing_EXTCODE",nextEmbedded:"text/javascript"}},{regex:/^%}/,action:{token:"keyword"}},{regex:/'\(/,action:{token:"delimiter.parenthesis"}},{regex:/'\[/,action:{token:"delimiter.bracket"}},{regex:/'\{/,action:{token:"delimiter.brace"}},[/(')(\\@ESCHAR|\\[xX]@xdigit+|\\@digit+)(')/,["string","string.escape","string"]],[/'[^\\']'/,"string"],[/"/,"string.quote","@lexing_DQUOTE"],{regex:/`\(/,action:"@brackets"},{regex:/\\/,action:{token:"punctuation"}},{regex:/@irregular_keywords(?!@IDENTRST)/,action:{token:"keyword"}},{regex:/@IDENTFST@IDENTRST*[<!\[]?/,action:{cases:{"@keywords":{token:"keyword"},"@keywords_types":{token:"type"},"@default":{token:"identifier"}}}},{regex:/\/\/\/\//,action:{token:"comment",next:"@lexing_COMMENT_rest"}},{regex:/\/\/.*$/,action:{token:"comment"}},{regex:/\/\*/,action:{token:"comment",next:"@lexing_COMMENT_block_c"}},{regex:/-<|=</,action:{token:"keyword",next:"@lexing_EFFECT_commaseq0"}},{regex:/@symbolic+/,action:{cases:{"@operators":"keyword","@default":"operator"}}},{regex:/0[xX]@xdigit+(@hexiexp|@fexponent_bin)@FLOATSP*/,action:{token:"number.float"}},{regex:/0[xX]@xdigit+@INTSP*/,action:{token:"number.hex"}},{regex:/0[0-7]+(?![0-9])@INTSP*/,action:{token:"number.octal"}},{regex:/@digit+(@fexponent|@deciexp)@FLOATSP*/,action:{token:"number.float"}},{regex:/@digit@digitseq0@INTSP*/,action:{token:"number.decimal"}},{regex:/@digit+@INTSP*/,action:{token:"number"}}],lexing_COMMENT_block_ml:[[/[^\(\*]+/,"comment"],[/\(\*/,"comment","@push"],[/\(\*/,"comment.invalid"],[/\*\)/,"comment","@pop"],[/\*/,"comment"]],lexing_COMMENT_block_c:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],lexing_COMMENT_rest:[[/$/,"comment","@pop"],[/.*/,"comment"]],lexing_EFFECT_commaseq0:[{regex:/@IDENTFST@IDENTRST+|@digit+/,action:{cases:{"@keywords_effects":{token:"type.effect"},"@default":{token:"identifier"}}}},{regex:/,/,action:{token:"punctuation"}},{regex:/>/,action:{token:"@rematch",next:"@pop"}}],lexing_EXTCODE:[{regex:/^%}/,action:{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}},{regex:/[^%]+/,action:""}],lexing_DQUOTE:[{regex:/"/,action:{token:"string.quote",next:"@pop"}},{regex:/(\{\$)(@IDENTFST@IDENTRST*)(\})/,action:[{token:"string.escape"},{token:"identifier"},{token:"string.escape"}]},{regex:/\\$/,action:{token:"string.escape"}},{regex:/\\(@ESCHAR|[xX]@xdigit+|@digit+)/,action:{token:"string.escape"}},{regex:/[^\\"]+/,action:{token:"string"}}]}}}}]); \ No newline at end of file diff --git a/docs/dist/8183.8183.js b/docs/dist/8183.8183.js deleted file mode 100644 index 0215b983..00000000 --- a/docs/dist/8183.8183.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8183],{68183:(e,t,n)=>{"use strict";n.r(t),n.d(t,{getJavaScriptWorker:()=>N,getTypeScriptWorker:()=>E,setupJavaScript:()=>T,setupTypeScript:()=>O});var r,i,o=n(91429),s=function(){function e(e,t){var n=this;this._modeId=e,this._defaults=t,this._worker=null,this._client=null,this._configChangeListener=this._defaults.onDidChange((function(){return n._stopWorker()})),this._updateExtraLibsToken=0,this._extraLibsChangeListener=this._defaults.onDidExtraLibsChange((function(){return n._updateExtraLibs()}))}return e.prototype._stopWorker=function(){this._worker&&(this._worker.dispose(),this._worker=null),this._client=null},e.prototype.dispose=function(){this._configChangeListener.dispose(),this._extraLibsChangeListener.dispose(),this._stopWorker()},e.prototype._updateExtraLibs=function(){return e=this,t=void 0,r=function(){var e,t;return function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}}(this,(function(n){switch(n.label){case 0:return this._worker?(e=++this._updateExtraLibsToken,[4,this._worker.getProxy()]):[2];case 1:return t=n.sent(),this._updateExtraLibsToken!==e||t.updateExtraLibs(this._defaults.getExtraLibs()),[2]}}))},new((n=void 0)||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}));var e,t,n,r},e.prototype._getClient=function(){var e=this;if(!this._client){this._worker=o.j6.createWebWorker({moduleId:"vs/language/typescript/tsWorker",label:this._modeId,keepIdleModels:!0,createData:{compilerOptions:this._defaults.getCompilerOptions(),extraLibs:this._defaults.getExtraLibs(),customWorkerPath:this._defaults.workerOptions.customWorkerPath}});var t=this._worker.getProxy();this._defaults.getEagerModelSync()&&(t=t.then((function(t){return e._worker?e._worker.withSyncedResources(o.j6.getModels().filter((function(t){return t.getModeId()===e._modeId})).map((function(e){return e.uri}))):t}))),this._client=t}return this._client},e.prototype.getLanguageServiceWorker=function(){for(var e,t=this,n=[],r=0;r<arguments.length;r++)n[r]=arguments[r];return this._getClient().then((function(t){e=t})).then((function(e){if(t._worker)return t._worker.withSyncedResources(n)})).then((function(t){return e}))},e}(),a={"lib.d.ts":!0,"lib.dom.d.ts":!0,"lib.dom.iterable.d.ts":!0,"lib.es2015.collection.d.ts":!0,"lib.es2015.core.d.ts":!0,"lib.es2015.d.ts":!0,"lib.es2015.generator.d.ts":!0,"lib.es2015.iterable.d.ts":!0,"lib.es2015.promise.d.ts":!0,"lib.es2015.proxy.d.ts":!0,"lib.es2015.reflect.d.ts":!0,"lib.es2015.symbol.d.ts":!0,"lib.es2015.symbol.wellknown.d.ts":!0,"lib.es2016.array.include.d.ts":!0,"lib.es2016.d.ts":!0,"lib.es2016.full.d.ts":!0,"lib.es2017.d.ts":!0,"lib.es2017.full.d.ts":!0,"lib.es2017.intl.d.ts":!0,"lib.es2017.object.d.ts":!0,"lib.es2017.sharedmemory.d.ts":!0,"lib.es2017.string.d.ts":!0,"lib.es2017.typedarrays.d.ts":!0,"lib.es2018.asyncgenerator.d.ts":!0,"lib.es2018.asynciterable.d.ts":!0,"lib.es2018.d.ts":!0,"lib.es2018.full.d.ts":!0,"lib.es2018.intl.d.ts":!0,"lib.es2018.promise.d.ts":!0,"lib.es2018.regexp.d.ts":!0,"lib.es2019.array.d.ts":!0,"lib.es2019.d.ts":!0,"lib.es2019.full.d.ts":!0,"lib.es2019.object.d.ts":!0,"lib.es2019.string.d.ts":!0,"lib.es2019.symbol.d.ts":!0,"lib.es2020.bigint.d.ts":!0,"lib.es2020.d.ts":!0,"lib.es2020.full.d.ts":!0,"lib.es2020.intl.d.ts":!0,"lib.es2020.promise.d.ts":!0,"lib.es2020.string.d.ts":!0,"lib.es2020.symbol.wellknown.d.ts":!0,"lib.es5.d.ts":!0,"lib.es6.d.ts":!0,"lib.esnext.d.ts":!0,"lib.esnext.full.d.ts":!0,"lib.esnext.intl.d.ts":!0,"lib.esnext.promise.d.ts":!0,"lib.esnext.string.d.ts":!0,"lib.scripthost.d.ts":!0,"lib.webworker.d.ts":!0,"lib.webworker.importscripts.d.ts":!0},u=(r=function(e,t){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),l=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))},c=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}};function f(e,t,n){if(void 0===n&&(n=0),"string"==typeof e)return e;if(void 0===e)return"";var r="";if(n){r+=t;for(var i=0;i<n;i++)r+=" "}if(r+=e.messageText,n++,e.next)for(var o=0,s=e.next;o<s.length;o++)r+=f(s[o],t,n);return r}function p(e){return e?e.map((function(e){return e.text})).join(""):""}!function(e){e[e.None=0]="None",e[e.Block=1]="Block",e[e.Smart=2]="Smart"}(i||(i={}));var d,h=function(){function e(e){this._worker=e}return e.prototype._textSpanToRange=function(e,t){var n=e.getPositionAt(t.start),r=e.getPositionAt(t.start+t.length);return{startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:r.lineNumber,endColumn:r.column}},e}(),m=function(){function e(e){this._worker=e,this._libFiles={},this._hasFetchedLibFiles=!1,this._fetchLibFilesPromise=null}return e.prototype.isLibFile=function(e){return!!e&&0===e.path.indexOf("/lib.")&&!!a[e.path.slice(1)]},e.prototype.getOrCreateModel=function(e){return o.j6.getModel(e)||(this.isLibFile(e)&&this._hasFetchedLibFiles?o.j6.createModel(this._libFiles[e.path.slice(1)],"javascript",e):null)},e.prototype._containsLibFile=function(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];if(this.isLibFile(r))return!0}return!1},e.prototype.fetchLibFilesIfNecessary=function(e){return l(this,void 0,void 0,(function(){return c(this,(function(t){switch(t.label){case 0:return this._containsLibFile(e)?[4,this._fetchLibFiles()]:[2];case 1:return t.sent(),[2]}}))}))},e.prototype._fetchLibFiles=function(){var e=this;return this._fetchLibFilesPromise||(this._fetchLibFilesPromise=this._worker().then((function(e){return e.getLibFiles()})).then((function(t){e._hasFetchedLibFiles=!0,e._libFiles=t}))),this._fetchLibFilesPromise},e}();!function(e){e[e.Warning=0]="Warning",e[e.Error=1]="Error",e[e.Suggestion=2]="Suggestion",e[e.Message=3]="Message"}(d||(d={}));var g=function(e){function t(t,n,r,i){var s=e.call(this,i)||this;s._libFiles=t,s._defaults=n,s._selector=r,s._disposables=[],s._listener=Object.create(null);var a=function(e){if(e.getModeId()===r){var t,n=e.onDidChangeContent((function(){clearTimeout(t),t=setTimeout((function(){return s._doValidate(e)}),500)}));s._listener[e.uri.toString()]={dispose:function(){n.dispose(),clearTimeout(t)}},s._doValidate(e)}},u=function(e){o.j6.setModelMarkers(e,s._selector,[]);var t=e.uri.toString();s._listener[t]&&(s._listener[t].dispose(),delete s._listener[t])};s._disposables.push(o.j6.onDidCreateModel(a)),s._disposables.push(o.j6.onWillDisposeModel(u)),s._disposables.push(o.j6.onDidChangeModelLanguage((function(e){u(e.model),a(e.model)}))),s._disposables.push({dispose:function(){for(var e=0,t=o.j6.getModels();e<t.length;e++){var n=t[e];u(n)}}});var l=function(){for(var e=0,t=o.j6.getModels();e<t.length;e++){var n=t[e];u(n),a(n)}};return s._disposables.push(s._defaults.onDidChange(l)),s._disposables.push(s._defaults.onDidExtraLibsChange(l)),o.j6.getModels().forEach(a),s}return u(t,e),t.prototype.dispose=function(){this._disposables.forEach((function(e){return e&&e.dispose()})),this._disposables=[]},t.prototype._doValidate=function(e){return l(this,void 0,void 0,(function(){var t,n,r,i,s,a,u,l,f,p=this;return c(this,(function(c){switch(c.label){case 0:return[4,this._worker(e.uri)];case 1:return t=c.sent(),e.isDisposed()?[2]:(n=[],r=this._defaults.getDiagnosticsOptions(),i=r.noSyntaxValidation,s=r.noSemanticValidation,a=r.noSuggestionDiagnostics,i||n.push(t.getSyntacticDiagnostics(e.uri.toString())),s||n.push(t.getSemanticDiagnostics(e.uri.toString())),a||n.push(t.getSuggestionDiagnostics(e.uri.toString())),[4,Promise.all(n)]);case 2:return!(u=c.sent())||e.isDisposed()?[2]:(l=u.reduce((function(e,t){return t.concat(e)}),[]).filter((function(e){return-1===(p._defaults.getDiagnosticsOptions().diagnosticCodesToIgnore||[]).indexOf(e.code)})),f=l.map((function(e){return e.relatedInformation||[]})).reduce((function(e,t){return t.concat(e)}),[]).map((function(e){return e.file?o.Sf.parse(e.file.fileName):null})),[4,this._libFiles.fetchLibFilesIfNecessary(f)]);case 3:return c.sent(),e.isDisposed()||o.j6.setModelMarkers(e,this._selector,l.map((function(t){return p._convertDiagnostics(e,t)}))),[2]}}))}))},t.prototype._convertDiagnostics=function(e,t){var n=t.start||0,r=t.length||1,i=e.getPositionAt(n),s=i.lineNumber,a=i.column,u=e.getPositionAt(n+r),l=u.lineNumber,c=u.column,p=[];return t.reportsUnnecessary&&p.push(o.eB.Unnecessary),t.reportsDeprecated&&p.push(o.eB.Deprecated),{severity:this._tsDiagnosticCategoryToMarkerSeverity(t.category),startLineNumber:s,startColumn:a,endLineNumber:l,endColumn:c,message:f(t.messageText,"\n"),code:t.code.toString(),tags:p,relatedInformation:this._convertRelatedInformation(e,t.relatedInformation)}},t.prototype._convertRelatedInformation=function(e,t){var n=this;if(t){var r=[];return t.forEach((function(t){var i=e;if(t.file){var s=o.Sf.parse(t.file.fileName);i=n._libFiles.getOrCreateModel(s)}if(i){var a=t.start||0,u=t.length||1,l=i.getPositionAt(a),c=l.lineNumber,p=l.column,d=i.getPositionAt(a+u),h=d.lineNumber,m=d.column;r.push({resource:i.uri,startLineNumber:c,startColumn:p,endLineNumber:h,endColumn:m,message:f(t.messageText,"\n")})}})),r}},t.prototype._tsDiagnosticCategoryToMarkerSeverity=function(e){switch(e){case d.Error:return o.ZL.Error;case d.Message:return o.ZL.Info;case d.Warning:return o.ZL.Warning;case d.Suggestion:return o.ZL.Hint}return o.ZL.Info},t}(h),b=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),Object.defineProperty(t.prototype,"triggerCharacters",{get:function(){return["."]},enumerable:!1,configurable:!0}),t.prototype.provideCompletionItems=function(e,n,r,i){return l(this,void 0,void 0,(function(){var r,i,s,a,u;return c(this,(function(l){switch(l.label){case 0:return r=e.getWordUntilPosition(n),i=new o.e6(n.lineNumber,r.startColumn,n.lineNumber,r.endColumn),s=e.uri,a=e.getOffsetAt(n),[4,this._worker(s)];case 1:return[4,l.sent().getCompletionsAtPosition(s.toString(),a)];case 2:return!(u=l.sent())||e.isDisposed()?[2]:[2,{suggestions:u.entries.map((function(r){var u,l=i;if(r.replacementSpan){var c=e.getPositionAt(r.replacementSpan.start),f=e.getPositionAt(r.replacementSpan.start+r.replacementSpan.length);l=new o.e6(c.lineNumber,c.column,f.lineNumber,f.column)}var p=[];return-1!==(null===(u=r.kindModifiers)||void 0===u?void 0:u.indexOf("deprecated"))&&p.push(o.Mj.CompletionItemTag.Deprecated),{uri:s,position:n,offset:a,range:l,label:r.name,insertText:r.name,sortText:r.sortText,kind:t.convertKind(r.kind),tags:p}}))}]}}))}))},t.prototype.resolveCompletionItem=function(e,n){return l(this,void 0,void 0,(function(){var n,r,i,o,s;return c(this,(function(a){switch(a.label){case 0:return r=(n=e).uri,i=n.position,o=n.offset,[4,this._worker(r)];case 1:return[4,a.sent().getCompletionEntryDetails(r.toString(),o,n.label)];case 2:return(s=a.sent())?[2,{uri:r,position:i,label:s.name,kind:t.convertKind(s.kind),detail:p(s.displayParts),documentation:{value:t.createDocumentationString(s)}}]:[2,n]}}))}))},t.convertKind=function(e){switch(e){case C.primitiveType:case C.keyword:return o.Mj.CompletionItemKind.Keyword;case C.variable:case C.localVariable:return o.Mj.CompletionItemKind.Variable;case C.memberVariable:case C.memberGetAccessor:case C.memberSetAccessor:return o.Mj.CompletionItemKind.Field;case C.function:case C.memberFunction:case C.constructSignature:case C.callSignature:case C.indexSignature:return o.Mj.CompletionItemKind.Function;case C.enum:return o.Mj.CompletionItemKind.Enum;case C.module:return o.Mj.CompletionItemKind.Module;case C.class:return o.Mj.CompletionItemKind.Class;case C.interface:return o.Mj.CompletionItemKind.Interface;case C.warning:return o.Mj.CompletionItemKind.File}return o.Mj.CompletionItemKind.Property},t.createDocumentationString=function(e){var t=p(e.documentation);if(e.tags)for(var n=0,r=e.tags;n<r.length;n++)t+="\n\n"+v(r[n]);return t},t}(h);function v(e){var t="*@"+e.name+"*";if("param"===e.name&&e.text){var n=e.text.split(" "),r=n[0],i=n.slice(1);t+="`"+r+"`",i.length>0&&(t+=" — "+i.join(" "))}else e.text&&(t+=" — "+e.text);return t}var y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.signatureHelpTriggerCharacters=["(",","],t}return u(t,e),t.prototype.provideSignatureHelp=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,i,o;return c(this,(function(s){switch(s.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return[4,s.sent().getSignatureHelpItems(n.toString(),r)];case 2:return!(i=s.sent())||e.isDisposed()?[2]:(o={activeSignature:i.selectedItemIndex,activeParameter:i.argumentIndex,signatures:[]},i.items.forEach((function(e){var t={label:"",parameters:[]};t.documentation={value:p(e.documentation)},t.label+=p(e.prefixDisplayParts),e.parameters.forEach((function(n,r,i){var o=p(n.displayParts),s={label:o,documentation:{value:p(n.documentation)}};t.label+=o,t.parameters.push(s),r<i.length-1&&(t.label+=p(e.separatorDisplayParts))})),t.label+=p(e.suffixDisplayParts),o.signatures.push(t)})),[2,{value:o,dispose:function(){}}])}}))}))},t}(h),_=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.provideHover=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,i,o,s,a;return c(this,(function(u){switch(u.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return[4,u.sent().getQuickInfoAtPosition(n.toString(),r)];case 2:return!(i=u.sent())||e.isDisposed()?[2]:(o=p(i.documentation),s=i.tags?i.tags.map((function(e){return v(e)})).join(" \n\n"):"",a=p(i.displayParts),[2,{range:this._textSpanToRange(e,i.textSpan),contents:[{value:"```typescript\n"+a+"\n```\n"},{value:o+(s?"\n\n"+s:"")}]}])}}))}))},t}(h),S=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.provideDocumentHighlights=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,i,s=this;return c(this,(function(a){switch(a.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return[4,a.sent().getOccurrencesAtPosition(n.toString(),r)];case 2:return!(i=a.sent())||e.isDisposed()?[2]:[2,i.map((function(t){return{range:s._textSpanToRange(e,t.textSpan),kind:t.isWriteAccess?o.Mj.DocumentHighlightKind.Write:o.Mj.DocumentHighlightKind.Text}}))]}}))}))},t}(h),w=function(e){function t(t,n){var r=e.call(this,n)||this;return r._libFiles=t,r}return u(t,e),t.prototype.provideDefinition=function(e,t,n){return l(this,void 0,void 0,(function(){var n,r,i,s,a,u,l,f,p;return c(this,(function(c){switch(c.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return[4,c.sent().getDefinitionAtPosition(n.toString(),r)];case 2:return!(i=c.sent())||e.isDisposed()?[2]:[4,this._libFiles.fetchLibFilesIfNecessary(i.map((function(e){return o.Sf.parse(e.fileName)})))];case 3:if(c.sent(),e.isDisposed())return[2];for(s=[],a=0,u=i;a<u.length;a++)l=u[a],f=o.Sf.parse(l.fileName),(p=this._libFiles.getOrCreateModel(f))&&s.push({uri:f,range:this._textSpanToRange(p,l.textSpan)});return[2,s]}}))}))},t}(h),k=function(e){function t(t,n){var r=e.call(this,n)||this;return r._libFiles=t,r}return u(t,e),t.prototype.provideReferences=function(e,t,n,r){return l(this,void 0,void 0,(function(){var n,r,i,s,a,u,l,f,p;return c(this,(function(c){switch(c.label){case 0:return n=e.uri,r=e.getOffsetAt(t),[4,this._worker(n)];case 1:return[4,c.sent().getReferencesAtPosition(n.toString(),r)];case 2:return!(i=c.sent())||e.isDisposed()?[2]:[4,this._libFiles.fetchLibFilesIfNecessary(i.map((function(e){return o.Sf.parse(e.fileName)})))];case 3:if(c.sent(),e.isDisposed())return[2];for(s=[],a=0,u=i;a<u.length;a++)l=u[a],f=o.Sf.parse(l.fileName),(p=this._libFiles.getOrCreateModel(f))&&s.push({uri:f,range:this._textSpanToRange(p,l.textSpan)});return[2,s]}}))}))},t}(h),x=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.provideDocumentSymbols=function(e,t){return l(this,void 0,void 0,(function(){var t,n,r,i,s=this;return c(this,(function(a){switch(a.label){case 0:return t=e.uri,[4,this._worker(t)];case 1:return[4,a.sent().getNavigationBarItems(t.toString())];case 2:return!(n=a.sent())||e.isDisposed()?[2]:(r=function(t,n,i){var a={name:n.text,detail:"",kind:M[n.kind]||o.Mj.SymbolKind.Variable,range:s._textSpanToRange(e,n.spans[0]),selectionRange:s._textSpanToRange(e,n.spans[0]),tags:[],containerName:i};if(n.childItems&&n.childItems.length>0)for(var u=0,l=n.childItems;u<l.length;u++){var c=l[u];r(t,c,a.name)}t.push(a)},i=[],n.forEach((function(e){return r(i,e)})),[2,i])}}))}))},t}(h),C=function(){function e(){}return e.unknown="",e.keyword="keyword",e.script="script",e.module="module",e.class="class",e.interface="interface",e.type="type",e.enum="enum",e.variable="var",e.localVariable="local var",e.function="function",e.localFunction="local function",e.memberFunction="method",e.memberGetAccessor="getter",e.memberSetAccessor="setter",e.memberVariable="property",e.constructorImplementation="constructor",e.callSignature="call",e.indexSignature="index",e.constructSignature="construct",e.parameter="parameter",e.typeParameter="type parameter",e.primitiveType="primitive type",e.label="label",e.alias="alias",e.const="const",e.let="let",e.warning="warning",e}(),M=Object.create(null);M[C.module]=o.Mj.SymbolKind.Module,M[C.class]=o.Mj.SymbolKind.Class,M[C.enum]=o.Mj.SymbolKind.Enum,M[C.interface]=o.Mj.SymbolKind.Interface,M[C.memberFunction]=o.Mj.SymbolKind.Method,M[C.memberVariable]=o.Mj.SymbolKind.Property,M[C.memberGetAccessor]=o.Mj.SymbolKind.Property,M[C.memberSetAccessor]=o.Mj.SymbolKind.Property,M[C.variable]=o.Mj.SymbolKind.Variable,M[C.const]=o.Mj.SymbolKind.Variable,M[C.localVariable]=o.Mj.SymbolKind.Variable,M[C.variable]=o.Mj.SymbolKind.Variable,M[C.function]=o.Mj.SymbolKind.Function,M[C.localFunction]=o.Mj.SymbolKind.Function;var j,F,I=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t._convertOptions=function(e){return{ConvertTabsToSpaces:e.insertSpaces,TabSize:e.tabSize,IndentSize:e.tabSize,IndentStyle:i.Smart,NewLineCharacter:"\n",InsertSpaceAfterCommaDelimiter:!0,InsertSpaceAfterSemicolonInForStatements:!0,InsertSpaceBeforeAndAfterBinaryOperators:!0,InsertSpaceAfterKeywordsInControlFlowStatements:!0,InsertSpaceAfterFunctionKeywordForAnonymousFunctions:!0,InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis:!1,InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets:!1,InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces:!1,PlaceOpenBraceOnNewLineForControlBlocks:!1,PlaceOpenBraceOnNewLineForFunctions:!1}},t.prototype._convertTextChanges=function(e,t){return{text:t.newText,range:this._textSpanToRange(e,t.span)}},t}(h),P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.provideDocumentRangeFormattingEdits=function(e,t,n,r){return l(this,void 0,void 0,(function(){var r,i,o,s,a=this;return c(this,(function(u){switch(u.label){case 0:return r=e.uri,i=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),o=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),[4,this._worker(r)];case 1:return[4,u.sent().getFormattingEditsForRange(r.toString(),i,o,I._convertOptions(n))];case 2:return!(s=u.sent())||e.isDisposed()?[2]:[2,s.map((function(t){return a._convertTextChanges(e,t)}))]}}))}))},t}(I),L=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),Object.defineProperty(t.prototype,"autoFormatTriggerCharacters",{get:function(){return[";","}","\n"]},enumerable:!1,configurable:!0}),t.prototype.provideOnTypeFormattingEdits=function(e,t,n,r,i){return l(this,void 0,void 0,(function(){var i,o,s,a=this;return c(this,(function(u){switch(u.label){case 0:return i=e.uri,o=e.getOffsetAt(t),[4,this._worker(i)];case 1:return[4,u.sent().getFormattingEditsAfterKeystroke(i.toString(),o,n,I._convertOptions(r))];case 2:return!(s=u.sent())||e.isDisposed()?[2]:[2,s.map((function(t){return a._convertTextChanges(e,t)}))]}}))}))},t}(I),D=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.provideCodeActions=function(e,t,n,r){return l(this,void 0,void 0,(function(){var r,i,o,s,a,u,l=this;return c(this,(function(c){switch(c.label){case 0:return r=e.uri,i=e.getOffsetAt({lineNumber:t.startLineNumber,column:t.startColumn}),o=e.getOffsetAt({lineNumber:t.endLineNumber,column:t.endColumn}),s=I._convertOptions(e.getOptions()),a=n.markers.filter((function(e){return e.code})).map((function(e){return e.code})).map(Number),[4,this._worker(r)];case 1:return[4,c.sent().getCodeFixesAtPosition(r.toString(),i,o,a,s)];case 2:return!(u=c.sent())||e.isDisposed()?[2,{actions:[],dispose:function(){}}]:[2,{actions:u.filter((function(e){return 0===e.changes.filter((function(e){return e.isNewFile})).length})).map((function(t){return l._tsCodeFixActionToMonacoCodeAction(e,n,t)})),dispose:function(){}}]}}))}))},t.prototype._tsCodeFixActionToMonacoCodeAction=function(e,t,n){for(var r=[],i=0,o=n.changes;i<o.length;i++)for(var s=0,a=o[i].textChanges;s<a.length;s++){var u=a[s];r.push({resource:e.uri,edit:{range:this._textSpanToRange(e,u.span),text:u.newText}})}return{title:n.description,edit:{edits:r},diagnostics:t.markers,kind:"quickfix"}},t}(I),A=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return u(t,e),t.prototype.provideRenameEdits=function(e,t,n,r){return l(this,void 0,void 0,(function(){var r,i,s,a,u,l,f,p,d,h;return c(this,(function(c){switch(c.label){case 0:return r=e.uri,i=r.toString(),s=e.getOffsetAt(t),[4,this._worker(r)];case 1:return[4,(a=c.sent()).getRenameInfo(i,s,{allowRenameOfImportPath:!1})];case 2:if(!1===(u=c.sent()).canRename)return[2,{edits:[],rejectReason:u.localizedErrorMessage}];if(void 0!==u.fileToRename)throw new Error("Renaming files is not supported.");return[4,a.findRenameLocations(i,s,!1,!1,!1)];case 3:if(!(l=c.sent())||e.isDisposed())return[2];for(f=[],p=0,d=l;p<d.length;p++)h=d[p],f.push({resource:o.Sf.parse(h.fileName),edit:{range:this._textSpanToRange(e,h.textSpan),text:n}});return[2,{edits:f}]}}))}))},t}(h);function O(e){F=K(e,"typescript")}function T(e){j=K(e,"javascript")}function N(){return new Promise((function(e,t){if(!j)return t("JavaScript not registered!");e(j)}))}function E(){return new Promise((function(e,t){if(!F)return t("TypeScript not registered!");e(F)}))}function K(e,t){var n=new s(t,e),r=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.getLanguageServiceWorker.apply(n,e)},i=new m(r);return o.Mj.registerCompletionItemProvider(t,new b(r)),o.Mj.registerSignatureHelpProvider(t,new y(r)),o.Mj.registerHoverProvider(t,new _(r)),o.Mj.registerDocumentHighlightProvider(t,new S(r)),o.Mj.registerDefinitionProvider(t,new w(i,r)),o.Mj.registerReferenceProvider(t,new k(i,r)),o.Mj.registerDocumentSymbolProvider(t,new x(r)),o.Mj.registerDocumentRangeFormattingEditProvider(t,new P(r)),o.Mj.registerOnTypeFormattingEditProvider(t,new L(r)),o.Mj.registerCodeActionProvider(t,new D(r)),o.Mj.registerRenameProvider(t,new A(r)),new g(i,e,t,r),r}}}]); \ No newline at end of file diff --git a/docs/dist/8424.8424.js b/docs/dist/8424.8424.js deleted file mode 100644 index 01688e76..00000000 --- a/docs/dist/8424.8424.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8424],{98424:(t,e,i)=>{"use strict";i.r(e),i.d(e,{conf:()=>r,language:()=>m});var r={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g,comments:{blockComment:["{#","#}"]},brackets:[["{#","#}"],["{%","%}"],["{{","}}"],["(",")"],["[","]"],["\x3c!--","--\x3e"],["<",">"]],autoClosingPairs:[{open:"{# ",close:" #}"},{open:"{% ",close:" %}"},{open:"{{ ",close:" }}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:'"',close:'"'},{open:"'",close:"'"},{open:"<",close:">"}]},m={defaultToken:"",tokenPostfix:"",ignoreCase:!0,keywords:["apply","autoescape","block","deprecated","do","embed","extends","flush","for","from","if","import","include","macro","sandbox","set","use","verbatim","with","endapply","endautoescape","endblock","endembed","endfor","endif","endmacro","endsandbox","endset","endwith","true","false"],tokenizer:{root:[[/\s+/],[/{#/,"comment.twig","@commentState"],[/{%[-~]?/,"delimiter.twig","@blockState"],[/{{[-~]?/,"delimiter.twig","@variableState"],[/<!DOCTYPE/,"metatag.html","@doctype"],[/<!--/,"comment.html","@comment"],[/(<)((?:[\w\-]+:)?[\w\-]+)(\s*)(\/>)/,["delimiter.html","tag.html","","delimiter.html"]],[/(<)(script)/,["delimiter.html",{token:"tag.html",next:"@script"}]],[/(<)(style)/,["delimiter.html",{token:"tag.html",next:"@style"}]],[/(<)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/(<\/)((?:[\w\-]+:)?[\w\-]+)/,["delimiter.html",{token:"tag.html",next:"@otherTag"}]],[/</,"delimiter.html"],[/[^<]+/]],commentState:[[/#}/,"comment.twig","@pop"],[/./,"comment.twig"]],blockState:[[/[-~]?%}/,"delimiter.twig","@pop"],[/\s+/],[/(verbatim)(\s*)([-~]?%})/,["keyword.twig","",{token:"delimiter.twig",next:"@rawDataState"}]],{include:"expression"}],rawDataState:[[/({%[-~]?)(\s*)(endverbatim)(\s*)([-~]?%})/,["delimiter.twig","","keyword.twig","",{token:"delimiter.twig",next:"@popall"}]],[/./,"string.twig"]],variableState:[[/[-~]?}}/,"delimiter.twig","@pop"],{include:"expression"}],stringState:[[/"/,"string.twig","@pop"],[/#{\s*/,"string.twig","@interpolationState"],[/[^#"\\]*(?:(?:\\.|#(?!\{))[^#"\\]*)*/,"string.twig"]],interpolationState:[[/}/,"string.twig","@pop"],{include:"expression"}],expression:[[/\s+/],[/\+|-|\/{1,2}|%|\*{1,2}/,"operators.twig"],[/(and|or|not|b-and|b-xor|b-or)(\s+)/,["operators.twig",""]],[/==|!=|<|>|>=|<=/,"operators.twig"],[/(starts with|ends with|matches)(\s+)/,["operators.twig",""]],[/(in)(\s+)/,["operators.twig",""]],[/(is)(\s+)/,["operators.twig",""]],[/\||~|:|\.{1,2}|\?{1,2}/,"operators.twig"],[/[^\W\d][\w]*/,{cases:{"@keywords":"keyword.twig","@default":"variable.twig"}}],[/\d+(\.\d+)?/,"number.twig"],[/\(|\)|\[|\]|{|}|,/,"delimiter.twig"],[/"([^#"\\]*(?:\\.[^#"\\]*)*)"|\'([^\'\\]*(?:\\.[^\'\\]*)*)\'/,"string.twig"],[/"/,"string.twig","@stringState"],[/=>/,"operators.twig"],[/=/,"operators.twig"]],doctype:[[/[^>]+/,"metatag.content.html"],[/>/,"metatag.html","@pop"]],comment:[[/-->/,"comment.html","@pop"],[/[^-]+/,"comment.content.html"],[/./,"comment.content.html"]],otherTag:[[/\/?>/,"delimiter.html","@pop"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/]],script:[[/type/,"attribute.name.html","@scriptAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/(<\/)(script\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],scriptAfterType:[[/=/,"delimiter.html","@scriptAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@scriptWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@scriptEmbedded",nextEmbedded:"text/javascript"}],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptWithCustomType:[[/>/,{token:"delimiter.html",next:"@scriptEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/script\s*>/,{token:"@rematch",next:"@pop"}]],scriptEmbedded:[[/<\/script/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]],style:[[/type/,"attribute.name.html","@styleAfterType"],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/(<\/)(style\s*)(>)/,["delimiter.html","tag.html",{token:"delimiter.html",next:"@pop"}]]],styleAfterType:[[/=/,"delimiter.html","@styleAfterTypeEquals"],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleAfterTypeEquals:[[/"([^"]*)"/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/'([^']*)'/,{token:"attribute.value.html",switchTo:"@styleWithCustomType.$1"}],[/>/,{token:"delimiter.html",next:"@styleEmbedded",nextEmbedded:"text/css"}],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleWithCustomType:[[/>/,{token:"delimiter.html",next:"@styleEmbedded.$S2",nextEmbedded:"$S2"}],[/"([^"]*)"/,"attribute.value.html"],[/'([^']*)'/,"attribute.value.html"],[/[\w\-]+/,"attribute.name.html"],[/=/,"delimiter.html"],[/[ \t\r\n]+/],[/<\/style\s*>/,{token:"@rematch",next:"@pop"}]],styleEmbedded:[[/<\/style/,{token:"@rematch",next:"@pop",nextEmbedded:"@pop"}],[/[^<]+/,""]]}}}}]); \ No newline at end of file diff --git a/docs/dist/848.848.js b/docs/dist/848.848.js deleted file mode 100644 index e499777c..00000000 --- a/docs/dist/848.848.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[848],{40848:(e,n,t)=>{"use strict";t.r(n),t.d(n,{conf:()=>i,language:()=>s});var i={comments:{lineComment:"*"},brackets:[["[","]"],["(",")"]]},s={defaultToken:"invalid",ignoreCase:!0,tokenPostfix:".abap",keywords:["abap-source","abbreviated","abstract","accept","accepting","according","activation","actual","add","add-corresponding","adjacent","after","alias","aliases","align","all","allocate","alpha","analysis","analyzer","append","appendage","appending","application","archive","area","arithmetic","as","ascending","aspect","assert","assign","assigned","assigning","association","asynchronous","at","attributes","authority","authority-check","avg","back","background","backup","backward","badi","base","before","begin","big","binary","bintohex","bit","black","blank","blanks","blob","block","blocks","blue","bound","boundaries","bounds","boxed","break-point","buffer","by","bypassing","byte","byte-order","call","calling","case","cast","casting","catch","center","centered","chain","chain-input","chain-request","change","changing","channels","character","char-to-hex","check","checkbox","ci_","circular","class","class-coding","class-data","class-events","class-methods","class-pool","cleanup","clear","client","clob","clock","close","coalesce","code","coding","col_background","col_group","col_heading","col_key","col_negative","col_normal","col_positive","col_total","collect","color","column","columns","comment","comments","commit","common","communication","comparing","component","components","compression","compute","concat","concat_with_space","concatenate","cond","condition","connect","connection","constants","context","contexts","continue","control","controls","conv","conversion","convert","copies","copy","corresponding","country","cover","cpi","create","creating","critical","currency","currency_conversion","current","cursor","cursor-selection","customer","customer-function","dangerous","data","database","datainfo","dataset","date","dats_add_days","dats_add_months","dats_days_between","dats_is_valid","daylight","dd/mm/yy","dd/mm/yyyy","ddmmyy","deallocate","decimal_shift","decimals","declarations","deep","default","deferred","define","defining","definition","delete","deleting","demand","department","descending","describe","destination","detail","dialog","directory","disconnect","display","display-mode","distinct","divide","divide-corresponding","division","do","dummy","duplicate","duplicates","duration","during","dynamic","dynpro","edit","editor-call","else","elseif","empty","enabled","enabling","encoding","end","endat","endcase","endcatch","endchain","endclass","enddo","endenhancement","end-enhancement-section","endexec","endform","endfunction","endian","endif","ending","endinterface","end-lines","endloop","endmethod","endmodule","end-of-definition","end-of-editing","end-of-file","end-of-page","end-of-selection","endon","endprovide","endselect","end-test-injection","end-test-seam","endtry","endwhile","endwith","engineering","enhancement","enhancement-point","enhancements","enhancement-section","entries","entry","enum","environment","errormessage","errors","escaping","event","events","exact","except","exception","exceptions","exception-table","exclude","excluding","exec","execute","exists","exit","exit-command","expand","expanding","expiration","explicit","exponent","export","exporting","extend","extended","extension","extract","fail","fetch","field","field-groups","fields","field-symbol","field-symbols","file","filter","filters","filter-table","final","first","first-line","fixed-point","fkeq","fkge","flush","font","for","form","format","forward","found","frame","frames","free","friends","from","function","functionality","function-pool","further","gaps","generate","get","giving","gkeq","gkge","global","grant","green","group","groups","handle","handler","harmless","hashed","having","hdb","header","headers","heading","head-lines","help-id","help-request","hextobin","hide","high","hint","hold","hotspot","icon","id","identification","identifier","ids","if","ignore","ignoring","immediately","implementation","implementations","implemented","implicit","import","importing","inactive","incl","include","includes","including","increment","index","index-line","infotypes","inheriting","init","initial","initialization","inner","inout","input","instance","instances","instr","intensified","interface","interface-pool","interfaces","internal","intervals","into","inverse","inverted-date","is","iso","job","join","keep","keeping","kernel","key","keys","keywords","kind","language","last","late","layout","leading","leave","left","left-justified","leftplus","leftspace","legacy","length","let","level","levels","like","line","line-count","linefeed","line-selection","line-size","list","listbox","list-processing","little","llang","load","load-of-program","lob","local","locale","locator","logfile","logical","log-point","long","loop","low","lower","lpad","lpi","ltrim","mail","main","major-id","mapping","margin","mark","mask","matchcode","max","maximum","medium","members","memory","mesh","message","message-id","messages","messaging","method","methods","min","minimum","minor-id","mm/dd/yy","mm/dd/yyyy","mmddyy","mode","modif","modifier","modify","module","move","move-corresponding","multiply","multiply-corresponding","name","nametab","native","nested","nesting","new","new-line","new-page","new-section","next","no","node","nodes","no-display","no-extension","no-gap","no-gaps","no-grouping","no-heading","non-unicode","non-unique","no-scrolling","no-sign","no-title","no-topofpage","no-zero","null","number","object","objects","obligatory","occurrence","occurrences","occurs","of","off","offset","ole","on","only","open","option","optional","options","order","other","others","out","outer","output","output-length","overflow","overlay","pack","package","pad","padding","page","pages","parameter","parameters","parameter-table","part","partially","pattern","percentage","perform","performing","person","pf1","pf10","pf11","pf12","pf13","pf14","pf15","pf2","pf3","pf4","pf5","pf6","pf7","pf8","pf9","pf-status","pink","places","pool","pos_high","pos_low","position","pragmas","precompiled","preferred","preserving","primary","print","print-control","priority","private","procedure","process","program","property","protected","provide","public","push","pushbutton","put","queue-only","quickinfo","radiobutton","raise","raising","range","ranges","read","reader","read-only","receive","received","receiver","receiving","red","redefinition","reduce","reduced","ref","reference","refresh","regex","reject","remote","renaming","replacement","replacing","report","request","requested","reserve","reset","resolution","respecting","responsible","result","results","resumable","resume","retry","return","returncode","returning","returns","right","right-justified","rightplus","rightspace","risk","rmc_communication_failure","rmc_invalid_status","rmc_system_failure","role","rollback","rows","rpad","rtrim","run","sap","sap-spool","saving","scale_preserving","scale_preserving_scientific","scan","scientific","scientific_with_leading_zero","scroll","scroll-boundary","scrolling","search","secondary","seconds","section","select","selection","selections","selection-screen","selection-set","selection-sets","selection-table","select-options","send","separate","separated","set","shared","shift","short","shortdump-id","sign_as_postfix","single","size","skip","skipping","smart","some","sort","sortable","sorted","source","specified","split","spool","spots","sql","sqlscript","stable","stamp","standard","starting","start-of-editing","start-of-selection","state","statement","statements","static","statics","statusinfo","step-loop","stop","structure","structures","style","subkey","submatches","submit","subroutine","subscreen","subtract","subtract-corresponding","suffix","sum","summary","summing","supplied","supply","suppress","switch","switchstates","symbol","syncpoints","syntax","syntax-check","syntax-trace","system-call","system-exceptions","system-exit","tab","tabbed","tables","tableview","tabstrip","target","task","tasks","test","testing","test-injection","test-seam","text","textpool","then","throw","time","times","timestamp","timezone","tims_is_valid","title","titlebar","title-lines","to","tokenization","tokens","top-lines","top-of-page","trace-file","trace-table","trailing","transaction","transfer","transformation","transporting","trmac","truncate","truncation","try","tstmp_add_seconds","tstmp_current_utctimestamp","tstmp_is_valid","tstmp_seconds_between","type","type-pool","type-pools","types","uline","unassign","under","unicode","union","unique","unit_conversion","unix","unpack","until","unwind","up","update","upper","user","user-command","using","utf-8","valid","value","value-request","values","vary","varying","verification-message","version","via","view","visible","wait","warning","when","whenever","where","while","width","window","windows","with","with-heading","without","with-title","word","work","write","writer","xml","xsd","yellow","yes","yymmdd","zero","zone","abs","acos","asin","atan","bit-set","boolc","boolx","ceil","char_off","charlen","cmax","cmin","concat_lines_of","condense","contains","contains_any_not_of","contains_any_of","cos","cosh","count","count_any_not_of","count_any_of","dbmaxlen","distance","escape","exp","find","find_any_not_of","find_any_of","find_end","floor","frac","from_mixed","insert","ipow","line_exists","line_index","lines","log","log10","match","matches","nmax","nmin","numofchar","repeat","replace","rescale","reverse","round","segment","shift_left","shift_right","sign","sin","sinh","sqrt","strlen","substring","substring_after","substring_before","substring_from","substring_to","tan","tanh","to_lower","to_mixed","to_upper","translate","trunc","utclong_add","utclong_current","utclong_diff","xsdbool","xstrlen"],typeKeywords:["b","c","d","decfloat16","decfloat34","f","i","int8","n","p","s","string","t","utclong","x","xstring","any","clike","csequence","decfloat","numeric","simple","xsequence","table","hashed","index","sorted","standard","accp","char","clnt","cuky","curr","dats","dec","df16_dec","df16_raw","df34_dec","df34_raw","fltp","int1","int2","int4","lang","lchr","lraw","numc","quan","raw","rawstring","sstring","tims","unit","df16_scl","df34_scl","prec","varc","abap_bool","space","me","syst","sy","screen"],operators:[" +"," -","/","*","**","div","mod","=","#","@","&","&&","bit-and","bit-not","bit-or","bit-xor","m","o","z","and","equiv","not","or"," < "," > ","<=",">=","<>","><","=<","=>","between","bt","byte-ca","byte-cn","byte-co","byte-cs","byte-na","byte-ns","ca","cn","co","cp","cs","eq","ge","gt","in","le","lt","na","nb","ne","np","ns"],symbols:/[=><!~?&+\-*\/\^%#@]+/,tokenizer:{root:[[/[a-z_$][\w-$]*/,{cases:{"@typeKeywords":"keyword","@keywords":"keyword","@operators":"operator","@default":"identifier"}}],[/<[\w]+>/,"identifier"],{include:"@whitespace"},[/[:,.]/,"delimiter"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}],[/'/,{token:"string",bracket:"@open",next:"@stringquote"}],[/`/,{token:"string",bracket:"@open",next:"@stringping"}],[/\|/,{token:"string",bracket:"@open",next:"@stringtemplate"}],[/\d+/,"number"]],stringtemplate:[[/[^\\\|]+/,"string"],[/\\\|/,"string"],[/\|/,{token:"string",bracket:"@close",next:"@pop"}]],stringping:[[/[^\\`]+/,"string"],[/`/,{token:"string",bracket:"@close",next:"@pop"}]],stringquote:[[/[^\\']+/,"string"],[/'/,{token:"string",bracket:"@close",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/^\*.*$/,"comment"],[/\".*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/854.854.js b/docs/dist/854.854.js deleted file mode 100644 index 6a2b3af0..00000000 --- a/docs/dist/854.854.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[854],{60854:(e,t,r)=>{"use strict";r.r(t),r.d(t,{conf:()=>s,language:()=>n});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\@\#%\^\&\*\(\)\=\$\-\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{blockComment:["###","###"],lineComment:"#"},folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},n={defaultToken:"",ignoreCase:!1,tokenPostfix:".mips",regEx:/\/(?!\/\/)(?:[^\/\\]|\\.)*\/[igm]*/,keywords:[".data",".text","syscall","trap","add","addu","addi","addiu","and","andi","div","divu","mult","multu","nor","or","ori","sll","slv","sra","srav","srl","srlv","sub","subu","xor","xori","lhi","lho","lhi","llo","slt","slti","sltu","sltiu","beq","bgtz","blez","bne","j","jal","jalr","jr","lb","lbu","lh","lhu","lw","li","la","sb","sh","sw","mfhi","mflo","mthi","mtlo","move"],symbols:/[\.,\:]+/,escapes:/\\(?:[abfnrtv\\"'$]|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\$[a-zA-Z_]\w*/,"variable.predefined"],[/[.a-zA-Z_]\w*/,{cases:{this:"variable.predefined","@keywords":{token:"keyword.$0"},"@default":""}}],[/[ \t\r\n]+/,""],[/#.*$/,"comment"],["///",{token:"regexp",next:"@hereregexp"}],[/^(\s*)(@regEx)/,["","regexp"]],[/(\,)(\s*)(@regEx)/,["delimiter","","regexp"]],[/(\:)(\s*)(@regEx)/,["delimiter","","regexp"]],[/@symbols/,"delimiter"],[/\d+[eE]([\-+]?\d+)?/,"number.float"],[/\d+\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F]+/,"number.hex"],[/0[0-7]+(?!\d)/,"number.octal"],[/\d+/,"number"],[/[,.]/,"delimiter"],[/"""/,"string",'@herestring."""'],[/'''/,"string","@herestring.'''"],[/"/,{cases:{"@eos":"string","@default":{token:"string",next:'@string."'}}}],[/'/,{cases:{"@eos":"string","@default":{token:"string",next:"@string.'"}}}]],string:[[/[^"'\#\\]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/\./,"string.escape.invalid"],[/#{/,{cases:{'$S2=="':{token:"string",next:"root.interpolatedstring"},"@default":"string"}}],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/#/,"string"]],herestring:[[/("""|''')/,{cases:{"$1==$S2":{token:"string",next:"@pop"},"@default":"string"}}],[/[^#\\'"]+/,"string"],[/['"]+/,"string"],[/@escapes/,"string.escape"],[/\./,"string.escape.invalid"],[/#{/,{token:"string.quote",next:"root.interpolatedstring"}],[/#/,"string"]],comment:[[/[^#]+/,"comment"],[/#/,"comment"]],hereregexp:[[/[^\\\/#]+/,"regexp"],[/\\./,"regexp"],[/#.*$/,"comment"],["///[igm]*",{token:"regexp",next:"@pop"}],[/\//,"regexp"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/8670.8670.js b/docs/dist/8670.8670.js deleted file mode 100644 index 23f6eb52..00000000 --- a/docs/dist/8670.8670.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8670],{88670:(e,r,i)=>{"use strict";i.r(r),i.d(r,{conf:()=>o,language:()=>t});var o={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}]},t={defaultToken:"",ignoreCase:!0,tokenPostfix:".shell",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["if","then","do","else","elif","while","until","for","in","esac","fi","fin","fil","done","exit","set","unset","export","function"],builtins:["ab","awk","bash","beep","cat","cc","cd","chown","chmod","chroot","clear","cp","curl","cut","diff","echo","find","gawk","gcc","get","git","grep","hg","kill","killall","ln","ls","make","mkdir","openssl","mv","nc","node","npm","ping","ps","restart","rm","rmdir","sed","service","sh","shopt","shred","source","sort","sleep","ssh","start","stop","su","sudo","svn","tee","telnet","top","touch","vi","vim","wall","wc","wget","who","write","yes","zsh"],symbols:/[=><!~?&|+\-*\/\^;\.,]+/,tokenizer:{root:[{include:"@whitespace"},[/[a-zA-Z]\w*/,{cases:{"@keywords":"keyword","@builtins":"type.identifier","@default":""}}],{include:"@strings"},{include:"@parameters"},{include:"@heredoc"},[/[{}\[\]()]/,"@brackets"],[/-+\w+/,"attribute.name"],[/@symbols/,"delimiter"],{include:"@numbers"},[/[,;]/,"delimiter"]],whitespace:[[/\s+/,"white"],[/(^#!.*$)/,"metatag"],[/(^#.*$)/,"comment"]],numbers:[[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+/,"number"]],strings:[[/'/,"string","@stringBody"],[/"/,"string","@dblStringBody"]],stringBody:[[/'/,"string","@popall"],[/./,"string"]],dblStringBody:[[/"/,"string","@popall"],[/./,"string"]],heredoc:[[/(<<[-<]?)(\s*)(['"`]?)([\w\-]+)(['"`]?)/,["constants","white","string.heredoc.delimiter","string.heredoc","string.heredoc.delimiter"]]],parameters:[[/\$\d+/,"variable.predefined"],[/\$\w+/,"variable"],[/\$[*@#?\-$!0_]/,"variable"],[/\$'/,"variable","@parameterBodyQuote"],[/\$"/,"variable","@parameterBodyDoubleQuote"],[/\$\(/,"variable","@parameterBodyParen"],[/\$\{/,"variable","@parameterBodyCurlyBrace"]],parameterBodyQuote:[[/[^#:%*@\-!_']+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/[']/,"variable","@pop"]],parameterBodyDoubleQuote:[[/[^#:%*@\-!_"]+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/["]/,"variable","@pop"]],parameterBodyParen:[[/[^#:%*@\-!_)]+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/[)]/,"variable","@pop"]],parameterBodyCurlyBrace:[[/[^#:%*@\-!_}]+/,"variable"],[/[#:%*@\-!_]/,"delimiter"],[/[}]/,"variable","@pop"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/8715.8715.js b/docs/dist/8715.8715.js deleted file mode 100644 index 7c2d15cb..00000000 --- a/docs/dist/8715.8715.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8715],{8715:(e,t,o)=>{"use strict";o.r(t),o.d(t,{conf:()=>n,language:()=>s});var n={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{markers:{start:new RegExp("^\\s*#pragma\\s+region\\b"),end:new RegExp("^\\s*#pragma\\s+endregion\\b")}}},s={tokenPostfix:".rust",defaultToken:"invalid",keywords:["as","box","break","const","continue","crate","else","enum","extern","false","fn","for","if","impl","in","let","loop","match","mod","move","mut","pub","ref","return","self","static","struct","super","trait","true","type","unsafe","use","where","while","catch","default","union","static","abstract","alignof","become","do","final","macro","offsetof","override","priv","proc","pure","sizeof","typeof","unsized","virtual","yield"],typeKeywords:["Self","m32","m64","m128","f80","f16","f128","int","uint","float","char","bool","u8","u16","u32","u64","f32","f64","i8","i16","i32","i64","str","Option","Either","c_float","c_double","c_void","FILE","fpos_t","DIR","dirent","c_char","c_schar","c_uchar","c_short","c_ushort","c_int","c_uint","c_long","c_ulong","size_t","ptrdiff_t","clock_t","time_t","c_longlong","c_ulonglong","intptr_t","uintptr_t","off_t","dev_t","ino_t","pid_t","mode_t","ssize_t"],constants:["true","false","Some","None","Left","Right","Ok","Err"],supportConstants:["EXIT_FAILURE","EXIT_SUCCESS","RAND_MAX","EOF","SEEK_SET","SEEK_CUR","SEEK_END","_IOFBF","_IONBF","_IOLBF","BUFSIZ","FOPEN_MAX","FILENAME_MAX","L_tmpnam","TMP_MAX","O_RDONLY","O_WRONLY","O_RDWR","O_APPEND","O_CREAT","O_EXCL","O_TRUNC","S_IFIFO","S_IFCHR","S_IFBLK","S_IFDIR","S_IFREG","S_IFMT","S_IEXEC","S_IWRITE","S_IREAD","S_IRWXU","S_IXUSR","S_IWUSR","S_IRUSR","F_OK","R_OK","W_OK","X_OK","STDIN_FILENO","STDOUT_FILENO","STDERR_FILENO"],supportMacros:["format!","print!","println!","panic!","format_args!","unreachable!","write!","writeln!"],operators:["!","!=","%","%=","&","&=","&&","*","*=","+","+=","-","-=","->",".","..","...","/","/=",":",";","<<","<<=","<","<=","=","==","=>",">",">=",">>",">>=","@","^","^=","|","|=","||","_","?","#"],escapes:/\\([nrt0\"''\\]|x\h{2}|u\{\h{1,6}\})/,delimiters:/[,]/,symbols:/[\#\!\%\&\*\+\-\.\/\:\;\<\=\>\@\^\|_\?]+/,intSuffixes:/[iu](8|16|32|64|128|size)/,floatSuffixes:/f(32|64)/,tokenizer:{root:[[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,{cases:{"@typeKeywords":"keyword.type","@keywords":"keyword","@supportConstants":"keyword","@supportMacros":"keyword","@constants":"keyword","@default":"identifier"}}],[/\$/,"identifier"],[/'[a-zA-Z_][a-zA-Z0-9_]*(?=[^\'])/,"identifier"],[/'\S'/,"string.byteliteral"],[/"/,{token:"string.quote",bracket:"@open",next:"@string"}],{include:"@numbers"},{include:"@whitespace"},[/@delimiters/,{cases:{"@keywords":"keyword","@default":"delimiter"}}],[/[{}()\[\]<>]/,"@brackets"],[/@symbols/,{cases:{"@operators":"operator","@default":""}}]],whitespace:[[/[ \t\r\n]+/,"white"],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",bracket:"@close",next:"@pop"}]],numbers:[[/(0o[0-7_]+)(@intSuffixes)?/,{token:"number"}],[/(0b[0-1_]+)(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/,{token:"number"}],[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/,{token:"number"}],[/(0x[\da-fA-F]+)_?(@intSuffixes)?/,{token:"number"}],[/[\d][\d_]*(@intSuffixes?)?/,{token:"number"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/8719.8719.js b/docs/dist/8719.8719.js deleted file mode 100644 index 43c89015..00000000 --- a/docs/dist/8719.8719.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8719],{18719:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>s,language:()=>o});var s={wordPattern:/(-?\d*\.\d\w*)|([^\`\~\!\#\$\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g,comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],folding:{markers:{start:new RegExp("^\\s*#region\\b"),end:new RegExp("^\\s*#endregion\\b")}}},o={defaultToken:"",tokenPostfix:".cs",brackets:[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}],keywords:["extern","alias","using","bool","decimal","sbyte","byte","short","ushort","int","uint","long","ulong","char","float","double","object","dynamic","string","assembly","is","as","ref","out","this","base","new","typeof","void","checked","unchecked","default","delegate","var","const","if","else","switch","case","while","do","for","foreach","in","break","continue","goto","return","throw","try","catch","finally","lock","yield","from","let","where","join","on","equals","into","orderby","ascending","descending","select","group","by","namespace","partial","class","field","event","method","param","property","public","protected","internal","private","abstract","sealed","static","struct","readonly","volatile","virtual","override","params","get","set","add","remove","operator","true","false","implicit","explicit","interface","enum","null","async","await","fixed","sizeof","stackalloc","unsafe","nameof","when"],namespaceFollows:["namespace","using"],parenFollows:["if","for","while","switch","foreach","using","catch","when"],operators:["=","??","||","&&","|","^","&","==","!=","<=",">=","<<","+","-","*","/","%","!","~","++","--","+=","-=","*=","/=","%=","&=","|=","^=","<<=",">>=",">>","=>"],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/\@?[a-zA-Z_]\w*/,{cases:{"@namespaceFollows":{token:"keyword.$0",next:"@namespace"},"@keywords":{token:"keyword.$0",next:"@qualified"},"@default":{token:"identifier",next:"@qualified"}}}],{include:"@whitespace"},[/}/,{cases:{"$S2==interpolatedstring":{token:"string.quote",next:"@pop"},"$S2==litinterpstring":{token:"string.quote",next:"@pop"},"@default":"@brackets"}}],[/[{}()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/,"number.float"],[/0[xX][0-9a-fA-F_]+/,"number.hex"],[/0[bB][01_]+/,"number.hex"],[/[0-9_]+/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/"/,{token:"string.quote",next:"@string"}],[/\$\@"/,{token:"string.quote",next:"@litinterpstring"}],[/\@"/,{token:"string.quote",next:"@litstring"}],[/\$"/,{token:"string.quote",next:"@interpolatedstring"}],[/'[^\\']'/,"string"],[/(')(@escapes)(')/,["string","string.escape","string"]],[/'/,"string.invalid"]],qualified:[[/[a-zA-Z_][\w]*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/\./,"delimiter"],["","","@pop"]],namespace:[{include:"@whitespace"},[/[A-Z]\w*/,"namespace"],[/[\.=]/,"delimiter"],["","","@pop"]],comment:[[/[^\/*]+/,"comment"],["\\*/","comment","@pop"],[/[\/*]/,"comment"]],string:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,{token:"string.quote",next:"@pop"}]],litstring:[[/[^"]+/,"string"],[/""/,"string.escape"],[/"/,{token:"string.quote",next:"@pop"}]],litinterpstring:[[/[^"{]+/,"string"],[/""/,"string.escape"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.litinterpstring"}],[/"/,{token:"string.quote",next:"@pop"}]],interpolatedstring:[[/[^\\"{]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/{{/,"string.escape"],[/}}/,"string.escape"],[/{/,{token:"string.quote",next:"root.interpolatedstring"}],[/"/,{token:"string.quote",next:"@pop"}]],whitespace:[[/^[ \t\v\f]*#((r)|(load))(?=\s)/,"directive.csx"],[/^[ \t\v\f]*#\w.*$/,"namespace.cpp"],[/[ \t\v\f\r\n]+/,""],[/\/\*/,"comment","@comment"],[/\/\/.*$/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/8946.8946.js b/docs/dist/8946.8946.js deleted file mode 100644 index f0105cde..00000000 --- a/docs/dist/8946.8946.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[8946],{68946:(t,e,r)=>{"use strict";r.r(e),r.d(e,{conf:()=>s,language:()=>i});var s={brackets:[],autoClosingPairs:[],surroundingPairs:[]},i={keywords:[],typeKeywords:[],tokenPostfix:".csp",operators:[],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/child-src/,"string.quote"],[/connect-src/,"string.quote"],[/default-src/,"string.quote"],[/font-src/,"string.quote"],[/frame-src/,"string.quote"],[/img-src/,"string.quote"],[/manifest-src/,"string.quote"],[/media-src/,"string.quote"],[/object-src/,"string.quote"],[/script-src/,"string.quote"],[/style-src/,"string.quote"],[/worker-src/,"string.quote"],[/base-uri/,"string.quote"],[/plugin-types/,"string.quote"],[/sandbox/,"string.quote"],[/disown-opener/,"string.quote"],[/form-action/,"string.quote"],[/frame-ancestors/,"string.quote"],[/report-uri/,"string.quote"],[/report-to/,"string.quote"],[/upgrade-insecure-requests/,"string.quote"],[/block-all-mixed-content/,"string.quote"],[/require-sri-for/,"string.quote"],[/reflected-xss/,"string.quote"],[/referrer/,"string.quote"],[/policy-uri/,"string.quote"],[/'self'/,"string.quote"],[/'unsafe-inline'/,"string.quote"],[/'unsafe-eval'/,"string.quote"],[/'strict-dynamic'/,"string.quote"],[/'unsafe-hashed-attributes'/,"string.quote"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/911.911.js b/docs/dist/911.911.js deleted file mode 100644 index 12d83ff2..00000000 --- a/docs/dist/911.911.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[911],{20911:(e,n,o)=>{"use strict";o.r(n),o.d(n,{conf:()=>t,language:()=>s});var t={comments:{lineComment:"--",blockComment:["--[[","]]"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".lua",keywords:["and","break","do","else","elseif","end","false","for","function","goto","if","in","local","nil","not","or","repeat","return","then","true","until","while"],brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"}],operators:["+","-","*","/","%","^","#","==","~=","<=",">=","<",">","=",";",":",",",".","..","..."],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,tokenizer:{root:[[/[a-zA-Z_]\w*/,{cases:{"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],{include:"@whitespace"},[/(,)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["delimiter","","key","","delimiter"]],[/({)(\s*)([a-zA-Z_]\w*)(\s*)(:)(?!:)/,["@brackets","","key","","delimiter"]],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/\d*\.\d+([eE][\-+]?\d+)?/,"number.float"],[/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/,"number.hex"],[/\d+?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string",'@string."'],[/'/,"string","@string.'"]],whitespace:[[/[ \t\r\n]+/,""],[/--\[([=]*)\[/,"comment","@comment.$1"],[/--.*$/,"comment"]],comment:[[/[^\]]+/,"comment"],[/\]([=]*)\]/,{cases:{"$1==$S2":{token:"comment",next:"@pop"},"@default":"comment"}}],[/./,"comment"]],string:[[/[^\\"']+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/["']/,{cases:{"$#==$S2":{token:"string",next:"@pop"},"@default":"string"}}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/9343.9343.js b/docs/dist/9343.9343.js deleted file mode 100644 index a9834986..00000000 --- a/docs/dist/9343.9343.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[9343],{39343:(e,n,t)=>{"use strict";t.r(n),t.d(n,{conf:()=>o,language:()=>r});var o={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"'",close:"'",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string"]},{open:"`",close:"`",notIn:["string","comment"]},{open:"/**",close:" */",notIn:["string"]}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:"'",close:"'"},{open:"(",close:")"},{open:'"',close:'"'},{open:"`",close:"`"}],folding:{markers:{start:/^\s*\s*#?region\b/,end:/^\s*\s*#?endregion\b/}}},r={defaultToken:"invalid",tokenPostfix:".dart",keywords:["abstract","dynamic","implements","show","as","else","import","static","assert","enum","in","super","async","export","interface","switch","await","extends","is","sync","break","external","library","this","case","factory","mixin","throw","catch","false","new","true","class","final","null","try","const","finally","on","typedef","continue","for","operator","var","covariant","Function","part","void","default","get","rethrow","while","deferred","hide","return","with","do","if","set","yield"],typeKeywords:["int","double","String","bool"],operators:["+","-","*","/","~/","%","++","--","==","!=",">","<",">=","<=","=","-=","/=","%=",">>=","^=","+=","*=","~/=","<<=","&=","!=","||","&&","&","|","^","~","<<",">>","!",">>>","??","?",":","|="],symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,"delimiter.bracket"],{include:"common"}],common:[[/[a-z_$][\w$]*/,{cases:{"@typeKeywords":"type.identifier","@keywords":"keyword","@default":"identifier"}}],[/(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*)/,"type.identifier"],{include:"@whitespace"},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:"regexp",bracket:"@open",next:"@regexp"}],[/@[a-zA-Z]+/,"annotation"],[/[()\[\]]/,"@brackets"],[/[<>](?!@symbols)/,"@brackets"],[/!(?=([^=]|$))/,"delimiter"],[/@symbols/,{cases:{"@operators":"delimiter","@default":""}}],[/(@digits)[eE]([\-+]?(@digits))?/,"number.float"],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,"number.float"],[/0[xX](@hexdigits)n?/,"number.hex"],[/0[oO]?(@octaldigits)n?/,"number.octal"],[/0[bB](@binarydigits)n?/,"number.binary"],[/(@digits)n?/,"number"],[/[;,.]/,"delimiter"],[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/"/,"string","@string_double"],[/'/,"string","@string_single"]],whitespace:[[/[ \t\r\n]+/,""],[/\/\*\*(?!\/)/,"comment.doc","@jsdoc"],[/\/\*/,"comment","@comment"],[/\/\/\/.*$/,"comment.doc"],[/\/\/.*$/,"comment"]],comment:[[/[^\/*]+/,"comment"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],jsdoc:[[/[^\/*]+/,"comment.doc"],[/\*\//,"comment.doc","@pop"],[/[\/*]/,"comment.doc"]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,["regexp.escape.control","regexp.escape.control","regexp.escape.control"]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,["regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?:|\?=|\?!)/,["regexp.escape.control","regexp.escape.control"]],[/[()]/,"regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/[^\\\/]/,"regexp"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/(\/)([gimsuy]*)/,[{token:"regexp",bracket:"@close",next:"@pop"},"keyword.other"]]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,{token:"regexp.escape.control",next:"@pop",bracket:"@close"}]],string_double:[[/[^\\"\$]+/,"string"],[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"],[/\$\w+/,"identifier"]],string_single:[[/[^\\'\$]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/'/,"string","@pop"],[/\$\w+/,"identifier"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/9398.9398.js b/docs/dist/9398.9398.js deleted file mode 100644 index 1dd3fcf5..00000000 --- a/docs/dist/9398.9398.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[9398],{79398:(E,T,A)=>{"use strict";A.r(T),A.d(T,{conf:()=>N,language:()=>e});var N={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["[","]"],["(",")"],["{","}"]],autoClosingPairs:[{open:'"',close:'"',notIn:["string","comment"]},{open:"'",close:"'",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:"{",close:"}",notIn:["string","comment"]}]},e={defaultToken:"",tokenPostfix:".msdax",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"{",close:"}",token:"delimiter.brackets"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["VAR","RETURN","NOT","EVALUATE","DATATABLE","ORDER","BY","START","AT","DEFINE","MEASURE","ASC","DESC","IN","BOOLEAN","DOUBLE","INTEGER","DATETIME","CURRENCY","STRING"],functions:["CLOSINGBALANCEMONTH","CLOSINGBALANCEQUARTER","CLOSINGBALANCEYEAR","DATEADD","DATESBETWEEN","DATESINPERIOD","DATESMTD","DATESQTD","DATESYTD","ENDOFMONTH","ENDOFQUARTER","ENDOFYEAR","FIRSTDATE","FIRSTNONBLANK","LASTDATE","LASTNONBLANK","NEXTDAY","NEXTMONTH","NEXTQUARTER","NEXTYEAR","OPENINGBALANCEMONTH","OPENINGBALANCEQUARTER","OPENINGBALANCEYEAR","PARALLELPERIOD","PREVIOUSDAY","PREVIOUSMONTH","PREVIOUSQUARTER","PREVIOUSYEAR","SAMEPERIODLASTYEAR","STARTOFMONTH","STARTOFQUARTER","STARTOFYEAR","TOTALMTD","TOTALQTD","TOTALYTD","ADDCOLUMNS","ADDMISSINGITEMS","ALL","ALLEXCEPT","ALLNOBLANKROW","ALLSELECTED","CALCULATE","CALCULATETABLE","CALENDAR","CALENDARAUTO","CROSSFILTER","CROSSJOIN","CURRENTGROUP","DATATABLE","DETAILROWS","DISTINCT","EARLIER","EARLIEST","EXCEPT","FILTER","FILTERS","GENERATE","GENERATEALL","GROUPBY","IGNORE","INTERSECT","ISONORAFTER","KEEPFILTERS","LOOKUPVALUE","NATURALINNERJOIN","NATURALLEFTOUTERJOIN","RELATED","RELATEDTABLE","ROLLUP","ROLLUPADDISSUBTOTAL","ROLLUPGROUP","ROLLUPISSUBTOTAL","ROW","SAMPLE","SELECTCOLUMNS","SUBSTITUTEWITHINDEX","SUMMARIZE","SUMMARIZECOLUMNS","TOPN","TREATAS","UNION","USERELATIONSHIP","VALUES","SUM","SUMX","PATH","PATHCONTAINS","PATHITEM","PATHITEMREVERSE","PATHLENGTH","AVERAGE","AVERAGEA","AVERAGEX","COUNT","COUNTA","COUNTAX","COUNTBLANK","COUNTROWS","COUNTX","DISTINCTCOUNT","DIVIDE","GEOMEAN","GEOMEANX","MAX","MAXA","MAXX","MEDIAN","MEDIANX","MIN","MINA","MINX","PERCENTILE.EXC","PERCENTILE.INC","PERCENTILEX.EXC","PERCENTILEX.INC","PRODUCT","PRODUCTX","RANK.EQ","RANKX","STDEV.P","STDEV.S","STDEVX.P","STDEVX.S","VAR.P","VAR.S","VARX.P","VARX.S","XIRR","XNPV","DATE","DATEDIFF","DATEVALUE","DAY","EDATE","EOMONTH","HOUR","MINUTE","MONTH","NOW","SECOND","TIME","TIMEVALUE","TODAY","WEEKDAY","WEEKNUM","YEAR","YEARFRAC","CONTAINS","CONTAINSROW","CUSTOMDATA","ERROR","HASONEFILTER","HASONEVALUE","ISBLANK","ISCROSSFILTERED","ISEMPTY","ISERROR","ISEVEN","ISFILTERED","ISLOGICAL","ISNONTEXT","ISNUMBER","ISODD","ISSUBTOTAL","ISTEXT","USERNAME","USERPRINCIPALNAME","AND","FALSE","IF","IFERROR","NOT","OR","SWITCH","TRUE","ABS","ACOS","ACOSH","ACOT","ACOTH","ASIN","ASINH","ATAN","ATANH","BETA.DIST","BETA.INV","CEILING","CHISQ.DIST","CHISQ.DIST.RT","CHISQ.INV","CHISQ.INV.RT","COMBIN","COMBINA","CONFIDENCE.NORM","CONFIDENCE.T","COS","COSH","COT","COTH","CURRENCY","DEGREES","EVEN","EXP","EXPON.DIST","FACT","FLOOR","GCD","INT","ISO.CEILING","LCM","LN","LOG","LOG10","MOD","MROUND","ODD","PERMUT","PI","POISSON.DIST","POWER","QUOTIENT","RADIANS","RAND","RANDBETWEEN","ROUND","ROUNDDOWN","ROUNDUP","SIGN","SIN","SINH","SQRT","SQRTPI","TAN","TANH","TRUNC","BLANK","CONCATENATE","CONCATENATEX","EXACT","FIND","FIXED","FORMAT","LEFT","LEN","LOWER","MID","REPLACE","REPT","RIGHT","SEARCH","SUBSTITUTE","TRIM","UNICHAR","UNICODE","UPPER","VALUE"],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},[/[;,.]/,"delimiter"],[/[({})]/,"@brackets"],[/[a-z_][a-zA-Z0-9_]*/,{cases:{"@keywords":"keyword","@functions":"keyword","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/\/\/+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/N"/,{token:"string",next:"@string"}],[/"/,{token:"string",next:"@string"}]],string:[[/[^"]+/,"string"],[/""/,"string"],[/"/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/\[/,{token:"identifier.quote",next:"@bracketedIdentifier"}],[/'/,{token:"identifier.quote",next:"@quotedIdentifier"}]],bracketedIdentifier:[[/[^\]]+/,"identifier"],[/]]/,"identifier"],[/]/,{token:"identifier.quote",next:"@pop"}]],quotedIdentifier:[[/[^']+/,"identifier"],[/''/,"identifier"],[/'/,{token:"identifier.quote",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/9537.9537.js b/docs/dist/9537.9537.js deleted file mode 100644 index 3af8c5ac..00000000 --- a/docs/dist/9537.9537.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[9537],{79537:(e,n,o)=>{"use strict";o.r(n),o.d(n,{conf:()=>t,language:()=>s});var t={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},s={defaultToken:"",tokenPostfix:".objective-c",keywords:["#import","#include","#define","#else","#endif","#if","#ifdef","#ifndef","#ident","#undef","@class","@defs","@dynamic","@encode","@end","@implementation","@interface","@package","@private","@protected","@property","@protocol","@public","@selector","@synthesize","__declspec","assign","auto","BOOL","break","bycopy","byref","case","char","Class","const","copy","continue","default","do","double","else","enum","extern","FALSE","false","float","for","goto","if","in","int","id","inout","IMP","long","nil","nonatomic","NULL","oneway","out","private","public","protected","readwrite","readonly","register","return","SEL","self","short","signed","sizeof","static","struct","super","switch","typedef","TRUE","true","union","unsigned","volatile","void","while"],decpart:/\d(_?\d)*/,decimal:/0|@decpart/,tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@numbers"},{include:"@strings"},[/[,:;]/,"delimiter"],[/[{}\[\]()<>]/,"@brackets"],[/[a-zA-Z@#]\w*/,{cases:{"@keywords":"keyword","@default":"identifier"}}],[/[<>=\\+\\-\\*\\/\\^\\|\\~,]|and\\b|or\\b|not\\b]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[["\\/\\*","comment","@comment"],["\\/\\/+.*","comment"]],comment:[["\\*\\/","comment","@pop"],[".","comment"]],numbers:[[/0[xX][0-9a-fA-F]*(_?[0-9a-fA-F])*/,"number.hex"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)[fF]*/,{cases:{"(\\d)*":"number",$0:"number.float"}}]],strings:[[/'$/,"string.escape","@popall"],[/'/,"string.escape","@stringBody"],[/"$/,"string.escape","@popall"],[/"/,"string.escape","@dblStringBody"]],stringBody:[[/[^\\']+$/,"string","@popall"],[/[^\\']+/,"string"],[/\\./,"string"],[/'/,"string.escape","@popall"],[/\\$/,"string"]],dblStringBody:[[/[^\\"]+$/,"string","@popall"],[/[^\\"]+/,"string"],[/\\./,"string"],[/"/,"string.escape","@popall"],[/\\$/,"string"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/9684.9684.js b/docs/dist/9684.9684.js deleted file mode 100644 index 8b0da6c6..00000000 --- a/docs/dist/9684.9684.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[9684],{69684:(e,t,n)=>{"use strict";n.r(t),n.d(t,{conf:()=>r,language:()=>s});var r={comments:{lineComment:"#",blockComment:["=begin","=end"]},brackets:[["(",")"],["{","}"],["[","]"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],indentationRules:{increaseIndentPattern:new RegExp("^\\s*((begin|class|(private|protected)\\s+def|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|case)|([^#]*\\sdo\\b)|([^#]*=\\s*(case|if|unless)))\\b([^#\\{;]|(\"|'|/).*\\4)*(#.*)?$"),decreaseIndentPattern:new RegExp("^\\s*([}\\]]([,)]?\\s*(#|$)|\\.[a-zA-Z_]\\w*\\b)|(end|rescue|ensure|else|elsif|when)\\b)")}},s={tokenPostfix:".ruby",keywords:["__LINE__","__ENCODING__","__FILE__","BEGIN","END","alias","and","begin","break","case","class","def","defined?","do","else","elsif","end","ensure","for","false","if","in","module","next","nil","not","or","redo","rescue","retry","return","self","super","then","true","undef","unless","until","when","while","yield"],keywordops:["::","..","...","?",":","=>"],builtins:["require","public","private","include","extend","attr_reader","protected","private_class_method","protected_class_method","new"],declarations:["module","class","def","case","do","begin","for","if","while","until","unless"],linedecls:["def","case","do","begin","for","if","while","until","unless"],operators:["^","&","|","<=>","==","===","!~","=~",">",">=","<","<=","<<",">>","+","-","*","/","%","**","~","+@","-@","[]","[]=","`","+=","-=","*=","**=","/=","^=","%=","<<=",">>=","&=","&&=","||=","|="],brackets:[{open:"(",close:")",token:"delimiter.parenthesis"},{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"}],symbols:/[=><!~?:&|+\-*\/\^%\.]+/,escape:/(?:[abefnrstv\\"'\n\r]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u[0-9A-Fa-f]{4})/,escapes:/\\(?:C\-(@escape|.)|c(@escape|.)|@escape)/,decpart:/\d(_?\d)*/,decimal:/0|@decpart/,delim:/[^a-zA-Z0-9\s\n\r]/,heredelim:/(?:\w+|'[^']*'|"[^"]*"|`[^`]*`)/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[AzZbBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})?/,tokenizer:{root:[[/^(\s*)([a-z_]\w*[!?=]?)/,["white",{cases:{"for|until|while":{token:"keyword.$2",next:"@dodecl.$2"},"@declarations":{token:"keyword.$2",next:"@root.$2"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}]],[/[a-z_]\w*[!?=]?/,{cases:{"if|unless|while|until":{token:"keyword.$0x",next:"@modifier.$0x"},for:{token:"keyword.$2",next:"@dodecl.$2"},"@linedecls":{token:"keyword.$0",next:"@root.$0"},end:{token:"keyword.$S2",next:"@pop"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],[/[A-Z][\w]*[!?=]?/,"constructor.identifier"],[/\$[\w]*/,"global.constant"],[/@[\w]*/,"namespace.instance.identifier"],[/@@[\w]*/,"namespace.class.identifier"],[/<<[-~](@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/[ \t\r\n]+<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],[/^<<(@heredelim).*/,{token:"string.heredoc.delimiter",next:"@heredoc.$1"}],{include:"@whitespace"},[/"/,{token:"string.d.delim",next:'@dstring.d."'}],[/'/,{token:"string.sq.delim",next:"@sstring.sq"}],[/%([rsqxwW]|Q?)/,{token:"@rematch",next:"pstring"}],[/`/,{token:"string.x.delim",next:"@dstring.x.`"}],[/:(\w|[$@])\w*[!?=]?/,"string.s"],[/:"/,{token:"string.s.delim",next:'@dstring.s."'}],[/:'/,{token:"string.s.delim",next:"@sstring.s"}],[/\/(?=(\\\/|[^\/\n])+\/)/,{token:"regexp.delim",next:"@regexp"}],[/[{}()\[\]]/,"@brackets"],[/@symbols/,{cases:{"@keywordops":"keyword","@operators":"operator","@default":""}}],[/[;,]/,"delimiter"],[/0[xX][0-9a-fA-F](_?[0-9a-fA-F])*/,"number.hex"],[/0[_oO][0-7](_?[0-7])*/,"number.octal"],[/0[bB][01](_?[01])*/,"number.binary"],[/0[dD]@decpart/,"number"],[/@decimal((\.@decpart)?([eE][\-+]?@decpart)?)/,{cases:{$1:"number.float","@default":"number"}}]],dodecl:[[/^/,{token:"",switchTo:"@root.$S2"}],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},do:{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],modifier:[[/^/,"","@pop"],[/[a-z_]\w*[!?=]?/,{cases:{end:{token:"keyword.$S2",next:"@pop"},"then|else|elsif|do":{token:"keyword",switchTo:"@root.$S2"},"@linedecls":{token:"@rematch",switchTo:"@root.$S2"},"@keywords":"keyword","@builtins":"predefined","@default":"identifier"}}],{include:"@root"}],sstring:[[/[^\\']+/,"string.$S2"],[/\\\\|\\'|\\$/,"string.$S2.escape"],[/\\./,"string.$S2.invalid"],[/'/,{token:"string.$S2.delim",next:"@pop"}]],dstring:[[/[^\\`"#]+/,"string.$S2"],[/#/,"string.$S2.escape","@interpolated"],[/\\$/,"string.$S2.escape"],[/@escapes/,"string.$S2.escape"],[/\\./,"string.$S2.escape.invalid"],[/[`"]/,{cases:{"$#==$S3":{token:"string.$S2.delim",next:"@pop"},"@default":"string.$S2"}}]],heredoc:[[/^(\s*)(@heredelim)$/,{cases:{"$2==$S2":["string.heredoc",{token:"string.heredoc.delimiter",next:"@pop"}],"@default":["string.heredoc","string.heredoc"]}}],[/.*/,"string.heredoc"]],interpolated:[[/\$\w*/,"global.constant","@pop"],[/@\w*/,"namespace.class.identifier","@pop"],[/@@\w*/,"namespace.instance.identifier","@pop"],[/[{]/,{token:"string.escape.curly",switchTo:"@interpolated_compound"}],["","","@pop"]],interpolated_compound:[[/[}]/,{token:"string.escape.curly",next:"@pop"}],{include:"@root"}],pregexp:[{include:"@whitespace"},[/[^\(\{\[\\]/,{cases:{"$#==$S3":{token:"regexp.delim",next:"@pop"},"$#==$S2":{token:"regexp.delim",next:"@push"},"~[)}\\]]":"@brackets.regexp.escape.control","~@regexpctl":"regexp.escape.control","@default":"regexp"}}],{include:"@regexcontrol"}],regexp:[{include:"@regexcontrol"},[/[^\\\/]/,"regexp"],["/[ixmp]*",{token:"regexp.delim"},"@pop"]],regexcontrol:[[/(\{)(\d+(?:,\d*)?)(\})/,["@brackets.regexp.escape.control","regexp.escape.control","@brackets.regexp.escape.control"]],[/(\[)(\^?)/,["@brackets.regexp.escape.control",{token:"regexp.escape.control",next:"@regexrange"}]],[/(\()(\?[:=!])/,["@brackets.regexp.escape.control","regexp.escape.control"]],[/\(\?#/,{token:"regexp.escape.control",next:"@regexpcomment"}],[/[()]/,"@brackets.regexp.escape.control"],[/@regexpctl/,"regexp.escape.control"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/\\\./,"regexp.invalid"],[/#/,"regexp.escape","@interpolated"]],regexrange:[[/-/,"regexp.escape.control"],[/\^/,"regexp.invalid"],[/\\$/,"regexp.escape"],[/@regexpesc/,"regexp.escape"],[/[^\]]/,"regexp"],[/\]/,"@brackets.regexp.escape.control","@pop"]],regexpcomment:[[/[^)]+/,"comment"],[/\)/,{token:"regexp.escape.control",next:"@pop"}]],pstring:[[/%([qws])\(/,{token:"string.$1.delim",switchTo:"@qstring.$1.(.)"}],[/%([qws])\[/,{token:"string.$1.delim",switchTo:"@qstring.$1.[.]"}],[/%([qws])\{/,{token:"string.$1.delim",switchTo:"@qstring.$1.{.}"}],[/%([qws])</,{token:"string.$1.delim",switchTo:"@qstring.$1.<.>"}],[/%([qws])(@delim)/,{token:"string.$1.delim",switchTo:"@qstring.$1.$2.$2"}],[/%r\(/,{token:"regexp.delim",switchTo:"@pregexp.(.)"}],[/%r\[/,{token:"regexp.delim",switchTo:"@pregexp.[.]"}],[/%r\{/,{token:"regexp.delim",switchTo:"@pregexp.{.}"}],[/%r</,{token:"regexp.delim",switchTo:"@pregexp.<.>"}],[/%r(@delim)/,{token:"regexp.delim",switchTo:"@pregexp.$1.$1"}],[/%(x|W|Q?)\(/,{token:"string.$1.delim",switchTo:"@qqstring.$1.(.)"}],[/%(x|W|Q?)\[/,{token:"string.$1.delim",switchTo:"@qqstring.$1.[.]"}],[/%(x|W|Q?)\{/,{token:"string.$1.delim",switchTo:"@qqstring.$1.{.}"}],[/%(x|W|Q?)</,{token:"string.$1.delim",switchTo:"@qqstring.$1.<.>"}],[/%(x|W|Q?)(@delim)/,{token:"string.$1.delim",switchTo:"@qqstring.$1.$2.$2"}],[/%([rqwsxW]|Q?)./,{token:"invalid",next:"@pop"}],[/./,{token:"invalid",next:"@pop"}]],qstring:[[/\\$/,"string.$S2.escape"],[/\\./,"string.$S2.escape"],[/./,{cases:{"$#==$S4":{token:"string.$S2.delim",next:"@pop"},"$#==$S3":{token:"string.$S2.delim",next:"@push"},"@default":"string.$S2"}}]],qqstring:[[/#/,"string.$S2.escape","@interpolated"],{include:"@qstring"}],whitespace:[[/[ \t\r\n]+/,""],[/^\s*=begin\b/,"comment","@comment"],[/#.*$/,"comment"]],comment:[[/[^=]+/,"comment"],[/^\s*=begin\b/,"comment.invalid"],[/^\s*=end\b.*/,"comment","@pop"],[/[=]/,"comment"]]}}}}]); \ No newline at end of file diff --git a/docs/dist/9907.9907.js b/docs/dist/9907.9907.js deleted file mode 100644 index c6340d3b..00000000 --- a/docs/dist/9907.9907.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[9907],{39907:(e,n,t)=>{"use strict";t.r(n),t.d(n,{conf:()=>o,language:()=>r});var o={comments:{lineComment:"'",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"],["<",">"],["addhandler","end addhandler"],["class","end class"],["enum","end enum"],["event","end event"],["function","end function"],["get","end get"],["if","end if"],["interface","end interface"],["module","end module"],["namespace","end namespace"],["operator","end operator"],["property","end property"],["raiseevent","end raiseevent"],["removehandler","end removehandler"],["select","end select"],["set","end set"],["structure","end structure"],["sub","end sub"],["synclock","end synclock"],["try","end try"],["while","end while"],["with","end with"],["using","end using"],["do","loop"],["for","next"]],autoClosingPairs:[{open:"{",close:"}",notIn:["string","comment"]},{open:"[",close:"]",notIn:["string","comment"]},{open:"(",close:")",notIn:["string","comment"]},{open:'"',close:'"',notIn:["string","comment"]},{open:"<",close:">",notIn:["string","comment"]}],folding:{markers:{start:new RegExp("^\\s*#Region\\b"),end:new RegExp("^\\s*#End Region\\b")}}},r={defaultToken:"",tokenPostfix:".vb",ignoreCase:!0,brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.array",open:"[",close:"]"},{token:"delimiter.parenthesis",open:"(",close:")"},{token:"delimiter.angle",open:"<",close:">"},{token:"keyword.tag-addhandler",open:"addhandler",close:"end addhandler"},{token:"keyword.tag-class",open:"class",close:"end class"},{token:"keyword.tag-enum",open:"enum",close:"end enum"},{token:"keyword.tag-event",open:"event",close:"end event"},{token:"keyword.tag-function",open:"function",close:"end function"},{token:"keyword.tag-get",open:"get",close:"end get"},{token:"keyword.tag-if",open:"if",close:"end if"},{token:"keyword.tag-interface",open:"interface",close:"end interface"},{token:"keyword.tag-module",open:"module",close:"end module"},{token:"keyword.tag-namespace",open:"namespace",close:"end namespace"},{token:"keyword.tag-operator",open:"operator",close:"end operator"},{token:"keyword.tag-property",open:"property",close:"end property"},{token:"keyword.tag-raiseevent",open:"raiseevent",close:"end raiseevent"},{token:"keyword.tag-removehandler",open:"removehandler",close:"end removehandler"},{token:"keyword.tag-select",open:"select",close:"end select"},{token:"keyword.tag-set",open:"set",close:"end set"},{token:"keyword.tag-structure",open:"structure",close:"end structure"},{token:"keyword.tag-sub",open:"sub",close:"end sub"},{token:"keyword.tag-synclock",open:"synclock",close:"end synclock"},{token:"keyword.tag-try",open:"try",close:"end try"},{token:"keyword.tag-while",open:"while",close:"end while"},{token:"keyword.tag-with",open:"with",close:"end with"},{token:"keyword.tag-using",open:"using",close:"end using"},{token:"keyword.tag-do",open:"do",close:"loop"},{token:"keyword.tag-for",open:"for",close:"next"}],keywords:["AddHandler","AddressOf","Alias","And","AndAlso","As","Async","Boolean","ByRef","Byte","ByVal","Call","Case","Catch","CBool","CByte","CChar","CDate","CDbl","CDec","Char","CInt","Class","CLng","CObj","Const","Continue","CSByte","CShort","CSng","CStr","CType","CUInt","CULng","CUShort","Date","Decimal","Declare","Default","Delegate","Dim","DirectCast","Do","Double","Each","Else","ElseIf","End","EndIf","Enum","Erase","Error","Event","Exit","False","Finally","For","Friend","Function","Get","GetType","GetXMLNamespace","Global","GoSub","GoTo","Handles","If","Implements","Imports","In","Inherits","Integer","Interface","Is","IsNot","Let","Lib","Like","Long","Loop","Me","Mod","Module","MustInherit","MustOverride","MyBase","MyClass","NameOf","Namespace","Narrowing","New","Next","Not","Nothing","NotInheritable","NotOverridable","Object","Of","On","Operator","Option","Optional","Or","OrElse","Out","Overloads","Overridable","Overrides","ParamArray","Partial","Private","Property","Protected","Public","RaiseEvent","ReadOnly","ReDim","RemoveHandler","Resume","Return","SByte","Select","Set","Shadows","Shared","Short","Single","Static","Step","Stop","String","Structure","Sub","SyncLock","Then","Throw","To","True","Try","TryCast","TypeOf","UInteger","ULong","UShort","Using","Variant","Wend","When","While","Widening","With","WithEvents","WriteOnly","Xor"],tagwords:["If","Sub","Select","Try","Class","Enum","Function","Get","Interface","Module","Namespace","Operator","Set","Structure","Using","While","With","Do","Loop","For","Next","Property","Continue","AddHandler","RemoveHandler","Event","RaiseEvent","SyncLock"],symbols:/[=><!~?;\.,:&|+\-*\/\^%]+/,integersuffix:/U?[DI%L&S@]?/,floatsuffix:/[R#F!]?/,tokenizer:{root:[{include:"@whitespace"},[/next(?!\w)/,{token:"keyword.tag-for"}],[/loop(?!\w)/,{token:"keyword.tag-do"}],[/end\s+(?!for|do)(addhandler|class|enum|event|function|get|if|interface|module|namespace|operator|property|raiseevent|removehandler|select|set|structure|sub|synclock|try|while|with|using)/,{token:"keyword.tag-$1"}],[/[a-zA-Z_]\w*/,{cases:{"@tagwords":{token:"keyword.tag-$0"},"@keywords":{token:"keyword.$0"},"@default":"identifier"}}],[/^\s*#\w+/,"keyword"],[/\d*\d+e([\-+]?\d+)?(@floatsuffix)/,"number.float"],[/\d*\.\d+(e[\-+]?\d+)?(@floatsuffix)/,"number.float"],[/&H[0-9a-f]+(@integersuffix)/,"number.hex"],[/&0[0-7]+(@integersuffix)/,"number.octal"],[/\d+(@integersuffix)/,"number"],[/#.*#/,"number"],[/[{}()\[\]]/,"@brackets"],[/@symbols/,"delimiter"],[/["\u201c\u201d]/,{token:"string.quote",next:"@string"}]],whitespace:[[/[ \t\r\n]+/,""],[/(\'|REM(?!\w)).*$/,"comment"]],string:[[/[^"\u201c\u201d]+/,"string"],[/["\u201c\u201d]{2}/,"string.escape"],[/["\u201c\u201d]C?/,{token:"string.quote",next:"@pop"}]]}}}}]); \ No newline at end of file diff --git a/docs/dist/996.996.js b/docs/dist/996.996.js deleted file mode 100644 index 66293316..00000000 --- a/docs/dist/996.996.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[]).push([[996],{20996:(_,e,E)=>{"use strict";E.r(e),E.d(e,{conf:()=>t,language:()=>T});var t={comments:{lineComment:"--",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}]},T={defaultToken:"",tokenPostfix:".sql",ignoreCase:!0,brackets:[{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"}],keywords:["A","ABORT","ABS","ABSENT","ABSOLUTE","ACCESS","ACCORDING","ACTION","ADA","ADD","ADMIN","AFTER","AGGREGATE","ALL","ALLOCATE","ALSO","ALTER","ALWAYS","ANALYSE","ANALYZE","AND","ANY","ARE","ARRAY","ARRAY_AGG","ARRAY_MAX_CARDINALITY","AS","ASC","ASENSITIVE","ASSERTION","ASSIGNMENT","ASYMMETRIC","AT","ATOMIC","ATTRIBUTE","ATTRIBUTES","AUTHORIZATION","AVG","BACKWARD","BASE64","BEFORE","BEGIN","BEGIN_FRAME","BEGIN_PARTITION","BERNOULLI","BETWEEN","BIGINT","BINARY","BIT","BIT_LENGTH","BLOB","BLOCKED","BOM","BOOLEAN","BOTH","BREADTH","BY","C","CACHE","CALL","CALLED","CARDINALITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CATALOG_NAME","CEIL","CEILING","CHAIN","CHAR","CHARACTER","CHARACTERISTICS","CHARACTERS","CHARACTER_LENGTH","CHARACTER_SET_CATALOG","CHARACTER_SET_NAME","CHARACTER_SET_SCHEMA","CHAR_LENGTH","CHECK","CHECKPOINT","CLASS","CLASS_ORIGIN","CLOB","CLOSE","CLUSTER","COALESCE","COBOL","COLLATE","COLLATION","COLLATION_CATALOG","COLLATION_NAME","COLLATION_SCHEMA","COLLECT","COLUMN","COLUMNS","COLUMN_NAME","COMMAND_FUNCTION","COMMAND_FUNCTION_CODE","COMMENT","COMMENTS","COMMIT","COMMITTED","CONCURRENTLY","CONDITION","CONDITION_NUMBER","CONFIGURATION","CONFLICT","CONNECT","CONNECTION","CONNECTION_NAME","CONSTRAINT","CONSTRAINTS","CONSTRAINT_CATALOG","CONSTRAINT_NAME","CONSTRAINT_SCHEMA","CONSTRUCTOR","CONTAINS","CONTENT","CONTINUE","CONTROL","CONVERSION","CONVERT","COPY","CORR","CORRESPONDING","COST","COUNT","COVAR_POP","COVAR_SAMP","CREATE","CROSS","CSV","CUBE","CUME_DIST","CURRENT","CURRENT_CATALOG","CURRENT_DATE","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_PATH","CURRENT_ROLE","CURRENT_ROW","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CURSOR_NAME","CYCLE","DATA","DATABASE","DATALINK","DATE","DATETIME_INTERVAL_CODE","DATETIME_INTERVAL_PRECISION","DAY","DB","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULTS","DEFERRABLE","DEFERRED","DEFINED","DEFINER","DEGREE","DELETE","DELIMITER","DELIMITERS","DENSE_RANK","DEPENDS","DEPTH","DEREF","DERIVED","DESC","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DICTIONARY","DISABLE","DISCARD","DISCONNECT","DISPATCH","DISTINCT","DLNEWCOPY","DLPREVIOUSCOPY","DLURLCOMPLETE","DLURLCOMPLETEONLY","DLURLCOMPLETEWRITE","DLURLPATH","DLURLPATHONLY","DLURLPATHWRITE","DLURLSCHEME","DLURLSERVER","DLVALUE","DO","DOCUMENT","DOMAIN","DOUBLE","DROP","DYNAMIC","DYNAMIC_FUNCTION","DYNAMIC_FUNCTION_CODE","EACH","ELEMENT","ELSE","EMPTY","ENABLE","ENCODING","ENCRYPTED","END","END-EXEC","END_FRAME","END_PARTITION","ENFORCED","ENUM","EQUALS","ESCAPE","EVENT","EVERY","EXCEPT","EXCEPTION","EXCLUDE","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXP","EXPLAIN","EXPRESSION","EXTENSION","EXTERNAL","EXTRACT","FALSE","FAMILY","FETCH","FILE","FILTER","FINAL","FIRST","FIRST_VALUE","FLAG","FLOAT","FLOOR","FOLLOWING","FOR","FORCE","FOREIGN","FORTRAN","FORWARD","FOUND","FRAME_ROW","FREE","FREEZE","FROM","FS","FULL","FUNCTION","FUNCTIONS","FUSION","G","GENERAL","GENERATED","GET","GLOBAL","GO","GOTO","GRANT","GRANTED","GREATEST","GROUP","GROUPING","GROUPS","HANDLER","HAVING","HEADER","HEX","HIERARCHY","HOLD","HOUR","ID","IDENTITY","IF","IGNORE","ILIKE","IMMEDIATE","IMMEDIATELY","IMMUTABLE","IMPLEMENTATION","IMPLICIT","IMPORT","IN","INCLUDING","INCREMENT","INDENT","INDEX","INDEXES","INDICATOR","INHERIT","INHERITS","INITIALLY","INLINE","INNER","INOUT","INPUT","INSENSITIVE","INSERT","INSTANCE","INSTANTIABLE","INSTEAD","INT","INTEGER","INTEGRITY","INTERSECT","INTERSECTION","INTERVAL","INTO","INVOKER","IS","ISNULL","ISOLATION","JOIN","K","KEY","KEY_MEMBER","KEY_TYPE","LABEL","LAG","LANGUAGE","LARGE","LAST","LAST_VALUE","LATERAL","LEAD","LEADING","LEAKPROOF","LEAST","LEFT","LENGTH","LEVEL","LIBRARY","LIKE","LIKE_REGEX","LIMIT","LINK","LISTEN","LN","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKED","LOGGED","LOWER","M","MAP","MAPPING","MATCH","MATCHED","MATERIALIZED","MAX","MAXVALUE","MAX_CARDINALITY","MEMBER","MERGE","MESSAGE_LENGTH","MESSAGE_OCTET_LENGTH","MESSAGE_TEXT","METHOD","MIN","MINUTE","MINVALUE","MOD","MODE","MODIFIES","MODULE","MONTH","MORE","MOVE","MULTISET","MUMPS","NAME","NAMES","NAMESPACE","NATIONAL","NATURAL","NCHAR","NCLOB","NESTING","NEW","NEXT","NFC","NFD","NFKC","NFKD","NIL","NO","NONE","NORMALIZE","NORMALIZED","NOT","NOTHING","NOTIFY","NOTNULL","NOWAIT","NTH_VALUE","NTILE","NULL","NULLABLE","NULLIF","NULLS","NUMBER","NUMERIC","OBJECT","OCCURRENCES_REGEX","OCTETS","OCTET_LENGTH","OF","OFF","OFFSET","OIDS","OLD","ON","ONLY","OPEN","OPERATOR","OPTION","OPTIONS","OR","ORDER","ORDERING","ORDINALITY","OTHERS","OUT","OUTER","OUTPUT","OVER","OVERLAPS","OVERLAY","OVERRIDING","OWNED","OWNER","P","PAD","PARALLEL","PARAMETER","PARAMETER_MODE","PARAMETER_NAME","PARAMETER_ORDINAL_POSITION","PARAMETER_SPECIFIC_CATALOG","PARAMETER_SPECIFIC_NAME","PARAMETER_SPECIFIC_SCHEMA","PARSER","PARTIAL","PARTITION","PASCAL","PASSING","PASSTHROUGH","PASSWORD","PATH","PERCENT","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","PERIOD","PERMISSION","PLACING","PLANS","PLI","POLICY","PORTION","POSITION","POSITION_REGEX","POWER","PRECEDES","PRECEDING","PRECISION","PREPARE","PREPARED","PRESERVE","PRIMARY","PRIOR","PRIVILEGES","PROCEDURAL","PROCEDURE","PROGRAM","PUBLIC","QUOTE","RANGE","RANK","READ","READS","REAL","REASSIGN","RECHECK","RECOVERY","RECURSIVE","REF","REFERENCES","REFERENCING","REFRESH","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","REINDEX","RELATIVE","RELEASE","RENAME","REPEATABLE","REPLACE","REPLICA","REQUIRING","RESET","RESPECT","RESTART","RESTORE","RESTRICT","RESULT","RETURN","RETURNED_CARDINALITY","RETURNED_LENGTH","RETURNED_OCTET_LENGTH","RETURNED_SQLSTATE","RETURNING","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUTINE","ROUTINE_CATALOG","ROUTINE_NAME","ROUTINE_SCHEMA","ROW","ROWS","ROW_COUNT","ROW_NUMBER","RULE","SAVEPOINT","SCALE","SCHEMA","SCHEMA_NAME","SCOPE","SCOPE_CATALOG","SCOPE_NAME","SCOPE_SCHEMA","SCROLL","SEARCH","SECOND","SECTION","SECURITY","SELECT","SELECTIVE","SELF","SENSITIVE","SEQUENCE","SEQUENCES","SERIALIZABLE","SERVER","SERVER_NAME","SESSION","SESSION_USER","SET","SETOF","SETS","SHARE","SHOW","SIMILAR","SIMPLE","SIZE","SKIP","SMALLINT","SNAPSHOT","SOME","SOURCE","SPACE","SPECIFIC","SPECIFICTYPE","SPECIFIC_NAME","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","SQRT","STABLE","STANDALONE","START","STATE","STATEMENT","STATIC","STATISTICS","STDDEV_POP","STDDEV_SAMP","STDIN","STDOUT","STORAGE","STRICT","STRIP","STRUCTURE","STYLE","SUBCLASS_ORIGIN","SUBMULTISET","SUBSTRING","SUBSTRING_REGEX","SUCCEEDS","SUM","SYMMETRIC","SYSID","SYSTEM","SYSTEM_TIME","SYSTEM_USER","T","TABLE","TABLES","TABLESAMPLE","TABLESPACE","TABLE_NAME","TEMP","TEMPLATE","TEMPORARY","TEXT","THEN","TIES","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TOKEN","TOP_LEVEL_COUNT","TRAILING","TRANSACTION","TRANSACTIONS_COMMITTED","TRANSACTIONS_ROLLED_BACK","TRANSACTION_ACTIVE","TRANSFORM","TRANSFORMS","TRANSLATE","TRANSLATE_REGEX","TRANSLATION","TREAT","TRIGGER","TRIGGER_CATALOG","TRIGGER_NAME","TRIGGER_SCHEMA","TRIM","TRIM_ARRAY","TRUE","TRUNCATE","TRUSTED","TYPE","TYPES","UESCAPE","UNBOUNDED","UNCOMMITTED","UNDER","UNENCRYPTED","UNION","UNIQUE","UNKNOWN","UNLINK","UNLISTEN","UNLOGGED","UNNAMED","UNNEST","UNTIL","UNTYPED","UPDATE","UPPER","URI","USAGE","USER","USER_DEFINED_TYPE_CATALOG","USER_DEFINED_TYPE_CODE","USER_DEFINED_TYPE_NAME","USER_DEFINED_TYPE_SCHEMA","USING","VACUUM","VALID","VALIDATE","VALIDATOR","VALUE","VALUES","VALUE_OF","VARBINARY","VARCHAR","VARIADIC","VARYING","VAR_POP","VAR_SAMP","VERBOSE","VERSION","VERSIONING","VIEW","VIEWS","VOLATILE","WHEN","WHENEVER","WHERE","WHITESPACE","WIDTH_BUCKET","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPER","WRITE","XML","XMLAGG","XMLATTRIBUTES","XMLBINARY","XMLCAST","XMLCOMMENT","XMLCONCAT","XMLDECLARATION","XMLDOCUMENT","XMLELEMENT","XMLEXISTS","XMLFOREST","XMLITERATE","XMLNAMESPACES","XMLPARSE","XMLPI","XMLQUERY","XMLROOT","XMLSCHEMA","XMLSERIALIZE","XMLTABLE","XMLTEXT","XMLVALIDATE","YEAR","YES","ZONE"],operators:["AND","BETWEEN","IN","LIKE","NOT","OR","IS","NULL","INTERSECT","UNION","INNER","JOIN","LEFT","OUTER","RIGHT"],builtinFunctions:["abbrev","abs","acos","acosd","age","any","area","array_agg","array_append","array_cat","array_dims","array_fill","array_length","array_lower","array_ndims","array_position","array_positions","array_prepend","array_remove","array_replace","array_to_json","array_to_string","array_to_tsvector","array_upper","ascii","asin","asind","atan","atan2","atan2d","atand","avg","bit","bit_and","bit_length","bit_or","bool_and","bool_or","bound_box","box","brin_summarize_new_values","broadcast","btrim","cardinality","cbrt","ceil","ceiling","center","char_length","character_length","chr","circle","clock_timestamp","coalesce","col_description","concat","concat_ws","convert","convert_from","convert_to","corr","cos","cosd","cot","cotd","count","covar_pop","covar_samp","cume_dist","current_catalog","current_database","current_date","current_query","current_role","current_schema","current_schemas","current_setting","current_time","current_timestamp","current_user","currval","cursor_to_xml","date_part","date_trunc","decode","degrees","dense_rank","diameter","div","encode","enum_first","enum_last","enum_range","every","exp","extract","family","first_value","floor","format","format_type","generate_series","generate_subscripts","get_bit","get_byte","get_current_ts_config","gin_clean_pending_list","greatest","grouping","has_any_column_privilege","has_column_privilege","has_database_privilege","has_foreign_data_wrapper_privilege","has_function_privilege","has_language_privilege","has_schema_privilege","has_sequence_privilege","has_server_privilege","has_table_privilege","has_tablespace_privilege","has_type_privilege","height","host","hostmask","inet_client_addr","inet_client_port","inet_merge","inet_same_family","inet_server_addr","inet_server_port","initcap","isclosed","isempty","isfinite","isopen","json_agg","json_object","json_object_agg","json_populate_record","json_populate_recordset","json_to_record","json_to_recordset","jsonb_agg","jsonb_object_agg","justify_days","justify_hours","justify_interval","lag","last_value","lastval","lead","least","left","length","line","ln","localtime","localtimestamp","log","lower","lower_inc","lower_inf","lpad","lseg","ltrim","make_date","make_interval","make_time","make_timestamp","make_timestamptz","masklen","max","md5","min","mod","mode","netmask","network","nextval","now","npoints","nth_value","ntile","nullif","num_nonnulls","num_nulls","numnode","obj_description","octet_length","overlay","parse_ident","path","pclose","percent_rank","percentile_cont","percentile_disc","pg_advisory_lock","pg_advisory_lock_shared","pg_advisory_unlock","pg_advisory_unlock_all","pg_advisory_unlock_shared","pg_advisory_xact_lock","pg_advisory_xact_lock_shared","pg_backend_pid","pg_backup_start_time","pg_blocking_pids","pg_cancel_backend","pg_client_encoding","pg_collation_is_visible","pg_column_size","pg_conf_load_time","pg_control_checkpoint","pg_control_init","pg_control_recovery","pg_control_system","pg_conversion_is_visible","pg_create_logical_replication_slot","pg_create_physical_replication_slot","pg_create_restore_point","pg_current_xlog_flush_location","pg_current_xlog_insert_location","pg_current_xlog_location","pg_database_size","pg_describe_object","pg_drop_replication_slot","pg_export_snapshot","pg_filenode_relation","pg_function_is_visible","pg_get_constraintdef","pg_get_expr","pg_get_function_arguments","pg_get_function_identity_arguments","pg_get_function_result","pg_get_functiondef","pg_get_indexdef","pg_get_keywords","pg_get_object_address","pg_get_owned_sequence","pg_get_ruledef","pg_get_serial_sequence","pg_get_triggerdef","pg_get_userbyid","pg_get_viewdef","pg_has_role","pg_identify_object","pg_identify_object_as_address","pg_index_column_has_property","pg_index_has_property","pg_indexam_has_property","pg_indexes_size","pg_is_in_backup","pg_is_in_recovery","pg_is_other_temp_schema","pg_is_xlog_replay_paused","pg_last_committed_xact","pg_last_xact_replay_timestamp","pg_last_xlog_receive_location","pg_last_xlog_replay_location","pg_listening_channels","pg_logical_emit_message","pg_logical_slot_get_binary_changes","pg_logical_slot_get_changes","pg_logical_slot_peek_binary_changes","pg_logical_slot_peek_changes","pg_ls_dir","pg_my_temp_schema","pg_notification_queue_usage","pg_opclass_is_visible","pg_operator_is_visible","pg_opfamily_is_visible","pg_options_to_table","pg_postmaster_start_time","pg_read_binary_file","pg_read_file","pg_relation_filenode","pg_relation_filepath","pg_relation_size","pg_reload_conf","pg_replication_origin_create","pg_replication_origin_drop","pg_replication_origin_oid","pg_replication_origin_progress","pg_replication_origin_session_is_setup","pg_replication_origin_session_progress","pg_replication_origin_session_reset","pg_replication_origin_session_setup","pg_replication_origin_xact_reset","pg_replication_origin_xact_setup","pg_rotate_logfile","pg_size_bytes","pg_size_pretty","pg_sleep","pg_sleep_for","pg_sleep_until","pg_start_backup","pg_stat_file","pg_stop_backup","pg_switch_xlog","pg_table_is_visible","pg_table_size","pg_tablespace_databases","pg_tablespace_location","pg_tablespace_size","pg_terminate_backend","pg_total_relation_size","pg_trigger_depth","pg_try_advisory_lock","pg_try_advisory_lock_shared","pg_try_advisory_xact_lock","pg_try_advisory_xact_lock_shared","pg_ts_config_is_visible","pg_ts_dict_is_visible","pg_ts_parser_is_visible","pg_ts_template_is_visible","pg_type_is_visible","pg_typeof","pg_xact_commit_timestamp","pg_xlog_location_diff","pg_xlog_replay_pause","pg_xlog_replay_resume","pg_xlogfile_name","pg_xlogfile_name_offset","phraseto_tsquery","pi","plainto_tsquery","point","polygon","popen","position","power","pqserverversion","query_to_xml","querytree","quote_ident","quote_literal","quote_nullable","radians","radius","random","range_merge","rank","regexp_matches","regexp_replace","regexp_split_to_array","regexp_split_to_table","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","repeat","replace","reverse","right","round","row_number","row_security_active","row_to_json","rpad","rtrim","scale","session_user","set_bit","set_byte","set_config","set_masklen","setseed","setval","setweight","shobj_description","sign","sin","sind","split_part","sprintf","sqrt","statement_timestamp","stddev","stddev_pop","stddev_samp","string_agg","string_to_array","strip","strpos","substr","substring","sum","table_to_xml","table_to_xml_and_xmlschema","tan","tand","text","timeofday","timezone","to_ascii","to_char","to_date","to_hex","to_json","to_number","to_regclass","to_regnamespace","to_regoper","to_regoperator","to_regproc","to_regprocedure","to_regrole","to_regtype","to_timestamp","to_tsquery","to_tsvector","transaction_timestamp","translate","trim","trunc","ts_debug","ts_delete","ts_filter","ts_headline","ts_lexize","ts_parse","ts_rank","ts_rank_cd","ts_rewrite","ts_stat","ts_token_type","tsquery_phrase","tsvector_to_array","tsvector_update_trigger","tsvector_update_trigger_column","txid_current","txid_current_snapshot","txid_snapshot_xip","txid_snapshot_xmax","txid_snapshot_xmin","txid_visible_in_snapshot","unnest","upper","upper_inc","upper_inf","user","var_pop","var_samp","variance","version","width","width_bucket","xml_is_well_formed","xml_is_well_formed_content","xml_is_well_formed_document","xmlagg","xmlcomment","xmlconcat","xmlelement","xmlexists","xmlforest","xmlparse","xmlpi","xmlroot","xmlserialize","xpath","xpath_exists"],builtinVariables:[],pseudoColumns:[],tokenizer:{root:[{include:"@comments"},{include:"@whitespace"},{include:"@pseudoColumns"},{include:"@numbers"},{include:"@strings"},{include:"@complexIdentifiers"},{include:"@scopes"},[/[;,.]/,"delimiter"],[/[()]/,"@brackets"],[/[\w@#$]+/,{cases:{"@keywords":"keyword","@operators":"operator","@builtinVariables":"predefined","@builtinFunctions":"predefined","@default":"identifier"}}],[/[<>=!%&+\-*/|~^]/,"operator"]],whitespace:[[/\s+/,"white"]],comments:[[/--+.*/,"comment"],[/\/\*/,{token:"comment.quote",next:"@comment"}]],comment:[[/[^*/]+/,"comment"],[/\*\//,{token:"comment.quote",next:"@pop"}],[/./,"comment"]],pseudoColumns:[[/[$][A-Za-z_][\w@#$]*/,{cases:{"@pseudoColumns":"predefined","@default":"identifier"}}]],numbers:[[/0[xX][0-9a-fA-F]*/,"number"],[/[$][+-]*\d*(\.\d*)?/,"number"],[/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/,"number"]],strings:[[/'/,{token:"string",next:"@string"}]],string:[[/[^']+/,"string"],[/''/,"string"],[/'/,{token:"string",next:"@pop"}]],complexIdentifiers:[[/"/,{token:"identifier.quote",next:"@quotedIdentifier"}]],quotedIdentifier:[[/[^"]+/,"identifier"],[/""/,"identifier"],[/"/,{token:"identifier.quote",next:"@pop"}]],scopes:[]}}}}]); \ No newline at end of file diff --git a/docs/dist/bundle.css b/docs/dist/bundle.css deleted file mode 100644 index 76a4b28f..00000000 --- a/docs/dist/bundle.css +++ /dev/null @@ -1,3903 +0,0 @@ -#error.svelte-104hor5{background:darkred;color:white;flex:1;padding:10px}.invisible.svelte-104hor5{display:none}.visible.svelte-104hor5{display:block} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .accessibilityHelpWidget { - padding: 10px; - vertical-align: middle; - overflow: scroll; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-aria-container { - position: absolute; /* try to hide from window but not from screen readers */ - left:-999em; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .selection-anchor { - background-color: #007ACC; - width: 2px !important; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .bracket-match { - box-sizing: border-box; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .monaco-editor-overlaymessage { - padding-bottom: 8px; - z-index: 10000; -} - -@keyframes fadeIn { - from { opacity: 0; } - to { opacity: 1; } -} -.monaco-editor .monaco-editor-overlaymessage.fadeIn { - animation: fadeIn 150ms ease-out; -} - -@keyframes fadeOut { - from { opacity: 1; } - to { opacity: 0; } -} -.monaco-editor .monaco-editor-overlaymessage.fadeOut { - animation: fadeOut 100ms ease-out; -} - -.monaco-editor .monaco-editor-overlaymessage .message { - padding: 1px 4px; -} - -.monaco-editor .monaco-editor-overlaymessage .anchor { - width: 0 !important; - height: 0 !important; - border-color: transparent; - border-style: solid; - z-index: 1000; - border-width: 8px; - position: absolute; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .lightbulb-glyph, -.monaco-editor .codicon-lightbulb { - display: flex; - align-items: center; - justify-content: center; - height: 16px; - width: 20px; - padding-left: 2px; -} - -.monaco-editor .lightbulb-glyph:hover, -.monaco-editor .codicon-lightbulb:hover { - cursor: pointer; - /* transform: scale(1.3, 1.3); */ -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .codelens-decoration { - overflow: hidden; - display: inline-block; - text-overflow: ellipsis; -} - -.monaco-editor .codelens-decoration > span, -.monaco-editor .codelens-decoration > a { - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - white-space: nowrap; - vertical-align: sub; -} - -.monaco-editor .codelens-decoration > a { - text-decoration: none; -} - -.monaco-editor .codelens-decoration > a:hover { - cursor: pointer; -} - -.monaco-editor .codelens-decoration .codicon { - vertical-align: middle; - color: currentColor !important; -} - -.monaco-editor .codelens-decoration > a:hover .codicon::before { - cursor: pointer; -} - -@keyframes fadein { - 0% { opacity: 0; visibility: visible;} - 100% { opacity: 1; } -} - -.monaco-editor .codelens-decoration.fadein { - animation: fadein 0.1s linear; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-action-bar { - text-align: right; - white-space: nowrap; -} - -.monaco-action-bar .actions-container { - display: flex; - margin: 0 auto; - padding: 0; - width: 100%; - justify-content: flex-end; -} - -.monaco-action-bar.vertical .actions-container { - display: inline-block; -} - -.monaco-action-bar.reverse .actions-container { - flex-direction: row-reverse; -} - -.monaco-action-bar .action-item { - cursor: pointer; - display: inline-block; - transition: transform 50ms ease; - position: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */ -} - -.monaco-action-bar .action-item.disabled { - cursor: default; -} - -.monaco-action-bar.animated .action-item.active { - transform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */ -} - -.monaco-action-bar .action-item .icon, -.monaco-action-bar .action-item .codicon { - display: inline-block; -} - -.monaco-action-bar .action-item .codicon { - display: flex; - align-items: center; -} - -.monaco-action-bar .action-label { - font-size: 11px; - margin-right: 4px; -} - -.monaco-action-bar .action-item.disabled .action-label, -.monaco-action-bar .action-item.disabled .action-label:hover { - opacity: 0.4; -} - -/* Vertical actions */ - -.monaco-action-bar.vertical { - text-align: left; -} - -.monaco-action-bar.vertical .action-item { - display: block; -} - -.monaco-action-bar.vertical .action-label.separator { - display: block; - border-bottom: 1px solid #bbb; - padding-top: 1px; - margin-left: .8em; - margin-right: .8em; -} - -.monaco-action-bar.animated.vertical .action-item.active { - transform: translate(5px, 0); -} - -.secondary-actions .monaco-action-bar .action-label { - margin-left: 6px; -} - -/* Action Items */ -.monaco-action-bar .action-item.select-container { - overflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */ - flex: 1; - max-width: 170px; - min-width: 60px; - display: flex; - align-items: center; - justify-content: center; - margin-right: 10px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor.vs .dnd-target { - border-right: 2px dotted black; - color: white; /* opposite of black */ -} -.monaco-editor.vs-dark .dnd-target { - border-right: 2px dotted #AEAFAD; - color: #51504f; /* opposite of #AEAFAD */ -} -.monaco-editor.hc-black .dnd-target { - border-right: 2px dotted #fff; - color: #000; /* opposite of #fff */ -} - -.monaco-editor.mouse-default .view-lines, -.monaco-editor.vs-dark.mac.mouse-default .view-lines, -.monaco-editor.hc-black.mac.mouse-default .view-lines { - cursor: default; -} -.monaco-editor.mouse-copy .view-lines, -.monaco-editor.vs-dark.mac.mouse-copy .view-lines, -.monaco-editor.hc-black.mac.mouse-copy .view-lines { - cursor: copy; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-custom-checkbox { - margin-left: 2px; - float: left; - cursor: pointer; - overflow: hidden; - opacity: 0.7; - width: 20px; - height: 20px; - border: 1px solid transparent; - padding: 1px; - box-sizing: border-box; - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -.monaco-custom-checkbox:hover, -.monaco-custom-checkbox.checked { - opacity: 1; -} - -.hc-black .monaco-custom-checkbox { - background: none; -} - -.hc-black .monaco-custom-checkbox:hover { - background: none; -} - -.monaco-custom-checkbox.monaco-simple-checkbox { - height: 18px; - width: 18px; - border: 1px solid transparent; - border-radius: 3px; - margin-right: 9px; - margin-left: 0px; - padding: 0px; - opacity: 1; - background-size: 16px !important; -} - -/* hide check when unchecked */ -.monaco-custom-checkbox.monaco-simple-checkbox.unchecked:not(.checked)::before { - visibility: hidden;; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* Find widget */ -.monaco-editor .find-widget { - position: absolute; - z-index: 50; - height: 33px; - overflow: hidden; - line-height: 19px; - transition: transform 200ms linear; - padding: 0 4px; - box-sizing: border-box; - transform: translateY(calc(-100% - 10px)); /* shadow (10px) */ -} - -.monaco-editor .find-widget textarea { - margin: 0px; -} - -.monaco-editor .find-widget.hiddenEditor { - display: none; -} - -/* Find widget when replace is toggled on */ -.monaco-editor .find-widget.replaceToggled > .replace-part { - display: flex; -} - -.monaco-editor .find-widget.visible { - transform: translateY(0); -} - -.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { - outline: 1px solid -webkit-focus-ring-color; - outline-offset: -1px; -} - -.monaco-editor .find-widget .monaco-inputbox .input { - background-color: transparent; - min-height: 0; -} - -.monaco-editor .find-widget .monaco-findInput .input { - font-size: 13px; -} - -.monaco-editor .find-widget > .find-part, -.monaco-editor .find-widget > .replace-part { - margin: 4px 0 0 17px; - font-size: 12px; - display: flex; -} - -.monaco-editor .find-widget > .find-part .monaco-inputbox, -.monaco-editor .find-widget > .replace-part .monaco-inputbox { - min-height: 25px; -} - - -.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .mirror { - padding-right: 22px; -} - -.monaco-editor .find-widget > .find-part .monaco-inputbox > .wrapper > .input, -.monaco-editor .find-widget > .find-part .monaco-inputbox > .wrapper > .mirror, -.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .input, -.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .mirror { - padding-top: 2px; - padding-bottom: 2px; -} - -.monaco-editor .find-widget > .find-part .find-actions { - height: 25px; - display: flex; - align-items: center; -} - -.monaco-editor .find-widget > .replace-part .replace-actions { - height: 25px; - display: flex; - align-items: center; -} - -.monaco-editor .find-widget .monaco-findInput { - vertical-align: middle; - display: flex; - flex:1; -} - -.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element { - /* Make sure textarea inherits the width correctly */ - width: 100%; -} - -.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical { - /* Hide vertical scrollbar */ - opacity: 0; -} - -.monaco-editor .find-widget .matchesCount { - display: flex; - flex: initial; - margin: 0 0 0 3px; - padding: 2px 0 0 2px; - height: 25px; - vertical-align: middle; - box-sizing: border-box; - text-align: center; - line-height: 23px; -} - -.monaco-editor .find-widget .button { - width: 20px; - height: 20px; - display: flex; - flex: initial; - margin-left: 3px; - background-position: center center; - background-repeat: no-repeat; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; -} - -.monaco-editor .find-widget .button.left { - margin-left: 0; - margin-right: 3px; -} - -.monaco-editor .find-widget .button.wide { - width: auto; - padding: 1px 6px; - top: -1px; -} - -.monaco-editor .find-widget .button.toggle { - position: absolute; - top: 0; - left: 3px; - width: 18px; - height: 100%; - box-sizing: border-box; -} - -.monaco-editor .find-widget .button.toggle.disabled { - display: none; -} - -.monaco-editor .find-widget .disabled { - opacity: 0.3; - cursor: default; -} - -.monaco-editor .find-widget > .replace-part { - display: none; -} - -.monaco-editor .find-widget > .replace-part > .monaco-findInput { - position: relative; - display: flex; - vertical-align: middle; - flex: auto; - flex-grow: 0; - flex-shrink: 0; -} - -.monaco-editor .find-widget > .replace-part > .monaco-findInput > .controls { - position: absolute; - top: 3px; - right: 2px; -} - -/* REDUCED */ -.monaco-editor .find-widget.reduced-find-widget .matchesCount { - display:none; -} - -/* NARROW (SMALLER THAN REDUCED) */ -.monaco-editor .find-widget.narrow-find-widget { - max-width: 257px !important; -} - -/* COLLAPSED (SMALLER THAN NARROW) */ -.monaco-editor .find-widget.collapsed-find-widget { - max-width: 170px !important; -} - -.monaco-editor .find-widget.collapsed-find-widget .button.previous, -.monaco-editor .find-widget.collapsed-find-widget .button.next, -.monaco-editor .find-widget.collapsed-find-widget .button.replace, -.monaco-editor .find-widget.collapsed-find-widget .button.replace-all, -.monaco-editor .find-widget.collapsed-find-widget > .find-part .monaco-findInput .controls { - display:none; -} - -.monaco-editor .findMatch { - animation-duration: 0; - animation-name: inherit !important; -} - -.monaco-editor .find-widget .monaco-sash { - left: 0 !important; -} - -.monaco-editor.hc-black .find-widget .button:before { - position: relative; - top: 1px; - left: 2px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-sash { - position: absolute; - z-index: 35; - touch-action: none; -} - -.monaco-sash.disabled { - pointer-events: none; -} - -.monaco-sash.mac.vertical { - cursor: col-resize; -} - -.monaco-sash.vertical.minimum { - cursor: e-resize; -} - -.monaco-sash.vertical.maximum { - cursor: w-resize; -} - -.monaco-sash.mac.horizontal { - cursor: row-resize; -} - -.monaco-sash.horizontal.minimum { - cursor: s-resize; -} - -.monaco-sash.horizontal.maximum { - cursor: n-resize; -} - -.monaco-sash.disabled { - cursor: default !important; - pointer-events: none !important; -} - -/** Debug **/ - -.monaco-sash.debug { - background: cyan; -} - -.monaco-sash.debug.disabled { - background: rgba(0, 255, 255, 0.2); -} - -.monaco-sash.debug:not(.disabled).orthogonal-start::before, -.monaco-sash.debug:not(.disabled).orthogonal-end::after { - background: red; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -/* ---------- Find input ---------- */ - -.monaco-findInput { - position: relative; -} - -.monaco-findInput .monaco-inputbox { - font-size: 13px; - width: 100%; -} - -.monaco-findInput > .controls { - position: absolute; - top: 3px; - right: 2px; -} - -.vs .monaco-findInput.disabled { - background-color: #E1E1E1; -} - -/* Theming */ -.vs-dark .monaco-findInput.disabled { - background-color: #333; -} - -/* Highlighting */ -.monaco-findInput.highlight-0 .controls { - animation: monaco-findInput-highlight-0 100ms linear 0s; -} -.monaco-findInput.highlight-1 .controls { - animation: monaco-findInput-highlight-1 100ms linear 0s; -} -.hc-black .monaco-findInput.highlight-0 .controls, -.vs-dark .monaco-findInput.highlight-0 .controls { - animation: monaco-findInput-highlight-dark-0 100ms linear 0s; -} -.hc-black .monaco-findInput.highlight-1 .controls, -.vs-dark .monaco-findInput.highlight-1 .controls { - animation: monaco-findInput-highlight-dark-1 100ms linear 0s; -} - -@keyframes monaco-findInput-highlight-0 { - 0% { background: rgba(253, 255, 0, 0.8); } - 100% { background: transparent; } -} -@keyframes monaco-findInput-highlight-1 { - 0% { background: rgba(253, 255, 0, 0.8); } - /* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/ - 99% { background: transparent; } -} - -@keyframes monaco-findInput-highlight-dark-0 { - 0% { background: rgba(255, 255, 255, 0.44); } - 100% { background: transparent; } -} -@keyframes monaco-findInput-highlight-dark-1 { - 0% { background: rgba(255, 255, 255, 0.44); } - /* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/ - 99% { background: transparent; } -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-inputbox { - position: relative; - display: block; - padding: 0; - box-sizing: border-box; - - /* Customizable */ - font-size: inherit; -} - -.monaco-inputbox.idle { - border: 1px solid transparent; -} - -.monaco-inputbox > .wrapper > .input, -.monaco-inputbox > .wrapper > .mirror { - - /* Customizable */ - padding: 4px; -} - -.monaco-inputbox > .wrapper { - position: relative; - width: 100%; - height: 100%; -} - -.monaco-inputbox > .wrapper > .input { - display: inline-block; - box-sizing: border-box; - width: 100%; - height: 100%; - line-height: inherit; - border: none; - font-family: inherit; - font-size: inherit; - resize: none; - color: inherit; -} - -.monaco-inputbox > .wrapper > input { - text-overflow: ellipsis; -} - -.monaco-inputbox > .wrapper > textarea.input { - display: block; - -ms-overflow-style: none; /* IE 10+: hide scrollbars */ - scrollbar-width: none; /* Firefox: hide scrollbars */ - outline: none; -} - -.monaco-inputbox > .wrapper > textarea.input::-webkit-scrollbar { - display: none; /* Chrome + Safari: hide scrollbar */ -} - -.monaco-inputbox > .wrapper > textarea.input.empty { - white-space: nowrap; -} - -.monaco-inputbox > .wrapper > .mirror { - position: absolute; - display: inline-block; - width: 100%; - top: 0; - left: 0; - box-sizing: border-box; - white-space: pre-wrap; - visibility: hidden; - word-wrap: break-word; -} - -/* Context view */ - -.monaco-inputbox-container { - text-align: right; -} - -.monaco-inputbox-container .monaco-inputbox-message { - display: inline-block; - overflow: hidden; - text-align: left; - width: 100%; - box-sizing: border-box; - padding: 0.4em; - font-size: 12px; - line-height: 17px; - min-height: 34px; - margin-top: -1px; - word-wrap: break-word; -} - -/* Action bar support */ -.monaco-inputbox .monaco-action-bar { - position: absolute; - right: 2px; - top: 4px; -} - -.monaco-inputbox .monaco-action-bar .action-item { - margin-left: 2px; -} - -.monaco-inputbox .monaco-action-bar .action-item .codicon { - background-repeat: no-repeat; - width: 16px; - height: 16px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* Arrows */ -.monaco-scrollable-element > .scrollbar > .scra { - cursor: pointer; - font-size: 11px !important; -} - -.monaco-scrollable-element > .visible { - opacity: 1; - - /* Background rule added for IE9 - to allow clicks on dom node */ - background:rgba(0,0,0,0); - - transition: opacity 100ms linear; -} -.monaco-scrollable-element > .invisible { - opacity: 0; - pointer-events: none; -} -.monaco-scrollable-element > .invisible.fade { - transition: opacity 800ms linear; -} - -/* Scrollable Content Inset Shadow */ -.monaco-scrollable-element > .shadow { - position: absolute; - display: none; -} -.monaco-scrollable-element > .shadow.top { - display: block; - top: 0; - left: 3px; - height: 3px; - width: 100%; - box-shadow: #DDD 0 6px 6px -6px inset; -} -.monaco-scrollable-element > .shadow.left { - display: block; - top: 3px; - left: 0; - height: 100%; - width: 3px; - box-shadow: #DDD 6px 0 6px -6px inset; -} -.monaco-scrollable-element > .shadow.top-left-corner { - display: block; - top: 0; - left: 0; - height: 3px; - width: 3px; -} -.monaco-scrollable-element > .shadow.top.left { - box-shadow: #DDD 6px 6px 6px -6px inset; -} - -/* ---------- Default Style ---------- */ - -.vs .monaco-scrollable-element > .scrollbar > .slider { - background: rgba(100, 100, 100, .4); -} -.vs-dark .monaco-scrollable-element > .scrollbar > .slider { - background: rgba(121, 121, 121, .4); -} -.hc-black .monaco-scrollable-element > .scrollbar > .slider { - background: rgba(111, 195, 223, .6); -} - -.monaco-scrollable-element > .scrollbar > .slider:hover { - background: rgba(100, 100, 100, .7); -} -.hc-black .monaco-scrollable-element > .scrollbar > .slider:hover { - background: rgba(111, 195, 223, .8); -} - -.monaco-scrollable-element > .scrollbar > .slider.active { - background: rgba(0, 0, 0, .6); -} -.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active { - background: rgba(191, 191, 191, .4); -} -.hc-black .monaco-scrollable-element > .scrollbar > .slider.active { - background: rgba(111, 195, 223, 1); -} - -.vs-dark .monaco-scrollable-element .shadow.top { - box-shadow: none; -} - -.vs-dark .monaco-scrollable-element .shadow.left { - box-shadow: #000 6px 0 6px -6px inset; -} - -.vs-dark .monaco-scrollable-element .shadow.top.left { - box-shadow: #000 6px 6px 6px -6px inset; -} - -.hc-black .monaco-scrollable-element .shadow.top { - box-shadow: none; -} - -.hc-black .monaco-scrollable-element .shadow.left { - box-shadow: none; -} - -.hc-black .monaco-scrollable-element .shadow.top.left { - box-shadow: none; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .margin-view-overlays .codicon-folding-expanded, -.monaco-editor .margin-view-overlays .codicon-folding-collapsed { - cursor: pointer; - opacity: 0; - transition: opacity 0.5s; - display: flex; - align-items: center; - justify-content: center; - font-size: 140%; - margin-left: 2px; -} - -.monaco-editor .margin-view-overlays:hover .codicon, -.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed, -.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons { - opacity: 1; -} - -.monaco-editor .inline-folded:after { - color: grey; - margin: 0.1em 0.2em 0 0.2em; - content: "⋯"; - display: inline; - line-height: 1em; - cursor: pointer; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* marker zone */ - -.monaco-editor .peekview-widget .head .peekview-title .severity-icon { - display: inline-block; - vertical-align: text-top; - margin-right: 4px; -} - -.monaco-editor .marker-widget { - text-overflow: ellipsis; - white-space: nowrap; -} - -.monaco-editor .marker-widget > .stale { - opacity: 0.6; - font-style: italic; -} - -.monaco-editor .marker-widget .title { - display: inline-block; - padding-right: 5px; -} - -.monaco-editor .marker-widget .descriptioncontainer { - position: absolute; - white-space: pre; - user-select: text; - -webkit-user-select: text; - -ms-user-select: text; - padding: 8px 12px 0 20px; -} - -.monaco-editor .marker-widget .descriptioncontainer .message { - display: flex; - flex-direction: column; -} - -.monaco-editor .marker-widget .descriptioncontainer .message .details { - padding-left: 6px; -} - -.monaco-editor .marker-widget .descriptioncontainer .message .source, -.monaco-editor .marker-widget .descriptioncontainer .message span.code { - opacity: 0.6; -} - -.monaco-editor .marker-widget .descriptioncontainer .message a.code-link { - opacity: 0.6; - color: inherit; -} -.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before { - content: '('; -} -.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after { - content: ')'; -} -.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span { - text-decoration: underline; - /** Hack to force underline to show **/ - border-bottom: 1px solid transparent; - text-underline-position: under; -} - -.monaco-editor .marker-widget .descriptioncontainer .filename { - cursor: pointer; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .peekview-widget .head { - box-sizing: border-box; - display: flex; -} - -.monaco-editor .peekview-widget .head .peekview-title { - display: flex; - align-items: center; - font-size: 13px; - margin-left: 20px; - cursor: pointer; - min-width: 0; -} - -.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) { - font-size: 0.9em; - margin-left: 0.5em; -} - -.monaco-editor .peekview-widget .head .peekview-title .meta { - white-space: nowrap; -} - -.monaco-editor .peekview-widget .head .peekview-title .dirname { - white-space: nowrap; -} - -.monaco-editor .peekview-widget .head .peekview-title .filename { - overflow: hidden; - text-overflow: ellipsis; -} - -.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before { - content: '-'; - padding: 0 0.3em; -} - -.monaco-editor .peekview-widget .head .peekview-actions { - flex: 1; - text-align: right; - padding-right: 2px; -} - -.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar { - display: inline-block; -} - -.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar, -.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar > .actions-container { - height: 100%; -} - -.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-item { - margin-left: 4px; -} - -.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-label { - width: 16px; - height: 100%; - margin: 0; - line-height: inherit; - background-repeat: no-repeat; - background-position: center center; -} - -.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-label.codicon { - margin: 0; -} - -.monaco-editor .peekview-widget > .body { - border-top: 1px solid; - position: relative; -} - -.monaco-editor .peekview-widget .head .peekview-title .codicon { - margin-right: 4px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* -------------------- IE10 remove auto clear button -------------------- */ - -::-ms-clear { - display: none; -} - -/* All widgets */ -/* I am not a big fan of this rule */ -.monaco-editor .editor-widget input { - color: inherit; -} - -/* -------------------- Editor -------------------- */ - -.monaco-editor { - position: relative; - overflow: visible; - -webkit-text-size-adjust: 100%; -} - -/* -------------------- Misc -------------------- */ - -.monaco-editor .overflow-guard { - position: relative; - overflow: hidden; -} - -.monaco-editor .view-overlays { - position: absolute; - top: 0; -} - -/* -.monaco-editor .auto-closed-character { - opacity: 0.3; -} -*/ - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .inputarea { - min-width: 0; - min-height: 0; - margin: 0; - padding: 0; - position: absolute; - outline: none !important; - resize: none; - border: none; - overflow: hidden; - color: transparent; - background-color: transparent; -} -/*.monaco-editor .inputarea { - position: fixed !important; - width: 800px !important; - height: 500px !important; - top: initial !important; - left: initial !important; - bottom: 0 !important; - right: 0 !important; - color: black !important; - background: white !important; - line-height: 15px !important; - font-size: 14px !important; -}*/ -.monaco-editor .inputarea.ime-input { - z-index: 10; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .margin-view-overlays .line-numbers { - font-variant-numeric: tabular-nums; - position: absolute; - text-align: right; - display: inline-block; - vertical-align: middle; - box-sizing: border-box; - cursor: default; - height: 100%; -} - -.monaco-editor .relative-current-line-number { - text-align: left; - display: inline-block; - width: 100%; -} - -.monaco-editor .margin-view-overlays .line-numbers.lh-odd { - margin-top: 1px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-mouse-cursor-text { - cursor: text; -} - -/* The following selector looks a bit funny, but that is needed to cover all the workbench and the editor!! */ -.vs-dark .mac .monaco-mouse-cursor-text, .hc-black .mac .monaco-mouse-cursor-text, -.vs-dark.mac .monaco-mouse-cursor-text, .hc-black.mac .monaco-mouse-cursor-text { - cursor: -webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8, text; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .view-overlays .current-line { - display: block; - position: absolute; - left: 0; - top: 0; - box-sizing: border-box; -} - -.monaco-editor .margin-view-overlays .current-line { - display: block; - position: absolute; - left: 0; - top: 0; - box-sizing: border-box; -} - -.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both { - border-right: 0; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* - Keeping name short for faster parsing. - cdr = core decorations rendering (div) -*/ -.monaco-editor .lines-content .cdr { - position: absolute; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .glyph-margin { - position: absolute; - top: 0; -} - -/* - Keeping name short for faster parsing. - cgmr = core glyph margin rendering (div) -*/ -.monaco-editor .margin-view-overlays .cgmr { - position: absolute; - display: flex; - align-items: center; - justify-content: center; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* - Keeping name short for faster parsing. - cigr = core ident guides rendering (div) -*/ -.monaco-editor .lines-content .cigr { - position: absolute; -} -.monaco-editor .lines-content .cigra { - position: absolute; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* Uncomment to see lines flashing when they're painted */ -/*.monaco-editor .view-lines > .view-line { - background-color: none; - animation-name: flash-background; - animation-duration: 800ms; -} -@keyframes flash-background { - 0% { background-color: lightgreen; } - 100% { background-color: none } -}*/ - -.monaco-editor.no-user-select .lines-content, -.monaco-editor.no-user-select .view-line, -.monaco-editor.no-user-select .view-lines { - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -.monaco-editor .view-lines { - white-space: nowrap; -} - -.monaco-editor .view-line { - position: absolute; - width: 100%; -} - -.monaco-editor .mtkz { - display: inline-block; -} - -/* TODO@tokenization bootstrap fix */ -/*.monaco-editor .view-line > span > span { - float: none; - min-height: inherit; - margin-left: inherit; -}*/ - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -.monaco-editor .lines-decorations { - position: absolute; - top: 0; - background: white; -} - -/* - Keeping name short for faster parsing. - cldr = core lines decorations rendering (div) -*/ -.monaco-editor .margin-view-overlays .cldr { - position: absolute; - height: 100%; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* - Keeping name short for faster parsing. - cmdr = core margin decorations rendering (div) -*/ -.monaco-editor .margin-view-overlays .cmdr { - position: absolute; - left: 0; - width: 100%; - height: 100%; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* START cover the case that slider is visible on mouseover */ -.monaco-editor .minimap.slider-mouseover .minimap-slider { - opacity: 0; - transition: opacity 100ms linear; -} -.monaco-editor .minimap.slider-mouseover:hover .minimap-slider { - opacity: 1; -} -.monaco-editor .minimap.slider-mouseover .minimap-slider.active { - opacity: 1; -} -/* END cover the case that slider is visible on mouseover */ - -.monaco-editor .minimap-shadow-hidden { - position: absolute; - width: 0; -} -.monaco-editor .minimap-shadow-visible { - position: absolute; - left: -6px; - width: 6px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -.monaco-editor .overlayWidgets { - position: absolute; - top: 0; - left:0; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .view-ruler { - position: absolute; - top: 0; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .scroll-decoration { - position: absolute; - top: 0; - left: 0; - height: 6px; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* - Keeping name short for faster parsing. - cslr = core selections layer rendering (div) -*/ -.monaco-editor .lines-content .cslr { - position: absolute; -} - -.monaco-editor .top-left-radius { border-top-left-radius: 3px; } -.monaco-editor .bottom-left-radius { border-bottom-left-radius: 3px; } -.monaco-editor .top-right-radius { border-top-right-radius: 3px; } -.monaco-editor .bottom-right-radius { border-bottom-right-radius: 3px; } - -.monaco-editor.hc-black .top-left-radius { border-top-left-radius: 0; } -.monaco-editor.hc-black .bottom-left-radius { border-bottom-left-radius: 0; } -.monaco-editor.hc-black .top-right-radius { border-top-right-radius: 0; } -.monaco-editor.hc-black .bottom-right-radius { border-bottom-right-radius: 0; } - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -.monaco-editor .cursors-layer { - position: absolute; - top: 0; -} - -.monaco-editor .cursors-layer > .cursor { - position: absolute; - overflow: hidden; -} - -/* -- smooth-caret-animation -- */ -.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor { - transition: all 80ms; -} - -/* -- block-outline-style -- */ -.monaco-editor .cursors-layer.cursor-block-outline-style > .cursor { - box-sizing: border-box; - background: transparent !important; - border-style: solid; - border-width: 1px; -} - -/* -- underline-style -- */ -.monaco-editor .cursors-layer.cursor-underline-style > .cursor { - border-bottom-width: 2px; - border-bottom-style: solid; - background: transparent !important; - box-sizing: border-box; -} - -/* -- underline-thin-style -- */ -.monaco-editor .cursors-layer.cursor-underline-thin-style > .cursor { - border-bottom-width: 1px; - border-bottom-style: solid; - background: transparent !important; - box-sizing: border-box; -} - -@keyframes monaco-cursor-smooth { - 0%, - 20% { - opacity: 1; - } - 60%, - 100% { - opacity: 0; - } -} - -@keyframes monaco-cursor-phase { - 0%, - 20% { - opacity: 1; - } - 90%, - 100% { - opacity: 0; - } -} - -@keyframes monaco-cursor-expand { - 0%, - 20% { - transform: scaleY(1); - } - 80%, - 100% { - transform: scaleY(0); - } -} - -.cursor-smooth { - animation: monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate; -} - -.cursor-phase { - animation: monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate; -} - -.cursor-expand > .cursor { - animation: monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -.monaco-editor .zone-widget { - position: absolute; - z-index: 10; -} - - -.monaco-editor .zone-widget .zone-widget-container { - border-top-style: solid; - border-bottom-style: solid; - border-top-width: 0; - border-bottom-width: 0; - position: relative; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-dropdown { - height: 100%; - padding: 0; -} - -.monaco-dropdown > .dropdown-label { - cursor: pointer; - height: 100%; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* -- zone widget */ -.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget { - border-top-width: 1px; - border-bottom-width: 1px; -} - -.monaco-editor .reference-zone-widget .inline { - display: inline-block; - vertical-align: top; -} - -.monaco-editor .reference-zone-widget .messages { - height: 100%; - width: 100%; - text-align: center; - padding: 3em 0; -} - -.monaco-editor .reference-zone-widget .ref-tree { - line-height: 23px; -} - -.monaco-editor .reference-zone-widget .ref-tree .reference { - text-overflow: ellipsis; - overflow: hidden; -} - -.monaco-editor .reference-zone-widget .ref-tree .reference-file { - display: inline-flex; - width: 100%; - height: 100%; -} - -.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file { - color: inherit !important; -} - -.monaco-editor .reference-zone-widget .ref-tree .reference-file .count { - margin-right: 12px; - margin-left: auto; -} - -/* High Contrast Theming */ - -.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file { - font-weight: bold; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* ---------- Icon label ---------- */ - -.monaco-icon-label { - display: flex; /* required for icons support :before rule */ - overflow: hidden; - text-overflow: ellipsis; -} - -.monaco-icon-label::before { - - /* svg icons rendered as background image */ - background-size: 16px; - background-position: left center; - background-repeat: no-repeat; - padding-right: 6px; - width: 16px; - height: 22px; - line-height: inherit !important; - display: inline-block; - - /* fonts icons */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - vertical-align: top; - - flex-shrink: 0; /* fix for https://github.com/Microsoft/vscode/issues/13787 */ -} - -.monaco-icon-label > .monaco-icon-label-container { - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - flex: 1; -} - -.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name { - color: inherit; - white-space: pre; /* enable to show labels that include multiple whitespaces */ -} - -.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name > .label-separator { - margin: 0 2px; - opacity: 0.5; -} - -.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description { - opacity: .7; - margin-left: 0.5em; - font-size: 0.9em; - white-space: pre; /* enable to show labels that include multiple whitespaces */ -} - -.vs .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description { - opacity: .95; -} - -.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name, -.monaco-icon-label.italic > .monaco-icon-description-container > .label-description { - font-style: italic; -} - -.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-name-container > .label-name, -.monaco-icon-label.strikethrough > .monaco-icon-description-container > .label-description { - text-decoration: line-through; -} - -.monaco-icon-label::after { - opacity: 0.75; - font-size: 90%; - font-weight: 600; - padding: 0 16px 0 5px; - text-align: center; -} - -/* make sure selection color wins when a label is being selected */ -.monaco-list:focus .selected .monaco-icon-label, /* list */ -.monaco-list:focus .selected .monaco-icon-label::after -{ - color: inherit !important; -} - -.monaco-list-row.focused.selected .label-description, -.monaco-list-row.selected .label-description { - opacity: .8; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-count-badge { - padding: 3px 6px; - border-radius: 11px; - font-size: 11px; - min-width: 18px; - min-height: 18px; - line-height: 11px; - font-weight: normal; - text-align: center; - display: inline-block; - box-sizing: border-box; -} - -.monaco-count-badge.long { - padding: 2px 3px; - border-radius: 2px; - min-height: auto; - line-height: normal; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-list { - position: relative; - height: 100%; - width: 100%; - white-space: nowrap; -} - -.monaco-list.mouse-support { - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -.monaco-list > .monaco-scrollable-element { - height: 100%; -} - -.monaco-list-rows { - position: relative; - width: 100%; - height: 100%; -} - -.monaco-list.horizontal-scrolling .monaco-list-rows { - width: auto; - min-width: 100%; -} - -.monaco-list-row { - position: absolute; - box-sizing: border-box; - overflow: hidden; - width: 100%; -} - -.monaco-list.mouse-support .monaco-list-row { - cursor: pointer; - touch-action: none; -} - -/* for OS X ballistic scrolling */ -.monaco-list-row.scrolling { - display: none !important; -} - -/* Focus */ -.monaco-list.element-focused, .monaco-list.selection-single, .monaco-list.selection-multiple { - outline: 0 !important; -} - -.monaco-list:focus .monaco-list-row.selected .codicon { - color: inherit; -} - -/* Dnd */ -.monaco-drag-image { - display: inline-block; - padding: 1px 7px; - border-radius: 10px; - font-size: 12px; - position: absolute; -} - -/* Type filter */ - -.monaco-list-type-filter { - display: flex; - align-items: center; - position: absolute; - border-radius: 2px; - padding: 0px 3px; - max-width: calc(100% - 10px); - text-overflow: ellipsis; - overflow: hidden; - text-align: right; - box-sizing: border-box; - cursor: all-scroll; - font-size: 13px; - line-height: 18px; - height: 20px; - z-index: 1; - top: 4px; -} - -.monaco-list-type-filter.dragging { - transition: top 0.2s, left 0.2s; -} - -.monaco-list-type-filter.ne { - right: 4px; -} - -.monaco-list-type-filter.nw { - left: 4px; -} - -.monaco-list-type-filter > .controls { - display: flex; - align-items: center; - box-sizing: border-box; - transition: width 0.2s; - width: 0; -} - -.monaco-list-type-filter.dragging > .controls, -.monaco-list-type-filter:hover > .controls { - width: 36px; -} - -.monaco-list-type-filter > .controls > * { - border: none; - box-sizing: border-box; - -webkit-appearance: none; - -moz-appearance: none; - background: none; - width: 16px; - height: 16px; - flex-shrink: 0; - margin: 0; - padding: 0; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; -} - -.monaco-list-type-filter > .controls > .filter { - margin-left: 4px; -} - -.monaco-list-type-filter-message { - position: absolute; - box-sizing: border-box; - width: 100%; - height: 100%; - top: 0; - left: 0; - padding: 40px 1em 1em 1em; - text-align: center; - white-space: normal; - opacity: 0.7; - pointer-events: none; -} - -.monaco-list-type-filter-message:empty { - display: none; -} - -/* Electron */ - -.monaco-list-type-filter { - cursor: grab; -} - -.monaco-list-type-filter.dragging { - cursor: grabbing; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-tl-row { - display: flex; - height: 100%; - align-items: center; - position: relative; -} - -.monaco-tl-indent { - height: 100%; - position: absolute; - top: 0; - left: 16px; - pointer-events: none; -} - -.hide-arrows .monaco-tl-indent { - left: 12px; -} - -.monaco-tl-indent > .indent-guide { - display: inline-block; - box-sizing: border-box; - height: 100%; - border-left: 1px solid transparent; -} - -.monaco-tl-indent > .indent-guide { - transition: border-color 0.1s linear; -} - -.monaco-tl-twistie, -.monaco-tl-contents { - height: 100%; -} - -.monaco-tl-twistie { - font-size: 10px; - text-align: right; - padding-right: 6px; - flex-shrink: 0; - width: 16px; - display: flex !important; - align-items: center; - justify-content: center; - color: inherit !important; - transform: translateX(3px); -} - -.monaco-tl-contents { - flex: 1; - overflow: hidden; -} - -.monaco-tl-twistie.collapsed::before { - transform: rotate(-90deg); -} - -.monaco-tl-twistie.codicon-tree-item-loading::before { - /* Use steps to throttle FPS to reduce CPU usage */ - animation: codicon-spin 1.25s steps(30) infinite; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-split-view2 { - position: relative; - width: 100%; - height: 100%; -} - -.monaco-split-view2 > .sash-container { - position: absolute; - width: 100%; - height: 100%; - pointer-events: none; -} - -.monaco-split-view2 > .sash-container > .monaco-sash { - pointer-events: initial; -} - -.monaco-split-view2 > .split-view-container { - width: 100%; - height: 100%; - white-space: nowrap; - position: relative; -} - -.monaco-split-view2 > .split-view-container > .split-view-view { - white-space: initial; - position: absolute; -} - -.monaco-split-view2 > .split-view-container > .split-view-view:not(.visible) { - display: none; -} - -.monaco-split-view2.vertical > .split-view-container > .split-view-view { - width: 100%; -} - -.monaco-split-view2.horizontal > .split-view-container > .split-view-view { - height: 100%; -} - -.monaco-split-view2.separator-border > .split-view-container > .split-view-view:not(:first-child)::before { - content: ' '; - position: absolute; - top: 0; - left: 0; - z-index: 5; - pointer-events: none; - background-color: var(--separator-border); -} - -.monaco-split-view2.separator-border.horizontal > .split-view-container > .split-view-view:not(:first-child)::before { - height: 100%; - width: 1px; -} - -.monaco-split-view2.separator-border.vertical > .split-view-container > .split-view-view:not(:first-child)::before { - height: 1px; - width: 100%; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .goto-definition-link { - text-decoration: underline; - cursor: pointer; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.colorpicker-widget { - height: 190px; - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -.monaco-editor .colorpicker-hover:focus { - outline: none; -} - - -/* Header */ - -.colorpicker-header { - display: flex; - height: 24px; - position: relative; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII="); - background-size: 9px 9px; - image-rendering: pixelated; -} - -.colorpicker-header .picked-color { - width: 216px; - text-align: center; - line-height: 24px; - cursor: pointer; - color: white; - flex: 1; - text-align: center; -} - -.colorpicker-header .picked-color.light { - color: black; -} - -.colorpicker-header .original-color { - width: 74px; - z-index: inherit; - cursor: pointer; -} - - -/* Body */ - -.colorpicker-body { - display: flex; - padding: 8px; - position: relative; -} - -.colorpicker-body .saturation-wrap { - overflow: hidden; - height: 150px; - position: relative; - min-width: 220px; - flex: 1; -} - -.colorpicker-body .saturation-box { - height: 150px; - position: absolute; -} - -.colorpicker-body .saturation-selection { - width: 9px; - height: 9px; - margin: -5px 0 0 -5px; - border: 1px solid rgb(255, 255, 255); - border-radius: 100%; - box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8); - position: absolute; -} - -.colorpicker-body .strip { - width: 25px; - height: 150px; -} - -.colorpicker-body .hue-strip { - position: relative; - margin-left: 8px; - cursor: grab; - background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); -} - -.colorpicker-body .opacity-strip { - position: relative; - margin-left: 8px; - cursor: grab; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII="); - background-size: 9px 9px; - image-rendering: pixelated; -} - -.colorpicker-body .strip.grabbing { - cursor: grabbing; -} - -.colorpicker-body .slider { - position: absolute; - top: 0; - left: -2px; - width: calc(100% + 4px); - height: 4px; - box-sizing: border-box; - border: 1px solid rgba(255, 255, 255, 0.71); - box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85); -} - -.colorpicker-body .strip .overlay { - height: 150px; - pointer-events: none; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-hover { - cursor: default; - position: absolute; - overflow: hidden; - z-index: 50; - user-select: text; - -webkit-user-select: text; - -ms-user-select: text; - box-sizing: initial; - animation: fadein 100ms linear; - line-height: 1.5em; -} - -.monaco-hover.hidden { - display: none; -} - -.monaco-hover .hover-contents { - padding: 4px 8px; -} - -.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) { - max-width: 500px; - word-wrap: break-word; -} - -.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) hr { - /* This is a strange rule but it avoids https://github.com/microsoft/vscode/issues/96795, just 100vw on its own caused the actual hover width to increase */ - min-width: calc(100% + 100vw); -} - -.monaco-hover p, -.monaco-hover .code, -.monaco-hover ul { - margin: 8px 0; -} - -.monaco-hover code { - font-family: var(--monaco-monospace-font); -} - -.monaco-hover hr { - margin-top: 4px; - margin-bottom: -4px; - margin-left: -10px; - margin-right: -10px; - height: 1px; -} - -.monaco-hover p:first-child, -.monaco-hover .code:first-child, -.monaco-hover ul:first-child { - margin-top: 0; -} - -.monaco-hover p:last-child, -.monaco-hover .code:last-child, -.monaco-hover ul:last-child { - margin-bottom: 0; -} - -/* MarkupContent Layout */ -.monaco-hover ul { - padding-left: 20px; -} -.monaco-hover ol { - padding-left: 20px; -} - -.monaco-hover li > p { - margin-bottom: 0; -} - -.monaco-hover li > ul { - margin-top: 0; -} - -.monaco-hover code { - border-radius: 3px; - padding: 0 0.4em; -} - -.monaco-hover .monaco-tokenized-source { - white-space: pre-wrap; - word-break: break-all; -} - -.monaco-hover .hover-row.status-bar { - font-size: 12px; - line-height: 22px; -} - -.monaco-hover .hover-row.status-bar .actions { - display: flex; - padding: 0px 8px; -} - -.monaco-hover .hover-row.status-bar .actions .action-container { - margin-right: 16px; - cursor: pointer; -} - -.monaco-hover .hover-row.status-bar .actions .action-container .action .icon { - padding-right: 4px; -} - -.monaco-hover .markdown-hover .hover-contents .codicon { - color: inherit; - font-size: inherit; - vertical-align: middle; -} - -.monaco-hover .hover-contents a.code-link:before { - content: '('; -} -.monaco-hover .hover-contents a.code-link:after { - content: ')'; -} - -.monaco-hover .hover-contents a.code-link { - color: inherit; -} -.monaco-hover .hover-contents a.code-link > span { - text-decoration: underline; - /** Hack to force underline to show **/ - border-bottom: 1px solid transparent; - text-underline-position: under; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .iPadShowKeyboard { - width: 58px; - min-width: 0; - height: 36px; - min-height: 0; - margin: 0; - padding: 0; - position: absolute; - resize: none; - overflow: hidden; - background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzY0IDQuMDEwNDJINC4wMDc3OUw0LjAwNzc5IDMyLjAyODZINDguMDM2NFY0LjAxMDQyWk00LjAwNzc5IDAuMDA3ODEyNUMxLjc5NzIxIDAuMDA3ODEyNSAwLjAwNTE4Nzk5IDEuNzk5ODQgMC4wMDUxODc5OSA0LjAxMDQyVjMyLjAyODZDMC4wMDUxODc5OSAzNC4yMzkyIDEuNzk3MjEgMzYuMDMxMiA0LjAwNzc5IDM2LjAzMTJINDguMDM2NEM1MC4yNDcgMzYuMDMxMiA1Mi4wMzkgMzQuMjM5MiA1Mi4wMzkgMzIuMDI4NlY0LjAxMDQyQzUyLjAzOSAxLjc5OTg0IDUwLjI0NyAwLjAwNzgxMjUgNDguMDM2NCAwLjAwNzgxMjVINC4wMDc3OVpNOC4wMTA0MiA4LjAxMzAySDEyLjAxM1YxMi4wMTU2SDguMDEwNDJWOC4wMTMwMlpNMjAuMDE4MiA4LjAxMzAySDE2LjAxNTZWMTIuMDE1NkgyMC4wMTgyVjguMDEzMDJaTTI0LjAyMDggOC4wMTMwMkgyOC4wMjM0VjEyLjAxNTZIMjQuMDIwOFY4LjAxMzAyWk0zNi4wMjg2IDguMDEzMDJIMzIuMDI2VjEyLjAxNTZIMzYuMDI4NlY4LjAxMzAyWk00MC4wMzEyIDguMDEzMDJINDQuMDMzOVYxMi4wMTU2SDQwLjAzMTJWOC4wMTMwMlpNMTYuMDE1NiAxNi4wMTgySDguMDEwNDJWMjAuMDIwOEgxNi4wMTU2VjE2LjAxODJaTTIwLjAxODIgMTYuMDE4MkgyNC4wMjA4VjIwLjAyMDhIMjAuMDE4MlYxNi4wMTgyWk0zMi4wMjYgMTYuMDE4MkgyOC4wMjM0VjIwLjAyMDhIMzIuMDI2VjE2LjAxODJaTTQ0LjAzMzkgMTYuMDE4MlYyMC4wMjA4SDM2LjAyODZWMTYuMDE4Mkg0NC4wMzM5Wk0xMi4wMTMgMjQuMDIzNEg4LjAxMDQyVjI4LjAyNkgxMi4wMTNWMjQuMDIzNFpNMTYuMDE1NiAyNC4wMjM0SDM2LjAyODZWMjguMDI2SDE2LjAxNTZWMjQuMDIzNFpNNDQuMDMzOSAyNC4wMjM0SDQwLjAzMTJWMjguMDI2SDQ0LjAzMzlWMjQuMDIzNFoiIGZpbGw9IiM0MjQyNDIiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMCI+DQo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=") center center no-repeat; - border: 4px solid #F6F6F6; - border-radius: 4px; -} - -.monaco-editor.vs-dark .iPadShowKeyboard { - background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzY0IDQuMDEwNDJINC4wMDc3OUw0LjAwNzc5IDMyLjAyODZINDguMDM2NFY0LjAxMDQyWk00LjAwNzc5IDAuMDA3ODEyNUMxLjc5NzIxIDAuMDA3ODEyNSAwLjAwNTE4Nzk5IDEuNzk5ODQgMC4wMDUxODc5OSA0LjAxMDQyVjMyLjAyODZDMC4wMDUxODc5OSAzNC4yMzkyIDEuNzk3MjEgMzYuMDMxMiA0LjAwNzc5IDM2LjAzMTJINDguMDM2NEM1MC4yNDcgMzYuMDMxMiA1Mi4wMzkgMzQuMjM5MiA1Mi4wMzkgMzIuMDI4NlY0LjAxMDQyQzUyLjAzOSAxLjc5OTg0IDUwLjI0NyAwLjAwNzgxMjUgNDguMDM2NCAwLjAwNzgxMjVINC4wMDc3OVpNOC4wMTA0MiA4LjAxMzAySDEyLjAxM1YxMi4wMTU2SDguMDEwNDJWOC4wMTMwMlpNMjAuMDE4MiA4LjAxMzAySDE2LjAxNTZWMTIuMDE1NkgyMC4wMTgyVjguMDEzMDJaTTI0LjAyMDggOC4wMTMwMkgyOC4wMjM0VjEyLjAxNTZIMjQuMDIwOFY4LjAxMzAyWk0zNi4wMjg2IDguMDEzMDJIMzIuMDI2VjEyLjAxNTZIMzYuMDI4NlY4LjAxMzAyWk00MC4wMzEyIDguMDEzMDJINDQuMDMzOVYxMi4wMTU2SDQwLjAzMTJWOC4wMTMwMlpNMTYuMDE1NiAxNi4wMTgySDguMDEwNDJWMjAuMDIwOEgxNi4wMTU2VjE2LjAxODJaTTIwLjAxODIgMTYuMDE4MkgyNC4wMjA4VjIwLjAyMDhIMjAuMDE4MlYxNi4wMTgyWk0zMi4wMjYgMTYuMDE4MkgyOC4wMjM0VjIwLjAyMDhIMzIuMDI2VjE2LjAxODJaTTQ0LjAzMzkgMTYuMDE4MlYyMC4wMjA4SDM2LjAyODZWMTYuMDE4Mkg0NC4wMzM5Wk0xMi4wMTMgMjQuMDIzNEg4LjAxMDQyVjI4LjAyNkgxMi4wMTNWMjQuMDIzNFpNMTYuMDE1NiAyNC4wMjM0SDM2LjAyODZWMjguMDI2SDE2LjAxNTZWMjQuMDIzNFpNNDQuMDMzOSAyNC4wMjM0SDQwLjAzMTJWMjguMDI2SDQ0LjAzMzlWMjQuMDIzNFoiIGZpbGw9IiNDNUM1QzUiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMCI+DQo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=") center center no-repeat; - border: 4px solid #252526; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .tokens-inspect-widget { - z-index: 50; - user-select: text; - -webkit-user-select: text; - -ms-user-select: text; - padding: 10px; -} - -.tokens-inspect-separator { - height: 1px; - border: 0; -} - -.monaco-editor .tokens-inspect-widget .tm-token { - font-family: var(--monaco-monospace-font); -} - -.monaco-editor .tokens-inspect-widget .tm-token-length { - font-weight: normal; - font-size: 60%; - float: right; -} - -.monaco-editor .tokens-inspect-widget .tm-metadata-table { - width: 100%; -} - -.monaco-editor .tokens-inspect-widget .tm-metadata-value { - font-family: var(--monaco-monospace-font); - text-align: right; -} - -.monaco-editor .tokens-inspect-widget .tm-token-type { - font-family: var(--monaco-monospace-font); -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -.monaco-editor .detected-link, -.monaco-editor .detected-link-active { - text-decoration: underline; - text-underline-position: under; -} - -.monaco-editor .detected-link-active { - cursor: pointer; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .on-type-rename-decoration { - border-left: 1px solid transparent; - /* So border can be transparent */ - background-clip: padding-box; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .parameter-hints-widget { - z-index: 10; - display: flex; - flex-direction: column; - line-height: 1.5em; -} - -.monaco-editor .parameter-hints-widget > .wrapper { - max-width: 440px; - display: flex; - flex-direction: row; -} - -.monaco-editor .parameter-hints-widget.multiple { - min-height: 3.3em; - padding: 0; -} - -.monaco-editor .parameter-hints-widget.visible { - transition: left .05s ease-in-out; -} - -.monaco-editor .parameter-hints-widget p, -.monaco-editor .parameter-hints-widget ul { - margin: 8px 0; -} - -.monaco-editor .parameter-hints-widget .monaco-scrollable-element, -.monaco-editor .parameter-hints-widget .body { - display: flex; - flex: 1; - flex-direction: column; - min-height: 100%; -} - -.monaco-editor .parameter-hints-widget .signature { - padding: 4px 5px; -} - -.monaco-editor .parameter-hints-widget .docs { - padding: 0 10px 0 5px; - white-space: pre-wrap; -} - -.monaco-editor .parameter-hints-widget .docs.empty { - display: none; -} - -.monaco-editor .parameter-hints-widget .docs .markdown-docs { - white-space: initial; -} - -.monaco-editor .parameter-hints-widget .docs .markdown-docs code { - font-family: var(--monaco-monospace-font); -} - -.monaco-editor .parameter-hints-widget .docs .code { - white-space: pre-wrap; -} - -.monaco-editor .parameter-hints-widget .docs code { - border-radius: 3px; - padding: 0 0.4em; -} - -.monaco-editor .parameter-hints-widget .controls { - display: none; - flex-direction: column; - align-items: center; - min-width: 22px; - justify-content: flex-end; -} - -.monaco-editor .parameter-hints-widget.multiple .controls { - display: flex; - padding: 0 2px; -} - -.monaco-editor .parameter-hints-widget.multiple .button { - width: 16px; - height: 16px; - background-repeat: no-repeat; - cursor: pointer; -} - -.monaco-editor .parameter-hints-widget .button.previous { - bottom: 24px; -} - -.monaco-editor .parameter-hints-widget .overloads { - text-align: center; - height: 12px; - line-height: 12px; - opacity: 0.5; - font-family: var(--monaco-monospace-font); -} - -.monaco-editor .parameter-hints-widget .signature .parameter.active { - font-weight: bold; - text-decoration: underline; -} - -.monaco-editor .parameter-hints-widget .documentation-parameter > .parameter { - font-weight: bold; - margin-right: 0.5em; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .rename-box { - z-index: 100; - color: inherit; -} - -.monaco-editor .rename-box.preview { - padding: 3px 3px 0 3px; -} - -.monaco-editor .rename-box .rename-input { - padding: 3px; - width: calc(100% - 6px); -} - -.monaco-editor .rename-box .rename-label { - display: none; - opacity: .8; -} - -.monaco-editor .rename-box.preview .rename-label { - display: inherit; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .snippet-placeholder { - min-width: 2px; - outline-style: solid; - outline-width: 1px; -} - -.monaco-editor .finish-snippet-placeholder { - outline-style: solid; - outline-width: 1px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -/* Suggest widget*/ -.monaco-editor .suggest-widget { - z-index: 40; -} - -/** Initial widths **/ - -.monaco-editor .suggest-widget { - width: 430px; -} - -.monaco-editor .suggest-widget > .message, -.monaco-editor .suggest-widget > .tree, -.monaco-editor .suggest-widget > .details { - width: 100%; - border-style: solid; - border-width: 1px; - box-sizing: border-box; -} - -.monaco-editor.hc-black .suggest-widget > .message, -.monaco-editor.hc-black .suggest-widget > .tree, -.monaco-editor.hc-black .suggest-widget > .details { - border-width: 2px; -} - -/** Adjust width when docs are expanded to the side **/ -.monaco-editor .suggest-widget.docs-side { - width: 660px; -} - -.monaco-editor .suggest-widget.docs-side > .tree, -.monaco-editor .suggest-widget.docs-side > .details { - width: 50%; - float: left; -} - -.monaco-editor .suggest-widget.docs-side.list-right > .tree, -.monaco-editor .suggest-widget.docs-side.list-right > .details { - float: right; -} - -/* MarkupContent Layout */ -.monaco-editor .suggest-widget > .details ul { - padding-left: 20px; -} -.monaco-editor .suggest-widget > .details ol { - padding-left: 20px; -} - -.monaco-editor .suggest-widget > .details p code { - font-family: var(--monaco-monospace-font); -} - -/* Styles for Message element for when widget is loading or is empty */ -.monaco-editor .suggest-widget > .message { - padding-left: 22px; -} - -/** Styles for the list element **/ -.monaco-editor .suggest-widget > .tree { - height: 100%; -} - -.monaco-editor .suggest-widget .monaco-list { - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -/** Styles for each row in the list element **/ - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row { - display: flex; - -mox-box-sizing: border-box; - box-sizing: border-box; - padding-right: 10px; - background-repeat: no-repeat; - background-position: 2px 2px; - white-space: nowrap; - cursor: pointer; - touch-action: none; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents { - flex: 1; - height: 100%; - overflow: hidden; - padding-left: 2px; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main { - display: flex; - overflow: hidden; - text-overflow: ellipsis; - white-space: pre; - justify-content: space-between; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left, -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right { - display: flex; -} - -.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight { - font-weight: bold; -} - -/** Status Bar **/ - -.monaco-editor .suggest-widget > .suggest-status-bar { - visibility: hidden; - - position: absolute; - left: 0; - - box-sizing: border-box; - - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - - width: 100%; - - font-size: 80%; - - border-left-width: 1px; - border-left-style: solid; - border-right-width: 1px; - border-right-style: solid; - border-bottom-width: 1px; - border-bottom-style: solid; - - padding: 0 8px 0 4px; -} - -.monaco-editor .suggest-widget.list-right.docs-side > .suggest-status-bar { - left: auto; - right: 0; -} -.monaco-editor .suggest-widget.docs-side > .suggest-status-bar { - width: 50%; -} - -/** ReadMore Icon styles **/ - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close, -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore::before { - color: inherit; - opacity: 1; - font-size: 14px; - cursor: pointer; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close { - position: absolute; - top: 2px; - right: 2px; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close:hover, -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore:hover { - opacity: 1; -} - -/** signature, qualifier, type/details opacity **/ -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label, -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label, -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label { - opacity: 0.7; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label { - overflow: hidden; - text-overflow: ellipsis; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label { - margin-left: 4px; - opacity: 0.4; - font-size: 90%; - text-overflow: ellipsis; - overflow: hidden; - line-height: 17px; - align-self: center; -} - -/** Type Info and icon next to the label in the focused completion item **/ - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label { - margin-left: 0.8em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label > .monaco-tokenized-source { - display: inline; -} - -/** Details: if using CompletionItem#details, show on focus **/ - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label, -.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label { - display: none; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label { - display: inline; -} - -/** Details: if using CompletionItemLabel#details, always show **/ - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .right > .details-label, -.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label) > .contents > .main > .right > .details-label { - display: inline; -} - -/** Ellipsis on hover **/ -.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label { - width: calc(100% - 26px); -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left { - flex-shrink: 1; - flex-grow: 1; - overflow: hidden; -} -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .monaco-icon-label { - flex-shrink: 0; -} -.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .left > .monaco-icon-label { - max-width: 100%; -} -.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .left > .monaco-icon-label { - flex-shrink: 1; -} -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right { - overflow: hidden; - margin-left: 16px; - flex-shrink: 0; - max-width: 45%; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore { - display: inline-block; - position: absolute; - right: 10px; - width: 18px; - height: 18px; - visibility: hidden; -} - -/** Do NOT display ReadMore when docs is side/below **/ -.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore, -.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row > .contents > .main > .right > .readMore { - display: none !important; -} - -/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/ -.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .right > .readMore { - display: none; -} -/** Focused item can show ReadMore, but can't when docs is side/below **/ -.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore { - display: inline-block; -} - -.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore, -.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row > .contents > .main > .right > .readMore { - display: none; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover > .contents > .main > .right > .readMore { - visibility: visible; -} - -/** Styles for each row in the list **/ - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated { - opacity: 0.66; - text-decoration: unset; -} -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated > .monaco-icon-label-container > .monaco-icon-name-container { - text-decoration: line-through; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label::before { - height: 100%; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon { - display: block; - height: 16px; - width: 16px; - margin-left: 2px; - background-repeat: no-repeat; - background-size: 80%; - background-position: center; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide { - display: none; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon { - display: flex; - align-items: center; - margin-right: 4px; -} - -.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon, -.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon::before { - display: none; -} - -.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan { - margin: 0 0 0 0.3em; - border: 0.1em solid #000; - width: 0.7em; - height: 0.7em; - display: inline-block; -} - -/** Styles for the docs of the completion item in focus **/ -.monaco-editor .suggest-widget .details { - display: flex; - flex-direction: column; - cursor: default; -} - -.monaco-editor .suggest-widget .details.no-docs { - display: none; -} - -.monaco-editor .suggest-widget.docs-below .details { - border-top-width: 0; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element { - flex: 1; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body { - position: absolute; - box-sizing: border-box; - height: 100%; - width: 100%; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .type { - flex: 2; - overflow: hidden; - text-overflow: ellipsis; - opacity: 0.7; - word-break: break-all; - margin: 0 24px 0 0; - padding: 4px 0 12px 5px; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs { - margin: 0; - padding: 4px 5px; - white-space: pre-wrap; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs { - padding: 0; - white-space: initial; - min-height: calc(1rem + 8px); -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div, -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > span:not(:empty) { - padding: 4px 5px; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:first-child { - margin-top: 0; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:last-child { - margin-bottom: 0; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs .code { - white-space: pre-wrap; - word-wrap: break-word; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs .codicon { - vertical-align: sub; -} - -.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > p:empty { - display: none; -} - -.monaco-editor .suggest-widget .details code { - border-radius: 3px; - padding: 0 0.4em; -} - - -/* replace/insert decorations */ - -.monaco-editor .suggest-insert-unexpected { - font-style: italic; -} - - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar { - visibility: visible; -} -.monaco-editor .suggest-widget.with-status-bar > .tree { - margin-bottom: 18px; -} - -.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label { - min-height: 18px; - opacity: 0.5; - color: inherit; -} - -.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label { - margin-right: 0; -} - -.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label::after { - content: ', '; - margin-right: 0.3em; -} - -.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row > .contents > .main > .right > .readMore, -.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore { - display: none; -} - -.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label { - width: 100%; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -@font-face { - font-family: "codicon"; - src: url(codicon.ttf) format("truetype"); -} - -.codicon[class*='codicon-'] { - font: normal normal normal 16px/1 codicon; - display: inline-block; - text-decoration: none; - text-rendering: auto; - text-align: center; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -/* icon rules are dynamically created in codiconStyles */ - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.codicon-wrench-subaction { - opacity: 0.5; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -@keyframes codicon-spin { - 100% { - transform:rotate(360deg); - } -} - -.codicon-animation-spin { - /* Use steps to throttle FPS to reduce CPU usage */ - animation: codicon-spin 1.5s steps(30) infinite; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-list .monaco-list-row.focused.selected .outline-element .monaco-highlighted-label, -.monaco-list .monaco-list-row.focused.selected .outline-element-decoration { - /* make sure selection color wins when a label is being selected */ - color: inherit !important; -} - -.monaco-list .outline-element { - display: flex; - flex: 1; - flex-flow: row nowrap; - align-items: center; -} - -.monaco-list .outline-element .monaco-highlighted-label { - color: var(--outline-element-color); -} - -.monaco-list .outline-element .outline-element-decoration { - opacity: 0.75; - font-size: 90%; - font-weight: 600; - padding: 0 12px 0 5px; - margin-left: auto; - text-align: center; - color: var(--outline-element-color); -} - -.monaco-list .outline-element .outline-element-decoration.bubble { - font-family: codicon; - font-size: 14px; - opacity: 0.4; -} - -.monaco-list .outline-element .outline-element-icon { - margin-right: 4px; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-icon-label.deprecated { - text-decoration: line-through; - opacity: 0.66; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - - -/* Default standalone editor fonts */ -.monaco-editor { - font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif; - --monaco-monospace-font: "SF Mono", Monaco, Menlo, Consolas, "Ubuntu Mono", "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace; -} - -.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label { - stroke-width: 1.2px; -} - -.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label, -.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label { - stroke-width: 1.2px; -} - -.monaco-hover p { - margin: 0; -} - -/* The hc-black theme is already high contrast optimized */ -.monaco-editor.hc-black { - -ms-high-contrast-adjust: none; -} -/* In case the browser goes into high contrast mode and the editor is not configured with the hc-black theme */ -@media screen and (-ms-high-contrast:active) { - - /* current line highlight */ - .monaco-editor.vs .view-overlays .current-line, - .monaco-editor.vs-dark .view-overlays .current-line { - border-color: windowtext !important; - border-left: 0; - border-right: 0; - } - - /* view cursors */ - .monaco-editor.vs .cursor, - .monaco-editor.vs-dark .cursor { - background-color: windowtext !important; - } - /* dnd target */ - .monaco-editor.vs .dnd-target, - .monaco-editor.vs-dark .dnd-target { - border-color: windowtext !important; - } - - /* selected text background */ - .monaco-editor.vs .selected-text, - .monaco-editor.vs-dark .selected-text { - background-color: highlight !important; - } - - /* allow the text to have a transparent background. */ - .monaco-editor.vs .view-line, - .monaco-editor.vs-dark .view-line { - -ms-high-contrast-adjust: none; - } - - /* text color */ - .monaco-editor.vs .view-line span, - .monaco-editor.vs-dark .view-line span { - color: windowtext !important; - } - /* selected text color */ - .monaco-editor.vs .view-line span.inline-selected-text, - .monaco-editor.vs-dark .view-line span.inline-selected-text { - color: highlighttext !important; - } - - /* allow decorations */ - .monaco-editor.vs .view-overlays, - .monaco-editor.vs-dark .view-overlays { - -ms-high-contrast-adjust: none; - } - - /* various decorations */ - .monaco-editor.vs .selectionHighlight, - .monaco-editor.vs-dark .selectionHighlight, - .monaco-editor.vs .wordHighlight, - .monaco-editor.vs-dark .wordHighlight, - .monaco-editor.vs .wordHighlightStrong, - .monaco-editor.vs-dark .wordHighlightStrong, - .monaco-editor.vs .reference-decoration, - .monaco-editor.vs-dark .reference-decoration { - border: 2px dotted highlight !important; - background: transparent !important; - box-sizing: border-box; - } - .monaco-editor.vs .rangeHighlight, - .monaco-editor.vs-dark .rangeHighlight { - background: transparent !important; - border: 1px dotted activeborder !important; - box-sizing: border-box; - } - .monaco-editor.vs .bracket-match, - .monaco-editor.vs-dark .bracket-match { - border-color: windowtext !important; - background: transparent !important; - } - - /* find widget */ - .monaco-editor.vs .findMatch, - .monaco-editor.vs-dark .findMatch, - .monaco-editor.vs .currentFindMatch, - .monaco-editor.vs-dark .currentFindMatch { - border: 2px dotted activeborder !important; - background: transparent !important; - box-sizing: border-box; - } - .monaco-editor.vs .find-widget, - .monaco-editor.vs-dark .find-widget { - border: 1px solid windowtext; - } - - /* list - used by suggest widget */ - .monaco-editor.vs .monaco-list .monaco-list-row, - .monaco-editor.vs-dark .monaco-list .monaco-list-row { - -ms-high-contrast-adjust: none; - color: windowtext !important; - } - .monaco-editor.vs .monaco-list .monaco-list-row.focused, - .monaco-editor.vs-dark .monaco-list .monaco-list-row.focused { - color: highlighttext !important; - background-color: highlight !important; - } - .monaco-editor.vs .monaco-list .monaco-list-row:hover, - .monaco-editor.vs-dark .monaco-list .monaco-list-row:hover { - background: transparent !important; - border: 1px solid highlight; - box-sizing: border-box; - } - - /* scrollbars */ - .monaco-editor.vs .monaco-scrollable-element > .scrollbar, - .monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar { - -ms-high-contrast-adjust: none; - background: background !important; - border: 1px solid windowtext; - box-sizing: border-box; - } - .monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider, - .monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider { - background: windowtext !important; - } - .monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider:hover, - .monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider:hover { - background: highlight !important; - } - .monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider.active, - .monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active { - background: highlight !important; - } - - /* overview ruler */ - .monaco-editor.vs .decorationsOverviewRuler, - .monaco-editor.vs-dark .decorationsOverviewRuler { - opacity: 0; - } - - /* minimap */ - .monaco-editor.vs .minimap, - .monaco-editor.vs-dark .minimap { - display: none; - } - - /* squiggles */ - .monaco-editor.vs .squiggly-d-error, - .monaco-editor.vs-dark .squiggly-d-error { - background: transparent !important; - border-bottom: 4px double #E47777; - } - .monaco-editor.vs .squiggly-c-warning, - .monaco-editor.vs-dark .squiggly-c-warning { - border-bottom: 4px double #71B771; - } - .monaco-editor.vs .squiggly-b-info, - .monaco-editor.vs-dark .squiggly-b-info { - border-bottom: 4px double #71B771; - } - .monaco-editor.vs .squiggly-a-hint, - .monaco-editor.vs-dark .squiggly-a-hint { - border-bottom: 4px double #6c6c6c; - } - - /* contextmenu */ - .monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label, - .monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label { - -ms-high-contrast-adjust: none; - color: highlighttext !important; - background-color: highlight !important; - } - .monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label, - .monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label { - -ms-high-contrast-adjust: none; - background: transparent !important; - border: 1px solid highlight; - box-sizing: border-box; - } - - /* diff editor */ - .monaco-diff-editor.vs .diffOverviewRuler, - .monaco-diff-editor.vs-dark .diffOverviewRuler { - display: none; - } - .monaco-editor.vs .line-insert, - .monaco-editor.vs-dark .line-insert, - .monaco-editor.vs .line-delete, - .monaco-editor.vs-dark .line-delete { - background: transparent !important; - border: 1px solid highlight !important; - box-sizing: border-box; - } - .monaco-editor.vs .char-insert, - .monaco-editor.vs-dark .char-insert, - .monaco-editor.vs .char-delete, - .monaco-editor.vs-dark .char-delete { - background: transparent !important; - } -} - -/*.monaco-editor.vs [tabindex="0"]:focus { - outline: 1px solid rgba(0, 122, 204, 0.4); - outline-offset: -1px; - opacity: 1 !important; -} - -.monaco-editor.vs-dark [tabindex="0"]:focus { - outline: 1px solid rgba(14, 99, 156, 0.6); - outline-offset: -1px; - opacity: 1 !important; -}*/ - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ -/* ---------- DiffEditor ---------- */ - -.monaco-diff-editor .diffOverview { - z-index: 9; -} - -.monaco-diff-editor .diffOverview .diffViewport { - z-index: 10; -} - -/* colors not externalized: using transparancy on background */ -.monaco-diff-editor.vs .diffOverview { background: rgba(0, 0, 0, 0.03); } -.monaco-diff-editor.vs-dark .diffOverview { background: rgba(255, 255, 255, 0.01); } - -.monaco-scrollable-element.modified-in-monaco-diff-editor.vs .scrollbar { background: rgba(0,0,0,0); } -.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark .scrollbar { background: rgba(0,0,0,0); } -.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black .scrollbar { background: none; } - -.monaco-scrollable-element.modified-in-monaco-diff-editor .slider { - z-index: 10; -} -.modified-in-monaco-diff-editor .slider.active { background: rgba(171, 171, 171, .4); } -.modified-in-monaco-diff-editor.hc-black .slider.active { background: none; } - -/* ---------- Diff ---------- */ - -.monaco-editor .insert-sign, -.monaco-diff-editor .insert-sign, -.monaco-editor .delete-sign, -.monaco-diff-editor .delete-sign { - font-size: 11px !important; - opacity: 0.7 !important; - display: flex !important; - align-items: center; -} -.monaco-editor.hc-black .insert-sign, -.monaco-diff-editor.hc-black .insert-sign, -.monaco-editor.hc-black .delete-sign, -.monaco-diff-editor.hc-black .delete-sign { - opacity: 1; -} - -.monaco-editor .inline-deleted-margin-view-zone { - text-align: right; -} -.monaco-editor .inline-added-margin-view-zone { - text-align: right; -} - -/* ---------- Inline Diff ---------- */ - -.monaco-editor .view-zones .view-lines .view-line span { - display: inline-block; -} - -.monaco-editor .margin-view-zones .lightbulb-glyph:hover { - cursor: pointer; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-diff-editor .diff-review-line-number { - text-align: right; - display: inline-block; -} - -.monaco-diff-editor .diff-review { - position: absolute; - user-select: none; - -webkit-user-select: none; - -ms-user-select: none; -} - -.monaco-diff-editor .diff-review-summary { - padding-left: 10px; -} - -.monaco-diff-editor .diff-review-shadow { - position: absolute; -} - -.monaco-diff-editor .diff-review-row { - white-space: pre; -} - -.monaco-diff-editor .diff-review-table { - display: table; - min-width: 100%; -} - -.monaco-diff-editor .diff-review-row { - display: table-row; - width: 100%; -} - -.monaco-diff-editor .diff-review-spacer { - display: inline-block; - width: 10px; - vertical-align: middle; -} - -.monaco-diff-editor .diff-review-spacer > .codicon { - font-size: 9px !important; -} - -.monaco-diff-editor .diff-review-actions { - display: inline-block; - position: absolute; - right: 10px; - top: 2px; -} - -.monaco-diff-editor .diff-review-actions .action-label { - width: 16px; - height: 16px; - margin: 2px 0; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.context-view .monaco-menu { - min-width: 130px; -} - - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.context-view { - position: absolute; - z-index: 2500; -} - -.context-view.fixed { - all: initial; - font-family: inherit; - font-size: 13px; - position: fixed; - z-index: 2500; - color: inherit; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.quick-input-widget { - font-size: 13px; -} - -.quick-input-widget .monaco-highlighted-label .highlight, -.quick-input-widget .monaco-highlighted-label .highlight { - color: #0066BF; -} - -.vs-dark .quick-input-widget .monaco-highlighted-label .highlight, -.vs-dark .quick-input-widget .monaco-highlighted-label .highlight { - color: #0097fb; -} - -.hc-black .quick-input-widget .monaco-highlighted-label .highlight, -.hc-black .quick-input-widget .monaco-highlighted-label .highlight { - color: #F38518; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.quick-input-widget { - position: absolute; - width: 600px; - z-index: 2000; - padding-bottom: 6px; - left: 50%; - margin-left: -300px; -} - -.quick-input-titlebar { - display: flex; -} - -.quick-input-left-action-bar { - display: flex; - margin-left: 4px; - flex: 1; -} - -.quick-input-left-action-bar.monaco-action-bar .actions-container { - justify-content: flex-start; -} - -.quick-input-title { - padding: 3px 0px; - text-align: center; -} - -.quick-input-right-action-bar { - display: flex; - margin-right: 4px; - flex: 1; -} - -.quick-input-titlebar .monaco-action-bar .action-label.codicon { - margin: 0; - width: 19px; - height: 100%; - background-position: center; - background-repeat: no-repeat; -} - -.quick-input-description { - margin: 6px; -} - -.quick-input-header { - display: flex; - padding: 6px 6px 0px 6px; - margin-bottom: -2px; -} - -.quick-input-widget.hidden-input .quick-input-header { - /* reduce margins and paddings when input box hidden */ - padding: 0; - margin-bottom: 0; -} - -.quick-input-and-message { - display: flex; - flex-direction: column; - flex-grow: 1; - position: relative; -} - -.quick-input-check-all { - align-self: center; - margin: 0; -} - -.quick-input-filter { - flex-grow: 1; - display: flex; - position: relative; -} - -.quick-input-box { - flex-grow: 1; -} - -.quick-input-widget.show-checkboxes .quick-input-box, -.quick-input-widget.show-checkboxes .quick-input-message { - margin-left: 5px; -} - -.quick-input-visible-count { - position: absolute; - left: -10000px; -} - -.quick-input-count { - align-self: center; - position: absolute; - right: 4px; - display: flex; - align-items: center; -} - -.quick-input-count .monaco-count-badge { - vertical-align: middle; - padding: 2px 4px; - border-radius: 2px; - min-height: auto; - line-height: normal; -} - -.quick-input-action { - margin-left: 6px; -} - -.quick-input-action .monaco-text-button { - font-size: 11px; - padding: 0 6px; - display: flex; - height: 100%; - align-items: center; -} - -.quick-input-message { - margin-top: -1px; - padding: 5px 5px 2px 5px; -} - -.quick-input-progress.monaco-progress-container { - position: relative; -} - -.quick-input-progress.monaco-progress-container, -.quick-input-progress.monaco-progress-container .progress-bit { - height: 2px; -} - -.quick-input-list { - line-height: 22px; - margin-top: 6px; -} - -.quick-input-widget.hidden-input .quick-input-list { - margin-top: 0; /* reduce margins when input box hidden */ -} - -.quick-input-list .monaco-list { - overflow: hidden; - max-height: calc(20 * 22px); -} - -.quick-input-list .quick-input-list-entry { - box-sizing: border-box; - overflow: hidden; - display: flex; - height: 100%; - padding: 0 6px; -} - -.quick-input-list .quick-input-list-entry.quick-input-list-separator-border { - border-top-width: 1px; - border-top-style: solid; -} - -.quick-input-list .monaco-list-row:first-child .quick-input-list-entry.quick-input-list-separator-border { - border-top-style: none; -} - -.quick-input-list .quick-input-list-label { - overflow: hidden; - display: flex; - height: 100%; - flex: 1; -} - -.quick-input-list .quick-input-list-checkbox { - align-self: center; - margin: 0; -} - -.quick-input-list .quick-input-list-rows { - overflow: hidden; - text-overflow: ellipsis; - display: flex; - flex-direction: column; - height: 100%; - flex: 1; - margin-left: 5px; -} - -.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows { - margin-left: 10px; -} - -.quick-input-widget .quick-input-list .quick-input-list-checkbox { - display: none; -} -.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox { - display: inline; -} - -.quick-input-list .quick-input-list-rows > .quick-input-list-row { - display: flex; - align-items: center; -} - -.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label, -.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label .monaco-icon-label-container > .monaco-icon-name-container { - flex: 1; /* make sure the icon label grows within the row */ -} - -.quick-input-list .quick-input-list-rows > .quick-input-list-row .codicon[class*='codicon-'] { - vertical-align: sub; -} - -.quick-input-list .quick-input-list-rows .monaco-highlighted-label span { - opacity: 1; -} - -.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding { - margin-right: 8px; /* separate from the separator label or scrollbar if any */ -} - -.quick-input-list .quick-input-list-label-meta { - opacity: 0.7; - line-height: normal; - text-overflow: ellipsis; - overflow: hidden; -} - -.quick-input-list .monaco-highlighted-label .highlight { - font-weight: bold; -} - -.quick-input-list .quick-input-list-entry .quick-input-list-separator { - margin-right: 8px; /* separate from keybindings or actions */ -} - -.quick-input-list .quick-input-list-entry-action-bar { - display: flex; - flex: 0; - overflow: visible; -} - -.quick-input-list .quick-input-list-entry-action-bar .action-label { - /* - * By default, actions in the quick input action bar are hidden - * until hovered over them or selected. - */ - display: none; -} - -.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon { - margin: 0; - height: 100%; - padding: 0 2px; - vertical-align: middle; -} - -.quick-input-list .quick-input-list-entry-action-bar { - margin-top: 1px; -} - -.quick-input-list .quick-input-list-entry-action-bar { - margin-right: 4px; /* separate from scrollbar */ -} - -.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon { - margin-right: 4px; /* separate actions */ -} - -.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible, -.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label, -.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label { - display: flex; -} - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-keybinding { - display: flex; - align-items: center; - line-height: 10px; -} - -.monaco-keybinding > .monaco-keybinding-key { - display: inline-block; - border: solid 1px rgba(204, 204, 204, 0.4); - border-bottom-color: rgba(187, 187, 187, 0.4); - border-radius: 3px; - box-shadow: inset 0 -1px 0 rgba(187, 187, 187, 0.4); - background-color: rgba(221, 221, 221, 0.4); - vertical-align: middle; - color: #555; - font-size: 11px; - padding: 3px 5px; - margin: 0 2px; -} - -.monaco-keybinding > .monaco-keybinding-key:first-child { - margin-left: 0; -} - -.monaco-keybinding > .monaco-keybinding-key:last-child { - margin-right: 0; -} - -.hc-black .monaco-keybinding > .monaco-keybinding-key, -.vs-dark .monaco-keybinding > .monaco-keybinding-key { - background-color: rgba(128, 128, 128, 0.17); - color: #ccc; - border: solid 1px rgba(51, 51, 51, 0.6); - border-bottom-color: rgba(68, 68, 68, 0.6); - box-shadow: inset 0 -1px 0 rgba(68, 68, 68, 0.6); -} - -.monaco-keybinding > .monaco-keybinding-key-separator { - display: inline-block; -} - -.monaco-keybinding > .monaco-keybinding-key-chord-separator { - width: 6px; -} -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-progress-container { - width: 100%; - height: 5px; - overflow: hidden; /* keep progress bit in bounds */ -} - -.monaco-progress-container .progress-bit { - width: 2%; - height: 5px; - position: absolute; - left: 0; - display: none; -} - -.monaco-progress-container.active .progress-bit { - display: inherit; -} - -.monaco-progress-container.discrete .progress-bit { - left: 0; - transition: width 100ms linear; -} - -.monaco-progress-container.discrete.done .progress-bit { - width: 100%; -} - -.monaco-progress-container.infinite .progress-bit { - animation-name: progress; - animation-duration: 4s; - animation-iteration-count: infinite; - animation-timing-function: linear; - transform: translate3d(0px, 0px, 0px); -} - -/** - * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of - * that container. Since translateX is relative to the progress bit size, we have to multiple it with - * its relative size to the parent container: - * 50%: 50 * 50 = 2500% - * 100%: 50 * 100 - 50 (do not overflow): 4950% - */ -@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4950%) scaleX(1) } } - -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -.monaco-text-button { - box-sizing: border-box; - display: flex; - width: 100%; - padding: 4px; - text-align: center; - cursor: pointer; - outline-offset: 2px !important; - justify-content: center; - align-items: center; -} - -.monaco-text-button:hover { - text-decoration: none !important; -} - -.monaco-button.disabled { - opacity: 0.4; - cursor: default; -} - -.monaco-button > .codicon { - margin: 0 0.2em; - color: inherit !important; -} - -#editor.svelte-129q4vv{width:100%;height:400px;max-height:300px;flex:1} -#editor-conf.svelte-e1y9ss{width:100%;height:200px;max-height:300px;flex:1} -#view.svelte-adxv1m{border:1px solor darkred;flex:1}#container.svelte-adxv1m{overflow-x:auto}.error.svelte-adxv1m{opacity:0.5} -#card.svelte-m2i2uf{border:1px solid lightgray;margin-bottom:16px}#title.svelte-m2i2uf{font-family:'Playfair Display', serif;font-weight:400;border-bottom:1px solid lightgray;font-size:1.25rem;background-color:#1e60ab;color:#eaebef}#content.svelte-m2i2uf{padding-top:8px}.padding.svelte-m2i2uf{padding:8px} -#tag.svelte-1nm8e4l{height:auto;margin:0 8px 0 0;padding:0 7px;font-size:12px;line-height:20px;white-space:nowrap;border:1px solid #d9d9d9;border-radius:4px;cursor:default;font-size:smaller;color:#52c41a;background:#f6ffed;border-color:#b7eb8f;margin-left:8px} -#links.svelte-187ys3m{margin-bottom:1rem;padding-bottom:0.5rem;border-bottom:1px solid lightgray}#markdown.svelte-187ys3m{padding:7px;font-family:monospace;font-size:14px;width:95%;margin:1rem 0;border:1px solid lightgray}label[for='markdown'].svelte-187ys3m{cursor:pointer;margin:0 auto}.button-style.svelte-187ys3m{background-color:#a2d9e2;color:#33a2c4;border-radius:0.25rem;padding:0.5rem;border:1px solid #a2d9e2;margin:0.25rem}.button-style.svelte-187ys3m:hover{background-color:#fff;color:#33a2c4;border:1px solid #33a2c4}.button-style.svelte-187ys3m:focus{outline:none}.link-style.svelte-187ys3m{text-decoration:none;color:#33a2c4}#copy-section.svelte-187ys3m{padding-top:1rem;text-align:center} -#body.svelte-mx8k4g{font-family:'Roboto', sans-serif;background-color:#fcfbfc}#editor-root.svelte-mx8k4g{display:flex;height:100%}#col1.svelte-mx8k4g{width:35%}#col2.svelte-mx8k4g{width:65%;padding-left:32px}#link-root.svelte-mx8k4g{display:flex;height:fit-content}#link-col1.svelte-mx8k4g{width:50%}#link-col2.svelte-mx8k4g{width:50%;padding-left:32px}#app-title.svelte-mx8k4g{font-family:'Playfair Display', serif;font-size:32px;font-weight:700;margin:0;color:#1e60ab;opacity:0.8}#title-container.svelte-mx8k4g{width:fit-content;margin:0 auto 8px}#power.svelte-mx8k4g{width:100%;display:flex;justify-content:flex-end;align-items:center;height:4rem}#sampleLoader.svelte-mx8k4g{padding-left:10px;border-bottom:1px solid lightgray}#historyLoaderSubTitle.svelte-mx8k4g{display:inline-block;color:#33a2c4;font-size:small;font-style:italic}.button-container.svelte-mx8k4g{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap}.button-style.svelte-mx8k4g{background-color:#a2d9e2;color:#33a2c4;border-radius:0.25rem;padding:0.5rem;border:1px solid #a2d9e2;margin:0.25rem}.button-style.svelte-mx8k4g:hover{background-color:#fff;color:#33a2c4;border:1px solid #33a2c4}.button-style.svelte-mx8k4g:focus{outline:none}.link-style.svelte-mx8k4g{text-decoration:none;color:#33a2c4} -#view-page.svelte-clxwlp{display:flex;height:100%} diff --git a/docs/dist/bundle.js b/docs/dist/bundle.js deleted file mode 100644 index e7345293..00000000 --- a/docs/dist/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see bundle.js.LICENSE.txt */ -(()=>{var e,t,i={29609:e=>{"use strict";var t=/^(%20|\s)*(javascript|data)/im,i=/[^\x20-\x7E]/gim,n=/^([^:]+):/gm,r=[".","/"];e.exports={sanitizeUrl:function(e){if(!e)return"about:blank";var s,o,a=e.replace(i,"").trim();return function(e){return r.indexOf(e[0])>-1}(a)?a:(o=a.match(n))?(s=o[0],t.test(s)?"about:blank":a):"about:blank"}}},98129:(e,t,i)=>{"use strict";var n=i(60690);function r(){var e={},t=0,i=0,n=0;return{add:function(r,s){s||(s=r,r=0),r>i?i=r:r<n&&(n=r),e[r]||(e[r]=[]),e[r].push(s),t++},process:function(){for(var t=n;t<=i;t++)for(var r=e[t],s=0;s<r.length;s++)(0,r[s])()},size:function(){return t}}}e.exports=function(e){var t=(e=e||{}).reporter,i=n.getOption(e,"async",!0),s=n.getOption(e,"auto",!0);s&&!i&&(t&&t.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true."),i=!0);var o,a=r(),l=!1;function c(){for(l=!0;a.size();){var e=a;a=r(),e.process()}l=!1}function d(){o=setTimeout(c,0)}return{add:function(e,t){!l&&s&&i&&0===a.size()&&d(),a.add(e,t)},force:function(e){l||(void 0===e&&(e=i),o&&(clearTimeout(o),o=null),e?d():c())}}}},60690:e=>{"use strict";(e.exports={}).getOption=function(e,t,i){var n=e[t];return null==n&&void 0!==i?i:n}},69362:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FormatSpecifier:()=>ll,active:()=>Xn,arc:()=>sw,area:()=>hw,areaRadial:()=>yw,ascending:()=>r,autoType:()=>Fo,axisBottom:()=>re,axisLeft:()=>se,axisRight:()=>ne,axisTop:()=>ie,bisect:()=>c,bisectLeft:()=>l,bisectRight:()=>a,bisector:()=>s,blob:()=>ma,brush:()=>Dr,brushSelection:()=>xr,brushX:()=>Lr,brushY:()=>Mr,buffer:()=>ba,chord:()=>Fr,clientPoint:()=>Ei,cluster:()=>xg,color:()=>Kt,contourDensity:()=>oo,contours:()=>eo,create:()=>Iy,creator:()=>rt,cross:()=>u,csv:()=>Sa,csvFormat:()=>ko,csvFormatBody:()=>xo,csvFormatRow:()=>Mo,csvFormatRows:()=>Lo,csvFormatValue:()=>Do,csvParse:()=>Co,csvParseRows:()=>So,cubehelix:()=>zs,curveBasis:()=>eC,curveBasisClosed:()=>iC,curveBasisOpen:()=>rC,curveBundle:()=>oC,curveCardinal:()=>cC,curveCardinalClosed:()=>hC,curveCardinalOpen:()=>gC,curveCatmullRom:()=>mC,curveCatmullRomClosed:()=>bC,curveCatmullRomOpen:()=>yC,curveLinear:()=>aw,curveLinearClosed:()=>CC,curveMonotoneX:()=>EC,curveMonotoneY:()=>TC,curveNatural:()=>AC,curveStep:()=>PC,curveStepAfter:()=>BC,curveStepBefore:()=>FC,customEvent:()=>mt,descending:()=>g,deviation:()=>m,dispatch:()=>ue,drag:()=>fo,dragDisable:()=>Mt,dragEnable:()=>Dt,dsv:()=>Ca,dsvFormat:()=>yo,easeBack:()=>da,easeBackIn:()=>la,easeBackInOut:()=>da,easeBackOut:()=>ca,easeBounce:()=>sa,easeBounceIn:()=>ra,easeBounceInOut:()=>oa,easeBounceOut:()=>sa,easeCircle:()=>ia,easeCircleIn:()=>ea,easeCircleInOut:()=>ia,easeCircleOut:()=>ta,easeCubic:()=>Gn,easeCubicIn:()=>Kn,easeCubicInOut:()=>Gn,easeCubicOut:()=>qn,easeElastic:()=>ga,easeElasticIn:()=>ua,easeElasticInOut:()=>fa,easeElasticOut:()=>ga,easeExp:()=>Xo,easeExpIn:()=>Jo,easeExpInOut:()=>Xo,easeExpOut:()=>Qo,easeLinear:()=>Wo,easePoly:()=>Uo,easePolyIn:()=>Vo,easePolyInOut:()=>Uo,easePolyOut:()=>zo,easeQuad:()=>jo,easeQuadIn:()=>Yo,easeQuadInOut:()=>jo,easeQuadOut:()=>Ho,easeSin:()=>Zo,easeSinIn:()=>qo,easeSinInOut:()=>Zo,easeSinOut:()=>Go,entries:()=>fs,event:()=>dt,extent:()=>_,forceCenter:()=>Ia,forceCollide:()=>Ua,forceLink:()=>qa,forceManyBody:()=>Xa,forceRadial:()=>el,forceSimulation:()=>Qa,forceX:()=>tl,forceY:()=>il,format:()=>gl,formatDefaultLocale:()=>bl,formatLocale:()=>_l,formatPrefix:()=>fl,formatSpecifier:()=>al,geoAlbers:()=>Wu,geoAlbersUsa:()=>Yu,geoArea:()=>fc,geoAzimuthalEqualArea:()=>zu,geoAzimuthalEqualAreaRaw:()=>Vu,geoAzimuthalEquidistant:()=>$u,geoAzimuthalEquidistantRaw:()=>Uu,geoBounds:()=>od,geoCentroid:()=>bd,geoCircle:()=>Nd,geoClipAntimeridian:()=>Hd,geoClipCircle:()=>jd,geoClipExtent:()=>$d,geoClipRectangle:()=>Ud,geoConicConformal:()=>Qu,geoConicConformalRaw:()=>Ju,geoConicEqualArea:()=>Bu,geoConicEqualAreaRaw:()=>Fu,geoConicEquidistant:()=>ig,geoConicEquidistantRaw:()=>tg,geoContains:()=>gh,geoDistance:()=>rh,geoEqualEarth:()=>cg,geoEqualEarthRaw:()=>lg,geoEquirectangular:()=>eg,geoEquirectangularRaw:()=>Xu,geoGnomonic:()=>hg,geoGnomonicRaw:()=>dg,geoGraticule:()=>mh,geoGraticule10:()=>_h,geoIdentity:()=>gg,geoInterpolate:()=>bh,geoLength:()=>th,geoMercator:()=>qu,geoMercatorRaw:()=>Ku,geoNaturalEarth1:()=>pg,geoNaturalEarth1Raw:()=>fg,geoOrthographic:()=>_g,geoOrthographicRaw:()=>mg,geoPath:()=>yu,geoProjection:()=>Au,geoProjectionMutator:()=>Ru,geoRotation:()=>Ld,geoStereographic:()=>vg,geoStereographicRaw:()=>bg,geoStream:()=>tc,geoTransform:()=>wu,geoTransverseMercator:()=>wg,geoTransverseMercatorRaw:()=>yg,gray:()=>Ss,hcl:()=>Is,hierarchy:()=>Mg,histogram:()=>T,hsl:()=>ri,html:()=>Ea,image:()=>xa,interpolate:()=>Di,interpolateArray:()=>yi,interpolateBasis:()=>li,interpolateBasisClosed:()=>ci,interpolateBlues:()=>sy,interpolateBrBG:()=>_v,interpolateBuGn:()=>Rv,interpolateBuPu:()=>Fv,interpolateCividis:()=>my,interpolateCool:()=>vy,interpolateCubehelix:()=>Yf,interpolateCubehelixDefault:()=>_y,interpolateCubehelixLong:()=>Hf,interpolateDate:()=>Ci,interpolateDiscrete:()=>Lf,interpolateGnBu:()=>Wv,interpolateGreens:()=>ay,interpolateGreys:()=>cy,interpolateHcl:()=>Ff,interpolateHclLong:()=>Bf,interpolateHsl:()=>Of,interpolateHslLong:()=>Af,interpolateHue:()=>Mf,interpolateInferno:()=>Ey,interpolateLab:()=>Rf,interpolateMagma:()=>Ny,interpolateNumber:()=>Si,interpolateNumberArray:()=>bi,interpolateObject:()=>ki,interpolateOrRd:()=>Hv,interpolateOranges:()=>py,interpolatePRGn:()=>vv,interpolatePiYG:()=>wv,interpolatePlasma:()=>Ty,interpolatePuBu:()=>Uv,interpolatePuBuGn:()=>Vv,interpolatePuOr:()=>Sv,interpolatePuRd:()=>Kv,interpolatePurples:()=>hy,interpolateRainbow:()=>wy,interpolateRdBu:()=>xv,interpolateRdGy:()=>Mv,interpolateRdPu:()=>Gv,interpolateRdYlBu:()=>Nv,interpolateRdYlGn:()=>Tv,interpolateReds:()=>gy,interpolateRgb:()=>fi,interpolateRgbBasis:()=>mi,interpolateRgbBasisClosed:()=>_i,interpolateRound:()=>Df,interpolateSinebow:()=>xy,interpolateSpectral:()=>Ov,interpolateString:()=>Mi,interpolateTransformCss:()=>fn,interpolateTransformSvg:()=>pn,interpolateTurbo:()=>Ly,interpolateViridis:()=>Dy,interpolateWarm:()=>by,interpolateYlGn:()=>Xv,interpolateYlGnBu:()=>Jv,interpolateYlOrBr:()=>ty,interpolateYlOrRd:()=>ny,interpolateZoom:()=>Tf,interrupt:()=>sn,interval:()=>nS,isoFormat:()=>tS,isoParse:()=>iS,json:()=>Ma,keys:()=>us,lab:()=>ks,lch:()=>Ts,line:()=>dw,lineRadial:()=>vw,linkHorizontal:()=>Nw,linkRadial:()=>Tw,linkVertical:()=>Ew,local:()=>Ay,map:()=>is,matcher:()=>_e,max:()=>R,mean:()=>P,median:()=>F,merge:()=>B,min:()=>W,mouse:()=>Ii,namespace:()=>xe,namespaces:()=>ke,nest:()=>ns,now:()=>Vi,pack:()=>Qg,packEnclose:()=>Og,packSiblings:()=>$g,pairs:()=>d,partition:()=>sf,path:()=>$r,permute:()=>Y,pie:()=>fw,piecewise:()=>jf,pointRadial:()=>ww,polygonArea:()=>zf,polygonCentroid:()=>Uf,polygonContains:()=>Zf,polygonHull:()=>Gf,polygonLength:()=>Jf,precisionFixed:()=>vl,precisionPrefix:()=>yl,precisionRound:()=>wl,quadtree:()=>Wa,quantile:()=>I,quantize:()=>Vf,radialArea:()=>yw,radialLine:()=>vw,randomBates:()=>np,randomExponential:()=>rp,randomIrwinHall:()=>ip,randomLogNormal:()=>tp,randomNormal:()=>ep,randomUniform:()=>Xf,range:()=>S,rgb:()=>Jt,ribbon:()=>Qr,scaleBand:()=>up,scaleDiverging:()=>Xb,scaleDivergingLog:()=>ev,scaleDivergingPow:()=>iv,scaleDivergingSqrt:()=>nv,scaleDivergingSymlog:()=>tv,scaleIdentity:()=>Dp,scaleImplicit:()=>dp,scaleLinear:()=>Mp,scaleLog:()=>Fp,scaleOrdinal:()=>hp,scalePoint:()=>fp,scalePow:()=>$p,scaleQuantile:()=>qp,scaleQuantize:()=>Gp,scaleSequential:()=>$b,scaleSequentialLog:()=>Kb,scaleSequentialPow:()=>Gb,scaleSequentialQuantile:()=>Jb,scaleSequentialSqrt:()=>Zb,scaleSequentialSymlog:()=>qb,scaleSqrt:()=>Kp,scaleSymlog:()=>Hp,scaleThreshold:()=>Zp,scaleTime:()=>Ob,scaleUtc:()=>Vb,scan:()=>H,schemeAccent:()=>ov,schemeBlues:()=>ry,schemeBrBG:()=>mv,schemeBuGn:()=>Av,schemeBuPu:()=>Pv,schemeCategory10:()=>sv,schemeDark2:()=>av,schemeGnBu:()=>Bv,schemeGreens:()=>oy,schemeGreys:()=>ly,schemeOrRd:()=>Yv,schemeOranges:()=>fy,schemePRGn:()=>bv,schemePaired:()=>lv,schemePastel1:()=>cv,schemePastel2:()=>dv,schemePiYG:()=>yv,schemePuBu:()=>zv,schemePuBuGn:()=>jv,schemePuOr:()=>Cv,schemePuRd:()=>$v,schemePurples:()=>dy,schemeRdBu:()=>kv,schemeRdGy:()=>Lv,schemeRdPu:()=>qv,schemeRdYlBu:()=>Dv,schemeRdYlGn:()=>Ev,schemeReds:()=>uy,schemeSet1:()=>hv,schemeSet2:()=>uv,schemeSet3:()=>gv,schemeSpectral:()=>Iv,schemeTableau10:()=>fv,schemeYlGn:()=>Qv,schemeYlGnBu:()=>Zv,schemeYlOrBr:()=>ey,schemeYlOrRd:()=>iy,select:()=>kt,selectAll:()=>Py,selection:()=>St,selector:()=>fe,selectorAll:()=>me,set:()=>hs,shuffle:()=>j,stack:()=>jC,stackOffsetDiverging:()=>zC,stackOffsetExpand:()=>VC,stackOffsetNone:()=>WC,stackOffsetSilhouette:()=>UC,stackOffsetWiggle:()=>$C,stackOrderAppearance:()=>KC,stackOrderAscending:()=>GC,stackOrderDescending:()=>JC,stackOrderInsideOut:()=>QC,stackOrderNone:()=>YC,stackOrderReverse:()=>XC,stratify:()=>df,style:()=>Pe,sum:()=>V,svg:()=>Ta,symbol:()=>Zw,symbolCircle:()=>Iw,symbolCross:()=>Ow,symbolDiamond:()=>Pw,symbolSquare:()=>Hw,symbolStar:()=>Yw,symbolTriangle:()=>Vw,symbolWye:()=>qw,symbols:()=>Gw,text:()=>ya,thresholdFreedmanDiaconis:()=>O,thresholdScott:()=>A,thresholdSturges:()=>E,tickFormat:()=>xp,tickIncrement:()=>D,tickStep:()=>N,ticks:()=>M,timeDay:()=>Mm,timeDays:()=>Dm,timeFormat:()=>g_,timeFormatDefaultLocale:()=>Db,timeFormatLocale:()=>h_,timeFriday:()=>_m,timeFridays:()=>km,timeHour:()=>Em,timeHours:()=>Tm,timeInterval:()=>Xp,timeMillisecond:()=>Wm,timeMilliseconds:()=>Ym,timeMinute:()=>Om,timeMinutes:()=>Am,timeMonday:()=>gm,timeMondays:()=>ym,timeMonth:()=>rm,timeMonths:()=>sm,timeParse:()=>f_,timeSaturday:()=>bm,timeSaturdays:()=>xm,timeSecond:()=>Pm,timeSeconds:()=>Fm,timeSunday:()=>um,timeSundays:()=>vm,timeThursday:()=>mm,timeThursdays:()=>Sm,timeTuesday:()=>fm,timeTuesdays:()=>wm,timeWednesday:()=>pm,timeWednesdays:()=>Cm,timeWeek:()=>um,timeWeeks:()=>vm,timeYear:()=>tm,timeYears:()=>im,timeout:()=>Ji,timer:()=>$i,timerFlush:()=>Ki,touch:()=>Ti,touches:()=>Fy,transition:()=>zn,transpose:()=>z,tree:()=>_f,treemap:()=>Cf,treemapBinary:()=>Sf,treemapDice:()=>rf,treemapResquarify:()=>xf,treemapSlice:()=>bf,treemapSliceDice:()=>kf,treemapSquarify:()=>wf,tsv:()=>ka,tsvFormat:()=>Io,tsvFormatBody:()=>Oo,tsvFormatRow:()=>Ro,tsvFormatRows:()=>Ao,tsvFormatValue:()=>Po,tsvParse:()=>Eo,tsvParseRows:()=>To,utcDay:()=>n_,utcDays:()=>r_,utcFormat:()=>p_,utcFriday:()=>Km,utcFridays:()=>e_,utcHour:()=>Bb,utcHours:()=>Wb,utcMillisecond:()=>Wm,utcMilliseconds:()=>Ym,utcMinute:()=>Hb,utcMinutes:()=>jb,utcMonday:()=>Vm,utcMondays:()=>Zm,utcMonth:()=>Rb,utcMonths:()=>Pb,utcParse:()=>m_,utcSaturday:()=>qm,utcSaturdays:()=>t_,utcSecond:()=>Pm,utcSeconds:()=>Fm,utcSunday:()=>jm,utcSundays:()=>Gm,utcThursday:()=>$m,utcThursdays:()=>Xm,utcTuesday:()=>zm,utcTuesdays:()=>Jm,utcWednesday:()=>Um,utcWednesdays:()=>Qm,utcWeek:()=>jm,utcWeeks:()=>Gm,utcYear:()=>o_,utcYears:()=>a_,values:()=>gs,variance:()=>p,version:()=>n,voronoi:()=>VS,window:()=>Ie,xml:()=>Na,zip:()=>$,zoom:()=>nk,zoomIdentity:()=>KS,zoomTransform:()=>qS});var n="5.14.2";function r(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}function s(e){var t;return 1===e.length&&(t=e,e=function(e,i){return r(t(e),i)}),{left:function(t,i,n,r){for(null==n&&(n=0),null==r&&(r=t.length);n<r;){var s=n+r>>>1;e(t[s],i)<0?n=s+1:r=s}return n},right:function(t,i,n,r){for(null==n&&(n=0),null==r&&(r=t.length);n<r;){var s=n+r>>>1;e(t[s],i)>0?r=s:n=s+1}return n}}}var o=s(r),a=o.right,l=o.left;const c=a;function d(e,t){null==t&&(t=h);for(var i=0,n=e.length-1,r=e[0],s=new Array(n<0?0:n);i<n;)s[i]=t(r,r=e[++i]);return s}function h(e,t){return[e,t]}function u(e,t,i){var n,r,s,o,a=e.length,l=t.length,c=new Array(a*l);for(null==i&&(i=h),n=s=0;n<a;++n)for(o=e[n],r=0;r<l;++r,++s)c[s]=i(o,t[r]);return c}function g(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function f(e){return null===e?NaN:+e}function p(e,t){var i,n,r=e.length,s=0,o=-1,a=0,l=0;if(null==t)for(;++o<r;)isNaN(i=f(e[o]))||(l+=(n=i-a)*(i-(a+=n/++s)));else for(;++o<r;)isNaN(i=f(t(e[o],o,e)))||(l+=(n=i-a)*(i-(a+=n/++s)));if(s>1)return l/(s-1)}function m(e,t){var i=p(e,t);return i?Math.sqrt(i):i}function _(e,t){var i,n,r,s=e.length,o=-1;if(null==t){for(;++o<s;)if(null!=(i=e[o])&&i>=i)for(n=r=i;++o<s;)null!=(i=e[o])&&(n>i&&(n=i),r<i&&(r=i))}else for(;++o<s;)if(null!=(i=t(e[o],o,e))&&i>=i)for(n=r=i;++o<s;)null!=(i=t(e[o],o,e))&&(n>i&&(n=i),r<i&&(r=i));return[n,r]}var b=Array.prototype,v=b.slice,y=b.map;function w(e){return function(){return e}}function C(e){return e}function S(e,t,i){e=+e,t=+t,i=(r=arguments.length)<2?(t=e,e=0,1):r<3?1:+i;for(var n=-1,r=0|Math.max(0,Math.ceil((t-e)/i)),s=new Array(r);++n<r;)s[n]=e+n*i;return s}var k=Math.sqrt(50),x=Math.sqrt(10),L=Math.sqrt(2);function M(e,t,i){var n,r,s,o,a=-1;if(i=+i,(e=+e)==(t=+t)&&i>0)return[e];if((n=t<e)&&(r=e,e=t,t=r),0===(o=D(e,t,i))||!isFinite(o))return[];if(o>0)for(e=Math.ceil(e/o),t=Math.floor(t/o),s=new Array(r=Math.ceil(t-e+1));++a<r;)s[a]=(e+a)*o;else for(e=Math.floor(e*o),t=Math.ceil(t*o),s=new Array(r=Math.ceil(e-t+1));++a<r;)s[a]=(e-a)/o;return n&&s.reverse(),s}function D(e,t,i){var n=(t-e)/Math.max(0,i),r=Math.floor(Math.log(n)/Math.LN10),s=n/Math.pow(10,r);return r>=0?(s>=k?10:s>=x?5:s>=L?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(s>=k?10:s>=x?5:s>=L?2:1)}function N(e,t,i){var n=Math.abs(t-e)/Math.max(0,i),r=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),s=n/r;return s>=k?r*=10:s>=x?r*=5:s>=L&&(r*=2),t<e?-r:r}function E(e){return Math.ceil(Math.log(e.length)/Math.LN2)+1}function T(){var e=C,t=_,i=E;function n(n){var r,s,o=n.length,a=new Array(o);for(r=0;r<o;++r)a[r]=e(n[r],r,n);var l=t(a),d=l[0],h=l[1],u=i(a,d,h);Array.isArray(u)||(u=N(d,h,u),u=S(Math.ceil(d/u)*u,h,u));for(var g=u.length;u[0]<=d;)u.shift(),--g;for(;u[g-1]>h;)u.pop(),--g;var f,p=new Array(g+1);for(r=0;r<=g;++r)(f=p[r]=[]).x0=r>0?u[r-1]:d,f.x1=r<g?u[r]:h;for(r=0;r<o;++r)d<=(s=a[r])&&s<=h&&p[c(u,s,0,g)].push(n[r]);return p}return n.value=function(t){return arguments.length?(e="function"==typeof t?t:w(t),n):e},n.domain=function(e){return arguments.length?(t="function"==typeof e?e:w([e[0],e[1]]),n):t},n.thresholds=function(e){return arguments.length?(i="function"==typeof e?e:Array.isArray(e)?w(v.call(e)):w(e),n):i},n}function I(e,t,i){if(null==i&&(i=f),n=e.length){if((t=+t)<=0||n<2)return+i(e[0],0,e);if(t>=1)return+i(e[n-1],n-1,e);var n,r=(n-1)*t,s=Math.floor(r),o=+i(e[s],s,e);return o+(+i(e[s+1],s+1,e)-o)*(r-s)}}function O(e,t,i){return e=y.call(e,f).sort(r),Math.ceil((i-t)/(2*(I(e,.75)-I(e,.25))*Math.pow(e.length,-1/3)))}function A(e,t,i){return Math.ceil((i-t)/(3.5*m(e)*Math.pow(e.length,-1/3)))}function R(e,t){var i,n,r=e.length,s=-1;if(null==t){for(;++s<r;)if(null!=(i=e[s])&&i>=i)for(n=i;++s<r;)null!=(i=e[s])&&i>n&&(n=i)}else for(;++s<r;)if(null!=(i=t(e[s],s,e))&&i>=i)for(n=i;++s<r;)null!=(i=t(e[s],s,e))&&i>n&&(n=i);return n}function P(e,t){var i,n=e.length,r=n,s=-1,o=0;if(null==t)for(;++s<n;)isNaN(i=f(e[s]))?--r:o+=i;else for(;++s<n;)isNaN(i=f(t(e[s],s,e)))?--r:o+=i;if(r)return o/r}function F(e,t){var i,n=e.length,s=-1,o=[];if(null==t)for(;++s<n;)isNaN(i=f(e[s]))||o.push(i);else for(;++s<n;)isNaN(i=f(t(e[s],s,e)))||o.push(i);return I(o.sort(r),.5)}function B(e){for(var t,i,n,r=e.length,s=-1,o=0;++s<r;)o+=e[s].length;for(i=new Array(o);--r>=0;)for(t=(n=e[r]).length;--t>=0;)i[--o]=n[t];return i}function W(e,t){var i,n,r=e.length,s=-1;if(null==t){for(;++s<r;)if(null!=(i=e[s])&&i>=i)for(n=i;++s<r;)null!=(i=e[s])&&n>i&&(n=i)}else for(;++s<r;)if(null!=(i=t(e[s],s,e))&&i>=i)for(n=i;++s<r;)null!=(i=t(e[s],s,e))&&n>i&&(n=i);return n}function Y(e,t){for(var i=t.length,n=new Array(i);i--;)n[i]=e[t[i]];return n}function H(e,t){if(i=e.length){var i,n,s=0,o=0,a=e[o];for(null==t&&(t=r);++s<i;)(t(n=e[s],a)<0||0!==t(a,a))&&(a=n,o=s);return 0===t(a,a)?o:void 0}}function j(e,t,i){for(var n,r,s=(null==i?e.length:i)-(t=null==t?0:+t);s;)r=Math.random()*s--|0,n=e[s+t],e[s+t]=e[r+t],e[r+t]=n;return e}function V(e,t){var i,n=e.length,r=-1,s=0;if(null==t)for(;++r<n;)(i=+e[r])&&(s+=i);else for(;++r<n;)(i=+t(e[r],r,e))&&(s+=i);return s}function z(e){if(!(r=e.length))return[];for(var t=-1,i=W(e,U),n=new Array(i);++t<i;)for(var r,s=-1,o=n[t]=new Array(r);++s<r;)o[s]=e[s][t];return n}function U(e){return e.length}function $(){return z(arguments)}var K=Array.prototype.slice;function q(e){return e}var G=1e-6;function Z(e){return"translate("+(e+.5)+",0)"}function J(e){return"translate(0,"+(e+.5)+")"}function Q(e){return function(t){return+e(t)}}function X(e){var t=Math.max(0,e.bandwidth()-1)/2;return e.round()&&(t=Math.round(t)),function(i){return+e(i)+t}}function ee(){return!this.__axis}function te(e,t){var i=[],n=null,r=null,s=6,o=6,a=3,l=1===e||4===e?-1:1,c=4===e||2===e?"x":"y",d=1===e||3===e?Z:J;function h(h){var u=null==n?t.ticks?t.ticks.apply(t,i):t.domain():n,g=null==r?t.tickFormat?t.tickFormat.apply(t,i):q:r,f=Math.max(s,0)+a,p=t.range(),m=+p[0]+.5,_=+p[p.length-1]+.5,b=(t.bandwidth?X:Q)(t.copy()),v=h.selection?h.selection():h,y=v.selectAll(".domain").data([null]),w=v.selectAll(".tick").data(u,t).order(),C=w.exit(),S=w.enter().append("g").attr("class","tick"),k=w.select("line"),x=w.select("text");y=y.merge(y.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(S),k=k.merge(S.append("line").attr("stroke","currentColor").attr(c+"2",l*s)),x=x.merge(S.append("text").attr("fill","currentColor").attr(c,l*f).attr("dy",1===e?"0em":3===e?"0.71em":"0.32em")),h!==v&&(y=y.transition(h),w=w.transition(h),k=k.transition(h),x=x.transition(h),C=C.transition(h).attr("opacity",G).attr("transform",(function(e){return isFinite(e=b(e))?d(e):this.getAttribute("transform")})),S.attr("opacity",G).attr("transform",(function(e){var t=this.parentNode.__axis;return d(t&&isFinite(t=t(e))?t:b(e))}))),C.remove(),y.attr("d",4===e||2==e?o?"M"+l*o+","+m+"H0.5V"+_+"H"+l*o:"M0.5,"+m+"V"+_:o?"M"+m+","+l*o+"V0.5H"+_+"V"+l*o:"M"+m+",0.5H"+_),w.attr("opacity",1).attr("transform",(function(e){return d(b(e))})),k.attr(c+"2",l*s),x.attr(c,l*f).text(g),v.filter(ee).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",2===e?"start":4===e?"end":"middle"),v.each((function(){this.__axis=b}))}return h.scale=function(e){return arguments.length?(t=e,h):t},h.ticks=function(){return i=K.call(arguments),h},h.tickArguments=function(e){return arguments.length?(i=null==e?[]:K.call(e),h):i.slice()},h.tickValues=function(e){return arguments.length?(n=null==e?null:K.call(e),h):n&&n.slice()},h.tickFormat=function(e){return arguments.length?(r=e,h):r},h.tickSize=function(e){return arguments.length?(s=o=+e,h):s},h.tickSizeInner=function(e){return arguments.length?(s=+e,h):s},h.tickSizeOuter=function(e){return arguments.length?(o=+e,h):o},h.tickPadding=function(e){return arguments.length?(a=+e,h):a},h}function ie(e){return te(1,e)}function ne(e){return te(2,e)}function re(e){return te(3,e)}function se(e){return te(4,e)}var oe={value:function(){}};function ae(){for(var e,t=0,i=arguments.length,n={};t<i;++t){if(!(e=arguments[t]+"")||e in n||/[\s.]/.test(e))throw new Error("illegal type: "+e);n[e]=[]}return new le(n)}function le(e){this._=e}function ce(e,t){return e.trim().split(/^|\s+/).map((function(e){var i="",n=e.indexOf(".");if(n>=0&&(i=e.slice(n+1),e=e.slice(0,n)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:i}}))}function de(e,t){for(var i,n=0,r=e.length;n<r;++n)if((i=e[n]).name===t)return i.value}function he(e,t,i){for(var n=0,r=e.length;n<r;++n)if(e[n].name===t){e[n]=oe,e=e.slice(0,n).concat(e.slice(n+1));break}return null!=i&&e.push({name:t,value:i}),e}le.prototype=ae.prototype={constructor:le,on:function(e,t){var i,n=this._,r=ce(e+"",n),s=-1,o=r.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++s<o;)if(i=(e=r[s]).type)n[i]=he(n[i],e.name,t);else if(null==t)for(i in n)n[i]=he(n[i],e.name,null);return this}for(;++s<o;)if((i=(e=r[s]).type)&&(i=de(n[i],e.name)))return i},copy:function(){var e={},t=this._;for(var i in t)e[i]=t[i].slice();return new le(e)},call:function(e,t){if((i=arguments.length-2)>0)for(var i,n,r=new Array(i),s=0;s<i;++s)r[s]=arguments[s+2];if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(s=0,i=(n=this._[e]).length;s<i;++s)n[s].value.apply(t,r)},apply:function(e,t,i){if(!this._.hasOwnProperty(e))throw new Error("unknown type: "+e);for(var n=this._[e],r=0,s=n.length;r<s;++r)n[r].value.apply(t,i)}};const ue=ae;function ge(){}function fe(e){return null==e?ge:function(){return this.querySelector(e)}}function pe(){return[]}function me(e){return null==e?pe:function(){return this.querySelectorAll(e)}}function _e(e){return function(){return this.matches(e)}}function be(e){return new Array(e.length)}function ve(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function ye(e,t,i,n,r,s){for(var o,a=0,l=t.length,c=s.length;a<c;++a)(o=t[a])?(o.__data__=s[a],n[a]=o):i[a]=new ve(e,s[a]);for(;a<l;++a)(o=t[a])&&(r[a]=o)}function we(e,t,i,n,r,s,o){var a,l,c,d={},h=t.length,u=s.length,g=new Array(h);for(a=0;a<h;++a)(l=t[a])&&(g[a]=c="$"+o.call(l,l.__data__,a,t),c in d?r[a]=l:d[c]=l);for(a=0;a<u;++a)(l=d[c="$"+o.call(e,s[a],a,s)])?(n[a]=l,l.__data__=s[a],d[c]=null):i[a]=new ve(e,s[a]);for(a=0;a<h;++a)(l=t[a])&&d[g[a]]===l&&(r[a]=l)}function Ce(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}ve.prototype={constructor:ve,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var Se="http://www.w3.org/1999/xhtml";const ke={svg:"http://www.w3.org/2000/svg",xhtml:Se,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function xe(e){var t=e+="",i=t.indexOf(":");return i>=0&&"xmlns"!==(t=e.slice(0,i))&&(e=e.slice(i+1)),ke.hasOwnProperty(t)?{space:ke[t],local:e}:e}function Le(e){return function(){this.removeAttribute(e)}}function Me(e){return function(){this.removeAttributeNS(e.space,e.local)}}function De(e,t){return function(){this.setAttribute(e,t)}}function Ne(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Ee(e,t){return function(){var i=t.apply(this,arguments);null==i?this.removeAttribute(e):this.setAttribute(e,i)}}function Te(e,t){return function(){var i=t.apply(this,arguments);null==i?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,i)}}function Ie(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Oe(e){return function(){this.style.removeProperty(e)}}function Ae(e,t,i){return function(){this.style.setProperty(e,t,i)}}function Re(e,t,i){return function(){var n=t.apply(this,arguments);null==n?this.style.removeProperty(e):this.style.setProperty(e,n,i)}}function Pe(e,t){return e.style.getPropertyValue(t)||Ie(e).getComputedStyle(e,null).getPropertyValue(t)}function Fe(e){return function(){delete this[e]}}function Be(e,t){return function(){this[e]=t}}function We(e,t){return function(){var i=t.apply(this,arguments);null==i?delete this[e]:this[e]=i}}function Ye(e){return e.trim().split(/^|\s+/)}function He(e){return e.classList||new je(e)}function je(e){this._node=e,this._names=Ye(e.getAttribute("class")||"")}function Ve(e,t){for(var i=He(e),n=-1,r=t.length;++n<r;)i.add(t[n])}function ze(e,t){for(var i=He(e),n=-1,r=t.length;++n<r;)i.remove(t[n])}function Ue(e){return function(){Ve(this,e)}}function $e(e){return function(){ze(this,e)}}function Ke(e,t){return function(){(t.apply(this,arguments)?Ve:ze)(this,e)}}function qe(){this.textContent=""}function Ge(e){return function(){this.textContent=e}}function Ze(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?"":t}}function Je(){this.innerHTML=""}function Qe(e){return function(){this.innerHTML=e}}function Xe(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?"":t}}function et(){this.nextSibling&&this.parentNode.appendChild(this)}function tt(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function it(e){return function(){var t=this.ownerDocument,i=this.namespaceURI;return i===Se&&t.documentElement.namespaceURI===Se?t.createElement(e):t.createElementNS(i,e)}}function nt(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function rt(e){var t=xe(e);return(t.local?nt:it)(t)}function st(){return null}function ot(){var e=this.parentNode;e&&e.removeChild(this)}function at(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function lt(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}je.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var ct={},dt=null;function ht(e,t,i){return e=ut(e,t,i),function(t){var i=t.relatedTarget;i&&(i===this||8&i.compareDocumentPosition(this))||e.call(this,t)}}function ut(e,t,i){return function(n){var r=dt;dt=n;try{e.call(this,this.__data__,t,i)}finally{dt=r}}}function gt(e){return e.trim().split(/^|\s+/).map((function(e){var t="",i=e.indexOf(".");return i>=0&&(t=e.slice(i+1),e=e.slice(0,i)),{type:e,name:t}}))}function ft(e){return function(){var t=this.__on;if(t){for(var i,n=0,r=-1,s=t.length;n<s;++n)i=t[n],e.type&&i.type!==e.type||i.name!==e.name?t[++r]=i:this.removeEventListener(i.type,i.listener,i.capture);++r?t.length=r:delete this.__on}}}function pt(e,t,i){var n=ct.hasOwnProperty(e.type)?ht:ut;return function(r,s,o){var a,l=this.__on,c=n(t,s,o);if(l)for(var d=0,h=l.length;d<h;++d)if((a=l[d]).type===e.type&&a.name===e.name)return this.removeEventListener(a.type,a.listener,a.capture),this.addEventListener(a.type,a.listener=c,a.capture=i),void(a.value=t);this.addEventListener(e.type,c,i),a={type:e.type,name:e.name,value:t,listener:c,capture:i},l?l.push(a):this.__on=[a]}}function mt(e,t,i,n){var r=dt;e.sourceEvent=dt,dt=e;try{return t.apply(i,n)}finally{dt=r}}function _t(e,t,i){var n=Ie(e),r=n.CustomEvent;"function"==typeof r?r=new r(t,i):(r=n.document.createEvent("Event"),i?(r.initEvent(t,i.bubbles,i.cancelable),r.detail=i.detail):r.initEvent(t,!1,!1)),e.dispatchEvent(r)}function bt(e,t){return function(){return _t(this,e,t)}}function vt(e,t){return function(){return _t(this,e,t.apply(this,arguments))}}"undefined"!=typeof document&&("onmouseenter"in document.documentElement||(ct={mouseenter:"mouseover",mouseleave:"mouseout"}));var yt=[null];function wt(e,t){this._groups=e,this._parents=t}function Ct(){return new wt([[document.documentElement]],yt)}wt.prototype=Ct.prototype={constructor:wt,select:function(e){"function"!=typeof e&&(e=fe(e));for(var t=this._groups,i=t.length,n=new Array(i),r=0;r<i;++r)for(var s,o,a=t[r],l=a.length,c=n[r]=new Array(l),d=0;d<l;++d)(s=a[d])&&(o=e.call(s,s.__data__,d,a))&&("__data__"in s&&(o.__data__=s.__data__),c[d]=o);return new wt(n,this._parents)},selectAll:function(e){"function"!=typeof e&&(e=me(e));for(var t=this._groups,i=t.length,n=[],r=[],s=0;s<i;++s)for(var o,a=t[s],l=a.length,c=0;c<l;++c)(o=a[c])&&(n.push(e.call(o,o.__data__,c,a)),r.push(o));return new wt(n,r)},filter:function(e){"function"!=typeof e&&(e=_e(e));for(var t=this._groups,i=t.length,n=new Array(i),r=0;r<i;++r)for(var s,o=t[r],a=o.length,l=n[r]=[],c=0;c<a;++c)(s=o[c])&&e.call(s,s.__data__,c,o)&&l.push(s);return new wt(n,this._parents)},data:function(e,t){if(!e)return f=new Array(this.size()),d=-1,this.each((function(e){f[++d]=e})),f;var i,n=t?we:ye,r=this._parents,s=this._groups;"function"!=typeof e&&(i=e,e=function(){return i});for(var o=s.length,a=new Array(o),l=new Array(o),c=new Array(o),d=0;d<o;++d){var h=r[d],u=s[d],g=u.length,f=e.call(h,h&&h.__data__,d,r),p=f.length,m=l[d]=new Array(p),_=a[d]=new Array(p);n(h,u,m,_,c[d]=new Array(g),f,t);for(var b,v,y=0,w=0;y<p;++y)if(b=m[y]){for(y>=w&&(w=y+1);!(v=_[w])&&++w<p;);b._next=v||null}}return(a=new wt(a,r))._enter=l,a._exit=c,a},enter:function(){return new wt(this._enter||this._groups.map(be),this._parents)},exit:function(){return new wt(this._exit||this._groups.map(be),this._parents)},join:function(e,t,i){var n=this.enter(),r=this,s=this.exit();return n="function"==typeof e?e(n):n.append(e+""),null!=t&&(r=t(r)),null==i?s.remove():i(s),n&&r?n.merge(r).order():r},merge:function(e){for(var t=this._groups,i=e._groups,n=t.length,r=i.length,s=Math.min(n,r),o=new Array(n),a=0;a<s;++a)for(var l,c=t[a],d=i[a],h=c.length,u=o[a]=new Array(h),g=0;g<h;++g)(l=c[g]||d[g])&&(u[g]=l);for(;a<n;++a)o[a]=t[a];return new wt(o,this._parents)},order:function(){for(var e=this._groups,t=-1,i=e.length;++t<i;)for(var n,r=e[t],s=r.length-1,o=r[s];--s>=0;)(n=r[s])&&(o&&4^n.compareDocumentPosition(o)&&o.parentNode.insertBefore(n,o),o=n);return this},sort:function(e){function t(t,i){return t&&i?e(t.__data__,i.__data__):!t-!i}e||(e=Ce);for(var i=this._groups,n=i.length,r=new Array(n),s=0;s<n;++s){for(var o,a=i[s],l=a.length,c=r[s]=new Array(l),d=0;d<l;++d)(o=a[d])&&(c[d]=o);c.sort(t)}return new wt(r,this._parents).order()},call:function(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this},nodes:function(){var e=new Array(this.size()),t=-1;return this.each((function(){e[++t]=this})),e},node:function(){for(var e=this._groups,t=0,i=e.length;t<i;++t)for(var n=e[t],r=0,s=n.length;r<s;++r){var o=n[r];if(o)return o}return null},size:function(){var e=0;return this.each((function(){++e})),e},empty:function(){return!this.node()},each:function(e){for(var t=this._groups,i=0,n=t.length;i<n;++i)for(var r,s=t[i],o=0,a=s.length;o<a;++o)(r=s[o])&&e.call(r,r.__data__,o,s);return this},attr:function(e,t){var i=xe(e);if(arguments.length<2){var n=this.node();return i.local?n.getAttributeNS(i.space,i.local):n.getAttribute(i)}return this.each((null==t?i.local?Me:Le:"function"==typeof t?i.local?Te:Ee:i.local?Ne:De)(i,t))},style:function(e,t,i){return arguments.length>1?this.each((null==t?Oe:"function"==typeof t?Re:Ae)(e,t,null==i?"":i)):Pe(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?Fe:"function"==typeof t?We:Be)(e,t)):this.node()[e]},classed:function(e,t){var i=Ye(e+"");if(arguments.length<2){for(var n=He(this.node()),r=-1,s=i.length;++r<s;)if(!n.contains(i[r]))return!1;return!0}return this.each(("function"==typeof t?Ke:t?Ue:$e)(i,t))},text:function(e){return arguments.length?this.each(null==e?qe:("function"==typeof e?Ze:Ge)(e)):this.node().textContent},html:function(e){return arguments.length?this.each(null==e?Je:("function"==typeof e?Xe:Qe)(e)):this.node().innerHTML},raise:function(){return this.each(et)},lower:function(){return this.each(tt)},append:function(e){var t="function"==typeof e?e:rt(e);return this.select((function(){return this.appendChild(t.apply(this,arguments))}))},insert:function(e,t){var i="function"==typeof e?e:rt(e),n=null==t?st:"function"==typeof t?t:fe(t);return this.select((function(){return this.insertBefore(i.apply(this,arguments),n.apply(this,arguments)||null)}))},remove:function(){return this.each(ot)},clone:function(e){return this.select(e?lt:at)},datum:function(e){return arguments.length?this.property("__data__",e):this.node().__data__},on:function(e,t,i){var n,r,s=gt(e+""),o=s.length;if(!(arguments.length<2)){for(a=t?pt:ft,null==i&&(i=!1),n=0;n<o;++n)this.each(a(s[n],t,i));return this}var a=this.node().__on;if(a)for(var l,c=0,d=a.length;c<d;++c)for(n=0,l=a[c];n<o;++n)if((r=s[n]).type===l.type&&r.name===l.name)return l.value},dispatch:function(e,t){return this.each(("function"==typeof t?vt:bt)(e,t))}};const St=Ct;function kt(e){return"string"==typeof e?new wt([[document.querySelector(e)]],[document.documentElement]):new wt([[e]],yt)}function xt(){dt.stopImmediatePropagation()}function Lt(){dt.preventDefault(),dt.stopImmediatePropagation()}function Mt(e){var t=e.document.documentElement,i=kt(e).on("dragstart.drag",Lt,!0);"onselectstart"in t?i.on("selectstart.drag",Lt,!0):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function Dt(e,t){var i=e.document.documentElement,n=kt(e).on("dragstart.drag",null);t&&(n.on("click.drag",Lt,!0),setTimeout((function(){n.on("click.drag",null)}),0)),"onselectstart"in i?n.on("selectstart.drag",null):(i.style.MozUserSelect=i.__noselect,delete i.__noselect)}function Nt(e,t,i){e.prototype=t.prototype=i,i.constructor=e}function Et(e,t){var i=Object.create(e.prototype);for(var n in t)i[n]=t[n];return i}function Tt(){}var It=.7,Ot=1/It,At="\\s*([+-]?\\d+)\\s*",Rt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",Pt="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ft=/^#([0-9a-f]{3,8})$/,Bt=new RegExp("^rgb\\("+[At,At,At]+"\\)$"),Wt=new RegExp("^rgb\\("+[Pt,Pt,Pt]+"\\)$"),Yt=new RegExp("^rgba\\("+[At,At,At,Rt]+"\\)$"),Ht=new RegExp("^rgba\\("+[Pt,Pt,Pt,Rt]+"\\)$"),jt=new RegExp("^hsl\\("+[Rt,Pt,Pt]+"\\)$"),Vt=new RegExp("^hsla\\("+[Rt,Pt,Pt,Rt]+"\\)$"),zt={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Ut(){return this.rgb().formatHex()}function $t(){return this.rgb().formatRgb()}function Kt(e){var t,i;return e=(e+"").trim().toLowerCase(),(t=Ft.exec(e))?(i=t[1].length,t=parseInt(t[1],16),6===i?qt(t):3===i?new Qt(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===i?new Qt(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===i?new Qt(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Bt.exec(e))?new Qt(t[1],t[2],t[3],1):(t=Wt.exec(e))?new Qt(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Yt.exec(e))?Gt(t[1],t[2],t[3],t[4]):(t=Ht.exec(e))?Gt(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=jt.exec(e))?ii(t[1],t[2]/100,t[3]/100,1):(t=Vt.exec(e))?ii(t[1],t[2]/100,t[3]/100,t[4]):zt.hasOwnProperty(e)?qt(zt[e]):"transparent"===e?new Qt(NaN,NaN,NaN,0):null}function qt(e){return new Qt(e>>16&255,e>>8&255,255&e,1)}function Gt(e,t,i,n){return n<=0&&(e=t=i=NaN),new Qt(e,t,i,n)}function Zt(e){return e instanceof Tt||(e=Kt(e)),e?new Qt((e=e.rgb()).r,e.g,e.b,e.opacity):new Qt}function Jt(e,t,i,n){return 1===arguments.length?Zt(e):new Qt(e,t,i,null==n?1:n)}function Qt(e,t,i,n){this.r=+e,this.g=+t,this.b=+i,this.opacity=+n}function Xt(){return"#"+ti(this.r)+ti(this.g)+ti(this.b)}function ei(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===e?")":", "+e+")")}function ti(e){return((e=Math.max(0,Math.min(255,Math.round(e)||0)))<16?"0":"")+e.toString(16)}function ii(e,t,i,n){return n<=0?e=t=i=NaN:i<=0||i>=1?e=t=NaN:t<=0&&(e=NaN),new si(e,t,i,n)}function ni(e){if(e instanceof si)return new si(e.h,e.s,e.l,e.opacity);if(e instanceof Tt||(e=Kt(e)),!e)return new si;if(e instanceof si)return e;var t=(e=e.rgb()).r/255,i=e.g/255,n=e.b/255,r=Math.min(t,i,n),s=Math.max(t,i,n),o=NaN,a=s-r,l=(s+r)/2;return a?(o=t===s?(i-n)/a+6*(i<n):i===s?(n-t)/a+2:(t-i)/a+4,a/=l<.5?s+r:2-s-r,o*=60):a=l>0&&l<1?0:o,new si(o,a,l,e.opacity)}function ri(e,t,i,n){return 1===arguments.length?ni(e):new si(e,t,i,null==n?1:n)}function si(e,t,i,n){this.h=+e,this.s=+t,this.l=+i,this.opacity=+n}function oi(e,t,i){return 255*(e<60?t+(i-t)*e/60:e<180?i:e<240?t+(i-t)*(240-e)/60:t)}function ai(e,t,i,n,r){var s=e*e,o=s*e;return((1-3*e+3*s-o)*t+(4-6*s+3*o)*i+(1+3*e+3*s-3*o)*n+o*r)/6}function li(e){var t=e.length-1;return function(i){var n=i<=0?i=0:i>=1?(i=1,t-1):Math.floor(i*t),r=e[n],s=e[n+1],o=n>0?e[n-1]:2*r-s,a=n<t-1?e[n+2]:2*s-r;return ai((i-n/t)*t,o,r,s,a)}}function ci(e){var t=e.length;return function(i){var n=Math.floor(((i%=1)<0?++i:i)*t),r=e[(n+t-1)%t],s=e[n%t],o=e[(n+1)%t],a=e[(n+2)%t];return ai((i-n/t)*t,r,s,o,a)}}function di(e){return function(){return e}}function hi(e,t){return function(i){return e+i*t}}function ui(e,t){var i=t-e;return i?hi(e,i>180||i<-180?i-360*Math.round(i/360):i):di(isNaN(e)?t:e)}function gi(e,t){var i=t-e;return i?hi(e,i):di(isNaN(e)?t:e)}Nt(Tt,Kt,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:Ut,formatHex:Ut,formatHsl:function(){return ni(this).formatHsl()},formatRgb:$t,toString:$t}),Nt(Qt,Jt,Et(Tt,{brighter:function(e){return e=null==e?Ot:Math.pow(Ot,e),new Qt(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?It:Math.pow(It,e),new Qt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Xt,formatHex:Xt,formatRgb:ei,toString:ei})),Nt(si,ri,Et(Tt,{brighter:function(e){return e=null==e?Ot:Math.pow(Ot,e),new si(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?It:Math.pow(It,e),new si(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,i=this.l,n=i+(i<.5?i:1-i)*t,r=2*i-n;return new Qt(oi(e>=240?e-240:e+120,r,n),oi(e,r,n),oi(e<120?e+240:e-120,r,n),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=this.opacity;return(1===(e=isNaN(e)?1:Math.max(0,Math.min(1,e)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===e?")":", "+e+")")}}));const fi=function e(t){var i=function(e){return 1==(e=+e)?gi:function(t,i){return i-t?function(e,t,i){return e=Math.pow(e,i),t=Math.pow(t,i)-e,i=1/i,function(n){return Math.pow(e+n*t,i)}}(t,i,e):di(isNaN(t)?i:t)}}(t);function n(e,t){var n=i((e=Jt(e)).r,(t=Jt(t)).r),r=i(e.g,t.g),s=i(e.b,t.b),o=gi(e.opacity,t.opacity);return function(t){return e.r=n(t),e.g=r(t),e.b=s(t),e.opacity=o(t),e+""}}return n.gamma=e,n}(1);function pi(e){return function(t){var i,n,r=t.length,s=new Array(r),o=new Array(r),a=new Array(r);for(i=0;i<r;++i)n=Jt(t[i]),s[i]=n.r||0,o[i]=n.g||0,a[i]=n.b||0;return s=e(s),o=e(o),a=e(a),n.opacity=1,function(e){return n.r=s(e),n.g=o(e),n.b=a(e),n+""}}}var mi=pi(li),_i=pi(ci);function bi(e,t){t||(t=[]);var i,n=e?Math.min(t.length,e.length):0,r=t.slice();return function(s){for(i=0;i<n;++i)r[i]=e[i]*(1-s)+t[i]*s;return r}}function vi(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function yi(e,t){return(vi(t)?bi:wi)(e,t)}function wi(e,t){var i,n=t?t.length:0,r=e?Math.min(n,e.length):0,s=new Array(r),o=new Array(n);for(i=0;i<r;++i)s[i]=Di(e[i],t[i]);for(;i<n;++i)o[i]=t[i];return function(e){for(i=0;i<r;++i)o[i]=s[i](e);return o}}function Ci(e,t){var i=new Date;return e=+e,t=+t,function(n){return i.setTime(e*(1-n)+t*n),i}}function Si(e,t){return e=+e,t=+t,function(i){return e*(1-i)+t*i}}function ki(e,t){var i,n={},r={};for(i in null!==e&&"object"==typeof e||(e={}),null!==t&&"object"==typeof t||(t={}),t)i in e?n[i]=Di(e[i],t[i]):r[i]=t[i];return function(e){for(i in n)r[i]=n[i](e);return r}}var xi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Li=new RegExp(xi.source,"g");function Mi(e,t){var i,n,r,s=xi.lastIndex=Li.lastIndex=0,o=-1,a=[],l=[];for(e+="",t+="";(i=xi.exec(e))&&(n=Li.exec(t));)(r=n.index)>s&&(r=t.slice(s,r),a[o]?a[o]+=r:a[++o]=r),(i=i[0])===(n=n[0])?a[o]?a[o]+=n:a[++o]=n:(a[++o]=null,l.push({i:o,x:Si(i,n)})),s=Li.lastIndex;return s<t.length&&(r=t.slice(s),a[o]?a[o]+=r:a[++o]=r),a.length<2?l[0]?function(e){return function(t){return e(t)+""}}(l[0].x):function(e){return function(){return e}}(t):(t=l.length,function(e){for(var i,n=0;n<t;++n)a[(i=l[n]).i]=i.x(e);return a.join("")})}function Di(e,t){var i,n=typeof t;return null==t||"boolean"===n?di(t):("number"===n?Si:"string"===n?(i=Kt(t))?(t=i,fi):Mi:t instanceof Kt?fi:t instanceof Date?Ci:vi(t)?bi:Array.isArray(t)?wi:"function"!=typeof t.valueOf&&"function"!=typeof t.toString||isNaN(t)?ki:Si)(e,t)}function Ni(){for(var e,t=dt;e=t.sourceEvent;)t=e;return t}function Ei(e,t){var i=e.ownerSVGElement||e;if(i.createSVGPoint){var n=i.createSVGPoint();return n.x=t.clientX,n.y=t.clientY,[(n=n.matrixTransform(e.getScreenCTM().inverse())).x,n.y]}var r=e.getBoundingClientRect();return[t.clientX-r.left-e.clientLeft,t.clientY-r.top-e.clientTop]}function Ti(e,t,i){arguments.length<3&&(i=t,t=Ni().changedTouches);for(var n,r=0,s=t?t.length:0;r<s;++r)if((n=t[r]).identifier===i)return Ei(e,n);return null}function Ii(e){var t=Ni();return t.changedTouches&&(t=t.changedTouches[0]),Ei(e,t)}var Oi,Ai,Ri=0,Pi=0,Fi=0,Bi=0,Wi=0,Yi=0,Hi="object"==typeof performance&&performance.now?performance:Date,ji="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Vi(){return Wi||(ji(zi),Wi=Hi.now()+Yi)}function zi(){Wi=0}function Ui(){this._call=this._time=this._next=null}function $i(e,t,i){var n=new Ui;return n.restart(e,t,i),n}function Ki(){Vi(),++Ri;for(var e,t=Oi;t;)(e=Wi-t._time)>=0&&t._call.call(null,e),t=t._next;--Ri}function qi(){Wi=(Bi=Hi.now())+Yi,Ri=Pi=0;try{Ki()}finally{Ri=0,function(){for(var e,t,i=Oi,n=1/0;i;)i._call?(n>i._time&&(n=i._time),e=i,i=i._next):(t=i._next,i._next=null,i=e?e._next=t:Oi=t);Ai=e,Zi(n)}(),Wi=0}}function Gi(){var e=Hi.now(),t=e-Bi;t>1e3&&(Yi-=t,Bi=e)}function Zi(e){Ri||(Pi&&(Pi=clearTimeout(Pi)),e-Wi>24?(e<1/0&&(Pi=setTimeout(qi,e-Hi.now()-Yi)),Fi&&(Fi=clearInterval(Fi))):(Fi||(Bi=Hi.now(),Fi=setInterval(Gi,1e3)),Ri=1,ji(qi)))}function Ji(e,t,i){var n=new Ui;return t=null==t?0:+t,n.restart((function(i){n.stop(),e(i+t)}),t,i),n}Ui.prototype=$i.prototype={constructor:Ui,restart:function(e,t,i){if("function"!=typeof e)throw new TypeError("callback is not a function");i=(null==i?Vi():+i)+(null==t?0:+t),this._next||Ai===this||(Ai?Ai._next=this:Oi=this,Ai=this),this._call=e,this._time=i,Zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,Zi())}};var Qi=ue("start","end","cancel","interrupt"),Xi=[];function en(e,t,i,n,r,s){var o=e.__transition;if(o){if(i in o)return}else e.__transition={};!function(e,t,i){var n,r=e.__transition;function s(l){var c,d,h,u;if(1!==i.state)return a();for(c in r)if((u=r[c]).name===i.name){if(3===u.state)return Ji(s);4===u.state?(u.state=6,u.timer.stop(),u.on.call("interrupt",e,e.__data__,u.index,u.group),delete r[c]):+c<t&&(u.state=6,u.timer.stop(),u.on.call("cancel",e,e.__data__,u.index,u.group),delete r[c])}if(Ji((function(){3===i.state&&(i.state=4,i.timer.restart(o,i.delay,i.time),o(l))})),i.state=2,i.on.call("start",e,e.__data__,i.index,i.group),2===i.state){for(i.state=3,n=new Array(h=i.tween.length),c=0,d=-1;c<h;++c)(u=i.tween[c].value.call(e,e.__data__,i.index,i.group))&&(n[++d]=u);n.length=d+1}}function o(t){for(var r=t<i.duration?i.ease.call(null,t/i.duration):(i.timer.restart(a),i.state=5,1),s=-1,o=n.length;++s<o;)n[s].call(e,r);5===i.state&&(i.on.call("end",e,e.__data__,i.index,i.group),a())}function a(){for(var n in i.state=6,i.timer.stop(),delete r[t],r)return;delete e.__transition}r[t]=i,i.timer=$i((function(e){i.state=1,i.timer.restart(s,i.delay,i.time),i.delay<=e&&s(e-i.delay)}),0,i.time)}(e,i,{name:t,index:n,group:r,on:Qi,tween:Xi,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:0})}function tn(e,t){var i=rn(e,t);if(i.state>0)throw new Error("too late; already scheduled");return i}function nn(e,t){var i=rn(e,t);if(i.state>3)throw new Error("too late; already running");return i}function rn(e,t){var i=e.__transition;if(!i||!(i=i[t]))throw new Error("transition not found");return i}function sn(e,t){var i,n,r,s=e.__transition,o=!0;if(s){for(r in t=null==t?null:t+"",s)(i=s[r]).name===t?(n=i.state>2&&i.state<5,i.state=6,i.timer.stop(),i.on.call(n?"interrupt":"cancel",e,e.__data__,i.index,i.group),delete s[r]):o=!1;o&&delete e.__transition}}var on,an,ln,cn,dn=180/Math.PI,hn={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function un(e,t,i,n,r,s){var o,a,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*i+t*n)&&(i-=e*l,n-=t*l),(a=Math.sqrt(i*i+n*n))&&(i/=a,n/=a,l/=a),e*n<t*i&&(e=-e,t=-t,l=-l,o=-o),{translateX:r,translateY:s,rotate:Math.atan2(t,e)*dn,skewX:Math.atan(l)*dn,scaleX:o,scaleY:a}}function gn(e,t,i,n){function r(e){return e.length?e.pop()+" ":""}return function(s,o){var a=[],l=[];return s=e(s),o=e(o),function(e,n,r,s,o,a){if(e!==r||n!==s){var l=o.push("translate(",null,t,null,i);a.push({i:l-4,x:Si(e,r)},{i:l-2,x:Si(n,s)})}else(r||s)&&o.push("translate("+r+t+s+i)}(s.translateX,s.translateY,o.translateX,o.translateY,a,l),function(e,t,i,s){e!==t?(e-t>180?t+=360:t-e>180&&(e+=360),s.push({i:i.push(r(i)+"rotate(",null,n)-2,x:Si(e,t)})):t&&i.push(r(i)+"rotate("+t+n)}(s.rotate,o.rotate,a,l),function(e,t,i,s){e!==t?s.push({i:i.push(r(i)+"skewX(",null,n)-2,x:Si(e,t)}):t&&i.push(r(i)+"skewX("+t+n)}(s.skewX,o.skewX,a,l),function(e,t,i,n,s,o){if(e!==i||t!==n){var a=s.push(r(s)+"scale(",null,",",null,")");o.push({i:a-4,x:Si(e,i)},{i:a-2,x:Si(t,n)})}else 1===i&&1===n||s.push(r(s)+"scale("+i+","+n+")")}(s.scaleX,s.scaleY,o.scaleX,o.scaleY,a,l),s=o=null,function(e){for(var t,i=-1,n=l.length;++i<n;)a[(t=l[i]).i]=t.x(e);return a.join("")}}}var fn=gn((function(e){return"none"===e?hn:(on||(on=document.createElement("DIV"),an=document.documentElement,ln=document.defaultView),on.style.transform=e,e=ln.getComputedStyle(an.appendChild(on),null).getPropertyValue("transform"),an.removeChild(on),un(+(e=e.slice(7,-1).split(","))[0],+e[1],+e[2],+e[3],+e[4],+e[5]))}),"px, ","px)","deg)"),pn=gn((function(e){return null==e?hn:(cn||(cn=document.createElementNS("http://www.w3.org/2000/svg","g")),cn.setAttribute("transform",e),(e=cn.transform.baseVal.consolidate())?un((e=e.matrix).a,e.b,e.c,e.d,e.e,e.f):hn)}),", ",")",")");function mn(e,t){var i,n;return function(){var r=nn(this,e),s=r.tween;if(s!==i)for(var o=0,a=(n=i=s).length;o<a;++o)if(n[o].name===t){(n=n.slice()).splice(o,1);break}r.tween=n}}function _n(e,t,i){var n,r;if("function"!=typeof i)throw new Error;return function(){var s=nn(this,e),o=s.tween;if(o!==n){r=(n=o).slice();for(var a={name:t,value:i},l=0,c=r.length;l<c;++l)if(r[l].name===t){r[l]=a;break}l===c&&r.push(a)}s.tween=r}}function bn(e,t,i){var n=e._id;return e.each((function(){var e=nn(this,n);(e.value||(e.value={}))[t]=i.apply(this,arguments)})),function(e){return rn(e,n).value[t]}}function vn(e,t){var i;return("number"==typeof t?Si:t instanceof Kt?fi:(i=Kt(t))?(t=i,fi):Mi)(e,t)}function yn(e){return function(){this.removeAttribute(e)}}function wn(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Cn(e,t,i){var n,r,s=i+"";return function(){var o=this.getAttribute(e);return o===s?null:o===n?r:r=t(n=o,i)}}function Sn(e,t,i){var n,r,s=i+"";return function(){var o=this.getAttributeNS(e.space,e.local);return o===s?null:o===n?r:r=t(n=o,i)}}function kn(e,t,i){var n,r,s;return function(){var o,a,l=i(this);if(null!=l)return(o=this.getAttribute(e))===(a=l+"")?null:o===n&&a===r?s:(r=a,s=t(n=o,l));this.removeAttribute(e)}}function xn(e,t,i){var n,r,s;return function(){var o,a,l=i(this);if(null!=l)return(o=this.getAttributeNS(e.space,e.local))===(a=l+"")?null:o===n&&a===r?s:(r=a,s=t(n=o,l));this.removeAttributeNS(e.space,e.local)}}function Ln(e,t){return function(i){this.setAttribute(e,t.call(this,i))}}function Mn(e,t){return function(i){this.setAttributeNS(e.space,e.local,t.call(this,i))}}function Dn(e,t){var i,n;function r(){var r=t.apply(this,arguments);return r!==n&&(i=(n=r)&&Mn(e,r)),i}return r._value=t,r}function Nn(e,t){var i,n;function r(){var r=t.apply(this,arguments);return r!==n&&(i=(n=r)&&Ln(e,r)),i}return r._value=t,r}function En(e,t){return function(){tn(this,e).delay=+t.apply(this,arguments)}}function Tn(e,t){return t=+t,function(){tn(this,e).delay=t}}function In(e,t){return function(){nn(this,e).duration=+t.apply(this,arguments)}}function On(e,t){return t=+t,function(){nn(this,e).duration=t}}function An(e,t){if("function"!=typeof t)throw new Error;return function(){nn(this,e).ease=t}}function Rn(e,t,i){var n,r,s=function(e){return(e+"").trim().split(/^|\s+/).every((function(e){var t=e.indexOf(".");return t>=0&&(e=e.slice(0,t)),!e||"start"===e}))}(t)?tn:nn;return function(){var o=s(this,e),a=o.on;a!==n&&(r=(n=a).copy()).on(t,i),o.on=r}}var Pn=St.prototype.constructor;function Fn(e){return function(){this.style.removeProperty(e)}}function Bn(e,t,i){return function(n){this.style.setProperty(e,t.call(this,n),i)}}function Wn(e,t,i){var n,r;function s(){var s=t.apply(this,arguments);return s!==r&&(n=(r=s)&&Bn(e,s,i)),n}return s._value=t,s}function Yn(e){return function(t){this.textContent=e.call(this,t)}}function Hn(e){var t,i;function n(){var n=e.apply(this,arguments);return n!==i&&(t=(i=n)&&Yn(n)),t}return n._value=e,n}var jn=0;function Vn(e,t,i,n){this._groups=e,this._parents=t,this._name=i,this._id=n}function zn(e){return St().transition(e)}function Un(){return++jn}var $n=St.prototype;function Kn(e){return e*e*e}function qn(e){return--e*e*e+1}function Gn(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}Vn.prototype=zn.prototype={constructor:Vn,select:function(e){var t=this._name,i=this._id;"function"!=typeof e&&(e=fe(e));for(var n=this._groups,r=n.length,s=new Array(r),o=0;o<r;++o)for(var a,l,c=n[o],d=c.length,h=s[o]=new Array(d),u=0;u<d;++u)(a=c[u])&&(l=e.call(a,a.__data__,u,c))&&("__data__"in a&&(l.__data__=a.__data__),h[u]=l,en(h[u],t,i,u,h,rn(a,i)));return new Vn(s,this._parents,t,i)},selectAll:function(e){var t=this._name,i=this._id;"function"!=typeof e&&(e=me(e));for(var n=this._groups,r=n.length,s=[],o=[],a=0;a<r;++a)for(var l,c=n[a],d=c.length,h=0;h<d;++h)if(l=c[h]){for(var u,g=e.call(l,l.__data__,h,c),f=rn(l,i),p=0,m=g.length;p<m;++p)(u=g[p])&&en(u,t,i,p,g,f);s.push(g),o.push(l)}return new Vn(s,o,t,i)},filter:function(e){"function"!=typeof e&&(e=_e(e));for(var t=this._groups,i=t.length,n=new Array(i),r=0;r<i;++r)for(var s,o=t[r],a=o.length,l=n[r]=[],c=0;c<a;++c)(s=o[c])&&e.call(s,s.__data__,c,o)&&l.push(s);return new Vn(n,this._parents,this._name,this._id)},merge:function(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,i=e._groups,n=t.length,r=i.length,s=Math.min(n,r),o=new Array(n),a=0;a<s;++a)for(var l,c=t[a],d=i[a],h=c.length,u=o[a]=new Array(h),g=0;g<h;++g)(l=c[g]||d[g])&&(u[g]=l);for(;a<n;++a)o[a]=t[a];return new Vn(o,this._parents,this._name,this._id)},selection:function(){return new Pn(this._groups,this._parents)},transition:function(){for(var e=this._name,t=this._id,i=Un(),n=this._groups,r=n.length,s=0;s<r;++s)for(var o,a=n[s],l=a.length,c=0;c<l;++c)if(o=a[c]){var d=rn(o,t);en(o,e,i,c,a,{time:d.time+d.delay+d.duration,delay:0,duration:d.duration,ease:d.ease})}return new Vn(n,this._parents,e,i)},call:$n.call,nodes:$n.nodes,node:$n.node,size:$n.size,empty:$n.empty,each:$n.each,on:function(e,t){var i=this._id;return arguments.length<2?rn(this.node(),i).on.on(e):this.each(Rn(i,e,t))},attr:function(e,t){var i=xe(e),n="transform"===i?pn:vn;return this.attrTween(e,"function"==typeof t?(i.local?xn:kn)(i,n,bn(this,"attr."+e,t)):null==t?(i.local?wn:yn)(i):(i.local?Sn:Cn)(i,n,t))},attrTween:function(e,t){var i="attr."+e;if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==t)return this.tween(i,null);if("function"!=typeof t)throw new Error;var n=xe(e);return this.tween(i,(n.local?Dn:Nn)(n,t))},style:function(e,t,i){var n="transform"==(e+="")?fn:vn;return null==t?this.styleTween(e,function(e,t){var i,n,r;return function(){var s=Pe(this,e),o=(this.style.removeProperty(e),Pe(this,e));return s===o?null:s===i&&o===n?r:r=t(i=s,n=o)}}(e,n)).on("end.style."+e,Fn(e)):"function"==typeof t?this.styleTween(e,function(e,t,i){var n,r,s;return function(){var o=Pe(this,e),a=i(this),l=a+"";return null==a&&(this.style.removeProperty(e),l=a=Pe(this,e)),o===l?null:o===n&&l===r?s:(r=l,s=t(n=o,a))}}(e,n,bn(this,"style."+e,t))).each(function(e,t){var i,n,r,s,o="style."+t,a="end."+o;return function(){var l=nn(this,e),c=l.on,d=null==l.value[o]?s||(s=Fn(t)):void 0;c===i&&r===d||(n=(i=c).copy()).on(a,r=d),l.on=n}}(this._id,e)):this.styleTween(e,function(e,t,i){var n,r,s=i+"";return function(){var o=Pe(this,e);return o===s?null:o===n?r:r=t(n=o,i)}}(e,n,t),i).on("end.style."+e,null)},styleTween:function(e,t,i){var n="style."+(e+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,Wn(e,t,null==i?"":i))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(bn(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,Hn(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var i in this.__transition)if(+i!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var i=this._id;if(e+="",arguments.length<2){for(var n,r=rn(this.node(),i).tween,s=0,o=r.length;s<o;++s)if((n=r[s]).name===e)return n.value;return null}return this.each((null==t?mn:_n)(i,e,t))},delay:function(e){var t=this._id;return arguments.length?this.each(("function"==typeof e?En:Tn)(t,e)):rn(this.node(),t).delay},duration:function(e){var t=this._id;return arguments.length?this.each(("function"==typeof e?In:On)(t,e)):rn(this.node(),t).duration},ease:function(e){var t=this._id;return arguments.length?this.each(An(t,e)):rn(this.node(),t).ease},end:function(){var e,t,i=this,n=i._id,r=i.size();return new Promise((function(s,o){var a={value:o},l={value:function(){0==--r&&s()}};i.each((function(){var i=nn(this,n),r=i.on;r!==e&&((t=(e=r).copy())._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),i.on=t}))}))}};var Zn={time:null,delay:0,duration:250,ease:Gn};function Jn(e,t){for(var i;!(i=e.__transition)||!(i=i[t]);)if(!(e=e.parentNode))return Zn.time=Vi(),Zn;return i}St.prototype.interrupt=function(e){return this.each((function(){sn(this,e)}))},St.prototype.transition=function(e){var t,i;e instanceof Vn?(t=e._id,e=e._name):(t=Un(),(i=Zn).time=Vi(),e=null==e?null:e+"");for(var n=this._groups,r=n.length,s=0;s<r;++s)for(var o,a=n[s],l=a.length,c=0;c<l;++c)(o=a[c])&&en(o,e,t,c,a,i||Jn(o,t));return new Vn(n,this._parents,e,t)};var Qn=[null];function Xn(e,t){var i,n,r=e.__transition;if(r)for(n in t=null==t?null:t+"",r)if((i=r[n]).state>1&&i.name===t)return new Vn([[e]],Qn,t,+n);return null}function er(e){return function(){return e}}function tr(e,t,i){this.target=e,this.type=t,this.selection=i}function ir(){dt.stopImmediatePropagation()}function nr(){dt.preventDefault(),dt.stopImmediatePropagation()}var rr={name:"drag"},sr={name:"space"},or={name:"handle"},ar={name:"center"};function lr(e){return[+e[0],+e[1]]}function cr(e){return[lr(e[0]),lr(e[1])]}function dr(e){return function(t){return Ti(t,dt.touches,e)}}var hr={name:"x",handles:["w","e"].map(vr),input:function(e,t){return null==e?null:[[+e[0],t[0][1]],[+e[1],t[1][1]]]},output:function(e){return e&&[e[0][0],e[1][0]]}},ur={name:"y",handles:["n","s"].map(vr),input:function(e,t){return null==e?null:[[t[0][0],+e[0]],[t[1][0],+e[1]]]},output:function(e){return e&&[e[0][1],e[1][1]]}},gr={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(vr),input:function(e){return null==e?null:cr(e)},output:function(e){return e}},fr={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},pr={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},mr={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},_r={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},br={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function vr(e){return{type:e}}function yr(){return!dt.ctrlKey&&!dt.button}function wr(){var e=this.ownerSVGElement||this;return e.hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]}function Cr(){return navigator.maxTouchPoints||"ontouchstart"in this}function Sr(e){for(;!e.__brush;)if(!(e=e.parentNode))return;return e.__brush}function kr(e){return e[0][0]===e[1][0]||e[0][1]===e[1][1]}function xr(e){var t=e.__brush;return t?t.dim.output(t.selection):null}function Lr(){return Nr(hr)}function Mr(){return Nr(ur)}function Dr(){return Nr(gr)}function Nr(e){var t,i=wr,n=yr,r=Cr,s=!0,o=ue("start","brush","end"),a=6;function l(t){var i=t.property("__brush",p).selectAll(".overlay").data([vr("overlay")]);i.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",fr.overlay).merge(i).each((function(){var e=Sr(this).extent;kt(this).attr("x",e[0][0]).attr("y",e[0][1]).attr("width",e[1][0]-e[0][0]).attr("height",e[1][1]-e[0][1])})),t.selectAll(".selection").data([vr("selection")]).enter().append("rect").attr("class","selection").attr("cursor",fr.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var n=t.selectAll(".handle").data(e.handles,(function(e){return e.type}));n.exit().remove(),n.enter().append("rect").attr("class",(function(e){return"handle handle--"+e.type})).attr("cursor",(function(e){return fr[e.type]})),t.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",u).filter(r).on("touchstart.brush",u).on("touchmove.brush",g).on("touchend.brush touchcancel.brush",f).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function c(){var e=kt(this),t=Sr(this).selection;t?(e.selectAll(".selection").style("display",null).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1]),e.selectAll(".handle").style("display",null).attr("x",(function(e){return"e"===e.type[e.type.length-1]?t[1][0]-a/2:t[0][0]-a/2})).attr("y",(function(e){return"s"===e.type[0]?t[1][1]-a/2:t[0][1]-a/2})).attr("width",(function(e){return"n"===e.type||"s"===e.type?t[1][0]-t[0][0]+a:a})).attr("height",(function(e){return"e"===e.type||"w"===e.type?t[1][1]-t[0][1]+a:a}))):e.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function d(e,t,i){return!i&&e.__brush.emitter||new h(e,t)}function h(e,t){this.that=e,this.args=t,this.state=e.__brush,this.active=0}function u(){if((!t||dt.touches)&&n.apply(this,arguments)){var i,r,o,a,l,h,u,g,f,p,m,_=this,b=dt.target.__data__.type,v="selection"===(s&&dt.metaKey?b="overlay":b)?rr:s&&dt.altKey?ar:or,y=e===ur?null:_r[b],w=e===hr?null:br[b],C=Sr(_),S=C.extent,k=C.selection,x=S[0][0],L=S[0][1],M=S[1][0],D=S[1][1],N=0,E=0,T=y&&w&&s&&dt.shiftKey,I=dt.touches?dr(dt.changedTouches[0].identifier):Ii,O=I(_),A=O,R=d(_,arguments,!0).beforestart();"overlay"===b?(k&&(f=!0),C.selection=k=[[i=e===ur?x:O[0],o=e===hr?L:O[1]],[l=e===ur?M:i,u=e===hr?D:o]]):(i=k[0][0],o=k[0][1],l=k[1][0],u=k[1][1]),r=i,a=o,h=l,g=u;var P=kt(_).attr("pointer-events","none"),F=P.selectAll(".overlay").attr("cursor",fr[b]);if(dt.touches)R.moved=W,R.ended=H;else{var B=kt(dt.view).on("mousemove.brush",W,!0).on("mouseup.brush",H,!0);s&&B.on("keydown.brush",j,!0).on("keyup.brush",V,!0),Mt(dt.view)}ir(),sn(_),c.call(_),R.start()}function W(){var e=I(_);!T||p||m||(Math.abs(e[0]-A[0])>Math.abs(e[1]-A[1])?m=!0:p=!0),A=e,f=!0,nr(),Y()}function Y(){var e;switch(N=A[0]-O[0],E=A[1]-O[1],v){case sr:case rr:y&&(N=Math.max(x-i,Math.min(M-l,N)),r=i+N,h=l+N),w&&(E=Math.max(L-o,Math.min(D-u,E)),a=o+E,g=u+E);break;case or:y<0?(N=Math.max(x-i,Math.min(M-i,N)),r=i+N,h=l):y>0&&(N=Math.max(x-l,Math.min(M-l,N)),r=i,h=l+N),w<0?(E=Math.max(L-o,Math.min(D-o,E)),a=o+E,g=u):w>0&&(E=Math.max(L-u,Math.min(D-u,E)),a=o,g=u+E);break;case ar:y&&(r=Math.max(x,Math.min(M,i-N*y)),h=Math.max(x,Math.min(M,l+N*y))),w&&(a=Math.max(L,Math.min(D,o-E*w)),g=Math.max(L,Math.min(D,u+E*w)))}h<r&&(y*=-1,e=i,i=l,l=e,e=r,r=h,h=e,b in pr&&F.attr("cursor",fr[b=pr[b]])),g<a&&(w*=-1,e=o,o=u,u=e,e=a,a=g,g=e,b in mr&&F.attr("cursor",fr[b=mr[b]])),C.selection&&(k=C.selection),p&&(r=k[0][0],h=k[1][0]),m&&(a=k[0][1],g=k[1][1]),k[0][0]===r&&k[0][1]===a&&k[1][0]===h&&k[1][1]===g||(C.selection=[[r,a],[h,g]],c.call(_),R.brush())}function H(){if(ir(),dt.touches){if(dt.touches.length)return;t&&clearTimeout(t),t=setTimeout((function(){t=null}),500)}else Dt(dt.view,f),B.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);P.attr("pointer-events","all"),F.attr("cursor",fr.overlay),C.selection&&(k=C.selection),kr(k)&&(C.selection=null,c.call(_)),R.end()}function j(){switch(dt.keyCode){case 16:T=y&&w;break;case 18:v===or&&(y&&(l=h-N*y,i=r+N*y),w&&(u=g-E*w,o=a+E*w),v=ar,Y());break;case 32:v!==or&&v!==ar||(y<0?l=h-N:y>0&&(i=r-N),w<0?u=g-E:w>0&&(o=a-E),v=sr,F.attr("cursor",fr.selection),Y());break;default:return}nr()}function V(){switch(dt.keyCode){case 16:T&&(p=m=T=!1,Y());break;case 18:v===ar&&(y<0?l=h:y>0&&(i=r),w<0?u=g:w>0&&(o=a),v=or,Y());break;case 32:v===sr&&(dt.altKey?(y&&(l=h-N*y,i=r+N*y),w&&(u=g-E*w,o=a+E*w),v=ar):(y<0?l=h:y>0&&(i=r),w<0?u=g:w>0&&(o=a),v=or),F.attr("cursor",fr[b]),Y());break;default:return}nr()}}function g(){d(this,arguments).moved()}function f(){d(this,arguments).ended()}function p(){var t=this.__brush||{selection:null};return t.extent=cr(i.apply(this,arguments)),t.dim=e,t}return l.move=function(t,i){t.selection?t.on("start.brush",(function(){d(this,arguments).beforestart().start()})).on("interrupt.brush end.brush",(function(){d(this,arguments).end()})).tween("brush",(function(){var t=this,n=t.__brush,r=d(t,arguments),s=n.selection,o=e.input("function"==typeof i?i.apply(this,arguments):i,n.extent),a=Di(s,o);function l(e){n.selection=1===e&&null===o?null:a(e),c.call(t),r.brush()}return null!==s&&null!==o?l:l(1)})):t.each((function(){var t=this,n=arguments,r=t.__brush,s=e.input("function"==typeof i?i.apply(t,n):i,r.extent),o=d(t,n).beforestart();sn(t),r.selection=null===s?null:s,c.call(t),o.start().brush().end()}))},l.clear=function(e){l.move(e,null)},h.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(){return this.starting?(this.starting=!1,this.emit("start")):this.emit("brush"),this},brush:function(){return this.emit("brush"),this},end:function(){return 0==--this.active&&(delete this.state.emitter,this.emit("end")),this},emit:function(t){mt(new tr(l,t,e.output(this.state.selection)),o.apply,o,[t,this.that,this.args])}},l.extent=function(e){return arguments.length?(i="function"==typeof e?e:er(cr(e)),l):i},l.filter=function(e){return arguments.length?(n="function"==typeof e?e:er(!!e),l):n},l.touchable=function(e){return arguments.length?(r="function"==typeof e?e:er(!!e),l):r},l.handleSize=function(e){return arguments.length?(a=+e,l):a},l.keyModifiers=function(e){return arguments.length?(s=!!e,l):s},l.on=function(){var e=o.on.apply(o,arguments);return e===o?l:e},l}var Er=Math.cos,Tr=Math.sin,Ir=Math.PI,Or=Ir/2,Ar=2*Ir,Rr=Math.max;function Pr(e){return function(t,i){return e(t.source.value+t.target.value,i.source.value+i.target.value)}}function Fr(){var e=0,t=null,i=null,n=null;function r(r){var s,o,a,l,c,d,h=r.length,u=[],g=S(h),f=[],p=[],m=p.groups=new Array(h),_=new Array(h*h);for(s=0,c=-1;++c<h;){for(o=0,d=-1;++d<h;)o+=r[c][d];u.push(o),f.push(S(h)),s+=o}for(t&&g.sort((function(e,i){return t(u[e],u[i])})),i&&f.forEach((function(e,t){e.sort((function(e,n){return i(r[t][e],r[t][n])}))})),l=(s=Rr(0,Ar-e*h)/s)?e:Ar/h,o=0,c=-1;++c<h;){for(a=o,d=-1;++d<h;){var b=g[c],v=f[b][d],y=r[b][v],w=o,C=o+=y*s;_[v*h+b]={index:b,subindex:v,startAngle:w,endAngle:C,value:y}}m[b]={index:b,startAngle:a,endAngle:o,value:u[b]},o+=l}for(c=-1;++c<h;)for(d=c-1;++d<h;){var k=_[d*h+c],x=_[c*h+d];(k.value||x.value)&&p.push(k.value<x.value?{source:x,target:k}:{source:k,target:x})}return n?p.sort(n):p}return r.padAngle=function(t){return arguments.length?(e=Rr(0,t),r):e},r.sortGroups=function(e){return arguments.length?(t=e,r):t},r.sortSubgroups=function(e){return arguments.length?(i=e,r):i},r.sortChords=function(e){return arguments.length?(null==e?n=null:(n=Pr(e))._=e,r):n&&n._},r}var Br=Array.prototype.slice;function Wr(e){return function(){return e}}var Yr=Math.PI,Hr=2*Yr,jr=1e-6,Vr=Hr-jr;function zr(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ur(){return new zr}zr.prototype=Ur.prototype={constructor:zr,moveTo:function(e,t){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(e,t){this._+="L"+(this._x1=+e)+","+(this._y1=+t)},quadraticCurveTo:function(e,t,i,n){this._+="Q"+ +e+","+ +t+","+(this._x1=+i)+","+(this._y1=+n)},bezierCurveTo:function(e,t,i,n,r,s){this._+="C"+ +e+","+ +t+","+ +i+","+ +n+","+(this._x1=+r)+","+(this._y1=+s)},arcTo:function(e,t,i,n,r){e=+e,t=+t,i=+i,n=+n,r=+r;var s=this._x1,o=this._y1,a=i-e,l=n-t,c=s-e,d=o-t,h=c*c+d*d;if(r<0)throw new Error("negative radius: "+r);if(null===this._x1)this._+="M"+(this._x1=e)+","+(this._y1=t);else if(h>jr)if(Math.abs(d*a-l*c)>jr&&r){var u=i-s,g=n-o,f=a*a+l*l,p=u*u+g*g,m=Math.sqrt(f),_=Math.sqrt(h),b=r*Math.tan((Yr-Math.acos((f+h-p)/(2*m*_)))/2),v=b/_,y=b/m;Math.abs(v-1)>jr&&(this._+="L"+(e+v*c)+","+(t+v*d)),this._+="A"+r+","+r+",0,0,"+ +(d*u>c*g)+","+(this._x1=e+y*a)+","+(this._y1=t+y*l)}else this._+="L"+(this._x1=e)+","+(this._y1=t)},arc:function(e,t,i,n,r,s){e=+e,t=+t,s=!!s;var o=(i=+i)*Math.cos(n),a=i*Math.sin(n),l=e+o,c=t+a,d=1^s,h=s?n-r:r-n;if(i<0)throw new Error("negative radius: "+i);null===this._x1?this._+="M"+l+","+c:(Math.abs(this._x1-l)>jr||Math.abs(this._y1-c)>jr)&&(this._+="L"+l+","+c),i&&(h<0&&(h=h%Hr+Hr),h>Vr?this._+="A"+i+","+i+",0,1,"+d+","+(e-o)+","+(t-a)+"A"+i+","+i+",0,1,"+d+","+(this._x1=l)+","+(this._y1=c):h>jr&&(this._+="A"+i+","+i+",0,"+ +(h>=Yr)+","+d+","+(this._x1=e+i*Math.cos(r))+","+(this._y1=t+i*Math.sin(r))))},rect:function(e,t,i,n){this._+="M"+(this._x0=this._x1=+e)+","+(this._y0=this._y1=+t)+"h"+ +i+"v"+ +n+"h"+-i+"Z"},toString:function(){return this._}};const $r=Ur;function Kr(e){return e.source}function qr(e){return e.target}function Gr(e){return e.radius}function Zr(e){return e.startAngle}function Jr(e){return e.endAngle}function Qr(){var e=Kr,t=qr,i=Gr,n=Zr,r=Jr,s=null;function o(){var o,a=Br.call(arguments),l=e.apply(this,a),c=t.apply(this,a),d=+i.apply(this,(a[0]=l,a)),h=n.apply(this,a)-Or,u=r.apply(this,a)-Or,g=d*Er(h),f=d*Tr(h),p=+i.apply(this,(a[0]=c,a)),m=n.apply(this,a)-Or,_=r.apply(this,a)-Or;if(s||(s=o=$r()),s.moveTo(g,f),s.arc(0,0,d,h,u),h===m&&u===_||(s.quadraticCurveTo(0,0,p*Er(m),p*Tr(m)),s.arc(0,0,p,m,_)),s.quadraticCurveTo(0,0,g,f),s.closePath(),o)return s=null,o+""||null}return o.radius=function(e){return arguments.length?(i="function"==typeof e?e:Wr(+e),o):i},o.startAngle=function(e){return arguments.length?(n="function"==typeof e?e:Wr(+e),o):n},o.endAngle=function(e){return arguments.length?(r="function"==typeof e?e:Wr(+e),o):r},o.source=function(t){return arguments.length?(e=t,o):e},o.target=function(e){return arguments.length?(t=e,o):t},o.context=function(e){return arguments.length?(s=null==e?null:e,o):s},o}var Xr="$";function es(){}function ts(e,t){var i=new es;if(e instanceof es)e.each((function(e,t){i.set(t,e)}));else if(Array.isArray(e)){var n,r=-1,s=e.length;if(null==t)for(;++r<s;)i.set(r,e[r]);else for(;++r<s;)i.set(t(n=e[r],r,e),n)}else if(e)for(var o in e)i.set(o,e[o]);return i}es.prototype=ts.prototype={constructor:es,has:function(e){return Xr+e in this},get:function(e){return this[Xr+e]},set:function(e,t){return this[Xr+e]=t,this},remove:function(e){var t=Xr+e;return t in this&&delete this[t]},clear:function(){for(var e in this)e[0]===Xr&&delete this[e]},keys:function(){var e=[];for(var t in this)t[0]===Xr&&e.push(t.slice(1));return e},values:function(){var e=[];for(var t in this)t[0]===Xr&&e.push(this[t]);return e},entries:function(){var e=[];for(var t in this)t[0]===Xr&&e.push({key:t.slice(1),value:this[t]});return e},size:function(){var e=0;for(var t in this)t[0]===Xr&&++e;return e},empty:function(){for(var e in this)if(e[0]===Xr)return!1;return!0},each:function(e){for(var t in this)t[0]===Xr&&e(this[t],t.slice(1),this)}};const is=ts;function ns(){var e,t,i,n=[],r=[];function s(i,r,o,a){if(r>=n.length)return null!=e&&i.sort(e),null!=t?t(i):i;for(var l,c,d,h=-1,u=i.length,g=n[r++],f=is(),p=o();++h<u;)(d=f.get(l=g(c=i[h])+""))?d.push(c):f.set(l,[c]);return f.each((function(e,t){a(p,t,s(e,r,o,a))})),p}function o(e,i){if(++i>n.length)return e;var s,a=r[i-1];return null!=t&&i>=n.length?s=e.entries():(s=[],e.each((function(e,t){s.push({key:t,values:o(e,i)})}))),null!=a?s.sort((function(e,t){return a(e.key,t.key)})):s}return i={object:function(e){return s(e,0,rs,ss)},map:function(e){return s(e,0,os,as)},entries:function(e){return o(s(e,0,os,as),0)},key:function(e){return n.push(e),i},sortKeys:function(e){return r[n.length-1]=e,i},sortValues:function(t){return e=t,i},rollup:function(e){return t=e,i}}}function rs(){return{}}function ss(e,t,i){e[t]=i}function os(){return is()}function as(e,t,i){e.set(t,i)}function ls(){}var cs=is.prototype;function ds(e,t){var i=new ls;if(e instanceof ls)e.each((function(e){i.add(e)}));else if(e){var n=-1,r=e.length;if(null==t)for(;++n<r;)i.add(e[n]);else for(;++n<r;)i.add(t(e[n],n,e))}return i}ls.prototype=ds.prototype={constructor:ls,has:cs.has,add:function(e){return this[Xr+(e+="")]=e,this},remove:cs.remove,clear:cs.clear,values:cs.keys,size:cs.size,empty:cs.empty,each:cs.each};const hs=ds;function us(e){var t=[];for(var i in e)t.push(i);return t}function gs(e){var t=[];for(var i in e)t.push(e[i]);return t}function fs(e){var t=[];for(var i in e)t.push({key:i,value:e[i]});return t}var ps=Math.PI/180,ms=180/Math.PI,_s=.96422,bs=.82521,vs=4/29,ys=6/29,ws=3*ys*ys;function Cs(e){if(e instanceof xs)return new xs(e.l,e.a,e.b,e.opacity);if(e instanceof Os)return As(e);e instanceof Qt||(e=Zt(e));var t,i,n=Ns(e.r),r=Ns(e.g),s=Ns(e.b),o=Ls((.2225045*n+.7168786*r+.0606169*s)/1);return n===r&&r===s?t=i=o:(t=Ls((.4360747*n+.3850649*r+.1430804*s)/_s),i=Ls((.0139322*n+.0971045*r+.7141733*s)/bs)),new xs(116*o-16,500*(t-o),200*(o-i),e.opacity)}function Ss(e,t){return new xs(e,0,0,null==t?1:t)}function ks(e,t,i,n){return 1===arguments.length?Cs(e):new xs(e,t,i,null==n?1:n)}function xs(e,t,i,n){this.l=+e,this.a=+t,this.b=+i,this.opacity=+n}function Ls(e){return e>.008856451679035631?Math.pow(e,1/3):e/ws+vs}function Ms(e){return e>ys?e*e*e:ws*(e-vs)}function Ds(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function Ns(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Es(e){if(e instanceof Os)return new Os(e.h,e.c,e.l,e.opacity);if(e instanceof xs||(e=Cs(e)),0===e.a&&0===e.b)return new Os(NaN,0<e.l&&e.l<100?0:NaN,e.l,e.opacity);var t=Math.atan2(e.b,e.a)*ms;return new Os(t<0?t+360:t,Math.sqrt(e.a*e.a+e.b*e.b),e.l,e.opacity)}function Ts(e,t,i,n){return 1===arguments.length?Es(e):new Os(i,t,e,null==n?1:n)}function Is(e,t,i,n){return 1===arguments.length?Es(e):new Os(e,t,i,null==n?1:n)}function Os(e,t,i,n){this.h=+e,this.c=+t,this.l=+i,this.opacity=+n}function As(e){if(isNaN(e.h))return new xs(e.l,0,0,e.opacity);var t=e.h*ps;return new xs(e.l,Math.cos(t)*e.c,Math.sin(t)*e.c,e.opacity)}Nt(xs,ks,Et(Tt,{brighter:function(e){return new xs(this.l+18*(null==e?1:e),this.a,this.b,this.opacity)},darker:function(e){return new xs(this.l-18*(null==e?1:e),this.a,this.b,this.opacity)},rgb:function(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,i=isNaN(this.b)?e:e-this.b/200;return new Qt(Ds(3.1338561*(t=_s*Ms(t))-1.6168667*(e=1*Ms(e))-.4906146*(i=bs*Ms(i))),Ds(-.9787684*t+1.9161415*e+.033454*i),Ds(.0719453*t-.2289914*e+1.4052427*i),this.opacity)}})),Nt(Os,Is,Et(Tt,{brighter:function(e){return new Os(this.h,this.c,this.l+18*(null==e?1:e),this.opacity)},darker:function(e){return new Os(this.h,this.c,this.l-18*(null==e?1:e),this.opacity)},rgb:function(){return As(this).rgb()}}));var Rs=-.14861,Ps=1.78277,Fs=-.29227,Bs=-.90649,Ws=1.97294,Ys=Ws*Bs,Hs=Ws*Ps,js=Ps*Fs-Bs*Rs;function Vs(e){if(e instanceof Us)return new Us(e.h,e.s,e.l,e.opacity);e instanceof Qt||(e=Zt(e));var t=e.r/255,i=e.g/255,n=e.b/255,r=(js*n+Ys*t-Hs*i)/(js+Ys-Hs),s=n-r,o=(Ws*(i-r)-Fs*s)/Bs,a=Math.sqrt(o*o+s*s)/(Ws*r*(1-r)),l=a?Math.atan2(o,s)*ms-120:NaN;return new Us(l<0?l+360:l,a,r,e.opacity)}function zs(e,t,i,n){return 1===arguments.length?Vs(e):new Us(e,t,i,null==n?1:n)}function Us(e,t,i,n){this.h=+e,this.s=+t,this.l=+i,this.opacity=+n}Nt(Us,zs,Et(Tt,{brighter:function(e){return e=null==e?Ot:Math.pow(Ot,e),new Us(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?It:Math.pow(It,e),new Us(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=isNaN(this.h)?0:(this.h+120)*ps,t=+this.l,i=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),r=Math.sin(e);return new Qt(255*(t+i*(Rs*n+Ps*r)),255*(t+i*(Fs*n+Bs*r)),255*(t+i*(Ws*n)),this.opacity)}}));var $s=Array.prototype.slice;function Ks(e,t){return e-t}function qs(e){return function(){return e}}function Gs(e,t){for(var i,n=-1,r=t.length;++n<r;)if(i=Zs(e,t[n]))return i;return 0}function Zs(e,t){for(var i=t[0],n=t[1],r=-1,s=0,o=e.length,a=o-1;s<o;a=s++){var l=e[s],c=l[0],d=l[1],h=e[a],u=h[0],g=h[1];if(Js(l,h,t))return 0;d>n!=g>n&&i<(u-c)*(n-d)/(g-d)+c&&(r=-r)}return r}function Js(e,t,i){var n,r,s,o;return function(e,t,i){return(t[0]-e[0])*(i[1]-e[1])==(i[0]-e[0])*(t[1]-e[1])}(e,t,i)&&(r=e[n=+(e[0]===t[0])],s=i[n],o=t[n],r<=s&&s<=o||o<=s&&s<=r)}function Qs(){}var Xs=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function eo(){var e=1,t=1,i=E,n=a;function r(e){var t=i(e);if(Array.isArray(t))t=t.slice().sort(Ks);else{var n=_(e),r=n[0],o=n[1];t=N(r,o,t),t=S(Math.floor(r/t)*t,Math.floor(o/t)*t,t)}return t.map((function(t){return s(e,t)}))}function s(i,r){var s=[],a=[];return function(i,n,r){var s,a,l,c,d,h,u=new Array,g=new Array;for(s=a=-1,c=i[0]>=n,Xs[c<<1].forEach(f);++s<e-1;)l=c,c=i[s+1]>=n,Xs[l|c<<1].forEach(f);for(Xs[c<<0].forEach(f);++a<t-1;){for(s=-1,c=i[a*e+e]>=n,d=i[a*e]>=n,Xs[c<<1|d<<2].forEach(f);++s<e-1;)l=c,c=i[a*e+e+s+1]>=n,h=d,d=i[a*e+s+1]>=n,Xs[l|c<<1|d<<2|h<<3].forEach(f);Xs[c|d<<3].forEach(f)}for(s=-1,d=i[a*e]>=n,Xs[d<<2].forEach(f);++s<e-1;)h=d,d=i[a*e+s+1]>=n,Xs[d<<2|h<<3].forEach(f);function f(e){var t,i,n=[e[0][0]+s,e[0][1]+a],l=[e[1][0]+s,e[1][1]+a],c=o(n),d=o(l);(t=g[c])?(i=u[d])?(delete g[t.end],delete u[i.start],t===i?(t.ring.push(l),r(t.ring)):u[t.start]=g[i.end]={start:t.start,end:i.end,ring:t.ring.concat(i.ring)}):(delete g[t.end],t.ring.push(l),g[t.end=d]=t):(t=u[d])?(i=g[c])?(delete u[t.start],delete g[i.end],t===i?(t.ring.push(l),r(t.ring)):u[i.start]=g[t.end]={start:i.start,end:t.end,ring:i.ring.concat(t.ring)}):(delete u[t.start],t.ring.unshift(n),u[t.start=c]=t):u[c]=g[d]={start:c,end:d,ring:[n,l]}}Xs[d<<3].forEach(f)}(i,r,(function(e){n(e,i,r),function(e){for(var t=0,i=e.length,n=e[i-1][1]*e[0][0]-e[i-1][0]*e[0][1];++t<i;)n+=e[t-1][1]*e[t][0]-e[t-1][0]*e[t][1];return n}(e)>0?s.push([e]):a.push(e)})),a.forEach((function(e){for(var t,i=0,n=s.length;i<n;++i)if(-1!==Gs((t=s[i])[0],e))return void t.push(e)})),{type:"MultiPolygon",value:r,coordinates:s}}function o(t){return 2*t[0]+t[1]*(e+1)*4}function a(i,n,r){i.forEach((function(i){var s,o=i[0],a=i[1],l=0|o,c=0|a,d=n[c*e+l];o>0&&o<e&&l===o&&(s=n[c*e+l-1],i[0]=o+(r-s)/(d-s)-.5),a>0&&a<t&&c===a&&(s=n[(c-1)*e+l],i[1]=a+(r-s)/(d-s)-.5)}))}return r.contour=s,r.size=function(i){if(!arguments.length)return[e,t];var n=Math.ceil(i[0]),s=Math.ceil(i[1]);if(!(n>0&&s>0))throw new Error("invalid size");return e=n,t=s,r},r.thresholds=function(e){return arguments.length?(i="function"==typeof e?e:Array.isArray(e)?qs($s.call(e)):qs(e),r):i},r.smooth=function(e){return arguments.length?(n=e?a:Qs,r):n===a},r}function to(e,t,i){for(var n=e.width,r=e.height,s=1+(i<<1),o=0;o<r;++o)for(var a=0,l=0;a<n+i;++a)a<n&&(l+=e.data[a+o*n]),a>=i&&(a>=s&&(l-=e.data[a-s+o*n]),t.data[a-i+o*n]=l/Math.min(a+1,n-1+s-a,s))}function io(e,t,i){for(var n=e.width,r=e.height,s=1+(i<<1),o=0;o<n;++o)for(var a=0,l=0;a<r+i;++a)a<r&&(l+=e.data[o+a*n]),a>=i&&(a>=s&&(l-=e.data[o+(a-s)*n]),t.data[o+(a-i)*n]=l/Math.min(a+1,r-1+s-a,s))}function no(e){return e[0]}function ro(e){return e[1]}function so(){return 1}function oo(){var e=no,t=ro,i=so,n=960,r=500,s=20,o=2,a=3*s,l=n+2*a>>o,c=r+2*a>>o,d=qs(20);function h(n){var r=new Float32Array(l*c),h=new Float32Array(l*c);n.forEach((function(n,s,d){var h=+e(n,s,d)+a>>o,u=+t(n,s,d)+a>>o,g=+i(n,s,d);h>=0&&h<l&&u>=0&&u<c&&(r[h+u*l]+=g)})),to({width:l,height:c,data:r},{width:l,height:c,data:h},s>>o),io({width:l,height:c,data:h},{width:l,height:c,data:r},s>>o),to({width:l,height:c,data:r},{width:l,height:c,data:h},s>>o),io({width:l,height:c,data:h},{width:l,height:c,data:r},s>>o),to({width:l,height:c,data:r},{width:l,height:c,data:h},s>>o),io({width:l,height:c,data:h},{width:l,height:c,data:r},s>>o);var g=d(r);if(!Array.isArray(g)){var f=R(r);g=N(0,f,g),(g=S(0,Math.floor(f/g)*g,g)).shift()}return eo().thresholds(g).size([l,c])(r).map(u)}function u(e){return e.value*=Math.pow(2,-2*o),e.coordinates.forEach(g),e}function g(e){e.forEach(f)}function f(e){e.forEach(p)}function p(e){e[0]=e[0]*Math.pow(2,o)-a,e[1]=e[1]*Math.pow(2,o)-a}function m(){return l=n+2*(a=3*s)>>o,c=r+2*a>>o,h}return h.x=function(t){return arguments.length?(e="function"==typeof t?t:qs(+t),h):e},h.y=function(e){return arguments.length?(t="function"==typeof e?e:qs(+e),h):t},h.weight=function(e){return arguments.length?(i="function"==typeof e?e:qs(+e),h):i},h.size=function(e){if(!arguments.length)return[n,r];var t=Math.ceil(e[0]),i=Math.ceil(e[1]);if(!(t>=0||t>=0))throw new Error("invalid size");return n=t,r=i,m()},h.cellSize=function(e){if(!arguments.length)return 1<<o;if(!((e=+e)>=1))throw new Error("invalid cell size");return o=Math.floor(Math.log(e)/Math.LN2),m()},h.thresholds=function(e){return arguments.length?(d="function"==typeof e?e:Array.isArray(e)?qs($s.call(e)):qs(e),h):d},h.bandwidth=function(e){if(!arguments.length)return Math.sqrt(s*(s+1));if(!((e=+e)>=0))throw new Error("invalid bandwidth");return s=Math.round((Math.sqrt(4*e*e+1)-1)/2),m()},h}function ao(e){return function(){return e}}function lo(e,t,i,n,r,s,o,a,l,c){this.target=e,this.type=t,this.subject=i,this.identifier=n,this.active=r,this.x=s,this.y=o,this.dx=a,this.dy=l,this._=c}function co(){return!dt.ctrlKey&&!dt.button}function ho(){return this.parentNode}function uo(e){return null==e?{x:dt.x,y:dt.y}:e}function go(){return navigator.maxTouchPoints||"ontouchstart"in this}function fo(){var e,t,i,n,r=co,s=ho,o=uo,a=go,l={},c=ue("start","drag","end"),d=0,h=0;function u(e){e.on("mousedown.drag",g).filter(a).on("touchstart.drag",m).on("touchmove.drag",_).on("touchend.drag touchcancel.drag",b).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(){if(!n&&r.apply(this,arguments)){var o=v("mouse",s.apply(this,arguments),Ii,this,arguments);o&&(kt(dt.view).on("mousemove.drag",f,!0).on("mouseup.drag",p,!0),Mt(dt.view),xt(),i=!1,e=dt.clientX,t=dt.clientY,o("start"))}}function f(){if(Lt(),!i){var n=dt.clientX-e,r=dt.clientY-t;i=n*n+r*r>h}l.mouse("drag")}function p(){kt(dt.view).on("mousemove.drag mouseup.drag",null),Dt(dt.view,i),Lt(),l.mouse("end")}function m(){if(r.apply(this,arguments)){var e,t,i=dt.changedTouches,n=s.apply(this,arguments),o=i.length;for(e=0;e<o;++e)(t=v(i[e].identifier,n,Ti,this,arguments))&&(xt(),t("start"))}}function _(){var e,t,i=dt.changedTouches,n=i.length;for(e=0;e<n;++e)(t=l[i[e].identifier])&&(Lt(),t("drag"))}function b(){var e,t,i=dt.changedTouches,r=i.length;for(n&&clearTimeout(n),n=setTimeout((function(){n=null}),500),e=0;e<r;++e)(t=l[i[e].identifier])&&(xt(),t("end"))}function v(e,t,i,n,r){var s,a,h,g=i(t,e),f=c.copy();if(mt(new lo(u,"beforestart",s,e,d,g[0],g[1],0,0,f),(function(){return null!=(dt.subject=s=o.apply(n,r))&&(a=s.x-g[0]||0,h=s.y-g[1]||0,!0)})))return function o(c){var p,m=g;switch(c){case"start":l[e]=o,p=d++;break;case"end":delete l[e],--d;case"drag":g=i(t,e),p=d}mt(new lo(u,c,s,e,p,g[0]+a,g[1]+h,g[0]-m[0],g[1]-m[1],f),f.apply,f,[c,n,r])}}return u.filter=function(e){return arguments.length?(r="function"==typeof e?e:ao(!!e),u):r},u.container=function(e){return arguments.length?(s="function"==typeof e?e:ao(e),u):s},u.subject=function(e){return arguments.length?(o="function"==typeof e?e:ao(e),u):o},u.touchable=function(e){return arguments.length?(a="function"==typeof e?e:ao(!!e),u):a},u.on=function(){var e=c.on.apply(c,arguments);return e===c?u:e},u.clickDistance=function(e){return arguments.length?(h=(e=+e)*e,u):Math.sqrt(h)},u}lo.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};var po={},mo={};function _o(e){return new Function("d","return {"+e.map((function(e,t){return JSON.stringify(e)+": d["+t+'] || ""'})).join(",")+"}")}function bo(e){var t=Object.create(null),i=[];return e.forEach((function(e){for(var n in e)n in t||i.push(t[n]=n)})),i}function vo(e,t){var i=e+"",n=i.length;return n<t?new Array(t-n+1).join(0)+i:i}function yo(e){var t=new RegExp('["'+e+"\n\r]"),i=e.charCodeAt(0);function n(e,t){var n,r=[],s=e.length,o=0,a=0,l=s<=0,c=!1;function d(){if(l)return mo;if(c)return c=!1,po;var t,n,r=o;if(34===e.charCodeAt(r)){for(;o++<s&&34!==e.charCodeAt(o)||34===e.charCodeAt(++o););return(t=o)>=s?l=!0:10===(n=e.charCodeAt(o++))?c=!0:13===n&&(c=!0,10===e.charCodeAt(o)&&++o),e.slice(r+1,t-1).replace(/""/g,'"')}for(;o<s;){if(10===(n=e.charCodeAt(t=o++)))c=!0;else if(13===n)c=!0,10===e.charCodeAt(o)&&++o;else if(n!==i)continue;return e.slice(r,t)}return l=!0,e.slice(r,s)}for(10===e.charCodeAt(s-1)&&--s,13===e.charCodeAt(s-1)&&--s;(n=d())!==mo;){for(var h=[];n!==po&&n!==mo;)h.push(n),n=d();t&&null==(h=t(h,a++))||r.push(h)}return r}function r(t,i){return t.map((function(t){return i.map((function(e){return o(t[e])})).join(e)}))}function s(t){return t.map(o).join(e)}function o(e){return null==e?"":e instanceof Date?function(e){var t=e.getUTCHours(),i=e.getUTCMinutes(),n=e.getUTCSeconds(),r=e.getUTCMilliseconds();return isNaN(e)?"Invalid Date":function(e){return e<0?"-"+vo(-e,6):e>9999?"+"+vo(e,6):vo(e,4)}(e.getUTCFullYear())+"-"+vo(e.getUTCMonth()+1,2)+"-"+vo(e.getUTCDate(),2)+(r?"T"+vo(t,2)+":"+vo(i,2)+":"+vo(n,2)+"."+vo(r,3)+"Z":n?"T"+vo(t,2)+":"+vo(i,2)+":"+vo(n,2)+"Z":i||t?"T"+vo(t,2)+":"+vo(i,2)+"Z":"")}(e):t.test(e+="")?'"'+e.replace(/"/g,'""')+'"':e}return{parse:function(e,t){var i,r,s=n(e,(function(e,n){if(i)return i(e,n-1);r=e,i=t?function(e,t){var i=_o(e);return function(n,r){return t(i(n),r,e)}}(e,t):_o(e)}));return s.columns=r||[],s},parseRows:n,format:function(t,i){return null==i&&(i=bo(t)),[i.map(o).join(e)].concat(r(t,i)).join("\n")},formatBody:function(e,t){return null==t&&(t=bo(e)),r(e,t).join("\n")},formatRows:function(e){return e.map(s).join("\n")},formatRow:s,formatValue:o}}var wo=yo(","),Co=wo.parse,So=wo.parseRows,ko=wo.format,xo=wo.formatBody,Lo=wo.formatRows,Mo=wo.formatRow,Do=wo.formatValue,No=yo("\t"),Eo=No.parse,To=No.parseRows,Io=No.format,Oo=No.formatBody,Ao=No.formatRows,Ro=No.formatRow,Po=No.formatValue;function Fo(e){for(var t in e){var i,n,r=e[t].trim();if(r)if("true"===r)r=!0;else if("false"===r)r=!1;else if("NaN"===r)r=NaN;else if(isNaN(i=+r)){if(!(n=r.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;Bo&&n[4]&&!n[7]&&(r=r.replace(/-/g,"/").replace(/T/," ")),r=new Date(r)}else r=i;else r=null;e[t]=r}return e}var Bo=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function Wo(e){return+e}function Yo(e){return e*e}function Ho(e){return e*(2-e)}function jo(e){return((e*=2)<=1?e*e:--e*(2-e)+1)/2}var Vo=function e(t){function i(e){return Math.pow(e,t)}return t=+t,i.exponent=e,i}(3),zo=function e(t){function i(e){return 1-Math.pow(1-e,t)}return t=+t,i.exponent=e,i}(3),Uo=function e(t){function i(e){return((e*=2)<=1?Math.pow(e,t):2-Math.pow(2-e,t))/2}return t=+t,i.exponent=e,i}(3),$o=Math.PI,Ko=$o/2;function qo(e){return 1-Math.cos(e*Ko)}function Go(e){return Math.sin(e*Ko)}function Zo(e){return(1-Math.cos($o*e))/2}function Jo(e){return Math.pow(2,10*e-10)}function Qo(e){return 1-Math.pow(2,-10*e)}function Xo(e){return((e*=2)<=1?Math.pow(2,10*e-10):2-Math.pow(2,10-10*e))/2}function ea(e){return 1-Math.sqrt(1-e*e)}function ta(e){return Math.sqrt(1- --e*e)}function ia(e){return((e*=2)<=1?1-Math.sqrt(1-e*e):Math.sqrt(1-(e-=2)*e)+1)/2}var na=7.5625;function ra(e){return 1-sa(1-e)}function sa(e){return(e=+e)<.36363636363636365?na*e*e:e<.7272727272727273?na*(e-=.5454545454545454)*e+.75:e<.9090909090909091?na*(e-=.8181818181818182)*e+.9375:na*(e-=.9545454545454546)*e+.984375}function oa(e){return((e*=2)<=1?1-sa(1-e):sa(e-1)+1)/2}var aa=1.70158,la=function e(t){function i(e){return e*e*((t+1)*e-t)}return t=+t,i.overshoot=e,i}(aa),ca=function e(t){function i(e){return--e*e*((t+1)*e+t)+1}return t=+t,i.overshoot=e,i}(aa),da=function e(t){function i(e){return((e*=2)<1?e*e*((t+1)*e-t):(e-=2)*e*((t+1)*e+t)+2)/2}return t=+t,i.overshoot=e,i}(aa),ha=2*Math.PI,ua=function e(t,i){var n=Math.asin(1/(t=Math.max(1,t)))*(i/=ha);function r(e){return t*Math.pow(2,10*--e)*Math.sin((n-e)/i)}return r.amplitude=function(t){return e(t,i*ha)},r.period=function(i){return e(t,i)},r}(1,.3),ga=function e(t,i){var n=Math.asin(1/(t=Math.max(1,t)))*(i/=ha);function r(e){return 1-t*Math.pow(2,-10*(e=+e))*Math.sin((e+n)/i)}return r.amplitude=function(t){return e(t,i*ha)},r.period=function(i){return e(t,i)},r}(1,.3),fa=function e(t,i){var n=Math.asin(1/(t=Math.max(1,t)))*(i/=ha);function r(e){return((e=2*e-1)<0?t*Math.pow(2,10*e)*Math.sin((n-e)/i):2-t*Math.pow(2,-10*e)*Math.sin((n+e)/i))/2}return r.amplitude=function(t){return e(t,i*ha)},r.period=function(i){return e(t,i)},r}(1,.3);function pa(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.blob()}function ma(e,t){return fetch(e,t).then(pa)}function _a(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.arrayBuffer()}function ba(e,t){return fetch(e,t).then(_a)}function va(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.text()}function ya(e,t){return fetch(e,t).then(va)}function wa(e){return function(t,i,n){return 2===arguments.length&&"function"==typeof i&&(n=i,i=void 0),ya(t,i).then((function(t){return e(t,n)}))}}function Ca(e,t,i,n){3===arguments.length&&"function"==typeof i&&(n=i,i=void 0);var r=yo(e);return ya(t,i).then((function(e){return r.parse(e,n)}))}var Sa=wa(Co),ka=wa(Eo);function xa(e,t){return new Promise((function(i,n){var r=new Image;for(var s in t)r[s]=t[s];r.onerror=n,r.onload=function(){i(r)},r.src=e}))}function La(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.json()}function Ma(e,t){return fetch(e,t).then(La)}function Da(e){return function(t,i){return ya(t,i).then((function(t){return(new DOMParser).parseFromString(t,e)}))}}const Na=Da("application/xml");var Ea=Da("text/html"),Ta=Da("image/svg+xml");function Ia(e,t){var i;function n(){var n,r,s=i.length,o=0,a=0;for(n=0;n<s;++n)o+=(r=i[n]).x,a+=r.y;for(o=o/s-e,a=a/s-t,n=0;n<s;++n)(r=i[n]).x-=o,r.y-=a}return null==e&&(e=0),null==t&&(t=0),n.initialize=function(e){i=e},n.x=function(t){return arguments.length?(e=+t,n):e},n.y=function(e){return arguments.length?(t=+e,n):t},n}function Oa(e){return function(){return e}}function Aa(){return 1e-6*(Math.random()-.5)}function Ra(e,t,i,n){if(isNaN(t)||isNaN(i))return e;var r,s,o,a,l,c,d,h,u,g=e._root,f={data:n},p=e._x0,m=e._y0,_=e._x1,b=e._y1;if(!g)return e._root=f,e;for(;g.length;)if((c=t>=(s=(p+_)/2))?p=s:_=s,(d=i>=(o=(m+b)/2))?m=o:b=o,r=g,!(g=g[h=d<<1|c]))return r[h]=f,e;if(a=+e._x.call(null,g.data),l=+e._y.call(null,g.data),t===a&&i===l)return f.next=g,r?r[h]=f:e._root=f,e;do{r=r?r[h]=new Array(4):e._root=new Array(4),(c=t>=(s=(p+_)/2))?p=s:_=s,(d=i>=(o=(m+b)/2))?m=o:b=o}while((h=d<<1|c)==(u=(l>=o)<<1|a>=s));return r[u]=g,r[h]=f,e}function Pa(e,t,i,n,r){this.node=e,this.x0=t,this.y0=i,this.x1=n,this.y1=r}function Fa(e){return e[0]}function Ba(e){return e[1]}function Wa(e,t,i){var n=new Ya(null==t?Fa:t,null==i?Ba:i,NaN,NaN,NaN,NaN);return null==e?n:n.addAll(e)}function Ya(e,t,i,n,r,s){this._x=e,this._y=t,this._x0=i,this._y0=n,this._x1=r,this._y1=s,this._root=void 0}function Ha(e){for(var t={data:e.data},i=t;e=e.next;)i=i.next={data:e.data};return t}var ja=Wa.prototype=Ya.prototype;function Va(e){return e.x+e.vx}function za(e){return e.y+e.vy}function Ua(e){var t,i,n=1,r=1;function s(){for(var e,s,a,l,c,d,h,u=t.length,g=0;g<r;++g)for(s=Wa(t,Va,za).visitAfter(o),e=0;e<u;++e)a=t[e],d=i[a.index],h=d*d,l=a.x+a.vx,c=a.y+a.vy,s.visit(f);function f(e,t,i,r,s){var o=e.data,u=e.r,g=d+u;if(!o)return t>l+g||r<l-g||i>c+g||s<c-g;if(o.index>a.index){var f=l-o.x-o.vx,p=c-o.y-o.vy,m=f*f+p*p;m<g*g&&(0===f&&(m+=(f=Aa())*f),0===p&&(m+=(p=Aa())*p),m=(g-(m=Math.sqrt(m)))/m*n,a.vx+=(f*=m)*(g=(u*=u)/(h+u)),a.vy+=(p*=m)*g,o.vx-=f*(g=1-g),o.vy-=p*g)}}}function o(e){if(e.data)return e.r=i[e.data.index];for(var t=e.r=0;t<4;++t)e[t]&&e[t].r>e.r&&(e.r=e[t].r)}function a(){if(t){var n,r,s=t.length;for(i=new Array(s),n=0;n<s;++n)r=t[n],i[r.index]=+e(r,n,t)}}return"function"!=typeof e&&(e=Oa(null==e?1:+e)),s.initialize=function(e){t=e,a()},s.iterations=function(e){return arguments.length?(r=+e,s):r},s.strength=function(e){return arguments.length?(n=+e,s):n},s.radius=function(t){return arguments.length?(e="function"==typeof t?t:Oa(+t),a(),s):e},s}function $a(e){return e.index}function Ka(e,t){var i=e.get(t);if(!i)throw new Error("missing: "+t);return i}function qa(e){var t,i,n,r,s,o=$a,a=function(e){return 1/Math.min(r[e.source.index],r[e.target.index])},l=Oa(30),c=1;function d(n){for(var r=0,o=e.length;r<c;++r)for(var a,l,d,h,u,g,f,p=0;p<o;++p)l=(a=e[p]).source,h=(d=a.target).x+d.vx-l.x-l.vx||Aa(),u=d.y+d.vy-l.y-l.vy||Aa(),h*=g=((g=Math.sqrt(h*h+u*u))-i[p])/g*n*t[p],u*=g,d.vx-=h*(f=s[p]),d.vy-=u*f,l.vx+=h*(f=1-f),l.vy+=u*f}function h(){if(n){var a,l,c=n.length,d=e.length,h=is(n,o);for(a=0,r=new Array(c);a<d;++a)(l=e[a]).index=a,"object"!=typeof l.source&&(l.source=Ka(h,l.source)),"object"!=typeof l.target&&(l.target=Ka(h,l.target)),r[l.source.index]=(r[l.source.index]||0)+1,r[l.target.index]=(r[l.target.index]||0)+1;for(a=0,s=new Array(d);a<d;++a)l=e[a],s[a]=r[l.source.index]/(r[l.source.index]+r[l.target.index]);t=new Array(d),u(),i=new Array(d),g()}}function u(){if(n)for(var i=0,r=e.length;i<r;++i)t[i]=+a(e[i],i,e)}function g(){if(n)for(var t=0,r=e.length;t<r;++t)i[t]=+l(e[t],t,e)}return null==e&&(e=[]),d.initialize=function(e){n=e,h()},d.links=function(t){return arguments.length?(e=t,h(),d):e},d.id=function(e){return arguments.length?(o=e,d):o},d.iterations=function(e){return arguments.length?(c=+e,d):c},d.strength=function(e){return arguments.length?(a="function"==typeof e?e:Oa(+e),u(),d):a},d.distance=function(e){return arguments.length?(l="function"==typeof e?e:Oa(+e),g(),d):l},d}function Ga(e){return e.x}function Za(e){return e.y}ja.copy=function(){var e,t,i=new Ya(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return i;if(!n.length)return i._root=Ha(n),i;for(e=[{source:n,target:i._root=new Array(4)}];n=e.pop();)for(var r=0;r<4;++r)(t=n.source[r])&&(t.length?e.push({source:t,target:n.target[r]=new Array(4)}):n.target[r]=Ha(t));return i},ja.add=function(e){var t=+this._x.call(null,e),i=+this._y.call(null,e);return Ra(this.cover(t,i),t,i,e)},ja.addAll=function(e){var t,i,n,r,s=e.length,o=new Array(s),a=new Array(s),l=1/0,c=1/0,d=-1/0,h=-1/0;for(i=0;i<s;++i)isNaN(n=+this._x.call(null,t=e[i]))||isNaN(r=+this._y.call(null,t))||(o[i]=n,a[i]=r,n<l&&(l=n),n>d&&(d=n),r<c&&(c=r),r>h&&(h=r));if(l>d||c>h)return this;for(this.cover(l,c).cover(d,h),i=0;i<s;++i)Ra(this,o[i],a[i],e[i]);return this},ja.cover=function(e,t){if(isNaN(e=+e)||isNaN(t=+t))return this;var i=this._x0,n=this._y0,r=this._x1,s=this._y1;if(isNaN(i))r=(i=Math.floor(e))+1,s=(n=Math.floor(t))+1;else{for(var o,a,l=r-i,c=this._root;i>e||e>=r||n>t||t>=s;)switch(a=(t<n)<<1|e<i,(o=new Array(4))[a]=c,c=o,l*=2,a){case 0:r=i+l,s=n+l;break;case 1:i=r-l,s=n+l;break;case 2:r=i+l,n=s-l;break;case 3:i=r-l,n=s-l}this._root&&this._root.length&&(this._root=c)}return this._x0=i,this._y0=n,this._x1=r,this._y1=s,this},ja.data=function(){var e=[];return this.visit((function(t){if(!t.length)do{e.push(t.data)}while(t=t.next)})),e},ja.extent=function(e){return arguments.length?this.cover(+e[0][0],+e[0][1]).cover(+e[1][0],+e[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},ja.find=function(e,t,i){var n,r,s,o,a,l,c,d=this._x0,h=this._y0,u=this._x1,g=this._y1,f=[],p=this._root;for(p&&f.push(new Pa(p,d,h,u,g)),null==i?i=1/0:(d=e-i,h=t-i,u=e+i,g=t+i,i*=i);l=f.pop();)if(!(!(p=l.node)||(r=l.x0)>u||(s=l.y0)>g||(o=l.x1)<d||(a=l.y1)<h))if(p.length){var m=(r+o)/2,_=(s+a)/2;f.push(new Pa(p[3],m,_,o,a),new Pa(p[2],r,_,m,a),new Pa(p[1],m,s,o,_),new Pa(p[0],r,s,m,_)),(c=(t>=_)<<1|e>=m)&&(l=f[f.length-1],f[f.length-1]=f[f.length-1-c],f[f.length-1-c]=l)}else{var b=e-+this._x.call(null,p.data),v=t-+this._y.call(null,p.data),y=b*b+v*v;if(y<i){var w=Math.sqrt(i=y);d=e-w,h=t-w,u=e+w,g=t+w,n=p.data}}return n},ja.remove=function(e){if(isNaN(s=+this._x.call(null,e))||isNaN(o=+this._y.call(null,e)))return this;var t,i,n,r,s,o,a,l,c,d,h,u,g=this._root,f=this._x0,p=this._y0,m=this._x1,_=this._y1;if(!g)return this;if(g.length)for(;;){if((c=s>=(a=(f+m)/2))?f=a:m=a,(d=o>=(l=(p+_)/2))?p=l:_=l,t=g,!(g=g[h=d<<1|c]))return this;if(!g.length)break;(t[h+1&3]||t[h+2&3]||t[h+3&3])&&(i=t,u=h)}for(;g.data!==e;)if(n=g,!(g=g.next))return this;return(r=g.next)&&delete g.next,n?(r?n.next=r:delete n.next,this):t?(r?t[h]=r:delete t[h],(g=t[0]||t[1]||t[2]||t[3])&&g===(t[3]||t[2]||t[1]||t[0])&&!g.length&&(i?i[u]=g:this._root=g),this):(this._root=r,this)},ja.removeAll=function(e){for(var t=0,i=e.length;t<i;++t)this.remove(e[t]);return this},ja.root=function(){return this._root},ja.size=function(){var e=0;return this.visit((function(t){if(!t.length)do{++e}while(t=t.next)})),e},ja.visit=function(e){var t,i,n,r,s,o,a=[],l=this._root;for(l&&a.push(new Pa(l,this._x0,this._y0,this._x1,this._y1));t=a.pop();)if(!e(l=t.node,n=t.x0,r=t.y0,s=t.x1,o=t.y1)&&l.length){var c=(n+s)/2,d=(r+o)/2;(i=l[3])&&a.push(new Pa(i,c,d,s,o)),(i=l[2])&&a.push(new Pa(i,n,d,c,o)),(i=l[1])&&a.push(new Pa(i,c,r,s,d)),(i=l[0])&&a.push(new Pa(i,n,r,c,d))}return this},ja.visitAfter=function(e){var t,i=[],n=[];for(this._root&&i.push(new Pa(this._root,this._x0,this._y0,this._x1,this._y1));t=i.pop();){var r=t.node;if(r.length){var s,o=t.x0,a=t.y0,l=t.x1,c=t.y1,d=(o+l)/2,h=(a+c)/2;(s=r[0])&&i.push(new Pa(s,o,a,d,h)),(s=r[1])&&i.push(new Pa(s,d,a,l,h)),(s=r[2])&&i.push(new Pa(s,o,h,d,c)),(s=r[3])&&i.push(new Pa(s,d,h,l,c))}n.push(t)}for(;t=n.pop();)e(t.node,t.x0,t.y0,t.x1,t.y1);return this},ja.x=function(e){return arguments.length?(this._x=e,this):this._x},ja.y=function(e){return arguments.length?(this._y=e,this):this._y};var Ja=Math.PI*(3-Math.sqrt(5));function Qa(e){var t,i=1,n=.001,r=1-Math.pow(n,1/300),s=0,o=.6,a=is(),l=$i(d),c=ue("tick","end");function d(){h(),c.call("tick",t),i<n&&(l.stop(),c.call("end",t))}function h(n){var l,c,d=e.length;void 0===n&&(n=1);for(var h=0;h<n;++h)for(i+=(s-i)*r,a.each((function(e){e(i)})),l=0;l<d;++l)null==(c=e[l]).fx?c.x+=c.vx*=o:(c.x=c.fx,c.vx=0),null==c.fy?c.y+=c.vy*=o:(c.y=c.fy,c.vy=0);return t}function u(){for(var t,i=0,n=e.length;i<n;++i){if((t=e[i]).index=i,null!=t.fx&&(t.x=t.fx),null!=t.fy&&(t.y=t.fy),isNaN(t.x)||isNaN(t.y)){var r=10*Math.sqrt(i),s=i*Ja;t.x=r*Math.cos(s),t.y=r*Math.sin(s)}(isNaN(t.vx)||isNaN(t.vy))&&(t.vx=t.vy=0)}}function g(t){return t.initialize&&t.initialize(e),t}return null==e&&(e=[]),u(),t={tick:h,restart:function(){return l.restart(d),t},stop:function(){return l.stop(),t},nodes:function(i){return arguments.length?(e=i,u(),a.each(g),t):e},alpha:function(e){return arguments.length?(i=+e,t):i},alphaMin:function(e){return arguments.length?(n=+e,t):n},alphaDecay:function(e){return arguments.length?(r=+e,t):+r},alphaTarget:function(e){return arguments.length?(s=+e,t):s},velocityDecay:function(e){return arguments.length?(o=1-e,t):1-o},force:function(e,i){return arguments.length>1?(null==i?a.remove(e):a.set(e,g(i)),t):a.get(e)},find:function(t,i,n){var r,s,o,a,l,c=0,d=e.length;for(null==n?n=1/0:n*=n,c=0;c<d;++c)(o=(r=t-(a=e[c]).x)*r+(s=i-a.y)*s)<n&&(l=a,n=o);return l},on:function(e,i){return arguments.length>1?(c.on(e,i),t):c.on(e)}}}function Xa(){var e,t,i,n,r=Oa(-30),s=1,o=1/0,a=.81;function l(n){var r,s=e.length,o=Wa(e,Ga,Za).visitAfter(d);for(i=n,r=0;r<s;++r)t=e[r],o.visit(h)}function c(){if(e){var t,i,s=e.length;for(n=new Array(s),t=0;t<s;++t)i=e[t],n[i.index]=+r(i,t,e)}}function d(e){var t,i,r,s,o,a=0,l=0;if(e.length){for(r=s=o=0;o<4;++o)(t=e[o])&&(i=Math.abs(t.value))&&(a+=t.value,l+=i,r+=i*t.x,s+=i*t.y);e.x=r/l,e.y=s/l}else{(t=e).x=t.data.x,t.y=t.data.y;do{a+=n[t.data.index]}while(t=t.next)}e.value=a}function h(e,r,l,c){if(!e.value)return!0;var d=e.x-t.x,h=e.y-t.y,u=c-r,g=d*d+h*h;if(u*u/a<g)return g<o&&(0===d&&(g+=(d=Aa())*d),0===h&&(g+=(h=Aa())*h),g<s&&(g=Math.sqrt(s*g)),t.vx+=d*e.value*i/g,t.vy+=h*e.value*i/g),!0;if(!(e.length||g>=o)){(e.data!==t||e.next)&&(0===d&&(g+=(d=Aa())*d),0===h&&(g+=(h=Aa())*h),g<s&&(g=Math.sqrt(s*g)));do{e.data!==t&&(u=n[e.data.index]*i/g,t.vx+=d*u,t.vy+=h*u)}while(e=e.next)}}return l.initialize=function(t){e=t,c()},l.strength=function(e){return arguments.length?(r="function"==typeof e?e:Oa(+e),c(),l):r},l.distanceMin=function(e){return arguments.length?(s=e*e,l):Math.sqrt(s)},l.distanceMax=function(e){return arguments.length?(o=e*e,l):Math.sqrt(o)},l.theta=function(e){return arguments.length?(a=e*e,l):Math.sqrt(a)},l}function el(e,t,i){var n,r,s,o=Oa(.1);function a(e){for(var o=0,a=n.length;o<a;++o){var l=n[o],c=l.x-t||1e-6,d=l.y-i||1e-6,h=Math.sqrt(c*c+d*d),u=(s[o]-h)*r[o]*e/h;l.vx+=c*u,l.vy+=d*u}}function l(){if(n){var t,i=n.length;for(r=new Array(i),s=new Array(i),t=0;t<i;++t)s[t]=+e(n[t],t,n),r[t]=isNaN(s[t])?0:+o(n[t],t,n)}}return"function"!=typeof e&&(e=Oa(+e)),null==t&&(t=0),null==i&&(i=0),a.initialize=function(e){n=e,l()},a.strength=function(e){return arguments.length?(o="function"==typeof e?e:Oa(+e),l(),a):o},a.radius=function(t){return arguments.length?(e="function"==typeof t?t:Oa(+t),l(),a):e},a.x=function(e){return arguments.length?(t=+e,a):t},a.y=function(e){return arguments.length?(i=+e,a):i},a}function tl(e){var t,i,n,r=Oa(.1);function s(e){for(var r,s=0,o=t.length;s<o;++s)(r=t[s]).vx+=(n[s]-r.x)*i[s]*e}function o(){if(t){var s,o=t.length;for(i=new Array(o),n=new Array(o),s=0;s<o;++s)i[s]=isNaN(n[s]=+e(t[s],s,t))?0:+r(t[s],s,t)}}return"function"!=typeof e&&(e=Oa(null==e?0:+e)),s.initialize=function(e){t=e,o()},s.strength=function(e){return arguments.length?(r="function"==typeof e?e:Oa(+e),o(),s):r},s.x=function(t){return arguments.length?(e="function"==typeof t?t:Oa(+t),o(),s):e},s}function il(e){var t,i,n,r=Oa(.1);function s(e){for(var r,s=0,o=t.length;s<o;++s)(r=t[s]).vy+=(n[s]-r.y)*i[s]*e}function o(){if(t){var s,o=t.length;for(i=new Array(o),n=new Array(o),s=0;s<o;++s)i[s]=isNaN(n[s]=+e(t[s],s,t))?0:+r(t[s],s,t)}}return"function"!=typeof e&&(e=Oa(null==e?0:+e)),s.initialize=function(e){t=e,o()},s.strength=function(e){return arguments.length?(r="function"==typeof e?e:Oa(+e),o(),s):r},s.y=function(t){return arguments.length?(e="function"==typeof t?t:Oa(+t),o(),s):e},s}function nl(e,t){if((i=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var i,n=e.slice(0,i);return[n.length>1?n[0]+n.slice(2):n,+e.slice(i+1)]}function rl(e){return(e=nl(Math.abs(e)))?e[1]:NaN}var sl,ol=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function al(e){if(!(t=ol.exec(e)))throw new Error("invalid format: "+e);var t;return new ll({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function ll(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function cl(e,t){var i=nl(e,t);if(!i)return e+"";var n=i[0],r=i[1];return r<0?"0."+new Array(-r).join("0")+n:n.length>r+1?n.slice(0,r+1)+"."+n.slice(r+1):n+new Array(r-n.length+2).join("0")}al.prototype=ll.prototype,ll.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const dl={"%":function(e,t){return(100*e).toFixed(t)},b:function(e){return Math.round(e).toString(2)},c:function(e){return e+""},d:function(e){return Math.round(e).toString(10)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},g:function(e,t){return e.toPrecision(t)},o:function(e){return Math.round(e).toString(8)},p:function(e,t){return cl(100*e,t)},r:cl,s:function(e,t){var i=nl(e,t);if(!i)return e+"";var n=i[0],r=i[1],s=r-(sl=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,o=n.length;return s===o?n:s>o?n+new Array(s-o+1).join("0"):s>0?n.slice(0,s)+"."+n.slice(s):"0."+new Array(1-s).join("0")+nl(e,Math.max(0,t+s-1))[0]},X:function(e){return Math.round(e).toString(16).toUpperCase()},x:function(e){return Math.round(e).toString(16)}};function hl(e){return e}var ul,gl,fl,pl=Array.prototype.map,ml=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function _l(e){var t,i,n=void 0===e.grouping||void 0===e.thousands?hl:(t=pl.call(e.grouping,Number),i=e.thousands+"",function(e,n){for(var r=e.length,s=[],o=0,a=t[0],l=0;r>0&&a>0&&(l+a+1>n&&(a=Math.max(1,n-l)),s.push(e.substring(r-=a,r+a)),!((l+=a+1)>n));)a=t[o=(o+1)%t.length];return s.reverse().join(i)}),r=void 0===e.currency?"":e.currency[0]+"",s=void 0===e.currency?"":e.currency[1]+"",o=void 0===e.decimal?".":e.decimal+"",a=void 0===e.numerals?hl:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(pl.call(e.numerals,String)),l=void 0===e.percent?"%":e.percent+"",c=void 0===e.minus?"-":e.minus+"",d=void 0===e.nan?"NaN":e.nan+"";function h(e){var t=(e=al(e)).fill,i=e.align,h=e.sign,u=e.symbol,g=e.zero,f=e.width,p=e.comma,m=e.precision,_=e.trim,b=e.type;"n"===b?(p=!0,b="g"):dl[b]||(void 0===m&&(m=12),_=!0,b="g"),(g||"0"===t&&"="===i)&&(g=!0,t="0",i="=");var v="$"===u?r:"#"===u&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",y="$"===u?s:/[%p]/.test(b)?l:"",w=dl[b],C=/[defgprs%]/.test(b);function S(e){var r,s,l,u=v,S=y;if("c"===b)S=w(e)+S,e="";else{var k=(e=+e)<0;if(e=isNaN(e)?d:w(Math.abs(e),m),_&&(e=function(e){e:for(var t,i=e.length,n=1,r=-1;n<i;++n)switch(e[n]){case".":r=t=n;break;case"0":0===r&&(r=n),t=n;break;default:if(r>0){if(!+e[n])break e;r=0}}return r>0?e.slice(0,r)+e.slice(t+1):e}(e)),k&&0==+e&&(k=!1),u=(k?"("===h?h:c:"-"===h||"("===h?"":h)+u,S=("s"===b?ml[8+sl/3]:"")+S+(k&&"("===h?")":""),C)for(r=-1,s=e.length;++r<s;)if(48>(l=e.charCodeAt(r))||l>57){S=(46===l?o+e.slice(r+1):e.slice(r))+S,e=e.slice(0,r);break}}p&&!g&&(e=n(e,1/0));var x=u.length+e.length+S.length,L=x<f?new Array(f-x+1).join(t):"";switch(p&&g&&(e=n(L+e,L.length?f-S.length:1/0),L=""),i){case"<":e=u+e+S+L;break;case"=":e=u+L+e+S;break;case"^":e=L.slice(0,x=L.length>>1)+u+e+S+L.slice(x);break;default:e=L+u+e+S}return a(e)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),S.toString=function(){return e+""},S}return{format:h,formatPrefix:function(e,t){var i=h(((e=al(e)).type="f",e)),n=3*Math.max(-8,Math.min(8,Math.floor(rl(t)/3))),r=Math.pow(10,-n),s=ml[8+n/3];return function(e){return i(r*e)+s}}}}function bl(e){return ul=_l(e),gl=ul.format,fl=ul.formatPrefix,ul}function vl(e){return Math.max(0,-rl(Math.abs(e)))}function yl(e,t){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(rl(t)/3)))-rl(Math.abs(e)))}function wl(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,rl(t)-rl(e))+1}function Cl(){return new Sl}function Sl(){this.reset()}bl({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),Sl.prototype={constructor:Sl,reset:function(){this.s=this.t=0},add:function(e){xl(kl,e,this.t),xl(this,kl.s,this.s),this.s?this.t+=kl.t:this.s=kl.t},valueOf:function(){return this.s}};var kl=new Sl;function xl(e,t,i){var n=e.s=t+i,r=n-t,s=n-r;e.t=t-s+(i-r)}var Ll=1e-6,Ml=1e-12,Dl=Math.PI,Nl=Dl/2,El=Dl/4,Tl=2*Dl,Il=180/Dl,Ol=Dl/180,Al=Math.abs,Rl=Math.atan,Pl=Math.atan2,Fl=Math.cos,Bl=Math.ceil,Wl=Math.exp,Yl=(Math.floor,Math.log),Hl=Math.pow,jl=Math.sin,Vl=Math.sign||function(e){return e>0?1:e<0?-1:0},zl=Math.sqrt,Ul=Math.tan;function $l(e){return e>1?0:e<-1?Dl:Math.acos(e)}function Kl(e){return e>1?Nl:e<-1?-Nl:Math.asin(e)}function ql(e){return(e=jl(e/2))*e}function Gl(){}function Zl(e,t){e&&Ql.hasOwnProperty(e.type)&&Ql[e.type](e,t)}var Jl={Feature:function(e,t){Zl(e.geometry,t)},FeatureCollection:function(e,t){for(var i=e.features,n=-1,r=i.length;++n<r;)Zl(i[n].geometry,t)}},Ql={Sphere:function(e,t){t.sphere()},Point:function(e,t){e=e.coordinates,t.point(e[0],e[1],e[2])},MultiPoint:function(e,t){for(var i=e.coordinates,n=-1,r=i.length;++n<r;)e=i[n],t.point(e[0],e[1],e[2])},LineString:function(e,t){Xl(e.coordinates,t,0)},MultiLineString:function(e,t){for(var i=e.coordinates,n=-1,r=i.length;++n<r;)Xl(i[n],t,0)},Polygon:function(e,t){ec(e.coordinates,t)},MultiPolygon:function(e,t){for(var i=e.coordinates,n=-1,r=i.length;++n<r;)ec(i[n],t)},GeometryCollection:function(e,t){for(var i=e.geometries,n=-1,r=i.length;++n<r;)Zl(i[n],t)}};function Xl(e,t,i){var n,r=-1,s=e.length-i;for(t.lineStart();++r<s;)n=e[r],t.point(n[0],n[1],n[2]);t.lineEnd()}function ec(e,t){var i=-1,n=e.length;for(t.polygonStart();++i<n;)Xl(e[i],t,1);t.polygonEnd()}function tc(e,t){e&&Jl.hasOwnProperty(e.type)?Jl[e.type](e,t):Zl(e,t)}var ic,nc,rc,sc,oc,ac=Cl(),lc=Cl(),cc={point:Gl,lineStart:Gl,lineEnd:Gl,polygonStart:function(){ac.reset(),cc.lineStart=dc,cc.lineEnd=hc},polygonEnd:function(){var e=+ac;lc.add(e<0?Tl+e:e),this.lineStart=this.lineEnd=this.point=Gl},sphere:function(){lc.add(Tl)}};function dc(){cc.point=uc}function hc(){gc(ic,nc)}function uc(e,t){cc.point=gc,ic=e,nc=t,rc=e*=Ol,sc=Fl(t=(t*=Ol)/2+El),oc=jl(t)}function gc(e,t){var i=(e*=Ol)-rc,n=i>=0?1:-1,r=n*i,s=Fl(t=(t*=Ol)/2+El),o=jl(t),a=oc*o,l=sc*s+a*Fl(r),c=a*n*jl(r);ac.add(Pl(c,l)),rc=e,sc=s,oc=o}function fc(e){return lc.reset(),tc(e,cc),2*lc}function pc(e){return[Pl(e[1],e[0]),Kl(e[2])]}function mc(e){var t=e[0],i=e[1],n=Fl(i);return[n*Fl(t),n*jl(t),jl(i)]}function _c(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function bc(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function vc(e,t){e[0]+=t[0],e[1]+=t[1],e[2]+=t[2]}function yc(e,t){return[e[0]*t,e[1]*t,e[2]*t]}function wc(e){var t=zl(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]);e[0]/=t,e[1]/=t,e[2]/=t}var Cc,Sc,kc,xc,Lc,Mc,Dc,Nc,Ec,Tc,Ic,Oc,Ac,Rc,Pc,Fc,Bc,Wc,Yc,Hc,jc,Vc,zc,Uc,$c,Kc,qc=Cl(),Gc={point:Zc,lineStart:Qc,lineEnd:Xc,polygonStart:function(){Gc.point=ed,Gc.lineStart=td,Gc.lineEnd=id,qc.reset(),cc.polygonStart()},polygonEnd:function(){cc.polygonEnd(),Gc.point=Zc,Gc.lineStart=Qc,Gc.lineEnd=Xc,ac<0?(Cc=-(kc=180),Sc=-(xc=90)):qc>Ll?xc=90:qc<-1e-6&&(Sc=-90),Tc[0]=Cc,Tc[1]=kc},sphere:function(){Cc=-(kc=180),Sc=-(xc=90)}};function Zc(e,t){Ec.push(Tc=[Cc=e,kc=e]),t<Sc&&(Sc=t),t>xc&&(xc=t)}function Jc(e,t){var i=mc([e*Ol,t*Ol]);if(Nc){var n=bc(Nc,i),r=bc([n[1],-n[0],0],n);wc(r),r=pc(r);var s,o=e-Lc,a=o>0?1:-1,l=r[0]*Il*a,c=Al(o)>180;c^(a*Lc<l&&l<a*e)?(s=r[1]*Il)>xc&&(xc=s):c^(a*Lc<(l=(l+360)%360-180)&&l<a*e)?(s=-r[1]*Il)<Sc&&(Sc=s):(t<Sc&&(Sc=t),t>xc&&(xc=t)),c?e<Lc?nd(Cc,e)>nd(Cc,kc)&&(kc=e):nd(e,kc)>nd(Cc,kc)&&(Cc=e):kc>=Cc?(e<Cc&&(Cc=e),e>kc&&(kc=e)):e>Lc?nd(Cc,e)>nd(Cc,kc)&&(kc=e):nd(e,kc)>nd(Cc,kc)&&(Cc=e)}else Ec.push(Tc=[Cc=e,kc=e]);t<Sc&&(Sc=t),t>xc&&(xc=t),Nc=i,Lc=e}function Qc(){Gc.point=Jc}function Xc(){Tc[0]=Cc,Tc[1]=kc,Gc.point=Zc,Nc=null}function ed(e,t){if(Nc){var i=e-Lc;qc.add(Al(i)>180?i+(i>0?360:-360):i)}else Mc=e,Dc=t;cc.point(e,t),Jc(e,t)}function td(){cc.lineStart()}function id(){ed(Mc,Dc),cc.lineEnd(),Al(qc)>Ll&&(Cc=-(kc=180)),Tc[0]=Cc,Tc[1]=kc,Nc=null}function nd(e,t){return(t-=e)<0?t+360:t}function rd(e,t){return e[0]-t[0]}function sd(e,t){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:t<e[0]||e[1]<t}function od(e){var t,i,n,r,s,o,a;if(xc=kc=-(Cc=Sc=1/0),Ec=[],tc(e,Gc),i=Ec.length){for(Ec.sort(rd),t=1,s=[n=Ec[0]];t<i;++t)sd(n,(r=Ec[t])[0])||sd(n,r[1])?(nd(n[0],r[1])>nd(n[0],n[1])&&(n[1]=r[1]),nd(r[0],n[1])>nd(n[0],n[1])&&(n[0]=r[0])):s.push(n=r);for(o=-1/0,t=0,n=s[i=s.length-1];t<=i;n=r,++t)r=s[t],(a=nd(n[1],r[0]))>o&&(o=a,Cc=r[0],kc=n[1])}return Ec=Tc=null,Cc===1/0||Sc===1/0?[[NaN,NaN],[NaN,NaN]]:[[Cc,Sc],[kc,xc]]}var ad={sphere:Gl,point:ld,lineStart:dd,lineEnd:gd,polygonStart:function(){ad.lineStart=fd,ad.lineEnd=pd},polygonEnd:function(){ad.lineStart=dd,ad.lineEnd=gd}};function ld(e,t){e*=Ol;var i=Fl(t*=Ol);cd(i*Fl(e),i*jl(e),jl(t))}function cd(e,t,i){++Ic,Ac+=(e-Ac)/Ic,Rc+=(t-Rc)/Ic,Pc+=(i-Pc)/Ic}function dd(){ad.point=hd}function hd(e,t){e*=Ol;var i=Fl(t*=Ol);Uc=i*Fl(e),$c=i*jl(e),Kc=jl(t),ad.point=ud,cd(Uc,$c,Kc)}function ud(e,t){e*=Ol;var i=Fl(t*=Ol),n=i*Fl(e),r=i*jl(e),s=jl(t),o=Pl(zl((o=$c*s-Kc*r)*o+(o=Kc*n-Uc*s)*o+(o=Uc*r-$c*n)*o),Uc*n+$c*r+Kc*s);Oc+=o,Fc+=o*(Uc+(Uc=n)),Bc+=o*($c+($c=r)),Wc+=o*(Kc+(Kc=s)),cd(Uc,$c,Kc)}function gd(){ad.point=ld}function fd(){ad.point=md}function pd(){_d(Vc,zc),ad.point=ld}function md(e,t){Vc=e,zc=t,e*=Ol,t*=Ol,ad.point=_d;var i=Fl(t);Uc=i*Fl(e),$c=i*jl(e),Kc=jl(t),cd(Uc,$c,Kc)}function _d(e,t){e*=Ol;var i=Fl(t*=Ol),n=i*Fl(e),r=i*jl(e),s=jl(t),o=$c*s-Kc*r,a=Kc*n-Uc*s,l=Uc*r-$c*n,c=zl(o*o+a*a+l*l),d=Kl(c),h=c&&-d/c;Yc+=h*o,Hc+=h*a,jc+=h*l,Oc+=d,Fc+=d*(Uc+(Uc=n)),Bc+=d*($c+($c=r)),Wc+=d*(Kc+(Kc=s)),cd(Uc,$c,Kc)}function bd(e){Ic=Oc=Ac=Rc=Pc=Fc=Bc=Wc=Yc=Hc=jc=0,tc(e,ad);var t=Yc,i=Hc,n=jc,r=t*t+i*i+n*n;return r<Ml&&(t=Fc,i=Bc,n=Wc,Oc<Ll&&(t=Ac,i=Rc,n=Pc),(r=t*t+i*i+n*n)<Ml)?[NaN,NaN]:[Pl(i,t)*Il,Kl(n/zl(r))*Il]}function vd(e){return function(){return e}}function yd(e,t){function i(i,n){return i=e(i,n),t(i[0],i[1])}return e.invert&&t.invert&&(i.invert=function(i,n){return(i=t.invert(i,n))&&e.invert(i[0],i[1])}),i}function wd(e,t){return[Al(e)>Dl?e+Math.round(-e/Tl)*Tl:e,t]}function Cd(e,t,i){return(e%=Tl)?t||i?yd(kd(e),xd(t,i)):kd(e):t||i?xd(t,i):wd}function Sd(e){return function(t,i){return[(t+=e)>Dl?t-Tl:t<-Dl?t+Tl:t,i]}}function kd(e){var t=Sd(e);return t.invert=Sd(-e),t}function xd(e,t){var i=Fl(e),n=jl(e),r=Fl(t),s=jl(t);function o(e,t){var o=Fl(t),a=Fl(e)*o,l=jl(e)*o,c=jl(t),d=c*i+a*n;return[Pl(l*r-d*s,a*i-c*n),Kl(d*r+l*s)]}return o.invert=function(e,t){var o=Fl(t),a=Fl(e)*o,l=jl(e)*o,c=jl(t),d=c*r-l*s;return[Pl(l*r+c*s,a*i+d*n),Kl(d*i-a*n)]},o}function Ld(e){function t(t){return(t=e(t[0]*Ol,t[1]*Ol))[0]*=Il,t[1]*=Il,t}return e=Cd(e[0]*Ol,e[1]*Ol,e.length>2?e[2]*Ol:0),t.invert=function(t){return(t=e.invert(t[0]*Ol,t[1]*Ol))[0]*=Il,t[1]*=Il,t},t}function Md(e,t,i,n,r,s){if(i){var o=Fl(t),a=jl(t),l=n*i;null==r?(r=t+n*Tl,s=t-l/2):(r=Dd(o,r),s=Dd(o,s),(n>0?r<s:r>s)&&(r+=n*Tl));for(var c,d=r;n>0?d>s:d<s;d-=l)c=pc([o,-a*Fl(d),-a*jl(d)]),e.point(c[0],c[1])}}function Dd(e,t){(t=mc(t))[0]-=e,wc(t);var i=$l(-t[1]);return((-t[2]<0?-i:i)+Tl-Ll)%Tl}function Nd(){var e,t,i=vd([0,0]),n=vd(90),r=vd(6),s={point:function(i,n){e.push(i=t(i,n)),i[0]*=Il,i[1]*=Il}};function o(){var o=i.apply(this,arguments),a=n.apply(this,arguments)*Ol,l=r.apply(this,arguments)*Ol;return e=[],t=Cd(-o[0]*Ol,-o[1]*Ol,0).invert,Md(s,a,l,1),o={type:"Polygon",coordinates:[e]},e=t=null,o}return o.center=function(e){return arguments.length?(i="function"==typeof e?e:vd([+e[0],+e[1]]),o):i},o.radius=function(e){return arguments.length?(n="function"==typeof e?e:vd(+e),o):n},o.precision=function(e){return arguments.length?(r="function"==typeof e?e:vd(+e),o):r},o}function Ed(){var e,t=[];return{point:function(t,i){e.push([t,i])},lineStart:function(){t.push(e=[])},lineEnd:Gl,rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))},result:function(){var i=t;return t=[],e=null,i}}}function Td(e,t){return Al(e[0]-t[0])<Ll&&Al(e[1]-t[1])<Ll}function Id(e,t,i,n){this.x=e,this.z=t,this.o=i,this.e=n,this.v=!1,this.n=this.p=null}function Od(e,t,i,n,r){var s,o,a=[],l=[];if(e.forEach((function(e){if(!((t=e.length-1)<=0)){var t,i,n=e[0],o=e[t];if(Td(n,o)){for(r.lineStart(),s=0;s<t;++s)r.point((n=e[s])[0],n[1]);r.lineEnd()}else a.push(i=new Id(n,e,null,!0)),l.push(i.o=new Id(n,null,i,!1)),a.push(i=new Id(o,e,null,!1)),l.push(i.o=new Id(o,null,i,!0))}})),a.length){for(l.sort(t),Ad(a),Ad(l),s=0,o=l.length;s<o;++s)l[s].e=i=!i;for(var c,d,h=a[0];;){for(var u=h,g=!0;u.v;)if((u=u.n)===h)return;c=u.z,r.lineStart();do{if(u.v=u.o.v=!0,u.e){if(g)for(s=0,o=c.length;s<o;++s)r.point((d=c[s])[0],d[1]);else n(u.x,u.n.x,1,r);u=u.n}else{if(g)for(c=u.p.z,s=c.length-1;s>=0;--s)r.point((d=c[s])[0],d[1]);else n(u.x,u.p.x,-1,r);u=u.p}c=(u=u.o).z,g=!g}while(!u.v);r.lineEnd()}}}function Ad(e){if(t=e.length){for(var t,i,n=0,r=e[0];++n<t;)r.n=i=e[n],i.p=r,r=i;r.n=i=e[0],i.p=r}}wd.invert=wd;var Rd=Cl();function Pd(e){return Al(e[0])<=Dl?e[0]:Vl(e[0])*((Al(e[0])+Dl)%Tl-Dl)}function Fd(e,t){var i=Pd(t),n=t[1],r=jl(n),s=[jl(i),-Fl(i),0],o=0,a=0;Rd.reset(),1===r?n=Nl+Ll:-1===r&&(n=-Nl-Ll);for(var l=0,c=e.length;l<c;++l)if(h=(d=e[l]).length)for(var d,h,u=d[h-1],g=Pd(u),f=u[1]/2+El,p=jl(f),m=Fl(f),_=0;_<h;++_,g=v,p=w,m=C,u=b){var b=d[_],v=Pd(b),y=b[1]/2+El,w=jl(y),C=Fl(y),S=v-g,k=S>=0?1:-1,x=k*S,L=x>Dl,M=p*w;if(Rd.add(Pl(M*k*jl(x),m*C+M*Fl(x))),o+=L?S+k*Tl:S,L^g>=i^v>=i){var D=bc(mc(u),mc(b));wc(D);var N=bc(s,D);wc(N);var E=(L^S>=0?-1:1)*Kl(N[2]);(n>E||n===E&&(D[0]||D[1]))&&(a+=L^S>=0?1:-1)}}return(o<-1e-6||o<Ll&&Rd<-1e-6)^1&a}function Bd(e,t,i,n){return function(r){var s,o,a,l=t(r),c=Ed(),d=t(c),h=!1,u={point:g,lineStart:p,lineEnd:m,polygonStart:function(){u.point=_,u.lineStart=b,u.lineEnd=v,o=[],s=[]},polygonEnd:function(){u.point=g,u.lineStart=p,u.lineEnd=m,o=B(o);var e=Fd(s,n);o.length?(h||(r.polygonStart(),h=!0),Od(o,Yd,e,i,r)):e&&(h||(r.polygonStart(),h=!0),r.lineStart(),i(null,null,1,r),r.lineEnd()),h&&(r.polygonEnd(),h=!1),o=s=null},sphere:function(){r.polygonStart(),r.lineStart(),i(null,null,1,r),r.lineEnd(),r.polygonEnd()}};function g(t,i){e(t,i)&&r.point(t,i)}function f(e,t){l.point(e,t)}function p(){u.point=f,l.lineStart()}function m(){u.point=g,l.lineEnd()}function _(e,t){a.push([e,t]),d.point(e,t)}function b(){d.lineStart(),a=[]}function v(){_(a[0][0],a[0][1]),d.lineEnd();var e,t,i,n,l=d.clean(),u=c.result(),g=u.length;if(a.pop(),s.push(a),a=null,g)if(1&l){if((t=(i=u[0]).length-1)>0){for(h||(r.polygonStart(),h=!0),r.lineStart(),e=0;e<t;++e)r.point((n=i[e])[0],n[1]);r.lineEnd()}}else g>1&&2&l&&u.push(u.pop().concat(u.shift())),o.push(u.filter(Wd))}return u}}function Wd(e){return e.length>1}function Yd(e,t){return((e=e.x)[0]<0?e[1]-Nl-Ll:Nl-e[1])-((t=t.x)[0]<0?t[1]-Nl-Ll:Nl-t[1])}const Hd=Bd((function(){return!0}),(function(e){var t,i=NaN,n=NaN,r=NaN;return{lineStart:function(){e.lineStart(),t=1},point:function(s,o){var a=s>0?Dl:-Dl,l=Al(s-i);Al(l-Dl)<Ll?(e.point(i,n=(n+o)/2>0?Nl:-Nl),e.point(r,n),e.lineEnd(),e.lineStart(),e.point(a,n),e.point(s,n),t=0):r!==a&&l>=Dl&&(Al(i-r)<Ll&&(i-=r*Ll),Al(s-a)<Ll&&(s-=a*Ll),n=function(e,t,i,n){var r,s,o=jl(e-i);return Al(o)>Ll?Rl((jl(t)*(s=Fl(n))*jl(i)-jl(n)*(r=Fl(t))*jl(e))/(r*s*o)):(t+n)/2}(i,n,s,o),e.point(r,n),e.lineEnd(),e.lineStart(),e.point(a,n),t=0),e.point(i=s,n=o),r=a},lineEnd:function(){e.lineEnd(),i=n=NaN},clean:function(){return 2-t}}}),(function(e,t,i,n){var r;if(null==e)r=i*Nl,n.point(-Dl,r),n.point(0,r),n.point(Dl,r),n.point(Dl,0),n.point(Dl,-r),n.point(0,-r),n.point(-Dl,-r),n.point(-Dl,0),n.point(-Dl,r);else if(Al(e[0]-t[0])>Ll){var s=e[0]<t[0]?Dl:-Dl;r=i*s/2,n.point(-s,r),n.point(0,r),n.point(s,r)}else n.point(t[0],t[1])}),[-Dl,-Nl]);function jd(e){var t=Fl(e),i=6*Ol,n=t>0,r=Al(t)>Ll;function s(e,i){return Fl(e)*Fl(i)>t}function o(e,i,n){var r=[1,0,0],s=bc(mc(e),mc(i)),o=_c(s,s),a=s[0],l=o-a*a;if(!l)return!n&&e;var c=t*o/l,d=-t*a/l,h=bc(r,s),u=yc(r,c);vc(u,yc(s,d));var g=h,f=_c(u,g),p=_c(g,g),m=f*f-p*(_c(u,u)-1);if(!(m<0)){var _=zl(m),b=yc(g,(-f-_)/p);if(vc(b,u),b=pc(b),!n)return b;var v,y=e[0],w=i[0],C=e[1],S=i[1];w<y&&(v=y,y=w,w=v);var k=w-y,x=Al(k-Dl)<Ll;if(!x&&S<C&&(v=C,C=S,S=v),x||k<Ll?x?C+S>0^b[1]<(Al(b[0]-y)<Ll?C:S):C<=b[1]&&b[1]<=S:k>Dl^(y<=b[0]&&b[0]<=w)){var L=yc(g,(-f+_)/p);return vc(L,u),[b,pc(L)]}}}function a(t,i){var r=n?e:Dl-e,s=0;return t<-r?s|=1:t>r&&(s|=2),i<-r?s|=4:i>r&&(s|=8),s}return Bd(s,(function(e){var t,i,l,c,d;return{lineStart:function(){c=l=!1,d=1},point:function(h,u){var g,f=[h,u],p=s(h,u),m=n?p?0:a(h,u):p?a(h+(h<0?Dl:-Dl),u):0;if(!t&&(c=l=p)&&e.lineStart(),p!==l&&(!(g=o(t,f))||Td(t,g)||Td(f,g))&&(f[0]+=Ll,f[1]+=Ll,p=s(f[0],f[1])),p!==l)d=0,p?(e.lineStart(),g=o(f,t),e.point(g[0],g[1])):(g=o(t,f),e.point(g[0],g[1]),e.lineEnd()),t=g;else if(r&&t&&n^p){var _;m&i||!(_=o(f,t,!0))||(d=0,n?(e.lineStart(),e.point(_[0][0],_[0][1]),e.point(_[1][0],_[1][1]),e.lineEnd()):(e.point(_[1][0],_[1][1]),e.lineEnd(),e.lineStart(),e.point(_[0][0],_[0][1])))}!p||t&&Td(t,f)||e.point(f[0],f[1]),t=f,l=p,i=m},lineEnd:function(){l&&e.lineEnd(),t=null},clean:function(){return d|(c&&l)<<1}}}),(function(t,n,r,s){Md(s,e,i,r,t,n)}),n?[0,-e]:[-Dl,e-Dl])}var Vd=1e9,zd=-Vd;function Ud(e,t,i,n){function r(r,s){return e<=r&&r<=i&&t<=s&&s<=n}function s(r,s,a,c){var d=0,h=0;if(null==r||(d=o(r,a))!==(h=o(s,a))||l(r,s)<0^a>0)do{c.point(0===d||3===d?e:i,d>1?n:t)}while((d=(d+a+4)%4)!==h);else c.point(s[0],s[1])}function o(n,r){return Al(n[0]-e)<Ll?r>0?0:3:Al(n[0]-i)<Ll?r>0?2:1:Al(n[1]-t)<Ll?r>0?1:0:r>0?3:2}function a(e,t){return l(e.x,t.x)}function l(e,t){var i=o(e,1),n=o(t,1);return i!==n?i-n:0===i?t[1]-e[1]:1===i?e[0]-t[0]:2===i?e[1]-t[1]:t[0]-e[0]}return function(o){var l,c,d,h,u,g,f,p,m,_,b,v=o,y=Ed(),w={point:C,lineStart:function(){w.point=S,c&&c.push(d=[]),_=!0,m=!1,f=p=NaN},lineEnd:function(){l&&(S(h,u),g&&m&&y.rejoin(),l.push(y.result())),w.point=C,m&&v.lineEnd()},polygonStart:function(){v=y,l=[],c=[],b=!0},polygonEnd:function(){var t=function(){for(var t=0,i=0,r=c.length;i<r;++i)for(var s,o,a=c[i],l=1,d=a.length,h=a[0],u=h[0],g=h[1];l<d;++l)s=u,o=g,u=(h=a[l])[0],g=h[1],o<=n?g>n&&(u-s)*(n-o)>(g-o)*(e-s)&&++t:g<=n&&(u-s)*(n-o)<(g-o)*(e-s)&&--t;return t}(),i=b&&t,r=(l=B(l)).length;(i||r)&&(o.polygonStart(),i&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),r&&Od(l,a,t,s,o),o.polygonEnd()),v=o,l=c=d=null}};function C(e,t){r(e,t)&&v.point(e,t)}function S(s,o){var a=r(s,o);if(c&&d.push([s,o]),_)h=s,u=o,g=a,_=!1,a&&(v.lineStart(),v.point(s,o));else if(a&&m)v.point(s,o);else{var l=[f=Math.max(zd,Math.min(Vd,f)),p=Math.max(zd,Math.min(Vd,p))],y=[s=Math.max(zd,Math.min(Vd,s)),o=Math.max(zd,Math.min(Vd,o))];!function(e,t,i,n,r,s){var o,a=e[0],l=e[1],c=0,d=1,h=t[0]-a,u=t[1]-l;if(o=i-a,h||!(o>0)){if(o/=h,h<0){if(o<c)return;o<d&&(d=o)}else if(h>0){if(o>d)return;o>c&&(c=o)}if(o=r-a,h||!(o<0)){if(o/=h,h<0){if(o>d)return;o>c&&(c=o)}else if(h>0){if(o<c)return;o<d&&(d=o)}if(o=n-l,u||!(o>0)){if(o/=u,u<0){if(o<c)return;o<d&&(d=o)}else if(u>0){if(o>d)return;o>c&&(c=o)}if(o=s-l,u||!(o<0)){if(o/=u,u<0){if(o>d)return;o>c&&(c=o)}else if(u>0){if(o<c)return;o<d&&(d=o)}return c>0&&(e[0]=a+c*h,e[1]=l+c*u),d<1&&(t[0]=a+d*h,t[1]=l+d*u),!0}}}}}(l,y,e,t,i,n)?a&&(v.lineStart(),v.point(s,o),b=!1):(m||(v.lineStart(),v.point(l[0],l[1])),v.point(y[0],y[1]),a||v.lineEnd(),b=!1)}f=s,p=o,m=a}return w}}function $d(){var e,t,i,n=0,r=0,s=960,o=500;return i={stream:function(i){return e&&t===i?e:e=Ud(n,r,s,o)(t=i)},extent:function(a){return arguments.length?(n=+a[0][0],r=+a[0][1],s=+a[1][0],o=+a[1][1],e=t=null,i):[[n,r],[s,o]]}}}var Kd,qd,Gd,Zd=Cl(),Jd={sphere:Gl,point:Gl,lineStart:function(){Jd.point=Xd,Jd.lineEnd=Qd},lineEnd:Gl,polygonStart:Gl,polygonEnd:Gl};function Qd(){Jd.point=Jd.lineEnd=Gl}function Xd(e,t){Kd=e*=Ol,qd=jl(t*=Ol),Gd=Fl(t),Jd.point=eh}function eh(e,t){e*=Ol;var i=jl(t*=Ol),n=Fl(t),r=Al(e-Kd),s=Fl(r),o=n*jl(r),a=Gd*i-qd*n*s,l=qd*i+Gd*n*s;Zd.add(Pl(zl(o*o+a*a),l)),Kd=e,qd=i,Gd=n}function th(e){return Zd.reset(),tc(e,Jd),+Zd}var ih=[null,null],nh={type:"LineString",coordinates:ih};function rh(e,t){return ih[0]=e,ih[1]=t,th(nh)}var sh={Feature:function(e,t){return ah(e.geometry,t)},FeatureCollection:function(e,t){for(var i=e.features,n=-1,r=i.length;++n<r;)if(ah(i[n].geometry,t))return!0;return!1}},oh={Sphere:function(){return!0},Point:function(e,t){return lh(e.coordinates,t)},MultiPoint:function(e,t){for(var i=e.coordinates,n=-1,r=i.length;++n<r;)if(lh(i[n],t))return!0;return!1},LineString:function(e,t){return ch(e.coordinates,t)},MultiLineString:function(e,t){for(var i=e.coordinates,n=-1,r=i.length;++n<r;)if(ch(i[n],t))return!0;return!1},Polygon:function(e,t){return dh(e.coordinates,t)},MultiPolygon:function(e,t){for(var i=e.coordinates,n=-1,r=i.length;++n<r;)if(dh(i[n],t))return!0;return!1},GeometryCollection:function(e,t){for(var i=e.geometries,n=-1,r=i.length;++n<r;)if(ah(i[n],t))return!0;return!1}};function ah(e,t){return!(!e||!oh.hasOwnProperty(e.type))&&oh[e.type](e,t)}function lh(e,t){return 0===rh(e,t)}function ch(e,t){for(var i,n,r,s=0,o=e.length;s<o;s++){if(0===(n=rh(e[s],t)))return!0;if(s>0&&(r=rh(e[s],e[s-1]))>0&&i<=r&&n<=r&&(i+n-r)*(1-Math.pow((i-n)/r,2))<Ml*r)return!0;i=n}return!1}function dh(e,t){return!!Fd(e.map(hh),uh(t))}function hh(e){return(e=e.map(uh)).pop(),e}function uh(e){return[e[0]*Ol,e[1]*Ol]}function gh(e,t){return(e&&sh.hasOwnProperty(e.type)?sh[e.type]:ah)(e,t)}function fh(e,t,i){var n=S(e,t-Ll,i).concat(t);return function(e){return n.map((function(t){return[e,t]}))}}function ph(e,t,i){var n=S(e,t-Ll,i).concat(t);return function(e){return n.map((function(t){return[t,e]}))}}function mh(){var e,t,i,n,r,s,o,a,l,c,d,h,u=10,g=u,f=90,p=360,m=2.5;function _(){return{type:"MultiLineString",coordinates:b()}}function b(){return S(Bl(n/f)*f,i,f).map(d).concat(S(Bl(a/p)*p,o,p).map(h)).concat(S(Bl(t/u)*u,e,u).filter((function(e){return Al(e%f)>Ll})).map(l)).concat(S(Bl(s/g)*g,r,g).filter((function(e){return Al(e%p)>Ll})).map(c))}return _.lines=function(){return b().map((function(e){return{type:"LineString",coordinates:e}}))},_.outline=function(){return{type:"Polygon",coordinates:[d(n).concat(h(o).slice(1),d(i).reverse().slice(1),h(a).reverse().slice(1))]}},_.extent=function(e){return arguments.length?_.extentMajor(e).extentMinor(e):_.extentMinor()},_.extentMajor=function(e){return arguments.length?(n=+e[0][0],i=+e[1][0],a=+e[0][1],o=+e[1][1],n>i&&(e=n,n=i,i=e),a>o&&(e=a,a=o,o=e),_.precision(m)):[[n,a],[i,o]]},_.extentMinor=function(i){return arguments.length?(t=+i[0][0],e=+i[1][0],s=+i[0][1],r=+i[1][1],t>e&&(i=t,t=e,e=i),s>r&&(i=s,s=r,r=i),_.precision(m)):[[t,s],[e,r]]},_.step=function(e){return arguments.length?_.stepMajor(e).stepMinor(e):_.stepMinor()},_.stepMajor=function(e){return arguments.length?(f=+e[0],p=+e[1],_):[f,p]},_.stepMinor=function(e){return arguments.length?(u=+e[0],g=+e[1],_):[u,g]},_.precision=function(u){return arguments.length?(m=+u,l=fh(s,r,90),c=ph(t,e,m),d=fh(a,o,90),h=ph(n,i,m),_):m},_.extentMajor([[-180,-89.999999],[180,89.999999]]).extentMinor([[-180,-80.000001],[180,80.000001]])}function _h(){return mh()()}function bh(e,t){var i=e[0]*Ol,n=e[1]*Ol,r=t[0]*Ol,s=t[1]*Ol,o=Fl(n),a=jl(n),l=Fl(s),c=jl(s),d=o*Fl(i),h=o*jl(i),u=l*Fl(r),g=l*jl(r),f=2*Kl(zl(ql(s-n)+o*l*ql(r-i))),p=jl(f),m=f?function(e){var t=jl(e*=f)/p,i=jl(f-e)/p,n=i*d+t*u,r=i*h+t*g,s=i*a+t*c;return[Pl(r,n)*Il,Pl(s,zl(n*n+r*r))*Il]}:function(){return[i*Il,n*Il]};return m.distance=f,m}function vh(e){return e}var yh,wh,Ch,Sh,kh=Cl(),xh=Cl(),Lh={point:Gl,lineStart:Gl,lineEnd:Gl,polygonStart:function(){Lh.lineStart=Mh,Lh.lineEnd=Eh},polygonEnd:function(){Lh.lineStart=Lh.lineEnd=Lh.point=Gl,kh.add(Al(xh)),xh.reset()},result:function(){var e=kh/2;return kh.reset(),e}};function Mh(){Lh.point=Dh}function Dh(e,t){Lh.point=Nh,yh=Ch=e,wh=Sh=t}function Nh(e,t){xh.add(Sh*e-Ch*t),Ch=e,Sh=t}function Eh(){Nh(yh,wh)}const Th=Lh;var Ih=1/0,Oh=Ih,Ah=-Ih,Rh=Ah;const Ph={point:function(e,t){e<Ih&&(Ih=e),e>Ah&&(Ah=e),t<Oh&&(Oh=t),t>Rh&&(Rh=t)},lineStart:Gl,lineEnd:Gl,polygonStart:Gl,polygonEnd:Gl,result:function(){var e=[[Ih,Oh],[Ah,Rh]];return Ah=Rh=-(Oh=Ih=1/0),e}};var Fh,Bh,Wh,Yh,Hh=0,jh=0,Vh=0,zh=0,Uh=0,$h=0,Kh=0,qh=0,Gh=0,Zh={point:Jh,lineStart:Qh,lineEnd:tu,polygonStart:function(){Zh.lineStart=iu,Zh.lineEnd=nu},polygonEnd:function(){Zh.point=Jh,Zh.lineStart=Qh,Zh.lineEnd=tu},result:function(){var e=Gh?[Kh/Gh,qh/Gh]:$h?[zh/$h,Uh/$h]:Vh?[Hh/Vh,jh/Vh]:[NaN,NaN];return Hh=jh=Vh=zh=Uh=$h=Kh=qh=Gh=0,e}};function Jh(e,t){Hh+=e,jh+=t,++Vh}function Qh(){Zh.point=Xh}function Xh(e,t){Zh.point=eu,Jh(Wh=e,Yh=t)}function eu(e,t){var i=e-Wh,n=t-Yh,r=zl(i*i+n*n);zh+=r*(Wh+e)/2,Uh+=r*(Yh+t)/2,$h+=r,Jh(Wh=e,Yh=t)}function tu(){Zh.point=Jh}function iu(){Zh.point=ru}function nu(){su(Fh,Bh)}function ru(e,t){Zh.point=su,Jh(Fh=Wh=e,Bh=Yh=t)}function su(e,t){var i=e-Wh,n=t-Yh,r=zl(i*i+n*n);zh+=r*(Wh+e)/2,Uh+=r*(Yh+t)/2,$h+=r,Kh+=(r=Yh*e-Wh*t)*(Wh+e),qh+=r*(Yh+t),Gh+=3*r,Jh(Wh=e,Yh=t)}const ou=Zh;function au(e){this._context=e}au.prototype={_radius:4.5,pointRadius:function(e){return this._radius=e,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._context.moveTo(e,t),this._point=1;break;case 1:this._context.lineTo(e,t);break;default:this._context.moveTo(e+this._radius,t),this._context.arc(e,t,this._radius,0,Tl)}},result:Gl};var lu,cu,du,hu,uu,gu=Cl(),fu={point:Gl,lineStart:function(){fu.point=pu},lineEnd:function(){lu&&mu(cu,du),fu.point=Gl},polygonStart:function(){lu=!0},polygonEnd:function(){lu=null},result:function(){var e=+gu;return gu.reset(),e}};function pu(e,t){fu.point=mu,cu=hu=e,du=uu=t}function mu(e,t){hu-=e,uu-=t,gu.add(zl(hu*hu+uu*uu)),hu=e,uu=t}const _u=fu;function bu(){this._string=[]}function vu(e){return"m0,"+e+"a"+e+","+e+" 0 1,1 0,"+-2*e+"a"+e+","+e+" 0 1,1 0,"+2*e+"z"}function yu(e,t){var i,n,r=4.5;function s(e){return e&&("function"==typeof r&&n.pointRadius(+r.apply(this,arguments)),tc(e,i(n))),n.result()}return s.area=function(e){return tc(e,i(Th)),Th.result()},s.measure=function(e){return tc(e,i(_u)),_u.result()},s.bounds=function(e){return tc(e,i(Ph)),Ph.result()},s.centroid=function(e){return tc(e,i(ou)),ou.result()},s.projection=function(t){return arguments.length?(i=null==t?(e=null,vh):(e=t).stream,s):e},s.context=function(e){return arguments.length?(n=null==e?(t=null,new bu):new au(t=e),"function"!=typeof r&&n.pointRadius(r),s):t},s.pointRadius=function(e){return arguments.length?(r="function"==typeof e?e:(n.pointRadius(+e),+e),s):r},s.projection(e).context(t)}function wu(e){return{stream:Cu(e)}}function Cu(e){return function(t){var i=new Su;for(var n in e)i[n]=e[n];return i.stream=t,i}}function Su(){}function ku(e,t,i){var n=e.clipExtent&&e.clipExtent();return e.scale(150).translate([0,0]),null!=n&&e.clipExtent(null),tc(i,e.stream(Ph)),t(Ph.result()),null!=n&&e.clipExtent(n),e}function xu(e,t,i){return ku(e,(function(i){var n=t[1][0]-t[0][0],r=t[1][1]-t[0][1],s=Math.min(n/(i[1][0]-i[0][0]),r/(i[1][1]-i[0][1])),o=+t[0][0]+(n-s*(i[1][0]+i[0][0]))/2,a=+t[0][1]+(r-s*(i[1][1]+i[0][1]))/2;e.scale(150*s).translate([o,a])}),i)}function Lu(e,t,i){return xu(e,[[0,0],t],i)}function Mu(e,t,i){return ku(e,(function(i){var n=+t,r=n/(i[1][0]-i[0][0]),s=(n-r*(i[1][0]+i[0][0]))/2,o=-r*i[0][1];e.scale(150*r).translate([s,o])}),i)}function Du(e,t,i){return ku(e,(function(i){var n=+t,r=n/(i[1][1]-i[0][1]),s=-r*i[0][0],o=(n-r*(i[1][1]+i[0][1]))/2;e.scale(150*r).translate([s,o])}),i)}bu.prototype={_radius:4.5,_circle:vu(4.5),pointRadius:function(e){return(e=+e)!==this._radius&&(this._radius=e,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(e,t){switch(this._point){case 0:this._string.push("M",e,",",t),this._point=1;break;case 1:this._string.push("L",e,",",t);break;default:null==this._circle&&(this._circle=vu(this._radius)),this._string.push("M",e,",",t,this._circle)}},result:function(){if(this._string.length){var e=this._string.join("");return this._string=[],e}return null}},Su.prototype={constructor:Su,point:function(e,t){this.stream.point(e,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var Nu=Fl(30*Ol);function Eu(e,t){return+t?function(e,t){function i(n,r,s,o,a,l,c,d,h,u,g,f,p,m){var _=c-n,b=d-r,v=_*_+b*b;if(v>4*t&&p--){var y=o+u,w=a+g,C=l+f,S=zl(y*y+w*w+C*C),k=Kl(C/=S),x=Al(Al(C)-1)<Ll||Al(s-h)<Ll?(s+h)/2:Pl(w,y),L=e(x,k),M=L[0],D=L[1],N=M-n,E=D-r,T=b*N-_*E;(T*T/v>t||Al((_*N+b*E)/v-.5)>.3||o*u+a*g+l*f<Nu)&&(i(n,r,s,o,a,l,M,D,x,y/=S,w/=S,C,p,m),m.point(M,D),i(M,D,x,y,w,C,c,d,h,u,g,f,p,m))}}return function(t){var n,r,s,o,a,l,c,d,h,u,g,f,p={point:m,lineStart:_,lineEnd:v,polygonStart:function(){t.polygonStart(),p.lineStart=y},polygonEnd:function(){t.polygonEnd(),p.lineStart=_}};function m(i,n){i=e(i,n),t.point(i[0],i[1])}function _(){d=NaN,p.point=b,t.lineStart()}function b(n,r){var s=mc([n,r]),o=e(n,r);i(d,h,c,u,g,f,d=o[0],h=o[1],c=n,u=s[0],g=s[1],f=s[2],16,t),t.point(d,h)}function v(){p.point=m,t.lineEnd()}function y(){_(),p.point=w,p.lineEnd=C}function w(e,t){b(n=e,t),r=d,s=h,o=u,a=g,l=f,p.point=b}function C(){i(d,h,c,u,g,f,r,s,n,o,a,l,16,t),p.lineEnd=v,v()}return p}}(e,t):function(e){return Cu({point:function(t,i){t=e(t,i),this.stream.point(t[0],t[1])}})}(e)}var Tu=Cu({point:function(e,t){this.stream.point(e*Ol,t*Ol)}});function Iu(e,t,i){function n(n,r){return[t+e*n,i-e*r]}return n.invert=function(n,r){return[(n-t)/e,(i-r)/e]},n}function Ou(e,t,i,n){var r=Fl(n),s=jl(n),o=r*e,a=s*e,l=r/e,c=s/e,d=(s*i-r*t)/e,h=(s*t+r*i)/e;function u(e,n){return[o*e-a*n+t,i-a*e-o*n]}return u.invert=function(e,t){return[l*e-c*t+d,h-c*e-l*t]},u}function Au(e){return Ru((function(){return e}))()}function Ru(e){var t,i,n,r,s,o,a,l,c,d,h=150,u=480,g=250,f=0,p=0,m=0,_=0,b=0,v=0,y=null,w=Hd,C=null,S=vh,k=.5;function x(e){return l(e[0]*Ol,e[1]*Ol)}function L(e){return(e=l.invert(e[0],e[1]))&&[e[0]*Il,e[1]*Il]}function M(){var e=Ou(h,0,0,v).apply(null,t(f,p)),n=(v?Ou:Iu)(h,u-e[0],g-e[1],v);return i=Cd(m,_,b),a=yd(t,n),l=yd(i,a),o=Eu(a,k),D()}function D(){return c=d=null,x}return x.stream=function(e){return c&&d===e?c:c=Tu(function(e){return Cu({point:function(t,i){var n=e(t,i);return this.stream.point(n[0],n[1])}})}(i)(w(o(S(d=e)))))},x.preclip=function(e){return arguments.length?(w=e,y=void 0,D()):w},x.postclip=function(e){return arguments.length?(S=e,C=n=r=s=null,D()):S},x.clipAngle=function(e){return arguments.length?(w=+e?jd(y=e*Ol):(y=null,Hd),D()):y*Il},x.clipExtent=function(e){return arguments.length?(S=null==e?(C=n=r=s=null,vh):Ud(C=+e[0][0],n=+e[0][1],r=+e[1][0],s=+e[1][1]),D()):null==C?null:[[C,n],[r,s]]},x.scale=function(e){return arguments.length?(h=+e,M()):h},x.translate=function(e){return arguments.length?(u=+e[0],g=+e[1],M()):[u,g]},x.center=function(e){return arguments.length?(f=e[0]%360*Ol,p=e[1]%360*Ol,M()):[f*Il,p*Il]},x.rotate=function(e){return arguments.length?(m=e[0]%360*Ol,_=e[1]%360*Ol,b=e.length>2?e[2]%360*Ol:0,M()):[m*Il,_*Il,b*Il]},x.angle=function(e){return arguments.length?(v=e%360*Ol,M()):v*Il},x.precision=function(e){return arguments.length?(o=Eu(a,k=e*e),D()):zl(k)},x.fitExtent=function(e,t){return xu(x,e,t)},x.fitSize=function(e,t){return Lu(x,e,t)},x.fitWidth=function(e,t){return Mu(x,e,t)},x.fitHeight=function(e,t){return Du(x,e,t)},function(){return t=e.apply(this,arguments),x.invert=t.invert&&L,M()}}function Pu(e){var t=0,i=Dl/3,n=Ru(e),r=n(t,i);return r.parallels=function(e){return arguments.length?n(t=e[0]*Ol,i=e[1]*Ol):[t*Il,i*Il]},r}function Fu(e,t){var i=jl(e),n=(i+jl(t))/2;if(Al(n)<Ll)return function(e){var t=Fl(e);function i(e,i){return[e*t,jl(i)/t]}return i.invert=function(e,i){return[e/t,Kl(i*t)]},i}(e);var r=1+i*(2*n-i),s=zl(r)/n;function o(e,t){var i=zl(r-2*n*jl(t))/n;return[i*jl(e*=n),s-i*Fl(e)]}return o.invert=function(e,t){var i=s-t;return[Pl(e,Al(i))/n*Vl(i),Kl((r-(e*e+i*i)*n*n)/(2*n))]},o}function Bu(){return Pu(Fu).scale(155.424).center([0,33.6442])}function Wu(){return Bu().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Yu(){var e,t,i,n,r,s,o=Wu(),a=Bu().rotate([154,0]).center([-2,58.5]).parallels([55,65]),l=Bu().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(e,t){s=[e,t]}};function d(e){var t=e[0],o=e[1];return s=null,i.point(t,o),s||(n.point(t,o),s)||(r.point(t,o),s)}function h(){return e=t=null,d}return d.invert=function(e){var t=o.scale(),i=o.translate(),n=(e[0]-i[0])/t,r=(e[1]-i[1])/t;return(r>=.12&&r<.234&&n>=-.425&&n<-.214?a:r>=.166&&r<.234&&n>=-.214&&n<-.115?l:o).invert(e)},d.stream=function(i){return e&&t===i?e:(n=[o.stream(t=i),a.stream(i),l.stream(i)],r=n.length,e={point:function(e,t){for(var i=-1;++i<r;)n[i].point(e,t)},sphere:function(){for(var e=-1;++e<r;)n[e].sphere()},lineStart:function(){for(var e=-1;++e<r;)n[e].lineStart()},lineEnd:function(){for(var e=-1;++e<r;)n[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<r;)n[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<r;)n[e].polygonEnd()}});var n,r},d.precision=function(e){return arguments.length?(o.precision(e),a.precision(e),l.precision(e),h()):o.precision()},d.scale=function(e){return arguments.length?(o.scale(e),a.scale(.35*e),l.scale(e),d.translate(o.translate())):o.scale()},d.translate=function(e){if(!arguments.length)return o.translate();var t=o.scale(),s=+e[0],d=+e[1];return i=o.translate(e).clipExtent([[s-.455*t,d-.238*t],[s+.455*t,d+.238*t]]).stream(c),n=a.translate([s-.307*t,d+.201*t]).clipExtent([[s-.425*t+Ll,d+.12*t+Ll],[s-.214*t-Ll,d+.234*t-Ll]]).stream(c),r=l.translate([s-.205*t,d+.212*t]).clipExtent([[s-.214*t+Ll,d+.166*t+Ll],[s-.115*t-Ll,d+.234*t-Ll]]).stream(c),h()},d.fitExtent=function(e,t){return xu(d,e,t)},d.fitSize=function(e,t){return Lu(d,e,t)},d.fitWidth=function(e,t){return Mu(d,e,t)},d.fitHeight=function(e,t){return Du(d,e,t)},d.scale(1070)}function Hu(e){return function(t,i){var n=Fl(t),r=Fl(i),s=e(n*r);return[s*r*jl(t),s*jl(i)]}}function ju(e){return function(t,i){var n=zl(t*t+i*i),r=e(n),s=jl(r),o=Fl(r);return[Pl(t*s,n*o),Kl(n&&i*s/n)]}}var Vu=Hu((function(e){return zl(2/(1+e))}));function zu(){return Au(Vu).scale(124.75).clipAngle(179.999)}Vu.invert=ju((function(e){return 2*Kl(e/2)}));var Uu=Hu((function(e){return(e=$l(e))&&e/jl(e)}));function $u(){return Au(Uu).scale(79.4188).clipAngle(179.999)}function Ku(e,t){return[e,Yl(Ul((Nl+t)/2))]}function qu(){return Gu(Ku).scale(961/Tl)}function Gu(e){var t,i,n,r=Au(e),s=r.center,o=r.scale,a=r.translate,l=r.clipExtent,c=null;function d(){var s=Dl*o(),a=r(Ld(r.rotate()).invert([0,0]));return l(null==c?[[a[0]-s,a[1]-s],[a[0]+s,a[1]+s]]:e===Ku?[[Math.max(a[0]-s,c),t],[Math.min(a[0]+s,i),n]]:[[c,Math.max(a[1]-s,t)],[i,Math.min(a[1]+s,n)]])}return r.scale=function(e){return arguments.length?(o(e),d()):o()},r.translate=function(e){return arguments.length?(a(e),d()):a()},r.center=function(e){return arguments.length?(s(e),d()):s()},r.clipExtent=function(e){return arguments.length?(null==e?c=t=i=n=null:(c=+e[0][0],t=+e[0][1],i=+e[1][0],n=+e[1][1]),d()):null==c?null:[[c,t],[i,n]]},d()}function Zu(e){return Ul((Nl+e)/2)}function Ju(e,t){var i=Fl(e),n=e===t?jl(e):Yl(i/Fl(t))/Yl(Zu(t)/Zu(e)),r=i*Hl(Zu(e),n)/n;if(!n)return Ku;function s(e,t){r>0?t<-Nl+Ll&&(t=-Nl+Ll):t>Nl-Ll&&(t=Nl-Ll);var i=r/Hl(Zu(t),n);return[i*jl(n*e),r-i*Fl(n*e)]}return s.invert=function(e,t){var i=r-t,s=Vl(n)*zl(e*e+i*i);return[Pl(e,Al(i))/n*Vl(i),2*Rl(Hl(r/s,1/n))-Nl]},s}function Qu(){return Pu(Ju).scale(109.5).parallels([30,30])}function Xu(e,t){return[e,t]}function eg(){return Au(Xu).scale(152.63)}function tg(e,t){var i=Fl(e),n=e===t?jl(e):(i-Fl(t))/(t-e),r=i/n+e;if(Al(n)<Ll)return Xu;function s(e,t){var i=r-t,s=n*e;return[i*jl(s),r-i*Fl(s)]}return s.invert=function(e,t){var i=r-t;return[Pl(e,Al(i))/n*Vl(i),r-Vl(n)*zl(e*e+i*i)]},s}function ig(){return Pu(tg).scale(131.154).center([0,13.9389])}Uu.invert=ju((function(e){return e})),Ku.invert=function(e,t){return[e,2*Rl(Wl(t))-Nl]},Xu.invert=Xu;var ng=1.340264,rg=-.081106,sg=893e-6,og=.003796,ag=zl(3)/2;function lg(e,t){var i=Kl(ag*jl(t)),n=i*i,r=n*n*n;return[e*Fl(i)/(ag*(ng+3*rg*n+r*(7*sg+9*og*n))),i*(ng+rg*n+r*(sg+og*n))]}function cg(){return Au(lg).scale(177.158)}function dg(e,t){var i=Fl(t),n=Fl(e)*i;return[i*jl(e)/n,jl(t)/n]}function hg(){return Au(dg).scale(144.049).clipAngle(60)}function ug(e,t,i,n){return 1===e&&1===t&&0===i&&0===n?vh:Cu({point:function(r,s){this.stream.point(r*e+i,s*t+n)}})}function gg(){var e,t,i,n,r,s,o=1,a=0,l=0,c=1,d=1,h=vh,u=null,g=vh;function f(){return n=r=null,s}return s={stream:function(e){return n&&r===e?n:n=h(g(r=e))},postclip:function(n){return arguments.length?(g=n,u=e=t=i=null,f()):g},clipExtent:function(n){return arguments.length?(g=null==n?(u=e=t=i=null,vh):Ud(u=+n[0][0],e=+n[0][1],t=+n[1][0],i=+n[1][1]),f()):null==u?null:[[u,e],[t,i]]},scale:function(e){return arguments.length?(h=ug((o=+e)*c,o*d,a,l),f()):o},translate:function(e){return arguments.length?(h=ug(o*c,o*d,a=+e[0],l=+e[1]),f()):[a,l]},reflectX:function(e){return arguments.length?(h=ug(o*(c=e?-1:1),o*d,a,l),f()):c<0},reflectY:function(e){return arguments.length?(h=ug(o*c,o*(d=e?-1:1),a,l),f()):d<0},fitExtent:function(e,t){return xu(s,e,t)},fitSize:function(e,t){return Lu(s,e,t)},fitWidth:function(e,t){return Mu(s,e,t)},fitHeight:function(e,t){return Du(s,e,t)}}}function fg(e,t){var i=t*t,n=i*i;return[e*(.8707-.131979*i+n*(n*(.003971*i-.001529*n)-.013791)),t*(1.007226+i*(.015085+n*(.028874*i-.044475-.005916*n)))]}function pg(){return Au(fg).scale(175.295)}function mg(e,t){return[Fl(t)*jl(e),jl(t)]}function _g(){return Au(mg).scale(249.5).clipAngle(90.000001)}function bg(e,t){var i=Fl(t),n=1+Fl(e)*i;return[i*jl(e)/n,jl(t)/n]}function vg(){return Au(bg).scale(250).clipAngle(142)}function yg(e,t){return[Yl(Ul((Nl+t)/2)),-e]}function wg(){var e=Gu(yg),t=e.center,i=e.rotate;return e.center=function(e){return arguments.length?t([-e[1],e[0]]):[(e=t())[1],-e[0]]},e.rotate=function(e){return arguments.length?i([e[0],e[1],e.length>2?e[2]+90:90]):[(e=i())[0],e[1],e[2]-90]},i([0,0,90]).scale(159.155)}function Cg(e,t){return e.parent===t.parent?1:2}function Sg(e,t){return e+t.x}function kg(e,t){return Math.max(e,t.y)}function xg(){var e=Cg,t=1,i=1,n=!1;function r(r){var s,o=0;r.eachAfter((function(t){var i=t.children;i?(t.x=function(e){return e.reduce(Sg,0)/e.length}(i),t.y=function(e){return 1+e.reduce(kg,0)}(i)):(t.x=s?o+=e(t,s):0,t.y=0,s=t)}));var a=function(e){for(var t;t=e.children;)e=t[0];return e}(r),l=function(e){for(var t;t=e.children;)e=t[t.length-1];return e}(r),c=a.x-e(a,l)/2,d=l.x+e(l,a)/2;return r.eachAfter(n?function(e){e.x=(e.x-r.x)*t,e.y=(r.y-e.y)*i}:function(e){e.x=(e.x-c)/(d-c)*t,e.y=(1-(r.y?e.y/r.y:1))*i})}return r.separation=function(t){return arguments.length?(e=t,r):e},r.size=function(e){return arguments.length?(n=!1,t=+e[0],i=+e[1],r):n?null:[t,i]},r.nodeSize=function(e){return arguments.length?(n=!0,t=+e[0],i=+e[1],r):n?[t,i]:null},r}function Lg(e){var t=0,i=e.children,n=i&&i.length;if(n)for(;--n>=0;)t+=i[n].value;else t=1;e.value=t}function Mg(e,t){var i,n,r,s,o,a=new Tg(e),l=+e.value&&(a.value=e.value),c=[a];for(null==t&&(t=Dg);i=c.pop();)if(l&&(i.value=+i.data.value),(r=t(i.data))&&(o=r.length))for(i.children=new Array(o),s=o-1;s>=0;--s)c.push(n=i.children[s]=new Tg(r[s])),n.parent=i,n.depth=i.depth+1;return a.eachBefore(Eg)}function Dg(e){return e.children}function Ng(e){e.data=e.data.data}function Eg(e){var t=0;do{e.height=t}while((e=e.parent)&&e.height<++t)}function Tg(e){this.data=e,this.depth=this.height=0,this.parent=null}lg.invert=function(e,t){for(var i,n=t,r=n*n,s=r*r*r,o=0;o<12&&(s=(r=(n-=i=(n*(ng+rg*r+s*(sg+og*r))-t)/(ng+3*rg*r+s*(7*sg+9*og*r)))*n)*r*r,!(Al(i)<Ml));++o);return[ag*e*(ng+3*rg*r+s*(7*sg+9*og*r))/Fl(n),Kl(jl(n)/ag)]},dg.invert=ju(Rl),fg.invert=function(e,t){var i,n=t,r=25;do{var s=n*n,o=s*s;n-=i=(n*(1.007226+s*(.015085+o*(.028874*s-.044475-.005916*o)))-t)/(1.007226+s*(.045255+o*(.259866*s-.311325-.005916*11*o)))}while(Al(i)>Ll&&--r>0);return[e/(.8707+(s=n*n)*(s*(s*s*s*(.003971-.001529*s)-.013791)-.131979)),n]},mg.invert=ju(Kl),bg.invert=ju((function(e){return 2*Rl(e)})),yg.invert=function(e,t){return[-t,2*Rl(Wl(e))-Nl]},Tg.prototype=Mg.prototype={constructor:Tg,count:function(){return this.eachAfter(Lg)},each:function(e){var t,i,n,r,s=this,o=[s];do{for(t=o.reverse(),o=[];s=t.pop();)if(e(s),i=s.children)for(n=0,r=i.length;n<r;++n)o.push(i[n])}while(o.length);return this},eachAfter:function(e){for(var t,i,n,r=this,s=[r],o=[];r=s.pop();)if(o.push(r),t=r.children)for(i=0,n=t.length;i<n;++i)s.push(t[i]);for(;r=o.pop();)e(r);return this},eachBefore:function(e){for(var t,i,n=this,r=[n];n=r.pop();)if(e(n),t=n.children)for(i=t.length-1;i>=0;--i)r.push(t[i]);return this},sum:function(e){return this.eachAfter((function(t){for(var i=+e(t.data)||0,n=t.children,r=n&&n.length;--r>=0;)i+=n[r].value;t.value=i}))},sort:function(e){return this.eachBefore((function(t){t.children&&t.children.sort(e)}))},path:function(e){for(var t=this,i=function(e,t){if(e===t)return e;var i=e.ancestors(),n=t.ancestors(),r=null;for(e=i.pop(),t=n.pop();e===t;)r=e,e=i.pop(),t=n.pop();return r}(t,e),n=[t];t!==i;)t=t.parent,n.push(t);for(var r=n.length;e!==i;)n.splice(r,0,e),e=e.parent;return n},ancestors:function(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t},descendants:function(){var e=[];return this.each((function(t){e.push(t)})),e},leaves:function(){var e=[];return this.eachBefore((function(t){t.children||e.push(t)})),e},links:function(){var e=this,t=[];return e.each((function(i){i!==e&&t.push({source:i.parent,target:i})})),t},copy:function(){return Mg(this).eachBefore(Ng)}};var Ig=Array.prototype.slice;function Og(e){for(var t,i,n=0,r=(e=function(e){for(var t,i,n=e.length;n;)i=Math.random()*n--|0,t=e[n],e[n]=e[i],e[i]=t;return e}(Ig.call(e))).length,s=[];n<r;)t=e[n],i&&Pg(i,t)?++n:(i=Bg(s=Ag(s,t)),n=0);return i}function Ag(e,t){var i,n;if(Fg(t,e))return[t];for(i=0;i<e.length;++i)if(Rg(t,e[i])&&Fg(Wg(e[i],t),e))return[e[i],t];for(i=0;i<e.length-1;++i)for(n=i+1;n<e.length;++n)if(Rg(Wg(e[i],e[n]),t)&&Rg(Wg(e[i],t),e[n])&&Rg(Wg(e[n],t),e[i])&&Fg(Yg(e[i],e[n],t),e))return[e[i],e[n],t];throw new Error}function Rg(e,t){var i=e.r-t.r,n=t.x-e.x,r=t.y-e.y;return i<0||i*i<n*n+r*r}function Pg(e,t){var i=e.r-t.r+1e-6,n=t.x-e.x,r=t.y-e.y;return i>0&&i*i>n*n+r*r}function Fg(e,t){for(var i=0;i<t.length;++i)if(!Pg(e,t[i]))return!1;return!0}function Bg(e){switch(e.length){case 1:return function(e){return{x:e.x,y:e.y,r:e.r}}(e[0]);case 2:return Wg(e[0],e[1]);case 3:return Yg(e[0],e[1],e[2])}}function Wg(e,t){var i=e.x,n=e.y,r=e.r,s=t.x,o=t.y,a=t.r,l=s-i,c=o-n,d=a-r,h=Math.sqrt(l*l+c*c);return{x:(i+s+l/h*d)/2,y:(n+o+c/h*d)/2,r:(h+r+a)/2}}function Yg(e,t,i){var n=e.x,r=e.y,s=e.r,o=t.x,a=t.y,l=t.r,c=i.x,d=i.y,h=i.r,u=n-o,g=n-c,f=r-a,p=r-d,m=l-s,_=h-s,b=n*n+r*r-s*s,v=b-o*o-a*a+l*l,y=b-c*c-d*d+h*h,w=g*f-u*p,C=(f*y-p*v)/(2*w)-n,S=(p*m-f*_)/w,k=(g*v-u*y)/(2*w)-r,x=(u*_-g*m)/w,L=S*S+x*x-1,M=2*(s+C*S+k*x),D=C*C+k*k-s*s,N=-(L?(M+Math.sqrt(M*M-4*L*D))/(2*L):D/M);return{x:n+C+S*N,y:r+k+x*N,r:N}}function Hg(e,t,i){var n,r,s,o,a=e.x-t.x,l=e.y-t.y,c=a*a+l*l;c?(r=t.r+i.r,r*=r,o=e.r+i.r,r>(o*=o)?(n=(c+o-r)/(2*c),s=Math.sqrt(Math.max(0,o/c-n*n)),i.x=e.x-n*a-s*l,i.y=e.y-n*l+s*a):(n=(c+r-o)/(2*c),s=Math.sqrt(Math.max(0,r/c-n*n)),i.x=t.x+n*a-s*l,i.y=t.y+n*l+s*a)):(i.x=t.x+i.r,i.y=t.y)}function jg(e,t){var i=e.r+t.r-1e-6,n=t.x-e.x,r=t.y-e.y;return i>0&&i*i>n*n+r*r}function Vg(e){var t=e._,i=e.next._,n=t.r+i.r,r=(t.x*i.r+i.x*t.r)/n,s=(t.y*i.r+i.y*t.r)/n;return r*r+s*s}function zg(e){this._=e,this.next=null,this.previous=null}function Ug(e){if(!(r=e.length))return 0;var t,i,n,r,s,o,a,l,c,d,h;if((t=e[0]).x=0,t.y=0,!(r>1))return t.r;if(i=e[1],t.x=-i.r,i.x=t.r,i.y=0,!(r>2))return t.r+i.r;Hg(i,t,n=e[2]),t=new zg(t),i=new zg(i),n=new zg(n),t.next=n.previous=i,i.next=t.previous=n,n.next=i.previous=t;e:for(a=3;a<r;++a){Hg(t._,i._,n=e[a]),n=new zg(n),l=i.next,c=t.previous,d=i._.r,h=t._.r;do{if(d<=h){if(jg(l._,n._)){i=l,t.next=i,i.previous=t,--a;continue e}d+=l._.r,l=l.next}else{if(jg(c._,n._)){(t=c).next=i,i.previous=t,--a;continue e}h+=c._.r,c=c.previous}}while(l!==c.next);for(n.previous=t,n.next=i,t.next=i.previous=i=n,s=Vg(t);(n=n.next)!==i;)(o=Vg(n))<s&&(t=n,s=o);i=t.next}for(t=[i._],n=i;(n=n.next)!==i;)t.push(n._);for(n=Og(t),a=0;a<r;++a)(t=e[a]).x-=n.x,t.y-=n.y;return n.r}function $g(e){return Ug(e),e}function Kg(e){return null==e?null:qg(e)}function qg(e){if("function"!=typeof e)throw new Error;return e}function Gg(){return 0}function Zg(e){return function(){return e}}function Jg(e){return Math.sqrt(e.value)}function Qg(){var e=null,t=1,i=1,n=Gg;function r(r){return r.x=t/2,r.y=i/2,e?r.eachBefore(Xg(e)).eachAfter(ef(n,.5)).eachBefore(tf(1)):r.eachBefore(Xg(Jg)).eachAfter(ef(Gg,1)).eachAfter(ef(n,r.r/Math.min(t,i))).eachBefore(tf(Math.min(t,i)/(2*r.r))),r}return r.radius=function(t){return arguments.length?(e=Kg(t),r):e},r.size=function(e){return arguments.length?(t=+e[0],i=+e[1],r):[t,i]},r.padding=function(e){return arguments.length?(n="function"==typeof e?e:Zg(+e),r):n},r}function Xg(e){return function(t){t.children||(t.r=Math.max(0,+e(t)||0))}}function ef(e,t){return function(i){if(n=i.children){var n,r,s,o=n.length,a=e(i)*t||0;if(a)for(r=0;r<o;++r)n[r].r+=a;if(s=Ug(n),a)for(r=0;r<o;++r)n[r].r-=a;i.r=s+a}}}function tf(e){return function(t){var i=t.parent;t.r*=e,i&&(t.x=i.x+e*t.x,t.y=i.y+e*t.y)}}function nf(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function rf(e,t,i,n,r){for(var s,o=e.children,a=-1,l=o.length,c=e.value&&(n-t)/e.value;++a<l;)(s=o[a]).y0=i,s.y1=r,s.x0=t,s.x1=t+=s.value*c}function sf(){var e=1,t=1,i=0,n=!1;function r(r){var s=r.height+1;return r.x0=r.y0=i,r.x1=e,r.y1=t/s,r.eachBefore(function(e,t){return function(n){n.children&&rf(n,n.x0,e*(n.depth+1)/t,n.x1,e*(n.depth+2)/t);var r=n.x0,s=n.y0,o=n.x1-i,a=n.y1-i;o<r&&(r=o=(r+o)/2),a<s&&(s=a=(s+a)/2),n.x0=r,n.y0=s,n.x1=o,n.y1=a}}(t,s)),n&&r.eachBefore(nf),r}return r.round=function(e){return arguments.length?(n=!!e,r):n},r.size=function(i){return arguments.length?(e=+i[0],t=+i[1],r):[e,t]},r.padding=function(e){return arguments.length?(i=+e,r):i},r}var of={depth:-1},af={};function lf(e){return e.id}function cf(e){return e.parentId}function df(){var e=lf,t=cf;function i(i){var n,r,s,o,a,l,c,d=i.length,h=new Array(d),u={};for(r=0;r<d;++r)n=i[r],a=h[r]=new Tg(n),null!=(l=e(n,r,i))&&(l+="")&&(u[c="$"+(a.id=l)]=c in u?af:a);for(r=0;r<d;++r)if(a=h[r],null!=(l=t(i[r],r,i))&&(l+="")){if(!(o=u["$"+l]))throw new Error("missing: "+l);if(o===af)throw new Error("ambiguous: "+l);o.children?o.children.push(a):o.children=[a],a.parent=o}else{if(s)throw new Error("multiple roots");s=a}if(!s)throw new Error("no root");if(s.parent=of,s.eachBefore((function(e){e.depth=e.parent.depth+1,--d})).eachBefore(Eg),s.parent=null,d>0)throw new Error("cycle");return s}return i.id=function(t){return arguments.length?(e=qg(t),i):e},i.parentId=function(e){return arguments.length?(t=qg(e),i):t},i}function hf(e,t){return e.parent===t.parent?1:2}function uf(e){var t=e.children;return t?t[0]:e.t}function gf(e){var t=e.children;return t?t[t.length-1]:e.t}function ff(e,t,i){var n=i/(t.i-e.i);t.c-=n,t.s+=i,e.c+=n,t.z+=i,t.m+=i}function pf(e,t,i){return e.a.parent===t.parent?e.a:i}function mf(e,t){this._=e,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=t}function _f(){var e=hf,t=1,i=1,n=null;function r(r){var l=function(e){for(var t,i,n,r,s,o=new mf(e,0),a=[o];t=a.pop();)if(n=t._.children)for(t.children=new Array(s=n.length),r=s-1;r>=0;--r)a.push(i=t.children[r]=new mf(n[r],r)),i.parent=t;return(o.parent=new mf(null,0)).children=[o],o}(r);if(l.eachAfter(s),l.parent.m=-l.z,l.eachBefore(o),n)r.eachBefore(a);else{var c=r,d=r,h=r;r.eachBefore((function(e){e.x<c.x&&(c=e),e.x>d.x&&(d=e),e.depth>h.depth&&(h=e)}));var u=c===d?1:e(c,d)/2,g=u-c.x,f=t/(d.x+u+g),p=i/(h.depth||1);r.eachBefore((function(e){e.x=(e.x+g)*f,e.y=e.depth*p}))}return r}function s(t){var i=t.children,n=t.parent.children,r=t.i?n[t.i-1]:null;if(i){!function(e){for(var t,i=0,n=0,r=e.children,s=r.length;--s>=0;)(t=r[s]).z+=i,t.m+=i,i+=t.s+(n+=t.c)}(t);var s=(i[0].z+i[i.length-1].z)/2;r?(t.z=r.z+e(t._,r._),t.m=t.z-s):t.z=s}else r&&(t.z=r.z+e(t._,r._));t.parent.A=function(t,i,n){if(i){for(var r,s=t,o=t,a=i,l=s.parent.children[0],c=s.m,d=o.m,h=a.m,u=l.m;a=gf(a),s=uf(s),a&&s;)l=uf(l),(o=gf(o)).a=t,(r=a.z+h-s.z-c+e(a._,s._))>0&&(ff(pf(a,t,n),t,r),c+=r,d+=r),h+=a.m,c+=s.m,u+=l.m,d+=o.m;a&&!gf(o)&&(o.t=a,o.m+=h-d),s&&!uf(l)&&(l.t=s,l.m+=c-u,n=t)}return n}(t,r,t.parent.A||n[0])}function o(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function a(e){e.x*=t,e.y=e.depth*i}return r.separation=function(t){return arguments.length?(e=t,r):e},r.size=function(e){return arguments.length?(n=!1,t=+e[0],i=+e[1],r):n?null:[t,i]},r.nodeSize=function(e){return arguments.length?(n=!0,t=+e[0],i=+e[1],r):n?[t,i]:null},r}function bf(e,t,i,n,r){for(var s,o=e.children,a=-1,l=o.length,c=e.value&&(r-i)/e.value;++a<l;)(s=o[a]).x0=t,s.x1=n,s.y0=i,s.y1=i+=s.value*c}mf.prototype=Object.create(Tg.prototype);var vf=(1+Math.sqrt(5))/2;function yf(e,t,i,n,r,s){for(var o,a,l,c,d,h,u,g,f,p,m,_=[],b=t.children,v=0,y=0,w=b.length,C=t.value;v<w;){l=r-i,c=s-n;do{d=b[y++].value}while(!d&&y<w);for(h=u=d,m=d*d*(p=Math.max(c/l,l/c)/(C*e)),f=Math.max(u/m,m/h);y<w;++y){if(d+=a=b[y].value,a<h&&(h=a),a>u&&(u=a),m=d*d*p,(g=Math.max(u/m,m/h))>f){d-=a;break}f=g}_.push(o={value:d,dice:l<c,children:b.slice(v,y)}),o.dice?rf(o,i,n,r,C?n+=c*d/C:s):bf(o,i,n,C?i+=l*d/C:r,s),C-=d,v=y}return _}const wf=function e(t){function i(e,i,n,r,s){yf(t,e,i,n,r,s)}return i.ratio=function(t){return e((t=+t)>1?t:1)},i}(vf);function Cf(){var e=wf,t=!1,i=1,n=1,r=[0],s=Gg,o=Gg,a=Gg,l=Gg,c=Gg;function d(e){return e.x0=e.y0=0,e.x1=i,e.y1=n,e.eachBefore(h),r=[0],t&&e.eachBefore(nf),e}function h(t){var i=r[t.depth],n=t.x0+i,d=t.y0+i,h=t.x1-i,u=t.y1-i;h<n&&(n=h=(n+h)/2),u<d&&(d=u=(d+u)/2),t.x0=n,t.y0=d,t.x1=h,t.y1=u,t.children&&(i=r[t.depth+1]=s(t)/2,n+=c(t)-i,d+=o(t)-i,(h-=a(t)-i)<n&&(n=h=(n+h)/2),(u-=l(t)-i)<d&&(d=u=(d+u)/2),e(t,n,d,h,u))}return d.round=function(e){return arguments.length?(t=!!e,d):t},d.size=function(e){return arguments.length?(i=+e[0],n=+e[1],d):[i,n]},d.tile=function(t){return arguments.length?(e=qg(t),d):e},d.padding=function(e){return arguments.length?d.paddingInner(e).paddingOuter(e):d.paddingInner()},d.paddingInner=function(e){return arguments.length?(s="function"==typeof e?e:Zg(+e),d):s},d.paddingOuter=function(e){return arguments.length?d.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):d.paddingTop()},d.paddingTop=function(e){return arguments.length?(o="function"==typeof e?e:Zg(+e),d):o},d.paddingRight=function(e){return arguments.length?(a="function"==typeof e?e:Zg(+e),d):a},d.paddingBottom=function(e){return arguments.length?(l="function"==typeof e?e:Zg(+e),d):l},d.paddingLeft=function(e){return arguments.length?(c="function"==typeof e?e:Zg(+e),d):c},d}function Sf(e,t,i,n,r){var s,o,a=e.children,l=a.length,c=new Array(l+1);for(c[0]=o=s=0;s<l;++s)c[s+1]=o+=a[s].value;!function e(t,i,n,r,s,o,l){if(t>=i-1){var d=a[t];return d.x0=r,d.y0=s,d.x1=o,void(d.y1=l)}for(var h=c[t],u=n/2+h,g=t+1,f=i-1;g<f;){var p=g+f>>>1;c[p]<u?g=p+1:f=p}u-c[g-1]<c[g]-u&&t+1<g&&--g;var m=c[g]-h,_=n-m;if(o-r>l-s){var b=(r*_+o*m)/n;e(t,g,m,r,s,b,l),e(g,i,_,b,s,o,l)}else{var v=(s*_+l*m)/n;e(t,g,m,r,s,o,v),e(g,i,_,r,v,o,l)}}(0,l,e.value,t,i,n,r)}function kf(e,t,i,n,r){(1&e.depth?bf:rf)(e,t,i,n,r)}const xf=function e(t){function i(e,i,n,r,s){if((o=e._squarify)&&o.ratio===t)for(var o,a,l,c,d,h=-1,u=o.length,g=e.value;++h<u;){for(l=(a=o[h]).children,c=a.value=0,d=l.length;c<d;++c)a.value+=l[c].value;a.dice?rf(a,i,n,r,n+=(s-n)*a.value/g):bf(a,i,n,i+=(r-i)*a.value/g,s),g-=a.value}else e._squarify=o=yf(t,e,i,n,r,s),o.ratio=t}return i.ratio=function(t){return e((t=+t)>1?t:1)},i}(vf);function Lf(e){var t=e.length;return function(i){return e[Math.max(0,Math.min(t-1,Math.floor(i*t)))]}}function Mf(e,t){var i=ui(+e,+t);return function(e){var t=i(e);return t-360*Math.floor(t/360)}}function Df(e,t){return e=+e,t=+t,function(i){return Math.round(e*(1-i)+t*i)}}var Nf=Math.SQRT2;function Ef(e){return((e=Math.exp(e))+1/e)/2}function Tf(e,t){var i,n,r=e[0],s=e[1],o=e[2],a=t[0],l=t[1],c=t[2],d=a-r,h=l-s,u=d*d+h*h;if(u<1e-12)n=Math.log(c/o)/Nf,i=function(e){return[r+e*d,s+e*h,o*Math.exp(Nf*e*n)]};else{var g=Math.sqrt(u),f=(c*c-o*o+4*u)/(2*o*2*g),p=(c*c-o*o-4*u)/(2*c*2*g),m=Math.log(Math.sqrt(f*f+1)-f),_=Math.log(Math.sqrt(p*p+1)-p);n=(_-m)/Nf,i=function(e){var t,i=e*n,a=Ef(m),l=o/(2*g)*(a*(t=Nf*i+m,((t=Math.exp(2*t))-1)/(t+1))-function(e){return((e=Math.exp(e))-1/e)/2}(m));return[r+l*d,s+l*h,o*a/Ef(Nf*i+m)]}}return i.duration=1e3*n,i}function If(e){return function(t,i){var n=e((t=ri(t)).h,(i=ri(i)).h),r=gi(t.s,i.s),s=gi(t.l,i.l),o=gi(t.opacity,i.opacity);return function(e){return t.h=n(e),t.s=r(e),t.l=s(e),t.opacity=o(e),t+""}}}const Of=If(ui);var Af=If(gi);function Rf(e,t){var i=gi((e=ks(e)).l,(t=ks(t)).l),n=gi(e.a,t.a),r=gi(e.b,t.b),s=gi(e.opacity,t.opacity);return function(t){return e.l=i(t),e.a=n(t),e.b=r(t),e.opacity=s(t),e+""}}function Pf(e){return function(t,i){var n=e((t=Is(t)).h,(i=Is(i)).h),r=gi(t.c,i.c),s=gi(t.l,i.l),o=gi(t.opacity,i.opacity);return function(e){return t.h=n(e),t.c=r(e),t.l=s(e),t.opacity=o(e),t+""}}}const Ff=Pf(ui);var Bf=Pf(gi);function Wf(e){return function t(i){function n(t,n){var r=e((t=zs(t)).h,(n=zs(n)).h),s=gi(t.s,n.s),o=gi(t.l,n.l),a=gi(t.opacity,n.opacity);return function(e){return t.h=r(e),t.s=s(e),t.l=o(Math.pow(e,i)),t.opacity=a(e),t+""}}return i=+i,n.gamma=t,n}(1)}const Yf=Wf(ui);var Hf=Wf(gi);function jf(e,t){for(var i=0,n=t.length-1,r=t[0],s=new Array(n<0?0:n);i<n;)s[i]=e(r,r=t[++i]);return function(e){var t=Math.max(0,Math.min(n-1,Math.floor(e*=n)));return s[t](e-t)}}function Vf(e,t){for(var i=new Array(t),n=0;n<t;++n)i[n]=e(n/(t-1));return i}function zf(e){for(var t,i=-1,n=e.length,r=e[n-1],s=0;++i<n;)t=r,r=e[i],s+=t[1]*r[0]-t[0]*r[1];return s/2}function Uf(e){for(var t,i,n=-1,r=e.length,s=0,o=0,a=e[r-1],l=0;++n<r;)t=a,a=e[n],l+=i=t[0]*a[1]-a[0]*t[1],s+=(t[0]+a[0])*i,o+=(t[1]+a[1])*i;return[s/(l*=3),o/l]}function $f(e,t,i){return(t[0]-e[0])*(i[1]-e[1])-(t[1]-e[1])*(i[0]-e[0])}function Kf(e,t){return e[0]-t[0]||e[1]-t[1]}function qf(e){for(var t=e.length,i=[0,1],n=2,r=2;r<t;++r){for(;n>1&&$f(e[i[n-2]],e[i[n-1]],e[r])<=0;)--n;i[n++]=r}return i.slice(0,n)}function Gf(e){if((i=e.length)<3)return null;var t,i,n=new Array(i),r=new Array(i);for(t=0;t<i;++t)n[t]=[+e[t][0],+e[t][1],t];for(n.sort(Kf),t=0;t<i;++t)r[t]=[n[t][0],-n[t][1]];var s=qf(n),o=qf(r),a=o[0]===s[0],l=o[o.length-1]===s[s.length-1],c=[];for(t=s.length-1;t>=0;--t)c.push(e[n[s[t]][2]]);for(t=+a;t<o.length-l;++t)c.push(e[n[o[t]][2]]);return c}function Zf(e,t){for(var i,n,r=e.length,s=e[r-1],o=t[0],a=t[1],l=s[0],c=s[1],d=!1,h=0;h<r;++h)i=(s=e[h])[0],(n=s[1])>a!=c>a&&o<(l-i)*(a-n)/(c-n)+i&&(d=!d),l=i,c=n;return d}function Jf(e){for(var t,i,n=-1,r=e.length,s=e[r-1],o=s[0],a=s[1],l=0;++n<r;)t=o,i=a,t-=o=(s=e[n])[0],i-=a=s[1],l+=Math.sqrt(t*t+i*i);return l}function Qf(){return Math.random()}const Xf=function e(t){function i(e,i){return e=null==e?0:+e,i=null==i?1:+i,1===arguments.length?(i=e,e=0):i-=e,function(){return t()*i+e}}return i.source=e,i}(Qf),ep=function e(t){function i(e,i){var n,r;return e=null==e?0:+e,i=null==i?1:+i,function(){var s;if(null!=n)s=n,n=null;else do{n=2*t()-1,s=2*t()-1,r=n*n+s*s}while(!r||r>1);return e+i*s*Math.sqrt(-2*Math.log(r)/r)}}return i.source=e,i}(Qf),tp=function e(t){function i(){var e=ep.source(t).apply(this,arguments);return function(){return Math.exp(e())}}return i.source=e,i}(Qf),ip=function e(t){function i(e){return function(){for(var i=0,n=0;n<e;++n)i+=t();return i}}return i.source=e,i}(Qf),np=function e(t){function i(e){var i=ip.source(t)(e);return function(){return i()/e}}return i.source=e,i}(Qf),rp=function e(t){function i(e){return function(){return-Math.log(1-t())/e}}return i.source=e,i}(Qf);function sp(e,t){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(t).domain(e)}return this}function op(e,t){switch(arguments.length){case 0:break;case 1:this.interpolator(e);break;default:this.interpolator(t).domain(e)}return this}var ap=Array.prototype,lp=ap.map,cp=ap.slice,dp={name:"implicit"};function hp(){var e=is(),t=[],i=[],n=dp;function r(r){var s=r+"",o=e.get(s);if(!o){if(n!==dp)return n;e.set(s,o=t.push(r))}return i[(o-1)%i.length]}return r.domain=function(i){if(!arguments.length)return t.slice();t=[],e=is();for(var n,s,o=-1,a=i.length;++o<a;)e.has(s=(n=i[o])+"")||e.set(s,t.push(n));return r},r.range=function(e){return arguments.length?(i=cp.call(e),r):i.slice()},r.unknown=function(e){return arguments.length?(n=e,r):n},r.copy=function(){return hp(t,i).unknown(n)},sp.apply(r,arguments),r}function up(){var e,t,i=hp().unknown(void 0),n=i.domain,r=i.range,s=[0,1],o=!1,a=0,l=0,c=.5;function d(){var i=n().length,d=s[1]<s[0],h=s[d-0],u=s[1-d];e=(u-h)/Math.max(1,i-a+2*l),o&&(e=Math.floor(e)),h+=(u-h-e*(i-a))*c,t=e*(1-a),o&&(h=Math.round(h),t=Math.round(t));var g=S(i).map((function(t){return h+e*t}));return r(d?g.reverse():g)}return delete i.unknown,i.domain=function(e){return arguments.length?(n(e),d()):n()},i.range=function(e){return arguments.length?(s=[+e[0],+e[1]],d()):s.slice()},i.rangeRound=function(e){return s=[+e[0],+e[1]],o=!0,d()},i.bandwidth=function(){return t},i.step=function(){return e},i.round=function(e){return arguments.length?(o=!!e,d()):o},i.padding=function(e){return arguments.length?(a=Math.min(1,l=+e),d()):a},i.paddingInner=function(e){return arguments.length?(a=Math.min(1,e),d()):a},i.paddingOuter=function(e){return arguments.length?(l=+e,d()):l},i.align=function(e){return arguments.length?(c=Math.max(0,Math.min(1,e)),d()):c},i.copy=function(){return up(n(),s).round(o).paddingInner(a).paddingOuter(l).align(c)},sp.apply(d(),arguments)}function gp(e){var t=e.copy;return e.padding=e.paddingOuter,delete e.paddingInner,delete e.paddingOuter,e.copy=function(){return gp(t())},e}function fp(){return gp(up.apply(null,arguments).paddingInner(1))}function pp(e){return+e}var mp=[0,1];function _p(e){return e}function bp(e,t){return(t-=e=+e)?function(i){return(i-e)/t}:(i=isNaN(t)?NaN:.5,function(){return i});var i}function vp(e){var t,i=e[0],n=e[e.length-1];return i>n&&(t=i,i=n,n=t),function(e){return Math.max(i,Math.min(n,e))}}function yp(e,t,i){var n=e[0],r=e[1],s=t[0],o=t[1];return r<n?(n=bp(r,n),s=i(o,s)):(n=bp(n,r),s=i(s,o)),function(e){return s(n(e))}}function wp(e,t,i){var n=Math.min(e.length,t.length)-1,r=new Array(n),s=new Array(n),o=-1;for(e[n]<e[0]&&(e=e.slice().reverse(),t=t.slice().reverse());++o<n;)r[o]=bp(e[o],e[o+1]),s[o]=i(t[o],t[o+1]);return function(t){var i=c(e,t,1,n)-1;return s[i](r[i](t))}}function Cp(e,t){return t.domain(e.domain()).range(e.range()).interpolate(e.interpolate()).clamp(e.clamp()).unknown(e.unknown())}function Sp(){var e,t,i,n,r,s,o=mp,a=mp,l=Di,c=_p;function d(){return n=Math.min(o.length,a.length)>2?wp:yp,r=s=null,h}function h(t){return isNaN(t=+t)?i:(r||(r=n(o.map(e),a,l)))(e(c(t)))}return h.invert=function(i){return c(t((s||(s=n(a,o.map(e),Si)))(i)))},h.domain=function(e){return arguments.length?(o=lp.call(e,pp),c===_p||(c=vp(o)),d()):o.slice()},h.range=function(e){return arguments.length?(a=cp.call(e),d()):a.slice()},h.rangeRound=function(e){return a=cp.call(e),l=Df,d()},h.clamp=function(e){return arguments.length?(c=e?vp(o):_p,h):c!==_p},h.interpolate=function(e){return arguments.length?(l=e,d()):l},h.unknown=function(e){return arguments.length?(i=e,h):i},function(i,n){return e=i,t=n,d()}}function kp(e,t){return Sp()(e,t)}function xp(e,t,i,n){var r,s=N(e,t,i);switch((n=al(null==n?",f":n)).type){case"s":var o=Math.max(Math.abs(e),Math.abs(t));return null!=n.precision||isNaN(r=yl(s,o))||(n.precision=r),fl(n,o);case"":case"e":case"g":case"p":case"r":null!=n.precision||isNaN(r=wl(s,Math.max(Math.abs(e),Math.abs(t))))||(n.precision=r-("e"===n.type));break;case"f":case"%":null!=n.precision||isNaN(r=vl(s))||(n.precision=r-2*("%"===n.type))}return gl(n)}function Lp(e){var t=e.domain;return e.ticks=function(e){var i=t();return M(i[0],i[i.length-1],null==e?10:e)},e.tickFormat=function(e,i){var n=t();return xp(n[0],n[n.length-1],null==e?10:e,i)},e.nice=function(i){null==i&&(i=10);var n,r=t(),s=0,o=r.length-1,a=r[s],l=r[o];return l<a&&(n=a,a=l,l=n,n=s,s=o,o=n),(n=D(a,l,i))>0?n=D(a=Math.floor(a/n)*n,l=Math.ceil(l/n)*n,i):n<0&&(n=D(a=Math.ceil(a*n)/n,l=Math.floor(l*n)/n,i)),n>0?(r[s]=Math.floor(a/n)*n,r[o]=Math.ceil(l/n)*n,t(r)):n<0&&(r[s]=Math.ceil(a*n)/n,r[o]=Math.floor(l*n)/n,t(r)),e},e}function Mp(){var e=kp(_p,_p);return e.copy=function(){return Cp(e,Mp())},sp.apply(e,arguments),Lp(e)}function Dp(e){var t;function i(e){return isNaN(e=+e)?t:e}return i.invert=i,i.domain=i.range=function(t){return arguments.length?(e=lp.call(t,pp),i):e.slice()},i.unknown=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Dp(e).unknown(t)},e=arguments.length?lp.call(e,pp):[0,1],Lp(i)}function Np(e,t){var i,n=0,r=(e=e.slice()).length-1,s=e[n],o=e[r];return o<s&&(i=n,n=r,r=i,i=s,s=o,o=i),e[n]=t.floor(s),e[r]=t.ceil(o),e}function Ep(e){return Math.log(e)}function Tp(e){return Math.exp(e)}function Ip(e){return-Math.log(-e)}function Op(e){return-Math.exp(-e)}function Ap(e){return isFinite(e)?+("1e"+e):e<0?0:e}function Rp(e){return function(t){return-e(-t)}}function Pp(e){var t,i,n=e(Ep,Tp),r=n.domain,s=10;function o(){return t=function(e){return e===Math.E?Math.log:10===e&&Math.log10||2===e&&Math.log2||(e=Math.log(e),function(t){return Math.log(t)/e})}(s),i=function(e){return 10===e?Ap:e===Math.E?Math.exp:function(t){return Math.pow(e,t)}}(s),r()[0]<0?(t=Rp(t),i=Rp(i),e(Ip,Op)):e(Ep,Tp),n}return n.base=function(e){return arguments.length?(s=+e,o()):s},n.domain=function(e){return arguments.length?(r(e),o()):r()},n.ticks=function(e){var n,o=r(),a=o[0],l=o[o.length-1];(n=l<a)&&(u=a,a=l,l=u);var c,d,h,u=t(a),g=t(l),f=null==e?10:+e,p=[];if(!(s%1)&&g-u<f){if(u=Math.round(u)-1,g=Math.round(g)+1,a>0){for(;u<g;++u)for(d=1,c=i(u);d<s;++d)if(!((h=c*d)<a)){if(h>l)break;p.push(h)}}else for(;u<g;++u)for(d=s-1,c=i(u);d>=1;--d)if(!((h=c*d)<a)){if(h>l)break;p.push(h)}}else p=M(u,g,Math.min(g-u,f)).map(i);return n?p.reverse():p},n.tickFormat=function(e,r){if(null==r&&(r=10===s?".0e":","),"function"!=typeof r&&(r=gl(r)),e===1/0)return r;null==e&&(e=10);var o=Math.max(1,s*e/n.ticks().length);return function(e){var n=e/i(Math.round(t(e)));return n*s<s-.5&&(n*=s),n<=o?r(e):""}},n.nice=function(){return r(Np(r(),{floor:function(e){return i(Math.floor(t(e)))},ceil:function(e){return i(Math.ceil(t(e)))}}))},n}function Fp(){var e=Pp(Sp()).domain([1,10]);return e.copy=function(){return Cp(e,Fp()).base(e.base())},sp.apply(e,arguments),e}function Bp(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function Wp(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function Yp(e){var t=1,i=e(Bp(t),Wp(t));return i.constant=function(i){return arguments.length?e(Bp(t=+i),Wp(t)):t},Lp(i)}function Hp(){var e=Yp(Sp());return e.copy=function(){return Cp(e,Hp()).constant(e.constant())},sp.apply(e,arguments)}function jp(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function Vp(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function zp(e){return e<0?-e*e:e*e}function Up(e){var t=e(_p,_p),i=1;function n(){return 1===i?e(_p,_p):.5===i?e(Vp,zp):e(jp(i),jp(1/i))}return t.exponent=function(e){return arguments.length?(i=+e,n()):i},Lp(t)}function $p(){var e=Up(Sp());return e.copy=function(){return Cp(e,$p()).exponent(e.exponent())},sp.apply(e,arguments),e}function Kp(){return $p.apply(null,arguments).exponent(.5)}function qp(){var e,t=[],i=[],n=[];function s(){var e=0,r=Math.max(1,i.length);for(n=new Array(r-1);++e<r;)n[e-1]=I(t,e/r);return o}function o(t){return isNaN(t=+t)?e:i[c(n,t)]}return o.invertExtent=function(e){var r=i.indexOf(e);return r<0?[NaN,NaN]:[r>0?n[r-1]:t[0],r<n.length?n[r]:t[t.length-1]]},o.domain=function(e){if(!arguments.length)return t.slice();t=[];for(var i,n=0,o=e.length;n<o;++n)null==(i=e[n])||isNaN(i=+i)||t.push(i);return t.sort(r),s()},o.range=function(e){return arguments.length?(i=cp.call(e),s()):i.slice()},o.unknown=function(t){return arguments.length?(e=t,o):e},o.quantiles=function(){return n.slice()},o.copy=function(){return qp().domain(t).range(i).unknown(e)},sp.apply(o,arguments)}function Gp(){var e,t=0,i=1,n=1,r=[.5],s=[0,1];function o(t){return t<=t?s[c(r,t,0,n)]:e}function a(){var e=-1;for(r=new Array(n);++e<n;)r[e]=((e+1)*i-(e-n)*t)/(n+1);return o}return o.domain=function(e){return arguments.length?(t=+e[0],i=+e[1],a()):[t,i]},o.range=function(e){return arguments.length?(n=(s=cp.call(e)).length-1,a()):s.slice()},o.invertExtent=function(e){var o=s.indexOf(e);return o<0?[NaN,NaN]:o<1?[t,r[0]]:o>=n?[r[n-1],i]:[r[o-1],r[o]]},o.unknown=function(t){return arguments.length?(e=t,o):o},o.thresholds=function(){return r.slice()},o.copy=function(){return Gp().domain([t,i]).range(s).unknown(e)},sp.apply(Lp(o),arguments)}function Zp(){var e,t=[.5],i=[0,1],n=1;function r(r){return r<=r?i[c(t,r,0,n)]:e}return r.domain=function(e){return arguments.length?(t=cp.call(e),n=Math.min(t.length,i.length-1),r):t.slice()},r.range=function(e){return arguments.length?(i=cp.call(e),n=Math.min(t.length,i.length-1),r):i.slice()},r.invertExtent=function(e){var n=i.indexOf(e);return[t[n-1],t[n]]},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return Zp().domain(t).range(i).unknown(e)},sp.apply(r,arguments)}var Jp=new Date,Qp=new Date;function Xp(e,t,i,n){function r(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return r.floor=function(t){return e(t=new Date(+t)),t},r.ceil=function(i){return e(i=new Date(i-1)),t(i,1),e(i),i},r.round=function(e){var t=r(e),i=r.ceil(e);return e-t<i-e?t:i},r.offset=function(e,i){return t(e=new Date(+e),null==i?1:Math.floor(i)),e},r.range=function(i,n,s){var o,a=[];if(i=r.ceil(i),s=null==s?1:Math.floor(s),!(i<n&&s>0))return a;do{a.push(o=new Date(+i)),t(i,s),e(i)}while(o<i&&i<n);return a},r.filter=function(i){return Xp((function(t){if(t>=t)for(;e(t),!i(t);)t.setTime(t-1)}),(function(e,n){if(e>=e)if(n<0)for(;++n<=0;)for(;t(e,-1),!i(e););else for(;--n>=0;)for(;t(e,1),!i(e););}))},i&&(r.count=function(t,n){return Jp.setTime(+t),Qp.setTime(+n),e(Jp),e(Qp),Math.floor(i(Jp,Qp))},r.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?r.filter(n?function(t){return n(t)%e==0}:function(t){return r.count(0,t)%e==0}):r:null}),r}var em=Xp((function(e){e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()}));em.every=function(e){return isFinite(e=Math.floor(e))&&e>0?Xp((function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,i){t.setFullYear(t.getFullYear()+i*e)})):null};const tm=em;var im=em.range,nm=Xp((function(e){e.setDate(1),e.setHours(0,0,0,0)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()}));const rm=nm;var sm=nm.range,om=1e3,am=6e4,lm=36e5,cm=864e5,dm=6048e5;function hm(e){return Xp((function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*am)/dm}))}var um=hm(0),gm=hm(1),fm=hm(2),pm=hm(3),mm=hm(4),_m=hm(5),bm=hm(6),vm=um.range,ym=gm.range,wm=fm.range,Cm=pm.range,Sm=mm.range,km=_m.range,xm=bm.range,Lm=Xp((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*am)/cm}),(function(e){return e.getDate()-1}));const Mm=Lm;var Dm=Lm.range,Nm=Xp((function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*om-e.getMinutes()*am)}),(function(e,t){e.setTime(+e+t*lm)}),(function(e,t){return(t-e)/lm}),(function(e){return e.getHours()}));const Em=Nm;var Tm=Nm.range,Im=Xp((function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*om)}),(function(e,t){e.setTime(+e+t*am)}),(function(e,t){return(t-e)/am}),(function(e){return e.getMinutes()}));const Om=Im;var Am=Im.range,Rm=Xp((function(e){e.setTime(e-e.getMilliseconds())}),(function(e,t){e.setTime(+e+t*om)}),(function(e,t){return(t-e)/om}),(function(e){return e.getUTCSeconds()}));const Pm=Rm;var Fm=Rm.range,Bm=Xp((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e}));Bm.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?Xp((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,i){t.setTime(+t+i*e)}),(function(t,i){return(i-t)/e})):Bm:null};const Wm=Bm;var Ym=Bm.range;function Hm(e){return Xp((function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/dm}))}var jm=Hm(0),Vm=Hm(1),zm=Hm(2),Um=Hm(3),$m=Hm(4),Km=Hm(5),qm=Hm(6),Gm=jm.range,Zm=Vm.range,Jm=zm.range,Qm=Um.range,Xm=$m.range,e_=Km.range,t_=qm.range,i_=Xp((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/cm}),(function(e){return e.getUTCDate()-1}));const n_=i_;var r_=i_.range,s_=Xp((function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()}));s_.every=function(e){return isFinite(e=Math.floor(e))&&e>0?Xp((function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,i){t.setUTCFullYear(t.getUTCFullYear()+i*e)})):null};const o_=s_;var a_=s_.range;function l_(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function c_(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function d_(e,t,i){return{y:e,m:t,d:i,H:0,M:0,S:0,L:0}}function h_(e){var t=e.dateTime,i=e.date,n=e.time,r=e.periods,s=e.days,o=e.shortDays,a=e.months,l=e.shortMonths,c=S_(r),d=k_(r),h=S_(s),u=k_(s),g=S_(o),f=k_(o),p=S_(a),m=k_(a),_=S_(l),b=k_(l),v={a:function(e){return o[e.getDay()]},A:function(e){return s[e.getDay()]},b:function(e){return l[e.getMonth()]},B:function(e){return a[e.getMonth()]},c:null,d:U_,e:U_,f:Z_,H:$_,I:K_,j:q_,L:G_,m:J_,M:Q_,p:function(e){return r[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Lb,s:Mb,S:X_,u:eb,U:tb,V:ib,w:nb,W:rb,x:null,X:null,y:sb,Y:ob,Z:ab,"%":xb},y={a:function(e){return o[e.getUTCDay()]},A:function(e){return s[e.getUTCDay()]},b:function(e){return l[e.getUTCMonth()]},B:function(e){return a[e.getUTCMonth()]},c:null,d:lb,e:lb,f:gb,H:cb,I:db,j:hb,L:ub,m:fb,M:pb,p:function(e){return r[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Lb,s:Mb,S:mb,u:_b,U:bb,V:vb,w:yb,W:wb,x:null,X:null,y:Cb,Y:Sb,Z:kb,"%":xb},w={a:function(e,t,i){var n=g.exec(t.slice(i));return n?(e.w=f[n[0].toLowerCase()],i+n[0].length):-1},A:function(e,t,i){var n=h.exec(t.slice(i));return n?(e.w=u[n[0].toLowerCase()],i+n[0].length):-1},b:function(e,t,i){var n=_.exec(t.slice(i));return n?(e.m=b[n[0].toLowerCase()],i+n[0].length):-1},B:function(e,t,i){var n=p.exec(t.slice(i));return n?(e.m=m[n[0].toLowerCase()],i+n[0].length):-1},c:function(e,i,n){return k(e,t,i,n)},d:R_,e:R_,f:H_,H:F_,I:F_,j:P_,L:Y_,m:A_,M:B_,p:function(e,t,i){var n=c.exec(t.slice(i));return n?(e.p=d[n[0].toLowerCase()],i+n[0].length):-1},q:O_,Q:V_,s:z_,S:W_,u:L_,U:M_,V:D_,w:x_,W:N_,x:function(e,t,n){return k(e,i,t,n)},X:function(e,t,i){return k(e,n,t,i)},y:T_,Y:E_,Z:I_,"%":j_};function C(e,t){return function(i){var n,r,s,o=[],a=-1,l=0,c=e.length;for(i instanceof Date||(i=new Date(+i));++a<c;)37===e.charCodeAt(a)&&(o.push(e.slice(l,a)),null!=(r=__[n=e.charAt(++a)])?n=e.charAt(++a):r="e"===n?" ":"0",(s=t[n])&&(n=s(i,r)),o.push(n),l=a+1);return o.push(e.slice(l,a)),o.join("")}}function S(e,t){return function(i){var n,r,s=d_(1900,void 0,1);if(k(s,e,i+="",0)!=i.length)return null;if("Q"in s)return new Date(s.Q);if("s"in s)return new Date(1e3*s.s+("L"in s?s.L:0));if(t&&!("Z"in s)&&(s.Z=0),"p"in s&&(s.H=s.H%12+12*s.p),void 0===s.m&&(s.m="q"in s?s.q:0),"V"in s){if(s.V<1||s.V>53)return null;"w"in s||(s.w=1),"Z"in s?(r=(n=c_(d_(s.y,0,1))).getUTCDay(),n=r>4||0===r?Vm.ceil(n):Vm(n),n=n_.offset(n,7*(s.V-1)),s.y=n.getUTCFullYear(),s.m=n.getUTCMonth(),s.d=n.getUTCDate()+(s.w+6)%7):(r=(n=l_(d_(s.y,0,1))).getDay(),n=r>4||0===r?gm.ceil(n):gm(n),n=Mm.offset(n,7*(s.V-1)),s.y=n.getFullYear(),s.m=n.getMonth(),s.d=n.getDate()+(s.w+6)%7)}else("W"in s||"U"in s)&&("w"in s||(s.w="u"in s?s.u%7:"W"in s?1:0),r="Z"in s?c_(d_(s.y,0,1)).getUTCDay():l_(d_(s.y,0,1)).getDay(),s.m=0,s.d="W"in s?(s.w+6)%7+7*s.W-(r+5)%7:s.w+7*s.U-(r+6)%7);return"Z"in s?(s.H+=s.Z/100|0,s.M+=s.Z%100,c_(s)):l_(s)}}function k(e,t,i,n){for(var r,s,o=0,a=t.length,l=i.length;o<a;){if(n>=l)return-1;if(37===(r=t.charCodeAt(o++))){if(r=t.charAt(o++),!(s=w[r in __?t.charAt(o++):r])||(n=s(e,i,n))<0)return-1}else if(r!=i.charCodeAt(n++))return-1}return n}return v.x=C(i,v),v.X=C(n,v),v.c=C(t,v),y.x=C(i,y),y.X=C(n,y),y.c=C(t,y),{format:function(e){var t=C(e+="",v);return t.toString=function(){return e},t},parse:function(e){var t=S(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=C(e+="",y);return t.toString=function(){return e},t},utcParse:function(e){var t=S(e+="",!0);return t.toString=function(){return e},t}}}var u_,g_,f_,p_,m_,__={"-":"",_:" ",0:"0"},b_=/^\s*\d+/,v_=/^%/,y_=/[\\^$*+?|[\]().{}]/g;function w_(e,t,i){var n=e<0?"-":"",r=(n?-e:e)+"",s=r.length;return n+(s<i?new Array(i-s+1).join(t)+r:r)}function C_(e){return e.replace(y_,"\\$&")}function S_(e){return new RegExp("^(?:"+e.map(C_).join("|")+")","i")}function k_(e){for(var t={},i=-1,n=e.length;++i<n;)t[e[i].toLowerCase()]=i;return t}function x_(e,t,i){var n=b_.exec(t.slice(i,i+1));return n?(e.w=+n[0],i+n[0].length):-1}function L_(e,t,i){var n=b_.exec(t.slice(i,i+1));return n?(e.u=+n[0],i+n[0].length):-1}function M_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.U=+n[0],i+n[0].length):-1}function D_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.V=+n[0],i+n[0].length):-1}function N_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.W=+n[0],i+n[0].length):-1}function E_(e,t,i){var n=b_.exec(t.slice(i,i+4));return n?(e.y=+n[0],i+n[0].length):-1}function T_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),i+n[0].length):-1}function I_(e,t,i){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(i,i+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),i+n[0].length):-1}function O_(e,t,i){var n=b_.exec(t.slice(i,i+1));return n?(e.q=3*n[0]-3,i+n[0].length):-1}function A_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.m=n[0]-1,i+n[0].length):-1}function R_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.d=+n[0],i+n[0].length):-1}function P_(e,t,i){var n=b_.exec(t.slice(i,i+3));return n?(e.m=0,e.d=+n[0],i+n[0].length):-1}function F_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.H=+n[0],i+n[0].length):-1}function B_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.M=+n[0],i+n[0].length):-1}function W_(e,t,i){var n=b_.exec(t.slice(i,i+2));return n?(e.S=+n[0],i+n[0].length):-1}function Y_(e,t,i){var n=b_.exec(t.slice(i,i+3));return n?(e.L=+n[0],i+n[0].length):-1}function H_(e,t,i){var n=b_.exec(t.slice(i,i+6));return n?(e.L=Math.floor(n[0]/1e3),i+n[0].length):-1}function j_(e,t,i){var n=v_.exec(t.slice(i,i+1));return n?i+n[0].length:-1}function V_(e,t,i){var n=b_.exec(t.slice(i));return n?(e.Q=+n[0],i+n[0].length):-1}function z_(e,t,i){var n=b_.exec(t.slice(i));return n?(e.s=+n[0],i+n[0].length):-1}function U_(e,t){return w_(e.getDate(),t,2)}function $_(e,t){return w_(e.getHours(),t,2)}function K_(e,t){return w_(e.getHours()%12||12,t,2)}function q_(e,t){return w_(1+Mm.count(tm(e),e),t,3)}function G_(e,t){return w_(e.getMilliseconds(),t,3)}function Z_(e,t){return G_(e,t)+"000"}function J_(e,t){return w_(e.getMonth()+1,t,2)}function Q_(e,t){return w_(e.getMinutes(),t,2)}function X_(e,t){return w_(e.getSeconds(),t,2)}function eb(e){var t=e.getDay();return 0===t?7:t}function tb(e,t){return w_(um.count(tm(e)-1,e),t,2)}function ib(e,t){var i=e.getDay();return e=i>=4||0===i?mm(e):mm.ceil(e),w_(mm.count(tm(e),e)+(4===tm(e).getDay()),t,2)}function nb(e){return e.getDay()}function rb(e,t){return w_(gm.count(tm(e)-1,e),t,2)}function sb(e,t){return w_(e.getFullYear()%100,t,2)}function ob(e,t){return w_(e.getFullYear()%1e4,t,4)}function ab(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+w_(t/60|0,"0",2)+w_(t%60,"0",2)}function lb(e,t){return w_(e.getUTCDate(),t,2)}function cb(e,t){return w_(e.getUTCHours(),t,2)}function db(e,t){return w_(e.getUTCHours()%12||12,t,2)}function hb(e,t){return w_(1+n_.count(o_(e),e),t,3)}function ub(e,t){return w_(e.getUTCMilliseconds(),t,3)}function gb(e,t){return ub(e,t)+"000"}function fb(e,t){return w_(e.getUTCMonth()+1,t,2)}function pb(e,t){return w_(e.getUTCMinutes(),t,2)}function mb(e,t){return w_(e.getUTCSeconds(),t,2)}function _b(e){var t=e.getUTCDay();return 0===t?7:t}function bb(e,t){return w_(jm.count(o_(e)-1,e),t,2)}function vb(e,t){var i=e.getUTCDay();return e=i>=4||0===i?$m(e):$m.ceil(e),w_($m.count(o_(e),e)+(4===o_(e).getUTCDay()),t,2)}function yb(e){return e.getUTCDay()}function wb(e,t){return w_(Vm.count(o_(e)-1,e),t,2)}function Cb(e,t){return w_(e.getUTCFullYear()%100,t,2)}function Sb(e,t){return w_(e.getUTCFullYear()%1e4,t,4)}function kb(){return"+0000"}function xb(){return"%"}function Lb(e){return+e}function Mb(e){return Math.floor(+e/1e3)}function Db(e){return u_=h_(e),g_=u_.format,f_=u_.parse,p_=u_.utcFormat,m_=u_.utcParse,u_}Db({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var Nb=31536e6;function Eb(e){return new Date(e)}function Tb(e){return e instanceof Date?+e:+new Date(+e)}function Ib(e,t,i,n,r,o,a,l,c){var d=kp(_p,_p),h=d.invert,u=d.domain,g=c(".%L"),f=c(":%S"),p=c("%I:%M"),m=c("%I %p"),_=c("%a %d"),b=c("%b %d"),v=c("%B"),y=c("%Y"),w=[[a,1,1e3],[a,5,5e3],[a,15,15e3],[a,30,3e4],[o,1,6e4],[o,5,3e5],[o,15,9e5],[o,30,18e5],[r,1,36e5],[r,3,108e5],[r,6,216e5],[r,12,432e5],[n,1,864e5],[n,2,1728e5],[i,1,6048e5],[t,1,2592e6],[t,3,7776e6],[e,1,Nb]];function C(s){return(a(s)<s?g:o(s)<s?f:r(s)<s?p:n(s)<s?m:t(s)<s?i(s)<s?_:b:e(s)<s?v:y)(s)}function S(t,i,n,r){if(null==t&&(t=10),"number"==typeof t){var o=Math.abs(n-i)/t,a=s((function(e){return e[2]})).right(w,o);a===w.length?(r=N(i/Nb,n/Nb,t),t=e):a?(r=(a=w[o/w[a-1][2]<w[a][2]/o?a-1:a])[1],t=a[0]):(r=Math.max(N(i,n,t),1),t=l)}return null==r?t:t.every(r)}return d.invert=function(e){return new Date(h(e))},d.domain=function(e){return arguments.length?u(lp.call(e,Tb)):u().map(Eb)},d.ticks=function(e,t){var i,n=u(),r=n[0],s=n[n.length-1],o=s<r;return o&&(i=r,r=s,s=i),i=(i=S(e,r,s,t))?i.range(r,s+1):[],o?i.reverse():i},d.tickFormat=function(e,t){return null==t?C:c(t)},d.nice=function(e,t){var i=u();return(e=S(e,i[0],i[i.length-1],t))?u(Np(i,e)):d},d.copy=function(){return Cp(d,Ib(e,t,i,n,r,o,a,l,c))},d}function Ob(){return sp.apply(Ib(tm,rm,um,Mm,Em,Om,Pm,Wm,g_).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}var Ab=Xp((function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCMonth(e.getUTCMonth()+t)}),(function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())}),(function(e){return e.getUTCMonth()}));const Rb=Ab;var Pb=Ab.range,Fb=Xp((function(e){e.setUTCMinutes(0,0,0)}),(function(e,t){e.setTime(+e+t*lm)}),(function(e,t){return(t-e)/lm}),(function(e){return e.getUTCHours()}));const Bb=Fb;var Wb=Fb.range,Yb=Xp((function(e){e.setUTCSeconds(0,0)}),(function(e,t){e.setTime(+e+t*am)}),(function(e,t){return(t-e)/am}),(function(e){return e.getUTCMinutes()}));const Hb=Yb;var jb=Yb.range;function Vb(){return sp.apply(Ib(o_,Rb,jm,n_,Bb,Hb,Pm,Wm,p_).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function zb(){var e,t,i,n,r,s=0,o=1,a=_p,l=!1;function c(t){return isNaN(t=+t)?r:a(0===i?.5:(t=(n(t)-e)*i,l?Math.max(0,Math.min(1,t)):t))}return c.domain=function(r){return arguments.length?(e=n(s=+r[0]),t=n(o=+r[1]),i=e===t?0:1/(t-e),c):[s,o]},c.clamp=function(e){return arguments.length?(l=!!e,c):l},c.interpolator=function(e){return arguments.length?(a=e,c):a},c.unknown=function(e){return arguments.length?(r=e,c):r},function(r){return n=r,e=r(s),t=r(o),i=e===t?0:1/(t-e),c}}function Ub(e,t){return t.domain(e.domain()).interpolator(e.interpolator()).clamp(e.clamp()).unknown(e.unknown())}function $b(){var e=Lp(zb()(_p));return e.copy=function(){return Ub(e,$b())},op.apply(e,arguments)}function Kb(){var e=Pp(zb()).domain([1,10]);return e.copy=function(){return Ub(e,Kb()).base(e.base())},op.apply(e,arguments)}function qb(){var e=Yp(zb());return e.copy=function(){return Ub(e,qb()).constant(e.constant())},op.apply(e,arguments)}function Gb(){var e=Up(zb());return e.copy=function(){return Ub(e,Gb()).exponent(e.exponent())},op.apply(e,arguments)}function Zb(){return Gb.apply(null,arguments).exponent(.5)}function Jb(){var e=[],t=_p;function i(i){if(!isNaN(i=+i))return t((c(e,i)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(var n,s=0,o=t.length;s<o;++s)null==(n=t[s])||isNaN(n=+n)||e.push(n);return e.sort(r),i},i.interpolator=function(e){return arguments.length?(t=e,i):t},i.copy=function(){return Jb(t).domain(e)},op.apply(i,arguments)}function Qb(){var e,t,i,n,r,s,o,a=0,l=.5,c=1,d=_p,h=!1;function u(e){return isNaN(e=+e)?o:(e=.5+((e=+s(e))-t)*(e<t?n:r),d(h?Math.max(0,Math.min(1,e)):e))}return u.domain=function(o){return arguments.length?(e=s(a=+o[0]),t=s(l=+o[1]),i=s(c=+o[2]),n=e===t?0:.5/(t-e),r=t===i?0:.5/(i-t),u):[a,l,c]},u.clamp=function(e){return arguments.length?(h=!!e,u):h},u.interpolator=function(e){return arguments.length?(d=e,u):d},u.unknown=function(e){return arguments.length?(o=e,u):o},function(o){return s=o,e=o(a),t=o(l),i=o(c),n=e===t?0:.5/(t-e),r=t===i?0:.5/(i-t),u}}function Xb(){var e=Lp(Qb()(_p));return e.copy=function(){return Ub(e,Xb())},op.apply(e,arguments)}function ev(){var e=Pp(Qb()).domain([.1,1,10]);return e.copy=function(){return Ub(e,ev()).base(e.base())},op.apply(e,arguments)}function tv(){var e=Yp(Qb());return e.copy=function(){return Ub(e,tv()).constant(e.constant())},op.apply(e,arguments)}function iv(){var e=Up(Qb());return e.copy=function(){return Ub(e,iv()).exponent(e.exponent())},op.apply(e,arguments)}function nv(){return iv.apply(null,arguments).exponent(.5)}function rv(e){for(var t=e.length/6|0,i=new Array(t),n=0;n<t;)i[n]="#"+e.slice(6*n,6*++n);return i}const sv=rv("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),ov=rv("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),av=rv("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),lv=rv("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),cv=rv("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),dv=rv("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),hv=rv("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),uv=rv("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),gv=rv("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),fv=rv("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab");function pv(e){return mi(e[e.length-1])}var mv=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(rv);const _v=pv(mv);var bv=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(rv);const vv=pv(bv);var yv=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(rv);const wv=pv(yv);var Cv=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(rv);const Sv=pv(Cv);var kv=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(rv);const xv=pv(kv);var Lv=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(rv);const Mv=pv(Lv);var Dv=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(rv);const Nv=pv(Dv);var Ev=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(rv);const Tv=pv(Ev);var Iv=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(rv);const Ov=pv(Iv);var Av=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(rv);const Rv=pv(Av);var Pv=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(rv);const Fv=pv(Pv);var Bv=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(rv);const Wv=pv(Bv);var Yv=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(rv);const Hv=pv(Yv);var jv=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(rv);const Vv=pv(jv);var zv=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(rv);const Uv=pv(zv);var $v=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(rv);const Kv=pv($v);var qv=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(rv);const Gv=pv(qv);var Zv=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(rv);const Jv=pv(Zv);var Qv=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(rv);const Xv=pv(Qv);var ey=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(rv);const ty=pv(ey);var iy=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(rv);const ny=pv(iy);var ry=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(rv);const sy=pv(ry);var oy=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(rv);const ay=pv(oy);var ly=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(rv);const cy=pv(ly);var dy=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(rv);const hy=pv(dy);var uy=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(rv);const gy=pv(uy);var fy=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(rv);const py=pv(fy);function my(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-e*(35.34-e*(2381.73-e*(6402.7-e*(7024.72-2710.57*e)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+e*(170.73+e*(52.82-e*(131.46-e*(176.58-67.37*e)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+e*(442.36-e*(2482.43-e*(6167.24-e*(6614.94-2475.67*e)))))))+")"}const _y=Hf(zs(300,.5,0),zs(-240,.5,1));var by=Hf(zs(-100,.75,.35),zs(80,1.5,.8)),vy=Hf(zs(260,.75,.35),zs(80,1.5,.8)),yy=zs();function wy(e){(e<0||e>1)&&(e-=Math.floor(e));var t=Math.abs(e-.5);return yy.h=360*e-100,yy.s=1.5-1.5*t,yy.l=.8-.9*t,yy+""}var Cy=Jt(),Sy=Math.PI/3,ky=2*Math.PI/3;function xy(e){var t;return e=(.5-e)*Math.PI,Cy.r=255*(t=Math.sin(e))*t,Cy.g=255*(t=Math.sin(e+Sy))*t,Cy.b=255*(t=Math.sin(e+ky))*t,Cy+""}function Ly(e){return e=Math.max(0,Math.min(1,e)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+e*(1172.33-e*(10793.56-e*(33300.12-e*(38394.49-14825.05*e)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+e*(557.33+e*(1225.33-e*(3574.96-e*(1073.77+707.56*e)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+e*(3211.1-e*(15327.97-e*(27814-e*(22569.18-6838.66*e)))))))+")"}function My(e){var t=e.length;return function(i){return e[Math.max(0,Math.min(t-1,Math.floor(i*t)))]}}const Dy=My(rv("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));var Ny=My(rv("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),Ey=My(rv("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),Ty=My(rv("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function Iy(e){return kt(rt(e).call(document.documentElement))}var Oy=0;function Ay(){return new Ry}function Ry(){this._="@"+(++Oy).toString(36)}function Py(e){return"string"==typeof e?new wt([document.querySelectorAll(e)],[document.documentElement]):new wt([null==e?[]:e],yt)}function Fy(e,t){null==t&&(t=Ni().touches);for(var i=0,n=t?t.length:0,r=new Array(n);i<n;++i)r[i]=Ei(e,t[i]);return r}function By(e){return function(){return e}}Ry.prototype=Ay.prototype={constructor:Ry,get:function(e){for(var t=this._;!(t in e);)if(!(e=e.parentNode))return;return e[t]},set:function(e,t){return e[this._]=t},remove:function(e){return this._ in e&&delete e[this._]},toString:function(){return this._}};var Wy=Math.abs,Yy=Math.atan2,Hy=Math.cos,jy=Math.max,Vy=Math.min,zy=Math.sin,Uy=Math.sqrt,$y=1e-12,Ky=Math.PI,qy=Ky/2,Gy=2*Ky;function Zy(e){return e>1?0:e<-1?Ky:Math.acos(e)}function Jy(e){return e>=1?qy:e<=-1?-qy:Math.asin(e)}function Qy(e){return e.innerRadius}function Xy(e){return e.outerRadius}function ew(e){return e.startAngle}function tw(e){return e.endAngle}function iw(e){return e&&e.padAngle}function nw(e,t,i,n,r,s,o,a){var l=i-e,c=n-t,d=o-r,h=a-s,u=h*l-d*c;if(!(u*u<$y))return[e+(u=(d*(t-s)-h*(e-r))/u)*l,t+u*c]}function rw(e,t,i,n,r,s,o){var a=e-i,l=t-n,c=(o?s:-s)/Uy(a*a+l*l),d=c*l,h=-c*a,u=e+d,g=t+h,f=i+d,p=n+h,m=(u+f)/2,_=(g+p)/2,b=f-u,v=p-g,y=b*b+v*v,w=r-s,C=u*p-f*g,S=(v<0?-1:1)*Uy(jy(0,w*w*y-C*C)),k=(C*v-b*S)/y,x=(-C*b-v*S)/y,L=(C*v+b*S)/y,M=(-C*b+v*S)/y,D=k-m,N=x-_,E=L-m,T=M-_;return D*D+N*N>E*E+T*T&&(k=L,x=M),{cx:k,cy:x,x01:-d,y01:-h,x11:k*(r/w-1),y11:x*(r/w-1)}}function sw(){var e=Qy,t=Xy,i=By(0),n=null,r=ew,s=tw,o=iw,a=null;function l(){var l,c,d=+e.apply(this,arguments),h=+t.apply(this,arguments),u=r.apply(this,arguments)-qy,g=s.apply(this,arguments)-qy,f=Wy(g-u),p=g>u;if(a||(a=l=$r()),h<d&&(c=h,h=d,d=c),h>$y)if(f>Gy-$y)a.moveTo(h*Hy(u),h*zy(u)),a.arc(0,0,h,u,g,!p),d>$y&&(a.moveTo(d*Hy(g),d*zy(g)),a.arc(0,0,d,g,u,p));else{var m,_,b=u,v=g,y=u,w=g,C=f,S=f,k=o.apply(this,arguments)/2,x=k>$y&&(n?+n.apply(this,arguments):Uy(d*d+h*h)),L=Vy(Wy(h-d)/2,+i.apply(this,arguments)),M=L,D=L;if(x>$y){var N=Jy(x/d*zy(k)),E=Jy(x/h*zy(k));(C-=2*N)>$y?(y+=N*=p?1:-1,w-=N):(C=0,y=w=(u+g)/2),(S-=2*E)>$y?(b+=E*=p?1:-1,v-=E):(S=0,b=v=(u+g)/2)}var T=h*Hy(b),I=h*zy(b),O=d*Hy(w),A=d*zy(w);if(L>$y){var R,P=h*Hy(v),F=h*zy(v),B=d*Hy(y),W=d*zy(y);if(f<Ky&&(R=nw(T,I,B,W,P,F,O,A))){var Y=T-R[0],H=I-R[1],j=P-R[0],V=F-R[1],z=1/zy(Zy((Y*j+H*V)/(Uy(Y*Y+H*H)*Uy(j*j+V*V)))/2),U=Uy(R[0]*R[0]+R[1]*R[1]);M=Vy(L,(d-U)/(z-1)),D=Vy(L,(h-U)/(z+1))}}S>$y?D>$y?(m=rw(B,W,T,I,h,D,p),_=rw(P,F,O,A,h,D,p),a.moveTo(m.cx+m.x01,m.cy+m.y01),D<L?a.arc(m.cx,m.cy,D,Yy(m.y01,m.x01),Yy(_.y01,_.x01),!p):(a.arc(m.cx,m.cy,D,Yy(m.y01,m.x01),Yy(m.y11,m.x11),!p),a.arc(0,0,h,Yy(m.cy+m.y11,m.cx+m.x11),Yy(_.cy+_.y11,_.cx+_.x11),!p),a.arc(_.cx,_.cy,D,Yy(_.y11,_.x11),Yy(_.y01,_.x01),!p))):(a.moveTo(T,I),a.arc(0,0,h,b,v,!p)):a.moveTo(T,I),d>$y&&C>$y?M>$y?(m=rw(O,A,P,F,d,-M,p),_=rw(T,I,B,W,d,-M,p),a.lineTo(m.cx+m.x01,m.cy+m.y01),M<L?a.arc(m.cx,m.cy,M,Yy(m.y01,m.x01),Yy(_.y01,_.x01),!p):(a.arc(m.cx,m.cy,M,Yy(m.y01,m.x01),Yy(m.y11,m.x11),!p),a.arc(0,0,d,Yy(m.cy+m.y11,m.cx+m.x11),Yy(_.cy+_.y11,_.cx+_.x11),p),a.arc(_.cx,_.cy,M,Yy(_.y11,_.x11),Yy(_.y01,_.x01),!p))):a.arc(0,0,d,w,y,p):a.lineTo(O,A)}else a.moveTo(0,0);if(a.closePath(),l)return a=null,l+""||null}return l.centroid=function(){var i=(+e.apply(this,arguments)+ +t.apply(this,arguments))/2,n=(+r.apply(this,arguments)+ +s.apply(this,arguments))/2-Ky/2;return[Hy(n)*i,zy(n)*i]},l.innerRadius=function(t){return arguments.length?(e="function"==typeof t?t:By(+t),l):e},l.outerRadius=function(e){return arguments.length?(t="function"==typeof e?e:By(+e),l):t},l.cornerRadius=function(e){return arguments.length?(i="function"==typeof e?e:By(+e),l):i},l.padRadius=function(e){return arguments.length?(n=null==e?null:"function"==typeof e?e:By(+e),l):n},l.startAngle=function(e){return arguments.length?(r="function"==typeof e?e:By(+e),l):r},l.endAngle=function(e){return arguments.length?(s="function"==typeof e?e:By(+e),l):s},l.padAngle=function(e){return arguments.length?(o="function"==typeof e?e:By(+e),l):o},l.context=function(e){return arguments.length?(a=null==e?null:e,l):a},l}function ow(e){this._context=e}function aw(e){return new ow(e)}function lw(e){return e[0]}function cw(e){return e[1]}function dw(){var e=lw,t=cw,i=By(!0),n=null,r=aw,s=null;function o(o){var a,l,c,d=o.length,h=!1;for(null==n&&(s=r(c=$r())),a=0;a<=d;++a)!(a<d&&i(l=o[a],a,o))===h&&((h=!h)?s.lineStart():s.lineEnd()),h&&s.point(+e(l,a,o),+t(l,a,o));if(c)return s=null,c+""||null}return o.x=function(t){return arguments.length?(e="function"==typeof t?t:By(+t),o):e},o.y=function(e){return arguments.length?(t="function"==typeof e?e:By(+e),o):t},o.defined=function(e){return arguments.length?(i="function"==typeof e?e:By(!!e),o):i},o.curve=function(e){return arguments.length?(r=e,null!=n&&(s=r(n)),o):r},o.context=function(e){return arguments.length?(null==e?n=s=null:s=r(n=e),o):n},o}function hw(){var e=lw,t=null,i=By(0),n=cw,r=By(!0),s=null,o=aw,a=null;function l(l){var c,d,h,u,g,f=l.length,p=!1,m=new Array(f),_=new Array(f);for(null==s&&(a=o(g=$r())),c=0;c<=f;++c){if(!(c<f&&r(u=l[c],c,l))===p)if(p=!p)d=c,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),h=c-1;h>=d;--h)a.point(m[h],_[h]);a.lineEnd(),a.areaEnd()}p&&(m[c]=+e(u,c,l),_[c]=+i(u,c,l),a.point(t?+t(u,c,l):m[c],n?+n(u,c,l):_[c]))}if(g)return a=null,g+""||null}function c(){return dw().defined(r).curve(o).context(s)}return l.x=function(i){return arguments.length?(e="function"==typeof i?i:By(+i),t=null,l):e},l.x0=function(t){return arguments.length?(e="function"==typeof t?t:By(+t),l):e},l.x1=function(e){return arguments.length?(t=null==e?null:"function"==typeof e?e:By(+e),l):t},l.y=function(e){return arguments.length?(i="function"==typeof e?e:By(+e),n=null,l):i},l.y0=function(e){return arguments.length?(i="function"==typeof e?e:By(+e),l):i},l.y1=function(e){return arguments.length?(n=null==e?null:"function"==typeof e?e:By(+e),l):n},l.lineX0=l.lineY0=function(){return c().x(e).y(i)},l.lineY1=function(){return c().x(e).y(n)},l.lineX1=function(){return c().x(t).y(i)},l.defined=function(e){return arguments.length?(r="function"==typeof e?e:By(!!e),l):r},l.curve=function(e){return arguments.length?(o=e,null!=s&&(a=o(s)),l):o},l.context=function(e){return arguments.length?(null==e?s=a=null:a=o(s=e),l):s},l}function uw(e,t){return t<e?-1:t>e?1:t>=e?0:NaN}function gw(e){return e}function fw(){var e=gw,t=uw,i=null,n=By(0),r=By(Gy),s=By(0);function o(o){var a,l,c,d,h,u=o.length,g=0,f=new Array(u),p=new Array(u),m=+n.apply(this,arguments),_=Math.min(Gy,Math.max(-Gy,r.apply(this,arguments)-m)),b=Math.min(Math.abs(_)/u,s.apply(this,arguments)),v=b*(_<0?-1:1);for(a=0;a<u;++a)(h=p[f[a]=a]=+e(o[a],a,o))>0&&(g+=h);for(null!=t?f.sort((function(e,i){return t(p[e],p[i])})):null!=i&&f.sort((function(e,t){return i(o[e],o[t])})),a=0,c=g?(_-u*v)/g:0;a<u;++a,m=d)l=f[a],d=m+((h=p[l])>0?h*c:0)+v,p[l]={data:o[l],index:a,value:h,startAngle:m,endAngle:d,padAngle:b};return p}return o.value=function(t){return arguments.length?(e="function"==typeof t?t:By(+t),o):e},o.sortValues=function(e){return arguments.length?(t=e,i=null,o):t},o.sort=function(e){return arguments.length?(i=e,t=null,o):i},o.startAngle=function(e){return arguments.length?(n="function"==typeof e?e:By(+e),o):n},o.endAngle=function(e){return arguments.length?(r="function"==typeof e?e:By(+e),o):r},o.padAngle=function(e){return arguments.length?(s="function"==typeof e?e:By(+e),o):s},o}ow.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t)}}};var pw=_w(aw);function mw(e){this._curve=e}function _w(e){function t(t){return new mw(e(t))}return t._curve=e,t}function bw(e){var t=e.curve;return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e.curve=function(e){return arguments.length?t(_w(e)):t()._curve},e}function vw(){return bw(dw().curve(pw))}function yw(){var e=hw().curve(pw),t=e.curve,i=e.lineX0,n=e.lineX1,r=e.lineY0,s=e.lineY1;return e.angle=e.x,delete e.x,e.startAngle=e.x0,delete e.x0,e.endAngle=e.x1,delete e.x1,e.radius=e.y,delete e.y,e.innerRadius=e.y0,delete e.y0,e.outerRadius=e.y1,delete e.y1,e.lineStartAngle=function(){return bw(i())},delete e.lineX0,e.lineEndAngle=function(){return bw(n())},delete e.lineX1,e.lineInnerRadius=function(){return bw(r())},delete e.lineY0,e.lineOuterRadius=function(){return bw(s())},delete e.lineY1,e.curve=function(e){return arguments.length?t(_w(e)):t()._curve},e}function ww(e,t){return[(t=+t)*Math.cos(e-=Math.PI/2),t*Math.sin(e)]}mw.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(e,t){this._curve.point(t*Math.sin(e),t*-Math.cos(e))}};var Cw=Array.prototype.slice;function Sw(e){return e.source}function kw(e){return e.target}function xw(e){var t=Sw,i=kw,n=lw,r=cw,s=null;function o(){var o,a=Cw.call(arguments),l=t.apply(this,a),c=i.apply(this,a);if(s||(s=o=$r()),e(s,+n.apply(this,(a[0]=l,a)),+r.apply(this,a),+n.apply(this,(a[0]=c,a)),+r.apply(this,a)),o)return s=null,o+""||null}return o.source=function(e){return arguments.length?(t=e,o):t},o.target=function(e){return arguments.length?(i=e,o):i},o.x=function(e){return arguments.length?(n="function"==typeof e?e:By(+e),o):n},o.y=function(e){return arguments.length?(r="function"==typeof e?e:By(+e),o):r},o.context=function(e){return arguments.length?(s=null==e?null:e,o):s},o}function Lw(e,t,i,n,r){e.moveTo(t,i),e.bezierCurveTo(t=(t+n)/2,i,t,r,n,r)}function Mw(e,t,i,n,r){e.moveTo(t,i),e.bezierCurveTo(t,i=(i+r)/2,n,i,n,r)}function Dw(e,t,i,n,r){var s=ww(t,i),o=ww(t,i=(i+r)/2),a=ww(n,i),l=ww(n,r);e.moveTo(s[0],s[1]),e.bezierCurveTo(o[0],o[1],a[0],a[1],l[0],l[1])}function Nw(){return xw(Lw)}function Ew(){return xw(Mw)}function Tw(){var e=xw(Dw);return e.angle=e.x,delete e.x,e.radius=e.y,delete e.y,e}const Iw={draw:function(e,t){var i=Math.sqrt(t/Ky);e.moveTo(i,0),e.arc(0,0,i,0,Gy)}},Ow={draw:function(e,t){var i=Math.sqrt(t/5)/2;e.moveTo(-3*i,-i),e.lineTo(-i,-i),e.lineTo(-i,-3*i),e.lineTo(i,-3*i),e.lineTo(i,-i),e.lineTo(3*i,-i),e.lineTo(3*i,i),e.lineTo(i,i),e.lineTo(i,3*i),e.lineTo(-i,3*i),e.lineTo(-i,i),e.lineTo(-3*i,i),e.closePath()}};var Aw=Math.sqrt(1/3),Rw=2*Aw;const Pw={draw:function(e,t){var i=Math.sqrt(t/Rw),n=i*Aw;e.moveTo(0,-i),e.lineTo(n,0),e.lineTo(0,i),e.lineTo(-n,0),e.closePath()}};var Fw=Math.sin(Ky/10)/Math.sin(7*Ky/10),Bw=Math.sin(Gy/10)*Fw,Ww=-Math.cos(Gy/10)*Fw;const Yw={draw:function(e,t){var i=Math.sqrt(.8908130915292852*t),n=Bw*i,r=Ww*i;e.moveTo(0,-i),e.lineTo(n,r);for(var s=1;s<5;++s){var o=Gy*s/5,a=Math.cos(o),l=Math.sin(o);e.lineTo(l*i,-a*i),e.lineTo(a*n-l*r,l*n+a*r)}e.closePath()}},Hw={draw:function(e,t){var i=Math.sqrt(t),n=-i/2;e.rect(n,n,i,i)}};var jw=Math.sqrt(3);const Vw={draw:function(e,t){var i=-Math.sqrt(t/(3*jw));e.moveTo(0,2*i),e.lineTo(-jw*i,-i),e.lineTo(jw*i,-i),e.closePath()}};var zw=-.5,Uw=Math.sqrt(3)/2,$w=1/Math.sqrt(12),Kw=3*($w/2+1);const qw={draw:function(e,t){var i=Math.sqrt(t/Kw),n=i/2,r=i*$w,s=n,o=i*$w+i,a=-s,l=o;e.moveTo(n,r),e.lineTo(s,o),e.lineTo(a,l),e.lineTo(zw*n-Uw*r,Uw*n+zw*r),e.lineTo(zw*s-Uw*o,Uw*s+zw*o),e.lineTo(zw*a-Uw*l,Uw*a+zw*l),e.lineTo(zw*n+Uw*r,zw*r-Uw*n),e.lineTo(zw*s+Uw*o,zw*o-Uw*s),e.lineTo(zw*a+Uw*l,zw*l-Uw*a),e.closePath()}};var Gw=[Iw,Ow,Pw,Hw,Yw,Vw,qw];function Zw(){var e=By(Iw),t=By(64),i=null;function n(){var n;if(i||(i=n=$r()),e.apply(this,arguments).draw(i,+t.apply(this,arguments)),n)return i=null,n+""||null}return n.type=function(t){return arguments.length?(e="function"==typeof t?t:By(t),n):e},n.size=function(e){return arguments.length?(t="function"==typeof e?e:By(+e),n):t},n.context=function(e){return arguments.length?(i=null==e?null:e,n):i},n}function Jw(){}function Qw(e,t,i){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+i)/6)}function Xw(e){this._context=e}function eC(e){return new Xw(e)}function tC(e){this._context=e}function iC(e){return new tC(e)}function nC(e){this._context=e}function rC(e){return new nC(e)}function sC(e,t){this._basis=new Xw(e),this._beta=t}Xw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Qw(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Qw(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},tC.prototype={areaStart:Jw,areaEnd:Jw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Qw(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},nC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var i=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(i,n):this._context.moveTo(i,n);break;case 3:this._point=4;default:Qw(this,e,t)}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}},sC.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var e=this._x,t=this._y,i=e.length-1;if(i>0)for(var n,r=e[0],s=t[0],o=e[i]-r,a=t[i]-s,l=-1;++l<=i;)n=l/i,this._basis.point(this._beta*e[l]+(1-this._beta)*(r+n*o),this._beta*t[l]+(1-this._beta)*(s+n*a));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};const oC=function e(t){function i(e){return 1===t?new Xw(e):new sC(e,t)}return i.beta=function(t){return e(+t)},i}(.85);function aC(e,t,i){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-i),e._x2,e._y2)}function lC(e,t){this._context=e,this._k=(1-t)/6}lC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:aC(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:aC(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const cC=function e(t){function i(e){return new lC(e,t)}return i.tension=function(t){return e(+t)},i}(0);function dC(e,t){this._context=e,this._k=(1-t)/6}dC.prototype={areaStart:Jw,areaEnd:Jw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:aC(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const hC=function e(t){function i(e){return new dC(e,t)}return i.tension=function(t){return e(+t)},i}(0);function uC(e,t){this._context=e,this._k=(1-t)/6}uC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:aC(this,e,t)}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const gC=function e(t){function i(e){return new uC(e,t)}return i.tension=function(t){return e(+t)},i}(0);function fC(e,t,i){var n=e._x1,r=e._y1,s=e._x2,o=e._y2;if(e._l01_a>$y){var a=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);n=(n*a-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,r=(r*a-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>$y){var c=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,d=3*e._l23_a*(e._l23_a+e._l12_a);s=(s*c+e._x1*e._l23_2a-t*e._l12_2a)/d,o=(o*c+e._y1*e._l23_2a-i*e._l12_2a)/d}e._context.bezierCurveTo(n,r,s,o,e._x2,e._y2)}function pC(e,t){this._context=e,this._alpha=t}pC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var i=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:fC(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const mC=function e(t){function i(e){return t?new pC(e,t):new lC(e,0)}return i.alpha=function(t){return e(+t)},i}(.5);function _C(e,t){this._context=e,this._alpha=t}_C.prototype={areaStart:Jw,areaEnd:Jw,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(e,t){if(e=+e,t=+t,this._point){var i=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:fC(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const bC=function e(t){function i(e){return t?new _C(e,t):new dC(e,0)}return i.alpha=function(t){return e(+t)},i}(.5);function vC(e,t){this._context=e,this._alpha=t}vC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var i=this._x2-e,n=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(i*i+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:fC(this,e,t)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const yC=function e(t){function i(e){return t?new vC(e,t):new uC(e,0)}return i.alpha=function(t){return e(+t)},i}(.5);function wC(e){this._context=e}function CC(e){return new wC(e)}function SC(e){return e<0?-1:1}function kC(e,t,i){var n=e._x1-e._x0,r=t-e._x1,s=(e._y1-e._y0)/(n||r<0&&-0),o=(i-e._y1)/(r||n<0&&-0),a=(s*r+o*n)/(n+r);return(SC(s)+SC(o))*Math.min(Math.abs(s),Math.abs(o),.5*Math.abs(a))||0}function xC(e,t){var i=e._x1-e._x0;return i?(3*(e._y1-e._y0)/i-t)/2:t}function LC(e,t,i){var n=e._x0,r=e._y0,s=e._x1,o=e._y1,a=(s-n)/3;e._context.bezierCurveTo(n+a,r+a*t,s-a,o-a*i,s,o)}function MC(e){this._context=e}function DC(e){this._context=new NC(e)}function NC(e){this._context=e}function EC(e){return new MC(e)}function TC(e){return new DC(e)}function IC(e){this._context=e}function OC(e){var t,i,n=e.length-1,r=new Array(n),s=new Array(n),o=new Array(n);for(r[0]=0,s[0]=2,o[0]=e[0]+2*e[1],t=1;t<n-1;++t)r[t]=1,s[t]=4,o[t]=4*e[t]+2*e[t+1];for(r[n-1]=2,s[n-1]=7,o[n-1]=8*e[n-1]+e[n],t=1;t<n;++t)i=r[t]/s[t-1],s[t]-=i,o[t]-=i*o[t-1];for(r[n-1]=o[n-1]/s[n-1],t=n-2;t>=0;--t)r[t]=(o[t]-r[t+1])/s[t];for(s[n-1]=(e[n]+r[n-1])/2,t=0;t<n-1;++t)s[t]=2*e[t+1]-r[t+1];return[r,s]}function AC(e){return new IC(e)}function RC(e,t){this._context=e,this._t=t}function PC(e){return new RC(e,.5)}function FC(e){return new RC(e,0)}function BC(e){return new RC(e,1)}function WC(e,t){if((r=e.length)>1)for(var i,n,r,s=1,o=e[t[0]],a=o.length;s<r;++s)for(n=o,o=e[t[s]],i=0;i<a;++i)o[i][1]+=o[i][0]=isNaN(n[i][1])?n[i][0]:n[i][1]}function YC(e){for(var t=e.length,i=new Array(t);--t>=0;)i[t]=t;return i}function HC(e,t){return e[t]}function jC(){var e=By([]),t=YC,i=WC,n=HC;function r(r){var s,o,a=e.apply(this,arguments),l=r.length,c=a.length,d=new Array(c);for(s=0;s<c;++s){for(var h,u=a[s],g=d[s]=new Array(l),f=0;f<l;++f)g[f]=h=[0,+n(r[f],u,f,r)],h.data=r[f];g.key=u}for(s=0,o=t(d);s<c;++s)d[o[s]].index=s;return i(d,o),d}return r.keys=function(t){return arguments.length?(e="function"==typeof t?t:By(Cw.call(t)),r):e},r.value=function(e){return arguments.length?(n="function"==typeof e?e:By(+e),r):n},r.order=function(e){return arguments.length?(t=null==e?YC:"function"==typeof e?e:By(Cw.call(e)),r):t},r.offset=function(e){return arguments.length?(i=null==e?WC:e,r):i},r}function VC(e,t){if((n=e.length)>0){for(var i,n,r,s=0,o=e[0].length;s<o;++s){for(r=i=0;i<n;++i)r+=e[i][s][1]||0;if(r)for(i=0;i<n;++i)e[i][s][1]/=r}WC(e,t)}}function zC(e,t){if((a=e.length)>0)for(var i,n,r,s,o,a,l=0,c=e[t[0]].length;l<c;++l)for(s=o=0,i=0;i<a;++i)(r=(n=e[t[i]][l])[1]-n[0])>0?(n[0]=s,n[1]=s+=r):r<0?(n[1]=o,n[0]=o+=r):(n[0]=0,n[1]=r)}function UC(e,t){if((i=e.length)>0){for(var i,n=0,r=e[t[0]],s=r.length;n<s;++n){for(var o=0,a=0;o<i;++o)a+=e[o][n][1]||0;r[n][1]+=r[n][0]=-a/2}WC(e,t)}}function $C(e,t){if((r=e.length)>0&&(n=(i=e[t[0]]).length)>0){for(var i,n,r,s=0,o=1;o<n;++o){for(var a=0,l=0,c=0;a<r;++a){for(var d=e[t[a]],h=d[o][1]||0,u=(h-(d[o-1][1]||0))/2,g=0;g<a;++g){var f=e[t[g]];u+=(f[o][1]||0)-(f[o-1][1]||0)}l+=h,c+=u*h}i[o-1][1]+=i[o-1][0]=s,l&&(s-=c/l)}i[o-1][1]+=i[o-1][0]=s,WC(e,t)}}function KC(e){var t=e.map(qC);return YC(e).sort((function(e,i){return t[e]-t[i]}))}function qC(e){for(var t,i=-1,n=0,r=e.length,s=-1/0;++i<r;)(t=+e[i][1])>s&&(s=t,n=i);return n}function GC(e){var t=e.map(ZC);return YC(e).sort((function(e,i){return t[e]-t[i]}))}function ZC(e){for(var t,i=0,n=-1,r=e.length;++n<r;)(t=+e[n][1])&&(i+=t);return i}function JC(e){return GC(e).reverse()}function QC(e){var t,i,n=e.length,r=e.map(ZC),s=KC(e),o=0,a=0,l=[],c=[];for(t=0;t<n;++t)i=s[t],o<a?(o+=r[i],l.push(i)):(a+=r[i],c.push(i));return c.reverse().concat(l)}function XC(e){return YC(e).reverse()}wC.prototype={areaStart:Jw,areaEnd:Jw,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}},MC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:LC(this,this._t0,xC(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var i=NaN;if(t=+t,(e=+e)!==this._x1||t!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,LC(this,xC(this,i=kC(this,e,t)),i);break;default:LC(this,this._t0,i=kC(this,e,t))}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=i}}},(DC.prototype=Object.create(MC.prototype)).point=function(e,t){MC.prototype.point.call(this,t,e)},NC.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,i,n,r,s){this._context.bezierCurveTo(t,e,n,i,s,r)}},IC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,i=e.length;if(i)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),2===i)this._context.lineTo(e[1],t[1]);else for(var n=OC(e),r=OC(t),s=0,o=1;o<i;++s,++o)this._context.bezierCurveTo(n[0][s],r[0][s],n[1][s],r[1][s],e[o],t[o]);(this._line||0!==this._line&&1===i)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(e,t){this._x.push(+e),this._y.push(+t)}},RC.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var i=this._x*(1-this._t)+e*this._t;this._context.lineTo(i,this._y),this._context.lineTo(i,t)}}this._x=e,this._y=t}};var eS="%Y-%m-%dT%H:%M:%S.%LZ";const tS=Date.prototype.toISOString?function(e){return e.toISOString()}:p_(eS),iS=+new Date("2000-01-01T00:00:00.000Z")?function(e){var t=new Date(e);return isNaN(t)?null:t}:m_(eS);function nS(e,t,i){var n=new Ui,r=t;return null==t?(n.restart(e,t,i),n):(t=+t,i=null==i?Vi():+i,n.restart((function s(o){o+=r,n.restart(s,r+=t,i),e(o)}),t,i),n)}function rS(e){return function(){return e}}function sS(e){return e[0]}function oS(e){return e[1]}function aS(){this._=null}function lS(e){e.U=e.C=e.L=e.R=e.P=e.N=null}function cS(e,t){var i=t,n=t.R,r=i.U;r?r.L===i?r.L=n:r.R=n:e._=n,n.U=r,i.U=n,i.R=n.L,i.R&&(i.R.U=i),n.L=i}function dS(e,t){var i=t,n=t.L,r=i.U;r?r.L===i?r.L=n:r.R=n:e._=n,n.U=r,i.U=n,i.L=n.R,i.L&&(i.L.U=i),n.R=i}function hS(e){for(;e.L;)e=e.L;return e}aS.prototype={constructor:aS,insert:function(e,t){var i,n,r;if(e){if(t.P=e,t.N=e.N,e.N&&(e.N.P=t),e.N=t,e.R){for(e=e.R;e.L;)e=e.L;e.L=t}else e.R=t;i=e}else this._?(e=hS(this._),t.P=null,t.N=e,e.P=e.L=t,i=e):(t.P=t.N=null,this._=t,i=null);for(t.L=t.R=null,t.U=i,t.C=!0,e=t;i&&i.C;)i===(n=i.U).L?(r=n.R)&&r.C?(i.C=r.C=!1,n.C=!0,e=n):(e===i.R&&(cS(this,i),i=(e=i).U),i.C=!1,n.C=!0,dS(this,n)):(r=n.L)&&r.C?(i.C=r.C=!1,n.C=!0,e=n):(e===i.L&&(dS(this,i),i=(e=i).U),i.C=!1,n.C=!0,cS(this,n)),i=e.U;this._.C=!1},remove:function(e){e.N&&(e.N.P=e.P),e.P&&(e.P.N=e.N),e.N=e.P=null;var t,i,n,r=e.U,s=e.L,o=e.R;if(i=s?o?hS(o):s:o,r?r.L===e?r.L=i:r.R=i:this._=i,s&&o?(n=i.C,i.C=e.C,i.L=s,s.U=i,i!==o?(r=i.U,i.U=e.U,e=i.R,r.L=e,i.R=o,o.U=i):(i.U=r,r=i,e=i.R)):(n=e.C,e=i),e&&(e.U=r),!n)if(e&&e.C)e.C=!1;else{do{if(e===this._)break;if(e===r.L){if((t=r.R).C&&(t.C=!1,r.C=!0,cS(this,r),t=r.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,dS(this,t),t=r.R),t.C=r.C,r.C=t.R.C=!1,cS(this,r),e=this._;break}}else if((t=r.L).C&&(t.C=!1,r.C=!0,dS(this,r),t=r.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,cS(this,t),t=r.L),t.C=r.C,r.C=t.L.C=!1,dS(this,r),e=this._;break}t.C=!0,e=r,r=r.U}while(!e.C);e&&(e.C=!1)}}};const uS=aS;function gS(e,t,i,n){var r=[null,null],s=FS.push(r)-1;return r.left=e,r.right=t,i&&pS(r,e,t,i),n&&pS(r,t,e,n),RS[e.index].halfedges.push(s),RS[t.index].halfedges.push(s),r}function fS(e,t,i){var n=[t,i];return n.left=e,n}function pS(e,t,i,n){e[0]||e[1]?e.left===i?e[1]=n:e[0]=n:(e[0]=n,e.left=t,e.right=i)}function mS(e,t,i,n,r){var s,o=e[0],a=e[1],l=o[0],c=o[1],d=0,h=1,u=a[0]-l,g=a[1]-c;if(s=t-l,u||!(s>0)){if(s/=u,u<0){if(s<d)return;s<h&&(h=s)}else if(u>0){if(s>h)return;s>d&&(d=s)}if(s=n-l,u||!(s<0)){if(s/=u,u<0){if(s>h)return;s>d&&(d=s)}else if(u>0){if(s<d)return;s<h&&(h=s)}if(s=i-c,g||!(s>0)){if(s/=g,g<0){if(s<d)return;s<h&&(h=s)}else if(g>0){if(s>h)return;s>d&&(d=s)}if(s=r-c,g||!(s<0)){if(s/=g,g<0){if(s>h)return;s>d&&(d=s)}else if(g>0){if(s<d)return;s<h&&(h=s)}return!(d>0||h<1)||(d>0&&(e[0]=[l+d*u,c+d*g]),h<1&&(e[1]=[l+h*u,c+h*g]),!0)}}}}}function _S(e,t,i,n,r){var s=e[1];if(s)return!0;var o,a,l=e[0],c=e.left,d=e.right,h=c[0],u=c[1],g=d[0],f=d[1],p=(h+g)/2,m=(u+f)/2;if(f===u){if(p<t||p>=n)return;if(h>g){if(l){if(l[1]>=r)return}else l=[p,i];s=[p,r]}else{if(l){if(l[1]<i)return}else l=[p,r];s=[p,i]}}else if(a=m-(o=(h-g)/(f-u))*p,o<-1||o>1)if(h>g){if(l){if(l[1]>=r)return}else l=[(i-a)/o,i];s=[(r-a)/o,r]}else{if(l){if(l[1]<i)return}else l=[(r-a)/o,r];s=[(i-a)/o,i]}else if(u<f){if(l){if(l[0]>=n)return}else l=[t,o*t+a];s=[n,o*n+a]}else{if(l){if(l[0]<t)return}else l=[n,o*n+a];s=[t,o*t+a]}return e[0]=l,e[1]=s,!0}function bS(e,t){var i=e.site,n=t.left,r=t.right;return i===r&&(r=n,n=i),r?Math.atan2(r[1]-n[1],r[0]-n[0]):(i===n?(n=t[1],r=t[0]):(n=t[0],r=t[1]),Math.atan2(n[0]-r[0],r[1]-n[1]))}function vS(e,t){return t[+(t.left!==e.site)]}function yS(e,t){return t[+(t.left===e.site)]}var wS,CS=[];function SS(){lS(this),this.x=this.y=this.arc=this.site=this.cy=null}function kS(e){var t=e.P,i=e.N;if(t&&i){var n=t.site,r=e.site,s=i.site;if(n!==s){var o=r[0],a=r[1],l=n[0]-o,c=n[1]-a,d=s[0]-o,h=s[1]-a,u=2*(l*h-c*d);if(!(u>=-WS)){var g=l*l+c*c,f=d*d+h*h,p=(h*g-c*f)/u,m=(l*f-d*g)/u,_=CS.pop()||new SS;_.arc=e,_.site=r,_.x=p+o,_.y=(_.cy=m+a)+Math.sqrt(p*p+m*m),e.circle=_;for(var b=null,v=PS._;v;)if(_.y<v.y||_.y===v.y&&_.x<=v.x){if(!v.L){b=v.P;break}v=v.L}else{if(!v.R){b=v;break}v=v.R}PS.insert(b,_),b||(wS=_)}}}}function xS(e){var t=e.circle;t&&(t.P||(wS=t.N),PS.remove(t),CS.push(t),lS(t),e.circle=null)}var LS=[];function MS(){lS(this),this.edge=this.site=this.circle=null}function DS(e){var t=LS.pop()||new MS;return t.site=e,t}function NS(e){xS(e),AS.remove(e),LS.push(e),lS(e)}function ES(e){var t=e.circle,i=t.x,n=t.cy,r=[i,n],s=e.P,o=e.N,a=[e];NS(e);for(var l=s;l.circle&&Math.abs(i-l.circle.x)<BS&&Math.abs(n-l.circle.cy)<BS;)s=l.P,a.unshift(l),NS(l),l=s;a.unshift(l),xS(l);for(var c=o;c.circle&&Math.abs(i-c.circle.x)<BS&&Math.abs(n-c.circle.cy)<BS;)o=c.N,a.push(c),NS(c),c=o;a.push(c),xS(c);var d,h=a.length;for(d=1;d<h;++d)c=a[d],l=a[d-1],pS(c.edge,l.site,c.site,r);l=a[0],(c=a[h-1]).edge=gS(l.site,c.site,null,r),kS(l),kS(c)}function TS(e){for(var t,i,n,r,s=e[0],o=e[1],a=AS._;a;)if((n=IS(a,o)-s)>BS)a=a.L;else{if(!((r=s-OS(a,o))>BS)){n>-BS?(t=a.P,i=a):r>-BS?(t=a,i=a.N):t=i=a;break}if(!a.R){t=a;break}a=a.R}!function(e){RS[e.index]={site:e,halfedges:[]}}(e);var l=DS(e);if(AS.insert(t,l),t||i){if(t===i)return xS(t),i=DS(t.site),AS.insert(l,i),l.edge=i.edge=gS(t.site,l.site),kS(t),void kS(i);if(i){xS(t),xS(i);var c=t.site,d=c[0],h=c[1],u=e[0]-d,g=e[1]-h,f=i.site,p=f[0]-d,m=f[1]-h,_=2*(u*m-g*p),b=u*u+g*g,v=p*p+m*m,y=[(m*b-g*v)/_+d,(u*v-p*b)/_+h];pS(i.edge,c,f,y),l.edge=gS(c,e,null,y),i.edge=gS(e,f,null,y),kS(t),kS(i)}else l.edge=gS(t.site,l.site)}}function IS(e,t){var i=e.site,n=i[0],r=i[1],s=r-t;if(!s)return n;var o=e.P;if(!o)return-1/0;var a=(i=o.site)[0],l=i[1],c=l-t;if(!c)return a;var d=a-n,h=1/s-1/c,u=d/c;return h?(-u+Math.sqrt(u*u-2*h*(d*d/(-2*c)-l+c/2+r-s/2)))/h+n:(n+a)/2}function OS(e,t){var i=e.N;if(i)return IS(i,t);var n=e.site;return n[1]===t?n[0]:1/0}var AS,RS,PS,FS,BS=1e-6,WS=1e-12;function YS(e,t,i){return(e[0]-i[0])*(t[1]-e[1])-(e[0]-t[0])*(i[1]-e[1])}function HS(e,t){return t[1]-e[1]||t[0]-e[0]}function jS(e,t){var i,n,r,s=e.sort(HS).pop();for(FS=[],RS=new Array(e.length),AS=new uS,PS=new uS;;)if(r=wS,s&&(!r||s[1]<r.y||s[1]===r.y&&s[0]<r.x))s[0]===i&&s[1]===n||(TS(s),i=s[0],n=s[1]),s=e.pop();else{if(!r)break;ES(r.arc)}if(function(){for(var e,t,i,n,r=0,s=RS.length;r<s;++r)if((e=RS[r])&&(n=(t=e.halfedges).length)){var o=new Array(n),a=new Array(n);for(i=0;i<n;++i)o[i]=i,a[i]=bS(e,FS[t[i]]);for(o.sort((function(e,t){return a[t]-a[e]})),i=0;i<n;++i)a[i]=t[o[i]];for(i=0;i<n;++i)t[i]=a[i]}}(),t){var o=+t[0][0],a=+t[0][1],l=+t[1][0],c=+t[1][1];!function(e,t,i,n){for(var r,s=FS.length;s--;)_S(r=FS[s],e,t,i,n)&&mS(r,e,t,i,n)&&(Math.abs(r[0][0]-r[1][0])>BS||Math.abs(r[0][1]-r[1][1])>BS)||delete FS[s]}(o,a,l,c),function(e,t,i,n){var r,s,o,a,l,c,d,h,u,g,f,p,m=RS.length,_=!0;for(r=0;r<m;++r)if(s=RS[r]){for(o=s.site,a=(l=s.halfedges).length;a--;)FS[l[a]]||l.splice(a,1);for(a=0,c=l.length;a<c;)f=(g=yS(s,FS[l[a]]))[0],p=g[1],h=(d=vS(s,FS[l[++a%c]]))[0],u=d[1],(Math.abs(f-h)>BS||Math.abs(p-u)>BS)&&(l.splice(a,0,FS.push(fS(o,g,Math.abs(f-e)<BS&&n-p>BS?[e,Math.abs(h-e)<BS?u:n]:Math.abs(p-n)<BS&&i-f>BS?[Math.abs(u-n)<BS?h:i,n]:Math.abs(f-i)<BS&&p-t>BS?[i,Math.abs(h-i)<BS?u:t]:Math.abs(p-t)<BS&&f-e>BS?[Math.abs(u-t)<BS?h:e,t]:null))-1),++c);c&&(_=!1)}if(_){var b,v,y,w=1/0;for(r=0,_=null;r<m;++r)(s=RS[r])&&(y=(b=(o=s.site)[0]-e)*b+(v=o[1]-t)*v)<w&&(w=y,_=s);if(_){var C=[e,t],S=[e,n],k=[i,n],x=[i,t];_.halfedges.push(FS.push(fS(o=_.site,C,S))-1,FS.push(fS(o,S,k))-1,FS.push(fS(o,k,x))-1,FS.push(fS(o,x,C))-1)}}for(r=0;r<m;++r)(s=RS[r])&&(s.halfedges.length||delete RS[r])}(o,a,l,c)}this.edges=FS,this.cells=RS,AS=PS=FS=RS=null}function VS(){var e=sS,t=oS,i=null;function n(n){return new jS(n.map((function(i,r){var s=[Math.round(e(i,r,n)/BS)*BS,Math.round(t(i,r,n)/BS)*BS];return s.index=r,s.data=i,s})),i)}return n.polygons=function(e){return n(e).polygons()},n.links=function(e){return n(e).links()},n.triangles=function(e){return n(e).triangles()},n.x=function(t){return arguments.length?(e="function"==typeof t?t:rS(+t),n):e},n.y=function(e){return arguments.length?(t="function"==typeof e?e:rS(+e),n):t},n.extent=function(e){return arguments.length?(i=null==e?null:[[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]],n):i&&[[i[0][0],i[0][1]],[i[1][0],i[1][1]]]},n.size=function(e){return arguments.length?(i=null==e?null:[[0,0],[+e[0],+e[1]]],n):i&&[i[1][0]-i[0][0],i[1][1]-i[0][1]]},n}function zS(e){return function(){return e}}function US(e,t,i){this.target=e,this.type=t,this.transform=i}function $S(e,t,i){this.k=e,this.x=t,this.y=i}jS.prototype={constructor:jS,polygons:function(){var e=this.edges;return this.cells.map((function(t){var i=t.halfedges.map((function(i){return vS(t,e[i])}));return i.data=t.site.data,i}))},triangles:function(){var e=[],t=this.edges;return this.cells.forEach((function(i,n){if(s=(r=i.halfedges).length)for(var r,s,o,a=i.site,l=-1,c=t[r[s-1]],d=c.left===a?c.right:c.left;++l<s;)o=d,d=(c=t[r[l]]).left===a?c.right:c.left,o&&d&&n<o.index&&n<d.index&&YS(a,o,d)<0&&e.push([a.data,o.data,d.data])})),e},links:function(){return this.edges.filter((function(e){return e.right})).map((function(e){return{source:e.left.data,target:e.right.data}}))},find:function(e,t,i){for(var n,r,s=this,o=s._found||0,a=s.cells.length;!(r=s.cells[o]);)if(++o>=a)return null;var l=e-r.site[0],c=t-r.site[1],d=l*l+c*c;do{r=s.cells[n=o],o=null,r.halfedges.forEach((function(i){var n=s.edges[i],a=n.left;if(a!==r.site&&a||(a=n.right)){var l=e-a[0],c=t-a[1],h=l*l+c*c;h<d&&(d=h,o=a.index)}}))}while(null!==o);return s._found=n,null==i||d<=i*i?r.site:null}},$S.prototype={constructor:$S,scale:function(e){return 1===e?this:new $S(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new $S(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var KS=new $S(1,0,0);function qS(e){for(;!e.__zoom;)if(!(e=e.parentNode))return KS;return e.__zoom}function GS(){dt.stopImmediatePropagation()}function ZS(){dt.preventDefault(),dt.stopImmediatePropagation()}function JS(){return!dt.ctrlKey&&!dt.button}function QS(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function XS(){return this.__zoom||KS}function ek(){return-dt.deltaY*(1===dt.deltaMode?.05:dt.deltaMode?1:.002)}function tk(){return navigator.maxTouchPoints||"ontouchstart"in this}function ik(e,t,i){var n=e.invertX(t[0][0])-i[0][0],r=e.invertX(t[1][0])-i[1][0],s=e.invertY(t[0][1])-i[0][1],o=e.invertY(t[1][1])-i[1][1];return e.translate(r>n?(n+r)/2:Math.min(0,n)||Math.max(0,r),o>s?(s+o)/2:Math.min(0,s)||Math.max(0,o))}function nk(){var e,t,i=JS,n=QS,r=ik,s=ek,o=tk,a=[0,1/0],l=[[-1/0,-1/0],[1/0,1/0]],c=250,d=Tf,h=ue("start","zoom","end"),u=500,g=0;function f(e){e.property("__zoom",XS).on("wheel.zoom",w).on("mousedown.zoom",C).on("dblclick.zoom",S).filter(o).on("touchstart.zoom",k).on("touchmove.zoom",x).on("touchend.zoom touchcancel.zoom",L).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function p(e,t){return(t=Math.max(a[0],Math.min(a[1],t)))===e.k?e:new $S(t,e.x,e.y)}function m(e,t,i){var n=t[0]-i[0]*e.k,r=t[1]-i[1]*e.k;return n===e.x&&r===e.y?e:new $S(e.k,n,r)}function _(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function b(e,t,i){e.on("start.zoom",(function(){v(this,arguments).start()})).on("interrupt.zoom end.zoom",(function(){v(this,arguments).end()})).tween("zoom",(function(){var e=this,r=arguments,s=v(e,r),o=n.apply(e,r),a=null==i?_(o):"function"==typeof i?i.apply(e,r):i,l=Math.max(o[1][0]-o[0][0],o[1][1]-o[0][1]),c=e.__zoom,h="function"==typeof t?t.apply(e,r):t,u=d(c.invert(a).concat(l/c.k),h.invert(a).concat(l/h.k));return function(e){if(1===e)e=h;else{var t=u(e),i=l/t[2];e=new $S(i,a[0]-t[0]*i,a[1]-t[1]*i)}s.zoom(null,e)}}))}function v(e,t,i){return!i&&e.__zooming||new y(e,t)}function y(e,t){this.that=e,this.args=t,this.active=0,this.extent=n.apply(e,t),this.taps=0}function w(){if(i.apply(this,arguments)){var e=v(this,arguments),t=this.__zoom,n=Math.max(a[0],Math.min(a[1],t.k*Math.pow(2,s.apply(this,arguments)))),o=Ii(this);if(e.wheel)e.mouse[0][0]===o[0]&&e.mouse[0][1]===o[1]||(e.mouse[1]=t.invert(e.mouse[0]=o)),clearTimeout(e.wheel);else{if(t.k===n)return;e.mouse=[o,t.invert(o)],sn(this),e.start()}ZS(),e.wheel=setTimeout(c,150),e.zoom("mouse",r(m(p(t,n),e.mouse[0],e.mouse[1]),e.extent,l))}function c(){e.wheel=null,e.end()}}function C(){if(!t&&i.apply(this,arguments)){var e=v(this,arguments,!0),n=kt(dt.view).on("mousemove.zoom",c,!0).on("mouseup.zoom",d,!0),s=Ii(this),o=dt.clientX,a=dt.clientY;Mt(dt.view),GS(),e.mouse=[s,this.__zoom.invert(s)],sn(this),e.start()}function c(){if(ZS(),!e.moved){var t=dt.clientX-o,i=dt.clientY-a;e.moved=t*t+i*i>g}e.zoom("mouse",r(m(e.that.__zoom,e.mouse[0]=Ii(e.that),e.mouse[1]),e.extent,l))}function d(){n.on("mousemove.zoom mouseup.zoom",null),Dt(dt.view,e.moved),ZS(),e.end()}}function S(){if(i.apply(this,arguments)){var e=this.__zoom,t=Ii(this),s=e.invert(t),o=e.k*(dt.shiftKey?.5:2),a=r(m(p(e,o),t,s),n.apply(this,arguments),l);ZS(),c>0?kt(this).transition().duration(c).call(b,a,t):kt(this).call(f.transform,a)}}function k(){if(i.apply(this,arguments)){var t,n,r,s,o=dt.touches,a=o.length,l=v(this,arguments,dt.changedTouches.length===a);for(GS(),n=0;n<a;++n)s=[s=Ti(this,o,(r=o[n]).identifier),this.__zoom.invert(s),r.identifier],l.touch0?l.touch1||l.touch0[2]===s[2]||(l.touch1=s,l.taps=0):(l.touch0=s,t=!0,l.taps=1+!!e);e&&(e=clearTimeout(e)),t&&(l.taps<2&&(e=setTimeout((function(){e=null}),u)),sn(this),l.start())}}function x(){if(this.__zooming){var t,i,n,s,o=v(this,arguments),a=dt.changedTouches,c=a.length;for(ZS(),e&&(e=clearTimeout(e)),o.taps=0,t=0;t<c;++t)n=Ti(this,a,(i=a[t]).identifier),o.touch0&&o.touch0[2]===i.identifier?o.touch0[0]=n:o.touch1&&o.touch1[2]===i.identifier&&(o.touch1[0]=n);if(i=o.that.__zoom,o.touch1){var d=o.touch0[0],h=o.touch0[1],u=o.touch1[0],g=o.touch1[1],f=(f=u[0]-d[0])*f+(f=u[1]-d[1])*f,_=(_=g[0]-h[0])*_+(_=g[1]-h[1])*_;i=p(i,Math.sqrt(f/_)),n=[(d[0]+u[0])/2,(d[1]+u[1])/2],s=[(h[0]+g[0])/2,(h[1]+g[1])/2]}else{if(!o.touch0)return;n=o.touch0[0],s=o.touch0[1]}o.zoom("touch",r(m(i,n,s),o.extent,l))}}function L(){if(this.__zooming){var e,i,n=v(this,arguments),r=dt.changedTouches,s=r.length;for(GS(),t&&clearTimeout(t),t=setTimeout((function(){t=null}),u),e=0;e<s;++e)i=r[e],n.touch0&&n.touch0[2]===i.identifier?delete n.touch0:n.touch1&&n.touch1[2]===i.identifier&&delete n.touch1;if(n.touch1&&!n.touch0&&(n.touch0=n.touch1,delete n.touch1),n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else if(n.end(),2===n.taps){var o=kt(this).on("dblclick.zoom");o&&o.apply(this,arguments)}}}return f.transform=function(e,t,i){var n=e.selection?e.selection():e;n.property("__zoom",XS),e!==n?b(e,t,i):n.interrupt().each((function(){v(this,arguments).start().zoom(null,"function"==typeof t?t.apply(this,arguments):t).end()}))},f.scaleBy=function(e,t,i){f.scaleTo(e,(function(){var e=this.__zoom.k,i="function"==typeof t?t.apply(this,arguments):t;return e*i}),i)},f.scaleTo=function(e,t,i){f.transform(e,(function(){var e=n.apply(this,arguments),s=this.__zoom,o=null==i?_(e):"function"==typeof i?i.apply(this,arguments):i,a=s.invert(o),c="function"==typeof t?t.apply(this,arguments):t;return r(m(p(s,c),o,a),e,l)}),i)},f.translateBy=function(e,t,i){f.transform(e,(function(){return r(this.__zoom.translate("function"==typeof t?t.apply(this,arguments):t,"function"==typeof i?i.apply(this,arguments):i),n.apply(this,arguments),l)}))},f.translateTo=function(e,t,i,s){f.transform(e,(function(){var e=n.apply(this,arguments),o=this.__zoom,a=null==s?_(e):"function"==typeof s?s.apply(this,arguments):s;return r(KS.translate(a[0],a[1]).scale(o.k).translate("function"==typeof t?-t.apply(this,arguments):-t,"function"==typeof i?-i.apply(this,arguments):-i),e,l)}),s)},y.prototype={start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(e,t){return this.mouse&&"mouse"!==e&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&"touch"!==e&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&"touch"!==e&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(e){mt(new US(f,e,this.that.__zoom),h.apply,h,[e,this.that,this.args])}},f.wheelDelta=function(e){return arguments.length?(s="function"==typeof e?e:zS(+e),f):s},f.filter=function(e){return arguments.length?(i="function"==typeof e?e:zS(!!e),f):i},f.touchable=function(e){return arguments.length?(o="function"==typeof e?e:zS(!!e),f):o},f.extent=function(e){return arguments.length?(n="function"==typeof e?e:zS([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),f):n},f.scaleExtent=function(e){return arguments.length?(a[0]=+e[0],a[1]=+e[1],f):[a[0],a[1]]},f.translateExtent=function(e){return arguments.length?(l[0][0]=+e[0][0],l[1][0]=+e[1][0],l[0][1]=+e[0][1],l[1][1]=+e[1][1],f):[[l[0][0],l[0][1]],[l[1][0],l[1][1]]]},f.constrain=function(e){return arguments.length?(r=e,f):r},f.duration=function(e){return arguments.length?(c=+e,f):c},f.interpolate=function(e){return arguments.length?(d=e,f):d},f.on=function(){var e=h.on.apply(h,arguments);return e===h?f:e},f.clickDistance=function(e){return arguments.length?(g=(e=+e)*e,f):Math.sqrt(g)},f}qS.prototype=$S.prototype},44949:(e,t,i)=>{e.exports={graphlib:i(66614),dagre:i(51463),intersect:i(78114),render:i(95787),util:i(28355),version:i(55689)}},39144:(e,t,i)=>{var n=i(28355);function r(e,t,i,r){var s=e.append("marker").attr("id",t).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").style("stroke-width",1).style("stroke-dasharray","1,0");n.applyStyle(s,i[r+"Style"]),i[r+"Class"]&&s.attr("class",i[r+"Class"])}e.exports={default:r,normal:r,vee:function(e,t,i,r){var s=e.append("marker").attr("id",t).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 L 4 5 z").style("stroke-width",1).style("stroke-dasharray","1,0");n.applyStyle(s,i[r+"Style"]),i[r+"Class"]&&s.attr("class",i[r+"Class"])},undirected:function(e,t,i,r){var s=e.append("marker").attr("id",t).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 5 L 10 5").style("stroke-width",1).style("stroke-dasharray","1,0");n.applyStyle(s,i[r+"Style"]),i[r+"Class"]&&s.attr("class",i[r+"Class"])}}},85632:(e,t,i)=>{var n=i(28355),r=i(24322),s=i(61322);e.exports=function(e,t){var i,o=t.nodes().filter((function(e){return n.isSubgraph(t,e)})),a=e.selectAll("g.cluster").data(o,(function(e){return e}));return a.selectAll("*").remove(),a.enter().append("g").attr("class","cluster").attr("id",(function(e){return t.node(e).id})).style("opacity",0),a=e.selectAll("g.cluster"),n.applyTransition(a,t).style("opacity",1),a.each((function(e){var i=t.node(e),n=r.select(this);r.select(this).append("rect");var o=n.append("g").attr("class","label");s(o,i,i.clusterLabelPos)})),a.selectAll("rect").each((function(e){var i=t.node(e),s=r.select(this);n.applyStyle(s,i.style)})),i=a.exit?a.exit():a.selectAll(null),n.applyTransition(i,t).style("opacity",0).remove(),a}},16315:(e,t,i)=>{"use strict";var n=i(91034),r=i(61322),s=i(28355),o=i(24322);e.exports=function(e,t){var i,a=e.selectAll("g.edgeLabel").data(t.edges(),(function(e){return s.edgeToId(e)})).classed("update",!0);return a.exit().remove(),a.enter().append("g").classed("edgeLabel",!0).style("opacity",0),(a=e.selectAll("g.edgeLabel")).each((function(e){var i=o.select(this);i.select(".label").remove();var s=t.edge(e),a=r(i,t.edge(e),0,0).classed("label",!0),l=a.node().getBBox();s.labelId&&a.attr("id",s.labelId),n.has(s,"width")||(s.width=l.width),n.has(s,"height")||(s.height=l.height)})),i=a.exit?a.exit():a.selectAll(null),s.applyTransition(i,t).style("opacity",0).remove(),a}},70940:(e,t,i)=>{"use strict";var n=i(91034),r=i(13042),s=i(28355),o=i(24322);function a(e,t){var i=(o.line||o.svg.line)().x((function(e){return e.x})).y((function(e){return e.y}));return(i.curve||i.interpolate)(e.curve),i(t)}e.exports=function(e,t,i){var l=e.selectAll("g.edgePath").data(t.edges(),(function(e){return s.edgeToId(e)})).classed("update",!0),c=function(e,t){var i=e.enter().append("g").attr("class","edgePath").style("opacity",0);return i.append("path").attr("class","path").attr("d",(function(e){var i=t.edge(e),r=t.node(e.v).elem;return a(i,n.range(i.points.length).map((function(){return t=(e=r).getBBox(),{x:(i=e.ownerSVGElement.getScreenCTM().inverse().multiply(e.getScreenCTM()).translate(t.width/2,t.height/2)).e,y:i.f};var e,t,i})))})),i.append("defs"),i}(l,t);!function(e,t){var i=e.exit();s.applyTransition(i,t).style("opacity",0).remove()}(l,t);var d=void 0!==l.merge?l.merge(c):l;return s.applyTransition(d,t).style("opacity",1),d.each((function(e){var i=o.select(this),n=t.edge(e);n.elem=this,n.id&&i.attr("id",n.id),s.applyClass(i,n.class,(i.classed("update")?"update ":"")+"edgePath")})),d.selectAll("path.path").each((function(e){var i=t.edge(e);i.arrowheadId=n.uniqueId("arrowhead");var l=o.select(this).attr("marker-end",(function(){return"url("+(e=location.href,t=i.arrowheadId,e.split("#")[0]+"#"+t+")");var e,t})).style("fill","none");s.applyTransition(l,t).attr("d",(function(e){return function(e,t){var i=e.edge(t),n=e.node(t.v),s=e.node(t.w),o=i.points.slice(1,i.points.length-1);return o.unshift(r(n,o[0])),o.push(r(s,o[o.length-1])),a(i,o)}(t,e)})),s.applyStyle(l,i.style)})),d.selectAll("defs *").remove(),d.selectAll("defs").each((function(e){var n=t.edge(e);(0,i[n.arrowhead])(o.select(this),n.arrowheadId,n,"arrowhead")})),d}},10607:(e,t,i)=>{"use strict";var n=i(91034),r=i(61322),s=i(28355),o=i(24322);e.exports=function(e,t,i){var a,l=t.nodes().filter((function(e){return!s.isSubgraph(t,e)})),c=e.selectAll("g.node").data(l,(function(e){return e})).classed("update",!0);return c.exit().remove(),c.enter().append("g").attr("class","node").style("opacity",0),(c=e.selectAll("g.node")).each((function(e){var a=t.node(e),l=o.select(this);s.applyClass(l,a.class,(l.classed("update")?"update ":"")+"node"),l.select("g.label").remove();var c=l.append("g").attr("class","label"),d=r(c,a),h=i[a.shape],u=n.pick(d.node().getBBox(),"width","height");a.elem=this,a.id&&l.attr("id",a.id),a.labelId&&c.attr("id",a.labelId),n.has(a,"width")&&(u.width=a.width),n.has(a,"height")&&(u.height=a.height),u.width+=a.paddingLeft+a.paddingRight,u.height+=a.paddingTop+a.paddingBottom,c.attr("transform","translate("+(a.paddingLeft-a.paddingRight)/2+","+(a.paddingTop-a.paddingBottom)/2+")");var g=o.select(this);g.select(".label-container").remove();var f=h(g,u,a).classed("label-container",!0);s.applyStyle(f,a.style);var p=f.node().getBBox();a.width=p.width,a.height=p.height})),a=c.exit?c.exit():c.selectAll(null),s.applyTransition(a,t).style("opacity",0).remove(),c}},24322:(e,t,i)=>{var n;if(!n)try{n=i(69362)}catch(e){}n||(n=window.d3),e.exports=n},51463:(e,t,i)=>{var n;try{n=i(72135)}catch(e){}n||(n=window.dagre),e.exports=n},66614:(e,t,i)=>{var n;try{n=i(79550)}catch(e){}n||(n=window.graphlib),e.exports=n},78114:(e,t,i)=>{e.exports={node:i(13042),circle:i(56587),ellipse:i(3260),polygon:i(5337),rect:i(98049)}},56587:(e,t,i)=>{var n=i(3260);e.exports=function(e,t,i){return n(e,t,t,i)}},3260:e=>{e.exports=function(e,t,i,n){var r=e.x,s=e.y,o=r-n.x,a=s-n.y,l=Math.sqrt(t*t*a*a+i*i*o*o),c=Math.abs(t*i*o/l);n.x<r&&(c=-c);var d=Math.abs(t*i*a/l);return n.y<s&&(d=-d),{x:r+c,y:s+d}}},36808:e=>{function t(e,t){return e*t>0}e.exports=function(e,i,n,r){var s,o,a,l,c,d,h,u,g,f,p,m,_;if(!(s=i.y-e.y,a=e.x-i.x,c=i.x*e.y-e.x*i.y,g=s*n.x+a*n.y+c,f=s*r.x+a*r.y+c,0!==g&&0!==f&&t(g,f)||(o=r.y-n.y,l=n.x-r.x,d=r.x*n.y-n.x*r.y,h=o*e.x+l*e.y+d,u=o*i.x+l*i.y+d,0!==h&&0!==u&&t(h,u)||0==(p=s*l-o*a))))return m=Math.abs(p/2),{x:(_=a*d-l*c)<0?(_-m)/p:(_+m)/p,y:(_=o*c-s*d)<0?(_-m)/p:(_+m)/p}}},13042:e=>{e.exports=function(e,t){return e.intersect(t)}},5337:(e,t,i)=>{var n=i(36808);e.exports=function(e,t,i){var r=e.x,s=e.y,o=[],a=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;t.forEach((function(e){a=Math.min(a,e.x),l=Math.min(l,e.y)}));for(var c=r-e.width/2-a,d=s-e.height/2-l,h=0;h<t.length;h++){var u=t[h],g=t[h<t.length-1?h+1:0],f=n(e,i,{x:c+u.x,y:d+u.y},{x:c+g.x,y:d+g.y});f&&o.push(f)}return o.length?(o.length>1&&o.sort((function(e,t){var n=e.x-i.x,r=e.y-i.y,s=Math.sqrt(n*n+r*r),o=t.x-i.x,a=t.y-i.y,l=Math.sqrt(o*o+a*a);return s<l?-1:s===l?0:1})),o[0]):(console.log("NO INTERSECTION FOUND, RETURN NODE CENTER",e),e)}},98049:e=>{e.exports=function(e,t){var i,n,r=e.x,s=e.y,o=t.x-r,a=t.y-s,l=e.width/2,c=e.height/2;return Math.abs(a)*l>Math.abs(o)*c?(a<0&&(c=-c),i=0===a?0:c*o/a,n=c):(o<0&&(l=-l),i=l,n=0===o?0:l*a/o),{x:r+i,y:s+n}}},88284:(e,t,i)=>{var n=i(28355);e.exports=function(e,t){var i=e.append("foreignObject").attr("width","100000"),r=i.append("xhtml:div");r.attr("xmlns","http://www.w3.org/1999/xhtml");var s=t.label;switch(typeof s){case"function":r.insert(s);break;case"object":r.insert((function(){return s}));break;default:r.html(s)}n.applyStyle(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap");var o=r.node().getBoundingClientRect();return i.attr("width",o.width).attr("height",o.height),i}},61322:(e,t,i)=>{var n=i(67318),r=i(88284),s=i(98287);e.exports=function(e,t,i){var o=t.label,a=e.append("g");"svg"===t.labelType?s(a,t):"string"!=typeof o||"html"===t.labelType?r(a,t):n(a,t);var l,c=a.node().getBBox();switch(i){case"top":l=-t.height/2;break;case"bottom":l=t.height/2-c.height;break;default:l=-c.height/2}return a.attr("transform","translate("+-c.width/2+","+l+")"),a}},98287:(e,t,i)=>{var n=i(28355);e.exports=function(e,t){var i=e;return i.node().appendChild(t.label),n.applyStyle(i,t.labelStyle),i}},67318:(e,t,i)=>{var n=i(28355);e.exports=function(e,t){for(var i=e.append("text"),r=function(e){for(var t,i="",n=!1,r=0;r<e.length;++r)if(t=e[r],n){switch(t){case"n":i+="\n";break;default:i+=t}n=!1}else"\\"===t?n=!0:i+=t;return i}(t.label).split("\n"),s=0;s<r.length;s++)i.append("tspan").attr("xml:space","preserve").attr("dy","1em").attr("x","1").text(r[s]);return n.applyStyle(i,t.labelStyle),i}},91034:(e,t,i)=>{var n;try{n={defaults:i(91747),each:i(66073),isFunction:i(23560),isPlainObject:i(68630),pick:i(78718),has:i(18721),range:i(96026),uniqueId:i(73955)}}catch(e){}n||(n=window._),e.exports=n},26381:(e,t,i)=>{"use strict";var n=i(28355),r=i(24322);e.exports=function(e,t){var i=e.filter((function(){return!r.select(this).classed("update")}));function s(e){var i=t.node(e);return"translate("+i.x+","+i.y+")"}i.attr("transform",s),n.applyTransition(e,t).style("opacity",1).attr("transform",s),n.applyTransition(i.selectAll("rect"),t).attr("width",(function(e){return t.node(e).width})).attr("height",(function(e){return t.node(e).height})).attr("x",(function(e){return-t.node(e).width/2})).attr("y",(function(e){return-t.node(e).height/2}))}},44577:(e,t,i)=>{"use strict";var n=i(28355),r=i(24322),s=i(91034);e.exports=function(e,t){function i(e){var i=t.edge(e);return s.has(i,"x")?"translate("+i.x+","+i.y+")":""}e.filter((function(){return!r.select(this).classed("update")})).attr("transform",i),n.applyTransition(e,t).style("opacity",1).attr("transform",i)}},54849:(e,t,i)=>{"use strict";var n=i(28355),r=i(24322);e.exports=function(e,t){function i(e){var i=t.node(e);return"translate("+i.x+","+i.y+")"}e.filter((function(){return!r.select(this).classed("update")})).attr("transform",i),n.applyTransition(e,t).style("opacity",1).attr("transform",i)}},95787:(e,t,i)=>{var n=i(91034),r=i(24322),s=i(51463).layout;e.exports=function(){var e=i(10607),t=i(85632),r=i(16315),c=i(70940),d=i(54849),h=i(44577),u=i(26381),g=i(54418),f=i(39144),p=function(i,p){!function(e){e.nodes().forEach((function(t){var i=e.node(t);n.has(i,"label")||e.children(t).length||(i.label=t),n.has(i,"paddingX")&&n.defaults(i,{paddingLeft:i.paddingX,paddingRight:i.paddingX}),n.has(i,"paddingY")&&n.defaults(i,{paddingTop:i.paddingY,paddingBottom:i.paddingY}),n.has(i,"padding")&&n.defaults(i,{paddingLeft:i.padding,paddingRight:i.padding,paddingTop:i.padding,paddingBottom:i.padding}),n.defaults(i,o),n.each(["paddingLeft","paddingRight","paddingTop","paddingBottom"],(function(e){i[e]=Number(i[e])})),n.has(i,"width")&&(i._prevWidth=i.width),n.has(i,"height")&&(i._prevHeight=i.height)})),e.edges().forEach((function(t){var i=e.edge(t);n.has(i,"label")||(i.label=""),n.defaults(i,a)}))}(p);var m=l(i,"output"),_=l(m,"clusters"),b=l(m,"edgePaths"),v=r(l(m,"edgeLabels"),p),y=e(l(m,"nodes"),p,g);s(p),d(y,p),h(v,p),c(b,p,f);var w=t(_,p);u(w,p),function(e){n.each(e.nodes(),(function(t){var i=e.node(t);n.has(i,"_prevWidth")?i.width=i._prevWidth:delete i.width,n.has(i,"_prevHeight")?i.height=i._prevHeight:delete i.height,delete i._prevWidth,delete i._prevHeight}))}(p)};return p.createNodes=function(t){return arguments.length?(e=t,p):e},p.createClusters=function(e){return arguments.length?(t=e,p):t},p.createEdgeLabels=function(e){return arguments.length?(r=e,p):r},p.createEdgePaths=function(e){return arguments.length?(c=e,p):c},p.shapes=function(e){return arguments.length?(g=e,p):g},p.arrows=function(e){return arguments.length?(f=e,p):f},p};var o={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},a={arrowhead:"normal",curve:r.curveLinear};function l(e,t){var i=e.select("g."+t);return i.empty()&&(i=e.append("g").attr("class",t)),i}},54418:(e,t,i)=>{"use strict";var n=i(98049),r=i(3260),s=i(56587),o=i(5337);e.exports={rect:function(e,t,i){var r=e.insert("rect",":first-child").attr("rx",i.rx).attr("ry",i.ry).attr("x",-t.width/2).attr("y",-t.height/2).attr("width",t.width).attr("height",t.height);return i.intersect=function(e){return n(i,e)},r},ellipse:function(e,t,i){var n=t.width/2,s=t.height/2,o=e.insert("ellipse",":first-child").attr("x",-t.width/2).attr("y",-t.height/2).attr("rx",n).attr("ry",s);return i.intersect=function(e){return r(i,n,s,e)},o},circle:function(e,t,i){var n=Math.max(t.width,t.height)/2,r=e.insert("circle",":first-child").attr("x",-t.width/2).attr("y",-t.height/2).attr("r",n);return i.intersect=function(e){return s(i,n,e)},r},diamond:function(e,t,i){var n=t.width*Math.SQRT2/2,r=t.height*Math.SQRT2/2,s=[{x:0,y:-r},{x:-n,y:0},{x:0,y:r},{x:n,y:0}],a=e.insert("polygon",":first-child").attr("points",s.map((function(e){return e.x+","+e.y})).join(" "));return i.intersect=function(e){return o(i,s,e)},a}}},28355:(e,t,i)=>{var n=i(91034);e.exports={isSubgraph:function(e,t){return!!e.children(t).length},edgeToId:function(e){return s(e.v)+":"+s(e.w)+":"+s(e.name)},applyStyle:function(e,t){t&&e.attr("style",t)},applyClass:function(e,t,i){t&&e.attr("class",t).attr("class",i+" "+e.attr("class"))},applyTransition:function(e,t){var i=t.graph();if(n.isPlainObject(i)){var r=i.transition;if(n.isFunction(r))return r(e)}return e}};var r=/:/g;function s(e){return e?String(e).replace(r,"\\:"):""}},55689:e=>{e.exports="0.6.4"},72135:(e,t,i)=>{e.exports={graphlib:i(33653),layout:i(23946),debug:i(76181),util:{time:i(65029).time,notime:i(65029).notime},version:i(96350)}},33717:(e,t,i)=>{"use strict";var n=i(29603),r=i(16487);e.exports={run:function(e){var t="greedy"===e.graph().acyclicer?r(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],i={},r={};return n.forEach(e.nodes(),(function s(o){n.has(r,o)||(r[o]=!0,i[o]=!0,n.forEach(e.outEdges(o),(function(e){n.has(i,e.w)?t.push(e):s(e.w)})),delete i[o])})),t}(e);n.forEach(t,(function(t){var i=e.edge(t);e.removeEdge(t),i.forwardName=t.name,i.reversed=!0,e.setEdge(t.w,t.v,i,n.uniqueId("rev"))}))},undo:function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);if(i.reversed){e.removeEdge(t);var n=i.forwardName;delete i.reversed,delete i.forwardName,e.setEdge(t.w,t.v,i,n)}}))}}},52226:(e,t,i)=>{var n=i(29603),r=i(65029);function s(e,t,i,n,s,o){var a={width:0,height:0,rank:o,borderType:t},l=s[t][o-1],c=r.addDummyNode(e,"border",a,i);s[t][o]=c,e.setParent(c,n),l&&e.setEdge(l,c,{weight:1})}e.exports=function(e){n.forEach(e.children(),(function t(i){var r=e.children(i),o=e.node(i);if(r.length&&n.forEach(r,t),n.has(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var a=o.minRank,l=o.maxRank+1;a<l;++a)s(e,"borderLeft","_bl",i,o,a),s(e,"borderRight","_br",i,o,a)}}))}},64181:(e,t,i)=>{"use strict";var n=i(29603);function r(e){n.forEach(e.nodes(),(function(t){s(e.node(t))})),n.forEach(e.edges(),(function(t){s(e.edge(t))}))}function s(e){var t=e.width;e.width=e.height,e.height=t}function o(e){e.y=-e.y}function a(e){var t=e.x;e.x=e.y,e.y=t}e.exports={adjust:function(e){var t=e.graph().rankdir.toLowerCase();"lr"!==t&&"rl"!==t||r(e)},undo:function(e){var t=e.graph().rankdir.toLowerCase();"bt"!==t&&"rl"!==t||function(e){n.forEach(e.nodes(),(function(t){o(e.node(t))})),n.forEach(e.edges(),(function(t){var i=e.edge(t);n.forEach(i.points,o),n.has(i,"y")&&o(i)}))}(e),"lr"!==t&&"rl"!==t||(function(e){n.forEach(e.nodes(),(function(t){a(e.node(t))})),n.forEach(e.edges(),(function(t){var i=e.edge(t);n.forEach(i.points,a),n.has(i,"x")&&a(i)}))}(e),r(e))}}},21210:e=>{function t(){var e={};e._next=e._prev=e,this._sentinel=e}function i(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function n(e,t){if("_next"!==e&&"_prev"!==e)return t}e.exports=t,t.prototype.dequeue=function(){var e=this._sentinel,t=e._prev;if(t!==e)return i(t),t},t.prototype.enqueue=function(e){var t=this._sentinel;e._prev&&e._next&&i(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t},t.prototype.toString=function(){for(var e=[],t=this._sentinel,i=t._prev;i!==t;)e.push(JSON.stringify(i,n)),i=i._prev;return"["+e.join(", ")+"]"}},76181:(e,t,i)=>{var n=i(29603),r=i(65029),s=i(33653).Graph;e.exports={debugOrdering:function(e){var t=r.buildLayerMatrix(e),i=new s({compound:!0,multigraph:!0}).setGraph({});return n.forEach(e.nodes(),(function(t){i.setNode(t,{label:t}),i.setParent(t,"layer"+e.node(t).rank)})),n.forEach(e.edges(),(function(e){i.setEdge(e.v,e.w,{},e.name)})),n.forEach(t,(function(e,t){var r="layer"+t;i.setNode(r,{rank:"same"}),n.reduce(e,(function(e,t){return i.setEdge(e,t,{style:"invis"}),t}))})),i}}},33653:(e,t,i)=>{var n;try{n=i(79550)}catch(e){}n||(n=window.graphlib),e.exports=n},16487:(e,t,i)=>{var n=i(29603),r=i(33653).Graph,s=i(21210);e.exports=function(e,t){if(e.nodeCount()<=1)return[];var i=function(e,t){var i=new r,o=0,a=0;n.forEach(e.nodes(),(function(e){i.setNode(e,{v:e,in:0,out:0})})),n.forEach(e.edges(),(function(e){var n=i.edge(e.v,e.w)||0,r=t(e),s=n+r;i.setEdge(e.v,e.w,s),a=Math.max(a,i.node(e.v).out+=r),o=Math.max(o,i.node(e.w).in+=r)}));var c=n.range(a+o+3).map((function(){return new s})),d=o+1;return n.forEach(i.nodes(),(function(e){l(c,d,i.node(e))})),{graph:i,buckets:c,zeroIdx:d}}(e,t||o),c=function(e,t,i){for(var n,r=[],s=t[t.length-1],o=t[0];e.nodeCount();){for(;n=o.dequeue();)a(e,t,i,n);for(;n=s.dequeue();)a(e,t,i,n);if(e.nodeCount())for(var l=t.length-2;l>0;--l)if(n=t[l].dequeue()){r=r.concat(a(e,t,i,n,!0));break}}return r}(i.graph,i.buckets,i.zeroIdx);return n.flatten(n.map(c,(function(t){return e.outEdges(t.v,t.w)})),!0)};var o=n.constant(1);function a(e,t,i,r,s){var o=s?[]:void 0;return n.forEach(e.inEdges(r.v),(function(n){var r=e.edge(n),a=e.node(n.v);s&&o.push({v:n.v,w:n.w}),a.out-=r,l(t,i,a)})),n.forEach(e.outEdges(r.v),(function(n){var r=e.edge(n),s=n.w,o=e.node(s);o.in-=r,l(t,i,o)})),e.removeNode(r.v),o}function l(e,t,i){i.out?i.in?e[i.out-i.in+t].enqueue(i):e[e.length-1].enqueue(i):e[0].enqueue(i)}},23946:(e,t,i)=>{"use strict";var n=i(29603),r=i(33717),s=i(75399),o=i(26833),a=i(65029).normalizeRanks,l=i(65891),c=i(65029).removeEmptyRanks,d=i(33956),h=i(52226),u=i(64181),g=i(18095),f=i(86587),p=i(65029),m=i(33653).Graph;e.exports=function(e,t){var i=t&&t.debugTiming?p.time:p.notime;i("layout",(function(){var t=i(" buildLayoutGraph",(function(){return function(e){var t=new m({multigraph:!0,compound:!0}),i=L(e.graph());return t.setGraph(n.merge({},b,x(i,_),n.pick(i,v))),n.forEach(e.nodes(),(function(i){var r=L(e.node(i));t.setNode(i,n.defaults(x(r,y),w)),t.setParent(i,e.parent(i))})),n.forEach(e.edges(),(function(i){var r=L(e.edge(i));t.setEdge(i,n.merge({},S,x(r,C),n.pick(r,k)))})),t}(e)}));i(" runLayout",(function(){!function(e,t){t(" makeSpaceForEdgeLabels",(function(){!function(e){var t=e.graph();t.ranksep/=2,n.forEach(e.edges(),(function(i){var n=e.edge(i);n.minlen*=2,"c"!==n.labelpos.toLowerCase()&&("TB"===t.rankdir||"BT"===t.rankdir?n.width+=n.labeloffset:n.height+=n.labeloffset)}))}(e)})),t(" removeSelfEdges",(function(){!function(e){n.forEach(e.edges(),(function(t){if(t.v===t.w){var i=e.node(t.v);i.selfEdges||(i.selfEdges=[]),i.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}}))}(e)})),t(" acyclic",(function(){r.run(e)})),t(" nestingGraph.run",(function(){d.run(e)})),t(" rank",(function(){o(p.asNonCompoundGraph(e))})),t(" injectEdgeLabelProxies",(function(){!function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);if(i.width&&i.height){var n=e.node(t.v),r={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};p.addDummyNode(e,"edge-proxy",r,"_ep")}}))}(e)})),t(" removeEmptyRanks",(function(){c(e)})),t(" nestingGraph.cleanup",(function(){d.cleanup(e)})),t(" normalizeRanks",(function(){a(e)})),t(" assignRankMinMax",(function(){!function(e){var t=0;n.forEach(e.nodes(),(function(i){var r=e.node(i);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=n.max(t,r.maxRank))})),e.graph().maxRank=t}(e)})),t(" removeEdgeLabelProxies",(function(){!function(e){n.forEach(e.nodes(),(function(t){var i=e.node(t);"edge-proxy"===i.dummy&&(e.edge(i.e).labelRank=i.rank,e.removeNode(t))}))}(e)})),t(" normalize.run",(function(){s.run(e)})),t(" parentDummyChains",(function(){l(e)})),t(" addBorderSegments",(function(){h(e)})),t(" order",(function(){g(e)})),t(" insertSelfEdges",(function(){!function(e){var t=p.buildLayerMatrix(e);n.forEach(t,(function(t){var i=0;n.forEach(t,(function(t,r){var s=e.node(t);s.order=r+i,n.forEach(s.selfEdges,(function(t){p.addDummyNode(e,"selfedge",{width:t.label.width,height:t.label.height,rank:s.rank,order:r+ ++i,e:t.e,label:t.label},"_se")})),delete s.selfEdges}))}))}(e)})),t(" adjustCoordinateSystem",(function(){u.adjust(e)})),t(" position",(function(){f(e)})),t(" positionSelfEdges",(function(){!function(e){n.forEach(e.nodes(),(function(t){var i=e.node(t);if("selfedge"===i.dummy){var n=e.node(i.e.v),r=n.x+n.width/2,s=n.y,o=i.x-r,a=n.height/2;e.setEdge(i.e,i.label),e.removeNode(t),i.label.points=[{x:r+2*o/3,y:s-a},{x:r+5*o/6,y:s-a},{x:r+o,y:s},{x:r+5*o/6,y:s+a},{x:r+2*o/3,y:s+a}],i.label.x=i.x,i.label.y=i.y}}))}(e)})),t(" removeBorderNodes",(function(){!function(e){n.forEach(e.nodes(),(function(t){if(e.children(t).length){var i=e.node(t),r=e.node(i.borderTop),s=e.node(i.borderBottom),o=e.node(n.last(i.borderLeft)),a=e.node(n.last(i.borderRight));i.width=Math.abs(a.x-o.x),i.height=Math.abs(s.y-r.y),i.x=o.x+i.width/2,i.y=r.y+i.height/2}})),n.forEach(e.nodes(),(function(t){"border"===e.node(t).dummy&&e.removeNode(t)}))}(e)})),t(" normalize.undo",(function(){s.undo(e)})),t(" fixupEdgeLabelCoords",(function(){!function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);if(n.has(i,"x"))switch("l"!==i.labelpos&&"r"!==i.labelpos||(i.width-=i.labeloffset),i.labelpos){case"l":i.x-=i.width/2+i.labeloffset;break;case"r":i.x+=i.width/2+i.labeloffset}}))}(e)})),t(" undoCoordinateSystem",(function(){u.undo(e)})),t(" translateGraph",(function(){!function(e){var t=Number.POSITIVE_INFINITY,i=0,r=Number.POSITIVE_INFINITY,s=0,o=e.graph(),a=o.marginx||0,l=o.marginy||0;function c(e){var n=e.x,o=e.y,a=e.width,l=e.height;t=Math.min(t,n-a/2),i=Math.max(i,n+a/2),r=Math.min(r,o-l/2),s=Math.max(s,o+l/2)}n.forEach(e.nodes(),(function(t){c(e.node(t))})),n.forEach(e.edges(),(function(t){var i=e.edge(t);n.has(i,"x")&&c(i)})),t-=a,r-=l,n.forEach(e.nodes(),(function(i){var n=e.node(i);n.x-=t,n.y-=r})),n.forEach(e.edges(),(function(i){var s=e.edge(i);n.forEach(s.points,(function(e){e.x-=t,e.y-=r})),n.has(s,"x")&&(s.x-=t),n.has(s,"y")&&(s.y-=r)})),o.width=i-t+a,o.height=s-r+l}(e)})),t(" assignNodeIntersects",(function(){!function(e){n.forEach(e.edges(),(function(t){var i,n,r=e.edge(t),s=e.node(t.v),o=e.node(t.w);r.points?(i=r.points[0],n=r.points[r.points.length-1]):(r.points=[],i=o,n=s),r.points.unshift(p.intersectRect(s,i)),r.points.push(p.intersectRect(o,n))}))}(e)})),t(" reversePoints",(function(){!function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);i.reversed&&i.points.reverse()}))}(e)})),t(" acyclic.undo",(function(){r.undo(e)}))}(t,i)})),i(" updateInputGraph",(function(){!function(e,t){n.forEach(e.nodes(),(function(i){var n=e.node(i),r=t.node(i);n&&(n.x=r.x,n.y=r.y,t.children(i).length&&(n.width=r.width,n.height=r.height))})),n.forEach(e.edges(),(function(i){var r=e.edge(i),s=t.edge(i);r.points=s.points,n.has(s,"x")&&(r.x=s.x,r.y=s.y)})),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,t)}))}))};var _=["nodesep","edgesep","ranksep","marginx","marginy"],b={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},v=["acyclicer","ranker","rankdir","align"],y=["width","height"],w={width:0,height:0},C=["minlen","weight","width","height","labeloffset"],S={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},k=["labelpos"];function x(e,t){return n.mapValues(n.pick(e,t),Number)}function L(e){var t={};return n.forEach(e,(function(e,i){t[i.toLowerCase()]=e})),t}},29603:(e,t,i)=>{var n;try{n={cloneDeep:i(50361),constant:i(75703),defaults:i(91747),each:i(66073),filter:i(63105),find:i(13311),flatten:i(85564),forEach:i(84486),forIn:i(62620),has:i(18721),isUndefined:i(52353),last:i(10928),map:i(35161),mapValues:i(66604),max:i(6162),merge:i(82492),min:i(53632),minBy:i(22762),now:i(7771),pick:i(78718),range:i(96026),reduce:i(54061),sortBy:i(89734),uniqueId:i(73955),values:i(52628),zipObject:i(7287)}}catch(e){}n||(n=window._),e.exports=n},33956:(e,t,i)=>{var n=i(29603),r=i(65029);function s(e,t,i,o,a,l,c){var d=e.children(c);if(d.length){var h=r.addBorderNode(e,"_bt"),u=r.addBorderNode(e,"_bb"),g=e.node(c);e.setParent(h,c),g.borderTop=h,e.setParent(u,c),g.borderBottom=u,n.forEach(d,(function(n){s(e,t,i,o,a,l,n);var r=e.node(n),d=r.borderTop?r.borderTop:n,g=r.borderBottom?r.borderBottom:n,f=r.borderTop?o:2*o,p=d!==g?1:a-l[c]+1;e.setEdge(h,d,{weight:f,minlen:p,nestingEdge:!0}),e.setEdge(g,u,{weight:f,minlen:p,nestingEdge:!0})})),e.parent(c)||e.setEdge(t,h,{weight:0,minlen:a+l[c]})}else c!==t&&e.setEdge(t,c,{weight:0,minlen:i})}e.exports={run:function(e){var t=r.addDummyNode(e,"root",{},"_root"),i=function(e){var t={};function i(r,s){var o=e.children(r);o&&o.length&&n.forEach(o,(function(e){i(e,s+1)})),t[r]=s}return n.forEach(e.children(),(function(e){i(e,1)})),t}(e),o=n.max(n.values(i))-1,a=2*o+1;e.graph().nestingRoot=t,n.forEach(e.edges(),(function(t){e.edge(t).minlen*=a}));var l=function(e){return n.reduce(e.edges(),(function(t,i){return t+e.edge(i).weight}),0)}(e)+1;n.forEach(e.children(),(function(n){s(e,t,a,l,o,i,n)})),e.graph().nodeRankFactor=a},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,n.forEach(e.edges(),(function(t){e.edge(t).nestingEdge&&e.removeEdge(t)}))}}},75399:(e,t,i)=>{"use strict";var n=i(29603),r=i(65029);e.exports={run:function(e){e.graph().dummyChains=[],n.forEach(e.edges(),(function(t){!function(e,t){var i,n,s,o=t.v,a=e.node(o).rank,l=t.w,c=e.node(l).rank,d=t.name,h=e.edge(t),u=h.labelRank;if(c!==a+1){for(e.removeEdge(t),s=0,++a;a<c;++s,++a)h.points=[],n={width:0,height:0,edgeLabel:h,edgeObj:t,rank:a},i=r.addDummyNode(e,"edge",n,"_d"),a===u&&(n.width=h.width,n.height=h.height,n.dummy="edge-label",n.labelpos=h.labelpos),e.setEdge(o,i,{weight:h.weight},d),0===s&&e.graph().dummyChains.push(i),o=i;e.setEdge(o,l,{weight:h.weight},d)}}(e,t)}))},undo:function(e){n.forEach(e.graph().dummyChains,(function(t){var i,n=e.node(t),r=n.edgeLabel;for(e.setEdge(n.edgeObj,r);n.dummy;)i=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=i,n=e.node(t)}))}}},67266:(e,t,i)=>{var n=i(29603);e.exports=function(e,t,i){var r,s={};n.forEach(i,(function(i){for(var n,o,a=e.parent(i);a;){if((n=e.parent(a))?(o=s[n],s[n]=a):(o=r,r=a),o&&o!==a)return void t.setEdge(o,a);a=n}}))}},57210:(e,t,i)=>{var n=i(29603);e.exports=function(e,t){return n.map(t,(function(t){var i=e.inEdges(t);if(i.length){var r=n.reduce(i,(function(t,i){var n=e.edge(i),r=e.node(i.v);return{sum:t.sum+n.weight*r.order,weight:t.weight+n.weight}}),{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}return{v:t}}))}},78007:(e,t,i)=>{var n=i(29603),r=i(33653).Graph;e.exports=function(e,t,i){var s=function(e){for(var t;e.hasNode(t=n.uniqueId("_root")););return t}(e),o=new r({compound:!0}).setGraph({root:s}).setDefaultNodeLabel((function(t){return e.node(t)}));return n.forEach(e.nodes(),(function(r){var a=e.node(r),l=e.parent(r);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(o.setNode(r),o.setParent(r,l||s),n.forEach(e[i](r),(function(t){var i=t.v===r?t.w:t.v,s=o.edge(i,r),a=n.isUndefined(s)?0:s.weight;o.setEdge(i,r,{weight:e.edge(t).weight+a})})),n.has(a,"minRank")&&o.setNode(r,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))})),o}},20434:(e,t,i)=>{"use strict";var n=i(29603);function r(e,t,i){for(var r=n.zipObject(i,n.map(i,(function(e,t){return t}))),s=n.flatten(n.map(t,(function(t){return n.sortBy(n.map(e.outEdges(t),(function(t){return{pos:r[t.w],weight:e.edge(t).weight}})),"pos")})),!0),o=1;o<i.length;)o<<=1;var a=2*o-1;o-=1;var l=n.map(new Array(a),(function(){return 0})),c=0;return n.forEach(s.forEach((function(e){var t=e.pos+o;l[t]+=e.weight;for(var i=0;t>0;)t%2&&(i+=l[t+1]),l[t=t-1>>1]+=e.weight;c+=e.weight*i}))),c}e.exports=function(e,t){for(var i=0,n=1;n<t.length;++n)i+=r(e,t[n-1],t[n]);return i}},18095:(e,t,i)=>{"use strict";var n=i(29603),r=i(48559),s=i(20434),o=i(40373),a=i(78007),l=i(67266),c=i(33653).Graph,d=i(65029);function h(e,t,i){return n.map(t,(function(t){return a(e,t,i)}))}function u(e,t){var i=new c;n.forEach(e,(function(e){var r=e.graph().root,s=o(e,r,i,t);n.forEach(s.vs,(function(t,i){e.node(t).order=i})),l(e,i,s.vs)}))}function g(e,t){n.forEach(t,(function(t){n.forEach(t,(function(t,i){e.node(t).order=i}))}))}e.exports=function(e){var t=d.maxRank(e),i=h(e,n.range(1,t+1),"inEdges"),o=h(e,n.range(t-1,-1,-1),"outEdges"),a=r(e);g(e,a);for(var l,c=Number.POSITIVE_INFINITY,f=0,p=0;p<4;++f,++p){u(f%2?i:o,f%4>=2),a=d.buildLayerMatrix(e);var m=s(e,a);m<c&&(p=0,l=n.cloneDeep(a),c=m)}g(e,l)}},48559:(e,t,i)=>{"use strict";var n=i(29603);e.exports=function(e){var t={},i=n.filter(e.nodes(),(function(t){return!e.children(t).length})),r=n.max(n.map(i,(function(t){return e.node(t).rank}))),s=n.map(n.range(r+1),(function(){return[]})),o=n.sortBy(i,(function(t){return e.node(t).rank}));return n.forEach(o,(function i(r){if(!n.has(t,r)){t[r]=!0;var o=e.node(r);s[o.rank].push(r),n.forEach(e.successors(r),i)}})),s}},91058:(e,t,i)=>{"use strict";var n=i(29603);e.exports=function(e,t){var i={};return n.forEach(e,(function(e,t){var r=i[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};n.isUndefined(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)})),n.forEach(t.edges(),(function(e){var t=i[e.v],r=i[e.w];n.isUndefined(t)||n.isUndefined(r)||(r.indegree++,t.out.push(i[e.w]))})),function(e){var t=[];function i(e){return function(t){var i,r,s,o;t.merged||(n.isUndefined(t.barycenter)||n.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&(r=t,s=0,o=0,(i=e).weight&&(s+=i.barycenter*i.weight,o+=i.weight),r.weight&&(s+=r.barycenter*r.weight,o+=r.weight),i.vs=r.vs.concat(i.vs),i.barycenter=s/o,i.weight=o,i.i=Math.min(r.i,i.i),r.merged=!0)}}function r(t){return function(i){i.in.push(t),0==--i.indegree&&e.push(i)}}for(;e.length;){var s=e.pop();t.push(s),n.forEach(s.in.reverse(),i(s)),n.forEach(s.out,r(s))}return n.map(n.filter(t,(function(e){return!e.merged})),(function(e){return n.pick(e,["vs","i","barycenter","weight"])}))}(n.filter(i,(function(e){return!e.indegree})))}},40373:(e,t,i)=>{var n=i(29603),r=i(57210),s=i(91058),o=i(96779);e.exports=function e(t,i,a,l){var c=t.children(i),d=t.node(i),h=d?d.borderLeft:void 0,u=d?d.borderRight:void 0,g={};h&&(c=n.filter(c,(function(e){return e!==h&&e!==u})));var f=r(t,c);n.forEach(f,(function(i){if(t.children(i.v).length){var r=e(t,i.v,a,l);g[i.v]=r,n.has(r,"barycenter")&&(s=i,o=r,n.isUndefined(s.barycenter)?(s.barycenter=o.barycenter,s.weight=o.weight):(s.barycenter=(s.barycenter*s.weight+o.barycenter*o.weight)/(s.weight+o.weight),s.weight+=o.weight))}var s,o}));var p=s(f,a);!function(e,t){n.forEach(e,(function(e){e.vs=n.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(p,g);var m=o(p,l);if(h&&(m.vs=n.flatten([h,m.vs,u],!0),t.predecessors(h).length)){var _=t.node(t.predecessors(h)[0]),b=t.node(t.predecessors(u)[0]);n.has(m,"barycenter")||(m.barycenter=0,m.weight=0),m.barycenter=(m.barycenter*m.weight+_.order+b.order)/(m.weight+2),m.weight+=2}return m}},96779:(e,t,i)=>{var n=i(29603),r=i(65029);function s(e,t,i){for(var r;t.length&&(r=n.last(t)).i<=i;)t.pop(),e.push(r.vs),i++;return i}e.exports=function(e,t){var i,o=r.partition(e,(function(e){return n.has(e,"barycenter")})),a=o.lhs,l=n.sortBy(o.rhs,(function(e){return-e.i})),c=[],d=0,h=0,u=0;a.sort((i=!!t,function(e,t){return e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:i?t.i-e.i:e.i-t.i})),u=s(c,l,u),n.forEach(a,(function(e){u+=e.vs.length,c.push(e.vs),d+=e.barycenter*e.weight,h+=e.weight,u=s(c,l,u)}));var g={vs:n.flatten(c,!0)};return h&&(g.barycenter=d/h,g.weight=h),g}},65891:(e,t,i)=>{var n=i(29603);e.exports=function(e){var t=function(e){var t={},i=0;return n.forEach(e.children(),(function r(s){var o=i;n.forEach(e.children(s),r),t[s]={low:o,lim:i++}})),t}(e);n.forEach(e.graph().dummyChains,(function(i){for(var n=e.node(i),r=n.edgeObj,s=function(e,t,i,n){var r,s,o=[],a=[],l=Math.min(t[i].low,t[n].low),c=Math.max(t[i].lim,t[n].lim);r=i;do{r=e.parent(r),o.push(r)}while(r&&(t[r].low>l||c>t[r].lim));for(s=r,r=n;(r=e.parent(r))!==s;)a.push(r);return{path:o.concat(a.reverse()),lca:s}}(e,t,r.v,r.w),o=s.path,a=s.lca,l=0,c=o[l],d=!0;i!==r.w;){if(n=e.node(i),d){for(;(c=o[l])!==a&&e.node(c).maxRank<n.rank;)l++;c===a&&(d=!1)}if(!d){for(;l<o.length-1&&e.node(c=o[l+1]).minRank<=n.rank;)l++;c=o[l]}e.setParent(i,c),i=e.successors(i)[0]}}))}},19998:(e,t,i)=>{"use strict";var n=i(29603),r=i(33653).Graph,s=i(65029);function o(e,t){var i={};return n.reduce(t,(function(t,r){var s=0,o=0,a=t.length,c=n.last(r);return n.forEach(r,(function(t,d){var h=function(e,t){if(e.node(t).dummy)return n.find(e.predecessors(t),(function(t){return e.node(t).dummy}))}(e,t),u=h?e.node(h).order:a;(h||t===c)&&(n.forEach(r.slice(o,d+1),(function(t){n.forEach(e.predecessors(t),(function(n){var r=e.node(n),o=r.order;!(o<s||u<o)||r.dummy&&e.node(t).dummy||l(i,n,t)}))})),o=d+1,s=u)})),r})),i}function a(e,t){var i={};function r(t,r,s,o,a){var c;n.forEach(n.range(r,s),(function(r){c=t[r],e.node(c).dummy&&n.forEach(e.predecessors(c),(function(t){var n=e.node(t);n.dummy&&(n.order<o||n.order>a)&&l(i,t,c)}))}))}return n.reduce(t,(function(t,i){var s,o=-1,a=0;return n.forEach(i,(function(n,l){if("border"===e.node(n).dummy){var c=e.predecessors(n);c.length&&(s=e.node(c[0]).order,r(i,a,l,o,s),a=l,o=s)}r(i,a,i.length,s,t.length)})),i})),i}function l(e,t,i){if(t>i){var n=t;t=i,i=n}var r=e[t];r||(e[t]=r={}),r[i]=!0}function c(e,t,i){if(t>i){var r=t;t=i,i=r}return n.has(e[t],i)}function d(e,t,i,r){var s={},o={},a={};return n.forEach(t,(function(e){n.forEach(e,(function(e,t){s[e]=e,o[e]=e,a[e]=t}))})),n.forEach(t,(function(e){var t=-1;n.forEach(e,(function(e){var l=r(e);if(l.length)for(var d=((l=n.sortBy(l,(function(e){return a[e]}))).length-1)/2,h=Math.floor(d),u=Math.ceil(d);h<=u;++h){var g=l[h];o[e]===e&&t<a[g]&&!c(i,e,g)&&(o[g]=e,o[e]=s[e]=s[g],t=a[g])}}))})),{root:s,align:o}}function h(e,t,i,s,o){var a={},l=function(e,t,i,s){var o=new r,a=e.graph(),l=function(e,t,i){return function(r,s,o){var a,l=r.node(s),c=r.node(o),d=0;if(d+=l.width/2,n.has(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":a=-l.width/2;break;case"r":a=l.width/2}if(a&&(d+=i?a:-a),a=0,d+=(l.dummy?t:e)/2,d+=(c.dummy?t:e)/2,d+=c.width/2,n.has(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":a=c.width/2;break;case"r":a=-c.width/2}return a&&(d+=i?a:-a),a=0,d}}(a.nodesep,a.edgesep,s);return n.forEach(t,(function(t){var r;n.forEach(t,(function(t){var n=i[t];if(o.setNode(n),r){var s=i[r],a=o.edge(s,n);o.setEdge(s,n,Math.max(l(e,t,r),a||0))}r=t}))})),o}(e,t,i,o),c=o?"borderLeft":"borderRight";function d(e,t){for(var i=l.nodes(),n=i.pop(),r={};n;)r[n]?e(n):(r[n]=!0,i.push(n),i=i.concat(t(n))),n=i.pop()}return d((function(e){a[e]=l.inEdges(e).reduce((function(e,t){return Math.max(e,a[t.v]+l.edge(t))}),0)}),l.predecessors.bind(l)),d((function(t){var i=l.outEdges(t).reduce((function(e,t){return Math.min(e,a[t.w]-l.edge(t))}),Number.POSITIVE_INFINITY),n=e.node(t);i!==Number.POSITIVE_INFINITY&&n.borderType!==c&&(a[t]=Math.max(a[t],i))}),l.successors.bind(l)),n.forEach(s,(function(e){a[e]=a[i[e]]})),a}function u(e,t){return n.minBy(n.values(t),(function(t){var i=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY;return n.forIn(t,(function(t,n){var s=function(e,t){return e.node(t).width}(e,n)/2;i=Math.max(t+s,i),r=Math.min(t-s,r)})),i-r}))}function g(e,t){var i=n.values(t),r=n.min(i),s=n.max(i);n.forEach(["u","d"],(function(i){n.forEach(["l","r"],(function(o){var a,l=i+o,c=e[l];if(c!==t){var d=n.values(c);(a="l"===o?r-n.min(d):s-n.max(d))&&(e[l]=n.mapValues(c,(function(e){return e+a})))}}))}))}function f(e,t){return n.mapValues(e.ul,(function(i,r){if(t)return e[t.toLowerCase()][r];var s=n.sortBy(n.map(e,r));return(s[1]+s[2])/2}))}e.exports={positionX:function(e){var t,i=s.buildLayerMatrix(e),r=n.merge(o(e,i),a(e,i)),l={};n.forEach(["u","d"],(function(s){t="u"===s?i:n.values(i).reverse(),n.forEach(["l","r"],(function(i){"r"===i&&(t=n.map(t,(function(e){return n.values(e).reverse()})));var o=("u"===s?e.predecessors:e.successors).bind(e),a=d(0,t,r,o),c=h(e,t,a.root,a.align,"r"===i);"r"===i&&(c=n.mapValues(c,(function(e){return-e}))),l[s+i]=c}))}));var c=u(e,l);return g(l,c),f(l,e.graph().align)},findType1Conflicts:o,findType2Conflicts:a,addConflict:l,hasConflict:c,verticalAlignment:d,horizontalCompaction:h,alignCoordinates:g,findSmallestWidthAlignment:u,balance:f}},86587:(e,t,i)=>{"use strict";var n=i(29603),r=i(65029),s=i(19998).positionX;e.exports=function(e){(function(e){var t=r.buildLayerMatrix(e),i=e.graph().ranksep,s=0;n.forEach(t,(function(t){var r=n.max(n.map(t,(function(t){return e.node(t).height})));n.forEach(t,(function(t){e.node(t).y=s+r/2})),s+=r+i}))})(e=r.asNonCompoundGraph(e)),n.forEach(s(e),(function(t,i){e.node(i).x=t}))}},54434:(e,t,i)=>{"use strict";var n=i(29603),r=i(33653).Graph,s=i(90697).slack;function o(e,t){return n.forEach(e.nodes(),(function i(r){n.forEach(t.nodeEdges(r),(function(n){var o=n.v,a=r===o?n.w:o;e.hasNode(a)||s(t,n)||(e.setNode(a,{}),e.setEdge(r,a,{}),i(a))}))})),e.nodeCount()}function a(e,t){return n.minBy(t.edges(),(function(i){if(e.hasNode(i.v)!==e.hasNode(i.w))return s(t,i)}))}function l(e,t,i){n.forEach(e.nodes(),(function(e){t.node(e).rank+=i}))}e.exports=function(e){var t,i,n=new r({directed:!1}),c=e.nodes()[0],d=e.nodeCount();for(n.setNode(c,{});o(n,e)<d;)t=a(n,e),i=n.hasNode(t.v)?s(e,t):-s(e,t),l(n,e,i);return n}},26833:(e,t,i)=>{"use strict";var n=i(90697).longestPath,r=i(54434),s=i(33288);e.exports=function(e){switch(e.graph().ranker){case"network-simplex":a(e);break;case"tight-tree":!function(e){n(e),r(e)}(e);break;case"longest-path":o(e);break;default:a(e)}};var o=n;function a(e){s(e)}},33288:(e,t,i)=>{"use strict";var n=i(29603),r=i(54434),s=i(90697).slack,o=i(90697).longestPath,a=i(33653).alg.preorder,l=i(33653).alg.postorder,c=i(65029).simplify;function d(e){e=c(e),o(e);var t,i=r(e);for(g(i),h(i,e);t=p(i);)_(i,e,t,m(i,e,t))}function h(e,t){var i=l(e,e.nodes());i=i.slice(0,i.length-1),n.forEach(i,(function(i){!function(e,t,i){var n=e.node(i).parent;e.edge(i,n).cutvalue=u(e,t,i)}(e,t,i)}))}function u(e,t,i){var r=e.node(i).parent,s=!0,o=t.edge(i,r),a=0;return o||(s=!1,o=t.edge(r,i)),a=o.weight,n.forEach(t.nodeEdges(i),(function(n){var o,l,c=n.v===i,d=c?n.w:n.v;if(d!==r){var h=c===s,u=t.edge(n).weight;if(a+=h?u:-u,o=i,l=d,e.hasEdge(o,l)){var g=e.edge(i,d).cutvalue;a+=h?-g:g}}})),a}function g(e,t){arguments.length<2&&(t=e.nodes()[0]),f(e,{},1,t)}function f(e,t,i,r,s){var o=i,a=e.node(r);return t[r]=!0,n.forEach(e.neighbors(r),(function(s){n.has(t,s)||(i=f(e,t,i,s,r))})),a.low=o,a.lim=i++,s?a.parent=s:delete a.parent,i}function p(e){return n.find(e.edges(),(function(t){return e.edge(t).cutvalue<0}))}function m(e,t,i){var r=i.v,o=i.w;t.hasEdge(r,o)||(r=i.w,o=i.v);var a=e.node(r),l=e.node(o),c=a,d=!1;a.lim>l.lim&&(c=l,d=!0);var h=n.filter(t.edges(),(function(t){return d===b(0,e.node(t.v),c)&&d!==b(0,e.node(t.w),c)}));return n.minBy(h,(function(e){return s(t,e)}))}function _(e,t,i,r){var s=i.v,o=i.w;e.removeEdge(s,o),e.setEdge(r.v,r.w,{}),g(e),h(e,t),function(e,t){var i=n.find(e.nodes(),(function(e){return!t.node(e).parent})),r=a(e,i);r=r.slice(1),n.forEach(r,(function(i){var n=e.node(i).parent,r=t.edge(i,n),s=!1;r||(r=t.edge(n,i),s=!0),t.node(i).rank=t.node(n).rank+(s?r.minlen:-r.minlen)}))}(e,t)}function b(e,t,i){return i.low<=t.lim&&t.lim<=i.lim}e.exports=d,d.initLowLimValues=g,d.initCutValues=h,d.calcCutValue=u,d.leaveEdge=p,d.enterEdge=m,d.exchangeEdges=_},90697:(e,t,i)=>{"use strict";var n=i(29603);e.exports={longestPath:function(e){var t={};n.forEach(e.sources(),(function i(r){var s=e.node(r);if(n.has(t,r))return s.rank;t[r]=!0;var o=n.min(n.map(e.outEdges(r),(function(t){return i(t.w)-e.edge(t).minlen})));return o!==Number.POSITIVE_INFINITY&&null!=o||(o=0),s.rank=o}))},slack:function(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}}},65029:(e,t,i)=>{"use strict";var n=i(29603),r=i(33653).Graph;function s(e,t,i,r){var s;do{s=n.uniqueId(r)}while(e.hasNode(s));return i.dummy=t,e.setNode(s,i),s}function o(e){return n.max(n.map(e.nodes(),(function(t){var i=e.node(t).rank;if(!n.isUndefined(i))return i})))}e.exports={addDummyNode:s,simplify:function(e){var t=(new r).setGraph(e.graph());return n.forEach(e.nodes(),(function(i){t.setNode(i,e.node(i))})),n.forEach(e.edges(),(function(i){var n=t.edge(i.v,i.w)||{weight:0,minlen:1},r=e.edge(i);t.setEdge(i.v,i.w,{weight:n.weight+r.weight,minlen:Math.max(n.minlen,r.minlen)})})),t},asNonCompoundGraph:function(e){var t=new r({multigraph:e.isMultigraph()}).setGraph(e.graph());return n.forEach(e.nodes(),(function(i){e.children(i).length||t.setNode(i,e.node(i))})),n.forEach(e.edges(),(function(i){t.setEdge(i,e.edge(i))})),t},successorWeights:function(e){var t=n.map(e.nodes(),(function(t){var i={};return n.forEach(e.outEdges(t),(function(t){i[t.w]=(i[t.w]||0)+e.edge(t).weight})),i}));return n.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=n.map(e.nodes(),(function(t){var i={};return n.forEach(e.inEdges(t),(function(t){i[t.v]=(i[t.v]||0)+e.edge(t).weight})),i}));return n.zipObject(e.nodes(),t)},intersectRect:function(e,t){var i,n,r=e.x,s=e.y,o=t.x-r,a=t.y-s,l=e.width/2,c=e.height/2;if(!o&&!a)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(a)*l>Math.abs(o)*c?(a<0&&(c=-c),i=c*o/a,n=c):(o<0&&(l=-l),i=l,n=l*a/o),{x:r+i,y:s+n}},buildLayerMatrix:function(e){var t=n.map(n.range(o(e)+1),(function(){return[]}));return n.forEach(e.nodes(),(function(i){var r=e.node(i),s=r.rank;n.isUndefined(s)||(t[s][r.order]=i)})),t},normalizeRanks:function(e){var t=n.min(n.map(e.nodes(),(function(t){return e.node(t).rank})));n.forEach(e.nodes(),(function(i){var r=e.node(i);n.has(r,"rank")&&(r.rank-=t)}))},removeEmptyRanks:function(e){var t=n.min(n.map(e.nodes(),(function(t){return e.node(t).rank}))),i=[];n.forEach(e.nodes(),(function(n){var r=e.node(n).rank-t;i[r]||(i[r]=[]),i[r].push(n)}));var r=0,s=e.graph().nodeRankFactor;n.forEach(i,(function(t,i){n.isUndefined(t)&&i%s!=0?--r:r&&n.forEach(t,(function(t){e.node(t).rank+=r}))}))},addBorderNode:function(e,t,i,n){var r={width:0,height:0};return arguments.length>=4&&(r.rank=i,r.order=n),s(e,"border",r,t)},maxRank:o,partition:function(e,t){var i={lhs:[],rhs:[]};return n.forEach(e,(function(e){t(e)?i.lhs.push(e):i.rhs.push(e)})),i},time:function(e,t){var i=n.now();try{return t()}finally{console.log(e+" time: "+(n.now()-i)+"ms")}},notime:function(e,t){return t()}}},96350:e=>{e.exports="0.8.5"},79550:(e,t,i)=>{var n=i(86496);e.exports={Graph:n.Graph,json:i(72159),alg:i(95725),version:n.version}},35318:(e,t,i)=>{var n=i(23270);e.exports=function(e){var t,i={},r=[];function s(r){n.has(i,r)||(i[r]=!0,t.push(r),n.each(e.successors(r),s),n.each(e.predecessors(r),s))}return n.each(e.nodes(),(function(e){t=[],s(e),t.length&&r.push(t)})),r}},1012:(e,t,i)=>{var n=i(23270);function r(e,t,i,s,o,a){n.has(s,t)||(s[t]=!0,i||a.push(t),n.each(o(t),(function(t){r(e,t,i,s,o,a)})),i&&a.push(t))}e.exports=function(e,t,i){n.isArray(t)||(t=[t]);var s=(e.isDirected()?e.successors:e.neighbors).bind(e),o=[],a={};return n.each(t,(function(t){if(!e.hasNode(t))throw new Error("Graph does not have node: "+t);r(e,t,"post"===i,a,s,o)})),o}},60796:(e,t,i)=>{var n=i(68013),r=i(23270);e.exports=function(e,t,i){return r.transform(e.nodes(),(function(r,s){r[s]=n(e,s,t,i)}),{})}},68013:(e,t,i)=>{var n=i(23270),r=i(43552);e.exports=function(e,t,i,n){return function(e,t,i,n){var s,o,a={},l=new r,c=function(e){var t=e.v!==s?e.v:e.w,n=a[t],r=i(e),c=o.distance+r;if(r<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+e+" Weight: "+r);c<n.distance&&(n.distance=c,n.predecessor=s,l.decrease(t,c))};for(e.nodes().forEach((function(e){var i=e===t?0:Number.POSITIVE_INFINITY;a[e]={distance:i},l.add(e,i)}));l.size()>0&&(s=l.removeMin(),(o=a[s]).distance!==Number.POSITIVE_INFINITY);)n(s).forEach(c);return a}(e,String(t),i||s,n||function(t){return e.outEdges(t)})};var s=n.constant(1)},43647:(e,t,i)=>{var n=i(23270),r=i(72109);e.exports=function(e){return n.filter(r(e),(function(t){return t.length>1||1===t.length&&e.hasEdge(t[0],t[0])}))}},61511:(e,t,i)=>{var n=i(23270);e.exports=function(e,t,i){return function(e,t,i){var n={},r=e.nodes();return r.forEach((function(e){n[e]={},n[e][e]={distance:0},r.forEach((function(t){e!==t&&(n[e][t]={distance:Number.POSITIVE_INFINITY})})),i(e).forEach((function(i){var r=i.v===e?i.w:i.v,s=t(i);n[e][r]={distance:s,predecessor:e}}))})),r.forEach((function(e){var t=n[e];r.forEach((function(i){var s=n[i];r.forEach((function(i){var n=s[e],r=t[i],o=s[i],a=n.distance+r.distance;a<o.distance&&(o.distance=a,o.predecessor=r.predecessor)}))}))})),n}(e,t||r,i||function(t){return e.outEdges(t)})};var r=n.constant(1)},95725:(e,t,i)=>{e.exports={components:i(35318),dijkstra:i(68013),dijkstraAll:i(60796),findCycles:i(43647),floydWarshall:i(61511),isAcyclic:i(42330),postorder:i(70126),preorder:i(74613),prim:i(70646),tarjan:i(72109),topsort:i(71469)}},42330:(e,t,i)=>{var n=i(71469);e.exports=function(e){try{n(e)}catch(e){if(e instanceof n.CycleException)return!1;throw e}return!0}},70126:(e,t,i)=>{var n=i(1012);e.exports=function(e,t){return n(e,t,"post")}},74613:(e,t,i)=>{var n=i(1012);e.exports=function(e,t){return n(e,t,"pre")}},70646:(e,t,i)=>{var n=i(23270),r=i(81380),s=i(43552);e.exports=function(e,t){var i,o=new r,a={},l=new s;function c(e){var n=e.v===i?e.w:e.v,r=l.priority(n);if(void 0!==r){var s=t(e);s<r&&(a[n]=i,l.decrease(n,s))}}if(0===e.nodeCount())return o;n.each(e.nodes(),(function(e){l.add(e,Number.POSITIVE_INFINITY),o.setNode(e)})),l.decrease(e.nodes()[0],0);for(var d=!1;l.size()>0;){if(i=l.removeMin(),n.has(a,i))o.setEdge(i,a[i]);else{if(d)throw new Error("Input graph is not connected: "+e);d=!0}e.nodeEdges(i).forEach(c)}return o}},72109:(e,t,i)=>{var n=i(23270);e.exports=function(e){var t=0,i=[],r={},s=[];function o(a){var l=r[a]={onStack:!0,lowlink:t,index:t++};if(i.push(a),e.successors(a).forEach((function(e){n.has(r,e)?r[e].onStack&&(l.lowlink=Math.min(l.lowlink,r[e].index)):(o(e),l.lowlink=Math.min(l.lowlink,r[e].lowlink))})),l.lowlink===l.index){var c,d=[];do{c=i.pop(),r[c].onStack=!1,d.push(c)}while(a!==c);s.push(d)}}return e.nodes().forEach((function(e){n.has(r,e)||o(e)})),s}},71469:(e,t,i)=>{var n=i(23270);function r(e){var t={},i={},r=[];if(n.each(e.sinks(),(function o(a){if(n.has(i,a))throw new s;n.has(t,a)||(i[a]=!0,t[a]=!0,n.each(e.predecessors(a),o),delete i[a],r.push(a))})),n.size(t)!==e.nodeCount())throw new s;return r}function s(){}e.exports=r,r.CycleException=s,s.prototype=new Error},43552:(e,t,i)=>{var n=i(23270);function r(){this._arr=[],this._keyIndices={}}e.exports=r,r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map((function(e){return e.key}))},r.prototype.has=function(e){return n.has(this._keyIndices,e)},r.prototype.priority=function(e){var t=this._keyIndices[e];if(void 0!==t)return this._arr[t].priority},r.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},r.prototype.add=function(e,t){var i=this._keyIndices;if(e=String(e),!n.has(i,e)){var r=this._arr,s=r.length;return i[e]=s,r.push({key:e,priority:t}),this._decrease(s),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key},r.prototype.decrease=function(e,t){var i=this._keyIndices[e];if(t>this._arr[i].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[i].priority+" New: "+t);this._arr[i].priority=t,this._decrease(i)},r.prototype._heapify=function(e){var t=this._arr,i=2*e,n=i+1,r=e;i<t.length&&(r=t[i].priority<t[r].priority?i:r,n<t.length&&(r=t[n].priority<t[r].priority?n:r),r!==e&&(this._swap(e,r),this._heapify(r)))},r.prototype._decrease=function(e){for(var t,i=this._arr,n=i[e].priority;0!==e&&!(i[t=e>>1].priority<n);)this._swap(e,t),e=t},r.prototype._swap=function(e,t){var i=this._arr,n=this._keyIndices,r=i[e],s=i[t];i[e]=s,i[t]=r,n[s.key]=e,n[r.key]=t}},81380:(e,t,i)=>{"use strict";var n=i(23270);e.exports=s;var r="\0";function s(e){this._isDirected=!n.has(e,"directed")||e.directed,this._isMultigraph=!!n.has(e,"multigraph")&&e.multigraph,this._isCompound=!!n.has(e,"compound")&&e.compound,this._label=void 0,this._defaultNodeLabelFn=n.constant(void 0),this._defaultEdgeLabelFn=n.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function o(e,t){e[t]?e[t]++:e[t]=1}function a(e,t){--e[t]||delete e[t]}function l(e,t,i,r){var s=""+t,o=""+i;if(!e&&s>o){var a=s;s=o,o=a}return s+""+o+""+(n.isUndefined(r)?"\0":r)}function c(e,t,i,n){var r=""+t,s=""+i;if(!e&&r>s){var o=r;r=s,s=o}var a={v:r,w:s};return n&&(a.name=n),a}function d(e,t){return l(e,t.v,t.w,t.name)}s.prototype._nodeCount=0,s.prototype._edgeCount=0,s.prototype.isDirected=function(){return this._isDirected},s.prototype.isMultigraph=function(){return this._isMultigraph},s.prototype.isCompound=function(){return this._isCompound},s.prototype.setGraph=function(e){return this._label=e,this},s.prototype.graph=function(){return this._label},s.prototype.setDefaultNodeLabel=function(e){return n.isFunction(e)||(e=n.constant(e)),this._defaultNodeLabelFn=e,this},s.prototype.nodeCount=function(){return this._nodeCount},s.prototype.nodes=function(){return n.keys(this._nodes)},s.prototype.sources=function(){var e=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(e._in[t])}))},s.prototype.sinks=function(){var e=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(e._out[t])}))},s.prototype.setNodes=function(e,t){var i=arguments,r=this;return n.each(e,(function(e){i.length>1?r.setNode(e,t):r.setNode(e)})),this},s.prototype.setNode=function(e,t){return n.has(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=r,this._children[e]={},this._children["\0"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)},s.prototype.node=function(e){return this._nodes[e]},s.prototype.hasNode=function(e){return n.has(this._nodes,e)},s.prototype.removeNode=function(e){var t=this;if(n.has(this._nodes,e)){var i=function(e){t.removeEdge(t._edgeObjs[e])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],n.each(this.children(e),(function(e){t.setParent(e)})),delete this._children[e]),n.each(n.keys(this._in[e]),i),delete this._in[e],delete this._preds[e],n.each(n.keys(this._out[e]),i),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this},s.prototype.setParent=function(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(n.isUndefined(t))t=r;else{for(var i=t+="";!n.isUndefined(i);i=this.parent(i))if(i===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this},s.prototype._removeFromParentsChildList=function(e){delete this._children[this._parent[e]][e]},s.prototype.parent=function(e){if(this._isCompound){var t=this._parent[e];if(t!==r)return t}},s.prototype.children=function(e){if(n.isUndefined(e)&&(e=r),this._isCompound){var t=this._children[e];if(t)return n.keys(t)}else{if(e===r)return this.nodes();if(this.hasNode(e))return[]}},s.prototype.predecessors=function(e){var t=this._preds[e];if(t)return n.keys(t)},s.prototype.successors=function(e){var t=this._sucs[e];if(t)return n.keys(t)},s.prototype.neighbors=function(e){var t=this.predecessors(e);if(t)return n.union(t,this.successors(e))},s.prototype.isLeaf=function(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length},s.prototype.filterNodes=function(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var i=this;n.each(this._nodes,(function(i,n){e(n)&&t.setNode(n,i)})),n.each(this._edgeObjs,(function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,i.edge(e))}));var r={};function s(e){var n=i.parent(e);return void 0===n||t.hasNode(n)?(r[e]=n,n):n in r?r[n]:s(n)}return this._isCompound&&n.each(t.nodes(),(function(e){t.setParent(e,s(e))})),t},s.prototype.setDefaultEdgeLabel=function(e){return n.isFunction(e)||(e=n.constant(e)),this._defaultEdgeLabelFn=e,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return n.values(this._edgeObjs)},s.prototype.setPath=function(e,t){var i=this,r=arguments;return n.reduce(e,(function(e,n){return r.length>1?i.setEdge(e,n,t):i.setEdge(e,n),n})),this},s.prototype.setEdge=function(){var e,t,i,r,s=!1,a=arguments[0];"object"==typeof a&&null!==a&&"v"in a?(e=a.v,t=a.w,i=a.name,2===arguments.length&&(r=arguments[1],s=!0)):(e=a,t=arguments[1],i=arguments[3],arguments.length>2&&(r=arguments[2],s=!0)),e=""+e,t=""+t,n.isUndefined(i)||(i=""+i);var d=l(this._isDirected,e,t,i);if(n.has(this._edgeLabels,d))return s&&(this._edgeLabels[d]=r),this;if(!n.isUndefined(i)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[d]=s?r:this._defaultEdgeLabelFn(e,t,i);var h=c(this._isDirected,e,t,i);return e=h.v,t=h.w,Object.freeze(h),this._edgeObjs[d]=h,o(this._preds[t],e),o(this._sucs[e],t),this._in[t][d]=h,this._out[e][d]=h,this._edgeCount++,this},s.prototype.edge=function(e,t,i){var n=1===arguments.length?d(this._isDirected,arguments[0]):l(this._isDirected,e,t,i);return this._edgeLabels[n]},s.prototype.hasEdge=function(e,t,i){var r=1===arguments.length?d(this._isDirected,arguments[0]):l(this._isDirected,e,t,i);return n.has(this._edgeLabels,r)},s.prototype.removeEdge=function(e,t,i){var n=1===arguments.length?d(this._isDirected,arguments[0]):l(this._isDirected,e,t,i),r=this._edgeObjs[n];return r&&(e=r.v,t=r.w,delete this._edgeLabels[n],delete this._edgeObjs[n],a(this._preds[t],e),a(this._sucs[e],t),delete this._in[t][n],delete this._out[e][n],this._edgeCount--),this},s.prototype.inEdges=function(e,t){var i=this._in[e];if(i){var r=n.values(i);return t?n.filter(r,(function(e){return e.v===t})):r}},s.prototype.outEdges=function(e,t){var i=this._out[e];if(i){var r=n.values(i);return t?n.filter(r,(function(e){return e.w===t})):r}},s.prototype.nodeEdges=function(e,t){var i=this.inEdges(e,t);if(i)return i.concat(this.outEdges(e,t))}},86496:(e,t,i)=>{e.exports={Graph:i(81380),version:i(52389)}},72159:(e,t,i)=>{var n=i(23270),r=i(81380);function s(e){return n.map(e.nodes(),(function(t){var i=e.node(t),r=e.parent(t),s={v:t};return n.isUndefined(i)||(s.value=i),n.isUndefined(r)||(s.parent=r),s}))}function o(e){return n.map(e.edges(),(function(t){var i=e.edge(t),r={v:t.v,w:t.w};return n.isUndefined(t.name)||(r.name=t.name),n.isUndefined(i)||(r.value=i),r}))}e.exports={write:function(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:s(e),edges:o(e)};return n.isUndefined(e.graph())||(t.value=n.clone(e.graph())),t},read:function(e){var t=new r(e.options).setGraph(e.value);return n.each(e.nodes,(function(e){t.setNode(e.v,e.value),e.parent&&t.setParent(e.v,e.parent)})),n.each(e.edges,(function(e){t.setEdge({v:e.v,w:e.w,name:e.name},e.value)})),t}}},23270:(e,t,i)=>{var n;try{n={clone:i(66678),constant:i(75703),each:i(66073),filter:i(63105),has:i(18721),isArray:i(1469),isEmpty:i(41609),isFunction:i(23560),isUndefined:i(52353),keys:i(3674),map:i(35161),reduce:i(54061),size:i(84238),transform:i(68718),union:i(93386),values:i(52628)}}catch(e){}n||(n=window._),e.exports=n},52389:e=>{e.exports="2.1.8"},70681:(e,t,i)=>{e.exports={graphlib:i(70574),layout:i(98123),debug:i(27570),util:{time:i(11138).time,notime:i(11138).notime},version:i(88177)}},92188:(e,t,i)=>{"use strict";var n=i(38436),r=i(74079);e.exports={run:function(e){var t="greedy"===e.graph().acyclicer?r(e,function(e){return function(t){return e.edge(t).weight}}(e)):function(e){var t=[],i={},r={};return n.forEach(e.nodes(),(function s(o){n.has(r,o)||(r[o]=!0,i[o]=!0,n.forEach(e.outEdges(o),(function(e){n.has(i,e.w)?t.push(e):s(e.w)})),delete i[o])})),t}(e);n.forEach(t,(function(t){var i=e.edge(t);e.removeEdge(t),i.forwardName=t.name,i.reversed=!0,e.setEdge(t.w,t.v,i,n.uniqueId("rev"))}))},undo:function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);if(i.reversed){e.removeEdge(t);var n=i.forwardName;delete i.reversed,delete i.forwardName,e.setEdge(t.w,t.v,i,n)}}))}}},61133:(e,t,i)=>{var n=i(38436),r=i(11138);function s(e,t,i,n,s,o){var a={width:0,height:0,rank:o,borderType:t},l=s[t][o-1],c=r.addDummyNode(e,"border",a,i);s[t][o]=c,e.setParent(c,n),l&&e.setEdge(l,c,{weight:1})}e.exports=function(e){n.forEach(e.children(),(function t(i){var r=e.children(i),o=e.node(i);if(r.length&&n.forEach(r,t),n.has(o,"minRank")){o.borderLeft=[],o.borderRight=[];for(var a=o.minRank,l=o.maxRank+1;a<l;++a)s(e,"borderLeft","_bl",i,o,a),s(e,"borderRight","_br",i,o,a)}}))}},53258:(e,t,i)=>{"use strict";var n=i(38436);function r(e){n.forEach(e.nodes(),(function(t){s(e.node(t))})),n.forEach(e.edges(),(function(t){s(e.edge(t))}))}function s(e){var t=e.width;e.width=e.height,e.height=t}function o(e){e.y=-e.y}function a(e){var t=e.x;e.x=e.y,e.y=t}e.exports={adjust:function(e){var t=e.graph().rankdir.toLowerCase();"lr"!==t&&"rl"!==t||r(e)},undo:function(e){var t=e.graph().rankdir.toLowerCase();"bt"!==t&&"rl"!==t||function(e){n.forEach(e.nodes(),(function(t){o(e.node(t))})),n.forEach(e.edges(),(function(t){var i=e.edge(t);n.forEach(i.points,o),n.has(i,"y")&&o(i)}))}(e),"lr"!==t&&"rl"!==t||(function(e){n.forEach(e.nodes(),(function(t){a(e.node(t))})),n.forEach(e.edges(),(function(t){var i=e.edge(t);n.forEach(i.points,a),n.has(i,"x")&&a(i)}))}(e),r(e))}}},77822:e=>{function t(){var e={};e._next=e._prev=e,this._sentinel=e}function i(e){e._prev._next=e._next,e._next._prev=e._prev,delete e._next,delete e._prev}function n(e,t){if("_next"!==e&&"_prev"!==e)return t}e.exports=t,t.prototype.dequeue=function(){var e=this._sentinel,t=e._prev;if(t!==e)return i(t),t},t.prototype.enqueue=function(e){var t=this._sentinel;e._prev&&e._next&&i(e),e._next=t._next,t._next._prev=e,t._next=e,e._prev=t},t.prototype.toString=function(){for(var e=[],t=this._sentinel,i=t._prev;i!==t;)e.push(JSON.stringify(i,n)),i=i._prev;return"["+e.join(", ")+"]"}},27570:(e,t,i)=>{var n=i(38436),r=i(11138),s=i(70574).Graph;e.exports={debugOrdering:function(e){var t=r.buildLayerMatrix(e),i=new s({compound:!0,multigraph:!0}).setGraph({});return n.forEach(e.nodes(),(function(t){i.setNode(t,{label:t}),i.setParent(t,"layer"+e.node(t).rank)})),n.forEach(e.edges(),(function(e){i.setEdge(e.v,e.w,{},e.name)})),n.forEach(t,(function(e,t){var r="layer"+t;i.setNode(r,{rank:"same"}),n.reduce(e,(function(e,t){return i.setEdge(e,t,{style:"invis"}),t}))})),i}}},70574:(e,t,i)=>{var n;try{n=i(28282)}catch(e){}n||(n=window.graphlib),e.exports=n},74079:(e,t,i)=>{var n=i(38436),r=i(70574).Graph,s=i(77822);e.exports=function(e,t){if(e.nodeCount()<=1)return[];var i=function(e,t){var i=new r,o=0,a=0;n.forEach(e.nodes(),(function(e){i.setNode(e,{v:e,in:0,out:0})})),n.forEach(e.edges(),(function(e){var n=i.edge(e.v,e.w)||0,r=t(e),s=n+r;i.setEdge(e.v,e.w,s),a=Math.max(a,i.node(e.v).out+=r),o=Math.max(o,i.node(e.w).in+=r)}));var c=n.range(a+o+3).map((function(){return new s})),d=o+1;return n.forEach(i.nodes(),(function(e){l(c,d,i.node(e))})),{graph:i,buckets:c,zeroIdx:d}}(e,t||o),c=function(e,t,i){for(var n,r=[],s=t[t.length-1],o=t[0];e.nodeCount();){for(;n=o.dequeue();)a(e,t,i,n);for(;n=s.dequeue();)a(e,t,i,n);if(e.nodeCount())for(var l=t.length-2;l>0;--l)if(n=t[l].dequeue()){r=r.concat(a(e,t,i,n,!0));break}}return r}(i.graph,i.buckets,i.zeroIdx);return n.flatten(n.map(c,(function(t){return e.outEdges(t.v,t.w)})),!0)};var o=n.constant(1);function a(e,t,i,r,s){var o=s?[]:void 0;return n.forEach(e.inEdges(r.v),(function(n){var r=e.edge(n),a=e.node(n.v);s&&o.push({v:n.v,w:n.w}),a.out-=r,l(t,i,a)})),n.forEach(e.outEdges(r.v),(function(n){var r=e.edge(n),s=n.w,o=e.node(s);o.in-=r,l(t,i,o)})),e.removeNode(r.v),o}function l(e,t,i){i.out?i.in?e[i.out-i.in+t].enqueue(i):e[e.length-1].enqueue(i):e[0].enqueue(i)}},98123:(e,t,i)=>{"use strict";var n=i(38436),r=i(92188),s=i(45995),o=i(78093),a=i(11138).normalizeRanks,l=i(24219),c=i(11138).removeEmptyRanks,d=i(72981),h=i(61133),u=i(53258),g=i(53408),f=i(17873),p=i(11138),m=i(70574).Graph;e.exports=function(e,t){var i=t&&t.debugTiming?p.time:p.notime;i("layout",(function(){var t=i(" buildLayoutGraph",(function(){return function(e){var t=new m({multigraph:!0,compound:!0}),i=L(e.graph());return t.setGraph(n.merge({},b,x(i,_),n.pick(i,v))),n.forEach(e.nodes(),(function(i){var r=L(e.node(i));t.setNode(i,n.defaults(x(r,y),w)),t.setParent(i,e.parent(i))})),n.forEach(e.edges(),(function(i){var r=L(e.edge(i));t.setEdge(i,n.merge({},S,x(r,C),n.pick(r,k)))})),t}(e)}));i(" runLayout",(function(){!function(e,t){t(" makeSpaceForEdgeLabels",(function(){!function(e){var t=e.graph();t.ranksep/=2,n.forEach(e.edges(),(function(i){var n=e.edge(i);n.minlen*=2,"c"!==n.labelpos.toLowerCase()&&("TB"===t.rankdir||"BT"===t.rankdir?n.width+=n.labeloffset:n.height+=n.labeloffset)}))}(e)})),t(" removeSelfEdges",(function(){!function(e){n.forEach(e.edges(),(function(t){if(t.v===t.w){var i=e.node(t.v);i.selfEdges||(i.selfEdges=[]),i.selfEdges.push({e:t,label:e.edge(t)}),e.removeEdge(t)}}))}(e)})),t(" acyclic",(function(){r.run(e)})),t(" nestingGraph.run",(function(){d.run(e)})),t(" rank",(function(){o(p.asNonCompoundGraph(e))})),t(" injectEdgeLabelProxies",(function(){!function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);if(i.width&&i.height){var n=e.node(t.v),r={rank:(e.node(t.w).rank-n.rank)/2+n.rank,e:t};p.addDummyNode(e,"edge-proxy",r,"_ep")}}))}(e)})),t(" removeEmptyRanks",(function(){c(e)})),t(" nestingGraph.cleanup",(function(){d.cleanup(e)})),t(" normalizeRanks",(function(){a(e)})),t(" assignRankMinMax",(function(){!function(e){var t=0;n.forEach(e.nodes(),(function(i){var r=e.node(i);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,t=n.max(t,r.maxRank))})),e.graph().maxRank=t}(e)})),t(" removeEdgeLabelProxies",(function(){!function(e){n.forEach(e.nodes(),(function(t){var i=e.node(t);"edge-proxy"===i.dummy&&(e.edge(i.e).labelRank=i.rank,e.removeNode(t))}))}(e)})),t(" normalize.run",(function(){s.run(e)})),t(" parentDummyChains",(function(){l(e)})),t(" addBorderSegments",(function(){h(e)})),t(" order",(function(){g(e)})),t(" insertSelfEdges",(function(){!function(e){var t=p.buildLayerMatrix(e);n.forEach(t,(function(t){var i=0;n.forEach(t,(function(t,r){var s=e.node(t);s.order=r+i,n.forEach(s.selfEdges,(function(t){p.addDummyNode(e,"selfedge",{width:t.label.width,height:t.label.height,rank:s.rank,order:r+ ++i,e:t.e,label:t.label},"_se")})),delete s.selfEdges}))}))}(e)})),t(" adjustCoordinateSystem",(function(){u.adjust(e)})),t(" position",(function(){f(e)})),t(" positionSelfEdges",(function(){!function(e){n.forEach(e.nodes(),(function(t){var i=e.node(t);if("selfedge"===i.dummy){var n=e.node(i.e.v),r=n.x+n.width/2,s=n.y,o=i.x-r,a=n.height/2;e.setEdge(i.e,i.label),e.removeNode(t),i.label.points=[{x:r+2*o/3,y:s-a},{x:r+5*o/6,y:s-a},{x:r+o,y:s},{x:r+5*o/6,y:s+a},{x:r+2*o/3,y:s+a}],i.label.x=i.x,i.label.y=i.y}}))}(e)})),t(" removeBorderNodes",(function(){!function(e){n.forEach(e.nodes(),(function(t){if(e.children(t).length){var i=e.node(t),r=e.node(i.borderTop),s=e.node(i.borderBottom),o=e.node(n.last(i.borderLeft)),a=e.node(n.last(i.borderRight));i.width=Math.abs(a.x-o.x),i.height=Math.abs(s.y-r.y),i.x=o.x+i.width/2,i.y=r.y+i.height/2}})),n.forEach(e.nodes(),(function(t){"border"===e.node(t).dummy&&e.removeNode(t)}))}(e)})),t(" normalize.undo",(function(){s.undo(e)})),t(" fixupEdgeLabelCoords",(function(){!function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);if(n.has(i,"x"))switch("l"!==i.labelpos&&"r"!==i.labelpos||(i.width-=i.labeloffset),i.labelpos){case"l":i.x-=i.width/2+i.labeloffset;break;case"r":i.x+=i.width/2+i.labeloffset}}))}(e)})),t(" undoCoordinateSystem",(function(){u.undo(e)})),t(" translateGraph",(function(){!function(e){var t=Number.POSITIVE_INFINITY,i=0,r=Number.POSITIVE_INFINITY,s=0,o=e.graph(),a=o.marginx||0,l=o.marginy||0;function c(e){var n=e.x,o=e.y,a=e.width,l=e.height;t=Math.min(t,n-a/2),i=Math.max(i,n+a/2),r=Math.min(r,o-l/2),s=Math.max(s,o+l/2)}n.forEach(e.nodes(),(function(t){c(e.node(t))})),n.forEach(e.edges(),(function(t){var i=e.edge(t);n.has(i,"x")&&c(i)})),t-=a,r-=l,n.forEach(e.nodes(),(function(i){var n=e.node(i);n.x-=t,n.y-=r})),n.forEach(e.edges(),(function(i){var s=e.edge(i);n.forEach(s.points,(function(e){e.x-=t,e.y-=r})),n.has(s,"x")&&(s.x-=t),n.has(s,"y")&&(s.y-=r)})),o.width=i-t+a,o.height=s-r+l}(e)})),t(" assignNodeIntersects",(function(){!function(e){n.forEach(e.edges(),(function(t){var i,n,r=e.edge(t),s=e.node(t.v),o=e.node(t.w);r.points?(i=r.points[0],n=r.points[r.points.length-1]):(r.points=[],i=o,n=s),r.points.unshift(p.intersectRect(s,i)),r.points.push(p.intersectRect(o,n))}))}(e)})),t(" reversePoints",(function(){!function(e){n.forEach(e.edges(),(function(t){var i=e.edge(t);i.reversed&&i.points.reverse()}))}(e)})),t(" acyclic.undo",(function(){r.undo(e)}))}(t,i)})),i(" updateInputGraph",(function(){!function(e,t){n.forEach(e.nodes(),(function(i){var n=e.node(i),r=t.node(i);n&&(n.x=r.x,n.y=r.y,t.children(i).length&&(n.width=r.width,n.height=r.height))})),n.forEach(e.edges(),(function(i){var r=e.edge(i),s=t.edge(i);r.points=s.points,n.has(s,"x")&&(r.x=s.x,r.y=s.y)})),e.graph().width=t.graph().width,e.graph().height=t.graph().height}(e,t)}))}))};var _=["nodesep","edgesep","ranksep","marginx","marginy"],b={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},v=["acyclicer","ranker","rankdir","align"],y=["width","height"],w={width:0,height:0},C=["minlen","weight","width","height","labeloffset"],S={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},k=["labelpos"];function x(e,t){return n.mapValues(n.pick(e,t),Number)}function L(e){var t={};return n.forEach(e,(function(e,i){t[i.toLowerCase()]=e})),t}},38436:(e,t,i)=>{var n;try{n={cloneDeep:i(50361),constant:i(75703),defaults:i(91747),each:i(66073),filter:i(63105),find:i(13311),flatten:i(85564),forEach:i(84486),forIn:i(62620),has:i(18721),isUndefined:i(52353),last:i(10928),map:i(35161),mapValues:i(66604),max:i(6162),merge:i(82492),min:i(53632),minBy:i(22762),now:i(7771),pick:i(78718),range:i(96026),reduce:i(54061),sortBy:i(89734),uniqueId:i(73955),values:i(52628),zipObject:i(7287)}}catch(e){}n||(n=window._),e.exports=n},72981:(e,t,i)=>{var n=i(38436),r=i(11138);function s(e,t,i,o,a,l,c){var d=e.children(c);if(d.length){var h=r.addBorderNode(e,"_bt"),u=r.addBorderNode(e,"_bb"),g=e.node(c);e.setParent(h,c),g.borderTop=h,e.setParent(u,c),g.borderBottom=u,n.forEach(d,(function(n){s(e,t,i,o,a,l,n);var r=e.node(n),d=r.borderTop?r.borderTop:n,g=r.borderBottom?r.borderBottom:n,f=r.borderTop?o:2*o,p=d!==g?1:a-l[c]+1;e.setEdge(h,d,{weight:f,minlen:p,nestingEdge:!0}),e.setEdge(g,u,{weight:f,minlen:p,nestingEdge:!0})})),e.parent(c)||e.setEdge(t,h,{weight:0,minlen:a+l[c]})}else c!==t&&e.setEdge(t,c,{weight:0,minlen:i})}e.exports={run:function(e){var t=r.addDummyNode(e,"root",{},"_root"),i=function(e){var t={};function i(r,s){var o=e.children(r);o&&o.length&&n.forEach(o,(function(e){i(e,s+1)})),t[r]=s}return n.forEach(e.children(),(function(e){i(e,1)})),t}(e),o=n.max(n.values(i))-1,a=2*o+1;e.graph().nestingRoot=t,n.forEach(e.edges(),(function(t){e.edge(t).minlen*=a}));var l=function(e){return n.reduce(e.edges(),(function(t,i){return t+e.edge(i).weight}),0)}(e)+1;n.forEach(e.children(),(function(n){s(e,t,a,l,o,i,n)})),e.graph().nodeRankFactor=a},cleanup:function(e){var t=e.graph();e.removeNode(t.nestingRoot),delete t.nestingRoot,n.forEach(e.edges(),(function(t){e.edge(t).nestingEdge&&e.removeEdge(t)}))}}},45995:(e,t,i)=>{"use strict";var n=i(38436),r=i(11138);e.exports={run:function(e){e.graph().dummyChains=[],n.forEach(e.edges(),(function(t){!function(e,t){var i,n,s,o=t.v,a=e.node(o).rank,l=t.w,c=e.node(l).rank,d=t.name,h=e.edge(t),u=h.labelRank;if(c!==a+1){for(e.removeEdge(t),s=0,++a;a<c;++s,++a)h.points=[],n={width:0,height:0,edgeLabel:h,edgeObj:t,rank:a},i=r.addDummyNode(e,"edge",n,"_d"),a===u&&(n.width=h.width,n.height=h.height,n.dummy="edge-label",n.labelpos=h.labelpos),e.setEdge(o,i,{weight:h.weight},d),0===s&&e.graph().dummyChains.push(i),o=i;e.setEdge(o,l,{weight:h.weight},d)}}(e,t)}))},undo:function(e){n.forEach(e.graph().dummyChains,(function(t){var i,n=e.node(t),r=n.edgeLabel;for(e.setEdge(n.edgeObj,r);n.dummy;)i=e.successors(t)[0],e.removeNode(t),r.points.push({x:n.x,y:n.y}),"edge-label"===n.dummy&&(r.x=n.x,r.y=n.y,r.width=n.width,r.height=n.height),t=i,n=e.node(t)}))}}},55093:(e,t,i)=>{var n=i(38436);e.exports=function(e,t,i){var r,s={};n.forEach(i,(function(i){for(var n,o,a=e.parent(i);a;){if((n=e.parent(a))?(o=s[n],s[n]=a):(o=r,r=a),o&&o!==a)return void t.setEdge(o,a);a=n}}))}},35439:(e,t,i)=>{var n=i(38436);e.exports=function(e,t){return n.map(t,(function(t){var i=e.inEdges(t);if(i.length){var r=n.reduce(i,(function(t,i){var n=e.edge(i),r=e.node(i.v);return{sum:t.sum+n.weight*r.order,weight:t.weight+n.weight}}),{sum:0,weight:0});return{v:t,barycenter:r.sum/r.weight,weight:r.weight}}return{v:t}}))}},23128:(e,t,i)=>{var n=i(38436),r=i(70574).Graph;e.exports=function(e,t,i){var s=function(e){for(var t;e.hasNode(t=n.uniqueId("_root")););return t}(e),o=new r({compound:!0}).setGraph({root:s}).setDefaultNodeLabel((function(t){return e.node(t)}));return n.forEach(e.nodes(),(function(r){var a=e.node(r),l=e.parent(r);(a.rank===t||a.minRank<=t&&t<=a.maxRank)&&(o.setNode(r),o.setParent(r,l||s),n.forEach(e[i](r),(function(t){var i=t.v===r?t.w:t.v,s=o.edge(i,r),a=n.isUndefined(s)?0:s.weight;o.setEdge(i,r,{weight:e.edge(t).weight+a})})),n.has(a,"minRank")&&o.setNode(r,{borderLeft:a.borderLeft[t],borderRight:a.borderRight[t]}))})),o}},56630:(e,t,i)=>{"use strict";var n=i(38436);function r(e,t,i){for(var r=n.zipObject(i,n.map(i,(function(e,t){return t}))),s=n.flatten(n.map(t,(function(t){return n.sortBy(n.map(e.outEdges(t),(function(t){return{pos:r[t.w],weight:e.edge(t).weight}})),"pos")})),!0),o=1;o<i.length;)o<<=1;var a=2*o-1;o-=1;var l=n.map(new Array(a),(function(){return 0})),c=0;return n.forEach(s.forEach((function(e){var t=e.pos+o;l[t]+=e.weight;for(var i=0;t>0;)t%2&&(i+=l[t+1]),l[t=t-1>>1]+=e.weight;c+=e.weight*i}))),c}e.exports=function(e,t){for(var i=0,n=1;n<t.length;++n)i+=r(e,t[n-1],t[n]);return i}},53408:(e,t,i)=>{"use strict";var n=i(38436),r=i(2588),s=i(56630),o=i(61026),a=i(23128),l=i(55093),c=i(70574).Graph,d=i(11138);function h(e,t,i){return n.map(t,(function(t){return a(e,t,i)}))}function u(e,t){var i=new c;n.forEach(e,(function(e){var r=e.graph().root,s=o(e,r,i,t);n.forEach(s.vs,(function(t,i){e.node(t).order=i})),l(e,i,s.vs)}))}function g(e,t){n.forEach(t,(function(t){n.forEach(t,(function(t,i){e.node(t).order=i}))}))}e.exports=function(e){var t=d.maxRank(e),i=h(e,n.range(1,t+1),"inEdges"),o=h(e,n.range(t-1,-1,-1),"outEdges"),a=r(e);g(e,a);for(var l,c=Number.POSITIVE_INFINITY,f=0,p=0;p<4;++f,++p){u(f%2?i:o,f%4>=2),a=d.buildLayerMatrix(e);var m=s(e,a);m<c&&(p=0,l=n.cloneDeep(a),c=m)}g(e,l)}},2588:(e,t,i)=>{"use strict";var n=i(38436);e.exports=function(e){var t={},i=n.filter(e.nodes(),(function(t){return!e.children(t).length})),r=n.max(n.map(i,(function(t){return e.node(t).rank}))),s=n.map(n.range(r+1),(function(){return[]})),o=n.sortBy(i,(function(t){return e.node(t).rank}));return n.forEach(o,(function i(r){if(!n.has(t,r)){t[r]=!0;var o=e.node(r);s[o.rank].push(r),n.forEach(e.successors(r),i)}})),s}},83678:(e,t,i)=>{"use strict";var n=i(38436);e.exports=function(e,t){var i={};return n.forEach(e,(function(e,t){var r=i[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:t};n.isUndefined(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)})),n.forEach(t.edges(),(function(e){var t=i[e.v],r=i[e.w];n.isUndefined(t)||n.isUndefined(r)||(r.indegree++,t.out.push(i[e.w]))})),function(e){var t=[];function i(e){return function(t){var i,r,s,o;t.merged||(n.isUndefined(t.barycenter)||n.isUndefined(e.barycenter)||t.barycenter>=e.barycenter)&&(r=t,s=0,o=0,(i=e).weight&&(s+=i.barycenter*i.weight,o+=i.weight),r.weight&&(s+=r.barycenter*r.weight,o+=r.weight),i.vs=r.vs.concat(i.vs),i.barycenter=s/o,i.weight=o,i.i=Math.min(r.i,i.i),r.merged=!0)}}function r(t){return function(i){i.in.push(t),0==--i.indegree&&e.push(i)}}for(;e.length;){var s=e.pop();t.push(s),n.forEach(s.in.reverse(),i(s)),n.forEach(s.out,r(s))}return n.map(n.filter(t,(function(e){return!e.merged})),(function(e){return n.pick(e,["vs","i","barycenter","weight"])}))}(n.filter(i,(function(e){return!e.indegree})))}},61026:(e,t,i)=>{var n=i(38436),r=i(35439),s=i(83678),o=i(87304);e.exports=function e(t,i,a,l){var c=t.children(i),d=t.node(i),h=d?d.borderLeft:void 0,u=d?d.borderRight:void 0,g={};h&&(c=n.filter(c,(function(e){return e!==h&&e!==u})));var f=r(t,c);n.forEach(f,(function(i){if(t.children(i.v).length){var r=e(t,i.v,a,l);g[i.v]=r,n.has(r,"barycenter")&&(s=i,o=r,n.isUndefined(s.barycenter)?(s.barycenter=o.barycenter,s.weight=o.weight):(s.barycenter=(s.barycenter*s.weight+o.barycenter*o.weight)/(s.weight+o.weight),s.weight+=o.weight))}var s,o}));var p=s(f,a);!function(e,t){n.forEach(e,(function(e){e.vs=n.flatten(e.vs.map((function(e){return t[e]?t[e].vs:e})),!0)}))}(p,g);var m=o(p,l);if(h&&(m.vs=n.flatten([h,m.vs,u],!0),t.predecessors(h).length)){var _=t.node(t.predecessors(h)[0]),b=t.node(t.predecessors(u)[0]);n.has(m,"barycenter")||(m.barycenter=0,m.weight=0),m.barycenter=(m.barycenter*m.weight+_.order+b.order)/(m.weight+2),m.weight+=2}return m}},87304:(e,t,i)=>{var n=i(38436),r=i(11138);function s(e,t,i){for(var r;t.length&&(r=n.last(t)).i<=i;)t.pop(),e.push(r.vs),i++;return i}e.exports=function(e,t){var i,o=r.partition(e,(function(e){return n.has(e,"barycenter")})),a=o.lhs,l=n.sortBy(o.rhs,(function(e){return-e.i})),c=[],d=0,h=0,u=0;a.sort((i=!!t,function(e,t){return e.barycenter<t.barycenter?-1:e.barycenter>t.barycenter?1:i?t.i-e.i:e.i-t.i})),u=s(c,l,u),n.forEach(a,(function(e){u+=e.vs.length,c.push(e.vs),d+=e.barycenter*e.weight,h+=e.weight,u=s(c,l,u)}));var g={vs:n.flatten(c,!0)};return h&&(g.barycenter=d/h,g.weight=h),g}},24219:(e,t,i)=>{var n=i(38436);e.exports=function(e){var t=function(e){var t={},i=0;return n.forEach(e.children(),(function r(s){var o=i;n.forEach(e.children(s),r),t[s]={low:o,lim:i++}})),t}(e);n.forEach(e.graph().dummyChains,(function(i){for(var n=e.node(i),r=n.edgeObj,s=function(e,t,i,n){var r,s,o=[],a=[],l=Math.min(t[i].low,t[n].low),c=Math.max(t[i].lim,t[n].lim);r=i;do{r=e.parent(r),o.push(r)}while(r&&(t[r].low>l||c>t[r].lim));for(s=r,r=n;(r=e.parent(r))!==s;)a.push(r);return{path:o.concat(a.reverse()),lca:s}}(e,t,r.v,r.w),o=s.path,a=s.lca,l=0,c=o[l],d=!0;i!==r.w;){if(n=e.node(i),d){for(;(c=o[l])!==a&&e.node(c).maxRank<n.rank;)l++;c===a&&(d=!1)}if(!d){for(;l<o.length-1&&e.node(c=o[l+1]).minRank<=n.rank;)l++;c=o[l]}e.setParent(i,c),i=e.successors(i)[0]}}))}},3573:(e,t,i)=>{"use strict";var n=i(38436),r=i(70574).Graph,s=i(11138);function o(e,t){var i={};return n.reduce(t,(function(t,r){var s=0,o=0,a=t.length,c=n.last(r);return n.forEach(r,(function(t,d){var h=function(e,t){if(e.node(t).dummy)return n.find(e.predecessors(t),(function(t){return e.node(t).dummy}))}(e,t),u=h?e.node(h).order:a;(h||t===c)&&(n.forEach(r.slice(o,d+1),(function(t){n.forEach(e.predecessors(t),(function(n){var r=e.node(n),o=r.order;!(o<s||u<o)||r.dummy&&e.node(t).dummy||l(i,n,t)}))})),o=d+1,s=u)})),r})),i}function a(e,t){var i={};function r(t,r,s,o,a){var c;n.forEach(n.range(r,s),(function(r){c=t[r],e.node(c).dummy&&n.forEach(e.predecessors(c),(function(t){var n=e.node(t);n.dummy&&(n.order<o||n.order>a)&&l(i,t,c)}))}))}return n.reduce(t,(function(t,i){var s,o=-1,a=0;return n.forEach(i,(function(n,l){if("border"===e.node(n).dummy){var c=e.predecessors(n);c.length&&(s=e.node(c[0]).order,r(i,a,l,o,s),a=l,o=s)}r(i,a,i.length,s,t.length)})),i})),i}function l(e,t,i){if(t>i){var n=t;t=i,i=n}var r=e[t];r||(e[t]=r={}),r[i]=!0}function c(e,t,i){if(t>i){var r=t;t=i,i=r}return n.has(e[t],i)}function d(e,t,i,r){var s={},o={},a={};return n.forEach(t,(function(e){n.forEach(e,(function(e,t){s[e]=e,o[e]=e,a[e]=t}))})),n.forEach(t,(function(e){var t=-1;n.forEach(e,(function(e){var l=r(e);if(l.length)for(var d=((l=n.sortBy(l,(function(e){return a[e]}))).length-1)/2,h=Math.floor(d),u=Math.ceil(d);h<=u;++h){var g=l[h];o[e]===e&&t<a[g]&&!c(i,e,g)&&(o[g]=e,o[e]=s[e]=s[g],t=a[g])}}))})),{root:s,align:o}}function h(e,t,i,s,o){var a={},l=function(e,t,i,s){var o=new r,a=e.graph(),l=function(e,t,i){return function(r,s,o){var a,l=r.node(s),c=r.node(o),d=0;if(d+=l.width/2,n.has(l,"labelpos"))switch(l.labelpos.toLowerCase()){case"l":a=-l.width/2;break;case"r":a=l.width/2}if(a&&(d+=i?a:-a),a=0,d+=(l.dummy?t:e)/2,d+=(c.dummy?t:e)/2,d+=c.width/2,n.has(c,"labelpos"))switch(c.labelpos.toLowerCase()){case"l":a=c.width/2;break;case"r":a=-c.width/2}return a&&(d+=i?a:-a),a=0,d}}(a.nodesep,a.edgesep,s);return n.forEach(t,(function(t){var r;n.forEach(t,(function(t){var n=i[t];if(o.setNode(n),r){var s=i[r],a=o.edge(s,n);o.setEdge(s,n,Math.max(l(e,t,r),a||0))}r=t}))})),o}(e,t,i,o),c=o?"borderLeft":"borderRight";function d(e,t){for(var i=l.nodes(),n=i.pop(),r={};n;)r[n]?e(n):(r[n]=!0,i.push(n),i=i.concat(t(n))),n=i.pop()}return d((function(e){a[e]=l.inEdges(e).reduce((function(e,t){return Math.max(e,a[t.v]+l.edge(t))}),0)}),l.predecessors.bind(l)),d((function(t){var i=l.outEdges(t).reduce((function(e,t){return Math.min(e,a[t.w]-l.edge(t))}),Number.POSITIVE_INFINITY),n=e.node(t);i!==Number.POSITIVE_INFINITY&&n.borderType!==c&&(a[t]=Math.max(a[t],i))}),l.successors.bind(l)),n.forEach(s,(function(e){a[e]=a[i[e]]})),a}function u(e,t){return n.minBy(n.values(t),(function(t){var i=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY;return n.forIn(t,(function(t,n){var s=function(e,t){return e.node(t).width}(e,n)/2;i=Math.max(t+s,i),r=Math.min(t-s,r)})),i-r}))}function g(e,t){var i=n.values(t),r=n.min(i),s=n.max(i);n.forEach(["u","d"],(function(i){n.forEach(["l","r"],(function(o){var a,l=i+o,c=e[l];if(c!==t){var d=n.values(c);(a="l"===o?r-n.min(d):s-n.max(d))&&(e[l]=n.mapValues(c,(function(e){return e+a})))}}))}))}function f(e,t){return n.mapValues(e.ul,(function(i,r){if(t)return e[t.toLowerCase()][r];var s=n.sortBy(n.map(e,r));return(s[1]+s[2])/2}))}e.exports={positionX:function(e){var t,i=s.buildLayerMatrix(e),r=n.merge(o(e,i),a(e,i)),l={};n.forEach(["u","d"],(function(s){t="u"===s?i:n.values(i).reverse(),n.forEach(["l","r"],(function(i){"r"===i&&(t=n.map(t,(function(e){return n.values(e).reverse()})));var o=("u"===s?e.predecessors:e.successors).bind(e),a=d(0,t,r,o),c=h(e,t,a.root,a.align,"r"===i);"r"===i&&(c=n.mapValues(c,(function(e){return-e}))),l[s+i]=c}))}));var c=u(e,l);return g(l,c),f(l,e.graph().align)},findType1Conflicts:o,findType2Conflicts:a,addConflict:l,hasConflict:c,verticalAlignment:d,horizontalCompaction:h,alignCoordinates:g,findSmallestWidthAlignment:u,balance:f}},17873:(e,t,i)=>{"use strict";var n=i(38436),r=i(11138),s=i(3573).positionX;e.exports=function(e){(function(e){var t=r.buildLayerMatrix(e),i=e.graph().ranksep,s=0;n.forEach(t,(function(t){var r=n.max(n.map(t,(function(t){return e.node(t).height})));n.forEach(t,(function(t){e.node(t).y=s+r/2})),s+=r+i}))})(e=r.asNonCompoundGraph(e)),n.forEach(s(e),(function(t,i){e.node(i).x=t}))}},20300:(e,t,i)=>{"use strict";var n=i(38436),r=i(70574).Graph,s=i(76681).slack;function o(e,t){return n.forEach(e.nodes(),(function i(r){n.forEach(t.nodeEdges(r),(function(n){var o=n.v,a=r===o?n.w:o;e.hasNode(a)||s(t,n)||(e.setNode(a,{}),e.setEdge(r,a,{}),i(a))}))})),e.nodeCount()}function a(e,t){return n.minBy(t.edges(),(function(i){if(e.hasNode(i.v)!==e.hasNode(i.w))return s(t,i)}))}function l(e,t,i){n.forEach(e.nodes(),(function(e){t.node(e).rank+=i}))}e.exports=function(e){var t,i,n=new r({directed:!1}),c=e.nodes()[0],d=e.nodeCount();for(n.setNode(c,{});o(n,e)<d;)t=a(n,e),i=n.hasNode(t.v)?s(e,t):-s(e,t),l(n,e,i);return n}},78093:(e,t,i)=>{"use strict";var n=i(76681).longestPath,r=i(20300),s=i(42472);e.exports=function(e){switch(e.graph().ranker){case"network-simplex":a(e);break;case"tight-tree":!function(e){n(e),r(e)}(e);break;case"longest-path":o(e);break;default:a(e)}};var o=n;function a(e){s(e)}},42472:(e,t,i)=>{"use strict";var n=i(38436),r=i(20300),s=i(76681).slack,o=i(76681).longestPath,a=i(70574).alg.preorder,l=i(70574).alg.postorder,c=i(11138).simplify;function d(e){e=c(e),o(e);var t,i=r(e);for(g(i),h(i,e);t=p(i);)_(i,e,t,m(i,e,t))}function h(e,t){var i=l(e,e.nodes());i=i.slice(0,i.length-1),n.forEach(i,(function(i){!function(e,t,i){var n=e.node(i).parent;e.edge(i,n).cutvalue=u(e,t,i)}(e,t,i)}))}function u(e,t,i){var r=e.node(i).parent,s=!0,o=t.edge(i,r),a=0;return o||(s=!1,o=t.edge(r,i)),a=o.weight,n.forEach(t.nodeEdges(i),(function(n){var o,l,c=n.v===i,d=c?n.w:n.v;if(d!==r){var h=c===s,u=t.edge(n).weight;if(a+=h?u:-u,o=i,l=d,e.hasEdge(o,l)){var g=e.edge(i,d).cutvalue;a+=h?-g:g}}})),a}function g(e,t){arguments.length<2&&(t=e.nodes()[0]),f(e,{},1,t)}function f(e,t,i,r,s){var o=i,a=e.node(r);return t[r]=!0,n.forEach(e.neighbors(r),(function(s){n.has(t,s)||(i=f(e,t,i,s,r))})),a.low=o,a.lim=i++,s?a.parent=s:delete a.parent,i}function p(e){return n.find(e.edges(),(function(t){return e.edge(t).cutvalue<0}))}function m(e,t,i){var r=i.v,o=i.w;t.hasEdge(r,o)||(r=i.w,o=i.v);var a=e.node(r),l=e.node(o),c=a,d=!1;a.lim>l.lim&&(c=l,d=!0);var h=n.filter(t.edges(),(function(t){return d===b(0,e.node(t.v),c)&&d!==b(0,e.node(t.w),c)}));return n.minBy(h,(function(e){return s(t,e)}))}function _(e,t,i,r){var s=i.v,o=i.w;e.removeEdge(s,o),e.setEdge(r.v,r.w,{}),g(e),h(e,t),function(e,t){var i=n.find(e.nodes(),(function(e){return!t.node(e).parent})),r=a(e,i);r=r.slice(1),n.forEach(r,(function(i){var n=e.node(i).parent,r=t.edge(i,n),s=!1;r||(r=t.edge(n,i),s=!0),t.node(i).rank=t.node(n).rank+(s?r.minlen:-r.minlen)}))}(e,t)}function b(e,t,i){return i.low<=t.lim&&t.lim<=i.lim}e.exports=d,d.initLowLimValues=g,d.initCutValues=h,d.calcCutValue=u,d.leaveEdge=p,d.enterEdge=m,d.exchangeEdges=_},76681:(e,t,i)=>{"use strict";var n=i(38436);e.exports={longestPath:function(e){var t={};n.forEach(e.sources(),(function i(r){var s=e.node(r);if(n.has(t,r))return s.rank;t[r]=!0;var o=n.min(n.map(e.outEdges(r),(function(t){return i(t.w)-e.edge(t).minlen})));return o!==Number.POSITIVE_INFINITY&&null!=o||(o=0),s.rank=o}))},slack:function(e,t){return e.node(t.w).rank-e.node(t.v).rank-e.edge(t).minlen}}},11138:(e,t,i)=>{"use strict";var n=i(38436),r=i(70574).Graph;function s(e,t,i,r){var s;do{s=n.uniqueId(r)}while(e.hasNode(s));return i.dummy=t,e.setNode(s,i),s}function o(e){return n.max(n.map(e.nodes(),(function(t){var i=e.node(t).rank;if(!n.isUndefined(i))return i})))}e.exports={addDummyNode:s,simplify:function(e){var t=(new r).setGraph(e.graph());return n.forEach(e.nodes(),(function(i){t.setNode(i,e.node(i))})),n.forEach(e.edges(),(function(i){var n=t.edge(i.v,i.w)||{weight:0,minlen:1},r=e.edge(i);t.setEdge(i.v,i.w,{weight:n.weight+r.weight,minlen:Math.max(n.minlen,r.minlen)})})),t},asNonCompoundGraph:function(e){var t=new r({multigraph:e.isMultigraph()}).setGraph(e.graph());return n.forEach(e.nodes(),(function(i){e.children(i).length||t.setNode(i,e.node(i))})),n.forEach(e.edges(),(function(i){t.setEdge(i,e.edge(i))})),t},successorWeights:function(e){var t=n.map(e.nodes(),(function(t){var i={};return n.forEach(e.outEdges(t),(function(t){i[t.w]=(i[t.w]||0)+e.edge(t).weight})),i}));return n.zipObject(e.nodes(),t)},predecessorWeights:function(e){var t=n.map(e.nodes(),(function(t){var i={};return n.forEach(e.inEdges(t),(function(t){i[t.v]=(i[t.v]||0)+e.edge(t).weight})),i}));return n.zipObject(e.nodes(),t)},intersectRect:function(e,t){var i,n,r=e.x,s=e.y,o=t.x-r,a=t.y-s,l=e.width/2,c=e.height/2;if(!o&&!a)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(a)*l>Math.abs(o)*c?(a<0&&(c=-c),i=c*o/a,n=c):(o<0&&(l=-l),i=l,n=l*a/o),{x:r+i,y:s+n}},buildLayerMatrix:function(e){var t=n.map(n.range(o(e)+1),(function(){return[]}));return n.forEach(e.nodes(),(function(i){var r=e.node(i),s=r.rank;n.isUndefined(s)||(t[s][r.order]=i)})),t},normalizeRanks:function(e){var t=n.min(n.map(e.nodes(),(function(t){return e.node(t).rank})));n.forEach(e.nodes(),(function(i){var r=e.node(i);n.has(r,"rank")&&(r.rank-=t)}))},removeEmptyRanks:function(e){var t=n.min(n.map(e.nodes(),(function(t){return e.node(t).rank}))),i=[];n.forEach(e.nodes(),(function(n){var r=e.node(n).rank-t;i[r]||(i[r]=[]),i[r].push(n)}));var r=0,s=e.graph().nodeRankFactor;n.forEach(i,(function(t,i){n.isUndefined(t)&&i%s!=0?--r:r&&n.forEach(t,(function(t){e.node(t).rank+=r}))}))},addBorderNode:function(e,t,i,n){var r={width:0,height:0};return arguments.length>=4&&(r.rank=i,r.order=n),s(e,"border",r,t)},maxRank:o,partition:function(e,t){var i={lhs:[],rhs:[]};return n.forEach(e,(function(e){t(e)?i.lhs.push(e):i.rhs.push(e)})),i},time:function(e,t){var i=n.now();try{return t()}finally{console.log(e+" time: "+(n.now()-i)+"ms")}},notime:function(e,t){return t()}}},88177:e=>{e.exports="0.8.4"},2268:e=>{"use strict";var t=e.exports={};t.isIE=function(e){return!(-1===(t=navigator.userAgent.toLowerCase()).indexOf("msie")&&-1===t.indexOf("trident")&&-1===t.indexOf(" edge/")||e&&e!==function(){var e=3,t=document.createElement("div"),i=t.getElementsByTagName("i");do{t.innerHTML="\x3c!--[if gt IE "+ ++e+"]><i></i><![endif]--\x3e"}while(i[0]);return e>4?e:void 0}());var t},t.isLegacyOpera=function(){return!!window.opera}},17900:e=>{"use strict";(e.exports={}).forEach=function(e,t){for(var i=0;i<e.length;i++){var n=t(e[i]);if(n)return n}}},58229:(e,t,i)=>{"use strict";var n=i(2268);e.exports=function(e){var t=(e=e||{}).reporter,i=e.batchProcessor,r=e.stateHandler.getState;if(!t)throw new Error("Missing required dependency: reporter.");function s(t){var i=e.important?" !important; ":"; ";return(t.join(i)+i).trim()}function o(e){return r(e).object}return{makeDetectable:function(e,o,a){a||(a=o,o=e,e=null),(e=e||{}).debug,n.isIE(8)?a(o):function(o,a){var l=s(["display: block","position: absolute","top: 0","left: 0","width: 100%","height: 100%","border: none","padding: 0","margin: 0","opacity: 0","z-index: -1000","pointer-events: none"]),c=!1,d=window.getComputedStyle(o),h=o.offsetWidth,u=o.offsetHeight;function g(){function i(){if("static"===d.position){o.style.setProperty("position","relative",e.important?"important":"");var i=function(t,i,n,r){var s=n[r];"auto"!==s&&"0"!==function(e){return e.replace(/[^-\d\.]/g,"")}(s)&&(t.warn("An element that is positioned static has style."+r+"="+s+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+r+" will be set to 0. Element: ",i),i.style.setProperty(r,"0",e.important?"important":""))};i(t,o,d,"top"),i(t,o,d,"right"),i(t,o,d,"bottom"),i(t,o,d,"left")}}""!==d.position&&(i(),c=!0);var s=document.createElement("object");s.style.cssText=l,s.tabIndex=-1,s.type="text/html",s.setAttribute("aria-hidden","true"),s.onload=function(){c||i(),function e(t,i){if(!t.contentDocument){var n=r(t);return n.checkForObjectDocumentTimeoutId&&window.clearTimeout(n.checkForObjectDocumentTimeoutId),void(n.checkForObjectDocumentTimeoutId=setTimeout((function(){n.checkForObjectDocumentTimeoutId=0,e(t,i)}),100))}i(t.contentDocument)}(this,(function(e){a(o)}))},n.isIE()||(s.data="about:blank"),r(o)&&(o.appendChild(s),r(o).object=s,n.isIE()&&(s.data="about:blank"))}r(o).startSize={width:h,height:u},i?i.add(g):g()}(o,a)},addListener:function(e,t){function i(){t(e)}if(n.isIE(8))r(e).object={proxy:i},e.attachEvent("onresize",i);else{var s=o(e);if(!s)throw new Error("Element is not detectable by this strategy.");s.contentDocument.defaultView.addEventListener("resize",i)}},uninstall:function(e){if(r(e)){var t=o(e);t&&(n.isIE(8)?e.detachEvent("onresize",t.proxy):e.removeChild(t),r(e).checkForObjectDocumentTimeoutId&&window.clearTimeout(r(e).checkForObjectDocumentTimeoutId),delete r(e).object)}}}}},60787:(e,t,i)=>{"use strict";var n=i(17900).forEach;e.exports=function(e){var t=(e=e||{}).reporter,i=e.batchProcessor,r=e.stateHandler.getState,s=(e.stateHandler.hasState,e.idHandler);if(!i)throw new Error("Missing required dependency: batchProcessor");if(!t)throw new Error("Missing required dependency: reporter.");var o=function(){var e=document.createElement("div");e.style.cssText=c(["position: absolute","width: 1000px","height: 1000px","visibility: hidden","margin: 0","padding: 0"]);var t=document.createElement("div");t.style.cssText=c(["position: absolute","width: 500px","height: 500px","overflow: scroll","visibility: none","top: -1500px","left: -1500px","visibility: hidden","margin: 0","padding: 0"]),t.appendChild(e),document.body.insertBefore(t,document.body.firstChild);var i=500-t.clientWidth,n=500-t.clientHeight;return document.body.removeChild(t),{width:i,height:n}}(),a="erd_scroll_detection_container";function l(e){!function(e,t,i){if(!e.getElementById(t)){var n=i+"_animation",r="/* Created by the element-resize-detector library. */\n";r+="."+i+" > div::-webkit-scrollbar { "+c(["display: none"])+" }\n\n",r+=".erd_scroll_detection_container_animation_active { "+c(["-webkit-animation-duration: 0.1s","animation-duration: 0.1s","-webkit-animation-name: "+n,"animation-name: "+n])+" }\n",r+="@-webkit-keyframes "+n+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n",function(i,n){n=n||function(t){e.head.appendChild(t)};var r=e.createElement("style");r.innerHTML=i,r.id=t,n(r)}(r+="@keyframes "+n+" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }")}}(e,"erd_scroll_detection_scrollbar_style",a)}function c(t){var i=e.important?" !important; ":"; ";return(t.join(i)+i).trim()}function d(e,i,n){if(e.addEventListener)e.addEventListener(i,n);else{if(!e.attachEvent)return t.error("[scroll] Don't know how to add event listeners.");e.attachEvent("on"+i,n)}}function h(e,i,n){if(e.removeEventListener)e.removeEventListener(i,n);else{if(!e.detachEvent)return t.error("[scroll] Don't know how to remove event listeners.");e.detachEvent("on"+i,n)}}function u(e){return r(e).container.childNodes[0].childNodes[0].childNodes[0]}function g(e){return r(e).container.childNodes[0].childNodes[0].childNodes[1]}return l(window.document),{makeDetectable:function(e,l,h){function f(){if(e.debug){var i=Array.prototype.slice.call(arguments);if(i.unshift(s.get(l),"Scroll: "),t.log.apply)t.log.apply(null,i);else for(var n=0;n<i.length;n++)t.log(i[n])}}function p(e){var t=r(e).container.childNodes[0],i=window.getComputedStyle(t);return!i.width||-1===i.width.indexOf("px")}function m(){var e=window.getComputedStyle(l),t={};return t.position=e.position,t.width=l.offsetWidth,t.height=l.offsetHeight,t.top=e.top,t.right=e.right,t.bottom=e.bottom,t.left=e.left,t.widthCSS=e.width,t.heightCSS=e.height,t}function _(){if(f("storeStyle invoked."),r(l)){var e=m();r(l).style=e}else f("Aborting because element has been uninstalled")}function b(e,t,i){r(e).lastWidth=t,r(e).lastHeight=i}function v(){return 2*o.width+1}function y(){return 2*o.height+1}function w(e){return e+10+v()}function C(e){return e+10+y()}function S(e,t,i){var n=u(e),r=g(e),s=w(t),o=C(i),a=function(e){return 2*e+v()}(t),l=function(e){return 2*e+y()}(i);n.scrollLeft=s,n.scrollTop=o,r.scrollLeft=a,r.scrollTop=l}function k(){var e=r(l).container;if(!e){(e=document.createElement("div")).className=a,e.style.cssText=c(["visibility: hidden","display: inline","width: 0px","height: 0px","z-index: -1","overflow: hidden","margin: 0","padding: 0"]),r(l).container=e,function(e){e.className+=" "+a+"_animation_active"}(e),l.appendChild(e);var t=function(){r(l).onRendered&&r(l).onRendered()};d(e,"animationstart",t),r(l).onAnimationStart=t}return e}function x(){if(f("Injecting elements"),r(l)){!function(){var i=r(l).style;if("static"===i.position){l.style.setProperty("position","relative",e.important?"important":"");var n=function(e,t,i,n){var r=i[n];"auto"!==r&&"0"!==function(e){return e.replace(/[^-\d\.]/g,"")}(r)&&(e.warn("An element that is positioned static has style."+n+"="+r+" which is ignored due to the static positioning. The element will need to be positioned relative, so the style."+n+" will be set to 0. Element: ",t),t.style[n]=0)};n(t,l,i,"top"),n(t,l,i,"right"),n(t,l,i,"bottom"),n(t,l,i,"left")}}();var i=r(l).container;i||(i=k());var n,s,h,u,g=o.width,p=o.height,m=c(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden","width: 100%","height: 100%","left: 0px","top: 0px"]),_=c(["position: absolute","flex: none","overflow: hidden","z-index: -1","visibility: hidden"].concat(["left: "+(n=(n=-(1+g))?n+"px":"0"),"top: "+(s=(s=-(1+p))?s+"px":"0"),"right: "+(u=(u=-g)?u+"px":"0"),"bottom: "+(h=(h=-p)?h+"px":"0")])),b=c(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),v=c(["position: absolute","flex: none","overflow: scroll","z-index: -1","visibility: hidden","width: 100%","height: 100%"]),y=c(["position: absolute","left: 0","top: 0"]),w=c(["position: absolute","width: 200%","height: 200%"]),C=document.createElement("div"),S=document.createElement("div"),x=document.createElement("div"),L=document.createElement("div"),M=document.createElement("div"),D=document.createElement("div");C.dir="ltr",C.style.cssText=m,C.className=a,S.className=a,S.style.cssText=_,x.style.cssText=b,L.style.cssText=y,M.style.cssText=v,D.style.cssText=w,x.appendChild(L),M.appendChild(D),S.appendChild(x),S.appendChild(M),C.appendChild(S),i.appendChild(C),d(x,"scroll",N),d(M,"scroll",E),r(l).onExpandScroll=N,r(l).onShrinkScroll=E}else f("Aborting because element has been uninstalled");function N(){r(l).onExpand&&r(l).onExpand()}function E(){r(l).onShrink&&r(l).onShrink()}}function L(){function o(t,i,n){var r=function(e){return u(e).childNodes[0]}(t),s=w(i),o=C(n);r.style.setProperty("width",s+"px",e.important?"important":""),r.style.setProperty("height",o+"px",e.important?"important":"")}function a(n){var a=l.offsetWidth,d=l.offsetHeight,h=a!==r(l).lastWidth||d!==r(l).lastHeight;f("Storing current size",a,d),b(l,a,d),i.add(0,(function(){if(h)if(r(l))if(c()){if(e.debug){var i=l.offsetWidth,n=l.offsetHeight;i===a&&n===d||t.warn(s.get(l),"Scroll: Size changed before updating detector elements.")}o(l,a,d)}else f("Aborting because element container has not been initialized");else f("Aborting because element has been uninstalled")})),i.add(1,(function(){r(l)?c()?S(l,a,d):f("Aborting because element container has not been initialized"):f("Aborting because element has been uninstalled")})),h&&n&&i.add(2,(function(){r(l)?c()?n():f("Aborting because element container has not been initialized"):f("Aborting because element has been uninstalled")}))}function c(){return!!r(l).container}function d(){f("notifyListenersIfNeeded invoked");var e=r(l);return void 0===r(l).lastNotifiedWidth&&e.lastWidth===e.startSize.width&&e.lastHeight===e.startSize.height?f("Not notifying: Size is the same as the start size, and there has been no notification yet."):e.lastWidth===e.lastNotifiedWidth&&e.lastHeight===e.lastNotifiedHeight?f("Not notifying: Size already notified"):(f("Current size not notified, notifying..."),e.lastNotifiedWidth=e.lastWidth,e.lastNotifiedHeight=e.lastHeight,void n(r(l).listeners,(function(e){e(l)})))}function h(){f("Scroll detected."),p(l)?f("Scroll event fired while unrendered. Ignoring..."):a(d)}if(f("registerListenersAndPositionElements invoked."),r(l)){r(l).onRendered=function(){if(f("startanimation triggered."),p(l))f("Ignoring since element is still unrendered...");else{f("Element rendered.");var e=u(l),t=g(l);0!==e.scrollLeft&&0!==e.scrollTop&&0!==t.scrollLeft&&0!==t.scrollTop||(f("Scrollbars out of sync. Updating detector elements..."),a(d))}},r(l).onExpand=h,r(l).onShrink=h;var m=r(l).style;o(l,m.width,m.height)}else f("Aborting because element has been uninstalled")}function M(){if(f("finalizeDomMutation invoked."),r(l)){var e=r(l).style;b(l,e.width,e.height),S(l,e.width,e.height)}else f("Aborting because element has been uninstalled")}function D(){h(l)}function N(){var e;f("Installing..."),r(l).listeners=[],e=m(),r(l).startSize={width:e.width,height:e.height},f("Element start size",r(l).startSize),i.add(0,_),i.add(1,x),i.add(2,L),i.add(3,M),i.add(4,D)}h||(h=l,l=e,e=null),e=e||{},f("Making detectable..."),function(e){return!function(e){return e===e.ownerDocument.body||e.ownerDocument.body.contains(e)}(e)||null===window.getComputedStyle(e)}(l)?(f("Element is detached"),k(),f("Waiting until element is attached..."),r(l).onRendered=function(){f("Element is now attached"),N()}):N()},addListener:function(e,t){if(!r(e).listeners.push)throw new Error("Cannot add listener to an element that is not detectable.");r(e).listeners.push(t)},uninstall:function(e){var t=r(e);t&&(t.onExpandScroll&&h(u(e),"scroll",t.onExpandScroll),t.onShrinkScroll&&h(g(e),"scroll",t.onShrinkScroll),t.onAnimationStart&&h(t.container,"animationstart",t.onAnimationStart),t.container&&e.removeChild(t.container))},initDocument:l}}},63844:(e,t,i)=>{"use strict";var n=i(17900).forEach,r=i(68452),s=i(96199),o=i(75805),a=i(79799),l=i(71724),c=i(2268),d=i(98129),h=i(21931),u=i(58229),g=i(60787);function f(e){return Array.isArray(e)||void 0!==e.length}function p(e){if(Array.isArray(e))return e;var t=[];return n(e,(function(e){t.push(e)})),t}function m(e){return e&&1===e.nodeType}function _(e,t,i){var n=e[t];return null==n&&void 0!==i?i:n}e.exports=function(e){var t;if((e=e||{}).idHandler)t={get:function(t){return e.idHandler.get(t,!0)},set:e.idHandler.set};else{var i=o(),b=a({idGenerator:i,stateHandler:h});t=b}var v=e.reporter;v||(v=l(!1===v));var y=_(e,"batchProcessor",d({reporter:v})),w={};w.callOnAdd=!!_(e,"callOnAdd",!0),w.debug=!!_(e,"debug",!1);var C,S=s(t),k=r({stateHandler:h}),x=_(e,"strategy","object"),L=_(e,"important",!1),M={reporter:v,batchProcessor:y,stateHandler:h,idHandler:t,important:L};if("scroll"===x&&(c.isLegacyOpera()?(v.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy."),x="object"):c.isIE(9)&&(v.warn("Scroll strategy is not supported on IE9. Changing to object strategy."),x="object")),"scroll"===x)C=g(M);else{if("object"!==x)throw new Error("Invalid strategy name: "+x);C=u(M)}var D={};return{listenTo:function(e,i,r){function s(e){var t=S.get(e);n(t,(function(t){t(e)}))}function o(e,t,i){S.add(t,i),e&&i(t)}if(r||(r=i,i=e,e={}),!i)throw new Error("At least one element required.");if(!r)throw new Error("Listener required.");if(m(i))i=[i];else{if(!f(i))return v.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");i=p(i)}var a=0,l=_(e,"callOnAdd",w.callOnAdd),c=_(e,"onReady",(function(){})),d=_(e,"debug",w.debug);n(i,(function(e){h.getState(e)||(h.initState(e),t.set(e));var u=t.get(e);if(d&&v.log("Attaching listener to element",u,e),!k.isDetectable(e))return d&&v.log(u,"Not detectable."),k.isBusy(e)?(d&&v.log(u,"System busy making it detectable"),o(l,e,r),D[u]=D[u]||[],void D[u].push((function(){++a===i.length&&c()}))):(d&&v.log(u,"Making detectable..."),k.markBusy(e,!0),C.makeDetectable({debug:d,important:L},e,(function(e){if(d&&v.log(u,"onElementDetectable"),h.getState(e)){k.markAsDetectable(e),k.markBusy(e,!1),C.addListener(e,s),o(l,e,r);var t=h.getState(e);if(t&&t.startSize){var g=e.offsetWidth,f=e.offsetHeight;t.startSize.width===g&&t.startSize.height===f||s(e)}D[u]&&n(D[u],(function(e){e()}))}else d&&v.log(u,"Element uninstalled before being detectable.");delete D[u],++a===i.length&&c()})));d&&v.log(u,"Already detecable, adding listener."),o(l,e,r),a++})),a===i.length&&c()},removeListener:S.removeListener,removeAllListeners:S.removeAllListeners,uninstall:function(e){if(!e)return v.error("At least one element is required.");if(m(e))e=[e];else{if(!f(e))return v.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");e=p(e)}n(e,(function(e){S.removeAllListeners(e),C.uninstall(e),h.cleanState(e)}))},initDocument:function(e){C.initDocument&&C.initDocument(e)}}}},68452:e=>{"use strict";e.exports=function(e){var t=e.stateHandler.getState;return{isDetectable:function(e){var i=t(e);return i&&!!i.isDetectable},markAsDetectable:function(e){t(e).isDetectable=!0},isBusy:function(e){return!!t(e).busy},markBusy:function(e,i){t(e).busy=!!i}}}},75805:e=>{"use strict";e.exports=function(){var e=1;return{generate:function(){return e++}}}},79799:e=>{"use strict";e.exports=function(e){var t=e.idGenerator,i=e.stateHandler.getState;return{get:function(e){var t=i(e);return t&&void 0!==t.id?t.id:null},set:function(e){var n=i(e);if(!n)throw new Error("setId required the element to have a resize detection state.");var r=t.generate();return n.id=r,r}}}},96199:e=>{"use strict";e.exports=function(e){var t={};function i(i){var n=e.get(i);return void 0===n?[]:t[n]||[]}return{get:i,add:function(i,n){var r=e.get(i);t[r]||(t[r]=[]),t[r].push(n)},removeListener:function(e,t){for(var n=i(e),r=0,s=n.length;r<s;++r)if(n[r]===t){n.splice(r,1);break}},removeAllListeners:function(e){var t=i(e);t&&(t.length=0)}}}},71724:e=>{"use strict";e.exports=function(e){function t(){}var i={log:t,warn:t,error:t};if(!e&&window.console){var n=function(e,t){e[t]=function(){var e=console[t];if(e.apply)e.apply(console,arguments);else for(var i=0;i<arguments.length;i++)e(arguments[i])}};n(i,"log"),n(i,"warn"),n(i,"error")}return i}},21931:e=>{"use strict";function t(e){return e._erd}e.exports={initState:function(e){return e._erd={},t(e)},getState:t,cleanState:function(e){delete e._erd}}},42859:(e,t,i)=>{"use strict";var n;function r(e){return n=n||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),n.innerHTML=e,unescape(n.textContent)}i.r(t),i.d(t,{default:()=>r})},28282:(e,t,i)=>{var n=i(82354);e.exports={Graph:n.Graph,json:i(28974),alg:i(12440),version:n.version}},2842:(e,t,i)=>{var n=i(89126);e.exports=function(e){var t,i={},r=[];function s(r){n.has(i,r)||(i[r]=!0,t.push(r),n.each(e.successors(r),s),n.each(e.predecessors(r),s))}return n.each(e.nodes(),(function(e){t=[],s(e),t.length&&r.push(t)})),r}},53984:(e,t,i)=>{var n=i(89126);function r(e,t,i,s,o,a){n.has(s,t)||(s[t]=!0,i||a.push(t),n.each(o(t),(function(t){r(e,t,i,s,o,a)})),i&&a.push(t))}e.exports=function(e,t,i){n.isArray(t)||(t=[t]);var s=(e.isDirected()?e.successors:e.neighbors).bind(e),o=[],a={};return n.each(t,(function(t){if(!e.hasNode(t))throw new Error("Graph does not have node: "+t);r(e,t,"post"===i,a,s,o)})),o}},84847:(e,t,i)=>{var n=i(63763),r=i(89126);e.exports=function(e,t,i){return r.transform(e.nodes(),(function(r,s){r[s]=n(e,s,t,i)}),{})}},63763:(e,t,i)=>{var n=i(89126),r=i(75639);e.exports=function(e,t,i,n){return function(e,t,i,n){var s,o,a={},l=new r,c=function(e){var t=e.v!==s?e.v:e.w,n=a[t],r=i(e),c=o.distance+r;if(r<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+e+" Weight: "+r);c<n.distance&&(n.distance=c,n.predecessor=s,l.decrease(t,c))};for(e.nodes().forEach((function(e){var i=e===t?0:Number.POSITIVE_INFINITY;a[e]={distance:i},l.add(e,i)}));l.size()>0&&(s=l.removeMin(),(o=a[s]).distance!==Number.POSITIVE_INFINITY);)n(s).forEach(c);return a}(e,String(t),i||s,n||function(t){return e.outEdges(t)})};var s=n.constant(1)},9096:(e,t,i)=>{var n=i(89126),r=i(5023);e.exports=function(e){return n.filter(r(e),(function(t){return t.length>1||1===t.length&&e.hasEdge(t[0],t[0])}))}},38924:(e,t,i)=>{var n=i(89126);e.exports=function(e,t,i){return function(e,t,i){var n={},r=e.nodes();return r.forEach((function(e){n[e]={},n[e][e]={distance:0},r.forEach((function(t){e!==t&&(n[e][t]={distance:Number.POSITIVE_INFINITY})})),i(e).forEach((function(i){var r=i.v===e?i.w:i.v,s=t(i);n[e][r]={distance:s,predecessor:e}}))})),r.forEach((function(e){var t=n[e];r.forEach((function(i){var s=n[i];r.forEach((function(i){var n=s[e],r=t[i],o=s[i],a=n.distance+r.distance;a<o.distance&&(o.distance=a,o.predecessor=r.predecessor)}))}))})),n}(e,t||r,i||function(t){return e.outEdges(t)})};var r=n.constant(1)},12440:(e,t,i)=>{e.exports={components:i(2842),dijkstra:i(63763),dijkstraAll:i(84847),findCycles:i(9096),floydWarshall:i(38924),isAcyclic:i(62707),postorder:i(58828),preorder:i(92648),prim:i(80514),tarjan:i(5023),topsort:i(2166)}},62707:(e,t,i)=>{var n=i(2166);e.exports=function(e){try{n(e)}catch(e){if(e instanceof n.CycleException)return!1;throw e}return!0}},58828:(e,t,i)=>{var n=i(53984);e.exports=function(e,t){return n(e,t,"post")}},92648:(e,t,i)=>{var n=i(53984);e.exports=function(e,t){return n(e,t,"pre")}},80514:(e,t,i)=>{var n=i(89126),r=i(30771),s=i(75639);e.exports=function(e,t){var i,o=new r,a={},l=new s;function c(e){var n=e.v===i?e.w:e.v,r=l.priority(n);if(void 0!==r){var s=t(e);s<r&&(a[n]=i,l.decrease(n,s))}}if(0===e.nodeCount())return o;n.each(e.nodes(),(function(e){l.add(e,Number.POSITIVE_INFINITY),o.setNode(e)})),l.decrease(e.nodes()[0],0);for(var d=!1;l.size()>0;){if(i=l.removeMin(),n.has(a,i))o.setEdge(i,a[i]);else{if(d)throw new Error("Input graph is not connected: "+e);d=!0}e.nodeEdges(i).forEach(c)}return o}},5023:(e,t,i)=>{var n=i(89126);e.exports=function(e){var t=0,i=[],r={},s=[];function o(a){var l=r[a]={onStack:!0,lowlink:t,index:t++};if(i.push(a),e.successors(a).forEach((function(e){n.has(r,e)?r[e].onStack&&(l.lowlink=Math.min(l.lowlink,r[e].index)):(o(e),l.lowlink=Math.min(l.lowlink,r[e].lowlink))})),l.lowlink===l.index){var c,d=[];do{c=i.pop(),r[c].onStack=!1,d.push(c)}while(a!==c);s.push(d)}}return e.nodes().forEach((function(e){n.has(r,e)||o(e)})),s}},2166:(e,t,i)=>{var n=i(89126);function r(e){var t={},i={},r=[];if(n.each(e.sinks(),(function o(a){if(n.has(i,a))throw new s;n.has(t,a)||(i[a]=!0,t[a]=!0,n.each(e.predecessors(a),o),delete i[a],r.push(a))})),n.size(t)!==e.nodeCount())throw new s;return r}function s(){}e.exports=r,r.CycleException=s,s.prototype=new Error},75639:(e,t,i)=>{var n=i(89126);function r(){this._arr=[],this._keyIndices={}}e.exports=r,r.prototype.size=function(){return this._arr.length},r.prototype.keys=function(){return this._arr.map((function(e){return e.key}))},r.prototype.has=function(e){return n.has(this._keyIndices,e)},r.prototype.priority=function(e){var t=this._keyIndices[e];if(void 0!==t)return this._arr[t].priority},r.prototype.min=function(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key},r.prototype.add=function(e,t){var i=this._keyIndices;if(e=String(e),!n.has(i,e)){var r=this._arr,s=r.length;return i[e]=s,r.push({key:e,priority:t}),this._decrease(s),!0}return!1},r.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var e=this._arr.pop();return delete this._keyIndices[e.key],this._heapify(0),e.key},r.prototype.decrease=function(e,t){var i=this._keyIndices[e];if(t>this._arr[i].priority)throw new Error("New priority is greater than current priority. Key: "+e+" Old: "+this._arr[i].priority+" New: "+t);this._arr[i].priority=t,this._decrease(i)},r.prototype._heapify=function(e){var t=this._arr,i=2*e,n=i+1,r=e;i<t.length&&(r=t[i].priority<t[r].priority?i:r,n<t.length&&(r=t[n].priority<t[r].priority?n:r),r!==e&&(this._swap(e,r),this._heapify(r)))},r.prototype._decrease=function(e){for(var t,i=this._arr,n=i[e].priority;0!==e&&!(i[t=e>>1].priority<n);)this._swap(e,t),e=t},r.prototype._swap=function(e,t){var i=this._arr,n=this._keyIndices,r=i[e],s=i[t];i[e]=s,i[t]=r,n[s.key]=e,n[r.key]=t}},30771:(e,t,i)=>{"use strict";var n=i(89126);e.exports=s;var r="\0";function s(e){this._isDirected=!n.has(e,"directed")||e.directed,this._isMultigraph=!!n.has(e,"multigraph")&&e.multigraph,this._isCompound=!!n.has(e,"compound")&&e.compound,this._label=void 0,this._defaultNodeLabelFn=n.constant(void 0),this._defaultEdgeLabelFn=n.constant(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children["\0"]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}function o(e,t){e[t]?e[t]++:e[t]=1}function a(e,t){--e[t]||delete e[t]}function l(e,t,i,r){var s=""+t,o=""+i;if(!e&&s>o){var a=s;s=o,o=a}return s+""+o+""+(n.isUndefined(r)?"\0":r)}function c(e,t,i,n){var r=""+t,s=""+i;if(!e&&r>s){var o=r;r=s,s=o}var a={v:r,w:s};return n&&(a.name=n),a}function d(e,t){return l(e,t.v,t.w,t.name)}s.prototype._nodeCount=0,s.prototype._edgeCount=0,s.prototype.isDirected=function(){return this._isDirected},s.prototype.isMultigraph=function(){return this._isMultigraph},s.prototype.isCompound=function(){return this._isCompound},s.prototype.setGraph=function(e){return this._label=e,this},s.prototype.graph=function(){return this._label},s.prototype.setDefaultNodeLabel=function(e){return n.isFunction(e)||(e=n.constant(e)),this._defaultNodeLabelFn=e,this},s.prototype.nodeCount=function(){return this._nodeCount},s.prototype.nodes=function(){return n.keys(this._nodes)},s.prototype.sources=function(){var e=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(e._in[t])}))},s.prototype.sinks=function(){var e=this;return n.filter(this.nodes(),(function(t){return n.isEmpty(e._out[t])}))},s.prototype.setNodes=function(e,t){var i=arguments,r=this;return n.each(e,(function(e){i.length>1?r.setNode(e,t):r.setNode(e)})),this},s.prototype.setNode=function(e,t){return n.has(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=r,this._children[e]={},this._children["\0"][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)},s.prototype.node=function(e){return this._nodes[e]},s.prototype.hasNode=function(e){return n.has(this._nodes,e)},s.prototype.removeNode=function(e){var t=this;if(n.has(this._nodes,e)){var i=function(e){t.removeEdge(t._edgeObjs[e])};delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],n.each(this.children(e),(function(e){t.setParent(e)})),delete this._children[e]),n.each(n.keys(this._in[e]),i),delete this._in[e],delete this._preds[e],n.each(n.keys(this._out[e]),i),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this},s.prototype.setParent=function(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(n.isUndefined(t))t=r;else{for(var i=t+="";!n.isUndefined(i);i=this.parent(i))if(i===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this},s.prototype._removeFromParentsChildList=function(e){delete this._children[this._parent[e]][e]},s.prototype.parent=function(e){if(this._isCompound){var t=this._parent[e];if(t!==r)return t}},s.prototype.children=function(e){if(n.isUndefined(e)&&(e=r),this._isCompound){var t=this._children[e];if(t)return n.keys(t)}else{if(e===r)return this.nodes();if(this.hasNode(e))return[]}},s.prototype.predecessors=function(e){var t=this._preds[e];if(t)return n.keys(t)},s.prototype.successors=function(e){var t=this._sucs[e];if(t)return n.keys(t)},s.prototype.neighbors=function(e){var t=this.predecessors(e);if(t)return n.union(t,this.successors(e))},s.prototype.isLeaf=function(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length},s.prototype.filterNodes=function(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var i=this;n.each(this._nodes,(function(i,n){e(n)&&t.setNode(n,i)})),n.each(this._edgeObjs,(function(e){t.hasNode(e.v)&&t.hasNode(e.w)&&t.setEdge(e,i.edge(e))}));var r={};function s(e){var n=i.parent(e);return void 0===n||t.hasNode(n)?(r[e]=n,n):n in r?r[n]:s(n)}return this._isCompound&&n.each(t.nodes(),(function(e){t.setParent(e,s(e))})),t},s.prototype.setDefaultEdgeLabel=function(e){return n.isFunction(e)||(e=n.constant(e)),this._defaultEdgeLabelFn=e,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return n.values(this._edgeObjs)},s.prototype.setPath=function(e,t){var i=this,r=arguments;return n.reduce(e,(function(e,n){return r.length>1?i.setEdge(e,n,t):i.setEdge(e,n),n})),this},s.prototype.setEdge=function(){var e,t,i,r,s=!1,a=arguments[0];"object"==typeof a&&null!==a&&"v"in a?(e=a.v,t=a.w,i=a.name,2===arguments.length&&(r=arguments[1],s=!0)):(e=a,t=arguments[1],i=arguments[3],arguments.length>2&&(r=arguments[2],s=!0)),e=""+e,t=""+t,n.isUndefined(i)||(i=""+i);var d=l(this._isDirected,e,t,i);if(n.has(this._edgeLabels,d))return s&&(this._edgeLabels[d]=r),this;if(!n.isUndefined(i)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[d]=s?r:this._defaultEdgeLabelFn(e,t,i);var h=c(this._isDirected,e,t,i);return e=h.v,t=h.w,Object.freeze(h),this._edgeObjs[d]=h,o(this._preds[t],e),o(this._sucs[e],t),this._in[t][d]=h,this._out[e][d]=h,this._edgeCount++,this},s.prototype.edge=function(e,t,i){var n=1===arguments.length?d(this._isDirected,arguments[0]):l(this._isDirected,e,t,i);return this._edgeLabels[n]},s.prototype.hasEdge=function(e,t,i){var r=1===arguments.length?d(this._isDirected,arguments[0]):l(this._isDirected,e,t,i);return n.has(this._edgeLabels,r)},s.prototype.removeEdge=function(e,t,i){var n=1===arguments.length?d(this._isDirected,arguments[0]):l(this._isDirected,e,t,i),r=this._edgeObjs[n];return r&&(e=r.v,t=r.w,delete this._edgeLabels[n],delete this._edgeObjs[n],a(this._preds[t],e),a(this._sucs[e],t),delete this._in[t][n],delete this._out[e][n],this._edgeCount--),this},s.prototype.inEdges=function(e,t){var i=this._in[e];if(i){var r=n.values(i);return t?n.filter(r,(function(e){return e.v===t})):r}},s.prototype.outEdges=function(e,t){var i=this._out[e];if(i){var r=n.values(i);return t?n.filter(r,(function(e){return e.w===t})):r}},s.prototype.nodeEdges=function(e,t){var i=this.inEdges(e,t);if(i)return i.concat(this.outEdges(e,t))}},82354:(e,t,i)=>{e.exports={Graph:i(30771),version:i(49631)}},28974:(e,t,i)=>{var n=i(89126),r=i(30771);function s(e){return n.map(e.nodes(),(function(t){var i=e.node(t),r=e.parent(t),s={v:t};return n.isUndefined(i)||(s.value=i),n.isUndefined(r)||(s.parent=r),s}))}function o(e){return n.map(e.edges(),(function(t){var i=e.edge(t),r={v:t.v,w:t.w};return n.isUndefined(t.name)||(r.name=t.name),n.isUndefined(i)||(r.value=i),r}))}e.exports={write:function(e){var t={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:s(e),edges:o(e)};return n.isUndefined(e.graph())||(t.value=n.clone(e.graph())),t},read:function(e){var t=new r(e.options).setGraph(e.value);return n.each(e.nodes,(function(e){t.setNode(e.v,e.value),e.parent&&t.setParent(e.v,e.parent)})),n.each(e.edges,(function(e){t.setEdge({v:e.v,w:e.w,name:e.name},e.value)})),t}}},89126:(e,t,i)=>{var n;try{n={clone:i(66678),constant:i(75703),each:i(66073),filter:i(63105),has:i(18721),isArray:i(1469),isEmpty:i(41609),isFunction:i(23560),isUndefined:i(52353),keys:i(3674),map:i(35161),reduce:i(54061),size:i(84238),transform:i(68718),union:i(93386),values:i(52628)}}catch(e){}n||(n=window._),e.exports=n},49631:e=>{e.exports="2.1.7"},61773:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(2536),s=i(7628),o=function(){function e(e,t){this.color=t,this.changed=!1,this.data=e,this.type=new s.default}return e.prototype.set=function(e,t){return this.color=t,this.changed=!1,this.data=e,this.type.type=r.TYPE.ALL,this},e.prototype._ensureHSL=function(){void 0===this.data.h&&(this.data.h=n.default.channel.rgb2hsl(this.data,"h")),void 0===this.data.s&&(this.data.s=n.default.channel.rgb2hsl(this.data,"s")),void 0===this.data.l&&(this.data.l=n.default.channel.rgb2hsl(this.data,"l"))},e.prototype._ensureRGB=function(){void 0===this.data.r&&(this.data.r=n.default.channel.hsl2rgb(this.data,"r")),void 0===this.data.g&&(this.data.g=n.default.channel.hsl2rgb(this.data,"g")),void 0===this.data.b&&(this.data.b=n.default.channel.hsl2rgb(this.data,"b"))},Object.defineProperty(e.prototype,"r",{get:function(){return this.type.is(r.TYPE.HSL)||void 0===this.data.r?(this._ensureHSL(),n.default.channel.hsl2rgb(this.data,"r")):this.data.r},set:function(e){this.type.set(r.TYPE.RGB),this.changed=!0,this.data.r=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"g",{get:function(){return this.type.is(r.TYPE.HSL)||void 0===this.data.g?(this._ensureHSL(),n.default.channel.hsl2rgb(this.data,"g")):this.data.g},set:function(e){this.type.set(r.TYPE.RGB),this.changed=!0,this.data.g=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"b",{get:function(){return this.type.is(r.TYPE.HSL)||void 0===this.data.b?(this._ensureHSL(),n.default.channel.hsl2rgb(this.data,"b")):this.data.b},set:function(e){this.type.set(r.TYPE.RGB),this.changed=!0,this.data.b=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"h",{get:function(){return this.type.is(r.TYPE.RGB)||void 0===this.data.h?(this._ensureRGB(),n.default.channel.rgb2hsl(this.data,"h")):this.data.h},set:function(e){this.type.set(r.TYPE.HSL),this.changed=!0,this.data.h=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"s",{get:function(){return this.type.is(r.TYPE.RGB)||void 0===this.data.s?(this._ensureRGB(),n.default.channel.rgb2hsl(this.data,"s")):this.data.s},set:function(e){this.type.set(r.TYPE.HSL),this.changed=!0,this.data.s=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"l",{get:function(){return this.type.is(r.TYPE.RGB)||void 0===this.data.l?(this._ensureRGB(),n.default.channel.rgb2hsl(this.data,"l")):this.data.l},set:function(e){this.type.set(r.TYPE.HSL),this.changed=!0,this.data.l=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"a",{get:function(){return this.data.a},set:function(e){this.changed=!0,this.data.a=e},enumerable:!0,configurable:!0}),e}();t.default=o},28167:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=new(i(61773).default)({r:0,g:0,b:0,a:0},"transparent");t.default=n},7628:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(2536),r=function(){function e(){this.type=n.TYPE.ALL}return e.prototype.get=function(){return this.type},e.prototype.set=function(e){if(this.type&&this.type!==e)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=e},e.prototype.reset=function(){this.type=n.TYPE.ALL},e.prototype.is=function(e){return this.type===e},e}();t.default=r},51655:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(28167),s=i(66061),o={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:function(e){if(35===e.charCodeAt(0)){var t=e.match(o.re);if(t){var i=t[1],n=parseInt(i,16),s=i.length,a=s%4==0,l=s>4,c=l?1:17,d=l?8:4,h=a?0:-1,u=l?255:15;return r.default.set({r:(n>>d*(h+3)&u)*c,g:(n>>d*(h+2)&u)*c,b:(n>>d*(h+1)&u)*c,a:a?(n&u)*c/255:1},e)}}},stringify:function(e){return e.a<1?"#"+s.DEC2HEX[Math.round(e.r)]+s.DEC2HEX[Math.round(e.g)]+s.DEC2HEX[Math.round(e.b)]+n.default.unit.frac2hex(e.a):"#"+s.DEC2HEX[Math.round(e.r)]+s.DEC2HEX[Math.round(e.g)]+s.DEC2HEX[Math.round(e.b)]}};t.default=o},58589:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(28167),s={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:function(e){var t=e.match(s.hueRe);if(t){var i=t[1];switch(t[2]){case"grad":return n.default.channel.clamp.h(.9*parseFloat(i));case"rad":return n.default.channel.clamp.h(180*parseFloat(i)/Math.PI);case"turn":return n.default.channel.clamp.h(360*parseFloat(i))}}return n.default.channel.clamp.h(parseFloat(e))},parse:function(e){var t=e.charCodeAt(0);if(104===t||72===t){var i=e.match(s.re);if(i){var o=i[1],a=i[2],l=i[3],c=i[4],d=i[5];return r.default.set({h:s._hue2deg(o),s:n.default.channel.clamp.s(parseFloat(a)),l:n.default.channel.clamp.l(parseFloat(l)),a:c?n.default.channel.clamp.a(d?parseFloat(c)/100:parseFloat(c)):1},e)}}},stringify:function(e){return e.a<1?"hsla("+n.default.lang.round(e.h)+", "+n.default.lang.round(e.s)+"%, "+n.default.lang.round(e.l)+"%, "+e.a+")":"hsl("+n.default.lang.round(e.h)+", "+n.default.lang.round(e.s)+"%, "+n.default.lang.round(e.l)+"%)"}};t.default=s},32191:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(2536),r=i(51655),s=i(7538),o=i(76762),a=i(58589),l={format:{keyword:s.default,hex:r.default,rgb:o.default,rgba:o.default,hsl:a.default,hsla:a.default},parse:function(e){if("string"!=typeof e)return e;var t=r.default.parse(e)||o.default.parse(e)||a.default.parse(e)||s.default.parse(e);if(t)return t;throw new Error('Unsupported color format: "'+e+'"')},stringify:function(e){return!e.changed&&e.color?e.color:e.type.is(n.TYPE.HSL)||void 0===e.data.r?a.default.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?o.default.stringify(e):r.default.stringify(e)}};t.default=l},7538:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(51655),r={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:function(e){e=e.toLowerCase();var t=r.colors[e];if(t)return n.default.parse(t)},stringify:function(e){var t=n.default.stringify(e);for(var i in r.colors)if(r.colors[i]===t)return i}};t.default=r},76762:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(28167),s={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:function(e){var t=e.charCodeAt(0);if(114===t||82===t){var i=e.match(s.re);if(i){var o=i[1],a=i[2],l=i[3],c=i[4],d=i[5],h=i[6],u=i[7],g=i[8];return r.default.set({r:n.default.channel.clamp.r(a?2.55*parseFloat(o):parseFloat(o)),g:n.default.channel.clamp.g(c?2.55*parseFloat(l):parseFloat(l)),b:n.default.channel.clamp.b(h?2.55*parseFloat(d):parseFloat(d)),a:u?n.default.channel.clamp.a(g?parseFloat(u)/100:parseFloat(u)):1},e)}}},stringify:function(e){return e.a<1?"rgba("+n.default.lang.round(e.r)+", "+n.default.lang.round(e.g)+", "+n.default.lang.round(e.b)+", "+n.default.lang.round(e.a)+")":"rgb("+n.default.lang.round(e.r)+", "+n.default.lang.round(e.g)+", "+n.default.lang.round(e.b)+")"}};t.default=s},66061:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r={};t.DEC2HEX=r;for(var s=0;s<=255;s++)r[s]=n.default.unit.dec2hex(s)},8613:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var i in e)t.hasOwnProperty(i)||(t[i]=e[i])}(i(21203))},45371:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(32191),r=i(50418);t.default=function(e,t){var i=n.default.parse(e),s={};for(var o in t)t[o]&&(s[o]=i[o]+t[o]);return r.default(e,s)}},11416:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(32191);t.default=function(e,t,i){var s=r.default.parse(e),o=s[t],a=n.default.channel.clamp[t](o+i);return o!==a&&(s[t]=a),r.default.stringify(s)}},89353:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"a")}},63394:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"b")}},50418:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(32191);t.default=function(e,t){var i=r.default.parse(e);for(var s in t)i[s]=n.default.channel.clamp[s](t[s]);return r.default.stringify(i)}},6197:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(32191);t.default=function(e,t){return n.default.lang.round(r.default.parse(e)[t])}},77361:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e){return n.default(e,"h",180)}},61364:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e,t){return n.default(e,"l",-t)}},49610:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e,t){return n.default(e,"s",-t)}},40572:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(50418);t.default=function(e){return n.default(e,{s:0})}},12299:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"g")}},43116:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(28167),s=i(32191);t.default=function(e,t,i,o){void 0===o&&(o=1);var a=r.default.set({h:n.default.channel.clamp.h(e),s:n.default.channel.clamp.s(t),l:n.default.channel.clamp.l(i),a:n.default.channel.clamp.a(o)});return s.default.stringify(a)}},23008:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"h")}},21203:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(76538);t.hex=n.default;var r=i(76538);t.rgb=r.default;var s=i(76538);t.rgba=s.default;var o=i(43116);t.hsl=o.default;var a=i(43116);t.hsla=a.default;var l=i(6197);t.channel=l.default;var c=i(79640);t.red=c.default;var d=i(12299);t.green=d.default;var h=i(63394);t.blue=h.default;var u=i(23008);t.hue=u.default;var g=i(46451);t.saturation=g.default;var f=i(29235);t.lightness=f.default;var p=i(89353);t.alpha=p.default;var m=i(89353);t.opacity=m.default;var _=i(68346);t.luminance=_.default;var b=i(4117);t.isDark=b.default;var v=i(82224);t.isLight=v.default;var y=i(20585);t.isValid=y.default;var w=i(61080);t.saturate=w.default;var C=i(49610);t.desaturate=C.default;var S=i(23235);t.lighten=S.default;var k=i(61364);t.darken=k.default;var x=i(27189);t.opacify=x.default;var L=i(27189);t.fadeIn=L.default;var M=i(24989);t.transparentize=M.default;var D=i(24989);t.fadeOut=D.default;var N=i(77361);t.complement=N.default;var E=i(40572);t.grayscale=E.default;var T=i(45371);t.adjust=T.default;var I=i(50418);t.change=I.default;var O=i(566);t.invert=O.default;var A=i(51861);t.mix=A.default;var R=i(7081);t.scale=R.default},566:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(32191),r=i(51861);t.default=function(e,t){void 0===t&&(t=100);var i=n.default.parse(e);return i.r=255-i.r,i.g=255-i.g,i.b=255-i.b,r.default(i,e,t)}},4117:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(82224);t.default=function(e){return!n.default(e)}},82224:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(68346);t.default=function(e){return n.default(e)>=.5}},20585:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(32191);t.default=function(e){try{return n.default.parse(e),!0}catch(e){return!1}}},23235:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e,t){return n.default(e,"l",t)}},29235:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"l")}},68346:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(32191);t.default=function(e){var t=r.default.parse(e),i=t.r,s=t.g,o=t.b,a=.2126*n.default.channel.toLinear(i)+.7152*n.default.channel.toLinear(s)+.0722*n.default.channel.toLinear(o);return n.default.lang.round(a)}},51861:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(32191),r=i(76538);t.default=function(e,t,i){void 0===i&&(i=50);var s=n.default.parse(e),o=s.r,a=s.g,l=s.b,c=s.a,d=n.default.parse(t),h=d.r,u=d.g,g=d.b,f=d.a,p=i/100,m=2*p-1,_=c-f,b=((m*_==-1?m:(m+_)/(1+m*_))+1)/2,v=1-b,y=o*b+h*v,w=a*b+u*v,C=l*b+g*v,S=c*p+f*(1-p);return r.default(y,w,C,S)}},27189:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e,t){return n.default(e,"a",t)}},79640:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"r")}},76538:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(28167),s=i(32191),o=i(50418);t.default=function(e,t,i,a){if(void 0===i&&(i=0),void 0===a&&(a=1),"number"!=typeof e)return o.default(e,{a:t});var l=r.default.set({r:n.default.channel.clamp.r(e),g:n.default.channel.clamp.g(t),b:n.default.channel.clamp.b(i),a:n.default.channel.clamp.a(a)});return s.default.stringify(l)}},61080:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e,t){return n.default(e,"s",t)}},46451:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(6197);t.default=function(e){return n.default(e,"s")}},7081:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(81083),r=i(32191),s=i(45371);t.default=function(e,t){var i,o,a,l=r.default.parse(e),c={};for(var d in t)c[d]=(i=l[d],o=t[d],a=n.default.channel.max[d],o>0?(a-i)*o/100:i*o/100);return s.default(e,c)}},24989:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(11416);t.default=function(e,t){return n.default(e,"a",-t)}},2536:(e,t)=>{"use strict";var i;Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.ALL=0]="ALL",e[e.RGB=1]="RGB",e[e.HSL=2]="HSL"}(i||(i={})),t.TYPE=i},47994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:function(e){return e>=255?255:e<0?0:e},g:function(e){return e>=255?255:e<0?0:e},b:function(e){return e>=255?255:e<0?0:e},h:function(e){return e%360},s:function(e){return e>=100?100:e<0?0:e},l:function(e){return e>=100?100:e<0?0:e},a:function(e){return e>=1?1:e<0?0:e}},toLinear:function(e){var t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},hue2rgb:function(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e},hsl2rgb:function(e,t){var n=e.h,r=e.s,s=e.l;if(100===r)return 2.55*s;n/=360,r/=100;var o=(s/=100)<.5?s*(1+r):s+r-s*r,a=2*s-o;switch(t){case"r":return 255*i.hue2rgb(a,o,n+1/3);case"g":return 255*i.hue2rgb(a,o,n);case"b":return 255*i.hue2rgb(a,o,n-1/3)}},rgb2hsl:function(e,t){var i=e.r,n=e.g,r=e.b;i/=255,n/=255,r/=255;var s=Math.max(i,n,r),o=Math.min(i,n,r),a=(s+o)/2;if("l"===t)return 100*a;if(s===o)return 0;var l=s-o;if("s"===t)return 100*(a>.5?l/(2-s-o):l/(s+o));switch(s){case i:return 60*((n-r)/l+(n<r?6:0));case n:return 60*((r-i)/l+2);case r:return 60*((i-n)/l+4);default:return-1}}};t.default=i},81083:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=i(47994),r=i(64027),s=i(10318),o={channel:n.default,lang:r.default,unit:s.default};t.default=o},64027:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={round:function(e){return Math.round(1e10*e)/1e10}};t.default=i},10318:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={frac2hex:function(e){var t=Math.round(255*e).toString(16);return t.length>1?t:"0"+t},dec2hex:function(e){var t=Math.round(e).toString(16);return t.length>1?t:"0"+t}};t.default=i},18552:(e,t,i)=>{var n=i(10852)(i(55639),"DataView");e.exports=n},1989:(e,t,i)=>{var n=i(51789),r=i(80401),s=i(57667),o=i(21327),a=i(81866);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=r,l.prototype.get=s,l.prototype.has=o,l.prototype.set=a,e.exports=l},38407:(e,t,i)=>{var n=i(27040),r=i(14125),s=i(82117),o=i(67518),a=i(54705);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=r,l.prototype.get=s,l.prototype.has=o,l.prototype.set=a,e.exports=l},57071:(e,t,i)=>{var n=i(10852)(i(55639),"Map");e.exports=n},83369:(e,t,i)=>{var n=i(24785),r=i(11285),s=i(96e3),o=i(49916),a=i(95265);function l(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t<i;){var n=e[t];this.set(n[0],n[1])}}l.prototype.clear=n,l.prototype.delete=r,l.prototype.get=s,l.prototype.has=o,l.prototype.set=a,e.exports=l},53818:(e,t,i)=>{var n=i(10852)(i(55639),"Promise");e.exports=n},58525:(e,t,i)=>{var n=i(10852)(i(55639),"Set");e.exports=n},88668:(e,t,i)=>{var n=i(83369),r=i(90619),s=i(72385);function o(e){var t=-1,i=null==e?0:e.length;for(this.__data__=new n;++t<i;)this.add(e[t])}o.prototype.add=o.prototype.push=r,o.prototype.has=s,e.exports=o},46384:(e,t,i)=>{var n=i(38407),r=i(37465),s=i(63779),o=i(67599),a=i(44758),l=i(34309);function c(e){var t=this.__data__=new n(e);this.size=t.size}c.prototype.clear=r,c.prototype.delete=s,c.prototype.get=o,c.prototype.has=a,c.prototype.set=l,e.exports=c},62705:(e,t,i)=>{var n=i(55639).Symbol;e.exports=n},11149:(e,t,i)=>{var n=i(55639).Uint8Array;e.exports=n},70577:(e,t,i)=>{var n=i(10852)(i(55639),"WeakMap");e.exports=n},96874:e=>{e.exports=function(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}},77412:e=>{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length;++i<n&&!1!==t(e[i],i,e););return e}},34963:e=>{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length,r=0,s=[];++i<n;){var o=e[i];t(o,i,e)&&(s[r++]=o)}return s}},47443:(e,t,i)=>{var n=i(42118);e.exports=function(e,t){return!(null==e||!e.length)&&n(e,t,0)>-1}},1196:e=>{e.exports=function(e,t,i){for(var n=-1,r=null==e?0:e.length;++n<r;)if(i(t,e[n]))return!0;return!1}},14636:(e,t,i)=>{var n=i(22545),r=i(35694),s=i(1469),o=i(44144),a=i(65776),l=i(36719),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var i=s(e),d=!i&&r(e),h=!i&&!d&&o(e),u=!i&&!d&&!h&&l(e),g=i||d||h||u,f=g?n(e.length,String):[],p=f.length;for(var m in e)!t&&!c.call(e,m)||g&&("length"==m||h&&("offset"==m||"parent"==m)||u&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||a(m,p))||f.push(m);return f}},29932:e=>{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length,r=Array(n);++i<n;)r[i]=t(e[i],i,e);return r}},62488:e=>{e.exports=function(e,t){for(var i=-1,n=t.length,r=e.length;++i<n;)e[r+i]=t[i];return e}},62663:e=>{e.exports=function(e,t,i,n){var r=-1,s=null==e?0:e.length;for(n&&s&&(i=e[++r]);++r<s;)i=t(i,e[r],r,e);return i}},82908:e=>{e.exports=function(e,t){for(var i=-1,n=null==e?0:e.length;++i<n;)if(t(e[i],i,e))return!0;return!1}},48983:(e,t,i)=>{var n=i(40371)("length");e.exports=n},86556:(e,t,i)=>{var n=i(89465),r=i(77813);e.exports=function(e,t,i){(void 0!==i&&!r(e[t],i)||void 0===i&&!(t in e))&&n(e,t,i)}},34865:(e,t,i)=>{var n=i(89465),r=i(77813),s=Object.prototype.hasOwnProperty;e.exports=function(e,t,i){var o=e[t];s.call(e,t)&&r(o,i)&&(void 0!==i||t in e)||n(e,t,i)}},18470:(e,t,i)=>{var n=i(77813);e.exports=function(e,t){for(var i=e.length;i--;)if(n(e[i][0],t))return i;return-1}},44037:(e,t,i)=>{var n=i(98363),r=i(3674);e.exports=function(e,t){return e&&n(t,r(t),e)}},63886:(e,t,i)=>{var n=i(98363),r=i(81704);e.exports=function(e,t){return e&&n(t,r(t),e)}},89465:(e,t,i)=>{var n=i(38777);e.exports=function(e,t,i){"__proto__"==t&&n?n(e,t,{configurable:!0,enumerable:!0,value:i,writable:!0}):e[t]=i}},85990:(e,t,i)=>{var n=i(46384),r=i(77412),s=i(34865),o=i(44037),a=i(63886),l=i(64626),c=i(278),d=i(18805),h=i(1911),u=i(58234),g=i(46904),f=i(64160),p=i(43824),m=i(29148),_=i(38517),b=i(1469),v=i(44144),y=i(56688),w=i(13218),C=i(72928),S=i(3674),k="[object Arguments]",x="[object Function]",L="[object Object]",M={};M[k]=M["[object Array]"]=M["[object ArrayBuffer]"]=M["[object DataView]"]=M["[object Boolean]"]=M["[object Date]"]=M["[object Float32Array]"]=M["[object Float64Array]"]=M["[object Int8Array]"]=M["[object Int16Array]"]=M["[object Int32Array]"]=M["[object Map]"]=M["[object Number]"]=M[L]=M["[object RegExp]"]=M["[object Set]"]=M["[object String]"]=M["[object Symbol]"]=M["[object Uint8Array]"]=M["[object Uint8ClampedArray]"]=M["[object Uint16Array]"]=M["[object Uint32Array]"]=!0,M["[object Error]"]=M[x]=M["[object WeakMap]"]=!1,e.exports=function e(t,i,D,N,E,T){var I,O=1&i,A=2&i,R=4&i;if(D&&(I=E?D(t,N,E,T):D(t)),void 0!==I)return I;if(!w(t))return t;var P=b(t);if(P){if(I=p(t),!O)return c(t,I)}else{var F=f(t),B=F==x||"[object GeneratorFunction]"==F;if(v(t))return l(t,O);if(F==L||F==k||B&&!E){if(I=A||B?{}:_(t),!O)return A?h(t,a(I,t)):d(t,o(I,t))}else{if(!M[F])return E?t:{};I=m(t,F,O)}}T||(T=new n);var W=T.get(t);if(W)return W;T.set(t,I),C(t)?t.forEach((function(n){I.add(e(n,i,D,n,t,T))})):y(t)&&t.forEach((function(n,r){I.set(r,e(n,i,D,r,t,T))}));var Y=R?A?g:u:A?keysIn:S,H=P?void 0:Y(t);return r(H||t,(function(n,r){H&&(n=t[r=n]),s(I,r,e(n,i,D,r,t,T))})),I}},3118:(e,t,i)=>{var n=i(13218),r=Object.create,s=function(){function e(){}return function(t){if(!n(t))return{};if(r)return r(t);e.prototype=t;var i=new e;return e.prototype=void 0,i}}();e.exports=s},89881:(e,t,i)=>{var n=i(47816),r=i(99291)(n);e.exports=r},56029:(e,t,i)=>{var n=i(33448);e.exports=function(e,t,i){for(var r=-1,s=e.length;++r<s;){var o=e[r],a=t(o);if(null!=a&&(void 0===l?a==a&&!n(a):i(a,l)))var l=a,c=o}return c}},80760:(e,t,i)=>{var n=i(89881);e.exports=function(e,t){var i=[];return n(e,(function(e,n,r){t(e,n,r)&&i.push(e)})),i}},41848:e=>{e.exports=function(e,t,i,n){for(var r=e.length,s=i+(n?1:-1);n?s--:++s<r;)if(t(e[s],s,e))return s;return-1}},21078:(e,t,i)=>{var n=i(62488),r=i(37285);e.exports=function e(t,i,s,o,a){var l=-1,c=t.length;for(s||(s=r),a||(a=[]);++l<c;){var d=t[l];i>0&&s(d)?i>1?e(d,i-1,s,o,a):n(a,d):o||(a[a.length]=d)}return a}},28483:(e,t,i)=>{var n=i(25063)();e.exports=n},47816:(e,t,i)=>{var n=i(28483),r=i(3674);e.exports=function(e,t){return e&&n(e,t,r)}},97786:(e,t,i)=>{var n=i(71811),r=i(40327);e.exports=function(e,t){for(var i=0,s=(t=n(t,e)).length;null!=e&&i<s;)e=e[r(t[i++])];return i&&i==s?e:void 0}},68866:(e,t,i)=>{var n=i(62488),r=i(1469);e.exports=function(e,t,i){var s=t(e);return r(e)?s:n(s,i(e))}},44239:(e,t,i)=>{var n=i(62705),r=i(89607),s=i(2333),o=n?n.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?r(e):s(e)}},53325:e=>{e.exports=function(e,t){return e>t}},78565:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e,i){return null!=e&&t.call(e,i)}},13:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},42118:(e,t,i)=>{var n=i(41848),r=i(62722),s=i(42351);e.exports=function(e,t,i){return t==t?s(e,t,i):n(e,r,i)}},9454:(e,t,i)=>{var n=i(44239),r=i(37005);e.exports=function(e){return r(e)&&"[object Arguments]"==n(e)}},90939:(e,t,i)=>{var n=i(2492),r=i(37005);e.exports=function e(t,i,s,o,a){return t===i||(null==t||null==i||!r(t)&&!r(i)?t!=t&&i!=i:n(t,i,s,o,e,a))}},2492:(e,t,i)=>{var n=i(46384),r=i(67114),s=i(18351),o=i(16096),a=i(64160),l=i(1469),c=i(44144),d=i(36719),h="[object Arguments]",u="[object Array]",g="[object Object]",f=Object.prototype.hasOwnProperty;e.exports=function(e,t,i,p,m,_){var b=l(e),v=l(t),y=b?u:a(e),w=v?u:a(t),C=(y=y==h?g:y)==g,S=(w=w==h?g:w)==g,k=y==w;if(k&&c(e)){if(!c(t))return!1;b=!0,C=!1}if(k&&!C)return _||(_=new n),b||d(e)?r(e,t,i,p,m,_):s(e,t,y,i,p,m,_);if(!(1&i)){var x=C&&f.call(e,"__wrapped__"),L=S&&f.call(t,"__wrapped__");if(x||L){var M=x?e.value():e,D=L?t.value():t;return _||(_=new n),m(M,D,i,p,_)}}return!!k&&(_||(_=new n),o(e,t,i,p,m,_))}},25588:(e,t,i)=>{var n=i(64160),r=i(37005);e.exports=function(e){return r(e)&&"[object Map]"==n(e)}},2958:(e,t,i)=>{var n=i(46384),r=i(90939);e.exports=function(e,t,i,s){var o=i.length,a=o,l=!s;if(null==e)return!a;for(e=Object(e);o--;){var c=i[o];if(l&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++o<a;){var d=(c=i[o])[0],h=e[d],u=c[1];if(l&&c[2]){if(void 0===h&&!(d in e))return!1}else{var g=new n;if(s)var f=s(h,u,d,e,t,g);if(!(void 0===f?r(u,h,3,s,g):f))return!1}}return!0}},62722:e=>{e.exports=function(e){return e!=e}},28458:(e,t,i)=>{var n=i(23560),r=i(15346),s=i(13218),o=i(80346),a=/^\[object .+?Constructor\]$/,l=Function.prototype,c=Object.prototype,d=l.toString,h=c.hasOwnProperty,u=RegExp("^"+d.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!s(e)||r(e))&&(n(e)?u:a).test(o(e))}},29221:(e,t,i)=>{var n=i(64160),r=i(37005);e.exports=function(e){return r(e)&&"[object Set]"==n(e)}},38749:(e,t,i)=>{var n=i(44239),r=i(41780),s=i(37005),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,e.exports=function(e){return s(e)&&r(e.length)&&!!o[n(e)]}},67206:(e,t,i)=>{var n=i(91573),r=i(16432),s=i(6557),o=i(1469),a=i(39601);e.exports=function(e){return"function"==typeof e?e:null==e?s:"object"==typeof e?o(e)?r(e[0],e[1]):n(e):a(e)}},280:(e,t,i)=>{var n=i(25726),r=i(86916),s=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return r(e);var t=[];for(var i in Object(e))s.call(e,i)&&"constructor"!=i&&t.push(i);return t}},10313:(e,t,i)=>{var n=i(13218),r=i(25726),s=i(33498),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!n(e))return s(e);var t=r(e),i=[];for(var a in e)("constructor"!=a||!t&&o.call(e,a))&&i.push(a);return i}},70433:e=>{e.exports=function(e,t){return e<t}},69199:(e,t,i)=>{var n=i(89881),r=i(98612);e.exports=function(e,t){var i=-1,s=r(e)?Array(e.length):[];return n(e,(function(e,n,r){s[++i]=t(e,n,r)})),s}},91573:(e,t,i)=>{var n=i(2958),r=i(1499),s=i(42634);e.exports=function(e){var t=r(e);return 1==t.length&&t[0][2]?s(t[0][0],t[0][1]):function(i){return i===e||n(i,e,t)}}},16432:(e,t,i)=>{var n=i(90939),r=i(27361),s=i(79095),o=i(15403),a=i(89162),l=i(42634),c=i(40327);e.exports=function(e,t){return o(e)&&a(t)?l(c(e),t):function(i){var o=r(i,e);return void 0===o&&o===t?s(i,e):n(t,o,3)}}},42980:(e,t,i)=>{var n=i(46384),r=i(86556),s=i(28483),o=i(59783),a=i(13218),l=i(81704),c=i(36390);e.exports=function e(t,i,d,h,u){t!==i&&s(i,(function(s,l){if(u||(u=new n),a(s))o(t,i,l,d,e,h,u);else{var g=h?h(c(t,l),s,l+"",t,i,u):void 0;void 0===g&&(g=s),r(t,l,g)}}),l)}},59783:(e,t,i)=>{var n=i(86556),r=i(64626),s=i(77133),o=i(278),a=i(38517),l=i(35694),c=i(1469),d=i(29246),h=i(44144),u=i(23560),g=i(13218),f=i(68630),p=i(36719),m=i(36390),_=i(59881);e.exports=function(e,t,i,b,v,y,w){var C=m(e,i),S=m(t,i),k=w.get(S);if(k)n(e,i,k);else{var x=y?y(C,S,i+"",e,t,w):void 0,L=void 0===x;if(L){var M=c(S),D=!M&&h(S),N=!M&&!D&&p(S);x=S,M||D||N?c(C)?x=C:d(C)?x=o(C):D?(L=!1,x=r(S,!0)):N?(L=!1,x=s(S,!0)):x=[]:f(S)||l(S)?(x=C,l(C)?x=_(C):g(C)&&!u(C)||(x=a(S))):L=!1}L&&(w.set(S,x),v(x,S,b,y,w),w.delete(S)),n(e,i,x)}}},82689:(e,t,i)=>{var n=i(29932),r=i(67206),s=i(69199),o=i(71131),a=i(7518),l=i(85022),c=i(6557);e.exports=function(e,t,i){var d=-1;t=n(t.length?t:[c],a(r));var h=s(e,(function(e,i,r){return{criteria:n(t,(function(t){return t(e)})),index:++d,value:e}}));return o(h,(function(e,t){return l(e,t,i)}))}},25970:(e,t,i)=>{var n=i(63012),r=i(79095);e.exports=function(e,t){return n(e,t,(function(t,i){return r(e,i)}))}},63012:(e,t,i)=>{var n=i(97786),r=i(10611),s=i(71811);e.exports=function(e,t,i){for(var o=-1,a=t.length,l={};++o<a;){var c=t[o],d=n(e,c);i(d,c)&&r(l,s(c,e),d)}return l}},40371:e=>{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},79152:(e,t,i)=>{var n=i(97786);e.exports=function(e){return function(t){return n(t,e)}}},40098:e=>{var t=Math.ceil,i=Math.max;e.exports=function(e,n,r,s){for(var o=-1,a=i(t((n-e)/(r||1)),0),l=Array(a);a--;)l[s?a:++o]=e,e+=r;return l}},10107:e=>{e.exports=function(e,t,i,n,r){return r(e,(function(e,r,s){i=n?(n=!1,e):t(i,e,r,s)})),i}},18460:(e,t,i)=>{var n=i(6557),r=i(45357),s=i(30061);e.exports=function(e,t){return s(r(e,t,n),e+"")}},10611:(e,t,i)=>{var n=i(34865),r=i(71811),s=i(65776),o=i(13218),a=i(40327);e.exports=function(e,t,i,l){if(!o(e))return e;for(var c=-1,d=(t=r(t,e)).length,h=d-1,u=e;null!=u&&++c<d;){var g=a(t[c]),f=i;if(c!=h){var p=u[g];void 0===(f=l?l(p,g,u):void 0)&&(f=o(p)?p:s(t[c+1])?[]:{})}n(u,g,f),u=u[g]}return e}},56560:(e,t,i)=>{var n=i(75703),r=i(38777),s=i(6557),o=r?function(e,t){return r(e,"toString",{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:s;e.exports=o},71131:e=>{e.exports=function(e,t){var i=e.length;for(e.sort(t);i--;)e[i]=e[i].value;return e}},22545:e=>{e.exports=function(e,t){for(var i=-1,n=Array(e);++i<e;)n[i]=t(i);return n}},80531:(e,t,i)=>{var n=i(62705),r=i(29932),s=i(1469),o=i(33448),a=n?n.prototype:void 0,l=a?a.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(s(t))return r(t,e)+"";if(o(t))return l?l.call(t):"";var i=t+"";return"0"==i&&1/t==-1/0?"-0":i}},7518:e=>{e.exports=function(e){return function(t){return e(t)}}},45652:(e,t,i)=>{var n=i(88668),r=i(47443),s=i(1196),o=i(74757),a=i(23593),l=i(21814);e.exports=function(e,t,i){var c=-1,d=r,h=e.length,u=!0,g=[],f=g;if(i)u=!1,d=s;else if(h>=200){var p=t?null:a(e);if(p)return l(p);u=!1,d=o,f=new n}else f=t?[]:g;e:for(;++c<h;){var m=e[c],_=t?t(m):m;if(m=i||0!==m?m:0,u&&_==_){for(var b=f.length;b--;)if(f[b]===_)continue e;t&&f.push(_),g.push(m)}else d(f,_,i)||(f!==g&&f.push(_),g.push(m))}return g}},47415:(e,t,i)=>{var n=i(29932);e.exports=function(e,t){return n(t,(function(t){return e[t]}))}},1757:e=>{e.exports=function(e,t,i){for(var n=-1,r=e.length,s=t.length,o={};++n<r;){var a=n<s?t[n]:void 0;i(o,e[n],a)}return o}},74757:e=>{e.exports=function(e,t){return e.has(t)}},54290:(e,t,i)=>{var n=i(6557);e.exports=function(e){return"function"==typeof e?e:n}},71811:(e,t,i)=>{var n=i(1469),r=i(15403),s=i(55514),o=i(79833);e.exports=function(e,t){return n(e)?e:r(e,t)?[e]:s(o(e))}},74318:(e,t,i)=>{var n=i(11149);e.exports=function(e){var t=new e.constructor(e.byteLength);return new n(t).set(new n(e)),t}},64626:(e,t,i)=>{e=i.nmd(e);var n=i(55639),r=t&&!t.nodeType&&t,s=r&&e&&!e.nodeType&&e,o=s&&s.exports===r?n.Buffer:void 0,a=o?o.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var i=e.length,n=a?a(i):new e.constructor(i);return e.copy(n),n}},57157:(e,t,i)=>{var n=i(74318);e.exports=function(e,t){var i=t?n(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)}},93147:e=>{var t=/\w*$/;e.exports=function(e){var i=new e.constructor(e.source,t.exec(e));return i.lastIndex=e.lastIndex,i}},40419:(e,t,i)=>{var n=i(62705),r=n?n.prototype:void 0,s=r?r.valueOf:void 0;e.exports=function(e){return s?Object(s.call(e)):{}}},77133:(e,t,i)=>{var n=i(74318);e.exports=function(e,t){var i=t?n(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)}},26393:(e,t,i)=>{var n=i(33448);e.exports=function(e,t){if(e!==t){var i=void 0!==e,r=null===e,s=e==e,o=n(e),a=void 0!==t,l=null===t,c=t==t,d=n(t);if(!l&&!d&&!o&&e>t||o&&a&&c&&!l&&!d||r&&a&&c||!i&&c||!s)return 1;if(!r&&!o&&!d&&e<t||d&&i&&s&&!r&&!o||l&&i&&s||!a&&s||!c)return-1}return 0}},85022:(e,t,i)=>{var n=i(26393);e.exports=function(e,t,i){for(var r=-1,s=e.criteria,o=t.criteria,a=s.length,l=i.length;++r<a;){var c=n(s[r],o[r]);if(c)return r>=l?c:c*("desc"==i[r]?-1:1)}return e.index-t.index}},278:e=>{e.exports=function(e,t){var i=-1,n=e.length;for(t||(t=Array(n));++i<n;)t[i]=e[i];return t}},98363:(e,t,i)=>{var n=i(34865),r=i(89465);e.exports=function(e,t,i,s){var o=!i;i||(i={});for(var a=-1,l=t.length;++a<l;){var c=t[a],d=s?s(i[c],e[c],c,i,e):void 0;void 0===d&&(d=e[c]),o?r(i,c,d):n(i,c,d)}return i}},18805:(e,t,i)=>{var n=i(98363),r=i(99551);e.exports=function(e,t){return n(e,r(e),t)}},1911:(e,t,i)=>{var n=i(98363),r=i(51442);e.exports=function(e,t){return n(e,r(e),t)}},14429:(e,t,i)=>{var n=i(55639)["__core-js_shared__"];e.exports=n},21463:(e,t,i)=>{var n=i(18460),r=i(16612);e.exports=function(e){return n((function(t,i){var n=-1,s=i.length,o=s>1?i[s-1]:void 0,a=s>2?i[2]:void 0;for(o=e.length>3&&"function"==typeof o?(s--,o):void 0,a&&r(i[0],i[1],a)&&(o=s<3?void 0:o,s=1),t=Object(t);++n<s;){var l=i[n];l&&e(t,l,n,o)}return t}))}},99291:(e,t,i)=>{var n=i(98612);e.exports=function(e,t){return function(i,r){if(null==i)return i;if(!n(i))return e(i,r);for(var s=i.length,o=t?s:-1,a=Object(i);(t?o--:++o<s)&&!1!==r(a[o],o,a););return i}}},25063:e=>{e.exports=function(e){return function(t,i,n){for(var r=-1,s=Object(t),o=n(t),a=o.length;a--;){var l=o[e?a:++r];if(!1===i(s[l],l,s))break}return t}}},67740:(e,t,i)=>{var n=i(67206),r=i(98612),s=i(3674);e.exports=function(e){return function(t,i,o){var a=Object(t);if(!r(t)){var l=n(i,3);t=s(t),i=function(e){return l(a[e],e,a)}}var c=e(t,i,o);return c>-1?a[l?t[c]:c]:void 0}}},47445:(e,t,i)=>{var n=i(40098),r=i(16612),s=i(18601);e.exports=function(e){return function(t,i,o){return o&&"number"!=typeof o&&r(t,i,o)&&(i=o=void 0),t=s(t),void 0===i?(i=t,t=0):i=s(i),o=void 0===o?t<i?1:-1:s(o),n(t,i,o,e)}}},23593:(e,t,i)=>{var n=i(58525),r=i(50308),s=i(21814),o=n&&1/s(new n([,-0]))[1]==1/0?function(e){return new n(e)}:r;e.exports=o},38777:(e,t,i)=>{var n=i(10852),r=function(){try{var e=n(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=r},67114:(e,t,i)=>{var n=i(88668),r=i(82908),s=i(74757);e.exports=function(e,t,i,o,a,l){var c=1&i,d=e.length,h=t.length;if(d!=h&&!(c&&h>d))return!1;var u=l.get(e);if(u&&l.get(t))return u==t;var g=-1,f=!0,p=2&i?new n:void 0;for(l.set(e,t),l.set(t,e);++g<d;){var m=e[g],_=t[g];if(o)var b=c?o(_,m,g,t,e,l):o(m,_,g,e,t,l);if(void 0!==b){if(b)continue;f=!1;break}if(p){if(!r(t,(function(e,t){if(!s(p,t)&&(m===e||a(m,e,i,o,l)))return p.push(t)}))){f=!1;break}}else if(m!==_&&!a(m,_,i,o,l)){f=!1;break}}return l.delete(e),l.delete(t),f}},18351:(e,t,i)=>{var n=i(62705),r=i(11149),s=i(77813),o=i(67114),a=i(68776),l=i(21814),c=n?n.prototype:void 0,d=c?c.valueOf:void 0;e.exports=function(e,t,i,n,c,h,u){switch(i){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!h(new r(e),new r(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return s(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var g=a;case"[object Set]":var f=1&n;if(g||(g=l),e.size!=t.size&&!f)return!1;var p=u.get(e);if(p)return p==t;n|=2,u.set(e,t);var m=o(g(e),g(t),n,c,h,u);return u.delete(e),m;case"[object Symbol]":if(d)return d.call(e)==d.call(t)}return!1}},16096:(e,t,i)=>{var n=i(58234),r=Object.prototype.hasOwnProperty;e.exports=function(e,t,i,s,o,a){var l=1&i,c=n(e),d=c.length;if(d!=n(t).length&&!l)return!1;for(var h=d;h--;){var u=c[h];if(!(l?u in t:r.call(t,u)))return!1}var g=a.get(e);if(g&&a.get(t))return g==t;var f=!0;a.set(e,t),a.set(t,e);for(var p=l;++h<d;){var m=e[u=c[h]],_=t[u];if(s)var b=l?s(_,m,u,t,e,a):s(m,_,u,e,t,a);if(!(void 0===b?m===_||o(m,_,i,s,a):b)){f=!1;break}p||(p="constructor"==u)}if(f&&!p){var v=e.constructor,y=t.constructor;v==y||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof y&&y instanceof y||(f=!1)}return a.delete(e),a.delete(t),f}},99021:(e,t,i)=>{var n=i(85564),r=i(45357),s=i(30061);e.exports=function(e){return s(r(e,void 0,n),e+"")}},31957:(e,t,i)=>{var n="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g;e.exports=n},58234:(e,t,i)=>{var n=i(68866),r=i(99551),s=i(3674);e.exports=function(e){return n(e,s,r)}},46904:(e,t,i)=>{var n=i(68866),r=i(51442),s=i(81704);e.exports=function(e){return n(e,s,r)}},45050:(e,t,i)=>{var n=i(37019);e.exports=function(e,t){var i=e.__data__;return n(t)?i["string"==typeof t?"string":"hash"]:i.map}},1499:(e,t,i)=>{var n=i(89162),r=i(3674);e.exports=function(e){for(var t=r(e),i=t.length;i--;){var s=t[i],o=e[s];t[i]=[s,o,n(o)]}return t}},10852:(e,t,i)=>{var n=i(28458),r=i(47801);e.exports=function(e,t){var i=r(e,t);return n(i)?i:void 0}},85924:(e,t,i)=>{var n=i(5569)(Object.getPrototypeOf,Object);e.exports=n},89607:(e,t,i)=>{var n=i(62705),r=Object.prototype,s=r.hasOwnProperty,o=r.toString,a=n?n.toStringTag:void 0;e.exports=function(e){var t=s.call(e,a),i=e[a];try{e[a]=void 0;var n=!0}catch(e){}var r=o.call(e);return n&&(t?e[a]=i:delete e[a]),r}},99551:(e,t,i)=>{var n=i(34963),r=i(70479),s=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,a=o?function(e){return null==e?[]:(e=Object(e),n(o(e),(function(t){return s.call(e,t)})))}:r;e.exports=a},51442:(e,t,i)=>{var n=i(62488),r=i(85924),s=i(99551),o=i(70479),a=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)n(t,s(e)),e=r(e);return t}:o;e.exports=a},64160:(e,t,i)=>{var n=i(18552),r=i(57071),s=i(53818),o=i(58525),a=i(70577),l=i(44239),c=i(80346),d="[object Map]",h="[object Promise]",u="[object Set]",g="[object WeakMap]",f="[object DataView]",p=c(n),m=c(r),_=c(s),b=c(o),v=c(a),y=l;(n&&y(new n(new ArrayBuffer(1)))!=f||r&&y(new r)!=d||s&&y(s.resolve())!=h||o&&y(new o)!=u||a&&y(new a)!=g)&&(y=function(e){var t=l(e),i="[object Object]"==t?e.constructor:void 0,n=i?c(i):"";if(n)switch(n){case p:return f;case m:return d;case _:return h;case b:return u;case v:return g}return t}),e.exports=y},47801:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},222:(e,t,i)=>{var n=i(71811),r=i(35694),s=i(1469),o=i(65776),a=i(41780),l=i(40327);e.exports=function(e,t,i){for(var c=-1,d=(t=n(t,e)).length,h=!1;++c<d;){var u=l(t[c]);if(!(h=null!=e&&i(e,u)))break;e=e[u]}return h||++c!=d?h:!!(d=null==e?0:e.length)&&a(d)&&o(u,d)&&(s(e)||r(e))}},62689:e=>{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},51789:(e,t,i)=>{var n=i(94536);e.exports=function(){this.__data__=n?n(null):{},this.size=0}},80401:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},57667:(e,t,i)=>{var n=i(94536),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(n){var i=t[e];return"__lodash_hash_undefined__"===i?void 0:i}return r.call(t,e)?t[e]:void 0}},21327:(e,t,i)=>{var n=i(94536),r=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return n?void 0!==t[e]:r.call(t,e)}},81866:(e,t,i)=>{var n=i(94536);e.exports=function(e,t){var i=this.__data__;return this.size+=this.has(e)?0:1,i[e]=n&&void 0===t?"__lodash_hash_undefined__":t,this}},43824:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var i=e.length,n=new e.constructor(i);return i&&"string"==typeof e[0]&&t.call(e,"index")&&(n.index=e.index,n.input=e.input),n}},29148:(e,t,i)=>{var n=i(74318),r=i(57157),s=i(93147),o=i(40419),a=i(77133);e.exports=function(e,t,i){var l=e.constructor;switch(t){case"[object ArrayBuffer]":return n(e);case"[object Boolean]":case"[object Date]":return new l(+e);case"[object DataView]":return r(e,i);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return a(e,i);case"[object Map]":return new l;case"[object Number]":case"[object String]":return new l(e);case"[object RegExp]":return s(e);case"[object Set]":return new l;case"[object Symbol]":return o(e)}}},38517:(e,t,i)=>{var n=i(3118),r=i(85924),s=i(25726);e.exports=function(e){return"function"!=typeof e.constructor||s(e)?{}:n(r(e))}},37285:(e,t,i)=>{var n=i(62705),r=i(35694),s=i(1469),o=n?n.isConcatSpreadable:void 0;e.exports=function(e){return s(e)||r(e)||!!(o&&e&&e[o])}},65776:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,i){var n=typeof e;return!!(i=null==i?9007199254740991:i)&&("number"==n||"symbol"!=n&&t.test(e))&&e>-1&&e%1==0&&e<i}},16612:(e,t,i)=>{var n=i(77813),r=i(98612),s=i(65776),o=i(13218);e.exports=function(e,t,i){if(!o(i))return!1;var a=typeof t;return!!("number"==a?r(i)&&s(t,i.length):"string"==a&&t in i)&&n(i[t],e)}},15403:(e,t,i)=>{var n=i(1469),r=i(33448),s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;e.exports=function(e,t){if(n(e))return!1;var i=typeof e;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=e&&!r(e))||o.test(e)||!s.test(e)||null!=t&&e in Object(t)}},37019:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15346:(e,t,i)=>{var n,r=i(14429),s=(n=/[^.]+$/.exec(r&&r.keys&&r.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"";e.exports=function(e){return!!s&&s in e}},25726:e=>{var t=Object.prototype;e.exports=function(e){var i=e&&e.constructor;return e===("function"==typeof i&&i.prototype||t)}},89162:(e,t,i)=>{var n=i(13218);e.exports=function(e){return e==e&&!n(e)}},27040:e=>{e.exports=function(){this.__data__=[],this.size=0}},14125:(e,t,i)=>{var n=i(18470),r=Array.prototype.splice;e.exports=function(e){var t=this.__data__,i=n(t,e);return!(i<0||(i==t.length-1?t.pop():r.call(t,i,1),--this.size,0))}},82117:(e,t,i)=>{var n=i(18470);e.exports=function(e){var t=this.__data__,i=n(t,e);return i<0?void 0:t[i][1]}},67518:(e,t,i)=>{var n=i(18470);e.exports=function(e){return n(this.__data__,e)>-1}},54705:(e,t,i)=>{var n=i(18470);e.exports=function(e,t){var i=this.__data__,r=n(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this}},24785:(e,t,i)=>{var n=i(1989),r=i(38407),s=i(57071);e.exports=function(){this.size=0,this.__data__={hash:new n,map:new(s||r),string:new n}}},11285:(e,t,i)=>{var n=i(45050);e.exports=function(e){var t=n(this,e).delete(e);return this.size-=t?1:0,t}},96e3:(e,t,i)=>{var n=i(45050);e.exports=function(e){return n(this,e).get(e)}},49916:(e,t,i)=>{var n=i(45050);e.exports=function(e){return n(this,e).has(e)}},95265:(e,t,i)=>{var n=i(45050);e.exports=function(e,t){var i=n(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this}},68776:e=>{e.exports=function(e){var t=-1,i=Array(e.size);return e.forEach((function(e,n){i[++t]=[n,e]})),i}},42634:e=>{e.exports=function(e,t){return function(i){return null!=i&&i[e]===t&&(void 0!==t||e in Object(i))}}},24523:(e,t,i)=>{var n=i(88306);e.exports=function(e){var t=n(e,(function(e){return 500===i.size&&i.clear(),e})),i=t.cache;return t}},94536:(e,t,i)=>{var n=i(10852)(Object,"create");e.exports=n},86916:(e,t,i)=>{var n=i(5569)(Object.keys,Object);e.exports=n},33498:e=>{e.exports=function(e){var t=[];if(null!=e)for(var i in Object(e))t.push(i);return t}},31167:(e,t,i)=>{e=i.nmd(e);var n=i(31957),r=t&&!t.nodeType&&t,s=r&&e&&!e.nodeType&&e,o=s&&s.exports===r&&n.process,a=function(){try{return s&&s.require&&s.require("util").types||o&&o.binding&&o.binding("util")}catch(e){}}();e.exports=a},2333:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},5569:e=>{e.exports=function(e,t){return function(i){return e(t(i))}}},45357:(e,t,i)=>{var n=i(96874),r=Math.max;e.exports=function(e,t,i){return t=r(void 0===t?e.length-1:t,0),function(){for(var s=arguments,o=-1,a=r(s.length-t,0),l=Array(a);++o<a;)l[o]=s[t+o];o=-1;for(var c=Array(t+1);++o<t;)c[o]=s[o];return c[t]=i(l),n(e,this,c)}}},55639:(e,t,i)=>{var n=i(31957),r="object"==typeof self&&self&&self.Object===Object&&self,s=n||r||Function("return this")();e.exports=s},36390:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},90619:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},72385:e=>{e.exports=function(e){return this.__data__.has(e)}},21814:e=>{e.exports=function(e){var t=-1,i=Array(e.size);return e.forEach((function(e){i[++t]=e})),i}},30061:(e,t,i)=>{var n=i(56560),r=i(21275)(n);e.exports=r},21275:e=>{var t=Date.now;e.exports=function(e){var i=0,n=0;return function(){var r=t(),s=16-(r-n);if(n=r,s>0){if(++i>=800)return arguments[0]}else i=0;return e.apply(void 0,arguments)}}},37465:(e,t,i)=>{var n=i(38407);e.exports=function(){this.__data__=new n,this.size=0}},63779:e=>{e.exports=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i}},67599:e=>{e.exports=function(e){return this.__data__.get(e)}},44758:e=>{e.exports=function(e){return this.__data__.has(e)}},34309:(e,t,i)=>{var n=i(38407),r=i(57071),s=i(83369);e.exports=function(e,t){var i=this.__data__;if(i instanceof n){var o=i.__data__;if(!r||o.length<199)return o.push([e,t]),this.size=++i.size,this;i=this.__data__=new s(o)}return i.set(e,t),this.size=i.size,this}},42351:e=>{e.exports=function(e,t,i){for(var n=i-1,r=e.length;++n<r;)if(e[n]===t)return n;return-1}},88016:(e,t,i)=>{var n=i(48983),r=i(62689),s=i(21903);e.exports=function(e){return r(e)?s(e):n(e)}},55514:(e,t,i)=>{var n=i(24523),r=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,o=n((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(r,(function(e,i,n,r){t.push(n?r.replace(s,"$1"):i||e)})),t}));e.exports=o},40327:(e,t,i)=>{var n=i(33448);e.exports=function(e){if("string"==typeof e||n(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},80346:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},21903:e=>{var t="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",i="\\ud83c[\\udffb-\\udfff]",n="[^\\ud800-\\udfff]",r="(?:\\ud83c[\\udde6-\\uddff]){2}",s="[\\ud800-\\udbff][\\udc00-\\udfff]",o="(?:"+t+"|"+i+")?",a="[\\ufe0e\\ufe0f]?",l=a+o+"(?:\\u200d(?:"+[n,r,s].join("|")+")"+a+o+")*",c="(?:"+[n+t+"?",t,r,s,"[\\ud800-\\udfff]"].join("|")+")",d=RegExp(i+"(?="+i+")|"+c+l,"g");e.exports=function(e){for(var t=d.lastIndex=0;d.test(e);)++t;return t}},66678:(e,t,i)=>{var n=i(85990);e.exports=function(e){return n(e,4)}},50361:(e,t,i)=>{var n=i(85990);e.exports=function(e){return n(e,5)}},75703:e=>{e.exports=function(e){return function(){return e}}},91747:(e,t,i)=>{var n=i(18460),r=i(77813),s=i(16612),o=i(81704),a=Object.prototype,l=a.hasOwnProperty,c=n((function(e,t){e=Object(e);var i=-1,n=t.length,c=n>2?t[2]:void 0;for(c&&s(t[0],t[1],c)&&(n=1);++i<n;)for(var d=t[i],h=o(d),u=-1,g=h.length;++u<g;){var f=h[u],p=e[f];(void 0===p||r(p,a[f])&&!l.call(e,f))&&(e[f]=d[f])}return e}));e.exports=c},66073:(e,t,i)=>{e.exports=i(84486)},77813:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},63105:(e,t,i)=>{var n=i(34963),r=i(80760),s=i(67206),o=i(1469);e.exports=function(e,t){return(o(e)?n:r)(e,s(t,3))}},13311:(e,t,i)=>{var n=i(67740)(i(30998));e.exports=n},30998:(e,t,i)=>{var n=i(41848),r=i(67206),s=i(40554),o=Math.max;e.exports=function(e,t,i){var a=null==e?0:e.length;if(!a)return-1;var l=null==i?0:s(i);return l<0&&(l=o(a+l,0)),n(e,r(t,3),l)}},85564:(e,t,i)=>{var n=i(21078);e.exports=function(e){return null!=e&&e.length?n(e,1):[]}},84486:(e,t,i)=>{var n=i(77412),r=i(89881),s=i(54290),o=i(1469);e.exports=function(e,t){return(o(e)?n:r)(e,s(t))}},62620:(e,t,i)=>{var n=i(28483),r=i(54290),s=i(81704);e.exports=function(e,t){return null==e?e:n(e,r(t),s)}},27361:(e,t,i)=>{var n=i(97786);e.exports=function(e,t,i){var r=null==e?void 0:n(e,t);return void 0===r?i:r}},18721:(e,t,i)=>{var n=i(78565),r=i(222);e.exports=function(e,t){return null!=e&&r(e,t,n)}},79095:(e,t,i)=>{var n=i(13),r=i(222);e.exports=function(e,t){return null!=e&&r(e,t,n)}},6557:e=>{e.exports=function(e){return e}},35694:(e,t,i)=>{var n=i(9454),r=i(37005),s=Object.prototype,o=s.hasOwnProperty,a=s.propertyIsEnumerable,l=n(function(){return arguments}())?n:function(e){return r(e)&&o.call(e,"callee")&&!a.call(e,"callee")};e.exports=l},1469:e=>{var t=Array.isArray;e.exports=t},98612:(e,t,i)=>{var n=i(23560),r=i(41780);e.exports=function(e){return null!=e&&r(e.length)&&!n(e)}},29246:(e,t,i)=>{var n=i(98612),r=i(37005);e.exports=function(e){return r(e)&&n(e)}},44144:(e,t,i)=>{e=i.nmd(e);var n=i(55639),r=i(95062),s=t&&!t.nodeType&&t,o=s&&e&&!e.nodeType&&e,a=o&&o.exports===s?n.Buffer:void 0,l=(a?a.isBuffer:void 0)||r;e.exports=l},41609:(e,t,i)=>{var n=i(280),r=i(64160),s=i(35694),o=i(1469),a=i(98612),l=i(44144),c=i(25726),d=i(36719),h=Object.prototype.hasOwnProperty;e.exports=function(e){if(null==e)return!0;if(a(e)&&(o(e)||"string"==typeof e||"function"==typeof e.splice||l(e)||d(e)||s(e)))return!e.length;var t=r(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if(c(e))return!n(e).length;for(var i in e)if(h.call(e,i))return!1;return!0}},23560:(e,t,i)=>{var n=i(44239),r=i(13218);e.exports=function(e){if(!r(e))return!1;var t=n(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},41780:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},56688:(e,t,i)=>{var n=i(25588),r=i(7518),s=i(31167),o=s&&s.isMap,a=o?r(o):n;e.exports=a},13218:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},37005:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},68630:(e,t,i)=>{var n=i(44239),r=i(85924),s=i(37005),o=Function.prototype,a=Object.prototype,l=o.toString,c=a.hasOwnProperty,d=l.call(Object);e.exports=function(e){if(!s(e)||"[object Object]"!=n(e))return!1;var t=r(e);if(null===t)return!0;var i=c.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&l.call(i)==d}},72928:(e,t,i)=>{var n=i(29221),r=i(7518),s=i(31167),o=s&&s.isSet,a=o?r(o):n;e.exports=a},47037:(e,t,i)=>{var n=i(44239),r=i(1469),s=i(37005);e.exports=function(e){return"string"==typeof e||!r(e)&&s(e)&&"[object String]"==n(e)}},33448:(e,t,i)=>{var n=i(44239),r=i(37005);e.exports=function(e){return"symbol"==typeof e||r(e)&&"[object Symbol]"==n(e)}},36719:(e,t,i)=>{var n=i(38749),r=i(7518),s=i(31167),o=s&&s.isTypedArray,a=o?r(o):n;e.exports=a},52353:e=>{e.exports=function(e){return void 0===e}},3674:(e,t,i)=>{var n=i(14636),r=i(280),s=i(98612);e.exports=function(e){return s(e)?n(e):r(e)}},81704:(e,t,i)=>{var n=i(14636),r=i(10313),s=i(98612);e.exports=function(e){return s(e)?n(e,!0):r(e)}},10928:e=>{e.exports=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},35161:(e,t,i)=>{var n=i(29932),r=i(67206),s=i(69199),o=i(1469);e.exports=function(e,t){return(o(e)?n:s)(e,r(t,3))}},66604:(e,t,i)=>{var n=i(89465),r=i(47816),s=i(67206);e.exports=function(e,t){var i={};return t=s(t,3),r(e,(function(e,r,s){n(i,r,t(e,r,s))})),i}},6162:(e,t,i)=>{var n=i(56029),r=i(53325),s=i(6557);e.exports=function(e){return e&&e.length?n(e,s,r):void 0}},88306:(e,t,i)=>{var n=i(83369);function r(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var i=function(){var n=arguments,r=t?t.apply(this,n):n[0],s=i.cache;if(s.has(r))return s.get(r);var o=e.apply(this,n);return i.cache=s.set(r,o)||s,o};return i.cache=new(r.Cache||n),i}r.Cache=n,e.exports=r},82492:(e,t,i)=>{var n=i(42980),r=i(21463)((function(e,t,i){n(e,t,i)}));e.exports=r},53632:(e,t,i)=>{var n=i(56029),r=i(70433),s=i(6557);e.exports=function(e){return e&&e.length?n(e,s,r):void 0}},22762:(e,t,i)=>{var n=i(56029),r=i(67206),s=i(70433);e.exports=function(e,t){return e&&e.length?n(e,r(t,2),s):void 0}},50308:e=>{e.exports=function(){}},7771:(e,t,i)=>{var n=i(55639);e.exports=function(){return n.Date.now()}},78718:(e,t,i)=>{var n=i(25970),r=i(99021)((function(e,t){return null==e?{}:n(e,t)}));e.exports=r},39601:(e,t,i)=>{var n=i(40371),r=i(79152),s=i(15403),o=i(40327);e.exports=function(e){return s(e)?n(o(e)):r(e)}},96026:(e,t,i)=>{var n=i(47445)();e.exports=n},54061:(e,t,i)=>{var n=i(62663),r=i(89881),s=i(67206),o=i(10107),a=i(1469);e.exports=function(e,t,i){var l=a(e)?n:o,c=arguments.length<3;return l(e,s(t,4),i,c,r)}},84238:(e,t,i)=>{var n=i(280),r=i(64160),s=i(98612),o=i(47037),a=i(88016);e.exports=function(e){if(null==e)return 0;if(s(e))return o(e)?a(e):e.length;var t=r(e);return"[object Map]"==t||"[object Set]"==t?e.size:n(e).length}},89734:(e,t,i)=>{var n=i(21078),r=i(82689),s=i(18460),o=i(16612),a=s((function(e,t){if(null==e)return[];var i=t.length;return i>1&&o(e,t[0],t[1])?t=[]:i>2&&o(t[0],t[1],t[2])&&(t=[t[0]]),r(e,n(t,1),[])}));e.exports=a},70479:e=>{e.exports=function(){return[]}},95062:e=>{e.exports=function(){return!1}},18601:(e,t,i)=>{var n=i(14841);e.exports=function(e){return e?Infinity===(e=n(e))||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},40554:(e,t,i)=>{var n=i(18601);e.exports=function(e){var t=n(e),i=t%1;return t==t?i?t-i:t:0}},14841:(e,t,i)=>{var n=i(13218),r=i(33448),s=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(r(e))return NaN;if(n(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=n(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(s,"");var i=a.test(e);return i||l.test(e)?c(e.slice(2),i?2:8):o.test(e)?NaN:+e}},59881:(e,t,i)=>{var n=i(98363),r=i(81704);e.exports=function(e){return n(e,r(e))}},79833:(e,t,i)=>{var n=i(80531);e.exports=function(e){return null==e?"":n(e)}},68718:(e,t,i)=>{var n=i(77412),r=i(3118),s=i(47816),o=i(67206),a=i(85924),l=i(1469),c=i(44144),d=i(23560),h=i(13218),u=i(36719);e.exports=function(e,t,i){var g=l(e),f=g||c(e)||u(e);if(t=o(t,4),null==i){var p=e&&e.constructor;i=f?g?new p:[]:h(e)&&d(p)?r(a(e)):{}}return(f?n:s)(e,(function(e,n,r){return t(i,e,n,r)})),i}},93386:(e,t,i)=>{var n=i(21078),r=i(18460),s=i(45652),o=i(29246),a=r((function(e){return s(n(e,1,o,!0))}));e.exports=a},73955:(e,t,i)=>{var n=i(79833),r=0;e.exports=function(e){var t=++r;return n(e)+t}},52628:(e,t,i)=>{var n=i(47415),r=i(3674);e.exports=function(e){return null==e?[]:n(e,r(e))}},7287:(e,t,i)=>{var n=i(34865),r=i(1757);e.exports=function(e,t){return r(e||[],t||[],n)}},21140:function(e,t,i){var n;"undefined"!=typeof self&&self,n=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s="./src/mermaid.js")}({"./node_modules/node-libs-browser/mock/empty.js":function(e,t){},"./node_modules/path-browserify/index.js":function(e,t,i){(function(e){function i(e,t){for(var i=0,n=e.length-1;n>=0;n--){var r=e[n];"."===r?e.splice(n,1):".."===r?(e.splice(n,1),i++):i&&(e.splice(n,1),i--)}if(t)for(;i--;i)e.unshift("..");return e}function n(e,t){if(e.filter)return e.filter(t);for(var i=[],n=0;n<e.length;n++)t(e[n],n,e)&&i.push(e[n]);return i}t.resolve=function(){for(var t="",r=!1,s=arguments.length-1;s>=-1&&!r;s--){var o=s>=0?arguments[s]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,r="/"===o.charAt(0))}return(r?"/":"")+(t=i(n(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var s=t.isAbsolute(e),o="/"===r(e,-1);return(e=i(n(e.split("/"),(function(e){return!!e})),!s).join("/"))||s||(e="."),e&&o&&(e+="/"),(s?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(n(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,i){function n(e){for(var t=0;t<e.length&&""===e[t];t++);for(var i=e.length-1;i>=0&&""===e[i];i--);return t>i?[]:e.slice(t,i-t+1)}e=t.resolve(e).substr(1),i=t.resolve(i).substr(1);for(var r=n(e.split("/")),s=n(i.split("/")),o=Math.min(r.length,s.length),a=o,l=0;l<o;l++)if(r[l]!==s[l]){a=l;break}var c=[];for(l=a;l<r.length;l++)c.push("..");return(c=c.concat(s.slice(a))).join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),i=47===t,n=-1,r=!0,s=e.length-1;s>=1;--s)if(47===(t=e.charCodeAt(s))){if(!r){n=s;break}}else r=!1;return-1===n?i?"/":".":i&&1===n?"/":e.slice(0,n)},t.basename=function(e,t){var i=function(e){"string"!=typeof e&&(e+="");var t,i=0,n=-1,r=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!r){i=t+1;break}}else-1===n&&(r=!1,n=t+1);return-1===n?"":e.slice(i,n)}(e);return t&&i.substr(-1*t.length)===t&&(i=i.substr(0,i.length-t.length)),i},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,i=0,n=-1,r=!0,s=0,o=e.length-1;o>=0;--o){var a=e.charCodeAt(o);if(47!==a)-1===n&&(r=!1,n=o+1),46===a?-1===t?t=o:1!==s&&(s=1):-1!==t&&(s=-1);else if(!r){i=o+1;break}}return-1===t||-1===n||0===s||1===s&&t===n-1&&t===i+1?"":e.slice(t,n)};var r=function(e,t,i){return e.substr(t,i)}}).call(this,i("./node_modules/process/browser.js"))},"./node_modules/process/browser.js":function(e,t){var i,n,r=e.exports={};function s(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function a(e){if(i===setTimeout)return setTimeout(e,0);if((i===s||!i)&&setTimeout)return i=setTimeout,setTimeout(e,0);try{return i(e,0)}catch(t){try{return i.call(null,e,0)}catch(t){return i.call(this,e,0)}}}!function(){try{i="function"==typeof setTimeout?setTimeout:s}catch(e){i=s}try{n="function"==typeof clearTimeout?clearTimeout:o}catch(e){n=o}}();var l,c=[],d=!1,h=-1;function u(){d&&l&&(d=!1,l.length?c=l.concat(c):h=-1,c.length&&g())}function g(){if(!d){var e=a(u);d=!0;for(var t=c.length;t;){for(l=c,c=[];++h<t;)l&&l[h].run();h=-1,t=c.length}l=null,d=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===o||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function f(e,t){this.fun=e,this.array=t}function p(){}r.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var i=1;i<arguments.length;i++)t[i-1]=arguments[i];c.push(new f(e,t)),1!==c.length||d||a(g)},f.prototype.run=function(){this.fun.apply(null,this.array)},r.title="browser",r.browser=!0,r.env={},r.argv=[],r.version="",r.versions={},r.on=p,r.addListener=p,r.once=p,r.off=p,r.removeListener=p,r.removeAllListeners=p,r.emit=p,r.prependListener=p,r.prependOnceListener=p,r.listeners=function(e){return[]},r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")},r.umask=function(){return 0}},"./node_modules/webpack/buildin/module.js":function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},"./package.json":function(e){e.exports=JSON.parse('{"name":"mermaid","version":"8.9.3","description":"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.","main":"dist/mermaid.core.js","keywords":["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph"],"scripts":{"build:development":"webpack --progress --colors","build:production":"yarn build:development -p --config webpack.config.prod.babel.js","build":"yarn build:development && yarn build:production","postbuild":"documentation build src/mermaidAPI.js src/config.js src/defaultConfig.js --shallow -f md --markdown-toc false > docs/Setup.md","build:watch":"yarn build --watch","minify":"minify ./dist/mermaid.js > ./dist/mermaid.min.js","release":"yarn build","lint":"eslint src","e2e:depr":"yarn lint && jest e2e --config e2e/jest.config.js","cypress":"percy exec -- cypress run","e2e":"start-server-and-test dev http://localhost:9000/ cypress","e2e-upd":"yarn lint && jest e2e -u --config e2e/jest.config.js","dev":"webpack-dev-server --config webpack.config.e2e.js","test":"yarn lint && jest src/.*","test:watch":"jest --watch src","prepublishOnly":"yarn build && yarn test","prepare":"yarn build"},"repository":{"type":"git","url":"https://github.com/knsv/mermaid"},"author":"Knut Sveidqvist","license":"MIT","standard":{"ignore":["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],"globals":["page"]},"dependencies":{"@braintree/sanitize-url":"^3.1.0","d3":"^5.7.0","dagre":"^0.8.4","dagre-d3":"^0.6.4","entity-decode":"^2.0.2","graphlib":"^2.1.7","he":"^1.2.0","khroma":"^1.1.0","minify":"^4.1.1","moment-mini":"^2.22.1","stylis":"^3.5.2"},"devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.8.4","@babel/register":"^7.0.0","@percy/cypress":"*","babel-core":"7.0.0-bridge.0","babel-eslint":"^10.1.0","babel-jest":"^24.9.0","babel-loader":"^8.0.4","coveralls":"^3.0.2","css-loader":"^2.0.1","css-to-string-loader":"^0.1.3","cypress":"4.0.1","documentation":"^12.0.1","eslint":"^6.3.0","eslint-config-prettier":"^6.3.0","eslint-plugin-prettier":"^3.1.0","husky":"^1.2.1","identity-obj-proxy":"^3.0.0","jest":"^24.9.0","jison":"^0.4.18","moment":"^2.23.0","node-sass":"^5.0.0","prettier":"^1.18.2","puppeteer":"^1.17.0","sass-loader":"^7.1.0","start-server-and-test":"^1.10.6","terser-webpack-plugin":"^2.2.2","webpack":"^4.41.2","webpack-bundle-analyzer":"^3.7.0","webpack-cli":"^3.1.2","webpack-dev-server":"^3.4.1","webpack-node-externals":"^1.7.2","yarn-upgrade-all":"^0.5.0"},"files":["dist"],"yarn-upgrade-all":{"ignore":["babel-core"]},"sideEffects":["**/*.css","**/*.scss"],"husky":{"hooks":{"pre-push":"yarn test"}}}')},"./src/config.js":function(e,t,i){"use strict";i.r(t),i.d(t,"defaultConfig",(function(){return c})),i.d(t,"updateCurrentConfig",(function(){return g})),i.d(t,"setSiteConfig",(function(){return f})),i.d(t,"saveConfigFromInitilize",(function(){return p})),i.d(t,"updateSiteConfig",(function(){return m})),i.d(t,"getSiteConfig",(function(){return _})),i.d(t,"setConfig",(function(){return b})),i.d(t,"getConfig",(function(){return v})),i.d(t,"sanitize",(function(){return y})),i.d(t,"addDirective",(function(){return w})),i.d(t,"reset",(function(){return C}));var n=i("./src/utils.js"),r=i("./src/logger.js"),s=i("./src/themes/index.js"),o=i("./src/defaultConfig.js");function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var l,c=Object.freeze(o.default),d=Object(n.assignWithDepth)({},c),h=[],u=Object(n.assignWithDepth)({},c),g=function(e,t){for(var i=Object(n.assignWithDepth)({},e),r={},o=0;o<t.length;o++){var a=t[o];y(a),r=Object(n.assignWithDepth)(r,a)}if(i=Object(n.assignWithDepth)(i,r),r.theme){var c=Object(n.assignWithDepth)({},l),d=Object(n.assignWithDepth)(c.themeVariables||{},r.themeVariables);i.themeVariables=s.default[i.theme].getThemeVariables(d)}return u=i,i},f=function(e){return d=Object(n.assignWithDepth)({},c),d=Object(n.assignWithDepth)(d,e),e.theme&&(d.themeVariables=s.default[e.theme].getThemeVariables(e.themeVariables)),u=g(d,h),d},p=function(e){l=Object(n.assignWithDepth)({},e)},m=function(e){return d=Object(n.assignWithDepth)(d,e),g(d,h),d},_=function(){return Object(n.assignWithDepth)({},d)},b=function(e){return Object(n.assignWithDepth)(u,e),v()},v=function(){return Object(n.assignWithDepth)({},u)},y=function e(t){Object.keys(d.secure).forEach((function(e){void 0!==t[d.secure[e]]&&(r.log.debug("Denied attempt to modify a secure key ".concat(d.secure[e]),t[d.secure[e]]),delete t[d.secure[e]])})),Object.keys(t).forEach((function(e){0===e.indexOf("__")&&delete t[e]})),Object.keys(t).forEach((function(i){"string"==typeof t[i]&&(t[i].indexOf("<")>-1||t[i].indexOf(">")>-1||t[i].indexOf("url(data:")>-1)&&delete t[i],"object"===a(t[i])&&e(t[i])}))},w=function(e){e.fontFamily&&(e.themeVariables&&e.themeVariables.fontFamily||(e.themeVariables={fontFamily:e.fontFamily})),h.push(e),g(d,h)},C=function(){g(d,h=[])}},"./src/dagre-wrapper/clusters.js":function(e,t,i){"use strict";i.r(t),i.d(t,"insertCluster",(function(){return d})),i.d(t,"getClusterTitleWidth",(function(){return h})),i.d(t,"clear",(function(){return u})),i.d(t,"positionCluster",(function(){return g}));var n=i("./src/dagre-wrapper/intersect/intersect-rect.js"),r=i("./src/logger.js"),s=i("./src/dagre-wrapper/createLabel.js"),o=i("d3"),a=i("./src/config.js"),l={rect:function(e,t){r.log.trace("Creating subgraph rect for ",t.id,t);var i=e.insert("g").attr("class","cluster"+(t.class?" "+t.class:"")).attr("id",t.id),l=i.insert("rect",":first-child"),c=i.insert("g").attr("class","cluster-label"),d=c.node().appendChild(Object(s.default)(t.labelText,t.labelStyle,void 0,!0)),h=d.getBBox();if(Object(a.getConfig)().flowchart.htmlLabels){var u=d.children[0],g=Object(o.select)(d);h=u.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}var f=0*t.padding,p=f/2;r.log.trace("Data ",t,JSON.stringify(t)),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-p).attr("y",t.y-t.height/2-p).attr("width",t.width+f).attr("height",t.height+f),c.attr("transform","translate("+(t.x-h.width/2)+", "+(t.y-t.height/2+t.padding/3)+")");var m=l.node().getBBox();return t.width=m.width,t.height=m.height,t.intersect=function(e){return Object(n.default)(t,e)},i},roundedWithTitle:function(e,t){var i=e.insert("g").attr("class",t.classes).attr("id",t.id),r=i.insert("rect",":first-child"),l=i.insert("g").attr("class","cluster-label"),c=i.append("rect"),d=l.node().appendChild(Object(s.default)(t.labelText,t.labelStyle,void 0,!0)),h=d.getBBox();if(Object(a.getConfig)().flowchart.htmlLabels){var u=d.children[0],g=Object(o.select)(d);h=u.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}h=d.getBBox();var f=0*t.padding,p=f/2;r.attr("class","outer").attr("x",t.x-t.width/2-p).attr("y",t.y-t.height/2-p).attr("width",t.width+f).attr("height",t.height+f),c.attr("class","inner").attr("x",t.x-t.width/2-p).attr("y",t.y-t.height/2-p+h.height-1).attr("width",t.width+f).attr("height",t.height+f-h.height-3),l.attr("transform","translate("+(t.x-h.width/2)+", "+(t.y-t.height/2-t.padding/3+(Object(a.getConfig)().flowchart.htmlLabels?5:3))+")");var m=r.node().getBBox();return t.width=m.width,t.height=m.height,t.intersect=function(e){return Object(n.default)(t,e)},i},noteGroup:function(e,t){var i=e.insert("g").attr("class","note-cluster").attr("id",t.id),r=i.insert("rect",":first-child"),s=0*t.padding,o=s/2;r.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-o).attr("y",t.y-t.height/2-o).attr("width",t.width+s).attr("height",t.height+s).attr("fill","none");var a=r.node().getBBox();return t.width=a.width,t.height=a.height,t.intersect=function(e){return Object(n.default)(t,e)},i},divider:function(e,t){var i=e.insert("g").attr("class",t.classes).attr("id",t.id),r=i.insert("rect",":first-child"),s=0*t.padding,o=s/2;r.attr("class","divider").attr("x",t.x-t.width/2-o).attr("y",t.y-t.height/2).attr("width",t.width+s).attr("height",t.height+s);var a=r.node().getBBox();return t.width=a.width,t.height=a.height,t.intersect=function(e){return Object(n.default)(t,e)},i}},c={},d=function(e,t){r.log.trace("Inserting cluster");var i=t.shape||"rect";c[t.id]=l[i](e,t)},h=function(e,t){var i=Object(s.default)(t.labelText,t.labelStyle,void 0,!0);e.node().appendChild(i);var n=i.getBBox().width;return e.node().removeChild(i),n},u=function(){c={}},g=function(e){r.log.info("Position cluster"),c[e.id].attr("transform","translate("+e.x+", "+e.y+")")}},"./src/dagre-wrapper/createLabel.js":function(e,t,i){"use strict";i.r(t);var n=i("d3"),r=i("./src/logger.js"),s=i("./src/config.js");t.default=function(e,t,i,o){var a,l,c,d,h,u,g=e||"";if(Object(s.getConfig)().flowchart.htmlLabels)return g=g.replace(/\\n|\n/g,"<br />"),r.log.info("vertexText"+g),a={isNode:o,label:g.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(e){return"<i class='".concat(e.replace(":"," "),"'></i>")})),labelStyle:t.replace("fill:","color:")},c=Object(n.select)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),d=c.append("xhtml:div"),h=a.label,u=a.isNode?"nodeLabel":"edgeLabel",d.html('<span class="'+u+'" '+(a.labelStyle?'style="'+a.labelStyle+'"':"")+">"+h+"</span>"),(l=a.labelStyle)&&d.attr("style",l),d.style("display","inline-block"),d.style("white-space","nowrap"),d.attr("xmlns","http://www.w3.org/1999/xhtml"),c.node();var f=document.createElementNS("http://www.w3.org/2000/svg","text");f.setAttribute("style",t.replace("color:","fill:"));var p=[];p="string"==typeof g?g.split(/\\n|\n|<br\s*\/?>/gi):Array.isArray(g)?g:[];for(var m=0;m<p.length;m++){var _=document.createElementNS("http://www.w3.org/2000/svg","tspan");_.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),_.setAttribute("dy","1em"),_.setAttribute("x","0"),i?_.setAttribute("class","title-row"):_.setAttribute("class","row"),_.textContent=p[m].trim(),f.appendChild(_)}return f}},"./src/dagre-wrapper/edges.js":function(e,t,i){"use strict";i.r(t),i.d(t,"clear",(function(){return d})),i.d(t,"insertEdgeLabel",(function(){return h})),i.d(t,"positionEdgeLabel",(function(){return u})),i.d(t,"intersection",(function(){return f})),i.d(t,"insertEdge",(function(){return p}));var n=i("./src/logger.js"),r=i("./src/dagre-wrapper/createLabel.js"),s=i("d3"),o=i("./src/config.js"),a=i("./src/utils.js"),l={},c={},d=function(){l={},c={}},h=function(e,t){var i=Object(r.default)(t.label,t.labelStyle),n=e.insert("g").attr("class","edgeLabel"),a=n.insert("g").attr("class","label");a.node().appendChild(i);var d=i.getBBox();if(Object(o.getConfig)().flowchart.htmlLabels){var h=i.children[0],u=Object(s.select)(i);d=h.getBoundingClientRect(),u.attr("width",d.width),u.attr("height",d.height)}if(a.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),l[t.id]=n,t.width=d.width,t.height=d.height,t.startLabelLeft){var g=Object(r.default)(t.startLabelLeft,t.labelStyle),f=e.insert("g").attr("class","edgeTerminals"),p=f.insert("g").attr("class","inner");p.node().appendChild(g);var m=g.getBBox();p.attr("transform","translate("+-m.width/2+", "+-m.height/2+")"),c[t.id]||(c[t.id]={}),c[t.id].startLeft=f}if(t.startLabelRight){var _=Object(r.default)(t.startLabelRight,t.labelStyle),b=e.insert("g").attr("class","edgeTerminals"),v=b.insert("g").attr("class","inner");b.node().appendChild(_),v.node().appendChild(_);var y=_.getBBox();v.attr("transform","translate("+-y.width/2+", "+-y.height/2+")"),c[t.id]||(c[t.id]={}),c[t.id].startRight=b}if(t.endLabelLeft){var w=Object(r.default)(t.endLabelLeft,t.labelStyle),C=e.insert("g").attr("class","edgeTerminals"),S=C.insert("g").attr("class","inner");S.node().appendChild(w);var k=w.getBBox();S.attr("transform","translate("+-k.width/2+", "+-k.height/2+")"),C.node().appendChild(w),c[t.id]||(c[t.id]={}),c[t.id].endLeft=C}if(t.endLabelRight){var x=Object(r.default)(t.endLabelRight,t.labelStyle),L=e.insert("g").attr("class","edgeTerminals"),M=L.insert("g").attr("class","inner");M.node().appendChild(x);var D=x.getBBox();M.attr("transform","translate("+-D.width/2+", "+-D.height/2+")"),L.node().appendChild(x),c[t.id]||(c[t.id]={}),c[t.id].endRight=L}},u=function(e,t){n.log.info("Moving label",e.id,e.label,l[e.id]);var i=t.updatedPath?t.updatedPath:t.originalPath;if(e.label){var r=l[e.id],s=e.x,o=e.y;if(i){var d=a.default.calcLabelPosition(i);n.log.info("Moving label from (",s,",",o,") to (",d.x,",",d.y,")")}r.attr("transform","translate("+s+", "+o+")")}if(e.startLabelLeft){var h=c[e.id].startLeft,u=e.x,g=e.y;if(i){var f=a.default.calcTerminalLabelPosition(0,"start_left",i);u=f.x,g=f.y}h.attr("transform","translate("+u+", "+g+")")}if(e.startLabelRight){var p=c[e.id].startRight,m=e.x,_=e.y;if(i){var b=a.default.calcTerminalLabelPosition(0,"start_right",i);m=b.x,_=b.y}p.attr("transform","translate("+m+", "+_+")")}if(e.endLabelLeft){var v=c[e.id].endLeft,y=e.x,w=e.y;if(i){var C=a.default.calcTerminalLabelPosition(0,"end_left",i);y=C.x,w=C.y}v.attr("transform","translate("+y+", "+w+")")}if(e.endLabelRight){var S=c[e.id].endRight,k=e.x,x=e.y;if(i){var L=a.default.calcTerminalLabelPosition(0,"end_right",i);k=L.x,x=L.y}S.attr("transform","translate("+k+", "+x+")")}},g=function(e,t){var i=e.x,n=e.y,r=Math.abs(t.x-i),s=Math.abs(t.y-n),o=e.width/2,a=e.height/2;return r>=o||s>=a},f=function(e,t,i){n.log.warn("intersection calc o:",t," i:",i,e);var r=e.x,s=e.y,o=Math.abs(r-i.x),a=e.width/2,l=i.x<t.x?a-o:a+o,c=e.height/2,d=r-a,h=r+a,u=s-c,g=s+c;if(t.x===d||t.x===h||t.y===u||t.y===g)return n.log.warn("calc equals on edge"),t;var f=Math.abs(t.y-i.y),p=Math.abs(t.x-i.x);if(Math.abs(s-t.y)*a>Math.abs(r-t.x)*c){var m=i.y<t.y?t.y-c-s:s-c-t.y;l=p*m/f;var _={x:i.x<t.x?i.x+p-l:i.x-l,y:i.y<t.y?i.y+f-m:i.y-m};return n.log.warn("topp/bott calc, Q ".concat(f,", q ").concat(m,", R ").concat(p,", r ").concat(l),_),_}var b=b=f*(l=i.x<t.x?t.x-a-r:r-a-t.x)/p;return n.log.warn("sides calc, Q ".concat(f,", q ").concat(b,", R ").concat(p,", r ").concat(l),{x:i.x<t.x?i.x+p-l:i.x+o-a,y:i.y<t.y?i.y+b:i.y-b}),{x:i.x<t.x?i.x+p-l:i.x+o-a,y:i.y<t.y?i.y+b:i.y-b}},p=function(e,t,i,r,a,l){var c=i.points,d=!1,h=l.node(t.v),u=l.node(t.w);if(u.intersect&&h.intersect&&((c=c.slice(1,i.points.length-1)).unshift(h.intersect(c[0])),n.log.info("Last point",c[c.length-1],u,u.intersect(c[c.length-1])),c.push(u.intersect(c[c.length-1]))),i.toCluster){var p;n.log.trace("edge",i),n.log.trace("to cluster",r[i.toCluster]),c=[];var m=!1;i.points.forEach((function(e){var t=r[i.toCluster].node;if(g(t,e)||m)m||c.push(e);else{n.log.trace("inside",i.toCluster,e,p);var s=f(t,p,e),o=!1;c.forEach((function(e){o=o||e.x===s.x&&e.y===s.y})),c.find((function(e){return e.x===s.x&&e.y===s.y}))?n.log.warn("no intersect",s,c):c.push(s),m=!0}p=e})),d=!0}if(i.fromCluster){n.log.trace("edge",i),n.log.warn("from cluster",r[i.fromCluster]);for(var _,b=[],v=!1,y=c.length-1;y>=0;y--){var w=c[y],C=r[i.fromCluster].node;if(g(C,w)||v)n.log.trace("Outside point",w),v||b.unshift(w);else{n.log.warn("inside",i.fromCluster,w,C);var S=f(C,_,w);b.unshift(S),v=!0}_=w}c=b,d=!0}var k,x=c.filter((function(e){return!Number.isNaN(e.y)}));k=("graph"===a||"flowchart"===a)&&i.curve||s.curveBasis;var L,M=Object(s.line)().x((function(e){return e.x})).y((function(e){return e.y})).curve(k);switch(i.thickness){case"normal":L="edge-thickness-normal";break;case"thick":L="edge-thickness-thick";break;default:L=""}switch(i.pattern){case"solid":L+=" edge-pattern-solid";break;case"dotted":L+=" edge-pattern-dotted";break;case"dashed":L+=" edge-pattern-dashed"}var D=e.append("path").attr("d",M(x)).attr("id",i.id).attr("class"," "+L+(i.classes?" "+i.classes:"")).attr("style",i.style),N="";switch(Object(o.getConfig)().state.arrowMarkerAbsolute&&(N=(N=(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),n.log.info("arrowTypeStart",i.arrowTypeStart),n.log.info("arrowTypeEnd",i.arrowTypeEnd),i.arrowTypeStart){case"arrow_cross":D.attr("marker-start","url("+N+"#"+a+"-crossStart)");break;case"arrow_point":D.attr("marker-start","url("+N+"#"+a+"-pointStart)");break;case"arrow_barb":D.attr("marker-start","url("+N+"#"+a+"-barbStart)");break;case"arrow_circle":D.attr("marker-start","url("+N+"#"+a+"-circleStart)");break;case"aggregation":D.attr("marker-start","url("+N+"#"+a+"-aggregationStart)");break;case"extension":D.attr("marker-start","url("+N+"#"+a+"-extensionStart)");break;case"composition":D.attr("marker-start","url("+N+"#"+a+"-compositionStart)");break;case"dependency":D.attr("marker-start","url("+N+"#"+a+"-dependencyStart)")}switch(i.arrowTypeEnd){case"arrow_cross":D.attr("marker-end","url("+N+"#"+a+"-crossEnd)");break;case"arrow_point":D.attr("marker-end","url("+N+"#"+a+"-pointEnd)");break;case"arrow_barb":D.attr("marker-end","url("+N+"#"+a+"-barbEnd)");break;case"arrow_circle":D.attr("marker-end","url("+N+"#"+a+"-circleEnd)");break;case"aggregation":D.attr("marker-end","url("+N+"#"+a+"-aggregationEnd)");break;case"extension":D.attr("marker-end","url("+N+"#"+a+"-extensionEnd)");break;case"composition":D.attr("marker-end","url("+N+"#"+a+"-compositionEnd)");break;case"dependency":D.attr("marker-end","url("+N+"#"+a+"-dependencyEnd)")}var E={};return d&&(E.updatedPath=c),E.originalPath=i.points,E}},"./src/dagre-wrapper/index.js":function(e,t,i){"use strict";i.r(t),i.d(t,"render",(function(){return p}));var n=i("dagre"),r=i.n(n),s=i("graphlib"),o=i.n(s),a=i("./src/dagre-wrapper/markers.js"),l=i("./src/dagre-wrapper/shapes/util.js"),c=i("./src/dagre-wrapper/mermaid-graphlib.js"),d=i("./src/dagre-wrapper/nodes.js"),h=i("./src/dagre-wrapper/clusters.js"),u=i("./src/dagre-wrapper/edges.js"),g=i("./src/logger.js"),f=function e(t,i,n,s){g.log.info("Graph in recursive render: XXX",o.a.json.write(i),s);var a=i.graph().rankdir;g.log.warn("Dir in recursive render - dir:",a);var f=t.insert("g").attr("class","root");i.nodes()?g.log.info("Recursive render XXX",i.nodes()):g.log.info("No nodes found for",i),i.edges().length>0&&g.log.info("Recursive edges",i.edge(i.edges()[0]));var p=f.insert("g").attr("class","clusters"),m=f.insert("g").attr("class","edgePaths"),_=f.insert("g").attr("class","edgeLabels"),b=f.insert("g").attr("class","nodes");return i.nodes().forEach((function(t){var r=i.node(t);if(void 0!==s){var o=JSON.parse(JSON.stringify(s.clusterData));g.log.info("Setting data for cluster XXX (",t,") ",o,s),i.setNode(s.id,o),i.parent(t)||(g.log.warn("Setting parent",t,s.id),i.setParent(t,s.id,o))}if(g.log.info("(Insert) Node XXX"+t+": "+JSON.stringify(i.node(t))),r&&r.clusterNode){g.log.info("Cluster identified",t,r,i.node(t));var h=e(b,r.graph,n,i.node(t));Object(l.updateNodeBounds)(r,h),Object(d.setNodeElem)(h,r),g.log.warn("Recursive render complete",h,r)}else i.children(t).length>0?(g.log.info("Cluster - the non recursive path XXX",t,r.id,r,i),g.log.info(Object(c.findNonClusterChild)(r.id,i)),c.clusterDb[r.id]={id:Object(c.findNonClusterChild)(r.id,i),node:r}):(g.log.info("Node - the non recursive path",t,r.id,r),Object(d.insertNode)(b,i.node(t),a))})),i.edges().forEach((function(e){var t=i.edge(e.v,e.w,e.name);g.log.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),g.log.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(i.edge(e))),g.log.info("Fix",c.clusterDb,"ids:",e.v,e.w,"Translateing: ",c.clusterDb[e.v],c.clusterDb[e.w]),Object(u.insertEdgeLabel)(_,t)})),i.edges().forEach((function(e){g.log.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e))})),g.log.info("#############################################"),g.log.info("### Layout ###"),g.log.info("#############################################"),g.log.info(i),r.a.layout(i),g.log.info("Graph after layout:",o.a.json.write(i)),Object(c.sortNodesByHierarchy)(i).forEach((function(e){var t=i.node(e);g.log.info("Position "+e+": "+JSON.stringify(i.node(e))),g.log.info("Position "+e+": ("+t.x,","+t.y,") width: ",t.width," height: ",t.height),t&&t.clusterNode?Object(d.positionNode)(t):i.children(e).length>0?(Object(h.insertCluster)(p,t),c.clusterDb[t.id].node=t):Object(d.positionNode)(t)})),i.edges().forEach((function(e){var t=i.edge(e);g.log.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(t),t);var r=Object(u.insertEdge)(m,e,t,c.clusterDb,n,i);Object(u.positionEdgeLabel)(t,r)})),f},p=function(e,t,i,n,r){Object(a.default)(e,i,n,r),Object(d.clear)(),Object(u.clear)(),Object(h.clear)(),Object(c.clear)(),g.log.warn("Graph at first:",o.a.json.write(t)),Object(c.adjustClustersAndEdges)(t),g.log.warn("Graph after:",o.a.json.write(t)),f(e,t,n)}},"./src/dagre-wrapper/intersect/index.js":function(e,t,i){"use strict";i.r(t);var n=i("./src/dagre-wrapper/intersect/intersect-node.js"),r=i.n(n),s=i("./src/dagre-wrapper/intersect/intersect-circle.js"),o=i("./src/dagre-wrapper/intersect/intersect-ellipse.js"),a=i("./src/dagre-wrapper/intersect/intersect-polygon.js"),l=i("./src/dagre-wrapper/intersect/intersect-rect.js");t.default={node:r.a,circle:s.default,ellipse:o.default,polygon:a.default,rect:l.default}},"./src/dagre-wrapper/intersect/intersect-circle.js":function(e,t,i){"use strict";i.r(t);var n=i("./src/dagre-wrapper/intersect/intersect-ellipse.js");t.default=function(e,t,i){return Object(n.default)(e,t,t,i)}},"./src/dagre-wrapper/intersect/intersect-ellipse.js":function(e,t,i){"use strict";i.r(t),t.default=function(e,t,i,n){var r=e.x,s=e.y,o=r-n.x,a=s-n.y,l=Math.sqrt(t*t*a*a+i*i*o*o),c=Math.abs(t*i*o/l);n.x<r&&(c=-c);var d=Math.abs(t*i*a/l);return n.y<s&&(d=-d),{x:r+c,y:s+d}}},"./src/dagre-wrapper/intersect/intersect-line.js":function(e,t,i){"use strict";function n(e,t){return e*t>0}i.r(t),t.default=function(e,t,i,r){var s,o,a,l,c,d,h,u,g,f,p,m,_;if(s=t.y-e.y,a=e.x-t.x,c=t.x*e.y-e.x*t.y,g=s*i.x+a*i.y+c,f=s*r.x+a*r.y+c,!(0!==g&&0!==f&&n(g,f)||(o=r.y-i.y,l=i.x-r.x,d=r.x*i.y-i.x*r.y,h=o*e.x+l*e.y+d,u=o*t.x+l*t.y+d,0!==h&&0!==u&&n(h,u)||0==(p=s*l-o*a))))return m=Math.abs(p/2),{x:(_=a*d-l*c)<0?(_-m)/p:(_+m)/p,y:(_=o*c-s*d)<0?(_-m)/p:(_+m)/p}}},"./src/dagre-wrapper/intersect/intersect-node.js":function(e,t){e.exports=function(e,t){return e.intersect(t)}},"./src/dagre-wrapper/intersect/intersect-polygon.js":function(e,t,i){"use strict";i.r(t);var n=i("./src/dagre-wrapper/intersect/intersect-line.js");t.default=function(e,t,i){var r=e.x,s=e.y,o=[],a=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;"function"==typeof t.forEach?t.forEach((function(e){a=Math.min(a,e.x),l=Math.min(l,e.y)})):(a=Math.min(a,t.x),l=Math.min(l,t.y));for(var c=r-e.width/2-a,d=s-e.height/2-l,h=0;h<t.length;h++){var u=t[h],g=t[h<t.length-1?h+1:0],f=Object(n.default)(e,i,{x:c+u.x,y:d+u.y},{x:c+g.x,y:d+g.y});f&&o.push(f)}return o.length?(o.length>1&&o.sort((function(e,t){var n=e.x-i.x,r=e.y-i.y,s=Math.sqrt(n*n+r*r),o=t.x-i.x,a=t.y-i.y,l=Math.sqrt(o*o+a*a);return s<l?-1:s===l?0:1})),o[0]):e}},"./src/dagre-wrapper/intersect/intersect-rect.js":function(e,t,i){"use strict";i.r(t),t.default=function(e,t){var i,n,r=e.x,s=e.y,o=t.x-r,a=t.y-s,l=e.width/2,c=e.height/2;return Math.abs(a)*l>Math.abs(o)*c?(a<0&&(c=-c),i=0===a?0:c*o/a,n=c):(o<0&&(l=-l),i=l,n=0===o?0:l*a/o),{x:r+i,y:s+n}}},"./src/dagre-wrapper/markers.js":function(e,t,i){"use strict";i.r(t);var n=i("./src/logger.js"),r={extension:function(e,t,i){n.log.trace("Making markers for ",i),e.append("defs").append("marker").attr("id",t+"-extensionStart").attr("class","marker extension "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),e.append("defs").append("marker").attr("id",t+"-extensionEnd").attr("class","marker extension "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:function(e,t){e.append("defs").append("marker").attr("id",t+"-compositionStart").attr("class","marker composition "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",t+"-compositionEnd").attr("class","marker composition "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:function(e,t){e.append("defs").append("marker").attr("id",t+"-aggregationStart").attr("class","marker aggregation "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",t+"-aggregationEnd").attr("class","marker aggregation "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:function(e,t){e.append("defs").append("marker").attr("id",t+"-dependencyStart").attr("class","marker dependency "+t).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),e.append("defs").append("marker").attr("id",t+"-dependencyEnd").attr("class","marker dependency "+t).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},point:function(e,t){e.append("marker").attr("id",t+"-pointEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",t+"-pointStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",0).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:function(e,t){e.append("marker").attr("id",t+"-circleEnd").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),e.append("marker").attr("id",t+"-circleStart").attr("class","marker "+t).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:function(e,t){e.append("marker").attr("id",t+"-crossEnd").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),e.append("marker").attr("id",t+"-crossStart").attr("class","marker cross "+t).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:function(e,t){e.append("defs").append("marker").attr("id",t+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}};t.default=function(e,t,i,n){t.forEach((function(t){r[t](e,i,n)}))}},"./src/dagre-wrapper/mermaid-graphlib.js":function(e,t,i){"use strict";i.r(t),i.d(t,"clusterDb",(function(){return o})),i.d(t,"clear",(function(){return c})),i.d(t,"extractDecendants",(function(){return u})),i.d(t,"validate",(function(){return g})),i.d(t,"findNonClusterChild",(function(){return f})),i.d(t,"adjustClustersAndEdges",(function(){return m})),i.d(t,"extractor",(function(){return _})),i.d(t,"sortNodesByHierarchy",(function(){return v}));var n=i("./src/logger.js"),r=i("graphlib"),s=i.n(r),o={},a={},l={},c=function(){a={},l={},o={}},d=function(e,t){return n.log.debug("In isDecendant",t," ",e," = ",a[t].indexOf(e)>=0),a[t].indexOf(e)>=0},h=function e(t,i,r,s){n.log.warn("Copying children of ",t,"root",s,"data",i.node(t),s);var o=i.children(t)||[];t!==s&&o.push(t),n.log.warn("Copying (nodes) clusterId",t,"nodes",o),o.forEach((function(o){if(i.children(o).length>0)e(o,i,r,s);else{var l=i.node(o);n.log.info("cp ",o," to ",s," with parent ",t),r.setNode(o,l),s!==i.parent(o)&&(n.log.warn("Setting parent",o,i.parent(o)),r.setParent(o,i.parent(o))),t!==s&&o!==t?(n.log.debug("Setting parent",o,t),r.setParent(o,t)):(n.log.info("In copy ",t,"root",s,"data",i.node(t),s),n.log.debug("Not Setting parent for node=",o,"cluster!==rootId",t!==s,"node!==clusterId",o!==t));var c=i.edges(o);n.log.debug("Copying Edges",c),c.forEach((function(e){n.log.info("Edge",e);var o=i.edge(e.v,e.w,e.name);n.log.info("Edge data",o,s);try{!function(e,t){return n.log.info("Decendants of ",t," is ",a[t]),n.log.info("Edge is ",e),e.v!==t&&e.w!==t&&(a[t]?(n.log.info("Here "),a[t].indexOf(e.v)>=0||!!d(e.v,t)||!!d(e.w,t)||a[t].indexOf(e.w)>=0):(n.log.debug("Tilt, ",t,",not in decendants"),!1))}(e,s)?n.log.info("Skipping copy of edge ",e.v,"--\x3e",e.w," rootId: ",s," clusterId:",t):(n.log.info("Copying as ",e.v,e.w,o,e.name),r.setEdge(e.v,e.w,o,e.name),n.log.info("newGraph edges ",r.edges(),r.edge(r.edges()[0])))}catch(e){n.log.error(e)}}))}n.log.debug("Removing node",o),i.removeNode(o)}))},u=function e(t,i){for(var n=i.children(t),r=[].concat(n),s=0;s<n.length;s++)l[n[s]]=t,r=r.concat(e(n[s],i));return r},g=function(e){var t=e.edges();n.log.trace("Edges: ",t);for(var i=0;i<t.length;i++){if(e.children(t[i].v).length>0)return n.log.trace("The node ",t[i].v," is part of and edge even though it has children"),!1;if(e.children(t[i].w).length>0)return n.log.trace("The node ",t[i].w," is part of and edge even though it has children"),!1}return!0},f=function e(t,i){n.log.trace("Searching",t);var r=i.children(t);if(n.log.trace("Searching children of id ",t,r),r.length<1)return n.log.trace("This is a valid node",t),t;for(var s=0;s<r.length;s++){var o=e(r[s],i);if(o)return n.log.trace("Found replacement for",t," => ",o),o}},p=function(e){return o[e]&&o[e].externalConnections&&o[e]?o[e].id:e},m=function(e,t){!e||t>10?n.log.debug("Opting out, no graph "):(n.log.debug("Opting in, graph "),e.nodes().forEach((function(t){e.children(t).length>0&&(n.log.warn("Cluster identified",t," Replacement id in edges: ",f(t,e)),a[t]=u(t,e),o[t]={id:f(t,e),clusterData:e.node(t)})})),e.nodes().forEach((function(t){var i=e.children(t),r=e.edges();i.length>0?(n.log.debug("Cluster identified",t,a),r.forEach((function(e){e.v!==t&&e.w!==t&&d(e.v,t)^d(e.w,t)&&(n.log.warn("Edge: ",e," leaves cluster ",t),n.log.warn("Decendants of XXX ",t,": ",a[t]),o[t].externalConnections=!0)}))):n.log.debug("Not a cluster ",t,a)})),e.edges().forEach((function(t){var i=e.edge(t);n.log.warn("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(t)),n.log.warn("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(e.edge(t)));var r=t.v,s=t.w;n.log.warn("Fix XXX",o,"ids:",t.v,t.w,"Translateing: ",o[t.v]," --- ",o[t.w]),(o[t.v]||o[t.w])&&(n.log.warn("Fixing and trixing - removing XXX",t.v,t.w,t.name),r=p(t.v),s=p(t.w),e.removeEdge(t.v,t.w,t.name),r!==t.v&&(i.fromCluster=t.v),s!==t.w&&(i.toCluster=t.w),n.log.warn("Fix Replacing with XXX",r,s,t.name),e.setEdge(r,s,i,t.name))})),n.log.warn("Adjusted Graph",s.a.json.write(e)),_(e,0),n.log.trace(o))},_=function e(t,i){if(n.log.warn("extractor - ",i,s.a.json.write(t),t.children("D")),i>10)n.log.error("Bailing out");else{for(var r=t.nodes(),a=!1,l=0;l<r.length;l++){var c=r[l],d=t.children(c);a=a||d.length>0}if(a){n.log.debug("Nodes = ",r,i);for(var u=0;u<r.length;u++){var g=r[u];if(n.log.debug("Extracting node",g,o,o[g]&&!o[g].externalConnections,!t.parent(g),t.node(g),t.children("D")," Depth ",i),o[g])if(!o[g].externalConnections&&t.children(g)&&t.children(g).length>0){n.log.warn("Cluster without external connections, without a parent and with children",g,i);var f=t.graph(),p=new s.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB"===f.rankdir?"LR":"TB",nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));n.log.warn("Old graph before copy",s.a.json.write(t)),h(g,t,p,g),t.setNode(g,{clusterNode:!0,id:g,clusterData:o[g].clusterData,labelText:o[g].labelText,graph:p}),n.log.warn("New graph after copy node: (",g,")",s.a.json.write(p)),n.log.debug("Old graph after copy",s.a.json.write(t))}else n.log.warn("Cluster ** ",g," **not meeting the criteria !externalConnections:",!o[g].externalConnections," no parent: ",!t.parent(g)," children ",t.children(g)&&t.children(g).length>0,t.children("D"),i),n.log.debug(o);else n.log.debug("Not a cluster",g,i)}r=t.nodes(),n.log.warn("New list of nodes",r);for(var m=0;m<r.length;m++){var _=r[m],b=t.node(_);n.log.warn(" Now next level",_,b),b.clusterNode&&e(b.graph,i+1)}}else n.log.debug("Done, no node has children",t.nodes())}},b=function e(t,i){if(0===i.length)return[];var n=Object.assign(i);return i.forEach((function(i){var r=t.children(i),s=e(t,r);n=n.concat(s)})),n},v=function(e){return b(e,e.children())}},"./src/dagre-wrapper/nodes.js":function(e,t,i){"use strict";i.r(t),i.d(t,"insertNode",(function(){return f})),i.d(t,"setNodeElem",(function(){return p})),i.d(t,"clear",(function(){return m})),i.d(t,"positionNode",(function(){return _}));var n=i("d3"),r=i("./src/logger.js"),s=i("./src/dagre-wrapper/shapes/util.js"),o=i("./src/config.js"),a=i("./src/dagre-wrapper/intersect/index.js"),l=i("./src/dagre-wrapper/createLabel.js"),c=i("./src/dagre-wrapper/shapes/note.js"),d=i("./src/diagrams/class/svgDraw.js"),h=function(e,t,i){var n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),r=70,o=10;"LR"===i&&(r=10,o=70);var l=n.append("rect").style("stroke","black").style("fill","black").attr("x",-1*r/2).attr("y",-1*o/2).attr("width",r).attr("height",o).attr("class","fork-join");return Object(s.updateNodeBounds)(t,l),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(e){return a.default.rect(t,e)},n},u={question:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,o=i.bbox,l=o.width+t.padding+(o.height+t.padding),c=[{x:l/2,y:0},{x:l,y:-l/2},{x:l/2,y:-l},{x:0,y:-l/2}];r.log.info("Question main (Circle)");var d=Object(s.insertPolygonShape)(n,l,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return r.log.warn("Intersect called"),a.default.polygon(t,c,e)},n},rect:function(e,t){var i=Object(s.labelHelper)(e,t,"node "+t.classes,!0),n=i.shapeSvg,o=i.bbox,l=i.halfPadding;r.log.trace("Classes = ",t.classes);var c=n.insert("rect",":first-child");return c.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",-o.width/2-l).attr("y",-o.height/2-l).attr("width",o.width+t.padding).attr("height",o.height+t.padding),Object(s.updateNodeBounds)(t,c),t.intersect=function(e){return a.default.rect(t,e)},n},rectWithTitle:function(e,t){var i;i=t.classes?"node "+t.classes:"node default";var c=e.insert("g").attr("class",i).attr("id",t.domId||t.id),d=c.insert("rect",":first-child"),h=c.insert("line"),u=c.insert("g").attr("class","label"),g=t.labelText.flat();r.log.info("Label text",g[0]);var f,p=u.node().appendChild(Object(l.default)(g[0],t.labelStyle,!0,!0));if(Object(o.getConfig)().flowchart.htmlLabels){var m=p.children[0],_=Object(n.select)(p);f=m.getBoundingClientRect(),_.attr("width",f.width),_.attr("height",f.height)}r.log.info("Text 2",g);var b=g.slice(1,g.length),v=p.getBBox(),y=u.node().appendChild(Object(l.default)(b.join("<br/>"),t.labelStyle,!0,!0));if(Object(o.getConfig)().flowchart.htmlLabels){var w=y.children[0],C=Object(n.select)(y);f=w.getBoundingClientRect(),C.attr("width",f.width),C.attr("height",f.height)}var S=t.padding/2;return Object(n.select)(y).attr("transform","translate( "+(f.width>v.width?0:(v.width-f.width)/2)+", "+(v.height+S+5)+")"),Object(n.select)(p).attr("transform","translate( "+(f.width<v.width?0:-(v.width-f.width)/2)+", 0)"),f=u.node().getBBox(),u.attr("transform","translate("+-f.width/2+", "+(-f.height/2-S+3)+")"),d.attr("class","outer title-state").attr("x",-f.width/2-S).attr("y",-f.height/2-S).attr("width",f.width+t.padding).attr("height",f.height+t.padding),h.attr("class","divider").attr("x1",-f.width/2-S).attr("x2",f.width/2+S).attr("y1",-f.height/2-S+v.height+S).attr("y2",-f.height/2-S+v.height+S),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.rect(t,e)},c},circle:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,o=i.bbox,l=i.halfPadding,c=n.insert("circle",":first-child");return c.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",o.width/2+l).attr("width",o.width+t.padding).attr("height",o.height+t.padding),r.log.info("Circle main"),Object(s.updateNodeBounds)(t,c),t.intersect=function(e){return r.log.info("Circle intersect",t,o.width/2+l,e),a.default.circle(t,o.width/2+l,e)},n},stadium:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.height+t.padding,l=r.width+o/4+t.padding,c=n.insert("rect",":first-child").attr("style",t.style).attr("rx",o/2).attr("ry",o/2).attr("x",-l/2).attr("y",-o/2).attr("width",l).attr("height",o);return Object(s.updateNodeBounds)(t,c),t.intersect=function(e){return a.default.rect(t,e)},n},hexagon:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.height+t.padding,l=o/4,c=r.width+2*l+t.padding,d=[{x:l,y:0},{x:c-l,y:0},{x:c,y:-o/2},{x:c-l,y:-o},{x:l,y:-o},{x:0,y:-o/2}],h=Object(s.insertPolygonShape)(n,c,o,d);return h.attr("style",t.style),Object(s.updateNodeBounds)(t,h),t.intersect=function(e){return a.default.polygon(t,d,e)},n},rect_left_inv_arrow:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:-l/2,y:0},{x:o,y:0},{x:o,y:-l},{x:-l/2,y:-l},{x:0,y:-l/2}];return Object(s.insertPolygonShape)(n,o,l,c).attr("style",t.style),t.width=o+l,t.height=l,t.intersect=function(e){return a.default.polygon(t,c,e)},n},lean_right:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:-2*l/6,y:0},{x:o-l/6,y:0},{x:o+2*l/6,y:-l},{x:l/6,y:-l}],d=Object(s.insertPolygonShape)(n,o,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.polygon(t,c,e)},n},lean_left:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:2*l/6,y:0},{x:o+l/6,y:0},{x:o-2*l/6,y:-l},{x:-l/6,y:-l}],d=Object(s.insertPolygonShape)(n,o,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.polygon(t,c,e)},n},trapezoid:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:-2*l/6,y:0},{x:o+2*l/6,y:0},{x:o-l/6,y:-l},{x:l/6,y:-l}],d=Object(s.insertPolygonShape)(n,o,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.polygon(t,c,e)},n},inv_trapezoid:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:l/6,y:0},{x:o-l/6,y:0},{x:o+2*l/6,y:-l},{x:-2*l/6,y:-l}],d=Object(s.insertPolygonShape)(n,o,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.polygon(t,c,e)},n},rect_right_inv_arrow:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:0,y:0},{x:o+l/2,y:0},{x:o,y:-l/2},{x:o+l/2,y:-l},{x:0,y:-l}],d=Object(s.insertPolygonShape)(n,o,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.polygon(t,c,e)},n},cylinder:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=o/2,c=l/(2.5+o/50),d=r.height+c+t.padding,h="M 0,"+c+" a "+l+","+c+" 0,0,0 "+o+" 0 a "+l+","+c+" 0,0,0 "+-o+" 0 l 0,"+d+" a "+l+","+c+" 0,0,0 "+o+" 0 l 0,"+-d,u=n.attr("label-offset-y",c).insert("path",":first-child").attr("style",t.style).attr("d",h).attr("transform","translate("+-o/2+","+-(d/2+c)+")");return Object(s.updateNodeBounds)(t,u),t.intersect=function(e){var i=a.default.rect(t,e),n=i.x-t.x;if(0!=l&&(Math.abs(n)<t.width/2||Math.abs(n)==t.width/2&&Math.abs(i.y-t.y)>t.height/2-c)){var r=c*c*(1-n*n/(l*l));0!=r&&(r=Math.sqrt(r)),r=c-r,e.y-t.y>0&&(r=-r),i.y+=r}return i},n},start:function(e,t){var i=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=i.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),Object(s.updateNodeBounds)(t,n),t.intersect=function(e){return a.default.circle(t,7,e)},i},end:function(e,t){var i=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=i.insert("circle",":first-child"),r=i.insert("circle",":first-child");return r.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),Object(s.updateNodeBounds)(t,r),t.intersect=function(e){return a.default.circle(t,7,e)},i},note:c.default,subroutine:function(e,t){var i=Object(s.labelHelper)(e,t,void 0,!0),n=i.shapeSvg,r=i.bbox,o=r.width+t.padding,l=r.height+t.padding,c=[{x:0,y:0},{x:o,y:0},{x:o,y:-l},{x:0,y:-l},{x:0,y:0},{x:-8,y:0},{x:o+8,y:0},{x:o+8,y:-l},{x:-8,y:-l},{x:-8,y:0}],d=Object(s.insertPolygonShape)(n,o,l,c);return d.attr("style",t.style),Object(s.updateNodeBounds)(t,d),t.intersect=function(e){return a.default.polygon(t,c,e)},n},fork:h,join:h,class_box:function(e,t){var i,r=t.padding/2;i=t.classes?"node "+t.classes:"node default";var c=e.insert("g").attr("class",i).attr("id",t.domId||t.id),h=c.insert("rect",":first-child"),u=c.insert("line"),g=c.insert("line"),f=0,p=4,m=c.insert("g").attr("class","label"),_=0,b=t.classData.annotations&&t.classData.annotations[0],v=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",y=m.node().appendChild(Object(l.default)(v,t.labelStyle,!0,!0)),w=y.getBBox();if(Object(o.getConfig)().flowchart.htmlLabels){var C=y.children[0],S=Object(n.select)(y);w=C.getBoundingClientRect(),S.attr("width",w.width),S.attr("height",w.height)}t.classData.annotations[0]&&(p+=w.height+4,f+=w.width);var k=t.classData.id;void 0!==t.classData.type&&""!==t.classData.type&&(k+="<"+t.classData.type+">");var x=m.node().appendChild(Object(l.default)(k,t.labelStyle,!0,!0));Object(n.select)(x).attr("class","classTitle");var L=x.getBBox();if(Object(o.getConfig)().flowchart.htmlLabels){var M=x.children[0],D=Object(n.select)(x);L=M.getBoundingClientRect(),D.attr("width",L.width),D.attr("height",L.height)}p+=L.height+4,L.width>f&&(f=L.width);var N=[];t.classData.members.forEach((function(e){var i=Object(d.parseMember)(e).displayText,r=m.node().appendChild(Object(l.default)(i,t.labelStyle,!0,!0)),s=r.getBBox();if(Object(o.getConfig)().flowchart.htmlLabels){var a=r.children[0],c=Object(n.select)(r);s=a.getBoundingClientRect(),c.attr("width",s.width),c.attr("height",s.height)}s.width>f&&(f=s.width),p+=s.height+4,N.push(r)})),p+=8;var E=[];if(t.classData.methods.forEach((function(e){var i=Object(d.parseMember)(e).displayText,r=m.node().appendChild(Object(l.default)(i,t.labelStyle,!0,!0)),s=r.getBBox();if(Object(o.getConfig)().flowchart.htmlLabels){var a=r.children[0],c=Object(n.select)(r);s=a.getBoundingClientRect(),c.attr("width",s.width),c.attr("height",s.height)}s.width>f&&(f=s.width),p+=s.height+4,E.push(r)})),p+=8,b){var T=(f-w.width)/2;Object(n.select)(y).attr("transform","translate( "+(-1*f/2+T)+", "+-1*p/2+")"),_=w.height+4}var I=(f-L.width)/2;return Object(n.select)(x).attr("transform","translate( "+(-1*f/2+I)+", "+(-1*p/2+_)+")"),_+=L.height+4,u.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-p/2-r+8+_).attr("y2",-p/2-r+8+_),_+=8,N.forEach((function(e){Object(n.select)(e).attr("transform","translate( "+-f/2+", "+(-1*p/2+_+4)+")"),_+=L.height+4})),_+=8,g.attr("class","divider").attr("x1",-f/2-r).attr("x2",f/2+r).attr("y1",-p/2-r+8+_).attr("y2",-p/2-r+8+_),_+=8,E.forEach((function(e){Object(n.select)(e).attr("transform","translate( "+-f/2+", "+(-1*p/2+_)+")"),_+=L.height+4})),h.attr("class","outer title-state").attr("x",-f/2-r).attr("y",-p/2-r).attr("width",f+t.padding).attr("height",p+t.padding),Object(s.updateNodeBounds)(t,h),t.intersect=function(e){return a.default.rect(t,e)},c}},g={},f=function(e,t,i){var n,r;t.link?(n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",t.linkTarget||"_blank"),r=u[t.shape](n,t,i)):n=r=u[t.shape](e,t,i),t.tooltip&&r.attr("title",t.tooltip),t.class&&r.attr("class","node default "+t.class),g[t.id]=n,t.haveCallback&&g[t.id].attr("class",g[t.id].attr("class")+" clickable")},p=function(e,t){g[t.id]=e},m=function(){g={}},_=function(e){var t=g[e.id];r.log.trace("Transforming node",e,"translate("+(e.x-e.width/2-5)+", "+(e.y-e.height/2-5)+")"),e.clusterNode?t.attr("transform","translate("+(e.x-e.width/2-8)+", "+(e.y-e.height/2-8)+")"):t.attr("transform","translate("+e.x+", "+e.y+")")}},"./src/dagre-wrapper/shapes/note.js":function(e,t,i){"use strict";i.r(t);var n=i("./src/dagre-wrapper/shapes/util.js"),r=i("./src/logger.js"),s=i("./src/dagre-wrapper/intersect/index.js");t.default=function(e,t){var i=Object(n.labelHelper)(e,t,"node "+t.classes,!0),o=i.shapeSvg,a=i.bbox,l=i.halfPadding;r.log.info("Classes = ",t.classes);var c=o.insert("rect",":first-child");return c.attr("rx",t.rx).attr("ry",t.ry).attr("x",-a.width/2-l).attr("y",-a.height/2-l).attr("width",a.width+t.padding).attr("height",a.height+t.padding),Object(n.updateNodeBounds)(t,c),t.intersect=function(e){return s.default.rect(t,e)},o}},"./src/dagre-wrapper/shapes/util.js":function(e,t,i){"use strict";i.r(t),i.d(t,"labelHelper",(function(){return o})),i.d(t,"updateNodeBounds",(function(){return a})),i.d(t,"insertPolygonShape",(function(){return l}));var n=i("./src/dagre-wrapper/createLabel.js"),r=i("./src/config.js"),s=i("d3"),o=function(e,t,i,o){var a;a=i||"node default";var l=e.insert("g").attr("class",a).attr("id",t.domId||t.id),c=l.insert("g").attr("class","label").attr("style",t.labelStyle),d=c.node().appendChild(Object(n.default)(t.labelText,t.labelStyle,!1,o)),h=d.getBBox();if(Object(r.getConfig)().flowchart.htmlLabels){var u=d.children[0],g=Object(s.select)(d);h=u.getBoundingClientRect(),g.attr("width",h.width),g.attr("height",h.height)}var f=t.padding/2;return c.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),{shapeSvg:l,bbox:h,halfPadding:f,label:c}},a=function(e,t){var i=t.node().getBBox();e.width=i.width,e.height=i.height};function l(e,t,i,n){return e.insert("polygon",":first-child").attr("points",n.map((function(e){return e.x+","+e.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+i/2+")")}},"./src/defaultConfig.js":function(e,t,i){"use strict";i.r(t);var n={theme:"default",themeVariables:i("./src/themes/index.js").default.default.getThemeVariables(),themeCSS:void 0,maxTextSize:5e4,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize"],deterministicIds:!1,deterministicIDSeed:void 0,flowchart:{diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,useMaxWidth:!0},sequence:{activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open-Sans", "sans-serif"',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",useMaxWidth:!0,topAxis:!1,useWidth:void 0},journey:{diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open-Sans", "sans-serif"',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{arrowMarkerAbsolute:!1,useMaxWidth:!0},git:{arrowMarkerAbsolute:!1,useWidth:void 0,useMaxWidth:!0},state:{dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,useMaxWidth:!0},er:{diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12,useMaxWidth:!0},pie:{useWidth:void 0,useMaxWidth:!0},requirement:{useWidth:void 0,useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20}};n.class.arrowMarkerAbsolute=n.arrowMarkerAbsolute,n.git.arrowMarkerAbsolute=n.arrowMarkerAbsolute,t.default=n},"./src/diagrams/class/classDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return f})),i.d(t,"addClass",(function(){return m})),i.d(t,"lookUpDomId",(function(){return _})),i.d(t,"clear",(function(){return b})),i.d(t,"getClass",(function(){return v})),i.d(t,"getClasses",(function(){return y})),i.d(t,"getRelations",(function(){return w})),i.d(t,"addRelation",(function(){return C})),i.d(t,"addAnnotation",(function(){return S})),i.d(t,"addMember",(function(){return k})),i.d(t,"addMembers",(function(){return x})),i.d(t,"cleanupLabel",(function(){return L})),i.d(t,"setCssClass",(function(){return M})),i.d(t,"setLink",(function(){return D})),i.d(t,"setClickEvent",(function(){return N})),i.d(t,"bindFunctions",(function(){return T})),i.d(t,"lineType",(function(){return I})),i.d(t,"relationType",(function(){return O}));var n=i("d3"),r=i("./src/logger.js"),s=i("./src/config.js"),o=i("./src/diagrams/common/common.js"),a=i("./src/utils.js"),l=i("./src/mermaidAPI.js");var c="classid-",d=[],h={},u=0,g=[],f=function(e,t,i){l.default.parseDirective(this,e,t,i)},p=function(e){var t="",i=e;if(e.indexOf("~")>0){var n=e.split("~");i=n[0],t=n[1]}return{className:i,type:t}},m=function(e){var t=p(e);void 0===h[t.className]&&(h[t.className]={id:t.className,type:t.type,cssClasses:[],methods:[],members:[],annotations:[],domId:c+t.className+"-"+u},u++)},_=function(e){for(var t=Object.keys(h),i=0;i<t.length;i++)if(h[t[i]].id===e)return h[t[i]].domId},b=function(){d=[],h={},(g=[]).push(A)},v=function(e){return h[e]},y=function(){return h},w=function(){return d},C=function(e){r.log.debug("Adding relation: "+JSON.stringify(e)),m(e.id1),m(e.id2),e.id1=p(e.id1).className,e.id2=p(e.id2).className,d.push(e)},S=function(e,t){var i=p(e).className;h[i].annotations.push(t)},k=function(e,t){var i=p(e).className,n=h[i];if("string"==typeof t){var r=t.trim();r.startsWith("<<")&&r.endsWith(">>")?n.annotations.push(r.substring(2,r.length-2)):r.indexOf(")")>0?n.methods.push(r):r&&n.members.push(r)}},x=function(e,t){Array.isArray(t)&&(t.reverse(),t.forEach((function(t){return k(e,t)})))},L=function(e){return":"===e.substring(0,1)?e.substr(1).trim():e.trim()},M=function(e,t){e.split(",").forEach((function(e){var i=e;e[0].match(/\d/)&&(i=c+i),void 0!==h[i]&&h[i].cssClasses.push(t)}))},D=function(e,t,i){var n=s.getConfig();e.split(",").forEach((function(e){var r=e;e[0].match(/\d/)&&(r=c+r),void 0!==h[r]&&(h[r].link=a.default.formatUrl(t,n),h[r].linkTarget="string"==typeof i?i:"_blank")})),M(e,"clickable")},N=function(e,t,i){e.split(",").forEach((function(e){E(e,t,i),h[e].haveCallback=!0})),M(e,"clickable")},E=function(e,t,i){var n=s.getConfig(),r=e,o=_(r);if("loose"===n.securityLevel&&void 0!==t&&void 0!==h[r]){var l=[];if("string"==typeof i){l=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var c=0;c<l.length;c++){var d=l[c].trim();'"'===d.charAt(0)&&'"'===d.charAt(d.length-1)&&(d=d.substr(1,d.length-2)),l[c]=d}}0===l.length&&l.push(o),g.push((function(){var e=document.querySelector('[id="'.concat(o,'"]'));null!==e&&e.addEventListener("click",(function(){var e;a.default.runFunc.apply(a.default,[t].concat(function(e){if(Array.isArray(e)){for(var t=0,i=new Array(e.length);t<e.length;t++)i[t]=e[t];return i}}(e=l)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()))}),!1)}))}},T=function(e){g.forEach((function(t){t(e)}))},I={LINE:0,DOTTED_LINE:1},O={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},A=function(e){var t=Object(n.select)(".mermaidTooltip");null===(t._groups||t)[0][0]&&(t=Object(n.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(n.select)(e).select("svg").selectAll("g.node").on("mouseover",(function(){var e=Object(n.select)(this);if(null!==e.attr("title")){var i=this.getBoundingClientRect();t.transition().duration(200).style("opacity",".9"),t.html(e.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.top-14+document.body.scrollTop+"px"),e.classed("hover",!0)}})).on("mouseout",(function(){t.transition().duration(500).style("opacity",0),Object(n.select)(this).classed("hover",!1)}))};g.push(A),t.default={parseDirective:f,getConfig:function(){return s.getConfig().class},addClass:m,bindFunctions:T,clear:b,getClass:v,getClasses:y,addAnnotation:S,getRelations:w,addRelation:C,addMember:k,addMembers:x,cleanupLabel:L,lineType:I,relationType:O,setClickEvent:N,setCssClass:M,setLink:D,setTooltip:function(e,t){var i=s.getConfig();e.split(",").forEach((function(e){void 0!==t&&(h[e].tooltip=o.default.sanitizeText(t,i))}))},lookUpDomId:_}},"./src/diagrams/class/classRenderer-v2.js":function(e,t,i){"use strict";i.r(t),i.d(t,"addClasses",(function(){return b})),i.d(t,"addRelations",(function(){return v})),i.d(t,"setConf",(function(){return w})),i.d(t,"drawOld",(function(){return C})),i.d(t,"draw",(function(){return S}));var n=i("d3"),r=i("dagre"),s=i.n(r),o=i("graphlib"),a=i.n(o),l=i("./src/logger.js"),c=i("./src/diagrams/class/classDb.js"),d=i("./src/diagrams/class/parser/classDiagram.jison"),h=i("./src/diagrams/class/svgDraw.js"),u=i("./src/config.js"),g=i("./src/dagre-wrapper/index.js"),f=i("./src/utils.js"),p=i("./src/diagrams/common/common.js");d.parser.yy=c.default;var m={},_={dividerMargin:10,padding:5,textHeight:10},b=function(e,t){var i=Object.keys(e);l.log.info("keys:",i),l.log.info(e),i.forEach((function(i){var n=e[i],r="";n.cssClasses.length>0&&(r=r+" "+n.cssClasses.join(" "));var s={labelStyle:""},o=void 0!==n.text?n.text:n.id,a="";switch(n.type){case"class":a="class_box";break;default:a="class_box"}t.setNode(n.id,{labelStyle:s.labelStyle,shape:a,labelText:o,classData:n,rx:0,ry:0,class:r,style:s.style,id:n.id,domId:n.domId,haveCallback:n.haveCallback,link:n.link,width:"group"===n.type?500:void 0,type:n.type,padding:Object(u.getConfig)().flowchart.padding}),l.log.info("setNode",{labelStyle:s.labelStyle,shape:a,labelText:o,rx:0,ry:0,class:r,style:s.style,id:n.id,width:"group"===n.type?500:void 0,type:n.type,padding:Object(u.getConfig)().flowchart.padding})}))},v=function(e,t){var i=0;e.forEach((function(r){i++;var s={classes:"relation"};s.pattern=1==r.relation.lineType?"dashed":"solid",s.id="id"+i,"arrow_open"===r.type?s.arrowhead="none":s.arrowhead="normal",l.log.info(s,r),s.startLabelRight="none"===r.relationTitle1?"":r.relationTitle1,s.endLabelLeft="none"===r.relationTitle2?"":r.relationTitle2,s.arrowTypeStart=k(r.relation.type1),s.arrowTypeEnd=k(r.relation.type2);var o="",a="";if(void 0!==r.style){var c=Object(f.getStylesFromArray)(r.style);o=c.style,a=c.labelStyle}else o="fill:none";s.style=o,s.labelStyle=a,void 0!==r.interpolate?s.curve=Object(f.interpolateToCurve)(r.interpolate,n.curveLinear):void 0!==e.defaultInterpolate?s.curve=Object(f.interpolateToCurve)(e.defaultInterpolate,n.curveLinear):s.curve=Object(f.interpolateToCurve)(_.curve,n.curveLinear),r.text=r.title,void 0===r.text?void 0!==r.style&&(s.arrowheadStyle="fill: #333"):(s.arrowheadStyle="fill: #333",s.labelpos="c",Object(u.getConfig)().flowchart.htmlLabels,s.labelType="text",s.label=r.text.replace(p.default.lineBreakRegex,"\n"),void 0===r.style&&(s.style=s.style||"stroke: #333; stroke-width: 1.5px;fill:none"),s.labelStyle=s.labelStyle.replace("color:","fill:")),t.setEdge(r.id1,r.id2,s,i)}))},y=function(e){for(var t=Object.keys(m),i=0;i<t.length;i++)if(m[t[i]].label===e)return t[i]},w=function(e){Object.keys(e).forEach((function(t){_[t]=e[t]}))},C=function(e,t){m={},d.parser.yy.clear(),d.parser.parse(e),l.log.info("Rendering diagram "+e);var i=Object(n.select)("[id='".concat(t,"']")),r=new a.a.Graph({multigraph:!0});r.setGraph({isMultiGraph:!0}),r.setDefaultEdgeLabel((function(){return{}}));var o=c.default.getClasses();l.log.info("classes:"),l.log.info(o);for(var u=Object.keys(o),g=0;g<u.length;g++){var p=o[u[g]],b=h.default.drawClass(i,p,_);m[b.id]=b,r.setNode(b.id,b),l.log.info("Org height: "+b.height)}var v=c.default.getRelations();l.log.info("relations:",v),v.forEach((function(e){l.log.info("tjoho"+y(e.id1)+y(e.id2)+JSON.stringify(e)),r.setEdge(y(e.id1),y(e.id2),{relation:e},e.title||"DEFAULT")})),s.a.layout(r),r.nodes().forEach((function(e){void 0!==e&&void 0!==r.node(e)&&(l.log.debug("Node "+e+": "+JSON.stringify(r.node(e))),Object(n.select)("#"+Object(c.lookUpDomId)(e)).attr("transform","translate("+(r.node(e).x-r.node(e).width/2)+","+(r.node(e).y-r.node(e).height/2)+" )"))})),r.edges().forEach((function(e){void 0!==e&&void 0!==r.edge(e)&&(l.log.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(r.edge(e))),h.default.drawEdge(i,r.edge(e),r.edge(e).relation,_))}));var w=i.node().getBBox(),C=w.width+40,S=w.height+40;Object(f.configureSvgSize)(i,S,C,_.useMaxWidth);var k="".concat(w.x-20," ").concat(w.y-20," ").concat(C," ").concat(S);l.log.debug("viewBox ".concat(k)),i.attr("viewBox",k)},S=function(e,t){l.log.info("Drawing class"),c.default.clear(),d.parser.parse(e);var i=Object(u.getConfig)().flowchart;l.log.info("config:",i);var r=i.nodeSpacing||50,s=i.rankSpacing||50,o=new a.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TD",nodesep:r,ranksep:s,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),h=c.default.getClasses(),p=c.default.getRelations();l.log.info(p),b(h,o,t),v(p,o);var m=Object(n.select)('[id="'.concat(t,'"]'));m.attr("xmlns:xlink","http://www.w3.org/1999/xlink");var _=Object(n.select)("#"+t+" g");Object(g.render)(_,o,["aggregation","extension","composition","dependency"],"classDiagram",t);var y=m.node().getBBox(),w=y.width+16,C=y.height+16;if(l.log.debug("new ViewBox 0 0 ".concat(w," ").concat(C),"translate(".concat(8-o._label.marginx,", ").concat(8-o._label.marginy,")")),Object(f.configureSvgSize)(m,C,w,i.useMaxWidth),m.attr("viewBox","0 0 ".concat(w," ").concat(C)),m.select("g").attr("transform","translate(".concat(8-o._label.marginx,", ").concat(8-y.y,")")),!i.htmlLabels)for(var S=document.querySelectorAll('[id="'+t+'"] .edgeLabel .label'),k=0;k<S.length;k++){var x=S[k],L=x.getBBox(),M=document.createElementNS("http://www.w3.org/2000/svg","rect");M.setAttribute("rx",0),M.setAttribute("ry",0),M.setAttribute("width",L.width),M.setAttribute("height",L.height),M.setAttribute("style","fill:#e8e8e8;"),x.insertBefore(M,x.firstChild)}};function k(e){var t;switch(e){case 0:t="aggregation";break;case 1:t="extension";break;case 2:t="composition";break;case 3:t="dependency";break;default:t="none"}return t}t.default={setConf:w,draw:S}},"./src/diagrams/class/classRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return m})),i.d(t,"draw",(function(){return _}));var n=i("d3"),r=i("dagre"),s=i.n(r),o=i("graphlib"),a=i.n(o),l=i("./src/logger.js"),c=i("./src/diagrams/class/classDb.js"),d=i("./src/diagrams/class/parser/classDiagram.jison"),h=i("./src/diagrams/class/svgDraw.js"),u=i("./src/utils.js");d.parser.yy=c.default;var g={},f={dividerMargin:10,padding:5,textHeight:10},p=function(e){for(var t=Object.keys(g),i=0;i<t.length;i++)if(g[t[i]].label===e)return t[i]},m=function(e){Object.keys(e).forEach((function(t){f[t]=e[t]}))},_=function(e,t){g={},d.parser.yy.clear(),d.parser.parse(e),l.log.info("Rendering diagram "+e);var i,r=Object(n.select)("[id='".concat(t,"']"));r.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),(i=r).append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z");var o=new a.a.Graph({multigraph:!0});o.setGraph({isMultiGraph:!0}),o.setDefaultEdgeLabel((function(){return{}}));for(var m=c.default.getClasses(),_=Object.keys(m),b=0;b<_.length;b++){var v=m[_[b]],y=h.default.drawClass(r,v,f);g[y.id]=y,o.setNode(y.id,y),l.log.info("Org height: "+y.height)}c.default.getRelations().forEach((function(e){l.log.info("tjoho"+p(e.id1)+p(e.id2)+JSON.stringify(e)),o.setEdge(p(e.id1),p(e.id2),{relation:e},e.title||"DEFAULT")})),s.a.layout(o),o.nodes().forEach((function(e){void 0!==e&&void 0!==o.node(e)&&(l.log.debug("Node "+e+": "+JSON.stringify(o.node(e))),Object(n.select)("#"+Object(c.lookUpDomId)(e)).attr("transform","translate("+(o.node(e).x-o.node(e).width/2)+","+(o.node(e).y-o.node(e).height/2)+" )"))})),o.edges().forEach((function(e){void 0!==e&&void 0!==o.edge(e)&&(l.log.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(o.edge(e))),h.default.drawEdge(r,o.edge(e),o.edge(e).relation,f))}));var w=r.node().getBBox(),C=w.width+40,S=w.height+40;Object(u.configureSvgSize)(r,S,C,f.useMaxWidth);var k="".concat(w.x-20," ").concat(w.y-20," ").concat(C," ").concat(S);l.log.debug("viewBox ".concat(k)),r.attr("viewBox",k)};t.default={setConf:m,draw:_}},"./src/diagrams/class/parser/classDiagram.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,7],i=[1,6],n=[1,14],r=[1,25],s=[1,28],o=[1,26],a=[1,27],l=[1,29],c=[1,30],d=[1,31],h=[1,32],u=[1,35],g=[1,36],f=[1,37],p=[1,38],m=[10,19],_=[1,50],b=[1,51],v=[1,52],y=[1,53],w=[1,54],C=[1,55],S=[10,19,26,33,34,42,45,46,47,48,49,50,55,57],k=[10,19,24,26,33,34,38,42,45,46,47,48,49,50,55,57,72,73,74,75],x=[10,13,17,19],L=[42,72,73,74,75],M=[42,49,50,72,73,74,75],D=[42,45,46,47,48,72,73,74,75],N=[10,19,26],E=[1,87],T={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,graphConfig:6,openDirective:7,typeDirective:8,closeDirective:9,NEWLINE:10,":":11,argDirective:12,open_directive:13,type_directive:14,arg_directive:15,close_directive:16,CLASS_DIAGRAM:17,statements:18,EOF:19,statement:20,className:21,alphaNumToken:22,classLiteralName:23,GENERICTYPE:24,relationStatement:25,LABEL:26,classStatement:27,methodStatement:28,annotationStatement:29,clickStatement:30,cssClassStatement:31,CLASS:32,STYLE_SEPARATOR:33,STRUCT_START:34,members:35,STRUCT_STOP:36,ANNOTATION_START:37,ANNOTATION_END:38,MEMBER:39,SEPARATOR:40,relation:41,STR:42,relationType:43,lineType:44,AGGREGATION:45,EXTENSION:46,COMPOSITION:47,DEPENDENCY:48,LINE:49,DOTTED_LINE:50,CALLBACK:51,LINK:52,LINK_TARGET:53,CLICK:54,CALLBACK_NAME:55,CALLBACK_ARGS:56,HREF:57,CSSCLASS:58,commentToken:59,textToken:60,graphCodeTokens:61,textNoTagsToken:62,TAGSTART:63,TAGEND:64,"==":65,"--":66,PCT:67,DEFAULT:68,SPACE:69,MINUS:70,keywords:71,UNICODE_TEXT:72,NUM:73,ALPHA:74,BQUOTE_STR:75,$accept:0,$end:1},terminals_:{2:"error",10:"NEWLINE",11:":",13:"open_directive",14:"type_directive",15:"arg_directive",16:"close_directive",17:"CLASS_DIAGRAM",19:"EOF",24:"GENERICTYPE",26:"LABEL",32:"CLASS",33:"STYLE_SEPARATOR",34:"STRUCT_START",36:"STRUCT_STOP",37:"ANNOTATION_START",38:"ANNOTATION_END",39:"MEMBER",40:"SEPARATOR",42:"STR",45:"AGGREGATION",46:"EXTENSION",47:"COMPOSITION",48:"DEPENDENCY",49:"LINE",50:"DOTTED_LINE",51:"CALLBACK",52:"LINK",53:"LINK_TARGET",54:"CLICK",55:"CALLBACK_NAME",56:"CALLBACK_ARGS",57:"HREF",58:"CSSCLASS",61:"graphCodeTokens",63:"TAGSTART",64:"TAGEND",65:"==",66:"--",67:"PCT",68:"DEFAULT",69:"SPACE",70:"MINUS",71:"keywords",72:"UNICODE_TEXT",73:"NUM",74:"ALPHA",75:"BQUOTE_STR"},productions_:[0,[3,1],[3,2],[4,1],[5,4],[5,6],[7,1],[8,1],[12,1],[9,1],[6,4],[18,1],[18,2],[18,3],[21,1],[21,1],[21,2],[21,2],[21,2],[20,1],[20,2],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[27,2],[27,4],[27,5],[27,7],[29,4],[35,1],[35,2],[28,1],[28,2],[28,1],[28,1],[25,3],[25,4],[25,4],[25,5],[41,3],[41,2],[41,2],[41,1],[43,1],[43,1],[43,1],[43,1],[44,1],[44,1],[30,3],[30,4],[30,3],[30,4],[30,4],[30,5],[30,3],[30,4],[30,4],[30,5],[30,3],[30,4],[30,4],[30,5],[31,3],[59,1],[59,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[62,1],[62,1],[62,1],[62,1],[22,1],[22,1],[22,1],[23,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 6:n.parseDirective("%%{","open_directive");break;case 7:n.parseDirective(s[a],"type_directive");break;case 8:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 9:n.parseDirective("}%%","close_directive","class");break;case 14:case 15:this.$=s[a];break;case 16:this.$=s[a-1]+s[a];break;case 17:case 18:this.$=s[a-1]+"~"+s[a];break;case 19:n.addRelation(s[a]);break;case 20:s[a-1].title=n.cleanupLabel(s[a]),n.addRelation(s[a-1]);break;case 27:n.addClass(s[a]);break;case 28:n.addClass(s[a-2]),n.setCssClass(s[a-2],s[a]);break;case 29:n.addClass(s[a-3]),n.addMembers(s[a-3],s[a-1]);break;case 30:n.addClass(s[a-5]),n.setCssClass(s[a-5],s[a-3]),n.addMembers(s[a-5],s[a-1]);break;case 31:n.addAnnotation(s[a],s[a-2]);break;case 32:this.$=[s[a]];break;case 33:s[a].push(s[a-1]),this.$=s[a];break;case 34:break;case 35:n.addMember(s[a-1],n.cleanupLabel(s[a]));break;case 36:case 37:break;case 38:this.$={id1:s[a-2],id2:s[a],relation:s[a-1],relationTitle1:"none",relationTitle2:"none"};break;case 39:this.$={id1:s[a-3],id2:s[a],relation:s[a-1],relationTitle1:s[a-2],relationTitle2:"none"};break;case 40:this.$={id1:s[a-3],id2:s[a],relation:s[a-2],relationTitle1:"none",relationTitle2:s[a-1]};break;case 41:this.$={id1:s[a-4],id2:s[a],relation:s[a-2],relationTitle1:s[a-3],relationTitle2:s[a-1]};break;case 42:this.$={type1:s[a-2],type2:s[a],lineType:s[a-1]};break;case 43:this.$={type1:"none",type2:s[a],lineType:s[a-1]};break;case 44:this.$={type1:s[a-1],type2:"none",lineType:s[a]};break;case 45:this.$={type1:"none",type2:"none",lineType:s[a]};break;case 46:this.$=n.relationType.AGGREGATION;break;case 47:this.$=n.relationType.EXTENSION;break;case 48:this.$=n.relationType.COMPOSITION;break;case 49:this.$=n.relationType.DEPENDENCY;break;case 50:this.$=n.lineType.LINE;break;case 51:this.$=n.lineType.DOTTED_LINE;break;case 52:case 58:this.$=s[a-2],n.setClickEvent(s[a-1],s[a]);break;case 53:case 59:this.$=s[a-3],n.setClickEvent(s[a-2],s[a-1]),n.setTooltip(s[a-2],s[a]);break;case 54:case 62:this.$=s[a-2],n.setLink(s[a-1],s[a]);break;case 55:this.$=s[a-3],n.setLink(s[a-2],s[a-1],s[a]);break;case 56:case 64:this.$=s[a-3],n.setLink(s[a-2],s[a-1]),n.setTooltip(s[a-2],s[a]);break;case 57:case 65:this.$=s[a-4],n.setLink(s[a-3],s[a-2],s[a]),n.setTooltip(s[a-3],s[a-1]);break;case 60:this.$=s[a-3],n.setClickEvent(s[a-2],s[a-1],s[a]);break;case 61:this.$=s[a-4],n.setClickEvent(s[a-3],s[a-2],s[a-1]),n.setTooltip(s[a-3],s[a]);break;case 63:this.$=s[a-3],n.setLink(s[a-2],s[a-1],s[a]);break;case 66:n.setCssClass(s[a-1],s[a])}},table:[{3:1,4:2,5:3,6:4,7:5,13:t,17:i},{1:[3]},{1:[2,1]},{3:8,4:2,5:3,6:4,7:5,13:t,17:i},{1:[2,3]},{8:9,14:[1,10]},{10:[1,11]},{14:[2,6]},{1:[2,2]},{9:12,11:[1,13],16:n},e([11,16],[2,7]),{5:23,7:5,13:t,18:15,20:16,21:24,22:33,23:34,25:17,27:18,28:19,29:20,30:21,31:22,32:r,37:s,39:o,40:a,51:l,52:c,54:d,58:h,72:u,73:g,74:f,75:p},{10:[1,39]},{12:40,15:[1,41]},{10:[2,9]},{19:[1,42]},{10:[1,43],19:[2,11]},e(m,[2,19],{26:[1,44]}),e(m,[2,21]),e(m,[2,22]),e(m,[2,23]),e(m,[2,24]),e(m,[2,25]),e(m,[2,26]),e(m,[2,34],{41:45,43:48,44:49,26:[1,47],42:[1,46],45:_,46:b,47:v,48:y,49:w,50:C}),{21:56,22:33,23:34,72:u,73:g,74:f,75:p},e(m,[2,36]),e(m,[2,37]),{22:57,72:u,73:g,74:f},{21:58,22:33,23:34,72:u,73:g,74:f,75:p},{21:59,22:33,23:34,72:u,73:g,74:f,75:p},{21:60,22:33,23:34,72:u,73:g,74:f,75:p},{42:[1,61]},e(S,[2,14],{22:33,23:34,21:62,24:[1,63],72:u,73:g,74:f,75:p}),e(S,[2,15],{24:[1,64]}),e(k,[2,80]),e(k,[2,81]),e(k,[2,82]),e([10,19,24,26,33,34,42,45,46,47,48,49,50,55,57],[2,83]),e(x,[2,4]),{9:65,16:n},{16:[2,8]},{1:[2,10]},{5:23,7:5,13:t,18:66,19:[2,12],20:16,21:24,22:33,23:34,25:17,27:18,28:19,29:20,30:21,31:22,32:r,37:s,39:o,40:a,51:l,52:c,54:d,58:h,72:u,73:g,74:f,75:p},e(m,[2,20]),{21:67,22:33,23:34,42:[1,68],72:u,73:g,74:f,75:p},{41:69,43:48,44:49,45:_,46:b,47:v,48:y,49:w,50:C},e(m,[2,35]),{44:70,49:w,50:C},e(L,[2,45],{43:71,45:_,46:b,47:v,48:y}),e(M,[2,46]),e(M,[2,47]),e(M,[2,48]),e(M,[2,49]),e(D,[2,50]),e(D,[2,51]),e(m,[2,27],{33:[1,72],34:[1,73]}),{38:[1,74]},{42:[1,75]},{42:[1,76]},{55:[1,77],57:[1,78]},{22:79,72:u,73:g,74:f},e(S,[2,16]),e(S,[2,17]),e(S,[2,18]),{10:[1,80]},{19:[2,13]},e(N,[2,38]),{21:81,22:33,23:34,72:u,73:g,74:f,75:p},{21:82,22:33,23:34,42:[1,83],72:u,73:g,74:f,75:p},e(L,[2,44],{43:84,45:_,46:b,47:v,48:y}),e(L,[2,43]),{22:85,72:u,73:g,74:f},{35:86,39:E},{21:88,22:33,23:34,72:u,73:g,74:f,75:p},e(m,[2,52],{42:[1,89]}),e(m,[2,54],{42:[1,91],53:[1,90]}),e(m,[2,58],{42:[1,92],56:[1,93]}),e(m,[2,62],{42:[1,95],53:[1,94]}),e(m,[2,66]),e(x,[2,5]),e(N,[2,40]),e(N,[2,39]),{21:96,22:33,23:34,72:u,73:g,74:f,75:p},e(L,[2,42]),e(m,[2,28],{34:[1,97]}),{36:[1,98]},{35:99,36:[2,32],39:E},e(m,[2,31]),e(m,[2,53]),e(m,[2,55]),e(m,[2,56],{53:[1,100]}),e(m,[2,59]),e(m,[2,60],{42:[1,101]}),e(m,[2,63]),e(m,[2,64],{53:[1,102]}),e(N,[2,41]),{35:103,39:E},e(m,[2,29]),{36:[2,33]},e(m,[2,57]),e(m,[2,61]),e(m,[2,65]),{36:[1,104]},e(m,[2,30])],defaultActions:{2:[2,1],4:[2,3],7:[2,6],8:[2,2],14:[2,9],41:[2,8],42:[2,10],66:[2,13],99:[2,33]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},I={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),13;case 1:return this.begin("type_directive"),14;case 2:return this.popState(),this.begin("arg_directive"),11;case 3:return this.popState(),this.popState(),16;case 4:return 15;case 5:case 6:break;case 7:return 10;case 8:break;case 9:case 10:return 17;case 11:return this.begin("struct"),34;case 12:return"EOF_IN_STRUCT";case 13:return"OPEN_IN_STRUCT";case 14:return this.popState(),36;case 15:break;case 16:return"MEMBER";case 17:return 32;case 18:return 58;case 19:return 51;case 20:return 52;case 21:return 54;case 22:return 37;case 23:return 38;case 24:this.begin("generic");break;case 25:this.popState();break;case 26:return"GENERICTYPE";case 27:this.begin("string");break;case 28:this.popState();break;case 29:return"STR";case 30:this.begin("bqstring");break;case 31:this.popState();break;case 32:return"BQUOTE_STR";case 33:this.begin("href");break;case 34:this.popState();break;case 35:return 57;case 36:this.begin("callback_name");break;case 37:this.popState();break;case 38:this.popState(),this.begin("callback_args");break;case 39:return 55;case 40:this.popState();break;case 41:return 56;case 42:case 43:case 44:case 45:return 53;case 46:case 47:return 46;case 48:case 49:return 48;case 50:return 47;case 51:return 45;case 52:return 49;case 53:return 50;case 54:return 26;case 55:return 33;case 56:return 70;case 57:return"DOT";case 58:return"PLUS";case 59:return 67;case 60:case 61:return"EQUALS";case 62:return 74;case 63:return"PUNCTUATION";case 64:return 73;case 65:return 72;case 66:return 69;case 67:return 19}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:class\b)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:$)/],conditions:{arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callback_args:{rules:[40,41],inclusive:!1},callback_name:{rules:[37,38,39],inclusive:!1},href:{rules:[34,35],inclusive:!1},struct:{rules:[12,13,14,15,16],inclusive:!1},generic:{rules:[25,26],inclusive:!1},bqstring:{rules:[31,32],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,17,18,19,20,21,22,23,24,27,30,33,36,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};function O(){this.yy={}}return T.lexer=I,O.prototype=T,T.Parser=O,new O}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/class/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return"g.classGroup text {\n fill: ".concat(e.nodeBorder,";\n fill: ").concat(e.classText,";\n stroke: none;\n font-family: ").concat(e.fontFamily,";\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.classTitle {\n font-weight: bolder;\n}\n.node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ").concat(e.nodeBorder,";\n stroke: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n}\n\ng.classGroup line {\n stroke: ").concat(e.nodeBorder,";\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ").concat(e.mainBkg,";\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ").concat(e.nodeBorder,";\n font-size: 10px;\n}\n\n.relation {\n stroke: ").concat(e.lineColor,";\n stroke-width: 1;\n fill: none;\n}\n\n.dashed-line{\n stroke-dasharray: 3;\n}\n\n#compositionStart, .composition {\n fill: ").concat(e.lineColor," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ").concat(e.lineColor," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ").concat(e.lineColor," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ").concat(e.lineColor," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: ").concat(e.lineColor," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: ").concat(e.lineColor," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: ").concat(e.mainBkg," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: ").concat(e.mainBkg," !important;\n stroke: ").concat(e.lineColor," !important;\n stroke-width: 1;\n}\n\n.edgeTerminals {\n font-size: 11px;\n}\n\n")}},"./src/diagrams/class/svgDraw.js":function(e,t,i){"use strict";i.r(t),i.d(t,"drawEdge",(function(){return l})),i.d(t,"drawClass",(function(){return c})),i.d(t,"parseMember",(function(){return d}));var n=i("d3"),r=i("./src/diagrams/class/classDb.js"),s=i("./src/utils.js"),o=i("./src/logger.js"),a=0,l=function(e,t,i,l){var c=function(e){switch(e){case r.relationType.AGGREGATION:return"aggregation";case r.relationType.EXTENSION:return"extension";case r.relationType.COMPOSITION:return"composition";case r.relationType.DEPENDENCY:return"dependency"}};t.points=t.points.filter((function(e){return!Number.isNaN(e.y)}));var d,h,u=t.points,g=Object(n.line)().x((function(e){return e.x})).y((function(e){return e.y})).curve(n.curveBasis),f=e.append("path").attr("d",g(u)).attr("id","edge"+a).attr("class","relation"),p="";l.arrowMarkerAbsolute&&(p=(p=(p=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),1==i.relation.lineType&&f.attr("class","relation dashed-line"),"none"!==i.relation.type1&&f.attr("marker-start","url("+p+"#"+c(i.relation.type1)+"Start)"),"none"!==i.relation.type2&&f.attr("marker-end","url("+p+"#"+c(i.relation.type2)+"End)");var m,_,b,v,y=t.points.length,w=s.default.calcLabelPosition(t.points);if(d=w.x,h=w.y,y%2!=0&&y>1){var C=s.default.calcCardinalityPosition("none"!==i.relation.type1,t.points,t.points[0]),S=s.default.calcCardinalityPosition("none"!==i.relation.type2,t.points,t.points[y-1]);o.log.debug("cardinality_1_point "+JSON.stringify(C)),o.log.debug("cardinality_2_point "+JSON.stringify(S)),m=C.x,_=C.y,b=S.x,v=S.y}if(void 0!==i.title){var k=e.append("g").attr("class","classLabel"),x=k.append("text").attr("class","label").attr("x",d).attr("y",h).attr("fill","red").attr("text-anchor","middle").text(i.title);window.label=x;var L=x.node().getBBox();k.insert("rect",":first-child").attr("class","box").attr("x",L.x-l.padding/2).attr("y",L.y-l.padding/2).attr("width",L.width+l.padding).attr("height",L.height+l.padding)}o.log.info("Rendering relation "+JSON.stringify(i)),void 0!==i.relationTitle1&&"none"!==i.relationTitle1&&e.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",m).attr("y",_).attr("fill","black").attr("font-size","6").text(i.relationTitle1),void 0!==i.relationTitle2&&"none"!==i.relationTitle2&&e.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",b).attr("y",v).attr("fill","black").attr("font-size","6").text(i.relationTitle2),a++},c=function(e,t,i){o.log.info("Rendering class "+t);var n,s=t.id,a={id:s,label:t.id,width:0,height:0},l=e.append("g").attr("id",Object(r.lookUpDomId)(s)).attr("class","classGroup");n=t.link?l.append("svg:a").attr("xlink:href",t.link).attr("target",t.linkTarget).append("text").attr("y",i.textHeight+i.padding).attr("x",0):l.append("text").attr("y",i.textHeight+i.padding).attr("x",0);var c=!0;t.annotations.forEach((function(e){var t=n.append("tspan").text("«"+e+"»");c||t.attr("dy",i.textHeight),c=!1}));var d=t.id;void 0!==t.type&&""!==t.type&&(d+="<"+t.type+">");var h=n.append("tspan").text(d).attr("class","title");c||h.attr("dy",i.textHeight);var u=n.node().getBBox().height,g=l.append("line").attr("x1",0).attr("y1",i.padding+u+i.dividerMargin/2).attr("y2",i.padding+u+i.dividerMargin/2),p=l.append("text").attr("x",i.padding).attr("y",u+i.dividerMargin+i.textHeight).attr("fill","white").attr("class","classText");c=!0,t.members.forEach((function(e){f(p,e,c,i),c=!1}));var m=p.node().getBBox(),_=l.append("line").attr("x1",0).attr("y1",i.padding+u+i.dividerMargin+m.height).attr("y2",i.padding+u+i.dividerMargin+m.height),b=l.append("text").attr("x",i.padding).attr("y",u+2*i.dividerMargin+m.height+i.textHeight).attr("fill","white").attr("class","classText");c=!0,t.methods.forEach((function(e){f(b,e,c,i),c=!1}));var v=l.node().getBBox(),y=" ";t.cssClasses.length>0&&(y+=t.cssClasses.join(" "));var w=l.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",v.width+2*i.padding).attr("height",v.height+i.padding+.5*i.dividerMargin).attr("class",y).node().getBBox().width;return n.node().childNodes.forEach((function(e){e.setAttribute("x",(w-e.getBBox().width)/2)})),t.tooltip&&n.insert("title").text(t.tooltip),g.attr("x2",w),_.attr("x2",w),a.width=w,a.height=v.height+i.padding+.5*i.dividerMargin,a},d=function(e){var t=e.match(/(\+|-|~|#)?(\w+)(~\w+~|\[\])?\s+(\w+)/),i=e.match(/^([+|\-|~|#])?(\w+) *\( *(.*)\) *(\*|\$)? *(\w*[~|[\]]*\s*\w*~?)$/);return t&&!i?h(t):i?u(i):g(e)},h=function(e){var t="";try{t=(e[1]?e[1].trim():"")+(e[2]?e[2].trim():"")+(e[3]?p(e[3].trim()):"")+" "+(e[4]?e[4].trim():"")}catch(i){t=e}return{displayText:t,cssStyle:""}},u=function(e){var t="",i="";try{var n=e[1]?e[1].trim():"",r=e[2]?e[2].trim():"",s=e[3]?p(e[3].trim()):"",o=e[4]?e[4].trim():"";i=n+r+"("+s+")"+(e[5]?" : "+p(e[5]).trim():""),t=m(o)}catch(t){i=e}return{displayText:i,cssStyle:t}},g=function(e){var t="",i="",n="",r=e.indexOf("("),s=e.indexOf(")");if(r>1&&s>r&&s<=e.length){var o="",a="",l=e.substring(0,1);l.match(/\w/)?a=e.substring(0,r).trim():(l.match(/\+|-|~|#/)&&(o=l),a=e.substring(1,r).trim());var c=e.substring(r+1,s),d=e.substring(s+1,1);i=m(d),t=o+a+"("+p(c.trim())+")",s<"".length&&""!==(n=e.substring(s+2).trim())&&(n=" : "+p(n))}else t=p(e);return{displayText:t,cssStyle:i}},f=function(e,t,i,n){var r=d(t),s=e.append("tspan").attr("x",n.padding).text(r.displayText);""!==r.cssStyle&&s.attr("style",r.cssStyle),i||s.attr("dy",n.textHeight)},p=function e(t){var i=t;return-1!=t.indexOf("~")?e(i=(i=i.replace("~","<")).replace("~",">")):i},m=function(e){switch(e){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}};t.default={drawClass:c,drawEdge:l,parseMember:d}},"./src/diagrams/common/common.js":function(e,t,i){"use strict";i.r(t),i.d(t,"getRows",(function(){return n})),i.d(t,"removeScript",(function(){return r})),i.d(t,"sanitizeText",(function(){return s})),i.d(t,"lineBreakRegex",(function(){return o})),i.d(t,"hasBreaks",(function(){return a})),i.d(t,"splitBreaks",(function(){return l}));var n=function(e){if(!e)return 1;var t=c(e);return(t=t.replace(/\\n/g,"#br#")).split("#br#")},r=function(e){for(var t="",i=0;i>=0;){if(!((i=e.indexOf("<script"))>=0)){t+=e,i=-1;break}t+=e.substr(0,i),(i=(e=e.substr(i+1)).indexOf("<\/script>"))>=0&&(i+=9,e=e.substr(i))}return t},s=function(e,t){var i=e,n=!0;if(!t.flowchart||!1!==t.flowchart.htmlLabels&&"false"!==t.flowchart.htmlLabels||(n=!1),n){var s=t.securityLevel;"antiscript"===s?i=r(i):"loose"!==s&&(i=(i=(i=c(i)).replace(/</g,"<").replace(/>/g,">")).replace(/=/g,"="),i=d(i))}return i},o=/<br\s*\/?>/gi,a=function(e){return/<br\s*[/]?>/gi.test(e)},l=function(e){return e.split(/<br\s*[/]?>/gi)},c=function(e){return e.replace(o,"#br#")},d=function(e){return e.replace(/#br#/g,"<br/>")};t.default={getRows:n,sanitizeText:s,hasBreaks:a,splitBreaks:l,lineBreakRegex:o,removeScript:r,getUrl:function(e){var t="";return e&&(t=(t=(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),t}}},"./src/diagrams/er/erDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return c}));var n=i("./src/logger.js"),r=i("./src/mermaidAPI.js"),s=i("./src/config.js"),o={},a=[],l="",c=function(e,t,i){r.default.parseDirective(this,e,t,i)},d=function(e){return void 0===o[e]&&(o[e]={attributes:[]},n.log.info("Added new entity :",e)),o[e]};t.default={Cardinality:{ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE"},Identification:{NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},parseDirective:c,getConfig:function(){return s.getConfig().er},addEntity:d,addAttributes:function(e,t){var i,r=d(e);for(i=t.length-1;i>=0;i--)r.attributes.push(t[i]),n.log.debug("Added attribute ",t[i].attributeName)},getEntities:function(){return o},addRelationship:function(e,t,i,r){var s={entityA:e,roleA:t,entityB:i,relSpec:r};a.push(s),n.log.debug("Added new relationship :",s)},getRelationships:function(){return a},clear:function(){o={},a=[],l=""},setTitle:function(e){l=e},getTitle:function(){return l}}},"./src/diagrams/er/erMarkers.js":function(e,t,i){"use strict";i.r(t);var n={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END"};t.default={ERMarkers:n,insertMarkers:function(e,t){var i;e.append("defs").append("marker").attr("id",n.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),e.append("defs").append("marker").attr("id",n.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),(i=e.append("defs").append("marker").attr("id",n.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",t.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M9,0 L9,18"),(i=e.append("defs").append("marker").attr("id",n.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto")).append("circle").attr("stroke",t.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),i.append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M21,0 L21,18"),e.append("defs").append("marker").attr("id",n.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),e.append("defs").append("marker").attr("id",n.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),(i=e.append("defs").append("marker").attr("id",n.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",t.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),(i=e.append("defs").append("marker").attr("id",n.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto")).append("circle").attr("stroke",t.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),i.append("path").attr("stroke",t.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}}},"./src/diagrams/er/erRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return m})),i.d(t,"draw",(function(){return v}));var n=i("graphlib"),r=i.n(n),s=i("d3"),o=i("./src/diagrams/er/erDb.js"),a=i("./src/diagrams/er/parser/erDiagram.jison"),l=i.n(a),c=i("dagre"),d=i.n(c),h=i("./src/config.js"),u=i("./src/logger.js"),g=i("./src/diagrams/er/erMarkers.js"),f=i("./src/utils.js"),p={},m=function(e){for(var t=Object.keys(e),i=0;i<t.length;i++)p[t[i]]=e[t[i]]},_=function(e){return(e.entityA+e.roleA+e.entityB).replace(/\s/g,"")},b=0,v=function(e,t){u.log.info("Drawing ER diagram"),o.default.clear();var i=l.a.parser;i.yy=o.default;try{i.parse(e)}catch(e){u.log.debug("Parsing failed")}var n,a=Object(s.select)("[id='".concat(t,"']"));g.default.insertMarkers(a,p),n=new r.a.Graph({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:p.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}}));var c,m,v=function(e,t,i){var n;return Object.keys(t).forEach((function(r){var s=e.append("g").attr("id",r);n=void 0===n?r:n;var o="entity-"+r,a=s.append("text").attr("class","er entityLabel").attr("id",o).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("style","font-family: "+Object(h.getConfig)().fontFamily+"; font-size: "+p.fontSize+"px").text(r),l=function(e,t,i){var n=p.entityPadding/3,r=p.entityPadding/3,s=.85*p.fontSize,o=t.node().getBBox(),a=[],l=0,c=0,d=o.height+2*n,u=1;i.forEach((function(i){var r="".concat(t.node().id,"-attr-").concat(u),o=e.append("text").attr("class","er entityLabel").attr("id","".concat(r,"-type")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+Object(h.getConfig)().fontFamily+"; font-size: "+s+"px").text(i.attributeType),g=e.append("text").attr("class","er entityLabel").attr("id","".concat(r,"-name")).attr("x",0).attr("y",0).attr("dominant-baseline","middle").attr("text-anchor","left").attr("style","font-family: "+Object(h.getConfig)().fontFamily+"; font-size: "+s+"px").text(i.attributeName);a.push({tn:o,nn:g});var f=o.node().getBBox(),p=g.node().getBBox();l=Math.max(l,f.width),c=Math.max(c,p.width),d+=Math.max(f.height,p.height)+2*n,u+=1}));var g={width:Math.max(p.minEntityWidth,Math.max(o.width+2*p.entityPadding,l+c+4*r)),height:i.length>0?d:Math.max(p.minEntityHeight,o.height+2*p.entityPadding)},f=Math.max(0,g.width-(l+c)-4*r);if(i.length>0){t.attr("transform","translate("+g.width/2+","+(n+o.height/2)+")");var m=o.height+2*n,_="attributeBoxOdd";a.forEach((function(t){var i=m+n+Math.max(t.tn.node().getBBox().height,t.nn.node().getBBox().height)/2;t.tn.attr("transform","translate("+r+","+i+")");var s=e.insert("rect","#"+t.tn.node().id).attr("class","er ".concat(_)).attr("fill",p.fill).attr("fill-opacity","100%").attr("stroke",p.stroke).attr("x",0).attr("y",m).attr("width",l+2*r+f/2).attr("height",t.tn.node().getBBox().height+2*n);t.nn.attr("transform","translate("+(parseFloat(s.attr("width"))+r)+","+i+")"),e.insert("rect","#"+t.nn.node().id).attr("class","er ".concat(_)).attr("fill",p.fill).attr("fill-opacity","100%").attr("stroke",p.stroke).attr("x","".concat(s.attr("x")+s.attr("width"))).attr("y",m).attr("width",c+2*r+f/2).attr("height",t.nn.node().getBBox().height+2*n),m+=Math.max(t.tn.node().getBBox().height,t.nn.node().getBBox().height)+2*n,_="attributeBoxOdd"==_?"attributeBoxEven":"attributeBoxOdd"}))}else g.height=Math.max(p.minEntityHeight,d),t.attr("transform","translate("+g.width/2+","+g.height/2+")");return g}(s,a,t[r].attributes),c=l.width,d=l.height,u=s.insert("rect","#"+o).attr("class","er entityBox").attr("fill",p.fill).attr("fill-opacity","100%").attr("stroke",p.stroke).attr("x",0).attr("y",0).attr("width",c).attr("height",d).node().getBBox();i.setNode(r,{width:u.width,height:u.height,shape:"rect",id:r})})),n}(a,o.default.getEntities(),n),y=function(e,t){return e.forEach((function(e){t.setEdge(e.entityA,e.entityB,{relationship:e},_(e))})),e}(o.default.getRelationships(),n);d.a.layout(n),c=a,(m=n).nodes().forEach((function(e){void 0!==e&&void 0!==m.node(e)&&c.select("#"+e).attr("transform","translate("+(m.node(e).x-m.node(e).width/2)+","+(m.node(e).y-m.node(e).height/2)+" )")})),y.forEach((function(e){!function(e,t,i,n){b++;var r=i.edge(t.entityA,t.entityB,_(t)),a=Object(s.line)().x((function(e){return e.x})).y((function(e){return e.y})).curve(s.curveBasis),l=e.insert("path","#"+n).attr("class","er relationshipLine").attr("d",a(r.points)).attr("stroke",p.stroke).attr("fill","none");t.relSpec.relType===o.default.Identification.NON_IDENTIFYING&&l.attr("stroke-dasharray","8,8");var c="";switch(p.arrowMarkerAbsolute&&(c=(c=(c=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),t.relSpec.cardA){case o.default.Cardinality.ZERO_OR_ONE:l.attr("marker-end","url("+c+"#"+g.default.ERMarkers.ZERO_OR_ONE_END+")");break;case o.default.Cardinality.ZERO_OR_MORE:l.attr("marker-end","url("+c+"#"+g.default.ERMarkers.ZERO_OR_MORE_END+")");break;case o.default.Cardinality.ONE_OR_MORE:l.attr("marker-end","url("+c+"#"+g.default.ERMarkers.ONE_OR_MORE_END+")");break;case o.default.Cardinality.ONLY_ONE:l.attr("marker-end","url("+c+"#"+g.default.ERMarkers.ONLY_ONE_END+")")}switch(t.relSpec.cardB){case o.default.Cardinality.ZERO_OR_ONE:l.attr("marker-start","url("+c+"#"+g.default.ERMarkers.ZERO_OR_ONE_START+")");break;case o.default.Cardinality.ZERO_OR_MORE:l.attr("marker-start","url("+c+"#"+g.default.ERMarkers.ZERO_OR_MORE_START+")");break;case o.default.Cardinality.ONE_OR_MORE:l.attr("marker-start","url("+c+"#"+g.default.ERMarkers.ONE_OR_MORE_START+")");break;case o.default.Cardinality.ONLY_ONE:l.attr("marker-start","url("+c+"#"+g.default.ERMarkers.ONLY_ONE_START+")")}var d=l.node().getTotalLength(),u=l.node().getPointAtLength(.5*d),f="rel"+b,m=e.append("text").attr("class","er relationshipLabel").attr("id",f).attr("x",u.x).attr("y",u.y).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("style","font-family: "+Object(h.getConfig)().fontFamily+"; font-size: "+p.fontSize+"px").text(t.roleA).node().getBBox();e.insert("rect","#"+f).attr("class","er relationshipLabelBox").attr("x",u.x-m.width/2).attr("y",u.y-m.height/2).attr("width",m.width).attr("height",m.height).attr("fill","white").attr("fill-opacity","85%")}(a,e,n,v)}));var w=p.diagramPadding,C=a.node().getBBox(),S=C.width+2*w,k=C.height+2*w;Object(f.configureSvgSize)(a,k,S,p.useMaxWidth),a.attr("viewBox","".concat(C.x-w," ").concat(C.y-w," ").concat(S," ").concat(k))};t.default={setConf:m,draw:v}},"./src/diagrams/er/parser/erDiagram.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,2],i=[1,5],n=[6,9,11,23,37],r=[1,17],s=[1,20],o=[1,25],a=[1,26],l=[1,27],c=[1,28],d=[1,37],h=[23,34,35],u=[4,6,9,11,23,37],g=[30,31,32,33],f=[22,27],p={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,entityName:17,relSpec:18,role:19,BLOCK_START:20,attributes:21,BLOCK_STOP:22,ALPHANUM:23,attribute:24,attributeType:25,attributeName:26,ATTRIBUTE_WORD:27,cardinality:28,relType:29,ZERO_OR_ONE:30,ZERO_OR_MORE:31,ONE_OR_MORE:32,ONLY_ONE:33,NON_IDENTIFYING:34,IDENTIFYING:35,WORD:36,open_directive:37,type_directive:38,arg_directive:39,close_directive:40,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",20:"BLOCK_START",22:"BLOCK_STOP",23:"ALPHANUM",27:"ATTRIBUTE_WORD",30:"ZERO_OR_ONE",31:"ZERO_OR_MORE",32:"ONE_OR_MORE",33:"ONLY_ONE",34:"NON_IDENTIFYING",35:"IDENTIFYING",36:"WORD",37:"open_directive",38:"type_directive",39:"arg_directive",40:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[25,1],[26,1],[18,3],[28,1],[28,1],[28,1],[28,1],[29,1],[29,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 1:break;case 3:this.$=[];break;case 4:s[a-1].push(s[a]),this.$=s[a-1];break;case 5:case 6:this.$=s[a];break;case 7:case 8:this.$=[];break;case 12:n.addEntity(s[a-4]),n.addEntity(s[a-2]),n.addRelationship(s[a-4],s[a],s[a-2],s[a-3]);break;case 13:n.addEntity(s[a-3]),n.addAttributes(s[a-3],s[a-1]);break;case 14:n.addEntity(s[a-2]);break;case 15:n.addEntity(s[a]);break;case 16:this.$=s[a];break;case 17:this.$=[s[a]];break;case 18:s[a].push(s[a-1]),this.$=s[a];break;case 19:this.$={attributeType:s[a-1],attributeName:s[a]};break;case 20:case 21:this.$=s[a];break;case 22:this.$={cardA:s[a],relType:s[a-1],cardB:s[a-2]};break;case 23:this.$=n.Cardinality.ZERO_OR_ONE;break;case 24:this.$=n.Cardinality.ZERO_OR_MORE;break;case 25:this.$=n.Cardinality.ONE_OR_MORE;break;case 26:this.$=n.Cardinality.ONLY_ONE;break;case 27:this.$=n.Identification.NON_IDENTIFYING;break;case 28:this.$=n.Identification.IDENTIFYING;break;case 29:this.$=s[a].replace(/"/g,"");break;case 30:this.$=s[a];break;case 31:n.parseDirective("%%{","open_directive");break;case 32:n.parseDirective(s[a],"type_directive");break;case 33:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 34:n.parseDirective("}%%","close_directive","er")}},table:[{3:1,4:t,7:3,12:4,37:i},{1:[3]},e(n,[2,3],{5:6}),{3:7,4:t,7:3,12:4,37:i},{13:8,38:[1,9]},{38:[2,31]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:r,37:i},{1:[2,2]},{14:18,15:[1,19],40:s},e([15,40],[2,32]),e(n,[2,8],{1:[2,1]}),e(n,[2,4]),{7:15,10:21,12:4,17:16,23:r,37:i},e(n,[2,6]),e(n,[2,7]),e(n,[2,11]),e(n,[2,15],{18:22,28:24,20:[1,23],30:o,31:a,32:l,33:c}),e([6,9,11,15,20,23,30,31,32,33,37],[2,16]),{11:[1,29]},{16:30,39:[1,31]},{11:[2,34]},e(n,[2,5]),{17:32,23:r},{21:33,22:[1,34],24:35,25:36,27:d},{29:38,34:[1,39],35:[1,40]},e(h,[2,23]),e(h,[2,24]),e(h,[2,25]),e(h,[2,26]),e(u,[2,9]),{14:41,40:s},{40:[2,33]},{15:[1,42]},{22:[1,43]},e(n,[2,14]),{21:44,22:[2,17],24:35,25:36,27:d},{26:45,27:[1,46]},{27:[2,20]},{28:47,30:o,31:a,32:l,33:c},e(g,[2,27]),e(g,[2,28]),{11:[1,48]},{19:49,23:[1,51],36:[1,50]},e(n,[2,13]),{22:[2,18]},e(f,[2,19]),e(f,[2,21]),{23:[2,22]},e(u,[2,10]),e(n,[2,12]),e(n,[2,29]),e(n,[2,30])],defaultActions:{5:[2,31],7:[2,2],20:[2,34],31:[2,33],37:[2,20],44:[2,18],47:[2,22]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},m={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),37;case 1:return this.begin("type_directive"),38;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),40;case 4:return 39;case 5:case 6:break;case 7:return 11;case 8:break;case 9:return 9;case 10:return 36;case 11:return 4;case 12:return this.begin("block"),20;case 13:break;case 14:return 27;case 15:break;case 16:return this.popState(),22;case 17:return t.yytext[0];case 18:return 30;case 19:return 31;case 20:return 32;case 21:return 33;case 22:return 30;case 23:return 31;case 24:return 32;case 25:return 34;case 26:return 35;case 27:case 28:return 34;case 29:return 23;case 30:return t.yytext[0];case 31:return 6}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:\s+)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\|o\b)/i,/^(?:\}o\b)/i,/^(?:\}\|)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},block:{rules:[13,14,15,16,17],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,18,19,20,21,22,23,24,25,26,27,28,29,30,31],inclusive:!0}}};function _(){this.yy={}}return p.lexer=m,_.prototype=p,p.Parser=_,new _}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/er/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return"\n .entityBox {\n fill: ".concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n }\n\n .attributeBoxOdd {\n fill: #ffffff;\n stroke: ").concat(e.nodeBorder,";\n }\n\n .attributeBoxEven {\n fill: #f2f2f2;\n stroke: ").concat(e.nodeBorder,";\n }\n\n .relationshipLabelBox {\n fill: ").concat(e.tertiaryColor,";\n opacity: 0.7;\n background-color: ").concat(e.tertiaryColor,";\n rect {\n opacity: 0.5;\n }\n }\n\n .relationshipLine {\n stroke: ").concat(e.lineColor,";\n }\n")}},"./src/diagrams/flowchart/flowChartShapes.js":function(e,t,i){"use strict";i.r(t),i.d(t,"addToRender",(function(){return m})),i.d(t,"addToRenderV2",(function(){return _}));var n=i("dagre-d3"),r=i.n(n);function s(e,t,i){var n=.9*(t.width+t.height),s=[{x:n/2,y:0},{x:n,y:-n/2},{x:n/2,y:-n},{x:0,y:-n/2}],o=b(e,n,n,s);return i.intersect=function(e){return r.a.intersect.polygon(i,s,e)},o}function o(e,t,i){var n=t.height,s=n/4,o=t.width+2*s,a=[{x:s,y:0},{x:o-s,y:0},{x:o,y:-n/2},{x:o-s,y:-n},{x:s,y:-n},{x:0,y:-n/2}],l=b(e,o,n,a);return i.intersect=function(e){return r.a.intersect.polygon(i,a,e)},l}function a(e,t,i){var n=t.width,s=t.height,o=[{x:-s/2,y:0},{x:n,y:0},{x:n,y:-s},{x:-s/2,y:-s},{x:0,y:-s/2}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function l(e,t,i){var n=t.width,s=t.height,o=[{x:-2*s/6,y:0},{x:n-s/6,y:0},{x:n+2*s/6,y:-s},{x:s/6,y:-s}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function c(e,t,i){var n=t.width,s=t.height,o=[{x:2*s/6,y:0},{x:n+s/6,y:0},{x:n-2*s/6,y:-s},{x:-s/6,y:-s}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function d(e,t,i){var n=t.width,s=t.height,o=[{x:-2*s/6,y:0},{x:n+2*s/6,y:0},{x:n-s/6,y:-s},{x:s/6,y:-s}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function h(e,t,i){var n=t.width,s=t.height,o=[{x:s/6,y:0},{x:n-s/6,y:0},{x:n+2*s/6,y:-s},{x:-2*s/6,y:-s}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function u(e,t,i){var n=t.width,s=t.height,o=[{x:0,y:0},{x:n+s/2,y:0},{x:n,y:-s/2},{x:n+s/2,y:-s},{x:0,y:-s}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function g(e,t,i){var n=t.height,s=t.width+n/4,o=e.insert("rect",":first-child").attr("rx",n/2).attr("ry",n/2).attr("x",-s/2).attr("y",-n/2).attr("width",s).attr("height",n);return i.intersect=function(e){return r.a.intersect.rect(i,e)},o}function f(e,t,i){var n=t.width,s=t.height,o=[{x:0,y:0},{x:n,y:0},{x:n,y:-s},{x:0,y:-s},{x:0,y:0},{x:-8,y:0},{x:n+8,y:0},{x:n+8,y:-s},{x:-8,y:-s},{x:-8,y:0}],a=b(e,n,s,o);return i.intersect=function(e){return r.a.intersect.polygon(i,o,e)},a}function p(e,t,i){var n=t.width,s=n/2,o=s/(2.5+n/50),a=t.height+o,l="M 0,"+o+" a "+s+","+o+" 0,0,0 "+n+" 0 a "+s+","+o+" 0,0,0 "+-n+" 0 l 0,"+a+" a "+s+","+o+" 0,0,0 "+n+" 0 l 0,"+-a,c=e.attr("label-offset-y",o).insert("path",":first-child").attr("d",l).attr("transform","translate("+-n/2+","+-(a/2+o)+")");return i.intersect=function(e){var t=r.a.intersect.rect(i,e),n=t.x-i.x;if(0!=s&&(Math.abs(n)<i.width/2||Math.abs(n)==i.width/2&&Math.abs(t.y-i.y)>i.height/2-o)){var a=o*o*(1-n*n/(s*s));0!=a&&(a=Math.sqrt(a)),a=o-a,e.y-i.y>0&&(a=-a),t.y+=a}return t},c}function m(e){e.shapes().question=s,e.shapes().hexagon=o,e.shapes().stadium=g,e.shapes().subroutine=f,e.shapes().cylinder=p,e.shapes().rect_left_inv_arrow=a,e.shapes().lean_right=l,e.shapes().lean_left=c,e.shapes().trapezoid=d,e.shapes().inv_trapezoid=h,e.shapes().rect_right_inv_arrow=u}function _(e){e({question:s}),e({hexagon:o}),e({stadium:g}),e({subroutine:f}),e({cylinder:p}),e({rect_left_inv_arrow:a}),e({lean_right:l}),e({lean_left:c}),e({trapezoid:d}),e({inv_trapezoid:h}),e({rect_right_inv_arrow:u})}function b(e,t,i,n){return e.insert("polygon",":first-child").attr("points",n.map((function(e){return e.x+","+e.y})).join(" ")).attr("transform","translate("+-t/2+","+i/2+")")}t.default={addToRender:m,addToRenderV2:_}},"./src/diagrams/flowchart/flowDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return S})),i.d(t,"lookUpDomId",(function(){return k})),i.d(t,"addVertex",(function(){return x})),i.d(t,"addSingleLink",(function(){return L})),i.d(t,"addLink",(function(){return M})),i.d(t,"updateLinkInterpolate",(function(){return D})),i.d(t,"updateLink",(function(){return N})),i.d(t,"addClass",(function(){return E})),i.d(t,"setDirection",(function(){return T})),i.d(t,"setClass",(function(){return I})),i.d(t,"setLink",(function(){return O})),i.d(t,"getTooltip",(function(){return A})),i.d(t,"setClickEvent",(function(){return R})),i.d(t,"bindFunctions",(function(){return P})),i.d(t,"getDirection",(function(){return F})),i.d(t,"getVertices",(function(){return B})),i.d(t,"getEdges",(function(){return W})),i.d(t,"getClasses",(function(){return Y})),i.d(t,"clear",(function(){return j})),i.d(t,"setGen",(function(){return V})),i.d(t,"defaultStyle",(function(){return z})),i.d(t,"addSubGraph",(function(){return U})),i.d(t,"getDepthFirstPos",(function(){return Z})),i.d(t,"indexNodes",(function(){return J})),i.d(t,"getSubGraphs",(function(){return Q})),i.d(t,"firstGraph",(function(){return X}));var n=i("d3"),r=i("./src/utils.js"),s=i("./src/config.js"),o=i("./src/diagrams/common/common.js"),a=i("./src/mermaidAPI.js"),l=i("./src/logger.js");function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var d,h,u=0,g=s.getConfig(),f={},p=[],m=[],_=[],b={},v={},y=0,w=!0,C=[],S=function(e,t,i){a.default.parseDirective(this,e,t,i)},k=function(e){for(var t=Object.keys(f),i=0;i<t.length;i++)if(f[t[i]].id===e)return f[t[i]].domId;return e},x=function(e,t,i,n,r){var a,l=e;void 0!==l&&0!==l.trim().length&&(void 0===f[l]&&(f[l]={id:l,domId:"flowchart-"+l+"-"+u,styles:[],classes:[]}),u++,void 0!==t?(g=s.getConfig(),'"'===(a=o.default.sanitizeText(t.trim(),g))[0]&&'"'===a[a.length-1]&&(a=a.substring(1,a.length-1)),f[l].text=a):void 0===f[l].text&&(f[l].text=e),void 0!==i&&(f[l].type=i),null!=n&&n.forEach((function(e){f[l].styles.push(e)})),null!=r&&r.forEach((function(e){f[l].classes.push(e)})))},L=function(e,t,i,n){var r={start:e,end:t,type:void 0,text:""};void 0!==(n=i.text)&&(r.text=o.default.sanitizeText(n.trim(),g),'"'===r.text[0]&&'"'===r.text[r.text.length-1]&&(r.text=r.text.substring(1,r.text.length-1))),void 0!==i&&(r.type=i.type,r.stroke=i.stroke,r.length=i.length),p.push(r)},M=function(e,t,i,n){var r,s;for(r=0;r<e.length;r++)for(s=0;s<t.length;s++)L(e[r],t[s],i,n)},D=function(e,t){e.forEach((function(e){"default"===e?p.defaultInterpolate=t:p[e].interpolate=t}))},N=function(e,t){e.forEach((function(e){"default"===e?p.defaultStyle=t:(-1===r.default.isSubstringInArray("fill",t)&&t.push("fill:none"),p[e].style=t)}))},E=function(e,t){void 0===m[e]&&(m[e]={id:e,styles:[],textStyles:[]}),null!=t&&t.forEach((function(t){if(t.match("color")){var i=t.replace("fill","bgFill").replace("color","fill");m[e].textStyles.push(i)}m[e].styles.push(t)}))},T=function(e){(d=e).match(/.*</)&&(d="RL"),d.match(/.*\^/)&&(d="BT"),d.match(/.*>/)&&(d="LR"),d.match(/.*v/)&&(d="TB")},I=function(e,t){e.split(",").forEach((function(e){var i=e;void 0!==f[i]&&f[i].classes.push(t),void 0!==b[i]&&b[i].classes.push(t)}))},O=function(e,t,i){e.split(",").forEach((function(e){void 0!==f[e]&&(f[e].link=r.default.formatUrl(t,g),f[e].linkTarget=i)})),I(e,"clickable")},A=function(e){return v[e]},R=function(e,t,i){e.split(",").forEach((function(e){!function(e,t,i){var n=k(e);if("loose"===s.getConfig().securityLevel&&void 0!==t){var o=[];if("string"==typeof i){o=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var a=0;a<o.length;a++){var l=o[a].trim();'"'===l.charAt(0)&&'"'===l.charAt(l.length-1)&&(l=l.substr(1,l.length-2)),o[a]=l}}0===o.length&&o.push(e),void 0!==f[e]&&(f[e].haveCallback=!0,C.push((function(){var e=document.querySelector('[id="'.concat(n,'"]'));null!==e&&e.addEventListener("click",(function(){var e;r.default.runFunc.apply(r.default,[t].concat(function(e){if(Array.isArray(e)){for(var t=0,i=new Array(e.length);t<e.length;t++)i[t]=e[t];return i}}(e=o)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()))}),!1)})))}}(e,t,i)})),I(e,"clickable")},P=function(e){C.forEach((function(t){t(e)}))},F=function(){return d.trim()},B=function(){return f},W=function(){return p},Y=function(){return m},H=function(e){var t=Object(n.select)(".mermaidTooltip");null===(t._groups||t)[0][0]&&(t=Object(n.select)("body").append("div").attr("class","mermaidTooltip").style("opacity",0)),Object(n.select)(e).select("svg").selectAll("g.node").on("mouseover",(function(){var e=Object(n.select)(this);if(null!==e.attr("title")){var i=this.getBoundingClientRect();t.transition().duration(200).style("opacity",".9"),t.html(e.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.top-14+document.body.scrollTop+"px"),e.classed("hover",!0)}})).on("mouseout",(function(){t.transition().duration(500).style("opacity",0),Object(n.select)(this).classed("hover",!1)}))};C.push(H);var j=function(e){f={},m={},p=[],(C=[]).push(H),_=[],b={},y=0,v=[],w=!0,h=e||"gen-1"},V=function(e){h=e||"gen-1"},z=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},U=function(e,t,i){var n=e.trim(),r=i;e===i&&i.match(/\s/)&&(n=void 0);var s,a,d,u=[];if(s=u.concat.apply(u,t),a={boolean:{},number:{},string:{}},d=[],u=s.filter((function(e){var t=c(e);return""!==e.trim()&&(t in a?!a[t].hasOwnProperty(e)&&(a[t][e]=!0):!(d.indexOf(e)>=0)&&d.push(e))})),"gen-1"===h){l.log.warn("LOOKING UP");for(var f=0;f<u.length;f++)u[f]=k(u[f])}n=n||"subGraph"+y,r=r||"",r=o.default.sanitizeText(r,g),y+=1;var p={id:n,nodes:u,title:r.trim(),classes:[]};return l.log.info("Adding",p.id,p.nodes),p.nodes=te(p,_).nodes,_.push(p),b[n]=p,n},$=function(e){for(var t=0;t<_.length;t++)if(_[t].id===e)return t;return-1},K=-1,q=[],G=function e(t,i){var n=_[i].nodes;if(!((K+=1)>2e3)){if(q[K]=i,_[i].id===t)return{result:!0,count:0};for(var r=0,s=1;r<n.length;){var o=$(n[r]);if(o>=0){var a=e(t,o);if(a.result)return{result:!0,count:s+a.count};s+=a.count}r+=1}return{result:!1,count:s}}},Z=function(e){return q[e]},J=function(){K=-1,_.length>0&&G("none",_.length-1)},Q=function(){return _},X=function(){return!!w&&(w=!1,!0)},ee=function(e,t){var i=!1;return e.forEach((function(e){e.nodes.indexOf(t)>=0&&(i=!0)})),i},te=function(e,t){var i=[];return e.nodes.forEach((function(n,r){ee(t,n)||i.push(e.nodes[r])})),{nodes:i}};t.default={parseDirective:S,defaultConfig:function(){return s.defaultConfig.flowchart},addVertex:x,lookUpDomId:k,addLink:M,updateLinkInterpolate:D,updateLink:N,addClass:E,setDirection:T,setClass:I,setTooltip:function(e,t){e.split(",").forEach((function(e){void 0!==t&&(v["gen-1"===h?k(e):e]=o.default.sanitizeText(t,g))}))},getTooltip:A,setClickEvent:R,setLink:O,bindFunctions:P,getDirection:F,getVertices:B,getEdges:W,getClasses:Y,clear:j,setGen:V,defaultStyle:z,addSubGraph:U,getDepthFirstPos:Z,indexNodes:J,getSubGraphs:Q,destructLink:function(e,t){var i,n=function(e){var t=e.trim(),i=t.slice(0,-1),n="arrow_open";switch(t.slice(-1)){case"x":n="arrow_cross","x"===t[0]&&(n="double_"+n,i=i.slice(1));break;case">":n="arrow_point","<"===t[0]&&(n="double_"+n,i=i.slice(1));break;case"o":n="arrow_circle","o"===t[0]&&(n="double_"+n,i=i.slice(1))}var r="normal",s=i.length-1;"="===i[0]&&(r="thick");var o=function(e,t){for(var i=t.length,n=0,r=0;r<i;++r)"."===t[r]&&++n;return n}(0,i);return o&&(r="dotted",s=o),{type:n,stroke:r,length:s}}(e);if(t){if((i=function(e){var t=e.trim(),i="arrow_open";switch(t[0]){case"<":i="arrow_point",t=t.slice(1);break;case"x":i="arrow_cross",t=t.slice(1);break;case"o":i="arrow_circle",t=t.slice(1)}var n="normal";return-1!==t.indexOf("=")&&(n="thick"),-1!==t.indexOf(".")&&(n="dotted"),{type:i,stroke:n}}(t)).stroke!==n.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=n.type;else{if(i.type!==n.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=n.length,i}return n},lex:{firstGraph:X},exists:ee,makeUniq:te}},"./src/diagrams/flowchart/flowRenderer-v2.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return _})),i.d(t,"addVertices",(function(){return b})),i.d(t,"addEdges",(function(){return v})),i.d(t,"getClasses",(function(){return y})),i.d(t,"draw",(function(){return w}));var n=i("graphlib"),r=i.n(n),s=i("d3"),o=i("./src/diagrams/flowchart/flowDb.js"),a=i("./src/diagrams/flowchart/parser/flow.jison"),l=i.n(a),c=i("./src/config.js"),d=i("./src/dagre-wrapper/index.js"),h=i("dagre-d3/lib/label/add-html-label.js"),u=i.n(h),g=i("./src/logger.js"),f=i("./src/diagrams/common/common.js"),p=i("./src/utils.js"),m={},_=function(e){for(var t=Object.keys(e),i=0;i<t.length;i++)m[t[i]]=e[t[i]]},b=function(e,t,i){var n=Object(s.select)('[id="'.concat(i,'"]'));Object.keys(e).forEach((function(i){var r=e[i],s="default";r.classes.length>0&&(s=r.classes.join(" "));var a,l=Object(p.getStylesFromArray)(r.styles),d=void 0!==r.text?r.text:r.id;if(Object(c.getConfig)().flowchart.htmlLabels){var h={label:d.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(e){return"<i class='".concat(e.replace(":"," "),"'></i>")}))};(a=u()(n,h).node()).parentNode.removeChild(a)}else{var m=document.createElementNS("http://www.w3.org/2000/svg","text");m.setAttribute("style",l.labelStyle.replace("color:","fill:"));for(var _=d.split(f.default.lineBreakRegex),b=0;b<_.length;b++){var v=document.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=_[b],m.appendChild(v)}a=m}var y=0,w="";switch(r.type){case"round":y=5,w="rect";break;case"square":w="rect";break;case"diamond":w="question";break;case"hexagon":w="hexagon";break;case"odd":w="rect_left_inv_arrow";break;case"lean_right":w="lean_right";break;case"lean_left":w="lean_left";break;case"trapezoid":w="trapezoid";break;case"inv_trapezoid":w="inv_trapezoid";break;case"odd_right":w="rect_left_inv_arrow";break;case"circle":w="circle";break;case"ellipse":w="ellipse";break;case"stadium":w="stadium";break;case"subroutine":w="subroutine";break;case"cylinder":w="cylinder";break;case"group":w="rect";break;default:w="rect"}t.setNode(r.id,{labelStyle:l.labelStyle,shape:w,labelText:d,rx:y,ry:y,class:s,style:l.style,id:r.id,link:r.link,linkTarget:r.linkTarget,tooltip:o.default.getTooltip(r.id)||"",domId:o.default.lookUpDomId(r.id),haveCallback:r.haveCallback,width:"group"===r.type?500:void 0,type:r.type,padding:Object(c.getConfig)().flowchart.padding}),g.log.info("setNode",{labelStyle:l.labelStyle,shape:w,labelText:d,rx:y,ry:y,class:s,style:l.style,id:r.id,domId:o.default.lookUpDomId(r.id),width:"group"===r.type?500:void 0,type:r.type,padding:Object(c.getConfig)().flowchart.padding})}))},v=function(e,t){var i,n,r=0;if(void 0!==e.defaultStyle){var o=Object(p.getStylesFromArray)(e.defaultStyle);i=o.style,n=o.labelStyle}e.forEach((function(o){r++;var a="L-"+o.start+"-"+o.end,l="LS-"+o.start,c="LE-"+o.end,d={style:"",labelStyle:""};switch(d.minlen=o.length||1,"arrow_open"===o.type?d.arrowhead="none":d.arrowhead="normal",d.arrowTypeStart="arrow_open",d.arrowTypeEnd="arrow_open",o.type){case"double_arrow_cross":d.arrowTypeStart="arrow_cross";case"arrow_cross":d.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":d.arrowTypeStart="arrow_point";case"arrow_point":d.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":d.arrowTypeStart="arrow_circle";case"arrow_circle":d.arrowTypeEnd="arrow_circle"}var h="",u="";switch(o.stroke){case"normal":h="fill:none;",void 0!==i&&(h=i),void 0!==n&&(u=n),d.thickness="normal",d.pattern="solid";break;case"dotted":d.thickness="normal",d.pattern="dotted",d.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":d.thickness="thick",d.pattern="solid",d.style="stroke-width: 3.5px;fill:none;"}if(void 0!==o.style){var g=Object(p.getStylesFromArray)(o.style);h=g.style,u=g.labelStyle}d.style=d.style+=h,d.labelStyle=d.labelStyle+=u,void 0!==o.interpolate?d.curve=Object(p.interpolateToCurve)(o.interpolate,s.curveLinear):void 0!==e.defaultInterpolate?d.curve=Object(p.interpolateToCurve)(e.defaultInterpolate,s.curveLinear):d.curve=Object(p.interpolateToCurve)(m.curve,s.curveLinear),void 0===o.text?void 0!==o.style&&(d.arrowheadStyle="fill: #333"):(d.arrowheadStyle="fill: #333",d.labelpos="c"),d.labelType="text",d.label=o.text.replace(f.default.lineBreakRegex,"\n"),void 0===o.style&&(d.style=d.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),d.labelStyle=d.labelStyle.replace("color:","fill:"),d.id=a,d.classes="flowchart-link "+l+" "+c,t.setEdge(o.start,o.end,d,r)}))},y=function(e){g.log.info("Extracting classes"),o.default.clear();var t=l.a.parser;t.yy=o.default;try{t.parse(e)}catch(e){return}return o.default.getClasses()},w=function(e,t){g.log.info("Drawing flowchart"),o.default.clear(),o.default.setGen("gen-2");var i=l.a.parser;i.yy=o.default,i.parse(e);var n=o.default.getDirection();void 0===n&&(n="TD");var a,h=Object(c.getConfig)().flowchart,u=h.nodeSpacing||50,f=h.rankSpacing||50,m=new r.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:u,ranksep:f,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),_=o.default.getSubGraphs();g.log.info("Subgraphs - ",_);for(var y=_.length-1;y>=0;y--)a=_[y],g.log.info("Subgraph - ",a),o.default.addVertex(a.id,a.title,"group",void 0,a.classes);var w=o.default.getVertices(),C=o.default.getEdges();g.log.info(C);var S=0;for(S=_.length-1;S>=0;S--){a=_[S],Object(s.selectAll)("cluster").append("text");for(var k=0;k<a.nodes.length;k++)g.log.info("Setting up subgraphs",a.nodes[k],a.id),m.setParent(a.nodes[k],a.id)}b(w,m,t),v(C,m);var x=Object(s.select)('[id="'.concat(t,'"]'));x.attr("xmlns:xlink","http://www.w3.org/1999/xlink");var L=Object(s.select)("#"+t+" g");Object(d.render)(L,m,["point","circle","cross"],"flowchart",t);var M=h.diagramPadding,D=x.node().getBBox(),N=D.width+2*M,E=D.height+2*M;if(g.log.debug("new ViewBox 0 0 ".concat(N," ").concat(E),"translate(".concat(M-m._label.marginx,", ").concat(M-m._label.marginy,")")),Object(p.configureSvgSize)(x,E,N,h.useMaxWidth),x.attr("viewBox","0 0 ".concat(N," ").concat(E)),x.select("g").attr("transform","translate(".concat(M-m._label.marginx,", ").concat(M-D.y,")")),o.default.indexNodes("subGraph"+S),!h.htmlLabels)for(var T=document.querySelectorAll('[id="'+t+'"] .edgeLabel .label'),I=0;I<T.length;I++){var O=T[I],A=O.getBBox(),R=document.createElementNS("http://www.w3.org/2000/svg","rect");R.setAttribute("rx",0),R.setAttribute("ry",0),R.setAttribute("width",A.width),R.setAttribute("height",A.height),O.insertBefore(R,O.firstChild)}Object.keys(w).forEach((function(e){var i=w[e];if(i.link){var n=Object(s.select)("#"+t+' [id="'+e+'"]');if(n){var r=document.createElementNS("http://www.w3.org/2000/svg","a");r.setAttributeNS("http://www.w3.org/2000/svg","class",i.classes.join(" ")),r.setAttributeNS("http://www.w3.org/2000/svg","href",i.link),r.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i.linkTarget&&r.setAttributeNS("http://www.w3.org/2000/svg","target",i.linkTarget);var o=n.insert((function(){return r}),":first-child"),a=n.select(".label-container");a&&o.append((function(){return a.node()}));var l=n.select(".label");l&&o.append((function(){return l.node()}))}}}))};t.default={setConf:_,addVertices:b,addEdges:v,getClasses:y,draw:w}},"./src/diagrams/flowchart/flowRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return v})),i.d(t,"addVertices",(function(){return y})),i.d(t,"addEdges",(function(){return w})),i.d(t,"getClasses",(function(){return C})),i.d(t,"draw",(function(){return S}));var n=i("graphlib"),r=i.n(n),s=i("d3"),o=i("./src/diagrams/flowchart/flowDb.js"),a=i("./src/diagrams/flowchart/parser/flow.jison"),l=i.n(a),c=i("./src/config.js"),d=i("dagre-d3"),h=i.n(d),u=i("dagre-d3/lib/label/add-html-label.js"),g=i.n(u),f=i("./src/logger.js"),p=i("./src/diagrams/common/common.js"),m=i("./src/utils.js"),_=i("./src/diagrams/flowchart/flowChartShapes.js"),b={},v=function(e){for(var t=Object.keys(e),i=0;i<t.length;i++)b[t[i]]=e[t[i]]},y=function(e,t,i){var n=Object(s.select)('[id="'.concat(i,'"]'));Object.keys(e).forEach((function(i){var r=e[i],s="default";r.classes.length>0&&(s=r.classes.join(" "));var a,l=Object(m.getStylesFromArray)(r.styles),d=void 0!==r.text?r.text:r.id;if(Object(c.getConfig)().flowchart.htmlLabels){var h={label:d.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(e){return"<i class='".concat(e.replace(":"," "),"'></i>")}))};(a=g()(n,h).node()).parentNode.removeChild(a)}else{var u=document.createElementNS("http://www.w3.org/2000/svg","text");u.setAttribute("style",l.labelStyle.replace("color:","fill:"));for(var _=d.split(p.default.lineBreakRegex),b=0;b<_.length;b++){var v=document.createElementNS("http://www.w3.org/2000/svg","tspan");v.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),v.setAttribute("dy","1em"),v.setAttribute("x","1"),v.textContent=_[b],u.appendChild(v)}a=u}var y=0,w="";switch(r.type){case"round":y=5,w="rect";break;case"square":w="rect";break;case"diamond":w="question";break;case"hexagon":w="hexagon";break;case"odd":w="rect_left_inv_arrow";break;case"lean_right":w="lean_right";break;case"lean_left":w="lean_left";break;case"trapezoid":w="trapezoid";break;case"inv_trapezoid":w="inv_trapezoid";break;case"odd_right":w="rect_left_inv_arrow";break;case"circle":w="circle";break;case"ellipse":w="ellipse";break;case"stadium":w="stadium";break;case"subroutine":w="subroutine";break;case"cylinder":w="cylinder";break;case"group":w="rect";break;default:w="rect"}f.log.warn("Adding node",r.id,r.domId),t.setNode(o.default.lookUpDomId(r.id),{labelType:"svg",labelStyle:l.labelStyle,shape:w,label:a,rx:y,ry:y,class:s,style:l.style,id:o.default.lookUpDomId(r.id)})}))},w=function(e,t){var i,n,r=0;if(void 0!==e.defaultStyle){var a=Object(m.getStylesFromArray)(e.defaultStyle);i=a.style,n=a.labelStyle}e.forEach((function(a){r++;var l="L-"+a.start+"-"+a.end,d="LS-"+a.start,h="LE-"+a.end,u={};"arrow_open"===a.type?u.arrowhead="none":u.arrowhead="normal";var g="",f="";if(void 0!==a.style){var _=Object(m.getStylesFromArray)(a.style);g=_.style,f=_.labelStyle}else switch(a.stroke){case"normal":g="fill:none",void 0!==i&&(g=i),void 0!==n&&(f=n);break;case"dotted":g="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":g=" stroke-width: 3.5px;fill:none"}u.style=g,u.labelStyle=f,void 0!==a.interpolate?u.curve=Object(m.interpolateToCurve)(a.interpolate,s.curveLinear):void 0!==e.defaultInterpolate?u.curve=Object(m.interpolateToCurve)(e.defaultInterpolate,s.curveLinear):u.curve=Object(m.interpolateToCurve)(b.curve,s.curveLinear),void 0===a.text?void 0!==a.style&&(u.arrowheadStyle="fill: #333"):(u.arrowheadStyle="fill: #333",u.labelpos="c",Object(c.getConfig)().flowchart.htmlLabels?(u.labelType="html",u.label='<span id="L-'.concat(l,'" class="edgeLabel L-').concat(d,"' L-").concat(h,'">').concat(a.text.replace(/fa[lrsb]?:fa-[\w-]+/g,(function(e){return"<i class='".concat(e.replace(":"," "),"'></i>")})),"</span>")):(u.labelType="text",u.label=a.text.replace(p.default.lineBreakRegex,"\n"),void 0===a.style&&(u.style=u.style||"stroke: #333; stroke-width: 1.5px;fill:none"),u.labelStyle=u.labelStyle.replace("color:","fill:"))),u.id=l,u.class=d+" "+h,u.minlen=a.length||1,t.setEdge(o.default.lookUpDomId(a.start),o.default.lookUpDomId(a.end),u,r)}))},C=function(e){f.log.info("Extracting classes"),o.default.clear();try{var t=l.a.parser;return t.yy=o.default,t.parse(e),o.default.getClasses()}catch(e){return}},S=function(e,t){f.log.info("Drawing flowchart"),o.default.clear(),o.default.setGen("gen-1");var i=l.a.parser;i.yy=o.default,i.parse(e);var n=o.default.getDirection();void 0===n&&(n="TD");for(var a,d=Object(c.getConfig)().flowchart,u=d.nodeSpacing||50,g=d.rankSpacing||50,p=new r.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:n,nodesep:u,ranksep:g,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),b=o.default.getSubGraphs(),v=b.length-1;v>=0;v--)a=b[v],o.default.addVertex(a.id,a.title,"group",void 0,a.classes);var C=o.default.getVertices();f.log.warn("Get vertices",C);var S=o.default.getEdges(),k=0;for(k=b.length-1;k>=0;k--){a=b[k],Object(s.selectAll)("cluster").append("text");for(var x=0;x<a.nodes.length;x++)f.log.warn("Setting subgraph",a.nodes[x],o.default.lookUpDomId(a.nodes[x]),o.default.lookUpDomId(a.id)),p.setParent(o.default.lookUpDomId(a.nodes[x]),o.default.lookUpDomId(a.id))}y(C,p,t),w(S,p);var L=new(0,h.a.render);_.default.addToRender(L),L.arrows().none=function(e,t,i,n){var r=e.append("marker").attr("id",t).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 0 0 L 0 0 z");h.a.util.applyStyle(r,i[n+"Style"])},L.arrows().normal=function(e,t){e.append("marker").attr("id",t).attr("viewBox","0 0 10 10").attr("refX",9).attr("refY",5).attr("markerUnits","strokeWidth").attr("markerWidth",8).attr("markerHeight",6).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowheadPath").style("stroke-width",1).style("stroke-dasharray","1,0")};var M=Object(s.select)('[id="'.concat(t,'"]'));M.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),f.log.warn(p);var D=Object(s.select)("#"+t+" g");L(D,p),D.selectAll("g.node").attr("title",(function(){return o.default.getTooltip(this.id)}));var N=d.diagramPadding,E=M.node().getBBox(),T=E.width+2*N,I=E.height+2*N;Object(m.configureSvgSize)(M,I,T,d.useMaxWidth);var O="".concat(E.x-N," ").concat(E.y-N," ").concat(T," ").concat(I);for(f.log.debug("viewBox ".concat(O)),M.attr("viewBox",O),o.default.indexNodes("subGraph"+k),k=0;k<b.length;k++)if("undefined"!==(a=b[k]).title){var A=document.querySelectorAll("#"+t+' [id="'+o.default.lookUpDomId(a.id)+'"] rect'),R=document.querySelectorAll("#"+t+' [id="'+o.default.lookUpDomId(a.id)+'"]'),P=A[0].x.baseVal.value,F=A[0].y.baseVal.value,B=A[0].width.baseVal.value,W=Object(s.select)(R[0]).select(".label");W.attr("transform","translate(".concat(P+B/2,", ").concat(F+14,")")),W.attr("id",t+"Text");for(var Y=0;Y<a.classes.length;Y++)R[0].classList.add(a.classes[Y])}d.htmlLabels;for(var H=document.querySelectorAll('[id="'+t+'"] .edgeLabel .label'),j=0;j<H.length;j++){var V=H[j],z=V.getBBox(),U=document.createElementNS("http://www.w3.org/2000/svg","rect");U.setAttribute("rx",0),U.setAttribute("ry",0),U.setAttribute("width",z.width),U.setAttribute("height",z.height),V.insertBefore(U,V.firstChild)}Object.keys(C).forEach((function(e){var i=C[e];if(i.link){var n=Object(s.select)("#"+t+' [id="'+o.default.lookUpDomId(e)+'"]');if(n){var r=document.createElementNS("http://www.w3.org/2000/svg","a");r.setAttributeNS("http://www.w3.org/2000/svg","class",i.classes.join(" ")),r.setAttributeNS("http://www.w3.org/2000/svg","href",i.link),r.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i.linkTarget&&r.setAttributeNS("http://www.w3.org/2000/svg","target",i.linkTarget);var a=n.insert((function(){return r}),":first-child"),l=n.select(".label-container");l&&a.append((function(){return l.node()}));var c=n.select(".label");c&&a.append((function(){return c.node()}))}}}))};t.default={setConf:v,addVertices:y,addEdges:w,getClasses:C,draw:S}},"./src/diagrams/flowchart/parser/flow.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,9],i=[1,7],n=[1,6],r=[1,8],s=[1,20,21,22,23,38,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],o=[2,10],a=[1,20],l=[1,21],c=[1,22],d=[1,23],h=[1,30],u=[1,54],g=[1,32],f=[1,33],p=[1,34],m=[1,35],_=[1,36],b=[1,48],v=[1,43],y=[1,45],w=[1,40],C=[1,44],S=[1,47],k=[1,51],x=[1,52],L=[1,53],M=[1,42],D=[1,46],N=[1,49],E=[1,50],T=[1,41],I=[1,57],O=[1,62],A=[1,20,21,22,23,38,42,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],R=[1,66],P=[1,65],F=[1,67],B=[20,21,23,69,70],W=[1,88],Y=[1,93],H=[1,90],j=[1,95],V=[1,98],z=[1,96],U=[1,97],$=[1,91],K=[1,103],q=[1,102],G=[1,92],Z=[1,94],J=[1,99],Q=[1,100],X=[1,101],ee=[1,104],te=[20,21,22,23,69,70],ie=[20,21,22,23,47,69,70],ne=[20,21,22,23,40,46,47,49,51,53,55,57,59,61,62,64,69,70,80,94,95,98,99,100,102,103,109,110,111,112,113,114],re=[20,21,23],se=[20,21,23,46,69,70,80,94,95,98,99,100,102,103,109,110,111,112,113,114],oe=[1,12,20,21,22,23,24,38,42,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],ae=[46,80,94,95,98,99,100,102,103,109,110,111,112,113,114],le=[1,136],ce=[1,144],de=[1,145],he=[1,146],ue=[1,147],ge=[1,131],fe=[1,132],pe=[1,128],me=[1,139],_e=[1,140],be=[1,141],ve=[1,142],ye=[1,143],we=[1,148],Ce=[1,149],Se=[1,134],ke=[1,137],xe=[1,133],Le=[1,130],Me=[20,21,22,23,38,42,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],De=[1,152],Ne=[20,21,22,23,26,46,80,94,95,98,99,100,102,103,109,110,111,112,113,114],Ee=[20,21,22,23,24,26,38,40,41,42,46,50,52,54,56,58,60,61,63,65,69,70,71,75,76,77,78,79,80,81,84,94,95,98,99,100,102,103,104,105,109,110,111,112,113,114],Te=[12,21,22,24],Ie=[22,95],Oe=[1,233],Ae=[1,237],Re=[1,234],Pe=[1,231],Fe=[1,228],Be=[1,229],We=[1,230],Ye=[1,232],He=[1,235],je=[1,236],Ve=[1,238],ze=[1,255],Ue=[20,21,23,95],$e=[20,21,22,23,75,91,94,95,98,99,100,101,102,103,104],Ke={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,directive:5,openDirective:6,typeDirective:7,closeDirective:8,separator:9,":":10,argDirective:11,open_directive:12,type_directive:13,arg_directive:14,close_directive:15,graphConfig:16,document:17,line:18,statement:19,SEMI:20,NEWLINE:21,SPACE:22,EOF:23,GRAPH:24,NODIR:25,DIR:26,FirstStmtSeperator:27,ending:28,endToken:29,spaceList:30,spaceListNewline:31,verticeStatement:32,styleStatement:33,linkStyleStatement:34,classDefStatement:35,classStatement:36,clickStatement:37,subgraph:38,text:39,SQS:40,SQE:41,end:42,link:43,node:44,vertex:45,AMP:46,STYLE_SEPARATOR:47,idString:48,PS:49,PE:50,"(-":51,"-)":52,STADIUMSTART:53,STADIUMEND:54,SUBROUTINESTART:55,SUBROUTINEEND:56,CYLINDERSTART:57,CYLINDEREND:58,DIAMOND_START:59,DIAMOND_STOP:60,TAGEND:61,TRAPSTART:62,TRAPEND:63,INVTRAPSTART:64,INVTRAPEND:65,linkStatement:66,arrowText:67,TESTSTR:68,START_LINK:69,LINK:70,PIPE:71,textToken:72,STR:73,keywords:74,STYLE:75,LINKSTYLE:76,CLASSDEF:77,CLASS:78,CLICK:79,DOWN:80,UP:81,textNoTags:82,textNoTagsToken:83,DEFAULT:84,stylesOpt:85,alphaNum:86,CALLBACKNAME:87,CALLBACKARGS:88,HREF:89,LINK_TARGET:90,HEX:91,numList:92,INTERPOLATE:93,NUM:94,COMMA:95,style:96,styleComponent:97,ALPHA:98,COLON:99,MINUS:100,UNIT:101,BRKT:102,DOT:103,PCT:104,TAGSTART:105,alphaNumToken:106,idStringToken:107,alphaNumStatement:108,PUNCTUATION:109,UNICODE_TEXT:110,PLUS:111,EQUALS:112,MULT:113,UNDERSCORE:114,graphCodeTokens:115,ARROW_CROSS:116,ARROW_POINT:117,ARROW_CIRCLE:118,ARROW_OPEN:119,QUOTE:120,$accept:0,$end:1},terminals_:{2:"error",10:":",12:"open_directive",13:"type_directive",14:"arg_directive",15:"close_directive",20:"SEMI",21:"NEWLINE",22:"SPACE",23:"EOF",24:"GRAPH",25:"NODIR",26:"DIR",38:"subgraph",40:"SQS",41:"SQE",42:"end",46:"AMP",47:"STYLE_SEPARATOR",49:"PS",50:"PE",51:"(-",52:"-)",53:"STADIUMSTART",54:"STADIUMEND",55:"SUBROUTINESTART",56:"SUBROUTINEEND",57:"CYLINDERSTART",58:"CYLINDEREND",59:"DIAMOND_START",60:"DIAMOND_STOP",61:"TAGEND",62:"TRAPSTART",63:"TRAPEND",64:"INVTRAPSTART",65:"INVTRAPEND",68:"TESTSTR",69:"START_LINK",70:"LINK",71:"PIPE",73:"STR",75:"STYLE",76:"LINKSTYLE",77:"CLASSDEF",78:"CLASS",79:"CLICK",80:"DOWN",81:"UP",84:"DEFAULT",87:"CALLBACKNAME",88:"CALLBACKARGS",89:"HREF",90:"LINK_TARGET",91:"HEX",93:"INTERPOLATE",94:"NUM",95:"COMMA",98:"ALPHA",99:"COLON",100:"MINUS",101:"UNIT",102:"BRKT",103:"DOT",104:"PCT",105:"TAGSTART",109:"PUNCTUATION",110:"UNICODE_TEXT",111:"PLUS",112:"EQUALS",113:"MULT",114:"UNDERSCORE",116:"ARROW_CROSS",117:"ARROW_POINT",118:"ARROW_CIRCLE",119:"ARROW_OPEN",120:"QUOTE"},productions_:[0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[44,1],[44,5],[44,3],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[43,2],[43,3],[43,3],[43,1],[43,3],[66,1],[67,3],[39,1],[39,2],[39,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[82,1],[82,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[92,1],[92,3],[85,1],[85,3],[96,1],[96,2],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[72,1],[72,1],[72,1],[72,1],[72,1],[72,1],[83,1],[83,1],[83,1],[83,1],[48,1],[48,2],[86,1],[86,2],[108,1],[108,1],[108,1],[108,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 5:n.parseDirective("%%{","open_directive");break;case 6:n.parseDirective(s[a],"type_directive");break;case 7:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 8:n.parseDirective("}%%","close_directive","flowchart");break;case 10:this.$=[];break;case 11:s[a]!==[]&&s[a-1].push(s[a]),this.$=s[a-1];break;case 12:case 76:case 78:case 90:case 146:case 148:case 149:this.$=s[a];break;case 19:n.setDirection("TB"),this.$="TB";break;case 20:n.setDirection(s[a-1]),this.$=s[a-1];break;case 35:this.$=s[a-1].nodes;break;case 36:case 37:case 38:case 39:case 40:this.$=[];break;case 41:this.$=n.addSubGraph(s[a-6],s[a-1],s[a-4]);break;case 42:this.$=n.addSubGraph(s[a-3],s[a-1],s[a-3]);break;case 43:this.$=n.addSubGraph(void 0,s[a-1],void 0);break;case 47:n.addLink(s[a-2].stmt,s[a],s[a-1]),this.$={stmt:s[a],nodes:s[a].concat(s[a-2].nodes)};break;case 48:n.addLink(s[a-3].stmt,s[a-1],s[a-2]),this.$={stmt:s[a-1],nodes:s[a-1].concat(s[a-3].nodes)};break;case 49:this.$={stmt:s[a-1],nodes:s[a-1]};break;case 50:this.$={stmt:s[a],nodes:s[a]};break;case 51:this.$=[s[a]];break;case 52:this.$=s[a-4].concat(s[a]);break;case 53:this.$=[s[a-2]],n.setClass(s[a-2],s[a]);break;case 54:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"square");break;case 55:this.$=s[a-5],n.addVertex(s[a-5],s[a-2],"circle");break;case 56:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"ellipse");break;case 57:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"stadium");break;case 58:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"subroutine");break;case 59:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"cylinder");break;case 60:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"round");break;case 61:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"diamond");break;case 62:this.$=s[a-5],n.addVertex(s[a-5],s[a-2],"hexagon");break;case 63:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"odd");break;case 64:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"trapezoid");break;case 65:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"inv_trapezoid");break;case 66:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"lean_right");break;case 67:this.$=s[a-3],n.addVertex(s[a-3],s[a-1],"lean_left");break;case 68:this.$=s[a],n.addVertex(s[a]);break;case 69:s[a-1].text=s[a],this.$=s[a-1];break;case 70:case 71:s[a-2].text=s[a-1],this.$=s[a-2];break;case 72:this.$=s[a];break;case 73:var l=n.destructLink(s[a],s[a-2]);this.$={type:l.type,stroke:l.stroke,length:l.length,text:s[a-1]};break;case 74:l=n.destructLink(s[a]),this.$={type:l.type,stroke:l.stroke,length:l.length};break;case 75:this.$=s[a-1];break;case 77:case 91:case 147:this.$=s[a-1]+""+s[a];break;case 92:case 93:this.$=s[a-4],n.addClass(s[a-2],s[a]);break;case 94:this.$=s[a-4],n.setClass(s[a-2],s[a]);break;case 95:case 103:this.$=s[a-1],n.setClickEvent(s[a-1],s[a]);break;case 96:case 104:this.$=s[a-3],n.setClickEvent(s[a-3],s[a-2]),n.setTooltip(s[a-3],s[a]);break;case 97:this.$=s[a-2],n.setClickEvent(s[a-2],s[a-1],s[a]);break;case 98:this.$=s[a-4],n.setClickEvent(s[a-4],s[a-3],s[a-2]),n.setTooltip(s[a-4],s[a]);break;case 99:case 105:this.$=s[a-1],n.setLink(s[a-1],s[a]);break;case 100:case 106:this.$=s[a-3],n.setLink(s[a-3],s[a-2]),n.setTooltip(s[a-3],s[a]);break;case 101:case 107:this.$=s[a-3],n.setLink(s[a-3],s[a-2],s[a]);break;case 102:case 108:this.$=s[a-5],n.setLink(s[a-5],s[a-4],s[a]),n.setTooltip(s[a-5],s[a-2]);break;case 109:this.$=s[a-4],n.addVertex(s[a-2],void 0,void 0,s[a]);break;case 110:case 112:this.$=s[a-4],n.updateLink(s[a-2],s[a]);break;case 111:this.$=s[a-4],n.updateLink([s[a-2]],s[a]);break;case 113:this.$=s[a-8],n.updateLinkInterpolate([s[a-6]],s[a-2]),n.updateLink([s[a-6]],s[a]);break;case 114:this.$=s[a-8],n.updateLinkInterpolate(s[a-6],s[a-2]),n.updateLink(s[a-6],s[a]);break;case 115:this.$=s[a-6],n.updateLinkInterpolate([s[a-4]],s[a]);break;case 116:this.$=s[a-6],n.updateLinkInterpolate(s[a-4],s[a]);break;case 117:case 119:this.$=[s[a]];break;case 118:case 120:s[a-2].push(s[a]),this.$=s[a-2];break;case 122:this.$=s[a-1]+s[a];break;case 144:this.$=s[a];break;case 145:this.$=s[a-1]+""+s[a];break;case 150:this.$="v";break;case 151:this.$="-"}},table:[{3:1,4:2,5:3,6:5,12:t,16:4,21:i,22:n,24:r},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:t,16:4,21:i,22:n,24:r},e(s,o,{17:11}),{7:12,13:[1,13]},{16:14,21:i,22:n,24:r},{16:15,21:i,22:n,24:r},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:a,21:l,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:h,44:31,45:37,46:u,48:38,75:g,76:f,77:p,78:m,79:_,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},{8:55,10:[1,56],15:I},e([10,15],[2,6]),e(s,[2,17]),e(s,[2,18]),e(s,[2,19]),{20:[1,59],21:[1,60],22:O,27:58,30:61},e(A,[2,11]),e(A,[2,12]),e(A,[2,13]),e(A,[2,14]),e(A,[2,15]),e(A,[2,16]),{9:63,20:R,21:P,23:F,43:64,66:68,69:[1,69],70:[1,70]},{9:71,20:R,21:P,23:F},{9:72,20:R,21:P,23:F},{9:73,20:R,21:P,23:F},{9:74,20:R,21:P,23:F},{9:75,20:R,21:P,23:F},{9:77,20:R,21:P,22:[1,76],23:F},e(B,[2,50],{30:78,22:O}),{22:[1,79]},{22:[1,80]},{22:[1,81]},{22:[1,82]},{26:W,46:Y,73:[1,86],80:H,86:85,87:[1,83],89:[1,84],94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(te,[2,51],{47:[1,105]}),e(ie,[2,68],{107:116,40:[1,106],46:u,49:[1,107],51:[1,108],53:[1,109],55:[1,110],57:[1,111],59:[1,112],61:[1,113],62:[1,114],64:[1,115],80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,109:L,110:M,111:D,112:N,113:E,114:T}),e(ne,[2,144]),e(ne,[2,165]),e(ne,[2,166]),e(ne,[2,167]),e(ne,[2,168]),e(ne,[2,169]),e(ne,[2,170]),e(ne,[2,171]),e(ne,[2,172]),e(ne,[2,173]),e(ne,[2,174]),e(ne,[2,175]),e(ne,[2,176]),e(ne,[2,177]),e(ne,[2,178]),e(ne,[2,179]),{9:117,20:R,21:P,23:F},{11:118,14:[1,119]},e(re,[2,8]),e(s,[2,20]),e(s,[2,26]),e(s,[2,27]),{21:[1,120]},e(se,[2,34],{30:121,22:O}),e(A,[2,35]),{44:122,45:37,46:u,48:38,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},e(oe,[2,44]),e(oe,[2,45]),e(oe,[2,46]),e(ae,[2,72],{67:123,68:[1,124],71:[1,125]}),{22:le,24:ce,26:de,38:he,39:126,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e([46,68,71,80,94,95,98,99,100,102,103,109,110,111,112,113,114],[2,74]),e(A,[2,36]),e(A,[2,37]),e(A,[2,38]),e(A,[2,39]),e(A,[2,40]),{22:le,24:ce,26:de,38:he,39:150,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(Me,o,{17:151}),e(B,[2,49],{46:De}),{26:W,46:Y,80:H,86:153,91:[1,154],94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},{84:[1,155],92:156,94:[1,157]},{26:W,46:Y,80:H,84:[1,158],86:159,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},{26:W,46:Y,80:H,86:160,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(re,[2,95],{22:[1,161],88:[1,162]}),e(re,[2,99],{22:[1,163]}),e(re,[2,103],{106:89,108:165,22:[1,164],26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,109:G,110:Z,111:J,112:Q,113:X,114:ee}),e(re,[2,105],{22:[1,166]}),e(Ne,[2,146]),e(Ne,[2,148]),e(Ne,[2,149]),e(Ne,[2,150]),e(Ne,[2,151]),e(Ee,[2,152]),e(Ee,[2,153]),e(Ee,[2,154]),e(Ee,[2,155]),e(Ee,[2,156]),e(Ee,[2,157]),e(Ee,[2,158]),e(Ee,[2,159]),e(Ee,[2,160]),e(Ee,[2,161]),e(Ee,[2,162]),e(Ee,[2,163]),e(Ee,[2,164]),{46:u,48:167,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},{22:le,24:ce,26:de,38:he,39:168,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:170,42:ue,46:Y,49:[1,169],61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:171,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:172,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:173,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:174,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:175,42:ue,46:Y,59:[1,176],61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:177,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:178,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:179,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(ne,[2,145]),e(Te,[2,3]),{8:180,15:I},{15:[2,7]},e(s,[2,28]),e(se,[2,33]),e(B,[2,47],{30:181,22:O}),e(ae,[2,69],{22:[1,182]}),{22:[1,183]},{22:le,24:ce,26:de,38:he,39:184,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,61:ge,69:fe,70:[1,185],72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(Ee,[2,76]),e(Ee,[2,78]),e(Ee,[2,134]),e(Ee,[2,135]),e(Ee,[2,136]),e(Ee,[2,137]),e(Ee,[2,138]),e(Ee,[2,139]),e(Ee,[2,140]),e(Ee,[2,141]),e(Ee,[2,142]),e(Ee,[2,143]),e(Ee,[2,79]),e(Ee,[2,80]),e(Ee,[2,81]),e(Ee,[2,82]),e(Ee,[2,83]),e(Ee,[2,84]),e(Ee,[2,85]),e(Ee,[2,86]),e(Ee,[2,87]),e(Ee,[2,88]),e(Ee,[2,89]),{9:188,20:R,21:P,22:le,23:F,24:ce,26:de,38:he,40:[1,187],42:ue,46:Y,61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{18:18,19:19,20:a,21:l,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,189],44:31,45:37,46:u,48:38,75:g,76:f,77:p,78:m,79:_,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},{22:O,30:190},{22:[1,191],26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:165,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:[1,192]},{22:[1,193]},{22:[1,194],95:[1,195]},e(Ie,[2,117]),{22:[1,196]},{22:[1,197],26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:165,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:[1,198],26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:165,109:G,110:Z,111:J,112:Q,113:X,114:ee},{73:[1,199]},e(re,[2,97],{22:[1,200]}),{73:[1,201],90:[1,202]},{73:[1,203]},e(Ne,[2,147]),{73:[1,204],90:[1,205]},e(te,[2,53],{107:116,46:u,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,109:L,110:M,111:D,112:N,113:E,114:T}),{22:le,24:ce,26:de,38:he,41:[1,206],42:ue,46:Y,61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:207,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,50:[1,208],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,52:[1,209],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,54:[1,210],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,56:[1,211],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,58:[1,212],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,60:[1,213],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,39:214,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,41:[1,215],42:ue,46:Y,61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,61:ge,63:[1,216],65:[1,217],69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{22:le,24:ce,26:de,38:he,42:ue,46:Y,61:ge,63:[1,219],65:[1,218],69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{9:220,20:R,21:P,23:F},e(B,[2,48],{46:De}),e(ae,[2,71]),e(ae,[2,70]),{22:le,24:ce,26:de,38:he,42:ue,46:Y,61:ge,69:fe,71:[1,221],72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(ae,[2,73]),e(Ee,[2,77]),{22:le,24:ce,26:de,38:he,39:222,42:ue,46:Y,61:ge,69:fe,72:127,73:pe,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(Me,o,{17:223}),e(A,[2,43]),{45:224,46:u,48:38,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},{22:Oe,75:Ae,85:225,91:Re,94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{22:Oe,75:Ae,85:239,91:Re,94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{22:Oe,75:Ae,85:240,91:Re,93:[1,241],94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{22:Oe,75:Ae,85:242,91:Re,93:[1,243],94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{94:[1,244]},{22:Oe,75:Ae,85:245,91:Re,94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{22:Oe,75:Ae,85:246,91:Re,94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{26:W,46:Y,80:H,86:247,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(re,[2,96]),{73:[1,248]},e(re,[2,100],{22:[1,249]}),e(re,[2,101]),e(re,[2,104]),e(re,[2,106],{22:[1,250]}),e(re,[2,107]),e(ie,[2,54]),{22:le,24:ce,26:de,38:he,42:ue,46:Y,50:[1,251],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(ie,[2,60]),e(ie,[2,56]),e(ie,[2,57]),e(ie,[2,58]),e(ie,[2,59]),e(ie,[2,61]),{22:le,24:ce,26:de,38:he,42:ue,46:Y,60:[1,252],61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(ie,[2,63]),e(ie,[2,64]),e(ie,[2,66]),e(ie,[2,65]),e(ie,[2,67]),e(Te,[2,4]),e([22,46,80,94,95,98,99,100,102,103,109,110,111,112,113,114],[2,75]),{22:le,24:ce,26:de,38:he,41:[1,253],42:ue,46:Y,61:ge,69:fe,72:186,74:138,75:me,76:_e,77:be,78:ve,79:ye,80:we,81:Ce,83:129,84:Se,94:j,95:V,98:z,99:U,100:ke,102:K,103:q,104:xe,105:Le,106:135,109:G,110:Z,111:J,112:Q,113:X,114:ee},{18:18,19:19,20:a,21:l,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,254],44:31,45:37,46:u,48:38,75:g,76:f,77:p,78:m,79:_,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},e(te,[2,52]),e(re,[2,109],{95:ze}),e(Ue,[2,119],{97:256,22:Oe,75:Ae,91:Re,94:Pe,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve}),e($e,[2,121]),e($e,[2,123]),e($e,[2,124]),e($e,[2,125]),e($e,[2,126]),e($e,[2,127]),e($e,[2,128]),e($e,[2,129]),e($e,[2,130]),e($e,[2,131]),e($e,[2,132]),e($e,[2,133]),e(re,[2,110],{95:ze}),e(re,[2,111],{95:ze}),{22:[1,257]},e(re,[2,112],{95:ze}),{22:[1,258]},e(Ie,[2,118]),e(re,[2,92],{95:ze}),e(re,[2,93],{95:ze}),e(re,[2,94],{106:89,108:165,26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,109:G,110:Z,111:J,112:Q,113:X,114:ee}),e(re,[2,98]),{90:[1,259]},{90:[1,260]},{50:[1,261]},{60:[1,262]},{9:263,20:R,21:P,23:F},e(A,[2,42]),{22:Oe,75:Ae,91:Re,94:Pe,96:264,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},e($e,[2,122]),{26:W,46:Y,80:H,86:265,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},{26:W,46:Y,80:H,86:266,94:j,95:V,98:z,99:U,100:$,102:K,103:q,106:89,108:87,109:G,110:Z,111:J,112:Q,113:X,114:ee},e(re,[2,102]),e(re,[2,108]),e(ie,[2,55]),e(ie,[2,62]),e(Me,o,{17:267}),e(Ue,[2,120],{97:256,22:Oe,75:Ae,91:Re,94:Pe,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve}),e(re,[2,115],{106:89,108:165,22:[1,268],26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,109:G,110:Z,111:J,112:Q,113:X,114:ee}),e(re,[2,116],{106:89,108:165,22:[1,269],26:W,46:Y,80:H,94:j,95:V,98:z,99:U,100:$,102:K,103:q,109:G,110:Z,111:J,112:Q,113:X,114:ee}),{18:18,19:19,20:a,21:l,22:c,23:d,32:24,33:25,34:26,35:27,36:28,37:29,38:h,42:[1,270],44:31,45:37,46:u,48:38,75:g,76:f,77:p,78:m,79:_,80:b,94:v,95:y,98:w,99:C,100:S,102:k,103:x,107:39,109:L,110:M,111:D,112:N,113:E,114:T},{22:Oe,75:Ae,85:271,91:Re,94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},{22:Oe,75:Ae,85:272,91:Re,94:Pe,96:226,97:227,98:Fe,99:Be,100:We,101:Ye,102:He,103:je,104:Ve},e(A,[2,41]),e(re,[2,113],{95:ze}),e(re,[2,114],{95:ze})],defaultActions:{2:[2,1],9:[2,5],10:[2,2],119:[2,7]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},qe={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),12;case 1:return this.begin("type_directive"),13;case 2:return this.popState(),this.begin("arg_directive"),10;case 3:return this.popState(),this.popState(),15;case 4:return 14;case 5:case 6:break;case 7:this.begin("string");break;case 8:this.popState();break;case 9:return"STR";case 10:return 75;case 11:return 84;case 12:return 76;case 13:return 93;case 14:return 77;case 15:return 78;case 16:this.begin("href");break;case 17:this.popState();break;case 18:return 89;case 19:this.begin("callbackname");break;case 20:this.popState();break;case 21:this.popState(),this.begin("callbackargs");break;case 22:return 87;case 23:this.popState();break;case 24:return 88;case 25:this.begin("click");break;case 26:this.popState();break;case 27:return 79;case 28:case 29:return e.lex.firstGraph()&&this.begin("dir"),24;case 30:return 38;case 31:return 42;case 32:case 33:case 34:case 35:return 90;case 36:return this.popState(),25;case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:return this.popState(),26;case 47:return 94;case 48:return 102;case 49:return 47;case 50:return 99;case 51:return 46;case 52:return 20;case 53:return 95;case 54:return 113;case 55:case 56:case 57:return 70;case 58:case 59:case 60:return 69;case 61:return 51;case 62:return 52;case 63:return 53;case 64:return 54;case 65:return 55;case 66:return 56;case 67:return 57;case 68:return 58;case 69:return 100;case 70:return 103;case 71:return 114;case 72:return 111;case 73:return 104;case 74:case 75:return 112;case 76:return 105;case 77:return 61;case 78:return 81;case 79:return"SEP";case 80:return 80;case 81:return 98;case 82:return 63;case 83:return 62;case 84:return 65;case 85:return 64;case 86:return 109;case 87:return 110;case 88:return 71;case 89:return 49;case 90:return 50;case 91:return 40;case 92:return 41;case 93:return 59;case 94:return 60;case 95:return 120;case 96:return 21;case 97:return 22;case 98:return 23}},rules:[/^(?:%%\{)/,/^(?:((?:(?!\}%%)[^:.])*))/,/^(?::)/,/^(?:\}%%)/,/^(?:((?:(?!\}%%).|\n)*))/,/^(?:%%(?!\{)[^\n]*)/,/^(?:[^\}]%%[^\n]*)/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s]+["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\[)/,/^(?:\]\))/,/^(?:\[\[)/,/^(?:\]\])/,/^(?:\[\()/,/^(?:\)\])/,/^(?:-)/,/^(?:\.)/,/^(?:[\_])/,/^(?:\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\])/,/^(?:\[\/)/,/^(?:\/\])/,/^(?:\[\\)/,/^(?:[!"#$%&'*+,-.`?\\_/])/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\()/,/^(?:\))/,/^(?:\[)/,/^(?:\])/,/^(?:\{)/,/^(?:\})/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[23,24],inclusive:!1},callbackname:{rules:[20,21,22],inclusive:!1},href:{rules:[17,18],inclusive:!1},click:{rules:[26,27],inclusive:!1},vertex:{rules:[],inclusive:!1},dir:{rules:[36,37,38,39,40,41,42,43,44,45,46],inclusive:!1},string:{rules:[8,9],inclusive:!1},INITIAL:{rules:[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],inclusive:!0}}};function Ge(){this.yy={}}return Ke.lexer=qe,Ge.prototype=Ke,Ke.Parser=Ge,new Ge}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/flowchart/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return".label {\n font-family: ".concat(e.fontFamily,";\n color: ").concat(e.nodeTextColor||e.textColor,";\n }\n .cluster-label text {\n fill: ").concat(e.titleColor,";\n }\n .cluster-label span {\n color: ").concat(e.titleColor,";\n }\n\n .label text,span {\n fill: ").concat(e.nodeTextColor||e.textColor,";\n color: ").concat(e.nodeTextColor||e.textColor,";\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(e.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(e.lineColor,";\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ").concat(e.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(e.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n background-color: ").concat(e.edgeLabelBackground,";\n fill: ").concat(e.edgeLabelBackground,";\n }\n text-align: center;\n }\n\n .cluster rect {\n fill: ").concat(e.clusterBkg,";\n stroke: ").concat(e.clusterBorder,";\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ").concat(e.titleColor,";\n }\n\n .cluster span {\n color: ").concat(e.titleColor,";\n }\n // .cluster div {\n // color: ").concat(e.titleColor,";\n // }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ").concat(e.fontFamily,";\n font-size: 12px;\n background: ").concat(e.tertiaryColor,";\n border: 1px solid ").concat(e.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n")}},"./src/diagrams/gantt/ganttDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return x})),i.d(t,"clear",(function(){return L})),i.d(t,"setAxisFormat",(function(){return M})),i.d(t,"getAxisFormat",(function(){return D})),i.d(t,"setTodayMarker",(function(){return N})),i.d(t,"getTodayMarker",(function(){return E})),i.d(t,"setDateFormat",(function(){return T})),i.d(t,"enableInclusiveEndDates",(function(){return I})),i.d(t,"endDatesAreInclusive",(function(){return O})),i.d(t,"enableTopAxis",(function(){return A})),i.d(t,"topAxisEnabled",(function(){return R})),i.d(t,"getDateFormat",(function(){return P})),i.d(t,"setExcludes",(function(){return F})),i.d(t,"getExcludes",(function(){return B})),i.d(t,"setTitle",(function(){return W})),i.d(t,"getTitle",(function(){return Y})),i.d(t,"addSection",(function(){return H})),i.d(t,"getSections",(function(){return j})),i.d(t,"getTasks",(function(){return V})),i.d(t,"addTask",(function(){return ee})),i.d(t,"findTaskById",(function(){return te})),i.d(t,"addTaskOrg",(function(){return ie})),i.d(t,"setLink",(function(){return re})),i.d(t,"setClass",(function(){return se})),i.d(t,"setClickEvent",(function(){return ae})),i.d(t,"bindFunctions",(function(){return le}));var n=i("moment-mini"),r=i.n(n),s=i("@braintree/sanitize-url"),o=i("./src/logger.js"),a=i("./src/config.js"),l=i("./src/utils.js"),c=i("./src/mermaidAPI.js");var d,h,u="",g="",f="",p=[],m="",_=[],b=[],v="",y=["active","done","crit","milestone"],w=[],C=!1,S=!1,k=0,x=function(e,t,i){c.default.parseDirective(this,e,t,i)},L=function(){_=[],b=[],v="",w=[],m="",Z=0,d=void 0,h=void 0,Q=[],u="",g="",f="",p=[],C=!1,S=!1,k=0},M=function(e){g=e},D=function(){return g},N=function(e){f=e},E=function(){return f},T=function(e){u=e},I=function(){C=!0},O=function(){return C},A=function(){S=!0},R=function(){return S},P=function(){return u},F=function(e){p=e.toLowerCase().split(/[\s,]+/)},B=function(){return p},W=function(e){m=e},Y=function(){return m},H=function(e){v=e,_.push(e)},j=function(){return _},V=function(){for(var e=ne(),t=0;!e&&t<10;)e=ne(),t++;return b=Q},z=function(e,t,i){return e.isoWeekday()>=6&&i.indexOf("weekends")>=0||i.indexOf(e.format("dddd").toLowerCase())>=0||i.indexOf(e.format(t.trim()))>=0},U=function(e,t,i){if(i.length&&!e.manualEndTime){var n=r()(e.startTime,t,!0);n.add(1,"d");var s=r()(e.endTime,t,!0),o=$(n,s,t,i);e.endTime=s.toDate(),e.renderEndTime=o}},$=function(e,t,i,n){for(var r=!1,s=null;e<=t;)r||(s=t.toDate()),(r=z(e,i,n))&&t.add(1,"d"),e.add(1,"d");return s},K=function(e,t,i){i=i.trim();var n=/^after\s+([\d\w- ]+)/.exec(i.trim());if(null!==n){var s=null;if(n[1].split(" ").forEach((function(e){var t=te(e);void 0!==t&&(s?t.endTime>s.endTime&&(s=t):s=t)})),s)return s.endTime;var a=new Date;return a.setHours(0,0,0,0),a}var l=r()(i,t.trim(),!0);return l.isValid()?l.toDate():(o.log.debug("Invalid date:"+i),o.log.debug("With date format:"+t.trim()),new Date)},q=function(e,t){if(null!==e)switch(e[2]){case"s":t.add(e[1],"seconds");break;case"m":t.add(e[1],"minutes");break;case"h":t.add(e[1],"hours");break;case"d":t.add(e[1],"days");break;case"w":t.add(e[1],"weeks")}return t.toDate()},G=function(e,t,i,n){n=n||!1,i=i.trim();var s=r()(i,t.trim(),!0);return s.isValid()?(n&&s.add(1,"d"),s.toDate()):q(/^([\d]+)([wdhms])/.exec(i.trim()),r()(e))},Z=0,J=function(e){return void 0===e?"task"+(Z+=1):e},Q=[],X={},ee=function(e,t){var i={section:v,type:v,processed:!1,manualEndTime:!1,renderEndTime:null,raw:{data:t},task:e,classes:[]},n=function(e,t){var i=(":"===t.substr(0,1)?t.substr(1,t.length):t).split(","),n={};ce(i,n,y);for(var r=0;r<i.length;r++)i[r]=i[r].trim();switch(i.length){case 1:n.id=J(),n.startTime={type:"prevTaskEnd",id:e},n.endTime={data:i[0]};break;case 2:n.id=J(),n.startTime={type:"getStartDate",startData:i[0]},n.endTime={data:i[1]};break;case 3:n.id=J(i[0]),n.startTime={type:"getStartDate",startData:i[1]},n.endTime={data:i[2]}}return n}(h,t);i.raw.startTime=n.startTime,i.raw.endTime=n.endTime,i.id=n.id,i.prevTaskId=h,i.active=n.active,i.done=n.done,i.crit=n.crit,i.milestone=n.milestone,i.order=k,k++;var r=Q.push(i);h=i.id,X[i.id]=r-1},te=function(e){var t=X[e];return Q[t]},ie=function(e,t){var i={section:v,type:v,description:e,task:e,classes:[]},n=function(e,t){var i=(":"===t.substr(0,1)?t.substr(1,t.length):t).split(","),n={};ce(i,n,y);for(var s=0;s<i.length;s++)i[s]=i[s].trim();var o="";switch(i.length){case 1:n.id=J(),n.startTime=e.endTime,o=i[0];break;case 2:n.id=J(),n.startTime=K(0,u,i[0]),o=i[1];break;case 3:n.id=J(i[0]),n.startTime=K(0,u,i[1]),o=i[2]}return o&&(n.endTime=G(n.startTime,u,o,C),n.manualEndTime=r()(o,"YYYY-MM-DD",!0).isValid(),U(n,u,p)),n}(d,t);i.startTime=n.startTime,i.endTime=n.endTime,i.id=n.id,i.active=n.active,i.done=n.done,i.crit=n.crit,i.milestone=n.milestone,d=i,b.push(i)},ne=function(){for(var e=function(e){var t=Q[e],i="";switch(Q[e].raw.startTime.type){case"prevTaskEnd":var n=te(t.prevTaskId);t.startTime=n.endTime;break;case"getStartDate":(i=K(0,u,Q[e].raw.startTime.startData))&&(Q[e].startTime=i)}return Q[e].startTime&&(Q[e].endTime=G(Q[e].startTime,u,Q[e].raw.endTime.data,C),Q[e].endTime&&(Q[e].processed=!0,Q[e].manualEndTime=r()(Q[e].raw.endTime.data,"YYYY-MM-DD",!0).isValid(),U(Q[e],u,p))),Q[e].processed},t=!0,i=0;i<Q.length;i++)e(i),t=t&&Q[i].processed;return t},re=function(e,t){var i=t;"loose"!==a.getConfig().securityLevel&&(i=Object(s.sanitizeUrl)(t)),e.split(",").forEach((function(e){void 0!==te(e)&&oe(e,(function(){window.open(i,"_self")}))})),se(e,"clickable")},se=function(e,t){e.split(",").forEach((function(e){var i=te(e);void 0!==i&&i.classes.push(t)}))},oe=function(e,t){w.push((function(){var i=document.querySelector('[id="'.concat(e,'"]'));null!==i&&i.addEventListener("click",(function(){t()}))})),w.push((function(){var i=document.querySelector('[id="'.concat(e,'-text"]'));null!==i&&i.addEventListener("click",(function(){t()}))}))},ae=function(e,t,i){e.split(",").forEach((function(e){!function(e,t,i){if("loose"===a.getConfig().securityLevel&&void 0!==t){var n=[];if("string"==typeof i){n=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(var r=0;r<n.length;r++){var s=n[r].trim();'"'===s.charAt(0)&&'"'===s.charAt(s.length-1)&&(s=s.substr(1,s.length-2)),n[r]=s}}0===n.length&&n.push(e),void 0!==te(e)&&oe(e,(function(){var e;l.default.runFunc.apply(l.default,[t].concat(function(e){if(Array.isArray(e)){for(var t=0,i=new Array(e.length);t<e.length;t++)i[t]=e[t];return i}}(e=n)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()))}))}}(e,t,i)})),se(e,"clickable")},le=function(e){w.forEach((function(t){t(e)}))};function ce(e,t,i){for(var n=!0;n;)n=!1,i.forEach((function(i){var r=new RegExp("^\\s*"+i+"\\s*$");e[0].match(r)&&(t[i]=!0,e.shift(1),n=!0)}))}t.default={parseDirective:x,getConfig:function(){return a.getConfig().gantt},clear:L,setDateFormat:T,getDateFormat:P,enableInclusiveEndDates:I,endDatesAreInclusive:O,enableTopAxis:A,topAxisEnabled:R,setAxisFormat:M,getAxisFormat:D,setTodayMarker:N,getTodayMarker:E,setTitle:W,getTitle:Y,addSection:H,getSections:j,getTasks:V,addTask:ee,findTaskById:te,addTaskOrg:ie,setExcludes:F,getExcludes:B,setClickEvent:ae,setLink:re,bindFunctions:le,durationToDate:q}},"./src/diagrams/gantt/ganttRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return d})),i.d(t,"draw",(function(){return h}));var n=i("d3"),r=i("./src/diagrams/gantt/parser/gantt.jison"),s=i("./src/diagrams/common/common.js"),o=i("./src/diagrams/gantt/ganttDb.js"),a=i("./src/config.js"),l=i("./src/utils.js");r.parser.yy=o.default;var c,d=function(){},h=function(e,t){var i=Object(a.getConfig)().gantt;r.parser.yy.clear(),r.parser.parse(e);var d=document.getElementById(t);void 0===(c=d.parentElement.offsetWidth)&&(c=1200),void 0!==i.useWidth&&(c=i.useWidth);var h=r.parser.yy.getTasks(),u=h.length*(i.barHeight+i.barGap)+2*i.topPadding;d.setAttribute("viewBox","0 0 "+c+" "+u);for(var g=Object(n.select)('[id="'.concat(t,'"]')),f=Object(n.scaleTime)().domain([Object(n.min)(h,(function(e){return e.startTime})),Object(n.max)(h,(function(e){return e.endTime}))]).rangeRound([0,c-i.leftPadding-i.rightPadding]),p=[],m=0;m<h.length;m++)p.push(h[m].type);var _,b,v,y,w,C,S,k=p;p=function(e){for(var t={},i=[],n=0,r=e.length;n<r;++n)t.hasOwnProperty(e[n])||(t[e[n]]=!0,i.push(e[n]));return i}(p),h.sort((function(e,t){var i=e.startTime,n=t.startTime,r=0;return i>n?r=1:i<n&&(r=-1),r})),_=h,b=c,v=u,w=(y=i.barHeight)+i.barGap,C=i.topPadding,S=i.leftPadding,Object(n.scaleLinear)().domain([0,p.length]).range(["#00B9FA","#F95002"]).interpolate(n.interpolateHcl),function(e,t,s,a){var l=Object(n.axisBottom)(f).tickSize(-a+t+i.gridLineStartPadding).tickFormat(Object(n.timeFormat)(r.parser.yy.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(g.append("g").attr("class","grid").attr("transform","translate("+e+", "+(a-50)+")").call(l).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),o.default.topAxisEnabled()||i.topAxis){var c=Object(n.axisTop)(f).tickSize(-a+t+i.gridLineStartPadding).tickFormat(Object(n.timeFormat)(r.parser.yy.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));g.append("g").attr("class","grid").attr("transform","translate("+e+", "+t+")").call(c).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}(S,C,0,v),function(e,t,n,r,s,o,a){g.append("g").selectAll("rect").data(e).enter().append("rect").attr("x",0).attr("y",(function(e,i){return e.order*t+n-2})).attr("width",(function(){return a-i.rightPadding/2})).attr("height",t).attr("class",(function(e){for(var t=0;t<p.length;t++)if(e.type===p[t])return"section section"+t%i.numberSectionStyles;return"section section0"}));var l=g.append("g").selectAll("rect").data(e).enter();l.append("rect").attr("id",(function(e){return e.id})).attr("rx",3).attr("ry",3).attr("x",(function(e){return e.milestone?f(e.startTime)+r+.5*(f(e.endTime)-f(e.startTime))-.5*s:f(e.startTime)+r})).attr("y",(function(e,i){return e.order*t+n})).attr("width",(function(e){return e.milestone?s:f(e.renderEndTime||e.endTime)-f(e.startTime)})).attr("height",s).attr("transform-origin",(function(e,i){return i=e.order,(f(e.startTime)+r+.5*(f(e.endTime)-f(e.startTime))).toString()+"px "+(i*t+n+.5*s).toString()+"px"})).attr("class",(function(e){var t="";e.classes.length>0&&(t=e.classes.join(" "));for(var n=0,r=0;r<p.length;r++)e.type===p[r]&&(n=r%i.numberSectionStyles);var s="";return e.active?e.crit?s+=" activeCrit":s=" active":e.done?s=e.crit?" doneCrit":" done":e.crit&&(s+=" crit"),0===s.length&&(s=" task"),e.milestone&&(s=" milestone "+s),"task"+(s+=n)+" "+t})),l.append("text").attr("id",(function(e){return e.id+"-text"})).text((function(e){return e.task})).attr("font-size",i.fontSize).attr("x",(function(e){var t=f(e.startTime),n=f(e.renderEndTime||e.endTime);e.milestone&&(t+=.5*(f(e.endTime)-f(e.startTime))-.5*s),e.milestone&&(n=t+s);var o=this.getBBox().width;return o>n-t?n+o+1.5*i.leftPadding>a?t+r-5:n+r+5:(n-t)/2+t+r})).attr("y",(function(e,r){return e.order*t+i.barHeight/2+(i.fontSize/2-2)+n})).attr("text-height",s).attr("class",(function(e){var t=f(e.startTime),n=f(e.endTime);e.milestone&&(n=t+s);var r=this.getBBox().width,o="";e.classes.length>0&&(o=e.classes.join(" "));for(var l=0,c=0;c<p.length;c++)e.type===p[c]&&(l=c%i.numberSectionStyles);var d="";return e.active&&(d=e.crit?"activeCritText"+l:"activeText"+l),e.done?d=e.crit?d+" doneCritText"+l:d+" doneText"+l:e.crit&&(d=d+" critText"+l),e.milestone&&(d+=" milestoneText"),r>n-t?n+r+1.5*i.leftPadding>a?o+" taskTextOutsideLeft taskTextOutside"+l+" "+d:o+" taskTextOutsideRight taskTextOutside"+l+" "+d+" width-"+r:o+" taskText taskText"+l+" "+d+" width-"+r}))}(_,w,C,S,y,0,b),function(e,t){for(var n=[],r=0,o=0;o<p.length;o++)n[o]=[p[o],(a=p[o],l=k,function(e){for(var t=e.length,i={};t;)i[e[--t]]=(i[e[t]]||0)+1;return i}(l)[a]||0)];var a,l;g.append("g").selectAll("text").data(n).enter().append((function(e){var t=e[0].split(s.default.lineBreakRegex),i=-(t.length-1)/2,n=document.createElementNS("http://www.w3.org/2000/svg","text");n.setAttribute("dy",i+"em");for(var r=0;r<t.length;r++){var o=document.createElementNS("http://www.w3.org/2000/svg","tspan");o.setAttribute("alignment-baseline","central"),o.setAttribute("x","10"),r>0&&o.setAttribute("dy","1em"),o.textContent=t[r],n.appendChild(o)}return n})).attr("x",10).attr("y",(function(i,s){if(!(s>0))return i[1]*e/2+t;for(var o=0;o<s;o++)return r+=n[s-1][1],i[1]*e/2+r*e+t})).attr("font-size",i.sectionFontSize).attr("font-size",i.sectionFontSize).attr("class",(function(e){for(var t=0;t<p.length;t++)if(e[0]===p[t])return"sectionTitle sectionTitle"+t%i.numberSectionStyles;return"sectionTitle"}))}(w,C),function(e,t,n,r){var s=o.default.getTodayMarker();if("off"!==s){var a=g.append("g").attr("class","today"),l=new Date,c=a.append("line");c.attr("x1",f(l)+e).attr("x2",f(l)+e).attr("y1",i.titleTopMargin).attr("y2",r-i.titleTopMargin).attr("class","today"),""!==s&&c.attr("style",s.replace(/,/g,";"))}}(S,0,0,v),Object(l.configureSvgSize)(g,u,c,i.useMaxWidth),g.append("text").text(r.parser.yy.getTitle()).attr("x",c/2).attr("y",i.titleTopMargin).attr("class","titleText")};t.default={setConf:d,draw:h}},"./src/diagrams/gantt/parser/gantt.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,3],i=[1,5],n=[7,9,11,12,13,14,15,16,17,18,19,21,28,33],r=[1,15],s=[1,16],o=[1,17],a=[1,18],l=[1,19],c=[1,20],d=[1,21],h=[1,22],u=[1,24],g=[1,26],f=[1,29],p=[5,7,9,11,12,13,14,15,16,17,18,19,21,28,33],m={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,gantt:5,document:6,EOF:7,line:8,SPACE:9,statement:10,NL:11,dateFormat:12,inclusiveEndDates:13,topAxis:14,axisFormat:15,excludes:16,todayMarker:17,title:18,section:19,clickStatement:20,taskTxt:21,taskData:22,openDirective:23,typeDirective:24,closeDirective:25,":":26,argDirective:27,click:28,callbackname:29,callbackargs:30,href:31,clickStatementDebug:32,open_directive:33,type_directive:34,arg_directive:35,close_directive:36,$accept:0,$end:1},terminals_:{2:"error",5:"gantt",7:"EOF",9:"SPACE",11:"NL",12:"dateFormat",13:"inclusiveEndDates",14:"topAxis",15:"axisFormat",16:"excludes",17:"todayMarker",18:"title",19:"section",21:"taskTxt",22:"taskData",26:":",28:"click",29:"callbackname",30:"callbackargs",31:"href",33:"open_directive",34:"type_directive",35:"arg_directive",36:"close_directive"},productions_:[0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[20,2],[20,3],[20,3],[20,4],[20,3],[20,4],[20,2],[32,2],[32,3],[32,3],[32,4],[32,3],[32,4],[32,2],[23,1],[24,1],[27,1],[25,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 2:return s[a-1];case 3:this.$=[];break;case 4:s[a-1].push(s[a]),this.$=s[a-1];break;case 5:case 6:this.$=s[a];break;case 7:case 8:this.$=[];break;case 9:n.setDateFormat(s[a].substr(11)),this.$=s[a].substr(11);break;case 10:n.enableInclusiveEndDates(),this.$=s[a].substr(18);break;case 11:n.TopAxis(),this.$=s[a].substr(8);break;case 12:n.setAxisFormat(s[a].substr(11)),this.$=s[a].substr(11);break;case 13:n.setExcludes(s[a].substr(9)),this.$=s[a].substr(9);break;case 14:n.setTodayMarker(s[a].substr(12)),this.$=s[a].substr(12);break;case 15:n.setTitle(s[a].substr(6)),this.$=s[a].substr(6);break;case 16:n.addSection(s[a].substr(8)),this.$=s[a].substr(8);break;case 18:n.addTask(s[a-1],s[a]),this.$="task";break;case 22:this.$=s[a-1],n.setClickEvent(s[a-1],s[a],null);break;case 23:this.$=s[a-2],n.setClickEvent(s[a-2],s[a-1],s[a]);break;case 24:this.$=s[a-2],n.setClickEvent(s[a-2],s[a-1],null),n.setLink(s[a-2],s[a]);break;case 25:this.$=s[a-3],n.setClickEvent(s[a-3],s[a-2],s[a-1]),n.setLink(s[a-3],s[a]);break;case 26:this.$=s[a-2],n.setClickEvent(s[a-2],s[a],null),n.setLink(s[a-2],s[a-1]);break;case 27:this.$=s[a-3],n.setClickEvent(s[a-3],s[a-1],s[a]),n.setLink(s[a-3],s[a-2]);break;case 28:this.$=s[a-1],n.setLink(s[a-1],s[a]);break;case 29:case 35:this.$=s[a-1]+" "+s[a];break;case 30:case 31:case 33:this.$=s[a-2]+" "+s[a-1]+" "+s[a];break;case 32:case 34:this.$=s[a-3]+" "+s[a-2]+" "+s[a-1]+" "+s[a];break;case 36:n.parseDirective("%%{","open_directive");break;case 37:n.parseDirective(s[a],"type_directive");break;case 38:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 39:n.parseDirective("}%%","close_directive","gantt")}},table:[{3:1,4:2,5:t,23:4,33:i},{1:[3]},{3:6,4:2,5:t,23:4,33:i},e(n,[2,3],{6:7}),{24:8,34:[1,9]},{34:[2,36]},{1:[2,1]},{4:25,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:r,13:s,14:o,15:a,16:l,17:c,18:d,19:h,20:23,21:u,23:4,28:g,33:i},{25:27,26:[1,28],36:f},e([26,36],[2,37]),e(n,[2,8],{1:[2,2]}),e(n,[2,4]),{4:25,10:30,12:r,13:s,14:o,15:a,16:l,17:c,18:d,19:h,20:23,21:u,23:4,28:g,33:i},e(n,[2,6]),e(n,[2,7]),e(n,[2,9]),e(n,[2,10]),e(n,[2,11]),e(n,[2,12]),e(n,[2,13]),e(n,[2,14]),e(n,[2,15]),e(n,[2,16]),e(n,[2,17]),{22:[1,31]},e(n,[2,19]),{29:[1,32],31:[1,33]},{11:[1,34]},{27:35,35:[1,36]},{11:[2,39]},e(n,[2,5]),e(n,[2,18]),e(n,[2,22],{30:[1,37],31:[1,38]}),e(n,[2,28],{29:[1,39]}),e(p,[2,20]),{25:40,36:f},{36:[2,38]},e(n,[2,23],{31:[1,41]}),e(n,[2,24]),e(n,[2,26],{30:[1,42]}),{11:[1,43]},e(n,[2,25]),e(n,[2,27]),e(p,[2,21])],defaultActions:{5:[2,36],6:[2,1],29:[2,39],36:[2,38]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},_={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),33;case 1:return this.begin("type_directive"),34;case 2:return this.popState(),this.begin("arg_directive"),26;case 3:return this.popState(),this.popState(),36;case 4:return 35;case 5:case 6:case 7:break;case 8:return 11;case 9:case 10:case 11:break;case 12:this.begin("href");break;case 13:this.popState();break;case 14:return 31;case 15:this.begin("callbackname");break;case 16:this.popState();break;case 17:this.popState(),this.begin("callbackargs");break;case 18:return 29;case 19:this.popState();break;case 20:return 30;case 21:this.begin("click");break;case 22:this.popState();break;case 23:return 28;case 24:return 5;case 25:return 12;case 26:return 13;case 27:return 14;case 28:return 15;case 29:return 16;case 30:return 17;case 31:return"date";case 32:return 18;case 33:return 19;case 34:return 21;case 35:return 22;case 36:return 26;case 37:return 7;case 38:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},callbackargs:{rules:[19,20],inclusive:!1},callbackname:{rules:[16,17,18],inclusive:!1},href:{rules:[13,14],inclusive:!1},click:{rules:[22,23],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],inclusive:!0}}};function b(){this.yy={}}return m.lexer=_,b.prototype=m,m.Parser=b,new b}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/gantt/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return'\n .mermaid-main-font {\n font-family: "trebuchet ms", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: '.concat(e.sectionBkgColor,";\n }\n\n .section2 {\n fill: ").concat(e.sectionBkgColor2,";\n }\n\n .section1,\n .section3 {\n fill: ").concat(e.altSectionBkgColor,";\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ").concat(e.titleColor,";\n }\n\n .sectionTitle1 {\n fill: ").concat(e.titleColor,";\n }\n\n .sectionTitle2 {\n fill: ").concat(e.titleColor,";\n }\n\n .sectionTitle3 {\n fill: ").concat(e.titleColor,";\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ").concat(e.ganttFontSize,";\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ").concat(e.gridColor,";\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ").concat(e.fontFamily,";\n fill: ").concat(e.textColor,";\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ").concat(e.todayLineColor,";\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ").concat(e.ganttFontSize,";\n // }\n\n .taskTextOutsideRight {\n fill: ").concat(e.taskTextDarkColor,";\n text-anchor: start;\n // font-size: ").concat(e.ganttFontSize,";\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ").concat(e.taskTextDarkColor,";\n text-anchor: end;\n // font-size: ").concat(e.ganttFontSize,";\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ").concat(e.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ").concat(e.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ").concat(e.taskTextClickableColor," !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ").concat(e.taskTextColor,";\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ").concat(e.taskBkgColor,";\n stroke: ").concat(e.taskBorderColor,";\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ").concat(e.taskTextOutsideColor,";\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ").concat(e.taskTextOutsideColor,";\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ").concat(e.activeTaskBkgColor,";\n stroke: ").concat(e.activeTaskBorderColor,";\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ").concat(e.taskTextDarkColor," !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ").concat(e.doneTaskBorderColor,";\n fill: ").concat(e.doneTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ").concat(e.taskTextDarkColor," !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ").concat(e.critBorderColor,";\n fill: ").concat(e.critBkgColor,";\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ").concat(e.critBorderColor,";\n fill: ").concat(e.activeTaskBkgColor,";\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ").concat(e.critBorderColor,";\n fill: ").concat(e.doneTaskBkgColor,";\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ").concat(e.taskTextDarkColor," !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ").concat(e.taskTextDarkColor," !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ").concat(e.textColor," ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n")}},"./src/diagrams/git/gitGraphAst.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setDirection",(function(){return g})),i.d(t,"setOptions",(function(){return p})),i.d(t,"getOptions",(function(){return m})),i.d(t,"commit",(function(){return _})),i.d(t,"branch",(function(){return b})),i.d(t,"merge",(function(){return v})),i.d(t,"checkout",(function(){return y})),i.d(t,"reset",(function(){return w})),i.d(t,"prettyPrint",(function(){return k})),i.d(t,"clear",(function(){return x})),i.d(t,"getBranchesAsObjArray",(function(){return L})),i.d(t,"getBranches",(function(){return M})),i.d(t,"getCommits",(function(){return D})),i.d(t,"getCommitsArray",(function(){return N})),i.d(t,"getCurrentBranch",(function(){return E})),i.d(t,"getDirection",(function(){return T})),i.d(t,"getHead",(function(){return I}));var n=i("./src/logger.js"),r=i("./src/utils.js"),s={},o=null,a={master:o},l="master",c="LR",d=0;function h(){return Object(r.random)({length:7})}function u(e,t){for(n.log.debug("Entering isfastforwardable:",e.id,t.id);e.seq<=t.seq&&e!==t&&null!=t.parent;){if(Array.isArray(t.parent))return n.log.debug("In merge commit:",t.parent),u(e,s[t.parent[0]])||u(e,s[t.parent[1]]);t=s[t.parent]}return n.log.debug(e.id,t.id),e.id===t.id}var g=function(e){c=e},f={},p=function(e){n.log.debug("options str",e),e=(e=e&&e.trim())||"{}";try{f=JSON.parse(e)}catch(e){n.log.error("error while parsing gitGraph options",e.message)}},m=function(){return f},_=function(e){var t={id:h(),message:e,seq:d++,parent:null==o?null:o.id};o=t,s[t.id]=t,a[l]=t.id,n.log.debug("in pushCommit "+t.id)},b=function(e){a[e]=null!=o?o.id:null,n.log.debug("in createBranch")},v=function(e){var t=s[a[l]],i=s[a[e]];if(function(e,t){return e.seq>t.seq&&u(t,e)}(t,i))n.log.debug("Already merged");else{if(u(t,i))a[l]=a[e],o=s[a[l]];else{var r={id:h(),message:"merged branch "+e+" into "+l,seq:d++,parent:[null==o?null:o.id,a[e]]};o=r,s[r.id]=r,a[l]=r.id}n.log.debug(a),n.log.debug("in mergeBranch")}},y=function(e){n.log.debug("in checkout");var t=a[l=e];o=s[t]},w=function(e){n.log.debug("in reset",e);var t=e.split(":")[0],i=parseInt(e.split(":")[1]),r="HEAD"===t?o:s[a[t]];for(n.log.debug(r,i);i>0;)if(i--,!(r=s[r.parent])){var c="Critical error - unique parent commit not found during reset";throw n.log.error(c),c}o=r,a[l]=r.id};function C(e,t,i){var n=e.indexOf(t);-1===n?e.push(i):e.splice(n,1,i)}function S(e){var t=e.reduce((function(e,t){return e.seq>t.seq?e:t}),e[0]),i="";e.forEach((function(e){i+=e===t?"\t*":"\t|"}));var r,o,l,c=[i,t.id,t.seq];for(var d in a)a[d]===t.id&&c.push(d);if(n.log.debug(c.join(" ")),Array.isArray(t.parent)){var h=s[t.parent[0]];C(e,t,h),e.push(s[t.parent[1]])}else{if(null==t.parent)return;var u=s[t.parent];C(e,t,u)}r=e,o=function(e){return e.id},l=Object.create(null),S(e=r.reduce((function(e,t){var i=o(t);return l[i]||(l[i]=!0,e.push(t)),e}),[]))}var k=function(){n.log.debug(s),S([N()[0]])},x=function(){s={},a={master:o=null},l="master",d=0},L=function(){var e=[];for(var t in a)e.push({name:t,commit:s[a[t]]});return e},M=function(){return a},D=function(){return s},N=function(){var e=Object.keys(s).map((function(e){return s[e]}));return e.forEach((function(e){n.log.debug(e.id)})),e.sort((function(e,t){return t.seq-e.seq})),e},E=function(){return l},T=function(){return c},I=function(){return o};t.default={setDirection:g,setOptions:p,getOptions:m,commit:_,branch:b,merge:v,checkout:y,reset:w,prettyPrint:k,clear:x,getBranchesAsObjArray:L,getBranches:M,getCommits:D,getCommitsArray:N,getCurrentBranch:E,getDirection:T,getHead:I}},"./src/diagrams/git/gitGraphRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return g})),i.d(t,"draw",(function(){return y}));var n,r=i("d3"),s=i("./src/diagrams/git/gitGraphAst.js"),o=i("./src/diagrams/git/parser/gitGraph.jison"),a=i.n(o),l=i("./src/logger.js"),c=i("./src/utils.js"),d={},h={nodeSpacing:150,nodeFillColor:"yellow",nodeStrokeWidth:2,nodeStrokeColor:"grey",lineStrokeWidth:4,branchOffset:50,lineColor:"grey",leftMargin:50,branchColors:["#442f74","#983351","#609732","#AA9A39"],nodeRadius:10,nodeLabel:{width:75,height:100,x:-25,y:0}},u={},g=function(e){u=e};function f(e,t,i,n){var s=Object(c.interpolateToCurve)(n,r.curveBasis),o=h.branchColors[i%h.branchColors.length],a=Object(r.line)().x((function(e){return Math.round(e.x)})).y((function(e){return Math.round(e.y)})).curve(s);e.append("svg:path").attr("d",a(t)).style("stroke",o).style("stroke-width",h.lineStrokeWidth).style("fill","none")}function p(e,t){t=t||e.node().getBBox();var i=e.node().getCTM();return{left:i.e+t.x*i.a,top:i.f+t.y*i.d,width:t.width,height:t.height}}function m(e,t,i,n,r){l.log.debug("svgDrawLineForCommits: ",t,i);var s=p(e.select("#node-"+t+" circle")),o=p(e.select("#node-"+i+" circle"));switch(n){case"LR":if(s.left-o.left>h.nodeSpacing){var a={x:s.left-h.nodeSpacing,y:o.top+o.height/2};f(e,[a,{x:o.left+o.width,y:o.top+o.height/2}],r,"linear"),f(e,[{x:s.left,y:s.top+s.height/2},{x:s.left-h.nodeSpacing/2,y:s.top+s.height/2},{x:s.left-h.nodeSpacing/2,y:a.y},a],r)}else f(e,[{x:s.left,y:s.top+s.height/2},{x:s.left-h.nodeSpacing/2,y:s.top+s.height/2},{x:s.left-h.nodeSpacing/2,y:o.top+o.height/2},{x:o.left+o.width,y:o.top+o.height/2}],r);break;case"BT":if(o.top-s.top>h.nodeSpacing){var c={x:o.left+o.width/2,y:s.top+s.height+h.nodeSpacing};f(e,[c,{x:o.left+o.width/2,y:o.top}],r,"linear"),f(e,[{x:s.left+s.width/2,y:s.top+s.height},{x:s.left+s.width/2,y:s.top+s.height+h.nodeSpacing/2},{x:o.left+o.width/2,y:c.y-h.nodeSpacing/2},c],r)}else f(e,[{x:s.left+s.width/2,y:s.top+s.height},{x:s.left+s.width/2,y:s.top+h.nodeSpacing/2},{x:o.left+o.width/2,y:o.top-h.nodeSpacing/2},{x:o.left+o.width/2,y:o.top}],r)}}function _(e,t){return e.select(t).node().cloneNode(!0)}function b(e,t,i,r){var s,o=Object.keys(d).length;if("string"==typeof t)do{if(s=d[t],l.log.debug("in renderCommitHistory",s.id,s.seq),e.select("#node-"+t).size()>0)return;e.append((function(){return _(e,"#def-commit")})).attr("class","commit").attr("id",(function(){return"node-"+s.id})).attr("transform",(function(){switch(r){case"LR":return"translate("+(s.seq*h.nodeSpacing+h.leftMargin)+", "+n*h.branchOffset+")";case"BT":return"translate("+(n*h.branchOffset+h.leftMargin)+", "+(o-s.seq)*h.nodeSpacing+")"}})).attr("fill",h.nodeFillColor).attr("stroke",h.nodeStrokeColor).attr("stroke-width",h.nodeStrokeWidth);var a=void 0;for(var c in i)if(i[c].commit===s){a=i[c];break}a&&(l.log.debug("found branch ",a.name),e.select("#node-"+s.id+" p").append("xhtml:span").attr("class","branch-label").text(a.name+", ")),e.select("#node-"+s.id+" p").append("xhtml:span").attr("class","commit-id").text(s.id),""!==s.message&&"BT"===r&&e.select("#node-"+s.id+" p").append("xhtml:span").attr("class","commit-msg").text(", "+s.message),t=s.parent}while(t&&d[t]);Array.isArray(t)&&(l.log.debug("found merge commmit",t),b(e,t[0],i,r),n++,b(e,t[1],i,r),n--)}function v(e,t,i,n){for(n=n||0;t.seq>0&&!t.lineDrawn;)"string"==typeof t.parent?(m(e,t.id,t.parent,i,n),t.lineDrawn=!0,t=d[t.parent]):Array.isArray(t.parent)&&(m(e,t.id,t.parent[0],i,n),m(e,t.id,t.parent[1],i,n+1),v(e,d[t.parent[1]],i,n+1),t.lineDrawn=!0,t=d[t.parent[0]])}var y=function(e,t,i){try{var o=a.a.parser;o.yy=s.default,o.yy.clear(),l.log.debug("in gitgraph renderer",e+"\n","id:",t,i),o.parse(e+"\n"),h=Object.assign(h,u,s.default.getOptions()),l.log.debug("effective options",h);var c=s.default.getDirection();d=s.default.getCommits();var g=s.default.getBranchesAsObjArray();"BT"===c&&(h.nodeLabel.x=g.length*h.branchOffset,h.nodeLabel.width="100%",h.nodeLabel.y=-2*h.nodeRadius);var f=Object(r.select)('[id="'.concat(t,'"]'));for(var p in function(e){e.append("defs").append("g").attr("id","def-commit").append("circle").attr("r",h.nodeRadius).attr("cx",0).attr("cy",0),e.select("#def-commit").append("foreignObject").attr("width",h.nodeLabel.width).attr("height",h.nodeLabel.height).attr("x",h.nodeLabel.x).attr("y",h.nodeLabel.y).attr("class","node-label").attr("requiredFeatures","http://www.w3.org/TR/SVG11/feature#Extensibility").append("p").html("")}(f),n=1,g){var m=g[p];b(f,m.commit.id,g,c),v(f,m.commit,c),n++}f.attr("height",(function(){return"BT"===c?Object.keys(d).length*h.nodeSpacing:(g.length+1)*h.branchOffset}))}catch(e){l.log.error("Error while rendering gitgraph"),l.log.error(e.message)}};t.default={setConf:g,draw:y}},"./src/diagrams/git/parser/gitGraph.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[2,3],i=[1,7],n=[7,12,15,17,19,20,21],r=[7,11,12,15,17,19,20,21],s=[2,20],o=[1,32],a={trace:function(){},yy:{},symbols_:{error:2,start:3,GG:4,":":5,document:6,EOF:7,DIR:8,options:9,body:10,OPT:11,NL:12,line:13,statement:14,COMMIT:15,commit_arg:16,BRANCH:17,ID:18,CHECKOUT:19,MERGE:20,RESET:21,reset_arg:22,STR:23,HEAD:24,reset_parents:25,CARET:26,$accept:0,$end:1},terminals_:{2:"error",4:"GG",5:":",7:"EOF",8:"DIR",11:"OPT",12:"NL",15:"COMMIT",17:"BRANCH",18:"ID",19:"CHECKOUT",20:"MERGE",21:"RESET",23:"STR",24:"HEAD",26:"CARET"},productions_:[0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 1:return s[a-1];case 2:return n.setDirection(s[a-3]),s[a-1];case 4:n.setOptions(s[a-1]),this.$=s[a];break;case 5:s[a-1]+=s[a],this.$=s[a-1];break;case 7:this.$=[];break;case 8:s[a-1].push(s[a]),this.$=s[a-1];break;case 9:this.$=s[a-1];break;case 11:n.commit(s[a]);break;case 12:n.branch(s[a]);break;case 13:n.checkout(s[a]);break;case 14:n.merge(s[a]);break;case 15:n.reset(s[a]);break;case 16:this.$="";break;case 17:this.$=s[a];break;case 18:this.$=s[a-1]+":"+s[a];break;case 19:this.$=s[a-1]+":"+n.count,n.count=0;break;case 20:n.count=0;break;case 21:n.count+=1}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:t,9:6,12:i},{5:[1,8]},{7:[1,9]},e(n,[2,7],{10:10,11:[1,11]}),e(r,[2,6]),{6:12,7:t,9:6,12:i},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},e(r,[2,5]),{7:[1,21]},e(n,[2,8]),{12:[1,22]},e(n,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},e(n,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:s,25:31,26:o},{12:s,25:33,26:o},{12:[2,18]},{12:s,25:34,26:o},{12:[2,19]},{12:[2,21]}],defaultActions:{9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},l={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return 12;case 1:case 2:case 3:break;case 4:return 4;case 5:return 15;case 6:return 17;case 7:return 20;case 8:return 21;case 9:return 19;case 10:case 11:return 8;case 12:return 5;case 13:return 26;case 14:this.begin("options");break;case 15:this.popState();break;case 16:return 11;case 17:this.begin("string");break;case 18:this.popState();break;case 19:return 23;case 20:return 18;case 21:return 7}},rules:[/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit\b)/i,/^(?:branch\b)/i,/^(?:merge\b)/i,/^(?:reset\b)/i,/^(?:checkout\b)/i,/^(?:LR\b)/i,/^(?:BT\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:end\r?\n)/i,/^(?:[^\n]+\r?\n)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[a-zA-Z][-_\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],conditions:{options:{rules:[15,16],inclusive:!1},string:{rules:[18,19],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],inclusive:!0}}};function c(){this.yy={}}return a.lexer=l,c.prototype=a,a.Parser=c,new c}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/git/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(){return"\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n"}},"./src/diagrams/info/infoDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setMessage",(function(){return o})),i.d(t,"getMessage",(function(){return a})),i.d(t,"setInfo",(function(){return l})),i.d(t,"getInfo",(function(){return c}));var n=i("./src/logger.js"),r="",s=!1,o=function(e){n.log.debug("Setting message to: "+e),r=e},a=function(){return r},l=function(e){s=e},c=function(){return s};t.default={setMessage:o,getMessage:a,setInfo:l,getInfo:c}},"./src/diagrams/info/infoRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return c})),i.d(t,"draw",(function(){return d}));var n=i("d3"),r=i("./src/diagrams/info/infoDb.js"),s=i("./src/diagrams/info/parser/info.jison"),o=i.n(s),a=i("./src/logger.js"),l={},c=function(e){Object.keys(e).forEach((function(t){l[t]=e[t]}))},d=function(e,t,i){try{var s=o.a.parser;s.yy=r.default,a.log.debug("Renering info diagram\n"+e),s.parse(e),a.log.debug("Parsed info diagram");var l=Object(n.select)("#"+t);l.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size","32px").style("text-anchor","middle").text("v "+i),l.attr("height",100),l.attr("width",400)}catch(e){a.log.error("Error while rendering info diagram"),a.log.error(e.message)}};t.default={setConf:c,draw:d}},"./src/diagrams/info/parser/info.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[6,9,10],i={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(e,t,i,n,r,s,o){switch(s.length,r){case 1:return n;case 4:break;case 6:n.setInfo(!0)}},table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},e(t,[2,3]),e(t,[2,4]),e(t,[2,5]),e(t,[2,6])],defaultActions:{4:[2,1]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},n={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};function r(){this.yy={}}return i.lexer=n,r.prototype=i,i.Parser=r,new r}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/info/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(){return""}},"./src/diagrams/pie/parser/pie.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,4],i=[1,5],n=[1,6],r=[1,7],s=[1,9],o=[1,10,12,19,20,21,22],a=[1,6,10,12,19,20,21,22],l=[19,20,21],c=[1,22],d=[6,19,20,21,22],h={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,directive:5,PIE:6,document:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,openDirective:14,typeDirective:15,closeDirective:16,":":17,argDirective:18,NEWLINE:19,";":20,EOF:21,open_directive:22,type_directive:23,arg_directive:24,close_directive:25,$accept:0,$end:1},terminals_:{2:"error",6:"PIE",10:"txt",11:"value",12:"title",13:"title_value",17:":",19:"NEWLINE",20:";",21:"EOF",22:"open_directive",23:"type_directive",24:"arg_directive",25:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,2],[9,1],[5,3],[5,5],[4,1],[4,1],[4,1],[14,1],[15,1],[18,1],[16,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 6:this.$=s[a-1];break;case 8:n.addSection(s[a-1],n.cleanupValue(s[a]));break;case 9:this.$=s[a].trim(),n.setTitle(this.$);break;case 16:n.parseDirective("%%{","open_directive");break;case 17:n.parseDirective(s[a],"type_directive");break;case 18:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 19:n.parseDirective("}%%","close_directive","pie")}},table:[{3:1,4:2,5:3,6:t,14:8,19:i,20:n,21:r,22:s},{1:[3]},{3:10,4:2,5:3,6:t,14:8,19:i,20:n,21:r,22:s},{3:11,4:2,5:3,6:t,14:8,19:i,20:n,21:r,22:s},e(o,[2,4],{7:12}),e(a,[2,13]),e(a,[2,14]),e(a,[2,15]),{15:13,23:[1,14]},{23:[2,16]},{1:[2,1]},{1:[2,2]},e(l,[2,7],{14:8,8:15,9:16,5:19,1:[2,3],10:[1,17],12:[1,18],22:s}),{16:20,17:[1,21],25:c},e([17,25],[2,17]),e(o,[2,5]),{4:23,19:i,20:n,21:r},{11:[1,24]},{13:[1,25]},e(l,[2,10]),e(d,[2,11]),{18:26,24:[1,27]},e(d,[2,19]),e(o,[2,6]),e(l,[2,8]),e(l,[2,9]),{16:28,25:c},{25:[2,18]},e(d,[2,12])],defaultActions:{9:[2,16],10:[2,1],11:[2,2],27:[2,18]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},u={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),22;case 1:return this.begin("type_directive"),23;case 2:return this.popState(),this.begin("arg_directive"),17;case 3:return this.popState(),this.popState(),25;case 4:return 24;case 5:case 6:break;case 7:return 19;case 8:case 9:break;case 10:return this.begin("title"),12;case 11:return this.popState(),"title_value";case 12:this.begin("string");break;case 13:this.popState();break;case 14:return"txt";case 15:return 6;case 16:return"value";case 17:return 21}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},title:{rules:[11],inclusive:!1},string:{rules:[13,14],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,12,15,16,17],inclusive:!0}}};function g(){this.yy={}}return h.lexer=u,g.prototype=h,h.Parser=g,new g}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/pie/pieDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return l}));var n=i("./src/logger.js"),r=i("./src/mermaidAPI.js"),s=i("./src/config.js"),o={},a="",l=function(e,t,i){r.default.parseDirective(this,e,t,i)};t.default={parseDirective:l,getConfig:function(){return s.getConfig().pie},addSection:function(e,t){void 0===o[e]&&(o[e]=t,n.log.debug("Added new section :",e))},getSections:function(){return o},cleanupValue:function(e){return":"===e.substring(0,1)?(e=e.substring(1).trim(),Number(e.trim())):Number(e.trim())},clear:function(){o={},a=""},setTitle:function(e){a=e},getTitle:function(){return a}}},"./src/diagrams/pie/pieRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return h})),i.d(t,"draw",(function(){return u}));var n,r=i("d3"),s=i("./src/diagrams/pie/pieDb.js"),o=i("./src/diagrams/pie/parser/pie.jison"),a=i.n(o),l=i("./src/logger.js"),c=i("./src/utils.js"),d={},h=function(e){Object.keys(e).forEach((function(t){d[t]=e[t]}))},u=function(e,t){try{var i=a.a.parser;i.yy=s.default,l.log.debug("Rendering info diagram\n"+e),i.yy.clear(),i.parse(e),l.log.debug("Parsed info diagram");var o=document.getElementById(t);void 0===(n=o.parentElement.offsetWidth)&&(n=1200),void 0!==d.useWidth&&(n=d.useWidth);var h=Object(r.select)("#"+t);Object(c.configureSvgSize)(h,450,n,d.useMaxWidth),o.setAttribute("viewBox","0 0 "+n+" 450");var u=Math.min(n,450)/2-40,g=h.append("g").attr("transform","translate("+n/2+",225)"),f=s.default.getSections(),p=0;Object.keys(f).forEach((function(e){p+=f[e]}));var m=Object(r.scaleOrdinal)().domain(f).range(r.schemeSet2),_=Object(r.pie)().value((function(e){return e.value}))(Object(r.entries)(f)),b=Object(r.arc)().innerRadius(0).outerRadius(u);g.selectAll("mySlices").data(_).enter().append("path").attr("d",b).attr("fill",(function(e){return m(e.data.key)})).attr("stroke","black").style("stroke-width","2px").style("opacity",.7),g.selectAll("mySlices").data(_.filter((function(e){return 0!==e.data.value}))).enter().append("text").text((function(e){return(e.data.value/p*100).toFixed(0)+"%"})).attr("transform",(function(e){return"translate("+b.centroid(e)+")"})).style("text-anchor","middle").attr("class","slice").style("font-size",17),g.append("text").text(i.yy.getTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");var v=g.selectAll(".legend").data(m.domain()).enter().append("g").attr("class","legend").attr("transform",(function(e,t){return"translate(216,"+(22*t-22*m.domain().length/2)+")"}));v.append("rect").attr("width",18).attr("height",18).style("fill",m).style("stroke",m),v.append("text").attr("x",22).attr("y",14).text((function(e){return e}))}catch(e){l.log.error("Error while rendering info diagram"),l.log.error(e)}};t.default={setConf:h,draw:u}},"./src/diagrams/pie/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return".pieTitleText {\n text-anchor: middle;\n font-size: 25px;\n fill: ".concat(e.taskTextDarkColor,";\n font-family: ").concat(e.fontFamily,";\n }\n .slice {\n font-family: ").concat(e.fontFamily,";\n fill: ").concat(e.textColor,";\n // fill: white;\n }\n .legend text {\n fill: ").concat(e.taskTextDarkColor,";\n font-family: ").concat(e.fontFamily,";\n font-size: 17px;\n }\n")}},"./src/diagrams/requirement/parser/requirementDiagram.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,3],i=[1,5],n=[1,14],r=[2,9],s=[1,18],o=[1,19],a=[1,20],l=[1,21],c=[1,22],d=[1,23],h=[1,16],u=[1,24],g=[1,25],f=[1,28],p=[66,67],m=[6,8,35,36,37,38,39,40,48,55,57,66,67],_=[5,14],b=[1,47],v=[1,48],y=[1,49],w=[1,50],C=[1,51],S=[1,52],k=[1,53],x=[57,58],L=[1,65],M=[1,61],D=[1,62],N=[1,63],E=[1,64],T=[1,66],I=[1,70],O=[1,71],A=[1,68],R=[1,69],P=[6,8,35,36,37,38,39,40,48,66,67],F={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,RD:5,NEWLINE:6,diagram:7,EOF:8,openDirective:9,typeDirective:10,closeDirective:11,":":12,argDirective:13,open_directive:14,type_directive:15,arg_directive:16,close_directive:17,requirementDef:18,elementDef:19,relationshipDef:20,requirementType:21,requirementName:22,STRUCT_START:23,requirementBody:24,ID:25,COLONSEP:26,id:27,TEXT:28,text:29,RISK:30,riskLevel:31,VERIFYMTHD:32,verifyType:33,STRUCT_STOP:34,REQUIREMENT:35,FUNCTIONAL_REQUIREMENT:36,INTERFACE_REQUIREMENT:37,PERFORMANCE_REQUIREMENT:38,PHYSICAL_REQUIREMENT:39,DESIGN_CONSTRAINT:40,LOW_RISK:41,MED_RISK:42,HIGH_RISK:43,VERIFY_ANALYSIS:44,VERIFY_DEMONSTRATION:45,VERIFY_INSPECTION:46,VERIFY_TEST:47,ELEMENT:48,elementName:49,elementBody:50,TYPE:51,type:52,DOCREF:53,ref:54,END_ARROW_L:55,relationship:56,LINE:57,END_ARROW_R:58,CONTAINS:59,COPIES:60,DERIVES:61,SATISFIES:62,VERIFIES:63,REFINES:64,TRACES:65,unqString:66,qString:67,$accept:0,$end:1},terminals_:{2:"error",5:"RD",6:"NEWLINE",8:"EOF",12:":",14:"open_directive",15:"type_directive",16:"arg_directive",17:"close_directive",23:"STRUCT_START",25:"ID",26:"COLONSEP",28:"TEXT",30:"RISK",32:"VERIFYMTHD",34:"STRUCT_STOP",35:"REQUIREMENT",36:"FUNCTIONAL_REQUIREMENT",37:"INTERFACE_REQUIREMENT",38:"PERFORMANCE_REQUIREMENT",39:"PHYSICAL_REQUIREMENT",40:"DESIGN_CONSTRAINT",41:"LOW_RISK",42:"MED_RISK",43:"HIGH_RISK",44:"VERIFY_ANALYSIS",45:"VERIFY_DEMONSTRATION",46:"VERIFY_INSPECTION",47:"VERIFY_TEST",48:"ELEMENT",51:"TYPE",53:"DOCREF",55:"END_ARROW_L",57:"LINE",58:"END_ARROW_R",59:"CONTAINS",60:"COPIES",61:"DERIVES",62:"SATISFIES",63:"VERIFIES",64:"REFINES",65:"TRACES",66:"unqString",67:"qString"},productions_:[0,[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 5:n.parseDirective("%%{","open_directive");break;case 6:n.parseDirective(s[a],"type_directive");break;case 7:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 8:n.parseDirective("}%%","close_directive","pie");break;case 9:this.$=[];break;case 14:n.addRequirement(s[a-3],s[a-4]);break;case 15:n.setNewReqId(s[a-2]);break;case 16:n.setNewReqText(s[a-2]);break;case 17:n.setNewReqRisk(s[a-2]);break;case 18:n.setNewReqVerifyMethod(s[a-2]);break;case 21:this.$=n.RequirementType.REQUIREMENT;break;case 22:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 23:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 24:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 25:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 26:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 27:this.$=n.RiskLevel.LOW_RISK;break;case 28:this.$=n.RiskLevel.MED_RISK;break;case 29:this.$=n.RiskLevel.HIGH_RISK;break;case 30:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 31:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 32:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 33:this.$=n.VerifyType.VERIFY_TEST;break;case 34:n.addElement(s[a-3]);break;case 35:n.setNewElementType(s[a-2]);break;case 36:n.setNewElementDocRef(s[a-2]);break;case 39:n.addRelationship(s[a-2],s[a],s[a-4]);break;case 40:n.addRelationship(s[a-2],s[a-4],s[a]);break;case 41:this.$=n.Relationships.CONTAINS;break;case 42:this.$=n.Relationships.COPIES;break;case 43:this.$=n.Relationships.DERIVES;break;case 44:this.$=n.Relationships.SATISFIES;break;case 45:this.$=n.Relationships.VERIFIES;break;case 46:this.$=n.Relationships.REFINES;break;case 47:this.$=n.Relationships.TRACES}},table:[{3:1,4:2,5:t,9:4,14:i},{1:[3]},{3:6,4:2,5:t,9:4,14:i},{6:[1,7]},{10:8,15:[1,9]},{15:[2,5]},{1:[2,1]},{6:n,7:10,8:r,18:11,19:12,20:13,21:15,27:17,35:s,36:o,37:a,38:l,39:c,40:d,48:h,66:u,67:g},{11:26,12:[1,27],17:f},e([12,17],[2,6]),{8:[1,29]},{6:n,7:30,8:r,18:11,19:12,20:13,21:15,27:17,35:s,36:o,37:a,38:l,39:c,40:d,48:h,66:u,67:g},{6:n,7:31,8:r,18:11,19:12,20:13,21:15,27:17,35:s,36:o,37:a,38:l,39:c,40:d,48:h,66:u,67:g},{6:n,7:32,8:r,18:11,19:12,20:13,21:15,27:17,35:s,36:o,37:a,38:l,39:c,40:d,48:h,66:u,67:g},{6:n,7:33,8:r,18:11,19:12,20:13,21:15,27:17,35:s,36:o,37:a,38:l,39:c,40:d,48:h,66:u,67:g},{22:34,66:[1,35],67:[1,36]},{49:37,66:[1,38],67:[1,39]},{55:[1,40],57:[1,41]},e(p,[2,21]),e(p,[2,22]),e(p,[2,23]),e(p,[2,24]),e(p,[2,25]),e(p,[2,26]),e(m,[2,50]),e(m,[2,51]),e(_,[2,3]),{13:42,16:[1,43]},e(_,[2,8]),{1:[2,2]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{23:[1,44]},{23:[2,48]},{23:[2,49]},{23:[1,45]},{23:[2,54]},{23:[2,55]},{56:46,59:b,60:v,61:y,62:w,63:C,64:S,65:k},{56:54,59:b,60:v,61:y,62:w,63:C,64:S,65:k},{11:55,17:f},{17:[2,7]},{6:[1,56]},{6:[1,57]},{57:[1,58]},e(x,[2,41]),e(x,[2,42]),e(x,[2,43]),e(x,[2,44]),e(x,[2,45]),e(x,[2,46]),e(x,[2,47]),{58:[1,59]},e(_,[2,4]),{6:L,24:60,25:M,28:D,30:N,32:E,34:T},{6:I,34:O,50:67,51:A,53:R},{27:72,66:u,67:g},{27:73,66:u,67:g},e(P,[2,14]),{26:[1,74]},{26:[1,75]},{26:[1,76]},{26:[1,77]},{6:L,24:78,25:M,28:D,30:N,32:E,34:T},e(P,[2,20]),e(P,[2,34]),{26:[1,79]},{26:[1,80]},{6:I,34:O,50:81,51:A,53:R},e(P,[2,38]),e(P,[2,39]),e(P,[2,40]),{27:82,66:u,67:g},{29:83,66:[1,84],67:[1,85]},{31:86,41:[1,87],42:[1,88],43:[1,89]},{33:90,44:[1,91],45:[1,92],46:[1,93],47:[1,94]},e(P,[2,19]),{52:95,66:[1,96],67:[1,97]},{54:98,66:[1,99],67:[1,100]},e(P,[2,37]),{6:[1,101]},{6:[1,102]},{6:[2,52]},{6:[2,53]},{6:[1,103]},{6:[2,27]},{6:[2,28]},{6:[2,29]},{6:[1,104]},{6:[2,30]},{6:[2,31]},{6:[2,32]},{6:[2,33]},{6:[1,105]},{6:[2,56]},{6:[2,57]},{6:[1,106]},{6:[2,58]},{6:[2,59]},{6:L,24:107,25:M,28:D,30:N,32:E,34:T},{6:L,24:108,25:M,28:D,30:N,32:E,34:T},{6:L,24:109,25:M,28:D,30:N,32:E,34:T},{6:L,24:110,25:M,28:D,30:N,32:E,34:T},{6:I,34:O,50:111,51:A,53:R},{6:I,34:O,50:112,51:A,53:R},e(P,[2,15]),e(P,[2,16]),e(P,[2,17]),e(P,[2,18]),e(P,[2,35]),e(P,[2,36])],defaultActions:{5:[2,5],6:[2,1],29:[2,2],30:[2,10],31:[2,11],32:[2,12],33:[2,13],35:[2,48],36:[2,49],38:[2,54],39:[2,55],43:[2,7],84:[2,52],85:[2,53],87:[2,27],88:[2,28],89:[2,29],91:[2,30],92:[2,31],93:[2,32],94:[2,33],96:[2,56],97:[2,57],99:[2,58],100:[2,59]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},B={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),14;case 1:return this.begin("type_directive"),15;case 2:return this.popState(),this.begin("arg_directive"),12;case 3:return this.popState(),this.popState(),17;case 4:return 16;case 5:return 6;case 6:case 7:case 8:break;case 9:return 8;case 10:return 5;case 11:return 23;case 12:return 34;case 13:return 26;case 14:return 25;case 15:return 28;case 16:return 30;case 17:return 32;case 18:return 35;case 19:return 36;case 20:return 37;case 21:return 38;case 22:return 39;case 23:return 40;case 24:return 41;case 25:return 42;case 26:return 43;case 27:return 44;case 28:return 45;case 29:return 46;case 30:return 47;case 31:return 48;case 32:return 59;case 33:return 60;case 34:return 61;case 35:return 62;case 36:return 63;case 37:return 64;case 38:return 65;case 39:return 51;case 40:return 53;case 41:return 55;case 42:return 58;case 43:return 57;case 44:this.begin("string");break;case 45:this.popState();break;case 46:return"qString";case 47:return t.yytext=t.yytext.trim(),66}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{close_directive:{rules:[],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},open_directive:{rules:[1],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[45,46],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],inclusive:!0}}};function W(){this.yy={}}return F.lexer=B,W.prototype=F,F.Parser=W,new W}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/requirement/requirementDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return h}));var n=i("./src/config.js"),r=i("./src/logger.js"),s=i("./src/mermaidAPI.js"),o=[],a={},l={},c={},d={},h=function(e,t,i){s.default.parseDirective(this,e,t,i)};t.default={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},parseDirective:h,getConfig:function(){return n.getConfig().req},addRequirement:function(e,t){return void 0===l[e]&&(l[e]={name:e,type:t,id:a.id,text:a.text,risk:a.risk,verifyMethod:a.verifyMethod}),a={},l[e]},getRequirements:function(){return l},setNewReqId:function(e){void 0!==a&&(a.id=e)},setNewReqText:function(e){void 0!==a&&(a.text=e)},setNewReqRisk:function(e){void 0!==a&&(a.risk=e)},setNewReqVerifyMethod:function(e){void 0!==a&&(a.verifyMethod=e)},addElement:function(e){return void 0===d[e]&&(d[e]={name:e,type:c.type,docRef:c.docRef},r.log.info("Added new requirement: ",e)),c={},d[e]},getElements:function(){return d},setNewElementType:function(e){void 0!==c&&(c.type=e)},setNewElementDocRef:function(e){void 0!==c&&(c.docRef=e)},addRelationship:function(e,t,i){o.push({type:e,src:t,dst:i})},getRelationships:function(){return o},clear:function(){o=[],a={},l={},c={},d={}}}},"./src/diagrams/requirement/requirementMarkers.js":function(e,t,i){"use strict";i.r(t);var n={CONTAINS:"contains",ARROW:"arrow"};t.default={ReqMarkers:n,insertLineEndings:function(e,t){var i=e.append("defs").append("marker").attr("id",n.CONTAINS+"_line_ending").attr("refX",0).attr("refY",t.line_height/2).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("g");i.append("circle").attr("cx",t.line_height/2).attr("cy",t.line_height/2).attr("r",t.line_height/2).attr("stroke",t.rect_border_color).attr("stroke-width",1).attr("fill","none"),i.append("line").attr("x1",0).attr("x2",t.line_height).attr("y1",t.line_height/2).attr("y2",t.line_height/2).attr("stroke",t.rect_border_color).attr("stroke-width",1),i.append("line").attr("y1",0).attr("y2",t.line_height).attr("x1",t.line_height/2).attr("x2",t.line_height/2).attr("stroke",t.rect_border_color).attr("stroke-width",1),e.append("defs").append("marker").attr("id",n.ARROW+"_line_ending").attr("refX",t.line_height).attr("refY",.5*t.line_height).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("path").attr("d","M0,0 \n L".concat(t.line_height,",").concat(t.line_height/2," \n M").concat(t.line_height,",").concat(t.line_height/2," \n L0,").concat(t.line_height)).attr("stroke-width",1).attr("stroke",t.rect_border_color)}}},"./src/diagrams/requirement/requirementRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return _})),i.d(t,"drawReqs",(function(){return w})),i.d(t,"drawElements",(function(){return C})),i.d(t,"draw",(function(){return k}));var n=i("d3"),r=i("dagre"),s=i.n(r),o=i("graphlib"),a=i.n(o),l=i("./src/config.js"),c=i("./src/logger.js"),d=i("./src/utils.js"),h=i("./src/diagrams/common/common.js"),u=i("./src/diagrams/requirement/parser/requirementDiagram.jison"),g=i("./src/diagrams/requirement/requirementDb.js"),f=i("./src/diagrams/requirement/requirementMarkers.js"),p={},m=0,_=function(e){if(void 0!==e)for(var t=Object.keys(e),i=0;i<t.length;i++)p[t[i]]=e[t[i]]},b=function(e,t){return e.insert("rect","#"+t).attr("class","req reqBox").attr("fill",p.rect_fill).attr("fill-opacity","100%").attr("stroke",p.rect_border_color).attr("stroke-size",p.rect_border_size).attr("x",0).attr("y",0).attr("width",p.rect_min_width+"px").attr("height",p.rect_min_height+"px")},v=function(e,t,i){var n=p.rect_min_width/2,r=e.append("text").attr("class","req reqLabel reqTitle").attr("id",t).attr("x",n).attr("y",p.rect_padding).attr("dominant-baseline","hanging").attr("style","font-family: "+l.getConfig().fontFamily+"; font-size: "+p.fontSize+"px"),s=0;i.forEach((function(e){0==s?r.append("tspan").attr("text-anchor","middle").attr("x",p.rect_min_width/2).attr("dy",0).text(e):r.append("tspan").attr("text-anchor","middle").attr("x",p.rect_min_width/2).attr("dy",.75*p.line_height).text(e),s++}));var o=1.5*p.rect_padding+s*p.line_height*.75;return e.append("line").attr("x1","0").attr("x2",p.rect_min_width).attr("y1",o).attr("y2",o).attr("style","stroke: ".concat(p.rect_border_color,"; stroke-width: 1")),{titleNode:r,y:o}},y=function(e,t,i,n){var r=e.append("text").attr("class","req reqLabel").attr("id",t).attr("x",p.rect_padding).attr("y",n).attr("dominant-baseline","hanging").attr("style","font-family: "+l.getConfig().fontFamily+"; font-size: "+p.fontSize+"px"),s=0,o=[];return i.forEach((function(e){for(var t=e.length;t>30&&s<3;){var i=e.substring(0,30);t=(e=e.substring(30,e.length)).length,o[o.length]=i,s++}if(3==s){var n=o[o.length-1];o[o.length-1]=n.substring(0,n.length-4)+"..."}else o[o.length]=e;s=0})),o.forEach((function(e){r.append("tspan").attr("x",p.rect_padding).attr("dy",p.line_height).text(e)})),r},w=function(e,t,i){Object.keys(e).forEach((function(n){var r=e[n];n=S(n),console.log("reqName: ",n),c.log.info("Added new requirement: ",n);var s=i.append("g").attr("id",n),o=b(s,"req-"+n),a=[],l=v(s,n+"_title",["<<".concat(r.type,">>"),"".concat(r.name)]);a.push(l.titleNode);var d=y(s,n+"_body",["Id: ".concat(r.id),"Text: ".concat(r.text),"Risk: ".concat(r.risk),"Verification: ".concat(r.verifyMethod)],l.y);a.push(d);var h=o.node().getBBox();t.setNode(n,{width:h.width,height:h.height,shape:"rect",id:n})}))},C=function(e,t,i){Object.keys(e).forEach((function(n){var r=e[n],s=S(n),o=i.append("g").attr("id",s),a="element-"+s,l=b(o,a),c=[],d=v(o,a+"_title",["<<Element>>","".concat(n)]);c.push(d.titleNode);var h=y(o,a+"_body",["Type: ".concat(r.type||"Not Specified"),"Doc Ref: ".concat(r.docref||"None")],d.y);c.push(h);var u=l.node().getBBox();t.setNode(s,{width:u.width,height:u.height,shape:"rect",id:s})}))},S=function(e){return e.replace(/\s/g,"").replace(/\./g,"_")},k=function(e,t){u.parser.yy=g.default,u.parser.parse(e);var i=Object(n.select)("[id='".concat(t,"']"));f.default.insertLineEndings(i,p);var r,o,l=new a.a.Graph({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:p.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel((function(){return{}})),c=g.default.getRequirements(),_=g.default.getElements(),b=g.default.getRelationships();w(c,l,i),C(_,l,i),function(e,t){e.forEach((function(e){var i=S(e.src),n=S(e.dst);t.setEdge(i,n,{relationship:e})}))}(b,l),s.a.layout(l),r=i,(o=l).nodes().forEach((function(e){void 0!==e&&void 0!==o.node(e)&&(r.select("#"+e),r.select("#"+e).attr("transform","translate("+(o.node(e).x-o.node(e).width/2)+","+(o.node(e).y-o.node(e).height/2)+" )"))})),b.forEach((function(e){!function(e,t,i,r){var s=i.edge(S(t.src),S(t.dst)),o=Object(n.line)().x((function(e){return e.x})).y((function(e){return e.y})),a=e.insert("path","#"+r).attr("class","er relationshipLine").attr("d",o(s.points)).attr("stroke",p.rect_border_color).attr("fill","none");t.type==g.default.Relationships.CONTAINS?a.attr("marker-start","url("+h.default.getUrl(p.arrowMarkerAbsolute)+"#"+t.type+"_line_ending)"):(a.attr("stroke-dasharray","10,7"),a.attr("marker-end","url("+h.default.getUrl(p.arrowMarkerAbsolute)+"#"+f.default.ReqMarkers.ARROW+"_line_ending)")),function(e,t,i,n){var r=t.node().getTotalLength(),s=t.node().getPointAtLength(.5*r),o="rel"+m;m++;var a=e.append("text").attr("class","er relationshipLabel").attr("id",o).attr("x",s.x).attr("y",s.y).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("style","font-family: "+i.fontFamily+"; font-size: "+i.fontSize+"px").text(n).node().getBBox();e.insert("rect","#"+o).attr("class","req reqLabelBox").attr("x",s.x-a.width/2).attr("y",s.y-a.height/2).attr("width",a.width).attr("height",a.height).attr("fill","white").attr("fill-opacity","85%")}(e,a,p,"<<".concat(t.type,">>"))}(i,e,l,t)}));var v=p.rect_padding,y=i.node().getBBox(),k=y.width+2*v,x=y.height+2*v;Object(d.configureSvgSize)(i,x,k,p.useMaxWidth),i.attr("viewBox","".concat(y.x-v," ").concat(y.y-v," ").concat(k," ").concat(x))};t.default={setConf:_,draw:k}},"./src/diagrams/requirement/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(){return""}},"./src/diagrams/sequence/parser/sequenceDiagram.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,2],i=[1,3],n=[1,5],r=[1,7],s=[2,5],o=[1,15],a=[1,17],l=[1,18],c=[1,20],d=[1,21],h=[1,22],u=[1,24],g=[1,25],f=[1,26],p=[1,27],m=[1,28],_=[1,29],b=[1,32],v=[1,33],y=[1,36],w=[1,4,5,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,58],C=[1,44],S=[4,5,16,21,22,23,25,27,28,29,30,31,33,37,48,58],k=[4,5,16,21,22,23,25,27,28,29,30,31,33,36,37,48,58],x=[4,5,16,21,22,23,25,27,28,29,30,31,33,35,37,48,58],L=[46,47,48],M=[1,4,5,7,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,58],D={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,directive:6,SD:7,document:8,line:9,statement:10,openDirective:11,typeDirective:12,closeDirective:13,":":14,argDirective:15,participant:16,actor:17,AS:18,restOfLine:19,signal:20,autonumber:21,activate:22,deactivate:23,note_statement:24,title:25,text2:26,loop:27,end:28,rect:29,opt:30,alt:31,else_sections:32,par:33,par_sections:34,and:35,else:36,note:37,placement:38,over:39,actor_pair:40,spaceList:41,",":42,left_of:43,right_of:44,signaltype:45,"+":46,"-":47,ACTOR:48,SOLID_OPEN_ARROW:49,DOTTED_OPEN_ARROW:50,SOLID_ARROW:51,DOTTED_ARROW:52,SOLID_CROSS:53,DOTTED_CROSS:54,SOLID_POINT:55,DOTTED_POINT:56,TXT:57,open_directive:58,type_directive:59,arg_directive:60,close_directive:61,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",7:"SD",14:":",16:"participant",18:"AS",19:"restOfLine",21:"autonumber",22:"activate",23:"deactivate",25:"title",27:"loop",28:"end",29:"rect",30:"opt",31:"alt",33:"par",35:"and",36:"else",37:"note",39:"over",42:",",43:"left_of",44:"right_of",46:"+",47:"-",48:"ACTOR",49:"SOLID_OPEN_ARROW",50:"DOTTED_OPEN_ARROW",51:"SOLID_ARROW",52:"DOTTED_ARROW",53:"SOLID_CROSS",54:"DOTTED_CROSS",55:"SOLID_POINT",56:"DOTTED_POINT",57:"TXT",58:"open_directive",59:"type_directive",60:"arg_directive",61:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[34,1],[34,4],[32,1],[32,4],[24,4],[24,4],[41,2],[41,1],[40,3],[40,1],[38,1],[38,1],[20,5],[20,5],[20,4],[17,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[26,1],[11,1],[12,1],[15,1],[13,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 4:return n.apply(s[a]),s[a];case 5:this.$=[];break;case 6:s[a-1].push(s[a]),this.$=s[a-1];break;case 7:case 8:this.$=s[a];break;case 9:this.$=[];break;case 12:s[a-3].description=n.parseMessage(s[a-1]),this.$=s[a-3];break;case 13:this.$=s[a-1];break;case 15:n.enableSequenceNumbers();break;case 16:this.$={type:"activeStart",signalType:n.LINETYPE.ACTIVE_START,actor:s[a-1]};break;case 17:this.$={type:"activeEnd",signalType:n.LINETYPE.ACTIVE_END,actor:s[a-1]};break;case 19:this.$=[{type:"setTitle",text:s[a-1]}];break;case 20:s[a-1].unshift({type:"loopStart",loopText:n.parseMessage(s[a-2]),signalType:n.LINETYPE.LOOP_START}),s[a-1].push({type:"loopEnd",loopText:s[a-2],signalType:n.LINETYPE.LOOP_END}),this.$=s[a-1];break;case 21:s[a-1].unshift({type:"rectStart",color:n.parseMessage(s[a-2]),signalType:n.LINETYPE.RECT_START}),s[a-1].push({type:"rectEnd",color:n.parseMessage(s[a-2]),signalType:n.LINETYPE.RECT_END}),this.$=s[a-1];break;case 22:s[a-1].unshift({type:"optStart",optText:n.parseMessage(s[a-2]),signalType:n.LINETYPE.OPT_START}),s[a-1].push({type:"optEnd",optText:n.parseMessage(s[a-2]),signalType:n.LINETYPE.OPT_END}),this.$=s[a-1];break;case 23:s[a-1].unshift({type:"altStart",altText:n.parseMessage(s[a-2]),signalType:n.LINETYPE.ALT_START}),s[a-1].push({type:"altEnd",signalType:n.LINETYPE.ALT_END}),this.$=s[a-1];break;case 24:s[a-1].unshift({type:"parStart",parText:n.parseMessage(s[a-2]),signalType:n.LINETYPE.PAR_START}),s[a-1].push({type:"parEnd",signalType:n.LINETYPE.PAR_END}),this.$=s[a-1];break;case 27:this.$=s[a-3].concat([{type:"and",parText:n.parseMessage(s[a-1]),signalType:n.LINETYPE.PAR_AND},s[a]]);break;case 29:this.$=s[a-3].concat([{type:"else",altText:n.parseMessage(s[a-1]),signalType:n.LINETYPE.ALT_ELSE},s[a]]);break;case 30:this.$=[s[a-1],{type:"addNote",placement:s[a-2],actor:s[a-1].actor,text:s[a]}];break;case 31:s[a-2]=[].concat(s[a-1],s[a-1]).slice(0,2),s[a-2][0]=s[a-2][0].actor,s[a-2][1]=s[a-2][1].actor,this.$=[s[a-1],{type:"addNote",placement:n.PLACEMENT.OVER,actor:s[a-2].slice(0,2),text:s[a]}];break;case 34:this.$=[s[a-2],s[a]];break;case 35:this.$=s[a];break;case 36:this.$=n.PLACEMENT.LEFTOF;break;case 37:this.$=n.PLACEMENT.RIGHTOF;break;case 38:this.$=[s[a-4],s[a-1],{type:"addMessage",from:s[a-4].actor,to:s[a-1].actor,signalType:s[a-3],msg:s[a]},{type:"activeStart",signalType:n.LINETYPE.ACTIVE_START,actor:s[a-1]}];break;case 39:this.$=[s[a-4],s[a-1],{type:"addMessage",from:s[a-4].actor,to:s[a-1].actor,signalType:s[a-3],msg:s[a]},{type:"activeEnd",signalType:n.LINETYPE.ACTIVE_END,actor:s[a-4]}];break;case 40:this.$=[s[a-3],s[a-1],{type:"addMessage",from:s[a-3].actor,to:s[a-1].actor,signalType:s[a-2],msg:s[a]}];break;case 41:this.$={type:"addActor",actor:s[a]};break;case 42:this.$=n.LINETYPE.SOLID_OPEN;break;case 43:this.$=n.LINETYPE.DOTTED_OPEN;break;case 44:this.$=n.LINETYPE.SOLID;break;case 45:this.$=n.LINETYPE.DOTTED;break;case 46:this.$=n.LINETYPE.SOLID_CROSS;break;case 47:this.$=n.LINETYPE.DOTTED_CROSS;break;case 48:this.$=n.LINETYPE.SOLID_POINT;break;case 49:this.$=n.LINETYPE.DOTTED_POINT;break;case 50:this.$=n.parseMessage(s[a].trim().substring(1));break;case 51:n.parseDirective("%%{","open_directive");break;case 52:n.parseDirective(s[a],"type_directive");break;case 53:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 54:n.parseDirective("}%%","close_directive","sequence")}},table:[{3:1,4:t,5:i,6:4,7:n,11:6,58:r},{1:[3]},{3:8,4:t,5:i,6:4,7:n,11:6,58:r},{3:9,4:t,5:i,6:4,7:n,11:6,58:r},{3:10,4:t,5:i,6:4,7:n,11:6,58:r},e([1,4,5,16,21,22,23,25,27,29,30,31,33,37,48,58],s,{8:11}),{12:12,59:[1,13]},{59:[2,51]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:a,6:30,9:14,10:16,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,29:f,30:p,31:m,33:_,37:b,48:v,58:r},{13:34,14:[1,35],61:y},e([14,61],[2,52]),e(w,[2,6]),{6:30,10:37,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,29:f,30:p,31:m,33:_,37:b,48:v,58:r},e(w,[2,8]),e(w,[2,9]),{17:38,48:v},{5:[1,39]},e(w,[2,15]),{17:40,48:v},{17:41,48:v},{5:[1,42]},{26:43,57:C},{19:[1,45]},{19:[1,46]},{19:[1,47]},{19:[1,48]},{19:[1,49]},e(w,[2,25]),{45:50,49:[1,51],50:[1,52],51:[1,53],52:[1,54],53:[1,55],54:[1,56],55:[1,57],56:[1,58]},{38:59,39:[1,60],43:[1,61],44:[1,62]},e([5,18,42,49,50,51,52,53,54,55,56,57],[2,41]),{5:[1,63]},{15:64,60:[1,65]},{5:[2,54]},e(w,[2,7]),{5:[1,67],18:[1,66]},e(w,[2,14]),{5:[1,68]},{5:[1,69]},e(w,[2,18]),{5:[1,70]},{5:[2,50]},e(S,s,{8:71}),e(S,s,{8:72}),e(S,s,{8:73}),e(k,s,{32:74,8:75}),e(x,s,{34:76,8:77}),{17:80,46:[1,78],47:[1,79],48:v},e(L,[2,42]),e(L,[2,43]),e(L,[2,44]),e(L,[2,45]),e(L,[2,46]),e(L,[2,47]),e(L,[2,48]),e(L,[2,49]),{17:81,48:v},{17:83,40:82,48:v},{48:[2,36]},{48:[2,37]},e(M,[2,10]),{13:84,61:y},{61:[2,53]},{19:[1,85]},e(w,[2,13]),e(w,[2,16]),e(w,[2,17]),e(w,[2,19]),{4:o,5:a,6:30,9:14,10:16,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,28:[1,86],29:f,30:p,31:m,33:_,37:b,48:v,58:r},{4:o,5:a,6:30,9:14,10:16,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,28:[1,87],29:f,30:p,31:m,33:_,37:b,48:v,58:r},{4:o,5:a,6:30,9:14,10:16,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,28:[1,88],29:f,30:p,31:m,33:_,37:b,48:v,58:r},{28:[1,89]},{4:o,5:a,6:30,9:14,10:16,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,28:[2,28],29:f,30:p,31:m,33:_,36:[1,90],37:b,48:v,58:r},{28:[1,91]},{4:o,5:a,6:30,9:14,10:16,11:6,16:l,17:31,20:19,21:c,22:d,23:h,24:23,25:u,27:g,28:[2,26],29:f,30:p,31:m,33:_,35:[1,92],37:b,48:v,58:r},{17:93,48:v},{17:94,48:v},{26:95,57:C},{26:96,57:C},{26:97,57:C},{42:[1,98],57:[2,35]},{5:[1,99]},{5:[1,100]},e(w,[2,20]),e(w,[2,21]),e(w,[2,22]),e(w,[2,23]),{19:[1,101]},e(w,[2,24]),{19:[1,102]},{26:103,57:C},{26:104,57:C},{5:[2,40]},{5:[2,30]},{5:[2,31]},{17:105,48:v},e(M,[2,11]),e(w,[2,12]),e(k,s,{8:75,32:106}),e(x,s,{8:77,34:107}),{5:[2,38]},{5:[2,39]},{57:[2,34]},{28:[2,29]},{28:[2,27]}],defaultActions:{7:[2,51],8:[2,1],9:[2,2],10:[2,3],36:[2,54],44:[2,50],61:[2,36],62:[2,37],65:[2,53],95:[2,40],96:[2,30],97:[2,31],103:[2,38],104:[2,39],105:[2,34],106:[2,29],107:[2,27]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},N={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),58;case 1:return this.begin("type_directive"),59;case 2:return this.popState(),this.begin("arg_directive"),14;case 3:return this.popState(),this.popState(),61;case 4:return 60;case 5:return 5;case 6:case 7:case 8:case 9:case 10:break;case 11:return this.begin("ID"),16;case 12:return t.yytext=t.yytext.trim(),this.begin("ALIAS"),48;case 13:return this.popState(),this.popState(),this.begin("LINE"),18;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),27;case 16:return this.begin("LINE"),29;case 17:return this.begin("LINE"),30;case 18:return this.begin("LINE"),31;case 19:return this.begin("LINE"),36;case 20:return this.begin("LINE"),33;case 21:return this.begin("LINE"),35;case 22:return this.popState(),19;case 23:return 28;case 24:return 43;case 25:return 44;case 26:return 39;case 27:return 37;case 28:return this.begin("ID"),22;case 29:return this.begin("ID"),23;case 30:return 25;case 31:return 7;case 32:return 21;case 33:return 42;case 34:return 5;case 35:return t.yytext=t.yytext.trim(),48;case 36:return 51;case 37:return 52;case 38:return 49;case 39:return 50;case 40:return 53;case 41:return 54;case 42:return 55;case 43:return 56;case 44:return 57;case 45:return 46;case 46:return 47;case 47:return 5;case 48:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:participant\b)/i,/^(?:[^\->:\n,;]+?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:and\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\b)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1,8],inclusive:!1},type_directive:{rules:[2,3,8],inclusive:!1},arg_directive:{rules:[3,4,8],inclusive:!1},ID:{rules:[7,8,12],inclusive:!1},ALIAS:{rules:[7,8,13,14],inclusive:!1},LINE:{rules:[7,8,22],inclusive:!1},INITIAL:{rules:[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};function E(){this.yy={}}return D.lexer=N,E.prototype=D,D.Parser=E,new E}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/sequence/sequenceDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return f})),i.d(t,"addActor",(function(){return p})),i.d(t,"addMessage",(function(){return _})),i.d(t,"addSignal",(function(){return b})),i.d(t,"getMessages",(function(){return v})),i.d(t,"getActors",(function(){return y})),i.d(t,"getActor",(function(){return w})),i.d(t,"getActorKeys",(function(){return C})),i.d(t,"getTitle",(function(){return S})),i.d(t,"getTitleWrapped",(function(){return k})),i.d(t,"enableSequenceNumbers",(function(){return x})),i.d(t,"showSequenceNumbers",(function(){return L})),i.d(t,"setWrap",(function(){return M})),i.d(t,"autoWrap",(function(){return D})),i.d(t,"clear",(function(){return N})),i.d(t,"parseMessage",(function(){return E})),i.d(t,"LINETYPE",(function(){return T})),i.d(t,"ARROWTYPE",(function(){return I})),i.d(t,"PLACEMENT",(function(){return O})),i.d(t,"addNote",(function(){return A})),i.d(t,"setTitle",(function(){return R})),i.d(t,"apply",(function(){return P}));var n=i("./src/mermaidAPI.js"),r=i("./src/config.js"),s=i("./src/logger.js"),o=void 0,a={},l=[],c=[],d="",h=!1,u=!1,g=!1,f=function(e,t,i){n.default.parseDirective(this,e,t,i)},p=function(e,t,i){var n=a[e];n&&t===n.name&&null==i||(null!=i&&null!=i.text||(i={text:t,wrap:null}),a[e]={name:t,description:i.text,wrap:void 0===i.wrap&&D()||!!i.wrap,prevActor:o},o&&a[o]&&(a[o].nextActor=e),o=e)},m=function(e){var t,i=0;for(t=0;t<l.length;t++)l[t].type===T.ACTIVE_START&&l[t].from.actor===e&&i++,l[t].type===T.ACTIVE_END&&l[t].from.actor===e&&i--;return i},_=function(e,t,i,n){l.push({from:e,to:t,message:i.text,wrap:void 0===i.wrap&&D()||!!i.wrap,answer:n})},b=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{text:void 0,wrap:void 0},n=arguments.length>3?arguments[3]:void 0;if(n===T.ACTIVE_END){var r=m(e.actor);if(r<1){var s=new Error("Trying to inactivate an inactive participant ("+e.actor+")");throw s.hash={text:"->>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},s}}return l.push({from:e,to:t,message:i.text,wrap:void 0===i.wrap&&D()||!!i.wrap,type:n}),!0},v=function(){return l},y=function(){return a},w=function(e){return a[e]},C=function(){return Object.keys(a)},S=function(){return d},k=function(){return h},x=function(){u=!0},L=function(){return u},M=function(e){g=e},D=function(){return g},N=function(){a={},l=[]},E=function(e){var t=e.trim(),i={text:t.replace(/^[:]?(?:no)?wrap:/,"").trim(),wrap:null!==t.match(/^[:]?wrap:/)||null===t.match(/^[:]?nowrap:/)&&void 0};return s.log.debug("parseMessage:",i),i},T={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},I={FILLED:0,OPEN:1},O={LEFTOF:0,RIGHTOF:1,OVER:2},A=function(e,t,i){var n={actor:e,placement:t,message:i.text,wrap:void 0===i.wrap&&D()||!!i.wrap},r=[].concat(e,e);c.push(n),l.push({from:r[0],to:r[1],message:i.text,wrap:void 0===i.wrap&&D()||!!i.wrap,type:T.NOTE,placement:t})},R=function(e){d=e.text,h=void 0===e.wrap&&D()||!!e.wrap},P=function e(t){if(t instanceof Array)t.forEach((function(t){e(t)}));else switch(t.type){case"addActor":p(t.actor,t.actor,t.description);break;case"activeStart":case"activeEnd":b(t.actor,void 0,void 0,t.signalType);break;case"addNote":A(t.actor,t.placement,t.text);break;case"addMessage":b(t.from,t.to,t.msg,t.signalType);break;case"loopStart":b(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":b(void 0,void 0,void 0,t.signalType);break;case"rectStart":b(void 0,void 0,t.color,t.signalType);break;case"rectEnd":b(void 0,void 0,void 0,t.signalType);break;case"optStart":b(void 0,void 0,t.optText,t.signalType);break;case"optEnd":b(void 0,void 0,void 0,t.signalType);break;case"altStart":case"else":b(void 0,void 0,t.altText,t.signalType);break;case"altEnd":b(void 0,void 0,void 0,t.signalType);break;case"setTitle":R(t.text);break;case"parStart":case"and":b(void 0,void 0,t.parText,t.signalType);break;case"parEnd":b(void 0,void 0,void 0,t.signalType)}};t.default={addActor:p,addMessage:_,addSignal:b,autoWrap:D,setWrap:M,enableSequenceNumbers:x,showSequenceNumbers:L,getMessages:v,getActors:y,getActor:w,getActorKeys:C,getTitle:S,parseDirective:f,getConfig:function(){return r.getConfig().sequence},getTitleWrapped:k,clear:N,parseMessage:E,LINETYPE:T,ARROWTYPE:I,PLACEMENT:O,addNote:A,setTitle:R,apply:P}},"./src/diagrams/sequence/sequenceRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"bounds",(function(){return u})),i.d(t,"drawActors",(function(){return m})),i.d(t,"setConf",(function(){return _})),i.d(t,"draw",(function(){return w}));var n=i("d3"),r=i("./src/diagrams/sequence/svgDraw.js"),s=i("./src/logger.js"),o=i("./src/diagrams/sequence/parser/sequenceDiagram.jison"),a=i("./src/diagrams/common/common.js"),l=i("./src/diagrams/sequence/sequenceDb.js"),c=i("./src/config.js"),d=i("./src/utils.js");o.parser.yy=l.default;var h={},u={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],activations:[],models:{getHeight:function(){return Math.max.apply(null,0===this.actors.length?[0]:this.actors.map((function(e){return e.height||0})))+(0===this.loops.length?0:this.loops.map((function(e){return e.height||0})).reduce((function(e,t){return e+t})))+(0===this.messages.length?0:this.messages.map((function(e){return e.height||0})).reduce((function(e,t){return e+t})))+(0===this.notes.length?0:this.notes.map((function(e){return e.height||0})).reduce((function(e,t){return e+t})))},clear:function(){this.actors=[],this.loops=[],this.messages=[],this.notes=[]},addActor:function(e){this.actors.push(e)},addLoop:function(e){this.loops.push(e)},addMessage:function(e){this.messages.push(e)},addNote:function(e){this.notes.push(e)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,_(o.parser.yy.getConfig())},updateVal:function(e,t,i,n){void 0===e[t]?e[t]=i:e[t]=n(i,e[t])},updateBounds:function(e,t,i,n){var r=this,s=0;function o(o){return function(a){s++;var l=r.sequenceItems.length-s+1;r.updateVal(a,"starty",t-l*h.boxMargin,Math.min),r.updateVal(a,"stopy",n+l*h.boxMargin,Math.max),r.updateVal(u.data,"startx",e-l*h.boxMargin,Math.min),r.updateVal(u.data,"stopx",i+l*h.boxMargin,Math.max),"activation"!==o&&(r.updateVal(a,"startx",e-l*h.boxMargin,Math.min),r.updateVal(a,"stopx",i+l*h.boxMargin,Math.max),r.updateVal(u.data,"starty",t-l*h.boxMargin,Math.min),r.updateVal(u.data,"stopy",n+l*h.boxMargin,Math.max))}}this.sequenceItems.forEach(o()),this.activations.forEach(o("activation"))},insert:function(e,t,i,n){var r=Math.min(e,i),s=Math.max(e,i),o=Math.min(t,n),a=Math.max(t,n);this.updateVal(u.data,"startx",r,Math.min),this.updateVal(u.data,"starty",o,Math.min),this.updateVal(u.data,"stopx",s,Math.max),this.updateVal(u.data,"stopy",a,Math.max),this.updateBounds(r,o,s,a)},newActivation:function(e,t,i){var n=i[e.from.actor],s=b(e.from.actor).length||0,o=n.x+n.width/2+(s-1)*h.activationWidth/2;this.activations.push({startx:o,starty:this.verticalPos+2,stopx:o+h.activationWidth,stopy:void 0,actor:e.from.actor,anchored:r.default.anchorElement(t)})},endActivation:function(e){var t=this.activations.map((function(e){return e.actor})).lastIndexOf(e.from.actor);return this.activations.splice(t,1)[0]},createLoop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},t=arguments.length>1?arguments[1]:void 0;return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:e.message,wrap:e.wrap,width:e.width,height:0,fill:t}},newLoop:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{message:void 0,wrap:!1,width:void 0},t=arguments.length>1?arguments[1]:void 0;this.sequenceItems.push(this.createLoop(e,t))},endLoop:function(){return this.sequenceItems.pop()},addSectionToLoop:function(e){var t=this.sequenceItems.pop();t.sections=t.sections||[],t.sectionTitles=t.sectionTitles||[],t.sections.push({y:u.getVerticalPos(),height:0}),t.sectionTitles.push(e),this.sequenceItems.push(t)},bumpVerticalPos:function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},g=function(e){return{fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}},f=function(e){return{fontFamily:e.noteFontFamily,fontSize:e.noteFontSize,fontWeight:e.noteFontWeight}},p=function(e){return{fontFamily:e.actorFontFamily,fontSize:e.actorFontSize,fontWeight:e.actorFontWeight}},m=function(e,t,i,n){for(var s=0,o=0,a=0;a<i.length;a++){var l=t[i[a]];l.width=l.width||h.width,l.height=Math.max(l.height||h.height,h.height),l.margin=l.margin||h.actorMargin,l.x=s+o,l.y=n,r.default.drawActor(e,l,h),u.insert(l.x,n,l.x+l.width,l.height),s+=l.width,o+=l.margin,u.models.addActor(l)}u.bumpVerticalPos(h.height)},_=function(e){Object(d.assignWithDepth)(h,e),e.fontFamily&&(h.actorFontFamily=h.noteFontFamily=h.messageFontFamily=e.fontFamily),e.fontSize&&(h.actorFontSize=h.noteFontSize=h.messageFontSize=e.fontSize),e.fontWeight&&(h.actorFontWeight=h.noteFontWeight=h.messageFontWeight=e.fontWeight)},b=function(e){return u.activations.filter((function(t){return t.actor===e}))},v=function(e,t){var i=t[e],n=b(e);return[n.reduce((function(e,t){return Math.min(e,t.startx)}),i.x+i.width/2),n.reduce((function(e,t){return Math.max(e,t.stopx)}),i.x+i.width/2)]};function y(e,t,i,n,r){u.bumpVerticalPos(i);var o=n;if(t.id&&t.message&&e[t.id]){var a=e[t.id].width,l=g(h);t.message=d.default.wrapLabel("[".concat(t.message,"]"),a-2*h.wrapPadding,l),t.width=a,t.wrap=!0;var c=d.default.calculateTextDimensions(t.message,l),f=Math.max(c.height,h.labelBoxHeight);o=n+f,s.log.debug("".concat(f," - ").concat(t.message))}r(t),u.bumpVerticalPos(o)}var w=function(e,t){h=c.getConfig().sequence,o.parser.yy.clear(),o.parser.yy.setWrap(h.wrap),o.parser.parse(e+"\n"),u.init(),s.log.debug("C:".concat(JSON.stringify(h,null,2)));var i=Object(n.select)('[id="'.concat(t,'"]')),f=o.parser.yy.getActors(),p=o.parser.yy.getActorKeys(),_=o.parser.yy.getMessages(),v=o.parser.yy.getTitle(),w=C(f,_);h.height=S(f,w),m(i,f,p,0);var x=k(_,f,w);r.default.insertArrowHead(i),r.default.insertArrowCrossHead(i),r.default.insertArrowFilledHead(i),r.default.insertSequenceNumber(i);var L=1;_.forEach((function(e){var t,n,c;switch(e.type){case o.parser.yy.LINETYPE.NOTE:n=e.noteModel,function(e,t){u.bumpVerticalPos(h.boxMargin),t.height=h.boxMargin,t.starty=u.getVerticalPos();var i=r.default.getNoteRect();i.x=t.startx,i.y=t.starty,i.width=t.width||h.width,i.class="note";var n=e.append("g"),s=r.default.drawRect(n,i),o=r.default.getTextObj();o.x=t.startx,o.y=t.starty,o.width=i.width,o.dy="1em",o.text=t.message,o.class="noteText",o.fontFamily=h.noteFontFamily,o.fontSize=h.noteFontSize,o.fontWeight=h.noteFontWeight,o.anchor=h.noteAlign,o.textMargin=h.noteMargin,o.valign=h.noteAlign;var a=Object(r.drawText)(n,o),l=Math.round(a.map((function(e){return(e._groups||e)[0][0].getBBox().height})).reduce((function(e,t){return e+t})));s.attr("height",l+2*h.noteMargin),t.height+=l+2*h.noteMargin,u.bumpVerticalPos(l+2*h.noteMargin),t.stopy=t.starty+l+2*h.noteMargin,t.stopx=t.startx+i.width,u.insert(t.startx,t.starty,t.stopx,t.stopy),u.models.addNote(t)}(i,n);break;case o.parser.yy.LINETYPE.ACTIVE_START:u.newActivation(e,i,f);break;case o.parser.yy.LINETYPE.ACTIVE_END:!function(e,t){var n=u.endActivation(e);n.starty+18>t&&(n.starty=t-6,t+=12),r.default.drawActivation(i,n,t,h,b(e.from.actor).length),u.insert(n.startx,t-10,n.stopx,t)}(e,u.getVerticalPos());break;case o.parser.yy.LINETYPE.LOOP_START:y(x,e,h.boxMargin,h.boxMargin+h.boxTextMargin,(function(e){return u.newLoop(e)}));break;case o.parser.yy.LINETYPE.LOOP_END:t=u.endLoop(),r.default.drawLoop(i,t,"loop",h),u.bumpVerticalPos(t.stopy-u.getVerticalPos()),u.models.addLoop(t);break;case o.parser.yy.LINETYPE.RECT_START:y(x,e,h.boxMargin,h.boxMargin,(function(e){return u.newLoop(void 0,e.message)}));break;case o.parser.yy.LINETYPE.RECT_END:t=u.endLoop(),r.default.drawBackgroundRect(i,t),u.models.addLoop(t),u.bumpVerticalPos(t.stopy-u.getVerticalPos());break;case o.parser.yy.LINETYPE.OPT_START:y(x,e,h.boxMargin,h.boxMargin+h.boxTextMargin,(function(e){return u.newLoop(e)}));break;case o.parser.yy.LINETYPE.OPT_END:t=u.endLoop(),r.default.drawLoop(i,t,"opt",h),u.bumpVerticalPos(t.stopy-u.getVerticalPos()),u.models.addLoop(t);break;case o.parser.yy.LINETYPE.ALT_START:y(x,e,h.boxMargin,h.boxMargin+h.boxTextMargin,(function(e){return u.newLoop(e)}));break;case o.parser.yy.LINETYPE.ALT_ELSE:y(x,e,h.boxMargin+h.boxTextMargin,h.boxMargin,(function(e){return u.addSectionToLoop(e)}));break;case o.parser.yy.LINETYPE.ALT_END:t=u.endLoop(),r.default.drawLoop(i,t,"alt",h),u.bumpVerticalPos(t.stopy-u.getVerticalPos()),u.models.addLoop(t);break;case o.parser.yy.LINETYPE.PAR_START:y(x,e,h.boxMargin,h.boxMargin+h.boxTextMargin,(function(e){return u.newLoop(e)}));break;case o.parser.yy.LINETYPE.PAR_AND:y(x,e,h.boxMargin+h.boxTextMargin,h.boxMargin,(function(e){return u.addSectionToLoop(e)}));break;case o.parser.yy.LINETYPE.PAR_END:t=u.endLoop(),r.default.drawLoop(i,t,"par",h),u.bumpVerticalPos(t.stopy-u.getVerticalPos()),u.models.addLoop(t);break;default:try{(c=e.msgModel).starty=u.getVerticalPos(),c.sequenceIndex=L,function(e,t){u.bumpVerticalPos(10);var i=t.startx,n=t.stopx,s=t.starty,c=t.message,f=t.type,p=t.sequenceIndex,m=a.default.splitBreaks(c).length,_=d.default.calculateTextDimensions(c,g(h)),b=_.height/m;t.height+=b,u.bumpVerticalPos(b);var v=r.default.getTextObj();v.x=i,v.y=s+10,v.width=n-i,v.class="messageText",v.dy="1em",v.text=c,v.fontFamily=h.messageFontFamily,v.fontSize=h.messageFontSize,v.fontWeight=h.messageFontWeight,v.anchor=h.messageAlign,v.valign=h.messageAlign,v.textMargin=h.wrapPadding,v.tspan=!1,Object(r.drawText)(e,v);var y,w,C=_.height-10,S=_.width;if(i===n){w=u.getVerticalPos()+C,h.rightAngles?y=e.append("path").attr("d","M ".concat(i,",").concat(w," H ").concat(i+Math.max(h.width/2,S/2)," V ").concat(w+25," H ").concat(i)):(C+=h.boxMargin,w=u.getVerticalPos()+C,y=e.append("path").attr("d","M "+i+","+w+" C "+(i+60)+","+(w-10)+" "+(i+60)+","+(w+30)+" "+i+","+(w+20))),C+=30;var k=Math.max(S/2,h.width/2);u.insert(i-k,u.getVerticalPos()-10+C,n+k,u.getVerticalPos()+30+C)}else C+=h.boxMargin,w=u.getVerticalPos()+C,(y=e.append("line")).attr("x1",i),y.attr("y1",w),y.attr("x2",n),y.attr("y2",w),u.insert(i,w-10,n,w);f===o.parser.yy.LINETYPE.DOTTED||f===o.parser.yy.LINETYPE.DOTTED_CROSS||f===o.parser.yy.LINETYPE.DOTTED_POINT||f===o.parser.yy.LINETYPE.DOTTED_OPEN?(y.style("stroke-dasharray","3, 3"),y.attr("class","messageLine1")):y.attr("class","messageLine0");var x="";h.arrowMarkerAbsolute&&(x=(x=(x=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),y.attr("stroke-width",2),y.attr("stroke","none"),y.style("fill","none"),f!==o.parser.yy.LINETYPE.SOLID&&f!==o.parser.yy.LINETYPE.DOTTED||y.attr("marker-end","url("+x+"#arrowhead)"),f!==o.parser.yy.LINETYPE.SOLID_POINT&&f!==o.parser.yy.LINETYPE.DOTTED_POINT||y.attr("marker-end","url("+x+"#filled-head)"),f!==o.parser.yy.LINETYPE.SOLID_CROSS&&f!==o.parser.yy.LINETYPE.DOTTED_CROSS||y.attr("marker-end","url("+x+"#crosshead)"),(l.default.showSequenceNumbers()||h.showSequenceNumbers)&&(y.attr("marker-start","url("+x+"#sequencenumber)"),e.append("text").attr("x",i).attr("y",w+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("textLength","16px").attr("class","sequenceNumber").text(p)),u.bumpVerticalPos(C),t.height+=C,t.stopy=t.starty+t.height,u.insert(t.fromBounds,t.starty,t.toBounds,t.stopy)}(i,c),u.models.addMessage(c)}catch(e){s.log.error("error while drawing message",e)}}[o.parser.yy.LINETYPE.SOLID_OPEN,o.parser.yy.LINETYPE.DOTTED_OPEN,o.parser.yy.LINETYPE.SOLID,o.parser.yy.LINETYPE.DOTTED,o.parser.yy.LINETYPE.SOLID_CROSS,o.parser.yy.LINETYPE.DOTTED_CROSS,o.parser.yy.LINETYPE.SOLID_POINT,o.parser.yy.LINETYPE.DOTTED_POINT].includes(e.type)&&L++})),h.mirrorActors&&(u.bumpVerticalPos(2*h.boxMargin),m(i,f,p,u.getVerticalPos()));var M=u.getBounds().bounds;s.log.debug("For line height fix Querying: #"+t+" .actor-line"),Object(n.selectAll)("#"+t+" .actor-line").attr("y2",M.stopy);var D=M.stopy-M.starty+2*h.diagramMarginY;h.mirrorActors&&(D=D-h.boxMargin+h.bottomMarginAdj);var N=M.stopx-M.startx+2*h.diagramMarginX;v&&i.append("text").text(v).attr("x",(M.stopx-M.startx)/2-2*h.diagramMarginX).attr("y",-25),Object(d.configureSvgSize)(i,D,N,h.useMaxWidth);var E=v?40:0;i.attr("viewBox",M.startx-h.diagramMarginX+" -"+(h.diagramMarginY+E)+" "+N+" "+(D+E)),s.log.debug("models:",u.models)},C=function(e,t){var i={};return t.forEach((function(t){if(e[t.to]&&e[t.from]){var n=e[t.to];if(t.placement===o.parser.yy.PLACEMENT.LEFTOF&&!n.prevActor)return;if(t.placement===o.parser.yy.PLACEMENT.RIGHTOF&&!n.nextActor)return;var r=void 0!==t.placement,s=!r,a=r?f(h):g(h),l=t.wrap?d.default.wrapLabel(t.message,h.width-2*h.wrapPadding,a):t.message,c=d.default.calculateTextDimensions(l,a).width+2*h.wrapPadding;s&&t.from===n.nextActor?i[t.to]=Math.max(i[t.to]||0,c):s&&t.from===n.prevActor?i[t.from]=Math.max(i[t.from]||0,c):s&&t.from===t.to?(i[t.from]=Math.max(i[t.from]||0,c/2),i[t.to]=Math.max(i[t.to]||0,c/2)):t.placement===o.parser.yy.PLACEMENT.RIGHTOF?i[t.from]=Math.max(i[t.from]||0,c):t.placement===o.parser.yy.PLACEMENT.LEFTOF?i[n.prevActor]=Math.max(i[n.prevActor]||0,c):t.placement===o.parser.yy.PLACEMENT.OVER&&(n.prevActor&&(i[n.prevActor]=Math.max(i[n.prevActor]||0,c/2)),n.nextActor&&(i[t.from]=Math.max(i[t.from]||0,c/2)))}})),s.log.debug("maxMessageWidthPerActor:",i),i},S=function(e,t){var i=0;for(var n in Object.keys(e).forEach((function(t){var n=e[t];n.wrap&&(n.description=d.default.wrapLabel(n.description,h.width-2*h.wrapPadding,p(h)));var r=d.default.calculateTextDimensions(n.description,p(h));n.width=n.wrap?h.width:Math.max(h.width,r.width+2*h.wrapPadding),n.height=n.wrap?Math.max(r.height,h.height):h.height,i=Math.max(i,n.height)})),t){var r=e[n];if(r){var s=e[r.nextActor];if(s){var o=t[n]+h.actorMargin-r.width/2-s.width/2;r.margin=Math.max(o,h.actorMargin)}}}return Math.max(i,h.height)},k=function(e,t){var i,n,r,a={},l=[];return e.forEach((function(e){switch(e.id=d.default.random({length:10}),e.type){case o.parser.yy.LINETYPE.LOOP_START:case o.parser.yy.LINETYPE.ALT_START:case o.parser.yy.LINETYPE.OPT_START:case o.parser.yy.LINETYPE.PAR_START:l.push({id:e.id,msg:e.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case o.parser.yy.LINETYPE.ALT_ELSE:case o.parser.yy.LINETYPE.PAR_AND:e.message&&(i=l.pop(),a[i.id]=i,a[e.id]=i,l.push(i));break;case o.parser.yy.LINETYPE.LOOP_END:case o.parser.yy.LINETYPE.ALT_END:case o.parser.yy.LINETYPE.OPT_END:case o.parser.yy.LINETYPE.PAR_END:i=l.pop(),a[i.id]=i;break;case o.parser.yy.LINETYPE.ACTIVE_START:var c=t[e.from?e.from.actor:e.to.actor],p=b(e.from?e.from.actor:e.to.actor).length,m=c.x+c.width/2+(p-1)*h.activationWidth/2,_={startx:m,stopx:m+h.activationWidth,actor:e.from.actor,enabled:!0};u.activations.push(_);break;case o.parser.yy.LINETYPE.ACTIVE_END:var y=u.activations.map((function(e){return e.actor})).lastIndexOf(e.from.actor);delete u.activations.splice(y,1)[0]}void 0!==e.placement?(n=function(e,t){var i=t[e.from].x,n=t[e.to].x,r=e.wrap&&e.message,a=d.default.calculateTextDimensions(r?d.default.wrapLabel(e.message,h.width,f(h)):e.message,f(h)),l={width:r?h.width:Math.max(h.width,a.width+2*h.noteMargin),height:0,startx:t[e.from].x,stopx:0,starty:0,stopy:0,message:e.message};return e.placement===o.parser.yy.PLACEMENT.RIGHTOF?(l.width=r?Math.max(h.width,a.width):Math.max(t[e.from].width/2+t[e.to].width/2,a.width+2*h.noteMargin),l.startx=i+(t[e.from].width+h.actorMargin)/2):e.placement===o.parser.yy.PLACEMENT.LEFTOF?(l.width=r?Math.max(h.width,a.width+2*h.noteMargin):Math.max(t[e.from].width/2+t[e.to].width/2,a.width+2*h.noteMargin),l.startx=i-l.width+(t[e.from].width-h.actorMargin)/2):e.to===e.from?(a=d.default.calculateTextDimensions(r?d.default.wrapLabel(e.message,Math.max(h.width,t[e.from].width),f(h)):e.message,f(h)),l.width=r?Math.max(h.width,t[e.from].width):Math.max(t[e.from].width,h.width,a.width+2*h.noteMargin),l.startx=i+(t[e.from].width-l.width)/2):(l.width=Math.abs(i+t[e.from].width/2-(n+t[e.to].width/2))+h.actorMargin,l.startx=i<n?i+t[e.from].width/2-h.actorMargin/2:n+t[e.to].width/2-h.actorMargin/2),r&&(l.message=d.default.wrapLabel(e.message,l.width-2*h.wrapPadding,f(h))),s.log.debug("NM:[".concat(l.startx,",").concat(l.stopx,",").concat(l.starty,",").concat(l.stopy,":").concat(l.width,",").concat(l.height,"=").concat(e.message,"]")),l}(e,t),e.noteModel=n,l.forEach((function(e){(i=e).from=Math.min(i.from,n.startx),i.to=Math.max(i.to,n.startx+n.width),i.width=Math.max(i.width,Math.abs(i.from-i.to))-h.labelBoxWidth}))):(r=function(e,t){var i=!1;if([o.parser.yy.LINETYPE.SOLID_OPEN,o.parser.yy.LINETYPE.DOTTED_OPEN,o.parser.yy.LINETYPE.SOLID,o.parser.yy.LINETYPE.DOTTED,o.parser.yy.LINETYPE.SOLID_CROSS,o.parser.yy.LINETYPE.DOTTED_CROSS,o.parser.yy.LINETYPE.SOLID_POINT,o.parser.yy.LINETYPE.DOTTED_POINT].includes(e.type)&&(i=!0),!i)return{};var n=v(e.from,t),r=v(e.to,t),s=n[0]<=r[0]?1:0,a=n[0]<r[0]?0:1,l=n.concat(r),c=Math.abs(r[a]-n[s]);e.wrap&&e.message&&(e.message=d.default.wrapLabel(e.message,Math.max(c+2*h.wrapPadding,h.width),g(h)));var u=d.default.calculateTextDimensions(e.message,g(h));return{width:Math.max(e.wrap?0:u.width+2*h.wrapPadding,c+2*h.wrapPadding,h.width),height:0,startx:n[s],stopx:r[a],starty:0,stopy:0,message:e.message,type:e.type,wrap:e.wrap,fromBounds:Math.min.apply(null,l),toBounds:Math.max.apply(null,l)}}(e,t),e.msgModel=r,r.startx&&r.stopx&&l.length>0&&l.forEach((function(n){if(i=n,r.startx===r.stopx){var s=t[e.from],o=t[e.to];i.from=Math.min(s.x-r.width/2,s.x-s.width/2,i.from),i.to=Math.max(o.x+r.width/2,o.x+s.width/2,i.to),i.width=Math.max(i.width,Math.abs(i.to-i.from))-h.labelBoxWidth}else i.from=Math.min(r.startx,i.from),i.to=Math.max(r.stopx,i.to),i.width=Math.max(i.width,r.width)-h.labelBoxWidth})))})),u.activations=[],s.log.debug("Loop type widths:",a),a};t.default={bounds:u,drawActors:m,setConf:_,draw:w}},"./src/diagrams/sequence/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return".actor {\n stroke: ".concat(e.actorBorder,";\n fill: ").concat(e.actorBkg,";\n }\n\n text.actor > tspan {\n fill: ").concat(e.actorTextColor,";\n stroke: none;\n }\n\n .actor-line {\n stroke: ").concat(e.actorLineColor,";\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ").concat(e.signalColor,";\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ").concat(e.signalColor,";\n }\n\n #arrowhead path {\n fill: ").concat(e.signalColor,";\n stroke: ").concat(e.signalColor,";\n }\n\n .sequenceNumber {\n fill: ").concat(e.sequenceNumberColor,";\n }\n\n #sequencenumber {\n fill: ").concat(e.signalColor,";\n }\n\n #crosshead path {\n fill: ").concat(e.signalColor,";\n stroke: ").concat(e.signalColor,";\n }\n\n .messageText {\n fill: ").concat(e.signalTextColor,";\n stroke: ").concat(e.signalTextColor,";\n }\n\n .labelBox {\n stroke: ").concat(e.labelBoxBorderColor,";\n fill: ").concat(e.labelBoxBkgColor,";\n }\n\n .labelText, .labelText > tspan {\n fill: ").concat(e.labelTextColor,";\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ").concat(e.loopTextColor,";\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ").concat(e.labelBoxBorderColor,";\n fill: ").concat(e.labelBoxBorderColor,";\n }\n\n .note {\n //stroke: #decc93;\n stroke: ").concat(e.noteBorderColor,";\n fill: ").concat(e.noteBkgColor,";\n }\n\n .noteText, .noteText > tspan {\n fill: ").concat(e.noteTextColor,";\n stroke: none;\n }\n\n .activation0 {\n fill: ").concat(e.activationBkgColor,";\n stroke: ").concat(e.activationBorderColor,";\n }\n\n .activation1 {\n fill: ").concat(e.activationBkgColor,";\n stroke: ").concat(e.activationBorderColor,";\n }\n\n .activation2 {\n fill: ").concat(e.activationBkgColor,";\n stroke: ").concat(e.activationBorderColor,";\n }\n")}},"./src/diagrams/sequence/svgDraw.js":function(e,t,i){"use strict";i.r(t),i.d(t,"drawRect",(function(){return r})),i.d(t,"drawText",(function(){return s})),i.d(t,"drawLabel",(function(){return o})),i.d(t,"drawActor",(function(){return l})),i.d(t,"anchorElement",(function(){return c})),i.d(t,"drawActivation",(function(){return d})),i.d(t,"drawLoop",(function(){return h})),i.d(t,"drawBackgroundRect",(function(){return u})),i.d(t,"insertArrowHead",(function(){return g})),i.d(t,"insertArrowFilledHead",(function(){return f})),i.d(t,"insertSequenceNumber",(function(){return p})),i.d(t,"insertArrowCrossHead",(function(){return m})),i.d(t,"getTextObj",(function(){return _})),i.d(t,"getNoteRect",(function(){return b}));var n=i("./src/diagrams/common/common.js"),r=function(e,t){var i=e.append("rect");return i.attr("x",t.x),i.attr("y",t.y),i.attr("fill",t.fill),i.attr("stroke",t.stroke),i.attr("width",t.width),i.attr("height",t.height),i.attr("rx",t.rx),i.attr("ry",t.ry),void 0!==t.class&&i.attr("class",t.class),i},s=function(e,t){var i=0,r=0,s=t.text.split(n.default.lineBreakRegex),o=[],a=0,l=function(){return t.y};if(void 0!==t.valign&&void 0!==t.textMargin&&t.textMargin>0)switch(t.valign){case"top":case"start":l=function(){return Math.round(t.y+t.textMargin)};break;case"middle":case"center":l=function(){return Math.round(t.y+(i+r+t.textMargin)/2)};break;case"bottom":case"end":l=function(){return Math.round(t.y+(i+r+2*t.textMargin)-t.textMargin)}}if(void 0!==t.anchor&&void 0!==t.textMargin&&void 0!==t.width)switch(t.anchor){case"left":case"start":t.x=Math.round(t.x+t.textMargin),t.anchor="start",t.dominantBaseline="text-after-edge",t.alignmentBaseline="middle";break;case"middle":case"center":t.x=Math.round(t.x+t.width/2),t.anchor="middle",t.dominantBaseline="middle",t.alignmentBaseline="middle";break;case"right":case"end":t.x=Math.round(t.x+t.width-t.textMargin),t.anchor="end",t.dominantBaseline="text-before-edge",t.alignmentBaseline="middle"}for(var c=0;c<s.length;c++){var d=s[c];void 0!==t.textMargin&&0===t.textMargin&&void 0!==t.fontSize&&(a=c*t.fontSize);var h=e.append("text");if(h.attr("x",t.x),h.attr("y",l()),void 0!==t.anchor&&h.attr("text-anchor",t.anchor).attr("dominant-baseline",t.dominantBaseline).attr("alignment-baseline",t.alignmentBaseline),void 0!==t.fontFamily&&h.style("font-family",t.fontFamily),void 0!==t.fontSize&&h.style("font-size",t.fontSize),void 0!==t.fontWeight&&h.style("font-weight",t.fontWeight),void 0!==t.fill&&h.attr("fill",t.fill),void 0!==t.class&&h.attr("class",t.class),void 0!==t.dy?h.attr("dy",t.dy):0!==a&&h.attr("dy",a),t.tspan){var u=h.append("tspan");u.attr("x",t.x),void 0!==t.fill&&u.attr("fill",t.fill),u.text(d)}else h.text(d);void 0!==t.valign&&void 0!==t.textMargin&&t.textMargin>0&&(r+=(h._groups||h)[0][0].getBBox().height,i=r),o.push(h)}return o},o=function(e,t){var i,n,r,o,a=e.append("polygon");return a.attr("points",(i=t.x)+","+(n=t.y)+" "+(i+(r=t.width))+","+n+" "+(i+r)+","+(n+(o=t.height)-7)+" "+(i+r-8.4)+","+(n+o)+" "+i+","+(n+o)),a.attr("class","labelBox"),t.y=t.y+t.height/2,s(e,t),a},a=-1,l=function(e,t,i){var n=t.x+t.width/2,s=e.append("g");0===t.y&&(a++,s.append("line").attr("id","actor"+a).attr("x1",n).attr("y1",5).attr("x2",n).attr("y2",2e3).attr("class","actor-line").attr("stroke-width","0.5px").attr("stroke","#999"));var o=b();o.x=t.x,o.y=t.y,o.fill="#eaeaea",o.width=t.width,o.height=t.height,o.class="actor",o.rx=3,o.ry=3,r(s,o),v(i)(t.description,s,o.x,o.y,o.width,o.height,{class:"actor"},i)},c=function(e){return e.append("g")},d=function(e,t,i,n,s){var o=b(),a=t.anchored;o.x=t.startx,o.y=t.starty,o.class="activation"+s%3,o.width=t.stopx-t.startx,o.height=i-t.starty,r(a,o)},h=function(e,t,i,n){var r=n.boxMargin,a=n.boxTextMargin,l=n.labelBoxHeight,c=n.labelBoxWidth,d=n.messageFontFamily,h=n.messageFontSize,u=n.messageFontWeight,g=e.append("g"),f=function(e,t,i,n){return g.append("line").attr("x1",e).attr("y1",t).attr("x2",i).attr("y2",n).attr("class","loopLine")};f(t.startx,t.starty,t.stopx,t.starty),f(t.stopx,t.starty,t.stopx,t.stopy),f(t.startx,t.stopy,t.stopx,t.stopy),f(t.startx,t.starty,t.startx,t.stopy),void 0!==t.sections&&t.sections.forEach((function(e){f(t.startx,e.y,t.stopx,e.y).style("stroke-dasharray","3, 3")}));var p=_();p.text=i,p.x=t.startx,p.y=t.starty,p.fontFamily=d,p.fontSize=h,p.fontWeight=u,p.anchor="middle",p.valign="middle",p.tspan=!1,p.width=c||50,p.height=l||20,p.textMargin=a,p.class="labelText",o(g,p),(p=_()).text=t.title,p.x=t.startx+c/2+(t.stopx-t.startx)/2,p.y=t.starty+r+a,p.anchor="middle",p.valign="middle",p.textMargin=a,p.class="loopText",p.fontFamily=d,p.fontSize=h,p.fontWeight=u,p.wrap=!0;var m=s(g,p);return void 0!==t.sectionTitles&&t.sectionTitles.forEach((function(e,i){if(e.message){p.text=e.message,p.x=t.startx+(t.stopx-t.startx)/2,p.y=t.sections[i].y+r+a,p.class="loopText",p.anchor="middle",p.valign="middle",p.tspan=!1,p.fontFamily=d,p.fontSize=h,p.fontWeight=u,p.wrap=t.wrap,m=s(g,p);var n=Math.round(m.map((function(e){return(e._groups||e)[0][0].getBBox().height})).reduce((function(e,t){return e+t})));t.sections[i].height+=n-(r+a)}})),t.height=Math.round(t.stopy-t.starty),g},u=function(e,t){r(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},g=function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},f=function(e){e.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},p=function(e){e.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},m=function(e){var t=e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);t.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),t.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},_=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},b=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},v=function(){function e(e,t,i,n,s,o,a){r(t.append("text").attr("x",i+s/2).attr("y",n+o/2+5).style("text-anchor","middle").text(e),a)}function t(e,t,i,s,o,a,l,c){for(var d=c.actorFontSize,h=c.actorFontFamily,u=c.actorFontWeight,g=e.split(n.default.lineBreakRegex),f=0;f<g.length;f++){var p=f*d-d*(g.length-1)/2,m=t.append("text").attr("x",i+o/2).attr("y",s).style("text-anchor","middle").style("font-size",d).style("font-weight",u).style("font-family",h);m.append("tspan").attr("x",i+o/2).attr("dy",p).text(g[f]),m.attr("y",s+a/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),r(m,l)}}function i(e,i,n,s,o,a,l,c){var d=i.append("switch"),h=d.append("foreignObject").attr("x",n).attr("y",s).attr("width",o).attr("height",a).append("div").style("display","table").style("height","100%").style("width","100%");h.append("div").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(e),t(e,d,n,s,o,a,l,c),r(h,l)}function r(e,t){for(var i in t)t.hasOwnProperty(i)&&e.attr(i,t[i])}return function(n){return"fo"===n.textPlacement?i:"old"===n.textPlacement?e:t}}();t.default={drawRect:r,drawText:s,drawLabel:o,drawActor:l,anchorElement:c,drawActivation:d,drawLoop:h,drawBackgroundRect:u,insertArrowHead:g,insertArrowFilledHead:f,insertSequenceNumber:p,insertArrowCrossHead:m,getTextObj:_,getNoteRect:b}},"./src/diagrams/state/id-cache.js":function(e,t,i){"use strict";i.r(t),i.d(t,"set",(function(){return r})),i.d(t,"get",(function(){return s})),i.d(t,"keys",(function(){return o})),i.d(t,"size",(function(){return a}));var n={},r=function(e,t){n[e]=t},s=function(e){return n[e]},o=function(){return Object.keys(n)},a=function(){return o().length};t.default={get:s,set:r,keys:o,size:a}},"./src/diagrams/state/parser/stateDiagram.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,2],i=[1,3],n=[1,5],r=[1,7],s=[2,5],o=[1,15],a=[1,17],l=[1,19],c=[1,20],d=[1,21],h=[1,22],u=[1,28],g=[1,23],f=[1,24],p=[1,25],m=[1,26],_=[1,29],b=[1,32],v=[1,4,5,14,15,17,19,20,22,23,24,25,26,36,39],y=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,36,39],w=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,36,39],C=[4,5,14,15,17,19,20,22,23,24,25,26,36,39],S={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,directive:6,SD:7,document:8,line:9,statement:10,idStatement:11,DESCR:12,"--\x3e":13,HIDE_EMPTY:14,scale:15,WIDTH:16,COMPOSIT_STATE:17,STRUCT_START:18,STRUCT_STOP:19,STATE_DESCR:20,AS:21,ID:22,FORK:23,JOIN:24,CONCURRENT:25,note:26,notePosition:27,NOTE_TEXT:28,openDirective:29,typeDirective:30,closeDirective:31,":":32,argDirective:33,eol:34,";":35,EDGE_STATE:36,left_of:37,right_of:38,open_directive:39,type_directive:40,arg_directive:41,close_directive:42,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",7:"SD",12:"DESCR",13:"--\x3e",14:"HIDE_EMPTY",15:"scale",16:"WIDTH",17:"COMPOSIT_STATE",18:"STRUCT_START",19:"STRUCT_STOP",20:"STATE_DESCR",21:"AS",22:"ID",23:"FORK",24:"JOIN",25:"CONCURRENT",26:"note",28:"NOTE_TEXT",32:":",35:";",36:"EDGE_STATE",37:"left_of",38:"right_of",39:"open_directive",40:"type_directive",41:"arg_directive",42:"close_directive"},productions_:[0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[6,3],[6,5],[34,1],[34,1],[11,1],[11,1],[27,1],[27,1],[29,1],[30,1],[33,1],[31,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 4:return n.setRootDoc(s[a]),s[a];case 5:this.$=[];break;case 6:"nl"!=s[a]&&(s[a-1].push(s[a]),this.$=s[a-1]);break;case 7:case 8:this.$=s[a];break;case 9:this.$="nl";break;case 10:this.$={stmt:"state",id:s[a],type:"default",description:""};break;case 11:this.$={stmt:"state",id:s[a-1],type:"default",description:n.trimColon(s[a])};break;case 12:this.$={stmt:"relation",state1:{stmt:"state",id:s[a-2],type:"default",description:""},state2:{stmt:"state",id:s[a],type:"default",description:""}};break;case 13:this.$={stmt:"relation",state1:{stmt:"state",id:s[a-3],type:"default",description:""},state2:{stmt:"state",id:s[a-1],type:"default",description:""},description:s[a].substr(1).trim()};break;case 17:this.$={stmt:"state",id:s[a-3],type:"default",description:"",doc:s[a-1]};break;case 18:var l=s[a],c=s[a-2].trim();if(s[a].match(":")){var d=s[a].split(":");l=d[0],c=[c,d[1]]}this.$={stmt:"state",id:l,type:"default",description:c};break;case 19:this.$={stmt:"state",id:s[a-3],type:"default",description:s[a-5],doc:s[a-1]};break;case 20:this.$={stmt:"state",id:s[a],type:"fork"};break;case 21:this.$={stmt:"state",id:s[a],type:"join"};break;case 22:this.$={stmt:"state",id:n.getDividerId(),type:"divider"};break;case 23:this.$={stmt:"state",id:s[a-1].trim(),note:{position:s[a-2].trim(),text:s[a].trim()}};break;case 30:case 31:this.$=s[a];break;case 34:n.parseDirective("%%{","open_directive");break;case 35:n.parseDirective(s[a],"type_directive");break;case 36:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 37:n.parseDirective("}%%","close_directive","state")}},table:[{3:1,4:t,5:i,6:4,7:n,29:6,39:r},{1:[3]},{3:8,4:t,5:i,6:4,7:n,29:6,39:r},{3:9,4:t,5:i,6:4,7:n,29:6,39:r},{3:10,4:t,5:i,6:4,7:n,29:6,39:r},e([1,4,5,14,15,17,20,22,23,24,25,26,36,39],s,{8:11}),{30:12,40:[1,13]},{40:[2,34]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:o,5:a,6:27,9:14,10:16,11:18,14:l,15:c,17:d,20:h,22:u,23:g,24:f,25:p,26:m,29:6,36:_,39:r},{31:30,32:[1,31],42:b},e([32,42],[2,35]),e(v,[2,6]),{6:27,10:33,11:18,14:l,15:c,17:d,20:h,22:u,23:g,24:f,25:p,26:m,29:6,36:_,39:r},e(v,[2,8]),e(v,[2,9]),e(v,[2,10],{12:[1,34],13:[1,35]}),e(v,[2,14]),{16:[1,36]},e(v,[2,16],{18:[1,37]}),{21:[1,38]},e(v,[2,20]),e(v,[2,21]),e(v,[2,22]),{27:39,28:[1,40],37:[1,41],38:[1,42]},e(v,[2,25]),e(y,[2,30]),e(y,[2,31]),e(w,[2,26]),{33:43,41:[1,44]},e(w,[2,37]),e(v,[2,7]),e(v,[2,11]),{11:45,22:u,36:_},e(v,[2,15]),e(C,s,{8:46}),{22:[1,47]},{22:[1,48]},{21:[1,49]},{22:[2,32]},{22:[2,33]},{31:50,42:b},{42:[2,36]},e(v,[2,12],{12:[1,51]}),{4:o,5:a,6:27,9:14,10:16,11:18,14:l,15:c,17:d,19:[1,52],20:h,22:u,23:g,24:f,25:p,26:m,29:6,36:_,39:r},e(v,[2,18],{18:[1,53]}),{28:[1,54]},{22:[1,55]},e(w,[2,27]),e(v,[2,13]),e(v,[2,17]),e(C,s,{8:56}),e(v,[2,23]),e(v,[2,24]),{4:o,5:a,6:27,9:14,10:16,11:18,14:l,15:c,17:d,19:[1,57],20:h,22:u,23:g,24:f,25:p,26:m,29:6,36:_,39:r},e(v,[2,19])],defaultActions:{7:[2,34],8:[2,1],9:[2,2],10:[2,3],41:[2,32],42:[2,33],44:[2,36]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},k={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),39;case 1:return this.begin("type_directive"),40;case 2:return this.popState(),this.begin("arg_directive"),32;case 3:return this.popState(),this.popState(),42;case 4:return 41;case 5:break;case 6:console.log("Crap after close");break;case 7:return 5;case 8:case 9:case 10:case 11:break;case 12:return this.pushState("SCALE"),15;case 13:return 16;case 14:this.popState();break;case 15:this.pushState("STATE");break;case 16:return this.popState(),t.yytext=t.yytext.slice(0,-8).trim(),23;case 17:return this.popState(),t.yytext=t.yytext.slice(0,-8).trim(),24;case 18:return this.popState(),t.yytext=t.yytext.slice(0,-8).trim(),23;case 19:return this.popState(),t.yytext=t.yytext.slice(0,-8).trim(),24;case 20:this.begin("STATE_STRING");break;case 21:return this.popState(),this.pushState("STATE_ID"),"AS";case 22:return this.popState(),"ID";case 23:this.popState();break;case 24:return"STATE_DESCR";case 25:return 17;case 26:this.popState();break;case 27:return this.popState(),this.pushState("struct"),18;case 28:return this.popState(),19;case 29:break;case 30:return this.begin("NOTE"),26;case 31:return this.popState(),this.pushState("NOTE_ID"),37;case 32:return this.popState(),this.pushState("NOTE_ID"),38;case 33:this.popState(),this.pushState("FLOATING_NOTE");break;case 34:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 35:break;case 36:return"NOTE_TEXT";case 37:return this.popState(),"ID";case 38:return this.popState(),this.pushState("NOTE_TEXT"),22;case 39:return this.popState(),t.yytext=t.yytext.substr(2).trim(),28;case 40:return this.popState(),t.yytext=t.yytext.slice(0,-8).trim(),28;case 41:case 42:return 7;case 43:return 14;case 44:return 36;case 45:return 22;case 46:return t.yytext=t.yytext.trim(),12;case 47:return 13;case 48:return 25;case 49:return 5;case 50:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},close_directive:{rules:[9,10],inclusive:!1},arg_directive:{rules:[3,4,9,10],inclusive:!1},type_directive:{rules:[2,3,9,10],inclusive:!1},open_directive:{rules:[1,9,10],inclusive:!1},struct:{rules:[9,10,15,28,29,30,44,45,46,47,48],inclusive:!1},FLOATING_NOTE_ID:{rules:[37],inclusive:!1},FLOATING_NOTE:{rules:[34,35,36],inclusive:!1},NOTE_TEXT:{rules:[39,40],inclusive:!1},NOTE_ID:{rules:[38],inclusive:!1},NOTE:{rules:[31,32,33],inclusive:!1},SCALE:{rules:[13,14],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[22],inclusive:!1},STATE_STRING:{rules:[23,24],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,16,17,18,19,20,21,25,26,27],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,10,11,12,15,27,30,41,42,43,44,45,46,47,49,50],inclusive:!0}}};function x(){this.yy={}}return S.lexer=k,x.prototype=S,S.Parser=x,new x}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/state/shapes.js":function(e,t,i){"use strict";i.r(t),i.d(t,"drawStartState",(function(){return d})),i.d(t,"drawDivider",(function(){return h})),i.d(t,"drawSimpleState",(function(){return u})),i.d(t,"drawDescrState",(function(){return g})),i.d(t,"addTitleAndBox",(function(){return f})),i.d(t,"drawText",(function(){return p})),i.d(t,"drawNote",(function(){return m})),i.d(t,"drawState",(function(){return _})),i.d(t,"drawEdge",(function(){return v}));var n=i("d3"),r=i("./src/diagrams/state/id-cache.js"),s=i("./src/diagrams/state/stateDb.js"),o=i("./src/utils.js"),a=i("./src/diagrams/common/common.js"),l=i("./src/config.js"),c=i("./src/logger.js"),d=function(e){return e.append("circle").attr("class","start-state").attr("r",Object(l.getConfig)().state.sizeUnit).attr("cx",Object(l.getConfig)().state.padding+Object(l.getConfig)().state.sizeUnit).attr("cy",Object(l.getConfig)().state.padding+Object(l.getConfig)().state.sizeUnit)},h=function(e){return e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Object(l.getConfig)().state.textHeight).attr("class","divider").attr("x2",2*Object(l.getConfig)().state.textHeight).attr("y1",0).attr("y2",0)},u=function(e,t){var i=e.append("text").attr("x",2*Object(l.getConfig)().state.padding).attr("y",Object(l.getConfig)().state.textHeight+2*Object(l.getConfig)().state.padding).attr("font-size",Object(l.getConfig)().state.fontSize).attr("class","state-title").text(t.id),n=i.node().getBBox();return e.insert("rect",":first-child").attr("x",Object(l.getConfig)().state.padding).attr("y",Object(l.getConfig)().state.padding).attr("width",n.width+2*Object(l.getConfig)().state.padding).attr("height",n.height+2*Object(l.getConfig)().state.padding).attr("rx",Object(l.getConfig)().state.radius),i},g=function(e,t){var i=e.append("text").attr("x",2*Object(l.getConfig)().state.padding).attr("y",Object(l.getConfig)().state.textHeight+1.3*Object(l.getConfig)().state.padding).attr("font-size",Object(l.getConfig)().state.fontSize).attr("class","state-title").text(t.descriptions[0]).node().getBBox(),n=i.height,r=e.append("text").attr("x",Object(l.getConfig)().state.padding).attr("y",n+.4*Object(l.getConfig)().state.padding+Object(l.getConfig)().state.dividerMargin+Object(l.getConfig)().state.textHeight).attr("class","state-description"),s=!0,o=!0;t.descriptions.forEach((function(e){s||(function(e,t,i){var n=e.append("tspan").attr("x",2*Object(l.getConfig)().state.padding).text(t);i||n.attr("dy",Object(l.getConfig)().state.textHeight)}(r,e,o),o=!1),s=!1}));var a=e.append("line").attr("x1",Object(l.getConfig)().state.padding).attr("y1",Object(l.getConfig)().state.padding+n+Object(l.getConfig)().state.dividerMargin/2).attr("y2",Object(l.getConfig)().state.padding+n+Object(l.getConfig)().state.dividerMargin/2).attr("class","descr-divider"),c=r.node().getBBox(),d=Math.max(c.width,i.width);return a.attr("x2",d+3*Object(l.getConfig)().state.padding),e.insert("rect",":first-child").attr("x",Object(l.getConfig)().state.padding).attr("y",Object(l.getConfig)().state.padding).attr("width",d+2*Object(l.getConfig)().state.padding).attr("height",c.height+n+2*Object(l.getConfig)().state.padding).attr("rx",Object(l.getConfig)().state.radius),e},f=function(e,t,i){var n,r=Object(l.getConfig)().state.padding,s=2*Object(l.getConfig)().state.padding,o=e.node().getBBox(),a=o.width,c=o.x,d=e.append("text").attr("x",0).attr("y",Object(l.getConfig)().state.titleShift).attr("font-size",Object(l.getConfig)().state.fontSize).attr("class","state-title").text(t.id),h=d.node().getBBox().width+s,u=Math.max(h,a);u===a&&(u+=s);var g=e.node().getBBox();t.doc,n=c-r,h>a&&(n=(a-u)/2+r),Math.abs(c-g.x)<r&&h>a&&(n=c-(h-a)/2);var f=1-Object(l.getConfig)().state.textHeight;return e.insert("rect",":first-child").attr("x",n).attr("y",f).attr("class",i?"alt-composit":"composit").attr("width",u).attr("height",g.height+Object(l.getConfig)().state.textHeight+Object(l.getConfig)().state.titleShift+1).attr("rx","0"),d.attr("x",n+r),h<=a&&d.attr("x",c+(u-s)/2-h/2+r),e.insert("rect",":first-child").attr("x",n).attr("y",Object(l.getConfig)().state.titleShift-Object(l.getConfig)().state.textHeight-Object(l.getConfig)().state.padding).attr("width",u).attr("height",3*Object(l.getConfig)().state.textHeight).attr("rx",Object(l.getConfig)().state.radius),e.insert("rect",":first-child").attr("x",n).attr("y",Object(l.getConfig)().state.titleShift-Object(l.getConfig)().state.textHeight-Object(l.getConfig)().state.padding).attr("width",u).attr("height",g.height+3+2*Object(l.getConfig)().state.textHeight).attr("rx",Object(l.getConfig)().state.radius),e},p=function(e,t){var i=t.text.replace(a.default.lineBreakRegex," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.style("text-anchor",t.anchor),n.attr("fill",t.fill),void 0!==t.class&&n.attr("class",t.class);var r=n.append("tspan");return r.attr("x",t.x+2*t.textMargin),r.attr("fill",t.fill),r.text(i),n},m=function(e,t){t.attr("class","state-note");var i=t.append("rect").attr("x",0).attr("y",Object(l.getConfig)().state.padding),n=function(e,t,i,n){var r=0,s=n.append("text");s.style("text-anchor","start"),s.attr("class","noteText");var o=e.replace(/\r\n/g,"<br/>"),c=(o=o.replace(/\n/g,"<br/>")).split(a.default.lineBreakRegex),d=1.25*Object(l.getConfig)().state.noteMargin,h=!0,u=!1,g=void 0;try{for(var f,p=c[Symbol.iterator]();!(h=(f=p.next()).done);h=!0){var m=f.value.trim();if(m.length>0){var _=s.append("tspan");_.text(m),0===d&&(d+=_.node().getBBox().height),r+=d,_.attr("x",0+Object(l.getConfig)().state.noteMargin),_.attr("y",0+r+1.25*Object(l.getConfig)().state.noteMargin)}}}catch(e){u=!0,g=e}finally{try{h||null==p.return||p.return()}finally{if(u)throw g}}return{textWidth:s.node().getBBox().width,textHeight:r}}(e,0,0,t.append("g")),r=n.textWidth,s=n.textHeight;return i.attr("height",s+2*Object(l.getConfig)().state.noteMargin),i.attr("width",r+2*Object(l.getConfig)().state.noteMargin),i},_=function(e,t){var i=t.id,n={id:i,label:t.id,width:0,height:0},s=e.append("g").attr("id",i).attr("class","stateGroup");"start"===t.type&&d(s),"end"===t.type&&function(e){e.append("circle").attr("class","end-state-outer").attr("r",Object(l.getConfig)().state.sizeUnit+Object(l.getConfig)().state.miniPadding).attr("cx",Object(l.getConfig)().state.padding+Object(l.getConfig)().state.sizeUnit+Object(l.getConfig)().state.miniPadding).attr("cy",Object(l.getConfig)().state.padding+Object(l.getConfig)().state.sizeUnit+Object(l.getConfig)().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",Object(l.getConfig)().state.sizeUnit).attr("cx",Object(l.getConfig)().state.padding+Object(l.getConfig)().state.sizeUnit+2).attr("cy",Object(l.getConfig)().state.padding+Object(l.getConfig)().state.sizeUnit+2)}(s),"fork"!==t.type&&"join"!==t.type||function(e,t){var i=Object(l.getConfig)().state.forkWidth,n=Object(l.getConfig)().state.forkHeight;if(t.parentId){var r=i;i=n,n=r}e.append("rect").style("stroke","black").style("fill","black").attr("width",i).attr("height",n).attr("x",Object(l.getConfig)().state.padding).attr("y",Object(l.getConfig)().state.padding)}(s,t),"note"===t.type&&m(t.note.text,s),"divider"===t.type&&h(s),"default"===t.type&&0===t.descriptions.length&&u(s,t),"default"===t.type&&t.descriptions.length>0&&g(s,t);var o=s.node().getBBox();return n.width=o.width+2*Object(l.getConfig)().state.padding,n.height=o.height+2*Object(l.getConfig)().state.padding,r.default.set(i,n),n},b=0,v=function(e,t,i){t.points=t.points.filter((function(e){return!Number.isNaN(e.y)}));var r=t.points,d=Object(n.line)().x((function(e){return e.x})).y((function(e){return e.y})).curve(n.curveBasis),h=e.append("path").attr("d",d(r)).attr("id","edge"+b).attr("class","transition"),u="";if(Object(l.getConfig)().state.arrowMarkerAbsolute&&(u=(u=(u=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search).replace(/\(/g,"\\(")).replace(/\)/g,"\\)")),h.attr("marker-end","url("+u+"#"+function(e){switch(e){case s.default.relationType.AGGREGATION:return"aggregation";case s.default.relationType.EXTENSION:return"extension";case s.default.relationType.COMPOSITION:return"composition";case s.default.relationType.DEPENDENCY:return"dependency"}}(s.default.relationType.DEPENDENCY)+"End)"),void 0!==i.title){for(var g=e.append("g").attr("class","stateLabel"),f=o.default.calcLabelPosition(t.points),p=f.x,m=f.y,_=a.default.getRows(i.title),v=0,y=[],w=0,C=0,S=0;S<=_.length;S++){var k=g.append("text").attr("text-anchor","middle").text(_[S]).attr("x",p).attr("y",m+v),x=k.node().getBBox();if(w=Math.max(w,x.width),C=Math.min(C,x.x),c.log.info(x.x,p,m+v),0===v){var L=k.node().getBBox();v=L.height,c.log.info("Title height",v,m)}y.push(k)}var M=v*_.length;if(_.length>1){var D=(_.length-1)*v*.5;y.forEach((function(e,t){return e.attr("y",m+t*v-D)})),M=v*_.length}var N=g.node().getBBox();g.insert("rect",":first-child").attr("class","box").attr("x",p-w/2-Object(l.getConfig)().state.padding/2).attr("y",m-M/2-Object(l.getConfig)().state.padding/2-3.5).attr("width",w+Object(l.getConfig)().state.padding).attr("height",M+Object(l.getConfig)().state.padding),c.log.info(N)}b++}},"./src/diagrams/state/stateDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return d})),i.d(t,"addState",(function(){return p})),i.d(t,"clear",(function(){return m})),i.d(t,"getState",(function(){return _})),i.d(t,"getStates",(function(){return b})),i.d(t,"logDocuments",(function(){return v})),i.d(t,"getRelations",(function(){return y})),i.d(t,"addRelation",(function(){return w})),i.d(t,"cleanupLabel",(function(){return S})),i.d(t,"lineType",(function(){return k})),i.d(t,"relationType",(function(){return M}));var n=i("./src/logger.js"),r=i("./src/utils.js"),s=i("./src/mermaidAPI.js"),o=i("./src/config.js");function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var l=function(e){return JSON.parse(JSON.stringify(e))},c=[],d=function(e,t,i){s.default.parseDirective(this,e,t,i)},h=function e(t,i,n){if("relation"===i.stmt)e(t,i.state1,!0),e(t,i.state2,!1);else if("state"===i.stmt&&"[*]"===i.id&&(i.id=n?t.id+"_start":t.id+"_end",i.start=n),i.doc){var s=[],o=0,a=[];for(o=0;o<i.doc.length;o++)if("divider"===i.doc[o].type){var c=l(i.doc[o]);c.doc=l(a),s.push(c),a=[]}else a.push(i.doc[o]);if(s.length>0&&a.length>0){var d={stmt:"state",id:Object(r.generateId)(),type:"divider",doc:l(a)};s.push(l(d)),i.doc=s}i.doc.forEach((function(t){return e(i,t,!0)}))}},u={root:{relations:[],states:{},documents:{}}},g=u.root,f=0,p=function(e,t,i,r,s){void 0===g.states[e]?g.states[e]={id:e,descriptions:[],type:t,doc:i,note:s}:(g.states[e].doc||(g.states[e].doc=i),g.states[e].type||(g.states[e].type=t)),r&&(n.log.info("Adding state ",e,r),"string"==typeof r&&C(e,r.trim()),"object"===a(r)&&r.forEach((function(t){return C(e,t.trim())}))),s&&(g.states[e].note=s)},m=function(){g=(u={root:{relations:[],states:{},documents:{}}}).root,g=u.root,f=0,L=[]},_=function(e){return g.states[e]},b=function(){return g.states},v=function(){n.log.info("Documents = ",u)},y=function(){return g.relations},w=function(e,t,i){var n=e,r=t,s="default",o="default";"[*]"===e&&(n="start"+ ++f,s="start"),"[*]"===t&&(r="end"+f,o="end"),p(n,s),p(r,o),g.relations.push({id1:n,id2:r,title:i})},C=function(e,t){var i=g.states[e],n=t;":"===n[0]&&(n=n.substr(1).trim()),i.descriptions.push(n)},S=function(e){return":"===e.substring(0,1)?e.substr(2).trim():e.trim()},k={LINE:0,DOTTED_LINE:1},x=0,L=[],M={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3};t.default={parseDirective:d,getConfig:function(){return o.getConfig().state},addState:p,clear:m,getState:_,getStates:b,getRelations:y,getClasses:function(){return L},getDirection:function(){return"TB"},addRelation:w,getDividerId:function(){return"divider-id-"+ ++x},cleanupLabel:S,lineType:k,relationType:M,logDocuments:v,getRootDoc:function(){return c},setRootDoc:function(e){n.log.info("Setting root doc",e),c=e},getRootDocV2:function(){return h({id:"root"},{id:"root",doc:c},!0),{id:"root",doc:c}},extract:function(e){var t;t=e.doc?e.doc:e,n.log.info(t),m(),n.log.info("Extract",t),t.forEach((function(e){"state"===e.stmt&&p(e.id,e.type,e.doc,e.description,e.note),"relation"===e.stmt&&w(e.state1.id,e.state2.id,e.description)}))},trimColon:function(e){return e&&":"===e[0]?e.substr(1).trim():e.trim()}}},"./src/diagrams/state/stateRenderer-v2.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return f})),i.d(t,"getClasses",(function(){return m})),i.d(t,"draw",(function(){return y}));var n=i("graphlib"),r=i.n(n),s=i("d3"),o=i("./src/diagrams/state/stateDb.js"),a=i("./src/diagrams/state/parser/stateDiagram.jison"),l=i.n(a),c=i("./src/config.js"),d=i("./src/dagre-wrapper/index.js"),h=i("./src/logger.js"),u=i("./src/utils.js"),g={},f=function(e){for(var t=Object.keys(e),i=0;i<t.length;i++)g[t[i]]=e[t[i]]},p={},m=function(e){h.log.trace("Extracting classes"),o.default.clear();var t=l.a.parser;return t.yy=o.default,t.parse(e),o.default.getClasses()},_=function(e,t,i,n){if("root"!==i.id){var r="rect";!0===i.start&&(r="start"),!1===i.start&&(r="end"),"default"!==i.type&&(r=i.type),p[i.id]||(p[i.id]={id:i.id,shape:r,description:i.id,classes:"statediagram-state"}),i.description&&(Array.isArray(p[i.id].description)?(p[i.id].shape="rectWithTitle",p[i.id].description.push(i.description)):p[i.id].description.length>0?(p[i.id].shape="rectWithTitle",p[i.id].description===i.id?p[i.id].description=[i.description]:p[i.id].description=[p[i.id].description,i.description]):(p[i.id].shape="rect",p[i.id].description=i.description)),!p[i.id].type&&i.doc&&(h.log.info("Setting cluser for ",i.id),p[i.id].type="group",p[i.id].shape="divider"===i.type?"divider":"roundedWithTitle",p[i.id].classes=p[i.id].classes+" "+(n?"statediagram-cluster statediagram-cluster-alt":"statediagram-cluster"));var s={labelStyle:"",shape:p[i.id].shape,labelText:p[i.id].description,classes:p[i.id].classes,style:"",id:i.id,domId:"state-"+i.id+"-"+b,type:p[i.id].type,padding:15};if(i.note){var o={labelStyle:"",shape:"note",labelText:i.note.text,classes:"statediagram-note",style:"",id:i.id+"----note",domId:"state-"+i.id+"----note-"+b,type:p[i.id].type,padding:15},a={labelStyle:"",shape:"noteGroup",labelText:i.note.text,classes:p[i.id].classes,style:"",id:i.id+"----parent",domId:"state-"+i.id+"----parent-"+b,type:"group",padding:0};b++,e.setNode(i.id+"----parent",a),e.setNode(o.id,o),e.setNode(i.id,s),e.setParent(i.id,i.id+"----parent"),e.setParent(o.id,i.id+"----parent");var l=i.id,c=o.id;"left of"===i.note.position&&(l=o.id,c=i.id),e.setEdge(l,c,{arrowhead:"none",arrowType:"",style:"fill:none",labelStyle:"",classes:"transition note-edge",arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal"})}else e.setNode(i.id,s)}t&&"root"!==t.id&&(h.log.info("Setting node ",i.id," to be child of its parent ",t.id),e.setParent(i.id,t.id)),i.doc&&(h.log.info("Adding nodes children "),v(e,i,i.doc,!n))},b=0,v=function(e,t,i,n){b=0,h.log.trace("items",i),i.forEach((function(i){if("state"===i.stmt||"default"===i.stmt)_(e,t,i,n);else if("relation"===i.stmt){_(e,t,i.state1,n),_(e,t,i.state2,n);var r={id:"edge"+b,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:"fill:none",labelStyle:"",label:i.description,arrowheadStyle:"fill: #333",labelpos:"c",labelType:"text",thickness:"normal",classes:"transition"},s=i.state1.id,o=i.state2.id;e.setEdge(s,o,r,b),b++}}))},y=function(e,t){h.log.info("Drawing state diagram (v2)",t),o.default.clear(),p={};var i=l.a.parser;i.yy=o.default,i.parse(e);var n=o.default.getDirection();void 0===n&&(n="LR");var a=Object(c.getConfig)().state,g=a.nodeSpacing||50,f=a.rankSpacing||50,m=new r.a.Graph({multigraph:!0,compound:!0}).setGraph({rankdir:"TB",nodesep:g,ranksep:f,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));h.log.info(o.default.getRootDocV2()),o.default.extract(o.default.getRootDocV2()),h.log.info(o.default.getRootDocV2()),_(m,void 0,o.default.getRootDocV2(),!0);var b=Object(s.select)('[id="'.concat(t,'"]')),v=Object(s.select)("#"+t+" g");Object(d.render)(v,m,["barb"],"statediagram",t);var y=b.node().getBBox(),w=y.width+16,C=y.height+16;b.attr("class","statediagram");var S=b.node().getBBox();Object(u.configureSvgSize)(b,C,1.75*w,a.useMaxWidth);var k="".concat(S.x-8," ").concat(S.y-8," ").concat(w," ").concat(C);if(h.log.debug("viewBox ".concat(k)),b.attr("viewBox",k),!a.htmlLabels)for(var x=document.querySelectorAll('[id="'+t+'"] .edgeLabel .label'),L=0;L<x.length;L++){var M=x[L],D=M.getBBox(),N=document.createElementNS("http://www.w3.org/2000/svg","rect");N.setAttribute("rx",0),N.setAttribute("ry",0),N.setAttribute("width",D.width),N.setAttribute("height",D.height),M.insertBefore(N,M.firstChild)}};t.default={setConf:f,getClasses:m,draw:y}},"./src/diagrams/state/stateRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return _})),i.d(t,"draw",(function(){return b}));var n,r=i("d3"),s=i("dagre"),o=i.n(s),a=i("graphlib"),l=i.n(a),c=i("./src/logger.js"),d=i("./src/diagrams/state/stateDb.js"),h=i("./src/diagrams/common/common.js"),u=i("./src/diagrams/state/parser/stateDiagram.jison"),g=i("./src/diagrams/state/shapes.js"),f=i("./src/config.js"),p=i("./src/utils.js");u.parser.yy=d.default;var m={},_=function(){},b=function(e,t){n=Object(f.getConfig)().state,u.parser.yy.clear(),u.parser.parse(e),c.log.debug("Rendering diagram "+e);var i=Object(r.select)("[id='".concat(t,"']"));i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z"),new l.a.Graph({multigraph:!0,compound:!0,rankdir:"RL"}).setDefaultEdgeLabel((function(){return{}}));var s=d.default.getRootDoc();v(s,i,void 0,!1);var o=n.padding,a=i.node().getBBox(),h=a.width+2*o,g=a.height+2*o,m=1.75*h;Object(p.configureSvgSize)(i,g,m,n.useMaxWidth),i.attr("viewBox","".concat(a.x-n.padding," ").concat(a.y-n.padding," ")+h+" "+g)},v=function e(t,i,s,a){var u,f=new l.a.Graph({compound:!0,multigraph:!0}),p=!0;for(u=0;u<t.length;u++)if("relation"===t[u].stmt){p=!1;break}s?f.setGraph({rankdir:"LR",multigraph:!0,compound:!0,ranker:"tight-tree",ranksep:p?1:n.edgeLengthFactor,nodeSep:p?1:50,isMultiGraph:!0}):f.setGraph({rankdir:"TB",multigraph:!0,compound:!0,ranksep:p?1:n.edgeLengthFactor,nodeSep:p?1:50,ranker:"tight-tree",isMultiGraph:!0}),f.setDefaultEdgeLabel((function(){return{}})),d.default.extract(t);for(var _=d.default.getStates(),b=d.default.getRelations(),v=Object.keys(_),y=0;y<v.length;y++){var w=_[v[y]];s&&(w.parentId=s);var C=void 0;if(w.doc){var S=i.append("g").attr("id",w.id).attr("class","stateGroup");C=e(w.doc,S,w.id,!a);var k=(S=Object(g.addTitleAndBox)(S,w,a)).node().getBBox();C.width=k.width,C.height=k.height+n.padding/2,m[w.id]={y:n.compositTitleSize}}else C=Object(g.drawState)(i,w,f);if(w.note){var x={descriptions:[],id:w.id+"-note",note:w.note,type:"note"},L=Object(g.drawState)(i,x,f);"left of"===w.note.position?(f.setNode(C.id+"-note",L),f.setNode(C.id,C)):(f.setNode(C.id,C),f.setNode(C.id+"-note",L)),f.setParent(C.id,C.id+"-group"),f.setParent(C.id+"-note",C.id+"-group")}else f.setNode(C.id,C)}c.log.debug("Count=",f.nodeCount(),f);var M=0;b.forEach((function(e){var t;M++,c.log.debug("Setting edge",e),f.setEdge(e.id1,e.id2,{relation:e,width:(t=e.title,t?t.length*n.fontSizeFactor:1),height:n.labelHeight*h.default.getRows(e.title).length,labelpos:"c"},"id"+M)})),o.a.layout(f),c.log.debug("Graph after layout",f.nodes());var D=i.node();f.nodes().forEach((function(e){void 0!==e&&void 0!==f.node(e)?(c.log.warn("Node "+e+": "+JSON.stringify(f.node(e))),Object(r.select)("#"+D.id+" #"+e).attr("transform","translate("+(f.node(e).x-f.node(e).width/2)+","+(f.node(e).y+(m[e]?m[e].y:0)-f.node(e).height/2)+" )"),Object(r.select)("#"+D.id+" #"+e).attr("data-x-shift",f.node(e).x-f.node(e).width/2),document.querySelectorAll("#"+D.id+" #"+e+" .divider").forEach((function(e){var t=e.parentElement,i=0,n=0;t&&(t.parentElement&&(i=t.parentElement.getBBox().width),n=parseInt(t.getAttribute("data-x-shift"),10),Number.isNaN(n)&&(n=0)),e.setAttribute("x1",0-n+8),e.setAttribute("x2",i-n-8)}))):c.log.debug("No Node "+e+": "+JSON.stringify(f.node(e)))}));var N=D.getBBox();f.edges().forEach((function(e){void 0!==e&&void 0!==f.edge(e)&&(c.log.debug("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(f.edge(e))),Object(g.drawEdge)(i,f.edge(e),f.edge(e).relation))})),N=D.getBBox();var E={id:s||"root",label:s||"root",width:0,height:0};return E.width=N.width+2*n.padding,E.height=N.height+2*n.padding,c.log.debug("Doc rendered",E,f),E};t.default={setConf:_,draw:b}},"./src/diagrams/state/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return"g.stateGroup text {\n fill: ".concat(e.nodeBorder,";\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ").concat(e.textColor,";\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ").concat(e.labelColor,";\n}\n\ng.stateGroup rect {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n}\n\ng.stateGroup line {\n stroke: ").concat(e.lineColor,";\n stroke-width: 1;\n}\n\n.transition {\n stroke: ").concat(e.lineColor,";\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ").concat(e.background,";\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ").concat(e.noteBorderColor,";\n fill: ").concat(e.noteBkgColor,";\n\n text {\n fill: black;\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ").concat(e.mainBkg,";\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ").concat(e.tertiaryColor,";\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ").concat(e.tertiaryTextColor,";\n}\n.label div .edgeLabel {\n color: ").concat(e.tertiaryTextColor,";\n}\n\n.stateLabel text {\n fill: ").concat(e.labelColor,";\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ").concat(e.lineColor,";\n stroke: black;\n}\n.node circle.state-end {\n fill: ").concat(e.primaryBorderColor,";\n stroke: ").concat(e.background,";\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ").concat(e.background,";\n // stroke: ").concat(e.background,";\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ").concat(e.lineColor,";\n}\n\n.statediagram-cluster rect {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ").concat(e.textColor,";\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ").concat(e.nodeBorder,";\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ").concat(e.background,";\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: #e0e0e0;\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ").concat(e.altBackground?e.altBackground:"#efefef",";\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ").concat(e.noteBkgColor,";\n stroke: ").concat(e.noteBorderColor,";\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ").concat(e.noteBkgColor,";\n stroke: ").concat(e.noteBorderColor,";\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ").concat(e.noteTextColor,";\n}\n\n.statediagram-note .nodeLabel {\n color: ").concat(e.noteTextColor,";\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ").concat(e.lineColor,";\n stroke: ").concat(e.lineColor,";\n stroke-width: 1;\n}\n")}},"./src/diagrams/user-journey/journeyDb.js":function(e,t,i){"use strict";i.r(t),i.d(t,"parseDirective",(function(){return h})),i.d(t,"clear",(function(){return u})),i.d(t,"setTitle",(function(){return g})),i.d(t,"getTitle",(function(){return f})),i.d(t,"addSection",(function(){return p})),i.d(t,"getSections",(function(){return m})),i.d(t,"getTasks",(function(){return _})),i.d(t,"addTask",(function(){return b})),i.d(t,"addTaskOrg",(function(){return v}));var n=i("./src/mermaidAPI.js"),r=i("./src/config.js");function s(e){return function(e){if(Array.isArray(e)){for(var t=0,i=new Array(e.length);t<e.length;t++)i[t]=e[t];return i}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var o="",a="",l=[],c=[],d=[],h=function(e,t,i){n.default.parseDirective(this,e,t,i)},u=function(){l.length=0,c.length=0,a="",o="",d.length=0},g=function(e){o=e},f=function(){return o},p=function(e){a=e,l.push(e)},m=function(){return l},_=function(){for(var e=y(),t=0;!e&&t<100;)e=y(),t++;return c.push.apply(c,d),c},b=function(e,t){var i=t.substr(1).split(":"),n=0,r=[];1===i.length?(n=Number(i[0]),r=[]):(n=Number(i[0]),r=i[1].split(","));var s=r.map((function(e){return e.trim()})),o={section:a,type:a,people:s,task:e,score:n};d.push(o)},v=function(e){var t={section:a,type:a,description:e,task:e,classes:[]};c.push(t)},y=function(){for(var e=!0,t=0;t<d.length;t++)d[t].processed,e=e&&d[t].processed;return e};t.default={parseDirective:h,getConfig:function(){return r.getConfig().journey},clear:u,setTitle:g,getTitle:f,addSection:p,getSections:m,getTasks:_,addTask:b,addTaskOrg:v,getActors:function(){return e=[],c.forEach((function(t){t.people&&e.push.apply(e,s(t.people))})),s(new Set(e)).sort();var e}}},"./src/diagrams/user-journey/journeyRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return c})),i.d(t,"draw",(function(){return g})),i.d(t,"bounds",(function(){return f})),i.d(t,"drawTasks",(function(){return _}));var n=i("d3"),r=i("./src/diagrams/user-journey/parser/journey.jison"),s=i("./src/diagrams/user-journey/journeyDb.js"),o=i("./src/diagrams/user-journey/svgDraw.js"),a=i("./src/config.js"),l=i("./src/utils.js");r.parser.yy=s.default;var c=function(e){Object.keys(e).forEach((function(t){h[t]=e[t]}))},d={},h=Object(a.getConfig)().journey,u=Object(a.getConfig)().journey.leftMargin,g=function(e,t){var i=Object(a.getConfig)().journey;r.parser.yy.clear(),r.parser.parse(e+"\n"),f.init();var s=Object(n.select)("#"+t);s.attr("xmlns:xlink","http://www.w3.org/1999/xlink"),o.default.initGraphics(s);var c=r.parser.yy.getTasks(),h=r.parser.yy.getTitle(),g=r.parser.yy.getActors();for(var p in d)delete d[p];var m=0;g.forEach((function(e){d[e]=i.actorColours[m%i.actorColours.length],m++})),function(e){var t=Object(a.getConfig)().journey,i=60;Object.keys(d).forEach((function(n){var r=d[n],s={cx:20,cy:i,r:7,fill:r,stroke:"#000"};o.default.drawCircle(e,s);var a={x:40,y:i+7,fill:"#666",text:n,textMargin:5|t.boxTextMargin};o.default.drawText(e,a),i+=20}))}(s),f.insert(0,0,u,50*Object.keys(d).length),console.log(f),_(s,c,0);var b=f.getBounds();h&&s.append("text").text(h).attr("x",u).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);var v=b.stopy-b.starty+2*i.diagramMarginY,y=u+b.stopx+2*i.diagramMarginX;Object(l.configureSvgSize)(s,v,y,i.useMaxWidth),s.append("line").attr("x1",u).attr("y1",4*i.height).attr("x2",y-u-4).attr("y2",4*i.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");var w=h?70:0;s.attr("viewBox","".concat(b.startx," -25 ").concat(y," ").concat(v+w)),s.attr("preserveAspectRatio","xMinYMin meet"),s.attr("height",v+w+25)},f={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(e,t,i,n){void 0===e[t]?e[t]=i:e[t]=n(i,e[t])},updateBounds:function(e,t,i,n){var r=Object(a.getConfig)().journey,s=this,o=0;this.sequenceItems.forEach((function(a){o++;var l=s.sequenceItems.length-o+1;s.updateVal(a,"starty",t-l*r.boxMargin,Math.min),s.updateVal(a,"stopy",n+l*r.boxMargin,Math.max),s.updateVal(f.data,"startx",e-l*r.boxMargin,Math.min),s.updateVal(f.data,"stopx",i+l*r.boxMargin,Math.max),s.updateVal(a,"startx",e-l*r.boxMargin,Math.min),s.updateVal(a,"stopx",i+l*r.boxMargin,Math.max),s.updateVal(f.data,"starty",t-l*r.boxMargin,Math.min),s.updateVal(f.data,"stopy",n+l*r.boxMargin,Math.max)}))},insert:function(e,t,i,n){var r=Math.min(e,i),s=Math.max(e,i),o=Math.min(t,n),a=Math.max(t,n);this.updateVal(f.data,"startx",r,Math.min),this.updateVal(f.data,"starty",o,Math.min),this.updateVal(f.data,"stopx",s,Math.max),this.updateVal(f.data,"stopy",a,Math.max),this.updateBounds(r,o,s,a)},bumpVerticalPos:function(e){this.verticalPos=this.verticalPos+e,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},p=h.sectionFills,m=h.sectionColours,_=function(e,t,i){for(var n=Object(a.getConfig)().journey,r="",s=i+(2*n.height+n.diagramMarginY),l=0,c="#CCC",h="black",g=0,_=0;_<t.length;_++){var b=t[_];if(r!==b.section){c=p[l%p.length],g=l%p.length,h=m[l%m.length];var v={x:_*n.taskMargin+_*n.width+u,y:50,text:b.section,fill:c,num:g,colour:h};o.default.drawSection(e,v,n),r=b.section,l++}var y=b.people.reduce((function(e,t){return d[t]&&(e[t]=d[t]),e}),{});b.x=_*n.taskMargin+_*n.width+u,b.y=s,b.width=n.diagramMarginX,b.height=n.diagramMarginY,b.colour=h,b.fill=c,b.num=g,b.actors=y,o.default.drawTask(e,b,n),f.insert(b.x,b.y,b.x+b.width+n.taskMargin,450)}};t.default={setConf:c,draw:g}},"./src/diagrams/user-journey/parser/journey.jison":function(e,t,i){(function(e,n){var r=function(){var e=function(e,t,i,n){for(i=i||{},n=e.length;n--;i[e[n]]=t);return i},t=[1,2],i=[1,5],n=[6,9,11,17,18,19,21],r=[1,15],s=[1,16],o=[1,17],a=[1,21],l=[4,6,9,11,17,18,19,21],c={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,directive:7,line:8,SPACE:9,statement:10,NEWLINE:11,openDirective:12,typeDirective:13,closeDirective:14,":":15,argDirective:16,title:17,section:18,taskName:19,taskData:20,open_directive:21,type_directive:22,arg_directive:23,close_directive:24,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",9:"SPACE",11:"NEWLINE",15:":",17:"title",18:"section",19:"taskName",20:"taskData",21:"open_directive",22:"type_directive",23:"arg_directive",24:"close_directive"},productions_:[0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],performAction:function(e,t,i,n,r,s,o){var a=s.length-1;switch(r){case 1:return s[a-1];case 3:this.$=[];break;case 4:s[a-1].push(s[a]),this.$=s[a-1];break;case 5:case 6:this.$=s[a];break;case 7:case 8:this.$=[];break;case 11:n.setTitle(s[a].substr(6)),this.$=s[a].substr(6);break;case 12:n.addSection(s[a].substr(8)),this.$=s[a].substr(8);break;case 13:n.addTask(s[a-1],s[a]),this.$="task";break;case 15:n.parseDirective("%%{","open_directive");break;case 16:n.parseDirective(s[a],"type_directive");break;case 17:s[a]=s[a].trim().replace(/'/g,'"'),n.parseDirective(s[a],"arg_directive");break;case 18:n.parseDirective("}%%","close_directive","journey")}},table:[{3:1,4:t,7:3,12:4,21:i},{1:[3]},e(n,[2,3],{5:6}),{3:7,4:t,7:3,12:4,21:i},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:r,18:s,19:o,21:i},{1:[2,2]},{14:19,15:[1,20],24:a},e([15,24],[2,16]),e(n,[2,8],{1:[2,1]}),e(n,[2,4]),{7:18,10:22,12:4,17:r,18:s,19:o,21:i},e(n,[2,6]),e(n,[2,7]),e(n,[2,11]),e(n,[2,12]),{20:[1,23]},e(n,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},e(n,[2,5]),e(n,[2,13]),e(l,[2,9]),{14:27,24:a},{24:[2,17]},{11:[1,28]},e(l,[2,10])],defaultActions:{5:[2,15],7:[2,2],21:[2,18],26:[2,17]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],n=[],r=[null],s=[],o=this.table,a="",l=0,c=0,d=0,h=2,u=1,g=s.slice.call(arguments,1),f=Object.create(this.lexer),p={yy:{}};for(var m in this.yy)Object.prototype.hasOwnProperty.call(this.yy,m)&&(p.yy[m]=this.yy[m]);f.setInput(e,p.yy),p.yy.lexer=f,p.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var _=f.yylloc;s.push(_);var b=f.options&&f.options.ranges;function v(){var e;return"number"!=typeof(e=n.pop()||f.lex()||u)&&(e instanceof Array&&(e=(n=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,w,C,S,k,x,L,M,D,N={};;){if(C=i[i.length-1],this.defaultActions[C]?S=this.defaultActions[C]:(null==y&&(y=v()),S=o[C]&&o[C][y]),void 0===S||!S.length||!S[0]){var E="";for(x in D=[],o[C])this.terminals_[x]&&x>h&&D.push("'"+this.terminals_[x]+"'");E=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(l+1)+": Unexpected "+(y==u?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(E,{text:f.match,token:this.terminals_[y]||y,line:f.yylineno,loc:_,expected:D})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+y);switch(S[0]){case 1:i.push(y),r.push(f.yytext),s.push(f.yylloc),i.push(S[1]),y=null,w?(y=w,w=null):(c=f.yyleng,a=f.yytext,l=f.yylineno,_=f.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[S[1]][1],N.$=r[r.length-L],N._$={first_line:s[s.length-(L||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(L||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(L||1)].range[0],s[s.length-1].range[1]]),void 0!==(k=this.performAction.apply(N,[a,c,l,p.yy,S[1],r,s].concat(g))))return k;L&&(i=i.slice(0,-1*L*2),r=r.slice(0,-1*L),s=s.slice(0,-1*L)),i.push(this.productions_[S[1]][0]),r.push(N.$),s.push(N._$),M=o[i[i.length-2]][i[i.length-1]],i.push(M);break;case 3:return!0}}return!0}},d={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,n,r;if(this.options.backtrack_lexer&&(r={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(r.yylloc.range=this.yylloc.range.slice(0))),(n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in r)this[s]=r[s];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var r=this._currentRules(),s=0;s<r.length;s++)if((i=this._input.match(this.rules[r[s]]))&&(!t||i[0].length>t[0].length)){if(t=i,n=s,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,r[s])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,r[n]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){return this.next()||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,i,n){switch(i){case 0:return this.begin("open_directive"),21;case 1:return this.begin("type_directive"),22;case 2:return this.popState(),this.begin("arg_directive"),15;case 3:return this.popState(),this.popState(),24;case 4:return 23;case 5:case 6:break;case 7:return 11;case 8:case 9:break;case 10:return 4;case 11:return 17;case 12:return 18;case 13:return 19;case 14:return 20;case 15:return 15;case 16:return 6;case 17:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:((?:(?!\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\}%%)/i,/^(?:((?:(?!\}%%).|\n)*))/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{open_directive:{rules:[1],inclusive:!1},type_directive:{rules:[2,3],inclusive:!1},arg_directive:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};function h(){this.yy={}}return c.lexer=d,h.prototype=c,c.Parser=h,new h}();t.parser=r,t.Parser=r.Parser,t.parse=function(){return r.parse.apply(r,arguments)},t.main=function(n){n[1]||(console.log("Usage: "+n[0]+" FILE"),e.exit(1));var r=i("./node_modules/node-libs-browser/mock/empty.js").readFileSync(i("./node_modules/path-browserify/index.js").normalize(n[1]),"utf8");return t.parser.parse(r)},i.c[i.s]===n&&t.main(e.argv.slice(1))}).call(this,i("./node_modules/process/browser.js"),i("./node_modules/webpack/buildin/module.js")(e))},"./src/diagrams/user-journey/styles.js":function(e,t,i){"use strict";i.r(t),t.default=function(e){return".label {\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n color: ".concat(e.textColor,";\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ").concat(e.textColor,"\n }\n\n .legend {\n fill: ").concat(e.textColor,";\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ").concat(e.textColor,"\n }\n\n .face {\n fill: #FFF8DC;\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ").concat(e.mainBkg,";\n stroke: ").concat(e.nodeBorder,";\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ").concat(e.arrowheadColor,";\n }\n\n .edgePath .path {\n stroke: ").concat(e.lineColor,";\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ").concat(e.lineColor,";\n fill: none;\n }\n\n .edgeLabel {\n background-color: ").concat(e.edgeLabelBackground,";\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ").concat(e.titleColor,";\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n font-size: 12px;\n background: ").concat(e.tertiaryColor,";\n border: 1px solid ").concat(e.border2,";\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType0):"",";\n }\n .task-type-1, .section-type-1 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType1):"",";\n }\n .task-type-2, .section-type-2 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType2):"",";\n }\n .task-type-3, .section-type-3 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType3):"",";\n }\n .task-type-4, .section-type-4 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType4):"",";\n }\n .task-type-5, .section-type-5 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType5):"",";\n }\n .task-type-6, .section-type-6 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType6):"",";\n }\n .task-type-7, .section-type-7 {\n ").concat(e.fillType0?"fill: ".concat(e.fillType7):"",";\n }\n")}},"./src/diagrams/user-journey/svgDraw.js":function(e,t,i){"use strict";i.r(t),i.d(t,"drawRect",(function(){return r})),i.d(t,"drawFace",(function(){return s})),i.d(t,"drawCircle",(function(){return o})),i.d(t,"drawText",(function(){return a})),i.d(t,"drawLabel",(function(){return l})),i.d(t,"drawSection",(function(){return c})),i.d(t,"drawTask",(function(){return h})),i.d(t,"drawBackgroundRect",(function(){return u})),i.d(t,"getTextObj",(function(){return g})),i.d(t,"getNoteRect",(function(){return f}));var n=i("d3"),r=function(e,t){var i=e.append("rect");return i.attr("x",t.x),i.attr("y",t.y),i.attr("fill",t.fill),i.attr("stroke",t.stroke),i.attr("width",t.width),i.attr("height",t.height),i.attr("rx",t.rx),i.attr("ry",t.ry),void 0!==t.class&&i.attr("class",t.class),i},s=function(e,t){var i=e.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),r=e.append("g");return r.append("circle").attr("cx",t.cx-5).attr("cy",t.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),r.append("circle").attr("cx",t.cx+5).attr("cy",t.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),t.score>3?function(e){var i=Object(n.arc)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(15/2.2);e.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}(r):t.score<3?function(e){var i=Object(n.arc)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(15/2.2);e.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}(r):function(e){e.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}(r),i},o=function(e,t){var i=e.append("circle");return i.attr("cx",t.cx),i.attr("cy",t.cy),i.attr("fill",t.fill),i.attr("stroke",t.stroke),i.attr("r",t.r),void 0!==i.class&&i.attr("class",i.class),void 0!==t.title&&i.append("title").text(t.title),i},a=function(e,t){var i=t.text.replace(/<br\s*\/?>/gi," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.attr("class","legend"),n.style("text-anchor",t.anchor),void 0!==t.class&&n.attr("class",t.class);var r=n.append("tspan");return r.attr("x",t.x+2*t.textMargin),r.text(i),n},l=function(e,t){var i,n,r=e.append("polygon");r.attr("points",(i=t.x)+","+(n=t.y)+" "+(i+50)+","+n+" "+(i+50)+","+(n+20-7)+" "+(i+50-8.4)+","+(n+20)+" "+i+","+(n+20)),r.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,a(e,t)},c=function(e,t,i){var n=e.append("g"),s=f();s.x=t.x,s.y=t.y,s.fill=t.fill,s.width=i.width,s.height=i.height,s.class="journey-section section-type-"+t.num,s.rx=3,s.ry=3,r(n,s),p(i)(t.text,n,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+t.num},i,t.colour)},d=-1,h=function(e,t,i){var n=t.x+i.width/2,a=e.append("g");d++,a.append("line").attr("id","task"+d).attr("x1",n).attr("y1",t.y).attr("x2",n).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),s(a,{cx:n,cy:300+30*(5-t.score),score:t.score});var l=f();l.x=t.x,l.y=t.y,l.fill=t.fill,l.width=i.width,l.height=i.height,l.class="task task-type-"+t.num,l.rx=3,l.ry=3,r(a,l);var c=t.x+14;t.people.forEach((function(e){var i=t.actors[e],n={cx:c,cy:t.y,r:7,fill:i,stroke:"#000",title:e};o(a,n),c+=10})),p(i)(t.task,a,l.x,l.y,l.width,l.height,{class:"task"},i,t.colour)},u=function(e,t){r(e,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},g=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},f=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},p=function(){function e(e,t,i,r,s,o,a,l){n(t.append("text").attr("x",i+s/2).attr("y",r+o/2+5).style("font-color",l).style("text-anchor","middle").text(e),a)}function t(e,t,i,r,s,o,a,l,c){for(var d=l.taskFontSize,h=l.taskFontFamily,u=e.split(/<br\s*\/?>/gi),g=0;g<u.length;g++){var f=g*d-d*(u.length-1)/2,p=t.append("text").attr("x",i+s/2).attr("y",r).attr("fill",c).style("text-anchor","middle").style("font-size",d).style("font-family",h);p.append("tspan").attr("x",i+s/2).attr("dy",f).text(u[g]),p.attr("y",r+o/2).attr("dominant-baseline","central").attr("alignment-baseline","central"),n(p,a)}}function i(e,i,r,s,o,a,l,c){var d=i.append("switch"),h=d.append("foreignObject").attr("x",r).attr("y",s).attr("width",o).attr("height",a).attr("position","fixed").append("div").style("display","table").style("height","100%").style("width","100%");h.append("div").attr("class","label").style("display","table-cell").style("text-align","center").style("vertical-align","middle").text(e),t(e,d,r,s,o,a,l,c),n(h,l)}function n(e,t){for(var i in t)i in t&&e.attr(i,t[i])}return function(n){return"fo"===n.textPlacement?i:"old"===n.textPlacement?e:t}}();t.default={drawRect:r,drawCircle:o,drawSection:c,drawText:a,drawLabel:l,drawTask:h,drawBackgroundRect:u,getTextObj:g,getNoteRect:f,initGraphics:function(e){e.append("defs").append("marker").attr("id","arrowhead").attr("refX",5).attr("refY",2).attr("markerWidth",6).attr("markerHeight",4).attr("orient","auto").append("path").attr("d","M 0,0 V 4 L6,2 Z")}}},"./src/errorRenderer.js":function(e,t,i){"use strict";i.r(t),i.d(t,"setConf",(function(){return o})),i.d(t,"draw",(function(){return a}));var n=i("d3"),r=i("./src/logger.js"),s={},o=function(e){Object.keys(e).forEach((function(t){s[t]=e[t]}))},a=function(e,t){try{r.log.debug("Renering svg for syntax error\n");var i=Object(n.select)("#"+e),s=i.append("g");s.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),s.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),s.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),s.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),s.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),s.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),s.append("text").attr("class","error-text").attr("x",1240).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in graph"),s.append("text").attr("class","error-text").attr("x",1050).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text("mermaid version "+t),i.attr("height",100),i.attr("width",400),i.attr("viewBox","768 0 512 512")}catch(e){r.log.error("Error while rendering info diagram"),r.log.error(e.message)}};t.default={setConf:o,draw:a}},"./src/logger.js":function(e,t,i){"use strict";i.r(t),i.d(t,"LEVELS",(function(){return s})),i.d(t,"log",(function(){return o})),i.d(t,"setLogLevel",(function(){return a}));var n=i("moment-mini"),r=i.n(n),s={debug:1,info:2,warn:3,error:4,fatal:5},o={debug:function(){},info:function(){},warn:function(){},error:function(){},fatal:function(){}},a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"fatal";isNaN(e)&&(e=e.toLowerCase(),void 0!==s[e]&&(e=s[e])),o.trace=function(){},o.debug=function(){},o.info=function(){},o.warn=function(){},o.error=function(){},o.fatal=function(){},e<=s.fatal&&(o.fatal=console.error?console.error.bind(console,l("FATAL"),"color: orange"):console.log.bind(console,"",l("FATAL"))),e<=s.error&&(o.error=console.error?console.error.bind(console,l("ERROR"),"color: orange"):console.log.bind(console,"",l("ERROR"))),e<=s.warn&&(o.warn=console.warn?console.warn.bind(console,l("WARN"),"color: orange"):console.log.bind(console,"",l("WARN"))),e<=s.info&&(o.info=console.info?console.info.bind(console,l("INFO"),"color: lightblue"):console.log.bind(console,"",l("INFO"))),e<=s.debug&&(o.debug=console.debug?console.debug.bind(console,l("DEBUG"),"color: lightgreen"):console.log.bind(console,"",l("DEBUG")))},l=function(e){var t=r()().format("ss.SSS");return"%c".concat(t," : ").concat(e," : ")}},"./src/mermaid.js":function(e,t,i){"use strict";i.r(t);var n=i("entity-decode/browser"),r=i.n(n),s=i("./src/logger.js"),o=i("./src/mermaidAPI.js"),a=i("./src/utils.js"),l=function(){c.startOnLoad?o.default.getConfig().startOnLoad&&c.init():void 0===c.startOnLoad&&(s.log.debug("In start, no config"),o.default.getConfig().startOnLoad&&c.init())};"undefined"!=typeof document&&window.addEventListener("load",(function(){l()}),!1);var c={startOnLoad:!0,htmlLabels:!0,mermaidAPI:o.default,parse:o.default.parse,render:o.default.render,init:function(){var e,t,i=this,n=o.default.getConfig();arguments.length>=2?(void 0!==arguments[0]&&(c.sequenceConfig=arguments[0]),e=arguments[1]):e=arguments[0],"function"==typeof arguments[arguments.length-1]?(t=arguments[arguments.length-1],s.log.debug("Callback function found")):void 0!==n.mermaid&&("function"==typeof n.mermaid.callback?(t=n.mermaid.callback,s.log.debug("Callback function found")):s.log.debug("No Callback function found")),e=void 0===e?document.querySelectorAll(".mermaid"):"string"==typeof e?document.querySelectorAll(e):e instanceof window.Node?[e]:e,s.log.debug("Start On Load before: "+c.startOnLoad),void 0!==c.startOnLoad&&(s.log.debug("Start On Load inner: "+c.startOnLoad),o.default.updateSiteConfig({startOnLoad:c.startOnLoad})),void 0!==c.ganttConfig&&o.default.updateSiteConfig({gantt:c.ganttConfig});for(var l,d=new a.default.initIdGeneratior(n.deterministicIds,n.deterministicIDSeed),h=function(n){var c=e[n];if(c.getAttribute("data-processed"))return"continue";c.setAttribute("data-processed",!0);var h="mermaid-".concat(d.next());l=c.innerHTML,l=r()(l).trim().replace(/<br\s*\/?>/gi,"<br/>");var u=a.default.detectInit(l);u&&s.log.debug("Detected early reinit: ",u);try{o.default.render(h,l,(function(e,i){c.innerHTML=e,void 0!==t&&t(h),i&&i(c)}),c)}catch(e){s.log.warn("Syntax Error rendering"),s.log.warn(e),i.parseError&&i.parseError(e)}},u=0;u<e.length;u++)h(u)},initialize:function(e){void 0!==e.mermaid&&(void 0!==e.mermaid.startOnLoad&&(c.startOnLoad=e.mermaid.startOnLoad),void 0!==e.mermaid.htmlLabels&&(c.htmlLabels=e.mermaid.htmlLabels)),o.default.initialize(e)},contentLoaded:l};t.default=c},"./src/mermaidAPI.js":function(e,t,i){"use strict";i.r(t),i.d(t,"encodeEntities",(function(){return ae})),i.d(t,"decodeEntities",(function(){return le}));var n=i("d3"),r=i("stylis"),s=i.n(r),o=i("./package.json"),a=i("./src/config.js"),l=i("./src/diagrams/class/classDb.js"),c=i("./src/diagrams/class/classRenderer.js"),d=i("./src/diagrams/class/classRenderer-v2.js"),h=i("./src/diagrams/class/parser/classDiagram.jison"),u=i.n(h),g=i("./src/diagrams/er/erDb.js"),f=i("./src/diagrams/er/erRenderer.js"),p=i("./src/diagrams/er/parser/erDiagram.jison"),m=i.n(p),_=i("./src/diagrams/flowchart/flowDb.js"),b=i("./src/diagrams/flowchart/flowRenderer.js"),v=i("./src/diagrams/flowchart/flowRenderer-v2.js"),y=i("./src/diagrams/flowchart/parser/flow.jison"),w=i.n(y),C=i("./src/diagrams/gantt/ganttDb.js"),S=i("./src/diagrams/gantt/ganttRenderer.js"),k=i("./src/diagrams/gantt/parser/gantt.jison"),x=i.n(k),L=i("./src/diagrams/git/gitGraphAst.js"),M=i("./src/diagrams/git/gitGraphRenderer.js"),D=i("./src/diagrams/git/parser/gitGraph.jison"),N=i.n(D),E=i("./src/diagrams/info/infoDb.js"),T=i("./src/diagrams/info/infoRenderer.js"),I=i("./src/diagrams/info/parser/info.jison"),O=i.n(I),A=i("./src/diagrams/pie/parser/pie.jison"),R=i.n(A),P=i("./src/diagrams/pie/pieDb.js"),F=i("./src/diagrams/pie/pieRenderer.js"),B=i("./src/diagrams/requirement/parser/requirementDiagram.jison"),W=i.n(B),Y=i("./src/diagrams/requirement/requirementDb.js"),H=i("./src/diagrams/requirement/requirementRenderer.js"),j=i("./src/diagrams/sequence/parser/sequenceDiagram.jison"),V=i.n(j),z=i("./src/diagrams/sequence/sequenceDb.js"),U=i("./src/diagrams/sequence/sequenceRenderer.js"),$=i("./src/diagrams/state/parser/stateDiagram.jison"),K=i.n($),q=i("./src/diagrams/state/stateDb.js"),G=i("./src/diagrams/state/stateRenderer.js"),Z=i("./src/diagrams/state/stateRenderer-v2.js"),J=i("./src/diagrams/user-journey/journeyDb.js"),Q=i("./src/diagrams/user-journey/journeyRenderer.js"),X=i("./src/diagrams/user-journey/parser/journey.jison"),ee=i.n(X),te=i("./src/errorRenderer.js"),ie=i("./src/logger.js"),ne=i("./src/styles.js"),re=i("./src/themes/index.js"),se=i("./src/utils.js");function oe(e){return(oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ae=function(e){var t=e;return(t=(t=t.replace(/style.*:\S*#.*;/g,(function(e){return e.substring(0,e.length-1)}))).replace(/classDef.*:\S*#.*;/g,(function(e){return e.substring(0,e.length-1)}))).replace(/#\w+;/g,(function(e){var t=e.substring(1,e.length-1);return/^\+?\d+$/.test(t)?"fl°°"+t+"¶ß":"fl°"+t+"¶ß"}))},le=function(e){var t=e;return(t=(t=t.replace(/fl°°/g,(function(){return"&#"}))).replace(/fl°/g,(function(){return"&"}))).replace(/¶ß/g,(function(){return";"}))},ce={};function de(e){M.default.setConf(e.git),b.default.setConf(e.flowchart),v.default.setConf(e.flowchart),void 0!==e.sequenceDiagram&&U.default.setConf(Object(se.assignWithDepth)(e.sequence,e.sequenceDiagram)),U.default.setConf(e.sequence),S.default.setConf(e.gantt),c.default.setConf(e.class),G.default.setConf(e.state),Z.default.setConf(e.state),T.default.setConf(e.class),F.default.setConf(e.class),f.default.setConf(e.er),Q.default.setConf(e.journey),H.default.setConf(e.requirement),te.default.setConf(e.class)}var he=Object.freeze({render:function(e,t,i,r){a.reset();var h=t,u=se.default.detectInit(h);u&&a.addDirective(u);var g=a.getConfig();if(t.length>g.maxTextSize&&(h="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa"),void 0!==r)r.innerHTML="",Object(n.select)(r).append("div").attr("id","d"+e).attr("style","font-family: "+g.fontFamily).append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g");else{var p=document.getElementById(e);p&&p.remove();var m=document.querySelector("#d"+e);m&&m.remove(),Object(n.select)("body").append("div").attr("id","d"+e).append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg").append("g")}window.txt=h,h=ae(h);var y=Object(n.select)("#d"+e).node(),w=se.default.detectType(h),k=y.firstChild,x=k.firstChild,L="";if(void 0!==g.themeCSS&&(L+="\n".concat(g.themeCSS)),void 0!==g.fontFamily&&(L+="\n:root { --mermaid-font-family: ".concat(g.fontFamily,"}")),void 0!==g.altFontFamily&&(L+="\n:root { --mermaid-alt-font-family: ".concat(g.altFontFamily,"}")),"flowchart"===w||"flowchart-v2"===w||"graph"===w){var D=b.default.getClasses(h);for(var N in D)g.htmlLabels||g.flowchart.htmlLabels?(L+="\n.".concat(N," > * { ").concat(D[N].styles.join(" !important; ")," !important; }"),L+="\n.".concat(N," span { ").concat(D[N].styles.join(" !important; ")," !important; }")):(L+="\n.".concat(N," path { ").concat(D[N].styles.join(" !important; ")," !important; }"),L+="\n.".concat(N," rect { ").concat(D[N].styles.join(" !important; ")," !important; }"),L+="\n.".concat(N," polygon { ").concat(D[N].styles.join(" !important; ")," !important; }"),L+="\n.".concat(N," ellipse { ").concat(D[N].styles.join(" !important; ")," !important; }"),L+="\n.".concat(N," circle { ").concat(D[N].styles.join(" !important; ")," !important; }"),D[N].textStyles&&(L+="\n.".concat(N," tspan { ").concat(D[N].textStyles.join(" !important; ")," !important; }")))}var E=(new s.a)("#".concat(e),Object(ne.default)(w,L,g.themeVariables)),I=document.createElement("style");I.innerHTML=E,k.insertBefore(I,x);try{switch(w){case"git":g.flowchart.arrowMarkerAbsolute=g.arrowMarkerAbsolute,M.default.setConf(g.git),M.default.draw(h,e,!1);break;case"flowchart":g.flowchart.arrowMarkerAbsolute=g.arrowMarkerAbsolute,b.default.setConf(g.flowchart),b.default.draw(h,e,!1);break;case"flowchart-v2":g.flowchart.arrowMarkerAbsolute=g.arrowMarkerAbsolute,v.default.setConf(g.flowchart),v.default.draw(h,e,!1);break;case"sequence":g.sequence.arrowMarkerAbsolute=g.arrowMarkerAbsolute,g.sequenceDiagram?(U.default.setConf(Object.assign(g.sequence,g.sequenceDiagram)),console.error("`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.")):U.default.setConf(g.sequence),U.default.draw(h,e);break;case"gantt":g.gantt.arrowMarkerAbsolute=g.arrowMarkerAbsolute,S.default.setConf(g.gantt),S.default.draw(h,e);break;case"class":g.class.arrowMarkerAbsolute=g.arrowMarkerAbsolute,c.default.setConf(g.class),c.default.draw(h,e);break;case"classDiagram":g.class.arrowMarkerAbsolute=g.arrowMarkerAbsolute,d.default.setConf(g.class),d.default.draw(h,e);break;case"state":g.class.arrowMarkerAbsolute=g.arrowMarkerAbsolute,G.default.setConf(g.state),G.default.draw(h,e);break;case"stateDiagram":g.class.arrowMarkerAbsolute=g.arrowMarkerAbsolute,Z.default.setConf(g.state),Z.default.draw(h,e);break;case"info":g.class.arrowMarkerAbsolute=g.arrowMarkerAbsolute,T.default.setConf(g.class),T.default.draw(h,e,o.version);break;case"pie":g.class.arrowMarkerAbsolute=g.arrowMarkerAbsolute,F.default.setConf(g.pie),F.default.draw(h,e,o.version);break;case"er":f.default.setConf(g.er),f.default.draw(h,e,o.version);break;case"journey":Q.default.setConf(g.journey),Q.default.draw(h,e,o.version);break;case"requirement":H.default.setConf(g.requirement),H.default.draw(h,e,o.version)}}catch(t){throw te.default.draw(e,o.version),t}Object(n.select)('[id="'.concat(e,'"]')).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");var O=Object(n.select)("#d"+e).node().innerHTML;if(ie.log.debug("cnf.arrowMarkerAbsolute",g.arrowMarkerAbsolute),g.arrowMarkerAbsolute&&"false"!==g.arrowMarkerAbsolute||(O=O.replace(/marker-end="url\(.*?#/g,'marker-end="url(#',"g")),O=(O=le(O)).replace(/<br>/g,"<br/>"),void 0!==i)switch(w){case"flowchart":case"flowchart-v2":i(O,_.default.bindFunctions);break;case"gantt":i(O,C.default.bindFunctions);break;case"class":case"classDiagram":i(O,l.default.bindFunctions);break;default:i(O)}else ie.log.debug("CB = undefined!");var A=Object(n.select)("#d"+e).node();return null!==A&&"function"==typeof A.remove&&Object(n.select)("#d"+e).node().remove(),O},parse:function(e){var t=se.default.detectInit(e);t&&ie.log.debug("reinit ",t);var i,n=se.default.detectType(e);switch(ie.log.debug("Type "+n),n){case"git":(i=N.a).parser.yy=L.default;break;case"flowchart":case"flowchart-v2":_.default.clear(),(i=w.a).parser.yy=_.default;break;case"sequence":(i=V.a).parser.yy=z.default;break;case"gantt":(i=x.a).parser.yy=C.default;break;case"class":case"classDiagram":(i=u.a).parser.yy=l.default;break;case"state":case"stateDiagram":(i=K.a).parser.yy=q.default;break;case"info":ie.log.debug("info info info"),(i=O.a).parser.yy=E.default;break;case"pie":ie.log.debug("pie"),(i=R.a).parser.yy=P.default;break;case"er":ie.log.debug("er"),(i=m.a).parser.yy=g.default;break;case"journey":ie.log.debug("Journey"),(i=ee.a).parser.yy=J.default;break;case"requirement":case"requirementDiagram":console.log("RequirementDiagram"),ie.log.debug("RequirementDiagram"),(i=W.a).parser.yy=Y.default}return i.parser.yy.graphType=n,i.parser.yy.parseError=function(e,t){throw{str:e,hash:t}},i.parse(e),i},parseDirective:function(e,t,i,n){try{if(void 0!==t)switch(t=t.trim(),i){case"open_directive":ce={};break;case"type_directive":ce.type=t.toLowerCase();break;case"arg_directive":ce.args=JSON.parse(t);break;case"close_directive":(function(e,t,i){switch(ie.log.debug("Directive type=".concat(t.type," with args:"),t.args),t.type){case"init":case"initialize":["config"].forEach((function(e){void 0!==t.args[e]&&("flowchart-v2"===i&&(i="flowchart"),t.args[i]=t.args[e],delete t.args[e])})),t.args,a.addDirective(t.args);break;case"wrap":case"nowrap":e&&e.setWrap&&e.setWrap("wrap"===t.type);break;default:ie.log.warn("Unhandled directive: source: '%%{".concat(t.type,": ").concat(JSON.stringify(t.args?t.args:{}),"}%%"),t)}})(e,ce,n),ce=null}}catch(e){ie.log.error("Error while rendering sequenceDiagram directive: ".concat(t," jison context: ").concat(i)),ie.log.error(e.message)}},initialize:function(e){e&&e.fontFamily&&(e.themeVariables&&e.themeVariables.fontFamily||(e.themeVariables={fontFamily:e.fontFamily})),a.saveConfigFromInitilize(e),e&&e.theme&&re.default[e.theme]?e.themeVariables=re.default[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=re.default.default.getThemeVariables(e.themeVariables));var t="object"===oe(e)?a.setSiteConfig(e):a.getSiteConfig();de(t),Object(ie.setLogLevel)(t.logLevel)},reinitialize:function(){},getConfig:a.getConfig,setConfig:a.setConfig,getSiteConfig:a.getSiteConfig,updateSiteConfig:a.updateSiteConfig,reset:function(){a.reset()},globalReset:function(){a.reset(a.defaultConfig),de(a.getConfig())},defaultConfig:a.defaultConfig});Object(ie.setLogLevel)(a.getConfig().logLevel),a.reset(a.getConfig()),t.default=he},"./src/styles.js":function(e,t,i){"use strict";i.r(t),i.d(t,"calcThemeVariables",(function(){return p}));var n=i("./src/diagrams/class/styles.js"),r=i("./src/diagrams/er/styles.js"),s=i("./src/diagrams/flowchart/styles.js"),o=i("./src/diagrams/gantt/styles.js"),a=i("./src/diagrams/git/styles.js"),l=i("./src/diagrams/info/styles.js"),c=i("./src/diagrams/pie/styles.js"),d=i("./src/diagrams/requirement/styles.js"),h=i("./src/diagrams/sequence/styles.js"),u=i("./src/diagrams/state/styles.js"),g=i("./src/diagrams/user-journey/styles.js"),f={flowchart:s.default,"flowchart-v2":s.default,sequence:h.default,gantt:o.default,classDiagram:n.default,"classDiagram-v2":n.default,class:n.default,stateDiagram:u.default,state:u.default,git:a.default,info:l.default,pie:c.default,er:r.default,journey:g.default,requirement:d.default},p=function(e,t){return e.calcColors(t)};t.default=function(e,t,i){return" {\n font-family: ".concat(i.fontFamily,";\n font-size: ").concat(i.fontSize,";\n fill: ").concat(i.textColor,"\n }\n\n /* Classes common for multiple diagrams */\n\n .error-icon {\n fill: ").concat(i.errorBkgColor,";\n }\n .error-text {\n fill: ").concat(i.errorTextColor,";\n stroke: ").concat(i.errorTextColor,";\n }\n\n .edge-thickness-normal {\n stroke-width: 2px;\n }\n .edge-thickness-thick {\n stroke-width: 3.5px\n }\n .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n\n .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n .marker {\n fill: ").concat(i.lineColor,";\n stroke: ").concat(i.lineColor,";\n }\n .marker.cross {\n stroke: ").concat(i.lineColor,";\n }\n\n svg {\n font-family: ").concat(i.fontFamily,";\n font-size: ").concat(i.fontSize,";\n }\n\n ").concat(f[e](i),"\n\n ").concat(t,"\n\n ").concat(e," { fill: apa;}\n")}},"./src/themes/index.js":function(e,t,i){"use strict";i.r(t);var n=i("./src/themes/theme-base.js"),r=i("./src/themes/theme-dark.js"),s=i("./src/themes/theme-default.js"),o=i("./src/themes/theme-forest.js"),a=i("./src/themes/theme-neutral.js");t.default={base:{getThemeVariables:n.getThemeVariables},dark:{getThemeVariables:r.getThemeVariables},default:{getThemeVariables:s.getThemeVariables},forest:{getThemeVariables:o.getThemeVariables},neutral:{getThemeVariables:a.getThemeVariables}}},"./src/themes/theme-base.js":function(e,t,i){"use strict";i.r(t),i.d(t,"getThemeVariables",(function(){return l}));var n=i("khroma"),r=i("./src/themes/theme-helpers.js");function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.background="#f4f4f4",this.darkMode=!1,this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}var t,i;return t=e,(i=[{key:"updateColors",value:function(){this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#ddd":"#333"),this.secondaryColor=this.secondaryColor||Object(n.adjust)(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Object(n.adjust)(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Object(r.mkBorder)(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Object(r.mkBorder)(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Object(r.mkBorder)(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Object(r.mkBorder)(this.noteBkgColor,this.darkMode),this.secondaryTextColor=this.secondaryTextColor||Object(n.invert)(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Object(n.invert)(this.tertiaryColor),this.lineColor=this.lineColor||Object(n.invert)(this.background),this.textColor=this.textColor||this.primaryTextColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Object(n.darken)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Object(n.darken)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Object(n.invert)(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Object(n.lighten)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.labelColor=this.labelColor||this.primaryTextColor,this.altBackground=this.altBackground||this.tertiaryColor,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.classText=this.classText||this.textColor,this.fillType0=this.fillType0||this.primaryColor,this.fillType1=this.fillType1||this.secondaryColor,this.fillType2=this.fillType2||Object(n.adjust)(this.primaryColor,{h:64}),this.fillType3=this.fillType3||Object(n.adjust)(this.secondaryColor,{h:64}),this.fillType4=this.fillType4||Object(n.adjust)(this.primaryColor,{h:-64}),this.fillType5=this.fillType5||Object(n.adjust)(this.secondaryColor,{h:-64}),this.fillType6=this.fillType6||Object(n.adjust)(this.primaryColor,{h:128}),this.fillType7=this.fillType7||Object(n.adjust)(this.secondaryColor,{h:128})}},{key:"calculate",value:function(e){var t=this;if("object"===s(e)){var i=Object.keys(e);i.forEach((function(i){t[i]=e[i]})),this.updateColors(),i.forEach((function(i){t[i]=e[i]}))}else this.updateColors()}}])&&o(t.prototype,i),e}(),l=function(e){var t=new a;return t.calculate(e),t}},"./src/themes/theme-dark.js":function(e,t,i){"use strict";i.r(t),i.d(t,"getThemeVariables",(function(){return l}));var n=i("khroma"),r=i("./src/themes/theme-helpers.js");function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Object(n.lighten)(this.primaryColor,16),this.tertiaryColor=Object(n.adjust)(this.primaryColor,{h:-160}),this.primaryBorderColor=Object(r.mkBorder)(this.primaryColor,this.darkMode),this.secondaryBorderColor=Object(r.mkBorder)(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Object(r.mkBorder)(this.tertiaryColor,this.darkMode),this.primaryTextColor=Object(n.invert)(this.primaryColor),this.secondaryTextColor=Object(n.invert)(this.secondaryColor),this.tertiaryTextColor=Object(n.invert)(this.tertiaryColor),this.lineColor=Object(n.invert)(this.background),this.textColor=Object(n.invert)(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Object(n.lighten)(Object(n.invert)("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=Object(n.rgba)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Object(n.darken)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.taskBorderColor=Object(n.rgba)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Object(n.rgba)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}var t,i;return t=e,(i=[{key:"updateColors",value:function(){this.secondBkg=Object(n.lighten)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Object(n.lighten)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Object(n.lighten)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.labelColor=this.textColor,this.altBackground=Object(n.lighten)(this.background,20),this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Object(n.adjust)(this.primaryColor,{h:64}),this.fillType3=Object(n.adjust)(this.secondaryColor,{h:64}),this.fillType4=Object(n.adjust)(this.primaryColor,{h:-64}),this.fillType5=Object(n.adjust)(this.secondaryColor,{h:-64}),this.fillType6=Object(n.adjust)(this.primaryColor,{h:128}),this.fillType7=Object(n.adjust)(this.secondaryColor,{h:128}),this.classText=this.primaryTextColor}},{key:"calculate",value:function(e){var t=this;if("object"===s(e)){var i=Object.keys(e);i.forEach((function(i){t[i]=e[i]})),this.updateColors(),i.forEach((function(i){t[i]=e[i]}))}else this.updateColors()}}])&&o(t.prototype,i),e}(),l=function(e){var t=new a;return t.calculate(e),t}},"./src/themes/theme-default.js":function(e,t,i){"use strict";i.r(t),i.d(t,"getThemeVariables",(function(){return l}));var n=i("khroma"),r=i("./src/themes/theme-helpers.js");function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Object(n.adjust)(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Object(n.adjust)(this.primaryColor,{h:-160}),this.primaryBorderColor=Object(r.mkBorder)(this.primaryColor,this.darkMode),this.secondaryBorderColor=Object(r.mkBorder)(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Object(r.mkBorder)(this.tertiaryColor,this.darkMode),this.primaryTextColor=Object(n.invert)(this.primaryColor),this.secondaryTextColor=Object(n.invert)(this.secondaryColor),this.tertiaryTextColor=Object(n.invert)(this.tertiaryColor),this.lineColor=Object(n.invert)(this.background),this.textColor=Object(n.invert)(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=Object(n.rgba)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}var t,i;return t=e,(i=[{key:"updateColors",value:function(){this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.textColor,this.edgeLabelBackground=this.labelBackground,this.actorBorder=Object(n.lighten)(this.border1,23),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.signalColor=this.textColor,this.signalTextColor=this.textColor,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Object(n.adjust)(this.primaryColor,{h:64}),this.fillType3=Object(n.adjust)(this.secondaryColor,{h:64}),this.fillType4=Object(n.adjust)(this.primaryColor,{h:-64}),this.fillType5=Object(n.adjust)(this.secondaryColor,{h:-64}),this.fillType6=Object(n.adjust)(this.primaryColor,{h:128}),this.fillType7=Object(n.adjust)(this.secondaryColor,{h:128})}},{key:"calculate",value:function(e){var t=this;if("object"===s(e)){var i=Object.keys(e);i.forEach((function(i){t[i]=e[i]})),this.updateColors(),i.forEach((function(i){t[i]=e[i]}))}else this.updateColors()}}])&&o(t.prototype,i),e}(),l=function(e){var t=new a;return t.calculate(e),t}},"./src/themes/theme-forest.js":function(e,t,i){"use strict";i.r(t),i.d(t,"getThemeVariables",(function(){return l}));var n=i("khroma"),r=i("./src/themes/theme-helpers.js");function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Object(n.lighten)("#cde498",10),this.primaryBorderColor=Object(r.mkBorder)(this.primaryColor,this.darkMode),this.secondaryBorderColor=Object(r.mkBorder)(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Object(r.mkBorder)(this.tertiaryColor,this.darkMode),this.primaryTextColor=Object(n.invert)(this.primaryColor),this.secondaryTextColor=Object(n.invert)(this.secondaryColor),this.tertiaryTextColor=Object(n.invert)(this.primaryColor),this.lineColor=Object(n.invert)(this.background),this.textColor=Object(n.invert)(this.background),this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}var t,i;return t=e,(i=[{key:"updateColors",value:function(){this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.actorBorder=Object(n.darken)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.taskBorderColor=this.border1,this.taskTextColor=this.taskTextLightColor,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Object(n.adjust)(this.primaryColor,{h:64}),this.fillType3=Object(n.adjust)(this.secondaryColor,{h:64}),this.fillType4=Object(n.adjust)(this.primaryColor,{h:-64}),this.fillType5=Object(n.adjust)(this.secondaryColor,{h:-64}),this.fillType6=Object(n.adjust)(this.primaryColor,{h:128}),this.fillType7=Object(n.adjust)(this.secondaryColor,{h:128})}},{key:"calculate",value:function(e){var t=this;if("object"===s(e)){var i=Object.keys(e);i.forEach((function(i){t[i]=e[i]})),this.updateColors(),i.forEach((function(i){t[i]=e[i]}))}else this.updateColors()}}])&&o(t.prototype,i),e}(),l=function(e){var t=new a;return t.calculate(e),t}},"./src/themes/theme-helpers.js":function(e,t,i){"use strict";i.r(t),i.d(t,"mkBorder",(function(){return r}));var n=i("khroma"),r=function(e,t){return t?Object(n.adjust)(e,{s:-40,l:10}):Object(n.adjust)(e,{s:-40,l:-10})}},"./src/themes/theme-neutral.js":function(e,t,i){"use strict";i.r(t),i.d(t,"getThemeVariables",(function(){return l}));var n=i("khroma"),r=i("./src/themes/theme-helpers.js");function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Object(n.lighten)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Object(n.adjust)(this.primaryColor,{h:-160}),this.primaryBorderColor=Object(r.mkBorder)(this.primaryColor,this.darkMode),this.secondaryBorderColor=Object(r.mkBorder)(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Object(r.mkBorder)(this.tertiaryColor,this.darkMode),this.primaryTextColor=Object(n.invert)(this.primaryColor),this.secondaryTextColor=Object(n.invert)(this.secondaryColor),this.tertiaryTextColor=Object(n.invert)(this.tertiaryColor),this.lineColor=Object(n.invert)(this.background),this.textColor=Object(n.invert)(this.background),this.altBackground=Object(n.lighten)(this.contrast,55),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}var t,i;return t=e,(i=[{key:"updateColors",value:function(){this.secondBkg=Object(n.lighten)(this.contrast,55),this.border2=this.contrast,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.titleColor=this.text,this.actorBorder=Object(n.lighten)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor=Object(n.darken)(this.note,60),this.noteBkgColor=this.note,this.noteTextColor=this.actorTextColor,this.sectionBkgColor=Object(n.lighten)(this.contrast,30),this.sectionBkgColor2=Object(n.lighten)(this.contrast,30),this.taskBorderColor=Object(n.darken)(this.contrast,10),this.taskBkgColor=this.contrast,this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor=this.text,this.taskTextOutsideColor=this.taskTextDarkColor,this.activeTaskBorderColor=this.taskBorderColor,this.activeTaskBkgColor=this.mainBkg,this.gridColor=Object(n.lighten)(this.border1,30),this.doneTaskBkgColor=this.done,this.doneTaskBorderColor=this.lineColor,this.critBkgColor=this.critical,this.critBorderColor=Object(n.darken)(this.critBkgColor,10),this.todayLineColor=this.critBkgColor,this.classText=this.primaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Object(n.adjust)(this.primaryColor,{h:64}),this.fillType3=Object(n.adjust)(this.secondaryColor,{h:64}),this.fillType4=Object(n.adjust)(this.primaryColor,{h:-64}),this.fillType5=Object(n.adjust)(this.secondaryColor,{h:-64}),this.fillType6=Object(n.adjust)(this.primaryColor,{h:128}),this.fillType7=Object(n.adjust)(this.secondaryColor,{h:128})}},{key:"calculate",value:function(e){var t=this;if("object"===s(e)){var i=Object.keys(e);i.forEach((function(i){t[i]=e[i]})),this.updateColors(),i.forEach((function(i){t[i]=e[i]}))}else this.updateColors()}}])&&o(t.prototype,i),e}(),l=function(e){var t=new a;return t.calculate(e),t}},"./src/utils.js":function(e,t,i){"use strict";i.r(t),i.d(t,"detectInit",(function(){return p})),i.d(t,"detectDirective",(function(){return m})),i.d(t,"detectType",(function(){return _})),i.d(t,"isSubstringInArray",(function(){return v})),i.d(t,"interpolateToCurve",(function(){return y})),i.d(t,"formatUrl",(function(){return w})),i.d(t,"runFunc",(function(){return C})),i.d(t,"getStylesFromArray",(function(){return k})),i.d(t,"generateId",(function(){return L})),i.d(t,"random",(function(){return M})),i.d(t,"assignWithDepth",(function(){return D})),i.d(t,"getTextObj",(function(){return N})),i.d(t,"drawSimpleText",(function(){return E})),i.d(t,"wrapLabel",(function(){return T})),i.d(t,"calculateTextHeight",(function(){return O})),i.d(t,"calculateTextWidth",(function(){return A})),i.d(t,"calculateTextDimensions",(function(){return R})),i.d(t,"calculateSvgSizeAttrs",(function(){return P})),i.d(t,"configureSvgSize",(function(){return F})),i.d(t,"initIdGeneratior",(function(){return B}));var n=i("@braintree/sanitize-url"),r=i("d3"),s=i("./src/diagrams/common/common.js"),o=i("./src/logger.js"),a=void 0;function l(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function c(e){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e){return function(e){if(Array.isArray(e)){for(var t=0,i=new Array(e.length);t<e.length;t++)i[t]=e[t];return i}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var h={curveBasis:r.curveBasis,curveBasisClosed:r.curveBasisClosed,curveBasisOpen:r.curveBasisOpen,curveLinear:r.curveLinear,curveLinearClosed:r.curveLinearClosed,curveMonotoneX:r.curveMonotoneX,curveMonotoneY:r.curveMonotoneY,curveNatural:r.curveNatural,curveStep:r.curveStep,curveStepAfter:r.curveStepAfter,curveStepBefore:r.curveStepBefore},u=/[%]{2}[{]\s*(?:(?:(\w+)\s*:|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi,g=/\s*(?:(?:(\w+)(?=:):|(\w+))\s*(?:(?:(\w+))|((?:(?![}][%]{2}).|\r?\n)*))?\s*)(?:[}][%]{2})?/gi,f=/\s*%%.*\n/gm,p=function(e){var t=m(e,/(?:init\b)|(?:initialize\b)/),i={};if(Array.isArray(t)){var n=t.map((function(e){return e.args}));i=D(i,d(n))}else i=t.args;if(i){var r=_(e);["config"].forEach((function(e){void 0!==i[e]&&("flowchart-v2"===r&&(r="flowchart"),i[r]=i[e],delete i[e])}))}return i},m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{var i=new RegExp("[%]{2}(?![{]".concat(g.source,")(?=[}][%]{2}).*\n"),"ig");e=e.trim().replace(i,"").replace(/'/gm,'"'),o.log.debug("Detecting diagram directive".concat(null!==t?" type:"+t:""," based on the text:").concat(e));for(var n,r=[];null!==(n=u.exec(e));)if(n.index===u.lastIndex&&u.lastIndex++,n&&!t||t&&n[1]&&n[1].match(t)||t&&n[2]&&n[2].match(t)){var s=n[1]?n[1]:n[2],a=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;r.push({type:s,args:a})}return 0===r.length&&r.push({type:e,args:null}),1===r.length?r[0]:r}catch(i){return o.log.error("ERROR: ".concat(i.message," - Unable to parse directive\n ").concat(null!==t?" type:"+t:""," based on the text:").concat(e)),{type:null,args:null}}},_=function(e){return e=e.replace(u,"").replace(f,"\n"),o.log.debug("Detecting diagram type based on the text "+e),e.match(/^\s*sequenceDiagram/)?"sequence":e.match(/^\s*gantt/)?"gantt":e.match(/^\s*classDiagram-v2/)?"classDiagram":e.match(/^\s*classDiagram/)?"class":e.match(/^\s*stateDiagram-v2/)?"stateDiagram":e.match(/^\s*stateDiagram/)?"state":e.match(/^\s*gitGraph/)?"git":e.match(/^\s*flowchart/)?"flowchart-v2":e.match(/^\s*info/)?"info":e.match(/^\s*pie/)?"pie":e.match(/^\s*erDiagram/)?"er":e.match(/^\s*journey/)?"journey":e.match(/^\s*requirement/)||e.match(/^\s*requirementDiagram/)?"requirement":"flowchart"},b=function(e,t){var i={};return function(){for(var n=arguments.length,r=new Array(n),s=0;s<n;s++)r[s]=arguments[s];var o=t?t.apply(a,r):r[0];if(o in i)return i[o];var l=e.apply(void 0,r);return i[o]=l,l}},v=function(e,t){for(var i=0;i<t.length;i++)if(t[i].match(e))return i;return-1},y=function(e,t){if(!e)return t;var i="curve".concat(e.charAt(0).toUpperCase()+e.slice(1));return h[i]||t},w=function(e,t){var i=e.trim();if(i)return"loose"!==t.securityLevel?Object(n.sanitizeUrl)(i):i},C=function(e){for(var t,i=e.split("."),n=i.length-1,r=i[n],s=window,o=0;o<n;o++)if(!(s=s[i[o]]))return;for(var a=arguments.length,l=new Array(a>1?a-1:0),c=1;c<a;c++)l[c-1]=arguments[c];(t=s)[r].apply(t,l)},S=function(e,t){return e&&t?Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},k=function(e){for(var t="",i="",n=0;n<e.length;n++)void 0!==e[n]&&(e[n].startsWith("color:")||e[n].startsWith("text-align:")?i=i+e[n]+";":t=t+e[n]+";");return{style:t,labelStyle:i}},x=0,L=function(){return x++,"id-"+Math.random().toString(36).substr(2,12)+"-"+x},M=function(e){return function(e){for(var t="",i="0123456789abcdef",n=i.length,r=0;r<e;r++)t+=i.charAt(Math.floor(Math.random()*n));return t}(e.length)},D=function e(t,i,n){var r=Object.assign({depth:2,clobber:!1},n),s=r.depth,o=r.clobber;return Array.isArray(i)&&!Array.isArray(t)?(i.forEach((function(i){return e(t,i,n)})),t):Array.isArray(i)&&Array.isArray(t)?(i.forEach((function(e){-1===t.indexOf(e)&&t.push(e)})),t):void 0===t||s<=0?null!=t&&"object"===c(t)&&"object"===c(i)?Object.assign(t,i):i:(void 0!==i&&"object"===c(t)&&"object"===c(i)&&Object.keys(i).forEach((function(n){"object"!==c(i[n])||void 0!==t[n]&&"object"!==c(t[n])?(o||"object"!==c(t[n])&&"object"!==c(i[n]))&&(t[n]=i[n]):(void 0===t[n]&&(t[n]=Array.isArray(i[n])?[]:{}),t[n]=e(t[n],i[n],{depth:s-1,clobber:o}))})),t)},N=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0}},E=function(e,t){var i=t.text.replace(s.default.lineBreakRegex," "),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.style("text-anchor",t.anchor),n.style("font-family",t.fontFamily),n.style("font-size",t.fontSize),n.style("font-weight",t.fontWeight),n.attr("fill",t.fill),void 0!==t.class&&n.attr("class",t.class);var r=n.append("tspan");return r.attr("x",t.x+2*t.textMargin),r.attr("fill",t.fill),r.text(i),n},T=b((function(e,t,i){if(!e)return e;if(i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"<br/>"},i),s.default.lineBreakRegex.test(e))return e;var n=e.split(" "),r=[],o="";return n.forEach((function(e,s){var a=A("".concat(e," "),i),l=A(o,i);if(a>t){var c=I(e,t,"-",i),h=c.hyphenatedStrings,u=c.remainingWord;r.push.apply(r,[o].concat(d(h))),o=u}else l+a>=t?(r.push(o),o=e):o=[o,e].filter(Boolean).join(" ");s+1===n.length&&r.push(o)})),r.filter((function(e){return""!==e})).join(i.joinWith)}),(function(e,t,i){return"".concat(e,"-").concat(t,"-").concat(i.fontSize,"-").concat(i.fontWeight,"-").concat(i.fontFamily,"-").concat(i.joinWith)})),I=b((function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",n=arguments.length>3?arguments[3]:void 0;n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);var r=e.split(""),s=[],o="";return r.forEach((function(e,a){var l="".concat(o).concat(e);if(A(l,n)>=t){var c=a+1,d=r.length===c,h="".concat(l).concat(i);s.push(d?l:h),o=""}else o=l})),{hyphenatedStrings:s,remainingWord:o}}),(function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",n=arguments.length>3?arguments[3]:void 0;return"".concat(e,"-").concat(t,"-").concat(i,"-").concat(n.fontSize,"-").concat(n.fontWeight,"-").concat(n.fontFamily)})),O=function(e,t){return t=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:15},t),R(e,t).height},A=function(e,t){return t=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},t),R(e,t).width},R=b((function(e,t){var i=t=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial"},t),n=i.fontSize,o=i.fontFamily,a=i.fontWeight;if(!e)return{width:0,height:0};var l=["sans-serif",o],c=e.split(s.default.lineBreakRegex),d=[],h=Object(r.select)("body");if(!h.remove)return{width:0,height:0,lineHeight:0};for(var u=h.append("svg"),g=0,f=l;g<f.length;g++){var p=f[g],m=0,_={width:0,height:0,lineHeight:0},b=!0,v=!1,y=void 0;try{for(var w,C=c[Symbol.iterator]();!(b=(w=C.next()).done);b=!0){var S=w.value,k=N();k.text=S;var x=E(u,k).style("font-size",n).style("font-weight",a).style("font-family",p),L=(x._groups||x)[0][0].getBBox();_.width=Math.round(Math.max(_.width,L.width)),m=Math.round(L.height),_.height+=m,_.lineHeight=Math.round(Math.max(_.lineHeight,m))}}catch(e){v=!0,y=e}finally{try{b||null==C.return||C.return()}finally{if(v)throw y}}d.push(_)}return u.remove(),d[isNaN(d[1].height)||isNaN(d[1].width)||isNaN(d[1].lineHeight)||d[0].height>d[1].height&&d[0].width>d[1].width&&d[0].lineHeight>d[1].lineHeight?0:1]}),(function(e,t){return"".concat(e,"-").concat(t.fontSize,"-").concat(t.fontWeight,"-").concat(t.fontFamily)})),P=function(e,t,i){var n=new Map;return n.set("height",e),i?(n.set("width","100%"),n.set("style","max-width: ".concat(t,"px;"))):n.set("width",t),n},F=function(e,t,i,n){!function(e,t){var i=!0,n=!1,r=void 0;try{for(var s,o=t[Symbol.iterator]();!(i=(s=o.next()).done);i=!0){var a=s.value;e.attr(a[0],a[1])}}catch(e){n=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(n)throw r}}}(e,P(t,i,n))},B=function(){function e(t,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.deterministic=t,this.seed=i,this.count=i?i.length:0}var t,i;return t=e,(i=[{key:"next",value:function(){return this.deterministic?this.count++:Date.now()}}])&&l(t.prototype,i),e}();t.default={assignWithDepth:D,wrapLabel:T,calculateTextHeight:O,calculateTextWidth:A,calculateTextDimensions:R,calculateSvgSizeAttrs:P,configureSvgSize:F,detectInit:p,detectDirective:m,detectType:_,isSubstringInArray:v,interpolateToCurve:y,calcLabelPosition:function(e){return function(e){var t,i=0;e.forEach((function(e){i+=S(e,t),t=e}));var n=i/2,r=void 0;return t=void 0,e.forEach((function(e){if(t&&!r){var i=S(e,t);if(i<n)n-=i;else{var s=n/i;s<=0&&(r=t),s>=1&&(r={x:e.x,y:e.y}),s>0&&s<1&&(r={x:(1-s)*t.x+s*e.x,y:(1-s)*t.y+s*e.y})}}t=e})),r}(e)},calcCardinalityPosition:function(e,t,i){var n;o.log.info("our points",t),t[0]!==i&&(t=t.reverse()),t.forEach((function(e){S(e,n),n=e}));var r,s=25;n=void 0,t.forEach((function(e){if(n&&!r){var t=S(e,n);if(t<s)s-=t;else{var i=s/t;i<=0&&(r=n),i>=1&&(r={x:e.x,y:e.y}),i>0&&i<1&&(r={x:(1-i)*n.x+i*e.x,y:(1-i)*n.y+i*e.y})}}n=e}));var a=e?10:5,l=Math.atan2(t[0].y-r.y,t[0].x-r.x),c={x:0,y:0};return c.x=Math.sin(l)*a+(t[0].x+r.x)/2,c.y=-Math.cos(l)*a+(t[0].y+r.y)/2,c},calcTerminalLabelPosition:function(e,t,i){var n,r=JSON.parse(JSON.stringify(i));o.log.info("our points",r),"start_left"!==t&&"start_right"!==t&&(r=r.reverse()),r.forEach((function(e){S(e,n),n=e}));var s,a=25;n=void 0,r.forEach((function(e){if(n&&!s){var t=S(e,n);if(t<a)a-=t;else{var i=a/t;i<=0&&(s=n),i>=1&&(s={x:e.x,y:e.y}),i>0&&i<1&&(s={x:(1-i)*n.x+i*e.x,y:(1-i)*n.y+i*e.y})}}n=e}));var l=10,c=Math.atan2(r[0].y-s.y,r[0].x-s.x),d={x:0,y:0};return d.x=Math.sin(c)*l+(r[0].x+s.x)/2,d.y=-Math.cos(c)*l+(r[0].y+s.y)/2,"start_left"===t&&(d.x=Math.sin(c+Math.PI)*l+(r[0].x+s.x)/2,d.y=-Math.cos(c+Math.PI)*l+(r[0].y+s.y)/2),"end_right"===t&&(d.x=Math.sin(c-Math.PI)*l+(r[0].x+s.x)/2-5,d.y=-Math.cos(c-Math.PI)*l+(r[0].y+s.y)/2-5),"end_left"===t&&(d.x=Math.sin(c)*l+(r[0].x+s.x)/2-5,d.y=-Math.cos(c)*l+(r[0].y+s.y)/2-5),d},formatUrl:w,getStylesFromArray:k,generateId:L,random:M,memoize:b,runFunc:C,initIdGeneratior:B}},"@braintree/sanitize-url":function(e,t){e.exports=i(29609)},d3:function(e,t){e.exports=i(69362)},dagre:function(e,t){e.exports=i(70681)},"dagre-d3":function(e,t){e.exports=i(44949)},"dagre-d3/lib/label/add-html-label.js":function(e,t){e.exports=i(88284)},"entity-decode/browser":function(e,t){e.exports=i(42859)},graphlib:function(e,t){e.exports=i(28282)},khroma:function(e,t){e.exports=i(8613)},"moment-mini":function(e,t){e.exports=i(11941)},stylis:function(e,t){e.exports=i(673)}}).default},e.exports=n()},89234:()=>{},11748:(e,t,i)=>{var n={"./locale":89234,"./locale.js":89234};function r(e){var t=s(e);return i(t)}function s(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=s,e.exports=r,r.id=11748},11941:function(e,t,i){(e=i.nmd(e)).exports=function(){"use strict";var t,n;function r(){return t.apply(null,arguments)}function s(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function a(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function c(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function d(e,t){var i,n=[];for(i=0;i<e.length;++i)n.push(t(e[i],i));return n}function h(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e,t){for(var i in t)h(t,i)&&(e[i]=t[i]);return h(t,"toString")&&(e.toString=t.toString),h(t,"valueOf")&&(e.valueOf=t.valueOf),e}function g(e,t,i,n){return bt(e,t,i,n,!0).utc()}function f(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=f(e),i=n.call(t.parsedDateParts,(function(e){return null!=e})),r=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&i);if(e._strict&&(r=r&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return r;e._isValid=r}return e._isValid}function m(e){var t=g(NaN);return null!=e?u(f(t),e):f(t).userInvalidated=!0,t}n=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),i=t.length>>>0,n=0;n<i;n++)if(n in t&&e.call(this,t[n],n,t))return!0;return!1};var _=r.momentProperties=[];function b(e,t){var i,n,r;if(a(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),a(t._i)||(e._i=t._i),a(t._f)||(e._f=t._f),a(t._l)||(e._l=t._l),a(t._strict)||(e._strict=t._strict),a(t._tzm)||(e._tzm=t._tzm),a(t._isUTC)||(e._isUTC=t._isUTC),a(t._offset)||(e._offset=t._offset),a(t._pf)||(e._pf=f(t)),a(t._locale)||(e._locale=t._locale),0<_.length)for(i=0;i<_.length;i++)a(r=t[n=_[i]])||(e[n]=r);return e}var v=!1;function y(e){b(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function w(e){return e instanceof y||null!=e&&null!=e._isAMomentObject}function C(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function S(e){var t=+e,i=0;return 0!==t&&isFinite(t)&&(i=C(t)),i}function k(e,t,i){var n,r=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),o=0;for(n=0;n<r;n++)(i&&e[n]!==t[n]||!i&&S(e[n])!==S(t[n]))&&o++;return o+s}function x(e){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function L(e,t){var i=!0;return u((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,e),i){for(var n,s=[],o=0;o<arguments.length;o++){if(n="","object"==typeof arguments[o]){for(var a in n+="\n["+o+"] ",arguments[0])n+=a+": "+arguments[0][a]+", ";n=n.slice(0,-2)}else n=arguments[o];s.push(n)}x(e+"\nArguments: "+Array.prototype.slice.call(s).join("")+"\n"+(new Error).stack),i=!1}return t.apply(this,arguments)}),t)}var M,D={};function N(e,t){null!=r.deprecationHandler&&r.deprecationHandler(e,t),D[e]||(x(t),D[e]=!0)}function E(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function T(e,t){var i,n=u({},e);for(i in t)h(t,i)&&(o(e[i])&&o(t[i])?(n[i]={},u(n[i],e[i]),u(n[i],t[i])):null!=t[i]?n[i]=t[i]:delete n[i]);for(i in e)h(e,i)&&!h(t,i)&&o(e[i])&&(n[i]=u({},n[i]));return n}function I(e){null!=e&&this.set(e)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,M=Object.keys?Object.keys:function(e){var t,i=[];for(t in e)h(e,t)&&i.push(t);return i};var O={};function A(e,t){var i=e.toLowerCase();O[i]=O[i+"s"]=O[t]=e}function R(e){return"string"==typeof e?O[e]||O[e.toLowerCase()]:void 0}function P(e){var t,i,n={};for(i in e)h(e,i)&&(t=R(i))&&(n[t]=e[i]);return n}var F={};function B(e,t){F[e]=t}function W(e,t,i){var n=""+Math.abs(e),r=t-n.length;return(0<=e?i?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+n}var Y=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,H=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,j={},V={};function z(e,t,i,n){var r=n;"string"==typeof n&&(r=function(){return this[n]()}),e&&(V[e]=r),t&&(V[t[0]]=function(){return W(r.apply(this,arguments),t[1],t[2])}),i&&(V[i]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)})}function U(e,t){return e.isValid()?(t=$(t,e.localeData()),j[t]=j[t]||function(e){var t,i,n,r=e.match(Y);for(t=0,i=r.length;t<i;t++)V[r[t]]?r[t]=V[r[t]]:r[t]=(n=r[t]).match(/\[[\s\S]/)?n.replace(/^\[|\]$/g,""):n.replace(/\\/g,"");return function(t){var n,s="";for(n=0;n<i;n++)s+=E(r[n])?r[n].call(t,e):r[n];return s}}(t),j[t](e)):e.localeData().invalidDate()}function $(e,t){var i=5;function n(e){return t.longDateFormat(e)||e}for(H.lastIndex=0;0<=i&&H.test(e);)e=e.replace(H,n),H.lastIndex=0,i-=1;return e}var K=/\d/,q=/\d\d/,G=/\d{3}/,Z=/\d{4}/,J=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ie=/\d{1,4}/,ne=/[+-]?\d{1,6}/,re=/\d+/,se=/[+-]?\d+/,oe=/Z|[+-]\d\d:?\d\d/gi,ae=/Z|[+-]\d\d(?::?\d\d)?/gi,le=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ce={};function de(e,t,i){ce[e]=E(t)?t:function(e,n){return e&&i?i:t}}function he(e,t){return h(ce,e)?ce[e](t._strict,t._locale):new RegExp(ue(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,i,n,r){return t||i||n||r}))))}function ue(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ge={};function fe(e,t){var i,n=t;for("string"==typeof e&&(e=[e]),l(t)&&(n=function(e,i){i[t]=S(e)}),i=0;i<e.length;i++)ge[e[i]]=n}function pe(e,t){fe(e,(function(e,i,n,r){n._w=n._w||{},t(e,n._w,n,r)}))}function me(e){return _e(e)?366:365}function _e(e){return e%4==0&&e%100!=0||e%400==0}z("Y",0,0,(function(){var e=this.year();return e<=9999?""+e:"+"+e})),z(0,["YY",2],0,(function(){return this.year()%100})),z(0,["YYYY",4],0,"year"),z(0,["YYYYY",5],0,"year"),z(0,["YYYYYY",6,!0],0,"year"),A("year","y"),B("year",1),de("Y",se),de("YY",Q,q),de("YYYY",ie,Z),de("YYYYY",ne,J),de("YYYYYY",ne,J),fe(["YYYYY","YYYYYY"],0),fe("YYYY",(function(e,t){t[0]=2===e.length?r.parseTwoDigitYear(e):S(e)})),fe("YY",(function(e,t){t[0]=r.parseTwoDigitYear(e)})),fe("Y",(function(e,t){t[0]=parseInt(e,10)})),r.parseTwoDigitYear=function(e){return S(e)+(68<S(e)?1900:2e3)};var be,ve=ye("FullYear",!0);function ye(e,t){return function(i){return null!=i?(Ce(this,e,i),r.updateOffset(this,t),this):we(this,e)}}function we(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Ce(e,t,i){e.isValid()&&!isNaN(i)&&("FullYear"===t&&_e(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](i,e.month(),Se(i,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](i))}function Se(e,t){if(isNaN(e)||isNaN(t))return NaN;var i=(t%12+12)%12;return e+=(t-i)/12,1===i?_e(e)?29:28:31-i%7%2}be=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},z("M",["MM",2],"Mo",(function(){return this.month()+1})),z("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),z("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),A("month","M"),B("month",8),de("M",Q),de("MM",Q,q),de("MMM",(function(e,t){return t.monthsShortRegex(e)})),de("MMMM",(function(e,t){return t.monthsRegex(e)})),fe(["M","MM"],(function(e,t){t[1]=S(e)-1})),fe(["MMM","MMMM"],(function(e,t,i,n){var r=i._locale.monthsParse(e,n,i._strict);null!=r?t[1]=r:f(i).invalidMonth=e}));var ke=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,xe="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Le="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Me(e,t){var i;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=S(t);else if(!l(t=e.localeData().monthsParse(t)))return e;return i=Math.min(e.date(),Se(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,i),e}function De(e){return null!=e?(Me(this,e),r.updateOffset(this,!0),this):we(this,"Month")}var Ne=le,Ee=le;function Te(){function e(e,t){return t.length-e.length}var t,i,n=[],r=[],s=[];for(t=0;t<12;t++)i=g([2e3,t]),n.push(this.monthsShort(i,"")),r.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(n.sort(e),r.sort(e),s.sort(e),t=0;t<12;t++)n[t]=ue(n[t]),r[t]=ue(r[t]);for(t=0;t<24;t++)s[t]=ue(s[t]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")}function Ie(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Oe(e,t,i){var n=7+t-i;return-(7+Ie(e,0,n).getUTCDay()-t)%7+n-1}function Ae(e,t,i,n,r){var s,o,a=1+7*(t-1)+(7+i-n)%7+Oe(e,n,r);return a<=0?o=me(s=e-1)+a:a>me(e)?(s=e+1,o=a-me(e)):(s=e,o=a),{year:s,dayOfYear:o}}function Re(e,t,i){var n,r,s=Oe(e.year(),t,i),o=Math.floor((e.dayOfYear()-s-1)/7)+1;return o<1?n=o+Pe(r=e.year()-1,t,i):o>Pe(e.year(),t,i)?(n=o-Pe(e.year(),t,i),r=e.year()+1):(r=e.year(),n=o),{week:n,year:r}}function Pe(e,t,i){var n=Oe(e,t,i),r=Oe(e+1,t,i);return(me(e)-n+r)/7}z("w",["ww",2],"wo","week"),z("W",["WW",2],"Wo","isoWeek"),A("week","w"),A("isoWeek","W"),B("week",5),B("isoWeek",5),de("w",Q),de("ww",Q,q),de("W",Q),de("WW",Q,q),pe(["w","ww","W","WW"],(function(e,t,i,n){t[n.substr(0,1)]=S(e)})),z("d",0,"do","day"),z("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),z("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),z("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),z("e",0,0,"weekday"),z("E",0,0,"isoWeekday"),A("day","d"),A("weekday","e"),A("isoWeekday","E"),B("day",11),B("weekday",11),B("isoWeekday",11),de("d",Q),de("e",Q),de("E",Q),de("dd",(function(e,t){return t.weekdaysMinRegex(e)})),de("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),de("dddd",(function(e,t){return t.weekdaysRegex(e)})),pe(["dd","ddd","dddd"],(function(e,t,i,n){var r=i._locale.weekdaysParse(e,n,i._strict);null!=r?t.d=r:f(i).invalidWeekday=e})),pe(["d","e","E"],(function(e,t,i,n){t[n]=S(e)}));var Fe="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Be="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),We="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ye=le,He=le,je=le;function Ve(){function e(e,t){return t.length-e.length}var t,i,n,r,s,o=[],a=[],l=[],c=[];for(t=0;t<7;t++)i=g([2e3,1]).day(t),n=this.weekdaysMin(i,""),r=this.weekdaysShort(i,""),s=this.weekdays(i,""),o.push(n),a.push(r),l.push(s),c.push(n),c.push(r),c.push(s);for(o.sort(e),a.sort(e),l.sort(e),c.sort(e),t=0;t<7;t++)a[t]=ue(a[t]),l[t]=ue(l[t]),c[t]=ue(c[t]);this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function ze(){return this.hours()%12||12}function Ue(e,t){z(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function $e(e,t){return t._meridiemParse}z("H",["HH",2],0,"hour"),z("h",["hh",2],0,ze),z("k",["kk",2],0,(function(){return this.hours()||24})),z("hmm",0,0,(function(){return""+ze.apply(this)+W(this.minutes(),2)})),z("hmmss",0,0,(function(){return""+ze.apply(this)+W(this.minutes(),2)+W(this.seconds(),2)})),z("Hmm",0,0,(function(){return""+this.hours()+W(this.minutes(),2)})),z("Hmmss",0,0,(function(){return""+this.hours()+W(this.minutes(),2)+W(this.seconds(),2)})),Ue("a",!0),Ue("A",!1),A("hour","h"),B("hour",13),de("a",$e),de("A",$e),de("H",Q),de("h",Q),de("k",Q),de("HH",Q,q),de("hh",Q,q),de("kk",Q,q),de("hmm",X),de("hmmss",ee),de("Hmm",X),de("Hmmss",ee),fe(["H","HH"],3),fe(["k","kk"],(function(e,t,i){var n=S(e);t[3]=24===n?0:n})),fe(["a","A"],(function(e,t,i){i._isPm=i._locale.isPM(e),i._meridiem=e})),fe(["h","hh"],(function(e,t,i){t[3]=S(e),f(i).bigHour=!0})),fe("hmm",(function(e,t,i){var n=e.length-2;t[3]=S(e.substr(0,n)),t[4]=S(e.substr(n)),f(i).bigHour=!0})),fe("hmmss",(function(e,t,i){var n=e.length-4,r=e.length-2;t[3]=S(e.substr(0,n)),t[4]=S(e.substr(n,2)),t[5]=S(e.substr(r)),f(i).bigHour=!0})),fe("Hmm",(function(e,t,i){var n=e.length-2;t[3]=S(e.substr(0,n)),t[4]=S(e.substr(n))})),fe("Hmmss",(function(e,t,i){var n=e.length-4,r=e.length-2;t[3]=S(e.substr(0,n)),t[4]=S(e.substr(n,2)),t[5]=S(e.substr(r))}));var Ke,qe=ye("Hours",!0),Ge={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:xe,monthsShort:Le,week:{dow:0,doy:6},weekdays:Fe,weekdaysMin:We,weekdaysShort:Be,meridiemParse:/[ap]\.?m?\.?/i},Ze={},Je={};function Qe(e){return e?e.toLowerCase().replace("_","-"):e}function Xe(t){var n=null;if(!Ze[t]&&e&&e.exports)try{n=Ke._abbr,i(11748)("./"+t),et(n)}catch(t){}return Ze[t]}function et(e,t){var i;return e&&((i=a(t)?it(e):tt(e,t))?Ke=i:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Ke._abbr}function tt(e,t){if(null!==t){var i,n=Ge;if(t.abbr=e,null!=Ze[e])N("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Ze[e]._config;else if(null!=t.parentLocale)if(null!=Ze[t.parentLocale])n=Ze[t.parentLocale]._config;else{if(null==(i=Xe(t.parentLocale)))return Je[t.parentLocale]||(Je[t.parentLocale]=[]),Je[t.parentLocale].push({name:e,config:t}),null;n=i._config}return Ze[e]=new I(T(n,t)),Je[e]&&Je[e].forEach((function(e){tt(e.name,e.config)})),et(e),Ze[e]}return delete Ze[e],null}function it(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Ke;if(!s(e)){if(t=Xe(e))return t;e=[e]}return function(e){for(var t,i,n,r,s=0;s<e.length;){for(t=(r=Qe(e[s]).split("-")).length,i=(i=Qe(e[s+1]))?i.split("-"):null;0<t;){if(n=Xe(r.slice(0,t).join("-")))return n;if(i&&i.length>=t&&k(r,i,!0)>=t-1)break;t--}s++}return Ke}(e)}function nt(e){var t,i=e._a;return i&&-2===f(e).overflow&&(t=i[1]<0||11<i[1]?1:i[2]<1||i[2]>Se(i[0],i[1])?2:i[3]<0||24<i[3]||24===i[3]&&(0!==i[4]||0!==i[5]||0!==i[6])?3:i[4]<0||59<i[4]?4:i[5]<0||59<i[5]?5:i[6]<0||999<i[6]?6:-1,f(e)._overflowDayOfYear&&(t<0||2<t)&&(t=2),f(e)._overflowWeeks&&-1===t&&(t=7),f(e)._overflowWeekday&&-1===t&&(t=8),f(e).overflow=t),e}function rt(e,t,i){return null!=e?e:null!=t?t:i}function st(e){var t,i,n,s,o,a=[];if(!e._d){var l,c;for(l=e,c=new Date(r.now()),n=l._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()],e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,i,n,r,s,o,a,l;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)s=1,o=4,i=rt(t.GG,e._a[0],Re(vt(),1,4).year),n=rt(t.W,1),((r=rt(t.E,1))<1||7<r)&&(l=!0);else{s=e._locale._week.dow,o=e._locale._week.doy;var c=Re(vt(),s,o);i=rt(t.gg,e._a[0],c.year),n=rt(t.w,c.week),null!=t.d?((r=t.d)<0||6<r)&&(l=!0):null!=t.e?(r=t.e+s,(t.e<0||6<t.e)&&(l=!0)):r=s}n<1||n>Pe(i,s,o)?f(e)._overflowWeeks=!0:null!=l?f(e)._overflowWeekday=!0:(a=Ae(i,n,r,s,o),e._a[0]=a.year,e._dayOfYear=a.dayOfYear)}(e),null!=e._dayOfYear&&(o=rt(e._a[0],n[0]),(e._dayOfYear>me(o)||0===e._dayOfYear)&&(f(e)._overflowDayOfYear=!0),i=Ie(o,0,e._dayOfYear),e._a[1]=i.getUTCMonth(),e._a[2]=i.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=n[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?Ie:function(e,t,i,n,r,s,o){var a=new Date(e,t,i,n,r,s,o);return e<100&&0<=e&&isFinite(a.getFullYear())&&a.setFullYear(e),a}).apply(null,a),s=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==s&&(f(e).weekdayMismatch=!0)}}var ot=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,at=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lt=/Z|[+-]\d\d(?::?\d\d)?/,ct=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],dt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ht=/^\/?Date\((\-?\d+)/i;function ut(e){var t,i,n,r,s,o,a=e._i,l=ot.exec(a)||at.exec(a);if(l){for(f(e).iso=!0,t=0,i=ct.length;t<i;t++)if(ct[t][1].exec(l[1])){r=ct[t][0],n=!1!==ct[t][2];break}if(null==r)return void(e._isValid=!1);if(l[3]){for(t=0,i=dt.length;t<i;t++)if(dt[t][1].exec(l[3])){s=(l[2]||" ")+dt[t][0];break}if(null==s)return void(e._isValid=!1)}if(!n&&null!=s)return void(e._isValid=!1);if(l[4]){if(!lt.exec(l[4]))return void(e._isValid=!1);o="Z"}e._f=r+(s||"")+(o||""),mt(e)}else e._isValid=!1}var gt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;var ft={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function pt(e){var t,i,n,r=gt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim());if(r){var s=function(e,t,i,n,r,s){var o=[function(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}(e),Le.indexOf(t),parseInt(i,10),parseInt(n,10),parseInt(r,10)];return s&&o.push(parseInt(s,10)),o}(r[4],r[3],r[2],r[5],r[6],r[7]);if(i=s,n=e,(t=r[1])&&Be.indexOf(t)!==new Date(i[0],i[1],i[2]).getDay()&&(f(n).weekdayMismatch=!0,!(n._isValid=!1)))return;e._a=s,e._tzm=function(e,t,i){if(e)return ft[e];if(t)return 0;var n=parseInt(i,10),r=n%100;return(n-r)/100*60+r}(r[8],r[9],r[10]),e._d=Ie.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),f(e).rfc2822=!0}else e._isValid=!1}function mt(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],f(e).empty=!0;var t,i,n,s,o,a,l,c,d=""+e._i,u=d.length,g=0;for(n=$(e._f,e._locale).match(Y)||[],t=0;t<n.length;t++)s=n[t],(i=(d.match(he(s,e))||[])[0])&&(0<(o=d.substr(0,d.indexOf(i))).length&&f(e).unusedInput.push(o),d=d.slice(d.indexOf(i)+i.length),g+=i.length),V[s]?(i?f(e).empty=!1:f(e).unusedTokens.push(s),a=s,c=e,null!=(l=i)&&h(ge,a)&&ge[a](l,c._a,c,a)):e._strict&&!i&&f(e).unusedTokens.push(s);f(e).charsLeftOver=u-g,0<d.length&&f(e).unusedInput.push(d),e._a[3]<=12&&!0===f(e).bigHour&&0<e._a[3]&&(f(e).bigHour=void 0),f(e).parsedDateParts=e._a.slice(0),f(e).meridiem=e._meridiem,e._a[3]=function(e,t,i){var n;return null==i?t:null!=e.meridiemHour?e.meridiemHour(t,i):(null!=e.isPM&&((n=e.isPM(i))&&t<12&&(t+=12),n||12!==t||(t=0)),t)}(e._locale,e._a[3],e._meridiem),st(e),nt(e)}else pt(e);else ut(e)}function _t(e){var t,i,n,h,g=e._i,_=e._f;return e._locale=e._locale||it(e._l),null===g||void 0===_&&""===g?m({nullInput:!0}):("string"==typeof g&&(e._i=g=e._locale.preparse(g)),w(g)?new y(nt(g)):(c(g)?e._d=g:s(_)?function(e){var t,i,n,r,s;if(0===e._f.length)return f(e).invalidFormat=!0,e._d=new Date(NaN);for(r=0;r<e._f.length;r++)s=0,t=b({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[r],mt(t),p(t)&&(s+=f(t).charsLeftOver,s+=10*f(t).unusedTokens.length,f(t).score=s,(null==n||s<n)&&(n=s,i=t));u(e,i||t)}(e):_?mt(e):a(i=(t=e)._i)?t._d=new Date(r.now()):c(i)?t._d=new Date(i.valueOf()):"string"==typeof i?(n=t,null===(h=ht.exec(n._i))?(ut(n),!1===n._isValid&&(delete n._isValid,pt(n),!1===n._isValid&&(delete n._isValid,r.createFromInputFallback(n)))):n._d=new Date(+h[1])):s(i)?(t._a=d(i.slice(0),(function(e){return parseInt(e,10)})),st(t)):o(i)?function(e){if(!e._d){var t=P(e._i);e._a=d([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),st(e)}}(t):l(i)?t._d=new Date(i):r.createFromInputFallback(t),p(e)||(e._d=null),e))}function bt(e,t,i,n,r){var a,l={};return!0!==i&&!1!==i||(n=i,i=void 0),(o(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||s(e)&&0===e.length)&&(e=void 0),l._isAMomentObject=!0,l._useUTC=l._isUTC=r,l._l=i,l._i=e,l._f=t,l._strict=n,(a=new y(nt(_t(l))))._nextDay&&(a.add(1,"d"),a._nextDay=void 0),a}function vt(e,t,i,n){return bt(e,t,i,n,!1)}r.createFromInputFallback=L("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var yt=L("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=vt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:m()})),wt=L("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=vt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:m()}));function Ct(e,t){var i,n;if(1===t.length&&s(t[0])&&(t=t[0]),!t.length)return vt();for(i=t[0],n=1;n<t.length;++n)t[n].isValid()&&!t[n][e](i)||(i=t[n]);return i}var St=["year","quarter","month","week","day","hour","minute","second","millisecond"];function kt(e){var t=P(e),i=t.year||0,n=t.quarter||0,r=t.month||0,s=t.week||0,o=t.day||0,a=t.hour||0,l=t.minute||0,c=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===be.call(St,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var i=!1,n=0;n<St.length;++n)if(e[St[n]]){if(i)return!1;parseFloat(e[St[n]])!==S(e[St[n]])&&(i=!0)}return!0}(t),this._milliseconds=+d+1e3*c+6e4*l+1e3*a*60*60,this._days=+o+7*s,this._months=+r+3*n+12*i,this._data={},this._locale=it(),this._bubble()}function xt(e){return e instanceof kt}function Lt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Mt(e,t){z(e,0,0,(function(){var e=this.utcOffset(),i="+";return e<0&&(e=-e,i="-"),i+W(~~(e/60),2)+t+W(~~e%60,2)}))}Mt("Z",":"),Mt("ZZ",""),de("Z",ae),de("ZZ",ae),fe(["Z","ZZ"],(function(e,t,i){i._useUTC=!0,i._tzm=Nt(ae,e)}));var Dt=/([\+\-]|\d\d)/gi;function Nt(e,t){var i=(t||"").match(e);if(null===i)return null;var n=((i[i.length-1]||[])+"").match(Dt)||["-",0,0],r=60*n[1]+S(n[2]);return 0===r?0:"+"===n[0]?r:-r}function Et(e,t){var i,n;return t._isUTC?(i=t.clone(),n=(w(e)||c(e)?e.valueOf():vt(e).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+n),r.updateOffset(i,!1),i):vt(e).local()}function Tt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function It(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Ot=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,At=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Rt(e,t){var i,n,r,s=e,o=null;return xt(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:l(e)?(s={},t?s[t]=e:s.milliseconds=e):(o=Ot.exec(e))?(i="-"===o[1]?-1:1,s={y:0,d:S(o[2])*i,h:S(o[3])*i,m:S(o[4])*i,s:S(o[5])*i,ms:S(Lt(1e3*o[6]))*i}):(o=At.exec(e))?(i="-"===o[1]?-1:(o[1],1),s={y:Pt(o[2],i),M:Pt(o[3],i),w:Pt(o[4],i),d:Pt(o[5],i),h:Pt(o[6],i),m:Pt(o[7],i),s:Pt(o[8],i)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(r=function(e,t){var i;return e.isValid()&&t.isValid()?(t=Et(t,e),e.isBefore(t)?i=Ft(e,t):((i=Ft(t,e)).milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}(vt(s.from),vt(s.to)),(s={}).ms=r.milliseconds,s.M=r.months),n=new kt(s),xt(e)&&h(e,"_locale")&&(n._locale=e._locale),n}function Pt(e,t){var i=e&&parseFloat(e.replace(",","."));return(isNaN(i)?0:i)*t}function Ft(e,t){var i={milliseconds:0,months:0};return i.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(i.months,"M").isAfter(t)&&--i.months,i.milliseconds=+t-+e.clone().add(i.months,"M"),i}function Bt(e,t){return function(i,n){var r;return null===n||isNaN(+n)||(N(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=i,i=n,n=r),Wt(this,Rt(i="string"==typeof i?+i:i,n),e),this}}function Wt(e,t,i,n){var s=t._milliseconds,o=Lt(t._days),a=Lt(t._months);e.isValid()&&(n=null==n||n,a&&Me(e,we(e,"Month")+a*i),o&&Ce(e,"Date",we(e,"Date")+o*i),s&&e._d.setTime(e._d.valueOf()+s*i),n&&r.updateOffset(e,o||a))}Rt.fn=kt.prototype,Rt.invalid=function(){return Rt(NaN)};var Yt=Bt(1,"add"),Ht=Bt(-1,"subtract");function jt(e,t){var i=12*(t.year()-e.year())+(t.month()-e.month()),n=e.clone().add(i,"months");return-(i+(t-n<0?(t-n)/(n-e.clone().add(i-1,"months")):(t-n)/(e.clone().add(i+1,"months")-n)))||0}function Vt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=it(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var zt=L("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function Ut(){return this._locale}function $t(e,t){z(0,[e,e.length],0,t)}function Kt(e,t,i,n,r){var s;return null==e?Re(this,n,r).year:((s=Pe(e,n,r))<t&&(t=s),function(e,t,i,n,r){var s=Ae(e,t,i,n,r),o=Ie(s.year,0,s.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}.call(this,e,t,i,n,r))}z(0,["gg",2],0,(function(){return this.weekYear()%100})),z(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),$t("gggg","weekYear"),$t("ggggg","weekYear"),$t("GGGG","isoWeekYear"),$t("GGGGG","isoWeekYear"),A("weekYear","gg"),A("isoWeekYear","GG"),B("weekYear",1),B("isoWeekYear",1),de("G",se),de("g",se),de("GG",Q,q),de("gg",Q,q),de("GGGG",ie,Z),de("gggg",ie,Z),de("GGGGG",ne,J),de("ggggg",ne,J),pe(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,i,n){t[n.substr(0,2)]=S(e)})),pe(["gg","GG"],(function(e,t,i,n){t[n]=r.parseTwoDigitYear(e)})),z("Q",0,"Qo","quarter"),A("quarter","Q"),B("quarter",7),de("Q",K),fe("Q",(function(e,t){t[1]=3*(S(e)-1)})),z("D",["DD",2],"Do","date"),A("date","D"),B("date",9),de("D",Q),de("DD",Q,q),de("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),fe(["D","DD"],2),fe("Do",(function(e,t){t[2]=S(e.match(Q)[0])}));var qt=ye("Date",!0);z("DDD",["DDDD",3],"DDDo","dayOfYear"),A("dayOfYear","DDD"),B("dayOfYear",4),de("DDD",te),de("DDDD",G),fe(["DDD","DDDD"],(function(e,t,i){i._dayOfYear=S(e)})),z("m",["mm",2],0,"minute"),A("minute","m"),B("minute",14),de("m",Q),de("mm",Q,q),fe(["m","mm"],4);var Gt=ye("Minutes",!1);z("s",["ss",2],0,"second"),A("second","s"),B("second",15),de("s",Q),de("ss",Q,q),fe(["s","ss"],5);var Zt,Jt=ye("Seconds",!1);for(z("S",0,0,(function(){return~~(this.millisecond()/100)})),z(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),z(0,["SSS",3],0,"millisecond"),z(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),z(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),z(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),z(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),z(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),z(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),A("millisecond","ms"),B("millisecond",16),de("S",te,K),de("SS",te,q),de("SSS",te,G),Zt="SSSS";Zt.length<=9;Zt+="S")de(Zt,re);function Qt(e,t){t[6]=S(1e3*("0."+e))}for(Zt="S";Zt.length<=9;Zt+="S")fe(Zt,Qt);var Xt=ye("Milliseconds",!1);z("z",0,0,"zoneAbbr"),z("zz",0,0,"zoneName");var ei=y.prototype;function ti(e){return e}ei.add=Yt,ei.calendar=function(e,t){var i=e||vt(),n=Et(i,this).startOf("day"),s=r.calendarFormat(this,n)||"sameElse",o=t&&(E(t[s])?t[s].call(this,i):t[s]);return this.format(o||this.localeData().calendar(s,this,vt(i)))},ei.clone=function(){return new y(this)},ei.diff=function(e,t,i){var n,r,s;if(!this.isValid())return NaN;if(!(n=Et(e,this)).isValid())return NaN;switch(r=6e4*(n.utcOffset()-this.utcOffset()),t=R(t)){case"year":s=jt(this,n)/12;break;case"month":s=jt(this,n);break;case"quarter":s=jt(this,n)/3;break;case"second":s=(this-n)/1e3;break;case"minute":s=(this-n)/6e4;break;case"hour":s=(this-n)/36e5;break;case"day":s=(this-n-r)/864e5;break;case"week":s=(this-n-r)/6048e5;break;default:s=this-n}return i?s:C(s)},ei.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ei.format=function(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=U(this,e);return this.localeData().postformat(t)},ei.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||vt(e).isValid())?Rt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ei.fromNow=function(e){return this.from(vt(),e)},ei.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||vt(e).isValid())?Rt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ei.toNow=function(e){return this.to(vt(),e)},ei.get=function(e){return E(this[e=R(e)])?this[e]():this},ei.invalidAt=function(){return f(this).overflow},ei.isAfter=function(e,t){var i=w(e)?e:vt(e);return!(!this.isValid()||!i.isValid())&&("millisecond"===(t=R(a(t)?"millisecond":t))?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(t).valueOf())},ei.isBefore=function(e,t){var i=w(e)?e:vt(e);return!(!this.isValid()||!i.isValid())&&("millisecond"===(t=R(a(t)?"millisecond":t))?this.valueOf()<i.valueOf():this.clone().endOf(t).valueOf()<i.valueOf())},ei.isBetween=function(e,t,i,n){return("("===(n=n||"()")[0]?this.isAfter(e,i):!this.isBefore(e,i))&&(")"===n[1]?this.isBefore(t,i):!this.isAfter(t,i))},ei.isSame=function(e,t){var i,n=w(e)?e:vt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t||"millisecond"))?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(t).valueOf()<=i&&i<=this.clone().endOf(t).valueOf()))},ei.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ei.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ei.isValid=function(){return p(this)},ei.lang=zt,ei.locale=Vt,ei.localeData=Ut,ei.max=wt,ei.min=yt,ei.parsingFlags=function(){return u({},f(this))},ei.set=function(e,t){if("object"==typeof e)for(var i=function(e){var t=[];for(var i in e)t.push({unit:i,priority:F[i]});return t.sort((function(e,t){return e.priority-t.priority})),t}(e=P(e)),n=0;n<i.length;n++)this[i[n].unit](e[i[n].unit]);else if(E(this[e=R(e)]))return this[e](t);return this},ei.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ei.subtract=Ht,ei.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ei.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ei.toDate=function(){return new Date(this.valueOf())},ei.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,i=t?this.clone().utc():this;return i.year()<0||9999<i.year()?U(i,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):E(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(i,"Z")):U(i,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ei.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var i="["+e+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",r=t+'[")]';return this.format(i+n+"-MM-DD[T]HH:mm:ss.SSS"+r)},ei.toJSON=function(){return this.isValid()?this.toISOString():null},ei.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ei.unix=function(){return Math.floor(this.valueOf()/1e3)},ei.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ei.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ei.year=ve,ei.isLeapYear=function(){return _e(this.year())},ei.weekYear=function(e){return Kt.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ei.isoWeekYear=function(e){return Kt.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ei.quarter=ei.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ei.month=De,ei.daysInMonth=function(){return Se(this.year(),this.month())},ei.week=ei.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ei.isoWeek=ei.isoWeeks=function(e){var t=Re(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ei.weeksInYear=function(){var e=this.localeData()._week;return Pe(this.year(),e.dow,e.doy)},ei.isoWeeksInYear=function(){return Pe(this.year(),1,4)},ei.date=qt,ei.day=ei.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,i,n=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,i=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=i.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-n,"d")):n},ei.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ei.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=(i=e,n=this.localeData(),"string"==typeof i?n.weekdaysParse(i)%7||7:isNaN(i)?null:i);return this.day(this.day()%7?t:t-7)}return this.day()||7;var i,n},ei.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ei.hour=ei.hours=qe,ei.minute=ei.minutes=Gt,ei.second=ei.seconds=Jt,ei.millisecond=ei.milliseconds=Xt,ei.utcOffset=function(e,t,i){var n,s=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Nt(ae,e)))return this}else Math.abs(e)<16&&!i&&(e*=60);return!this._isUTC&&t&&(n=Tt(this)),this._offset=e,this._isUTC=!0,null!=n&&this.add(n,"m"),s!==e&&(!t||this._changeInProgress?Wt(this,Rt(e-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?s:Tt(this)},ei.utc=function(e){return this.utcOffset(0,e)},ei.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Tt(this),"m")),this},ei.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Nt(oe,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ei.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?vt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ei.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ei.isLocal=function(){return!!this.isValid()&&!this._isUTC},ei.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ei.isUtc=It,ei.isUTC=It,ei.zoneAbbr=function(){return this._isUTC?"UTC":""},ei.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ei.dates=L("dates accessor is deprecated. Use date instead.",qt),ei.months=L("months accessor is deprecated. Use month instead",De),ei.years=L("years accessor is deprecated. Use year instead",ve),ei.zone=L("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),ei.isDSTShifted=L("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!a(this._isDSTShifted))return this._isDSTShifted;var e={};if(b(e,this),(e=_t(e))._a){var t=e._isUTC?g(e._a):vt(e._a);this._isDSTShifted=this.isValid()&&0<k(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted}));var ii=I.prototype;function ni(e,t,i,n){var r=it(),s=g().set(n,t);return r[i](s,e)}function ri(e,t,i){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return ni(e,t,i,"month");var n,r=[];for(n=0;n<12;n++)r[n]=ni(e,n,i,"month");return r}function si(e,t,i,n){"boolean"==typeof e?l(t)&&(i=t,t=void 0):(t=e,e=!1,l(i=t)&&(i=t,t=void 0)),t=t||"";var r,s=it(),o=e?s._week.dow:0;if(null!=i)return ni(t,(i+o)%7,n,"day");var a=[];for(r=0;r<7;r++)a[r]=ni(t,(r+o)%7,n,"day");return a}ii.calendar=function(e,t,i){var n=this._calendar[e]||this._calendar.sameElse;return E(n)?n.call(t,i):n},ii.longDateFormat=function(e){var t=this._longDateFormat[e],i=this._longDateFormat[e.toUpperCase()];return t||!i?t:(this._longDateFormat[e]=i.replace(/MMMM|MM|DD|dddd/g,(function(e){return e.slice(1)})),this._longDateFormat[e])},ii.invalidDate=function(){return this._invalidDate},ii.ordinal=function(e){return this._ordinal.replace("%d",e)},ii.preparse=ti,ii.postformat=ti,ii.relativeTime=function(e,t,i,n){var r=this._relativeTime[i];return E(r)?r(e,t,i,n):r.replace(/%d/i,e)},ii.pastFuture=function(e,t){var i=this._relativeTime[0<e?"future":"past"];return E(i)?i(t):i.replace(/%s/i,t)},ii.set=function(e){var t,i;for(i in e)E(t=e[i])?this[i]=t:this["_"+i]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},ii.months=function(e,t){return e?s(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||ke).test(t)?"format":"standalone"][e.month()]:s(this._months)?this._months:this._months.standalone},ii.monthsShort=function(e,t){return e?s(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[ke.test(t)?"format":"standalone"][e.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ii.monthsParse=function(e,t,i){var n,r,s;if(this._monthsParseExact)return function(e,t,i){var n,r,s,o=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)s=g([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===t?-1!==(r=be.call(this._shortMonthsParse,o))?r:null:-1!==(r=be.call(this._longMonthsParse,o))?r:null:"MMM"===t?-1!==(r=be.call(this._shortMonthsParse,o))||-1!==(r=be.call(this._longMonthsParse,o))?r:null:-1!==(r=be.call(this._longMonthsParse,o))||-1!==(r=be.call(this._shortMonthsParse,o))?r:null}.call(this,e,t,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(r=g([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),i||this._monthsParse[n]||(s="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===t&&this._longMonthsParse[n].test(e))return n;if(i&&"MMM"===t&&this._shortMonthsParse[n].test(e))return n;if(!i&&this._monthsParse[n].test(e))return n}},ii.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||Te.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Ee),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},ii.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||Te.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Ne),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},ii.week=function(e){return Re(e,this._week.dow,this._week.doy).week},ii.firstDayOfYear=function(){return this._week.doy},ii.firstDayOfWeek=function(){return this._week.dow},ii.weekdays=function(e,t){return e?s(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:s(this._weekdays)?this._weekdays:this._weekdays.standalone},ii.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},ii.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},ii.weekdaysParse=function(e,t,i){var n,r,s;if(this._weekdaysParseExact)return function(e,t,i){var n,r,s,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)s=g([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===t?-1!==(r=be.call(this._weekdaysParse,o))?r:null:"ddd"===t?-1!==(r=be.call(this._shortWeekdaysParse,o))?r:null:-1!==(r=be.call(this._minWeekdaysParse,o))?r:null:"dddd"===t?-1!==(r=be.call(this._weekdaysParse,o))||-1!==(r=be.call(this._shortWeekdaysParse,o))||-1!==(r=be.call(this._minWeekdaysParse,o))?r:null:"ddd"===t?-1!==(r=be.call(this._shortWeekdaysParse,o))||-1!==(r=be.call(this._weekdaysParse,o))||-1!==(r=be.call(this._minWeekdaysParse,o))?r:null:-1!==(r=be.call(this._minWeekdaysParse,o))||-1!==(r=be.call(this._weekdaysParse,o))||-1!==(r=be.call(this._shortWeekdaysParse,o))?r:null}.call(this,e,t,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(r=g([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(r,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(r,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(r,"").replace(".",".?")+"$","i")),this._weekdaysParse[n]||(s="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[n]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===t&&this._fullWeekdaysParse[n].test(e))return n;if(i&&"ddd"===t&&this._shortWeekdaysParse[n].test(e))return n;if(i&&"dd"===t&&this._minWeekdaysParse[n].test(e))return n;if(!i&&this._weekdaysParse[n].test(e))return n}},ii.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ye),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},ii.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=He),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ii.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Ve.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ii.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},ii.meridiem=function(e,t,i){return 11<e?i?"pm":"PM":i?"am":"AM"},et("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===S(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=L("moment.lang is deprecated. Use moment.locale instead.",et),r.langData=L("moment.langData is deprecated. Use moment.localeData instead.",it);var oi=Math.abs;function ai(e,t,i,n){var r=Rt(t,i);return e._milliseconds+=n*r._milliseconds,e._days+=n*r._days,e._months+=n*r._months,e._bubble()}function li(e){return e<0?Math.floor(e):Math.ceil(e)}function ci(e){return 4800*e/146097}function di(e){return 146097*e/4800}function hi(e){return function(){return this.as(e)}}var ui=hi("ms"),gi=hi("s"),fi=hi("m"),pi=hi("h"),mi=hi("d"),_i=hi("w"),bi=hi("M"),vi=hi("y");function yi(e){return function(){return this.isValid()?this._data[e]:NaN}}var wi=yi("milliseconds"),Ci=yi("seconds"),Si=yi("minutes"),ki=yi("hours"),xi=yi("days"),Li=yi("months"),Mi=yi("years"),Di=Math.round,Ni={ss:44,s:45,m:45,h:22,d:26,M:11},Ei=Math.abs;function Ti(e){return(0<e)-(e<0)||+e}function Ii(){if(!this.isValid())return this.localeData().invalidDate();var e,t,i=Ei(this._milliseconds)/1e3,n=Ei(this._days),r=Ei(this._months);t=C((e=C(i/60))/60),i%=60,e%=60;var s=C(r/12),o=r%=12,a=n,l=t,c=e,d=i?i.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var u=h<0?"-":"",g=Ti(this._months)!==Ti(h)?"-":"",f=Ti(this._days)!==Ti(h)?"-":"",p=Ti(this._milliseconds)!==Ti(h)?"-":"";return u+"P"+(s?g+s+"Y":"")+(o?g+o+"M":"")+(a?f+a+"D":"")+(l||c||d?"T":"")+(l?p+l+"H":"")+(c?p+c+"M":"")+(d?p+d+"S":"")}var Oi=kt.prototype;return Oi.isValid=function(){return this._isValid},Oi.abs=function(){var e=this._data;return this._milliseconds=oi(this._milliseconds),this._days=oi(this._days),this._months=oi(this._months),e.milliseconds=oi(e.milliseconds),e.seconds=oi(e.seconds),e.minutes=oi(e.minutes),e.hours=oi(e.hours),e.months=oi(e.months),e.years=oi(e.years),this},Oi.add=function(e,t){return ai(this,e,t,1)},Oi.subtract=function(e,t){return ai(this,e,t,-1)},Oi.as=function(e){if(!this.isValid())return NaN;var t,i,n=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+n/864e5,i=this._months+ci(t),"month"===e?i:i/12;switch(t=this._days+Math.round(di(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return 24*t+n/36e5;case"minute":return 1440*t+n/6e4;case"second":return 86400*t+n/1e3;case"millisecond":return Math.floor(864e5*t)+n;default:throw new Error("Unknown unit "+e)}},Oi.asMilliseconds=ui,Oi.asSeconds=gi,Oi.asMinutes=fi,Oi.asHours=pi,Oi.asDays=mi,Oi.asWeeks=_i,Oi.asMonths=bi,Oi.asYears=vi,Oi.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*S(this._months/12):NaN},Oi._bubble=function(){var e,t,i,n,r,s=this._milliseconds,o=this._days,a=this._months,l=this._data;return 0<=s&&0<=o&&0<=a||s<=0&&o<=0&&a<=0||(s+=864e5*li(di(a)+o),a=o=0),l.milliseconds=s%1e3,e=C(s/1e3),l.seconds=e%60,t=C(e/60),l.minutes=t%60,i=C(t/60),l.hours=i%24,a+=r=C(ci(o+=C(i/24))),o-=li(di(r)),n=C(a/12),a%=12,l.days=o,l.months=a,l.years=n,this},Oi.clone=function(){return Rt(this)},Oi.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},Oi.milliseconds=wi,Oi.seconds=Ci,Oi.minutes=Si,Oi.hours=ki,Oi.days=xi,Oi.weeks=function(){return C(this.days()/7)},Oi.months=Li,Oi.years=Mi,Oi.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,i,n,r,s,o,a,l,c,d,h=this.localeData(),u=(t=!e,i=h,n=Rt(this).abs(),r=Di(n.as("s")),s=Di(n.as("m")),o=Di(n.as("h")),a=Di(n.as("d")),l=Di(n.as("M")),c=Di(n.as("y")),(d=r<=Ni.ss&&["s",r]||r<Ni.s&&["ss",r]||s<=1&&["m"]||s<Ni.m&&["mm",s]||o<=1&&["h"]||o<Ni.h&&["hh",o]||a<=1&&["d"]||a<Ni.d&&["dd",a]||l<=1&&["M"]||l<Ni.M&&["MM",l]||c<=1&&["y"]||["yy",c])[2]=t,d[3]=0<+this,d[4]=i,function(e,t,i,n,r){return r.relativeTime(t||1,!!i,e,n)}.apply(null,d));return e&&(u=h.pastFuture(+this,u)),h.postformat(u)},Oi.toISOString=Ii,Oi.toString=Ii,Oi.toJSON=Ii,Oi.locale=Vt,Oi.localeData=Ut,Oi.toIsoString=L("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Ii),Oi.lang=zt,z("X",0,0,"unix"),z("x",0,0,"valueOf"),de("x",se),de("X",/[+-]?\d+(\.\d{1,3})?/),fe("X",(function(e,t,i){i._d=new Date(1e3*parseFloat(e,10))})),fe("x",(function(e,t,i){i._d=new Date(S(e))})),r.version="2.22.1",t=vt,r.fn=ei,r.min=function(){return Ct("isBefore",[].slice.call(arguments,0))},r.max=function(){return Ct("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=g,r.unix=function(e){return vt(1e3*e)},r.months=function(e,t){return ri(e,t,"months")},r.isDate=c,r.locale=et,r.invalid=m,r.duration=Rt,r.isMoment=w,r.weekdays=function(e,t,i){return si(e,t,i,"weekdays")},r.parseZone=function(){return vt.apply(null,arguments).parseZone()},r.localeData=it,r.isDuration=xt,r.monthsShort=function(e,t){return ri(e,t,"monthsShort")},r.weekdaysMin=function(e,t,i){return si(e,t,i,"weekdaysMin")},r.defineLocale=tt,r.updateLocale=function(e,t){if(null!=t){var i,n,r=Ge;null!=(n=Xe(e))&&(r=n._config),(i=new I(t=T(r,t))).parentLocale=Ze[e],Ze[e]=i,et(e)}else null!=Ze[e]&&(null!=Ze[e].parentLocale?Ze[e]=Ze[e].parentLocale:null!=Ze[e]&&delete Ze[e]);return Ze[e]},r.locales=function(){return M(Ze)},r.weekdaysShort=function(e,t,i){return si(e,t,i,"weekdaysShort")},r.normalizeUnits=R,r.relativeTimeRounding=function(e){return void 0===e?Di:"function"==typeof e&&(Di=e,!0)},r.relativeTimeThreshold=function(e,t){return void 0!==Ni[e]&&(void 0===t?Ni[e]:(Ni[e]=t,"s"===e&&(Ni.ss=t-1),!0))},r.calendarFormat=function(e,t){var i=e.diff(t,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"},r.prototype=ei,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},r}()},42786:function(e,t,i){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,i){return e<12?i?"vm":"VM":i?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(30381))},14130:function(e,t,i){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},i={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},n=function(e){return function(n,r,s,o){var a=t(n),l=i[e][t(n)];return 2===a&&(l=l[r?0:1]),l.replace(/%d/i,n)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,i){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:n("s"),ss:n("s"),m:n("m"),mm:n("m"),h:n("h"),hh:n("h"),d:n("d"),dd:n("d"),M:n("M"),MM:n("M"),y:n("y"),yy:n("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(i(30381))},96135:function(e,t,i){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(i(30381))},56440:function(e,t,i){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},i=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,o){var a=i(t),l=n[e][i(t)];return 2===a&&(l=l[r?0:1]),l.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,i){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(i(30381))},47702:function(e,t,i){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(i(30381))},16040:function(e,t,i){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},i={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,i){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return i[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(i(30381))},37100:function(e,t,i){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(i(30381))},30867:function(e,t,i){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},i={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,i,s,o){var a=n(t),l=r[e][n(t)];return 2===a&&(l=l[i?0:1]),l.replace(/%d/i,t)}},o=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,i){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return i[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(i(30381))},31083:function(e,t,i){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,i){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var i=e%10;return e+(t[i]||t[e%100-i]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(i(30381))},9808:function(e,t,i){!function(e){"use strict";function t(e,t,i){return"m"===i?t?"хвіліна":"хвіліну":"h"===i?t?"гадзіна":"гадзіну":e+" "+(n=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[i].split("_"),n%10==1&&n%100!=11?r[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?r[1]:r[2]);var n,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,i){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(i(30381))},68338:function(e,t,i){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,i=e%100;return 0===e?e+"-ев":0===i?e+"-ен":i>10&&i<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(i(30381))},67438:function(e,t,i){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(i(30381))},76225:function(e,t,i){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},i={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(i(30381))},8905:function(e,t,i){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},i={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,i){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(i(30381))},11560:function(e,t,i){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},i={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,i){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(i(30381))},1278:function(e,t,i){!function(e){"use strict";function t(e,t,i){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[i],e)}function i(e){return e>9?i(e%10):e}var n=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(i(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,i){return e<12?"a.m.":"g.m."}})}(i(30381))},80622:function(e,t,i){!function(e){"use strict";function t(e,t,i){var n=e+" ";switch(i){case"ss":return n+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return n+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return n+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return n+(1===e?"dan":"dana");case"MM":return n+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return n+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},2468:function(e,t,i){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var i=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(i="a"),e+i},week:{dow:1,doy:4}})}(i(30381))},5822:function(e,t,i){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),i="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),n=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function o(e,t,i,n){var r=e+" ";switch(i){case"s":return t||n?"pár sekund":"pár sekundami";case"ss":return t||n?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":n?"minutu":"minutou";case"mm":return t||n?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":n?"hodinu":"hodinou";case"hh":return t||n?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||n?"den":"dnem";case"dd":return t||n?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||n?"měsíc":"měsícem";case"MM":return t||n?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||n?"rok":"rokem";case"yy":return t||n?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:i,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},50877:function(e,t,i){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(i(30381))},47373:function(e,t,i){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(i(30381))},24780:function(e,t,i){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},60217:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[i][0]:r[i][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},60894:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[i][0]:r[i][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},59740:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[i][0]:r[i][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},5300:function(e,t,i){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],i=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:i,weekdaysShort:i,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,i){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(i(30381))},50837:function(e,t,i){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,i){return e>11?i?"μμ":"ΜΜ":i?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var i,n=this._calendarEl[e],r=t&&t.hours();return i=n,("undefined"!=typeof Function&&i instanceof Function||"[object Function]"===Object.prototype.toString.call(i))&&(n=n.apply(t)),n.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(i(30381))},78348:function(e,t,i){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(i(30381))},77925:function(e,t,i){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(i(30381))},22243:function(e,t,i){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(i(30381))},46436:function(e,t,i){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(i(30381))},47207:function(e,t,i){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(i(30381))},44175:function(e,t,i){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(i(30381))},76319:function(e,t,i){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(i(30381))},31662:function(e,t,i){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(i(30381))},92915:function(e,t,i){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,i){return e>11?i?"p.t.m.":"P.T.M.":i?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(i(30381))},55251:function(e,t,i){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},96112:function(e,t,i){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(i(30381))},71146:function(e,t,i){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(i(30381))},55655:function(e,t,i){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(i(30381))},5603:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[i][2]?r[i][2]:r[i][1]:n?r[i][0]:r[i][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},77763:function(e,t,i){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},76959:function(e,t,i){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},i={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,i){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return i[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(i(30381))},11897:function(e,t,i){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),i=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function n(e,n,r,s){var o="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":o=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":o=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":o=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":o=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":o=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":o=s?"vuoden":"vuotta"}return function(e,n){return e<10?n?i[e]:t[e]:e}(e,s)+" "+o}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},42549:function(e,t,i){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(i(30381))},94694:function(e,t,i){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},63049:function(e,t,i){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(i(30381))},52330:function(e,t,i){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(i(30381))},94470:function(e,t,i){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,i=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(i(30381))},5044:function(e,t,i){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),i="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(30381))},29295:function(e,t,i){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(i(30381))},2101:function(e,t,i){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(i(30381))},38794:function(e,t,i){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},27884:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return n?r[i][0]:r[i][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(i(30381))},23168:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return n?r[i][0]:r[i][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(i(30381))},95349:function(e,t,i){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},i={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(i(30381))},24206:function(e,t,i){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,i){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?i?'לפנה"צ':"לפני הצהריים":e<18?i?'אחה"צ':"אחרי הצהריים":"בערב"}})}(i(30381))},30094:function(e,t,i){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},i={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},n=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:n,longMonthsParse:n,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(i(30381))},30316:function(e,t,i){!function(e){"use strict";function t(e,t,i){var n=e+" ";switch(i){case"ss":return n+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return n+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return n+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return n+(1===e?"dan":"dana");case"MM":return n+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return n+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},22138:function(e,t,i){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function i(e,t,i,n){var r=e;switch(i){case"s":return n||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(n||t)?" másodperc":" másodperce";case"m":return"egy"+(n||t?" perc":" perce");case"mm":return r+(n||t?" perc":" perce");case"h":return"egy"+(n||t?" óra":" órája");case"hh":return r+(n||t?" óra":" órája");case"d":return"egy"+(n||t?" nap":" napja");case"dd":return r+(n||t?" nap":" napja");case"M":return"egy"+(n||t?" hónap":" hónapja");case"MM":return r+(n||t?" hónap":" hónapja");case"y":return"egy"+(n||t?" év":" éve");case"yy":return r+(n||t?" év":" éve")}return""}function n(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,i){return e<12?!0===i?"de":"DE":!0===i?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return n.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return n.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},11423:function(e,t,i){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(i(30381))},29218:function(e,t,i){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,i){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(i(30381))},90135:function(e,t,i){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function i(e,i,n,r){var s=e+" ";switch(n){case"s":return i||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(i||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return i?"mínúta":"mínútu";case"mm":return t(e)?s+(i||r?"mínútur":"mínútum"):i?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(i||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return i?"dagur":r?"dag":"degi";case"dd":return t(e)?i?s+"dagar":s+(r?"daga":"dögum"):i?s+"dagur":s+(r?"dag":"degi");case"M":return i?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?i?s+"mánuðir":s+(r?"mánuði":"mánuðum"):i?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return i||r?"ár":"ári";case"yy":return t(e)?s+(i||r?"ár":"árum"):s+(i||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:i,ss:i,m:i,mm:i,h:"klukkustund",hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},10150:function(e,t,i){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},90626:function(e,t,i){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},39183:function(e,t,i){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,i){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(i(30381))},24286:function(e,t,i){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,i){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(i(30381))},12105:function(e,t,i){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,i){return"ი"===i?t+"ში":t+i+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(i(30381))},47772:function(e,t,i){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(i(30381))},18758:function(e,t,i){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},i={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,i){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(i(30381))},79282:function(e,t,i){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},i={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(i(30381))},33730:function(e,t,i){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,i){return e<12?"오전":"오후"}})}(i(30381))},1408:function(e,t,i){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},i={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:n,monthsShort:n,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,i){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return i[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(i(30381))},33291:function(e,t,i){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(i(30381))},36841:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[i][0]:r[i][1]}function i(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return i(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return i(e)}return i(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return i(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return i(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},55466:function(e,t,i){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,i){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(i(30381))},57010:function(e,t,i){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function i(e,t,i,n){return t?r(i)[0]:n?r(i)[1]:r(i)[2]}function n(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,o){var a=e+" ";return 1===e?a+i(0,t,s[0],o):t?a+(n(e)?r(s)[1]:r(s)[0]):o?a+r(s)[1]:a+(n(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,i,n){return t?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"},ss:s,m:i,mm:s,h:i,hh:s,d:i,dd:s,M:i,MM:s,y:i,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(i(30381))},37595:function(e,t,i){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function i(e,t,i){return i?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function n(e,n,r){return e+" "+i(t[r],e,n)}function r(e,n,r){return i(t[r],e,n)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:n,m:r,mm:n,h:r,hh:n,d:r,dd:n,M:r,MM:n,y:r,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},39861:function(e,t,i){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,i,n){var r=t.words[n];return 1===n.length?i?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},35493:function(e,t,i){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},95966:function(e,t,i){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,i=e%100;return 0===e?e+"-ев":0===i?e+"-ен":i>10&&i<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(i(30381))},87341:function(e,t,i){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,i){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(i(30381))},5115:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){switch(i){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,i){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(i(30381))},10370:function(e,t,i){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},i={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function n(e,t,i,n){var r="";if(t)switch(i){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(i){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,i){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(i(30381))},41237:function(e,t,i){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,i){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(i(30381))},9847:function(e,t,i){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,i){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(i(30381))},72126:function(e,t,i){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},56165:function(e,t,i){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},i={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(i(30381))},64924:function(e,t,i){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},16744:function(e,t,i){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},i={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,i){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(i(30381))},59814:function(e,t,i){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),i="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(30381))},93901:function(e,t,i){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),i="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?i[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(i(30381))},83877:function(e,t,i){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},92135:function(e,t,i){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var i=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(i="a"),e+i},week:{dow:1,doy:4}})}(i(30381))},15858:function(e,t,i){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},i={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(i(30381))},64495:function(e,t,i){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),i="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),n=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,i){var n=e+" ";switch(i){case"ss":return n+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return n+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return n+(r(e)?"godziny":"godzin");case"ww":return n+(r(e)?"tygodnie":"tygodni");case"MM":return n+(r(e)?"miesiące":"miesięcy");case"yy":return n+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,n){return e?/D MMMM/.test(n)?i[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},57971:function(e,t,i){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(i(30381))},89520:function(e,t,i){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(i(30381))},96459:function(e,t,i){!function(e){"use strict";function t(e,t,i){var n=" ";return(e%100>=20||e>=100&&e%100==0)&&(n=" de "),e+n+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[i]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(i(30381))},21793:function(e,t,i){!function(e){"use strict";function t(e,t,i){return"m"===i?t?"минута":"минуту":e+" "+(n=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[i].split("_"),n%10==1&&n%100!=11?r[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?r[1]:r[2]);var n,r}var i=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:i,longMonthsParse:i,shortMonthsParse:i,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,i){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(i(30381))},40950:function(e,t,i){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],i=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:i,weekdaysShort:i,weekdaysMin:i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,i){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(i(30381))},10490:function(e,t,i){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},90124:function(e,t,i){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,i){return e>11?i?"ප.ව.":"පස් වරු":i?"පෙ.ව.":"පෙර වරු"}})}(i(30381))},64249:function(e,t,i){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),i="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function n(e){return e>1&&e<5}function r(e,t,i,r){var s=e+" ";switch(i){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(n(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(n(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(n(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(n(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(n(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(n(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:i,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},14985:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r=e+" ";switch(i){case"s":return t||n?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||n?"sekundi":"sekundah":e<5?t||n?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||n?"minuti":"minutama":e<5?t||n?"minute":"minutami":t||n?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||n?"uri":"urama":e<5?t||n?"ure":"urami":t||n?"ur":"urami");case"d":return t||n?"en dan":"enim dnem";case"dd":return r+(1===e?t||n?"dan":"dnem":2===e?t||n?"dni":"dnevoma":t||n?"dni":"dnevi");case"M":return t||n?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||n?"mesec":"mesecem":2===e?t||n?"meseca":"mesecema":e<5?t||n?"mesece":"meseci":t||n?"mesecev":"meseci");case"y":return t||n?"eno leto":"enim letom";case"yy":return r+(1===e?t||n?"leto":"letom":2===e?t||n?"leti":"letoma":e<5?t||n?"leta":"leti":t||n?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},51104:function(e,t,i){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,i){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},79915:function(e,t,i){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,i,n){var r=t.words[n];return 1===n.length?i?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},49131:function(e,t,i){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,i,n){var r=t.words[n];return 1===n.length?i?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(i(30381))},85893:function(e,t,i){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,i){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(i(30381))},98760:function(e,t,i){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(i(30381))},91172:function(e,t,i){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(i(30381))},27333:function(e,t,i){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},i={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return i[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,i){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(i(30381))},23110:function(e,t,i){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(i(30381))},52095:function(e,t,i){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(i(30381))},27321:function(e,t,i){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,i){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(i(30381))},9041:function(e,t,i){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,i){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(i(30381))},19005:function(e,t,i){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,i){switch(i){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(i(30381))},75768:function(e,t,i){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(i(30381))},89444:function(e,t,i){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function i(e,i,n,r){var s=function(e){var i=Math.floor(e%1e3/100),n=Math.floor(e%100/10),r=e%10,s="";return i>0&&(s+=t[i]+"vatlh"),n>0&&(s+=(""!==s?" ":"")+t[n]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(n){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:i,m:"wa’ tup",mm:i,h:"wa’ rep",hh:i,d:"wa’ jaj",dd:i,M:"wa’ jar",MM:i,y:"wa’ DIS",yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},72397:function(e,t,i){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,i){return e<12?i?"öö":"ÖÖ":i?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,i){switch(i){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(i(30381))},28254:function(e,t,i){!function(e){"use strict";function t(e,t,i,n){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return n||t?r[i][0]:r[i][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,i){return e>11?i?"d'o":"D'O":i?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(i(30381))},30699:function(e,t,i){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(i(30381))},51106:function(e,t,i){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(i(30381))},9288:function(e,t,i){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,i){var n=100*e+t;return n<600?"يېرىم كېچە":n<900?"سەھەر":n<1130?"چۈشتىن بۇرۇن":n<1230?"چۈش":n<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(i(30381))},67691:function(e,t,i){!function(e){"use strict";function t(e,t,i){return"m"===i?t?"хвилина":"хвилину":"h"===i?t?"година":"годину":e+" "+(n=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[i].split("_"),n%10==1&&n%100!=11?r[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?r[1]:r[2]);var n,r}function i(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var i={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?i.nominative.slice(1,7).concat(i.nominative.slice(0,1)):e?i[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:i.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:i("[Сьогодні "),nextDay:i("[Завтра "),lastDay:i("[Вчора "),nextWeek:i("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return i("[Минулої] dddd [").call(this);case 1:case 2:case 4:return i("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,i){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(i(30381))},13795:function(e,t,i){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],i=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:i,weekdaysShort:i,weekdaysMin:i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,i){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(i(30381))},60588:function(e,t,i){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(i(30381))},6791:function(e,t,i){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(i(30381))},65666:function(e,t,i){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,i){return e<12?i?"sa":"SA":i?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(i(30381))},14378:function(e,t,i){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(i(30381))},7198:function(e,t,i){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(i(30381))},83839:function(e,t,i){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,i){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(i(30381))},55726:function(e,t,i){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,i){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1200?"上午":1200===n?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(i(30381))},99807:function(e,t,i){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,i){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(i(30381))},74152:function(e,t,i){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,i){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(i(30381))},46700:(e,t,i)=>{var n={"./af":42786,"./af.js":42786,"./ar":30867,"./ar-dz":14130,"./ar-dz.js":14130,"./ar-kw":96135,"./ar-kw.js":96135,"./ar-ly":56440,"./ar-ly.js":56440,"./ar-ma":47702,"./ar-ma.js":47702,"./ar-sa":16040,"./ar-sa.js":16040,"./ar-tn":37100,"./ar-tn.js":37100,"./ar.js":30867,"./az":31083,"./az.js":31083,"./be":9808,"./be.js":9808,"./bg":68338,"./bg.js":68338,"./bm":67438,"./bm.js":67438,"./bn":8905,"./bn-bd":76225,"./bn-bd.js":76225,"./bn.js":8905,"./bo":11560,"./bo.js":11560,"./br":1278,"./br.js":1278,"./bs":80622,"./bs.js":80622,"./ca":2468,"./ca.js":2468,"./cs":5822,"./cs.js":5822,"./cv":50877,"./cv.js":50877,"./cy":47373,"./cy.js":47373,"./da":24780,"./da.js":24780,"./de":59740,"./de-at":60217,"./de-at.js":60217,"./de-ch":60894,"./de-ch.js":60894,"./de.js":59740,"./dv":5300,"./dv.js":5300,"./el":50837,"./el.js":50837,"./en-au":78348,"./en-au.js":78348,"./en-ca":77925,"./en-ca.js":77925,"./en-gb":22243,"./en-gb.js":22243,"./en-ie":46436,"./en-ie.js":46436,"./en-il":47207,"./en-il.js":47207,"./en-in":44175,"./en-in.js":44175,"./en-nz":76319,"./en-nz.js":76319,"./en-sg":31662,"./en-sg.js":31662,"./eo":92915,"./eo.js":92915,"./es":55655,"./es-do":55251,"./es-do.js":55251,"./es-mx":96112,"./es-mx.js":96112,"./es-us":71146,"./es-us.js":71146,"./es.js":55655,"./et":5603,"./et.js":5603,"./eu":77763,"./eu.js":77763,"./fa":76959,"./fa.js":76959,"./fi":11897,"./fi.js":11897,"./fil":42549,"./fil.js":42549,"./fo":94694,"./fo.js":94694,"./fr":94470,"./fr-ca":63049,"./fr-ca.js":63049,"./fr-ch":52330,"./fr-ch.js":52330,"./fr.js":94470,"./fy":5044,"./fy.js":5044,"./ga":29295,"./ga.js":29295,"./gd":2101,"./gd.js":2101,"./gl":38794,"./gl.js":38794,"./gom-deva":27884,"./gom-deva.js":27884,"./gom-latn":23168,"./gom-latn.js":23168,"./gu":95349,"./gu.js":95349,"./he":24206,"./he.js":24206,"./hi":30094,"./hi.js":30094,"./hr":30316,"./hr.js":30316,"./hu":22138,"./hu.js":22138,"./hy-am":11423,"./hy-am.js":11423,"./id":29218,"./id.js":29218,"./is":90135,"./is.js":90135,"./it":90626,"./it-ch":10150,"./it-ch.js":10150,"./it.js":90626,"./ja":39183,"./ja.js":39183,"./jv":24286,"./jv.js":24286,"./ka":12105,"./ka.js":12105,"./kk":47772,"./kk.js":47772,"./km":18758,"./km.js":18758,"./kn":79282,"./kn.js":79282,"./ko":33730,"./ko.js":33730,"./ku":1408,"./ku.js":1408,"./ky":33291,"./ky.js":33291,"./lb":36841,"./lb.js":36841,"./lo":55466,"./lo.js":55466,"./lt":57010,"./lt.js":57010,"./lv":37595,"./lv.js":37595,"./me":39861,"./me.js":39861,"./mi":35493,"./mi.js":35493,"./mk":95966,"./mk.js":95966,"./ml":87341,"./ml.js":87341,"./mn":5115,"./mn.js":5115,"./mr":10370,"./mr.js":10370,"./ms":9847,"./ms-my":41237,"./ms-my.js":41237,"./ms.js":9847,"./mt":72126,"./mt.js":72126,"./my":56165,"./my.js":56165,"./nb":64924,"./nb.js":64924,"./ne":16744,"./ne.js":16744,"./nl":93901,"./nl-be":59814,"./nl-be.js":59814,"./nl.js":93901,"./nn":83877,"./nn.js":83877,"./oc-lnc":92135,"./oc-lnc.js":92135,"./pa-in":15858,"./pa-in.js":15858,"./pl":64495,"./pl.js":64495,"./pt":89520,"./pt-br":57971,"./pt-br.js":57971,"./pt.js":89520,"./ro":96459,"./ro.js":96459,"./ru":21793,"./ru.js":21793,"./sd":40950,"./sd.js":40950,"./se":10490,"./se.js":10490,"./si":90124,"./si.js":90124,"./sk":64249,"./sk.js":64249,"./sl":14985,"./sl.js":14985,"./sq":51104,"./sq.js":51104,"./sr":49131,"./sr-cyrl":79915,"./sr-cyrl.js":79915,"./sr.js":49131,"./ss":85893,"./ss.js":85893,"./sv":98760,"./sv.js":98760,"./sw":91172,"./sw.js":91172,"./ta":27333,"./ta.js":27333,"./te":23110,"./te.js":23110,"./tet":52095,"./tet.js":52095,"./tg":27321,"./tg.js":27321,"./th":9041,"./th.js":9041,"./tk":19005,"./tk.js":19005,"./tl-ph":75768,"./tl-ph.js":75768,"./tlh":89444,"./tlh.js":89444,"./tr":72397,"./tr.js":72397,"./tzl":28254,"./tzl.js":28254,"./tzm":51106,"./tzm-latn":30699,"./tzm-latn.js":30699,"./tzm.js":51106,"./ug-cn":9288,"./ug-cn.js":9288,"./uk":67691,"./uk.js":67691,"./ur":13795,"./ur.js":13795,"./uz":6791,"./uz-latn":60588,"./uz-latn.js":60588,"./uz.js":6791,"./vi":65666,"./vi.js":65666,"./x-pseudo":14378,"./x-pseudo.js":14378,"./yo":7198,"./yo.js":7198,"./zh-cn":83839,"./zh-cn.js":83839,"./zh-hk":55726,"./zh-hk.js":55726,"./zh-mo":99807,"./zh-mo.js":99807,"./zh-tw":74152,"./zh-tw.js":74152};function r(e){var t=s(e);return i(t)}function s(e){if(!i.o(n,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return n[e]}r.keys=function(){return Object.keys(n)},r.resolve=s,e.exports=r,r.id=46700},30381:function(e,t,i){(e=i.nmd(e)).exports=function(){"use strict";var t,n;function r(){return t.apply(null,arguments)}function s(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function l(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(a(e,t))return!1;return!0}function c(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function u(e,t){var i,n=[];for(i=0;i<e.length;++i)n.push(t(e[i],i));return n}function g(e,t){for(var i in t)a(t,i)&&(e[i]=t[i]);return a(t,"toString")&&(e.toString=t.toString),a(t,"valueOf")&&(e.valueOf=t.valueOf),e}function f(e,t,i,n){return xt(e,t,i,n,!0).utc()}function p(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function m(e){if(null==e._isValid){var t=p(e),i=n.call(t.parsedDateParts,(function(e){return null!=e})),r=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&i);if(e._strict&&(r=r&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return r;e._isValid=r}return e._isValid}function _(e){var t=f(NaN);return null!=e?g(p(t),e):p(t).userInvalidated=!0,t}n=Array.prototype.some?Array.prototype.some:function(e){var t,i=Object(this),n=i.length>>>0;for(t=0;t<n;t++)if(t in i&&e.call(this,i[t],t,i))return!0;return!1};var b=r.momentProperties=[],v=!1;function y(e,t){var i,n,r;if(c(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),c(t._i)||(e._i=t._i),c(t._f)||(e._f=t._f),c(t._l)||(e._l=t._l),c(t._strict)||(e._strict=t._strict),c(t._tzm)||(e._tzm=t._tzm),c(t._isUTC)||(e._isUTC=t._isUTC),c(t._offset)||(e._offset=t._offset),c(t._pf)||(e._pf=p(t)),c(t._locale)||(e._locale=t._locale),b.length>0)for(i=0;i<b.length;i++)c(r=t[n=b[i]])||(e[n]=r);return e}function w(e){y(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,r.updateOffset(this),v=!1)}function C(e){return e instanceof w||null!=e&&null!=e._isAMomentObject}function S(e){!1===r.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function k(e,t){var i=!0;return g((function(){if(null!=r.deprecationHandler&&r.deprecationHandler(null,e),i){var n,s,o,l=[];for(s=0;s<arguments.length;s++){if(n="","object"==typeof arguments[s]){for(o in n+="\n["+s+"] ",arguments[0])a(arguments[0],o)&&(n+=o+": "+arguments[0][o]+", ");n=n.slice(0,-2)}else n=arguments[s];l.push(n)}S(e+"\nArguments: "+Array.prototype.slice.call(l).join("")+"\n"+(new Error).stack),i=!1}return t.apply(this,arguments)}),t)}var x,L={};function M(e,t){null!=r.deprecationHandler&&r.deprecationHandler(e,t),L[e]||(S(t),L[e]=!0)}function D(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function N(e,t){var i,n=g({},e);for(i in t)a(t,i)&&(o(e[i])&&o(t[i])?(n[i]={},g(n[i],e[i]),g(n[i],t[i])):null!=t[i]?n[i]=t[i]:delete n[i]);for(i in e)a(e,i)&&!a(t,i)&&o(e[i])&&(n[i]=g({},n[i]));return n}function E(e){null!=e&&this.set(e)}r.suppressDeprecationWarnings=!1,r.deprecationHandler=null,x=Object.keys?Object.keys:function(e){var t,i=[];for(t in e)a(e,t)&&i.push(t);return i};function T(e,t,i){var n=""+Math.abs(e),r=t-n.length;return(e>=0?i?"+":"":"-")+Math.pow(10,Math.max(0,r)).toString().substr(1)+n}var I=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,O=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,A={},R={};function P(e,t,i,n){var r=n;"string"==typeof n&&(r=function(){return this[n]()}),e&&(R[e]=r),t&&(R[t[0]]=function(){return T(r.apply(this,arguments),t[1],t[2])}),i&&(R[i]=function(){return this.localeData().ordinal(r.apply(this,arguments),e)})}function F(e,t){return e.isValid()?(t=B(t,e.localeData()),A[t]=A[t]||function(e){var t,i,n,r=e.match(I);for(t=0,i=r.length;t<i;t++)R[r[t]]?r[t]=R[r[t]]:r[t]=(n=r[t]).match(/\[[\s\S]/)?n.replace(/^\[|\]$/g,""):n.replace(/\\/g,"");return function(t){var n,s="";for(n=0;n<i;n++)s+=D(r[n])?r[n].call(t,e):r[n];return s}}(t),A[t](e)):e.localeData().invalidDate()}function B(e,t){var i=5;function n(e){return t.longDateFormat(e)||e}for(O.lastIndex=0;i>=0&&O.test(e);)e=e.replace(O,n),O.lastIndex=0,i-=1;return e}var W={};function Y(e,t){var i=e.toLowerCase();W[i]=W[i+"s"]=W[t]=e}function H(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function j(e){var t,i,n={};for(i in e)a(e,i)&&(t=H(i))&&(n[t]=e[i]);return n}var V={};function z(e,t){V[e]=t}function U(e){return e%4==0&&e%100!=0||e%400==0}function $(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function K(e){var t=+e,i=0;return 0!==t&&isFinite(t)&&(i=$(t)),i}function q(e,t){return function(i){return null!=i?(Z(this,e,i),r.updateOffset(this,t),this):G(this,e)}}function G(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Z(e,t,i){e.isValid()&&!isNaN(i)&&("FullYear"===t&&U(e.year())&&1===e.month()&&29===e.date()?(i=K(i),e._d["set"+(e._isUTC?"UTC":"")+t](i,e.month(),Ce(i,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](i))}var J,Q=/\d/,X=/\d\d/,ee=/\d{3}/,te=/\d{4}/,ie=/[+-]?\d{6}/,ne=/\d\d?/,re=/\d\d\d\d?/,se=/\d\d\d\d\d\d?/,oe=/\d{1,3}/,ae=/\d{1,4}/,le=/[+-]?\d{1,6}/,ce=/\d+/,de=/[+-]?\d+/,he=/Z|[+-]\d\d:?\d\d/gi,ue=/Z|[+-]\d\d(?::?\d\d)?/gi,ge=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function fe(e,t,i){J[e]=D(t)?t:function(e,n){return e&&i?i:t}}function pe(e,t){return a(J,e)?J[e](t._strict,t._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(e,t,i,n,r){return t||i||n||r}))))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}J={};var _e={};function be(e,t){var i,n=t;for("string"==typeof e&&(e=[e]),d(t)&&(n=function(e,i){i[t]=K(e)}),i=0;i<e.length;i++)_e[e[i]]=n}function ve(e,t){be(e,(function(e,i,n,r){n._w=n._w||{},t(e,n._w,n,r)}))}function ye(e,t,i){null!=t&&a(_e,e)&&_e[e](t,i._a,i,e)}var we;function Ce(e,t){if(isNaN(e)||isNaN(t))return NaN;var i,n=(t%(i=12)+i)%i;return e+=(t-n)/12,1===n?U(e)?29:28:31-n%7%2}we=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},P("M",["MM",2],"Mo",(function(){return this.month()+1})),P("MMM",0,0,(function(e){return this.localeData().monthsShort(this,e)})),P("MMMM",0,0,(function(e){return this.localeData().months(this,e)})),Y("month","M"),z("month",8),fe("M",ne),fe("MM",ne,X),fe("MMM",(function(e,t){return t.monthsShortRegex(e)})),fe("MMMM",(function(e,t){return t.monthsRegex(e)})),be(["M","MM"],(function(e,t){t[1]=K(e)-1})),be(["MMM","MMMM"],(function(e,t,i,n){var r=i._locale.monthsParse(e,n,i._strict);null!=r?t[1]=r:p(i).invalidMonth=e}));var Se="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ke="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),xe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Le=ge,Me=ge;function De(e,t,i){var n,r,s,o=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)s=f([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(s,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(s,"").toLocaleLowerCase();return i?"MMM"===t?-1!==(r=we.call(this._shortMonthsParse,o))?r:null:-1!==(r=we.call(this._longMonthsParse,o))?r:null:"MMM"===t?-1!==(r=we.call(this._shortMonthsParse,o))||-1!==(r=we.call(this._longMonthsParse,o))?r:null:-1!==(r=we.call(this._longMonthsParse,o))||-1!==(r=we.call(this._shortMonthsParse,o))?r:null}function Ne(e,t){var i;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=K(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return i=Math.min(e.date(),Ce(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,i),e}function Ee(e){return null!=e?(Ne(this,e),r.updateOffset(this,!0),this):G(this,"Month")}function Te(){function e(e,t){return t.length-e.length}var t,i,n=[],r=[],s=[];for(t=0;t<12;t++)i=f([2e3,t]),n.push(this.monthsShort(i,"")),r.push(this.months(i,"")),s.push(this.months(i,"")),s.push(this.monthsShort(i,""));for(n.sort(e),r.sort(e),s.sort(e),t=0;t<12;t++)n[t]=me(n[t]),r[t]=me(r[t]);for(t=0;t<24;t++)s[t]=me(s[t]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+n.join("|")+")","i")}function Ie(e){return U(e)?366:365}P("Y",0,0,(function(){var e=this.year();return e<=9999?T(e,4):"+"+e})),P(0,["YY",2],0,(function(){return this.year()%100})),P(0,["YYYY",4],0,"year"),P(0,["YYYYY",5],0,"year"),P(0,["YYYYYY",6,!0],0,"year"),Y("year","y"),z("year",1),fe("Y",de),fe("YY",ne,X),fe("YYYY",ae,te),fe("YYYYY",le,ie),fe("YYYYYY",le,ie),be(["YYYYY","YYYYYY"],0),be("YYYY",(function(e,t){t[0]=2===e.length?r.parseTwoDigitYear(e):K(e)})),be("YY",(function(e,t){t[0]=r.parseTwoDigitYear(e)})),be("Y",(function(e,t){t[0]=parseInt(e,10)})),r.parseTwoDigitYear=function(e){return K(e)+(K(e)>68?1900:2e3)};var Oe=q("FullYear",!0);function Ae(e,t,i,n,r,s,o){var a;return e<100&&e>=0?(a=new Date(e+400,t,i,n,r,s,o),isFinite(a.getFullYear())&&a.setFullYear(e)):a=new Date(e,t,i,n,r,s,o),a}function Re(e){var t,i;return e<100&&e>=0?((i=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,i)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function Pe(e,t,i){var n=7+t-i;return-(7+Re(e,0,n).getUTCDay()-t)%7+n-1}function Fe(e,t,i,n,r){var s,o,a=1+7*(t-1)+(7+i-n)%7+Pe(e,n,r);return a<=0?o=Ie(s=e-1)+a:a>Ie(e)?(s=e+1,o=a-Ie(e)):(s=e,o=a),{year:s,dayOfYear:o}}function Be(e,t,i){var n,r,s=Pe(e.year(),t,i),o=Math.floor((e.dayOfYear()-s-1)/7)+1;return o<1?n=o+We(r=e.year()-1,t,i):o>We(e.year(),t,i)?(n=o-We(e.year(),t,i),r=e.year()+1):(r=e.year(),n=o),{week:n,year:r}}function We(e,t,i){var n=Pe(e,t,i),r=Pe(e+1,t,i);return(Ie(e)-n+r)/7}P("w",["ww",2],"wo","week"),P("W",["WW",2],"Wo","isoWeek"),Y("week","w"),Y("isoWeek","W"),z("week",5),z("isoWeek",5),fe("w",ne),fe("ww",ne,X),fe("W",ne),fe("WW",ne,X),ve(["w","ww","W","WW"],(function(e,t,i,n){t[n.substr(0,1)]=K(e)}));function Ye(e,t){return e.slice(t,7).concat(e.slice(0,t))}P("d",0,"do","day"),P("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),P("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),P("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),P("e",0,0,"weekday"),P("E",0,0,"isoWeekday"),Y("day","d"),Y("weekday","e"),Y("isoWeekday","E"),z("day",11),z("weekday",11),z("isoWeekday",11),fe("d",ne),fe("e",ne),fe("E",ne),fe("dd",(function(e,t){return t.weekdaysMinRegex(e)})),fe("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),fe("dddd",(function(e,t){return t.weekdaysRegex(e)})),ve(["dd","ddd","dddd"],(function(e,t,i,n){var r=i._locale.weekdaysParse(e,n,i._strict);null!=r?t.d=r:p(i).invalidWeekday=e})),ve(["d","e","E"],(function(e,t,i,n){t[n]=K(e)}));var He="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),je="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Ve="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ze=ge,Ue=ge,$e=ge;function Ke(e,t,i){var n,r,s,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)s=f([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(s,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(s,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(s,"").toLocaleLowerCase();return i?"dddd"===t?-1!==(r=we.call(this._weekdaysParse,o))?r:null:"ddd"===t?-1!==(r=we.call(this._shortWeekdaysParse,o))?r:null:-1!==(r=we.call(this._minWeekdaysParse,o))?r:null:"dddd"===t?-1!==(r=we.call(this._weekdaysParse,o))||-1!==(r=we.call(this._shortWeekdaysParse,o))||-1!==(r=we.call(this._minWeekdaysParse,o))?r:null:"ddd"===t?-1!==(r=we.call(this._shortWeekdaysParse,o))||-1!==(r=we.call(this._weekdaysParse,o))||-1!==(r=we.call(this._minWeekdaysParse,o))?r:null:-1!==(r=we.call(this._minWeekdaysParse,o))||-1!==(r=we.call(this._weekdaysParse,o))||-1!==(r=we.call(this._shortWeekdaysParse,o))?r:null}function qe(){function e(e,t){return t.length-e.length}var t,i,n,r,s,o=[],a=[],l=[],c=[];for(t=0;t<7;t++)i=f([2e3,1]).day(t),n=me(this.weekdaysMin(i,"")),r=me(this.weekdaysShort(i,"")),s=me(this.weekdays(i,"")),o.push(n),a.push(r),l.push(s),c.push(n),c.push(r),c.push(s);o.sort(e),a.sort(e),l.sort(e),c.sort(e),this._weekdaysRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Ge(){return this.hours()%12||12}function Ze(e,t){P(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function Je(e,t){return t._meridiemParse}P("H",["HH",2],0,"hour"),P("h",["hh",2],0,Ge),P("k",["kk",2],0,(function(){return this.hours()||24})),P("hmm",0,0,(function(){return""+Ge.apply(this)+T(this.minutes(),2)})),P("hmmss",0,0,(function(){return""+Ge.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)})),P("Hmm",0,0,(function(){return""+this.hours()+T(this.minutes(),2)})),P("Hmmss",0,0,(function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)})),Ze("a",!0),Ze("A",!1),Y("hour","h"),z("hour",13),fe("a",Je),fe("A",Je),fe("H",ne),fe("h",ne),fe("k",ne),fe("HH",ne,X),fe("hh",ne,X),fe("kk",ne,X),fe("hmm",re),fe("hmmss",se),fe("Hmm",re),fe("Hmmss",se),be(["H","HH"],3),be(["k","kk"],(function(e,t,i){var n=K(e);t[3]=24===n?0:n})),be(["a","A"],(function(e,t,i){i._isPm=i._locale.isPM(e),i._meridiem=e})),be(["h","hh"],(function(e,t,i){t[3]=K(e),p(i).bigHour=!0})),be("hmm",(function(e,t,i){var n=e.length-2;t[3]=K(e.substr(0,n)),t[4]=K(e.substr(n)),p(i).bigHour=!0})),be("hmmss",(function(e,t,i){var n=e.length-4,r=e.length-2;t[3]=K(e.substr(0,n)),t[4]=K(e.substr(n,2)),t[5]=K(e.substr(r)),p(i).bigHour=!0})),be("Hmm",(function(e,t,i){var n=e.length-2;t[3]=K(e.substr(0,n)),t[4]=K(e.substr(n))})),be("Hmmss",(function(e,t,i){var n=e.length-4,r=e.length-2;t[3]=K(e.substr(0,n)),t[4]=K(e.substr(n,2)),t[5]=K(e.substr(r))}));var Qe=q("Hours",!0);var Xe,et={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Se,monthsShort:ke,week:{dow:0,doy:6},weekdays:He,weekdaysMin:Ve,weekdaysShort:je,meridiemParse:/[ap]\.?m?\.?/i},tt={},it={};function nt(e,t){var i,n=Math.min(e.length,t.length);for(i=0;i<n;i+=1)if(e[i]!==t[i])return i;return n}function rt(e){return e?e.toLowerCase().replace("_","-"):e}function st(t){var n=null;if(void 0===tt[t]&&e&&e.exports)try{n=Xe._abbr,i(46700)("./"+t),ot(n)}catch(e){tt[t]=null}return tt[t]}function ot(e,t){var i;return e&&((i=c(t)?lt(e):at(e,t))?Xe=i:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),Xe._abbr}function at(e,t){if(null!==t){var i,n=et;if(t.abbr=e,null!=tt[e])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=tt[e]._config;else if(null!=t.parentLocale)if(null!=tt[t.parentLocale])n=tt[t.parentLocale]._config;else{if(null==(i=st(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;n=i._config}return tt[e]=new E(N(n,t)),it[e]&&it[e].forEach((function(e){at(e.name,e.config)})),ot(e),tt[e]}return delete tt[e],null}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Xe;if(!s(e)){if(t=st(e))return t;e=[e]}return function(e){for(var t,i,n,r,s=0;s<e.length;){for(t=(r=rt(e[s]).split("-")).length,i=(i=rt(e[s+1]))?i.split("-"):null;t>0;){if(n=st(r.slice(0,t).join("-")))return n;if(i&&i.length>=t&&nt(r,i)>=t-1)break;t--}s++}return Xe}(e)}function ct(e){var t,i=e._a;return i&&-2===p(e).overflow&&(t=i[1]<0||i[1]>11?1:i[2]<1||i[2]>Ce(i[0],i[1])?2:i[3]<0||i[3]>24||24===i[3]&&(0!==i[4]||0!==i[5]||0!==i[6])?3:i[4]<0||i[4]>59?4:i[5]<0||i[5]>59?5:i[6]<0||i[6]>999?6:-1,p(e)._overflowDayOfYear&&(t<0||t>2)&&(t=2),p(e)._overflowWeeks&&-1===t&&(t=7),p(e)._overflowWeekday&&-1===t&&(t=8),p(e).overflow=t),e}var dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ht=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ut=/Z|[+-]\d\d(?::?\d\d)?/,gt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],ft=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((-?\d+)/i,mt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,_t={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function bt(e){var t,i,n,r,s,o,a=e._i,l=dt.exec(a)||ht.exec(a);if(l){for(p(e).iso=!0,t=0,i=gt.length;t<i;t++)if(gt[t][1].exec(l[1])){r=gt[t][0],n=!1!==gt[t][2];break}if(null==r)return void(e._isValid=!1);if(l[3]){for(t=0,i=ft.length;t<i;t++)if(ft[t][1].exec(l[3])){s=(l[2]||" ")+ft[t][0];break}if(null==s)return void(e._isValid=!1)}if(!n&&null!=s)return void(e._isValid=!1);if(l[4]){if(!ut.exec(l[4]))return void(e._isValid=!1);o="Z"}e._f=r+(s||"")+(o||""),St(e)}else e._isValid=!1}function vt(e){var t=parseInt(e,10);return t<=49?2e3+t:t<=999?1900+t:t}function yt(e){var t,i,n,r,s,o,a,l,c=mt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(c){if(i=c[4],n=c[3],r=c[2],s=c[5],o=c[6],a=c[7],l=[vt(i),ke.indexOf(n),parseInt(r,10),parseInt(s,10),parseInt(o,10)],a&&l.push(parseInt(a,10)),t=l,!function(e,t,i){return!e||je.indexOf(e)===new Date(t[0],t[1],t[2]).getDay()||(p(i).weekdayMismatch=!0,i._isValid=!1,!1)}(c[1],t,e))return;e._a=t,e._tzm=function(e,t,i){if(e)return _t[e];if(t)return 0;var n=parseInt(i,10),r=n%100;return(n-r)/100*60+r}(c[8],c[9],c[10]),e._d=Re.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),p(e).rfc2822=!0}else e._isValid=!1}function wt(e,t,i){return null!=e?e:null!=t?t:i}function Ct(e){var t,i,n,s,o,a=[];if(!e._d){for(n=function(e){var t=new Date(r.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[2]&&null==e._a[1]&&function(e){var t,i,n,r,s,o,a,l,c;null!=(t=e._w).GG||null!=t.W||null!=t.E?(s=1,o=4,i=wt(t.GG,e._a[0],Be(Lt(),1,4).year),n=wt(t.W,1),((r=wt(t.E,1))<1||r>7)&&(l=!0)):(s=e._locale._week.dow,o=e._locale._week.doy,c=Be(Lt(),s,o),i=wt(t.gg,e._a[0],c.year),n=wt(t.w,c.week),null!=t.d?((r=t.d)<0||r>6)&&(l=!0):null!=t.e?(r=t.e+s,(t.e<0||t.e>6)&&(l=!0)):r=s),n<1||n>We(i,s,o)?p(e)._overflowWeeks=!0:null!=l?p(e)._overflowWeekday=!0:(a=Fe(i,n,r,s,o),e._a[0]=a.year,e._dayOfYear=a.dayOfYear)}(e),null!=e._dayOfYear&&(o=wt(e._a[0],n[0]),(e._dayOfYear>Ie(o)||0===e._dayOfYear)&&(p(e)._overflowDayOfYear=!0),i=Re(o,0,e._dayOfYear),e._a[1]=i.getUTCMonth(),e._a[2]=i.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=n[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[3]&&0===e._a[4]&&0===e._a[5]&&0===e._a[6]&&(e._nextDay=!0,e._a[3]=0),e._d=(e._useUTC?Re:Ae).apply(null,a),s=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[3]=24),e._w&&void 0!==e._w.d&&e._w.d!==s&&(p(e).weekdayMismatch=!0)}}function St(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],p(e).empty=!0;var t,i,n,s,o,a,l=""+e._i,c=l.length,d=0;for(n=B(e._f,e._locale).match(I)||[],t=0;t<n.length;t++)s=n[t],(i=(l.match(pe(s,e))||[])[0])&&((o=l.substr(0,l.indexOf(i))).length>0&&p(e).unusedInput.push(o),l=l.slice(l.indexOf(i)+i.length),d+=i.length),R[s]?(i?p(e).empty=!1:p(e).unusedTokens.push(s),ye(s,i,e)):e._strict&&!i&&p(e).unusedTokens.push(s);p(e).charsLeftOver=c-d,l.length>0&&p(e).unusedInput.push(l),e._a[3]<=12&&!0===p(e).bigHour&&e._a[3]>0&&(p(e).bigHour=void 0),p(e).parsedDateParts=e._a.slice(0),p(e).meridiem=e._meridiem,e._a[3]=function(e,t,i){var n;return null==i?t:null!=e.meridiemHour?e.meridiemHour(t,i):null!=e.isPM?((n=e.isPM(i))&&t<12&&(t+=12),n||12!==t||(t=0),t):t}(e._locale,e._a[3],e._meridiem),null!==(a=p(e).era)&&(e._a[0]=e._locale.erasConvertYear(a,e._a[0])),Ct(e),ct(e)}else yt(e);else bt(e)}function kt(e){var t=e._i,i=e._f;return e._locale=e._locale||lt(e._l),null===t||void 0===i&&""===t?_({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),C(t)?new w(ct(t)):(h(t)?e._d=t:s(i)?function(e){var t,i,n,r,s,o,a=!1;if(0===e._f.length)return p(e).invalidFormat=!0,void(e._d=new Date(NaN));for(r=0;r<e._f.length;r++)s=0,o=!1,t=y({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[r],St(t),m(t)&&(o=!0),s+=p(t).charsLeftOver,s+=10*p(t).unusedTokens.length,p(t).score=s,a?s<n&&(n=s,i=t):(null==n||s<n||o)&&(n=s,i=t,o&&(a=!0));g(e,i||t)}(e):i?St(e):function(e){var t=e._i;c(t)?e._d=new Date(r.now()):h(t)?e._d=new Date(t.valueOf()):"string"==typeof t?function(e){var t=pt.exec(e._i);null===t?(bt(e),!1===e._isValid&&(delete e._isValid,yt(e),!1===e._isValid&&(delete e._isValid,e._strict?e._isValid=!1:r.createFromInputFallback(e)))):e._d=new Date(+t[1])}(e):s(t)?(e._a=u(t.slice(0),(function(e){return parseInt(e,10)})),Ct(e)):o(t)?function(e){if(!e._d){var t=j(e._i),i=void 0===t.day?t.date:t.day;e._a=u([t.year,t.month,i,t.hour,t.minute,t.second,t.millisecond],(function(e){return e&&parseInt(e,10)})),Ct(e)}}(e):d(t)?e._d=new Date(t):r.createFromInputFallback(e)}(e),m(e)||(e._d=null),e))}function xt(e,t,i,n,r){var a,c={};return!0!==t&&!1!==t||(n=t,t=void 0),!0!==i&&!1!==i||(n=i,i=void 0),(o(e)&&l(e)||s(e)&&0===e.length)&&(e=void 0),c._isAMomentObject=!0,c._useUTC=c._isUTC=r,c._l=i,c._i=e,c._f=t,c._strict=n,(a=new w(ct(kt(c))))._nextDay&&(a.add(1,"d"),a._nextDay=void 0),a}function Lt(e,t,i,n){return xt(e,t,i,n,!1)}r.createFromInputFallback=k("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",(function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))})),r.ISO_8601=function(){},r.RFC_2822=function(){};var Mt=k("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Lt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:_()})),Dt=k("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",(function(){var e=Lt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:_()}));function Nt(e,t){var i,n;if(1===t.length&&s(t[0])&&(t=t[0]),!t.length)return Lt();for(i=t[0],n=1;n<t.length;++n)t[n].isValid()&&!t[n][e](i)||(i=t[n]);return i}var Et=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Tt(e){var t=j(e),i=t.year||0,n=t.quarter||0,r=t.month||0,s=t.week||t.isoWeek||0,o=t.day||0,l=t.hour||0,c=t.minute||0,d=t.second||0,h=t.millisecond||0;this._isValid=function(e){var t,i,n=!1;for(t in e)if(a(e,t)&&(-1===we.call(Et,t)||null!=e[t]&&isNaN(e[t])))return!1;for(i=0;i<Et.length;++i)if(e[Et[i]]){if(n)return!1;parseFloat(e[Et[i]])!==K(e[Et[i]])&&(n=!0)}return!0}(t),this._milliseconds=+h+1e3*d+6e4*c+1e3*l*60*60,this._days=+o+7*s,this._months=+r+3*n+12*i,this._data={},this._locale=lt(),this._bubble()}function It(e){return e instanceof Tt}function Ot(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function At(e,t){P(e,0,0,(function(){var e=this.utcOffset(),i="+";return e<0&&(e=-e,i="-"),i+T(~~(e/60),2)+t+T(~~e%60,2)}))}At("Z",":"),At("ZZ",""),fe("Z",ue),fe("ZZ",ue),be(["Z","ZZ"],(function(e,t,i){i._useUTC=!0,i._tzm=Pt(ue,e)}));var Rt=/([\+\-]|\d\d)/gi;function Pt(e,t){var i,n,r=(t||"").match(e);return null===r?null:0===(n=60*(i=((r[r.length-1]||[])+"").match(Rt)||["-",0,0])[1]+K(i[2]))?0:"+"===i[0]?n:-n}function Ft(e,t){var i,n;return t._isUTC?(i=t.clone(),n=(C(e)||h(e)?e.valueOf():Lt(e).valueOf())-i.valueOf(),i._d.setTime(i._d.valueOf()+n),r.updateOffset(i,!1),i):Lt(e).local()}function Bt(e){return-Math.round(e._d.getTimezoneOffset())}function Wt(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Yt=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ht=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function jt(e,t){var i,n,r,s,o,l,c=e,h=null;return It(e)?c={ms:e._milliseconds,d:e._days,M:e._months}:d(e)||!isNaN(+e)?(c={},t?c[t]=+e:c.milliseconds=+e):(h=Yt.exec(e))?(i="-"===h[1]?-1:1,c={y:0,d:K(h[2])*i,h:K(h[3])*i,m:K(h[4])*i,s:K(h[5])*i,ms:K(Ot(1e3*h[6]))*i}):(h=Ht.exec(e))?(i="-"===h[1]?-1:1,c={y:Vt(h[2],i),M:Vt(h[3],i),w:Vt(h[4],i),d:Vt(h[5],i),h:Vt(h[6],i),m:Vt(h[7],i),s:Vt(h[8],i)}):null==c?c={}:"object"==typeof c&&("from"in c||"to"in c)&&(s=Lt(c.from),o=Lt(c.to),r=s.isValid()&&o.isValid()?(o=Ft(o,s),s.isBefore(o)?l=zt(s,o):((l=zt(o,s)).milliseconds=-l.milliseconds,l.months=-l.months),l):{milliseconds:0,months:0},(c={}).ms=r.milliseconds,c.M=r.months),n=new Tt(c),It(e)&&a(e,"_locale")&&(n._locale=e._locale),It(e)&&a(e,"_isValid")&&(n._isValid=e._isValid),n}function Vt(e,t){var i=e&&parseFloat(e.replace(",","."));return(isNaN(i)?0:i)*t}function zt(e,t){var i={};return i.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(i.months,"M").isAfter(t)&&--i.months,i.milliseconds=+t-+e.clone().add(i.months,"M"),i}function Ut(e,t){return function(i,n){var r;return null===n||isNaN(+n)||(M(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=i,i=n,n=r),$t(this,jt(i,n),e),this}}function $t(e,t,i,n){var s=t._milliseconds,o=Ot(t._days),a=Ot(t._months);e.isValid()&&(n=null==n||n,a&&Ne(e,G(e,"Month")+a*i),o&&Z(e,"Date",G(e,"Date")+o*i),s&&e._d.setTime(e._d.valueOf()+s*i),n&&r.updateOffset(e,o||a))}jt.fn=Tt.prototype,jt.invalid=function(){return jt(NaN)};var Kt=Ut(1,"add"),qt=Ut(-1,"subtract");function Gt(e){return"string"==typeof e||e instanceof String}function Zt(e){return C(e)||h(e)||Gt(e)||d(e)||function(e){var t=s(e),i=!1;return t&&(i=0===e.filter((function(t){return!d(t)&&Gt(e)})).length),t&&i}(e)||function(e){var t,i,n=o(e)&&!l(e),r=!1,s=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(t=0;t<s.length;t+=1)i=s[t],r=r||a(e,i);return n&&r}(e)||null==e}function Jt(e){var t,i=o(e)&&!l(e),n=!1,r=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"];for(t=0;t<r.length;t+=1)n=n||a(e,r[t]);return i&&n}function Qt(e,t){if(e.date()<t.date())return-Qt(t,e);var i=12*(t.year()-e.year())+(t.month()-e.month()),n=e.clone().add(i,"months");return-(i+(t-n<0?(t-n)/(n-e.clone().add(i-1,"months")):(t-n)/(e.clone().add(i+1,"months")-n)))||0}function Xt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var ei=k("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function ti(){return this._locale}var ii=1e3,ni=6e4,ri=36e5,si=126227808e5;function oi(e,t){return(e%t+t)%t}function ai(e,t,i){return e<100&&e>=0?new Date(e+400,t,i)-si:new Date(e,t,i).valueOf()}function li(e,t,i){return e<100&&e>=0?Date.UTC(e+400,t,i)-si:Date.UTC(e,t,i)}function ci(e,t){return t.erasAbbrRegex(e)}function di(){var e,t,i=[],n=[],r=[],s=[],o=this.eras();for(e=0,t=o.length;e<t;++e)n.push(me(o[e].name)),i.push(me(o[e].abbr)),r.push(me(o[e].narrow)),s.push(me(o[e].name)),s.push(me(o[e].abbr)),s.push(me(o[e].narrow));this._erasRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+n.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+i.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+r.join("|")+")","i")}function hi(e,t){P(0,[e,e.length],0,t)}function ui(e,t,i,n,r){var s;return null==e?Be(this,n,r).year:(t>(s=We(e,n,r))&&(t=s),gi.call(this,e,t,i,n,r))}function gi(e,t,i,n,r){var s=Fe(e,t,i,n,r),o=Re(s.year,0,s.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}P("N",0,0,"eraAbbr"),P("NN",0,0,"eraAbbr"),P("NNN",0,0,"eraAbbr"),P("NNNN",0,0,"eraName"),P("NNNNN",0,0,"eraNarrow"),P("y",["y",1],"yo","eraYear"),P("y",["yy",2],0,"eraYear"),P("y",["yyy",3],0,"eraYear"),P("y",["yyyy",4],0,"eraYear"),fe("N",ci),fe("NN",ci),fe("NNN",ci),fe("NNNN",(function(e,t){return t.erasNameRegex(e)})),fe("NNNNN",(function(e,t){return t.erasNarrowRegex(e)})),be(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,i,n){var r=i._locale.erasParse(e,n,i._strict);r?p(i).era=r:p(i).invalidEra=e})),fe("y",ce),fe("yy",ce),fe("yyy",ce),fe("yyyy",ce),fe("yo",(function(e,t){return t._eraYearOrdinalRegex||ce})),be(["y","yy","yyy","yyyy"],0),be(["yo"],(function(e,t,i,n){var r;i._locale._eraYearOrdinalRegex&&(r=e.match(i._locale._eraYearOrdinalRegex)),i._locale.eraYearOrdinalParse?t[0]=i._locale.eraYearOrdinalParse(e,r):t[0]=parseInt(e,10)})),P(0,["gg",2],0,(function(){return this.weekYear()%100})),P(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),hi("gggg","weekYear"),hi("ggggg","weekYear"),hi("GGGG","isoWeekYear"),hi("GGGGG","isoWeekYear"),Y("weekYear","gg"),Y("isoWeekYear","GG"),z("weekYear",1),z("isoWeekYear",1),fe("G",de),fe("g",de),fe("GG",ne,X),fe("gg",ne,X),fe("GGGG",ae,te),fe("gggg",ae,te),fe("GGGGG",le,ie),fe("ggggg",le,ie),ve(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,i,n){t[n.substr(0,2)]=K(e)})),ve(["gg","GG"],(function(e,t,i,n){t[n]=r.parseTwoDigitYear(e)})),P("Q",0,"Qo","quarter"),Y("quarter","Q"),z("quarter",7),fe("Q",Q),be("Q",(function(e,t){t[1]=3*(K(e)-1)})),P("D",["DD",2],"Do","date"),Y("date","D"),z("date",9),fe("D",ne),fe("DD",ne,X),fe("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),be(["D","DD"],2),be("Do",(function(e,t){t[2]=K(e.match(ne)[0])}));var fi=q("Date",!0);P("DDD",["DDDD",3],"DDDo","dayOfYear"),Y("dayOfYear","DDD"),z("dayOfYear",4),fe("DDD",oe),fe("DDDD",ee),be(["DDD","DDDD"],(function(e,t,i){i._dayOfYear=K(e)})),P("m",["mm",2],0,"minute"),Y("minute","m"),z("minute",14),fe("m",ne),fe("mm",ne,X),be(["m","mm"],4);var pi=q("Minutes",!1);P("s",["ss",2],0,"second"),Y("second","s"),z("second",15),fe("s",ne),fe("ss",ne,X),be(["s","ss"],5);var mi,_i,bi=q("Seconds",!1);for(P("S",0,0,(function(){return~~(this.millisecond()/100)})),P(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),P(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),P(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),P(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),P(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),P(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),Y("millisecond","ms"),z("millisecond",16),fe("S",oe,Q),fe("SS",oe,X),fe("SSS",oe,ee),mi="SSSS";mi.length<=9;mi+="S")fe(mi,ce);function vi(e,t){t[6]=K(1e3*("0."+e))}for(mi="S";mi.length<=9;mi+="S")be(mi,vi);_i=q("Milliseconds",!1),P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");var yi=w.prototype;function wi(e){return e}yi.add=Kt,yi.calendar=function(e,t){1===arguments.length&&(arguments[0]?Zt(arguments[0])?(e=arguments[0],t=void 0):Jt(arguments[0])&&(t=arguments[0],e=void 0):(e=void 0,t=void 0));var i=e||Lt(),n=Ft(i,this).startOf("day"),s=r.calendarFormat(this,n)||"sameElse",o=t&&(D(t[s])?t[s].call(this,i):t[s]);return this.format(o||this.localeData().calendar(s,this,Lt(i)))},yi.clone=function(){return new w(this)},yi.diff=function(e,t,i){var n,r,s;if(!this.isValid())return NaN;if(!(n=Ft(e,this)).isValid())return NaN;switch(r=6e4*(n.utcOffset()-this.utcOffset()),t=H(t)){case"year":s=Qt(this,n)/12;break;case"month":s=Qt(this,n);break;case"quarter":s=Qt(this,n)/3;break;case"second":s=(this-n)/1e3;break;case"minute":s=(this-n)/6e4;break;case"hour":s=(this-n)/36e5;break;case"day":s=(this-n-r)/864e5;break;case"week":s=(this-n-r)/6048e5;break;default:s=this-n}return i?s:$(s)},yi.endOf=function(e){var t,i;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?li:ai,e){case"year":t=i(this.year()+1,0,1)-1;break;case"quarter":t=i(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=i(this.year(),this.month()+1,1)-1;break;case"week":t=i(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=i(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=ri-oi(t+(this._isUTC?0:this.utcOffset()*ni),ri)-1;break;case"minute":t=this._d.valueOf(),t+=ni-oi(t,ni)-1;break;case"second":t=this._d.valueOf(),t+=ii-oi(t,ii)-1}return this._d.setTime(t),r.updateOffset(this,!0),this},yi.format=function(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=F(this,e);return this.localeData().postformat(t)},yi.from=function(e,t){return this.isValid()&&(C(e)&&e.isValid()||Lt(e).isValid())?jt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},yi.fromNow=function(e){return this.from(Lt(),e)},yi.to=function(e,t){return this.isValid()&&(C(e)&&e.isValid()||Lt(e).isValid())?jt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},yi.toNow=function(e){return this.to(Lt(),e)},yi.get=function(e){return D(this[e=H(e)])?this[e]():this},yi.invalidAt=function(){return p(this).overflow},yi.isAfter=function(e,t){var i=C(e)?e:Lt(e);return!(!this.isValid()||!i.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(t).valueOf())},yi.isBefore=function(e,t){var i=C(e)?e:Lt(e);return!(!this.isValid()||!i.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()<i.valueOf():this.clone().endOf(t).valueOf()<i.valueOf())},yi.isBetween=function(e,t,i,n){var r=C(e)?e:Lt(e),s=C(t)?t:Lt(t);return!!(this.isValid()&&r.isValid()&&s.isValid())&&("("===(n=n||"()")[0]?this.isAfter(r,i):!this.isBefore(r,i))&&(")"===n[1]?this.isBefore(s,i):!this.isAfter(s,i))},yi.isSame=function(e,t){var i,n=C(e)?e:Lt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=H(t)||"millisecond")?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(t).valueOf()<=i&&i<=this.clone().endOf(t).valueOf()))},yi.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},yi.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},yi.isValid=function(){return m(this)},yi.lang=ei,yi.locale=Xt,yi.localeData=ti,yi.max=Dt,yi.min=Mt,yi.parsingFlags=function(){return g({},p(this))},yi.set=function(e,t){if("object"==typeof e){var i,n=function(e){var t,i=[];for(t in e)a(e,t)&&i.push({unit:t,priority:V[t]});return i.sort((function(e,t){return e.priority-t.priority})),i}(e=j(e));for(i=0;i<n.length;i++)this[n[i].unit](e[n[i].unit])}else if(D(this[e=H(e)]))return this[e](t);return this},yi.startOf=function(e){var t,i;if(void 0===(e=H(e))||"millisecond"===e||!this.isValid())return this;switch(i=this._isUTC?li:ai,e){case"year":t=i(this.year(),0,1);break;case"quarter":t=i(this.year(),this.month()-this.month()%3,1);break;case"month":t=i(this.year(),this.month(),1);break;case"week":t=i(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=i(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=i(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=oi(t+(this._isUTC?0:this.utcOffset()*ni),ri);break;case"minute":t=this._d.valueOf(),t-=oi(t,ni);break;case"second":t=this._d.valueOf(),t-=oi(t,ii)}return this._d.setTime(t),r.updateOffset(this,!0),this},yi.subtract=qt,yi.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},yi.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},yi.toDate=function(){return new Date(this.valueOf())},yi.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,i=t?this.clone().utc():this;return i.year()<0||i.year()>9999?F(i,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):D(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",F(i,"Z")):F(i,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},yi.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,i,n="moment",r="";return this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",r="Z"),e="["+n+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY","-MM-DD[T]HH:mm:ss.SSS",i=r+'[")]',this.format(e+t+"-MM-DD[T]HH:mm:ss.SSS"+i)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(yi[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),yi.toJSON=function(){return this.isValid()?this.toISOString():null},yi.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},yi.unix=function(){return Math.floor(this.valueOf()/1e3)},yi.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},yi.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},yi.eraName=function(){var e,t,i,n=this.localeData().eras();for(e=0,t=n.length;e<t;++e){if(i=this.clone().startOf("day").valueOf(),n[e].since<=i&&i<=n[e].until)return n[e].name;if(n[e].until<=i&&i<=n[e].since)return n[e].name}return""},yi.eraNarrow=function(){var e,t,i,n=this.localeData().eras();for(e=0,t=n.length;e<t;++e){if(i=this.clone().startOf("day").valueOf(),n[e].since<=i&&i<=n[e].until)return n[e].narrow;if(n[e].until<=i&&i<=n[e].since)return n[e].narrow}return""},yi.eraAbbr=function(){var e,t,i,n=this.localeData().eras();for(e=0,t=n.length;e<t;++e){if(i=this.clone().startOf("day").valueOf(),n[e].since<=i&&i<=n[e].until)return n[e].abbr;if(n[e].until<=i&&i<=n[e].since)return n[e].abbr}return""},yi.eraYear=function(){var e,t,i,n,s=this.localeData().eras();for(e=0,t=s.length;e<t;++e)if(i=s[e].since<=s[e].until?1:-1,n=this.clone().startOf("day").valueOf(),s[e].since<=n&&n<=s[e].until||s[e].until<=n&&n<=s[e].since)return(this.year()-r(s[e].since).year())*i+s[e].offset;return this.year()},yi.year=Oe,yi.isLeapYear=function(){return U(this.year())},yi.weekYear=function(e){return ui.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},yi.isoWeekYear=function(e){return ui.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},yi.quarter=yi.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},yi.month=Ee,yi.daysInMonth=function(){return Ce(this.year(),this.month())},yi.week=yi.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},yi.isoWeek=yi.isoWeeks=function(e){var t=Be(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},yi.weeksInYear=function(){var e=this.localeData()._week;return We(this.year(),e.dow,e.doy)},yi.weeksInWeekYear=function(){var e=this.localeData()._week;return We(this.weekYear(),e.dow,e.doy)},yi.isoWeeksInYear=function(){return We(this.year(),1,4)},yi.isoWeeksInISOWeekYear=function(){return We(this.isoWeekYear(),1,4)},yi.date=fi,yi.day=yi.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},yi.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},yi.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},yi.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},yi.hour=yi.hours=Qe,yi.minute=yi.minutes=pi,yi.second=yi.seconds=bi,yi.millisecond=yi.milliseconds=_i,yi.utcOffset=function(e,t,i){var n,s=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Pt(ue,e)))return this}else Math.abs(e)<16&&!i&&(e*=60);return!this._isUTC&&t&&(n=Bt(this)),this._offset=e,this._isUTC=!0,null!=n&&this.add(n,"m"),s!==e&&(!t||this._changeInProgress?$t(this,jt(e-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?s:Bt(this)},yi.utc=function(e){return this.utcOffset(0,e)},yi.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Bt(this),"m")),this},yi.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Pt(he,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},yi.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Lt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},yi.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},yi.isLocal=function(){return!!this.isValid()&&!this._isUTC},yi.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},yi.isUtc=Wt,yi.isUTC=Wt,yi.zoneAbbr=function(){return this._isUTC?"UTC":""},yi.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},yi.dates=k("dates accessor is deprecated. Use date instead.",fi),yi.months=k("months accessor is deprecated. Use month instead",Ee),yi.years=k("years accessor is deprecated. Use year instead",Oe),yi.zone=k("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()})),yi.isDSTShifted=k("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!c(this._isDSTShifted))return this._isDSTShifted;var e,t={};return y(t,this),(t=kt(t))._a?(e=t._isUTC?f(t._a):Lt(t._a),this._isDSTShifted=this.isValid()&&function(e,t,i){var n,r=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),o=0;for(n=0;n<r;n++)(i&&e[n]!==t[n]||!i&&K(e[n])!==K(t[n]))&&o++;return o+s}(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}));var Ci=E.prototype;function Si(e,t,i,n){var r=lt(),s=f().set(n,t);return r[i](s,e)}function ki(e,t,i){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return Si(e,t,i,"month");var n,r=[];for(n=0;n<12;n++)r[n]=Si(e,n,i,"month");return r}function xi(e,t,i,n){"boolean"==typeof e?(d(t)&&(i=t,t=void 0),t=t||""):(i=t=e,e=!1,d(t)&&(i=t,t=void 0),t=t||"");var r,s=lt(),o=e?s._week.dow:0,a=[];if(null!=i)return Si(t,(i+o)%7,n,"day");for(r=0;r<7;r++)a[r]=Si(t,(r+o)%7,n,"day");return a}Ci.calendar=function(e,t,i){var n=this._calendar[e]||this._calendar.sameElse;return D(n)?n.call(t,i):n},Ci.longDateFormat=function(e){var t=this._longDateFormat[e],i=this._longDateFormat[e.toUpperCase()];return t||!i?t:(this._longDateFormat[e]=i.match(I).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])},Ci.invalidDate=function(){return this._invalidDate},Ci.ordinal=function(e){return this._ordinal.replace("%d",e)},Ci.preparse=wi,Ci.postformat=wi,Ci.relativeTime=function(e,t,i,n){var r=this._relativeTime[i];return D(r)?r(e,t,i,n):r.replace(/%d/i,e)},Ci.pastFuture=function(e,t){var i=this._relativeTime[e>0?"future":"past"];return D(i)?i(t):i.replace(/%s/i,t)},Ci.set=function(e){var t,i;for(i in e)a(e,i)&&(D(t=e[i])?this[i]=t:this["_"+i]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Ci.eras=function(e,t){var i,n,s,o=this._eras||lt("en")._eras;for(i=0,n=o.length;i<n;++i){switch(typeof o[i].since){case"string":s=r(o[i].since).startOf("day"),o[i].since=s.valueOf()}switch(typeof o[i].until){case"undefined":o[i].until=1/0;break;case"string":s=r(o[i].until).startOf("day").valueOf(),o[i].until=s.valueOf()}}return o},Ci.erasParse=function(e,t,i){var n,r,s,o,a,l=this.eras();for(e=e.toUpperCase(),n=0,r=l.length;n<r;++n)if(s=l[n].name.toUpperCase(),o=l[n].abbr.toUpperCase(),a=l[n].narrow.toUpperCase(),i)switch(t){case"N":case"NN":case"NNN":if(o===e)return l[n];break;case"NNNN":if(s===e)return l[n];break;case"NNNNN":if(a===e)return l[n]}else if([s,o,a].indexOf(e)>=0)return l[n]},Ci.erasConvertYear=function(e,t){var i=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*i},Ci.erasAbbrRegex=function(e){return a(this,"_erasAbbrRegex")||di.call(this),e?this._erasAbbrRegex:this._erasRegex},Ci.erasNameRegex=function(e){return a(this,"_erasNameRegex")||di.call(this),e?this._erasNameRegex:this._erasRegex},Ci.erasNarrowRegex=function(e){return a(this,"_erasNarrowRegex")||di.call(this),e?this._erasNarrowRegex:this._erasRegex},Ci.months=function(e,t){return e?s(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||xe).test(t)?"format":"standalone"][e.month()]:s(this._months)?this._months:this._months.standalone},Ci.monthsShort=function(e,t){return e?s(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[xe.test(t)?"format":"standalone"][e.month()]:s(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Ci.monthsParse=function(e,t,i){var n,r,s;if(this._monthsParseExact)return De.call(this,e,t,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(r=f([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),i||this._monthsParse[n]||(s="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[n]=new RegExp(s.replace(".",""),"i")),i&&"MMMM"===t&&this._longMonthsParse[n].test(e))return n;if(i&&"MMM"===t&&this._shortMonthsParse[n].test(e))return n;if(!i&&this._monthsParse[n].test(e))return n}},Ci.monthsRegex=function(e){return this._monthsParseExact?(a(this,"_monthsRegex")||Te.call(this),e?this._monthsStrictRegex:this._monthsRegex):(a(this,"_monthsRegex")||(this._monthsRegex=Me),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Ci.monthsShortRegex=function(e){return this._monthsParseExact?(a(this,"_monthsRegex")||Te.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(a(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Ci.week=function(e){return Be(e,this._week.dow,this._week.doy).week},Ci.firstDayOfYear=function(){return this._week.doy},Ci.firstDayOfWeek=function(){return this._week.dow},Ci.weekdays=function(e,t){var i=s(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Ye(i,this._week.dow):e?i[e.day()]:i},Ci.weekdaysMin=function(e){return!0===e?Ye(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Ci.weekdaysShort=function(e){return!0===e?Ye(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Ci.weekdaysParse=function(e,t,i){var n,r,s;if(this._weekdaysParseExact)return Ke.call(this,e,t,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(r=f([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(s="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[n]=new RegExp(s.replace(".",""),"i")),i&&"dddd"===t&&this._fullWeekdaysParse[n].test(e))return n;if(i&&"ddd"===t&&this._shortWeekdaysParse[n].test(e))return n;if(i&&"dd"===t&&this._minWeekdaysParse[n].test(e))return n;if(!i&&this._weekdaysParse[n].test(e))return n}},Ci.weekdaysRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,"_weekdaysRegex")||(this._weekdaysRegex=ze),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Ci.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ue),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Ci.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||qe.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=$e),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Ci.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Ci.meridiem=function(e,t,i){return e>11?i?"pm":"PM":i?"am":"AM"},ot("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===K(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=k("moment.lang is deprecated. Use moment.locale instead.",ot),r.langData=k("moment.langData is deprecated. Use moment.localeData instead.",lt);var Li=Math.abs;function Mi(e,t,i,n){var r=jt(t,i);return e._milliseconds+=n*r._milliseconds,e._days+=n*r._days,e._months+=n*r._months,e._bubble()}function Di(e){return e<0?Math.floor(e):Math.ceil(e)}function Ni(e){return 4800*e/146097}function Ei(e){return 146097*e/4800}function Ti(e){return function(){return this.as(e)}}var Ii=Ti("ms"),Oi=Ti("s"),Ai=Ti("m"),Ri=Ti("h"),Pi=Ti("d"),Fi=Ti("w"),Bi=Ti("M"),Wi=Ti("Q"),Yi=Ti("y");function Hi(e){return function(){return this.isValid()?this._data[e]:NaN}}var ji=Hi("milliseconds"),Vi=Hi("seconds"),zi=Hi("minutes"),Ui=Hi("hours"),$i=Hi("days"),Ki=Hi("months"),qi=Hi("years");var Gi=Math.round,Zi={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Ji(e,t,i,n,r){return r.relativeTime(t||1,!!i,e,n)}var Qi=Math.abs;function Xi(e){return(e>0)-(e<0)||+e}function en(){if(!this.isValid())return this.localeData().invalidDate();var e,t,i,n,r,s,o,a,l=Qi(this._milliseconds)/1e3,c=Qi(this._days),d=Qi(this._months),h=this.asSeconds();return h?(e=$(l/60),t=$(e/60),l%=60,e%=60,i=$(d/12),d%=12,n=l?l.toFixed(3).replace(/\.?0+$/,""):"",r=h<0?"-":"",s=Xi(this._months)!==Xi(h)?"-":"",o=Xi(this._days)!==Xi(h)?"-":"",a=Xi(this._milliseconds)!==Xi(h)?"-":"",r+"P"+(i?s+i+"Y":"")+(d?s+d+"M":"")+(c?o+c+"D":"")+(t||e||l?"T":"")+(t?a+t+"H":"")+(e?a+e+"M":"")+(l?a+n+"S":"")):"P0D"}var tn=Tt.prototype;return tn.isValid=function(){return this._isValid},tn.abs=function(){var e=this._data;return this._milliseconds=Li(this._milliseconds),this._days=Li(this._days),this._months=Li(this._months),e.milliseconds=Li(e.milliseconds),e.seconds=Li(e.seconds),e.minutes=Li(e.minutes),e.hours=Li(e.hours),e.months=Li(e.months),e.years=Li(e.years),this},tn.add=function(e,t){return Mi(this,e,t,1)},tn.subtract=function(e,t){return Mi(this,e,t,-1)},tn.as=function(e){if(!this.isValid())return NaN;var t,i,n=this._milliseconds;if("month"===(e=H(e))||"quarter"===e||"year"===e)switch(t=this._days+n/864e5,i=this._months+Ni(t),e){case"month":return i;case"quarter":return i/3;case"year":return i/12}else switch(t=this._days+Math.round(Ei(this._months)),e){case"week":return t/7+n/6048e5;case"day":return t+n/864e5;case"hour":return 24*t+n/36e5;case"minute":return 1440*t+n/6e4;case"second":return 86400*t+n/1e3;case"millisecond":return Math.floor(864e5*t)+n;default:throw new Error("Unknown unit "+e)}},tn.asMilliseconds=Ii,tn.asSeconds=Oi,tn.asMinutes=Ai,tn.asHours=Ri,tn.asDays=Pi,tn.asWeeks=Fi,tn.asMonths=Bi,tn.asQuarters=Wi,tn.asYears=Yi,tn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*K(this._months/12):NaN},tn._bubble=function(){var e,t,i,n,r,s=this._milliseconds,o=this._days,a=this._months,l=this._data;return s>=0&&o>=0&&a>=0||s<=0&&o<=0&&a<=0||(s+=864e5*Di(Ei(a)+o),o=0,a=0),l.milliseconds=s%1e3,e=$(s/1e3),l.seconds=e%60,t=$(e/60),l.minutes=t%60,i=$(t/60),l.hours=i%24,o+=$(i/24),a+=r=$(Ni(o)),o-=Di(Ei(r)),n=$(a/12),a%=12,l.days=o,l.months=a,l.years=n,this},tn.clone=function(){return jt(this)},tn.get=function(e){return e=H(e),this.isValid()?this[e+"s"]():NaN},tn.milliseconds=ji,tn.seconds=Vi,tn.minutes=zi,tn.hours=Ui,tn.days=$i,tn.weeks=function(){return $(this.days()/7)},tn.months=Ki,tn.years=qi,tn.humanize=function(e,t){if(!this.isValid())return this.localeData().invalidDate();var i,n,r=!1,s=Zi;return"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(r=e),"object"==typeof t&&(s=Object.assign({},Zi,t),null!=t.s&&null==t.ss&&(s.ss=t.s-1)),n=function(e,t,i,n){var r=jt(e).abs(),s=Gi(r.as("s")),o=Gi(r.as("m")),a=Gi(r.as("h")),l=Gi(r.as("d")),c=Gi(r.as("M")),d=Gi(r.as("w")),h=Gi(r.as("y")),u=s<=i.ss&&["s",s]||s<i.s&&["ss",s]||o<=1&&["m"]||o<i.m&&["mm",o]||a<=1&&["h"]||a<i.h&&["hh",a]||l<=1&&["d"]||l<i.d&&["dd",l];return null!=i.w&&(u=u||d<=1&&["w"]||d<i.w&&["ww",d]),(u=u||c<=1&&["M"]||c<i.M&&["MM",c]||h<=1&&["y"]||["yy",h])[2]=t,u[3]=+e>0,u[4]=n,Ji.apply(null,u)}(this,!r,s,i=this.localeData()),r&&(n=i.pastFuture(+this,n)),i.postformat(n)},tn.toISOString=en,tn.toString=en,tn.toJSON=en,tn.locale=Xt,tn.localeData=ti,tn.toIsoString=k("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",en),tn.lang=ei,P("X",0,0,"unix"),P("x",0,0,"valueOf"),fe("x",de),fe("X",/[+-]?\d+(\.\d{1,3})?/),be("X",(function(e,t,i){i._d=new Date(1e3*parseFloat(e))})),be("x",(function(e,t,i){i._d=new Date(K(e))})),r.version="2.29.1",t=Lt,r.fn=yi,r.min=function(){return Nt("isBefore",[].slice.call(arguments,0))},r.max=function(){return Nt("isAfter",[].slice.call(arguments,0))},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(e){return Lt(1e3*e)},r.months=function(e,t){return ki(e,t,"months")},r.isDate=h,r.locale=ot,r.invalid=_,r.duration=jt,r.isMoment=C,r.weekdays=function(e,t,i){return xi(e,t,i,"weekdays")},r.parseZone=function(){return Lt.apply(null,arguments).parseZone()},r.localeData=lt,r.isDuration=It,r.monthsShort=function(e,t){return ki(e,t,"monthsShort")},r.weekdaysMin=function(e,t,i){return xi(e,t,i,"weekdaysMin")},r.defineLocale=at,r.updateLocale=function(e,t){if(null!=t){var i,n,r=et;null!=tt[e]&&null!=tt[e].parentLocale?tt[e].set(N(tt[e]._config,t)):(null!=(n=st(e))&&(r=n._config),t=N(r,t),null==n&&(t.abbr=e),(i=new E(t)).parentLocale=tt[e],tt[e]=i),ot(e)}else null!=tt[e]&&(null!=tt[e].parentLocale?(tt[e]=tt[e].parentLocale,e===ot()&&ot(e)):null!=tt[e]&&delete tt[e]);return tt[e]},r.locales=function(){return x(tt)},r.weekdaysShort=function(e,t,i){return xi(e,t,i,"weekdaysShort")},r.normalizeUnits=H,r.relativeTimeRounding=function(e){return void 0===e?Gi:"function"==typeof e&&(Gi=e,!0)},r.relativeTimeThreshold=function(e,t){return void 0!==Zi[e]&&(void 0===t?Zi[e]:(Zi[e]=t,"s"===e&&(Zi.ss=t-1),!0))},r.calendarFormat=function(e,t){var i=e.diff(t,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"},r.prototype=yi,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()},50158:(e,t,i)=>{var n;self.MonacoEnvironment=(n={editorWorkerService:"editor.worker.js",json:"json.worker.js"},{getWorkerUrl:function(e,t){var r=i.p,s=(r?r.replace(/\/$/,"")+"/":"")+n[t];if(/^((http:)|(https:)|(file:)|(\/\/))/.test(s)){var o=String(window.location),a=o.substr(0,o.length-window.location.hash.length-window.location.search.length-window.location.pathname.length);if(s.substring(0,a.length)!==a){var l=new Blob(["/*"+t+'*/importScripts("'+s+'");'],{type:"application/javascript"});return URL.createObjectURL(l)}}return s}}),i(29477),i(17355),i(17084),i(84594),i(62015),i(9093),i(53832),i(64494),i(89098),i(76522),i(18728),i(42834),i(7441),i(93391),i(62943),i(23111),i(76798),i(42698),i(62097),i(92729),i(10365),i(25217),i(19646),i(83554),i(80638),i(97830),i(42408),i(34800),i(38486),i(55027),i(40517),i(97720),i(78944),i(98936),i(4454),i(81955),i(78694),i(24993),i(15662),i(19720),i(77847),i(31725),i(70185),i(43497),i(99453),i(60661),e.exports=i(34935),i(72323)},36640:(e,t,i)=>{var n;self.MonacoEnvironment=(n={editorWorkerService:"editor.worker.js",json:"json.worker.js"},{getWorkerUrl:function(e,t){var r=i.p,s=(r?r.replace(/\/$/,"")+"/":"")+n[t];if(/^((http:)|(https:)|(file:)|(\/\/))/.test(s)){var o=String(window.location),a=o.substr(0,o.length-window.location.hash.length-window.location.search.length-window.location.pathname.length);if(s.substring(0,a.length)!==a){var l=new Blob(["/*"+t+'*/importScripts("'+s+'");'],{type:"application/javascript"});return URL.createObjectURL(l)}}return s}}),i(29477),i(17355),i(17084),i(84594),i(62015),i(9093),i(53832),i(64494),i(89098),i(76522),i(18728),i(42834),i(7441),i(93391),i(62943),i(23111),i(76798),i(42698),i(62097),i(92729),i(10365),i(25217),i(19646),i(83554),i(80638),i(97830),i(42408),i(34800),i(38486),i(55027),i(40517),i(97720),i(78944),i(98936),i(4454),i(81955),i(78694),i(24993),i(15662),i(19720),i(77847),i(31725),i(70185),i(43497),i(99453),i(60661),e.exports=i(98368),i(72323)},16268:(e,t,i)=>{"use strict";i.d(t,{px:()=>s,WP:()=>o,fX:()=>a,ie:()=>l,mX:()=>c,un:()=>h,vU:()=>u,Pf:()=>g,i7:()=>f,G6:()=>p,MG:()=>m,zc:()=>_,X5:()=>b,$W:()=>v});var n=i(4669);class r{constructor(){this._zoomLevel=0,this._lastZoomLevelChangeTime=0,this._onDidChangeZoomLevel=new n.Q5,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event,this._zoomFactor=1}getZoomLevel(){return this._zoomLevel}getTimeSinceLastZoomLevelChanged(){return Date.now()-this._lastZoomLevelChangeTime}getZoomFactor(){return this._zoomFactor}getPixelRatio(){let e=document.createElement("canvas").getContext("2d");return(window.devicePixelRatio||1)/(e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1)}}function s(){return r.INSTANCE.getZoomLevel()}function o(){return r.INSTANCE.getTimeSinceLastZoomLevelChanged()}function a(e){return r.INSTANCE.onDidChangeZoomLevel(e)}function l(){return r.INSTANCE.getZoomFactor()}function c(){return r.INSTANCE.getPixelRatio()}r.INSTANCE=new r;const d=navigator.userAgent,h=d.indexOf("Edge/")>=0,u=d.indexOf("Firefox")>=0,g=d.indexOf("AppleWebKit")>=0,f=d.indexOf("Chrome")>=0,p=!f&&d.indexOf("Safari")>=0,m=!f&&!p&&g,_=d.indexOf("iPad")>=0||p&&navigator.maxTouchPoints>0,b=h&&d.indexOf("WebView/")>=0,v=window.matchMedia&&window.matchMedia("(display-mode: standalone)").matches},10161:(e,t,i)=>{"use strict";i.d(t,{D:()=>s});var n=i(16268),r=i(1432);const s={clipboard:{writeText:r.tY||document.queryCommandSupported&&document.queryCommandSupported("copy")||!!(navigator&&navigator.clipboard&&navigator.clipboard.writeText),readText:r.tY||!!(navigator&&navigator.clipboard&&navigator.clipboard.readText),richText:(()=>{if(n.un){let e=navigator.userAgent.indexOf("Edge/"),t=parseInt(navigator.userAgent.substring(e+5,navigator.userAgent.indexOf(".",e)),10);if(!t||t>=12&&t<=16)return!1}return!0})()},keyboard:r.tY||n.$W?0:navigator.keyboard||n.G6?1:2,touch:"ontouchstart"in window||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0,pointerEvents:window.PointerEvent&&("ontouchstart"in window||window.navigator.maxTouchPoints>0||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0)}},23547:(e,t,i)=>{"use strict";i.d(t,{go:()=>n,TN:()=>r,P$:()=>s});const n={RESOURCES:"ResourceURLs",DOWNLOAD_URL:"DownloadURL",FILES:"Files",TEXT:"text/plain"};class r{constructor(e){this.data=e}update(){}getData(){return this.data}}const s={CurrentDragAndDropData:void 0}},65321:(e,t,i)=>{"use strict";i.d(t,{PO:()=>p,ZF:()=>m,Uw:()=>_,pv:()=>v,cn:()=>y,PT:()=>w,IV:()=>C,GK:()=>S,og:()=>k,nm:()=>L,mu:()=>D,Gw:()=>N,Lo:()=>E,qV:()=>T,j_:()=>I,RE:()=>O,lI:()=>A,jL:()=>R,Y_:()=>Y,Dx:()=>H,D6:()=>j,xQ:()=>U,i:()=>$,DI:()=>K,w:()=>q,FK:()=>G,If:()=>Z,wn:()=>J,jg:()=>Q,Fx:()=>X,uU:()=>ee,OO:()=>ie,Ay:()=>ne,vY:()=>re,dS:()=>se,fk:()=>le,uN:()=>ce,Re:()=>de,tw:()=>he,zB:()=>ue,vL:()=>ge,_0:()=>fe,go:()=>me,R3:()=>_e,mc:()=>ve,$:()=>Ce,$Z:()=>Se,Cp:()=>ke,eJ:()=>xe,H$:()=>Le,Uh:()=>Me,V3:()=>De,jt:()=>Ne,uD:()=>Ee,wY:()=>Te});var n=i(16268),r=i(4850),s=i(59069),o=i(23938),a=i(15393),l=i(17301),c=i(4669),d=i(5976),h=i(1432),u=i(9488),g=i(66663),f=i(10161);function p(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function m(e){e.parentNode&&e.parentNode.removeChild(e)}function _(e){for(;e;){if(e===document.body)return!0;e=e.parentNode||e.host}return!1}const b=new class{hasClass(e,t){return Boolean(t)&&e.classList&&e.classList.contains(t)}addClasses(e,...t){t.forEach((t=>t.split(" ").forEach((t=>this.addClass(e,t)))))}addClass(e,t){t&&e.classList&&e.classList.add(t)}removeClass(e,t){t&&e.classList&&e.classList.remove(t)}removeClasses(e,...t){t.forEach((t=>t.split(" ").forEach((t=>this.removeClass(e,t)))))}toggleClass(e,t,i){e.classList&&e.classList.toggle(t,i)}},v=b.hasClass.bind(b),y=b.addClass.bind(b),w=b.addClasses.bind(b),C=b.removeClass.bind(b),S=b.removeClasses.bind(b),k=b.toggleClass.bind(b);class x{constructor(e,t,i,n){this._node=e,this._type=t,this._handler=i,this._options=n||!1,this._node.addEventListener(this._type,this._handler,this._options)}dispose(){this._handler&&(this._node.removeEventListener(this._type,this._handler,this._options),this._node=null,this._handler=null)}}function L(e,t,i,n){return new x(e,t,i,n)}function M(e){return function(t){return e(new o.n(t))}}let D=function(e,t,i,n){let r=i;return"click"===t||"mousedown"===t?r=M(i):"keydown"!==t&&"keypress"!==t&&"keyup"!==t||(r=function(e){return function(t){return e(new s.y(t))}}(i)),L(e,t,r,n)},N=function(e,t,i){return E(e,M(t),i)};function E(e,t,i){return L(e,h.gn&&f.D.pointerEvents?he.POINTER_DOWN:he.MOUSE_DOWN,t,i)}function T(e,t,i){return L(e,h.gn&&f.D.pointerEvents?he.POINTER_UP:he.MOUSE_UP,t,i)}function I(e,t){return L(e,"mouseout",(i=>{let n=i.relatedTarget;for(;n&&n!==e;)n=n.parentNode;n!==e&&t(i)}))}function O(e,t){return L(e,"pointerout",(i=>{let n=i.relatedTarget;for(;n&&n!==e;)n=n.parentNode;n!==e&&t(i)}))}let A,R,P=null;class F{constructor(e,t=0){this._runner=e,this.priority=t,this._canceled=!1}dispose(){this._canceled=!0}execute(){if(!this._canceled)try{this._runner()}catch(e){(0,l.dL)(e)}}static sort(e,t){return t.priority-e.priority}}!function(){let e=[],t=null,i=!1,n=!1,r=()=>{for(i=!1,t=e,e=[],n=!0;t.length>0;)t.sort(F.sort),t.shift().execute();n=!1};R=(t,n=0)=>{let s=new F(t,n);return e.push(s),i||(i=!0,function(e){if(!P){const e=e=>setTimeout((()=>e((new Date).getTime())),0);P=self.requestAnimationFrame||self.msRequestAnimationFrame||self.webkitRequestAnimationFrame||self.mozRequestAnimationFrame||self.oRequestAnimationFrame||e}P.call(self,e)}(r)),s},A=(e,i)=>{if(n){let n=new F(e,i);return t.push(n),n}return R(e,i)}}();const B=function(e,t){return t};class W extends d.JT{constructor(e,t,i,n=B,r=16){super();let s=null,o=0,l=this._register(new a._F),c=()=>{o=(new Date).getTime(),i(s),s=null};this._register(L(e,t,(e=>{s=n(s,e);let t=(new Date).getTime()-o;t>=r?(l.cancel(),c()):l.setIfNotSet(c,r-t)})))}}function Y(e,t,i,n,r){return new W(e,t,i,n,r)}function H(e){return document.defaultView.getComputedStyle(e,null)}function j(e){if(e!==document.body)return new z(e.clientWidth,e.clientHeight);if(h.gn&&window.visualViewport){const e=window.visualViewport.width,t=window.visualViewport.height-(n.$W?24:0);return new z(e,t)}if(window.innerWidth&&window.innerHeight)return new z(window.innerWidth,window.innerHeight);if(document.body&&document.body.clientWidth&&document.body.clientHeight)return new z(document.body.clientWidth,document.body.clientHeight);if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientHeight)return new z(document.documentElement.clientWidth,document.documentElement.clientHeight);throw new Error("Unable to figure out browser width and height")}class V{static convertToPixels(e,t){return parseFloat(t)||0}static getDimension(e,t,i){let n=H(e),r="0";return n&&(r=n.getPropertyValue?n.getPropertyValue(t):n.getAttribute(i)),V.convertToPixels(e,r)}static getBorderLeftWidth(e){return V.getDimension(e,"border-left-width","borderLeftWidth")}static getBorderRightWidth(e){return V.getDimension(e,"border-right-width","borderRightWidth")}static getBorderTopWidth(e){return V.getDimension(e,"border-top-width","borderTopWidth")}static getBorderBottomWidth(e){return V.getDimension(e,"border-bottom-width","borderBottomWidth")}static getPaddingLeft(e){return V.getDimension(e,"padding-left","paddingLeft")}static getPaddingRight(e){return V.getDimension(e,"padding-right","paddingRight")}static getPaddingTop(e){return V.getDimension(e,"padding-top","paddingTop")}static getPaddingBottom(e){return V.getDimension(e,"padding-bottom","paddingBottom")}static getMarginLeft(e){return V.getDimension(e,"margin-left","marginLeft")}static getMarginTop(e){return V.getDimension(e,"margin-top","marginTop")}static getMarginRight(e){return V.getDimension(e,"margin-right","marginRight")}static getMarginBottom(e){return V.getDimension(e,"margin-bottom","marginBottom")}}class z{constructor(e,t){this.width=e,this.height=t}}function U(e){let t=e.offsetParent,i=e.offsetTop,n=e.offsetLeft;for(;null!==(e=e.parentNode)&&e!==document.body&&e!==document.documentElement;){i-=e.scrollTop;const r=te(e)?null:H(e);r&&(n-="rtl"!==r.direction?e.scrollLeft:-e.scrollLeft),e===t&&(n+=V.getBorderLeftWidth(e),i+=V.getBorderTopWidth(e),i+=e.offsetTop,n+=e.offsetLeft,t=e.offsetParent)}return{left:n,top:i}}function $(e){let t=e.getBoundingClientRect();return{left:t.left+K.scrollX,top:t.top+K.scrollY,width:t.width,height:t.height}}const K=new class{get scrollX(){return"number"==typeof window.scrollX?window.scrollX:document.body.scrollLeft+document.documentElement.scrollLeft}get scrollY(){return"number"==typeof window.scrollY?window.scrollY:document.body.scrollTop+document.documentElement.scrollTop}};function q(e){let t=V.getMarginLeft(e)+V.getMarginRight(e);return e.offsetWidth+t}function G(e){let t=V.getBorderLeftWidth(e)+V.getBorderRightWidth(e),i=V.getPaddingLeft(e)+V.getPaddingRight(e);return e.offsetWidth-t-i}function Z(e){let t=V.getBorderTopWidth(e)+V.getBorderBottomWidth(e),i=V.getPaddingTop(e)+V.getPaddingBottom(e);return e.offsetHeight-t-i}function J(e){let t=V.getMarginTop(e)+V.getMarginBottom(e);return e.offsetHeight+t}function Q(e,t){for(;e;){if(e===t)return!0;e=e.parentNode}return!1}function X(e,t,i){for(;e&&e.nodeType===e.ELEMENT_NODE;){if(v(e,t))return e;if(i)if("string"==typeof i){if(v(e,i))return null}else if(e===i)return null;e=e.parentNode}return null}function ee(e,t,i){return!!X(e,t,i)}function te(e){return e&&!!e.host&&!!e.mode}function ie(e){return!!ne(e)}function ne(e){for(;e.parentNode;){if(e===document.body)return null;e=e.parentNode}return te(e)?e:null}function re(){let e=document.activeElement;for(;null==e?void 0:e.shadowRoot;)e=e.shadowRoot.activeElement;return e}function se(e=document.getElementsByTagName("head")[0]){let t=document.createElement("style");return t.type="text/css",t.media="screen",e.appendChild(t),t}let oe=null;function ae(){return oe||(oe=se()),oe}function le(e,t,i=ae()){i&&t&&i.sheet.insertRule(e+"{"+t+"}",0)}function ce(e,t=ae()){if(!t)return;let i=function(e){return e&&e.sheet&&e.sheet.rules?e.sheet.rules:e&&e.sheet&&e.sheet.cssRules?e.sheet.cssRules:[]}(t),n=[];for(let t=0;t<i.length;t++)-1!==i[t].selectorText.indexOf(e)&&n.push(t);for(let e=n.length-1;e>=0;e--)t.sheet.deleteRule(n[e])}function de(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&1===e.nodeType&&"string"==typeof e.nodeName}const he={CLICK:"click",AUXCLICK:"auxclick",DBLCLICK:"dblclick",MOUSE_UP:"mouseup",MOUSE_DOWN:"mousedown",MOUSE_OVER:"mouseover",MOUSE_MOVE:"mousemove",MOUSE_OUT:"mouseout",MOUSE_ENTER:"mouseenter",MOUSE_LEAVE:"mouseleave",MOUSE_WHEEL:n.un?"mousewheel":"wheel",POINTER_UP:"pointerup",POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",CONTEXT_MENU:"contextmenu",WHEEL:"wheel",KEY_DOWN:"keydown",KEY_PRESS:"keypress",KEY_UP:"keyup",LOAD:"load",BEFORE_UNLOAD:"beforeunload",UNLOAD:"unload",ABORT:"abort",ERROR:"error",RESIZE:"resize",SCROLL:"scroll",FULLSCREEN_CHANGE:"fullscreenchange",WK_FULLSCREEN_CHANGE:"webkitfullscreenchange",SELECT:"select",CHANGE:"change",SUBMIT:"submit",RESET:"reset",FOCUS:"focus",FOCUS_IN:"focusin",FOCUS_OUT:"focusout",BLUR:"blur",INPUT:"input",STORAGE:"storage",DRAG_START:"dragstart",DRAG:"drag",DRAG_ENTER:"dragenter",DRAG_LEAVE:"dragleave",DRAG_OVER:"dragover",DROP:"drop",DRAG_END:"dragend",ANIMATION_START:n.Pf?"webkitAnimationStart":"animationstart",ANIMATION_END:n.Pf?"webkitAnimationEnd":"animationend",ANIMATION_ITERATION:n.Pf?"webkitAnimationIteration":"animationiteration"},ue={stop:function(e,t){e.preventDefault?e.preventDefault():e.returnValue=!1,t&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)}};function ge(e){let t=[];for(let i=0;e&&e.nodeType===e.ELEMENT_NODE;i++)t[i]=e.scrollTop,e=e.parentNode;return t}function fe(e,t){for(let i=0;e&&e.nodeType===e.ELEMENT_NODE;i++)e.scrollTop!==t[i]&&(e.scrollTop=t[i]),e=e.parentNode}class pe extends d.JT{constructor(e){super(),this._onDidFocus=this._register(new c.Q5),this.onDidFocus=this._onDidFocus.event,this._onDidBlur=this._register(new c.Q5),this.onDidBlur=this._onDidBlur.event;let t=Q(document.activeElement,e),i=!1;const n=()=>{i=!1,t||(t=!0,this._onDidFocus.fire())},s=()=>{t&&(i=!0,window.setTimeout((()=>{i&&(i=!1,t=!1,this._onDidBlur.fire())}),0))};this._refreshStateHandler=()=>{Q(document.activeElement,e)!==t&&(t?s():n())},this._register((0,r.j)(e,he.FOCUS,!0)(n)),this._register((0,r.j)(e,he.BLUR,!0)(s))}}function me(e){return new pe(e)}function _e(e,...t){return t.forEach((t=>e.appendChild(t))),t[t.length-1]}const be=/([\w\-]+)?(#([\w\-]+))?((\.([\w\-]+))*)/;function ve(e,...t){e.innerText="",(0,u.kX)(t).forEach((t=>{t instanceof Node?e.appendChild(t):e.appendChild(document.createTextNode(t))}))}var ye;function we(e,t,i,...n){let r=be.exec(t);if(!r)throw new Error("Bad use of emmet");i=Object.assign({},i||{});let s,o=r[1]||"div";return s=e!==ye.HTML?document.createElementNS(e,o):document.createElement(o),r[3]&&(s.id=r[3]),r[4]&&(s.className=r[4].replace(/\./g," ").trim()),Object.keys(i).forEach((e=>{const t=i[e];void 0!==t&&(/^on\w+$/.test(e)?s[e]=t:"selected"===e?t&&s.setAttribute(e,"true"):s.setAttribute(e,t))})),(0,u.kX)(n).forEach((e=>{e instanceof Node?s.appendChild(e):s.appendChild(document.createTextNode(e))})),s}function Ce(e,t,...i){return we(ye.HTML,e,t,...i)}function Se(...e){for(let t of e)t.style.display="",t.removeAttribute("aria-hidden")}function ke(...e){for(let t of e)t.style.display="none",t.setAttribute("aria-hidden","true")}function xe(e){if(e&&e.hasAttribute("tabIndex")){if(document.activeElement===e){let t=function(e,t){for(;e&&e.nodeType===e.ELEMENT_NODE;){if(e instanceof HTMLElement&&e.hasAttribute("tabIndex"))return e;e=e.parentNode}return null}(e.parentElement);t&&t.focus()}e.removeAttribute("tabindex")}}function Le(e){return Array.prototype.slice.call(document.getElementsByTagName(e),0)}function Me(e){const t=window.devicePixelRatio*e;return Math.max(1,Math.floor(t))/window.devicePixelRatio}function De(e){if(h.tY||n.X5)window.open(e);else{let t=window.open();t&&(t.opener=null,t.location.href=e)}}function Ne(e){const t=()=>{e(),i=R(t)};let i=R(t);return(0,d.OF)((()=>i.dispose()))}function Ee(e){return e&&g.l.vscodeRemote===e.scheme?g.W.rewrite(e):e}function Te(e){return e?`url('${Ee(e).toString(!0).replace(/'/g,"%27")}')`:"url('')"}!function(e){e.HTML="http://www.w3.org/1999/xhtml",e.SVG="http://www.w3.org/2000/svg"}(ye||(ye={})),Ce.SVG=function(e,t,...i){return we(ye.SVG,e,t,...i)},g.W.setPreferredWebSchema(/^https:/.test(window.location.href)?"https":"http")},4850:(e,t,i)=>{"use strict";i.d(t,{j:()=>r,s:()=>s});var n=i(4669);const r=(e,t,i)=>{const r=e=>s.fire(e),s=new n.Q5({onFirstListenerAdd:()=>{e.addEventListener(t,r,i)},onLastListenerRemove:()=>{e.removeEventListener(t,r,i)}});return s.event};function s(e){return n.ju.map(e,(e=>(e.preventDefault(),e.stopPropagation(),e)))}},38626:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r,X:()=>s});var n=i(65321);class r{constructor(e){this.domNode=e,this._maxWidth=-1,this._width=-1,this._height=-1,this._top=-1,this._left=-1,this._bottom=-1,this._right=-1,this._fontFamily="",this._fontWeight="",this._fontSize=-1,this._fontFeatureSettings="",this._lineHeight=-1,this._letterSpacing=-100,this._className="",this._display="",this._position="",this._visibility="",this._backgroundColor="",this._layerHint=!1,this._contain="none",this._boxShadow=""}setMaxWidth(e){this._maxWidth!==e&&(this._maxWidth=e,this.domNode.style.maxWidth=this._maxWidth+"px")}setWidth(e){this._width!==e&&(this._width=e,this.domNode.style.width=this._width+"px")}setHeight(e){this._height!==e&&(this._height=e,this.domNode.style.height=this._height+"px")}setTop(e){this._top!==e&&(this._top=e,this.domNode.style.top=this._top+"px")}unsetTop(){-1!==this._top&&(this._top=-1,this.domNode.style.top="")}setLeft(e){this._left!==e&&(this._left=e,this.domNode.style.left=this._left+"px")}setBottom(e){this._bottom!==e&&(this._bottom=e,this.domNode.style.bottom=this._bottom+"px")}setRight(e){this._right!==e&&(this._right=e,this.domNode.style.right=this._right+"px")}setFontFamily(e){this._fontFamily!==e&&(this._fontFamily=e,this.domNode.style.fontFamily=this._fontFamily)}setFontWeight(e){this._fontWeight!==e&&(this._fontWeight=e,this.domNode.style.fontWeight=this._fontWeight)}setFontSize(e){this._fontSize!==e&&(this._fontSize=e,this.domNode.style.fontSize=this._fontSize+"px")}setFontFeatureSettings(e){this._fontFeatureSettings!==e&&(this._fontFeatureSettings=e,this.domNode.style.fontFeatureSettings=this._fontFeatureSettings)}setLineHeight(e){this._lineHeight!==e&&(this._lineHeight=e,this.domNode.style.lineHeight=this._lineHeight+"px")}setLetterSpacing(e){this._letterSpacing!==e&&(this._letterSpacing=e,this.domNode.style.letterSpacing=this._letterSpacing+"px")}setClassName(e){this._className!==e&&(this._className=e,this.domNode.className=this._className)}toggleClassName(e,t){n.og(this.domNode,e,t),this._className=this.domNode.className}setDisplay(e){this._display!==e&&(this._display=e,this.domNode.style.display=this._display)}setPosition(e){this._position!==e&&(this._position=e,this.domNode.style.position=this._position)}setVisibility(e){this._visibility!==e&&(this._visibility=e,this.domNode.style.visibility=this._visibility)}setBackgroundColor(e){this._backgroundColor!==e&&(this._backgroundColor=e,this.domNode.style.backgroundColor=this._backgroundColor)}setLayerHinting(e){this._layerHint!==e&&(this._layerHint=e,this.domNode.style.transform=this._layerHint?"translate3d(0px, 0px, 0px)":"")}setBoxShadow(e){this._boxShadow!==e&&(this._boxShadow=e,this.domNode.style.boxShadow=e)}setContain(e){this._contain!==e&&(this._contain=e,this.domNode.style.contain=this._contain)}setAttribute(e,t){this.domNode.setAttribute(e,t)}removeAttribute(e){this.domNode.removeAttribute(e)}appendChild(e){this.domNode.appendChild(e.domNode)}removeChild(e){this.domNode.removeChild(e.domNode)}}function s(e){return new r(e)}},48764:(e,t,i)=>{"use strict";i.d(t,{IY:()=>r,BO:()=>s,az:()=>o});var n=i(65321);function r(e,t={}){const i=o(t);return i.textContent=e,i}function s(e,t={}){const i=o(t);return l(i,function(e){const t={type:1,children:[]};let i=0,n=t;const r=[],s=new a(e);for(;!s.eos();){let e=s.next();const t="\\"===e&&0!==c(s.peek());if(t&&(e=s.next()),t||0===c(e)||e!==s.peek())if("\n"===e)2===n.type&&(n=r.pop()),n.children.push({type:7});else if(2!==n.type){const t={type:2,content:e};n.children.push(t),r.push(n),n=t}else n.content+=e;else{s.advance(),2===n.type&&(n=r.pop());const t=c(e);if(n.type===t||5===n.type&&6===t)n=r.pop();else{const e={type:t,children:[]};5===t&&(e.index=i,i++),n.children.push(e),r.push(n),n=e}}}return 2===n.type&&(n=r.pop()),r.length,t}(e),t.actionHandler),i}function o(e){const t=e.inline?"span":"div",i=document.createElement(t);return e.className&&(i.className=e.className),i}class a{constructor(e){this.source=e,this.index=0}eos(){return this.index>=this.source.length}next(){const e=this.peek();return this.advance(),e}peek(){return this.source[this.index]}advance(){this.index++}}function l(e,t,i){let r;if(2===t.type)r=document.createTextNode(t.content||"");else if(3===t.type)r=document.createElement("b");else if(4===t.type)r=document.createElement("i");else if(5===t.type&&i){const e=document.createElement("a");e.href="#",i.disposeables.add(n.mu(e,"click",(e=>{i.callback(String(t.index),e)}))),r=e}else 7===t.type?r=document.createElement("br"):1===t.type&&(r=e);r&&e!==r&&e.appendChild(r),r&&Array.isArray(t.children)&&t.children.forEach((e=>{l(r,e,i)}))}function c(e){switch(e){case"*":return 3;case"_":return 4;case"[":return 5;case"]":return 6;default:return 0}}},57974:(e,t,i)=>{"use strict";i.d(t,{e:()=>c,Z:()=>d});var n=i(65321),r=i(1432),s=i(70262),o=i(23938),a=i(5976),l=i(10161);function c(e,t){let i=new o.n(t);return i.preventDefault(),{leftButton:i.leftButton,buttons:i.buttons,posx:i.posx,posy:i.posy}}class d{constructor(){this._hooks=new a.SL,this._mouseMoveEventMerger=null,this._mouseMoveCallback=null,this._onStopCallback=null}dispose(){this.stopMonitoring(!1),this._hooks.dispose()}stopMonitoring(e){if(!this.isMonitoring())return;this._hooks.clear(),this._mouseMoveEventMerger=null,this._mouseMoveCallback=null;const t=this._onStopCallback;this._onStopCallback=null,e&&t&&t()}isMonitoring(){return!!this._mouseMoveEventMerger}startMonitoring(e,t,i,a,c){if(this.isMonitoring())return;this._mouseMoveEventMerger=i,this._mouseMoveCallback=a,this._onStopCallback=c;const d=s.E.getSameOriginWindowChain(),h=r.gn&&l.D.pointerEvents?"pointermove":"mousemove",u=r.gn&&l.D.pointerEvents?"pointerup":"mouseup",g=d.map((e=>e.window.document)),f=n.Ay(e);f&&g.unshift(f);for(const e of g)this._hooks.add(n.Y_(e,h,(e=>{e.buttons===t?this._mouseMoveCallback(e):this.stopMonitoring(!0)}),((e,t)=>this._mouseMoveEventMerger(e,t)))),this._hooks.add(n.nm(e,u,(e=>this.stopMonitoring(!0))));if(s.E.hasDifferentOriginAncestor()){let e=d[d.length-1];this._hooks.add(n.nm(e.window.document,"mouseout",(e=>{"html"===new o.n(e).target.tagName.toLowerCase()&&this.stopMonitoring(!0)}))),this._hooks.add(n.nm(e.window.document,"mouseover",(e=>{"html"===new o.n(e).target.tagName.toLowerCase()&&this.stopMonitoring(!0)}))),this._hooks.add(n.nm(e.window.document.body,"mouseleave",(e=>{this.stopMonitoring(!0)})))}}}},70262:(e,t,i)=>{"use strict";i.d(t,{E:()=>o});let n=!1,r=null;function s(e){if(!e.parent||e.parent===e)return null;try{let t=e.location,i=e.parent.location;if("null"!==t.origin&&"null"!==i.origin&&(t.protocol!==i.protocol||t.hostname!==i.hostname||t.port!==i.port))return n=!0,null}catch(e){return n=!0,null}return e.parent}class o{static getSameOriginWindowChain(){if(!r){r=[];let e,t=window;do{e=s(t),e?r.push({window:t,iframeElement:t.frameElement||null}):r.push({window:t,iframeElement:null}),t=e}while(t)}return r.slice(0)}static hasDifferentOriginAncestor(){return r||this.getSameOriginWindowChain(),n}static getPositionOfChildWindowRelativeToAncestorWindow(e,t){if(!t||e===t)return{top:0,left:0};let i=0,n=0,r=this.getSameOriginWindowChain();for(const e of r){if(i+=e.window.scrollY,n+=e.window.scrollX,e.window===t)break;if(!e.iframeElement)break;let r=e.iframeElement.getBoundingClientRect();i+=r.top,n+=r.left}return{top:i,left:n}}}},59069:(e,t,i)=>{"use strict";i.d(t,{y:()=>d});var n=i(16268),r=i(22258),s=i(1432);let o=new Array(230),a=new Array(112);!function(){for(let e=0;e<a.length;e++)a[e]=-1;function e(e,t){o[e]=t,a[t]=e}e(3,7),e(8,1),e(9,2),e(13,3),e(16,4),e(17,5),e(18,6),e(19,7),e(20,8),e(27,9),e(32,10),e(33,11),e(34,12),e(35,13),e(36,14),e(37,15),e(38,16),e(39,17),e(40,18),e(45,19),e(46,20),e(48,21),e(49,22),e(50,23),e(51,24),e(52,25),e(53,26),e(54,27),e(55,28),e(56,29),e(57,30),e(65,31),e(66,32),e(67,33),e(68,34),e(69,35),e(70,36),e(71,37),e(72,38),e(73,39),e(74,40),e(75,41),e(76,42),e(77,43),e(78,44),e(79,45),e(80,46),e(81,47),e(82,48),e(83,49),e(84,50),e(85,51),e(86,52),e(87,53),e(88,54),e(89,55),e(90,56),e(93,58),e(96,93),e(97,94),e(98,95),e(99,96),e(100,97),e(101,98),e(102,99),e(103,100),e(104,101),e(105,102),e(106,103),e(107,104),e(108,105),e(109,106),e(110,107),e(111,108),e(112,59),e(113,60),e(114,61),e(115,62),e(116,63),e(117,64),e(118,65),e(119,66),e(120,67),e(121,68),e(122,69),e(123,70),e(124,71),e(125,72),e(126,73),e(127,74),e(128,75),e(129,76),e(130,77),e(144,78),e(145,79),e(186,80),e(187,81),e(188,82),e(189,83),e(190,84),e(191,85),e(192,86),e(193,110),e(194,111),e(219,87),e(220,88),e(221,89),e(222,90),e(223,91),e(226,92),e(229,109),n.vU?(e(59,80),e(107,81),e(109,83),s.dz&&e(224,57)):n.Pf&&(e(91,57),s.dz?e(93,57):e(92,57))}();const l=s.dz?256:2048,c=s.dz?2048:256;class d{constructor(e){this._standardKeyboardEventBrand=!0;let t=e;this.browserEvent=t,this.target=t.target,this.ctrlKey=t.ctrlKey,this.shiftKey=t.shiftKey,this.altKey=t.altKey,this.metaKey=t.metaKey,this.keyCode=function(e){if(e.charCode){let t=String.fromCharCode(e.charCode).toUpperCase();return r.kL.fromString(t)}return o[e.keyCode]||0}(t),this.code=t.code,this.ctrlKey=this.ctrlKey||5===this.keyCode,this.altKey=this.altKey||6===this.keyCode,this.shiftKey=this.shiftKey||4===this.keyCode,this.metaKey=this.metaKey||57===this.keyCode,this._asKeybinding=this._computeKeybinding(),this._asRuntimeKeybinding=this._computeRuntimeKeybinding()}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation&&this.browserEvent.stopPropagation()}toKeybinding(){return this._asRuntimeKeybinding}equals(e){return this._asKeybinding===e}_computeKeybinding(){let e=0;5!==this.keyCode&&4!==this.keyCode&&6!==this.keyCode&&57!==this.keyCode&&(e=this.keyCode);let t=0;return this.ctrlKey&&(t|=l),this.altKey&&(t|=512),this.shiftKey&&(t|=1024),this.metaKey&&(t|=c),t|=e,t}_computeRuntimeKeybinding(){let e=0;return 5!==this.keyCode&&4!==this.keyCode&&6!==this.keyCode&&57!==this.keyCode&&(e=this.keyCode),new r.QC(this.ctrlKey,this.shiftKey,this.altKey,this.metaKey,e)}}},23938:(e,t,i)=>{"use strict";i.d(t,{n:()=>o,q:()=>a});var n=i(16268),r=i(70262),s=i(1432);class o{constructor(e){this.timestamp=Date.now(),this.browserEvent=e,this.leftButton=0===e.button,this.middleButton=1===e.button,this.rightButton=2===e.button,this.buttons=e.buttons,this.target=e.target,this.detail=e.detail||1,"dblclick"===e.type&&(this.detail=2),this.ctrlKey=e.ctrlKey,this.shiftKey=e.shiftKey,this.altKey=e.altKey,this.metaKey=e.metaKey,"number"==typeof e.pageX?(this.posx=e.pageX,this.posy=e.pageY):(this.posx=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft,this.posy=e.clientY+document.body.scrollTop+document.documentElement.scrollTop);let t=r.E.getPositionOfChildWindowRelativeToAncestorWindow(self,e.view);this.posx-=t.left,this.posy-=t.top}preventDefault(){this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent.stopPropagation()}}class a{constructor(e,t=0,i=0){if(this.browserEvent=e||null,this.target=e?e.target||e.targetNode||e.srcElement:null,this.deltaY=i,this.deltaX=t,e){let t=e,i=e;if(void 0!==t.wheelDeltaY)this.deltaY=t.wheelDeltaY/120;else if(void 0!==i.VERTICAL_AXIS&&i.axis===i.VERTICAL_AXIS)this.deltaY=-i.detail/3;else if("wheel"===e.type){const t=e;t.deltaMode===t.DOM_DELTA_LINE?n.vU&&!s.dz?this.deltaY=-e.deltaY/3:this.deltaY=-e.deltaY:this.deltaY=-e.deltaY/40}if(void 0!==t.wheelDeltaX)n.G6&&s.ED?this.deltaX=-t.wheelDeltaX/120:this.deltaX=t.wheelDeltaX/120;else if(void 0!==i.HORIZONTAL_AXIS&&i.axis===i.HORIZONTAL_AXIS)this.deltaX=-e.detail/3;else if("wheel"===e.type){const t=e;t.deltaMode===t.DOM_DELTA_LINE?n.vU&&!s.dz?this.deltaX=-e.deltaX/3:this.deltaX=-e.deltaX:this.deltaX=-e.deltaX/40}0===this.deltaY&&0===this.deltaX&&e.wheelDelta&&(this.deltaY=e.wheelDelta/120)}}preventDefault(){this.browserEvent&&this.browserEvent.preventDefault()}stopPropagation(){this.browserEvent&&this.browserEvent.stopPropagation()}}},10553:(e,t,i)=>{"use strict";i.d(t,{t:()=>n,o:()=>l});var n,r=i(9488),s=i(5976),o=i(65321),a=i(49898);!function(e){e.Tap="-monaco-gesturetap",e.Change="-monaco-gesturechange",e.Start="-monaco-gesturestart",e.End="-monaco-gesturesend",e.Contextmenu="-monaco-gesturecontextmenu"}(n||(n={}));class l extends s.JT{constructor(){super(),this.dispatched=!1,this.activeTouches={},this.handle=null,this.targets=[],this.ignoreTargets=[],this._lastSetTapCountTime=0,this._register(o.nm(document,"touchstart",(e=>this.onTouchStart(e)),{passive:!1})),this._register(o.nm(document,"touchend",(e=>this.onTouchEnd(e)))),this._register(o.nm(document,"touchmove",(e=>this.onTouchMove(e)),{passive:!1}))}static addTarget(e){return l.isTouchDevice()?(l.INSTANCE||(l.INSTANCE=new l),l.INSTANCE.targets.push(e),{dispose:()=>{l.INSTANCE.targets=l.INSTANCE.targets.filter((t=>t!==e))}}):s.JT.None}static ignoreTarget(e){return l.isTouchDevice()?(l.INSTANCE||(l.INSTANCE=new l),l.INSTANCE.ignoreTargets.push(e),{dispose:()=>{l.INSTANCE.ignoreTargets=l.INSTANCE.ignoreTargets.filter((t=>t!==e))}}):s.JT.None}static isTouchDevice(){return"ontouchstart"in window||navigator.maxTouchPoints>0||window.navigator.msMaxTouchPoints>0}dispose(){this.handle&&(this.handle.dispose(),this.handle=null),super.dispose()}onTouchStart(e){let t=Date.now();this.handle&&(this.handle.dispose(),this.handle=null);for(let i=0,r=e.targetTouches.length;i<r;i++){let r=e.targetTouches.item(i);this.activeTouches[r.identifier]={id:r.identifier,initialTarget:r.target,initialTimeStamp:t,initialPageX:r.pageX,initialPageY:r.pageY,rollingTimestamps:[t],rollingPageX:[r.pageX],rollingPageY:[r.pageY]};let s=this.newGestureEvent(n.Start,r.target);s.pageX=r.pageX,s.pageY=r.pageY,this.dispatchEvent(s)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}onTouchEnd(e){let t=Date.now(),i=Object.keys(this.activeTouches).length;for(let s=0,o=e.changedTouches.length;s<o;s++){let o=e.changedTouches.item(s);if(!this.activeTouches.hasOwnProperty(String(o.identifier))){console.warn("move of an UNKNOWN touch",o);continue}let a=this.activeTouches[o.identifier],c=Date.now()-a.initialTimeStamp;if(c<l.HOLD_DELAY&&Math.abs(a.initialPageX-r.Gb(a.rollingPageX))<30&&Math.abs(a.initialPageY-r.Gb(a.rollingPageY))<30){let e=this.newGestureEvent(n.Tap,a.initialTarget);e.pageX=r.Gb(a.rollingPageX),e.pageY=r.Gb(a.rollingPageY),this.dispatchEvent(e)}else if(c>=l.HOLD_DELAY&&Math.abs(a.initialPageX-r.Gb(a.rollingPageX))<30&&Math.abs(a.initialPageY-r.Gb(a.rollingPageY))<30){let e=this.newGestureEvent(n.Contextmenu,a.initialTarget);e.pageX=r.Gb(a.rollingPageX),e.pageY=r.Gb(a.rollingPageY),this.dispatchEvent(e)}else if(1===i){let e=r.Gb(a.rollingPageX),i=r.Gb(a.rollingPageY),n=r.Gb(a.rollingTimestamps)-a.rollingTimestamps[0],s=e-a.rollingPageX[0],o=i-a.rollingPageY[0];const l=this.targets.filter((e=>a.initialTarget instanceof Node&&e.contains(a.initialTarget)));this.inertia(l,t,Math.abs(s)/n,s>0?1:-1,e,Math.abs(o)/n,o>0?1:-1,i)}this.dispatchEvent(this.newGestureEvent(n.End,a.initialTarget)),delete this.activeTouches[o.identifier]}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}newGestureEvent(e,t){let i=document.createEvent("CustomEvent");return i.initEvent(e,!1,!0),i.initialTarget=t,i.tapCount=0,i}dispatchEvent(e){if(e.type===n.Tap){const t=(new Date).getTime();let i=0;i=t-this._lastSetTapCountTime>l.CLEAR_TAP_COUNT_TIME?1:2,this._lastSetTapCountTime=t,e.tapCount=i}else e.type!==n.Change&&e.type!==n.Contextmenu||(this._lastSetTapCountTime=0);for(let t=0;t<this.ignoreTargets.length;t++)if(e.initialTarget instanceof Node&&this.ignoreTargets[t].contains(e.initialTarget))return;this.targets.forEach((t=>{e.initialTarget instanceof Node&&t.contains(e.initialTarget)&&(t.dispatchEvent(e),this.dispatched=!0)}))}inertia(e,t,i,r,s,a,c,d){this.handle=o.jL((()=>{let o=Date.now(),h=o-t,u=0,g=0,f=!0;i+=l.SCROLL_FRICTION*h,a+=l.SCROLL_FRICTION*h,i>0&&(f=!1,u=r*i*h),a>0&&(f=!1,g=c*a*h);let p=this.newGestureEvent(n.Change);p.translationX=u,p.translationY=g,e.forEach((e=>e.dispatchEvent(p))),f||this.inertia(e,o,i,r,s+u,a,c,d+g)}))}onTouchMove(e){let t=Date.now();for(let i=0,s=e.changedTouches.length;i<s;i++){let s=e.changedTouches.item(i);if(!this.activeTouches.hasOwnProperty(String(s.identifier))){console.warn("end of an UNKNOWN touch",s);continue}let o=this.activeTouches[s.identifier],a=this.newGestureEvent(n.Change,o.initialTarget);a.translationX=s.pageX-r.Gb(o.rollingPageX),a.translationY=s.pageY-r.Gb(o.rollingPageY),a.pageX=s.pageX,a.pageY=s.pageY,this.dispatchEvent(a),o.rollingPageX.length>3&&(o.rollingPageX.shift(),o.rollingPageY.shift(),o.rollingTimestamps.shift()),o.rollingPageX.push(s.pageX),o.rollingPageY.push(s.pageY),o.rollingTimestamps.push(t)}this.dispatched&&(e.preventDefault(),e.stopPropagation(),this.dispatched=!1)}}l.SCROLL_FRICTION=-.005,l.HOLD_DELAY=700,l.CLEAR_TAP_COUNT_TIME=400,function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);s>3&&o&&Object.defineProperty(t,i,o)}([a.H],l,"isTouchDevice",null)},76033:(e,t,i)=>{"use strict";i.d(t,{Y:()=>u,g:()=>g});var n=i(1432),r=i(63580),s=i(5976),o=i(74741),a=i(65321),l=i(98401),c=i(10553),d=i(23547),h=i(16268);class u extends s.JT{constructor(e,t,i={}){super(),this.options=i,this._context=e||this,this._action=t,t instanceof o.aU&&this._register(t.onDidChange((e=>{this.element&&this.handleActionChangeEvent(e)})))}handleActionChangeEvent(e){void 0!==e.enabled&&this.updateEnabled(),void 0!==e.checked&&this.updateChecked(),void 0!==e.class&&this.updateClass(),void 0!==e.label&&(this.updateLabel(),this.updateTooltip()),void 0!==e.tooltip&&this.updateTooltip()}get actionRunner(){return this._actionRunner||(this._actionRunner=this._register(new o.Wi)),this._actionRunner}set actionRunner(e){this._actionRunner=e}getAction(){return this._action}isEnabled(){return this._action.enabled}setActionContext(e){this._context=e}render(e){const t=this.element=e;this._register(c.o.addTarget(e));const i=this.options&&this.options.draggable;i&&(e.draggable=!0,h.vU&&this._register(a.nm(e,a.tw.DRAG_START,(e=>{var t;return null===(t=e.dataTransfer)||void 0===t?void 0:t.setData(d.go.TEXT,this._action.label)})))),this._register(a.nm(t,c.t.Tap,(e=>this.onClick(e)))),this._register(a.nm(t,a.tw.MOUSE_DOWN,(e=>{i||a.zB.stop(e,!0),this._action.enabled&&0===e.button&&a.cn(t,"active")}))),n.dz&&this._register(a.nm(t,a.tw.CONTEXT_MENU,(e=>{0===e.button&&!0===e.ctrlKey&&this.onClick(e)}))),this._register(a.nm(t,a.tw.CLICK,(e=>{a.zB.stop(e,!0),this.options&&this.options.isMenu||n.xS((()=>this.onClick(e)))}))),this._register(a.nm(t,a.tw.DBLCLICK,(e=>{a.zB.stop(e,!0)}))),[a.tw.MOUSE_UP,a.tw.MOUSE_OUT].forEach((e=>{this._register(a.nm(t,e,(e=>{a.zB.stop(e),a.IV(t,"active")})))}))}onClick(e){var t;a.zB.stop(e,!0);const i=l.Jp(this._context)?(null===(t=this.options)||void 0===t?void 0:t.useEventAsContext)?e:void 0:this._context;this.actionRunner.run(this._action,i)}focus(){this.element&&(this.element.focus(),a.cn(this.element,"focused"))}blur(){this.element&&(this.element.blur(),a.IV(this.element,"focused"))}updateEnabled(){}updateLabel(){}updateTooltip(){}updateClass(){}updateChecked(){}dispose(){this.element&&(a.ZF(this.element),this.element=void 0),super.dispose()}}class g extends u{constructor(e,t,i={}){super(e,t,i),this.options=i,this.options.icon=void 0!==i.icon&&i.icon,this.options.label=void 0===i.label||i.label,this.cssClass=""}render(e){super.render(e),this.element&&(this.label=a.R3(this.element,a.$("a.action-label"))),this.label&&(this._action.id===o.Z0.ID?this.label.setAttribute("role","presentation"):this.options.isMenu?this.label.setAttribute("role","menuitem"):this.label.setAttribute("role","button")),this.options.label&&this.options.keybinding&&this.element&&(a.R3(this.element,a.$("span.keybinding")).textContent=this.options.keybinding),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked()}focus(){super.focus(),this.label&&this.label.focus()}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this.getAction().label)}updateTooltip(){let e=null;this.getAction().tooltip?e=this.getAction().tooltip:!this.options.label&&this.getAction().label&&this.options.icon&&(e=this.getAction().label,this.options.keybinding&&(e=r.N({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e&&this.label&&(this.label.title=e)}updateClass(){this.cssClass&&this.label&&a.GK(this.label,this.cssClass),this.options.icon?(this.cssClass=this.getAction().class,this.label&&(a.cn(this.label,"codicon"),this.cssClass&&a.PT(this.label,this.cssClass)),this.updateEnabled()):this.label&&a.IV(this.label,"codicon")}updateEnabled(){this.getAction().enabled?(this.label&&(this.label.removeAttribute("aria-disabled"),a.IV(this.label,"disabled"),this.label.tabIndex=0),this.element&&a.IV(this.element,"disabled")):(this.label&&(this.label.setAttribute("aria-disabled","true"),a.cn(this.label,"disabled"),a.eJ(this.label)),this.element&&a.cn(this.element,"disabled"))}updateChecked(){this.label&&(this.getAction().checked?a.cn(this.label,"checked"):a.IV(this.label,"checked"))}}},90317:(e,t,i)=>{"use strict";i.d(t,{o:()=>d});var n=i(5976),r=i(74741),s=i(65321),o=i(98401),a=i(59069),l=i(4669),c=i(76033);class d extends n.JT{constructor(e,t={}){var i,n,o;let c,d;switch(super(),this._onDidBlur=this._register(new l.Q5),this.onDidBlur=this._onDidBlur.event,this._onDidCancel=this._register(new l.Q5),this.onDidCancel=this._onDidCancel.event,this._onDidRun=this._register(new l.Q5),this.onDidRun=this._onDidRun.event,this._onDidBeforeRun=this._register(new l.Q5),this.onDidBeforeRun=this._onDidBeforeRun.event,this.options=t,this._context=null!==(i=t.context)&&void 0!==i?i:null,this._orientation=null!==(n=this.options.orientation)&&void 0!==n?n:0,this._triggerKeys=null!==(o=this.options.triggerKeys)&&void 0!==o?o:{keys:[3,10],keyDown:!1},this.options.actionRunner?this._actionRunner=this.options.actionRunner:(this._actionRunner=new r.Wi,this._register(this._actionRunner)),this._register(this._actionRunner.onDidRun((e=>this._onDidRun.fire(e)))),this._register(this._actionRunner.onDidBeforeRun((e=>this._onDidBeforeRun.fire(e)))),this.viewItems=[],this.focusedItem=void 0,this.domNode=document.createElement("div"),this.domNode.className="monaco-action-bar",!1!==t.animated&&s.cn(this.domNode,"animated"),this._orientation){case 0:c=15,d=17;break;case 1:c=17,d=15,this.domNode.className+=" reverse";break;case 2:c=16,d=18,this.domNode.className+=" vertical";break;case 3:c=18,d=16,this.domNode.className+=" vertical reverse"}this._register(s.nm(this.domNode,s.tw.KEY_DOWN,(e=>{const t=new a.y(e);let i=!0;t.equals(c)?i=this.focusPrevious():t.equals(d)?i=this.focusNext():t.equals(9)?this._onDidCancel.fire():this.isTriggerKeyEvent(t)?this._triggerKeys.keyDown&&this.doTrigger(t):i=!1,i&&(t.preventDefault(),t.stopPropagation())}))),this._register(s.nm(this.domNode,s.tw.KEY_UP,(e=>{const t=new a.y(e);this.isTriggerKeyEvent(t)?(this._triggerKeys.keyDown||this.doTrigger(t),t.preventDefault(),t.stopPropagation()):(t.equals(2)||t.equals(1026))&&this.updateFocusedItem()}))),this.focusTracker=this._register(s.go(this.domNode)),this._register(this.focusTracker.onDidBlur((()=>{s.vY()!==this.domNode&&s.jg(s.vY(),this.domNode)||(this._onDidBlur.fire(),this.focusedItem=void 0)}))),this._register(this.focusTracker.onDidFocus((()=>this.updateFocusedItem()))),this.actionsList=document.createElement("ul"),this.actionsList.className="actions-container",this.actionsList.setAttribute("role","toolbar"),this.options.ariaLabel&&this.actionsList.setAttribute("aria-label",this.options.ariaLabel),this.domNode.appendChild(this.actionsList),e.appendChild(this.domNode)}isTriggerKeyEvent(e){let t=!1;return this._triggerKeys.keys.forEach((i=>{t=t||e.equals(i)})),t}updateFocusedItem(){for(let e=0;e<this.actionsList.children.length;e++){const t=this.actionsList.children[e];if(s.jg(s.vY(),t)){this.focusedItem=e;break}}}get context(){return this._context}set context(e){this._context=e,this.viewItems.forEach((t=>t.setActionContext(e)))}get actionRunner(){return this._actionRunner}set actionRunner(e){e&&(this._actionRunner=e,this.viewItems.forEach((t=>t.actionRunner=e)))}getContainer(){return this.domNode}push(e,t={}){const i=Array.isArray(e)?e:[e];let n=o.hj(t.index)?t.index:null;i.forEach((e=>{const i=document.createElement("li");let r;i.className="action-item",i.setAttribute("role","presentation"),this.options.allowContextMenu||this._register(s.nm(i,s.tw.CONTEXT_MENU,(e=>{s.zB.stop(e,!0)}))),this.options.actionViewItemProvider&&(r=this.options.actionViewItemProvider(e)),r||(r=new c.g(this.context,e,t)),r.actionRunner=this._actionRunner,r.setActionContext(this.context),r.render(i),null===n||n<0||n>=this.actionsList.children.length?(this.actionsList.appendChild(i),this.viewItems.push(r)):(this.actionsList.insertBefore(i,this.actionsList.children[n]),this.viewItems.splice(n,0,r),n++)})),this.focusedItem&&this.focus(this.focusedItem)}clear(){(0,n.B9)(this.viewItems),this.viewItems=[],s.PO(this.actionsList)}focus(e){let t,i=!1;void 0===e?i=!0:"number"==typeof e?t=e:"boolean"==typeof e&&(i=e),i&&void 0===this.focusedItem?(this.focusedItem=-1,this.focusNext()):(void 0!==t&&(this.focusedItem=t),this.updateFocus())}focusNext(){void 0===this.focusedItem&&(this.focusedItem=this.viewItems.length-1);const e=this.focusedItem;let t;do{if(this.options.preventLoopNavigation&&this.focusedItem+1>=this.viewItems.length)return this.focusedItem=e,!1;this.focusedItem=(this.focusedItem+1)%this.viewItems.length,t=this.viewItems[this.focusedItem]}while(this.focusedItem!==e&&!t.isEnabled());return this.focusedItem!==e||t.isEnabled()||(this.focusedItem=void 0),this.updateFocus(),!0}focusPrevious(){void 0===this.focusedItem&&(this.focusedItem=0);const e=this.focusedItem;let t;do{if(this.focusedItem=this.focusedItem-1,this.focusedItem<0){if(this.options.preventLoopNavigation)return this.focusedItem=e,!1;this.focusedItem=this.viewItems.length-1}t=this.viewItems[this.focusedItem]}while(this.focusedItem!==e&&!t.isEnabled());return this.focusedItem!==e||t.isEnabled()||(this.focusedItem=void 0),this.updateFocus(!0),!0}updateFocus(e,t){void 0===this.focusedItem&&this.actionsList.focus({preventScroll:t});for(let i=0;i<this.viewItems.length;i++){const n=this.viewItems[i];i===this.focusedItem?o.mf(n.isEnabled)&&(n.isEnabled()&&o.mf(n.focus)?n.focus(e):this.actionsList.focus({preventScroll:t})):o.mf(n.blur)&&n.blur()}}doTrigger(e){if(void 0===this.focusedItem)return;const t=this.viewItems[this.focusedItem];if(t instanceof c.Y){const i=null===t._context||void 0===t._context?e:t._context;this.run(t._action,i)}}run(e,t){return this._actionRunner.run(e,t)}dispose(){(0,n.B9)(this.viewItems),this.viewItems=[],s.ZF(this.getContainer()),super.dispose()}}},85152:(e,t,i)=>{"use strict";i.d(t,{wW:()=>d,Z9:()=>h,i7:()=>u});var n=i(1432),r=i(65321);let s,o,a,l,c;function d(e){s=document.createElement("div"),s.className="monaco-aria-container";const t=()=>{const e=document.createElement("div");return e.className="monaco-alert",e.setAttribute("role","alert"),e.setAttribute("aria-atomic","true"),s.appendChild(e),e};o=t(),a=t();const i=()=>{const e=document.createElement("div");return e.className="monaco-status",e.setAttribute("role","complementary"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),s.appendChild(e),e};l=i(),c=i(),e.appendChild(s)}function h(e){s&&(o.textContent!==e?(r.PO(a),g(o,e)):(r.PO(o),g(a,e)))}function u(e){s&&(n.dz?h(e):l.textContent!==e?(r.PO(c),g(l,e)):(r.PO(l),g(c,e)))}function g(e,t){r.PO(e),t.length>2e4&&(t=t.substr(0,2e4)),e.textContent=t,e.style.visibility="hidden",e.style.visibility="visible"}},28609:(e,t,i)=>{"use strict";i.d(t,{D:()=>r,a:()=>s});var n=i(73046);const r=new class{constructor(){this.onDidChange=n.fK.onDidRegister}getCSS(){const e=[];for(let t of n.fK.all)e.push(s(t));return e.join("\n")}};function s(e){let t=e.definition;for(;t instanceof n.lA;)t=t.definition;return`.codicon-${e.id}:before { content: '${t.character}'; }`}},67488:(e,t,i)=>{"use strict";i.d(t,{Z:()=>l});var n=i(65321),r=i(97295),s=i(41264),o=i(36248);const a={badgeBackground:s.Il.fromHex("#4D4D4D"),badgeForeground:s.Il.fromHex("#FFFFFF")};class l{constructor(e,t){this.count=0,this.options=t||Object.create(null),(0,o.jB)(this.options,a,!1),this.badgeBackground=this.options.badgeBackground,this.badgeForeground=this.options.badgeForeground,this.badgeBorder=this.options.badgeBorder,this.element=(0,n.R3)(e,(0,n.$)(".monaco-count-badge")),this.countFormat=this.options.countFormat||"{0}",this.titleFormat=this.options.titleFormat||"",this.setCount(this.options.count||0)}setCount(e){this.count=e,this.render()}setTitleFormat(e){this.titleFormat=e,this.render()}render(){this.element.textContent=(0,r.WU)(this.countFormat,this.count),this.element.title=(0,r.WU)(this.titleFormat,this.count),this.applyStyles()}style(e){this.badgeBackground=e.badgeBackground,this.badgeForeground=e.badgeForeground,this.badgeBorder=e.badgeBorder,this.applyStyles()}applyStyles(){if(this.element){const e=this.badgeBackground?this.badgeBackground.toString():"",t=this.badgeForeground?this.badgeForeground.toString():"",i=this.badgeBorder?this.badgeBorder.toString():"";this.element.style.backgroundColor=e,this.element.style.color=t,this.element.style.borderWidth=i?"1px":"",this.element.style.borderStyle=i?"solid":"",this.element.style.borderColor=i}}}},34650:(e,t,i)=>{"use strict";i.d(t,{q:()=>o});var n=i(36248),r=i(73046),s=i(97295);class o{constructor(e,t){this.supportCodicons=t,this.text="",this.title="",this.highlights=[],this.didEverRender=!1,this.domNode=document.createElement("span"),this.domNode.className="monaco-highlighted-label",e.appendChild(this.domNode)}get element(){return this.domNode}set(e,t=[],i="",r){e||(e=""),r&&(e=o.escapeNewLines(e,t)),this.didEverRender&&this.text===e&&this.title===i&&n.fS(this.highlights,t)||(Array.isArray(t)||(t=[]),this.text=e,this.title=i,this.highlights=t,this.render())}render(){let e="",t=0;for(const i of this.highlights){if(i.end===i.start)continue;if(t<i.start){e+="<span>";const n=this.text.substring(t,i.start);e+=this.supportCodicons?(0,r.Mi)((0,s.YU)(n)):(0,s.YU)(n),e+="</span>",t=i.end}i.extraClasses?e+=`<span class="highlight ${i.extraClasses}">`:e+='<span class="highlight">';const n=this.text.substring(i.start,i.end);e+=this.supportCodicons?(0,r.Mi)((0,s.YU)(n)):(0,s.YU)(n),e+="</span>",t=i.end}if(t<this.text.length){e+="<span>";const i=this.text.substring(t);e+=this.supportCodicons?(0,r.Mi)((0,s.YU)(i)):(0,s.YU)(i),e+="</span>"}this.domNode.innerHTML=e,this.title?this.domNode.title=this.title:this.domNode.removeAttribute("title"),this.didEverRender=!0}static escapeNewLines(e,t){let i=0,n=0;return e.replace(/\r\n|\r|\n/g,((e,r)=>{n="\r\n"===e?-1:0,r+=i;for(const e of t)e.end<=r||(e.start>=r&&(e.start+=n),e.end>=r&&(e.end+=n));return i+=n,"⏎"}))}}},59834:(e,t,i)=>{"use strict";i.d(t,{g:()=>c});var n=i(65321),r=i(34650),s=i(5976),o=i(61134),a=i(36248);class l{constructor(e){this._element=e}get element(){return this._element}set textContent(e){this.disposed||e===this._textContent||(this._textContent=e,this._element.textContent=e)}set className(e){this.disposed||e===this._className||(this._className=e,this._element.className=e)}set title(e){this.disposed||e===this._title||(this._title=e,this._title?this._element.title=e:this._element.removeAttribute("title"))}set empty(e){this.disposed||e===this._empty||(this._empty=e,this._element.style.marginLeft=e?"0":"")}dispose(){this.disposed=!0}}class c extends s.JT{constructor(e,t){super(),this.domNode=this._register(new l(n.R3(e,n.$(".monaco-icon-label"))));const i=n.R3(this.domNode.element,n.$(".monaco-icon-label-container")),s=n.R3(i,n.$("span.monaco-icon-name-container"));this.descriptionContainer=this._register(new l(n.R3(i,n.$("span.monaco-icon-description-container")))),(null==t?void 0:t.supportHighlights)?this.nameNode=new h(s,!!t.supportCodicons):this.nameNode=new d(s),(null==t?void 0:t.supportDescriptionHighlights)?this.descriptionNodeFactory=()=>new r.q(n.R3(this.descriptionContainer.element,n.$("span.label-description")),!!t.supportCodicons):this.descriptionNodeFactory=()=>this._register(new l(n.R3(this.descriptionContainer.element,n.$("span.label-description"))))}setLabel(e,t,i){const n=["monaco-icon-label"];i&&(i.extraClasses&&n.push(...i.extraClasses),i.italic&&n.push("italic"),i.strikethrough&&n.push("strikethrough")),this.domNode.className=n.join(" "),this.domNode.title=(null==i?void 0:i.title)||"",this.nameNode.setLabel(e,i),(t||this.descriptionNode)&&(this.descriptionNode||(this.descriptionNode=this.descriptionNodeFactory()),this.descriptionNode instanceof r.q?(this.descriptionNode.set(t||"",i?i.descriptionMatches:void 0),(null==i?void 0:i.descriptionTitle)?this.descriptionNode.element.title=i.descriptionTitle:this.descriptionNode.element.removeAttribute("title")):(this.descriptionNode.textContent=t||"",this.descriptionNode.title=(null==i?void 0:i.descriptionTitle)||"",this.descriptionNode.empty=!t))}}class d{constructor(e){this.container=e,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(this.label!==e||!(0,a.fS)(this.options,t))if(this.label=e,this.options=t,"string"==typeof e)this.singleLabel||(this.container.innerText="",n.IV(this.container,"multiple"),this.singleLabel=n.R3(this.container,n.$("a.label-name",{id:null==t?void 0:t.domId}))),this.singleLabel.textContent=e;else{this.container.innerText="",n.cn(this.container,"multiple"),this.singleLabel=void 0;for(let i=0;i<e.length;i++){const r=e[i],s=(null==t?void 0:t.domId)&&`${null==t?void 0:t.domId}_${i}`;n.R3(this.container,n.$("a.label-name",{id:s,"data-icon-label-count":e.length,"data-icon-label-index":i,role:"treeitem"},r)),i<e.length-1&&n.R3(this.container,n.$("span.label-separator",void 0,(null==t?void 0:t.separator)||"/"))}}}}class h{constructor(e,t){this.container=e,this.supportCodicons=t,this.label=void 0,this.singleLabel=void 0}setLabel(e,t){if(this.label!==e||!(0,a.fS)(this.options,t))if(this.label=e,this.options=t,"string"==typeof e)this.singleLabel||(this.container.innerText="",n.IV(this.container,"multiple"),this.singleLabel=new r.q(n.R3(this.container,n.$("a.label-name",{id:null==t?void 0:t.domId})),this.supportCodicons)),this.singleLabel.set(e,null==t?void 0:t.matches,null==t?void 0:t.title,null==t?void 0:t.labelEscapeNewLines);else{this.container.innerText="",n.cn(this.container,"multiple"),this.singleLabel=void 0;const i=(null==t?void 0:t.separator)||"/",s=function(e,t,i){if(!i)return;let n=0;return e.map((e=>{const r={start:n,end:n+e.length},s=i.map((e=>o.e.intersect(r,e))).filter((e=>!o.e.isEmpty(e))).map((({start:e,end:t})=>({start:e-n,end:t-n})));return n=r.end+t.length,s}))}(e,i,null==t?void 0:t.matches);for(let o=0;o<e.length;o++){const a=e[o],l=s?s[o]:void 0,c=(null==t?void 0:t.domId)&&`${null==t?void 0:t.domId}_${o}`,d=n.$("a.label-name",{id:c,"data-icon-label-count":e.length,"data-icon-label-index":o,role:"treeitem"});new r.q(n.R3(this.container,d),this.supportCodicons).set(a,l,null==t?void 0:t.title,null==t?void 0:t.labelEscapeNewLines),o<e.length-1&&n.R3(d,n.$("span.label-separator",void 0,i))}}}}},77927:(e,t,i)=>{"use strict";i.d(t,{p:()=>v,W:()=>b});var n=i(63580),r=i(65321),s=i(48764),o=i(85152),a=i(90317),l=i(4669),c=i(93794),d=i(41264),h=i(36248);class u{constructor(e,t=0,i=e.length,n=t-1){this.items=e,this.start=t,this.end=i,this.index=n}current(){return this.index===this.start-1||this.index===this.end?null:this.items[this.index]}next(){return this.index=Math.min(this.index+1,this.end),this.current()}previous(){return this.index=Math.max(this.index-1,this.start-1),this.current()}first(){return this.index=this.start,this.current()}last(){return this.index=this.end-1,this.current()}}class g{constructor(e=[],t=10){this._initialize(e),this._limit=t,this._onChange()}add(e){this._history.delete(e),this._history.add(e),this._onChange()}next(){return this._currentPosition()!==this._elements.length-1?this._navigator.next():null}previous(){return 0!==this._currentPosition()?this._navigator.previous():null}current(){return this._navigator.current()}first(){return this._navigator.first()}last(){return this._navigator.last()}has(e){return this._history.has(e)}_onChange(){this._reduceToLimit();const e=this._elements;this._navigator=new u(e,0,e.length,e.length)}_reduceToLimit(){const e=this._elements;e.length>this._limit&&this._initialize(e.slice(e.length-this._limit))}_currentPosition(){const e=this._navigator.current();return e?this._elements.indexOf(e):-1}_initialize(e){this._history=new Set;for(const t of e)this._history.add(t)}get _elements(){const e=[];return this._history.forEach((t=>e.push(t))),e}}var f=i(9802),p=i(4850);const m=r.$,_={inputBackground:d.Il.fromHex("#3C3C3C"),inputForeground:d.Il.fromHex("#CCCCCC"),inputValidationInfoBorder:d.Il.fromHex("#55AAFF"),inputValidationInfoBackground:d.Il.fromHex("#063B49"),inputValidationWarningBorder:d.Il.fromHex("#B89500"),inputValidationWarningBackground:d.Il.fromHex("#352A05"),inputValidationErrorBorder:d.Il.fromHex("#BE1100"),inputValidationErrorBackground:d.Il.fromHex("#5A1D1D")};class b extends c.${constructor(e,t,i){super(),this.state="idle",this.maxHeight=Number.POSITIVE_INFINITY,this._onDidChange=this._register(new l.Q5),this.onDidChange=this._onDidChange.event,this._onDidHeightChange=this._register(new l.Q5),this.onDidHeightChange=this._onDidHeightChange.event,this.contextViewProvider=t,this.options=i||Object.create(null),(0,h.jB)(this.options,_,!1),this.message=null,this.placeholder=this.options.placeholder||"",this.ariaLabel=this.options.ariaLabel||"",this.inputBackground=this.options.inputBackground,this.inputForeground=this.options.inputForeground,this.inputBorder=this.options.inputBorder,this.inputValidationInfoBorder=this.options.inputValidationInfoBorder,this.inputValidationInfoBackground=this.options.inputValidationInfoBackground,this.inputValidationInfoForeground=this.options.inputValidationInfoForeground,this.inputValidationWarningBorder=this.options.inputValidationWarningBorder,this.inputValidationWarningBackground=this.options.inputValidationWarningBackground,this.inputValidationWarningForeground=this.options.inputValidationWarningForeground,this.inputValidationErrorBorder=this.options.inputValidationErrorBorder,this.inputValidationErrorBackground=this.options.inputValidationErrorBackground,this.inputValidationErrorForeground=this.options.inputValidationErrorForeground,this.options.validationOptions&&(this.validation=this.options.validationOptions.validation),this.element=r.R3(e,m(".monaco-inputbox.idle"));let n=this.options.flexibleHeight?"textarea":"input",s=r.R3(this.element,m(".wrapper"));if(this.input=r.R3(s,m(n+".input.empty")),this.input.setAttribute("autocorrect","off"),this.input.setAttribute("autocapitalize","off"),this.input.setAttribute("spellcheck","false"),this.onfocus(this.input,(()=>this.element.classList.add("synthetic-focus"))),this.onblur(this.input,(()=>this.element.classList.remove("synthetic-focus"))),this.options.flexibleHeight){this.maxHeight="number"==typeof this.options.flexibleMaxHeight?this.options.flexibleMaxHeight:Number.POSITIVE_INFINITY,this.mirror=r.R3(s,m("div.mirror")),this.mirror.innerText=" ",this.scrollableElement=new f.NB(this.element,{vertical:1}),this.options.flexibleWidth&&(this.input.setAttribute("wrap","off"),this.mirror.style.whiteSpace="pre",this.mirror.style.wordWrap="initial"),r.R3(e,this.scrollableElement.getDomNode()),this._register(this.scrollableElement),this._register(this.scrollableElement.onScroll((e=>this.input.scrollTop=e.scrollTop)));const t=l.ju.filter((0,p.j)(document,"selectionchange"),(()=>{const e=document.getSelection();return(null==e?void 0:e.anchorNode)===s}));this._register(t(this.updateScrollDimensions,this)),this._register(this.onDidHeightChange(this.updateScrollDimensions,this))}else this.input.type=this.options.type||"text",this.input.setAttribute("wrap","off");this.ariaLabel&&this.input.setAttribute("aria-label",this.ariaLabel),this.placeholder&&this.setPlaceHolder(this.placeholder),this.oninput(this.input,(()=>this.onValueChange())),this.onblur(this.input,(()=>this.onBlur())),this.onfocus(this.input,(()=>this.onFocus())),this.ignoreGesture(this.input),setTimeout((()=>this.updateMirror()),0),this.options.actions&&(this.actionbar=this._register(new a.o(this.element)),this.actionbar.push(this.options.actions,{icon:!0,label:!1})),this.applyStyles()}onBlur(){this._hideMessage()}onFocus(){this._showMessage()}setPlaceHolder(e){this.placeholder=e,this.input.setAttribute("placeholder",e),this.input.title=e}setAriaLabel(e){this.ariaLabel=e,e?this.input.setAttribute("aria-label",this.ariaLabel):this.input.removeAttribute("aria-label")}getAriaLabel(){return this.ariaLabel}get inputElement(){return this.input}get value(){return this.input.value}set value(e){this.input.value!==e&&(this.input.value=e,this.onValueChange())}get height(){return"number"==typeof this.cachedHeight?this.cachedHeight:r.wn(this.element)}focus(){this.input.focus()}blur(){this.input.blur()}hasFocus(){return document.activeElement===this.input}select(e=null){this.input.select(),e&&this.input.setSelectionRange(e.start,e.end)}isSelectionAtEnd(){return this.input.selectionEnd===this.input.value.length&&this.input.selectionStart===this.input.selectionEnd}enable(){this.input.removeAttribute("disabled")}disable(){this.blur(),this.input.disabled=!0,this._hideMessage()}get width(){return r.w(this.input)}set width(e){if(this.options.flexibleHeight&&this.options.flexibleWidth){let t=0;this.mirror&&(t=(parseFloat(this.mirror.style.paddingLeft||"")||0)+(parseFloat(this.mirror.style.paddingRight||"")||0)),this.input.style.width=e-t+"px"}else this.input.style.width=e+"px";this.mirror&&(this.mirror.style.width=e+"px")}set paddingRight(e){this.options.flexibleHeight&&this.options.flexibleWidth?this.input.style.width=`calc(100% - ${e}px)`:this.input.style.paddingRight=e+"px",this.mirror&&(this.mirror.style.paddingRight=e+"px")}updateScrollDimensions(){if("number"!=typeof this.cachedContentHeight||"number"!=typeof this.cachedHeight||!this.scrollableElement)return;const e=this.cachedContentHeight,t=this.cachedHeight,i=this.input.scrollTop;this.scrollableElement.setScrollDimensions({scrollHeight:e,height:t}),this.scrollableElement.setScrollPosition({scrollTop:i})}showMessage(e,t){this.message=e,this.element.classList.remove("idle"),this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add(this.classForType(e.type));const i=this.stylesForType(this.message.type);this.element.style.border=i.border?`1px solid ${i.border}`:"",(this.hasFocus()||t)&&this._showMessage()}hideMessage(){this.message=null,this.element.classList.remove("info"),this.element.classList.remove("warning"),this.element.classList.remove("error"),this.element.classList.add("idle"),this._hideMessage(),this.applyStyles()}validate(){let e=null;return this.validation&&(e=this.validation(this.value),e?(this.inputElement.setAttribute("aria-invalid","true"),this.showMessage(e)):this.inputElement.hasAttribute("aria-invalid")&&(this.inputElement.removeAttribute("aria-invalid"),this.hideMessage())),!e}stylesForType(e){switch(e){case 1:return{border:this.inputValidationInfoBorder,background:this.inputValidationInfoBackground,foreground:this.inputValidationInfoForeground};case 2:return{border:this.inputValidationWarningBorder,background:this.inputValidationWarningBackground,foreground:this.inputValidationWarningForeground};default:return{border:this.inputValidationErrorBorder,background:this.inputValidationErrorBackground,foreground:this.inputValidationErrorForeground}}}classForType(e){switch(e){case 1:return"info";case 2:return"warning";default:return"error"}}_showMessage(){if(!this.contextViewProvider||!this.message)return;let e,t,i=()=>e.style.width=r.w(this.element)+"px";this.contextViewProvider.showContextView({getAnchor:()=>this.element,anchorAlignment:1,render:t=>{if(!this.message)return null;e=r.R3(t,m(".monaco-inputbox-container")),i();const n={inline:!0,className:"monaco-inputbox-message"},o=this.message.formatContent?(0,s.BO)(this.message.content,n):(0,s.IY)(this.message.content,n);o.classList.add(this.classForType(this.message.type));const a=this.stylesForType(this.message.type);return o.style.backgroundColor=a.background?a.background.toString():"",o.style.color=a.foreground?a.foreground.toString():"",o.style.border=a.border?`1px solid ${a.border}`:"",r.R3(e,o),null},onHide:()=>{this.state="closed"},layout:i}),t=3===this.message.type?n.N("alertErrorMessage","Error: {0}",this.message.content):2===this.message.type?n.N("alertWarningMessage","Warning: {0}",this.message.content):n.N("alertInfoMessage","Info: {0}",this.message.content),o.Z9(t),this.state="open"}_hideMessage(){this.contextViewProvider&&("open"===this.state&&this.contextViewProvider.hideContextView(),this.state="idle")}onValueChange(){this._onDidChange.fire(this.value),this.validate(),this.updateMirror(),this.input.classList.toggle("empty",!this.value),"open"===this.state&&this.contextViewProvider&&this.contextViewProvider.layout()}updateMirror(){if(!this.mirror)return;const e=this.value,t=10===e.charCodeAt(e.length-1)?" ":"";e+t?this.mirror.textContent=e+t:this.mirror.innerText=" ",this.layout()}style(e){this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()}applyStyles(){const e=this.inputBackground?this.inputBackground.toString():"",t=this.inputForeground?this.inputForeground.toString():"",i=this.inputBorder?this.inputBorder.toString():"";this.element.style.backgroundColor=e,this.element.style.color=t,this.input.style.backgroundColor="inherit",this.input.style.color=t,this.element.style.borderWidth=i?"1px":"",this.element.style.borderStyle=i?"solid":"",this.element.style.borderColor=i}layout(){if(!this.mirror)return;const e=this.cachedContentHeight;this.cachedContentHeight=r.wn(this.mirror),e!==this.cachedContentHeight&&(this.cachedHeight=Math.min(this.cachedContentHeight,this.maxHeight),this.input.style.height=this.cachedHeight+"px",this._onDidHeightChange.fire(this.cachedContentHeight))}insertAtCursor(e){const t=this.inputElement,i=t.selectionStart,n=t.selectionEnd,r=t.value;null!==i&&null!==n&&(this.value=r.substr(0,i)+e+r.substr(n),t.setSelectionRange(i+1,i+1),this.layout())}dispose(){this._hideMessage(),this.message=null,this.actionbar&&this.actionbar.dispose(),super.dispose()}}class v extends b{constructor(e,t,i){super(e,t,i),this.history=new g(i.history,100)}addToHistory(){this.value&&this.value!==this.getCurrentValue()&&this.history.add(this.value)}showNextValue(){this.history.has(this.value)||this.addToHistory();let e=this.getNextValue();e&&(e=e===this.value?this.getNextValue():e),e&&(this.value=e,o.i7(this.value))}showPreviousValue(){this.history.has(this.value)||this.addToHistory();let e=this.getPreviousValue();e&&(e=e===this.value?this.getPreviousValue():e),e&&(this.value=e,o.i7(this.value))}getCurrentValue(){let e=this.history.current();return e||(e=this.history.last(),this.history.next()),e}getPreviousValue(){return this.history.previous()||this.history.first()}getNextValue(){return this.history.next()||this.history.last()}}},25707:(e,t,i)=>{"use strict";i.d(t,{kX:()=>S,Bv:()=>M});var n=i(36248),r=i(5976),s=i(10553),o=i(65321),a=i(4669),l=i(4850),c=i(9802),d=i(76633),h=i(61134);function u(e,t){const i=[];for(let n of t){if(e.start>=n.range.end)continue;if(e.end<n.range.start)break;const t=h.e.intersect(e,n.range);h.e.isEmpty(t)||i.push({range:t,size:n.size})}return i}function g({start:e,end:t},i){return{start:e+i,end:t+i}}class f{constructor(){this.groups=[],this._size=0}splice(e,t,i=[]){const n=i.length-t,r=u({start:0,end:e},this.groups),s=u({start:e+t,end:Number.POSITIVE_INFINITY},this.groups).map((e=>({range:g(e.range,n),size:e.size}))),o=i.map(((t,i)=>({range:{start:e+i,end:e+i+1},size:t.size})));this.groups=function(...e){return function(e){const t=[];let i=null;for(let n of e){const e=n.range.start,r=n.range.end,s=n.size;i&&s===i.size?i.range.end=r:(i={range:{start:e,end:r},size:s},t.push(i))}return t}(e.reduce(((e,t)=>e.concat(t)),[]))}(r,o,s),this._size=this.groups.reduce(((e,t)=>e+t.size*(t.range.end-t.range.start)),0)}get count(){const e=this.groups.length;return e?this.groups[e-1].range.end:0}get size(){return this._size}indexAt(e){if(e<0)return-1;let t=0,i=0;for(let n of this.groups){const r=n.range.end-n.range.start,s=i+r*n.size;if(e<s)return t+Math.floor((e-i)/n.size);t+=r,i=s}return t}indexAfter(e){return Math.min(this.indexAt(e)+1,this.count)}positionAt(e){if(e<0)return-1;let t=0,i=0;for(let n of this.groups){const r=n.range.end-n.range.start,s=i+r;if(e<s)return t+(e-i)*n.size;t+=r*n.size,i=s}return-1}}class p{constructor(e){this.renderers=e,this.cache=new Map}alloc(e){let t=this.getTemplateCache(e).pop();if(!t){const i=(0,o.$)(".monaco-list-row");t={domNode:i,templateId:e,templateData:this.getRenderer(e).renderTemplate(i)}}return t}release(e){e&&this.releaseRow(e)}releaseRow(e){const{domNode:t,templateId:i}=e;t&&((0,o.IV)(t,"scrolling"),function(e){try{e.parentElement&&e.parentElement.removeChild(e)}catch(e){}}(t)),this.getTemplateCache(i).push(e)}getTemplateCache(e){let t=this.cache.get(e);return t||(t=[],this.cache.set(e,t)),t}dispose(){this.cache.forEach(((e,t)=>{for(const i of e)this.getRenderer(t).disposeTemplate(i.templateData),i.domNode=null,i.templateData=null})),this.cache.clear()}getRenderer(e){const t=this.renderers.get(e);if(!t)throw new Error(`No renderer found for ${e}`);return t}}var m=i(49898),_=i(9488),b=i(23547),v=i(15393),y=i(16268),w=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o};const C={useShadows:!0,verticalScrollMode:1,setRowLineHeight:!0,setRowHeight:!0,supportDynamicHeights:!1,dnd:{getDragElements:e=>[e],getDragURI:()=>null,onDragStart(){},onDragOver:()=>!1,drop(){}},horizontalScrolling:!1,transformOptimization:!0};class S{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class k{constructor(e){this.elements=e}update(){}getData(){return this.elements}}class x{constructor(){this.types=[],this.files=[]}update(e){if(e.types&&this.types.splice(0,this.types.length,...e.types),e.files){this.files.splice(0,this.files.length);for(let t=0;t<e.files.length;t++){const i=e.files.item(t);i&&(i.size||i.type)&&this.files.push(i)}}}getData(){return{types:this.types,files:this.files}}}class L{constructor(e){(null==e?void 0:e.getSetSize)?this.getSetSize=e.getSetSize.bind(e):this.getSetSize=(e,t,i)=>i,(null==e?void 0:e.getPosInSet)?this.getPosInSet=e.getPosInSet.bind(e):this.getPosInSet=(e,t)=>t+1,(null==e?void 0:e.getRole)?this.getRole=e.getRole.bind(e):this.getRole=e=>"listitem",(null==e?void 0:e.isChecked)?this.isChecked=e.isChecked.bind(e):this.isChecked=e=>{}}}class M{constructor(e,t,i,h=C){if(this.virtualDelegate=t,this.domId="list_id_"+ ++M.InstanceCount,this.renderers=new Map,this.renderWidth=0,this._scrollHeight=0,this.scrollableElementUpdateDisposable=null,this.scrollableElementWidthDelayer=new v.vp(50),this.splicing=!1,this.dragOverAnimationStopDisposable=r.JT.None,this.dragOverMouseY=0,this.canDrop=!1,this.currentDragFeedbackDisposable=r.JT.None,this.onDragLeaveTimeout=r.JT.None,this.disposables=new r.SL,this._onDidChangeContentHeight=new a.Q5,this._horizontalScrolling=!1,h.horizontalScrolling&&h.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");this.items=[],this.itemId=0,this.rangeMap=new f;for(const e of i)this.renderers.set(e.templateId,e);this.cache=this.disposables.add(new p(this.renderers)),this.lastRenderTop=0,this.lastRenderHeight=0,this.domNode=document.createElement("div"),this.domNode.className="monaco-list",o.cn(this.domNode,this.domId),this.domNode.tabIndex=0,o.og(this.domNode,"mouse-support","boolean"!=typeof h.mouseSupport||h.mouseSupport),this._horizontalScrolling=(0,n.CJ)(h,(e=>e.horizontalScrolling),C.horizontalScrolling),o.og(this.domNode,"horizontal-scrolling",this._horizontalScrolling),this.additionalScrollHeight=void 0===h.additionalScrollHeight?0:h.additionalScrollHeight,this.accessibilityProvider=new L(h.accessibilityProvider),this.rowsContainer=document.createElement("div"),this.rowsContainer.className="monaco-list-rows",(0,n.CJ)(h,(e=>e.transformOptimization),C.transformOptimization)&&(this.rowsContainer.style.transform="translate3d(0px, 0px, 0px)"),this.disposables.add(s.o.addTarget(this.rowsContainer)),this.scrollable=new d.Rm((0,n.CJ)(h,(e=>e.smoothScrolling),!1)?125:0,(e=>o.jL(e))),this.scrollableElement=this.disposables.add(new c.$Z(this.rowsContainer,{alwaysConsumeMouseWheel:!0,horizontal:1,vertical:(0,n.CJ)(h,(e=>e.verticalScrollMode),C.verticalScrollMode),useShadows:(0,n.CJ)(h,(e=>e.useShadows),C.useShadows)},this.scrollable)),this.domNode.appendChild(this.scrollableElement.getDomNode()),e.appendChild(this.domNode),this.scrollableElement.onScroll(this.onScroll,this,this.disposables),(0,l.j)(this.rowsContainer,s.t.Change)(this.onTouchChange,this,this.disposables),(0,l.j)(this.scrollableElement.getDomNode(),"scroll")((e=>e.target.scrollTop=0),null,this.disposables),a.ju.map((0,l.j)(this.domNode,"dragover"),(e=>this.toDragEvent(e)))(this.onDragOver,this,this.disposables),a.ju.map((0,l.j)(this.domNode,"drop"),(e=>this.toDragEvent(e)))(this.onDrop,this,this.disposables),(0,l.j)(this.domNode,"dragleave")(this.onDragLeave,this,this.disposables),(0,l.j)(window,"dragend")(this.onDragEnd,this,this.disposables),this.setRowLineHeight=(0,n.CJ)(h,(e=>e.setRowLineHeight),C.setRowLineHeight),this.setRowHeight=(0,n.CJ)(h,(e=>e.setRowHeight),C.setRowHeight),this.supportDynamicHeights=(0,n.CJ)(h,(e=>e.supportDynamicHeights),C.supportDynamicHeights),this.dnd=(0,n.CJ)(h,(e=>e.dnd),C.dnd),this.layout()}get contentHeight(){return this.rangeMap.size}get horizontalScrolling(){return this._horizontalScrolling}set horizontalScrolling(e){if(e!==this._horizontalScrolling){if(e&&this.supportDynamicHeights)throw new Error("Horizontal scrolling and dynamic heights not supported simultaneously");if(this._horizontalScrolling=e,o.og(this.domNode,"horizontal-scrolling",this._horizontalScrolling),this._horizontalScrolling){for(const e of this.items)this.measureItemWidth(e);this.updateScrollWidth(),this.scrollableElement.setScrollDimensions({width:o.FK(this.domNode)}),this.rowsContainer.style.width=`${Math.max(this.scrollWidth||0,this.renderWidth)}px`}else this.scrollableElementWidthDelayer.cancel(),this.scrollableElement.setScrollDimensions({width:this.renderWidth,scrollWidth:this.renderWidth}),this.rowsContainer.style.width=""}}updateOptions(e){void 0!==e.additionalScrollHeight&&(this.additionalScrollHeight=e.additionalScrollHeight),void 0!==e.smoothScrolling&&this.scrollable.setSmoothScrollDuration(e.smoothScrolling?125:0),void 0!==e.horizontalScrolling&&(this.horizontalScrolling=e.horizontalScrolling)}splice(e,t,i=[]){if(this.splicing)throw new Error("Can't run recursive splices.");this.splicing=!0;try{return this._splice(e,t,i)}finally{this.splicing=!1,this._onDidChangeContentHeight.fire(this.contentHeight)}}_splice(e,t,i=[]){const n=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),s={start:e,end:e+t},o=h.e.intersect(n,s);for(let e=o.start;e<o.end;e++)this.removeItemFromDOM(e);const a={start:e+t,end:this.items.length},l=h.e.intersect(a,n),c=h.e.relativeComplement(a,n),d=i.map((e=>({id:String(this.itemId++),element:e,templateId:this.virtualDelegate.getTemplateId(e),size:this.virtualDelegate.getHeight(e),width:void 0,hasDynamicHeight:!!this.virtualDelegate.hasDynamicHeight&&this.virtualDelegate.hasDynamicHeight(e),lastDynamicHeightWidth:void 0,row:null,uri:void 0,dropTarget:!1,dragStartDisposable:r.JT.None})));let u;0===e&&t>=this.items.length?(this.rangeMap=new f,this.rangeMap.splice(0,0,d),this.items=d,u=[]):(this.rangeMap.splice(e,t,d),u=this.items.splice(e,t,...d));const p=i.length-t,m=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight),_=g(l,p),b=h.e.intersect(m,_);for(let e=b.start;e<b.end;e++)this.updateItemInDOM(this.items[e],e);const v=h.e.relativeComplement(_,m);for(const e of v)for(let t=e.start;t<e.end;t++)this.removeItemFromDOM(t);const y=c.map((e=>g(e,p))),w=[{start:e,end:e+i.length},...y].map((e=>h.e.intersect(m,e))),C=this.getNextToLastElement(w);for(const e of w)for(let t=e.start;t<e.end;t++)this.insertItemInDOM(t,C);return this.eventuallyUpdateScrollDimensions(),this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),u.map((e=>e.element))}eventuallyUpdateScrollDimensions(){this._scrollHeight=this.contentHeight,this.rowsContainer.style.height=`${this._scrollHeight}px`,this.scrollableElementUpdateDisposable||(this.scrollableElementUpdateDisposable=o.jL((()=>{this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight}),this.updateScrollWidth(),this.scrollableElementUpdateDisposable=null})))}eventuallyUpdateScrollWidth(){this.horizontalScrolling?this.scrollableElementWidthDelayer.trigger((()=>this.updateScrollWidth())):this.scrollableElementWidthDelayer.cancel()}updateScrollWidth(){if(!this.horizontalScrolling)return;let e=0;for(const t of this.items)void 0!==t.width&&(e=Math.max(e,t.width));this.scrollWidth=e,this.scrollableElement.setScrollDimensions({scrollWidth:0===e?0:e+10})}rerender(){if(this.supportDynamicHeights){for(const e of this.items)e.lastDynamicHeightWidth=void 0;this._rerender(this.lastRenderTop,this.lastRenderHeight)}}get length(){return this.items.length}get renderHeight(){return this.scrollableElement.getScrollDimensions().height}element(e){return this.items[e].element}domElement(e){const t=this.items[e].row;return t&&t.domNode}elementHeight(e){return this.items[e].size}elementTop(e){return this.rangeMap.positionAt(e)}indexAt(e){return this.rangeMap.indexAt(e)}indexAfter(e){return this.rangeMap.indexAfter(e)}layout(e,t){let i={height:"number"==typeof e?e:o.If(this.domNode)};this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,i.scrollHeight=this.scrollHeight),this.scrollableElement.setScrollDimensions(i),void 0!==t&&(this.renderWidth=t,this.supportDynamicHeights&&this._rerender(this.scrollTop,this.renderHeight),this.horizontalScrolling&&this.scrollableElement.setScrollDimensions({width:"number"==typeof t?t:o.FK(this.domNode)}))}render(e,t,i,n,r,s=!1){const o=this.getRenderRange(t,i),a=h.e.relativeComplement(o,e),l=h.e.relativeComplement(e,o),c=this.getNextToLastElement(a);if(s){const t=h.e.intersect(e,o);for(let e=t.start;e<t.end;e++)this.updateItemInDOM(this.items[e],e)}for(const e of a)for(let t=e.start;t<e.end;t++)this.insertItemInDOM(t,c);for(const e of l)for(let t=e.start;t<e.end;t++)this.removeItemFromDOM(t);void 0!==n&&(this.rowsContainer.style.left=`-${n}px`),this.rowsContainer.style.top=`-${t}px`,this.horizontalScrolling&&void 0!==r&&(this.rowsContainer.style.width=`${Math.max(r,this.renderWidth)}px`),this.lastRenderTop=t,this.lastRenderHeight=i}insertItemInDOM(e,t){const i=this.items[e];if(!i.row){i.row=this.cache.alloc(i.templateId);const e=this.accessibilityProvider.getRole(i.element)||"listitem";i.row.domNode.setAttribute("role",e);const t=this.accessibilityProvider.isChecked(i.element);void 0!==t&&i.row.domNode.setAttribute("aria-checked",String(!!t))}i.row.domNode.parentElement||(t?this.rowsContainer.insertBefore(i.row.domNode,t):this.rowsContainer.appendChild(i.row.domNode)),this.updateItemInDOM(i,e);const n=this.renderers.get(i.templateId);if(!n)throw new Error(`No renderer found for template id ${i.templateId}`);n&&n.renderElement(i.element,e,i.row.templateData,i.size);const r=this.dnd.getDragURI(i.element);if(i.dragStartDisposable.dispose(),i.row.domNode.draggable=!!r,r){const e=(0,l.j)(i.row.domNode,"dragstart");i.dragStartDisposable=e((e=>this.onDragStart(i.element,r,e)))}this.horizontalScrolling&&(this.measureItemWidth(i),this.eventuallyUpdateScrollWidth())}measureItemWidth(e){if(!e.row||!e.row.domNode)return;e.row.domNode.style.width=y.vU?"-moz-fit-content":"fit-content",e.width=o.FK(e.row.domNode);const t=window.getComputedStyle(e.row.domNode);t.paddingLeft&&(e.width+=parseFloat(t.paddingLeft)),t.paddingRight&&(e.width+=parseFloat(t.paddingRight)),e.row.domNode.style.width=""}updateItemInDOM(e,t){e.row.domNode.style.top=`${this.elementTop(t)}px`,this.setRowHeight&&(e.row.domNode.style.height=`${e.size}px`),this.setRowLineHeight&&(e.row.domNode.style.lineHeight=`${e.size}px`),e.row.domNode.setAttribute("data-index",`${t}`),e.row.domNode.setAttribute("data-last-element",t===this.length-1?"true":"false"),e.row.domNode.setAttribute("aria-setsize",String(this.accessibilityProvider.getSetSize(e.element,t,this.length))),e.row.domNode.setAttribute("aria-posinset",String(this.accessibilityProvider.getPosInSet(e.element,t))),e.row.domNode.setAttribute("id",this.getElementDomId(t)),o.og(e.row.domNode,"drop-target",e.dropTarget)}removeItemFromDOM(e){const t=this.items[e];t.dragStartDisposable.dispose();const i=this.renderers.get(t.templateId);t.row&&i&&i.disposeElement&&i.disposeElement(t.element,e,t.row.templateData,t.size),this.cache.release(t.row),t.row=null,this.horizontalScrolling&&this.eventuallyUpdateScrollWidth()}getScrollTop(){return this.scrollableElement.getScrollPosition().scrollTop}setScrollTop(e){this.scrollableElementUpdateDisposable&&(this.scrollableElementUpdateDisposable.dispose(),this.scrollableElementUpdateDisposable=null,this.scrollableElement.setScrollDimensions({scrollHeight:this.scrollHeight})),this.scrollableElement.setScrollPosition({scrollTop:e})}get scrollTop(){return this.getScrollTop()}set scrollTop(e){this.setScrollTop(e)}get scrollHeight(){return this._scrollHeight+(this.horizontalScrolling?10:0)+this.additionalScrollHeight}get onMouseClick(){return a.ju.map((0,l.j)(this.domNode,"click"),(e=>this.toMouseEvent(e)))}get onMouseDblClick(){return a.ju.map((0,l.j)(this.domNode,"dblclick"),(e=>this.toMouseEvent(e)))}get onMouseMiddleClick(){return a.ju.filter(a.ju.map((0,l.j)(this.domNode,"auxclick"),(e=>this.toMouseEvent(e))),(e=>1===e.browserEvent.button))}get onMouseDown(){return a.ju.map((0,l.j)(this.domNode,"mousedown"),(e=>this.toMouseEvent(e)))}get onContextMenu(){return a.ju.map((0,l.j)(this.domNode,"contextmenu"),(e=>this.toMouseEvent(e)))}get onTouchStart(){return a.ju.map((0,l.j)(this.domNode,"touchstart"),(e=>this.toTouchEvent(e)))}get onTap(){return a.ju.map((0,l.j)(this.rowsContainer,s.t.Tap),(e=>this.toGestureEvent(e)))}toMouseEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=void 0===t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}toTouchEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=void 0===t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}toGestureEvent(e){const t=this.getItemIndexFromEventTarget(e.initialTarget||null),i=void 0===t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}toDragEvent(e){const t=this.getItemIndexFromEventTarget(e.target||null),i=void 0===t?void 0:this.items[t];return{browserEvent:e,index:t,element:i&&i.element}}onScroll(e){try{const t=this.getRenderRange(this.lastRenderTop,this.lastRenderHeight);this.render(t,e.scrollTop,e.height,e.scrollLeft,e.scrollWidth),this.supportDynamicHeights&&this._rerender(e.scrollTop,e.height)}catch(t){throw console.error("Got bad scroll event:",e),t}}onTouchChange(e){e.preventDefault(),e.stopPropagation(),this.scrollTop-=e.translationY}onDragStart(e,t,i){if(!i.dataTransfer)return;const n=this.dnd.getDragElements(e);if(i.dataTransfer.effectAllowed="copyMove",i.dataTransfer.setData(b.go.RESOURCES,JSON.stringify([t])),i.dataTransfer.setDragImage){let e;this.dnd.getDragLabel&&(e=this.dnd.getDragLabel(n,i)),void 0===e&&(e=String(n.length));const t=o.$(".monaco-drag-image");t.textContent=e,document.body.appendChild(t),i.dataTransfer.setDragImage(t,-10,-10),setTimeout((()=>document.body.removeChild(t)),0)}this.currentDragData=new S(n),b.P$.CurrentDragAndDropData=new k(n),this.dnd.onDragStart&&this.dnd.onDragStart(this.currentDragData,i)}onDragOver(e){if(e.browserEvent.preventDefault(),this.onDragLeaveTimeout.dispose(),b.P$.CurrentDragAndDropData&&"vscode-ui"===b.P$.CurrentDragAndDropData.getData())return!1;if(this.setupDragAndDropScrollTopAnimation(e.browserEvent),!e.browserEvent.dataTransfer)return!1;if(!this.currentDragData)if(b.P$.CurrentDragAndDropData)this.currentDragData=b.P$.CurrentDragAndDropData;else{if(!e.browserEvent.dataTransfer.types)return!1;this.currentDragData=new x}const t=this.dnd.onDragOver(this.currentDragData,e.element,e.index,e.browserEvent);if(this.canDrop="boolean"==typeof t?t:t.accept,!this.canDrop)return this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),!1;let i;if(e.browserEvent.dataTransfer.dropEffect="boolean"!=typeof t&&0===t.effect?"copy":"move",i="boolean"!=typeof t&&t.feedback?t.feedback:void 0===e.index?[-1]:[e.index],i=(0,_.EB)(i).filter((e=>e>=-1&&e<this.length)).sort(((e,t)=>e-t)),i=-1===i[0]?[-1]:i,n=this.currentDragFeedback,s=i,Array.isArray(n)&&Array.isArray(s)?(0,_.fS)(n,s):n===s)return!0;var n,s;if(this.currentDragFeedback=i,this.currentDragFeedbackDisposable.dispose(),-1===i[0])o.cn(this.domNode,"drop-target"),o.cn(this.rowsContainer,"drop-target"),this.currentDragFeedbackDisposable=(0,r.OF)((()=>{o.IV(this.domNode,"drop-target"),o.IV(this.rowsContainer,"drop-target")}));else{for(const e of i){const t=this.items[e];t.dropTarget=!0,t.row&&t.row.domNode&&o.cn(t.row.domNode,"drop-target")}this.currentDragFeedbackDisposable=(0,r.OF)((()=>{for(const e of i){const t=this.items[e];t.dropTarget=!1,t.row&&t.row.domNode&&o.IV(t.row.domNode,"drop-target")}}))}return!0}onDragLeave(){this.onDragLeaveTimeout.dispose(),this.onDragLeaveTimeout=(0,v.Vg)((()=>this.clearDragOverFeedback()),100)}onDrop(e){if(!this.canDrop)return;const t=this.currentDragData;this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.currentDragData=void 0,b.P$.CurrentDragAndDropData=void 0,t&&e.browserEvent.dataTransfer&&(e.browserEvent.preventDefault(),t.update(e.browserEvent.dataTransfer),this.dnd.drop(t,e.element,e.index,e.browserEvent))}onDragEnd(e){this.canDrop=!1,this.teardownDragAndDropScrollTopAnimation(),this.clearDragOverFeedback(),this.currentDragData=void 0,b.P$.CurrentDragAndDropData=void 0,this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}clearDragOverFeedback(){this.currentDragFeedback=void 0,this.currentDragFeedbackDisposable.dispose(),this.currentDragFeedbackDisposable=r.JT.None}setupDragAndDropScrollTopAnimation(e){if(!this.dragOverAnimationDisposable){const e=o.xQ(this.domNode).top;this.dragOverAnimationDisposable=o.jt(this.animateDragAndDropScrollTop.bind(this,e))}this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationStopDisposable=(0,v.Vg)((()=>{this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}),1e3),this.dragOverMouseY=e.pageY}animateDragAndDropScrollTop(e){if(void 0===this.dragOverMouseY)return;const t=this.dragOverMouseY-e,i=this.renderHeight-35;t<35?this.scrollTop+=Math.max(-14,Math.floor(.3*(t-35))):t>i&&(this.scrollTop+=Math.min(14,Math.floor(.3*(t-i))))}teardownDragAndDropScrollTopAnimation(){this.dragOverAnimationStopDisposable.dispose(),this.dragOverAnimationDisposable&&(this.dragOverAnimationDisposable.dispose(),this.dragOverAnimationDisposable=void 0)}getItemIndexFromEventTarget(e){const t=this.scrollableElement.getDomNode();let i=e;for(;i instanceof HTMLElement&&i!==this.rowsContainer&&t.contains(i);){const e=i.getAttribute("data-index");if(e){const t=Number(e);if(!isNaN(t))return t}i=i.parentElement}}getRenderRange(e,t){return{start:this.rangeMap.indexAt(e),end:this.rangeMap.indexAfter(e+t-1)}}_rerender(e,t){const i=this.getRenderRange(e,t);let n,r;e===this.elementTop(i.start)?(n=i.start,r=0):i.end-i.start>1&&(n=i.start+1,r=this.elementTop(n)-e);let s=0;for(;;){const o=this.getRenderRange(e,t);let a=!1;for(let e=o.start;e<o.end;e++){const t=this.probeDynamicHeight(e);0!==t&&this.rangeMap.splice(e,1,[this.items[e]]),s+=t,a=a||0!==t}if(!a){0!==s&&this.eventuallyUpdateScrollDimensions();const e=h.e.relativeComplement(i,o);for(const t of e)for(let e=t.start;e<t.end;e++)this.items[e].row&&this.removeItemFromDOM(e);const t=h.e.relativeComplement(o,i);for(const e of t)for(let t=e.start;t<e.end;t++){const e=t+1,i=e<this.items.length?this.items[e].row:null,n=i?i.domNode:null;this.insertItemInDOM(t,n)}for(let e=o.start;e<o.end;e++)this.items[e].row&&this.updateItemInDOM(this.items[e],e);return"number"==typeof n&&(this.scrollTop=this.elementTop(n)-r),void this._onDidChangeContentHeight.fire(this.contentHeight)}}}probeDynamicHeight(e){const t=this.items[e];if(!t.hasDynamicHeight||t.lastDynamicHeightWidth===this.renderWidth)return 0;if(this.virtualDelegate.hasDynamicHeight&&!this.virtualDelegate.hasDynamicHeight(t.element))return 0;const i=t.size;if(!this.setRowHeight&&t.row&&t.row.domNode){let e=t.row.domNode.offsetHeight;return t.size=e,t.lastDynamicHeightWidth=this.renderWidth,e-i}const n=this.cache.alloc(t.templateId);n.domNode.style.height="",this.rowsContainer.appendChild(n.domNode);const r=this.renderers.get(t.templateId);return r&&(r.renderElement(t.element,e,n.templateData,void 0),r.disposeElement&&r.disposeElement(t.element,e,n.templateData,void 0)),t.size=n.domNode.offsetHeight,this.virtualDelegate.setDynamicHeight&&this.virtualDelegate.setDynamicHeight(t.element,t.size),t.lastDynamicHeightWidth=this.renderWidth,this.rowsContainer.removeChild(n.domNode),this.cache.release(n),t.size-i}getNextToLastElement(e){const t=e[e.length-1];if(!t)return null;const i=this.items[t.end];return i&&i.row?i.row.domNode:null}getElementDomId(e){return`${this.domId}_${e}`}dispose(){if(this.items){for(const e of this.items)if(e.row){const t=this.renderers.get(e.row.templateId);t&&t.disposeTemplate(e.row.templateData)}this.items=[]}this.domNode&&this.domNode.parentNode&&this.domNode.parentNode.removeChild(this.domNode),(0,r.B9)(this.disposables)}}M.InstanceCount=0,w([m.H],M.prototype,"onMouseClick",null),w([m.H],M.prototype,"onMouseDblClick",null),w([m.H],M.prototype,"onMouseMiddleClick",null),w([m.H],M.prototype,"onMouseDown",null),w([m.H],M.prototype,"onContextMenu",null),w([m.H],M.prototype,"onTouchStart",null),w([m.H],M.prototype,"onTap",null)},43799:(e,t,i)=>{"use strict";i.d(t,{WK:()=>E,wD:()=>F,aV:()=>U,sx:()=>P,cK:()=>M,hD:()=>D,wn:()=>A,Zo:()=>O});var n=i(5976),r=i(98401),s=i(9488),o=i(49898),a=i(65321),l=i(1432),c=i(10553),d=i(59069),h=i(4669),u=i(4850);class g extends Error{constructor(e,t){super(`ListError [${e}] ${t}`)}}var f=i(25707),p=i(41264),m=i(36248);class _{constructor(e){this.spliceables=e}splice(e,t,i){this.spliceables.forEach((n=>n.splice(e,t,i)))}}var b,v=i(59870),y=i(75392),w=i(85152),C=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o};class S{constructor(e){this.trait=e,this.renderedElements=[]}get templateId(){return`template:${this.trait.trait}`}renderTemplate(e){return e}renderElement(e,t,i){const n=(0,s.Zr)(this.renderedElements,(e=>e.templateData===i));if(n>=0){const e=this.renderedElements[n];this.trait.unrender(i),e.index=t}else{const e={index:t,templateData:i};this.renderedElements.push(e)}this.trait.renderIndex(t,i)}splice(e,t,i){const n=[];for(const r of this.renderedElements)r.index<e?n.push(r):r.index>=e+t&&n.push({index:r.index+i-t,templateData:r.templateData});this.renderedElements=n}renderIndexes(e){for(const{index:t,templateData:i}of this.renderedElements)e.indexOf(t)>-1&&this.trait.renderIndex(t,i)}disposeTemplate(e){const t=(0,s.Zr)(this.renderedElements,(t=>t.templateData===e));t<0||this.renderedElements.splice(t,1)}}class k{constructor(e){this._trait=e,this.indexes=[],this.sortedIndexes=[],this._onChange=new h.Q5,this.onChange=this._onChange.event}get trait(){return this._trait}get renderer(){return new S(this)}splice(e,t,i){const n=i.length-t,r=e+t,s=[...this.sortedIndexes.filter((t=>t<e)),...i.map(((t,i)=>t?i+e:-1)).filter((e=>-1!==e)),...this.sortedIndexes.filter((e=>e>=r)).map((e=>e+n))];this.renderer.splice(e,t,i.length),this._set(s,s)}renderIndex(e,t){a.og(t,this._trait,this.contains(e))}unrender(e){a.IV(e,this._trait)}set(e,t){return this._set(e,[...e].sort(H),t)}_set(e,t,i){const n=this.indexes,r=this.sortedIndexes;this.indexes=e,this.sortedIndexes=t;const s=Y(r,e);return this.renderer.renderIndexes(s),this._onChange.fire({indexes:e,browserEvent:i}),n}get(){return this.indexes}contains(e){return(0,s.ry)(this.sortedIndexes,e,H)>=0}dispose(){(0,n.B9)(this._onChange)}}C([o.H],k.prototype,"renderer",null);class x extends k{constructor(e){super("selected"),this.setAriaSelected=e}renderIndex(e,t){super.renderIndex(e,t),this.setAriaSelected&&(this.contains(e)?t.setAttribute("aria-selected","true"):t.setAttribute("aria-selected","false"))}}class L{constructor(e,t,i){this.trait=e,this.view=t,this.identityProvider=i}splice(e,t,i){if(!this.identityProvider)return this.trait.splice(e,t,i.map((()=>!1)));const n=this.trait.get().map((e=>this.identityProvider.getId(this.view.element(e)).toString())),r=i.map((e=>n.indexOf(this.identityProvider.getId(e).toString())>-1));this.trait.splice(e,t,r)}}function M(e){return"INPUT"===e.tagName||"TEXTAREA"===e.tagName}function D(e){return!!a.pv(e,"monaco-editor")||!a.pv(e,"monaco-list")&&!!e.parentElement&&D(e.parentElement)}class N{constructor(e,t,i){this.list=e,this.view=t,this.disposables=new n.SL;const r=!1!==i.multipleSelectionSupport,s=h.ju.chain((0,u.j)(t.domNode,"keydown")).filter((e=>!M(e.target))).map((e=>new d.y(e)));s.filter((e=>3===e.keyCode)).on(this.onEnter,this,this.disposables),s.filter((e=>16===e.keyCode)).on(this.onUpArrow,this,this.disposables),s.filter((e=>18===e.keyCode)).on(this.onDownArrow,this,this.disposables),s.filter((e=>11===e.keyCode)).on(this.onPageUpArrow,this,this.disposables),s.filter((e=>12===e.keyCode)).on(this.onPageDownArrow,this,this.disposables),s.filter((e=>9===e.keyCode)).on(this.onEscape,this,this.disposables),r&&s.filter((e=>(l.dz?e.metaKey:e.ctrlKey)&&31===e.keyCode)).on(this.onCtrlA,this,this.disposables)}onEnter(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection(this.list.getFocus(),e.browserEvent)}onUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPrevious(1,!1,e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}onDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNext(1,!1,e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}onPageUpArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusPreviousPage(e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}onPageDownArrow(e){e.preventDefault(),e.stopPropagation(),this.list.focusNextPage(e.browserEvent),this.list.reveal(this.list.getFocus()[0]),this.view.domNode.focus()}onCtrlA(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection((0,s.w6)(this.list.length),e.browserEvent),this.view.domNode.focus()}onEscape(e){e.preventDefault(),e.stopPropagation(),this.list.setSelection([],e.browserEvent),this.view.domNode.focus()}dispose(){this.disposables.dispose()}}!function(e){e[e.Idle=0]="Idle",e[e.Typing=1]="Typing"}(b||(b={}));const E=new class{mightProducePrintableCharacter(e){return!(e.ctrlKey||e.metaKey||e.altKey)&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30||e.keyCode>=93&&e.keyCode<=102||e.keyCode>=80&&e.keyCode<=90)}};class T{constructor(e,t,i,r){this.list=e,this.view=t,this.keyboardNavigationLabelProvider=i,this.delegate=r,this.enabled=!1,this.state=b.Idle,this.automaticKeyboardNavigation=!0,this.triggered=!1,this.previouslyFocused=-1,this.enabledDisposables=new n.SL,this.disposables=new n.SL,this.updateOptions(e.options)}updateOptions(e){void 0===e.enableKeyboardNavigation||e.enableKeyboardNavigation?this.enable():this.disable(),void 0!==e.automaticKeyboardNavigation&&(this.automaticKeyboardNavigation=e.automaticKeyboardNavigation)}enable(){if(this.enabled)return;const e=h.ju.chain((0,u.j)(this.view.domNode,"keydown")).filter((e=>!M(e.target))).filter((()=>this.automaticKeyboardNavigation||this.triggered)).map((e=>new d.y(e))).filter((e=>this.delegate.mightProducePrintableCharacter(e))).forEach((e=>{e.stopPropagation(),e.preventDefault()})).map((e=>e.browserEvent.key)).event,t=h.ju.debounce(e,(()=>null),800);h.ju.reduce(h.ju.any(e,t),((e,t)=>null===t?null:(e||"")+t))(this.onInput,this,this.enabledDisposables),t(this.onClear,this,this.enabledDisposables),this.enabled=!0,this.triggered=!1}disable(){this.enabled&&(this.enabledDisposables.clear(),this.enabled=!1,this.triggered=!1)}onClear(){var e;const t=this.list.getFocus();if(t.length>0&&t[0]===this.previouslyFocused){const i=null===(e=this.list.options.accessibilityProvider)||void 0===e?void 0:e.getAriaLabel(this.list.element(t[0]));i&&(0,w.Z9)(i)}this.previouslyFocused=-1}onInput(e){if(!e)return this.state=b.Idle,void(this.triggered=!1);const t=this.list.getFocus(),i=t.length>0?t[0]:0,n=this.state===b.Idle?1:0;this.state=b.Typing;for(let t=0;t<this.list.length;t++){const r=(i+t+n)%this.list.length,s=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(r)),o=s&&s.toString();if(void 0===o||(0,y.Ji)(e,o))return this.previouslyFocused=i,this.list.setFocus([r]),void this.list.reveal(r)}}dispose(){this.disable(),this.enabledDisposables.dispose(),this.disposables.dispose()}}class I{constructor(e,t){this.list=e,this.view=t,this.disposables=new n.SL,h.ju.chain((0,u.j)(t.domNode,"keydown")).filter((e=>!M(e.target))).map((e=>new d.y(e))).filter((e=>!(2!==e.keyCode||e.ctrlKey||e.metaKey||e.shiftKey||e.altKey))).on(this.onTab,this,this.disposables)}onTab(e){if(e.target!==this.view.domNode)return;const t=this.list.getFocus();if(0===t.length)return;const i=this.view.domElement(t[0]);if(!i)return;const n=i.querySelector("[tabIndex]");if(!(n&&n instanceof HTMLElement&&-1!==n.tabIndex))return;const r=window.getComputedStyle(n);"hidden"!==r.visibility&&"none"!==r.display&&(e.preventDefault(),e.stopPropagation(),n.focus())}dispose(){this.disposables.dispose()}}function O(e){return l.dz?e.browserEvent.metaKey:e.browserEvent.ctrlKey}function A(e){return e.browserEvent.shiftKey}const R={isSelectionSingleChangeEvent:O,isSelectionRangeChangeEvent:A};class P{constructor(e){this.list=e,this.disposables=new n.SL,this._onPointer=new h.Q5,this.onPointer=this._onPointer.event,this.multipleSelectionSupport=!(!1===e.options.multipleSelectionSupport),this.multipleSelectionSupport&&(this.multipleSelectionController=e.options.multipleSelectionController||R),this.mouseSupport=void 0===e.options.mouseSupport||!!e.options.mouseSupport,this.mouseSupport&&(e.onMouseDown(this.onMouseDown,this,this.disposables),e.onContextMenu(this.onContextMenu,this,this.disposables),e.onMouseDblClick(this.onDoubleClick,this,this.disposables),e.onTouchStart(this.onMouseDown,this,this.disposables),this.disposables.add(c.o.addTarget(e.getHTMLElement()))),h.ju.any(e.onMouseClick,e.onMouseMiddleClick,e.onTap)(this.onViewPointer,this,this.disposables)}isSelectionSingleChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionSingleChangeEvent(e):l.dz?e.browserEvent.metaKey:e.browserEvent.ctrlKey}isSelectionRangeChangeEvent(e){return this.multipleSelectionController?this.multipleSelectionController.isSelectionRangeChangeEvent(e):e.browserEvent.shiftKey}isSelectionChangeEvent(e){return this.isSelectionSingleChangeEvent(e)||this.isSelectionRangeChangeEvent(e)}onMouseDown(e){D(e.browserEvent.target)||document.activeElement!==e.browserEvent.target&&this.list.domFocus()}onContextMenu(e){if(D(e.browserEvent.target))return;const t=void 0===e.index?[]:[e.index];this.list.setFocus(t,e.browserEvent)}onViewPointer(e){if(!this.mouseSupport)return;if(M(e.browserEvent.target)||D(e.browserEvent.target))return;let t=this.list.getFocus()[0];const i=this.list.getSelection();t=void 0===t?i[0]:t;const n=e.index;return void 0===n?(this.list.setFocus([],e.browserEvent),void this.list.setSelection([],e.browserEvent)):this.multipleSelectionSupport&&this.isSelectionRangeChangeEvent(e)||this.multipleSelectionSupport&&this.isSelectionChangeEvent(e)?this.changeSelection(e,t):(this.list.setFocus([n],e.browserEvent),(r=e.browserEvent)instanceof MouseEvent&&2===r.button||this.list.setSelection([n],e.browserEvent),void this._onPointer.fire(e));var r}onDoubleClick(e){if(M(e.browserEvent.target)||D(e.browserEvent.target))return;if(this.multipleSelectionSupport&&this.isSelectionChangeEvent(e))return;const t=this.list.getFocus();this.list.setSelection(t,e.browserEvent)}changeSelection(e,t){const i=e.index;if(this.isSelectionRangeChangeEvent(e)&&void 0!==t){const n=Math.min(t,i),r=Math.max(t,i),o=(0,s.w6)(n,r+1),a=this.list.getSelection(),l=function(e,t){const i=e.indexOf(t);if(-1===i)return[];const n=[];let r=i-1;for(;r>=0&&e[r]===t-(i-r);)n.push(e[r--]);for(n.reverse(),r=i;r<e.length&&e[r]===t+(r-i);)n.push(e[r++]);return n}(Y(a,[t]),t);if(0===l.length)return;const c=Y(o,function(e,t){const i=[];let n=0,r=0;for(;n<e.length||r<t.length;)if(n>=e.length)i.push(t[r++]);else if(r>=t.length)i.push(e[n++]);else{if(e[n]===t[r]){n++,r++;continue}e[n]<t[r]?i.push(e[n++]):r++}return i}(a,l));this.list.setSelection(c,e.browserEvent)}else if(this.isSelectionSingleChangeEvent(e)){const t=this.list.getSelection(),n=t.filter((e=>e!==i));this.list.setFocus([i]),t.length===n.length?this.list.setSelection([...n,i],e.browserEvent):this.list.setSelection(n,e.browserEvent)}}dispose(){this.disposables.dispose()}}class F{constructor(e,t){this.styleElement=e,this.selectorSuffix=t}style(e){const t=this.selectorSuffix&&`.${this.selectorSuffix}`,i=[];e.listBackground&&(e.listBackground.isOpaque()?i.push(`.monaco-list${t} .monaco-list-rows { background: ${e.listBackground}; }`):l.dz||console.warn(`List with id '${this.selectorSuffix}' was styled with a non-opaque background color. This will break sub-pixel antialiasing.`)),e.listFocusBackground&&(i.push(`.monaco-list${t}:focus .monaco-list-row.focused { background-color: ${e.listFocusBackground}; }`),i.push(`.monaco-list${t}:focus .monaco-list-row.focused:hover { background-color: ${e.listFocusBackground}; }`)),e.listFocusForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.focused { color: ${e.listFocusForeground}; }`),e.listActiveSelectionBackground&&(i.push(`.monaco-list${t}:focus .monaco-list-row.selected { background-color: ${e.listActiveSelectionBackground}; }`),i.push(`.monaco-list${t}:focus .monaco-list-row.selected:hover { background-color: ${e.listActiveSelectionBackground}; }`)),e.listActiveSelectionForeground&&i.push(`.monaco-list${t}:focus .monaco-list-row.selected { color: ${e.listActiveSelectionForeground}; }`),e.listFocusAndSelectionBackground&&i.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${t}:focus .monaco-list-row.selected.focused { background-color: ${e.listFocusAndSelectionBackground}; }\n\t\t\t`),e.listFocusAndSelectionForeground&&i.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${t}:focus .monaco-list-row.selected.focused { color: ${e.listFocusAndSelectionForeground}; }\n\t\t\t`),e.listInactiveFocusBackground&&(i.push(`.monaco-list${t} .monaco-list-row.focused { background-color: ${e.listInactiveFocusBackground}; }`),i.push(`.monaco-list${t} .monaco-list-row.focused:hover { background-color: ${e.listInactiveFocusBackground}; }`)),e.listInactiveSelectionBackground&&(i.push(`.monaco-list${t} .monaco-list-row.selected { background-color: ${e.listInactiveSelectionBackground}; }`),i.push(`.monaco-list${t} .monaco-list-row.selected:hover { background-color: ${e.listInactiveSelectionBackground}; }`)),e.listInactiveSelectionForeground&&i.push(`.monaco-list${t} .monaco-list-row.selected { color: ${e.listInactiveSelectionForeground}; }`),e.listHoverBackground&&i.push(`.monaco-list${t}:not(.drop-target) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${e.listHoverBackground}; }`),e.listHoverForeground&&i.push(`.monaco-list${t} .monaco-list-row:hover:not(.selected):not(.focused) { color: ${e.listHoverForeground}; }`),e.listSelectionOutline&&i.push(`.monaco-list${t} .monaco-list-row.selected { outline: 1px dotted ${e.listSelectionOutline}; outline-offset: -1px; }`),e.listFocusOutline&&i.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${t}:focus .monaco-list-row.focused { outline: 1px solid ${e.listFocusOutline}; outline-offset: -1px; }\n\t\t\t`),e.listInactiveFocusOutline&&i.push(`.monaco-list${t} .monaco-list-row.focused { outline: 1px dotted ${e.listInactiveFocusOutline}; outline-offset: -1px; }`),e.listHoverOutline&&i.push(`.monaco-list${t} .monaco-list-row:hover { outline: 1px dashed ${e.listHoverOutline}; outline-offset: -1px; }`),e.listDropBackground&&i.push(`\n\t\t\t\t.monaco-list${t}.drop-target,\n\t\t\t\t.monaco-list${t} .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list${t} .monaco-list-row.drop-target { background-color: ${e.listDropBackground} !important; color: inherit !important; }\n\t\t\t`),e.listFilterWidgetBackground&&i.push(`.monaco-list-type-filter { background-color: ${e.listFilterWidgetBackground} }`),e.listFilterWidgetOutline&&i.push(`.monaco-list-type-filter { border: 1px solid ${e.listFilterWidgetOutline}; }`),e.listFilterWidgetNoMatchesOutline&&i.push(`.monaco-list-type-filter.no-matches { border: 1px solid ${e.listFilterWidgetNoMatchesOutline}; }`),e.listMatchesShadow&&i.push(`.monaco-list-type-filter { box-shadow: 1px 1px 1px ${e.listMatchesShadow}; }`);const n=i.join("\n");n!==this.styleElement.innerHTML&&(this.styleElement.innerHTML=n)}}const B={listFocusBackground:p.Il.fromHex("#7FB0D0"),listActiveSelectionBackground:p.Il.fromHex("#0E639C"),listActiveSelectionForeground:p.Il.fromHex("#FFFFFF"),listFocusAndSelectionBackground:p.Il.fromHex("#094771"),listFocusAndSelectionForeground:p.Il.fromHex("#FFFFFF"),listInactiveSelectionBackground:p.Il.fromHex("#3F3F46"),listHoverBackground:p.Il.fromHex("#2A2D2E"),listDropBackground:p.Il.fromHex("#383B3D"),treeIndentGuidesStroke:p.Il.fromHex("#a9a9a9")},W={keyboardSupport:!0,mouseSupport:!0,multipleSelectionSupport:!0,dnd:{getDragURI:()=>null,onDragStart(){},onDragOver:()=>!1,drop(){}}};function Y(e,t){const i=[];let n=0,r=0;for(;n<e.length||r<t.length;)if(n>=e.length)i.push(t[r++]);else if(r>=t.length)i.push(e[n++]);else{if(e[n]===t[r]){i.push(e[n]),n++,r++;continue}e[n]<t[r]?i.push(e[n++]):i.push(t[r++])}return i}const H=(e,t)=>e-t;class j{constructor(e,t){this._templateId=e,this.renderers=t}get templateId(){return this._templateId}renderTemplate(e){return this.renderers.map((t=>t.renderTemplate(e)))}renderElement(e,t,i,n){let r=0;for(const s of this.renderers)s.renderElement(e,t,i[r++],n)}disposeElement(e,t,i,n){let r=0;for(const s of this.renderers)s.disposeElement&&s.disposeElement(e,t,i[r],n),r+=1}disposeTemplate(e){let t=0;for(const i of this.renderers)i.disposeTemplate(e[t++])}}class V{constructor(e){this.accessibilityProvider=e,this.templateId="a18n"}renderTemplate(e){return e}renderElement(e,t,i){const n=this.accessibilityProvider.getAriaLabel(e);n?i.setAttribute("aria-label",n):i.removeAttribute("aria-label");const r=this.accessibilityProvider.getAriaLevel&&this.accessibilityProvider.getAriaLevel(e);"number"==typeof r?i.setAttribute("aria-level",`${r}`):i.removeAttribute("aria-level")}disposeTemplate(e){}}class z{constructor(e,t){this.list=e,this.dnd=t}getDragElements(e){const t=this.list.getSelectedElements();return t.indexOf(e)>-1?t:[e]}getDragURI(e){return this.dnd.getDragURI(e)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e,t)}onDragStart(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(e,t)}onDragOver(e,t,i,n){return this.dnd.onDragOver(e,t,i,n)}onDragEnd(e){this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}drop(e,t,i,n){this.dnd.drop(e,t,i,n)}}class U{constructor(e,t,i,r,s=W){var o;this.user=e,this._options=s,this.eventBufferer=new h.E7,this._ariaLabel="",this.disposables=new n.SL,this.didJustPressContextMenuKey=!1,this._onDidDispose=new h.Q5,this.onDidDispose=this._onDidDispose.event;const l=this._options.accessibilityProvider&&this._options.accessibilityProvider.getWidgetRole?null===(o=this._options.accessibilityProvider)||void 0===o?void 0:o.getWidgetRole():"list";this.selection=new x("listbox"!==l),this.focus=new k("focused"),(0,m.jB)(s,B,!1);const c=[this.focus.renderer,this.selection.renderer];this.accessibilityProvider=s.accessibilityProvider,this.accessibilityProvider&&(c.push(new V(this.accessibilityProvider)),this.accessibilityProvider.onDidChangeActiveDescendant&&this.accessibilityProvider.onDidChangeActiveDescendant(this.onDidChangeActiveDescendant,this,this.disposables)),r=r.map((e=>new j(e.templateId,[...c,e])));const d=Object.assign(Object.assign({},s),{dnd:s.dnd&&new z(this,s.dnd)});if(this.view=new f.Bv(t,i,r,d),this.view.domNode.setAttribute("role",l),s.styleController)this.styleController=s.styleController(this.view.domId);else{const e=a.dS(this.view.domNode);this.styleController=new F(e,this.view.domId)}if(this.spliceable=new _([new L(this.focus,this.view,s.identityProvider),new L(this.selection,this.view,s.identityProvider),this.view]),this.disposables.add(this.focus),this.disposables.add(this.selection),this.disposables.add(this.view),this.disposables.add(this._onDidDispose),this.onDidFocus=h.ju.map((0,u.j)(this.view.domNode,"focus",!0),(()=>null)),this.onDidBlur=h.ju.map((0,u.j)(this.view.domNode,"blur",!0),(()=>null)),this.disposables.add(new I(this,this.view)),"boolean"!=typeof s.keyboardSupport||s.keyboardSupport){const e=new N(this,this.view,s);this.disposables.add(e)}if(s.keyboardNavigationLabelProvider){const e=s.keyboardNavigationDelegate||E;this.typeLabelController=new T(this,this.view,s.keyboardNavigationLabelProvider,e),this.disposables.add(this.typeLabelController)}this.mouseController=this.createMouseController(s),this.disposables.add(this.mouseController),this.onDidChangeFocus(this._onFocusChange,this,this.disposables),this.onDidChangeSelection(this._onSelectionChange,this,this.disposables),this.accessibilityProvider&&(this.ariaLabel=this.accessibilityProvider.getWidgetAriaLabel()),s.multipleSelectionSupport&&this.view.domNode.setAttribute("aria-multiselectable","true")}get onDidChangeFocus(){return h.ju.map(this.eventBufferer.wrapEvent(this.focus.onChange),(e=>this.toListEvent(e)))}get onDidChangeSelection(){return h.ju.map(this.eventBufferer.wrapEvent(this.selection.onChange),(e=>this.toListEvent(e)))}get domId(){return this.view.domId}get onMouseClick(){return this.view.onMouseClick}get onMouseDblClick(){return this.view.onMouseDblClick}get onMouseMiddleClick(){return this.view.onMouseMiddleClick}get onPointer(){return this.mouseController.onPointer}get onMouseDown(){return this.view.onMouseDown}get onTouchStart(){return this.view.onTouchStart}get onTap(){return this.view.onTap}get onContextMenu(){const e=h.ju.chain((0,u.j)(this.view.domNode,"keydown")).map((e=>new d.y(e))).filter((e=>this.didJustPressContextMenuKey=58===e.keyCode||e.shiftKey&&68===e.keyCode)).filter((e=>(e.preventDefault(),e.stopPropagation(),!1))).event,t=h.ju.chain((0,u.j)(this.view.domNode,"keyup")).filter((()=>{const e=this.didJustPressContextMenuKey;return this.didJustPressContextMenuKey=!1,e})).filter((()=>this.getFocus().length>0&&!!this.view.domElement(this.getFocus()[0]))).map((e=>{const t=this.getFocus()[0];return{index:t,element:this.view.element(t),anchor:this.view.domElement(t),browserEvent:e}})).event,i=h.ju.chain(this.view.onContextMenu).filter((()=>!this.didJustPressContextMenuKey)).map((({element:e,index:t,browserEvent:i})=>({element:e,index:t,anchor:{x:i.clientX+1,y:i.clientY},browserEvent:i}))).event;return h.ju.any(e,t,i)}get onKeyDown(){return(0,u.j)(this.view.domNode,"keydown")}createMouseController(e){return new P(this)}updateOptions(e={}){this._options=Object.assign(Object.assign({},this._options),e),this.typeLabelController&&this.typeLabelController.updateOptions(this._options),this.view.updateOptions(e)}get options(){return this._options}splice(e,t,i=[]){if(e<0||e>this.view.length)throw new g(this.user,`Invalid start index: ${e}`);if(t<0)throw new g(this.user,`Invalid delete count: ${t}`);0===t&&0===i.length||this.eventBufferer.bufferEvents((()=>this.spliceable.splice(e,t,i)))}rerender(){this.view.rerender()}element(e){return this.view.element(e)}get length(){return this.view.length}get contentHeight(){return this.view.contentHeight}get scrollTop(){return this.view.getScrollTop()}set scrollTop(e){this.view.setScrollTop(e)}get ariaLabel(){return this._ariaLabel}set ariaLabel(e){this._ariaLabel=e,this.view.domNode.setAttribute("aria-label",e)}domFocus(){this.view.domNode.focus()}layout(e,t){this.view.layout(e,t)}setSelection(e,t){for(const t of e)if(t<0||t>=this.length)throw new g(this.user,`Invalid index ${t}`);this.selection.set(e,t)}getSelection(){return this.selection.get()}getSelectedElements(){return this.getSelection().map((e=>this.view.element(e)))}setFocus(e,t){for(const t of e)if(t<0||t>=this.length)throw new g(this.user,`Invalid index ${t}`);this.focus.set(e,t)}focusNext(e=1,t=!1,i,n){if(0===this.length)return;const r=this.focus.get(),s=this.findNextIndex(r.length>0?r[0]+e:0,t,n);s>-1&&this.setFocus([s],i)}focusPrevious(e=1,t=!1,i,n){if(0===this.length)return;const r=this.focus.get(),s=this.findPreviousIndex(r.length>0?r[0]-e:0,t,n);s>-1&&this.setFocus([s],i)}focusNextPage(e,t){let i=this.view.indexAt(this.view.getScrollTop()+this.view.renderHeight);i=0===i?0:i-1;const n=this.view.element(i),r=this.getFocusedElements()[0];if(r!==n){const n=this.findPreviousIndex(i,!1,t);n>-1&&r!==this.view.element(n)?this.setFocus([n],e):this.setFocus([i],e)}else{const n=this.view.getScrollTop();this.view.setScrollTop(n+this.view.renderHeight-this.view.elementHeight(i)),this.view.getScrollTop()!==n&&setTimeout((()=>this.focusNextPage(e,t)),0)}}focusPreviousPage(e,t){let i;const n=this.view.getScrollTop();i=0===n?this.view.indexAt(n):this.view.indexAfter(n-1);const r=this.view.element(i),s=this.getFocusedElements()[0];if(s!==r){const n=this.findNextIndex(i,!1,t);n>-1&&s!==this.view.element(n)?this.setFocus([n],e):this.setFocus([i],e)}else{const i=n;this.view.setScrollTop(n-this.view.renderHeight),this.view.getScrollTop()!==i&&setTimeout((()=>this.focusPreviousPage(e,t)),0)}}focusLast(e,t){if(0===this.length)return;const i=this.findPreviousIndex(this.length-1,!1,t);i>-1&&this.setFocus([i],e)}focusFirst(e,t){this.focusNth(0,e,t)}focusNth(e,t,i){if(0===this.length)return;const n=this.findNextIndex(e,!1,i);n>-1&&this.setFocus([n],t)}findNextIndex(e,t=!1,i){for(let n=0;n<this.length;n++){if(e>=this.length&&!t)return-1;if(e%=this.length,!i||i(this.element(e)))return e;e++}return-1}findPreviousIndex(e,t=!1,i){for(let n=0;n<this.length;n++){if(e<0&&!t)return-1;if(e=(this.length+e%this.length)%this.length,!i||i(this.element(e)))return e;e--}return-1}getFocus(){return this.focus.get()}getFocusedElements(){return this.getFocus().map((e=>this.view.element(e)))}reveal(e,t){if(e<0||e>=this.length)throw new g(this.user,`Invalid index ${e}`);const i=this.view.getScrollTop(),n=this.view.elementTop(e),s=this.view.elementHeight(e);if((0,r.hj)(t)){const e=s-this.view.renderHeight;this.view.setScrollTop(e*(0,v.u)(t,0,1)+n)}else{const e=n+s,t=i+this.view.renderHeight;n<i&&e>=t||(n<i?this.view.setScrollTop(n):e>=t&&this.view.setScrollTop(e-this.view.renderHeight))}}getRelativeTop(e){if(e<0||e>=this.length)throw new g(this.user,`Invalid index ${e}`);const t=this.view.getScrollTop(),i=this.view.elementTop(e),n=this.view.elementHeight(e);if(i<t||i+n>t+this.view.renderHeight)return null;const r=n-this.view.renderHeight;return Math.abs((t-i)/r)}getHTMLElement(){return this.view.domNode}style(e){this.styleController.style(e)}toListEvent({indexes:e,browserEvent:t}){return{indexes:e,elements:e.map((e=>this.view.element(e))),browserEvent:t}}_onFocusChange(){const e=this.focus.get();a.og(this.view.domNode,"element-focused",e.length>0),this.onDidChangeActiveDescendant()}onDidChangeActiveDescendant(){var e;const t=this.focus.get();if(t.length>0){let i;(null===(e=this.accessibilityProvider)||void 0===e?void 0:e.getActiveDescendantId)&&(i=this.accessibilityProvider.getActiveDescendantId(this.view.element(t[0]))),this.view.domNode.setAttribute("aria-activedescendant",i||this.view.getElementDomId(t[0]))}else this.view.domNode.removeAttribute("aria-activedescendant")}_onSelectionChange(){const e=this.selection.get();a.og(this.view.domNode,"selection-none",0===e.length),a.og(this.view.domNode,"selection-single",1===e.length),a.og(this.view.domNode,"selection-multiple",e.length>1)}dispose(){this._onDidDispose.fire(),this.disposables.dispose(),this._onDidDispose.dispose()}}C([o.H],U.prototype,"onDidChangeFocus",null),C([o.H],U.prototype,"onDidChangeSelection",null),C([o.H],U.prototype,"onContextMenu",null)},96542:(e,t,i)=>{"use strict";i.d(t,{S:()=>n});const n="monaco-mouse-cursor-text"},73098:(e,t,i)=>{"use strict";i.d(t,{g:()=>u});var n=i(5976),r=i(1432),s=i(98401),o=i(10553),a=i(23938),l=i(4669),c=i(65321),d=i(4850);const h=new l.Q5;class u extends n.JT{constructor(e,t,i){super(),this._state=3,this._onDidEnablementChange=this._register(new l.Q5),this.onDidEnablementChange=this._onDidEnablementChange.event,this._onDidStart=this._register(new l.Q5),this.onDidStart=this._onDidStart.event,this._onDidChange=this._register(new l.Q5),this.onDidChange=this._onDidChange.event,this._onDidReset=this._register(new l.Q5),this.onDidReset=this._onDidReset.event,this._onDidEnd=this._register(new l.Q5),this.onDidEnd=this._onDidEnd.event,this.linkedSash=void 0,this.orthogonalStartSashDisposables=this._register(new n.SL),this.orthogonalEndSashDisposables=this._register(new n.SL),this.el=(0,c.R3)(e,(0,c.$)(".monaco-sash")),r.dz&&(0,c.cn)(this.el,"mac"),this._register((0,d.j)(this.el,"mousedown")(this.onMouseDown,this)),this._register((0,d.j)(this.el,"dblclick")(this.onMouseDoubleClick,this)),this._register(o.o.addTarget(this.el)),this._register((0,d.j)(this.el,o.t.Start)(this.onTouchStart,this)),"number"==typeof i.size?(this.size=i.size,0===i.orientation?this.el.style.width=`${this.size}px`:this.el.style.height=`${this.size}px`):(this.size=4,this._register(h.event((e=>{this.size=e,this.layout()})))),this.hidden=!1,this.layoutProvider=t,this.orthogonalStartSash=i.orthogonalStartSash,this.orthogonalEndSash=i.orthogonalEndSash,this.orientation=i.orientation||0,1===this.orientation?((0,c.cn)(this.el,"horizontal"),(0,c.IV)(this.el,"vertical")):((0,c.IV)(this.el,"horizontal"),(0,c.cn)(this.el,"vertical")),(0,c.og)(this.el,"debug",!1),this.layout()}get state(){return this._state}set state(e){this._state!==e&&((0,c.og)(this.el,"disabled",0===e),(0,c.og)(this.el,"minimum",1===e),(0,c.og)(this.el,"maximum",2===e),this._state=e,this._onDidEnablementChange.fire(e))}get orthogonalStartSash(){return this._orthogonalStartSash}set orthogonalStartSash(e){this.orthogonalStartSashDisposables.clear(),e?(this.orthogonalStartSashDisposables.add(e.onDidEnablementChange(this.onOrthogonalStartSashEnablementChange,this)),this.onOrthogonalStartSashEnablementChange(e.state)):this.onOrthogonalStartSashEnablementChange(0),this._orthogonalStartSash=e}get orthogonalEndSash(){return this._orthogonalEndSash}set orthogonalEndSash(e){this.orthogonalEndSashDisposables.clear(),e?(this.orthogonalEndSashDisposables.add(e.onDidEnablementChange(this.onOrthogonalEndSashEnablementChange,this)),this.onOrthogonalEndSashEnablementChange(e.state)):this.onOrthogonalEndSashEnablementChange(0),this._orthogonalEndSash=e}onMouseDown(e){c.zB.stop(e,!1);let t=!1;if(!e.__orthogonalSashEvent){const i=this.getOrthogonalSash(e);i&&(t=!0,e.__orthogonalSashEvent=!0,i.onMouseDown(e))}if(this.linkedSash&&!e.__linkedSashEvent&&(e.__linkedSashEvent=!0,this.linkedSash.onMouseDown(e)),!this.state)return;const i=[...(0,c.H$)("iframe"),...(0,c.H$)("webview")];for(const e of i)e.style.pointerEvents="none";const s=new a.n(e),o=s.posx,l=s.posy,h=s.altKey,u={startX:o,currentX:o,startY:l,currentY:l,altKey:h};(0,c.cn)(this.el,"active"),this._onDidStart.fire(u);const g=(0,c.dS)(this.el),f=()=>{let e="";e=t?"all-scroll":1===this.orientation?1===this.state?"s-resize":2===this.state?"n-resize":r.dz?"row-resize":"ns-resize":1===this.state?"e-resize":2===this.state?"w-resize":r.dz?"col-resize":"ew-resize",g.innerHTML=`* { cursor: ${e} !important; }`},p=new n.SL;f(),t||this.onDidEnablementChange(f,null,p),(0,d.j)(window,"mousemove")((e=>{c.zB.stop(e,!1);const t=new a.n(e),i={startX:o,currentX:t.posx,startY:l,currentY:t.posy,altKey:h};this._onDidChange.fire(i)}),null,p),(0,d.j)(window,"mouseup")((e=>{c.zB.stop(e,!1),this.el.removeChild(g),(0,c.IV)(this.el,"active"),this._onDidEnd.fire(),p.dispose();for(const e of i)e.style.pointerEvents="auto"}),null,p)}onMouseDoubleClick(e){const t=this.getOrthogonalSash(e);t&&t._onDidReset.fire(),this.linkedSash&&this.linkedSash._onDidReset.fire(),this._onDidReset.fire()}onTouchStart(e){c.zB.stop(e);const t=[],i=e.pageX,r=e.pageY,a=e.altKey;this._onDidStart.fire({startX:i,currentX:i,startY:r,currentY:r,altKey:a}),t.push((0,c.nm)(this.el,o.t.Change,(e=>{s.hj(e.pageX)&&s.hj(e.pageY)&&this._onDidChange.fire({startX:i,currentX:e.pageX,startY:r,currentY:e.pageY,altKey:a})}))),t.push((0,c.nm)(this.el,o.t.End,(e=>{this._onDidEnd.fire(),(0,n.B9)(t)})))}layout(){if(0===this.orientation){const e=this.layoutProvider;this.el.style.left=e.getVerticalSashLeft(this)-this.size/2+"px",e.getVerticalSashTop&&(this.el.style.top=e.getVerticalSashTop(this)+"px"),e.getVerticalSashHeight&&(this.el.style.height=e.getVerticalSashHeight(this)+"px")}else{const e=this.layoutProvider;this.el.style.top=e.getHorizontalSashTop(this)-this.size/2+"px",e.getHorizontalSashLeft&&(this.el.style.left=e.getHorizontalSashLeft(this)+"px"),e.getHorizontalSashWidth&&(this.el.style.width=e.getHorizontalSashWidth(this)+"px")}}hide(){this.hidden=!0,this.el.style.display="none",this.el.setAttribute("aria-hidden","true")}onOrthogonalStartSashEnablementChange(e){(0,c.og)(this.el,"orthogonal-start",0!==e)}onOrthogonalEndSashEnablementChange(e){(0,c.og)(this.el,"orthogonal-end",0!==e)}getOrthogonalSash(e){if(0===this.orientation){if(e.offsetY<=this.size)return this.orthogonalStartSash;if(e.offsetY>=this.el.clientHeight-this.size)return this.orthogonalEndSash}else{if(e.offsetX<=this.size)return this.orthogonalStartSash;if(e.offsetX>=this.el.clientWidth-this.size)return this.orthogonalEndSash}}dispose(){super.dispose(),this.el.remove()}}},9802:(e,t,i)=>{"use strict";i.d(t,{s$:()=>E,NB:()=>D,$Z:()=>N});var n=i(65321),r=i(38626),s=i(23938),o=i(57974),a=i(93794),l=i(15393);class c extends a.${constructor(e){super(),this._onActivate=e.onActivate,this.bgDomNode=document.createElement("div"),this.bgDomNode.className="arrow-background",this.bgDomNode.style.position="absolute",this.bgDomNode.style.width=e.bgWidth+"px",this.bgDomNode.style.height=e.bgHeight+"px",void 0!==e.top&&(this.bgDomNode.style.top="0px"),void 0!==e.left&&(this.bgDomNode.style.left="0px"),void 0!==e.bottom&&(this.bgDomNode.style.bottom="0px"),void 0!==e.right&&(this.bgDomNode.style.right="0px"),this.domNode=document.createElement("div"),this.domNode.className=e.className,(0,n.PT)(this.domNode,e.icon.classNames),this.domNode.style.position="absolute",this.domNode.style.width="11px",this.domNode.style.height="11px",void 0!==e.top&&(this.domNode.style.top=e.top+"px"),void 0!==e.left&&(this.domNode.style.left=e.left+"px"),void 0!==e.bottom&&(this.domNode.style.bottom=e.bottom+"px"),void 0!==e.right&&(this.domNode.style.right=e.right+"px"),this._mouseMoveMonitor=this._register(new o.Z),this.onmousedown(this.bgDomNode,(e=>this._arrowMouseDown(e))),this.onmousedown(this.domNode,(e=>this._arrowMouseDown(e))),this._mousedownRepeatTimer=this._register(new l.zh),this._mousedownScheduleRepeatTimer=this._register(new l._F)}_arrowMouseDown(e){this._onActivate(),this._mousedownRepeatTimer.cancel(),this._mousedownScheduleRepeatTimer.cancelAndSet((()=>{this._mousedownRepeatTimer.cancelAndSet((()=>this._onActivate()),1e3/24)}),200),this._mouseMoveMonitor.startMonitoring(e.target,e.buttons,o.e,(e=>{}),(()=>{this._mousedownRepeatTimer.cancel(),this._mousedownScheduleRepeatTimer.cancel()})),e.preventDefault()}}var d=i(5976);class h extends d.JT{constructor(e,t,i){super(),this._visibility=e,this._visibleClassName=t,this._invisibleClassName=i,this._domNode=null,this._isVisible=!1,this._isNeeded=!1,this._shouldBeVisible=!1,this._revealTimer=this._register(new l._F)}applyVisibilitySetting(e){return 2!==this._visibility&&(3===this._visibility||e)}setShouldBeVisible(e){let t=this.applyVisibilitySetting(e);this._shouldBeVisible!==t&&(this._shouldBeVisible=t,this.ensureVisibility())}setIsNeeded(e){this._isNeeded!==e&&(this._isNeeded=e,this.ensureVisibility())}setDomNode(e){this._domNode=e,this._domNode.setClassName(this._invisibleClassName),this.setShouldBeVisible(!1)}ensureVisibility(){this._isNeeded?this._shouldBeVisible?this._reveal():this._hide(!0):this._hide(!1)}_reveal(){this._isVisible||(this._isVisible=!0,this._revealTimer.setIfNotSet((()=>{this._domNode&&this._domNode.setClassName(this._visibleClassName)}),0))}_hide(e){this._revealTimer.cancel(),this._isVisible&&(this._isVisible=!1,this._domNode&&this._domNode.setClassName(this._invisibleClassName+(e?" fade":"")))}}var u=i(1432);class g extends a.${constructor(e){super(),this._lazyRender=e.lazyRender,this._host=e.host,this._scrollable=e.scrollable,this._scrollbarState=e.scrollbarState,this._visibilityController=this._register(new h(e.visibility,"visible scrollbar "+e.extraScrollbarClassName,"invisible scrollbar "+e.extraScrollbarClassName)),this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._mouseMoveMonitor=this._register(new o.Z),this._shouldRender=!0,this.domNode=(0,r.X)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this._visibilityController.setDomNode(this.domNode),this.domNode.setPosition("absolute"),this.onmousedown(this.domNode.domNode,(e=>this._domNodeMouseDown(e)))}_createArrow(e){let t=this._register(new c(e));this.domNode.domNode.appendChild(t.bgDomNode),this.domNode.domNode.appendChild(t.domNode)}_createSlider(e,t,i,n){this.slider=(0,r.X)(document.createElement("div")),this.slider.setClassName("slider"),this.slider.setPosition("absolute"),this.slider.setTop(e),this.slider.setLeft(t),"number"==typeof i&&this.slider.setWidth(i),"number"==typeof n&&this.slider.setHeight(n),this.slider.setLayerHinting(!0),this.slider.setContain("strict"),this.domNode.domNode.appendChild(this.slider.domNode),this.onmousedown(this.slider.domNode,(e=>{e.leftButton&&(e.preventDefault(),this._sliderMouseDown(e,(()=>{})))})),this.onclick(this.slider.domNode,(e=>{e.leftButton&&e.stopPropagation()}))}_onElementSize(e){return this._scrollbarState.setVisibleSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollSize(e){return this._scrollbarState.setScrollSize(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}_onElementScrollPosition(e){return this._scrollbarState.setScrollPosition(e)&&(this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded()),this._shouldRender=!0,this._lazyRender||this.render()),this._shouldRender}beginReveal(){this._visibilityController.setShouldBeVisible(!0)}beginHide(){this._visibilityController.setShouldBeVisible(!1)}render(){this._shouldRender&&(this._shouldRender=!1,this._renderDomNode(this._scrollbarState.getRectangleLargeSize(),this._scrollbarState.getRectangleSmallSize()),this._updateSlider(this._scrollbarState.getSliderSize(),this._scrollbarState.getArrowSize()+this._scrollbarState.getSliderPosition()))}_domNodeMouseDown(e){e.target===this.domNode.domNode&&this._onMouseDown(e)}delegateMouseDown(e){let t=this.domNode.domNode.getClientRects()[0].top,i=t+this._scrollbarState.getSliderPosition(),n=t+this._scrollbarState.getSliderPosition()+this._scrollbarState.getSliderSize(),r=this._sliderMousePosition(e);i<=r&&r<=n?e.leftButton&&(e.preventDefault(),this._sliderMouseDown(e,(()=>{}))):this._onMouseDown(e)}_onMouseDown(e){let t,i;if(e.target===this.domNode.domNode&&"number"==typeof e.browserEvent.offsetX&&"number"==typeof e.browserEvent.offsetY)t=e.browserEvent.offsetX,i=e.browserEvent.offsetY;else{const r=n.i(this.domNode.domNode);t=e.posx-r.left,i=e.posy-r.top}this._setDesiredScrollPositionNow(this._scrollbarState.getDesiredScrollPositionFromOffset(this._mouseDownRelativePosition(t,i))),e.leftButton&&(e.preventDefault(),this._sliderMouseDown(e,(()=>{})))}_sliderMouseDown(e,t){const i=this._sliderMousePosition(e),n=this._sliderOrthogonalMousePosition(e),r=this._scrollbarState.clone();this.slider.toggleClassName("active",!0),this._mouseMoveMonitor.startMonitoring(e.target,e.buttons,o.e,(e=>{const t=this._sliderOrthogonalMousePosition(e),s=Math.abs(t-n);if(u.ED&&s>140)return void this._setDesiredScrollPositionNow(r.getScrollPosition());const o=this._sliderMousePosition(e)-i;this._setDesiredScrollPositionNow(r.getDesiredScrollPositionFromDelta(o))}),(()=>{this.slider.toggleClassName("active",!1),this._host.onDragEnd(),t()})),this._host.onDragStart()}_setDesiredScrollPositionNow(e){let t={};this.writeScrollPosition(t,e),this._scrollable.setScrollPositionNow(t)}updateScrollbarSize(e){this._updateScrollbarSize(e),this._scrollbarState.setScrollbarSize(e),this._shouldRender=!0,this._lazyRender||this.render()}}class f{constructor(e,t,i,n,r,s){this._scrollbarSize=Math.round(t),this._oppositeScrollbarSize=Math.round(i),this._arrowSize=Math.round(e),this._visibleSize=n,this._scrollSize=r,this._scrollPosition=s,this._computedAvailableSize=0,this._computedIsNeeded=!1,this._computedSliderSize=0,this._computedSliderRatio=0,this._computedSliderPosition=0,this._refreshComputedValues()}clone(){return new f(this._arrowSize,this._scrollbarSize,this._oppositeScrollbarSize,this._visibleSize,this._scrollSize,this._scrollPosition)}setVisibleSize(e){let t=Math.round(e);return this._visibleSize!==t&&(this._visibleSize=t,this._refreshComputedValues(),!0)}setScrollSize(e){let t=Math.round(e);return this._scrollSize!==t&&(this._scrollSize=t,this._refreshComputedValues(),!0)}setScrollPosition(e){let t=Math.round(e);return this._scrollPosition!==t&&(this._scrollPosition=t,this._refreshComputedValues(),!0)}setScrollbarSize(e){this._scrollbarSize=e}static _computeValues(e,t,i,n,r){const s=Math.max(0,i-e),o=Math.max(0,s-2*t),a=n>0&&n>i;if(!a)return{computedAvailableSize:Math.round(s),computedIsNeeded:a,computedSliderSize:Math.round(o),computedSliderRatio:0,computedSliderPosition:0};const l=Math.round(Math.max(20,Math.floor(i*o/n))),c=(o-l)/(n-i),d=r*c;return{computedAvailableSize:Math.round(s),computedIsNeeded:a,computedSliderSize:Math.round(l),computedSliderRatio:c,computedSliderPosition:Math.round(d)}}_refreshComputedValues(){const e=f._computeValues(this._oppositeScrollbarSize,this._arrowSize,this._visibleSize,this._scrollSize,this._scrollPosition);this._computedAvailableSize=e.computedAvailableSize,this._computedIsNeeded=e.computedIsNeeded,this._computedSliderSize=e.computedSliderSize,this._computedSliderRatio=e.computedSliderRatio,this._computedSliderPosition=e.computedSliderPosition}getArrowSize(){return this._arrowSize}getScrollPosition(){return this._scrollPosition}getRectangleLargeSize(){return this._computedAvailableSize}getRectangleSmallSize(){return this._scrollbarSize}isNeeded(){return this._computedIsNeeded}getSliderSize(){return this._computedSliderSize}getSliderPosition(){return this._computedSliderPosition}getDesiredScrollPositionFromOffset(e){if(!this._computedIsNeeded)return 0;let t=e-this._arrowSize-this._computedSliderSize/2;return Math.round(t/this._computedSliderRatio)}getDesiredScrollPositionFromDelta(e){if(!this._computedIsNeeded)return 0;let t=this._computedSliderPosition+e;return Math.round(t/this._computedSliderRatio)}}var p=i(73046);const m=(0,p.q5)("scrollbar-button-left",p.lA.triangleLeft),_=(0,p.q5)("scrollbar-button-right",p.lA.triangleRight);class b extends g{constructor(e,t,i){const n=e.getScrollDimensions(),r=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new f(t.horizontalHasArrows?t.arrowSize:0,2===t.horizontal?0:t.horizontalScrollbarSize,2===t.vertical?0:t.verticalScrollbarSize,n.width,n.scrollWidth,r.scrollLeft),visibility:t.horizontal,extraScrollbarClassName:"horizontal",scrollable:e}),t.horizontalHasArrows){let e=(t.arrowSize-11)/2,i=(t.horizontalScrollbarSize-11)/2;this._createArrow({className:"scra",icon:m,top:i,left:e,bottom:void 0,right:void 0,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new s.q(null,1,0))}),this._createArrow({className:"scra",icon:_,top:i,left:void 0,bottom:void 0,right:e,bgWidth:t.arrowSize,bgHeight:t.horizontalScrollbarSize,onActivate:()=>this._host.onMouseWheel(new s.q(null,-1,0))})}this._createSlider(Math.floor((t.horizontalScrollbarSize-t.horizontalSliderSize)/2),0,void 0,t.horizontalSliderSize)}_updateSlider(e,t){this.slider.setWidth(e),this.slider.setLeft(t)}_renderDomNode(e,t){this.domNode.setWidth(e),this.domNode.setHeight(t),this.domNode.setLeft(0),this.domNode.setBottom(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollWidth)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollLeft)||this._shouldRender,this._shouldRender=this._onElementSize(e.width)||this._shouldRender,this._shouldRender}_mouseDownRelativePosition(e,t){return e}_sliderMousePosition(e){return e.posx}_sliderOrthogonalMousePosition(e){return e.posy}_updateScrollbarSize(e){this.slider.setHeight(e)}writeScrollPosition(e,t){e.scrollLeft=t}}const v=(0,p.q5)("scrollbar-button-up",p.lA.triangleUp),y=(0,p.q5)("scrollbar-button-down",p.lA.triangleDown);class w extends g{constructor(e,t,i){const n=e.getScrollDimensions(),r=e.getCurrentScrollPosition();if(super({lazyRender:t.lazyRender,host:i,scrollbarState:new f(t.verticalHasArrows?t.arrowSize:0,2===t.vertical?0:t.verticalScrollbarSize,0,n.height,n.scrollHeight,r.scrollTop),visibility:t.vertical,extraScrollbarClassName:"vertical",scrollable:e}),t.verticalHasArrows){let e=(t.arrowSize-11)/2,i=(t.verticalScrollbarSize-11)/2;this._createArrow({className:"scra",icon:v,top:e,left:i,bottom:void 0,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new s.q(null,0,1))}),this._createArrow({className:"scra",icon:y,top:void 0,left:i,bottom:e,right:void 0,bgWidth:t.verticalScrollbarSize,bgHeight:t.arrowSize,onActivate:()=>this._host.onMouseWheel(new s.q(null,0,-1))})}this._createSlider(0,Math.floor((t.verticalScrollbarSize-t.verticalSliderSize)/2),t.verticalSliderSize,void 0)}_updateSlider(e,t){this.slider.setHeight(e),this.slider.setTop(t)}_renderDomNode(e,t){this.domNode.setWidth(t),this.domNode.setHeight(e),this.domNode.setRight(0),this.domNode.setTop(0)}onDidScroll(e){return this._shouldRender=this._onElementScrollSize(e.scrollHeight)||this._shouldRender,this._shouldRender=this._onElementScrollPosition(e.scrollTop)||this._shouldRender,this._shouldRender=this._onElementSize(e.height)||this._shouldRender,this._shouldRender}_mouseDownRelativePosition(e,t){return t}_sliderMousePosition(e){return e.posy}_sliderOrthogonalMousePosition(e){return e.posx}_updateScrollbarSize(e){this.slider.setWidth(e)}writeScrollPosition(e,t){e.scrollTop=t}}var C=i(4669),S=i(76633),k=i(16268);class x{constructor(e,t,i){this.timestamp=e,this.deltaX=t,this.deltaY=i,this.score=0}}class L{constructor(){this._capacity=5,this._memory=[],this._front=-1,this._rear=-1}isPhysicalMouseWheel(){if(-1===this._front&&-1===this._rear)return!1;let e=1,t=0,i=1,n=this._rear;for(;;){const r=n===this._front?e:Math.pow(2,-i);if(e-=r,t+=this._memory[n].score*r,n===this._front)break;n=(this._capacity+n-1)%this._capacity,i++}return t<=.5}accept(e,t,i){const n=new x(e,t,i);n.score=this._computeScore(n),-1===this._front&&-1===this._rear?(this._memory[0]=n,this._front=0,this._rear=0):(this._rear=(this._rear+1)%this._capacity,this._rear===this._front&&(this._front=(this._front+1)%this._capacity),this._memory[this._rear]=n)}_computeScore(e){if(Math.abs(e.deltaX)>0&&Math.abs(e.deltaY)>0)return 1;let t=.5;return-1===this._front&&-1===this._rear||this._memory[this._rear],this._isAlmostInt(e.deltaX)&&this._isAlmostInt(e.deltaY)||(t+=.25),Math.min(Math.max(t,0),1)}_isAlmostInt(e){return Math.abs(Math.round(e)-e)<.01}}L.INSTANCE=new L;class M extends a.${constructor(e,t,i){super(),this._onScroll=this._register(new C.Q5),this.onScroll=this._onScroll.event,this._onWillScroll=this._register(new C.Q5),e.style.overflow="hidden",this._options=function(e){let t={lazyRender:void 0!==e.lazyRender&&e.lazyRender,className:void 0!==e.className?e.className:"",useShadows:void 0===e.useShadows||e.useShadows,handleMouseWheel:void 0===e.handleMouseWheel||e.handleMouseWheel,flipAxes:void 0!==e.flipAxes&&e.flipAxes,alwaysConsumeMouseWheel:void 0!==e.alwaysConsumeMouseWheel&&e.alwaysConsumeMouseWheel,scrollYToX:void 0!==e.scrollYToX&&e.scrollYToX,mouseWheelScrollSensitivity:void 0!==e.mouseWheelScrollSensitivity?e.mouseWheelScrollSensitivity:1,fastScrollSensitivity:void 0!==e.fastScrollSensitivity?e.fastScrollSensitivity:5,scrollPredominantAxis:void 0===e.scrollPredominantAxis||e.scrollPredominantAxis,mouseWheelSmoothScroll:void 0===e.mouseWheelSmoothScroll||e.mouseWheelSmoothScroll,arrowSize:void 0!==e.arrowSize?e.arrowSize:11,listenOnDomNode:void 0!==e.listenOnDomNode?e.listenOnDomNode:null,horizontal:void 0!==e.horizontal?e.horizontal:1,horizontalScrollbarSize:void 0!==e.horizontalScrollbarSize?e.horizontalScrollbarSize:10,horizontalSliderSize:void 0!==e.horizontalSliderSize?e.horizontalSliderSize:0,horizontalHasArrows:void 0!==e.horizontalHasArrows&&e.horizontalHasArrows,vertical:void 0!==e.vertical?e.vertical:1,verticalScrollbarSize:void 0!==e.verticalScrollbarSize?e.verticalScrollbarSize:10,verticalHasArrows:void 0!==e.verticalHasArrows&&e.verticalHasArrows,verticalSliderSize:void 0!==e.verticalSliderSize?e.verticalSliderSize:0};return t.horizontalSliderSize=void 0!==e.horizontalSliderSize?e.horizontalSliderSize:t.horizontalScrollbarSize,t.verticalSliderSize=void 0!==e.verticalSliderSize?e.verticalSliderSize:t.verticalScrollbarSize,u.dz&&(t.className+=" mac"),t}(t),this._scrollable=i,this._register(this._scrollable.onScroll((e=>{this._onWillScroll.fire(e),this._onDidScroll(e),this._onScroll.fire(e)})));let n={onMouseWheel:e=>this._onMouseWheel(e),onDragStart:()=>this._onDragStart(),onDragEnd:()=>this._onDragEnd()};this._verticalScrollbar=this._register(new w(this._scrollable,this._options,n)),this._horizontalScrollbar=this._register(new b(this._scrollable,this._options,n)),this._domNode=document.createElement("div"),this._domNode.className="monaco-scrollable-element "+this._options.className,this._domNode.setAttribute("role","presentation"),this._domNode.style.position="relative",this._domNode.style.overflow="hidden",this._domNode.appendChild(e),this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode),this._domNode.appendChild(this._verticalScrollbar.domNode.domNode),this._options.useShadows?(this._leftShadowDomNode=(0,r.X)(document.createElement("div")),this._leftShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._leftShadowDomNode.domNode),this._topShadowDomNode=(0,r.X)(document.createElement("div")),this._topShadowDomNode.setClassName("shadow"),this._domNode.appendChild(this._topShadowDomNode.domNode),this._topLeftShadowDomNode=(0,r.X)(document.createElement("div")),this._topLeftShadowDomNode.setClassName("shadow top-left-corner"),this._domNode.appendChild(this._topLeftShadowDomNode.domNode)):(this._leftShadowDomNode=null,this._topShadowDomNode=null,this._topLeftShadowDomNode=null),this._listenOnDomNode=this._options.listenOnDomNode||this._domNode,this._mouseWheelToDispose=[],this._setListeningToMouseWheel(this._options.handleMouseWheel),this.onmouseover(this._listenOnDomNode,(e=>this._onMouseOver(e))),this.onnonbubblingmouseout(this._listenOnDomNode,(e=>this._onMouseOut(e))),this._hideTimeout=this._register(new l._F),this._isDragging=!1,this._mouseIsOver=!1,this._shouldRender=!0,this._revealOnScroll=!0}dispose(){this._mouseWheelToDispose=(0,d.B9)(this._mouseWheelToDispose),super.dispose()}getDomNode(){return this._domNode}getOverviewRulerLayoutInfo(){return{parent:this._domNode,insertBefore:this._verticalScrollbar.domNode.domNode}}delegateVerticalScrollbarMouseDown(e){this._verticalScrollbar.delegateMouseDown(e)}getScrollDimensions(){return this._scrollable.getScrollDimensions()}setScrollDimensions(e){this._scrollable.setScrollDimensions(e,!1)}updateClassName(e){this._options.className=e,u.dz&&(this._options.className+=" mac"),this._domNode.className="monaco-scrollable-element "+this._options.className}updateOptions(e){void 0!==e.handleMouseWheel&&(this._options.handleMouseWheel=e.handleMouseWheel,this._setListeningToMouseWheel(this._options.handleMouseWheel)),void 0!==e.mouseWheelScrollSensitivity&&(this._options.mouseWheelScrollSensitivity=e.mouseWheelScrollSensitivity),void 0!==e.fastScrollSensitivity&&(this._options.fastScrollSensitivity=e.fastScrollSensitivity),void 0!==e.scrollPredominantAxis&&(this._options.scrollPredominantAxis=e.scrollPredominantAxis),void 0!==e.horizontalScrollbarSize&&this._horizontalScrollbar.updateScrollbarSize(e.horizontalScrollbarSize),this._options.lazyRender||this._render()}_setListeningToMouseWheel(e){if(this._mouseWheelToDispose.length>0!==e&&(this._mouseWheelToDispose=(0,d.B9)(this._mouseWheelToDispose),e)){let e=e=>{this._onMouseWheel(new s.q(e))};this._mouseWheelToDispose.push(n.nm(this._listenOnDomNode,n.tw.MOUSE_WHEEL,e,{passive:!1}))}}_onMouseWheel(e){const t=L.INSTANCE;{const i=window.devicePixelRatio/(0,k.ie)();u.ED||u.IJ?t.accept(Date.now(),e.deltaX/i,e.deltaY/i):t.accept(Date.now(),e.deltaX,e.deltaY)}if(e.deltaY||e.deltaX){let i=e.deltaY*this._options.mouseWheelScrollSensitivity,n=e.deltaX*this._options.mouseWheelScrollSensitivity;this._options.scrollPredominantAxis&&(Math.abs(i)>=Math.abs(n)?n=0:i=0),this._options.flipAxes&&([i,n]=[n,i]);const r=!u.dz&&e.browserEvent&&e.browserEvent.shiftKey;!this._options.scrollYToX&&!r||n||(n=i,i=0),e.browserEvent&&e.browserEvent.altKey&&(n*=this._options.fastScrollSensitivity,i*=this._options.fastScrollSensitivity);const s=this._scrollable.getFutureScrollPosition();let o={};if(i){const e=s.scrollTop-50*i;this._verticalScrollbar.writeScrollPosition(o,e)}if(n){const e=s.scrollLeft-50*n;this._horizontalScrollbar.writeScrollPosition(o,e)}o=this._scrollable.validateScrollPosition(o),(s.scrollLeft!==o.scrollLeft||s.scrollTop!==o.scrollTop)&&(this._options.mouseWheelSmoothScroll&&t.isPhysicalMouseWheel()?this._scrollable.setScrollPositionSmooth(o):this._scrollable.setScrollPositionNow(o),this._shouldRender=!0)}(this._options.alwaysConsumeMouseWheel||this._shouldRender)&&(e.preventDefault(),e.stopPropagation())}_onDidScroll(e){this._shouldRender=this._horizontalScrollbar.onDidScroll(e)||this._shouldRender,this._shouldRender=this._verticalScrollbar.onDidScroll(e)||this._shouldRender,this._options.useShadows&&(this._shouldRender=!0),this._revealOnScroll&&this._reveal(),this._options.lazyRender||this._render()}renderNow(){if(!this._options.lazyRender)throw new Error("Please use `lazyRender` together with `renderNow`!");this._render()}_render(){if(this._shouldRender&&(this._shouldRender=!1,this._horizontalScrollbar.render(),this._verticalScrollbar.render(),this._options.useShadows)){const e=this._scrollable.getCurrentScrollPosition();let t=e.scrollTop>0,i=e.scrollLeft>0;this._leftShadowDomNode.setClassName("shadow"+(i?" left":"")),this._topShadowDomNode.setClassName("shadow"+(t?" top":"")),this._topLeftShadowDomNode.setClassName("shadow top-left-corner"+(t?" top":"")+(i?" left":""))}}_onDragStart(){this._isDragging=!0,this._reveal()}_onDragEnd(){this._isDragging=!1,this._hide()}_onMouseOut(e){this._mouseIsOver=!1,this._hide()}_onMouseOver(e){this._mouseIsOver=!0,this._reveal()}_reveal(){this._verticalScrollbar.beginReveal(),this._horizontalScrollbar.beginReveal(),this._scheduleHide()}_hide(){this._mouseIsOver||this._isDragging||(this._verticalScrollbar.beginHide(),this._horizontalScrollbar.beginHide())}_scheduleHide(){this._mouseIsOver||this._isDragging||this._hideTimeout.cancelAndSet((()=>this._hide()),500)}}class D extends M{constructor(e,t){(t=t||{}).mouseWheelSmoothScroll=!1;const i=new S.Rm(0,(e=>n.jL(e)));super(e,t,i),this._register(i)}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}}class N extends M{constructor(e,t,i){super(e,t,i)}setScrollPosition(e){this._scrollable.setScrollPositionNow(e)}getScrollPosition(){return this._scrollable.getCurrentScrollPosition()}}class E extends D{constructor(e,t){super(e,t),this._element=e,this.onScroll((e=>{e.scrollTopChanged&&(this._element.scrollTop=e.scrollTop),e.scrollLeftChanged&&(this._element.scrollLeft=e.scrollLeft)})),this.scanDomNode()}scanDomNode(){this.setScrollDimensions({width:this._element.clientWidth,scrollWidth:this._element.scrollWidth,height:this._element.clientHeight,scrollHeight:this._element.scrollHeight}),this.setScrollPosition({scrollLeft:this._element.scrollLeft,scrollTop:this._element.scrollTop})}}},93794:(e,t,i)=>{"use strict";i.d(t,{$:()=>l});var n=i(65321),r=i(59069),s=i(23938),o=i(5976),a=i(10553);class l extends o.JT{onclick(e,t){this._register(n.nm(e,n.tw.CLICK,(e=>t(new s.n(e)))))}onmousedown(e,t){this._register(n.nm(e,n.tw.MOUSE_DOWN,(e=>t(new s.n(e)))))}onmouseover(e,t){this._register(n.nm(e,n.tw.MOUSE_OVER,(e=>t(new s.n(e)))))}onnonbubblingmouseout(e,t){this._register(n.j_(e,(e=>t(new s.n(e)))))}onkeydown(e,t){this._register(n.nm(e,n.tw.KEY_DOWN,(e=>t(new r.y(e)))))}onkeyup(e,t){this._register(n.nm(e,n.tw.KEY_UP,(e=>t(new r.y(e)))))}oninput(e,t){this._register(n.nm(e,n.tw.INPUT,t))}onblur(e,t){this._register(n.nm(e,n.tw.BLUR,t))}onfocus(e,t){this._register(n.nm(e,n.tw.FOCUS,t))}ignoreGesture(e){a.o.ignoreTarget(e)}}},74741:(e,t,i)=>{"use strict";i.d(t,{aU:()=>s,Wi:()=>o,Z0:()=>a,wY:()=>l});var n=i(5976),r=i(4669);class s extends n.JT{constructor(e,t="",i="",n=!0,s){super(),this._onDidChange=this._register(new r.Q5),this.onDidChange=this._onDidChange.event,this._enabled=!0,this._checked=!1,this._id=e,this._label=t,this._cssClass=i,this._enabled=n,this._actionCallback=s}get id(){return this._id}get label(){return this._label}set label(e){this._setLabel(e)}_setLabel(e){this._label!==e&&(this._label=e,this._onDidChange.fire({label:e}))}get tooltip(){return this._tooltip||""}set tooltip(e){this._setTooltip(e)}_setTooltip(e){this._tooltip!==e&&(this._tooltip=e,this._onDidChange.fire({tooltip:e}))}get class(){return this._cssClass}set class(e){this._setClass(e)}_setClass(e){this._cssClass!==e&&(this._cssClass=e,this._onDidChange.fire({class:e}))}get enabled(){return this._enabled}set enabled(e){this._setEnabled(e)}_setEnabled(e){this._enabled!==e&&(this._enabled=e,this._onDidChange.fire({enabled:e}))}get checked(){return this._checked}set checked(e){this._setChecked(e)}_setChecked(e){this._checked!==e&&(this._checked=e,this._onDidChange.fire({checked:e}))}run(e,t){return this._actionCallback?this._actionCallback(e):Promise.resolve(!0)}}class o extends n.JT{constructor(){super(...arguments),this._onDidBeforeRun=this._register(new r.Q5),this.onDidBeforeRun=this._onDidBeforeRun.event,this._onDidRun=this._register(new r.Q5),this.onDidRun=this._onDidRun.event}run(e,t){return i=this,n=void 0,s=function*(){if(!e.enabled)return Promise.resolve(null);this._onDidBeforeRun.fire({action:e});try{const i=yield this.runAction(e,t);this._onDidRun.fire({action:e,result:i})}catch(t){this._onDidRun.fire({action:e,error:t})}},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s}runAction(e,t){const i=t?e.run(t):e.run();return Promise.resolve(i)}}class a extends s{constructor(e){super(a.ID,e,e?"separator text":"separator"),this.checked=!1,this.enabled=!1}}a.ID="vs.actions.separator";class l extends s{constructor(e,t,i,n){super(e,t,n,!0),this._actions=i}get actions(){return Array.isArray(this._actions)?this._actions:this._actions()}}},9488:(e,t,i)=>{"use strict";function n(e,t=0){return e[e.length-(1+t)]}function r(e){if(0===e.length)throw new Error("Invalid tail call");return[e.slice(0,e.length-1),e[e.length-1]]}function s(e,t,i=((e,t)=>e===t)){if(e===t)return!0;if(!e||!t)return!1;if(e.length!==t.length)return!1;for(let n=0,r=e.length;n<r;n++)if(!i(e[n],t[n]))return!1;return!0}function o(e,t,i){let n=0,r=e.length-1;for(;n<=r;){const s=(n+r)/2|0,o=i(e[s],t);if(o<0)n=s+1;else{if(!(o>0))return s;r=s-1}}return-(n+1)}function a(e,t){let i=0,n=e.length;if(0===n)return 0;for(;i<n;){const r=Math.floor((i+n)/2);t(e[r])?n=r:i=r+1}return i}function l(e,t){return c(e,t,0,e.length-1,[]),e}function c(e,t,i,n,r){if(n<=i)return;const s=i+(n-i)/2|0;c(e,t,i,s,r),c(e,t,s+1,n,r),t(e[s],e[s+1])<=0||function(e,t,i,n,r,s){let o=i,a=n+1;for(let t=i;t<=r;t++)s[t]=e[t];for(let l=i;l<=r;l++)o>n?e[l]=s[a++]:a>r?e[l]=s[o++]:t(s[a],s[o])<0?e[l]=s[a++]:e[l]=s[o++]}(e,t,i,s,n,r)}function d(e,t){const i=[];let n;for(const r of l(e.slice(0),t))n&&0===t(n[0],r)?n.push(r):(n=[r],i.push(n));return i}function h(e){return e.filter((e=>!!e))}function u(e){return!Array.isArray(e)||0===e.length}function g(e){return Array.isArray(e)&&e.length>0}function f(e,t){if(!t)return e.filter(((t,i)=>e.indexOf(t)===i));const i=Object.create(null);return e.filter((e=>{const n=t(e);return!i[n]&&(i[n]=!0,!0)}))}function p(e){const t=new Set;return e.filter((e=>!t.has(e)&&(t.add(e),!0)))}function m(e,t){for(let i=0;i<e.length;i++)if(t(e[i]))return i;return-1}function _(e,t,i){const n=m(e,t);return n<0?i:e[n]}function b(e,t){return e.length>0?e[0]:t}function v(e){return[].concat(...e)}function y(e,t){let i="number"==typeof t?e:0;"number"==typeof t?i=e:(i=0,t=e);const n=[];if(i<=t)for(let e=i;e<t;e++)n.push(e);else for(let e=i;e>t;e--)n.push(e);return n}function w(e,t,i){const n=e.slice(0,t),r=e.slice(t);return n.concat(i,r)}function C(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.unshift(t))}function S(e,t){const i=e.indexOf(t);i>-1&&(e.splice(i,1),e.push(t))}function k(e){return Array.isArray(e)?e:[e]}i.d(t,{Gb:()=>n,JH:()=>r,fS:()=>s,ry:()=>o,lG:()=>a,qt:()=>l,vM:()=>d,kX:()=>h,XY:()=>u,Of:()=>g,EB:()=>f,cU:()=>p,Zr:()=>m,Ps:()=>_,Xh:()=>b,xH:()=>v,w6:()=>y,Zv:()=>w,zI:()=>C,al:()=>S,_2:()=>k})},35146:(e,t,i)=>{"use strict";function n(e,t){if(!e)throw new Error(t?`Assertion failed (${t})`:"Assertion Failed")}i.d(t,{ok:()=>n})},15393:(e,t,i)=>{"use strict";i.d(t,{J8:()=>o,PG:()=>a,eP:()=>l,vp:()=>c,Vs:()=>d,Vg:()=>h,Ps:()=>u,_F:()=>g,zh:()=>f,pY:()=>p,To:()=>m,Ue:()=>_});var n=i(71050),r=i(17301),s=i(5976);function o(e){return e&&"function"==typeof e.then}function a(e){const t=new n.A,i=e(t.token),s=new Promise(((e,n)=>{t.token.onCancellationRequested((()=>{n(r.F0())})),Promise.resolve(i).then((i=>{t.dispose(),e(i)}),(e=>{t.dispose(),n(e)}))}));return new class{cancel(){t.cancel()}then(e,t){return s.then(e,t)}catch(e){return this.then(void 0,e)}finally(e){return s.finally(e)}}}function l(e,t,i){return Promise.race([e,new Promise((e=>t.onCancellationRequested((()=>e(i)))))])}class c{constructor(e){this.defaultDelay=e,this.timeout=null,this.completionPromise=null,this.doResolve=null,this.doReject=null,this.task=null}trigger(e,t=this.defaultDelay){return this.task=e,this.cancelTimeout(),this.completionPromise||(this.completionPromise=new Promise(((e,t)=>{this.doResolve=e,this.doReject=t})).then((()=>{if(this.completionPromise=null,this.doResolve=null,this.task){const e=this.task;return this.task=null,e()}}))),this.timeout=setTimeout((()=>{this.timeout=null,this.doResolve&&this.doResolve(null)}),t),this.completionPromise}isTriggered(){return null!==this.timeout}cancel(){this.cancelTimeout(),this.completionPromise&&(this.doReject&&this.doReject(r.F0()),this.completionPromise=null)}cancelTimeout(){null!==this.timeout&&(clearTimeout(this.timeout),this.timeout=null)}dispose(){this.cancelTimeout()}}function d(e,t){return t?new Promise(((i,n)=>{const s=setTimeout(i,e);t.onCancellationRequested((()=>{clearTimeout(s),n(r.F0())}))})):a((t=>d(e,t)))}function h(e,t=0){const i=setTimeout(e,t);return(0,s.OF)((()=>clearTimeout(i)))}function u(e,t=(e=>!!e),i=null){let n=0;const r=e.length,s=()=>{if(n>=r)return Promise.resolve(i);const o=e[n++];return Promise.resolve(o()).then((e=>t(e)?Promise.resolve(e):s()))};return s()}class g{constructor(e,t){this._token=-1,"function"==typeof e&&"number"==typeof t&&this.setIfNotSet(e,t)}dispose(){this.cancel()}cancel(){-1!==this._token&&(clearTimeout(this._token),this._token=-1)}cancelAndSet(e,t){this.cancel(),this._token=setTimeout((()=>{this._token=-1,e()}),t)}setIfNotSet(e,t){-1===this._token&&(this._token=setTimeout((()=>{this._token=-1,e()}),t))}}class f{constructor(){this._token=-1}dispose(){this.cancel()}cancel(){-1!==this._token&&(clearInterval(this._token),this._token=-1)}cancelAndSet(e,t){this.cancel(),this._token=setInterval((()=>{e()}),t)}}class p{constructor(e,t){this.timeoutToken=-1,this.runner=e,this.timeout=t,this.timeoutHandler=this.onTimeout.bind(this)}dispose(){this.cancel(),this.runner=null}cancel(){this.isScheduled()&&(clearTimeout(this.timeoutToken),this.timeoutToken=-1)}schedule(e=this.timeout){this.cancel(),this.timeoutToken=setTimeout(this.timeoutHandler,e)}isScheduled(){return-1!==this.timeoutToken}onTimeout(){this.timeoutToken=-1,this.runner&&this.doRun()}doRun(){this.runner&&this.runner()}}let m;!function(){if("function"!=typeof requestIdleCallback||"function"!=typeof cancelIdleCallback){const e=Object.freeze({didTimeout:!0,timeRemaining:()=>15});m=t=>{const i=setTimeout((()=>t(e)));let n=!1;return{dispose(){n||(n=!0,clearTimeout(i))}}}}else m=(e,t)=>{const i=requestIdleCallback(e,"number"==typeof t?{timeout:t}:void 0);let n=!1;return{dispose(){n||(n=!0,cancelIdleCallback(i))}}}}();class _{constructor(e){this._didRun=!1,this._executor=()=>{try{this._value=e()}catch(e){this._error=e}finally{this._didRun=!0}},this._handle=m((()=>this._executor()))}dispose(){this._handle.dispose()}get value(){if(this._didRun||(this._handle.dispose(),this._executor()),this._error)throw this._error;return this._value}}},53060:(e,t,i)=>{"use strict";i.d(t,{KN:()=>a,mP:()=>l,oq:()=>c,Ag:()=>d,T4:()=>h,Q$:()=>u,Cg:()=>g});var n=i(97295);const r="undefined"!=typeof Buffer,s="undefined"!=typeof TextDecoder;let o;class a{constructor(e){this.buffer=e,this.byteLength=this.buffer.byteLength}toString(){return r?this.buffer.toString():s?(o||(o=new TextDecoder),o.decode(this.buffer)):n.CZ(this.buffer)}}function l(e,t){return e[t+0]<<0>>>0|e[t+1]<<8>>>0}function c(e,t,i){e[i+0]=255&t,t>>>=8,e[i+1]=255&t}function d(e,t){return e[t]*Math.pow(2,24)+e[t+1]*Math.pow(2,16)+e[t+2]*Math.pow(2,8)+e[t+3]}function h(e,t,i){e[i+3]=t,t>>>=8,e[i+2]=t,t>>>=8,e[i+1]=t,t>>>=8,e[i]=t}function u(e,t){return e[t]}function g(e,t,i){e[i]=t}},71050:(e,t,i)=>{"use strict";i.d(t,{T:()=>s,A:()=>a});var n=i(4669);const r=Object.freeze((function(e,t){const i=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(i)}}}));var s;!function(e){e.isCancellationToken=function(t){return t===e.None||t===e.Cancelled||t instanceof o||!(!t||"object"!=typeof t)&&"boolean"==typeof t.isCancellationRequested&&"function"==typeof t.onCancellationRequested},e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:n.ju.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:r})}(s||(s={}));class o{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?r:(this._emitter||(this._emitter=new n.Q5),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class a{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new o),this._token}cancel(){this._token?this._token instanceof o&&this._token.cancel():this._token=s.Cancelled}dispose(e=!1){e&&this.cancel(),this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof o&&this._token.dispose():this._token=s.None}}},60703:(e,t,i)=>{"use strict";i.d(t,{Ln:()=>s,fe:()=>o,YU:()=>a});var n=i(75392),r=i(97295);const s="$(";function o(e){const t=e.indexOf(s);return-1===t?{text:e}:function(e,t){const i=[];let n="";function r(e){if(e){n+=e;for(const t of e)i.push(d)}}let o,a,l=-1,c="",d=0,h=t;const u=e.length;for(r(e.substr(0,t));h<u;)o=e[h],a=e[h+1],o===s[0]&&a===s[1]?(l=h,r(c),c=s,h++):")"===o&&-1!==l?(d+=h-l+1,l=-1,c=""):-1!==l?/^[a-z0-9\-]$/i.test(o)?c+=o:(r(c),l=-1,c=""):r(o),h++;return r(c),{text:n,codiconOffsets:i}}(e,t)}function a(e,t,i=!1){const{text:s,codiconOffsets:o}=t;if(!o||0===o.length)return(0,n.Oh)(e,s,i);const a=(0,r.j3)(s," "),l=s.length-a.length,c=(0,n.Oh)(e,a,i);if(c)for(const e of c){const t=o[e.start+l]+l;e.start+=t,e.end+=t}return c}},73046:(e,t,i)=>{"use strict";i.d(t,{fK:()=>o,q5:()=>a,lA:()=>l,qQ:()=>d,dg:()=>u,b3:()=>g,Mi:()=>f,QF:()=>m});var n=i(60703),r=i(4669);const s=new class{constructor(){this._icons=new Map,this._onDidRegister=new r.Q5}add(e){this._icons.has(e.id)?console.error(`Duplicate registration of codicon ${e.id}`):(this._icons.set(e.id,e),this._onDidRegister.fire(e))}get(e){return this._icons.get(e)}get all(){return this._icons.values()}get onDidRegister(){return this._onDidRegister.event}},o=s;function a(e,t,i){return new l(e,t)}class l{constructor(e,t,i){this.id=e,this.definition=t,this.description=i,s.add(this)}get classNames(){return"codicon codicon-"+this.id}get cssSelector(){return".codicon.codicon-"+this.id}}!function(e){e.add=new e("add",{character:"\\ea60"}),e.plus=new e("plus",{character:"\\ea60"}),e.gistNew=new e("gist-new",{character:"\\ea60"}),e.repoCreate=new e("repo-create",{character:"\\ea60"}),e.lightbulb=new e("lightbulb",{character:"\\ea61"}),e.lightBulb=new e("light-bulb",{character:"\\ea61"}),e.repo=new e("repo",{character:"\\ea62"}),e.repoDelete=new e("repo-delete",{character:"\\ea62"}),e.gistFork=new e("gist-fork",{character:"\\ea63"}),e.repoForked=new e("repo-forked",{character:"\\ea63"}),e.gitPullRequest=new e("git-pull-request",{character:"\\ea64"}),e.gitPullRequestAbandoned=new e("git-pull-request-abandoned",{character:"\\ea64"}),e.recordKeys=new e("record-keys",{character:"\\ea65"}),e.keyboard=new e("keyboard",{character:"\\ea65"}),e.tag=new e("tag",{character:"\\ea66"}),e.tagAdd=new e("tag-add",{character:"\\ea66"}),e.tagRemove=new e("tag-remove",{character:"\\ea66"}),e.person=new e("person",{character:"\\ea67"}),e.personAdd=new e("person-add",{character:"\\ea67"}),e.personFollow=new e("person-follow",{character:"\\ea67"}),e.personOutline=new e("person-outline",{character:"\\ea67"}),e.personFilled=new e("person-filled",{character:"\\ea67"}),e.gitBranch=new e("git-branch",{character:"\\ea68"}),e.gitBranchCreate=new e("git-branch-create",{character:"\\ea68"}),e.gitBranchDelete=new e("git-branch-delete",{character:"\\ea68"}),e.sourceControl=new e("source-control",{character:"\\ea68"}),e.mirror=new e("mirror",{character:"\\ea69"}),e.mirrorPublic=new e("mirror-public",{character:"\\ea69"}),e.star=new e("star",{character:"\\ea6a"}),e.starAdd=new e("star-add",{character:"\\ea6a"}),e.starDelete=new e("star-delete",{character:"\\ea6a"}),e.starEmpty=new e("star-empty",{character:"\\ea6a"}),e.comment=new e("comment",{character:"\\ea6b"}),e.commentAdd=new e("comment-add",{character:"\\ea6b"}),e.alert=new e("alert",{character:"\\ea6c"}),e.warning=new e("warning",{character:"\\ea6c"}),e.search=new e("search",{character:"\\ea6d"}),e.searchSave=new e("search-save",{character:"\\ea6d"}),e.logOut=new e("log-out",{character:"\\ea6e"}),e.signOut=new e("sign-out",{character:"\\ea6e"}),e.logIn=new e("log-in",{character:"\\ea6f"}),e.signIn=new e("sign-in",{character:"\\ea6f"}),e.eye=new e("eye",{character:"\\ea70"}),e.eyeUnwatch=new e("eye-unwatch",{character:"\\ea70"}),e.eyeWatch=new e("eye-watch",{character:"\\ea70"}),e.circleFilled=new e("circle-filled",{character:"\\ea71"}),e.primitiveDot=new e("primitive-dot",{character:"\\ea71"}),e.closeDirty=new e("close-dirty",{character:"\\ea71"}),e.debugBreakpoint=new e("debug-breakpoint",{character:"\\ea71"}),e.debugBreakpointDisabled=new e("debug-breakpoint-disabled",{character:"\\ea71"}),e.debugHint=new e("debug-hint",{character:"\\ea71"}),e.primitiveSquare=new e("primitive-square",{character:"\\ea72"}),e.edit=new e("edit",{character:"\\ea73"}),e.pencil=new e("pencil",{character:"\\ea73"}),e.info=new e("info",{character:"\\ea74"}),e.issueOpened=new e("issue-opened",{character:"\\ea74"}),e.gistPrivate=new e("gist-private",{character:"\\ea75"}),e.gitForkPrivate=new e("git-fork-private",{character:"\\ea75"}),e.lock=new e("lock",{character:"\\ea75"}),e.mirrorPrivate=new e("mirror-private",{character:"\\ea75"}),e.close=new e("close",{character:"\\ea76"}),e.removeClose=new e("remove-close",{character:"\\ea76"}),e.x=new e("x",{character:"\\ea76"}),e.repoSync=new e("repo-sync",{character:"\\ea77"}),e.sync=new e("sync",{character:"\\ea77"}),e.clone=new e("clone",{character:"\\ea78"}),e.desktopDownload=new e("desktop-download",{character:"\\ea78"}),e.beaker=new e("beaker",{character:"\\ea79"}),e.microscope=new e("microscope",{character:"\\ea79"}),e.vm=new e("vm",{character:"\\ea7a"}),e.deviceDesktop=new e("device-desktop",{character:"\\ea7a"}),e.file=new e("file",{character:"\\ea7b"}),e.fileText=new e("file-text",{character:"\\ea7b"}),e.more=new e("more",{character:"\\ea7c"}),e.ellipsis=new e("ellipsis",{character:"\\ea7c"}),e.kebabHorizontal=new e("kebab-horizontal",{character:"\\ea7c"}),e.mailReply=new e("mail-reply",{character:"\\ea7d"}),e.reply=new e("reply",{character:"\\ea7d"}),e.organization=new e("organization",{character:"\\ea7e"}),e.organizationFilled=new e("organization-filled",{character:"\\ea7e"}),e.organizationOutline=new e("organization-outline",{character:"\\ea7e"}),e.newFile=new e("new-file",{character:"\\ea7f"}),e.fileAdd=new e("file-add",{character:"\\ea7f"}),e.newFolder=new e("new-folder",{character:"\\ea80"}),e.fileDirectoryCreate=new e("file-directory-create",{character:"\\ea80"}),e.trash=new e("trash",{character:"\\ea81"}),e.trashcan=new e("trashcan",{character:"\\ea81"}),e.history=new e("history",{character:"\\ea82"}),e.clock=new e("clock",{character:"\\ea82"}),e.folder=new e("folder",{character:"\\ea83"}),e.fileDirectory=new e("file-directory",{character:"\\ea83"}),e.symbolFolder=new e("symbol-folder",{character:"\\ea83"}),e.logoGithub=new e("logo-github",{character:"\\ea84"}),e.markGithub=new e("mark-github",{character:"\\ea84"}),e.github=new e("github",{character:"\\ea84"}),e.terminal=new e("terminal",{character:"\\ea85"}),e.console=new e("console",{character:"\\ea85"}),e.repl=new e("repl",{character:"\\ea85"}),e.zap=new e("zap",{character:"\\ea86"}),e.symbolEvent=new e("symbol-event",{character:"\\ea86"}),e.error=new e("error",{character:"\\ea87"}),e.stop=new e("stop",{character:"\\ea87"}),e.variable=new e("variable",{character:"\\ea88"}),e.symbolVariable=new e("symbol-variable",{character:"\\ea88"}),e.array=new e("array",{character:"\\ea8a"}),e.symbolArray=new e("symbol-array",{character:"\\ea8a"}),e.symbolModule=new e("symbol-module",{character:"\\ea8b"}),e.symbolPackage=new e("symbol-package",{character:"\\ea8b"}),e.symbolNamespace=new e("symbol-namespace",{character:"\\ea8b"}),e.symbolObject=new e("symbol-object",{character:"\\ea8b"}),e.symbolMethod=new e("symbol-method",{character:"\\ea8c"}),e.symbolFunction=new e("symbol-function",{character:"\\ea8c"}),e.symbolConstructor=new e("symbol-constructor",{character:"\\ea8c"}),e.symbolBoolean=new e("symbol-boolean",{character:"\\ea8f"}),e.symbolNull=new e("symbol-null",{character:"\\ea8f"}),e.symbolNumeric=new e("symbol-numeric",{character:"\\ea90"}),e.symbolNumber=new e("symbol-number",{character:"\\ea90"}),e.symbolStructure=new e("symbol-structure",{character:"\\ea91"}),e.symbolStruct=new e("symbol-struct",{character:"\\ea91"}),e.symbolParameter=new e("symbol-parameter",{character:"\\ea92"}),e.symbolTypeParameter=new e("symbol-type-parameter",{character:"\\ea92"}),e.symbolKey=new e("symbol-key",{character:"\\ea93"}),e.symbolText=new e("symbol-text",{character:"\\ea93"}),e.symbolReference=new e("symbol-reference",{character:"\\ea94"}),e.goToFile=new e("go-to-file",{character:"\\ea94"}),e.symbolEnum=new e("symbol-enum",{character:"\\ea95"}),e.symbolValue=new e("symbol-value",{character:"\\ea95"}),e.symbolRuler=new e("symbol-ruler",{character:"\\ea96"}),e.symbolUnit=new e("symbol-unit",{character:"\\ea96"}),e.activateBreakpoints=new e("activate-breakpoints",{character:"\\ea97"}),e.archive=new e("archive",{character:"\\ea98"}),e.arrowBoth=new e("arrow-both",{character:"\\ea99"}),e.arrowDown=new e("arrow-down",{character:"\\ea9a"}),e.arrowLeft=new e("arrow-left",{character:"\\ea9b"}),e.arrowRight=new e("arrow-right",{character:"\\ea9c"}),e.arrowSmallDown=new e("arrow-small-down",{character:"\\ea9d"}),e.arrowSmallLeft=new e("arrow-small-left",{character:"\\ea9e"}),e.arrowSmallRight=new e("arrow-small-right",{character:"\\ea9f"}),e.arrowSmallUp=new e("arrow-small-up",{character:"\\eaa0"}),e.arrowUp=new e("arrow-up",{character:"\\eaa1"}),e.bell=new e("bell",{character:"\\eaa2"}),e.bold=new e("bold",{character:"\\eaa3"}),e.book=new e("book",{character:"\\eaa4"}),e.bookmark=new e("bookmark",{character:"\\eaa5"}),e.debugBreakpointConditionalUnverified=new e("debug-breakpoint-conditional-unverified",{character:"\\eaa6"}),e.debugBreakpointConditional=new e("debug-breakpoint-conditional",{character:"\\eaa7"}),e.debugBreakpointConditionalDisabled=new e("debug-breakpoint-conditional-disabled",{character:"\\eaa7"}),e.debugBreakpointDataUnverified=new e("debug-breakpoint-data-unverified",{character:"\\eaa8"}),e.debugBreakpointData=new e("debug-breakpoint-data",{character:"\\eaa9"}),e.debugBreakpointDataDisabled=new e("debug-breakpoint-data-disabled",{character:"\\eaa9"}),e.debugBreakpointLogUnverified=new e("debug-breakpoint-log-unverified",{character:"\\eaaa"}),e.debugBreakpointLog=new e("debug-breakpoint-log",{character:"\\eaab"}),e.debugBreakpointLogDisabled=new e("debug-breakpoint-log-disabled",{character:"\\eaab"}),e.briefcase=new e("briefcase",{character:"\\eaac"}),e.broadcast=new e("broadcast",{character:"\\eaad"}),e.browser=new e("browser",{character:"\\eaae"}),e.bug=new e("bug",{character:"\\eaaf"}),e.calendar=new e("calendar",{character:"\\eab0"}),e.caseSensitive=new e("case-sensitive",{character:"\\eab1"}),e.check=new e("check",{character:"\\eab2"}),e.checklist=new e("checklist",{character:"\\eab3"}),e.chevronDown=new e("chevron-down",{character:"\\eab4"}),e.chevronLeft=new e("chevron-left",{character:"\\eab5"}),e.chevronRight=new e("chevron-right",{character:"\\eab6"}),e.chevronUp=new e("chevron-up",{character:"\\eab7"}),e.chromeClose=new e("chrome-close",{character:"\\eab8"}),e.chromeMaximize=new e("chrome-maximize",{character:"\\eab9"}),e.chromeMinimize=new e("chrome-minimize",{character:"\\eaba"}),e.chromeRestore=new e("chrome-restore",{character:"\\eabb"}),e.circleOutline=new e("circle-outline",{character:"\\eabc"}),e.debugBreakpointUnverified=new e("debug-breakpoint-unverified",{character:"\\eabc"}),e.circleSlash=new e("circle-slash",{character:"\\eabd"}),e.circuitBoard=new e("circuit-board",{character:"\\eabe"}),e.clearAll=new e("clear-all",{character:"\\eabf"}),e.clippy=new e("clippy",{character:"\\eac0"}),e.closeAll=new e("close-all",{character:"\\eac1"}),e.cloudDownload=new e("cloud-download",{character:"\\eac2"}),e.cloudUpload=new e("cloud-upload",{character:"\\eac3"}),e.code=new e("code",{character:"\\eac4"}),e.collapseAll=new e("collapse-all",{character:"\\eac5"}),e.colorMode=new e("color-mode",{character:"\\eac6"}),e.commentDiscussion=new e("comment-discussion",{character:"\\eac7"}),e.compareChanges=new e("compare-changes",{character:"\\eafd"}),e.creditCard=new e("credit-card",{character:"\\eac9"}),e.dash=new e("dash",{character:"\\eacc"}),e.dashboard=new e("dashboard",{character:"\\eacd"}),e.database=new e("database",{character:"\\eace"}),e.debugContinue=new e("debug-continue",{character:"\\eacf"}),e.debugDisconnect=new e("debug-disconnect",{character:"\\ead0"}),e.debugPause=new e("debug-pause",{character:"\\ead1"}),e.debugRestart=new e("debug-restart",{character:"\\ead2"}),e.debugStart=new e("debug-start",{character:"\\ead3"}),e.debugStepInto=new e("debug-step-into",{character:"\\ead4"}),e.debugStepOut=new e("debug-step-out",{character:"\\ead5"}),e.debugStepOver=new e("debug-step-over",{character:"\\ead6"}),e.debugStop=new e("debug-stop",{character:"\\ead7"}),e.debug=new e("debug",{character:"\\ead8"}),e.deviceCameraVideo=new e("device-camera-video",{character:"\\ead9"}),e.deviceCamera=new e("device-camera",{character:"\\eada"}),e.deviceMobile=new e("device-mobile",{character:"\\eadb"}),e.diffAdded=new e("diff-added",{character:"\\eadc"}),e.diffIgnored=new e("diff-ignored",{character:"\\eadd"}),e.diffModified=new e("diff-modified",{character:"\\eade"}),e.diffRemoved=new e("diff-removed",{character:"\\eadf"}),e.diffRenamed=new e("diff-renamed",{character:"\\eae0"}),e.diff=new e("diff",{character:"\\eae1"}),e.discard=new e("discard",{character:"\\eae2"}),e.editorLayout=new e("editor-layout",{character:"\\eae3"}),e.emptyWindow=new e("empty-window",{character:"\\eae4"}),e.exclude=new e("exclude",{character:"\\eae5"}),e.extensions=new e("extensions",{character:"\\eae6"}),e.eyeClosed=new e("eye-closed",{character:"\\eae7"}),e.fileBinary=new e("file-binary",{character:"\\eae8"}),e.fileCode=new e("file-code",{character:"\\eae9"}),e.fileMedia=new e("file-media",{character:"\\eaea"}),e.filePdf=new e("file-pdf",{character:"\\eaeb"}),e.fileSubmodule=new e("file-submodule",{character:"\\eaec"}),e.fileSymlinkDirectory=new e("file-symlink-directory",{character:"\\eaed"}),e.fileSymlinkFile=new e("file-symlink-file",{character:"\\eaee"}),e.fileZip=new e("file-zip",{character:"\\eaef"}),e.files=new e("files",{character:"\\eaf0"}),e.filter=new e("filter",{character:"\\eaf1"}),e.flame=new e("flame",{character:"\\eaf2"}),e.foldDown=new e("fold-down",{character:"\\eaf3"}),e.foldUp=new e("fold-up",{character:"\\eaf4"}),e.fold=new e("fold",{character:"\\eaf5"}),e.folderActive=new e("folder-active",{character:"\\eaf6"}),e.folderOpened=new e("folder-opened",{character:"\\eaf7"}),e.gear=new e("gear",{character:"\\eaf8"}),e.gift=new e("gift",{character:"\\eaf9"}),e.gistSecret=new e("gist-secret",{character:"\\eafa"}),e.gist=new e("gist",{character:"\\eafb"}),e.gitCommit=new e("git-commit",{character:"\\eafc"}),e.gitCompare=new e("git-compare",{character:"\\eafd"}),e.gitMerge=new e("git-merge",{character:"\\eafe"}),e.githubAction=new e("github-action",{character:"\\eaff"}),e.githubAlt=new e("github-alt",{character:"\\eb00"}),e.globe=new e("globe",{character:"\\eb01"}),e.grabber=new e("grabber",{character:"\\eb02"}),e.graph=new e("graph",{character:"\\eb03"}),e.gripper=new e("gripper",{character:"\\eb04"}),e.heart=new e("heart",{character:"\\eb05"}),e.home=new e("home",{character:"\\eb06"}),e.horizontalRule=new e("horizontal-rule",{character:"\\eb07"}),e.hubot=new e("hubot",{character:"\\eb08"}),e.inbox=new e("inbox",{character:"\\eb09"}),e.issueClosed=new e("issue-closed",{character:"\\eb0a"}),e.issueReopened=new e("issue-reopened",{character:"\\eb0b"}),e.issues=new e("issues",{character:"\\eb0c"}),e.italic=new e("italic",{character:"\\eb0d"}),e.jersey=new e("jersey",{character:"\\eb0e"}),e.json=new e("json",{character:"\\eb0f"}),e.kebabVertical=new e("kebab-vertical",{character:"\\eb10"}),e.key=new e("key",{character:"\\eb11"}),e.law=new e("law",{character:"\\eb12"}),e.lightbulbAutofix=new e("lightbulb-autofix",{character:"\\eb13"}),e.linkExternal=new e("link-external",{character:"\\eb14"}),e.link=new e("link",{character:"\\eb15"}),e.listOrdered=new e("list-ordered",{character:"\\eb16"}),e.listUnordered=new e("list-unordered",{character:"\\eb17"}),e.liveShare=new e("live-share",{character:"\\eb18"}),e.loading=new e("loading",{character:"\\eb19"}),e.location=new e("location",{character:"\\eb1a"}),e.mailRead=new e("mail-read",{character:"\\eb1b"}),e.mail=new e("mail",{character:"\\eb1c"}),e.markdown=new e("markdown",{character:"\\eb1d"}),e.megaphone=new e("megaphone",{character:"\\eb1e"}),e.mention=new e("mention",{character:"\\eb1f"}),e.milestone=new e("milestone",{character:"\\eb20"}),e.mortarBoard=new e("mortar-board",{character:"\\eb21"}),e.move=new e("move",{character:"\\eb22"}),e.multipleWindows=new e("multiple-windows",{character:"\\eb23"}),e.mute=new e("mute",{character:"\\eb24"}),e.noNewline=new e("no-newline",{character:"\\eb25"}),e.note=new e("note",{character:"\\eb26"}),e.octoface=new e("octoface",{character:"\\eb27"}),e.openPreview=new e("open-preview",{character:"\\eb28"}),e.package_=new e("package",{character:"\\eb29"}),e.paintcan=new e("paintcan",{character:"\\eb2a"}),e.pin=new e("pin",{character:"\\eb2b"}),e.play=new e("play",{character:"\\eb2c"}),e.run=new e("run",{character:"\\eb2c"}),e.plug=new e("plug",{character:"\\eb2d"}),e.preserveCase=new e("preserve-case",{character:"\\eb2e"}),e.preview=new e("preview",{character:"\\eb2f"}),e.project=new e("project",{character:"\\eb30"}),e.pulse=new e("pulse",{character:"\\eb31"}),e.question=new e("question",{character:"\\eb32"}),e.quote=new e("quote",{character:"\\eb33"}),e.radioTower=new e("radio-tower",{character:"\\eb34"}),e.reactions=new e("reactions",{character:"\\eb35"}),e.references=new e("references",{character:"\\eb36"}),e.refresh=new e("refresh",{character:"\\eb37"}),e.regex=new e("regex",{character:"\\eb38"}),e.remoteExplorer=new e("remote-explorer",{character:"\\eb39"}),e.remote=new e("remote",{character:"\\eb3a"}),e.remove=new e("remove",{character:"\\eb3b"}),e.replaceAll=new e("replace-all",{character:"\\eb3c"}),e.replace=new e("replace",{character:"\\eb3d"}),e.repoClone=new e("repo-clone",{character:"\\eb3e"}),e.repoForcePush=new e("repo-force-push",{character:"\\eb3f"}),e.repoPull=new e("repo-pull",{character:"\\eb40"}),e.repoPush=new e("repo-push",{character:"\\eb41"}),e.report=new e("report",{character:"\\eb42"}),e.requestChanges=new e("request-changes",{character:"\\eb43"}),e.rocket=new e("rocket",{character:"\\eb44"}),e.rootFolderOpened=new e("root-folder-opened",{character:"\\eb45"}),e.rootFolder=new e("root-folder",{character:"\\eb46"}),e.rss=new e("rss",{character:"\\eb47"}),e.ruby=new e("ruby",{character:"\\eb48"}),e.saveAll=new e("save-all",{character:"\\eb49"}),e.saveAs=new e("save-as",{character:"\\eb4a"}),e.save=new e("save",{character:"\\eb4b"}),e.screenFull=new e("screen-full",{character:"\\eb4c"}),e.screenNormal=new e("screen-normal",{character:"\\eb4d"}),e.searchStop=new e("search-stop",{character:"\\eb4e"}),e.server=new e("server",{character:"\\eb50"}),e.settingsGear=new e("settings-gear",{character:"\\eb51"}),e.settings=new e("settings",{character:"\\eb52"}),e.shield=new e("shield",{character:"\\eb53"}),e.smiley=new e("smiley",{character:"\\eb54"}),e.sortPrecedence=new e("sort-precedence",{character:"\\eb55"}),e.splitHorizontal=new e("split-horizontal",{character:"\\eb56"}),e.splitVertical=new e("split-vertical",{character:"\\eb57"}),e.squirrel=new e("squirrel",{character:"\\eb58"}),e.starFull=new e("star-full",{character:"\\eb59"}),e.starHalf=new e("star-half",{character:"\\eb5a"}),e.symbolClass=new e("symbol-class",{character:"\\eb5b"}),e.symbolColor=new e("symbol-color",{character:"\\eb5c"}),e.symbolConstant=new e("symbol-constant",{character:"\\eb5d"}),e.symbolEnumMember=new e("symbol-enum-member",{character:"\\eb5e"}),e.symbolField=new e("symbol-field",{character:"\\eb5f"}),e.symbolFile=new e("symbol-file",{character:"\\eb60"}),e.symbolInterface=new e("symbol-interface",{character:"\\eb61"}),e.symbolKeyword=new e("symbol-keyword",{character:"\\eb62"}),e.symbolMisc=new e("symbol-misc",{character:"\\eb63"}),e.symbolOperator=new e("symbol-operator",{character:"\\eb64"}),e.symbolProperty=new e("symbol-property",{character:"\\eb65"}),e.wrench=new e("wrench",{character:"\\eb65"}),e.wrenchSubaction=new e("wrench-subaction",{character:"\\eb65"}),e.symbolSnippet=new e("symbol-snippet",{character:"\\eb66"}),e.tasklist=new e("tasklist",{character:"\\eb67"}),e.telescope=new e("telescope",{character:"\\eb68"}),e.textSize=new e("text-size",{character:"\\eb69"}),e.threeBars=new e("three-bars",{character:"\\eb6a"}),e.thumbsdown=new e("thumbsdown",{character:"\\eb6b"}),e.thumbsup=new e("thumbsup",{character:"\\eb6c"}),e.tools=new e("tools",{character:"\\eb6d"}),e.triangleDown=new e("triangle-down",{character:"\\eb6e"}),e.triangleLeft=new e("triangle-left",{character:"\\eb6f"}),e.triangleRight=new e("triangle-right",{character:"\\eb70"}),e.triangleUp=new e("triangle-up",{character:"\\eb71"}),e.twitter=new e("twitter",{character:"\\eb72"}),e.unfold=new e("unfold",{character:"\\eb73"}),e.unlock=new e("unlock",{character:"\\eb74"}),e.unmute=new e("unmute",{character:"\\eb75"}),e.unverified=new e("unverified",{character:"\\eb76"}),e.verified=new e("verified",{character:"\\eb77"}),e.versions=new e("versions",{character:"\\eb78"}),e.vmActive=new e("vm-active",{character:"\\eb79"}),e.vmOutline=new e("vm-outline",{character:"\\eb7a"}),e.vmRunning=new e("vm-running",{character:"\\eb7b"}),e.watch=new e("watch",{character:"\\eb7c"}),e.whitespace=new e("whitespace",{character:"\\eb7d"}),e.wholeWord=new e("whole-word",{character:"\\eb7e"}),e.window=new e("window",{character:"\\eb7f"}),e.wordWrap=new e("word-wrap",{character:"\\eb80"}),e.zoomIn=new e("zoom-in",{character:"\\eb81"}),e.zoomOut=new e("zoom-out",{character:"\\eb82"}),e.listFilter=new e("list-filter",{character:"\\eb83"}),e.listFlat=new e("list-flat",{character:"\\eb84"}),e.listSelection=new e("list-selection",{character:"\\eb85"}),e.selection=new e("selection",{character:"\\eb85"}),e.listTree=new e("list-tree",{character:"\\eb86"}),e.debugBreakpointFunctionUnverified=new e("debug-breakpoint-function-unverified",{character:"\\eb87"}),e.debugBreakpointFunction=new e("debug-breakpoint-function",{character:"\\eb88"}),e.debugBreakpointFunctionDisabled=new e("debug-breakpoint-function-disabled",{character:"\\eb88"}),e.debugStackframeActive=new e("debug-stackframe-active",{character:"\\eb89"}),e.debugStackframeDot=new e("debug-stackframe-dot",{character:"\\eb8a"}),e.debugStackframe=new e("debug-stackframe",{character:"\\eb8b"}),e.debugStackframeFocused=new e("debug-stackframe-focused",{character:"\\eb8b"}),e.debugBreakpointUnsupported=new e("debug-breakpoint-unsupported",{character:"\\eb8c"}),e.symbolString=new e("symbol-string",{character:"\\eb8d"}),e.debugReverseContinue=new e("debug-reverse-continue",{character:"\\eb8e"}),e.debugStepBack=new e("debug-step-back",{character:"\\eb8f"}),e.debugRestartFrame=new e("debug-restart-frame",{character:"\\eb90"}),e.callIncoming=new e("call-incoming",{character:"\\eb92"}),e.callOutgoing=new e("call-outgoing",{character:"\\eb93"}),e.menu=new e("menu",{character:"\\eb94"}),e.expandAll=new e("expand-all",{character:"\\eb95"}),e.feedback=new e("feedback",{character:"\\eb96"}),e.groupByRefType=new e("group-by-ref-type",{character:"\\eb97"}),e.ungroupByRefType=new e("ungroup-by-ref-type",{character:"\\eb98"}),e.account=new e("account",{character:"\\eb99"}),e.bellDot=new e("bell-dot",{character:"\\eb9a"}),e.debugConsole=new e("debug-console",{character:"\\eb9b"}),e.library=new e("library",{character:"\\eb9c"}),e.output=new e("output",{character:"\\eb9d"}),e.runAll=new e("run-all",{character:"\\eb9e"}),e.syncIgnored=new e("sync-ignored",{character:"\\eb9f"}),e.pinned=new e("pinned",{character:"\\eba0"}),e.githubInverted=new e("github-inverted",{character:"\\eba1"}),e.debugAlt=new e("debug-alt",{character:"\\eb91"}),e.serverProcess=new e("server-process",{character:"\\eba2"}),e.serverEnvironment=new e("server-environment",{character:"\\eba3"}),e.pass=new e("pass",{character:"\\eba4"}),e.stopCircle=new e("stop-circle",{character:"\\eba5"}),e.playCircle=new e("play-circle",{character:"\\eba6"}),e.record=new e("record",{character:"\\eba7"}),e.debugAltSmall=new e("debug-alt-small",{character:"\\eba8"}),e.vmConnect=new e("vm-connect",{character:"\\eba9"}),e.cloud=new e("cloud",{character:"\\ebaa"}),e.merge=new e("merge",{character:"\\ebab"})}(l||(l={}));const c=/(\\)?\$\([a-z0-9\-]+?(?:~[a-z0-9\-]*?)?\)/gi;function d(e){return e.replace(c,((e,t)=>t?e:`\\${e}`))}const h=/\\\$\([a-z0-9\-]+?(?:~[a-z0-9\-]*?)?\)/gi;function u(e){return e.replace(h,(e=>`\\${e}`))}const g=/(\\)?\$\((([a-z0-9\-]+?)(?:~([a-z0-9\-]*?))?)\)/gi;function f(e){return e.replace(g,((e,t,i,n,r)=>t?`$(${i})`:`<span class="codicon codicon-${n}${r?` codicon-animation-${r}`:""}"></span>`))}const p=/(\s)?(\\)?\$\([a-z0-9\-]+?(?:~[a-z0-9\-]*?)?\)(\s)?/gi;function m(e){return-1===e.indexOf(n.Ln)?e:e.replace(p,((e,t,i,n)=>i?e:t||n||""))}},6626:(e,t,i)=>{"use strict";i.d(t,{E:()=>r,r:()=>s});const n=Object.prototype.hasOwnProperty;function r(e,t){for(let i in e)if(n.call(e,i)&&!1===t({key:i,value:e[i]},(function(){delete e[i]})))return}class s{constructor(){this.map=new Map}add(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}delete(e,t){const i=this.map.get(e);i&&(i.delete(t),0===i.size&&this.map.delete(e))}forEach(e,t){const i=this.map.get(e);i&&i.forEach(t)}}},41264:(e,t,i)=>{"use strict";function n(e,t){const i=Math.pow(10,t);return Math.round(e*i)/i}i.d(t,{VS:()=>r,tx:()=>o,Il:()=>a});class r{constructor(e,t,i,r=1){this.r=0|Math.min(255,Math.max(0,e)),this.g=0|Math.min(255,Math.max(0,t)),this.b=0|Math.min(255,Math.max(0,i)),this.a=n(Math.max(Math.min(1,r),0),3)}static equals(e,t){return e.r===t.r&&e.g===t.g&&e.b===t.b&&e.a===t.a}}class s{constructor(e,t,i,r){this.h=0|Math.max(Math.min(360,e),0),this.s=n(Math.max(Math.min(1,t),0),3),this.l=n(Math.max(Math.min(1,i),0),3),this.a=n(Math.max(Math.min(1,r),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.l===t.l&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,r=e.a,o=Math.max(t,i,n),a=Math.min(t,i,n);let l=0,c=0;const d=(a+o)/2,h=o-a;if(h>0){switch(c=Math.min(d<=.5?h/(2*d):h/(2-2*d),1),o){case t:l=(i-n)/h+(i<n?6:0);break;case i:l=(n-t)/h+2;break;case n:l=(t-i)/h+4}l*=60,l=Math.round(l)}return new s(l,c,d,r)}static _hue2rgb(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+(t-e)*(2/3-i)*6:e}static toRGBA(e){const t=e.h/360,{s:i,l:n,a:o}=e;let a,l,c;if(0===i)a=l=c=n;else{const e=n<.5?n*(1+i):n+i-n*i,r=2*n-e;a=s._hue2rgb(r,e,t+1/3),l=s._hue2rgb(r,e,t),c=s._hue2rgb(r,e,t-1/3)}return new r(Math.round(255*a),Math.round(255*l),Math.round(255*c),o)}}class o{constructor(e,t,i,r){this.h=0|Math.max(Math.min(360,e),0),this.s=n(Math.max(Math.min(1,t),0),3),this.v=n(Math.max(Math.min(1,i),0),3),this.a=n(Math.max(Math.min(1,r),0),3)}static equals(e,t){return e.h===t.h&&e.s===t.s&&e.v===t.v&&e.a===t.a}static fromRGBA(e){const t=e.r/255,i=e.g/255,n=e.b/255,r=Math.max(t,i,n),s=r-Math.min(t,i,n),a=0===r?0:s/r;let l;return l=0===s?0:r===t?((i-n)/s%6+6)%6:r===i?(n-t)/s+2:(t-i)/s+4,new o(Math.round(60*l),a,r,e.a)}static toRGBA(e){const{h:t,s:i,v:n,a:s}=e,o=n*i,a=o*(1-Math.abs(t/60%2-1)),l=n-o;let[c,d,h]=[0,0,0];return t<60?(c=o,d=a):t<120?(c=a,d=o):t<180?(d=o,h=a):t<240?(d=a,h=o):t<300?(c=a,h=o):t<360&&(c=o,h=a),c=Math.round(255*(c+l)),d=Math.round(255*(d+l)),h=Math.round(255*(h+l)),new r(c,d,h,s)}}class a{constructor(e){if(!e)throw new Error("Color needs a value");if(e instanceof r)this.rgba=e;else if(e instanceof s)this._hsla=e,this.rgba=s.toRGBA(e);else{if(!(e instanceof o))throw new Error("Invalid color ctor argument");this._hsva=e,this.rgba=o.toRGBA(e)}}static fromHex(e){return a.Format.CSS.parseHex(e)||a.red}get hsla(){return this._hsla?this._hsla:s.fromRGBA(this.rgba)}get hsva(){return this._hsva?this._hsva:o.fromRGBA(this.rgba)}equals(e){return!!e&&r.equals(this.rgba,e.rgba)&&s.equals(this.hsla,e.hsla)&&o.equals(this.hsva,e.hsva)}getRelativeLuminance(){return n(.2126*a._relativeLuminanceForComponent(this.rgba.r)+.7152*a._relativeLuminanceForComponent(this.rgba.g)+.0722*a._relativeLuminanceForComponent(this.rgba.b),4)}static _relativeLuminanceForComponent(e){const t=e/255;return t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4)}isLighter(){return(299*this.rgba.r+587*this.rgba.g+114*this.rgba.b)/1e3>=128}isLighterThan(e){return this.getRelativeLuminance()>e.getRelativeLuminance()}isDarkerThan(e){return this.getRelativeLuminance()<e.getRelativeLuminance()}lighten(e){return new a(new s(this.hsla.h,this.hsla.s,this.hsla.l+this.hsla.l*e,this.hsla.a))}darken(e){return new a(new s(this.hsla.h,this.hsla.s,this.hsla.l-this.hsla.l*e,this.hsla.a))}transparent(e){const{r:t,g:i,b:n,a:s}=this.rgba;return new a(new r(t,i,n,s*e))}isTransparent(){return 0===this.rgba.a}isOpaque(){return 1===this.rgba.a}opposite(){return new a(new r(255-this.rgba.r,255-this.rgba.g,255-this.rgba.b,this.rgba.a))}toString(){return""+a.Format.CSS.format(this)}static getLighterColor(e,t,i){if(e.isLighterThan(t))return e;i=i||.5;const n=e.getRelativeLuminance(),r=t.getRelativeLuminance();return i=i*(r-n)/r,e.lighten(i)}static getDarkerColor(e,t,i){if(e.isDarkerThan(t))return e;i=i||.5;const n=e.getRelativeLuminance();return i=i*(n-t.getRelativeLuminance())/n,e.darken(i)}}a.white=new a(new r(255,255,255,1)),a.black=new a(new r(0,0,0,1)),a.red=new a(new r(255,0,0,1)),a.blue=new a(new r(0,0,255,1)),a.cyan=new a(new r(0,255,255,1)),a.lightgrey=new a(new r(211,211,211,1)),a.transparent=new a(new r(0,0,0,0)),function(e){let t;!function(t){let i;!function(t){function i(e){const t=e.toString(16);return 2!==t.length?"0"+t:t}function n(e){switch(e){case 48:return 0;case 49:return 1;case 50:return 2;case 51:return 3;case 52:return 4;case 53:return 5;case 54:return 6;case 55:return 7;case 56:return 8;case 57:return 9;case 97:case 65:return 10;case 98:case 66:return 11;case 99:case 67:return 12;case 100:case 68:return 13;case 101:case 69:return 14;case 102:case 70:return 15}return 0}t.formatRGB=function(t){return 1===t.rgba.a?`rgb(${t.rgba.r}, ${t.rgba.g}, ${t.rgba.b})`:e.Format.CSS.formatRGBA(t)},t.formatRGBA=function(e){return`rgba(${e.rgba.r}, ${e.rgba.g}, ${e.rgba.b}, ${+e.rgba.a.toFixed(2)})`},t.formatHSL=function(t){return 1===t.hsla.a?`hsl(${t.hsla.h}, ${(100*t.hsla.s).toFixed(2)}%, ${(100*t.hsla.l).toFixed(2)}%)`:e.Format.CSS.formatHSLA(t)},t.formatHSLA=function(e){return`hsla(${e.hsla.h}, ${(100*e.hsla.s).toFixed(2)}%, ${(100*e.hsla.l).toFixed(2)}%, ${e.hsla.a.toFixed(2)})`},t.formatHex=function(e){return`#${i(e.rgba.r)}${i(e.rgba.g)}${i(e.rgba.b)}`},t.formatHexA=function(t,n=!1){return n&&1===t.rgba.a?e.Format.CSS.formatHex(t):`#${i(t.rgba.r)}${i(t.rgba.g)}${i(t.rgba.b)}${i(Math.round(255*t.rgba.a))}`},t.format=function(t){return t.isOpaque()?e.Format.CSS.formatHex(t):e.Format.CSS.formatRGBA(t)},t.parseHex=function(t){const i=t.length;if(0===i)return null;if(35!==t.charCodeAt(0))return null;if(7===i){const i=16*n(t.charCodeAt(1))+n(t.charCodeAt(2)),s=16*n(t.charCodeAt(3))+n(t.charCodeAt(4)),o=16*n(t.charCodeAt(5))+n(t.charCodeAt(6));return new e(new r(i,s,o,1))}if(9===i){const i=16*n(t.charCodeAt(1))+n(t.charCodeAt(2)),s=16*n(t.charCodeAt(3))+n(t.charCodeAt(4)),o=16*n(t.charCodeAt(5))+n(t.charCodeAt(6)),a=16*n(t.charCodeAt(7))+n(t.charCodeAt(8));return new e(new r(i,s,o,a/255))}if(4===i){const i=n(t.charCodeAt(1)),s=n(t.charCodeAt(2)),o=n(t.charCodeAt(3));return new e(new r(16*i+i,16*s+s,16*o+o))}if(5===i){const i=n(t.charCodeAt(1)),s=n(t.charCodeAt(2)),o=n(t.charCodeAt(3)),a=n(t.charCodeAt(4));return new e(new r(16*i+i,16*s+s,16*o+o,(16*a+a)/255))}return null}}(i=t.CSS||(t.CSS={}))}(t=e.Format||(e.Format={}))}(a||(a={}))},49898:(e,t,i)=>{"use strict";i.d(t,{H:()=>r});let n=0;function r(e,t,i){return function(){const e="$memoize"+n++;let t;const i=function(i,n,r){let s=null,o=null;if("function"==typeof r.value?(s="value",o=r.value,0!==o.length&&console.warn("Memoize should only be used in functions with zero parameters")):"function"==typeof r.get&&(s="get",o=r.get),!o)throw new Error("not supported");const a=`${e}:${n}`;r[s]=function(...e){return t=this,this.hasOwnProperty(a)||Object.defineProperty(this,a,{configurable:!0,enumerable:!1,writable:!0,value:o.apply(this,e)}),this[a]}};return i.clear=()=>{void 0!==t&&Object.getOwnPropertyNames(t).forEach((i=>{0===i.indexOf(e)&&delete t[i]}))},i}()(e,t,i)}},17301:(e,t,i)=>{"use strict";i.d(t,{dL:()=>r,Cp:()=>s,ri:()=>o,VV:()=>l,F0:()=>c,b1:()=>d,L6:()=>h});const n=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout((()=>{if(e.stack)throw new Error(e.message+"\n\n"+e.stack);throw e}),0)}}emit(e){this.listeners.forEach((t=>{t(e)}))}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}};function r(e){l(e)||n.onUnexpectedError(e)}function s(e){l(e)||n.onUnexpectedExternalError(e)}function o(e){if(e instanceof Error){let{name:t,message:i}=e;return{$isError:!0,name:t,message:i,stack:e.stacktrace||e.stack}}return e}const a="Canceled";function l(e){return e instanceof Error&&e.name===a&&e.message===a}function c(){const e=new Error(a);return e.name=e.message,e}function d(e){return e?new Error(`Illegal argument: ${e}`):new Error("Illegal argument")}function h(e){return e?new Error(`Illegal state: ${e}`):new Error("Illegal state")}},4669:(e,t,i)=>{"use strict";i.d(t,{ju:()=>n,Q5:()=>a,K3:()=>l,E7:()=>c,ZD:()=>d});var n,r=i(17301),s=i(5976),o=i(91741);!function(e){function t(e){return(t,i=null,n)=>{let r,s=!1;return r=e((e=>{if(!s)return r?r.dispose():s=!0,t.call(i,e)}),null,n),s&&r.dispose(),r}}function i(e,t){return l(((i,n=null,r)=>e((e=>i.call(n,t(e))),null,r)))}function n(e,t){return l(((i,n=null,r)=>e((e=>{t(e),i.call(n,e)}),null,r)))}function r(e,t){return l(((i,n=null,r)=>e((e=>t(e)&&i.call(n,e)),null,r)))}function o(e,t,n){let r=n;return i(e,(e=>(r=t(r,e),r)))}function l(e){let t;const i=new a({onFirstListenerAdd(){t=e(i.fire,i)},onLastListenerRemove(){t.dispose()}});return i.event}function c(e,t,i=100,n=!1,r){let s,o,l,c=0;const d=new a({leakWarningThreshold:r,onFirstListenerAdd(){s=e((e=>{c++,o=t(o,e),n&&!l&&(d.fire(o),o=void 0),clearTimeout(l),l=setTimeout((()=>{const e=o;o=void 0,l=void 0,(!n||c>1)&&d.fire(e),c=0}),i)}))},onLastListenerRemove(){s.dispose()}});return d.event}function d(e){let t,i=!0;return r(e,(e=>{const n=i||e!==t;return i=!1,t=e,n}))}e.None=()=>s.JT.None,e.once=t,e.map=i,e.forEach=n,e.filter=r,e.signal=function(e){return e},e.any=function(...e){return(t,i=null,n)=>(0,s.F8)(...e.map((e=>e((e=>t.call(i,e)),null,n))))},e.reduce=o,e.snapshot=l,e.debounce=c,e.stopwatch=function(e){const n=(new Date).getTime();return i(t(e),(e=>(new Date).getTime()-n))},e.latch=d,e.buffer=function(e,t=!1,i=[]){let n=i.slice(),r=e((e=>{n?n.push(e):o.fire(e)}));const s=()=>{n&&n.forEach((e=>o.fire(e))),n=null},o=new a({onFirstListenerAdd(){r||(r=e((e=>o.fire(e))))},onFirstListenerDidAdd(){n&&(t?setTimeout(s):s())},onLastListenerRemove(){r&&r.dispose(),r=null}});return o.event};class h{constructor(e){this.event=e}map(e){return new h(i(this.event,e))}forEach(e){return new h(n(this.event,e))}filter(e){return new h(r(this.event,e))}reduce(e,t){return new h(o(this.event,e,t))}latch(){return new h(d(this.event))}debounce(e,t=100,i=!1,n){return new h(c(this.event,e,t,i,n))}on(e,t,i){return this.event(e,t,i)}once(e,i,n){return t(this.event)(e,i,n)}}e.chain=function(e){return new h(e)},e.fromNodeEventEmitter=function(e,t,i=(e=>e)){const n=(...e)=>r.fire(i(...e)),r=new a({onFirstListenerAdd:()=>e.on(t,n),onLastListenerRemove:()=>e.removeListener(t,n)});return r.event},e.fromDOMEventEmitter=function(e,t,i=(e=>e)){const n=(...e)=>r.fire(i(...e)),r=new a({onFirstListenerAdd:()=>e.addEventListener(t,n),onLastListenerRemove:()=>e.removeEventListener(t,n)});return r.event},e.fromPromise=function(e){const t=new a;let i=!1;return e.then(void 0,(()=>null)).then((()=>{i?t.fire(void 0):setTimeout((()=>t.fire(void 0)),0)})),i=!0,t.event},e.toPromise=function(e){return new Promise((i=>t(e)(i)))}}(n||(n={}));class a{constructor(e){this._disposed=!1,this._options=e,this._leakageMon=void 0}get event(){return this._event||(this._event=(e,t,i)=>{this._listeners||(this._listeners=new o.S);const n=this._listeners.isEmpty();n&&this._options&&this._options.onFirstListenerAdd&&this._options.onFirstListenerAdd(this);const r=this._listeners.push(t?[e,t]:e);let l,c;return n&&this._options&&this._options.onFirstListenerDidAdd&&this._options.onFirstListenerDidAdd(this),this._options&&this._options.onListenerDidAdd&&this._options.onListenerDidAdd(this,e,t),this._leakageMon&&(l=this._leakageMon.check(this._listeners.size)),c={dispose:()=>{l&&l(),c.dispose=a._noop,!this._disposed&&(r(),this._options&&this._options.onLastListenerRemove)&&(this._listeners&&!this._listeners.isEmpty()||this._options.onLastListenerRemove(this))}},i instanceof s.SL?i.add(c):Array.isArray(i)&&i.push(c),c}),this._event}fire(e){if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new o.S);for(let t of this._listeners)this._deliveryQueue.push([t,e]);for(;this._deliveryQueue.size>0;){const[e,t]=this._deliveryQueue.shift();try{"function"==typeof e?e.call(void 0,t):e[0].call(e[1],t)}catch(e){(0,r.dL)(e)}}}}dispose(){this._listeners&&this._listeners.clear(),this._deliveryQueue&&this._deliveryQueue.clear(),this._leakageMon&&this._leakageMon.dispose(),this._disposed=!0}}a._noop=function(){};class l extends a{constructor(e){super(e),this._isPaused=0,this._eventQueue=new o.S,this._mergeFn=e&&e.merge}pause(){this._isPaused++}resume(){if(0!==this._isPaused&&0==--this._isPaused)if(this._mergeFn){const e=this._eventQueue.toArray();this._eventQueue.clear(),super.fire(this._mergeFn(e))}else for(;!this._isPaused&&0!==this._eventQueue.size;)super.fire(this._eventQueue.shift())}fire(e){this._listeners&&(0!==this._isPaused?this._eventQueue.push(e):super.fire(e))}}class c{constructor(){this.buffers=[]}wrapEvent(e){return(t,i,n)=>e((e=>{const n=this.buffers[this.buffers.length-1];n?n.push((()=>t.call(i,e))):t.call(i,e)}),void 0,n)}bufferEvents(e){const t=[];this.buffers.push(t);const i=e();return this.buffers.pop(),t.forEach((e=>e())),i}}class d{constructor(){this.listening=!1,this.inputEvent=n.None,this.inputEventListener=s.JT.None,this.emitter=new a({onFirstListenerDidAdd:()=>{this.listening=!0,this.inputEventListener=this.inputEvent(this.emitter.fire,this.emitter)},onLastListenerRemove:()=>{this.listening=!1,this.inputEventListener.dispose()}}),this.event=this.emitter.event}set input(e){this.inputEvent=e,this.listening&&(this.inputEventListener.dispose(),this.inputEventListener=e(this.emitter.fire,this.emitter))}dispose(){this.inputEventListener.dispose(),this.emitter.dispose()}}},15527:(e,t,i)=>{"use strict";i.d(t,{e:()=>s,K:()=>o});var n=i(97295),r=i(88721);function s(e){return e.replace(/[\\/]/g,r.KR.sep)}function o(e,t,i,s=r.ir){if(e===t)return!0;if(!e||!t)return!1;if(t.length>e.length)return!1;if(i){if(!(0,n.ok)(e,t))return!1;if(t.length===e.length)return!0;let i=t.length;return t.charAt(t.length-1)===s&&i--,e.charAt(i)===s}return t.charAt(t.length-1)!==s&&(t+=s),0===e.indexOf(t)}},75392:(e,t,i)=>{"use strict";i.d(t,{or:()=>s,Ji:()=>o,ir:()=>a,KZ:()=>y,Oh:()=>L,jB:()=>M,mB:()=>D,CL:()=>P,EW:()=>F,l7:()=>U});var n=i(43702),r=i(97295);function s(...e){return function(t,i){for(let n=0,r=e.length;n<r;n++){const r=e[n](t,i);if(r)return r}return null}}const o=function(e,t,i){if(!i||i.length<t.length)return null;let n;return n=e?r.ok(i,t):0===i.indexOf(t),n?t.length>0?[{start:0,end:t.length}]:[]:null}.bind(void 0,!0);function a(e,t){const i=t.toLowerCase().indexOf(e.toLowerCase());return-1===i?null:[{start:i,end:i+e.length}]}function l(e,t,i,n){if(i===e.length)return[];if(n===t.length)return null;if(e[i]===t[n]){let r=null;return(r=l(e,t,i+1,n+1))?m({start:n,end:n+1},r):null}return l(e,t,i,n+1)}function c(e){return 97<=e&&e<=122}function d(e){return 65<=e&&e<=90}function h(e){return 48<=e&&e<=57}function u(e){return 32===e||9===e||10===e||13===e}const g=new Set;function f(e){return u(e)||g.has(e)}function p(e){return c(e)||d(e)||h(e)}function m(e,t){return 0===t.length?t=[e]:e.end===t[0].start?t[0].start=e.start:t.unshift(e),t}function _(e,t){for(let i=t;i<e.length;i++){const t=e.charCodeAt(i);if(d(t)||h(t)||i>0&&!p(e.charCodeAt(i-1)))return i}return e.length}function b(e,t,i,n){if(i===e.length)return[];if(n===t.length)return null;if(e[i]!==t[n].toLowerCase())return null;{let r=null,s=n+1;for(r=b(e,t,i+1,n+1);!r&&(s=_(t,s))<t.length;)r=b(e,t,i+1,s),s++;return null===r?null:m({start:n,end:n+1},r)}}function v(e,t){if(!t)return null;if(0===(t=t.trim()).length)return null;if(!function(e){let t=0,i=0,n=0,r=0;for(let s=0;s<e.length;s++)n=e.charCodeAt(s),d(n)&&t++,c(n)&&i++,u(n)&&r++;return 0!==t&&0!==i||0!==r?t<=5:e.length<=30}(e))return null;if(t.length>60)return null;const i=function(e){let t=0,i=0,n=0,r=0,s=0;for(let o=0;o<e.length;o++)s=e.charCodeAt(o),d(s)&&t++,c(s)&&i++,p(s)&&n++,h(s)&&r++;return{upperPercent:t/e.length,lowerPercent:i/e.length,alphaPercent:n/e.length,numericPercent:r/e.length}}(t);if(!function(e){const{upperPercent:t,lowerPercent:i,alphaPercent:n,numericPercent:r}=e;return i>.2&&t<.8&&n>.6&&r<.2}(i)){if(!function(e){const{upperPercent:t,lowerPercent:i}=e;return 0===i&&t>.6}(i))return null;t=t.toLowerCase()}let n=null,r=0;for(e=e.toLowerCase();r<t.length&&null===(n=b(e,t,0,r));)r=_(t,r+1);return n}function y(e,t,i=!1){if(!t||0===t.length)return null;let n=null,r=0;for(e=e.toLowerCase(),t=t.toLowerCase();r<t.length&&null===(n=w(e,t,0,r,i));)r=C(t,r+1);return n}function w(e,t,i,n,r){if(i===e.length)return[];if(n===t.length)return null;if((s=e.charCodeAt(i))===(o=t.charCodeAt(n))||f(s)&&f(o)){let s=null,o=n+1;if(s=w(e,t,i+1,n+1,r),!r)for(;!s&&(o=C(t,o))<t.length;)s=w(e,t,i+1,o,r),o++;return null===s?null:m({start:n,end:n+1},s)}return null;var s,o}function C(e,t){for(let i=t;i<e.length;i++)if(f(e.charCodeAt(i))||i>0&&f(e.charCodeAt(i-1)))return i;return e.length}"`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?".split("").forEach((e=>g.add(e.charCodeAt(0))));const S=s(o,v,a),k=s(o,v,(function(e,t){return l(e.toLowerCase(),t.toLowerCase(),0,0)})),x=new n.z6(1e4);function L(e,t,i=!1){if("string"!=typeof e||"string"!=typeof t)return null;let n=x.get(e);n||(n=new RegExp(r.un(e),"i"),x.set(e,n));const s=n.exec(t);return s?[{start:s.index,end:s.index+s[0].length}]:i?k(e,t):S(e,t)}function M(e,t,i,n,r,s){const o=F(e,t,0,n,r,0,!0);if(o)return o;let a=0,l=0,c=s;for(let e=0;e<t.length&&e<N;++e){const i=r.indexOf(t.charAt(e),c);if(i>=0)l+=1,a+=Math.pow(2,i),c=i+1;else if(0!==a)break}return[l,a,s]}function D(e){if(void 0===e)return[];const t=e[1].toString(2),i=[];for(let n=e[2];n<N;n++)if("1"===t[t.length-(n+1)]){const e=i[i.length-1];e&&e.end===n?e.end=n+1:i.push({start:n,end:n+1})}return i}const N=128;function E(){const e=[],t=[0];for(let e=1;e<=N;e++)t.push(-e);for(let i=0;i<=N;i++){const n=t.slice(0);n[0]=-i,e.push(n)}return e}const T=E(),I=E(),O=E();function A(e,t){if(t<0||t>=e.length)return!1;switch(e.charCodeAt(t)){case 95:case 45:case 46:case 32:case 47:case 92:case 39:case 34:case 58:case 36:return!0;default:return!1}}function R(e,t,i){return t[e]!==i[e]}var P;function F(e,t,i,n,r,s,o){const a=e.length>N?N:e.length,l=n.length>N?N:n.length;if(i>=a||s>=l||a-i>l-s)return;if(!function(e,t,i,n,r,s){for(;t<i&&r<s;)e[t]===n[r]&&(t+=1),r+=1;return t===i}(t,i,a,r,s,l))return;let c=1,d=1,h=i,u=s,g=!1;for(c=1,h=i;h<a;c++,h++)for(d=1,u=s;u<l;d++,u++){const s=B(e,t,h,i,n,r,u);h===i&&s>1&&(g=!0),I[c][d]=s;const o=T[c-1][d-1]+(s>1?1:s),a=T[c-1][d]+-1,l=T[c][d-1]+-1;l>=a?l>o?(T[c][d]=l,O[c][d]=4):l===o?(T[c][d]=l,O[c][d]=6):(T[c][d]=o,O[c][d]=2):a>o?(T[c][d]=a,O[c][d]=1):a===o?(T[c][d]=a,O[c][d]=3):(T[c][d]=o,O[c][d]=2)}return(g||o)&&(W=0,H=-100,j=s,V=o,z(c-1,d-1,a===l?1:0,0,!1),0!==W)?[H,Y,s]:void 0}function B(e,t,i,n,r,s,o){return t[i]!==s[o]?-1:o===i-n?e[i]===r[o]?7:5:!R(o,r,s)||0!==o&&R(o-1,r,s)?!A(s,o)||0!==o&&A(s,o-1)?A(s,o-1)||function(e,t){if(t<0||t>=e.length)return!1;switch(e.charCodeAt(t)){case 32:case 9:return!0;default:return!1}}(s,o-1)?5:1:5:e[i]===r[o]?7:5}!function(e){e.Default=Object.freeze([-100,0,0]),e.isDefault=function(e){return!e||-100===e[0]&&0===e[1]&&0===e[2]}}(P||(P={}));let W=0,Y=0,H=0,j=0,V=!1;function z(e,t,i,n,r){if(W>=10||i<-25)return;let s=0;for(;e>0&&t>0;){const o=I[e][t],a=O[e][t];if(4===a)t-=1,r?i-=5:0!==n&&(i-=1),r=!1,s=0;else{if(!(2&a))return;if(4&a&&z(e,t-1,0!==n?i-1:i,n,r),i+=o,e-=1,t-=1,r=!0,n+=Math.pow(2,t+j),1===o){if(s+=1,0===e&&!V)return}else i+=1+s*(o-1),s=0}}W+=1,(i-=t>=3?9:3*t)>H&&(H=i,Y=n)}function U(e,t,i,n,r,s,o){return function(e,t,i,n,r,s,o,a){let l=F(e,t,i,n,r,s,a);if(e.length>=3){const t=Math.min(7,e.length-1);for(let o=i+1;o<t;o++){const t=$(e,o);if(t){const e=F(t,t.toLowerCase(),i,n,r,s,a);e&&(e[0]-=3,(!l||e[0]>l[0])&&(l=e))}}}return l}(e,t,i,n,r,s,0,o)}function $(e,t){if(t+1>=e.length)return;const i=e[t],n=e[t+1];return i!==n?e.slice(0,t)+n+i+e.slice(t+2):void 0}},88289:(e,t,i)=>{"use strict";function n(e){const t=this;let i,n=!1;return function(){return n||(n=!0,i=e.apply(t,arguments)),i}}i.d(t,{I:()=>n})},14118:(e,t,i)=>{"use strict";i.d(t,{EQ:()=>M});var n=i(9488),r=i(97295),s=i(15527),o=i(88721),a=i(43702),l=i(15393);const c="**",d=/\//g;function h(e){switch(e){case 0:return"";case 1:return"[^/\\\\]*?";default:return"(?:[/\\\\]|[^/\\\\]+[/\\\\]|[/\\\\][^/\\\\]+)*?"}}function u(e,t){if(!e)return[];const i=[];let n=!1,r=!1,s="";for(const o of e){switch(o){case t:if(!n&&!r){i.push(s),s="";continue}break;case"{":n=!0;break;case"}":n=!1;break;case"[":r=!0;break;case"]":r=!1}s+=o}return s&&i.push(s),i}function g(e){if(!e)return"";let t="";const i=u(e,"/");if(i.every((e=>e===c)))t=".*";else{let e=!1;i.forEach(((n,s)=>{if(n===c)return void(e||(t+=h(2),e=!0));let o=!1,a="",l=!1,d="";for(const e of n)if("}"!==e&&o)a+=e;else if(!l||"]"===e&&d)switch(e){case"{":o=!0;continue;case"[":l=!0;continue;case"}":const i=`(?:${u(a,",").map((e=>g(e))).join("|")})`;t+=i,o=!1,a="";break;case"]":t+="["+d+"]",l=!1,d="";break;case"?":t+="[^/\\\\]";continue;case"*":t+=h(1);continue;default:t+=r.ec(e)}else{let t;t="-"===e?e:"^"!==e&&"!"!==e||d?"/"===e?"":r.ec(e):"^",d+=t}s<i.length-1&&(i[s+1]!==c||s+2<i.length)&&(t+="[/\\\\]"),e=!1}))}return t}const f=/^\*\*\/\*\.[\w\.-]+$/,p=/^\*\*\/([\w\.-]+)\/?$/,m=/^{\*\*\/[\*\.]?[\w\.-]+\/?(,\*\*\/[\*\.]?[\w\.-]+\/?)*}$/,_=/^{\*\*\/[\*\.]?[\w\.-]+(\/(\*\*)?)?(,\*\*\/[\*\.]?[\w\.-]+(\/(\*\*)?)?)*}$/,b=/^\*\*((\/[\w\.-]+)+)\/?$/,v=/^([\w\.-]+(\/[\w\.-]+)*)\/?$/,y=new a.z6(1e4),w=function(){return!1},C=function(){return null};function S(e,t){if(!e)return C;let i;i="string"!=typeof e?e.pattern:e,i=i.trim();const r=`${i}_${!!t.trimForExclusions}`;let s,o=y.get(r);if(o)return k(o,e);if(f.test(i)){const e=i.substr(4);o=function(t,n){return"string"==typeof t&&t.endsWith(e)?i:null}}else o=(s=p.exec(x(i,t)))?function(e,t){const i=`/${e}`,n=`\\${e}`,r=function(r,s){return"string"!=typeof r?null:s?s===e?t:null:r===e||r.endsWith(i)||r.endsWith(n)?t:null},s=[e];return r.basenames=s,r.patterns=[t],r.allBasenames=s,r}(s[1],i):(t.trimForExclusions?_:m).test(i)?function(e,t){const i=D(e.slice(1,-1).split(",").map((e=>S(e,t))).filter((e=>e!==C)),e),r=i.length;if(!r)return C;if(1===r)return i[0];const s=function(t,n){for(let r=0,s=i.length;r<s;r++)if(i[r](t,n))return e;return null},o=n.Ps(i,(e=>!!e.allBasenames));o&&(s.allBasenames=o.allBasenames);const a=i.reduce(((e,t)=>t.allPaths?e.concat(t.allPaths):e),[]);return a.length&&(s.allPaths=a),s}(i,t):(s=b.exec(x(i,t)))?L(s[1].substr(1),i,!0):(s=v.exec(x(i,t)))?L(s[1],i,!1):function(e){try{const t=new RegExp(`^${g(e)}$`);return function(i){return t.lastIndex=0,"string"==typeof i&&t.test(i)?e:null}}catch(e){return C}}(i);return y.set(r,o),k(o,e)}function k(e,t){return"string"==typeof t?e:function(i,n){return s.K(i,t.base)?e(o.Gf(t.base,i),n):null}}function x(e,t){return t.trimForExclusions&&e.endsWith("/**")?e.substr(0,e.length-2):e}function L(e,t,i){const n=o.ir!==o.KR.sep?e.replace(d,o.ir):e,r=o.ir+n,s=i?function(e,i){return"string"!=typeof e||e!==n&&!e.endsWith(r)?null:t}:function(e,i){return"string"==typeof e&&e===n?t:null};return s.allPaths=[(i?"*/":"./")+e],s}function M(e,t,i){return!(!e||"string"!=typeof t)&&function(e,t={}){if(!e)return w;if("string"==typeof e||function(e){const t=e;return t&&"string"==typeof t.base&&"string"==typeof t.pattern}(e)){const i=S(e,t);if(i===C)return w;const n=function(e,t){return!!i(e,t)};return i.allBasenames&&(n.allBasenames=i.allBasenames),i.allPaths&&(n.allPaths=i.allPaths),n}return function(e,t){const i=D(Object.getOwnPropertyNames(e).map((i=>function(e,t,i){if(!1===t)return C;const n=S(e,i);if(n===C)return C;if("boolean"==typeof t)return n;if(t){const i=t.when;if("string"==typeof i){const t=(t,r,s,o)=>{if(!o||!n(t,r))return null;const a=o(i.replace("$(basename)",s));return(0,l.J8)(a)?a.then((t=>t?e:null)):a?e:null};return t.requiresSiblings=!0,t}}return n}(i,e[i],t))).filter((e=>e!==C))),r=i.length;if(!r)return C;if(!i.some((e=>!!e.requiresSiblings))){if(1===r)return i[0];const e=function(e,t){for(let n=0,r=i.length;n<r;n++){const r=i[n](e,t);if(r)return r}return null},t=n.Ps(i,(e=>!!e.allBasenames));t&&(e.allBasenames=t.allBasenames);const s=i.reduce(((e,t)=>t.allPaths?e.concat(t.allPaths):e),[]);return s.length&&(e.allPaths=s),e}const s=function(e,t,n){let r;for(let s=0,a=i.length;s<a;s++){const a=i[s];a.requiresSiblings&&n&&(t||(t=o.EZ(e)),r||(r=t.substr(0,t.length-o.DZ(e).length)));const l=a(e,t,r,n);if(l)return l}return null},a=n.Ps(i,(e=>!!e.allBasenames));a&&(s.allBasenames=a.allBasenames);const c=i.reduce(((e,t)=>t.allPaths?e.concat(t.allPaths):e),[]);return c.length&&(s.allPaths=c),s}(e,t)}(e)(t,void 0,i)}function D(e,t){const i=e.filter((e=>!!e.basenames));if(i.length<2)return e;const n=i.reduce(((e,t)=>{const i=t.basenames;return i?e.concat(i):e}),[]);let r;if(t){r=[];for(let e=0,i=n.length;e<i;e++)r.push(t)}else r=i.reduce(((e,t)=>{const i=t.patterns;return i?e.concat(i):e}),[]);const s=function(e,t){if("string"!=typeof e)return null;if(!t){let i;for(i=e.length;i>0;i--){const t=e.charCodeAt(i-1);if(47===t||92===t)break}t=e.substr(i)}const i=n.indexOf(t);return-1!==i?r[i]:null};s.basenames=n,s.patterns=r,s.allBasenames=n;const o=e.filter((e=>!e.basenames));return o.push(s),o}},89954:(e,t,i)=>{"use strict";i.d(t,{vp:()=>r,Cv:()=>a,yP:()=>h});var n=i(97295);function r(e){return s(e,0)}function s(e,t){switch(typeof e){case"object":return null===e?o(349,t):Array.isArray(e)?(i=e,n=o(104579,n=t),i.reduce(((e,t)=>s(t,e)),n)):function(e,t){return t=o(181387,t),Object.keys(e).sort().reduce(((t,i)=>(t=a(i,t),s(e[i],t))),t)}(e,t);case"string":return a(e,t);case"boolean":return function(e,t){return o(e?433:863,t)}(e,t);case"number":return o(e,t);case"undefined":return o(937,t);default:return o(617,t)}var i,n}function o(e,t){return(t<<5)-t+e|0}function a(e,t){t=o(149417,t);for(let i=0,n=e.length;i<n;i++)t=o(e.charCodeAt(i),t);return t}function l(e,t,i=32){const n=i-t;return(e<<t|(~((1<<n)-1)&e)>>>n)>>>0}function c(e,t=0,i=e.byteLength,n=0){for(let r=0;r<i;r++)e[t+r]=n}function d(e,t=32){return function(e,t,i="0"){for(;e.length<t;)e=i+e;return e}((e>>>0).toString(16),t/4)}class h{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(0===t)return;const i=this._buff;let r,s,o=this._buffLen,a=this._leftoverHighSurrogate;for(0!==a?(r=a,s=-1,a=0):(r=e.charCodeAt(0),s=0);;){let l=r;if(n.ZG(r)){if(!(s+1<t)){a=r;break}{const t=e.charCodeAt(s+1);n.YK(t)?(s++,l=n.rL(r,t)):l=65533}}else n.YK(r)&&(l=65533);if(o=this._push(i,o,l),s++,!(s<t))break;r=e.charCodeAt(s)}this._buffLen=o,this._leftoverHighSurrogate=a}_push(e,t,i){return i<128?e[t++]=i:i<2048?(e[t++]=192|(1984&i)>>>6,e[t++]=128|(63&i)>>>0):i<65536?(e[t++]=224|(61440&i)>>>12,e[t++]=128|(4032&i)>>>6,e[t++]=128|(63&i)>>>0):(e[t++]=240|(1835008&i)>>>18,e[t++]=128|(258048&i)>>>12,e[t++]=128|(4032&i)>>>6,e[t++]=128|(63&i)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),d(this._h0)+d(this._h1)+d(this._h2)+d(this._h3)+d(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,c(this._buff,this._buffLen),this._buffLen>56&&(this._step(),c(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=h._bigBlock32,t=this._buffDV;for(let i=0;i<64;i+=4)e.setUint32(i,t.getUint32(i,!1),!1);for(let t=64;t<320;t+=4)e.setUint32(t,l(e.getUint32(t-12,!1)^e.getUint32(t-32,!1)^e.getUint32(t-56,!1)^e.getUint32(t-64,!1),1),!1);let i,n,r,s=this._h0,o=this._h1,a=this._h2,c=this._h3,d=this._h4;for(let t=0;t<80;t++)t<20?(i=o&a|~o&c,n=1518500249):t<40?(i=o^a^c,n=1859775393):t<60?(i=o&a|o&c|a&c,n=2400959708):(i=o^a^c,n=3395469782),r=l(s,5)+i+d+n+e.getUint32(4*t,!1)&4294967295,d=c,c=a,a=l(o,30),o=s,s=r;this._h0=this._h0+s&4294967295,this._h1=this._h1+o&4294967295,this._h2=this._h2+a&4294967295,this._h3=this._h3+c&4294967295,this._h4=this._h4+d&4294967295}}h._bigBlock32=new DataView(new ArrayBuffer(320))},59365:(e,t,i)=>{"use strict";i.d(t,{W5:()=>o,CP:()=>a,W6:()=>c,oR:()=>h,v1:()=>u});var n=i(9488),r=i(73046),s=i(17301);class o{constructor(e="",t=!1){var i,n;if(this._value=e,"string"!=typeof this._value)throw(0,s.b1)("value");"boolean"==typeof t?(this._isTrusted=t,this._supportThemeIcons=!1):(this._isTrusted=null!==(i=t.isTrusted)&&void 0!==i&&i,this._supportThemeIcons=null!==(n=t.supportThemeIcons)&&void 0!==n&&n)}get value(){return this._value}get isTrusted(){return this._isTrusted}get supportThemeIcons(){return this._supportThemeIcons}appendText(e){return this._value+=(this._supportThemeIcons?(0,r.qQ)(e):e).replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&").replace(/\n/g,"\n\n"),this}appendMarkdown(e){return this._value+=e,this}appendCodeblock(e,t){return this._value+="\n```",this._value+=e,this._value+="\n",this._value+=t,this._value+="\n```\n",this}}function a(e){return l(e)?!e.value:!Array.isArray(e)||e.every(a)}function l(e){return e instanceof o||!(!e||"object"!=typeof e)&&!("string"!=typeof e.value||"boolean"!=typeof e.isTrusted&&void 0!==e.isTrusted||"boolean"!=typeof e.supportThemeIcons&&void 0!==e.supportThemeIcons)}function c(e,t){return!e&&!t||!(!e||!t)&&(Array.isArray(e)&&Array.isArray(t)?(0,n.fS)(e,t,d):!(!l(e)||!l(t))&&d(e,t))}function d(e,t){return e===t||!(!e||!t)&&e.value===t.value&&e.isTrusted===t.isTrusted&&e.supportThemeIcons===t.supportThemeIcons}function h(e){return e?e.replace(/\\([\\`*_{}[\]()#+\-.!])/g,"$1"):e}function u(e){const t=[],i=e.split("|").map((e=>e.trim()));e=i[0];const n=i[1];if(n){const e=/height=(\d+)/.exec(n),i=/width=(\d+)/.exec(n),r=e?e[1]:"",s=i?i[1]:"",o=isFinite(parseInt(s)),a=isFinite(parseInt(r));o&&t.push(`width="${s}"`),a&&t.push(`height="${r}"`)}return{href:e,dimensions:t}}},44742:(e,t,i)=>{"use strict";i.d(t,{R:()=>n,a:()=>r});class n{constructor(e){this._prefix=e,this._lastId=0}nextId(){return this._prefix+ ++this._lastId}}const r=new n("id#")},53725:(e,t,i)=>{"use strict";var n;i.d(t,{$:()=>n}),function(e){e.is=function(e){return e&&"object"==typeof e&&"function"==typeof e[Symbol.iterator]};const t=Object.freeze([]);e.empty=function(){return t},e.single=function*(e){yield e},e.from=function(e){return e||t},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){for(const i of e)if(t(i))return!0;return!1},e.filter=function*(e,t){for(const i of e)t(i)&&(yield i)},e.map=function*(e,t){for(const i of e)yield t(i)},e.concat=function*(...e){for(const t of e)for(const e of t)yield e},e.consume=function(t,i=Number.POSITIVE_INFINITY){const n=[];if(0===i)return[n,t];const r=t[Symbol.iterator]();for(let t=0;t<i;t++){const t=r.next();if(t.done)return[n,e.empty()];n.push(t.value)}return[n,{[Symbol.iterator]:()=>r}]}}(n||(n={}))},22258:(e,t,i)=>{"use strict";i.d(t,{kL:()=>l,gx:()=>c,gm:()=>d,QC:()=>u,BQ:()=>f,f1:()=>p});var n=i(17301);class r{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const s=new r,o=new r,a=new r;var l;function c(e,t){return(e|(65535&t)<<16>>>0)>>>0}function d(e,t){if(0===e)return null;const i=(65535&e)>>>0,n=(4294901760&e)>>>16;return new g(0!==n?[h(i,t),h(n,t)]:[h(i,t)])}function h(e,t){const i=!!(2048&e),n=!!(256&e);return new u(2===t?n:i,!!(1024&e),!!(512&e),2===t?i:n,255&e)}!function(){function e(e,t,i=t,n=i){s.define(e,t),o.define(e,i),a.define(e,n)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")}(),function(e){e.toString=function(e){return s.keyCodeToStr(e)},e.fromString=function(e){return s.strToKeyCode(e)},e.toUserSettingsUS=function(e){return o.keyCodeToStr(e)},e.toUserSettingsGeneral=function(e){return a.keyCodeToStr(e)},e.fromUserSettings=function(e){return o.strToKeyCode(e)||a.strToKeyCode(e)}}(l||(l={}));class u{constructor(e,t,i,n,r){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyCode=r}equals(e){return this.ctrlKey===e.ctrlKey&&this.shiftKey===e.shiftKey&&this.altKey===e.altKey&&this.metaKey===e.metaKey&&this.keyCode===e.keyCode}isModifierKey(){return 0===this.keyCode||5===this.keyCode||57===this.keyCode||6===this.keyCode||4===this.keyCode}toChord(){return new g([this])}isDuplicateModifierCase(){return this.ctrlKey&&5===this.keyCode||this.shiftKey&&4===this.keyCode||this.altKey&&6===this.keyCode||this.metaKey&&57===this.keyCode}}class g{constructor(e){if(0===e.length)throw(0,n.b1)("parts");this.parts=e}}class f{constructor(e,t,i,n,r,s){this.ctrlKey=e,this.shiftKey=t,this.altKey=i,this.metaKey=n,this.keyLabel=r,this.keyAriaLabel=s}}class p{}},68843:(e,t,i)=>{"use strict";i.d(t,{kz:()=>c,pP:()=>d,DT:()=>u});var n=i(70666),r=i(88721),s=i(97295),o=i(66663),a=i(1432),l=i(95935);function c(e,t,i){if("string"==typeof e&&(e=n.o.file(e)),i){const t=i.getWorkspaceFolder(e);if(t){const n=i.getWorkspace().folders.length>1;let r;if(r=(0,l.Xy)(t.uri,e)?"":(0,l.lX)(t.uri,e),n){const e=t.name?t.name:(0,l.EZ)(t.uri);r=r?e+" • "+r:e}return r}}if(e.scheme!==o.l.file&&e.scheme!==o.l.untitled)return e.with({query:null,fragment:null}).toString(!0);if(h(e.fsPath))return(0,r.Fv)(u(e.fsPath));let c=(0,r.Fv)(e.fsPath);return!a.ED&&(null==t?void 0:t.userHome)&&(c=function(e,t){if(a.ED||!e||!t)return e;let i=g.original===t?g.normalized:void 0;return i||(i=`${(0,s.oL)(t,r.KR.sep)}${r.KR.sep}`,g={original:t,normalized:i}),(a.IJ?e.startsWith(i):(0,s.ok)(e,i))&&(e=`~/${e.substr(i.length)}`),e}(c,t.userHome.fsPath)),c}function d(e){if(!e)return;"string"==typeof e&&(e=n.o.file(e));const t=(0,l.EZ)(e)||(e.scheme===o.l.file?e.fsPath:e.path);return h(t)?u(t):t}function h(e){return!(!a.ED||!e||":"!==e[1])}function u(e){return h(e)?e.charAt(0).toUpperCase()+e.slice(1):e}let g=Object.create(null)},5976:(e,t,i)=>{"use strict";i.d(t,{Wf:()=>o,B9:()=>a,F8:()=>l,OF:()=>c,SL:()=>d,JT:()=>h,XK:()=>u,Jz:()=>g});var n=i(53725);function r(e){}class s extends Error{constructor(e){super(`Encounter errors while disposing of store. Errors: [${e.join(", ")}]`),this.errors=e}}function o(e){return"function"==typeof e.dispose&&0===e.dispose.length}function a(e){if(n.$.is(e)){let t=[];for(const i of e)if(i)try{i.dispose()}catch(e){t.push(e)}if(1===t.length)throw t[0];if(t.length>1)throw new s(t);return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}function l(...e){return e.forEach(r),{dispose:()=>a(e)}}function c(e){return{dispose:()=>{e()}}}class d{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}clear(){try{a(this._toDispose.values())}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?d.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}d.DISABLE_DISPOSED_WARNING=!1;class h{constructor(){this._store=new d}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}h.None=Object.freeze({dispose(){}});class u{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(e){this._isDisposed||e===this._value||(this._value&&this._value.dispose(),this._value=e)}clear(){this.value=void 0}dispose(){this._isDisposed=!0,this._value&&this._value.dispose(),this._value=void 0}}class g{constructor(e){this.object=e}dispose(){}}},91741:(e,t,i)=>{"use strict";i.d(t,{S:()=>r});class n{constructor(e){this.element=e,this.next=n.Undefined,this.prev=n.Undefined}}n.Undefined=new n(void 0);class r{constructor(){this._first=n.Undefined,this._last=n.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===n.Undefined}clear(){this._first=n.Undefined,this._last=n.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const i=new n(e);if(this._first===n.Undefined)this._first=i,this._last=i;else if(t){const e=this._last;this._last=i,i.prev=e,e.next=i}else{const e=this._first;this._first=i,i.next=e,e.prev=i}this._size+=1;let r=!1;return()=>{r||(r=!0,this._remove(i))}}shift(){if(this._first!==n.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==n.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==n.Undefined&&e.next!==n.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===n.Undefined&&e.next===n.Undefined?(this._first=n.Undefined,this._last=n.Undefined):e.next===n.Undefined?(this._last=this._last.prev,this._last.next=n.Undefined):e.prev===n.Undefined&&(this._first=this._first.next,this._first.prev=n.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==n.Undefined;)yield e.element,e=e.next}toArray(){const e=[];for(let t=this._first;t!==n.Undefined;t=t.next)e.push(t.element);return e}}},43702:(e,t,i)=>{"use strict";i.d(t,{Id:()=>h,Y9:()=>u,z6:()=>f});var n=i(70666),r=i(97295),s=i(66663),o=i(1432);class a{constructor(){this._value="",this._pos=0}reset(e){return this._value=e,this._pos=0,this}next(){return this._pos+=1,this}hasNext(){return this._pos<this._value.length-1}cmp(e){return e.charCodeAt(0)-this._value.charCodeAt(this._pos)}value(){return this._value[this._pos]}}class l{constructor(e=!0,t=!0){this._splitOnBackslash=e,this._caseSensitive=t}reset(e){return this._value=e.replace(/\\$|\/$/,""),this._from=0,this._to=0,this.next()}hasNext(){return this._to<this._value.length}next(){this._from=this._to;let e=!0;for(;this._to<this._value.length;this._to++){const t=this._value.charCodeAt(this._to);if(47===t||this._splitOnBackslash&&92===t){if(!e)break;this._from++}else e=!1}return this}cmp(e){return this._caseSensitive?(0,r.TT)(e,this._value,0,e.length,this._from,this._to):(0,r.j_)(e,this._value,0,e.length,this._from,this._to)}value(){return this._value.substring(this._from,this._to)}}class c{constructor(){this._states=[],this._stateIdx=0}reset(e){if(this._value=e,this._states=[],this._value.scheme&&this._states.push(1),this._value.authority&&this._states.push(2),this._value.path){const t=e.scheme===s.l.file&&o.IJ;this._pathIterator=new l(!1,t),this._pathIterator.reset(e.path),this._pathIterator.value()&&this._states.push(3)}return this._value.query&&this._states.push(4),this._value.fragment&&this._states.push(5),this._stateIdx=0,this}next(){return 3===this._states[this._stateIdx]&&this._pathIterator.hasNext()?this._pathIterator.next():this._stateIdx+=1,this}hasNext(){return 3===this._states[this._stateIdx]&&this._pathIterator.hasNext()||this._stateIdx<this._states.length-1}cmp(e){if(1===this._states[this._stateIdx])return(0,r.qu)(e,this._value.scheme);if(2===this._states[this._stateIdx])return(0,r.j_)(e,this._value.authority);if(3===this._states[this._stateIdx])return this._pathIterator.cmp(e);if(4===this._states[this._stateIdx])return(0,r.qu)(e,this._value.query);if(5===this._states[this._stateIdx])return(0,r.qu)(e,this._value.fragment);throw new Error}value(){if(1===this._states[this._stateIdx])return this._value.scheme;if(2===this._states[this._stateIdx])return this._value.authority;if(3===this._states[this._stateIdx])return this._pathIterator.value();if(4===this._states[this._stateIdx])return this._value.query;if(5===this._states[this._stateIdx])return this._value.fragment;throw new Error}}class d{}class h{constructor(e){this._iter=e}static forUris(){return new h(new c)}static forStrings(){return new h(new a)}clear(){this._root=void 0}set(e,t){const i=this._iter.reset(e);let n;for(this._root||(this._root=new d,this._root.segment=i.value()),n=this._root;;){const e=i.cmp(n.segment);if(e>0)n.left||(n.left=new d,n.left.segment=i.value()),n=n.left;else if(e<0)n.right||(n.right=new d,n.right.segment=i.value()),n=n.right;else{if(!i.hasNext())break;i.next(),n.mid||(n.mid=new d,n.mid.segment=i.value()),n=n.mid}}const r=n.value;return n.value=t,n.key=e,r}get(e){const t=this._iter.reset(e);let i=this._root;for(;i;){const e=t.cmp(i.segment);if(e>0)i=i.left;else if(e<0)i=i.right;else{if(!t.hasNext())break;t.next(),i=i.mid}}return i?i.value:void 0}findSubstr(e){const t=this._iter.reset(e);let i,n=this._root;for(;n;){const e=t.cmp(n.segment);if(e>0)n=n.left;else if(e<0)n=n.right;else{if(!t.hasNext())break;t.next(),i=n.value||i,n=n.mid}}return n&&n.value||i}forEach(e){this._forEach(this._root,e)}_forEach(e,t){e&&(this._forEach(e.left,t),e.value&&t(e.value,e.key),this._forEach(e.mid,t),this._forEach(e.right,t))}}class u{constructor(e,t){this[Symbol.toStringTag]="ResourceMap",e instanceof u?(this.map=new Map(e.map),this.toKey=null!=t?t:u.defaultToKey):(this.map=new Map,this.toKey=null!=e?e:u.defaultToKey)}set(e,t){return this.map.set(this.toKey(e),t),this}get(e){return this.map.get(this.toKey(e))}has(e){return this.map.has(this.toKey(e))}get size(){return this.map.size}clear(){this.map.clear()}delete(e){return this.map.delete(this.toKey(e))}forEach(e,t){void 0!==t&&(e=e.bind(t));for(let[t,i]of this.map)e(i,n.o.parse(t),this)}values(){return this.map.values()}*keys(){for(let e of this.map.keys())yield n.o.parse(e)}*entries(){for(let e of this.map.entries())yield[n.o.parse(e[0]),e[1]]}*[Symbol.iterator](){for(let e of this.map)yield[n.o.parse(e[0]),e[1]]}}u.defaultToKey=e=>e.toString();class g{constructor(){this[Symbol.toStringTag]="LinkedMap",this._map=new Map,this._head=void 0,this._tail=void 0,this._size=0,this._state=0}clear(){this._map.clear(),this._head=void 0,this._tail=void 0,this._size=0,this._state++}isEmpty(){return!this._head&&!this._tail}get size(){return this._size}get first(){var e;return null===(e=this._head)||void 0===e?void 0:e.value}get last(){var e;return null===(e=this._tail)||void 0===e?void 0:e.value}has(e){return this._map.has(e)}get(e,t=0){const i=this._map.get(e);if(i)return 0!==t&&this.touch(i,t),i.value}set(e,t,i=0){let n=this._map.get(e);if(n)n.value=t,0!==i&&this.touch(n,i);else{switch(n={key:e,value:t,next:void 0,previous:void 0},i){case 0:this.addItemLast(n);break;case 1:this.addItemFirst(n);break;case 2:default:this.addItemLast(n)}this._map.set(e,n),this._size++}return this}delete(e){return!!this.remove(e)}remove(e){const t=this._map.get(e);if(t)return this._map.delete(e),this.removeItem(t),this._size--,t.value}shift(){if(!this._head&&!this._tail)return;if(!this._head||!this._tail)throw new Error("Invalid list");const e=this._head;return this._map.delete(e.key),this.removeItem(e),this._size--,e.value}forEach(e,t){const i=this._state;let n=this._head;for(;n;){if(t?e.bind(t)(n.value,n.key,this):e(n.value,n.key,this),this._state!==i)throw new Error("LinkedMap got modified during iteration.");n=n.next}}keys(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator]:()=>n,next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const e={value:i.key,done:!1};return i=i.next,e}return{value:void 0,done:!0}}};return n}values(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator]:()=>n,next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const e={value:i.value,done:!1};return i=i.next,e}return{value:void 0,done:!0}}};return n}entries(){const e=this,t=this._state;let i=this._head;const n={[Symbol.iterator]:()=>n,next(){if(e._state!==t)throw new Error("LinkedMap got modified during iteration.");if(i){const e={value:[i.key,i.value],done:!1};return i=i.next,e}return{value:void 0,done:!0}}};return n}[Symbol.iterator](){return this.entries()}trimOld(e){if(e>=this.size)return;if(0===e)return void this.clear();let t=this._head,i=this.size;for(;t&&i>e;)this._map.delete(t.key),t=t.next,i--;this._head=t,this._size=i,t&&(t.previous=void 0),this._state++}addItemFirst(e){if(this._head||this._tail){if(!this._head)throw new Error("Invalid list");e.next=this._head,this._head.previous=e}else this._tail=e;this._head=e,this._state++}addItemLast(e){if(this._head||this._tail){if(!this._tail)throw new Error("Invalid list");e.previous=this._tail,this._tail.next=e}else this._head=e;this._tail=e,this._state++}removeItem(e){if(e===this._head&&e===this._tail)this._head=void 0,this._tail=void 0;else if(e===this._head){if(!e.next)throw new Error("Invalid list");e.next.previous=void 0,this._head=e.next}else if(e===this._tail){if(!e.previous)throw new Error("Invalid list");e.previous.next=void 0,this._tail=e.previous}else{const t=e.next,i=e.previous;if(!t||!i)throw new Error("Invalid list");t.previous=i,i.next=t}e.next=void 0,e.previous=void 0,this._state++}touch(e,t){if(!this._head||!this._tail)throw new Error("Invalid list");if(1===t||2===t)if(1===t){if(e===this._head)return;const t=e.next,i=e.previous;e===this._tail?(i.next=void 0,this._tail=i):(t.previous=i,i.next=t),e.previous=void 0,e.next=this._head,this._head.previous=e,this._head=e,this._state++}else if(2===t){if(e===this._tail)return;const t=e.next,i=e.previous;e===this._head?(t.previous=void 0,this._head=t):(t.previous=i,i.next=t),e.next=void 0,e.previous=this._tail,this._tail.next=e,this._tail=e,this._state++}}toJSON(){const e=[];return this.forEach(((t,i)=>{e.push([i,t])})),e}fromJSON(e){this.clear();for(const[t,i]of e)this.set(t,i)}}class f extends g{constructor(e,t=1){super(),this._limit=e,this._ratio=Math.min(Math.max(0,t),1)}get limit(){return this._limit}set limit(e){this._limit=e,this.checkTrim()}get(e,t=2){return super.get(e,t)}peek(e){return super.get(e,0)}set(e,t){return super.set(e,t,2),this.checkTrim(),this}checkTrim(){this.size>this._limit&&this.trimOld(Math.round(this._limit*this._ratio))}}},33720:function(e){e.exports=function(){"use strict";function e(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var i=0,n=new Array(t);i<t;i++)n[i]=e[i];return n}function i(e,i){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,i){if(e){if("string"==typeof e)return t(e,i);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?t(e,i):void 0}}(e))||i&&e&&"number"==typeof e.length){n&&(e=n);var r=0;return function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}var n=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e){function t(){return{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}e.exports={defaults:{baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1},getDefaults:t,changeDefaults:function(t){e.exports.defaults=t}}})),r=(n.defaults,n.getDefaults,n.changeDefaults,/[&<>"']/),s=/[&<>"']/g,o=/[<>"']|&(?!#?\w+;)/,a=/[<>"']|&(?!#?\w+;)/g,l={"&":"&","<":"<",">":">",'"':""","'":"'"},c=function(e){return l[e]};var d=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function h(e){return e.replace(d,(function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""}))}var u=/(^|[^\[])\^/g;var g=/[^\w:]/g,f=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;var p={},m=/^[^:]+:\/*[^/]*$/,_=/^([^:]+:)[\s\S]*$/,b=/^([^:]+:\/*[^/]*)[\s\S]*$/;function v(e,t){p[" "+e]||(m.test(e)?p[" "+e]=e+"/":p[" "+e]=y(e,"/",!0));var i=-1===(e=p[" "+e]).indexOf(":");return"//"===t.substring(0,2)?i?t:e.replace(_,"$1")+t:"/"===t.charAt(0)?i?t:e.replace(b,"$1")+t:e+t}function y(e,t,i){var n=e.length;if(0===n)return"";for(var r=0;r<n;){var s=e.charAt(n-r-1);if(s!==t||i){if(s===t||!i)break;r++}else r++}return e.substr(0,n-r)}var w=function(e,t){if(t){if(r.test(e))return e.replace(s,c)}else if(o.test(e))return e.replace(a,c);return e},C=h,S=function(e,t){e=e.source||e,t=t||"";var i={replace:function(t,n){return n=(n=n.source||n).replace(u,"$1"),e=e.replace(t,n),i},getRegex:function(){return new RegExp(e,t)}};return i},k=function(e,t,i){if(e){var n;try{n=decodeURIComponent(h(i)).replace(g,"").toLowerCase()}catch(e){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}t&&!f.test(i)&&(i=v(t,i));try{i=encodeURI(i).replace(/%25/g,"%")}catch(e){return null}return i},x={exec:function(){}},L=function(e){for(var t,i,n=1;n<arguments.length;n++)for(i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},M=function(e,t){var i=e.replace(/\|/g,(function(e,t,i){for(var n=!1,r=t;--r>=0&&"\\"===i[r];)n=!n;return n?"|":" |"})).split(/ \|/),n=0;if(i.length>t)i.splice(t);else for(;i.length<t;)i.push("");for(;n<i.length;n++)i[n]=i[n].trim().replace(/\\\|/g,"|");return i},D=y,N=function(e,t){if(-1===e.indexOf(t[1]))return-1;for(var i=e.length,n=0,r=0;r<i;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&--n<0)return r;return-1},E=function(e){e&&e.sanitize&&e.silent},T=n.defaults,I=D,O=M,A=w,R=N;function P(e,t,i){var n=t.href,r=t.title?A(t.title):null,s=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?{type:"link",raw:i,href:n,title:r,text:s}:{type:"image",raw:i,href:n,title:r,text:A(s)}}var F=function(){function e(e){this.options=e||T}var t=e.prototype;return t.space=function(e){var t=this.rules.block.newline.exec(e);if(t)return t[0].length>1?{type:"space",raw:t[0]}:{raw:"\n"}},t.code=function(e,t){var i=this.rules.block.code.exec(e);if(i){var n=t[t.length-1];if(n&&"paragraph"===n.type)return{raw:i[0],text:i[0].trimRight()};var r=i[0].replace(/^ {4}/gm,"");return{type:"code",raw:i[0],codeBlockStyle:"indented",text:this.options.pedantic?r:I(r,"\n")}}},t.fences=function(e){var t=this.rules.block.fences.exec(e);if(t){var i=t[0],n=function(e,t){var i=e.match(/^(\s+)(?:```)/);if(null===i)return t;var n=i[1];return t.split("\n").map((function(e){var t=e.match(/^\s+/);return null===t?e:t[0].length>=n.length?e.slice(n.length):e})).join("\n")}(i,t[3]||"");return{type:"code",raw:i,lang:t[2]?t[2].trim():t[2],text:n}}},t.heading=function(e){var t=this.rules.block.heading.exec(e);if(t)return{type:"heading",raw:t[0],depth:t[1].length,text:t[2]}},t.nptable=function(e){var t=this.rules.block.nptable.exec(e);if(t){var i={type:"table",header:O(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[],raw:t[0]};if(i.header.length===i.align.length){var n,r=i.align.length;for(n=0;n<r;n++)/^ *-+: *$/.test(i.align[n])?i.align[n]="right":/^ *:-+: *$/.test(i.align[n])?i.align[n]="center":/^ *:-+ *$/.test(i.align[n])?i.align[n]="left":i.align[n]=null;for(r=i.cells.length,n=0;n<r;n++)i.cells[n]=O(i.cells[n],i.header.length);return i}}},t.hr=function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}},t.blockquote=function(e){var t=this.rules.block.blockquote.exec(e);if(t){var i=t[0].replace(/^ *> ?/gm,"");return{type:"blockquote",raw:t[0],text:i}}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){for(var i,n,r,s,o,a,l,c=t[0],d=t[2],h=d.length>1,u=")"===d[d.length-1],g={type:"list",raw:c,ordered:h,start:h?+d.slice(0,-1):"",loose:!1,items:[]},f=t[0].match(this.rules.block.item),p=!1,m=f.length,_=0;_<m;_++)c=i=f[_],n=i.length,~(i=i.replace(/^ *([*+-]|\d+[.)]) */,"")).indexOf("\n ")&&(n-=i.length,i=this.options.pedantic?i.replace(/^ {1,4}/gm,""):i.replace(new RegExp("^ {1,"+n+"}","gm"),"")),_!==m-1&&(r=this.rules.block.bullet.exec(f[_+1])[0],(h?1===r.length||!u&&")"===r[r.length-1]:r.length>1||this.options.smartLists&&r!==d)&&(s=f.slice(_+1).join("\n"),g.raw=g.raw.substring(0,g.raw.length-s.length),_=m-1)),o=p||/\n\n(?!\s*$)/.test(i),_!==m-1&&(p="\n"===i.charAt(i.length-1),o||(o=p)),o&&(g.loose=!0),l=void 0,(a=/^\[[ xX]\] /.test(i))&&(l=" "!==i[1],i=i.replace(/^\[[ xX]\] +/,"")),g.items.push({type:"list_item",raw:c,task:a,checked:l,loose:o,text:i});return g}},t.html=function(e){var t=this.rules.block.html.exec(e);if(t)return{type:this.options.sanitize?"paragraph":"html",raw:t[0],pre:!this.options.sanitizer&&("pre"===t[1]||"script"===t[1]||"style"===t[1]),text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):A(t[0]):t[0]}},t.def=function(e){var t=this.rules.block.def.exec(e);if(t)return t[3]&&(t[3]=t[3].substring(1,t[3].length-1)),{tag:t[1].toLowerCase().replace(/\s+/g," "),raw:t[0],href:t[2],title:t[3]}},t.table=function(e){var t=this.rules.block.table.exec(e);if(t){var i={type:"table",header:O(t[1].replace(/^ *| *\| *$/g,"")),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:t[3]?t[3].replace(/\n$/,"").split("\n"):[]};if(i.header.length===i.align.length){i.raw=t[0];var n,r=i.align.length;for(n=0;n<r;n++)/^ *-+: *$/.test(i.align[n])?i.align[n]="right":/^ *:-+: *$/.test(i.align[n])?i.align[n]="center":/^ *:-+ *$/.test(i.align[n])?i.align[n]="left":i.align[n]=null;for(r=i.cells.length,n=0;n<r;n++)i.cells[n]=O(i.cells[n].replace(/^ *\| *| *\| *$/g,""),i.header.length);return i}}},t.lheading=function(e){var t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1]}},t.paragraph=function(e){var t=this.rules.block.paragraph.exec(e);if(t)return{type:"paragraph",raw:t[0],text:"\n"===t[1].charAt(t[1].length-1)?t[1].slice(0,-1):t[1]}},t.text=function(e,t){var i=this.rules.block.text.exec(e);if(i){var n=t[t.length-1];return n&&"text"===n.type?{raw:i[0],text:i[0]}:{type:"text",raw:i[0],text:i[0]}}},t.escape=function(e){var t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:A(t[1])}},t.tag=function(e,t,i){var n=this.rules.inline.tag.exec(e);if(n)return!t&&/^<a /i.test(n[0])?t=!0:t&&/^<\/a>/i.test(n[0])&&(t=!1),!i&&/^<(pre|code|kbd|script)(\s|>)/i.test(n[0])?i=!0:i&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(n[0])&&(i=!1),{type:this.options.sanitize?"text":"html",raw:n[0],inLink:t,inRawBlock:i,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(n[0]):A(n[0]):n[0]}},t.link=function(e){var t=this.rules.inline.link.exec(e);if(t){var i=R(t[2],"()");if(i>-1){var n=(0===t[0].indexOf("!")?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,n).trim(),t[3]=""}var r=t[2],s="";if(this.options.pedantic){var o=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(r);o?(r=o[1],s=o[3]):s=""}else s=t[3]?t[3].slice(1,-1):"";return P(t,{href:(r=r.trim().replace(/^<([\s\S]*)>$/,"$1"))?r.replace(this.rules.inline._escapes,"$1"):r,title:s?s.replace(this.rules.inline._escapes,"$1"):s},t[0])}},t.reflink=function(e,t){var i;if((i=this.rules.inline.reflink.exec(e))||(i=this.rules.inline.nolink.exec(e))){var n=(i[2]||i[1]).replace(/\s+/g," ");if(!(n=t[n.toLowerCase()])||!n.href){var r=i[0].charAt(0);return{type:"text",raw:r,text:r}}return P(i,n,i[0])}},t.strong=function(e,t,i){void 0===i&&(i="");var n=this.rules.inline.strong.start.exec(e);if(n&&(!n[1]||n[1]&&(""===i||this.rules.inline.punctuation.exec(i)))){t=t.slice(-1*e.length);var r,s="**"===n[0]?this.rules.inline.strong.endAst:this.rules.inline.strong.endUnd;for(s.lastIndex=0;null!=(n=s.exec(t));)if(r=this.rules.inline.strong.middle.exec(t.slice(0,n.index+3)))return{type:"strong",raw:e.slice(0,r[0].length),text:e.slice(2,r[0].length-2)}}},t.em=function(e,t,i){void 0===i&&(i="");var n=this.rules.inline.em.start.exec(e);if(n&&(!n[1]||n[1]&&(""===i||this.rules.inline.punctuation.exec(i)))){t=t.slice(-1*e.length);var r,s="*"===n[0]?this.rules.inline.em.endAst:this.rules.inline.em.endUnd;for(s.lastIndex=0;null!=(n=s.exec(t));)if(r=this.rules.inline.em.middle.exec(t.slice(0,n.index+2)))return{type:"em",raw:e.slice(0,r[0].length),text:e.slice(1,r[0].length-1)}}},t.codespan=function(e){var t=this.rules.inline.code.exec(e);if(t){var i=t[2].replace(/\n/g," "),n=/[^ ]/.test(i),r=i.startsWith(" ")&&i.endsWith(" ");return n&&r&&(i=i.substring(1,i.length-1)),i=A(i,!0),{type:"codespan",raw:t[0],text:i}}},t.br=function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}},t.del=function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[1]}},t.autolink=function(e,t){var i,n,r=this.rules.inline.autolink.exec(e);if(r)return n="@"===r[2]?"mailto:"+(i=A(this.options.mangle?t(r[1]):r[1])):i=A(r[1]),{type:"link",raw:r[0],text:i,href:n,tokens:[{type:"text",raw:i,text:i}]}},t.url=function(e,t){var i;if(i=this.rules.inline.url.exec(e)){var n,r;if("@"===i[2])r="mailto:"+(n=A(this.options.mangle?t(i[0]):i[0]));else{var s;do{s=i[0],i[0]=this.rules.inline._backpedal.exec(i[0])[0]}while(s!==i[0]);n=A(i[0]),r="www."===i[1]?"http://"+n:n}return{type:"link",raw:i[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},t.inlineText=function(e,t,i){var n,r=this.rules.inline.text.exec(e);if(r)return n=t?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):A(r[0]):r[0]:A(this.options.smartypants?i(r[0]):r[0]),{type:"text",raw:r[0],text:n}},e}(),B=x,W=S,Y=L,H={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,hr:/^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6}) +([^\n]*?)(?: +#+)? *(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:"^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$))",def:/^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,nptable:B,table:B,lheading:/^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\[\[\]]|[^\[\]])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/};H.def=W(H.def).replace("label",H._label).replace("title",H._title).getRegex(),H.bullet=/(?:[*+-]|\d{1,9}[.)])/,H.item=/^( *)(bull) ?[^\n]*(?:\n(?!\1bull ?)[^\n]*)*/,H.item=W(H.item,"gm").replace(/bull/g,H.bullet).getRegex(),H.list=W(H.list).replace(/bull/g,H.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+H.def.source+")").getRegex(),H._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",H._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,H.html=W(H.html,"i").replace("comment",H._comment).replace("tag",H._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),H.paragraph=W(H._paragraph).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.blockquote=W(H.blockquote).replace("paragraph",H.paragraph).getRegex(),H.normal=Y({},H),H.gfm=Y({},H.normal,{nptable:"^ *([^|\\n ].*\\|.*)\\n *([-:]+ *\\|[-| :]*)(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)",table:"^ *\\|(.+)\\n *\\|?( *[-:]+[-| :]*)(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),H.gfm.nptable=W(H.gfm.nptable).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.gfm.table=W(H.gfm.table).replace("hr",H.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)").replace("tag",H._tag).getRegex(),H.pedantic=Y({},H.normal,{html:W("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",H._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,fences:B,paragraph:W(H.normal._paragraph).replace("hr",H.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",H.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()});var j={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:B,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,nolink:/^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",strong:{start:/^(?:(\*\*(?=[*punctuation]))|\*\*)(?![\s])|__/,middle:/^\*\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*\*$|^__(?![\s])((?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?)__$/,endAst:/[^punctuation\s]\*\*(?!\*)|[punctuation]\*\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]__(?!_)(?:(?=[punctuation\s])|$)/},em:{start:/^(?:(\*(?=[punctuation]))|\*)(?![*\s])|_/,middle:/^\*(?:(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)|\*(?:(?!overlapSkip)(?:[^*]|\\\*)|overlapSkip)*?\*)+?\*$|^_(?![_\s])(?:(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\_)|overlapSkip)*?_)+?_$/,endAst:/[^punctuation\s]\*(?!\*)|[punctuation]\*(?!\*)(?:(?=[punctuation\s]|$))/,endUnd:/[^\s]_(?!_)(?:(?=[punctuation\s])|$)/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:B,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*]|\b_|$)|[^ ](?= {2,}\n))|(?= {2,}\n))/,punctuation:/^([\s*punctuation])/,_punctuation:"!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~"};j.punctuation=W(j.punctuation).replace(/punctuation/g,j._punctuation).getRegex(),j._blockSkip="\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>",j._overlapSkip="__[^_]*?__|\\*\\*\\[^\\*\\]*?\\*\\*",j._comment=W(H._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),j.em.start=W(j.em.start).replace(/punctuation/g,j._punctuation).getRegex(),j.em.middle=W(j.em.middle).replace(/punctuation/g,j._punctuation).replace(/overlapSkip/g,j._overlapSkip).getRegex(),j.em.endAst=W(j.em.endAst,"g").replace(/punctuation/g,j._punctuation).getRegex(),j.em.endUnd=W(j.em.endUnd,"g").replace(/punctuation/g,j._punctuation).getRegex(),j.strong.start=W(j.strong.start).replace(/punctuation/g,j._punctuation).getRegex(),j.strong.middle=W(j.strong.middle).replace(/punctuation/g,j._punctuation).replace(/blockSkip/g,j._blockSkip).getRegex(),j.strong.endAst=W(j.strong.endAst,"g").replace(/punctuation/g,j._punctuation).getRegex(),j.strong.endUnd=W(j.strong.endUnd,"g").replace(/punctuation/g,j._punctuation).getRegex(),j.blockSkip=W(j._blockSkip,"g").getRegex(),j.overlapSkip=W(j._overlapSkip,"g").getRegex(),j._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,j._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,j._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,j.autolink=W(j.autolink).replace("scheme",j._scheme).replace("email",j._email).getRegex(),j._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,j.tag=W(j.tag).replace("comment",j._comment).replace("attribute",j._attribute).getRegex(),j._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,j._href=/<(?:\\[<>]?|[^\s<>\\])*>|[^\s\x00-\x1f]*/,j._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,j.link=W(j.link).replace("label",j._label).replace("href",j._href).replace("title",j._title).getRegex(),j.reflink=W(j.reflink).replace("label",j._label).getRegex(),j.reflinkSearch=W(j.reflinkSearch,"g").replace("reflink",j.reflink).replace("nolink",j.nolink).getRegex(),j.normal=Y({},j),j.pedantic=Y({},j.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:W(/^!?\[(label)\]\((.*?)\)/).replace("label",j._label).getRegex(),reflink:W(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",j._label).getRegex()}),j.gfm=Y({},j.normal,{escape:W(j.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,del:/^~+(?=\S)([\s\S]*?\S)~+/,text:/^(`+|[^`])(?:[\s\S]*?(?:(?=[\\<!\[`*~]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?= {2,}\n|[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/}),j.gfm.url=W(j.gfm.url,"i").replace("email",j.gfm._extended_email).getRegex(),j.breaks=Y({},j.gfm,{br:W(j.br).replace("{2,}","*").getRegex(),text:W(j.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var V={block:H,inline:j},z=n.defaults,U=V.block,$=V.inline;function K(e){return e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function q(e){var t,i,n="",r=e.length;for(t=0;t<r;t++)i=e.charCodeAt(t),Math.random()>.5&&(i="x"+i.toString(16)),n+="&#"+i+";";return n}var G=function(){function t(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||z,this.options.tokenizer=this.options.tokenizer||new F,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options;var t={block:U.normal,inline:$.normal};this.options.pedantic?(t.block=U.pedantic,t.inline=$.pedantic):this.options.gfm&&(t.block=U.gfm,this.options.breaks?t.inline=$.breaks:t.inline=$.gfm),this.tokenizer.rules=t}t.lex=function(e,i){return new t(i).lex(e)};var i,n,r,s=t.prototype;return s.lex=function(e){return e=e.replace(/\r\n|\r/g,"\n").replace(/\t/g," "),this.blockTokens(e,this.tokens,!0),this.inline(this.tokens),this.tokens},s.blockTokens=function(e,t,i){var n,r,s,o;for(void 0===t&&(t=[]),void 0===i&&(i=!0),e=e.replace(/^ +$/gm,"");e;)if(n=this.tokenizer.space(e))e=e.substring(n.raw.length),n.type&&t.push(n);else if(n=this.tokenizer.code(e,t))e=e.substring(n.raw.length),n.type?t.push(n):((o=t[t.length-1]).raw+="\n"+n.raw,o.text+="\n"+n.text);else if(n=this.tokenizer.fences(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.heading(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.nptable(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.hr(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.blockquote(e))e=e.substring(n.raw.length),n.tokens=this.blockTokens(n.text,[],i),t.push(n);else if(n=this.tokenizer.list(e)){for(e=e.substring(n.raw.length),s=n.items.length,r=0;r<s;r++)n.items[r].tokens=this.blockTokens(n.items[r].text,[],!1);t.push(n)}else if(n=this.tokenizer.html(e))e=e.substring(n.raw.length),t.push(n);else if(i&&(n=this.tokenizer.def(e)))e=e.substring(n.raw.length),this.tokens.links[n.tag]||(this.tokens.links[n.tag]={href:n.href,title:n.title});else if(n=this.tokenizer.table(e))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.lheading(e))e=e.substring(n.raw.length),t.push(n);else if(i&&(n=this.tokenizer.paragraph(e)))e=e.substring(n.raw.length),t.push(n);else if(n=this.tokenizer.text(e,t))e=e.substring(n.raw.length),n.type?t.push(n):((o=t[t.length-1]).raw+="\n"+n.raw,o.text+="\n"+n.text);else if(e){var a="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(a);break}throw new Error(a)}return t},s.inline=function(e){var t,i,n,r,s,o,a=e.length;for(t=0;t<a;t++)switch((o=e[t]).type){case"paragraph":case"text":case"heading":o.tokens=[],this.inlineTokens(o.text,o.tokens);break;case"table":for(o.tokens={header:[],cells:[]},r=o.header.length,i=0;i<r;i++)o.tokens.header[i]=[],this.inlineTokens(o.header[i],o.tokens.header[i]);for(r=o.cells.length,i=0;i<r;i++)for(s=o.cells[i],o.tokens.cells[i]=[],n=0;n<s.length;n++)o.tokens.cells[i][n]=[],this.inlineTokens(s[n],o.tokens.cells[i][n]);break;case"blockquote":this.inline(o.tokens);break;case"list":for(r=o.items.length,i=0;i<r;i++)this.inline(o.items[i].tokens)}return e},s.inlineTokens=function(e,t,i,n,r){var s;void 0===t&&(t=[]),void 0===i&&(i=!1),void 0===n&&(n=!1),void 0===r&&(r="");var o,a=e;if(this.tokens.links){var l=Object.keys(this.tokens.links);if(l.length>0)for(;null!=(o=this.tokenizer.rules.inline.reflinkSearch.exec(a));)l.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(o=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;e;)if(s=this.tokenizer.escape(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.tag(e,i,n))e=e.substring(s.raw.length),i=s.inLink,n=s.inRawBlock,t.push(s);else if(s=this.tokenizer.link(e))e=e.substring(s.raw.length),"link"===s.type&&(s.tokens=this.inlineTokens(s.text,[],!0,n)),t.push(s);else if(s=this.tokenizer.reflink(e,this.tokens.links))e=e.substring(s.raw.length),"link"===s.type&&(s.tokens=this.inlineTokens(s.text,[],!0,n)),t.push(s);else if(s=this.tokenizer.strong(e,a,r))e=e.substring(s.raw.length),s.tokens=this.inlineTokens(s.text,[],i,n),t.push(s);else if(s=this.tokenizer.em(e,a,r))e=e.substring(s.raw.length),s.tokens=this.inlineTokens(s.text,[],i,n),t.push(s);else if(s=this.tokenizer.codespan(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.br(e))e=e.substring(s.raw.length),t.push(s);else if(s=this.tokenizer.del(e))e=e.substring(s.raw.length),s.tokens=this.inlineTokens(s.text,[],i,n),t.push(s);else if(s=this.tokenizer.autolink(e,q))e=e.substring(s.raw.length),t.push(s);else if(i||!(s=this.tokenizer.url(e,q))){if(s=this.tokenizer.inlineText(e,n,K))e=e.substring(s.raw.length),r=s.raw.slice(-1),t.push(s);else if(e){var c="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}}else e=e.substring(s.raw.length),t.push(s);return t},i=t,r=[{key:"rules",get:function(){return{block:U,inline:$}}}],(n=null)&&e(i.prototype,n),r&&e(i,r),t}(),Z=n.defaults,J=k,Q=w,X=function(){function e(e){this.options=e||Z}var t=e.prototype;return t.code=function(e,t,i){var n=(t||"").match(/\S*/)[0];if(this.options.highlight){var r=this.options.highlight(e,n);null!=r&&r!==e&&(i=!0,e=r)}return n?'<pre><code class="'+this.options.langPrefix+Q(n,!0)+'">'+(i?e:Q(e,!0))+"</code></pre>\n":"<pre><code>"+(i?e:Q(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,i,n){return this.options.headerIds?"<h"+t+' id="'+this.options.headerPrefix+n.slug(i)+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,i){var n=t?"ol":"ul";return"<"+n+(t&&1!==i?' start="'+i+'"':"")+">\n"+e+"</"+n+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return t&&(t="<tbody>"+t+"</tbody>"),"<table>\n<thead>\n"+e+"</thead>\n"+t+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var i=t.header?"th":"td";return(t.align?"<"+i+' align="'+t.align+'">':"<"+i+">")+e+"</"+i+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,i){if(null===(e=J(this.options.sanitize,this.options.baseUrl,e)))return i;var n='<a href="'+Q(e)+'"';return t&&(n+=' title="'+t+'"'),n+">"+i+"</a>"},t.image=function(e,t,i){if(null===(e=J(this.options.sanitize,this.options.baseUrl,e)))return i;var n='<img src="'+e+'" alt="'+i+'"';return t&&(n+=' title="'+t+'"'),n+(this.options.xhtml?"/>":">")},t.text=function(e){return e},e}(),ee=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,i){return""+i},t.image=function(e,t,i){return""+i},t.br=function(){return""},e}(),te=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var i=e,n=0;if(this.seen.hasOwnProperty(i)){n=this.seen[e];do{i=e+"-"+ ++n}while(this.seen.hasOwnProperty(i))}return t||(this.seen[e]=n,this.seen[i]=0),i},t.slug=function(e,t){void 0===t&&(t={});var i=this.serialize(e);return this.getNextSafeSlug(i,t.dryrun)},e}(),ie=n.defaults,ne=C,re=function(){function e(e){this.options=e||ie,this.options.renderer=this.options.renderer||new X,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new ee,this.slugger=new te}e.parse=function(t,i){return new e(i).parse(t)};var t=e.prototype;return t.parse=function(e,t){void 0===t&&(t=!0);var i,n,r,s,o,a,l,c,d,h,u,g,f,p,m,_,b,v,y="",w=e.length;for(i=0;i<w;i++)switch((h=e[i]).type){case"space":continue;case"hr":y+=this.renderer.hr();continue;case"heading":y+=this.renderer.heading(this.parseInline(h.tokens),h.depth,ne(this.parseInline(h.tokens,this.textRenderer)),this.slugger);continue;case"code":y+=this.renderer.code(h.text,h.lang,h.escaped);continue;case"table":for(c="",l="",s=h.header.length,n=0;n<s;n++)l+=this.renderer.tablecell(this.parseInline(h.tokens.header[n]),{header:!0,align:h.align[n]});for(c+=this.renderer.tablerow(l),d="",s=h.cells.length,n=0;n<s;n++){for(l="",o=(a=h.tokens.cells[n]).length,r=0;r<o;r++)l+=this.renderer.tablecell(this.parseInline(a[r]),{header:!1,align:h.align[r]});d+=this.renderer.tablerow(l)}y+=this.renderer.table(c,d);continue;case"blockquote":d=this.parse(h.tokens),y+=this.renderer.blockquote(d);continue;case"list":for(u=h.ordered,g=h.start,f=h.loose,s=h.items.length,d="",n=0;n<s;n++)_=(m=h.items[n]).checked,b=m.task,p="",m.task&&(v=this.renderer.checkbox(_),f?m.tokens.length>0&&"text"===m.tokens[0].type?(m.tokens[0].text=v+" "+m.tokens[0].text,m.tokens[0].tokens&&m.tokens[0].tokens.length>0&&"text"===m.tokens[0].tokens[0].type&&(m.tokens[0].tokens[0].text=v+" "+m.tokens[0].tokens[0].text)):m.tokens.unshift({type:"text",text:v}):p+=v),p+=this.parse(m.tokens,f),d+=this.renderer.listitem(p,b,_);y+=this.renderer.list(d,u,g);continue;case"html":y+=this.renderer.html(h.text);continue;case"paragraph":y+=this.renderer.paragraph(this.parseInline(h.tokens));continue;case"text":for(d=h.tokens?this.parseInline(h.tokens):h.text;i+1<w&&"text"===e[i+1].type;)d+="\n"+((h=e[++i]).tokens?this.parseInline(h.tokens):h.text);y+=t?this.renderer.paragraph(d):d;continue;default:var C='Token with "'+h.type+'" type was not found.';if(this.options.silent)return void console.error(C);throw new Error(C)}return y},t.parseInline=function(e,t){t=t||this.renderer;var i,n,r="",s=e.length;for(i=0;i<s;i++)switch((n=e[i]).type){case"escape":r+=t.text(n.text);break;case"html":r+=t.html(n.text);break;case"link":r+=t.link(n.href,n.title,this.parseInline(n.tokens,t));break;case"image":r+=t.image(n.href,n.title,n.text);break;case"strong":r+=t.strong(this.parseInline(n.tokens,t));break;case"em":r+=t.em(this.parseInline(n.tokens,t));break;case"codespan":r+=t.codespan(n.text);break;case"br":r+=t.br();break;case"del":r+=t.del(this.parseInline(n.tokens,t));break;case"text":r+=t.text(n.text);break;default:var o='Token with "'+n.type+'" type was not found.';if(this.options.silent)return void console.error(o);throw new Error(o)}return r},e}(),se=L,oe=E,ae=w,le=n.getDefaults,ce=n.changeDefaults,de=n.defaults;function he(e,t,i){if(null==e)throw new Error("marked(): input parameter is undefined or null");if("string"!=typeof e)throw new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected");if("function"==typeof t&&(i=t,t=null),t=se({},he.defaults,t||{}),oe(t),i){var n,r=t.highlight;try{n=G.lex(e,t)}catch(e){return i(e)}var s=function(e){var s;if(!e)try{s=re.parse(n,t)}catch(t){e=t}return t.highlight=r,e?i(e):i(null,s)};if(!r||r.length<3)return s();if(delete t.highlight,!n.length)return s();var o=0;return he.walkTokens(n,(function(e){"code"===e.type&&(o++,setTimeout((function(){r(e.text,e.lang,(function(t,i){if(t)return s(t);null!=i&&i!==e.text&&(e.text=i,e.escaped=!0),0==--o&&s()}))}),0))})),void(0===o&&s())}try{var a=G.lex(e,t);return t.walkTokens&&he.walkTokens(a,t.walkTokens),re.parse(a,t)}catch(e){if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",t.silent)return"<p>An error occurred:</p><pre>"+ae(e.message+"",!0)+"</pre>";throw e}}return he.options=he.setOptions=function(e){return se(he.defaults,e),ce(he.defaults),he},he.getDefaults=le,he.defaults=de,he.use=function(e){var t=se({},e);if(e.renderer&&function(){var i=he.defaults.renderer||new X,n=function(t){var n=i[t];i[t]=function(){for(var r=arguments.length,s=new Array(r),o=0;o<r;o++)s[o]=arguments[o];var a=e.renderer[t].apply(i,s);return!1===a&&(a=n.apply(i,s)),a}};for(var r in e.renderer)n(r);t.renderer=i}(),e.tokenizer&&function(){var i=he.defaults.tokenizer||new F,n=function(t){var n=i[t];i[t]=function(){for(var r=arguments.length,s=new Array(r),o=0;o<r;o++)s[o]=arguments[o];var a=e.tokenizer[t].apply(i,s);return!1===a&&(a=n.apply(i,s)),a}};for(var r in e.tokenizer)n(r);t.tokenizer=i}(),e.walkTokens){var i=he.defaults.walkTokens;t.walkTokens=function(t){e.walkTokens(t),i&&i(t)}}he.setOptions(t)},he.walkTokens=function(e,t){for(var n,r=i(e);!(n=r()).done;){var s=n.value;switch(t(s),s.type){case"table":for(var o,a=i(s.tokens.header);!(o=a()).done;){var l=o.value;he.walkTokens(l,t)}for(var c,d=i(s.tokens.cells);!(c=d()).done;)for(var h,u=i(c.value);!(h=u()).done;){var g=h.value;he.walkTokens(g,t)}break;case"list":he.walkTokens(s.items,t);break;default:s.tokens&&he.walkTokens(s.tokens,t)}}},he.Parser=re,he.parser=re.parse,he.Renderer=X,he.TextRenderer=ee,he.Lexer=G,he.lexer=G.lex,he.Tokenizer=F,he.Slugger=te,he.parse=he,he}()},23897:(e,t,i)=>{"use strict";i.d(t,{Q:()=>s});var n=i(53060),r=i(70666);function s(e){let t=JSON.parse(e);return t=o(t),t}function o(e,t=0){if(!e||t>200)return e;if("object"==typeof e){switch(e.$mid){case 1:return r.o.revive(e);case 2:return new RegExp(e.source,e.flags)}if(e instanceof n.KN||e instanceof Uint8Array)return e;if(Array.isArray(e))for(let i=0;i<e.length;++i)e[i]=o(e[i],t+1);else for(const i in e)Object.hasOwnProperty.call(e,i)&&(e[i]=o(e[i],t+1))}return e}},66663:(e,t,i)=>{"use strict";i.d(t,{l:()=>n,W:()=>o});var n,r=i(70666),s=i(1432);!function(e){e.inMemory="inmemory",e.vscode="vscode",e.internal="private",e.walkThrough="walkThrough",e.walkThroughSnippet="walkThroughSnippet",e.http="http",e.https="https",e.file="file",e.mailto="mailto",e.untitled="untitled",e.data="data",e.command="command",e.vscodeRemote="vscode-remote",e.vscodeRemoteResource="vscode-remote-resource",e.userData="vscode-userdata",e.vscodeCustomEditor="vscode-custom-editor",e.vscodeNotebook="vscode-notebook",e.vscodeNotebookCell="vscode-notebook-cell",e.vscodeSettings="vscode-settings",e.webviewPanel="webview-panel",e.vscodeWebview="vscode-webview",e.vscodeWebviewResource="vscode-webview-resource",e.extension="extension"}(n||(n={}));const o=new class{constructor(){this._hosts=Object.create(null),this._ports=Object.create(null),this._connectionTokens=Object.create(null),this._preferredWebSchema="http",this._delegate=null}setPreferredWebSchema(e){this._preferredWebSchema=e}rewrite(e){if(this._delegate)return this._delegate(e);const t=e.authority;let i=this._hosts[t];i&&-1!==i.indexOf(":")&&(i=`[${i}]`);const o=this._ports[t],a=this._connectionTokens[t];let l=`path=${encodeURIComponent(e.path)}`;return"string"==typeof a&&(l+=`&tkn=${encodeURIComponent(a)}`),r.o.from({scheme:s.$L?this._preferredWebSchema:n.vscodeRemoteResource,authority:`${i}:${o}`,path:"/vscode-remote-resource",query:l})}}},59870:(e,t,i)=>{"use strict";function n(e,t,i){return Math.min(Math.max(e,t),i)}i.d(t,{u:()=>n,n:()=>r});class r{constructor(){this._n=1,this._val=0}update(e){return this._val=this._val+(e-this._val)/this._n,this._n+=1,this}}},36248:(e,t,i)=>{"use strict";i.d(t,{I8:()=>r,_A:()=>s,rs:()=>a,jB:()=>c,f0:()=>d,fS:()=>h,CJ:()=>u});var n=i(98401);function r(e){if(!e||"object"!=typeof e)return e;if(e instanceof RegExp)return e;const t=Array.isArray(e)?[]:{};return Object.keys(e).forEach((i=>{e[i]&&"object"==typeof e[i]?t[i]=r(e[i]):t[i]=e[i]})),t}function s(e){if(!e||"object"!=typeof e)return e;const t=[e];for(;t.length>0;){const e=t.shift();Object.freeze(e);for(const i in e)if(o.call(e,i)){const n=e[i];"object"!=typeof n||Object.isFrozen(n)||t.push(n)}}return e}const o=Object.prototype.hasOwnProperty;function a(e,t){return l(e,t,new Set)}function l(e,t,i){if((0,n.Jp)(e))return e;const r=t(e);if(void 0!==r)return r;if((0,n.kJ)(e)){const n=[];for(const r of e)n.push(l(r,t,i));return n}if((0,n.Kn)(e)){if(i.has(e))throw new Error("Cannot clone recursive data-structure");i.add(e);const n={};for(let r in e)o.call(e,r)&&(n[r]=l(e[r],t,i));return i.delete(e),n}return e}function c(e,t,i=!0){return(0,n.Kn)(e)?((0,n.Kn)(t)&&Object.keys(t).forEach((r=>{r in e?i&&((0,n.Kn)(e[r])&&(0,n.Kn)(t[r])?c(e[r],t[r],i):e[r]=t[r]):e[r]=t[r]})),e):t}function d(e,...t){return t.forEach((t=>Object.keys(t).forEach((i=>e[i]=t[i])))),e}function h(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;let i,n;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(i=0;i<e.length;i++)if(!h(e[i],t[i]))return!1}else{const r=[];for(n in e)r.push(n);r.sort();const s=[];for(n in t)s.push(n);if(s.sort(),!h(r,s))return!1;for(i=0;i<r.length;i++)if(!h(e[r[i]],t[r[i]]))return!1}return!0}function u(e,t,i){const n=t(e);return void 0===n?i:n}},88721:(e,t,i)=>{"use strict";i.d(t,{EZ:()=>x,XX:()=>k,DZ:()=>L,Fv:()=>w,KR:()=>y,Gf:()=>S,DB:()=>C,ir:()=>M,Ku:()=>v});var n=i(1432);const r="undefined"==typeof process?{cwd:()=>"/",env:Object.create(null),get platform(){return n.ED?"win32":n.dz?"darwin":"linux"},nextTick:e=>(0,n.xS)(e)}:process,s=r.cwd,o=r.env,a=r.platform,l=46,c=47,d=92,h=58;class u extends Error{constructor(e,t,i){let n;"string"==typeof t&&0===t.indexOf("not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";const r=-1!==e.indexOf(".")?"property":"argument";let s=`The "${e}" ${r} ${n} of type ${t}`;s+=". Received type "+typeof i,super(s),this.code="ERR_INVALID_ARG_TYPE"}}function g(e,t){if("string"!=typeof e)throw new u(t,"string",e)}function f(e){return e===c||e===d}function p(e){return e===c}function m(e){return e>=65&&e<=90||e>=97&&e<=122}function _(e,t,i,n){let r="",s=0,o=-1,a=0,d=0;for(let h=0;h<=e.length;++h){if(h<e.length)d=e.charCodeAt(h);else{if(n(d))break;d=c}if(n(d)){if(o===h-1||1===a);else if(2===a){if(r.length<2||2!==s||r.charCodeAt(r.length-1)!==l||r.charCodeAt(r.length-2)!==l){if(r.length>2){const e=r.lastIndexOf(i);-1===e?(r="",s=0):(r=r.slice(0,e),s=r.length-1-r.lastIndexOf(i)),o=h,a=0;continue}if(0!==r.length){r="",s=0,o=h,a=0;continue}}t&&(r+=r.length>0?`${i}..`:"..",s=2)}else r.length>0?r+=`${i}${e.slice(o+1,h)}`:r=e.slice(o+1,h),s=h-o-1;o=h,a=0}else d===l&&-1!==a?++a:a=-1}return r}function b(e,t){if(null===t||"object"!=typeof t)throw new u("pathObject","Object",t);const i=t.dir||t.root,n=t.base||`${t.name||""}${t.ext||""}`;return i?i===t.root?`${i}${n}`:`${i}${e}${n}`:n}const v={resolve(...e){let t="",i="",n=!1;for(let r=e.length-1;r>=-1;r--){let a;if(r>=0){if(a=e[r],g(a,"path"),0===a.length)continue}else 0===t.length?a=s():(a=o[`=${t}`]||s(),(void 0===a||a.slice(0,2).toLowerCase()!==t.toLowerCase()&&a.charCodeAt(2)===d)&&(a=`${t}\\`));const l=a.length;let c=0,u="",p=!1;const _=a.charCodeAt(0);if(1===l)f(_)&&(c=1,p=!0);else if(f(_))if(p=!0,f(a.charCodeAt(1))){let e=2,t=e;for(;e<l&&!f(a.charCodeAt(e));)e++;if(e<l&&e!==t){const i=a.slice(t,e);for(t=e;e<l&&f(a.charCodeAt(e));)e++;if(e<l&&e!==t){for(t=e;e<l&&!f(a.charCodeAt(e));)e++;e!==l&&e===t||(u=`\\\\${i}\\${a.slice(t,e)}`,c=e)}}}else c=1;else m(_)&&a.charCodeAt(1)===h&&(u=a.slice(0,2),c=2,l>2&&f(a.charCodeAt(2))&&(p=!0,c=3));if(u.length>0)if(t.length>0){if(u.toLowerCase()!==t.toLowerCase())continue}else t=u;if(n){if(t.length>0)break}else if(i=`${a.slice(c)}\\${i}`,n=p,p&&t.length>0)break}return i=_(i,!n,"\\",f),n?`${t}\\${i}`:`${t}${i}`||"."},normalize(e){g(e,"path");const t=e.length;if(0===t)return".";let i,n=0,r=!1;const s=e.charCodeAt(0);if(1===t)return p(s)?"\\":e;if(f(s))if(r=!0,f(e.charCodeAt(1))){let r=2,s=r;for(;r<t&&!f(e.charCodeAt(r));)r++;if(r<t&&r!==s){const o=e.slice(s,r);for(s=r;r<t&&f(e.charCodeAt(r));)r++;if(r<t&&r!==s){for(s=r;r<t&&!f(e.charCodeAt(r));)r++;if(r===t)return`\\\\${o}\\${e.slice(s)}\\`;r!==s&&(i=`\\\\${o}\\${e.slice(s,r)}`,n=r)}}}else n=1;else m(s)&&e.charCodeAt(1)===h&&(i=e.slice(0,2),n=2,t>2&&f(e.charCodeAt(2))&&(r=!0,n=3));let o=n<t?_(e.slice(n),!r,"\\",f):"";return 0!==o.length||r||(o="."),o.length>0&&f(e.charCodeAt(t-1))&&(o+="\\"),void 0===i?r?`\\${o}`:o:r?`${i}\\${o}`:`${i}${o}`},isAbsolute(e){g(e,"path");const t=e.length;if(0===t)return!1;const i=e.charCodeAt(0);return f(i)||t>2&&m(i)&&e.charCodeAt(1)===h&&f(e.charCodeAt(2))},join(...e){if(0===e.length)return".";let t,i;for(let n=0;n<e.length;++n){const r=e[n];g(r,"path"),r.length>0&&(void 0===t?t=i=r:t+=`\\${r}`)}if(void 0===t)return".";let n=!0,r=0;if("string"==typeof i&&f(i.charCodeAt(0))){++r;const e=i.length;e>1&&f(i.charCodeAt(1))&&(++r,e>2&&(f(i.charCodeAt(2))?++r:n=!1))}if(n){for(;r<t.length&&f(t.charCodeAt(r));)r++;r>=2&&(t=`\\${t.slice(r)}`)}return v.normalize(t)},relative(e,t){if(g(e,"from"),g(t,"to"),e===t)return"";const i=v.resolve(e),n=v.resolve(t);if(i===n)return"";if((e=i.toLowerCase())===(t=n.toLowerCase()))return"";let r=0;for(;r<e.length&&e.charCodeAt(r)===d;)r++;let s=e.length;for(;s-1>r&&e.charCodeAt(s-1)===d;)s--;const o=s-r;let a=0;for(;a<t.length&&t.charCodeAt(a)===d;)a++;let l=t.length;for(;l-1>a&&t.charCodeAt(l-1)===d;)l--;const c=l-a,h=o<c?o:c;let u=-1,f=0;for(;f<h;f++){const i=e.charCodeAt(r+f);if(i!==t.charCodeAt(a+f))break;i===d&&(u=f)}if(f!==h){if(-1===u)return n}else{if(c>h){if(t.charCodeAt(a+f)===d)return n.slice(a+f+1);if(2===f)return n.slice(a+f)}o>h&&(e.charCodeAt(r+f)===d?u=f:2===f&&(u=3)),-1===u&&(u=0)}let p="";for(f=r+u+1;f<=s;++f)f!==s&&e.charCodeAt(f)!==d||(p+=0===p.length?"..":"\\..");return a+=u,p.length>0?`${p}${n.slice(a,l)}`:(n.charCodeAt(a)===d&&++a,n.slice(a,l))},toNamespacedPath(e){if("string"!=typeof e)return e;if(0===e.length)return"";const t=v.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===d){if(t.charCodeAt(1)===d){const e=t.charCodeAt(2);if(63!==e&&e!==l)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(m(t.charCodeAt(0))&&t.charCodeAt(1)===h&&t.charCodeAt(2)===d)return`\\\\?\\${t}`;return e},dirname(e){g(e,"path");const t=e.length;if(0===t)return".";let i=-1,n=0;const r=e.charCodeAt(0);if(1===t)return f(r)?e:".";if(f(r)){if(i=n=1,f(e.charCodeAt(1))){let r=2,s=r;for(;r<t&&!f(e.charCodeAt(r));)r++;if(r<t&&r!==s){for(s=r;r<t&&f(e.charCodeAt(r));)r++;if(r<t&&r!==s){for(s=r;r<t&&!f(e.charCodeAt(r));)r++;if(r===t)return e;r!==s&&(i=n=r+1)}}}}else m(r)&&e.charCodeAt(1)===h&&(i=t>2&&f(e.charCodeAt(2))?3:2,n=i);let s=-1,o=!0;for(let i=t-1;i>=n;--i)if(f(e.charCodeAt(i))){if(!o){s=i;break}}else o=!1;if(-1===s){if(-1===i)return".";s=i}return e.slice(0,s)},basename(e,t){void 0!==t&&g(t,"ext"),g(e,"path");let i,n=0,r=-1,s=!0;if(e.length>=2&&m(e.charCodeAt(0))&&e.charCodeAt(1)===h&&(n=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,a=-1;for(i=e.length-1;i>=n;--i){const l=e.charCodeAt(i);if(f(l)){if(!s){n=i+1;break}}else-1===a&&(s=!1,a=i+1),o>=0&&(l===t.charCodeAt(o)?-1==--o&&(r=i):(o=-1,r=a))}return n===r?r=a:-1===r&&(r=e.length),e.slice(n,r)}for(i=e.length-1;i>=n;--i)if(f(e.charCodeAt(i))){if(!s){n=i+1;break}}else-1===r&&(s=!1,r=i+1);return-1===r?"":e.slice(n,r)},extname(e){g(e,"path");let t=0,i=-1,n=0,r=-1,s=!0,o=0;e.length>=2&&e.charCodeAt(1)===h&&m(e.charCodeAt(0))&&(t=n=2);for(let a=e.length-1;a>=t;--a){const t=e.charCodeAt(a);if(f(t)){if(!s){n=a+1;break}}else-1===r&&(s=!1,r=a+1),t===l?-1===i?i=a:1!==o&&(o=1):-1!==i&&(o=-1)}return-1===i||-1===r||0===o||1===o&&i===r-1&&i===n+1?"":e.slice(i,r)},format:b.bind(null,"\\"),parse(e){g(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const i=e.length;let n=0,r=e.charCodeAt(0);if(1===i)return f(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(f(r)){if(n=1,f(e.charCodeAt(1))){let t=2,r=t;for(;t<i&&!f(e.charCodeAt(t));)t++;if(t<i&&t!==r){for(r=t;t<i&&f(e.charCodeAt(t));)t++;if(t<i&&t!==r){for(r=t;t<i&&!f(e.charCodeAt(t));)t++;t===i?n=t:t!==r&&(n=t+1)}}}}else if(m(r)&&e.charCodeAt(1)===h){if(i<=2)return t.root=t.dir=e,t;if(n=2,f(e.charCodeAt(2))){if(3===i)return t.root=t.dir=e,t;n=3}}n>0&&(t.root=e.slice(0,n));let s=-1,o=n,a=-1,c=!0,d=e.length-1,u=0;for(;d>=n;--d)if(r=e.charCodeAt(d),f(r)){if(!c){o=d+1;break}}else-1===a&&(c=!1,a=d+1),r===l?-1===s?s=d:1!==u&&(u=1):-1!==s&&(u=-1);return-1!==a&&(-1===s||0===u||1===u&&s===a-1&&s===o+1?t.base=t.name=e.slice(o,a):(t.name=e.slice(o,s),t.base=e.slice(o,a),t.ext=e.slice(s,a))),t.dir=o>0&&o!==n?e.slice(0,o-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},y={resolve(...e){let t="",i=!1;for(let n=e.length-1;n>=-1&&!i;n--){const r=n>=0?e[n]:s();g(r,"path"),0!==r.length&&(t=`${r}/${t}`,i=r.charCodeAt(0)===c)}return t=_(t,!i,"/",p),i?`/${t}`:t.length>0?t:"."},normalize(e){if(g(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===c,i=e.charCodeAt(e.length-1)===c;return 0===(e=_(e,!t,"/",p)).length?t?"/":i?"./":".":(i&&(e+="/"),t?`/${e}`:e)},isAbsolute:e=>(g(e,"path"),e.length>0&&e.charCodeAt(0)===c),join(...e){if(0===e.length)return".";let t;for(let i=0;i<e.length;++i){const n=e[i];g(n,"path"),n.length>0&&(void 0===t?t=n:t+=`/${n}`)}return void 0===t?".":y.normalize(t)},relative(e,t){if(g(e,"from"),g(t,"to"),e===t)return"";if((e=y.resolve(e))===(t=y.resolve(t)))return"";const i=e.length,n=i-1,r=t.length-1,s=n<r?n:r;let o=-1,a=0;for(;a<s;a++){const i=e.charCodeAt(1+a);if(i!==t.charCodeAt(1+a))break;i===c&&(o=a)}if(a===s)if(r>s){if(t.charCodeAt(1+a)===c)return t.slice(1+a+1);if(0===a)return t.slice(1+a)}else n>s&&(e.charCodeAt(1+a)===c?o=a:0===a&&(o=0));let l="";for(a=1+o+1;a<=i;++a)a!==i&&e.charCodeAt(a)!==c||(l+=0===l.length?"..":"/..");return`${l}${t.slice(1+o)}`},toNamespacedPath:e=>e,dirname(e){if(g(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===c;let i=-1,n=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===c){if(!n){i=t;break}}else n=!1;return-1===i?t?"/":".":t&&1===i?"//":e.slice(0,i)},basename(e,t){void 0!==t&&g(t,"ext"),g(e,"path");let i,n=0,r=-1,s=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,a=-1;for(i=e.length-1;i>=0;--i){const l=e.charCodeAt(i);if(l===c){if(!s){n=i+1;break}}else-1===a&&(s=!1,a=i+1),o>=0&&(l===t.charCodeAt(o)?-1==--o&&(r=i):(o=-1,r=a))}return n===r?r=a:-1===r&&(r=e.length),e.slice(n,r)}for(i=e.length-1;i>=0;--i)if(e.charCodeAt(i)===c){if(!s){n=i+1;break}}else-1===r&&(s=!1,r=i+1);return-1===r?"":e.slice(n,r)},extname(e){g(e,"path");let t=-1,i=0,n=-1,r=!0,s=0;for(let o=e.length-1;o>=0;--o){const a=e.charCodeAt(o);if(a!==c)-1===n&&(r=!1,n=o+1),a===l?-1===t?t=o:1!==s&&(s=1):-1!==t&&(s=-1);else if(!r){i=o+1;break}}return-1===t||-1===n||0===s||1===s&&t===n-1&&t===i+1?"":e.slice(t,n)},format:b.bind(null,"/"),parse(e){g(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const i=e.charCodeAt(0)===c;let n;i?(t.root="/",n=1):n=0;let r=-1,s=0,o=-1,a=!0,d=e.length-1,h=0;for(;d>=n;--d){const t=e.charCodeAt(d);if(t!==c)-1===o&&(a=!1,o=d+1),t===l?-1===r?r=d:1!==h&&(h=1):-1!==r&&(h=-1);else if(!a){s=d+1;break}}if(-1!==o){const n=0===s&&i?1:s;-1===r||0===h||1===h&&r===o-1&&r===s+1?t.base=t.name=e.slice(n,o):(t.name=e.slice(n,r),t.base=e.slice(n,o),t.ext=e.slice(r,o))}return s>0?t.dir=e.slice(0,s-1):i&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};y.win32=v.win32=v,y.posix=v.posix=y;const w="win32"===a?v.normalize:y.normalize,C="win32"===a?v.resolve:y.resolve,S="win32"===a?v.relative:y.relative,k="win32"===a?v.dirname:y.dirname,x="win32"===a?v.basename:y.basename,L="win32"===a?v.extname:y.extname,M="win32"===a?v.sep:y.sep},1432:(e,t,i)=>{"use strict";i.d(t,{ED:()=>m,dz:()=>_,IJ:()=>b,tY:()=>v,$L:()=>y,gn:()=>w,li:()=>C,xS:()=>S,OS:()=>k,r:()=>M});const n="en";let r,s,o,a=!1,l=!1,c=!1,d=!1,h=!1,u=!1,g=null;const f="undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.electron&&"renderer"===process.type;if("object"!=typeof navigator||f){if("object"==typeof process){a="win32"===process.platform,l="darwin"===process.platform,c="linux"===process.platform,r=n,g=n;const e=process.env.VSCODE_NLS_CONFIG;if(e)try{const t=JSON.parse(e),i=t.availableLanguages["*"];r=t.locale,g=i||n,s=t._translationsConfigFile}catch(e){}d=!0}}else o=navigator.userAgent,a=o.indexOf("Windows")>=0,l=o.indexOf("Macintosh")>=0,u=(o.indexOf("Macintosh")>=0||o.indexOf("iPad")>=0||o.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,c=o.indexOf("Linux")>=0,h=!0,r=navigator.language,g=r;let p=0;l?p=1:a?p=3:c&&(p=2);const m=a,_=l,b=c,v=d,y=h,w=u,C="object"==typeof self?self:"object"==typeof i.g?i.g:{},S=function(){if(C.setImmediate)return C.setImmediate.bind(C);if("function"==typeof C.postMessage&&!C.importScripts){let e=[];C.addEventListener("message",(t=>{if(t.data&&t.data.vscodeSetImmediateId)for(let i=0,n=e.length;i<n;i++){const n=e[i];if(n.id===t.data.vscodeSetImmediateId)return e.splice(i,1),void n.callback()}}));let t=0;return i=>{const n=++t;e.push({id:n,callback:i}),C.postMessage({vscodeSetImmediateId:n},"*")}}if("undefined"!=typeof process&&"function"==typeof process.nextTick)return process.nextTick.bind(process);const e=Promise.resolve();return t=>e.then(t)}(),k=l||u?2:a?1:3;let x=!0,L=!1;function M(){if(!L){L=!0;const e=new Uint8Array(2);e[0]=1,e[1]=2;const t=new Uint16Array(e.buffer);x=513===t[0]}return x}},61134:(e,t,i)=>{"use strict";var n;i.d(t,{e:()=>n}),function(e){function t(e,t){if(e.start>=t.end||t.start>=e.end)return{start:0,end:0};const i=Math.max(e.start,t.start),n=Math.min(e.end,t.end);return n-i<=0?{start:0,end:0}:{start:i,end:n}}function i(e){return e.end-e.start<=0}e.intersect=t,e.isEmpty=i,e.intersects=function(e,n){return!i(t(e,n))},e.relativeComplement=function(e,t){const n=[],r={start:e.start,end:Math.min(t.start,e.end)},s={start:Math.max(t.end,e.start),end:e.end};return i(r)||n.push(r),i(s)||n.push(s),n}}(n||(n={}))},95935:(e,t,i)=>{"use strict";i.d(t,{z_:()=>c,SF:()=>d,Xy:()=>h,Hx:()=>u,EZ:()=>g,XX:()=>f,Vo:()=>p,AH:()=>m,lX:()=>_,i3:()=>b,Vb:()=>y});var n=i(15527),r=i(88721),s=i(70666),o=i(97295),a=i(66663),l=i(1432);function c(e){return(0,s.q)(e,!0)}const d=new class{constructor(e){this._ignorePathCasing=e}compare(e,t,i=!1){return e===t?0:(0,o.qu)(this.getComparisonKey(e,i),this.getComparisonKey(t,i))}isEqual(e,t,i=!1){return e===t||!(!e||!t)&&this.getComparisonKey(e,i)===this.getComparisonKey(t,i)}getComparisonKey(e,t=!1){return e.with({path:this._ignorePathCasing(e)?e.path.toLowerCase():void 0,fragment:t?null:void 0}).toString()}joinPath(e,...t){return s.o.joinPath(e,...t)}basenameOrAuthority(e){return g(e)||e.authority}basename(e){return r.KR.basename(e.path)}dirname(e){if(0===e.path.length)return e;let t;return e.scheme===a.l.file?t=s.o.file(r.XX(c(e))).path:(t=r.KR.dirname(e.path),e.authority&&t.length&&47!==t.charCodeAt(0)&&(console.error(`dirname("${e.toString})) resulted in a relative path`),t="/")),e.with({path:t})}normalizePath(e){if(!e.path.length)return e;let t;return t=e.scheme===a.l.file?s.o.file(r.Fv(c(e))).path:r.KR.normalize(e.path),e.with({path:t})}relativePath(e,t){if(e.scheme!==t.scheme||!v(e.authority,t.authority))return;if(e.scheme===a.l.file){const i=r.Gf(c(e),c(t));return l.ED?n.e(i):i}let i=e.path||"/",s=t.path||"/";if(this._ignorePathCasing(e)){let e=0;for(const t=Math.min(i.length,s.length);e<t&&(i.charCodeAt(e)===s.charCodeAt(e)||i.charAt(e).toLowerCase()===s.charAt(e).toLowerCase());e++);i=s.substr(0,e)+i.substr(e)}return r.KR.relative(i,s)}resolvePath(e,t){if(e.scheme===a.l.file){const i=s.o.file(r.DB(c(e),t));return e.with({authority:i.authority,path:i.path})}return-1===t.indexOf("/")&&(t=n.e(t),/^[a-zA-Z]:(\/|$)/.test(t)&&(t="/"+t)),e.with({path:r.KR.resolve(e.path,t)})}isEqualAuthority(e,t){return e===t||(0,o.qq)(e,t)}}((()=>!1)),h=d.isEqual.bind(d),u=d.basenameOrAuthority.bind(d),g=d.basename.bind(d),f=d.dirname.bind(d),p=d.joinPath.bind(d),m=d.normalizePath.bind(d),_=d.relativePath.bind(d),b=d.resolvePath.bind(d),v=d.isEqualAuthority.bind(d);var y;!function(e){e.META_DATA_LABEL="label",e.META_DATA_DESCRIPTION="description",e.META_DATA_SIZE="size",e.META_DATA_MIME="mime",e.parseMetaData=function(t){const i=new Map;t.path.substring(t.path.indexOf(";")+1,t.path.lastIndexOf(";")).split(";").forEach((e=>{const[t,n]=e.split(":");t&&n&&i.set(t,n)}));const n=t.path.substring(0,t.path.indexOf(";"));return n&&i.set(e.META_DATA_MIME,n),i}}(y||(y={}))},76633:(e,t,i)=>{"use strict";i.d(t,{Rm:()=>o});var n=i(4669),r=i(5976);class s{constructor(e,t,i,n,r,s){e|=0,t|=0,i|=0,n|=0,r|=0,s|=0,this.rawScrollLeft=i,this.rawScrollTop=s,e<0&&(e=0),i+e>t&&(i=t-e),i<0&&(i=0),n<0&&(n=0),s+n>r&&(s=r-n),s<0&&(s=0),this.width=e,this.scrollWidth=t,this.scrollLeft=i,this.height=n,this.scrollHeight=r,this.scrollTop=s}equals(e){return this.rawScrollLeft===e.rawScrollLeft&&this.rawScrollTop===e.rawScrollTop&&this.width===e.width&&this.scrollWidth===e.scrollWidth&&this.scrollLeft===e.scrollLeft&&this.height===e.height&&this.scrollHeight===e.scrollHeight&&this.scrollTop===e.scrollTop}withScrollDimensions(e,t){return new s(void 0!==e.width?e.width:this.width,void 0!==e.scrollWidth?e.scrollWidth:this.scrollWidth,t?this.rawScrollLeft:this.scrollLeft,void 0!==e.height?e.height:this.height,void 0!==e.scrollHeight?e.scrollHeight:this.scrollHeight,t?this.rawScrollTop:this.scrollTop)}withScrollPosition(e){return new s(this.width,this.scrollWidth,void 0!==e.scrollLeft?e.scrollLeft:this.rawScrollLeft,this.height,this.scrollHeight,void 0!==e.scrollTop?e.scrollTop:this.rawScrollTop)}createScrollEvent(e){const t=this.width!==e.width,i=this.scrollWidth!==e.scrollWidth,n=this.scrollLeft!==e.scrollLeft,r=this.height!==e.height,s=this.scrollHeight!==e.scrollHeight,o=this.scrollTop!==e.scrollTop;return{oldWidth:e.width,oldScrollWidth:e.scrollWidth,oldScrollLeft:e.scrollLeft,width:this.width,scrollWidth:this.scrollWidth,scrollLeft:this.scrollLeft,oldHeight:e.height,oldScrollHeight:e.scrollHeight,oldScrollTop:e.scrollTop,height:this.height,scrollHeight:this.scrollHeight,scrollTop:this.scrollTop,widthChanged:t,scrollWidthChanged:i,scrollLeftChanged:n,heightChanged:r,scrollHeightChanged:s,scrollTopChanged:o}}}class o extends r.JT{constructor(e,t){super(),this._onScroll=this._register(new n.Q5),this.onScroll=this._onScroll.event,this._smoothScrollDuration=e,this._scheduleAtNextAnimationFrame=t,this._state=new s(0,0,0,0,0,0),this._smoothScrolling=null}dispose(){this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),super.dispose()}setSmoothScrollDuration(e){this._smoothScrollDuration=e}validateScrollPosition(e){return this._state.withScrollPosition(e)}getScrollDimensions(){return this._state}setScrollDimensions(e,t){const i=this._state.withScrollDimensions(e,t);this._setState(i),this._smoothScrolling&&this._smoothScrolling.acceptScrollDimensions(this._state)}getFutureScrollPosition(){return this._smoothScrolling?this._smoothScrolling.to:this._state}getCurrentScrollPosition(){return this._state}setScrollPositionNow(e){const t=this._state.withScrollPosition(e);this._smoothScrolling&&(this._smoothScrolling.dispose(),this._smoothScrolling=null),this._setState(t)}setScrollPositionSmooth(e){if(0===this._smoothScrollDuration)return this.setScrollPositionNow(e);if(this._smoothScrolling){e={scrollLeft:void 0===e.scrollLeft?this._smoothScrolling.to.scrollLeft:e.scrollLeft,scrollTop:void 0===e.scrollTop?this._smoothScrolling.to.scrollTop:e.scrollTop};const t=this._state.withScrollPosition(e);if(this._smoothScrolling.to.scrollLeft===t.scrollLeft&&this._smoothScrolling.to.scrollTop===t.scrollTop)return;const i=this._smoothScrolling.combine(this._state,t,this._smoothScrollDuration);this._smoothScrolling.dispose(),this._smoothScrolling=i}else{const t=this._state.withScrollPosition(e);this._smoothScrolling=c.start(this._state,t,this._smoothScrollDuration)}this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())}))}_performSmoothScrolling(){if(!this._smoothScrolling)return;const e=this._smoothScrolling.tick(),t=this._state.withScrollPosition(e);return this._setState(t),this._smoothScrolling?e.isDone?(this._smoothScrolling.dispose(),void(this._smoothScrolling=null)):void(this._smoothScrolling.animationFrameDisposable=this._scheduleAtNextAnimationFrame((()=>{this._smoothScrolling&&(this._smoothScrolling.animationFrameDisposable=null,this._performSmoothScrolling())}))):void 0}_setState(e){const t=this._state;t.equals(e)||(this._state=e,this._onScroll.fire(this._state.createScrollEvent(t)))}}class a{constructor(e,t,i){this.scrollLeft=e,this.scrollTop=t,this.isDone=i}}function l(e,t){const i=t-e;return function(t){return e+i*(1-(n=1-t,Math.pow(n,3)));var n}}class c{constructor(e,t,i,n){this.from=e,this.to=t,this.duration=n,this._startTime=i,this.animationFrameDisposable=null,this._initAnimations()}_initAnimations(){this.scrollLeft=this._initAnimation(this.from.scrollLeft,this.to.scrollLeft,this.to.width),this.scrollTop=this._initAnimation(this.from.scrollTop,this.to.scrollTop,this.to.height)}_initAnimation(e,t,i){if(Math.abs(e-t)>2.5*i){let o,a;return e<t?(o=e+.75*i,a=t-.75*i):(o=e-.75*i,a=t+.75*i),n=l(e,o),r=l(a,t),s=.33,function(e){return e<s?n(e/s):r((e-s)/(1-s))}}var n,r,s;return l(e,t)}dispose(){null!==this.animationFrameDisposable&&(this.animationFrameDisposable.dispose(),this.animationFrameDisposable=null)}acceptScrollDimensions(e){this.to=e.withScrollPosition(this.to),this._initAnimations()}tick(){return this._tick(Date.now())}_tick(e){const t=(e-this._startTime)/this.duration;if(t<1){const e=this.scrollLeft(t),i=this.scrollTop(t);return new a(e,i,!1)}return new a(this.to.scrollLeft,this.to.scrollTop,!0)}combine(e,t,i){return c.start(e,t,i)}static start(e,t,i){i+=10;const n=Date.now()-10;return new c(e,t,n,i)}}},14603:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n,r=i(97295);!function(e){e[e.Ignore=0]="Ignore",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(n||(n={})),function(e){e.fromValue=function(t){return t?r.qq("error",t)?e.Error:r.qq("warning",t)||r.qq("warn",t)?e.Warning:r.qq("info",t)?e.Info:e.Ignore:e.Ignore}}(n||(n={}));const s=n},84013:(e,t,i)=>{"use strict";i.d(t,{G:()=>s});var n=i(1432);const r=n.li.performance&&"function"==typeof n.li.performance.now;class s{constructor(e){this._highResolution=r&&e,this._startTime=this._now(),this._stopTime=-1}static create(e=!0){return new s(e)}stop(){this._stopTime=this._now()}elapsed(){return-1!==this._stopTime?this._stopTime-this._startTime:this._now()-this._startTime}_now(){return this._highResolution?n.li.performance.now():(new Date).getTime()}}},97295:(e,t,i)=>{"use strict";function n(e){return!e||"string"!=typeof e||0===e.trim().length}function r(e,t,i="0"){const n=""+e,r=[n];for(let e=n.length;e<t;e++)r.push(i);return r.reverse().join("")}i.d(t,{m5:()=>n,vk:()=>r,WU:()=>o,YU:()=>a,ec:()=>l,fy:()=>c,j3:()=>d,oL:()=>h,un:()=>u,R1:()=>g,Ny:()=>f,pn:()=>p,GF:()=>m,IO:()=>_,mr:()=>b,LC:()=>v,V8:()=>y,ow:()=>w,qu:()=>C,TT:()=>S,zY:()=>k,j_:()=>x,mK:()=>L,df:()=>M,qq:()=>N,ok:()=>T,Mh:()=>I,P1:()=>O,ZG:()=>A,YK:()=>R,rL:()=>P,ZH:()=>F,vH:()=>W,HO:()=>Y,CZ:()=>H,Ut:()=>V,RP:()=>U,$i:()=>K,Qe:()=>q,ab:()=>G,xe:()=>Z,K7:()=>J,C8:()=>Q,c1:()=>X,uS:()=>ee,Kw:()=>te,PJ:()=>ie,S6:()=>ne,fi:()=>re});const s=/{(\d+)}/g;function o(e,...t){return 0===t.length?e:e.replace(s,(function(e,i){const n=parseInt(i,10);return isNaN(n)||n<0||n>=t.length?e:t[n]}))}function a(e){return e.replace(/[<>&]/g,(function(e){switch(e){case"<":return"<";case">":return">";case"&":return"&";default:return e}}))}function l(e){return e.replace(/[\\\{\}\*\+\?\|\^\$\.\[\]\(\)]/g,"\\$&")}function c(e,t=" "){return h(d(e,t),t)}function d(e,t){if(!e||!t)return e;const i=t.length;if(0===i||0===e.length)return e;let n=0;for(;e.indexOf(t,n)===n;)n+=i;return e.substring(n)}function h(e,t){if(!e||!t)return e;const i=t.length,n=e.length;if(0===i||0===n)return e;let r=n,s=-1;for(;s=e.lastIndexOf(t,r-1),-1!==s&&s+i===r;){if(0===s)return"";r=s}return e.substring(0,r)}function u(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}function g(e){return e.replace(/\*/g,"")}function f(e,t){if(e.length<t.length)return!1;if(e===t)return!0;for(let i=0;i<t.length;i++)if(e[i]!==t[i])return!1;return!0}function p(e,t){const i=e.length-t.length;return i>0?e.indexOf(t,i)===i:0===i&&e===t}function m(e,t,i={}){if(!e)throw new Error("Cannot create regex from empty string");t||(e=l(e)),i.wholeWord&&(/\B/.test(e.charAt(0))||(e="\\b"+e),/\B/.test(e.charAt(e.length-1))||(e+="\\b"));let n="";return i.global&&(n+="g"),i.matchCase||(n+="i"),i.multiline&&(n+="m"),i.unicode&&(n+="u"),new RegExp(e,n)}function _(e){return"^"!==e.source&&"^$"!==e.source&&"$"!==e.source&&"^\\s*$"!==e.source&&!(!e.exec("")||0!==e.lastIndex)}function b(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")}function v(e){for(let t=0,i=e.length;t<i;t++){const i=e.charCodeAt(t);if(32!==i&&9!==i)return t}return-1}function y(e,t=0,i=e.length){for(let n=t;n<i;n++){const i=e.charCodeAt(n);if(32!==i&&9!==i)return e.substring(t,n)}return e.substring(t,i)}function w(e,t=e.length-1){for(let i=t;i>=0;i--){const t=e.charCodeAt(i);if(32!==t&&9!==t)return i}return-1}function C(e,t){return e<t?-1:e>t?1:0}function S(e,t,i=0,n=e.length,r=0,s=t.length){for(;i<n&&r<s;i++,r++){let n=e.charCodeAt(i),s=t.charCodeAt(r);if(n<s)return-1;if(n>s)return 1}const o=n-i,a=s-r;return o<a?-1:o>a?1:0}function k(e,t){return x(e,t,0,e.length,0,t.length)}function x(e,t,i=0,n=e.length,r=0,s=t.length){for(;i<n&&r<s;i++,r++){let o=e.charCodeAt(i),a=t.charCodeAt(r);if(o===a)continue;const l=o-a;if(!(32===l&&M(a)||-32===l&&M(o)))return L(o)&&L(a)?l:S(e.toLowerCase(),t.toLowerCase(),i,n,r,s)}const o=n-i,a=s-r;return o<a?-1:o>a?1:0}function L(e){return e>=97&&e<=122}function M(e){return e>=65&&e<=90}function D(e){return L(e)||M(e)}function N(e,t){return e.length===t.length&&E(e,t)}function E(e,t,i=e.length){for(let n=0;n<i;n++){const i=e.charCodeAt(n),r=t.charCodeAt(n);if(i!==r)if(D(i)&&D(r)){const e=Math.abs(i-r);if(0!==e&&32!==e)return!1}else if(String.fromCharCode(i).toLowerCase()!==String.fromCharCode(r).toLowerCase())return!1}return!0}function T(e,t){const i=t.length;return!(t.length>e.length)&&E(e,t,i)}function I(e,t){let i,n=Math.min(e.length,t.length);for(i=0;i<n;i++)if(e.charCodeAt(i)!==t.charCodeAt(i))return i;return n}function O(e,t){let i,n=Math.min(e.length,t.length);const r=e.length-1,s=t.length-1;for(i=0;i<n;i++)if(e.charCodeAt(r-i)!==t.charCodeAt(s-i))return i;return n}function A(e){return 55296<=e&&e<=56319}function R(e){return 56320<=e&&e<=57343}function P(e,t){return t-56320+(e-55296<<10)+65536}function F(e,t,i){const n=e.charCodeAt(i);if(A(n)&&i+1<t){const t=e.charCodeAt(i+1);if(R(t))return P(n,t)}return n}function B(e,t){const i=e.charCodeAt(t-1);if(R(i)&&t>1){const n=e.charCodeAt(t-2);if(A(n))return P(n,i)}return i}function W(e,t){const i=se.getInstance(),n=t,r=e.length,s=F(e,r,t);t+=s>=65536?2:1;let o=i.getGraphemeBreakType(s);for(;t<r;){const n=F(e,r,t),s=i.getGraphemeBreakType(n);if(re(o,s))break;t+=n>=65536?2:1,o=s}return t-n}function Y(e,t){const i=se.getInstance(),n=t,r=B(e,t);t-=r>=65536?2:1;let s=i.getGraphemeBreakType(r);for(;t>0;){const n=B(e,t),r=i.getGraphemeBreakType(n);if(re(r,s))break;t-=n>=65536?2:1,s=r}return n-t}function H(e){const t=e.byteLength,i=[];let n=0;for(;n<t;){const r=e[n];let s;if(s=r>=240&&n+3<t?(7&e[n++])<<18>>>0|(63&e[n++])<<12>>>0|(63&e[n++])<<6>>>0|(63&e[n++])<<0>>>0:r>=224&&n+2<t?(15&e[n++])<<12>>>0|(63&e[n++])<<6>>>0|(63&e[n++])<<0>>>0:r>=192&&n+1<t?(31&e[n++])<<6>>>0|(63&e[n++])<<0>>>0:e[n++],s>=0&&s<=55295||s>=57344&&s<=65535)i.push(String.fromCharCode(s));else if(s>=65536&&s<=1114111){const e=s-65536,t=55296+((1047552&e)>>>10),n=56320+((1023&e)>>>0);i.push(String.fromCharCode(t)),i.push(String.fromCharCode(n))}else i.push(String.fromCharCode(65533))}return i.join("")}const j=/(?:[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05F4\u0608\u060B\u060D\u061B-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u0710\u0712-\u072F\u074D-\u07A5\u07B1-\u07EA\u07F4\u07F5\u07FA-\u0815\u081A\u0824\u0828\u0830-\u0858\u085E-\u08BD\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFD3D\uFD50-\uFDFC\uFE70-\uFEFC]|\uD802[\uDC00-\uDD1B\uDD20-\uDE00\uDE10-\uDE33\uDE40-\uDEE4\uDEEB-\uDF35\uDF40-\uDFFF]|\uD803[\uDC00-\uDCFF]|\uD83A[\uDC00-\uDCCF\uDD00-\uDD43\uDD50-\uDFFF]|\uD83B[\uDC00-\uDEBB])/;function V(e){return j.test(e)}const z=/(?:[\u231A\u231B\u23F0\u23F3\u2600-\u27BF\u2B50\u2B55]|\uD83C[\uDDE6-\uDDFF\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F\uDE80-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD00-\uDDFF\uDE70-\uDE73\uDE78-\uDE82\uDE90-\uDE95])/;function U(e){return z.test(e)}const $=/^[\t\n\r\x20-\x7E]*$/;function K(e){return $.test(e)}const q=/[\u2028\u2029]/;function G(e){return q.test(e)}function Z(e){for(let t=0,i=e.length;t<i;t++)if(J(e.charCodeAt(t)))return!0;return!1}function J(e){return(e=+e)>=11904&&e<=55215||e>=63744&&e<=64255||e>=65281&&e<=65374}function Q(e){return e>=127462&&e<=127487||e>=9728&&e<=10175||e>=127744&&e<=128591||e>=128640&&e<=128764||e>=128992&&e<=129003||e>=129280&&e<=129535||e>=129648&&e<=129651||e>=129656&&e<=129666||e>=129680&&e<=129685}const X=String.fromCharCode(65279);function ee(e){return!!(e&&e.length>0&&65279===e.charCodeAt(0))}function te(e,t=!1){return!!e&&(t&&(e=e.replace(/\\./g,"")),e.toLowerCase()!==e)}function ie(e){return(e%=52)<26?String.fromCharCode(97+e):String.fromCharCode(65+e-26)}function ne(e){return se.getInstance().getGraphemeBreakType(e)}function re(e,t){return 0===e?5!==t&&7!==t:!(2===e&&3===t||4!==e&&2!==e&&3!==e&&4!==t&&2!==t&&3!==t&&(8===e&&(8===t||9===t||11===t||12===t)||!(11!==e&&9!==e||9!==t&&10!==t)||(12===e||10===e)&&10===t||5===t||13===t||7===t||1===e||13===e&&14===t||6===e&&6===t))}class se{constructor(){this._data=JSON.parse("[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]")}static getInstance(){return se._INSTANCE||(se._INSTANCE=new se),se._INSTANCE}getGraphemeBreakType(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;const t=this._data,i=t.length/3;let n=1;for(;n<=i;)if(e<t[3*n])n*=2;else{if(!(e>t[3*n+1]))return t[3*n+2];n=2*n+1}return 0}}se._INSTANCE=null},98401:(e,t,i)=>{"use strict";function n(e){return Array.isArray(e)}function r(e){return"string"==typeof e}function s(e){return!("object"!=typeof e||null===e||Array.isArray(e)||e instanceof RegExp||e instanceof Date)}function o(e){return"number"==typeof e&&!isNaN(e)}function a(e){return!0===e||!1===e}function l(e){return void 0===e}function c(e){return l(e)||null===e}function d(e,t){if(!e)throw new Error(t?`Unexpected type, expected '${t}'`:"Unexpected type")}function h(e){if(c(e))throw new Error("Assertion Failed: argument is undefined or null");return e}function u(e){return"function"==typeof e}function g(e,t){const i=Math.min(e.length,t.length);for(let n=0;n<i;n++)f(e[n],t[n])}function f(e,t){if(r(t)){if(typeof e!==t)throw new Error(`argument does not match constraint: typeof ${t}`)}else if(u(t)){try{if(e instanceof t)return}catch(e){}if(!c(e)&&e.constructor===t)return;if(1===t.length&&!0===t.call(void 0,e))return;throw new Error("argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true")}}function p(e){const t=[];for(const i of function(e){let t=[],i=Object.getPrototypeOf(e);for(;Object.prototype!==i;)t=t.concat(Object.getOwnPropertyNames(i)),i=Object.getPrototypeOf(i);return t}(e))"function"==typeof e[i]&&t.push(i);return t}function m(e,t){const i=e=>function(){const i=Array.prototype.slice.call(arguments,0);return t(e,i)};let n={};for(const t of e)n[t]=i(t);return n}function _(e){return null===e?void 0:e}i.d(t,{kJ:()=>n,HD:()=>r,Kn:()=>s,hj:()=>o,jn:()=>a,o8:()=>l,Jp:()=>c,p_:()=>d,cW:()=>h,mf:()=>u,D8:()=>g,$E:()=>p,IU:()=>m,f6:()=>_})},85427:(e,t,i)=>{"use strict";function n(e){return e<0?0:e>255?255:0|e}function r(e){return e<0?0:e>4294967295?4294967295:0|e}i.d(t,{K:()=>n,A:()=>r})},70666:(e,t,i)=>{"use strict";i.d(t,{o:()=>h,q:()=>_});var n=i(1432),r=i(88721);const s=/^\w[\w\d+.-]*$/,o=/^\//,a=/^\/\//,l="",c="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class h{constructor(e,t,i,n,r,d=!1){"object"==typeof e?(this.scheme=e.scheme||l,this.authority=e.authority||l,this.path=e.path||l,this.query=e.query||l,this.fragment=e.fragment||l):(this.scheme=function(e,t){return e||t?e:"file"}(e,d),this.authority=t||l,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==c&&(t=c+t):t=c}return t}(this.scheme,i||l),this.query=n||l,this.fragment=r||l,function(e,t){if(!e.scheme&&t)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!s.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!o.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(a.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,d))}static isUri(e){return e instanceof h||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"function"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}get fsPath(){return _(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:i,path:n,query:r,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=l),void 0===i?i=this.authority:null===i&&(i=l),void 0===n?n=this.path:null===n&&(n=l),void 0===r?r=this.query:null===r&&(r=l),void 0===s?s=this.fragment:null===s&&(s=l),t===this.scheme&&i===this.authority&&n===this.path&&r===this.query&&s===this.fragment?this:new g(t,i,n,r,s)}static parse(e,t=!1){const i=d.exec(e);return i?new g(i[2]||l,w(i[4]||l),w(i[5]||l),w(i[7]||l),w(i[9]||l),t):new g(l,l,l,l,l)}static file(e){let t=l;if(n.ED&&(e=e.replace(/\\/g,c)),e[0]===c&&e[1]===c){const i=e.indexOf(c,2);-1===i?(t=e.substring(2),e=c):(t=e.substring(2,i),e=e.substring(i)||c)}return new g("file",t,e,l,l)}static from(e){return new g(e.scheme,e.authority,e.path,e.query,e.fragment)}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPaths on URI without path");let i;return i=n.ED&&"file"===e.scheme?h.file(r.Ku.join(_(e,!0),...t)).path:r.KR.join(e.path,...t),e.with({path:i})}toString(e=!1){return b(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof h)return e;{const t=new g(e);return t._formatted=e.external,t._fsPath=e._sep===u?e.fsPath:null,t}}return e}}const u=n.ED?1:void 0;class g extends h{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=_(this,!1)),this._fsPath}toString(e=!1){return e?b(this,!0):(this._formatted||(this._formatted=b(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=u),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const f={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function p(e,t){let i,n=-1;for(let r=0;r<e.length;r++){const s=e.charCodeAt(r);if(s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||t&&47===s)-1!==n&&(i+=encodeURIComponent(e.substring(n,r)),n=-1),void 0!==i&&(i+=e.charAt(r));else{void 0===i&&(i=e.substr(0,r));const t=f[s];void 0!==t?(-1!==n&&(i+=encodeURIComponent(e.substring(n,r)),n=-1),i+=t):-1===n&&(n=r)}}return-1!==n&&(i+=encodeURIComponent(e.substring(n))),void 0!==i?i:e}function m(e){let t;for(let i=0;i<e.length;i++){const n=e.charCodeAt(i);35===n||63===n?(void 0===t&&(t=e.substr(0,i)),t+=f[n]):void 0!==t&&(t+=e[i])}return void 0!==t?t:e}function _(e,t){let i;return i=e.authority&&e.path.length>1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,n.ED&&(i=i.replace(/\//g,"\\")),i}function b(e,t){const i=t?m:p;let n="",{scheme:r,authority:s,path:o,query:a,fragment:l}=e;if(r&&(n+=r,n+=":"),(s||"file"===r)&&(n+=c,n+=c),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.indexOf(":"),-1===e?n+=i(t,!1):(n+=i(t.substr(0,e),!1),n+=":",n+=i(t.substr(e+1),!1)),n+="@"}s=s.toLowerCase(),e=s.indexOf(":"),-1===e?n+=i(s,!1):(n+=i(s.substr(0,e),!1),n+=s.substr(e))}if(o){if(o.length>=3&&47===o.charCodeAt(0)&&58===o.charCodeAt(2)){const e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&58===o.charCodeAt(1)){const e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}n+=i(o,!0)}return a&&(n+="?",n+=i(a,!1)),l&&(n+="#",n+=t?l:p(l,!1)),n}function v(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+v(e.substr(3)):e}}const y=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function w(e){return e.match(y)?e.replace(y,(e=>v(e))):e}},67746:(e,t,i)=>{"use strict";i.d(t,{X:()=>n,j:()=>r});const n={ctrlCmd:!1,alt:!1};var r;!function(e){e[e.NONE=0]="NONE",e[e.FIRST=1]="FIRST",e[e.SECOND=2]="SECOND",e[e.LAST=3]="LAST"}(r||(r={}))},89587:(e,t,i)=>{"use strict";i.d(t,{Mj:()=>n.languages});var n=i(50158)},89052:(e,t,i)=>{"use strict";i.d(t,{V:()=>m,P:()=>f});var n=i(16268),r=i(4669),s=i(5976),o=i(1432);class a{constructor(e,t){this.chr=e,this.type=t,this.width=0}fulfill(e){this.width=e}}class l{constructor(e,t){this._bareFontInfo=e,this._requests=t,this._container=null,this._testElements=null}read(){this._createDomElements(),document.body.appendChild(this._container),this._readFromDomElements(),document.body.removeChild(this._container),this._container=null,this._testElements=null}_createDomElements(){const e=document.createElement("div");e.style.position="absolute",e.style.top="-50000px",e.style.width="50000px";const t=document.createElement("div");t.style.fontFamily=this._bareFontInfo.getMassagedFontFamily(),t.style.fontWeight=this._bareFontInfo.fontWeight,t.style.fontSize=this._bareFontInfo.fontSize+"px",t.style.fontFeatureSettings=this._bareFontInfo.fontFeatureSettings,t.style.lineHeight=this._bareFontInfo.lineHeight+"px",t.style.letterSpacing=this._bareFontInfo.letterSpacing+"px",e.appendChild(t);const i=document.createElement("div");i.style.fontFamily=this._bareFontInfo.getMassagedFontFamily(),i.style.fontWeight="bold",i.style.fontSize=this._bareFontInfo.fontSize+"px",i.style.fontFeatureSettings=this._bareFontInfo.fontFeatureSettings,i.style.lineHeight=this._bareFontInfo.lineHeight+"px",i.style.letterSpacing=this._bareFontInfo.letterSpacing+"px",e.appendChild(i);const n=document.createElement("div");n.style.fontFamily=this._bareFontInfo.getMassagedFontFamily(),n.style.fontWeight=this._bareFontInfo.fontWeight,n.style.fontSize=this._bareFontInfo.fontSize+"px",n.style.fontFeatureSettings=this._bareFontInfo.fontFeatureSettings,n.style.lineHeight=this._bareFontInfo.lineHeight+"px",n.style.letterSpacing=this._bareFontInfo.letterSpacing+"px",n.style.fontStyle="italic",e.appendChild(n);const r=[];for(const e of this._requests){let s;0===e.type&&(s=t),2===e.type&&(s=i),1===e.type&&(s=n),s.appendChild(document.createElement("br"));const o=document.createElement("span");l._render(o,e),s.appendChild(o),r.push(o)}this._container=e,this._testElements=r}static _render(e,t){if(" "===t.chr){let t=" ";for(let e=0;e<8;e++)t+=t;e.innerText=t}else{let i=t.chr;for(let e=0;e<8;e++)i+=i;e.textContent=i}}_readFromDomElements(){for(let e=0,t=this._requests.length;e<t;e++){const t=this._requests[e],i=this._testElements[e];t.fulfill(i.offsetWidth/256)}}}var c=i(54534),d=i(56345),h=i(64141),u=i(27374);class g{constructor(){this._keys=Object.create(null),this._values=Object.create(null)}has(e){const t=e.getId();return!!this._values[t]}get(e){const t=e.getId();return this._values[t]}put(e,t){const i=e.getId();this._keys[i]=e,this._values[i]=t}remove(e){const t=e.getId();delete this._keys[t],delete this._values[t]}getValues(){return Object.keys(this._keys).map((e=>this._values[e]))}}function f(){p.INSTANCE.clearCache()}class p extends s.JT{constructor(){super(),this._onDidChange=this._register(new r.Q5),this.onDidChange=this._onDidChange.event,this._cache=new g,this._evictUntrustedReadingsTimeout=-1}dispose(){-1!==this._evictUntrustedReadingsTimeout&&(clearTimeout(this._evictUntrustedReadingsTimeout),this._evictUntrustedReadingsTimeout=-1),super.dispose()}clearCache(){this._cache=new g,this._onDidChange.fire()}_writeToCache(e,t){this._cache.put(e,t),t.isTrusted||-1!==this._evictUntrustedReadingsTimeout||(this._evictUntrustedReadingsTimeout=setTimeout((()=>{this._evictUntrustedReadingsTimeout=-1,this._evictUntrustedReadings()}),5e3))}_evictUntrustedReadings(){const e=this._cache.getValues();let t=!1;for(let i=0,n=e.length;i<n;i++){const n=e[i];n.isTrusted||(t=!0,this._cache.remove(n))}t&&this._onDidChange.fire()}readConfiguration(e){if(!this._cache.has(e)){let t=p._actualReadConfiguration(e);(t.typicalHalfwidthCharacterWidth<=2||t.typicalFullwidthCharacterWidth<=2||t.spaceWidth<=2||t.maxDigitWidth<=2)&&(t=new u.p({zoomLevel:n.px(),fontFamily:t.fontFamily,fontWeight:t.fontWeight,fontSize:t.fontSize,fontFeatureSettings:t.fontFeatureSettings,lineHeight:t.lineHeight,letterSpacing:t.letterSpacing,isMonospace:t.isMonospace,typicalHalfwidthCharacterWidth:Math.max(t.typicalHalfwidthCharacterWidth,5),typicalFullwidthCharacterWidth:Math.max(t.typicalFullwidthCharacterWidth,5),canUseHalfwidthRightwardsArrow:t.canUseHalfwidthRightwardsArrow,spaceWidth:Math.max(t.spaceWidth,5),middotWidth:Math.max(t.middotWidth,5),wsmiddotWidth:Math.max(t.wsmiddotWidth,5),maxDigitWidth:Math.max(t.maxDigitWidth,5)},!1)),this._writeToCache(e,t)}return this._cache.get(e)}static createRequest(e,t,i,n){const r=new a(e,t);return i.push(r),n&&n.push(r),r}static _actualReadConfiguration(e){const t=[],i=[],r=this.createRequest("n",0,t,i),s=this.createRequest("m",0,t,null),o=this.createRequest(" ",0,t,i),a=this.createRequest("0",0,t,i),c=this.createRequest("1",0,t,i),d=this.createRequest("2",0,t,i),g=this.createRequest("3",0,t,i),f=this.createRequest("4",0,t,i),p=this.createRequest("5",0,t,i),m=this.createRequest("6",0,t,i),_=this.createRequest("7",0,t,i),b=this.createRequest("8",0,t,i),v=this.createRequest("9",0,t,i),y=this.createRequest("→",0,t,i),w=this.createRequest("→",0,t,null),C=this.createRequest("·",0,t,i),S=this.createRequest(String.fromCharCode(11825),0,t,null);this.createRequest("|",0,t,i),this.createRequest("/",0,t,i),this.createRequest("-",0,t,i),this.createRequest("_",0,t,i),this.createRequest("i",0,t,i),this.createRequest("l",0,t,i),this.createRequest("m",0,t,i),this.createRequest("|",1,t,i),this.createRequest("_",1,t,i),this.createRequest("i",1,t,i),this.createRequest("l",1,t,i),this.createRequest("m",1,t,i),this.createRequest("n",1,t,i),this.createRequest("|",2,t,i),this.createRequest("_",2,t,i),this.createRequest("i",2,t,i),this.createRequest("l",2,t,i),this.createRequest("m",2,t,i),this.createRequest("n",2,t,i),function(e,t){new l(e,t).read()}(e,t);const k=Math.max(a.width,c.width,d.width,g.width,f.width,p.width,m.width,_.width,b.width,v.width);let x=e.fontFeatureSettings===h.n0.OFF;const L=i[0].width;for(let e=1,t=i.length;x&&e<t;e++){const t=L-i[e].width;if(t<-.001||t>.001){x=!1;break}}let M=!0;x&&w.width!==L&&(M=!1),w.width>y.width&&(M=!1);const D=n.WP()>2e3;return new u.p({zoomLevel:n.px(),fontFamily:e.fontFamily,fontWeight:e.fontWeight,fontSize:e.fontSize,fontFeatureSettings:e.fontFeatureSettings,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,isMonospace:x,typicalHalfwidthCharacterWidth:r.width,typicalFullwidthCharacterWidth:s.width,canUseHalfwidthRightwardsArrow:M,spaceWidth:o.width,middotWidth:C.width,wsmiddotWidth:S.width,maxDigitWidth:k},D)}}p.INSTANCE=new p;class m extends d.fv{constructor(e,t,i=null,r){super(e,t),this.accessibilityService=r,this._elementSizeObserver=this._register(new c.I(i,t.dimension,(()=>this._onReferenceDomElementSizeChanged()))),this._register(p.INSTANCE.onDidChange((()=>this._onCSSBasedConfigurationChanged()))),this._validatedOptions.get(9)&&this._elementSizeObserver.startObserving(),this._register(n.fX((e=>this._recomputeOptions()))),this._register(this.accessibilityService.onDidChangeScreenReaderOptimized((()=>this._recomputeOptions()))),this._recomputeOptions()}static applyFontInfoSlow(e,t){e.style.fontFamily=t.getMassagedFontFamily(),e.style.fontWeight=t.fontWeight,e.style.fontSize=t.fontSize+"px",e.style.fontFeatureSettings=t.fontFeatureSettings,e.style.lineHeight=t.lineHeight+"px",e.style.letterSpacing=t.letterSpacing+"px"}static applyFontInfo(e,t){e.setFontFamily(t.getMassagedFontFamily()),e.setFontWeight(t.fontWeight),e.setFontSize(t.fontSize),e.setFontFeatureSettings(t.fontFeatureSettings),e.setLineHeight(t.lineHeight),e.setLetterSpacing(t.letterSpacing)}_onReferenceDomElementSizeChanged(){this._recomputeOptions()}_onCSSBasedConfigurationChanged(){this._recomputeOptions()}observeReferenceElement(e){this._elementSizeObserver.observe(e)}dispose(){super.dispose()}_getExtraEditorClassName(){let e="";return n.G6||n.MG||(e+="no-user-select "),o.dz&&(e+="mac "),e}_getEnvConfiguration(){return{extraEditorClassName:this._getExtraEditorClassName(),outerWidth:this._elementSizeObserver.getWidth(),outerHeight:this._elementSizeObserver.getHeight(),emptySelectionClipboard:n.Pf||n.vU,pixelRatio:n.mX(),zoomLevel:n.px(),accessibilitySupport:this.accessibilityService.isScreenReaderOptimized()?2:this.accessibilityService.getAccessibilitySupport()}}readConfiguration(e){return p.INSTANCE.readConfiguration(e)}}},54534:(e,t,i)=>{"use strict";i.d(t,{I:()=>r});var n=i(5976);class r extends n.JT{constructor(e,t,i){super(),this.referenceDomElement=e,this.changeCallback=i,this.width=-1,this.height=-1,this.resizeObserver=null,this.measureReferenceDomElementToken=-1,this.measureReferenceDomElement(!1,t)}dispose(){this.stopObserving(),super.dispose()}getWidth(){return this.width}getHeight(){return this.height}startObserving(){"undefined"!=typeof ResizeObserver?!this.resizeObserver&&this.referenceDomElement&&(this.resizeObserver=new ResizeObserver((e=>{e&&e[0]&&e[0].contentRect?this.observe({width:e[0].contentRect.width,height:e[0].contentRect.height}):this.observe()})),this.resizeObserver.observe(this.referenceDomElement)):-1===this.measureReferenceDomElementToken&&(this.measureReferenceDomElementToken=setInterval((()=>this.observe()),100))}stopObserving(){this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),-1!==this.measureReferenceDomElementToken&&(clearInterval(this.measureReferenceDomElementToken),this.measureReferenceDomElementToken=-1)}observe(e){this.measureReferenceDomElement(!0,e)}measureReferenceDomElement(e,t){let i=0,n=0;t?(i=t.width,n=t.height):this.referenceDomElement&&(i=this.referenceDomElement.clientWidth,n=this.referenceDomElement.clientHeight),i=Math.max(5,i),n=Math.max(5,n),this.width===i&&this.height===n||(this.width=i,this.height=n,e&&this.changeCallback())}}},18728:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CoreEditingCommands:()=>x,CoreEditorCommand:()=>y,CoreNavigationCommands:()=>g,EditorScroll_:()=>h,RevealLine_:()=>u});var n=i(63580),r=i(98401),s=i(16830),o=i(11640),a=i(33181),l=i(50187),c=i(24314);class d{static columnSelect(e,t,i,n,r,s){let o=Math.abs(r-i)+1,d=i>r,h=n>s,u=n<s,g=[];for(let r=0;r<o;r++){let o=i+(d?-r:r),f=a.io.columnFromVisibleColumn2(e,t,o,n),p=a.io.columnFromVisibleColumn2(e,t,o,s),m=a.io.visibleColumnFromColumn2(e,t,new l.L(o,f)),_=a.io.visibleColumnFromColumn2(e,t,new l.L(o,p));if(u){if(m>s)continue;if(_<n)continue}if(h){if(_>n)continue;if(m<s)continue}g.push(new a.rS(new c.e(o,f,o,f),0,new l.L(o,p),0))}if(0===g.length)for(let e=0;e<o;e++){const n=i+(d?-e:e),r=t.getLineMaxColumn(n);g.push(new a.rS(new c.e(n,r,n,r),0,new l.L(n,r),0))}return{viewStates:g,reversed:d,fromLineNumber:i,fromVisualColumn:n,toLineNumber:r,toVisualColumn:s}}static columnSelectLeft(e,t,i){let n=i.toViewVisualColumn;return n>1&&n--,d.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,n)}static columnSelectRight(e,t,i){let n=0;const r=Math.min(i.fromViewLineNumber,i.toViewLineNumber),s=Math.max(i.fromViewLineNumber,i.toViewLineNumber);for(let i=r;i<=s;i++){const r=t.getLineMaxColumn(i),s=a.io.visibleColumnFromColumn2(e,t,new l.L(i,r));n=Math.max(n,s)}let o=i.toViewVisualColumn;return o<n&&o++,this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,i.toViewLineNumber,o)}static columnSelectUp(e,t,i,n){const r=n?e.pageSize:1,s=Math.max(1,i.toViewLineNumber-r);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,s,i.toViewVisualColumn)}static columnSelectDown(e,t,i,n){const r=n?e.pageSize:1,s=Math.min(t.getLineCount(),i.toViewLineNumber+r);return this.columnSelect(e,t,i.fromViewLineNumber,i.fromViewVisualColumn,s,i.toViewVisualColumn)}}var h,u,g,f=i(31380),p=i(83814),m=i(23582),_=i(29102),b=i(38819),v=i(49989);class y extends s._l{runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditorCommand(n,i||{})}}!function(e){e.description={description:"Scroll editor in the given direction",args:[{name:"Editor scroll argument object",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory direction value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'up', 'down'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\t\t\t\t",constraint:function(e){if(!r.Kn(e))return!1;const t=e;return!(!r.HD(t.to)||!r.o8(t.by)&&!r.HD(t.by)||!r.o8(t.value)&&!r.hj(t.value)||!r.o8(t.revealCursor)&&!r.jn(t.revealCursor))},schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["up","down"]},by:{type:"string",enum:["line","wrappedLine","page","halfPage"]},value:{type:"number",default:1},revealCursor:{type:"boolean"}}}}]},e.RawDirection={Up:"up",Down:"down"},e.RawUnit={Line:"line",WrappedLine:"wrappedLine",Page:"page",HalfPage:"halfPage"},e.parse=function(t){let i,n;switch(t.to){case e.RawDirection.Up:i=1;break;case e.RawDirection.Down:i=2;break;default:return null}switch(t.by){case e.RawUnit.Line:n=1;break;case e.RawUnit.WrappedLine:n=2;break;case e.RawUnit.Page:n=3;break;case e.RawUnit.HalfPage:n=4;break;default:n=2}return{direction:i,unit:n,value:Math.floor(t.value||1),revealCursor:!!t.revealCursor,select:!!t.select}}}(h||(h={})),function(e){e.description={description:"Reveal the given line at the given logical position",args:[{name:"Reveal line argument object",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed .\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'top', 'center', 'bottom'\n\t\t\t\t\t\t```\n\t\t\t\t",constraint:function(e){if(!r.Kn(e))return!1;const t=e;return!(!r.hj(t.lineNumber)||!r.o8(t.at)&&!r.HD(t.at))},schema:{type:"object",required:["lineNumber"],properties:{lineNumber:{type:"number"},at:{type:"string",enum:["top","center","bottom"]}}}}]},e.RawAtArgument={Top:"top",Center:"center",Bottom:"bottom"}}(u||(u={}));class w{constructor(e){e.addImplementation(1e4,((e,t)=>{const i=e.get(o.$).getFocusedCodeEditor();return!(!i||!i.hasTextFocus()||(this.runEditorCommand(e,i,t),0))})),e.addImplementation(1e3,((e,t)=>{const i=document.activeElement;return!!(i&&["input","textarea"].indexOf(i.tagName.toLowerCase())>=0)&&(this.runDOMCommand(),!0)})),e.addImplementation(0,((e,t)=>{const i=e.get(o.$).getActiveCodeEditor();return!!i&&(i.focus(),this.runEditorCommand(e,i,t),!0)}))}}!function(e){class t extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[p.P.moveTo(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position,t.viewPosition)]),e.revealPrimaryCursor(t.source,!0)}}e.MoveTo=(0,s.fK)(new t({id:"_moveTo",inSelectionMode:!1,precondition:void 0})),e.MoveToSelect=(0,s.fK)(new t({id:"_moveToSelect",inSelectionMode:!0,precondition:void 0}));class i extends y{runCoreEditorCommand(e,t){e.model.pushStackElement();const i=this._getColumnSelectResult(e,e.getPrimaryCursorState(),e.getCursorColumnSelectData(),t);e.setCursorStates(t.source,3,i.viewStates.map((e=>a.Vi.fromViewState(e)))),e.setCursorColumnSelectData({isReal:!0,fromViewLineNumber:i.fromLineNumber,fromViewVisualColumn:i.fromVisualColumn,toViewLineNumber:i.toLineNumber,toViewVisualColumn:i.toVisualColumn}),i.reversed?e.revealTopMostCursor(t.source):e.revealBottomMostCursor(t.source)}}e.ColumnSelect=(0,s.fK)(new class extends i{constructor(){super({id:"columnSelect",precondition:void 0})}_getColumnSelectResult(e,t,i,n){const r=e.model.validatePosition(n.position),s=e.coordinatesConverter.validateViewPosition(new l.L(n.viewPosition.lineNumber,n.viewPosition.column),r);let o=n.doColumnSelect?i.fromViewLineNumber:s.lineNumber,a=n.doColumnSelect?i.fromViewVisualColumn:n.mouseColumn-1;return d.columnSelect(e.cursorConfig,e,o,a,s.lineNumber,n.mouseColumn-1)}}),e.CursorColumnSelectLeft=(0,s.fK)(new class extends i{constructor(){super({id:"cursorColumnSelectLeft",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3599,linux:{primary:0}}})}_getColumnSelectResult(e,t,i,n){return d.columnSelectLeft(e.cursorConfig,e,i)}}),e.CursorColumnSelectRight=(0,s.fK)(new class extends i{constructor(){super({id:"cursorColumnSelectRight",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3601,linux:{primary:0}}})}_getColumnSelectResult(e,t,i,n){return d.columnSelectRight(e.cursorConfig,e,i)}});class r extends i{constructor(e){super(e),this._isPaged=e.isPaged}_getColumnSelectResult(e,t,i,n){return d.columnSelectUp(e.cursorConfig,e,i,this._isPaged)}}e.CursorColumnSelectUp=(0,s.fK)(new r({isPaged:!1,id:"cursorColumnSelectUp",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3600,linux:{primary:0}}})),e.CursorColumnSelectPageUp=(0,s.fK)(new r({isPaged:!0,id:"cursorColumnSelectPageUp",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3595,linux:{primary:0}}}));class o extends i{constructor(e){super(e),this._isPaged=e.isPaged}_getColumnSelectResult(e,t,i,n){return d.columnSelectDown(e.cursorConfig,e,i,this._isPaged)}}e.CursorColumnSelectDown=(0,s.fK)(new o({isPaged:!1,id:"cursorColumnSelectDown",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3602,linux:{primary:0}}})),e.CursorColumnSelectPageDown=(0,s.fK)(new o({isPaged:!0,id:"cursorColumnSelectPageDown",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3596,linux:{primary:0}}}));class g extends y{constructor(){super({id:"cursorMove",precondition:void 0,description:p.N.description})}runCoreEditorCommand(e,t){const i=p.N.parse(t);i&&this._runCursorMove(e,t.source,i)}_runCursorMove(e,t,i){e.model.pushStackElement(),e.setCursorStates(t,3,g._move(e,e.getCursorStates(),i)),e.revealPrimaryCursor(t,!0)}static _move(e,t,i){const n=i.select,r=i.value;switch(i.direction){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:return p.P.simpleMove(e,t,i.direction,n,r,i.unit);case 9:case 11:case 10:case 12:return p.P.viewportMove(e,t,i.direction,n,r);default:return null}}}e.CursorMoveImpl=g,e.CursorMove=(0,s.fK)(new g);class f extends y{constructor(e){super(e),this._staticArgs=e.args}runCoreEditorCommand(e,t){let i=this._staticArgs;-1===this._staticArgs.value&&(i={direction:this._staticArgs.direction,unit:this._staticArgs.unit,select:this._staticArgs.select,value:e.cursorConfig.pageSize}),e.model.pushStackElement(),e.setCursorStates(t.source,3,p.P.simpleMove(e,e.getCursorStates(),i.direction,i.select,i.value,i.unit)),e.revealPrimaryCursor(t.source,!0)}}e.CursorLeft=(0,s.fK)(new f({args:{direction:0,unit:0,select:!1,value:1},id:"cursorLeft",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:15,mac:{primary:15,secondary:[288]}}})),e.CursorLeftSelect=(0,s.fK)(new f({args:{direction:0,unit:0,select:!0,value:1},id:"cursorLeftSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1039}})),e.CursorRight=(0,s.fK)(new f({args:{direction:1,unit:0,select:!1,value:1},id:"cursorRight",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:17,mac:{primary:17,secondary:[292]}}})),e.CursorRightSelect=(0,s.fK)(new f({args:{direction:1,unit:0,select:!0,value:1},id:"cursorRightSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1041}})),e.CursorUp=(0,s.fK)(new f({args:{direction:2,unit:2,select:!1,value:1},id:"cursorUp",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:16,mac:{primary:16,secondary:[302]}}})),e.CursorUpSelect=(0,s.fK)(new f({args:{direction:2,unit:2,select:!0,value:1},id:"cursorUpSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1040,secondary:[3088],mac:{primary:1040},linux:{primary:1040}}})),e.CursorPageUp=(0,s.fK)(new f({args:{direction:2,unit:2,select:!1,value:-1},id:"cursorPageUp",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:11}})),e.CursorPageUpSelect=(0,s.fK)(new f({args:{direction:2,unit:2,select:!0,value:-1},id:"cursorPageUpSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1035}})),e.CursorDown=(0,s.fK)(new f({args:{direction:3,unit:2,select:!1,value:1},id:"cursorDown",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:18,mac:{primary:18,secondary:[300]}}})),e.CursorDownSelect=(0,s.fK)(new f({args:{direction:3,unit:2,select:!0,value:1},id:"cursorDownSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1042,secondary:[3090],mac:{primary:1042},linux:{primary:1042}}})),e.CursorPageDown=(0,s.fK)(new f({args:{direction:3,unit:2,select:!1,value:-1},id:"cursorPageDown",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:12}})),e.CursorPageDownSelect=(0,s.fK)(new f({args:{direction:3,unit:2,select:!0,value:-1},id:"cursorPageDownSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1036}})),e.CreateCursor=(0,s.fK)(new class extends y{constructor(){super({id:"createCursor",precondition:void 0})}runCoreEditorCommand(e,t){let i;i=t.wholeLine?p.P.line(e,e.getPrimaryCursorState(),!1,t.position,t.viewPosition):p.P.moveTo(e,e.getPrimaryCursorState(),!1,t.position,t.viewPosition);const n=e.getCursorStates();if(n.length>1){const r=i.modelState?i.modelState.position:null,s=i.viewState?i.viewState.position:null;for(let i=0,o=n.length;i<o;i++){const o=n[i];if((!r||o.modelState.selection.containsPosition(r))&&(!s||o.viewState.selection.containsPosition(s)))return n.splice(i,1),e.model.pushStackElement(),void e.setCursorStates(t.source,3,n)}}n.push(i),e.model.pushStackElement(),e.setCursorStates(t.source,3,n)}}),e.LastCursorMoveToSelect=(0,s.fK)(new class extends y{constructor(){super({id:"_lastCursorMoveToSelect",precondition:void 0})}runCoreEditorCommand(e,t){const i=e.getLastAddedCursorIndex(),n=e.getCursorStates(),r=n.slice(0);r[i]=p.P.moveTo(e,n[i],!0,t.position,t.viewPosition),e.model.pushStackElement(),e.setCursorStates(t.source,3,r)}});class m extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,p.P.moveToBeginningOfLine(e,e.getCursorStates(),this._inSelectionMode)),e.revealPrimaryCursor(t.source,!0)}}e.CursorHome=(0,s.fK)(new m({inSelectionMode:!1,id:"cursorHome",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:14,mac:{primary:14,secondary:[2063]}}})),e.CursorHomeSelect=(0,s.fK)(new m({inSelectionMode:!0,id:"cursorHomeSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1038,mac:{primary:1038,secondary:[3087]}}}));class b extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,this._exec(e.getCursorStates())),e.revealPrimaryCursor(t.source,!0)}_exec(e){const t=[];for(let i=0,n=e.length;i<n;i++){const n=e[i],r=n.modelState.position.lineNumber;t[i]=a.Vi.fromModelState(n.modelState.move(this._inSelectionMode,r,1,0))}return t}}e.CursorLineStart=(0,s.fK)(new b({inSelectionMode:!1,id:"cursorLineStart",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:0,mac:{primary:287}}})),e.CursorLineStartSelect=(0,s.fK)(new b({inSelectionMode:!0,id:"cursorLineStartSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:0,mac:{primary:1311}}}));class v extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,p.P.moveToEndOfLine(e,e.getCursorStates(),this._inSelectionMode,t.sticky||!1)),e.revealPrimaryCursor(t.source,!0)}}e.CursorEnd=(0,s.fK)(new v({inSelectionMode:!1,id:"cursorEnd",precondition:void 0,kbOpts:{args:{sticky:!1},weight:0,kbExpr:_.u.textInputFocus,primary:13,mac:{primary:13,secondary:[2065]}},description:{description:"Go to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:n.N("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}})),e.CursorEndSelect=(0,s.fK)(new v({inSelectionMode:!0,id:"cursorEndSelect",precondition:void 0,kbOpts:{args:{sticky:!1},weight:0,kbExpr:_.u.textInputFocus,primary:1037,mac:{primary:1037,secondary:[3089]}},description:{description:"Select to End",args:[{name:"args",schema:{type:"object",properties:{sticky:{description:n.N("stickydesc","Stick to the end even when going to longer lines"),type:"boolean",default:!1}}}}]}}));class C extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,this._exec(e,e.getCursorStates())),e.revealPrimaryCursor(t.source,!0)}_exec(e,t){const i=[];for(let n=0,r=t.length;n<r;n++){const r=t[n],s=r.modelState.position.lineNumber,o=e.model.getLineMaxColumn(s);i[n]=a.Vi.fromModelState(r.modelState.move(this._inSelectionMode,s,o,0))}return i}}e.CursorLineEnd=(0,s.fK)(new C({inSelectionMode:!1,id:"cursorLineEnd",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:0,mac:{primary:291}}})),e.CursorLineEndSelect=(0,s.fK)(new C({inSelectionMode:!0,id:"cursorLineEndSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:0,mac:{primary:1315}}}));class S extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,p.P.moveToBeginningOfBuffer(e,e.getCursorStates(),this._inSelectionMode)),e.revealPrimaryCursor(t.source,!0)}}e.CursorTop=(0,s.fK)(new S({inSelectionMode:!1,id:"cursorTop",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2062,mac:{primary:2064}}})),e.CursorTopSelect=(0,s.fK)(new S({inSelectionMode:!0,id:"cursorTopSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3086,mac:{primary:3088}}}));class k extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,p.P.moveToEndOfBuffer(e,e.getCursorStates(),this._inSelectionMode)),e.revealPrimaryCursor(t.source,!0)}}e.CursorBottom=(0,s.fK)(new k({inSelectionMode:!1,id:"cursorBottom",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2061,mac:{primary:2066}}})),e.CursorBottomSelect=(0,s.fK)(new k({inSelectionMode:!0,id:"cursorBottomSelect",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:3085,mac:{primary:3090}}}));class x extends y{constructor(){super({id:"editorScroll",precondition:void 0,description:h.description})}runCoreEditorCommand(e,t){const i=h.parse(t);i&&this._runEditorScroll(e,t.source,i)}_runEditorScroll(e,t,i){const n=this._computeDesiredScrollTop(e,i);if(i.revealCursor){const r=e.getCompletelyVisibleViewRangeAtScrollTop(n);e.setCursorStates(t,3,[p.P.findPositionInViewportIfOutside(e,e.getPrimaryCursorState(),r,i.select)])}e.setScrollTop(n,0)}_computeDesiredScrollTop(e,t){if(1===t.unit){const i=e.getCompletelyVisibleViewRange(),n=e.coordinatesConverter.convertViewRangeToModelRange(i);let r;r=1===t.direction?Math.max(1,n.startLineNumber-t.value):Math.min(e.model.getLineCount(),n.startLineNumber+t.value);const s=e.coordinatesConverter.convertModelPositionToViewPosition(new l.L(r,1));return e.getVerticalOffsetForLineNumber(s.lineNumber)}let i;i=3===t.unit?e.cursorConfig.pageSize*t.value:4===t.unit?Math.round(e.cursorConfig.pageSize/2)*t.value:t.value;const n=(1===t.direction?-1:1)*i;return e.getScrollTop()+n*e.cursorConfig.lineHeight}}e.EditorScrollImpl=x,e.EditorScroll=(0,s.fK)(new x),e.ScrollLineUp=(0,s.fK)(new class extends y{constructor(){super({id:"scrollLineUp",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2064,mac:{primary:267}}})}runCoreEditorCommand(t,i){e.EditorScroll._runEditorScroll(t,i.source,{direction:1,unit:2,value:1,revealCursor:!1,select:!1})}}),e.ScrollPageUp=(0,s.fK)(new class extends y{constructor(){super({id:"scrollPageUp",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2059,win:{primary:523},linux:{primary:523}}})}runCoreEditorCommand(t,i){e.EditorScroll._runEditorScroll(t,i.source,{direction:1,unit:3,value:1,revealCursor:!1,select:!1})}}),e.ScrollLineDown=(0,s.fK)(new class extends y{constructor(){super({id:"scrollLineDown",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2066,mac:{primary:268}}})}runCoreEditorCommand(t,i){e.EditorScroll._runEditorScroll(t,i.source,{direction:2,unit:2,value:1,revealCursor:!1,select:!1})}}),e.ScrollPageDown=(0,s.fK)(new class extends y{constructor(){super({id:"scrollPageDown",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2060,win:{primary:524},linux:{primary:524}}})}runCoreEditorCommand(t,i){e.EditorScroll._runEditorScroll(t,i.source,{direction:2,unit:3,value:1,revealCursor:!1,select:!1})}});class L extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[p.P.word(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position)]),e.revealPrimaryCursor(t.source,!0)}}e.WordSelect=(0,s.fK)(new L({inSelectionMode:!1,id:"_wordSelect",precondition:void 0})),e.WordSelectDrag=(0,s.fK)(new L({inSelectionMode:!0,id:"_wordSelectDrag",precondition:void 0})),e.LastCursorWordSelect=(0,s.fK)(new class extends y{constructor(){super({id:"lastCursorWordSelect",precondition:void 0})}runCoreEditorCommand(e,t){const i=e.getLastAddedCursorIndex(),n=e.getCursorStates(),r=n.slice(0),s=n[i];r[i]=p.P.word(e,s,s.modelState.hasSelection(),t.position),e.model.pushStackElement(),e.setCursorStates(t.source,3,r)}});class M extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[p.P.line(e,e.getPrimaryCursorState(),this._inSelectionMode,t.position,t.viewPosition)]),e.revealPrimaryCursor(t.source,!1)}}e.LineSelect=(0,s.fK)(new M({inSelectionMode:!1,id:"_lineSelect",precondition:void 0})),e.LineSelectDrag=(0,s.fK)(new M({inSelectionMode:!0,id:"_lineSelectDrag",precondition:void 0}));class D extends y{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode}runCoreEditorCommand(e,t){const i=e.getLastAddedCursorIndex(),n=e.getCursorStates(),r=n.slice(0);r[i]=p.P.line(e,n[i],this._inSelectionMode,t.position,t.viewPosition),e.model.pushStackElement(),e.setCursorStates(t.source,3,r)}}e.LastCursorLineSelect=(0,s.fK)(new D({inSelectionMode:!1,id:"lastCursorLineSelect",precondition:void 0})),e.LastCursorLineSelectDrag=(0,s.fK)(new D({inSelectionMode:!0,id:"lastCursorLineSelectDrag",precondition:void 0})),e.ExpandLineSelection=(0,s.fK)(new class extends y{constructor(){super({id:"expandLineSelection",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:2090}})}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,p.P.expandLineSelection(e,e.getCursorStates())),e.revealPrimaryCursor(t.source,!0)}}),e.CancelSelection=(0,s.fK)(new class extends y{constructor(){super({id:"cancelSelection",precondition:_.u.hasNonEmptySelection,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[p.P.cancelSelection(e,e.getPrimaryCursorState())]),e.revealPrimaryCursor(t.source,!0)}}),e.RemoveSecondaryCursors=(0,s.fK)(new class extends y{constructor(){super({id:"removeSecondaryCursors",precondition:_.u.hasMultipleSelections,kbOpts:{weight:1,kbExpr:_.u.textInputFocus,primary:9,secondary:[1033]}})}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[e.getPrimaryCursorState()]),e.revealPrimaryCursor(t.source,!0)}}),e.RevealLine=(0,s.fK)(new class extends y{constructor(){super({id:"revealLine",precondition:void 0,description:u.description})}runCoreEditorCommand(e,t){const i=t;let n=(i.lineNumber||0)+1;n<1&&(n=1);const r=e.model.getLineCount();n>r&&(n=r);const s=new c.e(n,1,n,e.model.getLineMaxColumn(n));let o=0;if(i.at)switch(i.at){case u.RawAtArgument.Top:o=3;break;case u.RawAtArgument.Center:o=1;break;case u.RawAtArgument.Bottom:o=4}const a=e.coordinatesConverter.convertModelRangeToViewRange(s);e.revealRange(t.source,!1,a,o,0)}}),e.SelectAll=new class extends w{constructor(){super(s.Sq)}runDOMCommand(){document.execCommand("selectAll")}runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditorCommand(n,i)}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates("keyboard",3,[p.P.selectAll(e,e.getPrimaryCursorState())])}},e.SetSelection=(0,s.fK)(new class extends y{constructor(){super({id:"setSelection",precondition:void 0})}runCoreEditorCommand(e,t){e.model.pushStackElement(),e.setCursorStates(t.source,3,[a.Vi.fromModelSelection(t.selection)])}})}(g||(g={}));const C=b.Ao.and(_.u.textInputFocus,_.u.columnSelection);function S(e,t){v.W.registerKeybindingRule({id:e,primary:t,when:C,weight:1})}function k(e){return e.register(),e}var x;S(g.CursorColumnSelectLeft.id,1039),S(g.CursorColumnSelectRight.id,1041),S(g.CursorColumnSelectUp.id,1040),S(g.CursorColumnSelectPageUp.id,1035),S(g.CursorColumnSelectDown.id,1042),S(g.CursorColumnSelectPageDown.id,1036),function(e){class t extends s._l{runEditorCommand(e,t,i){const n=t._getViewModel();n&&this.runCoreEditingCommand(t,n,i||{})}}e.CoreEditingCommand=t,e.LineBreakInsert=(0,s.fK)(new class extends t{constructor(){super({id:"lineBreakInsert",precondition:_.u.writable,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:0,mac:{primary:301}}})}runCoreEditingCommand(e,t,i){e.pushUndoStop(),e.executeCommands(this.id,m.u.lineBreakInsert(t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection))))}}),e.Outdent=(0,s.fK)(new class extends t{constructor(){super({id:"outdent",precondition:_.u.writable,kbOpts:{weight:0,kbExpr:b.Ao.and(_.u.editorTextFocus,_.u.tabDoesNotMoveFocus),primary:1026}})}runCoreEditingCommand(e,t,i){e.pushUndoStop(),e.executeCommands(this.id,m.u.outdent(t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)))),e.pushUndoStop()}}),e.Tab=(0,s.fK)(new class extends t{constructor(){super({id:"tab",precondition:_.u.writable,kbOpts:{weight:0,kbExpr:b.Ao.and(_.u.editorTextFocus,_.u.tabDoesNotMoveFocus),primary:2}})}runCoreEditingCommand(e,t,i){e.pushUndoStop(),e.executeCommands(this.id,m.u.tab(t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)))),e.pushUndoStop()}}),e.DeleteLeft=(0,s.fK)(new class extends t{constructor(){super({id:"deleteLeft",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:1,secondary:[1025],mac:{primary:1,secondary:[1025,294,257]}}})}runCoreEditingCommand(e,t,i){const[n,r]=f.A.deleteLeft(t.getPrevEditOperationType(),t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)));n&&e.pushUndoStop(),e.executeCommands(this.id,r),t.setPrevEditOperationType(2)}}),e.DeleteRight=(0,s.fK)(new class extends t{constructor(){super({id:"deleteRight",precondition:void 0,kbOpts:{weight:0,kbExpr:_.u.textInputFocus,primary:20,mac:{primary:20,secondary:[290,276]}}})}runCoreEditingCommand(e,t,i){const[n,r]=f.A.deleteRight(t.getPrevEditOperationType(),t.cursorConfig,t.model,t.getCursorStates().map((e=>e.modelState.selection)));n&&e.pushUndoStop(),e.executeCommands(this.id,r),t.setPrevEditOperationType(3)}}),e.Undo=new class extends w{constructor(){super(s.n_)}runDOMCommand(){document.execCommand("undo")}runEditorCommand(e,t,i){t.hasModel()&&!0!==t.getOption(72)&&t.getModel().undo()}},e.Redo=new class extends w{constructor(){super(s.kz)}runDOMCommand(){document.execCommand("redo")}runEditorCommand(e,t,i){t.hasModel()&&!0!==t.getOption(72)&&t.getModel().redo()}}}(x||(x={}));class L extends s.mY{constructor(e,t,i){super({id:e,precondition:void 0,description:i}),this._handlerId=t}runCommand(e,t){const i=e.get(o.$).getFocusedCodeEditor();i&&i.trigger("keyboard",this._handlerId,t)}}function M(e,t){k(new L("default:"+e,e)),k(new L(e,e,t))}M("type",{description:"Type",args:[{name:"args",schema:{type:"object",required:["text"],properties:{text:{type:"string"}}}}]}),M("replacePreviousChar"),M("compositionStart"),M("compositionEnd"),M("paste"),M("cut")},35715:(e,t,i)=>{"use strict";i.d(t,{RA:()=>f,Nl:()=>p,Fz:()=>m});var n=i(16268),r=i(65321),s=i(15393),o=i(4669),a=i(5976),l=i(1432),c=i(97295),d=i(15887),h=i(50187),u=i(3860),g=i(10161);const f={forceCopyWithSyntaxHighlighting:!1};class p{constructor(){this._lastState=null}set(e,t){this._lastState={lastCopiedValue:e,data:t}}get(e){return this._lastState&&this._lastState.lastCopiedValue===e?this._lastState.data:(this._lastState=null,null)}}p.INSTANCE=new p;class m extends a.JT{constructor(e,t){super(),this.textArea=t,this._onFocus=this._register(new o.Q5),this.onFocus=this._onFocus.event,this._onBlur=this._register(new o.Q5),this.onBlur=this._onBlur.event,this._onKeyDown=this._register(new o.Q5),this.onKeyDown=this._onKeyDown.event,this._onKeyUp=this._register(new o.Q5),this.onKeyUp=this._onKeyUp.event,this._onCut=this._register(new o.Q5),this.onCut=this._onCut.event,this._onPaste=this._register(new o.Q5),this.onPaste=this._onPaste.event,this._onType=this._register(new o.Q5),this.onType=this._onType.event,this._onCompositionStart=this._register(new o.Q5),this.onCompositionStart=this._onCompositionStart.event,this._onCompositionUpdate=this._register(new o.Q5),this.onCompositionUpdate=this._onCompositionUpdate.event,this._onCompositionEnd=this._register(new o.Q5),this.onCompositionEnd=this._onCompositionEnd.event,this._onSelectionChangeRequest=this._register(new o.Q5),this.onSelectionChangeRequest=this._onSelectionChangeRequest.event,this._host=e,this._textArea=this._register(new b(t)),this._asyncTriggerCut=this._register(new s.pY((()=>this._onCut.fire()),0)),this._textAreaState=d.u.EMPTY,this._selectionChangeListener=null,this.writeScreenReaderContent("ctor"),this._hasFocus=!1,this._isDoingComposition=!1,this._nextCommand=0;let i=null;this._register(r.mu(t.domNode,"keydown",(e=>{(109===e.keyCode||this._isDoingComposition&&1===e.keyCode)&&e.stopPropagation(),e.equals(9)&&e.preventDefault(),i=e,this._onKeyDown.fire(e)}))),this._register(r.mu(t.domNode,"keyup",(e=>{this._onKeyUp.fire(e)}))),this._register(r.nm(t.domNode,"compositionstart",(e=>{if(this._isDoingComposition)return;this._isDoingComposition=!0;let t=!1;l.dz&&i&&i.equals(109)&&this._textAreaState.selectionStart===this._textAreaState.selectionEnd&&this._textAreaState.selectionStart>0&&this._textAreaState.value.substr(this._textAreaState.selectionStart-1,1)===e.data&&("ArrowRight"!==i.code&&"ArrowLeft"!==i.code||(t=!0)),t?this._textAreaState=new d.u(this._textAreaState.value,this._textAreaState.selectionStart-1,this._textAreaState.selectionEnd,this._textAreaState.selectionStartPosition?new h.L(this._textAreaState.selectionStartPosition.lineNumber,this._textAreaState.selectionStartPosition.column-1):null,this._textAreaState.selectionEndPosition):n.un||this._setAndWriteTextAreaState("compositionstart",d.u.EMPTY),this._onCompositionStart.fire({moveOneCharacterLeft:t})})));const a=e=>{const t=this._textAreaState,i=d.u.readFromTextArea(this._textArea);return[i,d.u.deduceInput(t,i,e)]},u=e=>{const t=this._textAreaState,i=d.u.selectedText(e);return[i,{text:i.value,replaceCharCnt:t.selectionEnd-t.selectionStart}]},g=e=>!(!n.un||"ja"!==e);this._register(r.nm(t.domNode,"compositionupdate",(e=>{if(g(e.locale)){const[t,i]=a(!1);return this._textAreaState=t,this._onType.fire(i),void this._onCompositionUpdate.fire(e)}const[t,i]=u(e.data||"");this._textAreaState=t,this._onType.fire(i),this._onCompositionUpdate.fire(e)}))),this._register(r.nm(t.domNode,"compositionend",(e=>{if(this._isDoingComposition){if(g(e.locale)){const[e,t]=a(!1);this._textAreaState=e,this._onType.fire(t)}else{const[t,i]=u(e.data||"");this._textAreaState=t,this._onType.fire(i)}(n.un||n.i7)&&(this._textAreaState=d.u.readFromTextArea(this._textArea)),this._isDoingComposition&&(this._isDoingComposition=!1,this._onCompositionEnd.fire())}}))),this._register(r.nm(t.domNode,"input",(()=>{if(this._textArea.setIgnoreSelectionChangeTime("received input event"),this._isDoingComposition)return;const[e,t]=a(l.dz);0===t.replaceCharCnt&&1===t.text.length&&c.ZG(t.text.charCodeAt(0))||(this._textAreaState=e,0===this._nextCommand?""!==t.text&&this._onType.fire(t):(""===t.text&&0===t.replaceCharCnt||this._firePaste(t.text,null),this._nextCommand=0))}))),this._register(r.nm(t.domNode,"cut",(e=>{this._textArea.setIgnoreSelectionChangeTime("received cut event"),this._ensureClipboardGetsEditorSelection(e),this._asyncTriggerCut.schedule()}))),this._register(r.nm(t.domNode,"copy",(e=>{this._ensureClipboardGetsEditorSelection(e)}))),this._register(r.nm(t.domNode,"paste",(e=>{if(this._textArea.setIgnoreSelectionChangeTime("received paste event"),_.canUseTextData(e)){const[t,i]=_.getTextData(e);""!==t&&this._firePaste(t,i)}else this._textArea.getSelectionStart()!==this._textArea.getSelectionEnd()&&this._setAndWriteTextAreaState("paste",d.u.EMPTY),this._nextCommand=1}))),this._register(r.nm(t.domNode,"focus",(()=>{this._setHasFocus(!0)}))),this._register(r.nm(t.domNode,"blur",(()=>{this._setHasFocus(!1)})))}_installSelectionChangeListener(){let e=0;return r.nm(document,"selectionchange",(t=>{if(!this._hasFocus)return;if(this._isDoingComposition)return;if(!n.i7)return;const i=Date.now(),r=i-e;if(e=i,r<5)return;const s=i-this._textArea.getIgnoreSelectionChangeTime();if(this._textArea.resetSelectionChangeTime(),s<100)return;if(!this._textAreaState.selectionStartPosition||!this._textAreaState.selectionEndPosition)return;const o=this._textArea.getValue();if(this._textAreaState.value!==o)return;const a=this._textArea.getSelectionStart(),l=this._textArea.getSelectionEnd();if(this._textAreaState.selectionStart===a&&this._textAreaState.selectionEnd===l)return;const c=this._textAreaState.deduceEditorPosition(a),d=this._host.deduceModelPosition(c[0],c[1],c[2]),h=this._textAreaState.deduceEditorPosition(l),g=this._host.deduceModelPosition(h[0],h[1],h[2]),f=new u.Y(d.lineNumber,d.column,g.lineNumber,g.column);this._onSelectionChangeRequest.fire(f)}))}dispose(){super.dispose(),this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null)}focusTextArea(){this._setHasFocus(!0),this.refreshFocusState()}isFocused(){return this._hasFocus}refreshFocusState(){const e=r.Ay(this.textArea.domNode);e?this._setHasFocus(e.activeElement===this.textArea.domNode):r.Uw(this.textArea.domNode)?this._setHasFocus(document.activeElement===this.textArea.domNode):this._setHasFocus(!1)}_setHasFocus(e){this._hasFocus!==e&&(this._hasFocus=e,this._selectionChangeListener&&(this._selectionChangeListener.dispose(),this._selectionChangeListener=null),this._hasFocus&&(this._selectionChangeListener=this._installSelectionChangeListener()),this._hasFocus&&(n.un?this._setAndWriteTextAreaState("focusgain",d.u.EMPTY):this.writeScreenReaderContent("focusgain")),this._hasFocus?this._onFocus.fire():this._onBlur.fire())}_setAndWriteTextAreaState(e,t){this._hasFocus||(t=t.collapseSelection()),t.writeToTextArea(e,this._textArea,this._hasFocus),this._textAreaState=t}writeScreenReaderContent(e){this._isDoingComposition||this._setAndWriteTextAreaState(e,this._host.getScreenReaderContent(this._textAreaState))}_ensureClipboardGetsEditorSelection(e){const t=this._host.getDataToCopy(_.canUseTextData(e)&&g.D.clipboard.richText),i={version:1,isFromEmptySelection:t.isFromEmptySelection,multicursorText:t.multicursorText,mode:t.mode};p.INSTANCE.set(n.vU?t.text.replace(/\r\n/g,"\n"):t.text,i),_.canUseTextData(e)?_.setTextData(e,t.text,t.html,i):this._setAndWriteTextAreaState("copy or cut",d.u.selectedText(t.text))}_firePaste(e,t){t||(t=p.INSTANCE.get(e)),this._onPaste.fire({text:e,metadata:t})}}class _{static canUseTextData(e){return!!e.clipboardData||!!window.clipboardData}static getTextData(e){if(e.clipboardData){e.preventDefault();const t=e.clipboardData.getData("text/plain");let i=null;const n=e.clipboardData.getData("vscode-editor-data");if("string"==typeof n)try{i=JSON.parse(n),1!==i.version&&(i=null)}catch(e){}return[t,i]}if(window.clipboardData)return e.preventDefault(),[window.clipboardData.getData("Text"),null];throw new Error("ClipboardEventUtils.getTextData: Cannot use text data!")}static setTextData(e,t,i,n){if(e.clipboardData)return e.clipboardData.setData("text/plain",t),"string"==typeof i&&e.clipboardData.setData("text/html",i),e.clipboardData.setData("vscode-editor-data",JSON.stringify(n)),void e.preventDefault();if(window.clipboardData)return window.clipboardData.setData("Text",t),void e.preventDefault();throw new Error("ClipboardEventUtils.setTextData: Cannot use text data!")}}class b extends a.JT{constructor(e){super(),this._actual=e,this._ignoreSelectionChangeTime=0}setIgnoreSelectionChangeTime(e){this._ignoreSelectionChangeTime=Date.now()}getIgnoreSelectionChangeTime(){return this._ignoreSelectionChangeTime}resetSelectionChangeTime(){this._ignoreSelectionChangeTime=0}getValue(){return this._actual.domNode.value}setValue(e,t){const i=this._actual.domNode;i.value!==t&&(this.setIgnoreSelectionChangeTime("setValue"),i.value=t)}getSelectionStart(){return this._actual.domNode.selectionStart}getSelectionEnd(){return this._actual.domNode.selectionEnd}setSelectionRange(e,t,i){const s=this._actual.domNode;let o=null;const a=r.Ay(s);o=a?a.activeElement:document.activeElement;const l=o===s,c=s.selectionStart,d=s.selectionEnd;if(l&&c===t&&d===i)n.vU&&window.parent!==window&&s.focus();else{if(l)return this.setIgnoreSelectionChangeTime("setSelectionRange"),s.setSelectionRange(t,i),void(n.vU&&window.parent!==window&&s.focus());try{const e=r.vL(s);this.setIgnoreSelectionChangeTime("setSelectionRange"),s.focus(),s.setSelectionRange(t,i),r._0(s,e)}catch(e){}}}}},15887:(e,t,i)=>{"use strict";i.d(t,{u:()=>o,e:()=>a});var n=i(97295),r=i(50187),s=i(24314);class o{constructor(e,t,i,n,r){this.value=e,this.selectionStart=t,this.selectionEnd=i,this.selectionStartPosition=n,this.selectionEndPosition=r}toString(){return"[ <"+this.value+">, selectionStart: "+this.selectionStart+", selectionEnd: "+this.selectionEnd+"]"}static readFromTextArea(e){return new o(e.getValue(),e.getSelectionStart(),e.getSelectionEnd(),null,null)}collapseSelection(){return new o(this.value,this.value.length,this.value.length,null,null)}writeToTextArea(e,t,i){t.setValue(e,this.value),i&&t.setSelectionRange(e,this.selectionStart,this.selectionEnd)}deduceEditorPosition(e){if(e<=this.selectionStart){const t=this.value.substring(e,this.selectionStart);return this._finishDeduceEditorPosition(this.selectionStartPosition,t,-1)}if(e>=this.selectionEnd){const t=this.value.substring(this.selectionEnd,e);return this._finishDeduceEditorPosition(this.selectionEndPosition,t,1)}const t=this.value.substring(this.selectionStart,e);if(-1===t.indexOf(String.fromCharCode(8230)))return this._finishDeduceEditorPosition(this.selectionStartPosition,t,1);const i=this.value.substring(e,this.selectionEnd);return this._finishDeduceEditorPosition(this.selectionEndPosition,i,-1)}_finishDeduceEditorPosition(e,t,i){let n=0,r=-1;for(;-1!==(r=t.indexOf("\n",r+1));)n++;return[e,i*t.length,n]}static selectedText(e){return new o(e,0,e.length,null,null)}static deduceInput(e,t,i){if(!e)return{text:"",replaceCharCnt:0};let r=e.value,s=e.selectionStart,o=e.selectionEnd,a=t.value,l=t.selectionStart,c=t.selectionEnd;const d=r.substring(o),h=a.substring(c),u=n.P1(d,h);a=a.substring(0,a.length-u),r=r.substring(0,r.length-u);const g=r.substring(0,s),f=a.substring(0,l),p=n.Mh(g,f);if(a=a.substring(p),r=r.substring(p),l-=p,s-=p,c-=p,o-=p,i&&l===c&&r.length>0){let e=null;if(l===a.length?n.Ny(a,r)&&(e=a.substring(r.length)):n.pn(a,r)&&(e=a.substring(0,a.length-r.length)),null!==e&&e.length>0&&(/\uFE0F/.test(e)||n.RP(e)))return{text:e,replaceCharCnt:0}}return l===c?r===a&&0===s&&o===r.length&&l===a.length&&-1===a.indexOf("\n")&&n.xe(a)?{text:"",replaceCharCnt:0}:{text:a,replaceCharCnt:g.length-p}:{text:a,replaceCharCnt:o-s}}}o.EMPTY=new o("",0,0,null,null);class a{static _getPageOfLine(e,t){return Math.floor((e-1)/t)}static _getRangeForPage(e,t){const i=e*t,n=i+1,r=i+t;return new s.e(n,1,r+1,1)}static fromEditorSelection(e,t,i,n,l){const c=a._getPageOfLine(i.startLineNumber,n),d=a._getRangeForPage(c,n),h=a._getPageOfLine(i.endLineNumber,n),u=a._getRangeForPage(h,n),g=d.intersectRanges(new s.e(1,1,i.startLineNumber,i.startColumn));let f=t.getValueInRange(g,1);const p=t.getLineCount(),m=t.getLineMaxColumn(p),_=u.intersectRanges(new s.e(i.endLineNumber,i.endColumn,p,m));let b,v=t.getValueInRange(_,1);if(c===h||c+1===h)b=t.getValueInRange(i,1);else{const e=d.intersectRanges(i),n=u.intersectRanges(i);b=t.getValueInRange(e,1)+String.fromCharCode(8230)+t.getValueInRange(n,1)}if(l){const e=500;f.length>e&&(f=f.substring(f.length-e,f.length)),v.length>e&&(v=v.substring(0,e)),b.length>2*e&&(b=b.substring(0,e)+String.fromCharCode(8230)+b.substring(b.length-e,b.length))}return new o(f+b+v,f.length,f.length+b.length,new r.L(i.startLineNumber,i.startColumn),new r.L(i.endLineNumber,i.endColumn))}}},39925:(e,t,i)=>{"use strict";i.d(t,{yy:()=>p,Dl:()=>m,ZF:()=>b,YQ:()=>_});var n=i(97295),r=i(24314),s=i(71050),o=i(5976),a=i(16830),l=i(38819),c=i(91741),d=i(72065),h=i(65026);const u=(0,d.yh)("IEditorCancelService"),g=new l.uy("cancellableOperation",!1);(0,h.z)(u,class{constructor(){this._tokens=new WeakMap}add(e,t){let i,n=this._tokens.get(e);return n||(n=e.invokeWithinContext((e=>({key:g.bindTo(e.get(l.i6)),tokens:new c.S}))),this._tokens.set(e,n)),n.key.set(!0),i=n.tokens.push(t),()=>{i&&(i(),n.key.set(!n.tokens.isEmpty()),i=void 0)}}cancel(e){const t=this._tokens.get(e);if(!t)return;const i=t.tokens.pop();i&&(i.cancel(),t.key.set(!t.tokens.isEmpty()))}},!0);class f extends s.A{constructor(e,t){super(t),this.editor=e,this._unregister=e.invokeWithinContext((t=>t.get(u).add(e,this)))}dispose(){this._unregister(),super.dispose()}}(0,a.fK)(new class extends a._l{constructor(){super({id:"editor.cancelOperation",kbOpts:{weight:100,primary:9},precondition:g})}runEditorCommand(e,t){e.get(u).cancel(t)}});class p{constructor(e,t){if(this.flags=t,0!=(1&this.flags)){const t=e.getModel();this.modelVersionId=t?n.WU("{0}#{1}",t.uri.toString(),t.getVersionId()):null}else this.modelVersionId=null;0!=(4&this.flags)?this.position=e.getPosition():this.position=null,0!=(2&this.flags)?this.selection=e.getSelection():this.selection=null,0!=(8&this.flags)?(this.scrollLeft=e.getScrollLeft(),this.scrollTop=e.getScrollTop()):(this.scrollLeft=-1,this.scrollTop=-1)}_equals(e){if(!(e instanceof p))return!1;const t=e;return this.modelVersionId===t.modelVersionId&&this.scrollLeft===t.scrollLeft&&this.scrollTop===t.scrollTop&&!(!this.position&&t.position||this.position&&!t.position||this.position&&t.position&&!this.position.equals(t.position))&&!(!this.selection&&t.selection||this.selection&&!t.selection||this.selection&&t.selection&&!this.selection.equalsRange(t.selection))}validate(e){return this._equals(new p(e,this.flags))}}class m extends f{constructor(e,t,i,n){super(e,n),this.editor=e,this._listener=new o.SL,4&t&&this._listener.add(e.onDidChangeCursorPosition((e=>{i&&r.e.containsPosition(i,e.position)||this.cancel()}))),2&t&&this._listener.add(e.onDidChangeCursorSelection((e=>{i&&r.e.containsRange(i,e.selection)||this.cancel()}))),8&t&&this._listener.add(e.onDidScrollChange((e=>this.cancel()))),1&t&&(this._listener.add(e.onDidChangeModel((e=>this.cancel()))),this._listener.add(e.onDidChangeModelContent((e=>this.cancel()))))}dispose(){this._listener.dispose(),super.dispose()}}class _ extends s.A{constructor(e,t){super(t),this._listener=e.onDidChangeContent((()=>this.cancel()))}dispose(){this._listener.dispose(),super.dispose()}}class b{constructor(e,t,i){this._visiblePosition=e,this._visiblePositionScrollDelta=t,this._cursorPosition=i}static capture(e){let t=null,i=0;if(0!==e.getScrollTop()){const n=e.getVisibleRanges();if(n.length>0){t=n[0].getStartPosition();const r=e.getTopForPosition(t.lineNumber,t.column);i=e.getScrollTop()-r}}return new b(t,i,e.getPosition())}restore(e){if(this._visiblePosition){const t=e.getTopForPosition(this._visiblePosition.lineNumber,this._visiblePosition.column);e.setScrollTop(t+this._visiblePositionScrollDelta)}}restoreRelativeVerticalPositionOfCursor(e){const t=e.getPosition();if(!this._cursorPosition||!t)return;const i=e.getTopForLineNumber(t.lineNumber)-e.getTopForLineNumber(this._cursorPosition.lineNumber);e.setScrollTop(e.getScrollTop()+i)}}},65520:(e,t,i)=>{"use strict";i.d(t,{CL:()=>r,QI:()=>s,Pi:()=>o});var n=i(96518);function r(e){return!(!e||"function"!=typeof e.getEditorType)&&e.getEditorType()===n.g.ICodeEditor}function s(e){return!(!e||"function"!=typeof e.getEditorType)&&e.getEditorType()===n.g.IDiffEditor}function o(e){return r(e)?e:s(e)?e.getModifiedEditor():null}},16830:(e,t,i)=>{"use strict";i.d(t,{mY:()=>b,AJ:()=>v,_l:()=>w,R6:()=>C,jY:()=>S,_h:()=>k,kT:()=>x,sb:()=>L,f:()=>M,fK:()=>D,Qr:()=>N,rn:()=>E,QG:()=>T,_K:()=>I,Uc:()=>n,n_:()=>R,kz:()=>P,Sq:()=>F});var n,r=i(63580),s=i(17301),o=i(70666),a=i(11640),l=i(50187),c=i(51200),d=i(88216),h=i(84144),u=i(94565),g=i(38819),f=i(49989),p=i(89872),m=i(10829),_=i(98401);class b{constructor(e){this.id=e.id,this.precondition=e.precondition,this._kbOpts=e.kbOpts,this._menuOpts=e.menuOpts,this._description=e.description}register(){if(Array.isArray(this._menuOpts)?this._menuOpts.forEach(this._registerMenuItem,this):this._menuOpts&&this._registerMenuItem(this._menuOpts),this._kbOpts){let e=this._kbOpts.kbExpr;this.precondition&&(e=e?g.Ao.and(e,this.precondition):this.precondition),f.W.registerCommandAndKeybindingRule({id:this.id,handler:(e,t)=>this.runCommand(e,t),weight:this._kbOpts.weight,args:this._kbOpts.args,when:e,primary:this._kbOpts.primary,secondary:this._kbOpts.secondary,win:this._kbOpts.win,linux:this._kbOpts.linux,mac:this._kbOpts.mac,description:this._description})}else u.P.registerCommand({id:this.id,handler:(e,t)=>this.runCommand(e,t),description:this._description})}_registerMenuItem(e){h.BH.appendMenuItem(e.menuId,{group:e.group,command:{id:this.id,title:e.title,icon:e.icon},when:e.when,order:e.order})}}class v extends b{constructor(){super(...arguments),this._implementations=[]}addImplementation(e,t){return this._implementations.push([e,t]),this._implementations.sort(((e,t)=>t[0]-e[0])),{dispose:()=>{for(let e=0;e<this._implementations.length;e++)if(this._implementations[e][1]===t)return void this._implementations.splice(e,1)}}}runCommand(e,t){for(const i of this._implementations)if(i[1](e,t))return}}class y extends b{constructor(e,t){super(t),this.command=e}runCommand(e,t){return this.command.runCommand(e,t)}}class w extends b{static bindToContribution(e){return class extends w{constructor(e){super(e),this._callback=e.handler}runEditorCommand(t,i,n){e(i)&&this._callback(e(i),n)}}}runCommand(e,t){const i=e.get(a.$),n=i.getFocusedCodeEditor()||i.getActiveCodeEditor();if(n)return n.invokeWithinContext((e=>{if(e.get(g.i6).contextMatchesRules((0,_.f6)(this.precondition)))return this.runEditorCommand(e,n,t)}))}}class C extends w{constructor(e){super(C.convertOptions(e)),this.label=e.label,this.alias=e.alias}static convertOptions(e){let t;function i(t){return t.menuId||(t.menuId=h.eH.EditorContext),t.title||(t.title=e.label),t.when=g.Ao.and(e.precondition,t.when),t}return t=Array.isArray(e.menuOpts)?e.menuOpts:e.menuOpts?[e.menuOpts]:[],Array.isArray(e.contextMenuOpts)?t.push(...e.contextMenuOpts.map(i)):e.contextMenuOpts&&t.push(i(e.contextMenuOpts)),e.menuOpts=t,e}runEditorCommand(e,t,i){return this.reportTelemetry(e,t),this.run(e,t,i||{})}reportTelemetry(e,t){e.get(m.b).publicLog2("editorActionInvoked",{name:this.label,id:this.id})}}class S extends C{constructor(e){super(e),this._implementations=[]}runEditorCommand(e,t,i){this.reportTelemetry(e,t);for(const t of this._implementations)if(t[1](e,i))return;return this.run(e,t,i||{})}}function k(e,t){u.P.registerCommand(e,((e,i)=>t(e,i||{})))}function x(e,t){k(e,(function(e,i){const{resource:n,position:r}=i;if(!(n instanceof o.o))throw(0,s.b1)("resource");if(!l.L.isIPosition(r))throw(0,s.b1)("position");const a=e.get(c.q).getModel(n);if(a){const e=l.L.lift(r);return t(a,e,i)}return e.get(d.S).createModelReference(n).then((e=>new Promise(((n,s)=>{try{n(t(e.object.textEditorModel,l.L.lift(r),i))}catch(e){s(e)}})).finally((()=>{e.dispose()}))))}))}function L(e,t){u.P.registerCommand(e,(function(e,...i){const[n,r]=i;(0,_.p_)(o.o.isUri(n)),(0,_.p_)(l.L.isIPosition(r));const s=e.get(c.q).getModel(n);if(s){const e=l.L.lift(r);return t(s,e,...i.slice(2))}return e.get(d.S).createModelReference(n).then((e=>new Promise(((n,s)=>{try{n(t(e.object.textEditorModel,l.L.lift(r),i.slice(2)))}catch(e){s(e)}})).finally((()=>{e.dispose()}))))}))}function M(e,t){u.P.registerCommand(e,(function(e,...i){const[n]=i;(0,_.p_)(o.o.isUri(n));const r=e.get(c.q).getModel(n);return r?t(r,...i.slice(1)):e.get(d.S).createModelReference(n).then((e=>new Promise(((n,r)=>{try{n(t(e.object.textEditorModel,i.slice(1)))}catch(e){r(e)}})).finally((()=>{e.dispose()}))))}))}function D(e){return O.INSTANCE.registerEditorCommand(e),e}function N(e){const t=new e;return O.INSTANCE.registerEditorAction(t),t}function E(e){return O.INSTANCE.registerEditorAction(e),e}function T(e){O.INSTANCE.registerEditorAction(e)}function I(e,t){O.INSTANCE.registerEditorContribution(e,t)}!function(e){e.getEditorCommand=function(e){return O.INSTANCE.getEditorCommand(e)},e.getEditorActions=function(){return O.INSTANCE.getEditorActions()},e.getEditorContributions=function(){return O.INSTANCE.getEditorContributions()},e.getSomeEditorContributions=function(e){return O.INSTANCE.getEditorContributions().filter((t=>e.indexOf(t.id)>=0))},e.getDiffEditorContributions=function(){return O.INSTANCE.getDiffEditorContributions()}}(n||(n={}));class O{constructor(){this.editorContributions=[],this.diffEditorContributions=[],this.editorActions=[],this.editorCommands=Object.create(null)}registerEditorContribution(e,t){this.editorContributions.push({id:e,ctor:t})}getEditorContributions(){return this.editorContributions.slice(0)}getDiffEditorContributions(){return this.diffEditorContributions.slice(0)}registerEditorAction(e){e.register(),this.editorActions.push(e)}getEditorActions(){return this.editorActions.slice(0)}registerEditorCommand(e){e.register(),this.editorCommands[e.id]=e}getEditorCommand(e){return this.editorCommands[e]||null}}function A(e){return e.register(),e}O.INSTANCE=new O,p.B.add("editor.contributions",O.INSTANCE);const R=A(new v({id:"undo",precondition:void 0,kbOpts:{weight:0,primary:2104},menuOpts:[{menuId:h.eH.MenubarEditMenu,group:"1_do",title:r.N({key:"miUndo",comment:["&& denotes a mnemonic"]},"&&Undo"),order:1},{menuId:h.eH.CommandPalette,group:"",title:r.N("undo","Undo"),order:1}]}));A(new y(R,{id:"default:undo",precondition:void 0}));const P=A(new v({id:"redo",precondition:void 0,kbOpts:{weight:0,primary:2103,secondary:[3128],mac:{primary:3128}},menuOpts:[{menuId:h.eH.MenubarEditMenu,group:"1_do",title:r.N({key:"miRedo",comment:["&& denotes a mnemonic"]},"&&Redo"),order:2},{menuId:h.eH.CommandPalette,group:"",title:r.N("redo","Redo"),order:1}]}));A(new y(P,{id:"default:redo",precondition:void 0}));const F=A(new v({id:"editor.action.selectAll",precondition:void 0,kbOpts:{weight:0,kbExpr:null,primary:2079},menuOpts:[{menuId:h.eH.MenubarSelectionMenu,group:"1_basic",title:r.N({key:"miSelectAll",comment:["&& denotes a mnemonic"]},"&&Select All"),order:1},{menuId:h.eH.CommandPalette,group:"",title:r.N("selectAll","Select All"),order:1}]}))},66007:(e,t,i)=>{"use strict";i.d(t,{vu:()=>o,fo:()=>a,Gl:()=>l});var n=i(72065),r=i(70666),s=i(98401);const o=(0,n.yh)("IWorkspaceEditService");class a{constructor(e){this.metadata=e}static convert(e){return e.edits.map((e=>{if(t=e,(0,s.Kn)(t)&&r.o.isUri(t.resource)&&(0,s.Kn)(t.edit))return new l(e.resource,e.edit,e.modelVersionId,e.metadata);var t;if(function(e){return(0,s.Kn)(e)&&(Boolean(e.newUri)||Boolean(e.oldUri))}(e))return new c(e.oldUri,e.newUri,e.options,e.metadata);throw new Error("Unsupported edit")}))}}class l extends a{constructor(e,t,i,n){super(n),this.resource=e,this.textEdit=t,this.versionId=i,this.metadata=n}}class c extends a{constructor(e,t,i,n){super(n),this.oldResource=e,this.newResource=t,this.options=i,this.metadata=n}}},11640:(e,t,i)=>{"use strict";i.d(t,{$:()=>n});const n=(0,i(72065).yh)("codeEditorService")},95190:(e,t,i)=>{"use strict";i.d(t,{Gm:()=>Wn});var n=i(63580),r=i(65321),s=i(17301),o=i(4669),a=i(5976),l=i(66663),c=i(89052),d=i(16830),h=i(11640),u=i(3860),g=i(38626),f=i(1432),p=i(10553),m=i(23938),_=i(15393),b=i(16268),v=i(57974);class y{constructor(e,t){this.x=e,this.y=t}toClientCoordinates(){return new w(this.x-r.DI.scrollX,this.y-r.DI.scrollY)}}class w{constructor(e,t){this.clientX=e,this.clientY=t}toPageCoordinates(){return new y(this.clientX+r.DI.scrollX,this.clientY+r.DI.scrollY)}}class C{constructor(e,t,i,n){this.x=e,this.y=t,this.width=i,this.height=n}}function S(e){const t=r.i(e);return new C(t.left,t.top,t.width,t.height)}class k extends m.n{constructor(e,t){super(e),this.pos=new y(this.posx,this.posy),this.editorPos=S(t)}}class x{constructor(e){this._editorViewDomNode=e}_create(e){return new k(e,this._editorViewDomNode)}onContextMenu(e,t){return r.nm(e,"contextmenu",(e=>{t(this._create(e))}))}onMouseUp(e,t){return r.nm(e,"mouseup",(e=>{t(this._create(e))}))}onMouseDown(e,t){return r.nm(e,"mousedown",(e=>{t(this._create(e))}))}onMouseLeave(e,t){return r.j_(e,(e=>{t(this._create(e))}))}onMouseMoveThrottled(e,t,i,n){return r.Y_(e,"mousemove",t,((e,t)=>i(e,this._create(t))),n)}}class L{constructor(e){this._editorViewDomNode=e}_create(e){return new k(e,this._editorViewDomNode)}onPointerUp(e,t){return r.nm(e,"pointerup",(e=>{t(this._create(e))}))}onPointerDown(e,t){return r.nm(e,"pointerdown",(e=>{t(this._create(e))}))}onPointerLeave(e,t){return r.RE(e,(e=>{t(this._create(e))}))}onPointerMoveThrottled(e,t,i,n){return r.Y_(e,"pointermove",t,((e,t)=>i(e,this._create(t))),n)}}class M extends a.JT{constructor(e){super(),this._editorViewDomNode=e,this._globalMouseMoveMonitor=this._register(new v.Z),this._keydownListener=null}startMonitoring(e,t,i,n,s){this._keydownListener=r.mu(document,"keydown",(e=>{e.toKeybinding().isModifierKey()||this._globalMouseMoveMonitor.stopMonitoring(!0)}),!0),this._globalMouseMoveMonitor.startMonitoring(e,t,((e,t)=>i(e,new k(t,this._editorViewDomNode))),n,(()=>{this._keydownListener.dispose(),s()}))}}class D extends a.JT{constructor(){super(),this._shouldRender=!0}shouldRender(){return this._shouldRender}forceShouldRender(){this._shouldRender=!0}setShouldRender(){this._shouldRender=!0}onDidRender(){this._shouldRender=!1}onConfigurationChanged(e){return!1}onCursorStateChanged(e){return!1}onDecorationsChanged(e){return!1}onFlushed(e){return!1}onFocusChanged(e){return!1}onLanguageConfigurationChanged(e){return!1}onLineMappingChanged(e){return!1}onLinesChanged(e){return!1}onLinesDeleted(e){return!1}onLinesInserted(e){return!1}onRevealRangeRequest(e){return!1}onScrollChanged(e){return!1}onThemeChanged(e){return!1}onTokensChanged(e){return!1}onTokensColorsChanged(e){return!1}onZonesChanged(e){return!1}handleEvents(e){let t=!1;for(let i=0,n=e.length;i<n;i++){let n=e[i];switch(n.type){case 0:this.onConfigurationChanged(n)&&(t=!0);break;case 1:this.onCursorStateChanged(n)&&(t=!0);break;case 2:this.onDecorationsChanged(n)&&(t=!0);break;case 3:this.onFlushed(n)&&(t=!0);break;case 4:this.onFocusChanged(n)&&(t=!0);break;case 5:this.onLanguageConfigurationChanged(n)&&(t=!0);break;case 6:this.onLineMappingChanged(n)&&(t=!0);break;case 7:this.onLinesChanged(n)&&(t=!0);break;case 8:this.onLinesDeleted(n)&&(t=!0);break;case 9:this.onLinesInserted(n)&&(t=!0);break;case 10:this.onRevealRangeRequest(n)&&(t=!0);break;case 11:this.onScrollChanged(n)&&(t=!0);break;case 13:this.onTokensChanged(n)&&(t=!0);break;case 12:this.onThemeChanged(n)&&(t=!0);break;case 14:this.onTokensColorsChanged(n)&&(t=!0);break;case 15:this.onZonesChanged(n)&&(t=!0);break;default:console.info("View received unknown event: "),console.info(n)}}t&&(this._shouldRender=!0)}}class N extends D{constructor(e){super(),this._context=e,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}}class E{static write(e,t){g.Z,e.setAttribute("data-mprt",String(t))}static read(e){const t=e.getAttribute("data-mprt");return null===t?0:parseInt(t,10)}static collect(e,t){let i=[],n=0;for(;e&&e!==document.body&&e!==t;)e.nodeType===e.ELEMENT_NODE&&(i[n++]=this.read(e)),e=e.parentElement;const r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=i[n-e-1];return r}}class T extends class{constructor(e,t){this._viewLayout=e,this.viewportData=t,this.scrollWidth=this._viewLayout.getScrollWidth(),this.scrollHeight=this._viewLayout.getScrollHeight(),this.visibleRange=this.viewportData.visibleRange,this.bigNumbersDelta=this.viewportData.bigNumbersDelta;const i=this._viewLayout.getCurrentViewport();this.scrollTop=i.top,this.scrollLeft=i.left,this.viewportWidth=i.width,this.viewportHeight=i.height}getScrolledTopFromAbsoluteTop(e){return e-this.scrollTop}getVerticalOffsetForLineNumber(e){return this._viewLayout.getVerticalOffsetForLineNumber(e)}getDecorationsInViewport(){return this.viewportData.getDecorationsInViewport()}}{constructor(e,t,i){super(e,t),this._viewLines=i}linesVisibleRangesForRange(e,t){return this._viewLines.linesVisibleRangesForRange(e,t)}visibleRangeForPosition(e){return this._viewLines.visibleRangeForPosition(e)}}class I{constructor(e,t,i){this.outsideRenderedLine=e,this.lineNumber=t,this.ranges=i}}class O{constructor(e,t){this.left=Math.round(e),this.width=Math.round(t)}toString(){return`[${this.left},${this.width}]`}}class A{constructor(e,t){this.outsideRenderedLine=e,this.left=Math.round(t)}}class R{constructor(e,t){this.outsideRenderedLine=e,this.ranges=t}}class P{constructor(e,t){this.left=e,this.width=t}toString(){return`[${this.left},${this.width}]`}static compare(e,t){return e.left-t.left}}class F{static _createRange(){return this._handyReadyRange||(this._handyReadyRange=document.createRange()),this._handyReadyRange}static _detachRange(e,t){e.selectNodeContents(t)}static _readClientRects(e,t,i,n,r){const s=this._createRange();try{return s.setStart(e,t),s.setEnd(i,n),s.getClientRects()}catch(e){return null}finally{this._detachRange(s,r)}}static _mergeAdjacentRanges(e){if(1===e.length)return[new O(e[0].left,e[0].width)];e.sort(P.compare);let t=[],i=0,n=e[0].left,r=e[0].width;for(let s=1,o=e.length;s<o;s++){const o=e[s],a=o.left,l=o.width;n+r+.9>=a?r=Math.max(r,a+l-n):(t[i++]=new O(n,r),n=a,r=l)}return t[i++]=new O(n,r),t}static _createHorizontalRangesFromClientRects(e,t){if(!e||0===e.length)return null;const i=[];for(let n=0,r=e.length;n<r;n++){const r=e[n];i[n]=new P(Math.max(0,r.left-t),r.width)}return this._mergeAdjacentRanges(i)}static readHorizontalRanges(e,t,i,n,r,s,o){const a=e.children.length-1;if(0>a)return null;if((t=Math.min(a,Math.max(0,t)))===(n=Math.min(a,Math.max(0,n)))&&i===r&&0===i){const i=e.children[t].getClientRects();return this._createHorizontalRangesFromClientRects(i,s)}t!==n&&n>0&&0===r&&(n--,r=1073741824);let l=e.children[t].firstChild,c=e.children[n].firstChild;if(l&&c||(!l&&0===i&&t>0&&(l=e.children[t-1].firstChild,i=1073741824),!c&&0===r&&n>0&&(c=e.children[n-1].firstChild,r=1073741824)),!l||!c)return null;i=Math.min(l.textContent.length,Math.max(0,i)),r=Math.min(c.textContent.length,Math.max(0,r));const d=this._readClientRects(l,i,c,r,o);return this._createHorizontalRangesFromClientRects(d,s)}}var B=i(92550),W=i(77736),Y=i(97781),H=i(64141);const j=!!f.tY||!(f.IJ||b.vU||b.G6);let V=!0;const z=b.un;class U{constructor(e,t){this._domNode=e,this._clientRectDeltaLeft=0,this._clientRectDeltaLeftRead=!1,this.endNode=t}get clientRectDeltaLeft(){return this._clientRectDeltaLeftRead||(this._clientRectDeltaLeftRead=!0,this._clientRectDeltaLeft=this._domNode.getBoundingClientRect().left),this._clientRectDeltaLeft}}class ${constructor(e,t){this.themeType=t;const i=e.options,n=i.get(36);this.renderWhitespace=i.get(80),this.renderControlCharacters=i.get(74),this.spaceWidth=n.spaceWidth,this.middotWidth=n.middotWidth,this.wsmiddotWidth=n.wsmiddotWidth,this.useMonospaceOptimizations=n.isMonospace&&!i.get(24),this.canUseHalfwidthRightwardsArrow=n.canUseHalfwidthRightwardsArrow,this.lineHeight=i.get(51),this.stopRenderingLineAfter=i.get(95),this.fontLigatures=i.get(37)}equals(e){return this.themeType===e.themeType&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineHeight===e.lineHeight&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.fontLigatures===e.fontLigatures}}class K{constructor(e){this._options=e,this._isMaybeInvalid=!0,this._renderedViewLine=null}getDomNode(){return this._renderedViewLine&&this._renderedViewLine.domNode?this._renderedViewLine.domNode.domNode:null}setDomNode(e){if(!this._renderedViewLine)throw new Error("I have no rendered view line to set the dom node to...");this._renderedViewLine.domNode=(0,g.X)(e)}onContentChanged(){this._isMaybeInvalid=!0}onTokensChanged(){this._isMaybeInvalid=!0}onDecorationsChanged(){this._isMaybeInvalid=!0}onOptionsChanged(e){this._isMaybeInvalid=!0,this._options=e}onSelectionChanged(){return!(!z&&this._options.themeType!==Y.QP&&"selection"!==this._options.renderWhitespace||(this._isMaybeInvalid=!0,0))}renderLine(e,t,i,n){if(!1===this._isMaybeInvalid)return!1;this._isMaybeInvalid=!1;const r=i.getViewLineRenderingData(e),s=this._options,o=B.Kp.filter(r.inlineDecorations,e,r.minColumn,r.maxColumn);let a=null;if(z||s.themeType===Y.QP||"selection"===this._options.renderWhitespace){const t=i.selections;for(const i of t){if(i.endLineNumber<e||i.startLineNumber>e)continue;const t=i.startLineNumber===e?i.startColumn:r.minColumn,n=i.endLineNumber===e?i.endColumn:r.maxColumn;t<n&&(s.themeType===Y.QP||"selection"!==this._options.renderWhitespace?o.push(new B.Kp(t,n,"inline-selected-text",0)):(a||(a=[]),a.push(new W.zG(t-1,n-1))))}}const l=new W.IJ(s.useMonospaceOptimizations,s.canUseHalfwidthRightwardsArrow,r.content,r.continuesWithWrappedLine,r.isBasicASCII,r.containsRTL,r.minColumn-1,r.tokens,o,r.tabSize,r.startVisibleColumn,s.spaceWidth,s.middotWidth,s.wsmiddotWidth,s.stopRenderingLineAfter,s.renderWhitespace,s.renderControlCharacters,s.fontLigatures!==H.n0.OFF,a);if(this._renderedViewLine&&this._renderedViewLine.input.equals(l))return!1;n.appendASCIIString('<div style="top:'),n.appendASCIIString(String(t)),n.appendASCIIString("px;height:"),n.appendASCIIString(String(this._options.lineHeight)),n.appendASCIIString('px;" class="'),n.appendASCIIString(K.CLASS_NAME),n.appendASCIIString('">');const c=(0,W.d1)(l,n);n.appendASCIIString("</div>");let d=null;return V&&j&&r.isBasicASCII&&s.useMonospaceOptimizations&&0===c.containsForeignElements&&r.content.length<300&&l.lineTokens.getCount()<100&&(d=new q(this._renderedViewLine?this._renderedViewLine.domNode:null,l,c.characterMapping)),d||(d=J(this._renderedViewLine?this._renderedViewLine.domNode:null,l,c.characterMapping,c.containsRTL,c.containsForeignElements)),this._renderedViewLine=d,!0}layoutLine(e,t){this._renderedViewLine&&this._renderedViewLine.domNode&&(this._renderedViewLine.domNode.setTop(t),this._renderedViewLine.domNode.setHeight(this._options.lineHeight))}getWidth(){return this._renderedViewLine?this._renderedViewLine.getWidth():0}getWidthIsFast(){return!this._renderedViewLine||this._renderedViewLine.getWidthIsFast()}needsMonospaceFontCheck(){return!!this._renderedViewLine&&this._renderedViewLine instanceof q}monospaceAssumptionsAreValid(){return this._renderedViewLine&&this._renderedViewLine instanceof q?this._renderedViewLine.monospaceAssumptionsAreValid():V}onMonospaceAssumptionsInvalidated(){this._renderedViewLine&&this._renderedViewLine instanceof q&&(this._renderedViewLine=this._renderedViewLine.toSlowRenderedLine())}getVisibleRangesForRange(e,t,i){if(!this._renderedViewLine)return null;e|=0,t|=0,e=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,e)),t=Math.min(this._renderedViewLine.input.lineContent.length+1,Math.max(1,t));const n=0|this._renderedViewLine.input.stopRenderingLineAfter;let r=!1;-1!==n&&e>n+1&&t>n+1&&(r=!0),-1!==n&&e>n+1&&(e=n+1),-1!==n&&t>n+1&&(t=n+1);const s=this._renderedViewLine.getVisibleRangesForRange(e,t,i);return s&&s.length>0?new R(r,s):null}getColumnOfNodeOffset(e,t,i){return this._renderedViewLine?this._renderedViewLine.getColumnOfNodeOffset(e,t,i):1}}K.CLASS_NAME="view-line";class q{constructor(e,t,i){this.domNode=e,this.input=t,this._characterMapping=i,this._charWidth=t.spaceWidth}getWidth(){return this._getCharPosition(this._characterMapping.length)}getWidthIsFast(){return!0}monospaceAssumptionsAreValid(){if(!this.domNode)return V;const e=this.getWidth(),t=this.domNode.domNode.firstChild.offsetWidth;return Math.abs(e-t)>=2&&(console.warn("monospace assumptions have been violated, therefore disabling monospace optimizations!"),V=!1),V}toSlowRenderedLine(){return J(this.domNode,this.input,this._characterMapping,!1,0)}getVisibleRangesForRange(e,t,i){const n=this._getCharPosition(e),r=this._getCharPosition(t);return[new O(n,r-n)]}_getCharPosition(e){const t=this._characterMapping.getAbsoluteOffsets();return 0===t.length?0:Math.round(this._charWidth*t[e-1])}getColumnOfNodeOffset(e,t,i){const n=t.textContent.length;let r=-1;for(;t;)t=t.previousSibling,r++;return this._characterMapping.partDataToCharOffset(r,n,i)+1}}class G{constructor(e,t,i,n,r){if(this.domNode=e,this.input=t,this._characterMapping=i,this._isWhitespaceOnly=/^\s*$/.test(t.lineContent),this._containsForeignElements=r,this._cachedWidth=-1,this._pixelOffsetCache=null,!n||0===this._characterMapping.length){this._pixelOffsetCache=new Int32Array(Math.max(2,this._characterMapping.length+1));for(let e=0,t=this._characterMapping.length;e<=t;e++)this._pixelOffsetCache[e]=-1}}_getReadingTarget(e){return e.domNode.firstChild}getWidth(){return this.domNode?(-1===this._cachedWidth&&(this._cachedWidth=this._getReadingTarget(this.domNode).offsetWidth),this._cachedWidth):0}getWidthIsFast(){return-1!==this._cachedWidth}getVisibleRangesForRange(e,t,i){if(!this.domNode)return null;if(null!==this._pixelOffsetCache){const n=this._readPixelOffset(this.domNode,e,i);if(-1===n)return null;const r=this._readPixelOffset(this.domNode,t,i);return-1===r?null:[new O(n,r-n)]}return this._readVisibleRangesForRange(this.domNode,e,t,i)}_readVisibleRangesForRange(e,t,i,n){if(t===i){const i=this._readPixelOffset(e,t,n);return-1===i?null:[new O(i,0)]}return this._readRawVisibleRangesForRange(e,t,i,n)}_readPixelOffset(e,t,i){if(0===this._characterMapping.length){if(0===this._containsForeignElements)return 0;if(2===this._containsForeignElements)return 0;if(1===this._containsForeignElements)return this.getWidth();const t=this._getReadingTarget(e);return t.firstChild?t.firstChild.offsetWidth:0}if(null!==this._pixelOffsetCache){const n=this._pixelOffsetCache[t];if(-1!==n)return n;const r=this._actualReadPixelOffset(e,t,i);return this._pixelOffsetCache[t]=r,r}return this._actualReadPixelOffset(e,t,i)}_actualReadPixelOffset(e,t,i){if(0===this._characterMapping.length){const t=F.readHorizontalRanges(this._getReadingTarget(e),0,0,0,0,i.clientRectDeltaLeft,i.endNode);return t&&0!==t.length?t[0].left:-1}if(t===this._characterMapping.length&&this._isWhitespaceOnly&&0===this._containsForeignElements)return this.getWidth();const n=this._characterMapping.charOffsetToPartData(t-1),r=W.fH.getPartIndex(n),s=W.fH.getCharIndex(n),o=F.readHorizontalRanges(this._getReadingTarget(e),r,s,r,s,i.clientRectDeltaLeft,i.endNode);if(!o||0===o.length)return-1;const a=o[0].left;if(this.input.isBasicASCII){const e=this._characterMapping.getAbsoluteOffsets(),i=Math.round(this.input.spaceWidth*e[t-1]);if(Math.abs(i-a)<=1)return i}return a}_readRawVisibleRangesForRange(e,t,i,n){if(1===t&&i===this._characterMapping.length)return[new O(0,this.getWidth())];const r=this._characterMapping.charOffsetToPartData(t-1),s=W.fH.getPartIndex(r),o=W.fH.getCharIndex(r),a=this._characterMapping.charOffsetToPartData(i-1),l=W.fH.getPartIndex(a),c=W.fH.getCharIndex(a);return F.readHorizontalRanges(this._getReadingTarget(e),s,o,l,c,n.clientRectDeltaLeft,n.endNode)}getColumnOfNodeOffset(e,t,i){const n=t.textContent.length;let r=-1;for(;t;)t=t.previousSibling,r++;return this._characterMapping.partDataToCharOffset(r,n,i)+1}}class Z extends G{_readVisibleRangesForRange(e,t,i,n){const r=super._readVisibleRangesForRange(e,t,i,n);if(!r||0===r.length||t===i||1===t&&i===this._characterMapping.length)return r;if(!this.input.containsRTL){const t=this._readPixelOffset(e,i,n);if(-1!==t){const e=r[r.length-1];e.left<t&&(e.width=t-e.left)}}return r}}const J=b.Pf?function(e,t,i,n,r){return new Z(e,t,i,n,r)}:function(e,t,i,n,r){return new G(e,t,i,n,r)};var Q=i(50187),X=i(24314),ee=i(33181);class te{constructor(e,t){this.lastViewCursorsRenderData=e,this.lastTextareaPosition=t}}class ie{constructor(e,t,i=0,n=null,r=null,s=null){this.element=e,this.type=t,this.mouseColumn=i,this.position=n,!r&&n&&(r=new X.e(n.lineNumber,n.column,n.lineNumber,n.column)),this.range=r,this.detail=s}static _typeToString(e){return 1===e?"TEXTAREA":2===e?"GUTTER_GLYPH_MARGIN":3===e?"GUTTER_LINE_NUMBERS":4===e?"GUTTER_LINE_DECORATIONS":5===e?"GUTTER_VIEW_ZONE":6===e?"CONTENT_TEXT":7===e?"CONTENT_EMPTY":8===e?"CONTENT_VIEW_ZONE":9===e?"CONTENT_WIDGET":10===e?"OVERVIEW_RULER":11===e?"SCROLLBAR":12===e?"OVERLAY_WIDGET":"UNKNOWN"}static toString(e){return this._typeToString(e.type)+": "+e.position+" - "+e.range+" - "+e.detail}toString(){return ie.toString(this)}}class ne{static isTextArea(e){return 2===e.length&&3===e[0]&&6===e[1]}static isChildOfViewLines(e){return e.length>=4&&3===e[0]&&7===e[3]}static isStrictChildOfViewLines(e){return e.length>4&&3===e[0]&&7===e[3]}static isChildOfScrollableElement(e){return e.length>=2&&3===e[0]&&5===e[1]}static isChildOfMinimap(e){return e.length>=2&&3===e[0]&&8===e[1]}static isChildOfContentWidgets(e){return e.length>=4&&3===e[0]&&1===e[3]}static isChildOfOverflowingContentWidgets(e){return e.length>=1&&2===e[0]}static isChildOfOverlayWidgets(e){return e.length>=2&&3===e[0]&&4===e[1]}}class re{constructor(e,t,i){this.model=e.model;const n=e.configuration.options;this.layoutInfo=n.get(117),this.viewDomNode=t.viewDomNode,this.lineHeight=n.get(51),this.typicalHalfwidthCharacterWidth=n.get(36).typicalHalfwidthCharacterWidth,this.lastRenderData=i,this._context=e,this._viewHelper=t}getZoneAtCoord(e){return re.getZoneAtCoord(this._context,e)}static getZoneAtCoord(e,t){const i=e.viewLayout.getWhitespaceAtVerticalOffset(t);if(i){let n,r=i.verticalOffset+i.height/2,s=e.model.getLineCount(),o=null,a=null;return i.afterLineNumber!==s&&(a=new Q.L(i.afterLineNumber+1,1)),i.afterLineNumber>0&&(o=new Q.L(i.afterLineNumber,e.model.getLineMaxColumn(i.afterLineNumber))),n=null===a?o:null===o?a:t<r?o:a,{viewZoneId:i.id,afterLineNumber:i.afterLineNumber,positionBefore:o,positionAfter:a,position:n}}return null}getFullLineRangeAtCoord(e){if(this._context.viewLayout.isAfterLines(e)){const e=this._context.model.getLineCount(),t=this._context.model.getLineMaxColumn(e);return{range:new X.e(e,t,e,t),isAfterLines:!0}}const t=this._context.viewLayout.getLineNumberAtVerticalOffset(e),i=this._context.model.getLineMaxColumn(t);return{range:new X.e(t,1,t,i),isAfterLines:!1}}getLineNumberAtVerticalOffset(e){return this._context.viewLayout.getLineNumberAtVerticalOffset(e)}isAfterLines(e){return this._context.viewLayout.isAfterLines(e)}getVerticalOffsetForLineNumber(e){return this._context.viewLayout.getVerticalOffsetForLineNumber(e)}findAttribute(e,t){return re._findAttribute(e,t,this._viewHelper.viewDomNode)}static _findAttribute(e,t,i){for(;e&&e!==document.body;){if(e.hasAttribute&&e.hasAttribute(t))return e.getAttribute(t);if(e===i)return null;e=e.parentNode}return null}getLineWidth(e){return this._viewHelper.getLineWidth(e)}visibleRangeForPosition(e,t){return this._viewHelper.visibleRangeForPosition(e,t)}getPositionFromDOMInfo(e,t){return this._viewHelper.getPositionFromDOMInfo(e,t)}getCurrentScrollTop(){return this._context.viewLayout.getCurrentScrollTop()}getCurrentScrollLeft(){return this._context.viewLayout.getCurrentScrollLeft()}}class se extends class{constructor(e,t,i){this.editorPos=t,this.pos=i,this.mouseVerticalOffset=Math.max(0,e.getCurrentScrollTop()+i.y-t.y),this.mouseContentHorizontalOffset=e.getCurrentScrollLeft()+i.x-t.x-e.layoutInfo.contentLeft,this.isInMarginArea=i.x-t.x<e.layoutInfo.contentLeft&&i.x-t.x>=e.layoutInfo.glyphMarginLeft,this.isInContentArea=!this.isInMarginArea,this.mouseColumn=Math.max(0,le._getMouseColumn(this.mouseContentHorizontalOffset,e.typicalHalfwidthCharacterWidth))}}{constructor(e,t,i,n){super(e,t,i),this._ctx=e,n?(this.target=n,this.targetPath=E.collect(n,e.viewDomNode)):(this.target=null,this.targetPath=new Uint8Array(0))}toString(){return`pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}\n\ttarget: ${this.target?this.target.outerHTML:null}`}fulfill(e,t=null,i=null,n=null){let r=this.mouseColumn;return t&&t.column<this._ctx.model.getLineMaxColumn(t.lineNumber)&&(r=ee.io.visibleColumnFromColumn(this._ctx.model.getLineContent(t.lineNumber),t.column,this._ctx.model.getTextModelOptions().tabSize)+1),new ie(this.target,e,r,t,i,n)}withTarget(e){return new se(this._ctx,this.editorPos,this.pos,e)}}const oe={isAfterLines:!0};function ae(e){return{isAfterLines:!1,horizontalDistanceToText:e}}class le{constructor(e,t){this._context=e,this._viewHelper=t}mouseTargetIsWidget(e){const t=e.target,i=E.collect(t,this._viewHelper.viewDomNode);return!(!ne.isChildOfContentWidgets(i)&&!ne.isChildOfOverflowingContentWidgets(i)&&!ne.isChildOfOverlayWidgets(i))}createMouseTarget(e,t,i,n){const r=new re(this._context,this._viewHelper,e),s=new se(r,t,i,n);try{return le._createMouseTarget(r,s,!1)}catch(e){return s.fulfill(0)}}static _createMouseTarget(e,t,i){if(null===t.target){if(i)return t.fulfill(0);const n=le._doHitTest(e,t);return n.position?le.createMouseTargetFromHitTestPosition(e,t,n.position.lineNumber,n.position.column):this._createMouseTarget(e,t.withTarget(n.hitTarget),!0)}const n=t;let r=null;return r=r||le._hitTestContentWidget(e,n),r=r||le._hitTestOverlayWidget(e,n),r=r||le._hitTestMinimap(e,n),r=r||le._hitTestScrollbarSlider(e,n),r=r||le._hitTestViewZone(e,n),r=r||le._hitTestMargin(e,n),r=r||le._hitTestViewCursor(e,n),r=r||le._hitTestTextArea(e,n),r=r||le._hitTestViewLines(e,n,i),r=r||le._hitTestScrollbar(e,n),r||t.fulfill(0)}static _hitTestContentWidget(e,t){if(ne.isChildOfContentWidgets(t.targetPath)||ne.isChildOfOverflowingContentWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfill(9,null,null,i):t.fulfill(0)}return null}static _hitTestOverlayWidget(e,t){if(ne.isChildOfOverlayWidgets(t.targetPath)){const i=e.findAttribute(t.target,"widgetId");return i?t.fulfill(12,null,null,i):t.fulfill(0)}return null}static _hitTestViewCursor(e,t){if(t.target){const i=e.lastRenderData.lastViewCursorsRenderData;for(const e of i)if(t.target===e.domNode)return t.fulfill(6,e.position)}if(t.isInContentArea){const i=e.lastRenderData.lastViewCursorsRenderData,n=t.mouseContentHorizontalOffset,r=t.mouseVerticalOffset;for(const s of i){if(n<s.contentLeft)continue;if(n>s.contentLeft+s.width)continue;const i=e.getVerticalOffsetForLineNumber(s.position.lineNumber);if(i<=r&&r<=i+s.height)return t.fulfill(6,s.position)}}return null}static _hitTestViewZone(e,t){const i=e.getZoneAtCoord(t.mouseVerticalOffset);if(i){const e=t.isInContentArea?8:5;return t.fulfill(e,i.position,null,i)}return null}static _hitTestTextArea(e,t){return ne.isTextArea(t.targetPath)?e.lastRenderData.lastTextareaPosition?t.fulfill(6,e.lastRenderData.lastTextareaPosition):t.fulfill(1,e.lastRenderData.lastTextareaPosition):null}static _hitTestMargin(e,t){if(t.isInMarginArea){const i=e.getFullLineRangeAtCoord(t.mouseVerticalOffset),n=i.range.getStartPosition();let r=Math.abs(t.pos.x-t.editorPos.x);const s={isAfterLines:i.isAfterLines,glyphMarginLeft:e.layoutInfo.glyphMarginLeft,glyphMarginWidth:e.layoutInfo.glyphMarginWidth,lineNumbersWidth:e.layoutInfo.lineNumbersWidth,offsetX:r};return r-=e.layoutInfo.glyphMarginLeft,r<=e.layoutInfo.glyphMarginWidth?t.fulfill(2,n,i.range,s):(r-=e.layoutInfo.glyphMarginWidth,r<=e.layoutInfo.lineNumbersWidth?t.fulfill(3,n,i.range,s):(r-=e.layoutInfo.lineNumbersWidth,t.fulfill(4,n,i.range,s)))}return null}static _hitTestViewLines(e,t,i){if(!ne.isChildOfViewLines(t.targetPath))return null;if(e.isAfterLines(t.mouseVerticalOffset)){const i=e.model.getLineCount(),n=e.model.getLineMaxColumn(i);return t.fulfill(7,new Q.L(i,n),void 0,oe)}if(i){if(ne.isStrictChildOfViewLines(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset);if(0===e.model.getLineLength(i)){const n=e.getLineWidth(i),r=ae(t.mouseContentHorizontalOffset-n);return t.fulfill(7,new Q.L(i,1),void 0,r)}const n=e.getLineWidth(i);if(t.mouseContentHorizontalOffset>=n){const r=ae(t.mouseContentHorizontalOffset-n),s=new Q.L(i,e.model.getLineMaxColumn(i));return t.fulfill(7,s,void 0,r)}}return t.fulfill(0)}const n=le._doHitTest(e,t);return n.position?le.createMouseTargetFromHitTestPosition(e,t,n.position.lineNumber,n.position.column):this._createMouseTarget(e,t.withTarget(n.hitTarget),!0)}static _hitTestMinimap(e,t){if(ne.isChildOfMinimap(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.model.getLineMaxColumn(i);return t.fulfill(11,new Q.L(i,n))}return null}static _hitTestScrollbarSlider(e,t){if(ne.isChildOfScrollableElement(t.targetPath)&&t.target&&1===t.target.nodeType){const i=t.target.className;if(i&&/\b(slider|scrollbar)\b/.test(i)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.model.getLineMaxColumn(i);return t.fulfill(11,new Q.L(i,n))}}return null}static _hitTestScrollbar(e,t){if(ne.isChildOfScrollableElement(t.targetPath)){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.model.getLineMaxColumn(i);return t.fulfill(11,new Q.L(i,n))}return null}getMouseColumn(e,t){const i=this._context.configuration.options,n=i.get(117),r=this._context.viewLayout.getCurrentScrollLeft()+t.x-e.x-n.contentLeft;return le._getMouseColumn(r,i.get(36).typicalHalfwidthCharacterWidth)}static _getMouseColumn(e,t){return e<0?1:Math.round(e/t)+1}static createMouseTargetFromHitTestPosition(e,t,i,n){const r=new Q.L(i,n),s=e.getLineWidth(i);if(t.mouseContentHorizontalOffset>s){if(b.un&&1===r.column){const n=ae(t.mouseContentHorizontalOffset-s);return t.fulfill(7,new Q.L(i,e.model.getLineMaxColumn(i)),void 0,n)}const n=ae(t.mouseContentHorizontalOffset-s);return t.fulfill(7,r,void 0,n)}const o=e.visibleRangeForPosition(i,n);if(!o)return t.fulfill(0,r);const a=o.left;if(t.mouseContentHorizontalOffset===a)return t.fulfill(6,r);const l=[];if(l.push({offset:o.left,column:n}),n>1){const t=e.visibleRangeForPosition(i,n-1);t&&l.push({offset:t.left,column:n-1})}if(n<e.model.getLineMaxColumn(i)){const t=e.visibleRangeForPosition(i,n+1);t&&l.push({offset:t.left,column:n+1})}l.sort(((e,t)=>e.offset-t.offset));for(let e=1;e<l.length;e++){const n=l[e-1],s=l[e];if(n.offset<=t.mouseContentHorizontalOffset&&t.mouseContentHorizontalOffset<=s.offset){const e=new X.e(i,n.column,i,s.column);return t.fulfill(6,r,e)}}return t.fulfill(6,r)}static _doHitTestWithCaretRangeFromPoint(e,t){const i=e.getLineNumberAtVerticalOffset(t.mouseVerticalOffset),n=e.getVerticalOffsetForLineNumber(i)+Math.floor(e.lineHeight/2);let r=t.pos.y+(n-t.mouseVerticalOffset);r<=t.editorPos.y&&(r=t.editorPos.y+1),r>=t.editorPos.y+e.layoutInfo.height&&(r=t.editorPos.y+e.layoutInfo.height-1);const s=new y(t.pos.x,r),o=this._actualDoHitTestWithCaretRangeFromPoint(e,s.toClientCoordinates());return o.position?o:this._actualDoHitTestWithCaretRangeFromPoint(e,t.pos.toClientCoordinates())}static _actualDoHitTestWithCaretRangeFromPoint(e,t){const i=r.Ay(e.viewDomNode);let n;if(n=i?void 0===i.caretRangeFromPoint?function(e,t,i){const n=document.createRange();let r=e.elementFromPoint(t,i);if(null!==r){for(;r&&r.firstChild&&r.firstChild.nodeType!==r.firstChild.TEXT_NODE;)r=r.lastChild;const e=r.getBoundingClientRect(),i=window.getComputedStyle(r,null).getPropertyValue("font"),s=r.innerText;let o,a=e.left,l=0;if(t>e.left+e.width)l=s.length;else{const e=ce.getInstance();for(let n=0;n<s.length+1;n++){if(o=e.getCharWidth(s.charAt(n),i)/2,a+=o,t<a){l=n;break}a+=o}}n.setStart(r.firstChild,l),n.setEnd(r.firstChild,l)}return n}(i,t.clientX,t.clientY):i.caretRangeFromPoint(t.clientX,t.clientY):document.caretRangeFromPoint(t.clientX,t.clientY),!n||!n.startContainer)return{position:null,hitTarget:null};const s=n.startContainer;let o=null;if(s.nodeType===s.TEXT_NODE){const t=s.parentNode,i=t?t.parentNode:null,r=i?i.parentNode:null;if((r&&r.nodeType===r.ELEMENT_NODE?r.className:null)===K.CLASS_NAME)return{position:e.getPositionFromDOMInfo(t,n.startOffset),hitTarget:null};o=s.parentNode}else if(s.nodeType===s.ELEMENT_NODE){const t=s.parentNode,i=t?t.parentNode:null;if((i&&i.nodeType===i.ELEMENT_NODE?i.className:null)===K.CLASS_NAME)return{position:e.getPositionFromDOMInfo(s,s.textContent.length),hitTarget:null};o=s}return{position:null,hitTarget:o}}static _doHitTestWithCaretPositionFromPoint(e,t){const i=document.caretPositionFromPoint(t.clientX,t.clientY);if(i.offsetNode.nodeType===i.offsetNode.TEXT_NODE){const t=i.offsetNode.parentNode,n=t?t.parentNode:null,r=n?n.parentNode:null;return(r&&r.nodeType===r.ELEMENT_NODE?r.className:null)===K.CLASS_NAME?{position:e.getPositionFromDOMInfo(i.offsetNode.parentNode,i.offset),hitTarget:null}:{position:null,hitTarget:i.offsetNode.parentNode}}if(i.offsetNode.nodeType===i.offsetNode.ELEMENT_NODE){const t=i.offsetNode.parentNode;if((t&&t.nodeType===t.ELEMENT_NODE?t.className:null)===K.CLASS_NAME){const t=i.offsetNode.childNodes[Math.min(i.offset,i.offsetNode.childNodes.length-1)];if(t)return{position:e.getPositionFromDOMInfo(t,0),hitTarget:null}}}return{position:null,hitTarget:i.offsetNode}}static _doHitTestWithMoveToPoint(e,t){let i=null,n=null;const r=document.body.createTextRange();try{r.moveToPoint(t.clientX,t.clientY)}catch(e){return{position:null,hitTarget:null}}r.collapse(!0);const s=r?r.parentElement():null,o=s?s.parentNode:null,a=o?o.parentNode:null;if((a&&a.nodeType===a.ELEMENT_NODE?a.className:"")===K.CLASS_NAME){const t=r.duplicate();t.moveToElementText(s),t.setEndPoint("EndToStart",r),i=e.getPositionFromDOMInfo(s,t.text.length),t.moveToElementText(e.viewDomNode)}else n=s;return r.moveToElementText(e.viewDomNode),{position:i,hitTarget:n}}static _doHitTest(e,t){return"function"==typeof document.caretRangeFromPoint?this._doHitTestWithCaretRangeFromPoint(e,t):document.caretPositionFromPoint?this._doHitTestWithCaretPositionFromPoint(e,t.pos.toClientCoordinates()):document.body.createTextRange?this._doHitTestWithMoveToPoint(e,t.pos.toClientCoordinates()):{position:null,hitTarget:null}}}class ce{constructor(){this._cache={},this._canvas=document.createElement("canvas")}static getInstance(){return ce._INSTANCE||(ce._INSTANCE=new ce),ce._INSTANCE}getCharWidth(e,t){const i=e+t;if(this._cache[i])return this._cache[i];const n=this._canvas.getContext("2d");n.font=t;const r=n.measureText(e).width;return this._cache[i]=r,r}}ce._INSTANCE=null;var de=i(82334);function he(e){return function(t,i){let n=!1;return e&&(n=e.mouseTargetIsWidget(i)),n||i.preventDefault(),i}}class ue extends D{constructor(e,t,i){super(),this._context=e,this.viewController=t,this.viewHelper=i,this.mouseTargetFactory=new le(this._context,i),this._mouseDownOperation=this._register(new ge(this._context,this.viewController,this.viewHelper,((e,t)=>this._createMouseTarget(e,t)),(e=>this._getMouseColumn(e)))),this.lastMouseLeaveTime=-1;const n=new x(this.viewHelper.viewDomNode);this._register(n.onContextMenu(this.viewHelper.viewDomNode,(e=>this._onContextMenu(e,!0)))),this._register(n.onMouseMoveThrottled(this.viewHelper.viewDomNode,(e=>this._onMouseMove(e)),he(this.mouseTargetFactory),ue.MOUSE_MOVE_MINIMUM_TIME)),this._register(n.onMouseUp(this.viewHelper.viewDomNode,(e=>this._onMouseUp(e)))),this._register(n.onMouseLeave(this.viewHelper.viewDomNode,(e=>this._onMouseLeave(e)))),this._register(n.onMouseDown(this.viewHelper.viewDomNode,(e=>this._onMouseDown(e)))),this._register(r.nm(this.viewHelper.viewDomNode,r.tw.MOUSE_WHEEL,(e=>{if(this.viewController.emitMouseWheel(e),!this._context.configuration.options.get(59))return;const t=new m.q(e);if(t.browserEvent.ctrlKey||t.browserEvent.metaKey){const e=de.C.getZoomLevel(),i=t.deltaY>0?1:-1;de.C.setZoomLevel(e+i),t.preventDefault(),t.stopPropagation()}}),{capture:!0,passive:!1})),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onCursorStateChanged(e){return this._mouseDownOperation.onCursorStateChanged(e),!1}onFocusChanged(e){return!1}onScrollChanged(e){return this._mouseDownOperation.onScrollChanged(),!1}getTargetAtClientPoint(e,t){const i=new w(e,t).toPageCoordinates(),n=S(this.viewHelper.viewDomNode);return i.y<n.y||i.y>n.y+n.height||i.x<n.x||i.x>n.x+n.width?null:this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),n,i,null)}_createMouseTarget(e,t){return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(),e.editorPos,e.pos,t?e.target:null)}_getMouseColumn(e){return this.mouseTargetFactory.getMouseColumn(e.editorPos,e.pos)}_onContextMenu(e,t){this.viewController.emitContextMenu({event:e,target:this._createMouseTarget(e,t)})}_onMouseMove(e){this._mouseDownOperation.isActive()||e.timestamp<this.lastMouseLeaveTime||this.viewController.emitMouseMove({event:e,target:this._createMouseTarget(e,!0)})}_onMouseLeave(e){this.lastMouseLeaveTime=(new Date).getTime(),this.viewController.emitMouseLeave({event:e,target:null})}_onMouseUp(e){this.viewController.emitMouseUp({event:e,target:this._createMouseTarget(e,!0)})}_onMouseDown(e){const t=this._createMouseTarget(e,!0),i=6===t.type||7===t.type,n=2===t.type||3===t.type||4===t.type,r=3===t.type,s=this._context.configuration.options.get(90),o=8===t.type||5===t.type,a=9===t.type;let l=e.leftButton||e.middleButton;f.dz&&e.leftButton&&e.ctrlKey&&(l=!1);const c=()=>{e.preventDefault(),this.viewHelper.focusTextArea()};if(l&&(i||r&&s))c(),this._mouseDownOperation.start(t.type,e);else if(n)e.preventDefault();else if(o){const i=t.detail;this.viewHelper.shouldSuppressMouseDownOnViewZone(i.viewZoneId)&&(c(),this._mouseDownOperation.start(t.type,e),e.preventDefault())}else a&&this.viewHelper.shouldSuppressMouseDownOnWidget(t.detail)&&(c(),e.preventDefault());this.viewController.emitMouseDown({event:e,target:t})}}ue.MOUSE_MOVE_MINIMUM_TIME=100;class ge extends a.JT{constructor(e,t,i,n,r){super(),this._context=e,this._viewController=t,this._viewHelper=i,this._createMouseTarget=n,this._getMouseColumn=r,this._mouseMoveMonitor=this._register(new M(this._viewHelper.viewDomNode)),this._onScrollTimeout=this._register(new _._F),this._mouseState=new fe,this._currentSelection=new u.Y(1,1,1,1),this._isActive=!1,this._lastMouseEvent=null}dispose(){super.dispose()}isActive(){return this._isActive}_onMouseDownThenMove(e){this._lastMouseEvent=e,this._mouseState.setModifiers(e);const t=this._findMousePosition(e,!0);t&&(this._mouseState.isDragAndDrop?this._viewController.emitMouseDrag({event:e,target:t}):this._dispatchMouse(t,!0))}start(e,t){this._lastMouseEvent=t,this._mouseState.setStartedOnLineNumbers(3===e),this._mouseState.setStartButtons(t),this._mouseState.setModifiers(t);const i=this._findMousePosition(t,!0);if(!i||!i.position)return;this._mouseState.trySetCount(t.detail,i.position),t.detail=this._mouseState.count;const n=this._context.configuration.options;if(!n.get(72)&&n.get(25)&&!n.get(13)&&!this._mouseState.altKey&&t.detail<2&&!this._isActive&&!this._currentSelection.isEmpty()&&6===i.type&&i.position&&this._currentSelection.containsPosition(i.position))return this._mouseState.isDragAndDrop=!0,this._isActive=!0,void this._mouseMoveMonitor.startMonitoring(t.target,t.buttons,he(null),(e=>this._onMouseDownThenMove(e)),(()=>{const e=this._findMousePosition(this._lastMouseEvent,!0);this._viewController.emitMouseDrop({event:this._lastMouseEvent,target:e?this._createMouseTarget(this._lastMouseEvent,!0):null}),this._stop()}));this._mouseState.isDragAndDrop=!1,this._dispatchMouse(i,t.shiftKey),this._isActive||(this._isActive=!0,this._mouseMoveMonitor.startMonitoring(t.target,t.buttons,he(null),(e=>this._onMouseDownThenMove(e)),(()=>this._stop())))}_stop(){this._isActive=!1,this._onScrollTimeout.cancel()}onScrollChanged(){this._isActive&&this._onScrollTimeout.setIfNotSet((()=>{if(!this._lastMouseEvent)return;const e=this._findMousePosition(this._lastMouseEvent,!1);e&&(this._mouseState.isDragAndDrop||this._dispatchMouse(e,!0))}),10)}onCursorStateChanged(e){this._currentSelection=e.selections[0]}_getPositionOutsideEditor(e){const t=e.editorPos,i=this._context.model,n=this._context.viewLayout,r=this._getMouseColumn(e);if(e.posy<t.y){const i=Math.max(n.getCurrentScrollTop()-(t.y-e.posy),0),s=re.getZoneAtCoord(this._context,i);if(s){const e=this._helpPositionJumpOverViewZone(s);if(e)return new ie(null,13,r,e)}const o=n.getLineNumberAtVerticalOffset(i);return new ie(null,13,r,new Q.L(o,1))}if(e.posy>t.y+t.height){const s=n.getCurrentScrollTop()+(e.posy-t.y),o=re.getZoneAtCoord(this._context,s);if(o){const e=this._helpPositionJumpOverViewZone(o);if(e)return new ie(null,13,r,e)}const a=n.getLineNumberAtVerticalOffset(s);return new ie(null,13,r,new Q.L(a,i.getLineMaxColumn(a)))}const s=n.getLineNumberAtVerticalOffset(n.getCurrentScrollTop()+(e.posy-t.y));return e.posx<t.x?new ie(null,13,r,new Q.L(s,1)):e.posx>t.x+t.width?new ie(null,13,r,new Q.L(s,i.getLineMaxColumn(s))):null}_findMousePosition(e,t){const i=this._getPositionOutsideEditor(e);if(i)return i;const n=this._createMouseTarget(e,t);if(!n.position)return null;if(8===n.type||5===n.type){const e=this._helpPositionJumpOverViewZone(n.detail);if(e)return new ie(n.element,n.type,n.mouseColumn,e,null,n.detail)}return n}_helpPositionJumpOverViewZone(e){const t=new Q.L(this._currentSelection.selectionStartLineNumber,this._currentSelection.selectionStartColumn),i=e.positionBefore,n=e.positionAfter;return i&&n?i.isBefore(t)?i:n:null}_dispatchMouse(e,t){e.position&&this._viewController.dispatchMouse({position:e.position,mouseColumn:e.mouseColumn,startedOnLineNumbers:this._mouseState.startedOnLineNumbers,inSelectionMode:t,mouseDownCount:this._mouseState.count,altKey:this._mouseState.altKey,ctrlKey:this._mouseState.ctrlKey,metaKey:this._mouseState.metaKey,shiftKey:this._mouseState.shiftKey,leftButton:this._mouseState.leftButton,middleButton:this._mouseState.middleButton})}}class fe{constructor(){this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._leftButton=!1,this._middleButton=!1,this._startedOnLineNumbers=!1,this._lastMouseDownPosition=null,this._lastMouseDownPositionEqualCount=0,this._lastMouseDownCount=0,this._lastSetMouseDownCountTime=0,this.isDragAndDrop=!1}get altKey(){return this._altKey}get ctrlKey(){return this._ctrlKey}get metaKey(){return this._metaKey}get shiftKey(){return this._shiftKey}get leftButton(){return this._leftButton}get middleButton(){return this._middleButton}get startedOnLineNumbers(){return this._startedOnLineNumbers}get count(){return this._lastMouseDownCount}setModifiers(e){this._altKey=e.altKey,this._ctrlKey=e.ctrlKey,this._metaKey=e.metaKey,this._shiftKey=e.shiftKey}setStartButtons(e){this._leftButton=e.leftButton,this._middleButton=e.middleButton}setStartedOnLineNumbers(e){this._startedOnLineNumbers=e}trySetCount(e,t){const i=(new Date).getTime();i-this._lastSetMouseDownCountTime>fe.CLEAR_MOUSE_DOWN_COUNT_TIME&&(e=1),this._lastSetMouseDownCountTime=i,e>this._lastMouseDownCount+1&&(e=this._lastMouseDownCount+1),this._lastMouseDownPosition&&this._lastMouseDownPosition.equals(t)?this._lastMouseDownPositionEqualCount++:this._lastMouseDownPositionEqualCount=1,this._lastMouseDownPosition=t,this._lastMouseDownCount=Math.min(e,this._lastMouseDownPositionEqualCount)}}fe.CLEAR_MOUSE_DOWN_COUNT_TIME=400;var pe=i(10161);function me(e,t){const i={translationY:t.translationY,translationX:t.translationX};return e&&(i.translationY+=e.translationY,i.translationX+=e.translationX),i}class _e extends ue{constructor(e,t,i){super(e,t,i),this.viewHelper.linesContentDomNode.style.touchAction="none",this._installGestureHandlerTimeout=window.setTimeout((()=>{if(this._installGestureHandlerTimeout=-1,window.MSGesture){const e=new MSGesture,t=new MSGesture;e.target=this.viewHelper.linesContentDomNode,t.target=this.viewHelper.linesContentDomNode,this.viewHelper.linesContentDomNode.addEventListener("pointerdown",(i=>{const n=i.pointerType;"mouse"!==n?"touch"===n?(this._lastPointerType="touch",e.addPointer(i.pointerId)):(this._lastPointerType="pen",t.addPointer(i.pointerId)):this._lastPointerType="mouse"})),this._register(r.Y_(this.viewHelper.linesContentDomNode,"MSGestureChange",(e=>this._onGestureChange(e)),me)),this._register(r.nm(this.viewHelper.linesContentDomNode,"MSGestureTap",(e=>this._onCaptureGestureTap(e)),!0))}}),100),this._lastPointerType="mouse"}_onMouseDown(e){"mouse"===this._lastPointerType&&super._onMouseDown(e)}_onCaptureGestureTap(e){const t=new k(e,this.viewHelper.viewDomNode),i=this._createMouseTarget(t,!1);i.position&&this.viewController.moveTo(i.position),t.browserEvent.fromElement?(t.preventDefault(),this.viewHelper.focusTextArea()):setTimeout((()=>{this.viewHelper.focusTextArea()}))}_onGestureChange(e){this._context.model.deltaScrollNow(-e.translationX,-e.translationY)}dispose(){window.clearTimeout(this._installGestureHandlerTimeout),super.dispose()}}class be extends ue{constructor(e,t,i){super(e,t,i),this._register(p.o.addTarget(this.viewHelper.linesContentDomNode)),this._register(r.nm(this.viewHelper.linesContentDomNode,p.t.Tap,(e=>this.onTap(e)))),this._register(r.nm(this.viewHelper.linesContentDomNode,p.t.Change,(e=>this.onChange(e)))),this._register(r.nm(this.viewHelper.linesContentDomNode,p.t.Contextmenu,(e=>this._onContextMenu(new k(e,this.viewHelper.viewDomNode),!1)))),this._lastPointerType="mouse",this._register(r.nm(this.viewHelper.linesContentDomNode,"pointerdown",(e=>{const t=e.pointerType;this._lastPointerType="mouse"!==t?"touch"===t?"touch":"pen":"mouse"})));const n=new L(this.viewHelper.viewDomNode);this._register(n.onPointerMoveThrottled(this.viewHelper.viewDomNode,(e=>this._onMouseMove(e)),he(this.mouseTargetFactory),ue.MOUSE_MOVE_MINIMUM_TIME)),this._register(n.onPointerUp(this.viewHelper.viewDomNode,(e=>this._onMouseUp(e)))),this._register(n.onPointerLeave(this.viewHelper.viewDomNode,(e=>this._onMouseLeave(e)))),this._register(n.onPointerDown(this.viewHelper.viewDomNode,(e=>this._onMouseDown(e))))}onTap(e){if(!e.initialTarget||!this.viewHelper.linesContentDomNode.contains(e.initialTarget))return;e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new k(e,this.viewHelper.viewDomNode),!1);t.position&&this.viewController.dispatchMouse({position:t.position,mouseColumn:t.position.column,startedOnLineNumbers:!1,mouseDownCount:e.tapCount,inSelectionMode:!1,altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1,leftButton:!1,middleButton:!1})}onChange(e){"touch"===this._lastPointerType&&this._context.model.deltaScrollNow(-e.translationX,-e.translationY)}_onMouseDown(e){e.target&&this.viewHelper.linesContentDomNode.contains(e.target)&&"touch"===this._lastPointerType||super._onMouseDown(e)}}class ve extends ue{constructor(e,t,i){super(e,t,i),this._register(p.o.addTarget(this.viewHelper.linesContentDomNode)),this._register(r.nm(this.viewHelper.linesContentDomNode,p.t.Tap,(e=>this.onTap(e)))),this._register(r.nm(this.viewHelper.linesContentDomNode,p.t.Change,(e=>this.onChange(e)))),this._register(r.nm(this.viewHelper.linesContentDomNode,p.t.Contextmenu,(e=>this._onContextMenu(new k(e,this.viewHelper.viewDomNode),!1))))}onTap(e){e.preventDefault(),this.viewHelper.focusTextArea();const t=this._createMouseTarget(new k(e,this.viewHelper.viewDomNode),!1);t.position&&this.viewController.moveTo(t.position)}onChange(e){this._context.model.deltaScrollNow(-e.translationX,-e.translationY)}}class ye extends a.JT{constructor(e,t,i){super(),f.gn&&pe.D.pointerEvents?this.handler=this._register(new be(e,t,i)):window.TouchEvent?this.handler=this._register(new ve(e,t,i)):window.navigator.pointerEnabled||window.PointerEvent?this.handler=this._register(new _e(e,t,i)):this.handler=this._register(new ue(e,t,i))}getTargetAtClientPoint(e,t){return this.handler.getTargetAtClientPoint(e,t)}}var we=i(97295),Ce=i(35715),Se=i(15887);class ke extends D{}var xe=i(27869);class Le extends ke{constructor(e){super(),this._context=e,this._readConfig(),this._lastCursorModelPosition=new Q.L(1,1),this._renderResult=null,this._context.addEventHandler(this)}_readConfig(){const e=this._context.configuration.options;this._lineHeight=e.get(51);const t=e.get(52);this._renderLineNumbers=t.renderType,this._renderCustomLineNumbers=t.renderFn,this._renderFinalNewline=e.get(76);const i=e.get(117);this._lineNumbersLeft=i.lineNumbersLeft,this._lineNumbersWidth=i.lineNumbersWidth}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return this._readConfig(),!0}onCursorStateChanged(e){const t=e.selections[0].getPosition();return this._lastCursorModelPosition=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(t),2===this._renderLineNumbers||3===this._renderLineNumbers}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getLineRenderLineNumber(e){const t=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(e,1));if(1!==t.column)return"";const i=t.lineNumber;if(this._renderCustomLineNumbers)return this._renderCustomLineNumbers(i);if(2===this._renderLineNumbers){const e=Math.abs(this._lastCursorModelPosition.lineNumber-i);return 0===e?'<span class="relative-current-line-number">'+i+"</span>":String(e)}return 3===this._renderLineNumbers?this._lastCursorModelPosition.lineNumber===i||i%10==0?String(i):"":String(i)}prepareRender(e){if(0===this._renderLineNumbers)return void(this._renderResult=null);const t=f.IJ?this._lineHeight%2==0?" lh-even":" lh-odd":"",i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,r='<div class="'+Le.CLASS_NAME+t+'" style="left:'+this._lineNumbersLeft.toString()+"px;width:"+this._lineNumbersWidth.toString()+'px;">',s=this._context.model.getLineCount(),o=[];for(let e=i;e<=n;e++){const t=e-i;if(!this._renderFinalNewline&&e===s&&0===this._context.model.getLineLength(e)){o[t]="";continue}const n=this._getLineRenderLineNumber(e);o[t]=n?r+n+"</div>":""}this._renderResult=o}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}Le.CLASS_NAME="line-numbers",(0,Y.Ic)(((e,t)=>{const i=e.getColor(xe.hw);i&&t.addRule(`.monaco-editor .line-numbers { color: ${i}; }`);const n=e.getColor(xe.DD);n&&t.addRule(`.monaco-editor .current-line ~ .line-numbers { color: ${n}; }`)}));class Me extends N{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(117);this._canUseLayerHinting=!t.get(23),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._domNode=(0,g.X)(document.createElement("div")),this._domNode.setClassName(Me.OUTER_CLASS_NAME),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._glyphMarginBackgroundDomNode=(0,g.X)(document.createElement("div")),this._glyphMarginBackgroundDomNode.setClassName(Me.CLASS_NAME),this._domNode.appendChild(this._glyphMarginBackgroundDomNode)}dispose(){super.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(117);return this._canUseLayerHinting=!t.get(23),this._contentLeft=i.contentLeft,this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollTopChanged}prepareRender(e){}render(e){this._domNode.setLayerHinting(this._canUseLayerHinting),this._domNode.setContain("strict");const t=e.scrollTop-e.bigNumbersDelta;this._domNode.setTop(-t);const i=Math.min(e.scrollHeight,1e6);this._domNode.setHeight(i),this._domNode.setWidth(this._contentLeft),this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft),this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth),this._glyphMarginBackgroundDomNode.setHeight(i)}}Me.CLASS_NAME="glyph-margin",Me.OUTER_CLASS_NAME="margin";var De=i(59410),Ne=i(96542);class Ee{constructor(e,t,i){this.top=e,this.left=t,this.width=i}setWidth(e){return new Ee(this.top,this.left,e)}}const Te=b.un||b.vU;class Ie extends N{constructor(e,t,i){super(e),this._primaryCursorPosition=new Q.L(1,1),this._primaryCursorVisibleRange=null,this._viewController=t,this._viewHelper=i,this._scrollLeft=0,this._scrollTop=0;const r=this._context.configuration.options,s=r.get(117);this._setAccessibilityOptions(r),this._contentLeft=s.contentLeft,this._contentWidth=s.contentWidth,this._contentHeight=s.height,this._fontInfo=r.get(36),this._lineHeight=r.get(51),this._emptySelectionClipboard=r.get(26),this._copyWithSyntaxHighlighting=r.get(16),this._visibleTextArea=null,this._selections=[new u.Y(1,1,1,1)],this._modelSelections=[new u.Y(1,1,1,1)],this._lastRenderPosition=null,this.textArea=(0,g.X)(document.createElement("textarea")),E.write(this.textArea,6),this.textArea.setClassName(`inputarea ${Ne.S}`),this.textArea.setAttribute("wrap","off"),this.textArea.setAttribute("autocorrect","off"),this.textArea.setAttribute("autocapitalize","off"),this.textArea.setAttribute("autocomplete","off"),this.textArea.setAttribute("spellcheck","false"),this.textArea.setAttribute("aria-label",this._getAriaLabel(r)),this.textArea.setAttribute("tabindex",String(r.get(102))),this.textArea.setAttribute("role","textbox"),this.textArea.setAttribute("aria-roledescription",n.N("editor","editor")),this.textArea.setAttribute("aria-multiline","true"),this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),f.$L&&r.get(72)&&this.textArea.setAttribute("readonly","true"),this.textAreaCover=(0,g.X)(document.createElement("div")),this.textAreaCover.setPosition("absolute");const o={getLineCount:()=>this._context.model.getLineCount(),getLineMaxColumn:e=>this._context.model.getLineMaxColumn(e),getValueInRange:(e,t)=>this._context.model.getValueInRange(e,t)},a={getDataToCopy:e=>{const t=this._context.model.getPlainTextToCopy(this._modelSelections,this._emptySelectionClipboard,f.ED),i=this._context.model.getEOL(),n=this._emptySelectionClipboard&&1===this._modelSelections.length&&this._modelSelections[0].isEmpty(),r=Array.isArray(t)?t:null,s=Array.isArray(t)?t.join(i):t;let o,a=null;if(e&&(Ce.RA.forceCopyWithSyntaxHighlighting||this._copyWithSyntaxHighlighting&&s.length<65536)){const e=this._context.model.getRichTextToCopy(this._modelSelections,this._emptySelectionClipboard);e&&(o=e.html,a=e.mode)}return{isFromEmptySelection:n,multicursorText:r,text:s,html:o,mode:a}},getScreenReaderContent:e=>{if(1===this._accessibilitySupport){if(f.dz){const e=this._selections[0];if(e.isEmpty()){const t=e.getStartPosition();let i=this._getWordBeforePosition(t);if(0===i.length&&(i=this._getCharacterBeforePosition(t)),i.length>0)return new Se.u(i,i.length,i.length,t,t)}}return Se.u.EMPTY}return Se.e.fromEditorSelection(e,o,this._selections[0],this._accessibilityPageSize,0===this._accessibilitySupport)},deduceModelPosition:(e,t,i)=>this._context.model.deduceModelPositionRelativeToViewPosition(e,t,i)};this._textAreaInput=this._register(new Ce.Fz(a,this.textArea)),this._register(this._textAreaInput.onKeyDown((e=>{this._viewController.emitKeyDown(e)}))),this._register(this._textAreaInput.onKeyUp((e=>{this._viewController.emitKeyUp(e)}))),this._register(this._textAreaInput.onPaste((e=>{let t=!1,i=null,n=null;e.metadata&&(t=this._emptySelectionClipboard&&!!e.metadata.isFromEmptySelection,i=void 0!==e.metadata.multicursorText?e.metadata.multicursorText:null,n=e.metadata.mode),this._viewController.paste(e.text,t,i,n)}))),this._register(this._textAreaInput.onCut((()=>{this._viewController.cut()}))),this._register(this._textAreaInput.onType((e=>{e.replaceCharCnt?this._viewController.replacePreviousChar(e.text,e.replaceCharCnt):this._viewController.type(e.text)}))),this._register(this._textAreaInput.onSelectionChangeRequest((e=>{this._viewController.setSelection(e)}))),this._register(this._textAreaInput.onCompositionStart((e=>{const t=this._selections[0].startLineNumber,i=this._selections[0].startColumn-(e.moveOneCharacterLeft?1:0);this._context.model.revealRange("keyboard",!0,new X.e(t,i,t,i),0,1);const n=this._viewHelper.visibleRangeForPositionRelativeToEditor(t,i);n&&(this._visibleTextArea=new Ee(this._context.viewLayout.getVerticalOffsetForLineNumber(t),n.left,Te?0:1),this._render()),this.textArea.setClassName(`inputarea ${Ne.S} ime-input`),this._viewController.compositionStart()}))),this._register(this._textAreaInput.onCompositionUpdate((e=>{b.un?this._visibleTextArea=this._visibleTextArea.setWidth(0):this._visibleTextArea=this._visibleTextArea.setWidth(function(e,t){const i=document.createElement("canvas").getContext("2d");var n;i.font=("normal",`normal normal ${(n=t).fontWeight} ${n.fontSize}px / ${n.lineHeight}px ${n.fontFamily}`);const r=i.measureText(e);return b.vU?r.width+2:r.width}(e.data,this._fontInfo)),this._render()}))),this._register(this._textAreaInput.onCompositionEnd((()=>{this._visibleTextArea=null,this._render(),this.textArea.setClassName(`inputarea ${Ne.S}`),this._viewController.compositionEnd()}))),this._register(this._textAreaInput.onFocus((()=>{this._context.model.setHasFocus(!0)}))),this._register(this._textAreaInput.onBlur((()=>{this._context.model.setHasFocus(!1)})))}dispose(){super.dispose()}_getWordBeforePosition(e){const t=this._context.model.getLineContent(e.lineNumber),i=(0,De.u)(this._context.configuration.options.get(105));let n=e.column,r=0;for(;n>1;){const s=t.charCodeAt(n-2);if(0!==i.get(s)||r>50)return t.substring(n-1,e.column-1);r++,n--}return t.substring(0,e.column-1)}_getCharacterBeforePosition(e){if(e.column>1){const t=this._context.model.getLineContent(e.lineNumber).charAt(e.column-2);if(!we.ZG(t.charCodeAt(0)))return t}return""}_getAriaLabel(e){return 1===e.get(2)?n.N("accessibilityOffAriaLabel","The editor is not accessible at this time. Press {0} for options.",f.IJ?"Shift+Alt+F1":"Alt+F1"):e.get(4)}_setAccessibilityOptions(e){this._accessibilitySupport=e.get(2);const t=e.get(3);2===this._accessibilitySupport&&t===H.BH.accessibilityPageSize.defaultValue?this._accessibilityPageSize=100:this._accessibilityPageSize=t}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(117);return this._setAccessibilityOptions(t),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._contentHeight=i.height,this._fontInfo=t.get(36),this._lineHeight=t.get(51),this._emptySelectionClipboard=t.get(26),this._copyWithSyntaxHighlighting=t.get(16),this.textArea.setAttribute("aria-label",this._getAriaLabel(t)),this.textArea.setAttribute("tabindex",String(t.get(102))),f.$L&&e.hasChanged(72)&&(t.get(72)?this.textArea.setAttribute("readonly","true"):this.textArea.removeAttribute("readonly")),e.hasChanged(2)&&this._textAreaInput.writeScreenReaderContent("strategy changed"),!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),this._modelSelections=e.modelSelections.slice(0),this._textAreaInput.writeScreenReaderContent("selection changed"),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return this._scrollLeft=e.scrollLeft,this._scrollTop=e.scrollTop,!0}onZonesChanged(e){return!0}isFocused(){return this._textAreaInput.isFocused()}focusTextArea(){this._textAreaInput.focusTextArea()}getLastRenderData(){return this._lastRenderPosition}setAriaOptions(e){e.activeDescendant?(this.textArea.setAttribute("aria-haspopup","true"),this.textArea.setAttribute("aria-autocomplete","list"),this.textArea.setAttribute("aria-activedescendant",e.activeDescendant)):(this.textArea.setAttribute("aria-haspopup","false"),this.textArea.setAttribute("aria-autocomplete","both"),this.textArea.removeAttribute("aria-activedescendant")),e.role&&this.textArea.setAttribute("role",e.role)}prepareRender(e){this._primaryCursorPosition=new Q.L(this._selections[0].positionLineNumber,this._selections[0].positionColumn),this._primaryCursorVisibleRange=e.visibleRangeForPosition(this._primaryCursorPosition)}render(e){this._textAreaInput.writeScreenReaderContent("render"),this._render()}_render(){if(this._visibleTextArea)return void this._renderInsideEditor(null,this._visibleTextArea.top-this._scrollTop,this._contentLeft+this._visibleTextArea.left-this._scrollLeft,this._visibleTextArea.width,this._lineHeight);if(!this._primaryCursorVisibleRange)return void this._renderAtTopLeft();const e=this._contentLeft+this._primaryCursorVisibleRange.left-this._scrollLeft;if(e<this._contentLeft||e>this._contentLeft+this._contentWidth)return void this._renderAtTopLeft();const t=this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber)-this._scrollTop;t<0||t>this._contentHeight?this._renderAtTopLeft():f.dz?this._renderInsideEditor(this._primaryCursorPosition,t,e,Te?0:1,this._lineHeight):this._renderInsideEditor(this._primaryCursorPosition,t,e,Te?0:1,Te?0:1)}_renderInsideEditor(e,t,i,n,r){this._lastRenderPosition=e;const s=this.textArea,o=this.textAreaCover;c.V.applyFontInfo(s,this._fontInfo),s.setTop(t),s.setLeft(i),s.setWidth(n),s.setHeight(r),o.setTop(0),o.setLeft(0),o.setWidth(0),o.setHeight(0)}_renderAtTopLeft(){this._lastRenderPosition=null;const e=this.textArea,t=this.textAreaCover;if(c.V.applyFontInfo(e,this._fontInfo),e.setTop(0),e.setLeft(0),t.setTop(0),t.setLeft(0),Te)return e.setWidth(0),e.setHeight(0),t.setWidth(0),void t.setHeight(0);e.setWidth(1),e.setHeight(1),t.setWidth(1),t.setHeight(1);const i=this._context.configuration.options;i.get(42)?t.setClassName("monaco-editor-background textAreaCover "+Me.OUTER_CLASS_NAME):0!==i.get(52).renderType?t.setClassName("monaco-editor-background textAreaCover "+Le.CLASS_NAME):t.setClassName("monaco-editor-background textAreaCover")}}var Oe=i(18728);class Ae{constructor(e,t,i,n){this.configuration=e,this.viewModel=t,this.userInputEvents=i,this.commandDelegate=n}paste(e,t,i,n){this.commandDelegate.paste(e,t,i,n)}type(e){this.commandDelegate.type(e)}replacePreviousChar(e,t){this.commandDelegate.replacePreviousChar(e,t)}compositionStart(){this.commandDelegate.startComposition()}compositionEnd(){this.commandDelegate.endComposition()}cut(){this.commandDelegate.cut()}setSelection(e){Oe.CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel,{source:"keyboard",selection:e})}_validateViewColumn(e){const t=this.viewModel.getLineMinColumn(e.lineNumber);return e.column<t?new Q.L(e.lineNumber,t):e}_hasMulticursorModifier(e){switch(this.configuration.options.get(61)){case"altKey":return e.altKey;case"ctrlKey":return e.ctrlKey;case"metaKey":return e.metaKey;default:return!1}}_hasNonMulticursorModifier(e){switch(this.configuration.options.get(61)){case"altKey":return e.ctrlKey||e.metaKey;case"ctrlKey":return e.altKey||e.metaKey;case"metaKey":return e.ctrlKey||e.altKey;default:return!1}}dispatchMouse(e){const t=this.configuration.options,i=f.IJ&&t.get(88),n=t.get(13);e.middleButton&&!i?this._columnSelect(e.position,e.mouseColumn,e.inSelectionMode):e.startedOnLineNumbers?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelect(e.position):this._createCursor(e.position,!0):e.inSelectionMode?this._lineSelectDrag(e.position):this._lineSelect(e.position):e.mouseDownCount>=4?this._selectAll():3===e.mouseDownCount?this._hasMulticursorModifier(e)?e.inSelectionMode?this._lastCursorLineSelectDrag(e.position):this._lastCursorLineSelect(e.position):e.inSelectionMode?this._lineSelectDrag(e.position):this._lineSelect(e.position):2===e.mouseDownCount?this._hasMulticursorModifier(e)?this._lastCursorWordSelect(e.position):e.inSelectionMode?this._wordSelectDrag(e.position):this._wordSelect(e.position):this._hasMulticursorModifier(e)?this._hasNonMulticursorModifier(e)||(e.shiftKey?this._columnSelect(e.position,e.mouseColumn,!0):e.inSelectionMode?this._lastCursorMoveToSelect(e.position):this._createCursor(e.position,!1)):e.inSelectionMode?e.altKey||n?this._columnSelect(e.position,e.mouseColumn,!0):this._moveToSelect(e.position):this.moveTo(e.position)}_usualArgs(e){return e=this._validateViewColumn(e),{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e}}moveTo(e){Oe.CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_moveToSelect(e){Oe.CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_columnSelect(e,t,i){e=this._validateViewColumn(e),Oe.CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,mouseColumn:t,doColumnSelect:i})}_createCursor(e,t){e=this._validateViewColumn(e),Oe.CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel,{source:"mouse",position:this._convertViewToModelPosition(e),viewPosition:e,wholeLine:t})}_lastCursorMoveToSelect(e){Oe.CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_wordSelect(e){Oe.CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_wordSelectDrag(e){Oe.CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_lastCursorWordSelect(e){Oe.CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_lineSelect(e){Oe.CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_lineSelectDrag(e){Oe.CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_lastCursorLineSelect(e){Oe.CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_lastCursorLineSelectDrag(e){Oe.CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel,this._usualArgs(e))}_selectAll(){Oe.CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel,{source:"mouse"})}_convertViewToModelPosition(e){return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(e)}emitKeyDown(e){this.userInputEvents.emitKeyDown(e)}emitKeyUp(e){this.userInputEvents.emitKeyUp(e)}emitContextMenu(e){this.userInputEvents.emitContextMenu(e)}emitMouseMove(e){this.userInputEvents.emitMouseMove(e)}emitMouseLeave(e){this.userInputEvents.emitMouseLeave(e)}emitMouseUp(e){this.userInputEvents.emitMouseUp(e)}emitMouseDown(e){this.userInputEvents.emitMouseDown(e)}emitMouseDrag(e){this.userInputEvents.emitMouseDrag(e)}emitMouseDrop(e){this.userInputEvents.emitMouseDrop(e)}emitMouseWheel(e){this.userInputEvents.emitMouseWheel(e)}}class Re{constructor(e){this.onKeyDown=null,this.onKeyUp=null,this.onContextMenu=null,this.onMouseMove=null,this.onMouseLeave=null,this.onMouseDown=null,this.onMouseUp=null,this.onMouseDrag=null,this.onMouseDrop=null,this.onMouseWheel=null,this._coordinatesConverter=e}emitKeyDown(e){this.onKeyDown&&this.onKeyDown(e)}emitKeyUp(e){this.onKeyUp&&this.onKeyUp(e)}emitContextMenu(e){this.onContextMenu&&this.onContextMenu(this._convertViewToModelMouseEvent(e))}emitMouseMove(e){this.onMouseMove&&this.onMouseMove(this._convertViewToModelMouseEvent(e))}emitMouseLeave(e){this.onMouseLeave&&this.onMouseLeave(this._convertViewToModelMouseEvent(e))}emitMouseDown(e){this.onMouseDown&&this.onMouseDown(this._convertViewToModelMouseEvent(e))}emitMouseUp(e){this.onMouseUp&&this.onMouseUp(this._convertViewToModelMouseEvent(e))}emitMouseDrag(e){this.onMouseDrag&&this.onMouseDrag(this._convertViewToModelMouseEvent(e))}emitMouseDrop(e){this.onMouseDrop&&this.onMouseDrop(this._convertViewToModelMouseEvent(e))}emitMouseWheel(e){this.onMouseWheel&&this.onMouseWheel(e)}_convertViewToModelMouseEvent(e){return e.target?{event:e.event,target:this._convertViewToModelMouseTarget(e.target)}:e}_convertViewToModelMouseTarget(e){return Re.convertViewToModelMouseTarget(e,this._coordinatesConverter)}static convertViewToModelMouseTarget(e,t){return new Pe(e.element,e.type,e.mouseColumn,e.position?t.convertViewPositionToModelPosition(e.position):null,e.range?t.convertViewRangeToModelRange(e.range):null,e.detail)}}class Pe{constructor(e,t,i,n,r,s){this.element=e,this.type=t,this.mouseColumn=i,this.position=n,this.range=r,this.detail=s}toString(){return ie.toString(this)}}var Fe=i(50072);class Be{constructor(e){this._createLine=e,this._set(1,[])}flush(){this._set(1,[])}_set(e,t){this._lines=t,this._rendLineNumberStart=e}_get(){return{rendLineNumberStart:this._rendLineNumberStart,lines:this._lines}}getStartLineNumber(){return this._rendLineNumberStart}getEndLineNumber(){return this._rendLineNumberStart+this._lines.length-1}getCount(){return this._lines.length}getLine(e){const t=e-this._rendLineNumberStart;if(t<0||t>=this._lines.length)throw new Error("Illegal value for lineNumber");return this._lines[t]}onLinesDeleted(e,t){if(0===this.getCount())return null;const i=this.getStartLineNumber(),n=this.getEndLineNumber();if(t<i){const i=t-e+1;return this._rendLineNumberStart-=i,null}if(e>n)return null;let r=0,s=0;for(let o=i;o<=n;o++){const i=o-this._rendLineNumberStart;e<=o&&o<=t&&(0===s?(r=i,s=1):s++)}if(e<i){let n=0;n=t<i?t-e+1:i-e,this._rendLineNumberStart-=n}return this._lines.splice(r,s)}onLinesChanged(e,t){if(0===this.getCount())return!1;const i=this.getStartLineNumber(),n=this.getEndLineNumber();let r=!1;for(let s=e;s<=t;s++)s>=i&&s<=n&&(this._lines[s-this._rendLineNumberStart].onContentChanged(),r=!0);return r}onLinesInserted(e,t){if(0===this.getCount())return null;const i=t-e+1,n=this.getStartLineNumber(),r=this.getEndLineNumber();if(e<=n)return this._rendLineNumberStart+=i,null;if(e>r)return null;if(i+e>r)return this._lines.splice(e-this._rendLineNumberStart,r-e+1);const s=[];for(let e=0;e<i;e++)s[e]=this._createLine();const o=e-this._rendLineNumberStart,a=this._lines.slice(0,o),l=this._lines.slice(o,this._lines.length-i),c=this._lines.slice(this._lines.length-i,this._lines.length);return this._lines=a.concat(s).concat(l),c}onTokensChanged(e){if(0===this.getCount())return!1;const t=this.getStartLineNumber(),i=this.getEndLineNumber();let n=!1;for(let r=0,s=e.length;r<s;r++){const s=e[r];if(s.toLineNumber<t||s.fromLineNumber>i)continue;const o=Math.max(t,s.fromLineNumber),a=Math.min(i,s.toLineNumber);for(let e=o;e<=a;e++){const t=e-this._rendLineNumberStart;this._lines[t].onTokensChanged(),n=!0}}return n}}class We{constructor(e){this._host=e,this.domNode=this._createDomNode(),this._linesCollection=new Be((()=>this._host.createVisibleLine()))}_createDomNode(){const e=(0,g.X)(document.createElement("div"));return e.setClassName("view-layer"),e.setPosition("absolute"),e.domNode.setAttribute("role","presentation"),e.domNode.setAttribute("aria-hidden","true"),e}onConfigurationChanged(e){return!!e.hasChanged(117)}onFlushed(e){return this._linesCollection.flush(),!0}onLinesChanged(e){return this._linesCollection.onLinesChanged(e.fromLineNumber,e.toLineNumber)}onLinesDeleted(e){const t=this._linesCollection.onLinesDeleted(e.fromLineNumber,e.toLineNumber);if(t)for(let e=0,i=t.length;e<i;e++){const i=t[e].getDomNode();i&&this.domNode.domNode.removeChild(i)}return!0}onLinesInserted(e){const t=this._linesCollection.onLinesInserted(e.fromLineNumber,e.toLineNumber);if(t)for(let e=0,i=t.length;e<i;e++){const i=t[e].getDomNode();i&&this.domNode.domNode.removeChild(i)}return!0}onScrollChanged(e){return e.scrollTopChanged}onTokensChanged(e){return this._linesCollection.onTokensChanged(e.ranges)}onZonesChanged(e){return!0}getStartLineNumber(){return this._linesCollection.getStartLineNumber()}getEndLineNumber(){return this._linesCollection.getEndLineNumber()}getVisibleLine(e){return this._linesCollection.getLine(e)}renderLines(e){const t=this._linesCollection._get(),i=new Ye(this.domNode.domNode,this._host,e),n={rendLineNumberStart:t.rendLineNumberStart,lines:t.lines,linesLength:t.lines.length},r=i.render(n,e.startLineNumber,e.endLineNumber,e.relativeVerticalOffset);this._linesCollection._set(r.rendLineNumberStart,r.lines)}}class Ye{constructor(e,t,i){this.domNode=e,this.host=t,this.viewportData=i}render(e,t,i,n){const r={rendLineNumberStart:e.rendLineNumberStart,lines:e.lines.slice(0),linesLength:e.linesLength};if(r.rendLineNumberStart+r.linesLength-1<t||i<r.rendLineNumberStart){r.rendLineNumberStart=t,r.linesLength=i-t+1,r.lines=[];for(let e=t;e<=i;e++)r.lines[e-t]=this.host.createVisibleLine();return this._finishRendering(r,!0,n),r}if(this._renderUntouchedLines(r,Math.max(t-r.rendLineNumberStart,0),Math.min(i-r.rendLineNumberStart,r.linesLength-1),n,t),r.rendLineNumberStart>t){const e=t,s=Math.min(i,r.rendLineNumberStart-1);e<=s&&(this._insertLinesBefore(r,e,s,n,t),r.linesLength+=s-e+1)}else if(r.rendLineNumberStart<t){const e=Math.min(r.linesLength,t-r.rendLineNumberStart);e>0&&(this._removeLinesBefore(r,e),r.linesLength-=e)}if(r.rendLineNumberStart=t,r.rendLineNumberStart+r.linesLength-1<i){const e=r.rendLineNumberStart+r.linesLength,s=i;e<=s&&(this._insertLinesAfter(r,e,s,n,t),r.linesLength+=s-e+1)}else if(r.rendLineNumberStart+r.linesLength-1>i){const e=Math.max(0,i-r.rendLineNumberStart+1),t=r.linesLength-1-e+1;t>0&&(this._removeLinesAfter(r,t),r.linesLength-=t)}return this._finishRendering(r,!1,n),r}_renderUntouchedLines(e,t,i,n,r){const s=e.rendLineNumberStart,o=e.lines;for(let e=t;e<=i;e++){const t=s+e;o[e].layoutLine(t,n[t-r])}}_insertLinesBefore(e,t,i,n,r){const s=[];let o=0;for(let e=t;e<=i;e++)s[o++]=this.host.createVisibleLine();e.lines=s.concat(e.lines)}_removeLinesBefore(e,t){for(let i=0;i<t;i++){const t=e.lines[i].getDomNode();t&&this.domNode.removeChild(t)}e.lines.splice(0,t)}_insertLinesAfter(e,t,i,n,r){const s=[];let o=0;for(let e=t;e<=i;e++)s[o++]=this.host.createVisibleLine();e.lines=e.lines.concat(s)}_removeLinesAfter(e,t){const i=e.linesLength-t;for(let n=0;n<t;n++){const t=e.lines[i+n].getDomNode();t&&this.domNode.removeChild(t)}e.lines.splice(i,t)}_finishRenderingNewLines(e,t,i,n){const r=this.domNode.lastChild;t||!r?this.domNode.innerHTML=i:r.insertAdjacentHTML("afterend",i);let s=this.domNode.lastChild;for(let t=e.linesLength-1;t>=0;t--){const i=e.lines[t];n[t]&&(i.setDomNode(s),s=s.previousSibling)}}_finishRenderingInvalidLines(e,t,i){const n=document.createElement("div");n.innerHTML=t;for(let t=0;t<e.linesLength;t++){const r=e.lines[t];if(i[t]){const e=n.firstChild,t=r.getDomNode();t.parentNode.replaceChild(e,t),r.setDomNode(e)}}}_finishRendering(e,t,i){const n=Ye._sb,r=e.linesLength,s=e.lines,o=e.rendLineNumberStart,a=[];{n.reset();let l=!1;for(let e=0;e<r;e++){const t=s[e];a[e]=!1,t.getDomNode()||t.renderLine(e+o,i[e],this.viewportData,n)&&(a[e]=!0,l=!0)}l&&this._finishRenderingNewLines(e,t,n.build(),a)}{n.reset();let t=!1;const l=[];for(let e=0;e<r;e++){const r=s[e];(l[e]=!1,a[e])||r.renderLine(e+o,i[e],this.viewportData,n)&&(l[e]=!0,t=!0)}t&&this._finishRenderingInvalidLines(e,n.build(),l)}}}Ye._sb=(0,Fe.l$)(1e5);class He extends N{constructor(e){super(e),this._visibleLines=new We(this),this.domNode=this._visibleLines.domNode,this._dynamicOverlays=[],this._isFocused=!1,this.domNode.setClassName("view-overlays")}shouldRender(){if(super.shouldRender())return!0;for(let e=0,t=this._dynamicOverlays.length;e<t;e++)if(this._dynamicOverlays[e].shouldRender())return!0;return!1}dispose(){super.dispose();for(let e=0,t=this._dynamicOverlays.length;e<t;e++)this._dynamicOverlays[e].dispose();this._dynamicOverlays=[]}getDomNode(){return this.domNode}createVisibleLine(){return new je(this._context.configuration,this._dynamicOverlays)}addDynamicOverlay(e){this._dynamicOverlays.push(e)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e);const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let n=t;n<=i;n++)this._visibleLines.getVisibleLine(n).onConfigurationChanged(e);return!0}onFlushed(e){return this._visibleLines.onFlushed(e)}onFocusChanged(e){return this._isFocused=e.isFocused,!0}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onScrollChanged(e){return this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._visibleLines.onZonesChanged(e)}prepareRender(e){const t=this._dynamicOverlays.filter((e=>e.shouldRender()));for(let i=0,n=t.length;i<n;i++){const n=t[i];n.prepareRender(e),n.onDidRender()}}render(e){this._viewOverlaysRender(e),this.domNode.toggleClassName("focused",this._isFocused)}_viewOverlaysRender(e){this._visibleLines.renderLines(e.viewportData)}}class je{constructor(e,t){this._configuration=e,this._lineHeight=this._configuration.options.get(51),this._dynamicOverlays=t,this._domNode=null,this._renderedContent=null}getDomNode(){return this._domNode?this._domNode.domNode:null}setDomNode(e){this._domNode=(0,g.X)(e)}onContentChanged(){}onTokensChanged(){}onConfigurationChanged(e){this._lineHeight=this._configuration.options.get(51)}renderLine(e,t,i,n){let r="";for(let t=0,n=this._dynamicOverlays.length;t<n;t++)r+=this._dynamicOverlays[t].render(i.startLineNumber,e);return this._renderedContent!==r&&(this._renderedContent=r,n.appendASCIIString('<div style="position:absolute;top:'),n.appendASCIIString(String(t)),n.appendASCIIString("px;width:100%;height:"),n.appendASCIIString(String(this._lineHeight)),n.appendASCIIString('px;">'),n.appendASCIIString(r),n.appendASCIIString("</div>"),!0)}layoutLine(e,t){this._domNode&&(this._domNode.setTop(t),this._domNode.setHeight(this._lineHeight))}}class Ve extends He{constructor(e){super(e);const t=this._context.configuration.options.get(117);this._contentWidth=t.contentWidth,this.domNode.setHeight(0)}onConfigurationChanged(e){const t=this._context.configuration.options.get(117);return this._contentWidth=t.contentWidth,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollWidthChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e),this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth))}}class ze extends He{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(117);this._contentLeft=i.contentLeft,this.domNode.setClassName("margin-view-overlays"),this.domNode.setWidth(1),c.V.applyFontInfo(this.domNode,t.get(36))}onConfigurationChanged(e){const t=this._context.configuration.options;c.V.applyFontInfo(this.domNode,t.get(36));const i=t.get(117);return this._contentLeft=i.contentLeft,super.onConfigurationChanged(e)||!0}onScrollChanged(e){return super.onScrollChanged(e)||e.scrollHeightChanged}_viewOverlaysRender(e){super._viewOverlaysRender(e);const t=Math.min(e.scrollHeight,1e6);this.domNode.setHeight(t),this.domNode.setWidth(this._contentLeft)}}class Ue{constructor(e,t){this.top=e,this.left=t}}class $e extends N{constructor(e,t){super(e),this._viewDomNode=t,this._widgets={},this.domNode=(0,g.X)(document.createElement("div")),E.write(this.domNode,1),this.domNode.setClassName("contentWidgets"),this.domNode.setPosition("absolute"),this.domNode.setTop(0),this.overflowingContentWidgetsDomNode=(0,g.X)(document.createElement("div")),E.write(this.overflowingContentWidgetsDomNode,2),this.overflowingContentWidgetsDomNode.setClassName("overflowingContentWidgets")}dispose(){super.dispose(),this._widgets={}}onConfigurationChanged(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onConfigurationChanged(e);return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLineMappingChanged(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onLineMappingChanged(e);return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return!0}onZonesChanged(e){return!0}addWidget(e){const t=new Ke(this._context,this._viewDomNode,e);this._widgets[t.id]=t,t.allowEditorOverflow?this.overflowingContentWidgetsDomNode.appendChild(t.domNode):this.domNode.appendChild(t.domNode),this.setShouldRender()}setWidgetPosition(e,t,i){this._widgets[e.getId()].setPosition(t,i),this.setShouldRender()}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const e=this._widgets[t];delete this._widgets[t];const i=e.domNode.domNode;i.parentNode.removeChild(i),i.removeAttribute("monaco-visible-content-widget"),this.setShouldRender()}}shouldSuppressMouseDownOnWidget(e){return!!this._widgets.hasOwnProperty(e)&&this._widgets[e].suppressMouseDown}onBeforeRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].onBeforeRender(e)}prepareRender(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].prepareRender(e)}render(e){const t=Object.keys(this._widgets);for(const i of t)this._widgets[i].render(e)}}class Ke{constructor(e,t,i){this._context=e,this._viewDomNode=t,this._actual=i,this.domNode=(0,g.X)(this._actual.getDomNode()),this.id=this._actual.getId(),this.allowEditorOverflow=this._actual.allowEditorOverflow||!1,this.suppressMouseDown=this._actual.suppressMouseDown||!1;const n=this._context.configuration.options,r=n.get(117);this._fixedOverflowWidgets=n.get(30),this._contentWidth=r.contentWidth,this._contentLeft=r.contentLeft,this._lineHeight=n.get(51),this._range=null,this._viewRange=null,this._preference=[],this._cachedDomNodeClientWidth=-1,this._cachedDomNodeClientHeight=-1,this._maxWidth=this._getMaxWidth(),this._isVisible=!1,this._renderData=null,this.domNode.setPosition(this._fixedOverflowWidgets&&this.allowEditorOverflow?"fixed":"absolute"),this.domNode.setVisibility("hidden"),this.domNode.setAttribute("widgetId",this.id),this.domNode.setMaxWidth(this._maxWidth)}onConfigurationChanged(e){const t=this._context.configuration.options;if(this._lineHeight=t.get(51),e.hasChanged(117)){const e=t.get(117);this._contentLeft=e.contentLeft,this._contentWidth=e.contentWidth,this._maxWidth=this._getMaxWidth()}}onLineMappingChanged(e){this._setPosition(this._range)}_setPosition(e){if(this._range=e,this._viewRange=null,this._range){const e=this._context.model.validateModelRange(this._range);(this._context.model.coordinatesConverter.modelPositionIsVisible(e.getStartPosition())||this._context.model.coordinatesConverter.modelPositionIsVisible(e.getEndPosition()))&&(this._viewRange=this._context.model.coordinatesConverter.convertModelRangeToViewRange(e))}}_getMaxWidth(){return this.allowEditorOverflow?window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth:this._contentWidth}setPosition(e,t){this._setPosition(e),this._preference=t,this._cachedDomNodeClientWidth=-1,this._cachedDomNodeClientHeight=-1}_layoutBoxInViewport(e,t,i,n,r){const s=e.top,o=s,a=t.top+this._lineHeight,l=s-n,c=o>=n,d=a,h=r.viewportHeight-a>=n;let u=e.left,g=t.left;return u+i>r.scrollLeft+r.viewportWidth&&(u=r.scrollLeft+r.viewportWidth-i),g+i>r.scrollLeft+r.viewportWidth&&(g=r.scrollLeft+r.viewportWidth-i),u<r.scrollLeft&&(u=r.scrollLeft),g<r.scrollLeft&&(g=r.scrollLeft),{fitsAbove:c,aboveTop:l,aboveLeft:u,fitsBelow:h,belowTop:d,belowLeft:g}}_layoutHorizontalSegmentInPage(e,t,i,n){const s=Math.max(0,t.left-n),o=Math.min(t.left+t.width+n,e.width);let a=t.left+i-r.DI.scrollX;if(a+n>o){const e=a-(o-n);a-=e,i-=e}if(a<s){const e=a-s;a-=e,i-=e}return[i,a]}_layoutBoxInPage(e,t,i,n,s){const o=e.top-n,a=t.top+this._lineHeight,l=r.i(this._viewDomNode.domNode),c=l.top+o-r.DI.scrollY,d=l.top+a-r.DI.scrollY,h=r.D6(document.body),[u,g]=this._layoutHorizontalSegmentInPage(h,l,e.left-s.scrollLeft+this._contentLeft,i),[f,p]=this._layoutHorizontalSegmentInPage(h,l,t.left-s.scrollLeft+this._contentLeft,i),m=c>=22,_=d+n<=h.height-22;return this._fixedOverflowWidgets?{fitsAbove:m,aboveTop:Math.max(c,22),aboveLeft:g,fitsBelow:_,belowTop:d,belowLeft:p}:{fitsAbove:m,aboveTop:o,aboveLeft:u,fitsBelow:_,belowTop:a,belowLeft:f}}_prepareRenderWidgetAtExactPositionOverflowing(e){return new Ue(e.top,e.left+this._contentLeft)}_getTopAndBottomLeft(e){if(!this._viewRange)return[null,null];const t=e.linesVisibleRangesForRange(this._viewRange,!1);if(!t||0===t.length)return[null,null];let i=t[0],n=t[0];for(const e of t)e.lineNumber<i.lineNumber&&(i=e),e.lineNumber>n.lineNumber&&(n=e);let r=1073741824;for(const e of i.ranges)e.left<r&&(r=e.left);let s=1073741824;for(const e of n.ranges)e.left<s&&(s=e.left);const o=e.getVerticalOffsetForLineNumber(i.lineNumber)-e.scrollTop,a=new Ue(o,r),l=e.getVerticalOffsetForLineNumber(n.lineNumber)-e.scrollTop;return[a,new Ue(l,s)]}_prepareRenderWidget(e){const[t,i]=this._getTopAndBottomLeft(e);if(!t||!i)return null;if(-1===this._cachedDomNodeClientWidth||-1===this._cachedDomNodeClientHeight){const e=this.domNode.domNode;this._cachedDomNodeClientWidth=e.clientWidth,this._cachedDomNodeClientHeight=e.clientHeight}let n;if(n=this.allowEditorOverflow?this._layoutBoxInPage(t,i,this._cachedDomNodeClientWidth,this._cachedDomNodeClientHeight,e):this._layoutBoxInViewport(t,i,this._cachedDomNodeClientWidth,this._cachedDomNodeClientHeight,e),this._preference)for(let e=1;e<=2;e++)for(const i of this._preference)if(1===i){if(!n)return null;if(2===e||n.fitsAbove)return new Ue(n.aboveTop,n.aboveLeft)}else{if(2!==i)return this.allowEditorOverflow?this._prepareRenderWidgetAtExactPositionOverflowing(t):t;if(!n)return null;if(2===e||n.fitsBelow)return new Ue(n.belowTop,n.belowLeft)}return null}onBeforeRender(e){this._viewRange&&this._preference&&(this._viewRange.endLineNumber<e.startLineNumber||this._viewRange.startLineNumber>e.endLineNumber||this.domNode.setMaxWidth(this._maxWidth))}prepareRender(e){this._renderData=this._prepareRenderWidget(e)}render(e){this._renderData?(this.allowEditorOverflow?(this.domNode.setTop(this._renderData.top),this.domNode.setLeft(this._renderData.left)):(this.domNode.setTop(this._renderData.top+e.scrollTop-e.bigNumbersDelta),this.domNode.setLeft(this._renderData.left)),this._isVisible||(this.domNode.setVisibility("inherit"),this.domNode.setAttribute("monaco-visible-content-widget","true"),this._isVisible=!0)):this._isVisible&&(this.domNode.removeAttribute("monaco-visible-content-widget"),this._isVisible=!1,this.domNode.setVisibility("hidden"))}}var qe=i(9488);let Ge=!0;class Ze extends ke{constructor(e){super(),this._context=e;const t=this._context.configuration.options,i=t.get(117);this._lineHeight=t.get(51),this._renderLineHighlight=t.get(77),this._renderLineHightlightOnlyWhenFocus=t.get(78),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,this._selectionIsEmpty=!0,this._focused=!1,this._cursorLineNumbers=[],this._selections=[],this._renderData=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}_readFromSelections(){let e=!1;const t=Ge?this._selections.slice(0,1):this._selections,i=t.map((e=>e.positionLineNumber));i.sort(((e,t)=>e-t)),qe.fS(this._cursorLineNumbers,i)||(this._cursorLineNumbers=i,e=!0);const n=t.every((e=>e.isEmpty()));return this._selectionIsEmpty!==n&&(this._selectionIsEmpty=n,e=!0),e}onThemeChanged(e){return this._readFromSelections()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(117);return this._lineHeight=t.get(51),this._renderLineHighlight=t.get(77),this._renderLineHightlightOnlyWhenFocus=t.get(78),this._contentLeft=i.contentLeft,this._contentWidth=i.contentWidth,!0}onCursorStateChanged(e){return this._selections=e.selections,this._readFromSelections()}onFlushed(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollWidthChanged||e.scrollTopChanged}onZonesChanged(e){return!0}onFocusChanged(e){return!!this._renderLineHightlightOnlyWhenFocus&&(this._focused=e.isFocused,!0)}prepareRender(e){if(!this._shouldRenderThis())return void(this._renderData=null);const t=this._renderOne(e),i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber,r=this._cursorLineNumbers.length;let s=0;const o=[];for(let e=i;e<=n;e++){const n=e-i;for(;s<r&&this._cursorLineNumbers[s]<e;)s++;s<r&&this._cursorLineNumbers[s]===e?o[n]=t:o[n]=""}this._renderData=o}render(e,t){if(!this._renderData)return"";const i=t-e;return i>=this._renderData.length?"":this._renderData[i]}}class Je extends Ze{_renderOne(e){return`<div class="${"current-line"+(this._shouldRenderOther()?" current-line-both":"")}" style="width:${Math.max(e.scrollWidth,this._contentWidth)}px; height:${this._lineHeight}px;"></div>`}_shouldRenderThis(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty&&(!this._renderLineHightlightOnlyWhenFocus||this._focused)}_shouldRenderOther(){return("gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&(!this._renderLineHightlightOnlyWhenFocus||this._focused)}}class Qe extends Ze{_renderOne(e){return`<div class="${"current-line current-line-margin"+(this._shouldRenderOther()?" current-line-margin-both":"")}" style="width:${this._contentLeft}px; height:${this._lineHeight}px;"></div>`}_shouldRenderThis(){return("gutter"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&(!this._renderLineHightlightOnlyWhenFocus||this._focused)}_shouldRenderOther(){return("line"===this._renderLineHighlight||"all"===this._renderLineHighlight)&&this._selectionIsEmpty&&(!this._renderLineHightlightOnlyWhenFocus||this._focused)}}(0,Y.Ic)(((e,t)=>{Ge=!1;const i=e.getColor(xe.Kh);if(i&&(t.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${i}; }`),t.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${i}; border: none; }`)),!i||i.isTransparent()||e.defines(xe.Mm)){const i=e.getColor(xe.Mm);i&&(Ge=!0,t.addRule(`.monaco-editor .view-overlays .current-line { border: 2px solid ${i}; }`),t.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ${i}; }`),"hc"===e.type&&(t.addRule(".monaco-editor .view-overlays .current-line { border-width: 1px; }"),t.addRule(".monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }")))}}));class Xe extends ke{constructor(e){super(),this._context=e;const t=this._context.configuration.options;this._lineHeight=t.get(51),this._typicalHalfwidthCharacterWidth=t.get(36).typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._lineHeight=t.get(51),this._typicalHalfwidthCharacterWidth=t.get(36).typicalHalfwidthCharacterWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}prepareRender(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let e=0,r=t.length;e<r;e++){const r=t[e];r.options.className&&(i[n++]=r)}i=i.sort(((e,t)=>{if(e.options.zIndex<t.options.zIndex)return-1;if(e.options.zIndex>t.options.zIndex)return 1;const i=e.options.className,n=t.options.className;return i<n?-1:i>n?1:X.e.compareRangesUsingStarts(e.range,t.range)}));const r=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber,o=[];for(let e=r;e<=s;e++)o[e-r]="";this._renderWholeLineDecorations(e,i,o),this._renderNormalDecorations(e,i,o),this._renderResult=o}_renderWholeLineDecorations(e,t,i){const n=String(this._lineHeight),r=e.visibleRange.startLineNumber,s=e.visibleRange.endLineNumber;for(let e=0,o=t.length;e<o;e++){const o=t[e];if(!o.options.isWholeLine)continue;const a='<div class="cdr '+o.options.className+'" style="left:0;width:100%;height:'+n+'px;"></div>',l=Math.max(o.range.startLineNumber,r),c=Math.min(o.range.endLineNumber,s);for(let e=l;e<=c;e++)i[e-r]+=a}}_renderNormalDecorations(e,t,i){const n=String(this._lineHeight),r=e.visibleRange.startLineNumber;let s=null,o=!1,a=null;for(let l=0,c=t.length;l<c;l++){const c=t[l];if(c.options.isWholeLine)continue;const d=c.options.className,h=Boolean(c.options.showIfCollapsed);let u=c.range;h&&1===u.endColumn&&u.endLineNumber!==u.startLineNumber&&(u=new X.e(u.startLineNumber,u.startColumn,u.endLineNumber-1,this._context.model.getLineMaxColumn(u.endLineNumber-1))),s===d&&o===h&&X.e.areIntersectingOrTouching(a,u)?a=X.e.plusRange(a,u):(null!==s&&this._renderNormalDecoration(e,a,s,o,n,r,i),s=d,o=h,a=u)}null!==s&&this._renderNormalDecoration(e,a,s,o,n,r,i)}_renderNormalDecoration(e,t,i,n,r,s,o){const a=e.linesVisibleRangesForRange(t,"findMatch"===i);if(a)for(let e=0,t=a.length;e<t;e++){const t=a[e];if(t.outsideRenderedLine)continue;const l=t.lineNumber-s;if(n&&1===t.ranges.length){const e=t.ranges[0];0===e.width&&(t.ranges[0]=new O(e.left,this._typicalHalfwidthCharacterWidth))}for(let e=0,n=t.ranges.length;e<n;e++){const n=t.ranges[e],s='<div class="cdr '+i+'" style="left:'+String(n.left)+"px;width:"+String(n.width)+"px;height:"+r+'px;"></div>';o[l]+=s}}}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}var et=i(9802);class tt extends N{constructor(e,t,i,n){super(e);const s=this._context.configuration.options,o=s.get(84),a=s.get(58),l=s.get(28),c=s.get(87),d={listenOnDomNode:i.domNode,className:"editor-scrollable "+(0,Y.m6)(e.theme.type),useShadows:!1,lazyRender:!0,vertical:o.vertical,horizontal:o.horizontal,verticalHasArrows:o.verticalHasArrows,horizontalHasArrows:o.horizontalHasArrows,verticalScrollbarSize:o.verticalScrollbarSize,verticalSliderSize:o.verticalSliderSize,horizontalScrollbarSize:o.horizontalScrollbarSize,horizontalSliderSize:o.horizontalSliderSize,handleMouseWheel:o.handleMouseWheel,alwaysConsumeMouseWheel:o.alwaysConsumeMouseWheel,arrowSize:o.arrowSize,mouseWheelScrollSensitivity:a,fastScrollSensitivity:l,scrollPredominantAxis:c};this.scrollbar=this._register(new et.$Z(t.domNode,d,this._context.viewLayout.getScrollable())),E.write(this.scrollbar.getDomNode(),5),this.scrollbarDomNode=(0,g.X)(this.scrollbar.getDomNode()),this.scrollbarDomNode.setPosition("absolute"),this._setLayout();const h=(e,t,i)=>{const n={};if(t){const t=e.scrollTop;t&&(n.scrollTop=this._context.viewLayout.getCurrentScrollTop()+t,e.scrollTop=0)}if(i){const t=e.scrollLeft;t&&(n.scrollLeft=this._context.viewLayout.getCurrentScrollLeft()+t,e.scrollLeft=0)}this._context.model.setScrollPosition(n,1)};this._register(r.nm(i.domNode,"scroll",(e=>h(i.domNode,!0,!0)))),this._register(r.nm(t.domNode,"scroll",(e=>h(t.domNode,!0,!1)))),this._register(r.nm(n.domNode,"scroll",(e=>h(n.domNode,!0,!1)))),this._register(r.nm(this.scrollbarDomNode.domNode,"scroll",(e=>h(this.scrollbarDomNode.domNode,!0,!1))))}dispose(){super.dispose()}_setLayout(){const e=this._context.configuration.options,t=e.get(117);this.scrollbarDomNode.setLeft(t.contentLeft),"right"===e.get(56).side?this.scrollbarDomNode.setWidth(t.contentWidth+t.minimap.minimapWidth):this.scrollbarDomNode.setWidth(t.contentWidth),this.scrollbarDomNode.setHeight(t.height)}getOverviewRulerLayoutInfo(){return this.scrollbar.getOverviewRulerLayoutInfo()}getDomNode(){return this.scrollbarDomNode}delegateVerticalScrollbarMouseDown(e){this.scrollbar.delegateVerticalScrollbarMouseDown(e)}onConfigurationChanged(e){if(e.hasChanged(84)||e.hasChanged(58)||e.hasChanged(28)){const e=this._context.configuration.options,t=e.get(84),i=e.get(58),n=e.get(28),r=e.get(87),s={handleMouseWheel:t.handleMouseWheel,mouseWheelScrollSensitivity:i,fastScrollSensitivity:n,scrollPredominantAxis:r};this.scrollbar.updateOptions(s)}return e.hasChanged(117)&&this._setLayout(),!0}onScrollChanged(e){return!0}onThemeChanged(e){return this.scrollbar.updateClassName("editor-scrollable "+(0,Y.m6)(this._context.theme.type)),!0}prepareRender(e){}render(e){this.scrollbar.renderNow()}}class it{constructor(e,t,i){this.startLineNumber=+e,this.endLineNumber=+t,this.className=String(i)}}class nt extends ke{_render(e,t,i){const n=[];for(let i=e;i<=t;i++)n[i-e]=[];if(0===i.length)return n;i.sort(((e,t)=>e.className===t.className?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.className<t.className?-1:1));let r=null,s=0;for(let o=0,a=i.length;o<a;o++){const a=i[o],l=a.className;let c=Math.max(a.startLineNumber,e)-e;const d=Math.min(a.endLineNumber,t)-e;r===l?(c=Math.max(s+1,c),s=Math.max(s,d)):(r=l,s=d);for(let e=c;e<=s;e++)n[e].push(r)}return n}}class rt extends nt{constructor(e){super(),this._context=e;const t=this._context.configuration.options,i=t.get(117);this._lineHeight=t.get(51),this._glyphMargin=t.get(42),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(117);return this._lineHeight=t.get(51),this._glyphMargin=t.get(42),this._glyphMarginLeft=i.glyphMarginLeft,this._glyphMarginWidth=i.glyphMarginWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let e=0,r=t.length;e<r;e++){const r=t[e],s=r.options.glyphMarginClassName;s&&(i[n++]=new it(r.range.startLineNumber,r.range.endLineNumber,s))}return i}prepareRender(e){if(!this._glyphMargin)return void(this._renderResult=null);const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),r=this._lineHeight.toString(),s='" style="left:'+this._glyphMarginLeft.toString()+"px;width:"+this._glyphMarginWidth.toString()+"px;height:"+r+'px;"></div>',o=[];for(let e=t;e<=i;e++){const i=e-t,r=n[i];0===r.length?o[i]="":o[i]='<div class="cgmr codicon '+r.join(" ")+s}this._renderResult=o}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}class st extends ke{constructor(e){super(),this._context=e,this._primaryLineNumber=0;const t=this._context.configuration.options,i=t.get(118),n=t.get(36);this._lineHeight=t.get(51),this._spaceWidth=n.spaceWidth,this._enabled=t.get(75),this._activeIndentEnabled=t.get(45),this._maxIndentLeft=-1===i.wrappingColumn?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(118),n=t.get(36);return this._lineHeight=t.get(51),this._spaceWidth=n.spaceWidth,this._enabled=t.get(75),this._activeIndentEnabled=t.get(45),this._maxIndentLeft=-1===i.wrappingColumn?-1:i.wrappingColumn*n.typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(e){const t=e.selections[0],i=t.isEmpty()?t.positionLineNumber:0;return this._primaryLineNumber!==i&&(this._primaryLineNumber=i,!0)}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}onLanguageConfigurationChanged(e){return!0}prepareRender(e){if(!this._enabled)return void(this._renderResult=null);const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,{indentSize:n}=this._context.model.getTextModelOptions(),r=n*this._spaceWidth,s=e.scrollWidth,o=this._lineHeight,a=this._context.model.getLinesIndentGuides(t,i);let l=0,c=0,d=0;if(this._activeIndentEnabled&&this._primaryLineNumber){const e=this._context.model.getActiveIndentGuide(this._primaryLineNumber,t,i);l=e.startLineNumber,c=e.endLineNumber,d=e.indent}const h=[];for(let n=t;n<=i;n++){const i=l<=n&&n<=c,u=n-t,g=a[u];let f="";if(g>=1){const t=e.visibleRangeForPosition(new Q.L(n,1));let a=t?t.left:0;for(let e=1;e<=g&&(f+=`<div class="${i&&e===d?"cigra":"cigr"}" style="left:${a}px;height:${o}px;width:${r}px"></div>`,a+=r,!(a>s||this._maxIndentLeft>0&&a>this._maxIndentLeft));e++);}h[u]=f}this._renderResult=h}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}(0,Y.Ic)(((e,t)=>{const i=e.getColor(xe.tR);i&&t.addRule(`.monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 ${i} inset; }`);const n=e.getColor(xe.Ym)||i;n&&t.addRule(`.monaco-editor .lines-content .cigra { box-shadow: 1px 0 0 0 ${n} inset; }`)}));class ot{constructor(){this._currentVisibleRange=new X.e(1,1,1,1)}getCurrentVisibleRange(){return this._currentVisibleRange}setCurrentVisibleRange(e){this._currentVisibleRange=e}}class at{constructor(e,t,i,n,r,s){this.lineNumber=e,this.startColumn=t,this.endColumn=i,this.startScrollTop=n,this.stopScrollTop=r,this.scrollType=s,this.type="range",this.minLineNumber=e,this.maxLineNumber=e}}class lt{constructor(e,t,i,n){this.selections=e,this.startScrollTop=t,this.stopScrollTop=i,this.scrollType=n,this.type="selections";let r=e[0].startLineNumber,s=e[0].endLineNumber;for(let t=1,i=e.length;t<i;t++){const i=e[t];r=Math.min(r,i.startLineNumber),s=Math.max(s,i.endLineNumber)}this.minLineNumber=r,this.maxLineNumber=s}}class ct extends N{constructor(e,t){super(e),this._linesContent=t,this._textRangeRestingSpot=document.createElement("div"),this._visibleLines=new We(this),this.domNode=this._visibleLines.domNode;const i=this._context.configuration,n=this._context.configuration.options,r=n.get(36),s=n.get(118);this._lineHeight=n.get(51),this._typicalHalfwidthCharacterWidth=r.typicalHalfwidthCharacterWidth,this._isViewportWrapping=s.isViewportWrapping,this._revealHorizontalRightPadding=n.get(81),this._cursorSurroundingLines=n.get(20),this._cursorSurroundingLinesStyle=n.get(21),this._canUseLayerHinting=!n.get(23),this._viewLineOptions=new $(i,this._context.theme.type),E.write(this.domNode,7),this.domNode.setClassName(`view-lines ${Ne.S}`),c.V.applyFontInfo(this.domNode,r),this._maxLineWidth=0,this._asyncUpdateLineWidths=new _.pY((()=>{this._updateLineWidthsSlow()}),200),this._asyncCheckMonospaceFontAssumptions=new _.pY((()=>{this._checkMonospaceFontAssumptions()}),2e3),this._lastRenderedData=new ot,this._horizontalRevealRequest=null}dispose(){this._asyncUpdateLineWidths.dispose(),this._asyncCheckMonospaceFontAssumptions.dispose(),super.dispose()}getDomNode(){return this.domNode}createVisibleLine(){return new K(this._viewLineOptions)}onConfigurationChanged(e){this._visibleLines.onConfigurationChanged(e),e.hasChanged(118)&&(this._maxLineWidth=0);const t=this._context.configuration.options,i=t.get(36),n=t.get(118);return this._lineHeight=t.get(51),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._isViewportWrapping=n.isViewportWrapping,this._revealHorizontalRightPadding=t.get(81),this._cursorSurroundingLines=t.get(20),this._cursorSurroundingLinesStyle=t.get(21),this._canUseLayerHinting=!t.get(23),c.V.applyFontInfo(this.domNode,i),this._onOptionsMaybeChanged(),e.hasChanged(117)&&(this._maxLineWidth=0),!0}_onOptionsMaybeChanged(){const e=this._context.configuration,t=new $(e,this._context.theme.type);if(!this._viewLineOptions.equals(t)){this._viewLineOptions=t;const e=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let t=e;t<=i;t++)this._visibleLines.getVisibleLine(t).onOptionsChanged(this._viewLineOptions);return!0}return!1}onCursorStateChanged(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=!1;for(let e=t;e<=i;e++)n=this._visibleLines.getVisibleLine(e).onSelectionChanged()||n;return n}onDecorationsChanged(e){{const e=this._visibleLines.getStartLineNumber(),t=this._visibleLines.getEndLineNumber();for(let i=e;i<=t;i++)this._visibleLines.getVisibleLine(i).onDecorationsChanged()}return!0}onFlushed(e){const t=this._visibleLines.onFlushed(e);return this._maxLineWidth=0,t}onLinesChanged(e){return this._visibleLines.onLinesChanged(e)}onLinesDeleted(e){return this._visibleLines.onLinesDeleted(e)}onLinesInserted(e){return this._visibleLines.onLinesInserted(e)}onRevealRangeRequest(e){const t=this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(),e.source,e.range,e.selections,e.verticalType);if(-1===t)return!1;let i=this._context.viewLayout.validateScrollPosition({scrollTop:t});e.revealHorizontal?e.range&&e.range.startLineNumber!==e.range.endLineNumber?i={scrollTop:i.scrollTop,scrollLeft:0}:e.range?this._horizontalRevealRequest=new at(e.range.startLineNumber,e.range.startColumn,e.range.endColumn,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType):e.selections&&e.selections.length>0&&(this._horizontalRevealRequest=new lt(e.selections,this._context.viewLayout.getCurrentScrollTop(),i.scrollTop,e.scrollType)):this._horizontalRevealRequest=null;const n=Math.abs(this._context.viewLayout.getCurrentScrollTop()-i.scrollTop)<=this._lineHeight?1:e.scrollType;return this._context.model.setScrollPosition(i,n),!0}onScrollChanged(e){if(this._horizontalRevealRequest&&e.scrollLeftChanged&&(this._horizontalRevealRequest=null),this._horizontalRevealRequest&&e.scrollTopChanged){const t=Math.min(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop),i=Math.max(this._horizontalRevealRequest.startScrollTop,this._horizontalRevealRequest.stopScrollTop);(e.scrollTop<t||e.scrollTop>i)&&(this._horizontalRevealRequest=null)}return this.domNode.setWidth(e.scrollWidth),this._visibleLines.onScrollChanged(e)||!0}onTokensChanged(e){return this._visibleLines.onTokensChanged(e)}onZonesChanged(e){return this._context.model.setMaxLineWidth(this._maxLineWidth),this._visibleLines.onZonesChanged(e)}onThemeChanged(e){return this._onOptionsMaybeChanged()}getPositionFromDOMInfo(e,t){const i=this._getViewLineDomNode(e);if(null===i)return null;const n=this._getLineNumberFor(i);if(-1===n)return null;if(n<1||n>this._context.model.getLineCount())return null;if(1===this._context.model.getLineMaxColumn(n))return new Q.L(n,1);const r=this._visibleLines.getStartLineNumber(),s=this._visibleLines.getEndLineNumber();if(n<r||n>s)return null;let o=this._visibleLines.getVisibleLine(n).getColumnOfNodeOffset(n,e,t);const a=this._context.model.getLineMinColumn(n);return o<a&&(o=a),new Q.L(n,o)}_getViewLineDomNode(e){for(;e&&1===e.nodeType;){if(e.className===K.CLASS_NAME)return e;e=e.parentElement}return null}_getLineNumberFor(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();for(let n=t;n<=i;n++)if(e===this._visibleLines.getVisibleLine(n).getDomNode())return n;return-1}getLineWidth(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();return e<t||e>i?-1:this._visibleLines.getVisibleLine(e).getWidth()}linesVisibleRangesForRange(e,t){if(this.shouldRender())return null;const i=e.endLineNumber,n=X.e.intersectRanges(e,this._lastRenderedData.getCurrentVisibleRange());if(!n)return null;let r=[],s=0;const o=new U(this.domNode.domNode,this._textRangeRestingSpot);let a=0;t&&(a=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(n.startLineNumber,1)).lineNumber);const l=this._visibleLines.getStartLineNumber(),c=this._visibleLines.getEndLineNumber();for(let e=n.startLineNumber;e<=n.endLineNumber;e++){if(e<l||e>c)continue;const d=e===n.startLineNumber?n.startColumn:1,h=e===n.endLineNumber?n.endColumn:this._context.model.getLineMaxColumn(e),u=this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(d,h,o);if(u){if(t&&e<i){const t=a;a=this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(e+1,1)).lineNumber,t!==a&&(u.ranges[u.ranges.length-1].width+=this._typicalHalfwidthCharacterWidth)}r[s++]=new I(u.outsideRenderedLine,e,u.ranges)}}return 0===s?null:r}_visibleRangesForLineRange(e,t,i){return this.shouldRender()||e<this._visibleLines.getStartLineNumber()||e>this._visibleLines.getEndLineNumber()?null:this._visibleLines.getVisibleLine(e).getVisibleRangesForRange(t,i,new U(this.domNode.domNode,this._textRangeRestingSpot))}visibleRangeForPosition(e){const t=this._visibleRangesForLineRange(e.lineNumber,e.column,e.column);return t?new A(t.outsideRenderedLine,t.ranges[0].left):null}updateLineWidths(){this._updateLineWidths(!1)}_updateLineWidthsFast(){return this._updateLineWidths(!0)}_updateLineWidthsSlow(){this._updateLineWidths(!1)}_updateLineWidths(e){const t=this._visibleLines.getStartLineNumber(),i=this._visibleLines.getEndLineNumber();let n=1,r=!0;for(let s=t;s<=i;s++){const t=this._visibleLines.getVisibleLine(s);!e||t.getWidthIsFast()?n=Math.max(n,t.getWidth()):r=!1}return r&&1===t&&i===this._context.model.getLineCount()&&(this._maxLineWidth=0),this._ensureMaxLineWidth(n),r}_checkMonospaceFontAssumptions(){let e=-1,t=-1;const i=this._visibleLines.getStartLineNumber(),n=this._visibleLines.getEndLineNumber();for(let r=i;r<=n;r++){const i=this._visibleLines.getVisibleLine(r);if(i.needsMonospaceFontCheck()){const n=i.getWidth();n>t&&(t=n,e=r)}}if(-1!==e&&!this._visibleLines.getVisibleLine(e).monospaceAssumptionsAreValid())for(let e=i;e<=n;e++)this._visibleLines.getVisibleLine(e).onMonospaceAssumptionsInvalidated()}prepareRender(){throw new Error("Not supported")}render(){throw new Error("Not supported")}renderText(e){if(this._visibleLines.renderLines(e),this._lastRenderedData.setCurrentVisibleRange(e.visibleRange),this.domNode.setWidth(this._context.viewLayout.getScrollWidth()),this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(),1e6)),this._horizontalRevealRequest){const t=this._horizontalRevealRequest;if(e.startLineNumber<=t.minLineNumber&&t.maxLineNumber<=e.endLineNumber){this._horizontalRevealRequest=null,this.onDidRender();const e=this._computeScrollLeftToReveal(t);e&&(this._isViewportWrapping||this._ensureMaxLineWidth(e.maxHorizontalOffset),this._context.model.setScrollPosition({scrollLeft:e.scrollLeft},t.scrollType))}}if(this._updateLineWidthsFast()||this._asyncUpdateLineWidths.schedule(),f.IJ&&!this._asyncCheckMonospaceFontAssumptions.isScheduled()){const e=this._visibleLines.getStartLineNumber(),t=this._visibleLines.getEndLineNumber();for(let i=e;i<=t;i++)if(this._visibleLines.getVisibleLine(i).needsMonospaceFontCheck()){this._asyncCheckMonospaceFontAssumptions.schedule();break}}this._linesContent.setLayerHinting(this._canUseLayerHinting),this._linesContent.setContain("strict");const t=this._context.viewLayout.getCurrentScrollTop()-e.bigNumbersDelta;this._linesContent.setTop(-t),this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft())}_ensureMaxLineWidth(e){const t=Math.ceil(e);this._maxLineWidth<t&&(this._maxLineWidth=t,this._context.model.setMaxLineWidth(this._maxLineWidth))}_computeScrollTopToRevealRange(e,t,i,n,r){const s=e.top,o=e.height,a=s+o;let l,c,d,h;if(n&&n.length>0){let e=n[0].startLineNumber,t=n[0].endLineNumber;for(let i=1,r=n.length;i<r;i++){const r=n[i];e=Math.min(e,r.startLineNumber),t=Math.max(t,r.endLineNumber)}l=!1,c=this._context.viewLayout.getVerticalOffsetForLineNumber(e),d=this._context.viewLayout.getVerticalOffsetForLineNumber(t)+this._lineHeight}else{if(!i)return-1;l=!0,c=this._context.viewLayout.getVerticalOffsetForLineNumber(i.startLineNumber),d=this._context.viewLayout.getVerticalOffsetForLineNumber(i.endLineNumber)+this._lineHeight}if("mouse"!==t||"default"!==this._cursorSurroundingLinesStyle){const e=Math.min(o/this._lineHeight/2,this._cursorSurroundingLines);c-=e*this._lineHeight,d+=Math.max(0,e-1)*this._lineHeight}if(0!==r&&4!==r||(d+=this._lineHeight),d-c>o){if(!l)return-1;h=c}else if(5===r||6===r)if(6===r&&s<=c&&d<=a)h=s;else{const e=c-Math.max(5*this._lineHeight,.2*o),t=d-o;h=Math.max(t,e)}else if(1===r||2===r)if(2===r&&s<=c&&d<=a)h=s;else{const e=(c+d)/2;h=Math.max(0,e-o/2)}else h=this._computeMinimumScrolling(s,a,c,d,3===r,4===r);return h}_computeScrollLeftToReveal(e){const t=this._context.viewLayout.getCurrentViewport(),i=t.left,n=i+t.width;let r=1073741824,s=0;if("range"===e.type){const t=this._visibleRangesForLineRange(e.lineNumber,e.startColumn,e.endColumn);if(!t)return null;for(const e of t.ranges)r=Math.min(r,e.left),s=Math.max(s,e.left+e.width)}else for(const t of e.selections){if(t.startLineNumber!==t.endLineNumber)return null;const e=this._visibleRangesForLineRange(t.startLineNumber,t.startColumn,t.endColumn);if(!e)return null;for(const t of e.ranges)r=Math.min(r,t.left),s=Math.max(s,t.left+t.width)}return r=Math.max(0,r-ct.HORIZONTAL_EXTRA_PX),s+=this._revealHorizontalRightPadding,"selections"===e.type&&s-r>t.width?null:{scrollLeft:this._computeMinimumScrolling(i,n,r,s),maxHorizontalOffset:s}}_computeMinimumScrolling(e,t,i,n,r,s){r=!!r,s=!!s;const o=(t|=0)-(e|=0);return(n|=0)-(i|=0)<o?r?i:s?Math.max(0,n-o):i<e?i:n>t?Math.max(0,n-o):e:i}}ct.HORIZONTAL_EXTRA_PX=30;class dt extends nt{constructor(e){super(),this._context=e;const t=this._context.configuration.options.get(117);this._decorationsLeft=t.decorationsLeft,this._decorationsWidth=t.decorationsWidth,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options.get(117);return this._decorationsLeft=t.decorationsLeft,this._decorationsWidth=t.decorationsWidth,!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let e=0,r=t.length;e<r;e++){const r=t[e],s=r.options.linesDecorationsClassName;s&&(i[n++]=new it(r.range.startLineNumber,r.range.endLineNumber,s));const o=r.options.firstLineDecorationClassName;o&&(i[n++]=new it(r.range.startLineNumber,r.range.startLineNumber,o))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),r='" style="left:'+this._decorationsLeft.toString()+"px;width:"+this._decorationsWidth.toString()+'px;"></div>',s=[];for(let e=t;e<=i;e++){const i=e-t,o=n[i];let a="";for(let e=0,t=o.length;e<t;e++)a+='<div class="cldr '+o[e]+r;s[i]=a}this._renderResult=s}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}class ht extends nt{constructor(e){super(),this._context=e,this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){return!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_getDecorations(e){const t=e.getDecorationsInViewport();let i=[],n=0;for(let e=0,r=t.length;e<r;e++){const r=t[e],s=r.options.marginClassName;s&&(i[n++]=new it(r.range.startLineNumber,r.range.endLineNumber,s))}return i}prepareRender(e){const t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber,n=this._render(t,i,this._getDecorations(e)),r=[];for(let e=t;e<=i;e++){const i=e-t,s=n[i];let o="";for(let e=0,t=s.length;e<t;e++)o+='<div class="cmdr '+s[e]+'" style=""></div>';r[i]=o}this._renderResult=r}render(e,t){return this._renderResult?this._renderResult[t-e]:""}}class ut{constructor(e,t,i,n){this.r=ut._clamp(e),this.g=ut._clamp(t),this.b=ut._clamp(i),this.a=ut._clamp(n)}equals(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}static _clamp(e){return e<0?0:e>255?255:0|e}}ut.Empty=new ut(0,0,0,0);var gt=i(43775);class ft{constructor(){this._onDidChange=new o.Q5,this.onDidChange=this._onDidChange.event,this._updateColorMap(),gt.RW.onDidChange((e=>{e.changedColorMap&&this._updateColorMap()}))}static getInstance(){return this._INSTANCE||(this._INSTANCE=new ft),this._INSTANCE}_updateColorMap(){const e=gt.RW.getColorMap();if(!e)return this._colors=[ut.Empty],void(this._backgroundIsLight=!0);this._colors=[ut.Empty];for(let t=1;t<e.length;t++){const i=e[t].rgba;this._colors[t]=new ut(i.r,i.g,i.b,Math.round(255*i.a))}let t=e[2].getRelativeLuminance();this._backgroundIsLight=t>=.5,this._onDidChange.fire(void 0)}getColor(e){return(e<1||e>=this._colors.length)&&(e=2),this._colors[e]}backgroundIsLight(){return this._backgroundIsLight}}ft._INSTANCE=null;var pt=i(13824),mt=i(73910);const _t=(()=>{const e=[];for(let t=32;t<=126;t++)e.push(t);return e.push(65533),e})();var bt=i(85427);class vt{constructor(e,t){this.scale=t,this.charDataNormal=vt.soften(e,.8),this.charDataLight=vt.soften(e,50/60)}static soften(e,t){let i=new Uint8ClampedArray(e.length);for(let n=0,r=e.length;n<r;n++)i[n]=(0,bt.K)(e[n]*t);return i}renderChar(e,t,i,n,r,s,o,a,l){const c=1*this.scale,d=2*this.scale,h=l?1:d;if(t+c>e.width||i+h>e.height)return void console.warn("bad render request outside image data");const u=a?this.charDataLight:this.charDataNormal,g=((e,t)=>(e-=32)<0||e>96?t<=2?(e+96)%96:95:e)(n,o),f=4*e.width,p=s.r,m=s.g,_=s.b,b=r.r-p,v=r.g-m,y=r.b-_,w=e.data;let C=g*c*d,S=i*f+4*t;for(let e=0;e<h;e++){let e=S;for(let t=0;t<c;t++){const t=u[C++]/255;w[e++]=p+b*t,w[e++]=m+v*t,w[e++]=_+y*t,e++}S+=f}}blockRenderChar(e,t,i,n,r,s,o){const a=1*this.scale,l=2*this.scale,c=o?1:l;if(t+a>e.width||i+c>e.height)return void console.warn("bad render request outside image data");const d=4*e.width,h=r.r,u=r.g,g=r.b,f=h+.5*(n.r-h),p=u+.5*(n.g-u),m=g+.5*(n.b-g),_=e.data;let b=i*d+4*t;for(let e=0;e<c;e++){let e=b;for(let t=0;t<a;t++)_[e++]=f,_[e++]=p,_[e++]=m,e++;b+=d}}}var yt=i(88289);const wt={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15},Ct=e=>{const t=new Uint8ClampedArray(e.length/2);for(let i=0;i<e.length;i+=2)t[i>>1]=wt[e[i]]<<4|15&wt[e[i+1]];return t},St={1:(0,yt.I)((()=>Ct("0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792"))),2:(0,yt.I)((()=>Ct("000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126")))};class kt{static create(e,t){if(this.lastCreated&&e===this.lastCreated.scale&&t===this.lastFontFamily)return this.lastCreated;let i;return i=St[e]?new vt(St[e](),e):kt.createFromSampleData(kt.createSampleData(t).data,e),this.lastFontFamily=t,this.lastCreated=i,i}static createSampleData(e){const t=document.createElement("canvas"),i=t.getContext("2d");t.style.height="16px",t.height=16,t.width=960,t.style.width="960px",i.fillStyle="#ffffff",i.font=`bold 16px ${e}`,i.textBaseline="middle";let n=0;for(const e of _t)i.fillText(String.fromCharCode(e),n,8),n+=10;return i.getImageData(0,0,960,16)}static createFromSampleData(e,t){if(61440!==e.length)throw new Error("Unexpected source in MinimapCharRenderer");let i=kt._downsample(e,t);return new vt(i,t)}static _downsampleChar(e,t,i,n,r){const s=1*r,o=2*r;let a=n,l=0;for(let n=0;n<o;n++){const r=n/o*16,c=(n+1)/o*16;for(let n=0;n<s;n++){const o=n/s*10,d=(n+1)/s*10;let h=0,u=0;for(let i=r;i<c;i++){const n=t+3840*Math.floor(i),r=1-(i-Math.floor(i));for(let t=o;t<d;t++){const i=1-(t-Math.floor(t)),s=n+4*Math.floor(t),o=i*r;u+=o,h+=e[s]*e[s+3]/255*o}}const g=h/u;l=Math.max(l,g),i[a++]=(0,bt.K)(g)}}return l}static _downsample(e,t){const i=2*t*1*t,n=96*i,r=new Uint8ClampedArray(n);let s=0,o=0,a=0;for(let n=0;n<96;n++)a=Math.max(a,this._downsampleChar(e,o,r,s,t)),s+=i,o+=40;if(a>0){const e=255/a;for(let t=0;t<n;t++)r[t]*=e}return r}}var xt=i(84973);class Lt{constructor(e,t,i){const n=e.options,r=n.get(115),s=n.get(117),o=s.minimap,a=n.get(36),l=n.get(56);this.renderMinimap=o.renderMinimap,this.size=l.size,this.minimapHeightIsEditorHeight=o.minimapHeightIsEditorHeight,this.scrollBeyondLastLine=n.get(86),this.showSlider=l.showSlider,this.pixelRatio=r,this.typicalHalfwidthCharacterWidth=a.typicalHalfwidthCharacterWidth,this.lineHeight=n.get(51),this.minimapLeft=o.minimapLeft,this.minimapWidth=o.minimapWidth,this.minimapHeight=s.height,this.canvasInnerWidth=o.minimapCanvasInnerWidth,this.canvasInnerHeight=o.minimapCanvasInnerHeight,this.canvasOuterWidth=o.minimapCanvasOuterWidth,this.canvasOuterHeight=o.minimapCanvasOuterHeight,this.isSampling=o.minimapIsSampling,this.editorHeight=s.height,this.fontScale=o.minimapScale,this.minimapLineHeight=o.minimapLineHeight,this.minimapCharWidth=1*this.fontScale,this.charRenderer=(0,yt.I)((()=>kt.create(this.fontScale,a.fontFamily))),this.backgroundColor=Lt._getMinimapBackground(t,i)}static _getMinimapBackground(e,t){const i=e.getColor(mt.kV);return i?new ut(i.rgba.r,i.rgba.g,i.rgba.b,i.rgba.a):t.getColor(2)}equals(e){return this.renderMinimap===e.renderMinimap&&this.size===e.size&&this.minimapHeightIsEditorHeight===e.minimapHeightIsEditorHeight&&this.scrollBeyondLastLine===e.scrollBeyondLastLine&&this.showSlider===e.showSlider&&this.pixelRatio===e.pixelRatio&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.lineHeight===e.lineHeight&&this.minimapLeft===e.minimapLeft&&this.minimapWidth===e.minimapWidth&&this.minimapHeight===e.minimapHeight&&this.canvasInnerWidth===e.canvasInnerWidth&&this.canvasInnerHeight===e.canvasInnerHeight&&this.canvasOuterWidth===e.canvasOuterWidth&&this.canvasOuterHeight===e.canvasOuterHeight&&this.isSampling===e.isSampling&&this.editorHeight===e.editorHeight&&this.fontScale===e.fontScale&&this.minimapLineHeight===e.minimapLineHeight&&this.minimapCharWidth===e.minimapCharWidth&&this.backgroundColor&&this.backgroundColor.equals(e.backgroundColor)}}class Mt{constructor(e,t,i,n,r,s,o,a){this.scrollTop=e,this.scrollHeight=t,this.sliderNeeded=i,this._computedSliderRatio=n,this.sliderTop=r,this.sliderHeight=s,this.startLineNumber=o,this.endLineNumber=a}getDesiredScrollTopFromDelta(e){const t=this.sliderTop+e;return Math.round(t/this._computedSliderRatio)}getDesiredScrollTopFromTouchLocation(e){return Math.round((e-this.sliderHeight/2)/this._computedSliderRatio)}static create(e,t,i,n,r,s,o,a,l,c){const d=e.pixelRatio,h=e.minimapLineHeight,u=Math.floor(e.canvasInnerHeight/h),g=e.lineHeight;if(e.minimapHeightIsEditorHeight){const t=o*e.lineHeight+(e.scrollBeyondLastLine?n-e.lineHeight:0),i=Math.max(1,Math.floor(n*n/t)),r=Math.max(0,e.minimapHeight-i),c=r/(l-n),d=a*c,h=r>0,u=Math.floor(e.canvasInnerHeight/e.minimapLineHeight);return new Mt(a,l,h,c,d,i,1,Math.min(s,u))}let f,p;if(r&&i!==s){const e=i-t+1;f=Math.floor(e*h/d)}else{const e=n/g;f=Math.floor(e*h/d)}p=e.scrollBeyondLastLine?(s-1)*h/d:Math.max(0,s*h/d-f),p=Math.min(e.minimapHeight-f,p);const m=p/(l-n),_=a*m;let b=0;if(e.scrollBeyondLastLine&&(b=n/g-1),u>=s+b)return new Mt(a,l,p>0,m,_,f,1,s);{let e=Math.max(1,Math.floor(t-_*d/h));c&&c.scrollHeight===l&&(c.scrollTop>a&&(e=Math.min(e,c.startLineNumber)),c.scrollTop<a&&(e=Math.max(e,c.startLineNumber)));const i=Math.min(s,e+u-1);return new Mt(a,l,!0,m,_,f,e,i)}}}class Dt{constructor(e){this.dy=e}onContentChanged(){this.dy=-1}onTokensChanged(){this.dy=-1}}Dt.INVALID=new Dt(-1);class Nt{constructor(e,t,i){this.renderedLayout=e,this._imageData=t,this._renderedLines=new Be((()=>Dt.INVALID)),this._renderedLines._set(e.startLineNumber,i)}linesEquals(e){if(!this.scrollEquals(e))return!1;const t=this._renderedLines._get().lines;for(let e=0,i=t.length;e<i;e++)if(-1===t[e].dy)return!1;return!0}scrollEquals(e){return this.renderedLayout.startLineNumber===e.startLineNumber&&this.renderedLayout.endLineNumber===e.endLineNumber}_get(){const e=this._renderedLines._get();return{imageData:this._imageData,rendLineNumberStart:e.rendLineNumberStart,lines:e.lines}}onLinesChanged(e,t){return this._renderedLines.onLinesChanged(e,t)}onLinesDeleted(e,t){this._renderedLines.onLinesDeleted(e,t)}onLinesInserted(e,t){this._renderedLines.onLinesInserted(e,t)}onTokensChanged(e){return this._renderedLines.onTokensChanged(e)}}class Et{constructor(e,t,i,n){this._backgroundFillData=Et._createBackgroundFillData(t,i,n),this._buffers=[e.createImageData(t,i),e.createImageData(t,i)],this._lastUsedBuffer=0}getBuffer(){this._lastUsedBuffer=1-this._lastUsedBuffer;const e=this._buffers[this._lastUsedBuffer];return e.data.set(this._backgroundFillData),e}static _createBackgroundFillData(e,t,i){const n=i.r,r=i.g,s=i.b,o=new Uint8ClampedArray(e*t*4);let a=0;for(let i=0;i<t;i++)for(let t=0;t<e;t++)o[a]=n,o[a+1]=r,o[a+2]=s,o[a+3]=255,a+=4;return o}}class Tt{constructor(e,t){this.samplingRatio=e,this.minimapLines=t}static compute(e,t,i){if(0===e.renderMinimap||!e.isSampling)return[null,[]];const n=e.pixelRatio,r=e.lineHeight,s=e.scrollBeyondLastLine,{minimapLineCount:o}=H.gk.computeContainedMinimapLineCount({viewLineCount:t,scrollBeyondLastLine:s,height:e.editorHeight,lineHeight:r,pixelRatio:n}),a=t/o,l=a/2;if(!i||0===i.minimapLines.length){let e=[];if(e[0]=1,o>1){for(let t=0,i=o-1;t<i;t++)e[t]=Math.round(t*a+l);e[o-1]=t}return[new Tt(a,e),[]]}const c=i.minimapLines,d=c.length;let h=[],u=0,g=0,f=1,p=[],m=null;for(let e=0;e<o;e++){const i=Math.max(f,Math.round(e*a)),n=Math.max(i,Math.round((e+1)*a));for(;u<d&&c[u]<i;){if(p.length<10){const e=u+1+g;m&&"deleted"===m.type&&m._oldIndex===u-1?m.deleteToLineNumber++:(m={type:"deleted",_oldIndex:u,deleteFromLineNumber:e,deleteToLineNumber:e},p.push(m)),g--}u++}let r;if(u<d&&c[u]<=n)r=c[u],u++;else if(r=0===e?1:e+1===o?t:Math.round(e*a+l),p.length<10){const t=u+1+g;m&&"inserted"===m.type&&m._i===e-1?m.insertToLineNumber++:(m={type:"inserted",_i:e,insertFromLineNumber:t,insertToLineNumber:t},p.push(m)),g++}h[e]=r,f=r}if(p.length<10)for(;u<d;){const e=u+1+g;m&&"deleted"===m.type&&m._oldIndex===u-1?m.deleteToLineNumber++:(m={type:"deleted",_oldIndex:u,deleteFromLineNumber:e,deleteToLineNumber:e},p.push(m)),g--,u++}else p=[{type:"flush"}];return[new Tt(a,h),p]}modelLineToMinimapLine(e){return Math.min(this.minimapLines.length,Math.max(1,Math.round(e/this.samplingRatio)))}modelLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e)-1;for(;i>0&&this.minimapLines[i-1]>=e;)i--;let n=this.modelLineToMinimapLine(t)-1;for(;n+1<this.minimapLines.length&&this.minimapLines[n+1]<=t;)n++;if(i===n){const n=this.minimapLines[i];if(n<e||n>t)return null}return[i+1,n+1]}decorationLineRangeToMinimapLineRange(e,t){let i=this.modelLineToMinimapLine(e),n=this.modelLineToMinimapLine(t);return e!==t&&n===i&&(n===this.minimapLines.length?i>1&&i--:n++),[i,n]}onLinesDeleted(e){const t=e.toLineNumber-e.fromLineNumber+1;let i=this.minimapLines.length,n=0;for(let r=this.minimapLines.length-1;r>=0&&!(this.minimapLines[r]<e.fromLineNumber);r--)this.minimapLines[r]<=e.toLineNumber?(this.minimapLines[r]=Math.max(1,e.fromLineNumber-1),i=Math.min(i,r),n=Math.max(n,r)):this.minimapLines[r]-=t;return[i,n]}onLinesInserted(e){const t=e.toLineNumber-e.fromLineNumber+1;for(let i=this.minimapLines.length-1;i>=0&&!(this.minimapLines[i]<e.fromLineNumber);i--)this.minimapLines[i]+=t}}class It extends N{constructor(e){super(e),this.tokensColorTracker=ft.getInstance(),this._selections=[],this._minimapSelections=null,this.options=new Lt(this._context.configuration,this._context.theme,this.tokensColorTracker);const[t]=Tt.compute(this.options,this._context.model.getLineCount(),null);this._samplingState=t,this._shouldCheckSampling=!1,this._actual=new Ot(e.theme,this)}dispose(){this._actual.dispose(),super.dispose()}getDomNode(){return this._actual.getDomNode()}_onOptionsMaybeChanged(){const e=new Lt(this._context.configuration,this._context.theme,this.tokensColorTracker);return!this.options.equals(e)&&(this.options=e,this._recreateLineSampling(),this._actual.onDidChangeOptions(),!0)}onConfigurationChanged(e){return this._onOptionsMaybeChanged()}onCursorStateChanged(e){return this._selections=e.selections,this._minimapSelections=null,this._actual.onSelectionChanged()}onDecorationsChanged(e){return!!e.affectsMinimap&&this._actual.onDecorationsChanged()}onFlushed(e){return this._samplingState&&(this._shouldCheckSampling=!0),this._actual.onFlushed()}onLinesChanged(e){if(this._samplingState){const t=this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber,e.toLineNumber);return!!t&&this._actual.onLinesChanged(t[0],t[1])}return this._actual.onLinesChanged(e.fromLineNumber,e.toLineNumber)}onLinesDeleted(e){if(this._samplingState){const[t,i]=this._samplingState.onLinesDeleted(e);return t<=i&&this._actual.onLinesChanged(t+1,i+1),this._shouldCheckSampling=!0,!0}return this._actual.onLinesDeleted(e.fromLineNumber,e.toLineNumber)}onLinesInserted(e){return this._samplingState?(this._samplingState.onLinesInserted(e),this._shouldCheckSampling=!0,!0):this._actual.onLinesInserted(e.fromLineNumber,e.toLineNumber)}onScrollChanged(e){return this._actual.onScrollChanged()}onThemeChanged(e){return this._context.model.invalidateMinimapColorCache(),this._actual.onThemeChanged(),this._onOptionsMaybeChanged(),!0}onTokensChanged(e){if(this._samplingState){let t=[];for(const i of e.ranges){const e=this._samplingState.modelLineRangeToMinimapLineRange(i.fromLineNumber,i.toLineNumber);e&&t.push({fromLineNumber:e[0],toLineNumber:e[1]})}return!!t.length&&this._actual.onTokensChanged(t)}return this._actual.onTokensChanged(e.ranges)}onTokensColorsChanged(e){return this._actual.onTokensColorsChanged()}onZonesChanged(e){return this._actual.onZonesChanged()}prepareRender(e){this._shouldCheckSampling&&(this._shouldCheckSampling=!1,this._recreateLineSampling())}render(e){let t=e.visibleRange.startLineNumber,i=e.visibleRange.endLineNumber;this._samplingState&&(t=this._samplingState.modelLineToMinimapLine(t),i=this._samplingState.modelLineToMinimapLine(i));const n={viewportContainsWhitespaceGaps:e.viewportData.whitespaceViewportData.length>0,scrollWidth:e.scrollWidth,scrollHeight:e.scrollHeight,viewportStartLineNumber:t,viewportEndLineNumber:i,scrollTop:e.scrollTop,scrollLeft:e.scrollLeft,viewportWidth:e.viewportWidth,viewportHeight:e.viewportHeight};this._actual.render(n)}_recreateLineSampling(){this._minimapSelections=null;const e=Boolean(this._samplingState),[t,i]=Tt.compute(this.options,this._context.model.getLineCount(),this._samplingState);if(this._samplingState=t,e&&this._samplingState)for(const e of i)switch(e.type){case"deleted":this._actual.onLinesDeleted(e.deleteFromLineNumber,e.deleteToLineNumber);break;case"inserted":this._actual.onLinesInserted(e.insertFromLineNumber,e.insertToLineNumber);break;case"flush":this._actual.onFlushed()}}getLineCount(){return this._samplingState?this._samplingState.minimapLines.length:this._context.model.getLineCount()}getRealLineCount(){return this._context.model.getLineCount()}getLineContent(e){return this._samplingState?this._context.model.getLineContent(this._samplingState.minimapLines[e-1]):this._context.model.getLineContent(e)}getMinimapLinesRenderingData(e,t,i){if(this._samplingState){let n=[];for(let r=0,s=t-e+1;r<s;r++)i[r]?n[r]=this._context.model.getViewLineData(this._samplingState.minimapLines[e+r-1]):n[r]=null;return n}return this._context.model.getMinimapLinesRenderingData(e,t,i).data}getSelections(){if(null===this._minimapSelections)if(this._samplingState){this._minimapSelections=[];for(const e of this._selections){const[t,i]=this._samplingState.decorationLineRangeToMinimapLineRange(e.startLineNumber,e.endLineNumber);this._minimapSelections.push(new u.Y(t,e.startColumn,i,e.endColumn))}}else this._minimapSelections=this._selections;return this._minimapSelections}getMinimapDecorationsInViewport(e,t){let i;if(this._samplingState){const n=this._samplingState.minimapLines[e-1],r=this._samplingState.minimapLines[t-1];i=new X.e(n,1,r,this._context.model.getLineMaxColumn(r))}else i=new X.e(e,1,t,this._context.model.getLineMaxColumn(t));const n=this._context.model.getDecorationsInViewport(i);if(this._samplingState){let e=[];for(const t of n){if(!t.options.minimap)continue;const i=t.range,n=this._samplingState.modelLineToMinimapLine(i.startLineNumber),r=this._samplingState.modelLineToMinimapLine(i.endLineNumber);e.push(new pt.$l(new X.e(n,i.startColumn,r,i.endColumn),t.options))}return e}return n}getOptions(){return this._context.model.getTextModelOptions()}revealLineNumber(e){this._samplingState&&(e=this._samplingState.minimapLines[e-1]),this._context.model.revealRange("mouse",!1,new X.e(e,1,e,1),1,0)}setScrollTop(e){this._context.model.setScrollPosition({scrollTop:e},1)}}class Ot extends a.JT{constructor(e,t){super(),this._renderDecorations=!1,this._gestureInProgress=!1,this._theme=e,this._model=t,this._lastRenderData=null,this._buffers=null,this._selectionColor=this._theme.getColor(mt.ov),this._domNode=(0,g.X)(document.createElement("div")),E.write(this._domNode,8),this._domNode.setClassName(this._getMinimapDomNodeClassName()),this._domNode.setPosition("absolute"),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._shadow=(0,g.X)(document.createElement("div")),this._shadow.setClassName("minimap-shadow-hidden"),this._domNode.appendChild(this._shadow),this._canvas=(0,g.X)(document.createElement("canvas")),this._canvas.setPosition("absolute"),this._canvas.setLeft(0),this._domNode.appendChild(this._canvas),this._decorationsCanvas=(0,g.X)(document.createElement("canvas")),this._decorationsCanvas.setPosition("absolute"),this._decorationsCanvas.setClassName("minimap-decorations-layer"),this._decorationsCanvas.setLeft(0),this._domNode.appendChild(this._decorationsCanvas),this._slider=(0,g.X)(document.createElement("div")),this._slider.setPosition("absolute"),this._slider.setClassName("minimap-slider"),this._slider.setLayerHinting(!0),this._slider.setContain("strict"),this._domNode.appendChild(this._slider),this._sliderHorizontal=(0,g.X)(document.createElement("div")),this._sliderHorizontal.setPosition("absolute"),this._sliderHorizontal.setClassName("minimap-slider-horizontal"),this._slider.appendChild(this._sliderHorizontal),this._applyLayout(),this._mouseDownListener=r.mu(this._domNode.domNode,"mousedown",(e=>{if(e.preventDefault(),0===this._model.options.renderMinimap)return;if(!this._lastRenderData)return;if("proportional"!==this._model.options.size){if(e.leftButton&&this._lastRenderData){const t=r.i(this._slider.domNode),i=t.top+t.height/2;this._startSliderDragging(e.buttons,e.posx,i,e.posy,this._lastRenderData.renderedLayout)}return}const t=this._model.options.minimapLineHeight,i=this._model.options.canvasInnerHeight/this._model.options.canvasOuterHeight*e.browserEvent.offsetY;let n=Math.floor(i/t)+this._lastRenderData.renderedLayout.startLineNumber;n=Math.min(n,this._model.getLineCount()),this._model.revealLineNumber(n)})),this._sliderMouseMoveMonitor=new v.Z,this._sliderMouseDownListener=r.mu(this._slider.domNode,"mousedown",(e=>{e.preventDefault(),e.stopPropagation(),e.leftButton&&this._lastRenderData&&this._startSliderDragging(e.buttons,e.posx,e.posy,e.posy,this._lastRenderData.renderedLayout)})),this._gestureDisposable=p.o.addTarget(this._domNode.domNode),this._sliderTouchStartListener=r.nm(this._domNode.domNode,p.t.Start,(e=>{e.preventDefault(),e.stopPropagation(),this._lastRenderData&&(this._slider.toggleClassName("active",!0),this._gestureInProgress=!0,this.scrollDueToTouchEvent(e))}),{passive:!1}),this._sliderTouchMoveListener=r.nm(this._domNode.domNode,p.t.Change,(e=>{e.preventDefault(),e.stopPropagation(),this._lastRenderData&&this._gestureInProgress&&this.scrollDueToTouchEvent(e)}),{passive:!1}),this._sliderTouchEndListener=r.mu(this._domNode.domNode,p.t.End,(e=>{e.preventDefault(),e.stopPropagation(),this._gestureInProgress=!1,this._slider.toggleClassName("active",!1)}))}_startSliderDragging(e,t,i,n,r){this._slider.toggleClassName("active",!0);const s=(e,n)=>{const s=Math.abs(n-t);if(f.ED&&s>140)return void this._model.setScrollTop(r.scrollTop);const o=e-i;this._model.setScrollTop(r.getDesiredScrollTopFromDelta(o))};n!==i&&s(n,t),this._sliderMouseMoveMonitor.startMonitoring(this._slider.domNode,e,v.e,(e=>s(e.posy,e.posx)),(()=>{this._slider.toggleClassName("active",!1)}))}scrollDueToTouchEvent(e){const t=this._domNode.domNode.getBoundingClientRect().top,i=this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(e.pageY-t);this._model.setScrollTop(i)}dispose(){this._mouseDownListener.dispose(),this._sliderMouseMoveMonitor.dispose(),this._sliderMouseDownListener.dispose(),this._gestureDisposable.dispose(),this._sliderTouchStartListener.dispose(),this._sliderTouchMoveListener.dispose(),this._sliderTouchEndListener.dispose(),super.dispose()}_getMinimapDomNodeClassName(){return"always"===this._model.options.showSlider?"minimap slider-always":"minimap slider-mouseover"}getDomNode(){return this._domNode}_applyLayout(){this._domNode.setLeft(this._model.options.minimapLeft),this._domNode.setWidth(this._model.options.minimapWidth),this._domNode.setHeight(this._model.options.minimapHeight),this._shadow.setHeight(this._model.options.minimapHeight),this._canvas.setWidth(this._model.options.canvasOuterWidth),this._canvas.setHeight(this._model.options.canvasOuterHeight),this._canvas.domNode.width=this._model.options.canvasInnerWidth,this._canvas.domNode.height=this._model.options.canvasInnerHeight,this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth),this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight),this._decorationsCanvas.domNode.width=this._model.options.canvasInnerWidth,this._decorationsCanvas.domNode.height=this._model.options.canvasInnerHeight,this._slider.setWidth(this._model.options.minimapWidth)}_getBuffer(){return this._buffers||this._model.options.canvasInnerWidth>0&&this._model.options.canvasInnerHeight>0&&(this._buffers=new Et(this._canvas.domNode.getContext("2d"),this._model.options.canvasInnerWidth,this._model.options.canvasInnerHeight,this._model.options.backgroundColor)),this._buffers?this._buffers.getBuffer():null}onDidChangeOptions(){this._lastRenderData=null,this._buffers=null,this._applyLayout(),this._domNode.setClassName(this._getMinimapDomNodeClassName())}onSelectionChanged(){return this._renderDecorations=!0,!0}onDecorationsChanged(){return this._renderDecorations=!0,!0}onFlushed(){return this._lastRenderData=null,!0}onLinesChanged(e,t){return!!this._lastRenderData&&this._lastRenderData.onLinesChanged(e,t)}onLinesDeleted(e,t){return this._lastRenderData&&this._lastRenderData.onLinesDeleted(e,t),!0}onLinesInserted(e,t){return this._lastRenderData&&this._lastRenderData.onLinesInserted(e,t),!0}onScrollChanged(){return this._renderDecorations=!0,!0}onThemeChanged(){return this._selectionColor=this._theme.getColor(mt.ov),this._renderDecorations=!0,!0}onTokensChanged(e){return!!this._lastRenderData&&this._lastRenderData.onTokensChanged(e)}onTokensColorsChanged(){return this._lastRenderData=null,this._buffers=null,!0}onZonesChanged(){return this._lastRenderData=null,!0}render(e){if(0===this._model.options.renderMinimap)return this._shadow.setClassName("minimap-shadow-hidden"),this._sliderHorizontal.setWidth(0),void this._sliderHorizontal.setHeight(0);e.scrollLeft+e.viewportWidth>=e.scrollWidth?this._shadow.setClassName("minimap-shadow-hidden"):this._shadow.setClassName("minimap-shadow-visible");const t=Mt.create(this._model.options,e.viewportStartLineNumber,e.viewportEndLineNumber,e.viewportHeight,e.viewportContainsWhitespaceGaps,this._model.getLineCount(),this._model.getRealLineCount(),e.scrollTop,e.scrollHeight,this._lastRenderData?this._lastRenderData.renderedLayout:null);this._slider.setDisplay(t.sliderNeeded?"block":"none"),this._slider.setTop(t.sliderTop),this._slider.setHeight(t.sliderHeight);const i=e.scrollLeft/this._model.options.typicalHalfwidthCharacterWidth,n=Math.min(this._model.options.minimapWidth,Math.round(i*this._model.options.minimapCharWidth/this._model.options.pixelRatio));this._sliderHorizontal.setLeft(n),this._sliderHorizontal.setWidth(this._model.options.minimapWidth-n),this._sliderHorizontal.setTop(0),this._sliderHorizontal.setHeight(t.sliderHeight),this.renderDecorations(t),this._lastRenderData=this.renderLines(t)}renderDecorations(e){if(this._renderDecorations){this._renderDecorations=!1;const t=this._model.getSelections(),i=this._model.getMinimapDecorationsInViewport(e.startLineNumber,e.endLineNumber),{canvasInnerWidth:n,canvasInnerHeight:r}=this._model.options,s=this._model.options.minimapLineHeight,o=this._model.options.minimapCharWidth,a=this._model.getOptions().tabSize,l=this._decorationsCanvas.domNode.getContext("2d");l.clearRect(0,0,n,r);const c=new Map;for(let i=0;i<t.length;i++){const n=t[i];for(let t=n.startLineNumber;t<=n.endLineNumber;t++)this.renderDecorationOnLine(l,c,n,this._selectionColor,e,t,s,s,a,o)}for(let t=0;t<i.length;t++){const n=i[t];if(!n.options.minimap)continue;const r=n.options.minimap.getColor(this._theme);for(let t=n.range.startLineNumber;t<=n.range.endLineNumber;t++)switch(n.options.minimap.position){case xt.F5.Inline:this.renderDecorationOnLine(l,c,n.range,r,e,t,s,s,a,o);continue;case xt.F5.Gutter:const i=(t-e.startLineNumber)*s,d=2;this.renderDecoration(l,r,d,i,2,s);continue}}}}renderDecorationOnLine(e,t,i,n,r,s,o,a,l,c){const d=(s-r.startLineNumber)*a;if(d+o<0||d>this._model.options.canvasInnerHeight)return;let h=t.get(s);const u=!h;if(!h){const e=this._model.getLineContent(s);h=[H.y0];for(let t=1;t<e.length+1;t++){const i=e.charCodeAt(t-1),n=9===i?l*c:we.K7(i)?2*c:c;h[t]=h[t-1]+n}t.set(s,h)}const{startColumn:g,endColumn:f,startLineNumber:p,endLineNumber:m}=i,_=p===s?h[g-1]:H.y0,b=m>s?h.length-1:f-1;if(b>0){const t=h[b]-_||2;this.renderDecoration(e,n,_,d,t,o)}u&&this.renderLineHighlight(e,n,d,o)}renderLineHighlight(e,t,i,n){e.fillStyle=t&&t.transparent(.5).toString()||"",e.fillRect(H.y0,i,e.canvas.width,n)}renderDecoration(e,t,i,n,r,s){e.fillStyle=t&&t.toString()||"",e.fillRect(i,n,r,s)}renderLines(e){const t=e.startLineNumber,i=e.endLineNumber,n=this._model.options.minimapLineHeight;if(this._lastRenderData&&this._lastRenderData.linesEquals(e)){const t=this._lastRenderData._get();return new Nt(e,t.imageData,t.lines)}const r=this._getBuffer();if(!r)return null;let[s,o,a]=Ot._renderUntouchedLines(r,t,i,n,this._lastRenderData);const l=this._model.getMinimapLinesRenderingData(t,i,a),c=this._model.getOptions().tabSize,d=this._model.options.backgroundColor,h=this._model.tokensColorTracker,u=h.backgroundIsLight(),g=this._model.options.renderMinimap,f=this._model.options.charRenderer(),p=this._model.options.fontScale,m=this._model.options.minimapCharWidth,_=(1===g?2:3)*p,b=n>_?Math.floor((n-_)/2):0;let v=0;const y=[];for(let e=0,s=i-t+1;e<s;e++)a[e]&&Ot._renderLine(r,d,u,g,m,h,f,v,b,c,l[e],p,n),y[e]=new Dt(v),v+=n;const w=-1===s?0:s,C=(-1===o?r.height:o)-w;return this._canvas.domNode.getContext("2d").putImageData(r,0,0,0,w,r.width,C),new Nt(e,r,y)}static _renderUntouchedLines(e,t,i,n,r){const s=[];if(!r){for(let e=0,n=i-t+1;e<n;e++)s[e]=!0;return[-1,-1,s]}const o=r._get(),a=o.imageData.data,l=o.rendLineNumberStart,c=o.lines,d=c.length,h=e.width,u=e.data,g=(i-t+1)*n*h*4;let f=-1,p=-1,m=-1,_=-1,b=-1,v=-1,y=0;for(let e=t;e<=i;e++){const i=e-t,r=e-l,o=r>=0&&r<d?c[r].dy:-1;if(-1===o){s[i]=!0,y+=n;continue}const w=o*h*4,C=(o+n)*h*4,S=y*h*4,k=(y+n)*h*4;_===w&&v===S?(_=C,v=k):(-1!==m&&(u.set(a.subarray(m,_),b),-1===f&&0===m&&m===b&&(f=_),-1===p&&_===g&&m===b&&(p=m)),m=w,_=C,b=S,v=k),s[i]=!1,y+=n}return-1!==m&&(u.set(a.subarray(m,_),b),-1===f&&0===m&&m===b&&(f=_),-1===p&&_===g&&m===b&&(p=m)),[-1===f?-1:f/(4*h),-1===p?-1:p/(4*h),s]}static _renderLine(e,t,i,n,r,s,o,a,l,c,d,h,u){const g=d.content,f=d.tokens,p=e.width-r,m=1===u;let _=H.y0,b=0,v=0;for(let d=0,u=f.getCount();d<u;d++){const u=f.getEndOffset(d),y=f.getForeground(d),w=s.getColor(y);for(;b<u;b++){if(_>p)return;const s=g.charCodeAt(b);if(9===s){const e=c-(b+v)%c;v+=e-1,_+=e*r}else if(32===s)_+=r;else{const c=we.K7(s)?2:1;for(let d=0;d<c;d++)if(2===n?o.blockRenderChar(e,_,a+l,w,t,i,m):o.renderChar(e,_,a+l,s,w,t,h,i,m),_+=r,_>p)return}}}}}(0,Y.Ic)(((e,t)=>{const i=e.getColor(mt.kV);i&&t.addRule(`.monaco-editor .minimap > canvas { opacity: ${i.rgba.a}; will-change: opacity; }`);const n=e.getColor(mt.CA);n&&t.addRule(`.monaco-editor .minimap-slider .minimap-slider-horizontal { background: ${n}; }`);const r=e.getColor(mt.Xy);r&&t.addRule(`.monaco-editor .minimap-slider:hover .minimap-slider-horizontal { background: ${r}; }`);const s=e.getColor(mt.br);s&&t.addRule(`.monaco-editor .minimap-slider.active .minimap-slider-horizontal { background: ${s}; }`);const o=e.getColor(mt._w);o&&t.addRule(`.monaco-editor .minimap-shadow-visible { box-shadow: ${o} -6px 0 6px -6px inset; }`)}));class At extends N{constructor(e){super(e);const t=this._context.configuration.options.get(117);this._widgets={},this._verticalScrollbarWidth=t.verticalScrollbarWidth,this._minimapWidth=t.minimap.minimapWidth,this._horizontalScrollbarHeight=t.horizontalScrollbarHeight,this._editorHeight=t.height,this._editorWidth=t.width,this._domNode=(0,g.X)(document.createElement("div")),E.write(this._domNode,4),this._domNode.setClassName("overlayWidgets")}dispose(){super.dispose(),this._widgets={}}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options.get(117);return this._verticalScrollbarWidth=t.verticalScrollbarWidth,this._minimapWidth=t.minimap.minimapWidth,this._horizontalScrollbarHeight=t.horizontalScrollbarHeight,this._editorHeight=t.height,this._editorWidth=t.width,!0}addWidget(e){const t=(0,g.X)(e.getDomNode());this._widgets[e.getId()]={widget:e,preference:null,domNode:t},t.setPosition("absolute"),t.setAttribute("widgetId",e.getId()),this._domNode.appendChild(t),this.setShouldRender()}setWidgetPosition(e,t){const i=this._widgets[e.getId()];return i.preference!==t&&(i.preference=t,this.setShouldRender(),!0)}removeWidget(e){const t=e.getId();if(this._widgets.hasOwnProperty(t)){const e=this._widgets[t].domNode.domNode;delete this._widgets[t],e.parentNode.removeChild(e),this.setShouldRender()}}_renderWidget(e){const t=e.domNode;if(null!==e.preference)if(0===e.preference)t.setTop(0),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth);else if(1===e.preference){const e=t.domNode.clientHeight;t.setTop(this._editorHeight-e-2*this._horizontalScrollbarHeight),t.setRight(2*this._verticalScrollbarWidth+this._minimapWidth)}else 2===e.preference&&(t.setTop(0),t.domNode.style.right="50%");else t.unsetTop()}prepareRender(e){}render(e){this._domNode.setWidth(this._editorWidth);const t=Object.keys(this._widgets);for(let e=0,i=t.length;e<i;e++){const i=t[e];this._renderWidget(this._widgets[i])}}}var Rt=i(41264);class Pt{constructor(e,t){const i=e.options;this.lineHeight=i.get(51),this.pixelRatio=i.get(115),this.overviewRulerLanes=i.get(65),this.renderBorder=i.get(64);const n=t.getColor(xe.zw);this.borderColor=n?n.toString():null,this.hideCursor=i.get(44);const r=t.getColor(xe.n0);this.cursorColor=r?r.transparent(.7).toString():null,this.themeType=t.type;const s=i.get(56),o=s.enabled,a=s.side,l=o?t.getColor(xe.e_)||gt.RW.getDefaultBackground():null;this.backgroundColor=null===l||"left"===a?null:Rt.Il.Format.CSS.formatHex(l);const c=i.get(117).overviewRuler;this.top=c.top,this.right=c.right,this.domWidth=c.width,this.domHeight=c.height,0===this.overviewRulerLanes?(this.canvasWidth=0,this.canvasHeight=0):(this.canvasWidth=this.domWidth*this.pixelRatio|0,this.canvasHeight=this.domHeight*this.pixelRatio|0);const[d,h]=this._initLanes(1,this.canvasWidth,this.overviewRulerLanes);this.x=d,this.w=h}_initLanes(e,t,i){const n=t-e;if(i>=3){const t=Math.floor(n/3),i=Math.floor(n/3),r=n-t-i,s=e+t;return[[0,e,s,e,e+t+r,e,s,e],[0,t,r,t+r,i,t+r+i,r+i,t+r+i]]}if(2===i){const t=Math.floor(n/2),i=n-t;return[[0,e,e,e,e+t,e,e,e],[0,t,t,t,i,t+i,t+i,t+i]]}return[[0,e,e,e,e,e,e,e],[0,n,n,n,n,n,n,n]]}equals(e){return this.lineHeight===e.lineHeight&&this.pixelRatio===e.pixelRatio&&this.overviewRulerLanes===e.overviewRulerLanes&&this.renderBorder===e.renderBorder&&this.borderColor===e.borderColor&&this.hideCursor===e.hideCursor&&this.cursorColor===e.cursorColor&&this.themeType===e.themeType&&this.backgroundColor===e.backgroundColor&&this.top===e.top&&this.right===e.right&&this.domWidth===e.domWidth&&this.domHeight===e.domHeight&&this.canvasWidth===e.canvasWidth&&this.canvasHeight===e.canvasHeight}}class Ft extends N{constructor(e){super(e),this._domNode=(0,g.X)(document.createElement("canvas")),this._domNode.setClassName("decorationsOverviewRuler"),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._domNode.setAttribute("aria-hidden","true"),this._updateSettings(!1),this._tokensColorTrackerListener=gt.RW.onDidChange((e=>{e.changedColorMap&&this._updateSettings(!0)})),this._cursorPositions=[]}dispose(){super.dispose(),this._tokensColorTrackerListener.dispose()}_updateSettings(e){const t=new Pt(this._context.configuration,this._context.theme);return!(this._settings&&this._settings.equals(t)||(this._settings=t,this._domNode.setTop(this._settings.top),this._domNode.setRight(this._settings.right),this._domNode.setWidth(this._settings.domWidth),this._domNode.setHeight(this._settings.domHeight),this._domNode.domNode.width=this._settings.canvasWidth,this._domNode.domNode.height=this._settings.canvasHeight,e&&this._render(),0))}onConfigurationChanged(e){return this._updateSettings(!1)}onCursorStateChanged(e){this._cursorPositions=[];for(let t=0,i=e.selections.length;t<i;t++)this._cursorPositions[t]=e.selections[t].getPosition();return this._cursorPositions.sort(Q.L.compare),!0}onDecorationsChanged(e){return!!e.affectsOverviewRuler}onFlushed(e){return!0}onScrollChanged(e){return e.scrollHeightChanged}onZonesChanged(e){return!0}onThemeChanged(e){return this._context.model.invalidateOverviewRulerColorCache(),this._updateSettings(!1)}getDomNode(){return this._domNode.domNode}prepareRender(e){}render(e){this._render()}_render(){if(0===this._settings.overviewRulerLanes)return void this._domNode.setBackgroundColor(this._settings.backgroundColor?this._settings.backgroundColor:"");const e=this._settings.canvasWidth,t=this._settings.canvasHeight,i=this._settings.lineHeight,n=this._context.viewLayout,r=t/this._context.viewLayout.getScrollHeight(),s=this._context.model.getAllOverviewRulerDecorations(this._context.theme),o=6*this._settings.pixelRatio|0,a=o/2|0,l=this._domNode.domNode.getContext("2d");null===this._settings.backgroundColor?l.clearRect(0,0,e,t):(l.fillStyle=this._settings.backgroundColor,l.fillRect(0,0,e,t));const c=this._settings.x,d=this._settings.w,h=Object.keys(s);h.sort();for(let e=0,u=h.length;e<u;e++){const u=h[e],g=s[u];l.fillStyle=u;let f=0,p=0,m=0;for(let e=0,s=g.length;e<s;e++){const s=g[3*e],h=g[3*e+1],u=g[3*e+2];let _=n.getVerticalOffsetForLineNumber(h)*r|0,b=(n.getVerticalOffsetForLineNumber(u)+i)*r|0;if(b-_<o){let e=(_+b)/2|0;e<a?e=a:e+a>t&&(e=t-a),_=e-a,b=e+a}_>m+1||s!==f?(0!==e&&l.fillRect(c[f],p,d[f],m-p),f=s,p=_,m=b):b>m&&(m=b)}l.fillRect(c[f],p,d[f],m-p)}if(!this._settings.hideCursor&&this._settings.cursorColor){const e=2*this._settings.pixelRatio|0,i=e/2|0,s=this._settings.x[7],o=this._settings.w[7];l.fillStyle=this._settings.cursorColor;let a=-100,c=-100;for(let d=0,h=this._cursorPositions.length;d<h;d++){const h=this._cursorPositions[d];let u=n.getVerticalOffsetForLineNumber(h.lineNumber)*r|0;u<i?u=i:u+i>t&&(u=t-i);const g=u-i,f=g+e;g>c+1?(0!==d&&l.fillRect(s,a,o,c-a),a=g,c=f):f>c&&(c=f)}l.fillRect(s,a,o,c-a)}this._settings.renderBorder&&this._settings.borderColor&&this._settings.overviewRulerLanes>0&&(l.beginPath(),l.lineWidth=1,l.strokeStyle=this._settings.borderColor,l.moveTo(0,0),l.lineTo(0,t),l.stroke(),l.moveTo(0,0),l.lineTo(e,0),l.stroke())}}var Bt=i(92003);class Wt extends D{constructor(e,t){super(),this._context=e;const i=this._context.configuration.options;this._domNode=(0,g.X)(document.createElement("canvas")),this._domNode.setClassName(t),this._domNode.setPosition("absolute"),this._domNode.setLayerHinting(!0),this._domNode.setContain("strict"),this._zoneManager=new Bt.Tj((e=>this._context.viewLayout.getVerticalOffsetForLineNumber(e))),this._zoneManager.setDOMWidth(0),this._zoneManager.setDOMHeight(0),this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight()),this._zoneManager.setLineHeight(i.get(51)),this._zoneManager.setPixelRatio(i.get(115)),this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return e.hasChanged(51)&&(this._zoneManager.setLineHeight(t.get(51)),this._render()),e.hasChanged(115)&&(this._zoneManager.setPixelRatio(t.get(115)),this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render()),!0}onFlushed(e){return this._render(),!0}onScrollChanged(e){return e.scrollHeightChanged&&(this._zoneManager.setOuterHeight(e.scrollHeight),this._render()),!0}onZonesChanged(e){return this._render(),!0}getDomNode(){return this._domNode.domNode}setLayout(e){this._domNode.setTop(e.top),this._domNode.setRight(e.right);let t=!1;t=this._zoneManager.setDOMWidth(e.width)||t,t=this._zoneManager.setDOMHeight(e.height)||t,t&&(this._domNode.setWidth(this._zoneManager.getDOMWidth()),this._domNode.setHeight(this._zoneManager.getDOMHeight()),this._domNode.domNode.width=this._zoneManager.getCanvasWidth(),this._domNode.domNode.height=this._zoneManager.getCanvasHeight(),this._render())}setZones(e){this._zoneManager.setZones(e),this._render()}_render(){if(0===this._zoneManager.getOuterHeight())return!1;const e=this._zoneManager.getCanvasWidth(),t=this._zoneManager.getCanvasHeight(),i=this._zoneManager.resolveColorZones(),n=this._zoneManager.getId2Color(),r=this._domNode.domNode.getContext("2d");return r.clearRect(0,0,e,t),i.length>0&&this._renderOneLane(r,i,n,e),!0}_renderOneLane(e,t,i,n){let r=0,s=0,o=0;for(const a of t){const t=a.colorId,l=a.from,c=a.to;t!==r?(e.fillRect(0,s,n,o-s),r=t,e.fillStyle=i[r],s=l,o=c):o>=l?o=Math.max(o,c):(e.fillRect(0,s,n,o-s),s=l,o=c)}e.fillRect(0,s,n,o-s)}}class Yt extends N{constructor(e){super(e),this.domNode=(0,g.X)(document.createElement("div")),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.domNode.setClassName("view-rulers"),this._renderedRulers=[];const t=this._context.configuration.options;this._rulers=t.get(83),this._typicalHalfwidthCharacterWidth=t.get(36).typicalHalfwidthCharacterWidth}dispose(){super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._rulers=t.get(83),this._typicalHalfwidthCharacterWidth=t.get(36).typicalHalfwidthCharacterWidth,!0}onScrollChanged(e){return e.scrollHeightChanged}prepareRender(e){}_ensureRulersCount(){const e=this._renderedRulers.length,t=this._rulers.length;if(e===t)return;if(e<t){const{tabSize:i}=this._context.model.getTextModelOptions(),n=i;let r=t-e;for(;r>0;){const e=(0,g.X)(document.createElement("div"));e.setClassName("view-ruler"),e.setWidth(n),this.domNode.appendChild(e),this._renderedRulers.push(e),r--}return}let i=e-t;for(;i>0;){const e=this._renderedRulers.pop();this.domNode.removeChild(e),i--}}render(e){this._ensureRulersCount();for(let t=0,i=this._rulers.length;t<i;t++){const i=this._renderedRulers[t],n=this._rulers[t];i.setBoxShadow(n.color?`1px 0 0 0 ${n.color} inset`:""),i.setHeight(Math.min(e.scrollHeight,1e6)),i.setLeft(n.column*this._typicalHalfwidthCharacterWidth)}}}(0,Y.Ic)(((e,t)=>{const i=e.getColor(xe.zk);i&&t.addRule(`.monaco-editor .view-ruler { box-shadow: 1px 0 0 0 ${i} inset; }`)}));class Ht extends N{constructor(e){super(e),this._scrollTop=0,this._width=0,this._updateWidth(),this._shouldShow=!1;const t=this._context.configuration.options.get(84);this._useShadows=t.useShadows,this._domNode=(0,g.X)(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true")}dispose(){super.dispose()}_updateShouldShow(){const e=this._useShadows&&this._scrollTop>0;return this._shouldShow!==e&&(this._shouldShow=e,!0)}getDomNode(){return this._domNode}_updateWidth(){const e=this._context.configuration.options.get(117);0===e.minimap.renderMinimap||e.minimap.minimapWidth>0&&0===e.minimap.minimapLeft?this._width=e.width:this._width=e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}onConfigurationChanged(e){const t=this._context.configuration.options.get(84);return this._useShadows=t.useShadows,this._updateWidth(),this._updateShouldShow(),!0}onScrollChanged(e){return this._scrollTop=e.scrollTop,this._updateShouldShow()}prepareRender(e){}render(e){this._domNode.setWidth(this._width),this._domNode.setClassName(this._shouldShow?"scroll-decoration":"")}}(0,Y.Ic)(((e,t)=>{const i=e.getColor(mt._w);i&&t.addRule(`.monaco-editor .scroll-decoration { box-shadow: ${i} 0 6px 6px -6px inset; }`)}));class jt{constructor(e){this.left=e.left,this.width=e.width,this.startStyle=null,this.endStyle=null}}class Vt{constructor(e,t){this.lineNumber=e,this.ranges=t}}function zt(e){return new jt(e)}function Ut(e){return new Vt(e.lineNumber,e.ranges.map(zt))}const $t=b.un;class Kt extends ke{constructor(e){super(),this._previousFrameVisibleRangesWithStyle=[],this._context=e;const t=this._context.configuration.options;this._lineHeight=t.get(51),this._roundedSelection=t.get(82),this._typicalHalfwidthCharacterWidth=t.get(36).typicalHalfwidthCharacterWidth,this._selections=[],this._renderResult=null,this._context.addEventHandler(this)}dispose(){this._context.removeEventHandler(this),this._renderResult=null,super.dispose()}onConfigurationChanged(e){const t=this._context.configuration.options;return this._lineHeight=t.get(51),this._roundedSelection=t.get(82),this._typicalHalfwidthCharacterWidth=t.get(36).typicalHalfwidthCharacterWidth,!0}onCursorStateChanged(e){return this._selections=e.selections.slice(0),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return e.scrollTopChanged}onZonesChanged(e){return!0}_visibleRangesHaveGaps(e){for(let t=0,i=e.length;t<i;t++)if(e[t].ranges.length>1)return!0;return!1}_enrichVisibleRangesWithStyle(e,t,i){const n=this._typicalHalfwidthCharacterWidth/4;let r=null,s=null;if(i&&i.length>0&&t.length>0){const n=t[0].lineNumber;if(n===e.startLineNumber)for(let e=0;!r&&e<i.length;e++)i[e].lineNumber===n&&(r=i[e].ranges[0]);const o=t[t.length-1].lineNumber;if(o===e.endLineNumber)for(let e=i.length-1;!s&&e>=0;e--)i[e].lineNumber===o&&(s=i[e].ranges[0]);r&&!r.startStyle&&(r=null),s&&!s.startStyle&&(s=null)}for(let e=0,i=t.length;e<i;e++){const o=t[e].ranges[0],a=o.left,l=o.left+o.width,c={top:0,bottom:0},d={top:0,bottom:0};if(e>0){const i=t[e-1].ranges[0].left,r=t[e-1].ranges[0].left+t[e-1].ranges[0].width;qt(a-i)<n?c.top=2:a>i&&(c.top=1),qt(l-r)<n?d.top=2:i<l&&l<r&&(d.top=1)}else r&&(c.top=r.startStyle.top,d.top=r.endStyle.top);if(e+1<i){const i=t[e+1].ranges[0].left,r=t[e+1].ranges[0].left+t[e+1].ranges[0].width;qt(a-i)<n?c.bottom=2:i<a&&a<r&&(c.bottom=1),qt(l-r)<n?d.bottom=2:l<r&&(d.bottom=1)}else s&&(c.bottom=s.startStyle.bottom,d.bottom=s.endStyle.bottom);o.startStyle=c,o.endStyle=d}}_getVisibleRangesWithStyle(e,t,i){const n=(t.linesVisibleRangesForRange(e,!0)||[]).map(Ut),r=this._visibleRangesHaveGaps(n);return $t||r||!this._roundedSelection||this._enrichVisibleRangesWithStyle(t.visibleRange,n,i),n}_createSelectionPiece(e,t,i,n,r){return'<div class="cslr '+i+'" style="top:'+e.toString()+"px;left:"+n.toString()+"px;width:"+r.toString()+"px;height:"+t+'px;"></div>'}_actualRenderOneSelection(e,t,i,n){if(0===n.length)return;const r=!!n[0].ranges[0].startStyle,s=this._lineHeight.toString(),o=(this._lineHeight-1).toString(),a=n[0].lineNumber,l=n[n.length-1].lineNumber;for(let c=0,d=n.length;c<d;c++){const d=n[c],h=d.lineNumber,u=h-t,g=!i||h!==l&&h!==a?s:o,f=i&&h===a?1:0;let p="",m="";for(let e=0,t=d.ranges.length;e<t;e++){const t=d.ranges[e];if(r){const e=t.startStyle,i=t.endStyle;if(1===e.top||1===e.bottom){p+=this._createSelectionPiece(f,g,Kt.SELECTION_CLASS_NAME,t.left-Kt.ROUNDED_PIECE_WIDTH,Kt.ROUNDED_PIECE_WIDTH);let i=Kt.EDITOR_BACKGROUND_CLASS_NAME;1===e.top&&(i+=" "+Kt.SELECTION_TOP_RIGHT),1===e.bottom&&(i+=" "+Kt.SELECTION_BOTTOM_RIGHT),p+=this._createSelectionPiece(f,g,i,t.left-Kt.ROUNDED_PIECE_WIDTH,Kt.ROUNDED_PIECE_WIDTH)}if(1===i.top||1===i.bottom){p+=this._createSelectionPiece(f,g,Kt.SELECTION_CLASS_NAME,t.left+t.width,Kt.ROUNDED_PIECE_WIDTH);let e=Kt.EDITOR_BACKGROUND_CLASS_NAME;1===i.top&&(e+=" "+Kt.SELECTION_TOP_LEFT),1===i.bottom&&(e+=" "+Kt.SELECTION_BOTTOM_LEFT),p+=this._createSelectionPiece(f,g,e,t.left+t.width,Kt.ROUNDED_PIECE_WIDTH)}}let i=Kt.SELECTION_CLASS_NAME;if(r){const e=t.startStyle,n=t.endStyle;0===e.top&&(i+=" "+Kt.SELECTION_TOP_LEFT),0===e.bottom&&(i+=" "+Kt.SELECTION_BOTTOM_LEFT),0===n.top&&(i+=" "+Kt.SELECTION_TOP_RIGHT),0===n.bottom&&(i+=" "+Kt.SELECTION_BOTTOM_RIGHT)}m+=this._createSelectionPiece(f,g,i,t.left,t.width)}e[u][0]+=p,e[u][1]+=m}}prepareRender(e){const t=[],i=e.visibleRange.startLineNumber,n=e.visibleRange.endLineNumber;for(let e=i;e<=n;e++)t[e-i]=["",""];const r=[];for(let n=0,s=this._selections.length;n<s;n++){const s=this._selections[n];if(s.isEmpty()){r[n]=null;continue}const o=this._getVisibleRangesWithStyle(s,e,this._previousFrameVisibleRangesWithStyle[n]);r[n]=o,this._actualRenderOneSelection(t,i,this._selections.length>1,o)}this._previousFrameVisibleRangesWithStyle=r,this._renderResult=t.map((([e,t])=>e+t))}render(e,t){if(!this._renderResult)return"";const i=t-e;return i<0||i>=this._renderResult.length?"":this._renderResult[i]}}function qt(e){return e<0?-e:e}Kt.SELECTION_CLASS_NAME="selected-text",Kt.SELECTION_TOP_LEFT="top-left-radius",Kt.SELECTION_BOTTOM_LEFT="bottom-left-radius",Kt.SELECTION_TOP_RIGHT="top-right-radius",Kt.SELECTION_BOTTOM_RIGHT="bottom-right-radius",Kt.EDITOR_BACKGROUND_CLASS_NAME="monaco-editor-background",Kt.ROUNDED_PIECE_WIDTH=10,(0,Y.Ic)(((e,t)=>{const i=e.getColor(mt.hE);i&&t.addRule(`.monaco-editor .focused .selected-text { background-color: ${i}; }`);const n=e.getColor(mt.ES);n&&t.addRule(`.monaco-editor .selected-text { background-color: ${n}; }`);const r=e.getColor(mt.yb);r&&!r.isTransparent()&&t.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${r}; }`)}));class Gt{constructor(e,t,i,n,r,s){this.top=e,this.left=t,this.width=i,this.height=n,this.textContent=r,this.textContentClassName=s}}class Zt{constructor(e){this._context=e;const t=this._context.configuration.options,i=t.get(36);this._cursorStyle=t.get(19),this._lineHeight=t.get(51),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(22),this._typicalHalfwidthCharacterWidth),this._isVisible=!0,this._domNode=(0,g.X)(document.createElement("div")),this._domNode.setClassName(`cursor ${Ne.S}`),this._domNode.setHeight(this._lineHeight),this._domNode.setTop(0),this._domNode.setLeft(0),c.V.applyFontInfo(this._domNode,i),this._domNode.setDisplay("none"),this._position=new Q.L(1,1),this._lastRenderedContent="",this._renderData=null}getDomNode(){return this._domNode}getPosition(){return this._position}show(){this._isVisible||(this._domNode.setVisibility("inherit"),this._isVisible=!0)}hide(){this._isVisible&&(this._domNode.setVisibility("hidden"),this._isVisible=!1)}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(36);return this._cursorStyle=t.get(19),this._lineHeight=t.get(51),this._typicalHalfwidthCharacterWidth=i.typicalHalfwidthCharacterWidth,this._lineCursorWidth=Math.min(t.get(22),this._typicalHalfwidthCharacterWidth),c.V.applyFontInfo(this._domNode,i),!0}onCursorPositionChanged(e){return this._position=e,!0}_prepareRender(e){let t="";if(this._cursorStyle===H.d2.Line||this._cursorStyle===H.d2.LineThin){const i=e.visibleRangeForPosition(this._position);if(!i||i.outsideRenderedLine)return null;let n;if(this._cursorStyle===H.d2.Line){if(n=r.Uh(this._lineCursorWidth>0?this._lineCursorWidth:2),n>2){const e=this._context.model.getLineContent(this._position.lineNumber),i=we.vH(e,this._position.column-1);t=e.substr(this._position.column-1,i)}}else n=r.Uh(1);let s=i.left;n>=2&&s>=1&&(s-=1);const o=e.getVerticalOffsetForLineNumber(this._position.lineNumber)-e.bigNumbersDelta;return new Gt(o,s,n,this._lineHeight,t,"")}const i=this._context.model.getLineContent(this._position.lineNumber),n=we.vH(i,this._position.column-1),s=e.linesVisibleRangesForRange(new X.e(this._position.lineNumber,this._position.column,this._position.lineNumber,this._position.column+n),!1);if(!s||0===s.length)return null;const o=s[0];if(o.outsideRenderedLine||0===o.ranges.length)return null;const a=o.ranges[0],l=a.width<1?this._typicalHalfwidthCharacterWidth:a.width;let c="";if(this._cursorStyle===H.d2.Block){const e=this._context.model.getViewLineData(this._position.lineNumber);t=i.substr(this._position.column-1,n);const r=e.tokens.findTokenIndexAtOffset(this._position.column-1);c=e.tokens.getClassName(r)}let d=e.getVerticalOffsetForLineNumber(this._position.lineNumber)-e.bigNumbersDelta,h=this._lineHeight;return this._cursorStyle!==H.d2.Underline&&this._cursorStyle!==H.d2.UnderlineThin||(d+=this._lineHeight-2,h=2),new Gt(d,a.left,l,h,t,c)}prepareRender(e){this._renderData=this._prepareRender(e)}render(e){return this._renderData?(this._lastRenderedContent!==this._renderData.textContent&&(this._lastRenderedContent=this._renderData.textContent,this._domNode.domNode.textContent=this._lastRenderedContent),this._domNode.setClassName(`cursor ${Ne.S} ${this._renderData.textContentClassName}`),this._domNode.setDisplay("block"),this._domNode.setTop(this._renderData.top),this._domNode.setLeft(this._renderData.left),this._domNode.setWidth(this._renderData.width),this._domNode.setLineHeight(this._renderData.height),this._domNode.setHeight(this._renderData.height),{domNode:this._domNode.domNode,position:this._position,contentLeft:this._renderData.left,height:this._renderData.height,width:2}):(this._domNode.setDisplay("none"),null)}}class Jt extends N{constructor(e){super(e);const t=this._context.configuration.options;this._readOnly=t.get(72),this._cursorBlinking=t.get(17),this._cursorStyle=t.get(19),this._cursorSmoothCaretAnimation=t.get(18),this._selectionIsEmpty=!0,this._isVisible=!1,this._primaryCursor=new Zt(this._context),this._secondaryCursors=[],this._renderData=[],this._domNode=(0,g.X)(document.createElement("div")),this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true"),this._updateDomClassName(),this._domNode.appendChild(this._primaryCursor.getDomNode()),this._startCursorBlinkAnimation=new _._F,this._cursorFlatBlinkInterval=new _.zh,this._blinkingEnabled=!1,this._editorHasFocus=!1,this._updateBlinking()}dispose(){super.dispose(),this._startCursorBlinkAnimation.dispose(),this._cursorFlatBlinkInterval.dispose()}getDomNode(){return this._domNode}onConfigurationChanged(e){const t=this._context.configuration.options;this._readOnly=t.get(72),this._cursorBlinking=t.get(17),this._cursorStyle=t.get(19),this._cursorSmoothCaretAnimation=t.get(18),this._updateBlinking(),this._updateDomClassName(),this._primaryCursor.onConfigurationChanged(e);for(let t=0,i=this._secondaryCursors.length;t<i;t++)this._secondaryCursors[t].onConfigurationChanged(e);return!0}_onCursorPositionChanged(e,t){if(this._primaryCursor.onCursorPositionChanged(e),this._updateBlinking(),this._secondaryCursors.length<t.length){const e=t.length-this._secondaryCursors.length;for(let t=0;t<e;t++){const e=new Zt(this._context);this._domNode.domNode.insertBefore(e.getDomNode().domNode,this._primaryCursor.getDomNode().domNode.nextSibling),this._secondaryCursors.push(e)}}else if(this._secondaryCursors.length>t.length){const e=this._secondaryCursors.length-t.length;for(let t=0;t<e;t++)this._domNode.removeChild(this._secondaryCursors[0].getDomNode()),this._secondaryCursors.splice(0,1)}for(let e=0;e<t.length;e++)this._secondaryCursors[e].onCursorPositionChanged(t[e])}onCursorStateChanged(e){const t=[];for(let i=0,n=e.selections.length;i<n;i++)t[i]=e.selections[i].getPosition();this._onCursorPositionChanged(t[0],t.slice(1));const i=e.selections[0].isEmpty();return this._selectionIsEmpty!==i&&(this._selectionIsEmpty=i,this._updateDomClassName()),!0}onDecorationsChanged(e){return!0}onFlushed(e){return!0}onFocusChanged(e){return this._editorHasFocus=e.isFocused,this._updateBlinking(),!1}onLinesChanged(e){return!0}onLinesDeleted(e){return!0}onLinesInserted(e){return!0}onScrollChanged(e){return!0}onTokensChanged(e){const t=t=>{for(let i=0,n=e.ranges.length;i<n;i++)if(e.ranges[i].fromLineNumber<=t.lineNumber&&t.lineNumber<=e.ranges[i].toLineNumber)return!0;return!1};if(t(this._primaryCursor.getPosition()))return!0;for(const e of this._secondaryCursors)if(t(e.getPosition()))return!0;return!1}onZonesChanged(e){return!0}_getCursorBlinking(){return this._editorHasFocus?this._readOnly?5:this._cursorBlinking:0}_updateBlinking(){this._startCursorBlinkAnimation.cancel(),this._cursorFlatBlinkInterval.cancel();const e=this._getCursorBlinking(),t=0===e,i=5===e;t?this._hide():this._show(),this._blinkingEnabled=!1,this._updateDomClassName(),t||i||(1===e?this._cursorFlatBlinkInterval.cancelAndSet((()=>{this._isVisible?this._hide():this._show()}),Jt.BLINK_INTERVAL):this._startCursorBlinkAnimation.setIfNotSet((()=>{this._blinkingEnabled=!0,this._updateDomClassName()}),Jt.BLINK_INTERVAL))}_updateDomClassName(){this._domNode.setClassName(this._getClassName())}_getClassName(){let e="cursors-layer";switch(this._selectionIsEmpty||(e+=" has-selection"),this._cursorStyle){case H.d2.Line:e+=" cursor-line-style";break;case H.d2.Block:e+=" cursor-block-style";break;case H.d2.Underline:e+=" cursor-underline-style";break;case H.d2.LineThin:e+=" cursor-line-thin-style";break;case H.d2.BlockOutline:e+=" cursor-block-outline-style";break;case H.d2.UnderlineThin:e+=" cursor-underline-thin-style";break;default:e+=" cursor-line-style"}if(this._blinkingEnabled)switch(this._getCursorBlinking()){case 1:e+=" cursor-blink";break;case 2:e+=" cursor-smooth";break;case 3:e+=" cursor-phase";break;case 4:e+=" cursor-expand";break;case 5:e+=" cursor-solid";break;default:e+=" cursor-solid"}else e+=" cursor-solid";return this._cursorSmoothCaretAnimation&&(e+=" cursor-smooth-caret-animation"),e}_show(){this._primaryCursor.show();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].show();this._isVisible=!0}_hide(){this._primaryCursor.hide();for(let e=0,t=this._secondaryCursors.length;e<t;e++)this._secondaryCursors[e].hide();this._isVisible=!1}prepareRender(e){this._primaryCursor.prepareRender(e);for(let t=0,i=this._secondaryCursors.length;t<i;t++)this._secondaryCursors[t].prepareRender(e)}render(e){let t=[],i=0;const n=this._primaryCursor.render(e);n&&(t[i++]=n);for(let n=0,r=this._secondaryCursors.length;n<r;n++){const r=this._secondaryCursors[n].render(e);r&&(t[i++]=r)}this._renderData=t}getLastRenderData(){return this._renderData}}Jt.BLINK_INTERVAL=500,(0,Y.Ic)(((e,t)=>{const i=e.getColor(xe.n0);if(i){let n=e.getColor(xe.fY);n||(n=i.opposite()),t.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${i}; border-color: ${i}; color: ${n}; }`),"hc"===e.type&&t.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${n}; border-right: 1px solid ${n}; }`)}}));const Qt=()=>{throw new Error("Invalid change accessor")};class Xt extends N{constructor(e){super(e);const t=this._context.configuration.options,i=t.get(117);this._lineHeight=t.get(51),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,this.domNode=(0,g.X)(document.createElement("div")),this.domNode.setClassName("view-zones"),this.domNode.setPosition("absolute"),this.domNode.setAttribute("role","presentation"),this.domNode.setAttribute("aria-hidden","true"),this.marginDomNode=(0,g.X)(document.createElement("div")),this.marginDomNode.setClassName("margin-view-zones"),this.marginDomNode.setPosition("absolute"),this.marginDomNode.setAttribute("role","presentation"),this.marginDomNode.setAttribute("aria-hidden","true"),this._zones={}}dispose(){super.dispose(),this._zones={}}_recomputeWhitespacesProps(){const e=this._context.viewLayout.getWhitespaces(),t=new Map;for(const i of e)t.set(i.id,i);let i=!1;return this._context.model.changeWhitespace((e=>{const n=Object.keys(this._zones);for(let r=0,s=n.length;r<s;r++){const s=n[r],o=this._zones[s],a=this._computeWhitespaceProps(o.delegate),l=t.get(s);!l||l.afterLineNumber===a.afterViewLineNumber&&l.height===a.heightInPx||(e.changeOneWhitespace(s,a.afterViewLineNumber,a.heightInPx),this._safeCallOnComputedHeight(o.delegate,a.heightInPx),i=!0)}})),i}onConfigurationChanged(e){const t=this._context.configuration.options,i=t.get(117);return this._lineHeight=t.get(51),this._contentWidth=i.contentWidth,this._contentLeft=i.contentLeft,e.hasChanged(51)&&this._recomputeWhitespacesProps(),!0}onLineMappingChanged(e){return this._recomputeWhitespacesProps()}onLinesDeleted(e){return!0}onScrollChanged(e){return e.scrollTopChanged||e.scrollWidthChanged}onZonesChanged(e){return!0}onLinesInserted(e){return!0}_getZoneOrdinal(e){return void 0!==e.afterColumn?e.afterColumn:1e4}_computeWhitespaceProps(e){if(0===e.afterLineNumber)return{afterViewLineNumber:0,heightInPx:this._heightInPixels(e),minWidthInPx:this._minWidthInPixels(e)};let t,i;if(void 0!==e.afterColumn)t=this._context.model.validateModelPosition({lineNumber:e.afterLineNumber,column:e.afterColumn});else{const i=this._context.model.validateModelPosition({lineNumber:e.afterLineNumber,column:1}).lineNumber;t=new Q.L(i,this._context.model.getModelLineMaxColumn(i))}i=t.column===this._context.model.getModelLineMaxColumn(t.lineNumber)?this._context.model.validateModelPosition({lineNumber:t.lineNumber+1,column:1}):this._context.model.validateModelPosition({lineNumber:t.lineNumber,column:t.column+1});const n=this._context.model.coordinatesConverter.convertModelPositionToViewPosition(t),r=this._context.model.coordinatesConverter.modelPositionIsVisible(i);return{afterViewLineNumber:n.lineNumber,heightInPx:r?this._heightInPixels(e):0,minWidthInPx:this._minWidthInPixels(e)}}changeViewZones(e){let t=!1;return this._context.model.changeWhitespace((i=>{const n={addZone:e=>(t=!0,this._addZone(i,e)),removeZone:e=>{e&&(t=this._removeZone(i,e)||t)},layoutZone:e=>{e&&(t=this._layoutZone(i,e)||t)}};!function(e,t){try{e(t)}catch(e){(0,s.dL)(e)}}(e,n),n.addZone=Qt,n.removeZone=Qt,n.layoutZone=Qt})),t}_addZone(e,t){const i=this._computeWhitespaceProps(t),n={whitespaceId:e.insertWhitespace(i.afterViewLineNumber,this._getZoneOrdinal(t),i.heightInPx,i.minWidthInPx),delegate:t,isVisible:!1,domNode:(0,g.X)(t.domNode),marginDomNode:t.marginDomNode?(0,g.X)(t.marginDomNode):null};return this._safeCallOnComputedHeight(n.delegate,i.heightInPx),n.domNode.setPosition("absolute"),n.domNode.domNode.style.width="100%",n.domNode.setDisplay("none"),n.domNode.setAttribute("monaco-view-zone",n.whitespaceId),this.domNode.appendChild(n.domNode),n.marginDomNode&&(n.marginDomNode.setPosition("absolute"),n.marginDomNode.domNode.style.width="100%",n.marginDomNode.setDisplay("none"),n.marginDomNode.setAttribute("monaco-view-zone",n.whitespaceId),this.marginDomNode.appendChild(n.marginDomNode)),this._zones[n.whitespaceId]=n,this.setShouldRender(),n.whitespaceId}_removeZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t];return delete this._zones[t],e.removeWhitespace(i.whitespaceId),i.domNode.removeAttribute("monaco-visible-view-zone"),i.domNode.removeAttribute("monaco-view-zone"),i.domNode.domNode.parentNode.removeChild(i.domNode.domNode),i.marginDomNode&&(i.marginDomNode.removeAttribute("monaco-visible-view-zone"),i.marginDomNode.removeAttribute("monaco-view-zone"),i.marginDomNode.domNode.parentNode.removeChild(i.marginDomNode.domNode)),this.setShouldRender(),!0}return!1}_layoutZone(e,t){if(this._zones.hasOwnProperty(t)){const i=this._zones[t],n=this._computeWhitespaceProps(i.delegate);return e.changeOneWhitespace(i.whitespaceId,n.afterViewLineNumber,n.heightInPx),this._safeCallOnComputedHeight(i.delegate,n.heightInPx),this.setShouldRender(),!0}return!1}shouldSuppressMouseDownOnViewZone(e){if(this._zones.hasOwnProperty(e)){const t=this._zones[e];return Boolean(t.delegate.suppressMouseDown)}return!1}_heightInPixels(e){return"number"==typeof e.heightInPx?e.heightInPx:"number"==typeof e.heightInLines?this._lineHeight*e.heightInLines:this._lineHeight}_minWidthInPixels(e){return"number"==typeof e.minWidthInPx?e.minWidthInPx:0}_safeCallOnComputedHeight(e,t){if("function"==typeof e.onComputedHeight)try{e.onComputedHeight(t)}catch(e){(0,s.dL)(e)}}_safeCallOnDomNodeTop(e,t){if("function"==typeof e.onDomNodeTop)try{e.onDomNodeTop(t)}catch(e){(0,s.dL)(e)}}prepareRender(e){}render(e){const t=e.viewportData.whitespaceViewportData,i={};let n=!1;for(let e=0,r=t.length;e<r;e++)i[t[e].id]=t[e],n=!0;const r=Object.keys(this._zones);for(let t=0,n=r.length;t<n;t++){const n=r[t],s=this._zones[n];let o=0,a=0,l="none";i.hasOwnProperty(n)?(o=i[n].verticalOffset-e.bigNumbersDelta,a=i[n].height,l="block",s.isVisible||(s.domNode.setAttribute("monaco-visible-view-zone","true"),s.isVisible=!0),this._safeCallOnDomNodeTop(s.delegate,e.getScrolledTopFromAbsoluteTop(i[n].verticalOffset))):(s.isVisible&&(s.domNode.removeAttribute("monaco-visible-view-zone"),s.isVisible=!1),this._safeCallOnDomNodeTop(s.delegate,e.getScrolledTopFromAbsoluteTop(-1e6))),s.domNode.setTop(o),s.domNode.setHeight(a),s.domNode.setDisplay(l),s.marginDomNode&&(s.marginDomNode.setTop(o),s.marginDomNode.setHeight(a),s.marginDomNode.setDisplay(l))}n&&(this.domNode.setWidth(Math.max(e.scrollWidth,this._contentWidth)),this.marginDomNode.setWidth(this._contentLeft))}}class ei{constructor(e){this._theme=e}get type(){return this._theme.type}update(e){this._theme=e}getColor(e){return this._theme.getColor(e)}}class ti{constructor(e,t,i){this.configuration=e,this.theme=new ei(t),this.model=i,this.viewLayout=i.viewLayout}addEventHandler(e){this.model.addViewEventHandler(e)}removeEventHandler(e){this.model.removeViewEventHandler(e)}}class ii{constructor(e,t,i,n){this.selections=e,this.startLineNumber=0|t.startLineNumber,this.endLineNumber=0|t.endLineNumber,this.relativeVerticalOffset=t.relativeVerticalOffset,this.bigNumbersDelta=0|t.bigNumbersDelta,this.whitespaceViewportData=i,this._model=n,this.visibleRange=new X.e(t.startLineNumber,this._model.getLineMinColumn(t.startLineNumber),t.endLineNumber,this._model.getLineMaxColumn(t.endLineNumber))}getViewLineRenderingData(e){return this._model.getViewLineRenderingData(this.visibleRange,e)}getDecorationsInViewport(){return this._model.getDecorationsInViewport(this.visibleRange)}}class ni extends D{constructor(e,t,i,n,r,s){super(),this._selections=[new u.Y(1,1,1,1)],this._renderAnimationFrame=null;const o=new Ae(t,n,r,e);this._context=new ti(t,i.getColorTheme(),n),this._context.addEventHandler(this),this._register(i.onDidColorThemeChange((e=>{this._context.theme.update(e),this._context.model.onDidColorThemeChange(),this.render(!0,!1)}))),this._viewParts=[],this._textAreaHandler=new Ie(this._context,o,this._createTextAreaHandlerHelper()),this._viewParts.push(this._textAreaHandler),this._linesContent=(0,g.X)(document.createElement("div")),this._linesContent.setClassName("lines-content monaco-editor-background"),this._linesContent.setPosition("absolute"),this.domNode=(0,g.X)(document.createElement("div")),this.domNode.setClassName(this._getEditorClassName()),this.domNode.setAttribute("role","code"),this._overflowGuardContainer=(0,g.X)(document.createElement("div")),E.write(this._overflowGuardContainer,3),this._overflowGuardContainer.setClassName("overflow-guard"),this._scrollbar=new tt(this._context,this._linesContent,this.domNode,this._overflowGuardContainer),this._viewParts.push(this._scrollbar),this._viewLines=new ct(this._context,this._linesContent),this._viewZones=new Xt(this._context),this._viewParts.push(this._viewZones);const a=new Ft(this._context);this._viewParts.push(a);const l=new Ht(this._context);this._viewParts.push(l);const c=new Ve(this._context);this._viewParts.push(c),c.addDynamicOverlay(new Je(this._context)),c.addDynamicOverlay(new Kt(this._context)),c.addDynamicOverlay(new st(this._context)),c.addDynamicOverlay(new Xe(this._context));const d=new ze(this._context);this._viewParts.push(d),d.addDynamicOverlay(new Qe(this._context)),d.addDynamicOverlay(new rt(this._context)),d.addDynamicOverlay(new ht(this._context)),d.addDynamicOverlay(new dt(this._context)),d.addDynamicOverlay(new Le(this._context));const h=new Me(this._context);h.getDomNode().appendChild(this._viewZones.marginDomNode),h.getDomNode().appendChild(d.getDomNode()),this._viewParts.push(h),this._contentWidgets=new $e(this._context,this.domNode),this._viewParts.push(this._contentWidgets),this._viewCursors=new Jt(this._context),this._viewParts.push(this._viewCursors),this._overlayWidgets=new At(this._context),this._viewParts.push(this._overlayWidgets);const f=new Yt(this._context);this._viewParts.push(f);const p=new It(this._context);if(this._viewParts.push(p),a){const e=this._scrollbar.getOverviewRulerLayoutInfo();e.parent.insertBefore(a.getDomNode(),e.insertBefore)}this._linesContent.appendChild(c.getDomNode()),this._linesContent.appendChild(f.domNode),this._linesContent.appendChild(this._viewZones.domNode),this._linesContent.appendChild(this._viewLines.getDomNode()),this._linesContent.appendChild(this._contentWidgets.domNode),this._linesContent.appendChild(this._viewCursors.getDomNode()),this._overflowGuardContainer.appendChild(h.getDomNode()),this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode()),this._overflowGuardContainer.appendChild(l.getDomNode()),this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea),this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover),this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode()),this._overflowGuardContainer.appendChild(p.getDomNode()),this.domNode.appendChild(this._overflowGuardContainer),s?s.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode):this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode),this._applyLayout(),this._pointerHandler=this._register(new ye(this._context,o,this._createPointerHandlerHelper()))}_flushAccumulatedAndRenderNow(){this._renderNow()}_createPointerHandlerHelper(){return{viewDomNode:this.domNode.domNode,linesContentDomNode:this._linesContent.domNode,focusTextArea:()=>{this.focus()},getLastRenderData:()=>{const e=this._viewCursors.getLastRenderData()||[],t=this._textAreaHandler.getLastRenderData();return new te(e,t)},shouldSuppressMouseDownOnViewZone:e=>this._viewZones.shouldSuppressMouseDownOnViewZone(e),shouldSuppressMouseDownOnWidget:e=>this._contentWidgets.shouldSuppressMouseDownOnWidget(e),getPositionFromDOMInfo:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getPositionFromDOMInfo(e,t)),visibleRangeForPosition:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new Q.L(e,t))),getLineWidth:e=>(this._flushAccumulatedAndRenderNow(),this._viewLines.getLineWidth(e))}}_createTextAreaHandlerHelper(){return{visibleRangeForPositionRelativeToEditor:(e,t)=>(this._flushAccumulatedAndRenderNow(),this._viewLines.visibleRangeForPosition(new Q.L(e,t)))}}_applyLayout(){const e=this._context.configuration.options.get(117);this.domNode.setWidth(e.width),this.domNode.setHeight(e.height),this._overflowGuardContainer.setWidth(e.width),this._overflowGuardContainer.setHeight(e.height),this._linesContent.setWidth(1e6),this._linesContent.setHeight(1e6)}_getEditorClassName(){const e=this._textAreaHandler.isFocused()?" focused":"";return this._context.configuration.options.get(114)+" "+(0,Y.m6)(this._context.theme.type)+e}handleEvents(e){super.handleEvents(e),this._scheduleRender()}onConfigurationChanged(e){return this.domNode.setClassName(this._getEditorClassName()),this._applyLayout(),!1}onCursorStateChanged(e){return this._selections=e.selections,!1}onFocusChanged(e){return this.domNode.setClassName(this._getEditorClassName()),!1}onThemeChanged(e){return this.domNode.setClassName(this._getEditorClassName()),!1}dispose(){null!==this._renderAnimationFrame&&(this._renderAnimationFrame.dispose(),this._renderAnimationFrame=null),this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove(),this._context.removeEventHandler(this),this._viewLines.dispose();for(let e=0,t=this._viewParts.length;e<t;e++)this._viewParts[e].dispose();super.dispose()}_scheduleRender(){null===this._renderAnimationFrame&&(this._renderAnimationFrame=r.lI(this._onRenderScheduled.bind(this),100))}_onRenderScheduled(){this._renderAnimationFrame=null,this._flushAccumulatedAndRenderNow()}_renderNow(){!function(e){try{e()}catch(e){(0,s.dL)(e)}}((()=>this._actualRender()))}_getViewPartsToRender(){let e=[],t=0;for(let i=0,n=this._viewParts.length;i<n;i++){const n=this._viewParts[i];n.shouldRender()&&(e[t++]=n)}return e}_actualRender(){if(!r.Uw(this.domNode.domNode))return;let e=this._getViewPartsToRender();if(!this._viewLines.shouldRender()&&0===e.length)return;const t=this._context.viewLayout.getLinesViewportData();this._context.model.setViewport(t.startLineNumber,t.endLineNumber,t.centeredLineNumber);const i=new ii(this._selections,t,this._context.viewLayout.getWhitespaceViewportData(),this._context.model);this._contentWidgets.shouldRender()&&this._contentWidgets.onBeforeRender(i),this._viewLines.shouldRender()&&(this._viewLines.renderText(i),this._viewLines.onDidRender(),e=this._getViewPartsToRender());const n=new T(this._context.viewLayout,i,this._viewLines);for(let t=0,i=e.length;t<i;t++)e[t].prepareRender(n);for(let t=0,i=e.length;t<i;t++){const i=e[t];i.render(n),i.onDidRender()}}delegateVerticalScrollbarMouseDown(e){this._scrollbar.delegateVerticalScrollbarMouseDown(e)}restoreState(e){this._context.model.setScrollPosition({scrollTop:e.scrollTop},1),this._context.model.tokenizeViewport(),this._renderNow(),this._viewLines.updateLineWidths(),this._context.model.setScrollPosition({scrollLeft:e.scrollLeft},1)}getOffsetForColumn(e,t){const i=this._context.model.validateModelPosition({lineNumber:e,column:t}),n=this._context.model.coordinatesConverter.convertModelPositionToViewPosition(i);this._flushAccumulatedAndRenderNow();const r=this._viewLines.visibleRangeForPosition(new Q.L(n.lineNumber,n.column));return r?r.left:-1}getTargetAtClientPoint(e,t){const i=this._pointerHandler.getTargetAtClientPoint(e,t);return i?Re.convertViewToModelMouseTarget(i,this._context.model.coordinatesConverter):null}createOverviewRuler(e){return new Wt(this._context,e)}change(e){this._viewZones.changeViewZones(e),this._scheduleRender()}render(e,t){if(t){this._viewLines.forceShouldRender();for(let e=0,t=this._viewParts.length;e<t;e++)this._viewParts[e].forceShouldRender()}e?this._flushAccumulatedAndRenderNow():this._scheduleRender()}focus(){this._textAreaHandler.focusTextArea()}isFocused(){return this._textAreaHandler.isFocused()}setAriaOptions(e){this._textAreaHandler.setAriaOptions(e)}addContentWidget(e){this._contentWidgets.addWidget(e.widget),this.layoutContentWidget(e),this._scheduleRender()}layoutContentWidget(e){let t=e.position&&e.position.range||null;if(null===t){const i=e.position?e.position.position:null;null!==i&&(t=new X.e(i.lineNumber,i.column,i.lineNumber,i.column))}const i=e.position?e.position.preference:null;this._contentWidgets.setWidgetPosition(e.widget,t,i),this._scheduleRender()}removeContentWidget(e){this._contentWidgets.removeWidget(e.widget),this._scheduleRender()}addOverlayWidget(e){this._overlayWidgets.addWidget(e.widget),this.layoutOverlayWidget(e),this._scheduleRender()}layoutOverlayWidget(e){const t=e.position?e.position.preference:null;this._overlayWidgets.setWidgetPosition(e.widget,t)&&this._scheduleRender()}removeOverlayWidget(e){this._overlayWidgets.removeWidget(e.widget),this._scheduleRender()}}class ri{constructor(e){this._selTrackedRange=null,this._trackSelection=!0,this._setState(e,new ee.rS(new X.e(1,1,1,1),0,new Q.L(1,1),0),new ee.rS(new X.e(1,1,1,1),0,new Q.L(1,1),0))}dispose(e){this._removeTrackedRange(e)}startTrackingSelection(e){this._trackSelection=!0,this._updateTrackedRange(e)}stopTrackingSelection(e){this._trackSelection=!1,this._removeTrackedRange(e)}_updateTrackedRange(e){this._trackSelection&&(this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,this.modelState.selection,0))}_removeTrackedRange(e){this._selTrackedRange=e.model._setTrackedRange(this._selTrackedRange,null,0)}asCursorState(){return new ee.Vi(this.modelState,this.viewState)}readSelectionFromMarkers(e){const t=e.model._getTrackedRange(this._selTrackedRange);return 0===this.modelState.selection.getDirection()?new u.Y(t.startLineNumber,t.startColumn,t.endLineNumber,t.endColumn):new u.Y(t.endLineNumber,t.endColumn,t.startLineNumber,t.startColumn)}ensureValidState(e){this._setState(e,this.modelState,this.viewState)}setState(e,t,i){this._setState(e,t,i)}_setState(e,t,i){if(t){const i=e.model.validateRange(t.selectionStart),n=t.selectionStart.equalsRange(i)?t.selectionStartLeftoverVisibleColumns:0,r=e.model.validatePosition(t.position),s=t.position.equals(r)?t.leftoverVisibleColumns:0;t=new ee.rS(i,n,r,s)}else{if(!i)return;const n=e.model.validateRange(e.coordinatesConverter.convertViewRangeToModelRange(i.selectionStart)),r=e.model.validatePosition(e.coordinatesConverter.convertViewPositionToModelPosition(i.position));t=new ee.rS(n,i.selectionStartLeftoverVisibleColumns,r,i.leftoverVisibleColumns)}if(i){const n=e.coordinatesConverter.validateViewRange(i.selectionStart,t.selectionStart),r=e.coordinatesConverter.validateViewPosition(i.position,t.position);i=new ee.rS(n,t.selectionStartLeftoverVisibleColumns,r,t.leftoverVisibleColumns)}else{const n=e.coordinatesConverter.convertModelPositionToViewPosition(new Q.L(t.selectionStart.startLineNumber,t.selectionStart.startColumn)),r=e.coordinatesConverter.convertModelPositionToViewPosition(new Q.L(t.selectionStart.endLineNumber,t.selectionStart.endColumn)),s=new X.e(n.lineNumber,n.column,r.lineNumber,r.column),o=e.coordinatesConverter.convertModelPositionToViewPosition(t.position);i=new ee.rS(s,t.selectionStartLeftoverVisibleColumns,o,t.leftoverVisibleColumns)}this.modelState=t,this.viewState=i,this._updateTrackedRange(e)}}class si{constructor(e){this.context=e,this.primaryCursor=new ri(e),this.secondaryCursors=[],this.lastAddedCursorIndex=0}dispose(){this.primaryCursor.dispose(this.context),this.killSecondaryCursors()}startTrackingSelections(){this.primaryCursor.startTrackingSelection(this.context);for(let e=0,t=this.secondaryCursors.length;e<t;e++)this.secondaryCursors[e].startTrackingSelection(this.context)}stopTrackingSelections(){this.primaryCursor.stopTrackingSelection(this.context);for(let e=0,t=this.secondaryCursors.length;e<t;e++)this.secondaryCursors[e].stopTrackingSelection(this.context)}updateContext(e){this.context=e}ensureValidState(){this.primaryCursor.ensureValidState(this.context);for(let e=0,t=this.secondaryCursors.length;e<t;e++)this.secondaryCursors[e].ensureValidState(this.context)}readSelectionFromMarkers(){let e=[];e[0]=this.primaryCursor.readSelectionFromMarkers(this.context);for(let t=0,i=this.secondaryCursors.length;t<i;t++)e[t+1]=this.secondaryCursors[t].readSelectionFromMarkers(this.context);return e}getAll(){let e=[];e[0]=this.primaryCursor.asCursorState();for(let t=0,i=this.secondaryCursors.length;t<i;t++)e[t+1]=this.secondaryCursors[t].asCursorState();return e}getViewPositions(){let e=[];e[0]=this.primaryCursor.viewState.position;for(let t=0,i=this.secondaryCursors.length;t<i;t++)e[t+1]=this.secondaryCursors[t].viewState.position;return e}getTopMostViewPosition(){let e=this.primaryCursor.viewState.position;for(let t=0,i=this.secondaryCursors.length;t<i;t++){const i=this.secondaryCursors[t].viewState.position;i.isBefore(e)&&(e=i)}return e}getBottomMostViewPosition(){let e=this.primaryCursor.viewState.position;for(let t=0,i=this.secondaryCursors.length;t<i;t++){const i=this.secondaryCursors[t].viewState.position;e.isBeforeOrEqual(i)&&(e=i)}return e}getSelections(){let e=[];e[0]=this.primaryCursor.modelState.selection;for(let t=0,i=this.secondaryCursors.length;t<i;t++)e[t+1]=this.secondaryCursors[t].modelState.selection;return e}getViewSelections(){let e=[];e[0]=this.primaryCursor.viewState.selection;for(let t=0,i=this.secondaryCursors.length;t<i;t++)e[t+1]=this.secondaryCursors[t].viewState.selection;return e}setSelections(e){this.setStates(ee.Vi.fromModelSelections(e))}getPrimaryCursor(){return this.primaryCursor.asCursorState()}setStates(e){null!==e&&(this.primaryCursor.setState(this.context,e[0].modelState,e[0].viewState),this._setSecondaryStates(e.slice(1)))}_setSecondaryStates(e){const t=this.secondaryCursors.length,i=e.length;if(t<i){let e=i-t;for(let t=0;t<e;t++)this._addSecondaryCursor()}else if(t>i){let e=t-i;for(let t=0;t<e;t++)this._removeSecondaryCursor(this.secondaryCursors.length-1)}for(let t=0;t<i;t++)this.secondaryCursors[t].setState(this.context,e[t].modelState,e[t].viewState)}killSecondaryCursors(){this._setSecondaryStates([])}_addSecondaryCursor(){this.secondaryCursors.push(new ri(this.context)),this.lastAddedCursorIndex=this.secondaryCursors.length}getLastAddedCursorIndex(){return 0===this.secondaryCursors.length||0===this.lastAddedCursorIndex?0:this.lastAddedCursorIndex}_removeSecondaryCursor(e){this.lastAddedCursorIndex>=e+1&&this.lastAddedCursorIndex--,this.secondaryCursors[e].dispose(this.context),this.secondaryCursors.splice(e,1)}_getAll(){let e=[];e[0]=this.primaryCursor;for(let t=0,i=this.secondaryCursors.length;t<i;t++)e[t+1]=this.secondaryCursors[t];return e}normalize(){if(0===this.secondaryCursors.length)return;let e=this._getAll(),t=[];for(let i=0,n=e.length;i<n;i++)t.push({index:i,selection:e[i].modelState.selection});t.sort(((e,t)=>e.selection.startLineNumber===t.selection.startLineNumber?e.selection.startColumn-t.selection.startColumn:e.selection.startLineNumber-t.selection.startLineNumber));for(let i=0;i<t.length-1;i++){const n=t[i],r=t[i+1],s=n.selection,o=r.selection;if(!this.context.cursorConfig.multiCursorMergeOverlapping)continue;let a;if(a=o.isEmpty()||s.isEmpty()?o.getStartPosition().isBeforeOrEqual(s.getEndPosition()):o.getStartPosition().isBefore(s.getEndPosition()),a){const s=n.index<r.index?i:i+1,o=n.index<r.index?i+1:i,a=t[o].index,l=t[s].index,c=t[o].selection,d=t[s].selection;if(!c.equalsSelection(d)){const i=c.plusRange(d),n=c.selectionStartLineNumber===c.startLineNumber&&c.selectionStartColumn===c.startColumn,r=d.selectionStartLineNumber===d.startLineNumber&&d.selectionStartColumn===d.startColumn;let o,h;a===this.lastAddedCursorIndex?(o=n,this.lastAddedCursorIndex=l):o=r,h=o?new u.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn):new u.Y(i.endLineNumber,i.endColumn,i.startLineNumber,i.startColumn),t[s].selection=h;const g=ee.Vi.fromModelSelection(h);e[l].setState(this.context,g.modelState,g.viewState)}for(const e of t)e.index>a&&e.index--;e.splice(a,1),t.splice(o,1),this._removeSecondaryCursor(a-1),i--}}}}var oi=i(31380),ai=i(23582);class li{constructor(e){this.type=0,this._source=e}hasChanged(e){return this._source.hasChanged(e)}}class ci{constructor(e,t){this.type=1,this.selections=e,this.modelSelections=t}}class di{constructor(e){this.type=2,e?(this.affectsMinimap=e.affectsMinimap,this.affectsOverviewRuler=e.affectsOverviewRuler):(this.affectsMinimap=!0,this.affectsOverviewRuler=!0)}}class hi{constructor(){this.type=3}}class ui{constructor(e){this.type=4,this.isFocused=e}}class gi{constructor(){this.type=5}}class fi{constructor(){this.type=6}}class pi{constructor(e,t){this.type=7,this.fromLineNumber=e,this.toLineNumber=t}}class mi{constructor(e,t){this.type=8,this.fromLineNumber=e,this.toLineNumber=t}}class _i{constructor(e,t){this.type=9,this.fromLineNumber=e,this.toLineNumber=t}}class bi{constructor(e,t,i,n,r,s){this.type=10,this.source=e,this.range=t,this.selections=i,this.verticalType=n,this.revealHorizontal=r,this.scrollType=s}}class vi{constructor(e){this.type=11,this.scrollWidth=e.scrollWidth,this.scrollLeft=e.scrollLeft,this.scrollHeight=e.scrollHeight,this.scrollTop=e.scrollTop,this.scrollWidthChanged=e.scrollWidthChanged,this.scrollLeftChanged=e.scrollLeftChanged,this.scrollHeightChanged=e.scrollHeightChanged,this.scrollTopChanged=e.scrollTopChanged}}class yi{constructor(){this.type=12}}class wi{constructor(e){this.type=13,this.ranges=e}}class Ci{constructor(){this.type=14}}class Si{constructor(){this.type=15}}class ki extends a.JT{constructor(){super(),this._onEvent=this._register(new o.Q5),this.onEvent=this._onEvent.event,this._eventHandlers=[],this._viewEventQueue=null,this._isConsumingViewEventQueue=!1,this._collector=null,this._collectorCnt=0,this._outgoingEvents=[]}emitOutgoingEvent(e){this._addOutgoingEvent(e),this._emitOugoingEvents()}_addOutgoingEvent(e){for(let t=0,i=this._outgoingEvents.length;t<i;t++)if(this._outgoingEvents[t].kind===e.kind)return void(this._outgoingEvents[t]=this._outgoingEvents[t].merge(e));this._outgoingEvents.push(e)}_emitOugoingEvents(){for(;this._outgoingEvents.length>0;){if(this._collector||this._isConsumingViewEventQueue)return;const e=this._outgoingEvents.shift();e.isNoOp()||this._onEvent.fire(e)}}addViewEventHandler(e){for(let t=0,i=this._eventHandlers.length;t<i;t++)this._eventHandlers[t]===e&&console.warn("Detected duplicate listener in ViewEventDispatcher",e);this._eventHandlers.push(e)}removeViewEventHandler(e){for(let t=0;t<this._eventHandlers.length;t++)if(this._eventHandlers[t]===e){this._eventHandlers.splice(t,1);break}}beginEmitViewEvents(){return this._collectorCnt++,1===this._collectorCnt&&(this._collector=new xi),this._collector}endEmitViewEvents(){if(this._collectorCnt--,0===this._collectorCnt){const e=this._collector.outgoingEvents,t=this._collector.viewEvents;this._collector=null;for(const t of e)this._addOutgoingEvent(t);t.length>0&&this._emitMany(t)}this._emitOugoingEvents()}emitSingleViewEvent(e){try{this.beginEmitViewEvents().emitViewEvent(e)}finally{this.endEmitViewEvents()}}_emitMany(e){this._viewEventQueue?this._viewEventQueue=this._viewEventQueue.concat(e):this._viewEventQueue=e,this._isConsumingViewEventQueue||this._consumeViewEventQueue()}_consumeViewEventQueue(){try{this._isConsumingViewEventQueue=!0,this._doConsumeQueue()}finally{this._isConsumingViewEventQueue=!1}}_doConsumeQueue(){for(;this._viewEventQueue;){const e=this._viewEventQueue;this._viewEventQueue=null;const t=this._eventHandlers.slice(0);for(const i of t)i.handleEvents(e)}}}class xi{constructor(){this.viewEvents=[],this.outgoingEvents=[]}emitViewEvent(e){this.viewEvents.push(e)}emitOutgoingEvent(e){this.outgoingEvents.push(e)}}class Li{constructor(e,t,i,n){this.kind=0,this._oldContentWidth=e,this._oldContentHeight=t,this.contentWidth=i,this.contentHeight=n,this.contentWidthChanged=this._oldContentWidth!==this.contentWidth,this.contentHeightChanged=this._oldContentHeight!==this.contentHeight}isNoOp(){return!this.contentWidthChanged&&!this.contentHeightChanged}merge(e){return 0!==e.kind?this:new Li(this._oldContentWidth,this._oldContentHeight,e.contentWidth,e.contentHeight)}}class Mi{constructor(e,t){this.kind=1,this.oldHasFocus=e,this.hasFocus=t}isNoOp(){return this.oldHasFocus===this.hasFocus}merge(e){return 1!==e.kind?this:new Mi(this.oldHasFocus,e.hasFocus)}}class Di{constructor(e,t,i,n,r,s,o,a){this.kind=2,this._oldScrollWidth=e,this._oldScrollLeft=t,this._oldScrollHeight=i,this._oldScrollTop=n,this.scrollWidth=r,this.scrollLeft=s,this.scrollHeight=o,this.scrollTop=a,this.scrollWidthChanged=this._oldScrollWidth!==this.scrollWidth,this.scrollLeftChanged=this._oldScrollLeft!==this.scrollLeft,this.scrollHeightChanged=this._oldScrollHeight!==this.scrollHeight,this.scrollTopChanged=this._oldScrollTop!==this.scrollTop}isNoOp(){return!(this.scrollWidthChanged||this.scrollLeftChanged||this.scrollHeightChanged||this.scrollTopChanged)}merge(e){return 2!==e.kind?this:new Di(this._oldScrollWidth,this._oldScrollLeft,this._oldScrollHeight,this._oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop)}}class Ni{constructor(){this.kind=3}isNoOp(){return!1}merge(e){return this}}class Ei{constructor(e,t,i,n,r,s,o){this.kind=5,this.oldSelections=e,this.selections=t,this.oldModelVersionId=i,this.modelVersionId=n,this.source=r,this.reason=s,this.reachedMaxCursorCount=o}static _selectionsAreEqual(e,t){if(!e&&!t)return!0;if(!e||!t)return!1;const i=e.length;if(i!==t.length)return!1;for(let n=0;n<i;n++)if(!e[n].equalsSelection(t[n]))return!1;return!0}isNoOp(){return Ei._selectionsAreEqual(this.oldSelections,this.selections)&&this.oldModelVersionId===this.modelVersionId}merge(e){return 5!==e.kind?this:new Ei(this.oldSelections,e.selections,this.oldModelVersionId,e.modelVersionId,e.source,e.reason,this.reachedMaxCursorCount||e.reachedMaxCursorCount)}}class Ti{constructor(){this.kind=4}isNoOp(){return!1}merge(e){return this}}class Ii{constructor(e,t){this.modelVersionId=e.getVersionId(),this.cursorState=t.getCursorStates()}equals(e){if(!e)return!1;if(this.modelVersionId!==e.modelVersionId)return!1;if(this.cursorState.length!==e.cursorState.length)return!1;for(let t=0,i=this.cursorState.length;t<i;t++)if(!this.cursorState[t].equals(e.cursorState[t]))return!1;return!0}}class Oi{constructor(e,t,i){this._model=e,this._autoClosedCharactersDecorations=t,this._autoClosedEnclosingDecorations=i}static getAllAutoClosedCharacters(e){let t=[];for(const i of e)t=t.concat(i.getAutoClosedCharactersRanges());return t}dispose(){this._autoClosedCharactersDecorations=this._model.deltaDecorations(this._autoClosedCharactersDecorations,[]),this._autoClosedEnclosingDecorations=this._model.deltaDecorations(this._autoClosedEnclosingDecorations,[])}getAutoClosedCharactersRanges(){let e=[];for(let t=0;t<this._autoClosedCharactersDecorations.length;t++){const i=this._model.getDecorationRange(this._autoClosedCharactersDecorations[t]);i&&e.push(i)}return e}isValid(e){let t=[];for(let e=0;e<this._autoClosedEnclosingDecorations.length;e++){const i=this._model.getDecorationRange(this._autoClosedEnclosingDecorations[e]);if(i&&(t.push(i),i.startLineNumber!==i.endLineNumber))return!1}t.sort(X.e.compareRangesUsingStarts),e.sort(X.e.compareRangesUsingStarts);for(let i=0;i<e.length;i++){if(i>=t.length)return!1;if(!t[i].strictContainsRange(e[i]))return!1}return!0}}class Ai extends a.JT{constructor(e,t,i,n){super(),this._model=e,this._knownModelVersionId=this._model.getVersionId(),this._viewModel=t,this._coordinatesConverter=i,this.context=new ee.zp(this._model,this._coordinatesConverter,n),this._cursors=new si(this.context),this._hasFocus=!1,this._isHandling=!1,this._isDoingComposition=!1,this._selectionsWhenCompositionStarted=null,this._columnSelectData=null,this._autoClosedActions=[],this._prevEditOperationType=0}dispose(){this._cursors.dispose(),this._autoClosedActions=(0,a.B9)(this._autoClosedActions),super.dispose()}updateConfiguration(e){this.context=new ee.zp(this._model,this._coordinatesConverter,e),this._cursors.updateContext(this.context)}onLineMappingChanged(e){this._knownModelVersionId===this._model.getVersionId()&&this.setStates(e,"viewModel",0,this.getCursorStates())}setHasFocus(e){this._hasFocus=e}_validateAutoClosedActions(){if(this._autoClosedActions.length>0){let e=this._cursors.getSelections();for(let t=0;t<this._autoClosedActions.length;t++){const i=this._autoClosedActions[t];i.isValid(e)||(i.dispose(),this._autoClosedActions.splice(t,1),t--)}}}getPrimaryCursorState(){return this._cursors.getPrimaryCursor()}getLastAddedCursorIndex(){return this._cursors.getLastAddedCursorIndex()}getCursorStates(){return this._cursors.getAll()}setStates(e,t,i,n){let r=!1;null!==n&&n.length>Ai.MAX_CURSOR_COUNT&&(n=n.slice(0,Ai.MAX_CURSOR_COUNT),r=!0);const s=new Ii(this._model,this);return this._cursors.setStates(n),this._cursors.normalize(),this._columnSelectData=null,this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,t,i,s,r)}setCursorColumnSelectData(e){this._columnSelectData=e}revealPrimary(e,t,i,n){const r=this._cursors.getViewPositions();if(r.length>1)this._emitCursorRevealRange(e,t,null,this._cursors.getViewSelections(),0,i,n);else{const s=r[0],o=new X.e(s.lineNumber,s.column,s.lineNumber,s.column);this._emitCursorRevealRange(e,t,o,null,0,i,n)}}_revealPrimaryCursor(e,t,i,n,r){const s=this._cursors.getViewPositions();if(s.length>1)this._emitCursorRevealRange(e,t,null,this._cursors.getViewSelections(),i,n,r);else{const o=s[0],a=new X.e(o.lineNumber,o.column,o.lineNumber,o.column);this._emitCursorRevealRange(e,t,a,null,i,n,r)}}_emitCursorRevealRange(e,t,i,n,r,s,o){e.emitViewEvent(new bi(t,i,n,r,s,o))}saveState(){let e=[];const t=this._cursors.getSelections();for(let i=0,n=t.length;i<n;i++){const n=t[i];e.push({inSelectionMode:!n.isEmpty(),selectionStart:{lineNumber:n.selectionStartLineNumber,column:n.selectionStartColumn},position:{lineNumber:n.positionLineNumber,column:n.positionColumn}})}return e}restoreState(e,t){let i=[];for(let e=0,n=t.length;e<n;e++){const n=t[e];let r=1,s=1;n.position&&n.position.lineNumber&&(r=n.position.lineNumber),n.position&&n.position.column&&(s=n.position.column);let o=r,a=s;n.selectionStart&&n.selectionStart.lineNumber&&(o=n.selectionStart.lineNumber),n.selectionStart&&n.selectionStart.column&&(a=n.selectionStart.column),i.push({selectionStartLineNumber:o,selectionStartColumn:a,positionLineNumber:r,positionColumn:s})}this.setStates(e,"restoreState",0,ee.Vi.fromModelSelections(i)),this.revealPrimary(e,"restoreState",!0,1)}onModelContentChanged(e,t){if(this._knownModelVersionId=t.versionId,this._isHandling)return;const i=t.containsEvent(1);if(this._prevEditOperationType=0,i)this._cursors.dispose(),this._cursors=new si(this.context),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(e,"model",1,null,!1);else if(this._hasFocus&&t.resultingSelection&&t.resultingSelection.length>0){const i=ee.Vi.fromModelSelections(t.resultingSelection);this.setStates(e,"modelChange",t.isUndoing?5:t.isRedoing?6:2,i)&&this._revealPrimaryCursor(e,"modelChange",0,!0,0)}else{const t=this._cursors.readSelectionFromMarkers();this.setStates(e,"modelChange",2,ee.Vi.fromModelSelections(t))}}getSelection(){return this._cursors.getPrimaryCursor().modelState.selection}getTopMostViewPosition(){return this._cursors.getTopMostViewPosition()}getBottomMostViewPosition(){return this._cursors.getBottomMostViewPosition()}getCursorColumnSelectData(){if(this._columnSelectData)return this._columnSelectData;const e=this._cursors.getPrimaryCursor(),t=e.viewState.selectionStart.getStartPosition(),i=e.viewState.position;return{isReal:!1,fromViewLineNumber:t.lineNumber,fromViewVisualColumn:ee.io.visibleColumnFromColumn2(this.context.cursorConfig,this._viewModel,t),toViewLineNumber:i.lineNumber,toViewVisualColumn:ee.io.visibleColumnFromColumn2(this.context.cursorConfig,this._viewModel,i)}}getSelections(){return this._cursors.getSelections()}setSelections(e,t,i){this.setStates(e,t,0,ee.Vi.fromModelSelections(i))}getPrevEditOperationType(){return this._prevEditOperationType}setPrevEditOperationType(e){this._prevEditOperationType=e}_pushAutoClosedAction(e,t){let i=[],n=[];for(let r=0,s=e.length;r<s;r++)i.push({range:e[r],options:{inlineClassName:"auto-closed-character",stickiness:1}}),n.push({range:t[r],options:{stickiness:1}});const r=this._model.deltaDecorations([],i),s=this._model.deltaDecorations([],n);this._autoClosedActions.push(new Oi(this._model,r,s))}_executeEditOperation(e){if(!e)return;e.shouldPushStackElementBefore&&this._model.pushStackElement();const t=class{static executeCommands(e,t,i){const n={model:e,selectionsBefore:t,trackedRanges:[],trackedRangesDirection:[]},r=this._innerExecuteCommands(n,i);for(let e=0,t=n.trackedRanges.length;e<t;e++)n.model._setTrackedRange(n.trackedRanges[e],null,0);return r}static _innerExecuteCommands(e,t){if(this._arrayIsEmpty(t))return null;const i=this._getEditOperations(e,t);if(0===i.operations.length)return null;const n=i.operations,r=this._getLoserCursorMap(n);if(r.hasOwnProperty("0"))return console.warn("Ignoring commands"),null;let s=[];for(let e=0,t=n.length;e<t;e++)r.hasOwnProperty(n[e].identifier.major.toString())||s.push(n[e]);i.hadTrackedEditOperation&&s.length>0&&(s[0]._isTracked=!0);let o=e.model.pushEditOperations(e.selectionsBefore,s,(i=>{let n=[];for(let t=0;t<e.selectionsBefore.length;t++)n[t]=[];for(const e of i)e.identifier&&n[e.identifier.major].push(e);const r=(e,t)=>e.identifier.minor-t.identifier.minor;let s=[];for(let i=0;i<e.selectionsBefore.length;i++)n[i].length>0?(n[i].sort(r),s[i]=t[i].computeCursorState(e.model,{getInverseEditOperations:()=>n[i],getTrackedSelection:t=>{const i=parseInt(t,10),n=e.model._getTrackedRange(e.trackedRanges[i]);return 0===e.trackedRangesDirection[i]?new u.Y(n.startLineNumber,n.startColumn,n.endLineNumber,n.endColumn):new u.Y(n.endLineNumber,n.endColumn,n.startLineNumber,n.startColumn)}})):s[i]=e.selectionsBefore[i];return s}));o||(o=e.selectionsBefore);let a=[];for(let e in r)r.hasOwnProperty(e)&&a.push(parseInt(e,10));a.sort(((e,t)=>t-e));for(const e of a)o.splice(e,1);return o}static _arrayIsEmpty(e){for(let t=0,i=e.length;t<i;t++)if(e[t])return!1;return!0}static _getEditOperations(e,t){let i=[],n=!1;for(let r=0,s=t.length;r<s;r++){const s=t[r];if(s){const t=this._getEditOperationsFromCommand(e,r,s);i=i.concat(t.operations),n=n||t.hadTrackedEditOperation}}return{operations:i,hadTrackedEditOperation:n}}static _getEditOperationsFromCommand(e,t,i){let n=[],r=0;const o=(e,s,o=!1)=>{X.e.isEmpty(e)&&""===s||n.push({identifier:{major:t,minor:r++},range:e,text:s,forceMoveMarkers:o,isAutoWhitespaceEdit:i.insertsAutoWhitespace})};let a=!1;const l={addEditOperation:o,addTrackedEditOperation:(e,t,i)=>{a=!0,o(e,t,i)},trackSelection:(t,i)=>{const n=u.Y.liftSelection(t);let r;if(n.isEmpty())if("boolean"==typeof i)r=i?2:3;else{const t=e.model.getLineMaxColumn(n.startLineNumber);r=n.startColumn===t?2:3}else r=1;const s=e.trackedRanges.length,o=e.model._setTrackedRange(null,n,r);return e.trackedRanges[s]=o,e.trackedRangesDirection[s]=n.getDirection(),s.toString()}};try{i.getEditOperations(e.model,l)}catch(e){return(0,s.dL)(e),{operations:[],hadTrackedEditOperation:!1}}return{operations:n,hadTrackedEditOperation:a}}static _getLoserCursorMap(e){(e=e.slice(0)).sort(((e,t)=>-X.e.compareRangesUsingEnds(e.range,t.range)));let t={};for(let i=1;i<e.length;i++){const n=e[i-1],r=e[i];if(X.e.getStartPosition(n.range).isBefore(X.e.getEndPosition(r.range))){let s;s=n.identifier.major>r.identifier.major?n.identifier.major:r.identifier.major,t[s.toString()]=!0;for(let t=0;t<e.length;t++)e[t].identifier.major===s&&(e.splice(t,1),t<i&&i--,t--);i>0&&i--}}return t}}.executeCommands(this._model,this._cursors.getSelections(),e.commands);if(t){this._interpretCommandResult(t);let i=[],n=[];for(let t=0;t<e.commands.length;t++){const r=e.commands[t];r instanceof ai.g&&r.enclosingRange&&r.closeCharacterRange&&(i.push(r.closeCharacterRange),n.push(r.enclosingRange))}i.length>0&&this._pushAutoClosedAction(i,n),this._prevEditOperationType=e.type}e.shouldPushStackElementAfter&&this._model.pushStackElement()}_interpretCommandResult(e){e&&0!==e.length||(e=this._cursors.readSelectionFromMarkers()),this._columnSelectData=null,this._cursors.setSelections(e),this._cursors.normalize()}_emitStateChangedIfNecessary(e,t,i,n,r){const s=new Ii(this._model,this);if(s.equals(n))return!1;const o=this._cursors.getSelections(),a=this._cursors.getViewSelections();if(e.emitViewEvent(new ci(a,o)),!n||n.cursorState.length!==s.cursorState.length||s.cursorState.some(((e,t)=>!e.modelState.equals(n.cursorState[t].modelState)))){const a=n?n.cursorState.map((e=>e.modelState.selection)):null,l=n?n.modelVersionId:0;e.emitOutgoingEvent(new Ei(a,o,l,s.modelVersionId,t||"keyboard",i,r))}return!0}_findAutoClosingPairs(e){if(!e.length)return null;let t=[];for(let i=0,n=e.length;i<n;i++){const n=e[i];if(!n.text||n.text.indexOf("\n")>=0)return null;const r=n.text.match(/([)\]}>'"`])([^)\]}>'"`]*)$/);if(!r)return null;const s=r[1],o=this.context.cursorConfig.autoClosingPairsClose2.get(s);if(!o||1!==o.length)return null;const a=o[0].open,l=n.text.length-r[2].length-1,c=n.text.lastIndexOf(a,l-1);if(-1===c)return null;t.push([c,l])}return t}executeEdits(e,t,i,n){let r=null;"snippet"===t&&(r=this._findAutoClosingPairs(i)),r&&(i[0]._isTracked=!0);let s=[],o=[];const a=this._model.pushEditOperations(this.getSelections(),i,(e=>{if(r)for(let t=0,i=r.length;t<i;t++){const[i,n]=r[t],a=e[t],l=a.range.startLineNumber,c=a.range.startColumn-1+i,d=a.range.startColumn-1+n;s.push(new X.e(l,d+1,l,d+2)),o.push(new X.e(l,c+1,l,d+2))}const t=n(e);return t&&(this._isHandling=!0),t}));a&&(this._isHandling=!1,this.setSelections(e,t,a)),s.length>0&&this._pushAutoClosedAction(s,o)}_executeEdit(e,t,i,n=0){if(this.context.cursorConfig.readOnly)return;const r=new Ii(this._model,this);this._cursors.stopTrackingSelections(),this._isHandling=!0;try{this._cursors.ensureValidState(),e()}catch(e){(0,s.dL)(e)}this._isHandling=!1,this._cursors.startTrackingSelections(),this._validateAutoClosedActions(),this._emitStateChangedIfNecessary(t,i,n,r,!1)&&this._revealPrimaryCursor(t,i,0,!0,0)}setIsDoingComposition(e){this._isDoingComposition=e}startComposition(e){this._selectionsWhenCompositionStarted=this.getSelections().slice(0)}endComposition(e,t){this._executeEdit((()=>{if("keyboard"===t){const e=Oi.getAllAutoClosedCharacters(this._autoClosedActions);this._executeEditOperation(ai.u.compositionEndWithInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,this._selectionsWhenCompositionStarted,this.getSelections(),e)),this._selectionsWhenCompositionStarted=null}}),e,t)}type(e,t,i){this._executeEdit((()=>{if("keyboard"===i){const e=t.length;let i=0;for(;i<e;){const e=we.vH(t,i),n=t.substr(i,e),r=Oi.getAllAutoClosedCharacters(this._autoClosedActions);this._executeEditOperation(ai.u.typeWithInterceptors(this._isDoingComposition,this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),r,n)),i+=e}}else this._executeEditOperation(ai.u.typeWithoutInterceptors(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t))}),e,i)}replacePreviousChar(e,t,i,n){this._executeEdit((()=>{this._executeEditOperation(ai.u.replacePreviousChar(this._prevEditOperationType,this.context.cursorConfig,this._model,this.getSelections(),t,i))}),e,n)}paste(e,t,i,n,r){this._executeEdit((()=>{this._executeEditOperation(ai.u.paste(this.context.cursorConfig,this._model,this.getSelections(),t,i,n||[]))}),e,r,4)}cut(e,t){this._executeEdit((()=>{this._executeEditOperation(oi.A.cut(this.context.cursorConfig,this._model,this.getSelections()))}),e,t)}executeCommand(e,t,i){this._executeEdit((()=>{this._cursors.killSecondaryCursors(),this._executeEditOperation(new ee.Tp(0,[t],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))}),e,i)}executeCommands(e,t,i){this._executeEdit((()=>{this._executeEditOperation(new ee.Tp(0,t,{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!1}))}),e,i)}}Ai.MAX_CURSOR_COUNT=1e4;var Ri=i(30653),Pi=i(96518),Fi=i(29102),Bi=i(55713),Wi=i(76633);class Yi{constructor(){this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[]}insert(e){this._hasPending=!0,this._inserts.push(e)}change(e){this._hasPending=!0,this._changes.push(e)}remove(e){this._hasPending=!0,this._removes.push(e)}mustCommit(){return this._hasPending}commit(e){if(!this._hasPending)return;const t=this._inserts,i=this._changes,n=this._removes;this._hasPending=!1,this._inserts=[],this._changes=[],this._removes=[],e._commitPendingChanges(t,i,n)}}class Hi{constructor(e,t,i,n,r){this.id=e,this.afterLineNumber=t,this.ordinal=i,this.height=n,this.minWidth=r,this.prefixSum=0}}class ji{constructor(e,t,i,n){this._instanceId=we.PJ(++ji.INSTANCE_COUNT),this._pendingChanges=new Yi,this._lastWhitespaceId=0,this._arr=[],this._prefixSumValidIndex=-1,this._minWidth=-1,this._lineCount=e,this._lineHeight=t,this._paddingTop=i,this._paddingBottom=n}static findInsertionIndex(e,t,i){let n=0,r=e.length;for(;n<r;){const s=n+r>>>1;t===e[s].afterLineNumber?i<e[s].ordinal?r=s:n=s+1:t<e[s].afterLineNumber?r=s:n=s+1}return n}setLineHeight(e){this._checkPendingChanges(),this._lineHeight=e}setPadding(e,t){this._paddingTop=e,this._paddingBottom=t}onFlushed(e){this._checkPendingChanges(),this._lineCount=e}changeWhitespace(e){let t=!1;try{e({insertWhitespace:(e,i,n,r)=>{t=!0,e|=0,i|=0,n|=0,r|=0;const s=this._instanceId+ ++this._lastWhitespaceId;return this._pendingChanges.insert(new Hi(s,e,i,n,r)),s},changeOneWhitespace:(e,i,n)=>{t=!0,i|=0,n|=0,this._pendingChanges.change({id:e,newAfterLineNumber:i,newHeight:n})},removeWhitespace:e=>{t=!0,this._pendingChanges.remove({id:e})}})}finally{this._pendingChanges.commit(this)}return t}_commitPendingChanges(e,t,i){if((e.length>0||i.length>0)&&(this._minWidth=-1),e.length+t.length+i.length<=1){for(const t of e)this._insertWhitespace(t);for(const e of t)this._changeOneWhitespace(e.id,e.newAfterLineNumber,e.newHeight);for(const e of i){const t=this._findWhitespaceIndex(e.id);-1!==t&&this._removeWhitespace(t)}return}const n=new Set;for(const e of i)n.add(e.id);const r=new Map;for(const e of t)r.set(e.id,e);const s=e=>{let t=[];for(const i of e)if(!n.has(i.id)){if(r.has(i.id)){const e=r.get(i.id);i.afterLineNumber=e.newAfterLineNumber,i.height=e.newHeight}t.push(i)}return t},o=s(this._arr).concat(s(e));o.sort(((e,t)=>e.afterLineNumber===t.afterLineNumber?e.ordinal-t.ordinal:e.afterLineNumber-t.afterLineNumber)),this._arr=o,this._prefixSumValidIndex=-1}_checkPendingChanges(){this._pendingChanges.mustCommit()&&this._pendingChanges.commit(this)}_insertWhitespace(e){const t=ji.findInsertionIndex(this._arr,e.afterLineNumber,e.ordinal);this._arr.splice(t,0,e),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,t-1)}_findWhitespaceIndex(e){const t=this._arr;for(let i=0,n=t.length;i<n;i++)if(t[i].id===e)return i;return-1}_changeOneWhitespace(e,t,i){const n=this._findWhitespaceIndex(e);if(-1!==n&&(this._arr[n].height!==i&&(this._arr[n].height=i,this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,n-1)),this._arr[n].afterLineNumber!==t)){const e=this._arr[n];this._removeWhitespace(n),e.afterLineNumber=t,this._insertWhitespace(e)}}_removeWhitespace(e){this._arr.splice(e,1),this._prefixSumValidIndex=Math.min(this._prefixSumValidIndex,e-1)}onLinesDeleted(e,t){this._checkPendingChanges(),e|=0,t|=0,this._lineCount-=t-e+1;for(let i=0,n=this._arr.length;i<n;i++){const n=this._arr[i].afterLineNumber;e<=n&&n<=t?this._arr[i].afterLineNumber=e-1:n>t&&(this._arr[i].afterLineNumber-=t-e+1)}}onLinesInserted(e,t){this._checkPendingChanges(),e|=0,t|=0,this._lineCount+=t-e+1;for(let i=0,n=this._arr.length;i<n;i++)e<=this._arr[i].afterLineNumber&&(this._arr[i].afterLineNumber+=t-e+1)}getWhitespacesTotalHeight(){return this._checkPendingChanges(),0===this._arr.length?0:this.getWhitespacesAccumulatedHeight(this._arr.length-1)}getWhitespacesAccumulatedHeight(e){this._checkPendingChanges(),e|=0;let t=Math.max(0,this._prefixSumValidIndex+1);0===t&&(this._arr[0].prefixSum=this._arr[0].height,t++);for(let i=t;i<=e;i++)this._arr[i].prefixSum=this._arr[i-1].prefixSum+this._arr[i].height;return this._prefixSumValidIndex=Math.max(this._prefixSumValidIndex,e),this._arr[e].prefixSum}getLinesTotalHeight(){return this._checkPendingChanges(),this._lineHeight*this._lineCount+this.getWhitespacesTotalHeight()+this._paddingTop+this._paddingBottom}getWhitespaceAccumulatedHeightBeforeLineNumber(e){this._checkPendingChanges(),e|=0;const t=this._findLastWhitespaceBeforeLineNumber(e);return-1===t?0:this.getWhitespacesAccumulatedHeight(t)}_findLastWhitespaceBeforeLineNumber(e){e|=0;const t=this._arr;let i=0,n=t.length-1;for(;i<=n;){const r=i+((n-i|0)/2|0)|0;if(t[r].afterLineNumber<e){if(r+1>=t.length||t[r+1].afterLineNumber>=e)return r;i=r+1|0}else n=r-1|0}return-1}_findFirstWhitespaceAfterLineNumber(e){e|=0;const t=this._findLastWhitespaceBeforeLineNumber(e)+1;return t<this._arr.length?t:-1}getFirstWhitespaceIndexAfterLineNumber(e){return this._checkPendingChanges(),e|=0,this._findFirstWhitespaceAfterLineNumber(e)}getVerticalOffsetForLineNumber(e){let t;return this._checkPendingChanges(),t=(e|=0)>1?this._lineHeight*(e-1):0,t+this.getWhitespaceAccumulatedHeightBeforeLineNumber(e)+this._paddingTop}getWhitespaceMinWidth(){if(this._checkPendingChanges(),-1===this._minWidth){let e=0;for(let t=0,i=this._arr.length;t<i;t++)e=Math.max(e,this._arr[t].minWidth);this._minWidth=e}return this._minWidth}isAfterLines(e){return this._checkPendingChanges(),e>this.getLinesTotalHeight()}getLineNumberAtOrAfterVerticalOffset(e){if(this._checkPendingChanges(),(e|=0)<0)return 1;const t=0|this._lineCount,i=this._lineHeight;let n=1,r=t;for(;n<r;){const t=(n+r)/2|0,s=0|this.getVerticalOffsetForLineNumber(t);if(e>=s+i)n=t+1;else{if(e>=s)return t;r=t}}return n>t?t:n}getLinesViewportData(e,t){this._checkPendingChanges(),e|=0,t|=0;const i=this._lineHeight,n=0|this.getLineNumberAtOrAfterVerticalOffset(e),r=0|this.getVerticalOffsetForLineNumber(n);let s=0|this._lineCount,o=0|this.getFirstWhitespaceIndexAfterLineNumber(n);const a=0|this.getWhitespacesCount();let l,c;-1===o?(o=a,c=s+1,l=0):(c=0|this.getAfterLineNumberForWhitespaceIndex(o),l=0|this.getHeightForWhitespaceIndex(o));let d=r,h=d;const u=5e5;let g=0;r>=u&&(g=Math.floor(r/u)*u,g=Math.floor(g/i)*i,h-=g);const f=[],p=e+(t-e)/2;let m=-1;for(let e=n;e<=s;e++){if(-1===m){const t=d,n=d+i;(t<=p&&p<n||t>p)&&(m=e)}for(d+=i,f[e-n]=h,h+=i;c===e;)h+=l,d+=l,o++,o>=a?c=s+1:(c=0|this.getAfterLineNumberForWhitespaceIndex(o),l=0|this.getHeightForWhitespaceIndex(o));if(d>=t){s=e;break}}-1===m&&(m=s);const _=0|this.getVerticalOffsetForLineNumber(s);let b=n,v=s;return b<v&&r<e&&b++,b<v&&_+i>t&&v--,{bigNumbersDelta:g,startLineNumber:n,endLineNumber:s,relativeVerticalOffset:f,centeredLineNumber:m,completelyVisibleStartLineNumber:b,completelyVisibleEndLineNumber:v}}getVerticalOffsetForWhitespaceIndex(e){this._checkPendingChanges(),e|=0;const t=this.getAfterLineNumberForWhitespaceIndex(e);let i,n;return i=t>=1?this._lineHeight*t:0,n=e>0?this.getWhitespacesAccumulatedHeight(e-1):0,i+n+this._paddingTop}getWhitespaceIndexAtOrAfterVerticallOffset(e){this._checkPendingChanges(),e|=0;let t=0,i=this.getWhitespacesCount()-1;if(i<0)return-1;if(e>=this.getVerticalOffsetForWhitespaceIndex(i)+this.getHeightForWhitespaceIndex(i))return-1;for(;t<i;){const n=Math.floor((t+i)/2),r=this.getVerticalOffsetForWhitespaceIndex(n);if(e>=r+this.getHeightForWhitespaceIndex(n))t=n+1;else{if(e>=r)return n;i=n}}return t}getWhitespaceAtVerticalOffset(e){this._checkPendingChanges(),e|=0;const t=this.getWhitespaceIndexAtOrAfterVerticallOffset(e);if(t<0)return null;if(t>=this.getWhitespacesCount())return null;const i=this.getVerticalOffsetForWhitespaceIndex(t);if(i>e)return null;const n=this.getHeightForWhitespaceIndex(t);return{id:this.getIdForWhitespaceIndex(t),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(t),verticalOffset:i,height:n}}getWhitespaceViewportData(e,t){this._checkPendingChanges(),e|=0,t|=0;const i=this.getWhitespaceIndexAtOrAfterVerticallOffset(e),n=this.getWhitespacesCount()-1;if(i<0)return[];let r=[];for(let e=i;e<=n;e++){const i=this.getVerticalOffsetForWhitespaceIndex(e),n=this.getHeightForWhitespaceIndex(e);if(i>=t)break;r.push({id:this.getIdForWhitespaceIndex(e),afterLineNumber:this.getAfterLineNumberForWhitespaceIndex(e),verticalOffset:i,height:n})}return r}getWhitespaces(){return this._checkPendingChanges(),this._arr.slice(0)}getWhitespacesCount(){return this._checkPendingChanges(),this._arr.length}getIdForWhitespaceIndex(e){return this._checkPendingChanges(),e|=0,this._arr[e].id}getAfterLineNumberForWhitespaceIndex(e){return this._checkPendingChanges(),e|=0,this._arr[e].afterLineNumber}getHeightForWhitespaceIndex(e){return this._checkPendingChanges(),e|=0,this._arr[e].height}}ji.INSTANCE_COUNT=0;class Vi{constructor(e,t,i,n){(e|=0)<0&&(e=0),(t|=0)<0&&(t=0),(i|=0)<0&&(i=0),(n|=0)<0&&(n=0),this.width=e,this.contentWidth=t,this.scrollWidth=Math.max(e,t),this.height=i,this.contentHeight=n,this.scrollHeight=Math.max(i,n)}equals(e){return this.width===e.width&&this.contentWidth===e.contentWidth&&this.height===e.height&&this.contentHeight===e.contentHeight}}class zi extends a.JT{constructor(e,t){super(),this._onDidContentSizeChange=this._register(new o.Q5),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._dimensions=new Vi(0,0,0,0),this._scrollable=this._register(new Wi.Rm(e,t)),this.onDidScroll=this._scrollable.onScroll}getScrollable(){return this._scrollable}setSmoothScrollDuration(e){this._scrollable.setSmoothScrollDuration(e)}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}getScrollDimensions(){return this._dimensions}setScrollDimensions(e){if(this._dimensions.equals(e))return;const t=this._dimensions;this._dimensions=e,this._scrollable.setScrollDimensions({width:e.width,scrollWidth:e.scrollWidth,height:e.height,scrollHeight:e.scrollHeight},!0);const i=t.contentWidth!==e.contentWidth,n=t.contentHeight!==e.contentHeight;(i||n)&&this._onDidContentSizeChange.fire(new Li(t.contentWidth,t.contentHeight,e.contentWidth,e.contentHeight))}getFutureScrollPosition(){return this._scrollable.getFutureScrollPosition()}getCurrentScrollPosition(){return this._scrollable.getCurrentScrollPosition()}setScrollPositionNow(e){this._scrollable.setScrollPositionNow(e)}setScrollPositionSmooth(e){this._scrollable.setScrollPositionSmooth(e)}}class Ui extends a.JT{constructor(e,t,i){super(),this._configuration=e;const n=this._configuration.options,r=n.get(117),s=n.get(66);this._linesLayout=new ji(t,n.get(51),s.top,s.bottom),this._scrollable=this._register(new zi(0,i)),this._configureSmoothScrollDuration(),this._scrollable.setScrollDimensions(new Vi(r.contentWidth,0,r.height,0)),this.onDidScroll=this._scrollable.onDidScroll,this.onDidContentSizeChange=this._scrollable.onDidContentSizeChange,this._updateHeight()}dispose(){super.dispose()}getScrollable(){return this._scrollable.getScrollable()}onHeightMaybeChanged(){this._updateHeight()}_configureSmoothScrollDuration(){this._scrollable.setSmoothScrollDuration(this._configuration.options.get(94)?125:0)}onConfigurationChanged(e){const t=this._configuration.options;if(e.hasChanged(51)&&this._linesLayout.setLineHeight(t.get(51)),e.hasChanged(66)){const e=t.get(66);this._linesLayout.setPadding(e.top,e.bottom)}if(e.hasChanged(117)){const e=t.get(117),i=e.contentWidth,n=e.height,r=this._scrollable.getScrollDimensions(),s=r.contentWidth;this._scrollable.setScrollDimensions(new Vi(i,r.contentWidth,n,this._getContentHeight(i,n,s)))}else this._updateHeight();e.hasChanged(94)&&this._configureSmoothScrollDuration()}onFlushed(e){this._linesLayout.onFlushed(e)}onLinesDeleted(e,t){this._linesLayout.onLinesDeleted(e,t)}onLinesInserted(e,t){this._linesLayout.onLinesInserted(e,t)}_getHorizontalScrollbarHeight(e,t){const i=this._configuration.options.get(84);return 2===i.horizontal||e>=t?0:i.horizontalScrollbarSize}_getContentHeight(e,t,i){const n=this._configuration.options;let r=this._linesLayout.getLinesTotalHeight();return n.get(86)?r+=t-n.get(51):r+=this._getHorizontalScrollbarHeight(e,i),r}_updateHeight(){const e=this._scrollable.getScrollDimensions(),t=e.width,i=e.height,n=e.contentWidth;this._scrollable.setScrollDimensions(new Vi(t,e.contentWidth,i,this._getContentHeight(t,i,n)))}getCurrentViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getCurrentScrollPosition();return new pt.l_(t.scrollTop,t.scrollLeft,e.width,e.height)}getFutureViewport(){const e=this._scrollable.getScrollDimensions(),t=this._scrollable.getFutureScrollPosition();return new pt.l_(t.scrollTop,t.scrollLeft,e.width,e.height)}_computeContentWidth(e){const t=this._configuration.options,i=t.get(118),n=t.get(36);if(i.isViewportWrapping){const i=t.get(117),r=t.get(56);return e>i.contentWidth+n.typicalHalfwidthCharacterWidth&&r.enabled&&"right"===r.side?e+i.verticalScrollbarWidth:e}{const i=t.get(85)*n.typicalHalfwidthCharacterWidth,r=this._linesLayout.getWhitespaceMinWidth();return Math.max(e+i,r)}}setMaxLineWidth(e){const t=this._scrollable.getScrollDimensions();this._scrollable.setScrollDimensions(new Vi(t.width,this._computeContentWidth(e),t.height,t.contentHeight)),this._updateHeight()}saveState(){const e=this._scrollable.getFutureScrollPosition();let t=e.scrollTop,i=this._linesLayout.getLineNumberAtOrAfterVerticalOffset(t);return{scrollTop:t,scrollTopWithoutViewZones:t-this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(i),scrollLeft:e.scrollLeft}}changeWhitespace(e){const t=this._linesLayout.changeWhitespace(e);return t&&this.onHeightMaybeChanged(),t}getVerticalOffsetForLineNumber(e){return this._linesLayout.getVerticalOffsetForLineNumber(e)}isAfterLines(e){return this._linesLayout.isAfterLines(e)}getLineNumberAtVerticalOffset(e){return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(e)}getWhitespaceAtVerticalOffset(e){return this._linesLayout.getWhitespaceAtVerticalOffset(e)}getLinesViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getLinesViewportData(e.top,e.top+e.height)}getLinesViewportDataAtScrollTop(e){const t=this._scrollable.getScrollDimensions();return e+t.height>t.scrollHeight&&(e=t.scrollHeight-t.height),e<0&&(e=0),this._linesLayout.getLinesViewportData(e,e+t.height)}getWhitespaceViewportData(){const e=this.getCurrentViewport();return this._linesLayout.getWhitespaceViewportData(e.top,e.top+e.height)}getWhitespaces(){return this._linesLayout.getWhitespaces()}getContentWidth(){return this._scrollable.getScrollDimensions().contentWidth}getScrollWidth(){return this._scrollable.getScrollDimensions().scrollWidth}getContentHeight(){return this._scrollable.getScrollDimensions().contentHeight}getScrollHeight(){return this._scrollable.getScrollDimensions().scrollHeight}getCurrentScrollLeft(){return this._scrollable.getCurrentScrollPosition().scrollLeft}getCurrentScrollTop(){return this._scrollable.getCurrentScrollPosition().scrollTop}validateScrollPosition(e){return this._scrollable.validateScrollPosition(e)}setScrollPosition(e,t){1===t?this._scrollable.setScrollPositionNow(e):this._scrollable.setScrollPositionSmooth(e)}deltaScrollNow(e,t){const i=this._scrollable.getCurrentScrollPosition();this._scrollable.setScrollPositionNow({scrollLeft:i.scrollLeft+e,scrollTop:i.scrollTop+t})}}var $i=i(3411),Ki=i(3544);class qi{constructor(e,t){this.outputLineIndex=e,this.outputOffset=t}}class Gi{constructor(e,t,i){this.breakOffsets=e,this.breakOffsetsVisibleColumn=t,this.wrappedTextIndentLength=i}static getInputOffsetOfOutputPosition(e,t,i){return 0===t?i:e[t-1]+i}static getOutputPositionOfInputOffset(e,t){let i=0,n=e.length-1,r=0,s=0;for(;i<=n;){r=i+(n-i)/2|0;const o=e[r];if(s=r>0?e[r-1]:0,t<s)n=r-1;else{if(!(t>=o))break;i=r+1}}return new qi(r,t-s)}}class Zi{constructor(e){this._lines=e}convertViewPositionToModelPosition(e){return this._lines.convertViewPositionToModelPosition(e.lineNumber,e.column)}convertViewRangeToModelRange(e){return this._lines.convertViewRangeToModelRange(e)}validateViewPosition(e,t){return this._lines.validateViewPosition(e.lineNumber,e.column,t)}validateViewRange(e,t){return this._lines.validateViewRange(e,t)}convertModelPositionToViewPosition(e){return this._lines.convertModelPositionToViewPosition(e.lineNumber,e.column)}convertModelRangeToViewRange(e){return this._lines.convertModelRangeToViewRange(e)}modelPositionIsVisible(e){return this._lines.modelPositionIsVisible(e.lineNumber,e.column)}}class Ji{constructor(e){this._counts=e,this._isValid=!1,this._validEndIndex=-1,this._modelToView=[],this._viewToModel=[]}_invalidate(e){this._isValid=!1,this._validEndIndex=Math.min(this._validEndIndex,e-1)}_ensureValid(){if(!this._isValid){for(let e=this._validEndIndex+1,t=this._counts.length;e<t;e++){const t=this._counts[e],i=e>0?this._modelToView[e-1]:0;this._modelToView[e]=i+t;for(let n=0;n<t;n++)this._viewToModel[i+n]=e}this._modelToView.length=this._counts.length,this._viewToModel.length=this._modelToView[this._modelToView.length-1],this._isValid=!0,this._validEndIndex=this._counts.length-1}}changeValue(e,t){this._counts[e]!==t&&(this._counts[e]=t,this._invalidate(e))}removeValues(e,t){this._counts.splice(e,t),this._invalidate(e)}insertValues(e,t){this._counts=qe.Zv(this._counts,e,t),this._invalidate(e)}getTotalValue(){return this._ensureValid(),this._viewToModel.length}getAccumulatedValue(e){return this._ensureValid(),this._modelToView[e]}getIndexOf(e){this._ensureValid();const t=this._viewToModel[e],i=t>0?this._modelToView[t-1]:0;return new Ki.T(t,e-i)}}class Qi{constructor(e,t,i,n,r,s,o,a){this.model=e,this._validModelVersionId=-1,this._domLineBreaksComputerFactory=t,this._monospaceLineBreaksComputerFactory=i,this.fontInfo=n,this.tabSize=r,this.wrappingStrategy=s,this.wrappingColumn=o,this.wrappingIndent=a,this._constructLines(!0,null)}dispose(){this.hiddenAreasIds=this.model.deltaDecorations(this.hiddenAreasIds,[])}createCoordinatesConverter(){return new Zi(this)}_constructLines(e,t){this.lines=[],e&&(this.hiddenAreasIds=[]);let i=this.model.getLinesContent();const n=i.length,r=this.createLineBreaksComputer();for(let e=0;e<n;e++)r.addRequest(i[e],t?t[e]:null);const s=r.finalize();let o=[],a=this.hiddenAreasIds.map((e=>this.model.getDecorationRange(e))).sort(X.e.compareRangesUsingStarts),l=1,c=0,d=-1,h=d+1<a.length?c+1:n+2;for(let e=0;e<n;e++){let t=e+1;t===h&&(d++,l=a[d].startLineNumber,c=a[d].endLineNumber,h=d+1<a.length?c+1:n+2);let i=t>=l&&t<=c,r=on(s[e],!i);o[e]=r.getViewLineCount(),this.lines[e]=r}this._validModelVersionId=this.model.getVersionId(),this.prefixSumComputer=new Ji(o)}getHiddenAreas(){return this.hiddenAreasIds.map((e=>this.model.getDecorationRange(e)))}_reduceRanges(e){if(0===e.length)return[];let t=e.map((e=>this.model.validateRange(e))).sort(X.e.compareRangesUsingStarts),i=[],n=t[0].startLineNumber,r=t[0].endLineNumber;for(let e=1,s=t.length;e<s;e++){let s=t[e];s.startLineNumber>r+1?(i.push(new X.e(n,1,r,1)),n=s.startLineNumber,r=s.endLineNumber):s.endLineNumber>r&&(r=s.endLineNumber)}return i.push(new X.e(n,1,r,1)),i}setHiddenAreas(e){let t=this._reduceRanges(e),i=this.hiddenAreasIds.map((e=>this.model.getDecorationRange(e))).sort(X.e.compareRangesUsingStarts);if(t.length===i.length){let e=!1;for(let n=0;n<t.length;n++)if(!t[n].equalsRange(i[n])){e=!0;break}if(!e)return!1}let n=[];for(const e of t)n.push({range:e,options:$i.qx.EMPTY});this.hiddenAreasIds=this.model.deltaDecorations(this.hiddenAreasIds,n);let r=t,s=1,o=0,a=-1,l=a+1<r.length?o+1:this.lines.length+2,c=!1;for(let e=0;e<this.lines.length;e++){let t=e+1;t===l&&(a++,s=r[a].startLineNumber,o=r[a].endLineNumber,l=a+1<r.length?o+1:this.lines.length+2);let i=!1;if(t>=s&&t<=o?this.lines[e].isVisible()&&(this.lines[e]=this.lines[e].setVisible(!1),i=!0):(c=!0,this.lines[e].isVisible()||(this.lines[e]=this.lines[e].setVisible(!0),i=!0)),i){let t=this.lines[e].getViewLineCount();this.prefixSumComputer.changeValue(e,t)}}return c||this.setHiddenAreas([]),!0}modelPositionIsVisible(e,t){return!(e<1||e>this.lines.length)&&this.lines[e-1].isVisible()}setTabSize(e){return this.tabSize!==e&&(this.tabSize=e,this._constructLines(!1,null),!0)}setWrappingSettings(e,t,i,n){const r=this.fontInfo.equals(e),s=this.wrappingStrategy===t,o=this.wrappingColumn===i,a=this.wrappingIndent===n;if(r&&s&&o&&a)return!1;const l=r&&s&&!o&&a;this.fontInfo=e,this.wrappingStrategy=t,this.wrappingColumn=i,this.wrappingIndent=n;let c=null;if(l){c=[];for(let e=0,t=this.lines.length;e<t;e++)c[e]=this.lines[e].getLineBreakData()}return this._constructLines(!1,c),!0}createLineBreaksComputer(){return("advanced"===this.wrappingStrategy?this._domLineBreaksComputerFactory:this._monospaceLineBreaksComputerFactory).createLineBreaksComputer(this.fontInfo,this.tabSize,this.wrappingColumn,this.wrappingIndent)}onModelFlushed(){this._constructLines(!0,null)}onModelLinesDeleted(e,t,i){if(e<=this._validModelVersionId)return null;let n=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,r=this.prefixSumComputer.getAccumulatedValue(i-1);return this.lines.splice(t-1,i-t+1),this.prefixSumComputer.removeValues(t-1,i-t+1),new mi(n,r)}onModelLinesInserted(e,t,i,n){if(e<=this._validModelVersionId)return null;let r=this.getHiddenAreas(),s=!1,o=new Q.L(t,1);for(const e of r)if(e.containsPosition(o)){s=!0;break}let a=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,l=0,c=[],d=[];for(let e=0,t=n.length;e<t;e++){let t=on(n[e],!s);c.push(t);let i=t.getViewLineCount();l+=i,d[e]=i}return this.lines=this.lines.slice(0,t-1).concat(c).concat(this.lines.slice(t-1)),this.prefixSumComputer.insertValues(t-1,d),new _i(a,a+l-1)}onModelLineChanged(e,t,i){if(e<=this._validModelVersionId)return[!1,null,null,null];let n=t-1,r=this.lines[n].getViewLineCount(),s=on(i,this.lines[n].isVisible());this.lines[n]=s;let o=this.lines[n].getViewLineCount(),a=!1,l=0,c=-1,d=0,h=-1,u=0,g=-1;return r>o?(l=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,c=l+o-1,u=c+1,g=u+(r-o)-1,a=!0):r<o?(l=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,c=l+r-1,d=c+1,h=d+(o-r)-1,a=!0):(l=1===t?1:this.prefixSumComputer.getAccumulatedValue(t-2)+1,c=l+o-1),this.prefixSumComputer.changeValue(n,o),[a,l<=c?new pi(l,c):null,d<=h?new _i(d,h):null,u<=g?new mi(u,g):null]}acceptVersionId(e){this._validModelVersionId=e,1!==this.lines.length||this.lines[0].isVisible()||this.setHiddenAreas([])}getViewLineCount(){return this.prefixSumComputer.getTotalValue()}_toValidViewLineNumber(e){if(e<1)return 1;const t=this.getViewLineCount();return e>t?t:0|e}getActiveIndentGuide(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t),i=this._toValidViewLineNumber(i);const n=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),r=this.convertViewPositionToModelPosition(t,this.getViewLineMinColumn(t)),s=this.convertViewPositionToModelPosition(i,this.getViewLineMinColumn(i)),o=this.model.getActiveIndentGuide(n.lineNumber,r.lineNumber,s.lineNumber),a=this.convertModelPositionToViewPosition(o.startLineNumber,1),l=this.convertModelPositionToViewPosition(o.endLineNumber,this.model.getLineMaxColumn(o.endLineNumber));return{startLineNumber:a.lineNumber,endLineNumber:l.lineNumber,indent:o.indent}}getViewLinesIndentGuides(e,t){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);const i=this.convertViewPositionToModelPosition(e,this.getViewLineMinColumn(e)),n=this.convertViewPositionToModelPosition(t,this.getViewLineMaxColumn(t));let r=[],s=[],o=[];const a=i.lineNumber-1,l=n.lineNumber-1;let c=null;for(let e=a;e<=l;e++){const t=this.lines[e];if(t.isVisible()){let n=t.getViewLineNumberOfModelPosition(0,e===a?i.column:1),r=t.getViewLineNumberOfModelPosition(0,this.model.getLineMaxColumn(e+1)),l=r-n+1,d=0;l>1&&1===t.getViewLineMinColumn(this.model,e+1,r)&&(d=0===n?1:2),s.push(l),o.push(d),null===c&&(c=new Q.L(e+1,0))}else null!==c&&(r=r.concat(this.model.getLinesIndentGuides(c.lineNumber,e)),c=null)}null!==c&&(r=r.concat(this.model.getLinesIndentGuides(c.lineNumber,n.lineNumber)),c=null);const d=t-e+1;let h=new Array(d),u=0;for(let e=0,t=r.length;e<t;e++){let t,i=r[e],n=Math.min(d-u,s[e]),a=o[e];t=2===a?0:1===a?1:n;for(let e=0;e<n;e++)e===t&&(i=0),h[u++]=i}return h}getViewLineContent(e){e=this._toValidViewLineNumber(e);let t=this.prefixSumComputer.getIndexOf(e-1),i=t.index,n=t.remainder;return this.lines[i].getViewLineContent(this.model,i+1,n)}getViewLineLength(e){e=this._toValidViewLineNumber(e);let t=this.prefixSumComputer.getIndexOf(e-1),i=t.index,n=t.remainder;return this.lines[i].getViewLineLength(this.model,i+1,n)}getViewLineMinColumn(e){e=this._toValidViewLineNumber(e);let t=this.prefixSumComputer.getIndexOf(e-1),i=t.index,n=t.remainder;return this.lines[i].getViewLineMinColumn(this.model,i+1,n)}getViewLineMaxColumn(e){e=this._toValidViewLineNumber(e);let t=this.prefixSumComputer.getIndexOf(e-1),i=t.index,n=t.remainder;return this.lines[i].getViewLineMaxColumn(this.model,i+1,n)}getViewLineData(e){e=this._toValidViewLineNumber(e);let t=this.prefixSumComputer.getIndexOf(e-1),i=t.index,n=t.remainder;return this.lines[i].getViewLineData(this.model,i+1,n)}getViewLinesData(e,t,i){e=this._toValidViewLineNumber(e),t=this._toValidViewLineNumber(t);let n=this.prefixSumComputer.getIndexOf(e-1),r=e,s=n.index,o=n.remainder,a=[];for(let n=s,l=this.model.getLineCount();n<l;n++){let l=this.lines[n];if(!l.isVisible())continue;let c=n===s?o:0,d=l.getViewLineCount()-c,h=!1;r+d>t&&(h=!0,d=t-r+1);let u=c+d;if(l.getViewLinesData(this.model,n+1,c,u,r-e,i,a),r+=d,h)break}return a}validateViewPosition(e,t,i){e=this._toValidViewLineNumber(e);let n=this.prefixSumComputer.getIndexOf(e-1),r=n.index,s=n.remainder,o=this.lines[r],a=o.getViewLineMinColumn(this.model,r+1,s),l=o.getViewLineMaxColumn(this.model,r+1,s);t<a&&(t=a),t>l&&(t=l);let c=o.getModelColumnOfViewPosition(s,t);return this.model.validatePosition(new Q.L(r+1,c)).equals(i)?new Q.L(e,t):this.convertModelPositionToViewPosition(i.lineNumber,i.column)}validateViewRange(e,t){const i=this.validateViewPosition(e.startLineNumber,e.startColumn,t.getStartPosition()),n=this.validateViewPosition(e.endLineNumber,e.endColumn,t.getEndPosition());return new X.e(i.lineNumber,i.column,n.lineNumber,n.column)}convertViewPositionToModelPosition(e,t){e=this._toValidViewLineNumber(e);let i=this.prefixSumComputer.getIndexOf(e-1),n=i.index,r=i.remainder,s=this.lines[n].getModelColumnOfViewPosition(r,t);return this.model.validatePosition(new Q.L(n+1,s))}convertViewRangeToModelRange(e){const t=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),i=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);return new X.e(t.lineNumber,t.column,i.lineNumber,i.column)}convertModelPositionToViewPosition(e,t){const i=this.model.validatePosition(new Q.L(e,t)),n=i.lineNumber,r=i.column;let s=n-1,o=!1;for(;s>0&&!this.lines[s].isVisible();)s--,o=!0;if(0===s&&!this.lines[s].isVisible())return new Q.L(1,1);const a=1+(0===s?0:this.prefixSumComputer.getAccumulatedValue(s-1));let l;return l=o?this.lines[s].getViewPositionOfModelPosition(a,this.model.getLineMaxColumn(s+1)):this.lines[n-1].getViewPositionOfModelPosition(a,r),l}convertModelRangeToViewRange(e){let t=this.convertModelPositionToViewPosition(e.startLineNumber,e.startColumn),i=this.convertModelPositionToViewPosition(e.endLineNumber,e.endColumn);return e.startLineNumber===e.endLineNumber&&t.lineNumber!==i.lineNumber&&i.column===this.getViewLineMinColumn(i.lineNumber)?new X.e(t.lineNumber,t.column,i.lineNumber-1,this.getViewLineMaxColumn(i.lineNumber-1)):new X.e(t.lineNumber,t.column,i.lineNumber,i.column)}_getViewLineNumberForModelPosition(e,t){let i=e-1;if(this.lines[i].isVisible()){const e=1+(0===i?0:this.prefixSumComputer.getAccumulatedValue(i-1));return this.lines[i].getViewLineNumberOfModelPosition(e,t)}for(;i>0&&!this.lines[i].isVisible();)i--;if(0===i&&!this.lines[i].isVisible())return 1;const n=1+(0===i?0:this.prefixSumComputer.getAccumulatedValue(i-1));return this.lines[i].getViewLineNumberOfModelPosition(n,this.model.getLineMaxColumn(i+1))}getAllOverviewRulerDecorations(e,t,i){const n=this.model.getOverviewRulerDecorations(e,t),r=new cn;for(const e of n){const t=e.options.overviewRuler,n=t?t.position:0;if(0===n)continue;const s=t.getColor(i),o=this._getViewLineNumberForModelPosition(e.range.startLineNumber,e.range.startColumn),a=this._getViewLineNumberForModelPosition(e.range.endLineNumber,e.range.endColumn);r.accept(s,o,a,n)}return r.result}getDecorationsInRange(e,t,i){const n=this.convertViewPositionToModelPosition(e.startLineNumber,e.startColumn),r=this.convertViewPositionToModelPosition(e.endLineNumber,e.endColumn);if(r.lineNumber-n.lineNumber<=e.endLineNumber-e.startLineNumber)return this.model.getDecorationsInRange(new X.e(n.lineNumber,1,r.lineNumber,r.column),t,i);let s=[];const o=n.lineNumber-1,a=r.lineNumber-1;let l=null;for(let e=o;e<=a;e++)if(this.lines[e].isVisible())null===l&&(l=new Q.L(e+1,e===o?n.column:1));else if(null!==l){const n=this.model.getLineMaxColumn(e);s=s.concat(this.model.getDecorationsInRange(new X.e(l.lineNumber,l.column,e,n),t,i)),l=null}null!==l&&(s=s.concat(this.model.getDecorationsInRange(new X.e(l.lineNumber,l.column,r.lineNumber,r.column),t,i)),l=null),s.sort(((e,t)=>{const i=X.e.compareRangesUsingStarts(e.range,t.range);return 0===i?e.id<t.id?-1:e.id>t.id?1:0:i}));let c=[],d=0,h=null;for(const e of s){const t=e.id;h!==t&&(h=t,c[d++]=e)}return c}}class Xi{constructor(){}isVisible(){return!0}setVisible(e){return e?this:en.INSTANCE}getLineBreakData(){return null}getViewLineCount(){return 1}getViewLineContent(e,t,i){return e.getLineContent(t)}getViewLineLength(e,t,i){return e.getLineLength(t)}getViewLineMinColumn(e,t,i){return e.getLineMinColumn(t)}getViewLineMaxColumn(e,t,i){return e.getLineMaxColumn(t)}getViewLineData(e,t,i){let n=e.getLineTokens(t),r=n.getLineContent();return new pt.IP(r,!1,1,r.length+1,0,n.inflate())}getViewLinesData(e,t,i,n,r,s,o){s[r]?o[r]=this.getViewLineData(e,t,0):o[r]=null}getModelColumnOfViewPosition(e,t){return t}getViewPositionOfModelPosition(e,t){return new Q.L(e,t)}getViewLineNumberOfModelPosition(e,t){return e}}Xi.INSTANCE=new Xi;class en{constructor(){}isVisible(){return!1}setVisible(e){return e?Xi.INSTANCE:this}getLineBreakData(){return null}getViewLineCount(){return 0}getViewLineContent(e,t,i){throw new Error("Not supported")}getViewLineLength(e,t,i){throw new Error("Not supported")}getViewLineMinColumn(e,t,i){throw new Error("Not supported")}getViewLineMaxColumn(e,t,i){throw new Error("Not supported")}getViewLineData(e,t,i){throw new Error("Not supported")}getViewLinesData(e,t,i,n,r,s,o){throw new Error("Not supported")}getModelColumnOfViewPosition(e,t){throw new Error("Not supported")}getViewPositionOfModelPosition(e,t){throw new Error("Not supported")}getViewLineNumberOfModelPosition(e,t){throw new Error("Not supported")}}en.INSTANCE=new en;class tn{constructor(e,t){this._lineBreakData=e,this._isVisible=t}isVisible(){return this._isVisible}setVisible(e){return this._isVisible=e,this}getLineBreakData(){return this._lineBreakData}getViewLineCount(){return this._isVisible?this._lineBreakData.breakOffsets.length:0}getInputStartOffsetOfOutputLineIndex(e){return Gi.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets,e,0)}getInputEndOffsetOfOutputLineIndex(e,t,i){return i+1===this._lineBreakData.breakOffsets.length?e.getLineMaxColumn(t)-1:Gi.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets,i+1,0)}getViewLineContent(e,t,i){if(!this._isVisible)throw new Error("Not supported");let n=this.getInputStartOffsetOfOutputLineIndex(i),r=this.getInputEndOffsetOfOutputLineIndex(e,t,i),s=e.getValueInRange({startLineNumber:t,startColumn:n+1,endLineNumber:t,endColumn:r+1});return i>0&&(s=rn(this._lineBreakData.wrappedTextIndentLength)+s),s}getViewLineLength(e,t,i){if(!this._isVisible)throw new Error("Not supported");let n=this.getInputStartOffsetOfOutputLineIndex(i),r=this.getInputEndOffsetOfOutputLineIndex(e,t,i)-n;return i>0&&(r=this._lineBreakData.wrappedTextIndentLength+r),r}getViewLineMinColumn(e,t,i){if(!this._isVisible)throw new Error("Not supported");return i>0?this._lineBreakData.wrappedTextIndentLength+1:1}getViewLineMaxColumn(e,t,i){if(!this._isVisible)throw new Error("Not supported");return this.getViewLineContent(e,t,i).length+1}getViewLineData(e,t,i){if(!this._isVisible)throw new Error("Not supported");let n=this.getInputStartOffsetOfOutputLineIndex(i),r=this.getInputEndOffsetOfOutputLineIndex(e,t,i),s=e.getValueInRange({startLineNumber:t,startColumn:n+1,endLineNumber:t,endColumn:r+1});i>0&&(s=rn(this._lineBreakData.wrappedTextIndentLength)+s);let o=i>0?this._lineBreakData.wrappedTextIndentLength+1:1,a=s.length+1,l=i+1<this.getViewLineCount(),c=0;i>0&&(c=this._lineBreakData.wrappedTextIndentLength);let d=e.getLineTokens(t);const h=0===i?0:this._lineBreakData.breakOffsetsVisibleColumn[i-1];return new pt.IP(s,l,o,a,h,d.sliceAndInflate(n,r,c))}getViewLinesData(e,t,i,n,r,s,o){if(!this._isVisible)throw new Error("Not supported");for(let a=i;a<n;a++){let n=r+a-i;s[n]?o[n]=this.getViewLineData(e,t,a):o[n]=null}}getModelColumnOfViewPosition(e,t){if(!this._isVisible)throw new Error("Not supported");let i=t-1;return e>0&&(i<this._lineBreakData.wrappedTextIndentLength?i=0:i-=this._lineBreakData.wrappedTextIndentLength),Gi.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets,e,i)+1}getViewPositionOfModelPosition(e,t){if(!this._isVisible)throw new Error("Not supported");let i=Gi.getOutputPositionOfInputOffset(this._lineBreakData.breakOffsets,t-1),n=i.outputLineIndex,r=i.outputOffset+1;return n>0&&(r+=this._lineBreakData.wrappedTextIndentLength),new Q.L(e+n,r)}getViewLineNumberOfModelPosition(e,t){if(!this._isVisible)throw new Error("Not supported");return e+Gi.getOutputPositionOfInputOffset(this._lineBreakData.breakOffsets,t-1).outputLineIndex}}let nn=[""];function rn(e){if(e>=nn.length)for(let t=1;t<=e;t++)nn[t]=sn(t);return nn[e]}function sn(e){return new Array(e+1).join(" ")}function on(e,t){return null===e?t?Xi.INSTANCE:en.INSTANCE:new tn(e,t)}class an{constructor(e){this._lines=e}_validPosition(e){return this._lines.model.validatePosition(e)}_validRange(e){return this._lines.model.validateRange(e)}convertViewPositionToModelPosition(e){return this._validPosition(e)}convertViewRangeToModelRange(e){return this._validRange(e)}validateViewPosition(e,t){return this._validPosition(t)}validateViewRange(e,t){return this._validRange(t)}convertModelPositionToViewPosition(e){return this._validPosition(e)}convertModelRangeToViewRange(e){return this._validRange(e)}modelPositionIsVisible(e){const t=this._lines.model.getLineCount();return!(e.lineNumber<1||e.lineNumber>t)}}class ln{constructor(e){this.model=e}dispose(){}createCoordinatesConverter(){return new an(this)}getHiddenAreas(){return[]}setHiddenAreas(e){return!1}setTabSize(e){return!1}setWrappingSettings(e,t,i,n){return!1}createLineBreaksComputer(){let e=[];return{addRequest:(t,i)=>{e.push(null)},finalize:()=>e}}onModelFlushed(){}onModelLinesDeleted(e,t,i){return new mi(t,i)}onModelLinesInserted(e,t,i,n){return new _i(t,i)}onModelLineChanged(e,t,i){return[!1,new pi(t,t),null,null]}acceptVersionId(e){}getViewLineCount(){return this.model.getLineCount()}getActiveIndentGuide(e,t,i){return{startLineNumber:e,endLineNumber:e,indent:0}}getViewLinesIndentGuides(e,t){const i=t-e+1;let n=new Array(i);for(let e=0;e<i;e++)n[e]=0;return n}getViewLineContent(e){return this.model.getLineContent(e)}getViewLineLength(e){return this.model.getLineLength(e)}getViewLineMinColumn(e){return this.model.getLineMinColumn(e)}getViewLineMaxColumn(e){return this.model.getLineMaxColumn(e)}getViewLineData(e){let t=this.model.getLineTokens(e),i=t.getLineContent();return new pt.IP(i,!1,1,i.length+1,0,t.inflate())}getViewLinesData(e,t,i){const n=this.model.getLineCount();e=Math.min(Math.max(1,e),n),t=Math.min(Math.max(1,t),n);let r=[];for(let n=e;n<=t;n++){let t=n-e;i[t]||(r[t]=null),r[t]=this.getViewLineData(n)}return r}getAllOverviewRulerDecorations(e,t,i){const n=this.model.getOverviewRulerDecorations(e,t),r=new cn;for(const e of n){const t=e.options.overviewRuler,n=t?t.position:0;if(0===n)continue;const s=t.getColor(i),o=e.range.startLineNumber,a=e.range.endLineNumber;r.accept(s,o,a,n)}return r.result}getDecorationsInRange(e,t,i){return this.model.getDecorationsInRange(e,t,i)}}class cn{constructor(){this.result=Object.create(null)}accept(e,t,i,n){let r=this.result[e];if(r){const e=r[r.length-3],s=r[r.length-1];if(e===n&&s+1>=t)return void(i>s&&(r[r.length-1]=i));r.push(n,t,i)}else this.result[e]=[n,t,i]}}class dn{constructor(e,t,i,n,r){this.editorId=e,this.model=t,this.configuration=i,this._linesCollection=n,this._coordinatesConverter=r,this._decorationsCache=Object.create(null),this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}_clearCachedModelDecorationsResolver(){this._cachedModelDecorationsResolver=null,this._cachedModelDecorationsResolverViewRange=null}dispose(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}reset(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onModelDecorationsChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}onLineMappingChanged(){this._decorationsCache=Object.create(null),this._clearCachedModelDecorationsResolver()}_getOrCreateViewModelDecoration(e){const t=e.id;let i=this._decorationsCache[t];if(!i){const n=e.range,r=e.options;let s;if(r.isWholeLine){const e=this._coordinatesConverter.convertModelPositionToViewPosition(new Q.L(n.startLineNumber,1)),t=this._coordinatesConverter.convertModelPositionToViewPosition(new Q.L(n.endLineNumber,this.model.getLineMaxColumn(n.endLineNumber)));s=new X.e(e.lineNumber,e.column,t.lineNumber,t.column)}else s=this._coordinatesConverter.convertModelRangeToViewRange(n);i=new pt.$l(s,r),this._decorationsCache[t]=i}return i}getDecorationsViewportData(e){let t=null!==this._cachedModelDecorationsResolver;return t=t&&e.equalsRange(this._cachedModelDecorationsResolverViewRange),t||(this._cachedModelDecorationsResolver=this._getDecorationsViewportData(e),this._cachedModelDecorationsResolverViewRange=e),this._cachedModelDecorationsResolver}_getDecorationsViewportData(e){const t=this._linesCollection.getDecorationsInRange(e,this.editorId,(0,H.$J)(this.configuration.options)),i=e.startLineNumber,n=e.endLineNumber;let r=[],s=0,o=[];for(let e=i;e<=n;e++)o[e-i]=[];for(let e=0,a=t.length;e<a;e++){let a=t[e],l=a.options,c=this._getOrCreateViewModelDecoration(a),d=c.range;if(r[s++]=c,l.inlineClassName){let e=new pt.$t(d,l.inlineClassName,l.inlineClassNameAffectsLetterSpacing?3:0),t=Math.max(i,d.startLineNumber),r=Math.min(n,d.endLineNumber);for(let n=t;n<=r;n++)o[n-i].push(e)}if(l.beforeContentClassName&&i<=d.startLineNumber&&d.startLineNumber<=n){let e=new pt.$t(new X.e(d.startLineNumber,d.startColumn,d.startLineNumber,d.startColumn),l.beforeContentClassName,1);o[d.startLineNumber-i].push(e)}if(l.afterContentClassName&&i<=d.endLineNumber&&d.endLineNumber<=n){let e=new pt.$t(new X.e(d.endLineNumber,d.endColumn,d.endLineNumber,d.endColumn),l.afterContentClassName,2);o[d.endLineNumber-i].push(e)}}return{decorations:r,inlineDecorations:o}}}class hn extends a.JT{constructor(e,t,i,n,r,s){if(super(),this._editorId=e,this._configuration=t,this.model=i,this._eventDispatcher=new ki,this.onEvent=this._eventDispatcher.onEvent,this.cursorConfig=new ee.LM(this.model.getLanguageIdentifier(),this.model.getOptions(),this._configuration),this._tokenizeViewportSoon=this._register(new _.pY((()=>this.tokenizeViewport()),50)),this._updateConfigurationViewLineCount=this._register(new _.pY((()=>this._updateConfigurationViewLineCountNow()),0)),this._hasFocus=!1,this._viewportStartLine=-1,this._viewportStartLineTrackedRange=null,this._viewportStartLineDelta=0,this.model.isTooLargeForTokenization())this._lines=new ln(this.model);else{const e=this._configuration.options,t=e.get(36),i=e.get(112),s=e.get(118),o=e.get(111);this._lines=new Qi(this.model,n,r,t,this.model.getOptions().tabSize,i,s.wrappingColumn,o)}this.coordinatesConverter=this._lines.createCoordinatesConverter(),this._cursor=this._register(new Ai(i,this,this.coordinatesConverter,this.cursorConfig)),this.viewLayout=this._register(new Ui(this._configuration,this.getLineCount(),s)),this._register(this.viewLayout.onDidScroll((e=>{e.scrollTopChanged&&this._tokenizeViewportSoon.schedule(),this._eventDispatcher.emitSingleViewEvent(new vi(e)),this._eventDispatcher.emitOutgoingEvent(new Di(e.oldScrollWidth,e.oldScrollLeft,e.oldScrollHeight,e.oldScrollTop,e.scrollWidth,e.scrollLeft,e.scrollHeight,e.scrollTop))}))),this._register(this.viewLayout.onDidContentSizeChange((e=>{this._eventDispatcher.emitOutgoingEvent(e)}))),this._decorations=new dn(this._editorId,this.model,this._configuration,this._lines,this.coordinatesConverter),this._registerModelEvents(),this._register(this._configuration.onDidChangeFast((e=>{try{const t=this._eventDispatcher.beginEmitViewEvents();this._onConfigurationChanged(t,e)}finally{this._eventDispatcher.endEmitViewEvents()}}))),this._register(ft.getInstance().onDidChange((()=>{this._eventDispatcher.emitSingleViewEvent(new Ci)}))),this._updateConfigurationViewLineCountNow()}dispose(){super.dispose(),this._decorations.dispose(),this._lines.dispose(),this.invalidateMinimapColorCache(),this._viewportStartLineTrackedRange=this.model._setTrackedRange(this._viewportStartLineTrackedRange,null,1),this._eventDispatcher.dispose()}addViewEventHandler(e){this._eventDispatcher.addViewEventHandler(e)}removeViewEventHandler(e){this._eventDispatcher.removeViewEventHandler(e)}_updateConfigurationViewLineCountNow(){this._configuration.setViewLineCount(this._lines.getViewLineCount())}tokenizeViewport(){const e=this.viewLayout.getLinesViewportData(),t=this.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(e.startLineNumber,1)),i=this.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(e.endLineNumber,1));this.model.tokenizeViewport(t.lineNumber,i.lineNumber)}setHasFocus(e){this._hasFocus=e,this._cursor.setHasFocus(e),this._eventDispatcher.emitSingleViewEvent(new ui(e)),this._eventDispatcher.emitOutgoingEvent(new Mi(!e,e))}onDidColorThemeChange(){this._eventDispatcher.emitSingleViewEvent(new yi)}_onConfigurationChanged(e,t){let i=null;if(-1!==this._viewportStartLine){let e=new Q.L(this._viewportStartLine,this.getLineMinColumn(this._viewportStartLine));i=this.coordinatesConverter.convertViewPositionToModelPosition(e)}let n=!1;const r=this._configuration.options,s=r.get(36),o=r.get(112),a=r.get(118),l=r.get(111);if(this._lines.setWrappingSettings(s,o,a.wrappingColumn,l)&&(e.emitViewEvent(new hi),e.emitViewEvent(new fi),e.emitViewEvent(new di(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),0!==this.viewLayout.getCurrentScrollTop()&&(n=!0),this._updateConfigurationViewLineCount.schedule()),t.hasChanged(72)&&(this._decorations.reset(),e.emitViewEvent(new di(null))),e.emitViewEvent(new li(t)),this.viewLayout.onConfigurationChanged(t),n&&i){const e=this.coordinatesConverter.convertModelPositionToViewPosition(i),t=this.viewLayout.getVerticalOffsetForLineNumber(e.lineNumber);this.viewLayout.setScrollPosition({scrollTop:t+this._viewportStartLineDelta},1)}ee.LM.shouldRecreate(t)&&(this.cursorConfig=new ee.LM(this.model.getLanguageIdentifier(),this.model.getOptions(),this._configuration),this._cursor.updateConfiguration(this.cursorConfig))}_registerModelEvents(){this._register(this.model.onDidChangeRawContentFast((e=>{try{const t=this._eventDispatcher.beginEmitViewEvents();let i=!1,n=!1;const r=e.changes,s=e.versionId,o=this._lines.createLineBreaksComputer();for(const e of r)switch(e.changeType){case 4:for(const t of e.detail)o.addRequest(t,null);break;case 2:o.addRequest(e.detail,null)}const a=o.finalize();let l=0;for(const e of r)switch(e.changeType){case 1:this._lines.onModelFlushed(),t.emitViewEvent(new hi),this._decorations.reset(),this.viewLayout.onFlushed(this.getLineCount()),i=!0;break;case 3:{const n=this._lines.onModelLinesDeleted(s,e.fromLineNumber,e.toLineNumber);null!==n&&(t.emitViewEvent(n),this.viewLayout.onLinesDeleted(n.fromLineNumber,n.toLineNumber)),i=!0;break}case 4:{const n=a.slice(l,l+e.detail.length);l+=e.detail.length;const r=this._lines.onModelLinesInserted(s,e.fromLineNumber,e.toLineNumber,n);null!==r&&(t.emitViewEvent(r),this.viewLayout.onLinesInserted(r.fromLineNumber,r.toLineNumber)),i=!0;break}case 2:{const i=a[l];l++;const[r,o,c,d]=this._lines.onModelLineChanged(s,e.lineNumber,i);n=r,o&&t.emitViewEvent(o),c&&(t.emitViewEvent(c),this.viewLayout.onLinesInserted(c.fromLineNumber,c.toLineNumber)),d&&(t.emitViewEvent(d),this.viewLayout.onLinesDeleted(d.fromLineNumber,d.toLineNumber));break}}this._lines.acceptVersionId(s),this.viewLayout.onHeightMaybeChanged(),!i&&n&&(t.emitViewEvent(new fi),t.emitViewEvent(new di(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged())}finally{this._eventDispatcher.endEmitViewEvents()}if(this._viewportStartLine=-1,this._configuration.setMaxLineNumber(this.model.getLineCount()),this._updateConfigurationViewLineCountNow(),!this._hasFocus&&this.model.getAttachedEditorCount()>=2&&this._viewportStartLineTrackedRange){const e=this.model._getTrackedRange(this._viewportStartLineTrackedRange);if(e){const t=this.coordinatesConverter.convertModelPositionToViewPosition(e.getStartPosition()),i=this.viewLayout.getVerticalOffsetForLineNumber(t.lineNumber);this.viewLayout.setScrollPosition({scrollTop:i+this._viewportStartLineDelta},1)}}try{const t=this._eventDispatcher.beginEmitViewEvents();this._cursor.onModelContentChanged(t,e)}finally{this._eventDispatcher.endEmitViewEvents()}}))),this._register(this.model.onDidChangeTokens((e=>{let t=[];for(let i=0,n=e.ranges.length;i<n;i++){const n=e.ranges[i],r=this.coordinatesConverter.convertModelPositionToViewPosition(new Q.L(n.fromLineNumber,1)).lineNumber,s=this.coordinatesConverter.convertModelPositionToViewPosition(new Q.L(n.toLineNumber,this.model.getLineMaxColumn(n.toLineNumber))).lineNumber;t[i]={fromLineNumber:r,toLineNumber:s}}this._eventDispatcher.emitSingleViewEvent(new wi(t)),e.tokenizationSupportChanged&&this._tokenizeViewportSoon.schedule()}))),this._register(this.model.onDidChangeLanguageConfiguration((e=>{this._eventDispatcher.emitSingleViewEvent(new gi),this.cursorConfig=new ee.LM(this.model.getLanguageIdentifier(),this.model.getOptions(),this._configuration),this._cursor.updateConfiguration(this.cursorConfig)}))),this._register(this.model.onDidChangeLanguage((e=>{this.cursorConfig=new ee.LM(this.model.getLanguageIdentifier(),this.model.getOptions(),this._configuration),this._cursor.updateConfiguration(this.cursorConfig)}))),this._register(this.model.onDidChangeOptions((e=>{if(this._lines.setTabSize(this.model.getOptions().tabSize)){try{const e=this._eventDispatcher.beginEmitViewEvents();e.emitViewEvent(new hi),e.emitViewEvent(new fi),e.emitViewEvent(new di(null)),this._cursor.onLineMappingChanged(e),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}this.cursorConfig=new ee.LM(this.model.getLanguageIdentifier(),this.model.getOptions(),this._configuration),this._cursor.updateConfiguration(this.cursorConfig)}))),this._register(this.model.onDidChangeDecorations((e=>{this._decorations.onModelDecorationsChanged(),this._eventDispatcher.emitSingleViewEvent(new di(e))})))}setHiddenAreas(e){try{const t=this._eventDispatcher.beginEmitViewEvents();this._lines.setHiddenAreas(e)&&(t.emitViewEvent(new hi),t.emitViewEvent(new fi),t.emitViewEvent(new di(null)),this._cursor.onLineMappingChanged(t),this._decorations.onLineMappingChanged(),this.viewLayout.onFlushed(this.getLineCount()),this.viewLayout.onHeightMaybeChanged())}finally{this._eventDispatcher.endEmitViewEvents()}this._updateConfigurationViewLineCount.schedule()}getVisibleRangesPlusViewportAboveBelow(){const e=this._configuration.options.get(117),t=this._configuration.options.get(51),i=Math.max(20,Math.round(e.height/t)),n=this.viewLayout.getLinesViewportData(),r=Math.max(1,n.completelyVisibleStartLineNumber-i),s=Math.min(this.getLineCount(),n.completelyVisibleEndLineNumber+i);return this._toModelVisibleRanges(new X.e(r,this.getLineMinColumn(r),s,this.getLineMaxColumn(s)))}getVisibleRanges(){const e=this.getCompletelyVisibleViewRange();return this._toModelVisibleRanges(e)}_toModelVisibleRanges(e){const t=this.coordinatesConverter.convertViewRangeToModelRange(e),i=this._lines.getHiddenAreas();if(0===i.length)return[t];let n=[],r=0,s=t.startLineNumber,o=t.startColumn,a=t.endLineNumber,l=t.endColumn;for(let e=0,t=i.length;e<t;e++){const t=i[e].startLineNumber,l=i[e].endLineNumber;l<s||t>a||(s<t&&(n[r++]=new X.e(s,o,t-1,this.model.getLineMaxColumn(t-1))),s=l+1,o=1)}return(s<a||s===a&&o<l)&&(n[r++]=new X.e(s,o,a,l)),n}getCompletelyVisibleViewRange(){const e=this.viewLayout.getLinesViewportData(),t=e.completelyVisibleStartLineNumber,i=e.completelyVisibleEndLineNumber;return new X.e(t,this.getLineMinColumn(t),i,this.getLineMaxColumn(i))}getCompletelyVisibleViewRangeAtScrollTop(e){const t=this.viewLayout.getLinesViewportDataAtScrollTop(e),i=t.completelyVisibleStartLineNumber,n=t.completelyVisibleEndLineNumber;return new X.e(i,this.getLineMinColumn(i),n,this.getLineMaxColumn(n))}saveState(){const e=this.viewLayout.saveState(),t=e.scrollTop,i=this.viewLayout.getLineNumberAtVerticalOffset(t),n=this.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(i,this.getLineMinColumn(i))),r=this.viewLayout.getVerticalOffsetForLineNumber(i)-t;return{scrollLeft:e.scrollLeft,firstPosition:n,firstPositionDeltaTop:r}}reduceRestoreState(e){if(void 0===e.firstPosition)return this._reduceRestoreStateCompatibility(e);const t=this.model.validatePosition(e.firstPosition),i=this.coordinatesConverter.convertModelPositionToViewPosition(t),n=this.viewLayout.getVerticalOffsetForLineNumber(i.lineNumber)-e.firstPositionDeltaTop;return{scrollLeft:e.scrollLeft,scrollTop:n}}_reduceRestoreStateCompatibility(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTopWithoutViewZones}}getTabSize(){return this.model.getOptions().tabSize}getTextModelOptions(){return this.model.getOptions()}getLineCount(){return this._lines.getViewLineCount()}setViewport(e,t,i){this._viewportStartLine=e;let n=this.coordinatesConverter.convertViewPositionToModelPosition(new Q.L(e,this.getLineMinColumn(e)));this._viewportStartLineTrackedRange=this.model._setTrackedRange(this._viewportStartLineTrackedRange,new X.e(n.lineNumber,n.column,n.lineNumber,n.column),1);const r=this.viewLayout.getVerticalOffsetForLineNumber(e),s=this.viewLayout.getCurrentScrollTop();this._viewportStartLineDelta=s-r}getActiveIndentGuide(e,t,i){return this._lines.getActiveIndentGuide(e,t,i)}getLinesIndentGuides(e,t){return this._lines.getViewLinesIndentGuides(e,t)}getLineContent(e){return this._lines.getViewLineContent(e)}getLineLength(e){return this._lines.getViewLineLength(e)}getLineMinColumn(e){return this._lines.getViewLineMinColumn(e)}getLineMaxColumn(e){return this._lines.getViewLineMaxColumn(e)}getLineFirstNonWhitespaceColumn(e){const t=we.LC(this.getLineContent(e));return-1===t?0:t+1}getLineLastNonWhitespaceColumn(e){const t=we.ow(this.getLineContent(e));return-1===t?0:t+2}getDecorationsInViewport(e){return this._decorations.getDecorationsViewportData(e).decorations}getViewLineRenderingData(e,t){let i=this.model.mightContainRTL(),n=this.model.mightContainNonBasicASCII(),r=this.getTabSize(),s=this._lines.getViewLineData(t),o=this._decorations.getDecorationsViewportData(e).inlineDecorations[t-e.startLineNumber];return new pt.wA(s.minColumn,s.maxColumn,s.content,s.continuesWithWrappedLine,i,n,s.tokens,o,r,s.startVisibleColumn)}getViewLineData(e){return this._lines.getViewLineData(e)}getMinimapLinesRenderingData(e,t,i){let n=this._lines.getViewLinesData(e,t,i);return new pt.ud(this.getTabSize(),n)}getAllOverviewRulerDecorations(e){return this._lines.getAllOverviewRulerDecorations(this._editorId,(0,H.$J)(this._configuration.options),e)}invalidateOverviewRulerColorCache(){const e=this.model.getOverviewRulerDecorations();for(const t of e){const e=t.options.overviewRuler;e&&e.invalidateCachedColor()}}invalidateMinimapColorCache(){const e=this.model.getAllDecorations();for(const t of e){const e=t.options.minimap;e&&e.invalidateCachedColor()}}getValueInRange(e,t){const i=this.coordinatesConverter.convertViewRangeToModelRange(e);return this.model.getValueInRange(i,t)}getModelLineMaxColumn(e){return this.model.getLineMaxColumn(e)}validateModelPosition(e){return this.model.validatePosition(e)}validateModelRange(e){return this.model.validateRange(e)}deduceModelPositionRelativeToViewPosition(e,t,i){const n=this.coordinatesConverter.convertViewPositionToModelPosition(e);2===this.model.getEOL().length&&(t<0?t-=i:t+=i);const r=this.model.getOffsetAt(n)+t;return this.model.getPositionAt(r)}getEOL(){return this.model.getEOL()}getPlainTextToCopy(e,t,i){const n=i?"\r\n":this.model.getEOL();(e=e.slice(0)).sort(X.e.compareRangesUsingStarts);let r=!1,s=!1;for(const t of e)t.isEmpty()?r=!0:s=!0;if(!s){if(!t)return"";const i=e.map((e=>e.startLineNumber));let r="";for(let e=0;e<i.length;e++)e>0&&i[e-1]===i[e]||(r+=this.model.getLineContent(i[e])+n);return r}if(r&&t){let t=[],n=0;for(const r of e){const e=r.startLineNumber;r.isEmpty()?e!==n&&t.push(this.model.getLineContent(e)):t.push(this.model.getValueInRange(r,i?2:0)),n=e}return 1===t.length?t[0]:t}let o=[];for(const t of e)t.isEmpty()||o.push(this.model.getValueInRange(t,i?2:0));return 1===o.length?o[0]:o}getRichTextToCopy(e,t){const i=this.model.getLanguageIdentifier();if(1===i.id)return null;if(1!==e.length)return null;let n=e[0];if(n.isEmpty()){if(!t)return null;const e=n.startLineNumber;n=new X.e(e,this.model.getLineMinColumn(e),e,this.model.getLineMaxColumn(e))}const r=this._configuration.options.get(36),s=this._getColorMap(),o=r.fontFamily===H.hL.fontFamily?r.fontFamily:`'${r.fontFamily}', ${H.hL.fontFamily}`;return{mode:i.language,html:`<div style="color: ${s[1]};background-color: ${s[2]};font-family: ${o};font-weight: ${r.fontWeight};font-size: ${r.fontSize}px;line-height: ${r.lineHeight}px;white-space: pre;">`+this._getHTMLToCopy(n,s)+"</div>"}}_getHTMLToCopy(e,t){const i=e.startLineNumber,n=e.startColumn,r=e.endLineNumber,s=e.endColumn,o=this.getTabSize();let a="";for(let e=i;e<=r;e++){const l=this.model.getLineTokens(e),c=l.getLineContent(),d=e===i?n-1:0,h=e===r?s-1:c.length;a+=""===c?"<br>":(0,Bi.F)(c,l.inflate(),t,d,h,o,f.ED)}return a}_getColorMap(){let e=gt.RW.getColorMap(),t=["#000000"];if(e)for(let i=1,n=e.length;i<n;i++)t[i]=Rt.Il.Format.CSS.formatHex(e[i]);return t}pushStackElement(){this.model.pushStackElement()}getPrimaryCursorState(){return this._cursor.getPrimaryCursorState()}getLastAddedCursorIndex(){return this._cursor.getLastAddedCursorIndex()}getCursorStates(){return this._cursor.getCursorStates()}setCursorStates(e,t,i){this._withViewEventsCollector((n=>this._cursor.setStates(n,e,t,i)))}getCursorColumnSelectData(){return this._cursor.getCursorColumnSelectData()}setCursorColumnSelectData(e){this._cursor.setCursorColumnSelectData(e)}getPrevEditOperationType(){return this._cursor.getPrevEditOperationType()}setPrevEditOperationType(e){this._cursor.setPrevEditOperationType(e)}getSelection(){return this._cursor.getSelection()}getSelections(){return this._cursor.getSelections()}getPosition(){return this._cursor.getPrimaryCursorState().modelState.position}setSelections(e,t){this._withViewEventsCollector((i=>this._cursor.setSelections(i,e,t)))}saveCursorState(){return this._cursor.saveState()}restoreCursorState(e){this._withViewEventsCollector((t=>this._cursor.restoreState(t,e)))}_executeCursorEdit(e){this._cursor.context.cursorConfig.readOnly?this._eventDispatcher.emitOutgoingEvent(new Ti):this._withViewEventsCollector(e)}executeEdits(e,t,i){this._executeCursorEdit((n=>this._cursor.executeEdits(n,e,t,i)))}startComposition(){this._cursor.setIsDoingComposition(!0),this._executeCursorEdit((e=>this._cursor.startComposition(e)))}endComposition(e){this._cursor.setIsDoingComposition(!1),this._executeCursorEdit((t=>this._cursor.endComposition(t,e)))}type(e,t){this._executeCursorEdit((i=>this._cursor.type(i,e,t)))}replacePreviousChar(e,t,i){this._executeCursorEdit((n=>this._cursor.replacePreviousChar(n,e,t,i)))}paste(e,t,i,n){this._executeCursorEdit((r=>this._cursor.paste(r,e,t,i,n)))}cut(e){this._executeCursorEdit((t=>this._cursor.cut(t,e)))}executeCommand(e,t){this._executeCursorEdit((i=>this._cursor.executeCommand(i,e,t)))}executeCommands(e,t){this._executeCursorEdit((i=>this._cursor.executeCommands(i,e,t)))}revealPrimaryCursor(e,t){this._withViewEventsCollector((i=>this._cursor.revealPrimary(i,e,t,0)))}revealTopMostCursor(e){const t=this._cursor.getTopMostViewPosition(),i=new X.e(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector((t=>t.emitViewEvent(new bi(e,i,null,0,!0,0))))}revealBottomMostCursor(e){const t=this._cursor.getBottomMostViewPosition(),i=new X.e(t.lineNumber,t.column,t.lineNumber,t.column);this._withViewEventsCollector((t=>t.emitViewEvent(new bi(e,i,null,0,!0,0))))}revealRange(e,t,i,n,r){this._withViewEventsCollector((s=>s.emitViewEvent(new bi(e,i,null,n,t,r))))}getVerticalOffsetForLineNumber(e){return this.viewLayout.getVerticalOffsetForLineNumber(e)}getScrollTop(){return this.viewLayout.getCurrentScrollTop()}setScrollTop(e,t){this.viewLayout.setScrollPosition({scrollTop:e},t)}setScrollPosition(e,t){this.viewLayout.setScrollPosition(e,t)}deltaScrollNow(e,t){this.viewLayout.deltaScrollNow(e,t)}changeWhitespace(e){this.viewLayout.changeWhitespace(e)&&(this._eventDispatcher.emitSingleViewEvent(new Si),this._eventDispatcher.emitOutgoingEvent(new Ni))}setMaxLineWidth(e){this.viewLayout.setMaxLineWidth(e)}_withViewEventsCollector(e){try{e(this._eventDispatcher.beginEmitViewEvents())}finally{this._eventDispatcher.endEmitViewEvents()}}}var un=i(94565),gn=i(38819),fn=i(72065),pn=i(60972),mn=i(59422),_n=i(31106),bn=i(98401),vn=i(44906);class yn extends vn.N{constructor(e,t){super(0);for(let t=0;t<e.length;t++)this.set(e.charCodeAt(t),1);for(let e=0;e<t.length;e++)this.set(t.charCodeAt(e),2)}get(e){return e>=0&&e<256?this._asciiMap[e]:e>=12352&&e<=12543||e>=13312&&e<=19903||e>=19968&&e<=40959?3:this._map.get(e)||this._defaultValue}}let wn=[],Cn=[];class Sn{constructor(e,t){this.classifier=new yn(e,t)}static create(e){return new Sn(e.get(108),e.get(107))}createLineBreaksComputer(e,t,i,n){t|=0,i=+i;let r=[],s=[];return{addRequest:(e,t)=>{r.push(e),s.push(t)},finalize:()=>{const o=e.typicalFullwidthCharacterWidth/e.typicalHalfwidthCharacterWidth;let a=[];for(let e=0,l=r.length;e<l;e++){const l=s[e];a[e]=l?kn(this.classifier,l,r[e],t,i,o,n):xn(this.classifier,r[e],t,i,o,n)}return wn.length=0,Cn.length=0,a}}}}function kn(e,t,i,n,r,s,o){if(-1===r)return null;const a=i.length;if(a<=1)return null;const l=t.breakOffsets,c=t.breakOffsetsVisibleColumn,d=Nn(i,n,r,s,o),h=r-d;let u=wn,g=Cn,f=0,p=0,m=0,_=r;const b=l.length;let v=0;if(v>=0){let e=Math.abs(c[v]-_);for(;v+1<b;){const t=Math.abs(c[v+1]-_);if(t>=e)break;e=t,v++}}for(;v<b;){let t=v<0?0:l[v],r=v<0?0:c[v];p>t&&(t=p,r=m);let o=0,d=0,y=0,w=0;if(r<=_){let m=r,b=0===t?0:i.charCodeAt(t-1),v=0===t?0:e.get(b),C=!0;for(let r=t;r<a;r++){const t=r,a=i.charCodeAt(r);let l,c;if(we.ZG(a)?(r++,l=0,c=2):(l=e.get(a),c=Ln(a,m,n,s)),t>p&&Dn(0,v,a,l)&&(o=t,d=m),m+=c,m>_){t>p?(y=t,w=m-c):(y=r+1,w=m),m-d>h&&(o=0),C=!1;break}b=a,v=l}if(C){f>0&&(u[f]=l[l.length-1],g[f]=c[l.length-1],f++);break}}if(0===o){let a=r,l=i.charCodeAt(t),c=e.get(l),u=!1;for(let n=t-1;n>=p;n--){const t=n+1,r=i.charCodeAt(n);if(9===r){u=!0;break}let g,f;if(we.YK(r)?(n--,g=0,f=2):(g=e.get(r),f=we.K7(r)?s:1),a<=_){if(0===y&&(y=t,w=a),a<=_-h)break;if(Dn(0,g,l,c)){o=t,d=a;break}}a-=f,l=r,c=g}if(0!==o){const e=h-(w-d);if(e<=n){const t=i.charCodeAt(y);let r;r=we.ZG(t)?2:Ln(t,w,n,s),e-r<0&&(o=0)}}if(u){v--;continue}}for(0===o&&(o=y,d=w),p=o,u[f]=o,m=d,g[f]=d,f++,_=d+h;v<0||v<b&&c[v]<d;)v++;let C=Math.abs(c[v]-_);for(;v+1<b;){const e=Math.abs(c[v+1]-_);if(e>=C)break;C=e,v++}}return 0===f?null:(u.length=f,g.length=f,wn=t.breakOffsets,Cn=t.breakOffsetsVisibleColumn,t.breakOffsets=u,t.breakOffsetsVisibleColumn=g,t.wrappedTextIndentLength=d,t)}function xn(e,t,i,n,r,s){if(-1===n)return null;const o=t.length;if(o<=1)return null;const a=Nn(t,i,n,r,s),l=n-a;let c=[],d=[],h=0,u=0,g=0,f=n,p=t.charCodeAt(0),m=e.get(p),_=Ln(p,0,i,r),b=1;we.ZG(p)&&(_+=1,p=t.charCodeAt(1),m=e.get(p),b++);for(let n=b;n<o;n++){const s=n,o=t.charCodeAt(n);let a,b;we.ZG(o)?(n++,a=0,b=2):(a=e.get(o),b=Ln(o,_,i,r)),Dn(0,m,o,a)&&(u=s,g=_),_+=b,_>f&&((0===u||_-g>l)&&(u=s,g=_-b),c[h]=u,d[h]=g,h++,f=g+l,u=0),p=o,m=a}return 0===h?null:(c[h]=o,d[h]=_,new Gi(c,d,a))}function Ln(e,t,i,n){return 9===e?i-t%i:we.K7(e)?n:1}function Mn(e,t){return t-e%t}function Dn(e,t,i,n){return 32!==i&&(2===t||3===t&&2!==n||1===n||3===n&&1!==t)}function Nn(e,t,i,n,r){let s=0;if(0!==r){const o=we.LC(e);if(-1!==o){for(let i=0;i<o;i++)s+=9===e.charCodeAt(i)?Mn(s,t):1;const a=3===r?2:2===r?1:0;for(let e=0;e<a;e++)s+=Mn(s,t);s+n>i&&(s=0)}}return s}class En{static create(){return new En}constructor(){}createLineBreaksComputer(e,t,i,n){t|=0,i=+i;let r=[];return{addRequest:(e,t)=>{r.push(e)},finalize:()=>function(e,t,i,n,r){if(-1===n){const t=[];for(let i=0,n=e.length;i<n;i++)t[i]=null;return t}const s=Math.round(n*t.typicalHalfwidthCharacterWidth);2!==r&&3!==r||(r=1);const o=document.createElement("div");c.V.applyFontInfoSlow(o,t);const a=(0,Fe.l$)(1e4),l=[],d=[],h=[],u=[],g=[];for(let n=0;n<e.length;n++){const o=e[n];let c=0,f=0,p=s;if(0!==r)if(c=we.LC(o),-1===c)c=0;else{for(let e=0;e<c;e++)f+=9===o.charCodeAt(e)?i-f%i:1;const e=Math.ceil(t.spaceWidth*f);e+t.typicalFullwidthCharacterWidth>s?(c=0,f=0):p=s-e}const m=o.substr(c),_=Tn(m,f,i,p,a);l[n]=c,d[n]=f,h[n]=m,u[n]=_[0],g[n]=_[1]}o.innerHTML=a.build(),o.style.position="absolute",o.style.top="10000",o.style.wordWrap="break-word",document.body.appendChild(o);let f=document.createRange();const p=Array.prototype.slice.call(o.children,0);let m=[];for(let t=0;t<e.length;t++){const e=In(f,p[t],h[t],u[t]);if(null===e){m[t]=null;continue}const i=l[t],n=d[t],r=g[t],s=[];for(let t=0,i=e.length;t<i;t++)s[t]=r[e[t]];if(0!==i)for(let t=0,n=e.length;t<n;t++)e[t]+=i;m[t]=new Gi(e,s,n)}return document.body.removeChild(o),m}(r,e,t,i,n)}}}function Tn(e,t,i,n,r){r.appendASCIIString('<div style="width:'),r.appendASCIIString(String(n)),r.appendASCIIString('px;">');const s=e.length;let o=t,a=0,l=[],c=[],d=0<s?e.charCodeAt(0):0;r.appendASCIIString("<span>");for(let t=0;t<s;t++){0!==t&&t%16384==0&&r.appendASCIIString("</span><span>"),l[t]=a,c[t]=o;const n=d;d=t+1<s?e.charCodeAt(t+1):0;let h=1,u=1;switch(n){case 9:h=i-o%i,u=h;for(let e=1;e<=h;e++)e<h?r.write1(160):r.appendASCII(32);break;case 32:32===d?r.write1(160):r.appendASCII(32);break;case 60:r.appendASCIIString("<");break;case 62:r.appendASCIIString(">");break;case 38:r.appendASCIIString("&");break;case 0:r.appendASCIIString("�");break;case 65279:case 8232:case 8233:case 133:r.write1(65533);break;default:we.K7(n)&&u++,r.write1(n)}a+=h,o+=u}return r.appendASCIIString("</span>"),l[e.length]=a,c[e.length]=o,r.appendASCIIString("</div>"),[l,c]}function In(e,t,i,n){if(i.length<=1)return null;const r=Array.prototype.slice.call(t.children,0),s=[];try{On(e,r,n,0,null,i.length-1,null,s)}catch(e){return console.log(e),null}return 0===s.length?null:(s.push(i.length),s)}function On(e,t,i,n,r,s,o,a){if(n===s)return;if(r=r||An(e,t,i[n],i[n+1]),o=o||An(e,t,i[s],i[s+1]),Math.abs(r[0].top-o[0].top)<=.1)return;if(n+1===s)return void a.push(s);const l=n+(s-n)/2|0,c=An(e,t,i[l],i[l+1]);On(e,t,i,n,r,l,c,a),On(e,t,i,l,c,s,o,a)}function An(e,t,i,n){return e.setStart(t[i/16384|0].firstChild,i%16384),e.setEnd(t[n/16384|0].firstChild,n%16384),e.getClientRects()}var Rn=i(5795),Pn=function(e,t){return function(i,n){t(i,n,e)}};let Fn=0;class Bn{constructor(e,t,i,n,r){this.model=e,this.viewModel=t,this.view=i,this.hasRealView=n,this.listenersToRemove=r}dispose(){(0,a.B9)(this.listenersToRemove),this.model.onBeforeDetached(),this.hasRealView&&this.view.dispose(),this.viewModel.dispose()}}let Wn=class e extends a.JT{constructor(e,t,i,n,r,a,l,c,h,u){let g;super(),this._onDidDispose=this._register(new o.Q5),this.onDidDispose=this._onDidDispose.event,this._onDidChangeModelContent=this._register(new o.Q5),this.onDidChangeModelContent=this._onDidChangeModelContent.event,this._onDidChangeModelLanguage=this._register(new o.Q5),this.onDidChangeModelLanguage=this._onDidChangeModelLanguage.event,this._onDidChangeModelLanguageConfiguration=this._register(new o.Q5),this.onDidChangeModelLanguageConfiguration=this._onDidChangeModelLanguageConfiguration.event,this._onDidChangeModelOptions=this._register(new o.Q5),this.onDidChangeModelOptions=this._onDidChangeModelOptions.event,this._onDidChangeModelDecorations=this._register(new o.Q5),this.onDidChangeModelDecorations=this._onDidChangeModelDecorations.event,this._onDidChangeConfiguration=this._register(new o.Q5),this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._onDidChangeModel=this._register(new o.Q5),this.onDidChangeModel=this._onDidChangeModel.event,this._onDidChangeCursorPosition=this._register(new o.Q5),this.onDidChangeCursorPosition=this._onDidChangeCursorPosition.event,this._onDidChangeCursorSelection=this._register(new o.Q5),this.onDidChangeCursorSelection=this._onDidChangeCursorSelection.event,this._onDidAttemptReadOnlyEdit=this._register(new o.Q5),this.onDidAttemptReadOnlyEdit=this._onDidAttemptReadOnlyEdit.event,this._onDidLayoutChange=this._register(new o.Q5),this.onDidLayoutChange=this._onDidLayoutChange.event,this._editorTextFocus=this._register(new Yn),this.onDidFocusEditorText=this._editorTextFocus.onDidChangeToTrue,this.onDidBlurEditorText=this._editorTextFocus.onDidChangeToFalse,this._editorWidgetFocus=this._register(new Yn),this.onDidFocusEditorWidget=this._editorWidgetFocus.onDidChangeToTrue,this.onDidBlurEditorWidget=this._editorWidgetFocus.onDidChangeToFalse,this._onWillType=this._register(new o.Q5),this.onWillType=this._onWillType.event,this._onDidType=this._register(new o.Q5),this.onDidType=this._onDidType.event,this._onDidCompositionStart=this._register(new o.Q5),this.onDidCompositionStart=this._onDidCompositionStart.event,this._onDidCompositionEnd=this._register(new o.Q5),this.onDidCompositionEnd=this._onDidCompositionEnd.event,this._onDidPaste=this._register(new o.Q5),this.onDidPaste=this._onDidPaste.event,this._onMouseUp=this._register(new o.Q5),this.onMouseUp=this._onMouseUp.event,this._onMouseDown=this._register(new o.Q5),this.onMouseDown=this._onMouseDown.event,this._onMouseDrag=this._register(new o.Q5),this.onMouseDrag=this._onMouseDrag.event,this._onMouseDrop=this._register(new o.Q5),this.onMouseDrop=this._onMouseDrop.event,this._onContextMenu=this._register(new o.Q5),this.onContextMenu=this._onContextMenu.event,this._onMouseMove=this._register(new o.Q5),this.onMouseMove=this._onMouseMove.event,this._onMouseLeave=this._register(new o.Q5),this.onMouseLeave=this._onMouseLeave.event,this._onMouseWheel=this._register(new o.Q5),this.onMouseWheel=this._onMouseWheel.event,this._onKeyUp=this._register(new o.Q5),this.onKeyUp=this._onKeyUp.event,this._onKeyDown=this._register(new o.Q5),this.onKeyDown=this._onKeyDown.event,this._onDidContentSizeChange=this._register(new o.Q5),this.onDidContentSizeChange=this._onDidContentSizeChange.event,this._onDidScrollChange=this._register(new o.Q5),this.onDidScrollChange=this._onDidScrollChange.event,this._onDidChangeViewZones=this._register(new o.Q5),this.onDidChangeViewZones=this._onDidChangeViewZones.event,t=t||{},this._domElement=e,this._overflowWidgetsDomNode=t.overflowWidgetsDomNode,this._id=++Fn,this._decorationTypeKeysToIds={},this._decorationTypeSubtypes={},this.isSimpleWidget=i.isSimpleWidget||!1,this._telemetryData=i.telemetryData,this._configuration=this._register(this._createConfiguration(t,u)),this._register(this._configuration.onDidChange((e=>{this._onDidChangeConfiguration.fire(e);const t=this._configuration.options;if(e.hasChanged(117)){const e=t.get(117);this._onDidLayoutChange.fire(e)}}))),this._contextKeyService=this._register(l.createScoped(this._domElement)),this._notificationService=h,this._codeEditorService=r,this._commandService=a,this._themeService=c,this._register(new Hn(this,this._contextKeyService)),this._register(new jn(this,this._contextKeyService)),this._instantiationService=n.createChild(new pn.y([gn.i6,this._contextKeyService])),this._modelData=null,this._contributions={},this._actions={},this._focusTracker=new Vn(e),this._focusTracker.onChange((()=>{this._editorWidgetFocus.setValue(this._focusTracker.hasFocus())})),this._contentWidgets={},this._overlayWidgets={},g=Array.isArray(i.contributions)?i.contributions:d.Uc.getEditorContributions();for(const e of g)try{const t=this._instantiationService.createInstance(e.ctor,this);this._contributions[e.id]=t}catch(e){(0,s.dL)(e)}d.Uc.getEditorActions().forEach((e=>{const t=new Ri.p(e.id,e.label,e.alias,(0,bn.f6)(e.precondition),(()=>this._instantiationService.invokeFunction((t=>Promise.resolve(e.runEditorCommand(t,this,null))))),this._contextKeyService);this._actions[t.id]=t})),this._codeEditorService.addCodeEditor(this)}_createConfiguration(e,t){return new c.V(this.isSimpleWidget,e,this._domElement,t)}getId(){return this.getEditorType()+":"+this._id}getEditorType(){return Pi.g.ICodeEditor}dispose(){this._codeEditorService.removeCodeEditor(this),this._focusTracker.dispose();const e=Object.keys(this._contributions);for(let t=0,i=e.length;t<i;t++){const i=e[t];this._contributions[i].dispose()}this._removeDecorationTypes(),this._postDetachModelCleanup(this._detachModel()),this._onDidDispose.fire(),super.dispose()}invokeWithinContext(e){return this._instantiationService.invokeFunction(e)}updateOptions(e){this._configuration.updateOptions(e)}getOptions(){return this._configuration.options}getOption(e){return this._configuration.options.get(e)}getRawOptions(){return this._configuration.getRawOptions()}getOverflowWidgetsDomNode(){return this._overflowWidgetsDomNode}getConfiguredWordAtPosition(e){return this._modelData?Rn.w.getWordAtPosition(this._modelData.model,this._configuration.options.get(105),e):null}getValue(e=null){if(!this._modelData)return"";const t=!(!e||!e.preserveBOM);let i=0;return e&&e.lineEnding&&"\n"===e.lineEnding?i=1:e&&e.lineEnding&&"\r\n"===e.lineEnding&&(i=2),this._modelData.model.getValue(i,t)}setValue(e){this._modelData&&this._modelData.model.setValue(e)}getModel(){return this._modelData?this._modelData.model:null}setModel(e=null){const t=e;if(null===this._modelData&&null===t)return;if(this._modelData&&this._modelData.model===t)return;const i=this.hasTextFocus(),n=this._detachModel();this._attachModel(t),i&&this.hasModel()&&this.focus();const r={oldModelUrl:n?n.uri:null,newModelUrl:t?t.uri:null};this._removeDecorationTypes(),this._onDidChangeModel.fire(r),this._postDetachModelCleanup(n)}_removeDecorationTypes(){if(this._decorationTypeKeysToIds={},this._decorationTypeSubtypes){for(let e in this._decorationTypeSubtypes){const t=this._decorationTypeSubtypes[e];for(let i in t)this._removeDecorationType(e+"-"+i)}this._decorationTypeSubtypes={}}}getVisibleRanges(){return this._modelData?this._modelData.viewModel.getVisibleRanges():[]}getVisibleRangesPlusViewportAboveBelow(){return this._modelData?this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow():[]}getWhitespaces(){return this._modelData?this._modelData.viewModel.viewLayout.getWhitespaces():[]}static _getVerticalOffsetForPosition(e,t,i){const n=e.model.validatePosition({lineNumber:t,column:i}),r=e.viewModel.coordinatesConverter.convertModelPositionToViewPosition(n);return e.viewModel.viewLayout.getVerticalOffsetForLineNumber(r.lineNumber)}getTopForLineNumber(t){return this._modelData?e._getVerticalOffsetForPosition(this._modelData,t,1):-1}getTopForPosition(t,i){return this._modelData?e._getVerticalOffsetForPosition(this._modelData,t,i):-1}setHiddenAreas(e){this._modelData&&this._modelData.viewModel.setHiddenAreas(e.map((e=>X.e.lift(e))))}getVisibleColumnFromPosition(e){if(!this._modelData)return e.column;const t=this._modelData.model.validatePosition(e),i=this._modelData.model.getOptions().tabSize;return ee.io.visibleColumnFromColumn(this._modelData.model.getLineContent(t.lineNumber),t.column,i)+1}getPosition(){return this._modelData?this._modelData.viewModel.getPosition():null}setPosition(e){if(this._modelData){if(!Q.L.isIPosition(e))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections("api",[{selectionStartLineNumber:e.lineNumber,selectionStartColumn:e.column,positionLineNumber:e.lineNumber,positionColumn:e.column}])}}_sendRevealRange(e,t,i,n){if(!this._modelData)return;if(!X.e.isIRange(e))throw new Error("Invalid arguments");const r=this._modelData.model.validateRange(e),s=this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(r);this._modelData.viewModel.revealRange("api",i,s,t,n)}revealLine(e,t=0){this._revealLine(e,0,t)}revealLineInCenter(e,t=0){this._revealLine(e,1,t)}revealLineInCenterIfOutsideViewport(e,t=0){this._revealLine(e,2,t)}revealLineNearTop(e,t=0){this._revealLine(e,5,t)}_revealLine(e,t,i){if("number"!=typeof e)throw new Error("Invalid arguments");this._sendRevealRange(new X.e(e,1,e,1),t,!1,i)}revealPosition(e,t=0){this._revealPosition(e,0,!0,t)}revealPositionInCenter(e,t=0){this._revealPosition(e,1,!0,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this._revealPosition(e,2,!0,t)}revealPositionNearTop(e,t=0){this._revealPosition(e,5,!0,t)}_revealPosition(e,t,i,n){if(!Q.L.isIPosition(e))throw new Error("Invalid arguments");this._sendRevealRange(new X.e(e.lineNumber,e.column,e.lineNumber,e.column),t,i,n)}getSelection(){return this._modelData?this._modelData.viewModel.getSelection():null}getSelections(){return this._modelData?this._modelData.viewModel.getSelections():null}setSelection(e){const t=u.Y.isISelection(e),i=X.e.isIRange(e);if(!t&&!i)throw new Error("Invalid arguments");if(t)this._setSelectionImpl(e);else if(i){const t={selectionStartLineNumber:e.startLineNumber,selectionStartColumn:e.startColumn,positionLineNumber:e.endLineNumber,positionColumn:e.endColumn};this._setSelectionImpl(t)}}_setSelectionImpl(e){if(!this._modelData)return;const t=new u.Y(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn);this._modelData.viewModel.setSelections("api",[t])}revealLines(e,t,i=0){this._revealLines(e,t,0,i)}revealLinesInCenter(e,t,i=0){this._revealLines(e,t,1,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this._revealLines(e,t,2,i)}revealLinesNearTop(e,t,i=0){this._revealLines(e,t,5,i)}_revealLines(e,t,i,n){if("number"!=typeof e||"number"!=typeof t)throw new Error("Invalid arguments");this._sendRevealRange(new X.e(e,1,t,1),i,!1,n)}revealRange(e,t=0,i=!1,n=!0){this._revealRange(e,i?1:0,n,t)}revealRangeInCenter(e,t=0){this._revealRange(e,1,!0,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this._revealRange(e,2,!0,t)}revealRangeNearTop(e,t=0){this._revealRange(e,5,!0,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this._revealRange(e,6,!0,t)}revealRangeAtTop(e,t=0){this._revealRange(e,3,!0,t)}_revealRange(e,t,i,n){if(!X.e.isIRange(e))throw new Error("Invalid arguments");this._sendRevealRange(X.e.lift(e),t,i,n)}setSelections(e,t="api"){if(this._modelData){if(!e||0===e.length)throw new Error("Invalid arguments");for(let t=0,i=e.length;t<i;t++)if(!u.Y.isISelection(e[t]))throw new Error("Invalid arguments");this._modelData.viewModel.setSelections(t,e)}}getContentWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getContentWidth():-1}getScrollWidth(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollWidth():-1}getScrollLeft(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollLeft():-1}getContentHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getContentHeight():-1}getScrollHeight(){return this._modelData?this._modelData.viewModel.viewLayout.getScrollHeight():-1}getScrollTop(){return this._modelData?this._modelData.viewModel.viewLayout.getCurrentScrollTop():-1}setScrollLeft(e,t=1){if(this._modelData){if("number"!=typeof e)throw new Error("Invalid arguments");this._modelData.viewModel.setScrollPosition({scrollLeft:e},t)}}setScrollTop(e,t=1){if(this._modelData){if("number"!=typeof e)throw new Error("Invalid arguments");this._modelData.viewModel.setScrollPosition({scrollTop:e},t)}}setScrollPosition(e,t=1){this._modelData&&this._modelData.viewModel.setScrollPosition(e,t)}saveViewState(){if(!this._modelData)return null;const e={},t=Object.keys(this._contributions);for(const i of t){const t=this._contributions[i];"function"==typeof t.saveViewState&&(e[i]=t.saveViewState())}return{cursorState:this._modelData.viewModel.saveCursorState(),viewState:this._modelData.viewModel.saveState(),contributionsState:e}}restoreViewState(e){if(!this._modelData||!this._modelData.hasRealView)return;const t=e;if(t&&t.cursorState&&t.viewState){const e=t.cursorState;Array.isArray(e)?this._modelData.viewModel.restoreCursorState(e):this._modelData.viewModel.restoreCursorState([e]);const i=t.contributionsState||{},n=Object.keys(this._contributions);for(let e=0,t=n.length;e<t;e++){const t=n[e],r=this._contributions[t];"function"==typeof r.restoreViewState&&r.restoreViewState(i[t])}const r=this._modelData.viewModel.reduceRestoreState(t.viewState);this._modelData.view.restoreState(r)}}getContribution(e){return this._contributions[e]||null}getActions(){const e=[],t=Object.keys(this._actions);for(let i=0,n=t.length;i<n;i++){const n=t[i];e.push(this._actions[n])}return e}getSupportedActions(){let e=this.getActions();return e=e.filter((e=>e.isSupported())),e}getAction(e){return this._actions[e]||null}trigger(e,t,i){switch(i=i||{},t){case"compositionStart":return void this._startComposition();case"compositionEnd":return void this._endComposition(e);case"type":{const t=i;return void this._type(e,t.text||"")}case"replacePreviousChar":{const t=i;return void this._replacePreviousChar(e,t.text||"",t.replaceCharCnt||0)}case"paste":{const t=i;return void this._paste(e,t.text||"",t.pasteOnNewLine||!1,t.multicursorText||null,t.mode||null)}case"cut":return void this._cut(e)}const n=this.getAction(t);n?Promise.resolve(n.run()).then(void 0,s.dL):this._modelData&&this._triggerEditorCommand(e,t,i)}_startComposition(){this._modelData&&(this._modelData.viewModel.startComposition(),this._onDidCompositionStart.fire())}_endComposition(e){this._modelData&&(this._modelData.viewModel.endComposition(e),this._onDidCompositionEnd.fire())}_type(e,t){this._modelData&&0!==t.length&&("keyboard"===e&&this._onWillType.fire(t),this._modelData.viewModel.type(t,e),"keyboard"===e&&this._onDidType.fire(t))}_replacePreviousChar(e,t,i){this._modelData&&this._modelData.viewModel.replacePreviousChar(t,i,e)}_paste(e,t,i,n,r){if(!this._modelData||0===t.length)return;const s=this._modelData.viewModel.getSelection().getStartPosition();this._modelData.viewModel.paste(t,i,n,e);const o=this._modelData.viewModel.getSelection().getStartPosition();"keyboard"===e&&this._onDidPaste.fire({range:new X.e(s.lineNumber,s.column,o.lineNumber,o.column),mode:r})}_cut(e){this._modelData&&this._modelData.viewModel.cut(e)}_triggerEditorCommand(e,t,i){const n=d.Uc.getEditorCommand(t);return!!n&&((i=i||{}).source=e,this._instantiationService.invokeFunction((e=>{Promise.resolve(n.runEditorCommand(e,this,i)).then(void 0,s.dL)})),!0)}_getViewModel(){return this._modelData?this._modelData.viewModel:null}pushUndoStop(){return!!this._modelData&&!this._configuration.options.get(72)&&(this._modelData.model.pushStackElement(),!0)}executeEdits(e,t,i){if(!this._modelData)return!1;if(this._configuration.options.get(72))return!1;let n;return n=i?Array.isArray(i)?()=>i:i:()=>null,this._modelData.viewModel.executeEdits(e,t,n),!0}executeCommand(e,t){this._modelData&&this._modelData.viewModel.executeCommand(t,e)}executeCommands(e,t){this._modelData&&this._modelData.viewModel.executeCommands(t,e)}changeDecorations(e){return this._modelData?this._modelData.model.changeDecorations(e,this._id):null}getLineDecorations(e){return this._modelData?this._modelData.model.getLineDecorations(e,this._id,(0,H.$J)(this._configuration.options)):null}deltaDecorations(e,t){return this._modelData?0===e.length&&0===t.length?e:this._modelData.model.deltaDecorations(e,t,this._id):[]}removeDecorations(e){const t=this._decorationTypeKeysToIds[e];t&&this.deltaDecorations(t,[]),this._decorationTypeKeysToIds.hasOwnProperty(e)&&delete this._decorationTypeKeysToIds[e],this._decorationTypeSubtypes.hasOwnProperty(e)&&delete this._decorationTypeSubtypes[e]}getLayoutInfo(){return this._configuration.options.get(117)}createOverviewRuler(e){return this._modelData&&this._modelData.hasRealView?this._modelData.view.createOverviewRuler(e):null}getContainerDomNode(){return this._domElement}getDomNode(){return this._modelData&&this._modelData.hasRealView?this._modelData.view.domNode.domNode:null}delegateVerticalScrollbarMouseDown(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.delegateVerticalScrollbarMouseDown(e)}layout(e){this._configuration.observeReferenceElement(e),this.render()}focus(){this._modelData&&this._modelData.hasRealView&&this._modelData.view.focus()}hasTextFocus(){return!(!this._modelData||!this._modelData.hasRealView)&&this._modelData.view.isFocused()}hasWidgetFocus(){return this._focusTracker&&this._focusTracker.hasFocus()}addContentWidget(e){const t={widget:e,position:e.getPosition()};this._contentWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting a content widget with the same id."),this._contentWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addContentWidget(t)}layoutContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const i=this._contentWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutContentWidget(i)}}removeContentWidget(e){const t=e.getId();if(this._contentWidgets.hasOwnProperty(t)){const e=this._contentWidgets[t];delete this._contentWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeContentWidget(e)}}addOverlayWidget(e){const t={widget:e,position:e.getPosition()};this._overlayWidgets.hasOwnProperty(e.getId())&&console.warn("Overwriting an overlay widget with the same id."),this._overlayWidgets[e.getId()]=t,this._modelData&&this._modelData.hasRealView&&this._modelData.view.addOverlayWidget(t)}layoutOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const i=this._overlayWidgets[t];i.position=e.getPosition(),this._modelData&&this._modelData.hasRealView&&this._modelData.view.layoutOverlayWidget(i)}}removeOverlayWidget(e){const t=e.getId();if(this._overlayWidgets.hasOwnProperty(t)){const e=this._overlayWidgets[t];delete this._overlayWidgets[t],this._modelData&&this._modelData.hasRealView&&this._modelData.view.removeOverlayWidget(e)}}changeViewZones(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.change(e)}getTargetAtClientPoint(e,t){return this._modelData&&this._modelData.hasRealView?this._modelData.view.getTargetAtClientPoint(e,t):null}getScrolledVisiblePosition(t){if(!this._modelData||!this._modelData.hasRealView)return null;const i=this._modelData.model.validatePosition(t),n=this._configuration.options,r=n.get(117);return{top:e._getVerticalOffsetForPosition(this._modelData,i.lineNumber,i.column)-this.getScrollTop(),left:this._modelData.view.getOffsetForColumn(i.lineNumber,i.column)+r.glyphMarginWidth+r.lineNumbersWidth+r.decorationsWidth-this.getScrollLeft(),height:n.get(51)}}getOffsetForColumn(e,t){return this._modelData&&this._modelData.hasRealView?this._modelData.view.getOffsetForColumn(e,t):-1}render(e=!1){this._modelData&&this._modelData.hasRealView&&this._modelData.view.render(!0,e)}setAriaOptions(e){this._modelData&&this._modelData.hasRealView&&this._modelData.view.setAriaOptions(e)}applyFontInfo(e){c.V.applyFontInfoSlow(e,this._configuration.options.get(36))}_attachModel(e){if(!e)return void(this._modelData=null);const t=[];this._domElement.setAttribute("data-mode-id",e.getLanguageIdentifier().language),this._configuration.setIsDominatedByLongLines(e.isDominatedByLongLines()),this._configuration.setMaxLineNumber(e.getLineCount()),e.onBeforeAttached();const i=new hn(this._id,this._configuration,e,En.create(),Sn.create(this._configuration.options),(e=>r.jL(e)));t.push(e.onDidChangeDecorations((e=>this._onDidChangeModelDecorations.fire(e)))),t.push(e.onDidChangeLanguage((t=>{this._domElement.setAttribute("data-mode-id",e.getLanguageIdentifier().language),this._onDidChangeModelLanguage.fire(t)}))),t.push(e.onDidChangeLanguageConfiguration((e=>this._onDidChangeModelLanguageConfiguration.fire(e)))),t.push(e.onDidChangeContent((e=>this._onDidChangeModelContent.fire(e)))),t.push(e.onDidChangeOptions((e=>this._onDidChangeModelOptions.fire(e)))),t.push(e.onWillDispose((()=>this.setModel(null)))),t.push(i.onEvent((e=>{switch(e.kind){case 0:this._onDidContentSizeChange.fire(e);break;case 1:this._editorTextFocus.setValue(e.hasFocus);break;case 2:this._onDidScrollChange.fire(e);break;case 3:this._onDidChangeViewZones.fire();break;case 4:this._onDidAttemptReadOnlyEdit.fire();break;case 5:{e.reachedMaxCursorCount&&this._notificationService.warn(n.N("cursors.maximum","The number of cursors has been limited to {0}.",Ai.MAX_CURSOR_COUNT));const t=[];for(let i=0,n=e.selections.length;i<n;i++)t[i]=e.selections[i].getPosition();const i={position:t[0],secondaryPositions:t.slice(1),reason:e.reason,source:e.source};this._onDidChangeCursorPosition.fire(i);const r={selection:e.selections[0],secondarySelections:e.selections.slice(1),modelVersionId:e.modelVersionId,oldSelections:e.oldSelections,oldModelVersionId:e.oldModelVersionId,source:e.source,reason:e.reason};this._onDidChangeCursorSelection.fire(r);break}}})));const[s,o]=this._createView(i);if(o){this._domElement.appendChild(s.domNode.domNode);let t=Object.keys(this._contentWidgets);for(let e=0,i=t.length;e<i;e++){const i=t[e];s.addContentWidget(this._contentWidgets[i])}t=Object.keys(this._overlayWidgets);for(let e=0,i=t.length;e<i;e++){const i=t[e];s.addOverlayWidget(this._overlayWidgets[i])}s.render(!1,!0),s.domNode.domNode.setAttribute("data-uri",e.uri.toString())}this._modelData=new Bn(e,i,s,o,t)}_createView(e){let t;t=this.isSimpleWidget?{paste:(e,t,i,n)=>{this._paste("keyboard",e,t,i,n)},type:e=>{this._type("keyboard",e)},replacePreviousChar:(e,t)=>{this._replacePreviousChar("keyboard",e,t)},startComposition:()=>{this._startComposition()},endComposition:()=>{this._endComposition("keyboard")},cut:()=>{this._cut("keyboard")}}:{paste:(e,t,i,n)=>{const r={text:e,pasteOnNewLine:t,multicursorText:i,mode:n};this._commandService.executeCommand("paste",r)},type:e=>{const t={text:e};this._commandService.executeCommand("type",t)},replacePreviousChar:(e,t)=>{const i={text:e,replaceCharCnt:t};this._commandService.executeCommand("replacePreviousChar",i)},startComposition:()=>{this._commandService.executeCommand("compositionStart",{})},endComposition:()=>{this._commandService.executeCommand("compositionEnd",{})},cut:()=>{this._commandService.executeCommand("cut",{})}};const i=new Re(e.coordinatesConverter);return i.onKeyDown=e=>this._onKeyDown.fire(e),i.onKeyUp=e=>this._onKeyUp.fire(e),i.onContextMenu=e=>this._onContextMenu.fire(e),i.onMouseMove=e=>this._onMouseMove.fire(e),i.onMouseLeave=e=>this._onMouseLeave.fire(e),i.onMouseDown=e=>this._onMouseDown.fire(e),i.onMouseUp=e=>this._onMouseUp.fire(e),i.onMouseDrag=e=>this._onMouseDrag.fire(e),i.onMouseDrop=e=>this._onMouseDrop.fire(e),i.onMouseWheel=e=>this._onMouseWheel.fire(e),[new ni(t,this._configuration,this._themeService,e,i,this._overflowWidgetsDomNode),!0]}_postDetachModelCleanup(e){e&&e.removeAllDecorationsWithOwnerId(this._id)}_detachModel(){if(!this._modelData)return null;const e=this._modelData.model,t=this._modelData.hasRealView?this._modelData.view.domNode.domNode:null;return this._modelData.dispose(),this._modelData=null,this._domElement.removeAttribute("data-mode-id"),t&&this._domElement.contains(t)&&this._domElement.removeChild(t),e}_removeDecorationType(e){this._codeEditorService.removeDecorationType(e)}hasModel(){return null!==this._modelData}};Wn=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([Pn(3,fn.TG),Pn(4,h.$),Pn(5,un.H),Pn(6,gn.i6),Pn(7,Y.XE),Pn(8,mn.lT),Pn(9,_n.F)],Wn);class Yn extends a.JT{constructor(){super(),this._onDidChangeToTrue=this._register(new o.Q5),this.onDidChangeToTrue=this._onDidChangeToTrue.event,this._onDidChangeToFalse=this._register(new o.Q5),this.onDidChangeToFalse=this._onDidChangeToFalse.event,this._value=0}setValue(e){const t=e?2:1;this._value!==t&&(this._value=t,2===this._value?this._onDidChangeToTrue.fire():1===this._value&&this._onDidChangeToFalse.fire())}}class Hn extends a.JT{constructor(e,t){super(),this._editor=e,t.createKey("editorId",e.getId()),this._editorSimpleInput=Fi.u.editorSimpleInput.bindTo(t),this._editorFocus=Fi.u.focus.bindTo(t),this._textInputFocus=Fi.u.textInputFocus.bindTo(t),this._editorTextFocus=Fi.u.editorTextFocus.bindTo(t),this._editorTabMovesFocus=Fi.u.tabMovesFocus.bindTo(t),this._editorReadonly=Fi.u.readOnly.bindTo(t),this._editorColumnSelection=Fi.u.columnSelection.bindTo(t),this._hasMultipleSelections=Fi.u.hasMultipleSelections.bindTo(t),this._hasNonEmptySelection=Fi.u.hasNonEmptySelection.bindTo(t),this._canUndo=Fi.u.canUndo.bindTo(t),this._canRedo=Fi.u.canRedo.bindTo(t),this._register(this._editor.onDidChangeConfiguration((()=>this._updateFromConfig()))),this._register(this._editor.onDidChangeCursorSelection((()=>this._updateFromSelection()))),this._register(this._editor.onDidFocusEditorWidget((()=>this._updateFromFocus()))),this._register(this._editor.onDidBlurEditorWidget((()=>this._updateFromFocus()))),this._register(this._editor.onDidFocusEditorText((()=>this._updateFromFocus()))),this._register(this._editor.onDidBlurEditorText((()=>this._updateFromFocus()))),this._register(this._editor.onDidChangeModel((()=>this._updateFromModel()))),this._register(this._editor.onDidChangeConfiguration((()=>this._updateFromModel()))),this._updateFromConfig(),this._updateFromSelection(),this._updateFromFocus(),this._updateFromModel(),this._editorSimpleInput.set(this._editor.isSimpleWidget)}_updateFromConfig(){const e=this._editor.getOptions();this._editorTabMovesFocus.set(e.get(116)),this._editorReadonly.set(e.get(72)),this._editorColumnSelection.set(e.get(13))}_updateFromSelection(){const e=this._editor.getSelections();e?(this._hasMultipleSelections.set(e.length>1),this._hasNonEmptySelection.set(e.some((e=>!e.isEmpty())))):(this._hasMultipleSelections.reset(),this._hasNonEmptySelection.reset())}_updateFromFocus(){this._editorFocus.set(this._editor.hasWidgetFocus()&&!this._editor.isSimpleWidget),this._editorTextFocus.set(this._editor.hasTextFocus()&&!this._editor.isSimpleWidget),this._textInputFocus.set(this._editor.hasTextFocus())}_updateFromModel(){const e=this._editor.getModel();this._canUndo.set(Boolean(e&&e.canUndo())),this._canRedo.set(Boolean(e&&e.canRedo()))}}class jn extends a.JT{constructor(e,t){super(),this._editor=e,this._contextKeyService=t,this._langId=Fi.u.languageId.bindTo(t),this._hasCompletionItemProvider=Fi.u.hasCompletionItemProvider.bindTo(t),this._hasCodeActionsProvider=Fi.u.hasCodeActionsProvider.bindTo(t),this._hasCodeLensProvider=Fi.u.hasCodeLensProvider.bindTo(t),this._hasDefinitionProvider=Fi.u.hasDefinitionProvider.bindTo(t),this._hasDeclarationProvider=Fi.u.hasDeclarationProvider.bindTo(t),this._hasImplementationProvider=Fi.u.hasImplementationProvider.bindTo(t),this._hasTypeDefinitionProvider=Fi.u.hasTypeDefinitionProvider.bindTo(t),this._hasHoverProvider=Fi.u.hasHoverProvider.bindTo(t),this._hasDocumentHighlightProvider=Fi.u.hasDocumentHighlightProvider.bindTo(t),this._hasDocumentSymbolProvider=Fi.u.hasDocumentSymbolProvider.bindTo(t),this._hasReferenceProvider=Fi.u.hasReferenceProvider.bindTo(t),this._hasRenameProvider=Fi.u.hasRenameProvider.bindTo(t),this._hasSignatureHelpProvider=Fi.u.hasSignatureHelpProvider.bindTo(t),this._hasDocumentFormattingProvider=Fi.u.hasDocumentFormattingProvider.bindTo(t),this._hasDocumentSelectionFormattingProvider=Fi.u.hasDocumentSelectionFormattingProvider.bindTo(t),this._hasMultipleDocumentFormattingProvider=Fi.u.hasMultipleDocumentFormattingProvider.bindTo(t),this._hasMultipleDocumentSelectionFormattingProvider=Fi.u.hasMultipleDocumentSelectionFormattingProvider.bindTo(t),this._isInWalkThrough=Fi.u.isInWalkThroughSnippet.bindTo(t);const i=()=>this._update();this._register(e.onDidChangeModel(i)),this._register(e.onDidChangeModelLanguage(i)),this._register(gt.KZ.onDidChange(i)),this._register(gt.H9.onDidChange(i)),this._register(gt.He.onDidChange(i)),this._register(gt.Ct.onDidChange(i)),this._register(gt.RN.onDidChange(i)),this._register(gt.vI.onDidChange(i)),this._register(gt.tA.onDidChange(i)),this._register(gt.xp.onDidChange(i)),this._register(gt.vH.onDidChange(i)),this._register(gt.vJ.onDidChange(i)),this._register(gt.FL.onDidChange(i)),this._register(gt.G0.onDidChange(i)),this._register(gt.Az.onDidChange(i)),this._register(gt.vN.onDidChange(i)),this._register(gt.nD.onDidChange(i)),i()}dispose(){super.dispose()}reset(){this._contextKeyService.bufferChangeEvents((()=>{this._langId.reset(),this._hasCompletionItemProvider.reset(),this._hasCodeActionsProvider.reset(),this._hasCodeLensProvider.reset(),this._hasDefinitionProvider.reset(),this._hasDeclarationProvider.reset(),this._hasImplementationProvider.reset(),this._hasTypeDefinitionProvider.reset(),this._hasHoverProvider.reset(),this._hasDocumentHighlightProvider.reset(),this._hasDocumentSymbolProvider.reset(),this._hasReferenceProvider.reset(),this._hasRenameProvider.reset(),this._hasDocumentFormattingProvider.reset(),this._hasDocumentSelectionFormattingProvider.reset(),this._hasSignatureHelpProvider.reset(),this._isInWalkThrough.reset()}))}_update(){const e=this._editor.getModel();e?this._contextKeyService.bufferChangeEvents((()=>{this._langId.set(e.getLanguageIdentifier().language),this._hasCompletionItemProvider.set(gt.KZ.has(e)),this._hasCodeActionsProvider.set(gt.H9.has(e)),this._hasCodeLensProvider.set(gt.He.has(e)),this._hasDefinitionProvider.set(gt.Ct.has(e)),this._hasDeclarationProvider.set(gt.RN.has(e)),this._hasImplementationProvider.set(gt.vI.has(e)),this._hasTypeDefinitionProvider.set(gt.tA.has(e)),this._hasHoverProvider.set(gt.xp.has(e)),this._hasDocumentHighlightProvider.set(gt.vH.has(e)),this._hasDocumentSymbolProvider.set(gt.vJ.has(e)),this._hasReferenceProvider.set(gt.FL.has(e)),this._hasRenameProvider.set(gt.G0.has(e)),this._hasSignatureHelpProvider.set(gt.nD.has(e)),this._hasDocumentFormattingProvider.set(gt.Az.has(e)||gt.vN.has(e)),this._hasDocumentSelectionFormattingProvider.set(gt.vN.has(e)),this._hasMultipleDocumentFormattingProvider.set(gt.Az.all(e).length+gt.vN.all(e).length>1),this._hasMultipleDocumentSelectionFormattingProvider.set(gt.vN.all(e).length>1),this._isInWalkThrough.set(e.uri.scheme===l.l.walkThroughSnippet)})):this.reset()}}class Vn extends a.JT{constructor(e){super(),this._onChange=this._register(new o.Q5),this.onChange=this._onChange.event,this._hasFocus=!1,this._domFocusTracker=this._register(r.go(e)),this._register(this._domFocusTracker.onDidFocus((()=>{this._hasFocus=!0,this._onChange.fire(void 0)}))),this._register(this._domFocusTracker.onDidBlur((()=>{this._hasFocus=!1,this._onChange.fire(void 0)})))}hasFocus(){return this._hasFocus}}const zn=encodeURIComponent("<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='"),Un=encodeURIComponent("'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>");function $n(e){return zn+encodeURIComponent(e.toString())+Un}const Kn=encodeURIComponent('<svg xmlns="http://www.w3.org/2000/svg" height="3" width="12"><g fill="'),qn=encodeURIComponent('"><circle cx="1" cy="1" r="1"/><circle cx="5" cy="1" r="1"/><circle cx="9" cy="1" r="1"/></g></svg>');(0,Y.Ic)(((e,t)=>{const i=e.getColor(mt.b6);i&&t.addRule(`.monaco-editor .squiggly-error { border-bottom: 4px double ${i}; }`);const n=e.getColor(mt.lX);n&&t.addRule(`.monaco-editor .squiggly-error { background: url("data:image/svg+xml,${$n(n)}") repeat-x bottom left; }`);const r=e.getColor(mt.pW);r&&t.addRule(`.monaco-editor .squiggly-warning { border-bottom: 4px double ${r}; }`);const s=e.getColor(mt.uo);s&&t.addRule(`.monaco-editor .squiggly-warning { background: url("data:image/svg+xml,${$n(s)}") repeat-x bottom left; }`);const o=e.getColor(mt.T8);o&&t.addRule(`.monaco-editor .squiggly-info { border-bottom: 4px double ${o}; }`);const a=e.getColor(mt.c6);a&&t.addRule(`.monaco-editor .squiggly-info { background: url("data:image/svg+xml,${$n(a)}") repeat-x bottom left; }`);const l=e.getColor(mt.fE);l&&t.addRule(`.monaco-editor .squiggly-hint { border-bottom: 2px dotted ${l}; }`);const c=e.getColor(mt.Du);c&&t.addRule(`.monaco-editor .squiggly-hint { background: url("data:image/svg+xml,${function(e){return Kn+encodeURIComponent(e.toString())+qn}(c)}") no-repeat bottom left; }`);const d=e.getColor(xe.zu);d&&t.addRule(`.monaco-editor.showUnused .squiggly-inline-unnecessary { opacity: ${d.rgba.a}; }`);const h=e.getColor(xe.kp);h&&t.addRule(`.monaco-editor.showUnused .squiggly-unnecessary { border-bottom: 2px dashed ${h}; }`);const u=e.getColor(mt.NO)||"inherit";t.addRule(`.monaco-editor.showDeprecated .squiggly-inline-deprecated { text-decoration: line-through; text-decoration-color: ${u}}`)}))},68143:(e,t,i)=>{"use strict";i.d(t,{pL:()=>ae});var n=i(63580),r=i(65321),s=i(38626),o=i(73098),a=i(15393),l=i(4669),c=i(5976),d=i(36248),h=i(89052),u=i(39925),g=i(11640),f=i(95190),p=i(90317),m=i(9802),_=i(74741),b=i(16830),v=i(64141),y=i(78411),w=i(50187),C=i(27869),S=i(77736),k=i(13824),x=i(38819),L=i(73910),M=i(97781),D=i(73046);class N{constructor(e,t,i,n){this.originalLineStart=e,this.originalLineEnd=t,this.modifiedLineStart=i,this.modifiedLineEnd=n}getType(){return 0===this.originalLineStart?1:0===this.modifiedLineStart?2:0}}class E{constructor(e){this.entries=e}}const T=(0,D.q5)("diff-review-insert",D.lA.add),I=(0,D.q5)("diff-review-remove",D.lA.remove),O=(0,D.q5)("diff-review-close",D.lA.close);class A extends c.JT{constructor(e){super(),this._width=0,this._diffEditor=e,this._isVisible=!1,this.shadow=(0,s.X)(document.createElement("div")),this.shadow.setClassName("diff-review-shadow"),this.actionBarContainer=(0,s.X)(document.createElement("div")),this.actionBarContainer.setClassName("diff-review-actions"),this._actionBar=this._register(new p.o(this.actionBarContainer.domNode)),this._actionBar.push(new _.aU("diffreview.close",n.N("label.close","Close"),"close-diff-review "+O.classNames,!0,(()=>(this.hide(),Promise.resolve(null)))),{label:!1,icon:!0}),this.domNode=(0,s.X)(document.createElement("div")),this.domNode.setClassName("diff-review monaco-editor-background"),this._content=(0,s.X)(document.createElement("div")),this._content.setClassName("diff-review-content"),this._content.setAttribute("role","code"),this.scrollbar=this._register(new m.s$(this._content.domNode,{})),this.domNode.domNode.appendChild(this.scrollbar.getDomNode()),this._register(e.onDidUpdateDiff((()=>{this._isVisible&&(this._diffs=this._compute(),this._render())}))),this._register(e.getModifiedEditor().onDidChangeCursorPosition((()=>{this._isVisible&&this._render()}))),this._register(r.mu(this.domNode.domNode,"click",(e=>{e.preventDefault();let t=r.Fx(e.target,"diff-review-row");t&&this._goToRow(t)}))),this._register(r.mu(this.domNode.domNode,"keydown",(e=>{(e.equals(18)||e.equals(2066)||e.equals(530))&&(e.preventDefault(),this._goToRow(this._getNextRow())),(e.equals(16)||e.equals(2064)||e.equals(528))&&(e.preventDefault(),this._goToRow(this._getPrevRow())),(e.equals(9)||e.equals(2057)||e.equals(521)||e.equals(1033))&&(e.preventDefault(),this.hide()),(e.equals(10)||e.equals(3))&&(e.preventDefault(),this.accept())}))),this._diffs=[],this._currentDiff=null}prev(){let e=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){let t=-1;for(let e=0,i=this._diffs.length;e<i;e++)if(this._diffs[e]===this._currentDiff){t=e;break}e=this._diffs.length+t-1}else e=this._findDiffIndex(this._diffEditor.getPosition());if(0===this._diffs.length)return;e%=this._diffs.length;const t=this._diffs[e].entries;this._diffEditor.setPosition(new w.L(t[0].modifiedLineStart,1)),this._diffEditor.setSelection({startColumn:1,startLineNumber:t[0].modifiedLineStart,endColumn:1073741824,endLineNumber:t[t.length-1].modifiedLineEnd}),this._isVisible=!0,this._diffEditor.doLayout(),this._render(),this._goToRow(this._getNextRow())}next(){let e=0;if(this._isVisible||(this._diffs=this._compute()),this._isVisible){let t=-1;for(let e=0,i=this._diffs.length;e<i;e++)if(this._diffs[e]===this._currentDiff){t=e;break}e=t+1}else e=this._findDiffIndex(this._diffEditor.getPosition());if(0===this._diffs.length)return;e%=this._diffs.length;const t=this._diffs[e].entries;this._diffEditor.setPosition(new w.L(t[0].modifiedLineStart,1)),this._diffEditor.setSelection({startColumn:1,startLineNumber:t[0].modifiedLineStart,endColumn:1073741824,endLineNumber:t[t.length-1].modifiedLineEnd}),this._isVisible=!0,this._diffEditor.doLayout(),this._render(),this._goToRow(this._getNextRow())}accept(){let e=-1,t=this._getCurrentFocusedRow();if(t){let i=parseInt(t.getAttribute("data-line"),10);isNaN(i)||(e=i)}this.hide(),-1!==e&&(this._diffEditor.setPosition(new w.L(e,1)),this._diffEditor.revealPosition(new w.L(e,1),1))}hide(){this._isVisible=!1,this._diffEditor.updateOptions({readOnly:!1}),this._diffEditor.focus(),this._diffEditor.doLayout(),this._render()}_getPrevRow(){let e=this._getCurrentFocusedRow();return e?e.previousElementSibling?e.previousElementSibling:e:this._getFirstRow()}_getNextRow(){let e=this._getCurrentFocusedRow();return e?e.nextElementSibling?e.nextElementSibling:e:this._getFirstRow()}_getFirstRow(){return this.domNode.domNode.querySelector(".diff-review-row")}_getCurrentFocusedRow(){let e=document.activeElement;return e&&/diff-review-row/.test(e.className)?e:null}_goToRow(e){let t=this._getCurrentFocusedRow();e.tabIndex=0,e.focus(),t&&t!==e&&(t.tabIndex=-1),this.scrollbar.scanDomNode()}isVisible(){return this._isVisible}layout(e,t,i){this._width=t,this.shadow.setTop(e-6),this.shadow.setWidth(t),this.shadow.setHeight(this._isVisible?6:0),this.domNode.setTop(e),this.domNode.setWidth(t),this.domNode.setHeight(i),this._content.setHeight(i),this._content.setWidth(t),this._isVisible?(this.actionBarContainer.setAttribute("aria-hidden","false"),this.actionBarContainer.setDisplay("block")):(this.actionBarContainer.setAttribute("aria-hidden","true"),this.actionBarContainer.setDisplay("none"))}_compute(){const e=this._diffEditor.getLineChanges();if(!e||0===e.length)return[];const t=this._diffEditor.getOriginalEditor().getModel(),i=this._diffEditor.getModifiedEditor().getModel();return t&&i?A._mergeAdjacent(e,t.getLineCount(),i.getLineCount()):[]}static _mergeAdjacent(e,t,i){if(!e||0===e.length)return[];let n=[],r=0;for(let s=0,o=e.length;s<o;s++){const a=e[s],l=a.originalStartLineNumber,c=a.originalEndLineNumber,d=a.modifiedStartLineNumber,h=a.modifiedEndLineNumber;let u=[],g=0;{const t=0===c?l:l-1,i=0===h?d:d-1;let n=1,r=1;if(s>0){const t=e[s-1];n=0===t.originalEndLineNumber?t.originalStartLineNumber+1:t.originalEndLineNumber+1,r=0===t.modifiedEndLineNumber?t.modifiedStartLineNumber+1:t.modifiedEndLineNumber+1}let o=t-3+1,a=i-3+1;if(o<n){const e=n-o;o+=e,a+=e}if(a<r){const e=r-a;o+=e,a+=e}u[g++]=new N(o,t,a,i)}0!==c&&(u[g++]=new N(l,c,0,0)),0!==h&&(u[g++]=new N(0,0,d,h));{const n=0===c?l+1:c+1,r=0===h?d+1:h+1;let a=t,f=i;if(s+1<o){const t=e[s+1];a=0===t.originalEndLineNumber?t.originalStartLineNumber:t.originalStartLineNumber-1,f=0===t.modifiedEndLineNumber?t.modifiedStartLineNumber:t.modifiedStartLineNumber-1}let p=n+3-1,m=r+3-1;if(p>a){const e=a-p;p+=e,m+=e}if(m>f){const e=f-m;p+=e,m+=e}u[g++]=new N(n,p,r,m)}n[r++]=new E(u)}let s=n[0].entries,o=[],a=0;for(let e=1,t=n.length;e<t;e++){const t=n[e].entries,i=s[s.length-1],r=t[0];0===i.getType()&&0===r.getType()&&r.originalLineStart<=i.originalLineEnd?(s[s.length-1]=new N(i.originalLineStart,r.originalLineEnd,i.modifiedLineStart,r.modifiedLineEnd),s=s.concat(t.slice(1))):(o[a++]=new E(s),s=t)}return o[a++]=new E(s),o}_findDiffIndex(e){const t=e.lineNumber;for(let e=0,i=this._diffs.length;e<i;e++){const i=this._diffs[e].entries;if(t<=i[i.length-1].modifiedLineEnd)return e}return 0}_render(){const e=this._diffEditor.getOriginalEditor().getOptions(),t=this._diffEditor.getModifiedEditor().getOptions(),i=this._diffEditor.getOriginalEditor().getModel(),s=this._diffEditor.getModifiedEditor().getModel(),o=i.getOptions(),a=s.getOptions();if(!this._isVisible||!i||!s)return r.PO(this._content.domNode),this._currentDiff=null,void this.scrollbar.scanDomNode();this._diffEditor.updateOptions({readOnly:!0});const l=this._findDiffIndex(this._diffEditor.getPosition());if(this._diffs[l]===this._currentDiff)return;this._currentDiff=this._diffs[l];const c=this._diffs[l].entries;let d=document.createElement("div");d.className="diff-review-table",d.setAttribute("role","list"),d.setAttribute("aria-label",'Difference review. Use "Stage | Unstage | Revert Selected Ranges" commands'),h.V.applyFontInfoSlow(d,t.get(36));let u=0,g=0,f=0,p=0;for(let e=0,t=c.length;e<t;e++){const t=c[e],i=t.originalLineStart,n=t.originalLineEnd,r=t.modifiedLineStart,s=t.modifiedLineEnd;0!==i&&(0===u||i<u)&&(u=i),0!==n&&(0===g||n>g)&&(g=n),0!==r&&(0===f||r<f)&&(f=r),0!==s&&(0===p||s>p)&&(p=s)}let m=document.createElement("div");m.className="diff-review-row";let _=document.createElement("div");_.className="diff-review-cell diff-review-summary";const b=g-u+1,v=p-f+1;_.appendChild(document.createTextNode(`${l+1}/${this._diffs.length}: @@ -${u},${b} +${f},${v} @@`)),m.setAttribute("data-line",String(f));const y=e=>0===e?n.N("no_lines_changed","no lines changed"):1===e?n.N("one_line_changed","1 line changed"):n.N("more_lines_changed","{0} lines changed",e),w=y(b),C=y(v);m.setAttribute("aria-label",n.N({key:"header",comment:["This is the ARIA label for a git diff header.","A git diff header looks like this: @@ -154,12 +159,39 @@.","That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.","Variables 0 and 1 refer to the diff index out of total number of diffs.","Variables 2 and 4 will be numbers (a line number).",'Variables 3 and 5 will be "no lines changed", "1 line changed" or "X lines changed", localized separately.']},"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}",l+1,this._diffs.length,u,w,f,C)),m.appendChild(_),m.setAttribute("role","listitem"),d.appendChild(m);const S=t.get(51);let k=f;for(let n=0,r=c.length;n<r;n++){const r=c[n];A._renderSection(d,r,k,S,this._width,e,i,o,t,s,a),0!==r.modifiedLineStart&&(k=r.modifiedLineEnd)}r.PO(this._content.domNode),this._content.domNode.appendChild(d),this.scrollbar.scanDomNode()}static _renderSection(e,t,i,r,s,o,a,l,c,d,h){const u=t.getType();let g="diff-review-row",f="",p=null;switch(u){case 1:g="diff-review-row line-insert",f=" char-insert",p=T;break;case 2:g="diff-review-row line-delete",f=" char-delete",p=I}const m=t.originalLineStart,_=t.originalLineEnd,b=t.modifiedLineStart,v=t.modifiedLineEnd,y=Math.max(v-b,_-m),w=o.get(117),C=w.glyphMarginWidth+w.lineNumbersWidth,S=c.get(117),k=10+S.glyphMarginWidth+S.lineNumbersWidth;for(let t=0;t<=y;t++){const _=0===m?0:m+t,v=0===b?0:b+t,y=document.createElement("div");y.style.minWidth=s+"px",y.className=g,y.setAttribute("role","listitem"),0!==v&&(i=v),y.setAttribute("data-line",String(i));let w=document.createElement("div");w.className="diff-review-cell",w.style.height=`${r}px`,y.appendChild(w);const S=document.createElement("span");S.style.width=C+"px",S.style.minWidth=C+"px",S.className="diff-review-line-number"+f,0!==_?S.appendChild(document.createTextNode(String(_))):S.innerText=" ",w.appendChild(S);const x=document.createElement("span");x.style.width=k+"px",x.style.minWidth=k+"px",x.style.paddingRight="10px",x.className="diff-review-line-number"+f,0!==v?x.appendChild(document.createTextNode(String(v))):x.innerText=" ",w.appendChild(x);const L=document.createElement("span");if(L.className="diff-review-spacer",p){const e=document.createElement("span");e.className=p.classNames,e.innerText="  ",L.appendChild(e)}else L.innerText="  ";let M;w.appendChild(L),0!==v?(w.insertAdjacentHTML("beforeend",this._renderLine(d,c,h.tabSize,v)),M=d.getLineContent(v)):(w.insertAdjacentHTML("beforeend",this._renderLine(a,o,l.tabSize,_)),M=a.getLineContent(_)),0===M.length&&(M=n.N("blankLine","blank"));let D="";switch(u){case 0:D=_===v?n.N({key:"unchangedLine",comment:["The placholders are contents of the line and should not be translated."]},"{0} unchanged line {1}",M,_):n.N("equalLine","{0} original line {1} modified line {2}",M,_,v);break;case 1:D=n.N("insertLine","+ {0} modified line {1}",M,v);break;case 2:D=n.N("deleteLine","- {0} original line {1}",M,_)}y.setAttribute("aria-label",D),e.appendChild(y)}}static _renderLine(e,t,i,n){const r=e.getLineContent(n),s=t.get(36),o=new Uint32Array(2);o[0]=r.length,o[1]=16793600;const a=new y.A(o,r),l=k.wA.isBasicASCII(r,e.mightContainNonBasicASCII()),c=k.wA.containsRTL(r,l,e.mightContainRTL());return(0,S.tF)(new S.IJ(s.isMonospace&&!t.get(24),s.canUseHalfwidthRightwardsArrow,r,!1,l,c,0,a,[],i,0,s.spaceWidth,s.middotWidth,s.wsmiddotWidth,t.get(95),t.get(80),t.get(74),t.get(37)!==v.n0.OFF,null)).html}}(0,M.Ic)(((e,t)=>{const i=e.getColor(C.hw);i&&t.addRule(`.monaco-diff-editor .diff-review-line-number { color: ${i}; }`);const n=e.getColor(L._w);n&&t.addRule(`.monaco-diff-editor .diff-review-shadow { box-shadow: ${n} 0 -6px 6px -6px inset; }`)}));class R extends b.R6{constructor(){super({id:"editor.action.diffReview.next",label:n.N("editor.action.diffReview.next","Go to Next Difference"),alias:"Go to Next Difference",precondition:x.Ao.has("isInDiffEditor"),kbOpts:{kbExpr:null,primary:65,weight:100}})}run(e,t){const i=F(e);i&&i.diffReviewNext()}}class P extends b.R6{constructor(){super({id:"editor.action.diffReview.prev",label:n.N("editor.action.diffReview.prev","Go to Previous Difference"),alias:"Go to Previous Difference",precondition:x.Ao.has("isInDiffEditor"),kbOpts:{kbExpr:null,primary:1089,weight:100}})}run(e,t){const i=F(e);i&&i.diffReviewPrev()}}function F(e){const t=e.get(g.$),i=t.listDiffEditors(),n=t.getActiveCodeEditor();if(!n)return null;for(let e=0,t=i.length;e<t;e++){const t=i[e];if(t.getModifiedEditor().getId()===n.getId()||t.getOriginalEditor().getId()===n.getId())return t}return null}(0,b.Qr)(R),(0,b.Qr)(P);var B=i(24314),W=i(50072),Y=i(96518),H=i(3411),j=i(90469),V=i(92003),z=i(92550),U=i(72065),$=i(60972),K=i(59422),q=i(5606),G=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class Z extends c.JT{constructor(e,t,i,s,o,a){super(),this._viewZoneId=e,this._marginDomNode=t,this.editor=i,this.diff=s,this._contextMenuService=o,this._clipboardService=a,this._visibility=!1,this._marginDomNode.style.zIndex="10",this._diffActions=document.createElement("div"),this._diffActions.className=D.lA.lightBulb.classNames+" lightbulb-glyph",this._diffActions.style.position="absolute";const l=i.getOption(51),c=i.getModel().getEOL();this._diffActions.style.right="0px",this._diffActions.style.visibility="hidden",this._diffActions.style.height=`${l}px`,this._diffActions.style.lineHeight=`${l}px`,this._marginDomNode.appendChild(this._diffActions);const d=[];d.push(new _.aU("diff.clipboard.copyDeletedContent",s.originalEndLineNumber>s.modifiedStartLineNumber?n.N("diff.clipboard.copyDeletedLinesContent.label","Copy deleted lines"):n.N("diff.clipboard.copyDeletedLinesContent.single.label","Copy deleted line"),void 0,!0,(()=>G(this,void 0,void 0,(function*(){yield this._clipboardService.writeText(s.originalContent.join(c)+c)})))));let h,u=0;s.originalEndLineNumber>s.modifiedStartLineNumber&&(h=new _.aU("diff.clipboard.copyDeletedLineContent",n.N("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",s.originalStartLineNumber),void 0,!0,(()=>G(this,void 0,void 0,(function*(){yield this._clipboardService.writeText(s.originalContent[u])})))),d.push(h)),i.getOption(72)||d.push(new _.aU("diff.inline.revertChange",n.N("diff.inline.revertChange.label","Revert this change"),void 0,!0,(()=>G(this,void 0,void 0,(function*(){if(0===s.modifiedEndLineNumber){const e=i.getModel().getLineMaxColumn(s.modifiedStartLineNumber);i.executeEdits("diffEditor",[{range:new B.e(s.modifiedStartLineNumber,e,s.modifiedStartLineNumber,e),text:c+s.originalContent.join(c)}])}else{const e=i.getModel().getLineMaxColumn(s.modifiedEndLineNumber);i.executeEdits("diffEditor",[{range:new B.e(s.modifiedStartLineNumber,1,s.modifiedEndLineNumber,e),text:s.originalContent.join(c)}])}})))));const g=(e,t)=>{this._contextMenuService.showContextMenu({getAnchor:()=>({x:e,y:t}),getActions:()=>(h&&(h.label=n.N("diff.clipboard.copyDeletedLineContent.label","Copy deleted line ({0})",s.originalStartLineNumber+u)),d),autoSelectFirstItem:!0})};this._register(r.mu(this._diffActions,"mousedown",(e=>{const{top:t,height:i}=r.i(this._diffActions);let n=Math.floor(l/3);e.preventDefault(),g(e.posx,t+i+n)}))),this._register(i.onMouseMove((e=>{(8===e.target.type||5===e.target.type)&&e.target.detail.viewZoneId===this._viewZoneId?(this.visibility=!0,u=this._updateLightBulbPosition(this._marginDomNode,e.event.browserEvent.y,l)):this.visibility=!1}))),this._register(i.onMouseDown((e=>{!e.event.rightButton||8!==e.target.type&&5!==e.target.type||e.target.detail.viewZoneId===this._viewZoneId&&(e.event.preventDefault(),u=this._updateLightBulbPosition(this._marginDomNode,e.event.browserEvent.y,l),g(e.event.posx,e.event.posy+l))})))}get visibility(){return this._visibility}set visibility(e){this._visibility!==e&&(this._visibility=e,this._diffActions.style.visibility=e?"visible":"hidden")}_updateLightBulbPosition(e,t,i){const{top:n}=r.i(e),s=t-n,o=Math.floor(s/i),a=o*i;return this._diffActions.style.top=`${a}px`,o}}var J=i(84972),Q=i(17301),X=i(90535),ee=i(54534),te=i(96542),ie=function(e,t){return function(i,n){t(i,n,e)}};class ne{constructor(e,t){this._contextMenuService=e,this._clipboardService=t,this._zones=[],this.inlineDiffMargins=[],this._zonesMap={},this._decorations=[]}getForeignViewZones(e){return e.filter((e=>!this._zonesMap[String(e.id)]))}clean(e){this._zones.length>0&&e.changeViewZones((e=>{for(let t=0,i=this._zones.length;t<i;t++)e.removeZone(this._zones[t])})),this._zones=[],this._zonesMap={},this._decorations=e.deltaDecorations(this._decorations,[])}apply(e,t,i,n){const r=n?u.ZF.capture(e):null;e.changeViewZones((t=>{for(let e=0,i=this._zones.length;e<i;e++)t.removeZone(this._zones[e]);for(let e=0,t=this.inlineDiffMargins.length;e<t;e++)this.inlineDiffMargins[e].dispose();this._zones=[],this._zonesMap={},this.inlineDiffMargins=[];for(let n=0,r=i.zones.length;n<r;n++){const r=i.zones[n];r.suppressMouseDown=!0;let s=t.addZone(r);this._zones.push(s),this._zonesMap[String(s)]=!0,i.zones[n].diff&&r.marginDomNode&&(r.suppressMouseDown=!1,this.inlineDiffMargins.push(new Z(s,r.marginDomNode,e,i.zones[n].diff,this._contextMenuService,this._clipboardService)))}})),r&&r.restore(e),this._decorations=e.deltaDecorations(this._decorations,i.decorations),t&&t.setZones(i.overviewZones)}}let re=0;const se=(0,D.q5)("diff-insert",D.lA.add),oe=(0,D.q5)("diff-remove",D.lA.remove);let ae=class e extends c.JT{constructor(t,i,n,o,c,d,h,u,g,f,p){super(),this._editorProgressService=p,this._onDidDispose=this._register(new l.Q5),this.onDidDispose=this._onDidDispose.event,this._onDidUpdateDiff=this._register(new l.Q5),this.onDidUpdateDiff=this._onDidUpdateDiff.event,this._onDidContentSizeChange=this._register(new l.Q5),this._lastOriginalWarning=null,this._lastModifiedWarning=null,this._editorWorkerService=o,this._codeEditorService=h,this._contextKeyService=this._register(c.createScoped(t)),this._contextKeyService.createKey("isInDiffEditor",!0),this._themeService=u,this._notificationService=g,this.id=++re,this._state=0,this._updatingDiffProgress=null,this._domElement=t,i=i||{},this._renderSideBySide=!0,void 0!==i.renderSideBySide&&(this._renderSideBySide=i.renderSideBySide),this._maxComputationTime=5e3,void 0!==i.maxComputationTime&&(this._maxComputationTime=i.maxComputationTime),this._ignoreTrimWhitespace=!0,void 0!==i.ignoreTrimWhitespace&&(this._ignoreTrimWhitespace=i.ignoreTrimWhitespace),this._renderIndicators=!0,void 0!==i.renderIndicators&&(this._renderIndicators=i.renderIndicators),this._originalIsEditable=!1,void 0!==i.originalEditable&&(this._originalIsEditable=Boolean(i.originalEditable)),this._originalCodeLens=!1,void 0!==i.originalCodeLens&&(this._originalCodeLens=Boolean(i.originalCodeLens)),this._modifiedCodeLens=!1,void 0!==i.modifiedCodeLens&&(this._modifiedCodeLens=Boolean(i.modifiedCodeLens)),this._updateDecorationsRunner=this._register(new a.pY((()=>this._updateDecorations()),0)),this._containerDomElement=document.createElement("div"),this._containerDomElement.className=e._getClassName(this._themeService.getColorTheme(),this._renderSideBySide),this._containerDomElement.style.position="relative",this._containerDomElement.style.height="100%",this._domElement.appendChild(this._containerDomElement),this._overviewViewportDomElement=(0,s.X)(document.createElement("div")),this._overviewViewportDomElement.setClassName("diffViewport"),this._overviewViewportDomElement.setPosition("absolute"),this._overviewDomElement=document.createElement("div"),this._overviewDomElement.className="diffOverview",this._overviewDomElement.style.position="absolute",this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode),this._register(r.mu(this._overviewDomElement,"mousedown",(e=>{this.modifiedEditor.delegateVerticalScrollbarMouseDown(e)}))),this._containerDomElement.appendChild(this._overviewDomElement),this._originalDomNode=document.createElement("div"),this._originalDomNode.className="editor original",this._originalDomNode.style.position="absolute",this._originalDomNode.style.height="100%",this._containerDomElement.appendChild(this._originalDomNode),this._modifiedDomNode=document.createElement("div"),this._modifiedDomNode.className="editor modified",this._modifiedDomNode.style.position="absolute",this._modifiedDomNode.style.height="100%",this._containerDomElement.appendChild(this._modifiedDomNode),this._beginUpdateDecorationsTimeout=-1,this._currentlyChangingViewZones=!1,this._diffComputationToken=0,this._originalEditorState=new ne(f,n),this._modifiedEditorState=new ne(f,n),this._isVisible=!0,this._isHandlingScrollEvent=!1,this._elementSizeObserver=this._register(new ee.I(this._containerDomElement,void 0,(()=>this._onDidContainerSizeChanged()))),i.automaticLayout&&this._elementSizeObserver.startObserving(),this._diffComputationResult=null;const m=this._contextKeyService.createScoped(),_=new $.y;_.set(x.i6,m);const v=d.createChild(_),y=this._contextKeyService.createScoped(),w=new $.y;w.set(x.i6,y);const C=d.createChild(w);this.originalEditor=this._createLeftHandSideEditor(i,v,m),this.modifiedEditor=this._createRightHandSideEditor(i,C,y),this._originalOverviewRuler=null,this._modifiedOverviewRuler=null,this._reviewPane=new A(this),this._containerDomElement.appendChild(this._reviewPane.domNode.domNode),this._containerDomElement.appendChild(this._reviewPane.shadow.domNode),this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode),this._enableSplitViewResizing=!0,void 0!==i.enableSplitViewResizing&&(this._enableSplitViewResizing=i.enableSplitViewResizing),this._renderSideBySide?this._setStrategy(new ge(this._createDataSource(),this._enableSplitViewResizing)):this._setStrategy(new pe(this._createDataSource(),this._enableSplitViewResizing)),this._register(u.onDidColorThemeChange((t=>{this._strategy&&this._strategy.applyColors(t)&&this._updateDecorationsRunner.schedule(),this._containerDomElement.className=e._getClassName(this._themeService.getColorTheme(),this._renderSideBySide)})));const S=b.Uc.getDiffEditorContributions();for(const e of S)try{this._register(d.createInstance(e.ctor,this))}catch(e){(0,Q.dL)(e)}this._codeEditorService.addDiffEditor(this)}_setState(e){this._state!==e&&(this._state=e,this._updatingDiffProgress&&(this._updatingDiffProgress.done(),this._updatingDiffProgress=null),1===this._state&&(this._updatingDiffProgress=this._editorProgressService.show(!0,1e3)))}diffReviewNext(){this._reviewPane.next()}diffReviewPrev(){this._reviewPane.prev()}static _getClassName(e,t){let i="monaco-diff-editor monaco-editor-background ";return t&&(i+="side-by-side "),i+=(0,M.m6)(e.type),i}_recreateOverviewRulers(){this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose()),this.originalEditor.hasModel()&&(this._originalOverviewRuler=this.originalEditor.createOverviewRuler("original diffOverviewRuler"),this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode())),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose()),this.modifiedEditor.hasModel()&&(this._modifiedOverviewRuler=this.modifiedEditor.createOverviewRuler("modified diffOverviewRuler"),this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode())),this._layoutOverviewRulers()}_createLeftHandSideEditor(t,i,n){const r=this._createInnerEditor(i,this._originalDomNode,this._adjustOptionsForLeftHandSide(t,this._originalIsEditable,this._originalCodeLens));this._register(r.onDidScrollChange((e=>{this._isHandlingScrollEvent||(e.scrollTopChanged||e.scrollLeftChanged||e.scrollHeightChanged)&&(this._isHandlingScrollEvent=!0,this.modifiedEditor.setScrollPosition({scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}),this._isHandlingScrollEvent=!1,this._layoutOverviewViewport())}))),this._register(r.onDidChangeViewZones((()=>{this._onViewZonesChanged()}))),this._register(r.onDidChangeModelContent((()=>{this._isVisible&&this._beginUpdateDecorationsSoon()})));const s=n.createKey("isInDiffLeftEditor",void 0);return this._register(r.onDidFocusEditorWidget((()=>s.set(!0)))),this._register(r.onDidBlurEditorWidget((()=>s.set(!1)))),this._register(r.onDidContentSizeChange((t=>{const i=this.originalEditor.getContentWidth()+this.modifiedEditor.getContentWidth()+e.ONE_OVERVIEW_WIDTH,n=Math.max(this.modifiedEditor.getContentHeight(),this.originalEditor.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:n,contentWidth:i,contentHeightChanged:t.contentHeightChanged,contentWidthChanged:t.contentWidthChanged})}))),r}_createRightHandSideEditor(t,i,n){const r=this._createInnerEditor(i,this._modifiedDomNode,this._adjustOptionsForRightHandSide(t,this._modifiedCodeLens));this._register(r.onDidScrollChange((e=>{this._isHandlingScrollEvent||(e.scrollTopChanged||e.scrollLeftChanged||e.scrollHeightChanged)&&(this._isHandlingScrollEvent=!0,this.originalEditor.setScrollPosition({scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}),this._isHandlingScrollEvent=!1,this._layoutOverviewViewport())}))),this._register(r.onDidChangeViewZones((()=>{this._onViewZonesChanged()}))),this._register(r.onDidChangeConfiguration((e=>{e.hasChanged(36)&&r.getModel()&&this._onViewZonesChanged()}))),this._register(r.onDidChangeModelContent((()=>{this._isVisible&&this._beginUpdateDecorationsSoon()}))),this._register(r.onDidChangeModelOptions((e=>{e.tabSize&&this._updateDecorationsRunner.schedule()})));const s=n.createKey("isInDiffRightEditor",void 0);return this._register(r.onDidFocusEditorWidget((()=>s.set(!0)))),this._register(r.onDidBlurEditorWidget((()=>s.set(!1)))),this._register(r.onDidContentSizeChange((t=>{const i=this.originalEditor.getContentWidth()+this.modifiedEditor.getContentWidth()+e.ONE_OVERVIEW_WIDTH,n=Math.max(this.modifiedEditor.getContentHeight(),this.originalEditor.getContentHeight());this._onDidContentSizeChange.fire({contentHeight:n,contentWidth:i,contentHeightChanged:t.contentHeightChanged,contentWidthChanged:t.contentWidthChanged})}))),r}_createInnerEditor(e,t,i){return e.createInstance(f.Gm,t,i,{})}dispose(){this._codeEditorService.removeDiffEditor(this),-1!==this._beginUpdateDecorationsTimeout&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1),this._cleanViewZonesAndDecorations(),this._originalOverviewRuler&&(this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode()),this._originalOverviewRuler.dispose()),this._modifiedOverviewRuler&&(this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode()),this._modifiedOverviewRuler.dispose()),this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode),this._containerDomElement.removeChild(this._overviewDomElement),this._containerDomElement.removeChild(this._originalDomNode),this.originalEditor.dispose(),this._containerDomElement.removeChild(this._modifiedDomNode),this.modifiedEditor.dispose(),this._strategy.dispose(),this._containerDomElement.removeChild(this._reviewPane.domNode.domNode),this._containerDomElement.removeChild(this._reviewPane.shadow.domNode),this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode),this._reviewPane.dispose(),this._domElement.removeChild(this._containerDomElement),this._onDidDispose.fire(),super.dispose()}getId(){return this.getEditorType()+":"+this.id}getEditorType(){return Y.g.IDiffEditor}getLineChanges(){return this._diffComputationResult?this._diffComputationResult.changes:null}getOriginalEditor(){return this.originalEditor}getModifiedEditor(){return this.modifiedEditor}updateOptions(t){let i=!1;void 0!==t.renderSideBySide&&this._renderSideBySide!==t.renderSideBySide&&(this._renderSideBySide=t.renderSideBySide,i=!0),void 0!==t.maxComputationTime&&(this._maxComputationTime=t.maxComputationTime,this._isVisible&&this._beginUpdateDecorationsSoon());let n=!1;void 0!==t.ignoreTrimWhitespace&&this._ignoreTrimWhitespace!==t.ignoreTrimWhitespace&&(this._ignoreTrimWhitespace=t.ignoreTrimWhitespace,n=!0),void 0!==t.renderIndicators&&this._renderIndicators!==t.renderIndicators&&(this._renderIndicators=t.renderIndicators,n=!0),n&&this._beginUpdateDecorations(),void 0!==t.originalEditable&&(this._originalIsEditable=Boolean(t.originalEditable)),void 0!==t.originalCodeLens&&(this._originalCodeLens=Boolean(t.originalCodeLens)),void 0!==t.modifiedCodeLens&&(this._modifiedCodeLens=Boolean(t.modifiedCodeLens)),this.modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(t,this._modifiedCodeLens)),this.originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(t,this._originalIsEditable,this._originalCodeLens)),void 0!==t.enableSplitViewResizing&&(this._enableSplitViewResizing=t.enableSplitViewResizing),this._strategy.setEnableSplitViewResizing(this._enableSplitViewResizing),i&&(this._renderSideBySide?this._setStrategy(new ge(this._createDataSource(),this._enableSplitViewResizing)):this._setStrategy(new pe(this._createDataSource(),this._enableSplitViewResizing)),this._containerDomElement.className=e._getClassName(this._themeService.getColorTheme(),this._renderSideBySide))}getModel(){return{original:this.originalEditor.getModel(),modified:this.modifiedEditor.getModel()}}setModel(e){if(e&&(!e.original||!e.modified))throw new Error(e.original?"DiffEditorWidget.setModel: Modified model is null":"DiffEditorWidget.setModel: Original model is null");this._cleanViewZonesAndDecorations(),this.originalEditor.setModel(e?e.original:null),this.modifiedEditor.setModel(e?e.modified:null),this._updateDecorationsRunner.cancel(),e&&(this.originalEditor.setScrollTop(0),this.modifiedEditor.setScrollTop(0)),this._diffComputationResult=null,this._diffComputationToken++,this._setState(0),e&&(this._recreateOverviewRulers(),this._beginUpdateDecorations()),this._layoutOverviewViewport()}getDomNode(){return this._domElement}getVisibleColumnFromPosition(e){return this.modifiedEditor.getVisibleColumnFromPosition(e)}getPosition(){return this.modifiedEditor.getPosition()}setPosition(e){this.modifiedEditor.setPosition(e)}revealLine(e,t=0){this.modifiedEditor.revealLine(e,t)}revealLineInCenter(e,t=0){this.modifiedEditor.revealLineInCenter(e,t)}revealLineInCenterIfOutsideViewport(e,t=0){this.modifiedEditor.revealLineInCenterIfOutsideViewport(e,t)}revealLineNearTop(e,t=0){this.modifiedEditor.revealLineNearTop(e,t)}revealPosition(e,t=0){this.modifiedEditor.revealPosition(e,t)}revealPositionInCenter(e,t=0){this.modifiedEditor.revealPositionInCenter(e,t)}revealPositionInCenterIfOutsideViewport(e,t=0){this.modifiedEditor.revealPositionInCenterIfOutsideViewport(e,t)}revealPositionNearTop(e,t=0){this.modifiedEditor.revealPositionNearTop(e,t)}getSelection(){return this.modifiedEditor.getSelection()}getSelections(){return this.modifiedEditor.getSelections()}setSelection(e){this.modifiedEditor.setSelection(e)}setSelections(e){this.modifiedEditor.setSelections(e)}revealLines(e,t,i=0){this.modifiedEditor.revealLines(e,t,i)}revealLinesInCenter(e,t,i=0){this.modifiedEditor.revealLinesInCenter(e,t,i)}revealLinesInCenterIfOutsideViewport(e,t,i=0){this.modifiedEditor.revealLinesInCenterIfOutsideViewport(e,t,i)}revealLinesNearTop(e,t,i=0){this.modifiedEditor.revealLinesNearTop(e,t,i)}revealRange(e,t=0,i=!1,n=!0){this.modifiedEditor.revealRange(e,t,i,n)}revealRangeInCenter(e,t=0){this.modifiedEditor.revealRangeInCenter(e,t)}revealRangeInCenterIfOutsideViewport(e,t=0){this.modifiedEditor.revealRangeInCenterIfOutsideViewport(e,t)}revealRangeNearTop(e,t=0){this.modifiedEditor.revealRangeNearTop(e,t)}revealRangeNearTopIfOutsideViewport(e,t=0){this.modifiedEditor.revealRangeNearTopIfOutsideViewport(e,t)}revealRangeAtTop(e,t=0){this.modifiedEditor.revealRangeAtTop(e,t)}getSupportedActions(){return this.modifiedEditor.getSupportedActions()}saveViewState(){return{original:this.originalEditor.saveViewState(),modified:this.modifiedEditor.saveViewState()}}restoreViewState(e){if(e.original&&e.modified){let t=e;this.originalEditor.restoreViewState(t.original),this.modifiedEditor.restoreViewState(t.modified)}}layout(e){this._elementSizeObserver.observe(e)}focus(){this.modifiedEditor.focus()}hasTextFocus(){return this.originalEditor.hasTextFocus()||this.modifiedEditor.hasTextFocus()}trigger(e,t,i){this.modifiedEditor.trigger(e,t,i)}changeDecorations(e){return this.modifiedEditor.changeDecorations(e)}_onDidContainerSizeChanged(){this._doLayout()}_getReviewHeight(){return this._reviewPane.isVisible()?this._elementSizeObserver.getHeight():0}_layoutOverviewRulers(){if(!this._originalOverviewRuler||!this._modifiedOverviewRuler)return;const t=this._elementSizeObserver.getHeight(),i=this._getReviewHeight();let n=e.ENTIRE_DIFF_OVERVIEW_WIDTH-2*e.ONE_OVERVIEW_WIDTH;this.modifiedEditor.getLayoutInfo()&&(this._originalOverviewRuler.setLayout({top:0,width:e.ONE_OVERVIEW_WIDTH,right:n+e.ONE_OVERVIEW_WIDTH,height:t-i}),this._modifiedOverviewRuler.setLayout({top:0,right:0,width:e.ONE_OVERVIEW_WIDTH,height:t-i}))}_onViewZonesChanged(){this._currentlyChangingViewZones||this._updateDecorationsRunner.schedule()}_beginUpdateDecorationsSoon(){-1!==this._beginUpdateDecorationsTimeout&&(window.clearTimeout(this._beginUpdateDecorationsTimeout),this._beginUpdateDecorationsTimeout=-1),this._beginUpdateDecorationsTimeout=window.setTimeout((()=>this._beginUpdateDecorations()),e.UPDATE_DIFF_DECORATIONS_DELAY)}static _equals(e,t){return!e&&!t||!(!e||!t)&&e.toString()===t.toString()}_beginUpdateDecorations(){this._beginUpdateDecorationsTimeout=-1;const t=this.originalEditor.getModel(),i=this.modifiedEditor.getModel();if(!t||!i)return;this._diffComputationToken++;let r=this._diffComputationToken;this._setState(1),this._editorWorkerService.canComputeDiff(t.uri,i.uri)?this._editorWorkerService.computeDiff(t.uri,i.uri,this._ignoreTrimWhitespace,this._maxComputationTime).then((e=>{r===this._diffComputationToken&&t===this.originalEditor.getModel()&&i===this.modifiedEditor.getModel()&&(this._setState(2),this._diffComputationResult=e,this._updateDecorationsRunner.schedule(),this._onDidUpdateDiff.fire())}),(e=>{r===this._diffComputationToken&&t===this.originalEditor.getModel()&&i===this.modifiedEditor.getModel()&&(this._setState(2),this._diffComputationResult=null,this._updateDecorationsRunner.schedule())})):e._equals(t.uri,this._lastOriginalWarning)&&e._equals(i.uri,this._lastModifiedWarning)||(this._lastOriginalWarning=t.uri,this._lastModifiedWarning=i.uri,this._notificationService.warn(n.N("diff.tooLarge","Cannot compare files because one file is too large.")))}_cleanViewZonesAndDecorations(){this._originalEditorState.clean(this.originalEditor),this._modifiedEditorState.clean(this.modifiedEditor)}_updateDecorations(){if(!(this.originalEditor.getModel()&&this.modifiedEditor.getModel()&&this._originalOverviewRuler&&this._modifiedOverviewRuler))return;const e=this._diffComputationResult?this._diffComputationResult.changes:[];let t=this._originalEditorState.getForeignViewZones(this.originalEditor.getWhitespaces()),i=this._modifiedEditorState.getForeignViewZones(this.modifiedEditor.getWhitespaces()),n=this._strategy.getEditorsDiffDecorations(e,this._ignoreTrimWhitespace,this._renderIndicators,t,i,this.originalEditor,this.modifiedEditor);try{this._currentlyChangingViewZones=!0,this._originalEditorState.apply(this.originalEditor,this._originalOverviewRuler,n.original,!1),this._modifiedEditorState.apply(this.modifiedEditor,this._modifiedOverviewRuler,n.modified,!0)}finally{this._currentlyChangingViewZones=!1}}_adjustOptionsForSubEditor(e){let t=d.I8(e||{});return t.inDiffEditor=!0,t.wordWrap="off",t.wordWrapMinified=!1,t.automaticLayout=!1,t.scrollbar=t.scrollbar||{},t.scrollbar.vertical="visible",t.folding=!1,t.codeLens=!1,t.fixedOverflowWidgets=!0,t.overflowWidgetsDomNode=e.overflowWidgetsDomNode,t.minimap||(t.minimap={}),t.minimap.enabled=!1,t}_adjustOptionsForLeftHandSide(e,t,i){let n=this._adjustOptionsForSubEditor(e);return i&&(n.codeLens=!0),n.readOnly=!t,n.extraEditorClassName="original-in-monaco-diff-editor",n}_adjustOptionsForRightHandSide(t,i){let n=this._adjustOptionsForSubEditor(t);return i&&(n.codeLens=!0),n.revealHorizontalRightPadding=v.BH.revealHorizontalRightPadding.defaultValue+e.ENTIRE_DIFF_OVERVIEW_WIDTH,n.scrollbar.verticalHasArrows=!1,n.extraEditorClassName="modified-in-monaco-diff-editor",n}doLayout(){this._elementSizeObserver.observe(),this._doLayout()}_doLayout(){const t=this._elementSizeObserver.getWidth(),i=this._elementSizeObserver.getHeight(),n=this._getReviewHeight();let r=this._strategy.layout();this._originalDomNode.style.width=r+"px",this._originalDomNode.style.left="0px",this._modifiedDomNode.style.width=t-r+"px",this._modifiedDomNode.style.left=r+"px",this._overviewDomElement.style.top="0px",this._overviewDomElement.style.height=i-n+"px",this._overviewDomElement.style.width=e.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._overviewDomElement.style.left=t-e.ENTIRE_DIFF_OVERVIEW_WIDTH+"px",this._overviewViewportDomElement.setWidth(e.ENTIRE_DIFF_OVERVIEW_WIDTH),this._overviewViewportDomElement.setHeight(30),this.originalEditor.layout({width:r,height:i-n}),this.modifiedEditor.layout({width:t-r-e.ENTIRE_DIFF_OVERVIEW_WIDTH,height:i-n}),(this._originalOverviewRuler||this._modifiedOverviewRuler)&&this._layoutOverviewRulers(),this._reviewPane.layout(i-n,t,n),this._layoutOverviewViewport()}_layoutOverviewViewport(){let e=this._computeOverviewViewport();e?(this._overviewViewportDomElement.setTop(e.top),this._overviewViewportDomElement.setHeight(e.height)):(this._overviewViewportDomElement.setTop(0),this._overviewViewportDomElement.setHeight(0))}_computeOverviewViewport(){let e=this.modifiedEditor.getLayoutInfo();if(!e)return null;let t=this.modifiedEditor.getScrollTop(),i=this.modifiedEditor.getScrollHeight(),n=Math.max(0,e.height),r=Math.max(0,n-0),s=i>0?r/i:0;return{height:Math.max(0,Math.floor(e.height*s)),top:Math.floor(t*s)}}_createDataSource(){return{getWidth:()=>this._elementSizeObserver.getWidth(),getHeight:()=>this._elementSizeObserver.getHeight()-this._getReviewHeight(),getContainerDomNode:()=>this._containerDomElement,relayoutEditors:()=>{this._doLayout()},getOriginalEditor:()=>this.originalEditor,getModifiedEditor:()=>this.modifiedEditor}}_setStrategy(e){this._strategy&&this._strategy.dispose(),this._strategy=e,e.applyColors(this._themeService.getColorTheme()),this._diffComputationResult&&this._updateDecorations(),this._doLayout()}_getLineChangeAtOrBeforeLineNumber(e,t){const i=this._diffComputationResult?this._diffComputationResult.changes:[];if(0===i.length||e<t(i[0]))return null;let n=0,r=i.length-1;for(;n<r;){let s=Math.floor((n+r)/2),o=t(i[s]),a=s+1<=r?t(i[s+1]):1073741824;e<o?r=s-1:e>=a?n=s+1:(n=s,r=s)}return i[n]}_getEquivalentLineForOriginalLineNumber(e){let t=this._getLineChangeAtOrBeforeLineNumber(e,(e=>e.originalStartLineNumber));if(!t)return e;let i=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),n=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),r=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,s=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,o=e-i;return o<=r?n+Math.min(o,s):n+s-r+o}_getEquivalentLineForModifiedLineNumber(e){let t=this._getLineChangeAtOrBeforeLineNumber(e,(e=>e.modifiedStartLineNumber));if(!t)return e;let i=t.originalStartLineNumber+(t.originalEndLineNumber>0?-1:0),n=t.modifiedStartLineNumber+(t.modifiedEndLineNumber>0?-1:0),r=t.originalEndLineNumber>0?t.originalEndLineNumber-t.originalStartLineNumber+1:0,s=t.modifiedEndLineNumber>0?t.modifiedEndLineNumber-t.modifiedStartLineNumber+1:0,o=e-n;return o<=s?i+Math.min(o,r):i+r-s+o}getDiffLineInformationForOriginal(e){return this._diffComputationResult?{equivalentLineNumber:this._getEquivalentLineForOriginalLineNumber(e)}:null}getDiffLineInformationForModified(e){return this._diffComputationResult?{equivalentLineNumber:this._getEquivalentLineForModifiedLineNumber(e)}:null}};ae.ONE_OVERVIEW_WIDTH=15,ae.ENTIRE_DIFF_OVERVIEW_WIDTH=30,ae.UPDATE_DIFF_DECORATIONS_DELAY=200,ae=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([ie(2,J.p),ie(3,j.p),ie(4,x.i6),ie(5,U.TG),ie(6,g.$),ie(7,M.XE),ie(8,K.lT),ie(9,q.i),ie(10,X.e)],ae);class le extends c.JT{constructor(e){super(),this._dataSource=e,this._insertColor=null,this._removeColor=null}applyColors(e){let t=(e.getColor(L.yp)||L.Cz).transparent(2),i=(e.getColor(L.P4)||L.ke).transparent(2),n=!t.equals(this._insertColor)||!i.equals(this._removeColor);return this._insertColor=t,this._removeColor=i,n}getEditorsDiffDecorations(e,t,i,n,r,s,o){r=r.sort(((e,t)=>e.afterLineNumber-t.afterLineNumber)),n=n.sort(((e,t)=>e.afterLineNumber-t.afterLineNumber));let a=this._getViewZones(e,n,r,s,o,i),l=this._getOriginalEditorDecorations(e,t,i,s,o),c=this._getModifiedEditorDecorations(e,t,i,s,o);return{original:{decorations:l.decorations,overviewZones:l.overviewZones,zones:a.original},modified:{decorations:c.decorations,overviewZones:c.overviewZones,zones:a.modified}}}}class ce{constructor(e){this._source=e,this._index=-1,this.current=null,this.advance()}advance(){this._index++,this._index<this._source.length?this.current=this._source[this._index]:this.current=null}}class de{constructor(e,t,i,n,r){this.lineChanges=e,this.originalForeignVZ=t,this.originalLineHeight=i,this.modifiedForeignVZ=n,this.modifiedLineHeight=r}getViewZones(){let e=[],t=[],i=0,n=0,r=0,s=0,o=0,a=0,l=(e,t)=>e.afterLineNumber-t.afterLineNumber,c=(e,t)=>{if(null===t.domNode&&e.length>0){let i=e[e.length-1];if(i.afterLineNumber===t.afterLineNumber&&null===i.domNode)return void(i.heightInLines+=t.heightInLines)}e.push(t)},d=new ce(this.modifiedForeignVZ),h=new ce(this.originalForeignVZ);for(let u=0,g=this.lineChanges.length;u<=g;u++){let f=u<g?this.lineChanges[u]:null;null!==f?(r=f.originalStartLineNumber+(f.originalEndLineNumber>0?-1:0),s=f.modifiedStartLineNumber+(f.modifiedEndLineNumber>0?-1:0),n=f.originalEndLineNumber>0?f.originalEndLineNumber-f.originalStartLineNumber+1:0,i=f.modifiedEndLineNumber>0?f.modifiedEndLineNumber-f.modifiedStartLineNumber+1:0,o=Math.max(f.originalStartLineNumber,f.originalEndLineNumber),a=Math.max(f.modifiedStartLineNumber,f.modifiedEndLineNumber)):(r+=1e7+n,s+=1e7+i,o=r,a=s);let p=[],m=[];for(;d.current&&d.current.afterLineNumber<=a;){let e;e=d.current.afterLineNumber<=s?r-s+d.current.afterLineNumber:o;let t=null;f&&f.modifiedStartLineNumber<=d.current.afterLineNumber&&d.current.afterLineNumber<=f.modifiedEndLineNumber&&(t=this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion()),p.push({afterLineNumber:e,heightInLines:d.current.height/this.modifiedLineHeight,domNode:null,marginDomNode:t}),d.advance()}for(;h.current&&h.current.afterLineNumber<=o;){let e;e=h.current.afterLineNumber<=r?s-r+h.current.afterLineNumber:a,m.push({afterLineNumber:e,heightInLines:h.current.height/this.originalLineHeight,domNode:null}),h.advance()}if(null!==f&&_e(f)){let e=this._produceOriginalFromDiff(f,n,i);e&&p.push(e)}if(null!==f&&be(f)){let e=this._produceModifiedFromDiff(f,n,i);e&&m.push(e)}let _=0,b=0;for(p=p.sort(l),m=m.sort(l);_<p.length&&b<m.length;){let i=p[_],n=m[b],o=i.afterLineNumber-r,a=n.afterLineNumber-s;o<a?(c(e,i),_++):a<o?(c(t,n),b++):i.shouldNotShrink?(c(e,i),_++):n.shouldNotShrink?(c(t,n),b++):i.heightInLines>=n.heightInLines?(i.heightInLines-=n.heightInLines,b++):(n.heightInLines-=i.heightInLines,_++)}for(;_<p.length;)c(e,p[_]),_++;for(;b<m.length;)c(t,m[b]),b++}return{original:de._ensureDomNodes(e),modified:de._ensureDomNodes(t)}}static _ensureDomNodes(e){return e.map((e=>(e.domNode||(e.domNode=function(){let e=document.createElement("div");return e.className="diagonal-fill",e}()),e)))}}function he(e,t,i,n,r){return{range:new B.e(e,t,i,n),options:r}}const ue={charDelete:H.qx.register({className:"char-delete"}),charDeleteWholeLine:H.qx.register({className:"char-delete",isWholeLine:!0}),charInsert:H.qx.register({className:"char-insert"}),charInsertWholeLine:H.qx.register({className:"char-insert",isWholeLine:!0}),lineInsert:H.qx.register({className:"line-insert",marginClassName:"line-insert",isWholeLine:!0}),lineInsertWithSign:H.qx.register({className:"line-insert",linesDecorationsClassName:"insert-sign "+se.classNames,marginClassName:"line-insert",isWholeLine:!0}),lineDelete:H.qx.register({className:"line-delete",marginClassName:"line-delete",isWholeLine:!0}),lineDeleteWithSign:H.qx.register({className:"line-delete",linesDecorationsClassName:"delete-sign "+oe.classNames,marginClassName:"line-delete",isWholeLine:!0}),lineDeleteMargin:H.qx.register({marginClassName:"line-delete"})};class ge extends le{constructor(e,t){super(e),this._disableSash=!1===t,this._sashRatio=null,this._sashPosition=null,this._startSashPosition=null,this._sash=this._register(new o.g(this._dataSource.getContainerDomNode(),this,{orientation:0})),this._disableSash&&(this._sash.state=0),this._sash.onDidStart((()=>this.onSashDragStart())),this._sash.onDidChange((e=>this.onSashDrag(e))),this._sash.onDidEnd((()=>this.onSashDragEnd())),this._sash.onDidReset((()=>this.onSashReset()))}setEnableSplitViewResizing(e){let t=!1===e;this._disableSash!==t&&(this._disableSash=t,this._sash.state=this._disableSash?0:3)}layout(e=this._sashRatio){let t=this._dataSource.getWidth()-ae.ENTIRE_DIFF_OVERVIEW_WIDTH,i=Math.floor((e||.5)*t),n=Math.floor(.5*t);return i=this._disableSash?n:i||n,t>2*ge.MINIMUM_EDITOR_WIDTH?(i<ge.MINIMUM_EDITOR_WIDTH&&(i=ge.MINIMUM_EDITOR_WIDTH),i>t-ge.MINIMUM_EDITOR_WIDTH&&(i=t-ge.MINIMUM_EDITOR_WIDTH)):i=n,this._sashPosition!==i&&(this._sashPosition=i,this._sash.layout()),this._sashPosition}onSashDragStart(){this._startSashPosition=this._sashPosition}onSashDrag(e){let t=this._dataSource.getWidth()-ae.ENTIRE_DIFF_OVERVIEW_WIDTH,i=this.layout((this._startSashPosition+(e.currentX-e.startX))/t);this._sashRatio=i/t,this._dataSource.relayoutEditors()}onSashDragEnd(){this._sash.layout()}onSashReset(){this._sashRatio=.5,this._dataSource.relayoutEditors(),this._sash.layout()}getVerticalSashTop(e){return 0}getVerticalSashLeft(e){return this._sashPosition}getVerticalSashHeight(e){return this._dataSource.getHeight()}_getViewZones(e,t,i,n,r){return new fe(e,t,n.getOption(51),i,r.getOption(51)).getViewZones()}_getOriginalEditorDecorations(e,t,i,n,r){const s=String(this._removeColor);let o={decorations:[],overviewZones:[]},a=n.getModel();for(let n=0,r=e.length;n<r;n++){let r=e[n];if(be(r)&&(o.decorations.push({range:new B.e(r.originalStartLineNumber,1,r.originalEndLineNumber,1073741824),options:i?ue.lineDeleteWithSign:ue.lineDelete}),_e(r)&&r.charChanges||o.decorations.push(he(r.originalStartLineNumber,1,r.originalEndLineNumber,1073741824,ue.charDeleteWholeLine)),o.overviewZones.push(new V.EY(r.originalStartLineNumber,r.originalEndLineNumber,s)),r.charChanges))for(let e=0,i=r.charChanges.length;e<i;e++){let i=r.charChanges[e];if(be(i))if(t)for(let e=i.originalStartLineNumber;e<=i.originalEndLineNumber;e++){let t,n;t=e===i.originalStartLineNumber?i.originalStartColumn:a.getLineFirstNonWhitespaceColumn(e),n=e===i.originalEndLineNumber?i.originalEndColumn:a.getLineLastNonWhitespaceColumn(e),o.decorations.push(he(e,t,e,n,ue.charDelete))}else o.decorations.push(he(i.originalStartLineNumber,i.originalStartColumn,i.originalEndLineNumber,i.originalEndColumn,ue.charDelete))}}return o}_getModifiedEditorDecorations(e,t,i,n,r){const s=String(this._insertColor);let o={decorations:[],overviewZones:[]},a=r.getModel();for(let n=0,r=e.length;n<r;n++){let r=e[n];if(_e(r)&&(o.decorations.push({range:new B.e(r.modifiedStartLineNumber,1,r.modifiedEndLineNumber,1073741824),options:i?ue.lineInsertWithSign:ue.lineInsert}),be(r)&&r.charChanges||o.decorations.push(he(r.modifiedStartLineNumber,1,r.modifiedEndLineNumber,1073741824,ue.charInsertWholeLine)),o.overviewZones.push(new V.EY(r.modifiedStartLineNumber,r.modifiedEndLineNumber,s)),r.charChanges))for(let e=0,i=r.charChanges.length;e<i;e++){let i=r.charChanges[e];if(_e(i))if(t)for(let e=i.modifiedStartLineNumber;e<=i.modifiedEndLineNumber;e++){let t,n;t=e===i.modifiedStartLineNumber?i.modifiedStartColumn:a.getLineFirstNonWhitespaceColumn(e),n=e===i.modifiedEndLineNumber?i.modifiedEndColumn:a.getLineLastNonWhitespaceColumn(e),o.decorations.push(he(e,t,e,n,ue.charInsert))}else o.decorations.push(he(i.modifiedStartLineNumber,i.modifiedStartColumn,i.modifiedEndLineNumber,i.modifiedEndColumn,ue.charInsert))}}return o}}ge.MINIMUM_EDITOR_WIDTH=100;class fe extends de{constructor(e,t,i,n,r){super(e,t,i,n,r)}_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion(){return null}_produceOriginalFromDiff(e,t,i){return i>t?{afterLineNumber:Math.max(e.originalStartLineNumber,e.originalEndLineNumber),heightInLines:i-t,domNode:null}:null}_produceModifiedFromDiff(e,t,i){return t>i?{afterLineNumber:Math.max(e.modifiedStartLineNumber,e.modifiedEndLineNumber),heightInLines:t-i,domNode:null}:null}}class pe extends le{constructor(e,t){super(e),this.decorationsLeft=e.getOriginalEditor().getLayoutInfo().decorationsLeft,this._register(e.getOriginalEditor().onDidLayoutChange((t=>{this.decorationsLeft!==t.decorationsLeft&&(this.decorationsLeft=t.decorationsLeft,e.relayoutEditors())})))}setEnableSplitViewResizing(e){}_getViewZones(e,t,i,n,r,s){return new me(e,t,i,n,r,s).getViewZones()}_getOriginalEditorDecorations(e,t,i,n,r){const s=String(this._removeColor);let o={decorations:[],overviewZones:[]};for(let t=0,i=e.length;t<i;t++){let i=e[t];be(i)&&(o.decorations.push({range:new B.e(i.originalStartLineNumber,1,i.originalEndLineNumber,1073741824),options:ue.lineDeleteMargin}),o.overviewZones.push(new V.EY(i.originalStartLineNumber,i.originalEndLineNumber,s)))}return o}_getModifiedEditorDecorations(e,t,i,n,r){const s=String(this._insertColor);let o={decorations:[],overviewZones:[]},a=r.getModel();for(let n=0,r=e.length;n<r;n++){let r=e[n];if(_e(r))if(o.decorations.push({range:new B.e(r.modifiedStartLineNumber,1,r.modifiedEndLineNumber,1073741824),options:i?ue.lineInsertWithSign:ue.lineInsert}),o.overviewZones.push(new V.EY(r.modifiedStartLineNumber,r.modifiedEndLineNumber,s)),r.charChanges)for(let e=0,i=r.charChanges.length;e<i;e++){let i=r.charChanges[e];if(_e(i))if(t)for(let e=i.modifiedStartLineNumber;e<=i.modifiedEndLineNumber;e++){let t,n;t=e===i.modifiedStartLineNumber?i.modifiedStartColumn:a.getLineFirstNonWhitespaceColumn(e),n=e===i.modifiedEndLineNumber?i.modifiedEndColumn:a.getLineLastNonWhitespaceColumn(e),o.decorations.push(he(e,t,e,n,ue.charInsert))}else o.decorations.push(he(i.modifiedStartLineNumber,i.modifiedStartColumn,i.modifiedEndLineNumber,i.modifiedEndColumn,ue.charInsert))}else o.decorations.push(he(r.modifiedStartLineNumber,1,r.modifiedEndLineNumber,1073741824,ue.charInsertWholeLine))}return o}layout(){return Math.max(5,this.decorationsLeft)}}class me extends de{constructor(e,t,i,n,r,s){super(e,t,n.getOption(51),i,r.getOption(51)),this.originalModel=n.getModel(),this.modifiedEditorOptions=r.getOptions(),this.modifiedEditorTabSize=r.getModel().getOptions().tabSize,this.renderIndicators=s}_createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion(){let e=document.createElement("div");return e.className="inline-added-margin-view-zone",e}_produceOriginalFromDiff(e,t,i){let n=document.createElement("div");return n.className="inline-added-margin-view-zone",{afterLineNumber:Math.max(e.originalStartLineNumber,e.originalEndLineNumber),heightInLines:i,domNode:document.createElement("div"),marginDomNode:n}}_produceModifiedFromDiff(e,t,i){let n=[];if(e.charChanges)for(let t=0,i=e.charChanges.length;t<i;t++){let i=e.charChanges[t];be(i)&&n.push(new k.$t(new B.e(i.originalStartLineNumber,i.originalStartColumn,i.originalEndLineNumber,i.originalEndColumn),"char-delete",0))}let r=(0,W.l$)(1e4),s=[];const o=this.modifiedEditorOptions.get(117),a=this.modifiedEditorOptions.get(36),l=o.decorationsWidth;let c=this.modifiedEditorOptions.get(51);const d=a.typicalHalfwidthCharacterWidth;let u=0;const g=[];for(let t=e.originalStartLineNumber;t<=e.originalEndLineNumber;t++)if(u=Math.max(u,this._renderOriginalLine(t-e.originalStartLineNumber,this.originalModel,this.modifiedEditorOptions,this.modifiedEditorTabSize,t,n,r)),g.push(this.originalModel.getLineContent(t)),this.renderIndicators){let i=t-e.originalStartLineNumber;s=s.concat([`<div class="delete-sign ${oe.classNames}" style="position:absolute;top:${i*c}px;width:${l}px;height:${c}px;right:0;"></div>`])}u+=this.modifiedEditorOptions.get(85);let f=document.createElement("div");f.className=`view-lines line-delete ${te.S}`,f.innerHTML=r.build(),h.V.applyFontInfoSlow(f,a);let p=document.createElement("div");return p.className="inline-deleted-margin-view-zone",p.innerHTML=s.join(""),h.V.applyFontInfoSlow(p,a),{shouldNotShrink:!0,afterLineNumber:0===e.modifiedEndLineNumber?e.modifiedStartLineNumber:e.modifiedStartLineNumber-1,heightInLines:t,minWidthInPx:u*d,domNode:f,marginDomNode:p,diff:{originalStartLineNumber:e.originalStartLineNumber,originalEndLineNumber:e.originalEndLineNumber,modifiedStartLineNumber:e.modifiedStartLineNumber,modifiedEndLineNumber:e.modifiedEndLineNumber,originalContent:g}}}_renderOriginalLine(e,t,i,n,r,s,o){const a=t.getLineTokens(r),l=a.getLineContent(),c=i.get(36),d=z.Kp.filter(s,r,1,l.length+1);o.appendASCIIString('<div class="view-line'),0===s.length&&o.appendASCIIString(" char-delete"),o.appendASCIIString('" style="top:'),o.appendASCIIString(String(e*i.get(51))),o.appendASCIIString('px;width:1000000px;">');const h=k.wA.isBasicASCII(l,t.mightContainNonBasicASCII()),u=k.wA.containsRTL(l,h,t.mightContainRTL()),g=(0,S.d1)(new S.IJ(c.isMonospace&&!i.get(24),c.canUseHalfwidthRightwardsArrow,l,!1,h,u,0,a,d,n,0,c.spaceWidth,c.middotWidth,c.wsmiddotWidth,i.get(95),i.get(80),i.get(74),i.get(37)!==v.n0.OFF,null),o);o.appendASCIIString("</div>");const f=g.characterMapping.getAbsoluteOffsets();return f.length>0?f[f.length-1]:0}}function _e(e){return e.modifiedEndLineNumber>0}function be(e){return e.originalEndLineNumber>0}(0,M.Ic)(((e,t)=>{const i=e.getColor(L.yp);i&&(t.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { background-color: ${i}; }`),t.addRule(`.monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: ${i}; }`),t.addRule(`.monaco-editor .inline-added-margin-view-zone { background-color: ${i}; }`));const n=e.getColor(L.P4);n&&(t.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { background-color: ${n}; }`),t.addRule(`.monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: ${n}; }`),t.addRule(`.monaco-editor .inline-deleted-margin-view-zone { background-color: ${n}; }`));const r=e.getColor(L.XL);r&&t.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ${"hc"===e.type?"dashed":"solid"} ${r}; }`);const s=e.getColor(L.mH);s&&t.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ${"hc"===e.type?"dashed":"solid"} ${s}; }`);const o=e.getColor(L._w);o&&t.addRule(`.monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ${o}; }`);const a=e.getColor(L.LL);a&&t.addRule(`.monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid ${a}; }`);const l=e.getColor(L.et);l&&t.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport {\n\t\t\t\tbackground: ${l};\n\t\t\t}\n\t\t`);const c=e.getColor(L.AB);c&&t.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:hover {\n\t\t\t\tbackground: ${c};\n\t\t\t}\n\t\t`);const d=e.getColor(L.yn);d&&t.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:active {\n\t\t\t\tbackground: ${d};\n\t\t\t}\n\t\t`);const h=e.getColor(L.L_);t.addRule(`\n\t.monaco-editor .diagonal-fill {\n\t\tbackground-image: linear-gradient(\n\t\t\t-45deg,\n\t\t\t${h} 12.5%,\n\t\t\t#0000 12.5%, #0000 50%,\n\t\t\t${h} 50%, ${h} 62.5%,\n\t\t\t#0000 62.5%, #0000 100%\n\t\t);\n\t\tbackground-size: 8px 8px;\n\t}\n\t`)}))},75623:(e,t,i)=>{"use strict";i.d(t,{F:()=>c});var n=i(35146),r=i(4669),s=i(5976),o=i(36248),a=i(24314);const l={followsCaret:!0,ignoreCharChanges:!0,alwaysRevealFirst:!0};class c extends s.JT{constructor(e,t={}){super(),this._onDidUpdate=this._register(new r.Q5),this._editor=e,this._options=o.jB(t,l,!1),this.disposed=!1,this.nextIdx=-1,this.ranges=[],this.ignoreSelectionChange=!1,this.revealFirst=Boolean(this._options.alwaysRevealFirst),this._register(this._editor.onDidDispose((()=>this.dispose()))),this._register(this._editor.onDidUpdateDiff((()=>this._onDiffUpdated()))),this._options.followsCaret&&this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition((e=>{this.ignoreSelectionChange||(this.nextIdx=-1)}))),this._options.alwaysRevealFirst&&this._register(this._editor.getModifiedEditor().onDidChangeModel((e=>{this.revealFirst=!0}))),this._init()}_init(){this._editor.getLineChanges()}_onDiffUpdated(){this._init(),this._compute(this._editor.getLineChanges()),this.revealFirst&&null!==this._editor.getLineChanges()&&(this.revealFirst=!1,this.nextIdx=-1,this.next(1))}_compute(e){this.ranges=[],e&&e.forEach((e=>{!this._options.ignoreCharChanges&&e.charChanges?e.charChanges.forEach((e=>{this.ranges.push({rhs:!0,range:new a.e(e.modifiedStartLineNumber,e.modifiedStartColumn,e.modifiedEndLineNumber,e.modifiedEndColumn)})})):this.ranges.push({rhs:!0,range:new a.e(e.modifiedStartLineNumber,1,e.modifiedStartLineNumber,1)})})),this.ranges.sort(((e,t)=>e.range.getStartPosition().isBeforeOrEqual(t.range.getStartPosition())?-1:t.range.getStartPosition().isBeforeOrEqual(e.range.getStartPosition())?1:0)),this._onDidUpdate.fire(this)}_initIdx(e){let t=!1,i=this._editor.getPosition();if(i){for(let n=0,r=this.ranges.length;n<r&&!t;n++){let r=this.ranges[n].range;i.isBeforeOrEqual(r.getStartPosition())&&(this.nextIdx=n+(e?0:-1),t=!0)}t||(this.nextIdx=e?0:this.ranges.length-1),this.nextIdx<0&&(this.nextIdx=this.ranges.length-1)}else this.nextIdx=0}_move(e,t){if(n.ok(!this.disposed,"Illegal State - diff navigator has been disposed"),!this.canNavigate())return;-1===this.nextIdx?this._initIdx(e):e?(this.nextIdx+=1,this.nextIdx>=this.ranges.length&&(this.nextIdx=0)):(this.nextIdx-=1,this.nextIdx<0&&(this.nextIdx=this.ranges.length-1));let i=this.ranges[this.nextIdx];this.ignoreSelectionChange=!0;try{let e=i.range.getStartPosition();this._editor.setPosition(e),this._editor.revealPositionInCenter(e,t)}finally{this.ignoreSelectionChange=!1}}canNavigate(){return this.ranges&&this.ranges.length>0}next(e=0){this._move(!0,e)}previous(e=0){this._move(!1,e)}dispose(){super.dispose(),this.ranges=[],this.disposed=!0}}},84527:(e,t,i)=>{"use strict";i.d(t,{H:()=>g});var n=i(36248),r=i(11640),s=i(95190),o=i(94565),a=i(38819),l=i(72065),c=i(59422),d=i(97781),h=i(31106),u=function(e,t){return function(i,n){t(i,n,e)}};let g=class extends s.Gm{constructor(e,t,i,n,r,s,o,a,l,c){super(e,Object.assign(Object.assign({},i.getRawOptions()),{overflowWidgetsDomNode:i.getOverflowWidgetsDomNode()}),{},n,r,s,o,a,l,c),this._parentEditor=i,this._overwriteOptions=t,super.updateOptions(this._overwriteOptions),this._register(i.onDidChangeConfiguration((e=>this._onParentConfigurationChanged(e))))}getParentEditor(){return this._parentEditor}_onParentConfigurationChanged(e){super.updateOptions(this._parentEditor.getRawOptions()),super.updateOptions(this._overwriteOptions)}updateOptions(e){n.jB(this._overwriteOptions,e,!0),super.updateOptions(this._overwriteOptions)}};g=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([u(3,l.TG),u(4,r.$),u(5,o.H),u(6,a.i6),u(7,d.XE),u(8,c.lT),u(9,h.F)],g)},61329:(e,t,i)=>{"use strict";i.d(t,{T4:()=>r,OY:()=>s,Sj:()=>o,Uo:()=>a,hP:()=>l});var n=i(3860);class r{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){let i=t.getInverseEditOperations()[0].range;return new n.Y(i.endLineNumber,i.endColumn,i.endLineNumber,i.endColumn)}}class s{constructor(e,t){this._range=e,this._text=t}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return new n.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)}}class o{constructor(e,t,i=!1){this._range=e,this._text=t,this.insertsAutoWhitespace=i}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){let i=t.getInverseEditOperations()[0].range;return new n.Y(i.startLineNumber,i.startColumn,i.startLineNumber,i.startColumn)}}class a{constructor(e,t,i,n,r=!1){this._range=e,this._text=t,this._columnDeltaOffset=n,this._lineNumberDeltaOffset=i,this.insertsAutoWhitespace=r}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text)}computeCursorState(e,t){let i=t.getInverseEditOperations()[0].range;return new n.Y(i.endLineNumber+this._lineNumberDeltaOffset,i.endColumn+this._columnDeltaOffset,i.endLineNumber+this._lineNumberDeltaOffset,i.endColumn+this._columnDeltaOffset)}}class l{constructor(e,t,i,n=!1){this._range=e,this._text=t,this._initialSelection=i,this._forceMoveMarkers=n,this._selectionId=null}getEditOperations(e,t){t.addTrackedEditOperation(this._range,this._text,this._forceMoveMarkers),this._selectionId=t.trackSelection(this._initialSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}},10291:(e,t,i)=>{"use strict";i.d(t,{U:()=>d});var n=i(97295),r=i(33181),s=i(24314),o=i(3860),a=i(83831);const l=Object.create(null);function c(e,t){l[e]||(l[e]=["",e]);const i=l[e];for(let n=i.length;n<=t;n++)i[n]=i[n-1]+e;return i[t]}class d{constructor(e,t){this._opts=t,this._selection=e,this._selectionId=null,this._useLastEditRangeForCursorEndPosition=!1,this._selectionStartColumnStaysPut=!1}static unshiftIndent(e,t,i,n,s){const o=r.io.visibleColumnFromColumn(e,t,i);if(s){const e=c(" ",n);return c(e,r.io.prevIndentTabStop(o,n)/n)}return c("\t",r.io.prevRenderTabStop(o,i)/i)}static shiftIndent(e,t,i,n,s){const o=r.io.visibleColumnFromColumn(e,t,i);if(s){const e=c(" ",n);return c(e,r.io.nextIndentTabStop(o,n)/n)}return c("\t",r.io.nextRenderTabStop(o,i)/i)}_addEditOperation(e,t,i){this._useLastEditRangeForCursorEndPosition?e.addTrackedEditOperation(t,i):e.addEditOperation(t,i)}getEditOperations(e,t){const i=this._selection.startLineNumber;let o=this._selection.endLineNumber;1===this._selection.endColumn&&i!==o&&(o-=1);const{tabSize:l,indentSize:h,insertSpaces:u}=this._opts,g=i===o;if(this._opts.useTabStops){this._selection.isEmpty()&&/^\s*$/.test(e.getLineContent(i))&&(this._useLastEditRangeForCursorEndPosition=!0);let c=0,f=0;for(let p=i;p<=o;p++,c=f){f=0;let o,m=e.getLineContent(p),_=n.LC(m);if((!this._opts.isUnshift||0!==m.length&&0!==_)&&(g||this._opts.isUnshift||0!==m.length)){if(-1===_&&(_=m.length),p>1&&r.io.visibleColumnFromColumn(m,_+1,l)%h!=0&&e.isCheapToTokenize(p-1)){let t=a.zu.getEnterAction(this._opts.autoIndent,e,new s.e(p-1,e.getLineMaxColumn(p-1),p-1,e.getLineMaxColumn(p-1)));if(t){if(f=c,t.appendText)for(let e=0,i=t.appendText.length;e<i&&f<h&&32===t.appendText.charCodeAt(e);e++)f++;t.removeText&&(f=Math.max(0,f-t.removeText));for(let e=0;e<f&&0!==_&&32===m.charCodeAt(_-1);e++)_--}}this._opts.isUnshift&&0===_||(o=this._opts.isUnshift?d.unshiftIndent(m,_+1,l,h,u):d.shiftIndent(m,_+1,l,h,u),this._addEditOperation(t,new s.e(p,1,p,_+1),o),p!==i||this._selection.isEmpty()||(this._selectionStartColumnStaysPut=this._selection.startColumn<=_+1))}}}else{!this._opts.isUnshift&&this._selection.isEmpty()&&0===e.getLineLength(i)&&(this._useLastEditRangeForCursorEndPosition=!0);const r=u?c(" ",h):"\t";for(let a=i;a<=o;a++){const o=e.getLineContent(a);let l=n.LC(o);if((!this._opts.isUnshift||0!==o.length&&0!==l)&&(g||this._opts.isUnshift||0!==o.length)&&(-1===l&&(l=o.length),!this._opts.isUnshift||0!==l))if(this._opts.isUnshift){l=Math.min(l,h);for(let e=0;e<l;e++)if(9===o.charCodeAt(e)){l=e+1;break}this._addEditOperation(t,new s.e(a,1,a,l+1),"")}else this._addEditOperation(t,new s.e(a,1,a,1),r),a!==i||this._selection.isEmpty()||(this._selectionStartColumnStaysPut=1===this._selection.startColumn)}}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){if(this._useLastEditRangeForCursorEndPosition){let e=t.getInverseEditOperations()[0];return new o.Y(e.range.endLineNumber,e.range.endColumn,e.range.endLineNumber,e.range.endColumn)}const i=t.getTrackedSelection(this._selectionId);if(this._selectionStartColumnStaysPut){let e=this._selection.startColumn;return i.startColumn<=e?i:0===i.getDirection()?new o.Y(i.startLineNumber,e,i.endLineNumber,i.endColumn):new o.Y(i.endLineNumber,i.endColumn,i.startLineNumber,e)}return i}}},56345:(e,t,i)=>{"use strict";i.d(t,{nG:()=>f,fv:()=>y,ei:()=>M,Pe:()=>D});var n=i(63580),r=i(4669),s=i(5976),o=i(36248),a=i(9488),l=i(64141),c=i(82334),d=i(27374),h=i(23193),u=i(89872),g=i(6626);const f=new class{constructor(){this._tabFocus=!1,this._onDidChangeTabFocus=new r.Q5,this.onDidChangeTabFocus=this._onDidChangeTabFocus.event}getTabFocusMode(){return this._tabFocus}setTabFocusMode(e){this._tabFocus!==e&&(this._tabFocus=e,this._onDidChangeTabFocus.fire(this._tabFocus))}},p=Object.hasOwnProperty;class m{constructor(){this._values=[]}_read(e){return this._values[e]}get(e){return this._values[e]}_write(e,t){this._values[e]=t}}class _{constructor(){this._values=[]}_read(e){return this._values[e]}_write(e,t){this._values[e]=t}}class b{static readOptions(e){const t=e,i=new _;for(const e of l.Bc){const n="_never_"===e.name?void 0:t[e.name];i._write(e.id,n)}return i}static validateOptions(e){const t=new l.hu;for(const i of l.Bc)t._write(i.id,i.validate(e._read(i.id)));return t}static computeOptions(e,t){const i=new m;for(const n of l.Bc)i._write(n.id,n.compute(t,i,e._read(n.id)));return i}static _deepEquals(e,t){if("object"!=typeof e||"object"!=typeof t)return e===t;if(Array.isArray(e)||Array.isArray(t))return!(!Array.isArray(e)||!Array.isArray(t))&&a.fS(e,t);for(let i in e)if(!b._deepEquals(e[i],t[i]))return!1;return!0}static checkEquals(e,t){const i=[];let n=!1;for(const r of l.Bc){const s=!b._deepEquals(e._read(r.id),t._read(r.id));i[r.id]=s,s&&(n=!0)}return n?new l.Bb(i):null}}function v(e){const t=o.I8(e);return function(e){const t=e.wordWrap;!0===t?e.wordWrap="on":!1===t&&(e.wordWrap="off");const i=e.lineNumbers;!0===i?e.lineNumbers="on":!1===i&&(e.lineNumbers="off"),!1===e.autoClosingBrackets&&(e.autoClosingBrackets="never",e.autoClosingQuotes="never",e.autoSurround="never"),"visible"===e.cursorBlinking&&(e.cursorBlinking="solid");const n=e.renderWhitespace;!0===n?e.renderWhitespace="boundary":!1===n&&(e.renderWhitespace="none");const r=e.renderLineHighlight;!0===r?e.renderLineHighlight="line":!1===r&&(e.renderLineHighlight="none");const s=e.acceptSuggestionOnEnter;!0===s?e.acceptSuggestionOnEnter="on":!1===s&&(e.acceptSuggestionOnEnter="off");const o=e.tabCompletion;!1===o?e.tabCompletion="off":!0===o&&(e.tabCompletion="onlySnippets");const a=e.suggest;if(a&&"object"==typeof a.filteredTypes&&a.filteredTypes){const e={method:"showMethods",function:"showFunctions",constructor:"showConstructors",field:"showFields",variable:"showVariables",class:"showClasses",struct:"showStructs",interface:"showInterfaces",module:"showModules",property:"showProperties",event:"showEvents",operator:"showOperators",unit:"showUnits",value:"showValues",constant:"showConstants",enum:"showEnums",enumMember:"showEnumMembers",keyword:"showKeywords",text:"showWords",color:"showColors",file:"showFiles",reference:"showReferences",folder:"showFolders",typeParameter:"showTypeParameters",snippet:"showSnippets"};(0,g.E)(e,(e=>{const t=a.filteredTypes[e.key];!1===t&&(a[e.value]=t)}))}const l=e.hover;!0===l?e.hover={enabled:!0}:!1===l&&(e.hover={enabled:!1});const c=e.parameterHints;!0===c?e.parameterHints={enabled:!0}:!1===c&&(e.parameterHints={enabled:!1});const d=e.autoIndent;!0===d?e.autoIndent="full":!1===d&&(e.autoIndent="advanced");const h=e.matchBrackets;!0===h?e.matchBrackets="always":!1===h&&(e.matchBrackets="never")}(t),t}class y extends s.JT{constructor(e,t){super(),this._onDidChange=this._register(new r.Q5),this.onDidChange=this._onDidChange.event,this._onDidChangeFast=this._register(new r.Q5),this.onDidChangeFast=this._onDidChangeFast.event,this.isSimpleWidget=e,this._isDominatedByLongLines=!1,this._computeOptionsMemory=new l.LJ,this._viewLineCount=1,this._lineNumbersDigitCount=1,this._rawOptions=v(t),this._readOptions=b.readOptions(this._rawOptions),this._validatedOptions=b.validateOptions(this._readOptions),this._register(c.C.onDidChangeZoomLevel((e=>this._recomputeOptions()))),this._register(f.onDidChangeTabFocus((e=>this._recomputeOptions())))}observeReferenceElement(e){}dispose(){super.dispose()}_recomputeOptions(){const e=this.options,t=this._computeInternalOptions();if(e){const i=b.checkEquals(e,t);if(null===i)return;this.options=t,this._onDidChangeFast.fire(i),this._onDidChange.fire(i)}else this.options=t}getRawOptions(){return this._rawOptions}_computeInternalOptions(){const e=this._getEnvConfiguration(),t=d.E.createFromValidatedSettings(this._validatedOptions,e.zoomLevel,this.isSimpleWidget),i={memory:this._computeOptionsMemory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,fontInfo:this.readConfiguration(t),extraEditorClassName:e.extraEditorClassName,isDominatedByLongLines:this._isDominatedByLongLines,viewLineCount:this._viewLineCount,lineNumbersDigitCount:this._lineNumbersDigitCount,emptySelectionClipboard:e.emptySelectionClipboard,pixelRatio:e.pixelRatio,tabFocusMode:f.getTabFocusMode(),accessibilitySupport:e.accessibilitySupport};return b.computeOptions(this._validatedOptions,i)}static _subsetEquals(e,t){for(const i in t)if(p.call(t,i)){const n=t[i],r=e[i];if(r===n)continue;if(Array.isArray(r)&&Array.isArray(n)){if(!a.fS(r,n))return!1;continue}if(r&&"object"==typeof r&&n&&"object"==typeof n){if(!this._subsetEquals(r,n))return!1;continue}return!1}return!0}updateOptions(e){if(void 0===e)return;const t=v(e);y._subsetEquals(this._rawOptions,t)||(this._rawOptions=o.jB(this._rawOptions,t||{}),this._readOptions=b.readOptions(this._rawOptions),this._validatedOptions=b.validateOptions(this._readOptions),this._recomputeOptions())}setIsDominatedByLongLines(e){this._isDominatedByLongLines=e,this._recomputeOptions()}setMaxLineNumber(e){const t=y._digitCount(e);this._lineNumbersDigitCount!==t&&(this._lineNumbersDigitCount=t,this._recomputeOptions())}setViewLineCount(e){this._viewLineCount!==e&&(this._viewLineCount=e,this._recomputeOptions())}static _digitCount(e){let t=0;for(;e;)e=Math.floor(e/10),t++;return t||1}}const w=Object.freeze({id:"editor",order:5,type:"object",title:n.N("editorConfigurationTitle","Editor"),scope:5}),C=u.B.as(h.IP.Configuration),S=Object.assign(Object.assign({},w),{properties:{"editor.tabSize":{type:"number",default:l.DB.tabSize,minimum:1,markdownDescription:n.N("tabSize","The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.")},"editor.insertSpaces":{type:"boolean",default:l.DB.insertSpaces,markdownDescription:n.N("insertSpaces","Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.")},"editor.detectIndentation":{type:"boolean",default:l.DB.detectIndentation,markdownDescription:n.N("detectIndentation","Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.")},"editor.trimAutoWhitespace":{type:"boolean",default:l.DB.trimAutoWhitespace,description:n.N("trimAutoWhitespace","Remove trailing auto inserted whitespace.")},"editor.largeFileOptimizations":{type:"boolean",default:l.DB.largeFileOptimizations,description:n.N("largeFileOptimizations","Special handling for large files to disable certain memory intensive features.")},"editor.wordBasedSuggestions":{type:"boolean",default:!0,description:n.N("wordBasedSuggestions","Controls whether completions should be computed based on words in the document.")},"editor.semanticHighlighting.enabled":{enum:[!0,!1,"configuredByTheme"],enumDescriptions:[n.N("semanticHighlighting.true","Semantic highlighting enabled for all color themes."),n.N("semanticHighlighting.false","Semantic highlighting disabled for all color themes."),n.N("semanticHighlighting.configuredByTheme","Semantic highlighting is configured by the current color theme's `semanticHighlighting` setting.")],default:"configuredByTheme",description:n.N("semanticHighlighting.enabled","Controls whether the semanticHighlighting is shown for the languages that support it.")},"editor.stablePeek":{type:"boolean",default:!1,markdownDescription:n.N("stablePeek","Keep peek editors open even when double clicking their content or when hitting `Escape`.")},"editor.maxTokenizationLineLength":{type:"integer",default:2e4,description:n.N("maxTokenizationLineLength","Lines above this length will not be tokenized for performance reasons")},"diffEditor.maxComputationTime":{type:"number",default:5e3,description:n.N("maxComputationTime","Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.")},"diffEditor.renderSideBySide":{type:"boolean",default:!0,description:n.N("sideBySide","Controls whether the diff editor shows the diff side by side or inline.")},"diffEditor.ignoreTrimWhitespace":{type:"boolean",default:!0,description:n.N("ignoreTrimWhitespace","When enabled, the diff editor ignores changes in leading or trailing whitespace.")},"diffEditor.renderIndicators":{type:"boolean",default:!0,description:n.N("renderIndicators","Controls whether the diff editor shows +/- indicators for added/removed changes.")},"diffEditor.codeLens":{type:"boolean",default:!1,description:n.N("codeLens","Controls whether the editor shows CodeLens.")}}});for(const e of l.Bc){const t=e.schema;if(void 0!==t)if(void 0!==(k=t).type||void 0!==k.anyOf)S.properties[`editor.${e.name}`]=t;else for(let e in t)p.call(t,e)&&(S.properties[e]=t[e])}var k;let x=null;function L(){return null===x&&(x=Object.create(null),Object.keys(S.properties).forEach((e=>{x[e]=!0}))),x}function M(e){return L()[`editor.${e}`]||!1}function D(e){return L()[`diffEditor.${e}`]||!1}C.registerConfiguration(S)},64141:(e,t,i)=>{"use strict";i.d(t,{y0:()=>o,Bb:()=>a,hu:()=>l,LJ:()=>c,d2:()=>v,n0:()=>y,gk:()=>C,$J:()=>S,hL:()=>x,DB:()=>L,Bc:()=>M,BH:()=>N});var n=i(63580),r=i(1432),s=i(97461);const o=8;class a{constructor(e){this._values=e}hasChanged(e){return this._values[e]}}class l{constructor(){this._values=[]}_read(e){return this._values[e]}get(e){return this._values[e]}_write(e,t){this._values[e]=t}}class c{constructor(){this.stableMinimapLayoutInput=null,this.stableFitMaxMinimapScale=0,this.stableFitRemainingWidth=0}}class d{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}compute(e,t,i){return i}}class h{constructor(e,t=null){this.schema=void 0,this.id=e,this.name="_never_",this.defaultValue=void 0,this.deps=t}validate(e){return this.defaultValue}}class u{constructor(e,t,i,n){this.id=e,this.name=t,this.defaultValue=i,this.schema=n}validate(e){return void 0===e?this.defaultValue:e}compute(e,t,i){return i}}class g extends u{static boolean(e,t){return void 0===e?t:"false"!==e&&Boolean(e)}constructor(e,t,i,n){void 0!==n&&(n.type="boolean",n.default=i),super(e,t,i,n)}validate(e){return g.boolean(e,this.defaultValue)}}class f extends u{constructor(e,t,i,n,r,s){void 0!==s&&(s.type="integer",s.default=i,s.minimum=n,s.maximum=r),super(e,t,i,s),this.minimum=n,this.maximum=r}static clampedInt(e,t,i,n){if(void 0===e)return t;let r=parseInt(e,10);return isNaN(r)?t:(r=Math.max(i,r),r=Math.min(n,r),0|r)}validate(e){return f.clampedInt(e,this.defaultValue,this.minimum,this.maximum)}}class p extends u{constructor(e,t,i,n,r){void 0!==r&&(r.type="number",r.default=i),super(e,t,i,r),this.validationFn=n}static clamp(e,t,i){return e<t?t:e>i?i:e}static float(e,t){if("number"==typeof e)return e;if(void 0===e)return t;const i=parseFloat(e);return isNaN(i)?t:i}validate(e){return this.validationFn(p.float(e,this.defaultValue))}}class m extends u{static string(e,t){return"string"!=typeof e?t:e}constructor(e,t,i,n){void 0!==n&&(n.type="string",n.default=i),super(e,t,i,n)}validate(e){return m.string(e,this.defaultValue)}}class _ extends u{constructor(e,t,i,n,r){void 0!==r&&(r.type="string",r.enum=n,r.default=i),super(e,t,i,r),this._allowedValues=n}static stringSet(e,t,i){return"string"!=typeof e||-1===i.indexOf(e)?t:e}validate(e){return _.stringSet(e,this.defaultValue,this._allowedValues)}}class b extends d{constructor(e,t,i,n,r,s,o){void 0!==o&&(o.type="string",o.enum=r,o.default=n),super(e,t,i,o),this._allowedValues=r,this._convert=s}validate(e){return"string"!=typeof e||-1===this._allowedValues.indexOf(e)?this.defaultValue:this._convert(e)}}var v;!function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(v||(v={}));class y extends d{constructor(){super(37,"fontLigatures",y.OFF,{anyOf:[{type:"boolean",description:n.N("fontLigatures","Enables/Disables font ligatures.")},{type:"string",description:n.N("fontFeatureSettings","Explicit font-feature-settings.")}],description:n.N("fontLigaturesGeneral","Configures font ligatures or font features."),default:!1})}validate(e){return void 0===e?this.defaultValue:"string"==typeof e?"false"===e?y.OFF:"true"===e?y.ON:e:Boolean(e)?y.ON:y.OFF}}y.OFF='"liga" off, "calt" off',y.ON='"liga" on, "calt" on';class w extends d{constructor(){super(39,"fontWeight",x.fontWeight,{anyOf:[{type:"number",minimum:w.MINIMUM_VALUE,maximum:w.MAXIMUM_VALUE,errorMessage:n.N("fontWeightErrorMessage",'Only "normal" and "bold" keywords or numbers between 1 and 1000 are allowed.')},{type:"string",pattern:"^(normal|bold|1000|[1-9][0-9]{0,2})$"},{enum:w.SUGGESTION_VALUES}],default:x.fontWeight,description:n.N("fontWeight",'Controls the font weight. Accepts "normal" and "bold" keywords or numbers between 1 and 1000.')})}validate(e){return"normal"===e||"bold"===e?e:String(f.clampedInt(e,x.fontWeight,w.MINIMUM_VALUE,w.MAXIMUM_VALUE))}}w.SUGGESTION_VALUES=["normal","bold","100","200","300","400","500","600","700","800","900"],w.MINIMUM_VALUE=1,w.MAXIMUM_VALUE=1e3;class C extends h{constructor(){super(117,[42,50,31,56,84,52,53,86,106,109,110,2])}compute(e,t,i){return C.computeLayout(t,{memory:e.memory,outerWidth:e.outerWidth,outerHeight:e.outerHeight,isDominatedByLongLines:e.isDominatedByLongLines,lineHeight:e.fontInfo.lineHeight,viewLineCount:e.viewLineCount,lineNumbersDigitCount:e.lineNumbersDigitCount,typicalHalfwidthCharacterWidth:e.fontInfo.typicalHalfwidthCharacterWidth,maxDigitWidth:e.fontInfo.maxDigitWidth,pixelRatio:e.pixelRatio})}static computeContainedMinimapLineCount(e){const t=e.height/e.lineHeight,i=e.scrollBeyondLastLine?t-1:0,n=(e.viewLineCount+i)/(e.pixelRatio*e.height);return{typicalViewportLineCount:t,extraLinesBeyondLastLine:i,desiredRatio:n,minimapLineCount:Math.floor(e.viewLineCount/n)}}static _computeMinimapLayout(e,t){const i=e.outerWidth,n=e.outerHeight,r=e.pixelRatio;if(!e.minimap.enabled)return{renderMinimap:0,minimapLeft:0,minimapWidth:0,minimapHeightIsEditorHeight:!1,minimapIsSampling:!1,minimapScale:1,minimapLineHeight:1,minimapCanvasInnerWidth:0,minimapCanvasInnerHeight:Math.floor(r*n),minimapCanvasOuterWidth:0,minimapCanvasOuterHeight:n};const s=t.stableMinimapLayoutInput,a=s&&e.outerHeight===s.outerHeight&&e.lineHeight===s.lineHeight&&e.typicalHalfwidthCharacterWidth===s.typicalHalfwidthCharacterWidth&&e.pixelRatio===s.pixelRatio&&e.scrollBeyondLastLine===s.scrollBeyondLastLine&&e.minimap.enabled===s.minimap.enabled&&e.minimap.side===s.minimap.side&&e.minimap.size===s.minimap.size&&e.minimap.showSlider===s.minimap.showSlider&&e.minimap.renderCharacters===s.minimap.renderCharacters&&e.minimap.maxColumn===s.minimap.maxColumn&&e.minimap.scale===s.minimap.scale&&e.verticalScrollbarWidth===s.verticalScrollbarWidth&&e.isViewportWrapping===s.isViewportWrapping,l=e.lineHeight,c=e.typicalHalfwidthCharacterWidth,d=e.scrollBeyondLastLine,h=e.minimap.renderCharacters;let u=r>=2?Math.round(2*e.minimap.scale):e.minimap.scale;const g=e.minimap.maxColumn,f=e.minimap.size,p=e.minimap.side,m=e.verticalScrollbarWidth,_=e.viewLineCount,b=e.remainingWidth,v=e.isViewportWrapping,y=h?2:3;let w=Math.floor(r*n);const S=w/r;let k=!1,x=!1,L=y*u,M=u/r,D=1;if("fill"===f||"fit"===f){const{typicalViewportLineCount:i,extraLinesBeyondLastLine:s,desiredRatio:o,minimapLineCount:c}=C.computeContainedMinimapLineCount({viewLineCount:_,scrollBeyondLastLine:d,height:n,lineHeight:l,pixelRatio:r});if(_/c>1)k=!0,x=!0,u=1,L=1,M=u/r;else{let n=!1,c=u+1;if("fit"===f){const i=Math.ceil((_+s)*L);v&&a&&b<=t.stableFitRemainingWidth?(n=!0,c=t.stableFitMaxMinimapScale):(n=i>w,v&&n?(t.stableMinimapLayoutInput=e,t.stableFitRemainingWidth=b):(t.stableMinimapLayoutInput=null,t.stableFitRemainingWidth=0))}if("fill"===f||n){k=!0;const e=u;L=Math.min(l*r,Math.max(1,Math.floor(1/o))),u=Math.min(c,Math.max(1,Math.floor(L/y))),u>e&&(D=Math.min(2,u/e)),M=u/r/D,w=Math.ceil(Math.max(i,_+s)*L),v&&n&&(t.stableFitMaxMinimapScale=u)}}}const N=Math.floor(g*M),E=Math.min(N,Math.max(0,Math.floor((b-m-2)*M/(c+M)))+o);let T=Math.floor(r*E);const I=T/r;return T=Math.floor(T*D),{renderMinimap:h?1:2,minimapLeft:"left"===p?0:i-E-m,minimapWidth:E,minimapHeightIsEditorHeight:k,minimapIsSampling:x,minimapScale:u,minimapLineHeight:L,minimapCanvasInnerWidth:T,minimapCanvasInnerHeight:w,minimapCanvasOuterWidth:I,minimapCanvasOuterHeight:S}}static computeLayout(e,t){const i=0|t.outerWidth,n=0|t.outerHeight,r=0|t.lineHeight,s=0|t.lineNumbersDigitCount,o=t.typicalHalfwidthCharacterWidth,a=t.maxDigitWidth,l=t.pixelRatio,d=t.viewLineCount,h=e.get(106),u=e.get(109),g=e.get(110),p=e.get(2),m=t.isDominatedByLongLines,_=e.get(42),b=0!==e.get(52).renderType,v=e.get(53),y=e.get(86),w=e.get(56),S=e.get(84),k=S.verticalScrollbarSize,x=S.verticalHasArrows,L=S.arrowSize,M=S.horizontalScrollbarSize,D=e.get(50),N=e.get(31);let E;if("string"==typeof D&&/^\d+(\.\d+)?ch$/.test(D)){const e=parseFloat(D.substr(0,D.length-2));E=f.clampedInt(e*o,0,0,1e3)}else E=f.clampedInt(D,0,0,1e3);N&&(E+=16);let T=0;if(b){const e=Math.max(s,v);T=Math.round(e*a)}let I=0;_&&(I=r);let O=0,A=O+I,R=A+T,P=R+E;const F=i-I-T-E;let B=!1,W=!1,Y=-1;2!==p&&(g&&m?(B=!0,W=!0):"on"===h||"bounded"===h?W=!0:"wordWrapColumn"===h&&(Y=u));const H=C._computeMinimapLayout({outerWidth:i,outerHeight:n,lineHeight:r,typicalHalfwidthCharacterWidth:o,pixelRatio:l,scrollBeyondLastLine:y,minimap:w,verticalScrollbarWidth:k,viewLineCount:d,remainingWidth:F,isViewportWrapping:W},t.memory||new c);0!==H.renderMinimap&&0===H.minimapLeft&&(O+=H.minimapWidth,A+=H.minimapWidth,R+=H.minimapWidth,P+=H.minimapWidth);const j=F-H.minimapWidth,V=Math.max(1,Math.floor((j-k-2)/o)),z=x?L:0;return W&&(Y=Math.max(1,V),"bounded"===h&&(Y=Math.min(Y,u))),{width:i,height:n,glyphMarginLeft:O,glyphMarginWidth:I,lineNumbersLeft:A,lineNumbersWidth:T,decorationsLeft:R,decorationsWidth:E,contentLeft:P,contentWidth:j,minimap:H,viewportColumn:V,isWordWrapMinified:B,isViewportWrapping:W,wrappingColumn:Y,verticalScrollbarWidth:k,horizontalScrollbarHeight:M,overviewRuler:{top:z,width:k,height:n-2*z,right:0}}}}function S(e){const t=e.get(79);return"editable"===t?e.get(72):"on"!==t}function k(e,t){if("string"!=typeof e)return t;switch(e){case"hidden":return 2;case"visible":return 3;default:return 1}}const x={fontFamily:r.dz?"Menlo, Monaco, 'Courier New', monospace":r.IJ?"'Droid Sans Mono', 'monospace', monospace, 'Droid Sans Fallback'":"Consolas, 'Courier New', monospace",fontWeight:"normal",fontSize:r.dz?12:14,lineHeight:0,letterSpacing:0},L={tabSize:4,indentSize:4,insertSpaces:!0,detectIndentation:!0,trimAutoWhitespace:!0,largeFileOptimizations:!0},M=[];function D(e){return M[e.id]=e,e}const N={acceptSuggestionOnCommitCharacter:D(new g(0,"acceptSuggestionOnCommitCharacter",!0,{markdownDescription:n.N("acceptSuggestionOnCommitCharacter","Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.")})),acceptSuggestionOnEnter:D(new _(1,"acceptSuggestionOnEnter","on",["on","smart","off"],{markdownEnumDescriptions:["",n.N("acceptSuggestionOnEnterSmart","Only accept a suggestion with `Enter` when it makes a textual change."),""],markdownDescription:n.N("acceptSuggestionOnEnter","Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.")})),accessibilitySupport:D(new class extends d{constructor(){super(2,"accessibilitySupport",0,{type:"string",enum:["auto","on","off"],enumDescriptions:[n.N("accessibilitySupport.auto","The editor will use platform APIs to detect when a Screen Reader is attached."),n.N("accessibilitySupport.on","The editor will be permanently optimized for usage with a Screen Reader."),n.N("accessibilitySupport.off","The editor will never be optimized for usage with a Screen Reader.")],default:"auto",description:n.N("accessibilitySupport","Controls whether the editor should run in a mode where it is optimized for screen readers.")})}validate(e){switch(e){case"auto":return 0;case"off":return 1;case"on":return 2}return this.defaultValue}compute(e,t,i){return 0===i?e.accessibilitySupport:i}}),accessibilityPageSize:D(new f(3,"accessibilityPageSize",10,1,1073741824,{description:n.N("accessibilityPageSize","Controls the number of lines in the editor that can be read out by a screen reader. Warning: this has a performance implication for numbers larger than the default.")})),ariaLabel:D(new m(4,"ariaLabel",n.N("editorViewAccessibleLabel","Editor content"))),autoClosingBrackets:D(new _(5,"autoClosingBrackets","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",n.N("editor.autoClosingBrackets.languageDefined","Use language configurations to determine when to autoclose brackets."),n.N("editor.autoClosingBrackets.beforeWhitespace","Autoclose brackets only when the cursor is to the left of whitespace."),""],description:n.N("autoClosingBrackets","Controls whether the editor should automatically close brackets after the user adds an opening bracket.")})),autoClosingOvertype:D(new _(6,"autoClosingOvertype","auto",["always","auto","never"],{enumDescriptions:["",n.N("editor.autoClosingOvertype.auto","Type over closing quotes or brackets only if they were automatically inserted."),""],description:n.N("autoClosingOvertype","Controls whether the editor should type over closing quotes or brackets.")})),autoClosingQuotes:D(new _(7,"autoClosingQuotes","languageDefined",["always","languageDefined","beforeWhitespace","never"],{enumDescriptions:["",n.N("editor.autoClosingQuotes.languageDefined","Use language configurations to determine when to autoclose quotes."),n.N("editor.autoClosingQuotes.beforeWhitespace","Autoclose quotes only when the cursor is to the left of whitespace."),""],description:n.N("autoClosingQuotes","Controls whether the editor should automatically close quotes after the user adds an opening quote.")})),autoIndent:D(new b(8,"autoIndent",4,"full",["none","keep","brackets","advanced","full"],(function(e){switch(e){case"none":return 0;case"keep":return 1;case"brackets":return 2;case"advanced":return 3;case"full":return 4}}),{enumDescriptions:[n.N("editor.autoIndent.none","The editor will not insert indentation automatically."),n.N("editor.autoIndent.keep","The editor will keep the current line's indentation."),n.N("editor.autoIndent.brackets","The editor will keep the current line's indentation and honor language defined brackets."),n.N("editor.autoIndent.advanced","The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages."),n.N("editor.autoIndent.full","The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.")],description:n.N("autoIndent","Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.")})),automaticLayout:D(new g(9,"automaticLayout",!1)),autoSurround:D(new _(10,"autoSurround","languageDefined",["languageDefined","quotes","brackets","never"],{enumDescriptions:[n.N("editor.autoSurround.languageDefined","Use language configurations to determine when to automatically surround selections."),n.N("editor.autoSurround.quotes","Surround with quotes but not brackets."),n.N("editor.autoSurround.brackets","Surround with brackets but not quotes."),""],description:n.N("autoSurround","Controls whether the editor should automatically surround selections.")})),codeLens:D(new g(11,"codeLens",!0,{description:n.N("codeLens","Controls whether the editor shows CodeLens.")})),colorDecorators:D(new g(12,"colorDecorators",!0,{description:n.N("colorDecorators","Controls whether the editor should render the inline color decorators and color picker.")})),columnSelection:D(new g(13,"columnSelection",!1,{description:n.N("columnSelection","Enable that the selection with the mouse and keys is doing column selection.")})),comments:D(new class extends d{constructor(){const e={insertSpace:!0,ignoreEmptyLines:!0};super(14,"comments",e,{"editor.comments.insertSpace":{type:"boolean",default:e.insertSpace,description:n.N("comments.insertSpace","Controls whether a space character is inserted when commenting.")},"editor.comments.ignoreEmptyLines":{type:"boolean",default:e.ignoreEmptyLines,description:n.N("comments.ignoreEmptyLines","Controls if empty lines should be ignored with toggle, add or remove actions for line comments.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{insertSpace:g.boolean(t.insertSpace,this.defaultValue.insertSpace),ignoreEmptyLines:g.boolean(t.ignoreEmptyLines,this.defaultValue.ignoreEmptyLines)}}}),contextmenu:D(new g(15,"contextmenu",!0)),copyWithSyntaxHighlighting:D(new g(16,"copyWithSyntaxHighlighting",!0,{description:n.N("copyWithSyntaxHighlighting","Controls whether syntax highlighting should be copied into the clipboard.")})),cursorBlinking:D(new b(17,"cursorBlinking",1,"blink",["blink","smooth","phase","expand","solid"],(function(e){switch(e){case"blink":return 1;case"smooth":return 2;case"phase":return 3;case"expand":return 4;case"solid":return 5}}),{description:n.N("cursorBlinking","Control the cursor animation style.")})),cursorSmoothCaretAnimation:D(new g(18,"cursorSmoothCaretAnimation",!1,{description:n.N("cursorSmoothCaretAnimation","Controls whether the smooth caret animation should be enabled.")})),cursorStyle:D(new b(19,"cursorStyle",v.Line,"line",["line","block","underline","line-thin","block-outline","underline-thin"],(function(e){switch(e){case"line":return v.Line;case"block":return v.Block;case"underline":return v.Underline;case"line-thin":return v.LineThin;case"block-outline":return v.BlockOutline;case"underline-thin":return v.UnderlineThin}}),{description:n.N("cursorStyle","Controls the cursor style.")})),cursorSurroundingLines:D(new f(20,"cursorSurroundingLines",0,0,1073741824,{description:n.N("cursorSurroundingLines","Controls the minimal number of visible leading and trailing lines surrounding the cursor. Known as 'scrollOff' or `scrollOffset` in some other editors.")})),cursorSurroundingLinesStyle:D(new _(21,"cursorSurroundingLinesStyle","default",["default","all"],{enumDescriptions:[n.N("cursorSurroundingLinesStyle.default","`cursorSurroundingLines` is enforced only when triggered via the keyboard or API."),n.N("cursorSurroundingLinesStyle.all","`cursorSurroundingLines` is enforced always.")],description:n.N("cursorSurroundingLinesStyle","Controls when `cursorSurroundingLines` should be enforced.")})),cursorWidth:D(new f(22,"cursorWidth",0,0,1073741824,{markdownDescription:n.N("cursorWidth","Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.")})),disableLayerHinting:D(new g(23,"disableLayerHinting",!1)),disableMonospaceOptimizations:D(new g(24,"disableMonospaceOptimizations",!1)),dragAndDrop:D(new g(25,"dragAndDrop",!0,{description:n.N("dragAndDrop","Controls whether the editor should allow moving selections via drag and drop.")})),emptySelectionClipboard:D(new class extends g{constructor(){super(26,"emptySelectionClipboard",!0,{description:n.N("emptySelectionClipboard","Controls whether copying without a selection copies the current line.")})}compute(e,t,i){return i&&e.emptySelectionClipboard}}),extraEditorClassName:D(new m(27,"extraEditorClassName","")),fastScrollSensitivity:D(new p(28,"fastScrollSensitivity",5,(e=>e<=0?5:e),{markdownDescription:n.N("fastScrollSensitivity","Scrolling speed multiplier when pressing `Alt`.")})),find:D(new class extends d{constructor(){const e={cursorMoveOnType:!0,seedSearchStringFromSelection:!0,autoFindInSelection:"never",globalFindClipboard:!1,addExtraSpaceOnTop:!0,loop:!0};super(29,"find",e,{"editor.find.cursorMoveOnType":{type:"boolean",default:e.cursorMoveOnType,description:n.N("find.cursorMoveOnType","Controls whether the cursor should jump to find matches while typing.")},"editor.find.seedSearchStringFromSelection":{type:"boolean",default:e.seedSearchStringFromSelection,description:n.N("find.seedSearchStringFromSelection","Controls whether the search string in the Find Widget is seeded from the editor selection.")},"editor.find.autoFindInSelection":{type:"string",enum:["never","always","multiline"],default:e.autoFindInSelection,enumDescriptions:[n.N("editor.find.autoFindInSelection.never","Never turn on Find in selection automatically (default)"),n.N("editor.find.autoFindInSelection.always","Always turn on Find in selection automatically"),n.N("editor.find.autoFindInSelection.multiline","Turn on Find in selection automatically when multiple lines of content are selected.")],description:n.N("find.autoFindInSelection","Controls the condition for turning on find in selection automatically.")},"editor.find.globalFindClipboard":{type:"boolean",default:e.globalFindClipboard,description:n.N("find.globalFindClipboard","Controls whether the Find Widget should read or modify the shared find clipboard on macOS."),included:r.dz},"editor.find.addExtraSpaceOnTop":{type:"boolean",default:e.addExtraSpaceOnTop,description:n.N("find.addExtraSpaceOnTop","Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.")},"editor.find.loop":{type:"boolean",default:e.loop,description:n.N("find.loop","Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{cursorMoveOnType:g.boolean(t.cursorMoveOnType,this.defaultValue.cursorMoveOnType),seedSearchStringFromSelection:g.boolean(t.seedSearchStringFromSelection,this.defaultValue.seedSearchStringFromSelection),autoFindInSelection:"boolean"==typeof e.autoFindInSelection?e.autoFindInSelection?"always":"never":_.stringSet(t.autoFindInSelection,this.defaultValue.autoFindInSelection,["never","always","multiline"]),globalFindClipboard:g.boolean(t.globalFindClipboard,this.defaultValue.globalFindClipboard),addExtraSpaceOnTop:g.boolean(t.addExtraSpaceOnTop,this.defaultValue.addExtraSpaceOnTop),loop:g.boolean(t.loop,this.defaultValue.loop)}}}),fixedOverflowWidgets:D(new g(30,"fixedOverflowWidgets",!1)),folding:D(new g(31,"folding",!0,{description:n.N("folding","Controls whether the editor has code folding enabled.")})),foldingStrategy:D(new _(32,"foldingStrategy","auto",["auto","indentation"],{enumDescriptions:[n.N("foldingStrategy.auto","Use a language-specific folding strategy if available, else the indentation-based one."),n.N("foldingStrategy.indentation","Use the indentation-based folding strategy.")],description:n.N("foldingStrategy","Controls the strategy for computing folding ranges.")})),foldingHighlight:D(new g(33,"foldingHighlight",!0,{description:n.N("foldingHighlight","Controls whether the editor should highlight folded ranges.")})),unfoldOnClickAfterEndOfLine:D(new g(34,"unfoldOnClickAfterEndOfLine",!1,{description:n.N("unfoldOnClickAfterEndOfLine","Controls whether clicking on the empty content after a folded line will unfold the line.")})),fontFamily:D(new m(35,"fontFamily",x.fontFamily,{description:n.N("fontFamily","Controls the font family.")})),fontInfo:D(new class extends h{constructor(){super(36)}compute(e,t,i){return e.fontInfo}}),fontLigatures2:D(new y),fontSize:D(new class extends u{constructor(){super(38,"fontSize",x.fontSize,{type:"number",minimum:6,maximum:100,default:x.fontSize,description:n.N("fontSize","Controls the font size in pixels.")})}validate(e){let t=p.float(e,this.defaultValue);return 0===t?x.fontSize:p.clamp(t,6,100)}compute(e,t,i){return e.fontInfo.fontSize}}),fontWeight:D(new w),formatOnPaste:D(new g(40,"formatOnPaste",!1,{description:n.N("formatOnPaste","Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.")})),formatOnType:D(new g(41,"formatOnType",!1,{description:n.N("formatOnType","Controls whether the editor should automatically format the line after typing.")})),glyphMargin:D(new g(42,"glyphMargin",!0,{description:n.N("glyphMargin","Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.")})),gotoLocation:D(new class extends d{constructor(){const e={multiple:"peek",multipleDefinitions:"peek",multipleTypeDefinitions:"peek",multipleDeclarations:"peek",multipleImplementations:"peek",multipleReferences:"peek",alternativeDefinitionCommand:"editor.action.goToReferences",alternativeTypeDefinitionCommand:"editor.action.goToReferences",alternativeDeclarationCommand:"editor.action.goToReferences",alternativeImplementationCommand:"",alternativeReferenceCommand:""},t={type:"string",enum:["peek","gotoAndPeek","goto"],default:e.multiple,enumDescriptions:[n.N("editor.gotoLocation.multiple.peek","Show peek view of the results (default)"),n.N("editor.gotoLocation.multiple.gotoAndPeek","Go to the primary result and show a peek view"),n.N("editor.gotoLocation.multiple.goto","Go to the primary result and enable peek-less navigation to others")]};super(43,"gotoLocation",e,{"editor.gotoLocation.multiple":{deprecationMessage:n.N("editor.gotoLocation.multiple.deprecated","This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.")},"editor.gotoLocation.multipleDefinitions":Object.assign({description:n.N("editor.editor.gotoLocation.multipleDefinitions","Controls the behavior the 'Go to Definition'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleTypeDefinitions":Object.assign({description:n.N("editor.editor.gotoLocation.multipleTypeDefinitions","Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleDeclarations":Object.assign({description:n.N("editor.editor.gotoLocation.multipleDeclarations","Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleImplementations":Object.assign({description:n.N("editor.editor.gotoLocation.multipleImplemenattions","Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.")},t),"editor.gotoLocation.multipleReferences":Object.assign({description:n.N("editor.editor.gotoLocation.multipleReferences","Controls the behavior the 'Go to References'-command when multiple target locations exist.")},t),"editor.gotoLocation.alternativeDefinitionCommand":{type:"string",default:e.alternativeDefinitionCommand,description:n.N("alternativeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Definition' is the current location.")},"editor.gotoLocation.alternativeTypeDefinitionCommand":{type:"string",default:e.alternativeTypeDefinitionCommand,description:n.N("alternativeTypeDefinitionCommand","Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.")},"editor.gotoLocation.alternativeDeclarationCommand":{type:"string",default:e.alternativeDeclarationCommand,description:n.N("alternativeDeclarationCommand","Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.")},"editor.gotoLocation.alternativeImplementationCommand":{type:"string",default:e.alternativeImplementationCommand,description:n.N("alternativeImplementationCommand","Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.")},"editor.gotoLocation.alternativeReferenceCommand":{type:"string",default:e.alternativeReferenceCommand,description:n.N("alternativeReferenceCommand","Alternative command id that is being executed when the result of 'Go to Reference' is the current location.")}})}validate(e){var t,i,n,r,s;if(!e||"object"!=typeof e)return this.defaultValue;const o=e;return{multiple:_.stringSet(o.multiple,this.defaultValue.multiple,["peek","gotoAndPeek","goto"]),multipleDefinitions:null!==(t=o.multipleDefinitions)&&void 0!==t?t:_.stringSet(o.multipleDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleTypeDefinitions:null!==(i=o.multipleTypeDefinitions)&&void 0!==i?i:_.stringSet(o.multipleTypeDefinitions,"peek",["peek","gotoAndPeek","goto"]),multipleDeclarations:null!==(n=o.multipleDeclarations)&&void 0!==n?n:_.stringSet(o.multipleDeclarations,"peek",["peek","gotoAndPeek","goto"]),multipleImplementations:null!==(r=o.multipleImplementations)&&void 0!==r?r:_.stringSet(o.multipleImplementations,"peek",["peek","gotoAndPeek","goto"]),multipleReferences:null!==(s=o.multipleReferences)&&void 0!==s?s:_.stringSet(o.multipleReferences,"peek",["peek","gotoAndPeek","goto"]),alternativeDefinitionCommand:m.string(o.alternativeDefinitionCommand,this.defaultValue.alternativeDefinitionCommand),alternativeTypeDefinitionCommand:m.string(o.alternativeTypeDefinitionCommand,this.defaultValue.alternativeTypeDefinitionCommand),alternativeDeclarationCommand:m.string(o.alternativeDeclarationCommand,this.defaultValue.alternativeDeclarationCommand),alternativeImplementationCommand:m.string(o.alternativeImplementationCommand,this.defaultValue.alternativeImplementationCommand),alternativeReferenceCommand:m.string(o.alternativeReferenceCommand,this.defaultValue.alternativeReferenceCommand)}}}),hideCursorInOverviewRuler:D(new g(44,"hideCursorInOverviewRuler",!1,{description:n.N("hideCursorInOverviewRuler","Controls whether the cursor should be hidden in the overview ruler.")})),highlightActiveIndentGuide:D(new g(45,"highlightActiveIndentGuide",!0,{description:n.N("highlightActiveIndentGuide","Controls whether the editor should highlight the active indent guide.")})),hover:D(new class extends d{constructor(){const e={enabled:!0,delay:300,sticky:!0};super(46,"hover",e,{"editor.hover.enabled":{type:"boolean",default:e.enabled,description:n.N("hover.enabled","Controls whether the hover is shown.")},"editor.hover.delay":{type:"number",default:e.delay,description:n.N("hover.delay","Controls the delay in milliseconds after which the hover is shown.")},"editor.hover.sticky":{type:"boolean",default:e.sticky,description:n.N("hover.sticky","Controls whether the hover should remain visible when mouse is moved over it.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{enabled:g.boolean(t.enabled,this.defaultValue.enabled),delay:f.clampedInt(t.delay,this.defaultValue.delay,0,1e4),sticky:g.boolean(t.sticky,this.defaultValue.sticky)}}}),inDiffEditor:D(new g(47,"inDiffEditor",!1)),letterSpacing:D(new p(48,"letterSpacing",x.letterSpacing,(e=>p.clamp(e,-5,20)),{description:n.N("letterSpacing","Controls the letter spacing in pixels.")})),lightbulb:D(new class extends d{constructor(){const e={enabled:!0};super(49,"lightbulb",e,{"editor.lightbulb.enabled":{type:"boolean",default:e.enabled,description:n.N("codeActions","Enables the code action lightbulb in the editor.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{enabled:g.boolean(t.enabled,this.defaultValue.enabled)}}}),lineDecorationsWidth:D(new u(50,"lineDecorationsWidth",10)),lineHeight:D(new class extends f{constructor(){super(51,"lineHeight",x.lineHeight,0,150,{description:n.N("lineHeight","Controls the line height. Use 0 to compute the line height from the font size.")})}compute(e,t,i){return e.fontInfo.lineHeight}}),lineNumbers:D(new class extends d{constructor(){super(52,"lineNumbers",{renderType:1,renderFn:null},{type:"string",enum:["off","on","relative","interval"],enumDescriptions:[n.N("lineNumbers.off","Line numbers are not rendered."),n.N("lineNumbers.on","Line numbers are rendered as absolute number."),n.N("lineNumbers.relative","Line numbers are rendered as distance in lines to cursor position."),n.N("lineNumbers.interval","Line numbers are rendered every 10 lines.")],default:"on",description:n.N("lineNumbers","Controls the display of line numbers.")})}validate(e){let t=this.defaultValue.renderType,i=this.defaultValue.renderFn;return void 0!==e&&("function"==typeof e?(t=4,i=e):t="interval"===e?3:"relative"===e?2:"on"===e?1:0),{renderType:t,renderFn:i}}}),lineNumbersMinChars:D(new f(53,"lineNumbersMinChars",5,1,300)),links:D(new g(54,"links",!0,{description:n.N("links","Controls whether the editor should detect links and make them clickable.")})),matchBrackets:D(new _(55,"matchBrackets","always",["always","near","never"],{description:n.N("matchBrackets","Highlight matching brackets.")})),minimap:D(new class extends d{constructor(){const e={enabled:!0,size:"proportional",side:"right",showSlider:"mouseover",renderCharacters:!0,maxColumn:120,scale:1};super(56,"minimap",e,{"editor.minimap.enabled":{type:"boolean",default:e.enabled,description:n.N("minimap.enabled","Controls whether the minimap is shown.")},"editor.minimap.size":{type:"string",enum:["proportional","fill","fit"],enumDescriptions:[n.N("minimap.size.proportional","The minimap has the same size as the editor contents (and might scroll)."),n.N("minimap.size.fill","The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling)."),n.N("minimap.size.fit","The minimap will shrink as necessary to never be larger than the editor (no scrolling).")],default:e.size,description:n.N("minimap.size","Controls the size of the minimap.")},"editor.minimap.side":{type:"string",enum:["left","right"],default:e.side,description:n.N("minimap.side","Controls the side where to render the minimap.")},"editor.minimap.showSlider":{type:"string",enum:["always","mouseover"],default:e.showSlider,description:n.N("minimap.showSlider","Controls when the minimap slider is shown.")},"editor.minimap.scale":{type:"number",default:e.scale,minimum:1,maximum:3,enum:[1,2,3],description:n.N("minimap.scale","Scale of content drawn in the minimap: 1, 2 or 3.")},"editor.minimap.renderCharacters":{type:"boolean",default:e.renderCharacters,description:n.N("minimap.renderCharacters","Render the actual characters on a line as opposed to color blocks.")},"editor.minimap.maxColumn":{type:"number",default:e.maxColumn,description:n.N("minimap.maxColumn","Limit the width of the minimap to render at most a certain number of columns.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{enabled:g.boolean(t.enabled,this.defaultValue.enabled),size:_.stringSet(t.size,this.defaultValue.size,["proportional","fill","fit"]),side:_.stringSet(t.side,this.defaultValue.side,["right","left"]),showSlider:_.stringSet(t.showSlider,this.defaultValue.showSlider,["always","mouseover"]),renderCharacters:g.boolean(t.renderCharacters,this.defaultValue.renderCharacters),scale:f.clampedInt(t.scale,1,1,3),maxColumn:f.clampedInt(t.maxColumn,this.defaultValue.maxColumn,1,1e4)}}}),mouseStyle:D(new _(57,"mouseStyle","text",["text","default","copy"])),mouseWheelScrollSensitivity:D(new p(58,"mouseWheelScrollSensitivity",1,(e=>0===e?1:e),{markdownDescription:n.N("mouseWheelScrollSensitivity","A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.")})),mouseWheelZoom:D(new g(59,"mouseWheelZoom",!1,{markdownDescription:n.N("mouseWheelZoom","Zoom the font of the editor when using mouse wheel and holding `Ctrl`.")})),multiCursorMergeOverlapping:D(new g(60,"multiCursorMergeOverlapping",!0,{description:n.N("multiCursorMergeOverlapping","Merge multiple cursors when they are overlapping.")})),multiCursorModifier:D(new b(61,"multiCursorModifier","altKey","alt",["ctrlCmd","alt"],(function(e){return"ctrlCmd"===e?r.dz?"metaKey":"ctrlKey":"altKey"}),{markdownEnumDescriptions:[n.N("multiCursorModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),n.N("multiCursorModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],markdownDescription:n.N({key:"multiCursorModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).")})),multiCursorPaste:D(new _(62,"multiCursorPaste","spread",["spread","full"],{markdownEnumDescriptions:[n.N("multiCursorPaste.spread","Each cursor pastes a single line of the text."),n.N("multiCursorPaste.full","Each cursor pastes the full text.")],markdownDescription:n.N("multiCursorPaste","Controls pasting when the line count of the pasted text matches the cursor count.")})),occurrencesHighlight:D(new g(63,"occurrencesHighlight",!0,{description:n.N("occurrencesHighlight","Controls whether the editor should highlight semantic symbol occurrences.")})),overviewRulerBorder:D(new g(64,"overviewRulerBorder",!0,{description:n.N("overviewRulerBorder","Controls whether a border should be drawn around the overview ruler.")})),overviewRulerLanes:D(new f(65,"overviewRulerLanes",3,0,3)),padding:D(new class extends d{constructor(){super(66,"padding",{top:0,bottom:0},{"editor.padding.top":{type:"number",default:0,minimum:0,maximum:1e3,description:n.N("padding.top","Controls the amount of space between the top edge of the editor and the first line.")},"editor.padding.bottom":{type:"number",default:0,minimum:0,maximum:1e3,description:n.N("padding.bottom","Controls the amount of space between the bottom edge of the editor and the last line.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{top:f.clampedInt(t.top,0,0,1e3),bottom:f.clampedInt(t.bottom,0,0,1e3)}}}),parameterHints:D(new class extends d{constructor(){const e={enabled:!0,cycle:!1};super(67,"parameterHints",e,{"editor.parameterHints.enabled":{type:"boolean",default:e.enabled,description:n.N("parameterHints.enabled","Enables a pop-up that shows parameter documentation and type information as you type.")},"editor.parameterHints.cycle":{type:"boolean",default:e.cycle,description:n.N("parameterHints.cycle","Controls whether the parameter hints menu cycles or closes when reaching the end of the list.")}})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e;return{enabled:g.boolean(t.enabled,this.defaultValue.enabled),cycle:g.boolean(t.cycle,this.defaultValue.cycle)}}}),peekWidgetDefaultFocus:D(new _(68,"peekWidgetDefaultFocus","tree",["tree","editor"],{enumDescriptions:[n.N("peekWidgetDefaultFocus.tree","Focus the tree when opening peek"),n.N("peekWidgetDefaultFocus.editor","Focus the editor when opening peek")],description:n.N("peekWidgetDefaultFocus","Controls whether to focus the inline editor or the tree in the peek widget.")})),definitionLinkOpensInPeek:D(new g(69,"definitionLinkOpensInPeek",!1,{description:n.N("definitionLinkOpensInPeek","Controls whether the Go to Definition mouse gesture always opens the peek widget.")})),quickSuggestions:D(new class extends d{constructor(){const e={other:!0,comments:!1,strings:!1};super(70,"quickSuggestions",e,{anyOf:[{type:"boolean"},{type:"object",properties:{strings:{type:"boolean",default:e.strings,description:n.N("quickSuggestions.strings","Enable quick suggestions inside strings.")},comments:{type:"boolean",default:e.comments,description:n.N("quickSuggestions.comments","Enable quick suggestions inside comments.")},other:{type:"boolean",default:e.other,description:n.N("quickSuggestions.other","Enable quick suggestions outside of strings and comments.")}}}],default:e,description:n.N("quickSuggestions","Controls whether suggestions should automatically show up while typing.")}),this.defaultValue=e}validate(e){if("boolean"==typeof e)return e;if(e&&"object"==typeof e){const t=e,i={other:g.boolean(t.other,this.defaultValue.other),comments:g.boolean(t.comments,this.defaultValue.comments),strings:g.boolean(t.strings,this.defaultValue.strings)};return!!(i.other&&i.comments&&i.strings)||!!(i.other||i.comments||i.strings)&&i}return this.defaultValue}}),quickSuggestionsDelay:D(new f(71,"quickSuggestionsDelay",10,0,1073741824,{description:n.N("quickSuggestionsDelay","Controls the delay in milliseconds after which quick suggestions will show up.")})),readOnly:D(new g(72,"readOnly",!1)),renameOnType:D(new g(73,"renameOnType",!1,{description:n.N("renameOnType","Controls whether the editor auto renames on type.")})),renderControlCharacters:D(new g(74,"renderControlCharacters",!1,{description:n.N("renderControlCharacters","Controls whether the editor should render control characters.")})),renderIndentGuides:D(new g(75,"renderIndentGuides",!0,{description:n.N("renderIndentGuides","Controls whether the editor should render indent guides.")})),renderFinalNewline:D(new g(76,"renderFinalNewline",!0,{description:n.N("renderFinalNewline","Render last line number when the file ends with a newline.")})),renderLineHighlight:D(new _(77,"renderLineHighlight","line",["none","gutter","line","all"],{enumDescriptions:["","","",n.N("renderLineHighlight.all","Highlights both the gutter and the current line.")],description:n.N("renderLineHighlight","Controls how the editor should render the current line highlight.")})),renderLineHighlightOnlyWhenFocus:D(new g(78,"renderLineHighlightOnlyWhenFocus",!1,{description:n.N("renderLineHighlightOnlyWhenFocus","Controls if the editor should render the current line highlight only when the editor is focused")})),renderValidationDecorations:D(new _(79,"renderValidationDecorations","editable",["editable","on","off"])),renderWhitespace:D(new _(80,"renderWhitespace","selection",["none","boundary","selection","trailing","all"],{enumDescriptions:["",n.N("renderWhitespace.boundary","Render whitespace characters except for single spaces between words."),n.N("renderWhitespace.selection","Render whitespace characters only on selected text."),n.N("renderWhitespace.trailing","Render only trailing whitespace characters"),""],description:n.N("renderWhitespace","Controls how the editor should render whitespace characters.")})),revealHorizontalRightPadding:D(new f(81,"revealHorizontalRightPadding",30,0,1e3)),roundedSelection:D(new g(82,"roundedSelection",!0,{description:n.N("roundedSelection","Controls whether selections should have rounded corners.")})),rulers:D(new class extends d{constructor(){const e=[],t={type:"number",description:n.N("rulers.size","Number of monospace characters at which this editor ruler will render.")};super(83,"rulers",e,{type:"array",items:{anyOf:[t,{type:["object"],properties:{column:t,color:{type:"string",description:n.N("rulers.color","Color of this editor ruler."),format:"color-hex"}}}]},default:e,description:n.N("rulers","Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.")})}validate(e){if(Array.isArray(e)){let t=[];for(let i of e)if("number"==typeof i)t.push({column:f.clampedInt(i,0,0,1e4),color:null});else if(i&&"object"==typeof i){const e=i;t.push({column:f.clampedInt(e.column,0,0,1e4),color:e.color})}return t.sort(((e,t)=>e.column-t.column)),t}return this.defaultValue}}),scrollbar:D(new class extends d{constructor(){super(84,"scrollbar",{vertical:1,horizontal:1,arrowSize:11,useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,horizontalScrollbarSize:12,horizontalSliderSize:12,verticalScrollbarSize:14,verticalSliderSize:14,handleMouseWheel:!0,alwaysConsumeMouseWheel:!0})}validate(e){if(!e||"object"!=typeof e)return this.defaultValue;const t=e,i=f.clampedInt(t.horizontalScrollbarSize,this.defaultValue.horizontalScrollbarSize,0,1e3),n=f.clampedInt(t.verticalScrollbarSize,this.defaultValue.verticalScrollbarSize,0,1e3);return{arrowSize:f.clampedInt(t.arrowSize,this.defaultValue.arrowSize,0,1e3),vertical:k(t.vertical,this.defaultValue.vertical),horizontal:k(t.horizontal,this.defaultValue.horizontal),useShadows:g.boolean(t.useShadows,this.defaultValue.useShadows),verticalHasArrows:g.boolean(t.verticalHasArrows,this.defaultValue.verticalHasArrows),horizontalHasArrows:g.boolean(t.horizontalHasArrows,this.defaultValue.horizontalHasArrows),handleMouseWheel:g.boolean(t.handleMouseWheel,this.defaultValue.handleMouseWheel),alwaysConsumeMouseWheel:g.boolean(t.alwaysConsumeMouseWheel,this.defaultValue.alwaysConsumeMouseWheel),horizontalScrollbarSize:i,horizontalSliderSize:f.clampedInt(t.horizontalSliderSize,i,0,1e3),verticalScrollbarSize:n,verticalSliderSize:f.clampedInt(t.verticalSliderSize,n,0,1e3)}}}),scrollBeyondLastColumn:D(new f(85,"scrollBeyondLastColumn",5,0,1073741824,{description:n.N("scrollBeyondLastColumn","Controls the number of extra characters beyond which the editor will scroll horizontally.")})),scrollBeyondLastLine:D(new g(86,"scrollBeyondLastLine",!0,{description:n.N("scrollBeyondLastLine","Controls whether the editor will scroll beyond the last line.")})),scrollPredominantAxis:D(new g(87,"scrollPredominantAxis",!0,{description:n.N("scrollPredominantAxis","Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.")})),selectionClipboard:D(new g(88,"selectionClipboard",!0,{description:n.N("selectionClipboard","Controls whether the Linux primary clipboard should be supported."),included:r.IJ})),selectionHighlight:D(new g(89,"selectionHighlight",!0,{description:n.N("selectionHighlight","Controls whether the editor should highlight matches similar to the selection.")})),selectOnLineNumbers:D(new g(90,"selectOnLineNumbers",!0)),showFoldingControls:D(new _(91,"showFoldingControls","mouseover",["always","mouseover"],{enumDescriptions:[n.N("showFoldingControls.always","Always show the folding controls."),n.N("showFoldingControls.mouseover","Only show the folding controls when the mouse is over the gutter.")],description:n.N("showFoldingControls","Controls when the folding controls on the gutter are shown.")})),showUnused:D(new g(92,"showUnused",!0,{description:n.N("showUnused","Controls fading out of unused code.")})),showDeprecated:D(new g(113,"showDeprecated",!0,{description:n.N("showDeprecated","Controls strikethrough deprecated variables.")})),snippetSuggestions:D(new _(93,"snippetSuggestions","inline",["top","bottom","inline","none"],{enumDescriptions:[n.N("snippetSuggestions.top","Show snippet suggestions on top of other suggestions."),n.N("snippetSuggestions.bottom","Show snippet suggestions below other suggestions."),n.N("snippetSuggestions.inline","Show snippets suggestions with other suggestions."),n.N("snippetSuggestions.none","Do not show snippet suggestions.")],description:n.N("snippetSuggestions","Controls whether snippets are shown with other suggestions and how they are sorted.")})),smoothScrolling:D(new g(94,"smoothScrolling",!1,{description:n.N("smoothScrolling","Controls whether the editor will scroll using an animation.")})),stopRenderingLineAfter:D(new f(95,"stopRenderingLineAfter",1e4,-1,1073741824)),suggest:D(new class extends d{constructor(){const e={insertMode:"insert",filterGraceful:!0,snippetsPreventQuickSuggestions:!0,localityBonus:!1,shareSuggestSelections:!1,showIcons:!0,maxVisibleSuggestions:12,showMethods:!0,showFunctions:!0,showConstructors:!0,showFields:!0,showVariables:!0,showClasses:!0,showStructs:!0,showInterfaces:!0,showModules:!0,showProperties:!0,showEvents:!0,showOperators:!0,showUnits:!0,showValues:!0,showConstants:!0,showEnums:!0,showEnumMembers:!0,showKeywords:!0,showWords:!0,showColors:!0,showFiles:!0,showReferences:!0,showFolders:!0,showTypeParameters:!0,showSnippets:!0,showUsers:!0,showIssues:!0,statusBar:{visible:!1}};super(96,"suggest",e,{"editor.suggest.insertMode":{type:"string",enum:["insert","replace"],enumDescriptions:[n.N("suggest.insertMode.insert","Insert suggestion without overwriting text right of the cursor."),n.N("suggest.insertMode.replace","Insert suggestion and overwrite text right of the cursor.")],default:e.insertMode,description:n.N("suggest.insertMode","Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.")},"editor.suggest.filterGraceful":{type:"boolean",default:e.filterGraceful,description:n.N("suggest.filterGraceful","Controls whether filtering and sorting suggestions accounts for small typos.")},"editor.suggest.localityBonus":{type:"boolean",default:e.localityBonus,description:n.N("suggest.localityBonus","Controls whether sorting favours words that appear close to the cursor.")},"editor.suggest.shareSuggestSelections":{type:"boolean",default:e.shareSuggestSelections,markdownDescription:n.N("suggest.shareSuggestSelections","Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).")},"editor.suggest.snippetsPreventQuickSuggestions":{type:"boolean",default:e.snippetsPreventQuickSuggestions,description:n.N("suggest.snippetsPreventQuickSuggestions","Controls whether an active snippet prevents quick suggestions.")},"editor.suggest.showIcons":{type:"boolean",default:e.showIcons,description:n.N("suggest.showIcons","Controls whether to show or hide icons in suggestions.")},"editor.suggest.maxVisibleSuggestions":{type:"number",default:e.maxVisibleSuggestions,minimum:1,maximum:15,description:n.N("suggest.maxVisibleSuggestions","Controls how many suggestions IntelliSense will show before showing a scrollbar (maximum 15).")},"editor.suggest.filteredTypes":{type:"object",deprecationMessage:n.N("deprecated","This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.")},"editor.suggest.showMethods":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showMethods","When enabled IntelliSense shows `method`-suggestions.")},"editor.suggest.showFunctions":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showFunctions","When enabled IntelliSense shows `function`-suggestions.")},"editor.suggest.showConstructors":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showConstructors","When enabled IntelliSense shows `constructor`-suggestions.")},"editor.suggest.showFields":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showFields","When enabled IntelliSense shows `field`-suggestions.")},"editor.suggest.showVariables":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showVariables","When enabled IntelliSense shows `variable`-suggestions.")},"editor.suggest.showClasses":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showClasss","When enabled IntelliSense shows `class`-suggestions.")},"editor.suggest.showStructs":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showStructs","When enabled IntelliSense shows `struct`-suggestions.")},"editor.suggest.showInterfaces":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showInterfaces","When enabled IntelliSense shows `interface`-suggestions.")},"editor.suggest.showModules":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showModules","When enabled IntelliSense shows `module`-suggestions.")},"editor.suggest.showProperties":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showPropertys","When enabled IntelliSense shows `property`-suggestions.")},"editor.suggest.showEvents":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showEvents","When enabled IntelliSense shows `event`-suggestions.")},"editor.suggest.showOperators":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showOperators","When enabled IntelliSense shows `operator`-suggestions.")},"editor.suggest.showUnits":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showUnits","When enabled IntelliSense shows `unit`-suggestions.")},"editor.suggest.showValues":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showValues","When enabled IntelliSense shows `value`-suggestions.")},"editor.suggest.showConstants":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showConstants","When enabled IntelliSense shows `constant`-suggestions.")},"editor.suggest.showEnums":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showEnums","When enabled IntelliSense shows `enum`-suggestions.")},"editor.suggest.showEnumMembers":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showEnumMembers","When enabled IntelliSense shows `enumMember`-suggestions.")},"editor.suggest.showKeywords":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showKeywords","When enabled IntelliSense shows `keyword`-suggestions.")},"editor.suggest.showWords":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showTexts","When enabled IntelliSense shows `text`-suggestions.")},"editor.suggest.showColors":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showColors","When enabled IntelliSense shows `color`-suggestions.")},"editor.suggest.showFiles":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showFiles","When enabled IntelliSense shows `file`-suggestions.")},"editor.suggest.showReferences":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showReferences","When enabled IntelliSense shows `reference`-suggestions.")},"editor.suggest.showCustomcolors":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showCustomcolors","When enabled IntelliSense shows `customcolor`-suggestions.")},"editor.suggest.showFolders":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showFolders","When enabled IntelliSense shows `folder`-suggestions.")},"editor.suggest.showTypeParameters":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showTypeParameters","When enabled IntelliSense shows `typeParameter`-suggestions.")},"editor.suggest.showSnippets":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showSnippets","When enabled IntelliSense shows `snippet`-suggestions.")},"editor.suggest.showUsers":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showUsers","When enabled IntelliSense shows `user`-suggestions.")},"editor.suggest.showIssues":{type:"boolean",default:!0,markdownDescription:n.N("editor.suggest.showIssues","When enabled IntelliSense shows `issues`-suggestions.")},"editor.suggest.statusBar.visible":{type:"boolean",default:!1,markdownDescription:n.N("editor.suggest.statusBar.visible","Controls the visibility of the status bar at the bottom of the suggest widget.")}})}validate(e){var t;if(!e||"object"!=typeof e)return this.defaultValue;const i=e;return{insertMode:_.stringSet(i.insertMode,this.defaultValue.insertMode,["insert","replace"]),filterGraceful:g.boolean(i.filterGraceful,this.defaultValue.filterGraceful),snippetsPreventQuickSuggestions:g.boolean(i.snippetsPreventQuickSuggestions,this.defaultValue.filterGraceful),localityBonus:g.boolean(i.localityBonus,this.defaultValue.localityBonus),shareSuggestSelections:g.boolean(i.shareSuggestSelections,this.defaultValue.shareSuggestSelections),showIcons:g.boolean(i.showIcons,this.defaultValue.showIcons),maxVisibleSuggestions:f.clampedInt(i.maxVisibleSuggestions,this.defaultValue.maxVisibleSuggestions,1,15),showMethods:g.boolean(i.showMethods,this.defaultValue.showMethods),showFunctions:g.boolean(i.showFunctions,this.defaultValue.showFunctions),showConstructors:g.boolean(i.showConstructors,this.defaultValue.showConstructors),showFields:g.boolean(i.showFields,this.defaultValue.showFields),showVariables:g.boolean(i.showVariables,this.defaultValue.showVariables),showClasses:g.boolean(i.showClasses,this.defaultValue.showClasses),showStructs:g.boolean(i.showStructs,this.defaultValue.showStructs),showInterfaces:g.boolean(i.showInterfaces,this.defaultValue.showInterfaces),showModules:g.boolean(i.showModules,this.defaultValue.showModules),showProperties:g.boolean(i.showProperties,this.defaultValue.showProperties),showEvents:g.boolean(i.showEvents,this.defaultValue.showEvents),showOperators:g.boolean(i.showOperators,this.defaultValue.showOperators),showUnits:g.boolean(i.showUnits,this.defaultValue.showUnits),showValues:g.boolean(i.showValues,this.defaultValue.showValues),showConstants:g.boolean(i.showConstants,this.defaultValue.showConstants),showEnums:g.boolean(i.showEnums,this.defaultValue.showEnums),showEnumMembers:g.boolean(i.showEnumMembers,this.defaultValue.showEnumMembers),showKeywords:g.boolean(i.showKeywords,this.defaultValue.showKeywords),showWords:g.boolean(i.showWords,this.defaultValue.showWords),showColors:g.boolean(i.showColors,this.defaultValue.showColors),showFiles:g.boolean(i.showFiles,this.defaultValue.showFiles),showReferences:g.boolean(i.showReferences,this.defaultValue.showReferences),showFolders:g.boolean(i.showFolders,this.defaultValue.showFolders),showTypeParameters:g.boolean(i.showTypeParameters,this.defaultValue.showTypeParameters),showSnippets:g.boolean(i.showSnippets,this.defaultValue.showSnippets),showUsers:g.boolean(i.showUsers,this.defaultValue.showUsers),showIssues:g.boolean(i.showIssues,this.defaultValue.showIssues),statusBar:{visible:g.boolean(null===(t=i.statusBar)||void 0===t?void 0:t.visible,!!this.defaultValue.statusBar.visible)}}}}),suggestFontSize:D(new f(97,"suggestFontSize",0,0,1e3,{markdownDescription:n.N("suggestFontSize","Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.")})),suggestLineHeight:D(new f(98,"suggestLineHeight",0,0,1e3,{markdownDescription:n.N("suggestLineHeight","Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used.")})),suggestOnTriggerCharacters:D(new g(99,"suggestOnTriggerCharacters",!0,{description:n.N("suggestOnTriggerCharacters","Controls whether suggestions should automatically show up when typing trigger characters.")})),suggestSelection:D(new _(100,"suggestSelection","recentlyUsed",["first","recentlyUsed","recentlyUsedByPrefix"],{markdownEnumDescriptions:[n.N("suggestSelection.first","Always select the first suggestion."),n.N("suggestSelection.recentlyUsed","Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently."),n.N("suggestSelection.recentlyUsedByPrefix","Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.")],description:n.N("suggestSelection","Controls how suggestions are pre-selected when showing the suggest list.")})),tabCompletion:D(new _(101,"tabCompletion","off",["on","off","onlySnippets"],{enumDescriptions:[n.N("tabCompletion.on","Tab complete will insert the best matching suggestion when pressing tab."),n.N("tabCompletion.off","Disable tab completions."),n.N("tabCompletion.onlySnippets","Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.")],description:n.N("tabCompletion","Enables tab completions.")})),tabIndex:D(new f(102,"tabIndex",0,-1,1073741824)),unusualLineTerminators:D(new _(103,"unusualLineTerminators","prompt",["off","prompt","auto"],{enumDescriptions:[n.N("unusualLineTerminators.off","Unusual line terminators are ignored."),n.N("unusualLineTerminators.prompt","Unusual line terminators prompt to be removed."),n.N("unusualLineTerminators.auto","Unusual line terminators are automatically removed.")],description:n.N("unusualLineTerminators","Remove unusual line terminators that might cause problems.")})),useTabStops:D(new g(104,"useTabStops",!0,{description:n.N("useTabStops","Inserting and deleting whitespace follows tab stops.")})),wordSeparators:D(new m(105,"wordSeparators",s.vu,{description:n.N("wordSeparators","Characters that will be used as word separators when doing word related navigations or operations.")})),wordWrap:D(new _(106,"wordWrap","off",["off","on","wordWrapColumn","bounded"],{markdownEnumDescriptions:[n.N("wordWrap.off","Lines will never wrap."),n.N("wordWrap.on","Lines will wrap at the viewport width."),n.N({key:"wordWrap.wordWrapColumn",comment:["- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at `#editor.wordWrapColumn#`."),n.N({key:"wordWrap.bounded",comment:["- viewport means the edge of the visible window size.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.")],description:n.N({key:"wordWrap",comment:["- 'off', 'on', 'wordWrapColumn' and 'bounded' refer to values the setting can take and should not be localized.","- `editor.wordWrapColumn` refers to a different setting and should not be localized."]},"Controls how lines should wrap.")})),wordWrapBreakAfterCharacters:D(new m(107,"wordWrapBreakAfterCharacters"," \t})]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」")),wordWrapBreakBeforeCharacters:D(new m(108,"wordWrapBreakBeforeCharacters","([{‘“〈《「『【〔([{「£¥$£¥++")),wordWrapColumn:D(new f(109,"wordWrapColumn",80,1,1073741824,{markdownDescription:n.N({key:"wordWrapColumn",comment:["- `editor.wordWrap` refers to a different setting and should not be localized.","- 'wordWrapColumn' and 'bounded' refer to values the different setting can take and should not be localized."]},"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.")})),wordWrapMinified:D(new g(110,"wordWrapMinified",!0)),wrappingIndent:D(new b(111,"wrappingIndent",1,"same",["none","same","indent","deepIndent"],(function(e){switch(e){case"none":return 0;case"same":return 1;case"indent":return 2;case"deepIndent":return 3}}),{enumDescriptions:[n.N("wrappingIndent.none","No indentation. Wrapped lines begin at column 1."),n.N("wrappingIndent.same","Wrapped lines get the same indentation as the parent."),n.N("wrappingIndent.indent","Wrapped lines get +1 indentation toward the parent."),n.N("wrappingIndent.deepIndent","Wrapped lines get +2 indentation toward the parent.")],description:n.N("wrappingIndent","Controls the indentation of wrapped lines.")})),wrappingStrategy:D(new _(112,"wrappingStrategy","simple",["simple","advanced"],{enumDescriptions:[n.N("wrappingStrategy.simple","Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width."),n.N("wrappingStrategy.advanced","Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.")],description:n.N("wrappingStrategy","Controls the algorithm that computes wrapping points.")})),editorClassName:D(new class extends h{constructor(){super(114,[57,27])}compute(e,t,i){const n=["monaco-editor"];return t.get(27)&&n.push(t.get(27)),e.extraEditorClassName&&n.push(e.extraEditorClassName),"default"===t.get(57)?n.push("mouse-default"):"copy"===t.get(57)&&n.push("mouse-copy"),t.get(92)&&n.push("showUnused"),t.get(113)&&n.push("showDeprecated"),n.join(" ")}}),pixelRatio:D(new class extends h{constructor(){super(115)}compute(e,t,i){return e.pixelRatio}}),tabFocusMode:D(new class extends h{constructor(){super(116,[72])}compute(e,t,i){return!!t.get(72)||e.tabFocusMode}}),layoutInfo:D(new C),wrappingInfo:D(new class extends h{constructor(){super(118,[117])}compute(e,t,i){const n=t.get(117);return{isDominatedByLongLines:e.isDominatedByLongLines,isWordWrapMinified:n.isWordWrapMinified,isViewportWrapping:n.isViewportWrapping,wrappingColumn:n.wrappingColumn}}})}},82334:(e,t,i)=>{"use strict";i.d(t,{C:()=>r});var n=i(4669);const r=new class{constructor(){this._zoomLevel=0,this._onDidChangeZoomLevel=new n.Q5,this.onDidChangeZoomLevel=this._onDidChangeZoomLevel.event}getZoomLevel(){return this._zoomLevel}setZoomLevel(e){e=Math.min(Math.max(-5,e),20),this._zoomLevel!==e&&(this._zoomLevel=e,this._onDidChangeZoomLevel.fire(this._zoomLevel))}}},27374:(e,t,i)=>{"use strict";i.d(t,{E:()=>o,p:()=>a});var n=i(1432),r=i(82334);const s=n.dz?1.5:1.35;class o{constructor(e){this.zoomLevel=e.zoomLevel,this.fontFamily=String(e.fontFamily),this.fontWeight=String(e.fontWeight),this.fontSize=e.fontSize,this.fontFeatureSettings=e.fontFeatureSettings,this.lineHeight=0|e.lineHeight,this.letterSpacing=e.letterSpacing}static createFromValidatedSettings(e,t,i){const n=e.get(35),r=e.get(39),s=e.get(38),a=e.get(37),l=e.get(51),c=e.get(48);return o._create(n,r,s,a,l,c,t,i)}static _create(e,t,i,n,a,l,c,d){0===a?a=Math.round(s*i):a<8&&(a=8);const h=1+(d?0:.1*r.C.getZoomLevel());return new o({zoomLevel:c,fontFamily:e,fontWeight:t,fontSize:i*=h,fontFeatureSettings:n,lineHeight:a*=h,letterSpacing:l})}getId(){return this.zoomLevel+"-"+this.fontFamily+"-"+this.fontWeight+"-"+this.fontSize+"-"+this.fontFeatureSettings+"-"+this.lineHeight+"-"+this.letterSpacing}getMassagedFontFamily(){return/[,"']/.test(this.fontFamily)?this.fontFamily:/[+ ]/.test(this.fontFamily)?`"${this.fontFamily}"`:this.fontFamily}}class a extends o{constructor(e,t){super(e),this.isTrusted=t,this.isMonospace=e.isMonospace,this.typicalHalfwidthCharacterWidth=e.typicalHalfwidthCharacterWidth,this.typicalFullwidthCharacterWidth=e.typicalFullwidthCharacterWidth,this.canUseHalfwidthRightwardsArrow=e.canUseHalfwidthRightwardsArrow,this.spaceWidth=e.spaceWidth,this.middotWidth=e.middotWidth,this.wsmiddotWidth=e.wsmiddotWidth,this.maxDigitWidth=e.maxDigitWidth}equals(e){return this.fontFamily===e.fontFamily&&this.fontWeight===e.fontWeight&&this.fontSize===e.fontSize&&this.fontFeatureSettings===e.fontFeatureSettings&&this.lineHeight===e.lineHeight&&this.letterSpacing===e.letterSpacing&&this.typicalHalfwidthCharacterWidth===e.typicalHalfwidthCharacterWidth&&this.typicalFullwidthCharacterWidth===e.typicalFullwidthCharacterWidth&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.spaceWidth===e.spaceWidth&&this.middotWidth===e.middotWidth&&this.wsmiddotWidth===e.wsmiddotWidth&&this.maxDigitWidth===e.maxDigitWidth}}},33181:(e,t,i)=>{"use strict";i.d(t,{LM:()=>f,rS:()=>p,zp:()=>m,Vi:()=>v,Tp:()=>y,io:()=>w,LN:()=>C});var n=i(17301),r=i(97295),s=i(50187),o=i(24314),a=i(3860),l=i(3411),c=i(83831);const d=()=>!0,h=()=>!1,u=e=>" "===e||"\t"===e;function g(e,t,i){e.has(t)?e.get(t).push(i):e.set(t,[i])}class f{constructor(e,t,i){this._languageIdentifier=e;const n=i.options,r=n.get(117);this.readOnly=n.get(72),this.tabSize=t.tabSize,this.indentSize=t.indentSize,this.insertSpaces=t.insertSpaces,this.lineHeight=n.get(51),this.pageSize=Math.max(1,Math.floor(r.height/this.lineHeight)-2),this.useTabStops=n.get(104),this.wordSeparators=n.get(105),this.emptySelectionClipboard=n.get(26),this.copyWithSyntaxHighlighting=n.get(16),this.multiCursorMergeOverlapping=n.get(60),this.multiCursorPaste=n.get(62),this.autoClosingBrackets=n.get(5),this.autoClosingQuotes=n.get(7),this.autoClosingOvertype=n.get(6),this.autoSurround=n.get(10),this.autoIndent=n.get(8),this.autoClosingPairsOpen2=new Map,this.autoClosingPairsClose2=new Map,this.surroundingPairs={},this._electricChars=null,this.shouldAutoCloseBefore={quote:f._getShouldAutoClose(e,this.autoClosingQuotes),bracket:f._getShouldAutoClose(e,this.autoClosingBrackets)};let s=f._getAutoClosingPairs(e);if(s)for(const e of s)g(this.autoClosingPairsOpen2,e.open.charAt(e.open.length-1),e),1===e.close.length&&g(this.autoClosingPairsClose2,e.close,e);let o=f._getSurroundingPairs(e);if(o)for(const e of o)this.surroundingPairs[e.open]=e.close}static shouldRecreate(e){return e.hasChanged(117)||e.hasChanged(105)||e.hasChanged(26)||e.hasChanged(60)||e.hasChanged(62)||e.hasChanged(5)||e.hasChanged(7)||e.hasChanged(6)||e.hasChanged(10)||e.hasChanged(104)||e.hasChanged(51)||e.hasChanged(72)}get electricChars(){if(!this._electricChars){this._electricChars={};let e=f._getElectricCharacters(this._languageIdentifier);if(e)for(const t of e)this._electricChars[t]=!0}return this._electricChars}normalizeIndentation(e){return l.yO.normalizeIndentation(e,this.indentSize,this.insertSpaces)}static _getElectricCharacters(e){try{return c.zu.getElectricCharacters(e.id)}catch(e){return(0,n.dL)(e),null}}static _getAutoClosingPairs(e){try{return c.zu.getAutoClosingPairs(e.id)}catch(e){return(0,n.dL)(e),null}}static _getShouldAutoClose(e,t){switch(t){case"beforeWhitespace":return u;case"languageDefined":return f._getLanguageDefinedShouldAutoClose(e);case"always":return d;case"never":return h}}static _getLanguageDefinedShouldAutoClose(e){try{const t=c.zu.getAutoCloseBeforeSet(e.id);return e=>-1!==t.indexOf(e)}catch(e){return(0,n.dL)(e),h}}static _getSurroundingPairs(e){try{return c.zu.getSurroundingPairs(e.id)}catch(e){return(0,n.dL)(e),null}}}class p{constructor(e,t,i,n){this.selectionStart=e,this.selectionStartLeftoverVisibleColumns=t,this.position=i,this.leftoverVisibleColumns=n,this.selection=p._computeSelection(this.selectionStart,this.position)}equals(e){return this.selectionStartLeftoverVisibleColumns===e.selectionStartLeftoverVisibleColumns&&this.leftoverVisibleColumns===e.leftoverVisibleColumns&&this.position.equals(e.position)&&this.selectionStart.equalsRange(e.selectionStart)}hasSelection(){return!this.selection.isEmpty()||!this.selectionStart.isEmpty()}move(e,t,i,n){return e?new p(this.selectionStart,this.selectionStartLeftoverVisibleColumns,new s.L(t,i),n):new p(new o.e(t,i,t,i),n,new s.L(t,i),n)}static _computeSelection(e,t){let i,n,r,s;return e.isEmpty()?(i=e.startLineNumber,n=e.startColumn,r=t.lineNumber,s=t.column):t.isBeforeOrEqual(e.getStartPosition())?(i=e.endLineNumber,n=e.endColumn,r=t.lineNumber,s=t.column):(i=e.startLineNumber,n=e.startColumn,r=t.lineNumber,s=t.column),new a.Y(i,n,r,s)}}class m{constructor(e,t,i){this.model=e,this.coordinatesConverter=t,this.cursorConfig=i}}class _{constructor(e){this.modelState=e,this.viewState=null}}class b{constructor(e){this.modelState=null,this.viewState=e}}class v{constructor(e,t){this.modelState=e,this.viewState=t}static fromModelState(e){return new _(e)}static fromViewState(e){return new b(e)}static fromModelSelection(e){const t=e.selectionStartLineNumber,i=e.selectionStartColumn,n=e.positionLineNumber,r=e.positionColumn,a=new p(new o.e(t,i,t,i),0,new s.L(n,r),0);return v.fromModelState(a)}static fromModelSelections(e){let t=[];for(let i=0,n=e.length;i<n;i++)t[i]=this.fromModelSelection(e[i]);return t}equals(e){return this.viewState.equals(e.viewState)&&this.modelState.equals(e.modelState)}}class y{constructor(e,t,i){this.type=e,this.commands=t,this.shouldPushStackElementBefore=i.shouldPushStackElementBefore,this.shouldPushStackElementAfter=i.shouldPushStackElementAfter}}class w{static visibleColumnFromColumn(e,t,i){const n=e.length,s=t-1<n?t-1:n;let o=0,a=0;for(;a<s;){const t=r.ZH(e,s,a);if(a+=t>=65536?2:1,9===t)o=w.nextRenderTabStop(o,i);else{let i=r.S6(t);for(;a<s;){const t=r.ZH(e,s,a),n=r.S6(t);if(r.fi(i,n))break;a+=t>=65536?2:1,i=n}r.K7(t)||r.C8(t)?o+=2:o+=1}}return o}static visibleColumnFromColumn2(e,t,i){return this.visibleColumnFromColumn(t.getLineContent(i.lineNumber),i.column,e.tabSize)}static columnFromVisibleColumn(e,t,i){if(t<=0)return 1;const n=e.length;let s=0,o=1,a=0;for(;a<n;){const l=r.ZH(e,n,a);let c;if(a+=l>=65536?2:1,9===l)c=w.nextRenderTabStop(s,i);else{let t=r.S6(l);for(;a<n;){const i=r.ZH(e,n,a),s=r.S6(i);if(r.fi(t,s))break;a+=i>=65536?2:1,t=s}c=r.K7(l)||r.C8(l)?s+2:s+1}const d=a+1;if(c>=t)return c-t<t-s?d:o;s=c,o=d}return n+1}static columnFromVisibleColumn2(e,t,i,n){let r=this.columnFromVisibleColumn(t.getLineContent(i),n,e.tabSize),s=t.getLineMinColumn(i);if(r<s)return s;let o=t.getLineMaxColumn(i);return r>o?o:r}static nextRenderTabStop(e,t){return e+t-e%t}static nextIndentTabStop(e,t){return e+t-e%t}static prevRenderTabStop(e,t){return e-1-(e-1)%t}static prevIndentTabStop(e,t){return e-1-(e-1)%t}}function C(e){return"'"===e||'"'===e||"`"===e}},31380:(e,t,i)=>{"use strict";i.d(t,{A:()=>l});var n=i(97295),r=i(61329),s=i(33181),o=i(88784),a=i(24314);class l{static deleteRight(e,t,i,n){let s=[],l=3!==e;for(let e=0,c=n.length;e<c;e++){const c=n[e];let d=c;if(d.isEmpty()){let e=c.getPosition(),n=o.o.right(t,i,e.lineNumber,e.column);d=new a.e(n.lineNumber,n.column,e.lineNumber,e.column)}d.isEmpty()?s[e]=null:(d.startLineNumber!==d.endLineNumber&&(l=!0),s[e]=new r.T4(d,""))}return[l,s]}static _isAutoClosingPairDelete(e,t,i){if("never"===e.autoClosingBrackets&&"never"===e.autoClosingQuotes)return!1;for(let n=0,r=i.length;n<r;n++){const r=i[n],o=r.getPosition();if(!r.isEmpty())return!1;const a=t.getLineContent(o.lineNumber),l=a[o.column-2],c=e.autoClosingPairsOpen2.get(l);if(!c)return!1;if((0,s.LN)(l)){if("never"===e.autoClosingQuotes)return!1}else if("never"===e.autoClosingBrackets)return!1;const d=a[o.column-1];let h=!1;for(const e of c)e.open===l&&e.close===d&&(h=!0);if(!h)return!1}return!0}static _runAutoClosingPairDelete(e,t,i){let n=[];for(let e=0,t=i.length;e<t;e++){const t=i[e].getPosition(),s=new a.e(t.lineNumber,t.column-1,t.lineNumber,t.column+1);n[e]=new r.T4(s,"")}return[!0,n]}static deleteLeft(e,t,i,l){if(this._isAutoClosingPairDelete(t,i,l))return this._runAutoClosingPairDelete(t,i,l);let c=[],d=2!==e;for(let e=0,h=l.length;e<h;e++){const h=l[e];let u=h;if(u.isEmpty()){let e=h.getPosition();if(t.useTabStops&&e.column>1){let r=i.getLineContent(e.lineNumber),o=n.LC(r),l=-1===o?r.length+1:o+1;if(e.column<=l){let n=s.io.visibleColumnFromColumn2(t,i,e),r=s.io.prevIndentTabStop(n,t.indentSize),o=s.io.columnFromVisibleColumn2(t,i,e.lineNumber,r);u=new a.e(e.lineNumber,o,e.lineNumber,e.column)}else u=new a.e(e.lineNumber,e.column-1,e.lineNumber,e.column)}else{let n=o.o.left(t,i,e.lineNumber,e.column);u=new a.e(n.lineNumber,n.column,e.lineNumber,e.column)}}u.isEmpty()?c[e]=null:(u.startLineNumber!==u.endLineNumber&&(d=!0),c[e]=new r.T4(u,""))}return[d,c]}static cut(e,t,i){let n=[];for(let s=0,o=i.length;s<o;s++){const o=i[s];if(o.isEmpty())if(e.emptySelectionClipboard){let e,i,l,c,d=o.getPosition();d.lineNumber<t.getLineCount()?(e=d.lineNumber,i=1,l=d.lineNumber+1,c=1):d.lineNumber>1?(e=d.lineNumber-1,i=t.getLineMaxColumn(d.lineNumber-1),l=d.lineNumber,c=t.getLineMaxColumn(d.lineNumber)):(e=d.lineNumber,i=1,l=d.lineNumber,c=t.getLineMaxColumn(d.lineNumber));let h=new a.e(e,i,l,c);h.isEmpty()?n[s]=null:n[s]=new r.T4(h,"")}else n[s]=null;else n[s]=new r.T4(o,"")}return new s.Tp(0,n,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}}},83814:(e,t,i)=>{"use strict";i.d(t,{P:()=>d,N:()=>n});var n,r=i(98401),s=i(33181),o=i(88784),a=i(5795),l=i(50187),c=i(24314);class d{static addCursorDown(e,t,i){let n=[],r=0;for(let a=0,l=t.length;a<l;a++){const l=t[a];n[r++]=new s.Vi(l.modelState,l.viewState),n[r++]=i?s.Vi.fromModelState(o.o.translateDown(e.cursorConfig,e.model,l.modelState)):s.Vi.fromViewState(o.o.translateDown(e.cursorConfig,e,l.viewState))}return n}static addCursorUp(e,t,i){let n=[],r=0;for(let a=0,l=t.length;a<l;a++){const l=t[a];n[r++]=new s.Vi(l.modelState,l.viewState),n[r++]=i?s.Vi.fromModelState(o.o.translateUp(e.cursorConfig,e.model,l.modelState)):s.Vi.fromViewState(o.o.translateUp(e.cursorConfig,e,l.viewState))}return n}static moveToBeginningOfLine(e,t,i){let n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r];n[r]=this._moveToLineStart(e,s,i)}return n}static _moveToLineStart(e,t,i){const n=t.viewState.position.column,r=n===t.modelState.position.column,s=t.viewState.position.lineNumber,o=e.getLineFirstNonWhitespaceColumn(s);return r||n===o?this._moveToLineStartByModel(e,t,i):this._moveToLineStartByView(e,t,i)}static _moveToLineStartByView(e,t,i){return s.Vi.fromViewState(o.o.moveToBeginningOfLine(e.cursorConfig,e,t.viewState,i))}static _moveToLineStartByModel(e,t,i){return s.Vi.fromModelState(o.o.moveToBeginningOfLine(e.cursorConfig,e.model,t.modelState,i))}static moveToEndOfLine(e,t,i,n){let r=[];for(let s=0,o=t.length;s<o;s++){const o=t[s];r[s]=this._moveToLineEnd(e,o,i,n)}return r}static _moveToLineEnd(e,t,i,n){const r=t.viewState.position,s=e.getLineMaxColumn(r.lineNumber),o=r.column===s,a=t.modelState.position,l=e.model.getLineMaxColumn(a.lineNumber),c=s-r.column==l-a.column;return o||c?this._moveToLineEndByModel(e,t,i,n):this._moveToLineEndByView(e,t,i,n)}static _moveToLineEndByView(e,t,i,n){return s.Vi.fromViewState(o.o.moveToEndOfLine(e.cursorConfig,e,t.viewState,i,n))}static _moveToLineEndByModel(e,t,i,n){return s.Vi.fromModelState(o.o.moveToEndOfLine(e.cursorConfig,e.model,t.modelState,i,n))}static expandLineSelection(e,t){let i=[];for(let n=0,r=t.length;n<r;n++){const r=t[n],o=r.modelState.selection.startLineNumber,a=e.model.getLineCount();let d,h=r.modelState.selection.endLineNumber;h===a?d=e.model.getLineMaxColumn(a):(h++,d=1),i[n]=s.Vi.fromModelState(new s.rS(new c.e(o,1,o,1),0,new l.L(h,d),0))}return i}static moveToBeginningOfBuffer(e,t,i){let n=[];for(let r=0,a=t.length;r<a;r++){const a=t[r];n[r]=s.Vi.fromModelState(o.o.moveToBeginningOfBuffer(e.cursorConfig,e.model,a.modelState,i))}return n}static moveToEndOfBuffer(e,t,i){let n=[];for(let r=0,a=t.length;r<a;r++){const a=t[r];n[r]=s.Vi.fromModelState(o.o.moveToEndOfBuffer(e.cursorConfig,e.model,a.modelState,i))}return n}static selectAll(e,t){const i=e.model.getLineCount(),n=e.model.getLineMaxColumn(i);return s.Vi.fromModelState(new s.rS(new c.e(1,1,1,1),0,new l.L(i,n),0))}static line(e,t,i,n,r){const o=e.model.validatePosition(n),a=r?e.coordinatesConverter.validateViewPosition(new l.L(r.lineNumber,r.column),o):e.coordinatesConverter.convertModelPositionToViewPosition(o);if(!i||!t.modelState.hasSelection()){const t=e.model.getLineCount();let i=o.lineNumber+1,n=1;return i>t&&(i=t,n=e.model.getLineMaxColumn(i)),s.Vi.fromModelState(new s.rS(new c.e(o.lineNumber,1,i,n),0,new l.L(i,n),0))}const d=t.modelState.selectionStart.getStartPosition().lineNumber;if(o.lineNumber<d)return s.Vi.fromViewState(t.viewState.move(t.modelState.hasSelection(),a.lineNumber,1,0));if(o.lineNumber>d){const i=e.getLineCount();let n=a.lineNumber+1,r=1;return n>i&&(n=i,r=e.getLineMaxColumn(n)),s.Vi.fromViewState(t.viewState.move(t.modelState.hasSelection(),n,r,0))}{const e=t.modelState.selectionStart.getEndPosition();return s.Vi.fromModelState(t.modelState.move(t.modelState.hasSelection(),e.lineNumber,e.column,0))}}static word(e,t,i,n){const r=e.model.validatePosition(n);return s.Vi.fromModelState(a.w.word(e.cursorConfig,e.model,t.modelState,i,r))}static cancelSelection(e,t){if(!t.modelState.hasSelection())return new s.Vi(t.modelState,t.viewState);const i=t.viewState.position.lineNumber,n=t.viewState.position.column;return s.Vi.fromViewState(new s.rS(new c.e(i,n,i,n),0,new l.L(i,n),0))}static moveTo(e,t,i,n,r){const o=e.model.validatePosition(n),a=r?e.coordinatesConverter.validateViewPosition(new l.L(r.lineNumber,r.column),o):e.coordinatesConverter.convertModelPositionToViewPosition(o);return s.Vi.fromViewState(t.viewState.move(i,a.lineNumber,a.column,0))}static simpleMove(e,t,i,n,r,s){switch(i){case 0:return 4===s?this._moveHalfLineLeft(e,t,n):this._moveLeft(e,t,n,r);case 1:return 4===s?this._moveHalfLineRight(e,t,n):this._moveRight(e,t,n,r);case 2:return 2===s?this._moveUpByViewLines(e,t,n,r):this._moveUpByModelLines(e,t,n,r);case 3:return 2===s?this._moveDownByViewLines(e,t,n,r):this._moveDownByModelLines(e,t,n,r);case 4:return this._moveToViewMinColumn(e,t,n);case 5:return this._moveToViewFirstNonWhitespaceColumn(e,t,n);case 6:return this._moveToViewCenterColumn(e,t,n);case 7:return this._moveToViewMaxColumn(e,t,n);case 8:return this._moveToViewLastNonWhitespaceColumn(e,t,n);default:return null}}static viewportMove(e,t,i,n,r){const s=e.getCompletelyVisibleViewRange(),o=e.coordinatesConverter.convertViewRangeToModelRange(s);switch(i){case 9:{const i=this._firstLineNumberInRange(e.model,o,r),s=e.model.getLineFirstNonWhitespaceColumn(i);return[this._moveToModelPosition(e,t[0],n,i,s)]}case 11:{const i=this._lastLineNumberInRange(e.model,o,r),s=e.model.getLineFirstNonWhitespaceColumn(i);return[this._moveToModelPosition(e,t[0],n,i,s)]}case 10:{const i=Math.round((o.startLineNumber+o.endLineNumber)/2),r=e.model.getLineFirstNonWhitespaceColumn(i);return[this._moveToModelPosition(e,t[0],n,i,r)]}case 12:{let i=[];for(let r=0,o=t.length;r<o;r++){const o=t[r];i[r]=this.findPositionInViewportIfOutside(e,o,s,n)}return i}default:return null}}static findPositionInViewportIfOutside(e,t,i,n){let r=t.viewState.position.lineNumber;if(i.startLineNumber<=r&&r<=i.endLineNumber-1)return new s.Vi(t.modelState,t.viewState);{r>i.endLineNumber-1&&(r=i.endLineNumber-1),r<i.startLineNumber&&(r=i.startLineNumber);const s=e.getLineFirstNonWhitespaceColumn(r);return this._moveToViewPosition(e,t,n,r,s)}}static _firstLineNumberInRange(e,t,i){let n=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(n)&&n++,Math.min(t.endLineNumber,n+i-1)}static _lastLineNumberInRange(e,t,i){let n=t.startLineNumber;return t.startColumn!==e.getLineMinColumn(n)&&n++,Math.max(n,t.endLineNumber-i+1)}static _moveLeft(e,t,i,n){const r=t.length>1;let a=[];for(let l=0,c=t.length;l<c;l++){const c=t[l],d=r||!c.viewState.hasSelection();let h=o.o.moveLeft(e.cursorConfig,e,c.viewState,i,n);d&&1===n&&h.position.lineNumber!==c.viewState.position.lineNumber&&e.coordinatesConverter.convertViewPositionToModelPosition(h.position).lineNumber===c.modelState.position.lineNumber&&(h=o.o.moveLeft(e.cursorConfig,e,h,i,1)),a[l]=s.Vi.fromViewState(h)}return a}static _moveHalfLineLeft(e,t,i){let n=[];for(let r=0,a=t.length;r<a;r++){const a=t[r],l=a.viewState.position.lineNumber,c=Math.round(e.getLineContent(l).length/2);n[r]=s.Vi.fromViewState(o.o.moveLeft(e.cursorConfig,e,a.viewState,i,c))}return n}static _moveRight(e,t,i,n){const r=t.length>1;let a=[];for(let l=0,c=t.length;l<c;l++){const c=t[l],d=r||!c.viewState.hasSelection();let h=o.o.moveRight(e.cursorConfig,e,c.viewState,i,n);d&&1===n&&h.position.lineNumber!==c.viewState.position.lineNumber&&e.coordinatesConverter.convertViewPositionToModelPosition(h.position).lineNumber===c.modelState.position.lineNumber&&(h=o.o.moveRight(e.cursorConfig,e,h,i,1)),a[l]=s.Vi.fromViewState(h)}return a}static _moveHalfLineRight(e,t,i){let n=[];for(let r=0,a=t.length;r<a;r++){const a=t[r],l=a.viewState.position.lineNumber,c=Math.round(e.getLineContent(l).length/2);n[r]=s.Vi.fromViewState(o.o.moveRight(e.cursorConfig,e,a.viewState,i,c))}return n}static _moveDownByViewLines(e,t,i,n){let r=[];for(let a=0,l=t.length;a<l;a++){const l=t[a];r[a]=s.Vi.fromViewState(o.o.moveDown(e.cursorConfig,e,l.viewState,i,n))}return r}static _moveDownByModelLines(e,t,i,n){let r=[];for(let a=0,l=t.length;a<l;a++){const l=t[a];r[a]=s.Vi.fromModelState(o.o.moveDown(e.cursorConfig,e.model,l.modelState,i,n))}return r}static _moveUpByViewLines(e,t,i,n){let r=[];for(let a=0,l=t.length;a<l;a++){const l=t[a];r[a]=s.Vi.fromViewState(o.o.moveUp(e.cursorConfig,e,l.viewState,i,n))}return r}static _moveUpByModelLines(e,t,i,n){let r=[];for(let a=0,l=t.length;a<l;a++){const l=t[a];r[a]=s.Vi.fromModelState(o.o.moveUp(e.cursorConfig,e.model,l.modelState,i,n))}return r}static _moveToViewPosition(e,t,i,n,r){return s.Vi.fromViewState(t.viewState.move(i,n,r,0))}static _moveToModelPosition(e,t,i,n,r){return s.Vi.fromModelState(t.modelState.move(i,n,r,0))}static _moveToViewMinColumn(e,t,i){let n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r],o=s.viewState.position.lineNumber,a=e.getLineMinColumn(o);n[r]=this._moveToViewPosition(e,s,i,o,a)}return n}static _moveToViewFirstNonWhitespaceColumn(e,t,i){let n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r],o=s.viewState.position.lineNumber,a=e.getLineFirstNonWhitespaceColumn(o);n[r]=this._moveToViewPosition(e,s,i,o,a)}return n}static _moveToViewCenterColumn(e,t,i){let n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r],o=s.viewState.position.lineNumber,a=Math.round((e.getLineMaxColumn(o)+e.getLineMinColumn(o))/2);n[r]=this._moveToViewPosition(e,s,i,o,a)}return n}static _moveToViewMaxColumn(e,t,i){let n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r],o=s.viewState.position.lineNumber,a=e.getLineMaxColumn(o);n[r]=this._moveToViewPosition(e,s,i,o,a)}return n}static _moveToViewLastNonWhitespaceColumn(e,t,i){let n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r],o=s.viewState.position.lineNumber,a=e.getLineLastNonWhitespaceColumn(o);n[r]=this._moveToViewPosition(e,s,i,o,a)}return n}}!function(e){e.description={description:"Move cursor to a logical position in the view",args:[{name:"Cursor move argument object",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory logical position value providing where to move the cursor.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'left', 'right', 'up', 'down'\n\t\t\t\t\t\t'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n\t\t\t\t\t\t'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n\t\t\t\t\t\t'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t```\n\t\t\t\t\t\t'line', 'wrappedLine', 'character', 'halfLine'\n\t\t\t\t\t\t```\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'select': If 'true' makes the selection. Default is 'false'.\n\t\t\t\t",constraint:function(e){if(!r.Kn(e))return!1;let t=e;return!(!r.HD(t.to)||!r.o8(t.select)&&!r.jn(t.select)||!r.o8(t.by)&&!r.HD(t.by)||!r.o8(t.value)&&!r.hj(t.value))},schema:{type:"object",required:["to"],properties:{to:{type:"string",enum:["left","right","up","down","wrappedLineStart","wrappedLineEnd","wrappedLineColumnCenter","wrappedLineFirstNonWhitespaceCharacter","wrappedLineLastNonWhitespaceCharacter","viewPortTop","viewPortCenter","viewPortBottom","viewPortIfOutside"]},by:{type:"string",enum:["line","wrappedLine","character","halfLine"]},value:{type:"number",default:1},select:{type:"boolean",default:!1}}}}]},e.RawDirection={Left:"left",Right:"right",Up:"up",Down:"down",WrappedLineStart:"wrappedLineStart",WrappedLineFirstNonWhitespaceCharacter:"wrappedLineFirstNonWhitespaceCharacter",WrappedLineColumnCenter:"wrappedLineColumnCenter",WrappedLineEnd:"wrappedLineEnd",WrappedLineLastNonWhitespaceCharacter:"wrappedLineLastNonWhitespaceCharacter",ViewPortTop:"viewPortTop",ViewPortCenter:"viewPortCenter",ViewPortBottom:"viewPortBottom",ViewPortIfOutside:"viewPortIfOutside"},e.RawUnit={Line:"line",WrappedLine:"wrappedLine",Character:"character",HalfLine:"halfLine"},e.parse=function(t){if(!t.to)return null;let i;switch(t.to){case e.RawDirection.Left:i=0;break;case e.RawDirection.Right:i=1;break;case e.RawDirection.Up:i=2;break;case e.RawDirection.Down:i=3;break;case e.RawDirection.WrappedLineStart:i=4;break;case e.RawDirection.WrappedLineFirstNonWhitespaceCharacter:i=5;break;case e.RawDirection.WrappedLineColumnCenter:i=6;break;case e.RawDirection.WrappedLineEnd:i=7;break;case e.RawDirection.WrappedLineLastNonWhitespaceCharacter:i=8;break;case e.RawDirection.ViewPortTop:i=9;break;case e.RawDirection.ViewPortBottom:i=11;break;case e.RawDirection.ViewPortCenter:i=10;break;case e.RawDirection.ViewPortIfOutside:i=12;break;default:return null}let n=0;switch(t.by){case e.RawUnit.Line:n=1;break;case e.RawUnit.WrappedLine:n=2;break;case e.RawUnit.Character:n=3;break;case e.RawUnit.HalfLine:n=4}return{direction:i,unit:n,select:!!t.select,value:t.value||1}}}(n||(n={}))},88784:(e,t,i)=>{"use strict";i.d(t,{o:()=>l});var n=i(33181),r=i(50187),s=i(24314),o=i(97295);class a{constructor(e,t,i){this.lineNumber=e,this.column=t,this.leftoverVisibleColumns=i}}class l{static leftPosition(e,t,i){return i>e.getLineMinColumn(t)?i-=o.HO(e.getLineContent(t),i-1):t>1&&(t-=1,i=e.getLineMaxColumn(t)),new r.L(t,i)}static left(e,t,i,n){const r=l.leftPosition(t,i,n);return new a(r.lineNumber,r.column,0)}static moveLeft(e,t,i,n,r){let s,o;if(i.hasSelection()&&!n)s=i.selection.startLineNumber,o=i.selection.startColumn;else{let n=l.left(e,t,i.position.lineNumber,i.position.column-(r-1));s=n.lineNumber,o=n.column}return i.move(n,s,o,0)}static rightPosition(e,t,i){return i<e.getLineMaxColumn(t)?i+=o.vH(e.getLineContent(t),i-1):t<e.getLineCount()&&(t+=1,i=e.getLineMinColumn(t)),new r.L(t,i)}static right(e,t,i,n){const r=l.rightPosition(t,i,n);return new a(r.lineNumber,r.column,0)}static moveRight(e,t,i,n,r){let s,o;if(i.hasSelection()&&!n)s=i.selection.endLineNumber,o=i.selection.endColumn;else{let n=l.right(e,t,i.position.lineNumber,i.position.column+(r-1));s=n.lineNumber,o=n.column}return i.move(n,s,o,0)}static down(e,t,i,r,s,o,l){const c=n.io.visibleColumnFromColumn(t.getLineContent(i),r,e.tabSize)+s,d=t.getLineCount(),h=i===d&&r===t.getLineMaxColumn(i);return(i+=o)>d?(i=d,r=l?t.getLineMaxColumn(i):Math.min(t.getLineMaxColumn(i),r)):r=n.io.columnFromVisibleColumn2(e,t,i,c),s=h?0:c-n.io.visibleColumnFromColumn(t.getLineContent(i),r,e.tabSize),new a(i,r,s)}static moveDown(e,t,i,n,r){let s,o;i.hasSelection()&&!n?(s=i.selection.endLineNumber,o=i.selection.endColumn):(s=i.position.lineNumber,o=i.position.column);let a=l.down(e,t,s,o,i.leftoverVisibleColumns,r,!0);return i.move(n,a.lineNumber,a.column,a.leftoverVisibleColumns)}static translateDown(e,t,i){let o=i.selection,a=l.down(e,t,o.selectionStartLineNumber,o.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),c=l.down(e,t,o.positionLineNumber,o.positionColumn,i.leftoverVisibleColumns,1,!1);return new n.rS(new s.e(a.lineNumber,a.column,a.lineNumber,a.column),a.leftoverVisibleColumns,new r.L(c.lineNumber,c.column),c.leftoverVisibleColumns)}static up(e,t,i,r,s,o,l){const c=n.io.visibleColumnFromColumn(t.getLineContent(i),r,e.tabSize)+s,d=1===i&&1===r;return(i-=o)<1?(i=1,r=l?t.getLineMinColumn(i):Math.min(t.getLineMaxColumn(i),r)):r=n.io.columnFromVisibleColumn2(e,t,i,c),s=d?0:c-n.io.visibleColumnFromColumn(t.getLineContent(i),r,e.tabSize),new a(i,r,s)}static moveUp(e,t,i,n,r){let s,o;i.hasSelection()&&!n?(s=i.selection.startLineNumber,o=i.selection.startColumn):(s=i.position.lineNumber,o=i.position.column);let a=l.up(e,t,s,o,i.leftoverVisibleColumns,r,!0);return i.move(n,a.lineNumber,a.column,a.leftoverVisibleColumns)}static translateUp(e,t,i){let o=i.selection,a=l.up(e,t,o.selectionStartLineNumber,o.selectionStartColumn,i.selectionStartLeftoverVisibleColumns,1,!1),c=l.up(e,t,o.positionLineNumber,o.positionColumn,i.leftoverVisibleColumns,1,!1);return new n.rS(new s.e(a.lineNumber,a.column,a.lineNumber,a.column),a.leftoverVisibleColumns,new r.L(c.lineNumber,c.column),c.leftoverVisibleColumns)}static moveToBeginningOfLine(e,t,i,n){let r,s=i.position.lineNumber,o=t.getLineMinColumn(s),a=t.getLineFirstNonWhitespaceColumn(s)||o;return r=i.position.column===a?o:a,i.move(n,s,r,0)}static moveToEndOfLine(e,t,i,n,r){let s=i.position.lineNumber,o=t.getLineMaxColumn(s);return i.move(n,s,o,r?1073741824-o:0)}static moveToBeginningOfBuffer(e,t,i,n){return i.move(n,1,1,0)}static moveToEndOfBuffer(e,t,i,n){let r=t.getLineCount(),s=t.getLineMaxColumn(r);return i.move(n,r,s,0)}}},23582:(e,t,i)=>{"use strict";i.d(t,{u:()=>f,g:()=>p});var n=i(17301),r=i(97295),s=i(61329),o=i(10291),a=i(24314),l=i(3860);class c{constructor(e,t,i){this._range=e,this._charBeforeSelection=t,this._charAfterSelection=i}getEditOperations(e,t){t.addTrackedEditOperation(new a.e(this._range.startLineNumber,this._range.startColumn,this._range.startLineNumber,this._range.startColumn),this._charBeforeSelection),t.addTrackedEditOperation(new a.e(this._range.endLineNumber,this._range.endColumn,this._range.endLineNumber,this._range.endColumn),this._charAfterSelection)}computeCursorState(e,t){let i=t.getInverseEditOperations(),n=i[0].range,r=i[1].range;return new l.Y(n.endLineNumber,n.endColumn,r.endLineNumber,r.endColumn-this._charAfterSelection.length)}}var d=i(33181),h=i(59410),u=i(97354),g=i(83831);class f{static indent(e,t,i){if(null===t||null===i)return[];let n=[];for(let t=0,r=i.length;t<r;t++)n[t]=new o.U(i[t],{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent});return n}static outdent(e,t,i){let n=[];for(let t=0,r=i.length;t<r;t++)n[t]=new o.U(i[t],{isUnshift:!0,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent});return n}static shiftIndent(e,t,i){return i=i||1,o.U.shiftIndent(t,t.length+i,e.tabSize,e.indentSize,e.insertSpaces)}static unshiftIndent(e,t,i){return i=i||1,o.U.unshiftIndent(t,t.length+i,e.tabSize,e.indentSize,e.insertSpaces)}static _distributedPaste(e,t,i,n){let r=[];for(let e=0,t=i.length;e<t;e++)r[e]=new s.T4(i[e],n[e]);return new d.Tp(0,r,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _simplePaste(e,t,i,n,r){let o=[];for(let e=0,t=i.length;e<t;e++){const t=i[e];let l=t.getPosition();if(r&&!t.isEmpty()&&(r=!1),r&&n.indexOf("\n")!==n.length-1&&(r=!1),r){let i=new a.e(l.lineNumber,1,l.lineNumber,1);o[e]=new s.hP(i,n,t,!0)}else o[e]=new s.T4(t,n)}return new d.Tp(0,o,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _distributePasteToCursors(e,t,i,n,r){if(n)return null;if(1===t.length)return null;if(r&&r.length===t.length)return r;if("spread"===e.multiCursorPaste){10===i.charCodeAt(i.length-1)&&(i=i.substr(0,i.length-1)),13===i.charCodeAt(i.length-1)&&(i=i.substr(0,i.length-1));let e=i.split(/\r\n|\r|\n/);if(e.length===t.length)return e}return null}static paste(e,t,i,n,r,s){const o=this._distributePasteToCursors(e,i,n,r,s);return o?(i=i.sort(a.e.compareRangesUsingStarts),this._distributedPaste(e,t,i,o)):this._simplePaste(e,t,i,n,r)}static _goodIndentForLine(e,t,i){let n=null,s="";const o=g.zu.getInheritIndentForLine(e.autoIndent,t,i,!1);if(o)n=o.action,s=o.indentation;else if(i>1){let n;for(n=i-1;n>=1;n--){const e=t.getLineContent(n);if(r.ow(e)>=0)break}if(n<1)return null;const o=t.getLineMaxColumn(n),l=g.zu.getEnterAction(e.autoIndent,t,new a.e(n,o,n,o));l&&(s=l.indentation+l.appendText)}return n&&(n===u.w.Indent&&(s=f.shiftIndent(e,s)),n===u.w.Outdent&&(s=f.unshiftIndent(e,s)),s=e.normalizeIndentation(s)),s||null}static _replaceJumpToNextIndent(e,t,i,n){let r="",o=i.getStartPosition();if(e.insertSpaces){let i=d.io.visibleColumnFromColumn2(e,t,o),n=e.indentSize,s=n-i%n;for(let e=0;e<s;e++)r+=" "}else r="\t";return new s.T4(i,r,n)}static tab(e,t,i){let n=[];for(let l=0,c=i.length;l<c;l++){const c=i[l];if(c.isEmpty()){let i=t.getLineContent(c.startLineNumber);if(/^\s*$/.test(i)&&t.isCheapToTokenize(c.startLineNumber)){let o=this._goodIndentForLine(e,t,c.startLineNumber);o=o||"\t";let d=e.normalizeIndentation(o);if(!r.Ny(i,d)){n[l]=new s.T4(new a.e(c.startLineNumber,1,c.startLineNumber,i.length+1),d,!0);continue}}n[l]=this._replaceJumpToNextIndent(e,t,c,!0)}else{if(c.startLineNumber===c.endLineNumber){let i=t.getLineMaxColumn(c.startLineNumber);if(1!==c.startColumn||c.endColumn!==i){n[l]=this._replaceJumpToNextIndent(e,t,c,!1);continue}}n[l]=new o.U(c,{isUnshift:!1,tabSize:e.tabSize,indentSize:e.indentSize,insertSpaces:e.insertSpaces,useTabStops:e.useTabStops,autoIndent:e.autoIndent})}}return n}static replacePreviousChar(e,t,i,n,r,o){let l=[];for(let e=0,t=n.length;e<t;e++){const t=n[e];if(!t.isEmpty()){l[e]=null;continue}const c=t.getPosition(),d=Math.max(1,c.column-o),h=new a.e(c.lineNumber,d,c.lineNumber,c.column);i.getValueInRange(h)!==r?l[e]=new s.T4(h,r):l[e]=null}return new d.Tp(1,l,{shouldPushStackElementBefore:1!==e,shouldPushStackElementAfter:!1})}static _typeCommand(e,t,i){return i?new s.Sj(e,t,!0):new s.T4(e,t,!0)}static _enter(e,t,i,n){if(0===e.autoIndent)return f._typeCommand(n,"\n",i);if(!t.isCheapToTokenize(n.getStartPosition().lineNumber)||1===e.autoIndent){let s=t.getLineContent(n.startLineNumber),o=r.V8(s).substring(0,n.startColumn-1);return f._typeCommand(n,"\n"+e.normalizeIndentation(o),i)}const o=g.zu.getEnterAction(e.autoIndent,t,n);if(o){if(o.indentAction===u.w.None)return f._typeCommand(n,"\n"+e.normalizeIndentation(o.indentation+o.appendText),i);if(o.indentAction===u.w.Indent)return f._typeCommand(n,"\n"+e.normalizeIndentation(o.indentation+o.appendText),i);if(o.indentAction===u.w.IndentOutdent){const t=e.normalizeIndentation(o.indentation),r=e.normalizeIndentation(o.indentation+o.appendText),a="\n"+r+"\n"+t;return i?new s.Sj(n,a,!0):new s.Uo(n,a,-1,r.length-t.length,!0)}if(o.indentAction===u.w.Outdent){const t=f.unshiftIndent(e,o.indentation);return f._typeCommand(n,"\n"+e.normalizeIndentation(t+o.appendText),i)}}const l=t.getLineContent(n.startLineNumber),c=r.V8(l).substring(0,n.startColumn-1);if(e.autoIndent>=4){const o=g.zu.getIndentForEnter(e.autoIndent,t,n,{unshiftIndent:t=>f.unshiftIndent(e,t),shiftIndent:t=>f.shiftIndent(e,t),normalizeIndentation:t=>e.normalizeIndentation(t)});if(o){let h=d.io.visibleColumnFromColumn2(e,t,n.getEndPosition());const u=n.endColumn;let g="\n";c!==e.normalizeIndentation(o.beforeEnter)&&(g=e.normalizeIndentation(o.beforeEnter)+l.substring(c.length,n.startColumn-1)+"\n",n=new a.e(n.startLineNumber,1,n.endLineNumber,n.endColumn));const f=t.getLineContent(n.endLineNumber),p=r.LC(f);if(n=p>=0?n.setEndPosition(n.endLineNumber,Math.max(n.endColumn,p+1)):n.setEndPosition(n.endLineNumber,t.getLineMaxColumn(n.endLineNumber)),i)return new s.Sj(n,g+e.normalizeIndentation(o.afterEnter),!0);{let t=0;return u<=p+1&&(e.insertSpaces||(h=Math.ceil(h/e.indentSize)),t=Math.min(h+1-e.normalizeIndentation(o.afterEnter).length-1,0)),new s.Uo(n,g+e.normalizeIndentation(o.afterEnter),0,t,!0)}}}return f._typeCommand(n,"\n"+e.normalizeIndentation(c),i)}static _isAutoIndentType(e,t,i){if(e.autoIndent<4)return!1;for(let e=0,n=i.length;e<n;e++)if(!t.isCheapToTokenize(i[e].getEndPosition().lineNumber))return!1;return!0}static _runAutoIndentType(e,t,i,n){const r=g.zu.getIndentationAtPosition(t,i.startLineNumber,i.startColumn),s=g.zu.getIndentActionForType(e.autoIndent,t,i,n,{shiftIndent:t=>f.shiftIndent(e,t),unshiftIndent:t=>f.unshiftIndent(e,t)});if(null===s)return null;if(s!==e.normalizeIndentation(r)){const r=t.getLineFirstNonWhitespaceColumn(i.startLineNumber);return 0===r?f._typeCommand(new a.e(i.startLineNumber,0,i.endLineNumber,i.endColumn),e.normalizeIndentation(s)+n,!1):f._typeCommand(new a.e(i.startLineNumber,0,i.endLineNumber,i.endColumn),e.normalizeIndentation(s)+t.getLineContent(i.startLineNumber).substring(r-1,i.startColumn-1)+n,!1)}return null}static _isAutoClosingOvertype(e,t,i,n,r){if("never"===e.autoClosingOvertype)return!1;if(!e.autoClosingPairsClose2.has(r))return!1;for(let s=0,o=i.length;s<o;s++){const o=i[s];if(!o.isEmpty())return!1;const a=o.getPosition(),l=t.getLineContent(a.lineNumber);if(l.charAt(a.column-1)!==r)return!1;const c=(0,d.LN)(r);if(92===(a.column>2?l.charCodeAt(a.column-2):0)&&c)return!1;if("auto"===e.autoClosingOvertype){let e=!1;for(let t=0,i=n.length;t<i;t++){const i=n[t];if(a.lineNumber===i.startLineNumber&&a.column===i.startColumn){e=!0;break}}if(!e)return!1}}return!0}static _runAutoClosingOvertype(e,t,i,n,r){let o=[];for(let e=0,t=n.length;e<t;e++){const t=n[e].getPosition(),i=new a.e(t.lineNumber,t.column,t.lineNumber,t.column+1);o[e]=new s.T4(i,r)}return new d.Tp(1,o,{shouldPushStackElementBefore:1!==e,shouldPushStackElementAfter:!1})}static _autoClosingPairIsSymmetric(e){const{open:t,close:i}=e;return t.indexOf(i)>=0||i.indexOf(t)>=0}static _isBeforeClosingBrace(e,t,i){const n=e.autoClosingPairsClose2.get(i);if(!n)return!1;const r=f._autoClosingPairIsSymmetric(t);for(const e of n){const t=f._autoClosingPairIsSymmetric(e);if(r||!t)return!0}return!1}static _findAutoClosingPairOpen(e,t,i,n){const r=e.autoClosingPairsOpen2.get(n);if(!r)return null;let s=null;for(const e of r)if(null===s||e.open.length>s.open.length){let r=!0;for(const s of i)if(t.getValueInRange(new a.e(s.lineNumber,s.column-e.open.length+1,s.lineNumber,s.column))+n!==e.open){r=!1;break}r&&(s=e)}return s}static _isAutoClosingOpenCharType(e,t,i,r,s){const o=(0,d.LN)(r),a=o?e.autoClosingQuotes:e.autoClosingBrackets;if("never"===a)return null;const l=this._findAutoClosingPairOpen(e,t,i.map((e=>e.getPosition())),r);if(!l)return null;const c=o?e.shouldAutoCloseBefore.quote:e.shouldAutoCloseBefore.bracket;for(let r=0,d=i.length;r<d;r++){const d=i[r];if(!d.isEmpty())return null;const u=d.getPosition(),p=t.getLineContent(u.lineNumber);if(p.length>u.column-1){const t=p.charAt(u.column-1);if(!f._isBeforeClosingBrace(e,l,t)&&!c(t))return null}if(!t.isCheapToTokenize(u.lineNumber))return null;if(1===l.open.length&&o&&"always"!==a){const t=(0,h.u)(e.wordSeparators);if(s&&u.column>1&&0===t.get(p.charCodeAt(u.column-2)))return null;if(!s&&u.column>2&&0===t.get(p.charCodeAt(u.column-3)))return null}t.forceTokenization(u.lineNumber);const m=t.getLineTokens(u.lineNumber);let _=!1;try{_=g.zu.shouldAutoClosePair(l,m,s?u.column:u.column-1)}catch(e){(0,n.dL)(e)}if(!_)return null}return l}static _runAutoClosingOpenCharType(e,t,i,n,r,s,o){let a=[];for(let e=0,t=n.length;e<t;e++){const t=n[e];a[e]=new p(t,r,s,o.close)}return new d.Tp(1,a,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}static _shouldSurroundChar(e,t){return(0,d.LN)(t)?"quotes"===e.autoSurround||"languageDefined"===e.autoSurround:"brackets"===e.autoSurround||"languageDefined"===e.autoSurround}static _isSurroundSelectionType(e,t,i,n){if(!f._shouldSurroundChar(e,n)||!e.surroundingPairs.hasOwnProperty(n))return!1;const r=(0,d.LN)(n);for(let e=0,n=i.length;e<n;e++){const n=i[e];if(n.isEmpty())return!1;let s=!0;for(let e=n.startLineNumber;e<=n.endLineNumber;e++){const i=t.getLineContent(e),r=e===n.startLineNumber?n.startColumn-1:0,o=e===n.endLineNumber?n.endColumn-1:i.length,a=i.substring(r,o);if(/[^ \t]/.test(a)){s=!1;break}}if(s)return!1;if(r&&n.startLineNumber===n.endLineNumber&&n.startColumn+1===n.endColumn){const e=t.getValueInRange(n);if((0,d.LN)(e))return!1}}return!0}static _runSurroundSelectionType(e,t,i,n,r){let s=[];for(let e=0,i=n.length;e<i;e++){const i=n[e],o=t.surroundingPairs[r];s[e]=new c(i,r,o)}return new d.Tp(0,s,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!0})}static _isTypeInterceptorElectricChar(e,t,i){return!(1!==i.length||!t.isCheapToTokenize(i[0].getEndPosition().lineNumber))}static _typeInterceptorElectricChar(e,t,i,o,l){if(!t.electricChars.hasOwnProperty(l)||!o.isEmpty())return null;let c=o.getPosition();i.forceTokenization(c.lineNumber);let h,u=i.getLineTokens(c.lineNumber);try{h=g.zu.onElectricCharacter(l,u,c.column)}catch(e){return(0,n.dL)(e),null}if(!h)return null;if(h.matchOpenBracket){let e=(u.getLineContent()+l).lastIndexOf(h.matchOpenBracket)+1,n=i.findMatchingBracketUp(h.matchOpenBracket,{lineNumber:c.lineNumber,column:e});if(n){if(n.startLineNumber===c.lineNumber)return null;let e=i.getLineContent(n.startLineNumber),o=r.V8(e),h=t.normalizeIndentation(o),u=i.getLineContent(c.lineNumber),g=i.getLineFirstNonWhitespaceColumn(c.lineNumber)||c.column,f=h+u.substring(g-1,c.column-1)+l,p=new a.e(c.lineNumber,1,c.lineNumber,c.column);const m=new s.T4(p,f);return new d.Tp(1,[m],{shouldPushStackElementBefore:!1,shouldPushStackElementAfter:!0})}}return null}static compositionEndWithInterceptors(e,t,i,n,r,o){if(!n||l.Y.selectionsArrEqual(n,r))return null;let c=null;for(const e of r){if(!e.isEmpty())return null;const t=e.getPosition(),n=i.getValueInRange(new a.e(t.lineNumber,t.column-1,t.lineNumber,t.column));if(null===c)c=n;else if(c!==n)return null}if(!c)return null;if(this._isAutoClosingOvertype(t,i,r,o,c)){const e=r.map((e=>new s.T4(new a.e(e.positionLineNumber,e.positionColumn,e.positionLineNumber,e.positionColumn+1),"",!1)));return new d.Tp(1,e,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}const h=this._isAutoClosingOpenCharType(t,i,r,c,!1);return h?this._runAutoClosingOpenCharType(e,t,i,r,c,!1,h):null}static typeWithInterceptors(e,t,i,n,r,o,a){if(!e&&"\n"===a){let e=[];for(let t=0,s=r.length;t<s;t++)e[t]=f._enter(i,n,!1,r[t]);return new d.Tp(1,e,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(!e&&this._isAutoIndentType(i,n,r)){let e=[],t=!1;for(let s=0,o=r.length;s<o;s++)if(e[s]=this._runAutoIndentType(i,n,r[s],a),!e[s]){t=!0;break}if(!t)return new d.Tp(1,e,{shouldPushStackElementBefore:!0,shouldPushStackElementAfter:!1})}if(!e&&this._isAutoClosingOvertype(i,n,r,o,a))return this._runAutoClosingOvertype(t,i,n,r,a);if(!e){const e=this._isAutoClosingOpenCharType(i,n,r,a,!0);if(e)return this._runAutoClosingOpenCharType(t,i,n,r,a,!0,e)}if(this._isSurroundSelectionType(i,n,r,a))return this._runSurroundSelectionType(t,i,n,r,a);if(!e&&this._isTypeInterceptorElectricChar(i,n,r)){const e=this._typeInterceptorElectricChar(t,i,n,r[0],a);if(e)return e}let l=[];for(let e=0,t=r.length;e<t;e++)l[e]=new s.T4(r[e],a);let c=1!==t;return" "===a&&(c=!0),new d.Tp(1,l,{shouldPushStackElementBefore:c,shouldPushStackElementAfter:!1})}static typeWithoutInterceptors(e,t,i,n,r){let o=[];for(let e=0,t=n.length;e<t;e++)o[e]=new s.T4(n[e],r);return new d.Tp(1,o,{shouldPushStackElementBefore:1!==e,shouldPushStackElementAfter:!1})}static lineInsertBefore(e,t,i){if(null===t||null===i)return[];let n=[];for(let r=0,o=i.length;r<o;r++){let o=i[r].positionLineNumber;if(1===o)n[r]=new s.Sj(new a.e(1,1,1,1),"\n");else{o--;let i=t.getLineMaxColumn(o);n[r]=this._enter(e,t,!1,new a.e(o,i,o,i))}}return n}static lineInsertAfter(e,t,i){if(null===t||null===i)return[];let n=[];for(let r=0,s=i.length;r<s;r++){const s=i[r].positionLineNumber;let o=t.getLineMaxColumn(s);n[r]=this._enter(e,t,!1,new a.e(s,o,s,o))}return n}static lineBreakInsert(e,t,i){let n=[];for(let r=0,s=i.length;r<s;r++)n[r]=this._enter(e,t,!0,i[r]);return n}}class p extends s.Uo{constructor(e,t,i,n){super(e,(i?t:"")+n,0,-n.length),this._openCharacter=t,this._closeCharacter=n,this.closeCharacterRange=null,this.enclosingRange=null}computeCursorState(e,t){let i=t.getInverseEditOperations()[0].range;return this.closeCharacterRange=new a.e(i.startLineNumber,i.endColumn-this._closeCharacter.length,i.endLineNumber,i.endColumn),this.enclosingRange=new a.e(i.startLineNumber,i.endColumn-this._openCharacter.length-this._closeCharacter.length,i.endLineNumber,i.endColumn),super.computeCursorState(e,t)}}},5795:(e,t,i)=>{"use strict";i.d(t,{w:()=>l,L:()=>c});var n=i(97295),r=i(33181),s=i(59410),o=i(50187),a=i(24314);class l{static _createWord(e,t,i,n,r){return{start:n,end:r,wordType:t,nextCharClass:i}}static _findPreviousWordOnLine(e,t,i){let n=t.getLineContent(i.lineNumber);return this._doFindPreviousWordOnLine(n,e,i)}static _doFindPreviousWordOnLine(e,t,i){let n=0;for(let r=i.column-2;r>=0;r--){let i=e.charCodeAt(r),s=t.get(i);if(0===s){if(2===n)return this._createWord(e,n,s,r+1,this._findEndOfWord(e,t,n,r+1));n=1}else if(2===s){if(1===n)return this._createWord(e,n,s,r+1,this._findEndOfWord(e,t,n,r+1));n=2}else if(1===s&&0!==n)return this._createWord(e,n,s,r+1,this._findEndOfWord(e,t,n,r+1))}return 0!==n?this._createWord(e,n,1,0,this._findEndOfWord(e,t,n,0)):null}static _findEndOfWord(e,t,i,n){let r=e.length;for(let s=n;s<r;s++){let n=e.charCodeAt(s),r=t.get(n);if(1===r)return s;if(1===i&&2===r)return s;if(2===i&&0===r)return s}return r}static _findNextWordOnLine(e,t,i){let n=t.getLineContent(i.lineNumber);return this._doFindNextWordOnLine(n,e,i)}static _doFindNextWordOnLine(e,t,i){let n=0,r=e.length;for(let s=i.column-1;s<r;s++){let i=e.charCodeAt(s),r=t.get(i);if(0===r){if(2===n)return this._createWord(e,n,r,this._findStartOfWord(e,t,n,s-1),s);n=1}else if(2===r){if(1===n)return this._createWord(e,n,r,this._findStartOfWord(e,t,n,s-1),s);n=2}else if(1===r&&0!==n)return this._createWord(e,n,r,this._findStartOfWord(e,t,n,s-1),s)}return 0!==n?this._createWord(e,n,1,this._findStartOfWord(e,t,n,r-1),r):null}static _findStartOfWord(e,t,i,n){for(let r=n;r>=0;r--){let n=e.charCodeAt(r),s=t.get(n);if(1===s)return r+1;if(1===i&&2===s)return r+1;if(2===i&&0===s)return r+1}return 0}static moveWordLeft(e,t,i,n){let r=i.lineNumber,s=i.column;1===s&&r>1&&(r-=1,s=t.getLineMaxColumn(r));let a=l._findPreviousWordOnLine(e,t,new o.L(r,s));if(0===n)return new o.L(r,a?a.start+1:1);if(1===n)return a&&2===a.wordType&&a.end-a.start==1&&0===a.nextCharClass&&(a=l._findPreviousWordOnLine(e,t,new o.L(r,a.start+1))),new o.L(r,a?a.start+1:1);if(3===n){for(;a&&2===a.wordType;)a=l._findPreviousWordOnLine(e,t,new o.L(r,a.start+1));return new o.L(r,a?a.start+1:1)}return a&&s<=a.end+1&&(a=l._findPreviousWordOnLine(e,t,new o.L(r,a.start+1))),new o.L(r,a?a.end+1:1)}static _moveWordPartLeft(e,t){const i=t.lineNumber,r=e.getLineMaxColumn(i);if(1===t.column)return i>1?new o.L(i-1,e.getLineMaxColumn(i-1)):t;const s=e.getLineContent(i);for(let e=t.column-1;e>1;e--){const t=s.charCodeAt(e-2),a=s.charCodeAt(e-1);if(95===t&&95!==a)return new o.L(i,e);if(n.mK(t)&&n.df(a))return new o.L(i,e);if(n.df(t)&&n.df(a)&&e+1<r){const t=s.charCodeAt(e);if(n.mK(t))return new o.L(i,e)}}return new o.L(i,1)}static moveWordRight(e,t,i,n){let r=i.lineNumber,s=i.column,a=!1;s===t.getLineMaxColumn(r)&&r<t.getLineCount()&&(a=!0,r+=1,s=1);let c=l._findNextWordOnLine(e,t,new o.L(r,s));if(2===n)c&&2===c.wordType&&c.end-c.start==1&&0===c.nextCharClass&&(c=l._findNextWordOnLine(e,t,new o.L(r,c.end+1))),s=c?c.end+1:t.getLineMaxColumn(r);else if(3===n){for(a&&(s=0);c&&(2===c.wordType||c.start+1<=s);)c=l._findNextWordOnLine(e,t,new o.L(r,c.end+1));s=c?c.start+1:t.getLineMaxColumn(r)}else c&&!a&&s>=c.start+1&&(c=l._findNextWordOnLine(e,t,new o.L(r,c.end+1))),s=c?c.start+1:t.getLineMaxColumn(r);return new o.L(r,s)}static _moveWordPartRight(e,t){const i=t.lineNumber,r=e.getLineMaxColumn(i);if(t.column===r)return i<e.getLineCount()?new o.L(i+1,1):t;const s=e.getLineContent(i);for(let e=t.column+1;e<r;e++){const t=s.charCodeAt(e-2),a=s.charCodeAt(e-1);if(95!==t&&95===a)return new o.L(i,e);if(n.mK(t)&&n.df(a))return new o.L(i,e);if(n.df(t)&&n.df(a)&&e+1<r){const t=s.charCodeAt(e);if(n.mK(t))return new o.L(i,e)}}return new o.L(i,r)}static _deleteWordLeftWhitespace(e,t){const i=e.getLineContent(t.lineNumber),r=t.column-2,s=n.ow(i,r);return s+1<r?new a.e(t.lineNumber,s+2,t.lineNumber,t.column):null}static deleteWordLeft(e,t,i,n,r){if(!i.isEmpty())return i;const s=new o.L(i.positionLineNumber,i.positionColumn);let c=s.lineNumber,d=s.column;if(1===c&&1===d)return null;if(n){let e=this._deleteWordLeftWhitespace(t,s);if(e)return e}let h=l._findPreviousWordOnLine(e,t,s);return 0===r?h?d=h.start+1:d>1?d=1:(c--,d=t.getLineMaxColumn(c)):(h&&d<=h.end+1&&(h=l._findPreviousWordOnLine(e,t,new o.L(c,h.start+1))),h?d=h.end+1:d>1?d=1:(c--,d=t.getLineMaxColumn(c))),new a.e(c,d,s.lineNumber,s.column)}static _deleteWordPartLeft(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=l._moveWordPartLeft(e,i);return new a.e(i.lineNumber,i.column,n.lineNumber,n.column)}static _findFirstNonWhitespaceChar(e,t){let i=e.length;for(let n=t;n<i;n++){let t=e.charAt(n);if(" "!==t&&"\t"!==t)return n}return i}static _deleteWordRightWhitespace(e,t){const i=e.getLineContent(t.lineNumber),n=t.column-1,r=this._findFirstNonWhitespaceChar(i,n);return n+1<r?new a.e(t.lineNumber,t.column,t.lineNumber,r+1):null}static deleteWordRight(e,t,i,n,r){if(!i.isEmpty())return i;const s=new o.L(i.positionLineNumber,i.positionColumn);let c=s.lineNumber,d=s.column;const h=t.getLineCount(),u=t.getLineMaxColumn(c);if(c===h&&d===u)return null;if(n){let e=this._deleteWordRightWhitespace(t,s);if(e)return e}let g=l._findNextWordOnLine(e,t,s);return 2===r?g?d=g.end+1:d<u||c===h?d=u:(c++,g=l._findNextWordOnLine(e,t,new o.L(c,1)),d=g?g.start+1:t.getLineMaxColumn(c)):(g&&d>=g.start+1&&(g=l._findNextWordOnLine(e,t,new o.L(c,g.end+1))),g?d=g.start+1:d<u||c===h?d=u:(c++,g=l._findNextWordOnLine(e,t,new o.L(c,1)),d=g?g.start+1:t.getLineMaxColumn(c))),new a.e(c,d,s.lineNumber,s.column)}static _deleteWordPartRight(e,t){if(!t.isEmpty())return t;const i=t.getPosition(),n=l._moveWordPartRight(e,i);return new a.e(i.lineNumber,i.column,n.lineNumber,n.column)}static _createWordAtPosition(e,t,i){const n=new a.e(t,i.start+1,t,i.end+1);return{word:e.getValueInRange(n),startColumn:n.startColumn,endColumn:n.endColumn}}static getWordAtPosition(e,t,i){const n=(0,s.u)(t),r=l._findPreviousWordOnLine(n,e,i);if(r&&1===r.wordType&&r.start<=i.column-1&&i.column-1<=r.end)return l._createWordAtPosition(e,i.lineNumber,r);const o=l._findNextWordOnLine(n,e,i);return o&&1===o.wordType&&o.start<=i.column-1&&i.column-1<=o.end?l._createWordAtPosition(e,i.lineNumber,o):null}static word(e,t,i,n,c){const d=(0,s.u)(e.wordSeparators);let h,u,g=l._findPreviousWordOnLine(d,t,c),f=l._findNextWordOnLine(d,t,c);if(!n){let e,i;return g&&1===g.wordType&&g.start<=c.column-1&&c.column-1<=g.end?(e=g.start+1,i=g.end+1):f&&1===f.wordType&&f.start<=c.column-1&&c.column-1<=f.end?(e=f.start+1,i=f.end+1):(e=g?g.end+1:1,i=f?f.start+1:t.getLineMaxColumn(c.lineNumber)),new r.rS(new a.e(c.lineNumber,e,c.lineNumber,i),0,new o.L(c.lineNumber,i),0)}g&&1===g.wordType&&g.start<c.column-1&&c.column-1<g.end?(h=g.start+1,u=g.end+1):f&&1===f.wordType&&f.start<c.column-1&&c.column-1<f.end?(h=f.start+1,u=f.end+1):(h=c.column,u=c.column);let p,m=c.lineNumber;if(i.selectionStart.containsPosition(c))p=i.selectionStart.endColumn;else if(c.isBeforeOrEqual(i.selectionStart.getStartPosition())){p=h;let e=new o.L(m,p);i.selectionStart.containsPosition(e)&&(p=i.selectionStart.endColumn)}else{p=u;let e=new o.L(m,p);i.selectionStart.containsPosition(e)&&(p=i.selectionStart.startColumn)}return i.move(!0,m,p,0)}}class c extends l{static deleteWordPartLeft(e,t,i,n){const r=d([l.deleteWordLeft(e,t,i,n,0),l.deleteWordLeft(e,t,i,n,2),l._deleteWordPartLeft(t,i)]);return r.sort(a.e.compareRangesUsingEnds),r[2]}static deleteWordPartRight(e,t,i,n){const r=d([l.deleteWordRight(e,t,i,n,0),l.deleteWordRight(e,t,i,n,2),l._deleteWordPartRight(t,i)]);return r.sort(a.e.compareRangesUsingStarts),r[0]}static moveWordPartLeft(e,t,i){const n=d([l.moveWordLeft(e,t,i,0),l.moveWordLeft(e,t,i,2),l._moveWordPartLeft(t,i)]);return n.sort(o.L.compare),n[2]}static moveWordPartRight(e,t,i){const n=d([l.moveWordRight(e,t,i,0),l.moveWordRight(e,t,i,2),l._moveWordPartRight(t,i)]);return n.sort(o.L.compare),n[0]}}function d(e){return e.filter((e=>Boolean(e)))}},59410:(e,t,i)=>{"use strict";i.d(t,{u:()=>s});var n=i(44906);class r extends n.N{constructor(e){super(0);for(let t=0,i=e.length;t<i;t++)this.set(e.charCodeAt(t),2);this.set(32,1),this.set(9,1)}}const s=function(e){let t={};return e=>(t.hasOwnProperty(e)||(t[e]=(e=>new r(e))(e)),t[e])}()},44906:(e,t,i)=>{"use strict";i.d(t,{N:()=>r,q:()=>s});var n=i(85427);class r{constructor(e){let t=(0,n.K)(e);this._defaultValue=t,this._asciiMap=r._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){let t=new Uint8Array(256);for(let i=0;i<256;i++)t[i]=e;return t}set(e,t){let i=(0,n.K)(t);e>=0&&e<256?this._asciiMap[e]=i:this._map.set(e,i)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}}class s{constructor(){this._actual=new r(0)}add(e){this._actual.set(e,1)}has(e){return 1===this._actual.get(e)}}},69386:(e,t,i)=>{"use strict";i.d(t,{h:()=>r});var n=i(24314);class r{static insert(e,t){return{range:new n.e(e.lineNumber,e.column,e.lineNumber,e.column),text:t,forceMoveMarkers:!0}}static delete(e){return{range:e,text:null}}static replace(e,t){return{range:e,text:t}}static replaceMove(e,t){return{range:e,text:t,forceMoveMarkers:!0}}}},78411:(e,t,i)=>{"use strict";i.d(t,{A:()=>r});var n=i(43775);class r{constructor(e,t){this._tokens=e,this._tokensCount=this._tokens.length>>>1,this._text=t}equals(e){return e instanceof r&&this.slicedEquals(e,0,this._tokensCount)}slicedEquals(e,t,i){if(this._text!==e._text)return!1;if(this._tokensCount!==e._tokensCount)return!1;const n=t<<1,r=n+(i<<1);for(let t=n;t<r;t++)if(this._tokens[t]!==e._tokens[t])return!1;return!0}getLineContent(){return this._text}getCount(){return this._tokensCount}getStartOffset(e){return e>0?this._tokens[e-1<<1]:0}getMetadata(e){return this._tokens[1+(e<<1)]}getLanguageId(e){const t=this._tokens[1+(e<<1)];return n.NX.getLanguageId(t)}getStandardTokenType(e){const t=this._tokens[1+(e<<1)];return n.NX.getTokenType(t)}getForeground(e){const t=this._tokens[1+(e<<1)];return n.NX.getForeground(t)}getClassName(e){const t=this._tokens[1+(e<<1)];return n.NX.getClassNameFromMetadata(t)}getInlineStyle(e,t){const i=this._tokens[1+(e<<1)];return n.NX.getInlineStyleFromMetadata(i,t)}getEndOffset(e){return this._tokens[e<<1]}findTokenIndexAtOffset(e){return r.findIndexInTokensArray(this._tokens,e)}inflate(){return this}sliceAndInflate(e,t,i){return new s(this,e,t,i)}static convertToEndOffset(e,t){const i=(e.length>>>1)-1;for(let t=0;t<i;t++)e[t<<1]=e[t+1<<1];e[i<<1]=t}static findIndexInTokensArray(e,t){if(e.length<=2)return 0;let i=0,n=(e.length>>>1)-1;for(;i<n;){const r=i+Math.floor((n-i)/2),s=e[r<<1];if(s===t)return r+1;s<t?i=r+1:s>t&&(n=r)}return i}}class s{constructor(e,t,i,n){this._source=e,this._startOffset=t,this._endOffset=i,this._deltaOffset=n,this._firstTokenIndex=e.findTokenIndexAtOffset(t),this._tokensCount=0;for(let t=this._firstTokenIndex,n=e.getCount();t<n&&!(e.getStartOffset(t)>=i);t++)this._tokensCount++}equals(e){return e instanceof s&&this._startOffset===e._startOffset&&this._endOffset===e._endOffset&&this._deltaOffset===e._deltaOffset&&this._source.slicedEquals(e._source,this._firstTokenIndex,this._tokensCount)}getCount(){return this._tokensCount}getForeground(e){return this._source.getForeground(this._firstTokenIndex+e)}getEndOffset(e){const t=this._source.getEndOffset(this._firstTokenIndex+e);return Math.min(this._endOffset,t)-this._startOffset+this._deltaOffset}getClassName(e){return this._source.getClassName(this._firstTokenIndex+e)}getInlineStyle(e,t){return this._source.getInlineStyle(this._firstTokenIndex+e,t)}findTokenIndexAtOffset(e){return this._source.findTokenIndexAtOffset(e+this._startOffset-this._deltaOffset)-this._firstTokenIndex}}},50187:(e,t,i)=>{"use strict";i.d(t,{L:()=>n});class n{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new n(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return n.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return n.isBefore(this,e)}static isBefore(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<t.column}isBeforeOrEqual(e){return n.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<=t.column}static compare(e,t){let i=0|e.lineNumber,n=0|t.lineNumber;return i===n?(0|e.column)-(0|t.column):i-n}clone(){return new n(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new n(e.lineNumber,e.column)}static isIPosition(e){return e&&"number"==typeof e.lineNumber&&"number"==typeof e.column}}},24314:(e,t,i)=>{"use strict";i.d(t,{e:()=>r});var n=i(50187);class r{constructor(e,t,i,n){e>i||e===i&&t>n?(this.startLineNumber=i,this.startColumn=n,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=i,this.endColumn=n)}isEmpty(){return r.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return r.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<e.startColumn||t.lineNumber===e.endLineNumber&&t.column>e.endColumn)}containsRange(e){return r.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)}strictContainsRange(e){return r.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)}plusRange(e){return r.plusRange(this,e)}static plusRange(e,t){let i,n,s,o;return t.startLineNumber<e.startLineNumber?(i=t.startLineNumber,n=t.startColumn):t.startLineNumber===e.startLineNumber?(i=t.startLineNumber,n=Math.min(t.startColumn,e.startColumn)):(i=e.startLineNumber,n=e.startColumn),t.endLineNumber>e.endLineNumber?(s=t.endLineNumber,o=t.endColumn):t.endLineNumber===e.endLineNumber?(s=t.endLineNumber,o=Math.max(t.endColumn,e.endColumn)):(s=e.endLineNumber,o=e.endColumn),new r(i,n,s,o)}intersectRanges(e){return r.intersectRanges(this,e)}static intersectRanges(e,t){let i=e.startLineNumber,n=e.startColumn,s=e.endLineNumber,o=e.endColumn,a=t.startLineNumber,l=t.startColumn,c=t.endLineNumber,d=t.endColumn;return i<a?(i=a,n=l):i===a&&(n=Math.max(n,l)),s>c?(s=c,o=d):s===c&&(o=Math.min(o,d)),i>s||i===s&&n>o?null:new r(i,n,s,o)}equalsRange(e){return r.equalsRange(this,e)}static equalsRange(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return r.getEndPosition(this)}static getEndPosition(e){return new n.L(e.endLineNumber,e.endColumn)}getStartPosition(){return r.getStartPosition(this)}static getStartPosition(e){return new n.L(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new r(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new r(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return r.collapseToStart(this)}static collapseToStart(e){return new r(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}static fromPositions(e,t=e){return new r(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new r(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"==typeof e.startLineNumber&&"number"==typeof e.startColumn&&"number"==typeof e.endLineNumber&&"number"==typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}static areIntersecting(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,t){if(e&&t){const i=0|e.startLineNumber,n=0|t.startLineNumber;if(i===n){const i=0|e.startColumn,n=0|t.startColumn;if(i===n){const i=0|e.endLineNumber,n=0|t.endLineNumber;return i===n?(0|e.endColumn)-(0|t.endColumn):i-n}return i-n}return i-n}return(e?1:0)-(t?1:0)}static compareRangesUsingEnds(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}}},3860:(e,t,i)=>{"use strict";i.d(t,{Y:()=>s});var n=i(50187),r=i(24314);class s extends r.e{constructor(e,t,i,n){super(e,t,i,n),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=i,this.positionColumn=n}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return s.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new s(this.startLineNumber,this.startColumn,e,t):new s(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new n.L(this.positionLineNumber,this.positionColumn)}setStartPosition(e,t){return 0===this.getDirection()?new s(e,t,this.endLineNumber,this.endColumn):new s(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new s(e.lineNumber,e.column,t.lineNumber,t.column)}static liftSelection(e){return new s(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let i=0,n=e.length;i<n;i++)if(!this.selectionsEqual(e[i],t[i]))return!1;return!0}static isISelection(e){return e&&"number"==typeof e.selectionStartLineNumber&&"number"==typeof e.selectionStartColumn&&"number"==typeof e.positionLineNumber&&"number"==typeof e.positionColumn}static createWithDirection(e,t,i,n,r){return 0===r?new s(e,t,i,n):new s(i,n,e,t)}}},50072:(e,t,i)=>{"use strict";i.d(t,{oe:()=>a,lZ:()=>l,l$:()=>c,kH:()=>d});var n=i(97295),r=i(1432),s=i(53060);let o;function a(){return o||(o=new TextDecoder(r.r()?"UTF-16LE":"UTF-16BE")),o}const l="undefined"!=typeof TextDecoder;let c,d;l?(c=e=>new h(e),d=function(e,t,i){const n=new Uint16Array(e.buffer,t,i);return a().decode(n)}):(c=e=>new u,d=function(e,t,i){let n=[],r=0;for(let o=0;o<i;o++){const i=s.mP(e,t);t+=2,n[r++]=String.fromCharCode(i)}return n.join("")});class h{constructor(e){this._capacity=0|e,this._buffer=new Uint16Array(this._capacity),this._completedStrings=null,this._bufferLength=0}reset(){this._completedStrings=null,this._bufferLength=0}build(){return null!==this._completedStrings?(this._flushBuffer(),this._completedStrings.join("")):this._buildBuffer()}_buildBuffer(){if(0===this._bufferLength)return"";const e=new Uint16Array(this._buffer.buffer,0,this._bufferLength);return a().decode(e)}_flushBuffer(){const e=this._buildBuffer();this._bufferLength=0,null===this._completedStrings?this._completedStrings=[e]:this._completedStrings[this._completedStrings.length]=e}write1(e){const t=this._capacity-this._bufferLength;t<=1&&(0===t||n.ZG(e))&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendASCII(e){this._bufferLength===this._capacity&&this._flushBuffer(),this._buffer[this._bufferLength++]=e}appendASCIIString(e){const t=e.length;if(this._bufferLength+t>=this._capacity)return this._flushBuffer(),void(this._completedStrings[this._completedStrings.length]=e);for(let i=0;i<t;i++)this._buffer[this._bufferLength++]=e.charCodeAt(i)}}class u{constructor(){this._pieces=[],this._piecesLen=0}reset(){this._pieces=[],this._piecesLen=0}build(){return this._pieces.join("")}write1(e){this._pieces[this._piecesLen++]=String.fromCharCode(e)}appendASCII(e){this._pieces[this._piecesLen++]=String.fromCharCode(e)}appendASCIIString(e){this._pieces[this._piecesLen++]=e}}},85600:(e,t,i)=>{"use strict";i.d(t,{WU:()=>n,hG:()=>r,Hi:()=>s});class n{constructor(e,t,i){this.offset=0|e,this.type=t,this.language=i}toString(){return"("+this.offset+", "+this.type+")"}}class r{constructor(e,t){this.tokens=e,this.endState=t}}class s{constructor(e,t){this.tokens=e,this.endState=t}}},30653:(e,t,i)=>{"use strict";i.d(t,{p:()=>n});class n{constructor(e,t,i,n,r,s){this.id=e,this.label=t,this.alias=i,this._precondition=n,this._run=r,this._contextKeyService=s}isSupported(){return this._contextKeyService.contextMatchesRules(this._precondition)}run(){return this.isSupported()?this._run():Promise.resolve(void 0)}}},96518:(e,t,i)=>{"use strict";function n(e){return e&&"string"==typeof e.id}i.d(t,{I:()=>n,g:()=>r});const r={ICodeEditor:"vs.editor.ICodeEditor",IDiffEditor:"vs.editor.IDiffEditor"}},29102:(e,t,i)=>{"use strict";i.d(t,{u:()=>n});var n,r=i(38819);!function(e){e.editorSimpleInput=new r.uy("editorSimpleInput",!1),e.editorTextFocus=new r.uy("editorTextFocus",!1),e.focus=new r.uy("editorFocus",!1),e.textInputFocus=new r.uy("textInputFocus",!1),e.readOnly=new r.uy("editorReadonly",!1),e.columnSelection=new r.uy("editorColumnSelection",!1),e.writable=e.readOnly.toNegated(),e.hasNonEmptySelection=new r.uy("editorHasSelection",!1),e.hasOnlyEmptySelection=e.hasNonEmptySelection.toNegated(),e.hasMultipleSelections=new r.uy("editorHasMultipleSelections",!1),e.hasSingleSelection=e.hasMultipleSelections.toNegated(),e.tabMovesFocus=new r.uy("editorTabMovesFocus",!1),e.tabDoesNotMoveFocus=e.tabMovesFocus.toNegated(),e.isInWalkThroughSnippet=new r.uy("isInEmbeddedEditor",!1),e.canUndo=new r.uy("canUndo",!1),e.canRedo=new r.uy("canRedo",!1),e.hoverVisible=new r.uy("editorHoverVisible",!1),e.inCompositeEditor=new r.uy("inCompositeEditor",void 0),e.notInCompositeEditor=e.inCompositeEditor.toNegated(),e.languageId=new r.uy("editorLangId",""),e.hasCompletionItemProvider=new r.uy("editorHasCompletionItemProvider",!1),e.hasCodeActionsProvider=new r.uy("editorHasCodeActionsProvider",!1),e.hasCodeLensProvider=new r.uy("editorHasCodeLensProvider",!1),e.hasDefinitionProvider=new r.uy("editorHasDefinitionProvider",!1),e.hasDeclarationProvider=new r.uy("editorHasDeclarationProvider",!1),e.hasImplementationProvider=new r.uy("editorHasImplementationProvider",!1),e.hasTypeDefinitionProvider=new r.uy("editorHasTypeDefinitionProvider",!1),e.hasHoverProvider=new r.uy("editorHasHoverProvider",!1),e.hasDocumentHighlightProvider=new r.uy("editorHasDocumentHighlightProvider",!1),e.hasDocumentSymbolProvider=new r.uy("editorHasDocumentSymbolProvider",!1),e.hasReferenceProvider=new r.uy("editorHasReferenceProvider",!1),e.hasRenameProvider=new r.uy("editorHasRenameProvider",!1),e.hasSignatureHelpProvider=new r.uy("editorHasSignatureHelpProvider",!1),e.hasDocumentFormattingProvider=new r.uy("editorHasDocumentFormattingProvider",!1),e.hasDocumentSelectionFormattingProvider=new r.uy("editorHasDocumentSelectionFormattingProvider",!1),e.hasMultipleDocumentFormattingProvider=new r.uy("editorHasMultipleDocumentFormattingProvider",!1),e.hasMultipleDocumentSelectionFormattingProvider=new r.uy("editorHasMultipleDocumentSelectionFormattingProvider",!1)}(n||(n={}))},84973:(e,t,i)=>{"use strict";var n,r;i.d(t,{sh:()=>n,F5:()=>r,dJ:()=>s,tk:()=>o,Qi:()=>a,je:()=>l}),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(n||(n={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(r||(r={}));class s{constructor(e){this.tabSize=Math.max(1,0|e.tabSize),this.indentSize=0|e.tabSize,this.insertSpaces=Boolean(e.insertSpaces),this.defaultEOL=0|e.defaultEOL,this.trimAutoWhitespace=Boolean(e.trimAutoWhitespace)}equals(e){return this.tabSize===e.tabSize&&this.indentSize===e.indentSize&&this.insertSpaces===e.insertSpaces&&this.defaultEOL===e.defaultEOL&&this.trimAutoWhitespace===e.trimAutoWhitespace}createChangeEvent(e){return{tabSize:this.tabSize!==e.tabSize,indentSize:this.indentSize!==e.indentSize,insertSpaces:this.insertSpaces!==e.insertSpaces,trimAutoWhitespace:this.trimAutoWhitespace!==e.trimAutoWhitespace}}}class o{constructor(e,t){this.range=e,this.matches=t}}class a{constructor(e,t,i,n,r,s){this.identifier=e,this.range=t,this.text=i,this.forceMoveMarkers=n,this.isAutoWhitespaceEdit=r,this._isTracked=s}}class l{constructor(e,t,i){this.reverseEdits=e,this.changes=t,this.trimAutoWhitespaceLineNumbers=i}}},95215:(e,t,i)=>{"use strict";i.d(t,{e9:()=>g,NL:()=>f});var n=i(63580),r=i(17301),s=i(3860),o=i(70666),a=i(60962),l=i(53060);function c(e){return e.toString()}class d{constructor(e,t,i,n,r,s,o){this.beforeVersionId=e,this.afterVersionId=t,this.beforeEOL=i,this.afterEOL=n,this.beforeCursorState=r,this.afterCursorState=s,this.changes=o}static create(e,t){const i=e.getAlternativeVersionId(),n=u(e);return new d(i,i,n,n,t,t,[])}append(e,t,i,n,r){t.length>0&&(this.changes=(0,a.b)(this.changes,t)),this.afterEOL=i,this.afterVersionId=n,this.afterCursorState=r}static _writeSelectionsSize(e){return 4+16*(e?e.length:0)}static _writeSelections(e,t,i){if(l.T4(e,t?t.length:0,i),i+=4,t)for(const n of t)l.T4(e,n.selectionStartLineNumber,i),i+=4,l.T4(e,n.selectionStartColumn,i),i+=4,l.T4(e,n.positionLineNumber,i),i+=4,l.T4(e,n.positionColumn,i),i+=4;return i}static _readSelections(e,t,i){const n=l.Ag(e,t);t+=4;for(let r=0;r<n;r++){const n=l.Ag(e,t);t+=4;const r=l.Ag(e,t);t+=4;const o=l.Ag(e,t);t+=4;const a=l.Ag(e,t);t+=4,i.push(new s.Y(n,r,o,a))}return t}serialize(){let e=10+d._writeSelectionsSize(this.beforeCursorState)+d._writeSelectionsSize(this.afterCursorState)+4;for(const t of this.changes)e+=t.writeSize();const t=new Uint8Array(e);let i=0;l.T4(t,this.beforeVersionId,i),i+=4,l.T4(t,this.afterVersionId,i),i+=4,l.Cg(t,this.beforeEOL,i),i+=1,l.Cg(t,this.afterEOL,i),i+=1,i=d._writeSelections(t,this.beforeCursorState,i),i=d._writeSelections(t,this.afterCursorState,i),l.T4(t,this.changes.length,i),i+=4;for(const e of this.changes)i=e.write(t,i);return t.buffer}static deserialize(e){const t=new Uint8Array(e);let i=0;const n=l.Ag(t,i);i+=4;const r=l.Ag(t,i);i+=4;const s=l.Q$(t,i);i+=1;const o=l.Q$(t,i);i+=1;const c=[];i=d._readSelections(t,i,c);const h=[];i=d._readSelections(t,i,h);const u=l.Ag(t,i);i+=4;const g=[];for(let e=0;e<u;e++)i=a.q.read(t,i,g);return new d(n,r,s,o,c,h,g)}}class h{constructor(e,t){this.model=e,this._data=d.create(e,t)}get type(){return 0}get resource(){return o.o.isUri(this.model)?this.model:this.model.uri}get label(){return n.N("edit","Typing")}toString(){return(this._data instanceof d?this._data:d.deserialize(this._data)).changes.map((e=>e.toString())).join(", ")}matchesResource(e){return(o.o.isUri(this.model)?this.model:this.model.uri).toString()===e.toString()}setModel(e){this.model=e}canAppend(e){return this.model===e&&this._data instanceof d}append(e,t,i,n,r){this._data instanceof d&&this._data.append(e,t,i,n,r)}close(){this._data instanceof d&&(this._data=this._data.serialize())}undo(){if(o.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof d&&(this._data=this._data.serialize());const e=d.deserialize(this._data);this.model._applyUndo(e.changes,e.beforeEOL,e.beforeVersionId,e.beforeCursorState)}redo(){if(o.o.isUri(this.model))throw new Error("Invalid SingleModelEditStackElement");this._data instanceof d&&(this._data=this._data.serialize());const e=d.deserialize(this._data);this.model._applyRedo(e.changes,e.afterEOL,e.afterVersionId,e.afterCursorState)}}function u(e){return"\n"===e.getEOL()?0:1}function g(e){return!!e&&(e instanceof h||e instanceof class{constructor(e,t){this.type=1,this.label=e,this._isOpen=!0,this._editStackElementsArr=t.slice(0),this._editStackElementsMap=new Map;for(const e of this._editStackElementsArr){const t=c(e.resource);this._editStackElementsMap.set(t,e)}this._delegate=null}get resources(){return this._editStackElementsArr.map((e=>e.resource))}prepareUndoRedo(){if(this._delegate)return this._delegate.prepareUndoRedo(this)}matchesResource(e){const t=c(e);return this._editStackElementsMap.has(t)}setModel(e){const t=c(o.o.isUri(e)?e:e.uri);this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).setModel(e)}canAppend(e){if(!this._isOpen)return!1;const t=c(e.uri);return!!this._editStackElementsMap.has(t)&&this._editStackElementsMap.get(t).canAppend(e)}append(e,t,i,n,r){const s=c(e.uri);this._editStackElementsMap.get(s).append(e,t,i,n,r)}close(){this._isOpen=!1}undo(){this._isOpen=!1;for(const e of this._editStackElementsArr)e.undo()}redo(){for(const e of this._editStackElementsArr)e.redo()}split(){return this._editStackElementsArr}})}class f{constructor(e,t){this._model=e,this._undoRedoService=t}pushStackElement(){const e=this._undoRedoService.getLastElement(this._model.uri);g(e)&&e.close()}clear(){this._undoRedoService.removeElements(this._model.uri)}_getOrCreateEditStackElement(e){const t=this._undoRedoService.getLastElement(this._model.uri);if(g(t)&&t.canAppend(this._model))return t;const i=new h(this._model,e);return this._undoRedoService.pushElement(i),i}pushEOL(e){const t=this._getOrCreateEditStackElement(null);this._model.setEOL(e),t.append(this._model,[],u(this._model),this._model.getAlternativeVersionId(),null)}pushEditOperation(e,t,i){const n=this._getOrCreateEditStackElement(e),r=this._model.applyEdits(t,!0),s=f._computeCursorState(i,r),o=r.map(((e,t)=>({index:t,textChange:e.textChange})));return o.sort(((e,t)=>e.textChange.oldPosition===t.textChange.oldPosition?e.index-t.index:e.textChange.oldPosition-t.textChange.oldPosition)),n.append(this._model,o.map((e=>e.textChange)),u(this._model),this._model.getAlternativeVersionId(),s),s}static _computeCursorState(e,t){try{return e?e(t):null}catch(e){return(0,r.dL)(e),null}}}},60962:(e,t,i)=>{"use strict";i.d(t,{q:()=>s,b:()=>o});var n=i(53060),r=i(50072);class s{constructor(e,t,i,n){this.oldPosition=e,this.oldText=t,this.newPosition=i,this.newText=n}get oldLength(){return this.oldText.length}get oldEnd(){return this.oldPosition+this.oldText.length}get newLength(){return this.newText.length}get newEnd(){return this.newPosition+this.newText.length}toString(){return 0===this.oldText.length?`(insert@${this.oldPosition} "${this.newText}")`:0===this.newText.length?`(delete@${this.oldPosition} "${this.oldText}")`:`(replace@${this.oldPosition} "${this.oldText}" with "${this.newText}")`}static _writeStringSize(e){return 4+2*e.length}static _writeString(e,t,i){const r=t.length;n.T4(e,r,i),i+=4;for(let s=0;s<r;s++)n.oq(e,t.charCodeAt(s),i),i+=2;return i}static _readString(e,t){const i=n.Ag(e,t);return t+=4,(0,r.kH)(e,t,i)}writeSize(){return 8+s._writeStringSize(this.oldText)+s._writeStringSize(this.newText)}write(e,t){return n.T4(e,this.oldPosition,t),t+=4,n.T4(e,this.newPosition,t),t+=4,t=s._writeString(e,this.oldText,t),s._writeString(e,this.newText,t)}static read(e,t,i){const r=n.Ag(e,t);t+=4;const o=n.Ag(e,t);t+=4;const a=s._readString(e,t);t+=s._writeStringSize(a);const l=s._readString(e,t);return t+=s._writeStringSize(l),i.push(new s(r,a,o,l)),t}}function o(e,t){return null===e||0===e.length?t:new a(e,t).compress()}class a{constructor(e,t){this._prevEdits=e,this._currEdits=t,this._result=[],this._resultLen=0,this._prevLen=this._prevEdits.length,this._prevDeltaOffset=0,this._currLen=this._currEdits.length,this._currDeltaOffset=0}compress(){let e=0,t=0,i=this._getPrev(e),n=this._getCurr(t);for(;e<this._prevLen||t<this._currLen;){if(null===i){this._acceptCurr(n),n=this._getCurr(++t);continue}if(null===n){this._acceptPrev(i),i=this._getPrev(++e);continue}if(n.oldEnd<=i.newPosition){this._acceptCurr(n),n=this._getCurr(++t);continue}if(i.newEnd<=n.oldPosition){this._acceptPrev(i),i=this._getPrev(++e);continue}if(n.oldPosition<i.newPosition){const[e,t]=a._splitCurr(n,i.newPosition-n.oldPosition);this._acceptCurr(e),n=t;continue}if(i.newPosition<n.oldPosition){const[e,t]=a._splitPrev(i,n.oldPosition-i.newPosition);this._acceptPrev(e),i=t;continue}let r,o;if(n.oldEnd===i.newEnd)r=i,o=n,i=this._getPrev(++e),n=this._getCurr(++t);else if(n.oldEnd<i.newEnd){const[e,s]=a._splitPrev(i,n.oldLength);r=e,o=n,i=s,n=this._getCurr(++t)}else{const[t,s]=a._splitCurr(n,i.newLength);r=i,o=t,i=this._getPrev(++e),n=s}this._result[this._resultLen++]=new s(r.oldPosition,r.oldText,o.newPosition,o.newText),this._prevDeltaOffset+=r.newLength-r.oldLength,this._currDeltaOffset+=o.newLength-o.oldLength}const r=a._merge(this._result);return a._removeNoOps(r)}_acceptCurr(e){this._result[this._resultLen++]=a._rebaseCurr(this._prevDeltaOffset,e),this._currDeltaOffset+=e.newLength-e.oldLength}_getCurr(e){return e<this._currLen?this._currEdits[e]:null}_acceptPrev(e){this._result[this._resultLen++]=a._rebasePrev(this._currDeltaOffset,e),this._prevDeltaOffset+=e.newLength-e.oldLength}_getPrev(e){return e<this._prevLen?this._prevEdits[e]:null}static _rebaseCurr(e,t){return new s(t.oldPosition-e,t.oldText,t.newPosition,t.newText)}static _rebasePrev(e,t){return new s(t.oldPosition,t.oldText,t.newPosition+e,t.newText)}static _splitPrev(e,t){const i=e.newText.substr(0,t),n=e.newText.substr(t);return[new s(e.oldPosition,e.oldText,e.newPosition,i),new s(e.oldEnd,"",e.newPosition+t,n)]}static _splitCurr(e,t){const i=e.oldText.substr(0,t),n=e.oldText.substr(t);return[new s(e.oldPosition,i,e.newPosition,e.newText),new s(e.oldPosition+t,n,e.newEnd,"")]}static _merge(e){if(0===e.length)return e;let t=[],i=0,n=e[0];for(let r=1;r<e.length;r++){const o=e[r];n.oldEnd===o.oldPosition?n=new s(n.oldPosition,n.oldText+o.oldText,n.newPosition,n.newText+o.newText):(t[i++]=n,n=o)}return t[i++]=n,t}static _removeNoOps(e){if(0===e.length)return e;let t=[],i=0;for(let n=0;n<e.length;n++){const r=e[n];r.oldText!==r.newText&&(t[i++]=r)}return t}}},3411:(e,t,i)=>{"use strict";i.d(t,{qx:()=>Ke,yO:()=>He});var n=i(17301),r=i(4669),s=i(5976),o=i(97295),a=i(70666),l=i(64141),c=i(50187),d=i(24314),h=i(3860),u=i(84973),g=i(95215);class f{constructor(){this.spacesDiff=0,this.looksLikeAlignment=!1}}function p(e,t,i,n,r){let s;for(r.spacesDiff=0,r.looksLikeAlignment=!1,s=0;s<t&&s<n&&e.charCodeAt(s)===i.charCodeAt(s);s++);let o=0,a=0;for(let i=s;i<t;i++)32===e.charCodeAt(i)?o++:a++;let l=0,c=0;for(let e=s;e<n;e++)32===i.charCodeAt(e)?l++:c++;if(o>0&&a>0)return;if(l>0&&c>0)return;let d=Math.abs(a-c),h=Math.abs(o-l);if(0===d)return r.spacesDiff=h,void(h>0&&0<=l-1&&l-1<e.length&&l<i.length&&32!==i.charCodeAt(l)&&32===e.charCodeAt(l-1)&&44===e.charCodeAt(e.length-1)&&(r.looksLikeAlignment=!0));h%d!=0||(r.spacesDiff=h/d)}function m(e,t,i){const n=Math.min(e.getLineCount(),1e4);let r=0,s=0,o="",a=0;const l=[2,4,6,8,3,5,7];let c=[0,0,0,0,0,0,0,0,0],d=new f;for(let l=1;l<=n;l++){let n=e.getLineLength(l),h=e.getLineContent(l);const u=n<=65536;let g=!1,f=0,m=0,_=0;for(let t=0,i=n;t<i;t++){let i=u?h.charCodeAt(t):e.getLineCharCode(l,t);if(9===i)_++;else{if(32!==i){g=!0,f=t;break}m++}}if(!g)continue;if(_>0?r++:m>1&&s++,p(o,a,h,f,d),d.looksLikeAlignment&&(!i||t!==d.spacesDiff))continue;let b=d.spacesDiff;b<=8&&c[b]++,o=h,a=f}let h=i;r!==s&&(h=r<s);let u=t;if(h){let e=h?0:.1*n;l.forEach((t=>{let i=c[t];i>e&&(e=i,u=t)})),4===u&&c[4]>0&&c[2]>0&&c[2]>=c[4]/2&&(u=2)}return{insertSpaces:h,tabSize:u}}function _(e){return(1&e.metadata)>>>0}function b(e,t){e.metadata=254&e.metadata|t<<0}function v(e){return(2&e.metadata)>>>1==1}function y(e,t){e.metadata=253&e.metadata|(t?1:0)<<1}function w(e){return(4&e.metadata)>>>2==1}function C(e,t){e.metadata=251&e.metadata|(t?1:0)<<2}function S(e){return(8&e.metadata)>>>3==1}function k(e,t){e.metadata=247&e.metadata|(t?1:0)<<3}function x(e,t){e.metadata=207&e.metadata|t<<4}function L(e,t){e.metadata=191&e.metadata|(t?1:0)<<6}class M{constructor(e,t,i){this.metadata=0,this.parent=this,this.left=this,this.right=this,b(this,1),this.start=t,this.end=i,this.delta=0,this.maxEnd=i,this.id=e,this.ownerId=0,this.options=null,C(this,!1),x(this,1),k(this,!1),L(this,!1),this.cachedVersionId=0,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=null,y(this,!1)}reset(e,t,i,n){this.start=t,this.end=i,this.maxEnd=i,this.cachedVersionId=e,this.cachedAbsoluteStart=t,this.cachedAbsoluteEnd=i,this.range=n}setOptions(e){this.options=e;let t=this.options.className;C(this,"squiggly-error"===t||"squiggly-warning"===t||"squiggly-info"===t),x(this,this.options.stickiness),k(this,!(!this.options.overviewRuler||!this.options.overviewRuler.color)),L(this,this.options.collapseOnReplaceEdit)}setCachedOffsets(e,t,i){this.cachedVersionId!==i&&(this.range=null),this.cachedVersionId=i,this.cachedAbsoluteStart=e,this.cachedAbsoluteEnd=t}detach(){this.parent=null,this.left=null,this.right=null}}const D=new M(null,0,0);D.parent=D,D.left=D,D.right=D,b(D,0);class N{constructor(){this.root=D,this.requestNormalizeDelta=!1}intervalSearch(e,t,i,n,r){return this.root===D?[]:function(e,t,i,n,r,s){let o=e.root,a=0,l=0,c=0,d=0,h=[],u=0;for(;o!==D;)if(v(o))y(o.left,!1),y(o.right,!1),o===o.parent.right&&(a-=o.parent.delta),o=o.parent;else{if(!v(o.left)){if(l=a+o.maxEnd,l<t){y(o,!0);continue}if(o.left!==D){o=o.left;continue}}if(c=a+o.start,c>i)y(o,!0);else{if(d=a+o.end,d>=t){o.setCachedOffsets(c,d,s);let e=!0;n&&o.ownerId&&o.ownerId!==n&&(e=!1),r&&w(o)&&(e=!1),e&&(h[u++]=o)}y(o,!0),o.right===D||v(o.right)||(a+=o.delta,o=o.right)}}return y(e.root,!1),h}(this,e,t,i,n,r)}search(e,t,i){return this.root===D?[]:function(e,t,i,n){let r=e.root,s=0,o=0,a=0,l=[],c=0;for(;r!==D;){if(v(r)){y(r.left,!1),y(r.right,!1),r===r.parent.right&&(s-=r.parent.delta),r=r.parent;continue}if(r.left!==D&&!v(r.left)){r=r.left;continue}o=s+r.start,a=s+r.end,r.setCachedOffsets(o,a,n);let e=!0;t&&r.ownerId&&r.ownerId!==t&&(e=!1),i&&w(r)&&(e=!1),e&&(l[c++]=r),y(r,!0),r.right===D||v(r.right)||(s+=r.delta,r=r.right)}return y(e.root,!1),l}(this,e,t,i)}collectNodesFromOwner(e){return function(e,t){let i=e.root,n=[],r=0;for(;i!==D;)v(i)?(y(i.left,!1),y(i.right,!1),i=i.parent):i.left===D||v(i.left)?(i.ownerId===t&&(n[r++]=i),y(i,!0),i.right===D||v(i.right)||(i=i.right)):i=i.left;return y(e.root,!1),n}(this,e)}collectNodesPostOrder(){return function(e){let t=e.root,i=[],n=0;for(;t!==D;)v(t)?(y(t.left,!1),y(t.right,!1),t=t.parent):t.left===D||v(t.left)?t.right===D||v(t.right)?(i[n++]=t,y(t,!0)):t=t.right:t=t.left;return y(e.root,!1),i}(this)}insert(e){I(this,e),this._normalizeDeltaIfNecessary()}delete(e){O(this,e),this._normalizeDeltaIfNecessary()}resolveNode(e,t){const i=e;let n=0;for(;e!==this.root;)e===e.parent.right&&(n+=e.parent.delta),e=e.parent;const r=i.start+n,s=i.end+n;i.setCachedOffsets(r,s,t)}acceptReplace(e,t,i,n){const r=function(e,t,i){let n=e.root,r=0,s=0,o=0,a=0,l=[],c=0;for(;n!==D;)if(v(n))y(n.left,!1),y(n.right,!1),n===n.parent.right&&(r-=n.parent.delta),n=n.parent;else{if(!v(n.left)){if(s=r+n.maxEnd,s<t){y(n,!0);continue}if(n.left!==D){n=n.left;continue}}o=r+n.start,o>i?y(n,!0):(a=r+n.end,a>=t&&(n.setCachedOffsets(o,a,0),l[c++]=n),y(n,!0),n.right===D||v(n.right)||(r+=n.delta,n=n.right))}return y(e.root,!1),l}(this,e,e+t);for(let e=0,t=r.length;e<t;e++)O(this,r[e]);this._normalizeDeltaIfNecessary(),function(e,t,i,n){let r=e.root,s=0,o=0,a=0;const l=n-(i-t);for(;r!==D;)if(v(r))y(r.left,!1),y(r.right,!1),r===r.parent.right&&(s-=r.parent.delta),B(r),r=r.parent;else{if(!v(r.left)){if(o=s+r.maxEnd,o<t){y(r,!0);continue}if(r.left!==D){r=r.left;continue}}a=s+r.start,a>i?(r.start+=l,r.end+=l,r.delta+=l,(r.delta<-1073741824||r.delta>1073741824)&&(e.requestNormalizeDelta=!0),y(r,!0)):(y(r,!0),r.right===D||v(r.right)||(s+=r.delta,r=r.right))}y(e.root,!1)}(this,e,e+t,i),this._normalizeDeltaIfNecessary();for(let s=0,o=r.length;s<o;s++){const o=r[s];o.start=o.cachedAbsoluteStart,o.end=o.cachedAbsoluteEnd,T(o,e,e+t,i,n),o.maxEnd=o.end,I(this,o)}this._normalizeDeltaIfNecessary()}_normalizeDeltaIfNecessary(){this.requestNormalizeDelta&&(this.requestNormalizeDelta=!1,function(e){let t=e.root,i=0;for(;t!==D;)t.left===D||v(t.left)?t.right===D||v(t.right)?(t.start=i+t.start,t.end=i+t.end,t.delta=0,B(t),y(t,!0),y(t.left,!1),y(t.right,!1),t===t.parent.right&&(i-=t.parent.delta),t=t.parent):(i+=t.delta,t=t.right):t=t.left;y(e.root,!1)}(this))}}function E(e,t,i,n){return e<i||!(e>i)&&1!==n&&(2===n||t)}function T(e,t,i,n,r){const s=function(e){return(48&e.metadata)>>>4}(e),o=0===s||2===s,a=1===s||2===s,l=i-t,c=n,d=Math.min(l,c),h=e.start;let u=!1;const g=e.end;let f=!1;t<=h&&g<=i&&function(e){return(64&e.metadata)>>>6==1}(e)&&(e.start=t,u=!0,e.end=t,f=!0);{const e=r?1:l>0?2:0;!u&&E(h,o,t,e)&&(u=!0),!f&&E(g,a,t,e)&&(f=!0)}if(d>0&&!r){const e=l>c?2:0;!u&&E(h,o,t+d,e)&&(u=!0),!f&&E(g,a,t+d,e)&&(f=!0)}{const n=r?1:0;!u&&E(h,o,i,n)&&(e.start=t+c,u=!0),!f&&E(g,a,i,n)&&(e.end=t+c,f=!0)}const p=c-l;u||(e.start=Math.max(0,h+p)),f||(e.end=Math.max(0,g+p)),e.start>e.end&&(e.end=e.start)}function I(e,t){if(e.root===D)return t.parent=D,t.left=D,t.right=D,b(t,0),e.root=t,e.root;!function(e,t){let i=0,n=e.root;const r=t.start,s=t.end;for(;;)if(o=r,a=s,l=n.start+i,c=n.end+i,(o===l?a-c:o-l)<0){if(n.left===D){t.start-=i,t.end-=i,t.maxEnd-=i,n.left=t;break}n=n.left}else{if(n.right===D){t.start-=i+n.delta,t.end-=i+n.delta,t.maxEnd-=i+n.delta,n.right=t;break}i+=n.delta,n=n.right}var o,a,l,c;t.parent=n,t.left=D,t.right=D,b(t,1)}(e,t),W(t.parent);let i=t;for(;i!==e.root&&1===_(i.parent);)if(i.parent===i.parent.parent.left){const t=i.parent.parent.right;1===_(t)?(b(i.parent,0),b(t,0),b(i.parent.parent,1),i=i.parent.parent):(i===i.parent.right&&(i=i.parent,R(e,i)),b(i.parent,0),b(i.parent.parent,1),P(e,i.parent.parent))}else{const t=i.parent.parent.left;1===_(t)?(b(i.parent,0),b(t,0),b(i.parent.parent,1),i=i.parent.parent):(i===i.parent.left&&(i=i.parent,P(e,i)),b(i.parent,0),b(i.parent.parent,1),R(e,i.parent.parent))}return b(e.root,0),t}function O(e,t){let i,n;if(t.left===D?(i=t.right,n=t,i.delta+=t.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0),i.start+=t.delta,i.end+=t.delta):t.right===D?(i=t.left,n=t):(n=function(e){for(;e.left!==D;)e=e.left;return e}(t.right),i=n.right,i.start+=n.delta,i.end+=n.delta,i.delta+=n.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0),n.start+=t.delta,n.end+=t.delta,n.delta=t.delta,(n.delta<-1073741824||n.delta>1073741824)&&(e.requestNormalizeDelta=!0)),n===e.root)return e.root=i,b(i,0),t.detach(),A(),B(i),void(e.root.parent=D);let r,s=1===_(n);if(n===n.parent.left?n.parent.left=i:n.parent.right=i,n===t?i.parent=n.parent:(n.parent===t?i.parent=n:i.parent=n.parent,n.left=t.left,n.right=t.right,n.parent=t.parent,b(n,_(t)),t===e.root?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left!==D&&(n.left.parent=n),n.right!==D&&(n.right.parent=n)),t.detach(),s)return W(i.parent),n!==t&&(W(n),W(n.parent)),void A();for(W(i),W(i.parent),n!==t&&(W(n),W(n.parent));i!==e.root&&0===_(i);)i===i.parent.left?(r=i.parent.right,1===_(r)&&(b(r,0),b(i.parent,1),R(e,i.parent),r=i.parent.right),0===_(r.left)&&0===_(r.right)?(b(r,1),i=i.parent):(0===_(r.right)&&(b(r.left,0),b(r,1),P(e,r),r=i.parent.right),b(r,_(i.parent)),b(i.parent,0),b(r.right,0),R(e,i.parent),i=e.root)):(r=i.parent.left,1===_(r)&&(b(r,0),b(i.parent,1),P(e,i.parent),r=i.parent.left),0===_(r.left)&&0===_(r.right)?(b(r,1),i=i.parent):(0===_(r.left)&&(b(r.right,0),b(r,1),R(e,r),r=i.parent.left),b(r,_(i.parent)),b(i.parent,0),b(r.left,0),P(e,i.parent),i=e.root));b(i,0),A()}function A(){D.parent=D,D.delta=0,D.start=0,D.end=0}function R(e,t){const i=t.right;i.delta+=t.delta,(i.delta<-1073741824||i.delta>1073741824)&&(e.requestNormalizeDelta=!0),i.start+=t.delta,i.end+=t.delta,t.right=i.left,i.left!==D&&(i.left.parent=t),i.parent=t.parent,t.parent===D?e.root=i:t===t.parent.left?t.parent.left=i:t.parent.right=i,i.left=t,t.parent=i,B(t),B(i)}function P(e,t){const i=t.left;t.delta-=i.delta,(t.delta<-1073741824||t.delta>1073741824)&&(e.requestNormalizeDelta=!0),t.start-=i.delta,t.end-=i.delta,t.left=i.right,i.right!==D&&(i.right.parent=t),i.parent=t.parent,t.parent===D?e.root=i:t===t.parent.right?t.parent.right=i:t.parent.left=i,i.right=t,t.parent=i,B(t),B(i)}function F(e){let t=e.end;if(e.left!==D){const i=e.left.maxEnd;i>t&&(t=i)}if(e.right!==D){const i=e.right.maxEnd+e.delta;i>t&&(t=i)}return t}function B(e){e.maxEnd=F(e)}function W(e){for(;e!==D;){const t=F(e);if(e.maxEnd===t)return;e.maxEnd=t,e=e.parent}}class Y{constructor(e,t){this.piece=e,this.color=t,this.size_left=0,this.lf_left=0,this.parent=this,this.left=this,this.right=this}next(){if(this.right!==H)return j(this.right);let e=this;for(;e.parent!==H&&e.parent.left!==e;)e=e.parent;return e.parent===H?H:e.parent}prev(){if(this.left!==H)return V(this.left);let e=this;for(;e.parent!==H&&e.parent.right!==e;)e=e.parent;return e.parent===H?H:e.parent}detach(){this.parent=null,this.left=null,this.right=null}}const H=new Y(null,0);function j(e){for(;e.left!==H;)e=e.left;return e}function V(e){for(;e.right!==H;)e=e.right;return e}function z(e){return e===H?0:e.size_left+e.piece.length+z(e.right)}function U(e){return e===H?0:e.lf_left+e.piece.lineFeedCnt+U(e.right)}function $(){H.parent=H}function K(e,t){let i=t.right;i.size_left+=t.size_left+(t.piece?t.piece.length:0),i.lf_left+=t.lf_left+(t.piece?t.piece.lineFeedCnt:0),t.right=i.left,i.left!==H&&(i.left.parent=t),i.parent=t.parent,t.parent===H?e.root=i:t.parent.left===t?t.parent.left=i:t.parent.right=i,i.left=t,t.parent=i}function q(e,t){let i=t.left;t.left=i.right,i.right!==H&&(i.right.parent=t),i.parent=t.parent,t.size_left-=i.size_left+(i.piece?i.piece.length:0),t.lf_left-=i.lf_left+(i.piece?i.piece.lineFeedCnt:0),t.parent===H?e.root=i:t===t.parent.right?t.parent.right=i:t.parent.left=i,i.right=t,t.parent=i}function G(e,t){let i,n;if(t.left===H?(n=t,i=n.right):t.right===H?(n=t,i=n.left):(n=j(t.right),i=n.right),n===e.root)return e.root=i,i.color=0,t.detach(),$(),void(e.root.parent=H);let r,s=1===n.color;if(n===n.parent.left?n.parent.left=i:n.parent.right=i,n===t?(i.parent=n.parent,Q(e,i)):(n.parent===t?i.parent=n:i.parent=n.parent,Q(e,i),n.left=t.left,n.right=t.right,n.parent=t.parent,n.color=t.color,t===e.root?e.root=n:t===t.parent.left?t.parent.left=n:t.parent.right=n,n.left!==H&&(n.left.parent=n),n.right!==H&&(n.right.parent=n),n.size_left=t.size_left,n.lf_left=t.lf_left,Q(e,n)),t.detach(),i.parent.left===i){let t=z(i),n=U(i);if(t!==i.parent.size_left||n!==i.parent.lf_left){let r=t-i.parent.size_left,s=n-i.parent.lf_left;i.parent.size_left=t,i.parent.lf_left=n,J(e,i.parent,r,s)}}if(Q(e,i.parent),s)$();else{for(;i!==e.root&&0===i.color;)i===i.parent.left?(r=i.parent.right,1===r.color&&(r.color=0,i.parent.color=1,K(e,i.parent),r=i.parent.right),0===r.left.color&&0===r.right.color?(r.color=1,i=i.parent):(0===r.right.color&&(r.left.color=0,r.color=1,q(e,r),r=i.parent.right),r.color=i.parent.color,i.parent.color=0,r.right.color=0,K(e,i.parent),i=e.root)):(r=i.parent.left,1===r.color&&(r.color=0,i.parent.color=1,q(e,i.parent),r=i.parent.left),0===r.left.color&&0===r.right.color?(r.color=1,i=i.parent):(0===r.left.color&&(r.right.color=0,r.color=1,K(e,r),r=i.parent.left),r.color=i.parent.color,i.parent.color=0,r.left.color=0,q(e,i.parent),i=e.root));i.color=0,$()}}function Z(e,t){for(Q(e,t);t!==e.root&&1===t.parent.color;)if(t.parent===t.parent.parent.left){const i=t.parent.parent.right;1===i.color?(t.parent.color=0,i.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.right&&K(e,t=t.parent),t.parent.color=0,t.parent.parent.color=1,q(e,t.parent.parent))}else{const i=t.parent.parent.left;1===i.color?(t.parent.color=0,i.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.left&&q(e,t=t.parent),t.parent.color=0,t.parent.parent.color=1,K(e,t.parent.parent))}e.root.color=0}function J(e,t,i,n){for(;t!==e.root&&t!==H;)t.parent.left===t&&(t.parent.size_left+=i,t.parent.lf_left+=n),t=t.parent}function Q(e,t){let i=0,n=0;if(t!==e.root){if(0===i){for(;t!==e.root&&t===t.parent.right;)t=t.parent;if(t===e.root)return;i=z((t=t.parent).left)-t.size_left,n=U(t.left)-t.lf_left,t.size_left+=i,t.lf_left+=n}for(;t!==e.root&&(0!==i||0!==n);)t.parent.left===t&&(t.parent.size_left+=i,t.parent.lf_left+=n),t=t.parent}}H.parent=H,H.left=H,H.right=H,H.color=0;var X=i(77277);const ee=65535;function te(e){let t;return t=e[e.length-1]<65536?new Uint16Array(e.length):new Uint32Array(e.length),t.set(e,0),t}class ie{constructor(e,t,i,n,r){this.lineStarts=e,this.cr=t,this.lf=i,this.crlf=n,this.isBasicASCII=r}}function ne(e,t=!0){let i=[0],n=1;for(let t=0,r=e.length;t<r;t++){const s=e.charCodeAt(t);13===s?t+1<r&&10===e.charCodeAt(t+1)?(i[n++]=t+2,t++):i[n++]=t+1:10===s&&(i[n++]=t+1)}return t?te(i):i}class re{constructor(e,t,i,n,r){this.bufferIndex=e,this.start=t,this.end=i,this.lineFeedCnt=n,this.length=r}}class se{constructor(e,t){this.buffer=e,this.lineStarts=t}}class oe{constructor(e,t){this._pieces=[],this._tree=e,this._BOM=t,this._index=0,e.root!==H&&e.iterate(e.root,(e=>(e!==H&&this._pieces.push(e.piece),!0)))}read(){return 0===this._pieces.length?0===this._index?(this._index++,this._BOM):null:this._index>this._pieces.length-1?null:0===this._index?this._BOM+this._tree.getPieceContent(this._pieces[this._index++]):this._tree.getPieceContent(this._pieces[this._index++])}}class ae{constructor(e){this._limit=e,this._cache=[]}get(e){for(let t=this._cache.length-1;t>=0;t--){let i=this._cache[t];if(i.nodeStartOffset<=e&&i.nodeStartOffset+i.node.piece.length>=e)return i}return null}get2(e){for(let t=this._cache.length-1;t>=0;t--){let i=this._cache[t];if(i.nodeStartLineNumber&&i.nodeStartLineNumber<e&&i.nodeStartLineNumber+i.node.piece.lineFeedCnt>=e)return i}return null}set(e){this._cache.length>=this._limit&&this._cache.shift(),this._cache.push(e)}validate(e){let t=!1,i=this._cache;for(let n=0;n<i.length;n++){let r=i[n];(null===r.node.parent||r.nodeStartOffset>=e)&&(i[n]=null,t=!0)}if(t){let e=[];for(const t of i)null!==t&&e.push(t);this._cache=e}}}class le{constructor(e,t,i){this.create(e,t,i)}create(e,t,i){this._buffers=[new se("",[0])],this._lastChangeBufferPos={line:0,column:0},this.root=H,this._lineCnt=1,this._length=0,this._EOL=t,this._EOLLength=t.length,this._EOLNormalized=i;let n=null;for(let t=0,i=e.length;t<i;t++)if(e[t].buffer.length>0){e[t].lineStarts||(e[t].lineStarts=ne(e[t].buffer));let i=new re(t+1,{line:0,column:0},{line:e[t].lineStarts.length-1,column:e[t].buffer.length-e[t].lineStarts[e[t].lineStarts.length-1]},e[t].lineStarts.length-1,e[t].buffer.length);this._buffers.push(e[t]),n=this.rbInsertRight(n,i)}this._searchCache=new ae(1),this._lastVisitedLine={lineNumber:0,value:""},this.computeBufferMetadata()}normalizeEOL(e){let t=65535-Math.floor(21845),i=2*t,n="",r=0,s=[];if(this.iterate(this.root,(o=>{let a=this.getNodeContent(o),l=a.length;if(r<=t||r+l<i)return n+=a,r+=l,!0;let c=n.replace(/\r\n|\r|\n/g,e);return s.push(new se(c,ne(c))),n=a,r=l,!0})),r>0){let t=n.replace(/\r\n|\r|\n/g,e);s.push(new se(t,ne(t)))}this.create(s,e,!0)}getEOL(){return this._EOL}setEOL(e){this._EOL=e,this._EOLLength=this._EOL.length,this.normalizeEOL(e)}createSnapshot(e){return new oe(this,e)}getOffsetAt(e,t){let i=0,n=this.root;for(;n!==H;)if(n.left!==H&&n.lf_left+1>=e)n=n.left;else{if(n.lf_left+n.piece.lineFeedCnt+1>=e)return i+=n.size_left,i+(this.getAccumulatedValue(n,e-n.lf_left-2)+t-1);e-=n.lf_left+n.piece.lineFeedCnt,i+=n.size_left+n.piece.length,n=n.right}return i}getPositionAt(e){e=Math.floor(e),e=Math.max(0,e);let t=this.root,i=0,n=e;for(;t!==H;)if(0!==t.size_left&&t.size_left>=e)t=t.left;else{if(t.size_left+t.piece.length>=e){let r=this.getIndexOf(t,e-t.size_left);if(i+=t.lf_left+r.index,0===r.index){let e=n-this.getOffsetAt(i+1,1);return new c.L(i+1,e+1)}return new c.L(i+1,r.remainder+1)}if(e-=t.size_left+t.piece.length,i+=t.lf_left+t.piece.lineFeedCnt,t.right===H){let t=n-e-this.getOffsetAt(i+1,1);return new c.L(i+1,t+1)}t=t.right}return new c.L(1,1)}getValueInRange(e,t){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return"";let i=this.nodeAt2(e.startLineNumber,e.startColumn),n=this.nodeAt2(e.endLineNumber,e.endColumn),r=this.getValueInRange2(i,n);return t?t===this._EOL&&this._EOLNormalized&&t===this.getEOL()&&this._EOLNormalized?r:r.replace(/\r\n|\r|\n/g,t):r}getValueInRange2(e,t){if(e.node===t.node){let i=e.node,n=this._buffers[i.piece.bufferIndex].buffer,r=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return n.substring(r+e.remainder,r+t.remainder)}let i=e.node,n=this._buffers[i.piece.bufferIndex].buffer,r=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start),s=n.substring(r+e.remainder,r+i.piece.length);for(i=i.next();i!==H;){let e=this._buffers[i.piece.bufferIndex].buffer,n=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(i===t.node){s+=e.substring(n,n+t.remainder);break}s+=e.substr(n,i.piece.length),i=i.next()}return s}getLinesContent(){let e=[],t=0,i="",n=!1;return this.iterate(this.root,(r=>{if(r===H)return!0;const s=r.piece;let o=s.length;if(0===o)return!0;const a=this._buffers[s.bufferIndex].buffer,l=this._buffers[s.bufferIndex].lineStarts,c=s.start.line,d=s.end.line;let h=l[c]+s.start.column;if(n&&(10===a.charCodeAt(h)&&(h++,o--),e[t++]=i,i="",n=!1,0===o))return!0;if(c===d)return this._EOLNormalized||13!==a.charCodeAt(h+o-1)?i+=a.substr(h,o):(n=!0,i+=a.substr(h,o-1)),!0;i+=this._EOLNormalized?a.substring(h,Math.max(h,l[c+1]-this._EOLLength)):a.substring(h,l[c+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;for(let n=c+1;n<d;n++)i=this._EOLNormalized?a.substring(l[n],l[n+1]-this._EOLLength):a.substring(l[n],l[n+1]).replace(/(\r\n|\r|\n)$/,""),e[t++]=i;return this._EOLNormalized||13!==a.charCodeAt(l[d]+s.end.column-1)?i=a.substr(l[d],s.end.column):(n=!0,0===s.end.column?t--:i=a.substr(l[d],s.end.column-1)),!0})),n&&(e[t++]=i,i=""),e[t++]=i,e}getLength(){return this._length}getLineCount(){return this._lineCnt}getLineContent(e){return this._lastVisitedLine.lineNumber===e||(this._lastVisitedLine.lineNumber=e,e===this._lineCnt?this._lastVisitedLine.value=this.getLineRawContent(e):this._EOLNormalized?this._lastVisitedLine.value=this.getLineRawContent(e,this._EOLLength):this._lastVisitedLine.value=this.getLineRawContent(e).replace(/(\r\n|\r|\n)$/,"")),this._lastVisitedLine.value}_getCharCode(e){if(e.remainder===e.node.piece.length){let t=e.node.next();if(!t)return 0;let i=this._buffers[t.piece.bufferIndex],n=this.offsetInBuffer(t.piece.bufferIndex,t.piece.start);return i.buffer.charCodeAt(n)}{let t=this._buffers[e.node.piece.bufferIndex],i=this.offsetInBuffer(e.node.piece.bufferIndex,e.node.piece.start)+e.remainder;return t.buffer.charCodeAt(i)}}getLineCharCode(e,t){let i=this.nodeAt2(e,t+1);return this._getCharCode(i)}getLineLength(e){if(e===this.getLineCount()){let t=this.getOffsetAt(e,1);return this.getLength()-t}return this.getOffsetAt(e+1,1)-this.getOffsetAt(e,1)-this._EOLLength}findMatchesInNode(e,t,i,n,r,s,o,a,l,c,h){let u,g,f,p=this._buffers[e.piece.bufferIndex],m=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start),_=this.offsetInBuffer(e.piece.bufferIndex,r),b=this.offsetInBuffer(e.piece.bufferIndex,s),v={line:0,column:0};t._wordSeparators?(g=p.buffer.substring(_,b),f=e=>e+_,t.reset(0)):(g=p.buffer,f=e=>e,t.reset(_));do{if(u=t.next(g),u){if(f(u.index)>=b)return c;this.positionInBuffer(e,f(u.index)-m,v);let t=this.getLineFeedCnt(e.piece.bufferIndex,r,v),s=v.line===r.line?v.column-r.column+n:v.column+1,o=s+u[0].length;if(h[c++]=(0,X.iE)(new d.e(i+t,s,i+t,o),u,a),f(u.index)+u[0].length>=b)return c;if(c>=l)return c}}while(u);return c}findMatchesLineByLine(e,t,i,n){const r=[];let s=0;const o=new X.sz(t.wordSeparators,t.regex);let a=this.nodeAt2(e.startLineNumber,e.startColumn);if(null===a)return[];let l=this.nodeAt2(e.endLineNumber,e.endColumn);if(null===l)return[];let c=this.positionInBuffer(a.node,a.remainder),d=this.positionInBuffer(l.node,l.remainder);if(a.node===l.node)return this.findMatchesInNode(a.node,o,e.startLineNumber,e.startColumn,c,d,t,i,n,s,r),r;let h=e.startLineNumber,u=a.node;for(;u!==l.node;){let l=this.getLineFeedCnt(u.piece.bufferIndex,c,u.piece.end);if(l>=1){let a=this._buffers[u.piece.bufferIndex].lineStarts,d=this.offsetInBuffer(u.piece.bufferIndex,u.piece.start),g=a[c.line+l],f=h===e.startLineNumber?e.startColumn:1;if(s=this.findMatchesInNode(u,o,h,f,c,this.positionInBuffer(u,g-d),t,i,n,s,r),s>=n)return r;h+=l}let d=h===e.startLineNumber?e.startColumn-1:0;if(h===e.endLineNumber){const a=this.getLineContent(h).substring(d,e.endColumn-1);return s=this._findMatchesInLine(t,o,a,e.endLineNumber,d,s,r,i,n),r}if(s=this._findMatchesInLine(t,o,this.getLineContent(h).substr(d),h,d,s,r,i,n),s>=n)return r;h++,a=this.nodeAt2(h,1),u=a.node,c=this.positionInBuffer(a.node,a.remainder)}if(h===e.endLineNumber){let a=h===e.startLineNumber?e.startColumn-1:0;const l=this.getLineContent(h).substring(a,e.endColumn-1);return s=this._findMatchesInLine(t,o,l,e.endLineNumber,a,s,r,i,n),r}let g=h===e.startLineNumber?e.startColumn:1;return s=this.findMatchesInNode(l.node,o,h,g,c,d,t,i,n,s,r),r}_findMatchesInLine(e,t,i,n,r,s,o,a,l){const c=e.wordSeparators;if(!a&&e.simpleSearch){const t=e.simpleSearch,a=t.length,h=i.length;let g=-a;for(;-1!==(g=i.indexOf(t,g+a));)if((!c||(0,X.cM)(c,i,h,g,a))&&(o[s++]=new u.tk(new d.e(n,g+1+r,n,g+1+a+r),null),s>=l))return s;return s}let h;t.reset(0);do{if(h=t.next(i),h&&(o[s++]=(0,X.iE)(new d.e(n,h.index+1+r,n,h.index+1+h[0].length+r),h,a),s>=l))return s}while(h);return s}insert(e,t,i=!1){if(this._EOLNormalized=this._EOLNormalized&&i,this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",this.root!==H){let{node:i,remainder:n,nodeStartOffset:r}=this.nodeAt(e),s=i.piece,o=s.bufferIndex,a=this.positionInBuffer(i,n);if(0===i.piece.bufferIndex&&s.end.line===this._lastChangeBufferPos.line&&s.end.column===this._lastChangeBufferPos.column&&r+s.length===e&&t.length<ee)return this.appendToNode(i,t),void this.computeBufferMetadata();if(r===e)this.insertContentToNodeLeft(t,i),this._searchCache.validate(e);else if(r+i.piece.length>e){let e=[],r=new re(s.bufferIndex,a,s.end,this.getLineFeedCnt(s.bufferIndex,a,s.end),this.offsetInBuffer(o,s.end)-this.offsetInBuffer(o,a));if(this.shouldCheckCRLF()&&this.endWithCR(t)&&10===this.nodeCharCodeAt(i,n)){let e={line:r.start.line+1,column:0};r=new re(r.bufferIndex,e,r.end,this.getLineFeedCnt(r.bufferIndex,e,r.end),r.length-1),t+="\n"}if(this.shouldCheckCRLF()&&this.startWithLF(t))if(13===this.nodeCharCodeAt(i,n-1)){let r=this.positionInBuffer(i,n-1);this.deleteNodeTail(i,r),t="\r"+t,0===i.piece.length&&e.push(i)}else this.deleteNodeTail(i,a);else this.deleteNodeTail(i,a);let l=this.createNewPieces(t);r.length>0&&this.rbInsertRight(i,r);let c=i;for(let e=0;e<l.length;e++)c=this.rbInsertRight(c,l[e]);this.deleteNodes(e)}else this.insertContentToNodeRight(t,i)}else{let e=this.createNewPieces(t),i=this.rbInsertLeft(null,e[0]);for(let t=1;t<e.length;t++)i=this.rbInsertRight(i,e[t])}this.computeBufferMetadata()}delete(e,t){if(this._lastVisitedLine.lineNumber=0,this._lastVisitedLine.value="",t<=0||this.root===H)return;let i=this.nodeAt(e),n=this.nodeAt(e+t),r=i.node,s=n.node;if(r===s){let s=this.positionInBuffer(r,i.remainder),o=this.positionInBuffer(r,n.remainder);if(i.nodeStartOffset===e){if(t===r.piece.length){let e=r.next();return G(this,r),this.validateCRLFWithPrevNode(e),void this.computeBufferMetadata()}return this.deleteNodeHead(r,o),this._searchCache.validate(e),this.validateCRLFWithPrevNode(r),void this.computeBufferMetadata()}return i.nodeStartOffset+r.piece.length===e+t?(this.deleteNodeTail(r,s),this.validateCRLFWithNextNode(r),void this.computeBufferMetadata()):(this.shrinkNode(r,s,o),void this.computeBufferMetadata())}let o=[],a=this.positionInBuffer(r,i.remainder);this.deleteNodeTail(r,a),this._searchCache.validate(e),0===r.piece.length&&o.push(r);let l=this.positionInBuffer(s,n.remainder);this.deleteNodeHead(s,l),0===s.piece.length&&o.push(s);for(let e=r.next();e!==H&&e!==s;e=e.next())o.push(e);let c=0===r.piece.length?r.prev():r;this.deleteNodes(o),this.validateCRLFWithNextNode(c),this.computeBufferMetadata()}insertContentToNodeLeft(e,t){let i=[];if(this.shouldCheckCRLF()&&this.endWithCR(e)&&this.startWithLF(t)){let n=t.piece,r={line:n.start.line+1,column:0},s=new re(n.bufferIndex,r,n.end,this.getLineFeedCnt(n.bufferIndex,r,n.end),n.length-1);t.piece=s,e+="\n",J(this,t,-1,-1),0===t.piece.length&&i.push(t)}let n=this.createNewPieces(e),r=this.rbInsertLeft(t,n[n.length-1]);for(let e=n.length-2;e>=0;e--)r=this.rbInsertLeft(r,n[e]);this.validateCRLFWithPrevNode(r),this.deleteNodes(i)}insertContentToNodeRight(e,t){this.adjustCarriageReturnFromNext(e,t)&&(e+="\n");let i=this.createNewPieces(e),n=this.rbInsertRight(t,i[0]),r=n;for(let e=1;e<i.length;e++)r=this.rbInsertRight(r,i[e]);this.validateCRLFWithPrevNode(n)}positionInBuffer(e,t,i){let n=e.piece,r=e.piece.bufferIndex,s=this._buffers[r].lineStarts,o=s[n.start.line]+n.start.column+t,a=n.start.line,l=n.end.line,c=0,d=0,h=0;for(;a<=l&&(c=a+(l-a)/2|0,h=s[c],c!==l);)if(d=s[c+1],o<h)l=c-1;else{if(!(o>=d))break;a=c+1}return i?(i.line=c,i.column=o-h,null):{line:c,column:o-h}}getLineFeedCnt(e,t,i){if(0===i.column)return i.line-t.line;let n=this._buffers[e].lineStarts;if(i.line===n.length-1)return i.line-t.line;let r=n[i.line+1],s=n[i.line]+i.column;if(r>s+1)return i.line-t.line;let o=s-1;return 13===this._buffers[e].buffer.charCodeAt(o)?i.line-t.line+1:i.line-t.line}offsetInBuffer(e,t){return this._buffers[e].lineStarts[t.line]+t.column}deleteNodes(e){for(let t=0;t<e.length;t++)G(this,e[t])}createNewPieces(e){if(e.length>ee){let t=[];for(;e.length>ee;){const i=e.charCodeAt(65534);let n;13===i||i>=55296&&i<=56319?(n=e.substring(0,65534),e=e.substring(65534)):(n=e.substring(0,ee),e=e.substring(ee));let r=ne(n);t.push(new re(this._buffers.length,{line:0,column:0},{line:r.length-1,column:n.length-r[r.length-1]},r.length-1,n.length)),this._buffers.push(new se(n,r))}let i=ne(e);return t.push(new re(this._buffers.length,{line:0,column:0},{line:i.length-1,column:e.length-i[i.length-1]},i.length-1,e.length)),this._buffers.push(new se(e,i)),t}let t=this._buffers[0].buffer.length;const i=ne(e,!1);let n=this._lastChangeBufferPos;if(this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-1]===t&&0!==t&&this.startWithLF(e)&&this.endWithCR(this._buffers[0].buffer)){this._lastChangeBufferPos={line:this._lastChangeBufferPos.line,column:this._lastChangeBufferPos.column+1},n=this._lastChangeBufferPos;for(let e=0;e<i.length;e++)i[e]+=t+1;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+="_"+e,t+=1}else{if(0!==t)for(let e=0;e<i.length;e++)i[e]+=t;this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(i.slice(1)),this._buffers[0].buffer+=e}const r=this._buffers[0].buffer.length;let s=this._buffers[0].lineStarts.length-1,o={line:s,column:r-this._buffers[0].lineStarts[s]},a=new re(0,n,o,this.getLineFeedCnt(0,n,o),r-t);return this._lastChangeBufferPos=o,[a]}getLineRawContent(e,t=0){let i=this.root,n="",r=this._searchCache.get2(e);if(r){i=r.node;let s=this.getAccumulatedValue(i,e-r.nodeStartLineNumber-1),o=this._buffers[i.piece.bufferIndex].buffer,a=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);if(r.nodeStartLineNumber+i.piece.lineFeedCnt!==e){let n=this.getAccumulatedValue(i,e-r.nodeStartLineNumber);return o.substring(a+s,a+n-t)}n=o.substring(a+s,a+i.piece.length)}else{let r=0;const s=e;for(;i!==H;)if(i.left!==H&&i.lf_left>=e-1)i=i.left;else{if(i.lf_left+i.piece.lineFeedCnt>e-1){let n=this.getAccumulatedValue(i,e-i.lf_left-2),o=this.getAccumulatedValue(i,e-i.lf_left-1),a=this._buffers[i.piece.bufferIndex].buffer,l=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return r+=i.size_left,this._searchCache.set({node:i,nodeStartOffset:r,nodeStartLineNumber:s-(e-1-i.lf_left)}),a.substring(l+n,l+o-t)}if(i.lf_left+i.piece.lineFeedCnt===e-1){let t=this.getAccumulatedValue(i,e-i.lf_left-2),r=this._buffers[i.piece.bufferIndex].buffer,s=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n=r.substring(s+t,s+i.piece.length);break}e-=i.lf_left+i.piece.lineFeedCnt,r+=i.size_left+i.piece.length,i=i.right}}for(i=i.next();i!==H;){let e=this._buffers[i.piece.bufferIndex].buffer;if(i.piece.lineFeedCnt>0){let r=this.getAccumulatedValue(i,0),s=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);return n+=e.substring(s,s+r-t),n}{let t=this.offsetInBuffer(i.piece.bufferIndex,i.piece.start);n+=e.substr(t,i.piece.length)}i=i.next()}return n}computeBufferMetadata(){let e=this.root,t=1,i=0;for(;e!==H;)t+=e.lf_left+e.piece.lineFeedCnt,i+=e.size_left+e.piece.length,e=e.right;this._lineCnt=t,this._length=i,this._searchCache.validate(this._length)}getIndexOf(e,t){let i=e.piece,n=this.positionInBuffer(e,t),r=n.line-i.start.line;if(this.offsetInBuffer(i.bufferIndex,i.end)-this.offsetInBuffer(i.bufferIndex,i.start)===t){let t=this.getLineFeedCnt(e.piece.bufferIndex,i.start,n);if(t!==r)return{index:t,remainder:0}}return{index:r,remainder:n.column}}getAccumulatedValue(e,t){if(t<0)return 0;let i=e.piece,n=this._buffers[i.bufferIndex].lineStarts,r=i.start.line+t+1;return r>i.end.line?n[i.end.line]+i.end.column-n[i.start.line]-i.start.column:n[r]-n[i.start.line]-i.start.column}deleteNodeTail(e,t){const i=e.piece,n=i.lineFeedCnt,r=this.offsetInBuffer(i.bufferIndex,i.end),s=t,o=this.offsetInBuffer(i.bufferIndex,s),a=this.getLineFeedCnt(i.bufferIndex,i.start,s),l=a-n,c=o-r,d=i.length+c;e.piece=new re(i.bufferIndex,i.start,s,a,d),J(this,e,c,l)}deleteNodeHead(e,t){const i=e.piece,n=i.lineFeedCnt,r=this.offsetInBuffer(i.bufferIndex,i.start),s=t,o=this.getLineFeedCnt(i.bufferIndex,s,i.end),a=o-n,l=r-this.offsetInBuffer(i.bufferIndex,s),c=i.length+l;e.piece=new re(i.bufferIndex,s,i.end,o,c),J(this,e,l,a)}shrinkNode(e,t,i){const n=e.piece,r=n.start,s=n.end,o=n.length,a=n.lineFeedCnt,l=t,c=this.getLineFeedCnt(n.bufferIndex,n.start,l),d=this.offsetInBuffer(n.bufferIndex,t)-this.offsetInBuffer(n.bufferIndex,r);e.piece=new re(n.bufferIndex,n.start,l,c,d),J(this,e,d-o,c-a);let h=new re(n.bufferIndex,i,s,this.getLineFeedCnt(n.bufferIndex,i,s),this.offsetInBuffer(n.bufferIndex,s)-this.offsetInBuffer(n.bufferIndex,i)),u=this.rbInsertRight(e,h);this.validateCRLFWithPrevNode(u)}appendToNode(e,t){this.adjustCarriageReturnFromNext(t,e)&&(t+="\n");const i=this.shouldCheckCRLF()&&this.startWithLF(t)&&this.endWithCR(e),n=this._buffers[0].buffer.length;this._buffers[0].buffer+=t;const r=ne(t,!1);for(let e=0;e<r.length;e++)r[e]+=n;if(i){let e=this._buffers[0].lineStarts[this._buffers[0].lineStarts.length-2];this._buffers[0].lineStarts.pop(),this._lastChangeBufferPos={line:this._lastChangeBufferPos.line-1,column:n-e}}this._buffers[0].lineStarts=this._buffers[0].lineStarts.concat(r.slice(1));const s=this._buffers[0].lineStarts.length-1,o={line:s,column:this._buffers[0].buffer.length-this._buffers[0].lineStarts[s]},a=e.piece.length+t.length,l=e.piece.lineFeedCnt,c=this.getLineFeedCnt(0,e.piece.start,o),d=c-l;e.piece=new re(e.piece.bufferIndex,e.piece.start,o,c,a),this._lastChangeBufferPos=o,J(this,e,t.length,d)}nodeAt(e){let t=this.root,i=this._searchCache.get(e);if(i)return{node:i.node,nodeStartOffset:i.nodeStartOffset,remainder:e-i.nodeStartOffset};let n=0;for(;t!==H;)if(t.size_left>e)t=t.left;else{if(t.size_left+t.piece.length>=e){n+=t.size_left;let i={node:t,remainder:e-t.size_left,nodeStartOffset:n};return this._searchCache.set(i),i}e-=t.size_left+t.piece.length,n+=t.size_left+t.piece.length,t=t.right}return null}nodeAt2(e,t){let i=this.root,n=0;for(;i!==H;)if(i.left!==H&&i.lf_left>=e-1)i=i.left;else{if(i.lf_left+i.piece.lineFeedCnt>e-1){let r=this.getAccumulatedValue(i,e-i.lf_left-2),s=this.getAccumulatedValue(i,e-i.lf_left-1);return n+=i.size_left,{node:i,remainder:Math.min(r+t-1,s),nodeStartOffset:n}}if(i.lf_left+i.piece.lineFeedCnt===e-1){let r=this.getAccumulatedValue(i,e-i.lf_left-2);if(r+t-1<=i.piece.length)return{node:i,remainder:r+t-1,nodeStartOffset:n};t-=i.piece.length-r;break}e-=i.lf_left+i.piece.lineFeedCnt,n+=i.size_left+i.piece.length,i=i.right}for(i=i.next();i!==H;){if(i.piece.lineFeedCnt>0){let e=this.getAccumulatedValue(i,0),n=this.offsetOfNode(i);return{node:i,remainder:Math.min(t-1,e),nodeStartOffset:n}}if(i.piece.length>=t-1)return{node:i,remainder:t-1,nodeStartOffset:this.offsetOfNode(i)};t-=i.piece.length,i=i.next()}return null}nodeCharCodeAt(e,t){if(e.piece.lineFeedCnt<1)return-1;let i=this._buffers[e.piece.bufferIndex],n=this.offsetInBuffer(e.piece.bufferIndex,e.piece.start)+t;return i.buffer.charCodeAt(n)}offsetOfNode(e){if(!e)return 0;let t=e.size_left;for(;e!==this.root;)e.parent.right===e&&(t+=e.parent.size_left+e.parent.piece.length),e=e.parent;return t}shouldCheckCRLF(){return!(this._EOLNormalized&&"\n"===this._EOL)}startWithLF(e){if("string"==typeof e)return 10===e.charCodeAt(0);if(e===H||0===e.piece.lineFeedCnt)return!1;let t=e.piece,i=this._buffers[t.bufferIndex].lineStarts,n=t.start.line,r=i[n]+t.start.column;return n!==i.length-1&&!(i[n+1]>r+1)&&10===this._buffers[t.bufferIndex].buffer.charCodeAt(r)}endWithCR(e){return"string"==typeof e?13===e.charCodeAt(e.length-1):e!==H&&0!==e.piece.lineFeedCnt&&13===this.nodeCharCodeAt(e,e.piece.length-1)}validateCRLFWithPrevNode(e){if(this.shouldCheckCRLF()&&this.startWithLF(e)){let t=e.prev();this.endWithCR(t)&&this.fixCRLF(t,e)}}validateCRLFWithNextNode(e){if(this.shouldCheckCRLF()&&this.endWithCR(e)){let t=e.next();this.startWithLF(t)&&this.fixCRLF(e,t)}}fixCRLF(e,t){let i,n=[],r=this._buffers[e.piece.bufferIndex].lineStarts;i=0===e.piece.end.column?{line:e.piece.end.line-1,column:r[e.piece.end.line]-r[e.piece.end.line-1]-1}:{line:e.piece.end.line,column:e.piece.end.column-1};const s=e.piece.length-1,o=e.piece.lineFeedCnt-1;e.piece=new re(e.piece.bufferIndex,e.piece.start,i,o,s),J(this,e,-1,-1),0===e.piece.length&&n.push(e);let a={line:t.piece.start.line+1,column:0};const l=t.piece.length-1,c=this.getLineFeedCnt(t.piece.bufferIndex,a,t.piece.end);t.piece=new re(t.piece.bufferIndex,a,t.piece.end,c,l),J(this,t,-1,-1),0===t.piece.length&&n.push(t);let d=this.createNewPieces("\r\n");this.rbInsertRight(e,d[0]);for(let e=0;e<n.length;e++)G(this,n[e])}adjustCarriageReturnFromNext(e,t){if(this.shouldCheckCRLF()&&this.endWithCR(e)){let i=t.next();if(this.startWithLF(i)){if(e+="\n",1===i.piece.length)G(this,i);else{const e=i.piece,t={line:e.start.line+1,column:0},n=e.length-1,r=this.getLineFeedCnt(e.bufferIndex,t,e.end);i.piece=new re(e.bufferIndex,t,e.end,r,n),J(this,i,-1,-1)}return!0}}return!1}iterate(e,t){if(e===H)return t(H);let i=this.iterate(e.left,t);return i?t(e)&&this.iterate(e.right,t):i}getNodeContent(e){if(e===H)return"";let t,i=this._buffers[e.piece.bufferIndex],n=e.piece,r=this.offsetInBuffer(n.bufferIndex,n.start),s=this.offsetInBuffer(n.bufferIndex,n.end);return t=i.buffer.substring(r,s),t}getPieceContent(e){let t=this._buffers[e.bufferIndex],i=this.offsetInBuffer(e.bufferIndex,e.start),n=this.offsetInBuffer(e.bufferIndex,e.end);return t.buffer.substring(i,n)}rbInsertRight(e,t){let i=new Y(t,1);if(i.left=H,i.right=H,i.parent=H,i.size_left=0,i.lf_left=0,this.root===H)this.root=i,i.color=0;else if(e.right===H)e.right=i,i.parent=e;else{let t=j(e.right);t.left=i,i.parent=t}return Z(this,i),i}rbInsertLeft(e,t){let i=new Y(t,1);if(i.left=H,i.right=H,i.parent=H,i.size_left=0,i.lf_left=0,this.root===H)this.root=i,i.color=0;else if(e.left===H)e.left=i,i.parent=e;else{let t=V(e.left);t.right=i,i.parent=t}return Z(this,i),i}}var ce=i(58409),de=i(60962);class he{constructor(e,t,i,n,s,o,a){this._onDidChangeContent=new r.Q5,this._BOM=t,this._mightContainNonBasicASCII=!o,this._mightContainRTL=n,this._mightContainUnusualLineTerminators=s,this._pieceTree=new le(e,i,a)}dispose(){this._onDidChangeContent.dispose()}mightContainRTL(){return this._mightContainRTL}mightContainUnusualLineTerminators(){return this._mightContainUnusualLineTerminators}resetMightContainUnusualLineTerminators(){this._mightContainUnusualLineTerminators=!1}mightContainNonBasicASCII(){return this._mightContainNonBasicASCII}getBOM(){return this._BOM}getEOL(){return this._pieceTree.getEOL()}createSnapshot(e){return this._pieceTree.createSnapshot(e?this._BOM:"")}getOffsetAt(e,t){return this._pieceTree.getOffsetAt(e,t)}getPositionAt(e){return this._pieceTree.getPositionAt(e)}getRangeAt(e,t){let i=e+t;const n=this.getPositionAt(e),r=this.getPositionAt(i);return new d.e(n.lineNumber,n.column,r.lineNumber,r.column)}getValueInRange(e,t=0){if(e.isEmpty())return"";const i=this._getEndOfLine(t);return this._pieceTree.getValueInRange(e,i)}getValueLengthInRange(e,t=0){if(e.isEmpty())return 0;if(e.startLineNumber===e.endLineNumber)return e.endColumn-e.startColumn;let i=this.getOffsetAt(e.startLineNumber,e.startColumn);return this.getOffsetAt(e.endLineNumber,e.endColumn)-i}getCharacterCountInRange(e,t=0){if(this._mightContainNonBasicASCII){let i=0;const n=e.startLineNumber,r=e.endLineNumber;for(let t=n;t<=r;t++){const s=this.getLineContent(t),a=t===n?e.startColumn-1:0,l=t===r?e.endColumn-1:s.length;for(let e=a;e<l;e++)o.ZG(s.charCodeAt(e))?(i+=1,e+=1):i+=1}return i+=this._getEndOfLine(t).length*(r-n),i}return this.getValueLengthInRange(e,t)}getLength(){return this._pieceTree.getLength()}getLineCount(){return this._pieceTree.getLineCount()}getLinesContent(){return this._pieceTree.getLinesContent()}getLineContent(e){return this._pieceTree.getLineContent(e)}getLineCharCode(e,t){return this._pieceTree.getLineCharCode(e,t)}getLineLength(e){return this._pieceTree.getLineLength(e)}getLineFirstNonWhitespaceColumn(e){const t=o.LC(this.getLineContent(e));return-1===t?0:t+1}getLineLastNonWhitespaceColumn(e){const t=o.ow(this.getLineContent(e));return-1===t?0:t+2}_getEndOfLine(e){switch(e){case 1:return"\n";case 2:return"\r\n";case 0:return this.getEOL();default:throw new Error("Unknown EOL preference")}}setEOL(e){this._pieceTree.setEOL(e)}applyEdits(e,t,i){let n=this._mightContainRTL,r=this._mightContainUnusualLineTerminators,s=this._mightContainNonBasicASCII,a=!0,l=[];for(let t=0;t<e.length;t++){let i=e[t];a&&i._isTracked&&(a=!1);let c=i.range;if(i.text){let e=!0;s||(e=!o.$i(i.text),s=e),!n&&e&&(n=o.Ut(i.text)),!r&&e&&(r=o.ab(i.text))}let d="",h=0,u=0,g=0;if(i.text){let e;[h,u,g,e]=(0,ce.QZ)(i.text);const t=this.getEOL(),n="\r\n"===t?2:1;d=0===e||e===n?i.text:i.text.replace(/\r\n|\r|\n/g,t)}l[t]={sortIndex:t,identifier:i.identifier||null,range:c,rangeOffset:this.getOffsetAt(c.startLineNumber,c.startColumn),rangeLength:this.getValueLengthInRange(c),text:d,eolCount:h,firstLineLength:u,lastLineLength:g,forceMoveMarkers:Boolean(i.forceMoveMarkers),isAutoWhitespaceEdit:i.isAutoWhitespaceEdit||!1}}l.sort(he._sortOpsAscending);let c=!1;for(let e=0,t=l.length-1;e<t;e++){let t=l[e].range.getEndPosition(),i=l[e+1].range.getStartPosition();if(i.isBeforeOrEqual(t)){if(i.isBefore(t))throw new Error("Overlapping ranges are not allowed!");c=!0}}a&&(l=this._reduceOperations(l));let d=i||t?he._getInverseEditRanges(l):[],h=[];if(t)for(let e=0;e<l.length;e++){let t=l[e],i=d[e];if(t.isAutoWhitespaceEdit&&t.range.isEmpty())for(let e=i.startLineNumber;e<=i.endLineNumber;e++){let n="";e===i.startLineNumber&&(n=this.getLineContent(t.range.startLineNumber),-1!==o.LC(n))||h.push({lineNumber:e,oldContent:n})}}let g=null;if(i){let e=0;g=[];for(let t=0;t<l.length;t++){const i=l[t],n=d[t],r=this.getValueInRange(i.range),s=i.rangeOffset+e;e+=i.text.length-r.length,g[t]={sortIndex:i.sortIndex,identifier:i.identifier,range:n,text:r,textChange:new de.q(i.rangeOffset,r,s,i.text)}}c||g.sort(((e,t)=>e.sortIndex-t.sortIndex))}this._mightContainRTL=n,this._mightContainUnusualLineTerminators=r,this._mightContainNonBasicASCII=s;const f=this._doApplyEdits(l);let p=null;if(t&&h.length>0){h.sort(((e,t)=>t.lineNumber-e.lineNumber)),p=[];for(let e=0,t=h.length;e<t;e++){let t=h[e].lineNumber;if(e>0&&h[e-1].lineNumber===t)continue;let i=h[e].oldContent,n=this.getLineContent(t);0!==n.length&&n!==i&&-1===o.LC(n)&&p.push(t)}}return this._onDidChangeContent.fire(),new u.je(g,f,p)}_reduceOperations(e){return e.length<1e3?e:[this._toSingleEditOperation(e)]}_toSingleEditOperation(e){let t=!1;const i=e[0].range,n=e[e.length-1].range,r=new d.e(i.startLineNumber,i.startColumn,n.endLineNumber,n.endColumn);let s=i.startLineNumber,o=i.startColumn;const a=[];for(let i=0,n=e.length;i<n;i++){const n=e[i],r=n.range;t=t||n.forceMoveMarkers,a.push(this.getValueInRange(new d.e(s,o,r.startLineNumber,r.startColumn))),n.text.length>0&&a.push(n.text),s=r.endLineNumber,o=r.endColumn}const l=a.join(""),[c,h,u]=(0,ce.QZ)(l);return{sortIndex:0,identifier:e[0].identifier,range:r,rangeOffset:this.getOffsetAt(r.startLineNumber,r.startColumn),rangeLength:this.getValueLengthInRange(r,0),text:l,eolCount:c,firstLineLength:h,lastLineLength:u,forceMoveMarkers:t,isAutoWhitespaceEdit:!1}}_doApplyEdits(e){e.sort(he._sortOpsDescending);let t=[];for(let i=0;i<e.length;i++){let n=e[i];const r=n.range.startLineNumber,s=n.range.startColumn,o=n.range.endLineNumber,a=n.range.endColumn;if(r===o&&s===a&&0===n.text.length)continue;n.text?(this._pieceTree.delete(n.rangeOffset,n.rangeLength),this._pieceTree.insert(n.rangeOffset,n.text,!0)):this._pieceTree.delete(n.rangeOffset,n.rangeLength);const l=new d.e(r,s,o,a);t.push({range:l,rangeLength:n.rangeLength,text:n.text,rangeOffset:n.rangeOffset,forceMoveMarkers:n.forceMoveMarkers})}return t}findMatchesLineByLine(e,t,i,n){return this._pieceTree.findMatchesLineByLine(e,t,i,n)}static _getInverseEditRanges(e){let t=[],i=0,n=0,r=null;for(let s=0,o=e.length;s<o;s++){let o,a,l,c=e[s];if(r?r.range.endLineNumber===c.range.startLineNumber?(o=i,a=n+(c.range.startColumn-r.range.endColumn)):(o=i+(c.range.startLineNumber-r.range.endLineNumber),a=c.range.startColumn):(o=c.range.startLineNumber,a=c.range.startColumn),c.text.length>0){const e=c.eolCount+1;l=1===e?new d.e(o,a,o,a+c.firstLineLength):new d.e(o,a,o+e-1,c.lastLineLength+1)}else l=new d.e(o,a,o,a);i=l.endLineNumber,n=l.endColumn,t.push(l),r=c}return t}static _sortOpsAscending(e,t){let i=d.e.compareRangesUsingEnds(e.range,t.range);return 0===i?e.sortIndex-t.sortIndex:i}static _sortOpsDescending(e,t){let i=d.e.compareRangesUsingEnds(e.range,t.range);return 0===i?t.sortIndex-e.sortIndex:-i}}class ue{constructor(e,t,i,n,r,s,o,a,l){this._chunks=e,this._bom=t,this._cr=i,this._lf=n,this._crlf=r,this._containsRTL=s,this._containsUnusualLineTerminators=o,this._isBasicASCII=a,this._normalizeEOL=l}_getEOL(e){const t=this._cr+this._lf+this._crlf,i=this._cr+this._crlf;return 0===t?1===e?"\n":"\r\n":i>t/2?"\r\n":"\n"}create(e){const t=this._getEOL(e);let i=this._chunks;if(this._normalizeEOL&&("\r\n"===t&&(this._cr>0||this._lf>0)||"\n"===t&&(this._cr>0||this._crlf>0)))for(let e=0,n=i.length;e<n;e++){let n=i[e].buffer.replace(/\r\n|\r|\n/g,t),r=ne(n);i[e]=new se(n,r)}return new he(i,this._bom,t,this._containsRTL,this._containsUnusualLineTerminators,this._isBasicASCII,this._normalizeEOL)}}class ge{constructor(){this.chunks=[],this.BOM="",this._hasPreviousChar=!1,this._previousChar=0,this._tmpLineStarts=[],this.cr=0,this.lf=0,this.crlf=0,this.containsRTL=!1,this.containsUnusualLineTerminators=!1,this.isBasicASCII=!0}acceptChunk(e){if(0===e.length)return;0===this.chunks.length&&o.uS(e)&&(this.BOM=o.c1,e=e.substr(1));const t=e.charCodeAt(e.length-1);13===t||t>=55296&&t<=56319?(this._acceptChunk1(e.substr(0,e.length-1),!1),this._hasPreviousChar=!0,this._previousChar=t):(this._acceptChunk1(e,!1),this._hasPreviousChar=!1,this._previousChar=t)}_acceptChunk1(e,t){(t||0!==e.length)&&(this._hasPreviousChar?this._acceptChunk2(String.fromCharCode(this._previousChar)+e):this._acceptChunk2(e))}_acceptChunk2(e){const t=function(e,t){e.length=0,e[0]=0;let i=1,n=0,r=0,s=0,o=!0;for(let a=0,l=t.length;a<l;a++){const c=t.charCodeAt(a);13===c?a+1<l&&10===t.charCodeAt(a+1)?(s++,e[i++]=a+2,a++):(n++,e[i++]=a+1):10===c?(r++,e[i++]=a+1):o&&9!==c&&(c<32||c>126)&&(o=!1)}const a=new ie(te(e),n,r,s,o);return e.length=0,a}(this._tmpLineStarts,e);this.chunks.push(new se(e,t.lineStarts)),this.cr+=t.cr,this.lf+=t.lf,this.crlf+=t.crlf,this.isBasicASCII&&(this.isBasicASCII=t.isBasicASCII),this.isBasicASCII||this.containsRTL||(this.containsRTL=o.Ut(e)),this.isBasicASCII||this.containsUnusualLineTerminators||(this.containsUnusualLineTerminators=o.ab(e))}finish(e=!0){return this._finish(),new ue(this.chunks,this.BOM,this.cr,this.lf,this.crlf,this.containsRTL,this.containsUnusualLineTerminators,this.isBasicASCII,e)}_finish(){if(0===this.chunks.length&&this._acceptChunk1("",!0),this._hasPreviousChar){this._hasPreviousChar=!1;let e=this.chunks[this.chunks.length-1];e.buffer+=String.fromCharCode(this._previousChar);let t=ne(e.buffer);e.lineStarts=t,13===this._previousChar&&this.cr++}}}class fe{constructor(){this.changeType=1}}class pe{constructor(e,t){this.changeType=2,this.lineNumber=e,this.detail=t}}class me{constructor(e,t){this.changeType=3,this.fromLineNumber=e,this.toLineNumber=t}}class _e{constructor(e,t,i){this.changeType=4,this.fromLineNumber=e,this.toLineNumber=t,this.detail=i}}class be{constructor(){this.changeType=5}}class ve{constructor(e,t,i,n){this.changes=e,this.versionId=t,this.isUndoing=i,this.isRedoing=n,this.resultingSelection=null}containsEvent(e){for(let t=0,i=this.changes.length;t<i;t++)if(this.changes[t].changeType===e)return!0;return!1}static merge(e,t){const i=[].concat(e.changes).concat(t.changes),n=t.versionId,r=e.isUndoing||t.isUndoing,s=e.isRedoing||t.isRedoing;return new ve(i,n,r,s)}}class ye{constructor(e,t){this.rawContentChangedEvent=e,this.contentChangedEvent=t}merge(e){const t=ve.merge(this.rawContentChangedEvent,e.rawContentChangedEvent),i=ye._mergeChangeEvents(this.contentChangedEvent,e.contentChangedEvent);return new ye(t,i)}static _mergeChangeEvents(e,t){return{changes:[].concat(e.changes).concat(t.changes),eol:t.eol,versionId:t.versionId,isUndoing:e.isUndoing||t.isUndoing,isRedoing:e.isRedoing||t.isRedoing,isFlush:e.isFlush||t.isFlush}}}var we=i(9488),Ce=i(78411),Se=i(43775),ke=i(28111),xe=i(84013),Le=i(1432);class Me{constructor(){this._beginState=[],this._valid=[],this._len=0,this._invalidLineStartIndex=0}_reset(e){this._beginState=[],this._valid=[],this._len=0,this._invalidLineStartIndex=0,e&&this._setBeginState(0,e)}flush(e){this._reset(e)}get invalidLineStartIndex(){return this._invalidLineStartIndex}_invalidateLine(e){e<this._len&&(this._valid[e]=!1),e<this._invalidLineStartIndex&&(this._invalidLineStartIndex=e)}_isValid(e){return e<this._len&&this._valid[e]}getBeginState(e){return e<this._len?this._beginState[e]:null}_ensureLine(e){for(;e>=this._len;)this._beginState[this._len]=null,this._valid[this._len]=!1,this._len++}_deleteLines(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._beginState.splice(e,t),this._valid.splice(e,t),this._len-=t)}_insertLines(e,t){if(0===t)return;let i=[],n=[];for(let e=0;e<t;e++)i[e]=null,n[e]=!1;this._beginState=we.Zv(this._beginState,e,i),this._valid=we.Zv(this._valid,e,n),this._len+=t}_setValid(e,t){this._ensureLine(e),this._valid[e]=t}_setBeginState(e,t){this._ensureLine(e),this._beginState[e]=t}setEndState(e,t,i){if(this._setValid(t,!0),this._invalidLineStartIndex=t+1,t===e-1)return;const n=this.getBeginState(t+1);if(null===n||!i.equals(n))return this._setBeginState(t+1,i),void this._invalidateLine(t+1);let r=t+1;for(;r<e&&this._isValid(r);)r++;this._invalidLineStartIndex=r}setFakeTokens(e){this._setValid(e,!1)}applyEdits(e,t){const i=e.endLineNumber-e.startLineNumber,n=t;for(let t=Math.min(i,n);t>=0;t--)this._invalidateLine(e.startLineNumber+t-1);this._acceptDeleteRange(e),this._acceptInsertText(new c.L(e.startLineNumber,e.startColumn),t)}_acceptDeleteRange(e){e.startLineNumber-1>=this._len||this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t){e.lineNumber-1>=this._len||this._insertLines(e.lineNumber,t)}}class De extends s.JT{constructor(e){super(),this._isDisposed=!1,this._textModel=e,this._tokenizationStateStore=new Me,this._tokenizationSupport=null,this._register(Se.RW.onDidChange((e=>{const t=this._textModel.getLanguageIdentifier();-1!==e.changedLanguages.indexOf(t.language)&&(this._resetTokenizationState(),this._textModel.clearTokens())}))),this._register(this._textModel.onDidChangeRawContentFast((e=>{e.containsEvent(1)&&this._resetTokenizationState()}))),this._register(this._textModel.onDidChangeContentFast((e=>{for(let t=0,i=e.changes.length;t<i;t++){const i=e.changes[t],[n]=(0,ce.QZ)(i.text);this._tokenizationStateStore.applyEdits(i.range,n)}this._beginBackgroundTokenization()}))),this._register(this._textModel.onDidChangeAttached((()=>{this._beginBackgroundTokenization()}))),this._register(this._textModel.onDidChangeLanguage((()=>{this._resetTokenizationState(),this._textModel.clearTokens()}))),this._resetTokenizationState()}dispose(){this._isDisposed=!0,super.dispose()}_resetTokenizationState(){const[e,t]=function(e){const t=e.getLanguageIdentifier();let i=e.isTooLargeForTokenization()?null:Se.RW.get(t.language),r=null;if(i)try{r=i.getInitialState()}catch(e){(0,n.dL)(e),i=null}return[i,r]}(this._textModel);this._tokenizationSupport=e,this._tokenizationStateStore.flush(t),this._beginBackgroundTokenization()}_beginBackgroundTokenization(){this._textModel.isAttachedToEditor()&&this._hasLinesToTokenize()&&Le.xS((()=>{this._isDisposed||this._revalidateTokensNow()}))}_revalidateTokensNow(e=this._textModel.getLineCount()){const t=new ce.DA,i=xe.G.create(!1);for(;this._hasLinesToTokenize()&&!(i.elapsed()>1)&&!(this._tokenizeOneInvalidLine(t)>=e););this._beginBackgroundTokenization(),this._textModel.setTokens(t.tokens)}tokenizeViewport(e,t){const i=new ce.DA;this._tokenizeViewport(i,e,t),this._textModel.setTokens(i.tokens)}reset(){this._resetTokenizationState(),this._textModel.clearTokens()}forceTokenization(e){const t=new ce.DA;this._updateTokensUntilLine(t,e),this._textModel.setTokens(t.tokens)}isCheapToTokenize(e){if(!this._tokenizationSupport)return!0;const t=this._tokenizationStateStore.invalidLineStartIndex+1;return!(e>t)&&(e<t||this._textModel.getLineLength(e)<2048)}_hasLinesToTokenize(){return!!this._tokenizationSupport&&this._tokenizationStateStore.invalidLineStartIndex<this._textModel.getLineCount()}_tokenizeOneInvalidLine(e){if(!this._hasLinesToTokenize())return this._textModel.getLineCount()+1;const t=this._tokenizationStateStore.invalidLineStartIndex+1;return this._updateTokensUntilLine(e,t),t}_updateTokensUntilLine(e,t){if(!this._tokenizationSupport)return;const i=this._textModel.getLanguageIdentifier(),n=this._textModel.getLineCount(),r=t-1;for(let t=this._tokenizationStateStore.invalidLineStartIndex;t<=r;t++){const r=this._textModel.getLineContent(t+1),s=this._tokenizationStateStore.getBeginState(t),o=Ne(i,this._tokenizationSupport,r,s);e.add(t+1,o.tokens),this._tokenizationStateStore.setEndState(n,t,o.endState),t=this._tokenizationStateStore.invalidLineStartIndex-1}}_tokenizeViewport(e,t,i){if(!this._tokenizationSupport)return;if(i<=this._tokenizationStateStore.invalidLineStartIndex)return;if(t<=this._tokenizationStateStore.invalidLineStartIndex)return void this._updateTokensUntilLine(e,i);let n=this._textModel.getLineFirstNonWhitespaceColumn(t),r=[],s=null;for(let e=t-1;n>0&&e>=1;e--){let t=this._textModel.getLineFirstNonWhitespaceColumn(e);if(0!==t&&t<n){if(s=this._tokenizationStateStore.getBeginState(e-1),s)break;r.push(this._textModel.getLineContent(e)),n=t}}s||(s=this._tokenizationSupport.getInitialState());const o=this._textModel.getLanguageIdentifier();let a=s;for(let e=r.length-1;e>=0;e--)a=Ne(o,this._tokenizationSupport,r[e],a).endState;for(let n=t;n<=i;n++){let t=this._textModel.getLineContent(n),i=Ne(o,this._tokenizationSupport,t,a);e.add(n,i.tokens),this._tokenizationStateStore.setFakeTokens(n-1),a=i.endState}}}function Ne(e,t,i,r){let s=null;if(t)try{s=t.tokenize2(i,r.clone(),0)}catch(e){(0,n.dL)(e)}return s||(s=(0,ke.mh)(e.id,i,r,0)),Ce.A.convertToEndOffset(s.tokens,i.length),s}var Ee=i(97461),Te=i(83831),Ie=i(40764),Oe=i(34227),Ae=i(41264);function Re(e,t){return("string"==typeof e?function(e){const t=new ge;return t.acceptChunk(e),t.finish()}(e):e).create(t)}let Pe=0;class Fe{constructor(e){this._source=e,this._eos=!1}read(){if(this._eos)return null;let e=[],t=0,i=0;for(;;){let n=this._source.read();if(null===n)return this._eos=!0,0===t?null:e.join("");if(n.length>0&&(e[t++]=n,i+=n.length),i>=65536)return e.join("")}}}const Be=()=>{throw new Error("Invalid change accessor")};class We{constructor(){this._searchCanceledBrand=void 0}}function Ye(e){return e instanceof We?null:e}We.INSTANCE=new We;class He extends s.JT{constructor(e,t,i,n=null,s){super(),this._onWillDispose=this._register(new r.Q5),this.onWillDispose=this._onWillDispose.event,this._onDidChangeDecorations=this._register(new Ze),this.onDidChangeDecorations=this._onDidChangeDecorations.event,this._onDidChangeLanguage=this._register(new r.Q5),this.onDidChangeLanguage=this._onDidChangeLanguage.event,this._onDidChangeLanguageConfiguration=this._register(new r.Q5),this.onDidChangeLanguageConfiguration=this._onDidChangeLanguageConfiguration.event,this._onDidChangeTokens=this._register(new r.Q5),this.onDidChangeTokens=this._onDidChangeTokens.event,this._onDidChangeOptions=this._register(new r.Q5),this.onDidChangeOptions=this._onDidChangeOptions.event,this._onDidChangeAttached=this._register(new r.Q5),this.onDidChangeAttached=this._onDidChangeAttached.event,this._eventEmitter=this._register(new Je),Pe++,this.id="$model"+Pe,this.isForSimpleWidget=t.isForSimpleWidget,this._associatedResource=null==n?a.o.parse("inmemory://model/"+Pe):n,this._undoRedoService=s,this._attachedEditorCount=0,this._buffer=Re(e,t.defaultEOL),this._options=He.resolveOptions(this._buffer,t);const l=this._buffer.getLineCount(),c=this._buffer.getValueLengthInRange(new d.e(1,1,l,this._buffer.getLineLength(l)+1),0);t.largeFileOptimizations?this._isTooLargeForTokenization=c>He.LARGE_FILE_SIZE_THRESHOLD||l>He.LARGE_FILE_LINE_COUNT_THRESHOLD:this._isTooLargeForTokenization=!1,this._isTooLargeForSyncing=c>He.MODEL_SYNC_LIMIT,this._versionId=1,this._alternativeVersionId=1,this._initialUndoRedoSnapshot=null,this._isDisposed=!1,this._isDisposing=!1,this._languageIdentifier=i||ke.pA,this._languageRegistryListener=Te.zu.onDidChange((e=>{e.languageIdentifier.id===this._languageIdentifier.id&&this._onDidChangeLanguageConfiguration.fire({})})),this._instanceId=o.PJ(Pe),this._lastDecorationId=0,this._decorations=Object.create(null),this._decorationsTree=new je,this._commandManager=new g.NL(this,s),this._isUndoing=!1,this._isRedoing=!1,this._trimAutoWhitespaceLines=null,this._tokens=new ce.Rl,this._tokens2=new ce.cx,this._tokenization=new De(this)}static resolveOptions(e,t){if(t.detectIndentation){const i=m(e,t.tabSize,t.insertSpaces);return new u.dJ({tabSize:i.tabSize,indentSize:i.tabSize,insertSpaces:i.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL})}return new u.dJ({tabSize:t.tabSize,indentSize:t.indentSize,insertSpaces:t.insertSpaces,trimAutoWhitespace:t.trimAutoWhitespace,defaultEOL:t.defaultEOL})}onDidChangeRawContentFast(e){return this._eventEmitter.fastEvent((t=>e(t.rawContentChangedEvent)))}onDidChangeContentFast(e){return this._eventEmitter.fastEvent((t=>e(t.contentChangedEvent)))}onDidChangeContent(e){return this._eventEmitter.slowEvent((t=>e(t.contentChangedEvent)))}dispose(){this._isDisposing=!0,this._onWillDispose.fire(),this._languageRegistryListener.dispose(),this._tokenization.dispose(),this._isDisposed=!0,super.dispose(),this._isDisposing=!1}_assertNotDisposed(){if(this._isDisposed)throw new Error("Model is disposed!")}_emitContentChangedEvent(e,t){this._isDisposing||this._eventEmitter.fire(new ye(e,t))}setValue(e){if(this._assertNotDisposed(),null===e)return;const t=Re(e,this._options.defaultEOL);this.setValueFromTextBuffer(t)}_createContentChanged2(e,t,i,n,r,s,o){return{changes:[{range:e,rangeOffset:t,rangeLength:i,text:n}],eol:this._buffer.getEOL(),versionId:this.getVersionId(),isUndoing:r,isRedoing:s,isFlush:o}}setValueFromTextBuffer(e){if(this._assertNotDisposed(),null===e)return;const t=this.getFullModelRange(),i=this.getValueLengthInRange(t),n=this.getLineCount(),r=this.getLineMaxColumn(n);this._buffer=e,this._increaseVersionId(),this._tokens.flush(),this._tokens2.flush(),this._decorations=Object.create(null),this._decorationsTree=new je,this._commandManager.clear(),this._trimAutoWhitespaceLines=null,this._emitContentChangedEvent(new ve([new fe],this._versionId,!1,!1),this._createContentChanged2(new d.e(1,1,n,r),0,i,this.getValue(),!1,!1,!0))}setEOL(e){this._assertNotDisposed();const t=1===e?"\r\n":"\n";if(this._buffer.getEOL()===t)return;const i=this.getFullModelRange(),n=this.getValueLengthInRange(i),r=this.getLineCount(),s=this.getLineMaxColumn(r);this._onBeforeEOLChange(),this._buffer.setEOL(t),this._increaseVersionId(),this._onAfterEOLChange(),this._emitContentChangedEvent(new ve([new be],this._versionId,!1,!1),this._createContentChanged2(new d.e(1,1,r,s),0,n,this.getValue(),!1,!1,!1))}_onBeforeEOLChange(){const e=this.getVersionId(),t=this._decorationsTree.search(0,!1,!1,e);this._ensureNodesHaveRanges(t)}_onAfterEOLChange(){const e=this.getVersionId(),t=this._decorationsTree.collectNodesPostOrder();for(let i=0,n=t.length;i<n;i++){const n=t[i],r=n.cachedAbsoluteStart-n.start,s=this._buffer.getOffsetAt(n.range.startLineNumber,n.range.startColumn),o=this._buffer.getOffsetAt(n.range.endLineNumber,n.range.endColumn);n.cachedAbsoluteStart=s,n.cachedAbsoluteEnd=o,n.cachedVersionId=e,n.start=s-r,n.end=o-r,B(n)}}onBeforeAttached(){this._attachedEditorCount++,1===this._attachedEditorCount&&this._onDidChangeAttached.fire(void 0)}onBeforeDetached(){this._attachedEditorCount--,0===this._attachedEditorCount&&this._onDidChangeAttached.fire(void 0)}isAttachedToEditor(){return this._attachedEditorCount>0}getAttachedEditorCount(){return this._attachedEditorCount}isTooLargeForSyncing(){return this._isTooLargeForSyncing}isTooLargeForTokenization(){return this._isTooLargeForTokenization}isDisposed(){return this._isDisposed}isDominatedByLongLines(){if(this._assertNotDisposed(),this.isTooLargeForTokenization())return!1;let e=0,t=0;const i=this._buffer.getLineCount();for(let n=1;n<=i;n++){const i=this._buffer.getLineLength(n);i>=1e4?t+=i:e+=i}return t>e}get uri(){return this._associatedResource}getOptions(){return this._assertNotDisposed(),this._options}getFormattingOptions(){return{tabSize:this._options.indentSize,insertSpaces:this._options.insertSpaces}}updateOptions(e){this._assertNotDisposed();let t=void 0!==e.tabSize?e.tabSize:this._options.tabSize,i=void 0!==e.indentSize?e.indentSize:this._options.indentSize,n=void 0!==e.insertSpaces?e.insertSpaces:this._options.insertSpaces,r=void 0!==e.trimAutoWhitespace?e.trimAutoWhitespace:this._options.trimAutoWhitespace,s=new u.dJ({tabSize:t,indentSize:i,insertSpaces:n,defaultEOL:this._options.defaultEOL,trimAutoWhitespace:r});if(this._options.equals(s))return;let o=this._options.createChangeEvent(s);this._options=s,this._onDidChangeOptions.fire(o)}detectIndentation(e,t){this._assertNotDisposed();let i=m(this._buffer,t,e);this.updateOptions({insertSpaces:i.insertSpaces,tabSize:i.tabSize,indentSize:i.tabSize})}static _normalizeIndentationFromWhitespace(e,t,i){let n=0;for(let i=0;i<e.length;i++)"\t"===e.charAt(i)?n+=t:n++;let r="";if(!i){let e=Math.floor(n/t);n%=t;for(let t=0;t<e;t++)r+="\t"}for(let e=0;e<n;e++)r+=" ";return r}static normalizeIndentation(e,t,i){let n=o.LC(e);return-1===n&&(n=e.length),He._normalizeIndentationFromWhitespace(e.substring(0,n),t,i)+e.substring(n)}normalizeIndentation(e){return this._assertNotDisposed(),He.normalizeIndentation(e,this._options.indentSize,this._options.insertSpaces)}getVersionId(){return this._assertNotDisposed(),this._versionId}mightContainRTL(){return this._buffer.mightContainRTL()}mightContainUnusualLineTerminators(){return this._buffer.mightContainUnusualLineTerminators()}removeUnusualLineTerminators(e=null){const t=this.findMatches(o.Qe.source,!1,!0,!1,null,!1,1073741824);this._buffer.resetMightContainUnusualLineTerminators(),this.pushEditOperations(e,t.map((e=>({range:e.range,text:null}))),(()=>null))}mightContainNonBasicASCII(){return this._buffer.mightContainNonBasicASCII()}getAlternativeVersionId(){return this._assertNotDisposed(),this._alternativeVersionId}getOffsetAt(e){this._assertNotDisposed();let t=this._validatePosition(e.lineNumber,e.column,0);return this._buffer.getOffsetAt(t.lineNumber,t.column)}getPositionAt(e){this._assertNotDisposed();let t=Math.min(this._buffer.getLength(),Math.max(0,e));return this._buffer.getPositionAt(t)}_increaseVersionId(){this._versionId=this._versionId+1,this._alternativeVersionId=this._versionId}_overwriteVersionId(e){this._versionId=e}_overwriteAlternativeVersionId(e){this._alternativeVersionId=e}_overwriteInitialUndoRedoSnapshot(e){this._initialUndoRedoSnapshot=e}getValue(e,t=!1){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueInRange(i,e);return t?this._buffer.getBOM()+n:n}createSnapshot(e=!1){return new Fe(this._buffer.createSnapshot(e))}getValueLength(e,t=!1){this._assertNotDisposed();const i=this.getFullModelRange(),n=this.getValueLengthInRange(i,e);return t?this._buffer.getBOM().length+n:n}getValueInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueInRange(this.validateRange(e),t)}getValueLengthInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getValueLengthInRange(this.validateRange(e),t)}getCharacterCountInRange(e,t=0){return this._assertNotDisposed(),this._buffer.getCharacterCountInRange(this.validateRange(e),t)}getLineCount(){return this._assertNotDisposed(),this._buffer.getLineCount()}getLineContent(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineContent(e)}getLineLength(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLength(e)}getLinesContent(){return this._assertNotDisposed(),this._buffer.getLinesContent()}getEOL(){return this._assertNotDisposed(),this._buffer.getEOL()}getLineMinColumn(e){return this._assertNotDisposed(),1}getLineMaxColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLength(e)+1}getLineFirstNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineFirstNonWhitespaceColumn(e)}getLineLastNonWhitespaceColumn(e){if(this._assertNotDisposed(),e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._buffer.getLineLastNonWhitespaceColumn(e)}_validateRangeRelaxedNoAllocations(e){const t=this._buffer.getLineCount(),i=e.startLineNumber,n=e.startColumn;let r,s;if(i<1)r=1,s=1;else if(i>t)r=t,s=this.getLineMaxColumn(r);else if(r=0|i,n<=1)s=1;else{const e=this.getLineMaxColumn(r);s=n>=e?e:0|n}const o=e.endLineNumber,a=e.endColumn;let l,c;if(o<1)l=1,c=1;else if(o>t)l=t,c=this.getLineMaxColumn(l);else if(l=0|o,a<=1)c=1;else{const e=this.getLineMaxColumn(l);c=a>=e?e:0|a}return i===r&&n===s&&o===l&&a===c&&e instanceof d.e&&!(e instanceof h.Y)?e:new d.e(r,s,l,c)}_isValidPosition(e,t,i){if("number"!=typeof e||"number"!=typeof t)return!1;if(isNaN(e)||isNaN(t))return!1;if(e<1||t<1)return!1;if((0|e)!==e||(0|t)!==t)return!1;if(e>this._buffer.getLineCount())return!1;if(1===t)return!0;if(t>this.getLineMaxColumn(e))return!1;if(1===i){const i=this._buffer.getLineCharCode(e,t-2);if(o.ZG(i))return!1}return!0}_validatePosition(e,t,i){const n=Math.floor("number"!=typeof e||isNaN(e)?1:e),r=Math.floor("number"!=typeof t||isNaN(t)?1:t),s=this._buffer.getLineCount();if(n<1)return new c.L(1,1);if(n>s)return new c.L(s,this.getLineMaxColumn(s));if(r<=1)return new c.L(n,1);const a=this.getLineMaxColumn(n);if(r>=a)return new c.L(n,a);if(1===i){const e=this._buffer.getLineCharCode(n,r-2);if(o.ZG(e))return new c.L(n,r-1)}return new c.L(n,r)}validatePosition(e){return this._assertNotDisposed(),e instanceof c.L&&this._isValidPosition(e.lineNumber,e.column,1)?e:this._validatePosition(e.lineNumber,e.column,1)}_isValidRange(e,t){const i=e.startLineNumber,n=e.startColumn,r=e.endLineNumber,s=e.endColumn;if(!this._isValidPosition(i,n,0))return!1;if(!this._isValidPosition(r,s,0))return!1;if(1===t){const e=n>1?this._buffer.getLineCharCode(i,n-2):0,t=s>1&&s<=this._buffer.getLineLength(r)?this._buffer.getLineCharCode(r,s-2):0,a=o.ZG(e),l=o.ZG(t);return!a&&!l}return!0}validateRange(e){if(this._assertNotDisposed(),e instanceof d.e&&!(e instanceof h.Y)&&this._isValidRange(e,1))return e;const t=this._validatePosition(e.startLineNumber,e.startColumn,0),i=this._validatePosition(e.endLineNumber,e.endColumn,0),n=t.lineNumber,r=t.column,s=i.lineNumber,a=i.column;{const e=r>1?this._buffer.getLineCharCode(n,r-2):0,t=a>1&&a<=this._buffer.getLineLength(s)?this._buffer.getLineCharCode(s,a-2):0,i=o.ZG(e),l=o.ZG(t);return i||l?n===s&&r===a?new d.e(n,r-1,s,a-1):i&&l?new d.e(n,r-1,s,a+1):i?new d.e(n,r-1,s,a):new d.e(n,r,s,a+1):new d.e(n,r,s,a)}}modifyPosition(e,t){this._assertNotDisposed();let i=this.getOffsetAt(e)+t;return this.getPositionAt(Math.min(this._buffer.getLength(),Math.max(0,i)))}getFullModelRange(){this._assertNotDisposed();const e=this.getLineCount();return new d.e(1,1,e,this.getLineMaxColumn(e))}findMatchesLineByLine(e,t,i,n){return this._buffer.findMatchesLineByLine(e,t,i,n)}findMatches(e,t,i,n,r,s,o=999){this._assertNotDisposed();let a=null;null!==t&&(Array.isArray(t)||(t=[t]),t.every((e=>d.e.isIRange(e)))&&(a=t.map((e=>this.validateRange(e))))),null===a&&(a=[this.getFullModelRange()]),a=a.sort(((e,t)=>e.startLineNumber-t.startLineNumber||e.startColumn-t.startColumn));const l=[];let c;if(l.push(a.reduce(((e,t)=>d.e.areIntersecting(e,t)?e.plusRange(t):(l.push(e),t)))),!i&&e.indexOf("\n")<0){const t=new X.bc(e,i,n,r).parseSearchRequest();if(!t)return[];c=e=>this.findMatchesLineByLine(e,t,s,o)}else c=t=>X.pM.findMatches(this,new X.bc(e,i,n,r),t,s,o);return l.map(c).reduce(((e,t)=>e.concat(t)),[])}findNextMatch(e,t,i,n,r,s){this._assertNotDisposed();const o=this.validatePosition(t);if(!i&&e.indexOf("\n")<0){const t=new X.bc(e,i,n,r).parseSearchRequest();if(!t)return null;const a=this.getLineCount();let l=new d.e(o.lineNumber,o.column,a,this.getLineMaxColumn(a)),c=this.findMatchesLineByLine(l,t,s,1);return X.pM.findNextMatch(this,new X.bc(e,i,n,r),o,s),c.length>0?c[0]:(l=new d.e(1,1,o.lineNumber,this.getLineMaxColumn(o.lineNumber)),c=this.findMatchesLineByLine(l,t,s,1),c.length>0?c[0]:null)}return X.pM.findNextMatch(this,new X.bc(e,i,n,r),o,s)}findPreviousMatch(e,t,i,n,r,s){this._assertNotDisposed();const o=this.validatePosition(t);return X.pM.findPreviousMatch(this,new X.bc(e,i,n,r),o,s)}pushStackElement(){this._commandManager.pushStackElement()}pushEOL(e){if(("\n"===this.getEOL()?0:1)!==e)try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),null===this._initialUndoRedoSnapshot&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEOL(e)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_validateEditOperation(e){return e instanceof u.Qi?e:new u.Qi(e.identifier||null,this.validateRange(e.range),e.text,e.forceMoveMarkers||!1,e.isAutoWhitespaceEdit||!1,e._isTracked||!1)}_validateEditOperations(e){const t=[];for(let i=0,n=e.length;i<n;i++)t[i]=this._validateEditOperation(e[i]);return t}pushEditOperations(e,t,i){try{return this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._pushEditOperations(e,this._validateEditOperations(t),i)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_pushEditOperations(e,t,i){if(this._options.trimAutoWhitespace&&this._trimAutoWhitespaceLines){let i=t.map((e=>({range:this.validateRange(e.range),text:e.text}))),n=!0;if(e)for(let t=0,r=e.length;t<r;t++){let r=e[t],s=!1;for(let e=0,t=i.length;e<t;e++){let t=i[e].range,n=t.startLineNumber>r.endLineNumber,o=r.startLineNumber>t.endLineNumber;if(!n&&!o){s=!0;break}}if(!s){n=!1;break}}if(n)for(let e=0,n=this._trimAutoWhitespaceLines.length;e<n;e++){let n=this._trimAutoWhitespaceLines[e],r=this.getLineMaxColumn(n),s=!0;for(let e=0,t=i.length;e<t;e++){let t=i[e].range,o=i[e].text;if(!(n<t.startLineNumber||n>t.endLineNumber||n===t.startLineNumber&&t.startColumn===r&&t.isEmpty()&&o&&o.length>0&&"\n"===o.charAt(0)||n===t.startLineNumber&&1===t.startColumn&&t.isEmpty()&&o&&o.length>0&&"\n"===o.charAt(o.length-1))){s=!1;break}}if(s){const e=new d.e(n,1,n,r);t.push(new u.Qi(null,e,null,!1,!1,!1))}}this._trimAutoWhitespaceLines=null}return null===this._initialUndoRedoSnapshot&&(this._initialUndoRedoSnapshot=this._undoRedoService.createSnapshot(this.uri)),this._commandManager.pushEditOperation(e,t,i)}_applyUndo(e,t,i,n){const r=e.map((e=>{const t=this.getPositionAt(e.newPosition),i=this.getPositionAt(e.newEnd);return{range:new d.e(t.lineNumber,t.column,i.lineNumber,i.column),text:e.oldText}}));this._applyUndoRedoEdits(r,t,!0,!1,i,n)}_applyRedo(e,t,i,n){const r=e.map((e=>{const t=this.getPositionAt(e.oldPosition),i=this.getPositionAt(e.oldEnd);return{range:new d.e(t.lineNumber,t.column,i.lineNumber,i.column),text:e.newText}}));this._applyUndoRedoEdits(r,t,!1,!0,i,n)}_applyUndoRedoEdits(e,t,i,n,r,s){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit(),this._isUndoing=i,this._isRedoing=n,this.applyEdits(e,!1),this.setEOL(t),this._overwriteAlternativeVersionId(r)}finally{this._isUndoing=!1,this._isRedoing=!1,this._eventEmitter.endDeferredEmit(s),this._onDidChangeDecorations.endDeferredEmit()}}applyEdits(e,t=!1){try{this._onDidChangeDecorations.beginDeferredEmit(),this._eventEmitter.beginDeferredEmit();const i=this._validateEditOperations(e);return this._doApplyEdits(i,t)}finally{this._eventEmitter.endDeferredEmit(),this._onDidChangeDecorations.endDeferredEmit()}}_doApplyEdits(e,t){const i=this._buffer.getLineCount(),n=this._buffer.applyEdits(e,this._options.trimAutoWhitespace,t),r=this._buffer.getLineCount(),s=n.changes;if(this._trimAutoWhitespaceLines=n.trimAutoWhitespaceLineNumbers,0!==s.length){let e=[],t=i;for(let i=0,n=s.length;i<n;i++){const n=s[i],[o,a,l]=(0,ce.QZ)(n.text);this._tokens.acceptEdit(n.range,o,a),this._tokens2.acceptEdit(n.range,o,a,l,n.text.length>0?n.text.charCodeAt(0):0),this._onDidChangeDecorations.fire(),this._decorationsTree.acceptReplace(n.rangeOffset,n.rangeLength,n.text.length,n.forceMoveMarkers);const c=n.range.startLineNumber,d=n.range.endLineNumber,h=d-c,u=o,g=Math.min(h,u),f=u-h;for(let i=g;i>=0;i--){const n=c+i,s=r-t-f+n;e.push(new pe(n,this.getLineContent(s)))}if(g<h){const t=c+g;e.push(new me(t+1,d))}if(g<u){const i=c+g,n=u-g,s=r-t-n+i+1;let o=[];for(let e=0;e<n;e++){let t=s+e;o[t-s]=this.getLineContent(t)}e.push(new _e(i+1,c+u,o))}t+=f}this._increaseVersionId(),this._emitContentChangedEvent(new ve(e,this.getVersionId(),this._isUndoing,this._isRedoing),{changes:s,eol:this._buffer.getEOL(),versionId:this.getVersionId(),isUndoing:this._isUndoing,isRedoing:this._isRedoing,isFlush:!1})}return null===n.reverseEdits?void 0:n.reverseEdits}undo(){this._undoRedoService.undo(this.uri)}canUndo(){return this._undoRedoService.canUndo(this.uri)}redo(){this._undoRedoService.redo(this.uri)}canRedo(){return this._undoRedoService.canRedo(this.uri)}changeDecorations(e,t=0){this._assertNotDisposed();try{return this._onDidChangeDecorations.beginDeferredEmit(),this._changeDecorations(t,e)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_changeDecorations(e,t){let i={addDecoration:(t,i)=>this._deltaDecorationsImpl(e,[],[{range:t,options:i}])[0],changeDecoration:(e,t)=>{this._changeDecorationImpl(e,t)},changeDecorationOptions:(e,t)=>{this._changeDecorationOptionsImpl(e,Ge(t))},removeDecoration:t=>{this._deltaDecorationsImpl(e,[t],[])},deltaDecorations:(t,i)=>0===t.length&&0===i.length?[]:this._deltaDecorationsImpl(e,t,i)},r=null;try{r=t(i)}catch(e){(0,n.dL)(e)}return i.addDecoration=Be,i.changeDecoration=Be,i.changeDecorationOptions=Be,i.removeDecoration=Be,i.deltaDecorations=Be,r}deltaDecorations(e,t,i=0){if(this._assertNotDisposed(),e||(e=[]),0===e.length&&0===t.length)return[];try{return this._onDidChangeDecorations.beginDeferredEmit(),this._deltaDecorationsImpl(i,e,t)}finally{this._onDidChangeDecorations.endDeferredEmit()}}_getTrackedRange(e){return this.getDecorationRange(e)}_setTrackedRange(e,t,i){const n=e?this._decorations[e]:null;if(!n)return t?this._deltaDecorationsImpl(0,[],[{range:t,options:qe[i]}])[0]:null;if(!t)return this._decorationsTree.delete(n),delete this._decorations[n.id],null;const r=this._validateRangeRelaxedNoAllocations(t),s=this._buffer.getOffsetAt(r.startLineNumber,r.startColumn),o=this._buffer.getOffsetAt(r.endLineNumber,r.endColumn);return this._decorationsTree.delete(n),n.reset(this.getVersionId(),s,o,r),n.setOptions(qe[i]),this._decorationsTree.insert(n),n.id}removeAllDecorationsWithOwnerId(e){if(this._isDisposed)return;const t=this._decorationsTree.collectNodesFromOwner(e);for(let e=0,i=t.length;e<i;e++){const i=t[e];this._decorationsTree.delete(i),delete this._decorations[i.id]}}getDecorationOptions(e){const t=this._decorations[e];return t?t.options:null}getDecorationRange(e){const t=this._decorations[e];if(!t)return null;const i=this.getVersionId();return t.cachedVersionId!==i&&this._decorationsTree.resolveNode(t,i),null===t.range&&(t.range=this._getRangeAt(t.cachedAbsoluteStart,t.cachedAbsoluteEnd)),t.range}getLineDecorations(e,t=0,i=!1){return e<1||e>this.getLineCount()?[]:this.getLinesDecorations(e,e,t,i)}getLinesDecorations(e,t,i=0,n=!1){let r=this.getLineCount(),s=Math.min(r,Math.max(1,e)),o=Math.min(r,Math.max(1,t)),a=this.getLineMaxColumn(o);return this._getDecorationsInRange(new d.e(s,1,o,a),i,n)}getDecorationsInRange(e,t=0,i=!1){let n=this.validateRange(e);return this._getDecorationsInRange(n,t,i)}getOverviewRulerDecorations(e=0,t=!1){const i=this.getVersionId(),n=this._decorationsTree.search(e,t,!0,i);return this._ensureNodesHaveRanges(n)}getAllDecorations(e=0,t=!1){const i=this.getVersionId(),n=this._decorationsTree.search(e,t,!1,i);return this._ensureNodesHaveRanges(n)}_getDecorationsInRange(e,t,i){const n=this._buffer.getOffsetAt(e.startLineNumber,e.startColumn),r=this._buffer.getOffsetAt(e.endLineNumber,e.endColumn),s=this.getVersionId(),o=this._decorationsTree.intervalSearch(n,r,t,i,s);return this._ensureNodesHaveRanges(o)}_ensureNodesHaveRanges(e){for(let t=0,i=e.length;t<i;t++){const i=e[t];null===i.range&&(i.range=this._getRangeAt(i.cachedAbsoluteStart,i.cachedAbsoluteEnd))}return e}_getRangeAt(e,t){return this._buffer.getRangeAt(e,t-e)}_changeDecorationImpl(e,t){const i=this._decorations[e];if(!i)return;const n=this._validateRangeRelaxedNoAllocations(t),r=this._buffer.getOffsetAt(n.startLineNumber,n.startColumn),s=this._buffer.getOffsetAt(n.endLineNumber,n.endColumn);this._decorationsTree.delete(i),i.reset(this.getVersionId(),r,s,n),this._decorationsTree.insert(i),this._onDidChangeDecorations.checkAffectedAndFire(i.options)}_changeDecorationOptionsImpl(e,t){const i=this._decorations[e];if(!i)return;const n=!(!i.options.overviewRuler||!i.options.overviewRuler.color),r=!(!t.overviewRuler||!t.overviewRuler.color);this._onDidChangeDecorations.checkAffectedAndFire(i.options),this._onDidChangeDecorations.checkAffectedAndFire(t),n!==r?(this._decorationsTree.delete(i),i.setOptions(t),this._decorationsTree.insert(i)):i.setOptions(t)}_deltaDecorationsImpl(e,t,i){const n=this.getVersionId(),r=t.length;let s=0;const o=i.length;let a=0,l=new Array(o);for(;s<r||a<o;){let c=null;if(s<r){do{c=this._decorations[t[s++]]}while(!c&&s<r);c&&(this._decorationsTree.delete(c),this._onDidChangeDecorations.checkAffectedAndFire(c.options))}if(a<o){if(!c){const e=++this._lastDecorationId,t=`${this._instanceId};${e}`;c=new M(t,0,0),this._decorations[t]=c}const t=i[a],r=this._validateRangeRelaxedNoAllocations(t.range),s=Ge(t.options),o=this._buffer.getOffsetAt(r.startLineNumber,r.startColumn),d=this._buffer.getOffsetAt(r.endLineNumber,r.endColumn);c.ownerId=e,c.reset(n,o,d,r),c.setOptions(s),this._onDidChangeDecorations.checkAffectedAndFire(s),this._decorationsTree.insert(c),l[a]=c.id,a++}else c&&delete this._decorations[c.id]}return l}setTokens(e){if(0===e.length)return;let t=[];for(let i=0,n=e.length;i<n;i++){const n=e[i];let r=0,s=0,o=!1;for(let e=0,t=n.tokens.length;e<t;e++){const t=n.startLineNumber+e;o?(this._tokens.setTokens(this._languageIdentifier.id,t-1,this._buffer.getLineLength(t),n.tokens[e],!1),s=t):this._tokens.setTokens(this._languageIdentifier.id,t-1,this._buffer.getLineLength(t),n.tokens[e],!0)&&(o=!0,r=t,s=t)}o&&t.push({fromLineNumber:r,toLineNumber:s})}t.length>0&&this._emitModelTokensChangedEvent({tokenizationSupportChanged:!1,semanticTokensApplied:!1,ranges:t})}setSemanticTokens(e,t){this._tokens2.set(e,t),this._emitModelTokensChangedEvent({tokenizationSupportChanged:!1,semanticTokensApplied:null!==e,ranges:[{fromLineNumber:1,toLineNumber:this.getLineCount()}]})}hasSemanticTokens(){return this._tokens2.isComplete()}setPartialSemanticTokens(e,t){if(this.hasSemanticTokens())return;const i=this._tokens2.setPartial(e,t);this._emitModelTokensChangedEvent({tokenizationSupportChanged:!1,semanticTokensApplied:!0,ranges:[{fromLineNumber:i.startLineNumber,toLineNumber:i.endLineNumber}]})}tokenizeViewport(e,t){e=Math.max(1,e),t=Math.min(this._buffer.getLineCount(),t),this._tokenization.tokenizeViewport(e,t)}clearTokens(){this._tokens.flush(),this._emitModelTokensChangedEvent({tokenizationSupportChanged:!0,semanticTokensApplied:!1,ranges:[{fromLineNumber:1,toLineNumber:this._buffer.getLineCount()}]})}_emitModelTokensChangedEvent(e){this._isDisposing||this._onDidChangeTokens.fire(e)}resetTokenization(){this._tokenization.reset()}forceTokenization(e){if(e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");this._tokenization.forceTokenization(e)}isCheapToTokenize(e){return this._tokenization.isCheapToTokenize(e)}tokenizeIfCheap(e){this.isCheapToTokenize(e)&&this.forceTokenization(e)}getLineTokens(e){if(e<1||e>this.getLineCount())throw new Error("Illegal value for lineNumber");return this._getLineTokens(e)}_getLineTokens(e){const t=this.getLineContent(e),i=this._tokens.getTokens(this._languageIdentifier.id,e-1,t);return this._tokens2.addSemanticTokens(e,i)}getLanguageIdentifier(){return this._languageIdentifier}getModeId(){return this._languageIdentifier.language}setMode(e){if(this._languageIdentifier.id===e.id)return;let t={oldLanguage:this._languageIdentifier.language,newLanguage:e.language};this._languageIdentifier=e,this._onDidChangeLanguage.fire(t),this._onDidChangeLanguageConfiguration.fire({})}getLanguageIdAtPosition(e,t){const i=this.validatePosition(new c.L(e,t)),n=this.getLineTokens(i.lineNumber);return n.getLanguageId(n.findTokenIndexAtOffset(i.column-1))}getWordAtPosition(e){this._assertNotDisposed();const t=this.validatePosition(e),i=this.getLineContent(t.lineNumber),n=this._getLineTokens(t.lineNumber),r=n.findTokenIndexAtOffset(t.column-1),[s,o]=He._findLanguageBoundaries(n,r),a=(0,Ee.t2)(t.column,Te.zu.getWordDefinition(n.getLanguageId(r)),i.substring(s,o),s);if(a&&a.startColumn<=e.column&&e.column<=a.endColumn)return a;if(r>0&&s===t.column-1){const[s,o]=He._findLanguageBoundaries(n,r-1),a=(0,Ee.t2)(t.column,Te.zu.getWordDefinition(n.getLanguageId(r-1)),i.substring(s,o),s);if(a&&a.startColumn<=e.column&&e.column<=a.endColumn)return a}return null}static _findLanguageBoundaries(e,t){const i=e.getLanguageId(t);let n=0;for(let r=t;r>=0&&e.getLanguageId(r)===i;r--)n=e.getStartOffset(r);let r=e.getLineContent().length;for(let n=t,s=e.getCount();n<s&&e.getLanguageId(n)===i;n++)r=e.getEndOffset(n);return[n,r]}getWordUntilPosition(e){const t=this.getWordAtPosition(e);return t?{word:t.word.substr(0,e.column-t.startColumn),startColumn:t.startColumn,endColumn:e.column}:{word:"",startColumn:e.column,endColumn:e.column}}findMatchingBracketUp(e,t){let i=e.toLowerCase(),n=this.validatePosition(t),r=this._getLineTokens(n.lineNumber),s=r.getLanguageId(r.findTokenIndexAtOffset(n.column-1)),o=Te.zu.getBracketsSupport(s);if(!o)return null;let a=o.textIsBracket[i];return a?Ye(this._findMatchingBracketUp(a,n,null)):null}matchBracket(e){return this._matchBracket(this.validatePosition(e))}_matchBracket(e){const t=e.lineNumber,i=this._getLineTokens(t),n=i.getCount(),r=this._buffer.getLineContent(t),s=i.findTokenIndexAtOffset(e.column-1);if(s<0)return null;const o=Te.zu.getBracketsSupport(i.getLanguageId(s));if(o&&!(0,Ie.Bu)(i.getStandardTokenType(s))){let n=Math.max(0,e.column-1-o.maxBracketLength);for(let e=s-1;e>=0;e--){const t=i.getEndOffset(e);if(t<=n)break;(0,Ie.Bu)(i.getStandardTokenType(e))&&(n=t)}const a=Math.min(r.length,e.column-1+o.maxBracketLength);let l=null;for(;;){const i=Oe.Vr.findNextBracketInRange(o.forwardRegex,t,r,n,a);if(!i)break;if(i.startColumn<=e.column&&e.column<=i.endColumn){const e=r.substring(i.startColumn-1,i.endColumn-1).toLowerCase(),t=this._matchFoundBracket(i,o.textIsBracket[e],o.textIsOpenBracket[e],null);if(t){if(t instanceof We)return null;l=t}}n=i.endColumn-1}if(l)return l}if(s>0&&i.getStartOffset(s)===e.column-1){const o=s-1,a=Te.zu.getBracketsSupport(i.getLanguageId(o));if(a&&!(0,Ie.Bu)(i.getStandardTokenType(o))){const s=Math.max(0,e.column-1-a.maxBracketLength);let l=Math.min(r.length,e.column-1+a.maxBracketLength);for(let e=o+1;e<n;e++){const t=i.getStartOffset(e);if(t>=l)break;(0,Ie.Bu)(i.getStandardTokenType(e))&&(l=t)}const c=Oe.Vr.findPrevBracketInRange(a.reversedRegex,t,r,s,l);if(c&&c.startColumn<=e.column&&e.column<=c.endColumn){const e=r.substring(c.startColumn-1,c.endColumn-1).toLowerCase(),t=this._matchFoundBracket(c,a.textIsBracket[e],a.textIsOpenBracket[e],null);if(t)return t instanceof We?null:t}}}return null}_matchFoundBracket(e,t,i,n){if(!t)return null;const r=i?this._findMatchingBracketDown(t,e.getEndPosition(),n):this._findMatchingBracketUp(t,e.getStartPosition(),n);return r?r instanceof We?r:[e,r]:null}_findMatchingBracketUp(e,t,i){const n=e.languageIdentifier.id,r=e.reversedRegex;let s=-1,o=0;const a=(t,n,a,l)=>{for(;;){if(i&&++o%100==0&&!i())return We.INSTANCE;const c=Oe.Vr.findPrevBracketInRange(r,t,n,a,l);if(!c)break;const d=n.substring(c.startColumn-1,c.endColumn-1).toLowerCase();if(e.isOpen(d)?s++:e.isClose(d)&&s--,0===s)return c;l=c.startColumn-1}return null};for(let e=t.lineNumber;e>=1;e--){const i=this._getLineTokens(e),r=i.getCount(),s=this._buffer.getLineContent(e);let o=r-1,l=s.length,c=s.length;e===t.lineNumber&&(o=i.findTokenIndexAtOffset(t.column-1),l=t.column-1,c=t.column-1);let d=!0;for(;o>=0;o--){const t=i.getLanguageId(o)===n&&!(0,Ie.Bu)(i.getStandardTokenType(o));if(t)d?l=i.getStartOffset(o):(l=i.getStartOffset(o),c=i.getEndOffset(o));else if(d&&l!==c){const t=a(e,s,l,c);if(t)return t}d=t}if(d&&l!==c){const t=a(e,s,l,c);if(t)return t}}return null}_findMatchingBracketDown(e,t,i){const n=e.languageIdentifier.id,r=e.forwardRegex;let s=1,o=0;const a=(t,n,a,l)=>{for(;;){if(i&&++o%100==0&&!i())return We.INSTANCE;const c=Oe.Vr.findNextBracketInRange(r,t,n,a,l);if(!c)break;const d=n.substring(c.startColumn-1,c.endColumn-1).toLowerCase();if(e.isOpen(d)?s++:e.isClose(d)&&s--,0===s)return c;a=c.endColumn-1}return null},l=this.getLineCount();for(let e=t.lineNumber;e<=l;e++){const i=this._getLineTokens(e),r=i.getCount(),s=this._buffer.getLineContent(e);let o=0,l=0,c=0;e===t.lineNumber&&(o=i.findTokenIndexAtOffset(t.column-1),l=t.column-1,c=t.column-1);let d=!0;for(;o<r;o++){const t=i.getLanguageId(o)===n&&!(0,Ie.Bu)(i.getStandardTokenType(o));if(t)d||(l=i.getStartOffset(o)),c=i.getEndOffset(o);else if(d&&l!==c){const t=a(e,s,l,c);if(t)return t}d=t}if(d&&l!==c){const t=a(e,s,l,c);if(t)return t}}return null}findPrevBracket(e){const t=this.validatePosition(e);let i=-1,n=null;for(let e=t.lineNumber;e>=1;e--){const r=this._getLineTokens(e),s=r.getCount(),o=this._buffer.getLineContent(e);let a=s-1,l=o.length,c=o.length;if(e===t.lineNumber){a=r.findTokenIndexAtOffset(t.column-1),l=t.column-1,c=t.column-1;const e=r.getLanguageId(a);i!==e&&(i=e,n=Te.zu.getBracketsSupport(i))}let d=!0;for(;a>=0;a--){const t=r.getLanguageId(a);if(i!==t){if(n&&d&&l!==c){const t=Oe.Vr.findPrevBracketInRange(n.reversedRegex,e,o,l,c);if(t)return this._toFoundBracket(n,t);d=!1}i=t,n=Te.zu.getBracketsSupport(i)}const s=!!n&&!(0,Ie.Bu)(r.getStandardTokenType(a));if(s)d?l=r.getStartOffset(a):(l=r.getStartOffset(a),c=r.getEndOffset(a));else if(n&&d&&l!==c){const t=Oe.Vr.findPrevBracketInRange(n.reversedRegex,e,o,l,c);if(t)return this._toFoundBracket(n,t)}d=s}if(n&&d&&l!==c){const t=Oe.Vr.findPrevBracketInRange(n.reversedRegex,e,o,l,c);if(t)return this._toFoundBracket(n,t)}}return null}findNextBracket(e){const t=this.validatePosition(e),i=this.getLineCount();let n=-1,r=null;for(let e=t.lineNumber;e<=i;e++){const i=this._getLineTokens(e),s=i.getCount(),o=this._buffer.getLineContent(e);let a=0,l=0,c=0;if(e===t.lineNumber){a=i.findTokenIndexAtOffset(t.column-1),l=t.column-1,c=t.column-1;const e=i.getLanguageId(a);n!==e&&(n=e,r=Te.zu.getBracketsSupport(n))}let d=!0;for(;a<s;a++){const t=i.getLanguageId(a);if(n!==t){if(r&&d&&l!==c){const t=Oe.Vr.findNextBracketInRange(r.forwardRegex,e,o,l,c);if(t)return this._toFoundBracket(r,t);d=!1}n=t,r=Te.zu.getBracketsSupport(n)}const s=!!r&&!(0,Ie.Bu)(i.getStandardTokenType(a));if(s)d||(l=i.getStartOffset(a)),c=i.getEndOffset(a);else if(r&&d&&l!==c){const t=Oe.Vr.findNextBracketInRange(r.forwardRegex,e,o,l,c);if(t)return this._toFoundBracket(r,t)}d=s}if(r&&d&&l!==c){const t=Oe.Vr.findNextBracketInRange(r.forwardRegex,e,o,l,c);if(t)return this._toFoundBracket(r,t)}}return null}findEnclosingBrackets(e,t){let i;if(void 0===t)i=null;else{const e=Date.now();i=()=>Date.now()-e<=t}const n=this.validatePosition(e),r=this.getLineCount(),s=new Map;let o=[];const a=(e,t)=>{if(!s.has(e)){let i=[];for(let e=0,n=t?t.brackets.length:0;e<n;e++)i[e]=0;s.set(e,i)}o=s.get(e)};let l=0;const c=(e,t,n,r,s)=>{for(;;){if(i&&++l%100==0&&!i())return We.INSTANCE;const a=Oe.Vr.findNextBracketInRange(e.forwardRegex,t,n,r,s);if(!a)break;const c=n.substring(a.startColumn-1,a.endColumn-1).toLowerCase(),d=e.textIsBracket[c];if(d&&(d.isOpen(c)?o[d.index]++:d.isClose(c)&&o[d.index]--,-1===o[d.index]))return this._matchFoundBracket(a,d,!1,i);r=a.endColumn-1}return null};let d=-1,h=null;for(let e=n.lineNumber;e<=r;e++){const t=this._getLineTokens(e),i=t.getCount(),r=this._buffer.getLineContent(e);let s=0,o=0,l=0;if(e===n.lineNumber){s=t.findTokenIndexAtOffset(n.column-1),o=n.column-1,l=n.column-1;const e=t.getLanguageId(s);d!==e&&(d=e,h=Te.zu.getBracketsSupport(d),a(d,h))}let u=!0;for(;s<i;s++){const i=t.getLanguageId(s);if(d!==i){if(h&&u&&o!==l){const t=c(h,e,r,o,l);if(t)return Ye(t);u=!1}d=i,h=Te.zu.getBracketsSupport(d),a(d,h)}const n=!!h&&!(0,Ie.Bu)(t.getStandardTokenType(s));if(n)u||(o=t.getStartOffset(s)),l=t.getEndOffset(s);else if(h&&u&&o!==l){const t=c(h,e,r,o,l);if(t)return Ye(t)}u=n}if(h&&u&&o!==l){const t=c(h,e,r,o,l);if(t)return Ye(t)}}return null}_toFoundBracket(e,t){if(!t)return null;let i=this.getValueInRange(t);i=i.toLowerCase();let n=e.textIsBracket[i];return n?{range:t,open:n.open,close:n.close,isOpen:e.textIsOpenBracket[i]}:null}static computeIndentLevel(e,t){let i=0,n=0,r=e.length;for(;n<r;){let r=e.charCodeAt(n);if(32===r)i++;else{if(9!==r)break;i=i-i%t+t}n++}return n===r?-1:i}_computeIndentLevel(e){return He.computeIndentLevel(this._buffer.getLineContent(e+1),this._options.tabSize)}getActiveIndentGuide(e,t,i){this._assertNotDisposed();const n=this.getLineCount();if(e<1||e>n)throw new Error("Illegal value for lineNumber");const r=Te.zu.getFoldingRules(this._languageIdentifier.id),s=Boolean(r&&r.offSide);let o=-2,a=-1,l=-2,c=-1;const d=e=>{if(-1!==o&&(-2===o||o>e-1)){o=-1,a=-1;for(let t=e-2;t>=0;t--){let e=this._computeIndentLevel(t);if(e>=0){o=t,a=e;break}}}if(-2===l){l=-1,c=-1;for(let t=e;t<n;t++){let e=this._computeIndentLevel(t);if(e>=0){l=t,c=e;break}}}};let h=-2,u=-1,g=-2,f=-1;const p=e=>{if(-2===h){h=-1,u=-1;for(let t=e-2;t>=0;t--){let e=this._computeIndentLevel(t);if(e>=0){h=t,u=e;break}}}if(-1!==g&&(-2===g||g<e-1)){g=-1,f=-1;for(let t=e;t<n;t++){let e=this._computeIndentLevel(t);if(e>=0){g=t,f=e;break}}}};let m=0,_=!0,b=0,v=!0,y=0,w=0;for(let r=0;_||v;r++){const o=e-r,g=e+r;r>1&&(o<1||o<t)&&(_=!1),r>1&&(g>n||g>i)&&(v=!1),r>5e4&&(_=!1,v=!1);let C=-1;if(_){const e=this._computeIndentLevel(o-1);e>=0?(l=o-1,c=e,C=Math.ceil(e/this._options.indentSize)):(d(o),C=this._getIndentLevelForWhitespaceLine(s,a,c))}let S=-1;if(v){const e=this._computeIndentLevel(g-1);e>=0?(h=g-1,u=e,S=Math.ceil(e/this._options.indentSize)):(p(g),S=this._getIndentLevelForWhitespaceLine(s,u,f))}if(0!==r){if(1===r){if(g<=n&&S>=0&&w+1===S){_=!1,m=g,b=g,y=S;continue}if(o>=1&&C>=0&&C-1===w){v=!1,m=o,b=o,y=C;continue}if(m=e,b=e,y=w,0===y)return{startLineNumber:m,endLineNumber:b,indent:y}}_&&(C>=y?m=o:_=!1),v&&(S>=y?b=g:v=!1)}else w=C}return{startLineNumber:m,endLineNumber:b,indent:y}}getLinesIndentGuides(e,t){this._assertNotDisposed();const i=this.getLineCount();if(e<1||e>i)throw new Error("Illegal value for startLineNumber");if(t<1||t>i)throw new Error("Illegal value for endLineNumber");const n=Te.zu.getFoldingRules(this._languageIdentifier.id),r=Boolean(n&&n.offSide);let s=new Array(t-e+1),o=-2,a=-1,l=-2,c=-1;for(let n=e;n<=t;n++){let t=n-e;const d=this._computeIndentLevel(n-1);if(d>=0)o=n-1,a=d,s[t]=Math.ceil(d/this._options.indentSize);else{if(-2===o){o=-1,a=-1;for(let e=n-2;e>=0;e--){let t=this._computeIndentLevel(e);if(t>=0){o=e,a=t;break}}}if(-1!==l&&(-2===l||l<n-1)){l=-1,c=-1;for(let e=n;e<i;e++){let t=this._computeIndentLevel(e);if(t>=0){l=e,c=t;break}}}s[t]=this._getIndentLevelForWhitespaceLine(r,a,c)}}return s}_getIndentLevelForWhitespaceLine(e,t,i){return-1===t||-1===i?0:t<i?1+Math.floor(t/this._options.indentSize):t===i||e?Math.ceil(i/this._options.indentSize):1+Math.floor(i/this._options.indentSize)}}He.MODEL_SYNC_LIMIT=52428800,He.LARGE_FILE_SIZE_THRESHOLD=20971520,He.LARGE_FILE_LINE_COUNT_THRESHOLD=3e5,He.DEFAULT_CREATION_OPTIONS={isForSimpleWidget:!1,tabSize:l.DB.tabSize,indentSize:l.DB.indentSize,insertSpaces:l.DB.insertSpaces,detectIndentation:!1,defaultEOL:1,trimAutoWhitespace:l.DB.trimAutoWhitespace,largeFileOptimizations:l.DB.largeFileOptimizations};class je{constructor(){this._decorationsTree0=new N,this._decorationsTree1=new N}intervalSearch(e,t,i,n,r){const s=this._decorationsTree0.intervalSearch(e,t,i,n,r),o=this._decorationsTree1.intervalSearch(e,t,i,n,r);return s.concat(o)}search(e,t,i,n){if(i)return this._decorationsTree1.search(e,t,n);{const i=this._decorationsTree0.search(e,t,n),r=this._decorationsTree1.search(e,t,n);return i.concat(r)}}collectNodesFromOwner(e){const t=this._decorationsTree0.collectNodesFromOwner(e),i=this._decorationsTree1.collectNodesFromOwner(e);return t.concat(i)}collectNodesPostOrder(){const e=this._decorationsTree0.collectNodesPostOrder(),t=this._decorationsTree1.collectNodesPostOrder();return e.concat(t)}insert(e){S(e)?this._decorationsTree1.insert(e):this._decorationsTree0.insert(e)}delete(e){S(e)?this._decorationsTree1.delete(e):this._decorationsTree0.delete(e)}resolveNode(e,t){S(e)?this._decorationsTree1.resolveNode(e,t):this._decorationsTree0.resolveNode(e,t)}acceptReplace(e,t,i,n){this._decorationsTree0.acceptReplace(e,t,i,n),this._decorationsTree1.acceptReplace(e,t,i,n)}}function Ve(e){return e.replace(/[^a-z0-9\-_]/gi," ")}class ze{constructor(e){this.color=e.color||"",this.darkColor=e.darkColor||""}}class Ue extends ze{constructor(e){super(e),this._resolvedColor=null,this.position="number"==typeof e.position?e.position:u.sh.Center}getColor(e){return this._resolvedColor||("light"!==e.type&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=null}_resolveColor(e,t){if("string"==typeof e)return e;let i=e?t.getColor(e.id):null;return i?i.toString():""}}class $e extends ze{constructor(e){super(e),this.position=e.position}getColor(e){return this._resolvedColor||("light"!==e.type&&this.darkColor?this._resolvedColor=this._resolveColor(this.darkColor,e):this._resolvedColor=this._resolveColor(this.color,e)),this._resolvedColor}invalidateCachedColor(){this._resolvedColor=void 0}_resolveColor(e,t){return"string"==typeof e?Ae.Il.fromHex(e):t.getColor(e.id)}}class Ke{constructor(e){this.stickiness=e.stickiness||0,this.zIndex=e.zIndex||0,this.className=e.className?Ve(e.className):null,this.hoverMessage=e.hoverMessage||null,this.glyphMarginHoverMessage=e.glyphMarginHoverMessage||null,this.isWholeLine=e.isWholeLine||!1,this.showIfCollapsed=e.showIfCollapsed||!1,this.collapseOnReplaceEdit=e.collapseOnReplaceEdit||!1,this.overviewRuler=e.overviewRuler?new Ue(e.overviewRuler):null,this.minimap=e.minimap?new $e(e.minimap):null,this.glyphMarginClassName=e.glyphMarginClassName?Ve(e.glyphMarginClassName):null,this.linesDecorationsClassName=e.linesDecorationsClassName?Ve(e.linesDecorationsClassName):null,this.firstLineDecorationClassName=e.firstLineDecorationClassName?Ve(e.firstLineDecorationClassName):null,this.marginClassName=e.marginClassName?Ve(e.marginClassName):null,this.inlineClassName=e.inlineClassName?Ve(e.inlineClassName):null,this.inlineClassNameAffectsLetterSpacing=e.inlineClassNameAffectsLetterSpacing||!1,this.beforeContentClassName=e.beforeContentClassName?Ve(e.beforeContentClassName):null,this.afterContentClassName=e.afterContentClassName?Ve(e.afterContentClassName):null}static register(e){return new Ke(e)}static createDynamic(e){return new Ke(e)}}Ke.EMPTY=Ke.register({});const qe=[Ke.register({stickiness:0}),Ke.register({stickiness:1}),Ke.register({stickiness:2}),Ke.register({stickiness:3})];function Ge(e){return e instanceof Ke?e:Ke.createDynamic(e)}class Ze extends s.JT{constructor(){super(),this._actual=this._register(new r.Q5),this.event=this._actual.event,this._deferredCnt=0,this._shouldFire=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(){if(this._deferredCnt--,0===this._deferredCnt&&this._shouldFire){const e={affectsMinimap:this._affectsMinimap,affectsOverviewRuler:this._affectsOverviewRuler};this._shouldFire=!1,this._affectsMinimap=!1,this._affectsOverviewRuler=!1,this._actual.fire(e)}}checkAffectedAndFire(e){this._affectsMinimap||(this._affectsMinimap=!(!e.minimap||!e.minimap.position)),this._affectsOverviewRuler||(this._affectsOverviewRuler=!(!e.overviewRuler||!e.overviewRuler.color)),this._shouldFire=!0}fire(){this._affectsMinimap=!0,this._affectsOverviewRuler=!0,this._shouldFire=!0}}class Je extends s.JT{constructor(){super(),this._fastEmitter=this._register(new r.Q5),this.fastEvent=this._fastEmitter.event,this._slowEmitter=this._register(new r.Q5),this.slowEvent=this._slowEmitter.event,this._deferredCnt=0,this._deferredEvent=null}beginDeferredEmit(){this._deferredCnt++}endDeferredEmit(e=null){if(this._deferredCnt--,0===this._deferredCnt&&null!==this._deferredEvent){this._deferredEvent.rawContentChangedEvent.resultingSelection=e;const t=this._deferredEvent;this._deferredEvent=null,this._fastEmitter.fire(t),this._slowEmitter.fire(t)}}fire(e){this._deferredCnt>0?this._deferredEvent?this._deferredEvent=this._deferredEvent.merge(e):this._deferredEvent=e:(this._fastEmitter.fire(e),this._slowEmitter.fire(e))}}},77277:(e,t,i)=>{"use strict";i.d(t,{bc:()=>l,iE:()=>d,pM:()=>u,cM:()=>g,sz:()=>f});var n=i(97295),r=i(59410),s=i(50187),o=i(24314),a=i(84973);class l{constructor(e,t,i,n){this.searchString=e,this.isRegex=t,this.matchCase=i,this.wordSeparators=n}parseSearchRequest(){if(""===this.searchString)return null;let e;e=this.isRegex?function(e){if(!e||0===e.length)return!1;for(let t=0,i=e.length;t<i;t++)if(92===e.charCodeAt(t)){if(t++,t>=i)break;const n=e.charCodeAt(t);if(110===n||114===n||87===n||119===n)return!0}return!1}(this.searchString):this.searchString.indexOf("\n")>=0;let t=null;try{t=n.GF(this.searchString,this.isRegex,{matchCase:this.matchCase,wholeWord:!1,multiline:e,global:!0,unicode:!0})}catch(e){return null}if(!t)return null;let i=!this.isRegex&&!e;return i&&this.searchString.toLowerCase()!==this.searchString.toUpperCase()&&(i=this.matchCase),new c(t,this.wordSeparators?(0,r.u)(this.wordSeparators):null,i?this.searchString:null)}}class c{constructor(e,t,i){this.regex=e,this.wordSeparators=t,this.simpleSearch=i}}function d(e,t,i){if(!i)return new a.tk(e,null);let n=[];for(let e=0,i=t.length;e<i;e++)n[e]=t[e];return new a.tk(e,n)}class h{constructor(e){let t=[],i=0;for(let n=0,r=e.length;n<r;n++)10===e.charCodeAt(n)&&(t[i++]=n);this._lineFeedsOffsets=t}findLineFeedCountBeforeOffset(e){const t=this._lineFeedsOffsets;let i=0,n=t.length-1;if(-1===n)return 0;if(e<=t[0])return 0;for(;i<n;){const r=i+((n-i)/2>>0);t[r]>=e?n=r-1:t[r+1]>=e?(i=r,n=r):i=r+1}return i+1}}class u{static findMatches(e,t,i,n,r){const s=t.parseSearchRequest();return s?s.regex.multiline?this._doFindMatchesMultiline(e,i,new f(s.wordSeparators,s.regex),n,r):this._doFindMatchesLineByLine(e,i,s,n,r):[]}static _getMultilineMatchRange(e,t,i,n,r,s){let a,l,c=0;if(n?(c=n.findLineFeedCountBeforeOffset(r),a=t+r+c):a=t+r,n){let e=n.findLineFeedCountBeforeOffset(r+s.length)-c;l=a+s.length+e}else l=a+s.length;const d=e.getPositionAt(a),h=e.getPositionAt(l);return new o.e(d.lineNumber,d.column,h.lineNumber,h.column)}static _doFindMatchesMultiline(e,t,i,n,r){const s=e.getOffsetAt(t.getStartPosition()),o=e.getValueInRange(t,1),a="\r\n"===e.getEOL()?new h(o):null,l=[];let c,u=0;for(i.reset(0);c=i.next(o);)if(l[u++]=d(this._getMultilineMatchRange(e,s,o,a,c.index,c[0]),c,n),u>=r)return l;return l}static _doFindMatchesLineByLine(e,t,i,n,r){const s=[];let o=0;if(t.startLineNumber===t.endLineNumber){const a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1,t.endColumn-1);return o=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,o,s,n,r),s}const a=e.getLineContent(t.startLineNumber).substring(t.startColumn-1);o=this._findMatchesInLine(i,a,t.startLineNumber,t.startColumn-1,o,s,n,r);for(let a=t.startLineNumber+1;a<t.endLineNumber&&o<r;a++)o=this._findMatchesInLine(i,e.getLineContent(a),a,0,o,s,n,r);if(o<r){const a=e.getLineContent(t.endLineNumber).substring(0,t.endColumn-1);o=this._findMatchesInLine(i,a,t.endLineNumber,0,o,s,n,r)}return s}static _findMatchesInLine(e,t,i,n,r,s,l,c){const h=e.wordSeparators;if(!l&&e.simpleSearch){const l=e.simpleSearch,d=l.length,u=t.length;let f=-d;for(;-1!==(f=t.indexOf(l,f+d));)if((!h||g(h,t,u,f,d))&&(s[r++]=new a.tk(new o.e(i,f+1+n,i,f+1+d+n),null),r>=c))return r;return r}const u=new f(e.wordSeparators,e.regex);let p;u.reset(0);do{if(p=u.next(t),p&&(s[r++]=d(new o.e(i,p.index+1+n,i,p.index+1+p[0].length+n),p,l),r>=c))return r}while(p);return r}static findNextMatch(e,t,i,n){const r=t.parseSearchRequest();if(!r)return null;const s=new f(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindNextMatchMultiline(e,i,s,n):this._doFindNextMatchLineByLine(e,i,s,n)}static _doFindNextMatchMultiline(e,t,i,n){const r=new s.L(t.lineNumber,1),a=e.getOffsetAt(r),l=e.getLineCount(),c=e.getValueInRange(new o.e(r.lineNumber,r.column,l,e.getLineMaxColumn(l)),1),u="\r\n"===e.getEOL()?new h(c):null;i.reset(t.column-1);let g=i.next(c);return g?d(this._getMultilineMatchRange(e,a,c,u,g.index,g[0]),g,n):1!==t.lineNumber||1!==t.column?this._doFindNextMatchMultiline(e,new s.L(1,1),i,n):null}static _doFindNextMatchLineByLine(e,t,i,n){const r=e.getLineCount(),s=t.lineNumber,o=e.getLineContent(s),a=this._findFirstMatchInLine(i,o,s,t.column,n);if(a)return a;for(let t=1;t<=r;t++){const o=(s+t-1)%r,a=e.getLineContent(o+1),l=this._findFirstMatchInLine(i,a,o+1,1,n);if(l)return l}return null}static _findFirstMatchInLine(e,t,i,n,r){e.reset(n-1);const s=e.next(t);return s?d(new o.e(i,s.index+1,i,s.index+1+s[0].length),s,r):null}static findPreviousMatch(e,t,i,n){const r=t.parseSearchRequest();if(!r)return null;const s=new f(r.wordSeparators,r.regex);return r.regex.multiline?this._doFindPreviousMatchMultiline(e,i,s,n):this._doFindPreviousMatchLineByLine(e,i,s,n)}static _doFindPreviousMatchMultiline(e,t,i,n){const r=this._doFindMatchesMultiline(e,new o.e(1,1,t.lineNumber,t.column),i,n,9990);if(r.length>0)return r[r.length-1];const a=e.getLineCount();return t.lineNumber!==a||t.column!==e.getLineMaxColumn(a)?this._doFindPreviousMatchMultiline(e,new s.L(a,e.getLineMaxColumn(a)),i,n):null}static _doFindPreviousMatchLineByLine(e,t,i,n){const r=e.getLineCount(),s=t.lineNumber,o=e.getLineContent(s).substring(0,t.column-1),a=this._findLastMatchInLine(i,o,s,n);if(a)return a;for(let t=1;t<=r;t++){const o=(r+s-t-1)%r,a=e.getLineContent(o+1),l=this._findLastMatchInLine(i,a,o+1,n);if(l)return l}return null}static _findLastMatchInLine(e,t,i,n){let r,s=null;for(e.reset(0);r=e.next(t);)s=d(new o.e(i,r.index+1,i,r.index+1+r[0].length),r,n);return s}}function g(e,t,i,n,r){return function(e,t,i,n,r){if(0===n)return!0;const s=t.charCodeAt(n-1);if(0!==e.get(s))return!0;if(13===s||10===s)return!0;if(r>0){const i=t.charCodeAt(n);if(0!==e.get(i))return!0}return!1}(e,t,0,n,r)&&function(e,t,i,n,r){if(n+r===i)return!0;const s=t.charCodeAt(n+r);if(0!==e.get(s))return!0;if(13===s||10===s)return!0;if(r>0){const i=t.charCodeAt(n+r-1);if(0!==e.get(i))return!0}return!1}(e,t,i,n,r)}class f{constructor(e,t){this._wordSeparators=e,this._searchRegex=t,this._prevMatchStartIndex=-1,this._prevMatchLength=0}reset(e){this._searchRegex.lastIndex=e,this._prevMatchStartIndex=-1,this._prevMatchLength=0}next(e){const t=e.length;let i;do{if(this._prevMatchStartIndex+this._prevMatchLength===t)return null;if(i=this._searchRegex.exec(e),!i)return null;const r=i.index,s=i[0].length;if(r===this._prevMatchStartIndex&&s===this._prevMatchLength){if(0===s){n.ZH(e,t,this._searchRegex.lastIndex)>65535?this._searchRegex.lastIndex+=2:this._searchRegex.lastIndex+=1;continue}return null}if(this._prevMatchStartIndex=r,this._prevMatchLength=s,!this._wordSeparators||g(this._wordSeparators,e,t,r,s))return i}while(i);return null}}},58409:(e,t,i)=>{"use strict";i.d(t,{QZ:()=>l,DA:()=>h,OU:()=>u,Wz:()=>f,cx:()=>_,Rl:()=>b});var n=i(9488),r=i(78411),s=i(50187),o=i(24314),a=i(43775);function l(e){let t=0,i=0,n=0,r=0;for(let s=0,o=e.length;s<o;s++){const a=e.charCodeAt(s);13===a?(0===t&&(i=s),t++,s+1<o&&10===e.charCodeAt(s+1)?(r|=2,s++):r|=3,n=s+1):10===a&&(r|=1,0===t&&(i=s),t++,n=s+1)}return 0===t&&(i=e.length),[t,i,e.length-n,r]}function c(e){return(16384|e<<0|2<<23)>>>0}const d=new Uint32Array(0).buffer;class h{constructor(){this.tokens=[]}add(e,t){if(this.tokens.length>0){const i=this.tokens[this.tokens.length-1];if(i.startLineNumber+i.tokens.length-1+1===e)return void i.tokens.push(t)}this.tokens.push(new p(e,[t]))}}class u{constructor(e){this._tokens=e,this._tokenCount=e.length/4}toString(e){let t=[];for(let i=0;i<this._tokenCount;i++)t.push(`(${this._getDeltaLine(i)+e},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);return`[${t.join(",")}]`}getMaxDeltaLine(){const e=this._getTokenCount();return 0===e?-1:this._getDeltaLine(e-1)}getRange(){const e=this._getTokenCount();if(0===e)return null;const t=this._getStartCharacter(0),i=this._getDeltaLine(e-1),n=this._getEndCharacter(e-1);return new o.e(0,t+1,i,n+1)}_getTokenCount(){return this._tokenCount}_getDeltaLine(e){return this._tokens[4*e]}_getStartCharacter(e){return this._tokens[4*e+1]}_getEndCharacter(e){return this._tokens[4*e+2]}isEmpty(){return 0===this._getTokenCount()}getLineTokens(e){let t=0,i=this._getTokenCount()-1;for(;t<i;){const n=t+Math.floor((i-t)/2),r=this._getDeltaLine(n);if(r<e)t=n+1;else{if(!(r>e)){let r=n;for(;r>t&&this._getDeltaLine(r-1)===e;)r--;let s=n;for(;s<i&&this._getDeltaLine(s+1)===e;)s++;return new g(this._tokens.subarray(4*r,4*s+4))}i=n-1}}return this._getDeltaLine(t)===e?new g(this._tokens.subarray(4*t,4*t+4)):null}clear(){this._tokenCount=0}removeTokens(e,t,i,n){const r=this._tokens,s=this._tokenCount;let o=0,a=!1,l=0;for(let c=0;c<s;c++){const s=4*c,d=r[s],h=r[s+1],u=r[s+2],g=r[s+3];if((d>e||d===e&&u>=t)&&(d<i||d===i&&h<=n))a=!0;else{if(0===o&&(l=d),a){const e=4*o;r[e]=d-l,r[e+1]=h,r[e+2]=u,r[e+3]=g}o++}}return this._tokenCount=o,l}split(e,t,i,n){const r=this._tokens,s=this._tokenCount;let o=[],a=[],l=o,c=0,d=0;for(let o=0;o<s;o++){const s=4*o,h=r[s],u=r[s+1],g=r[s+2],f=r[s+3];if(h>e||h===e&&g>=t){if(h<i||h===i&&u<=n)continue;l!==a&&(l=a,c=0,d=h)}l[c++]=h-d,l[c++]=u,l[c++]=g,l[c++]=f}return[new u(new Uint32Array(o)),new u(new Uint32Array(a)),d]}acceptDeleteRange(e,t,i,n,r){const s=this._tokens,o=this._tokenCount,a=n-t;let l=0,c=!1;for(let d=0;d<o;d++){const h=4*d;let u=s[h],g=s[h+1],f=s[h+2];const p=s[h+3];if(u<t||u===t&&f<=i){l++;continue}if(u===t&&g<i)u===n&&f>r?f-=r-i:f=i;else if(u===t&&g===i){if(!(u===n&&f>r)){c=!0;continue}f-=r-i}else if(u<n||u===n&&g<r){if(!(u===n&&f>r)){c=!0;continue}u===t?(g=i,f=g+(f-r)):(g=0,f=g+(f-r))}else if(u>n){if(0===a&&!c){l=o;break}u-=a}else{if(!(u===n&&g>=r))throw new Error("Not possible!");e&&0===u&&(g+=e,f+=e),u-=a,g-=r-i,f-=r-i}const m=4*l;s[m]=u,s[m+1]=g,s[m+2]=f,s[m+3]=p,l++}this._tokenCount=l}acceptInsertText(e,t,i,n,r,s){const o=0===i&&1===n&&(s>=48&&s<=57||s>=65&&s<=90||s>=97&&s<=122),a=this._tokens,l=this._tokenCount;for(let s=0;s<l;s++){const l=4*s;let c=a[l],d=a[l+1],h=a[l+2];if(!(c<e||c===e&&h<t)){if(c===e&&h===t){if(!o)continue;h+=1}else if(c===e&&d<t&&t<h)0===i?h+=n:h=t;else{if(c===e&&d===t&&o)continue;if(c===e)if(c+=i,0===i)d+=n,h+=n;else{const e=h-d;d=r+(d-t),h=d+e}else c+=i}a[l]=c,a[l+1]=d,a[l+2]=h}}}}class g{constructor(e){this._tokens=e}getCount(){return this._tokens.length/4}getStartCharacter(e){return this._tokens[4*e+1]}getEndCharacter(e){return this._tokens[4*e+2]}getMetadata(e){return this._tokens[4*e+3]}}class f{constructor(e,t){this.startLineNumber=e,this.tokens=t,this.endLineNumber=this.startLineNumber+this.tokens.getMaxDeltaLine()}toString(){return this.tokens.toString(this.startLineNumber)}_updateEndLineNumber(){this.endLineNumber=this.startLineNumber+this.tokens.getMaxDeltaLine()}isEmpty(){return this.tokens.isEmpty()}getLineTokens(e){return this.startLineNumber<=e&&e<=this.endLineNumber?this.tokens.getLineTokens(e-this.startLineNumber):null}getRange(){const e=this.tokens.getRange();return e?new o.e(this.startLineNumber+e.startLineNumber,e.startColumn,this.startLineNumber+e.endLineNumber,e.endColumn):e}removeTokens(e){const t=e.startLineNumber-this.startLineNumber,i=e.endLineNumber-this.startLineNumber;this.startLineNumber+=this.tokens.removeTokens(t,e.startColumn-1,i,e.endColumn-1),this._updateEndLineNumber()}split(e){const t=e.startLineNumber-this.startLineNumber,i=e.endLineNumber-this.startLineNumber,[n,r,s]=this.tokens.split(t,e.startColumn-1,i,e.endColumn-1);return[new f(this.startLineNumber,n),new f(this.startLineNumber+s,r)]}applyEdit(e,t){const[i,n,r]=l(t);this.acceptEdit(e,i,n,r,t.length>0?t.charCodeAt(0):0)}acceptEdit(e,t,i,n,r){this._acceptDeleteRange(e),this._acceptInsertText(new s.L(e.startLineNumber,e.startColumn),t,i,n,r),this._updateEndLineNumber()}_acceptDeleteRange(e){if(e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn)return;const t=e.startLineNumber-this.startLineNumber,i=e.endLineNumber-this.startLineNumber;if(i<0){const e=i-t;return void(this.startLineNumber-=e)}const n=this.tokens.getMaxDeltaLine();if(!(t>=n+1)){if(t<0&&i>=n+1)return this.startLineNumber=0,void this.tokens.clear();if(t<0){const n=-t;this.startLineNumber-=n,this.tokens.acceptDeleteRange(e.startColumn-1,0,0,i,e.endColumn-1)}else this.tokens.acceptDeleteRange(0,t,e.startColumn-1,i,e.endColumn-1)}}_acceptInsertText(e,t,i,n,r){if(0===t&&0===i)return;const s=e.lineNumber-this.startLineNumber;s<0?this.startLineNumber+=t:s>=this.tokens.getMaxDeltaLine()+1||this.tokens.acceptInsertText(s,e.column-1,t,i,n,r)}}class p{constructor(e,t){this.startLineNumber=e,this.tokens=t}}function m(e){return e instanceof Uint32Array?e:new Uint32Array(e)}class _{constructor(){this._pieces=[],this._isComplete=!1}flush(){this._pieces=[],this._isComplete=!1}set(e,t){this._pieces=e||[],this._isComplete=t}setPartial(e,t){let i=e;if(t.length>0){const n=t[0].getRange(),r=t[t.length-1].getRange();if(!n||!r)return e;i=e.plusRange(n).plusRange(r)}let r=null;for(let e=0,t=this._pieces.length;e<t;e++){const n=this._pieces[e];if(n.endLineNumber<i.startLineNumber)continue;if(n.startLineNumber>i.endLineNumber){r=r||{index:e};break}if(n.removeTokens(i),n.isEmpty()){this._pieces.splice(e,1),e--,t--;continue}if(n.endLineNumber<i.startLineNumber)continue;if(n.startLineNumber>i.endLineNumber){r=r||{index:e};continue}const[s,o]=n.split(i);s.isEmpty()?r=r||{index:e}:o.isEmpty()||(this._pieces.splice(e,1,s,o),e++,t++,r=r||{index:e})}return r=r||{index:this._pieces.length},t.length>0&&(this._pieces=n.Zv(this._pieces,r.index,t)),i}isComplete(){return this._isComplete}addSemanticTokens(e,t){const i=this._pieces;if(0===i.length)return t;const n=i[_._findFirstPieceWithLine(i,e)].getLineTokens(e);if(!n)return t;const s=t.getCount(),o=n.getCount();let a=0,l=[],c=0,d=0;const h=(e,t)=>{e!==d&&(d=e,l[c++]=e,l[c++]=t)};for(let e=0;e<o;e++){const i=n.getStartCharacter(e),r=n.getEndCharacter(e),o=n.getMetadata(e),l=((1&o?2048:0)|(2&o?4096:0)|(4&o?8192:0)|(8&o?8372224:0)|(16&o?4286578688:0))>>>0,c=~l>>>0;for(;a<s&&t.getEndOffset(a)<=i;)h(t.getEndOffset(a),t.getMetadata(a)),a++;for(a<s&&t.getStartOffset(a)<i&&h(i,t.getMetadata(a));a<s&&t.getEndOffset(a)<r;)h(t.getEndOffset(a),t.getMetadata(a)&c|o&l),a++;if(a<s)h(r,t.getMetadata(a)&c|o&l),t.getEndOffset(a)===r&&a++;else{const e=Math.min(Math.max(0,a-1),s-1);h(r,t.getMetadata(e)&c|o&l)}}for(;a<s;)h(t.getEndOffset(a),t.getMetadata(a)),a++;return new r.A(new Uint32Array(l),t.getLineContent())}static _findFirstPieceWithLine(e,t){let i=0,n=e.length-1;for(;i<n;){let r=i+Math.floor((n-i)/2);if(e[r].endLineNumber<t)i=r+1;else{if(!(e[r].startLineNumber>t)){for(;r>i&&e[r-1].startLineNumber<=t&&t<=e[r-1].endLineNumber;)r--;return r}n=r-1}}return i}acceptEdit(e,t,i,n,r){for(const s of this._pieces)s.acceptEdit(e,t,i,n,r)}}class b{constructor(){this._lineTokens=[],this._len=0}flush(){this._lineTokens=[],this._len=0}getTokens(e,t,i){let n=null;if(t<this._len&&(n=this._lineTokens[t]),null!==n&&n!==d)return new r.A(m(n),i);let s=new Uint32Array(2);return s[0]=i.length,s[1]=c(e),new r.A(s,i)}static _massageTokens(e,t,i){const n=i?m(i):null;if(0===t){let t=!1;if(n&&n.length>1&&(t=a.NX.getLanguageId(n[1])!==e),!t)return d}if(!n||0===n.length){const i=new Uint32Array(2);return i[0]=t,i[1]=c(e),i.buffer}return n[n.length-2]=t,0===n.byteOffset&&n.byteLength===n.buffer.byteLength?n.buffer:n}_ensureLine(e){for(;e>=this._len;)this._lineTokens[this._len]=null,this._len++}_deleteLines(e,t){0!==t&&(e+t>this._len&&(t=this._len-e),this._lineTokens.splice(e,t),this._len-=t)}_insertLines(e,t){if(0===t)return;let i=[];for(let e=0;e<t;e++)i[e]=null;this._lineTokens=n.Zv(this._lineTokens,e,i),this._len+=t}setTokens(e,t,i,n,r){const s=b._massageTokens(e,i,n);this._ensureLine(t);const o=this._lineTokens[t];return this._lineTokens[t]=s,!!r&&!b._equals(o,s)}static _equals(e,t){if(!e||!t)return!e&&!t;const i=m(e),n=m(t);if(i.length!==n.length)return!1;for(let e=0,t=i.length;e<t;e++)if(i[e]!==n[e])return!1;return!0}acceptEdit(e,t,i){this._acceptDeleteRange(e),this._acceptInsertText(new s.L(e.startLineNumber,e.startColumn),t,i)}_acceptDeleteRange(e){const t=e.startLineNumber-1;if(t>=this._len)return;if(e.startLineNumber===e.endLineNumber){if(e.startColumn===e.endColumn)return;return void(this._lineTokens[t]=b._delete(this._lineTokens[t],e.startColumn-1,e.endColumn-1))}this._lineTokens[t]=b._deleteEnding(this._lineTokens[t],e.startColumn-1);const i=e.endLineNumber-1;let n=null;i<this._len&&(n=b._deleteBeginning(this._lineTokens[i],e.endColumn-1)),this._lineTokens[t]=b._append(this._lineTokens[t],n),this._deleteLines(e.startLineNumber,e.endLineNumber-e.startLineNumber)}_acceptInsertText(e,t,i){if(0===t&&0===i)return;const n=e.lineNumber-1;n>=this._len||(0!==t?(this._lineTokens[n]=b._deleteEnding(this._lineTokens[n],e.column-1),this._lineTokens[n]=b._insert(this._lineTokens[n],e.column-1,i),this._insertLines(e.lineNumber,t)):this._lineTokens[n]=b._insert(this._lineTokens[n],e.column-1,i))}static _deleteBeginning(e,t){return null===e||e===d?e:b._delete(e,0,t)}static _deleteEnding(e,t){if(null===e||e===d)return e;const i=m(e),n=i[i.length-2];return b._delete(e,t,n)}static _delete(e,t,i){if(null===e||e===d||t===i)return e;const n=m(e),s=n.length>>>1;if(0===t&&n[n.length-2]===i)return d;const o=r.A.findIndexInTokensArray(n,t),a=o>0?n[o-1<<1]:0;if(i<n[o<<1]){const r=i-t;for(let e=o;e<s;e++)n[e<<1]-=r;return e}let l,c;a!==t?(n[o<<1]=t,l=o+1<<1,c=t):(l=o<<1,c=a);const h=i-t;for(let e=o+1;e<s;e++){const t=n[e<<1]-h;t>c&&(n[l++]=t,n[l++]=n[1+(e<<1)],c=t)}if(l===n.length)return e;let u=new Uint32Array(l);return u.set(n.subarray(0,l),0),u.buffer}static _append(e,t){if(t===d)return e;if(e===d)return t;if(null===e)return e;if(null===t)return null;const i=m(e),n=m(t),r=n.length>>>1;let s=new Uint32Array(i.length+n.length);s.set(i,0);let o=i.length;const a=i[i.length-2];for(let e=0;e<r;e++)s[o++]=n[e<<1]+a,s[o++]=n[1+(e<<1)];return s.buffer}static _insert(e,t,i){if(null===e||e===d)return e;const n=m(e),s=n.length>>>1;let o=r.A.findIndexInTokensArray(n,t);o>0&&n[o-1<<1]===t&&o--;for(let e=o;e<s;e++)n[e<<1]+=i;return e}}},97461:(e,t,i)=>{"use strict";i.d(t,{vu:()=>n,Af:()=>r,eq:()=>s,t2:()=>a});const n="`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?",r=function(e=""){let t="(-?\\d*\\.\\d\\w*)|([^";for(const i of n)e.indexOf(i)>=0||(t+="\\"+i);return t+="\\s]+)",new RegExp(t,"g")}();function s(e){let t=r;if(e&&e instanceof RegExp)if(e.global)t=e;else{let i="g";e.ignoreCase&&(i+="i"),e.multiline&&(i+="m"),e.unicode&&(i+="u"),t=new RegExp(e.source,i)}return t.lastIndex=0,t}const o={maxLen:1e3,windowSize:15,timeBudget:150};function a(e,t,i,n,r=o){if(i.length>r.maxLen){let s=e-r.maxLen/2;return s<0?(n+=e,s=0):n+=s,a(e,t,i=i.substring(s,e+r.maxLen/2),n,r)}Date.now();const s=e-1-n;let c=-1,d=null;for(let e=1;;e++){Date.now(),r.timeBudget;const n=s-r.windowSize*e;t.lastIndex=Math.max(0,n);const o=l(t,i,s,c);if(!o&&d)break;if(d=o,n<=0)break;c=n}if(d){let e={word:d[0],startColumn:n+1+d.index,endColumn:n+1+d.index+d[0].length};return t.lastIndex=0,e}return null}function l(e,t,i,n){let r;for(;r=e.exec(t);){const t=r.index||0;if(t<=i&&e.lastIndex>=i)return r;if(n>0&&t>n)return null}return null}},43775:(e,t,i)=>{"use strict";i.d(t,{H9:()=>P,He:()=>R,OH:()=>H,KZ:()=>x,RN:()=>I,Ct:()=>T,Az:()=>F,MY:()=>v,vH:()=>N,vN:()=>B,K7:()=>U,wT:()=>z,vJ:()=>D,AD:()=>C,aC:()=>V,xp:()=>M,vI:()=>O,rl:()=>f,pM:()=>Y,ln:()=>W,jC:()=>E,FL:()=>S,G0:()=>k,AC:()=>j,nD:()=>L,WW:()=>b,uZ:()=>y,NX:()=>p,RW:()=>$,tA:()=>A,jr:()=>_,Sy:()=>m,vx:()=>w});var n=i(70666),r=i(24314),s=i(4669),o=i(5976),a=i(14118),l=i(88721);function c(e,t,i,n){if(Array.isArray(e)){let r=0;for(const s of e){const e=c(s,t,i,n);if(10===e)return e;e>r&&(r=e)}return r}if("string"==typeof e)return n?"*"===e?5:e===i?10:0:0;if(e){const{language:r,pattern:s,scheme:o,hasAccessToAllModels:c}=e;if(!n&&!c)return 0;let d=0;if(o)if(o===t.scheme)d=10;else{if("*"!==o)return 0;d=5}if(r)if(r===i)d=10;else{if("*"!==r)return 0;d=Math.max(d,5)}if(s){let e;if(e="string"==typeof s?s:Object.assign(Object.assign({},s),{base:(0,l.Fv)(s.base)}),e!==t.fsPath&&!(0,a.EQ)(e,t.fsPath))return 0;d=10}return d}return 0}var d=i(51200);function h(e){return"string"!=typeof e&&(Array.isArray(e)?e.every(h):!!e.exclusive)}class u{constructor(){this._clock=0,this._entries=[],this._onDidChange=new s.Q5}get onDidChange(){return this._onDidChange.event}register(e,t){let i={selector:e,provider:t,_score:-1,_time:this._clock++};return this._entries.push(i),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),(0,o.OF)((()=>{if(i){let e=this._entries.indexOf(i);e>=0&&(this._entries.splice(e,1),this._lastCandidate=void 0,this._onDidChange.fire(this._entries.length),i=void 0)}}))}has(e){return this.all(e).length>0}all(e){if(!e)return[];this._updateScores(e);const t=[];for(let e of this._entries)e._score>0&&t.push(e.provider);return t}ordered(e){const t=[];return this._orderedForEach(e,(e=>t.push(e.provider))),t}orderedGroups(e){const t=[];let i,n;return this._orderedForEach(e,(e=>{i&&n===e._score?i.push(e.provider):(n=e._score,i=[e.provider],t.push(i))})),t}_orderedForEach(e,t){if(e){this._updateScores(e);for(const e of this._entries)e._score>0&&t(e)}}_updateScores(e){let t={uri:e.uri.toString(),language:e.getLanguageIdentifier().language};if(!this._lastCandidate||this._lastCandidate.language!==t.language||this._lastCandidate.uri!==t.uri){this._lastCandidate=t;for(let t of this._entries)if(t._score=c(t.selector,e.uri,e.getLanguageIdentifier().language,(0,d.p)(e)),h(t.selector)&&t._score>0){for(let e of this._entries)e._score=0;t._score=1e3;break}this._entries.sort(u._compareByScoreAndTime)}}static _compareByScoreAndTime(e,t){return e._score<t._score?1:e._score>t._score?-1:e._time<t._time?1:e._time>t._time?-1:0}}var g=i(73046);class f{constructor(e,t){this.language=e,this.id=t}}class p{static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(1792&e)>>>8}static getFontStyle(e){return(14336&e)>>>11}static getForeground(e){return(8372224&e)>>>14}static getBackground(e){return(4286578688&e)>>>23}static getClassNameFromMetadata(e){let t="mtk"+this.getForeground(e),i=this.getFontStyle(e);return 1&i&&(t+=" mtki"),2&i&&(t+=" mtkb"),4&i&&(t+=" mtku"),t}static getInlineStyleFromMetadata(e,t){const i=this.getForeground(e),n=this.getFontStyle(e);let r=`color: ${t[i]};`;return 1&n&&(r+="font-style: italic;"),2&n&&(r+="font-weight: bold;"),4&n&&(r+="text-decoration: underline;"),r}}const m=function(){let e=Object.create(null);return e[0]="symbol-method",e[1]="symbol-function",e[2]="symbol-constructor",e[3]="symbol-field",e[4]="symbol-variable",e[5]="symbol-class",e[6]="symbol-struct",e[7]="symbol-interface",e[8]="symbol-module",e[9]="symbol-property",e[10]="symbol-event",e[11]="symbol-operator",e[12]="symbol-unit",e[13]="symbol-value",e[14]="symbol-constant",e[15]="symbol-enum",e[16]="symbol-enum-member",e[17]="symbol-keyword",e[27]="symbol-snippet",e[18]="symbol-text",e[19]="symbol-color",e[20]="symbol-file",e[21]="symbol-reference",e[22]="symbol-customcolor",e[23]="symbol-folder",e[24]="symbol-type-parameter",e[25]="account",e[26]="issues",function(t){const i=e[t];let n=i&&g.fK.get(i);return n||(console.info("No codicon found for CompletionItemKind "+t),n=g.lA.symbolProperty),n.classNames}}();let _=function(){let e=Object.create(null);return e.method=0,e.function=1,e.constructor=2,e.field=3,e.variable=4,e.class=5,e.struct=6,e.interface=7,e.module=8,e.property=9,e.event=10,e.operator=11,e.unit=12,e.value=13,e.constant=14,e.enum=15,e["enum-member"]=16,e.enumMember=16,e.keyword=17,e.snippet=27,e.text=18,e.color=19,e.file=20,e.reference=21,e.customcolor=22,e.folder=23,e["type-parameter"]=24,e.typeParameter=24,e.account=25,e.issue=26,function(t,i){let n=e[t];return void 0!==n||i||(n=9),n}}();var b,v,y;function w(e){return e&&n.o.isUri(e.uri)&&r.e.isIRange(e.range)&&(r.e.isIRange(e.originSelectionRange)||r.e.isIRange(e.targetSelectionRange))}!function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(b||(b={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(v||(v={})),function(e){const t=new Map;t.set("file",0),t.set("module",1),t.set("namespace",2),t.set("package",3),t.set("class",4),t.set("method",5),t.set("property",6),t.set("field",7),t.set("constructor",8),t.set("enum",9),t.set("interface",10),t.set("function",11),t.set("variable",12),t.set("constant",13),t.set("string",14),t.set("number",15),t.set("boolean",16),t.set("array",17),t.set("object",18),t.set("key",19),t.set("null",20),t.set("enum-member",21),t.set("struct",22),t.set("event",23),t.set("operator",24),t.set("type-parameter",25);const i=new Map;i.set(0,"file"),i.set(1,"module"),i.set(2,"namespace"),i.set(3,"package"),i.set(4,"class"),i.set(5,"method"),i.set(6,"property"),i.set(7,"field"),i.set(8,"constructor"),i.set(9,"enum"),i.set(10,"interface"),i.set(11,"function"),i.set(12,"variable"),i.set(13,"constant"),i.set(14,"string"),i.set(15,"number"),i.set(16,"boolean"),i.set(17,"array"),i.set(18,"object"),i.set(19,"key"),i.set(20,"null"),i.set(21,"enum-member"),i.set(22,"struct"),i.set(23,"event"),i.set(24,"operator"),i.set(25,"type-parameter"),e.fromString=function(e){return t.get(e)},e.toString=function(e){return i.get(e)},e.toCssClassName=function(e,t){const n=i.get(e);let r=n&&g.fK.get("symbol-"+n);return r||(console.info("No codicon found for SymbolKind "+e),r=g.lA.symbolProperty),`${t?"inline":"block"} ${r.classNames}`}}(y||(y={}));class C{constructor(e){this.value=e}}C.Comment=new C("comment"),C.Imports=new C("imports"),C.Region=new C("region");const S=new u,k=new u,x=new u,L=new u,M=new u,D=new u,N=new u,E=new u,T=new u,I=new u,O=new u,A=new u,R=new u,P=new u,F=new u,B=new u,W=new u,Y=new u,H=new u,j=new u,V=new u,z=new u,U=new u,$=new class{constructor(){this._map=new Map,this._promises=new Map,this._onDidChange=new s.Q5,this.onDidChange=this._onDidChange.event,this._colorMap=null}fire(e){this._onDidChange.fire({changedLanguages:e,changedColorMap:!1})}register(e,t){return this._map.set(e,t),this.fire([e]),(0,o.OF)((()=>{this._map.get(e)===t&&(this._map.delete(e),this.fire([e]))}))}registerPromise(e,t){let i=null,n=!1;return this._promises.set(e,t.then((t=>{this._promises.delete(e),!n&&t&&(i=this.register(e,t))}))),(0,o.OF)((()=>{n=!0,i&&i.dispose()}))}getPromise(e){const t=this.get(e);if(t)return Promise.resolve(t);const i=this._promises.get(e);return i?i.then((t=>this.get(e))):null}get(e){return this._map.get(e)||null}setColorMap(e){this._colorMap=e,this._onDidChange.fire({changedLanguages:Array.from(this._map.keys()),changedColorMap:!0})}getColorMap(){return this._colorMap}getDefaultBackground(){return this._colorMap&&this._colorMap.length>2?this._colorMap[2]:null}}},97354:(e,t,i)=>{"use strict";var n;i.d(t,{w:()=>n,V:()=>r}),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(n||(n={}));class r{constructor(e){if(this.open=e.open,this.close=e.close,this._standardTokenMask=0,Array.isArray(e.notIn))for(let t=0,i=e.notIn.length;t<i;t++)switch(e.notIn[t]){case"string":this._standardTokenMask|=2;break;case"comment":this._standardTokenMask|=1;break;case"regex":this._standardTokenMask|=4}}isOK(e){return 0==(this._standardTokenMask&e)}}},83831:(e,t,i)=>{"use strict";i.d(t,{zu:()=>_});var n=i(4669),r=i(5976),s=i(97295),o=i(97461),a=i(97354),l=i(40764);class c{constructor(e){if(e.autoClosingPairs?this._autoClosingPairs=e.autoClosingPairs.map((e=>new a.V(e))):e.brackets?this._autoClosingPairs=e.brackets.map((e=>new a.V({open:e[0],close:e[1]}))):this._autoClosingPairs=[],e.__electricCharacterSupport&&e.__electricCharacterSupport.docComment){const t=e.__electricCharacterSupport.docComment;this._autoClosingPairs.push(new a.V({open:t.open,close:t.close||""}))}this._autoCloseBefore="string"==typeof e.autoCloseBefore?e.autoCloseBefore:c.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED,this._surroundingPairs=e.surroundingPairs||this._autoClosingPairs}getAutoClosingPairs(){return this._autoClosingPairs}getAutoCloseBeforeSet(){return this._autoCloseBefore}static shouldAutoClosePair(e,t,i){if(0===t.getTokenCount())return!0;const n=t.findTokenIndexAtOffset(i-2),r=t.getStandardTokenType(n);return e.isOK(r)}getSurroundingPairs(){return this._surroundingPairs}}c.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED=";:.,=}])> \n\t";var d=i(34227);class h{constructor(e){this._richEditBrackets=e}getElectricCharacters(){let e=[];if(this._richEditBrackets)for(const t of this._richEditBrackets.brackets)for(const i of t.close){const t=i.charAt(i.length-1);e.push(t)}return e=e.filter(((e,t,i)=>i.indexOf(e)===t)),e}onElectricCharacter(e,t,i){if(!this._richEditBrackets||0===this._richEditBrackets.brackets.length)return null;const n=t.findTokenIndexAtOffset(i-1);if((0,l.Bu)(t.getStandardTokenType(n)))return null;const r=this._richEditBrackets.reversedRegex,s=t.getLineContent().substring(0,i-1)+e,o=d.Vr.findPrevBracketInRange(r,1,s,0,s.length);if(!o)return null;const a=s.substring(o.startColumn-1,o.endColumn-1).toLowerCase();if(this._richEditBrackets.textIsOpenBracket[a])return null;const c=t.getActualLineContentBefore(o.startColumn-1);return/^\s*$/.test(c)?{matchOpenBracket:a}:null}}class u{constructor(e){this._indentationRules=e}shouldIncrease(e){return!!(this._indentationRules&&this._indentationRules.increaseIndentPattern&&this._indentationRules.increaseIndentPattern.test(e))}shouldDecrease(e){return!!(this._indentationRules&&this._indentationRules.decreaseIndentPattern&&this._indentationRules.decreaseIndentPattern.test(e))}shouldIndentNextLine(e){return!!(this._indentationRules&&this._indentationRules.indentNextLinePattern&&this._indentationRules.indentNextLinePattern.test(e))}shouldIgnore(e){return!!(this._indentationRules&&this._indentationRules.unIndentedLinePattern&&this._indentationRules.unIndentedLinePattern.test(e))}getIndentMetadata(e){let t=0;return this.shouldIncrease(e)&&(t+=1),this.shouldDecrease(e)&&(t+=2),this.shouldIndentNextLine(e)&&(t+=4),this.shouldIgnore(e)&&(t+=8),t}}var g=i(17301);class f{constructor(e){(e=e||{}).brackets=e.brackets||[["(",")"],["{","}"],["[","]"]],this._brackets=[],e.brackets.forEach((e=>{const t=f._createOpenBracketRegExp(e[0]),i=f._createCloseBracketRegExp(e[1]);t&&i&&this._brackets.push({open:e[0],openRegExp:t,close:e[1],closeRegExp:i})})),this._regExpRules=e.onEnterRules||[]}onEnter(e,t,i,n){if(e>=3)for(let e=0,r=this._regExpRules.length;e<r;e++){let r=this._regExpRules[e];if([{reg:r.beforeText,text:i},{reg:r.afterText,text:n},{reg:r.oneLineAboveText,text:t}].every((e=>!e.reg||e.reg.test(e.text))))return r.action}if(e>=2&&i.length>0&&n.length>0)for(let e=0,t=this._brackets.length;e<t;e++){let t=this._brackets[e];if(t.openRegExp.test(i)&&t.closeRegExp.test(n))return{indentAction:a.w.IndentOutdent}}if(e>=2&&i.length>0)for(let e=0,t=this._brackets.length;e<t;e++)if(this._brackets[e].openRegExp.test(i))return{indentAction:a.w.Indent};return null}static _createOpenBracketRegExp(e){let t=s.ec(e);return/\B/.test(t.charAt(0))||(t="\\b"+t),t+="\\s*$",f._safeRegExp(t)}static _createCloseBracketRegExp(e){let t=s.ec(e);return/\B/.test(t.charAt(t.length-1))||(t+="\\b"),t="^\\s*"+t,f._safeRegExp(t)}static _safeRegExp(e){try{return new RegExp(e)}catch(e){return(0,g.dL)(e),null}}}class p{constructor(e,t,i){this._languageIdentifier=e,this._brackets=null,this._electricCharacter=null;let n=null;t&&(n=t._conf),this._conf=p._mergeConf(n,i),this._onEnterSupport=this._conf.brackets||this._conf.indentationRules||this._conf.onEnterRules?new f(this._conf):null,this.comments=p._handleComments(this._conf),this.characterPair=new c(this._conf),this.wordDefinition=this._conf.wordPattern||o.Af,this.indentationRules=this._conf.indentationRules,this._conf.indentationRules?this.indentRulesSupport=new u(this._conf.indentationRules):this.indentRulesSupport=null,this.foldingRules=this._conf.folding||{}}get brackets(){return!this._brackets&&this._conf.brackets&&(this._brackets=new d.EA(this._languageIdentifier,this._conf.brackets)),this._brackets}get electricCharacter(){return this._electricCharacter||(this._electricCharacter=new h(this.brackets)),this._electricCharacter}onEnter(e,t,i,n){return this._onEnterSupport?this._onEnterSupport.onEnter(e,t,i,n):null}static _mergeConf(e,t){return{comments:e?t.comments||e.comments:t.comments,brackets:e?t.brackets||e.brackets:t.brackets,wordPattern:e?t.wordPattern||e.wordPattern:t.wordPattern,indentationRules:e?t.indentationRules||e.indentationRules:t.indentationRules,onEnterRules:e?t.onEnterRules||e.onEnterRules:t.onEnterRules,autoClosingPairs:e?t.autoClosingPairs||e.autoClosingPairs:t.autoClosingPairs,surroundingPairs:e?t.surroundingPairs||e.surroundingPairs:t.surroundingPairs,autoCloseBefore:e?t.autoCloseBefore||e.autoCloseBefore:t.autoCloseBefore,folding:e?t.folding||e.folding:t.folding,__electricCharacterSupport:e?t.__electricCharacterSupport||e.__electricCharacterSupport:t.__electricCharacterSupport}}static _handleComments(e){let t=e.comments;if(!t)return null;let i={};if(t.lineComment&&(i.lineCommentToken=t.lineComment),t.blockComment){let[e,n]=t.blockComment;i.blockCommentStartToken=e,i.blockCommentEndToken=n}return i}}class m{constructor(e){this.languageIdentifier=e}}const _=new class{constructor(){this._entries=new Map,this._onDidChange=new n.Q5,this.onDidChange=this._onDidChange.event}register(e,t){let i=this._getRichEditSupport(e.id),n=new p(e,i,t);return this._entries.set(e.id,n),this._onDidChange.fire(new m(e)),(0,r.OF)((()=>{this._entries.get(e.id)===n&&(this._entries.set(e.id,i),this._onDidChange.fire(new m(e)))}))}_getRichEditSupport(e){return this._entries.get(e)}getIndentationRules(e){const t=this._entries.get(e);return t&&t.indentationRules||null}_getElectricCharacterSupport(e){let t=this._getRichEditSupport(e);return t&&t.electricCharacter||null}getElectricCharacters(e){let t=this._getElectricCharacterSupport(e);return t?t.getElectricCharacters():[]}onElectricCharacter(e,t,i){let n=(0,l.wH)(t,i-1),r=this._getElectricCharacterSupport(n.languageId);return r?r.onElectricCharacter(e,n,i-n.firstCharOffset):null}getComments(e){let t=this._getRichEditSupport(e);return t&&t.comments||null}_getCharacterPairSupport(e){let t=this._getRichEditSupport(e);return t&&t.characterPair||null}getAutoClosingPairs(e){let t=this._getCharacterPairSupport(e);return t?t.getAutoClosingPairs():[]}getAutoCloseBeforeSet(e){let t=this._getCharacterPairSupport(e);return t?t.getAutoCloseBeforeSet():c.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED}getSurroundingPairs(e){let t=this._getCharacterPairSupport(e);return t?t.getSurroundingPairs():[]}shouldAutoClosePair(e,t,i){const n=(0,l.wH)(t,i-1);return c.shouldAutoClosePair(e,n,i-n.firstCharOffset)}getWordDefinition(e){let t=this._getRichEditSupport(e);return t?(0,o.eq)(t.wordDefinition||null):(0,o.eq)(null)}getFoldingRules(e){let t=this._getRichEditSupport(e);return t?t.foldingRules:{}}getIndentRulesSupport(e){let t=this._getRichEditSupport(e);return t&&t.indentRulesSupport||null}getPrecedingValidLine(e,t,i){let n=e.getLanguageIdAtPosition(t,0);if(t>1){let r,s=-1;for(r=t-1;r>=1;r--){if(e.getLanguageIdAtPosition(r,0)!==n)return s;let t=e.getLineContent(r);if(!i.shouldIgnore(t)&&!/^\s+$/.test(t)&&""!==t)return r;s=r}}return-1}getInheritIndentForLine(e,t,i,n=!0){if(e<4)return null;const r=this.getIndentRulesSupport(t.getLanguageIdentifier().id);if(!r)return null;if(i<=1)return{indentation:"",action:null};const o=this.getPrecedingValidLine(t,i,r);if(o<0)return null;if(o<1)return{indentation:"",action:null};const l=t.getLineContent(o);if(r.shouldIncrease(l)||r.shouldIndentNextLine(l))return{indentation:s.V8(l),action:a.w.Indent,line:o};if(r.shouldDecrease(l))return{indentation:s.V8(l),action:null,line:o};{if(1===o)return{indentation:s.V8(t.getLineContent(o)),action:null,line:o};const e=o-1,i=r.getIndentMetadata(t.getLineContent(e));if(!(3&i)&&4&i){let i=0;for(let n=e-1;n>0;n--)if(!r.shouldIndentNextLine(t.getLineContent(n))){i=n;break}return{indentation:s.V8(t.getLineContent(i+1)),action:null,line:i+1}}if(n)return{indentation:s.V8(t.getLineContent(o)),action:null,line:o};for(let e=o;e>0;e--){const i=t.getLineContent(e);if(r.shouldIncrease(i))return{indentation:s.V8(i),action:a.w.Indent,line:e};if(r.shouldIndentNextLine(i)){let i=0;for(let n=e-1;n>0;n--)if(!r.shouldIndentNextLine(t.getLineContent(e))){i=n;break}return{indentation:s.V8(t.getLineContent(i+1)),action:null,line:i+1}}if(r.shouldDecrease(i))return{indentation:s.V8(i),action:null,line:e}}return{indentation:s.V8(t.getLineContent(1)),action:null,line:1}}}getGoodIndentForLine(e,t,i,n,r){if(e<4)return null;const o=this._getRichEditSupport(i);if(!o)return null;const l=this.getIndentRulesSupport(i);if(!l)return null;const c=this.getInheritIndentForLine(e,t,n),d=t.getLineContent(n);if(c){const i=c.line;if(void 0!==i){const n=o.onEnter(e,"",t.getLineContent(i),"");if(n){let e=s.V8(t.getLineContent(i));return n.removeText&&(e=e.substring(0,e.length-n.removeText)),n.indentAction===a.w.Indent||n.indentAction===a.w.IndentOutdent?e=r.shiftIndent(e):n.indentAction===a.w.Outdent&&(e=r.unshiftIndent(e)),l.shouldDecrease(d)&&(e=r.unshiftIndent(e)),n.appendText&&(e+=n.appendText),s.V8(e)}}return l.shouldDecrease(d)?c.action===a.w.Indent?c.indentation:r.unshiftIndent(c.indentation):c.action===a.w.Indent?r.shiftIndent(c.indentation):c.indentation}return null}getIndentForEnter(e,t,i,n){if(e<4)return null;t.forceTokenization(i.startLineNumber);const r=t.getLineTokens(i.startLineNumber),o=(0,l.wH)(r,i.startColumn-1),c=o.getLineContent();let d,h,u=!1;o.firstCharOffset>0&&r.getLanguageId(0)!==o.languageId?(u=!0,d=c.substr(0,i.startColumn-1-o.firstCharOffset)):d=r.getLineContent().substring(0,i.startColumn-1),h=i.isEmpty()?c.substr(i.startColumn-1-o.firstCharOffset):this.getScopedLineTokens(t,i.endLineNumber,i.endColumn).getLineContent().substr(i.endColumn-1-o.firstCharOffset);const g=this.getIndentRulesSupport(o.languageId);if(!g)return null;const f=d,p=s.V8(d),m={getLineTokens:e=>t.getLineTokens(e),getLanguageIdentifier:()=>t.getLanguageIdentifier(),getLanguageIdAtPosition:(e,i)=>t.getLanguageIdAtPosition(e,i),getLineContent:e=>e===i.startLineNumber?f:t.getLineContent(e)},_=s.V8(r.getLineContent()),b=this.getInheritIndentForLine(e,m,i.startLineNumber+1);if(!b){const e=u?_:p;return{beforeEnter:e,afterEnter:e}}let v=u?_:b.indentation;return b.action===a.w.Indent&&(v=n.shiftIndent(v)),g.shouldDecrease(h)&&(v=n.unshiftIndent(v)),{beforeEnter:u?_:p,afterEnter:v}}getIndentActionForType(e,t,i,n,r){if(e<4)return null;const s=this.getScopedLineTokens(t,i.startLineNumber,i.startColumn),o=this.getIndentRulesSupport(s.languageId);if(!o)return null;const l=s.getLineContent(),c=l.substr(0,i.startColumn-1-s.firstCharOffset);let d;if(d=i.isEmpty()?l.substr(i.startColumn-1-s.firstCharOffset):this.getScopedLineTokens(t,i.endLineNumber,i.endColumn).getLineContent().substr(i.endColumn-1-s.firstCharOffset),!o.shouldDecrease(c+d)&&o.shouldDecrease(c+n+d)){const n=this.getInheritIndentForLine(e,t,i.startLineNumber,!1);if(!n)return null;let s=n.indentation;return n.action!==a.w.Indent&&(s=r.unshiftIndent(s)),s}return null}getIndentMetadata(e,t){const i=this.getIndentRulesSupport(e.getLanguageIdentifier().id);return i?t<1||t>e.getLineCount()?null:i.getIndentMetadata(e.getLineContent(t)):null}getEnterAction(e,t,i){const n=this.getScopedLineTokens(t,i.startLineNumber,i.startColumn),r=this._getRichEditSupport(n.languageId);if(!r)return null;const s=n.getLineContent(),o=s.substr(0,i.startColumn-1-n.firstCharOffset);let l;l=i.isEmpty()?s.substr(i.startColumn-1-n.firstCharOffset):this.getScopedLineTokens(t,i.endLineNumber,i.endColumn).getLineContent().substr(i.endColumn-1-n.firstCharOffset);let c="";if(i.startLineNumber>1&&0===n.firstCharOffset){const e=this.getScopedLineTokens(t,i.startLineNumber-1);e.languageId===n.languageId&&(c=e.getLineContent())}const d=r.onEnter(e,c,o,l);if(!d)return null;const h=d.indentAction;let u=d.appendText;const g=d.removeText||0;u||(u=h===a.w.Indent||h===a.w.IndentOutdent?"\t":"");let f=this.getIndentationAtPosition(t,i.startLineNumber,i.startColumn);return g&&(f=f.substring(0,f.length-g)),{indentAction:h,appendText:u,removeText:g,indentation:f}}getIndentationAtPosition(e,t,i){const n=e.getLineContent(t);let r=s.V8(n);return r.length>i-1&&(r=r.substring(0,i-1)),r}getScopedLineTokens(e,t,i){e.forceTokenization(t);const n=e.getLineTokens(t),r=void 0===i?e.getLineMaxColumn(t)-1:i-1;return(0,l.wH)(n,r)}getBracketsSupport(e){const t=this._getRichEditSupport(e);return t&&t.brackets||null}}},71144:(e,t,i)=>{"use strict";i.d(t,{dQ:()=>l,XT:()=>c,Tb:()=>d});var n=i(63580),r=i(4669),s=i(43775),o=i(83831),a=i(89872);const l=new class{constructor(){this._onDidChangeLanguages=new r.Q5,this.onDidChangeLanguages=this._onDidChangeLanguages.event,this._languages=[],this._dynamicLanguages=[]}registerLanguage(e){return this._languages.push(e),this._onDidChangeLanguages.fire(void 0),{dispose:()=>{for(let t=0,i=this._languages.length;t<i;t++)if(this._languages[t]===e)return void this._languages.splice(t,1)}}}getLanguages(){return[].concat(this._languages).concat(this._dynamicLanguages)}};a.B.add("editor.modesRegistry",l);const c="plaintext",d=new s.rl(c,1);l.registerLanguage({id:c,extensions:[".txt"],aliases:[n.N("plainText.alias","Plain Text"),"text"],mimetypes:["text/plain"]}),o.zu.register(d,{brackets:[["(",")"],["[","]"],["{","}"]],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:"<",close:">"},{open:'"',close:'"'},{open:"'",close:"'"},{open:"`",close:"`"}],folding:{offSide:!0}})},28111:(e,t,i)=>{"use strict";i.d(t,{nO:()=>s,TG:()=>o,pA:()=>a,Ri:()=>l,mh:()=>c});var n=i(85600),r=i(43775);const s=new class{clone(){return this}equals(e){return this===e}},o="vs.editor.nullMode",a=new r.rl(o,0);function l(e,t,i,r){return new n.hG([new n.WU(r,"",e)],i)}function c(e,t,i,r){let o=new Uint32Array(2);return o[0]=r,o[1]=(16384|e<<0|2<<23)>>>0,new n.Hi(o,null===i?s:i)}},40764:(e,t,i)=>{"use strict";function n(e,t){let i=e.getCount(),n=e.findTokenIndexAtOffset(t),s=e.getLanguageId(n),o=n;for(;o+1<i&&e.getLanguageId(o+1)===s;)o++;let a=n;for(;a>0&&e.getLanguageId(a-1)===s;)a--;return new r(e,s,a,o+1,e.getStartOffset(a),e.getEndOffset(o))}i.d(t,{wH:()=>n,Bu:()=>s});class r{constructor(e,t,i,n,r,s){this._actual=e,this.languageId=t,this._firstTokenIndex=i,this._lastTokenIndex=n,this.firstCharOffset=r,this._lastCharOffset=s}getLineContent(){return this._actual.getLineContent().substring(this.firstCharOffset,this._lastCharOffset)}getActualLineContentBefore(e){return this._actual.getLineContent().substring(0,this.firstCharOffset+e)}getTokenCount(){return this._lastTokenIndex-this._firstTokenIndex}findTokenIndexAtOffset(e){return this._actual.findTokenIndexAtOffset(e+this.firstCharOffset)-this._firstTokenIndex}getStandardTokenType(e){return this._actual.getStandardTokenType(e+this._firstTokenIndex)}}function s(e){return 0!=(7&e)}},34227:(e,t,i)=>{"use strict";i.d(t,{EA:()=>a,Vr:()=>f});var n=i(97295),r=i(50072),s=i(24314);class o{constructor(e,t,i,n,r,s){this.languageIdentifier=e,this.index=t,this.open=i,this.close=n,this.forwardRegex=r,this.reversedRegex=s,this._openSet=o._toSet(this.open),this._closeSet=o._toSet(this.close)}isOpen(e){return this._openSet.has(e)}isClose(e){return this._closeSet.has(e)}static _toSet(e){const t=new Set;for(const i of e)t.add(i);return t}}class a{constructor(e,t){const i=function(e){const t=e.length;e=e.map((e=>[e[0].toLowerCase(),e[1].toLowerCase()]));const i=[];for(let e=0;e<t;e++)i[e]=e;const n=(e,t)=>{const[i,n]=e,[r,s]=t;return i===r||i===s||n===r||n===s},r=(e,n)=>{const r=Math.min(e,n),s=Math.max(e,n);for(let e=0;e<t;e++)i[e]===s&&(i[e]=r)};for(let s=0;s<t;s++){const o=e[s];for(let a=s+1;a<t;a++)n(o,e[a])&&r(i[s],i[a])}const s=[];for(let n=0;n<t;n++){let r=[],o=[];for(let s=0;s<t;s++)if(i[s]===n){const[t,i]=e[s];r.push(t),o.push(i)}r.length>0&&s.push({open:r,close:o})}return s}(t);this.brackets=i.map(((t,n)=>new o(e,n,t.open,t.close,function(e,t,i,n){let r=[];r=r.concat(e),r=r.concat(t);for(let e=0,t=r.length;e<t;e++)l(r[e],i,n,r);return r=d(r),r.sort(c),r.reverse(),u(r)}(t.open,t.close,i,n),function(e,t,i,n){let r=[];r=r.concat(e),r=r.concat(t);for(let e=0,t=r.length;e<t;e++)l(r[e],i,n,r);return r=d(r),r.sort(c),r.reverse(),u(r.map(g))}(t.open,t.close,i,n)))),this.forwardRegex=function(e){let t=[];for(const i of e){for(const e of i.open)t.push(e);for(const e of i.close)t.push(e)}return t=d(t),u(t)}(this.brackets),this.reversedRegex=function(e){let t=[];for(const i of e){for(const e of i.open)t.push(e);for(const e of i.close)t.push(e)}return t=d(t),u(t.map(g))}(this.brackets),this.textIsBracket={},this.textIsOpenBracket={},this.maxBracketLength=0;for(const e of this.brackets){for(const t of e.open)this.textIsBracket[t]=e,this.textIsOpenBracket[t]=!0,this.maxBracketLength=Math.max(this.maxBracketLength,t.length);for(const t of e.close)this.textIsBracket[t]=e,this.textIsOpenBracket[t]=!1,this.maxBracketLength=Math.max(this.maxBracketLength,t.length)}}}function l(e,t,i,n){for(let r=0,s=t.length;r<s;r++){if(r===i)continue;const s=t[r];for(const t of s.open)t.indexOf(e)>=0&&n.push(t);for(const t of s.close)t.indexOf(e)>=0&&n.push(t)}}function c(e,t){return e.length-t.length}function d(e){if(e.length<=1)return e;const t=[],i=new Set;for(const n of e)i.has(n)||(t.push(n),i.add(n));return t}function h(e){const t=/^[\w ]+$/.test(e);return e=n.ec(e),t?`\\b${e}\\b`:e}function u(e){let t=`(${e.map(h).join(")|(")})`;return n.GF(t,!0)}const g=function(){let e=null,t=null;return function(i){return e!==i&&(e=i,t=function(e){if(r.lZ){const t=new Uint16Array(e.length);let i=0;for(let n=e.length-1;n>=0;n--)t[i++]=e.charCodeAt(n);return r.oe().decode(t)}{let t=[],i=0;for(let n=e.length-1;n>=0;n--)t[i++]=e.charAt(n);return t.join("")}}(e)),t}}();class f{static _findPrevBracketInText(e,t,i,n){let r=i.match(e);if(!r)return null;let o=i.length-(r.index||0),a=r[0].length,l=n+o;return new s.e(t,l-a+1,t,l+1)}static findPrevBracketInRange(e,t,i,n,r){const s=g(i).substring(i.length-r,i.length-n);return this._findPrevBracketInText(e,t,s,n)}static findNextBracketInText(e,t,i,n){let r=i.match(e);if(!r)return null;let o=r.index||0,a=r[0].length;if(0===a)return null;let l=n+o;return new s.e(t,l+1,t,l+1+a)}static findNextBracketInRange(e,t,i,n,r){const s=i.substring(n,r);return this.findNextBracketInText(e,t,s,n)}}},55713:(e,t,i)=>{"use strict";i.d(t,{C:()=>a,F:()=>l});var n=i(97295),r=i(78411),s=i(28111);const o={getInitialState:()=>s.nO,tokenize2:(e,t,i)=>(0,s.mh)(0,e,t,i)};function a(e,t=o){return function(e,t){let i='<div class="monaco-tokenized-source">',s=e.split(/\r\n|\r|\n/),o=t.getInitialState();for(let e=0,a=s.length;e<a;e++){let a=s[e];e>0&&(i+="<br/>");let l=t.tokenize2(a,o,0);r.A.convertToEndOffset(l.tokens,a.length);let c=new r.A(l.tokens,a).inflate(),d=0;for(let e=0,t=c.getCount();e<t;e++){const t=c.getClassName(e),r=c.getEndOffset(e);i+=`<span class="${t}">${n.YU(a.substring(d,r))}</span>`,d=r}o=l.endState}return i+="</div>",i}(e,t||o)}function l(e,t,i,n,r,s,o){let a="<div>",l=n,c=0;for(let d=0,h=t.getCount();d<h;d++){const h=t.getEndOffset(d);if(h<=n)continue;let u="";for(;l<h&&l<r;l++){const t=e.charCodeAt(l);switch(t){case 9:let e=s-(l+c)%s;for(c+=e-1;e>0;)u+=o?" ":" ",e--;break;case 60:u+="<";break;case 62:u+=">";break;case 38:u+="&";break;case 0:u+="�";break;case 65279:case 8232:case 8233:case 133:u+="�";break;case 13:u+="​";break;case 32:u+=o?" ":" ";break;default:u+=String.fromCharCode(t)}}if(a+=`<span style="${t.getInlineStyle(d,i)}">${u}</span>`,h>r||l>=r)break}return a+="</div>",a}},90469:(e,t,i)=>{"use strict";i.d(t,{p:()=>n});const n=(0,i(72065).yh)("editorWorkerService")},26479:(e,t,i)=>{"use strict";i.d(t,{i:()=>n});const n=(0,i(72065).yh)("markerDecorationsService")},71531:(e,t,i)=>{"use strict";i.d(t,{h:()=>n});const n=(0,i(72065).yh)("modeService")},51200:(e,t,i)=>{"use strict";i.d(t,{q:()=>n,p:()=>r});const n=(0,i(72065).yh)("modelService");function r(e){return!e.isTooLargeForSyncing()&&!e.isForSimpleWidget}},32334:(e,t,i)=>{"use strict";i.d(t,{BR:()=>x,e3:()=>L,tw:()=>M});var n=i(4669),r=i(5976),s=i(1432),o=i(17301),a=i(64141),l=i(3411),c=i(43775),d=i(71144),h=i(33187),u=i(33108),g=i(15393),f=i(71050),p=i(97781),m=i(43557),_=i(64862),b=i(89954),v=i(95215),y=i(65072),w=function(e,t){return function(i,n){t(i,n,e)}};function C(e){return e.toString()}class S{constructor(e,t,i){this._modelEventListeners=new r.SL,this.model=e,this._languageSelection=null,this._languageSelectionListener=null,this._modelEventListeners.add(e.onWillDispose((()=>t(e)))),this._modelEventListeners.add(e.onDidChangeLanguage((t=>i(e,t))))}_disposeLanguageSelection(){this._languageSelectionListener&&(this._languageSelectionListener.dispose(),this._languageSelectionListener=null),this._languageSelection&&(this._languageSelection.dispose(),this._languageSelection=null)}dispose(){this._modelEventListeners.dispose(),this._disposeLanguageSelection()}setLanguage(e){this._disposeLanguageSelection(),this._languageSelection=e,this._languageSelectionListener=this._languageSelection.onDidChange((()=>this.model.setMode(e.languageIdentifier))),this.model.setMode(e.languageIdentifier)}}const k=s.IJ||s.dz?1:2;let x=class e extends r.JT{constructor(e,t,i,r,s){super(),this._configurationService=e,this._resourcePropertiesService=t,this._themeService=i,this._logService=r,this._undoRedoService=s,this._onModelAdded=this._register(new n.Q5),this.onModelAdded=this._onModelAdded.event,this._onModelRemoved=this._register(new n.Q5),this.onModelRemoved=this._onModelRemoved.event,this._onModelModeChanged=this._register(new n.Q5),this.onModelModeChanged=this._onModelModeChanged.event,this._modelCreationOptionsByLanguageAndResource=Object.create(null),this._models={},this._disposedModels=new Map,this._disposedModelsHeapSize=0,this._semanticStyling=this._register(new N(this._themeService,this._logService)),this._register(this._configurationService.onDidChangeConfiguration((()=>this._updateModelOptions()))),this._updateModelOptions(),this._register(new D(this,this._themeService,this._configurationService,this._semanticStyling))}static _readModelOptions(e,t){let i=a.DB.tabSize;if(e.editor&&void 0!==e.editor.tabSize){const t=parseInt(e.editor.tabSize,10);isNaN(t)||(i=t),i<1&&(i=1)}let n=i;if(e.editor&&void 0!==e.editor.indentSize&&"tabSize"!==e.editor.indentSize){const t=parseInt(e.editor.indentSize,10);isNaN(t)||(n=t),n<1&&(n=1)}let r=a.DB.insertSpaces;e.editor&&void 0!==e.editor.insertSpaces&&(r="false"!==e.editor.insertSpaces&&Boolean(e.editor.insertSpaces));let s=k;const o=e.eol;"\r\n"===o?s=2:"\n"===o&&(s=1);let l=a.DB.trimAutoWhitespace;e.editor&&void 0!==e.editor.trimAutoWhitespace&&(l="false"!==e.editor.trimAutoWhitespace&&Boolean(e.editor.trimAutoWhitespace));let c=a.DB.detectIndentation;e.editor&&void 0!==e.editor.detectIndentation&&(c="false"!==e.editor.detectIndentation&&Boolean(e.editor.detectIndentation));let d=a.DB.largeFileOptimizations;return e.editor&&void 0!==e.editor.largeFileOptimizations&&(d="false"!==e.editor.largeFileOptimizations&&Boolean(e.editor.largeFileOptimizations)),{isForSimpleWidget:t,tabSize:i,indentSize:n,insertSpaces:r,detectIndentation:c,defaultEOL:s,trimAutoWhitespace:l,largeFileOptimizations:d}}_getEOL(e,t){if(e)return this._resourcePropertiesService.getEOL(e,t);const i=this._configurationService.getValue("files.eol",{overrideIdentifier:t});return i&&"auto"!==i?i:3===s.OS||2===s.OS?"\n":"\r\n"}getCreationOptions(t,i,n){let r=this._modelCreationOptionsByLanguageAndResource[t+i];if(!r){const s=this._configurationService.getValue("editor",{overrideIdentifier:t,resource:i}),o=this._getEOL(i,t);r=e._readModelOptions({editor:s,eol:o},n),this._modelCreationOptionsByLanguageAndResource[t+i]=r}return r}_updateModelOptions(){const t=this._modelCreationOptionsByLanguageAndResource;this._modelCreationOptionsByLanguageAndResource=Object.create(null);const i=Object.keys(this._models);for(let n=0,r=i.length;n<r;n++){const r=i[n],s=this._models[r],o=s.model.getLanguageIdentifier().language,a=s.model.uri,l=t[o+a],c=this.getCreationOptions(o,a,s.model.isForSimpleWidget);e._setModelOptionsForModel(s.model,c,l)}}static _setModelOptionsForModel(e,t,i){i&&i.defaultEOL!==t.defaultEOL&&1===e.getLineCount()&&e.setEOL(1===t.defaultEOL?0:1),i&&i.detectIndentation===t.detectIndentation&&i.insertSpaces===t.insertSpaces&&i.tabSize===t.tabSize&&i.indentSize===t.indentSize&&i.trimAutoWhitespace===t.trimAutoWhitespace||(t.detectIndentation?(e.detectIndentation(t.insertSpaces,t.tabSize),e.updateOptions({trimAutoWhitespace:t.trimAutoWhitespace})):e.updateOptions({insertSpaces:t.insertSpaces,tabSize:t.tabSize,indentSize:t.indentSize,trimAutoWhitespace:t.trimAutoWhitespace}))}_removeDisposedModel(e){const t=this._disposedModels.get(C(e));return t&&(this._disposedModelsHeapSize-=t.heapSize),this._disposedModels.delete(C(e)),t}_createModelData(e,t,i,n){const r=this.getCreationOptions(t.language,i,n),s=new l.yO(e,r,t,i,this._undoRedoService);if(i&&this._disposedModels.has(C(i))){const e=this._removeDisposedModel(i),t=this._undoRedoService.getElements(i),n=function(e){const t=new b.yP,i=e.createSnapshot();let n;for(;n=i.read();)t.update(n);return t.digest()}(s)===e.sha1;if(n||e.sharesUndoRedoStack){for(const e of t.past)(0,v.e9)(e)&&e.matchesResource(i)&&e.setModel(s);for(const e of t.future)(0,v.e9)(e)&&e.matchesResource(i)&&e.setModel(s);this._undoRedoService.setElementsValidFlag(i,!0,(e=>(0,v.e9)(e)&&e.matchesResource(i))),n&&(s._overwriteVersionId(e.versionId),s._overwriteAlternativeVersionId(e.alternativeVersionId),s._overwriteInitialUndoRedoSnapshot(e.initialUndoRedoSnapshot))}else null!==e.initialUndoRedoSnapshot&&this._undoRedoService.restoreSnapshot(e.initialUndoRedoSnapshot)}const o=C(s.uri);if(this._models[o])throw new Error("ModelService: Cannot add model because it already exists!");const a=new S(s,(e=>this._onWillDispose(e)),((e,t)=>this._onDidChangeLanguage(e,t)));return this._models[o]=a,a}createModel(e,t,i,n=!1){let r;return t?(r=this._createModelData(e,t.languageIdentifier,i,n),this.setMode(r.model,t)):r=this._createModelData(e,d.Tb,i,n),this._onModelAdded.fire(r.model),r.model}setMode(e,t){if(!t)return;const i=this._models[C(e.uri)];i&&i.setLanguage(t)}getModels(){const e=[],t=Object.keys(this._models);for(let i=0,n=t.length;i<n;i++){const n=t[i];e.push(this._models[n].model)}return e}getModel(e){const t=C(e),i=this._models[t];return i?i.model:null}getSemanticTokensProviderStyling(e){return this._semanticStyling.get(e)}_onWillDispose(e){const t=C(e.uri),i=this._models[t];delete this._models[t],i.dispose(),delete this._modelCreationOptionsByLanguageAndResource[e.getLanguageIdentifier().language+e.uri],this._onModelRemoved.fire(e)}_onDidChangeLanguage(t,i){const n=i.oldLanguage,r=t.getLanguageIdentifier().language,s=this.getCreationOptions(n,t.uri,t.isForSimpleWidget),o=this.getCreationOptions(r,t.uri,t.isForSimpleWidget);e._setModelOptionsForModel(t,o,s),this._onModelModeChanged.fire({model:t,oldModeId:n})}};x=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([w(0,u.Ui),w(1,h.y),w(2,p.XE),w(3,m.VZ),w(4,_.t)],x);const L="editor.semanticHighlighting";function M(e,t,i){var n;const r=null===(n=i.getValue(L,{overrideIdentifier:e.getLanguageIdentifier().language,resource:e.uri}))||void 0===n?void 0:n.enabled;return"boolean"==typeof r?r:t.getColorTheme().semanticHighlighting}class D extends r.JT{constructor(e,t,i,n){super(),this._watchers=Object.create(null),this._semanticStyling=n;const r=e=>{this._watchers[e.uri.toString()]=new T(e,t,this._semanticStyling)},s=(e,t)=>{t.dispose(),delete this._watchers[e.uri.toString()]},o=()=>{for(let n of e.getModels()){const e=this._watchers[n.uri.toString()];M(n,t,i)?e||r(n):e&&s(n,e)}};this._register(e.onModelAdded((e=>{M(e,t,i)&&r(e)}))),this._register(e.onModelRemoved((e=>{const t=this._watchers[e.uri.toString()];t&&s(e,t)}))),this._register(i.onDidChangeConfiguration((e=>{e.affectsConfiguration(L)&&o()}))),this._register(t.onDidColorThemeChange(o))}}class N extends r.JT{constructor(e,t){super(),this._themeService=e,this._logService=t,this._caches=new WeakMap,this._register(this._themeService.onDidColorThemeChange((()=>{this._caches=new WeakMap})))}get(e){return this._caches.has(e)||this._caches.set(e,new y.$(e.getLegend(),this._themeService,this._logService)),this._caches.get(e)}}class E{constructor(e,t,i){this._provider=e,this.resultId=t,this.data=i}dispose(){this._provider.releaseDocumentSemanticTokens(this.resultId)}}class T extends r.JT{constructor(e,t,i){super(),this._isDisposed=!1,this._model=e,this._semanticStyling=i,this._fetchDocumentSemanticTokens=this._register(new g.pY((()=>this._fetchDocumentSemanticTokensNow()),300)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._register(this._model.onDidChangeContent((()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule()})));const n=()=>{(0,r.B9)(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const t of c.wT.all(e))"function"==typeof t.onDidChange&&this._documentProvidersChangeListeners.push(t.onDidChange((()=>this._fetchDocumentSemanticTokens.schedule(0))))};n(),this._register(c.wT.onDidChange((()=>{n(),this._fetchDocumentSemanticTokens.schedule()}))),this._register(t.onDidColorThemeChange((e=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule()}))),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;const e=this._getSemanticColoringProvider();if(!e)return;this._currentDocumentRequestCancellationTokenSource=new f.A;const t=[],i=this._model.onDidChangeContent((e=>{t.push(e)})),n=this._semanticStyling.get(e),r=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null;Promise.resolve(e.provideDocumentSemanticTokens(this._model,r,this._currentDocumentRequestCancellationTokenSource.token)).then((r=>{this._currentDocumentRequestCancellationTokenSource=null,i.dispose(),this._setDocumentSemanticTokens(e,r||null,n,t)}),(e=>{e&&"string"==typeof e.message&&-1!==e.message.indexOf("busy")||o.dL(e),this._currentDocumentRequestCancellationTokenSource=null,i.dispose(),t.length>0&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule())}))}static _isSemanticTokens(e){return e&&!!e.data}static _isSemanticTokensEdits(e){return e&&Array.isArray(e.edits)}static _copy(e,t,i,n,r){for(let s=0;s<r;s++)i[n+s]=e[t+s]}_setDocumentSemanticTokens(e,t,i,n){const r=this._currentDocumentResponse;if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed)e&&t&&e.releaseDocumentSemanticTokens(t.resultId);else if(e&&i)if(t){if(T._isSemanticTokensEdits(t)){if(!r)return void this._model.setSemanticTokens(null,!0);if(0===t.edits.length)t={resultId:t.resultId,data:r.data};else{let e=0;for(const i of t.edits)e+=(i.data?i.data.length:0)-i.deleteCount;const i=r.data,n=new Uint32Array(i.length+e);let s=i.length,o=n.length;for(let e=t.edits.length-1;e>=0;e--){const r=t.edits[e],a=s-(r.start+r.deleteCount);a>0&&(T._copy(i,s-a,n,o-a,a),o-=a),r.data&&(T._copy(r.data,0,n,o-r.data.length,r.data.length),o-=r.data.length),s=r.start}s>0&&T._copy(i,0,n,0,s),t={resultId:t.resultId,data:n}}}if(T._isSemanticTokens(t)){this._currentDocumentResponse=new E(e,t.resultId,t.data);const r=(0,y.h)(t,i,this._model.getLanguageIdentifier());if(n.length>0){for(const e of n)for(const t of r)for(const i of e.changes)t.applyEdit(i.range,i.text);this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule()}this._model.setSemanticTokens(r,!0)}else this._model.setSemanticTokens(null,!0)}else this._model.setSemanticTokens(null,!0);else this._model.setSemanticTokens(null,!1)}_getSemanticColoringProvider(){const e=c.wT.ordered(this._model);return e.length>0?e[0]:null}}},88216:(e,t,i)=>{"use strict";i.d(t,{S:()=>n});const n=(0,i(72065).yh)("textModelService")},65072:(e,t,i)=>{"use strict";i.d(t,{$:()=>o,h:()=>a});var n=i(43775),r=i(43557),s=i(58409);class o{constructor(e,t,i){this._legend=e,this._themeService=t,this._logService=i,this._hashTable=new c}getMetadata(e,t,i){const s=this._hashTable.get(e,t,i.id);let o;if(s)o=s.metadata,this._logService.getLevel()===r.in.Trace&&this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${e} / ${t}: foreground ${n.NX.getForeground(o)}, fontStyle ${n.NX.getFontStyle(o).toString(2)}`);else{let s=this._legend.tokenTypes[e];const a=[];if(s){let e=t;for(let t=0;e>0&&t<this._legend.tokenModifiers.length;t++)1&e&&a.push(this._legend.tokenModifiers[t]),e>>=1;e>0&&this._logService.getLevel()===r.in.Trace&&(this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${t.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`),a.push("not-in-legend"));const n=this._themeService.getColorTheme().getTokenStyleMetadata(s,a,i.language);void 0===n?o=2147483647:(o=0,void 0!==n.italic&&(o|=1|(n.italic?1:0)<<11),void 0!==n.bold&&(o|=2|(n.bold?2:0)<<11),void 0!==n.underline&&(o|=4|(n.underline?4:0)<<11),n.foreground&&(o|=8|n.foreground<<14),0===o&&(o=2147483647))}else this._logService.getLevel()===r.in.Trace&&this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${e} for legend: ${JSON.stringify(this._legend.tokenTypes)}`),o=2147483647,s="not-in-legend";this._hashTable.add(e,t,i.id,o),this._logService.getLevel()===r.in.Trace&&this._logService.trace(`SemanticTokensProviderStyling ${e} (${s}) / ${t} (${a.join(" ")}): foreground ${n.NX.getForeground(o)}, fontStyle ${n.NX.getFontStyle(o).toString(2)}`)}return o}}function a(e,t,i){const n=e.data,r=e.data.length/5|0,o=Math.max(Math.ceil(r/1024),400),a=[];let l=0,c=1,d=0;for(;l<r;){const e=l;let h=Math.min(e+o,r);if(h<r){let t=h;for(;t-1>e&&0===n[5*t];)t--;if(t-1===e){let e=h;for(;e+1<r&&0===n[5*e];)e++;h=e}else h=t}let u=new Uint32Array(4*(h-e)),g=0,f=0;for(;l<h;){const e=5*l,r=n[e],s=n[e+1],o=c+r,a=0===r?d+s:s,h=n[e+2],p=n[e+3],m=n[e+4],_=t.getMetadata(p,m,i);2147483647!==_&&(0===f&&(f=o),u[g]=o-f,u[g+1]=a,u[g+2]=a+h,u[g+3]=_,g+=4),c=o,d=a,l++}g!==u.length&&(u=u.subarray(0,g));const p=new s.Wz(f,new s.OU(u));a.push(p)}return a}class l{constructor(e,t,i,n){this.tokenTypeIndex=e,this.tokenModifierSet=t,this.languageId=i,this.metadata=n,this.next=null}}class c{constructor(){this._elementsCount=0,this._currentLengthIndex=0,this._currentLength=c._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<c._SIZES.length?2/3*this._currentLength:0),this._elements=[],c._nullOutEntries(this._elements,this._currentLength)}static _nullOutEntries(e,t){for(let i=0;i<t;i++)e[i]=null}_hash2(e,t){return(e<<5)-e+t|0}_hashFunc(e,t,i){return this._hash2(this._hash2(e,t),i)%this._currentLength}get(e,t,i){const n=this._hashFunc(e,t,i);let r=this._elements[n];for(;r;){if(r.tokenTypeIndex===e&&r.tokenModifierSet===t&&r.languageId===i)return r;r=r.next}return null}add(e,t,i,n){if(this._elementsCount++,0!==this._growCount&&this._elementsCount>=this._growCount){const e=this._elements;this._currentLengthIndex++,this._currentLength=c._SIZES[this._currentLengthIndex],this._growCount=Math.round(this._currentLengthIndex+1<c._SIZES.length?2/3*this._currentLength:0),this._elements=[],c._nullOutEntries(this._elements,this._currentLength);for(const t of e){let e=t;for(;e;){const t=e.next;e.next=null,this._add(e),e=t}}}this._add(new l(e,t,i,n))}_add(e){const t=this._hashFunc(e.tokenTypeIndex,e.tokenModifierSet,e.languageId);e.next=this._elements[t],this._elements[t]=e}}c._SIZES=[3,7,13,31,61,127,251,509,1021,2039,4093,8191,16381,32749,65521,131071,262139,524287,1048573,2097143]},33187:(e,t,i)=>{"use strict";i.d(t,{V:()=>r,y:()=>s});var n=i(72065);const r=(0,n.yh)("textResourceConfigurationService"),s=(0,n.yh)("textResourcePropertiesService")},20913:(e,t,i)=>{"use strict";i.d(t,{Oe:()=>n,ug:()=>r,qq:()=>s,ld:()=>o,UX:()=>a,aq:()=>l,B8:()=>c,xi:()=>d,UL:()=>h});var n,r,s,o,a,l,c,d,h,u=i(63580);!function(e){e.noSelection=u.N("noSelection","No selection"),e.singleSelectionRange=u.N("singleSelectionRange","Line {0}, Column {1} ({2} selected)"),e.singleSelection=u.N("singleSelection","Line {0}, Column {1}"),e.multiSelectionRange=u.N("multiSelectionRange","{0} selections ({1} characters selected)"),e.multiSelection=u.N("multiSelection","{0} selections"),e.emergencyConfOn=u.N("emergencyConfOn","Now changing the setting `accessibilitySupport` to 'on'."),e.openingDocs=u.N("openingDocs","Now opening the Editor Accessibility documentation page."),e.readonlyDiffEditor=u.N("readonlyDiffEditor"," in a read-only pane of a diff editor."),e.editableDiffEditor=u.N("editableDiffEditor"," in a pane of a diff editor."),e.readonlyEditor=u.N("readonlyEditor"," in a read-only code editor"),e.editableEditor=u.N("editableEditor"," in a code editor"),e.changeConfigToOnMac=u.N("changeConfigToOnMac","To configure the editor to be optimized for usage with a Screen Reader press Command+E now."),e.changeConfigToOnWinLinux=u.N("changeConfigToOnWinLinux","To configure the editor to be optimized for usage with a Screen Reader press Control+E now."),e.auto_on=u.N("auto_on","The editor is configured to be optimized for usage with a Screen Reader."),e.auto_off=u.N("auto_off","The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time."),e.tabFocusModeOnMsg=u.N("tabFocusModeOnMsg","Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}."),e.tabFocusModeOnMsgNoKb=u.N("tabFocusModeOnMsgNoKb","Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding."),e.tabFocusModeOffMsg=u.N("tabFocusModeOffMsg","Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}."),e.tabFocusModeOffMsgNoKb=u.N("tabFocusModeOffMsgNoKb","Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding."),e.openDocMac=u.N("openDocMac","Press Command+H now to open a browser window with more information related to editor accessibility."),e.openDocWinLinux=u.N("openDocWinLinux","Press Control+H now to open a browser window with more information related to editor accessibility."),e.outroMsg=u.N("outroMsg","You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape."),e.showAccessibilityHelpAction=u.N("showAccessibilityHelpAction","Show Accessibility Help")}(n||(n={})),function(e){e.inspectTokensAction=u.N("inspectTokens","Developer: Inspect Tokens")}(r||(r={})),function(e){e.gotoLineActionLabel=u.N("gotoLineActionLabel","Go to Line/Column...")}(s||(s={})),function(e){e.helpQuickAccessActionLabel=u.N("helpQuickAccess","Show all Quick Access Providers")}(o||(o={})),function(e){e.quickCommandActionLabel=u.N("quickCommandActionLabel","Command Palette"),e.quickCommandHelp=u.N("quickCommandActionHelp","Show And Run Commands")}(a||(a={})),function(e){e.quickOutlineActionLabel=u.N("quickOutlineActionLabel","Go to Symbol..."),e.quickOutlineByCategoryActionLabel=u.N("quickOutlineByCategoryActionLabel","Go to Symbol by Category...")}(l||(l={})),function(e){e.editorViewAccessibleLabel=u.N("editorViewAccessibleLabel","Editor content"),e.accessibilityHelpMessage=u.N("accessibilityHelpMessage","Press Alt+F1 for Accessibility Options.")}(c||(c={})),function(e){e.toggleHighContrast=u.N("toggleHighContrast","Toggle High Contrast Theme")}(d||(d={})),function(e){e.bulkEditServiceSummary=u.N("bulkEditServiceSummary","Made {0} edits in {1} files")}(h||(h={}))},27869:(e,t,i)=>{"use strict";i.d(t,{Kh:()=>a,Mm:()=>l,n0:()=>g,fY:()=>f,tR:()=>m,Ym:()=>_,hw:()=>b,DD:()=>y,zk:()=>w,Yp:()=>C,TC:()=>S,Dl:()=>k,zw:()=>x,e_:()=>L,kp:()=>D,zu:()=>N,m9:()=>T,lK:()=>I,Re:()=>O,eS:()=>A});var n=i(63580),r=i(41264),s=i(73910),o=i(97781);const a=(0,s.P6)("editor.lineHighlightBackground",{dark:null,light:null,hc:null},n.N("lineHighlight","Background color for the highlight of line at the cursor position.")),l=(0,s.P6)("editor.lineHighlightBorder",{dark:"#282828",light:"#eeeeee",hc:"#f38518"},n.N("lineHighlightBorderBox","Background color for the border around the line at the cursor position.")),c=(0,s.P6)("editor.rangeHighlightBackground",{dark:"#ffffff0b",light:"#fdff0033",hc:null},n.N("rangeHighlight","Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations."),!0),d=(0,s.P6)("editor.rangeHighlightBorder",{dark:null,light:null,hc:s.xL},n.N("rangeHighlightBorder","Background color of the border around highlighted ranges."),!0),h=(0,s.P6)("editor.symbolHighlightBackground",{dark:s.MU,light:s.MU,hc:null},n.N("symbolHighlight","Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations."),!0),u=(0,s.P6)("editor.symbolHighlightBorder",{dark:null,light:null,hc:s.xL},n.N("symbolHighlightBorder","Background color of the border around highlighted symbols."),!0),g=(0,s.P6)("editorCursor.foreground",{dark:"#AEAFAD",light:r.Il.black,hc:r.Il.white},n.N("caret","Color of the editor cursor.")),f=(0,s.P6)("editorCursor.background",null,n.N("editorCursorBackground","The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.")),p=(0,s.P6)("editorWhitespace.foreground",{dark:"#e3e4e229",light:"#33333333",hc:"#e3e4e229"},n.N("editorWhitespaces","Color of whitespace characters in the editor.")),m=(0,s.P6)("editorIndentGuide.background",{dark:p,light:p,hc:p},n.N("editorIndentGuides","Color of the editor indentation guides.")),_=(0,s.P6)("editorIndentGuide.activeBackground",{dark:p,light:p,hc:p},n.N("editorActiveIndentGuide","Color of the active editor indentation guides.")),b=(0,s.P6)("editorLineNumber.foreground",{dark:"#858585",light:"#237893",hc:r.Il.white},n.N("editorLineNumbers","Color of editor line numbers.")),v=(0,s.P6)("editorActiveLineNumber.foreground",{dark:"#c6c6c6",light:"#0B216F",hc:s.xL},n.N("editorActiveLineNumber","Color of editor active line number"),!1,n.N("deprecatedEditorActiveLineNumber","Id is deprecated. Use 'editorLineNumber.activeForeground' instead.")),y=(0,s.P6)("editorLineNumber.activeForeground",{dark:v,light:v,hc:v},n.N("editorActiveLineNumber","Color of editor active line number")),w=(0,s.P6)("editorRuler.foreground",{dark:"#5A5A5A",light:r.Il.lightgrey,hc:r.Il.white},n.N("editorRuler","Color of the editor rulers.")),C=(0,s.P6)("editorCodeLens.foreground",{dark:"#999999",light:"#999999",hc:"#999999"},n.N("editorCodeLensForeground","Foreground color of editor CodeLens")),S=(0,s.P6)("editorBracketMatch.background",{dark:"#0064001a",light:"#0064001a",hc:"#0064001a"},n.N("editorBracketMatchBackground","Background color behind matching brackets")),k=(0,s.P6)("editorBracketMatch.border",{dark:"#888",light:"#B9B9B9",hc:s.lR},n.N("editorBracketMatchBorder","Color for matching brackets boxes")),x=(0,s.P6)("editorOverviewRuler.border",{dark:"#7f7f7f4d",light:"#7f7f7f4d",hc:"#7f7f7f4d"},n.N("editorOverviewRulerBorder","Color of the overview ruler border.")),L=(0,s.P6)("editorOverviewRuler.background",null,n.N("editorOverviewRulerBackground","Background color of the editor overview ruler. Only used when the minimap is enabled and placed on the right side of the editor.")),M=(0,s.P6)("editorGutter.background",{dark:s.cv,light:s.cv,hc:s.cv},n.N("editorGutter","Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.")),D=(0,s.P6)("editorUnnecessaryCode.border",{dark:null,light:null,hc:r.Il.fromHex("#fff").transparent(.8)},n.N("unnecessaryCodeBorder","Border color of unnecessary (unused) source code in the editor.")),N=(0,s.P6)("editorUnnecessaryCode.opacity",{dark:r.Il.fromHex("#000a"),light:r.Il.fromHex("#0007"),hc:null},n.N("unnecessaryCodeOpacity","Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the 'editorUnnecessaryCode.border' theme color to underline unnecessary code instead of fading it out.")),E=new r.Il(new r.VS(0,122,204,.6)),T=(0,s.P6)("editorOverviewRuler.rangeHighlightForeground",{dark:E,light:E,hc:E},n.N("overviewRulerRangeHighlight","Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations."),!0),I=(0,s.P6)("editorOverviewRuler.errorForeground",{dark:new r.Il(new r.VS(255,18,18,.7)),light:new r.Il(new r.VS(255,18,18,.7)),hc:new r.Il(new r.VS(255,50,50,1))},n.N("overviewRuleError","Overview ruler marker color for errors.")),O=(0,s.P6)("editorOverviewRuler.warningForeground",{dark:s.uo,light:s.uo,hc:s.pW},n.N("overviewRuleWarning","Overview ruler marker color for warnings.")),A=(0,s.P6)("editorOverviewRuler.infoForeground",{dark:s.c6,light:s.c6,hc:s.T8},n.N("overviewRuleInfo","Overview ruler marker color for infos."));(0,o.Ic)(((e,t)=>{const i=e.getColor(s.cv);i&&t.addRule(`.monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: ${i}; }`);const n=e.getColor(s.NO);n&&t.addRule(`.monaco-editor, .monaco-editor .inputarea.ime-input { color: ${n}; }`);const r=e.getColor(M);r&&t.addRule(`.monaco-editor .margin { background-color: ${r}; }`);const o=e.getColor(c);o&&t.addRule(`.monaco-editor .rangeHighlight { background-color: ${o}; }`);const a=e.getColor(d);a&&t.addRule(`.monaco-editor .rangeHighlight { border: 1px ${"hc"===e.type?"dotted":"solid"} ${a}; }`);const l=e.getColor(h);l&&t.addRule(`.monaco-editor .symbolHighlight { background-color: ${l}; }`);const g=e.getColor(u);g&&t.addRule(`.monaco-editor .symbolHighlight { border: 1px ${"hc"===e.type?"dotted":"solid"} ${g}; }`);const f=e.getColor(p);f&&(t.addRule(`.monaco-editor .mtkw { color: ${f} !important; }`),t.addRule(`.monaco-editor .mtkz { color: ${f} !important; }`))}))},92003:(e,t,i)=>{"use strict";i.d(t,{EY:()=>r,Tj:()=>s});class n{constructor(e,t,i){this.from=0|e,this.to=0|t,this.colorId=0|i}static compare(e,t){return e.colorId===t.colorId?e.from===t.from?e.to-t.to:e.from-t.from:e.colorId-t.colorId}}class r{constructor(e,t,i){this.startLineNumber=e,this.endLineNumber=t,this.color=i,this._colorZone=null}static compare(e,t){return e.color===t.color?e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber:e.color<t.color?-1:1}setColorZone(e){this._colorZone=e}getColorZones(){return this._colorZone}}class s{constructor(e){this._getVerticalOffsetForLine=e,this._zones=[],this._colorZonesInvalid=!1,this._lineHeight=0,this._domWidth=0,this._domHeight=0,this._outerHeight=0,this._pixelRatio=1,this._lastAssignedId=0,this._color2Id=Object.create(null),this._id2Color=[]}getId2Color(){return this._id2Color}setZones(e){this._zones=e,this._zones.sort(r.compare)}setLineHeight(e){return this._lineHeight!==e&&(this._lineHeight=e,this._colorZonesInvalid=!0,!0)}setPixelRatio(e){this._pixelRatio=e,this._colorZonesInvalid=!0}getDOMWidth(){return this._domWidth}getCanvasWidth(){return this._domWidth*this._pixelRatio}setDOMWidth(e){return this._domWidth!==e&&(this._domWidth=e,this._colorZonesInvalid=!0,!0)}getDOMHeight(){return this._domHeight}getCanvasHeight(){return this._domHeight*this._pixelRatio}setDOMHeight(e){return this._domHeight!==e&&(this._domHeight=e,this._colorZonesInvalid=!0,!0)}getOuterHeight(){return this._outerHeight}setOuterHeight(e){return this._outerHeight!==e&&(this._outerHeight=e,this._colorZonesInvalid=!0,!0)}resolveColorZones(){const e=this._colorZonesInvalid,t=Math.floor(this._lineHeight),i=Math.floor(this.getCanvasHeight()),r=i/Math.floor(this._outerHeight),s=Math.floor(4*this._pixelRatio/2);let o=[];for(let a=0,l=this._zones.length;a<l;a++){const l=this._zones[a];if(!e){const e=l.getColorZones();if(e){o.push(e);continue}}const c=Math.floor(r*this._getVerticalOffsetForLine(l.startLineNumber)),d=Math.floor(r*(this._getVerticalOffsetForLine(l.endLineNumber)+t));let h=Math.floor((c+d)/2),u=d-h;u<s&&(u=s),h-u<0&&(h=u),h+u>i&&(h=i-u);const g=l.color;let f=this._color2Id[g];f||(f=++this._lastAssignedId,this._color2Id[g]=f,this._id2Color[f]=g);const p=new n(h-u,h+u,f);l.setColorZone(p),o.push(p)}return this._colorZonesInvalid=!1,o.sort(n.compare),o}}},92550:(e,t,i)=>{"use strict";i.d(t,{Kp:()=>r,k:()=>a});var n=i(97295);class r{constructor(e,t,i,n){this.startColumn=e,this.endColumn=t,this.className=i,this.type=n}static _equals(e,t){return e.startColumn===t.startColumn&&e.endColumn===t.endColumn&&e.className===t.className&&e.type===t.type}static equalsArr(e,t){const i=e.length;if(i!==t.length)return!1;for(let n=0;n<i;n++)if(!r._equals(e[n],t[n]))return!1;return!0}static filter(e,t,i,n){if(0===e.length)return[];let s=[],o=0;for(let a=0,l=e.length;a<l;a++){const l=e[a],c=l.range;if(c.endLineNumber<t||c.startLineNumber>t)continue;if(c.isEmpty()&&(0===l.type||3===l.type))continue;const d=c.startLineNumber===t?c.startColumn:i,h=c.endLineNumber===t?c.endColumn:n;s[o++]=new r(d,h,l.inlineClassName,l.type)}return s}static _typeCompare(e,t){const i=[2,0,1,3];return i[e]-i[t]}static compare(e,t){if(e.startColumn===t.startColumn){if(e.endColumn===t.endColumn){const i=r._typeCompare(e.type,t.type);return 0===i?e.className<t.className?-1:e.className>t.className?1:0:i}return e.endColumn-t.endColumn}return e.startColumn-t.startColumn}}class s{constructor(e,t,i,n){this.startOffset=e,this.endOffset=t,this.className=i,this.metadata=n}}class o{constructor(){this.stopOffsets=[],this.classNames=[],this.metadata=[],this.count=0}static _metadata(e){let t=0;for(let i=0,n=e.length;i<n;i++)t|=e[i];return t}consumeLowerThan(e,t,i){for(;this.count>0&&this.stopOffsets[0]<e;){let e=0;for(;e+1<this.count&&this.stopOffsets[e]===this.stopOffsets[e+1];)e++;i.push(new s(t,this.stopOffsets[e],this.classNames.join(" "),o._metadata(this.metadata))),t=this.stopOffsets[e]+1,this.stopOffsets.splice(0,e+1),this.classNames.splice(0,e+1),this.metadata.splice(0,e+1),this.count-=e+1}return this.count>0&&t<e&&(i.push(new s(t,e-1,this.classNames.join(" "),o._metadata(this.metadata))),t=e),t}insert(e,t,i){if(0===this.count||this.stopOffsets[this.count-1]<=e)this.stopOffsets.push(e),this.classNames.push(t),this.metadata.push(i);else for(let n=0;n<this.count;n++)if(this.stopOffsets[n]>=e){this.stopOffsets.splice(n,0,e),this.classNames.splice(n,0,t),this.metadata.splice(n,0,i);break}this.count++}}class a{static normalize(e,t){if(0===t.length)return[];let i=[];const r=new o;let s=0;for(let o=0,a=t.length;o<a;o++){const a=t[o];let l=a.startColumn,c=a.endColumn;const d=a.className,h=1===a.type?2:2===a.type?4:0;if(l>1){const t=e.charCodeAt(l-2);n.ZG(t)&&l--}if(c>1){const t=e.charCodeAt(c-2);n.ZG(t)&&c--}const u=l-1,g=c-2;s=r.consumeLowerThan(u,s,i),0===r.count&&(s=u),r.insert(g,d,h)}return r.consumeLowerThan(1073741824,s,i),i}}},77736:(e,t,i)=>{"use strict";i.d(t,{zG:()=>a,IJ:()=>l,fH:()=>c,d1:()=>h,tF:()=>g});var n=i(97295),r=i(50072),s=i(92550);class o{constructor(e,t,i){this.endIndex=e,this.type=t,this.metadata=i}isWhitespace(){return!!(1&this.metadata)}}class a{constructor(e,t){this.startOffset=e,this.endOffset=t}equals(e){return this.startOffset===e.startOffset&&this.endOffset===e.endOffset}}class l{constructor(e,t,i,n,r,s,o,a,l,c,d,h,u,g,f,p,m,_,b){this.useMonospaceOptimizations=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.continuesWithWrappedLine=n,this.isBasicASCII=r,this.containsRTL=s,this.fauxIndentLength=o,this.lineTokens=a,this.lineDecorations=l,this.tabSize=c,this.startVisibleColumn=d,this.spaceWidth=h,this.stopRenderingLineAfter=f,this.renderWhitespace="all"===p?4:"boundary"===p?1:"selection"===p?2:"trailing"===p?3:0,this.renderControlCharacters=m,this.fontLigatures=_,this.selectionsOnLine=b&&b.sort(((e,t)=>e.startOffset<t.startOffset?-1:1)),Math.abs(g-h)<Math.abs(u-h)?(this.renderSpaceWidth=g,this.renderSpaceCharCode=11825):(this.renderSpaceWidth=u,this.renderSpaceCharCode=183)}sameSelection(e){if(null===this.selectionsOnLine)return null===e;if(null===e)return!1;if(e.length!==this.selectionsOnLine.length)return!1;for(let t=0;t<this.selectionsOnLine.length;t++)if(!this.selectionsOnLine[t].equals(e[t]))return!1;return!0}equals(e){return this.useMonospaceOptimizations===e.useMonospaceOptimizations&&this.canUseHalfwidthRightwardsArrow===e.canUseHalfwidthRightwardsArrow&&this.lineContent===e.lineContent&&this.continuesWithWrappedLine===e.continuesWithWrappedLine&&this.isBasicASCII===e.isBasicASCII&&this.containsRTL===e.containsRTL&&this.fauxIndentLength===e.fauxIndentLength&&this.tabSize===e.tabSize&&this.startVisibleColumn===e.startVisibleColumn&&this.spaceWidth===e.spaceWidth&&this.renderSpaceWidth===e.renderSpaceWidth&&this.renderSpaceCharCode===e.renderSpaceCharCode&&this.stopRenderingLineAfter===e.stopRenderingLineAfter&&this.renderWhitespace===e.renderWhitespace&&this.renderControlCharacters===e.renderControlCharacters&&this.fontLigatures===e.fontLigatures&&s.Kp.equalsArr(this.lineDecorations,e.lineDecorations)&&this.lineTokens.equals(e.lineTokens)&&this.sameSelection(e.selectionsOnLine)}}class c{constructor(e,t){this.length=e,this._data=new Uint32Array(this.length),this._absoluteOffsets=new Uint32Array(this.length)}static getPartIndex(e){return(4294901760&e)>>>16}static getCharIndex(e){return(65535&e)>>>0}setPartData(e,t,i,n){let r=(t<<16|i<<0)>>>0;this._data[e]=r,this._absoluteOffsets[e]=n+i}getAbsoluteOffsets(){return this._absoluteOffsets}charOffsetToPartData(e){return 0===this.length?0:e<0?this._data[0]:e>=this.length?this._data[this.length-1]:this._data[e]}partDataToCharOffset(e,t,i){if(0===this.length)return 0;let n=(e<<16|i<<0)>>>0,r=0,s=this.length-1;for(;r+1<s;){let e=r+s>>>1,t=this._data[e];if(t===n)return e;t>n?s=e:r=e}if(r===s)return r;let o=this._data[r],a=this._data[s];if(o===n)return r;if(a===n)return s;let l,d=c.getPartIndex(o),h=c.getCharIndex(o);return l=d!==c.getPartIndex(a)?t:c.getCharIndex(a),i-h<=l-i?r:s}}class d{constructor(e,t,i){this.characterMapping=e,this.containsRTL=t,this.containsForeignElements=i}}function h(e,t){if(0===e.lineContent.length){let i=0,n="<span><span></span></span>";if(e.lineDecorations.length>0){const t=[],r=[];for(let n=0,s=e.lineDecorations.length;n<s;n++){const s=e.lineDecorations[n];1===s.type&&(t.push(e.lineDecorations[n].className),i|=1),2===s.type&&(r.push(e.lineDecorations[n].className),i|=2)}0!==i&&(n=`<span>${t.length>0?`<span class="${t.join(" ")}"></span>`:""}${r.length>0?`<span class="${r.join(" ")}"></span>`:""}</span>`)}return t.appendASCIIString(n),new d(new c(0,0),!1,i)}return function(e,t){const i=e.fontIsMonospace,r=e.canUseHalfwidthRightwardsArrow,s=e.containsForeignElements,o=e.lineContent,a=e.len,l=e.isOverflowing,h=e.parts,u=e.fauxIndentLength,g=e.tabSize,f=e.startVisibleColumn,p=e.containsRTL,m=e.spaceWidth,_=e.renderSpaceCharCode,b=e.renderWhitespace,v=e.renderControlCharacters,y=new c(a+1,h.length);let w=0,C=f,S=0,k=0,x=0,L=0;p?t.appendASCIIString('<span dir="ltr">'):t.appendASCIIString("<span>");for(let e=0,a=h.length;e<a;e++){L+=x;const a=h[e],l=a.endIndex,c=a.type,d=0!==b&&a.isWhitespace(),f=d&&!i&&("mtkw"===c||!s),p=w===l&&4===a.metadata;if(S=0,t.appendASCIIString('<span class="'),t.appendASCIIString(f?"mtkz":c),t.appendASCII(34),d){let i=0;{let e=w,t=C;for(;e<l;e++){const n=0|(9===o.charCodeAt(e)?g-t%g:1);i+=n,e>=u&&(t+=n)}}for(f&&(t.appendASCIIString(' style="width:'),t.appendASCIIString(String(m*i)),t.appendASCIIString('px"')),t.appendASCII(62);w<l;w++){let i;if(y.setPartData(w,e-k,S,L),k=0,9===o.charCodeAt(w)){i=g-C%g|0,!r||i>1?t.write1(8594):t.write1(65515);for(let e=2;e<=i;e++)t.write1(160)}else i=1,t.write1(_);S+=i,w>=u&&(C+=i)}x=i}else{let i=0;for(t.appendASCII(62);w<l;w++){y.setPartData(w,e-k,S,L),k=0;const r=o.charCodeAt(w);let s=1,a=1;switch(r){case 9:s=g-C%g,a=s;for(let e=1;e<=s;e++)t.write1(160);break;case 32:t.write1(160);break;case 60:t.appendASCIIString("<");break;case 62:t.appendASCIIString(">");break;case 38:t.appendASCIIString("&");break;case 0:t.appendASCIIString("�");break;case 65279:case 8232:case 8233:case 133:t.write1(65533);break;default:n.K7(r)&&a++,v&&r<32?t.write1(9216+r):t.write1(r)}S+=s,i+=s,w>=u&&(C+=a)}x=i}p?k++:k=0,t.appendASCIIString("</span>")}return y.setPartData(a,h.length-1,S,L),l&&t.appendASCIIString("<span>…</span>"),t.appendASCIIString("</span>"),new d(y,p,s)}(function(e){const t=e.lineContent;let i,r;-1!==e.stopRenderingLineAfter&&e.stopRenderingLineAfter<t.length?(i=!0,r=e.stopRenderingLineAfter):(i=!1,r=t.length);let a=function(e,t,i){let n=[],r=0;t>0&&(n[r++]=new o(t,"",0));for(let s=0,a=e.getCount();s<a;s++){const a=e.getEndOffset(s);if(a<=t)continue;const l=e.getClassName(s);if(a>=i){n[r++]=new o(i,l,0);break}n[r++]=new o(a,l,0)}return n}(e.lineTokens,e.fauxIndentLength,r);(4===e.renderWhitespace||1===e.renderWhitespace||2===e.renderWhitespace&&e.selectionsOnLine||3===e.renderWhitespace)&&(a=function(e,t,i,r){const s=e.continuesWithWrappedLine,a=e.fauxIndentLength,l=e.tabSize,c=e.startVisibleColumn,d=e.useMonospaceOptimizations,h=e.selectionsOnLine,u=1===e.renderWhitespace,g=3===e.renderWhitespace,f=e.renderSpaceWidth!==e.spaceWidth;let p=[],m=0,_=0,b=r[_].type,v=r[_].endIndex;const y=r.length;let w,C=!1,S=n.LC(t);-1===S?(C=!0,S=i,w=i):w=n.ow(t);let k=!1,x=0,L=h&&h[x],M=c%l;for(let e=a;e<i;e++){const s=t.charCodeAt(e);let c;if(L&&e>=L.endOffset&&(x++,L=h&&h[x]),e<S||e>w)c=!0;else if(9===s)c=!0;else if(32===s)if(u)if(k)c=!0;else{const n=e+1<i?t.charCodeAt(e+1):0;c=32===n||9===n}else c=!0;else c=!1;if(c&&h&&(c=!!L&&L.startOffset<=e&&L.endOffset>e),c&&g&&(c=C||e>w),k){if(!c||!d&&M>=l){if(f)for(let t=(m>0?p[m-1].endIndex:a)+1;t<=e;t++)p[m++]=new o(t,"mtkw",1);else p[m++]=new o(e,"mtkw",1);M%=l}}else(e===v||c&&e>a)&&(p[m++]=new o(e,b,0),M%=l);for(9===s?M=l:n.K7(s)?M+=2:M++,k=c;e===v;)_++,_<y&&(b=r[_].type,v=r[_].endIndex)}let D=!1;if(k)if(s&&u){let e=i>0?t.charCodeAt(i-1):0,n=i>1?t.charCodeAt(i-2):0;32===e&&32!==n&&9!==n||(D=!0)}else D=!0;if(D)if(f)for(let e=(m>0?p[m-1].endIndex:a)+1;e<=i;e++)p[m++]=new o(e,"mtkw",1);else p[m++]=new o(i,"mtkw",1);else p[m++]=new o(i,b,0);return p}(e,t,r,a));let l=0;if(e.lineDecorations.length>0){for(let t=0,i=e.lineDecorations.length;t<i;t++){const i=e.lineDecorations[t];3===i.type||1===i.type?l|=1:2===i.type&&(l|=2)}a=function(e,t,i,n){n.sort(s.Kp.compare);const r=s.k.normalize(e,n),a=r.length;let l=0,c=[],d=0,h=0;for(let e=0,t=i.length;e<t;e++){const t=i[e],n=t.endIndex,s=t.type,u=t.metadata;for(;l<a&&r[l].startOffset<n;){const e=r[l];if(e.startOffset>h&&(h=e.startOffset,c[d++]=new o(h,s,u)),!(e.endOffset+1<=n)){h=n,c[d++]=new o(h,s+" "+e.className,u|e.metadata);break}h=e.endOffset+1,c[d++]=new o(h,s+" "+e.className,u|e.metadata),l++}n>h&&(h=n,c[d++]=new o(h,s,u))}const u=i[i.length-1].endIndex;if(l<a&&r[l].startOffset===u){let e=[],t=0;for(;l<a&&r[l].startOffset===u;)e.push(r[l].className),t|=r[l].metadata,l++;c[d++]=new o(h,e.join(" "),t)}return c}(t,0,a,e.lineDecorations)}return e.containsRTL||(a=function(e,t,i){let n=0,r=[],s=0;if(i)for(let i=0,a=t.length;i<a;i++){const a=t[i],l=a.endIndex;if(n+50<l){const t=a.type,i=a.metadata;let c=-1,d=n;for(let a=n;a<l;a++)32===e.charCodeAt(a)&&(c=a),-1!==c&&a-d>=50&&(r[s++]=new o(c+1,t,i),d=c+1,c=-1);d!==l&&(r[s++]=new o(l,t,i))}else r[s++]=a;n=l}else for(let e=0,i=t.length;e<i;e++){const i=t[e],a=i.endIndex;let l=a-n;if(l>50){const e=i.type,t=i.metadata,c=Math.ceil(l/50);for(let i=1;i<c;i++){let a=n+50*i;r[s++]=new o(a,e,t)}r[s++]=new o(a,e,t)}else r[s++]=i;n=a}return r}(t,a,!e.isBasicASCII||e.fontLigatures)),new f(e.useMonospaceOptimizations,e.canUseHalfwidthRightwardsArrow,t,r,i,a,l,e.fauxIndentLength,e.tabSize,e.startVisibleColumn,e.containsRTL,e.spaceWidth,e.renderSpaceCharCode,e.renderWhitespace,e.renderControlCharacters)}(e),t)}class u{constructor(e,t,i,n){this.characterMapping=e,this.html=t,this.containsRTL=i,this.containsForeignElements=n}}function g(e){let t=(0,r.l$)(1e4),i=h(e,t);return new u(i.characterMapping,t.build(),i.containsRTL,i.containsForeignElements)}class f{constructor(e,t,i,n,r,s,o,a,l,c,d,h,u,g,f){this.fontIsMonospace=e,this.canUseHalfwidthRightwardsArrow=t,this.lineContent=i,this.len=n,this.isOverflowing=r,this.parts=s,this.containsForeignElements=o,this.fauxIndentLength=a,this.tabSize=l,this.startVisibleColumn=c,this.containsRTL=d,this.spaceWidth=h,this.renderSpaceCharCode=u,this.renderWhitespace=g,this.renderControlCharacters=f}}},3544:(e,t,i)=>{"use strict";i.d(t,{T:()=>r,o:()=>s});var n=i(85427);class r{constructor(e,t){this.index=e,this.remainder=t}}class s{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=(0,n.A)(e);const i=this.values,r=this.prefixSum,s=t.length;return 0!==s&&(this.values=new Uint32Array(i.length+s),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e),e+s),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}changeValue(e,t){return e=(0,n.A)(e),t=(0,n.A)(t),this.values[e]!==t&&(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}removeValues(e,t){e=(0,n.A)(e),t=(0,n.A)(t);const i=this.values,r=this.prefixSum;if(e>=i.length)return!1;let s=i.length-e;return t>=s&&(t=s),0!==t&&(this.values=new Uint32Array(i.length-t),this.values.set(i.subarray(0,e),0),this.values.set(i.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalValue(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)}getAccumulatedValue(e){return e<0?0:(e=(0,n.A)(e),this._getAccumulatedValue(e))}_getAccumulatedValue(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let i=t;i<=e;i++)this.prefixSum[i]=this.prefixSum[i-1]+this.values[i];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalValue();let t=0,i=this.values.length-1,n=0,s=0,o=0;for(;t<=i;)if(n=t+(i-t)/2|0,s=this.prefixSum[n],o=s-this.values[n],e<o)i=n-1;else{if(!(e>=s))break;t=n+1}return new r(n,e-o)}}},13824:(e,t,i)=>{"use strict";i.d(t,{l_:()=>r,ud:()=>s,IP:()=>o,wA:()=>a,$t:()=>l,$l:()=>c});var n=i(97295);class r{constructor(e,t,i,n){this.top=0|e,this.left=0|t,this.width=0|i,this.height=0|n}}class s{constructor(e,t){this.tabSize=e,this.data=t}}class o{constructor(e,t,i,n,r,s){this.content=e,this.continuesWithWrappedLine=t,this.minColumn=i,this.maxColumn=n,this.startVisibleColumn=r,this.tokens=s}}class a{constructor(e,t,i,n,r,s,o,l,c,d){this.minColumn=e,this.maxColumn=t,this.content=i,this.continuesWithWrappedLine=n,this.isBasicASCII=a.isBasicASCII(i,s),this.containsRTL=a.containsRTL(i,this.isBasicASCII,r),this.tokens=o,this.inlineDecorations=l,this.tabSize=c,this.startVisibleColumn=d}static isBasicASCII(e,t){return!t||n.$i(e)}static containsRTL(e,t,i){return!(t||!i)&&n.Ut(e)}}class l{constructor(e,t,i){this.range=e,this.inlineClassName=t,this.type=i}}class c{constructor(e,t){this.range=e,this.options=t}}},17355:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SelectionAnchorSet:()=>u});var n=i(16830),r=i(63580),s=i(29102),o=i(3860),a=i(22258),l=i(38819),c=i(59365),d=i(85152),h=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const u=new l.uy("selectionAnchorSet",!1);let g=class e{constructor(e,t){this.editor=e,this.selectionAnchorSetContextKey=u.bindTo(t),this.modelChangeListener=e.onDidChangeModel((()=>this.selectionAnchorSetContextKey.reset()))}static get(t){return t.getContribution(e.ID)}setSelectionAnchor(){if(this.editor.hasModel()){const e=this.editor.getPosition(),t=this.decorationId?[this.decorationId]:[],i=this.editor.deltaDecorations(t,[{range:o.Y.fromPositions(e,e),options:{stickiness:1,hoverMessage:(new c.W5).appendText((0,r.N)("selectionAnchor","Selection Anchor")),className:"selection-anchor"}}]);this.decorationId=i[0],this.selectionAnchorSetContextKey.set(!!this.decorationId),(0,d.Z9)((0,r.N)("anchorSet","Anchor set at {0}:{1}",e.lineNumber,e.column))}}goToSelectionAnchor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);e&&this.editor.setPosition(e.getStartPosition())}}selectFromAnchorToCursor(){if(this.editor.hasModel()&&this.decorationId){const e=this.editor.getModel().getDecorationRange(this.decorationId);if(e){const t=this.editor.getPosition();this.editor.setSelection(o.Y.fromPositions(e.getStartPosition(),t)),this.cancelSelectionAnchor()}}}cancelSelectionAnchor(){this.decorationId&&(this.editor.deltaDecorations([this.decorationId],[]),this.decorationId=void 0,this.selectionAnchorSetContextKey.set(!1))}dispose(){this.cancelSelectionAnchor(),this.modelChangeListener.dispose()}};var f,p;g.ID="editor.contrib.selectionAnchorController",g=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(f=1,p=l.i6,function(e,t){p(e,t,f)})],g);class m extends n.R6{constructor(){super({id:"editor.action.setSelectionAnchor",label:(0,r.N)("setSelectionAnchor","Set Selection Anchor"),alias:"Set Selection Anchor",precondition:void 0,kbOpts:{kbExpr:s.u.editorTextFocus,primary:(0,a.gx)(2089,2080),weight:100}})}run(e,t){return h(this,void 0,void 0,(function*(){g.get(t).setSelectionAnchor()}))}}class _ extends n.R6{constructor(){super({id:"editor.action.goToSelectionAnchor",label:(0,r.N)("goToSelectionAnchor","Go to Selection Anchor"),alias:"Go to Selection Anchor",precondition:u})}run(e,t){return h(this,void 0,void 0,(function*(){g.get(t).goToSelectionAnchor()}))}}class b extends n.R6{constructor(){super({id:"editor.action.selectFromAnchorToCursor",label:(0,r.N)("selectFromAnchorToCursor","Select from Anchor to Cursor"),alias:"Select from Anchor to Cursor",precondition:u,kbOpts:{kbExpr:s.u.editorTextFocus,primary:(0,a.gx)(2089,2089),weight:100}})}run(e,t){return h(this,void 0,void 0,(function*(){g.get(t).selectFromAnchorToCursor()}))}}class v extends n.R6{constructor(){super({id:"editor.action.cancelSelectionAnchor",label:(0,r.N)("cancelSelectionAnchor","Cancel Selection Anchor"),alias:"Cancel Selection Anchor",precondition:u,kbOpts:{kbExpr:s.u.editorTextFocus,primary:9,weight:100}})}run(e,t){return h(this,void 0,void 0,(function*(){g.get(t).cancelSelectionAnchor()}))}}(0,n._K)(g.ID,g),(0,n.Qr)(m),(0,n.Qr)(_),(0,n.Qr)(b),(0,n.Qr)(v)},17084:(e,t,i)=>{"use strict";i.r(t),i.d(t,{BracketMatchingController:()=>w});var n=i(63580),r=i(15393),s=i(5976),o=i(16830),a=i(50187),l=i(24314),c=i(3860),d=i(29102),h=i(84973),u=i(3411),g=i(27869),f=i(73910),p=i(97781),m=i(84144);const _=(0,f.P6)("editorOverviewRuler.bracketMatchForeground",{dark:"#A0A0A0",light:"#A0A0A0",hc:"#A0A0A0"},n.N("overviewRulerBracketMatchForeground","Overview ruler marker color for matching brackets."));class b extends o.R6{constructor(){super({id:"editor.action.jumpToBracket",label:n.N("smartSelect.jumpBracket","Go to Bracket"),alias:"Go to Bracket",precondition:void 0,kbOpts:{kbExpr:d.u.editorTextFocus,primary:3160,weight:100}})}run(e,t){let i=w.get(t);i&&i.jumpToBracket()}}class v extends o.R6{constructor(){super({id:"editor.action.selectToBracket",label:n.N("smartSelect.selectToBracket","Select to Bracket"),alias:"Select to Bracket",precondition:void 0,description:{description:"Select to Bracket",args:[{name:"args",schema:{type:"object",properties:{selectBrackets:{type:"boolean",default:!0}}}}]}})}run(e,t,i){const n=w.get(t);if(!n)return;let r=!0;i&&!1===i.selectBrackets&&(r=!1),n.selectToBracket(r)}}class y{constructor(e,t,i){this.position=e,this.brackets=t,this.options=i}}class w extends s.JT{constructor(e){super(),this._editor=e,this._lastBracketsData=[],this._lastVersionId=0,this._decorations=[],this._updateBracketsSoon=this._register(new r.pY((()=>this._updateBrackets()),50)),this._matchBrackets=this._editor.getOption(55),this._updateBracketsSoon.schedule(),this._register(e.onDidChangeCursorPosition((e=>{"never"!==this._matchBrackets&&this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeModelContent((e=>{this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeModel((e=>{this._lastBracketsData=[],this._decorations=[],this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeModelLanguageConfiguration((e=>{this._lastBracketsData=[],this._updateBracketsSoon.schedule()}))),this._register(e.onDidChangeConfiguration((e=>{e.hasChanged(55)&&(this._matchBrackets=this._editor.getOption(55),this._decorations=this._editor.deltaDecorations(this._decorations,[]),this._lastBracketsData=[],this._lastVersionId=0,this._updateBracketsSoon.schedule())})))}static get(e){return e.getContribution(w.ID)}jumpToBracket(){if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getSelections().map((t=>{const i=t.getStartPosition(),n=e.matchBracket(i);let r=null;if(n)n[0].containsPosition(i)?r=n[1].getStartPosition():n[1].containsPosition(i)&&(r=n[0].getStartPosition());else{const t=e.findEnclosingBrackets(i);if(t)r=t[0].getStartPosition();else{const t=e.findNextBracket(i);t&&t.range&&(r=t.range.getStartPosition())}}return r?new c.Y(r.lineNumber,r.column,r.lineNumber,r.column):new c.Y(i.lineNumber,i.column,i.lineNumber,i.column)}));this._editor.setSelections(t),this._editor.revealRange(t[0])}selectToBracket(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=[];this._editor.getSelections().forEach((n=>{const r=n.getStartPosition();let s=t.matchBracket(r);if(!s&&(s=t.findEnclosingBrackets(r),!s)){const e=t.findNextBracket(r);e&&e.range&&(s=t.matchBracket(e.range.getStartPosition()))}let o=null,a=null;if(s){s.sort(l.e.compareRangesUsingStarts);const[t,i]=s;o=e?t.getStartPosition():t.getEndPosition(),a=e?i.getEndPosition():i.getStartPosition()}o&&a&&i.push(new c.Y(o.lineNumber,o.column,a.lineNumber,a.column))})),i.length>0&&(this._editor.setSelections(i),this._editor.revealRange(i[0]))}_updateBrackets(){if("never"===this._matchBrackets)return;this._recomputeBrackets();let e=[],t=0;for(const i of this._lastBracketsData){let n=i.brackets;n&&(e[t++]={range:n[0],options:i.options},e[t++]={range:n[1],options:i.options})}this._decorations=this._editor.deltaDecorations(this._decorations,e)}_recomputeBrackets(){if(!this._editor.hasModel())return this._lastBracketsData=[],void(this._lastVersionId=0);const e=this._editor.getSelections();if(e.length>100)return this._lastBracketsData=[],void(this._lastVersionId=0);const t=this._editor.getModel(),i=t.getVersionId();let n=[];this._lastVersionId===i&&(n=this._lastBracketsData);let r=[],s=0;for(let t=0,i=e.length;t<i;t++){let i=e[t];i.isEmpty()&&(r[s++]=i.getStartPosition())}r.length>1&&r.sort(a.L.compare);let o=[],l=0,c=0,d=n.length;for(let e=0,i=r.length;e<i;e++){let i=r[e];for(;c<d&&n[c].position.isBefore(i);)c++;if(c<d&&n[c].position.equals(i))o[l++]=n[c];else{let e=t.matchBracket(i),n=w._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;e||"always"!==this._matchBrackets||(e=t.findEnclosingBrackets(i,20),n=w._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER),o[l++]=new y(i,e,n)}}this._lastBracketsData=o,this._lastVersionId=i}}w.ID="editor.contrib.bracketMatchingController",w._DECORATION_OPTIONS_WITH_OVERVIEW_RULER=u.qx.register({stickiness:1,className:"bracket-match",overviewRuler:{color:(0,p.EN)(_),position:h.sh.Center}}),w._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER=u.qx.register({stickiness:1,className:"bracket-match"}),(0,o._K)(w.ID,w),(0,o.Qr)(v),(0,o.Qr)(b),(0,p.Ic)(((e,t)=>{const i=e.getColor(g.TC);i&&t.addRule(`.monaco-editor .bracket-match { background-color: ${i}; }`);const n=e.getColor(g.Dl);n&&t.addRule(`.monaco-editor .bracket-match { border: 1px solid ${n}; }`)})),m.BH.appendMenuItem(m.eH.MenubarGoMenu,{group:"5_infile_nav",command:{id:"editor.action.jumpToBracket",title:n.N({key:"miGoToBracket",comment:["&& denotes a mnemonic"]},"Go to &&Bracket")},order:2})},84594:(e,t,i)=>{"use strict";i.r(t);var n=i(63580),r=i(16830),s=i(29102),o=i(24314),a=i(3860);class l{constructor(e,t){this._selection=e,this._isMovingLeft=t}getEditOperations(e,t){if(this._selection.startLineNumber!==this._selection.endLineNumber||this._selection.isEmpty())return;const i=this._selection.startLineNumber,n=this._selection.startColumn,r=this._selection.endColumn;if((!this._isMovingLeft||1!==n)&&(this._isMovingLeft||r!==e.getLineMaxColumn(i)))if(this._isMovingLeft){const s=new o.e(i,n-1,i,n),a=e.getValueInRange(s);t.addEditOperation(s,null),t.addEditOperation(new o.e(i,r,i,r),a)}else{const s=new o.e(i,r,i,r+1),a=e.getValueInRange(s);t.addEditOperation(s,null),t.addEditOperation(new o.e(i,n,i,n),a)}}computeCursorState(e,t){return this._isMovingLeft?new a.Y(this._selection.startLineNumber,this._selection.startColumn-1,this._selection.endLineNumber,this._selection.endColumn-1):new a.Y(this._selection.startLineNumber,this._selection.startColumn+1,this._selection.endLineNumber,this._selection.endColumn+1)}}class c extends r.R6{constructor(e,t){super(t),this.left=e}run(e,t){if(!t.hasModel())return;let i=[],n=t.getSelections();for(const e of n)i.push(new l(e,this.left));t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}(0,r.Qr)(class extends c{constructor(){super(!0,{id:"editor.action.moveCarretLeftAction",label:n.N("caret.moveLeft","Move Selected Text Left"),alias:"Move Selected Text Left",precondition:s.u.writable})}}),(0,r.Qr)(class extends c{constructor(){super(!1,{id:"editor.action.moveCarretRightAction",label:n.N("caret.moveRight","Move Selected Text Right"),alias:"Move Selected Text Right",precondition:s.u.writable})}})},77847:(e,t,i)=>{"use strict";i.r(t);var n=i(63580),r=i(16830),s=i(61329),o=i(24314),a=i(29102),l=i(88784);class c extends r.R6{constructor(){super({id:"editor.action.transposeLetters",label:n.N("transposeLetters.label","Transpose Letters"),alias:"Transpose Letters",precondition:a.u.writable,kbOpts:{kbExpr:a.u.textInputFocus,primary:0,mac:{primary:306},weight:100}})}run(e,t){if(!t.hasModel())return;let i=t.getModel(),n=[],r=t.getSelections();for(let e of r){if(!e.isEmpty())continue;let t=e.startLineNumber,r=e.startColumn,a=i.getLineMaxColumn(t);if(1===t&&(1===r||2===r&&2===a))continue;let c=r===a?e.getPosition():l.o.rightPosition(i,e.getPosition().lineNumber,e.getPosition().column),d=l.o.leftPosition(i,c.lineNumber,c.column),h=l.o.leftPosition(i,d.lineNumber,d.column),u=i.getValueInRange(o.e.fromPositions(h,d)),g=i.getValueInRange(o.e.fromPositions(d,c)),f=o.e.fromPositions(h,c);n.push(new s.T4(f,g+u))}n.length>0&&(t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop())}}(0,r.Qr)(c)},62015:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CutAction:()=>b,CopyAction:()=>v,PasteAction:()=>y});var n=i(63580),r=i(16268),s=i(1432),o=i(35715),a=i(16830),l=i(11640),c=i(29102),d=i(84144),h=i(84972);const u="9_cutcopypaste",g=s.tY||document.queryCommandSupported("cut"),f=s.tY||document.queryCommandSupported("copy"),p=f&&!r.un,m=!r.vU||document.queryCommandSupported("paste");function _(e){return e.register(),e}const b=g?_(new a.AJ({id:"editor.action.clipboardCutAction",precondition:void 0,kbOpts:s.tY?{primary:2102,win:{primary:2102,secondary:[1044]},weight:100}:void 0,menuOpts:[{menuId:d.eH.MenubarEditMenu,group:"2_ccp",title:n.N({key:"miCut",comment:["&& denotes a mnemonic"]},"Cu&&t"),order:1},{menuId:d.eH.EditorContext,group:u,title:n.N("actions.clipboard.cutLabel","Cut"),when:c.u.writable,order:1},{menuId:d.eH.CommandPalette,group:"",title:n.N("actions.clipboard.cutLabel","Cut"),order:1}]})):void 0,v=f?_(new a.AJ({id:"editor.action.clipboardCopyAction",precondition:void 0,kbOpts:s.tY?{primary:2081,win:{primary:2081,secondary:[2067]},weight:100}:void 0,menuOpts:[{menuId:d.eH.MenubarEditMenu,group:"2_ccp",title:n.N({key:"miCopy",comment:["&& denotes a mnemonic"]},"&&Copy"),order:2},{menuId:d.eH.EditorContext,group:u,title:n.N("actions.clipboard.copyLabel","Copy"),order:2},{menuId:d.eH.CommandPalette,group:"",title:n.N("actions.clipboard.copyLabel","Copy"),order:1}]})):void 0,y=m?_(new a.AJ({id:"editor.action.clipboardPasteAction",precondition:void 0,kbOpts:s.tY?{primary:2100,win:{primary:2100,secondary:[1043]},linux:{primary:2100,secondary:[1043]},weight:100}:void 0,menuOpts:[{menuId:d.eH.MenubarEditMenu,group:"2_ccp",title:n.N({key:"miPaste",comment:["&& denotes a mnemonic"]},"&&Paste"),order:3},{menuId:d.eH.EditorContext,group:u,title:n.N("actions.clipboard.pasteLabel","Paste"),when:c.u.writable,order:3},{menuId:d.eH.CommandPalette,group:"",title:n.N("actions.clipboard.pasteLabel","Paste"),order:1}]})):void 0;class w extends a.R6{constructor(){super({id:"editor.action.clipboardCopyWithSyntaxHighlightingAction",label:n.N("actions.clipboard.copyWithSyntaxHighlightingLabel","Copy With Syntax Highlighting"),alias:"Copy With Syntax Highlighting",precondition:void 0,kbOpts:{kbExpr:c.u.textInputFocus,primary:0,weight:100}})}run(e,t){t.hasModel()&&(!t.getOption(26)&&t.getSelection().isEmpty()||(o.RA.forceCopyWithSyntaxHighlighting=!0,t.focus(),document.execCommand("copy"),o.RA.forceCopyWithSyntaxHighlighting=!1))}}function C(e,t){e&&(e.addImplementation(1e4,((e,i)=>{const n=e.get(l.$).getFocusedCodeEditor();if(n&&n.hasTextFocus()){const e=n.getOption(26),i=n.getSelection();return i&&i.isEmpty()&&!e||document.execCommand(t),!0}return!1})),e.addImplementation(0,((e,i)=>(document.execCommand(t),!0))))}C(b,"cut"),C(v,"copy"),y&&(y.addImplementation(1e4,((e,t)=>{const i=e.get(l.$),n=e.get(h.p),r=i.getFocusedCodeEditor();return!(!r||!r.hasTextFocus())&&!(!document.execCommand("paste")&&s.$L&&(a=void 0,c=void 0,d=void 0,u=function*(){const e=yield n.readText();if(""!==e){const t=o.Nl.INSTANCE.get(e);let i=!1,n=null,s=null;t&&(i=r.getOption(26)&&!!t.isFromEmptySelection,n=void 0!==t.multicursorText?t.multicursorText:null,s=t.mode),r.trigger("keyboard","paste",{text:e,pasteOnNewLine:i,multicursorText:n,mode:s})}},new(d||(d=Promise))((function(e,t){function i(e){try{r(u.next(e))}catch(e){t(e)}}function n(e){try{r(u.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof d?r:new d((function(e){e(r)}))).then(i,n)}r((u=u.apply(a,c||[])).next())})),0));var a,c,d,u})),y.addImplementation(0,((e,t)=>(document.execCommand("paste"),!0)))),p&&(0,a.Qr)(w)},31907:(e,t,i)=>{"use strict";i.d(t,{RB:()=>_,Bb:()=>b,MN:()=>v,uH:()=>y,TM:()=>w,aI:()=>k});var n=i(9488),r=i(71050),s=i(17301),o=i(5976),a=i(70666),l=i(39925),c=i(16830),d=i(24314),h=i(3860),u=i(43775),g=i(51200),f=i(89532),p=i(90535),m=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const _="editor.action.codeAction",b="editor.action.refactor",v="editor.action.sourceAction",y="editor.action.organizeImports",w="editor.action.fixAll";class C extends o.JT{constructor(e,t,i){super(),this.documentation=t,this._register(i),this.allActions=(0,n.qt)([...e],C.codeActionsComparator),this.validActions=this.allActions.filter((e=>!e.disabled))}static codeActionsComparator(e,t){return e.isPreferred&&!t.isPreferred?-1:!e.isPreferred&&t.isPreferred?1:(0,n.Of)(e.diagnostics)?(0,n.Of)(t.diagnostics)?e.diagnostics[0].message.localeCompare(t.diagnostics[0].message):-1:(0,n.Of)(t.diagnostics)?1:0}get hasAutoFix(){return this.validActions.some((e=>!!e.kind&&f.yN.QuickFix.contains(new f.yN(e.kind))&&!!e.isPreferred))}}const S={actions:[],documentation:void 0};function k(e,t,i,r,a){var c;const d=i.filter||{},h={only:null===(c=d.include)||void 0===c?void 0:c.value,trigger:i.type},g=new l.YQ(e,a),p=function(e,t){return u.H9.all(e).filter((e=>!e.providedCodeActionKinds||e.providedCodeActionKinds.some((e=>(0,f.EU)(t,new f.yN(e))))))}(e,d),_=new o.SL,b=p.map((i=>m(this,void 0,void 0,(function*(){try{r.report(i);const n=yield i.provideCodeActions(e,t,h,g.token);if(n&&_.add(n),g.token.isCancellationRequested)return S;const s=((null==n?void 0:n.actions)||[]).filter((e=>e&&(0,f.Yl)(d,e)));return{actions:s,documentation:function(e,t,i){if(!e.documentation)return;const n=e.documentation.map((e=>({kind:new f.yN(e.kind),command:e.command})));if(i){let e;for(const t of n)t.kind.contains(i)&&(e?e.kind.contains(t.kind)&&(e=t):e=t);if(e)return null==e?void 0:e.command}for(const e of t)if(e.kind)for(const t of n)if(t.kind.contains(new f.yN(e.kind)))return t.command}(i,s,d.include)}}catch(e){if((0,s.VV)(e))throw e;return(0,s.Cp)(e),S}})))),v=u.H9.onDidChange((()=>{const t=u.H9.all(e);(0,n.fS)(t,p)||g.cancel()}));return Promise.all(b).then((e=>{const t=(0,n.xH)(e.map((e=>e.actions))),i=(0,n.kX)(e.map((e=>e.documentation)));return new C(t,i,_)})).finally((()=>{v.dispose(),g.dispose()}))}(0,c._h)("_executeCodeActionProvider",(function(e,t){return m(this,void 0,void 0,(function*(){const{resource:i,rangeOrSelection:n,kind:o}=t;if(!(i instanceof a.o))throw(0,s.b1)();const l=e.get(g.q).getModel(i);if(!l)throw(0,s.b1)();const c=h.Y.isISelection(n)?h.Y.liftSelection(n):d.e.isIRange(n)?l.validateRange(n):void 0;if(!c)throw(0,s.b1)();const u=yield k(l,c,{type:2,filter:{includeSourceActions:!0,include:o&&o.value?new f.yN(o.value):void 0}},p.E.None,r.T.None);return setTimeout((()=>u.dispose()),100),u.validActions}))}))},23674:(e,t,i)=>{"use strict";i.d(t,{S5:()=>de,dW:()=>se,Hv:()=>ce,o$:()=>le,E7:()=>re,pY:()=>te,Eb:()=>oe,VQ:()=>ae});class n{constructor(e){this.executor=e,this._didRun=!1}getValue(){if(!this._didRun)try{this._value=this.executor()}catch(e){this._error=e}finally{this._didRun=!0}if(this._error)throw this._error;return this._value}get rawValue(){return this._value}}var r=i(5976),s=i(97295),o=i(16830),a=i(66007),l=i(29102),c=i(31907),d=i(17301),h=i(82276),u=i(72065),g=i(65321),f=i(74741),p=i(50187),m=i(43775),_=i(89532),b=i(5606),v=i(91847),y=function(e,t){return function(i,n){t(i,n,e)}};class w extends f.aU{constructor(e,t){super(e.command?e.command.id:e.title,e.title,void 0,!e.disabled,t),this.action=e}}let C=class extends r.JT{constructor(e,t,i,n){super(),this._editor=e,this._delegate=t,this._contextMenuService=i,this._visible=!1,this._showingActions=this._register(new r.XK),this._keybindingResolver=new S({getKeybindings:()=>n.getKeybindings()})}get isVisible(){return this._visible}show(e,t,i,n){return r=this,s=void 0,a=function*(){const r=n.includeDisabledActions?t.allActions:t.validActions;if(!r.length)return void(this._visible=!1);if(!this._editor.getDomNode())throw this._visible=!1,(0,d.F0)();this._visible=!0,this._showingActions.value=t;const s=this.getMenuActions(e,r,t.documentation),o=p.L.isIPosition(i)?this._toCoords(i):i||{x:0,y:0},a=this._keybindingResolver.getResolver();this._contextMenuService.showContextMenu({domForShadowRoot:this._editor.getDomNode(),getAnchor:()=>o,getActions:()=>s,onHide:()=>{this._visible=!1,this._editor.focus()},autoSelectFirstItem:!0,getKeyBinding:e=>e instanceof w?a(e.action):void 0})},new((o=void 0)||(o=Promise))((function(e,t){function i(e){try{l(a.next(e))}catch(e){t(e)}}function n(e){try{l(a.throw(e))}catch(e){t(e)}}function l(t){var r;t.done?e(t.value):(r=t.value,r instanceof o?r:new o((function(e){e(r)}))).then(i,n)}l((a=a.apply(r,s||[])).next())}));var r,s,o,a}getMenuActions(e,t,i){var n,r;const s=e=>new w(e,(()=>this._delegate.onSelectCodeAction(e))),o=t.map(s),a=[...i],l=this._editor.getModel();if(l&&o.length)for(const i of m.H9.all(l))i._getAdditionalMenuItems&&a.push(...i._getAdditionalMenuItems({trigger:e.type,only:null===(r=null===(n=e.filter)||void 0===n?void 0:n.include)||void 0===r?void 0:r.value},t));return a.length&&o.push(new f.Z0,...a.map((e=>s({title:e.title,command:e})))),o}_toCoords(e){if(!this._editor.hasModel())return{x:0,y:0};this._editor.revealPosition(e,1),this._editor.render();const t=this._editor.getScrolledVisiblePosition(e),i=(0,g.i)(this._editor.getDomNode());return{x:i.left+t.left,y:i.top+t.top+t.height}}};C=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([y(2,b.i),y(3,v.d)],C);class S{constructor(e){this._keybindingProvider=e}getResolver(){const e=new n((()=>this._keybindingProvider.getKeybindings().filter((e=>S.codeActionCommands.indexOf(e.command)>=0)).filter((e=>e.resolvedKeybinding)).map((e=>{let t=e.commandArgs;return e.command===c.uH?t={kind:_.yN.SourceOrganizeImports.value}:e.command===c.TM&&(t={kind:_.yN.SourceFixAll.value}),Object.assign({resolvedKeybinding:e.resolvedKeybinding},_.wZ.fromUser(t,{kind:_.yN.None,apply:"never"}))}))));return t=>{if(t.kind){const i=this.bestKeybindingForCodeAction(t,e.getValue());return null==i?void 0:i.resolvedKeybinding}}}bestKeybindingForCodeAction(e,t){if(!e.kind)return;const i=new _.yN(e.kind);return t.filter((e=>e.kind.contains(i))).filter((t=>!t.preferred||e.isPreferred)).reduceRight(((e,t)=>e?e.kind.contains(t.kind)?t:e:t),void 0)}}S.codeActionCommands=[c.Bb,c.RB,c.MN,c.uH,c.TM];var k,x=i(57974),L=i(4669),M=i(3411),D=i(63580),N=i(97781),E=i(73910),T=i(10553),I=i(73046);!function(e){e.Hidden={type:0},e.Showing=class{constructor(e,t,i,n){this.actions=e,this.trigger=t,this.editorPosition=i,this.widgetPosition=n,this.type=1}}}(k||(k={}));let O=class e extends r.JT{constructor(e,t,i,n){super(),this._editor=e,this._quickFixActionId=t,this._preferredFixActionId=i,this._keybindingService=n,this._onClick=this._register(new L.Q5),this.onClick=this._onClick.event,this._state=k.Hidden,this._domNode=document.createElement("div"),this._domNode.className=I.lA.lightBulb.classNames,this._editor.addContentWidget(this),this._register(this._editor.onDidChangeModelContent((e=>{const t=this._editor.getModel();(1!==this.state.type||!t||this.state.editorPosition.lineNumber>=t.getLineCount())&&this.hide()}))),T.o.ignoreTarget(this._domNode),this._register(g.Gw(this._domNode,(e=>{if(1!==this.state.type)return;this._editor.focus(),e.preventDefault();const{top:t,height:i}=g.i(this._domNode),n=this._editor.getOption(51);let r=Math.floor(n/3);null!==this.state.widgetPosition.position&&this.state.widgetPosition.position.lineNumber<this.state.editorPosition.lineNumber&&(r+=n),this._onClick.fire({x:e.posx,y:t+i+r,actions:this.state.actions,trigger:this.state.trigger})}))),this._register(g.nm(this._domNode,"mouseenter",(e=>{if(1!=(1&e.buttons))return;this.hide();const t=new x.Z;t.startMonitoring(e.target,e.buttons,x.e,(()=>{}),(()=>{t.dispose()}))}))),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(49)&&!this._editor.getOption(49).enabled&&this.hide()}))),this._updateLightBulbTitleAndIcon(),this._register(this._keybindingService.onDidUpdateKeybindings(this._updateLightBulbTitleAndIcon,this))}dispose(){super.dispose(),this._editor.removeContentWidget(this)}getId(){return"LightBulbWidget"}getDomNode(){return this._domNode}getPosition(){return 1===this._state.type?this._state.widgetPosition:null}update(t,i,n){if(t.validActions.length<=0)return this.hide();const r=this._editor.getOptions();if(!r.get(49).enabled)return this.hide();const s=this._editor.getModel();if(!s)return this.hide();const{lineNumber:o,column:a}=s.validatePosition(n),l=s.getOptions().tabSize,c=r.get(36),d=s.getLineContent(o),h=M.yO.computeIndentLevel(d,l),u=e=>e>2&&this._editor.getTopForLineNumber(e)===this._editor.getTopForLineNumber(e-1);let g=o;if(!(c.spaceWidth*h>22))if(o>1&&!u(o-1))g-=1;else if(u(o+1)){if(a*c.spaceWidth<22)return this.hide()}else g+=1;this.state=new k.Showing(t,i,n,{position:{lineNumber:g,column:1},preference:e._posPref}),this._editor.layoutContentWidget(this)}hide(){this.state=k.Hidden,this._editor.layoutContentWidget(this)}get state(){return this._state}set state(e){this._state=e,this._updateLightBulbTitleAndIcon()}_updateLightBulbTitleAndIcon(){if(1===this.state.type&&this.state.actions.hasAutoFix){g.GK(this._domNode,I.lA.lightBulb.classNames),g.PT(this._domNode,I.lA.lightbulbAutofix.classNames);const e=this._keybindingService.lookupKeybinding(this._preferredFixActionId);if(e)return void(this.title=D.N("prefferedQuickFixWithKb","Show Fixes. Preferred Fix Available ({0})",e.getLabel()))}g.GK(this._domNode,I.lA.lightbulbAutofix.classNames),g.PT(this._domNode,I.lA.lightBulb.classNames);const e=this._keybindingService.lookupKeybinding(this._quickFixActionId);this.title=e?D.N("quickFixWithKb","Show Fixes ({0})",e.getLabel()):D.N("quickFix","Show Fixes")}set title(e){this._domNode.title=e}};var A,R;O._posPref=[0],O=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(A=3,R=v.d,function(e,t){R(e,t,A)})],O),(0,N.Ic)(((e,t)=>{const i=e.getColor(E.Fu);i&&t.addRule(`\n\t\t.monaco-editor .contentWidgets ${I.lA.lightBulb.cssSelector} {\n\t\t\tcolor: ${i};\n\t\t}`);const n=e.getColor(E.sK);n&&t.addRule(`\n\t\t.monaco-editor .contentWidgets ${I.lA.lightbulbAutofix.cssSelector} {\n\t\t\tcolor: ${n};\n\t\t}`)}));var P=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};let F=class extends r.JT{constructor(e,t,i,s,o){super(),this._editor=e,this.delegate=s,this._activeCodeActions=this._register(new r.XK),this._codeActionWidget=new n((()=>this._register(o.createInstance(C,this._editor,{onSelectCodeAction:e=>P(this,void 0,void 0,(function*(){this.delegate.applyCodeAction(e,!0)}))})))),this._lightBulbWidget=new n((()=>{const e=this._register(o.createInstance(O,this._editor,t,i));return this._register(e.onClick((e=>this.showCodeActionList(e.trigger,e.actions,e,{includeDisabledActions:!1})))),e}))}update(e){var t,i,n;return P(this,void 0,void 0,(function*(){if(1!==e.type)return void(null===(t=this._lightBulbWidget.rawValue)||void 0===t||t.hide());let r;try{r=yield e.actions}catch(e){return void(0,d.dL)(e)}if(this._lightBulbWidget.getValue().update(r,e.trigger,e.position),2===e.trigger.type){if(null===(i=e.trigger.filter)||void 0===i?void 0:i.include){const t=this.tryGetValidActionToApply(e.trigger,r);if(t){try{yield this.delegate.applyCodeAction(t,!1)}finally{r.dispose()}return}if(e.trigger.context){const t=this.getInvalidActionThatWouldHaveBeenApplied(e.trigger,r);if(t&&t.disabled)return h.O.get(this._editor).showMessage(t.disabled,e.trigger.context.position),void r.dispose()}}const t=!!(null===(n=e.trigger.filter)||void 0===n?void 0:n.include);if(e.trigger.context&&(!r.allActions.length||!t&&!r.validActions.length))return h.O.get(this._editor).showMessage(e.trigger.context.notAvailableMessage,e.trigger.context.position),this._activeCodeActions.value=r,void r.dispose();this._activeCodeActions.value=r,this._codeActionWidget.getValue().show(e.trigger,r,e.position,{includeDisabledActions:t})}else this._codeActionWidget.getValue().isVisible?r.dispose():this._activeCodeActions.value=r}))}getInvalidActionThatWouldHaveBeenApplied(e,t){if(t.allActions.length)return"first"===e.autoApply&&0===t.validActions.length||"ifSingle"===e.autoApply&&1===t.allActions.length?t.allActions.find((e=>e.disabled)):void 0}tryGetValidActionToApply(e,t){if(t.validActions.length)return"first"===e.autoApply&&t.validActions.length>0||"ifSingle"===e.autoApply&&1===t.validActions.length?t.validActions[0]:void 0}showCodeActionList(e,t,i,n){return P(this,void 0,void 0,(function*(){this._codeActionWidget.getValue().show(e,t,i,n)}))}};F=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([function(e,t){return function(i,n){t(i,n,e)}}(4,u.TG)],F);var B=i(94565),W=i(38819),Y=i(98674),H=i(59422),j=i(90535),V=i(10829),z=i(15393),U=i(24314),$=i(95935);const K=new W.uy("supportedCodeAction","");class q extends r.JT{constructor(e,t,i,n=250){super(),this._editor=e,this._markerService=t,this._signalChange=i,this._delay=n,this._autoTriggerTimer=this._register(new z._F),this._register(this._markerService.onMarkerChanged((e=>this._onMarkerChanges(e)))),this._register(this._editor.onDidChangeCursorPosition((()=>this._onCursorChange())))}trigger(e){const t=this._getRangeOfSelectionUnlessWhitespaceEnclosed(e);return this._createEventAndSignalChange(e,t)}_onMarkerChanges(e){const t=this._editor.getModel();t&&e.some((e=>(0,$.Xy)(e,t.uri)))&&this._autoTriggerTimer.cancelAndSet((()=>{this.trigger({type:1})}),this._delay)}_onCursorChange(){this._autoTriggerTimer.cancelAndSet((()=>{this.trigger({type:1})}),this._delay)}_getRangeOfMarker(e){const t=this._editor.getModel();if(t)for(const i of this._markerService.read({resource:t.uri})){const n=t.validateRange(i);if(U.e.intersectRanges(n,e))return U.e.lift(n)}}_getRangeOfSelectionUnlessWhitespaceEnclosed(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=this._editor.getSelection();if(i.isEmpty()&&1===e.type){const{lineNumber:e,column:n}=i.getPosition(),r=t.getLineContent(e);if(0===r.length)return;if(1===n){if(/\s/.test(r[0]))return}else if(n===t.getLineMaxColumn(e)){if(/\s/.test(r[r.length-1]))return}else if(/\s/.test(r[n-2])&&/\s/.test(r[n-1]))return}return i}_createEventAndSignalChange(e,t){const i=this._editor.getModel();if(!t||!i)return void this._signalChange(void 0);const n=this._getRangeOfMarker(t),r=n?n.getStartPosition():t.getStartPosition(),s={trigger:e,selection:t,position:r};return this._signalChange(s),s}}var G;!function(e){e.Empty={type:0},e.Triggered=class{constructor(e,t,i,n){this.trigger=e,this.rangeOrSelection=t,this.position=i,this.actions=n,this.type=1}}}(G||(G={}));class Z extends r.JT{constructor(e,t,i,n){super(),this._editor=e,this._markerService=t,this._progressService=n,this._codeActionOracle=this._register(new r.XK),this._state=G.Empty,this._onDidChangeState=this._register(new L.Q5),this.onDidChangeState=this._onDidChangeState.event,this._supportedCodeActions=K.bindTo(i),this._register(this._editor.onDidChangeModel((()=>this._update()))),this._register(this._editor.onDidChangeModelLanguage((()=>this._update()))),this._register(m.H9.onDidChange((()=>this._update()))),this._update()}dispose(){super.dispose(),this.setState(G.Empty,!0)}_update(){this._codeActionOracle.value=void 0,this.setState(G.Empty);const e=this._editor.getModel();if(e&&m.H9.has(e)&&!this._editor.getOption(72)){const t=[];for(const i of m.H9.all(e))Array.isArray(i.providedCodeActionKinds)&&t.push(...i.providedCodeActionKinds);this._supportedCodeActions.set(t.join(" ")),this._codeActionOracle.value=new q(this._editor,this._markerService,(t=>{var i;if(!t)return void this.setState(G.Empty);const n=(0,z.PG)((i=>(0,c.aI)(e,t.selection,t.trigger,j.E.None,i)));2===t.trigger.type&&(null===(i=this._progressService)||void 0===i||i.showWhile(n,250)),this.setState(new G.Triggered(t.trigger,t.selection,t.position,n))}),void 0),this._codeActionOracle.value.trigger({type:1})}else this._supportedCodeActions.reset()}trigger(e){this._codeActionOracle.value&&this._codeActionOracle.value.trigger(e)}setState(e,t){e!==this._state&&(1===this._state.type&&this._state.actions.cancel(),this._state=e,t||this._onDidChangeState.fire(e))}}var J=function(e,t){return function(i,n){t(i,n,e)}},Q=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function X(e){return W.Ao.regex(K.keys()[0],new RegExp("(\\s|^)"+(0,s.ec)(e.value)+"\\b"))}const ee={type:"object",defaultSnippets:[{body:{kind:""}}],properties:{kind:{type:"string",description:D.N("args.schema.kind","Kind of the code action to run.")},apply:{type:"string",description:D.N("args.schema.apply","Controls when the returned actions are applied."),default:"ifSingle",enum:["first","ifSingle","never"],enumDescriptions:[D.N("args.schema.apply.first","Always apply the first returned code action."),D.N("args.schema.apply.ifSingle","Apply the first returned code action if it is the only one."),D.N("args.schema.apply.never","Do not apply the returned code actions.")]},preferred:{type:"boolean",default:!1,description:D.N("args.schema.preferred","Controls if only preferred code actions should be returned.")}}};let te=class e extends r.JT{constructor(e,t,i,r,s){super(),this._instantiationService=s,this._editor=e,this._model=this._register(new Z(this._editor,t,i,r)),this._register(this._model.onDidChangeState((e=>this.update(e)))),this._ui=new n((()=>this._register(new F(e,re.Id,de.Id,{applyCodeAction:(e,t)=>Q(this,void 0,void 0,(function*(){try{yield this._applyCodeAction(e)}finally{t&&this._trigger({type:1,filter:{}})}}))},this._instantiationService))))}static get(t){return t.getContribution(e.ID)}update(e){this._ui.getValue().update(e)}showCodeActions(e,t,i){return this._ui.getValue().showCodeActionList(e,t,i,{includeDisabledActions:!1})}manualTriggerAtCurrentPosition(e,t,i){if(!this._editor.hasModel())return;h.O.get(this._editor).closeMessage();const n=this._editor.getPosition();this._trigger({type:2,filter:t,autoApply:i,context:{notAvailableMessage:e,position:n}})}_trigger(e){return this._model.trigger(e)}_applyCodeAction(e){return this._instantiationService.invokeFunction(ie,e,this._editor)}};function ie(e,t,i){return Q(this,void 0,void 0,(function*(){const n=e.get(a.vu),r=e.get(B.H),s=e.get(V.b),o=e.get(H.lT);if(s.publicLog2("codeAction.applyCodeAction",{codeActionTitle:t.title,codeActionKind:t.kind,codeActionIsPreferred:!!t.isPreferred}),t.edit&&(yield n.apply(a.fo.convert(t.edit),{editor:i,label:t.title})),t.command)try{yield r.executeCommand(t.command.id,...t.command.arguments||[])}catch(e){const t=function(e){return"string"==typeof e?e:e instanceof Error&&"string"==typeof e.message?e.message:void 0}(e);o.error("string"==typeof t?t:D.N("applyCodeActionFailed","An unknown error occurred while applying the code action"))}}))}function ne(e,t,i,n){if(e.hasModel()){const r=te.get(e);r&&r.manualTriggerAtCurrentPosition(t,i,n)}}te.ID="editor.contrib.quickFixController",te=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([J(1,Y.lT),J(2,W.i6),J(3,j.e),J(4,u.TG)],te);class re extends o.R6{constructor(){super({id:re.Id,label:D.N("quickfix.trigger.label","Quick Fix..."),alias:"Quick Fix...",precondition:W.Ao.and(l.u.writable,l.u.hasCodeActionsProvider),kbOpts:{kbExpr:l.u.editorTextFocus,primary:2132,weight:100}})}run(e,t){return ne(t,D.N("editor.action.quickFix.noneMessage","No code actions available"),void 0,void 0)}}re.Id="editor.action.quickFix";class se extends o._l{constructor(){super({id:c.RB,precondition:W.Ao.and(l.u.writable,l.u.hasCodeActionsProvider),description:{description:"Trigger a code action",args:[{name:"args",schema:ee}]}})}runEditorCommand(e,t,i){const n=_.wZ.fromUser(i,{kind:_.yN.Empty,apply:"ifSingle"});return ne(t,"string"==typeof(null==i?void 0:i.kind)?n.preferred?D.N("editor.action.codeAction.noneMessage.preferred.kind","No preferred code actions for '{0}' available",i.kind):D.N("editor.action.codeAction.noneMessage.kind","No code actions for '{0}' available",i.kind):n.preferred?D.N("editor.action.codeAction.noneMessage.preferred","No preferred code actions available"):D.N("editor.action.codeAction.noneMessage","No code actions available"),{include:n.kind,includeSourceActions:!0,onlyIncludePreferredActions:n.preferred},n.apply)}}class oe extends o.R6{constructor(){super({id:c.Bb,label:D.N("refactor.label","Refactor..."),alias:"Refactor...",precondition:W.Ao.and(l.u.writable,l.u.hasCodeActionsProvider),kbOpts:{kbExpr:l.u.editorTextFocus,primary:3120,mac:{primary:1328},weight:100},contextMenuOpts:{group:"1_modification",order:2,when:W.Ao.and(l.u.writable,X(_.yN.Refactor))},description:{description:"Refactor...",args:[{name:"args",schema:ee}]}})}run(e,t,i){const n=_.wZ.fromUser(i,{kind:_.yN.Refactor,apply:"never"});return ne(t,"string"==typeof(null==i?void 0:i.kind)?n.preferred?D.N("editor.action.refactor.noneMessage.preferred.kind","No preferred refactorings for '{0}' available",i.kind):D.N("editor.action.refactor.noneMessage.kind","No refactorings for '{0}' available",i.kind):n.preferred?D.N("editor.action.refactor.noneMessage.preferred","No preferred refactorings available"):D.N("editor.action.refactor.noneMessage","No refactorings available"),{include:_.yN.Refactor.contains(n.kind)?n.kind:_.yN.None,onlyIncludePreferredActions:n.preferred},n.apply)}}class ae extends o.R6{constructor(){super({id:c.MN,label:D.N("source.label","Source Action..."),alias:"Source Action...",precondition:W.Ao.and(l.u.writable,l.u.hasCodeActionsProvider),contextMenuOpts:{group:"1_modification",order:2.1,when:W.Ao.and(l.u.writable,X(_.yN.Source))},description:{description:"Source Action...",args:[{name:"args",schema:ee}]}})}run(e,t,i){const n=_.wZ.fromUser(i,{kind:_.yN.Source,apply:"never"});return ne(t,"string"==typeof(null==i?void 0:i.kind)?n.preferred?D.N("editor.action.source.noneMessage.preferred.kind","No preferred source actions for '{0}' available",i.kind):D.N("editor.action.source.noneMessage.kind","No source actions for '{0}' available",i.kind):n.preferred?D.N("editor.action.source.noneMessage.preferred","No preferred source actions available"):D.N("editor.action.source.noneMessage","No source actions available"),{include:_.yN.Source.contains(n.kind)?n.kind:_.yN.None,includeSourceActions:!0,onlyIncludePreferredActions:n.preferred},n.apply)}}class le extends o.R6{constructor(){super({id:c.uH,label:D.N("organizeImports.label","Organize Imports"),alias:"Organize Imports",precondition:W.Ao.and(l.u.writable,X(_.yN.SourceOrganizeImports)),kbOpts:{kbExpr:l.u.editorTextFocus,primary:1581,weight:100}})}run(e,t){return ne(t,D.N("editor.action.organize.noneMessage","No organize imports action available"),{include:_.yN.SourceOrganizeImports,includeSourceActions:!0},"ifSingle")}}class ce extends o.R6{constructor(){super({id:c.TM,label:D.N("fixAll.label","Fix All"),alias:"Fix All",precondition:W.Ao.and(l.u.writable,X(_.yN.SourceFixAll))})}run(e,t){return ne(t,D.N("fixAll.noneMessage","No fix all action available"),{include:_.yN.SourceFixAll,includeSourceActions:!0},"ifSingle")}}class de extends o.R6{constructor(){super({id:de.Id,label:D.N("autoFix.label","Auto Fix..."),alias:"Auto Fix...",precondition:W.Ao.and(l.u.writable,X(_.yN.QuickFix)),kbOpts:{kbExpr:l.u.editorTextFocus,primary:1620,mac:{primary:2644},weight:100}})}run(e,t){return ne(t,D.N("editor.action.autoFix.noneMessage","No auto fixes available"),{include:_.yN.QuickFix,onlyIncludePreferredActions:!0},"ifSingle")}}de.Id="editor.action.autoFix"},9093:(e,t,i)=>{"use strict";i.r(t);var n=i(16830),r=i(23674);(0,n._K)(r.pY.ID,r.pY),(0,n.Qr)(r.E7),(0,n.Qr)(r.Eb),(0,n.Qr)(r.VQ),(0,n.Qr)(r.o$),(0,n.Qr)(r.S5),(0,n.Qr)(r.Hv),(0,n.fK)(new r.dW)},89532:(e,t,i)=>{"use strict";i.d(t,{yN:()=>r,EU:()=>s,Yl:()=>o,wZ:()=>l});var n=i(97295);class r{constructor(e){this.value=e}equals(e){return this.value===e.value}contains(e){return this.equals(e)||""===this.value||(0,n.Ny)(e.value,this.value+r.sep)}intersects(e){return this.contains(e)||e.contains(this)}append(e){return new r(this.value+r.sep+e)}}function s(e,t){return!(e.include&&!e.include.intersects(t)||e.excludes&&e.excludes.some((i=>a(t,i,e.include)))||!e.includeSourceActions&&r.Source.contains(t))}function o(e,t){const i=t.kind?new r(t.kind):void 0;return!(!(!e.include||i&&e.include.contains(i))||e.excludes&&i&&e.excludes.some((t=>a(i,t,e.include)))||!e.includeSourceActions&&i&&r.Source.contains(i)||e.onlyIncludePreferredActions&&!t.isPreferred)}function a(e,t,i){return!(!t.contains(e)||i&&t.contains(i))}r.sep=".",r.None=new r("@@none@@"),r.Empty=new r(""),r.QuickFix=new r("quickfix"),r.Refactor=new r("refactor"),r.Source=new r("source"),r.SourceOrganizeImports=r.Source.append("organizeImports"),r.SourceFixAll=r.Source.append("fixAll");class l{constructor(e,t,i){this.kind=e,this.apply=t,this.preferred=i}static fromUser(e,t){return e&&"object"==typeof e?new l(l.getKindFromUser(e,t.kind),l.getApplyFromUser(e,t.apply),l.getPreferredUser(e)):new l(t.kind,t.apply,!1)}static getApplyFromUser(e,t){switch("string"==typeof e.apply?e.apply.toLowerCase():""){case"first":return"first";case"never":return"never";case"ifsingle":return"ifSingle";default:return t}}static getKindFromUser(e,t){return"string"==typeof e.kind?new r(e.kind):t}static getPreferredUser(e){return"boolean"==typeof e.preferred&&e.preferred}}},53832:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CodeLensContribution:()=>z});var n=i(15393),r=i(17301),s=i(5976),o=i(39925),a=i(16830),l=i(43775),c=i(9488),d=i(71050),h=i(70666),u=i(51200);class g{constructor(){this.lenses=[],this._disposables=new s.SL}dispose(){this._disposables.dispose()}add(e,t){this._disposables.add(e);for(const i of e.lenses)this.lenses.push({symbol:i,provider:t})}}function f(e,t){const i=l.He.ordered(e),n=new Map,s=new g,o=i.map(((i,o)=>(n.set(i,o),Promise.resolve(i.provideCodeLenses(e,t)).then((e=>e&&s.add(e,i))).catch(r.Cp))));return Promise.all(o).then((()=>(s.lenses=(0,c.qt)(s.lenses,((e,t)=>e.symbol.range.startLineNumber<t.symbol.range.startLineNumber?-1:e.symbol.range.startLineNumber>t.symbol.range.startLineNumber?1:n.get(e.provider)<n.get(t.provider)?-1:n.get(e.provider)>n.get(t.provider)?1:e.symbol.range.startColumn<t.symbol.range.startColumn?-1:e.symbol.range.startColumn>t.symbol.range.startColumn?1:0)),s)))}(0,a._h)("_executeCodeLensProvider",(function(e,t){let{resource:i,itemResolveCount:n}=t;if(!(i instanceof h.o))throw(0,r.b1)();const o=e.get(u.q).getModel(i);if(!o)throw(0,r.b1)();const a=[],l=new s.SL;return f(o,d.T.None).then((e=>{l.add(e);let t=[];for(const i of e.lenses)void 0===n||Boolean(i.symbol.command)?a.push(i.symbol):n-- >0&&i.provider.resolveCodeLens&&t.push(Promise.resolve(i.provider.resolveCodeLens(o,i.symbol,d.T.None)).then((e=>a.push(e||i.symbol))));return Promise.all(t)})).then((()=>a)).finally((()=>{setTimeout((()=>l.dispose()),100)}))}));var p=i(73046),m=i(97295),_=i(24314),b=i(3411),v=i(27869),y=i(73910),w=i(97781);class C{constructor(e,t){this.afterLineNumber=e,this._onHeight=t,this.heightInLines=1,this.suppressMouseDown=!0,this.domNode=document.createElement("div")}onComputedHeight(e){void 0===this._lastHeight?this._lastHeight=e:this._lastHeight!==e&&(this._lastHeight=e,this._onHeight())}}class S{constructor(e,t,i){this.allowEditorOverflow=!1,this.suppressMouseDown=!0,this._commands=new Map,this._isEmpty=!0,this._editor=e,this._id="codelens.widget-"+S._idPool++,this.updatePosition(i),this._domNode=document.createElement("span"),this._domNode.className=`codelens-decoration ${t}`}withCommands(e,t){this._commands.clear();let i="",n=!1;for(let t=0;t<e.length;t++){const r=e[t];if(r&&(n=!0,r.command)){const n=(0,p.Mi)((0,m.YU)(r.command.title));r.command.id?(i+=`<a id=${t}>${n}</a>`,this._commands.set(String(t),r.command)):i+=`<span>${n}</span>`,t+1<e.length&&(i+="<span> | </span>")}}n?(i||(i=" "),this._domNode.innerHTML=i,this._isEmpty&&t&&this._domNode.classList.add("fadein"),this._isEmpty=!1):this._domNode.innerHTML="<span>no commands</span>"}getCommand(e){return e.parentElement===this._domNode?this._commands.get(e.id):void 0}getId(){return this._id}getDomNode(){return this._domNode}updatePosition(e){const t=this._editor.getModel().getLineFirstNonWhitespaceColumn(e);this._widgetPosition={position:{lineNumber:e,column:t},preference:[1]}}getPosition(){return this._widgetPosition||null}}S._idPool=0;class k{constructor(){this._removeDecorations=[],this._addDecorations=[],this._addDecorationsCallbacks=[]}addDecoration(e,t){this._addDecorations.push(e),this._addDecorationsCallbacks.push(t)}removeDecoration(e){this._removeDecorations.push(e)}commit(e){let t=e.deltaDecorations(this._removeDecorations,this._addDecorations);for(let e=0,i=t.length;e<i;e++)this._addDecorationsCallbacks[e](t[e])}}class x{constructor(e,t,i,n,r,s){let o;this._isDisposed=!1,this._editor=t,this._className=i,this._data=e,this._decorationIds=[];let a=[];this._data.forEach(((e,t)=>{e.symbol.command&&a.push(e.symbol),n.addDecoration({range:e.symbol.range,options:b.qx.EMPTY},(e=>this._decorationIds[t]=e)),o=o?_.e.plusRange(o,e.symbol.range):_.e.lift(e.symbol.range)})),this._viewZone=new C(o.startLineNumber-1,s),this._viewZoneId=r.addZone(this._viewZone),a.length>0&&(this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(a,!1))}_createContentWidgetIfNecessary(){this._contentWidget||(this._contentWidget=new S(this._editor,this._className,this._viewZone.afterLineNumber+1),this._editor.addContentWidget(this._contentWidget))}dispose(e,t){this._decorationIds.forEach(e.removeDecoration,e),this._decorationIds=[],t&&t.removeZone(this._viewZoneId),this._contentWidget&&(this._editor.removeContentWidget(this._contentWidget),this._contentWidget=void 0),this._isDisposed=!0}isDisposed(){return this._isDisposed}isValid(){return this._decorationIds.some(((e,t)=>{const i=this._editor.getModel().getDecorationRange(e),n=this._data[t].symbol;return!(!i||_.e.isEmpty(n.range)!==i.isEmpty())}))}updateCodeLensSymbols(e,t){this._decorationIds.forEach(t.removeDecoration,t),this._decorationIds=[],this._data=e,this._data.forEach(((e,i)=>{t.addDecoration({range:e.symbol.range,options:b.qx.EMPTY},(e=>this._decorationIds[i]=e))}))}computeIfNecessary(e){if(!this._viewZone.domNode.hasAttribute("monaco-visible-view-zone"))return null;for(let t=0;t<this._decorationIds.length;t++){const i=e.getDecorationRange(this._decorationIds[t]);i&&(this._data[t].symbol.range=i)}return this._data}updateCommands(e){this._createContentWidgetIfNecessary(),this._contentWidget.withCommands(e,!0);for(let t=0;t<this._data.length;t++){const i=e[t];if(i){const{symbol:e}=this._data[t];e.command=i.command||e.command}}}getCommand(e){var t;return null===(t=this._contentWidget)||void 0===t?void 0:t.getCommand(e)}getLineNumber(){const e=this._editor.getModel().getDecorationRange(this._decorationIds[0]);return e?e.startLineNumber:-1}update(e){if(this.isValid()){const t=this._editor.getModel().getDecorationRange(this._decorationIds[0]);t&&(this._viewZone.afterLineNumber=t.startLineNumber-1,e.layoutZone(this._viewZoneId),this._contentWidget&&(this._contentWidget.updatePosition(t.startLineNumber),this._editor.layoutContentWidget(this._contentWidget)))}}getItems(){return this._data}}(0,w.Ic)(((e,t)=>{const i=e.getColor(v.Yp);i&&(t.addRule(`.monaco-editor .codelens-decoration { color: ${i}; }`),t.addRule(`.monaco-editor .codelens-decoration .codicon { color: ${i}; }`));const n=e.getColor(y._Y);n&&(t.addRule(`.monaco-editor .codelens-decoration > a:hover { color: ${n} !important; }`),t.addRule(`.monaco-editor .codelens-decoration > a:hover .codicon { color: ${n} !important; }`))}));var L=i(94565),M=i(59422),D=i(72065),N=i(65026),E=i(43702),T=i(52365),I=i(88289);const O=(0,D.yh)("ICodeLensCache");class A{constructor(e,t){this.lineCount=e,this.data=t}}let R=class{constructor(e){this._fakeProvider=new class{provideCodeLenses(){throw new Error("not supported")}},this._cache=new E.z6(20,.75),(0,n.To)((()=>e.remove("codelens/cache",1)));const t="codelens/cache2",i=e.get(t,1,"{}");this._deserialize(i),(0,I.I)(e.onWillSaveState)((i=>{i.reason===T.fk.SHUTDOWN&&e.store(t,this._serialize(),1)}))}put(e,t){const i=t.lenses.map((e=>{var t;return{range:e.symbol.range,command:e.symbol.command&&{id:"",title:null===(t=e.symbol.command)||void 0===t?void 0:t.title}}})),n=new g;n.add({lenses:i,dispose:()=>{}},this._fakeProvider);const r=new A(e.getLineCount(),n);this._cache.set(e.uri.toString(),r)}get(e){const t=this._cache.get(e.uri.toString());return t&&t.lineCount===e.getLineCount()?t.data:void 0}delete(e){this._cache.delete(e.uri.toString())}_serialize(){const e=Object.create(null);for(const[t,i]of this._cache){const n=new Set;for(const e of i.data.lenses)n.add(e.symbol.range.startLineNumber);e[t]={lineCount:i.lineCount,lines:[...n.values()]}}return JSON.stringify(e)}_deserialize(e){try{const t=JSON.parse(e);for(const e in t){const i=t[e],n=[];for(const e of i.lines)n.push({range:new _.e(e,1,e,11)});const r=new g;r.add({lenses:n,dispose(){}},this._fakeProvider),this._cache.set(e,new A(i.lineCount,r))}}catch(e){}}};var P,F;R=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(P=0,F=T.Uy,function(e,t){F(e,t,P)})],R),(0,N.z)(O,R);var B=i(65321),W=i(89954),Y=i(41157),H=i(63580),j=i(29102),V=function(e,t){return function(i,n){t(i,n,e)}};let z=class{constructor(e,t,i,n){this._editor=e,this._commandService=t,this._notificationService=i,this._codeLensCache=n,this._globalToDispose=new s.SL,this._localToDispose=new s.SL,this._lenses=[],this._oldCodeLensModels=new s.SL,this._modelChangeCounter=0,this._isEnabled=this._editor.getOption(11),this._globalToDispose.add(this._editor.onDidChangeModel((()=>this._onModelChange()))),this._globalToDispose.add(this._editor.onDidChangeModelLanguage((()=>this._onModelChange()))),this._globalToDispose.add(this._editor.onDidChangeConfiguration((()=>{const e=this._isEnabled;this._isEnabled=this._editor.getOption(11),e!==this._isEnabled&&this._onModelChange()}))),this._globalToDispose.add(l.He.onDidChange(this._onModelChange,this)),this._globalToDispose.add(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(36)&&this._updateLensStyle()}))),this._onModelChange(),this._styleClassName="_"+(0,W.vp)(this._editor.getId()).toString(16),this._styleElement=B.dS(B.OO(this._editor.getContainerDomNode())?this._editor.getContainerDomNode():void 0),this._updateLensStyle()}dispose(){this._localDispose(),this._globalToDispose.dispose(),this._oldCodeLensModels.dispose(),(0,s.B9)(this._currentCodeLensModel)}_updateLensStyle(){const e=this._editor.getOptions(),t=e.get(36),i=e.get(51),n=Math.round(1.1*i),r=Math.round(.9*t.fontSize),s=`\n\t\t.monaco-editor .codelens-decoration.${this._styleClassName} { height: ${n}px; line-height: ${i}px; font-size: ${r}px; padding-right: ${Math.round(.45*t.fontSize)}px;}\n\t\t.monaco-editor .codelens-decoration.${this._styleClassName} > a > .codicon { line-height: ${i}px; font-size: ${r}px; }\n\t\t`;this._styleElement.textContent=s}_localDispose(){this._currentFindCodeLensSymbolsPromise&&(this._currentFindCodeLensSymbolsPromise.cancel(),this._currentFindCodeLensSymbolsPromise=void 0,this._modelChangeCounter++),this._currentResolveCodeLensSymbolsPromise&&(this._currentResolveCodeLensSymbolsPromise.cancel(),this._currentResolveCodeLensSymbolsPromise=void 0),this._localToDispose.clear(),this._oldCodeLensModels.clear(),(0,s.B9)(this._currentCodeLensModel)}_onModelChange(){this._localDispose();const e=this._editor.getModel();if(!e)return;if(!this._isEnabled)return;const t=this._codeLensCache.get(e);if(t&&this._renderCodeLensSymbols(t),!l.He.has(e))return void(t&&this._localToDispose.add((0,n.Vg)((()=>{const i=this._codeLensCache.get(e);t===i&&(this._codeLensCache.delete(e),this._onModelChange())}),3e4)));for(const t of l.He.all(e))if("function"==typeof t.onDidChange){let e=t.onDidChange((()=>a.schedule()));this._localToDispose.add(e)}const i=this._detectVisibleLenses=new n.pY((()=>this._onViewportChanged()),250),a=new n.pY((()=>{const t=++this._modelChangeCounter;this._currentFindCodeLensSymbolsPromise&&this._currentFindCodeLensSymbolsPromise.cancel(),this._currentFindCodeLensSymbolsPromise=(0,n.PG)((t=>f(e,t))),this._currentFindCodeLensSymbolsPromise.then((n=>{t===this._modelChangeCounter&&(this._currentCodeLensModel&&this._oldCodeLensModels.add(this._currentCodeLensModel),this._currentCodeLensModel=n,this._codeLensCache.put(e,n),this._renderCodeLensSymbols(n),i.schedule())}),r.dL)}),250);this._localToDispose.add(a),this._localToDispose.add(i),this._localToDispose.add(this._editor.onDidChangeModelContent((()=>{this._editor.changeDecorations((e=>{this._editor.changeViewZones((t=>{let i=[],n=-1;this._lenses.forEach((e=>{e.isValid()&&n!==e.getLineNumber()?(e.update(t),n=e.getLineNumber()):i.push(e)}));let r=new k;i.forEach((e=>{e.dispose(r,t),this._lenses.splice(this._lenses.indexOf(e),1)})),r.commit(e)}))})),i.schedule(),a.schedule()}))),this._localToDispose.add(this._editor.onDidScrollChange((e=>{e.scrollTopChanged&&this._lenses.length>0&&i.schedule()}))),this._localToDispose.add(this._editor.onDidLayoutChange((()=>{i.schedule()}))),this._localToDispose.add((0,s.OF)((()=>{if(this._editor.getModel()){const e=o.ZF.capture(this._editor);this._editor.changeDecorations((e=>{this._editor.changeViewZones((t=>{this._disposeAllLenses(e,t)}))})),e.restore(this._editor)}else this._disposeAllLenses(void 0,void 0)}))),this._localToDispose.add(this._editor.onMouseUp((e=>{if(9!==e.target.type)return;let t=e.target.element;if("SPAN"===(null==t?void 0:t.tagName)&&(t=t.parentElement),"A"===(null==t?void 0:t.tagName))for(const e of this._lenses){let i=e.getCommand(t);if(i){this._commandService.executeCommand(i.id,...i.arguments||[]).catch((e=>this._notificationService.error(e)));break}}}))),a.schedule()}_disposeAllLenses(e,t){const i=new k;for(const e of this._lenses)e.dispose(i,t);e&&i.commit(e),this._lenses=[]}_renderCodeLensSymbols(e){if(!this._editor.hasModel())return;let t,i=this._editor.getModel().getLineCount(),n=[];for(let r of e.lenses){let e=r.symbol.range.startLineNumber;e<1||e>i||(t&&t[t.length-1].symbol.range.startLineNumber===e?t.push(r):(t=[r],n.push(t)))}const r=o.ZF.capture(this._editor);this._editor.changeDecorations((e=>{this._editor.changeViewZones((t=>{const i=new k;let r=0,s=0;for(;s<n.length&&r<this._lenses.length;){let e=n[s][0].symbol.range.startLineNumber,o=this._lenses[r].getLineNumber();o<e?(this._lenses[r].dispose(i,t),this._lenses.splice(r,1)):o===e?(this._lenses[r].updateCodeLensSymbols(n[s],i),s++,r++):(this._lenses.splice(r,0,new x(n[s],this._editor,this._styleClassName,i,t,(()=>this._detectVisibleLenses&&this._detectVisibleLenses.schedule()))),r++,s++)}for(;r<this._lenses.length;)this._lenses[r].dispose(i,t),this._lenses.splice(r,1);for(;s<n.length;)this._lenses.push(new x(n[s],this._editor,this._styleClassName,i,t,(()=>this._detectVisibleLenses&&this._detectVisibleLenses.schedule()))),s++;i.commit(e)}))})),r.restore(this._editor)}_onViewportChanged(){this._currentResolveCodeLensSymbolsPromise&&(this._currentResolveCodeLensSymbolsPromise.cancel(),this._currentResolveCodeLensSymbolsPromise=void 0);const e=this._editor.getModel();if(!e)return;const t=[],i=[];if(this._lenses.forEach((n=>{const r=n.computeIfNecessary(e);r&&(t.push(r),i.push(n))})),0===t.length)return;const s=(0,n.PG)((n=>{const s=t.map(((t,s)=>{const o=new Array(t.length),a=t.map(((t,i)=>t.symbol.command||"function"!=typeof t.provider.resolveCodeLens?(o[i]=t.symbol,Promise.resolve(void 0)):Promise.resolve(t.provider.resolveCodeLens(e,t.symbol,n)).then((e=>{o[i]=e}),r.Cp)));return Promise.all(a).then((()=>{n.isCancellationRequested||i[s].isDisposed()||i[s].updateCommands(o)}))}));return Promise.all(s)}));this._currentResolveCodeLensSymbolsPromise=s,this._currentResolveCodeLensSymbolsPromise.then((()=>{this._currentCodeLensModel&&this._codeLensCache.put(e,this._currentCodeLensModel),this._oldCodeLensModels.clear(),s===this._currentResolveCodeLensSymbolsPromise&&(this._currentResolveCodeLensSymbolsPromise=void 0)}),(e=>{(0,r.dL)(e),s===this._currentResolveCodeLensSymbolsPromise&&(this._currentResolveCodeLensSymbolsPromise=void 0)}))}getLenses(){return this._lenses}};z.ID="css.editor.codeLens",z=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([V(1,L.H),V(2,M.lT),V(3,O)],z),(0,a._K)(z.ID,z),(0,a.Qr)(class extends a.R6{constructor(){super({id:"codelens.showLensesInCurrentLine",precondition:j.u.hasCodeLensProvider,label:(0,H.N)("showLensOnLine","Show CodeLens Commands For Current Line"),alias:"Show CodeLens Commands For Current Line"})}run(e,t){return i=this,n=void 0,s=function*(){if(!t.hasModel())return;const i=e.get(Y.eJ),n=e.get(L.H),r=e.get(M.lT),s=t.getSelection().positionLineNumber,o=t.getContribution(z.ID),a=[];for(let e of o.getLenses())if(e.getLineNumber()===s)for(let t of e.getItems()){const{command:e}=t.symbol;e&&a.push({label:e.title,command:e})}if(0===a.length)return;const l=yield i.pick(a,{canPickMany:!1});if(l)try{yield n.executeCommand(l.command.id,...l.command.arguments||[])}catch(e){r.error(e)}},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s}})},83308:(e,t,i)=>{"use strict";i.d(t,{E:()=>d,R:()=>h});var n=i(71050),r=i(17301),s=i(70666),o=i(16830),a=i(24314),l=i(43775),c=i(51200);function d(e,t){const i=[],n=l.OH.ordered(e).reverse().map((n=>Promise.resolve(n.provideDocumentColors(e,t)).then((e=>{if(Array.isArray(e))for(let t of e)i.push({colorInfo:t,provider:n})}))));return Promise.all(n).then((()=>i))}function h(e,t,i,n){return Promise.resolve(i.provideColorPresentations(e,t,n))}(0,o._h)("_executeDocumentColorProvider",(function(e,t){const{resource:i}=t;if(!(i instanceof s.o))throw(0,r.b1)();const o=e.get(c.q).getModel(i);if(!o)throw(0,r.b1)();const a=[],d=l.OH.ordered(o).reverse().map((e=>Promise.resolve(e.provideDocumentColors(o,n.T.None)).then((e=>{if(Array.isArray(e))for(let t of e)a.push({range:t.range,color:[t.color.red,t.color.green,t.color.blue,t.color.alpha]})}))));return Promise.all(d).then((()=>a))})),(0,o._h)("_executeColorPresentationProvider",(function(e,t){const{resource:i,color:o,range:d}=t;if(!(i instanceof s.o&&Array.isArray(o)&&4===o.length&&a.e.isIRange(d)))throw(0,r.b1)();const[h,u,g,f]=o,p=e.get(c.q).getModel(i);if(!p)throw(0,r.b1)();const m={range:d,color:{red:h,green:u,blue:g,alpha:f}},_=[],b=l.OH.ordered(p).reverse().map((e=>Promise.resolve(e.provideColorPresentations(p,m,n.T.None)).then((e=>{Array.isArray(e)&&_.push(...e)}))));return Promise.all(b).then((()=>_))}))},64494:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ColorDetector:()=>m});var n=i(15393),r=i(41264),s=i(17301),o=i(89954),a=i(5976),l=i(16830),c=i(11640),d=i(24314),h=i(3411),u=i(43775),g=i(83308),f=i(33108),p=function(e,t){return function(i,n){t(i,n,e)}};let m=class e extends a.JT{constructor(e,t,i){super(),this._editor=e,this._codeEditorService=t,this._configurationService=i,this._localToDispose=this._register(new a.SL),this._decorationsIds=[],this._colorDatas=new Map,this._colorDecoratorIds=[],this._decorationsTypes=new Set,this._register(e.onDidChangeModel((e=>{this._isEnabled=this.isEnabled(),this.onModelChanged()}))),this._register(e.onDidChangeModelLanguage((e=>this.onModelChanged()))),this._register(u.OH.onDidChange((e=>this.onModelChanged()))),this._register(e.onDidChangeConfiguration((e=>{let t=this._isEnabled;this._isEnabled=this.isEnabled(),t!==this._isEnabled&&(this._isEnabled?this.onModelChanged():this.removeAllDecorations())}))),this._timeoutTimer=null,this._computePromise=null,this._isEnabled=this.isEnabled(),this.onModelChanged()}isEnabled(){const e=this._editor.getModel();if(!e)return!1;const t=e.getLanguageIdentifier(),i=this._configurationService.getValue(t.language);if(i){const e=i.colorDecorators;if(e&&void 0!==e.enable&&!e.enable)return e.enable}return this._editor.getOption(12)}static get(e){return e.getContribution(this.ID)}dispose(){this.stop(),this.removeAllDecorations(),super.dispose()}onModelChanged(){if(this.stop(),!this._isEnabled)return;const t=this._editor.getModel();t&&u.OH.has(t)&&(this._localToDispose.add(this._editor.onDidChangeModelContent((t=>{this._timeoutTimer||(this._timeoutTimer=new n._F,this._timeoutTimer.cancelAndSet((()=>{this._timeoutTimer=null,this.beginCompute()}),e.RECOMPUTE_TIME))}))),this.beginCompute())}beginCompute(){this._computePromise=(0,n.PG)((e=>{const t=this._editor.getModel();return t?(0,g.E)(t,e):Promise.resolve([])})),this._computePromise.then((e=>{this.updateDecorations(e),this.updateColorDecorators(e),this._computePromise=null}),s.dL)}stop(){this._timeoutTimer&&(this._timeoutTimer.cancel(),this._timeoutTimer=null),this._computePromise&&(this._computePromise.cancel(),this._computePromise=null),this._localToDispose.clear()}updateDecorations(e){const t=e.map((e=>({range:{startLineNumber:e.colorInfo.range.startLineNumber,startColumn:e.colorInfo.range.startColumn,endLineNumber:e.colorInfo.range.endLineNumber,endColumn:e.colorInfo.range.endColumn},options:h.qx.EMPTY})));this._decorationsIds=this._editor.deltaDecorations(this._decorationsIds,t),this._colorDatas=new Map,this._decorationsIds.forEach(((t,i)=>this._colorDatas.set(t,e[i])))}updateColorDecorators(e){let t=[],i={};for(let n=0;n<e.length&&t.length<500;n++){const{red:s,green:a,blue:l,alpha:c}=e[n].colorInfo.color,d=new r.VS(Math.round(255*s),Math.round(255*a),Math.round(255*l),c);let h=(0,o.vp)(`rgba(${d.r},${d.g},${d.b},${d.a})`).toString(16),u=`rgba(${d.r}, ${d.g}, ${d.b}, ${d.a})`,g="colorBox-"+h;this._decorationsTypes.has(g)||i[g]||this._codeEditorService.registerDecorationType(g,{before:{contentText:" ",border:"solid 0.1em #000",margin:"0.1em 0.2em 0 0.2em",width:"0.8em",height:"0.8em",backgroundColor:u},dark:{before:{border:"solid 0.1em #eee"}}},void 0,this._editor),i[g]=!0,t.push({range:{startLineNumber:e[n].colorInfo.range.startLineNumber,startColumn:e[n].colorInfo.range.startColumn,endLineNumber:e[n].colorInfo.range.endLineNumber,endColumn:e[n].colorInfo.range.endColumn},options:this._codeEditorService.resolveDecorationOptions(g,!0)})}this._decorationsTypes.forEach((e=>{i[e]||this._codeEditorService.removeDecorationType(e)})),this._colorDecoratorIds=this._editor.deltaDecorations(this._colorDecoratorIds,t)}removeAllDecorations(){this._decorationsIds=this._editor.deltaDecorations(this._decorationsIds,[]),this._colorDecoratorIds=this._editor.deltaDecorations(this._colorDecoratorIds,[]),this._decorationsTypes.forEach((e=>{this._codeEditorService.removeDecorationType(e)}))}getColorData(e){const t=this._editor.getModel();if(!t)return null;const i=t.getDecorationsInRange(d.e.fromPositions(e,e)).filter((e=>this._colorDatas.has(e.id)));return 0===i.length?null:this._colorDatas.get(i[0].id)}};m.ID="editor.contrib.colorDetector",m.RECOMPUTE_TIME=1e3,m=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([p(1,c.$),p(2,f.Ui)],m),(0,l._K)(m.ID,m)},89098:(e,t,i)=>{"use strict";i.r(t);var n=i(63580),r=i(22258),s=i(16830),o=i(29102),a=i(69386),l=i(50187),c=i(24314),d=i(3860),h=i(83831);class u{constructor(e,t){this._selection=e,this._insertSpace=t,this._usedEndToken=null}static _haystackHasNeedleAtOffset(e,t,i){if(i<0)return!1;const n=t.length;if(i+n>e.length)return!1;for(let r=0;r<n;r++){const n=e.charCodeAt(i+r),s=t.charCodeAt(r);if(n!==s&&!(n>=65&&n<=90&&n+32===s||s>=65&&s<=90&&s+32===n))return!1}return!0}_createOperationsForBlockComment(e,t,i,n,r,s){const o=e.startLineNumber,a=e.startColumn,l=e.endLineNumber,d=e.endColumn,h=r.getLineContent(o),g=r.getLineContent(l);let f,p=h.lastIndexOf(t,a-1+t.length),m=g.indexOf(i,d-1-i.length);if(-1!==p&&-1!==m)if(o===l)h.substring(p+t.length,m).indexOf(i)>=0&&(p=-1,m=-1);else{const e=h.substring(p+t.length),n=g.substring(0,m);(e.indexOf(i)>=0||n.indexOf(i)>=0)&&(p=-1,m=-1)}-1!==p&&-1!==m?(n&&p+t.length<h.length&&32===h.charCodeAt(p+t.length)&&(t+=" "),n&&m>0&&32===g.charCodeAt(m-1)&&(i=" "+i,m-=1),f=u._createRemoveBlockCommentOperations(new c.e(o,p+t.length+1,l,m+1),t,i)):(f=u._createAddBlockCommentOperations(e,t,i,this._insertSpace),this._usedEndToken=1===f.length?i:null);for(const e of f)s.addTrackedEditOperation(e.range,e.text)}static _createRemoveBlockCommentOperations(e,t,i){let n=[];return c.e.isEmpty(e)?n.push(a.h.delete(new c.e(e.startLineNumber,e.startColumn-t.length,e.endLineNumber,e.endColumn+i.length))):(n.push(a.h.delete(new c.e(e.startLineNumber,e.startColumn-t.length,e.startLineNumber,e.startColumn))),n.push(a.h.delete(new c.e(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn+i.length)))),n}static _createAddBlockCommentOperations(e,t,i,n){let r=[];return c.e.isEmpty(e)?r.push(a.h.replace(new c.e(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),t+" "+i)):(r.push(a.h.insert(new l.L(e.startLineNumber,e.startColumn),t+(n?" ":""))),r.push(a.h.insert(new l.L(e.endLineNumber,e.endColumn),(n?" ":"")+i))),r}getEditOperations(e,t){const i=this._selection.startLineNumber,n=this._selection.startColumn;e.tokenizeIfCheap(i);const r=e.getLanguageIdAtPosition(i,n),s=h.zu.getComments(r);s&&s.blockCommentStartToken&&s.blockCommentEndToken&&this._createOperationsForBlockComment(this._selection,s.blockCommentStartToken,s.blockCommentEndToken,this._insertSpace,e,t)}computeCursorState(e,t){const i=t.getInverseEditOperations();if(2===i.length){const e=i[0],t=i[1];return new d.Y(e.range.endLineNumber,e.range.endColumn,t.range.startLineNumber,t.range.startColumn)}{const e=i[0].range,t=this._usedEndToken?-this._usedEndToken.length-1:0;return new d.Y(e.endLineNumber,e.endColumn+t,e.endLineNumber,e.endColumn+t)}}}var g=i(97295);class f{constructor(e,t,i,n,r){this._selection=e,this._tabSize=t,this._type=i,this._insertSpace=n,this._selectionId=null,this._deltaColumn=0,this._moveEndPositionDown=!1,this._ignoreEmptyLines=r}static _gatherPreflightCommentStrings(e,t,i){e.tokenizeIfCheap(t);const n=e.getLanguageIdAtPosition(t,1),r=h.zu.getComments(n),s=r?r.lineCommentToken:null;if(!s)return null;let o=[];for(let e=0,n=i-t+1;e<n;e++)o[e]={ignore:!1,commentStr:s,commentStrOffset:0,commentStrLength:s.length};return o}static _analyzeLines(e,t,i,n,r,s){let o,a=!0;o=0===e||1!==e;for(let l=0,c=n.length;l<c;l++){const c=n[l],d=r+l,h=i.getLineContent(d),f=g.LC(h);if(-1!==f){if(a=!1,c.ignore=!1,c.commentStrOffset=f,o&&!u._haystackHasNeedleAtOffset(h,c.commentStr,f)&&(0===e?o=!1:1===e||(c.ignore=!0)),o&&t){const e=f+c.commentStrLength;e<h.length&&32===h.charCodeAt(e)&&(c.commentStrLength+=1)}}else c.ignore=s,c.commentStrOffset=h.length}if(0===e&&a){o=!1;for(let e=0,t=n.length;e<t;e++)n[e].ignore=!1}return{supported:!0,shouldRemoveComments:o,lines:n}}static _gatherPreflightData(e,t,i,n,r,s){const o=f._gatherPreflightCommentStrings(i,n,r);return null===o?{supported:!1}:f._analyzeLines(e,t,i,o,n,s)}_executeLineComments(e,t,i,n){let r;i.shouldRemoveComments?r=f._createRemoveLineCommentsOperations(i.lines,n.startLineNumber):(f._normalizeInsertionPoint(e,i.lines,n.startLineNumber,this._tabSize),r=this._createAddLineCommentsOperations(i.lines,n.startLineNumber));const s=new l.L(n.positionLineNumber,n.positionColumn);for(let i=0,n=r.length;i<n;i++)t.addEditOperation(r[i].range,r[i].text),c.e.isEmpty(r[i].range)&&c.e.getStartPosition(r[i].range).equals(s)&&e.getLineContent(s.lineNumber).length+1===s.column&&(this._deltaColumn=(r[i].text||"").length);this._selectionId=t.trackSelection(n)}_attemptRemoveBlockComment(e,t,i,n){let r=t.startLineNumber,s=t.endLineNumber,o=n.length+Math.max(e.getLineFirstNonWhitespaceColumn(t.startLineNumber),t.startColumn),a=e.getLineContent(r).lastIndexOf(i,o-1),l=e.getLineContent(s).indexOf(n,t.endColumn-1-i.length);return-1!==a&&-1===l&&(l=e.getLineContent(r).indexOf(n,a+i.length),s=r),-1===a&&-1!==l&&(a=e.getLineContent(s).lastIndexOf(i,l),r=s),!t.isEmpty()||-1!==a&&-1!==l||(a=e.getLineContent(r).indexOf(i),-1!==a&&(l=e.getLineContent(r).indexOf(n,a+i.length))),-1!==a&&32===e.getLineContent(r).charCodeAt(a+i.length)&&(i+=" "),-1!==l&&32===e.getLineContent(s).charCodeAt(l-1)&&(n=" "+n,l-=1),-1!==a&&-1!==l?u._createRemoveBlockCommentOperations(new c.e(r,a+i.length+1,s,l+1),i,n):null}_executeBlockComment(e,t,i){e.tokenizeIfCheap(i.startLineNumber);let n=e.getLanguageIdAtPosition(i.startLineNumber,1),r=h.zu.getComments(n);if(!r||!r.blockCommentStartToken||!r.blockCommentEndToken)return;const s=r.blockCommentStartToken,o=r.blockCommentEndToken;let a=this._attemptRemoveBlockComment(e,i,s,o);if(!a){if(i.isEmpty()){const t=e.getLineContent(i.startLineNumber);let n=g.LC(t);-1===n&&(n=t.length),a=u._createAddBlockCommentOperations(new c.e(i.startLineNumber,n+1,i.startLineNumber,t.length+1),s,o,this._insertSpace)}else a=u._createAddBlockCommentOperations(new c.e(i.startLineNumber,e.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),s,o,this._insertSpace);1===a.length&&(this._deltaColumn=s.length+1)}this._selectionId=t.trackSelection(i);for(const e of a)t.addEditOperation(e.range,e.text)}getEditOperations(e,t){let i=this._selection;this._moveEndPositionDown=!1,i.startLineNumber<i.endLineNumber&&1===i.endColumn&&(this._moveEndPositionDown=!0,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));const n=f._gatherPreflightData(this._type,this._insertSpace,e,i.startLineNumber,i.endLineNumber,this._ignoreEmptyLines);return n.supported?this._executeLineComments(e,t,n,i):this._executeBlockComment(e,t,i)}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),new d.Y(i.selectionStartLineNumber,i.selectionStartColumn+this._deltaColumn,i.positionLineNumber,i.positionColumn+this._deltaColumn)}static _createRemoveLineCommentsOperations(e,t){let i=[];for(let n=0,r=e.length;n<r;n++){const r=e[n];r.ignore||i.push(a.h.delete(new c.e(t+n,r.commentStrOffset+1,t+n,r.commentStrOffset+r.commentStrLength+1)))}return i}_createAddLineCommentsOperations(e,t){let i=[];const n=this._insertSpace?" ":"";for(let r=0,s=e.length;r<s;r++){const s=e[r];s.ignore||i.push(a.h.insert(new l.L(t+r,s.commentStrOffset+1),s.commentStr+n))}return i}static nextVisibleColumn(e,t,i,n){return i?e+(t-e%t):e+n}static _normalizeInsertionPoint(e,t,i,n){let r,s,o=1073741824;for(let r=0,s=t.length;r<s;r++){if(t[r].ignore)continue;const s=e.getLineContent(i+r);let a=0;for(let e=0,i=t[r].commentStrOffset;a<o&&e<i;e++)a=f.nextVisibleColumn(a,n,9===s.charCodeAt(e),1);a<o&&(o=a)}o=Math.floor(o/n)*n;for(let a=0,l=t.length;a<l;a++){if(t[a].ignore)continue;const l=e.getLineContent(i+a);let c=0;for(r=0,s=t[a].commentStrOffset;c<o&&r<s;r++)c=f.nextVisibleColumn(c,n,9===l.charCodeAt(r),1);t[a].commentStrOffset=c>o?r-1:r}}}var p=i(84144);class m extends s.R6{constructor(e,t){super(t),this._type=e}run(e,t){if(!t.hasModel())return;const i=t.getModel(),n=[],r=t.getSelections(),s=i.getOptions(),o=t.getOption(14);for(const e of r)n.push(new f(e,s.tabSize,this._type,o.insertSpace,o.ignoreEmptyLines));t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class _ extends s.R6{constructor(){super({id:"editor.action.blockComment",label:n.N("comment.block","Toggle Block Comment"),alias:"Toggle Block Comment",precondition:o.u.writable,kbOpts:{kbExpr:o.u.editorTextFocus,primary:1567,linux:{primary:3103},weight:100},menuOpts:{menuId:p.eH.MenubarEditMenu,group:"5_insert",title:n.N({key:"miToggleBlockComment",comment:["&& denotes a mnemonic"]},"Toggle &&Block Comment"),order:2}})}run(e,t){if(!t.hasModel())return;const i=t.getOption(14),n=[],r=t.getSelections();for(const e of r)n.push(new u(e,i.insertSpace));t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}(0,s.Qr)(class extends m{constructor(){super(0,{id:"editor.action.commentLine",label:n.N("comment.line","Toggle Line Comment"),alias:"Toggle Line Comment",precondition:o.u.writable,kbOpts:{kbExpr:o.u.editorTextFocus,primary:2133,weight:100},menuOpts:{menuId:p.eH.MenubarEditMenu,group:"5_insert",title:n.N({key:"miToggleLineComment",comment:["&& denotes a mnemonic"]},"&&Toggle Line Comment"),order:1}})}}),(0,s.Qr)(class extends m{constructor(){super(1,{id:"editor.action.addCommentLine",label:n.N("comment.line.add","Add Line Comment"),alias:"Add Line Comment",precondition:o.u.writable,kbOpts:{kbExpr:o.u.editorTextFocus,primary:(0,r.gx)(2089,2081),weight:100}})}}),(0,s.Qr)(class extends m{constructor(){super(2,{id:"editor.action.removeCommentLine",label:n.N("comment.line.remove","Remove Line Comment"),alias:"Remove Line Comment",precondition:o.u.writable,kbOpts:{kbExpr:o.u.editorTextFocus,primary:(0,r.gx)(2089,2099),weight:100}})}}),(0,s.Qr)(_)},76522:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ContextMenuController:()=>p});var n=i(63580),r=i(65321),s=i(74741),o=i(5976),a=i(16830),l=i(29102),c=i(84144),d=i(38819),h=i(5606),u=i(91847),g=i(76033),f=function(e,t){return function(i,n){t(i,n,e)}};let p=class e{constructor(e,t,i,n,s,a){this._contextMenuService=t,this._contextViewService=i,this._contextKeyService=n,this._keybindingService=s,this._menuService=a,this._toDispose=new o.SL,this._contextMenuIsBeingShownCount=0,this._editor=e,this._toDispose.add(this._editor.onContextMenu((e=>this._onContextMenu(e)))),this._toDispose.add(this._editor.onMouseWheel((e=>{if(this._contextMenuIsBeingShownCount>0){const t=this._contextViewService.getContextViewElement(),i=e.srcElement;i.shadowRoot&&r.Ay(t)===i.shadowRoot||this._contextViewService.hideContextView()}}))),this._toDispose.add(this._editor.onKeyDown((e=>{58===e.keyCode&&(e.preventDefault(),e.stopPropagation(),this.showContextMenu())})))}static get(t){return t.getContribution(e.ID)}_onContextMenu(e){if(!this._editor.hasModel())return;if(!this._editor.getOption(15))return this._editor.focus(),void(e.target.position&&!this._editor.getSelection().containsPosition(e.target.position)&&this._editor.setPosition(e.target.position));if(12===e.target.type)return;if(e.event.preventDefault(),6!==e.target.type&&7!==e.target.type&&1!==e.target.type)return;if(this._editor.focus(),e.target.position){let t=!1;for(const i of this._editor.getSelections())if(i.containsPosition(e.target.position)){t=!0;break}t||this._editor.setPosition(e.target.position)}let t=null;1!==e.target.type&&(t={x:e.event.posx-1,width:2,y:e.event.posy-1,height:2}),this.showContextMenu(t)}showContextMenu(e){if(!this._editor.getOption(15))return;if(!this._editor.hasModel())return;if(!this._contextMenuService)return void this._editor.focus();const t=this._getMenuActions(this._editor.getModel(),c.eH.EditorContext);t.length>0&&this._doShowContextMenu(t,e)}_getMenuActions(e,t){const i=[],n=this._menuService.createMenu(t,this._contextKeyService),r=n.getActions({arg:e.uri});n.dispose();for(let t of r){const[,n]=t;let r=0;for(const t of n)if(t instanceof c.NZ){const n=this._getMenuActions(e,t.item.submenu);n.length>0&&(i.push(new s.wY(t.id,t.label,n)),r++)}else i.push(t),r++;r&&i.push(new s.Z0)}return i.length&&i.pop(),i}_doShowContextMenu(e,t=null){if(!this._editor.hasModel())return;const i=this._editor.getOption(46);if(this._editor.updateOptions({hover:{enabled:!1}}),!t){this._editor.revealPosition(this._editor.getPosition(),1),this._editor.render();const e=this._editor.getScrolledVisiblePosition(this._editor.getPosition()),i=r.i(this._editor.getDomNode()),n=i.left+e.left,s=i.top+e.top+e.height;t={x:n,y:s}}this._contextMenuIsBeingShownCount++,this._contextMenuService.showContextMenu({domForShadowRoot:this._editor.getDomNode(),getAnchor:()=>t,getActions:()=>e,getActionViewItem:e=>{const t=this._keybindingFor(e);if(t)return new g.g(e,e,{label:!0,keybinding:t.getLabel(),isMenu:!0});const i=e;return"function"==typeof i.getActionViewItem?i.getActionViewItem():new g.g(e,e,{icon:!0,label:!0,isMenu:!0})},getKeyBinding:e=>this._keybindingFor(e),onHide:e=>{this._contextMenuIsBeingShownCount--,this._editor.focus(),this._editor.updateOptions({hover:i})}})}_keybindingFor(e){return this._keybindingService.lookupKeybinding(e.id)}dispose(){this._contextMenuIsBeingShownCount>0&&this._contextViewService.hideContextView(),this._toDispose.dispose()}};p.ID="editor.contrib.contextmenu",p=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([f(1,h.i),f(2,h.u),f(3,d.i6),f(4,u.d),f(5,c.co)],p);class m extends a.R6{constructor(){super({id:"editor.action.showContextMenu",label:n.N("action.showContextMenu.label","Show Editor Context Menu"),alias:"Show Editor Context Menu",precondition:void 0,kbOpts:{kbExpr:l.u.textInputFocus,primary:1092,weight:100}})}run(e,t){p.get(t).showContextMenu()}}(0,a._K)(p.ID,p),(0,a.Qr)(m)},42834:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CursorUndoRedoController:()=>c,CursorUndo:()=>d,CursorRedo:()=>h});var n=i(63580),r=i(5976),s=i(16830),o=i(29102);class a{constructor(e){this.selections=e}equals(e){const t=this.selections.length;if(t!==e.selections.length)return!1;for(let i=0;i<t;i++)if(!this.selections[i].equalsSelection(e.selections[i]))return!1;return!0}}class l{constructor(e,t,i){this.cursorState=e,this.scrollTop=t,this.scrollLeft=i}}class c extends r.JT{constructor(e){super(),this._editor=e,this._isCursorUndoRedo=!1,this._undoStack=[],this._redoStack=[],this._register(e.onDidChangeModel((e=>{this._undoStack=[],this._redoStack=[]}))),this._register(e.onDidChangeModelContent((e=>{this._undoStack=[],this._redoStack=[]}))),this._register(e.onDidChangeCursorSelection((t=>{if(this._isCursorUndoRedo)return;if(!t.oldSelections)return;if(t.oldModelVersionId!==t.modelVersionId)return;const i=new a(t.oldSelections);this._undoStack.length>0&&this._undoStack[this._undoStack.length-1].cursorState.equals(i)||(this._undoStack.push(new l(i,e.getScrollTop(),e.getScrollLeft())),this._redoStack=[],this._undoStack.length>50&&this._undoStack.shift())})))}static get(e){return e.getContribution(c.ID)}cursorUndo(){this._editor.hasModel()&&0!==this._undoStack.length&&(this._redoStack.push(new l(new a(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._undoStack.pop()))}cursorRedo(){this._editor.hasModel()&&0!==this._redoStack.length&&(this._undoStack.push(new l(new a(this._editor.getSelections()),this._editor.getScrollTop(),this._editor.getScrollLeft())),this._applyState(this._redoStack.pop()))}_applyState(e){this._isCursorUndoRedo=!0,this._editor.setSelections(e.cursorState.selections),this._editor.setScrollPosition({scrollTop:e.scrollTop,scrollLeft:e.scrollLeft}),this._isCursorUndoRedo=!1}}c.ID="editor.contrib.cursorUndoRedoController";class d extends s.R6{constructor(){super({id:"cursorUndo",label:n.N("cursor.undo","Cursor Undo"),alias:"Cursor Undo",precondition:void 0,kbOpts:{kbExpr:o.u.textInputFocus,primary:2099,weight:100}})}run(e,t,i){c.get(t).cursorUndo()}}class h extends s.R6{constructor(){super({id:"cursorRedo",label:n.N("cursor.redo","Cursor Redo"),alias:"Cursor Redo",precondition:void 0})}run(e,t,i){c.get(t).cursorRedo()}}(0,s._K)(c.ID,c),(0,s.Qr)(d),(0,s.Qr)(h)},7441:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DragAndDropController:()=>u});var n=i(5976),r=i(1432),s=i(16830),o=i(50187),a=i(24314),l=i(3860);class c{constructor(e,t,i){this.selection=e,this.targetPosition=t,this.copy=i,this.targetSelection=null}getEditOperations(e,t){let i=e.getValueInRange(this.selection);this.copy||t.addEditOperation(this.selection,null),t.addEditOperation(new a.e(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column),i),!this.selection.containsPosition(this.targetPosition)||this.copy&&(this.selection.getEndPosition().equals(this.targetPosition)||this.selection.getStartPosition().equals(this.targetPosition))?this.copy?this.targetSelection=new l.Y(this.targetPosition.lineNumber,this.targetPosition.column,this.selection.endLineNumber-this.selection.startLineNumber+this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber>this.selection.endLineNumber?this.targetSelection=new l.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.targetPosition.lineNumber<this.selection.endLineNumber?this.targetSelection=new l.Y(this.targetPosition.lineNumber,this.targetPosition.column,this.targetPosition.lineNumber+this.selection.endLineNumber-this.selection.startLineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column+this.selection.endColumn-this.selection.startColumn:this.selection.endColumn):this.selection.endColumn<=this.targetPosition.column?this.targetSelection=new l.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,(this.selection.startLineNumber,this.selection.endLineNumber,this.targetPosition.column-this.selection.endColumn+this.selection.startColumn),this.targetPosition.lineNumber,this.selection.startLineNumber===this.selection.endLineNumber?this.targetPosition.column:this.selection.endColumn):this.targetSelection=new l.Y(this.targetPosition.lineNumber-this.selection.endLineNumber+this.selection.startLineNumber,this.targetPosition.column,this.targetPosition.lineNumber,this.targetPosition.column+this.selection.endColumn-this.selection.startColumn):this.targetSelection=this.selection}computeCursorState(e,t){return this.targetSelection}}var d=i(3411);function h(e){return r.dz?e.altKey:e.ctrlKey}class u extends n.JT{constructor(e){super(),this._editor=e,this._register(this._editor.onMouseDown((e=>this._onEditorMouseDown(e)))),this._register(this._editor.onMouseUp((e=>this._onEditorMouseUp(e)))),this._register(this._editor.onMouseDrag((e=>this._onEditorMouseDrag(e)))),this._register(this._editor.onMouseDrop((e=>this._onEditorMouseDrop(e)))),this._register(this._editor.onKeyDown((e=>this.onEditorKeyDown(e)))),this._register(this._editor.onKeyUp((e=>this.onEditorKeyUp(e)))),this._register(this._editor.onDidBlurEditorWidget((()=>this.onEditorBlur()))),this._register(this._editor.onDidBlurEditorText((()=>this.onEditorBlur()))),this._dndDecorationIds=[],this._mouseDown=!1,this._modifierPressed=!1,this._dragSelection=null}onEditorBlur(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1}onEditorKeyDown(e){this._editor.getOption(25)&&!this._editor.getOption(13)&&(h(e)&&(this._modifierPressed=!0),this._mouseDown&&h(e)&&this._editor.updateOptions({mouseStyle:"copy"}))}onEditorKeyUp(e){this._editor.getOption(25)&&!this._editor.getOption(13)&&(h(e)&&(this._modifierPressed=!1),this._mouseDown&&e.keyCode===u.TRIGGER_KEY_VALUE&&this._editor.updateOptions({mouseStyle:"default"}))}_onEditorMouseDown(e){this._mouseDown=!0}_onEditorMouseUp(e){this._mouseDown=!1,this._editor.updateOptions({mouseStyle:"text"})}_onEditorMouseDrag(e){let t=e.target;if(null===this._dragSelection){let e=(this._editor.getSelections()||[]).filter((e=>t.position&&e.containsPosition(t.position)));if(1!==e.length)return;this._dragSelection=e[0]}h(e.event)?this._editor.updateOptions({mouseStyle:"copy"}):this._editor.updateOptions({mouseStyle:"default"}),t.position&&(this._dragSelection.containsPosition(t.position)?this._removeDecoration():this.showAt(t.position))}_onEditorMouseDrop(e){if(e.target&&(this._hitContent(e.target)||this._hitMargin(e.target))&&e.target.position){let t=new o.L(e.target.position.lineNumber,e.target.position.column);if(null===this._dragSelection){let i=null;if(e.event.shiftKey){let e=this._editor.getSelection();if(e){const{selectionStartLineNumber:n,selectionStartColumn:r}=e;i=[new l.Y(n,r,t.lineNumber,t.column)]}}else i=(this._editor.getSelections()||[]).map((e=>e.containsPosition(t)?new l.Y(t.lineNumber,t.column,t.lineNumber,t.column):e));this._editor.setSelections(i||[],"mouse")}else(!this._dragSelection.containsPosition(t)||(h(e.event)||this._modifierPressed)&&(this._dragSelection.getEndPosition().equals(t)||this._dragSelection.getStartPosition().equals(t)))&&(this._editor.pushUndoStop(),this._editor.executeCommand(u.ID,new c(this._dragSelection,t,h(e.event)||this._modifierPressed)),this._editor.pushUndoStop())}this._editor.updateOptions({mouseStyle:"text"}),this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1}showAt(e){let t=[{range:new a.e(e.lineNumber,e.column,e.lineNumber,e.column),options:u._DECORATION_OPTIONS}];this._dndDecorationIds=this._editor.deltaDecorations(this._dndDecorationIds,t),this._editor.revealPosition(e,1)}_removeDecoration(){this._dndDecorationIds=this._editor.deltaDecorations(this._dndDecorationIds,[])}_hitContent(e){return 6===e.type||7===e.type}_hitMargin(e){return 2===e.type||3===e.type||4===e.type}dispose(){this._removeDecoration(),this._dragSelection=null,this._mouseDown=!1,this._modifierPressed=!1,super.dispose()}}u.ID="editor.contrib.dragAndDrop",u.TRIGGER_KEY_VALUE=r.dz?6:5,u._DECORATION_OPTIONS=d.qx.register({className:"dnd-target"}),(0,s._K)(u.ID,u)},86895:(e,t,i)=>{"use strict";i.d(t,{sT:()=>h,C3:()=>g});var n=i(9488),r=i(71050),s=i(17301),o=i(43702),a=i(43775),l=i(53725),c=i(59870);class d{remove(){this.parent&&this.parent.children.delete(this.id)}static findId(e,t){let i;"string"==typeof e?i=`${t.id}/${e}`:(i=`${t.id}/${e.name}`,void 0!==t.children.get(i)&&(i=`${t.id}/${e.name}_${e.range.startLineNumber}_${e.range.startColumn}`));let n=i;for(let e=0;void 0!==t.children.get(n);e++)n=`${i}_${e}`;return n}static empty(e){return 0===e.children.size}}class h extends d{constructor(e,t,i){super(),this.id=e,this.parent=t,this.symbol=i,this.children=new Map}}class u extends d{constructor(e,t,i,n){super(),this.id=e,this.parent=t,this.label=i,this.order=n,this.children=new Map}}class g extends d{constructor(e){super(),this.uri=e,this.id="root",this.parent=void 0,this._groups=new Map,this.children=new Map,this.id="root",this.parent=void 0}static create(e,t){let i=this._keys.for(e,!0),n=g._requests.get(i);if(!n){let t=new r.A;n={promiseCnt:0,source:t,promise:g._create(e,t.token),model:void 0},g._requests.set(i,n);const s=Date.now();n.promise.then((()=>{let t=this._keys.for(e,!1),i=this._requestDurations.get(t);i||(i=new c.n,this._requestDurations.set(t,i)),i.update(Date.now()-s)}))}return n.model?Promise.resolve(n.model):(n.promiseCnt+=1,t.onCancellationRequested((()=>{0==--n.promiseCnt&&(n.source.cancel(),g._requests.delete(i))})),new Promise(((e,t)=>{n.promise.then((t=>{n.model=t,e(t)}),(e=>{g._requests.delete(i),t(e)}))})))}static _create(e,t){const i=new r.A(t),o=new g(e.uri),l=a.vJ.ordered(e),c=l.map(((t,n)=>{var r;let a=d.findId(`provider_${n}`,o),l=new u(a,o,null!==(r=t.displayName)&&void 0!==r?r:"Unknown Outline Provider",n);return Promise.resolve(t.provideDocumentSymbols(e,i.token)).then((e=>{for(const t of e||[])g._makeOutlineElement(t,l);return l}),(e=>((0,s.Cp)(e),l))).then((e=>{d.empty(e)?e.remove():o._groups.set(a,e)}))})),h=a.vJ.onDidChange((()=>{const t=a.vJ.ordered(e);(0,n.fS)(t,l)||i.cancel()}));return Promise.all(c).then((()=>i.token.isCancellationRequested&&!t.isCancellationRequested?g._create(e,t):o._compact())).finally((()=>{h.dispose()}))}static _makeOutlineElement(e,t){let i=d.findId(e,t),n=new h(i,t,e);if(e.children)for(const t of e.children)g._makeOutlineElement(t,n);t.children.set(n.id,n)}_compact(){let e=0;for(const[t,i]of this._groups)0===i.children.size?this._groups.delete(t):e+=1;if(1!==e)this.children=this._groups;else{let e=l.$.first(this._groups.values());for(let[,t]of e.children)t.parent=this,this.children.set(t.id,t)}return this}}g._requestDurations=new o.z6(50,.7),g._requests=new o.z6(9,.75),g._keys=new class{constructor(){this._counter=1,this._data=new WeakMap}for(e,t){return`${e.id}/${t?e.getVersionId():""}/${this._hash(a.vJ.all(e))}`}_hash(e){let t="";for(const i of e){let e=this._data.get(i);void 0===e&&(e=this._counter++,this._data.set(i,e)),t+=e}return t}}},93391:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CommonFindController:()=>bt,EditorStartFindAction:()=>Tt,EditorStartFindReplaceAction:()=>It,FindController:()=>vt,MatchFindAction:()=>Ct,NextMatchFindAction:()=>St,NextMatchFindAction2:()=>kt,NextSelectionMatchFindAction:()=>Dt,PreviousMatchFindAction:()=>xt,PreviousMatchFindAction2:()=>Lt,PreviousSelectionMatchFindAction:()=>Nt,SelectionMatchFindAction:()=>Mt,StartFindAction:()=>yt,StartFindReplaceAction:()=>Et,StartFindWithSelectionAction:()=>wt,getSelectionSearchString:()=>_t});var n=i(63580),r=i(15393),s=i(5976),o=i(97295),a=i(16830),l=i(29102),c=i(61329),d=i(50187),h=i(24314),u=i(3860),g=i(77277),f=i(84973),p=i(3411),m=i(73910),_=i(97781);class b{constructor(e){this._editor=e,this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null,this._startPosition=this._editor.getPosition()}dispose(){this._editor.deltaDecorations(this._allDecorations(),[]),this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}reset(){this._decorations=[],this._overviewRulerApproximateDecorations=[],this._findScopeDecorationIds=[],this._rangeHighlightDecorationId=null,this._highlightedDecorationId=null}getCount(){return this._decorations.length}getFindScope(){return this._findScopeDecorationIds[0]?this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]):null}getFindScopes(){if(this._findScopeDecorationIds.length){const e=this._findScopeDecorationIds.map((e=>this._editor.getModel().getDecorationRange(e))).filter((e=>!!e));if(e.length)return e}return null}getStartPosition(){return this._startPosition}setStartPosition(e){this._startPosition=e,this.setCurrentFindMatch(null)}_getDecorationIndex(e){const t=this._decorations.indexOf(e);return t>=0?t+1:1}getCurrentMatchesPosition(e){let t=this._editor.getModel().getDecorationsInRange(e);for(const e of t){const t=e.options;if(t===b._FIND_MATCH_DECORATION||t===b._CURRENT_FIND_MATCH_DECORATION)return this._getDecorationIndex(e.id)}return 0}setCurrentFindMatch(e){let t=null,i=0;if(e)for(let n=0,r=this._decorations.length;n<r;n++){let r=this._editor.getModel().getDecorationRange(this._decorations[n]);if(e.equalsRange(r)){t=this._decorations[n],i=n+1;break}}return null===this._highlightedDecorationId&&null===t||this._editor.changeDecorations((e=>{if(null!==this._highlightedDecorationId&&(e.changeDecorationOptions(this._highlightedDecorationId,b._FIND_MATCH_DECORATION),this._highlightedDecorationId=null),null!==t&&(this._highlightedDecorationId=t,e.changeDecorationOptions(this._highlightedDecorationId,b._CURRENT_FIND_MATCH_DECORATION)),null!==this._rangeHighlightDecorationId&&(e.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),null!==t){let i=this._editor.getModel().getDecorationRange(t);if(i.startLineNumber!==i.endLineNumber&&1===i.endColumn){let e=i.endLineNumber-1,t=this._editor.getModel().getLineMaxColumn(e);i=new h.e(i.startLineNumber,i.startColumn,e,t)}this._rangeHighlightDecorationId=e.addDecoration(i,b._RANGE_HIGHLIGHT_DECORATION)}})),i}set(e,t){this._editor.changeDecorations((i=>{let n=b._FIND_MATCH_DECORATION,r=[];if(e.length>1e3){n=b._FIND_MATCH_NO_OVERVIEW_DECORATION;const t=this._editor.getModel().getLineCount(),i=this._editor.getLayoutInfo().height/t,s=Math.max(2,Math.ceil(3/i));let o=e[0].range.startLineNumber,a=e[0].range.endLineNumber;for(let t=1,i=e.length;t<i;t++){const i=e[t].range;a+s>=i.startLineNumber?i.endLineNumber>a&&(a=i.endLineNumber):(r.push({range:new h.e(o,1,a,1),options:b._FIND_MATCH_ONLY_OVERVIEW_DECORATION}),o=i.startLineNumber,a=i.endLineNumber)}r.push({range:new h.e(o,1,a,1),options:b._FIND_MATCH_ONLY_OVERVIEW_DECORATION})}let s=new Array(e.length);for(let t=0,i=e.length;t<i;t++)s[t]={range:e[t].range,options:n};this._decorations=i.deltaDecorations(this._decorations,s),this._overviewRulerApproximateDecorations=i.deltaDecorations(this._overviewRulerApproximateDecorations,r),this._rangeHighlightDecorationId&&(i.removeDecoration(this._rangeHighlightDecorationId),this._rangeHighlightDecorationId=null),this._findScopeDecorationIds.length&&(this._findScopeDecorationIds.forEach((e=>i.removeDecoration(e))),this._findScopeDecorationIds=[]),(null==t?void 0:t.length)&&(this._findScopeDecorationIds=t.map((e=>i.addDecoration(e,b._FIND_SCOPE_DECORATION))))}))}matchBeforePosition(e){if(0===this._decorations.length)return null;for(let t=this._decorations.length-1;t>=0;t--){let i=this._decorations[t],n=this._editor.getModel().getDecorationRange(i);if(n&&!(n.endLineNumber>e.lineNumber)){if(n.endLineNumber<e.lineNumber)return n;if(!(n.endColumn>e.column))return n}}return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length-1])}matchAfterPosition(e){if(0===this._decorations.length)return null;for(let t=0,i=this._decorations.length;t<i;t++){let i=this._decorations[t],n=this._editor.getModel().getDecorationRange(i);if(n&&!(n.startLineNumber<e.lineNumber)){if(n.startLineNumber>e.lineNumber)return n;if(!(n.startColumn<e.column))return n}}return this._editor.getModel().getDecorationRange(this._decorations[0])}_allDecorations(){let e=[];return e=e.concat(this._decorations),e=e.concat(this._overviewRulerApproximateDecorations),this._findScopeDecorationIds.length&&e.push(...this._findScopeDecorationIds),this._rangeHighlightDecorationId&&e.push(this._rangeHighlightDecorationId),e}}b._CURRENT_FIND_MATCH_DECORATION=p.qx.register({stickiness:1,zIndex:13,className:"currentFindMatch",showIfCollapsed:!0,overviewRuler:{color:(0,_.EN)(m.Fm),position:f.sh.Center},minimap:{color:(0,_.EN)(m.KT),position:f.F5.Inline}}),b._FIND_MATCH_DECORATION=p.qx.register({stickiness:1,className:"findMatch",showIfCollapsed:!0,overviewRuler:{color:(0,_.EN)(m.Fm),position:f.sh.Center},minimap:{color:(0,_.EN)(m.KT),position:f.F5.Inline}}),b._FIND_MATCH_NO_OVERVIEW_DECORATION=p.qx.register({stickiness:1,className:"findMatch",showIfCollapsed:!0}),b._FIND_MATCH_ONLY_OVERVIEW_DECORATION=p.qx.register({stickiness:1,overviewRuler:{color:(0,_.EN)(m.Fm),position:f.sh.Center}}),b._RANGE_HIGHLIGHT_DECORATION=p.qx.register({stickiness:1,className:"rangeHighlight",isWholeLine:!0}),b._FIND_SCOPE_DECORATION=p.qx.register({className:"findScope",isWholeLine:!0});class v{constructor(e,t,i){this._editorSelection=e,this._ranges=t,this._replaceStrings=i,this._trackedEditorSelectionId=null}getEditOperations(e,t){if(this._ranges.length>0){let e=[];for(let t=0;t<this._ranges.length;t++)e.push({range:this._ranges[t],text:this._replaceStrings[t]});e.sort(((e,t)=>h.e.compareRangesUsingStarts(e.range,t.range)));let i=[],n=e[0];for(let t=1;t<e.length;t++)n.range.endLineNumber===e[t].range.startLineNumber&&n.range.endColumn===e[t].range.startColumn?(n.range=n.range.plusRange(e[t].range),n.text=n.text+e[t].text):(i.push(n),n=e[t]);i.push(n);for(const e of i)t.addEditOperation(e.range,e.text)}this._trackedEditorSelectionId=t.trackSelection(this._editorSelection)}computeCursorState(e,t){return t.getTrackedSelection(this._trackedEditorSelectionId)}}function y(e,t){if(e&&""!==e[0]){const i=w(e,t,"-"),n=w(e,t,"_");return i&&!n?C(e,t,"-"):!i&&n?C(e,t,"_"):e[0].toUpperCase()===e[0]?t.toUpperCase():e[0].toLowerCase()===e[0]?t.toLowerCase():o.Kw(e[0][0])&&t.length>0?t[0].toUpperCase()+t.substr(1):t}return t}function w(e,t,i){return-1!==e[0].indexOf(i)&&-1!==t.indexOf(i)&&e[0].split(i).length===t.split(i).length}function C(e,t,i){const n=t.split(i),r=e[0].split(i);let s="";return n.forEach(((e,t)=>{s+=y([r[t]],e)+i})),s.slice(0,-1)}class S{constructor(e){this.staticValue=e,this.kind=0}}class k{constructor(e){this.pieces=e,this.kind=1}}class x{constructor(e){e&&0!==e.length?1===e.length&&null!==e[0].staticValue?this._state=new S(e[0].staticValue):this._state=new k(e):this._state=new S("")}static fromStaticValue(e){return new x([L.staticValue(e)])}get hasReplacementPatterns(){return 1===this._state.kind}buildReplaceString(e,t){if(0===this._state.kind)return t?y(e,this._state.staticValue):this._state.staticValue;let i="";for(let t=0,n=this._state.pieces.length;t<n;t++){let n=this._state.pieces[t];if(null!==n.staticValue){i+=n.staticValue;continue}let r=x._substitute(n.matchIndex,e);if(null!==n.caseOps&&n.caseOps.length>0){let e=[],t=n.caseOps.length,i=0;for(let s=0,o=r.length;s<o;s++){if(i>=t){e.push(r.slice(s));break}switch(n.caseOps[i]){case"U":e.push(r[s].toUpperCase());break;case"u":e.push(r[s].toUpperCase()),i++;break;case"L":e.push(r[s].toLowerCase());break;case"l":e.push(r[s].toLowerCase()),i++;break;default:e.push(r[s])}}r=e.join("")}i+=r}return i}static _substitute(e,t){if(null===t)return"";if(0===e)return t[0];let i="";for(;e>0;){if(e<t.length)return(t[e]||"")+i;i=String(e%10)+i,e=Math.floor(e/10)}return"$"+i}}class L{constructor(e,t,i){this.staticValue=e,this.matchIndex=t,i&&0!==i.length?this.caseOps=i.slice(0):this.caseOps=null}static staticValue(e){return new L(e,-1,null)}static caseOps(e,t){return new L(null,e,t)}}class M{constructor(e){this._source=e,this._lastCharIndex=0,this._result=[],this._resultLen=0,this._currentStaticPiece=""}emitUnchanged(e){this._emitStatic(this._source.substring(this._lastCharIndex,e)),this._lastCharIndex=e}emitStatic(e,t){this._emitStatic(e),this._lastCharIndex=t}_emitStatic(e){0!==e.length&&(this._currentStaticPiece+=e)}emitMatchIndex(e,t,i){0!==this._currentStaticPiece.length&&(this._result[this._resultLen++]=L.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),this._result[this._resultLen++]=L.caseOps(e,i),this._lastCharIndex=t}finalize(){return this.emitUnchanged(this._source.length),0!==this._currentStaticPiece.length&&(this._result[this._resultLen++]=L.staticValue(this._currentStaticPiece),this._currentStaticPiece=""),new x(this._result)}}var D=i(38819),N=i(9488);const E=new D.uy("findWidgetVisible",!1),T=new D.uy("findInputFocussed",!1),I=new D.uy("replaceInputFocussed",!1),O={primary:545,mac:{primary:2593}},A={primary:565,mac:{primary:2613}},R={primary:560,mac:{primary:2608}},P={primary:554,mac:{primary:2602}},F="editor.action.nextMatchFindAction",B="editor.action.previousMatchFindAction",W="closeFindWidget",Y="toggleFindCaseSensitive",H="toggleFindWholeWord",j="toggleFindRegex",V="toggleFindInSelection",z="editor.action.replaceOne",U="editor.action.replaceAll",$=19999;class K{constructor(e,t){this._toDispose=new s.SL,this._editor=e,this._state=t,this._isDisposed=!1,this._startSearchingTimer=new r._F,this._decorations=new b(e),this._toDispose.add(this._decorations),this._updateDecorationsScheduler=new r.pY((()=>this.research(!1)),100),this._toDispose.add(this._updateDecorationsScheduler),this._toDispose.add(this._editor.onDidChangeCursorPosition((e=>{3!==e.reason&&5!==e.reason&&6!==e.reason||this._decorations.setStartPosition(this._editor.getPosition())}))),this._ignoreModelContentChanged=!1,this._toDispose.add(this._editor.onDidChangeModelContent((e=>{this._ignoreModelContentChanged||(e.isFlush&&this._decorations.reset(),this._decorations.setStartPosition(this._editor.getPosition()),this._updateDecorationsScheduler.schedule())}))),this._toDispose.add(this._state.onFindReplaceStateChange((e=>this._onStateChanged(e)))),this.research(!1,this._state.searchScope)}dispose(){this._isDisposed=!0,(0,s.B9)(this._startSearchingTimer),this._toDispose.dispose()}_onStateChanged(e){!this._isDisposed&&this._editor.hasModel()&&(e.searchString||e.isReplaceRevealed||e.isRegex||e.wholeWord||e.matchCase||e.searchScope)&&(this._editor.getModel().isTooLargeForSyncing()?(this._startSearchingTimer.cancel(),this._startSearchingTimer.setIfNotSet((()=>{e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor)}),240)):e.searchScope?this.research(e.moveCursor,this._state.searchScope):this.research(e.moveCursor))}static _getSearchRange(e,t){return t||e.getFullModelRange()}research(e,t){let i=null;void 0!==t?null!==t&&(i=Array.isArray(t)?t:[t]):i=this._decorations.getFindScopes(),null!==i&&(i=i.map((e=>{if(e.startLineNumber!==e.endLineNumber){let t=e.endLineNumber;return 1===e.endColumn&&(t-=1),new h.e(e.startLineNumber,1,t,this._editor.getModel().getLineMaxColumn(t))}return e})));let n=this._findMatches(i,!1,$);this._decorations.set(n,i);const r=this._editor.getSelection();let s=this._decorations.getCurrentMatchesPosition(r);if(0===s&&n.length>0){const e=(0,N.lG)(n.map((e=>e.range)),(e=>h.e.compareRangesUsingStarts(e,r)>=0));s=e>0?e-1+1:s}this._state.changeMatchInfo(s,this._decorations.getCount(),void 0),e&&this._editor.getOption(29).cursorMoveOnType&&this._moveToNextMatch(this._decorations.getStartPosition())}_hasMatches(){return this._state.matchesCount>0}_cannotFind(){if(!this._hasMatches()){let e=this._decorations.getFindScope();return e&&this._editor.revealRangeInCenterIfOutsideViewport(e,0),!0}return!1}_setCurrentFindMatch(e){let t=this._decorations.setCurrentFindMatch(e);this._state.changeMatchInfo(t,this._decorations.getCount(),e),this._editor.setSelection(e),this._editor.revealRangeInCenterIfOutsideViewport(e,0)}_prevSearchPosition(e){let t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0),{lineNumber:i,column:n}=e,r=this._editor.getModel();return t||1===n?(1===i?i=r.getLineCount():i--,n=r.getLineMaxColumn(i)):n--,new d.L(i,n)}_moveToPrevMatch(e,t=!1){if(!this._state.canNavigateBack()){const t=this._decorations.matchAfterPosition(e);return void(t&&this._setCurrentFindMatch(t))}if(this._decorations.getCount()<$){let t=this._decorations.matchBeforePosition(e);return t&&t.isEmpty()&&t.getStartPosition().equals(e)&&(e=this._prevSearchPosition(e),t=this._decorations.matchBeforePosition(e)),void(t&&this._setCurrentFindMatch(t))}if(this._cannotFind())return;let i=this._decorations.getFindScope(),n=K._getSearchRange(this._editor.getModel(),i);n.getEndPosition().isBefore(e)&&(e=n.getEndPosition()),e.isBefore(n.getStartPosition())&&(e=n.getEndPosition());let{lineNumber:r,column:s}=e,o=this._editor.getModel(),a=new d.L(r,s),l=o.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(105):null,!1);return l&&l.range.isEmpty()&&l.range.getStartPosition().equals(a)&&(a=this._prevSearchPosition(a),l=o.findPreviousMatch(this._state.searchString,a,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(105):null,!1)),l?t||n.containsRange(l.range)?void this._setCurrentFindMatch(l.range):this._moveToPrevMatch(l.range.getStartPosition(),!0):void 0}moveToPrevMatch(){this._moveToPrevMatch(this._editor.getSelection().getStartPosition())}_nextSearchPosition(e){let t=this._state.isRegex&&(this._state.searchString.indexOf("^")>=0||this._state.searchString.indexOf("$")>=0),{lineNumber:i,column:n}=e,r=this._editor.getModel();return t||n===r.getLineMaxColumn(i)?(i===r.getLineCount()?i=1:i++,n=1):n++,new d.L(i,n)}_moveToNextMatch(e){if(!this._state.canNavigateForward()){const t=this._decorations.matchBeforePosition(e);return void(t&&this._setCurrentFindMatch(t))}if(this._decorations.getCount()<$){let t=this._decorations.matchAfterPosition(e);return t&&t.isEmpty()&&t.getStartPosition().equals(e)&&(e=this._nextSearchPosition(e),t=this._decorations.matchAfterPosition(e)),void(t&&this._setCurrentFindMatch(t))}let t=this._getNextMatch(e,!1,!0);t&&this._setCurrentFindMatch(t.range)}_getNextMatch(e,t,i,n=!1){if(this._cannotFind())return null;let r=this._decorations.getFindScope(),s=K._getSearchRange(this._editor.getModel(),r);s.getEndPosition().isBefore(e)&&(e=s.getStartPosition()),e.isBefore(s.getStartPosition())&&(e=s.getStartPosition());let{lineNumber:o,column:a}=e,l=this._editor.getModel(),c=new d.L(o,a),h=l.findNextMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(105):null,t);return i&&h&&h.range.isEmpty()&&h.range.getStartPosition().equals(c)&&(c=this._nextSearchPosition(c),h=l.findNextMatch(this._state.searchString,c,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(105):null,t)),h?n||s.containsRange(h.range)?h:this._getNextMatch(h.range.getEndPosition(),t,i,!0):null}moveToNextMatch(){this._moveToNextMatch(this._editor.getSelection().getEndPosition())}_getReplacePattern(){return this._state.isRegex?function(e){if(!e||0===e.length)return new x(null);let t=[],i=new M(e);for(let n=0,r=e.length;n<r;n++){let s=e.charCodeAt(n);if(92!==s){if(36===s){if(n++,n>=r)break;let s=e.charCodeAt(n);if(36===s){i.emitUnchanged(n-1),i.emitStatic("$",n+1);continue}if(48===s||38===s){i.emitUnchanged(n-1),i.emitMatchIndex(0,n+1,t),t.length=0;continue}if(49<=s&&s<=57){let o=s-48;if(n+1<r){let r=e.charCodeAt(n+1);if(48<=r&&r<=57){n++,o=10*o+(r-48),i.emitUnchanged(n-2),i.emitMatchIndex(o,n+1,t),t.length=0;continue}}i.emitUnchanged(n-1),i.emitMatchIndex(o,n+1,t),t.length=0;continue}}}else{if(n++,n>=r)break;let s=e.charCodeAt(n);switch(s){case 92:i.emitUnchanged(n-1),i.emitStatic("\\",n+1);break;case 110:i.emitUnchanged(n-1),i.emitStatic("\n",n+1);break;case 116:i.emitUnchanged(n-1),i.emitStatic("\t",n+1);break;case 117:case 85:case 108:case 76:i.emitUnchanged(n-1),i.emitStatic("",n+1),t.push(String.fromCharCode(s))}}}return i.finalize()}(this._state.replaceString):x.fromStaticValue(this._state.replaceString)}replace(){if(!this._hasMatches())return;let e=this._getReplacePattern(),t=this._editor.getSelection(),i=this._getNextMatch(t.getStartPosition(),!0,!1);if(i)if(t.equalsRange(i.range)){let n=e.buildReplaceString(i.matches,this._state.preserveCase),r=new c.T4(t,n);this._executeEditorCommand("replace",r),this._decorations.setStartPosition(new d.L(t.startLineNumber,t.startColumn+n.length)),this.research(!0)}else this._decorations.setStartPosition(this._editor.getPosition()),this._setCurrentFindMatch(i.range)}_findMatches(e,t,i){const n=(e||[null]).map((e=>K._getSearchRange(this._editor.getModel(),e)));return this._editor.getModel().findMatches(this._state.searchString,n,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(105):null,t,i)}replaceAll(){if(!this._hasMatches())return;const e=this._decorations.getFindScopes();null===e&&this._state.matchesCount>=$?this._largeReplaceAll():this._regularReplaceAll(e),this.research(!1)}_largeReplaceAll(){const e=new g.bc(this._state.searchString,this._state.isRegex,this._state.matchCase,this._state.wholeWord?this._editor.getOption(105):null).parseSearchRequest();if(!e)return;let t=e.regex;if(!t.multiline){let e="mu";t.ignoreCase&&(e+="i"),t.global&&(e+="g"),t=new RegExp(t.source,e)}const i=this._editor.getModel(),n=i.getValue(1),r=i.getFullModelRange(),s=this._getReplacePattern();let o;const a=this._state.preserveCase;o=s.hasReplacementPatterns||a?n.replace(t,(function(){return s.buildReplaceString(arguments,a)})):n.replace(t,s.buildReplaceString(null,a));let l=new c.hP(r,o,this._editor.getSelection());this._executeEditorCommand("replaceAll",l)}_regularReplaceAll(e){const t=this._getReplacePattern();let i=this._findMatches(e,t.hasReplacementPatterns||this._state.preserveCase,1073741824),n=[];for(let e=0,r=i.length;e<r;e++)n[e]=t.buildReplaceString(i[e].matches,this._state.preserveCase);let r=new v(this._editor.getSelection(),i.map((e=>e.range)),n);this._executeEditorCommand("replaceAll",r)}selectAllMatches(){if(!this._hasMatches())return;let e=this._decorations.getFindScopes(),t=this._findMatches(e,!1,1073741824).map((e=>new u.Y(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn))),i=this._editor.getSelection();for(let e=0,n=t.length;e<n;e++)if(t[e].equalsRange(i)){t=[i].concat(t.slice(0,e)).concat(t.slice(e+1));break}this._editor.setSelections(t)}_executeEditorCommand(e,t){try{this._ignoreModelContentChanged=!0,this._editor.pushUndoStop(),this._editor.executeCommand(e,t),this._editor.pushUndoStop()}finally{this._ignoreModelContentChanged=!1}}}var q=i(65321),G=i(93794),Z=i(41264),J=i(4669);const Q={inputActiveOptionBorder:Z.Il.fromHex("#007ACC00"),inputActiveOptionForeground:Z.Il.fromHex("#FFFFFF"),inputActiveOptionBackground:Z.Il.fromHex("#0E639C50")};class X extends G.${constructor(e){super(),this._onChange=this._register(new J.Q5),this.onChange=this._onChange.event,this._onKeyDown=this._register(new J.Q5),this.onKeyDown=this._onKeyDown.event,this._opts=Object.assign(Object.assign({},Q),e),this._checked=this._opts.isChecked;const t=["monaco-custom-checkbox"];this._opts.icon?t.push(this._opts.icon.classNames):t.push("codicon"),this._opts.actionClassName&&t.push(this._opts.actionClassName),t.push(this._checked?"checked":"unchecked"),this.domNode=document.createElement("div"),this.domNode.title=this._opts.title,this.domNode.className=t.join(" "),this.domNode.tabIndex=0,this.domNode.setAttribute("role","checkbox"),this.domNode.setAttribute("aria-checked",String(this._checked)),this.domNode.setAttribute("aria-label",this._opts.title),this.applyStyles(),this.onclick(this.domNode,(e=>{this.checked=!this._checked,this._onChange.fire(!1),e.preventDefault()})),this.ignoreGesture(this.domNode),this.onkeydown(this.domNode,(e=>{if(10===e.keyCode||3===e.keyCode)return this.checked=!this._checked,this._onChange.fire(!0),void e.preventDefault();this._onKeyDown.fire(e)}))}get enabled(){return"true"!==this.domNode.getAttribute("aria-disabled")}focus(){this.domNode.focus()}get checked(){return this._checked}set checked(e){this._checked=e,this.domNode.setAttribute("aria-checked",String(this._checked)),this._checked?this.domNode.classList.add("checked"):this.domNode.classList.remove("checked"),this.applyStyles()}width(){return 22}style(e){e.inputActiveOptionBorder&&(this._opts.inputActiveOptionBorder=e.inputActiveOptionBorder),e.inputActiveOptionForeground&&(this._opts.inputActiveOptionForeground=e.inputActiveOptionForeground),e.inputActiveOptionBackground&&(this._opts.inputActiveOptionBackground=e.inputActiveOptionBackground),this.applyStyles()}applyStyles(){this.domNode&&(this.domNode.style.borderColor=this._checked&&this._opts.inputActiveOptionBorder?this._opts.inputActiveOptionBorder.toString():"transparent",this.domNode.style.color=this._checked&&this._opts.inputActiveOptionForeground?this._opts.inputActiveOptionForeground.toString():"inherit",this.domNode.style.backgroundColor=this._checked&&this._opts.inputActiveOptionBackground?this._opts.inputActiveOptionBackground.toString():"transparent")}enable(){this.domNode.tabIndex=0,this.domNode.setAttribute("aria-disabled",String(!1))}disable(){q.eJ(this.domNode),this.domNode.setAttribute("aria-disabled",String(!0))}}var ee=i(73046);const te=n.N("caseDescription","Match Case"),ie=n.N("wordsDescription","Match Whole Word"),ne=n.N("regexDescription","Use Regular Expression");class re extends X{constructor(e){super({icon:ee.lA.caseSensitive,title:te+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class se extends X{constructor(e){super({icon:ee.lA.wholeWord,title:ie+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class oe extends X{constructor(e){super({icon:ee.lA.regex,title:ne+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class ae extends G.${constructor(e,t,i,n){super(),this._hideSoon=this._register(new r.pY((()=>this._hide()),2e3)),this._isVisible=!1,this._editor=e,this._state=t,this._keybindingService=i,this._domNode=document.createElement("div"),this._domNode.className="findOptionsWidget",this._domNode.style.display="none",this._domNode.style.top="10px",this._domNode.setAttribute("role","presentation"),this._domNode.setAttribute("aria-hidden","true");const s=n.getColorTheme().getColor(m.PR),o=n.getColorTheme().getColor(m.Pv),a=n.getColorTheme().getColor(m.XE);this.caseSensitive=this._register(new re({appendTitle:this._keybindingLabelFor(Y),isChecked:this._state.matchCase,inputActiveOptionBorder:s,inputActiveOptionForeground:o,inputActiveOptionBackground:a})),this._domNode.appendChild(this.caseSensitive.domNode),this._register(this.caseSensitive.onChange((()=>{this._state.change({matchCase:this.caseSensitive.checked},!1)}))),this.wholeWords=this._register(new se({appendTitle:this._keybindingLabelFor(H),isChecked:this._state.wholeWord,inputActiveOptionBorder:s,inputActiveOptionForeground:o,inputActiveOptionBackground:a})),this._domNode.appendChild(this.wholeWords.domNode),this._register(this.wholeWords.onChange((()=>{this._state.change({wholeWord:this.wholeWords.checked},!1)}))),this.regex=this._register(new oe({appendTitle:this._keybindingLabelFor(j),isChecked:this._state.isRegex,inputActiveOptionBorder:s,inputActiveOptionForeground:o,inputActiveOptionBackground:a})),this._domNode.appendChild(this.regex.domNode),this._register(this.regex.onChange((()=>{this._state.change({isRegex:this.regex.checked},!1)}))),this._editor.addOverlayWidget(this),this._register(this._state.onFindReplaceStateChange((e=>{let t=!1;e.isRegex&&(this.regex.checked=this._state.isRegex,t=!0),e.wholeWord&&(this.wholeWords.checked=this._state.wholeWord,t=!0),e.matchCase&&(this.caseSensitive.checked=this._state.matchCase,t=!0),!this._state.isRevealed&&t&&this._revealTemporarily()}))),this._register(q.j_(this._domNode,(e=>this._onMouseOut()))),this._register(q.nm(this._domNode,"mouseover",(e=>this._onMouseOver()))),this._applyTheme(n.getColorTheme()),this._register(n.onDidColorThemeChange(this._applyTheme.bind(this)))}_keybindingLabelFor(e){let t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return ae.ID}getDomNode(){return this._domNode}getPosition(){return{preference:0}}highlightFindOptions(){this._revealTemporarily()}_revealTemporarily(){this._show(),this._hideSoon.schedule()}_onMouseOut(){this._hideSoon.schedule()}_onMouseOver(){this._hideSoon.cancel()}_show(){this._isVisible||(this._isVisible=!0,this._domNode.style.display="block")}_hide(){this._isVisible&&(this._isVisible=!1,this._domNode.style.display="none")}_applyTheme(e){let t={inputActiveOptionBorder:e.getColor(m.PR),inputActiveOptionForeground:e.getColor(m.Pv),inputActiveOptionBackground:e.getColor(m.XE)};this.caseSensitive.style(t),this.wholeWords.style(t),this.regex.style(t)}}function le(e,t){return 1===e||2!==e&&t}ae.ID="editor.contrib.findOptionsWidget",(0,_.Ic)(((e,t)=>{const i=e.getColor(m.D0);i&&t.addRule(`.monaco-editor .findOptionsWidget { background-color: ${i}; }`);const n=e.getColor(m.Hf);n&&t.addRule(`.monaco-editor .findOptionsWidget { color: ${n}; }`);const r=e.getColor(m.rh);r&&t.addRule(`.monaco-editor .findOptionsWidget { box-shadow: 0 2px 8px ${r}; }`);const s=e.getColor(m.lR);s&&t.addRule(`.monaco-editor .findOptionsWidget { border: 2px solid ${s}; }`)}));class ce extends s.JT{constructor(){super(),this._onFindReplaceStateChange=this._register(new J.Q5),this.onFindReplaceStateChange=this._onFindReplaceStateChange.event,this._searchString="",this._replaceString="",this._isRevealed=!1,this._isReplaceRevealed=!1,this._isRegex=!1,this._isRegexOverride=0,this._wholeWord=!1,this._wholeWordOverride=0,this._matchCase=!1,this._matchCaseOverride=0,this._preserveCase=!1,this._preserveCaseOverride=0,this._searchScope=null,this._matchesPosition=0,this._matchesCount=0,this._currentMatch=null,this._loop=!0}get searchString(){return this._searchString}get replaceString(){return this._replaceString}get isRevealed(){return this._isRevealed}get isReplaceRevealed(){return this._isReplaceRevealed}get isRegex(){return le(this._isRegexOverride,this._isRegex)}get wholeWord(){return le(this._wholeWordOverride,this._wholeWord)}get matchCase(){return le(this._matchCaseOverride,this._matchCase)}get preserveCase(){return le(this._preserveCaseOverride,this._preserveCase)}get actualIsRegex(){return this._isRegex}get actualWholeWord(){return this._wholeWord}get actualMatchCase(){return this._matchCase}get actualPreserveCase(){return this._preserveCase}get searchScope(){return this._searchScope}get matchesPosition(){return this._matchesPosition}get matchesCount(){return this._matchesCount}get currentMatch(){return this._currentMatch}changeMatchInfo(e,t,i){let n={moveCursor:!1,updateHistory:!1,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1},r=!1;0===t&&(e=0),e>t&&(e=t),this._matchesPosition!==e&&(this._matchesPosition=e,n.matchesPosition=!0,r=!0),this._matchesCount!==t&&(this._matchesCount=t,n.matchesCount=!0,r=!0),void 0!==i&&(h.e.equalsRange(this._currentMatch,i)||(this._currentMatch=i,n.currentMatch=!0,r=!0)),r&&this._onFindReplaceStateChange.fire(n)}change(e,t,i=!0){var n;let r={moveCursor:t,updateHistory:i,searchString:!1,replaceString:!1,isRevealed:!1,isReplaceRevealed:!1,isRegex:!1,wholeWord:!1,matchCase:!1,preserveCase:!1,searchScope:!1,matchesPosition:!1,matchesCount:!1,currentMatch:!1,loop:!1},s=!1;const o=this.isRegex,a=this.wholeWord,l=this.matchCase,c=this.preserveCase;void 0!==e.searchString&&this._searchString!==e.searchString&&(this._searchString=e.searchString,r.searchString=!0,s=!0),void 0!==e.replaceString&&this._replaceString!==e.replaceString&&(this._replaceString=e.replaceString,r.replaceString=!0,s=!0),void 0!==e.isRevealed&&this._isRevealed!==e.isRevealed&&(this._isRevealed=e.isRevealed,r.isRevealed=!0,s=!0),void 0!==e.isReplaceRevealed&&this._isReplaceRevealed!==e.isReplaceRevealed&&(this._isReplaceRevealed=e.isReplaceRevealed,r.isReplaceRevealed=!0,s=!0),void 0!==e.isRegex&&(this._isRegex=e.isRegex),void 0!==e.wholeWord&&(this._wholeWord=e.wholeWord),void 0!==e.matchCase&&(this._matchCase=e.matchCase),void 0!==e.preserveCase&&(this._preserveCase=e.preserveCase),void 0!==e.searchScope&&((null===(n=e.searchScope)||void 0===n?void 0:n.every((e=>{var t;return null===(t=this._searchScope)||void 0===t?void 0:t.some((t=>!h.e.equalsRange(t,e)))})))||(this._searchScope=e.searchScope,r.searchScope=!0,s=!0)),void 0!==e.loop&&this._loop!==e.loop&&(this._loop=e.loop,r.loop=!0,s=!0),this._isRegexOverride=void 0!==e.isRegexOverride?e.isRegexOverride:0,this._wholeWordOverride=void 0!==e.wholeWordOverride?e.wholeWordOverride:0,this._matchCaseOverride=void 0!==e.matchCaseOverride?e.matchCaseOverride:0,this._preserveCaseOverride=void 0!==e.preserveCaseOverride?e.preserveCaseOverride:0,o!==this.isRegex&&(s=!0,r.isRegex=!0),a!==this.wholeWord&&(s=!0,r.wholeWord=!0),l!==this.matchCase&&(s=!0,r.matchCase=!0),c!==this.preserveCase&&(s=!0,r.preserveCase=!0),s&&this._onFindReplaceStateChange.fire(r)}canNavigateBack(){return this.canNavigateInLoop()||1!==this.matchesPosition}canNavigateForward(){return this.canNavigateInLoop()||this.matchesPosition<this.matchesCount}canNavigateInLoop(){return this._loop||this.matchesCount>=$}}var de=i(85152),he=i(73098),ue=i(17301),ge=i(1432),fe=i(77927);const pe=n.N("defaultLabel","input");class me extends G.${constructor(e,t,i,n){super(),this._showOptionButtons=i,this.fixFocusOnOptionClickEnabled=!0,this._onDidOptionChange=this._register(new J.Q5),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new J.Q5),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new J.Q5),this.onMouseDown=this._onMouseDown.event,this._onInput=this._register(new J.Q5),this._onKeyUp=this._register(new J.Q5),this._onCaseSensitiveKeyDown=this._register(new J.Q5),this.onCaseSensitiveKeyDown=this._onCaseSensitiveKeyDown.event,this._onRegexKeyDown=this._register(new J.Q5),this.onRegexKeyDown=this._onRegexKeyDown.event,this._lastHighlightFindOptions=0,this.contextViewProvider=t,this.placeholder=n.placeholder||"",this.validation=n.validation,this.label=n.label||pe,this.inputActiveOptionBorder=n.inputActiveOptionBorder,this.inputActiveOptionForeground=n.inputActiveOptionForeground,this.inputActiveOptionBackground=n.inputActiveOptionBackground,this.inputBackground=n.inputBackground,this.inputForeground=n.inputForeground,this.inputBorder=n.inputBorder,this.inputValidationInfoBorder=n.inputValidationInfoBorder,this.inputValidationInfoBackground=n.inputValidationInfoBackground,this.inputValidationInfoForeground=n.inputValidationInfoForeground,this.inputValidationWarningBorder=n.inputValidationWarningBorder,this.inputValidationWarningBackground=n.inputValidationWarningBackground,this.inputValidationWarningForeground=n.inputValidationWarningForeground,this.inputValidationErrorBorder=n.inputValidationErrorBorder,this.inputValidationErrorBackground=n.inputValidationErrorBackground,this.inputValidationErrorForeground=n.inputValidationErrorForeground;const r=n.appendCaseSensitiveLabel||"",s=n.appendWholeWordsLabel||"",o=n.appendRegexLabel||"",a=n.history||[],l=!!n.flexibleHeight,c=!!n.flexibleWidth,d=n.flexibleMaxHeight;this.domNode=document.createElement("div"),q.cn(this.domNode,"monaco-findInput"),this.inputBox=this._register(new fe.p(this.domNode,this.contextViewProvider,{placeholder:this.placeholder||"",ariaLabel:this.label||"",validationOptions:{validation:this.validation},inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder,history:a,flexibleHeight:l,flexibleWidth:c,flexibleMaxHeight:d})),this.regex=this._register(new oe({appendTitle:o,isChecked:!1,inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground})),this._register(this.regex.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this._register(this.regex.onKeyDown((e=>{this._onRegexKeyDown.fire(e)}))),this.wholeWords=this._register(new se({appendTitle:s,isChecked:!1,inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground})),this._register(this.wholeWords.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this.caseSensitive=this._register(new re({appendTitle:r,isChecked:!1,inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground})),this._register(this.caseSensitive.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this._register(this.caseSensitive.onKeyDown((e=>{this._onCaseSensitiveKeyDown.fire(e)}))),this._showOptionButtons&&(this.inputBox.paddingRight=this.caseSensitive.width()+this.wholeWords.width()+this.regex.width());let h=[this.caseSensitive.domNode,this.wholeWords.domNode,this.regex.domNode];this.onkeydown(this.domNode,(e=>{if(e.equals(15)||e.equals(17)||e.equals(9)){let t=h.indexOf(document.activeElement);if(t>=0){let i=-1;e.equals(17)?i=(t+1)%h.length:e.equals(15)&&(i=0===t?h.length-1:t-1),e.equals(9)?h[t].blur():i>=0&&h[i].focus(),q.zB.stop(e,!0)}}}));let u=document.createElement("div");u.className="controls",u.style.display=this._showOptionButtons?"block":"none",u.appendChild(this.caseSensitive.domNode),u.appendChild(this.wholeWords.domNode),u.appendChild(this.regex.domNode),this.domNode.appendChild(u),e&&e.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,(e=>this._onKeyDown.fire(e))),this.onkeyup(this.inputBox.inputElement,(e=>this._onKeyUp.fire(e))),this.oninput(this.inputBox.inputElement,(e=>this._onInput.fire())),this.onmousedown(this.inputBox.inputElement,(e=>this._onMouseDown.fire(e)))}enable(){q.IV(this.domNode,"disabled"),this.inputBox.enable(),this.regex.enable(),this.wholeWords.enable(),this.caseSensitive.enable()}disable(){q.cn(this.domNode,"disabled"),this.inputBox.disable(),this.regex.disable(),this.wholeWords.disable(),this.caseSensitive.disable()}setFocusInputOnOptionClick(e){this.fixFocusOnOptionClickEnabled=e}setEnabled(e){e?this.enable():this.disable()}getValue(){return this.inputBox.value}setValue(e){this.inputBox.value!==e&&(this.inputBox.value=e)}style(e){this.inputActiveOptionBorder=e.inputActiveOptionBorder,this.inputActiveOptionForeground=e.inputActiveOptionForeground,this.inputActiveOptionBackground=e.inputActiveOptionBackground,this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()}applyStyles(){if(this.domNode){const e={inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground};this.regex.style(e),this.wholeWords.style(e),this.caseSensitive.style(e);const t={inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder};this.inputBox.style(t)}}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getCaseSensitive(){return this.caseSensitive.checked}setCaseSensitive(e){this.caseSensitive.checked=e}getWholeWords(){return this.wholeWords.checked}setWholeWords(e){this.wholeWords.checked=e}getRegex(){return this.regex.checked}setRegex(e){this.regex.checked=e,this.validate()}focusOnCaseSensitive(){this.caseSensitive.focus()}highlightFindOptions(){q.IV(this.domNode,"highlight-"+this._lastHighlightFindOptions),this._lastHighlightFindOptions=1-this._lastHighlightFindOptions,q.cn(this.domNode,"highlight-"+this._lastHighlightFindOptions)}validate(){this.inputBox.validate()}clearMessage(){this.inputBox.hideMessage()}}var _e=i(49989);const be=n.N("defaultLabel","input"),ve=n.N("label.preserveCaseCheckbox","Preserve Case");class ye extends X{constructor(e){super({icon:ee.lA.preserveCase,title:ve+e.appendTitle,isChecked:e.isChecked,inputActiveOptionBorder:e.inputActiveOptionBorder,inputActiveOptionForeground:e.inputActiveOptionForeground,inputActiveOptionBackground:e.inputActiveOptionBackground})}}class we extends G.${constructor(e,t,i,n){super(),this._showOptionButtons=i,this.fixFocusOnOptionClickEnabled=!0,this.cachedOptionsWidth=0,this._onDidOptionChange=this._register(new J.Q5),this.onDidOptionChange=this._onDidOptionChange.event,this._onKeyDown=this._register(new J.Q5),this.onKeyDown=this._onKeyDown.event,this._onMouseDown=this._register(new J.Q5),this._onInput=this._register(new J.Q5),this._onKeyUp=this._register(new J.Q5),this._onPreserveCaseKeyDown=this._register(new J.Q5),this.onPreserveCaseKeyDown=this._onPreserveCaseKeyDown.event,this.contextViewProvider=t,this.placeholder=n.placeholder||"",this.validation=n.validation,this.label=n.label||be,this.inputActiveOptionBorder=n.inputActiveOptionBorder,this.inputActiveOptionForeground=n.inputActiveOptionForeground,this.inputActiveOptionBackground=n.inputActiveOptionBackground,this.inputBackground=n.inputBackground,this.inputForeground=n.inputForeground,this.inputBorder=n.inputBorder,this.inputValidationInfoBorder=n.inputValidationInfoBorder,this.inputValidationInfoBackground=n.inputValidationInfoBackground,this.inputValidationInfoForeground=n.inputValidationInfoForeground,this.inputValidationWarningBorder=n.inputValidationWarningBorder,this.inputValidationWarningBackground=n.inputValidationWarningBackground,this.inputValidationWarningForeground=n.inputValidationWarningForeground,this.inputValidationErrorBorder=n.inputValidationErrorBorder,this.inputValidationErrorBackground=n.inputValidationErrorBackground,this.inputValidationErrorForeground=n.inputValidationErrorForeground;const r=n.history||[],s=!!n.flexibleHeight,o=!!n.flexibleWidth,a=n.flexibleMaxHeight;this.domNode=document.createElement("div"),q.cn(this.domNode,"monaco-findInput"),this.inputBox=this._register(new fe.p(this.domNode,this.contextViewProvider,{ariaLabel:this.label||"",placeholder:this.placeholder||"",validationOptions:{validation:this.validation},inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder,history:r,flexibleHeight:s,flexibleWidth:o,flexibleMaxHeight:a})),this.preserveCase=this._register(new ye({appendTitle:"",isChecked:!1,inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground})),this._register(this.preserveCase.onChange((e=>{this._onDidOptionChange.fire(e),!e&&this.fixFocusOnOptionClickEnabled&&this.inputBox.focus(),this.validate()}))),this._register(this.preserveCase.onKeyDown((e=>{this._onPreserveCaseKeyDown.fire(e)}))),this._showOptionButtons?this.cachedOptionsWidth=this.preserveCase.width():this.cachedOptionsWidth=0;let l=[this.preserveCase.domNode];this.onkeydown(this.domNode,(e=>{if(e.equals(15)||e.equals(17)||e.equals(9)){let t=l.indexOf(document.activeElement);if(t>=0){let i=-1;e.equals(17)?i=(t+1)%l.length:e.equals(15)&&(i=0===t?l.length-1:t-1),e.equals(9)?l[t].blur():i>=0&&l[i].focus(),q.zB.stop(e,!0)}}}));let c=document.createElement("div");c.className="controls",c.style.display=this._showOptionButtons?"block":"none",c.appendChild(this.preserveCase.domNode),this.domNode.appendChild(c),e&&e.appendChild(this.domNode),this.onkeydown(this.inputBox.inputElement,(e=>this._onKeyDown.fire(e))),this.onkeyup(this.inputBox.inputElement,(e=>this._onKeyUp.fire(e))),this.oninput(this.inputBox.inputElement,(e=>this._onInput.fire())),this.onmousedown(this.inputBox.inputElement,(e=>this._onMouseDown.fire(e)))}enable(){q.IV(this.domNode,"disabled"),this.inputBox.enable(),this.preserveCase.enable()}disable(){q.cn(this.domNode,"disabled"),this.inputBox.disable(),this.preserveCase.disable()}setEnabled(e){e?this.enable():this.disable()}style(e){this.inputActiveOptionBorder=e.inputActiveOptionBorder,this.inputActiveOptionForeground=e.inputActiveOptionForeground,this.inputActiveOptionBackground=e.inputActiveOptionBackground,this.inputBackground=e.inputBackground,this.inputForeground=e.inputForeground,this.inputBorder=e.inputBorder,this.inputValidationInfoBackground=e.inputValidationInfoBackground,this.inputValidationInfoForeground=e.inputValidationInfoForeground,this.inputValidationInfoBorder=e.inputValidationInfoBorder,this.inputValidationWarningBackground=e.inputValidationWarningBackground,this.inputValidationWarningForeground=e.inputValidationWarningForeground,this.inputValidationWarningBorder=e.inputValidationWarningBorder,this.inputValidationErrorBackground=e.inputValidationErrorBackground,this.inputValidationErrorForeground=e.inputValidationErrorForeground,this.inputValidationErrorBorder=e.inputValidationErrorBorder,this.applyStyles()}applyStyles(){if(this.domNode){const e={inputActiveOptionBorder:this.inputActiveOptionBorder,inputActiveOptionForeground:this.inputActiveOptionForeground,inputActiveOptionBackground:this.inputActiveOptionBackground};this.preserveCase.style(e);const t={inputBackground:this.inputBackground,inputForeground:this.inputForeground,inputBorder:this.inputBorder,inputValidationInfoBackground:this.inputValidationInfoBackground,inputValidationInfoForeground:this.inputValidationInfoForeground,inputValidationInfoBorder:this.inputValidationInfoBorder,inputValidationWarningBackground:this.inputValidationWarningBackground,inputValidationWarningForeground:this.inputValidationWarningForeground,inputValidationWarningBorder:this.inputValidationWarningBorder,inputValidationErrorBackground:this.inputValidationErrorBackground,inputValidationErrorForeground:this.inputValidationErrorForeground,inputValidationErrorBorder:this.inputValidationErrorBorder};this.inputBox.style(t)}}select(){this.inputBox.select()}focus(){this.inputBox.focus()}getPreserveCase(){return this.preserveCase.checked}setPreserveCase(e){this.preserveCase.checked=e}focusOnPreserve(){this.preserveCase.focus()}validate(){this.inputBox&&this.inputBox.validate()}set width(e){this.inputBox.paddingRight=this.cachedOptionsWidth,this.inputBox.width=e,this.domNode.style.width=e+"px"}dispose(){super.dispose()}}var Ce=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},Se=function(e,t){return function(i,n){t(i,n,e)}};const ke="historyNavigationWidget",xe="historyNavigationEnabled";function Le(e,t){return e.getContext(document.activeElement).getValue(t)}function Me(e,t){const i=function(e,t){return e.createScoped(t.target)}(e,t);return function(e,t,i){new D.uy("historyNavigationWidget",t).bindTo(e)}(i,t),{scopedContextKeyService:i,historyNavigationEnablement:new D.uy(xe,!0).bindTo(i)}}let De=class extends me{constructor(e,t,i,n,r=!1){super(e,t,r,i),this._register(Me(n,{target:this.inputBox.element,historyNavigator:this.inputBox}).scopedContextKeyService)}};De=Ce([Se(3,D.i6)],De);let Ne=class extends we{constructor(e,t,i,n,r=!1){super(e,t,r,i),this._register(Me(n,{target:this.inputBox.element,historyNavigator:this.inputBox}).scopedContextKeyService)}};Ne=Ce([Se(3,D.i6)],Ne),_e.W.registerCommandAndKeybindingRule({id:"history.showPrevious",weight:200,when:D.Ao.and(D.Ao.has(ke),D.Ao.equals(xe,!0)),primary:16,secondary:[528],handler:(e,t)=>{const i=Le(e.get(D.i6),ke);i&&i.historyNavigator.showPreviousValue()}}),_e.W.registerCommandAndKeybindingRule({id:"history.showNext",weight:200,when:D.Ao.and(D.Ao.has(ke),D.Ao.equals(xe,!0)),primary:18,secondary:[530],handler:(e,t)=>{const i=Le(e.get(D.i6),ke);i&&i.historyNavigator.showNextValue()}});const Ee=(0,ee.q5)("find-selection",ee.lA.selection),Te=(0,ee.q5)("find-collapsed",ee.lA.chevronRight),Ie=(0,ee.q5)("find-expanded",ee.lA.chevronDown),Oe=(0,ee.q5)("find-close",ee.lA.close),Ae=(0,ee.q5)("find-replace",ee.lA.replace),Re=(0,ee.q5)("find-replace-all",ee.lA.replaceAll),Pe=(0,ee.q5)("find-previous-match",ee.lA.arrowUp),Fe=(0,ee.q5)("find-next-match",ee.lA.arrowDown),Be=n.N("label.find","Find"),We=n.N("placeholder.find","Find"),Ye=n.N("label.previousMatchButton","Previous match"),He=n.N("label.nextMatchButton","Next match"),je=n.N("label.toggleSelectionFind","Find in selection"),Ve=n.N("label.closeButton","Close"),ze=n.N("label.replace","Replace"),Ue=n.N("placeholder.replace","Replace"),$e=n.N("label.replaceButton","Replace"),Ke=n.N("label.replaceAllButton","Replace All"),qe=n.N("label.toggleReplaceButton","Toggle Replace mode"),Ge=n.N("title.matchesCountLimit","Only the first {0} results are highlighted, but all find operations work on the entire text.",$),Ze=n.N("label.matchesLocation","{0} of {1}"),Je=n.N("label.noResults","No results"),Qe=419;let Xe=69;const et="ctrlEnterReplaceAll.windows.donotask",tt=ge.dz?256:2048;class it{constructor(e){this.afterLineNumber=e,this.heightInPx=33,this.suppressMouseDown=!1,this.domNode=document.createElement("div"),this.domNode.className="dock-find-viewzone"}}function nt(e,t,i){const n=!!t.match(/\n/);i&&n&&i.selectionStart>0&&e.stopPropagation()}function rt(e,t,i){const n=!!t.match(/\n/);i&&n&&i.selectionEnd<i.value.length&&e.stopPropagation()}class st extends G.${constructor(e,t,i,n,o,a,l,c,d,h){super(),this._cachedHeight=null,this._codeEditor=e,this._controller=t,this._state=i,this._contextViewProvider=n,this._keybindingService=o,this._contextKeyService=a,this._storageService=c,this._notificationService=d,h.registerStorageKey({key:et,version:1}),this._ctrlEnterReplaceAllWarningPrompted=!!c.getBoolean(et,0),this._isVisible=!1,this._isReplaceVisible=!1,this._ignoreChangeEvent=!1,this._updateHistoryDelayer=new r.vp(500),this._register((0,s.OF)((()=>this._updateHistoryDelayer.cancel()))),this._register(this._state.onFindReplaceStateChange((e=>this._onStateChanged(e)))),this._buildDomNode(),this._updateButtons(),this._tryUpdateWidgetWidth(),this._findInput.inputBox.layout(),this._register(this._codeEditor.onDidChangeConfiguration((e=>{if(e.hasChanged(72)&&(this._codeEditor.getOption(72)&&this._state.change({isReplaceRevealed:!1},!1),this._updateButtons()),e.hasChanged(117)&&this._tryUpdateWidgetWidth(),e.hasChanged(2)&&this.updateAccessibilitySupport(),e.hasChanged(29)){const e=this._codeEditor.getOption(29).addExtraSpaceOnTop;e&&!this._viewZone&&(this._viewZone=new it(0),this._showViewZone()),!e&&this._viewZone&&this._removeViewZone()}}))),this.updateAccessibilitySupport(),this._register(this._codeEditor.onDidChangeCursorSelection((()=>{this._isVisible&&this._updateToggleSelectionFindButton()}))),this._register(this._codeEditor.onDidFocusEditorWidget((()=>{return e=this,t=void 0,n=function*(){if(this._isVisible){let e=yield this._controller.getGlobalBufferTerm();e&&e!==this._state.searchString&&(this._state.change({searchString:e},!0),this._findInput.select())}},new((i=void 0)||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}));var e,t,i,n}))),this._findInputFocused=T.bindTo(a),this._findFocusTracker=this._register(q.go(this._findInput.inputBox.inputElement)),this._register(this._findFocusTracker.onDidFocus((()=>{this._findInputFocused.set(!0),this._updateSearchScope()}))),this._register(this._findFocusTracker.onDidBlur((()=>{this._findInputFocused.set(!1)}))),this._replaceInputFocused=I.bindTo(a),this._replaceFocusTracker=this._register(q.go(this._replaceInput.inputBox.inputElement)),this._register(this._replaceFocusTracker.onDidFocus((()=>{this._replaceInputFocused.set(!0),this._updateSearchScope()}))),this._register(this._replaceFocusTracker.onDidBlur((()=>{this._replaceInputFocused.set(!1)}))),this._codeEditor.addOverlayWidget(this),this._codeEditor.getOption(29).addExtraSpaceOnTop&&(this._viewZone=new it(0)),this._applyTheme(l.getColorTheme()),this._register(l.onDidColorThemeChange(this._applyTheme.bind(this))),this._register(this._codeEditor.onDidChangeModel((()=>{this._isVisible&&(this._viewZoneId=void 0)}))),this._register(this._codeEditor.onDidScrollChange((e=>{e.scrollTopChanged?this._layoutViewZone():setTimeout((()=>{this._layoutViewZone()}),0)})))}getId(){return st.ID}getDomNode(){return this._domNode}getPosition(){return this._isVisible?{preference:0}:null}_onStateChanged(e){if(e.searchString){try{this._ignoreChangeEvent=!0,this._findInput.setValue(this._state.searchString)}finally{this._ignoreChangeEvent=!1}this._updateButtons()}if(e.replaceString&&(this._replaceInput.inputBox.value=this._state.replaceString),e.isRevealed&&(this._state.isRevealed?this._reveal():this._hide(!0)),e.isReplaceRevealed&&(this._state.isReplaceRevealed?this._codeEditor.getOption(72)||this._isReplaceVisible||(this._isReplaceVisible=!0,this._replaceInput.width=q.w(this._findInput.domNode),this._updateButtons(),this._replaceInput.inputBox.layout()):this._isReplaceVisible&&(this._isReplaceVisible=!1,this._updateButtons())),(e.isRevealed||e.isReplaceRevealed)&&(this._state.isRevealed||this._state.isReplaceRevealed)&&this._tryUpdateHeight()&&this._showViewZone(),e.isRegex&&this._findInput.setRegex(this._state.isRegex),e.wholeWord&&this._findInput.setWholeWords(this._state.wholeWord),e.matchCase&&this._findInput.setCaseSensitive(this._state.matchCase),e.searchScope&&(this._state.searchScope?this._toggleSelectionFind.checked=!0:this._toggleSelectionFind.checked=!1,this._updateToggleSelectionFindButton()),e.searchString||e.matchesCount||e.matchesPosition){let e=this._state.searchString.length>0&&0===this._state.matchesCount;q.og(this._domNode,"no-results",e),this._updateMatchesCount(),this._updateButtons()}(e.searchString||e.currentMatch)&&this._layoutViewZone(),e.updateHistory&&this._delayedUpdateHistory(),e.loop&&this._updateButtons()}_delayedUpdateHistory(){this._updateHistoryDelayer.trigger(this._updateHistory.bind(this))}_updateHistory(){this._state.searchString&&this._findInput.inputBox.addToHistory(),this._state.replaceString&&this._replaceInput.inputBox.addToHistory()}_updateMatchesCount(){let e;if(this._matchesCount.style.minWidth=Xe+"px",this._state.matchesCount>=$?this._matchesCount.title=Ge:this._matchesCount.title="",this._matchesCount.firstChild&&this._matchesCount.removeChild(this._matchesCount.firstChild),this._state.matchesCount>0){let t=String(this._state.matchesCount);this._state.matchesCount>=$&&(t+="+");let i=String(this._state.matchesPosition);"0"===i&&(i="?"),e=o.WU(Ze,i,t)}else e=Je;this._matchesCount.appendChild(document.createTextNode(e)),(0,de.Z9)(this._getAriaLabel(e,this._state.currentMatch,this._state.searchString)),Xe=Math.max(Xe,this._matchesCount.clientWidth)}_getAriaLabel(e,t,i){if(e===Je)return""===i?n.N("ariaSearchNoResultEmpty","{0} found",e):n.N("ariaSearchNoResult","{0} found for '{1}'",e,i);if(t){const r=n.N("ariaSearchNoResultWithLineNum","{0} found for '{1}', at {2}",e,i,t.startLineNumber+":"+t.startColumn),s=this._codeEditor.getModel();return s&&t.startLineNumber<=s.getLineCount()&&t.startLineNumber>=1?`${s.getLineContent(t.startLineNumber)}, ${r}`:r}return n.N("ariaSearchNoResultWithLineNumNoCurrentMatch","{0} found for '{1}'",e,i)}_updateToggleSelectionFindButton(){let e=this._codeEditor.getSelection(),t=!!e&&(e.startLineNumber!==e.endLineNumber||e.startColumn!==e.endColumn),i=this._toggleSelectionFind.checked;this._isVisible&&(i||t)?this._toggleSelectionFind.enable():this._toggleSelectionFind.disable()}_updateButtons(){this._findInput.setEnabled(this._isVisible),this._replaceInput.setEnabled(this._isVisible&&this._isReplaceVisible),this._updateToggleSelectionFindButton(),this._closeBtn.setEnabled(this._isVisible);let e=this._state.searchString.length>0,t=!!this._state.matchesCount;this._prevBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateBack()),this._nextBtn.setEnabled(this._isVisible&&e&&t&&this._state.canNavigateForward()),this._replaceBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),this._replaceAllBtn.setEnabled(this._isVisible&&this._isReplaceVisible&&e),q.og(this._domNode,"replaceToggled",this._isReplaceVisible),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);let i=!this._codeEditor.getOption(72);this._toggleReplaceBtn.setEnabled(this._isVisible&&i)}_reveal(){if(!this._isVisible){this._isVisible=!0;const e=this._codeEditor.getSelection();switch(this._codeEditor.getOption(29).autoFindInSelection){case"always":this._toggleSelectionFind.checked=!0;break;case"never":this._toggleSelectionFind.checked=!1;break;case"multiline":const t=!!e&&e.startLineNumber!==e.endLineNumber;this._toggleSelectionFind.checked=t}this._tryUpdateWidgetWidth(),this._updateButtons(),setTimeout((()=>{q.cn(this._domNode,"visible"),this._domNode.setAttribute("aria-hidden","false")}),0),setTimeout((()=>{this._findInput.validate()}),200),this._codeEditor.layoutOverlayWidget(this);let t=!0;if(this._codeEditor.getOption(29).seedSearchStringFromSelection&&e){const i=this._codeEditor.getDomNode();if(i){const n=q.i(i),r=this._codeEditor.getScrolledVisiblePosition(e.getStartPosition()),s=n.left+(r?r.left:0),o=r?r.top:0;if(this._viewZone&&o<this._viewZone.heightInPx){e.endLineNumber>e.startLineNumber&&(t=!1);const i=q.xQ(this._domNode).left;s>i&&(t=!1);const r=this._codeEditor.getScrolledVisiblePosition(e.getEndPosition());n.left+(r?r.left:0)>i&&(t=!1)}}}this._showViewZone(t)}}_hide(e){this._isVisible&&(this._isVisible=!1,this._updateButtons(),q.IV(this._domNode,"visible"),this._domNode.setAttribute("aria-hidden","true"),this._findInput.clearMessage(),e&&this._codeEditor.focus(),this._codeEditor.layoutOverlayWidget(this),this._removeViewZone())}_layoutViewZone(){if(!this._codeEditor.getOption(29).addExtraSpaceOnTop)return void this._removeViewZone();if(!this._isVisible)return;const e=this._viewZone;void 0===this._viewZoneId&&e&&this._codeEditor.changeViewZones((t=>{e.heightInPx=this._getHeight(),this._viewZoneId=t.addZone(e),this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+e.heightInPx)}))}_showViewZone(e=!0){if(!this._isVisible)return;if(!this._codeEditor.getOption(29).addExtraSpaceOnTop)return;void 0===this._viewZone&&(this._viewZone=new it(0));const t=this._viewZone;this._codeEditor.changeViewZones((i=>{if(void 0!==this._viewZoneId){const n=this._getHeight();if(n===t.heightInPx)return;let r=n-t.heightInPx;return t.heightInPx=n,i.layoutZone(this._viewZoneId),void(e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+r))}{let n=this._getHeight();if(n-=this._codeEditor.getOption(66).top,n<=0)return;t.heightInPx=n,this._viewZoneId=i.addZone(t),e&&this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()+n)}}))}_removeViewZone(){this._codeEditor.changeViewZones((e=>{void 0!==this._viewZoneId&&(e.removeZone(this._viewZoneId),this._viewZoneId=void 0,this._viewZone&&(this._codeEditor.setScrollTop(this._codeEditor.getScrollTop()-this._viewZone.heightInPx),this._viewZone=void 0))}))}_applyTheme(e){let t={inputActiveOptionBorder:e.getColor(m.PR),inputActiveOptionBackground:e.getColor(m.XE),inputActiveOptionForeground:e.getColor(m.Pv),inputBackground:e.getColor(m.sE),inputForeground:e.getColor(m.zJ),inputBorder:e.getColor(m.dt),inputValidationInfoBackground:e.getColor(m._l),inputValidationInfoForeground:e.getColor(m.YI),inputValidationInfoBorder:e.getColor(m.EP),inputValidationWarningBackground:e.getColor(m.RV),inputValidationWarningForeground:e.getColor(m.SU),inputValidationWarningBorder:e.getColor(m.C3),inputValidationErrorBackground:e.getColor(m.p),inputValidationErrorForeground:e.getColor(m._t),inputValidationErrorBorder:e.getColor(m.OZ)};this._findInput.style(t),this._replaceInput.style(t),this._toggleSelectionFind.style(t)}_tryUpdateWidgetWidth(){if(!this._isVisible)return;if(!q.Uw(this._domNode))return;const e=this._codeEditor.getLayoutInfo();if(e.contentWidth<=0)return void q.cn(this._domNode,"hiddenEditor");q.pv(this._domNode,"hiddenEditor")&&q.IV(this._domNode,"hiddenEditor");const t=e.width,i=e.minimap.minimapWidth;let n=!1,r=!1,s=!1;if(this._resized&&q.w(this._domNode)>Qe)return this._domNode.style.maxWidth=t-28-i-15+"px",void(this._replaceInput.width=q.w(this._findInput.domNode));if(447+i>=t&&(r=!0),447+i-Xe>=t&&(s=!0),447+i-Xe>=t+50&&(n=!0),q.og(this._domNode,"collapsed-find-widget",n),q.og(this._domNode,"narrow-find-widget",s),q.og(this._domNode,"reduced-find-widget",r),s||n||(this._domNode.style.maxWidth=t-28-i-15+"px"),this._resized){this._findInput.inputBox.layout();let e=this._findInput.inputBox.element.clientWidth;e>0&&(this._replaceInput.width=e)}else this._isReplaceVisible&&(this._replaceInput.width=q.w(this._findInput.domNode))}_getHeight(){let e=0;return e+=4,e+=this._findInput.inputBox.height+2,this._isReplaceVisible&&(e+=4,e+=this._replaceInput.inputBox.height+2),e+=4,e}_tryUpdateHeight(){const e=this._getHeight();return(null===this._cachedHeight||this._cachedHeight!==e)&&(this._cachedHeight=e,this._domNode.style.height=`${e}px`,!0)}focusFindInput(){this._findInput.select(),this._findInput.focus()}focusReplaceInput(){this._replaceInput.select(),this._replaceInput.focus()}highlightFindOptions(){this._findInput.highlightFindOptions()}_updateSearchScope(){if(this._codeEditor.hasModel()&&this._toggleSelectionFind.checked){let e=this._codeEditor.getSelections();e.map((e=>{1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber-1)));const t=this._state.currentMatch;return e.startLineNumber===e.endLineNumber||h.e.equalsRange(e,t)?null:e})).filter((e=>!!e)),e.length&&this._state.change({searchScope:e},!0)}}_onFindInputMouseDown(e){e.middleButton&&e.stopPropagation()}_onFindInputKeyDown(e){return e.equals(3|tt)?(this._findInput.inputBox.insertAtCursor("\n"),void e.preventDefault()):e.equals(2)?(this._isReplaceVisible?this._replaceInput.focus():this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?nt(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):e.equals(18)?rt(e,this._findInput.getValue(),this._findInput.domNode.querySelector("textarea")):void 0}_onReplaceInputKeyDown(e){return e.equals(3|tt)?(ge.ED&&ge.tY&&!this._ctrlEnterReplaceAllWarningPrompted&&(this._notificationService.info(n.N("ctrlEnter.keybindingChanged","Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.")),this._ctrlEnterReplaceAllWarningPrompted=!0,this._storageService.store(et,!0,0)),this._replaceInput.inputBox.insertAtCursor("\n"),void e.preventDefault()):e.equals(2)?(this._findInput.focusOnCaseSensitive(),void e.preventDefault()):e.equals(1026)?(this._findInput.focus(),void e.preventDefault()):e.equals(2066)?(this._codeEditor.focus(),void e.preventDefault()):e.equals(16)?nt(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):e.equals(18)?rt(e,this._replaceInput.inputBox.value,this._replaceInput.inputBox.element.querySelector("textarea")):void 0}getVerticalSashLeft(e){return 0}_keybindingLabelFor(e){let t=this._keybindingService.lookupKeybinding(e);return t?` (${t.getLabel()})`:""}_buildDomNode(){this._findInput=this._register(new De(null,this._contextViewProvider,{width:221,label:Be,placeholder:We,appendCaseSensitiveLabel:this._keybindingLabelFor(Y),appendWholeWordsLabel:this._keybindingLabelFor(H),appendRegexLabel:this._keybindingLabelFor(j),validation:e=>{if(0===e.length||!this._findInput.getRegex())return null;try{return new RegExp(e,"gu"),null}catch(e){return{content:e.message}}},flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118},this._contextKeyService,!0)),this._findInput.setRegex(!!this._state.isRegex),this._findInput.setCaseSensitive(!!this._state.matchCase),this._findInput.setWholeWords(!!this._state.wholeWord),this._register(this._findInput.onKeyDown((e=>this._onFindInputKeyDown(e)))),this._register(this._findInput.inputBox.onDidChange((()=>{this._ignoreChangeEvent||this._state.change({searchString:this._findInput.getValue()},!0)}))),this._register(this._findInput.onDidOptionChange((()=>{this._state.change({isRegex:this._findInput.getRegex(),wholeWord:this._findInput.getWholeWords(),matchCase:this._findInput.getCaseSensitive()},!0)}))),this._register(this._findInput.onCaseSensitiveKeyDown((e=>{e.equals(1026)&&this._isReplaceVisible&&(this._replaceInput.focus(),e.preventDefault())}))),this._register(this._findInput.onRegexKeyDown((e=>{e.equals(2)&&this._isReplaceVisible&&(this._replaceInput.focusOnPreserve(),e.preventDefault())}))),this._register(this._findInput.inputBox.onDidHeightChange((e=>{this._tryUpdateHeight()&&this._showViewZone()}))),ge.IJ&&this._register(this._findInput.onMouseDown((e=>this._onFindInputMouseDown(e)))),this._matchesCount=document.createElement("div"),this._matchesCount.className="matchesCount",this._updateMatchesCount(),this._prevBtn=this._register(new ot({label:Ye+this._keybindingLabelFor(B),className:Pe.classNames,onTrigger:()=>{this._codeEditor.getAction(B).run().then(void 0,ue.dL)}})),this._nextBtn=this._register(new ot({label:He+this._keybindingLabelFor(F),className:Fe.classNames,onTrigger:()=>{this._codeEditor.getAction(F).run().then(void 0,ue.dL)}}));let e=document.createElement("div");e.className="find-part",e.appendChild(this._findInput.domNode);const t=document.createElement("div");t.className="find-actions",e.appendChild(t),t.appendChild(this._matchesCount),t.appendChild(this._prevBtn.domNode),t.appendChild(this._nextBtn.domNode),this._toggleSelectionFind=this._register(new X({icon:Ee,title:je+this._keybindingLabelFor(V),isChecked:!1})),this._register(this._toggleSelectionFind.onChange((()=>{if(this._toggleSelectionFind.checked){if(this._codeEditor.hasModel()){let e=this._codeEditor.getSelections();e.map((e=>(1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._codeEditor.getModel().getLineMaxColumn(e.endLineNumber-1))),e.isEmpty()?null:e))).filter((e=>!!e)),e.length&&this._state.change({searchScope:e},!0)}}else this._state.change({searchScope:null},!0)}))),t.appendChild(this._toggleSelectionFind.domNode),this._closeBtn=this._register(new ot({label:Ve+this._keybindingLabelFor(W),className:Oe.classNames,onTrigger:()=>{this._state.change({isRevealed:!1,searchScope:null},!1)},onKeyDown:e=>{e.equals(2)&&this._isReplaceVisible&&(this._replaceBtn.isEnabled()?this._replaceBtn.focus():this._codeEditor.focus(),e.preventDefault())}})),t.appendChild(this._closeBtn.domNode),this._replaceInput=this._register(new Ne(null,void 0,{label:ze,placeholder:Ue,history:[],flexibleHeight:!0,flexibleWidth:!0,flexibleMaxHeight:118},this._contextKeyService,!0)),this._replaceInput.setPreserveCase(!!this._state.preserveCase),this._register(this._replaceInput.onKeyDown((e=>this._onReplaceInputKeyDown(e)))),this._register(this._replaceInput.inputBox.onDidChange((()=>{this._state.change({replaceString:this._replaceInput.inputBox.value},!1)}))),this._register(this._replaceInput.inputBox.onDidHeightChange((e=>{this._isReplaceVisible&&this._tryUpdateHeight()&&this._showViewZone()}))),this._register(this._replaceInput.onDidOptionChange((()=>{this._state.change({preserveCase:this._replaceInput.getPreserveCase()},!0)}))),this._register(this._replaceInput.onPreserveCaseKeyDown((e=>{e.equals(2)&&(this._prevBtn.isEnabled()?this._prevBtn.focus():this._nextBtn.isEnabled()?this._nextBtn.focus():this._toggleSelectionFind.enabled?this._toggleSelectionFind.focus():this._closeBtn.isEnabled()&&this._closeBtn.focus(),e.preventDefault())}))),this._replaceBtn=this._register(new ot({label:$e+this._keybindingLabelFor(z),className:Ae.classNames,onTrigger:()=>{this._controller.replace()},onKeyDown:e=>{e.equals(1026)&&(this._closeBtn.focus(),e.preventDefault())}})),this._replaceAllBtn=this._register(new ot({label:Ke+this._keybindingLabelFor(U),className:Re.classNames,onTrigger:()=>{this._controller.replaceAll()}}));let i=document.createElement("div");i.className="replace-part",i.appendChild(this._replaceInput.domNode);const n=document.createElement("div");n.className="replace-actions",i.appendChild(n),n.appendChild(this._replaceBtn.domNode),n.appendChild(this._replaceAllBtn.domNode),this._toggleReplaceBtn=this._register(new ot({label:qe,className:"codicon toggle left",onTrigger:()=>{this._state.change({isReplaceRevealed:!this._isReplaceVisible},!1),this._isReplaceVisible&&(this._replaceInput.width=q.w(this._findInput.domNode),this._replaceInput.inputBox.layout()),this._showViewZone()}})),this._toggleReplaceBtn.setExpanded(this._isReplaceVisible),this._domNode=document.createElement("div"),this._domNode.className="editor-widget find-widget",this._domNode.setAttribute("aria-hidden","true"),this._domNode.style.width="419px",this._domNode.appendChild(this._toggleReplaceBtn.domNode),this._domNode.appendChild(e),this._domNode.appendChild(i),this._resizeSash=new he.g(this._domNode,this,{orientation:0,size:2}),this._resized=!1;let r=Qe;this._register(this._resizeSash.onDidStart((()=>{r=q.w(this._domNode)}))),this._register(this._resizeSash.onDidChange((e=>{this._resized=!0;let t=r+e.startX-e.currentX;t<Qe||t>(parseFloat(q.Dx(this._domNode).maxWidth)||0)||(this._domNode.style.width=`${t}px`,this._isReplaceVisible&&(this._replaceInput.width=q.w(this._findInput.domNode)),this._findInput.inputBox.layout(),this._tryUpdateHeight())}))),this._register(this._resizeSash.onDidReset((()=>{const e=q.w(this._domNode);if(e<Qe)return;let t=Qe;if(!this._resized||e===Qe){const e=this._codeEditor.getLayoutInfo();t=e.width-28-e.minimap.minimapWidth-15,this._resized=!0}this._domNode.style.width=`${t}px`,this._isReplaceVisible&&(this._replaceInput.width=q.w(this._findInput.domNode)),this._findInput.inputBox.layout()})))}updateAccessibilitySupport(){const e=this._codeEditor.getOption(2);this._findInput.setFocusInputOnOptionClick(2!==e)}}st.ID="editor.contrib.findWidget";class ot extends G.${constructor(e){super(),this._opts=e,this._domNode=document.createElement("div"),this._domNode.title=this._opts.label,this._domNode.tabIndex=0,this._domNode.className="button "+this._opts.className,this._domNode.setAttribute("role","button"),this._domNode.setAttribute("aria-label",this._opts.label),this.onclick(this._domNode,(e=>{this._opts.onTrigger(),e.preventDefault()})),this.onkeydown(this._domNode,(e=>{if(e.equals(10)||e.equals(3))return this._opts.onTrigger(),void e.preventDefault();this._opts.onKeyDown&&this._opts.onKeyDown(e)}))}get domNode(){return this._domNode}isEnabled(){return this._domNode.tabIndex>=0}focus(){this._domNode.focus()}setEnabled(e){q.og(this._domNode,"disabled",!e),this._domNode.setAttribute("aria-disabled",String(!e)),this._domNode.tabIndex=e?0:-1}setExpanded(e){this._domNode.setAttribute("aria-expanded",String(!!e)),e?(q.GK(this._domNode,Te.classNames),q.PT(this._domNode,Ie.classNames)):(q.GK(this._domNode,Ie.classNames),q.PT(this._domNode,Te.classNames))}}(0,_.Ic)(((e,t)=>{const i=(e,i)=>{i&&t.addRule(`.monaco-editor ${e} { background-color: ${i}; }`)};i(".findMatch",e.getColor(m.MU)),i(".currentFindMatch",e.getColor(m.ny)),i(".findScope",e.getColor(m.jU)),i(".find-widget",e.getColor(m.D0));const n=e.getColor(m.rh);n&&t.addRule(`.monaco-editor .find-widget { box-shadow: 0 2px 8px ${n}; }`);const r=e.getColor(m.Ei);r&&t.addRule(`.monaco-editor .findMatch { border: 1px ${"hc"===e.type?"dotted":"solid"} ${r}; box-sizing: border-box; }`);const s=e.getColor(m.pn);s&&t.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${s}; padding: 1px; box-sizing: border-box; }`);const o=e.getColor(m.gk);o&&t.addRule(`.monaco-editor .findScope { border: 1px ${"hc"===e.type?"dashed":"solid"} ${o}; }`);const a=e.getColor(m.lR);a&&t.addRule(`.monaco-editor .find-widget { border: 1px solid ${a}; }`);const l=e.getColor(m.Hf);l&&t.addRule(`.monaco-editor .find-widget { color: ${l}; }`);const c=e.getColor(m.Id);c&&t.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${c}; }`);const d=e.getColor(m.Ng);if(d)t.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${d}; }`);else{const i=e.getColor(m.D1);i&&t.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${i}; }`)}const h=e.getColor(m.R8);h&&t.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${h}; }`)}));var at=i(84144),lt=i(84972),ct=i(5606),dt=i(91847),ht=i(52365),ut=i(59422),gt=i(37280),ft=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},pt=function(e,t){return function(i,n){t(i,n,e)}},mt=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function _t(e){if(!e.hasModel())return null;const t=e.getSelection();if(t.startLineNumber===t.endLineNumber)if(t.isEmpty()){const i=e.getConfiguredWordAtPosition(t.getStartPosition());if(i)return i.word}else if(e.getModel().getValueLengthInRange(t)<524288)return e.getModel().getValueInRange(t);return null}let bt=class e extends s.JT{constructor(e,t,i,n){super(),this._editor=e,this._findWidgetVisible=E.bindTo(t),this._contextKeyService=t,this._storageService=i,this._clipboardService=n,this._updateHistoryDelayer=new r.vp(500),this._state=this._register(new ce),this.loadQueryState(),this._register(this._state.onFindReplaceStateChange((e=>this._onStateChanged(e)))),this._model=null,this._register(this._editor.onDidChangeModel((()=>{let e=this._editor.getModel()&&this._state.isRevealed;this.disposeModel(),this._state.change({searchScope:null,matchCase:this._storageService.getBoolean("editor.matchCase",1,!1),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,!1),isRegex:this._storageService.getBoolean("editor.isRegex",1,!1),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,!1)},!1),e&&this._start({forceRevealReplace:!1,seedSearchStringFromSelection:!1,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!1,updateSearchScope:!1,loop:this._editor.getOption(29).loop})})))}static get(t){return t.getContribution(e.ID)}dispose(){this.disposeModel(),super.dispose()}disposeModel(){this._model&&(this._model.dispose(),this._model=null)}_onStateChanged(e){this.saveQueryState(e),e.isRevealed&&(this._state.isRevealed?this._findWidgetVisible.set(!0):(this._findWidgetVisible.reset(),this.disposeModel())),e.searchString&&this.setGlobalBufferTerm(this._state.searchString)}saveQueryState(e){e.isRegex&&this._storageService.store("editor.isRegex",this._state.actualIsRegex,1),e.wholeWord&&this._storageService.store("editor.wholeWord",this._state.actualWholeWord,1),e.matchCase&&this._storageService.store("editor.matchCase",this._state.actualMatchCase,1),e.preserveCase&&this._storageService.store("editor.preserveCase",this._state.actualPreserveCase,1)}loadQueryState(){this._state.change({matchCase:this._storageService.getBoolean("editor.matchCase",1,this._state.matchCase),wholeWord:this._storageService.getBoolean("editor.wholeWord",1,this._state.wholeWord),isRegex:this._storageService.getBoolean("editor.isRegex",1,this._state.isRegex),preserveCase:this._storageService.getBoolean("editor.preserveCase",1,this._state.preserveCase)},!1)}isFindInputFocused(){return!!T.getValue(this._contextKeyService)}getState(){return this._state}closeFindWidget(){this._state.change({isRevealed:!1,searchScope:null},!1),this._editor.focus()}toggleCaseSensitive(){this._state.change({matchCase:!this._state.matchCase},!1),this._state.isRevealed||this.highlightFindOptions()}toggleWholeWords(){this._state.change({wholeWord:!this._state.wholeWord},!1),this._state.isRevealed||this.highlightFindOptions()}toggleRegex(){this._state.change({isRegex:!this._state.isRegex},!1),this._state.isRevealed||this.highlightFindOptions()}toggleSearchScope(){if(this._state.searchScope)this._state.change({searchScope:null},!0);else if(this._editor.hasModel()){let e=this._editor.getSelections();e.map((e=>(1===e.endColumn&&e.endLineNumber>e.startLineNumber&&(e=e.setEndPosition(e.endLineNumber-1,this._editor.getModel().getLineMaxColumn(e.endLineNumber-1))),e.isEmpty()?null:e))).filter((e=>!!e)),e.length&&this._state.change({searchScope:e},!0)}}setSearchString(e){this._state.isRegex&&(e=o.ec(e)),this._state.change({searchString:e},!1)}highlightFindOptions(){}_start(e){return mt(this,void 0,void 0,(function*(){if(this.disposeModel(),!this._editor.hasModel())return;let t={isRevealed:!0};if(e.seedSearchStringFromSelection){let e=_t(this._editor);e&&(this._state.isRegex?t.searchString=o.ec(e):t.searchString=e)}if(!t.searchString&&e.seedSearchStringFromGlobalClipboard){let e=yield this.getGlobalBufferTerm();if(!this._editor.hasModel())return;e&&(t.searchString=e)}if(e.forceRevealReplace?t.isReplaceRevealed=!0:this._findWidgetVisible.get()||(t.isReplaceRevealed=!1),e.updateSearchScope){let e=this._editor.getSelections();e.some((e=>!e.isEmpty()))&&(t.searchScope=e)}t.loop=e.loop,this._state.change(t,!1),this._model||(this._model=new K(this._editor,this._state))}))}start(e){return this._start(e)}moveToNextMatch(){return!!this._model&&(this._model.moveToNextMatch(),!0)}moveToPrevMatch(){return!!this._model&&(this._model.moveToPrevMatch(),!0)}replace(){return!!this._model&&(this._model.replace(),!0)}replaceAll(){return!!this._model&&(this._model.replaceAll(),!0)}selectAllMatches(){return!!this._model&&(this._model.selectAllMatches(),this._editor.focus(),!0)}getGlobalBufferTerm(){return mt(this,void 0,void 0,(function*(){return this._editor.getOption(29).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()?this._clipboardService.readFindText():""}))}setGlobalBufferTerm(e){this._editor.getOption(29).globalFindClipboard&&this._editor.hasModel()&&!this._editor.getModel().isTooLargeForSyncing()&&this._clipboardService.writeFindText(e)}};bt.ID="editor.contrib.findController",bt=ft([pt(1,D.i6),pt(2,ht.Uy),pt(3,lt.p)],bt);let vt=class extends bt{constructor(e,t,i,n,r,s,o,a,l){super(e,i,o,l),this._contextViewService=t,this._keybindingService=n,this._themeService=r,this._notificationService=s,this._storageKeysSyncRegistryService=a,this._widget=null,this._findOptionsWidget=null}_start(e){const t=Object.create(null,{_start:{get:()=>super._start}});return mt(this,void 0,void 0,(function*(){this._widget||this._createFindWidget();const i=this._editor.getSelection();let n=!1;switch(this._editor.getOption(29).autoFindInSelection){case"always":n=!0;break;case"never":n=!1;break;case"multiline":n=!!i&&i.startLineNumber!==i.endLineNumber}e.updateSearchScope=n,yield t._start.call(this,e),this._widget&&(2===e.shouldFocus?this._widget.focusReplaceInput():1===e.shouldFocus&&this._widget.focusFindInput())}))}highlightFindOptions(){this._widget||this._createFindWidget(),this._state.isRevealed?this._widget.highlightFindOptions():this._findOptionsWidget.highlightFindOptions()}_createFindWidget(){this._widget=this._register(new st(this._editor,this,this._state,this._contextViewService,this._keybindingService,this._contextKeyService,this._themeService,this._storageService,this._notificationService,this._storageKeysSyncRegistryService)),this._findOptionsWidget=this._register(new ae(this._editor,this._state,this._keybindingService,this._themeService))}};vt=ft([pt(1,ct.u),pt(2,D.i6),pt(3,dt.d),pt(4,_.XE),pt(5,ut.lT),pt(6,ht.Uy),pt(7,gt.u),pt(8,lt.p)],vt);class yt extends a.jY{constructor(){super({id:"actions.find",label:n.N("startFindAction","Find"),alias:"Find",precondition:void 0,kbOpts:{kbExpr:null,primary:2084,weight:100},menuOpts:{menuId:at.eH.MenubarEditMenu,group:"3_find",title:n.N({key:"miFind",comment:["&& denotes a mnemonic"]},"&&Find"),order:1}})}run(e,t){return mt(this,void 0,void 0,(function*(){let e=bt.get(t);e&&(yield e.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getOption(29).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:t.getOption(29).globalFindClipboard,shouldFocus:1,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(29).loop}))}))}}class wt extends a.R6{constructor(){super({id:"actions.findWithSelection",label:n.N("startFindWithSelectionAction","Find With Selection"),alias:"Find With Selection",precondition:void 0,kbOpts:{kbExpr:null,primary:0,mac:{primary:2083},weight:100}})}run(e,t){return mt(this,void 0,void 0,(function*(){let e=bt.get(t);e&&(yield e.start({forceRevealReplace:!1,seedSearchStringFromSelection:!0,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(29).loop}),e.setGlobalBufferTerm(e.getState().searchString))}))}}class Ct extends a.R6{run(e,t){return mt(this,void 0,void 0,(function*(){let e=bt.get(t);e&&!this._run(e)&&(yield e.start({forceRevealReplace:!1,seedSearchStringFromSelection:0===e.getState().searchString.length&&t.getOption(29).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!0,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(29).loop}),this._run(e))}))}}class St extends Ct{constructor(){super({id:F,label:n.N("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:{kbExpr:l.u.focus,primary:61,mac:{primary:2085,secondary:[61]},weight:100}})}_run(e){return e.moveToNextMatch()}}class kt extends Ct{constructor(){super({id:F,label:n.N("findNextMatchAction","Find Next"),alias:"Find Next",precondition:void 0,kbOpts:{kbExpr:D.Ao.and(l.u.focus,T),primary:3,weight:100}})}_run(e){return e.moveToNextMatch()}}class xt extends Ct{constructor(){super({id:B,label:n.N("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:{kbExpr:l.u.focus,primary:1085,mac:{primary:3109,secondary:[1085]},weight:100}})}_run(e){return e.moveToPrevMatch()}}class Lt extends Ct{constructor(){super({id:B,label:n.N("findPreviousMatchAction","Find Previous"),alias:"Find Previous",precondition:void 0,kbOpts:{kbExpr:D.Ao.and(l.u.focus,T),primary:1027,weight:100}})}_run(e){return e.moveToPrevMatch()}}class Mt extends a.R6{run(e,t){return mt(this,void 0,void 0,(function*(){let e=bt.get(t);if(!e)return;let i=_t(t);i&&e.setSearchString(i),this._run(e)||(yield e.start({forceRevealReplace:!1,seedSearchStringFromSelection:t.getOption(29).seedSearchStringFromSelection,seedSearchStringFromGlobalClipboard:!1,shouldFocus:0,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(29).loop}),this._run(e))}))}}class Dt extends Mt{constructor(){super({id:"editor.action.nextSelectionMatchFindAction",label:n.N("nextSelectionMatchFindAction","Find Next Selection"),alias:"Find Next Selection",precondition:void 0,kbOpts:{kbExpr:l.u.focus,primary:2109,weight:100}})}_run(e){return e.moveToNextMatch()}}class Nt extends Mt{constructor(){super({id:"editor.action.previousSelectionMatchFindAction",label:n.N("previousSelectionMatchFindAction","Find Previous Selection"),alias:"Find Previous Selection",precondition:void 0,kbOpts:{kbExpr:l.u.focus,primary:3133,weight:100}})}_run(e){return e.moveToPrevMatch()}}class Et extends a.jY{constructor(){super({id:"editor.action.startFindReplaceAction",label:n.N("startReplace","Replace"),alias:"Replace",precondition:void 0,kbOpts:{kbExpr:null,primary:2086,mac:{primary:2596},weight:100},menuOpts:{menuId:at.eH.MenubarEditMenu,group:"3_find",title:n.N({key:"miReplace",comment:["&& denotes a mnemonic"]},"&&Replace"),order:2}})}run(e,t){return mt(this,void 0,void 0,(function*(){if(!t.hasModel()||t.getOption(72))return;let e=bt.get(t),i=t.getSelection(),n=e.isFindInputFocused(),r=!i.isEmpty()&&i.startLineNumber===i.endLineNumber&&t.getOption(29).seedSearchStringFromSelection&&!n,s=n||r?2:1;e&&(yield e.start({forceRevealReplace:!0,seedSearchStringFromSelection:r,seedSearchStringFromGlobalClipboard:t.getOption(29).seedSearchStringFromSelection,shouldFocus:s,shouldAnimate:!0,updateSearchScope:!1,loop:t.getOption(29).loop}))}))}}(0,a._K)(bt.ID,vt);const Tt=new yt;(0,a.rn)(Tt),(0,a.Qr)(wt),(0,a.Qr)(St),(0,a.Qr)(kt),(0,a.Qr)(xt),(0,a.Qr)(Lt),(0,a.Qr)(Dt),(0,a.Qr)(Nt);const It=new Et;(0,a.rn)(It);const Ot=a._l.bindToContribution(bt.get);(0,a.fK)(new Ot({id:W,precondition:E,handler:e=>e.closeFindWidget(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:9,secondary:[1033]}})),(0,a.fK)(new Ot({id:Y,precondition:void 0,handler:e=>e.toggleCaseSensitive(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:O.primary,mac:O.mac,win:O.win,linux:O.linux}})),(0,a.fK)(new Ot({id:H,precondition:void 0,handler:e=>e.toggleWholeWords(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:A.primary,mac:A.mac,win:A.win,linux:A.linux}})),(0,a.fK)(new Ot({id:j,precondition:void 0,handler:e=>e.toggleRegex(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:R.primary,mac:R.mac,win:R.win,linux:R.linux}})),(0,a.fK)(new Ot({id:V,precondition:void 0,handler:e=>e.toggleSearchScope(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:P.primary,mac:P.mac,win:P.win,linux:P.linux}})),(0,a.fK)(new Ot({id:z,precondition:E,handler:e=>e.replace(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:3094}})),(0,a.fK)(new Ot({id:z,precondition:E,handler:e=>e.replace(),kbOpts:{weight:105,kbExpr:D.Ao.and(l.u.focus,I),primary:3}})),(0,a.fK)(new Ot({id:U,precondition:E,handler:e=>e.replaceAll(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:2563}})),(0,a.fK)(new Ot({id:U,precondition:E,handler:e=>e.replaceAll(),kbOpts:{weight:105,kbExpr:D.Ao.and(l.u.focus,I),primary:void 0,mac:{primary:2051}}})),(0,a.fK)(new Ot({id:"editor.action.selectAllMatches",precondition:E,handler:e=>e.selectAllMatches(),kbOpts:{weight:105,kbExpr:l.u.focus,primary:515}}))},62943:(e,t,i)=>{"use strict";i.r(t),i.d(t,{FoldingController:()=>$,editorFoldForeground:()=>X,foldBackgroundBackground:()=>Q});var n=i(63580),r=i(98401),s=i(97295),o=i(15393),a=i(22258),l=i(5976),c=i(16830),d=i(4669);const h=16777215,u=4278190080;class g{constructor(e,t,i){if(e.length!==t.length||e.length>65535)throw new Error("invalid startIndexes or endIndexes size");this._startIndexes=e,this._endIndexes=t,this._collapseStates=new Uint32Array(Math.ceil(e.length/32)),this._types=i,this._parentsComputed=!1}ensureParentIndices(){if(!this._parentsComputed){this._parentsComputed=!0;let e=[],t=(t,i)=>{let n=e[e.length-1];return this.getStartLineNumber(n)<=t&&this.getEndLineNumber(n)>=i};for(let i=0,n=this._startIndexes.length;i<n;i++){let n=this._startIndexes[i],r=this._endIndexes[i];if(n>h||r>h)throw new Error("startLineNumber or endLineNumber must not exceed 16777215");for(;e.length>0&&!t(n,r);)e.pop();let s=e.length>0?e[e.length-1]:-1;e.push(i),this._startIndexes[i]=n+((255&s)<<24),this._endIndexes[i]=r+((65280&s)<<16)}}}get length(){return this._startIndexes.length}getStartLineNumber(e){return this._startIndexes[e]&h}getEndLineNumber(e){return this._endIndexes[e]&h}getType(e){return this._types?this._types[e]:void 0}hasTypes(){return!!this._types}isCollapsed(e){let t=e/32|0,i=e%32;return 0!=(this._collapseStates[t]&1<<i)}setCollapsed(e,t){let i=e/32|0,n=e%32,r=this._collapseStates[i];this._collapseStates[i]=t?r|1<<n:r&~(1<<n)}toRegion(e){return new f(this,e)}getParentIndex(e){this.ensureParentIndices();let t=((this._startIndexes[e]&u)>>>24)+((this._endIndexes[e]&u)>>>16);return 65535===t?-1:t}contains(e,t){return this.getStartLineNumber(e)<=t&&this.getEndLineNumber(e)>=t}findIndex(e){let t=0,i=this._startIndexes.length;if(0===i)return-1;for(;t<i;){let n=Math.floor((t+i)/2);e<this.getStartLineNumber(n)?i=n:t=n+1}return t-1}findRange(e){let t=this.findIndex(e);if(t>=0){if(this.getEndLineNumber(t)>=e)return t;for(t=this.getParentIndex(t);-1!==t;){if(this.contains(t,e))return t;t=this.getParentIndex(t)}}return-1}toString(){let e=[];for(let t=0;t<this.length;t++)e[t]=`[${this.isCollapsed(t)?"+":"-"}] ${this.getStartLineNumber(t)}/${this.getEndLineNumber(t)}`;return e.join(", ")}}class f{constructor(e,t){this.ranges=e,this.index=t}get startLineNumber(){return this.ranges.getStartLineNumber(this.index)}get endLineNumber(){return this.ranges.getEndLineNumber(this.index)}get regionIndex(){return this.index}get parentIndex(){return this.ranges.getParentIndex(this.index)}get isCollapsed(){return this.ranges.isCollapsed(this.index)}containedBy(e){return e.startLineNumber<=this.startLineNumber&&e.endLineNumber>=this.endLineNumber}containsLine(e){return this.startLineNumber<=e&&e<=this.endLineNumber}}class p{constructor(e,t){this._updateEventEmitter=new d.Q5,this.onDidChange=this._updateEventEmitter.event,this._textModel=e,this._decorationProvider=t,this._regions=new g(new Uint32Array(0),new Uint32Array(0)),this._editorDecorationIds=[],this._isInitialized=!1}get regions(){return this._regions}get textModel(){return this._textModel}get isInitialized(){return this._isInitialized}toggleCollapseState(e){if(!e.length)return;e=e.sort(((e,t)=>e.regionIndex-t.regionIndex));const t={};this._decorationProvider.changeDecorations((i=>{let n=0,r=-1,s=-1;const o=e=>{for(;n<e;){const e=this._regions.getEndLineNumber(n),t=this._regions.isCollapsed(n);e<=r&&i.changeDecorationOptions(this._editorDecorationIds[n],this._decorationProvider.getDecorationOption(t,e<=s)),t&&e>s&&(s=e),n++}};for(let i of e){let e=i.regionIndex,n=this._editorDecorationIds[e];if(n&&!t[n]){t[n]=!0,o(e);let i=!this._regions.isCollapsed(e);this._regions.setCollapsed(e,i),r=Math.max(r,this._regions.getEndLineNumber(e))}}o(this._regions.length)})),this._updateEventEmitter.fire({model:this,collapseStateChanged:e})}update(e,t=[]){let i=[],n=-1,r=(r,s)=>{const o=e.getStartLineNumber(r),a=e.getEndLineNumber(r);s&&((e,i)=>{for(let n of t)if(e<n&&n<=i)return!0;return!1})(o,a)&&(s=!1),e.setCollapsed(r,s);const l=this._textModel.getLineMaxColumn(o),c={startLineNumber:o,startColumn:l,endLineNumber:o,endColumn:l};i.push({range:c,options:this._decorationProvider.getDecorationOption(s,a<=n)}),s&&a>n&&(n=a)},s=0,o=()=>{for(;s<this._regions.length;){let e=this._regions.isCollapsed(s);if(s++,e)return s-1}return-1},a=0,l=o();for(;-1!==l&&a<e.length;){let t=this._textModel.getDecorationRange(this._editorDecorationIds[l]);if(t){let i=t.startLineNumber;if(this._textModel.getLineMaxColumn(i)===t.startColumn)for(;a<e.length;){let t=e.getStartLineNumber(a);if(!(i>=t))break;r(a,i===t),a++}}l=o()}for(;a<e.length;)r(a,!1),a++;this._editorDecorationIds=this._decorationProvider.deltaDecorations(this._editorDecorationIds,i),this._regions=e,this._isInitialized=!0,this._updateEventEmitter.fire({model:this})}getMemento(){let e=[];for(let t=0;t<this._regions.length;t++)if(this._regions.isCollapsed(t)){let i=this._textModel.getDecorationRange(this._editorDecorationIds[t]);if(i){let n=i.startLineNumber,r=i.endLineNumber+this._regions.getEndLineNumber(t)-this._regions.getStartLineNumber(t);e.push({startLineNumber:n,endLineNumber:r})}}if(e.length>0)return e}applyMemento(e){if(!Array.isArray(e))return;let t=[];for(let i of e){let e=this.getRegionAtLine(i.startLineNumber);e&&!e.isCollapsed&&t.push(e)}this.toggleCollapseState(t)}dispose(){this._decorationProvider.deltaDecorations(this._editorDecorationIds,[])}getAllRegionsAtLine(e,t){let i=[];if(this._regions){let n=this._regions.findRange(e),r=1;for(;n>=0;){let e=this._regions.toRegion(n);t&&!t(e,r)||i.push(e),r++,n=e.parentIndex}}return i}getRegionAtLine(e){if(this._regions){let t=this._regions.findRange(e);if(t>=0)return this._regions.toRegion(t)}return null}getRegionsInside(e,t){let i=[],n=e?e.regionIndex+1:0,r=e?e.endLineNumber:Number.MAX_VALUE;if(t&&2===t.length){const e=[];for(let s=n,o=this._regions.length;s<o;s++){let n=this._regions.toRegion(s);if(!(this._regions.getStartLineNumber(s)<r))break;for(;e.length>0&&!n.containedBy(e[e.length-1]);)e.pop();e.push(n),t(n,e.length)&&i.push(n)}}else for(let e=n,s=this._regions.length;e<s;e++){let n=this._regions.toRegion(e);if(!(this._regions.getStartLineNumber(e)<r))break;t&&!t(n)||i.push(n)}return i}}function m(e,t,i=Number.MAX_VALUE,n){let r=[];if(n&&n.length>0)for(let s of n){let n=e.getRegionAtLine(s);if(n&&(n.isCollapsed!==t&&r.push(n),i>1)){let s=e.getRegionsInside(n,((e,n)=>e.isCollapsed!==t&&n<i));r.push(...s)}}else{let n=e.getRegionsInside(null,((e,n)=>e.isCollapsed!==t&&n<i));r.push(...n)}e.toggleCollapseState(r)}function _(e,t,i,n){let r=[];for(let s of n){let n=e.getAllRegionsAtLine(s,((e,n)=>e.isCollapsed!==t&&n<=i));r.push(...n)}e.toggleCollapseState(r)}function b(e,t,i){let n=e.textModel,r=e.regions,s=[];for(let e=r.length-1;e>=0;e--)if(i!==r.isCollapsed(e)){let i=r.getStartLineNumber(e);t.test(n.getLineContent(i))&&s.push(r.toRegion(e))}e.toggleCollapseState(s)}function v(e,t,i){let n=e.regions,r=[];for(let e=n.length-1;e>=0;e--)i!==n.isCollapsed(e)&&t===n.getType(e)&&r.push(n.toRegion(e));e.toggleCollapseState(r)}var y=i(3411),w=i(73046);const C=(0,w.q5)("folding-expanded",w.lA.chevronDown),S=(0,w.q5)("folding-collapsed",w.lA.chevronRight);class k{constructor(e){this.editor=e,this.autoHideFoldingControls=!0,this.showFoldingHighlights=!0}getDecorationOption(e,t){return t?k.HIDDEN_RANGE_DECORATION:e?this.showFoldingHighlights?k.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION:k.COLLAPSED_VISUAL_DECORATION:this.autoHideFoldingControls?k.EXPANDED_AUTO_HIDE_VISUAL_DECORATION:k.EXPANDED_VISUAL_DECORATION}deltaDecorations(e,t){return this.editor.deltaDecorations(e,t)}changeDecorations(e){return this.editor.changeDecorations(e)}}k.COLLAPSED_VISUAL_DECORATION=y.qx.register({stickiness:1,afterContentClassName:"inline-folded",isWholeLine:!0,firstLineDecorationClassName:S.classNames}),k.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION=y.qx.register({stickiness:1,afterContentClassName:"inline-folded",className:"folded-background",isWholeLine:!0,firstLineDecorationClassName:S.classNames}),k.EXPANDED_AUTO_HIDE_VISUAL_DECORATION=y.qx.register({stickiness:1,isWholeLine:!0,firstLineDecorationClassName:C.classNames}),k.EXPANDED_VISUAL_DECORATION=y.qx.register({stickiness:1,isWholeLine:!0,firstLineDecorationClassName:"alwaysShowFoldIcons "+C.classNames}),k.HIDDEN_RANGE_DECORATION=y.qx.register({stickiness:1});var x=i(29102),L=i(24314),M=i(9488);class D{constructor(e){this._updateEventEmitter=new d.Q5,this._foldingModel=e,this._foldingModelListener=e.onDidChange((e=>this.updateHiddenRanges())),this._hiddenRanges=[],e.regions.length&&this.updateHiddenRanges()}get onDidChange(){return this._updateEventEmitter.event}get hiddenRanges(){return this._hiddenRanges}updateHiddenRanges(){let e=!1,t=[],i=0,n=0,r=Number.MAX_VALUE,s=-1,o=this._foldingModel.regions;for(;i<o.length;i++){if(!o.isCollapsed(i))continue;let a=o.getStartLineNumber(i)+1,l=o.getEndLineNumber(i);r<=a&&l<=s||(!e&&n<this._hiddenRanges.length&&this._hiddenRanges[n].startLineNumber===a&&this._hiddenRanges[n].endLineNumber===l?(t.push(this._hiddenRanges[n]),n++):(e=!0,t.push(new L.e(a,1,l,1))),r=a,s=l)}(e||n<this._hiddenRanges.length)&&this.applyHiddenRanges(t)}applyMemento(e){if(!Array.isArray(e)||0===e.length)return!1;let t=[];for(let i of e){if(!i.startLineNumber||!i.endLineNumber)return!1;t.push(new L.e(i.startLineNumber+1,1,i.endLineNumber,1))}return this.applyHiddenRanges(t),!0}getMemento(){return this._hiddenRanges.map((e=>({startLineNumber:e.startLineNumber-1,endLineNumber:e.endLineNumber})))}applyHiddenRanges(e){this._hiddenRanges=e,this._updateEventEmitter.fire(e)}hasRanges(){return this._hiddenRanges.length>0}isHidden(e){return null!==N(this._hiddenRanges,e)}adjustSelections(e){let t=!1,i=this._foldingModel.textModel,n=null,r=e=>(n&&function(e,t){return e>=t.startLineNumber&&e<=t.endLineNumber}(e,n)||(n=N(this._hiddenRanges,e)),n?n.startLineNumber-1:null);for(let n=0,s=e.length;n<s;n++){let s=e[n],o=r(s.startLineNumber);o&&(s=s.setStartPosition(o,i.getLineMaxColumn(o)),t=!0);let a=r(s.endLineNumber);a&&(s=s.setEndPosition(a,i.getLineMaxColumn(a)),t=!0),e[n]=s}return t}dispose(){this.hiddenRanges.length>0&&(this._hiddenRanges=[],this._updateEventEmitter.fire(this._hiddenRanges)),this._foldingModelListener&&(this._foldingModelListener.dispose(),this._foldingModelListener=null)}}function N(e,t){let i=(0,M.lG)(e,(e=>t<e.startLineNumber))-1;return i>=0&&e[i].endLineNumber>=t?e[i]:null}var E=i(83831);class T{constructor(e){this.editorModel=e,this.id="indent"}dispose(){}compute(e){let t=E.zu.getFoldingRules(this.editorModel.getLanguageIdentifier().id),i=t&&!!t.offSide,n=t&&t.markers;return Promise.resolve(function(e,t,i,n=5e3){const r=e.getOptions().tabSize;let s,o=new I(n);i&&(s=new RegExp(`(${i.start.source})|(?:${i.end.source})`));let a=[],l=e.getLineCount()+1;a.push({indent:-1,endAbove:l,line:l});for(let i=e.getLineCount();i>0;i--){let n,l=e.getLineContent(i),c=y.yO.computeIndentLevel(l,r),d=a[a.length-1];if(-1!==c){if(s&&(n=l.match(s))){if(!n[1]){a.push({indent:-2,endAbove:i,line:i});continue}{let e=a.length-1;for(;e>0&&-2!==a[e].indent;)e--;if(e>0){a.length=e+1,d=a[e],o.insertFirst(i,d.line,c),d.line=i,d.indent=c,d.endAbove=i;continue}}}if(d.indent>c){do{a.pop(),d=a[a.length-1]}while(d.indent>c);let e=d.endAbove-1;e-i>=1&&o.insertFirst(i,e,c)}d.indent===c?d.endAbove=i:a.push({indent:c,endAbove:i,line:i})}else t&&(d.endAbove=i)}return o.toIndentRanges(e)}(this.editorModel,i,n))}}class I{constructor(e){this._startIndexes=[],this._endIndexes=[],this._indentOccurrences=[],this._length=0,this._foldingRangesLimit=e}insertFirst(e,t,i){if(e>h||t>h)return;let n=this._length;this._startIndexes[n]=e,this._endIndexes[n]=t,this._length++,i<1e3&&(this._indentOccurrences[i]=(this._indentOccurrences[i]||0)+1)}toIndentRanges(e){if(this._length<=this._foldingRangesLimit){let e=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let i=this._length-1,n=0;i>=0;i--,n++)e[n]=this._startIndexes[i],t[n]=this._endIndexes[i];return new g(e,t)}{let t=0,i=this._indentOccurrences.length;for(let e=0;e<this._indentOccurrences.length;e++){let n=this._indentOccurrences[e];if(n){if(n+t>this._foldingRangesLimit){i=e;break}t+=n}}const n=e.getOptions().tabSize;let r=new Uint32Array(this._foldingRangesLimit),s=new Uint32Array(this._foldingRangesLimit);for(let o=this._length-1,a=0;o>=0;o--){let l=this._startIndexes[o],c=e.getLineContent(l),d=y.yO.computeIndentLevel(c,n);(d<i||d===i&&t++<this._foldingRangesLimit)&&(r[a]=l,s[a]=this._endIndexes[o],a++)}return new g(r,s)}}}var O=i(43775),A=i(17301);const R={},P="syntax";class F{constructor(e,t,i=5e3){this.editorModel=e,this.providers=t,this.limit=i,this.id=P}compute(e){return function(e,t,i){let n=null,r=e.map(((e,r)=>Promise.resolve(e.provideFoldingRanges(t,R,i)).then((e=>{if(!i.isCancellationRequested&&Array.isArray(e)){Array.isArray(n)||(n=[]);let i=t.getLineCount();for(let t of e)t.start>0&&t.end>t.start&&t.end<=i&&n.push({start:t.start,end:t.end,rank:r,kind:t.kind})}}),A.Cp)));return Promise.all(r).then((e=>n))}(this.providers,this.editorModel,e).then((e=>e?W(e,this.limit):null))}dispose(){}}class B{constructor(e){this._startIndexes=[],this._endIndexes=[],this._nestingLevels=[],this._nestingLevelCounts=[],this._types=[],this._length=0,this._foldingRangesLimit=e}add(e,t,i,n){if(e>h||t>h)return;let r=this._length;this._startIndexes[r]=e,this._endIndexes[r]=t,this._nestingLevels[r]=n,this._types[r]=i,this._length++,n<30&&(this._nestingLevelCounts[n]=(this._nestingLevelCounts[n]||0)+1)}toIndentRanges(){if(this._length<=this._foldingRangesLimit){let e=new Uint32Array(this._length),t=new Uint32Array(this._length);for(let i=0;i<this._length;i++)e[i]=this._startIndexes[i],t[i]=this._endIndexes[i];return new g(e,t,this._types)}{let e=0,t=this._nestingLevelCounts.length;for(let i=0;i<this._nestingLevelCounts.length;i++){let n=this._nestingLevelCounts[i];if(n){if(n+e>this._foldingRangesLimit){t=i;break}e+=n}}let i=new Uint32Array(this._foldingRangesLimit),n=new Uint32Array(this._foldingRangesLimit),r=[];for(let s=0,o=0;s<this._length;s++){let a=this._nestingLevels[s];(a<t||a===t&&e++<this._foldingRangesLimit)&&(i[o]=this._startIndexes[s],n[o]=this._endIndexes[s],r[o]=this._types[s],o++)}return new g(i,n,r)}}}function W(e,t){let i,n=e.sort(((e,t)=>{let i=e.start-t.start;return 0===i&&(i=e.rank-t.rank),i})),r=new B(t),s=[];for(let e of n)if(i){if(e.start>i.start)if(e.end<=i.end)s.push(i),i=e,r.add(e.start,e.end,e.kind&&e.kind.value,s.length);else{if(e.start>i.end){do{i=s.pop()}while(i&&e.start>i.end);i&&s.push(i),i=e}r.add(e.start,e.end,e.kind&&e.kind.value,s.length)}}else i=e,r.add(e.start,e.end,e.kind&&e.kind.value,s.length);return r.toIndentRanges()}const Y="init";class H{constructor(e,t,i,n){if(this.editorModel=e,this.id=Y,t.length){let r=t=>({range:{startLineNumber:t.startLineNumber,startColumn:0,endLineNumber:t.endLineNumber,endColumn:e.getLineLength(t.endLineNumber)},options:{stickiness:1}});this.decorationIds=e.deltaDecorations([],t.map(r)),this.timeout=setTimeout(i,n)}}dispose(){this.decorationIds&&(this.editorModel.deltaDecorations(this.decorationIds,[]),this.decorationIds=void 0),"number"==typeof this.timeout&&(clearTimeout(this.timeout),this.timeout=void 0)}compute(e){let t=[];if(this.decorationIds)for(let e of this.decorationIds){let i=this.editorModel.getDecorationRange(e);i&&t.push({start:i.startLineNumber,end:i.endLineNumber,rank:1})}return Promise.resolve(W(t,Number.MAX_VALUE))}}var j=i(38819),V=i(97781),z=i(73910);const U=new j.uy("foldingEnabled",!1);let $=class e extends l.JT{constructor(e,t){super(),this.contextKeyService=t,this.localToDispose=this._register(new l.SL),this.editor=e;const i=this.editor.getOptions();this._isEnabled=i.get(31),this._useFoldingProviders="indentation"!==i.get(32),this._unfoldOnClickAfterEndOfLine=i.get(34),this.foldingModel=null,this.hiddenRangeModel=null,this.rangeProvider=null,this.foldingRegionPromise=null,this.foldingStateMemento=null,this.foldingModelPromise=null,this.updateScheduler=null,this.cursorChangedScheduler=null,this.mouseDownInfo=null,this.foldingDecorationProvider=new k(e),this.foldingDecorationProvider.autoHideFoldingControls="mouseover"===i.get(91),this.foldingDecorationProvider.showFoldingHighlights=i.get(33),this.foldingEnabled=U.bindTo(this.contextKeyService),this.foldingEnabled.set(this._isEnabled),this._register(this.editor.onDidChangeModel((()=>this.onModelChanged()))),this._register(this.editor.onDidChangeConfiguration((e=>{if(e.hasChanged(31)&&(this._isEnabled=this.editor.getOptions().get(31),this.foldingEnabled.set(this._isEnabled),this.onModelChanged()),e.hasChanged(91)||e.hasChanged(33)){const e=this.editor.getOptions();this.foldingDecorationProvider.autoHideFoldingControls="mouseover"===e.get(91),this.foldingDecorationProvider.showFoldingHighlights=e.get(33),this.onModelContentChanged()}e.hasChanged(32)&&(this._useFoldingProviders="indentation"!==this.editor.getOptions().get(32),this.onFoldingStrategyChanged()),e.hasChanged(34)&&(this._unfoldOnClickAfterEndOfLine=this.editor.getOptions().get(34))}))),this.onModelChanged()}static get(t){return t.getContribution(e.ID)}saveViewState(){let e=this.editor.getModel();if(!e||!this._isEnabled||e.isTooLargeForTokenization())return{};if(this.foldingModel){let t=this.foldingModel.isInitialized?this.foldingModel.getMemento():this.hiddenRangeModel.getMemento(),i=this.rangeProvider?this.rangeProvider.id:void 0;return{collapsedRegions:t,lineCount:e.getLineCount(),provider:i}}}restoreViewState(e){let t=this.editor.getModel();if(!t||!this._isEnabled||t.isTooLargeForTokenization()||!this.hiddenRangeModel)return;if(!e||!e.collapsedRegions||e.lineCount!==t.getLineCount())return;e.provider!==P&&e.provider!==Y||(this.foldingStateMemento=e);const i=e.collapsedRegions;if(this.hiddenRangeModel.applyMemento(i)){const e=this.getFoldingModel();e&&e.then((e=>{e&&e.applyMemento(i)})).then(void 0,A.dL)}}onModelChanged(){this.localToDispose.clear();let e=this.editor.getModel();this._isEnabled&&e&&!e.isTooLargeForTokenization()&&(this.foldingModel=new p(e,this.foldingDecorationProvider),this.localToDispose.add(this.foldingModel),this.hiddenRangeModel=new D(this.foldingModel),this.localToDispose.add(this.hiddenRangeModel),this.localToDispose.add(this.hiddenRangeModel.onDidChange((e=>this.onHiddenRangesChanges(e)))),this.updateScheduler=new o.vp(200),this.cursorChangedScheduler=new o.pY((()=>this.revealCursor()),200),this.localToDispose.add(this.cursorChangedScheduler),this.localToDispose.add(O.aC.onDidChange((()=>this.onFoldingStrategyChanged()))),this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration((()=>this.onFoldingStrategyChanged()))),this.localToDispose.add(this.editor.onDidChangeModelContent((()=>this.onModelContentChanged()))),this.localToDispose.add(this.editor.onDidChangeCursorPosition((()=>this.onCursorPositionChanged()))),this.localToDispose.add(this.editor.onMouseDown((e=>this.onEditorMouseDown(e)))),this.localToDispose.add(this.editor.onMouseUp((e=>this.onEditorMouseUp(e)))),this.localToDispose.add({dispose:()=>{this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.updateScheduler&&this.updateScheduler.cancel(),this.updateScheduler=null,this.foldingModel=null,this.foldingModelPromise=null,this.hiddenRangeModel=null,this.cursorChangedScheduler=null,this.foldingStateMemento=null,this.rangeProvider&&this.rangeProvider.dispose(),this.rangeProvider=null}}),this.onModelContentChanged())}onFoldingStrategyChanged(){this.rangeProvider&&this.rangeProvider.dispose(),this.rangeProvider=null,this.onModelContentChanged()}getRangeProvider(e){if(this.rangeProvider)return this.rangeProvider;if(this.rangeProvider=new T(e),this._useFoldingProviders&&this.foldingModel){let t=O.aC.ordered(this.foldingModel.textModel);if(0===t.length&&this.foldingStateMemento&&this.foldingStateMemento.collapsedRegions)return this.rangeProvider=new H(e,this.foldingStateMemento.collapsedRegions,(()=>{this.foldingStateMemento=null,this.onFoldingStrategyChanged()}),3e4);t.length>0&&(this.rangeProvider=new F(e,t))}return this.foldingStateMemento=null,this.rangeProvider}getFoldingModel(){return this.foldingModelPromise}onModelContentChanged(){this.updateScheduler&&(this.foldingRegionPromise&&(this.foldingRegionPromise.cancel(),this.foldingRegionPromise=null),this.foldingModelPromise=this.updateScheduler.trigger((()=>{const e=this.foldingModel;if(!e)return null;let t=this.foldingRegionPromise=(0,o.PG)((t=>this.getRangeProvider(e.textModel).compute(t)));return t.then((i=>{if(i&&t===this.foldingRegionPromise){let t=this.editor.getSelections(),n=t?t.map((e=>e.startLineNumber)):[];e.update(i,n)}return e}))})).then(void 0,(e=>((0,A.dL)(e),null))))}onHiddenRangesChanges(e){if(this.hiddenRangeModel&&e.length){let e=this.editor.getSelections();e&&this.hiddenRangeModel.adjustSelections(e)&&this.editor.setSelections(e)}this.editor.setHiddenAreas(e)}onCursorPositionChanged(){this.hiddenRangeModel&&this.hiddenRangeModel.hasRanges()&&this.cursorChangedScheduler.schedule()}revealCursor(){const e=this.getFoldingModel();e&&e.then((e=>{if(e){let t=this.editor.getSelections();if(t&&t.length>0){let i=[];for(let n of t){let t=n.selectionStartLineNumber;this.hiddenRangeModel&&this.hiddenRangeModel.isHidden(t)&&i.push(...e.getAllRegionsAtLine(t,(e=>e.isCollapsed&&t>e.startLineNumber)))}i.length&&(e.toggleCollapseState(i),this.reveal(t[0].getPosition()))}}})).then(void 0,A.dL)}onEditorMouseDown(e){if(this.mouseDownInfo=null,!this.hiddenRangeModel||!e.target||!e.target.range)return;if(!e.event.leftButton&&!e.event.middleButton)return;const t=e.target.range;let i=!1;switch(e.target.type){case 4:const n=e.target.detail,r=e.target.element.offsetLeft;if(n.offsetX-r<5)return;i=!0;break;case 7:if(this._unfoldOnClickAfterEndOfLine&&this.hiddenRangeModel.hasRanges()&&!e.target.detail.isAfterLines)break;return;case 6:if(this.hiddenRangeModel.hasRanges()){let e=this.editor.getModel();if(e&&t.startColumn===e.getLineMaxColumn(t.startLineNumber))break}return;default:return}this.mouseDownInfo={lineNumber:t.startLineNumber,iconClicked:i}}onEditorMouseUp(e){const t=this.getFoldingModel();if(!t||!this.mouseDownInfo||!e.target)return;let i=this.mouseDownInfo.lineNumber,n=this.mouseDownInfo.iconClicked,r=e.target.range;if(r&&r.startLineNumber===i){if(n){if(4!==e.target.type)return}else{let e=this.editor.getModel();if(!e||r.startColumn!==e.getLineMaxColumn(i))return}t.then((t=>{if(t){let r=t.getRegionAtLine(i);if(r&&r.startLineNumber===i){let s=r.isCollapsed;if(n||s){let n=[],o=e.event.middleButton||e.event.shiftKey;if(o)for(const e of t.getRegionsInside(r))e.isCollapsed===s&&n.push(e);!s&&o&&0!==n.length||n.push(r),t.toggleCollapseState(n),this.reveal({lineNumber:i,column:1})}}}})).then(void 0,A.dL)}}reveal(e){this.editor.revealPositionInCenterIfOutsideViewport(e,0)}};var K,q;$.ID="editor.contrib.folding",$=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(K=1,q=j.i6,function(e,t){q(e,t,K)})],$);class G extends c.R6{runEditorCommand(e,t,i){let n=$.get(t);if(!n)return;let r=n.getFoldingModel();return r?(this.reportTelemetry(e,t),r.then((e=>{if(e){this.invoke(n,e,t,i);const r=t.getSelection();r&&n.reveal(r.getStartPosition())}}))):void 0}getSelectedLines(e){let t=e.getSelections();return t?t.map((e=>e.startLineNumber)):[]}getLineNumbers(e,t){return e&&e.selectionLines?e.selectionLines.map((e=>e+1)):this.getSelectedLines(t)}run(e,t){}}function Z(e){if(!r.o8(e)){if(!r.Kn(e))return!1;const t=e;if(!r.o8(t.levels)&&!r.hj(t.levels))return!1;if(!r.o8(t.direction)&&!r.HD(t.direction))return!1;if(!(r.o8(t.selectionLines)||r.kJ(t.selectionLines)&&t.selectionLines.every(r.hj)))return!1}return!0}class J extends G{getFoldingLevel(){return parseInt(this.id.substr(J.ID_PREFIX.length))}invoke(e,t,i){!function(e,t,i,n){let r=e.getRegionsInside(null,((e,i)=>i===t&&true!==e.isCollapsed&&!n.some((t=>e.containsLine(t)))));e.toggleCollapseState(r)}(t,this.getFoldingLevel(),0,this.getSelectedLines(i))}}J.ID_PREFIX="editor.foldLevel",J.ID=e=>J.ID_PREFIX+e,(0,c._K)($.ID,$),(0,c.Qr)(class extends G{constructor(){super({id:"editor.unfold",label:n.N("unfoldAction.label","Unfold"),alias:"Unfold",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:3161,mac:{primary:2649},weight:100},description:{description:"Unfold the content in the editor",args:[{name:"Unfold editor argument",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': The start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t",constraint:Z,schema:{type:"object",properties:{levels:{type:"number",default:1},direction:{type:"string",enum:["up","down"],default:"down"},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,n){let r=n&&n.levels||1,s=this.getLineNumbers(n,i);n&&"up"===n.direction?_(t,!1,r,s):m(t,!1,r,s)}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.unfoldRecursively",label:n.N("unFoldRecursivelyAction.label","Unfold Recursively"),alias:"Unfold Recursively",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2137),weight:100}})}invoke(e,t,i,n){m(t,!1,Number.MAX_VALUE,this.getSelectedLines(i))}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.fold",label:n.N("foldAction.label","Fold"),alias:"Fold",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:3159,mac:{primary:2647},weight:100},description:{description:"Fold the content in the editor",args:[{name:"Fold editor argument",description:"Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': The start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t",constraint:Z,schema:{type:"object",properties:{levels:{type:"number"},direction:{type:"string",enum:["up","down"]},selectionLines:{type:"array",items:{type:"number"}}}}}]}})}invoke(e,t,i,n){let r=this.getLineNumbers(n,i);const s=n&&n.levels,o=n&&n.direction;"number"!=typeof s&&"string"!=typeof o?function(e,t,i){let n=[];for(let t of i){let i=e.getAllRegionsAtLine(t,(e=>true!==e.isCollapsed));i.length>0&&n.push(i[0])}e.toggleCollapseState(n)}(t,0,r):"up"===o?_(t,!0,s||1,r):m(t,!0,s||1,r)}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.foldRecursively",label:n.N("foldRecursivelyAction.label","Fold Recursively"),alias:"Fold Recursively",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2135),weight:100}})}invoke(e,t,i){let n=this.getSelectedLines(i);m(t,!0,Number.MAX_VALUE,n)}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.foldAll",label:n.N("foldAllAction.label","Fold All"),alias:"Fold All",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2069),weight:100}})}invoke(e,t,i){m(t,!0)}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.unfoldAll",label:n.N("unfoldAllAction.label","Unfold All"),alias:"Unfold All",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2088),weight:100}})}invoke(e,t,i){m(t,!1)}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.foldAllBlockComments",label:n.N("foldAllBlockComments.label","Fold All Block Comments"),alias:"Fold All Block Comments",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2133),weight:100}})}invoke(e,t,i){if(t.regions.hasTypes())v(t,O.AD.Comment.value,!0);else{const e=i.getModel();if(!e)return;let n=E.zu.getComments(e.getLanguageIdentifier().id);n&&n.blockCommentStartToken&&b(t,new RegExp("^\\s*"+(0,s.ec)(n.blockCommentStartToken)),!0)}}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.foldAllMarkerRegions",label:n.N("foldAllMarkerRegions.label","Fold All Regions"),alias:"Fold All Regions",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2077),weight:100}})}invoke(e,t,i){if(t.regions.hasTypes())v(t,O.AD.Region.value,!0);else{const e=i.getModel();if(!e)return;let n=E.zu.getFoldingRules(e.getLanguageIdentifier().id);n&&n.markers&&n.markers.start&&b(t,new RegExp(n.markers.start),!0)}}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.unfoldAllMarkerRegions",label:n.N("unfoldAllMarkerRegions.label","Unfold All Regions"),alias:"Unfold All Regions",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2078),weight:100}})}invoke(e,t,i){if(t.regions.hasTypes())v(t,O.AD.Region.value,!1);else{const e=i.getModel();if(!e)return;let n=E.zu.getFoldingRules(e.getLanguageIdentifier().id);n&&n.markers&&n.markers.start&&b(t,new RegExp(n.markers.start),!1)}}}),(0,c.Qr)(class extends G{constructor(){super({id:"editor.toggleFold",label:n.N("toggleFoldAction.label","Toggle Fold"),alias:"Toggle Fold",precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2090),weight:100}})}invoke(e,t,i){!function(e,t,i){let n=[];for(let t of i){let i=e.getRegionAtLine(t);if(i){i.isCollapsed;n.push(i),0}}e.toggleCollapseState(n)}(t,0,this.getSelectedLines(i))}});for(let e=1;e<=7;e++)(0,c.QG)(new J({id:J.ID(e),label:n.N("foldLevelAction.label","Fold Level {0}",e),alias:`Fold Level ${e}`,precondition:U,kbOpts:{kbExpr:x.u.editorTextFocus,primary:(0,a.gx)(2089,2048|21+e),weight:100}}));const Q=(0,z.P6)("editor.foldBackground",{light:(0,z.Zn)(z.hE,.3),dark:(0,z.Zn)(z.hE,.3),hc:null},n.N("foldBackgroundBackground","Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."),!0),X=(0,z.P6)("editorGutter.foldingControlForeground",{dark:z.XZ,light:z.XZ,hc:z.XZ},n.N("editorGutter.foldingControlForeground","Color of the folding control in the editor gutter."));(0,V.Ic)(((e,t)=>{const i=e.getColor(Q);i&&t.addRule(`.monaco-editor .folded-background { background-color: ${i}; }`);const n=e.getColor(X);n&&t.addRule(`\n\t\t.monaco-editor .cldr${C.cssSelector},\n\t\t.monaco-editor .cldr${S.cssSelector} {\n\t\t\tcolor: ${n} !important;\n\t\t}\n\t\t`)}))},23111:(e,t,i)=>{"use strict";i.r(t);var n=i(63580),r=i(16830),s=i(82334);class o extends r.R6{constructor(){super({id:"editor.action.fontZoomIn",label:n.N("EditorFontZoomIn.label","Editor Font Zoom In"),alias:"Editor Font Zoom In",precondition:void 0})}run(e,t){s.C.setZoomLevel(s.C.getZoomLevel()+1)}}class a extends r.R6{constructor(){super({id:"editor.action.fontZoomOut",label:n.N("EditorFontZoomOut.label","Editor Font Zoom Out"),alias:"Editor Font Zoom Out",precondition:void 0})}run(e,t){s.C.setZoomLevel(s.C.getZoomLevel()-1)}}class l extends r.R6{constructor(){super({id:"editor.action.fontZoomReset",label:n.N("EditorFontZoomReset.label","Editor Font Zoom Reset"),alias:"Editor Font Zoom Reset",precondition:void 0})}run(e,t){s.C.setZoomLevel(0)}}(0,r.Qr)(o),(0,r.Qr)(a),(0,r.Qr)(l)},76798:(e,t,i)=>{"use strict";i.r(t);var n=i(9488),r=i(71050),s=i(22258),o=i(5976),a=i(16830),l=i(11640),c=i(44906),d=i(24314),h=i(29102),u=i(43775),g=i(90469),f=i(85152),p=i(17301),m=i(70666),_=i(39925),b=i(65520),v=i(50187),y=i(3860),w=i(51200),C=i(69386);class S{static _handleEolEdits(e,t){let i,n=[];for(let e of t)"number"==typeof e.eol&&(i=e.eol),e.range&&"string"==typeof e.text&&n.push(e);return"number"==typeof i&&e.hasModel()&&e.getModel().pushEOL(i),n}static _isFullModelReplaceEdit(e,t){if(!e.hasModel())return!1;const i=e.getModel(),n=i.validateRange(t.range);return i.getFullModelRange().equalsRange(n)}static execute(e,t,i){i&&e.pushUndoStop();const n=S._handleEolEdits(e,t);1===n.length&&S._isFullModelReplaceEdit(e,n[0])?e.executeEdits("formatEditsCommand",n.map((e=>C.h.replace(d.e.lift(e.range),e.text)))):e.executeEdits("formatEditsCommand",n.map((e=>C.h.replaceMove(d.e.lift(e.range),e.text)))),i&&e.pushUndoStop()}}var k=i(63580);class x{constructor(e){this.value=e,this._lower=e.toLowerCase()}static toKey(e){return"string"==typeof e?e.toLowerCase():e._lower}}var L=i(72065),M=i(91741),D=i(94565),N=i(98401),E=i(53725),T=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function I(e){if(!(e=e.filter((e=>e.range))).length)return;let{range:t}=e[0];for(let i=1;i<e.length;i++)t=d.e.plusRange(t,e[i].range);const{startLineNumber:i,endLineNumber:n}=t;i===n?1===e.length?(0,f.Z9)(k.N("hint11","Made 1 formatting edit on line {0}",i)):(0,f.Z9)(k.N("hintn1","Made {0} formatting edits on line {1}",e.length,i)):1===e.length?(0,f.Z9)(k.N("hint1n","Made 1 formatting edit between lines {0} and {1}",i,n)):(0,f.Z9)(k.N("hintnn","Made {0} formatting edits between lines {1} and {2}",e.length,i,n))}function O(e){const t=[],i=new Set,n=u.Az.ordered(e);for(const e of n)t.push(e),e.extensionId&&i.add(x.toKey(e.extensionId));const r=u.vN.ordered(e);for(const e of r){if(e.extensionId){if(i.has(x.toKey(e.extensionId)))continue;i.add(x.toKey(e.extensionId))}t.push({displayName:e.displayName,extensionId:e.extensionId,provideDocumentFormattingEdits:(t,i,n)=>e.provideDocumentRangeFormattingEdits(t,t.getFullModelRange(),i,n)})}return t}class A{static select(e,t,i){return T(this,void 0,void 0,(function*(){if(0===e.length)return;const n=E.$.first(A._selectors);return n?yield n(e,t,i):e[0]}))}}function R(e,t,i,n,r,s){return T(this,void 0,void 0,(function*(){const o=e.get(L.TG),a=(0,b.CL)(t)?t.getModel():t,l=u.vN.ordered(a),c=yield A.select(l,a,n);c&&(r.report(c),yield o.invokeFunction(P,c,t,i,s))}))}function P(e,t,i,r,s){return T(this,void 0,void 0,(function*(){const o=e.get(g.p);let a,l;(0,b.CL)(i)?(a=i.getModel(),l=new _.Dl(i,5,void 0,s)):(a=i,l=new _.YQ(i,s));let c=[],h=0;for(let e of(0,n._2)(r).sort(d.e.compareRangesUsingStarts))h>0&&d.e.areIntersectingOrTouching(c[h-1],e)?c[h-1]=d.e.fromPositions(c[h-1].getStartPosition(),e.getEndPosition()):h=c.push(e);const u=[];for(let e of c)try{const i=yield t.provideDocumentRangeFormattingEdits(a,e,a.getFormattingOptions(),l.token),n=yield o.computeMoreMinimalEdits(a.uri,i);if(n&&u.push(...n),l.token.isCancellationRequested)return!0}finally{l.dispose()}if(0===u.length)return!1;if((0,b.CL)(i))S.execute(i,u,!0),I(u),i.revealPositionInCenterIfOutsideViewport(i.getPosition(),1);else{const[{range:e}]=u,t=new y.Y(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);a.pushEditOperations([t],u.map((e=>({text:e.text,range:d.e.lift(e.range),forceMoveMarkers:!0}))),(e=>{for(const{range:i}of e)if(d.e.areIntersectingOrTouching(i,t))return[new y.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)];return null}))}return!0}))}function F(e,t,i,n,r){return T(this,void 0,void 0,(function*(){const s=e.get(L.TG),o=(0,b.CL)(t)?t.getModel():t,a=O(o),l=yield A.select(a,o,i);l&&(n.report(l),yield s.invokeFunction(B,l,t,i,r))}))}function B(e,t,i,n,r){return T(this,void 0,void 0,(function*(){const s=e.get(g.p);let o,a,l;(0,b.CL)(i)?(o=i.getModel(),a=new _.Dl(i,5,void 0,r)):(o=i,a=new _.YQ(i,r));try{const e=yield t.provideDocumentFormattingEdits(o,o.getFormattingOptions(),a.token);if(l=yield s.computeMoreMinimalEdits(o.uri,e),a.token.isCancellationRequested)return!0}finally{a.dispose()}if(!l||0===l.length)return!1;if((0,b.CL)(i))S.execute(i,l,2!==n),2!==n&&(I(l),i.revealPositionInCenterIfOutsideViewport(i.getPosition(),1));else{const[{range:e}]=l,t=new y.Y(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn);o.pushEditOperations([t],l.map((e=>({text:e.text,range:d.e.lift(e.range),forceMoveMarkers:!0}))),(e=>{for(const{range:i}of e)if(d.e.areIntersectingOrTouching(i,t))return[new y.Y(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn)];return null}))}return!0}))}function W(e,t,i,n,s){const o=u.ln.ordered(t);return 0===o.length||o[0].autoFormatTriggerCharacters.indexOf(n)<0?Promise.resolve(void 0):Promise.resolve(o[0].provideOnTypeFormattingEdits(t,i,n,s,r.T.None)).catch(p.Cp).then((i=>e.computeMoreMinimalEdits(t.uri,i)))}A._selectors=new M.S,D.P.registerCommand("_executeFormatRangeProvider",(function(e,...t){const[i,s,o]=t;(0,N.p_)(m.o.isUri(i)),(0,N.p_)(d.e.isIRange(s));const a=e.get(w.q).getModel(i);if(!a)throw(0,p.b1)("resource");return function(e,t,i,r,s){return T(this,void 0,void 0,(function*(){const o=u.vN.ordered(t);for(const a of o){let o=yield Promise.resolve(a.provideDocumentRangeFormattingEdits(t,i,r,s)).catch(p.Cp);if((0,n.Of)(o))return yield e.computeMoreMinimalEdits(t.uri,o)}}))}(e.get(g.p),a,d.e.lift(s),o,r.T.None)})),D.P.registerCommand("_executeFormatDocumentProvider",(function(e,...t){const[i,s]=t;(0,N.p_)(m.o.isUri(i));const o=e.get(w.q).getModel(i);if(!o)throw(0,p.b1)("resource");return function(e,t,i,r){return T(this,void 0,void 0,(function*(){const s=O(t);for(const o of s){let s=yield Promise.resolve(o.provideDocumentFormattingEdits(t,i,r)).catch(p.Cp);if((0,n.Of)(s))return yield e.computeMoreMinimalEdits(t.uri,s)}}))}(e.get(g.p),o,s,r.T.None)})),D.P.registerCommand("_executeFormatOnTypeProvider",(function(e,...t){const[i,n,r,s]=t;(0,N.p_)(m.o.isUri(i)),(0,N.p_)(v.L.isIPosition(n)),(0,N.p_)("string"==typeof r);const o=e.get(w.q).getModel(i);if(!o)throw(0,p.b1)("resource");return W(e.get(g.p),o,v.L.lift(n),r,s)}));var Y=i(38819),H=i(90535),j=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},V=function(e,t){return function(i,n){t(i,n,e)}},z=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};let U=class{constructor(e,t){this._workerService=t,this._callOnDispose=new o.SL,this._callOnModel=new o.SL,this._editor=e,this._callOnDispose.add(e.onDidChangeConfiguration((()=>this._update()))),this._callOnDispose.add(e.onDidChangeModel((()=>this._update()))),this._callOnDispose.add(e.onDidChangeModelLanguage((()=>this._update()))),this._callOnDispose.add(u.ln.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){if(this._callOnModel.clear(),!this._editor.getOption(41))return;if(!this._editor.hasModel())return;const e=this._editor.getModel(),[t]=u.ln.ordered(e);if(!t||!t.autoFormatTriggerCharacters)return;let i=new c.q;for(let e of t.autoFormatTriggerCharacters)i.add(e.charCodeAt(0));this._callOnModel.add(this._editor.onDidType((e=>{let t=e.charCodeAt(e.length-1);i.has(t)&&this._trigger(String.fromCharCode(t))})))}_trigger(e){if(!this._editor.hasModel())return;if(this._editor.getSelections().length>1)return;const t=this._editor.getModel(),i=this._editor.getPosition();let r=!1;const s=this._editor.onDidChangeModelContent((e=>{if(e.isFlush)return r=!0,void s.dispose();for(let t=0,n=e.changes.length;t<n;t++)if(e.changes[t].range.endLineNumber<=i.lineNumber)return r=!0,void s.dispose()}));W(this._workerService,t,i,e,t.getFormattingOptions()).then((e=>{s.dispose(),r||(0,n.Of)(e)&&(S.execute(this._editor,e,!0),I(e))}),(e=>{throw s.dispose(),e}))}};U.ID="editor.contrib.autoFormat",U=j([V(1,g.p)],U);let $=class{constructor(e,t){this.editor=e,this._instantiationService=t,this._callOnDispose=new o.SL,this._callOnModel=new o.SL,this._callOnDispose.add(e.onDidChangeConfiguration((()=>this._update()))),this._callOnDispose.add(e.onDidChangeModel((()=>this._update()))),this._callOnDispose.add(e.onDidChangeModelLanguage((()=>this._update()))),this._callOnDispose.add(u.vN.onDidChange(this._update,this))}dispose(){this._callOnDispose.dispose(),this._callOnModel.dispose()}_update(){this._callOnModel.clear(),this.editor.getOption(40)&&this.editor.hasModel()&&u.vN.has(this.editor.getModel())&&this._callOnModel.add(this.editor.onDidPaste((({range:e})=>this._trigger(e))))}_trigger(e){this.editor.hasModel()&&(this.editor.getSelections().length>1||this._instantiationService.invokeFunction(R,this.editor,e,2,H.E.None,r.T.None).catch(p.dL))}};$.ID="editor.contrib.formatOnPaste",$=j([V(1,L.TG)],$);class K extends a.R6{constructor(){super({id:"editor.action.formatDocument",label:k.N("formatDocument.label","Format Document"),alias:"Format Document",precondition:Y.Ao.and(h.u.notInCompositeEditor,h.u.writable,h.u.hasDocumentFormattingProvider),kbOpts:{kbExpr:Y.Ao.and(h.u.editorTextFocus,h.u.hasDocumentFormattingProvider),primary:1572,linux:{primary:3111},weight:100},contextMenuOpts:{when:h.u.hasDocumentFormattingProvider,group:"1_modification",order:1.3}})}run(e,t){return z(this,void 0,void 0,(function*(){if(t.hasModel()){const i=e.get(L.TG),n=e.get(H.e);yield n.showWhile(i.invokeFunction(F,t,1,H.E.None,r.T.None),250)}}))}}class q extends a.R6{constructor(){super({id:"editor.action.formatSelection",label:k.N("formatSelection.label","Format Selection"),alias:"Format Selection",precondition:Y.Ao.and(h.u.writable,h.u.hasDocumentSelectionFormattingProvider),kbOpts:{kbExpr:Y.Ao.and(h.u.editorTextFocus,h.u.hasDocumentSelectionFormattingProvider),primary:(0,s.gx)(2089,2084),weight:100},contextMenuOpts:{when:Y.Ao.and(h.u.hasDocumentSelectionFormattingProvider,h.u.hasNonEmptySelection),group:"1_modification",order:1.31}})}run(e,t){return z(this,void 0,void 0,(function*(){if(!t.hasModel())return;const i=e.get(L.TG),n=t.getModel(),s=t.getSelections().map((e=>e.isEmpty()?new d.e(e.startLineNumber,1,e.startLineNumber,n.getLineMaxColumn(e.startLineNumber)):e)),o=e.get(H.e);yield o.showWhile(i.invokeFunction(R,t,s,1,H.E.None,r.T.None),250)}))}}(0,a._K)(U.ID,U),(0,a._K)($.ID,$),(0,a.Qr)(K),(0,a.Qr)(q),D.P.registerCommand("editor.action.format",(e=>z(void 0,void 0,void 0,(function*(){const t=e.get(l.$).getFocusedCodeEditor();if(!t||!t.hasModel())return;const i=e.get(D.H);t.getSelection().isEmpty()?yield i.executeCommand("editor.action.formatDocument"):yield i.executeCommand("editor.action.formatSelection")}))))},42698:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MarkerController:()=>J,NextMarkerAction:()=>X});var n,r=i(63580),s=i(5976),o=i(38819),a=i(50187),l=i(24314),c=i(16830),d=i(29102),h=i(65321),u=i(98674),g=i(73910),f=i(97781),p=i(41264),m=i(9802),_=i(68843),b=i(9488),v=i(4669),y=i(22043),w=i(95935),C=i(14603),S=i(73046);!function(e){e.className=function(e){switch(e){case C.Z.Ignore:return"severity-ignore "+S.lA.info.classNames;case C.Z.Info:return S.lA.info.classNames;case C.Z.Warning:return S.lA.warning.classNames;case C.Z.Error:return S.lA.error.classNames;default:return""}}}(n||(n={})),(0,f.Ic)(((e,t)=>{const i=e.getColor(g.Jp);if(i){const e=S.lA.error.cssSelector;t.addRule(`\n\t\t\t.monaco-editor .zone-widget ${e},\n\t\t\t.markers-panel .marker-icon${e},\n\t\t\t.extensions-viewlet > .extensions ${e} {\n\t\t\t\tcolor: ${i};\n\t\t\t}\n\t\t`)}const n=e.getColor(g.BO);if(n){const e=S.lA.warning.cssSelector;t.addRule(`\n\t\t\t.monaco-editor .zone-widget ${e},\n\t\t\t.markers-panel .marker-icon${e},\n\t\t\t.extensions-viewlet > .extensions ${e},\n\t\t\t.extension-editor ${e} {\n\t\t\t\tcolor: ${n};\n\t\t\t}\n\t\t`)}const r=e.getColor(g.OL);if(r){const e=S.lA.info.cssSelector;t.addRule(`\n\t\t\t.monaco-editor .zone-widget ${e},\n\t\t\t.markers-panel .marker-icon${e},\n\t\t\t.extensions-viewlet > .extensions ${e},\n\t\t\t.extension-editor ${e} {\n\t\t\t\tcolor: ${r};\n\t\t\t}\n\t\t`)}}));var k=i(50988),x=i(84144),L=i(58335),M=i(72065),D=function(e,t){return function(i,n){t(i,n,e)}};class N{constructor(e,t,i,n){this._openerService=n,this._lines=0,this._longestLineLength=0,this._relatedDiagnostics=new WeakMap,this._disposables=new s.SL,this._editor=t;const r=document.createElement("div");r.className="descriptioncontainer",this._messageBlock=document.createElement("div"),h.cn(this._messageBlock,"message"),this._messageBlock.setAttribute("aria-live","assertive"),this._messageBlock.setAttribute("role","alert"),r.appendChild(this._messageBlock),this._relatedBlock=document.createElement("div"),r.appendChild(this._relatedBlock),this._disposables.add(h.mu(this._relatedBlock,"click",(e=>{e.preventDefault();const t=this._relatedDiagnostics.get(e.target);t&&i(t)}))),this._scrollable=new m.NB(r,{horizontal:1,vertical:1,useShadows:!1,horizontalScrollbarSize:3,verticalScrollbarSize:3}),e.appendChild(this._scrollable.getDomNode()),this._disposables.add(this._scrollable.onScroll((e=>{r.style.left=`-${e.scrollLeft}px`,r.style.top=`-${e.scrollTop}px`}))),this._disposables.add(this._scrollable)}dispose(){(0,s.B9)(this._disposables)}update(e){const{source:t,message:i,relatedInformation:n,code:r}=e;let s=((null==t?void 0:t.length)||0)+"()".length;r&&(s+="string"==typeof r?r.length:r.value.length);const o=i.split(/\r\n|\r|\n/g);this._lines=o.length,this._longestLineLength=0;for(const e of o)this._longestLineLength=Math.max(e.length+s,this._longestLineLength);h.PO(this._messageBlock),this._messageBlock.setAttribute("aria-label",this.getAriaLabel(e)),this._editor.applyFontInfo(this._messageBlock);let a=this._messageBlock;for(const e of o)a=document.createElement("div"),a.innerText=e,""===e&&(a.style.height=this._messageBlock.style.lineHeight),this._messageBlock.appendChild(a);if(t||r){const e=document.createElement("span");if(h.cn(e,"details"),a.appendChild(e),t){const i=document.createElement("span");i.innerText=t,h.cn(i,"source"),e.appendChild(i)}if(r)if("string"==typeof r){const t=document.createElement("span");t.innerText=`(${r})`,h.cn(t,"code"),e.appendChild(t)}else this._codeLink=h.$("a.code-link"),this._codeLink.setAttribute("href",`${r.target.toString()}`),this._codeLink.onclick=e=>{this._openerService.open(r.target),e.preventDefault(),e.stopPropagation()},h.R3(this._codeLink,h.$("span")).innerText=r.value,e.appendChild(this._codeLink)}if(h.PO(this._relatedBlock),this._editor.applyFontInfo(this._relatedBlock),(0,b.Of)(n)){const e=this._relatedBlock.appendChild(document.createElement("div"));e.style.paddingTop=`${Math.floor(.66*this._editor.getOption(51))}px`,this._lines+=1;for(const t of n){let i=document.createElement("div"),n=document.createElement("a");h.cn(n,"filename"),n.innerText=`${(0,_.pP)(t.resource)}(${t.startLineNumber}, ${t.startColumn}): `,n.title=(0,_.kz)(t.resource,void 0),this._relatedDiagnostics.set(n,t);let r=document.createElement("span");r.innerText=t.message,i.appendChild(n),i.appendChild(r),this._lines+=1,e.appendChild(i)}}const l=this._editor.getOption(36),c=Math.ceil(l.typicalFullwidthCharacterWidth*this._longestLineLength*.75),d=l.lineHeight*this._lines;this._scrollable.setScrollDimensions({scrollWidth:c,scrollHeight:d})}layout(e,t){this._scrollable.getDomNode().style.height=`${e}px`,this._scrollable.getDomNode().style.width=`${t}px`,this._scrollable.setScrollDimensions({width:t,height:e})}getHeightInLines(){return Math.min(17,this._lines)}getAriaLabel(e){let t="";switch(e.severity){case u.ZL.Error:t=r.N("Error","Error");break;case u.ZL.Warning:t=r.N("Warning","Warning");break;case u.ZL.Info:t=r.N("Info","Info");break;case u.ZL.Hint:t=r.N("Hint","Hint")}let i=r.N("marker aria","{0} at {1}. ",t,e.startLineNumber+":"+e.startColumn);const n=this._editor.getModel();return n&&e.startLineNumber<=n.getLineCount()&&e.startLineNumber>=1&&(i=`${n.getLineContent(e.startLineNumber)}, ${i}`),i}}let E=class e extends y.vk{constructor(e,t,i,n,r,o){super(e,{showArrow:!0,showFrame:!0,isAccessible:!0},r),this._themeService=t,this._openerService=i,this._menuService=n,this._contextKeyService=o,this._callOnDispose=new s.SL,this._onDidSelectRelatedInformation=new v.Q5,this.onDidSelectRelatedInformation=this._onDidSelectRelatedInformation.event,this._severity=u.ZL.Warning,this._backgroundColor=p.Il.white,this._applyTheme(t.getColorTheme()),this._callOnDispose.add(t.onDidColorThemeChange(this._applyTheme.bind(this))),this.create()}_applyTheme(e){this._backgroundColor=e.getColor(F);let t=A;this._severity===u.ZL.Warning?t=R:this._severity===u.ZL.Info&&(t=P);const i=e.getColor(t);this.style({arrowColor:i,frameColor:i,headerBackgroundColor:this._backgroundColor,primaryHeadingColor:e.getColor(y.IH),secondaryHeadingColor:e.getColor(y.R7)})}_applyStyles(){this._parentContainer&&(this._parentContainer.style.backgroundColor=this._backgroundColor?this._backgroundColor.toString():""),super._applyStyles()}dispose(){this._callOnDispose.dispose(),super.dispose()}_fillHead(t){super._fillHead(t),this._disposables.add(this._actionbarWidget.actionRunner.onDidBeforeRun((e=>this.editor.focus())));const i=[],n=this._menuService.createMenu(e.TitleMenu,this._contextKeyService);(0,L.vr)(n,void 0,i),this._actionbarWidget.push(i,{label:!1,icon:!0,index:0}),n.dispose()}_fillTitleIcon(e){this._icon=h.R3(e,h.$(""))}_getActionBarOptions(){return Object.assign(Object.assign({},super._getActionBarOptions()),{orientation:0})}_fillBody(e){this._parentContainer=e,h.cn(e,"marker-widget"),this._parentContainer.tabIndex=0,this._parentContainer.setAttribute("role","tooltip"),this._container=document.createElement("div"),e.appendChild(this._container),this._message=new N(this._container,this.editor,(e=>this._onDidSelectRelatedInformation.fire(e)),this._openerService),this._disposables.add(this._message)}show(){throw new Error("call showAtMarker")}showAtMarker(e,t,i){this._container.classList.remove("stale"),this._message.update(e),this._severity=e.severity,this._applyTheme(this._themeService.getColorTheme());let s=l.e.lift(e);const o=this.editor.getPosition();let a=o&&s.containsPosition(o)?o:s.getStartPosition();super.show(a,this.computeRequiredHeight());const c=this.editor.getModel();if(c){const e=i>1?r.N("problems","{0} of {1} problems",t,i):r.N("change","{0} of {1} problem",t,i);this.setTitle((0,w.EZ)(c.uri),e)}this._icon.className=`codicon ${n.className(u.ZL.toSeverity(this._severity))}`,this.editor.revealPositionNearTop(a,0),this.editor.focus()}updateMarker(e){this._container.classList.remove("stale"),this._message.update(e)}showStale(){this._container.classList.add("stale"),this._relayout()}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._heightInPixel=e,this._message.layout(e,t),this._container.style.height=`${e}px`}_onWidth(e){this._message.layout(this._heightInPixel,e)}_relayout(){super._relayout(this.computeRequiredHeight())}computeRequiredHeight(){return 3+this._message.getHeightInLines()}};E.TitleMenu=new x.eH("gotoErrorTitleMenu"),E=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([D(1,f.XE),D(2,k.v4),D(3,x.co),D(4,M.TG),D(5,o.i6)],E);let T=(0,g.kw)(g.lX,g.b6),I=(0,g.kw)(g.uo,g.pW),O=(0,g.kw)(g.c6,g.T8);const A=(0,g.P6)("editorMarkerNavigationError.background",{dark:T,light:T,hc:T},r.N("editorMarkerNavigationError","Editor marker navigation widget error color.")),R=(0,g.P6)("editorMarkerNavigationWarning.background",{dark:I,light:I,hc:I},r.N("editorMarkerNavigationWarning","Editor marker navigation widget warning color.")),P=(0,g.P6)("editorMarkerNavigationInfo.background",{dark:O,light:O,hc:O},r.N("editorMarkerNavigationInfo","Editor marker navigation widget info color.")),F=(0,g.P6)("editorMarkerNavigation.background",{dark:"#2D2D30",light:p.Il.white,hc:"#0C141F"},r.N("editorMarkerNavigationBackground","Editor marker navigation widget background."));(0,f.Ic)(((e,t)=>{const i=e.getColor(g.ur);i&&(t.addRule(`.monaco-editor .marker-widget a { color: ${i}; }`),t.addRule(`.monaco-editor .marker-widget a.code-link span:hover { color: ${i}; }`))}));var B=i(11640),W=i(70666),Y=i(97295),H=i(65026),j=i(91741),V=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},z=function(e,t){return function(i,n){t(i,n,e)}};class U{constructor(e,t,i){this.marker=e,this.index=t,this.total=i}}let $=class e{constructor(t,i){this._markerService=i,this._onDidChange=new v.Q5,this.onDidChange=this._onDidChange.event,this._dispoables=new s.SL,this._markers=[],this._nextIdx=-1,W.o.isUri(t)?this._resourceFilter=e=>e.toString()===t.toString():t&&(this._resourceFilter=t);const n=()=>{this._markers=this._markerService.read({resource:W.o.isUri(t)?t:void 0,severities:u.ZL.Error|u.ZL.Warning|u.ZL.Info}),"function"==typeof t&&(this._markers=this._markers.filter((e=>this._resourceFilter(e.resource)))),this._markers.sort(e._compareMarker)};n(),this._dispoables.add(i.onMarkerChanged((e=>{this._resourceFilter&&!e.some((e=>this._resourceFilter(e)))||(n(),this._nextIdx=-1,this._onDidChange.fire())})))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}matches(e){return!this._resourceFilter&&!e||!(!this._resourceFilter||!e)&&this._resourceFilter(e)}get selected(){const e=this._markers[this._nextIdx];return e&&new U(e,this._nextIdx+1,this._markers.length)}_initIdx(e,t,i){let n=!1,r=this._markers.findIndex((t=>t.resource.toString()===e.uri.toString()));r<0&&(r=(0,b.ry)(this._markers,{resource:e.uri},((e,t)=>(0,Y.qu)(e.resource.toString(),t.resource.toString()))),r<0&&(r=~r));for(let i=r;i<this._markers.length;i++){let r=l.e.lift(this._markers[i]);if(r.isEmpty()){const t=e.getWordAtPosition(r.getStartPosition());t&&(r=new l.e(r.startLineNumber,t.startColumn,r.startLineNumber,t.endColumn))}if(t&&(r.containsPosition(t)||t.isBeforeOrEqual(r.getStartPosition()))){this._nextIdx=i,n=!0;break}if(this._markers[i].resource.toString()!==e.uri.toString())break}n||(this._nextIdx=i?0:this._markers.length-1),this._nextIdx<0&&(this._nextIdx=this._markers.length-1)}resetIndex(){this._nextIdx=-1}move(e,t,i){if(0===this._markers.length)return!1;let n=this._nextIdx;return-1===this._nextIdx?this._initIdx(t,i,e):e?this._nextIdx=(this._nextIdx+1)%this._markers.length:e||(this._nextIdx=(this._nextIdx-1+this._markers.length)%this._markers.length),n!==this._nextIdx}find(e,t){let i=this._markers.findIndex((t=>t.resource.toString()===e.toString()));if(!(i<0))for(;i<this._markers.length;i++)if(l.e.containsPosition(this._markers[i],t))return new U(this._markers[i],i+1,this._markers.length)}static _compareMarker(e,t){let i=(0,Y.qu)(e.resource.toString(),t.resource.toString());return 0===i&&(i=u.ZL.compare(e.severity,t.severity)),0===i&&(i=l.e.compareRangesUsingStarts(e,t)),i}};$=V([z(1,u.lT)],$);const K=(0,M.yh)("IMarkerNavigationService");let q=class{constructor(e){this._markerService=e,this._provider=new j.S}getMarkerList(e){for(let t of this._provider){const i=t.getMarkerList(e);if(i)return i}return new $(e,this._markerService)}};q=V([z(0,u.lT)],q),(0,H.z)(K,q,!0);var G=function(e,t){return function(i,n){t(i,n,e)}},Z=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};let J=class e{constructor(e,t,i,n,r){this._markerNavigationService=t,this._contextKeyService=i,this._editorService=n,this._instantiationService=r,this._sessionDispoables=new s.SL,this._editor=e,this._widgetVisible=te.bindTo(this._contextKeyService)}static get(t){return t.getContribution(e.ID)}dispose(){this._cleanUp(),this._sessionDispoables.dispose()}_cleanUp(){this._widgetVisible.reset(),this._sessionDispoables.clear(),this._widget=void 0,this._model=void 0}_getOrCreateModel(e){if(this._model&&this._model.matches(e))return this._model;let t=!1;return this._model&&(t=!0,this._cleanUp()),this._model=this._markerNavigationService.getMarkerList(e),t&&this._model.move(!0,this._editor.getModel(),this._editor.getPosition()),this._widget=this._instantiationService.createInstance(E,this._editor),this._widget.onDidClose((()=>this.close()),this,this._sessionDispoables),this._widgetVisible.set(!0),this._sessionDispoables.add(this._model),this._sessionDispoables.add(this._widget),this._sessionDispoables.add(this._editor.onDidChangeCursorPosition((e=>{var t,i,n;(null===(t=this._model)||void 0===t?void 0:t.selected)&&l.e.containsPosition(null===(i=this._model)||void 0===i?void 0:i.selected.marker,e.position)||null===(n=this._model)||void 0===n||n.resetIndex()}))),this._sessionDispoables.add(this._model.onDidChange((()=>{if(!this._widget||!this._widget.position||!this._model)return;const e=this._model.find(this._editor.getModel().uri,this._widget.position);e?this._widget.updateMarker(e.marker):this._widget.showStale()}))),this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation((e=>{this._editorService.openCodeEditor({resource:e.resource,options:{pinned:!0,revealIfOpened:!0,selection:l.e.lift(e).collapseToStart()}},this._editor),this.close(!1)}))),this._sessionDispoables.add(this._editor.onDidChangeModel((()=>this._cleanUp()))),this._model}close(e=!0){this._cleanUp(),e&&this._editor.focus()}showAtMarker(e){if(this._editor.hasModel()){const t=this._getOrCreateModel(this._editor.getModel().uri);t.resetIndex(),t.move(!0,this._editor.getModel(),new a.L(e.startLineNumber,e.startColumn)),t.selected&&this._widget.showAtMarker(t.selected.marker,t.selected.index,t.selected.total)}}nagivate(t,i){return Z(this,void 0,void 0,(function*(){if(this._editor.hasModel()){const n=this._getOrCreateModel(i?void 0:this._editor.getModel().uri);if(n.move(t,this._editor.getModel(),this._editor.getPosition()),!n.selected)return;if(n.selected.marker.resource.toString()!==this._editor.getModel().uri.toString()){this._cleanUp();const r=yield this._editorService.openCodeEditor({resource:n.selected.marker.resource,options:{pinned:!1,revealIfOpened:!0,selectionRevealType:2,selection:n.selected.marker}},this._editor);r&&(e.get(r).close(),e.get(r).nagivate(t,i))}else this._widget.showAtMarker(n.selected.marker,n.selected.index,n.selected.total)}}))}};J.ID="editor.contrib.markerController",J=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([G(1,K),G(2,o.i6),G(3,B.$),G(4,M.TG)],J);class Q extends c.R6{constructor(e,t,i){super(i),this._next=e,this._multiFile=t}run(e,t){return Z(this,void 0,void 0,(function*(){t.hasModel()&&J.get(t).nagivate(this._next,this._multiFile)}))}}class X extends Q{constructor(){super(!0,!1,{id:X.ID,label:X.LABEL,alias:"Go to Next Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:d.u.focus,primary:578,weight:100},menuOpts:{menuId:E.TitleMenu,title:X.LABEL,icon:(0,S.q5)("marker-navigation-next",S.lA.chevronDown),group:"navigation",order:1}})}}X.ID="editor.action.marker.next",X.LABEL=r.N("markerAction.next.label","Go to Next Problem (Error, Warning, Info)");class ee extends Q{constructor(){super(!1,!1,{id:ee.ID,label:ee.LABEL,alias:"Go to Previous Problem (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:d.u.focus,primary:1602,weight:100},menuOpts:{menuId:E.TitleMenu,title:X.LABEL,icon:(0,S.q5)("marker-navigation-previous",S.lA.chevronUp),group:"navigation",order:2}})}}ee.ID="editor.action.marker.prev",ee.LABEL=r.N("markerAction.previous.label","Go to Previous Problem (Error, Warning, Info)"),(0,c._K)(J.ID,J),(0,c.Qr)(X),(0,c.Qr)(ee),(0,c.Qr)(class extends Q{constructor(){super(!0,!0,{id:"editor.action.marker.nextInFiles",label:r.N("markerAction.nextInFiles.label","Go to Next Problem in Files (Error, Warning, Info)"),alias:"Go to Next Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:d.u.focus,primary:66,weight:100},menuOpts:{menuId:x.eH.MenubarGoMenu,title:r.N({key:"miGotoNextProblem",comment:["&& denotes a mnemonic"]},"Next &&Problem"),group:"6_problem_nav",order:1}})}}),(0,c.Qr)(class extends Q{constructor(){super(!1,!0,{id:"editor.action.marker.prevInFiles",label:r.N("markerAction.previousInFiles.label","Go to Previous Problem in Files (Error, Warning, Info)"),alias:"Go to Previous Problem in Files (Error, Warning, Info)",precondition:void 0,kbOpts:{kbExpr:d.u.focus,primary:1090,weight:100},menuOpts:{menuId:x.eH.MenubarGoMenu,title:r.N({key:"miGotoPreviousProblem",comment:["&& denotes a mnemonic"]},"Previous &&Problem"),group:"6_problem_nav",order:2}})}});const te=new o.uy("markersNavigationVisible",!1),ie=c._l.bindToContribution(J.get);(0,c.fK)(new ie({id:"closeMarkersNavigation",precondition:te,handler:e=>e.close(),kbOpts:{weight:150,kbExpr:d.u.focus,primary:9,secondary:[1033]}}))},92729:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DefinitionAction:()=>X});var n=i(85152),r=i(15393),s=i(22258),o=i(1432),a=i(65520),l=i(16830),c=i(11640),d=i(50187),h=i(24314),u=i(29102),g=i(43775),f=i(82276),p=i(22043),m=i(19192),_=i(71455),b=i(63580),v=i(84144),y=i(38819),w=i(59422),C=i(90535),S=i(91691),k=i(94565),x=i(39925),L=i(72065),M=i(65026),D=i(49989),N=i(5976),E=i(4669),T=i(91847),I=i(95935),O=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},A=function(e,t){return function(i,n){t(i,n,e)}};const R=new y.uy("hasSymbols",!1),P=(0,L.yh)("ISymbolNavigationService");let F=class{constructor(e,t,i,n){this._editorService=t,this._notificationService=i,this._keybindingService=n,this._currentModel=void 0,this._currentIdx=-1,this._ignoreEditorChange=!1,this._ctxHasSymbols=R.bindTo(e)}reset(){this._ctxHasSymbols.reset(),(0,N.B9)(this._currentState),(0,N.B9)(this._currentMessage),this._currentModel=void 0,this._currentIdx=-1}put(e){const t=e.parent.parent;if(t.references.length<=1)return void this.reset();this._currentModel=t,this._currentIdx=t.references.indexOf(e),this._ctxHasSymbols.set(!0),this._showMessage();const i=new B(this._editorService),n=i.onDidChange((e=>{if(this._ignoreEditorChange)return;const i=this._editorService.getActiveCodeEditor();if(!i)return;const n=i.getModel(),r=i.getPosition();if(!n||!r)return;let s=!1,o=!1;for(const e of t.references)if((0,I.Xy)(e.uri,n.uri))s=!0,o=o||h.e.containsPosition(e.range,r);else if(s)break;s&&o||this.reset()}));this._currentState=(0,N.F8)(i,n)}revealNext(e){if(!this._currentModel)return Promise.resolve();this._currentIdx+=1,this._currentIdx%=this._currentModel.references.length;const t=this._currentModel.references[this._currentIdx];return this._showMessage(),this._ignoreEditorChange=!0,this._editorService.openCodeEditor({resource:t.uri,options:{selection:h.e.collapseToStart(t.range),selectionRevealType:3}},e).finally((()=>{this._ignoreEditorChange=!1}))}_showMessage(){(0,N.B9)(this._currentMessage);const e=this._keybindingService.lookupKeybinding("editor.gotoNextSymbolFromResult"),t=e?(0,b.N)("location.kb","Symbol {0} of {1}, {2} for next",this._currentIdx+1,this._currentModel.references.length,e.getLabel()):(0,b.N)("location","Symbol {0} of {1}",this._currentIdx+1,this._currentModel.references.length);this._currentMessage=this._notificationService.status(t)}};F=O([A(0,y.i6),A(1,c.$),A(2,w.lT),A(3,T.d)],F),(0,M.z)(P,F,!0),(0,l.fK)(new class extends l._l{constructor(){super({id:"editor.gotoNextSymbolFromResult",precondition:R,kbOpts:{weight:100,primary:70}})}runEditorCommand(e,t){return e.get(P).revealNext(t)}}),D.W.registerCommandAndKeybindingRule({id:"editor.gotoNextSymbolFromResult.cancel",weight:100,when:R,primary:9,handler(e){e.get(P).reset()}});let B=class{constructor(e){this._listener=new Map,this._disposables=new N.SL,this._onDidChange=new E.Q5,this.onDidChange=this._onDidChange.event,this._disposables.add(e.onCodeEditorRemove(this._onDidRemoveEditor,this)),this._disposables.add(e.onCodeEditorAdd(this._onDidAddEditor,this)),e.listCodeEditors().forEach(this._onDidAddEditor,this)}dispose(){this._disposables.dispose(),this._onDidChange.dispose(),(0,N.B9)(this._listener.values())}_onDidAddEditor(e){this._listener.set(e,(0,N.F8)(e.onDidChangeCursorPosition((t=>this._onDidChange.fire({editor:e}))),e.onDidChangeModelContent((t=>this._onDidChange.fire({editor:e})))))}_onDidRemoveEditor(e){(0,N.B9)(this._listener.get(e)),this._listener.delete(e)}};B=O([A(0,c.$)],B);var W,Y,H,j,V,z,U,$,K=i(16268),q=i(70666),G=i(98401),Z=i(84527),J=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};v.BH.appendMenuItem(v.eH.EditorContext,{submenu:v.eH.EditorContextPeek,title:b.N("peek.submenu","Peek"),group:"navigation",order:100});class Q extends l.R6{constructor(e,t){super(t),this._configuration=e}run(e,t){if(!t.hasModel())return Promise.resolve(void 0);const i=e.get(w.lT),s=e.get(c.$),o=e.get(C.e),a=e.get(P),l=t.getModel(),d=t.getPosition(),h=new x.Dl(t,5),u=(0,r.eP)(this._getLocationModel(l,d,h.token),h.token).then((e=>J(this,void 0,void 0,(function*(){if(!e||h.token.isCancellationRequested)return;let i;if((0,n.Z9)(e.ariaMessage),e.referenceAt(l.uri,d)){const e=this._getAlternativeCommand(t);e!==this.id&&(i=t.getAction(e))}const r=e.references.length;if(0===r){if(!this._configuration.muteMessage){const e=l.getWordAtPosition(d);f.O.get(t).showMessage(this._getNoResultFoundMessage(e),d)}}else{if(1!==r||!i)return this._onResult(s,a,t,e);i.run()}}))),(e=>{i.error(e)})).finally((()=>{h.dispose()}));return o.showWhile(u,250),u}_onResult(e,t,i,n){return J(this,void 0,void 0,(function*(){const r=this._getGoToPreference(i);if(i instanceof Z.H||!(this._configuration.openInPeek||"peek"===r&&n.references.length>1)){const s=n.firstReference(),o=n.references.length>1&&"gotoAndPeek"===r,a=yield this._openReference(i,e,s,this._configuration.openToSide,!o);o&&a?this._openInPeek(a,n):n.dispose(),"goto"===r&&t.put(s)}else this._openInPeek(i,n)}))}_openReference(e,t,i,n,r){return J(this,void 0,void 0,(function*(){let s;(0,g.vx)(i)&&(s=i.targetSelectionRange),s||(s=i.range);const o=yield t.openCodeEditor({resource:i.uri,options:{selection:h.e.collapseToStart(s),selectionRevealType:3}},e,n);if(o){if(r){const e=o.getModel(),t=o.deltaDecorations([],[{range:s,options:{className:"symbolHighlight"}}]);setTimeout((()=>{o.getModel()===e&&o.deltaDecorations(t,[])}),350)}return o}}))}_openInPeek(e,t){let i=m.J.get(e);i&&e.hasModel()?i.toggleWidget(e.getSelection(),(0,r.PG)((e=>Promise.resolve(t))),this._configuration.openInPeek):t.dispose()}}class X extends Q{_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(yield(0,S.nD)(e,t,i),b.N("def.title","Definitions"))}))}_getNoResultFoundMessage(e){return e&&e.word?b.N("noResultWord","No definition found for '{0}'",e.word):b.N("generic.noResults","No definition found")}_getAlternativeCommand(e){return e.getOption(43).alternativeDefinitionCommand}_getGoToPreference(e){return e.getOption(43).multipleDefinitions}}const ee=o.$L&&!K.$W?2118:70;(0,l.Qr)(((W=class e extends X{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:e.id,label:b.N("actions.goToDecl.label","Go to Definition"),alias:"Go to Definition",precondition:y.Ao.and(u.u.hasDefinitionProvider,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:ee,weight:100},contextMenuOpts:{group:"navigation",order:1.1},menuOpts:{menuId:v.eH.MenubarGoMenu,group:"4_symbol_nav",order:2,title:b.N({key:"miGotoDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Definition")}}),k.P.registerCommandAlias("editor.action.goToDeclaration",e.id)}}).id="editor.action.revealDefinition",W)),(0,l.Qr)(((Y=class e extends X{constructor(){super({openToSide:!0,openInPeek:!1,muteMessage:!1},{id:e.id,label:b.N("actions.goToDeclToSide.label","Open Definition to the Side"),alias:"Open Definition to the Side",precondition:y.Ao.and(u.u.hasDefinitionProvider,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:(0,s.gx)(2089,ee),weight:100}}),k.P.registerCommandAlias("editor.action.openDeclarationToTheSide",e.id)}}).id="editor.action.revealDefinitionAside",Y)),(0,l.Qr)(((H=class e extends X{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:e.id,label:b.N("actions.previewDecl.label","Peek Definition"),alias:"Peek Definition",precondition:y.Ao.and(u.u.hasDefinitionProvider,p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:582,linux:{primary:3140},weight:100},contextMenuOpts:{menuId:v.eH.EditorContextPeek,group:"peek",order:2}}),k.P.registerCommandAlias("editor.action.previewDeclaration",e.id)}}).id="editor.action.peekDefinition",H));class te extends Q{_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(yield(0,S.zq)(e,t,i),b.N("decl.title","Declarations"))}))}_getNoResultFoundMessage(e){return e&&e.word?b.N("decl.noResultWord","No declaration found for '{0}'",e.word):b.N("decl.generic.noResults","No declaration found")}_getAlternativeCommand(e){return e.getOption(43).alternativeDeclarationCommand}_getGoToPreference(e){return e.getOption(43).multipleDeclarations}}(0,l.Qr)(((j=class e extends te{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:e.id,label:b.N("actions.goToDeclaration.label","Go to Declaration"),alias:"Go to Declaration",precondition:y.Ao.and(u.u.hasDeclarationProvider,u.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{group:"navigation",order:1.3},menuOpts:{menuId:v.eH.MenubarGoMenu,group:"4_symbol_nav",order:3,title:b.N({key:"miGotoDeclaration",comment:["&& denotes a mnemonic"]},"Go to &&Declaration")}})}_getNoResultFoundMessage(e){return e&&e.word?b.N("decl.noResultWord","No declaration found for '{0}'",e.word):b.N("decl.generic.noResults","No declaration found")}}).id="editor.action.revealDeclaration",j)),(0,l.Qr)(class extends te{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.peekDeclaration",label:b.N("actions.peekDecl.label","Peek Declaration"),alias:"Peek Declaration",precondition:y.Ao.and(u.u.hasDeclarationProvider,p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{menuId:v.eH.EditorContextPeek,group:"peek",order:3}})}});class ie extends Q{_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(yield(0,S.L3)(e,t,i),b.N("typedef.title","Type Definitions"))}))}_getNoResultFoundMessage(e){return e&&e.word?b.N("goToTypeDefinition.noResultWord","No type definition found for '{0}'",e.word):b.N("goToTypeDefinition.generic.noResults","No type definition found")}_getAlternativeCommand(e){return e.getOption(43).alternativeTypeDefinitionCommand}_getGoToPreference(e){return e.getOption(43).multipleTypeDefinitions}}(0,l.Qr)(((V=class e extends ie{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:e.ID,label:b.N("actions.goToTypeDefinition.label","Go to Type Definition"),alias:"Go to Type Definition",precondition:y.Ao.and(u.u.hasTypeDefinitionProvider,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:0,weight:100},contextMenuOpts:{group:"navigation",order:1.4},menuOpts:{menuId:v.eH.MenubarGoMenu,group:"4_symbol_nav",order:3,title:b.N({key:"miGotoTypeDefinition",comment:["&& denotes a mnemonic"]},"Go to &&Type Definition")}})}}).ID="editor.action.goToTypeDefinition",V)),(0,l.Qr)(((z=class e extends ie{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:e.ID,label:b.N("actions.peekTypeDefinition.label","Peek Type Definition"),alias:"Peek Type Definition",precondition:y.Ao.and(u.u.hasTypeDefinitionProvider,p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{menuId:v.eH.EditorContextPeek,group:"peek",order:4}})}}).ID="editor.action.peekTypeDefinition",z));class ne extends Q{_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(yield(0,S.f4)(e,t,i),b.N("impl.title","Implementations"))}))}_getNoResultFoundMessage(e){return e&&e.word?b.N("goToImplementation.noResultWord","No implementation found for '{0}'",e.word):b.N("goToImplementation.generic.noResults","No implementation found")}_getAlternativeCommand(e){return e.getOption(43).alternativeImplementationCommand}_getGoToPreference(e){return e.getOption(43).multipleImplementations}}(0,l.Qr)(((U=class e extends ne{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:e.ID,label:b.N("actions.goToImplementation.label","Go to Implementations"),alias:"Go to Implementations",precondition:y.Ao.and(u.u.hasImplementationProvider,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:2118,weight:100},menuOpts:{menuId:v.eH.MenubarGoMenu,group:"4_symbol_nav",order:4,title:b.N({key:"miGotoImplementation",comment:["&& denotes a mnemonic"]},"Go to &&Implementations")},contextMenuOpts:{group:"navigation",order:1.45}})}}).ID="editor.action.goToImplementation",U)),(0,l.Qr)((($=class e extends ne{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:e.ID,label:b.N("actions.peekImplementation.label","Peek Implementations"),alias:"Peek Implementations",precondition:y.Ao.and(u.u.hasImplementationProvider,p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:3142,weight:100},contextMenuOpts:{menuId:v.eH.EditorContextPeek,group:"peek",order:5}})}}).ID="editor.action.peekImplementation",$));class re extends Q{_getNoResultFoundMessage(e){return e?b.N("references.no","No references found for '{0}'",e.word):b.N("references.noGeneric","No references found")}_getAlternativeCommand(e){return e.getOption(43).alternativeReferenceCommand}_getGoToPreference(e){return e.getOption(43).multipleReferences}}(0,l.Qr)(class extends re{constructor(){super({openToSide:!1,openInPeek:!1,muteMessage:!1},{id:"editor.action.goToReferences",label:b.N("goToReferences.label","Go to References"),alias:"Go to References",precondition:y.Ao.and(u.u.hasReferenceProvider,p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated()),kbOpts:{kbExpr:u.u.editorTextFocus,primary:1094,weight:100},contextMenuOpts:{group:"navigation",order:1.45},menuOpts:{menuId:v.eH.MenubarGoMenu,group:"4_symbol_nav",order:5,title:b.N({key:"miGotoReference",comment:["&& denotes a mnemonic"]},"Go to &&References")}})}_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(yield(0,S.aA)(e,t,!0,i),b.N("ref.title","References"))}))}}),(0,l.Qr)(class extends re{constructor(){super({openToSide:!1,openInPeek:!0,muteMessage:!1},{id:"editor.action.referenceSearch.trigger",label:b.N("references.action.label","Peek References"),alias:"Peek References",precondition:y.Ao.and(u.u.hasReferenceProvider,p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated()),contextMenuOpts:{menuId:v.eH.EditorContextPeek,group:"peek",order:6}})}_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(yield(0,S.aA)(e,t,!1,i),b.N("ref.title","References"))}))}});class se extends Q{constructor(e,t,i){super(e,{id:"editor.action.goToLocation",label:b.N("label.generic","Go To Any Symbol"),alias:"Go To Any Symbol",precondition:y.Ao.and(p.Jy.notInPeekEditor,u.u.isInWalkThroughSnippet.toNegated())}),this._references=t,this._gotoMultipleBehaviour=i}_getLocationModel(e,t,i){return J(this,void 0,void 0,(function*(){return new _.oQ(this._references,b.N("generic.title","Locations"))}))}_getNoResultFoundMessage(e){return e&&b.N("generic.noResult","No results for '{0}'",e.word)||""}_getGoToPreference(e){var t;return null!==(t=this._gotoMultipleBehaviour)&&void 0!==t?t:e.getOption(43).multipleReferences}_getAlternativeCommand(){return""}}k.P.registerCommand({id:"editor.action.goToLocations",description:{description:"Go to locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:q.o},{name:"position",description:"The position at which to start",constraint:d.L.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"},{name:"noResultsMessage",description:"Human readable message that shows when locations is empty."}]},handler:(e,t,i,n,r,s,o)=>J(void 0,void 0,void 0,(function*(){(0,G.p_)(q.o.isUri(t)),(0,G.p_)(d.L.isIPosition(i)),(0,G.p_)(Array.isArray(n)),(0,G.p_)(void 0===r||"string"==typeof r),(0,G.p_)(void 0===o||"boolean"==typeof o);const l=e.get(c.$),h=yield l.openCodeEditor({resource:t},l.getFocusedCodeEditor());if((0,a.CL)(h))return h.setPosition(i),h.revealPositionInCenterIfOutsideViewport(i,0),h.invokeWithinContext((e=>{const t=new class extends se{_getNoResultFoundMessage(e){return s||super._getNoResultFoundMessage(e)}}({muteMessage:!Boolean(s),openInPeek:Boolean(o),openToSide:!1},n,r);e.get(L.TG).invokeFunction(t.run.bind(t),h)}))}))}),k.P.registerCommand({id:"editor.action.peekLocations",description:{description:"Peek locations from a position in a file",args:[{name:"uri",description:"The text document in which to start",constraint:q.o},{name:"position",description:"The position at which to start",constraint:d.L.isIPosition},{name:"locations",description:"An array of locations.",constraint:Array},{name:"multiple",description:"Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto"}]},handler:(e,t,i,n,r)=>J(void 0,void 0,void 0,(function*(){e.get(k.H).executeCommand("editor.action.goToLocations",t,i,n,r,void 0,!0)}))}),k.P.registerCommand({id:"editor.action.findReferences",handler:(e,t,i)=>{(0,G.p_)(q.o.isUri(t)),(0,G.p_)(d.L.isIPosition(i));const n=e.get(c.$);return n.openCodeEditor({resource:t},n.getFocusedCodeEditor()).then((e=>{if(!(0,a.CL)(e)||!e.hasModel())return;const t=m.J.get(e);if(!t)return;const n=(0,r.PG)((t=>(0,S.aA)(e.getModel(),d.L.lift(i),!1,t).then((e=>new _.oQ(e,b.N("ref.title","References")))))),s=new h.e(i.lineNumber,i.column,i.lineNumber,i.column);return Promise.resolve(t.toggleWidget(s,n,!1))}))}}),k.P.registerCommandAlias("editor.action.showReferences","editor.action.peekLocations")},91691:(e,t,i)=>{"use strict";i.d(t,{nD:()=>l,zq:()=>c,f4:()=>d,L3:()=>h,aA:()=>u});var n=i(71050),r=i(17301),s=i(16830),o=i(43775);function a(e,t,i,n){const s=i.ordered(e).map((i=>Promise.resolve(n(i,e,t)).then(void 0,(e=>{(0,r.Cp)(e)}))));return Promise.all(s).then((e=>{const t=[];for(let i of e)Array.isArray(i)?t.push(...i):i&&t.push(i);return t}))}function l(e,t,i){return a(e,t,o.Ct,((e,t,n)=>e.provideDefinition(t,n,i)))}function c(e,t,i){return a(e,t,o.RN,((e,t,n)=>e.provideDeclaration(t,n,i)))}function d(e,t,i){return a(e,t,o.vI,((e,t,n)=>e.provideImplementation(t,n,i)))}function h(e,t,i){return a(e,t,o.tA,((e,t,n)=>e.provideTypeDefinition(t,n,i)))}function u(e,t,i,n){return a(e,t,o.FL,((e,t,r)=>{return s=this,o=void 0,l=function*(){const s=yield e.provideReferences(t,r,{includeDeclaration:!0},n);if(!i||!s||2!==s.length)return s;const o=yield e.provideReferences(t,r,{includeDeclaration:!1},n);return o&&1===o.length?o:s},new((a=void 0)||(a=Promise))((function(e,t){function i(e){try{r(l.next(e))}catch(e){t(e)}}function n(e){try{r(l.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof a?r:new a((function(e){e(r)}))).then(i,n)}r((l=l.apply(s,o||[])).next())}));var s,o,a,l}))}(0,s.sb)("_executeDefinitionProvider",((e,t)=>l(e,t,n.T.None))),(0,s.sb)("_executeDeclarationProvider",((e,t)=>c(e,t,n.T.None))),(0,s.sb)("_executeImplementationProvider",((e,t)=>d(e,t,n.T.None))),(0,s.sb)("_executeTypeDefinitionProvider",((e,t)=>h(e,t,n.T.None))),(0,s.sb)("_executeReferenceProvider",((e,t)=>u(e,t,!1,n.T.None)))},69241:(e,t,i)=>{"use strict";i.d(t,{yN:()=>h});var n=i(5976),r=i(4669),s=i(1432);function o(e,t){return!!e[t]}class a{constructor(e,t){this.target=e.target,this.hasTriggerModifier=o(e.event,t.triggerModifier),this.hasSideBySideModifier=o(e.event,t.triggerSideBySideModifier),this.isNoneOrSingleMouseDown=e.event.detail<=1}}class l{constructor(e,t){this.keyCodeIsTriggerKey=e.keyCode===t.triggerKey,this.keyCodeIsSideBySideKey=e.keyCode===t.triggerSideBySideKey,this.hasTriggerModifier=o(e,t.triggerModifier)}}class c{constructor(e,t,i,n){this.triggerKey=e,this.triggerModifier=t,this.triggerSideBySideKey=i,this.triggerSideBySideModifier=n}equals(e){return this.triggerKey===e.triggerKey&&this.triggerModifier===e.triggerModifier&&this.triggerSideBySideKey===e.triggerSideBySideKey&&this.triggerSideBySideModifier===e.triggerSideBySideModifier}}function d(e){return"altKey"===e?s.dz?new c(57,"metaKey",6,"altKey"):new c(5,"ctrlKey",6,"altKey"):s.dz?new c(6,"altKey",57,"metaKey"):new c(6,"altKey",5,"ctrlKey")}class h extends n.JT{constructor(e){super(),this._onMouseMoveOrRelevantKeyDown=this._register(new r.Q5),this.onMouseMoveOrRelevantKeyDown=this._onMouseMoveOrRelevantKeyDown.event,this._onExecute=this._register(new r.Q5),this.onExecute=this._onExecute.event,this._onCancel=this._register(new r.Q5),this.onCancel=this._onCancel.event,this._editor=e,this._opts=d(this._editor.getOption(61)),this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._register(this._editor.onDidChangeConfiguration((e=>{if(e.hasChanged(61)){const e=d(this._editor.getOption(61));if(this._opts.equals(e))return;this._opts=e,this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._lineNumberOnMouseDown=0,this._onCancel.fire()}}))),this._register(this._editor.onMouseMove((e=>this._onEditorMouseMove(new a(e,this._opts))))),this._register(this._editor.onMouseDown((e=>this._onEditorMouseDown(new a(e,this._opts))))),this._register(this._editor.onMouseUp((e=>this._onEditorMouseUp(new a(e,this._opts))))),this._register(this._editor.onKeyDown((e=>this._onEditorKeyDown(new l(e,this._opts))))),this._register(this._editor.onKeyUp((e=>this._onEditorKeyUp(new l(e,this._opts))))),this._register(this._editor.onMouseDrag((()=>this._resetHandler()))),this._register(this._editor.onDidChangeCursorSelection((e=>this._onDidChangeCursorSelection(e)))),this._register(this._editor.onDidChangeModel((e=>this._resetHandler()))),this._register(this._editor.onDidChangeModelContent((()=>this._resetHandler()))),this._register(this._editor.onDidScrollChange((e=>{(e.scrollTopChanged||e.scrollLeftChanged)&&this._resetHandler()})))}_onDidChangeCursorSelection(e){e.selection&&e.selection.startColumn!==e.selection.endColumn&&this._resetHandler()}_onEditorMouseMove(e){this._lastMouseMoveEvent=e,this._onMouseMoveOrRelevantKeyDown.fire([e,null])}_onEditorMouseDown(e){this._hasTriggerKeyOnMouseDown=e.hasTriggerModifier,this._lineNumberOnMouseDown=e.target.position?e.target.position.lineNumber:0}_onEditorMouseUp(e){const t=e.target.position?e.target.position.lineNumber:0;this._hasTriggerKeyOnMouseDown&&this._lineNumberOnMouseDown&&this._lineNumberOnMouseDown===t&&this._onExecute.fire(e)}_onEditorKeyDown(e){this._lastMouseMoveEvent&&(e.keyCodeIsTriggerKey||e.keyCodeIsSideBySideKey&&e.hasTriggerModifier)?this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent,e]):e.hasTriggerModifier&&this._onCancel.fire()}_onEditorKeyUp(e){e.keyCodeIsTriggerKey&&this._onCancel.fire()}_resetHandler(){this._lastMouseMoveEvent=null,this._hasTriggerKeyOnMouseDown=!1,this._onCancel.fire()}}},10365:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GotoDefinitionAtPositionEditorContribution:()=>k});var n=i(63580),r=i(15393),s=i(17301),o=i(59365),a=i(71531),l=i(24314),c=i(43775),d=i(16830),h=i(91691),u=i(5976),g=i(88216),f=i(97781),p=i(73910),m=i(39925),_=i(92729),b=i(69241),v=i(50187),y=i(98401),w=i(22043),C=i(38819),S=function(e,t){return function(i,n){t(i,n,e)}};let k=class e{constructor(e,t,i){this.textModelResolverService=t,this.modeService=i,this.toUnhook=new u.SL,this.toUnhookForKeyboard=new u.SL,this.linkDecorations=[],this.currentWordAtPosition=null,this.previousPromise=null,this.editor=e;let n=new b.yN(e);this.toUnhook.add(n),this.toUnhook.add(n.onMouseMoveOrRelevantKeyDown((([e,t])=>{this.startFindDefinitionFromMouse(e,(0,y.f6)(t))}))),this.toUnhook.add(n.onExecute((e=>{this.isEnabled(e)&&this.gotoDefinition(e.target.position,e.hasSideBySideModifier).then((()=>{this.removeLinkDecorations()}),(e=>{this.removeLinkDecorations(),(0,s.dL)(e)}))}))),this.toUnhook.add(n.onCancel((()=>{this.removeLinkDecorations(),this.currentWordAtPosition=null})))}static get(t){return t.getContribution(e.ID)}startFindDefinitionFromCursor(e){return this.startFindDefinition(e).then((()=>{this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition((()=>{this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear()}))),this.toUnhookForKeyboard.add(this.editor.onKeyDown((e=>{e&&(this.currentWordAtPosition=null,this.removeLinkDecorations(),this.toUnhookForKeyboard.clear())})))}))}startFindDefinitionFromMouse(e,t){if(9===e.target.type&&this.linkDecorations.length>0)return;if(!this.editor.hasModel()||!this.isEnabled(e,t))return this.currentWordAtPosition=null,void this.removeLinkDecorations();const i=e.target.position;this.startFindDefinition(i)}startFindDefinition(e){var t;this.toUnhookForKeyboard.clear();const i=e?null===(t=this.editor.getModel())||void 0===t?void 0:t.getWordAtPosition(e):null;if(!i)return this.currentWordAtPosition=null,this.removeLinkDecorations(),Promise.resolve(0);if(this.currentWordAtPosition&&this.currentWordAtPosition.startColumn===i.startColumn&&this.currentWordAtPosition.endColumn===i.endColumn&&this.currentWordAtPosition.word===i.word)return Promise.resolve(0);this.currentWordAtPosition=i;let a=new m.yy(this.editor,15);return this.previousPromise&&(this.previousPromise.cancel(),this.previousPromise=null),this.previousPromise=(0,r.PG)((t=>this.findDefinition(e,t))),this.previousPromise.then((t=>{if(t&&t.length&&a.validate(this.editor))if(t.length>1)this.addDecoration(new l.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn),(new o.W5).appendText(n.N("multipleResults","Click to show {0} definitions.",t.length)));else{let n=t[0];if(!n.uri)return;this.textModelResolverService.createModelReference(n.uri).then((t=>{if(!t.object||!t.object.textEditorModel)return void t.dispose();const{object:{textEditorModel:r}}=t,{startLineNumber:s}=n.range;if(s<1||s>r.getLineCount())return void t.dispose();const a=this.getPreviewValue(r,s,n);let c;c=n.originSelectionRange?l.e.lift(n.originSelectionRange):new l.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn);const d=this.modeService.getModeIdByFilepathOrFirstLine(r.uri);this.addDecoration(c,(new o.W5).appendCodeblock(d||"",a)),t.dispose()}))}else this.removeLinkDecorations()})).then(void 0,s.dL)}getPreviewValue(t,i,n){let r=n.targetSelectionRange?n.range:this.getPreviewRangeBasedOnBrackets(t,i);return r.endLineNumber-r.startLineNumber>=e.MAX_SOURCE_PREVIEW_LINES&&(r=this.getPreviewRangeBasedOnIndentation(t,i)),this.stripIndentationFromPreviewRange(t,i,r)}stripIndentationFromPreviewRange(e,t,i){let n=e.getLineFirstNonWhitespaceColumn(t);for(let r=t+1;r<i.endLineNumber;r++){const t=e.getLineFirstNonWhitespaceColumn(r);n=Math.min(n,t)}return e.getValueInRange(i).replace(new RegExp(`^\\s{${n-1}}`,"gm"),"").trim()}getPreviewRangeBasedOnIndentation(t,i){const n=t.getLineFirstNonWhitespaceColumn(i),r=Math.min(t.getLineCount(),i+e.MAX_SOURCE_PREVIEW_LINES);let s=i+1;for(;s<r&&n!==t.getLineFirstNonWhitespaceColumn(s);s++);return new l.e(i,1,s+1,1)}getPreviewRangeBasedOnBrackets(t,i){const n=Math.min(t.getLineCount(),i+e.MAX_SOURCE_PREVIEW_LINES),r=[];let s=!0,o=t.findNextBracket(new v.L(i,1));for(;null!==o;){if(0===r.length)r.push(o);else{const e=r[r.length-1];if(e.open[0]===o.open[0]&&e.isOpen&&!o.isOpen?r.pop():r.push(o),0===r.length){if(!s)return new l.e(i,1,o.range.endLineNumber+1,1);s=!1}}const e=t.getLineMaxColumn(i);let a=o.range.endLineNumber,c=o.range.endColumn;if(e===o.range.endColumn&&(a++,c=1),a>n)return new l.e(i,1,n+1,1);o=t.findNextBracket(new v.L(a,c))}return new l.e(i,1,n+1,1)}addDecoration(e,t){const i={range:e,options:{inlineClassName:"goto-definition-link",hoverMessage:t}};this.linkDecorations=this.editor.deltaDecorations(this.linkDecorations,[i])}removeLinkDecorations(){this.linkDecorations.length>0&&(this.linkDecorations=this.editor.deltaDecorations(this.linkDecorations,[]))}isEnabled(e,t){return this.editor.hasModel()&&e.isNoneOrSingleMouseDown&&6===e.target.type&&(e.hasTriggerModifier||!!t&&t.keyCodeIsTriggerKey)&&c.Ct.has(this.editor.getModel())}findDefinition(e,t){const i=this.editor.getModel();return i?(0,h.nD)(i,e,t):Promise.resolve(null)}gotoDefinition(e,t){return this.editor.setPosition(e),this.editor.invokeWithinContext((e=>{const i=!t&&this.editor.getOption(69)&&!this.isInPeekEditor(e);return new _.DefinitionAction({openToSide:t,openInPeek:i,muteMessage:!0},{alias:"",label:"",id:"",precondition:void 0}).run(e,this.editor)}))}isInPeekEditor(e){const t=e.get(C.i6);return w.Jy.inPeekEditor.getValue(t)}dispose(){this.toUnhook.dispose()}};k.ID="editor.contrib.gotodefinitionatposition",k.MAX_SOURCE_PREVIEW_LINES=8,k=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([S(1,g.S),S(2,a.h)],k),(0,d._K)(k.ID,k),(0,f.Ic)(((e,t)=>{const i=e.getColor(p._Y);i&&t.addRule(`.monaco-editor .goto-definition-link { color: ${i} !important; }`)}))},19192:(e,t,i)=>{"use strict";i.d(t,{J:()=>_e});var n=i(63580),r=i(17301),s=i(5976),o=i(11640),a=i(72065),l=i(38819),c=i(33108),d=i(52365),h=i(71455),u=i(65321),g=i(41264),f=i(4669),p=i(66663),m=i(95935),_=i(84527),b=i(24314),v=i(3411),y=i(88216),w=i(59834),C=i(67488),S=i(44349),k=i(97781),x=i(88810),L=i(68843),M=i(91847),D=i(75392),N=i(34650),E=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},T=function(e,t){return function(i,n){t(i,n,e)}};let I=class{constructor(e){this._resolverService=e}hasChildren(e){return e instanceof h.oQ||e instanceof h.F2}getChildren(e){if(e instanceof h.oQ)return e.groups;if(e instanceof h.F2)return e.resolve(this._resolverService).then((e=>e.children));throw new Error("bad tree")}};I=E([T(0,y.S)],I);class O{getHeight(){return 23}getTemplateId(e){return e instanceof h.F2?F.id:W.id}}let A=class{constructor(e){this._keybindingService=e}getKeyboardNavigationLabel(e){var t;if(e instanceof h.WX){const i=null===(t=e.parent.getPreview(e))||void 0===t?void 0:t.preview(e.range);if(i)return i.value}return(0,m.EZ)(e.uri)}};A=E([T(0,M.d)],A);class R{getId(e){return e instanceof h.WX?e.id:e.uri}}let P=class extends s.JT{constructor(e,t,i){super(),this._uriLabel=t;const n=document.createElement("div");n.classList.add("reference-file"),this.file=this._register(new w.g(n,{supportHighlights:!0})),this.badge=new C.Z(u.R3(n,u.$(".count"))),this._register((0,x.WZ)(this.badge,i)),e.appendChild(n)}set(e,t){let i=(0,m.XX)(e.uri);this.file.setLabel((0,L.pP)(e.uri),this._uriLabel.getUriLabel(i,{relative:!0}),{title:this._uriLabel.getUriLabel(e.uri),matches:t});const r=e.children.length;this.badge.setCount(r),r>1?this.badge.setTitleFormat((0,n.N)("referencesCount","{0} references",r)):this.badge.setTitleFormat((0,n.N)("referenceCount","{0} reference",r))}};P=E([T(1,S.e),T(2,k.XE)],P);let F=class e{constructor(t){this._instantiationService=t,this.templateId=e.id}renderTemplate(e){return this._instantiationService.createInstance(P,e)}renderElement(e,t,i){i.set(e.element,(0,D.mB)(e.filterData))}disposeTemplate(e){e.dispose()}};F.id="FileReferencesRenderer",F=E([T(0,a.TG)],F);class B{constructor(e){this.label=new N.q(e,!1)}set(e,t){var i;const n=null===(i=e.parent.getPreview(e))||void 0===i?void 0:i.preview(e.range);if(n&&n.value){const{value:e,highlight:i}=n;t&&!D.CL.isDefault(t)?(this.label.element.classList.toggle("referenceMatch",!1),this.label.set(e,(0,D.mB)(t))):(this.label.element.classList.toggle("referenceMatch",!0),this.label.set(e,[i]))}else this.label.set(`${(0,m.EZ)(e.uri)}:${e.range.startLineNumber+1}:${e.range.startColumn+1}`)}}class W{constructor(){this.templateId=W.id}renderTemplate(e){return new B(e)}renderElement(e,t,i){i.set(e.element,e.filterData)}disposeTemplate(){}}W.id="OneReferenceRenderer";class Y{getWidgetAriaLabel(){return(0,n.N)("treeAriaLabel","References")}getAriaLabel(e){return e.ariaMessage}}var H=i(58664),j=i(73910),V=i(22043),z=i(98401),U=i(59870),$=i(9488),K=i(73098),q=i(4850);const G={separatorBorder:g.Il.transparent};class Z{constructor(e,t,i,n){this.container=e,this.view=t,this.disposable=n,this._cachedVisibleSize=void 0,"number"==typeof i?(this._size=i,this._cachedVisibleSize=void 0,u.cn(e,"visible")):(this._size=0,this._cachedVisibleSize=i.cachedVisibleSize)}set size(e){this._size=e}get size(){return this._size}get visible(){return void 0===this._cachedVisibleSize}setVisible(e,t){e!==this.visible&&(e?(this.size=(0,U.u)(this._cachedVisibleSize,this.viewMinimumSize,this.viewMaximumSize),this._cachedVisibleSize=void 0):(this._cachedVisibleSize="number"==typeof t?t:this.size,this.size=0),u.og(this.container,"visible",e),this.view.setVisible&&this.view.setVisible(e))}get minimumSize(){return this.visible?this.view.minimumSize:0}get viewMinimumSize(){return this.view.minimumSize}get maximumSize(){return this.visible?this.view.maximumSize:0}get viewMaximumSize(){return this.view.maximumSize}get priority(){return this.view.priority}get snap(){return!!this.view.snap}set enabled(e){this.container.style.pointerEvents=e?"":"none"}layout(e,t){this.layoutContainer(e),this.view.layout(this.size,e,t)}dispose(){return this.disposable.dispose(),this.view}}class J extends Z{layoutContainer(e){this.container.style.top=`${e}px`,this.container.style.height=`${this.size}px`}}class Q extends Z{layoutContainer(e){this.container.style.left=`${e}px`,this.container.style.width=`${this.size}px`}}var X,ee;!function(e){e[e.Idle=0]="Idle",e[e.Busy=1]="Busy"}(X||(X={})),function(e){e.Distribute={type:"distribute"},e.Split=function(e){return{type:"split",index:e}},e.Invisible=function(e){return{type:"invisible",cachedVisibleSize:e}}}(ee||(ee={}));class te extends s.JT{constructor(e,t={}){super(),this.size=0,this.contentSize=0,this.proportions=void 0,this.viewItems=[],this.sashItems=[],this.state=X.Idle,this._onDidSashChange=this._register(new f.Q5),this.onDidSashChange=this._onDidSashChange.event,this._onDidSashReset=this._register(new f.Q5),this._startSnappingEnabled=!0,this._endSnappingEnabled=!0,this.orientation=z.o8(t.orientation)?0:t.orientation,this.inverseAltBehavior=!!t.inverseAltBehavior,this.proportionalLayout=!!z.o8(t.proportionalLayout)||!!t.proportionalLayout,this.el=document.createElement("div"),u.cn(this.el,"monaco-split-view2"),u.cn(this.el,0===this.orientation?"vertical":"horizontal"),e.appendChild(this.el),this.sashContainer=u.R3(this.el,u.$(".sash-container")),this.viewContainer=u.R3(this.el,u.$(".split-view-container")),this.style(t.styles||G),t.descriptor&&(this.size=t.descriptor.size,t.descriptor.views.forEach(((e,t)=>{const i=z.o8(e.visible)||e.visible?e.size:{type:"invisible",cachedVisibleSize:e.size},n=e.view;this.doAddView(n,i,t,!0)})),this.contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0),this.saveProportions())}get orthogonalStartSash(){return this._orthogonalStartSash}set orthogonalStartSash(e){for(const t of this.sashItems)t.sash.orthogonalStartSash=e;this._orthogonalStartSash=e}get orthogonalEndSash(){return this._orthogonalEndSash}set orthogonalEndSash(e){for(const t of this.sashItems)t.sash.orthogonalEndSash=e;this._orthogonalEndSash=e}get startSnappingEnabled(){return this._startSnappingEnabled}set startSnappingEnabled(e){this._startSnappingEnabled!==e&&(this._startSnappingEnabled=e,this.updateSashEnablement())}get endSnappingEnabled(){return this._endSnappingEnabled}set endSnappingEnabled(e){this._endSnappingEnabled!==e&&(this._endSnappingEnabled=e,this.updateSashEnablement())}style(e){e.separatorBorder.isTransparent()?(u.IV(this.el,"separator-border"),this.el.style.removeProperty("--separator-border")):(u.cn(this.el,"separator-border"),this.el.style.setProperty("--separator-border",e.separatorBorder.toString()))}addView(e,t,i=this.viewItems.length,n){this.doAddView(e,t,i,n)}layout(e,t){const i=Math.max(this.size,this.contentSize);if(this.size=e,this.layoutContext=t,this.proportions)for(let t=0;t<this.viewItems.length;t++){const i=this.viewItems[t];i.size=(0,U.u)(Math.round(this.proportions[t]*e),i.minimumSize,i.maximumSize)}else{const t=(0,$.w6)(this.viewItems.length),n=t.filter((e=>1===this.viewItems[e].priority)),r=t.filter((e=>2===this.viewItems[e].priority));this.resize(this.viewItems.length-1,e-i,void 0,n,r)}this.distributeEmptySpace(),this.layoutViews()}saveProportions(){this.proportionalLayout&&this.contentSize>0&&(this.proportions=this.viewItems.map((e=>e.size/this.contentSize)))}onSashStart({sash:e,start:t,alt:i}){for(const e of this.viewItems)e.enabled=!1;const n=(0,$.Zr)(this.sashItems,(t=>t.sash===e)),r=(0,s.F8)((0,q.j)(document.body,"keydown")((e=>o(this.sashDragState.current,e.altKey))),(0,q.j)(document.body,"keyup")((()=>o(this.sashDragState.current,!1)))),o=(e,t)=>{const i=this.viewItems.map((e=>e.size));let s,o,a=Number.NEGATIVE_INFINITY,l=Number.POSITIVE_INFINITY;if(this.inverseAltBehavior&&(t=!t),t)if(n===this.sashItems.length-1){const e=this.viewItems[n];a=(e.minimumSize-e.size)/2,l=(e.maximumSize-e.size)/2}else{const e=this.viewItems[n+1];a=(e.size-e.maximumSize)/2,l=(e.size-e.minimumSize)/2}if(!t){const e=(0,$.w6)(n,-1),t=(0,$.w6)(n+1,this.viewItems.length),r=e.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-i[t])),0),a=e.reduce(((e,t)=>e+(this.viewItems[t].viewMaximumSize-i[t])),0),l=0===t.length?Number.POSITIVE_INFINITY:t.reduce(((e,t)=>e+(i[t]-this.viewItems[t].minimumSize)),0),c=0===t.length?Number.NEGATIVE_INFINITY:t.reduce(((e,t)=>e+(i[t]-this.viewItems[t].viewMaximumSize)),0),d=Math.max(r,c),h=Math.min(l,a),u=this.findFirstSnapIndex(e),g=this.findFirstSnapIndex(t);if("number"==typeof u){const e=this.viewItems[u],t=Math.floor(e.viewMinimumSize/2);s={index:u,limitDelta:e.visible?d-t:d+t,size:e.size}}if("number"==typeof g){const e=this.viewItems[g],t=Math.floor(e.viewMinimumSize/2);o={index:g,limitDelta:e.visible?h+t:h-t,size:e.size}}}this.sashDragState={start:e,current:e,index:n,sizes:i,minDelta:a,maxDelta:l,alt:t,snapBefore:s,snapAfter:o,disposable:r}};o(t,i)}onSashChange({current:e}){const{index:t,start:i,sizes:n,alt:r,minDelta:s,maxDelta:o,snapBefore:a,snapAfter:l}=this.sashDragState;this.sashDragState.current=e;const c=e-i,d=this.resize(t,c,n,void 0,void 0,s,o,a,l);if(r){const e=t===this.sashItems.length-1,i=this.viewItems.map((e=>e.size)),n=e?t:t+1,r=this.viewItems[n],s=r.size-r.maximumSize,o=r.size-r.minimumSize,a=e?t-1:t+1;this.resize(a,-d,i,void 0,void 0,s,o)}this.distributeEmptySpace(),this.layoutViews()}onSashEnd(e){this._onDidSashChange.fire(e),this.sashDragState.disposable.dispose(),this.saveProportions();for(const e of this.viewItems)e.enabled=!0}onViewChange(e,t){const i=this.viewItems.indexOf(e);i<0||i>=this.viewItems.length||(t="number"==typeof t?t:e.size,t=(0,U.u)(t,e.minimumSize,e.maximumSize),this.inverseAltBehavior&&i>0?(this.resize(i-1,Math.floor((e.size-t)/2)),this.distributeEmptySpace(),this.layoutViews()):(e.size=t,this.relayout([i],void 0)))}resizeView(e,t){if(this.state!==X.Idle)throw new Error("Cant modify splitview");if(this.state=X.Busy,e<0||e>=this.viewItems.length)return;const i=(0,$.w6)(this.viewItems.length).filter((t=>t!==e)),n=[...i.filter((e=>1===this.viewItems[e].priority)),e],r=i.filter((e=>2===this.viewItems[e].priority)),s=this.viewItems[e];t=Math.round(t),t=(0,U.u)(t,s.minimumSize,Math.min(s.maximumSize,this.size)),s.size=t,this.relayout(n,r),this.state=X.Idle}distributeViewSizes(){const e=[];let t=0;for(const i of this.viewItems)i.maximumSize-i.minimumSize>0&&(e.push(i),t+=i.size);const i=Math.floor(t/e.length);for(const t of e)t.size=(0,U.u)(i,t.minimumSize,t.maximumSize);const n=(0,$.w6)(this.viewItems.length),r=n.filter((e=>1===this.viewItems[e].priority)),s=n.filter((e=>2===this.viewItems[e].priority));this.relayout(r,s)}getViewSize(e){return e<0||e>=this.viewItems.length?-1:this.viewItems[e].size}doAddView(e,t,i=this.viewItems.length,n){if(this.state!==X.Idle)throw new Error("Cant modify splitview");this.state=X.Busy;const r=u.$(".split-view-view");i===this.viewItems.length?this.viewContainer.appendChild(r):this.viewContainer.insertBefore(r,this.viewContainer.children.item(i));const o=e.onDidChange((e=>this.onViewChange(d,e))),a=(0,s.OF)((()=>this.viewContainer.removeChild(r))),l=(0,s.F8)(o,a);let c;c="number"==typeof t?t:"split"===t.type?this.getViewSize(t.index)/2:"invisible"===t.type?{cachedVisibleSize:t.cachedVisibleSize}:e.minimumSize;const d=0===this.orientation?new J(r,e,c,l):new Q(r,e,c,l);if(this.viewItems.splice(i,0,d),this.viewItems.length>1){const e=0===this.orientation?new K.g(this.sashContainer,{getHorizontalSashTop:e=>this.getSashPosition(e)},{orientation:1,orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash}):new K.g(this.sashContainer,{getVerticalSashLeft:e=>this.getSashPosition(e)},{orientation:0,orthogonalStartSash:this.orthogonalStartSash,orthogonalEndSash:this.orthogonalEndSash}),t=0===this.orientation?t=>({sash:e,start:t.startY,current:t.currentY,alt:t.altKey}):t=>({sash:e,start:t.startX,current:t.currentX,alt:t.altKey}),n=f.ju.map(e.onDidStart,t)(this.onSashStart,this),r=f.ju.map(e.onDidChange,t)(this.onSashChange,this),o=f.ju.map(e.onDidEnd,(()=>(0,$.Zr)(this.sashItems,(t=>t.sash===e))))(this.onSashEnd,this),a=e.onDidReset((()=>{const t=(0,$.Zr)(this.sashItems,(t=>t.sash===e)),i=(0,$.w6)(t,-1),n=(0,$.w6)(t+1,this.viewItems.length),r=this.findFirstSnapIndex(i),s=this.findFirstSnapIndex(n);("number"!=typeof r||this.viewItems[r].visible)&&("number"!=typeof s||this.viewItems[s].visible)&&this._onDidSashReset.fire(t)})),l=(0,s.F8)(n,r,o,a,e),c={sash:e,disposable:l};this.sashItems.splice(i-1,0,c)}let h;r.appendChild(e.element),"number"!=typeof t&&"split"===t.type&&(h=[t.index]),n||this.relayout([i],h),this.state=X.Idle,n||"number"==typeof t||"distribute"!==t.type||this.distributeViewSizes()}relayout(e,t){const i=this.viewItems.reduce(((e,t)=>e+t.size),0);this.resize(this.viewItems.length-1,this.size-i,void 0,e,t),this.distributeEmptySpace(),this.layoutViews(),this.saveProportions()}resize(e,t,i=this.viewItems.map((e=>e.size)),n,r,s=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,a,l){if(e<0||e>=this.viewItems.length)return 0;const c=(0,$.w6)(e,-1),d=(0,$.w6)(e+1,this.viewItems.length);if(r)for(const e of r)(0,$.zI)(c,e),(0,$.zI)(d,e);if(n)for(const e of n)(0,$.al)(c,e),(0,$.al)(d,e);const h=c.map((e=>this.viewItems[e])),u=c.map((e=>i[e])),g=d.map((e=>this.viewItems[e])),f=d.map((e=>i[e])),p=c.reduce(((e,t)=>e+(this.viewItems[t].minimumSize-i[t])),0),m=c.reduce(((e,t)=>e+(this.viewItems[t].maximumSize-i[t])),0),_=0===d.length?Number.POSITIVE_INFINITY:d.reduce(((e,t)=>e+(i[t]-this.viewItems[t].minimumSize)),0),b=0===d.length?Number.NEGATIVE_INFINITY:d.reduce(((e,t)=>e+(i[t]-this.viewItems[t].maximumSize)),0),v=Math.max(p,b,s),y=Math.min(_,m,o);let w=!1;if(a){const e=this.viewItems[a.index],i=t>=a.limitDelta;w=i!==e.visible,e.setVisible(i,a.size)}if(!w&&l){const e=this.viewItems[l.index],i=t<l.limitDelta;w=i!==e.visible,e.setVisible(i,l.size)}if(w)return this.resize(e,t,i,n,r,s,o);for(let e=0,i=t=(0,U.u)(t,v,y);e<h.length;e++){const t=h[e],n=(0,U.u)(u[e]+i,t.minimumSize,t.maximumSize);i-=n-u[e],t.size=n}for(let e=0,i=t;e<g.length;e++){const t=g[e],n=(0,U.u)(f[e]-i,t.minimumSize,t.maximumSize);i+=n-f[e],t.size=n}return t}distributeEmptySpace(e){const t=this.viewItems.reduce(((e,t)=>e+t.size),0);let i=this.size-t;const n=(0,$.w6)(this.viewItems.length-1,-1),r=n.filter((e=>1===this.viewItems[e].priority)),s=n.filter((e=>2===this.viewItems[e].priority));for(const e of s)(0,$.zI)(n,e);for(const e of r)(0,$.al)(n,e);"number"==typeof e&&(0,$.al)(n,e);for(let e=0;0!==i&&e<n.length;e++){const t=this.viewItems[n[e]],r=(0,U.u)(t.size+i,t.minimumSize,t.maximumSize);i-=r-t.size,t.size=r}}layoutViews(){this.contentSize=this.viewItems.reduce(((e,t)=>e+t.size),0);let e=0;for(const t of this.viewItems)t.layout(e,this.layoutContext),e+=t.size;this.sashItems.forEach((e=>e.sash.layout())),this.updateSashEnablement()}updateSashEnablement(){let e=!1;const t=this.viewItems.map((t=>e=t.size-t.minimumSize>0||e));e=!1;const i=this.viewItems.map((t=>e=t.maximumSize-t.size>0||e)),n=[...this.viewItems].reverse();e=!1;const r=n.map((t=>e=t.size-t.minimumSize>0||e)).reverse();e=!1;const s=n.map((t=>e=t.maximumSize-t.size>0||e)).reverse();let o=0;for(let e=0;e<this.sashItems.length;e++){const{sash:n}=this.sashItems[e];o+=this.viewItems[e].size;const a=!(t[e]&&s[e+1]),l=!(i[e]&&r[e+1]);if(a&&l){const i=(0,$.w6)(e,-1),s=(0,$.w6)(e+1,this.viewItems.length),a=this.findFirstSnapIndex(i),l=this.findFirstSnapIndex(s),c="number"==typeof a&&!this.viewItems[a].visible,d="number"==typeof l&&!this.viewItems[l].visible;c&&r[e]&&(o>0||this.startSnappingEnabled)?n.state=1:d&&t[e]&&(o<this.contentSize||this.endSnappingEnabled)?n.state=2:n.state=0}else n.state=a&&!l?1:!a&&l?2:3}}getSashPosition(e){let t=0;for(let i=0;i<this.sashItems.length;i++)if(t+=this.viewItems[i].size,this.sashItems[i].sash===e)return t;return 0}findFirstSnapIndex(e){for(const t of e){const e=this.viewItems[t];if(e.visible&&e.snap)return t}for(const t of e){const e=this.viewItems[t];if(e.visible&&e.maximumSize-e.minimumSize>0)return;if(!e.visible&&e.snap)return t}}dispose(){super.dispose(),this.viewItems.forEach((e=>e.dispose())),this.viewItems=[],this.sashItems.forEach((e=>e.disposable.dispose())),this.sashItems=[]}}var ie=i(64862),ne=function(e,t){return function(i,n){t(i,n,e)}},re=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class se{constructor(e,t){this._editor=e,this._model=t,this._decorations=new Map,this._decorationIgnoreSet=new Set,this._callOnDispose=new s.SL,this._callOnModelChange=new s.SL,this._callOnDispose.add(this._editor.onDidChangeModel((()=>this._onModelChanged()))),this._onModelChanged()}dispose(){this._callOnModelChange.dispose(),this._callOnDispose.dispose(),this.removeDecorations()}_onModelChanged(){this._callOnModelChange.clear();const e=this._editor.getModel();if(e)for(let t of this._model.references)if(t.uri.toString()===e.uri.toString())return void this._addDecorations(t.parent)}_addDecorations(e){if(!this._editor.hasModel())return;this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations((()=>this._onDecorationChanged())));const t=[],i=[];for(let n=0,r=e.children.length;n<r;n++){let r=e.children[n];this._decorationIgnoreSet.has(r.id)||r.uri.toString()===this._editor.getModel().uri.toString()&&(t.push({range:r.range,options:se.DecorationOptions}),i.push(n))}const n=this._editor.deltaDecorations([],t);for(let t=0;t<n.length;t++)this._decorations.set(n[t],e.children[i[t]])}_onDecorationChanged(){const e=[],t=this._editor.getModel();if(t){for(let[i,n]of this._decorations){const r=t.getDecorationRange(i);if(!r)continue;let s=!1;b.e.equalsRange(r,n.range)||((b.e.spansMultipleLines(r)||n.range.endColumn-n.range.startColumn!=r.endColumn-r.startColumn)&&(s=!0),s?(this._decorationIgnoreSet.add(n.id),e.push(i)):n.range=r)}for(let t=0,i=e.length;t<i;t++)this._decorations.delete(e[t]);this._editor.deltaDecorations(e,[])}}removeDecorations(){this._editor.deltaDecorations([...this._decorations.keys()],[]),this._decorations.clear()}}se.DecorationOptions=v.qx.register({stickiness:1,className:"reference-decoration"});class oe extends H.ls{}let ae=class extends V.vk{constructor(e,t,i,n,r,o,a,l,c,d){super(e,{showFrame:!1,showArrow:!0,isResizeable:!0,isAccessible:!0},o),this._defaultTreeKeyboardSupport=t,this.layoutData=i,this._textModelResolverService=r,this._instantiationService=o,this._peekViewService=a,this._uriLabel=l,this._undoRedoService=c,this._keybindingService=d,this._disposeOnNewModel=new s.SL,this._callOnDispose=new s.SL,this._onDidSelectReference=new f.Q5,this.onDidSelectReference=this._onDidSelectReference.event,this._dim={height:0,width:0},this._applyTheme(n.getColorTheme()),this._callOnDispose.add(n.onDidColorThemeChange(this._applyTheme.bind(this))),this._peekViewService.addExclusiveWidget(e,this),this.create()}dispose(){this.setModel(void 0),this._callOnDispose.dispose(),this._disposeOnNewModel.dispose(),(0,s.B9)(this._preview),(0,s.B9)(this._previewNotAvailableMessage),(0,s.B9)(this._tree),(0,s.B9)(this._previewModelReference),this._splitView.dispose(),super.dispose()}_applyTheme(e){const t=e.getColor(V.SC)||g.Il.transparent;this.style({arrowColor:t,frameColor:t,headerBackgroundColor:e.getColor(V.KY)||g.Il.transparent,primaryHeadingColor:e.getColor(V.IH),secondaryHeadingColor:e.getColor(V.R7)})}show(e){this.editor.revealRangeInCenterIfOutsideViewport(e,0),super.show(e,this.layoutData.heightInLines||18)}focusOnReferenceTree(){this._tree.domFocus()}focusOnPreviewEditor(){this._preview.focus()}isPreviewEditorFocused(){return this._preview.hasTextFocus()}_onTitleClick(e){this._preview&&this._preview.getModel()&&this._onDidSelectReference.fire({element:this._getFocusedReference(),kind:e.ctrlKey||e.metaKey||e.altKey?"side":"open",source:"title"})}_fillBody(e){this.setCssClass("reference-zone-widget"),this._messageContainer=u.R3(e,u.$("div.messages")),u.Cp(this._messageContainer),this._splitView=new te(e,{orientation:1}),this._previewContainer=u.R3(e,u.$("div.preview.inline")),this._preview=this._instantiationService.createInstance(_.H,this._previewContainer,{scrollBeyondLastLine:!1,scrollbar:{verticalScrollbarSize:14,horizontal:"auto",useShadows:!0,verticalHasArrows:!1,horizontalHasArrows:!1,alwaysConsumeMouseWheel:!1},overviewRulerLanes:2,fixedOverflowWidgets:!0,minimap:{enabled:!1}},this.editor),u.Cp(this._previewContainer),this._previewNotAvailableMessage=new v.yO(n.N("missingPreviewMessage","no preview available"),v.yO.DEFAULT_CREATION_OPTIONS,null,null,this._undoRedoService),this._treeContainer=u.R3(e,u.$("div.ref-tree.inline"));const t={keyboardSupport:this._defaultTreeKeyboardSupport,accessibilityProvider:new Y,keyboardNavigationLabelProvider:this._instantiationService.createInstance(A),identityProvider:new R,openOnSingleClick:!0,openOnFocus:!0,overrideStyles:{listBackground:V.M8}};this._defaultTreeKeyboardSupport&&this._callOnDispose.add(u.mu(this._treeContainer,"keydown",(e=>{e.equals(9)&&(this._keybindingService.dispatchEvent(e,e.target),e.stopPropagation())}),!0)),this._tree=this._instantiationService.createInstance(oe,"ReferencesWidget",this._treeContainer,new O,[this._instantiationService.createInstance(F),this._instantiationService.createInstance(W)],this._instantiationService.createInstance(I),t),this._splitView.addView({onDidChange:f.ju.None,element:this._previewContainer,minimumSize:200,maximumSize:Number.MAX_VALUE,layout:e=>{this._preview.layout({height:this._dim.height,width:e})}},ee.Distribute),this._splitView.addView({onDidChange:f.ju.None,element:this._treeContainer,minimumSize:100,maximumSize:Number.MAX_VALUE,layout:e=>{this._treeContainer.style.height=`${this._dim.height}px`,this._treeContainer.style.width=`${e}px`,this._tree.layout(this._dim.height,e)}},ee.Distribute),this._disposables.add(this._splitView.onDidSashChange((()=>{this._dim.width&&(this.layoutData.ratio=this._splitView.getViewSize(0)/this._dim.width)}),void 0));let i=(e,t)=>{e instanceof h.WX&&("show"===t&&this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:t,source:"tree"}))};this._tree.onDidOpen((e=>{e.sideBySide?i(e.element,"side"):e.editorOptions.pinned?i(e.element,"goto"):i(e.element,"show")})),u.Cp(this._treeContainer)}_onWidth(e){this._dim&&this._doLayoutBody(this._dim.height,e)}_doLayoutBody(e,t){super._doLayoutBody(e,t),this._dim={height:e,width:t},this.layoutData.heightInLines=this._viewZone?this._viewZone.heightInLines:this.layoutData.heightInLines,this._splitView.layout(t),this._splitView.resizeView(0,t*this.layoutData.ratio)}setSelection(e){return this._revealReference(e,!0).then((()=>{this._model&&(this._tree.setSelection([e]),this._tree.setFocus([e]))}))}setModel(e){return this._disposeOnNewModel.clear(),this._model=e,this._model?this._onNewModel():Promise.resolve()}_onNewModel(){return this._model?this._model.isEmpty?(this.setTitle(""),this._messageContainer.innerText=n.N("noResults","No results"),u.$Z(this._messageContainer),Promise.resolve(void 0)):(u.Cp(this._messageContainer),this._decorationsManager=new se(this._preview,this._model),this._disposeOnNewModel.add(this._decorationsManager),this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange((e=>this._tree.rerender(e)))),this._disposeOnNewModel.add(this._preview.onMouseDown((e=>{const{event:t,target:i}=e;if(2!==t.detail)return;const n=this._getFocusedReference();n&&this._onDidSelectReference.fire({element:{uri:n.uri,range:i.range},kind:t.ctrlKey||t.metaKey||t.altKey?"side":"open",source:"editor"})}))),this.container.classList.add("results-loaded"),u.$Z(this._treeContainer),u.$Z(this._previewContainer),this._splitView.layout(this._dim.width),this.focusOnReferenceTree(),this._tree.setInput(1===this._model.groups.length?this._model.groups[0]:this._model)):Promise.resolve(void 0)}_getFocusedReference(){const[e]=this._tree.getFocus();return e instanceof h.WX?e:e instanceof h.F2&&e.children.length>0?e.children[0]:void 0}revealReference(e){return re(this,void 0,void 0,(function*(){yield this._revealReference(e,!1),this._onDidSelectReference.fire({element:e,kind:"goto",source:"tree"})}))}_revealReference(e,t){return re(this,void 0,void 0,(function*(){if(this._revealedReference===e)return;this._revealedReference=e,e.uri.scheme!==p.l.inMemory?this.setTitle((0,m.Hx)(e.uri),this._uriLabel.getUriLabel((0,m.XX)(e.uri))):this.setTitle(n.N("peekView.alternateTitle","References"));const i=this._textModelResolverService.createModelReference(e.uri);this._tree.getInput()===e.parent||(t&&this._tree.reveal(e.parent),yield this._tree.expand(e.parent)),this._tree.reveal(e);const r=yield i;if(!this._model)return void r.dispose();(0,s.B9)(this._previewModelReference);const o=r.object;if(o){const t=this._preview.getModel()===o.textEditorModel?0:1,i=b.e.lift(e.range).collapseToStart();this._previewModelReference=r,this._preview.setModel(o.textEditorModel),this._preview.setSelection(i),this._preview.revealRangeInCenter(i,t)}else this._preview.setModel(this._previewNotAvailableMessage),r.dispose()}))}};ae=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([ne(3,k.XE),ne(4,y.S),ne(5,a.TG),ne(6,V.Fw),ne(7,S.e),ne(8,ie.t),ne(9,M.d)],ae),(0,k.Ic)(((e,t)=>{const i=e.getColor(V.F8);i&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { background-color: ${i}; }`);const n=e.getColor(V.WL);n&&t.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: ${n}; }`);const r=e.getColor(V.xH);r&&t.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid ${r}; box-sizing: border-box; }`);const s=e.getColor(j.xL);s&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { border: 1px dotted ${s}; box-sizing: border-box; }`);const o=e.getColor(V.M8);o&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree { background-color: ${o}; }`);const a=e.getColor(V.xk);a&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree { color: ${a}; }`);const l=e.getColor(V.a7);l&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree .reference-file { color: ${l}; }`);const c=e.getColor(V.Zj);c&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: ${c}; }`);const d=e.getColor(V.IY);d&&t.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: ${d} !important; }`);const h=e.getColor(V.RX);h&&t.addRule(`.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {\tbackground-color: ${h};}`);const u=e.getColor(V.sH);u&&t.addRule(`.monaco-editor .reference-zone-widget .preview .monaco-editor .margin {\tbackground-color: ${u};}`)}));var le=i(50187),ce=i(59422),de=i(15393),he=i(49989),ue=i(22258),ge=i(94565),fe=function(e,t){return function(i,n){t(i,n,e)}},pe=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const me=new l.uy("referenceSearchVisible",!1);let _e=class e{constructor(e,t,i,n,r,o,a,l){this._defaultTreeKeyboardSupport=e,this._editor=t,this._editorService=n,this._notificationService=r,this._instantiationService=o,this._storageService=a,this._configurationService=l,this._disposables=new s.SL,this._requestIdPool=0,this._ignoreModelChangeEvent=!1,this._referenceSearchVisible=me.bindTo(i)}static get(t){return t.getContribution(e.ID)}dispose(){this._referenceSearchVisible.reset(),this._disposables.dispose(),(0,s.B9)(this._widget),(0,s.B9)(this._model),this._widget=void 0,this._model=void 0}toggleWidget(e,t,i){let r;if(this._widget&&(r=this._widget.position),this.closeWidget(),r&&e.containsPosition(r))return;this._peekMode=i,this._referenceSearchVisible.set(!0),this._disposables.add(this._editor.onDidChangeModelLanguage((()=>{this.closeWidget()}))),this._disposables.add(this._editor.onDidChangeModel((()=>{this._ignoreModelChangeEvent||this.closeWidget()})));const s="peekViewLayout",o=class{constructor(){this.ratio=.7,this.heightInLines=18}static fromJSON(e){let t,i;try{const n=JSON.parse(e);t=n.ratio,i=n.heightInLines}catch(e){}return{ratio:t||.7,heightInLines:i||18}}}.fromJSON(this._storageService.get(s,0,"{}"));this._widget=this._instantiationService.createInstance(ae,this._editor,this._defaultTreeKeyboardSupport,o),this._widget.setTitle(n.N("labelLoading","Loading...")),this._widget.show(e),this._disposables.add(this._widget.onDidClose((()=>{t.cancel(),this._widget&&(this._storageService.store(s,JSON.stringify(this._widget.layoutData),0),this._widget=void 0),this.closeWidget()}))),this._disposables.add(this._widget.onDidSelectReference((e=>{let{element:t,kind:n}=e;if(t)switch(n){case"open":"editor"===e.source&&this._configurationService.getValue("editor.stablePeek")||this.openReference(t,!1);break;case"side":this.openReference(t,!0);break;case"goto":i?this._gotoReference(t):this.openReference(t,!1)}})));const a=++this._requestIdPool;t.then((t=>{if(a===this._requestIdPool&&this._widget)return this._model&&this._model.dispose(),this._model=t,this._widget.setModel(this._model).then((()=>{if(this._widget&&this._model&&this._editor.hasModel()){this._model.isEmpty?this._widget.setMetaTitle(""):this._widget.setMetaTitle(n.N("metaTitle.N","{0} ({1})",this._model.title,this._model.references.length));let t=this._editor.getModel().uri,i=new le.L(e.startLineNumber,e.startColumn),r=this._model.nearestReference(t,i);if(r)return this._widget.setSelection(r).then((()=>{this._widget&&"editor"===this._editor.getOption(68)&&this._widget.focusOnPreviewEditor()}))}}))}),(e=>{this._notificationService.error(e)}))}changeFocusBetweenPreviewAndReferences(){this._widget&&(this._widget.isPreviewEditorFocused()?this._widget.focusOnReferenceTree():this._widget.focusOnPreviewEditor())}goToNextOrPreviousReference(e){return pe(this,void 0,void 0,(function*(){if(!this._editor.hasModel()||!this._model||!this._widget)return;const t=this._widget.position;if(!t)return;const i=this._model.nearestReference(this._editor.getModel().uri,t);if(!i)return;const n=this._model.nextOrPreviousReference(i,e),r=this._editor.hasTextFocus(),s=this._widget.isPreviewEditorFocused();yield this._widget.setSelection(n),yield this._gotoReference(n),r?this._editor.focus():this._widget&&s&&this._widget.focusOnPreviewEditor()}))}revealReference(e){return pe(this,void 0,void 0,(function*(){this._editor.hasModel()&&this._model&&this._widget&&(yield this._widget.revealReference(e))}))}closeWidget(e=!0){(0,s.B9)(this._widget),(0,s.B9)(this._model),this._referenceSearchVisible.reset(),this._disposables.clear(),this._widget=void 0,this._model=void 0,e&&this._editor.focus(),this._requestIdPool+=1}_gotoReference(t){this._widget&&this._widget.hide(),this._ignoreModelChangeEvent=!0;const i=b.e.lift(t.range).collapseToStart();return this._editorService.openCodeEditor({resource:t.uri,options:{selection:i}},this._editor).then((t=>{var n;if(this._ignoreModelChangeEvent=!1,t&&this._widget)if(this._editor===t)this._widget.show(i),this._widget.focusOnReferenceTree();else{const r=e.get(t),s=this._model.clone();this.closeWidget(),t.focus(),r.toggleWidget(i,(0,de.PG)((e=>Promise.resolve(s))),null!==(n=this._peekMode)&&void 0!==n&&n)}else this.closeWidget()}),(e=>{this._ignoreModelChangeEvent=!1,(0,r.dL)(e)}))}openReference(e,t){t||this.closeWidget();const{uri:i,range:n}=e;this._editorService.openCodeEditor({resource:i,options:{selection:n}},this._editor,t)}};function be(e,t){const i=(0,V.rc)(e);if(!i)return;let n=_e.get(i);n&&t(n)}_e.ID="editor.contrib.referencesController",_e=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([fe(2,l.i6),fe(3,o.$),fe(4,ce.lT),fe(5,a.TG),fe(6,d.Uy),fe(7,c.Ui)],_e),he.W.registerCommandAndKeybindingRule({id:"togglePeekWidgetFocus",weight:100,primary:(0,ue.gx)(2089,60),when:l.Ao.or(me,V.Jy.inPeekEditor),handler(e){be(e,(e=>{e.changeFocusBetweenPreviewAndReferences()}))}}),he.W.registerCommandAndKeybindingRule({id:"goToNextReference",weight:90,primary:62,secondary:[70],when:l.Ao.or(me,V.Jy.inPeekEditor),handler(e){be(e,(e=>{e.goToNextOrPreviousReference(!0)}))}}),he.W.registerCommandAndKeybindingRule({id:"goToPreviousReference",weight:90,primary:1086,secondary:[1094],when:l.Ao.or(me,V.Jy.inPeekEditor),handler(e){be(e,(e=>{e.goToNextOrPreviousReference(!1)}))}}),ge.P.registerCommandAlias("goToNextReferenceFromEmbeddedEditor","goToNextReference"),ge.P.registerCommandAlias("goToPreviousReferenceFromEmbeddedEditor","goToPreviousReference"),ge.P.registerCommandAlias("closeReferenceSearchEditor","closeReferenceSearch"),ge.P.registerCommand("closeReferenceSearch",(e=>be(e,(e=>e.closeWidget())))),he.W.registerKeybindingRule({id:"closeReferenceSearch",weight:-1,primary:9,secondary:[1033],when:l.Ao.and(V.Jy.inPeekEditor,l.Ao.not("config.editor.stablePeek"))}),he.W.registerKeybindingRule({id:"closeReferenceSearch",weight:250,primary:9,secondary:[1033],when:l.Ao.and(me,l.Ao.not("config.editor.stablePeek"))}),he.W.registerCommandAndKeybindingRule({id:"revealReference",weight:200,primary:3,mac:{primary:3,secondary:[2066]},when:l.Ao.and(me,H.CQ),handler(e){var t;const i=null===(t=e.get(H.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(i)&&i[0]instanceof h.WX&&be(e,(e=>e.revealReference(i[0])))}}),he.W.registerCommandAndKeybindingRule({id:"openReferenceToSide",weight:100,primary:2051,mac:{primary:259},when:l.Ao.and(me,H.CQ),handler(e){var t;const i=null===(t=e.get(H.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(i)&&i[0]instanceof h.WX&&be(e,(e=>e.openReference(i[0],!0)))}}),ge.P.registerCommand("openReference",(e=>{var t;const i=null===(t=e.get(H.Lw).lastFocusedList)||void 0===t?void 0:t.getFocus();Array.isArray(i)&&i[0]instanceof h.WX&&be(e,(e=>e.openReference(i[0],!1)))}))},71455:(e,t,i)=>{"use strict";i.d(t,{WX:()=>u,F2:()=>f,oQ:()=>p});var n=i(63580),r=i(4669),s=i(95935),o=i(5976),a=i(97295),l=i(44742),c=i(24314),d=i(43702),h=i(17301);class u{constructor(e,t,i,n,r){this.isProviderFirst=e,this.parent=t,this.uri=i,this._range=n,this._rangeCallback=r,this.id=l.a.nextId()}get range(){return this._range}set range(e){this._range=e,this._rangeCallback(this)}get ariaMessage(){return(0,n.N)("aria.oneReference","symbol in {0} on line {1} at column {2}",(0,s.EZ)(this.uri),this.range.startLineNumber,this.range.startColumn)}}class g{constructor(e){this._modelReference=e}dispose(){this._modelReference.dispose()}preview(e,t=8){const i=this._modelReference.object.textEditorModel;if(!i)return;const{startLineNumber:n,startColumn:r,endLineNumber:s,endColumn:o}=e,a=i.getWordUntilPosition({lineNumber:n,column:r-t}),l=new c.e(n,a.startColumn,n,r),d=new c.e(s,o,s,1073741824),h=i.getValueInRange(l).replace(/^\s+/,""),u=i.getValueInRange(e);return{value:h+u+i.getValueInRange(d).replace(/\s+$/,""),highlight:{start:h.length,end:h.length+u.length}}}}class f{constructor(e,t){this.parent=e,this.uri=t,this.children=[],this._previews=new d.Y9}dispose(){(0,o.B9)(this._previews.values()),this._previews.clear()}getPreview(e){return this._previews.get(e.uri)}get ariaMessage(){const e=this.children.length;return 1===e?(0,n.N)("aria.fileReferences.1","1 symbol in {0}, full path {1}",(0,s.EZ)(this.uri),this.uri.fsPath):(0,n.N)("aria.fileReferences.N","{0} symbols in {1}, full path {2}",e,(0,s.EZ)(this.uri),this.uri.fsPath)}resolve(e){return t=this,i=void 0,r=function*(){if(0!==this._previews.size)return this;for(let t of this.children)if(!this._previews.has(t.uri))try{const i=yield e.createModelReference(t.uri);this._previews.set(t.uri,new g(i))}catch(e){(0,h.dL)(e)}return this},new((n=void 0)||(n=Promise))((function(e,s){function o(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof n?i:new n((function(e){e(i)}))).then(o,a)}l((r=r.apply(t,i||[])).next())}));var t,i,n,r}}class p{constructor(e,t){this._disposables=new o.SL,this.groups=[],this.references=[],this._onDidChangeReferenceRange=new r.Q5,this.onDidChangeReferenceRange=this._onDidChangeReferenceRange.event,this._links=e,this._title=t;const[i]=e;let n;e.sort(p._compareReferences);for(let t of e)if(n&&s.SF.isEqual(n.uri,t.uri,!0)||(n=new f(this,t.uri),this.groups.push(n)),0===n.children.length||0!==p._compareReferences(t,n.children[n.children.length-1])){const e=new u(i===t,n,t.uri,t.targetSelectionRange||t.range,(e=>this._onDidChangeReferenceRange.fire(e)));this.references.push(e),n.children.push(e)}}dispose(){(0,o.B9)(this.groups),this._disposables.dispose(),this._onDidChangeReferenceRange.dispose(),this.groups.length=0}clone(){return new p(this._links,this._title)}get title(){return this._title}get isEmpty(){return 0===this.groups.length}get ariaMessage(){return this.isEmpty?(0,n.N)("aria.result.0","No results found"):1===this.references.length?(0,n.N)("aria.result.1","Found 1 symbol in {0}",this.references[0].uri.fsPath):1===this.groups.length?(0,n.N)("aria.result.n1","Found {0} symbols in {1}",this.references.length,this.groups[0].uri.fsPath):(0,n.N)("aria.result.nm","Found {0} symbols in {1} files",this.references.length,this.groups.length)}nextOrPreviousReference(e,t){let{parent:i}=e,n=i.children.indexOf(e),r=i.children.length,s=i.parent.groups.length;return 1===s||t&&n+1<r||!t&&n>0?(n=t?(n+1)%r:(n+r-1)%r,i.children[n]):(n=i.parent.groups.indexOf(i),t?(n=(n+1)%s,i.parent.groups[n].children[0]):(n=(n+s-1)%s,i.parent.groups[n].children[i.parent.groups[n].children.length-1]))}nearestReference(e,t){const i=this.references.map(((i,n)=>({idx:n,prefixLen:a.Mh(i.uri.toString(),e.toString()),offsetDist:100*Math.abs(i.range.startLineNumber-t.lineNumber)+Math.abs(i.range.startColumn-t.column)}))).sort(((e,t)=>e.prefixLen>t.prefixLen?-1:e.prefixLen<t.prefixLen?1:e.offsetDist<t.offsetDist?-1:e.offsetDist>t.offsetDist?1:0))[0];if(i)return this.references[i.idx]}referenceAt(e,t){for(const i of this.references)if(i.uri.toString()===e.toString()&&c.e.containsPosition(i.range,t))return i}firstReference(){for(const e of this.references)if(e.isProviderFirst)return e;return this.references[0]}static _compareReferences(e,t){return s.SF.compare(e.uri,t.uri)||c.e.compareRangesUsingStarts(e.range,t.range)}}},25217:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ModesHoverController:()=>ue});var n=i(63580),r=i(22258),s=i(5976),o=i(16830),a=i(24314),l=i(29102),c=i(71531),d=i(65321),h=i(71050),u=i(41264),g=i(59365),f=i(50187),p=i(3411),m=i(43775),_=i(83308),b=i(64494),v=i(4669);class y{constructor(e,t,i){this.presentationIndex=i,this._onColorFlushed=new v.Q5,this.onColorFlushed=this._onColorFlushed.event,this._onDidChangeColor=new v.Q5,this.onDidChangeColor=this._onDidChangeColor.event,this._onDidChangePresentation=new v.Q5,this.onDidChangePresentation=this._onDidChangePresentation.event,this.originalColor=e,this._color=e,this._colorPresentations=t}get color(){return this._color}set color(e){this._color.equals(e)||(this._color=e,this._onDidChangeColor.fire(e))}get presentation(){return this.colorPresentations[this.presentationIndex]}get colorPresentations(){return this._colorPresentations}set colorPresentations(e){this._colorPresentations=e,this.presentationIndex>e.length-1&&(this.presentationIndex=0),this._onDidChangePresentation.fire(this.presentation)}selectNextColorPresentation(){this.presentationIndex=(this.presentationIndex+1)%this.colorPresentations.length,this.flushColor(),this._onDidChangePresentation.fire(this.presentation)}guessColorPresentation(e,t){for(let e=0;e<this.colorPresentations.length;e++)if(t.toLowerCase()===this.colorPresentations[e].label){this.presentationIndex=e,this._onDidChangePresentation.fire(this.presentation);break}}flushColor(){this._onColorFlushed.fire(this._color)}}var w=i(16268),C=i(57974),S=i(93794),k=i(73910),x=i(97781);const L=d.$;class M extends s.JT{constructor(e,t,i){super(),this.model=t,this.domNode=L(".colorpicker-header"),d.R3(e,this.domNode),this.pickedColorNode=d.R3(this.domNode,L(".picked-color"));const n=d.R3(this.domNode,L(".original-color"));n.style.backgroundColor=u.Il.Format.CSS.format(this.model.originalColor)||"",this.backgroundColor=i.getColorTheme().getColor(k.yJ)||u.Il.white,this._register((0,x.Ic)(((e,t)=>{this.backgroundColor=e.getColor(k.yJ)||u.Il.white}))),this._register(d.nm(this.pickedColorNode,d.tw.CLICK,(()=>this.model.selectNextColorPresentation()))),this._register(d.nm(n,d.tw.CLICK,(()=>{this.model.color=this.model.originalColor,this.model.flushColor()}))),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this._register(t.onDidChangePresentation(this.onDidChangePresentation,this)),this.pickedColorNode.style.backgroundColor=u.Il.Format.CSS.format(t.color)||"",d.og(this.pickedColorNode,"light",t.color.rgba.a<.5?this.backgroundColor.isLighter():t.color.isLighter())}onDidChangeColor(e){this.pickedColorNode.style.backgroundColor=u.Il.Format.CSS.format(e)||"",d.og(this.pickedColorNode,"light",e.rgba.a<.5?this.backgroundColor.isLighter():e.isLighter()),this.onDidChangePresentation()}onDidChangePresentation(){this.pickedColorNode.textContent=this.model.presentation?this.model.presentation.label:""}}class D extends s.JT{constructor(e,t,i){super(),this.model=t,this.pixelRatio=i,this.domNode=L(".colorpicker-body"),d.R3(e,this.domNode),this.saturationBox=new N(this.domNode,this.model,this.pixelRatio),this._register(this.saturationBox),this._register(this.saturationBox.onDidChange(this.onDidSaturationValueChange,this)),this._register(this.saturationBox.onColorFlushed(this.flushColor,this)),this.opacityStrip=new T(this.domNode,this.model),this._register(this.opacityStrip),this._register(this.opacityStrip.onDidChange(this.onDidOpacityChange,this)),this._register(this.opacityStrip.onColorFlushed(this.flushColor,this)),this.hueStrip=new I(this.domNode,this.model),this._register(this.hueStrip),this._register(this.hueStrip.onDidChange(this.onDidHueChange,this)),this._register(this.hueStrip.onColorFlushed(this.flushColor,this))}flushColor(){this.model.flushColor()}onDidSaturationValueChange({s:e,v:t}){const i=this.model.color.hsva;this.model.color=new u.Il(new u.tx(i.h,e,t,i.a))}onDidOpacityChange(e){const t=this.model.color.hsva;this.model.color=new u.Il(new u.tx(t.h,t.s,t.v,e))}onDidHueChange(e){const t=this.model.color.hsva,i=360*(1-e);this.model.color=new u.Il(new u.tx(360===i?0:i,t.s,t.v,t.a))}layout(){this.saturationBox.layout(),this.opacityStrip.layout(),this.hueStrip.layout()}}class N extends s.JT{constructor(e,t,i){super(),this.model=t,this.pixelRatio=i,this._onDidChange=new v.Q5,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new v.Q5,this.onColorFlushed=this._onColorFlushed.event,this.domNode=L(".saturation-wrap"),d.R3(e,this.domNode),this.canvas=document.createElement("canvas"),this.canvas.className="saturation-box",d.R3(this.domNode,this.canvas),this.selection=L(".saturation-selection"),d.R3(this.domNode,this.selection),this.layout(),this._register(d.Lo(this.domNode,(e=>this.onMouseDown(e)))),this._register(this.model.onDidChangeColor(this.onDidChangeColor,this)),this.monitor=null}onMouseDown(e){this.monitor=this._register(new C.Z);const t=d.i(this.domNode);e.target!==this.selection&&this.onDidChangePosition(e.offsetX,e.offsetY),this.monitor.startMonitoring(e.target,e.buttons,C.e,(e=>this.onDidChangePosition(e.posx-t.left,e.posy-t.top)),(()=>null));const i=d.qV(document,(()=>{this._onColorFlushed.fire(),i.dispose(),this.monitor&&(this.monitor.stopMonitoring(!0),this.monitor=null)}),!0)}onDidChangePosition(e,t){const i=Math.max(0,Math.min(1,e/this.width)),n=Math.max(0,Math.min(1,1-t/this.height));this.paintSelection(i,n),this._onDidChange.fire({s:i,v:n})}layout(){this.width=this.domNode.offsetWidth,this.height=this.domNode.offsetHeight,this.canvas.width=this.width*this.pixelRatio,this.canvas.height=this.height*this.pixelRatio,this.paint();const e=this.model.color.hsva;this.paintSelection(e.s,e.v)}paint(){const e=this.model.color.hsva,t=new u.Il(new u.tx(e.h,1,1,1)),i=this.canvas.getContext("2d"),n=i.createLinearGradient(0,0,this.canvas.width,0);n.addColorStop(0,"rgba(255, 255, 255, 1)"),n.addColorStop(.5,"rgba(255, 255, 255, 0.5)"),n.addColorStop(1,"rgba(255, 255, 255, 0)");const r=i.createLinearGradient(0,0,0,this.canvas.height);r.addColorStop(0,"rgba(0, 0, 0, 0)"),r.addColorStop(1,"rgba(0, 0, 0, 1)"),i.rect(0,0,this.canvas.width,this.canvas.height),i.fillStyle=u.Il.Format.CSS.format(t),i.fill(),i.fillStyle=n,i.fill(),i.fillStyle=r,i.fill()}paintSelection(e,t){this.selection.style.left=e*this.width+"px",this.selection.style.top=this.height-t*this.height+"px"}onDidChangeColor(){this.monitor&&this.monitor.isMonitoring()||this.paint()}}class E extends s.JT{constructor(e,t){super(),this.model=t,this._onDidChange=new v.Q5,this.onDidChange=this._onDidChange.event,this._onColorFlushed=new v.Q5,this.onColorFlushed=this._onColorFlushed.event,this.domNode=d.R3(e,L(".strip")),this.overlay=d.R3(this.domNode,L(".overlay")),this.slider=d.R3(this.domNode,L(".slider")),this.slider.style.top="0px",this._register(d.Lo(this.domNode,(e=>this.onMouseDown(e)))),this.layout()}layout(){this.height=this.domNode.offsetHeight-this.slider.offsetHeight;const e=this.getValue(this.model.color);this.updateSliderPosition(e)}onMouseDown(e){const t=this._register(new C.Z),i=d.i(this.domNode);d.cn(this.domNode,"grabbing"),e.target!==this.slider&&this.onDidChangeTop(e.offsetY),t.startMonitoring(e.target,e.buttons,C.e,(e=>this.onDidChangeTop(e.posy-i.top)),(()=>null));const n=d.qV(document,(()=>{this._onColorFlushed.fire(),n.dispose(),t.stopMonitoring(!0),d.IV(this.domNode,"grabbing")}),!0)}onDidChangeTop(e){const t=Math.max(0,Math.min(1,1-e/this.height));this.updateSliderPosition(t),this._onDidChange.fire(t)}updateSliderPosition(e){this.slider.style.top=(1-e)*this.height+"px"}}class T extends E{constructor(e,t){super(e,t),d.cn(this.domNode,"opacity-strip"),this._register(t.onDidChangeColor(this.onDidChangeColor,this)),this.onDidChangeColor(this.model.color)}onDidChangeColor(e){const{r:t,g:i,b:n}=e.rgba,r=new u.Il(new u.VS(t,i,n,1)),s=new u.Il(new u.VS(t,i,n,0));this.overlay.style.background=`linear-gradient(to bottom, ${r} 0%, ${s} 100%)`}getValue(e){return e.hsva.a}}class I extends E{constructor(e,t){super(e,t),d.cn(this.domNode,"hue-strip")}getValue(e){return 1-e.hsva.h/360}}class O extends S.${constructor(e,t,i,n){super(),this.model=t,this.pixelRatio=i,this._register((0,w.fX)((()=>this.layout())));const r=L(".colorpicker-widget");e.appendChild(r);const s=new M(r,this.model,n);this.body=new D(r,this.model,this.pixelRatio),this._register(s),this._register(this.body)}layout(){this.body.layout()}}var A=i(9488),R=i(17301);function P(e,t,i){const n=m.xp.ordered(e).map((n=>Promise.resolve(n.provideHover(e,t,i)).then((e=>e&&function(e){const t=void 0!==e.range,i=void 0!==e.contents&&e.contents&&e.contents.length>0;return t&&i}(e)?e:void 0),(e=>{(0,R.Cp)(e)}))));return Promise.all(n).then(A.kX)}(0,o.sb)("_executeHoverProvider",((e,t)=>P(e,t,h.T.None)));var F=i(15393);class B{constructor(e,t,i,n,r){this._computer=e,this._state=0,this._hoverTime=r,this._firstWaitScheduler=new F.pY((()=>this._triggerAsyncComputation()),0),this._secondWaitScheduler=new F.pY((()=>this._triggerSyncComputation()),0),this._loadingMessageScheduler=new F.pY((()=>this._showLoadingMessage()),0),this._asyncComputationPromise=null,this._asyncComputationPromiseDone=!1,this._completeCallback=t,this._errorCallback=i,this._progressCallback=n}setHoverTime(e){this._hoverTime=e}_firstWaitTime(){return this._hoverTime/2}_secondWaitTime(){return this._hoverTime/2}_loadingMessageTime(){return 3*this._hoverTime}_triggerAsyncComputation(){this._state=2,this._secondWaitScheduler.schedule(this._secondWaitTime()),this._computer.computeAsync?(this._asyncComputationPromiseDone=!1,this._asyncComputationPromise=(0,F.PG)((e=>this._computer.computeAsync(e))),this._asyncComputationPromise.then((e=>{this._asyncComputationPromiseDone=!0,this._withAsyncResult(e)}),(e=>this._onError(e)))):this._asyncComputationPromiseDone=!0}_triggerSyncComputation(){this._computer.computeSync&&this._computer.onResult(this._computer.computeSync(),!0),this._asyncComputationPromiseDone?(this._state=0,this._onComplete(this._computer.getResult())):(this._state=3,this._onProgress(this._computer.getResult()))}_showLoadingMessage(){3===this._state&&this._onProgress(this._computer.getResultWithLoadingMessage())}_withAsyncResult(e){e&&this._computer.onResult(e,!1),3===this._state&&(this._state=0,this._onComplete(this._computer.getResult()))}_onComplete(e){this._completeCallback(e)}_onError(e){this._errorCallback?this._errorCallback(e):(0,R.dL)(e)}_onProgress(e){this._progressCallback(e)}start(e){if(0===e)0===this._state&&(this._state=1,this._firstWaitScheduler.schedule(this._firstWaitTime()),this._loadingMessageScheduler.schedule(this._loadingMessageTime()));else switch(this._state){case 0:this._triggerAsyncComputation(),this._secondWaitScheduler.cancel(),this._triggerSyncComputation();break;case 2:this._secondWaitScheduler.cancel(),this._triggerSyncComputation()}}cancel(){this._loadingMessageScheduler.cancel(),1===this._state&&this._firstWaitScheduler.cancel(),2===this._state&&(this._secondWaitScheduler.cancel(),this._asyncComputationPromise&&(this._asyncComputationPromise.cancel(),this._asyncComputationPromise=null)),3===this._state&&this._asyncComputationPromise&&(this._asyncComputationPromise.cancel(),this._asyncComputationPromise=null),this._state=0}}var W=i(9802);const Y=d.$;class H extends s.JT{constructor(){super(),this.containerDomNode=document.createElement("div"),this.containerDomNode.className="monaco-hover",this.containerDomNode.tabIndex=0,this.containerDomNode.setAttribute("role","tooltip"),this.contentsDomNode=document.createElement("div"),this.contentsDomNode.className="monaco-hover-content",this._scrollbar=this._register(new W.s$(this.contentsDomNode,{})),this.containerDomNode.appendChild(this._scrollbar.getDomNode())}onContentsChanged(){this._scrollbar.scanDomNode()}}class j extends S.${constructor(e,t,i,n){super(),this._hoverVisibleKey=i,this._keybindingService=n,this.allowEditorOverflow=!0,this._hover=this._register(new H),this._id=e,this._editor=t,this._isVisible=!1,this._stoleFocus=!1,this.onkeydown(this._hover.containerDomNode,(e=>{e.equals(9)&&this.hide()})),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(36)&&this.updateFont()}))),this._editor.onDidLayoutChange((e=>this.layout())),this.layout(),this._editor.addContentWidget(this),this._showAtPosition=null,this._showAtRange=null,this._stoleFocus=!1}get isVisible(){return this._isVisible}set isVisible(e){this._isVisible=e,d.og(this._hover.containerDomNode,"hidden",!this._isVisible)}getId(){return this._id}getDomNode(){return this._hover.containerDomNode}showAt(e,t,i){this._showAtPosition=e,this._showAtRange=t,this._hoverVisibleKey.set(!0),this.isVisible=!0,this._editor.layoutContentWidget(this),this._editor.render(),this._stoleFocus=i,i&&this._hover.containerDomNode.focus()}hide(){this.isVisible&&(setTimeout((()=>{this.isVisible||this._hoverVisibleKey.set(!1)}),0),this.isVisible=!1,this._editor.layoutContentWidget(this),this._stoleFocus&&this._editor.focus())}getPosition(){return this.isVisible?{position:this._showAtPosition,range:this._showAtRange,preference:[1,2]}:null}dispose(){this._editor.removeContentWidget(this),super.dispose()}updateFont(){Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName("code")).forEach((e=>this._editor.applyFontInfo(e)))}updateContents(e){this._hover.contentsDomNode.textContent="",this._hover.contentsDomNode.appendChild(e),this.updateFont(),this._editor.layoutContentWidget(this),this._hover.onContentsChanged()}_renderAction(e,t){const i=this._keybindingService.lookupKeybinding(t.commandId);return function(e,t,i){const n=d.R3(e,Y("div.action-container")),r=d.R3(n,Y("a.action"));return r.setAttribute("href","#"),r.setAttribute("role","button"),t.iconClass&&d.R3(r,Y(`span.icon.${t.iconClass}`)),d.R3(r,Y("span")).textContent=i?`${t.label} (${i})`:t.label,d.nm(n,d.tw.CLICK,(e=>{e.stopPropagation(),e.preventDefault(),t.run(n)}))}(e,t,i?i.getLabel():null)}layout(){const e=Math.max(this._editor.getLayoutInfo().height/4,250),{fontSize:t,lineHeight:i}=this._editor.getOption(36);this._hover.contentsDomNode.style.fontSize=`${t}px`,this._hover.contentsDomNode.style.lineHeight=`${i}px`,this._hover.contentsDomNode.style.maxHeight=`${e}px`,this._hover.contentsDomNode.style.maxWidth=`${Math.max(.66*this._editor.getLayoutInfo().width,500)}px`}}class V extends S.${constructor(e,t){super(),this._id=e,this._editor=t,this._isVisible=!1,this._domNode=document.createElement("div"),this._domNode.className="monaco-hover hidden",this._domNode.setAttribute("aria-hidden","true"),this._domNode.setAttribute("role","tooltip"),this._showAtLineNumber=-1,this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(36)&&this.updateFont()}))),this._editor.addOverlayWidget(this)}get isVisible(){return this._isVisible}set isVisible(e){this._isVisible=e,d.og(this._domNode,"hidden",!this._isVisible)}getId(){return this._id}getDomNode(){return this._domNode}showAt(e){this._showAtLineNumber=e,this.isVisible||(this.isVisible=!0);const t=this._editor.getLayoutInfo(),i=this._editor.getTopForLineNumber(this._showAtLineNumber),n=this._editor.getScrollTop(),r=this._editor.getOption(51),s=i-n-(this._domNode.clientHeight-r)/2;this._domNode.style.left=`${t.glyphMarginLeft+t.glyphMarginWidth}px`,this._domNode.style.top=`${Math.max(Math.round(s),0)}px`}hide(){this.isVisible&&(this.isVisible=!1)}getPosition(){return null}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}updateFont(){[...Array.prototype.slice.call(this._domNode.getElementsByTagName("code")),...Array.prototype.slice.call(this._domNode.getElementsByClassName("code"))].forEach((e=>this._editor.applyFontInfo(e)))}updateContents(e){this._domNode.textContent="",this._domNode.appendChild(e),this.updateFont()}}var z=i(53335),U=i(98674),$=i(95935),K=i(50988),q=i(42698),G=i(31907),Z=i(23674),J=i(89532),Q=i(90535);const X=d.$;class ee{constructor(e,t,i){this.range=e,this.color=t,this.provider=i}}class te{constructor(e,t){this.range=e,this.marker=t}}class ie{constructor(e,t){this._markerDecorationsService=t,this._editor=e,this._result=[]}setRange(e){this._range=e,this._result=[]}clearResult(){this._result=[]}computeAsync(e){if(!this._editor.hasModel()||!this._range)return Promise.resolve([]);const t=this._editor.getModel();return m.xp.has(t)?P(t,new f.L(this._range.startLineNumber,this._range.startColumn),e):Promise.resolve([])}computeSync(){if(!this._editor.hasModel()||!this._range)return[];const e=this._editor.getModel(),t=this._range.startLineNumber;if(t>this._editor.getModel().getLineCount())return[];const i=b.ColorDetector.get(this._editor),n=e.getLineMaxColumn(t),r=this._editor.getLineDecorations(t);let s=!1;const o=this._range,l=r.map((r=>{const l=r.range.startLineNumber===t?r.range.startColumn:1,c=r.range.endLineNumber===t?r.range.endColumn:n;if(l>o.startColumn||o.endColumn>c)return null;const d=new a.e(o.startLineNumber,l,o.startLineNumber,c),h=this._markerDecorationsService.getMarker(e,r);if(h)return new te(d,h);const u=i.getColorData(r.range.getStartPosition());if(!s&&u){s=!0;const{color:e,range:t}=u.colorInfo;return new ee(t,e,u.provider)}return(0,g.CP)(r.options.hoverMessage)?null:{contents:r.options.hoverMessage?(0,A._2)(r.options.hoverMessage):[],range:d}}));return(0,A.kX)(l)}onResult(e,t){this._result=t?e.concat(this._result.sort(((e,t)=>e instanceof ee?-1:t instanceof ee?1:0))):this._result.concat(e)}getResult(){return this._result.slice(0)}getResultWithLoadingMessage(){return this._result.slice(0).concat([this._getLoadingMessage()])}_getLoadingMessage(){return{range:this._range,contents:[(new g.W5).appendText(n.N("modesContentHover.loading","Loading..."))]}}}const ne={type:2,filter:{include:J.yN.QuickFix}};class re extends j{constructor(e,t,i,n,r,o,a=K.SW){super(re.ID,e,t,n),this._themeService=r,this._modeService=o,this._openerService=a,this.renderDisposable=this._register(new s.XK),this._messages=[],this._lastRange=null,this._computer=new ie(this._editor,i),this._highlightDecorations=[],this._isChangingDecorations=!1,this._shouldFocus=!1,this._colorPicker=null,this._hoverOperation=new B(this._computer,(e=>this._withResult(e,!0)),null,(e=>this._withResult(e,!1)),this._editor.getOption(46).delay),this._register(d.mu(this.getDomNode(),d.tw.FOCUS,(()=>{this._colorPicker&&d.cn(this.getDomNode(),"colorpicker-hover")}))),this._register(d.mu(this.getDomNode(),d.tw.BLUR,(()=>{d.IV(this.getDomNode(),"colorpicker-hover")}))),this._register(e.onDidChangeConfiguration((e=>{this._hoverOperation.setHoverTime(this._editor.getOption(46).delay)}))),this._register(m.RW.onDidChange((e=>{this.isVisible&&this._lastRange&&this._messages.length>0&&(this._hover.contentsDomNode.textContent="",this._renderMessages(this._lastRange,this._messages))})))}dispose(){this._hoverOperation.cancel(),super.dispose()}onModelDecorationsChanged(){this._isChangingDecorations||this.isVisible&&(this._hoverOperation.cancel(),this._computer.clearResult(),this._colorPicker||this._hoverOperation.start(0))}startShowingAt(e,t,i){if(!this._lastRange||!this._lastRange.equalsRange(e)){if(this._hoverOperation.cancel(),this.isVisible)if(this._showAtPosition&&this._showAtPosition.lineNumber===e.startLineNumber){let t=[];for(let i=0,n=this._messages.length;i<n;i++){const n=this._messages[i],r=n.range;r&&r.startColumn<=e.startColumn&&r.endColumn>=e.endColumn&&t.push(n)}if(t.length>0){if(function(e,t){if(!e&&t||e&&!t||e.length!==t.length)return!1;for(let i=0;i<e.length;i++){const n=e[i],r=t[i];if(n instanceof te&&r instanceof te)return U.H0.makeKey(n.marker)===U.H0.makeKey(r.marker);if(n instanceof ee||r instanceof ee)return!1;if(n instanceof te||r instanceof te)return!1;if(!(0,g.W6)(n.contents,r.contents))return!1}return!0}(t,this._messages))return;this._renderMessages(e,t)}else this.hide()}else this.hide();this._lastRange=e,this._computer.setRange(e),this._shouldFocus=i,this._hoverOperation.start(t)}}hide(){this._lastRange=null,this._hoverOperation.cancel(),super.hide(),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,[]),this._isChangingDecorations=!1,this.renderDisposable.clear(),this._colorPicker=null}isColorPickerVisible(){return!!this._colorPicker}_withResult(e,t){this._messages=e,this._lastRange&&this._messages.length>0?this._renderMessages(this._lastRange,this._messages):t&&this.hide()}_renderMessages(e,t){this.renderDisposable.dispose(),this._colorPicker=null;let i=1073741824,n=t[0].range?a.e.lift(t[0].range):null,r=document.createDocumentFragment(),o=!0,l=!1;const c=new s.SL,p=[];if(t.forEach((e=>{if(e.range)if(i=Math.min(i,e.range.startColumn),n=n?a.e.plusRange(n,e.range):a.e.lift(e.range),e instanceof ee){l=!0;const{red:t,green:i,blue:n,alpha:o}=e.color,d=new u.VS(Math.round(255*t),Math.round(255*i),Math.round(255*n),o),g=new u.Il(d);if(!this._editor.hasModel())return;const f=this._editor.getModel();let p=new a.e(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn),m={range:e.range,color:e.color};const b=new y(g,[],0),v=new O(r,b,this._editor.getOption(115),this._themeService);(0,_.R)(f,m,e.provider,h.T.None).then((t=>{if(b.colorPresentations=t||[],!this._editor.hasModel())return;const i=this._editor.getModel().getValueInRange(e.range);b.guessColorPresentation(g,i);const n=()=>{let e,t;b.presentation.textEdit?(e=[b.presentation.textEdit],t=new a.e(b.presentation.textEdit.range.startLineNumber,b.presentation.textEdit.range.startColumn,b.presentation.textEdit.range.endLineNumber,b.presentation.textEdit.range.endColumn),t=t.setEndPosition(t.endLineNumber,t.startColumn+b.presentation.textEdit.text.length)):(e=[{identifier:null,range:p,text:b.presentation.label,forceMoveMarkers:!1}],t=p.setEndPosition(p.endLineNumber,p.startColumn+b.presentation.label.length)),this._editor.pushUndoStop(),this._editor.executeEdits("colorpicker",e),b.presentation.additionalTextEdits&&(e=[...b.presentation.additionalTextEdits],this._editor.executeEdits("colorpicker",e),this.hide()),this._editor.pushUndoStop(),p=t},o=t=>(0,_.R)(f,{range:p,color:{red:t.rgba.r/255,green:t.rgba.g/255,blue:t.rgba.b/255,alpha:t.rgba.a}},e.provider,h.T.None).then((e=>{b.colorPresentations=e||[]})),l=b.onColorFlushed((e=>{o(e).then(n)})),d=b.onDidChangeColor(o);this._colorPicker=v,this.showAt(p.getStartPosition(),p,this._shouldFocus),this.updateContents(r),this._colorPicker.layout(),this.renderDisposable.value=(0,s.F8)(l,d,v,c)}))}else e instanceof te?(p.push(e),o=!1):e.contents.filter((e=>!(0,g.CP)(e))).forEach((e=>{const t=X("div.hover-row.markdown-hover"),i=d.R3(t,X("div.hover-contents")),n=c.add(new z.$(this._editor,this._modeService,this._openerService));c.add(n.onDidRenderCodeBlock((()=>{i.className="hover-contents code-hover-contents",this._hover.onContentsChanged()})));const s=c.add(n.render(e));i.appendChild(s.element),r.appendChild(t),o=!1}))})),p.length){p.forEach((e=>r.appendChild(this.renderMarkerHover(e))));const e=1===p.length?p[0]:p.sort(((e,t)=>U.ZL.compare(e.marker.severity,t.marker.severity)))[0];r.appendChild(this.renderMarkerStatusbar(e))}l||o||(this.showAt(new f.L(e.startLineNumber,i),n,this._shouldFocus),this.updateContents(r)),this._isChangingDecorations=!0,this._highlightDecorations=this._editor.deltaDecorations(this._highlightDecorations,n?[{range:n,options:re._DECORATION_OPTIONS}]:[]),this._isChangingDecorations=!1}renderMarkerHover(e){const t=X("div.hover-row"),i=d.R3(t,X("div.marker.hover-contents")),{source:n,message:r,code:s,relatedInformation:o}=e.marker;this._editor.applyFontInfo(i);const a=d.R3(i,X("span"));if(a.style.whiteSpace="pre-wrap",a.innerText=r,n||s)if(s&&"string"!=typeof s){const e=X("span");n&&(d.R3(e,X("span")).innerText=n),this._codeLink=d.R3(e,X("a.code-link")),this._codeLink.setAttribute("href",s.target.toString()),this._codeLink.onclick=e=>{this._openerService.open(s.target),e.preventDefault(),e.stopPropagation()},d.R3(this._codeLink,X("span")).innerText=s.value;const t=d.R3(i,e);t.style.opacity="0.6",t.style.paddingLeft="6px"}else{const e=d.R3(i,X("span"));e.style.opacity="0.6",e.style.paddingLeft="6px",e.innerText=n&&s?`${n}(${s})`:n||`(${s})`}if((0,A.Of)(o))for(const{message:e,resource:t,startLineNumber:n,startColumn:r}of o){const s=d.R3(i,X("div"));s.style.marginTop="8px";const o=d.R3(s,X("a"));o.innerText=`${(0,$.EZ)(t)}(${n}, ${r}): `,o.style.cursor="pointer",o.onclick=e=>{e.stopPropagation(),e.preventDefault(),this._openerService&&this._openerService.open(t.with({fragment:`${n},${r}`}),{fromUserGesture:!0}).catch(R.dL)};const a=d.R3(s,X("span"));a.innerText=e,this._editor.applyFontInfo(a)}return t}renderMarkerStatusbar(e){const t=X("div.hover-row.status-bar"),i=new s.SL,r=d.R3(t,X("div.actions"));if(e.marker.severity!==U.ZL.Error&&e.marker.severity!==U.ZL.Warning&&e.marker.severity!==U.ZL.Info||i.add(this._renderAction(r,{label:n.N("peek problem","Peek Problem"),commandId:q.NextMarkerAction.ID,run:()=>{this.hide(),q.MarkerController.get(this._editor).showAtMarker(e.marker),this._editor.focus()}})),!this._editor.getOption(72)){const t=d.R3(r,X("div"));t.style.opacity="0",t.style.transition="opacity 0.2s",setTimeout((()=>t.style.opacity="1"),200),t.textContent=n.N("checkingForQuickFixes","Checking for quick fixes..."),i.add((0,s.OF)((()=>t.remove())));const o=this.getCodeActions(e.marker);i.add((0,s.OF)((()=>o.cancel()))),o.then((e=>{if(t.style.transition="",t.style.opacity="1",!e.validActions.length)return e.dispose(),void(t.textContent=n.N("noQuickFixes","No quick fixes available"));t.remove();let o=!1;i.add((0,s.OF)((()=>{o||e.dispose()}))),i.add(this._renderAction(r,{label:n.N("quick fixes","Quick Fix..."),commandId:Z.E7.Id,run:t=>{o=!0;const i=Z.pY.get(this._editor),n=d.i(t);this.hide(),i.showCodeActions(ne,e,{x:n.left+6,y:n.top+n.height+6})}}))}))}return this.renderDisposable.value=i,t}getCodeActions(e){return(0,F.PG)((t=>(0,G.aI)(this._editor.getModel(),new a.e(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn),ne,Q.E.None,t)))}}re.ID="editor.contrib.modesContentHoverWidget",re._DECORATION_OPTIONS=p.qx.register({className:"hoverHighlight"}),(0,x.Ic)(((e,t)=>{const i=e.getColor(k.ur);i&&t.addRule(`.monaco-hover .hover-contents a.code-link span:hover { color: ${i}; }`)}));class se{constructor(e){this._editor=e,this._lineNumber=-1,this._result=[]}setLineNumber(e){this._lineNumber=e,this._result=[]}clearResult(){this._result=[]}computeSync(){const e=e=>({value:e}),t=this._editor.getLineDecorations(this._lineNumber),i=[];if(!t)return i;for(const n of t){if(!n.options.glyphMarginClassName)continue;const t=n.options.glyphMarginHoverMessage;t&&!(0,g.CP)(t)&&i.push(...(0,A._2)(t).map(e))}return i}onResult(e,t){this._result=this._result.concat(e)}getResult(){return this._result}getResultWithLoadingMessage(){return this.getResult()}}class oe extends V{constructor(e,t,i=K.SW){super(oe.ID,e),this._renderDisposeables=this._register(new s.SL),this._messages=[],this._lastLineNumber=-1,this._markdownRenderer=this._register(new z.$(this._editor,t,i)),this._computer=new se(this._editor),this._hoverOperation=new B(this._computer,(e=>this._withResult(e)),void 0,(e=>this._withResult(e)),300)}dispose(){this._hoverOperation.cancel(),super.dispose()}onModelDecorationsChanged(){this.isVisible&&(this._hoverOperation.cancel(),this._computer.clearResult(),this._hoverOperation.start(0))}startShowingAt(e){this._lastLineNumber!==e&&(this._hoverOperation.cancel(),this.hide(),this._lastLineNumber=e,this._computer.setLineNumber(e),this._hoverOperation.start(0))}hide(){this._lastLineNumber=-1,this._hoverOperation.cancel(),super.hide()}_withResult(e){this._messages=e,this._messages.length>0?this._renderMessages(this._lastLineNumber,this._messages):this.hide()}_renderMessages(e,t){this._renderDisposeables.clear();const i=document.createDocumentFragment();for(const e of t){const t=this._markdownRenderer.render(e.value);this._renderDisposeables.add(t),i.appendChild((0,d.$)("div.hover-row",void 0,t.element))}this.updateContents(i),this.showAt(e)}}oe.ID="editor.contrib.modesGlyphHoverWidget";var ae=i(26479),le=i(91847),ce=i(10365),de=i(38819),he=function(e,t){return function(i,n){t(i,n,e)}};let ue=class e{constructor(e,t,i,n,r,o,a){this._editor=e,this._openerService=t,this._modeService=i,this._markerDecorationsService=n,this._keybindingService=r,this._themeService=o,this._toUnhook=new s.SL,this._contentWidget=new s.XK,this._glyphWidget=new s.XK,this._isMouseDown=!1,this._hoverClicked=!1,this._hookEvents(),this._didChangeConfigurationHandler=this._editor.onDidChangeConfiguration((e=>{e.hasChanged(46)&&(this._hideWidgets(),this._unhookEvents(),this._hookEvents())})),this._hoverVisibleKey=l.u.hoverVisible.bindTo(a)}get contentWidget(){return this._contentWidget.value||this._createHoverWidgets(),this._contentWidget.value}get glyphWidget(){return this._glyphWidget.value||this._createHoverWidgets(),this._glyphWidget.value}static get(t){return t.getContribution(e.ID)}_hookEvents(){const e=()=>this._hideWidgets(),t=this._editor.getOption(46);this._isHoverEnabled=t.enabled,this._isHoverSticky=t.sticky,this._isHoverEnabled?(this._toUnhook.add(this._editor.onMouseDown((e=>this._onEditorMouseDown(e)))),this._toUnhook.add(this._editor.onMouseUp((e=>this._onEditorMouseUp(e)))),this._toUnhook.add(this._editor.onMouseMove((e=>this._onEditorMouseMove(e)))),this._toUnhook.add(this._editor.onKeyDown((e=>this._onKeyDown(e)))),this._toUnhook.add(this._editor.onDidChangeModelDecorations((()=>this._onModelDecorationsChanged())))):(this._toUnhook.add(this._editor.onMouseMove(e)),this._toUnhook.add(this._editor.onKeyDown((e=>this._onKeyDown(e))))),this._toUnhook.add(this._editor.onMouseLeave(e)),this._toUnhook.add(this._editor.onDidChangeModel(e)),this._toUnhook.add(this._editor.onDidScrollChange((e=>this._onEditorScrollChanged(e))))}_unhookEvents(){this._toUnhook.clear()}_onModelDecorationsChanged(){this.contentWidget.onModelDecorationsChanged(),this.glyphWidget.onModelDecorationsChanged()}_onEditorScrollChanged(e){(e.scrollTopChanged||e.scrollLeftChanged)&&this._hideWidgets()}_onEditorMouseDown(e){this._isMouseDown=!0;const t=e.target.type;9!==t||e.target.detail!==re.ID?12===t&&e.target.detail===oe.ID||(12!==t&&e.target.detail!==oe.ID&&(this._hoverClicked=!1),this._hideWidgets()):this._hoverClicked=!0}_onEditorMouseUp(e){this._isMouseDown=!1}_onEditorMouseMove(e){let t=e.target.type;if(!(this._isMouseDown&&this._hoverClicked&&this.contentWidget.isColorPickerVisible()||this._isHoverSticky&&9===t&&e.target.detail===re.ID||this._isHoverSticky&&12===t&&e.target.detail===oe.ID)){if(7===t){const i=this._editor.getOption(36).typicalHalfwidthCharacterWidth/2,n=e.target.detail;n&&!n.isAfterLines&&"number"==typeof n.horizontalDistanceToText&&n.horizontalDistanceToText<i&&(t=6)}6===t?(this.glyphWidget.hide(),this._isHoverEnabled&&e.target.range&&this.contentWidget.startShowingAt(e.target.range,0,!1)):2===t?(this.contentWidget.hide(),this._isHoverEnabled&&e.target.position&&this.glyphWidget.startShowingAt(e.target.position.lineNumber)):this._hideWidgets()}}_onKeyDown(e){5!==e.keyCode&&6!==e.keyCode&&57!==e.keyCode&&4!==e.keyCode&&this._hideWidgets()}_hideWidgets(){!this._glyphWidget.value||!this._contentWidget.value||this._isMouseDown&&this._hoverClicked&&this._contentWidget.value.isColorPickerVisible()||(this._glyphWidget.value.hide(),this._contentWidget.value.hide())}_createHoverWidgets(){this._contentWidget.value=new re(this._editor,this._hoverVisibleKey,this._markerDecorationsService,this._keybindingService,this._themeService,this._modeService,this._openerService),this._glyphWidget.value=new oe(this._editor,this._modeService,this._openerService)}showContentHover(e,t,i){this.contentWidget.startShowingAt(e,t,i)}dispose(){this._unhookEvents(),this._toUnhook.dispose(),this._didChangeConfigurationHandler.dispose(),this._glyphWidget.dispose(),this._contentWidget.dispose()}};ue.ID="editor.contrib.hover",ue=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([he(1,K.v4),he(2,c.h),he(3,ae.i),he(4,le.d),he(5,x.XE),he(6,de.i6)],ue);class ge extends o.R6{constructor(){super({id:"editor.action.showHover",label:n.N({key:"showHover",comment:["Label for action that will trigger the showing of a hover in the editor.","This allows for users to show the hover without using the mouse."]},"Show Hover"),alias:"Show Hover",precondition:void 0,kbOpts:{kbExpr:l.u.editorTextFocus,primary:(0,r.gx)(2089,2087),weight:100}})}run(e,t){if(!t.hasModel())return;let i=ue.get(t);if(!i)return;const n=t.getPosition(),r=new a.e(n.lineNumber,n.column,n.lineNumber,n.column),s=2===t.getOption(2);i.showContentHover(r,1,s)}}class fe extends o.R6{constructor(){super({id:"editor.action.showDefinitionPreviewHover",label:n.N({key:"showDefinitionPreviewHover",comment:["Label for action that will trigger the showing of definition preview hover in the editor.","This allows for users to show the definition preview hover without using the mouse."]},"Show Definition Preview Hover"),alias:"Show Definition Preview Hover",precondition:void 0})}run(e,t){let i=ue.get(t);if(!i)return;const n=t.getPosition();if(!n)return;const r=new a.e(n.lineNumber,n.column,n.lineNumber,n.column),s=ce.GotoDefinitionAtPositionEditorContribution.get(t).startFindDefinitionFromCursor(n);s?s.then((()=>{i.showContentHover(r,1,!0)})):i.showContentHover(r,1,!0)}}(0,o._K)(ue.ID,ue),(0,o.Qr)(ge),(0,o.Qr)(fe),(0,x.Ic)(((e,t)=>{const i=e.getColor(k.pt);i&&t.addRule(`.monaco-editor .hoverHighlight { background-color: ${i}; }`);const n=e.getColor(k.yJ);n&&t.addRule(`.monaco-editor .monaco-hover { background-color: ${n}; }`);const r=e.getColor(k.CN);r&&(t.addRule(`.monaco-editor .monaco-hover { border: 1px solid ${r}; }`),t.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${r.transparent(.5)}; }`),t.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${r.transparent(.5)}; }`),t.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${r.transparent(.5)}; }`));const s=e.getColor(k.ur);s&&t.addRule(`.monaco-editor .monaco-hover a { color: ${s}; }`);const o=e.getColor(k.Sb);o&&t.addRule(`.monaco-editor .monaco-hover { color: ${o}; }`);const a=e.getColor(k.Lo);a&&t.addRule(`.monaco-editor .monaco-hover .hover-row .actions { background-color: ${a}; }`);const l=e.getColor(k.Sw);l&&t.addRule(`.monaco-editor .monaco-hover code { background-color: ${l}; }`)}))},83554:(e,t,i)=>{"use strict";i.r(t);var n=i(63580),r=i(24314),s=i(3860),o=i(29102),a=i(16830),l=i(90469);class c{constructor(e,t,i){this._editRange=e,this._originalSelection=t,this._text=i}getEditOperations(e,t){t.addTrackedEditOperation(this._editRange,this._text)}computeCursorState(e,t){const i=t.getInverseEditOperations()[0].range;return this._originalSelection.isEmpty()?new s.Y(i.endLineNumber,Math.min(this._originalSelection.positionColumn,i.endColumn),i.endLineNumber,Math.min(this._originalSelection.positionColumn,i.endColumn)):new s.Y(i.endLineNumber,i.endColumn-this._text.length,i.endLineNumber,i.endColumn)}}var d=i(39925),h=i(97781),u=i(27869),g=i(3411),f=i(15393),p=i(17301);let m=class e{constructor(e,t){this.decorationIds=[],this.editor=e,this.editorWorkerService=t}static get(t){return t.getContribution(e.ID)}dispose(){}run(t,i){this.currentRequest&&this.currentRequest.cancel();const n=this.editor.getSelection(),o=this.editor.getModel();if(!o||!n)return;let a=n;if(a.startLineNumber!==a.endLineNumber)return;const l=new d.yy(this.editor,5),h=o.uri;return this.editorWorkerService.canNavigateValueSet(h)?(this.currentRequest=(0,f.PG)((e=>this.editorWorkerService.navigateValueSet(h,a,i))),this.currentRequest.then((i=>{if(!i||!i.range||!i.value)return;if(!l.validate(this.editor))return;let n=r.e.lift(i.range),o=i.range,d=i.value.length-(a.endColumn-a.startColumn);o={startLineNumber:o.startLineNumber,startColumn:o.startColumn,endLineNumber:o.endLineNumber,endColumn:o.startColumn+i.value.length},d>1&&(a=new s.Y(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn+d-1));const h=new c(n,a,i.value);this.editor.pushUndoStop(),this.editor.executeCommand(t,h),this.editor.pushUndoStop(),this.decorationIds=this.editor.deltaDecorations(this.decorationIds,[{range:o,options:e.DECORATION}]),this.decorationRemover&&this.decorationRemover.cancel(),this.decorationRemover=(0,f.Vs)(350),this.decorationRemover.then((()=>this.decorationIds=this.editor.deltaDecorations(this.decorationIds,[]))).catch(p.dL)})).catch(p.dL)):Promise.resolve(void 0)}};var _,b;m.ID="editor.contrib.inPlaceReplaceController",m.DECORATION=g.qx.register({className:"valueSetReplacement"}),m=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(_=1,b=l.p,function(e,t){b(e,t,_)})],m);class v extends a.R6{constructor(){super({id:"editor.action.inPlaceReplace.up",label:n.N("InPlaceReplaceAction.previous.label","Replace with Previous Value"),alias:"Replace with Previous Value",precondition:o.u.writable,kbOpts:{kbExpr:o.u.editorTextFocus,primary:3154,weight:100}})}run(e,t){const i=m.get(t);return i?i.run(this.id,!0):Promise.resolve(void 0)}}class y extends a.R6{constructor(){super({id:"editor.action.inPlaceReplace.down",label:n.N("InPlaceReplaceAction.next.label","Replace with Next Value"),alias:"Replace with Next Value",precondition:o.u.writable,kbOpts:{kbExpr:o.u.editorTextFocus,primary:3156,weight:100}})}run(e,t){const i=m.get(t);return i?i.run(this.id,!1):Promise.resolve(void 0)}}(0,a._K)(m.ID,m),(0,a.Qr)(v),(0,a.Qr)(y),(0,h.Ic)(((e,t)=>{const i=e.getColor(u.Dl);i&&t.addRule(`.monaco-editor.vs .valueSetReplacement { outline: solid 2px ${i}; }`)}))},51491:(e,t,i)=>{"use strict";function n(e,t){let i=0;for(let n=0;n<e.length;n++)"\t"===e.charAt(n)?i+=t:i++;return i}function r(e,t,i){e=e<0?0:e;let n="";if(!i){let i=Math.floor(e/t);e%=t;for(let e=0;e<i;e++)n+="\t"}for(let t=0;t<e;t++)n+=" ";return n}i.d(t,{Y:()=>n,J:()=>r})},80638:(e,t,i)=>{"use strict";i.r(t),i.d(t,{getReindentEditOperations:()=>_,IndentationToSpacesAction:()=>b,IndentationToTabsAction:()=>v,ChangeIndentationSizeAction:()=>y,IndentUsingTabs:()=>w,IndentUsingSpaces:()=>C,DetectIndentation:()=>S,ReindentLinesAction:()=>k,ReindentSelectedLinesAction:()=>x,AutoIndentOnPasteCommand:()=>L,AutoIndentOnPaste:()=>M,IndentationToSpacesCommand:()=>N,IndentationToTabsCommand:()=>E});var n=i(63580),r=i(5976),s=i(97295),o=i(16830),a=i(10291),l=i(69386),c=i(24314),d=i(3860),h=i(29102),u=i(3411),g=i(83831),f=i(51200),p=i(51491),m=i(41157);function _(e,t,i,n){if(1===e.getLineCount()&&1===e.getLineMaxColumn(1))return[];let r=g.zu.getIndentationRules(e.getLanguageIdentifier().id);if(!r)return[];for(i=Math.min(i,e.getLineCount());t<=i&&r.unIndentedLinePattern;){let i=e.getLineContent(t);if(!r.unIndentedLinePattern.test(i))break;t++}if(t>i-1)return[];const{tabSize:o,indentSize:c,insertSpaces:h}=e.getOptions(),f=(e,t)=>(t=t||1,a.U.shiftIndent(e,e.length+t,o,c,h)),p=(e,t)=>(t=t||1,a.U.unshiftIndent(e,e.length+t,o,c,h));let m,_=[],b=e.getLineContent(t),v=b;if(null!=n){m=n;let e=s.V8(b);v=m+b.substring(e.length),r.decreaseIndentPattern&&r.decreaseIndentPattern.test(v)&&(m=p(m),v=m+b.substring(e.length)),b!==v&&_.push(l.h.replace(new d.Y(t,1,t,e.length+1),u.yO.normalizeIndentation(m,c,h)))}else m=s.V8(b);let y=m;r.increaseIndentPattern&&r.increaseIndentPattern.test(v)?(y=f(y),m=f(m)):r.indentNextLinePattern&&r.indentNextLinePattern.test(v)&&(y=f(y));for(let n=++t;n<=i;n++){let t=e.getLineContent(n),i=s.V8(t),o=y+t.substring(i.length);r.decreaseIndentPattern&&r.decreaseIndentPattern.test(o)&&(y=p(y),m=p(m)),i!==y&&_.push(l.h.replace(new d.Y(n,1,n,i.length+1),u.yO.normalizeIndentation(y,c,h))),r.unIndentedLinePattern&&r.unIndentedLinePattern.test(t)||(r.increaseIndentPattern&&r.increaseIndentPattern.test(o)?(m=f(m),y=m):y=r.indentNextLinePattern&&r.indentNextLinePattern.test(o)?f(y):m)}return _}class b extends o.R6{constructor(){super({id:b.ID,label:n.N("indentationToSpaces","Convert Indentation to Spaces"),alias:"Convert Indentation to Spaces",precondition:h.u.writable})}run(e,t){let i=t.getModel();if(!i)return;let n=i.getOptions(),r=t.getSelection();if(!r)return;const s=new N(r,n.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[s]),t.pushUndoStop(),i.updateOptions({insertSpaces:!0})}}b.ID="editor.action.indentationToSpaces";class v extends o.R6{constructor(){super({id:v.ID,label:n.N("indentationToTabs","Convert Indentation to Tabs"),alias:"Convert Indentation to Tabs",precondition:h.u.writable})}run(e,t){let i=t.getModel();if(!i)return;let n=i.getOptions(),r=t.getSelection();if(!r)return;const s=new E(r,n.tabSize);t.pushUndoStop(),t.executeCommands(this.id,[s]),t.pushUndoStop(),i.updateOptions({insertSpaces:!1})}}v.ID="editor.action.indentationToTabs";class y extends o.R6{constructor(e,t){super(t),this.insertSpaces=e}run(e,t){const i=e.get(m.eJ),r=e.get(f.q);let s=t.getModel();if(!s)return;let o=r.getCreationOptions(s.getLanguageIdentifier().language,s.uri,s.isForSimpleWidget);const a=[1,2,3,4,5,6,7,8].map((e=>({id:e.toString(),label:e.toString(),description:e===o.tabSize?n.N("configuredTabSize","Configured Tab Size"):void 0}))),l=Math.min(s.getOptions().tabSize-1,7);setTimeout((()=>{i.pick(a,{placeHolder:n.N({key:"selectTabWidth",comment:["Tab corresponds to the tab key"]},"Select Tab Size for Current File"),activeItem:a[l]}).then((e=>{e&&s&&!s.isDisposed()&&s.updateOptions({tabSize:parseInt(e.label,10),insertSpaces:this.insertSpaces})}))}),50)}}class w extends y{constructor(){super(!1,{id:w.ID,label:n.N("indentUsingTabs","Indent Using Tabs"),alias:"Indent Using Tabs",precondition:void 0})}}w.ID="editor.action.indentUsingTabs";class C extends y{constructor(){super(!0,{id:C.ID,label:n.N("indentUsingSpaces","Indent Using Spaces"),alias:"Indent Using Spaces",precondition:void 0})}}C.ID="editor.action.indentUsingSpaces";class S extends o.R6{constructor(){super({id:S.ID,label:n.N("detectIndentation","Detect Indentation from Content"),alias:"Detect Indentation from Content",precondition:void 0})}run(e,t){const i=e.get(f.q);let n=t.getModel();if(!n)return;let r=i.getCreationOptions(n.getLanguageIdentifier().language,n.uri,n.isForSimpleWidget);n.detectIndentation(r.insertSpaces,r.tabSize)}}S.ID="editor.action.detectIndentation";class k extends o.R6{constructor(){super({id:"editor.action.reindentlines",label:n.N("editor.reindentlines","Reindent Lines"),alias:"Reindent Lines",precondition:h.u.writable})}run(e,t){let i=t.getModel();if(!i)return;let n=_(i,1,i.getLineCount());n.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,n),t.pushUndoStop())}}class x extends o.R6{constructor(){super({id:"editor.action.reindentselectedlines",label:n.N("editor.reindentselectedlines","Reindent Selected Lines"),alias:"Reindent Selected Lines",precondition:h.u.writable})}run(e,t){let i=t.getModel();if(!i)return;let n=t.getSelections();if(null===n)return;let r=[];for(let e of n){let t=e.startLineNumber,n=e.endLineNumber;if(t!==n&&1===e.endColumn&&n--,1===t){if(t===n)continue}else t--;let s=_(i,t,n);r.push(...s)}r.length>0&&(t.pushUndoStop(),t.executeEdits(this.id,r),t.pushUndoStop())}}class L{constructor(e,t){this._initialSelection=t,this._edits=[],this._selectionId=null;for(let t of e)t.range&&"string"==typeof t.text&&this._edits.push(t)}getEditOperations(e,t){for(let e of this._edits)t.addEditOperation(c.e.lift(e.range),e.text);let i=!1;Array.isArray(this._edits)&&1===this._edits.length&&this._initialSelection.isEmpty()&&(this._edits[0].range.startColumn===this._initialSelection.endColumn&&this._edits[0].range.startLineNumber===this._initialSelection.endLineNumber?(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!0)):this._edits[0].range.endColumn===this._initialSelection.startColumn&&this._edits[0].range.endLineNumber===this._initialSelection.startLineNumber&&(i=!0,this._selectionId=t.trackSelection(this._initialSelection,!1))),i||(this._selectionId=t.trackSelection(this._initialSelection))}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}class M{constructor(e){this.callOnDispose=new r.SL,this.callOnModel=new r.SL,this.editor=e,this.callOnDispose.add(e.onDidChangeConfiguration((()=>this.update()))),this.callOnDispose.add(e.onDidChangeModel((()=>this.update()))),this.callOnDispose.add(e.onDidChangeModelLanguage((()=>this.update())))}update(){this.callOnModel.clear(),this.editor.getOption(8)<4||this.editor.getOption(40)||this.editor.hasModel()&&this.callOnModel.add(this.editor.onDidPaste((({range:e})=>{this.trigger(e)})))}trigger(e){let t=this.editor.getSelections();if(null===t||t.length>1)return;const i=this.editor.getModel();if(!i)return;if(!i.isCheapToTokenize(e.getStartPosition().lineNumber))return;const n=this.editor.getOption(8),{tabSize:r,indentSize:o,insertSpaces:l}=i.getOptions();this.editor.pushUndoStop();let d=[],h={shiftIndent:e=>a.U.shiftIndent(e,e.length+1,r,o,l),unshiftIndent:e=>a.U.unshiftIndent(e,e.length+1,r,o,l)},u=e.startLineNumber;for(;u<=e.endLineNumber&&this.shouldIgnoreLine(i,u);)u++;if(u>e.endLineNumber)return;let f=i.getLineContent(u);if(!/\S/.test(f.substring(0,e.startColumn-1))){let e=g.zu.getGoodIndentForLine(n,i,i.getLanguageIdentifier().id,u,h);if(null!==e){let t=s.V8(f),n=p.Y(e,r);if(n!==p.Y(t,r)){let e=p.J(n,r,l);d.push({range:new c.e(u,1,u,t.length+1),text:e}),f=e+f.substr(t.length)}else{let e=g.zu.getIndentMetadata(i,u);if(0===e||8===e)return}}}const m=u;for(;u<e.endLineNumber&&!/\S/.test(i.getLineContent(u+1));)u++;if(u!==e.endLineNumber){let t={getLineTokens:e=>i.getLineTokens(e),getLanguageIdentifier:()=>i.getLanguageIdentifier(),getLanguageIdAtPosition:(e,t)=>i.getLanguageIdAtPosition(e,t),getLineContent:e=>e===m?f:i.getLineContent(e)},o=g.zu.getGoodIndentForLine(n,t,i.getLanguageIdentifier().id,u+1,h);if(null!==o){let t=p.Y(o,r),n=p.Y(s.V8(i.getLineContent(u+1)),r);if(t!==n){let o=t-n;for(let t=u+1;t<=e.endLineNumber;t++){let e=i.getLineContent(t),n=s.V8(e),a=p.Y(n,r)+o,h=p.J(a,r,l);h!==n&&d.push({range:new c.e(t,1,t,n.length+1),text:h})}}}}let _=new L(d,this.editor.getSelection());this.editor.executeCommand("autoIndentOnPaste",_),this.editor.pushUndoStop()}shouldIgnoreLine(e,t){e.forceTokenization(t);let i=e.getLineFirstNonWhitespaceColumn(t);if(0===i)return!0;let n=e.getLineTokens(t);if(n.getCount()>0){let e=n.findTokenIndexAtOffset(i);if(e>=0&&1===n.getStandardTokenType(e))return!0}return!1}dispose(){this.callOnDispose.dispose(),this.callOnModel.dispose()}}function D(e,t,i,n){if(1===e.getLineCount()&&1===e.getLineMaxColumn(1))return;let r="";for(let e=0;e<i;e++)r+=" ";let s=new RegExp(r,"gi");for(let i=1,o=e.getLineCount();i<=o;i++){let o=e.getLineFirstNonWhitespaceColumn(i);if(0===o&&(o=e.getLineMaxColumn(i)),1===o)continue;const a=new c.e(i,1,i,o),l=e.getValueInRange(a),d=n?l.replace(/\t/gi,r):l.replace(s,"\t");t.addEditOperation(a,d)}}M.ID="editor.contrib.autoIndentOnPaste";class N{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),D(e,t,this.tabSize,!0)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}class E{constructor(e,t){this.selection=e,this.tabSize=t,this.selectionId=null}getEditOperations(e,t){this.selectionId=t.trackSelection(this.selection),D(e,t,this.tabSize,!1)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}}(0,o._K)(M.ID,M),(0,o.Qr)(b),(0,o.Qr)(v),(0,o.Qr)(w),(0,o.Qr)(C),(0,o.Qr)(S),(0,o.Qr)(k),(0,o.Qr)(x)},42408:(e,t,i)=>{"use strict";i.r(t),i.d(t,{AbstractCaseAction:()=>j,AbstractDeleteAllToBoundaryAction:()=>F,AbstractSortLinesAction:()=>D,DeleteAllLeftAction:()=>B,DeleteAllRightAction:()=>W,DeleteLinesAction:()=>I,DuplicateSelectionAction:()=>L,IndentLinesAction:()=>O,InsertLineAfterAction:()=>P,InsertLineBeforeAction:()=>R,JoinLinesAction:()=>Y,LowerCaseAction:()=>z,SortLinesAscendingAction:()=>N,SortLinesDescendingAction:()=>E,TitleCaseAction:()=>U,TransposeAction:()=>H,TrimTrailingWhitespaceAction:()=>T,UpperCaseAction:()=>V});var n=i(63580),r=i(22258),s=i(18728),o=i(16830),a=i(61329),l=i(97295),c=i(69386),d=i(24314);class h{constructor(e,t){this._selection=e,this._cursors=t,this._selectionId=null}getEditOperations(e,t){let i=function(e,t){t.sort(((e,t)=>e.lineNumber===t.lineNumber?e.column-t.column:e.lineNumber-t.lineNumber));for(let e=t.length-2;e>=0;e--)t[e].lineNumber===t[e+1].lineNumber&&t.splice(e,1);let i=[],n=0,r=0,s=t.length;for(let o=1,a=e.getLineCount();o<=a;o++){let a=e.getLineContent(o),h=a.length+1,u=0;if(r<s&&t[r].lineNumber===o&&(u=t[r].column,r++,u===h))continue;if(0===a.length)continue;let g=l.ow(a),f=0;if(-1===g)f=1;else{if(g===a.length-1)continue;f=g+2}f=Math.max(u,f),i[n++]=c.h.delete(new d.e(o,f,o,h))}return i}(e,this._cursors);for(let e=0,n=i.length;e<n;e++){let n=i[e];t.addEditOperation(n.range,n.text)}this._selectionId=t.trackSelection(this._selection)}computeCursorState(e,t){return t.getTrackedSelection(this._selectionId)}}var u=i(23582),g=i(50187),f=i(3860),p=i(29102);class m{constructor(e,t){this._selection=e,this._isCopyingDown=t,this._selectionDirection=0,this._selectionId=null,this._startLineNumberDelta=0,this._endLineNumberDelta=0}getEditOperations(e,t){let i=this._selection;this._startLineNumberDelta=0,this._endLineNumberDelta=0,i.startLineNumber<i.endLineNumber&&1===i.endColumn&&(this._endLineNumberDelta=1,i=i.setEndPosition(i.endLineNumber-1,e.getLineMaxColumn(i.endLineNumber-1)));let n=[];for(let t=i.startLineNumber;t<=i.endLineNumber;t++)n.push(e.getLineContent(t));const r=n.join("\n");""===r&&this._isCopyingDown&&(this._startLineNumberDelta++,this._endLineNumberDelta++),this._isCopyingDown?t.addEditOperation(new d.e(i.startLineNumber,1,i.startLineNumber,1),r+"\n"):t.addEditOperation(new d.e(i.endLineNumber,e.getLineMaxColumn(i.endLineNumber),i.endLineNumber,e.getLineMaxColumn(i.endLineNumber)),"\n"+r),this._selectionId=t.trackSelection(i),this._selectionDirection=this._selection.getDirection()}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);if(0!==this._startLineNumberDelta||0!==this._endLineNumberDelta){let e=i.startLineNumber,t=i.startColumn,n=i.endLineNumber,r=i.endColumn;0!==this._startLineNumberDelta&&(e+=this._startLineNumberDelta,t=1),0!==this._endLineNumberDelta&&(n+=this._endLineNumberDelta,r=1),i=f.Y.createWithDirection(e,t,n,r,this._selectionDirection)}return i}}var _=i(10291),b=i(97354),v=i(83831),y=i(51491);class w{constructor(e,t,i){this._selection=e,this._isMovingDown=t,this._autoIndent=i,this._selectionId=null,this._moveEndLineSelectionShrink=!1}getEditOperations(e,t){let i=e.getLineCount();if(this._isMovingDown&&this._selection.endLineNumber===i)return void(this._selectionId=t.trackSelection(this._selection));if(!this._isMovingDown&&1===this._selection.startLineNumber)return void(this._selectionId=t.trackSelection(this._selection));this._moveEndPositionDown=!1;let n=this._selection;n.startLineNumber<n.endLineNumber&&1===n.endColumn&&(this._moveEndPositionDown=!0,n=n.setEndPosition(n.endLineNumber-1,e.getLineMaxColumn(n.endLineNumber-1)));const{tabSize:r,indentSize:s,insertSpaces:o}=e.getOptions();let a=this.buildIndentConverter(r,s,o),c={getLineTokens:t=>e.getLineTokens(t),getLanguageIdentifier:()=>e.getLanguageIdentifier(),getLanguageIdAtPosition:(t,i)=>e.getLanguageIdAtPosition(t,i),getLineContent:null};if(n.startLineNumber===n.endLineNumber&&1===e.getLineMaxColumn(n.startLineNumber)){let i=n.startLineNumber,r=this._isMovingDown?i+1:i-1;1===e.getLineMaxColumn(r)?t.addEditOperation(new d.e(1,1,1,1),null):(t.addEditOperation(new d.e(i,1,i,1),e.getLineContent(r)),t.addEditOperation(new d.e(r,1,r,e.getLineMaxColumn(r)),null)),n=new f.Y(r,1,r,1)}else{let i,s;if(this._isMovingDown){i=n.endLineNumber+1,s=e.getLineContent(i),t.addEditOperation(new d.e(i-1,e.getLineMaxColumn(i-1),i,e.getLineMaxColumn(i)),null);let h=s;if(this.shouldAutoIndent(e,n)){let u=this.matchEnterRule(e,a,r,i,n.startLineNumber-1);if(null!==u){let t=l.V8(e.getLineContent(i)),n=u+y.Y(t,r),a=y.J(n,r,o);h=a+this.trimLeft(s)}else{c.getLineContent=t=>t===n.startLineNumber?e.getLineContent(i):e.getLineContent(t);let t=v.zu.getGoodIndentForLine(this._autoIndent,c,e.getLanguageIdAtPosition(i,1),n.startLineNumber,a);if(null!==t){let n=l.V8(e.getLineContent(i)),a=y.Y(t,r);if(a!==y.Y(n,r)){let e=y.J(a,r,o);h=e+this.trimLeft(s)}}}t.addEditOperation(new d.e(n.startLineNumber,1,n.startLineNumber,1),h+"\n");let g=this.matchEnterRule(e,a,r,n.startLineNumber,n.startLineNumber,h);if(null!==g)0!==g&&this.getIndentEditsOfMovingBlock(e,t,n,r,o,g);else{c.getLineContent=t=>t===n.startLineNumber?h:t>=n.startLineNumber+1&&t<=n.endLineNumber+1?e.getLineContent(t-1):e.getLineContent(t);let s=v.zu.getGoodIndentForLine(this._autoIndent,c,e.getLanguageIdAtPosition(i,1),n.startLineNumber+1,a);if(null!==s){const i=l.V8(e.getLineContent(n.startLineNumber)),a=y.Y(s,r),c=y.Y(i,r);if(a!==c){const i=a-c;this.getIndentEditsOfMovingBlock(e,t,n,r,o,i)}}}}else t.addEditOperation(new d.e(n.startLineNumber,1,n.startLineNumber,1),h+"\n")}else if(i=n.startLineNumber-1,s=e.getLineContent(i),t.addEditOperation(new d.e(i,1,i+1,1),null),t.addEditOperation(new d.e(n.endLineNumber,e.getLineMaxColumn(n.endLineNumber),n.endLineNumber,e.getLineMaxColumn(n.endLineNumber)),"\n"+s),this.shouldAutoIndent(e,n)){c.getLineContent=t=>t===i?e.getLineContent(n.startLineNumber):e.getLineContent(t);let s=this.matchEnterRule(e,a,r,n.startLineNumber,n.startLineNumber-2);if(null!==s)0!==s&&this.getIndentEditsOfMovingBlock(e,t,n,r,o,s);else{let s=v.zu.getGoodIndentForLine(this._autoIndent,c,e.getLanguageIdAtPosition(n.startLineNumber,1),i,a);if(null!==s){let i=l.V8(e.getLineContent(n.startLineNumber)),a=y.Y(s,r),c=y.Y(i,r);if(a!==c){let i=a-c;this.getIndentEditsOfMovingBlock(e,t,n,r,o,i)}}}}}this._selectionId=t.trackSelection(n)}buildIndentConverter(e,t,i){return{shiftIndent:n=>_.U.shiftIndent(n,n.length+1,e,t,i),unshiftIndent:n=>_.U.unshiftIndent(n,n.length+1,e,t,i)}}matchEnterRule(e,t,i,n,r,s){let o=r;for(;o>=1;){let t;if(t=o===r&&void 0!==s?s:e.getLineContent(o),l.ow(t)>=0)break;o--}if(o<1||n>e.getLineCount())return null;let a=e.getLineMaxColumn(o),c=v.zu.getEnterAction(this._autoIndent,e,new d.e(o,a,o,a));if(c){let r=c.indentation;c.indentAction===b.w.None||c.indentAction===b.w.Indent?r=c.indentation+c.appendText:c.indentAction===b.w.IndentOutdent?r=c.indentation:c.indentAction===b.w.Outdent&&(r=t.unshiftIndent(c.indentation)+c.appendText);let s=e.getLineContent(n);if(this.trimLeft(s).indexOf(this.trimLeft(r))>=0){let s=l.V8(e.getLineContent(n)),o=l.V8(r),a=v.zu.getIndentMetadata(e,n);return null!==a&&2&a&&(o=t.unshiftIndent(o)),y.Y(o,i)-y.Y(s,i)}}return null}trimLeft(e){return e.replace(/^\s+/,"")}shouldAutoIndent(e,t){if(this._autoIndent<4)return!1;if(!e.isCheapToTokenize(t.startLineNumber))return!1;let i=e.getLanguageIdAtPosition(t.startLineNumber,1);return i===e.getLanguageIdAtPosition(t.endLineNumber,1)&&null!==v.zu.getIndentRulesSupport(i)}getIndentEditsOfMovingBlock(e,t,i,n,r,s){for(let o=i.startLineNumber;o<=i.endLineNumber;o++){let a=e.getLineContent(o),c=l.V8(a),h=y.Y(c,n)+s,u=y.J(h,n,r);u!==c&&(t.addEditOperation(new d.e(o,1,o,c.length+1),u),o===i.endLineNumber&&i.endColumn<=c.length+1&&""===u&&(this._moveEndLineSelectionShrink=!0))}}computeCursorState(e,t){let i=t.getTrackedSelection(this._selectionId);return this._moveEndPositionDown&&(i=i.setEndPosition(i.endLineNumber+1,1)),this._moveEndLineSelectionShrink&&i.startLineNumber<i.endLineNumber&&(i=i.setEndPosition(i.endLineNumber,2)),i}}class C{constructor(e,t){this.selection=e,this.descending=t,this.selectionId=null}static getCollator(){return C._COLLATOR||(C._COLLATOR=new Intl.Collator),C._COLLATOR}getEditOperations(e,t){let i=function(e,t,i){let n=S(e,t,i);return n?c.h.replace(new d.e(n.startLineNumber,1,n.endLineNumber,e.getLineMaxColumn(n.endLineNumber)),n.after.join("\n")):null}(e,this.selection,this.descending);i&&t.addEditOperation(i.range,i.text),this.selectionId=t.trackSelection(this.selection)}computeCursorState(e,t){return t.getTrackedSelection(this.selectionId)}static canRun(e,t,i){if(null===e)return!1;let n=S(e,t,i);if(!n)return!1;for(let e=0,t=n.before.length;e<t;e++)if(n.before[e]!==n.after[e])return!0;return!1}}function S(e,t,i){let n=t.startLineNumber,r=t.endLineNumber;if(1===t.endColumn&&r--,n>=r)return null;let s=[];for(let t=n;t<=r;t++)s.push(e.getLineContent(t));let o=s.slice(0);return o.sort(C.getCollator().compare),!0===i&&(o=o.reverse()),{startLineNumber:n,endLineNumber:r,before:s,after:o}}C._COLLATOR=null;var k=i(84144);class x extends o.R6{constructor(e,t){super(t),this.down=e}run(e,t){if(!t.hasModel())return;const i=t.getSelections().map(((e,t)=>({selection:e,index:t,ignore:!1})));i.sort(((e,t)=>d.e.compareRangesUsingStarts(e.selection,t.selection)));let n=i[0];for(let e=1;e<i.length;e++){const t=i[e];n.selection.endLineNumber===t.selection.startLineNumber&&(n.index<t.index?t.ignore=!0:(n.ignore=!0,n=t))}const r=[];for(const e of i)e.ignore||r.push(new m(e.selection,this.down));t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}class L extends o.R6{constructor(){super({id:"editor.action.duplicateSelection",label:n.N("duplicateSelection","Duplicate Selection"),alias:"Duplicate Selection",precondition:p.u.writable,menuOpts:{menuId:k.eH.MenubarSelectionMenu,group:"2_line",title:n.N({key:"miDuplicateSelection",comment:["&& denotes a mnemonic"]},"&&Duplicate Selection"),order:5}})}run(e,t,i){if(!t.hasModel())return;const n=[],r=t.getSelections(),s=t.getModel();for(const e of r)if(e.isEmpty())n.push(new m(e,!0));else{const t=new f.Y(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn);n.push(new a.OY(t,s.getValueInRange(e)))}t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class M extends o.R6{constructor(e,t){super(t),this.down=e}run(e,t){let i=[],n=t.getSelections()||[];const r=t.getOption(8);for(const e of n)i.push(new w(e,this.down,r));t.pushUndoStop(),t.executeCommands(this.id,i),t.pushUndoStop()}}class D extends o.R6{constructor(e,t){super(t),this.descending=e}run(e,t){const i=t.getSelections()||[];for(const e of i)if(!C.canRun(t.getModel(),e,this.descending))return;let n=[];for(let e=0,t=i.length;e<t;e++)n[e]=new C(i[e],this.descending);t.pushUndoStop(),t.executeCommands(this.id,n),t.pushUndoStop()}}class N extends D{constructor(){super(!1,{id:"editor.action.sortLinesAscending",label:n.N("lines.sortAscending","Sort Lines Ascending"),alias:"Sort Lines Ascending",precondition:p.u.writable})}}class E extends D{constructor(){super(!0,{id:"editor.action.sortLinesDescending",label:n.N("lines.sortDescending","Sort Lines Descending"),alias:"Sort Lines Descending",precondition:p.u.writable})}}class T extends o.R6{constructor(){super({id:T.ID,label:n.N("lines.trimTrailingWhitespace","Trim Trailing Whitespace"),alias:"Trim Trailing Whitespace",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:(0,r.gx)(2089,2102),weight:100}})}run(e,t,i){let n=[];"auto-save"===i.reason&&(n=(t.getSelections()||[]).map((e=>new g.L(e.positionLineNumber,e.positionColumn))));let r=t.getSelection();if(null===r)return;let s=new h(r,n);t.pushUndoStop(),t.executeCommands(this.id,[s]),t.pushUndoStop()}}T.ID="editor.action.trimTrailingWhitespace";class I extends o.R6{constructor(){super({id:"editor.action.deleteLines",label:n.N("lines.delete","Delete Line"),alias:"Delete Line",precondition:p.u.writable,kbOpts:{kbExpr:p.u.textInputFocus,primary:3113,weight:100}})}run(e,t){if(!t.hasModel())return;let i=this._getLinesToRemove(t),n=t.getModel();if(1===n.getLineCount()&&1===n.getLineMaxColumn(1))return;let r=0,s=[],o=[];for(let e=0,t=i.length;e<t;e++){const t=i[e];let a=t.startLineNumber,l=t.endLineNumber,d=1,h=n.getLineMaxColumn(l);l<n.getLineCount()?(l+=1,h=1):a>1&&(a-=1,d=n.getLineMaxColumn(a)),s.push(c.h.replace(new f.Y(a,d,l,h),"")),o.push(new f.Y(a-r,t.positionColumn,a-r,t.positionColumn)),r+=t.endLineNumber-t.startLineNumber+1}t.pushUndoStop(),t.executeEdits(this.id,s,o),t.pushUndoStop()}_getLinesToRemove(e){let t=e.getSelections().map((e=>{let t=e.endLineNumber;return e.startLineNumber<e.endLineNumber&&1===e.endColumn&&(t-=1),{startLineNumber:e.startLineNumber,selectionStartColumn:e.selectionStartColumn,endLineNumber:t,positionColumn:e.positionColumn}}));t.sort(((e,t)=>e.startLineNumber===t.startLineNumber?e.endLineNumber-t.endLineNumber:e.startLineNumber-t.startLineNumber));let i=[],n=t[0];for(let e=1;e<t.length;e++)n.endLineNumber+1>=t[e].startLineNumber?n.endLineNumber=t[e].endLineNumber:(i.push(n),n=t[e]);return i.push(n),i}}class O extends o.R6{constructor(){super({id:"editor.action.indentLines",label:n.N("lines.indent","Indent Line"),alias:"Indent Line",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:2137,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,u.u.indent(i.cursorConfig,t.getModel(),t.getSelections())),t.pushUndoStop())}}class A extends o.R6{constructor(){super({id:"editor.action.outdentLines",label:n.N("lines.outdent","Outdent Line"),alias:"Outdent Line",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:2135,weight:100}})}run(e,t){s.CoreEditingCommands.Outdent.runEditorCommand(e,t,null)}}class R extends o.R6{constructor(){super({id:"editor.action.insertLineBefore",label:n.N("lines.insertBefore","Insert Line Above"),alias:"Insert Line Above",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:3075,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,u.u.lineInsertBefore(i.cursorConfig,t.getModel(),t.getSelections())))}}class P extends o.R6{constructor(){super({id:"editor.action.insertLineAfter",label:n.N("lines.insertAfter","Insert Line Below"),alias:"Insert Line Below",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:2051,weight:100}})}run(e,t){const i=t._getViewModel();i&&(t.pushUndoStop(),t.executeCommands(this.id,u.u.lineInsertAfter(i.cursorConfig,t.getModel(),t.getSelections())))}}class F extends o.R6{run(e,t){if(!t.hasModel())return;const i=t.getSelection();let n=this._getRangesToDelete(t),r=[];for(let e=0,t=n.length-1;e<t;e++){let t=n[e],i=n[e+1];null===d.e.intersectRanges(t,i)?r.push(t):n[e+1]=d.e.plusRange(t,i)}r.push(n[n.length-1]);let s=this._getEndCursorState(i,r),o=r.map((e=>c.h.replace(e,"")));t.pushUndoStop(),t.executeEdits(this.id,o,s),t.pushUndoStop()}}class B extends F{constructor(){super({id:"deleteAllLeft",label:n.N("lines.deleteAllLeft","Delete All Left"),alias:"Delete All Left",precondition:p.u.writable,kbOpts:{kbExpr:p.u.textInputFocus,primary:0,mac:{primary:2049},weight:100}})}_getEndCursorState(e,t){let i=null,n=[],r=0;return t.forEach((t=>{let s;if(1===t.endColumn&&r>0){let e=t.startLineNumber-r;s=new f.Y(e,t.startColumn,e,t.startColumn)}else s=new f.Y(t.startLineNumber,t.startColumn,t.startLineNumber,t.startColumn);r+=t.endLineNumber-t.startLineNumber,t.intersectRanges(e)?i=s:n.push(s)})),i&&n.unshift(i),n}_getRangesToDelete(e){let t=e.getSelections();if(null===t)return[];let i=t,n=e.getModel();return null===n?[]:(i.sort(d.e.compareRangesUsingStarts),i=i.map((e=>{if(e.isEmpty()){if(1===e.startColumn){let t=Math.max(1,e.startLineNumber-1),i=1===e.startLineNumber?1:n.getLineContent(t).length+1;return new d.e(t,i,e.startLineNumber,1)}return new d.e(e.startLineNumber,1,e.startLineNumber,e.startColumn)}return new d.e(e.startLineNumber,1,e.endLineNumber,e.endColumn)})),i)}}class W extends F{constructor(){super({id:"deleteAllRight",label:n.N("lines.deleteAllRight","Delete All Right"),alias:"Delete All Right",precondition:p.u.writable,kbOpts:{kbExpr:p.u.textInputFocus,primary:0,mac:{primary:297,secondary:[2068]},weight:100}})}_getEndCursorState(e,t){let i=null,n=[];for(let r=0,s=t.length,o=0;r<s;r++){let s=t[r],a=new f.Y(s.startLineNumber-o,s.startColumn,s.startLineNumber-o,s.startColumn);s.intersectRanges(e)?i=a:n.push(a)}return i&&n.unshift(i),n}_getRangesToDelete(e){let t=e.getModel();if(null===t)return[];let i=e.getSelections();if(null===i)return[];let n=i.map((e=>{if(e.isEmpty()){const i=t.getLineMaxColumn(e.startLineNumber);return e.startColumn===i?new d.e(e.startLineNumber,e.startColumn,e.startLineNumber+1,1):new d.e(e.startLineNumber,e.startColumn,e.startLineNumber,i)}return e}));return n.sort(d.e.compareRangesUsingStarts),n}}class Y extends o.R6{constructor(){super({id:"editor.action.joinLines",label:n.N("lines.joinLines","Join Lines"),alias:"Join Lines",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:0,mac:{primary:296},weight:100}})}run(e,t){let i=t.getSelections();if(null===i)return;let n=t.getSelection();if(null===n)return;i.sort(d.e.compareRangesUsingStarts);let r=[],s=i.reduce(((e,t)=>e.isEmpty()?e.endLineNumber===t.startLineNumber?(n.equalsSelection(e)&&(n=t),t):t.startLineNumber>e.endLineNumber+1?(r.push(e),t):new f.Y(e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn):t.startLineNumber>e.endLineNumber?(r.push(e),t):new f.Y(e.startLineNumber,e.startColumn,t.endLineNumber,t.endColumn)));r.push(s);let o=t.getModel();if(null===o)return;let a=[],l=[],h=n,u=0;for(let e=0,t=r.length;e<t;e++){let t,i,s=r[e],g=s.startLineNumber,p=1,m=0,_=o.getLineContent(s.endLineNumber).length-s.endColumn;if(s.isEmpty()||s.startLineNumber===s.endLineNumber){let e=s.getStartPosition();e.lineNumber<o.getLineCount()?(t=g+1,i=o.getLineMaxColumn(t)):(t=e.lineNumber,i=o.getLineMaxColumn(e.lineNumber))}else t=s.endLineNumber,i=o.getLineMaxColumn(t);let b=o.getLineContent(g);for(let e=g+1;e<=t;e++){let t=o.getLineContent(e),i=o.getLineFirstNonWhitespaceColumn(e);if(i>=1){let e=!0;""===b&&(e=!1),!e||" "!==b.charAt(b.length-1)&&"\t"!==b.charAt(b.length-1)||(e=!1,b=b.replace(/[\s\uFEFF\xA0]+$/g," "));let n=t.substr(i-1);b+=(e?" ":"")+n,m=e?n.length+1:n.length}else m=0}let v=new d.e(g,p,t,i);if(!v.isEmpty()){let e;s.isEmpty()?(a.push(c.h.replace(v,b)),e=new f.Y(v.startLineNumber-u,b.length-m+1,g-u,b.length-m+1)):s.startLineNumber===s.endLineNumber?(a.push(c.h.replace(v,b)),e=new f.Y(s.startLineNumber-u,s.startColumn,s.endLineNumber-u,s.endColumn)):(a.push(c.h.replace(v,b)),e=new f.Y(s.startLineNumber-u,s.startColumn,s.startLineNumber-u,b.length-_)),null!==d.e.intersectRanges(v,n)?h=e:l.push(e)}u+=v.endLineNumber-v.startLineNumber}l.unshift(h),t.pushUndoStop(),t.executeEdits(this.id,a,l),t.pushUndoStop()}}class H extends o.R6{constructor(){super({id:"editor.action.transpose",label:n.N("editor.transpose","Transpose characters around the cursor"),alias:"Transpose characters around the cursor",precondition:p.u.writable})}run(e,t){let i=t.getSelections();if(null===i)return;let n=t.getModel();if(null===n)return;let r=[];for(let e=0,t=i.length;e<t;e++){let t=i[e];if(!t.isEmpty())continue;let s=t.getStartPosition(),o=n.getLineMaxColumn(s.lineNumber);if(s.column>=o){if(s.lineNumber===n.getLineCount())continue;let e=new d.e(s.lineNumber,Math.max(1,s.column-1),s.lineNumber+1,1),t=n.getValueInRange(e).split("").reverse().join("");r.push(new a.T4(new f.Y(s.lineNumber,Math.max(1,s.column-1),s.lineNumber+1,1),t))}else{let e=new d.e(s.lineNumber,Math.max(1,s.column-1),s.lineNumber,s.column+1),t=n.getValueInRange(e).split("").reverse().join("");r.push(new a.hP(e,t,new f.Y(s.lineNumber,s.column+1,s.lineNumber,s.column+1)))}}t.pushUndoStop(),t.executeCommands(this.id,r),t.pushUndoStop()}}class j extends o.R6{run(e,t){let i=t.getSelections();if(null===i)return;let n=t.getModel();if(null===n)return;let r=t.getOption(105),s=[];for(let e=0,o=i.length;e<o;e++){let o=i[e];if(o.isEmpty()){let e=o.getStartPosition();const i=t.getConfiguredWordAtPosition(e);if(!i)continue;let l=new d.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn),c=n.getValueInRange(l);s.push(new a.hP(l,this._modifyText(c,r),new f.Y(e.lineNumber,e.column,e.lineNumber,e.column)))}else{let e=n.getValueInRange(o);s.push(new a.hP(o,this._modifyText(e,r),o))}}t.pushUndoStop(),t.executeCommands(this.id,s),t.pushUndoStop()}}class V extends j{constructor(){super({id:"editor.action.transformToUppercase",label:n.N("editor.transformToUppercase","Transform to Uppercase"),alias:"Transform to Uppercase",precondition:p.u.writable})}_modifyText(e,t){return e.toLocaleUpperCase()}}class z extends j{constructor(){super({id:"editor.action.transformToLowercase",label:n.N("editor.transformToLowercase","Transform to Lowercase"),alias:"Transform to Lowercase",precondition:p.u.writable})}_modifyText(e,t){return e.toLocaleLowerCase()}}class U extends j{constructor(){super({id:"editor.action.transformToTitlecase",label:n.N("editor.transformToTitlecase","Transform to Title Case"),alias:"Transform to Title Case",precondition:p.u.writable})}_modifyText(e,t){const i=("\r\n\t "+t).split("");let n="",r=!0;for(let t=0;t<e.length;t++){let s=e[t];i.indexOf(s)>=0?(r=!0,n+=s):r?(r=!1,n+=s.toLocaleUpperCase()):n+=s.toLocaleLowerCase()}return n}}(0,o.Qr)(class extends x{constructor(){super(!1,{id:"editor.action.copyLinesUpAction",label:n.N("lines.copyUp","Copy Line Up"),alias:"Copy Line Up",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:1552,linux:{primary:3600},weight:100},menuOpts:{menuId:k.eH.MenubarSelectionMenu,group:"2_line",title:n.N({key:"miCopyLinesUp",comment:["&& denotes a mnemonic"]},"&&Copy Line Up"),order:1}})}}),(0,o.Qr)(class extends x{constructor(){super(!0,{id:"editor.action.copyLinesDownAction",label:n.N("lines.copyDown","Copy Line Down"),alias:"Copy Line Down",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:1554,linux:{primary:3602},weight:100},menuOpts:{menuId:k.eH.MenubarSelectionMenu,group:"2_line",title:n.N({key:"miCopyLinesDown",comment:["&& denotes a mnemonic"]},"Co&&py Line Down"),order:2}})}}),(0,o.Qr)(L),(0,o.Qr)(class extends M{constructor(){super(!1,{id:"editor.action.moveLinesUpAction",label:n.N("lines.moveUp","Move Line Up"),alias:"Move Line Up",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:528,linux:{primary:528},weight:100},menuOpts:{menuId:k.eH.MenubarSelectionMenu,group:"2_line",title:n.N({key:"miMoveLinesUp",comment:["&& denotes a mnemonic"]},"Mo&&ve Line Up"),order:3}})}}),(0,o.Qr)(class extends M{constructor(){super(!0,{id:"editor.action.moveLinesDownAction",label:n.N("lines.moveDown","Move Line Down"),alias:"Move Line Down",precondition:p.u.writable,kbOpts:{kbExpr:p.u.editorTextFocus,primary:530,linux:{primary:530},weight:100},menuOpts:{menuId:k.eH.MenubarSelectionMenu,group:"2_line",title:n.N({key:"miMoveLinesDown",comment:["&& denotes a mnemonic"]},"Move &&Line Down"),order:4}})}}),(0,o.Qr)(N),(0,o.Qr)(E),(0,o.Qr)(T),(0,o.Qr)(I),(0,o.Qr)(O),(0,o.Qr)(A),(0,o.Qr)(R),(0,o.Qr)(P),(0,o.Qr)(B),(0,o.Qr)(W),(0,o.Qr)(Y),(0,o.Qr)(H),(0,o.Qr)(V),(0,o.Qr)(z),(0,o.Qr)(U)},34800:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LinkDetector:()=>O});var n=i(63580),r=i(15393),s=i(71050),o=i(17301),a=i(59365),l=i(5976),c=i(1432),d=i(16830),h=i(3411),u=i(43775),g=i(69241),f=i(70666),p=i(24314),m=i(51200),_=i(94565),b=i(9488),v=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class y{constructor(e,t){this._link=e,this._provider=t}toJSON(){return{range:this.range,url:this.url,tooltip:this.tooltip}}get range(){return this._link.range}get url(){return this._link.url}get tooltip(){return this._link.tooltip}resolve(e){return v(this,void 0,void 0,(function*(){return this._link.url?this._link.url:"function"==typeof this._provider.resolveLink?Promise.resolve(this._provider.resolveLink(this._link,e)).then((t=>(this._link=t||this._link,this._link.url?this.resolve(e):Promise.reject(new Error("missing"))))):Promise.reject(new Error("missing"))}))}}class w extends l.JT{constructor(e){super();let t=[];for(const[i,n]of e){const e=i.links.map((e=>new y(e,n)));t=w._union(t,e),(0,l.Wf)(i)&&this._register(i)}this.links=t}static _union(e,t){let i,n,r,s,o=[];for(i=0,r=0,n=e.length,s=t.length;i<n&&r<s;){const n=e[i],s=t[r];p.e.areIntersectingOrTouching(n.range,s.range)?i++:p.e.compareRangesUsingStarts(n.range,s.range)<0?(o.push(n),i++):(o.push(s),r++)}for(;i<n;i++)o.push(e[i]);for(;r<s;r++)o.push(t[r]);return o}}function C(e,t){const i=[],n=u.pM.ordered(e).reverse().map(((n,r)=>Promise.resolve(n.provideLinks(e,t)).then((e=>{e&&(i[r]=[e,n])}),o.Cp)));return Promise.all(n).then((()=>{const e=new w((0,b.kX)(i));return t.isCancellationRequested?(e.dispose(),new w([])):e}))}_.P.registerCommand("_executeLinkProvider",((e,...t)=>v(void 0,void 0,void 0,(function*(){const[i]=t;if(!(i instanceof f.o))return[];const n=e.get(m.q).getModel(i);if(!n)return[];const r=yield C(n,s.T.None);if(!r)return[];const o=r.links.slice(0);return r.dispose(),o}))));var S=i(59422),k=i(50988),x=i(73910),L=i(97781),M=i(66663),D=i(95935),N=i(97295),E=function(e,t){return function(i,n){t(i,n,e)}};const T={general:h.qx.register({stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link"}),active:h.qx.register({stickiness:1,collapseOnReplaceEdit:!0,inlineClassName:"detected-link-active"})};class I{constructor(e,t){this.link=e,this.decorationId=t}static decoration(e,t){return{range:e.range,options:I._getOptions(e,t,!1)}}static _getOptions(e,t,i){const r=Object.assign({},i?T.active:T.general);return r.hoverMessage=function(e,t){const i=e.url&&/^command:/i.test(e.url.toString()),r=e.tooltip?e.tooltip:i?n.N("links.navigate.executeCmd","Execute command"):n.N("links.navigate.follow","Follow link"),s=t?c.dz?n.N("links.navigate.kb.meta.mac","cmd + click"):n.N("links.navigate.kb.meta","ctrl + click"):c.dz?n.N("links.navigate.kb.alt.mac","option + click"):n.N("links.navigate.kb.alt","alt + click");return e.url?new a.W5("",!0).appendMarkdown(`[${r}](${e.url.toString()}) (${s})`):(new a.W5).appendText(`${r} (${s})`)}(e,t),r}activate(e,t){e.changeDecorationOptions(this.decorationId,I._getOptions(this.link,t,!0))}deactivate(e,t){e.changeDecorationOptions(this.decorationId,I._getOptions(this.link,t,!1))}}let O=class e{constructor(e,t,i){this.listenersToRemove=new l.SL,this.editor=e,this.openerService=t,this.notificationService=i;let n=new g.yN(e);this.listenersToRemove.add(n),this.listenersToRemove.add(n.onMouseMoveOrRelevantKeyDown((([e,t])=>{this._onEditorMouseMove(e,t)}))),this.listenersToRemove.add(n.onExecute((e=>{this.onEditorMouseUp(e)}))),this.listenersToRemove.add(n.onCancel((e=>{this.cleanUpActiveLinkDecoration()}))),this.enabled=e.getOption(54),this.listenersToRemove.add(e.onDidChangeConfiguration((t=>{const i=e.getOption(54);this.enabled!==i&&(this.enabled=i,this.updateDecorations([]),this.stop(),this.beginCompute())}))),this.listenersToRemove.add(e.onDidChangeModelContent((e=>this.onChange()))),this.listenersToRemove.add(e.onDidChangeModel((e=>this.onModelChanged()))),this.listenersToRemove.add(e.onDidChangeModelLanguage((e=>this.onModelModeChanged()))),this.listenersToRemove.add(u.pM.onDidChange((e=>this.onModelModeChanged()))),this.timeout=new r._F,this.computePromise=null,this.activeLinksList=null,this.currentOccurrences={},this.activeLinkDecorationId=null,this.beginCompute()}static get(t){return t.getContribution(e.ID)}onModelChanged(){this.currentOccurrences={},this.activeLinkDecorationId=null,this.stop(),this.beginCompute()}onModelModeChanged(){this.stop(),this.beginCompute()}onChange(){this.timeout.setIfNotSet((()=>this.beginCompute()),e.RECOMPUTE_TIME)}beginCompute(){return e=this,t=void 0,n=function*(){if(!this.editor.hasModel()||!this.enabled)return;const e=this.editor.getModel();if(u.pM.has(e)){this.activeLinksList&&(this.activeLinksList.dispose(),this.activeLinksList=null),this.computePromise=r.PG((t=>C(e,t)));try{this.activeLinksList=yield this.computePromise,this.updateDecorations(this.activeLinksList.links)}catch(e){(0,o.dL)(e)}finally{this.computePromise=null}}},new((i=void 0)||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}));var e,t,i,n}updateDecorations(e){const t="altKey"===this.editor.getOption(61);let i=[],n=Object.keys(this.currentOccurrences);for(let e=0,t=n.length;e<t;e++){let t=n[e],r=this.currentOccurrences[t];i.push(r.decorationId)}let r=[];if(e)for(const i of e)r.push(I.decoration(i,t));let s=this.editor.deltaDecorations(i,r);this.currentOccurrences={},this.activeLinkDecorationId=null;for(let t=0,i=s.length;t<i;t++){let i=new I(e[t],s[t]);this.currentOccurrences[i.decorationId]=i}}_onEditorMouseMove(e,t){const i="altKey"===this.editor.getOption(61);if(this.isEnabled(e,t)){this.cleanUpActiveLinkDecoration();const t=this.getLinkOccurrence(e.target.position);t&&this.editor.changeDecorations((e=>{t.activate(e,i),this.activeLinkDecorationId=t.decorationId}))}else this.cleanUpActiveLinkDecoration()}cleanUpActiveLinkDecoration(){const e="altKey"===this.editor.getOption(61);if(this.activeLinkDecorationId){const t=this.currentOccurrences[this.activeLinkDecorationId];t&&this.editor.changeDecorations((i=>{t.deactivate(i,e)})),this.activeLinkDecorationId=null}}onEditorMouseUp(e){if(!this.isEnabled(e))return;const t=this.getLinkOccurrence(e.target.position);t&&this.openLinkOccurrence(t,e.hasSideBySideModifier,!0)}openLinkOccurrence(e,t,i=!1){if(!this.openerService)return;const{link:r}=e;r.resolve(s.T.None).then((e=>{if("string"==typeof e&&this.editor.hasModel()){const t=this.editor.getModel().uri;if(t.scheme===M.l.file&&N.Ny(e,"file:")){const i=f.o.parse(e);if(i.scheme===M.l.file){const n=D.z_(i);let r=null;N.Ny(n,"/./")?r=`.${n.substr(1)}`:N.Ny(n,"//./")&&(r=`.${n.substr(2)}`),r&&(e=D.Vo(t,r))}}}return this.openerService.open(e,{openToSide:t,fromUserGesture:i})}),(e=>{const t=e instanceof Error?e.message:e;"invalid"===t?this.notificationService.warn(n.N("invalid.url","Failed to open this link because it is not well-formed: {0}",r.url.toString())):"missing"===t?this.notificationService.warn(n.N("missing.url","Failed to open this link because its target is missing.")):(0,o.dL)(e)}))}getLinkOccurrence(e){if(!this.editor.hasModel()||!e)return null;const t=this.editor.getModel().getDecorationsInRange({startLineNumber:e.lineNumber,startColumn:e.column,endLineNumber:e.lineNumber,endColumn:e.column},0,!0);for(const e of t){const t=this.currentOccurrences[e.id];if(t)return t}return null}isEnabled(e,t){return Boolean(6===e.target.type&&(e.hasTriggerModifier||t&&t.keyCodeIsTriggerKey))}stop(){this.timeout.cancel(),this.activeLinksList&&this.activeLinksList.dispose(),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){this.listenersToRemove.dispose(),this.stop(),this.timeout.dispose()}};O.ID="editor.linkDetector",O.RECOMPUTE_TIME=1e3,O=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([E(1,k.v4),E(2,S.lT)],O);class A extends d.R6{constructor(){super({id:"editor.action.openLink",label:n.N("label","Open Link"),alias:"Open Link",precondition:void 0})}run(e,t){let i=O.get(t);if(!i)return;if(!t.hasModel())return;let n=t.getSelections();for(let e of n){let t=i.getLinkOccurrence(e.getEndPosition());t&&i.openLinkOccurrence(t,!1)}}}(0,d._K)(O.ID,O),(0,d.Qr)(A),(0,L.Ic)(((e,t)=>{const i=e.getColor(x._Y);i&&t.addRule(`.monaco-editor .detected-link-active { color: ${i} !important; }`)}))},53335:(e,t,i)=>{"use strict";i.d(t,{$:()=>M});var n=i(65321),r=i(48764),s=i(17301),o=i(59365),a=i(44742),l=i(33720);let c;!function e(t,i,n){function r(o,a){if(!i[o]){if(!t[o]){if(s)return s(o,!0);var l=new Error("Cannot find module '"+o+"'");throw l.code="MODULE_NOT_FOUND",l}var c=i[o]={exports:{}};t[o][0].call(c.exports,(function(e){return r(t[o][1][e]||e)}),c,c.exports,e,t,i,n)}return i[o].exports}for(var s=void 0,o=0;o<n.length;o++)r(n[o]);return r}({1:[function(e,t,i){var n=e("./toMap");t.exports={uris:n(["background","base","cite","href","longdesc","src","usemap"])}},{"./toMap":10}],2:[function(e,t,i){t.exports={allowedAttributes:{"*":["title","accesskey"],a:["href","name","target","aria-label"],iframe:["allowfullscreen","frameborder","src"],img:["src","alt","title","aria-label"]},allowedClasses:{},allowedSchemes:["http","https","mailto"],allowedTags:["a","abbr","article","b","blockquote","br","caption","code","del","details","div","em","h1","h2","h3","h4","h5","h6","hr","i","img","ins","kbd","li","main","mark","ol","p","pre","section","span","strike","strong","sub","summary","sup","table","tbody","td","th","thead","tr","u","ul"],filter:null}},{}],3:[function(e,t,i){var n=e("./toMap");t.exports={voids:n(["area","br","col","hr","img","wbr","input","base","basefont","link","meta"])}},{"./toMap":10}],4:[function(e,t,i){e("he");var n=e("assignment"),r=e("./parser"),s=e("./sanitizer"),o=e("./defaults");function a(e,t,i){var a=[],l=!0===i?t:n({},o,t),c=s(a,l);return r(e,c),a.join("")}a.defaults=o,t.exports=a,c=a},{"./defaults":2,"./parser":7,"./sanitizer":8,assignment:6,he:9}],5:[function(e,t,i){t.exports=function(e){return"string"==typeof e?e.toLowerCase():e}},{}],6:[function(e,t,i){t.exports=function e(t){for(var i,n,r=Array.prototype.slice.call(arguments,1);r.length;)for(n in i=r.shift())i.hasOwnProperty(n)&&("[object Object]"===Object.prototype.toString.call(t[n])?t[n]=e(t[n],i[n]):t[n]=i[n]);return t}},{}],7:[function(e,t,i){var n=e("he"),r=e("./lowercase"),s=(e("./attributes"),e("./elements")),o=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,a=/^<\s*\/\s*([\w:-]+)[^>]*>/,l=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,c=/^</,d=/^<\s*\//;t.exports=function(e,t){for(var i,h=function(){var e=[];return e.lastItem=function(){return e[e.length-1]},e}(),u=e;e;)g();function g(){var n;i=!0,"\x3c!--"===e.substr(0,4)?(n=e.indexOf("--\x3e"))>=0&&(t.comment&&t.comment(e.substring(4,n)),e=e.substring(n+3),i=!1):d.test(e)?f(a,m):c.test(e)&&f(o,p),function(){if(i){var n,r=e.indexOf("<");r>=0?(n=e.substring(0,r),e=e.substring(r)):(n=e,e=""),t.chars&&t.chars(n)}}();var r=e===u;u=e,r&&(e="")}function f(t,n){var r=e.match(t);r&&(e=e.substring(r[0].length),r[0].replace(t,n),i=!1)}function p(e,i,o,a){var c={},d=r(i),u=s.voids[d]||!!a;o.replace(l,(function(e,t,i,r,s){c[t]=void 0===i&&void 0===r&&void 0===s?void 0:n.decode(i||r||s||"")})),u||h.push(d),t.start&&t.start(d,c,u)}function m(e,i){var n,s=0,o=r(i);if(o)for(s=h.length-1;s>=0&&h[s]!==o;s--);if(s>=0){for(n=h.length-1;n>=s;n--)t.end&&t.end(h[n]);h.length=s}}m()}},{"./attributes":1,"./elements":3,"./lowercase":5,he:9}],8:[function(e,t,i){var n=e("he"),r=e("./lowercase"),s=e("./attributes"),o=e("./elements");t.exports=function(e,t){var i,a=t||{};return d(),{start:function(e,t,o){var d=r(e);i.ignoring?c(d):-1!==(a.allowedTags||[]).indexOf(d)&&(!a.filter||a.filter({tag:d,attrs:t}))?(l("<"),l(d),Object.keys(t).forEach((function(e){var i=t[e],o=(a.allowedClasses||{})[d]||[],c=(a.allowedAttributes||{})[d]||[];c=c.concat((a.allowedAttributes||{})["*"]||[]);var h=r(e);("class"===h&&-1===c.indexOf(h)?(i=i.split(" ").filter((function(e){return o&&-1!==o.indexOf(e)})).join(" ").trim()).length:-1!==c.indexOf(h)&&(!0!==s.uris[h]||function(e){var t=e[0];if("#"===t||"/"===t)return!0;var i=e.indexOf(":");if(-1===i)return!0;var n=e.indexOf("?");if(-1!==n&&i>n)return!0;var r=e.indexOf("#");return-1!==r&&i>r||a.allowedSchemes.some((function(t){return 0===e.indexOf(t+":")}))}(i)))&&(l(" "),l(e),"string"==typeof i&&(l('="'),l(n.encode(i)),l('"')))})),l(o?"/>":">")):c(d)},end:function(e){var t=r(e);-1!==(a.allowedTags||[]).indexOf(t)&&!1===i.ignoring?(l("</"),l(t),l(">")):function(e){i.ignoring===e&&--i.depth<=0&&d()}(t)},chars:function(e){!1===i.ignoring&&l(a.transformText?a.transformText(e):e)}};function l(t){e.push(t)}function c(e){o.voids[e]||(!1===i.ignoring?i={ignoring:e,depth:1}:i.ignoring===e&&i.depth++)}function d(){i={ignoring:!1,depth:0}}}},{"./attributes":1,"./elements":3,"./lowercase":5,he:9}],9:[function(e,t,i){var n={"&":"&","<":"<",">":">",'"':""","'":"'"},r={"&":"&","<":"<",">":">",""":'"',"'":"'"},s=/(&|<|>|"|')/g,o=/[&<>"']/g;function a(e){return n[e]}function l(e){return r[e]}function c(e){return null==e?"":String(e).replace(o,a)}function d(e){return null==e?"":String(e).replace(s,l)}c.options=d.options={},t.exports={encode:c,escape:c,decode:d,unescape:d,version:"1.0.0-browser"}},{}],10:[function(e,t,i){function n(e,t){return e[t]=!0,e}t.exports=function(e){return e.reduce(n,{})}},{}]},{},[4]);var d=c,h=i(23897),u=i(36248),g=i(97295),f=i(70666),p=i(66663),m=i(73046),_=i(95935),b=i(23938),v=i(50988),y=i(71531),w=i(55713),C=i(72065),S=i(4669),k=i(5976),x=i(43775),L=function(e,t){return function(i,n){t(i,n,e)}};let M=class extends k.JT{constructor(e,t,i=v.SW){super(),this._editor=e,this._modeService=t,this._openerService=i,this._onDidRenderCodeBlock=this._register(new S.Q5),this.onDidRenderCodeBlock=this._onDidRenderCodeBlock.event}getOptions(e){return{codeBlockRenderer:(e,t)=>{let i=null;if(e)i=this._modeService.getModeIdForLanguageName(e);else{const e=this._editor.getModel();e&&(i=e.getLanguageIdentifier().language)}return this._modeService.triggerMode(i||""),Promise.resolve(!0).then((e=>{const n=x.RW.getPromise(i||"");return n?n.then((e=>(0,w.C)(t,e))):(0,w.C)(t,void 0)})).then((e=>`<span style="font-family: ${this._editor.getOption(36).fontFamily}">${e}</span>`))},codeBlockRenderCallback:()=>this._onDidRenderCodeBlock.fire(),actionHandler:{callback:e=>{this._openerService.open(e,{fromUserGesture:!0}).catch(s.dL)},disposeables:e}}}render(e){const t=new k.SL;let i;return i=e?function(e,t={},i={}){var c;const v=(0,r.az)(t),y=function(t){let i;try{i=(0,h.Q)(decodeURIComponent(t))}catch(e){}return i?(i=(0,u.rs)(i,(t=>e.uris&&e.uris[t]?f.o.revive(e.uris[t]):void 0)),encodeURIComponent(JSON.stringify(i))):t},w=function(t,i){const r=e.uris&&e.uris[t];if(!r)return t;let s=f.o.revive(r);return f.o.parse(t).toString()===s.toString()?t:i?n.uD(s).toString(!0):(s.query&&(s=s.with({query:y(s.query)})),s.toString())};let C;const S=new Promise((e=>C=e)),k=new l.Renderer;k.image=(e,i,n)=>{let r=[],s=[];if(e){({href:e,dimensions:r}=(0,o.v1)(e)),e=w(e,!0);try{const i=f.o.parse(e);t.baseUrl&&i.scheme===p.l.file&&(e=(0,_.i3)(t.baseUrl,e).toString())}catch(e){}s.push(`src="${e}"`)}return n&&s.push(`alt="${n}"`),i&&s.push(`title="${i}"`),r.length&&(s=s.concat(r)),"<img "+s.join(" ")+">"},k.link=(i,n,r)=>(i===r&&(r=(0,o.oR)(r)),i=w(i,!1),t.baseUrl&&(/^\w[\w\d+.-]*:/.test(i)||(i=(0,_.i3)(t.baseUrl,i).toString())),n=(0,o.oR)(n),!(i=(0,o.oR)(i))||i.match(/^data:|javascript:/i)||i.match(/^command:/i)&&!e.isTrusted||i.match(/^command:(\/\/\/)?_workbench\.downloadResource/i)?r:`<a href="#" data-href="${i=i.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}" title="${n||i}">${r}</a>`),k.paragraph=t=>`<p>${e.supportThemeIcons?(0,m.Mi)(t):t}</p>`,t.codeBlockRenderer&&(k.code=(e,i)=>{const n=t.codeBlockRenderer(i,e),r=a.a.nextId(),s=Promise.all([n,S]).then((e=>{const t=e[0],i=v.querySelector(`div[data-code="${r}"]`);i&&(i.innerHTML=t)})).catch((e=>{}));return t.codeBlockRenderCallback&&s.then(t.codeBlockRenderCallback),`<div class="code" data-code="${r}">${(0,g.YU)(e)}</div>`});const x=t.actionHandler;x&&[n.tw.CLICK,n.tw.AUXCLICK].forEach((e=>{x.disposeables.add(n.nm(v,e,(e=>{const t=new b.n(e);if(!t.leftButton&&!t.middleButton)return;let i=t.target;if("A"===i.tagName||(i=i.parentElement,i&&"A"===i.tagName))try{const e=i.dataset.href;e&&x.callback(e,t)}catch(e){(0,s.dL)(e)}finally{t.preventDefault()}})))})),i.sanitizer=t=>(e.isTrusted?t.match(/^(<span[^<]+>)|(<\/\s*span>)$/):void 0)?t:"",i.sanitize=!0,i.renderer=k;const L=[p.l.http,p.l.https,p.l.mailto,p.l.data,p.l.file,p.l.vscodeRemote,p.l.vscodeRemoteResource];e.isTrusted&&L.push(p.l.command);let M=null!==(c=e.value)&&void 0!==c?c:"";M.length>1e5&&(M=`${M.substr(0,1e5)}…`);const D=l.parse(e.supportThemeIcons?(0,m.dg)(M):M,i);return v.innerHTML=d(D,{allowedSchemes:L,allowedTags:["ul","li","p","code","blockquote","ol","h1","h2","h3","h4","h5","h6","hr","em","pre","table","thead","tbody","tr","th","td","div","del","a","strong","br","img","span"],allowedAttributes:{a:["href","name","target","data-href"],img:["src","title","alt","width","height"],div:["class","data-code"],span:["class","style"],th:["align"],td:["align"]},filter:function(t){return!("span"===t.tag&&e.isTrusted&&1===Object.keys(t.attrs).length&&(t.attrs.style?!t.attrs.style.match(/^(color\:#[0-9a-fA-F]+;)?(background-color\:#[0-9a-fA-F]+;)?$/):!t.attrs.class||!t.attrs.class.match(/^codicon codicon-[a-z\-]+( codicon-animation-[a-z\-]+)?$/)))}}),C(),v}(e,this.getOptions(t)):document.createElement("span"),{element:i,dispose:()=>t.dispose()}}};M=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([L(1,y.h),L(2,(0,C.jt)(v.v4))],M)},82276:(e,t,i)=>{"use strict";i.d(t,{O:()=>u});var n=i(63580),r=i(15393),s=i(5976),o=i(85152),a=i(24314),l=i(16830),c=i(38819),d=i(97781),h=i(73910);let u=class e extends s.JT{constructor(t,i){super(),this._messageWidget=this._register(new s.XK),this._messageListeners=this._register(new s.SL),this._editor=t,this._visible=e.MESSAGE_VISIBLE.bindTo(i),this._register(this._editor.onDidAttemptReadOnlyEdit((()=>this._onDidAttemptReadOnlyEdit())))}static get(t){return t.getContribution(e.ID)}dispose(){super.dispose(),this._visible.reset()}showMessage(e,t){let i;(0,o.Z9)(e),this._visible.set(!0),this._messageWidget.clear(),this._messageListeners.clear(),this._messageWidget.value=new m(this._editor,t,e),this._messageListeners.add(this._editor.onDidBlurEditorText((()=>this.closeMessage()))),this._messageListeners.add(this._editor.onDidChangeCursorPosition((()=>this.closeMessage()))),this._messageListeners.add(this._editor.onDidDispose((()=>this.closeMessage()))),this._messageListeners.add(this._editor.onDidChangeModel((()=>this.closeMessage()))),this._messageListeners.add(new r._F((()=>this.closeMessage()),3e3)),this._messageListeners.add(this._editor.onMouseMove((e=>{e.target.position&&(i?i.containsPosition(e.target.position)||this.closeMessage():i=new a.e(t.lineNumber-3,1,e.target.position.lineNumber+3,1))})))}closeMessage(){this._visible.reset(),this._messageListeners.clear(),this._messageWidget.value&&this._messageListeners.add(m.fadeOut(this._messageWidget.value))}_onDidAttemptReadOnlyEdit(){this._editor.hasModel()&&this.showMessage(n.N("editor.readonly","Cannot edit in read-only editor"),this._editor.getPosition())}};var g,f;u.ID="editor.contrib.messageController",u.MESSAGE_VISIBLE=new c.uy("messageVisible",!1),u=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(g=1,f=c.i6,function(e,t){f(e,t,g)})],u);const p=l._l.bindToContribution(u.get);(0,l.fK)(new p({id:"leaveEditorMessage",precondition:u.MESSAGE_VISIBLE,handler:e=>e.closeMessage(),kbOpts:{weight:130,primary:9}}));class m{constructor(e,{lineNumber:t,column:i},n){this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this._editor=e,this._editor.revealLinesInCenterIfOutsideViewport(t,t,0),this._position={lineNumber:t,column:i-1},this._domNode=document.createElement("div"),this._domNode.classList.add("monaco-editor-overlaymessage");const r=document.createElement("div");r.classList.add("message"),r.textContent=n,this._domNode.appendChild(r);const s=document.createElement("div");s.classList.add("anchor"),this._domNode.appendChild(s),this._editor.addContentWidget(this),this._domNode.classList.add("fadeIn")}static fadeOut(e){let t;const i=()=>{e.dispose(),clearTimeout(t),e.getDomNode().removeEventListener("animationend",i)};return t=setTimeout(i,110),e.getDomNode().addEventListener("animationend",i),e.getDomNode().classList.add("fadeOut"),{dispose:i}}dispose(){this._editor.removeContentWidget(this)}getId(){return"messageoverlay"}getDomNode(){return this._domNode}getPosition(){return{position:this._position,preference:[1,2]}}}(0,l._K)(u.ID,u),(0,d.Ic)(((e,t)=>{const i=e.getColor(h.EP);if(i){let n=e.type===d.QP?2:1;t.addRule(`.monaco-editor .monaco-editor-overlaymessage .anchor { border-top-color: ${i}; }`),t.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { border: ${n}px solid ${i}; }`)}const n=e.getColor(h._l);n&&t.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { background-color: ${n}; }`);const r=e.getColor(h.YI);r&&t.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { color: ${r}; }`)}))},38486:(e,t,i)=>{"use strict";i.r(t),i.d(t,{InsertCursorAbove:()=>y,InsertCursorBelow:()=>w,MultiCursorSessionResult:()=>x,MultiCursorSession:()=>L,MultiCursorSelectionController:()=>M,MultiCursorSelectionControllerAction:()=>D,AddSelectionToNextFindMatchAction:()=>N,AddSelectionToPreviousFindMatchAction:()=>E,MoveSelectionToNextFindMatchAction:()=>T,MoveSelectionToPreviousFindMatchAction:()=>I,SelectHighlightsAction:()=>O,CompatChangeAll:()=>A,SelectionHighlighter:()=>P});var n=i(63580),r=i(15393),s=i(22258),o=i(5976),a=i(16830),l=i(83814),c=i(24314),d=i(3860),h=i(29102),u=i(84973),g=i(3411),f=i(43775),p=i(93391),m=i(84144),_=i(73910),b=i(97781),v=i(38819);class y extends a.R6{constructor(){super({id:"editor.action.insertCursorAbove",label:n.N("mutlicursor.insertAbove","Add Cursor Above"),alias:"Add Cursor Above",precondition:void 0,kbOpts:{kbExpr:h.u.editorTextFocus,primary:2576,linux:{primary:1552,secondary:[3088]},weight:100},menuOpts:{menuId:m.eH.MenubarSelectionMenu,group:"3_multi",title:n.N({key:"miInsertCursorAbove",comment:["&& denotes a mnemonic"]},"&&Add Cursor Above"),order:2}})}run(e,t,i){if(!t.hasModel())return;const n=i&&!0===i.logicalLine,r=t._getViewModel();r.cursorConfig.readOnly||(r.pushStackElement(),r.setCursorStates(i.source,3,l.P.addCursorUp(r,r.getCursorStates(),n)),r.revealTopMostCursor(i.source))}}class w extends a.R6{constructor(){super({id:"editor.action.insertCursorBelow",label:n.N("mutlicursor.insertBelow","Add Cursor Below"),alias:"Add Cursor Below",precondition:void 0,kbOpts:{kbExpr:h.u.editorTextFocus,primary:2578,linux:{primary:1554,secondary:[3090]},weight:100},menuOpts:{menuId:m.eH.MenubarSelectionMenu,group:"3_multi",title:n.N({key:"miInsertCursorBelow",comment:["&& denotes a mnemonic"]},"A&&dd Cursor Below"),order:3}})}run(e,t,i){if(!t.hasModel())return;const n=i&&!0===i.logicalLine,r=t._getViewModel();r.cursorConfig.readOnly||(r.pushStackElement(),r.setCursorStates(i.source,3,l.P.addCursorDown(r,r.getCursorStates(),n)),r.revealBottomMostCursor(i.source))}}class C extends a.R6{constructor(){super({id:"editor.action.insertCursorAtEndOfEachLineSelected",label:n.N("mutlicursor.insertAtEndOfEachLineSelected","Add Cursors to Line Ends"),alias:"Add Cursors to Line Ends",precondition:void 0,kbOpts:{kbExpr:h.u.editorTextFocus,primary:1575,weight:100},menuOpts:{menuId:m.eH.MenubarSelectionMenu,group:"3_multi",title:n.N({key:"miInsertCursorAtEndOfEachLineSelected",comment:["&& denotes a mnemonic"]},"Add C&&ursors to Line Ends"),order:4}})}getCursorsForSelection(e,t,i){if(!e.isEmpty()){for(let n=e.startLineNumber;n<e.endLineNumber;n++){let e=t.getLineMaxColumn(n);i.push(new d.Y(n,e,n,e))}e.endColumn>1&&i.push(new d.Y(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn))}}run(e,t){if(!t.hasModel())return;const i=t.getModel(),n=t.getSelections();let r=[];n.forEach((e=>this.getCursorsForSelection(e,i,r))),r.length>0&&t.setSelections(r)}}class S extends a.R6{constructor(){super({id:"editor.action.addCursorsToBottom",label:n.N("mutlicursor.addCursorsToBottom","Add Cursors To Bottom"),alias:"Add Cursors To Bottom",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections(),n=t.getModel().getLineCount();let r=[];for(let e=i[0].startLineNumber;e<=n;e++)r.push(new d.Y(e,i[0].startColumn,e,i[0].endColumn));r.length>0&&t.setSelections(r)}}class k extends a.R6{constructor(){super({id:"editor.action.addCursorsToTop",label:n.N("mutlicursor.addCursorsToTop","Add Cursors To Top"),alias:"Add Cursors To Top",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getSelections();let n=[];for(let e=i[0].startLineNumber;e>=1;e--)n.push(new d.Y(e,i[0].startColumn,e,i[0].endColumn));n.length>0&&t.setSelections(n)}}class x{constructor(e,t,i){this.selections=e,this.revealRange=t,this.revealScrollType=i}}class L{constructor(e,t,i,n,r,s,o){this._editor=e,this.findController=t,this.isDisconnectedFromFindController=i,this.searchText=n,this.wholeWord=r,this.matchCase=s,this.currentMatch=o}static create(e,t){if(!e.hasModel())return null;const i=t.getState();if(!e.hasTextFocus()&&i.isRevealed&&i.searchString.length>0)return new L(e,t,!1,i.searchString,i.wholeWord,i.matchCase,null);let n,r,s=!1;const o=e.getSelections();1===o.length&&o[0].isEmpty()?(s=!0,n=!0,r=!0):(n=i.wholeWord,r=i.matchCase);const a=e.getSelection();let l,c=null;if(a.isEmpty()){const t=e.getConfiguredWordAtPosition(a.getStartPosition());if(!t)return null;l=t.word,c=new d.Y(a.startLineNumber,t.startColumn,a.startLineNumber,t.endColumn)}else l=e.getModel().getValueInRange(a).replace(/\r\n/g,"\n");return new L(e,t,s,l,n,r,c)}addSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new x(t.concat(e),e,0)}moveSelectionToNextFindMatch(){if(!this._editor.hasModel())return null;const e=this._getNextMatch();if(!e)return null;const t=this._editor.getSelections();return new x(t.slice(0,t.length-1).concat(e),e,0)}_getNextMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findNextMatch(this.searchText,t.getEndPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(105):null,!1);return i?new d.Y(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}addSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new x(t.concat(e),e,0)}moveSelectionToPreviousFindMatch(){if(!this._editor.hasModel())return null;const e=this._getPreviousMatch();if(!e)return null;const t=this._editor.getSelections();return new x(t.slice(0,t.length-1).concat(e),e,0)}_getPreviousMatch(){if(!this._editor.hasModel())return null;if(this.currentMatch){const e=this.currentMatch;return this.currentMatch=null,e}this.findController.highlightFindOptions();const e=this._editor.getSelections(),t=e[e.length-1],i=this._editor.getModel().findPreviousMatch(this.searchText,t.getStartPosition(),!1,this.matchCase,this.wholeWord?this._editor.getOption(105):null,!1);return i?new d.Y(i.range.startLineNumber,i.range.startColumn,i.range.endLineNumber,i.range.endColumn):null}selectAll(){return this._editor.hasModel()?(this.findController.highlightFindOptions(),this._editor.getModel().findMatches(this.searchText,!0,!1,this.matchCase,this.wholeWord?this._editor.getOption(105):null,!1,1073741824)):[]}}class M extends o.JT{constructor(e){super(),this._sessionDispose=this._register(new o.SL),this._editor=e,this._ignoreSelectionChange=!1,this._session=null}static get(e){return e.getContribution(M.ID)}dispose(){this._endSession(),super.dispose()}_beginSessionIfNeeded(e){if(!this._session){const t=L.create(this._editor,e);if(!t)return;this._session=t;const i={searchString:this._session.searchText};this._session.isDisconnectedFromFindController&&(i.wholeWordOverride=1,i.matchCaseOverride=1,i.isRegexOverride=2),e.getState().change(i,!1),this._sessionDispose.add(this._editor.onDidChangeCursorSelection((e=>{this._ignoreSelectionChange||this._endSession()}))),this._sessionDispose.add(this._editor.onDidBlurEditorText((()=>{this._endSession()}))),this._sessionDispose.add(e.getState().onFindReplaceStateChange((e=>{(e.matchCase||e.wholeWord)&&this._endSession()})))}}_endSession(){if(this._sessionDispose.clear(),this._session&&this._session.isDisconnectedFromFindController){const e={wholeWordOverride:0,matchCaseOverride:0,isRegexOverride:0};this._session.findController.getState().change(e,!1)}this._session=null}_setSelections(e){this._ignoreSelectionChange=!0,this._editor.setSelections(e),this._ignoreSelectionChange=!1}_expandEmptyToWord(e,t){if(!t.isEmpty())return t;const i=this._editor.getConfiguredWordAtPosition(t.getStartPosition());return i?new d.Y(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):t}_applySessionResult(e){e&&(this._setSelections(e.selections),e.revealRange&&this._editor.revealRangeInCenterIfOutsideViewport(e.revealRange,e.revealScrollType))}getSession(e){return this._session}addSelectionToNextFindMatch(e){if(this._editor.hasModel()){if(!this._session){const t=this._editor.getSelections();if(t.length>1){const i=e.getState().matchCase;if(!F(this._editor.getModel(),t,i)){const e=this._editor.getModel();let i=[];for(let n=0,r=t.length;n<r;n++)i[n]=this._expandEmptyToWord(e,t[n]);return void this._editor.setSelections(i)}}}this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToNextFindMatch())}}addSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.addSelectionToPreviousFindMatch())}moveSelectionToNextFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToNextFindMatch())}moveSelectionToPreviousFindMatch(e){this._beginSessionIfNeeded(e),this._session&&this._applySessionResult(this._session.moveSelectionToPreviousFindMatch())}selectAll(e){if(!this._editor.hasModel())return;let t=null;const i=e.getState();if(i.isRevealed&&i.searchString.length>0&&i.isRegex)t=this._editor.getModel().findMatches(i.searchString,!0,i.isRegex,i.matchCase,i.wholeWord?this._editor.getOption(105):null,!1,1073741824);else{if(this._beginSessionIfNeeded(e),!this._session)return;t=this._session.selectAll()}if(i.searchScope){const e=i.searchScope;let n=[];t.forEach((t=>{e.forEach((e=>{t.range.endLineNumber<=e.endLineNumber&&t.range.startLineNumber>=e.startLineNumber&&n.push(t)}))})),t=n}if(t.length>0){const e=this._editor.getSelection();for(let i=0,n=t.length;i<n;i++){const n=t[i];if(n.range.intersectRanges(e)){t[i]=t[0],t[0]=n;break}}this._setSelections(t.map((e=>new d.Y(e.range.startLineNumber,e.range.startColumn,e.range.endLineNumber,e.range.endColumn))))}}}M.ID="editor.contrib.multiCursorController";class D extends a.R6{run(e,t){const i=M.get(t);if(!i)return;const n=p.CommonFindController.get(t);n&&this._run(i,n)}}class N extends D{constructor(){super({id:"editor.action.addSelectionToNextFindMatch",label:n.N("addSelectionToNextFindMatch","Add Selection To Next Find Match"),alias:"Add Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:h.u.focus,primary:2082,weight:100},menuOpts:{menuId:m.eH.MenubarSelectionMenu,group:"3_multi",title:n.N({key:"miAddSelectionToNextFindMatch",comment:["&& denotes a mnemonic"]},"Add &&Next Occurrence"),order:5}})}_run(e,t){e.addSelectionToNextFindMatch(t)}}class E extends D{constructor(){super({id:"editor.action.addSelectionToPreviousFindMatch",label:n.N("addSelectionToPreviousFindMatch","Add Selection To Previous Find Match"),alias:"Add Selection To Previous Find Match",precondition:void 0,menuOpts:{menuId:m.eH.MenubarSelectionMenu,group:"3_multi",title:n.N({key:"miAddSelectionToPreviousFindMatch",comment:["&& denotes a mnemonic"]},"Add P&&revious Occurrence"),order:6}})}_run(e,t){e.addSelectionToPreviousFindMatch(t)}}class T extends D{constructor(){super({id:"editor.action.moveSelectionToNextFindMatch",label:n.N("moveSelectionToNextFindMatch","Move Last Selection To Next Find Match"),alias:"Move Last Selection To Next Find Match",precondition:void 0,kbOpts:{kbExpr:h.u.focus,primary:(0,s.gx)(2089,2082),weight:100}})}_run(e,t){e.moveSelectionToNextFindMatch(t)}}class I extends D{constructor(){super({id:"editor.action.moveSelectionToPreviousFindMatch",label:n.N("moveSelectionToPreviousFindMatch","Move Last Selection To Previous Find Match"),alias:"Move Last Selection To Previous Find Match",precondition:void 0})}_run(e,t){e.moveSelectionToPreviousFindMatch(t)}}class O extends D{constructor(){super({id:"editor.action.selectHighlights",label:n.N("selectAllOccurrencesOfFindMatch","Select All Occurrences of Find Match"),alias:"Select All Occurrences of Find Match",precondition:void 0,kbOpts:{kbExpr:h.u.focus,primary:3114,weight:100},menuOpts:{menuId:m.eH.MenubarSelectionMenu,group:"3_multi",title:n.N({key:"miSelectHighlights",comment:["&& denotes a mnemonic"]},"Select All &&Occurrences"),order:7}})}_run(e,t){e.selectAll(t)}}class A extends D{constructor(){super({id:"editor.action.changeAll",label:n.N("changeAll.label","Change All Occurrences"),alias:"Change All Occurrences",precondition:v.Ao.and(h.u.writable,h.u.editorTextFocus),kbOpts:{kbExpr:h.u.editorTextFocus,primary:2108,weight:100},contextMenuOpts:{group:"1_modification",order:1.2}})}_run(e,t){e.selectAll(t)}}class R{constructor(e,t,i,n){this.searchText=e,this.matchCase=t,this.wordSeparators=i,this.modelVersionId=n}static softEquals(e,t){return!e&&!t||!(!e||!t)&&e.searchText===t.searchText&&e.matchCase===t.matchCase&&e.wordSeparators===t.wordSeparators&&e.modelVersionId===t.modelVersionId}}class P extends o.JT{constructor(e){super(),this.editor=e,this._isEnabled=e.getOption(89),this.decorations=[],this.updateSoon=this._register(new r.pY((()=>this._update()),300)),this.state=null,this._register(e.onDidChangeConfiguration((t=>{this._isEnabled=e.getOption(89)}))),this._register(e.onDidChangeCursorSelection((e=>{this._isEnabled&&(e.selection.isEmpty()?3===e.reason?(this.state&&this._setState(null),this.updateSoon.schedule()):this._setState(null):this._update())}))),this._register(e.onDidChangeModel((e=>{this._setState(null)}))),this._register(e.onDidChangeModelContent((e=>{this._isEnabled&&this.updateSoon.schedule()}))),this._register(p.CommonFindController.get(e).getState().onFindReplaceStateChange((e=>{this._update()})))}_update(){this._setState(P._createState(this._isEnabled,this.editor))}static _createState(e,t){if(!e)return null;if(!t.hasModel())return null;const i=t.getSelection();if(i.startLineNumber!==i.endLineNumber)return null;const n=M.get(t);if(!n)return null;const r=p.CommonFindController.get(t);if(!r)return null;let s=n.getSession(r);if(!s){const e=t.getSelections();if(e.length>1){const i=r.getState().matchCase;if(!F(t.getModel(),e,i))return null}s=L.create(t,r)}if(!s)return null;if(s.currentMatch)return null;if(/^[ \t]+$/.test(s.searchText))return null;if(s.searchText.length>200)return null;const o=r.getState(),a=o.matchCase;if(o.isRevealed){let e=o.searchString;a||(e=e.toLowerCase());let t=s.searchText;if(a||(t=t.toLowerCase()),e===t&&s.matchCase===o.matchCase&&s.wholeWord===o.wholeWord&&!o.isRegex)return null}return new R(s.searchText,s.matchCase,s.wholeWord?t.getOption(105):null,t.getModel().getVersionId())}_setState(e){if(R.softEquals(this.state,e))return void(this.state=e);if(this.state=e,!this.state)return void(this.decorations=this.editor.deltaDecorations(this.decorations,[]));if(!this.editor.hasModel())return;const t=this.editor.getModel();if(t.isTooLargeForTokenization())return;const i=f.vH.has(t)&&this.editor.getOption(63);let n=t.findMatches(this.state.searchText,!0,!1,this.state.matchCase,this.state.wordSeparators,!1).map((e=>e.range));n.sort(c.e.compareRangesUsingStarts);let r=this.editor.getSelections();r.sort(c.e.compareRangesUsingStarts);let s=[];for(let e=0,t=0,i=n.length,o=r.length;e<i;){const i=n[e];if(t>=o)s.push(i),e++;else{const n=c.e.compareRangesUsingStarts(i,r[t]);n<0?(!r[t].isEmpty()&&c.e.areIntersecting(i,r[t])||s.push(i),e++):(n>0||e++,t++)}}const o=s.map((e=>({range:e,options:i?P._SELECTION_HIGHLIGHT:P._SELECTION_HIGHLIGHT_OVERVIEW})));this.decorations=this.editor.deltaDecorations(this.decorations,o)}dispose(){this._setState(null),super.dispose()}}function F(e,t,i){const n=B(e,t[0],!i);for(let r=1,s=t.length;r<s;r++){const s=t[r];if(s.isEmpty())return!1;if(n!==B(e,s,!i))return!1}return!0}function B(e,t,i){const n=e.getValueInRange(t);return i?n.toLowerCase():n}P.ID="editor.contrib.selectionHighlighter",P._SELECTION_HIGHLIGHT_OVERVIEW=g.qx.register({stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,b.EN)(_.SP),position:u.sh.Center}}),P._SELECTION_HIGHLIGHT=g.qx.register({stickiness:1,className:"selectionHighlight"}),(0,a._K)(M.ID,M),(0,a._K)(P.ID,P),(0,a.Qr)(y),(0,a.Qr)(w),(0,a.Qr)(C),(0,a.Qr)(N),(0,a.Qr)(E),(0,a.Qr)(T),(0,a.Qr)(I),(0,a.Qr)(O),(0,a.Qr)(A),(0,a.Qr)(S),(0,a.Qr)(k)},40517:(e,t,i)=>{"use strict";i.r(t),i.d(t,{TriggerParameterHintsAction:()=>Y});var n=i(63580),r=i(5976),s=i(72065),o=i(29102),a=i(38819),l=i(16830),c=i(65321),d=i(4850),h=i(85152),u=i(9802),g=i(4669),f=i(71531),p=i(53335),m=i(15393),_=i(17301),b=i(43775),v=i(71050);const y={Visible:new a.uy("parameterHintsVisible",!1),MultipleSignatures:new a.uy("parameterHintsMultipleSignatures",!1)};function w(e,t,i,n){const r=b.nD.ordered(e);return(0,m.Ps)(r.map((r=>()=>Promise.resolve(r.provideSignatureHelp(e,t,n,i)).catch((e=>(0,_.Cp)(e))))))}(0,l.kT)("_executeSignatureHelpProvider",((e,t,i)=>{return n=void 0,r=void 0,o=function*(){const n=yield w(e,t,{triggerKind:b.WW.Invoke,isRetrigger:!1,triggerCharacter:i.triggerCharacter},v.T.None);if(n)return setTimeout((()=>n.dispose()),0),n.value},new((s=void 0)||(s=Promise))((function(e,t){function i(e){try{l(o.next(e))}catch(e){t(e)}}function a(e){try{l(o.throw(e))}catch(e){t(e)}}function l(t){var n;t.done?e(t.value):(n=t.value,n instanceof s?n:new s((function(e){e(n)}))).then(i,a)}l((o=o.apply(n,r||[])).next())}));var n,r,s,o}));var C,S=i(50988),k=i(73910),x=i(97781),L=i(44906);!function(e){e.Default={type:0},e.Pending=class{constructor(e){this.request=e,this.type=2}},e.Active=class{constructor(e){this.hints=e,this.type=1}}}(C||(C={}));class M extends r.JT{constructor(e,t=M.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new g.Q5),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=C.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new r.XK),this.triggerChars=new L.q,this.retriggerChars=new L.q,this.triggerId=0,this.editor=e,this.throttledDelayer=new m.vp(t),this._register(this.editor.onDidChangeConfiguration((()=>this.onEditorConfigurationChange()))),this._register(this.editor.onDidChangeModel((e=>this.onModelChanged()))),this._register(this.editor.onDidChangeModelLanguage((e=>this.onModelChanged()))),this._register(this.editor.onDidChangeCursorSelection((e=>this.onCursorChange(e)))),this._register(this.editor.onDidChangeModelContent((e=>this.onModelContentChange()))),this._register(b.nD.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType((e=>this.onDidType(e)))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(e){2===this._state.type&&this._state.request.cancel(),this._state=e}cancel(e=!1){this.state=C.Default,this.throttledDelayer.cancel(),e||this._onChangedHints.fire(void 0)}trigger(e,t){const i=this.editor.getModel();if(!i||!b.nD.has(i))return;const n=++this.triggerId;this._pendingTriggers.push(e),this.throttledDelayer.trigger((()=>this.doTrigger(n)),t).catch(_.dL)}next(){if(1!==this.state.type)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=t%e==e-1,n=this.editor.getOption(67).cycle;!(e<2||i)||n?this.updateActiveSignature(i&&n?0:t+1):this.cancel()}previous(){if(1!==this.state.type)return;const e=this.state.hints.signatures.length,t=this.state.hints.activeSignature,i=0===t,n=this.editor.getOption(67).cycle;!(e<2||i)||n?this.updateActiveSignature(i&&n?e-1:t-1):this.cancel()}updateActiveSignature(e){1===this.state.type&&(this.state=new C.Active(Object.assign(Object.assign({},this.state.hints),{activeSignature:e})),this._onChangedHints.fire(this.state.hints))}doTrigger(e){return t=this,i=void 0,r=function*(){const t=1===this.state.type||2===this.state.type,i=1===this.state.type?this.state.hints:void 0;if(this.cancel(!0),0===this._pendingTriggers.length)return!1;const n=this._pendingTriggers.reduce(D);this._pendingTriggers=[];const r={triggerKind:n.triggerKind,triggerCharacter:n.triggerCharacter,isRetrigger:t,activeSignatureHelp:i};if(!this.editor.hasModel())return!1;const s=this.editor.getModel(),o=this.editor.getPosition();this.state=new C.Pending((0,m.PG)((e=>w(s,o,r,e))));try{const t=yield this.state.request;return e!==this.triggerId?(null==t||t.dispose(),!1):t&&t.value.signatures&&0!==t.value.signatures.length?(this.state=new C.Active(t.value),this._lastSignatureHelpResult.value=t,this._onChangedHints.fire(this.state.hints),!0):(null==t||t.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1)}catch(t){return e===this.triggerId&&(this.state=C.Default),(0,_.dL)(t),!1}},new((n=void 0)||(n=Promise))((function(e,s){function o(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof n?i:new n((function(e){e(i)}))).then(o,a)}l((r=r.apply(t,i||[])).next())}));var t,i,n,r}get isTriggered(){return 1===this.state.type||2===this.state.type||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars=new L.q,this.retriggerChars=new L.q;const e=this.editor.getModel();if(e)for(const t of b.nD.ordered(e)){for(const e of t.signatureHelpTriggerCharacters||[])this.triggerChars.add(e.charCodeAt(0)),this.retriggerChars.add(e.charCodeAt(0));for(const e of t.signatureHelpRetriggerCharacters||[])this.retriggerChars.add(e.charCodeAt(0))}}onDidType(e){if(!this.triggerOnType)return;const t=e.length-1,i=e.charCodeAt(t);(this.triggerChars.has(i)||this.isTriggered&&this.retriggerChars.has(i))&&this.trigger({triggerKind:b.WW.TriggerCharacter,triggerCharacter:e.charAt(t)})}onCursorChange(e){"mouse"===e.source?this.cancel():this.isTriggered&&this.trigger({triggerKind:b.WW.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:b.WW.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(67).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}}function D(e,t){switch(t.triggerKind){case b.WW.Invoke:return t;case b.WW.ContentChange:return e;case b.WW.TriggerCharacter:default:return t}}M.DEFAULT_DELAY=120;var N=i(97295),E=i(73046),T=i(98401),I=function(e,t){return function(i,n){t(i,n,e)}};const O=c.$,A=(0,E.q5)("parameter-hints-next",E.lA.chevronDown),R=(0,E.q5)("parameter-hints-previous",E.lA.chevronUp);let P=class e extends r.JT{constructor(e,t,i,n){super(),this.editor=e,this.renderDisposeables=this._register(new r.SL),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new p.$(e,n,i)),this.model=this._register(new M(e)),this.keyVisible=y.Visible.bindTo(t),this.keyMultipleSignatures=y.MultipleSignatures.bindTo(t),this._register(this.model.onChangedHints((e=>{e?(this.show(),this.render(e)):this.hide()})))}createParamaterHintDOMNodes(){const e=O(".editor-widget.parameter-hints-widget"),t=c.R3(e,O(".wrapper"));t.tabIndex=-1;const i=c.R3(t,O(".controls")),n=c.R3(i,O(".button"+R.cssSelector)),r=c.R3(i,O(".overloads")),s=c.R3(i,O(".button"+A.cssSelector)),o=(0,d.s)((0,d.j)(n,"click"));this._register(o(this.previous,this));const a=(0,d.s)((0,d.j)(s,"click"));this._register(a(this.next,this));const l=O(".body"),h=new u.s$(l,{});this._register(h),t.appendChild(h.getDomNode());const f=c.R3(l,O(".signature")),p=c.R3(l,O(".docs"));e.style.userSelect="text",this.domNodes={element:e,signature:f,overloads:r,docs:p,scrollbar:h},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection((e=>{this.visible&&this.editor.layoutContentWidget(this)})));const m=()=>{if(!this.domNodes)return;const e=this.editor.getOption(36);this.domNodes.element.style.fontSize=`${e.fontSize}px`};m(),this._register(g.ju.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter((e=>e.hasChanged(36))).on(m,null)),this._register(this.editor.onDidLayoutChange((e=>this.updateMaxHeight()))),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParamaterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout((()=>{this.domNodes&&c.cn(this.domNodes.element,"visible")}),100),this.editor.layoutContentWidget(this))}hide(){this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,this.domNodes&&c.IV(this.domNodes.element,"visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(e){var t;if(this.renderDisposeables.clear(),!this.domNodes)return;const i=e.signatures.length>1;c.og(this.domNodes.element,"multiple",i),this.keyMultipleSignatures.set(i),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const r=e.signatures[e.activeSignature];if(!r)return;const s=c.R3(this.domNodes.signature,O(".code")),o=this.editor.getOption(36);s.style.fontSize=`${o.fontSize}px`,s.style.fontFamily=o.fontFamily;const a=r.parameters.length>0,l=null!==(t=r.activeParameter)&&void 0!==t?t:e.activeParameter;a?this.renderParameters(s,r,l):c.R3(s,O("span")).textContent=r.label;const d=r.parameters[l];if(null==d?void 0:d.documentation){const e=O("span.documentation");if("string"==typeof d.documentation)e.textContent=d.documentation;else{const t=this.renderDisposeables.add(this.markdownRenderer.render(d.documentation));c.cn(t.element,"markdown-docs"),e.appendChild(t.element)}c.R3(this.domNodes.docs,O("p",{},e))}if(void 0===r.documentation);else if("string"==typeof r.documentation)c.R3(this.domNodes.docs,O("p",{},r.documentation));else{const e=this.renderDisposeables.add(this.markdownRenderer.render(r.documentation));c.cn(e.element,"markdown-docs"),c.R3(this.domNodes.docs,e.element)}const u=this.hasDocs(r,d);if(c.og(this.domNodes.signature,"has-docs",u),c.og(this.domNodes.docs,"empty",!u),this.domNodes.overloads.textContent=(0,N.vk)(e.activeSignature+1,e.signatures.length.toString().length)+"/"+e.signatures.length,d){const e=this.getParameterLabel(r,l);this.announcedLabel!==e&&(h.Z9(n.N("hint","{0}, hint",e)),this.announcedLabel=e)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}hasDocs(e,t){return!!(t&&"string"==typeof t.documentation&&(0,T.cW)(t.documentation).length>0||t&&"object"==typeof t.documentation&&(0,T.cW)(t.documentation).value.length>0||e.documentation&&"string"==typeof e.documentation&&(0,T.cW)(e.documentation).length>0||e.documentation&&"object"==typeof e.documentation&&(0,T.cW)(e.documentation.value).length>0)}renderParameters(e,t,i){const[n,r]=this.getParameterLabelOffsets(t,i),s=document.createElement("span");s.textContent=t.label.substring(0,n);const o=document.createElement("span");o.textContent=t.label.substring(n,r),o.className="parameter active";const a=document.createElement("span");a.textContent=t.label.substring(r),c.R3(e,s,o,a)}getParameterLabel(e,t){const i=e.parameters[t];return Array.isArray(i.label)?e.label.substring(i.label[0],i.label[1]):i.label}getParameterLabelOffsets(e,t){const i=e.parameters[t];if(i){if(Array.isArray(i.label))return i.label;{const t=e.label.lastIndexOf(i.label);return t>=0?[t,t+i.label.length]:[0,0]}}return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}cancel(){this.model.cancel()}getDomNode(){return this.domNodes||this.createParamaterHintDOMNodes(),this.domNodes.element}getId(){return e.ID}trigger(e){this.model.trigger(e,0)}updateMaxHeight(){if(!this.domNodes)return;const e=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=e;const t=this.domNodes.element.getElementsByClassName("wrapper");t.length&&(t[0].style.maxHeight=e)}};P.ID="editor.widget.parameterHintsWidget",P=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([I(1,a.i6),I(2,S.v4),I(3,f.h)],P),(0,x.Ic)(((e,t)=>{const i=e.getColor(k.CN);if(i){const n=e.type===x.QP?2:1;t.addRule(`.monaco-editor .parameter-hints-widget { border: ${n}px solid ${i}; }`),t.addRule(`.monaco-editor .parameter-hints-widget.multiple .body { border-left: 1px solid ${i.transparent(.5)}; }`),t.addRule(`.monaco-editor .parameter-hints-widget .signature.has-docs { border-bottom: 1px solid ${i.transparent(.5)}; }`)}const n=e.getColor(k.yJ);n&&t.addRule(`.monaco-editor .parameter-hints-widget { background-color: ${n}; }`);const r=e.getColor(k.ur);r&&t.addRule(`.monaco-editor .parameter-hints-widget a { color: ${r}; }`);const s=e.getColor(k.Sb);s&&t.addRule(`.monaco-editor .parameter-hints-widget { color: ${s}; }`);const o=e.getColor(k.Sw);o&&t.addRule(`.monaco-editor .parameter-hints-widget code { background-color: ${o}; }`)}));let F=class e extends r.JT{constructor(e,t){super(),this.editor=e,this.widget=this._register(t.createInstance(P,this.editor))}static get(t){return t.getContribution(e.ID)}cancel(){this.widget.cancel()}previous(){this.widget.previous()}next(){this.widget.next()}trigger(e){this.widget.trigger(e)}};var B,W;F.ID="editor.controller.parameterHints",F=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(B=1,W=s.TG,function(e,t){W(e,t,B)})],F);class Y extends l.R6{constructor(){super({id:"editor.action.triggerParameterHints",label:n.N("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:o.u.hasSignatureHelpProvider,kbOpts:{kbExpr:o.u.editorTextFocus,primary:3082,weight:100}})}run(e,t){const i=F.get(t);i&&i.trigger({triggerKind:b.WW.Invoke})}}(0,l._K)(F.ID,F),(0,l.Qr)(Y);const H=l._l.bindToContribution(F.get);(0,l.fK)(new H({id:"closeParameterHints",precondition:y.Visible,handler:e=>e.cancel(),kbOpts:{weight:175,kbExpr:o.u.focus,primary:9,secondary:[1033]}})),(0,l.fK)(new H({id:"showPrevParameterHint",precondition:a.Ao.and(y.Visible,y.MultipleSignatures),handler:e=>e.previous(),kbOpts:{weight:175,kbExpr:o.u.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),(0,l.fK)(new H({id:"showNextParameterHint",precondition:a.Ao.and(y.Visible,y.MultipleSignatures),handler:e=>e.next(),kbOpts:{weight:175,kbExpr:o.u.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}))},22043:(e,t,i)=>{"use strict";i.d(t,{Fw:()=>I,Jy:()=>O,vk:()=>F,rc:()=>R,SC:()=>H,RX:()=>K,sH:()=>q,WL:()=>Z,xH:()=>J,M8:()=>j,a7:()=>z,xk:()=>V,F8:()=>G,Zj:()=>U,IY:()=>$,KY:()=>B,IH:()=>W,R7:()=>Y});var n=i(65321),r=i(90317),s=i(74741),o=i(41264),a=i(4669),l=i(36248),c=i(11640),d=i(84527),h=i(73098),u=i(44742),g=i(5976),f=i(24314),p=i(3411);const m=new o.Il(new o.VS(0,122,204)),_={showArrow:!0,showFrame:!0,className:"",frameColor:m,arrowColor:m,keepEditorSelection:!1};class b{constructor(e,t,i,n,r,s){this.id="",this.domNode=e,this.afterLineNumber=t,this.afterColumn=i,this.heightInLines=n,this._onDomNodeTop=r,this._onComputedHeight=s}onDomNodeTop(e){this._onDomNodeTop(e)}onComputedHeight(e){this._onComputedHeight(e)}}class v{constructor(e,t){this._id=e,this._domNode=t}getId(){return this._id}getDomNode(){return this._domNode}getPosition(){return null}}class y{constructor(e){this._editor=e,this._ruleName=y._IdGenerator.nextId(),this._decorations=[],this._color=null,this._height=-1}dispose(){this.hide(),n.uN(this._ruleName)}set color(e){this._color!==e&&(this._color=e,this._updateStyle())}set height(e){this._height!==e&&(this._height=e,this._updateStyle())}_updateStyle(){n.uN(this._ruleName),n.fk(`.monaco-editor ${this._ruleName}`,`border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `)}show(e){this._decorations=this._editor.deltaDecorations(this._decorations,[{range:f.e.fromPositions(e),options:{className:this._ruleName,stickiness:1}}])}hide(){this._editor.deltaDecorations(this._decorations,[])}}y._IdGenerator=new u.R(".arrow-decoration-");var w=i(63580),C=i(38819),S=i(72065),k=i(65026),x=i(16830),L=i(73910),M=i(73046),D=i(84144),N=i(58335),E=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},T=function(e,t){return function(i,n){t(i,n,e)}};const I=(0,S.yh)("IPeekViewService");var O;(0,k.z)(I,class{constructor(){this._widgets=new Map}addExclusiveWidget(e,t){const i=this._widgets.get(e);i&&(i.listener.dispose(),i.widget.dispose()),this._widgets.set(e,{widget:t,listener:t.onDidClose((()=>{const i=this._widgets.get(e);i&&i.widget===t&&(i.listener.dispose(),this._widgets.delete(e))}))})}}),function(e){e.inPeekEditor=new C.uy("inReferenceSearchEditor",!0),e.notInPeekEditor=e.inPeekEditor.toNegated()}(O||(O={}));let A=class{constructor(e,t){e instanceof d.H&&O.inPeekEditor.bindTo(t)}dispose(){}};function R(e){let t=e.get(c.$).getFocusedCodeEditor();return t instanceof d.H?t.getParentEditor():t}A.ID="editor.contrib.referenceController",A=E([T(1,C.i6)],A),(0,x._K)(A.ID,A);const P={headerBackgroundColor:o.Il.white,primaryHeadingColor:o.Il.fromHex("#333333"),secondaryHeadingColor:o.Il.fromHex("#6c6c6cb3")};let F=class extends class{constructor(e,t={}){this._arrow=null,this._overlayWidget=null,this._resizeSash=null,this._positionMarkerId=[],this._viewZone=null,this._disposables=new g.SL,this.container=null,this._isShowing=!1,this.editor=e,this.options=l.I8(t),l.jB(this.options,_,!1),this.domNode=document.createElement("div"),this.options.isAccessible||(this.domNode.setAttribute("aria-hidden","true"),this.domNode.setAttribute("role","presentation")),this._disposables.add(this.editor.onDidLayoutChange((e=>{const t=this._getWidth(e);this.domNode.style.width=t+"px",this.domNode.style.left=this._getLeft(e)+"px",this._onWidth(t)})))}dispose(){this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._viewZone&&this.editor.changeViewZones((e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._viewZone=null})),this.editor.deltaDecorations(this._positionMarkerId,[]),this._positionMarkerId=[],this._disposables.dispose()}create(){this.domNode.classList.add("zone-widget"),this.options.className&&this.domNode.classList.add(this.options.className),this.container=document.createElement("div"),this.container.classList.add("zone-widget-container"),this.domNode.appendChild(this.container),this.options.showArrow&&(this._arrow=new y(this.editor),this._disposables.add(this._arrow)),this._fillContainer(this.container),this._initSash(),this._applyStyles()}style(e){e.frameColor&&(this.options.frameColor=e.frameColor),e.arrowColor&&(this.options.arrowColor=e.arrowColor),this._applyStyles()}_applyStyles(){if(this.container&&this.options.frameColor){let e=this.options.frameColor.toString();this.container.style.borderTopColor=e,this.container.style.borderBottomColor=e}if(this._arrow&&this.options.arrowColor){let e=this.options.arrowColor.toString();this._arrow.color=e}}_getWidth(e){return e.width-e.minimap.minimapWidth-e.verticalScrollbarWidth}_getLeft(e){return e.minimap.minimapWidth>0&&0===e.minimap.minimapLeft?e.minimap.minimapWidth:0}_onViewZoneTop(e){this.domNode.style.top=e+"px"}_onViewZoneHeight(e){if(this.domNode.style.height=`${e}px`,this.container){let t=e-this._decoratingElementsHeight();this.container.style.height=`${t}px`;const i=this.editor.getLayoutInfo();this._doLayout(t,this._getWidth(i))}this._resizeSash&&this._resizeSash.layout()}get position(){const[e]=this._positionMarkerId;if(!e)return;const t=this.editor.getModel();if(!t)return;const i=t.getDecorationRange(e);return i?i.getStartPosition():void 0}show(e,t){const i=f.e.isIRange(e)?f.e.lift(e):f.e.fromPositions(e);this._isShowing=!0,this._showImpl(i,t),this._isShowing=!1,this._positionMarkerId=this.editor.deltaDecorations(this._positionMarkerId,[{range:i,options:p.qx.EMPTY}])}hide(){this._viewZone&&(this.editor.changeViewZones((e=>{this._viewZone&&e.removeZone(this._viewZone.id)})),this._viewZone=null),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this._arrow&&this._arrow.hide()}_decoratingElementsHeight(){let e=this.editor.getOption(51),t=0;return this.options.showArrow&&(t+=2*Math.round(e/3)),this.options.showFrame&&(t+=2*Math.round(e/9)),t}_showImpl(e,t){const i=e.getStartPosition(),n=this.editor.getLayoutInfo(),r=this._getWidth(n);this.domNode.style.width=`${r}px`,this.domNode.style.left=this._getLeft(n)+"px";const s=document.createElement("div");s.style.overflow="hidden";const o=this.editor.getOption(51),a=Math.max(12,this.editor.getLayoutInfo().height/o*.8);t=Math.min(t,a);let l=0,c=0;if(this._arrow&&this.options.showArrow&&(l=Math.round(o/3),this._arrow.height=l,this._arrow.show(i)),this.options.showFrame&&(c=Math.round(o/9)),this.editor.changeViewZones((e=>{this._viewZone&&e.removeZone(this._viewZone.id),this._overlayWidget&&(this.editor.removeOverlayWidget(this._overlayWidget),this._overlayWidget=null),this.domNode.style.top="-1000px",this._viewZone=new b(s,i.lineNumber,i.column,t,(e=>this._onViewZoneTop(e)),(e=>this._onViewZoneHeight(e))),this._viewZone.id=e.addZone(this._viewZone),this._overlayWidget=new v("vs.editor.contrib.zoneWidget"+this._viewZone.id,this.domNode),this.editor.addOverlayWidget(this._overlayWidget)})),this.container&&this.options.showFrame){const e=this.options.frameWidth?this.options.frameWidth:c;this.container.style.borderTopWidth=e+"px",this.container.style.borderBottomWidth=e+"px"}let d=t*o-this._decoratingElementsHeight();this.container&&(this.container.style.top=l+"px",this.container.style.height=d+"px",this.container.style.overflow="hidden"),this._doLayout(d,r),this.options.keepEditorSelection||this.editor.setSelection(e);const h=this.editor.getModel();if(h){const t=e.endLineNumber+1;t<=h.getLineCount()?this.revealLine(t,!1):this.revealLine(h.getLineCount(),!0)}}revealLine(e,t){t?this.editor.revealLineInCenter(e,0):this.editor.revealLine(e,0)}setCssClass(e,t){this.container&&(t&&this.container.classList.remove(t),n.cn(this.container,e))}_onWidth(e){}_doLayout(e,t){}_relayout(e){this._viewZone&&this._viewZone.heightInLines!==e&&this.editor.changeViewZones((t=>{this._viewZone&&(this._viewZone.heightInLines=e,t.layoutZone(this._viewZone.id))}))}_initSash(){if(this._resizeSash)return;let e;this._resizeSash=this._disposables.add(new h.g(this.domNode,this,{orientation:1})),this.options.isResizeable||(this._resizeSash.hide(),this._resizeSash.state=0),this._disposables.add(this._resizeSash.onDidStart((t=>{this._viewZone&&(e={startY:t.startY,heightInLines:this._viewZone.heightInLines})}))),this._disposables.add(this._resizeSash.onDidEnd((()=>{e=void 0}))),this._disposables.add(this._resizeSash.onDidChange((t=>{if(e){let i=(t.currentY-e.startY)/this.editor.getOption(51),n=i<0?Math.ceil(i):Math.floor(i),r=e.heightInLines+n;r>5&&r<35&&this._relayout(r)}})))}getHorizontalSashLeft(){return 0}getHorizontalSashTop(){return(null===this.domNode.style.height?0:parseInt(this.domNode.style.height))-this._decoratingElementsHeight()/2}getHorizontalSashWidth(){const e=this.editor.getLayoutInfo();return e.width-e.minimap.minimapWidth}}{constructor(e,t,i){super(e,t),this.instantiationService=i,this._onDidClose=new a.Q5,this.onDidClose=this._onDidClose.event,l.jB(this.options,P,!1)}dispose(){super.dispose(),this._onDidClose.fire(this)}style(e){let t=this.options;e.headerBackgroundColor&&(t.headerBackgroundColor=e.headerBackgroundColor),e.primaryHeadingColor&&(t.primaryHeadingColor=e.primaryHeadingColor),e.secondaryHeadingColor&&(t.secondaryHeadingColor=e.secondaryHeadingColor),super.style(e)}_applyStyles(){super._applyStyles();let e=this.options;this._headElement&&e.headerBackgroundColor&&(this._headElement.style.backgroundColor=e.headerBackgroundColor.toString()),this._primaryHeading&&e.primaryHeadingColor&&(this._primaryHeading.style.color=e.primaryHeadingColor.toString()),this._secondaryHeading&&e.secondaryHeadingColor&&(this._secondaryHeading.style.color=e.secondaryHeadingColor.toString()),this._bodyElement&&e.frameColor&&(this._bodyElement.style.borderColor=e.frameColor.toString())}_fillContainer(e){this.setCssClass("peekview-widget"),this._headElement=n.$(".head"),this._bodyElement=n.$(".body"),this._fillHead(this._headElement),this._fillBody(this._bodyElement),e.appendChild(this._headElement),e.appendChild(this._bodyElement)}_fillHead(e,t){const i=n.$(".peekview-title");n.R3(this._headElement,i),n.mu(i,"click",(e=>this._onTitleClick(e))),this._fillTitleIcon(i),this._primaryHeading=n.$("span.filename"),this._secondaryHeading=n.$("span.dirname"),this._metaHeading=n.$("span.meta"),n.R3(i,this._primaryHeading,this._secondaryHeading,this._metaHeading);const o=n.$(".peekview-actions");n.R3(this._headElement,o);const a=this._getActionBarOptions();this._actionbarWidget=new r.o(o,a),this._disposables.add(this._actionbarWidget),t||this._actionbarWidget.push(new s.aU("peekview.close",w.N("label.close","Close"),M.lA.close.classNames,!0,(()=>(this.dispose(),Promise.resolve()))),{label:!1,icon:!0})}_fillTitleIcon(e){}_getActionBarOptions(){return{actionViewItemProvider:e=>e instanceof D.U8?this.instantiationService.createInstance(N.Mm,e):e instanceof D.NZ?this.instantiationService.createInstance(N.bi,e):void 0}}_onTitleClick(e){}setTitle(e,t){this._primaryHeading&&this._secondaryHeading&&(this._primaryHeading.innerText=e,this._primaryHeading.setAttribute("aria-label",e),t?this._secondaryHeading.innerText=t:n.PO(this._secondaryHeading))}setMetaTitle(e){this._metaHeading&&(e?(this._metaHeading.innerText=e,n.$Z(this._metaHeading)):n.Cp(this._metaHeading))}_doLayout(e,t){if(!this._isShowing&&e<0)return void this.dispose();const i=Math.ceil(1.2*this.editor.getOption(51)),n=Math.round(e-(i+2));this._doLayoutHead(i,t),this._doLayoutBody(n,t)}_doLayoutHead(e,t){this._headElement&&(this._headElement.style.height=`${e}px`,this._headElement.style.lineHeight=this._headElement.style.height)}_doLayoutBody(e,t){this._bodyElement&&(this._bodyElement.style.height=`${e}px`)}};F=E([T(2,S.TG)],F);const B=(0,L.P6)("peekViewTitle.background",{dark:"#1E1E1E",light:"#FFFFFF",hc:"#0C141F"},w.N("peekViewTitleBackground","Background color of the peek view title area.")),W=(0,L.P6)("peekViewTitleLabel.foreground",{dark:"#FFFFFF",light:"#333333",hc:"#FFFFFF"},w.N("peekViewTitleForeground","Color of the peek view title.")),Y=(0,L.P6)("peekViewTitleDescription.foreground",{dark:"#ccccccb3",light:"#616161e6",hc:"#FFFFFF99"},w.N("peekViewTitleInfoForeground","Color of the peek view title info.")),H=(0,L.P6)("peekView.border",{dark:"#007acc",light:"#007acc",hc:L.lR},w.N("peekViewBorder","Color of the peek view borders and arrow.")),j=(0,L.P6)("peekViewResult.background",{dark:"#252526",light:"#F3F3F3",hc:o.Il.black},w.N("peekViewResultsBackground","Background color of the peek view result list.")),V=(0,L.P6)("peekViewResult.lineForeground",{dark:"#bbbbbb",light:"#646465",hc:o.Il.white},w.N("peekViewResultsMatchForeground","Foreground color for line nodes in the peek view result list.")),z=(0,L.P6)("peekViewResult.fileForeground",{dark:o.Il.white,light:"#1E1E1E",hc:o.Il.white},w.N("peekViewResultsFileForeground","Foreground color for file nodes in the peek view result list.")),U=(0,L.P6)("peekViewResult.selectionBackground",{dark:"#3399ff33",light:"#3399ff33",hc:null},w.N("peekViewResultsSelectionBackground","Background color of the selected entry in the peek view result list.")),$=(0,L.P6)("peekViewResult.selectionForeground",{dark:o.Il.white,light:"#6C6C6C",hc:o.Il.white},w.N("peekViewResultsSelectionForeground","Foreground color of the selected entry in the peek view result list.")),K=(0,L.P6)("peekViewEditor.background",{dark:"#001F33",light:"#F2F8FC",hc:o.Il.black},w.N("peekViewEditorBackground","Background color of the peek view editor.")),q=(0,L.P6)("peekViewEditorGutter.background",{dark:K,light:K,hc:K},w.N("peekViewEditorGutterBackground","Background color of the gutter in the peek view editor.")),G=(0,L.P6)("peekViewResult.matchHighlightBackground",{dark:"#ea5c004d",light:"#ea5c004d",hc:null},w.N("peekViewResultsMatchHighlight","Match highlight color in the peek view result list.")),Z=(0,L.P6)("peekViewEditor.matchHighlightBackground",{dark:"#ff8f0099",light:"#f5d802de",hc:null},w.N("peekViewEditorMatchHighlight","Match highlight color in the peek view editor.")),J=(0,L.P6)("peekViewEditor.matchHighlightBorder",{dark:null,light:null,hc:L.xL},w.N("peekViewEditorMatchHighlightBorder","Match highlight border in the peek view editor."))},98275:(e,t,i)=>{"use strict";i.d(t,{X:()=>d});var n=i(84973),r=i(97781),s=i(27869),o=i(5976),a=i(65520),l=i(98401),c=i(88289);class d{constructor(e){this.options=e,this.rangeHighlightDecorationId=void 0}provide(e,t){var i;const n=new o.SL;e.canAcceptInBackground=!!(null===(i=this.options)||void 0===i?void 0:i.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const r=n.add(new o.XK);return r.value=this.doProvide(e,t),n.add(this.onDidActiveTextEditorControlChange((()=>{r.value=void 0,r.value=this.doProvide(e,t)}))),n}doProvide(e,t){const i=new o.SL,n=this.activeTextEditorControl;if(n&&this.canProvideWithTextEditor(n)){const r=(0,a.Pi)(n);if(r){let e=(0,l.f6)(n.saveViewState());i.add(r.onDidChangeCursorPosition((()=>{e=(0,l.f6)(n.saveViewState())}))),i.add((0,c.I)(t.onCancellationRequested)((()=>{e&&n===this.activeTextEditorControl&&n.restoreViewState(e)})))}i.add((0,o.OF)((()=>this.clearDecorations(n)))),i.add(this.provideWithTextEditor(n,e,t))}else i.add(this.provideWithoutTextEditor(e,t));return i}canProvideWithTextEditor(e){return!0}gotoLocation(e,t){e.setSelection(t.range),e.revealRangeInCenter(t.range,0),t.preserveFocus||e.focus()}getModel(e){var t;return(0,a.QI)(e)?null===(t=e.getModel())||void 0===t?void 0:t.modified:e.getModel()}addDecorations(e,t){e.changeDecorations((e=>{const i=[];this.rangeHighlightDecorationId&&(i.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),i.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const o=[{range:t,options:{className:"rangeHighlight",isWholeLine:!0}},{range:t,options:{overviewRuler:{color:(0,r.EN)(s.m9),position:n.sh.Full}}}],[a,l]=e.deltaDecorations(i,o);this.rangeHighlightDecorationId={rangeHighlightId:a,overviewRulerDecorationId:l}}))}clearDecorations(e){const t=this.rangeHighlightDecorationId;t&&(e.changeDecorations((e=>{e.deltaDecorations([t.overviewRulerDecorationId,t.rangeHighlightId],[])})),this.rangeHighlightDecorationId=void 0)}}},55027:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE:()=>k,OnTypeRenameContribution:()=>x,OnTypeRenameAction:()=>D,getOnTypeRenameRanges:()=>E,editorOnTypeRenameBackground:()=>T});var n=i(63580),r=i(16830),s=i(9488),o=i(5976),a=i(50187),l=i(71050),c=i(24314),d=i(43775),h=i(15393),u=i(3411),g=i(38819),f=i(29102),p=i(70666),m=i(11640),_=i(17301),b=i(97295),v=i(73910),y=i(97781),w=i(41264),C=i(83831),S=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const k=new g.uy("onTypeRenameInputVisible",!1);let x=class e extends o.JT{constructor(e,t){super(),this._debounceDuration=200,this._localToDispose=this._register(new o.SL),this._editor=e,this._enabled=!1,this._visibleContextKey=k.bindTo(t),this._currentDecorations=[],this._languageWordPattern=null,this._currentWordPattern=null,this._ignoreChangeEvent=!1,this._localToDispose=this._register(new o.SL),this._rangeUpdateTriggerPromise=null,this._rangeSyncTriggerPromise=null,this._currentRequest=null,this._currentRequestPosition=null,this._currentRequestModelVersion=null,this._register(this._editor.onDidChangeModel((()=>this.reinitialize()))),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(73)&&this.reinitialize()}))),this._register(d.jC.onDidChange((()=>this.reinitialize()))),this._register(this._editor.onDidChangeModelLanguage((()=>this.reinitialize()))),this.reinitialize()}static get(t){return t.getContribution(e.ID)}reinitialize(){const e=this._editor.getModel(),t=null!==e&&this._editor.getOption(73)&&d.jC.has(e);if(t===this._enabled)return;if(this._enabled=t,this.clearRanges(),this._localToDispose.clear(),!t||null===e)return;this._languageWordPattern=C.zu.getWordDefinition(e.getLanguageIdentifier().id),this._localToDispose.add(e.onDidChangeLanguageConfiguration((()=>{this._languageWordPattern=C.zu.getWordDefinition(e.getLanguageIdentifier().id)})));const i=new h.vp(this._debounceDuration),n=()=>{this._rangeUpdateTriggerPromise=i.trigger((()=>this.updateRanges()),this._debounceDuration)},r=new h.vp(0),s=e=>{this._rangeSyncTriggerPromise=r.trigger((()=>this._syncRanges(e)))};this._localToDispose.add(this._editor.onDidChangeCursorPosition((()=>{n()}))),this._localToDispose.add(this._editor.onDidChangeModelContent((t=>{if(!this._ignoreChangeEvent&&this._currentDecorations.length>0){const i=e.getDecorationRange(this._currentDecorations[0]);if(i&&t.changes.every((e=>i.intersectRanges(e.range))))return void s(this._currentDecorations)}n()}))),this._localToDispose.add({dispose:()=>{i.cancel(),r.cancel()}}),this.updateRanges()}_syncRanges(e){if(!this._editor.hasModel()||e!==this._currentDecorations||0===e.length)return;const t=this._editor.getModel(),i=t.getDecorationRange(e[0]);if(!i||i.startLineNumber!==i.endLineNumber)return this.clearRanges();const n=t.getValueInRange(i);if(this._currentWordPattern){const e=n.match(this._currentWordPattern);if((e?e[0].length:0)!==n.length)return this.clearRanges()}let r=[];for(let i=1,s=e.length;i<s;i++){const s=t.getDecorationRange(e[i]);if(s)if(s.startLineNumber!==s.endLineNumber)r.push({range:s,text:n});else{let e=t.getValueInRange(s),i=n,o=s.startColumn,a=s.endColumn;const l=b.Mh(e,i);o+=l,e=e.substr(l),i=i.substr(l);const d=b.P1(e,i);a-=d,e=e.substr(0,e.length-d),i=i.substr(0,i.length-d),o===a&&0===i.length||r.push({range:new c.e(s.startLineNumber,o,s.endLineNumber,a),text:i})}}if(0!==r.length)try{this._ignoreChangeEvent=!0;const e=this._editor._getViewModel().getPrevEditOperationType();this._editor.executeEdits("onTypeRename",r),this._editor._getViewModel().setPrevEditOperationType(e)}finally{this._ignoreChangeEvent=!1}}dispose(){this.clearRanges(),super.dispose()}clearRanges(){this._visibleContextKey.set(!1),this._currentDecorations=this._editor.deltaDecorations(this._currentDecorations,[]),this._currentRequest&&(this._currentRequest.cancel(),this._currentRequest=null,this._currentRequestPosition=null)}updateRanges(t=!1){return S(this,void 0,void 0,(function*(){if(!this._editor.hasModel())return void this.clearRanges();const i=this._editor.getPosition();if(!this._enabled&&!t||this._editor.getSelections().length>1)return void this.clearRanges();const n=this._editor.getModel(),r=n.getVersionId();if(this._currentRequestPosition&&this._currentRequestModelVersion===r){if(i.equals(this._currentRequestPosition))return;if(this._currentDecorations&&this._currentDecorations.length>0){const e=n.getDecorationRange(this._currentDecorations[0]);if(e&&e.containsPosition(i))return}}this._currentRequestPosition=i,this._currentRequestModelVersion=r;const s=(0,h.PG)((t=>S(this,void 0,void 0,(function*(){try{const o=yield E(n,i,t);if(s!==this._currentRequest)return;if(this._currentRequest=null,r!==n.getVersionId())return;let a=[];(null==o?void 0:o.ranges)&&(a=o.ranges),this._currentWordPattern=(null==o?void 0:o.wordPattern)||this._languageWordPattern;let l=!1;for(let e=0,t=a.length;e<t;e++)if(c.e.containsPosition(a[e],i)){if(l=!0,0!==e){const t=a[e];a.splice(e,1),a.unshift(t)}break}if(!l)return void this.clearRanges();const d=a.map((t=>({range:t,options:e.DECORATION})));this._visibleContextKey.set(!0),this._currentDecorations=this._editor.deltaDecorations(this._currentDecorations,d)}catch(e){(0,_.VV)(e)||(0,_.dL)(e),this._currentRequest!==s&&this._currentRequest||this.clearRanges()}}))));return this._currentRequest=s,s}))}};var L,M;x.ID="editor.contrib.onTypeRename",x.DECORATION=u.qx.register({stickiness:0,className:"on-type-rename-decoration"}),x=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(L=1,M=g.i6,function(e,t){M(e,t,L)})],x);class D extends r.R6{constructor(){super({id:"editor.action.onTypeRename",label:n.N("onTypeRename.label","On Type Rename Symbol"),alias:"On Type Rename Symbol",precondition:g.Ao.and(f.u.writable,f.u.hasRenameProvider),kbOpts:{kbExpr:f.u.editorTextFocus,primary:3132,weight:100}})}runCommand(e,t){const i=e.get(m.$),[n,r]=Array.isArray(t)&&t||[void 0,void 0];return p.o.isUri(n)&&a.L.isIPosition(r)?i.openCodeEditor({resource:n},i.getActiveCodeEditor()).then((e=>{e&&(e.setPosition(r),e.invokeWithinContext((t=>(this.reportTelemetry(t,e),this.run(t,e)))))}),_.dL):super.runCommand(e,t)}run(e,t){const i=x.get(t);return i?Promise.resolve(i.updateRanges(!0)):Promise.resolve()}}const N=r._l.bindToContribution(x.get);function E(e,t,i){const n=d.jC.ordered(e);return(0,h.Ps)(n.map((n=>()=>Promise.resolve(n.provideOnTypeRenameRanges(e,t,i)).then((e=>{if(e)return{ranges:e.ranges,wordPattern:e.wordPattern||n.wordPattern}}),(e=>{(0,_.Cp)(e)})))),(e=>!!e&&s.Of(null==e?void 0:e.ranges)))}(0,r.fK)(new N({id:"cancelOnTypeRenameInput",precondition:k,handler:e=>e.clearRanges(),kbOpts:{kbExpr:f.u.editorTextFocus,weight:199,primary:9,secondary:[1033]}}));const T=(0,v.P6)("editor.onTypeRenameBackground",{dark:w.Il.fromHex("#f00").transparent(.3),light:w.Il.fromHex("#f00").transparent(.3),hc:w.Il.fromHex("#f00").transparent(.3)},n.N("editorOnTypeRenameBackground","Background color when the editor auto renames on type."));(0,y.Ic)(((e,t)=>{const i=e.getColor(T);i&&t.addRule(`.monaco-editor .on-type-rename-decoration { background: ${i}; border-left-color: ${i}; }`)})),(0,r.sb)("_executeRenameOnTypeProvider",((e,t)=>E(e,t,l.T.None))),(0,r._K)(x.ID,x),(0,r.Qr)(D)},4454:(e,t,i)=>{"use strict";i.r(t),i.d(t,{RenameAction:()=>W,rename:()=>F});var n=i(63580),r=i(17301),s=i(38819),o=i(90535),a=i(16830),l=i(29102),c=i(5976),d=i(50187),h=i(73910),u=i(97781),g=i(91847),f=function(e,t){return function(i,n){t(i,n,e)}};const p=new s.uy("renameInputVisible",!1);let m=class{constructor(e,t,i,n,r){this._editor=e,this._acceptKeybindings=t,this._themeService=i,this._keybindingService=n,this._disposables=new c.SL,this.allowEditorOverflow=!0,this._visibleContextKey=p.bindTo(r),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(36)&&this._updateFont()}))),this._disposables.add(i.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){if(!this._domNode){this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._input=document.createElement("input"),this._input.className="rename-input",this._input.type="text",this._input.setAttribute("aria-label",(0,n.N)("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._input),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label);const e=()=>{var e,t;const[i,r]=this._acceptKeybindings;this._keybindingService.lookupKeybinding(i),this._label.innerText=(0,n.N)({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",null===(e=this._keybindingService.lookupKeybinding(i))||void 0===e?void 0:e.getLabel(),null===(t=this._keybindingService.lookupKeybinding(r))||void 0===t?void 0:t.getLabel())};e(),this._disposables.add(this._keybindingService.onDidUpdateKeybindings(e)),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())}return this._domNode}_updateStyles(e){var t,i,n,r;if(!this._input||!this._domNode)return;const s=e.getColor(h.rh);this._domNode.style.backgroundColor=String(null!==(t=e.getColor(h.D0))&&void 0!==t?t:""),this._domNode.style.boxShadow=s?` 0 2px 8px ${s}`:"",this._domNode.style.color=String(null!==(i=e.getColor(h.zJ))&&void 0!==i?i:""),this._input.style.backgroundColor=String(null!==(n=e.getColor(h.sE))&&void 0!==n?n:"");const o=e.getColor(h.dt);this._input.style.borderWidth=o?"1px":"0px",this._input.style.borderStyle=o?"solid":"none",this._input.style.borderColor=null!==(r=null==o?void 0:o.toString())&&void 0!==r?r:"none"}_updateFont(){if(!this._input||!this._label)return;const e=this._editor.getOption(36);this._input.style.fontFamily=e.fontFamily,this._input.style.fontWeight=e.fontWeight,this._input.style.fontSize=`${e.fontSize}px`,this._label.style.fontSize=.8*e.fontSize+"px"}getPosition(){return this._visible?{position:this._position,preference:[2,1]}:null}acceptInput(e){this._currentAcceptInput&&this._currentAcceptInput(e)}cancelInput(e){this._currentCancelInput&&this._currentCancelInput(e)}getInput(e,t,i,n,r,s){this._domNode.classList.toggle("preview",r),this._position=new d.L(e.startLineNumber,e.startColumn),this._input.value=t,this._input.setAttribute("selectionStart",i.toString()),this._input.setAttribute("selectionEnd",n.toString()),this._input.size=Math.max(1.1*(e.endColumn-e.startColumn),20);const o=new c.SL;return new Promise((e=>{this._currentCancelInput=t=>(this._currentAcceptInput=void 0,this._currentCancelInput=void 0,e(t),!0),this._currentAcceptInput=i=>{0!==this._input.value.trim().length&&this._input.value!==t?(this._currentAcceptInput=void 0,this._currentCancelInput=void 0,e({newName:this._input.value,wantsPreview:r&&i})):this.cancelInput(!0)},s.onCancellationRequested((()=>this.cancelInput(!0))),o.add(this._editor.onDidBlurEditorWidget((()=>this.cancelInput(!1)))),this._show()})).finally((()=>{o.dispose(),this._hide()}))}_show(){this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout((()=>{this._input.focus(),this._input.setSelectionRange(parseInt(this._input.getAttribute("selectionStart")),parseInt(this._input.getAttribute("selectionEnd")))}),100)}_hide(){this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}};m=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([f(2,u.XE),f(3,g.d),f(4,s.i6)],m);var _=i(43775),b=i(85152),v=i(24314),y=i(82276),w=i(39925),C=i(59422),S=i(66007),k=i(70666),x=i(11640),L=i(71050),M=i(15393),D=i(43557),N=i(72065),E=i(89872),T=i(23193),I=i(33187),O=i(98401),A=function(e,t){return function(i,n){t(i,n,e)}},R=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class P{constructor(e,t){this.model=e,this.position=t,this._providerRenameIdx=0,this._providers=_.G0.ordered(e)}hasProvider(){return this._providers.length>0}resolveRenameLocation(e){return R(this,void 0,void 0,(function*(){const t=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const i=this._providers[this._providerRenameIdx];if(!i.resolveRenameLocation)break;let n=yield i.resolveRenameLocation(this.model,this.position,e);if(n){if(!n.rejectReason)return n;t.push(n.rejectReason)}}const i=this.model.getWordAtPosition(this.position);return i?{range:new v.e(this.position.lineNumber,i.startColumn,this.position.lineNumber,i.endColumn),text:i.word,rejectReason:t.length>0?t.join("\n"):void 0}:{range:v.e.fromPositions(this.position),text:"",rejectReason:t.length>0?t.join("\n"):void 0}}))}provideRenameEdits(e,t){return R(this,void 0,void 0,(function*(){return this._provideRenameEdits(e,this._providerRenameIdx,[],t)}))}_provideRenameEdits(e,t,i,r){return R(this,void 0,void 0,(function*(){const s=this._providers[t];if(!s)return{edits:[],rejectReason:i.join("\n")};const o=yield s.provideRenameEdits(this.model,this.position,e,r);return o?o.rejectReason?this._provideRenameEdits(e,t+1,i.concat(o.rejectReason),r):o:this._provideRenameEdits(e,t+1,i.concat(n.N("no result","No result.")),r)}))}}function F(e,t,i){return R(this,void 0,void 0,(function*(){const n=new P(e,t),r=yield n.resolveRenameLocation(L.T.None);return(null==r?void 0:r.rejectReason)?{edits:[],rejectReason:r.rejectReason}:n.provideRenameEdits(i,L.T.None)}))}let B=class e{constructor(e,t,i,n,r,s,o){this.editor=e,this._instaService=t,this._notificationService=i,this._bulkEditService=n,this._progressService=r,this._logService=s,this._configService=o,this._dispoableStore=new c.SL,this._cts=new L.A,this._renameInputField=this._dispoableStore.add(new M.Ue((()=>this._dispoableStore.add(this._instaService.createInstance(m,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"])))))}static get(t){return t.getContribution(e.ID)}dispose(){this._dispoableStore.dispose(),this._cts.dispose(!0)}run(){return R(this,void 0,void 0,(function*(){if(this._cts.dispose(!0),!this.editor.hasModel())return;const e=this.editor.getPosition(),t=new P(this.editor.getModel(),e);if(!t.hasProvider())return;let i;this._cts=new w.Dl(this.editor,5);try{const e=t.resolveRenameLocation(this._cts.token);this._progressService.showWhile(e,250),i=yield e}catch(t){return void y.O.get(this.editor).showMessage(t||n.N("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),e)}if(!i)return;if(i.rejectReason)return void y.O.get(this.editor).showMessage(i.rejectReason,e);if(this._cts.token.isCancellationRequested)return;this._cts.dispose(),this._cts=new w.Dl(this.editor,5,i.range);let r=this.editor.getSelection(),s=0,o=i.text.length;v.e.isEmpty(r)||v.e.spansMultipleLines(r)||!v.e.containsRange(i.range,r)||(s=Math.max(0,r.startColumn-i.range.startColumn),o=Math.min(i.range.endColumn,r.endColumn)-i.range.startColumn);const a=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),l=yield this._renameInputField.value.getInput(i.range,i.text,s,o,a,this._cts.token);if("boolean"==typeof l)return void(l&&this.editor.focus());this.editor.focus();const c=(0,M.eP)(t.provideRenameEdits(l.newName,this._cts.token),this._cts.token).then((e=>R(this,void 0,void 0,(function*(){e&&this.editor.hasModel()&&(e.rejectReason?this._notificationService.info(e.rejectReason):this._bulkEditService.apply(S.fo.convert(e),{editor:this.editor,showPreview:l.wantsPreview,label:n.N("label","Renaming '{0}'",null==i?void 0:i.text),quotableLabel:n.N("quotableLabel","Renaming {0}",null==i?void 0:i.text)}).then((e=>{e.ariaSummary&&(0,b.Z9)(n.N("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",i.text,l.newName,e.ariaSummary))})).catch((e=>{this._notificationService.error(n.N("rename.failedApply","Rename failed to apply edits")),this._logService.error(e)})))}))),(e=>{this._notificationService.error(n.N("rename.failed","Rename failed to compute edits")),this._logService.error(e)}));return this._progressService.showWhile(c,250),c}))}acceptRenameInput(e){this._renameInputField.value.acceptInput(e)}cancelRenameInput(){this._renameInputField.value.cancelInput(!0)}};B.ID="editor.contrib.renameController",B=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([A(1,N.TG),A(2,C.lT),A(3,S.vu),A(4,o.e),A(5,D.VZ),A(6,I.V)],B);class W extends a.R6{constructor(){super({id:"editor.action.rename",label:n.N("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:s.Ao.and(l.u.writable,l.u.hasRenameProvider),kbOpts:{kbExpr:l.u.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(e,t){const i=e.get(x.$),[n,s]=Array.isArray(t)&&t||[void 0,void 0];return k.o.isUri(n)&&d.L.isIPosition(s)?i.openCodeEditor({resource:n},i.getActiveCodeEditor()).then((e=>{e&&(e.setPosition(s),e.invokeWithinContext((t=>(this.reportTelemetry(t,e),this.run(t,e)))))}),r.dL):super.runCommand(e,t)}run(e,t){const i=B.get(t);return i?i.run():Promise.resolve()}}(0,a._K)(B.ID,B),(0,a.Qr)(W);const Y=a._l.bindToContribution(B.get);(0,a.fK)(new Y({id:"acceptRenameInput",precondition:p,handler:e=>e.acceptRenameInput(!1),kbOpts:{weight:199,kbExpr:l.u.focus,primary:3}})),(0,a.fK)(new Y({id:"acceptRenameInputWithPreview",precondition:s.Ao.and(p,s.Ao.has("config.editor.rename.enablePreview")),handler:e=>e.acceptRenameInput(!0),kbOpts:{weight:199,kbExpr:l.u.focus,primary:1027}})),(0,a.fK)(new Y({id:"cancelRenameInput",precondition:p,handler:e=>e.cancelRenameInput(),kbOpts:{weight:199,kbExpr:l.u.focus,primary:9,secondary:[1033]}})),(0,a.sb)("_executeDocumentRenameProvider",(function(e,t,...i){const[n]=i;return(0,O.p_)("string"==typeof n),F(e,t,n)})),E.B.as(T.IP.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:n.N("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}})},80689:(e,t,i)=>{"use strict";i.d(t,{x:()=>o});var n=i(50187),r=i(24314),s=i(91741);class o{provideSelectionRanges(e,t){return i=this,n=void 0,s=function*(){const i=[];for(const n of t){const t=[];i.push(t);const r=new Map;yield new Promise((t=>o._bracketsRightYield(t,0,e,n,r))),yield new Promise((i=>o._bracketsLeftYield(i,0,e,n,r,t)))}return i},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s}static _bracketsRightYield(e,t,i,n,r){const a=new Map,l=Date.now();for(;;){if(t>=o._maxRounds){e();break}if(!n){e();break}let c=i.findNextBracket(n);if(!c){e();break}if(Date.now()-l>o._maxDuration){setTimeout((()=>o._bracketsRightYield(e,t+1,i,n,r)));break}const d=c.close[0];if(c.isOpen){let e=a.has(d)?a.get(d):0;a.set(d,e+1)}else{let e=a.has(d)?a.get(d):0;if(e-=1,a.set(d,Math.max(0,e)),e<0){let e=r.get(d);e||(e=new s.S,r.set(d,e)),e.push(c.range)}}n=c.range.getEndPosition()}}static _bracketsLeftYield(e,t,i,n,s,a){const l=new Map,c=Date.now();for(;;){if(t>=o._maxRounds&&0===s.size){e();break}if(!n){e();break}let d=i.findPrevBracket(n);if(!d){e();break}if(Date.now()-c>o._maxDuration){setTimeout((()=>o._bracketsLeftYield(e,t+1,i,n,s,a)));break}const h=d.close[0];if(d.isOpen){let e=l.has(h)?l.get(h):0;if(e-=1,l.set(h,Math.max(0,e)),e<0){let e=s.get(h);if(e){let t=e.shift();0===e.size&&s.delete(h);const n=r.e.fromPositions(d.range.getEndPosition(),t.getStartPosition()),l=r.e.fromPositions(d.range.getStartPosition(),t.getEndPosition());a.push({range:n}),a.push({range:l}),o._addBracketLeading(i,l,a)}}}else{let e=l.has(h)?l.get(h):0;l.set(h,e+1)}n=d.range.getStartPosition()}}static _addBracketLeading(e,t,i){if(t.startLineNumber===t.endLineNumber)return;const s=t.startLineNumber,o=e.getLineFirstNonWhitespaceColumn(s);0!==o&&o!==t.startColumn&&(i.push({range:r.e.fromPositions(new n.L(s,o),t.getEndPosition())}),i.push({range:r.e.fromPositions(new n.L(s,1),t.getEndPosition())}));const a=s-1;if(a>0){const s=e.getLineFirstNonWhitespaceColumn(a);s===t.startColumn&&s!==e.getLineLastNonWhitespaceColumn(a)&&(i.push({range:r.e.fromPositions(new n.L(a,s),t.getEndPosition())}),i.push({range:r.e.fromPositions(new n.L(a,1),t.getEndPosition())}))}}}o._maxDuration=30,o._maxRounds=2},81955:(e,t,i)=>{"use strict";i.r(t),i.d(t,{provideSelectionRanges:()=>w});var n=i(9488),r=i(71050),s=i(16830),o=i(50187),a=i(24314),l=i(3860),c=i(29102),d=i(43775),h=i(63580),u=i(84144),g=i(5976),f=i(97295),p=i(80689),m=i(94565),_=i(17301);class b{constructor(e,t){this.index=e,this.ranges=t}mov(e){let t=this.index+(e?1:-1);if(t<0||t>=this.ranges.length)return this;const i=new b(t,this.ranges);return i.ranges[t].equalsRange(this.ranges[this.index])?i.mov(e):i}}class v{constructor(e){this._ignoreSelection=!1,this._editor=e}static get(e){return e.getContribution(v.ID)}dispose(){(0,g.B9)(this._selectionListener)}run(e){if(!this._editor.hasModel())return;const t=this._editor.getSelections(),i=this._editor.getModel();if(!d.AC.has(i))return;let s=Promise.resolve(void 0);return this._state||(s=w(i,t.map((e=>e.getPosition())),r.T.None).then((e=>{if(n.Of(e)&&e.length===t.length&&this._editor.hasModel()&&n.fS(this._editor.getSelections(),t,((e,t)=>e.equalsSelection(t)))){for(let i=0;i<e.length;i++)e[i]=e[i].filter((e=>e.containsPosition(t[i].getStartPosition())&&e.containsPosition(t[i].getEndPosition()))),e[i].unshift(t[i]);this._state=e.map((e=>new b(0,e))),(0,g.B9)(this._selectionListener),this._selectionListener=this._editor.onDidChangeCursorPosition((()=>{this._ignoreSelection||((0,g.B9)(this._selectionListener),this._state=void 0)}))}}))),s.then((()=>{if(!this._state)return;this._state=this._state.map((t=>t.mov(e)));const t=this._state.map((e=>l.Y.fromPositions(e.ranges[e.index].getStartPosition(),e.ranges[e.index].getEndPosition())));this._ignoreSelection=!0;try{this._editor.setSelections(t)}finally{this._ignoreSelection=!1}}))}}v.ID="editor.contrib.smartSelectController";class y extends s.R6{constructor(e,t){super(t),this._forward=e}run(e,t){return i=this,n=void 0,s=function*(){let e=v.get(t);e&&(yield e.run(this._forward))},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s}}function w(e,t,i){const r=d.AC.all(e);1===r.length&&r.unshift(new p.x);let s=[],l=[];for(const o of r)s.push(Promise.resolve(o.provideSelectionRanges(e,t,i)).then((e=>{if(n.Of(e)&&e.length===t.length)for(let i=0;i<t.length;i++){l[i]||(l[i]=[]);for(const n of e[i])a.e.isIRange(n.range)&&a.e.containsPosition(n.range,t[i])&&l[i].push(a.e.lift(n.range))}}),_.Cp));return Promise.all(s).then((()=>l.map((t=>{if(0===t.length)return[];t.sort(((e,t)=>o.L.isBefore(e.getStartPosition(),t.getStartPosition())?1:o.L.isBefore(t.getStartPosition(),e.getStartPosition())||o.L.isBefore(e.getEndPosition(),t.getEndPosition())?-1:o.L.isBefore(t.getEndPosition(),e.getEndPosition())?1:0));let i,n=[];for(const e of t)(!i||a.e.containsRange(e,i)&&!a.e.equalsRange(e,i))&&(n.push(e),i=e);let r=[n[0]];for(let t=1;t<n.length;t++){const i=n[t-1],s=n[t];if(s.startLineNumber!==i.startLineNumber||s.endLineNumber!==i.endLineNumber){const t=new a.e(i.startLineNumber,e.getLineFirstNonWhitespaceColumn(i.startLineNumber),i.endLineNumber,e.getLineLastNonWhitespaceColumn(i.endLineNumber));t.containsRange(i)&&!t.equalsRange(i)&&s.containsRange(t)&&!s.equalsRange(t)&&r.push(t);const n=new a.e(i.startLineNumber,1,i.endLineNumber,e.getLineMaxColumn(i.endLineNumber));n.containsRange(i)&&!n.equalsRange(t)&&s.containsRange(n)&&!s.equalsRange(n)&&r.push(n)}r.push(s)}return r}))))}m.P.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand"),(0,s._K)(v.ID,v),(0,s.Qr)(class extends y{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:h.N("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:c.u.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:u.eH.MenubarSelectionMenu,group:"1_basic",title:h.N({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}}),(0,s.Qr)(class extends y{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:h.N("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:c.u.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:u.eH.MenubarSelectionMenu,group:"1_basic",title:h.N({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}}),d.AC.register("*",new class{provideSelectionRanges(e,t){const i=[];for(const n of t){const t=[];i.push(t),this._addInWordRanges(t,e,n),this._addWordRanges(t,e,n),this._addWhitespaceLine(t,e,n),t.push({range:e.getFullModelRange()})}return i}_addInWordRanges(e,t,i){const n=t.getWordAtPosition(i);if(!n)return;let{word:r,startColumn:s}=n,o=i.column-s,l=o,c=o,d=0;for(;l>=0;l--){let e=r.charCodeAt(l);if(l!==o&&(95===e||45===e))break;if((0,f.mK)(e)&&(0,f.df)(d))break;d=e}for(l+=1;c<r.length;c++){let e=r.charCodeAt(c);if((0,f.df)(e)&&(0,f.mK)(d))break;if(95===e||45===e)break;d=e}l<c&&e.push({range:new a.e(i.lineNumber,s+l,i.lineNumber,s+c)})}_addWordRanges(e,t,i){const n=t.getWordAtPosition(i);n&&e.push({range:new a.e(i.lineNumber,n.startColumn,i.lineNumber,n.endColumn)})}_addWhitespaceLine(e,t,i){t.getLineLength(i.lineNumber)>0&&0===t.getLineFirstNonWhitespaceColumn(i.lineNumber)&&0===t.getLineLastNonWhitespaceColumn(i.lineNumber)&&e.push({range:new a.e(i.lineNumber,1,i.lineNumber,t.getLineMaxColumn(i.lineNumber))})}}),(0,s.f)("_executeSelectionRangeProvider",(function(e,...t){const[i]=t;return w(e,i,r.T.None)}))},78694:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SnippetController2:()=>j});var n=i(5976),r=i(16830),s=i(24314),o=i(3860),a=i(29102),l=i(79599),c=i(38819),d=i(43557),h=i(9488),u=i(97295),g=i(69386),f=i(3411),p=i(40382),m=i(72065),_=i(63472),b=i(63580),v=i(88721),y=i(95935),w=i(83831),C=i(70666);const S="code-workspace";function k(e){return e instanceof C.o}var x=i(68843);class L{constructor(e){this._delegates=e}resolve(e){for(const t of this._delegates){let i=t.resolve(e);if(void 0!==i)return i}}}class M{constructor(e,t,i,n){this._model=e,this._selection=t,this._selectionIdx=i,this._overtypingCapturer=n}resolve(e){const{name:t}=e;if("SELECTION"===t||"TM_SELECTED_TEXT"===t){let t=this._model.getValueInRange(this._selection)||void 0,i=this._selection.startLineNumber!==this._selection.endLineNumber;if(!t&&this._overtypingCapturer){const e=this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);e&&(t=e.value,i=e.multiline)}if(t&&i&&e.snippet){const i=this._model.getLineContent(this._selection.startLineNumber),n=(0,u.V8)(i,0,this._selection.startColumn-1);let r=n;e.snippet.walk((t=>t!==e&&(t instanceof _.xv&&(r=(0,u.V8)(t.value.split(/\r\n|\r|\n/).pop())),!0)));const s=(0,u.Mh)(r,n);t=t.replace(/(\r\n|\r|\n)(.*)/g,((e,t,i)=>`${t}${r.substr(s)}${i}`))}return t}if("TM_CURRENT_LINE"===t)return this._model.getLineContent(this._selection.positionLineNumber);if("TM_CURRENT_WORD"===t){const e=this._model.getWordAtPosition({lineNumber:this._selection.positionLineNumber,column:this._selection.positionColumn});return e&&e.word||void 0}return"TM_LINE_INDEX"===t?String(this._selection.positionLineNumber-1):"TM_LINE_NUMBER"===t?String(this._selection.positionLineNumber):void 0}}class D{constructor(e,t){this._labelService=e,this._model=t}resolve(e){const{name:t}=e;if("TM_FILENAME"===t)return v.EZ(this._model.uri.fsPath);if("TM_FILENAME_BASE"===t){const e=v.EZ(this._model.uri.fsPath),t=e.lastIndexOf(".");return t<=0?e:e.slice(0,t)}return"TM_DIRECTORY"===t&&this._labelService?"."===v.XX(this._model.uri.fsPath)?"":this._labelService.getUriLabel((0,y.XX)(this._model.uri)):"TM_FILEPATH"===t&&this._labelService?this._labelService.getUriLabel(this._model.uri):void 0}}class N{constructor(e,t,i,n){this._readClipboardText=e,this._selectionIdx=t,this._selectionCount=i,this._spread=n}resolve(e){if("CLIPBOARD"!==e.name)return;const t=this._readClipboardText();if(t){if(this._spread){const e=t.split(/\r\n|\n|\r/).filter((e=>!(0,u.m5)(e)));if(e.length===this._selectionCount)return e[this._selectionIdx]}return t}}}class E{constructor(e,t){this._model=e,this._selection=t}resolve(e){const{name:t}=e,i=this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber,this._selection.selectionStartColumn),n=w.zu.getComments(i);if(n)return"LINE_COMMENT"===t?n.lineCommentToken||void 0:"BLOCK_COMMENT_START"===t?n.blockCommentStartToken||void 0:"BLOCK_COMMENT_END"===t&&n.blockCommentEndToken||void 0}}class T{resolve(e){const{name:t}=e;return"CURRENT_YEAR"===t?String((new Date).getFullYear()):"CURRENT_YEAR_SHORT"===t?String((new Date).getFullYear()).slice(-2):"CURRENT_MONTH"===t?String((new Date).getMonth().valueOf()+1).padStart(2,"0"):"CURRENT_DATE"===t?String((new Date).getDate().valueOf()).padStart(2,"0"):"CURRENT_HOUR"===t?String((new Date).getHours().valueOf()).padStart(2,"0"):"CURRENT_MINUTE"===t?String((new Date).getMinutes().valueOf()).padStart(2,"0"):"CURRENT_SECOND"===t?String((new Date).getSeconds().valueOf()).padStart(2,"0"):"CURRENT_DAY_NAME"===t?T.dayNames[(new Date).getDay()]:"CURRENT_DAY_NAME_SHORT"===t?T.dayNamesShort[(new Date).getDay()]:"CURRENT_MONTH_NAME"===t?T.monthNames[(new Date).getMonth()]:"CURRENT_MONTH_NAME_SHORT"===t?T.monthNamesShort[(new Date).getMonth()]:"CURRENT_SECONDS_UNIX"===t?String(Math.floor(Date.now()/1e3)):void 0}}T.dayNames=[b.N("Sunday","Sunday"),b.N("Monday","Monday"),b.N("Tuesday","Tuesday"),b.N("Wednesday","Wednesday"),b.N("Thursday","Thursday"),b.N("Friday","Friday"),b.N("Saturday","Saturday")],T.dayNamesShort=[b.N("SundayShort","Sun"),b.N("MondayShort","Mon"),b.N("TuesdayShort","Tue"),b.N("WednesdayShort","Wed"),b.N("ThursdayShort","Thu"),b.N("FridayShort","Fri"),b.N("SaturdayShort","Sat")],T.monthNames=[b.N("January","January"),b.N("February","February"),b.N("March","March"),b.N("April","April"),b.N("May","May"),b.N("June","June"),b.N("July","July"),b.N("August","August"),b.N("September","September"),b.N("October","October"),b.N("November","November"),b.N("December","December")],T.monthNamesShort=[b.N("JanuaryShort","Jan"),b.N("FebruaryShort","Feb"),b.N("MarchShort","Mar"),b.N("AprilShort","Apr"),b.N("MayShort","May"),b.N("JuneShort","Jun"),b.N("JulyShort","Jul"),b.N("AugustShort","Aug"),b.N("SeptemberShort","Sep"),b.N("OctoberShort","Oct"),b.N("NovemberShort","Nov"),b.N("DecemberShort","Dec")];class I{constructor(e){this._workspaceService=e}resolve(e){if(!this._workspaceService)return;const t=function(e){return e.configuration?{configPath:e.configuration,id:e.id}:1===e.folders.length?e.folders[0].uri:void 0}(this._workspaceService.getWorkspace());return t?"WORKSPACE_NAME"===e.name?this._resolveWorkspaceName(t):"WORKSPACE_FOLDER"===e.name?this._resoveWorkspacePath(t):void 0:void 0}_resolveWorkspaceName(e){if(k(e))return v.EZ(e.path);let t=v.EZ(e.configPath.path);return t.endsWith(S)&&(t=t.substr(0,t.length-S.length-1)),t}_resoveWorkspacePath(e){if(k(e))return(0,x.DT)(e.fsPath);let t=v.EZ(e.configPath.path),i=e.configPath.fsPath;return i.endsWith(t)&&(i=i.substr(0,i.length-t.length-1)),i?(0,x.DT)(i):"/"}}class O{resolve(e){const{name:t}=e;return"RANDOM"===t?Math.random().toString().slice(-6):"RANDOM_HEX"===t?Math.random().toString(16).slice(-6):void 0}}var A=i(97781),R=i(73910),P=i(44349);(0,A.Ic)(((e,t)=>{function i(t){const i=e.getColor(t);return i?i.toString():"transparent"}t.addRule(`.monaco-editor .snippet-placeholder { background-color: ${i(R.u2)}; outline-color: ${i(R.Pk)}; }`),t.addRule(`.monaco-editor .finish-snippet-placeholder { background-color: ${i(R.I1)}; outline-color: ${i(R.U6)}; }`)}));class F{constructor(e,t,i){this._nestingLevel=1,this._editor=e,this._snippet=t,this._offset=i,this._placeholderGroups=(0,h.vM)(t.placeholders,_.Vm.compareByIndex),this._placeholderGroupsIdx=-1}dispose(){this._placeholderDecorations&&this._editor.deltaDecorations([...this._placeholderDecorations.values()],[]),this._placeholderGroups.length=0}_initDecorations(){if(this._placeholderDecorations)return;this._placeholderDecorations=new Map;const e=this._editor.getModel();this._editor.changeDecorations((t=>{for(const i of this._snippet.placeholders){const n=this._snippet.offset(i),r=this._snippet.fullLen(i),o=s.e.fromPositions(e.getPositionAt(this._offset+n),e.getPositionAt(this._offset+n+r)),a=i.isFinalTabstop?F._decor.inactiveFinal:F._decor.inactive,l=t.addDecoration(o,a);this._placeholderDecorations.set(i,l)}}))}move(e){if(!this._editor.hasModel())return[];if(this._initDecorations(),this._placeholderGroupsIdx>=0){let e=[];for(const t of this._placeholderGroups[this._placeholderGroupsIdx])if(t.transform){const i=this._placeholderDecorations.get(t),n=this._editor.getModel().getDecorationRange(i),r=this._editor.getModel().getValueInRange(n);e.push(g.h.replaceMove(n,t.transform.resolve(r)))}e.length>0&&this._editor.executeEdits("snippet.placeholderTransform",e)}let t=!1;!0===e&&this._placeholderGroupsIdx<this._placeholderGroups.length-1?(this._placeholderGroupsIdx+=1,t=!0):!1===e&&this._placeholderGroupsIdx>0&&(this._placeholderGroupsIdx-=1,t=!0);const i=this._editor.getModel().changeDecorations((e=>{const i=new Set,n=[];for(const r of this._placeholderGroups[this._placeholderGroupsIdx]){const s=this._placeholderDecorations.get(r),a=this._editor.getModel().getDecorationRange(s);n.push(new o.Y(a.startLineNumber,a.startColumn,a.endLineNumber,a.endColumn)),t=t&&this._hasPlaceholderBeenCollapsed(r),e.changeDecorationOptions(s,r.isFinalTabstop?F._decor.activeFinal:F._decor.active),i.add(r);for(const t of this._snippet.enclosingPlaceholders(r)){const n=this._placeholderDecorations.get(t);e.changeDecorationOptions(n,t.isFinalTabstop?F._decor.activeFinal:F._decor.active),i.add(t)}}for(const[t,n]of this._placeholderDecorations)i.has(t)||e.changeDecorationOptions(n,t.isFinalTabstop?F._decor.inactiveFinal:F._decor.inactive);return n}));return t?this.move(e):null!=i?i:[]}_hasPlaceholderBeenCollapsed(e){let t=e;for(;t;){if(t instanceof _.Vm){const e=this._placeholderDecorations.get(t);if(this._editor.getModel().getDecorationRange(e).isEmpty()&&t.toString().length>0)return!0}t=t.parent}return!1}get isAtFirstPlaceholder(){return this._placeholderGroupsIdx<=0||0===this._placeholderGroups.length}get isAtLastPlaceholder(){return this._placeholderGroupsIdx===this._placeholderGroups.length-1}get hasPlaceholder(){return this._snippet.placeholders.length>0}computePossibleSelections(){const e=new Map;for(const t of this._placeholderGroups){let i;for(const n of t){if(n.isFinalTabstop)break;i||(i=[],e.set(n.index,i));const t=this._placeholderDecorations.get(n),r=this._editor.getModel().getDecorationRange(t);if(!r){e.delete(n.index);break}i.push(r)}}return e}get choice(){return this._placeholderGroups[this._placeholderGroupsIdx][0].choice}merge(e){const t=this._editor.getModel();this._nestingLevel*=10,this._editor.changeDecorations((i=>{for(const n of this._placeholderGroups[this._placeholderGroupsIdx]){const r=e.shift();console.assert(!r._placeholderDecorations);const o=r._snippet.placeholderInfo.last.index;for(const e of r._snippet.placeholderInfo.all)e.isFinalTabstop?e.index=n.index+(o+1)/this._nestingLevel:e.index=n.index+e.index/this._nestingLevel;this._snippet.replace(n,r._snippet.children);const a=this._placeholderDecorations.get(n);i.removeDecoration(a),this._placeholderDecorations.delete(n);for(const e of r._snippet.placeholders){const n=r._snippet.offset(e),o=r._snippet.fullLen(e),a=s.e.fromPositions(t.getPositionAt(r._offset+n),t.getPositionAt(r._offset+n+o)),l=i.addDecoration(a,F._decor.inactive);this._placeholderDecorations.set(e,l)}}this._placeholderGroups=(0,h.vM)(this._snippet.placeholders,_.Vm.compareByIndex)}))}}F._decor={active:f.qx.register({stickiness:0,className:"snippet-placeholder"}),inactive:f.qx.register({stickiness:1,className:"snippet-placeholder"}),activeFinal:f.qx.register({stickiness:1,className:"finish-snippet-placeholder"}),inactiveFinal:f.qx.register({stickiness:1,className:"finish-snippet-placeholder"})};const B={overwriteBefore:0,overwriteAfter:0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};class W{constructor(e,t,i=B){this._templateMerges=[],this._snippets=[],this._editor=e,this._template=t,this._options=i}static adjustWhitespace(e,t,i,n,r){const s=e.getLineContent(t.lineNumber),o=(0,u.V8)(s,0,t.column-1);i.walk((t=>{if(t instanceof _.xv&&!(t.parent instanceof _.Lv)){const i=t.value.split(/\r\n|\r|\n/);if(n)for(let t=1;t<i.length;t++){let n=(0,u.V8)(i[t]);i[t]=e.normalizeIndentation(o+n)+i[t].substr(n.length)}if(r){const n=i.join(e.getEOL());n!==t.value&&t.parent.replace(t,[new _.xv(n)])}}return!0}))}static adjustSelection(e,t,i,n){if(0!==i||0!==n){const{positionLineNumber:r,positionColumn:s}=t,a=s-i,l=s+n,c=e.validateRange({startLineNumber:r,startColumn:a,endLineNumber:r,endColumn:l});t=o.Y.createWithDirection(c.startLineNumber,c.startColumn,c.endLineNumber,c.endColumn,t.getDirection())}return t}static createEditsAndSnippets(e,t,i,n,r,o,a,l){const c=[],d=[];if(!e.hasModel())return{edits:c,snippets:d};const h=e.getModel(),u=e.invokeWithinContext((e=>e.get(p.ec,m.jt))),f=e.invokeWithinContext((e=>new D(e.get(P.e,m.jt),h))),b=()=>a;let v=0,y=h.getValueInRange(W.adjustSelection(h,e.getSelection(),i,0)),w=h.getValueInRange(W.adjustSelection(h,e.getSelection(),0,n)),C=h.getLineFirstNonWhitespaceColumn(e.getSelection().positionLineNumber);const S=e.getSelections().map(((e,t)=>({selection:e,idx:t}))).sort(((e,t)=>s.e.compareRangesUsingStarts(e.selection,t.selection)));for(const{selection:s,idx:a}of S){let p=W.adjustSelection(h,s,i,0),m=W.adjustSelection(h,s,0,n);y!==h.getValueInRange(p)&&(p=s),w!==h.getValueInRange(m)&&(m=s);const k=s.setStartPosition(p.startLineNumber,p.startColumn).setEndPosition(m.endLineNumber,m.endColumn),x=(new _.Yj).parse(t,!0,r),D=k.getStartPosition();W.adjustWhitespace(h,D,x,o||a>0&&C!==h.getLineFirstNonWhitespaceColumn(s.positionLineNumber),!0),x.resolveVariables(new L([f,new N(b,a,S.length,"spread"===e.getOption(62)),new M(h,s,a,l),new E(h,s),new T,new I(u),new O]));const A=h.getOffsetAt(D)+v;v+=x.toString().length-h.getValueLengthInRange(k),c[a]=g.h.replace(k,x.toString()),c[a].identifier={major:a,minor:0},d[a]=new F(e,x,A)}return{edits:c,snippets:d}}dispose(){(0,n.B9)(this._snippets)}_logInfo(){return`template="${this._template}", merged_templates="${this._templateMerges.join(" -> ")}"`}insert(){if(!this._editor.hasModel())return;const{edits:e,snippets:t}=W.createEditsAndSnippets(this._editor,this._template,this._options.overwriteBefore,this._options.overwriteAfter,!1,this._options.adjustWhitespace,this._options.clipboardText,this._options.overtypingCapturer);this._snippets=t,this._editor.executeEdits("snippet",e,(e=>this._snippets[0].hasPlaceholder?this._move(!0):e.filter((e=>!!e.identifier)).map((e=>o.Y.fromPositions(e.range.getEndPosition()))))),this._editor.revealRange(this._editor.getSelections()[0])}merge(e,t=B){if(!this._editor.hasModel())return;this._templateMerges.push([this._snippets[0]._nestingLevel,this._snippets[0]._placeholderGroupsIdx,e]);const{edits:i,snippets:n}=W.createEditsAndSnippets(this._editor,e,t.overwriteBefore,t.overwriteAfter,!0,t.adjustWhitespace,t.clipboardText,t.overtypingCapturer);this._editor.executeEdits("snippet",i,(e=>{for(const e of this._snippets)e.merge(n);return console.assert(0===n.length),this._snippets[0].hasPlaceholder?this._move(void 0):e.filter((e=>!!e.identifier)).map((e=>o.Y.fromPositions(e.range.getEndPosition())))}))}next(){const e=this._move(!0);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}prev(){const e=this._move(!1);this._editor.setSelections(e),this._editor.revealPositionInCenterIfOutsideViewport(e[0].getPosition())}_move(e){const t=[];for(const i of this._snippets){const n=i.move(e);t.push(...n)}return t}get isAtFirstPlaceholder(){return this._snippets[0].isAtFirstPlaceholder}get isAtLastPlaceholder(){return this._snippets[0].isAtLastPlaceholder}get hasPlaceholder(){return this._snippets[0].hasPlaceholder}get choice(){return this._snippets[0].choice}isSelectionWithinPlaceholders(){if(!this.hasPlaceholder)return!1;const e=this._editor.getSelections();if(e.length<this._snippets.length)return!1;let t=new Map;for(const i of this._snippets){const n=i.computePossibleSelections();if(0===t.size)for(const[i,r]of n){r.sort(s.e.compareRangesUsingStarts);for(const n of e)if(r[0].containsRange(n)){t.set(i,[]);break}}if(0===t.size)return!1;t.forEach(((e,t)=>{e.push(...n.get(t))}))}e.sort(s.e.compareRangesUsingStarts);for(let[i,n]of t)if(n.length===e.length){n.sort(s.e.compareRangesUsingStarts);for(let r=0;r<n.length;r++)n[r].containsRange(e[r])||t.delete(i)}else t.delete(i);return t.size>0}}var Y=function(e,t){return function(i,n){t(i,n,e)}};const H={overwriteBefore:0,overwriteAfter:0,undoStopBefore:!0,undoStopAfter:!0,adjustWhitespace:!0,clipboardText:void 0,overtypingCapturer:void 0};let j=class e{constructor(t,i,r){this._editor=t,this._logService=i,this._snippetListener=new n.SL,this._modelVersionId=-1,this._inSnippet=e.InSnippetMode.bindTo(r),this._hasNextTabstop=e.HasNextTabstop.bindTo(r),this._hasPrevTabstop=e.HasPrevTabstop.bindTo(r)}static get(t){return t.getContribution(e.ID)}dispose(){this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),(0,n.B9)(this._session),this._snippetListener.dispose()}insert(e,t){try{this._doInsert(e,void 0===t?H:Object.assign(Object.assign({},H),t))}catch(t){this.cancel(),this._logService.error(t),this._logService.error("snippet_error"),this._logService.error("insert_template=",e),this._logService.error("existing_template=",this._session?this._session._logInfo():"<no_session>")}}_doInsert(e,t){this._editor.hasModel()&&(this._snippetListener.clear(),t.undoStopBefore&&this._editor.getModel().pushStackElement(),this._session?this._session.merge(e,t):(this._modelVersionId=this._editor.getModel().getAlternativeVersionId(),this._session=new W(this._editor,e,t),this._session.insert()),t.undoStopAfter&&this._editor.getModel().pushStackElement(),this._updateState(),this._snippetListener.add(this._editor.onDidChangeModelContent((e=>e.isFlush&&this.cancel()))),this._snippetListener.add(this._editor.onDidChangeModel((()=>this.cancel()))),this._snippetListener.add(this._editor.onDidChangeCursorSelection((()=>this._updateState()))))}_updateState(){if(this._session&&this._editor.hasModel()){if(this._modelVersionId===this._editor.getModel().getAlternativeVersionId())return this.cancel();if(!this._session.hasPlaceholder)return this.cancel();if(this._session.isAtLastPlaceholder||!this._session.isSelectionWithinPlaceholders())return this.cancel();this._inSnippet.set(!0),this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder),this._hasNextTabstop.set(!this._session.isAtLastPlaceholder),this._handleChoice()}}_handleChoice(){if(!this._session||!this._editor.hasModel())return void(this._currentChoice=void 0);const{choice:e}=this._session;if(e){if(this._currentChoice!==e){this._currentChoice=e,this._editor.setSelections(this._editor.getSelections().map((e=>o.Y.fromPositions(e.getStartPosition()))));const[t]=e.options;(0,l.i5)(this._editor,e.options.map(((e,i)=>({kind:13,label:e.value,insertText:e.value,sortText:"a".repeat(i+1),range:s.e.fromPositions(this._editor.getPosition(),this._editor.getPosition().delta(0,t.value.length))}))))}}else this._currentChoice=void 0}finish(){for(;this._inSnippet.get();)this.next()}cancel(e=!1){this._inSnippet.reset(),this._hasPrevTabstop.reset(),this._hasNextTabstop.reset(),this._snippetListener.clear(),(0,n.B9)(this._session),this._session=void 0,this._modelVersionId=-1,e&&this._editor.setSelections([this._editor.getSelection()])}prev(){this._session&&this._session.prev(),this._updateState()}next(){this._session&&this._session.next(),this._updateState()}isInSnippet(){return Boolean(this._inSnippet.get())}};j.ID="snippetController2",j.InSnippetMode=new c.uy("inSnippetMode",!1),j.HasNextTabstop=new c.uy("hasNextTabstop",!1),j.HasPrevTabstop=new c.uy("hasPrevTabstop",!1),j=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([Y(1,d.VZ),Y(2,c.i6)],j),(0,r._K)(j.ID,j);const V=r._l.bindToContribution(j.get);(0,r.fK)(new V({id:"jumpToNextSnippetPlaceholder",precondition:c.Ao.and(j.InSnippetMode,j.HasNextTabstop),handler:e=>e.next(),kbOpts:{weight:130,kbExpr:a.u.editorTextFocus,primary:2}})),(0,r.fK)(new V({id:"jumpToPrevSnippetPlaceholder",precondition:c.Ao.and(j.InSnippetMode,j.HasPrevTabstop),handler:e=>e.prev(),kbOpts:{weight:130,kbExpr:a.u.editorTextFocus,primary:1026}})),(0,r.fK)(new V({id:"leaveSnippet",precondition:j.InSnippetMode,handler:e=>e.cancel(!0),kbOpts:{weight:130,kbExpr:a.u.editorTextFocus,primary:9,secondary:[1033]}})),(0,r.fK)(new V({id:"acceptSnippet",precondition:j.InSnippetMode,handler:e=>e.finish()}))},63472:(e,t,i)=>{"use strict";i.d(t,{xv:()=>s,Vm:()=>a,Lv:()=>l,Yj:()=>f});class n{constructor(){this.value="",this.pos=0}static isDigitCharacter(e){return e>=48&&e<=57}static isVariableCharacter(e){return 95===e||e>=97&&e<=122||e>=65&&e<=90}text(e){this.value=e,this.pos=0}tokenText(e){return this.value.substr(e.pos,e.len)}next(){if(this.pos>=this.value.length)return{type:14,pos:this.pos,len:0};let e,t=this.pos,i=0,r=this.value.charCodeAt(t);if(e=n._table[r],"number"==typeof e)return this.pos+=1,{type:e,pos:t,len:1};if(n.isDigitCharacter(r)){e=8;do{i+=1,r=this.value.charCodeAt(t+i)}while(n.isDigitCharacter(r));return this.pos+=i,{type:e,pos:t,len:i}}if(n.isVariableCharacter(r)){e=9;do{r=this.value.charCodeAt(t+ ++i)}while(n.isVariableCharacter(r)||n.isDigitCharacter(r));return this.pos+=i,{type:e,pos:t,len:i}}e=10;do{i+=1,r=this.value.charCodeAt(t+i)}while(!isNaN(r)&&void 0===n._table[r]&&!n.isDigitCharacter(r)&&!n.isVariableCharacter(r));return this.pos+=i,{type:e,pos:t,len:i}}}n._table={36:0,58:1,44:2,123:3,125:4,92:5,47:6,124:7,43:11,45:12,63:13};class r{constructor(){this._children=[]}appendChild(e){return e instanceof s&&this._children[this._children.length-1]instanceof s?this._children[this._children.length-1].value+=e.value:(e.parent=this,this._children.push(e)),this}replace(e,t){const{parent:i}=e,n=i.children.indexOf(e),r=i.children.slice(0);r.splice(n,1,...t),i._children=r,function e(t,i){for(const n of t)n.parent=i,e(n.children,n)}(t,i)}get children(){return this._children}get snippet(){let e=this;for(;;){if(!e)return;if(e instanceof g)return e;e=e.parent}}toString(){return this.children.reduce(((e,t)=>e+t.toString()),"")}len(){return 0}}class s extends r{constructor(e){super(),this.value=e}toString(){return this.value}len(){return this.value.length}clone(){return new s(this.value)}}class o extends r{}class a extends o{constructor(e){super(),this.index=e}static compareByIndex(e,t){return e.index===t.index?0:e.isFinalTabstop?1:t.isFinalTabstop||e.index<t.index?-1:e.index>t.index?1:0}get isFinalTabstop(){return 0===this.index}get choice(){return 1===this._children.length&&this._children[0]instanceof l?this._children[0]:void 0}clone(){let e=new a(this.index);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((e=>e.clone())),e}}class l extends r{constructor(){super(...arguments),this.options=[]}appendChild(e){return e instanceof s&&(e.parent=this,this.options.push(e)),this}toString(){return this.options[0].value}len(){return this.options[0].len()}clone(){let e=new l;return this.options.forEach(e.appendChild,e),e}}class c extends r{constructor(){super(...arguments),this.regexp=new RegExp("")}resolve(e){const t=this;let i=!1,n=e.replace(this.regexp,(function(){return i=!0,t._replace(Array.prototype.slice.call(arguments,0,-2))}));return!i&&this._children.some((e=>e instanceof d&&Boolean(e.elseValue)))&&(n=this._replace([])),n}_replace(e){let t="";for(const i of this._children)if(i instanceof d){let n=e[i.index]||"";n=i.resolve(n),t+=n}else t+=i.toString();return t}toString(){return""}clone(){let e=new c;return e.regexp=new RegExp(this.regexp.source,(this.regexp.ignoreCase?"i":"")+(this.regexp.global?"g":"")),e._children=this.children.map((e=>e.clone())),e}}class d extends r{constructor(e,t,i,n){super(),this.index=e,this.shorthandName=t,this.ifValue=i,this.elseValue=n}resolve(e){return"upcase"===this.shorthandName?e?e.toLocaleUpperCase():"":"downcase"===this.shorthandName?e?e.toLocaleLowerCase():"":"capitalize"===this.shorthandName?e?e[0].toLocaleUpperCase()+e.substr(1):"":"pascalcase"===this.shorthandName?e?this._toPascalCase(e):"":Boolean(e)&&"string"==typeof this.ifValue?this.ifValue:Boolean(e)||"string"!=typeof this.elseValue?e||"":this.elseValue}_toPascalCase(e){const t=e.match(/[a-z]+/gi);return t?t.map((function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})).join(""):e}clone(){return new d(this.index,this.shorthandName,this.ifValue,this.elseValue)}}class h extends o{constructor(e){super(),this.name=e}resolve(e){let t=e.resolve(this);return this.transform&&(t=this.transform.resolve(t||"")),void 0!==t&&(this._children=[new s(t)],!0)}clone(){const e=new h(this.name);return this.transform&&(e.transform=this.transform.clone()),e._children=this.children.map((e=>e.clone())),e}}function u(e,t){const i=[...e];for(;i.length>0;){const e=i.shift();if(!t(e))break;i.unshift(...e.children)}}class g extends r{get placeholderInfo(){if(!this._placeholders){let e,t=[];this.walk((function(i){return i instanceof a&&(t.push(i),e=!e||e.index<i.index?i:e),!0})),this._placeholders={all:t,last:e}}return this._placeholders}get placeholders(){const{all:e}=this.placeholderInfo;return e}offset(e){let t=0,i=!1;return this.walk((n=>n===e?(i=!0,!1):(t+=n.len(),!0))),i?t:-1}fullLen(e){let t=0;return u([e],(e=>(t+=e.len(),!0))),t}enclosingPlaceholders(e){let t=[],{parent:i}=e;for(;i;)i instanceof a&&t.push(i),i=i.parent;return t}resolveVariables(e){return this.walk((t=>(t instanceof h&&t.resolve(e)&&(this._placeholders=void 0),!0))),this}appendChild(e){return this._placeholders=void 0,super.appendChild(e)}replace(e,t){return this._placeholders=void 0,super.replace(e,t)}clone(){let e=new g;return this._children=this.children.map((e=>e.clone())),e}walk(e){u(this.children,e)}}class f{constructor(){this._scanner=new n,this._token={type:14,pos:0,len:0}}static escape(e){return e.replace(/\$|}|\\/g,"\\$&")}static guessNeedsClipboard(e){return/\${?CLIPBOARD/.test(e)}parse(e,t,i){this._scanner.text(e),this._token=this._scanner.next();const n=new g;for(;this._parse(n););const r=new Map,s=[];let o=0;n.walk((e=>(e instanceof a&&(o+=1,e.isFinalTabstop?r.set(0,void 0):!r.has(e.index)&&e.children.length>0?r.set(e.index,e.children):s.push(e)),!0)));for(const e of s){const t=r.get(e.index);if(t){const i=new a(e.index);i.transform=e.transform;for(const e of t)i.appendChild(e.clone());n.replace(e,[i])}}return i||(i=o>0&&t),!r.has(0)&&i&&n.appendChild(new a(0)),n}_accept(e,t){if(void 0===e||this._token.type===e){let e=!t||this._scanner.tokenText(this._token);return this._token=this._scanner.next(),e}return!1}_backTo(e){return this._scanner.pos=e.pos+e.len,this._token=e,!1}_until(e){const t=this._token;for(;this._token.type!==e;){if(14===this._token.type)return!1;if(5===this._token.type){const e=this._scanner.next();if(0!==e.type&&4!==e.type&&5!==e.type)return!1}this._token=this._scanner.next()}const i=this._scanner.value.substring(t.pos,this._token.pos).replace(/\\(\$|}|\\)/g,"$1");return this._token=this._scanner.next(),i}_parse(e){return this._parseEscaped(e)||this._parseTabstopOrVariableName(e)||this._parseComplexPlaceholder(e)||this._parseComplexVariable(e)||this._parseAnything(e)}_parseEscaped(e){let t;return!!(t=this._accept(5,!0))&&(t=this._accept(0,!0)||this._accept(4,!0)||this._accept(5,!0)||t,e.appendChild(new s(t)),!0)}_parseTabstopOrVariableName(e){let t;const i=this._token;return this._accept(0)&&(t=this._accept(9,!0)||this._accept(8,!0))?(e.appendChild(/^\d+$/.test(t)?new a(Number(t)):new h(t)),!0):this._backTo(i)}_parseComplexPlaceholder(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(8,!0))))return this._backTo(i);const n=new a(Number(t));if(this._accept(1))for(;;){if(this._accept(4))return e.appendChild(n),!0;if(!this._parse(n))return e.appendChild(new s("${"+t+":")),n.children.forEach(e.appendChild,e),!0}else{if(!(n.index>0&&this._accept(7)))return this._accept(6)?this._parseTransform(n)?(e.appendChild(n),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(n),!0):this._backTo(i);{const t=new l;for(;;){if(this._parseChoiceElement(t)){if(this._accept(2))continue;if(this._accept(7)&&(n.appendChild(t),this._accept(4)))return e.appendChild(n),!0}return this._backTo(i),!1}}}}_parseChoiceElement(e){const t=this._token,i=[];for(;2!==this._token.type&&7!==this._token.type;){let e;if(e=(e=this._accept(5,!0))?this._accept(2,!0)||this._accept(7,!0)||this._accept(5,!0)||e:this._accept(void 0,!0),!e)return this._backTo(t),!1;i.push(e)}return 0===i.length?(this._backTo(t),!1):(e.appendChild(new s(i.join(""))),!0)}_parseComplexVariable(e){let t;const i=this._token;if(!(this._accept(0)&&this._accept(3)&&(t=this._accept(9,!0))))return this._backTo(i);const n=new h(t);if(!this._accept(1))return this._accept(6)?this._parseTransform(n)?(e.appendChild(n),!0):(this._backTo(i),!1):this._accept(4)?(e.appendChild(n),!0):this._backTo(i);for(;;){if(this._accept(4))return e.appendChild(n),!0;if(!this._parse(n))return e.appendChild(new s("${"+t+":")),n.children.forEach(e.appendChild,e),!0}}_parseTransform(e){let t=new c,i="",n="";for(;!this._accept(6);){let e;if(e=this._accept(5,!0))e=this._accept(6,!0)||e,i+=e;else{if(14===this._token.type)return!1;i+=this._accept(void 0,!0)}}for(;!this._accept(6);){let e;if(e=this._accept(5,!0))e=this._accept(5,!0)||this._accept(6,!0)||e,t.appendChild(new s(e));else if(!this._parseFormatString(t)&&!this._parseAnything(t))return!1}for(;!this._accept(4);){if(14===this._token.type)return!1;n+=this._accept(void 0,!0)}try{t.regexp=new RegExp(i,n)}catch(e){return!1}return e.transform=t,!0}_parseFormatString(e){const t=this._token;if(!this._accept(0))return!1;let i=!1;this._accept(3)&&(i=!0);let n=this._accept(8,!0);if(!n)return this._backTo(t),!1;if(!i)return e.appendChild(new d(Number(n))),!0;if(this._accept(4))return e.appendChild(new d(Number(n))),!0;if(!this._accept(1))return this._backTo(t),!1;if(this._accept(6)){let i=this._accept(9,!0);return i&&this._accept(4)?(e.appendChild(new d(Number(n),i)),!0):(this._backTo(t),!1)}if(this._accept(11)){let t=this._until(4);if(t)return e.appendChild(new d(Number(n),void 0,t,void 0)),!0}else if(this._accept(12)){let t=this._until(4);if(t)return e.appendChild(new d(Number(n),void 0,void 0,t)),!0}else if(this._accept(13)){let t=this._until(1);if(t){let i=this._until(4);if(i)return e.appendChild(new d(Number(n),void 0,t,i)),!0}}else{let t=this._until(4);if(t)return e.appendChild(new d(Number(n),void 0,void 0,t)),!0}return this._backTo(t),!1}_parseAnything(e){return 14!==this._token.type&&(e.appendChild(new s(this._scanner.tokenText(this._token))),this._accept(void 0),!0)}}},79599:(e,t,i)=>{"use strict";i.d(t,{_y:()=>p,GI:()=>m,A9:()=>b,ZJ:()=>v,kL:()=>w,wg:()=>k,i5:()=>L});var n=i(17301),r=i(16830),s=i(43775),o=i(50187),a=i(38819),l=i(71050),c=i(24314),d=i(75392),h=i(5976),u=i(84144),g=i(63472),f=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const p={Visible:new a.uy("suggestWidgetVisible",!1),DetailsVisible:new a.uy("suggestWidgetDetailsVisible",!1),MultipleSuggestions:new a.uy("suggestWidgetMultipleSuggestions",!1),MakesTextEdit:new a.uy("suggestionMakesTextEdit",!0),AcceptSuggestionsOnEnter:new a.uy("acceptSuggestionOnEnter",!0),HasInsertAndReplaceRange:new a.uy("suggestionHasInsertAndReplaceRange",!1),CanResolve:new a.uy("suggestionCanResolve",!1)},m=new u.eH("suggestWidgetStatusBar");class _{constructor(e,t,i,n){this.position=e,this.completion=t,this.container=i,this.provider=n,this.isInvalid=!1,this.score=d.CL.Default,this.distance=0,this.textLabel="string"==typeof t.label?t.label:t.label.name,this.labelLow=this.textLabel.toLowerCase(),this.isInvalid=!this.textLabel,this.sortTextLow=t.sortText&&t.sortText.toLowerCase(),this.filterTextLow=t.filterText&&t.filterText.toLowerCase(),c.e.isIRange(t.range)?(this.editStart=new o.L(t.range.startLineNumber,t.range.startColumn),this.editInsertEnd=new o.L(t.range.endLineNumber,t.range.endColumn),this.editReplaceEnd=new o.L(t.range.endLineNumber,t.range.endColumn),this.isInvalid=this.isInvalid||c.e.spansMultipleLines(t.range)||t.range.startLineNumber!==e.lineNumber):(this.editStart=new o.L(t.range.insert.startLineNumber,t.range.insert.startColumn),this.editInsertEnd=new o.L(t.range.insert.endLineNumber,t.range.insert.endColumn),this.editReplaceEnd=new o.L(t.range.replace.endLineNumber,t.range.replace.endColumn),this.isInvalid=this.isInvalid||c.e.spansMultipleLines(t.range.insert)||c.e.spansMultipleLines(t.range.replace)||t.range.insert.startLineNumber!==e.lineNumber||t.range.replace.startLineNumber!==e.lineNumber||t.range.insert.startColumn!==t.range.replace.startColumn),"function"!=typeof n.resolveCompletionItem&&(this._resolveCache=Promise.resolve(),this._isResolved=!0)}get isResolved(){return!!this._isResolved}resolve(e){return f(this,void 0,void 0,(function*(){if(!this._resolveCache){const t=e.onCancellationRequested((()=>{this._resolveCache=void 0,this._isResolved=!1}));this._resolveCache=Promise.resolve(this.provider.resolveCompletionItem(this.completion,e)).then((e=>{Object.assign(this.completion,e),this._isResolved=!0,t.dispose()}),(e=>{(0,n.VV)(e)&&(this._resolveCache=void 0,this._isResolved=!1)}))}return this._resolveCache}))}}class b{constructor(e=2,t=new Set,i=new Set){this.snippetSortOrder=e,this.kindFilter=t,this.providerFilter=i}}function v(){}b.default=new b;class y{constructor(e,t,i){this.items=e,this.needsClipboard=t,this.dispoables=i}}function w(e,t,i=b.default,r={triggerKind:0},o=l.T.None){return f(this,void 0,void 0,(function*(){t=t.clone();const a=e.getWordAtPosition(t),l=a?new c.e(t.lineNumber,a.startColumn,t.lineNumber,a.endColumn):c.e.fromPositions(t),d={replace:l,insert:l.setEndPosition(t.lineNumber,t.column)},u=[],p=new h.SL;let m=!1;const b=(e,n)=>{if(n){for(let r of n.suggestions)i.kindFilter.has(r.kind)||(r.range||(r.range=d),r.sortText||(r.sortText="string"==typeof r.label?r.label:r.label.name),!m&&r.insertTextRules&&4&r.insertTextRules&&(m=g.Yj.guessNeedsClipboard(r.insertText)),u.push(new _(t,r,n,e)));(0,h.Wf)(n)&&p.add(n)}},v=(()=>f(this,void 0,void 0,(function*(){})))();for(let a of s.KZ.orderedGroups(e)){let s=u.length;if(yield Promise.all(a.map((s=>f(this,void 0,void 0,(function*(){if(!(i.providerFilter.size>0)||i.providerFilter.has(s))try{const i=yield s.provideCompletionItems(e,t,r,o);b(s,i)}catch(e){(0,n.Cp)(e)}}))))),s!==u.length||o.isCancellationRequested)break}return yield v,o.isCancellationRequested?(p.dispose(),Promise.reject((0,n.F0)())):new y(u.sort(k(i.snippetSortOrder)),m,p)}))}function C(e,t){if(e.sortTextLow&&t.sortTextLow){if(e.sortTextLow<t.sortTextLow)return-1;if(e.sortTextLow>t.sortTextLow)return 1}return e.completion.label<t.completion.label?-1:e.completion.label>t.completion.label?1:e.completion.kind-t.completion.kind}const S=new Map;function k(e){return S.get(e)}S.set(0,(function(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return C(e,t)})),S.set(2,(function(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return C(e,t)})),S.set(1,C),(0,r.kT)("_executeCompletionItemProvider",((e,t,i)=>f(void 0,void 0,void 0,(function*(){const n={incomplete:!1,suggestions:[]},r=[],s=i.maxItemsToResolve||0,o=yield w(e,t);for(const e of o.items)r.length<s&&r.push(e.resolve(l.T.None)),n.incomplete=n.incomplete||e.container.incomplete,n.suggestions.push(e.completion);try{return yield Promise.all(r),n}finally{setTimeout((()=>o.dispoables.dispose()),100)}}))));const x=new class{constructor(){this.onlyOnceSuggestions=[]}provideCompletionItems(){let e={suggestions:this.onlyOnceSuggestions.slice(0)};return this.onlyOnceSuggestions.length=0,e}};function L(e,t){setTimeout((()=>{x.onlyOnceSuggestions.push(...t),e.getContribution("editor.contrib.suggestController").triggerSuggest((new Set).add(x))}),0)}s.KZ.register("*",x)},24993:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SuggestController:()=>Ct,TriggerSuggestAction:()=>St});var n=i(85152),r=i(9488),s=i(17301),o=i(22258),a=i(5976),l=i(39925),c=i(16830),d=i(69386),h=i(24314),u=i(29102),g=i(78694),f=i(63472),p=i(43702),m=i(52365),_=i(43775),b=i(15393),v=i(72065),y=i(33108),w=i(65026),C=i(71531),S=function(e,t){return function(i,n){t(i,n,e)}};class k{constructor(e){this.name=e}select(e,t,i){if(0===i.length)return 0;let n=i[0].score[0];for(let e=0;e<i.length;e++){const{score:t,completion:r}=i[e];if(t[0]!==n)break;if(r.preselect)return e}return 0}}class x extends k{constructor(){super("first")}memorize(e,t,i){}toJSON(){}fromJSON(){}}let L=class e{constructor(e,t,i){this._storageService=e,this._modeService=t,this._configService=i,this._disposables=new a.SL,this._persistSoon=new b.pY((()=>this._saveState()),500),this._disposables.add(e.onWillSaveState((e=>{e.reason===m.fk.SHUTDOWN&&this._saveState()})))}dispose(){this._disposables.dispose(),this._persistSoon.dispose()}memorize(e,t,i){this._withStrategy(e,t).memorize(e,t,i),this._persistSoon.schedule()}select(e,t,i){return this._withStrategy(e,t).select(e,t,i)}_withStrategy(t,i){var n,r;const s=this._configService.getValue("editor.suggestSelection",{overrideIdentifier:null===(n=this._modeService.getLanguageIdentifier(t.getLanguageIdAtPosition(i.lineNumber,i.column)))||void 0===n?void 0:n.language,resource:t.uri});if((null===(r=this._strategy)||void 0===r?void 0:r.name)!==s){this._saveState();const t=e._strategyCtors.get(s)||x;this._strategy=new t;try{const t=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,i=this._storageService.get(`${e._storagePrefix}/${s}`,t);i&&this._strategy.fromJSON(JSON.parse(i))}catch(e){}}return this._strategy}_saveState(){if(this._strategy){const t=this._configService.getValue("editor.suggest.shareSuggestSelections")?0:1,i=JSON.stringify(this._strategy);this._storageService.store(`${e._storagePrefix}/${this._strategy.name}`,i,t)}}};L._strategyCtors=new Map([["recentlyUsedByPrefix",class extends k{constructor(){super("recentlyUsedByPrefix"),this._trie=p.Id.forStrings(),this._seq=0}memorize(e,t,i){const{word:n}=e.getWordUntilPosition(t),r=`${e.getLanguageIdentifier().language}/${n}`;this._trie.set(r,{type:i.completion.kind,insertText:i.completion.insertText,touch:this._seq++})}select(e,t,i){let{word:n}=e.getWordUntilPosition(t);if(!n)return super.select(e,t,i);let r=`${e.getLanguageIdentifier().language}/${n}`,s=this._trie.get(r);if(s||(s=this._trie.findSubstr(r)),s)for(let e=0;e<i.length;e++){let{kind:t,insertText:n}=i[e].completion;if(t===s.type&&n===s.insertText)return e}return super.select(e,t,i)}toJSON(){let e=[];return this._trie.forEach(((t,i)=>e.push([i,t]))),e.sort(((e,t)=>-(e[1].touch-t[1].touch))).forEach(((e,t)=>e[1].touch=t)),e.slice(0,200)}fromJSON(e){if(this._trie.clear(),e.length>0){this._seq=e[0][1].touch+1;for(const[t,i]of e)i.type="number"==typeof i.type?i.type:(0,_.jr)(i.type),this._trie.set(t,i)}}}],["recentlyUsed",class extends k{constructor(){super("recentlyUsed"),this._cache=new p.z6(300,.66),this._seq=0}memorize(e,t,i){const{label:n}=i.completion,r=`${e.getLanguageIdentifier().language}/${n}`;this._cache.set(r,{touch:this._seq++,type:i.completion.kind,insertText:i.completion.insertText})}select(e,t,i){if(0===i.length)return 0;const n=e.getLineContent(t.lineNumber).substr(t.column-10,t.column-1);if(/\s$/.test(n))return super.select(e,t,i);let r=i[0].score[0],s=-1,o=-1;for(let t=0;t<i.length&&i[t].score[0]===r;t++){const n=`${e.getLanguageIdentifier().language}/${i[t].completion.label}`,r=this._cache.peek(n);if(r&&r.touch>o&&r.type===i[t].completion.kind&&r.insertText===i[t].completion.insertText&&(o=r.touch,s=t),i[t].completion.preselect)return t}return-1!==s?s:0}toJSON(){return this._cache.toJSON()}fromJSON(e){this._cache.clear();for(const[t,i]of e)i.touch=0,i.type="number"==typeof i.type?i.type:(0,_.jr)(i.type),this._cache.set(t,i);this._seq=this._cache.size}}],["first",x]]),L._storagePrefix="suggest/memories",L=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([S(0,m.Uy),S(1,C.h),S(2,y.Ui)],L);const M=(0,v.yh)("ISuggestMemories");(0,w.z)(M,L,!0);var D=i(63580),N=i(94565),E=i(38819),T=i(49989),I=i(79599);let O=class e{constructor(t,i){this._editor=t,this._index=0,this._ckOtherSuggestions=e.OtherSuggestions.bindTo(i)}dispose(){this.reset()}reset(){this._ckOtherSuggestions.reset(),(0,a.B9)(this._listener),this._model=void 0,this._acceptNext=void 0,this._ignore=!1}set({model:t,index:i},n){0!==t.items.length&&e._moveIndex(!0,t,i)!==i?(this._acceptNext=n,this._model=t,this._index=i,this._listener=this._editor.onDidChangeCursorPosition((()=>{this._ignore||this.reset()})),this._ckOtherSuggestions.set(!0)):this.reset()}static _moveIndex(e,t,i){let n=i;for(;n=(n+t.items.length+(e?1:-1))%t.items.length,n!==i&&t.items[n].completion.additionalTextEdits;);return n}next(){this._move(!0)}prev(){this._move(!1)}_move(t){if(this._model)try{this._ignore=!0,this._index=e._moveIndex(t,this._model,this._index),this._acceptNext({index:this._index,item:this._model.items[this._index],model:this._model})}finally{this._ignore=!1}}};var A,R;O.OtherSuggestions=new E.uy("hasOtherSuggestions",!1),O=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(A=1,R=E.i6,function(e,t){R(e,t,A)})],O);var P=i(4669),F=i(3860),B=i(75392),W=i(97295);class Y{constructor(e,t,i,n,r,s,o){this.clipboardText=o,this._snippetCompareFn=Y._compareCompletionItems,this._items=e,this._column=t,this._wordDistance=n,this._options=r,this._refilterKind=1,this._lineContext=i,"top"===s?this._snippetCompareFn=Y._compareCompletionItemsSnippetsUp:"bottom"===s&&(this._snippetCompareFn=Y._compareCompletionItemsSnippetsDown)}get lineContext(){return this._lineContext}set lineContext(e){this._lineContext.leadingLineContent===e.leadingLineContent&&this._lineContext.characterCountDelta===e.characterCountDelta||(this._refilterKind=this._lineContext.characterCountDelta<e.characterCountDelta&&this._filteredItems?2:1,this._lineContext=e)}get items(){return this._ensureCachedState(),this._filteredItems}get allProvider(){return this._ensureCachedState(),this._allProvider}get incomplete(){return this._ensureCachedState(),this._isIncomplete}adopt(e){let t=[];for(let i=0;i<this._items.length;)e.has(this._items[i].provider)?i++:(t.push(this._items[i]),this._items[i]=this._items[this._items.length-1],this._items.pop());return this._refilterKind=1,t}get stats(){return this._ensureCachedState(),this._stats}_ensureCachedState(){0!==this._refilterKind&&this._createCachedState()}_createCachedState(){this._isIncomplete=new Set,this._allProvider=new Set,this._stats={suggestionCount:0,snippetCount:0,textCount:0};const{leadingLineContent:e,characterCountDelta:t}=this._lineContext;let i="",n="";const r=1===this._refilterKind?this._items:this._filteredItems,s=[],o=!this._options.filterGraceful||r.length>2e3?B.EW:B.l7;for(let a=0;a<r.length;a++){const l=r[a];if(l.isInvalid)continue;l.container.incomplete&&this._isIncomplete.add(l.provider),this._allProvider.add(l.provider);const c=l.position.column-l.editStart.column,d=c+t-(l.position.column-this._column);if(i.length!==d&&(i=0===d?"":e.slice(-d),n=i.toLowerCase()),l.word=i,0===d)l.score=B.CL.Default;else{let e=0;for(;e<c;){const t=i.charCodeAt(e);if(32!==t&&9!==t)break;e+=1}const t="string"==typeof l.completion.label?l.completion.label:l.completion.label.name;if(e>=d)l.score=B.CL.Default;else if("string"==typeof l.completion.filterText){let r=o(i,n,e,l.completion.filterText,l.filterTextLow,0,!1);if(!r)continue;0===(0,W.zY)(l.completion.filterText,t)?l.score=r:(l.score=(0,B.jB)(i,n,e,t,l.labelLow,0),l.score[0]=r[0])}else{let r=o(i,n,e,t,l.labelLow,0,!1);if(!r)continue;l.score=r}}switch(l.idx=a,l.distance=this._wordDistance.distance(l.position,l.completion),s.push(l),this._stats.suggestionCount++,l.completion.kind){case 27:this._stats.snippetCount++;break;case 18:this._stats.textCount++}}this._filteredItems=s.sort(this._snippetCompareFn),this._refilterKind=0}static _compareCompletionItems(e,t){return e.score[0]>t.score[0]?-1:e.score[0]<t.score[0]?1:e.distance<t.distance?-1:e.distance>t.distance?1:e.idx<t.idx?-1:e.idx>t.idx?1:0}static _compareCompletionItemsSnippetsDown(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return 1;if(27===t.completion.kind)return-1}return Y._compareCompletionItems(e,t)}static _compareCompletionItemsSnippetsUp(e,t){if(e.completion.kind!==t.completion.kind){if(27===e.completion.kind)return-1;if(27===t.completion.kind)return 1}return Y._compareCompletionItems(e,t)}}var H=i(71050),j=i(80689);class V{static create(e,t){return i=this,n=void 0,o=function*(){if(!t.getOption(96).localityBonus)return V.None;if(!t.hasModel())return V.None;const i=t.getModel(),n=t.getPosition();if(!e.canComputeWordRanges(i.uri))return V.None;const[s]=yield(new j.x).provideSelectionRanges(i,[n]);if(0===s.length)return V.None;const o=yield e.computeWordRanges(i.uri,s[0].range);if(!o)return V.None;const a=i.getWordUntilPosition(n);return delete o[a.word],new class extends V{distance(e,i){if(!n.equals(t.getPosition()))return 0;if(17===i.kind)return 2<<20;let a="string"==typeof i.label?i.label:i.label.name,l=o[a];if((0,r.XY)(l))return 2<<20;let c=(0,r.ry)(l,h.e.fromPositions(e),h.e.compareRangesUsingStarts),d=c>=0?l[c]:l[Math.max(0,~c-1)],u=s.length;for(const e of s){if(!h.e.containsRange(e.range,d))break;u-=1}return u}}},new((s=void 0)||(s=Promise))((function(e,t){function r(e){try{l(o.next(e))}catch(e){t(e)}}function a(e){try{l(o.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof s?i:new s((function(e){e(i)}))).then(r,a)}l((o=o.apply(i,n||[])).next())}));var i,n,s,o}}V.None=new class extends V{distance(){return 0}};class z{constructor(e,t,i,n){this.leadingLineContent=e.getLineContent(t.lineNumber).substr(0,t.column-1),this.leadingWord=e.getWordUntilPosition(t),this.lineNumber=t.lineNumber,this.column=t.column,this.auto=i,this.shy=n}static shouldAutoTrigger(e){if(!e.hasModel())return!1;const t=e.getModel(),i=e.getPosition();t.tokenizeIfCheap(i.lineNumber);const n=t.getWordAtPosition(i);return!!n&&n.endColumn===i.column&&!!isNaN(Number(n.word))}}class U{constructor(e,t,i){this._editor=e,this._editorWorkerService=t,this._clipboardService=i,this._toDispose=new a.SL,this._quickSuggestDelay=10,this._triggerCharacterListener=new a.SL,this._triggerQuickSuggest=new b._F,this._state=0,this._completionDisposables=new a.SL,this._onDidCancel=new P.Q5,this._onDidTrigger=new P.Q5,this._onDidSuggest=new P.Q5,this.onDidCancel=this._onDidCancel.event,this.onDidTrigger=this._onDidTrigger.event,this.onDidSuggest=this._onDidSuggest.event,this._currentSelection=this._editor.getSelection()||new F.Y(1,1,1,1),this._toDispose.add(this._editor.onDidChangeModel((()=>{this._updateTriggerCharacters(),this.cancel()}))),this._toDispose.add(this._editor.onDidChangeModelLanguage((()=>{this._updateTriggerCharacters(),this.cancel()}))),this._toDispose.add(this._editor.onDidChangeConfiguration((()=>{this._updateTriggerCharacters(),this._updateQuickSuggest()}))),this._toDispose.add(_.KZ.onDidChange((()=>{this._updateTriggerCharacters(),this._updateActiveSuggestSession()}))),this._toDispose.add(this._editor.onDidChangeCursorSelection((e=>{this._onCursorChange(e)})));let n=!1;this._toDispose.add(this._editor.onDidCompositionStart((()=>{n=!0}))),this._toDispose.add(this._editor.onDidCompositionEnd((()=>{n=!1,this._refilterCompletionItems()}))),this._toDispose.add(this._editor.onDidChangeModelContent((()=>{n||this._refilterCompletionItems()}))),this._updateTriggerCharacters(),this._updateQuickSuggest()}dispose(){(0,a.B9)(this._triggerCharacterListener),(0,a.B9)([this._onDidCancel,this._onDidSuggest,this._onDidTrigger,this._triggerQuickSuggest]),this._toDispose.dispose(),this._completionDisposables.dispose(),this.cancel()}_updateQuickSuggest(){this._quickSuggestDelay=this._editor.getOption(71),(isNaN(this._quickSuggestDelay)||!this._quickSuggestDelay&&0!==this._quickSuggestDelay||this._quickSuggestDelay<0)&&(this._quickSuggestDelay=10)}_updateTriggerCharacters(){if(this._triggerCharacterListener.clear(),this._editor.getOption(72)||!this._editor.hasModel()||!this._editor.getOption(99))return;const e=new Map;for(const t of _.KZ.all(this._editor.getModel()))for(const i of t.triggerCharacters||[]){let n=e.get(i);n||(n=new Set,n.add((0,I.ZJ)()),e.set(i,n)),n.add(t)}const t=t=>{if(!t){const e=this._editor.getPosition();t=this._editor.getModel().getLineContent(e.lineNumber).substr(0,e.column-1)}let i="";(0,W.YK)(t.charCodeAt(t.length-1))?(0,W.ZG)(t.charCodeAt(t.length-2))&&(i=t.substr(t.length-2)):i=t.charAt(t.length-1);const n=e.get(i);if(n){const e=this._completionModel?{items:this._completionModel.adopt(n),clipboardText:this._completionModel.clipboardText}:void 0;this.trigger({auto:!0,shy:!1,triggerCharacter:i},Boolean(this._completionModel),n,e)}};this._triggerCharacterListener.add(this._editor.onDidType(t)),this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(t))}get state(){return this._state}cancel(e=!1){0!==this._state&&(this._triggerQuickSuggest.cancel(),this._requestToken&&(this._requestToken.cancel(),this._requestToken=void 0),this._state=0,this._completionModel=void 0,this._context=void 0,this._onDidCancel.fire({retrigger:e}))}clear(){this._completionDisposables.clear()}_updateActiveSuggestSession(){0!==this._state&&(this._editor.hasModel()&&_.KZ.has(this._editor.getModel())?this.trigger({auto:2===this._state,shy:!1},!0):this.cancel())}_onCursorChange(e){if(!this._editor.hasModel())return;const t=this._editor.getModel(),i=this._currentSelection;if(this._currentSelection=this._editor.getSelection(),!e.selection.isEmpty()||0!==e.reason||"keyboard"!==e.source&&"deleteLeft"!==e.source)this.cancel();else if(_.KZ.has(t)&&0===this._state){if(!1===this._editor.getOption(70))return;if(!i.containsRange(this._currentSelection)&&!i.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition()))return;if(this._editor.getOption(96).snippetsPreventQuickSuggestions&&g.SnippetController2.get(this._editor).isInSnippet())return;this.cancel(),this._triggerQuickSuggest.cancelAndSet((()=>{if(0!==this._state)return;if(!z.shouldAutoTrigger(this._editor))return;if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getPosition(),i=this._editor.getOption(70);if(!1!==i){if(!0===i);else{e.tokenizeIfCheap(t.lineNumber);const n=e.getLineTokens(t.lineNumber),r=n.getStandardTokenType(n.findTokenIndexAtOffset(Math.max(t.column-1-1,0)));if(!(i.other&&0===r||i.comments&&1===r||i.strings&&2===r))return}this.trigger({auto:!0,shy:!1})}}),this._quickSuggestDelay)}}_refilterCompletionItems(){Promise.resolve().then((()=>{if(0===this._state)return;if(!this._editor.hasModel())return;const e=this._editor.getModel(),t=this._editor.getPosition(),i=new z(e,t,2===this._state,!1);this._onNewContext(i)}))}trigger(e,t=!1,i,n){var r;if(!this._editor.hasModel())return;const o=this._editor.getModel(),l=e.auto,c=new z(o,this._editor.getPosition(),l,e.shy);this.cancel(t),this._state=l?2:1,this._onDidTrigger.fire({auto:l,shy:e.shy,position:this._editor.getPosition()}),this._context=c;let d={triggerKind:null!==(r=e.triggerKind)&&void 0!==r?r:0};e.triggerCharacter&&(d={triggerKind:1,triggerCharacter:e.triggerCharacter}),this._requestToken=new H.A;const h=this._editor.getOption(93);let u=1;switch(h){case"top":u=0;break;case"bottom":u=2}let g=U._createItemKindFilter(this._editor),f=V.create(this._editorWorkerService,this._editor),p=(0,I.kL)(o,this._editor.getPosition(),new I.A9(u,g,i),d,this._requestToken.token);Promise.all([p,f]).then((([t,i])=>{return r=this,s=void 0,c=function*(){if((0,a.B9)(this._requestToken),0===this._state)return;if(!this._editor.hasModel())return;let r=null==n?void 0:n.clipboardText;!r&&t.needsClipboard&&(r=yield this._clipboardService.readText());const s=this._editor.getModel();let o=t.items;if(n){const e=(0,I.wg)(u);o=o.concat(n.items).sort(e)}const c=new z(s,this._editor.getPosition(),l,e.shy);this._completionModel=new Y(o,this._context.column,{leadingLineContent:c.leadingLineContent,characterCountDelta:c.column-this._context.column},i,this._editor.getOption(96),this._editor.getOption(93),r),this._completionDisposables.add(t.dispoables),this._onNewContext(c)},new((o=void 0)||(o=Promise))((function(e,t){function i(e){try{a(c.next(e))}catch(e){t(e)}}function n(e){try{a(c.throw(e))}catch(e){t(e)}}function a(t){var r;t.done?e(t.value):(r=t.value,r instanceof o?r:new o((function(e){e(r)}))).then(i,n)}a((c=c.apply(r,s||[])).next())}));var r,s,o,c})).catch(s.dL)}static _createItemKindFilter(e){const t=new Set;"none"===e.getOption(93)&&t.add(27);const i=e.getOption(96);return i.showMethods||t.add(0),i.showFunctions||t.add(1),i.showConstructors||t.add(2),i.showFields||t.add(3),i.showVariables||t.add(4),i.showClasses||t.add(5),i.showStructs||t.add(6),i.showInterfaces||t.add(7),i.showModules||t.add(8),i.showProperties||t.add(9),i.showEvents||t.add(10),i.showOperators||t.add(11),i.showUnits||t.add(12),i.showValues||t.add(13),i.showConstants||t.add(14),i.showEnums||t.add(15),i.showEnumMembers||t.add(16),i.showKeywords||t.add(17),i.showWords||t.add(18),i.showColors||t.add(19),i.showFiles||t.add(20),i.showReferences||t.add(21),i.showColors||t.add(22),i.showFolders||t.add(23),i.showTypeParameters||t.add(24),i.showSnippets||t.add(27),i.showUsers||t.add(25),i.showIssues||t.add(26),t}_onNewContext(e){if(this._context)if(e.lineNumber===this._context.lineNumber){if(e.leadingWord.startColumn<this._context.leadingWord.startColumn)this.cancel();else if(e.column<this._context.column)e.leadingWord.word?this.trigger({auto:this._context.auto,shy:!1},!0):this.cancel();else if(this._completionModel)if(0!==e.leadingWord.word.length&&e.leadingWord.startColumn>this._context.leadingWord.startColumn){const e=new Set(_.KZ.all(this._editor.getModel()));this._completionModel.allProvider.forEach((t=>e.delete(t)));const t=this._completionModel.adopt(new Set);this.trigger({auto:this._context.auto,shy:!1},!0,e,{items:t,clipboardText:this._completionModel.clipboardText})}else if(e.column>this._context.column&&this._completionModel.incomplete.size>0&&0!==e.leadingWord.word.length){const{incomplete:e}=this._completionModel,t=this._completionModel.adopt(e);this.trigger({auto:2===this._state,shy:!1,triggerKind:2},!0,e,{items:t,clipboardText:this._completionModel.clipboardText})}else{let t=this._completionModel.lineContext,i=!1;if(this._completionModel.lineContext={leadingLineContent:e.leadingLineContent,characterCountDelta:e.column-this._context.column},0===this._completionModel.items.length){if(z.shouldAutoTrigger(this._editor)&&this._context.leadingWord.endColumn<e.leadingWord.startColumn)return void this.trigger({auto:this._context.auto,shy:!1},!0);if(this._context.auto)return void this.cancel();if(this._completionModel.lineContext=t,i=this._completionModel.items.length>0,i&&0===e.leadingWord.word.length)return void this.cancel()}this._onDidSuggest.fire({completionModel:this._completionModel,auto:this._context.auto,shy:this._context.shy,isFrozen:i})}}else this.cancel()}}i(28609);var $=i(97781),K=i(73910),q=i(73046);const G=(0,K.P6)("symbolIcon.arrayForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.arrayForeground","The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Z=(0,K.P6)("symbolIcon.booleanForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.booleanForeground","The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),J=(0,K.P6)("symbolIcon.classForeground",{dark:"#EE9D28",light:"#D67E00",hc:"#EE9D28"},(0,D.N)("symbolIcon.classForeground","The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Q=(0,K.P6)("symbolIcon.colorForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.colorForeground","The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),X=(0,K.P6)("symbolIcon.constantForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.constantForeground","The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ee=(0,K.P6)("symbolIcon.constructorForeground",{dark:"#B180D7",light:"#652D90",hc:"#B180D7"},(0,D.N)("symbolIcon.constructorForeground","The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),te=(0,K.P6)("symbolIcon.enumeratorForeground",{dark:"#EE9D28",light:"#D67E00",hc:"#EE9D28"},(0,D.N)("symbolIcon.enumeratorForeground","The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ie=(0,K.P6)("symbolIcon.enumeratorMemberForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,D.N)("symbolIcon.enumeratorMemberForeground","The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ne=(0,K.P6)("symbolIcon.eventForeground",{dark:"#EE9D28",light:"#D67E00",hc:"#EE9D28"},(0,D.N)("symbolIcon.eventForeground","The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),re=(0,K.P6)("symbolIcon.fieldForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,D.N)("symbolIcon.fieldForeground","The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),se=(0,K.P6)("symbolIcon.fileForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.fileForeground","The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),oe=(0,K.P6)("symbolIcon.folderForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.folderForeground","The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ae=(0,K.P6)("symbolIcon.functionForeground",{dark:"#B180D7",light:"#652D90",hc:"#B180D7"},(0,D.N)("symbolIcon.functionForeground","The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),le=(0,K.P6)("symbolIcon.interfaceForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,D.N)("symbolIcon.interfaceForeground","The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ce=(0,K.P6)("symbolIcon.keyForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.keyForeground","The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),de=(0,K.P6)("symbolIcon.keywordForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.keywordForeground","The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),he=(0,K.P6)("symbolIcon.methodForeground",{dark:"#B180D7",light:"#652D90",hc:"#B180D7"},(0,D.N)("symbolIcon.methodForeground","The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ue=(0,K.P6)("symbolIcon.moduleForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.moduleForeground","The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ge=(0,K.P6)("symbolIcon.namespaceForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.namespaceForeground","The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),fe=(0,K.P6)("symbolIcon.nullForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.nullForeground","The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),pe=(0,K.P6)("symbolIcon.numberForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.numberForeground","The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),me=(0,K.P6)("symbolIcon.objectForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.objectForeground","The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),_e=(0,K.P6)("symbolIcon.operatorForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.operatorForeground","The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),be=(0,K.P6)("symbolIcon.packageForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.packageForeground","The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ve=(0,K.P6)("symbolIcon.propertyForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.propertyForeground","The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ye=(0,K.P6)("symbolIcon.referenceForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.referenceForeground","The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),we=(0,K.P6)("symbolIcon.snippetForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.snippetForeground","The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Ce=(0,K.P6)("symbolIcon.stringForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.stringForeground","The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Se=(0,K.P6)("symbolIcon.structForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.structForeground","The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),ke=(0,K.P6)("symbolIcon.textForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.textForeground","The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),xe=(0,K.P6)("symbolIcon.typeParameterForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.typeParameterForeground","The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Le=(0,K.P6)("symbolIcon.unitForeground",{dark:K.dR,light:K.dR,hc:K.dR},(0,D.N)("symbolIcon.unitForeground","The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.")),Me=(0,K.P6)("symbolIcon.variableForeground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},(0,D.N)("symbolIcon.variableForeground","The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget."));(0,$.Ic)(((e,t)=>{const i=e.getColor(G);i&&t.addRule(`${q.lA.symbolArray.cssSelector} { color: ${i}; }`);const n=e.getColor(Z);n&&t.addRule(`${q.lA.symbolBoolean.cssSelector} { color: ${n}; }`);const r=e.getColor(J);r&&t.addRule(`${q.lA.symbolClass.cssSelector} { color: ${r}; }`);const s=e.getColor(he);s&&t.addRule(`${q.lA.symbolMethod.cssSelector} { color: ${s}; }`);const o=e.getColor(Q);o&&t.addRule(`${q.lA.symbolColor.cssSelector} { color: ${o}; }`);const a=e.getColor(X);a&&t.addRule(`${q.lA.symbolConstant.cssSelector} { color: ${a}; }`);const l=e.getColor(ee);l&&t.addRule(`${q.lA.symbolConstructor.cssSelector} { color: ${l}; }`);const c=e.getColor(te);c&&t.addRule(`\n\t\t\t${q.lA.symbolValue.cssSelector},${q.lA.symbolEnum.cssSelector} { color: ${c}; }`);const d=e.getColor(ie);d&&t.addRule(`${q.lA.symbolEnumMember.cssSelector} { color: ${d}; }`);const h=e.getColor(ne);h&&t.addRule(`${q.lA.symbolEvent.cssSelector} { color: ${h}; }`);const u=e.getColor(re);u&&t.addRule(`${q.lA.symbolField.cssSelector} { color: ${u}; }`);const g=e.getColor(se);g&&t.addRule(`${q.lA.symbolFile.cssSelector} { color: ${g}; }`);const f=e.getColor(oe);f&&t.addRule(`${q.lA.symbolFolder.cssSelector} { color: ${f}; }`);const p=e.getColor(ae);p&&t.addRule(`${q.lA.symbolFunction.cssSelector} { color: ${p}; }`);const m=e.getColor(le);m&&t.addRule(`${q.lA.symbolInterface.cssSelector} { color: ${m}; }`);const _=e.getColor(ce);_&&t.addRule(`${q.lA.symbolKey.cssSelector} { color: ${_}; }`);const b=e.getColor(de);b&&t.addRule(`${q.lA.symbolKeyword.cssSelector} { color: ${b}; }`);const v=e.getColor(ue);v&&t.addRule(`${q.lA.symbolModule.cssSelector} { color: ${v}; }`);const y=e.getColor(ge);y&&t.addRule(`${q.lA.symbolNamespace.cssSelector} { color: ${y}; }`);const w=e.getColor(fe);w&&t.addRule(`${q.lA.symbolNull.cssSelector} { color: ${w}; }`);const C=e.getColor(pe);C&&t.addRule(`${q.lA.symbolNumber.cssSelector} { color: ${C}; }`);const S=e.getColor(me);S&&t.addRule(`${q.lA.symbolObject.cssSelector} { color: ${S}; }`);const k=e.getColor(_e);k&&t.addRule(`${q.lA.symbolOperator.cssSelector} { color: ${k}; }`);const x=e.getColor(be);x&&t.addRule(`${q.lA.symbolPackage.cssSelector} { color: ${x}; }`);const L=e.getColor(ve);L&&t.addRule(`${q.lA.symbolProperty.cssSelector} { color: ${L}; }`);const M=e.getColor(ye);M&&t.addRule(`${q.lA.symbolReference.cssSelector} { color: ${M}; }`);const D=e.getColor(we);D&&t.addRule(`${q.lA.symbolSnippet.cssSelector} { color: ${D}; }`);const N=e.getColor(Ce);N&&t.addRule(`${q.lA.symbolString.cssSelector} { color: ${N}; }`);const E=e.getColor(Se);E&&t.addRule(`${q.lA.symbolStruct.cssSelector} { color: ${E}; }`);const T=e.getColor(ke);T&&t.addRule(`${q.lA.symbolText.cssSelector} { color: ${T}; }`);const I=e.getColor(xe);I&&t.addRule(`${q.lA.symbolTypeParameter.cssSelector} { color: ${I}; }`);const O=e.getColor(Le);O&&t.addRule(`${q.lA.symbolUnit.cssSelector} { color: ${O}; }`);const A=e.getColor(Me);A&&t.addRule(`${q.lA.symbolVariable.cssSelector} { color: ${A}; }`)}));var De,Ne=i(65321),Ee=i(43799),Te=i(9802),Ie=i(91847),Oe=i(10829),Ae=i(88810),Re=i(53335),Pe=i(50988),Fe=i(59834),Be=i(66663),We=i(95935),Ye=i(71144);function He(e,t,i,n){const r=n===De.ROOT_FOLDER?["rootfolder-icon"]:n===De.FOLDER?["folder-icon"]:["file-icon"];if(i){let s;if(s=i.scheme===Be.l.data?We.Vb.parseMetaData(i).get(We.Vb.META_DATA_LABEL):je((0,We.Hx)(i).toLowerCase()),n===De.FOLDER)r.push(`${s}-name-folder-icon`);else{if(s){r.push(`${s}-name-file-icon`);const e=s.split(".");for(let t=1;t<e.length;t++)r.push(`${e.slice(t).join(".")}-ext-file-icon`);r.push("ext-file-icon")}const n=function(e,t,i){if(!i)return null;let n=null;if(i.scheme===Be.l.data){const e=We.Vb.parseMetaData(i).get(We.Vb.META_DATA_MIME);e&&(n=t.getModeId(e))}else{const t=e.getModel(i);t&&(n=t.getModeId())}return n&&n!==Ye.XT?n:t.getModeIdByFilepathOrFirstLine(i)}(e,t,i);n&&r.push(`${je(n)}-lang-file-icon`)}}return r}function je(e){return e.replace(/\s/g,"\\$&")}!function(e){e[e.FILE=0]="FILE",e[e.FOLDER=1]="FOLDER",e[e.ROOT_FOLDER=2]="ROOT_FOLDER"}(De||(De={}));var Ve=i(51200),ze=i(70666),Ue=i(59365),$e=i(84144),Ke=i(90317),qe=i(76033),Ge=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},Ze=function(e,t){return function(i,n){t(i,n,e)}};const Je=(0,q.q5)("suggest-more-info",q.lA.chevronRight),Qe=(0,K.P6)("editorSuggestWidget.background",{dark:K.D0,light:K.D0,hc:K.D0},D.N("editorSuggestWidgetBackground","Background color of the suggest widget.")),Xe=(0,K.P6)("editorSuggestWidget.border",{dark:K.D1,light:K.D1,hc:K.D1},D.N("editorSuggestWidgetBorder","Border color of the suggest widget.")),et=(0,K.P6)("editorSuggestWidget.foreground",{dark:K.NO,light:K.NO,hc:K.NO},D.N("editorSuggestWidgetForeground","Foreground color of the suggest widget.")),tt=(0,K.P6)("editorSuggestWidget.selectedBackground",{dark:K._b,light:K._b,hc:K._b},D.N("editorSuggestWidgetSelectedBackground","Background color of the selected entry in the suggest widget.")),it=(0,K.P6)("editorSuggestWidget.highlightForeground",{dark:K.Gw,light:K.Gw,hc:K.Gw},D.N("editorSuggestWidgetHighlightForeground","Color of the match highlights in the suggest widget.")),nt=/^(#([\da-f]{3}){1,2}|(rgb|hsl)a\(\s*(\d{1,3}%?\s*,\s*){3}(1|0?\.\d+)\)|(rgb|hsl)\(\s*\d{1,3}%?(\s*,\s*\d{1,3}%?){2}\s*\))$/i;function rt(e){if(!e)return!1;const t=e.completion;return!!t.documentation||t.detail&&t.detail!==t.label}function st(e){return`suggest-aria-id:${e}`}let ot=class{constructor(e,t,i,n,r,s){this.widget=e,this.editor=t,this.triggerKeybindingLabel=i,this._modelService=n,this._modeService=r,this._themeService=s}get templateId(){return"suggestion"}renderTemplate(e){const t=Object.create(null);t.disposables=new a.SL,t.root=e,t.root.classList.add("show-file-icons"),t.icon=(0,Ne.R3)(e,(0,Ne.$)(".icon")),t.colorspan=(0,Ne.R3)(t.icon,(0,Ne.$)("span.colorspan"));const i=(0,Ne.R3)(e,(0,Ne.$)(".contents")),n=(0,Ne.R3)(i,(0,Ne.$)(".main"));t.iconContainer=(0,Ne.R3)(n,(0,Ne.$)(".icon-label.codicon")),t.left=(0,Ne.R3)(n,(0,Ne.$)("span.left")),t.right=(0,Ne.R3)(n,(0,Ne.$)("span.right")),t.iconLabel=new Fe.g(t.left,{supportHighlights:!0,supportCodicons:!0}),t.disposables.add(t.iconLabel),t.parametersLabel=(0,Ne.R3)(t.left,(0,Ne.$)("span.signature-label")),t.qualifierLabel=(0,Ne.R3)(t.left,(0,Ne.$)("span.qualifier-label")),t.detailsLabel=(0,Ne.R3)(t.right,(0,Ne.$)("span.details-label")),t.readMore=(0,Ne.R3)(t.right,(0,Ne.$)("span.readMore"+Je.cssSelector)),t.readMore.title=D.N("readMore","Read More ({0})",this.triggerKeybindingLabel);const r=()=>{const e=this.editor.getOptions(),i=e.get(36),r=i.fontFamily,s=i.fontFeatureSettings,o=e.get(97)||i.fontSize,a=e.get(98)||i.lineHeight,l=i.fontWeight,c=`${o}px`,d=`${a}px`;t.root.style.fontSize=c,t.root.style.fontWeight=l,n.style.fontFamily=r,n.style.fontFeatureSettings=s,n.style.lineHeight=d,t.icon.style.height=d,t.icon.style.width=d,t.readMore.style.height=d,t.readMore.style.width=d};return r(),t.disposables.add(P.ju.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter((e=>e.hasChanged(36)||e.hasChanged(97)||e.hasChanged(98))).on(r,null)),t}renderElement(e,t,i){const n=i,s=e.completion,o="string"==typeof s.label?s.label:s.label.name;n.root.id=st(t),n.colorspan.style.backgroundColor="";const a={labelEscapeNewLines:!0,matches:(0,B.mB)(e.score)};let l=[];if(19===s.kind&&function(e,t){const i="string"==typeof e.completion.label?e.completion.label:e.completion.label.name;return i.match(nt)?(t[0]=i,!0):!("string"!=typeof e.completion.documentation||!e.completion.documentation.match(nt)||(t[0]=e.completion.documentation,0))}(e,l))n.icon.className="icon customcolor",n.iconContainer.className="icon hide",n.colorspan.style.backgroundColor=l[0];else if(20===s.kind&&this._themeService.getFileIconTheme().hasFileIcons){n.icon.className="icon hide",n.iconContainer.className="icon hide";const e=He(this._modelService,this._modeService,ze.o.from({scheme:"fake",path:o}),De.FILE),t=He(this._modelService,this._modeService,ze.o.from({scheme:"fake",path:s.detail}),De.FILE);a.extraClasses=e.length>t.length?e:t}else 23===s.kind&&this._themeService.getFileIconTheme().hasFolderIcons?(n.icon.className="icon hide",n.iconContainer.className="icon hide",a.extraClasses=(0,r.xH)([He(this._modelService,this._modeService,ze.o.from({scheme:"fake",path:o}),De.FOLDER),He(this._modelService,this._modeService,ze.o.from({scheme:"fake",path:s.detail}),De.FOLDER)])):(n.icon.className="icon hide",n.iconContainer.className="",(0,Ne.PT)(n.iconContainer,`suggest-icon ${(0,_.Sy)(s.kind)}`));s.tags&&s.tags.indexOf(1)>=0&&(a.extraClasses=(a.extraClasses||[]).concat(["deprecated"]),a.matches=[]),n.iconLabel.setLabel(o,void 0,a),"string"==typeof s.label?(n.parametersLabel.textContent="",n.qualifierLabel.textContent="",n.detailsLabel.textContent=(s.detail||"").replace(/\n.*$/m,""),n.root.classList.add("string-label")):(n.parametersLabel.textContent=(s.label.parameters||"").replace(/\n.*$/m,""),n.qualifierLabel.textContent=(s.label.qualifier||"").replace(/\n.*$/m,""),n.detailsLabel.textContent=(s.label.type||"").replace(/\n.*$/m,""),n.root.classList.remove("string-label")),rt(e)?(n.right.classList.add("can-expand-details"),(0,Ne.$Z)(n.readMore),n.readMore.onmousedown=e=>{e.stopPropagation(),e.preventDefault()},n.readMore.onclick=e=>{e.stopPropagation(),e.preventDefault(),this.widget.toggleDetails()}):(n.right.classList.remove("can-expand-details"),(0,Ne.Cp)(n.readMore),n.readMore.onmousedown=null,n.readMore.onclick=null)}disposeTemplate(e){e.disposables.dispose()}};ot=Ge([Ze(3,Ve.q),Ze(4,C.h),Ze(5,$.XE)],ot);class at{constructor(e,t,i,n,r){this.widget=t,this.editor=i,this.markdownRenderer=n,this.kbToggleDetails=r,this.borderWidth=1,this.disposables=new a.SL,this.el=(0,Ne.R3)(e,(0,Ne.$)(".details")),this.disposables.add((0,a.OF)((()=>e.removeChild(this.el)))),this.body=(0,Ne.$)(".body"),this.scrollbar=new Te.s$(this.body,{}),(0,Ne.R3)(this.el,this.scrollbar.getDomNode()),this.disposables.add(this.scrollbar),this.header=(0,Ne.R3)(this.body,(0,Ne.$)(".header")),this.close=(0,Ne.R3)(this.header,(0,Ne.$)("span"+q.lA.close.cssSelector)),this.close.title=D.N("readLess","Read Less ({0})",this.kbToggleDetails),this.type=(0,Ne.R3)(this.header,(0,Ne.$)("p.type")),this.docs=(0,Ne.R3)(this.body,(0,Ne.$)("p.docs")),this.configureFont(),P.ju.chain(this.editor.onDidChangeConfiguration.bind(this.editor)).filter((e=>e.hasChanged(36))).on(this.configureFont,this,this.disposables),n.onDidRenderCodeBlock((()=>this.scrollbar.scanDomNode()),this,this.disposables)}get element(){return this.el}renderLoading(){this.type.textContent=D.N("loading","Loading..."),this.docs.textContent=""}renderItem(e,t){(0,a.B9)(this.renderDisposeable),this.renderDisposeable=void 0;let{documentation:i,detail:n}=e.completion;if(t){let t="";t+=`score: ${e.score[0]}${e.word?`, compared '${e.completion.filterText&&e.completion.filterText+" (filterText)"||e.completion.label}' with '${e.word}'`:" (no prefix)"}\n`,t+=`distance: ${e.distance}, see localityBonus-setting\n`,t+=`index: ${e.idx}, based on ${e.completion.sortText&&`sortText: "${e.completion.sortText}"`||"label"}\n`,i=(new Ue.W5).appendCodeblock("empty",t),n=`Provider: ${e.provider._debugDisplayName}`}if(!t&&!rt(e))return this.type.textContent="",this.docs.textContent="",void this.el.classList.add("no-docs");if(this.el.classList.remove("no-docs"),"string"==typeof i)this.docs.classList.remove("markdown-docs"),this.docs.textContent=i;else{this.docs.classList.add("markdown-docs"),this.docs.innerText="";const e=this.markdownRenderer.render(i);this.renderDisposeable=e,this.docs.appendChild(e.element)}n?(this.type.innerText=n.length>1e5?`${n.substr(0,1e5)}…`:n,(0,Ne.$Z)(this.type)):(this.type.innerText="",(0,Ne.Cp)(this.type)),this.el.style.height=this.header.offsetHeight+this.docs.offsetHeight+2*this.borderWidth+"px",this.el.style.userSelect="text",this.el.tabIndex=-1,this.close.onmousedown=e=>{e.preventDefault(),e.stopPropagation()},this.close.onclick=e=>{e.preventDefault(),e.stopPropagation(),this.widget.toggleDetails()},this.body.scrollTop=0,this.scrollbar.scanDomNode()}scrollDown(e=8){this.body.scrollTop+=e}scrollUp(e=8){this.body.scrollTop-=e}scrollTop(){this.body.scrollTop=0}scrollBottom(){this.body.scrollTop=this.body.scrollHeight}pageDown(){this.scrollDown(80)}pageUp(){this.scrollUp(80)}setBorderWidth(e){this.borderWidth=e}configureFont(){const e=this.editor.getOptions(),t=e.get(36),i=t.fontFamily,n=e.get(97)||t.fontSize,r=e.get(98)||t.lineHeight,s=t.fontWeight,o=`${n}px`,a=`${r}px`;this.el.style.fontSize=o,this.el.style.fontWeight=s,this.el.style.fontFeatureSettings=t.fontFeatureSettings,this.type.style.fontFamily=i,this.close.style.height=a,this.close.style.width=a}dispose(){this.disposables.dispose(),(0,a.B9)(this.renderDisposeable),this.renderDisposeable=void 0}}let lt=class e{constructor(e,t,i,n,s,o,l,c,d,h){var u,g;this.editor=e,this.telemetryService=t,this.allowEditorOverflow=!0,this.suppressMouseDown=!1,this.state=0,this.isAddedAsContentWidget=!1,this.isAuto=!1,this.loadingTimeout=a.JT.None,this.currentSuggestionDetails=null,this.ignoreFocusEvents=!1,this.completionModel=null,this.showTimeout=new b._F,this.toDispose=new a.SL,this.onDidSelectEmitter=new P.Q5,this.onDidFocusEmitter=new P.Q5,this.onDidHideEmitter=new P.Q5,this.onDidShowEmitter=new P.Q5,this.onDidSelect=this.onDidSelectEmitter.event,this.onDidFocus=this.onDidFocusEmitter.event,this.onDidHide=this.onDidHideEmitter.event,this.onDidShow=this.onDidShowEmitter.event,this.maxWidgetWidth=660,this.listWidth=330,this.firstFocusInCurrentList=!1,this.preferDocPositionTop=!1,this.docsPositionPreviousWidgetY=null,this.explainMode=!1,this._onDetailsKeydown=new P.Q5,this.onDetailsKeyDown=this._onDetailsKeydown.event;const f=this.toDispose.add(new Re.$(e,l,c)),p=null!==(g=null===(u=i.lookupKeybinding("toggleSuggestionDetails"))||void 0===u?void 0:u.getLabel())&&void 0!==g?g:"";this.isAuto=!1,this.focusedItem=null,this.storageService=o,this.element=(0,Ne.$)(".editor-widget.suggest-widget"),this.toDispose.add((0,Ne.nm)(this.element,"click",(e=>{e.target===this.element&&this.hideWidget()}))),this.messageElement=(0,Ne.R3)(this.element,(0,Ne.$)(".message")),this.listElement=(0,Ne.R3)(this.element,(0,Ne.$)(".tree"));const m=()=>this.element.classList.toggle("with-status-bar",this.editor.getOption(96).statusBar.visible);m(),this.statusBarElement=(0,Ne.R3)(this.element,(0,Ne.$)(".suggest-status-bar"));const _=e=>{const t=i.lookupKeybindings(e.id);return new class extends qe.g{constructor(){super(void 0,e,{label:!0,icon:!1})}updateLabel(){if((0,r.XY)(t)||!this.label)return super.updateLabel();const{label:e}=this.getAction();this.label.textContent=/{\d}/.test(e)?W.WU(this.getAction().label,t[0].getLabel()):`${this.getAction().label} (${t[0].getLabel()})`}}},v=new Ke.o(this.statusBarElement,{actionViewItemProvider:_}),y=new Ke.o(this.statusBarElement,{actionViewItemProvider:_}),w=d.createMenu(I.GI,n);this.toDispose.add(w.onDidChange((()=>(()=>{const e=[],t=[];for(let[i,n]of w.getActions())"left"===i?e.push(...n):t.push(...n);v.clear(),v.push(e),y.clear(),y.push(t)})()))),this.toDispose.add(w),this.details=h.createInstance(at,this.element,this,this.editor,f,p);const C=()=>this.element.classList.toggle("no-icons",!this.editor.getOption(96).showIcons);C();let S=h.createInstance(ot,this,this.editor,p);this.list=new Ee.aV("SuggestWidget",this.listElement,this,[S],{useShadows:!1,mouseSupport:!1,accessibilityProvider:{getRole:()=>"option",getAriaLabel:e=>{const t="string"==typeof e.completion.label?e.completion.label:e.completion.label.name;if(e.isResolved&&this.expandDocsSettingFromStorage()){const{documentation:i,detail:n}=e.completion,r=W.WU("{0}{1}",n||"",i?"string"==typeof i?i:i.value:"");return D.N("ariaCurrenttSuggestionReadDetails","{0}, docs: {1}",t,r)}return t},getWidgetAriaLabel:()=>D.N("suggest","Suggest"),getWidgetRole:()=>"listbox"}}),this.toDispose.add((0,Ae.Jl)(this.list,s,{listInactiveFocusBackground:tt,listInactiveFocusOutline:K.xL})),this.toDispose.add(s.onDidColorThemeChange((e=>this.onThemeChange(e)))),this.toDispose.add(e.onDidLayoutChange((()=>this.onEditorLayoutChange()))),this.toDispose.add(this.list.onMouseDown((e=>this.onListMouseDownOrTap(e)))),this.toDispose.add(this.list.onTap((e=>this.onListMouseDownOrTap(e)))),this.toDispose.add(this.list.onDidChangeSelection((e=>this.onListSelection(e)))),this.toDispose.add(this.list.onDidChangeFocus((e=>this.onListFocus(e)))),this.toDispose.add(this.editor.onDidChangeCursorSelection((()=>this.onCursorSelectionChanged()))),this.toDispose.add(this.editor.onDidChangeConfiguration((e=>{e.hasChanged(96)&&(m(),C())}))),this.ctxSuggestWidgetVisible=I._y.Visible.bindTo(n),this.ctxSuggestWidgetDetailsVisible=I._y.DetailsVisible.bindTo(n),this.ctxSuggestWidgetMultipleSuggestions=I._y.MultipleSuggestions.bindTo(n),this.onThemeChange(s.getColorTheme()),this.toDispose.add((0,Ne.mu)(this.details.element,"keydown",(e=>{this._onDetailsKeydown.fire(e)}))),this.toDispose.add(this.editor.onMouseDown((e=>this.onEditorMouseDown(e))))}onEditorMouseDown(e){this.details.element.contains(e.target.element)?this.details.element.focus():this.element.contains(e.target.element)&&this.editor.focus()}onCursorSelectionChanged(){0!==this.state&&this.editor.layoutContentWidget(this)}onEditorLayoutChange(){3!==this.state&&5!==this.state||!this.expandDocsSettingFromStorage()||this.expandSideOrBelow()}onListMouseDownOrTap(e){void 0!==e.element&&void 0!==e.index&&(e.browserEvent.preventDefault(),e.browserEvent.stopPropagation(),this.select(e.element,e.index))}onListSelection(e){e.elements.length&&this.select(e.elements[0],e.indexes[0])}select(e,t){const i=this.completionModel;i&&(this.onDidSelectEmitter.fire({item:e,index:t,model:i}),this.editor.focus())}onThemeChange(e){const t=e.getColor(Qe);t&&(this.listElement.style.backgroundColor=t.toString(),this.statusBarElement.style.backgroundColor=t.toString(),this.details.element.style.backgroundColor=t.toString(),this.messageElement.style.backgroundColor=t.toString());const i=e.getColor(Xe);i&&(this.listElement.style.borderColor=i.toString(),this.statusBarElement.style.borderColor=i.toString(),this.details.element.style.borderColor=i.toString(),this.messageElement.style.borderColor=i.toString(),this.detailsBorderColor=i.toString());const n=e.getColor(K.R8);n&&(this.detailsFocusBorderColor=n.toString()),this.details.setBorderWidth("hc"===e.type?2:1)}onListFocus(e){if(this.ignoreFocusEvents)return;if(!e.elements.length)return this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null,this.focusedItem=null),void this.editor.setAriaOptions({activeDescendant:void 0});if(!this.completionModel)return;const t=e.elements[0],i=e.indexes[0];this.firstFocusInCurrentList=!this.focusedItem,t!==this.focusedItem&&(this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null),this.focusedItem=t,this.list.reveal(i),this.currentSuggestionDetails=(0,b.PG)((e=>{return i=this,n=void 0,s=function*(){const i=(0,b.Vg)((()=>this.showDetails(!0)),250);e.onCancellationRequested((()=>i.dispose()));const n=yield t.resolve(e);return i.dispose(),n},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s})),this.currentSuggestionDetails.then((()=>{i>=this.list.length||t!==this.list.element(i)||(this.ignoreFocusEvents=!0,this.list.splice(i,1,[t]),this.list.setFocus([i]),this.ignoreFocusEvents=!1,this.expandDocsSettingFromStorage()?this.showDetails(!1):this.element.classList.remove("docs-side"),this.editor.setAriaOptions({activeDescendant:st(i)}))})).catch(s.dL)),this.onDidFocusEmitter.fire({item:t,index:i,model:this.completionModel})}setState(t){if(!this.element)return;this.isAddedAsContentWidget||0===t||(this.isAddedAsContentWidget=!0,this.editor.addContentWidget(this));const i=this.state!==t;switch(this.state=t,this.element.classList.toggle("frozen",4===t),t){case 0:(0,Ne.Cp)(this.messageElement,this.details.element,this.listElement,this.statusBarElement),this.hide(),this.listHeight=0,i&&this.list.splice(0,this.list.length),this.focusedItem=null;break;case 1:this.messageElement.textContent=e.LOADING_MESSAGE,(0,Ne.Cp)(this.listElement,this.details.element,this.statusBarElement),(0,Ne.$Z)(this.messageElement),this.element.classList.remove("docs-side"),this.show(),this.focusedItem=null;break;case 2:this.messageElement.textContent=e.NO_SUGGESTIONS_MESSAGE,(0,Ne.Cp)(this.listElement,this.details.element,this.statusBarElement),(0,Ne.$Z)(this.messageElement),this.element.classList.remove("docs-side"),this.show(),this.focusedItem=null;break;case 3:(0,Ne.Cp)(this.messageElement),(0,Ne.$Z)(this.listElement,this.statusBarElement),this.show();break;case 4:(0,Ne.Cp)(this.messageElement),(0,Ne.$Z)(this.listElement),this.show();break;case 5:(0,Ne.Cp)(this.messageElement),(0,Ne.$Z)(this.details.element,this.listElement,this.statusBarElement),this.show()}}showTriggered(e,t){0===this.state&&(this.isAuto=!!e,this.isAuto||(this.loadingTimeout=(0,b.Vg)((()=>this.setState(1)),t)))}showSuggestions(e,t,i,n){if(this.preferDocPositionTop=!1,this.docsPositionPreviousWidgetY=null,this.loadingTimeout.dispose(),this.currentSuggestionDetails&&(this.currentSuggestionDetails.cancel(),this.currentSuggestionDetails=null),this.completionModel!==e&&(this.completionModel=e),i&&2!==this.state&&0!==this.state)return void this.setState(4);let r=this.completionModel.items.length;const s=0===r;if(this.ctxSuggestWidgetMultipleSuggestions.set(r>1),s)n?this.setState(0):this.setState(2),this.completionModel=null;else{if(3!==this.state){const{stats:e}=this.completionModel;e.wasAutomaticallyTriggered=!!n,this.telemetryService.publicLog("suggestWidget",Object.assign({},e))}this.focusedItem=null,this.list.splice(0,this.list.length,this.completionModel.items),i?this.setState(4):this.setState(3),this.list.reveal(t,0),this.list.setFocus([t]),this.detailsBorderColor&&(this.details.element.style.borderColor=this.detailsBorderColor)}}selectNextPage(){switch(this.state){case 0:return!1;case 5:return this.details.pageDown(),!0;case 1:return!this.isAuto;default:return this.list.focusNextPage(),!0}}selectNext(){switch(this.state){case 0:return!1;case 1:return!this.isAuto;default:return this.list.focusNext(1,!0),!0}}selectLast(){switch(this.state){case 0:return!1;case 5:return this.details.scrollBottom(),!0;case 1:return!this.isAuto;default:return this.list.focusLast(),!0}}selectPreviousPage(){switch(this.state){case 0:return!1;case 5:return this.details.pageUp(),!0;case 1:return!this.isAuto;default:return this.list.focusPreviousPage(),!0}}selectPrevious(){switch(this.state){case 0:return!1;case 1:return!this.isAuto;default:return this.list.focusPrevious(1,!0),!1}}selectFirst(){switch(this.state){case 0:return!1;case 5:return this.details.scrollTop(),!0;case 1:return!this.isAuto;default:return this.list.focusFirst(),!0}}getFocusedItem(){if(0!==this.state&&2!==this.state&&1!==this.state&&this.completionModel)return{item:this.list.getFocusedElements()[0],index:this.list.getFocus()[0],model:this.completionModel}}toggleDetailsFocus(){5===this.state?(this.setState(3),this.detailsBorderColor&&(this.details.element.style.borderColor=this.detailsBorderColor)):3===this.state&&this.expandDocsSettingFromStorage()&&(this.setState(5),this.detailsFocusBorderColor&&(this.details.element.style.borderColor=this.detailsFocusBorderColor)),this.telemetryService.publicLog2("suggestWidget:toggleDetailsFocus")}toggleDetails(){if(rt(this.list.getFocusedElements()[0]))if(this.expandDocsSettingFromStorage())this.ctxSuggestWidgetDetailsVisible.set(!1),this.updateExpandDocsSetting(!1),(0,Ne.Cp)(this.details.element),this.element.classList.remove("docs-side","doc-below"),this.editor.layoutContentWidget(this),this.telemetryService.publicLog2("suggestWidget:collapseDetails");else{if(3!==this.state&&5!==this.state&&4!==this.state)return;this.ctxSuggestWidgetDetailsVisible.set(!0),this.updateExpandDocsSetting(!0),this.showDetails(!1),this.telemetryService.publicLog2("suggestWidget:expandDetails")}}showDetails(e){e||this.expandSideOrBelow(),(0,Ne.$Z)(this.details.element),this.details.element.style.maxHeight=this.maxWidgetHeight+"px",e?this.details.renderLoading():this.details.renderItem(this.list.getFocusedElements()[0],this.explainMode),this.listElement.style.marginTop="0px",this.editor.layoutContentWidget(this),this.adjustDocsPosition(),this.editor.focus()}toggleExplainMode(){this.list.getFocusedElements()[0]&&this.expandDocsSettingFromStorage()&&(this.explainMode=!this.explainMode,this.showDetails(!1))}show(){const e=this.updateListHeight();e!==this.listHeight&&(this.editor.layoutContentWidget(this),this.listHeight=e),this.ctxSuggestWidgetVisible.set(!0),this.showTimeout.cancelAndSet((()=>{this.element.classList.add("visible"),this.onDidShowEmitter.fire(this)}),100)}hide(){this.editor.layoutContentWidget(this),this.ctxSuggestWidgetVisible.reset(),this.ctxSuggestWidgetMultipleSuggestions.reset(),this.element.classList.remove("visible")}hideWidget(){this.loadingTimeout.dispose(),this.setState(0),this.onDidHideEmitter.fire(this)}getPosition(){if(0===this.state)return null;let e=[2,1];return this.preferDocPositionTop&&(e=[1]),{position:this.editor.getPosition(),preference:e}}getDomNode(){return this.element}getId(){return e.ID}isFrozen(){return 4===this.state}updateListHeight(){let e=0;if(2===this.state||1===this.state)e=this.unfocusedHeight;else{const t=this.list.contentHeight/this.unfocusedHeight,{maxVisibleSuggestions:i}=this.editor.getOption(96);e=Math.min(t,i)*this.unfocusedHeight}return this.element.style.lineHeight=`${this.unfocusedHeight}px`,this.listElement.style.height=`${e}px`,this.statusBarElement.style.top=`${e}px`,this.list.layout(e),e}adjustDocsPosition(){if(!this.editor.hasModel())return;const e=this.editor.getOption(51),t=this.editor.getScrolledVisiblePosition(this.editor.getPosition()),i=(0,Ne.i)(this.editor.getDomNode()),n=i.left+t.left,r=i.top+t.top+t.height,s=(0,Ne.i)(this.element),o=s.left,a=s.top;if(this.docsPositionPreviousWidgetY&&this.docsPositionPreviousWidgetY<a&&!this.preferDocPositionTop)return this.preferDocPositionTop=!0,void this.adjustDocsPosition();this.docsPositionPreviousWidgetY=a,o<n-this.listWidth?this.element.classList.add("list-right"):this.element.classList.remove("list-right"),this.element.classList.contains("docs-side")&&r-e>a&&this.details.element.offsetHeight>this.listElement.offsetHeight&&(this.listElement.style.marginTop=this.details.element.offsetHeight-this.listElement.offsetHeight+"px")}expandSideOrBelow(){if(!rt(this.focusedItem)&&this.firstFocusInCurrentList)return void this.element.classList.remove("docs-side","docs-below");let e=this.element.style.maxWidth.match(/(\d+)px/);!e||Number(e[1])<this.maxWidgetWidth?(this.element.classList.add("docs-below"),this.element.classList.remove("docs-side")):rt(this.focusedItem)&&(this.element.classList.add("docs-side"),this.element.classList.remove("docs-below"))}get maxWidgetHeight(){return this.unfocusedHeight*this.editor.getOption(96).maxVisibleSuggestions}get unfocusedHeight(){const e=this.editor.getOptions();return e.get(98)||e.get(36).lineHeight}getHeight(e){return this.unfocusedHeight}getTemplateId(e){return"suggestion"}expandDocsSettingFromStorage(){return this.storageService.getBoolean("expandSuggestionDocs",0,!1)}updateExpandDocsSetting(e){this.storageService.store("expandSuggestionDocs",e,0)}dispose(){this.details.dispose(),this.list.dispose(),this.toDispose.dispose(),this.loadingTimeout.dispose(),this.showTimeout.dispose(),this.editor.removeContentWidget(this)}};lt.ID="editor.widget.suggestWidget",lt.LOADING_MESSAGE=D.N("suggestWidget.loading","Loading..."),lt.NO_SUGGESTIONS_MESSAGE=D.N("suggestWidget.noSuggestions","No suggestions."),lt=Ge([Ze(1,Oe.b),Ze(2,Ie.d),Ze(3,E.i6),Ze(4,$.XE),Ze(5,m.Uy),Ze(6,C.h),Ze(7,Pe.v4),Ze(8,$e.co),Ze(9,v.TG)],lt),(0,$.Ic)(((e,t)=>{const i=e.getColor(it);i&&t.addRule(`.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight { color: ${i}; }`);const n=e.getColor(et);n&&t.addRule(`.monaco-editor .suggest-widget { color: ${n}; }`);const r=e.getColor(K.ur);r&&t.addRule(`.monaco-editor .suggest-widget a { color: ${r}; }`);const s=e.getColor(K.Sw);s&&t.addRule(`.monaco-editor .suggest-widget code { background-color: ${s}; }`)}));let ct=class e extends a.JT{constructor(t,i){super(),this._editor=t,this._enabled=!1,this._ckAtEnd=e.AtEnd.bindTo(i),this._register(this._editor.onDidChangeConfiguration((e=>e.hasChanged(101)&&this._update()))),this._update()}dispose(){super.dispose(),(0,a.B9)(this._selectionListener),this._ckAtEnd.reset()}_update(){const e="on"===this._editor.getOption(101);if(this._enabled!==e)if(this._enabled=e,this._enabled){const e=()=>{if(!this._editor.hasModel())return void this._ckAtEnd.set(!1);const e=this._editor.getModel(),t=this._editor.getSelection(),i=e.getWordAtPosition(t.getStartPosition());i?this._ckAtEnd.set(i.endColumn===t.getStartPosition().column):this._ckAtEnd.set(!1)};this._selectionListener=this._editor.onDidChangeCursorSelection(e),e()}else this._selectionListener&&(this._ckAtEnd.reset(),this._selectionListener.dispose(),this._selectionListener=void 0)}};ct.AtEnd=new E.uy("atEndOfWord",!1),ct=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([function(e,t){return function(i,n){t(i,n,e)}}(1,E.i6)],ct);var dt=i(90469),ht=i(98401),ut=i(44906);class gt{constructor(e,t,i){this._disposables=new a.SL,this._disposables.add(t.onDidShow((()=>this._onItem(t.getFocusedItem())))),this._disposables.add(t.onDidFocus(this._onItem,this)),this._disposables.add(t.onDidHide(this.reset,this)),this._disposables.add(e.onWillType((n=>{if(this._active&&!t.isFrozen()){const t=n.charCodeAt(n.length-1);this._active.acceptCharacters.has(t)&&e.getOption(0)&&i(this._active.item)}})))}_onItem(e){if(!e||!(0,r.Of)(e.item.completion.commitCharacters))return void this.reset();if(this._active&&this._active.item.item===e.item)return;const t=new ut.q;for(const i of e.item.completion.commitCharacters)i.length>0&&t.add(i.charCodeAt(0));this._active={acceptCharacters:t,item:e}}reset(){this._active=void 0}dispose(){this._disposables.dispose()}}class ft{constructor(e,t){this._disposables=new a.SL,this._lastOvertyped=[],this._empty=!0,this._disposables.add(e.onWillType((()=>{if(!this._empty)return;if(!e.hasModel())return;const t=e.getSelections(),i=t.length;let n=!1;for(let e=0;e<i;e++)if(!t[e].isEmpty()){n=!0;break}if(!n)return;this._lastOvertyped=[];const r=e.getModel();for(let e=0;e<i;e++){const i=t[e];if(r.getValueLengthInRange(i)>ft._maxSelectionLength)return;this._lastOvertyped[e]={value:r.getValueInRange(i),multiline:i.startLineNumber!==i.endLineNumber}}this._empty=!1}))),this._disposables.add(t.onDidCancel((e=>{this._empty||(this._empty=!0)})))}getLastOvertypedInfo(e){if(!this._empty&&e>=0&&e<this._lastOvertyped.length)return this._lastOvertyped[e]}dispose(){this._disposables.dispose()}}ft._maxSelectionLength=51200;var pt=i(50187),mt=i(1432),_t=i(43557),bt=i(84013),vt=i(84972),yt=function(e,t){return function(i,n){t(i,n,e)}};class wt{constructor(e,t){if(this._model=e,this._position=t,e.getLineMaxColumn(t.lineNumber)!==t.column){const i=e.getOffsetAt(t),n=e.getPositionAt(i+1);this._marker=e.deltaDecorations([],[{range:h.e.fromPositions(t,n),options:{stickiness:1}}])}}dispose(){this._marker&&!this._model.isDisposed()&&this._model.deltaDecorations(this._marker,[])}delta(e){if(this._model.isDisposed()||this._position.lineNumber!==e.lineNumber)return 0;if(this._marker){const t=this._model.getDecorationRange(this._marker[0]);return this._model.getOffsetAt(t.getStartPosition())-this._model.getOffsetAt(e)}return this._model.getLineMaxColumn(e.lineNumber)-e.column}}let Ct=class e{constructor(e,t,i,n,r,s,l,c){this._memoryService=i,this._commandService=n,this._contextKeyService=r,this._instantiationService=s,this._logService=l,this._lineSuffix=new a.XK,this._toDispose=new a.SL,this.editor=e,this.model=new U(this.editor,t,c),this.widget=this._toDispose.add(new b.Ue((()=>{const e=this._instantiationService.createInstance(lt,this.editor);this._toDispose.add(e),this._toDispose.add(e.onDidSelect((e=>this._insertSuggestion(e,0)),this));const t=new gt(this.editor,e,(e=>this._insertSuggestion(e,2)));this._toDispose.add(t),this._toDispose.add(this.model.onDidSuggest((e=>{0===e.completionModel.items.length&&t.reset()})));const i=I._y.MakesTextEdit.bindTo(this._contextKeyService),n=I._y.HasInsertAndReplaceRange.bindTo(this._contextKeyService),r=I._y.CanResolve.bindTo(this._contextKeyService);return this._toDispose.add((0,a.OF)((()=>{i.reset(),n.reset(),r.reset()}))),this._toDispose.add(e.onDidFocus((({item:e})=>{const t=this.editor.getPosition(),s=e.editStart.column,o=t.column;let a=!0;"smart"!==this.editor.getOption(1)||2!==this.model.state||e.completion.command||e.completion.additionalTextEdits||4&e.completion.insertTextRules||o-s!==e.completion.insertText.length||(a=this.editor.getModel().getValueInRange({startLineNumber:t.lineNumber,startColumn:s,endLineNumber:t.lineNumber,endColumn:o})!==e.completion.insertText),i.set(a),n.set(!pt.L.equals(e.editInsertEnd,e.editReplaceEnd)),r.set(Boolean(e.provider.resolveCompletionItem)||Boolean(e.completion.documentation)||e.completion.detail!==e.completion.label)}))),this._toDispose.add(e.onDetailsKeyDown((e=>{e.toKeybinding().equals(new o.QC(!0,!1,!1,!1,33))||mt.dz&&e.toKeybinding().equals(new o.QC(!1,!1,!1,!0,33))?e.stopPropagation():e.toKeybinding().isModifierKey()||this.editor.focus()}))),e}))),this._overtypingCapturer=this._toDispose.add(new b.Ue((()=>this._toDispose.add(new ft(this.editor,this.model))))),this._alternatives=this._toDispose.add(new b.Ue((()=>this._toDispose.add(new O(this.editor,this._contextKeyService))))),this._toDispose.add(s.createInstance(ct,e)),this._toDispose.add(this.model.onDidTrigger((e=>{this.widget.value.showTriggered(e.auto,e.shy?250:50),this._lineSuffix.value=new wt(this.editor.getModel(),e.position)}))),this._toDispose.add(this.model.onDidSuggest((e=>{if(!e.shy){let t=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),e.completionModel.items);this.widget.value.showSuggestions(e.completionModel,t,e.isFrozen,e.auto)}}))),this._toDispose.add(this.model.onDidCancel((e=>{e.retrigger||this.widget.value.hideWidget()}))),this._toDispose.add(this.editor.onDidBlurEditorWidget((()=>{this.model.cancel(),this.model.clear()})));let d=I._y.AcceptSuggestionsOnEnter.bindTo(r),h=()=>{const e=this.editor.getOption(1);d.set("on"===e||"smart"===e)};this._toDispose.add(this.editor.onDidChangeConfiguration((()=>h()))),h()}static get(t){return t.getContribution(e.ID)}dispose(){this._alternatives.dispose(),this._toDispose.dispose(),this.widget.dispose(),this.model.dispose(),this._lineSuffix.dispose()}_insertSuggestion(e,t){if(!e||!e.item)return this._alternatives.value.reset(),this.model.cancel(),void this.model.clear();if(!this.editor.hasModel())return;const i=this.editor.getModel(),n=i.getAlternativeVersionId(),{item:r}=e,o=[],a=new H.A;1&t||this.editor.pushUndoStop();const c=this.getOverwriteInfo(r,Boolean(8&t));if(this._memoryService.memorize(i,this.editor.getPosition(),r),Array.isArray(r.completion.additionalTextEdits)){const e=l.ZF.capture(this.editor);this.editor.executeEdits("suggestController.additionalTextEdits.sync",r.completion.additionalTextEdits.map((e=>d.h.replace(h.e.lift(e.range),e.text)))),e.restoreRelativeVerticalPositionOfCursor(this.editor)}else if(!r.isResolved){const e=new bt.G(!0);let n;const s=i.onDidChangeContent((e=>{if(e.isFlush)return a.cancel(),void s.dispose();for(let t of e.changes){const e=h.e.getEndPosition(t.range);n&&!pt.L.isBefore(e,n)||(n=e)}}));let c=t;t|=2;let u=!1,g=this.editor.onWillType((()=>{g.dispose(),u=!0,2&c||this.editor.pushUndoStop()}));o.push(r.resolve(a.token).then((()=>{if(!r.completion.additionalTextEdits||a.token.isCancellationRequested)return!1;if(n&&r.completion.additionalTextEdits.some((e=>pt.L.isBefore(n,h.e.getStartPosition(e.range)))))return!1;u&&this.editor.pushUndoStop();const e=l.ZF.capture(this.editor);return this.editor.executeEdits("suggestController.additionalTextEdits.async",r.completion.additionalTextEdits.map((e=>d.h.replace(h.e.lift(e.range),e.text)))),e.restoreRelativeVerticalPositionOfCursor(this.editor),!u&&2&c||this.editor.pushUndoStop(),!0})).then((t=>{this._logService.trace("[suggest] async resolving of edits DONE (ms, applied?)",e.elapsed(),t),s.dispose(),g.dispose()})))}let{insertText:u}=r.completion;4&r.completion.insertTextRules||(u=f.Yj.escape(u)),g.SnippetController2.get(this.editor).insert(u,{overwriteBefore:c.overwriteBefore,overwriteAfter:c.overwriteAfter,undoStopBefore:!1,undoStopAfter:!1,adjustWhitespace:!(1&r.completion.insertTextRules),clipboardText:e.model.clipboardText,overtypingCapturer:this._overtypingCapturer.value}),2&t||this.editor.pushUndoStop(),r.completion.command?r.completion.command.id===St.id?this.model.trigger({auto:!0,shy:!1},!0):(o.push(this._commandService.executeCommand(r.completion.command.id,...r.completion.command.arguments?[...r.completion.command.arguments]:[]).catch(s.dL)),this.model.cancel()):this.model.cancel(),4&t&&this._alternatives.value.set(e,(e=>{for(a.cancel();i.canUndo();){n!==i.getAlternativeVersionId()&&i.undo(),this._insertSuggestion(e,3|(8&t?8:0));break}})),this._alertCompletionItem(r),Promise.all(o).finally((()=>{this.model.clear(),a.dispose()}))}getOverwriteInfo(e,t){(0,ht.p_)(this.editor.hasModel());let i="replace"===this.editor.getOption(96).insertMode;t&&(i=!i);const n=e.position.column-e.editStart.column,r=(i?e.editReplaceEnd.column:e.editInsertEnd.column)-e.position.column;return{overwriteBefore:n+(this.editor.getPosition().column-e.position.column),overwriteAfter:r+(this._lineSuffix.value?this._lineSuffix.value.delta(this.editor.getPosition()):0)}}_alertCompletionItem({completion:e}){const t="string"==typeof e.label?e.label:e.label.name;if((0,r.Of)(e.additionalTextEdits)){let i=D.N("arai.alert.snippet","Accepting '{0}' made {1} additional edits",t,e.additionalTextEdits.length);(0,n.Z9)(i)}}triggerSuggest(e){this.editor.hasModel()&&(this.model.trigger({auto:!1,shy:!1},!1,e),this.editor.revealLine(this.editor.getPosition().lineNumber,0),this.editor.focus())}triggerSuggestAndAcceptBest(e){if(!this.editor.hasModel())return;const t=this.editor.getPosition(),i=()=>{t.equals(this.editor.getPosition())&&this._commandService.executeCommand(e.fallback)},n=e=>{if(4&e.completion.insertTextRules||e.completion.additionalTextEdits)return!0;const t=this.editor.getPosition(),i=e.editStart.column,n=t.column;return n-i!==e.completion.insertText.length||this.editor.getModel().getValueInRange({startLineNumber:t.lineNumber,startColumn:i,endLineNumber:t.lineNumber,endColumn:n})!==e.completion.insertText};P.ju.once(this.model.onDidTrigger)((e=>{let t=[];P.ju.any(this.model.onDidTrigger,this.model.onDidCancel)((()=>{(0,a.B9)(t),i()}),void 0,t),this.model.onDidSuggest((({completionModel:e})=>{if((0,a.B9)(t),0===e.items.length)return void i();const r=this._memoryService.select(this.editor.getModel(),this.editor.getPosition(),e.items),s=e.items[r];n(s)?(this.editor.pushUndoStop(),this._insertSuggestion({index:r,item:s,model:e},7)):i()}),void 0,t)})),this.model.trigger({auto:!1,shy:!0}),this.editor.revealLine(t.lineNumber,0),this.editor.focus()}acceptSelectedSuggestion(e,t){const i=this.widget.value.getFocusedItem();let n=0;e&&(n|=4),t&&(n|=8),this._insertSuggestion(i,n)}acceptNextSuggestion(){this._alternatives.value.next()}acceptPrevSuggestion(){this._alternatives.value.prev()}cancelSuggestWidget(){this.model.cancel(),this.model.clear(),this.widget.value.hideWidget()}selectNextSuggestion(){this.widget.value.selectNext()}selectNextPageSuggestion(){this.widget.value.selectNextPage()}selectLastSuggestion(){this.widget.value.selectLast()}selectPrevSuggestion(){this.widget.value.selectPrevious()}selectPrevPageSuggestion(){this.widget.value.selectPreviousPage()}selectFirstSuggestion(){this.widget.value.selectFirst()}toggleSuggestionDetails(){this.widget.value.toggleDetails()}toggleExplainMode(){this.widget.value.toggleExplainMode()}toggleSuggestionFocus(){this.widget.value.toggleDetailsFocus()}};Ct.ID="editor.contrib.suggestController",Ct=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([yt(1,dt.p),yt(2,M),yt(3,N.H),yt(4,E.i6),yt(5,v.TG),yt(6,_t.VZ),yt(7,vt.p)],Ct);class St extends c.R6{constructor(){super({id:St.id,label:D.N("suggest.trigger.label","Trigger Suggest"),alias:"Trigger Suggest",precondition:E.Ao.and(u.u.writable,u.u.hasCompletionItemProvider),kbOpts:{kbExpr:u.u.textInputFocus,primary:2058,mac:{primary:266,secondary:[521]},weight:100}})}run(e,t){const i=Ct.get(t);i&&i.triggerSuggest()}}St.id="editor.action.triggerSuggest",(0,c._K)(Ct.ID,Ct),(0,c.Qr)(St);const kt=190,xt=c._l.bindToContribution(Ct.get);(0,c.fK)(new xt({id:"acceptSelectedSuggestion",precondition:I._y.Visible,handler(e){e.acceptSelectedSuggestion(!0,!1)}})),T.W.registerKeybindingRule({id:"acceptSelectedSuggestion",when:E.Ao.and(I._y.Visible,u.u.textInputFocus),primary:2,weight:kt}),T.W.registerKeybindingRule({id:"acceptSelectedSuggestion",when:E.Ao.and(I._y.Visible,u.u.textInputFocus,I._y.AcceptSuggestionsOnEnter,I._y.MakesTextEdit),primary:3,weight:kt}),$e.BH.appendMenuItem(I.GI,{command:{id:"acceptSelectedSuggestion",title:D.N({key:"accept.accept",comment:['{0} will be a keybinding, e.g "Enter to insert"']},"{0} to insert")},group:"left",order:1,when:I._y.HasInsertAndReplaceRange.toNegated()}),$e.BH.appendMenuItem(I.GI,{command:{id:"acceptSelectedSuggestion",title:D.N({key:"accept.insert",comment:['{0} will be a keybinding, e.g "Enter to insert"']},"{0} to insert")},group:"left",order:1,when:E.Ao.and(I._y.HasInsertAndReplaceRange,E.Ao.equals("config.editor.suggest.insertMode","insert"))}),$e.BH.appendMenuItem(I.GI,{command:{id:"acceptSelectedSuggestion",title:D.N({key:"accept.replace",comment:['{0} will be a keybinding, e.g "Enter to replace"']},"{0} to replace")},group:"left",order:1,when:E.Ao.and(I._y.HasInsertAndReplaceRange,E.Ao.equals("config.editor.suggest.insertMode","replace"))}),(0,c.fK)(new xt({id:"acceptAlternativeSelectedSuggestion",precondition:E.Ao.and(I._y.Visible,u.u.textInputFocus),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:1027,secondary:[1026]},handler(e){e.acceptSelectedSuggestion(!1,!0)},menuOpts:[{menuId:I.GI,group:"left",order:2,when:E.Ao.and(I._y.HasInsertAndReplaceRange,E.Ao.equals("config.editor.suggest.insertMode","insert")),title:D.N({key:"accept.replace",comment:['{0} will be a keybinding, e.g "Enter to replace"']},"{0} to replace")},{menuId:I.GI,group:"left",order:2,when:E.Ao.and(I._y.HasInsertAndReplaceRange,E.Ao.equals("config.editor.suggest.insertMode","replace")),title:D.N({key:"accept.insert",comment:['{0} will be a keybinding, e.g "Enter to insert"']},"{0} to insert")}]})),N.P.registerCommandAlias("acceptSelectedSuggestionOnEnter","acceptSelectedSuggestion"),(0,c.fK)(new xt({id:"hideSuggestWidget",precondition:I._y.Visible,handler:e=>e.cancelSuggestWidget(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:9,secondary:[1033]}})),(0,c.fK)(new xt({id:"selectNextSuggestion",precondition:E.Ao.and(I._y.Visible,I._y.MultipleSuggestions),handler:e=>e.selectNextSuggestion(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:18,secondary:[2066],mac:{primary:18,secondary:[2066,300]}}})),(0,c.fK)(new xt({id:"selectNextPageSuggestion",precondition:E.Ao.and(I._y.Visible,I._y.MultipleSuggestions),handler:e=>e.selectNextPageSuggestion(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:12,secondary:[2060]}})),(0,c.fK)(new xt({id:"selectLastSuggestion",precondition:E.Ao.and(I._y.Visible,I._y.MultipleSuggestions),handler:e=>e.selectLastSuggestion()})),(0,c.fK)(new xt({id:"selectPrevSuggestion",precondition:E.Ao.and(I._y.Visible,I._y.MultipleSuggestions),handler:e=>e.selectPrevSuggestion(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:16,secondary:[2064],mac:{primary:16,secondary:[2064,302]}}})),(0,c.fK)(new xt({id:"selectPrevPageSuggestion",precondition:E.Ao.and(I._y.Visible,I._y.MultipleSuggestions),handler:e=>e.selectPrevPageSuggestion(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:11,secondary:[2059]}})),(0,c.fK)(new xt({id:"selectFirstSuggestion",precondition:E.Ao.and(I._y.Visible,I._y.MultipleSuggestions),handler:e=>e.selectFirstSuggestion()})),(0,c.fK)(new xt({id:"toggleSuggestionDetails",precondition:I._y.Visible,handler:e=>e.toggleSuggestionDetails(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:2058,mac:{primary:266}},menuOpts:[{menuId:I.GI,group:"right",order:1,when:E.Ao.and(I._y.DetailsVisible,I._y.CanResolve),title:D.N("detail.more","show less")},{menuId:I.GI,group:"right",order:1,when:E.Ao.and(I._y.DetailsVisible.toNegated(),I._y.CanResolve),title:D.N("detail.less","show more")}]})),(0,c.fK)(new xt({id:"toggleExplainMode",precondition:I._y.Visible,handler:e=>e.toggleExplainMode(),kbOpts:{weight:100,primary:2133}})),(0,c.fK)(new xt({id:"toggleSuggestionFocus",precondition:I._y.Visible,handler:e=>e.toggleSuggestionFocus(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:2570,mac:{primary:778}}})),(0,c.fK)(new xt({id:"insertBestCompletion",precondition:E.Ao.and(u.u.textInputFocus,E.Ao.equals("config.editor.tabCompletion","on"),ct.AtEnd,I._y.Visible.toNegated(),O.OtherSuggestions.toNegated(),g.SnippetController2.InSnippetMode.toNegated()),handler:(e,t)=>{e.triggerSuggestAndAcceptBest((0,ht.Kn)(t)?Object.assign({fallback:"tab"},t):{fallback:"tab"})},kbOpts:{weight:kt,primary:2}})),(0,c.fK)(new xt({id:"insertNextSuggestion",precondition:E.Ao.and(u.u.textInputFocus,E.Ao.equals("config.editor.tabCompletion","on"),O.OtherSuggestions,I._y.Visible.toNegated(),g.SnippetController2.InSnippetMode.toNegated()),handler:e=>e.acceptNextSuggestion(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:2}})),(0,c.fK)(new xt({id:"insertPrevSuggestion",precondition:E.Ao.and(u.u.textInputFocus,E.Ao.equals("config.editor.tabCompletion","on"),O.OtherSuggestions,I._y.Visible.toNegated(),g.SnippetController2.InSnippetMode.toNegated()),handler:e=>e.acceptPrevSuggestion(),kbOpts:{weight:kt,kbExpr:u.u.textInputFocus,primary:1026}}))},19720:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ToggleTabFocusModeAction:()=>a});var n=i(63580),r=i(85152),s=i(16830),o=i(56345);class a extends s.R6{constructor(){super({id:a.ID,label:n.N({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),alias:"Toggle Tab Key Moves Focus",precondition:void 0,kbOpts:{kbExpr:null,primary:2091,mac:{primary:1323},weight:100}})}run(e,t){const i=!o.nG.getTabFocusMode();o.nG.setTabFocusMode(i),i?(0,r.Z9)(n.N("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element")):(0,r.Z9)(n.N("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}}a.ID="editor.action.toggleTabFocusMode",(0,s.Qr)(a)},31725:(e,t,i)=>{"use strict";i.r(t);var n=i(63580),r=i(5976),s=i(16830),o=i(11640),a=i(28820),l=function(e,t){return function(i,n){t(i,n,e)}};const c="ignoreUnusualLineTerminators";let d=class extends r.JT{constructor(e,t,i){super(),this._editor=e,this._dialogService=t,this._codeEditorService=i,this._config=this._editor.getOption(103),this._register(this._editor.onDidChangeConfiguration((e=>{e.hasChanged(103)&&(this._config=this._editor.getOption(103),this._checkForUnusualLineTerminators())}))),this._register(this._editor.onDidChangeModel((()=>{this._checkForUnusualLineTerminators()}))),this._register(this._editor.onDidChangeModelContent((e=>{e.isUndoing||this._checkForUnusualLineTerminators()})))}_checkForUnusualLineTerminators(){return e=this,t=void 0,r=function*(){if("off"===this._config)return;if(!this._editor.hasModel())return;const e=this._editor.getModel();e.mightContainUnusualLineTerminators()&&!0!==function(e,t){return e.getModelProperty(t.uri,c)}(this._codeEditorService,e)&&(this._editor.getOption(72)||("auto"!==this._config?(yield this._dialogService.confirm({title:n.N("unusualLineTerminators.title","Unusual Line Terminators"),message:n.N("unusualLineTerminators.message","Detected unusual line terminators"),detail:n.N("unusualLineTerminators.detail","This file contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`."),primaryButton:n.N("unusualLineTerminators.fix","Fix this file"),secondaryButton:n.N("unusualLineTerminators.ignore","Ignore problem for this file")})).confirmed?e.removeUnusualLineTerminators(this._editor.getSelections()):function(e,t,i){e.setModelProperty(t.uri,c,!0)}(this._codeEditorService,e):e.removeUnusualLineTerminators(this._editor.getSelections())))},new((i=void 0)||(i=Promise))((function(n,s){function o(e){try{l(r.next(e))}catch(e){s(e)}}function a(e){try{l(r.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((r=r.apply(e,t||[])).next())}));var e,t,i,r}};d.ID="editor.contrib.unusualLineTerminatorsDetector",d=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([l(1,a.S),l(2,o.$)],d),(0,s._K)(d.ID,d)},70185:(e,t,i)=>{"use strict";i.r(t);var n=i(15393),r=i(5976),s=i(16830),o=i(43775),a=i(51200),l=i(65072),c=i(97781),d=i(33108),h=i(32334),u=function(e,t){return function(i,n){t(i,n,e)}};let g=class e extends r.JT{constructor(e,t,i,r){super(),this._modelService=t,this._themeService=i,this._configurationService=r,this._editor=e,this._tokenizeViewport=new n.pY((()=>this._tokenizeViewportNow()),100),this._outstandingRequests=[],this._register(this._editor.onDidScrollChange((()=>{this._tokenizeViewport.schedule()}))),this._register(this._editor.onDidChangeModel((()=>{this._cancelAll(),this._tokenizeViewport.schedule()}))),this._register(this._editor.onDidChangeModelContent((e=>{this._cancelAll(),this._tokenizeViewport.schedule()}))),this._register(o.K7.onDidChange((()=>{this._cancelAll(),this._tokenizeViewport.schedule()}))),this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration(h.e3)&&(this._cancelAll(),this._tokenizeViewport.schedule())}))),this._register(this._themeService.onDidColorThemeChange((()=>{this._cancelAll(),this._tokenizeViewport.schedule()})))}static _getSemanticColoringProvider(e){const t=o.K7.ordered(e);return t.length>0?t[0]:null}_cancelAll(){for(const e of this._outstandingRequests)e.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(e){for(let t=0,i=this._outstandingRequests.length;t<i;t++)if(this._outstandingRequests[t]===e)return void this._outstandingRequests.splice(t,1)}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const t=this._editor.getModel();if(t.hasSemanticTokens())return;if(!(0,h.tw)(t,this._themeService,this._configurationService))return;const i=e._getSemanticColoringProvider(t);if(!i)return;const n=this._modelService.getSemanticTokensProviderStyling(i),r=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(r.map((e=>this._requestRange(t,e,i,n))))}_requestRange(e,t,i,r){const s=e.getVersionId(),o=(0,n.PG)((n=>Promise.resolve(i.provideDocumentRangeSemanticTokens(e,t,n))));return o.then((i=>{i&&!e.isDisposed()&&e.getVersionId()===s&&e.setPartialSemanticTokens(t,(0,l.h)(i,r,e.getLanguageIdentifier()))})).then((()=>this._removeOutstandingRequest(o)),(()=>this._removeOutstandingRequest(o))),o}};g.ID="editor.contrib.viewportSemanticTokens",g=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([u(1,a.q),u(2,c.XE),u(3,d.Ui)],g),(0,s._K)(g.ID,g)},43497:(e,t,i)=>{"use strict";i.r(t),i.d(t,{getOccurrencesAtPosition:()=>L});var n=i(63580),r=i(9488),s=i(15393),o=i(71050),a=i(17301),l=i(5976),c=i(16830),d=i(24314),h=i(29102),u=i(84973),g=i(3411),f=i(43775),p=i(38819),m=i(73910),_=i(97781),b=i(85152);const v=(0,m.P6)("editor.wordHighlightBackground",{dark:"#575757B8",light:"#57575740",hc:null},n.N("wordHighlight","Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations."),!0),y=(0,m.P6)("editor.wordHighlightStrongBackground",{dark:"#004972B8",light:"#0e639c40",hc:null},n.N("wordHighlightStrong","Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations."),!0),w=(0,m.P6)("editor.wordHighlightBorder",{light:null,dark:null,hc:m.xL},n.N("wordHighlightBorder","Border color of a symbol during read-access, like reading a variable.")),C=(0,m.P6)("editor.wordHighlightStrongBorder",{light:null,dark:null,hc:m.xL},n.N("wordHighlightStrongBorder","Border color of a symbol during write-access, like writing to a variable.")),S=(0,m.P6)("editorOverviewRuler.wordHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},n.N("overviewRulerWordHighlightForeground","Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),k=(0,m.P6)("editorOverviewRuler.wordHighlightStrongForeground",{dark:"#C0A0C0CC",light:"#C0A0C0CC",hc:"#C0A0C0CC"},n.N("overviewRulerWordHighlightStrongForeground","Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations."),!0),x=new p.uy("hasWordHighlights",!1);function L(e,t,i){const n=f.vH.ordered(e);return(0,s.Ps)(n.map((n=>()=>Promise.resolve(n.provideDocumentHighlights(e,t,i)).then(void 0,a.Cp))),r.Of)}class M{constructor(e,t,i){this._wordRange=this._getCurrentWordRange(e,t),this.result=(0,s.PG)((n=>this._compute(e,t,i,n)))}_getCurrentWordRange(e,t){const i=e.getWordAtPosition(t.getPosition());return i?new d.e(t.startLineNumber,i.startColumn,t.startLineNumber,i.endColumn):null}isValid(e,t,i){const n=t.startLineNumber,r=t.startColumn,s=t.endColumn,o=this._getCurrentWordRange(e,t);let a=Boolean(this._wordRange&&this._wordRange.equalsRange(o));for(let t=0,o=i.length;!a&&t<o;t++){let o=e.getDecorationRange(i[t]);o&&o.startLineNumber===n&&o.startColumn<=r&&o.endColumn>=s&&(a=!0)}return a}cancel(){this.result.cancel()}}class D extends M{_compute(e,t,i,n){return L(e,t.getPosition(),n).then((e=>e||[]))}}class N extends M{constructor(e,t,i){super(e,t,i),this._selectionIsEmpty=t.isEmpty()}_compute(e,t,i,n){return(0,s.Vs)(250,n).then((()=>{if(!t.isEmpty())return[];const n=e.getWordAtPosition(t.getPosition());return!n||n.word.length>1e3?[]:e.findMatches(n.word,!0,!1,!0,i,!1).map((e=>({range:e.range,kind:f.MY.Text})))}))}isValid(e,t,i){const n=t.isEmpty();return this._selectionIsEmpty===n&&super.isValid(e,t,i)}}(0,c.sb)("_executeDocumentHighlights",((e,t)=>L(e,t,o.T.None)));class E{constructor(e,t){this.toUnhook=new l.SL,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=[],this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.editor=e,this._hasWordHighlights=x.bindTo(t),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(63),this.model=this.editor.getModel(),this.toUnhook.add(e.onDidChangeCursorPosition((e=>{this._ignorePositionChangeEvent||this.occurrencesHighlight&&this._onPositionChanged(e)}))),this.toUnhook.add(e.onDidChangeModelContent((e=>{this._stopAll()}))),this.toUnhook.add(e.onDidChangeConfiguration((e=>{let t=this.editor.getOption(63);this.occurrencesHighlight!==t&&(this.occurrencesHighlight=t,this._stopAll())}))),this._decorationIds=[],this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1}hasDecorations(){return this._decorationIds.length>0}restore(){this.occurrencesHighlight&&this._run()}_getSortedHighlights(){return r.kX(this._decorationIds.map((e=>this.model.getDecorationRange(e))).sort(d.e.compareRangesUsingStarts))}moveNext(){let e=this._getSortedHighlights(),t=(r.Zr(e,(e=>e.containsPosition(this.editor.getPosition())))+1)%e.length,i=e[t];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(i.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(i);const n=this._getWord();if(n){const r=this.editor.getModel().getLineContent(i.startLineNumber);(0,b.Z9)(`${r}, ${t+1} of ${e.length} for '${n.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){let e=this._getSortedHighlights(),t=(r.Zr(e,(e=>e.containsPosition(this.editor.getPosition())))-1+e.length)%e.length,i=e[t];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(i.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(i);const n=this._getWord();if(n){const r=this.editor.getModel().getLineContent(i.startLineNumber);(0,b.Z9)(`${r}, ${t+1} of ${e.length} for '${n.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeDecorations(){this._decorationIds.length>0&&(this._decorationIds=this.editor.deltaDecorations(this._decorationIds,[]),this._hasWordHighlights.set(!1))}_stopAll(){this._removeDecorations(),-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),null!==this.workerRequest&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){this.occurrencesHighlight&&3===e.reason?this._run():this._stopAll()}_getWord(){let e=this.editor.getSelection(),t=e.startLineNumber,i=e.startColumn;return this.model.getWordAtPosition({lineNumber:t,column:i})}_run(){let e=this.editor.getSelection();if(e.startLineNumber!==e.endLineNumber)return void this._stopAll();let t=e.startColumn,i=e.endColumn;const n=this._getWord();if(!n||n.startColumn>t||n.endColumn<i)return void this._stopAll();const r=this.workerRequest&&this.workerRequest.isValid(this.model,e,this._decorationIds);if(this.lastCursorPositionChangeTime=(new Date).getTime(),r)this.workerRequestCompleted&&-1!==this.renderDecorationsTimer&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else{this._stopAll();let e=++this.workerRequestTokenId;this.workerRequestCompleted=!1,this.workerRequest=(s=this.model,o=this.editor.getSelection(),l=this.editor.getOption(105),f.vH.has(s)?new D(s,o,l):new N(s,o,l)),this.workerRequest.result.then((t=>{e===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=t||[],this._beginRenderDecorations())}),a.dL)}var s,o,l}_beginRenderDecorations(){let e=(new Date).getTime(),t=this.lastCursorPositionChangeTime+250;e>=t?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout((()=>{this.renderDecorations()}),t-e)}renderDecorations(){this.renderDecorationsTimer=-1;let e=[];for(const t of this.workerRequestValue)t.range&&e.push({range:t.range,options:E._getDecorationOptions(t.kind)});this._decorationIds=this.editor.deltaDecorations(this._decorationIds,e),this._hasWordHighlights.set(this.hasDecorations())}static _getDecorationOptions(e){return e===f.MY.Write?this._WRITE_OPTIONS:e===f.MY.Text?this._TEXT_OPTIONS:this._REGULAR_OPTIONS}dispose(){this._stopAll(),this.toUnhook.dispose()}}E._WRITE_OPTIONS=g.qx.register({stickiness:1,className:"wordHighlightStrong",overviewRuler:{color:(0,_.EN)(k),position:u.sh.Center}}),E._TEXT_OPTIONS=g.qx.register({stickiness:1,className:"selectionHighlight",overviewRuler:{color:(0,_.EN)(m.SP),position:u.sh.Center}}),E._REGULAR_OPTIONS=g.qx.register({stickiness:1,className:"wordHighlight",overviewRuler:{color:(0,_.EN)(S),position:u.sh.Center}});let T=class e extends l.JT{constructor(e,t){super(),this.wordHighlighter=null;const i=()=>{e.hasModel()&&(this.wordHighlighter=new E(e,t))};this._register(e.onDidChangeModel((e=>{this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),i()}))),i()}static get(t){return t.getContribution(e.ID)}saveViewState(){return!(!this.wordHighlighter||!this.wordHighlighter.hasDecorations())}moveNext(){this.wordHighlighter&&this.wordHighlighter.moveNext()}moveBack(){this.wordHighlighter&&this.wordHighlighter.moveBack()}restoreViewState(e){this.wordHighlighter&&e&&this.wordHighlighter.restore()}dispose(){this.wordHighlighter&&(this.wordHighlighter.dispose(),this.wordHighlighter=null),super.dispose()}};var I,O;T.ID="editor.contrib.wordHighlighter",T=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(I=1,O=p.i6,function(e,t){O(e,t,I)})],T);class A extends c.R6{constructor(e,t){super(t),this._isNext=e}run(e,t){const i=T.get(t);i&&(this._isNext?i.moveNext():i.moveBack())}}class R extends c.R6{constructor(){super({id:"editor.action.wordHighlight.trigger",label:n.N("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:x.toNegated(),kbOpts:{kbExpr:h.u.editorTextFocus,primary:0,weight:100}})}run(e,t,i){const n=T.get(t);n&&n.restoreViewState(!0)}}(0,c._K)(T.ID,T),(0,c.Qr)(class extends A{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:n.N("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:x,kbOpts:{kbExpr:h.u.editorTextFocus,primary:65,weight:100}})}}),(0,c.Qr)(class extends A{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:n.N("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:x,kbOpts:{kbExpr:h.u.editorTextFocus,primary:1089,weight:100}})}}),(0,c.Qr)(R),(0,_.Ic)(((e,t)=>{const i=e.getColor(m.Rz);i&&(t.addRule(`.monaco-editor .focused .selectionHighlight { background-color: ${i}; }`),t.addRule(`.monaco-editor .selectionHighlight { background-color: ${i.transparent(.5)}; }`));const n=e.getColor(v);n&&t.addRule(`.monaco-editor .wordHighlight { background-color: ${n}; }`);const r=e.getColor(y);r&&t.addRule(`.monaco-editor .wordHighlightStrong { background-color: ${r}; }`);const s=e.getColor(m.g_);s&&t.addRule(`.monaco-editor .selectionHighlight { border: 1px ${"hc"===e.type?"dotted":"solid"} ${s}; box-sizing: border-box; }`);const o=e.getColor(w);o&&t.addRule(`.monaco-editor .wordHighlight { border: 1px ${"hc"===e.type?"dashed":"solid"} ${o}; box-sizing: border-box; }`);const a=e.getColor(C);a&&t.addRule(`.monaco-editor .wordHighlightStrong { border: 1px ${"hc"===e.type?"dashed":"solid"} ${a}; box-sizing: border-box; }`)}))},99453:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MoveWordCommand:()=>p,WordLeftCommand:()=>m,WordRightCommand:()=>_,CursorWordStartLeft:()=>b,CursorWordEndLeft:()=>v,CursorWordLeft:()=>y,CursorWordStartLeftSelect:()=>w,CursorWordEndLeftSelect:()=>C,CursorWordLeftSelect:()=>S,CursorWordAccessibilityLeft:()=>k,CursorWordAccessibilityLeftSelect:()=>x,CursorWordStartRight:()=>L,CursorWordEndRight:()=>M,CursorWordRight:()=>D,CursorWordStartRightSelect:()=>N,CursorWordEndRightSelect:()=>E,CursorWordRightSelect:()=>T,CursorWordAccessibilityRight:()=>I,CursorWordAccessibilityRightSelect:()=>O,DeleteWordCommand:()=>A,DeleteWordLeftCommand:()=>R,DeleteWordRightCommand:()=>P,DeleteWordStartLeft:()=>F,DeleteWordEndLeft:()=>B,DeleteWordLeft:()=>W,DeleteWordStartRight:()=>Y,DeleteWordEndRight:()=>H,DeleteWordRight:()=>j});var n=i(16830),r=i(61329),s=i(33181),o=i(5795),a=i(59410),l=i(50187),c=i(24314),d=i(3860),h=i(29102),u=i(31106),g=i(38819),f=i(64141);class p extends n._l{constructor(e){super(e),this._inSelectionMode=e.inSelectionMode,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){if(!t.hasModel())return;const n=(0,a.u)(t.getOption(105)),r=t.getModel(),o=t.getSelections().map((e=>{const t=new l.L(e.positionLineNumber,e.positionColumn),i=this._move(n,r,t,this._wordNavigationType);return this._moveTo(e,i,this._inSelectionMode)}));if(r.pushStackElement(),t._getViewModel().setCursorStates("moveWordCommand",0,o.map((e=>s.Vi.fromModelSelection(e)))),1===o.length){const e=new l.L(o[0].positionLineNumber,o[0].positionColumn);t.revealPosition(e,0)}}_moveTo(e,t,i){return i?new d.Y(e.selectionStartLineNumber,e.selectionStartColumn,t.lineNumber,t.column):new d.Y(t.lineNumber,t.column,t.lineNumber,t.column)}}class m extends p{_move(e,t,i,n){return o.w.moveWordLeft(e,t,i,n)}}class _ extends p{_move(e,t,i,n){return o.w.moveWordRight(e,t,i,n)}}class b extends m{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}}class v extends m{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}}class y extends m{constructor(){super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:h.u.textInputFocus,primary:2063,mac:{primary:527},weight:100}})}}class w extends m{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}}class C extends m{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}}class S extends m{constructor(){super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:h.u.textInputFocus,primary:3087,mac:{primary:1551},weight:100}})}}class k extends m{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0,kbOpts:{kbExpr:g.Ao.and(h.u.textInputFocus,u.U),win:{primary:2063},weight:101}})}_move(e,t,i,n){return super._move((0,a.u)(f.BH.wordSeparators.defaultValue),t,i,n)}}class x extends m{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0,kbOpts:{kbExpr:g.Ao.and(h.u.textInputFocus,u.U),win:{primary:3087},weight:101}})}_move(e,t,i,n){return super._move((0,a.u)(f.BH.wordSeparators.defaultValue),t,i,n)}}class L extends _{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}}class M extends _{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:h.u.textInputFocus,primary:2065,mac:{primary:529},weight:100}})}}class D extends _{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}}class N extends _{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}}class E extends _{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:h.u.textInputFocus,primary:3089,mac:{primary:1553},weight:100}})}}class T extends _{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}}class I extends _{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0,kbOpts:{kbExpr:g.Ao.and(h.u.textInputFocus,u.U),win:{primary:2065},weight:101}})}_move(e,t,i,n){return super._move((0,a.u)(f.BH.wordSeparators.defaultValue),t,i,n)}}class O extends _{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0,kbOpts:{kbExpr:g.Ao.and(h.u.textInputFocus,u.U),win:{primary:3089},weight:101}})}_move(e,t,i,n){return super._move((0,a.u)(f.BH.wordSeparators.defaultValue),t,i,n)}}class A extends n._l{constructor(e){super(e),this._whitespaceHeuristics=e.whitespaceHeuristics,this._wordNavigationType=e.wordNavigationType}runEditorCommand(e,t,i){if(!t.hasModel())return;const n=(0,a.u)(t.getOption(105)),s=t.getModel(),o=t.getSelections().map((e=>{const t=this._delete(n,s,e,this._whitespaceHeuristics,this._wordNavigationType);return new r.T4(t,"")}));t.pushUndoStop(),t.executeCommands(this.id,o),t.pushUndoStop()}}class R extends A{_delete(e,t,i,n,r){return o.w.deleteWordLeft(e,t,i,n,r)||new c.e(1,1,1,1)}}class P extends A{_delete(e,t,i,n,r){let s=o.w.deleteWordRight(e,t,i,n,r);if(s)return s;const a=t.getLineCount(),l=t.getLineMaxColumn(a);return new c.e(a,l,a,l)}}class F extends R{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:h.u.writable})}}class B extends R{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:h.u.writable})}}class W extends R{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:h.u.writable,kbOpts:{kbExpr:h.u.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}}class Y extends P{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:h.u.writable})}}class H extends P{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:h.u.writable})}}class j extends P{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:h.u.writable,kbOpts:{kbExpr:h.u.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}}(0,n.fK)(new b),(0,n.fK)(new v),(0,n.fK)(new y),(0,n.fK)(new w),(0,n.fK)(new C),(0,n.fK)(new S),(0,n.fK)(new L),(0,n.fK)(new M),(0,n.fK)(new D),(0,n.fK)(new N),(0,n.fK)(new E),(0,n.fK)(new T),(0,n.fK)(new k),(0,n.fK)(new x),(0,n.fK)(new I),(0,n.fK)(new O),(0,n.fK)(new F),(0,n.fK)(new B),(0,n.fK)(new W),(0,n.fK)(new Y),(0,n.fK)(new H),(0,n.fK)(new j)},60661:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DeleteWordPartLeft:()=>c,DeleteWordPartRight:()=>d,WordPartLeftCommand:()=>h,CursorWordPartLeft:()=>u,CursorWordPartLeftSelect:()=>g,WordPartRightCommand:()=>f,CursorWordPartRight:()=>p,CursorWordPartRightSelect:()=>m});var n=i(16830),r=i(5795),s=i(24314),o=i(29102),a=i(99453),l=i(94565);class c extends a.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:o.u.writable,kbOpts:{kbExpr:o.u.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(e,t,i,n,o){return r.L.deleteWordPartLeft(e,t,i,n)||new s.e(1,1,1,1)}}class d extends a.DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:o.u.writable,kbOpts:{kbExpr:o.u.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(e,t,i,n,o){let a=r.L.deleteWordPartRight(e,t,i,n);if(a)return a;const l=t.getLineCount(),c=t.getLineMaxColumn(l);return new s.e(l,c,l,c)}}class h extends a.MoveWordCommand{_move(e,t,i,n){return r.L.moveWordPartLeft(e,t,i)}}class u extends h{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:o.u.textInputFocus,primary:0,mac:{primary:783},weight:100}})}}l.P.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");class g extends h{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:o.u.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}}l.P.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");class f extends a.MoveWordCommand{_move(e,t,i,n){return r.L.moveWordPartRight(e,t,i)}}class p extends f{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:o.u.textInputFocus,primary:0,mac:{primary:785},weight:100}})}}class m extends f{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:o.u.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}}(0,n.fK)(new c),(0,n.fK)(new d),(0,n.fK)(new u),(0,n.fK)(new g),(0,n.fK)(new p),(0,n.fK)(new m)},34935:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CancellationTokenSource:()=>ea,Emitter:()=>ta,KeyCode:()=>ia,KeyMod:()=>na,MarkerSeverity:()=>la,MarkerTag:()=>ca,Position:()=>ra,Range:()=>sa,Selection:()=>oa,SelectionDirection:()=>aa,Token:()=>ha,Uri:()=>da,editor:()=>ua,languages:()=>ga});var n,r,s,o,a,l,c,d,h,u,g,f,p,m,_,b,v,y,w,C,S,k,x,L,M,D,N,E,T,I,O,A,R,P=i(64141),F=i(71050),B=i(4669),W=i(22258),Y=i(70666),H=i(50187),j=i(24314),V=i(3860),z=i(85600);!function(e){e[e.Unknown=0]="Unknown",e[e.Disabled=1]="Disabled",e[e.Enabled=2]="Enabled"}(n||(n={})),function(e){e[e.KeepWhitespace=1]="KeepWhitespace",e[e.InsertAsSnippet=4]="InsertAsSnippet"}(r||(r={})),function(e){e[e.Method=0]="Method",e[e.Function=1]="Function",e[e.Constructor=2]="Constructor",e[e.Field=3]="Field",e[e.Variable=4]="Variable",e[e.Class=5]="Class",e[e.Struct=6]="Struct",e[e.Interface=7]="Interface",e[e.Module=8]="Module",e[e.Property=9]="Property",e[e.Event=10]="Event",e[e.Operator=11]="Operator",e[e.Unit=12]="Unit",e[e.Value=13]="Value",e[e.Constant=14]="Constant",e[e.Enum=15]="Enum",e[e.EnumMember=16]="EnumMember",e[e.Keyword=17]="Keyword",e[e.Text=18]="Text",e[e.Color=19]="Color",e[e.File=20]="File",e[e.Reference=21]="Reference",e[e.Customcolor=22]="Customcolor",e[e.Folder=23]="Folder",e[e.TypeParameter=24]="TypeParameter",e[e.User=25]="User",e[e.Issue=26]="Issue",e[e.Snippet=27]="Snippet"}(s||(s={})),function(e){e[e.Deprecated=1]="Deprecated"}(o||(o={})),function(e){e[e.Invoke=0]="Invoke",e[e.TriggerCharacter=1]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"}(a||(a={})),function(e){e[e.EXACT=0]="EXACT",e[e.ABOVE=1]="ABOVE",e[e.BELOW=2]="BELOW"}(l||(l={})),function(e){e[e.NotSet=0]="NotSet",e[e.ContentFlush=1]="ContentFlush",e[e.RecoverFromMarkers=2]="RecoverFromMarkers",e[e.Explicit=3]="Explicit",e[e.Paste=4]="Paste",e[e.Undo=5]="Undo",e[e.Redo=6]="Redo"}(c||(c={})),function(e){e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(d||(d={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(h||(h={})),function(e){e[e.None=0]="None",e[e.Keep=1]="Keep",e[e.Brackets=2]="Brackets",e[e.Advanced=3]="Advanced",e[e.Full=4]="Full"}(u||(u={})),function(e){e[e.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",e[e.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",e[e.accessibilitySupport=2]="accessibilitySupport",e[e.accessibilityPageSize=3]="accessibilityPageSize",e[e.ariaLabel=4]="ariaLabel",e[e.autoClosingBrackets=5]="autoClosingBrackets",e[e.autoClosingOvertype=6]="autoClosingOvertype",e[e.autoClosingQuotes=7]="autoClosingQuotes",e[e.autoIndent=8]="autoIndent",e[e.automaticLayout=9]="automaticLayout",e[e.autoSurround=10]="autoSurround",e[e.codeLens=11]="codeLens",e[e.colorDecorators=12]="colorDecorators",e[e.columnSelection=13]="columnSelection",e[e.comments=14]="comments",e[e.contextmenu=15]="contextmenu",e[e.copyWithSyntaxHighlighting=16]="copyWithSyntaxHighlighting",e[e.cursorBlinking=17]="cursorBlinking",e[e.cursorSmoothCaretAnimation=18]="cursorSmoothCaretAnimation",e[e.cursorStyle=19]="cursorStyle",e[e.cursorSurroundingLines=20]="cursorSurroundingLines",e[e.cursorSurroundingLinesStyle=21]="cursorSurroundingLinesStyle",e[e.cursorWidth=22]="cursorWidth",e[e.disableLayerHinting=23]="disableLayerHinting",e[e.disableMonospaceOptimizations=24]="disableMonospaceOptimizations",e[e.dragAndDrop=25]="dragAndDrop",e[e.emptySelectionClipboard=26]="emptySelectionClipboard",e[e.extraEditorClassName=27]="extraEditorClassName",e[e.fastScrollSensitivity=28]="fastScrollSensitivity",e[e.find=29]="find",e[e.fixedOverflowWidgets=30]="fixedOverflowWidgets",e[e.folding=31]="folding",e[e.foldingStrategy=32]="foldingStrategy",e[e.foldingHighlight=33]="foldingHighlight",e[e.unfoldOnClickAfterEndOfLine=34]="unfoldOnClickAfterEndOfLine",e[e.fontFamily=35]="fontFamily",e[e.fontInfo=36]="fontInfo",e[e.fontLigatures=37]="fontLigatures",e[e.fontSize=38]="fontSize",e[e.fontWeight=39]="fontWeight",e[e.formatOnPaste=40]="formatOnPaste",e[e.formatOnType=41]="formatOnType",e[e.glyphMargin=42]="glyphMargin",e[e.gotoLocation=43]="gotoLocation",e[e.hideCursorInOverviewRuler=44]="hideCursorInOverviewRuler",e[e.highlightActiveIndentGuide=45]="highlightActiveIndentGuide",e[e.hover=46]="hover",e[e.inDiffEditor=47]="inDiffEditor",e[e.letterSpacing=48]="letterSpacing",e[e.lightbulb=49]="lightbulb",e[e.lineDecorationsWidth=50]="lineDecorationsWidth",e[e.lineHeight=51]="lineHeight",e[e.lineNumbers=52]="lineNumbers",e[e.lineNumbersMinChars=53]="lineNumbersMinChars",e[e.links=54]="links",e[e.matchBrackets=55]="matchBrackets",e[e.minimap=56]="minimap",e[e.mouseStyle=57]="mouseStyle",e[e.mouseWheelScrollSensitivity=58]="mouseWheelScrollSensitivity",e[e.mouseWheelZoom=59]="mouseWheelZoom",e[e.multiCursorMergeOverlapping=60]="multiCursorMergeOverlapping",e[e.multiCursorModifier=61]="multiCursorModifier",e[e.multiCursorPaste=62]="multiCursorPaste",e[e.occurrencesHighlight=63]="occurrencesHighlight",e[e.overviewRulerBorder=64]="overviewRulerBorder",e[e.overviewRulerLanes=65]="overviewRulerLanes",e[e.padding=66]="padding",e[e.parameterHints=67]="parameterHints",e[e.peekWidgetDefaultFocus=68]="peekWidgetDefaultFocus",e[e.definitionLinkOpensInPeek=69]="definitionLinkOpensInPeek",e[e.quickSuggestions=70]="quickSuggestions",e[e.quickSuggestionsDelay=71]="quickSuggestionsDelay",e[e.readOnly=72]="readOnly",e[e.renameOnType=73]="renameOnType",e[e.renderControlCharacters=74]="renderControlCharacters",e[e.renderIndentGuides=75]="renderIndentGuides",e[e.renderFinalNewline=76]="renderFinalNewline",e[e.renderLineHighlight=77]="renderLineHighlight",e[e.renderLineHighlightOnlyWhenFocus=78]="renderLineHighlightOnlyWhenFocus",e[e.renderValidationDecorations=79]="renderValidationDecorations",e[e.renderWhitespace=80]="renderWhitespace",e[e.revealHorizontalRightPadding=81]="revealHorizontalRightPadding",e[e.roundedSelection=82]="roundedSelection",e[e.rulers=83]="rulers",e[e.scrollbar=84]="scrollbar",e[e.scrollBeyondLastColumn=85]="scrollBeyondLastColumn",e[e.scrollBeyondLastLine=86]="scrollBeyondLastLine",e[e.scrollPredominantAxis=87]="scrollPredominantAxis",e[e.selectionClipboard=88]="selectionClipboard",e[e.selectionHighlight=89]="selectionHighlight",e[e.selectOnLineNumbers=90]="selectOnLineNumbers",e[e.showFoldingControls=91]="showFoldingControls",e[e.showUnused=92]="showUnused",e[e.snippetSuggestions=93]="snippetSuggestions",e[e.smoothScrolling=94]="smoothScrolling",e[e.stopRenderingLineAfter=95]="stopRenderingLineAfter",e[e.suggest=96]="suggest",e[e.suggestFontSize=97]="suggestFontSize",e[e.suggestLineHeight=98]="suggestLineHeight",e[e.suggestOnTriggerCharacters=99]="suggestOnTriggerCharacters",e[e.suggestSelection=100]="suggestSelection",e[e.tabCompletion=101]="tabCompletion",e[e.tabIndex=102]="tabIndex",e[e.unusualLineTerminators=103]="unusualLineTerminators",e[e.useTabStops=104]="useTabStops",e[e.wordSeparators=105]="wordSeparators",e[e.wordWrap=106]="wordWrap",e[e.wordWrapBreakAfterCharacters=107]="wordWrapBreakAfterCharacters",e[e.wordWrapBreakBeforeCharacters=108]="wordWrapBreakBeforeCharacters",e[e.wordWrapColumn=109]="wordWrapColumn",e[e.wordWrapMinified=110]="wordWrapMinified",e[e.wrappingIndent=111]="wrappingIndent",e[e.wrappingStrategy=112]="wrappingStrategy",e[e.showDeprecated=113]="showDeprecated",e[e.editorClassName=114]="editorClassName",e[e.pixelRatio=115]="pixelRatio",e[e.tabFocusMode=116]="tabFocusMode",e[e.layoutInfo=117]="layoutInfo",e[e.wrappingInfo=118]="wrappingInfo"}(g||(g={})),function(e){e[e.TextDefined=0]="TextDefined",e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(f||(f={})),function(e){e[e.LF=0]="LF",e[e.CRLF=1]="CRLF"}(p||(p={})),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(m||(m={})),function(e){e[e.Unknown=0]="Unknown",e[e.Backspace=1]="Backspace",e[e.Tab=2]="Tab",e[e.Enter=3]="Enter",e[e.Shift=4]="Shift",e[e.Ctrl=5]="Ctrl",e[e.Alt=6]="Alt",e[e.PauseBreak=7]="PauseBreak",e[e.CapsLock=8]="CapsLock",e[e.Escape=9]="Escape",e[e.Space=10]="Space",e[e.PageUp=11]="PageUp",e[e.PageDown=12]="PageDown",e[e.End=13]="End",e[e.Home=14]="Home",e[e.LeftArrow=15]="LeftArrow",e[e.UpArrow=16]="UpArrow",e[e.RightArrow=17]="RightArrow",e[e.DownArrow=18]="DownArrow",e[e.Insert=19]="Insert",e[e.Delete=20]="Delete",e[e.KEY_0=21]="KEY_0",e[e.KEY_1=22]="KEY_1",e[e.KEY_2=23]="KEY_2",e[e.KEY_3=24]="KEY_3",e[e.KEY_4=25]="KEY_4",e[e.KEY_5=26]="KEY_5",e[e.KEY_6=27]="KEY_6",e[e.KEY_7=28]="KEY_7",e[e.KEY_8=29]="KEY_8",e[e.KEY_9=30]="KEY_9",e[e.KEY_A=31]="KEY_A",e[e.KEY_B=32]="KEY_B",e[e.KEY_C=33]="KEY_C",e[e.KEY_D=34]="KEY_D",e[e.KEY_E=35]="KEY_E",e[e.KEY_F=36]="KEY_F",e[e.KEY_G=37]="KEY_G",e[e.KEY_H=38]="KEY_H",e[e.KEY_I=39]="KEY_I",e[e.KEY_J=40]="KEY_J",e[e.KEY_K=41]="KEY_K",e[e.KEY_L=42]="KEY_L",e[e.KEY_M=43]="KEY_M",e[e.KEY_N=44]="KEY_N",e[e.KEY_O=45]="KEY_O",e[e.KEY_P=46]="KEY_P",e[e.KEY_Q=47]="KEY_Q",e[e.KEY_R=48]="KEY_R",e[e.KEY_S=49]="KEY_S",e[e.KEY_T=50]="KEY_T",e[e.KEY_U=51]="KEY_U",e[e.KEY_V=52]="KEY_V",e[e.KEY_W=53]="KEY_W",e[e.KEY_X=54]="KEY_X",e[e.KEY_Y=55]="KEY_Y",e[e.KEY_Z=56]="KEY_Z",e[e.Meta=57]="Meta",e[e.ContextMenu=58]="ContextMenu",e[e.F1=59]="F1",e[e.F2=60]="F2",e[e.F3=61]="F3",e[e.F4=62]="F4",e[e.F5=63]="F5",e[e.F6=64]="F6",e[e.F7=65]="F7",e[e.F8=66]="F8",e[e.F9=67]="F9",e[e.F10=68]="F10",e[e.F11=69]="F11",e[e.F12=70]="F12",e[e.F13=71]="F13",e[e.F14=72]="F14",e[e.F15=73]="F15",e[e.F16=74]="F16",e[e.F17=75]="F17",e[e.F18=76]="F18",e[e.F19=77]="F19",e[e.NumLock=78]="NumLock",e[e.ScrollLock=79]="ScrollLock",e[e.US_SEMICOLON=80]="US_SEMICOLON",e[e.US_EQUAL=81]="US_EQUAL",e[e.US_COMMA=82]="US_COMMA",e[e.US_MINUS=83]="US_MINUS",e[e.US_DOT=84]="US_DOT",e[e.US_SLASH=85]="US_SLASH",e[e.US_BACKTICK=86]="US_BACKTICK",e[e.US_OPEN_SQUARE_BRACKET=87]="US_OPEN_SQUARE_BRACKET",e[e.US_BACKSLASH=88]="US_BACKSLASH",e[e.US_CLOSE_SQUARE_BRACKET=89]="US_CLOSE_SQUARE_BRACKET",e[e.US_QUOTE=90]="US_QUOTE",e[e.OEM_8=91]="OEM_8",e[e.OEM_102=92]="OEM_102",e[e.NUMPAD_0=93]="NUMPAD_0",e[e.NUMPAD_1=94]="NUMPAD_1",e[e.NUMPAD_2=95]="NUMPAD_2",e[e.NUMPAD_3=96]="NUMPAD_3",e[e.NUMPAD_4=97]="NUMPAD_4",e[e.NUMPAD_5=98]="NUMPAD_5",e[e.NUMPAD_6=99]="NUMPAD_6",e[e.NUMPAD_7=100]="NUMPAD_7",e[e.NUMPAD_8=101]="NUMPAD_8",e[e.NUMPAD_9=102]="NUMPAD_9",e[e.NUMPAD_MULTIPLY=103]="NUMPAD_MULTIPLY",e[e.NUMPAD_ADD=104]="NUMPAD_ADD",e[e.NUMPAD_SEPARATOR=105]="NUMPAD_SEPARATOR",e[e.NUMPAD_SUBTRACT=106]="NUMPAD_SUBTRACT",e[e.NUMPAD_DECIMAL=107]="NUMPAD_DECIMAL",e[e.NUMPAD_DIVIDE=108]="NUMPAD_DIVIDE",e[e.KEY_IN_COMPOSITION=109]="KEY_IN_COMPOSITION",e[e.ABNT_C1=110]="ABNT_C1",e[e.ABNT_C2=111]="ABNT_C2",e[e.MAX_VALUE=112]="MAX_VALUE"}(_||(_={})),function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(b||(b={})),function(e){e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated"}(v||(v={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(y||(y={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TEXTAREA=1]="TEXTAREA",e[e.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",e[e.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",e[e.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",e[e.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",e[e.CONTENT_TEXT=6]="CONTENT_TEXT",e[e.CONTENT_EMPTY=7]="CONTENT_EMPTY",e[e.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",e[e.CONTENT_WIDGET=9]="CONTENT_WIDGET",e[e.OVERVIEW_RULER=10]="OVERVIEW_RULER",e[e.SCROLLBAR=11]="SCROLLBAR",e[e.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",e[e.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"}(w||(w={})),function(e){e[e.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",e[e.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",e[e.TOP_CENTER=2]="TOP_CENTER"}(C||(C={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(S||(S={})),function(e){e[e.Off=0]="Off",e[e.On=1]="On",e[e.Relative=2]="Relative",e[e.Interval=3]="Interval",e[e.Custom=4]="Custom"}(k||(k={})),function(e){e[e.None=0]="None",e[e.Text=1]="Text",e[e.Blocks=2]="Blocks"}(x||(x={})),function(e){e[e.Smooth=0]="Smooth",e[e.Immediate=1]="Immediate"}(L||(L={})),function(e){e[e.Auto=1]="Auto",e[e.Hidden=2]="Hidden",e[e.Visible=3]="Visible"}(M||(M={})),function(e){e[e.LTR=0]="LTR",e[e.RTL=1]="RTL"}(D||(D={})),function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(N||(N={})),function(e){e[e.File=0]="File",e[e.Module=1]="Module",e[e.Namespace=2]="Namespace",e[e.Package=3]="Package",e[e.Class=4]="Class",e[e.Method=5]="Method",e[e.Property=6]="Property",e[e.Field=7]="Field",e[e.Constructor=8]="Constructor",e[e.Enum=9]="Enum",e[e.Interface=10]="Interface",e[e.Function=11]="Function",e[e.Variable=12]="Variable",e[e.Constant=13]="Constant",e[e.String=14]="String",e[e.Number=15]="Number",e[e.Boolean=16]="Boolean",e[e.Array=17]="Array",e[e.Object=18]="Object",e[e.Key=19]="Key",e[e.Null=20]="Null",e[e.EnumMember=21]="EnumMember",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter"}(E||(E={})),function(e){e[e.Deprecated=1]="Deprecated"}(T||(T={})),function(e){e[e.Hidden=0]="Hidden",e[e.Blink=1]="Blink",e[e.Smooth=2]="Smooth",e[e.Phase=3]="Phase",e[e.Expand=4]="Expand",e[e.Solid=5]="Solid"}(I||(I={})),function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(O||(O={})),function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",e[e.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",e[e.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",e[e.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"}(A||(A={})),function(e){e[e.None=0]="None",e[e.Same=1]="Same",e[e.Indent=2]="Indent",e[e.DeepIndent=3]="DeepIndent"}(R||(R={}));class U{static chord(e,t){return(0,W.gx)(e,t)}}function $(){return{editor:void 0,languages:void 0,CancellationTokenSource:F.A,Emitter:B.Q5,KeyCode:_,KeyMod:U,Position:H.L,Range:j.e,Selection:V.Y,SelectionDirection:D,MarkerSeverity:b,MarkerTag:v,Uri:Y.o,Token:z.WU}}U.CtrlCmd=2048,U.Shift=1024,U.Alt=512,U.WinCtrl=256;var K,q=i(11640),G=i(65321),Z=i(91741),J=i(23897),Q=i(66663),X=i(95935),ee=i(94565),te=i(50988);!function(e){e[e.API=0]="API",e[e.USER=1]="USER"}(K||(K={}));var ie=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},ne=function(e,t){return function(i,n){t(i,n,e)}},re=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};let se=class{constructor(e){this._commandService=e}open(e){return re(this,void 0,void 0,(function*(){if(!(0,te.xn)(e,Q.l.command))return!1;"string"==typeof e&&(e=Y.o.parse(e));let t=[];try{t=(0,J.Q)(decodeURIComponent(e.query))}catch(i){try{t=(0,J.Q)(e.query)}catch(e){}}return Array.isArray(t)||(t=[t]),yield this._commandService.executeCommand(e.path,...t),!0}))}};se=ie([ne(0,ee.H)],se);let oe=class{constructor(e){this._editorService=e}open(e,t){return re(this,void 0,void 0,(function*(){let i;"string"==typeof e&&(e=Y.o.parse(e));const n=/^L?(\d+)(?:,(\d+))?/.exec(e.fragment);return n&&(i={startLineNumber:parseInt(n[1]),startColumn:n[2]?parseInt(n[2]):1},e=e.with({fragment:""})),e.scheme===Q.l.file&&(e=(0,X.AH)(e)),yield this._editorService.openCodeEditor({resource:e,options:{selection:i,context:(null==t?void 0:t.fromUserGesture)?K.USER:K.API}},this._editorService.getFocusedCodeEditor(),null==t?void 0:t.openToSide),!0}))}};oe=ie([ne(0,q.$)],oe);let ae=class{constructor(e,t){this._openers=new Z.S,this._validators=new Z.S,this._resolvers=new Z.S,this._externalOpener={openExternal:e=>((0,te.xn)(e,Q.l.http)||(0,te.xn)(e,Q.l.https)?G.V3(e):window.location.href=e,Promise.resolve(!0))},this._openers.push({open:(e,t)=>re(this,void 0,void 0,(function*(){return!!((null==t?void 0:t.openExternal)||(0,te.xn)(e,Q.l.mailto)||(0,te.xn)(e,Q.l.http)||(0,te.xn)(e,Q.l.https))&&(yield this._doOpenExternal(e,t),!0)}))}),this._openers.push(new se(t)),this._openers.push(new oe(e))}open(e,t){return re(this,void 0,void 0,(function*(){for(const t of this._validators.toArray())if(!(yield t.shouldOpen(e)))return!1;for(const i of this._openers.toArray())if(yield i.open(e,t))return!0;return!1}))}resolveExternalUri(e,t){return re(this,void 0,void 0,(function*(){for(const i of this._resolvers.toArray()){const n=yield i.resolveExternalUri(e,t);if(n)return n}return{resolved:e,dispose:()=>{}}}))}_doOpenExternal(e,t){return re(this,void 0,void 0,(function*(){const i="string"==typeof e?Y.o.parse(e):e,{resolved:n}=yield this.resolveExternalUri(i,t);return"string"==typeof e&&i.toString()===n.toString()?this._externalOpener.openExternal(e):this._externalOpener.openExternal(encodeURI(n.toString(!0)))}))}dispose(){this._validators.clear()}};ae=ie([ne(0,q.$),ne(1,ee.H)],ae);var le=i(75623),ce=i(27374),de=i(96518),he=i(84973),ue=i(43775),ge=i(28111),fe=i(90469),pe=i(88216),me=i(15393),_e=i(5976),be=i(17301),ve=i(1432),ye=i(98401);let we=!1;function Ce(e){ve.$L&&(we||(we=!0,console.warn("Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq")),console.warn(e.message))}class Se{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null)}setWorkerId(e){this._workerId=e}sendMessage(e,t){let i=String(++this._lastSentReq);return new Promise(((n,r)=>{this._pendingReplies[i]={resolve:n,reject:r},this._send({vsWorker:this._workerId,req:i,method:e,args:t})}))}handleMessage(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}_handleMessage(e){if(e.seq){let t=e;if(!this._pendingReplies[t.seq])return void console.warn("Got reply to unknown seq");let i=this._pendingReplies[t.seq];if(delete this._pendingReplies[t.seq],t.err){let e=t.err;return t.err.$isError&&(e=new Error,e.name=t.err.name,e.message=t.err.message,e.stack=t.err.stack),void i.reject(e)}return void i.resolve(t.res)}let t=e,i=t.req;this._handler.handleMessage(t.method,t.args).then((e=>{this._send({vsWorker:this._workerId,seq:i,res:e,err:void 0})}),(e=>{e.detail instanceof Error&&(e.detail=(0,be.ri)(e.detail)),this._send({vsWorker:this._workerId,seq:i,res:void 0,err:(0,be.ri)(e)})}))}_send(e){let t=[];if(e.req){const i=e;for(let e=0;e<i.args.length;e++)i.args[e]instanceof ArrayBuffer&&t.push(i.args[e])}else{const i=e;i.res instanceof ArrayBuffer&&t.push(i.res)}this._handler.sendMessage(e,t)}}class ke extends _e.JT{constructor(e,t,i){super();let n=null;this._worker=this._register(e.create("vs/base/common/worker/simpleWorker",(e=>{this._protocol.handleMessage(e)}),(e=>{n&&n(e)}))),this._protocol=new Se({sendMessage:(e,t)=>{this._worker.postMessage(e,t)},handleMessage:(e,t)=>{if("function"!=typeof i[e])return Promise.reject(new Error("Missing method "+e+" on main thread host."));try{return Promise.resolve(i[e].apply(i,t))}catch(e){return Promise.reject(e)}}}),this._protocol.setWorkerId(this._worker.getId());let r=null;void 0!==self.require&&"function"==typeof self.require.getConfig?r=self.require.getConfig():void 0!==self.requirejs&&(r=self.requirejs.s.contexts._.config);const s=ye.$E(i);this._onModuleLoaded=this._protocol.sendMessage("$initialize",[this._worker.getId(),JSON.parse(JSON.stringify(r)),t,s]);const o=(e,t)=>this._request(e,t);this._lazyProxy=new Promise(((e,i)=>{n=i,this._onModuleLoaded.then((t=>{e(ye.IU(t,o))}),(e=>{i(e),this._onError("Worker failed to load "+t,e)}))}))}getProxyObject(){return this._lazyProxy}_request(e,t){return new Promise(((i,n)=>{this._onModuleLoaded.then((()=>{this._protocol.sendMessage(e,t).then(i,n)}),n)}))}_onError(e,t){console.error(e),console.info(t)}}class xe{constructor(e,t,i,n,r){this.id=t;const s=function(e,t){if(ve.li.MonacoEnvironment){if("function"==typeof ve.li.MonacoEnvironment.getWorker)return ve.li.MonacoEnvironment.getWorker(e,t);if("function"==typeof ve.li.MonacoEnvironment.getWorkerUrl)return new Worker(ve.li.MonacoEnvironment.getWorkerUrl(e,t))}throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}("workerMain.js",i);"function"==typeof s.then?this.worker=s:this.worker=Promise.resolve(s),this.postMessage(e,[]),this.worker.then((e=>{e.onmessage=function(e){n(e.data)},e.onmessageerror=r,"function"==typeof e.addEventListener&&e.addEventListener("error",r)}))}getId(){return this.id}postMessage(e,t){this.worker&&this.worker.then((i=>i.postMessage(e,t)))}dispose(){this.worker&&this.worker.then((e=>e.terminate())),this.worker=null}}class Le{constructor(e){this._label=e,this._webWorkerFailedBeforeError=!1}create(e,t,i){let n=++Le.LAST_WORKER_ID;if(this._webWorkerFailedBeforeError)throw this._webWorkerFailedBeforeError;return new xe(e,n,this._label||"anonymous"+n,t,(e=>{Ce(e),this._webWorkerFailedBeforeError=e,i(e)}))}}Le.LAST_WORKER_ID=0;var Me=i(83831),De=i(9488);class Ne{constructor(e,t,i,n){this.originalStart=e,this.originalLength=t,this.modifiedStart=i,this.modifiedLength=n}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}var Ee=i(89954);class Te{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let i=0,n=e.length;i<n;i++)t[i]=e.charCodeAt(i);return t}}function Ie(e,t,i){return new Pe(new Te(e),new Te(t)).ComputeDiff(i).changes}class Oe{static Assert(e,t){if(!e)throw new Error(t)}}class Ae{static Copy(e,t,i,n,r){for(let s=0;s<r;s++)i[n+s]=e[t+s]}static Copy2(e,t,i,n,r){for(let s=0;s<r;s++)i[n+s]=e[t+s]}}class Re{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new Ne(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class Pe{constructor(e,t,i=null){this.ContinueProcessingPredicate=i;const[n,r,s]=Pe._getElements(e),[o,a,l]=Pe._getElements(t);this._hasStrings=s&&l,this._originalStringElements=n,this._originalElementsOrHash=r,this._modifiedStringElements=o,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&"string"==typeof e[0]}static _getElements(e){const t=e.getElements();if(Pe._isStringArray(t)){const e=new Int32Array(t.length);for(let i=0,n=t.length;i<n;i++)e[i]=(0,Ee.Cv)(t[i],0);return[t,e,!0]}return t instanceof Int32Array?[[],t,!1]:[[],new Int32Array(t),!1]}ElementsAreEqual(e,t){return this._originalElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._modifiedStringElements[t])}OriginalElementsAreEqual(e,t){return this._originalElementsOrHash[e]===this._originalElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._originalStringElements[t])}ModifiedElementsAreEqual(e,t){return this._modifiedElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._modifiedStringElements[e]===this._modifiedStringElements[t])}ComputeDiff(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}_ComputeDiff(e,t,i,n,r){const s=[!1];let o=this.ComputeDiffRecursive(e,t,i,n,s);return r&&(o=this.PrettifyChanges(o)),{quitEarly:s[0],changes:o}}ComputeDiffRecursive(e,t,i,n,r){for(r[0]=!1;e<=t&&i<=n&&this.ElementsAreEqual(e,i);)e++,i++;for(;t>=e&&n>=i&&this.ElementsAreEqual(t,n);)t--,n--;if(e>t||i>n){let r;return i<=n?(Oe.Assert(e===t+1,"originalStart should only be one more than originalEnd"),r=[new Ne(e,0,i,n-i+1)]):e<=t?(Oe.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),r=[new Ne(e,t-e+1,i,0)]):(Oe.Assert(e===t+1,"originalStart should only be one more than originalEnd"),Oe.Assert(i===n+1,"modifiedStart should only be one more than modifiedEnd"),r=[]),r}const s=[0],o=[0],a=this.ComputeRecursionPoint(e,t,i,n,s,o,r),l=s[0],c=o[0];if(null!==a)return a;if(!r[0]){const s=this.ComputeDiffRecursive(e,l,i,c,r);let o=[];return o=r[0]?[new Ne(l+1,t-(l+1)+1,c+1,n-(c+1)+1)]:this.ComputeDiffRecursive(l+1,t,c+1,n,r),this.ConcatenateChanges(s,o)}return[new Ne(e,t-e+1,i,n-i+1)]}WALKTRACE(e,t,i,n,r,s,o,a,l,c,d,h,u,g,f,p,m,_){let b=null,v=null,y=new Re,w=t,C=i,S=u[0]-p[0]-n,k=-1073741824,x=this.m_forwardHistory.length-1;do{const t=S+e;t===w||t<C&&l[t-1]<l[t+1]?(g=(d=l[t+1])-S-n,d<k&&y.MarkNextChange(),k=d,y.AddModifiedElement(d+1,g),S=t+1-e):(g=(d=l[t-1]+1)-S-n,d<k&&y.MarkNextChange(),k=d-1,y.AddOriginalElement(d,g+1),S=t-1-e),x>=0&&(e=(l=this.m_forwardHistory[x])[0],w=1,C=l.length-1)}while(--x>=-1);if(b=y.getReverseChanges(),_[0]){let e=u[0]+1,t=p[0]+1;if(null!==b&&b.length>0){const i=b[b.length-1];e=Math.max(e,i.getOriginalEnd()),t=Math.max(t,i.getModifiedEnd())}v=[new Ne(e,h-e+1,t,f-t+1)]}else{y=new Re,w=s,C=o,S=u[0]-p[0]-a,k=1073741824,x=m?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const e=S+r;e===w||e<C&&c[e-1]>=c[e+1]?(g=(d=c[e+1]-1)-S-a,d>k&&y.MarkNextChange(),k=d+1,y.AddOriginalElement(d+1,g+1),S=e+1-r):(g=(d=c[e-1])-S-a,d>k&&y.MarkNextChange(),k=d,y.AddModifiedElement(d+1,g+1),S=e-1-r),x>=0&&(r=(c=this.m_reverseHistory[x])[0],w=1,C=c.length-1)}while(--x>=-1);v=y.getChanges()}return this.ConcatenateChanges(b,v)}ComputeRecursionPoint(e,t,i,n,r,s,o){let a=0,l=0,c=0,d=0,h=0,u=0;e--,i--,r[0]=0,s[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const g=t-e+(n-i),f=g+1,p=new Int32Array(f),m=new Int32Array(f),_=n-i,b=t-e,v=e-i,y=t-n,w=(b-_)%2==0;p[_]=e,m[b]=t,o[0]=!1;for(let C=1;C<=g/2+1;C++){let g=0,S=0;c=this.ClipDiagonalBound(_-C,C,_,f),d=this.ClipDiagonalBound(_+C,C,_,f);for(let e=c;e<=d;e+=2){a=e===c||e<d&&p[e-1]<p[e+1]?p[e+1]:p[e-1]+1,l=a-(e-_)-v;const i=a;for(;a<t&&l<n&&this.ElementsAreEqual(a+1,l+1);)a++,l++;if(p[e]=a,a+l>g+S&&(g=a,S=l),!w&&Math.abs(e-b)<=C-1&&a>=m[e])return r[0]=a,s[0]=l,i<=m[e]&&C<=1448?this.WALKTRACE(_,c,d,v,b,h,u,y,p,m,a,t,r,l,n,s,w,o):null}const k=(g-e+(S-i)-C)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(g,k))return o[0]=!0,r[0]=g,s[0]=S,k>0&&C<=1448?this.WALKTRACE(_,c,d,v,b,h,u,y,p,m,a,t,r,l,n,s,w,o):(e++,i++,[new Ne(e,t-e+1,i,n-i+1)]);h=this.ClipDiagonalBound(b-C,C,b,f),u=this.ClipDiagonalBound(b+C,C,b,f);for(let g=h;g<=u;g+=2){a=g===h||g<u&&m[g-1]>=m[g+1]?m[g+1]-1:m[g-1],l=a-(g-b)-y;const f=a;for(;a>e&&l>i&&this.ElementsAreEqual(a,l);)a--,l--;if(m[g]=a,w&&Math.abs(g-_)<=C&&a<=p[g])return r[0]=a,s[0]=l,f>=p[g]&&C<=1448?this.WALKTRACE(_,c,d,v,b,h,u,y,p,m,a,t,r,l,n,s,w,o):null}if(C<=1447){let e=new Int32Array(d-c+2);e[0]=_-c+1,Ae.Copy2(p,c,e,1,d-c+1),this.m_forwardHistory.push(e),e=new Int32Array(u-h+2),e[0]=b-h+1,Ae.Copy2(m,h,e,1,u-h+1),this.m_reverseHistory.push(e)}}return this.WALKTRACE(_,c,d,v,b,h,u,y,p,m,a,t,r,l,n,s,w,o)}PrettifyChanges(e){for(let t=0;t<e.length;t++){const i=e[t],n=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,r=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,s=i.originalLength>0,o=i.modifiedLength>0;for(;i.originalStart+i.originalLength<n&&i.modifiedStart+i.modifiedLength<r&&(!s||this.OriginalElementsAreEqual(i.originalStart,i.originalStart+i.originalLength))&&(!o||this.ModifiedElementsAreEqual(i.modifiedStart,i.modifiedStart+i.modifiedLength));)i.originalStart++,i.modifiedStart++;let a=[null];t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],a)&&(e[t]=a[0],e.splice(t+1,1),t--)}for(let t=e.length-1;t>=0;t--){const i=e[t];let n=0,r=0;if(t>0){const i=e[t-1];i.originalLength>0&&(n=i.originalStart+i.originalLength),i.modifiedLength>0&&(r=i.modifiedStart+i.modifiedLength)}const s=i.originalLength>0,o=i.modifiedLength>0;let a=0,l=this._boundaryScore(i.originalStart,i.originalLength,i.modifiedStart,i.modifiedLength);for(let e=1;;e++){const t=i.originalStart-e,c=i.modifiedStart-e;if(t<n||c<r)break;if(s&&!this.OriginalElementsAreEqual(t,t+i.originalLength))break;if(o&&!this.ModifiedElementsAreEqual(c,c+i.modifiedLength))break;const d=this._boundaryScore(t,i.originalLength,c,i.modifiedLength);d>l&&(l=d,a=e)}i.originalStart-=a,i.modifiedStart-=a}return e}_OriginalIsBoundary(e){return e<=0||e>=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._OriginalIsBoundary(i-1)||this._OriginalIsBoundary(i))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const i=e+t;if(this._ModifiedIsBoundary(i-1)||this._ModifiedIsBoundary(i))return!0}return!1}_boundaryScore(e,t,i,n){return(this._OriginalRegionIsBoundary(e,t)?1:0)+(this._ModifiedRegionIsBoundary(i,n)?1:0)}ConcatenateChanges(e,t){let i=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],i)){const n=new Array(e.length+t.length-1);return Ae.Copy(e,0,n,0,e.length-1),n[e.length-1]=i[0],Ae.Copy(t,1,n,e.length,t.length-1),n}{const i=new Array(e.length+t.length);return Ae.Copy(e,0,i,0,e.length),Ae.Copy(t,0,i,e.length,t.length),i}}ChangesOverlap(e,t,i){if(Oe.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),Oe.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const n=e.originalStart;let r=e.originalLength;const s=e.modifiedStart;let o=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(o=t.modifiedStart+t.modifiedLength-e.modifiedStart),i[0]=new Ne(n,r,s,o),!0}return i[0]=null,!1}ClipDiagonalBound(e,t,i,n){if(e>=0&&e<n)return e;const r=t%2==0;return e<0?r===(i%2==0)?0:1:r===((n-i-1)%2==0)?n-1:n-2}}var Fe=i(97295);function Be(e,t,i,n){return new Pe(e,t,i).ComputeDiff(n)}class We{constructor(e){const t=[],i=[];for(let n=0,r=e.length;n<r;n++)t[n]=ze(e[n],1),i[n]=Ue(e[n],1);this.lines=e,this._startColumns=t,this._endColumns=i}getElements(){const e=[];for(let t=0,i=this.lines.length;t<i;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}getStartLineNumber(e){return e+1}getEndLineNumber(e){return e+1}createCharSequence(e,t,i){const n=[],r=[],s=[];let o=0;for(let a=t;a<=i;a++){const t=this.lines[a],i=e?this._startColumns[a]:1,l=e?this._endColumns[a]:t.length+1;for(let e=i;e<l;e++)n[o]=t.charCodeAt(e-1),r[o]=a+1,s[o]=e,o++}return new Ye(n,r,s)}}class Ye{constructor(e,t,i){this._charCodes=e,this._lineNumbers=t,this._columns=i}getElements(){return this._charCodes}getStartLineNumber(e){return this._lineNumbers[e]}getStartColumn(e){return this._columns[e]}getEndLineNumber(e){return this._lineNumbers[e]}getEndColumn(e){return this._columns[e]+1}}class He{constructor(e,t,i,n,r,s,o,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=i,this.originalEndColumn=n,this.modifiedStartLineNumber=r,this.modifiedStartColumn=s,this.modifiedEndLineNumber=o,this.modifiedEndColumn=a}static createFromDiffChange(e,t,i){let n,r,s,o,a,l,c,d;return 0===e.originalLength?(n=0,r=0,s=0,o=0):(n=t.getStartLineNumber(e.originalStart),r=t.getStartColumn(e.originalStart),s=t.getEndLineNumber(e.originalStart+e.originalLength-1),o=t.getEndColumn(e.originalStart+e.originalLength-1)),0===e.modifiedLength?(a=0,l=0,c=0,d=0):(a=i.getStartLineNumber(e.modifiedStart),l=i.getStartColumn(e.modifiedStart),c=i.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),d=i.getEndColumn(e.modifiedStart+e.modifiedLength-1)),new He(n,r,s,o,a,l,c,d)}}class je{constructor(e,t,i,n,r){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=i,this.modifiedEndLineNumber=n,this.charChanges=r}static createFromDiffResult(e,t,i,n,r,s,o){let a,l,c,d,h;if(0===t.originalLength?(a=i.getStartLineNumber(t.originalStart)-1,l=0):(a=i.getStartLineNumber(t.originalStart),l=i.getEndLineNumber(t.originalStart+t.originalLength-1)),0===t.modifiedLength?(c=n.getStartLineNumber(t.modifiedStart)-1,d=0):(c=n.getStartLineNumber(t.modifiedStart),d=n.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),s&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&r()){const s=i.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=n.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);let l=Be(s,a,r,!0).changes;o&&(l=function(e){if(e.length<=1)return e;const t=[e[0]];let i=t[0];for(let n=1,r=e.length;n<r;n++){const r=e[n],s=r.originalStart-(i.originalStart+i.originalLength),o=r.modifiedStart-(i.modifiedStart+i.modifiedLength);Math.min(s,o)<3?(i.originalLength=r.originalStart+r.originalLength-i.originalStart,i.modifiedLength=r.modifiedStart+r.modifiedLength-i.modifiedStart):(t.push(r),i=r)}return t}(l)),h=[];for(let e=0,t=l.length;e<t;e++)h.push(He.createFromDiffChange(l[e],s,a))}return new je(a,l,c,d,h)}}class Ve{constructor(e,t,i){this.shouldComputeCharChanges=i.shouldComputeCharChanges,this.shouldPostProcessCharChanges=i.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=i.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=i.shouldMakePrettyDiff,this.originalLines=e,this.modifiedLines=t,this.original=new We(e),this.modified=new We(t),this.continueLineDiff=$e(i.maxComputationTime),this.continueCharDiff=$e(0===i.maxComputationTime?0:Math.min(i.maxComputationTime,5e3))}computeDiff(){if(1===this.original.lines.length&&0===this.original.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};if(1===this.modified.lines.length&&0===this.modified.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};const e=Be(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,i=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){const e=[];for(let i=0,n=t.length;i<n;i++)e.push(je.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[i],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:i,changes:e}}const n=[];let r=0,s=0;for(let e=-1,i=t.length;e<i;e++){const o=e+1<i?t[e+1]:null,a=o?o.originalStart:this.originalLines.length,l=o?o.modifiedStart:this.modifiedLines.length;for(;r<a&&s<l;){const e=this.originalLines[r],t=this.modifiedLines[s];if(e!==t){{let i=ze(e,1),o=ze(t,1);for(;i>1&&o>1&&e.charCodeAt(i-2)===t.charCodeAt(o-2);)i--,o--;(i>1||o>1)&&this._pushTrimWhitespaceCharChange(n,r+1,1,i,s+1,1,o)}{let i=Ue(e,1),o=Ue(t,1);const a=e.length+1,l=t.length+1;for(;i<a&&o<l&&e.charCodeAt(i-1)===e.charCodeAt(o-1);)i++,o++;(i<a||o<l)&&this._pushTrimWhitespaceCharChange(n,r+1,i,a,s+1,o,l)}}r++,s++}o&&(n.push(je.createFromDiffResult(this.shouldIgnoreTrimWhitespace,o,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),r+=o.originalLength,s+=o.modifiedLength)}return{quitEarly:i,changes:n}}_pushTrimWhitespaceCharChange(e,t,i,n,r,s,o){if(this._mergeTrimWhitespaceCharChange(e,t,i,n,r,s,o))return;let a;this.shouldComputeCharChanges&&(a=[new He(t,i,t,n,r,s,r,o)]),e.push(new je(t,t,r,r,a))}_mergeTrimWhitespaceCharChange(e,t,i,n,r,s,o){const a=e.length;if(0===a)return!1;const l=e[a-1];return 0!==l.originalEndLineNumber&&0!==l.modifiedEndLineNumber&&l.originalEndLineNumber+1===t&&l.modifiedEndLineNumber+1===r&&(l.originalEndLineNumber=t,l.modifiedEndLineNumber=r,this.shouldComputeCharChanges&&l.charChanges&&l.charChanges.push(new He(t,i,t,n,r,s,r,o)),!0)}}function ze(e,t){const i=Fe.LC(e);return-1===i?t:i+1}function Ue(e,t){const i=Fe.ow(e);return-1===i?t:i+2}function $e(e){if(0===e)return()=>!0;const t=Date.now();return()=>Date.now()-t<e}var Ke=i(3544),qe=i(97461),Ge=i(44906);class Ze{constructor(e,t,i){const n=new Uint8Array(e*t);for(let r=0,s=e*t;r<s;r++)n[r]=i;this._data=n,this.rows=e,this.cols=t}get(e,t){return this._data[e*this.cols+t]}set(e,t,i){this._data[e*this.cols+t]=i}}class Je{constructor(e){let t=0,i=0;for(let n=0,r=e.length;n<r;n++){let[r,s,o]=e[n];s>t&&(t=s),r>i&&(i=r),o>i&&(i=o)}t++,i++;let n=new Ze(i,t,0);for(let t=0,i=e.length;t<i;t++){let[i,r,s]=e[t];n.set(i,r,s)}this._states=n,this._maxCharCode=t}nextState(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}let Qe=null,Xe=null;class et{static _createLink(e,t,i,n,r){let s=r-1;do{const i=t.charCodeAt(s);if(2!==e.get(i))break;s--}while(s>n);if(n>0){const e=t.charCodeAt(n-1),i=t.charCodeAt(s);(40===e&&41===i||91===e&&93===i||123===e&&125===i)&&s--}return{range:{startLineNumber:i,startColumn:n+1,endLineNumber:i,endColumn:s+2},url:t.substring(n,s+1)}}static computeLinks(e,t=function(){return null===Qe&&(Qe=new Je([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),Qe}()){const i=function(){if(null===Xe){Xe=new Ge.N(0);const e=" \t<>'\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…";for(let t=0;t<e.length;t++)Xe.set(e.charCodeAt(t),1);const t=".,;";for(let e=0;e<t.length;e++)Xe.set(t.charCodeAt(e),2)}return Xe}();let n=[];for(let r=1,s=e.getLineCount();r<=s;r++){const s=e.getLineContent(r),o=s.length;let a=0,l=0,c=0,d=1,h=!1,u=!1,g=!1,f=!1;for(;a<o;){let e=!1;const o=s.charCodeAt(a);if(13===d){let t;switch(o){case 40:h=!0,t=0;break;case 41:t=h?0:1;break;case 91:g=!0,u=!0,t=0;break;case 93:g=!1,t=u?0:1;break;case 123:f=!0,t=0;break;case 125:t=f?0:1;break;case 39:t=34===c||96===c?0:1;break;case 34:t=39===c||96===c?0:1;break;case 96:t=39===c||34===c?0:1;break;case 42:t=42===c?1:0;break;case 124:t=124===c?1:0;break;case 32:t=g?0:1;break;default:t=i.get(o)}1===t&&(n.push(et._createLink(i,s,r,l,a)),e=!0)}else if(12===d){let t;91===o?(u=!0,t=0):t=i.get(o),1===t?e=!0:d=13}else d=t.nextState(d,o),0===d&&(e=!0);e&&(d=1,h=!1,u=!1,f=!1,l=a+1,c=o),a++}13===d&&n.push(et._createLink(i,s,r,l,o))}return n}}class tt{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,i,n,r){if(e&&t){let i=this.doNavigateValueSet(t,r);if(i)return{range:e,value:i}}if(i&&n){let e=this.doNavigateValueSet(n,r);if(e)return{range:i,value:e}}return null}doNavigateValueSet(e,t){let i=this.numberReplace(e,t);return null!==i?i:this.textReplace(e,t)}numberReplace(e,t){let i=Math.pow(10,e.length-(e.lastIndexOf(".")+1)),n=Number(e),r=parseFloat(e);return isNaN(n)||isNaN(r)||n!==r?null:0!==n||t?(n=Math.floor(n*i),n+=t?i:-i,String(n/i)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,i){let n=null;for(let r=0,s=e.length;null===n&&r<s;r++)n=this.valueSetReplace(e[r],t,i);return n}valueSetReplace(e,t,i){let n=e.indexOf(t);return n>=0?(n+=i?1:-1,n<0?n=e.length-1:n%=e.length,e[n]):null}}tt.INSTANCE=new tt;var it=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class nt extends class{constructor(e,t,i,n){this._uri=e,this._lines=t,this._eol=i,this._versionId=n,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}getText(){return null===this._cachedTextValue&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const e of t)this._acceptDeleteRange(e.range),this._acceptInsertText(new H.L(e.range.startLineNumber,e.range.startColumn),e.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,i=new Uint32Array(t);for(let n=0;n<t;n++)i[n]=this._lines[n].length+e;this._lineStarts=new Ke.o(i)}}_setLineText(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.changeValue(e,this._lines[e].length+this._eol.length)}_acceptDeleteRange(e){if(e.startLineNumber!==e.endLineNumber)this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber);else{if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1))}}_acceptInsertText(e,t){if(0===t.length)return;let i=t.split(/\r\n|\r|\n/);if(1===i.length)return void this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]+this._lines[e.lineNumber-1].substring(e.column-1));i[i.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+i[0]);let n=new Uint32Array(i.length-1);for(let t=1;t<i.length;t++)this._lines.splice(e.lineNumber+t-1,0,i[t]),n[t-1]=i[t].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,n)}}{get uri(){return this._uri}get version(){return this._versionId}get eol(){return this._eol}getValue(){return this.getText()}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(e){return this._lines[e-1]}getWordAtPosition(e,t){let i=(0,qe.t2)(e.column,(0,qe.eq)(t),this._lines[e.lineNumber-1],0);return i?new j.e(e.lineNumber,i.startColumn,e.lineNumber,i.endColumn):null}words(e){const t=this._lines,i=this._wordenize.bind(this);let n=0,r="",s=0,o=[];return{*[Symbol.iterator](){for(;;)if(s<o.length){const e=r.substring(o[s].start,o[s].end);s+=1,yield e}else{if(!(n<t.length))break;r=t[n],o=i(r,e),s=0,n+=1}}}}getLineWords(e,t){let i=this._lines[e-1],n=this._wordenize(i,t),r=[];for(const e of n)r.push({word:i.substring(e.start,e.end),startColumn:e.start+1,endColumn:e.end+1});return r}_wordenize(e,t){const i=[];let n;for(t.lastIndex=0;(n=t.exec(e))&&0!==n[0].length;)i.push({start:n.index,end:n.index+n[0].length});return i}getValueInRange(e){if((e=this._validateRange(e)).startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);let t=this._eol,i=e.startLineNumber-1,n=e.endLineNumber-1,r=[];r.push(this._lines[i].substring(e.startColumn-1));for(let e=i+1;e<n;e++)r.push(this._lines[e]);return r.push(this._lines[n].substring(0,e.endColumn-1)),r.join(t)}offsetAt(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getAccumulatedValue(e.lineNumber-2)+(e.column-1)}positionAt(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();let t=this._lineStarts.getIndexOf(e),i=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,i)}}_validateRange(e){const t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),i=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||i.lineNumber!==e.endLineNumber||i.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:i.lineNumber,endColumn:i.column}:e}_validatePosition(e){if(!H.L.isIPosition(e))throw new Error("bad position");let{lineNumber:t,column:i}=e,n=!1;if(t<1)t=1,i=1,n=!0;else if(t>this._lines.length)t=this._lines.length,i=this._lines[t-1].length+1,n=!0;else{let e=this._lines[t-1].length+1;i<1?(i=1,n=!0):i>e&&(i=e,n=!0)}return n?{lineNumber:t,column:i}:e}}class rt{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){let e=[];return Object.keys(this._models).forEach((t=>e.push(this._models[t]))),e}acceptNewModel(e){this._models[e.url]=new nt(Y.o.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){this._models[e]&&this._models[e].onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}computeDiff(e,t,i,n){return it(this,void 0,void 0,(function*(){const r=this._getModel(e),s=this._getModel(t);if(!r||!s)return null;const o=r.getLinesContent(),a=s.getLinesContent(),l=new Ve(o,a,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:i,shouldMakePrettyDiff:!0,maxComputationTime:n}).computeDiff(),c=!(l.changes.length>0)&&this._modelsAreIdentical(r,s);return{quitEarly:l.quitEarly,identical:c,changes:l.changes}}))}_modelsAreIdentical(e,t){const i=e.getLineCount();if(i!==t.getLineCount())return!1;for(let n=1;n<=i;n++)if(e.getLineContent(n)!==t.getLineContent(n))return!1;return!0}computeMoreMinimalEdits(e,t){return it(this,void 0,void 0,(function*(){const i=this._getModel(e);if(!i)return t;const n=[];let r;t=(0,De.qt)(t,((e,t)=>e.range&&t.range?j.e.compareRangesUsingStarts(e.range,t.range):(e.range?0:1)-(t.range?0:1)));for(let{range:e,text:s,eol:o}of t){if("number"==typeof o&&(r=o),j.e.isEmpty(e)&&!s)continue;const t=i.getValueInRange(e);if(s=s.replace(/\r\n|\n|\r/g,i.eol),t===s)continue;if(Math.max(s.length,t.length)>rt._diffLimit){n.push({range:e,text:s});continue}const a=Ie(t,s,!1),l=i.offsetAt(j.e.lift(e).getStartPosition());for(const e of a){const t=i.positionAt(l+e.originalStart),r=i.positionAt(l+e.originalStart+e.originalLength),o={text:s.substr(e.modifiedStart,e.modifiedLength),range:{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:r.lineNumber,endColumn:r.column}};i.getValueInRange(o.range)!==o.text&&n.push(o)}}return"number"==typeof r&&n.push({eol:r,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),n}))}computeLinks(e){return it(this,void 0,void 0,(function*(){let t=this._getModel(e);return t?function(e){return e&&"function"==typeof e.getLineCount&&"function"==typeof e.getLineContent?et.computeLinks(e):[]}(t):null}))}textualSuggest(e,t,i,n){return it(this,void 0,void 0,(function*(){const r=this._getModel(e);if(!r)return null;const s=[],o=new Set,a=new RegExp(i,n),l=r.getWordAtPosition(t,a);l&&o.add(r.getValueInRange(l));for(let e of r.words(a))if(!o.has(e)&&(o.add(e),isNaN(Number(e))&&(s.push(e),o.size>rt._suggestionsLimit)))break;return s}))}computeWordRanges(e,t,i,n){return it(this,void 0,void 0,(function*(){let r=this._getModel(e);if(!r)return Object.create(null);const s=new RegExp(i,n),o=Object.create(null);for(let e=t.startLineNumber;e<t.endLineNumber;e++){let t=r.getLineWords(e,s);for(const i of t){if(!isNaN(Number(i.word)))continue;let t=o[i.word];t||(t=[],o[i.word]=t),t.push({startLineNumber:e,startColumn:i.startColumn,endLineNumber:e,endColumn:i.endColumn})}}return o}))}navigateValueSet(e,t,i,n,r){return it(this,void 0,void 0,(function*(){let s=this._getModel(e);if(!s)return null;let o=new RegExp(n,r);t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1});let a=s.getValueInRange(t),l=s.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},o);if(!l)return null;let c=s.getValueInRange(l);return tt.INSTANCE.navigateValueSet(t,a,l,c,i)}))}loadForeignModule(e,t,i){let n={host:ye.IU(i,((e,t)=>this._host.fhr(e,t))),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(n,t),Promise.resolve(ye.$E(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||"function"!=typeof this._foreignModule[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(e){return Promise.reject(e)}}}rt._diffLimit=1e5,rt._suggestionsLimit=1e4,"function"==typeof importScripts&&(ve.li.monaco=$());var st=i(51200),ot=i(33187),at=i(43557),lt=i(84013),ct=function(e,t){return function(i,n){t(i,n,e)}};function dt(e,t){let i=e.getModel(t);return!!i&&!i.isTooLargeForSyncing()}let ht=class extends _e.JT{constructor(e,t,i){super(),this._modelService=e,this._workerManager=this._register(new gt(this._modelService)),this._logService=i,this._register(ue.pM.register("*",{provideLinks:(e,t)=>dt(this._modelService,e.uri)?this._workerManager.withWorker().then((t=>t.computeLinks(e.uri))).then((e=>e&&{links:e})):Promise.resolve({links:[]})})),this._register(ue.KZ.register("*",new ut(this._workerManager,t,this._modelService)))}dispose(){super.dispose()}canComputeDiff(e,t){return dt(this._modelService,e)&&dt(this._modelService,t)}computeDiff(e,t,i,n){return this._workerManager.withWorker().then((r=>r.computeDiff(e,t,i,n)))}computeMoreMinimalEdits(e,t){if((0,De.Of)(t)){if(!dt(this._modelService,e))return Promise.resolve(t);const i=lt.G.create(!0),n=this._workerManager.withWorker().then((i=>i.computeMoreMinimalEdits(e,t)));return n.finally((()=>this._logService.trace("FORMAT#computeMoreMinimalEdits",e.toString(!0),i.elapsed()))),n}return Promise.resolve(void 0)}canNavigateValueSet(e){return dt(this._modelService,e)}navigateValueSet(e,t,i){return this._workerManager.withWorker().then((n=>n.navigateValueSet(e,t,i)))}canComputeWordRanges(e){return dt(this._modelService,e)}computeWordRanges(e,t){return this._workerManager.withWorker().then((i=>i.computeWordRanges(e,t)))}};ht=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([ct(0,st.q),ct(1,ot.V),ct(2,at.VZ)],ht);class ut{constructor(e,t,i){this._debugDisplayName="wordbasedCompletions",this._workerManager=e,this._configurationService=t,this._modelService=i}provideCompletionItems(e,t){return i=this,n=void 0,s=function*(){const{wordBasedSuggestions:i}=this._configurationService.getValue(e.uri,t,"editor");if(!i)return;if(!dt(this._modelService,e.uri))return;const n=e.getWordAtPosition(t),r=n?new j.e(t.lineNumber,n.startColumn,t.lineNumber,n.endColumn):j.e.fromPositions(t),s=r.setEndPosition(t.lineNumber,t.column),o=yield this._workerManager.withWorker(),a=yield o.textualSuggest(e.uri,t);return a?{suggestions:a.map((e=>({kind:18,label:e,insertText:e,range:{insert:s,replace:r}})))}:void 0},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s}}class gt extends _e.JT{constructor(e){super(),this._modelService=e,this._editorWorkerClient=null,this._lastWorkerUsedTime=(new Date).getTime(),this._register(new me.zh).cancelAndSet((()=>this._checkStopIdleWorker()),Math.round(15e4)),this._register(this._modelService.onModelRemoved((e=>this._checkStopEmptyWorker())))}dispose(){this._editorWorkerClient&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null),super.dispose()}_checkStopEmptyWorker(){this._editorWorkerClient&&0===this._modelService.getModels().length&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}_checkStopIdleWorker(){this._editorWorkerClient&&(new Date).getTime()-this._lastWorkerUsedTime>3e5&&(this._editorWorkerClient.dispose(),this._editorWorkerClient=null)}withWorker(){return this._lastWorkerUsedTime=(new Date).getTime(),this._editorWorkerClient||(this._editorWorkerClient=new _t(this._modelService,!1,"editorWorkerService")),Promise.resolve(this._editorWorkerClient)}}class ft extends _e.JT{constructor(e,t,i){if(super(),this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),this._proxy=e,this._modelService=t,!i){let e=new me.zh;e.cancelAndSet((()=>this._checkStopModelSync()),Math.round(3e4)),this._register(e)}}dispose(){for(let e in this._syncedModels)(0,_e.B9)(this._syncedModels[e]);this._syncedModels=Object.create(null),this._syncedModelsLastUsedTime=Object.create(null),super.dispose()}ensureSyncedResources(e){for(const t of e){let e=t.toString();this._syncedModels[e]||this._beginModelSync(t),this._syncedModels[e]&&(this._syncedModelsLastUsedTime[e]=(new Date).getTime())}}_checkStopModelSync(){let e=(new Date).getTime(),t=[];for(let i in this._syncedModelsLastUsedTime)e-this._syncedModelsLastUsedTime[i]>6e4&&t.push(i);for(const e of t)this._stopModelSync(e)}_beginModelSync(e){let t=this._modelService.getModel(e);if(!t)return;if(t.isTooLargeForSyncing())return;let i=e.toString();this._proxy.acceptNewModel({url:t.uri.toString(),lines:t.getLinesContent(),EOL:t.getEOL(),versionId:t.getVersionId()});const n=new _e.SL;n.add(t.onDidChangeContent((e=>{this._proxy.acceptModelChanged(i.toString(),e)}))),n.add(t.onWillDispose((()=>{this._stopModelSync(i)}))),n.add((0,_e.OF)((()=>{this._proxy.acceptRemovedModel(i)}))),this._syncedModels[i]=n}_stopModelSync(e){let t=this._syncedModels[e];delete this._syncedModels[e],delete this._syncedModelsLastUsedTime[e],(0,_e.B9)(t)}}class pt{constructor(e){this._instance=e,this._proxyObj=Promise.resolve(this._instance)}dispose(){this._instance.dispose()}getProxyObject(){return this._proxyObj}}class mt{constructor(e){this._workerClient=e}fhr(e,t){return this._workerClient.fhr(e,t)}}class _t extends _e.JT{constructor(e,t,i){super(),this._disposed=!1,this._modelService=e,this._keepIdleModels=t,this._workerFactory=new Le(i),this._worker=null,this._modelManager=null}fhr(e,t){throw new Error("Not implemented!")}_getOrCreateWorker(){if(!this._worker)try{this._worker=this._register(new ke(this._workerFactory,"vs/editor/common/services/editorSimpleWorker",new mt(this)))}catch(e){Ce(e),this._worker=new pt(new rt(new mt(this),null))}return this._worker}_getProxy(){return this._getOrCreateWorker().getProxyObject().then(void 0,(e=>(Ce(e),this._worker=new pt(new rt(new mt(this),null)),this._getOrCreateWorker().getProxyObject())))}_getOrCreateModelManager(e){return this._modelManager||(this._modelManager=this._register(new ft(e,this._modelService,this._keepIdleModels))),this._modelManager}_withSyncedResources(e){return this._disposed?Promise.reject((0,be.F0)()):this._getProxy().then((t=>(this._getOrCreateModelManager(t).ensureSyncedResources(e),t)))}computeDiff(e,t,i,n){return this._withSyncedResources([e,t]).then((r=>r.computeDiff(e.toString(),t.toString(),i,n)))}computeMoreMinimalEdits(e,t){return this._withSyncedResources([e]).then((i=>i.computeMoreMinimalEdits(e.toString(),t)))}computeLinks(e){return this._withSyncedResources([e]).then((t=>t.computeLinks(e.toString())))}textualSuggest(e,t){return this._withSyncedResources([e]).then((i=>{let n=this._modelService.getModel(e);if(!n)return null;let r=Me.zu.getWordDefinition(n.getLanguageIdentifier().id),s=r.source,o=(0,Fe.mr)(r);return i.textualSuggest(e.toString(),t,s,o)}))}computeWordRanges(e,t){return this._withSyncedResources([e]).then((i=>{let n=this._modelService.getModel(e);if(!n)return Promise.resolve(null);let r=Me.zu.getWordDefinition(n.getLanguageIdentifier().id),s=r.source,o=(0,Fe.mr)(r);return i.computeWordRanges(e.toString(),t,s,o)}))}navigateValueSet(e,t,i){return this._withSyncedResources([e]).then((n=>{let r=this._modelService.getModel(e);if(!r)return null;let s=Me.zu.getWordDefinition(r.getLanguageIdentifier().id),o=s.source,a=(0,Fe.mr)(s);return n.navigateValueSet(e.toString(),t,i,o,a)}))}dispose(){super.dispose(),this._disposed=!0}}class bt extends _t{constructor(e,t){super(e,t.keepIdleModels||!1,t.label),this._foreignModuleId=t.moduleId,this._foreignModuleCreateData=t.createData||null,this._foreignModuleHost=t.host||null,this._foreignProxy=null}fhr(e,t){if(!this._foreignModuleHost||"function"!=typeof this._foreignModuleHost[e])return Promise.reject(new Error("Missing method "+e+" or missing main thread foreign host."));try{return Promise.resolve(this._foreignModuleHost[e].apply(this._foreignModuleHost,t))}catch(e){return Promise.reject(e)}}_getForeignProxy(){return this._foreignProxy||(this._foreignProxy=this._getProxy().then((e=>{const t=this._foreignModuleHost?ye.$E(this._foreignModuleHost):[];return e.loadForeignModule(this._foreignModuleId,this._foreignModuleCreateData,t).then((t=>{this._foreignModuleCreateData=null;const i=(t,i)=>e.fmr(t,i),n=(e,t)=>function(){const i=Array.prototype.slice.call(arguments,0);return t(e,i)};let r={};for(const e of t)r[e]=n(e,i);return r}))}))),this._foreignProxy}getProxy(){return this._getForeignProxy()}withSyncedResources(e){return this._withSyncedResources(e).then((e=>this.getProxy()))}}var vt=i(78411),yt=i(77736),wt=i(13824);function Ct(e){return"string"==typeof e}function St(e){return!Ct(e)}function kt(e){return!e}function xt(e,t){return e.ignoreCase&&t?t.toLowerCase():t}function Lt(e){return e.replace(/[&<>'"_]/g,"-")}function Mt(e,t){return new Error(`${e.languageId}: ${t}`)}function Dt(e,t,i,n,r){let s=null;return t.replace(/\$((\$)|(#)|(\d\d?)|[sS](\d\d?)|@(\w+))/g,(function(t,o,a,l,c,d,h,u,g){return kt(a)?kt(l)?!kt(c)&&c<n.length?xt(e,n[c]):!kt(h)&&e&&"string"==typeof e[h]?e[h]:(null===s&&(s=r.split("."),s.unshift(r)),!kt(d)&&d<s.length?xt(e,s[d]):""):xt(e,i):"$"}))}function Nt(e,t){let i=t;for(;i&&i.length>0;){const t=e.tokenizer[i];if(t)return t;const n=i.lastIndexOf(".");i=n<0?null:i.substr(0,n)}return null}class Et{constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}static create(e,t){return this._INSTANCE.create(e,t)}create(e,t){if(null!==e&&e.depth>=this._maxCacheDepth)return new Tt(e,t);let i=Tt.getStackElementId(e);i.length>0&&(i+="|"),i+=t;let n=this._entries[i];return n||(n=new Tt(e,t),this._entries[i]=n,n)}}Et._INSTANCE=new Et(5);class Tt{constructor(e,t){this.parent=e,this.state=t,this.depth=(this.parent?this.parent.depth:0)+1}static getStackElementId(e){let t="";for(;null!==e;)t.length>0&&(t+="|"),t+=e.state,e=e.parent;return t}static _equals(e,t){for(;null!==e&&null!==t;){if(e===t)return!0;if(e.state!==t.state)return!1;e=e.parent,t=t.parent}return null===e&&null===t}equals(e){return Tt._equals(this,e)}push(e){return Et.create(this,e)}pop(){return this.parent}popall(){let e=this;for(;e.parent;)e=e.parent;return e}switchTo(e){return Et.create(this.parent,e)}}class It{constructor(e,t){this.modeId=e,this.state=t}equals(e){return this.modeId===e.modeId&&this.state.equals(e.state)}clone(){return this.state.clone()===this.state?this:new It(this.modeId,this.state)}}class Ot{constructor(e){this._maxCacheDepth=e,this._entries=Object.create(null)}static create(e,t){return this._INSTANCE.create(e,t)}create(e,t){if(null!==t)return new At(e,t);if(null!==e&&e.depth>=this._maxCacheDepth)return new At(e,t);let i=Tt.getStackElementId(e),n=this._entries[i];return n||(n=new At(e,null),this._entries[i]=n,n)}}Ot._INSTANCE=new Ot(5);class At{constructor(e,t){this.stack=e,this.embeddedModeData=t}clone(){return(this.embeddedModeData?this.embeddedModeData.clone():null)===this.embeddedModeData?this:Ot.create(this.stack,this.embeddedModeData)}equals(e){return e instanceof At&&!!this.stack.equals(e.stack)&&(null===this.embeddedModeData&&null===e.embeddedModeData||null!==this.embeddedModeData&&null!==e.embeddedModeData&&this.embeddedModeData.equals(e.embeddedModeData))}}class Rt{constructor(){this._tokens=[],this._language=null,this._lastTokenType=null,this._lastTokenLanguage=null}enterMode(e,t){this._language=t}emit(e,t){this._lastTokenType===t&&this._lastTokenLanguage===this._language||(this._lastTokenType=t,this._lastTokenLanguage=this._language,this._tokens.push(new z.WU(e,t,this._language)))}nestedModeTokenize(e,t,i){const n=t.modeId,r=t.state,s=ue.RW.get(n);if(!s)return this.enterMode(i,n),this.emit(i,""),r;let o=s.tokenize(e,r,i);return this._tokens=this._tokens.concat(o.tokens),this._lastTokenType=null,this._lastTokenLanguage=null,this._language=null,o.endState}finalize(e){return new z.hG(this._tokens,e)}}class Pt{constructor(e,t){this._modeService=e,this._theme=t,this._prependTokens=null,this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0}enterMode(e,t){this._currentLanguageId=this._modeService.getLanguageIdentifier(t).id}emit(e,t){let i=this._theme.match(this._currentLanguageId,t);this._lastTokenMetadata!==i&&(this._lastTokenMetadata=i,this._tokens.push(e),this._tokens.push(i))}static _merge(e,t,i){let n=null!==e?e.length:0,r=t.length,s=null!==i?i.length:0;if(0===n&&0===r&&0===s)return new Uint32Array(0);if(0===n&&0===r)return i;if(0===r&&0===s)return e;let o=new Uint32Array(n+r+s);null!==e&&o.set(e);for(let e=0;e<r;e++)o[n+e]=t[e];return null!==i&&o.set(i,n+r),o}nestedModeTokenize(e,t,i){const n=t.modeId,r=t.state,s=ue.RW.get(n);if(!s)return this.enterMode(i,n),this.emit(i,""),r;let o=s.tokenize2(e,r,i);return this._prependTokens=Pt._merge(this._prependTokens,this._tokens,o.tokens),this._tokens=[],this._currentLanguageId=0,this._lastTokenMetadata=0,o.endState}finalize(e){return new z.Hi(Pt._merge(this._prependTokens,this._tokens,null),e)}}class Ft{constructor(e,t,i,n){this._modeService=e,this._standaloneThemeService=t,this._modeId=i,this._lexer=n,this._embeddedModes=Object.create(null),this.embeddedLoaded=Promise.resolve(void 0);let r=!1;this._tokenizationRegistryListener=ue.RW.onDidChange((e=>{if(r)return;let t=!1;for(let i=0,n=e.changedLanguages.length;i<n;i++){let n=e.changedLanguages[i];if(this._embeddedModes[n]){t=!0;break}}t&&(r=!0,ue.RW.fire([this._modeId]),r=!1)}))}dispose(){this._tokenizationRegistryListener.dispose()}getLoadStatus(){let e=[];for(let t in this._embeddedModes){const i=ue.RW.get(t);if(i){if(i instanceof Ft){const t=i.getLoadStatus();!1===t.loaded&&e.push(t.promise)}continue}const n=ue.RW.getPromise(t);n&&e.push(n)}return 0===e.length?{loaded:!0}:{loaded:!1,promise:Promise.all(e).then((e=>{}))}}getInitialState(){let e=Et.create(null,this._lexer.start);return Ot.create(e,null)}tokenize(e,t,i){let n=new Rt,r=this._tokenize(e,t,i,n);return n.finalize(r)}tokenize2(e,t,i){let n=new Pt(this._modeService,this._standaloneThemeService.getColorTheme().tokenTheme),r=this._tokenize(e,t,i,n);return n.finalize(r)}_tokenize(e,t,i,n){return t.embeddedModeData?this._nestedTokenize(e,t,i,n):this._myTokenize(e,t,i,n)}_findLeavingNestedModeOffset(e,t){let i=this._lexer.tokenizer[t.stack.state];if(!i&&(i=Nt(this._lexer,t.stack.state),!i))throw Mt(this._lexer,"tokenizer state is not defined: "+t.stack.state);let n=-1,r=!1;for(const t of i){if(!St(t.action)||"@pop"!==t.action.nextEmbedded)continue;r=!0;let i=t.regex,s=t.regex.source;if("^(?:"===s.substr(0,4)&&")"===s.substr(s.length-1,1)){let e=(i.ignoreCase?"i":"")+(i.unicode?"u":"");i=new RegExp(s.substr(4,s.length-5),e)}let o=e.search(i);-1===o||0!==o&&t.matchOnlyAtLineStart||(-1===n||o<n)&&(n=o)}if(!r)throw Mt(this._lexer,'no rule containing nextEmbedded: "@pop" in tokenizer embedded state: '+t.stack.state);return n}_nestedTokenize(e,t,i,n){let r=this._findLeavingNestedModeOffset(e,t);if(-1===r){let r=n.nestedModeTokenize(e,t.embeddedModeData,i);return Ot.create(t.stack,new It(t.embeddedModeData.modeId,r))}let s=e.substring(0,r);s.length>0&&n.nestedModeTokenize(s,t.embeddedModeData,i);let o=e.substring(r);return this._myTokenize(o,t,i+r,n)}_safeRuleName(e){return e?e.name:"(unknown)"}_myTokenize(e,t,i,n){n.enterMode(i,this._modeId);const r=e.length;let s=t.embeddedModeData,o=t.stack,a=0,l=null,c=!0;for(;c||a<r;){const t=a,u=o.depth,g=l?l.groups.length:0,f=o.state;let p=null,m=null,_=null,b=null,v=null;if(l){p=l.matches;const e=l.groups.shift();m=e.matched,_=e.action,b=l.rule,0===l.groups.length&&(l=null)}else{if(!c&&a>=r)break;c=!1;let t=this._lexer.tokenizer[f];if(!t&&(t=Nt(this._lexer,f),!t))throw Mt(this._lexer,"tokenizer state is not defined: "+f);let i=e.substr(a);for(const e of t)if((0===a||!e.matchOnlyAtLineStart)&&(p=i.match(e.regex),p)){m=p[0],_=e.action;break}}if(p||(p=[""],m=""),_||(a<r&&(p=[e.charAt(a)],m=p[0]),_=this._lexer.defaultToken),null===m)break;for(a+=m.length;!function(e){return Array.isArray(e)}(_)&&St(_)&&_.test;)_=_.test(m,p,f,a===r);let y=null;if("string"==typeof _||Array.isArray(_))y=_;else if(_.group)y=_.group;else if(null!==_.token&&void 0!==_.token){if(y=_.tokenSubst?Dt(this._lexer,_.token,m,p,f):_.token,_.nextEmbedded)if("@pop"===_.nextEmbedded){if(!s)throw Mt(this._lexer,"cannot pop embedded mode if not inside one");s=null}else{if(s)throw Mt(this._lexer,"cannot enter embedded mode from within an embedded mode");v=Dt(this._lexer,_.nextEmbedded,m,p,f)}if(_.goBack&&(a=Math.max(0,a-_.goBack)),_.switchTo&&"string"==typeof _.switchTo){let e=Dt(this._lexer,_.switchTo,m,p,f);if("@"===e[0]&&(e=e.substr(1)),!Nt(this._lexer,e))throw Mt(this._lexer,"trying to switch to a state '"+e+"' that is undefined in rule: "+this._safeRuleName(b));o=o.switchTo(e)}else{if(_.transform&&"function"==typeof _.transform)throw Mt(this._lexer,"action.transform not supported");if(_.next)if("@push"===_.next){if(o.depth>=this._lexer.maxStack)throw Mt(this._lexer,"maximum tokenizer stack size reached: ["+o.state+","+o.parent.state+",...]");o=o.push(f)}else if("@pop"===_.next){if(o.depth<=1)throw Mt(this._lexer,"trying to pop an empty stack in rule: "+this._safeRuleName(b));o=o.pop()}else if("@popall"===_.next)o=o.popall();else{let e=Dt(this._lexer,_.next,m,p,f);if("@"===e[0]&&(e=e.substr(1)),!Nt(this._lexer,e))throw Mt(this._lexer,"trying to set a next state '"+e+"' that is undefined in rule: "+this._safeRuleName(b));o=o.push(e)}}_.log&&"string"==typeof _.log&&(d=this._lexer,h=this._lexer.languageId+": "+Dt(this._lexer,_.log,m,p,f),console.log(`${d.languageId}: ${h}`))}if(null===y)throw Mt(this._lexer,"lexer rule has no well-defined action in rule: "+this._safeRuleName(b));const w=t=>{let s=this._modeService.getModeIdForLanguageName(t);s&&(t=s);const l=this._getNestedEmbeddedModeData(t);if(a<r){const t=e.substr(a);return this._nestedTokenize(t,Ot.create(o,l),i+a,n)}return Ot.create(o,l)};if(Array.isArray(y)){if(l&&l.groups.length>0)throw Mt(this._lexer,"groups cannot be nested: "+this._safeRuleName(b));if(p.length!==y.length+1)throw Mt(this._lexer,"matched number of groups does not match the number of actions in rule: "+this._safeRuleName(b));let e=0;for(let t=1;t<p.length;t++)e+=p[t].length;if(e!==m.length)throw Mt(this._lexer,"with groups, all characters should be matched in consecutive groups in rule: "+this._safeRuleName(b));l={rule:b,matches:p,groups:[]};for(let e=0;e<y.length;e++)l.groups[e]={action:y[e],matched:p[e+1]};a-=m.length}else{{if("@rematch"===y&&(a-=m.length,m="",p=null,y="",null!==v))return w(v);if(0===m.length){if(0===r||u!==o.depth||f!==o.state||(l?l.groups.length:0)!==g)continue;throw Mt(this._lexer,"no progress in tokenizer in rule: "+this._safeRuleName(b))}let e=null;if(Ct(y)&&0===y.indexOf("@brackets")){let t=y.substr("@brackets".length),i=Bt(this._lexer,m);if(!i)throw Mt(this._lexer,"@brackets token returned but no bracket defined as: "+m);e=Lt(i.token+t)}else e=Lt(""===y?"":y+this._lexer.tokenPostfix);n.emit(t+i,e)}if(null!==v)return w(v)}}var d,h;return Ot.create(o,s)}_getNestedEmbeddedModeData(e){let t=this._locateMode(e);if(t){let e=ue.RW.get(t);if(e)return new It(t,e.getInitialState())}return new It(t||ge.TG,ge.nO)}_locateMode(e){if(!e||!this._modeService.isRegisteredMode(e))return null;if(e===this._modeId)return e;let t=this._modeService.getModeId(e);return t&&(this._modeService.triggerMode(t),this._embeddedModes[t]=!0),t}}function Bt(e,t){if(!t)return null;t=xt(e,t);let i=e.brackets;for(const e of i){if(e.open===t)return{token:e.token,bracketType:1};if(e.close===t)return{token:e.token,bracketType:-1}}return null}class Wt{static colorizeElement(e,t,i,n){let r=(n=n||{}).theme||"vs",s=n.mimeType||i.getAttribute("lang")||i.getAttribute("data-lang");if(!s)return console.error("Mode not detected"),Promise.resolve();e.setTheme(r);let o=i.firstChild?i.firstChild.nodeValue:"";return i.className+=" "+r,this.colorize(t,o||"",s,n).then((e=>{i.innerHTML=e}),(e=>console.error(e)))}static colorize(e,t,i,n){let r=4;n&&"number"==typeof n.tabSize&&(r=n.tabSize),Fe.uS(t)&&(t=t.substr(1));let s=t.split(/\r\n|\r|\n/),o=e.getModeId(i);if(!o)return Promise.resolve(Ht(s,r));e.triggerMode(o);const a=ue.RW.get(o);if(a)return Yt(s,r,a);const l=ue.RW.getPromise(o);return new Promise(l?(e,t)=>{l.then((i=>{Yt(s,r,i).then(e,t)}),t)}:(e,t)=>{let i=null,n=null;const a=()=>{i&&(i.dispose(),i=null),n&&(n.dispose(),n=null);const a=ue.RW.get(o);a?Yt(s,r,a).then(e,t):e(Ht(s,r))};n=new me._F,n.cancelAndSet(a,500),i=ue.RW.onDidChange((e=>{e.changedLanguages.indexOf(o)>=0&&a()}))})}static colorizeLine(e,t,i,n,r=4){const s=wt.wA.isBasicASCII(e,t),o=wt.wA.containsRTL(e,s,i);return(0,yt.tF)(new yt.IJ(!1,!0,e,!1,s,o,0,n,[],r,0,0,0,0,-1,"none",!1,!1,null)).html}static colorizeModelLine(e,t,i=4){let n=e.getLineContent(t);e.forceTokenization(t);let r=e.getLineTokens(t).inflate();return this.colorizeLine(n,e.mightContainNonBasicASCII(),e.mightContainRTL(),r,i)}}function Yt(e,t,i){return new Promise(((n,r)=>{const s=()=>{const o=function(e,t,i){let n=[],r=i.getInitialState();for(let s=0,o=e.length;s<o;s++){let o=e[s],a=i.tokenize2(o,r,0);vt.A.convertToEndOffset(a.tokens,o.length);let l=new vt.A(a.tokens,o);const c=wt.wA.isBasicASCII(o,!0),d=wt.wA.containsRTL(o,c,!0);let h=(0,yt.tF)(new yt.IJ(!1,!0,o,!1,c,d,0,l.inflate(),[],t,0,0,0,0,-1,"none",!1,!1,null));n=n.concat(h.html),n.push("<br/>"),r=a.endState}return n.join("")}(e,t,i);if(i instanceof Ft){const e=i.getLoadStatus();if(!1===e.loaded)return void e.promise.then(s,r)}n(o)};s()}))}function Ht(e,t){let i=[];const n=new Uint32Array(2);n[0]=0,n[1]=16793600;for(let r=0,s=e.length;r<s;r++){let s=e[r];n[0]=s.length;const o=new vt.A(n,s),a=wt.wA.isBasicASCII(s,!0),l=wt.wA.containsRTL(s,a,!0);let c=(0,yt.tF)(new yt.IJ(!1,!0,s,!1,a,l,0,o,[],t,0,0,0,0,-1,"none",!1,!1,null));i=i.concat(c.html),i.push("<br/>")}return i.join("")}var jt=i(59069),Vt=i(14603),zt=i(65520),Ut=i(66007),$t=i(56345),Kt=i(69386),qt=i(33108),Gt=i(43702),Zt=i(36248),Jt=i(23193);class Qt{constructor(e={},t=[],i=[]){this._contents=e,this._keys=t,this._overrides=i,this.isFrozen=!1}get contents(){return this.checkAndFreeze(this._contents)}get overrides(){return this.checkAndFreeze(this._overrides)}get keys(){return this.checkAndFreeze(this._keys)}isEmpty(){return 0===this._keys.length&&0===Object.keys(this._contents).length&&0===this._overrides.length}getValue(e){return e?(0,qt.Mt)(this.contents,e):this.contents}override(e){const t=this.getContentsForOverrideIdentifer(e);if(!t||"object"!=typeof t||!Object.keys(t).length)return this;let i={};for(const e of De.EB([...Object.keys(this.contents),...Object.keys(t)])){let n=this.contents[e],r=t[e];r&&("object"==typeof n&&"object"==typeof r?(n=Zt.I8(n),this.mergeContents(n,r)):n=r),i[e]=n}return new Qt(i,this.keys,this.overrides)}merge(...e){const t=Zt.I8(this.contents),i=Zt.I8(this.overrides),n=[...this.keys];for(const r of e){this.mergeContents(t,r.contents);for(const e of r.overrides){const[t]=i.filter((t=>De.fS(t.identifiers,e.identifiers)));t?this.mergeContents(t.contents,e.contents):i.push(Zt.I8(e))}for(const e of r.keys)-1===n.indexOf(e)&&n.push(e)}return new Qt(t,n,i)}freeze(){return this.isFrozen=!0,this}mergeContents(e,t){for(const i of Object.keys(t))i in e&&ye.Kn(e[i])&&ye.Kn(t[i])?this.mergeContents(e[i],t[i]):e[i]=Zt.I8(t[i])}checkAndFreeze(e){return this.isFrozen&&!Object.isFrozen(e)?Zt._A(e):e}getContentsForOverrideIdentifer(e){for(const t of this.overrides)if(-1!==t.identifiers.indexOf(e))return t.contents;return null}toJSON(){return{contents:this.contents,overrides:this.overrides,keys:this.keys}}setValue(e,t){this.addKey(e),(0,qt.KV)(this.contents,e,t,(e=>{throw new Error(e)}))}removeValue(e){this.removeKey(e)&&(0,qt.xL)(this.contents,e)}addKey(e){let t=this.keys.length;for(let i=0;i<t;i++)0===e.indexOf(this.keys[i])&&(t=i);this.keys.splice(t,1,e)}removeKey(e){let t=this.keys.indexOf(e);return-1!==t&&(this.keys.splice(t,1),!0)}}class Xt extends Qt{constructor(){const e=(0,qt.O4)(),t=(0,qt.MR)(),i=[];for(const t of Object.keys(e))Jt.G1.test(t)&&i.push({identifiers:[(0,Jt.Uh)(t).trim()],keys:Object.keys(e[t]),contents:(0,qt.Od)(e[t],(e=>console.error(`Conflict in default settings file: ${e}`)))});super(e,t,i)}}class ei{constructor(e,t,i=new Qt,n=new Qt,r=new Gt.Y9,s=new Qt,o=new Gt.Y9,a=!0){this._defaultConfiguration=e,this._localUserConfiguration=t,this._remoteUserConfiguration=i,this._workspaceConfiguration=n,this._folderConfigurations=r,this._memoryConfiguration=s,this._memoryConfigurationByResource=o,this._freeze=a,this._workspaceConsolidatedConfiguration=null,this._foldersConsolidatedConfigurations=new Gt.Y9,this._userConfiguration=null}getValue(e,t,i){return this.getConsolidateConfigurationModel(t,i).getValue(e)}updateValue(e,t,i={}){let n;i.resource?(n=this._memoryConfigurationByResource.get(i.resource),n||(n=new Qt,this._memoryConfigurationByResource.set(i.resource,n))):n=this._memoryConfiguration,void 0===t?n.removeValue(e):n.setValue(e,t),i.resource||(this._workspaceConsolidatedConfiguration=null)}get userConfiguration(){return this._userConfiguration||(this._userConfiguration=this._remoteUserConfiguration.isEmpty()?this._localUserConfiguration:this._localUserConfiguration.merge(this._remoteUserConfiguration),this._freeze&&this._userConfiguration.freeze()),this._userConfiguration}getConsolidateConfigurationModel(e,t){let i=this.getConsolidatedConfigurationModelForResource(e,t);return e.overrideIdentifier?i.override(e.overrideIdentifier):i}getConsolidatedConfigurationModelForResource({resource:e},t){let i=this.getWorkspaceConsolidatedConfiguration();if(t&&e){const n=t.getFolder(e);n&&(i=this.getFolderConsolidatedConfiguration(n.uri)||i);const r=this._memoryConfigurationByResource.get(e);r&&(i=i.merge(r))}return i}getWorkspaceConsolidatedConfiguration(){return this._workspaceConsolidatedConfiguration||(this._workspaceConsolidatedConfiguration=this._defaultConfiguration.merge(this.userConfiguration,this._workspaceConfiguration,this._memoryConfiguration),this._freeze&&(this._workspaceConfiguration=this._workspaceConfiguration.freeze())),this._workspaceConsolidatedConfiguration}getFolderConsolidatedConfiguration(e){let t=this._foldersConsolidatedConfigurations.get(e);if(!t){const i=this.getWorkspaceConsolidatedConfiguration(),n=this._folderConfigurations.get(e);n?(t=i.merge(n),this._freeze&&(t=t.freeze()),this._foldersConsolidatedConfigurations.set(e,t)):t=i}return t}toData(){return{defaults:{contents:this._defaultConfiguration.contents,overrides:this._defaultConfiguration.overrides,keys:this._defaultConfiguration.keys},user:{contents:this.userConfiguration.contents,overrides:this.userConfiguration.overrides,keys:this.userConfiguration.keys},workspace:{contents:this._workspaceConfiguration.contents,overrides:this._workspaceConfiguration.overrides,keys:this._workspaceConfiguration.keys},folders:[...this._folderConfigurations.keys()].reduce(((e,t)=>{const{contents:i,overrides:n,keys:r}=this._folderConfigurations.get(t);return e.push([t,{contents:i,overrides:n,keys:r}]),e}),[])}}static parse(e){const t=this.parseConfigurationModel(e.defaults),i=this.parseConfigurationModel(e.user),n=this.parseConfigurationModel(e.workspace),r=e.folders.reduce(((e,t)=>(e.set(Y.o.revive(t[0]),this.parseConfigurationModel(t[1])),e)),new Gt.Y9);return new ei(t,i,new Qt,n,r,new Qt,new Gt.Y9,!1)}static parseConfigurationModel(e){return new Qt(e.contents,e.keys,e.overrides).freeze()}}class ti{constructor(e,t,i,n){this.change=e,this.previous=t,this.currentConfiguraiton=i,this.currentWorkspace=n,this._previousConfiguration=void 0;const r=new Set;e.keys.forEach((e=>r.add(e))),e.overrides.forEach((([,e])=>e.forEach((e=>r.add(e))))),this.affectedKeys=[...r.values()];const s=new Qt;this.affectedKeys.forEach((e=>s.setValue(e,{}))),this.affectedKeysTree=s.contents}get previousConfiguration(){return!this._previousConfiguration&&this.previous&&(this._previousConfiguration=ei.parse(this.previous.data)),this._previousConfiguration}affectsConfiguration(e,t){var i;if(this.doesAffectedKeysTreeContains(this.affectedKeysTree,e)){if(t){const n=this.previousConfiguration?this.previousConfiguration.getValue(e,t,null===(i=this.previous)||void 0===i?void 0:i.workspace):void 0,r=this.currentConfiguraiton.getValue(e,t,this.currentWorkspace);return!Zt.fS(n,r)}return!0}return!1}doesAffectedKeysTreeContains(e,t){let i,n=(0,qt.Od)({[t]:!0},(()=>{}));for(;"object"==typeof n&&(i=Object.keys(n)[0]);){if(!(e=e[i]))return!1;n=n[i]}return!0}}var ii=i(63580);class ni extends _e.JT{constructor(e,t,i,n,r){super(),this._contextKeyService=e,this._commandService=t,this._telemetryService=i,this._notificationService=n,this._logService=r,this._onDidUpdateKeybindings=this._register(new B.Q5),this._currentChord=null,this._currentChordChecker=new me.zh,this._currentChordStatusMessage=null,this._logging=!1}get onDidUpdateKeybindings(){return this._onDidUpdateKeybindings?this._onDidUpdateKeybindings.event:B.ju.None}dispose(){super.dispose()}_log(e){this._logging&&this._logService.info(`[KeybindingService]: ${e}`)}getKeybindings(){return this._getResolver().getKeybindings()}lookupKeybindings(e){return De.kX(this._getResolver().lookupKeybindings(e).map((e=>e.resolvedKeybinding)))}lookupKeybinding(e){const t=this._getResolver().lookupPrimaryKeybinding(e);if(t)return t.resolvedKeybinding}dispatchEvent(e,t){return this._dispatch(e,t)}softDispatch(e,t){const i=this.resolveKeyboardEvent(e);if(i.isChord())return console.warn("Unexpected keyboard event mapped to a chord"),null;const[n]=i.getDispatchParts();if(null===n)return null;const r=this._contextKeyService.getContext(t),s=this._currentChord?this._currentChord.keypress:null;return this._getResolver().resolve(r,s,n)}_enterChordMode(e,t){this._currentChord={keypress:e,label:t},this._currentChordStatusMessage=this._notificationService.status(ii.N("first.chord","({0}) was pressed. Waiting for second key of chord...",t));const i=Date.now();this._currentChordChecker.cancelAndSet((()=>{this._documentHasFocus()?Date.now()-i>5e3&&this._leaveChordMode():this._leaveChordMode()}),500)}_leaveChordMode(){this._currentChordStatusMessage&&(this._currentChordStatusMessage.dispose(),this._currentChordStatusMessage=null),this._currentChordChecker.cancel(),this._currentChord=null}_dispatch(e,t){return this._doDispatch(this.resolveKeyboardEvent(e),t)}_doDispatch(e,t){let i=!1;if(e.isChord())return console.warn("Unexpected keyboard event mapped to a chord"),!1;const[n]=e.getDispatchParts();if(null===n)return this._log("\\ Keyboard event cannot be dispatched."),i;const r=this._contextKeyService.getContext(t),s=this._currentChord?this._currentChord.keypress:null,o=e.getLabel(),a=this._getResolver().resolve(r,s,n);return this._logService.trace("KeybindingService#dispatch",o,null==a?void 0:a.commandId),a&&a.enterChord?(i=!0,this._enterChordMode(n,o),i):(this._currentChord&&(a&&a.commandId||(this._notificationService.status(ii.N("missing.chord","The key combination ({0}, {1}) is not a command.",this._currentChord.label,o),{hideAfter:1e4}),i=!0)),this._leaveChordMode(),a&&a.commandId&&(a.bubble||(i=!0),void 0===a.commandArgs?this._commandService.executeCommand(a.commandId).then(void 0,(e=>this._notificationService.warn(e))):this._commandService.executeCommand(a.commandId,a.commandArgs).then(void 0,(e=>this._notificationService.warn(e))),this._telemetryService.publicLog2("workbenchActionExecuted",{id:a.commandId,from:"keybinding"})),i)}mightProducePrintableCharacter(e){return!e.ctrlKey&&!e.metaKey&&(e.keyCode>=31&&e.keyCode<=56||e.keyCode>=21&&e.keyCode<=30)}}class ri{constructor(e,t,i){this._log=i,this._defaultKeybindings=e,this._defaultBoundCommands=new Map;for(let t=0,i=e.length;t<i;t++){const i=e[t].command;i&&this._defaultBoundCommands.set(i,!0)}this._map=new Map,this._lookupMap=new Map,this._keybindings=ri.combine(e,t);for(let e=0,t=this._keybindings.length;e<t;e++){let t=this._keybindings[e];0!==t.keypressParts.length&&(t.when&&0===t.when.type||this._addKeyPress(t.keypressParts[0],t))}}static _isTargetedForRemoval(e,t,i,n,r){if(e.command!==n)return!1;if(t&&e.keypressParts[0]!==t)return!1;if(i&&e.keypressParts[1]!==i)return!1;if(r){if(!e.when)return!1;if(!r.equals(e.when))return!1}return!0}static combine(e,t){e=e.slice(0);let i=[];for(const n of t){if(!n.command||0===n.command.length||"-"!==n.command.charAt(0)){i.push(n);continue}const t=n.command.substr(1),r=n.keypressParts[0],s=n.keypressParts[1],o=n.when;for(let i=e.length-1;i>=0;i--)this._isTargetedForRemoval(e[i],r,s,t,o)&&e.splice(i,1)}return e.concat(i)}_addKeyPress(e,t){const i=this._map.get(e);if(void 0===i)return this._map.set(e,[t]),void this._addToLookupMap(t);for(let e=i.length-1;e>=0;e--){let n=i[e];if(n.command===t.command)continue;const r=n.keypressParts.length>1,s=t.keypressParts.length>1;r&&s&&n.keypressParts[1]!==t.keypressParts[1]||ri.whenIsEntirelyIncluded(n.when,t.when)&&this._removeFromLookupMap(n)}i.push(t),this._addToLookupMap(t)}_addToLookupMap(e){if(!e.command)return;let t=this._lookupMap.get(e.command);void 0===t?(t=[e],this._lookupMap.set(e.command,t)):t.push(e)}_removeFromLookupMap(e){if(!e.command)return;let t=this._lookupMap.get(e.command);if(void 0!==t)for(let i=0,n=t.length;i<n;i++)if(t[i]===e)return void t.splice(i,1)}static whenIsEntirelyIncluded(e,t){return!t||!!e&&this._implies(e,t)}static _implies(e,t){const i=e=>9===e.type?e.expr:[e];let n=i(e.negate()).concat(i(t));for(let e=0;e<n.length;e++){const t=n[e].negate();for(let i=e+1;i<n.length;i++){const e=n[i];if(t.equals(e))return!0}}return!1}getKeybindings(){return this._keybindings}lookupKeybindings(e){let t=this._lookupMap.get(e);if(void 0===t||0===t.length)return[];let i=[],n=0;for(let e=t.length-1;e>=0;e--)i[n++]=t[e];return i}lookupPrimaryKeybinding(e){let t=this._lookupMap.get(e);return void 0===t||0===t.length?null:t[t.length-1]}resolve(e,t,i){this._log(`| Resolving ${i}${t?` chorded from ${t}`:""}`);let n=null;if(null!==t){const e=this._map.get(t);if(void 0===e)return this._log("\\ No keybinding entries."),null;n=[];for(let t=0,r=e.length;t<r;t++){let r=e[t];r.keypressParts[1]===i&&n.push(r)}}else{const e=this._map.get(i);if(void 0===e)return this._log("\\ No keybinding entries."),null;n=e}let r=this._findCommand(e,n);return r?null===t&&r.keypressParts.length>1&&null!==r.keypressParts[1]?(this._log(`\\ From ${n.length} keybinding entries, matched chord, when: ${si(r.when)}, source: ${oi(r)}.`),{enterChord:!0,leaveChord:!1,commandId:null,commandArgs:null,bubble:!1}):(this._log(`\\ From ${n.length} keybinding entries, matched ${r.command}, when: ${si(r.when)}, source: ${oi(r)}.`),{enterChord:!1,leaveChord:r.keypressParts.length>1,commandId:r.command,commandArgs:r.commandArgs,bubble:r.bubble}):(this._log(`\\ From ${n.length} keybinding entries, no when clauses matched the context.`),null)}_findCommand(e,t){for(let i=t.length-1;i>=0;i--){let n=t[i];if(ri.contextMatchesRules(e,n.when))return n}return null}static contextMatchesRules(e,t){return!t||t.evaluate(e)}}function si(e){return e?`${e.serialize()}`:"no when condition"}function oi(e){return e.isDefault?e.extensionId?`built-in extension ${e.extensionId}`:"built-in":e.extensionId?`user extension ${e.extensionId}`:"user"}var ai=i(49989);class li{constructor(e,t,i,n,r,s){this.resolvedKeybinding=e,this.keypressParts=e?function(e){let t=[];for(let i=0,n=e.length;i<n;i++){const n=e[i];if(!n)return t;t.push(n)}return t}(e.getDispatchParts()):[],this.bubble=!!t&&94===t.charCodeAt(0),this.command=this.bubble?t.substr(1):t,this.commandArgs=i,this.when=n,this.isDefault=r,this.extensionId=s}}class ci{constructor(e,t,i=t){this.modifierLabels=[null],this.modifierLabels[2]=e,this.modifierLabels[1]=t,this.modifierLabels[3]=i}toLabel(e,t,i){if(0===t.length)return null;const n=[];for(let r=0,s=t.length;r<s;r++){const s=t[r],o=i(s);if(null===o)return null;n[r]=ui(s,o,this.modifierLabels[e])}return n.join(" ")}}const di=new ci({ctrlKey:"⌃",shiftKey:"⇧",altKey:"⌥",metaKey:"⌘",separator:""},{ctrlKey:ii.N({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:ii.N({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:ii.N({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:ii.N({key:"windowsKey",comment:["This is the short form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:ii.N({key:"ctrlKey",comment:["This is the short form for the Control key on the keyboard"]},"Ctrl"),shiftKey:ii.N({key:"shiftKey",comment:["This is the short form for the Shift key on the keyboard"]},"Shift"),altKey:ii.N({key:"altKey",comment:["This is the short form for the Alt key on the keyboard"]},"Alt"),metaKey:ii.N({key:"superKey",comment:["This is the short form for the Super key on the keyboard"]},"Super"),separator:"+"}),hi=new ci({ctrlKey:ii.N({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:ii.N({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:ii.N({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:ii.N({key:"cmdKey.long",comment:["This is the long form for the Command key on the keyboard"]},"Command"),separator:"+"},{ctrlKey:ii.N({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:ii.N({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:ii.N({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:ii.N({key:"windowsKey.long",comment:["This is the long form for the Windows key on the keyboard"]},"Windows"),separator:"+"},{ctrlKey:ii.N({key:"ctrlKey.long",comment:["This is the long form for the Control key on the keyboard"]},"Control"),shiftKey:ii.N({key:"shiftKey.long",comment:["This is the long form for the Shift key on the keyboard"]},"Shift"),altKey:ii.N({key:"altKey.long",comment:["This is the long form for the Alt key on the keyboard"]},"Alt"),metaKey:ii.N({key:"superKey.long",comment:["This is the long form for the Super key on the keyboard"]},"Super"),separator:"+"});function ui(e,t,i){if(null===t)return"";const n=[];return e.ctrlKey&&n.push(i.ctrlKey),e.shiftKey&&n.push(i.shiftKey),e.altKey&&n.push(i.altKey),e.metaKey&&n.push(i.metaKey),""!==t&&n.push(t),n.join(i.separator)}class gi extends W.f1{constructor(e,t){if(super(),0===t.length)throw(0,be.b1)("parts");this._os=e,this._parts=t}getLabel(){return di.toLabel(this._os,this._parts,(e=>this._getLabel(e)))}getAriaLabel(){return hi.toLabel(this._os,this._parts,(e=>this._getAriaLabel(e)))}isChord(){return this._parts.length>1}getParts(){return this._parts.map((e=>this._getPart(e)))}_getPart(e){return new W.BQ(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,this._getLabel(e),this._getAriaLabel(e))}getDispatchParts(){return this._parts.map((e=>this._getDispatchPart(e)))}}class fi extends gi{constructor(e,t){super(t,e.parts)}_keyCodeToUILabel(e){if(2===this._os)switch(e){case 15:return"←";case 16:return"↑";case 17:return"→";case 18:return"↓"}return W.kL.toString(e)}_getLabel(e){return e.isDuplicateModifierCase()?"":this._keyCodeToUILabel(e.keyCode)}_getAriaLabel(e){return e.isDuplicateModifierCase()?"":W.kL.toString(e.keyCode)}_getDispatchPart(e){return fi.getDispatchStr(e)}static getDispatchStr(e){if(e.isModifierKey())return null;let t="";return e.ctrlKey&&(t+="ctrl+"),e.shiftKey&&(t+="shift+"),e.altKey&&(t+="alt+"),e.metaKey&&(t+="meta+"),t+=W.kL.toString(e.keyCode),t}}var pi=i(59422),mi=i(40382),_i=i(20913),bi=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},vi=function(e,t){return function(i,n){t(i,n,e)}};class yi{constructor(e){this.disposed=!1,this.model=e,this._onDispose=new B.Q5}get textEditorModel(){return this.model}dispose(){this.disposed=!0,this._onDispose.fire()}}let wi=class{constructor(e){this.modelService=e}setEditor(e){this.editor=e}createModelReference(e){let t=null;var i,n,r;return this.editor&&(i=this.editor,n=t=>this.findModel(t,e),r=t=>this.findModel(t.getOriginalEditor(),e)||this.findModel(t.getModifiedEditor(),e),t=(0,zt.CL)(i)?n(i):r(i)),t?Promise.resolve(new _e.Jz(new yi(t))):Promise.reject(new Error("Model not found"))}findModel(e,t){let i=this.modelService.getModel(t);return i&&i.uri.toString()!==t.toString()?null:i}};wi=bi([vi(0,st.q)],wi);class Ci{show(){return Ci.NULL_PROGRESS_RUNNER}showWhile(e,t){return Promise.resolve(void 0)}}Ci.NULL_PROGRESS_RUNNER={done:()=>{},total:()=>{},worked:()=>{}};class Si{confirm(e){return this.doConfirm(e).then((e=>({confirmed:e,checkboxChecked:!1})))}doConfirm(e){let t=e.message;return e.detail&&(t=t+"\n\n"+e.detail),Promise.resolve(window.confirm(t))}show(e,t,i,n){return Promise.resolve({choice:0})}}class ki{info(e){return this.notify({severity:Vt.Z.Info,message:e})}warn(e){return this.notify({severity:Vt.Z.Warning,message:e})}error(e){return this.notify({severity:Vt.Z.Error,message:e})}notify(e){switch(e.severity){case Vt.Z.Error:console.error(e.message);break;case Vt.Z.Warning:console.warn(e.message);break;default:console.log(e.message)}return ki.NO_OP}status(e,t){return _e.JT.None}}ki.NO_OP=new pi.EO;class xi{constructor(e){this._onWillExecuteCommand=new B.Q5,this._onDidExecuteCommand=new B.Q5,this._instantiationService=e}executeCommand(e,...t){const i=ee.P.getCommand(e);if(!i)return Promise.reject(new Error(`command '${e}' not found`));try{this._onWillExecuteCommand.fire({commandId:e,args:t});const n=this._instantiationService.invokeFunction.apply(this._instantiationService,[i.handler,...t]);return this._onDidExecuteCommand.fire({commandId:e,args:t}),Promise.resolve(n)}catch(e){return Promise.reject(e)}}}class Li extends ni{constructor(e,t,i,n,r,s){super(e,t,i,n,r),this._cachedResolver=null,this._dynamicKeybindings=[],this._register(G.nm(s,G.tw.KEY_DOWN,(e=>{let t=new jt.y(e);this._dispatch(t,t.target)&&(t.preventDefault(),t.stopPropagation())})))}addDynamicKeybinding(e,t,i,n){const r=(0,W.gm)(t,ve.OS),s=new _e.SL;return r&&(this._dynamicKeybindings.push({keybinding:r,command:e,when:n,weight1:1e3,weight2:0,extensionId:null}),s.add((0,_e.OF)((()=>{for(let t=0;t<this._dynamicKeybindings.length;t++)if(this._dynamicKeybindings[t].command===e)return this._dynamicKeybindings.splice(t,1),void this.updateResolver({source:1})})))),s.add(ee.P.registerCommand(e,i)),this.updateResolver({source:1}),s}updateResolver(e){this._cachedResolver=null,this._onDidUpdateKeybindings.fire(e)}_getResolver(){if(!this._cachedResolver){const e=this._toNormalizedKeybindingItems(ai.W.getDefaultKeybindings(),!0),t=this._toNormalizedKeybindingItems(this._dynamicKeybindings,!1);this._cachedResolver=new ri(e,t,(e=>this._log(e)))}return this._cachedResolver}_documentHasFocus(){return document.hasFocus()}_toNormalizedKeybindingItems(e,t){let i=[],n=0;for(const r of e){const e=r.when||void 0,s=r.keybinding;if(s){const o=this.resolveKeybinding(s);for(const s of o)i[n++]=new li(s,r.command,r.commandArgs,e,t,null)}else i[n++]=new li(void 0,r.command,r.commandArgs,e,t,null)}return i}resolveKeybinding(e){return[new fi(e,ve.OS)]}resolveKeyboardEvent(e){let t=new W.QC(e.ctrlKey,e.shiftKey,e.altKey,e.metaKey,e.keyCode).toChord();return new fi(t,ve.OS)}}function Mi(e){return e&&"object"==typeof e&&(!e.overrideIdentifier||"string"==typeof e.overrideIdentifier)&&(!e.resource||e.resource instanceof Y.o)}class Di{constructor(){this._onDidChangeConfiguration=new B.Q5,this.onDidChangeConfiguration=this._onDidChangeConfiguration.event,this._configuration=new ei(new Xt,new Qt)}getValue(e,t){const i="string"==typeof e?e:void 0,n=Mi(e)?e:Mi(t)?t:{};return this._configuration.getValue(i,n,void 0)}updateValues(e){const t={data:this._configuration.toData()};let i=[];for(const t of e){const[e,n]=t;this.getValue(e)!==n&&(this._configuration.updateValue(e,n),i.push(e))}if(i.length>0){const e=new ti({keys:i,overrides:[]},t,this._configuration);e.source=7,e.sourceConfig=null,this._onDidChangeConfiguration.fire(e)}return Promise.resolve()}}class Ni{constructor(e){this.configurationService=e,this._onDidChangeConfiguration=new B.Q5,this.configurationService.onDidChangeConfiguration((e=>{this._onDidChangeConfiguration.fire({affectedKeys:e.affectedKeys,affectsConfiguration:(t,i)=>e.affectsConfiguration(i)})}))}getValue(e,t,i){const n=H.L.isIPosition(t)&&t?"string"==typeof i?i:void 0:"string"==typeof t?t:void 0;return void 0===n?this.configurationService.getValue():this.configurationService.getValue(n)}}let Ei=class{constructor(e){this.configurationService=e}getEOL(e,t){const i=this.configurationService.getValue("files.eol",{overrideIdentifier:t,resource:e});return i&&"auto"!==i?i:ve.IJ||ve.dz?"\n":"\r\n"}};Ei=bi([vi(0,qt.Ui)],Ei);class Ti{publicLog(e,t){return Promise.resolve(void 0)}publicLog2(e,t){return this.publicLog(e,t)}}class Ii{constructor(){const e=Y.o.from({scheme:Ii.SCHEME,authority:"model",path:"/"});this.workspace={id:"4064f6ec-cb38-4ad0-af64-ee6467e63c82",folders:[new mi.md({uri:e,name:"",index:0})]}}getWorkspace(){return this.workspace}getWorkspaceFolder(e){return e&&e.scheme===Ii.SCHEME?this.workspace.folders[0]:null}}function Oi(e,t,i){if(!t)return;if(!(e instanceof Di))return;let n=[];Object.keys(t).forEach((e=>{(0,$t.ei)(e)&&n.push([`editor.${e}`,t[e]]),i&&(0,$t.Pe)(e)&&n.push([`diffEditor.${e}`,t[e]])})),n.length>0&&e.updateValues(n)}Ii.SCHEME="inmemory";class Ai{constructor(e){this._modelService=e}hasPreviewHandler(){return!1}apply(e,t){return i=this,n=void 0,s=function*(){const t=new Map;for(let i of e){if(!(i instanceof Ut.Gl))throw new Error("bad edit - only text edits are supported");const e=this._modelService.getModel(i.resource);if(!e)throw new Error("bad edit - model not found");if("number"==typeof i.versionId&&e.getVersionId()!==i.versionId)throw new Error("bad state - model changed in the meantime");let n=t.get(e);n||(n=[],t.set(e,n)),n.push(Kt.h.replaceMove(j.e.lift(i.textEdit.range),i.textEdit.text))}let i=0,n=0;for(const[e,r]of t)e.pushStackElement(),e.pushEditOperations([],r,(()=>[])),e.pushStackElement(),n+=1,i+=r.length;return{ariaSummary:Fe.WU(_i.UL.bulkEditServiceSummary,i,n)}},new((r=void 0)||(r=Promise))((function(e,t){function o(e){try{l(s.next(e))}catch(e){t(e)}}function a(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var i;t.done?e(t.value):(i=t.value,i instanceof r?i:new r((function(e){e(i)}))).then(o,a)}l((s=s.apply(i,n||[])).next())}));var i,n,r,s}}class Ri{getUriLabel(e,t){return"file"===e.scheme?e.fsPath:e.path}}class Pi{constructor(e,t){this._codeEditorService=e,this._container=t,this.onLayout=B.ju.None}get dimension(){return this._dimension||(this._dimension=G.D6(window.document.body)),this._dimension}get container(){return this._container}focus(){var e;null===(e=this._codeEditorService.getFocusedCodeEditor())||void 0===e||e.focus()}}var Fi=i(85152),Bi=i(95190),Wi=i(68143),Yi=i(30653),Hi=i(12095),ji=i(84144),Vi=i(38819),zi=i(5606),Ui=i(72065),$i=i(91847),Ki=i(97781),qi=i(31106),Gi=i(84972),Zi=i(90535),Ji=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},Qi=function(e,t){return function(i,n){t(i,n,e)}};let Xi=0,en=!1,tn=class extends Bi.Gm{constructor(e,t,i,n,r,s,o,a,l,c){(t=t||{}).ariaLabel=t.ariaLabel||_i.B8.editorViewAccessibleLabel,t.ariaLabel=t.ariaLabel+";"+_i.B8.accessibilityHelpMessage,super(e,t,{},i,n,r,s,a,l,c),this._standaloneKeybindingService=o instanceof Li?o:null,en||(en=!0,Fi.wW(document.body))}addCommand(e,t,i){if(!this._standaloneKeybindingService)return console.warn("Cannot add command because the editor is configured with an unrecognized KeybindingService"),null;let n="DYNAMIC_"+ ++Xi,r=Vi.Ao.deserialize(i);return this._standaloneKeybindingService.addDynamicKeybinding(n,e,t,r),n}createContextKey(e,t){return this._contextKeyService.createKey(e,t)}addAction(e){if("string"!=typeof e.id||"string"!=typeof e.label||"function"!=typeof e.run)throw new Error("Invalid action descriptor, `id`, `label` and `run` are required properties!");if(!this._standaloneKeybindingService)return console.warn("Cannot add keybinding because the editor is configured with an unrecognized KeybindingService"),_e.JT.None;const t=e.id,i=e.label,n=Vi.Ao.and(Vi.Ao.equals("editorId",this.getId()),Vi.Ao.deserialize(e.precondition)),r=e.keybindings,s=Vi.Ao.and(n,Vi.Ao.deserialize(e.keybindingContext)),o=e.contextMenuGroupId||null,a=e.contextMenuOrder||0,l=(t,...i)=>Promise.resolve(e.run(this,...i)),c=new _e.SL,d=this.getId()+":"+t;if(c.add(ee.P.registerCommand(d,l)),o){let e={command:{id:d,title:i},when:n,group:o,order:a};c.add(ji.BH.appendMenuItem(ji.eH.EditorContext,e))}if(Array.isArray(r))for(const e of r)c.add(this._standaloneKeybindingService.addDynamicKeybinding(d,e,l,s));let h=new Yi.p(d,i,i,n,l,this._contextKeyService);return this._actions[t]=h,c.add((0,_e.OF)((()=>{delete this._actions[t]}))),c}};tn=Ji([Qi(2,Ui.TG),Qi(3,q.$),Qi(4,ee.H),Qi(5,Vi.i6),Qi(6,$i.d),Qi(7,Ki.XE),Qi(8,pi.lT),Qi(9,qi.F)],tn);let nn=class extends tn{constructor(e,t,i,n,r,s,o,a,l,c,d,h,u){Oi(h,t,!1);const g=c.registerEditorContainer(e);"string"==typeof(t=t||{}).theme&&c.setTheme(t.theme);let f,p=t.model;if(delete t.model,super(e,t,n,r,s,o,a,c,d,u),this._contextViewService=l,this._configurationService=h,this._standaloneThemeService=c,this._register(i),this._register(g),void 0===p?(f=self.monaco.editor.createModel(t.value||"",t.language||"text/plain"),this._ownsModel=!0):(f=p,this._ownsModel=!1),this._attachModel(f),f){let e={oldModelUrl:null,newModelUrl:f.uri};this._onDidChangeModel.fire(e)}}dispose(){super.dispose()}updateOptions(e){Oi(this._configurationService,e,!1),"string"==typeof e.theme&&this._standaloneThemeService.setTheme(e.theme),super.updateOptions(e)}_attachModel(e){super._attachModel(e),this._modelData&&this._contextViewService.setContainer(this._modelData.view.domNode.domNode)}_postDetachModelCleanup(e){super._postDetachModelCleanup(e),e&&this._ownsModel&&(e.dispose(),this._ownsModel=!1)}};nn=Ji([Qi(3,Ui.TG),Qi(4,q.$),Qi(5,ee.H),Qi(6,Vi.i6),Qi(7,$i.d),Qi(8,zi.u),Qi(9,Hi.Z),Qi(10,pi.lT),Qi(11,qt.Ui),Qi(12,qi.F)],nn);let rn=class extends Wi.pL{constructor(e,t,i,n,r,s,o,a,l,c,d,h,u,g,f){Oi(h,t,!0);const p=c.registerEditorContainer(e);"string"==typeof(t=t||{}).theme&&(t.theme=c.setTheme(t.theme)),super(e,t,f,a,r,n,l,c,d,u,g),this._contextViewService=o,this._configurationService=h,this._standaloneThemeService=c,this._register(i),this._register(p),this._contextViewService.setContainer(this._containerDomElement)}dispose(){super.dispose()}updateOptions(e){Oi(this._configurationService,e,!0),"string"==typeof e.theme&&this._standaloneThemeService.setTheme(e.theme),super.updateOptions(e)}_createInnerEditor(e,t,i){return e.createInstance(tn,t,i)}getOriginalEditor(){return super.getOriginalEditor()}getModifiedEditor(){return super.getModifiedEditor()}addCommand(e,t,i){return this.getModifiedEditor().addCommand(e,t,i)}createContextKey(e,t){return this.getModifiedEditor().createContextKey(e,t)}addAction(e){return this.getModifiedEditor().addAction(e)}};rn=Ji([Qi(3,Ui.TG),Qi(4,Vi.i6),Qi(5,$i.d),Qi(6,zi.u),Qi(7,fe.p),Qi(8,q.$),Qi(9,Hi.Z),Qi(10,pi.lT),Qi(11,qt.Ui),Qi(12,zi.i),Qi(13,Zi.e),Qi(14,Gi.p)],rn);var sn=i(71531);class on{constructor(e){this._languageIdentifier=e}getId(){return this._languageIdentifier.language}}var an=i(88721),ln=i(14118);const cn="text/plain",dn="application/unknown";let hn=[],un=[],gn=[];function fn(e,t=!1){const i=function(e){return{id:e.id,mime:e.mime,filename:e.filename,extension:e.extension,filepattern:e.filepattern,firstline:e.firstline,userConfigured:e.userConfigured,filenameLowercase:e.filename?e.filename.toLowerCase():void 0,extensionLowercase:e.extension?e.extension.toLowerCase():void 0,filepatternLowercase:e.filepattern?e.filepattern.toLowerCase():void 0,filepatternOnPath:!!e.filepattern&&e.filepattern.indexOf(an.KR.sep)>=0}}(e);hn.push(i),i.userConfigured?gn.push(i):un.push(i),t&&!i.userConfigured&&hn.forEach((e=>{e.mime===i.mime||e.userConfigured||(i.extension&&e.extension===i.extension&&console.warn(`Overwriting extension <<${i.extension}>> to now point to mime <<${i.mime}>>`),i.filename&&e.filename===i.filename&&console.warn(`Overwriting filename <<${i.filename}>> to now point to mime <<${i.mime}>>`),i.filepattern&&e.filepattern===i.filepattern&&console.warn(`Overwriting filepattern <<${i.filepattern}>> to now point to mime <<${i.mime}>>`),i.firstline&&e.firstline===i.firstline&&console.warn(`Overwriting firstline <<${i.firstline}>> to now point to mime <<${i.mime}>>`))}))}function pn(e,t,i){let n=null,r=null,s=null;for(let o=i.length-1;o>=0;o--){const a=i[o];if(t===a.filenameLowercase){n=a;break}if(a.filepattern&&(!r||a.filepattern.length>r.filepattern.length)){const i=a.filepatternOnPath?e:t;(0,ln.EQ)(a.filepatternLowercase,i)&&(r=a)}a.extension&&(!s||a.extension.length>s.extension.length)&&t.endsWith(a.extensionLowercase)&&(s=a)}return n?n.mime:r?r.mime:s?s.mime:null}var mn=i(71144),_n=i(89872);const bn=Object.prototype.hasOwnProperty;class vn extends _e.JT{constructor(e=!0,t=!1){super(),this._onDidChange=this._register(new B.Q5),this.onDidChange=this._onDidChange.event,this._warnOnOverwrite=t,this._nextLanguageId2=1,this._languageIdToLanguage=[],this._languageToLanguageId=Object.create(null),this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},e&&(this._initializeFromRegistry(),this._register(mn.dQ.onDidChangeLanguages((e=>this._initializeFromRegistry()))))}_initializeFromRegistry(){this._languages={},this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={};const e=mn.dQ.getLanguages();this._registerLanguages(e)}_registerLanguages(e){for(const t of e)this._registerLanguage(t);this._mimeTypesMap={},this._nameMap={},this._lowercaseNameMap={},Object.keys(this._languages).forEach((e=>{let t=this._languages[e];t.name&&(this._nameMap[t.name]=t.identifier),t.aliases.forEach((e=>{this._lowercaseNameMap[e.toLowerCase()]=t.identifier})),t.mimetypes.forEach((e=>{this._mimeTypesMap[e]=t.identifier}))})),_n.B.as(Jt.IP.Configuration).registerOverrideIdentifiers(mn.dQ.getLanguages().map((e=>e.id))),this._onDidChange.fire()}_getLanguageId(e){if(this._languageToLanguageId[e])return this._languageToLanguageId[e];const t=this._nextLanguageId2++;return this._languageIdToLanguage[t]=e,this._languageToLanguageId[e]=t,t}_registerLanguage(e){const t=e.id;let i;if(bn.call(this._languages,t))i=this._languages[t];else{const e=this._getLanguageId(t);i={identifier:new ue.rl(t,e),name:null,mimetypes:[],aliases:[],extensions:[],filenames:[],configurationFiles:[]},this._languages[t]=i}this._mergeLanguage(i,e)}_mergeLanguage(e,t){const i=t.id;let n=null;if(Array.isArray(t.mimetypes)&&t.mimetypes.length>0&&(e.mimetypes.push(...t.mimetypes),n=t.mimetypes[0]),n||(n=`text/x-${i}`,e.mimetypes.push(n)),Array.isArray(t.extensions)){t.configuration?e.extensions=t.extensions.concat(e.extensions):e.extensions=e.extensions.concat(t.extensions);for(let e of t.extensions)fn({id:i,mime:n,extension:e},this._warnOnOverwrite)}if(Array.isArray(t.filenames))for(let r of t.filenames)fn({id:i,mime:n,filename:r},this._warnOnOverwrite),e.filenames.push(r);if(Array.isArray(t.filenamePatterns))for(let e of t.filenamePatterns)fn({id:i,mime:n,filepattern:e},this._warnOnOverwrite);if("string"==typeof t.firstLine&&t.firstLine.length>0){let e=t.firstLine;"^"!==e.charAt(0)&&(e="^"+e);try{let t=new RegExp(e);Fe.IO(t)||fn({id:i,mime:n,firstline:t},this._warnOnOverwrite)}catch(e){(0,be.dL)(e)}}e.aliases.push(i);let r=null;if(void 0!==t.aliases&&Array.isArray(t.aliases)&&(r=0===t.aliases.length?[null]:t.aliases),null!==r)for(const t of r)t&&0!==t.length&&e.aliases.push(t);let s=null!==r&&r.length>0;if(s&&null===r[0]);else{let t=(s?r[0]:null)||i;!s&&e.name||(e.name=t)}t.configuration&&e.configurationFiles.push(t.configuration)}isRegisteredMode(e){return!!bn.call(this._mimeTypesMap,e)||bn.call(this._languages,e)}getModeIdForLanguageNameLowercase(e){return bn.call(this._lowercaseNameMap,e)?this._lowercaseNameMap[e].language:null}extractModeIds(e){return e?e.split(",").map((e=>e.trim())).map((e=>bn.call(this._mimeTypesMap,e)?this._mimeTypesMap[e].language:e)).filter((e=>bn.call(this._languages,e))):[]}getLanguageIdentifier(e){if(e===ge.TG||0===e)return ge.pA;let t;if("string"==typeof e)t=e;else if(t=this._languageIdToLanguage[e],!t)return null;return bn.call(this._languages,t)?this._languages[t].identifier:null}getModeIdsFromFilepathOrFirstLine(e,t){if(!e&&!t)return[];let i=function(e,t){let i;if(e)switch(e.scheme){case Q.l.file:i=e.fsPath;break;case Q.l.data:i=X.Vb.parseMetaData(e).get(X.Vb.META_DATA_LABEL);break;default:i=e.path}if(!i)return[dn];i=i.toLowerCase();const n=(0,an.EZ)(i),r=pn(i,n,gn);if(r)return[r,cn];const s=pn(i,n,un);if(s)return[s,cn];if(t){const e=function(e){if((0,Fe.uS)(e)&&(e=e.substr(1)),e.length>0)for(let t=hn.length-1;t>=0;t--){const i=hn[t];if(!i.firstline)continue;const n=e.match(i.firstline);if(n&&n.length>0)return i.mime}return null}(t);if(e)return[e,cn]}return[dn]}(e,t);return this.extractModeIds(i.join(","))}}class yn extends _e.JT{constructor(e,t){super(),this._onDidChange=this._register(new B.Q5),this.onDidChange=this._onDidChange.event,this._selector=t,this.languageIdentifier=this._selector(),this._register(e((()=>this._evaluate())))}_evaluate(){let e=this._selector();e.id!==this.languageIdentifier.id&&(this.languageIdentifier=e,this._onDidChange.fire(this.languageIdentifier))}}class wn{constructor(e=!1){this._onDidCreateMode=new B.Q5,this.onDidCreateMode=this._onDidCreateMode.event,this._onLanguagesMaybeChanged=new B.Q5,this.onLanguagesMaybeChanged=this._onLanguagesMaybeChanged.event,this._instantiatedModes={},this._registry=new vn(!0,e),this._registry.onDidChange((()=>this._onLanguagesMaybeChanged.fire()))}isRegisteredMode(e){return this._registry.isRegisteredMode(e)}getModeIdForLanguageName(e){return this._registry.getModeIdForLanguageNameLowercase(e)}getModeIdByFilepathOrFirstLine(e,t){const i=this._registry.getModeIdsFromFilepathOrFirstLine(e,t);return(0,De.Xh)(i,null)}getModeId(e){const t=this._registry.extractModeIds(e);return(0,De.Xh)(t,null)}getLanguageIdentifier(e){return this._registry.getLanguageIdentifier(e)}create(e){return new yn(this.onLanguagesMaybeChanged,(()=>{const t=this.getModeId(e);return this._createModeAndGetLanguageIdentifier(t)}))}createByFilepathOrFirstLine(e,t){return new yn(this.onLanguagesMaybeChanged,(()=>{const i=this.getModeIdByFilepathOrFirstLine(e,t);return this._createModeAndGetLanguageIdentifier(i)}))}_createModeAndGetLanguageIdentifier(e){const t=this.getLanguageIdentifier(e||"plaintext")||ge.pA;return this._getOrCreateMode(t.language),t}triggerMode(e){const t=this.getModeId(e);this._getOrCreateMode(t||"plaintext")}_getOrCreateMode(e){if(!this._instantiatedModes.hasOwnProperty(e)){let t=this.getLanguageIdentifier(e)||ge.pA;this._instantiatedModes[e]=new on(t),this._onDidCreateMode.fire(this._instantiatedModes[e])}return this._instantiatedModes[e]}}var Cn=i(32334);class Sn extends _e.JT{constructor(){super(),this._onCodeEditorAdd=this._register(new B.Q5),this.onCodeEditorAdd=this._onCodeEditorAdd.event,this._onCodeEditorRemove=this._register(new B.Q5),this.onCodeEditorRemove=this._onCodeEditorRemove.event,this._onDiffEditorAdd=this._register(new B.Q5),this._onDiffEditorRemove=this._register(new B.Q5),this._modelProperties=new Map,this._codeEditors=Object.create(null),this._diffEditors=Object.create(null)}addCodeEditor(e){this._codeEditors[e.getId()]=e,this._onCodeEditorAdd.fire(e)}removeCodeEditor(e){delete this._codeEditors[e.getId()]&&this._onCodeEditorRemove.fire(e)}listCodeEditors(){return Object.keys(this._codeEditors).map((e=>this._codeEditors[e]))}addDiffEditor(e){this._diffEditors[e.getId()]=e,this._onDiffEditorAdd.fire(e)}removeDiffEditor(e){delete this._diffEditors[e.getId()]&&this._onDiffEditorRemove.fire(e)}listDiffEditors(){return Object.keys(this._diffEditors).map((e=>this._diffEditors[e]))}getFocusedCodeEditor(){let e=null;const t=this.listCodeEditors();for(const i of t){if(i.hasTextFocus())return i;i.hasWidgetFocus()&&(e=i)}return e}setModelProperty(e,t,i){const n=e.toString();let r;this._modelProperties.has(n)?r=this._modelProperties.get(n):(r=new Map,this._modelProperties.set(n,r)),r.set(t,i)}getModelProperty(e,t){const i=e.toString();if(this._modelProperties.has(i))return this._modelProperties.get(i).get(t)}}class kn{constructor(e,t,i){this._parent=e,this._editorId=t,this._styleSheet=i,this._refCount=0}ref(){this._refCount++}unref(){var e;this._refCount--,0===this._refCount&&(null===(e=this._styleSheet.parentNode)||void 0===e||e.removeChild(this._styleSheet),this._parent._removeEditorStyleSheets(this._editorId))}insertRule(e,t){this._styleSheet.sheet.insertRule(e,t)}removeRulesContainingSelector(e){G.uN(e,this._styleSheet)}}class xn{constructor(e){this._styleSheet=e}ref(){}unref(){}insertRule(e,t){this._styleSheet.sheet.insertRule(e,t)}removeRulesContainingSelector(e){G.uN(e,this._styleSheet)}}let Ln=class extends Sn{constructor(e,t=null){super(),this._decorationOptionProviders=new Map,this._editorStyleSheets=new Map,this._globalStyleSheet=t||null,this._themeService=e}_getOrCreateGlobalStyleSheet(){return this._globalStyleSheet||(this._globalStyleSheet=new xn(G.dS())),this._globalStyleSheet}_getOrCreateStyleSheet(e){if(!e)return this._getOrCreateGlobalStyleSheet();const t=e.getContainerDomNode();if(!G.OO(t))return this._getOrCreateGlobalStyleSheet();const i=e.getId();if(!this._editorStyleSheets.has(i)){const e=new kn(this,i,G.dS(t));this._editorStyleSheets.set(i,e)}return this._editorStyleSheets.get(i)}_removeEditorStyleSheets(e){this._editorStyleSheets.delete(e)}registerDecorationType(e,t,i,n){let r=this._decorationOptionProviders.get(e);if(!r){const s=this._getOrCreateStyleSheet(n),o={styleSheet:s,key:e,parentTypeKey:i,options:t||Object.create(null)};r=i?new Nn(this._themeService,s,o):new En(this._themeService,s,o),this._decorationOptionProviders.set(e,r)}r.refCount++}removeDecorationType(e){const t=this._decorationOptionProviders.get(e);t&&(t.refCount--,t.refCount<=0&&(this._decorationOptionProviders.delete(e),t.dispose(),this.listCodeEditors().forEach((t=>t.removeDecorations(e)))))}resolveDecorationOptions(e,t){const i=this._decorationOptionProviders.get(e);if(!i)throw new Error("Unknown decoration type key: "+e);return i.getOptions(this,t)}};var Mn,Dn;Ln=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(Mn=0,Dn=Ki.XE,function(e,t){Dn(e,t,Mn)})],Ln);class Nn{constructor(e,t,i){this._styleSheet=t,this._styleSheet.ref(),this._parentTypeKey=i.parentTypeKey,this.refCount=0,this._beforeContentRules=new In(3,i,e),this._afterContentRules=new In(4,i,e)}getOptions(e,t){const i=e.resolveDecorationOptions(this._parentTypeKey,!0);return this._beforeContentRules&&(i.beforeContentClassName=this._beforeContentRules.className),this._afterContentRules&&(i.afterContentClassName=this._afterContentRules.className),i}dispose(){this._beforeContentRules&&(this._beforeContentRules.dispose(),this._beforeContentRules=null),this._afterContentRules&&(this._afterContentRules.dispose(),this._afterContentRules=null),this._styleSheet.unref()}}class En{constructor(e,t,i){this._disposables=new _e.SL,this._styleSheet=t,this._styleSheet.ref(),this.refCount=0;const n=t=>{const n=new In(t,i,e);if(this._disposables.add(n),n.hasContent)return n.className};this.className=n(0);const r=(t=>{const n=new In(1,i,e);return this._disposables.add(n),n.hasContent?{className:n.className,hasLetterSpacing:n.hasLetterSpacing}:null})();r&&(this.inlineClassName=r.className,this.inlineClassNameAffectsLetterSpacing=r.hasLetterSpacing),this.beforeContentClassName=n(3),this.afterContentClassName=n(4),this.glyphMarginClassName=n(2);const s=i.options;this.isWholeLine=Boolean(s.isWholeLine),this.stickiness=s.rangeBehavior;const o=s.light&&s.light.overviewRulerColor||s.overviewRulerColor,a=s.dark&&s.dark.overviewRulerColor||s.overviewRulerColor;void 0===o&&void 0===a||(this.overviewRuler={color:o||a,darkColor:a||o,position:s.overviewRulerLane||he.sh.Center})}getOptions(e,t){return t?{inlineClassName:this.inlineClassName,beforeContentClassName:this.beforeContentClassName,afterContentClassName:this.afterContentClassName,className:this.className,glyphMarginClassName:this.glyphMarginClassName,isWholeLine:this.isWholeLine,overviewRuler:this.overviewRuler,stickiness:this.stickiness}:this}dispose(){this._disposables.dispose(),this._styleSheet.unref()}}const Tn={color:"color:{0} !important;",opacity:"opacity:{0};",backgroundColor:"background-color:{0};",outline:"outline:{0};",outlineColor:"outline-color:{0};",outlineStyle:"outline-style:{0};",outlineWidth:"outline-width:{0};",border:"border:{0};",borderColor:"border-color:{0};",borderRadius:"border-radius:{0};",borderSpacing:"border-spacing:{0};",borderStyle:"border-style:{0};",borderWidth:"border-width:{0};",fontStyle:"font-style:{0};",fontWeight:"font-weight:{0};",textDecoration:"text-decoration:{0};",cursor:"cursor:{0};",letterSpacing:"letter-spacing:{0};",gutterIconPath:"background:{0} center center no-repeat;",gutterIconSize:"background-size:{0};",contentText:"content:'{0}';",contentIconPath:"content:{0};",margin:"margin:{0};",width:"width:{0};",height:"height:{0};"};class In{constructor(e,t,i){this._theme=i.getColorTheme(),this._ruleType=e,this._providerArgs=t,this._usesThemeColors=!1,this._hasContent=!1,this._hasLetterSpacing=!1;let n=On.getClassName(this._providerArgs.key,e);this._providerArgs.parentTypeKey&&(n=n+" "+On.getClassName(this._providerArgs.parentTypeKey,e)),this._className=n,this._unThemedSelector=On.getSelector(this._providerArgs.key,this._providerArgs.parentTypeKey,e),this._buildCSS(),this._usesThemeColors?this._themeListener=i.onDidColorThemeChange((e=>{this._theme=i.getColorTheme(),this._removeCSS(),this._buildCSS()})):this._themeListener=null}dispose(){this._hasContent&&(this._removeCSS(),this._hasContent=!1),this._themeListener&&(this._themeListener.dispose(),this._themeListener=null)}get hasContent(){return this._hasContent}get hasLetterSpacing(){return this._hasLetterSpacing}get className(){return this._className}_buildCSS(){const e=this._providerArgs.options;let t,i,n;switch(this._ruleType){case 0:t=this.getCSSTextForModelDecorationClassName(e),i=this.getCSSTextForModelDecorationClassName(e.light),n=this.getCSSTextForModelDecorationClassName(e.dark);break;case 1:t=this.getCSSTextForModelDecorationInlineClassName(e),i=this.getCSSTextForModelDecorationInlineClassName(e.light),n=this.getCSSTextForModelDecorationInlineClassName(e.dark);break;case 2:t=this.getCSSTextForModelDecorationGlyphMarginClassName(e),i=this.getCSSTextForModelDecorationGlyphMarginClassName(e.light),n=this.getCSSTextForModelDecorationGlyphMarginClassName(e.dark);break;case 3:t=this.getCSSTextForModelDecorationContentClassName(e.before),i=this.getCSSTextForModelDecorationContentClassName(e.light&&e.light.before),n=this.getCSSTextForModelDecorationContentClassName(e.dark&&e.dark.before);break;case 4:t=this.getCSSTextForModelDecorationContentClassName(e.after),i=this.getCSSTextForModelDecorationContentClassName(e.light&&e.light.after),n=this.getCSSTextForModelDecorationContentClassName(e.dark&&e.dark.after);break;default:throw new Error("Unknown rule type: "+this._ruleType)}const r=this._providerArgs.styleSheet;let s=!1;t.length>0&&(r.insertRule(`${this._unThemedSelector} {${t}}`,0),s=!0),i.length>0&&(r.insertRule(`.vs${this._unThemedSelector} {${i}}`,0),s=!0),n.length>0&&(r.insertRule(`.vs-dark${this._unThemedSelector}, .hc-black${this._unThemedSelector} {${n}}`,0),s=!0),this._hasContent=s}_removeCSS(){this._providerArgs.styleSheet.removeRulesContainingSelector(this._unThemedSelector)}getCSSTextForModelDecorationClassName(e){if(!e)return"";const t=[];return this.collectCSSText(e,["backgroundColor"],t),this.collectCSSText(e,["outline","outlineColor","outlineStyle","outlineWidth"],t),this.collectBorderSettingsCSSText(e,t),t.join("")}getCSSTextForModelDecorationInlineClassName(e){if(!e)return"";const t=[];return this.collectCSSText(e,["fontStyle","fontWeight","textDecoration","cursor","color","opacity","letterSpacing"],t),e.letterSpacing&&(this._hasLetterSpacing=!0),t.join("")}getCSSTextForModelDecorationContentClassName(e){if(!e)return"";const t=[];if(void 0!==e){if(this.collectBorderSettingsCSSText(e,t),void 0!==e.contentIconPath&&t.push(Fe.WU(Tn.contentIconPath,G.wY(Y.o.revive(e.contentIconPath)))),"string"==typeof e.contentText){const i=e.contentText.match(/^.*$/m)[0].replace(/['\\]/g,"\\$&");t.push(Fe.WU(Tn.contentText,i))}this.collectCSSText(e,["fontStyle","fontWeight","textDecoration","color","opacity","backgroundColor","margin"],t),this.collectCSSText(e,["width","height"],t)&&t.push("display:inline-block;")}return t.join("")}getCSSTextForModelDecorationGlyphMarginClassName(e){if(!e)return"";const t=[];return void 0!==e.gutterIconPath&&(t.push(Fe.WU(Tn.gutterIconPath,G.wY(Y.o.revive(e.gutterIconPath)))),void 0!==e.gutterIconSize&&t.push(Fe.WU(Tn.gutterIconSize,e.gutterIconSize))),t.join("")}collectBorderSettingsCSSText(e,t){return!!this.collectCSSText(e,["border","borderColor","borderRadius","borderSpacing","borderStyle","borderWidth"],t)&&(t.push(Fe.WU("box-sizing: border-box;")),!0)}collectCSSText(e,t,i){const n=i.length;for(let n of t){const t=this.resolveValue(e[n]);"string"==typeof t&&i.push(Fe.WU(Tn[n],t))}return i.length!==n}resolveValue(e){if((0,de.I)(e)){this._usesThemeColors=!0;const t=this._theme.getColor(e.id);return t?t.toString():"transparent"}return e}}class On{static getClassName(e,t){return"ced-"+e+"-"+t}static getSelector(e,t,i){let n=".monaco-editor ."+this.getClassName(e,i);return t&&(n=n+"."+this.getClassName(t,i)),3===i?n+="::before":4===i&&(n+="::after"),n}}class An extends Ln{getActiveCodeEditor(){return null}openCodeEditor(e,t,i){return t?Promise.resolve(this.doOpenEditor(t,e)):Promise.resolve(null)}doOpenEditor(e,t){if(!this.findModel(e,t.resource)){if(t.resource){const i=t.resource.scheme;if(i===Q.l.http||i===Q.l.https)return(0,G.V3)(t.resource.toString()),e}return null}const i=t.options?t.options.selection:null;if(i)if("number"==typeof i.endLineNumber&&"number"==typeof i.endColumn)e.setSelection(i),e.revealRangeInCenter(i,1);else{const t={lineNumber:i.startLineNumber,column:i.startColumn};e.setPosition(t),e.revealPositionInCenter(t,1)}return e}findModel(e,t){const i=e.getModel();return i&&i.uri.toString()!==t.toString()?null:i}}var Rn=i(41264);class Pn{constructor(e,t,i,n,r){this.token=e,this.index=t,this.fontStyle=i,this.foreground=n,this.background=r}}const Fn=/^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;class Bn{constructor(){this._lastColorId=0,this._id2color=[],this._color2id=new Map}getId(e){if(null===e)return 0;const t=e.match(Fn);if(!t)throw new Error("Illegal value for token color: "+e);e=t[1].toUpperCase();let i=this._color2id.get(e);return i||(i=++this._lastColorId,this._color2id.set(e,i),this._id2color[i]=Rn.Il.fromHex("#"+e),i)}getColorMap(){return this._id2color.slice(0)}}class Wn{constructor(e,t){this._colorMap=e,this._root=t,this._cache=new Map}static createFromRawTokenTheme(e,t){return this.createFromParsedTokenTheme(function(e){if(!e||!Array.isArray(e))return[];let t=[],i=0;for(let n=0,r=e.length;n<r;n++){let r=e[n],s=-1;if("string"==typeof r.fontStyle){s=0;let e=r.fontStyle.split(" ");for(let t=0,i=e.length;t<i;t++)switch(e[t]){case"italic":s|=1;break;case"bold":s|=2;break;case"underline":s|=4}}let o=null;"string"==typeof r.foreground&&(o=r.foreground);let a=null;"string"==typeof r.background&&(a=r.background),t[i++]=new Pn(r.token||"",n,s,o,a)}return t}(e),t)}static createFromParsedTokenTheme(e,t){return function(e,t){e.sort(((e,t)=>{let i=function(e,t){return e<t?-1:e>t?1:0}(e.token,t.token);return 0!==i?i:e.index-t.index}));let i=0,n="000000",r="ffffff";for(;e.length>=1&&""===e[0].token;){let t=e.shift();-1!==t.fontStyle&&(i=t.fontStyle),null!==t.foreground&&(n=t.foreground),null!==t.background&&(r=t.background)}let s=new Bn;for(let e of t)s.getId(e);let o=s.getId(n),a=s.getId(r),l=new Hn(i,o,a),c=new jn(l);for(let t=0,i=e.length;t<i;t++){let i=e[t];c.insert(i.token,i.fontStyle,s.getId(i.foreground),s.getId(i.background))}return new Wn(s,c)}(e,t)}getColorMap(){return this._colorMap.getColorMap()}_match(e){return this._root.match(e)}match(e,t){let i=this._cache.get(t);if(void 0===i){let e=this._match(t),n=function(e){let t=e.match(Yn);if(!t)return 0;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":case"regexp":return 4}throw new Error("Unexpected match for standard token type!")}(t);i=(e.metadata|n<<8)>>>0,this._cache.set(t,i)}return(i|e<<0)>>>0}}const Yn=/\b(comment|string|regex|regexp)\b/;class Hn{constructor(e,t,i){this._fontStyle=e,this._foreground=t,this._background=i,this.metadata=(this._fontStyle<<11|this._foreground<<14|this._background<<23)>>>0}clone(){return new Hn(this._fontStyle,this._foreground,this._background)}acceptOverwrite(e,t,i){-1!==e&&(this._fontStyle=e),0!==t&&(this._foreground=t),0!==i&&(this._background=i),this.metadata=(this._fontStyle<<11|this._foreground<<14|this._background<<23)>>>0}}class jn{constructor(e){this._mainRule=e,this._children=new Map}match(e){if(""===e)return this._mainRule;let t,i,n=e.indexOf(".");-1===n?(t=e,i=""):(t=e.substring(0,n),i=e.substring(n+1));let r=this._children.get(t);return void 0!==r?r.match(i):this._mainRule}insert(e,t,i,n){if(""===e)return void this._mainRule.acceptOverwrite(t,i,n);let r,s,o=e.indexOf(".");-1===o?(r=e,s=""):(r=e.substring(0,o),s=e.substring(o+1));let a=this._children.get(r);void 0===a&&(a=new jn(this._mainRule.clone()),this._children.set(r,a)),a.insert(s,t,i,n)}}var Vn=i(27869),zn=i(73910);const Un={base:"vs",inherit:!1,rules:[{token:"",foreground:"000000",background:"fffffe"},{token:"invalid",foreground:"cd3131"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"001188"},{token:"variable.predefined",foreground:"4864AA"},{token:"constant",foreground:"dd0000"},{token:"comment",foreground:"008000"},{token:"number",foreground:"098658"},{token:"number.hex",foreground:"3030c0"},{token:"regexp",foreground:"800000"},{token:"annotation",foreground:"808080"},{token:"type",foreground:"008080"},{token:"delimiter",foreground:"000000"},{token:"delimiter.html",foreground:"383838"},{token:"delimiter.xml",foreground:"0000FF"},{token:"tag",foreground:"800000"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"800000"},{token:"metatag",foreground:"e00000"},{token:"metatag.content.html",foreground:"FF0000"},{token:"metatag.html",foreground:"808080"},{token:"metatag.xml",foreground:"808080"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"863B00"},{token:"string.key.json",foreground:"A31515"},{token:"string.value.json",foreground:"0451A5"},{token:"attribute.name",foreground:"FF0000"},{token:"attribute.value",foreground:"0451A5"},{token:"attribute.value.number",foreground:"098658"},{token:"attribute.value.unit",foreground:"098658"},{token:"attribute.value.html",foreground:"0000FF"},{token:"attribute.value.xml",foreground:"0000FF"},{token:"string",foreground:"A31515"},{token:"string.html",foreground:"0000FF"},{token:"string.sql",foreground:"FF0000"},{token:"string.yaml",foreground:"0451A5"},{token:"keyword",foreground:"0000FF"},{token:"keyword.json",foreground:"0451A5"},{token:"keyword.flow",foreground:"AF00DB"},{token:"keyword.flow.scss",foreground:"0000FF"},{token:"operator.scss",foreground:"666666"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"666666"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[zn.cv]:"#FFFFFE",[zn.NO]:"#000000",[zn.ES]:"#E5EBF1",[Vn.tR]:"#D3D3D3",[Vn.Ym]:"#939393",[zn.Rz]:"#ADD6FF4D"}},$n={base:"vs-dark",inherit:!1,rules:[{token:"",foreground:"D4D4D4",background:"1E1E1E"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"74B0DF"},{token:"variable.predefined",foreground:"4864AA"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"B5CEA8"},{token:"number.hex",foreground:"5BB498"},{token:"regexp",foreground:"B46695"},{token:"annotation",foreground:"cc6666"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"DCDCDC"},{token:"delimiter.html",foreground:"808080"},{token:"delimiter.xml",foreground:"808080"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta.scss",foreground:"A79873"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"DD6A6F"},{token:"metatag.content.html",foreground:"9CDCFE"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key.json",foreground:"9CDCFE"},{token:"string.value.json",foreground:"CE9178"},{token:"attribute.name",foreground:"9CDCFE"},{token:"attribute.value",foreground:"CE9178"},{token:"attribute.value.number.css",foreground:"B5CEA8"},{token:"attribute.value.unit.css",foreground:"B5CEA8"},{token:"attribute.value.hex.css",foreground:"D4D4D4"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"keyword.json",foreground:"CE9178"},{token:"keyword.flow.scss",foreground:"569CD6"},{token:"operator.scss",foreground:"909090"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[zn.cv]:"#1E1E1E",[zn.NO]:"#D4D4D4",[zn.ES]:"#3A3D41",[Vn.tR]:"#404040",[Vn.Ym]:"#707070",[zn.Rz]:"#ADD6FF26"}},Kn={base:"hc-black",inherit:!1,rules:[{token:"",foreground:"FFFFFF",background:"000000"},{token:"invalid",foreground:"f44747"},{token:"emphasis",fontStyle:"italic"},{token:"strong",fontStyle:"bold"},{token:"variable",foreground:"1AEBFF"},{token:"variable.parameter",foreground:"9CDCFE"},{token:"constant",foreground:"569CD6"},{token:"comment",foreground:"608B4E"},{token:"number",foreground:"FFFFFF"},{token:"regexp",foreground:"C0C0C0"},{token:"annotation",foreground:"569CD6"},{token:"type",foreground:"3DC9B0"},{token:"delimiter",foreground:"FFFF00"},{token:"delimiter.html",foreground:"FFFF00"},{token:"tag",foreground:"569CD6"},{token:"tag.id.pug",foreground:"4F76AC"},{token:"tag.class.pug",foreground:"4F76AC"},{token:"meta",foreground:"D4D4D4"},{token:"meta.tag",foreground:"CE9178"},{token:"metatag",foreground:"569CD6"},{token:"metatag.content.html",foreground:"1AEBFF"},{token:"metatag.html",foreground:"569CD6"},{token:"metatag.xml",foreground:"569CD6"},{token:"metatag.php",fontStyle:"bold"},{token:"key",foreground:"9CDCFE"},{token:"string.key",foreground:"9CDCFE"},{token:"string.value",foreground:"CE9178"},{token:"attribute.name",foreground:"569CD6"},{token:"attribute.value",foreground:"3FF23F"},{token:"string",foreground:"CE9178"},{token:"string.sql",foreground:"FF0000"},{token:"keyword",foreground:"569CD6"},{token:"keyword.flow",foreground:"C586C0"},{token:"operator.sql",foreground:"778899"},{token:"operator.swift",foreground:"909090"},{token:"predefined.sql",foreground:"FF00FF"}],colors:{[zn.cv]:"#000000",[zn.NO]:"#FFFFFF",[Vn.tR]:"#FFFFFF",[Vn.Ym]:"#FFFFFF"}};var qn=i(28609);const Gn="vs",Zn="vs-dark",Jn="hc-black",Qn=_n.B.as(zn.IP.ColorContribution),Xn=_n.B.as(Ki.IP.ThemingContribution);class er{constructor(e,t){this.semanticHighlighting=!1,this.themeData=t;let i=t.base;e.length>0?(this.id=i+" "+e,this.themeName=e):(this.id=i,this.themeName=i),this.colors=null,this.defaultColors=Object.create(null),this._tokenTheme=null}get base(){return this.themeData.base}notifyBaseUpdated(){this.themeData.inherit&&(this.colors=null,this._tokenTheme=null)}getColors(){if(!this.colors){const e=new Map;for(let t in this.themeData.colors)e.set(t,Rn.Il.fromHex(this.themeData.colors[t]));if(this.themeData.inherit){let t=ir(this.themeData.base);for(let i in t.colors)e.has(i)||e.set(i,Rn.Il.fromHex(t.colors[i]))}this.colors=e}return this.colors}getColor(e,t){return this.getColors().get(e)||(!1!==t?this.getDefault(e):void 0)}getDefault(e){let t=this.defaultColors[e];return t||(t=Qn.resolveDefaultColor(e,this),this.defaultColors[e]=t,t)}defines(e){return Object.prototype.hasOwnProperty.call(this.getColors(),e)}get type(){switch(this.base){case Gn:return"light";case Jn:return"hc";default:return"dark"}}get tokenTheme(){if(!this._tokenTheme){let e=[],t=[];if(this.themeData.inherit){let i=ir(this.themeData.base);e=i.rules,i.encodedTokensColors&&(t=i.encodedTokensColors)}e=e.concat(this.themeData.rules),this.themeData.encodedTokensColors&&(t=this.themeData.encodedTokensColors),this._tokenTheme=Wn.createFromRawTokenTheme(e,t)}return this._tokenTheme}getTokenStyleMetadata(e,t,i){const n=this.tokenTheme._match([e].concat(t).join(".")).metadata,r=ue.NX.getForeground(n),s=ue.NX.getFontStyle(n);return{foreground:r,italic:Boolean(1&s),bold:Boolean(2&s),underline:Boolean(4&s)}}}function tr(e){return e===Gn||e===Zn||e===Jn}function ir(e){switch(e){case Gn:return Un;case Zn:return $n;case Jn:return Kn}}function nr(e){let t=ir(e);return new er(e,t)}class rr extends _e.JT{constructor(){super(),this._onColorThemeChange=this._register(new B.Q5),this.onDidColorThemeChange=this._onColorThemeChange.event,this._environment=Object.create(null),this._knownThemes=new Map,this._knownThemes.set(Gn,nr(Gn)),this._knownThemes.set(Zn,nr(Zn)),this._knownThemes.set(Jn,nr(Jn)),this._codiconCSS=qn.D.getCSS(),this._themeCSS="",this._allCSS=`${this._codiconCSS}\n${this._themeCSS}`,this._globalStyleElement=null,this._styleElements=[],this.setTheme(Gn),qn.D.onDidChange((()=>{this._codiconCSS=qn.D.getCSS(),this._updateCSS()}))}registerEditorContainer(e){return G.OO(e)?this._registerShadowDomContainer(e):this._registerRegularEditorContainer()}_registerRegularEditorContainer(){return this._globalStyleElement||(this._globalStyleElement=G.dS(),this._globalStyleElement.className="monaco-colors",this._globalStyleElement.innerHTML=this._allCSS,this._styleElements.push(this._globalStyleElement)),_e.JT.None}_registerShadowDomContainer(e){const t=G.dS(e);return t.className="monaco-colors",t.innerHTML=this._allCSS,this._styleElements.push(t),{dispose:()=>{for(let e=0;e<this._styleElements.length;e++)if(this._styleElements[e]===t)return void this._styleElements.splice(e,1)}}}defineTheme(e,t){if(!/^[a-z0-9\-]+$/i.test(e))throw new Error("Illegal theme name!");if(!tr(t.base)&&!tr(e))throw new Error("Illegal theme base!");this._knownThemes.set(e,new er(e,t)),tr(e)&&this._knownThemes.forEach((t=>{t.base===e&&t.notifyBaseUpdated()})),this._theme&&this._theme.themeName===e&&this.setTheme(e)}getColorTheme(){return this._theme}setTheme(e){let t;if(t=this._knownThemes.has(e)?this._knownThemes.get(e):this._knownThemes.get(Gn),this._theme===t)return t.id;this._theme=t;let i=[],n={},r={addRule:e=>{n[e]||(i.push(e),n[e]=!0)}};Xn.getThemingParticipants().forEach((e=>e(t,r,this._environment)));let s=t.tokenTheme.getColorMap();return r.addRule(function(e){let t=[];for(let i=1,n=e.length;i<n;i++){let n=e[i];t[i]=`.mtk${i} { color: ${n}; }`}return t.push(".mtki { font-style: italic; }"),t.push(".mtkb { font-weight: bold; }"),t.push(".mtku { text-decoration: underline; text-underline-position: under; }"),t.join("\n")}(s)),this._themeCSS=i.join("\n"),this._updateCSS(),ue.RW.setColorMap(s),this._onColorThemeChange.fire(t),t.id}_updateCSS(){this._allCSS=`${this._codiconCSS}\n${this._themeCSS}`,this._styleElements.forEach((e=>e.innerHTML=this._allCSS))}getFileIconTheme(){return{hasFileIcons:!1,hasFolderIcons:!1,hidesExplorerArrows:!1}}}const sr="data-keybinding-context";class or{constructor(e,t){this._id=e,this._parent=t,this._value=Object.create(null),this._value._contextId=e}setValue(e,t){return this._value[e]!==t&&(this._value[e]=t,!0)}removeValue(e){return e in this._value&&(delete this._value[e],!0)}getValue(e){const t=this._value[e];return void 0===t&&this._parent?this._parent.getValue(e):t}}class ar extends or{constructor(){super(-1,null)}setValue(e,t){return!1}removeValue(e){return!1}getValue(e){}}ar.INSTANCE=new ar;class lr extends or{constructor(e,t,i){super(e,null),this._configurationService=t,this._values=new Map,this._listener=this._configurationService.onDidChangeConfiguration((e=>{if(6===e.source){const e=Array.from(this._values.keys());this._values.clear(),i.fire(new hr(e))}else{const t=[];for(const i of e.affectedKeys){const e=`config.${i}`;this._values.has(e)&&(this._values.delete(e),t.push(e))}i.fire(new hr(t))}}))}dispose(){this._listener.dispose()}getValue(e){if(0!==e.indexOf(lr._keyPrefix))return super.getValue(e);if(this._values.has(e))return this._values.get(e);const t=e.substr(lr._keyPrefix.length),i=this._configurationService.getValue(t);let n;switch(typeof i){case"number":case"boolean":case"string":n=i;break;default:Array.isArray(i)&&(n=JSON.stringify(i))}return this._values.set(e,n),n}setValue(e,t){return super.setValue(e,t)}removeValue(e){return super.removeValue(e)}}lr._keyPrefix="config.";class cr{constructor(e,t,i){this._service=e,this._key=t,this._defaultValue=i,this.reset()}set(e){this._service.setContext(this._key,e)}reset(){void 0===this._defaultValue?this._service.removeContext(this._key):this._service.setContext(this._key,this._defaultValue)}get(){return this._service.getContextKeyValue(this._key)}}class dr{constructor(e){this.key=e}affectsSome(e){return e.has(this.key)}}class hr{constructor(e){this.keys=e}affectsSome(e){for(const t of this.keys)if(e.has(t))return!0;return!1}}class ur{constructor(e){this.events=e}affectsSome(e){for(const t of this.events)if(t.affectsSome(e))return!0;return!1}}class gr{constructor(e){this._onDidChangeContext=new B.K3({merge:e=>new ur(e)}),this._isDisposed=!1,this._myContextId=e}createKey(e,t){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new cr(this,e,t)}get onDidChangeContext(){return this._onDidChangeContext.event}bufferChangeEvents(e){this._onDidChangeContext.pause();try{e()}finally{this._onDidChangeContext.resume()}}createScoped(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");return new pr(this,e)}contextMatchesRules(e){if(this._isDisposed)throw new Error("AbstractContextKeyService has been disposed");const t=this.getContextValuesContainer(this._myContextId);return ri.contextMatchesRules(t,e)}getContextKeyValue(e){if(!this._isDisposed)return this.getContextValuesContainer(this._myContextId).getValue(e)}setContext(e,t){if(this._isDisposed)return;const i=this.getContextValuesContainer(this._myContextId);i&&i.setValue(e,t)&&this._onDidChangeContext.fire(new dr(e))}removeContext(e){this._isDisposed||this.getContextValuesContainer(this._myContextId).removeValue(e)&&this._onDidChangeContext.fire(new dr(e))}getContext(e){return this._isDisposed?ar.INSTANCE:this.getContextValuesContainer(function(e){for(;e;){if(e.hasAttribute(sr)){const t=e.getAttribute(sr);return t?parseInt(t,10):NaN}e=e.parentElement}return 0}(e))}}let fr=class extends gr{constructor(e){super(0),this._contexts=new Map,this._toDispose=new _e.SL,this._lastContextId=0;const t=new lr(this._myContextId,e,this._onDidChangeContext);this._contexts.set(this._myContextId,t),this._toDispose.add(t)}dispose(){this._isDisposed=!0,this._toDispose.dispose()}getContextValuesContainer(e){return this._isDisposed?ar.INSTANCE:this._contexts.get(e)||ar.INSTANCE}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ContextKeyService has been disposed");let t=++this._lastContextId;return this._contexts.set(t,new or(t,this.getContextValuesContainer(e))),t}disposeContext(e){this._isDisposed||this._contexts.delete(e)}};fr=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([function(e,t){return function(i,n){t(i,n,e)}}(0,qt.Ui)],fr);class pr extends gr{constructor(e,t){super(e.createChildContext()),this._parent=e,t&&(this._domNode=t,this._domNode.setAttribute(sr,String(this._myContextId)))}dispose(){this._isDisposed=!0,this._parent.disposeContext(this._myContextId),this._domNode&&(this._domNode.removeAttribute(sr),this._domNode=void 0)}get onDidChangeContext(){return B.ju.any(this._parent.onDidChangeContext,this._onDidChangeContext.event)}getContextValuesContainer(e){return this._isDisposed?ar.INSTANCE:this._parent.getContextValuesContainer(e)}createChildContext(e=this._myContextId){if(this._isDisposed)throw new Error("ScopedContextKeyService has been disposed");return this._parent.createChildContext(e)}disposeContext(e){this._isDisposed||this._parent.disposeContext(e)}}ee.P.registerCommand(Vi.Eq,(function(e,t,i){e.get(Vi.i6).createKey(String(t),i)}));var mr=i(74741),_r=i(90317),br=i(9802),vr=i(61134),yr=i(10161);function wr(e,t,i){const n=i.offset+i.size;return 0===i.position?t<=e-n?n:t<=i.offset?i.offset-t:Math.max(e-t,0):t<=i.offset?i.offset-t:t<=e-n?n:0}class Cr extends _e.JT{constructor(e,t){super(),this.container=null,this.delegate=null,this.toDisposeOnClean=_e.JT.None,this.toDisposeOnSetContainer=_e.JT.None,this.shadowRoot=null,this.shadowRootHostElement=null,this.view=G.$(".context-view"),this.useFixedPosition=!1,this.useShadowDOM=!1,G.Cp(this.view),this.setContainer(e,t),this._register((0,_e.OF)((()=>this.setContainer(null,1))))}setContainer(e,t){if(this.container&&(this.toDisposeOnSetContainer.dispose(),this.shadowRoot?(this.shadowRoot.removeChild(this.view),this.shadowRoot=null,G.ZF(this.shadowRootHostElement),this.shadowRootHostElement=null):this.container.removeChild(this.view),this.container=null),e){this.container=e,this.useFixedPosition=1!==t,this.useShadowDOM=3===t,this.useShadowDOM?(this.shadowRootHostElement=G.$(".shadow-root-host"),this.container.appendChild(this.shadowRootHostElement),this.shadowRoot=this.shadowRootHostElement.attachShadow({mode:"open"}),this.shadowRoot.innerHTML=`\n\t\t\t\t\t<style>\n\t\t\t\t\t\t${Sr}\n\t\t\t\t\t</style>\n\t\t\t\t`,this.shadowRoot.appendChild(this.view),this.shadowRoot.appendChild(G.$("slot"))):this.container.appendChild(this.view);const i=new _e.SL;Cr.BUBBLE_UP_EVENTS.forEach((e=>{i.add(G.mu(this.container,e,(e=>{this.onDOMEvent(e,!1)})))})),Cr.BUBBLE_DOWN_EVENTS.forEach((e=>{i.add(G.mu(this.container,e,(e=>{this.onDOMEvent(e,!0)}),!0))})),this.toDisposeOnSetContainer=i}}show(e){this.isVisible()&&this.hide(),G.PO(this.view),this.view.className="context-view",this.view.style.top="0px",this.view.style.left="0px",this.view.style.zIndex="2500",this.view.style.position=this.useFixedPosition?"fixed":"absolute",G.$Z(this.view),this.toDisposeOnClean=e.render(this.view)||_e.JT.None,this.delegate=e,this.doLayout(),this.delegate.focus&&this.delegate.focus()}getViewElement(){return this.view}layout(){this.isVisible()&&(!1!==this.delegate.canRelayout||ve.gn&&yr.D.pointerEvents?(this.delegate.layout&&this.delegate.layout(),this.doLayout()):this.hide())}doLayout(){if(!this.isVisible())return;let e,t=this.delegate.getAnchor();if(G.Re(t)){let i=G.i(t);e={top:i.top,left:i.left,width:i.width,height:i.height}}else e={top:t.y,left:t.x,width:t.width||1,height:t.height||2};const i=G.w(this.view),n=G.wn(this.view),r=this.delegate.anchorPosition||0,s=this.delegate.anchorAlignment||0,o={offset:e.top-window.pageYOffset,size:e.height,position:0===r?0:1};let a;a=0===s?{offset:e.left,size:0,position:0}:{offset:e.left+e.width,size:0,position:1};const l=wr(window.innerHeight,n,o)+window.pageYOffset;vr.e.intersects({start:l,end:l+n},{start:o.offset,end:o.offset+o.size})&&(a.size=e.width,1===s&&(a.offset=e.left));const c=wr(window.innerWidth,i,a);G.GK(this.view,"top","bottom","left","right"),G.cn(this.view,0===r?"bottom":"top"),G.cn(this.view,0===s?"left":"right"),G.og(this.view,"fixed",this.useFixedPosition);const d=G.i(this.container);this.view.style.top=l-(this.useFixedPosition?G.i(this.view).top:d.top)+"px",this.view.style.left=c-(this.useFixedPosition?G.i(this.view).left:d.left)+"px",this.view.style.width="initial"}hide(e){const t=this.delegate;this.delegate=null,(null==t?void 0:t.onHide)&&t.onHide(e),this.toDisposeOnClean.dispose(),G.Cp(this.view)}isVisible(){return!!this.delegate}onDOMEvent(e,t){this.delegate&&(this.delegate.onDOMEvent?this.delegate.onDOMEvent(e,document.activeElement):t&&!G.jg(e.target,this.container)&&this.hide())}dispose(){this.hide(),super.dispose()}}Cr.BUBBLE_UP_EVENTS=["click","keydown","focus","blur"],Cr.BUBBLE_DOWN_EVENTS=["click"];let Sr='\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t@font-face {\n\t\tfont-family: "codicon";\n\t\tsrc: url("./codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6") format("truetype");\n\t}\n\n\t.codicon[class*=\'codicon-\'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "HelveticaNeue-Light", system-ui, "Ubuntu", "Droid Sans", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic Pro", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, "Nanum Gothic", "Apple SD Gothic Neo", "AppleGothic", sans-serif; }\n\n\t:host-context(.windows) { font-family: "Segoe WPC", "Segoe UI", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft YaHei", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: "Segoe WPC", "Segoe UI", "Microsoft Jhenghei", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: "Segoe WPC", "Segoe UI", "Yu Gothic UI", "Meiryo UI", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: "Segoe WPC", "Segoe UI", "Malgun Gothic", "Dotom", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, "Ubuntu", "Droid Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans SC", "Source Han Sans CN", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans TC", "Source Han Sans TW", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans J", "Source Han Sans JP", "Source Han Sans", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, "Ubuntu", "Droid Sans", "Source Han Sans K", "Source Han Sans JR", "Source Han Sans", "UnDotum", "FBaekmuk Gulim", sans-serif; }\n';var kr=i(73046),xr=i(76033),Lr=i(16268),Mr=i(23938);const Dr=/\(&([^\s&])\)|(^|[^&])&([^\s&])/,Nr=/(&)?(&)([^\s&])/g,Er=(0,kr.q5)("menu-selection",kr.lA.check),Tr=(0,kr.q5)("menu-submenu",kr.lA.chevronRight);var Ir;!function(e){e[e.Right=0]="Right",e[e.Left=1]="Left"}(Ir||(Ir={}));class Or extends _r.o{constructor(e,t,i={}){(0,G.cn)(e,"monaco-menu-container"),e.setAttribute("role","presentation");const n=document.createElement("div");(0,G.cn)(n,"monaco-menu"),n.setAttribute("role","presentation"),super(n,{orientation:2,actionViewItemProvider:e=>this.doGetActionViewItem(e,i,r),context:i.context,actionRunner:i.actionRunner,ariaLabel:i.ariaLabel,triggerKeys:{keys:[3,...ve.dz||ve.IJ?[10]:[]],keyDown:!0}}),this.menuElement=n,this.actionsList.setAttribute("role","menu"),this.actionsList.tabIndex=0,this.menuDisposables=this._register(new _e.SL),this.initializeStyleSheet(e),(0,G.nm)(n,G.tw.KEY_DOWN,(e=>{new jt.y(e).equals(2)&&e.preventDefault()})),i.enableMnemonics&&this.menuDisposables.add((0,G.nm)(n,G.tw.KEY_DOWN,(e=>{const t=e.key.toLocaleLowerCase();if(this.mnemonics.has(t)){G.zB.stop(e,!0);const i=this.mnemonics.get(t);if(1===i.length&&(i[0]instanceof Rr&&i[0].container&&this.focusItemByElement(i[0].container),i[0].onClick(e)),i.length>1){const e=i.shift();e&&e.container&&(this.focusItemByElement(e.container),i.push(e)),this.mnemonics.set(t,i)}}}))),ve.IJ&&this._register((0,G.nm)(n,G.tw.KEY_DOWN,(e=>{const t=new jt.y(e);t.equals(14)||t.equals(11)?(this.focusedItem=this.viewItems.length-1,this.focusNext(),G.zB.stop(e,!0)):(t.equals(13)||t.equals(12))&&(this.focusedItem=0,this.focusPrevious(),G.zB.stop(e,!0))}))),this._register((0,G.nm)(this.domNode,G.tw.MOUSE_OUT,(e=>{let t=e.relatedTarget;(0,G.jg)(t,this.domNode)||(this.focusedItem=void 0,this.updateFocus(),e.stopPropagation())}))),this._register((0,G.nm)(this.actionsList,G.tw.MOUSE_OVER,(e=>{let t=e.target;if(t&&(0,G.jg)(t,this.actionsList)&&t!==this.actionsList){for(;t.parentElement!==this.actionsList&&null!==t.parentElement;)t=t.parentElement;if((0,G.pv)(t,"action-item")){const e=this.focusedItem;this.setFocusedItem(t),e!==this.focusedItem&&this.updateFocus()}}})));let r={parent:this};this.mnemonics=new Map,this.scrollableElement=this._register(new br.s$(n,{alwaysConsumeMouseWheel:!0,horizontal:2,vertical:3,verticalScrollbarSize:7,handleMouseWheel:!0,useShadows:!0}));const s=this.scrollableElement.getDomNode();s.style.position="",this._register((0,G.nm)(s,G.tw.MOUSE_UP,(e=>{e.preventDefault()}))),n.style.maxHeight=`${Math.max(10,window.innerHeight-e.getBoundingClientRect().top-35)}px`,t=t.filter((e=>{var t;return!(null===(t=i.submenuIds)||void 0===t?void 0:t.has(e.id))||(console.warn(`Found submenu cycle: ${e.id}`),!1)})),this.push(t,{icon:!0,label:!0,isMenu:!0}),e.appendChild(this.scrollableElement.getDomNode()),this.scrollableElement.scanDomNode(),this.viewItems.filter((e=>!(e instanceof Pr))).forEach(((e,t,i)=>{e.updatePositionInSet(t+1,i.length)}))}initializeStyleSheet(e){(0,G.OO)(e)?(this.styleSheet=(0,G.dS)(e),this.styleSheet.innerHTML=Fr):(Or.globalStyleSheet||(Or.globalStyleSheet=(0,G.dS)(),Or.globalStyleSheet.innerHTML=Fr),this.styleSheet=Or.globalStyleSheet)}style(e){const t=this.getContainer(),i=e.foregroundColor?`${e.foregroundColor}`:"",n=e.backgroundColor?`${e.backgroundColor}`:"",r=e.borderColor?`1px solid ${e.borderColor}`:"",s=e.shadowColor?`0 2px 4px ${e.shadowColor}`:"";t.style.border=r,this.domNode.style.color=i,this.domNode.style.backgroundColor=n,t.style.boxShadow=s,this.viewItems&&this.viewItems.forEach((t=>{(t instanceof Ar||t instanceof Pr)&&t.style(e)}))}getContainer(){return this.scrollableElement.getDomNode()}get onScroll(){return this.scrollableElement.onScroll}focusItemByElement(e){const t=this.focusedItem;this.setFocusedItem(e),t!==this.focusedItem&&this.updateFocus()}setFocusedItem(e){for(let t=0;t<this.actionsList.children.length;t++)if(e===this.actionsList.children[t]){this.focusedItem=t;break}}updateFocus(e){super.updateFocus(e,!0),void 0!==this.focusedItem&&this.scrollableElement.setScrollPosition({scrollTop:Math.round(this.menuElement.scrollTop)})}doGetActionViewItem(e,t,i){if(e instanceof mr.Z0)return new Pr(t.context,e,{icon:!0});if(e instanceof mr.wY){const n=new Rr(e,e.actions,i,Object.assign(Object.assign({},t),{submenuIds:new Set([...t.submenuIds||[],e.id])}));if(t.enableMnemonics){const e=n.getMnemonic();if(e&&n.isEnabled()){let t=[];this.mnemonics.has(e)&&(t=this.mnemonics.get(e)),t.push(n),this.mnemonics.set(e,t)}}return n}{const i={enableMnemonics:t.enableMnemonics,useEventAsContext:t.useEventAsContext};if(t.getKeyBinding){const n=t.getKeyBinding(e);if(n){const e=n.getLabel();e&&(i.keybinding=e)}}const n=new Ar(t.context,e,i);if(t.enableMnemonics){const e=n.getMnemonic();if(e&&n.isEnabled()){let t=[];this.mnemonics.has(e)&&(t=this.mnemonics.get(e)),t.push(n),this.mnemonics.set(e,t)}}return n}}}class Ar extends xr.Y{constructor(e,t,i={}){if(i.isMenu=!0,super(t,t,i),this.options=i,this.options.icon=void 0!==i.icon&&i.icon,this.options.label=void 0===i.label||i.label,this.cssClass="",this.options.label&&i.enableMnemonics){let e=this.getAction().label;if(e){let t=Dr.exec(e);t&&(this.mnemonic=(t[1]?t[1]:t[3]).toLocaleLowerCase())}}this.runOnceToEnableMouseUp=new me.pY((()=>{this.element&&(this._register((0,G.nm)(this.element,G.tw.MOUSE_UP,(e=>{if(G.zB.stop(e,!0),Lr.vU){if(new Mr.n(e).rightButton)return;this.onClick(e)}setTimeout((()=>{this.onClick(e)}),0)}))),this._register((0,G.nm)(this.element,G.tw.CONTEXT_MENU,(e=>{G.zB.stop(e,!0)}))))}),100),this._register(this.runOnceToEnableMouseUp)}render(e){super.render(e),this.element&&(this.container=e,this.item=(0,G.R3)(this.element,(0,G.$)("a.action-menu-item")),this._action.id===mr.Z0.ID?this.item.setAttribute("role","presentation"):(this.item.setAttribute("role","menuitem"),this.mnemonic&&this.item.setAttribute("aria-keyshortcuts",`${this.mnemonic}`)),this.check=(0,G.R3)(this.item,(0,G.$)("span.menu-item-check"+Er.cssSelector)),this.check.setAttribute("role","none"),this.label=(0,G.R3)(this.item,(0,G.$)("span.action-label")),this.options.label&&this.options.keybinding&&((0,G.R3)(this.item,(0,G.$)("span.keybinding")).textContent=this.options.keybinding),this.runOnceToEnableMouseUp.schedule(),this.updateClass(),this.updateLabel(),this.updateTooltip(),this.updateEnabled(),this.updateChecked())}blur(){super.blur(),this.applyStyle()}focus(){super.focus(),this.item&&this.item.focus(),this.applyStyle()}updatePositionInSet(e,t){this.item&&(this.item.setAttribute("aria-posinset",`${e}`),this.item.setAttribute("aria-setsize",`${t}`))}updateLabel(){if(this.label&&this.options.label){(0,G.PO)(this.label);let e=(0,kr.QF)(this.getAction().label);if(e){const t=function(e){const t=Dr,i=t.exec(e);if(!i)return e;const n=!i[1];return e.replace(t,n?"$2$3":"").trim()}(e);this.options.enableMnemonics||(e=t),this.label.setAttribute("aria-label",t.replace(/&&/g,"&"));const i=Dr.exec(e);if(i){e=Fe.YU(e),Nr.lastIndex=0;let t=Nr.exec(e);for(;t&&t[1];)t=Nr.exec(e);const n=e=>e.replace(/&&/g,"&");t?this.label.append(Fe.j3(n(e.substr(0,t.index))," "),(0,G.$)("u",{"aria-hidden":"true"},t[3]),Fe.oL(n(e.substr(t.index+t[0].length))," ")):this.label.innerText=n(e).trim(),this.item&&this.item.setAttribute("aria-keyshortcuts",(i[1]?i[1]:i[3]).toLocaleLowerCase())}else this.label.innerText=e.replace(/&&/g,"&").trim()}}}updateTooltip(){let e=null;this.getAction().tooltip?e=this.getAction().tooltip:!this.options.label&&this.getAction().label&&this.options.icon&&(e=this.getAction().label,this.options.keybinding&&(e=ii.N({key:"titleLabel",comment:["action title","action keybinding"]},"{0} ({1})",e,this.options.keybinding))),e&&this.item&&(this.item.title=e)}updateClass(){this.cssClass&&this.item&&(0,G.GK)(this.item,this.cssClass),this.options.icon&&this.label?(this.cssClass=this.getAction().class||"",(0,G.cn)(this.label,"icon"),this.cssClass&&(0,G.PT)(this.label,this.cssClass),this.updateEnabled()):this.label&&(0,G.IV)(this.label,"icon")}updateEnabled(){this.getAction().enabled?(this.element&&(0,G.IV)(this.element,"disabled"),this.item&&((0,G.IV)(this.item,"disabled"),this.item.tabIndex=0)):(this.element&&(0,G.cn)(this.element,"disabled"),this.item&&((0,G.cn)(this.item,"disabled"),(0,G.eJ)(this.item)))}updateChecked(){this.item&&(this.getAction().checked?((0,G.cn)(this.item,"checked"),this.item.setAttribute("role","menuitemcheckbox"),this.item.setAttribute("aria-checked","true")):((0,G.IV)(this.item,"checked"),this.item.setAttribute("role","menuitem"),this.item.setAttribute("aria-checked","false")))}getMnemonic(){return this.mnemonic}applyStyle(){if(!this.menuStyle)return;const e=this.element&&(0,G.pv)(this.element,"focused"),t=e&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor,i=e&&this.menuStyle.selectionBackgroundColor?this.menuStyle.selectionBackgroundColor:void 0,n=e&&this.menuStyle.selectionBorderColor?`thin solid ${this.menuStyle.selectionBorderColor}`:"";this.item&&(this.item.style.color=t?t.toString():"",this.item.style.backgroundColor=i?i.toString():""),this.check&&(this.check.style.color=t?t.toString():""),this.container&&(this.container.style.border=n)}style(e){this.menuStyle=e,this.applyStyle()}}class Rr extends Ar{constructor(e,t,i,n){super(e,e,n),this.submenuActions=t,this.parentData=i,this.submenuOptions=n,this.mysubmenu=null,this.submenuDisposables=this._register(new _e.SL),this.mouseOver=!1,this.expandDirection=n&&void 0!==n.expandDirection?n.expandDirection:Ir.Right,this.showScheduler=new me.pY((()=>{this.mouseOver&&(this.cleanupExistingSubmenu(!1),this.createSubmenu(!1))}),250),this.hideScheduler=new me.pY((()=>{this.element&&!(0,G.jg)((0,G.vY)(),this.element)&&this.parentData.submenu===this.mysubmenu&&(this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!0))}),750)}render(e){super.render(e),this.element&&(this.item&&((0,G.cn)(this.item,"monaco-submenu-item"),this.item.setAttribute("aria-haspopup","true"),this.updateAriaExpanded("false"),this.submenuIndicator=(0,G.R3)(this.item,(0,G.$)("span.submenu-indicator"+Tr.cssSelector)),this.submenuIndicator.setAttribute("aria-hidden","true")),this._register((0,G.nm)(this.element,G.tw.KEY_UP,(e=>{let t=new jt.y(e);(t.equals(17)||t.equals(3))&&(G.zB.stop(e,!0),this.createSubmenu(!0))}))),this._register((0,G.nm)(this.element,G.tw.KEY_DOWN,(e=>{let t=new jt.y(e);(0,G.vY)()===this.item&&(t.equals(17)||t.equals(3))&&G.zB.stop(e,!0)}))),this._register((0,G.nm)(this.element,G.tw.MOUSE_OVER,(e=>{this.mouseOver||(this.mouseOver=!0,this.showScheduler.schedule())}))),this._register((0,G.nm)(this.element,G.tw.MOUSE_LEAVE,(e=>{this.mouseOver=!1}))),this._register((0,G.nm)(this.element,G.tw.FOCUS_OUT,(e=>{this.element&&!(0,G.jg)((0,G.vY)(),this.element)&&this.hideScheduler.schedule()}))),this._register(this.parentData.parent.onScroll((()=>{this.parentData.parent.focus(!1),this.cleanupExistingSubmenu(!1)}))))}onClick(e){G.zB.stop(e,!0),this.cleanupExistingSubmenu(!1),this.createSubmenu(!0)}cleanupExistingSubmenu(e){if(this.parentData.submenu&&(e||this.parentData.submenu!==this.mysubmenu)){try{this.parentData.submenu.dispose()}catch(e){}this.parentData.submenu=void 0,this.updateAriaExpanded("false"),this.submenuContainer&&(this.submenuDisposables.clear(),this.submenuContainer=void 0)}}calculateSubmenuMenuLayout(e,t,i,n){const r={top:0,left:0};return r.left=wr(e.width,t.width,{position:n===Ir.Right?0:1,offset:i.left,size:i.width}),r.left>=i.left&&r.left<i.left+i.width&&(i.left+10+t.width<=e.width&&(r.left=i.left+10),i.top+=10,i.height=0),r.top=wr(e.height,t.height,{position:0,offset:i.top,size:0}),r.top+t.height===i.top&&r.top+i.height+t.height<=e.height&&(r.top+=i.height),r}createSubmenu(e=!0){if(this.element)if(this.parentData.submenu)this.parentData.submenu.focus(!1);else{this.updateAriaExpanded("true"),this.submenuContainer=(0,G.R3)(this.element,(0,G.$)("div.monaco-submenu")),(0,G.PT)(this.submenuContainer,"menubar-menu-items-holder","context-view");const t=getComputedStyle(this.parentData.parent.domNode),i=parseFloat(t.paddingTop||"0")||0;this.submenuContainer.style.zIndex="1",this.submenuContainer.style.position="fixed",this.submenuContainer.style.top="0",this.submenuContainer.style.left="0",this.parentData.submenu=new Or(this.submenuContainer,this.submenuActions,this.submenuOptions),this.menuStyle&&this.parentData.submenu.style(this.menuStyle);const n=this.element.getBoundingClientRect(),r={top:n.top-i,left:n.left,height:n.height+2*i,width:n.width},s=this.submenuContainer.getBoundingClientRect(),{top:o,left:a}=this.calculateSubmenuMenuLayout({height:window.innerHeight,width:window.innerWidth},s,r,this.expandDirection);this.submenuContainer.style.left=`${a}px`,this.submenuContainer.style.top=`${o}px`,this.submenuDisposables.add((0,G.nm)(this.submenuContainer,G.tw.KEY_UP,(e=>{new jt.y(e).equals(15)&&(G.zB.stop(e,!0),this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0))}))),this.submenuDisposables.add((0,G.nm)(this.submenuContainer,G.tw.KEY_DOWN,(e=>{new jt.y(e).equals(15)&&G.zB.stop(e,!0)}))),this.submenuDisposables.add(this.parentData.submenu.onDidCancel((()=>{this.parentData.parent.focus(),this.cleanupExistingSubmenu(!0)}))),this.parentData.submenu.focus(e),this.mysubmenu=this.parentData.submenu}}updateAriaExpanded(e){var t;this.item&&(null===(t=this.item)||void 0===t||t.setAttribute("aria-expanded",e))}applyStyle(){if(super.applyStyle(),!this.menuStyle)return;const e=this.element&&(0,G.pv)(this.element,"focused")&&this.menuStyle.selectionForegroundColor?this.menuStyle.selectionForegroundColor:this.menuStyle.foregroundColor;this.submenuIndicator&&(this.submenuIndicator.style.color=e?`${e}`:""),this.parentData.submenu&&this.parentData.submenu.style(this.menuStyle)}dispose(){super.dispose(),this.hideScheduler.dispose(),this.mysubmenu&&(this.mysubmenu.dispose(),this.mysubmenu=null),this.submenuContainer&&(this.submenuContainer=void 0)}}class Pr extends xr.g{style(e){this.label&&(this.label.style.borderBottomColor=e.separatorColor?`${e.separatorColor}`:"")}}let Fr=`\n.monaco-menu {\n\tfont-size: 13px;\n\n}\n\n${(0,qn.a)(Er)}\n${(0,qn.a)(Tr)}\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\topacity: 0.4;\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tpadding: 0.5em 0 0 0;\n\tmargin-bottom: 0.5em;\n\twidth: 100%;\n\theight: 0px !important;\n\tmargin-left: .8em !important;\n\tmargin-right: .8em !important;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tborder: thin solid transparent; /* prevents jumping behaviour on hover or focus */\n}\n\n\n/* High Contrast Theming */\n:host-context(.hc-black) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: .5em 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 1.8em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tpadding: 0.2em 0 0 0;\n\tmargin-bottom: 0.2em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}\n\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: #DDD 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: #DDD 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: #DDD 6px 6px 6px -6px inset;\n}\n\n/* ---------- Default Style ---------- */\n\n:host-context(.vs) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(100, 100, 100, .4);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(121, 121, 121, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(111, 195, 223, .6);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(100, 100, 100, .7);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(111, 195, 223, .8);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(0, 0, 0, .6);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(191, 191, 191, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(111, 195, 223, 1);\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: #000 6px 0 6px -6px inset;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: #000 6px 6px 6px -6px inset;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: none;\n}\n`;var Br=i(88810),Wr=i(4850);class Yr{constructor(e,t,i,n,r){this.contextViewService=e,this.telemetryService=t,this.notificationService=i,this.keybindingService=n,this.themeService=r,this.focusToReturn=null,this.block=null,this.options={blockMouse:!0}}configure(e){this.options=e}showContextMenu(e){const t=e.getActions();if(!t.length)return;let i;this.focusToReturn=document.activeElement;let n=(0,G.Re)(e.domForShadowRoot)?e.domForShadowRoot:void 0;this.contextViewService.showContextView({getAnchor:()=>e.getAnchor(),canRelayout:!1,anchorAlignment:e.anchorAlignment,render:n=>{let r=e.getMenuClassName?e.getMenuClassName():"";r&&(n.className+=" "+r),this.options.blockMouse&&(this.block=n.appendChild((0,G.$)(".context-view-block")),this.block.style.position="fixed",this.block.style.cursor="initial",this.block.style.left="0",this.block.style.top="0",this.block.style.width="100%",this.block.style.height="100%",this.block.style.zIndex="-1",(0,Wr.j)(this.block,G.tw.MOUSE_DOWN)((e=>e.stopPropagation())));const s=new _e.SL,o=e.actionRunner||new mr.Wi;return o.onDidBeforeRun(this.onActionRun,this,s),o.onDidRun(this.onDidActionRun,this,s),i=new Or(n,t,{actionViewItemProvider:e.getActionViewItem,context:e.getActionsContext?e.getActionsContext():null,actionRunner:o,getKeyBinding:e.getKeyBinding?e.getKeyBinding:e=>this.keybindingService.lookupKeybinding(e.id)}),s.add((0,Br.tj)(i,this.themeService)),i.onDidCancel((()=>this.contextViewService.hideContextView(!0)),null,s),i.onDidBlur((()=>this.contextViewService.hideContextView(!0)),null,s),(0,Wr.j)(window,G.tw.BLUR)((()=>{this.contextViewService.hideContextView(!0)}),null,s),(0,Wr.j)(window,G.tw.MOUSE_DOWN)((e=>{if(e.defaultPrevented)return;let t=new Mr.n(e),i=t.target;if(!t.rightButton){for(;i;){if(i===n)return;i=i.parentElement}this.contextViewService.hideContextView(!0)}}),null,s),(0,_e.F8)(s,i)},focus:()=>{i&&i.focus(!!e.autoSelectFirstItem)},onHide:t=>{e.onHide&&e.onHide(!!t),this.block&&((0,G.ZF)(this.block),this.block=null),this.focusToReturn&&this.focusToReturn.focus()}},n,!!n)}onActionRun(e){this.telemetryService&&this.telemetryService.publicLog2("workbenchActionExecuted",{id:e.action.id,from:"contextMenu"}),this.contextViewService.hideContextView(!1),this.focusToReturn&&this.focusToReturn.focus()}onDidActionRun(e){e.error&&this.notificationService&&this.notificationService.error(e.error)}}var Hr=i(10829),jr=function(e,t){return function(i,n){t(i,n,e)}};let Vr=class extends _e.JT{constructor(e,t,i,n,r){super(),this._onDidContextMenu=this._register(new B.Q5),this.onDidContextMenu=this._onDidContextMenu.event,this.contextMenuHandler=new Yr(i,e,t,n,r)}configure(e){this.contextMenuHandler.configure(e)}showContextMenu(e){this.contextMenuHandler.showContextMenu(e),this._onDidContextMenu.fire()}};Vr=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([jr(0,Hr.b),jr(1,pi.lT),jr(2,zi.u),jr(3,$i.d),jr(4,Ki.XE)],Vr);const zr=(0,Ui.yh)("layoutService");let Ur=class extends _e.JT{constructor(e){super(),this.layoutService=e,this.currentViewDisposable=_e.JT.None,this.container=e.container,this.contextView=this._register(new Cr(this.container,1)),this.layout(),this._register(e.onLayout((()=>this.layout())))}setContainer(e,t){this.contextView.setContainer(e,t||1)}showContextView(e,t,i){t?t!==this.container&&(this.container=t,this.setContainer(t,i?3:2)):this.container!==this.layoutService.container&&(this.container=this.layoutService.container,this.setContainer(this.container,1)),this.contextView.show(e);const n=(0,_e.OF)((()=>{this.currentViewDisposable===n&&this.hideContextView()}));return this.currentViewDisposable=n,n}getContextViewElement(){return this.contextView.getViewElement()}layout(){this.contextView.layout()}hideContextView(e){this.contextView.hide(e)}};Ur=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([function(e,t){return function(i,n){t(i,n,e)}}(0,zr)],Ur);var $r=i(28820);class Kr{constructor(e){this.incoming=new Map,this.outgoing=new Map,this.data=e}}class qr{constructor(e){this._hashFn=e,this._nodes=new Map}roots(){const e=[];for(let t of this._nodes.values())0===t.outgoing.size&&e.push(t);return e}insertEdge(e,t){const i=this.lookupOrInsertNode(e),n=this.lookupOrInsertNode(t);i.outgoing.set(this._hashFn(t),n),n.incoming.set(this._hashFn(e),i)}removeNode(e){const t=this._hashFn(e);this._nodes.delete(t);for(let e of this._nodes.values())e.outgoing.delete(t),e.incoming.delete(t)}lookupOrInsertNode(e){const t=this._hashFn(e);let i=this._nodes.get(t);return i||(i=new Kr(e),this._nodes.set(t,i)),i}isEmpty(){return 0===this._nodes.size}toString(){let e=[];for(let[t,i]of this._nodes)e.push(`${t}, (incoming)[${[...i.incoming.keys()].join(", ")}], (outgoing)[${[...i.outgoing.keys()].join(",")}]`);return e.join("\n")}}var Gr=i(97108),Zr=i(60972);class Jr extends Error{constructor(e){super("cyclic dependency between services"),this.message=e.toString()}}class Qr{constructor(e=new Zr.y,t=!1,i){this._services=e,this._strict=t,this._parent=i,this._services.set(Ui.TG,this)}createChild(e){return new Qr(e,this._strict,this)}invokeFunction(e,...t){let i=Xr.traceInvocation(e),n=!1;try{return e({get:(e,t)=>{if(n)throw(0,be.L6)("service accessor is only valid during the invocation of its target method");const r=this._getOrCreateServiceInstance(e,i);if(!r&&t!==Ui.jt)throw new Error(`[invokeFunction] unknown service '${e}'`);return r}},...t)}finally{n=!0,i.stop()}}createInstance(e,...t){let i,n;return e instanceof Gr.M?(i=Xr.traceCreation(e.ctor),n=this._createInstance(e.ctor,e.staticArguments.concat(t),i)):(i=Xr.traceCreation(e),n=this._createInstance(e,t,i)),i.stop(),n}_createInstance(e,t=[],i){let n=Ui.I8.getServiceDependencies(e).sort(((e,t)=>e.index-t.index)),r=[];for(const t of n){let n=this._getOrCreateServiceInstance(t.id,i);if(!n&&this._strict&&!t.optional)throw new Error(`[createInstance] ${e.name} depends on UNKNOWN service ${t.id}.`);r.push(n)}let s=n.length>0?n[0].index:t.length;if(t.length!==s){console.warn(`[createInstance] First service dependency of ${e.name} at position ${s+1} conflicts with ${t.length} static arguments`);let i=s-t.length;t=i>0?t.concat(new Array(i)):t.slice(0,s)}return new e(...[...t,...r])}_setServiceInstance(e,t){if(this._services.get(e)instanceof Gr.M)this._services.set(e,t);else{if(!this._parent)throw new Error("illegalState - setting UNKNOWN service instance");this._parent._setServiceInstance(e,t)}}_getServiceInstanceOrDescriptor(e){let t=this._services.get(e);return!t&&this._parent?this._parent._getServiceInstanceOrDescriptor(e):t}_getOrCreateServiceInstance(e,t){let i=this._getServiceInstanceOrDescriptor(e);return i instanceof Gr.M?this._createAndCacheServiceInstance(e,i,t.branch(e,!0)):(t.branch(e,!1),i)}_createAndCacheServiceInstance(e,t,i){const n=new qr((e=>e.id.toString()));let r=0;const s=[{id:e,desc:t,_trace:i}];for(;s.length;){const t=s.pop();if(n.lookupOrInsertNode(t),r++>1e3)throw new Jr(n);for(let i of Ui.I8.getServiceDependencies(t.desc.ctor)){let r=this._getServiceInstanceOrDescriptor(i.id);if(r||i.optional||console.warn(`[createInstance] ${e} depends on ${i.id} which is NOT registered.`),r instanceof Gr.M){const e={id:i.id,desc:r,_trace:t._trace.branch(i.id,!0)};n.insertEdge(t,e),s.push(e)}}}for(;;){const e=n.roots();if(0===e.length){if(!n.isEmpty())throw new Jr(n);break}for(const{data:t}of e){const e=this._createServiceInstanceWithOwner(t.id,t.desc.ctor,t.desc.staticArguments,t.desc.supportsDelayedInstantiation,t._trace);this._setServiceInstance(t.id,e),n.removeNode(t)}}return this._getServiceInstanceOrDescriptor(e)}_createServiceInstanceWithOwner(e,t,i=[],n,r){if(this._services.get(e)instanceof Gr.M)return this._createServiceInstance(t,i,n,r);if(this._parent)return this._parent._createServiceInstanceWithOwner(e,t,i,n,r);throw new Error(`illegalState - creating UNKNOWN service instance ${t.name}`)}_createServiceInstance(e,t=[],i,n){if(i){const i=new me.Ue((()=>this._createInstance(e,t,n)));return new Proxy(Object.create(null),{get(e,t){if(t in e)return e[t];let n=i.value,r=n[t];return"function"!=typeof r||(r=r.bind(n),e[t]=r),r},set:(e,t,n)=>(i.value[t]=n,!0)})}return this._createInstance(e,t,n)}}class Xr{constructor(e,t){this.type=e,this.name=t,this._start=Date.now(),this._dep=[]}static traceInvocation(e){return Xr._None}static traceCreation(e){return Xr._None}branch(e,t){let i=new Xr(2,e.toString());return this._dep.push([e,t,i]),i}stop(){let e=Date.now()-this._start;Xr._totals+=e;let t=!1,i=[`${0===this.type?"CREATE":"CALL"} ${this.name}`,`${function e(i,n){let r=[],s=new Array(i+1).join("\t");for(const[o,a,l]of n._dep)if(a&&l){t=!0,r.push(`${s}CREATES -> ${o}`);let n=e(i+1,l);n&&r.push(n)}else r.push(`${s}uses -> ${o}`);return r.join("\n")}(1,this)}`,`DONE, took ${e.toFixed(2)}ms (grand total ${Xr._totals.toFixed(2)}ms)`];(e>2||t)&&console.log(i.join("\n"))}}Xr._None=new class extends Xr{constructor(){super(-1,null)}stop(){}branch(){return this}},Xr._totals=0;var es=i(44349),ts=i(58664),is=i(98674),ns=i(53725);class rs{constructor(){this._byResource=new Gt.Y9,this._byOwner=new Map}set(e,t,i){let n=this._byResource.get(e);n||(n=new Map,this._byResource.set(e,n)),n.set(t,i);let r=this._byOwner.get(t);r||(r=new Gt.Y9,this._byOwner.set(t,r)),r.set(e,i)}get(e,t){let i=this._byResource.get(e);return null==i?void 0:i.get(t)}delete(e,t){let i=!1,n=!1,r=this._byResource.get(e);r&&(i=r.delete(t));let s=this._byOwner.get(t);if(s&&(n=s.delete(e)),i!==n)throw new Error("illegal state");return i&&n}values(e){var t,i,n,r;return"string"==typeof e?null!==(i=null===(t=this._byOwner.get(e))||void 0===t?void 0:t.values())&&void 0!==i?i:ns.$.empty():Y.o.isUri(e)?null!==(r=null===(n=this._byResource.get(e))||void 0===n?void 0:n.values())&&void 0!==r?r:ns.$.empty():ns.$.map(ns.$.concat(...this._byOwner.values()),(e=>e[1]))}}class ss{constructor(e){this.errors=0,this.infos=0,this.warnings=0,this.unknowns=0,this._data=new Gt.Y9,this._service=e,this._subscription=e.onMarkerChanged(this._update,this)}dispose(){this._subscription.dispose()}_update(e){for(const t of e){const e=this._data.get(t);e&&this._substract(e);const i=this._resourceStats(t);this._add(i),this._data.set(t,i)}}_resourceStats(e){const t={errors:0,warnings:0,infos:0,unknowns:0};if(e.scheme===Q.l.inMemory||e.scheme===Q.l.walkThrough||e.scheme===Q.l.walkThroughSnippet)return t;for(const{severity:i}of this._service.read({resource:e}))i===is.ZL.Error?t.errors+=1:i===is.ZL.Warning?t.warnings+=1:i===is.ZL.Info?t.infos+=1:t.unknowns+=1;return t}_substract(e){this.errors-=e.errors,this.warnings-=e.warnings,this.infos-=e.infos,this.unknowns-=e.unknowns}_add(e){this.errors+=e.errors,this.warnings+=e.warnings,this.infos+=e.infos,this.unknowns+=e.unknowns}}class os{constructor(){this._onMarkerChanged=new B.Q5,this.onMarkerChanged=B.ju.debounce(this._onMarkerChanged.event,os._debouncer,0),this._data=new rs,this._stats=new ss(this)}dispose(){this._stats.dispose()}remove(e,t){for(const i of t||[])this.changeOne(e,i,[])}changeOne(e,t,i){if((0,De.XY)(i))this._data.delete(t,e)&&this._onMarkerChanged.fire([t]);else{const n=[];for(const r of i){const i=os._toMarker(e,t,r);i&&n.push(i)}this._data.set(t,e,n),this._onMarkerChanged.fire([t])}}static _toMarker(e,t,i){let{code:n,severity:r,message:s,source:o,startLineNumber:a,startColumn:l,endLineNumber:c,endColumn:d,relatedInformation:h,tags:u}=i;if(s)return a=a>0?a:1,l=l>0?l:1,c=c>=a?c:a,d=d>0?d:l,{resource:t,owner:e,code:n,severity:r,message:s,source:o,startLineNumber:a,startColumn:l,endLineNumber:c,endColumn:d,relatedInformation:h,tags:u}}read(e=Object.create(null)){let{owner:t,resource:i,severities:n,take:r}=e;if((!r||r<0)&&(r=-1),t&&i){const e=this._data.get(i,t);if(e){const t=[];for(const i of e)if(os._accept(i,n)){const e=t.push(i);if(r>0&&e===r)break}return t}return[]}if(t||i){const e=this._data.values(null!=i?i:t),s=[];for(const t of e)for(const e of t)if(os._accept(e,n)){const t=s.push(e);if(r>0&&t===r)return s}return s}{const e=[];for(let t of this._data.values())for(let i of t)if(os._accept(i,n)){const t=e.push(i);if(r>0&&t===r)return e}return e}}static _accept(e,t){return void 0===t||(t&e.severity)===e.severity}static _debouncer(e,t){e||(os._dedupeMap=new Gt.Y9,e=[]);for(const i of t)os._dedupeMap.has(i)||(os._dedupeMap.set(i,!0),e.push(i));return e}}var as=i(52365),ls=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},cs=function(e,t){return function(i,n){t(i,n,e)}};let ds=class{constructor(e){this._commandService=e}createMenu(e,t){return new hs(e,this._commandService,t,this)}};ds=ls([cs(0,ee.H)],ds);let hs=class e{constructor(e,t,i,n){this._id=e,this._commandService=t,this._contextKeyService=i,this._menuService=n,this._onDidChange=new B.Q5,this._dispoables=new _e.SL,this._menuGroups=[],this._contextKeys=new Set,this._build(),this._dispoables.add(B.ju.debounce(B.ju.filter(ji.BH.onDidChangeMenu,(e=>e.has(this._id))),(()=>{}),50)(this._build,this)),this._dispoables.add(B.ju.debounce(this._contextKeyService.onDidChangeContext,((e,t)=>e||t.affectsSome(this._contextKeys)),50)((e=>e&&this._onDidChange.fire(void 0)),this))}dispose(){this._dispoables.dispose(),this._onDidChange.dispose()}_build(){this._menuGroups.length=0,this._contextKeys.clear();const t=ji.BH.getMenuItems(this._id);let i;t.sort(e._compareMenuItems);for(let n of t){const t=n.group||"";if(i&&i[0]===t||(i=[t,[]],this._menuGroups.push(i)),i[1].push(n),e._fillInKbExprKeys(n.when,this._contextKeys),(0,ji.vr)(n)&&n.command.precondition&&e._fillInKbExprKeys(n.command.precondition,this._contextKeys),(0,ji.vr)(n)&&n.command.toggled){const t=n.command.toggled.condition||n.command.toggled;e._fillInKbExprKeys(t,this._contextKeys)}}this._onDidChange.fire(this)}get onDidChange(){return this._onDidChange.event}getActions(e){const t=[];for(let i of this._menuGroups){const[n,r]=i,s=[];for(const t of r)if(this._contextKeyService.contextMatchesRules(t.when)){const i=(0,ji.vr)(t)?new ji.U8(t.command,t.alt,e,this._contextKeyService,this._commandService):new ji.NZ(t,this._menuService,this._contextKeyService,e);s.push(i)}s.length>0&&t.push([n,s])}return t}static _fillInKbExprKeys(e,t){if(e)for(let i of e.keys())t.add(i)}static _compareMenuItems(t,i){let n=t.group,r=i.group;if(n!==r){if(!n)return 1;if(!r)return-1;if("navigation"===n)return-1;if("navigation"===r)return 1;let e=n.localeCompare(r);if(0!==e)return e}let s=t.order||0,o=i.order||0;return s<o?-1:s>o?1:e._compareTitles((0,ji.vr)(t)?t.command.title:t.title,(0,ji.vr)(i)?i.command.title:i.title)}static _compareTitles(e,t){const i="string"==typeof e?e:e.value,n="string"==typeof t?t:t.value;return i.localeCompare(n)}};hs=ls([cs(1,ee.H),cs(2,Vi.i6),cs(3,ji.co)],hs);var us=i(26479),gs=function(e,t){return function(i,n){t(i,n,e)}};function fs(e){return e.toString()}class ps extends _e.JT{constructor(e){super(),this.model=e,this._markersData=new Map,this._register((0,_e.OF)((()=>{this.model.deltaDecorations([...this._markersData.keys()],[]),this._markersData.clear()})))}update(e,t){const i=[...this._markersData.keys()];this._markersData.clear();const n=this.model.deltaDecorations(i,t);for(let t=0;t<n.length;t++)this._markersData.set(n[t],e[t]);return 0!==i.length||0!==n.length}getMarker(e){return this._markersData.get(e.id)}}let ms=class extends _e.JT{constructor(e,t){super(),this._markerService=t,this._onDidChangeMarker=this._register(new B.Q5),this._markerDecorations=new Map,e.getModels().forEach((e=>this._onModelAdded(e))),this._register(e.onModelAdded(this._onModelAdded,this)),this._register(e.onModelRemoved(this._onModelRemoved,this)),this._register(this._markerService.onMarkerChanged(this._handleMarkerChange,this))}dispose(){super.dispose(),this._markerDecorations.forEach((e=>e.dispose())),this._markerDecorations.clear()}getMarker(e,t){const i=this._markerDecorations.get(fs(e.uri));return i&&i.getMarker(t)||null}_handleMarkerChange(e){e.forEach((e=>{const t=this._markerDecorations.get(fs(e));t&&this._updateDecorations(t)}))}_onModelAdded(e){const t=new ps(e);this._markerDecorations.set(fs(e.uri),t),this._updateDecorations(t)}_onModelRemoved(e){const t=this._markerDecorations.get(fs(e.uri));t&&(t.dispose(),this._markerDecorations.delete(fs(e.uri))),e.uri.scheme!==Q.l.inMemory&&e.uri.scheme!==Q.l.internal&&e.uri.scheme!==Q.l.vscode||this._markerService&&this._markerService.read({resource:e.uri}).map((e=>e.owner)).forEach((t=>this._markerService.remove(t,[e.uri])))}_updateDecorations(e){const t=this._markerService.read({resource:e.model.uri,take:500});let i=t.map((t=>({range:this._createDecorationRange(e.model,t),options:this._createDecorationOption(t)})));e.update(t,i)&&this._onDidChangeMarker.fire(e.model)}_createDecorationRange(e,t){let i=j.e.lift(t);if(t.severity!==is.ZL.Hint||this._hasMarkerTag(t,1)||this._hasMarkerTag(t,2)||(i=i.setEndPosition(i.startLineNumber,i.startColumn+2)),i=e.validateRange(i),i.isEmpty()){let t=e.getWordAtPosition(i.getStartPosition());if(t)i=new j.e(i.startLineNumber,t.startColumn,i.endLineNumber,t.endColumn);else{let t=e.getLineLastNonWhitespaceColumn(i.startLineNumber)||e.getLineMaxColumn(i.startLineNumber);1===t||(i=i.endColumn>=t?new j.e(i.startLineNumber,t-1,i.endLineNumber,t):new j.e(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn+1))}}else if(t.endColumn===Number.MAX_VALUE&&1===t.startColumn&&i.startLineNumber===i.endLineNumber){let n=e.getLineFirstNonWhitespaceColumn(t.startLineNumber);n<i.endColumn&&(i=new j.e(i.startLineNumber,n,i.endLineNumber,i.endColumn),t.startColumn=n)}return i}_createDecorationOption(e){let t,i,n,r,s;switch(e.severity){case is.ZL.Hint:t=this._hasMarkerTag(e,2)?void 0:this._hasMarkerTag(e,1)?"squiggly-unnecessary":"squiggly-hint",n=0;break;case is.ZL.Warning:t="squiggly-warning",i=(0,Ki.EN)(Vn.Re),n=20,s={color:(0,Ki.EN)(zn.Iv),position:he.F5.Inline};break;case is.ZL.Info:t="squiggly-info",i=(0,Ki.EN)(Vn.eS),n=10;break;case is.ZL.Error:default:t="squiggly-error",i=(0,Ki.EN)(Vn.lK),n=30,s={color:(0,Ki.EN)(zn.Gj),position:he.F5.Inline}}return e.tags&&(-1!==e.tags.indexOf(1)&&(r="squiggly-inline-unnecessary"),-1!==e.tags.indexOf(2)&&(r="squiggly-inline-deprecated")),{stickiness:1,className:t,showIfCollapsed:!0,overviewRuler:{color:i,position:he.sh.Right},minimap:s,zIndex:n,inlineClassName:r}}_hasMarkerTag(e,t){return!!e.tags&&e.tags.indexOf(t)>=0}};ms=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([gs(0,st.q),gs(1,is.lT)],ms);var _s=i(65026),bs=function(e,t){return function(i,n){t(i,n,e)}};let vs=class extends _e.JT{constructor(e,t){super(),this._contextKeyService=e,this._configurationService=t,this._accessibilitySupport=0,this._onDidChangeScreenReaderOptimized=new B.Q5,this._accessibilityModeEnabledContext=qi.U.bindTo(this._contextKeyService);const i=()=>this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());this._register(this._configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration("editor.accessibilitySupport")&&(i(),this._onDidChangeScreenReaderOptimized.fire())}))),i(),this.onDidChangeScreenReaderOptimized((()=>i()))}get onDidChangeScreenReaderOptimized(){return this._onDidChangeScreenReaderOptimized.event}isScreenReaderOptimized(){const e=this._configurationService.getValue("editor.accessibilitySupport");return"on"===e||"auto"===e&&2===this._accessibilitySupport}getAccessibilitySupport(){return this._accessibilitySupport}};vs=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([bs(0,Vi.i6),bs(1,qt.Ui)],vs);var ys=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class ws{constructor(){this.mapTextToType=new Map,this.findText=""}writeText(e,t){return ys(this,void 0,void 0,(function*(){if(t)return void this.mapTextToType.set(t,e);try{return yield navigator.clipboard.writeText(e)}catch(e){console.error(e)}const i=document.activeElement,n=document.body.appendChild((0,G.$)("textarea",{"aria-hidden":!0}));n.style.height="1px",n.style.width="1px",n.style.position="absolute",n.value=e,n.focus(),n.select(),document.execCommand("copy"),i instanceof HTMLElement&&i.focus(),document.body.removeChild(n)}))}readText(e){return ys(this,void 0,void 0,(function*(){if(e)return this.mapTextToType.get(e)||"";try{return yield navigator.clipboard.readText()}catch(e){return console.error(e),""}}))}readFindText(){return ys(this,void 0,void 0,(function*(){return this.findText}))}writeFindText(e){return ys(this,void 0,void 0,(function*(){this.findText=e}))}}var Cs=i(64862),Ss=function(e,t){return function(i,n){t(i,n,e)}},ks=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function xs(e){return e.scheme===Q.l.file?e.fsPath:e.path}let Ls=0;class Ms{constructor(e,t,i){this.id=++Ls,this.type=0,this.actual=e,this.label=e.label,this.resourceLabel=t,this.strResource=i,this.resourceLabels=[this.resourceLabel],this.strResources=[this.strResource],this.isValid=!0}setValid(e){this.isValid=e}toString(){return`[${this.id}] [${this.isValid?"VALID":"INVALID"}] ${this.actual}`}}class Ds{constructor(e,t){this.resourceLabel=e,this.reason=t}}class Ns{constructor(){this.elements=new Map}createMessage(){const e=[],t=[];for(const[,i]of this.elements)(0===i.reason?e:t).push(i.resourceLabel);let i=[];return e.length>0&&i.push(ii.N({key:"externalRemoval",comment:["{0} is a list of filenames"]},"The following files have been closed and modified on disk: {0}.",e.join(", "))),t.length>0&&i.push(ii.N({key:"noParallelUniverses",comment:["{0} is a list of filenames"]},"The following files have been modified in an incompatible way: {0}.",t.join(", "))),i.join("\n")}get size(){return this.elements.size}has(e){return this.elements.has(e)}set(e,t){this.elements.set(e,t)}delete(e){return this.elements.delete(e)}}class Es{constructor(e,t,i){this.id=++Ls,this.type=1,this.actual=e,this.label=e.label,this.resourceLabels=t,this.strResources=i,this.removedResources=null,this.invalidatedResources=null}canSplit(){return"function"==typeof this.actual.split}removeResource(e,t,i){this.removedResources||(this.removedResources=new Ns),this.removedResources.has(t)||this.removedResources.set(t,new Ds(e,i))}setValid(e,t,i){i?this.invalidatedResources&&(this.invalidatedResources.delete(t),0===this.invalidatedResources.size&&(this.invalidatedResources=null)):(this.invalidatedResources||(this.invalidatedResources=new Ns),this.invalidatedResources.has(t)||this.invalidatedResources.set(t,new Ds(e,0)))}toString(){return`[${this.id}] [${this.invalidatedResources?"INVALID":"VALID"}] ${this.actual}`}}class Ts{constructor(e,t){this.resourceLabel=e,this.strResource=t,this._past=[],this._future=[],this.locked=!1,this.versionId=1}dispose(){for(const e of this._past)1===e.type&&e.removeResource(this.resourceLabel,this.strResource,0);for(const e of this._future)1===e.type&&e.removeResource(this.resourceLabel,this.strResource,0);this.versionId++}toString(){let e=[];e.push(`* ${this.strResource}:`);for(let t=0;t<this._past.length;t++)e.push(` * [UNDO] ${this._past[t]}`);for(let t=this._future.length-1;t>=0;t--)e.push(` * [REDO] ${this._future[t]}`);return e.join("\n")}flushAllElements(){this._past=[],this._future=[],this.versionId++}_setElementValidFlag(e,t){1===e.type?e.setValid(this.resourceLabel,this.strResource,t):e.setValid(t)}setElementsValidFlag(e,t){for(const i of this._past)t(i.actual)&&this._setElementValidFlag(i,e);for(const i of this._future)t(i.actual)&&this._setElementValidFlag(i,e)}pushElement(e){for(const e of this._future)1===e.type&&e.removeResource(this.resourceLabel,this.strResource,1);if(this._future=[],this._past.length>0){const e=this._past[this._past.length-1];0!==e.type||e.isValid||(this._past=[])}this._past.push(e),this.versionId++}createSnapshot(e){const t=[];for(let e=0,i=this._past.length;e<i;e++)t.push(this._past[e].id);for(let e=this._future.length-1;e>=0;e--)t.push(this._future[e].id);return new Cs.Y(e,t)}restoreSnapshot(e){const t=e.elements.length;let i=!0,n=0,r=-1;for(let s=0,o=this._past.length;s<o;s++,n++){const o=this._past[s];i&&(n>=t||o.id!==e.elements[n])&&(i=!1,r=0),i||1!==o.type||o.removeResource(this.resourceLabel,this.strResource,0)}let s=-1;for(let r=this._future.length-1;r>=0;r--,n++){const o=this._future[r];i&&(n>=t||o.id!==e.elements[n])&&(i=!1,s=r),i||1!==o.type||o.removeResource(this.resourceLabel,this.strResource,0)}-1!==r&&(this._past=this._past.slice(0,r)),-1!==s&&(this._future=this._future.slice(s+1)),this.versionId++}getElements(){const e=[],t=[];for(const t of this._past)e.push(t.actual);for(const e of this._future)t.push(e.actual);return{past:e,future:t}}getClosestPastElement(){return 0===this._past.length?null:this._past[this._past.length-1]}getClosestFutureElement(){return 0===this._future.length?null:this._future[this._future.length-1]}hasPastElements(){return this._past.length>0}hasFutureElements(){return this._future.length>0}splitPastWorkspaceElement(e,t){for(let i=this._past.length-1;i>=0;i--)if(this._past[i]===e){t.has(this.strResource)?this._past[i]=t.get(this.strResource):this._past.splice(i,1);break}this.versionId++}splitFutureWorkspaceElement(e,t){for(let i=this._future.length-1;i>=0;i--)if(this._future[i]===e){t.has(this.strResource)?this._future[i]=t.get(this.strResource):this._future.splice(i,1);break}this.versionId++}moveBackward(e){this._past.pop(),this._future.push(e),this.versionId++}moveForward(e){this._future.pop(),this._past.push(e),this.versionId++}}class Is{constructor(e){this.editStacks=e,this._versionIds=[];for(let e=0,t=this.editStacks.length;e<t;e++)this._versionIds[e]=this.editStacks[e].versionId}isValid(){for(let e=0,t=this.editStacks.length;e<t;e++)if(this._versionIds[e]!==this.editStacks[e].versionId)return!1;return!0}}const Os=new Ts("","");Os.locked=!0;let As=class{constructor(e,t){this._dialogService=e,this._notificationService=t,this._editStacks=new Map,this._uriComparisonKeyComputers=[]}getUriComparisonKey(e){for(const t of this._uriComparisonKeyComputers)if(t[0]===e.scheme)return t[1].getComparisonKey(e);return e.toString()}_print(e){console.log("------------------------------------"),console.log(`AFTER ${e}: `);let t=[];for(const e of this._editStacks)t.push(e[1].toString());console.log(t.join("\n"))}pushElement(e){if(0===e.type){const t=xs(e.resource),i=this.getUriComparisonKey(e.resource);this._pushElement(new Ms(e,t,i))}else{const t=new Set,i=[],n=[];for(const r of e.resources){const e=xs(r),s=this.getUriComparisonKey(r);t.has(s)||(t.add(s),i.push(e),n.push(s))}1===i.length?this._pushElement(new Ms(e,i[0],n[0])):this._pushElement(new Es(e,i,n))}}_pushElement(e){for(let t=0,i=e.strResources.length;t<i;t++){const i=e.resourceLabels[t],n=e.strResources[t];let r;this._editStacks.has(n)?r=this._editStacks.get(n):(r=new Ts(i,n),this._editStacks.set(n,r)),r.pushElement(e)}}getLastElement(e){const t=this.getUriComparisonKey(e);if(this._editStacks.has(t)){const e=this._editStacks.get(t);if(e.hasFutureElements())return null;const i=e.getClosestPastElement();return i?i.actual:null}return null}_splitPastWorkspaceElement(e,t){const i=e.actual.split(),n=new Map;for(const e of i){const t=xs(e.resource),i=this.getUriComparisonKey(e.resource),r=new Ms(e,t,i);n.set(r.strResource,r)}for(const i of e.strResources)t&&t.has(i)||this._editStacks.get(i).splitPastWorkspaceElement(e,n)}_splitFutureWorkspaceElement(e,t){const i=e.actual.split(),n=new Map;for(const e of i){const t=xs(e.resource),i=this.getUriComparisonKey(e.resource),r=new Ms(e,t,i);n.set(r.strResource,r)}for(const i of e.strResources)t&&t.has(i)||this._editStacks.get(i).splitFutureWorkspaceElement(e,n)}removeElements(e){const t="string"==typeof e?e:this.getUriComparisonKey(e);this._editStacks.has(t)&&(this._editStacks.get(t).dispose(),this._editStacks.delete(t))}setElementsValidFlag(e,t,i){const n=this.getUriComparisonKey(e);this._editStacks.has(n)&&this._editStacks.get(n).setElementsValidFlag(t,i)}createSnapshot(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).createSnapshot(e):new Cs.Y(e,[])}restoreSnapshot(e){const t=this.getUriComparisonKey(e.resource);if(this._editStacks.has(t)){const i=this._editStacks.get(t);i.restoreSnapshot(e),i.hasPastElements()||i.hasFutureElements()||(i.dispose(),this._editStacks.delete(t))}}getElements(e){const t=this.getUriComparisonKey(e);return this._editStacks.has(t)?this._editStacks.get(t).getElements():{past:[],future:[]}}canUndo(e){const t=this.getUriComparisonKey(e);return!!this._editStacks.has(t)&&this._editStacks.get(t).hasPastElements()}_onError(e,t){(0,be.dL)(e);for(const e of t.strResources)this.removeElements(e);this._notificationService.error(e)}_acquireLocks(e){for(const t of e.editStacks)if(t.locked)throw new Error("Cannot acquire edit stack lock");for(const t of e.editStacks)t.locked=!0;return()=>{for(const t of e.editStacks)t.locked=!1}}_safeInvokeWithLocks(e,t,i,n=_e.JT.None){const r=this._acquireLocks(i);let s;try{s=t()}catch(t){return r(),n.dispose(),this._onError(t,e)}if(s)return s.then((()=>{r(),n.dispose()}),(t=>(r(),n.dispose(),this._onError(t,e))));r(),n.dispose()}_invokeWorkspacePrepare(e){return ks(this,void 0,void 0,(function*(){if(void 0===e.actual.prepareUndoRedo)return _e.JT.None;const t=e.actual.prepareUndoRedo();return void 0===t?_e.JT.None:t}))}_invokeResourcePrepare(e,t){if(1!==e.actual.type||void 0===e.actual.prepareUndoRedo)return void t(_e.JT.None);const i=e.actual.prepareUndoRedo();if(i){if(!(0,_e.Wf)(i))return i.then((e=>{t(e)}));t(i)}else t(_e.JT.None)}_getAffectedEditStacks(e){const t=[];for(const i of e.strResources)t.push(this._editStacks.get(i)||Os);return new Is(t)}_tryToSplitAndUndo(e,t,i,n){if(t.canSplit())return this._splitPastWorkspaceElement(t,i),this._notificationService.info(n),new Rs(this.undo(e));for(const e of t.strResources)this.removeElements(e);return this._notificationService.info(n),new Rs}_checkWorkspaceUndo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndUndo(e,t,t.removedResources,ii.N({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndUndo(e,t,t.invalidatedResources,ii.N({key:"cannotWorkspaceUndo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not undo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const r=[];for(const e of i.editStacks)e.getClosestPastElement()!==t&&r.push(e.resourceLabel);if(r.length>0)return this._tryToSplitAndUndo(e,t,null,ii.N({key:"cannotWorkspaceUndoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because changes were made to {1}",t.label,r.join(", ")));const s=[];for(const e of i.editStacks)e.locked&&s.push(e.resourceLabel);return s.length>0?this._tryToSplitAndUndo(e,t,null,ii.N({key:"cannotWorkspaceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,s.join(", "))):i.isValid()?null:this._tryToSplitAndUndo(e,t,null,ii.N({key:"cannotWorkspaceUndoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceUndo(e,t){const i=this._getAffectedEditStacks(t),n=this._checkWorkspaceUndo(e,t,i,!1);return n?n.returnValue:this._confirmAndExecuteWorkspaceUndo(e,t,i)}_confirmAndExecuteWorkspaceUndo(e,t,i){return ks(this,void 0,void 0,(function*(){if(t.canSplit()){const n=yield this._dialogService.show(Vt.Z.Info,ii.N("confirmWorkspace","Would you like to undo '{0}' across all files?",t.label),[ii.N({key:"ok",comment:["{0} denotes a number that is > 1"]},"Undo in {0} Files",i.editStacks.length),ii.N("nok","Undo this File"),ii.N("cancel","Cancel")],{cancelId:2});if(2===n.choice)return;if(1===n.choice)return this._splitPastWorkspaceElement(t,null),this.undo(e);const r=this._checkWorkspaceUndo(e,t,i,!1);if(r)return r.returnValue}let n;try{n=yield this._invokeWorkspacePrepare(t)}catch(e){return this._onError(e,t)}const r=this._checkWorkspaceUndo(e,t,i,!0);if(r)return n.dispose(),r.returnValue;for(const e of i.editStacks)e.moveBackward(t);return this._safeInvokeWithLocks(t,(()=>t.actual.undo()),i,n)}))}_resourceUndo(e,t){if(t.isValid){if(!e.locked)return this._invokeResourcePrepare(t,(i=>(e.moveBackward(t),this._safeInvokeWithLocks(t,(()=>t.actual.undo()),new Is([e]),i))));{const e=ii.N({key:"cannotResourceUndoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not undo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.info(e)}}else e.flushAllElements()}undo(e){const t="string"==typeof e?e:this.getUriComparisonKey(e);if(!this._editStacks.has(t))return;const i=this._editStacks.get(t),n=i.getClosestPastElement();if(n)try{return 1===n.type?this._workspaceUndo(t,n):this._resourceUndo(i,n)}finally{}}canRedo(e){const t=this.getUriComparisonKey(e);return!!this._editStacks.has(t)&&this._editStacks.get(t).hasFutureElements()}_tryToSplitAndRedo(e,t,i,n){if(t.canSplit())return this._splitFutureWorkspaceElement(t,i),this._notificationService.info(n),new Rs(this.redo(e));for(const e of t.strResources)this.removeElements(e);return this._notificationService.info(n),new Rs}_checkWorkspaceRedo(e,t,i,n){if(t.removedResources)return this._tryToSplitAndRedo(e,t,t.removedResources,ii.N({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.removedResources.createMessage()));if(n&&t.invalidatedResources)return this._tryToSplitAndRedo(e,t,t.invalidatedResources,ii.N({key:"cannotWorkspaceRedo",comment:["{0} is a label for an operation. {1} is another message."]},"Could not redo '{0}' across all files. {1}",t.label,t.invalidatedResources.createMessage()));const r=[];for(const e of i.editStacks)e.getClosestFutureElement()!==t&&r.push(e.resourceLabel);if(r.length>0)return this._tryToSplitAndRedo(e,t,null,ii.N({key:"cannotWorkspaceRedoDueToChanges",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because changes were made to {1}",t.label,r.join(", ")));const s=[];for(const e of i.editStacks)e.locked&&s.push(e.resourceLabel);return s.length>0?this._tryToSplitAndRedo(e,t,null,ii.N({key:"cannotWorkspaceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}",t.label,s.join(", "))):i.isValid()?null:this._tryToSplitAndRedo(e,t,null,ii.N({key:"cannotWorkspaceRedoDueToInMeantimeUndoRedo",comment:["{0} is a label for an operation. {1} is a list of filenames."]},"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime",t.label))}_workspaceRedo(e,t){const i=this._getAffectedEditStacks(t),n=this._checkWorkspaceRedo(e,t,i,!1);return n?n.returnValue:this._executeWorkspaceRedo(e,t,i)}_executeWorkspaceRedo(e,t,i){return ks(this,void 0,void 0,(function*(){let n;try{n=yield this._invokeWorkspacePrepare(t)}catch(e){return this._onError(e,t)}const r=this._checkWorkspaceRedo(e,t,i,!0);if(r)return n.dispose(),r.returnValue;for(const e of i.editStacks)e.moveForward(t);return this._safeInvokeWithLocks(t,(()=>t.actual.redo()),i,n)}))}_resourceRedo(e,t){if(t.isValid){if(!e.locked)return this._invokeResourcePrepare(t,(i=>(e.moveForward(t),this._safeInvokeWithLocks(t,(()=>t.actual.redo()),new Is([e]),i))));{const e=ii.N({key:"cannotResourceRedoDueToInProgressUndoRedo",comment:["{0} is a label for an operation."]},"Could not redo '{0}' because there is already an undo or redo operation running.",t.label);this._notificationService.info(e)}}else e.flushAllElements()}redo(e){const t="string"==typeof e?e:this.getUriComparisonKey(e);if(!this._editStacks.has(t))return;const i=this._editStacks.get(t),n=i.getClosestFutureElement();if(n)try{return 1===n.type?this._workspaceRedo(t,n):this._resourceRedo(i,n)}finally{}}};As=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([Ss(0,$r.S),Ss(1,pi.lT)],As);class Rs{constructor(e){this.returnValue=e}}(0,_s.z)(Cs.t,As);var Ps=i(16830),Fs=i(67746),Bs=i(60703);const Ws=new me.Ue((()=>{const e=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});return{collator:e,collatorIsNumeric:e.resolvedOptions().numeric}}));var Ys=i(59834),Hs=i(34650),js=i(49898),Vs=i(44742);const zs={},Us=new Vs.R("quick-input-button-icon-");function $s(e){if(!e)return;let t;const i=e.dark.toString();return zs[i]?t=zs[i]:(t=Us.nextId(),G.fk(`.${t}`,`background-image: ${G.wY(e.light||e.dark)}`),G.fk(`.vs-dark .${t}, .hc-black .${t}`,`background-image: ${G.wY(e.dark)}`),zs[i]=t),t}const Ks=G.$;class qs{constructor(e,t,i){this.os=t,this.options=i,this.domNode=G.R3(e,Ks(".monaco-keybinding")),this.didEverRender=!1,e.appendChild(this.domNode)}set(e,t){this.didEverRender&&this.keybinding===e&&qs.areSame(this.matches,t)||(this.keybinding=e,this.matches=t,this.render())}render(){if(G.PO(this.domNode),this.keybinding){let[e,t]=this.keybinding.getParts();e&&this.renderPart(this.domNode,e,this.matches?this.matches.firstPart:null),t&&(G.R3(this.domNode,Ks("span.monaco-keybinding-key-chord-separator",void 0," ")),this.renderPart(this.domNode,t,this.matches?this.matches.chordPart:null)),this.domNode.title=this.keybinding.getAriaLabel()||""}else this.options&&this.options.renderUnboundKeybindings&&this.renderUnbound(this.domNode);this.didEverRender=!0}renderPart(e,t,i){const n=di.modifierLabels[this.os];t.ctrlKey&&this.renderKey(e,n.ctrlKey,Boolean(null==i?void 0:i.ctrlKey),n.separator),t.shiftKey&&this.renderKey(e,n.shiftKey,Boolean(null==i?void 0:i.shiftKey),n.separator),t.altKey&&this.renderKey(e,n.altKey,Boolean(null==i?void 0:i.altKey),n.separator),t.metaKey&&this.renderKey(e,n.metaKey,Boolean(null==i?void 0:i.metaKey),n.separator);const r=t.keyLabel;r&&this.renderKey(e,r,Boolean(null==i?void 0:i.keyCode),"")}renderKey(e,t,i,n){G.R3(e,Ks("span.monaco-keybinding-key"+(i?".highlight":""),void 0,t)),n&&G.R3(e,Ks("span.monaco-keybinding-key-separator",void 0,n))}renderUnbound(e){G.R3(e,Ks("span.monaco-keybinding-key",void 0,(0,ii.N)("unbound","Unbound")))}static areSame(e,t){return e===t||!e&&!t||!!e&&!!t&&(0,Zt.fS)(e.firstPart,t.firstPart)&&(0,Zt.fS)(e.chordPart,t.chordPart)}}var Gs=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o};const Zs=G.$;class Js{constructor(e){this.hidden=!1,this._onChecked=new B.Q5,this.onChecked=this._onChecked.event,(0,Zt.f0)(this,e)}get checked(){return!!this._checked}set checked(e){e!==this._checked&&(this._checked=e,this._onChecked.fire(e))}dispose(){this._onChecked.dispose()}}class Qs{get templateId(){return Qs.ID}renderTemplate(e){const t=Object.create(null);t.toDisposeElement=[],t.toDisposeTemplate=[],t.entry=G.R3(e,Zs(".quick-input-list-entry"));const i=G.R3(t.entry,Zs("label.quick-input-list-label"));t.toDisposeTemplate.push(G.mu(i,G.tw.CLICK,(e=>{t.checkbox.offsetParent||e.preventDefault()}))),t.checkbox=G.R3(i,Zs("input.quick-input-list-checkbox")),t.checkbox.type="checkbox",t.toDisposeTemplate.push(G.mu(t.checkbox,G.tw.CHANGE,(e=>{t.element.checked=t.checkbox.checked})));const n=G.R3(i,Zs(".quick-input-list-rows")),r=G.R3(n,Zs(".quick-input-list-row")),s=G.R3(n,Zs(".quick-input-list-row"));t.label=new Ys.g(r,{supportHighlights:!0,supportDescriptionHighlights:!0,supportCodicons:!0});const o=G.R3(r,Zs(".quick-input-list-entry-keybinding"));t.keybinding=new qs(o,ve.OS);const a=G.R3(s,Zs(".quick-input-list-label-meta"));return t.detail=new Hs.q(a,!0),t.separator=G.R3(t.entry,Zs(".quick-input-list-separator")),t.actionBar=new _r.o(t.entry),t.actionBar.domNode.classList.add("quick-input-list-entry-action-bar"),t.toDisposeTemplate.push(t.actionBar),t}renderElement(e,t,i){i.toDisposeElement=(0,_e.B9)(i.toDisposeElement),i.element=e,i.checkbox.checked=e.checked,i.toDisposeElement.push(e.onChecked((e=>i.checkbox.checked=e)));const{labelHighlights:n,descriptionHighlights:r,detailHighlights:s}=e,o=Object.create(null);o.matches=n||[],o.descriptionTitle=e.saneDescription,o.descriptionMatches=r||[],o.extraClasses=e.item.iconClasses,o.italic=e.item.italic,o.strikethrough=e.item.strikethrough,i.label.setLabel(e.saneLabel,e.saneDescription,o),i.keybinding.set(e.item.keybinding),i.detail.set(e.saneDetail,s),e.separator&&e.separator.label?(i.separator.textContent=e.separator.label,i.separator.style.display=""):i.separator.style.display="none",e.separator?G.cn(i.entry,"quick-input-list-separator-border"):G.IV(i.entry,"quick-input-list-separator-border"),i.actionBar.clear();const a=e.item.buttons;a&&a.length?(i.actionBar.push(a.map(((t,i)=>{let n=t.iconClass||(t.iconPath?$s(t.iconPath):void 0);t.alwaysVisible&&(n=n?`${n} always-visible`:"always-visible");const r=new mr.aU(`id-${i}`,"",n,!0,(()=>(e.fireButtonTriggered({button:t,item:e.item}),Promise.resolve())));return r.tooltip=t.tooltip||"",r})),{icon:!0,label:!1}),G.cn(i.entry,"has-actions")):G.IV(i.entry,"has-actions")}disposeElement(e,t,i){i.toDisposeElement=(0,_e.B9)(i.toDisposeElement)}disposeTemplate(e){e.toDisposeElement=(0,_e.B9)(e.toDisposeElement),e.toDisposeTemplate=(0,_e.B9)(e.toDisposeTemplate)}}Qs.ID="listelement";class Xs{getHeight(e){return e.saneDetail?44:22}getTemplateId(e){return Qs.ID}}var eo;!function(e){e[e.First=1]="First",e[e.Second=2]="Second",e[e.Last=3]="Last",e[e.Next=4]="Next",e[e.Previous=5]="Previous",e[e.NextPage=6]="NextPage",e[e.PreviousPage=7]="PreviousPage"}(eo||(eo={}));class to{constructor(e,t,i){this.parent=e,this.inputElements=[],this.elements=[],this.elementsToIndexes=new Map,this.matchOnDescription=!1,this.matchOnDetail=!1,this.matchOnLabel=!0,this.sortByLabel=!0,this._onChangedAllVisibleChecked=new B.Q5,this.onChangedAllVisibleChecked=this._onChangedAllVisibleChecked.event,this._onChangedCheckedCount=new B.Q5,this.onChangedCheckedCount=this._onChangedCheckedCount.event,this._onChangedVisibleCount=new B.Q5,this.onChangedVisibleCount=this._onChangedVisibleCount.event,this._onChangedCheckedElements=new B.Q5,this.onChangedCheckedElements=this._onChangedCheckedElements.event,this._onButtonTriggered=new B.Q5,this.onButtonTriggered=this._onButtonTriggered.event,this._onKeyDown=new B.Q5,this.onKeyDown=this._onKeyDown.event,this._onLeave=new B.Q5,this.onLeave=this._onLeave.event,this._fireCheckedEvents=!0,this.elementDisposables=[],this.disposables=[],this.id=t,this.container=G.R3(this.parent,Zs(".quick-input-list"));const n=new Xs,r=new io;this.list=i.createList("QuickInput",this.container,n,[new Qs],{identityProvider:{getId:e=>e.saneLabel},setRowLineHeight:!1,multipleSelectionSupport:!1,horizontalScrolling:!1,accessibilityProvider:r}),this.list.getHTMLElement().id=t,this.disposables.push(this.list),this.disposables.push(this.list.onKeyDown((e=>{const t=new jt.y(e);switch(t.keyCode){case 10:this.toggleCheckbox();break;case 31:(ve.dz?e.metaKey:e.ctrlKey)&&this.list.setFocus((0,De.w6)(this.list.length));break;case 16:const t=this.list.getFocus();1===t.length&&0===t[0]&&this._onLeave.fire();break;case 18:const i=this.list.getFocus();1===i.length&&i[0]===this.list.length-1&&this._onLeave.fire()}this._onKeyDown.fire(t)}))),this.disposables.push(this.list.onMouseDown((e=>{2!==e.browserEvent.button&&e.browserEvent.preventDefault()}))),this.disposables.push(G.nm(this.container,G.tw.CLICK,(e=>{(e.x||e.y)&&this._onLeave.fire()}))),this.disposables.push(this.list.onMouseMiddleClick((e=>{this._onLeave.fire()}))),this.disposables.push(this.list.onContextMenu((e=>{"number"==typeof e.index&&(e.browserEvent.preventDefault(),this.list.setSelection([e.index]))}))),this.disposables.push(this._onChangedAllVisibleChecked,this._onChangedCheckedCount,this._onChangedVisibleCount,this._onChangedCheckedElements,this._onButtonTriggered,this._onLeave,this._onKeyDown)}get onDidChangeFocus(){return B.ju.map(this.list.onDidChangeFocus,(e=>e.elements.map((e=>e.item))))}get onDidChangeSelection(){return B.ju.map(this.list.onDidChangeSelection,(e=>({items:e.elements.map((e=>e.item)),event:e.browserEvent})))}getAllVisibleChecked(){return this.allVisibleChecked(this.elements,!1)}allVisibleChecked(e,t=!0){for(let i=0,n=e.length;i<n;i++){const n=e[i];if(!n.hidden){if(!n.checked)return!1;t=!0}}return t}getCheckedCount(){let e=0;const t=this.elements;for(let i=0,n=t.length;i<n;i++)t[i].checked&&e++;return e}getVisibleCount(){let e=0;const t=this.elements;for(let i=0,n=t.length;i<n;i++)t[i].hidden||e++;return e}setAllVisibleChecked(e){try{this._fireCheckedEvents=!1,this.elements.forEach((t=>{t.hidden||(t.checked=e)}))}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}setElements(e){this.elementDisposables=(0,_e.B9)(this.elementDisposables);const t=e=>this.fireButtonTriggered(e);this.inputElements=e,this.elements=e.reduce(((i,n,r)=>{var s,o,a;if("separator"!==n.type){const l=r&&e[r-1],c=n.label&&n.label.replace(/\r?\n/g," "),d=n.description&&n.description.replace(/\r?\n/g," "),h=n.detail&&n.detail.replace(/\r?\n/g," "),u=n.ariaLabel||[c,d,h].map((e=>e&&(0,Bs.fe)(e).text)).filter((e=>!!e)).join(", ");i.push(new Js({index:r,item:n,saneLabel:c,saneAriaLabel:u,saneDescription:d,saneDetail:h,labelHighlights:null===(s=n.highlights)||void 0===s?void 0:s.label,descriptionHighlights:null===(o=n.highlights)||void 0===o?void 0:o.description,detailHighlights:null===(a=n.highlights)||void 0===a?void 0:a.detail,checked:!1,separator:l&&"separator"===l.type?l:void 0,fireButtonTriggered:t}))}return i}),[]),this.elementDisposables.push(...this.elements),this.elementDisposables.push(...this.elements.map((e=>e.onChecked((()=>this.fireCheckedEvents()))))),this.elementsToIndexes=this.elements.reduce(((e,t,i)=>(e.set(t.item,i),e)),new Map),this.list.splice(0,this.list.length),this.list.splice(0,this.list.length,this.elements),this._onChangedVisibleCount.fire(this.elements.length)}getFocusedElements(){return this.list.getFocusedElements().map((e=>e.item))}setFocusedElements(e){if(this.list.setFocus(e.filter((e=>this.elementsToIndexes.has(e))).map((e=>this.elementsToIndexes.get(e)))),e.length>0){const e=this.list.getFocus()[0];"number"==typeof e&&this.list.reveal(e)}}getActiveDescendant(){return this.list.getHTMLElement().getAttribute("aria-activedescendant")}setSelectedElements(e){this.list.setSelection(e.filter((e=>this.elementsToIndexes.has(e))).map((e=>this.elementsToIndexes.get(e))))}getCheckedElements(){return this.elements.filter((e=>e.checked)).map((e=>e.item))}setCheckedElements(e){try{this._fireCheckedEvents=!1;const t=new Set;for(const i of e)t.add(i);for(const e of this.elements)e.checked=t.has(e.item)}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}set enabled(e){this.list.getHTMLElement().style.pointerEvents=e?"":"none"}focus(e){if(!this.list.length)return;switch(e===eo.Next&&this.list.getFocus()[0]===this.list.length-1&&(e=eo.First),e===eo.Previous&&0===this.list.getFocus()[0]&&(e=eo.Last),e===eo.Second&&this.list.length<2&&(e=eo.First),e){case eo.First:this.list.focusFirst();break;case eo.Second:this.list.focusNth(1);break;case eo.Last:this.list.focusLast();break;case eo.Next:this.list.focusNext();break;case eo.Previous:this.list.focusPrevious();break;case eo.NextPage:this.list.focusNextPage();break;case eo.PreviousPage:this.list.focusPreviousPage()}const t=this.list.getFocus()[0];"number"==typeof t&&this.list.reveal(t)}clearFocus(){this.list.setFocus([])}domFocus(){this.list.domFocus()}layout(e){this.list.getHTMLElement().style.maxHeight=e?`calc(${44*Math.floor(e/44)}px)`:"",this.list.layout()}filter(e){if(!(this.sortByLabel||this.matchOnLabel||this.matchOnDescription||this.matchOnDetail))return this.list.layout(),!1;(e=e.trim())&&(this.matchOnLabel||this.matchOnDescription||this.matchOnDetail)?this.elements.forEach((t=>{const i=this.matchOnLabel?(0,ye.f6)((0,Bs.YU)(e,(0,Bs.fe)(t.saneLabel))):void 0,n=this.matchOnDescription?(0,ye.f6)((0,Bs.YU)(e,(0,Bs.fe)(t.saneDescription||""))):void 0,r=this.matchOnDetail?(0,ye.f6)((0,Bs.YU)(e,(0,Bs.fe)(t.saneDetail||""))):void 0;i||n||r?(t.labelHighlights=i,t.descriptionHighlights=n,t.detailHighlights=r,t.hidden=!1):(t.labelHighlights=void 0,t.descriptionHighlights=void 0,t.detailHighlights=void 0,t.hidden=!t.item.alwaysShow),t.separator=void 0})):this.elements.forEach((e=>{e.labelHighlights=void 0,e.descriptionHighlights=void 0,e.detailHighlights=void 0,e.hidden=!1;const t=e.index&&this.inputElements[e.index-1];e.separator=t&&"separator"===t.type?t:void 0}));const t=this.elements.filter((e=>!e.hidden));if(this.sortByLabel&&e){const i=e.toLowerCase();t.sort(((e,t)=>function(e,t,i){const n=e.labelHighlights||[],r=t.labelHighlights||[];return n.length&&!r.length?-1:!n.length&&r.length?1:0===n.length&&0===r.length?0:function(e,t,i){const n=e.toLowerCase(),r=t.toLowerCase(),s=function(e,t,i){const n=e.toLowerCase(),r=t.toLowerCase(),s=n.startsWith(i),o=r.startsWith(i);if(s!==o)return s?-1:1;if(s&&o){if(n.length<r.length)return-1;if(n.length>r.length)return 1}return 0}(e,t,i);if(s)return s;const o=n.endsWith(i);if(o!==r.endsWith(i))return o?-1:1;const a=function(e,t,i=!1){const n=e||"",r=t||"",s=Ws.value.collator.compare(n,r);return Ws.value.collatorIsNumeric&&0===s&&n!==r?n<r?-1:1:s}(n,r);return 0!==a?a:n.localeCompare(r)}(e.saneLabel,t.saneLabel,i)}(e,t,i)))}return this.elementsToIndexes=t.reduce(((e,t,i)=>(e.set(t.item,i),e)),new Map),this.list.splice(0,this.list.length,t),this.list.setFocus([]),this.list.layout(),this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedVisibleCount.fire(t.length),!0}toggleCheckbox(){try{this._fireCheckedEvents=!1;const e=this.list.getFocusedElements(),t=this.allVisibleChecked(e);for(const i of e)i.checked=!t}finally{this._fireCheckedEvents=!0,this.fireCheckedEvents()}}display(e){this.container.style.display=e?"":"none"}isDisplayed(){return"none"!==this.container.style.display}dispose(){this.elementDisposables=(0,_e.B9)(this.elementDisposables),this.disposables=(0,_e.B9)(this.disposables)}fireCheckedEvents(){this._fireCheckedEvents&&(this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked()),this._onChangedCheckedCount.fire(this.getCheckedCount()),this._onChangedCheckedElements.fire(this.getCheckedElements()))}fireButtonTriggered(e){this._onButtonTriggered.fire(e)}style(e){this.list.style(e)}}Gs([js.H],to.prototype,"onDidChangeFocus",null),Gs([js.H],to.prototype,"onDidChangeSelection",null);class io{getWidgetAriaLabel(){return(0,ii.N)("quickInput","Quick Input")}getAriaLabel(e){return e.saneAriaLabel}getWidgetRole(){return"listbox"}getRole(){return"option"}}var no=i(77927);const ro=G.$;class so extends _e.JT{constructor(e){super(),this.parent=e,this.onKeyDown=e=>G.nm(this.inputBox.inputElement,G.tw.KEY_DOWN,(t=>{e(new jt.y(t))})),this.onMouseDown=e=>G.nm(this.inputBox.inputElement,G.tw.MOUSE_DOWN,(t=>{e(new Mr.n(t))})),this.onDidChange=e=>this.inputBox.onDidChange(e),this.container=G.R3(this.parent,ro(".quick-input-box")),this.inputBox=this._register(new no.W(this.container,void 0))}get value(){return this.inputBox.value}set value(e){this.inputBox.value=e}select(e=null){this.inputBox.select(e)}isSelectionAtEnd(){return this.inputBox.isSelectionAtEnd()}get placeholder(){return this.inputBox.inputElement.getAttribute("placeholder")||""}set placeholder(e){this.inputBox.setPlaceHolder(e)}get ariaLabel(){return this.inputBox.getAriaLabel()}set ariaLabel(e){this.inputBox.setAriaLabel(e)}get password(){return"password"===this.inputBox.inputElement.type}set password(e){this.inputBox.inputElement.type=e?"password":"text"}setAttribute(e,t){this.inputBox.inputElement.setAttribute(e,t)}removeAttribute(e){this.inputBox.inputElement.removeAttribute(e)}showDecoration(e){e===Vt.Z.Ignore?this.inputBox.hideMessage():this.inputBox.showMessage({type:e===Vt.Z.Info?1:e===Vt.Z.Warning?2:3,content:""})}stylesForType(e){return this.inputBox.stylesForType(e===Vt.Z.Info?1:e===Vt.Z.Warning?2:3)}setFocus(){this.inputBox.focus()}layout(){this.inputBox.layout()}style(e){this.inputBox.style(e)}}var oo=i(67488);const ao="done",lo="active",co="infinite",ho="discrete",uo={progressBarBackground:Rn.Il.fromHex("#0E70C0")};class go extends _e.JT{constructor(e,t){super(),this.options=t||Object.create(null),(0,Zt.jB)(this.options,uo,!1),this.workedVal=0,this.progressBarBackground=this.options.progressBarBackground,this._register(this.showDelayedScheduler=new me.pY((()=>(0,G.$Z)(this.element)),0)),this.create(e)}create(e){this.element=document.createElement("div"),(0,G.cn)(this.element,"monaco-progress-container"),e.appendChild(this.element),this.bit=document.createElement("div"),(0,G.cn)(this.bit,"progress-bit"),this.element.appendChild(this.bit),this.applyStyles()}off(){this.bit.style.width="inherit",this.bit.style.opacity="1",(0,G.GK)(this.element,lo,co,ho),this.workedVal=0,this.totalWork=void 0}stop(){return this.doDone(!1)}doDone(e){return(0,G.cn)(this.element,ao),(0,G.pv)(this.element,co)?(this.bit.style.opacity="0",e?setTimeout((()=>this.off()),200):this.off()):(this.bit.style.width="inherit",e?setTimeout((()=>this.off()),200):this.off()),this}infinite(){return this.bit.style.width="2%",this.bit.style.opacity="1",(0,G.GK)(this.element,ho,ao),(0,G.PT)(this.element,lo,co),this}getContainer(){return this.element}style(e){this.progressBarBackground=e.progressBarBackground,this.applyStyles()}applyStyles(){if(this.bit){const e=this.progressBarBackground?this.progressBarBackground.toString():"";this.bit.style.backgroundColor=e}}}var fo=i(10553);const po={buttonBackground:Rn.Il.fromHex("#0E639C"),buttonHoverBackground:Rn.Il.fromHex("#006BB3"),buttonForeground:Rn.Il.white};class mo extends _e.JT{constructor(e,t){super(),this._onDidClick=this._register(new B.Q5),this.options=t||Object.create(null),(0,Zt.jB)(this.options,po,!1),this.buttonForeground=this.options.buttonForeground,this.buttonBackground=this.options.buttonBackground,this.buttonHoverBackground=this.options.buttonHoverBackground,this.buttonSecondaryForeground=this.options.buttonSecondaryForeground,this.buttonSecondaryBackground=this.options.buttonSecondaryBackground,this.buttonSecondaryHoverBackground=this.options.buttonSecondaryHoverBackground,this.buttonBorder=this.options.buttonBorder,this._element=document.createElement("a"),G.cn(this._element,"monaco-button"),this._element.tabIndex=0,this._element.setAttribute("role","button"),e.appendChild(this._element),this._register(fo.o.addTarget(this._element)),[G.tw.CLICK,fo.t.Tap].forEach((e=>{this._register(G.nm(this._element,e,(e=>{this.enabled?this._onDidClick.fire(e):G.zB.stop(e)})))})),this._register(G.nm(this._element,G.tw.KEY_DOWN,(e=>{const t=new jt.y(e);let i=!1;this.enabled&&(t.equals(3)||t.equals(10))?(this._onDidClick.fire(e),i=!0):t.equals(9)&&(this._element.blur(),i=!0),i&&G.zB.stop(t,!0)}))),this._register(G.nm(this._element,G.tw.MOUSE_OVER,(e=>{G.pv(this._element,"disabled")||this.setHoverBackground()}))),this._register(G.nm(this._element,G.tw.MOUSE_OUT,(e=>{this.applyStyles()}))),this.focusTracker=this._register(G.go(this._element)),this._register(this.focusTracker.onDidFocus((()=>this.setHoverBackground()))),this._register(this.focusTracker.onDidBlur((()=>this.applyStyles()))),this.applyStyles()}get onDidClick(){return this._onDidClick.event}setHoverBackground(){let e;e=this.options.secondary?this.buttonSecondaryHoverBackground?this.buttonSecondaryHoverBackground.toString():null:this.buttonHoverBackground?this.buttonHoverBackground.toString():null,e&&(this._element.style.backgroundColor=e)}style(e){this.buttonForeground=e.buttonForeground,this.buttonBackground=e.buttonBackground,this.buttonHoverBackground=e.buttonHoverBackground,this.buttonSecondaryForeground=e.buttonSecondaryForeground,this.buttonSecondaryBackground=e.buttonSecondaryBackground,this.buttonSecondaryHoverBackground=e.buttonSecondaryHoverBackground,this.buttonBorder=e.buttonBorder,this.applyStyles()}applyStyles(){if(this._element){let e,t;this.options.secondary?(t=this.buttonSecondaryForeground?this.buttonSecondaryForeground.toString():"",e=this.buttonSecondaryBackground?this.buttonSecondaryBackground.toString():""):(t=this.buttonForeground?this.buttonForeground.toString():"",e=this.buttonBackground?this.buttonBackground.toString():"");const i=this.buttonBorder?this.buttonBorder.toString():"";this._element.style.color=t,this._element.style.backgroundColor=e,this._element.style.borderWidth=i?"1px":"",this._element.style.borderStyle=i?"solid":"",this._element.style.borderColor=i}}get element(){return this._element}set label(e){G.pv(this._element,"monaco-text-button")||G.cn(this._element,"monaco-text-button"),this.options.supportCodicons?G.mc(this._element,...function(e){const t=new Array;let i,n=0,r=0;for(;null!==(i=kr.b3.exec(e));){r=i.index||0,t.push(e.substring(n,r)),n=(i.index||0)+i[0].length;const[,s,o,a,l]=i;t.push(s?`$(${o})`:G.$(`span.codicon.codicon-${a}${l?`.codicon-animation-${l}`:""}`))}return n<e.length&&t.push(e.substring(n)),t}(e)):this._element.textContent=e,"string"==typeof this.options.title?this._element.title=this.options.title:this.options.title&&(this._element.title=e)}set enabled(e){e?(G.IV(this._element,"disabled"),this._element.setAttribute("aria-disabled",String(!1)),this._element.tabIndex=0):(G.cn(this._element,"disabled"),this._element.setAttribute("aria-disabled",String(!0)),G.eJ(this._element))}get enabled(){return!G.pv(this._element,"disabled")}}var _o=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const bo=G.$,vo={iconClass:(0,kr.q5)("quick-input-back",kr.lA.arrowLeft).classNames,tooltip:(0,ii.N)("quickInput.back","Back"),handle:-1};class yo extends _e.JT{constructor(e){super(),this.ui=e,this.visible=!1,this._enabled=!0,this._busy=!1,this._ignoreFocusOut=!1,this._buttons=[],this.buttonsUpdated=!1,this.onDidTriggerButtonEmitter=this._register(new B.Q5),this.onDidHideEmitter=this._register(new B.Q5),this.onDisposeEmitter=this._register(new B.Q5),this.visibleDisposables=this._register(new _e.SL),this.onDidHide=this.onDidHideEmitter.event}get title(){return this._title}set title(e){this._title=e,this.update()}get description(){return this._description}set description(e){this._description=e,this.update()}get step(){return this._steps}set step(e){this._steps=e,this.update()}get totalSteps(){return this._totalSteps}set totalSteps(e){this._totalSteps=e,this.update()}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this.update()}get contextKey(){return this._contextKey}set contextKey(e){this._contextKey=e,this.update()}get busy(){return this._busy}set busy(e){this._busy=e,this.update()}get ignoreFocusOut(){return this._ignoreFocusOut}set ignoreFocusOut(e){this._ignoreFocusOut=e,this.update()}get buttons(){return this._buttons}set buttons(e){this._buttons=e,this.buttonsUpdated=!0,this.update()}show(){this.visible||(this.visibleDisposables.add(this.ui.onDidTriggerButton((e=>{-1!==this.buttons.indexOf(e)&&this.onDidTriggerButtonEmitter.fire(e)}))),this.ui.show(this),this.visible=!0,this.update())}hide(){this.visible&&this.ui.hide()}didHide(){this.visible=!1,this.visibleDisposables.clear(),this.onDidHideEmitter.fire()}update(){if(!this.visible)return;const e=this.getTitle();e&&this.ui.title.textContent!==e?this.ui.title.textContent=e:e||" "===this.ui.title.innerHTML||(this.ui.title.innerText=" ;");const t=this.getDescription();if(this.ui.description.textContent!==t&&(this.ui.description.textContent=t),this.busy&&!this.busyDelay&&(this.busyDelay=new me._F,this.busyDelay.setIfNotSet((()=>{this.visible&&this.ui.progressBar.infinite()}),800)),!this.busy&&this.busyDelay&&(this.ui.progressBar.stop(),this.busyDelay.cancel(),this.busyDelay=void 0),this.buttonsUpdated){this.buttonsUpdated=!1,this.ui.leftActionBar.clear();const e=this.buttons.filter((e=>e===vo));this.ui.leftActionBar.push(e.map(((e,t)=>{const i=new mr.aU(`id-${t}`,"",e.iconClass||$s(e.iconPath),!0,(()=>_o(this,void 0,void 0,(function*(){this.onDidTriggerButtonEmitter.fire(e)}))));return i.tooltip=e.tooltip||"",i})),{icon:!0,label:!1}),this.ui.rightActionBar.clear();const t=this.buttons.filter((e=>e!==vo));this.ui.rightActionBar.push(t.map(((e,t)=>{const i=new mr.aU(`id-${t}`,"",e.iconClass||$s(e.iconPath),!0,(()=>_o(this,void 0,void 0,(function*(){this.onDidTriggerButtonEmitter.fire(e)}))));return i.tooltip=e.tooltip||"",i})),{icon:!0,label:!1})}this.ui.ignoreFocusOut=this.ignoreFocusOut,this.ui.setEnabled(this.enabled),this.ui.setContextKey(this.contextKey)}getTitle(){return this.title&&this.step?`${this.title} (${this.getSteps()})`:this.title?this.title:this.step?this.getSteps():""}getDescription(){return this.description||""}getSteps(){return this.step&&this.totalSteps?(0,ii.N)("quickInput.steps","{0}/{1}",this.step,this.totalSteps):this.step?String(this.step):""}showMessageDecoration(e){if(this.ui.inputBox.showDecoration(e),e===Vt.Z.Error){const t=this.ui.inputBox.stylesForType(e);this.ui.message.style.color=t.foreground?`${t.foreground}`:"",this.ui.message.style.backgroundColor=t.background?`${t.background}`:"",this.ui.message.style.border=t.border?`1px solid ${t.border}`:"",this.ui.message.style.paddingBottom="4px"}else this.ui.message.style.color="",this.ui.message.style.backgroundColor="",this.ui.message.style.border="",this.ui.message.style.paddingBottom=""}dispose(){this.hide(),this.onDisposeEmitter.fire(),super.dispose()}}class wo extends yo{constructor(){super(...arguments),this._value="",this.onDidChangeValueEmitter=this._register(new B.Q5),this.onDidAcceptEmitter=this._register(new B.Q5),this.onDidCustomEmitter=this._register(new B.Q5),this._items=[],this.itemsUpdated=!1,this._canSelectMany=!1,this._canAcceptInBackground=!1,this._matchOnDescription=!1,this._matchOnDetail=!1,this._matchOnLabel=!0,this._sortByLabel=!0,this._autoFocusOnList=!0,this._itemActivation=this.ui.isScreenReaderOptimized()?Fs.j.NONE:Fs.j.FIRST,this._activeItems=[],this.activeItemsUpdated=!1,this.activeItemsToConfirm=[],this.onDidChangeActiveEmitter=this._register(new B.Q5),this._selectedItems=[],this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=[],this.onDidChangeSelectionEmitter=this._register(new B.Q5),this.onDidTriggerItemButtonEmitter=this._register(new B.Q5),this.valueSelectionUpdated=!0,this._ok="default",this._customButton=!1,this.filterValue=e=>e,this.onDidChangeValue=this.onDidChangeValueEmitter.event,this.onDidAccept=this.onDidAcceptEmitter.event,this.onDidChangeActive=this.onDidChangeActiveEmitter.event,this.onDidChangeSelection=this.onDidChangeSelectionEmitter.event,this.onDidTriggerItemButton=this.onDidTriggerItemButtonEmitter.event}get quickNavigate(){return this._quickNavigate}set quickNavigate(e){this._quickNavigate=e,this.update()}get value(){return this._value}set value(e){this._value=e||"",this.update()}set ariaLabel(e){this._ariaLabel=e,this.update()}get ariaLabel(){return this._ariaLabel}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.update()}get items(){return this._items}set items(e){this._items=e,this.itemsUpdated=!0,this.update()}get canSelectMany(){return this._canSelectMany}set canSelectMany(e){this._canSelectMany=e,this.update()}get canAcceptInBackground(){return this._canAcceptInBackground}set canAcceptInBackground(e){this._canAcceptInBackground=e}get matchOnDescription(){return this._matchOnDescription}set matchOnDescription(e){this._matchOnDescription=e,this.update()}get matchOnDetail(){return this._matchOnDetail}set matchOnDetail(e){this._matchOnDetail=e,this.update()}get matchOnLabel(){return this._matchOnLabel}set matchOnLabel(e){this._matchOnLabel=e,this.update()}get sortByLabel(){return this._sortByLabel}set sortByLabel(e){this._sortByLabel=e,this.update()}get autoFocusOnList(){return this._autoFocusOnList}set autoFocusOnList(e){this._autoFocusOnList=e,this.update()}get itemActivation(){return this._itemActivation}set itemActivation(e){this._itemActivation=e}get activeItems(){return this._activeItems}set activeItems(e){this._activeItems=e,this.activeItemsUpdated=!0,this.update()}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems=e,this.selectedItemsUpdated=!0,this.update()}get keyMods(){return this._quickNavigate?Fs.X:this.ui.keyMods}set valueSelection(e){this._valueSelection=e,this.valueSelectionUpdated=!0,this.update()}get validationMessage(){return this._validationMessage}set validationMessage(e){this._validationMessage=e,this.update()}get customButton(){return this._customButton}set customButton(e){this._customButton=e,this.update()}get customLabel(){return this._customButtonLabel}set customLabel(e){this._customButtonLabel=e,this.update()}get customHover(){return this._customButtonHover}set customHover(e){this._customButtonHover=e,this.update()}get ok(){return this._ok}set ok(e){this._ok=e,this.update()}get hideInput(){return!!this._hideInput}set hideInput(e){this._hideInput=e,this.update()}trySelectFirst(){this.autoFocusOnList&&(this.canSelectMany||this.ui.list.focus(eo.First))}show(){this.visible||(this.visibleDisposables.add(this.ui.inputBox.onDidChange((e=>{e!==this.value&&(this._value=e,this.ui.list.filter(this.filterValue(this.ui.inputBox.value))&&this.trySelectFirst(),this.onDidChangeValueEmitter.fire(e))}))),this.visibleDisposables.add(this.ui.inputBox.onMouseDown((e=>{this.autoFocusOnList||this.ui.list.clearFocus()}))),this.visibleDisposables.add((this._hideInput?this.ui.list:this.ui.inputBox).onKeyDown((e=>{switch(e.keyCode){case 18:this.ui.list.focus(eo.Next),this.canSelectMany&&this.ui.list.domFocus(),G.zB.stop(e,!0);break;case 16:this.ui.list.getFocusedElements().length?this.ui.list.focus(eo.Previous):this.ui.list.focus(eo.Last),this.canSelectMany&&this.ui.list.domFocus(),G.zB.stop(e,!0);break;case 12:this.ui.list.focus(eo.NextPage),this.canSelectMany&&this.ui.list.domFocus(),G.zB.stop(e,!0);break;case 11:this.ui.list.focus(eo.PreviousPage),this.canSelectMany&&this.ui.list.domFocus(),G.zB.stop(e,!0);break;case 17:if(!this._canAcceptInBackground)return;if(!this.ui.inputBox.isSelectionAtEnd())return;this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.onDidAcceptEmitter.fire({inBackground:!0}));break;case 14:!e.ctrlKey&&!e.metaKey||e.shiftKey||e.altKey||(this.ui.list.focus(eo.First),G.zB.stop(e,!0));break;case 13:!e.ctrlKey&&!e.metaKey||e.shiftKey||e.altKey||(this.ui.list.focus(eo.Last),G.zB.stop(e,!0))}}))),this.visibleDisposables.add(this.ui.onDidAccept((()=>{!this.canSelectMany&&this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems)),this.onDidAcceptEmitter.fire({inBackground:!1})}))),this.visibleDisposables.add(this.ui.onDidCustom((()=>{this.onDidCustomEmitter.fire()}))),this.visibleDisposables.add(this.ui.list.onDidChangeFocus((e=>{this.activeItemsUpdated||this.activeItemsToConfirm!==this._activeItems&&(0,De.fS)(e,this._activeItems,((e,t)=>e===t))||(this._activeItems=e,this.onDidChangeActiveEmitter.fire(e))}))),this.visibleDisposables.add(this.ui.list.onDidChangeSelection((({items:e,event:t})=>{this.canSelectMany?e.length&&this.ui.list.setSelectedElements([]):this.selectedItemsToConfirm!==this._selectedItems&&(0,De.fS)(e,this._selectedItems,((e,t)=>e===t))||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e),e.length&&this.onDidAcceptEmitter.fire({inBackground:t instanceof MouseEvent&&1===t.button}))}))),this.visibleDisposables.add(this.ui.list.onChangedCheckedElements((e=>{this.canSelectMany&&(this.selectedItemsToConfirm!==this._selectedItems&&(0,De.fS)(e,this._selectedItems,((e,t)=>e===t))||(this._selectedItems=e,this.onDidChangeSelectionEmitter.fire(e)))}))),this.visibleDisposables.add(this.ui.list.onButtonTriggered((e=>this.onDidTriggerItemButtonEmitter.fire(e)))),this.visibleDisposables.add(this.registerQuickNavigation()),this.valueSelectionUpdated=!0),super.show()}registerQuickNavigation(){return G.nm(this.ui.container,G.tw.KEY_UP,(e=>{if(this.canSelectMany||!this._quickNavigate)return;const t=new jt.y(e),i=t.keyCode;this._quickNavigate.keybindings.some((e=>{const[n,r]=e.getParts();return!(r||(n.shiftKey&&4===i?t.ctrlKey||t.altKey||t.metaKey:!(n.altKey&&6===i||n.ctrlKey&&5===i||n.metaKey&&57===i)))}))&&(this.activeItems[0]&&(this._selectedItems=[this.activeItems[0]],this.onDidChangeSelectionEmitter.fire(this.selectedItems),this.onDidAcceptEmitter.fire({inBackground:!1})),this._quickNavigate=void 0)}))}update(){if(!this.visible)return;let e=!1,t=!1;this._hideInput&&this._items.length>0&&(this.ui.isScreenReaderOptimized()?t=!0:e=!0),G.og(this.ui.container,"hidden-input",e);const i={title:!!this.title||!!this.step||!!this.buttons.length,description:!!this.description,checkAll:this.canSelectMany,inputBox:!e,progressBar:!e,visibleCount:!0,count:this.canSelectMany,ok:"default"===this.ok?this.canSelectMany:this.ok,list:!0,message:!!this.validationMessage,customButton:this.customButton};if(this.ui.setVisibilities(i),super.update(),this.ui.inputBox.value!==this.value&&(this.ui.inputBox.value=this.value),this.valueSelectionUpdated&&(this.valueSelectionUpdated=!1,this.ui.inputBox.select(this._valueSelection&&{start:this._valueSelection[0],end:this._valueSelection[1]})),this.ui.inputBox.placeholder!==(this.placeholder||"")&&(this.ui.inputBox.placeholder=this.placeholder||""),t)this.ui.inputBox.ariaLabel="";else{const e=this.ariaLabel||this.placeholder||wo.DEFAULT_ARIA_LABEL;this.ui.inputBox.ariaLabel!==e&&(this.ui.inputBox.ariaLabel=e)}if(this.ui.list.matchOnDescription=this.matchOnDescription,this.ui.list.matchOnDetail=this.matchOnDetail,this.ui.list.matchOnLabel=this.matchOnLabel,this.ui.list.sortByLabel=this.sortByLabel,this.itemsUpdated)switch(this.itemsUpdated=!1,this.ui.list.setElements(this.items),this.ui.list.filter(this.filterValue(this.ui.inputBox.value)),this.ui.checkAll.checked=this.ui.list.getAllVisibleChecked(),this.ui.visibleCount.setCount(this.ui.list.getVisibleCount()),this.ui.count.setCount(this.ui.list.getCheckedCount()),this._itemActivation){case Fs.j.NONE:this._itemActivation=Fs.j.FIRST;break;case Fs.j.SECOND:this.ui.list.focus(eo.Second),this._itemActivation=Fs.j.FIRST;break;case Fs.j.LAST:this.ui.list.focus(eo.Last),this._itemActivation=Fs.j.FIRST;break;default:this.trySelectFirst()}this.ui.container.classList.contains("show-checkboxes")!==!!this.canSelectMany&&(this.canSelectMany?this.ui.list.clearFocus():this.trySelectFirst()),this.activeItemsUpdated&&(this.activeItemsUpdated=!1,this.activeItemsToConfirm=this._activeItems,this.ui.list.setFocusedElements(this.activeItems),this.activeItemsToConfirm===this._activeItems&&(this.activeItemsToConfirm=null)),this.selectedItemsUpdated&&(this.selectedItemsUpdated=!1,this.selectedItemsToConfirm=this._selectedItems,this.canSelectMany?this.ui.list.setCheckedElements(this.selectedItems):this.ui.list.setSelectedElements(this.selectedItems),this.selectedItemsToConfirm===this._selectedItems&&(this.selectedItemsToConfirm=null)),this.validationMessage?(this.ui.message.textContent=this.validationMessage,this.showMessageDecoration(Vt.Z.Error)):(this.ui.message.textContent=null,this.showMessageDecoration(Vt.Z.Ignore)),this.ui.customButton.label=this.customLabel||"",this.ui.customButton.element.title=this.customHover||"",this.ui.setComboboxAccessibility(!0),i.inputBox||this.ui.list.domFocus()}}wo.DEFAULT_ARIA_LABEL=(0,ii.N)("quickInputBox.ariaLabel","Type to narrow down results.");class Co extends _e.JT{constructor(e){super(),this.options=e,this.comboboxAccessibility=!1,this.enabled=!0,this.onDidAcceptEmitter=this._register(new B.Q5),this.onDidCustomEmitter=this._register(new B.Q5),this.onDidTriggerButtonEmitter=this._register(new B.Q5),this.keyMods={ctrlCmd:!1,alt:!1},this.controller=null,this.onShowEmitter=this._register(new B.Q5),this.onShow=this.onShowEmitter.event,this.onHideEmitter=this._register(new B.Q5),this.onHide=this.onHideEmitter.event,this.idPrefix=e.idPrefix,this.parentElement=e.container,this.styles=e.styles,this.registerKeyModsListeners()}registerKeyModsListeners(){const e=e=>{this.keyMods.ctrlCmd=e.ctrlKey||e.metaKey,this.keyMods.alt=e.altKey};this._register(G.nm(window,G.tw.KEY_DOWN,e,!0)),this._register(G.nm(window,G.tw.KEY_UP,e,!0)),this._register(G.nm(window,G.tw.MOUSE_DOWN,e,!0))}getUI(){if(this.ui)return this.ui;const e=G.R3(this.parentElement,bo(".quick-input-widget.show-file-icons"));e.tabIndex=-1,e.style.display="none";const t=G.dS(e),i=G.R3(e,bo(".quick-input-titlebar")),n=this._register(new _r.o(i));n.domNode.classList.add("quick-input-left-action-bar");const r=G.R3(i,bo(".quick-input-title")),s=this._register(new _r.o(i));s.domNode.classList.add("quick-input-right-action-bar");const o=G.R3(e,bo(".quick-input-description")),a=G.R3(e,bo(".quick-input-header")),l=G.R3(a,bo("input.quick-input-check-all"));l.type="checkbox",this._register(G.mu(l,G.tw.CHANGE,(e=>{const t=l.checked;C.setAllVisibleChecked(t)}))),this._register(G.nm(l,G.tw.CLICK,(e=>{(e.x||e.y)&&h.setFocus()})));const c=G.R3(a,bo(".quick-input-and-message")),d=G.R3(c,bo(".quick-input-filter")),h=this._register(new so(d));h.setAttribute("aria-describedby",`${this.idPrefix}message`);const u=G.R3(d,bo(".quick-input-visible-count"));u.setAttribute("aria-live","polite"),u.setAttribute("aria-atomic","true");const g=new oo.Z(u,{countFormat:(0,ii.N)({key:"quickInput.visibleCount",comment:["This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers."]},"{0} Results")}),f=G.R3(d,bo(".quick-input-count"));f.setAttribute("aria-live","polite");const p=new oo.Z(f,{countFormat:(0,ii.N)({key:"quickInput.countSelected",comment:["This tells the user how many items are selected in a list of items to select from. The items can be anything."]},"{0} Selected")}),m=G.R3(a,bo(".quick-input-action")),_=new mo(m);_.label=(0,ii.N)("ok","OK"),this._register(_.onDidClick((e=>{this.onDidAcceptEmitter.fire()})));const b=G.R3(a,bo(".quick-input-action")),v=new mo(b);v.label=(0,ii.N)("custom","Custom"),this._register(v.onDidClick((e=>{this.onDidCustomEmitter.fire()})));const y=G.R3(c,bo(`#${this.idPrefix}message.quick-input-message`)),w=new go(e);G.cn(w.getContainer(),"quick-input-progress");const C=this._register(new to(e,this.idPrefix+"list",this.options));this._register(C.onChangedAllVisibleChecked((e=>{l.checked=e}))),this._register(C.onChangedVisibleCount((e=>{g.setCount(e)}))),this._register(C.onChangedCheckedCount((e=>{p.setCount(e)}))),this._register(C.onLeave((()=>{setTimeout((()=>{h.setFocus(),this.controller instanceof wo&&this.controller.canSelectMany&&C.clearFocus()}),0)}))),this._register(C.onDidChangeFocus((()=>{this.comboboxAccessibility&&this.getUI().inputBox.setAttribute("aria-activedescendant",this.getUI().list.getActiveDescendant()||"")})));const S=G.go(e);return this._register(S),this._register(G.nm(e,G.tw.FOCUS,(e=>{this.previousFocusElement=e.relatedTarget instanceof HTMLElement?e.relatedTarget:void 0}),!0)),this._register(S.onDidBlur((()=>{this.getUI().ignoreFocusOut||this.options.ignoreFocusOut()||this.hide(),this.previousFocusElement=void 0}))),this._register(G.nm(e,G.tw.FOCUS,(e=>{h.setFocus()}))),this._register(G.nm(e,G.tw.KEY_DOWN,(t=>{const i=new jt.y(t);switch(i.keyCode){case 3:G.zB.stop(t,!0),this.onDidAcceptEmitter.fire();break;case 9:G.zB.stop(t,!0),this.hide();break;case 2:if(!i.altKey&&!i.ctrlKey&&!i.metaKey){const n=[".action-label.codicon"];e.classList.contains("show-checkboxes")?n.push("input"):n.push("input[type=text]"),this.getUI().list.isDisplayed()&&n.push(".monaco-list");const r=e.querySelectorAll(n.join(", "));i.shiftKey&&i.target===r[0]?(G.zB.stop(t,!0),r[r.length-1].focus()):i.shiftKey||i.target!==r[r.length-1]||(G.zB.stop(t,!0),r[0].focus())}}}))),this.ui={container:e,styleSheet:t,leftActionBar:n,titleBar:i,title:r,description:o,rightActionBar:s,checkAll:l,filterContainer:d,inputBox:h,visibleCountContainer:u,visibleCount:g,countContainer:f,count:p,okContainer:m,ok:_,message:y,customButtonContainer:b,customButton:v,progressBar:w,list:C,onDidAccept:this.onDidAcceptEmitter.event,onDidCustom:this.onDidCustomEmitter.event,onDidTriggerButton:this.onDidTriggerButtonEmitter.event,ignoreFocusOut:!1,keyMods:this.keyMods,isScreenReaderOptimized:()=>this.options.isScreenReaderOptimized(),show:e=>this.show(e),hide:()=>this.hide(),setVisibilities:e=>this.setVisibilities(e),setComboboxAccessibility:e=>this.setComboboxAccessibility(e),setEnabled:e=>this.setEnabled(e),setContextKey:e=>this.options.setContextKey(e)},this.updateStyles(),this.ui}pick(e,t={},i=F.T.None){return new Promise(((n,r)=>{let s=e=>{s=n,t.onKeyMods&&t.onKeyMods(o.keyMods),n(e)};if(i.isCancellationRequested)return void s(void 0);const o=this.createQuickPick();let a;const l=[o,o.onDidAccept((()=>{if(o.canSelectMany)s(o.selectedItems.slice()),o.hide();else{const e=o.activeItems[0];e&&(s(e),o.hide())}})),o.onDidChangeActive((e=>{const i=e[0];i&&t.onDidFocus&&t.onDidFocus(i)})),o.onDidChangeSelection((e=>{if(!o.canSelectMany){const t=e[0];t&&(s(t),o.hide())}})),o.onDidTriggerItemButton((e=>t.onDidTriggerItemButton&&t.onDidTriggerItemButton(Object.assign(Object.assign({},e),{removeItem:()=>{const t=o.items.indexOf(e.item);if(-1!==t){const e=o.items.slice();e.splice(t,1),o.items=e}}})))),o.onDidChangeValue((e=>{!a||e||1===o.activeItems.length&&o.activeItems[0]===a||(o.activeItems=[a])})),i.onCancellationRequested((()=>{o.hide()})),o.onDidHide((()=>{(0,_e.B9)(l),s(void 0)}))];o.canSelectMany=!!t.canPickMany,o.placeholder=t.placeHolder,o.ignoreFocusOut=!!t.ignoreFocusLost,o.matchOnDescription=!!t.matchOnDescription,o.matchOnDetail=!!t.matchOnDetail,o.matchOnLabel=void 0===t.matchOnLabel||t.matchOnLabel,o.autoFocusOnList=void 0===t.autoFocusOnList||t.autoFocusOnList,o.quickNavigate=t.quickNavigate,o.contextKey=t.contextKey,o.busy=!0,Promise.all([e,t.activeItem]).then((([e,t])=>{a=t,o.busy=!1,o.items=e,o.canSelectMany&&(o.selectedItems=e.filter((e=>"separator"!==e.type&&e.picked))),a&&(o.activeItems=[a])})),o.show(),Promise.resolve(e).then(void 0,(e=>{r(e),o.hide()}))}))}createQuickPick(){const e=this.getUI();return new wo(e)}show(e){const t=this.getUI();this.onShowEmitter.fire();const i=this.controller;this.controller=e,i&&i.didHide(),this.setEnabled(!0),t.leftActionBar.clear(),t.title.textContent="",t.description.textContent="",t.rightActionBar.clear(),t.checkAll.checked=!1,t.inputBox.placeholder="",t.inputBox.password=!1,t.inputBox.showDecoration(Vt.Z.Ignore),t.visibleCount.setCount(0),t.count.setCount(0),t.message.textContent="",t.progressBar.stop(),t.list.setElements([]),t.list.matchOnDescription=!1,t.list.matchOnDetail=!1,t.list.matchOnLabel=!0,t.list.sortByLabel=!0,t.ignoreFocusOut=!1,this.setComboboxAccessibility(!1),t.inputBox.ariaLabel="";const n=this.options.backKeybindingLabel();vo.tooltip=n?(0,ii.N)("quickInput.backWithKeybinding","Back ({0})",n):(0,ii.N)("quickInput.back","Back"),t.container.style.display="",this.updateLayout(),t.inputBox.setFocus()}setVisibilities(e){const t=this.getUI();t.title.style.display=e.title?"":"none",t.description.style.display=e.description?"":"none",t.checkAll.style.display=e.checkAll?"":"none",t.filterContainer.style.display=e.inputBox?"":"none",t.visibleCountContainer.style.display=e.visibleCount?"":"none",t.countContainer.style.display=e.count?"":"none",t.okContainer.style.display=e.ok?"":"none",t.customButtonContainer.style.display=e.customButton?"":"none",t.message.style.display=e.message?"":"none",t.progressBar.getContainer().style.display=e.progressBar?"":"none",t.list.display(!!e.list),t.container.classList[e.checkAll?"add":"remove"]("show-checkboxes"),this.updateLayout()}setComboboxAccessibility(e){if(e!==this.comboboxAccessibility){const t=this.getUI();this.comboboxAccessibility=e,this.comboboxAccessibility?(t.inputBox.setAttribute("role","combobox"),t.inputBox.setAttribute("aria-haspopup","true"),t.inputBox.setAttribute("aria-autocomplete","list"),t.inputBox.setAttribute("aria-activedescendant",t.list.getActiveDescendant()||"")):(t.inputBox.removeAttribute("role"),t.inputBox.removeAttribute("aria-haspopup"),t.inputBox.removeAttribute("aria-autocomplete"),t.inputBox.removeAttribute("aria-activedescendant"))}}setEnabled(e){if(e!==this.enabled){this.enabled=e;for(const t of this.getUI().leftActionBar.viewItems)t.getAction().enabled=e;for(const t of this.getUI().rightActionBar.viewItems)t.getAction().enabled=e;this.getUI().checkAll.disabled=!e,this.getUI().ok.enabled=e,this.getUI().list.enabled=e}}hide(){var e;const t=this.controller;if(t){const i=!(null===(e=this.ui)||void 0===e?void 0:e.container.contains(document.activeElement));this.controller=null,this.onHideEmitter.fire(),this.getUI().container.style.display="none",i||(this.previousFocusElement&&this.previousFocusElement.offsetParent?(this.previousFocusElement.focus(),this.previousFocusElement=void 0):this.options.returnFocus()),t.didHide()}}layout(e,t){this.dimension=e,this.titleBarOffset=t,this.updateLayout()}updateLayout(){if(this.ui){this.ui.container.style.top=`${this.titleBarOffset}px`;const e=this.ui.container.style,t=Math.min(.62*this.dimension.width,Co.MAX_WIDTH);e.width=t+"px",e.marginLeft="-"+t/2+"px",this.ui.inputBox.layout(),this.ui.list.layout(this.dimension&&.4*this.dimension.height)}}applyStyles(e){this.styles=e,this.updateStyles()}updateStyles(){if(this.ui){const{quickInputTitleBackground:e,quickInputBackground:t,quickInputForeground:i,contrastBorder:n,widgetShadow:r}=this.styles.widget;this.ui.titleBar.style.backgroundColor=e?e.toString():"",this.ui.container.style.backgroundColor=t?t.toString():"",this.ui.container.style.color=i?i.toString():"",this.ui.container.style.border=n?`1px solid ${n}`:"",this.ui.container.style.boxShadow=r?`0 5px 8px ${r}`:"",this.ui.inputBox.style(this.styles.inputBox),this.ui.count.style(this.styles.countBadge),this.ui.ok.style(this.styles.button),this.ui.customButton.style(this.styles.button),this.ui.progressBar.style(this.styles.progressBar),this.ui.list.style(this.styles.list);const s=[];this.styles.list.listInactiveFocusForeground&&(s.push(`.monaco-list .monaco-list-row.focused { color: ${this.styles.list.listInactiveFocusForeground}; }`),s.push(`.monaco-list .monaco-list-row.focused:hover { color: ${this.styles.list.listInactiveFocusForeground}; }`)),this.styles.list.pickerGroupBorder&&s.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.list.pickerGroupBorder}; }`),this.styles.list.pickerGroupForeground&&s.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.list.pickerGroupForeground}; }`);const o=s.join("\n");o!==this.ui.styleSheet.innerHTML&&(this.ui.styleSheet.innerHTML=o)}}}Co.MAX_WIDTH=600;var So=i(41157),ko=i(90725),xo=i(88289),Lo=function(e,t){return function(i,n){t(i,n,e)}};let Mo=class extends _e.JT{constructor(e,t){super(),this.quickInputService=e,this.instantiationService=t,this.registry=_n.B.as(ko.IP.Quickaccess),this.mapProviderToDescriptor=new Map,this.lastAcceptedPickerValues=new Map,this.visibleQuickAccess=void 0}show(e="",t){var i;const[n,r]=this.getOrInstantiateProvider(e),s=this.visibleQuickAccess,o=null==s?void 0:s.descriptor;if(s&&r&&o===r)return e===r.prefix||(null==t?void 0:t.preserveValue)||(s.picker.value=e),void this.adjustValueSelection(s.picker,r,t);if(r&&!(null==t?void 0:t.preserveValue)){let t;if(s&&o&&o!==r){const e=s.value.substr(o.prefix.length);e&&(t=`${r.prefix}${e}`)}if(!t){const e=null==n?void 0:n.defaultFilterValue;e===ko.Ry.LAST?t=this.lastAcceptedPickerValues.get(r):"string"==typeof e&&(t=`${r.prefix}${e}`)}"string"==typeof t&&(e=t)}const a=new _e.SL,l=a.add(this.quickInputService.createQuickPick());l.value=e,this.adjustValueSelection(l,r,t),l.placeholder=null==r?void 0:r.placeholder,l.quickNavigate=null==t?void 0:t.quickNavigateConfiguration,l.hideInput=!!l.quickNavigate&&!s,("number"==typeof(null==t?void 0:t.itemActivation)||(null==t?void 0:t.quickNavigateConfiguration))&&(l.itemActivation=null!==(i=null==t?void 0:t.itemActivation)&&void 0!==i?i:So.jG.SECOND),l.contextKey=null==r?void 0:r.contextKey,l.filterValue=e=>e.substring(r?r.prefix.length:0),(null==r?void 0:r.placeholder)&&(l.ariaLabel=null==r?void 0:r.placeholder);const c=this.registerPickerListeners(l,n,r,e,a);n&&a.add(n.provide(l,c)),l.show()}adjustValueSelection(e,t,i){var n;let r;r=(null==i?void 0:i.preserveValue)?[e.value.length,e.value.length]:[null!==(n=null==t?void 0:t.prefix.length)&&void 0!==n?n:0,e.value.length],e.valueSelection=r}registerPickerListeners(e,t,i,n,r){const s=this.visibleQuickAccess={picker:e,descriptor:i,value:n};r.add((0,_e.OF)((()=>{s===this.visibleQuickAccess&&(this.visibleQuickAccess=void 0)}))),r.add(e.onDidChangeValue((e=>{const[i]=this.getOrInstantiateProvider(e);i!==t?this.show(e,{preserveValue:!0}):s.value=e}))),i&&r.add(e.onDidAccept((()=>{this.lastAcceptedPickerValues.set(i,e.value)})));const o=r.add(new F.A);return(0,xo.I)(e.onDidHide)((()=>{0===e.selectedItems.length&&o.cancel(),r.dispose()})),o.token}getOrInstantiateProvider(e){const t=this.registry.getQuickAccessProvider(e);if(!t)return[void 0,void 0];let i=this.mapProviderToDescriptor.get(t);return i||(i=this.instantiationService.createInstance(t.ctor),this.mapProviderToDescriptor.set(t,i)),[i,t]}};Mo=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([Lo(0,So.eJ),Lo(1,Ui.TG)],Mo);var Do=function(e,t){return function(i,n){t(i,n,e)}};let No=class extends Ki.bB{constructor(e,t,i,n,r){super(i),this.instantiationService=e,this.contextKeyService=t,this.accessibilityService=n,this.layoutService=r,this.contexts=new Map}get controller(){return this._controller||(this._controller=this._register(this.createController())),this._controller}get quickAccess(){return this._quickAccess||(this._quickAccess=this._register(this.instantiationService.createInstance(Mo))),this._quickAccess}createController(e=this.layoutService,t){var i,n;const r={idPrefix:"quickInput_",container:e.container,ignoreFocusOut:()=>!1,isScreenReaderOptimized:()=>this.accessibilityService.isScreenReaderOptimized(),backKeybindingLabel:()=>{},setContextKey:e=>this.setContextKey(e),returnFocus:()=>e.focus(),createList:(e,t,i,n,r)=>this.instantiationService.createInstance(ts.ev,e,t,i,n,r),styles:this.computeStyles()},s=this._register(new Co(Object.assign(Object.assign({},r),t)));return s.layout(e.dimension,null!==(n=null===(i=e.offset)||void 0===i?void 0:i.top)&&void 0!==n?n:0),this._register(e.onLayout((t=>{var i,n;return s.layout(t,null!==(n=null===(i=e.offset)||void 0===i?void 0:i.top)&&void 0!==n?n:0)}))),this._register(s.onShow((()=>this.resetContextKeys()))),this._register(s.onHide((()=>this.resetContextKeys()))),s}setContextKey(e){let t;e&&(t=this.contexts.get(e),t||(t=new Vi.uy(e,!1).bindTo(this.contextKeyService),this.contexts.set(e,t))),t&&t.get()||(this.resetContextKeys(),t&&t.set(!0))}resetContextKeys(){this.contexts.forEach((e=>{e.get()&&e.reset()}))}pick(e,t={},i=F.T.None){return this.controller.pick(e,t,i)}createQuickPick(){return this.controller.createQuickPick()}updateStyles(){this.controller.applyStyles(this.computeStyles())}computeStyles(){return{widget:Object.assign({},(0,Br.o)(this.theme,{quickInputBackground:zn.zK,quickInputForeground:zn.tZ,quickInputTitleBackground:zn.lo,contrastBorder:zn.lR,widgetShadow:zn.rh})),inputBox:(0,Br.o)(this.theme,{inputForeground:zn.zJ,inputBackground:zn.sE,inputBorder:zn.dt,inputValidationInfoBackground:zn._l,inputValidationInfoForeground:zn.YI,inputValidationInfoBorder:zn.EP,inputValidationWarningBackground:zn.RV,inputValidationWarningForeground:zn.SU,inputValidationWarningBorder:zn.C3,inputValidationErrorBackground:zn.p,inputValidationErrorForeground:zn._t,inputValidationErrorBorder:zn.OZ}),countBadge:(0,Br.o)(this.theme,{badgeBackground:zn.g8,badgeForeground:zn.qe,badgeBorder:zn.lR}),button:(0,Br.o)(this.theme,{buttonForeground:zn.j5,buttonBackground:zn.b7,buttonHoverBackground:zn.GO,buttonBorder:zn.lR}),progressBar:(0,Br.o)(this.theme,{progressBarBackground:zn.zR}),list:(0,Br.o)(this.theme,{listBackground:zn.zK,listInactiveFocusForeground:zn._2,listInactiveFocusBackground:zn._b,listFocusOutline:zn.xL,listInactiveFocusOutline:zn.xL,pickerGroupBorder:zn.op,pickerGroupForeground:zn.kJ})}}};No=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([Do(0,Ui.TG),Do(1,Vi.i6),Do(2,Ki.XE),Do(3,qi.F),Do(4,zr)],No);var Eo=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},To=function(e,t){return function(i,n){t(i,n,e)}};let Io=class extends No{constructor(e,t,i,n,r,s){super(t,i,n,r,s),this.host=void 0;const o=Ao.get(e);this.host={_serviceBrand:void 0,get container(){return o.widget.getDomNode()},get dimension(){return e.getLayoutInfo()},get onLayout(){return e.onDidLayoutChange},focus:()=>e.focus()}}createController(){return super.createController(this.host)}};Io=Eo([To(1,Ui.TG),To(2,Vi.i6),To(3,Ki.XE),To(4,qi.F),To(5,zr)],Io);let Oo=class{constructor(e,t){this.instantiationService=e,this.codeEditorService=t,this.mapEditorToService=new Map}get activeService(){const e=this.codeEditorService.getFocusedCodeEditor();if(!e)throw new Error("Quick input service needs a focused editor to work.");let t=this.mapEditorToService.get(e);if(!t){const i=t=this.instantiationService.createInstance(Io,e);this.mapEditorToService.set(e,t),(0,xo.I)(e.onDidDispose)((()=>{i.dispose(),this.mapEditorToService.delete(e)}))}return t}get quickAccess(){return this.activeService.quickAccess}pick(e,t={},i=F.T.None){return this.activeService.pick(e,t,i)}createQuickPick(){return this.activeService.createQuickPick()}};Oo=Eo([To(0,Ui.TG),To(1,q.$)],Oo);class Ao{constructor(e){this.editor=e,this.widget=new Ro(this.editor)}static get(e){return e.getContribution(Ao.ID)}dispose(){this.widget.dispose()}}Ao.ID="editor.controller.quickInput";class Ro{constructor(e){this.codeEditor=e,this.domNode=document.createElement("div"),this.codeEditor.addOverlayWidget(this)}getId(){return Ro.ID}getDomNode(){return this.domNode}getPosition(){return{preference:2}}dispose(){this.codeEditor.removeOverlayWidget(this)}}Ro.ID="editor.contrib.quickInputWidget",(0,Ps._K)(Ao.ID,Ao);var Po,Fo=i(37280);!function(e){const t=new Zr.y;class i{constructor(e,t){this._serviceId=e,this._factory=t,this._value=null}get id(){return this._serviceId}get(e){if(!this._value){if(e&&(this._value=e[this._serviceId.toString()]),this._value||(this._value=this._factory(e)),!this._value)throw new Error("Service "+this._serviceId+" is missing!");t.set(this._serviceId,this._value)}return this._value}}e.LazyStaticService=i;let n=[];function r(e,t){let r=new i(e,t);return n.push(r),r}e.init=function(e){let t=new Zr.y;for(const[e,i]of(0,_s.d)())t.set(e,i);for(let i in e)e.hasOwnProperty(i)&&t.set((0,Ui.yh)(i),e[i]);n.forEach((i=>t.set(i.id,i.get(e))));let i=new Qr(t,!0);return t.set(Ui.TG,i),[t,i]},e.instantiationService=r(Ui.TG,(()=>new Qr(t,!0)));const s=new Di;e.configurationService=r(qt.Ui,(()=>s)),e.resourceConfigurationService=r(ot.V,(()=>new Ni(s))),e.resourcePropertiesService=r(ot.y,(()=>new Ei(s))),e.contextService=r(mi.ec,(()=>new Ii)),e.labelService=r(es.e,(()=>new Ri)),e.telemetryService=r(Hr.b,(()=>new Ti)),e.dialogService=r($r.S,(()=>new Si)),e.notificationService=r(pi.lT,(()=>new ki)),e.markerService=r(is.lT,(()=>new os)),e.modeService=r(sn.h,(e=>new wn)),e.standaloneThemeService=r(Hi.Z,(()=>new rr)),e.logService=r(at.VZ,(()=>new at.d8)),e.undoRedoService=r(Cs.t,(t=>new As(e.dialogService.get(t),e.notificationService.get(t)))),e.modelService=r(st.q,(t=>new Cn.BR(e.configurationService.get(t),e.resourcePropertiesService.get(t),e.standaloneThemeService.get(t),e.logService.get(t),e.undoRedoService.get(t)))),e.markerDecorationsService=r(us.i,(t=>new ms(e.modelService.get(t),e.markerService.get(t)))),e.codeEditorService=r(q.$,(t=>new An(e.standaloneThemeService.get(t)))),e.editorProgressService=r(Zi.e,(()=>new Ci)),e.storageService=r(as.Uy,(()=>new as.vm)),e.storageSyncService=r(Fo.u,(()=>new Fo.i)),e.editorWorkerService=r(fe.p,(t=>new ht(e.modelService.get(t),e.resourceConfigurationService.get(t),e.logService.get(t))))}(Po||(Po={}));class Bo extends _e.JT{constructor(e,t){super();const[i,n]=Po.init(t);this._serviceCollection=i,this._instantiationService=n;const r=this.get(qt.Ui),s=this.get(pi.lT),o=this.get(Hr.b),a=this.get(Ki.XE),l=this.get(at.VZ);let c=(e,i)=>{let n=null;return t&&(n=t[e.toString()]),n||(n=i()),this._serviceCollection.set(e,n),n},d=c(Vi.i6,(()=>this._register(new fr(r))));c(qi.F,(()=>new vs(d,r))),c(ts.Lw,(()=>new ts.XN(a)));let h=c(ee.H,(()=>new xi(this._instantiationService))),u=c($i.d,(()=>this._register(new Li(d,h,o,s,l,e)))),g=c(zr,(()=>new Pi(Po.codeEditorService.get(q.$),e)));c(So.eJ,(()=>new Oo(n,Po.codeEditorService.get(q.$))));let f=c(zi.u,(()=>this._register(new Ur(g))));c(Gi.p,(()=>new ws)),c(zi.i,(()=>{const e=new Vr(o,s,f,u,a);return e.configure({blockMouse:!1}),this._register(e)})),c(ji.co,(()=>new ds(h))),c(Ut.vu,(()=>new Ai(Po.modelService.get(st.q))))}get(e){let t=this._serviceCollection.get(e);if(!t)throw new Error("Missing service "+e);return t}set(e,t){this._serviceCollection.set(e,t)}has(e){return this._serviceCollection.has(e)}}var Wo=i(89052);function Yo(e,t,i){let n=new Bo(e,t),r=null;n.has(pe.S)||(r=new wi(Po.modelService.get()),n.set(pe.S,r)),n.has(te.v4)||n.set(te.v4,new ae(n.get(q.$),n.get(ee.H)));let s=i(n);return r&&r.setEditor(s),s}function Ho(e,t,i){return Po.modelService.get().createModel(e,t,i)}function jo(e,t){return"boolean"==typeof e?e:t}function Vo(e,t){return"string"==typeof e?e:t}function zo(e,t=!1){t&&(e=e.map((function(e){return e.toLowerCase()})));const i=function(e){const t={};for(const i of e)t[i]=!0;return t}(e);return t?function(e){return void 0!==i[e.toLowerCase()]&&i.hasOwnProperty(e.toLowerCase())}:function(e){return void 0!==i[e]&&i.hasOwnProperty(e)}}function Uo(e,t){let i=0;for(;t.indexOf("@")>=0&&i<5;)i++,t=t.replace(/@(\w+)/g,(function(i,n){let r="";if("string"==typeof e[n])r=e[n];else{if(!(e[n]&&e[n]instanceof RegExp))throw void 0===e[n]?Mt(e,"language definition does not contain attribute '"+n+"', used at: "+t):Mt(e,"attribute reference '"+n+"' must be a string, used at: "+t);r=e[n].source}return kt(r)?"":"(?:"+r+")"}));let n=(e.ignoreCase?"i":"")+(e.unicode?"u":"");return new RegExp(t,n)}function $o(e,t,i,n){let r=-1,s=i,o=i.match(/^\$(([sS]?)(\d\d?)|#)(.*)$/);o&&(o[3]&&(r=parseInt(o[3]),o[2]&&(r+=100)),s=o[4]);let a,l="~",c=s;if(s&&0!==s.length?/^\w*$/.test(c)?l="==":(o=s.match(/^(@|!@|~|!~|==|!=)(.*)$/),o&&(l=o[1],c=o[2])):(l="!=",c=""),"~"!==l&&"!~"!==l||!/^(\w|\|)*$/.test(c))if("@"===l||"!@"===l){let i=e[c];if(!i)throw Mt(e,"the @ match target '"+c+"' is not defined, in rule: "+t);if(!function(e,t){if(!t)return!1;if(!Array.isArray(t))return!1;for(const e of t)if("string"!=typeof e)return!1;return!0}(0,i))throw Mt(e,"the @ match target '"+c+"' must be an array of strings, in rule: "+t);let n=zo(i,e.ignoreCase);a=function(e){return"@"===l?n(e):!n(e)}}else if("~"===l||"!~"===l)if(c.indexOf("$")<0){let t=Uo(e,"^"+c+"$");a=function(e){return"~"===l?t.test(e):!t.test(e)}}else a=function(t,i,n,r){return Uo(e,"^"+Dt(e,c,i,n,r)+"$").test(t)};else if(c.indexOf("$")<0){let t=xt(e,c);a=function(e){return"=="===l?e===t:e!==t}}else{let t=xt(e,c);a=function(i,n,r,s,o){let a=Dt(e,t,n,r,s);return"=="===l?i===a:i!==a}}else{let t=zo(c.split("|"),e.ignoreCase);a=function(e){return"~"===l?t(e):!t(e)}}return-1===r?{name:i,value:n,test:function(e,t,i,n){return a(e,e,t,i,n)}}:{name:i,value:n,test:function(e,t,i,n){let s=function(e,t,i,n){if(n<0)return e;if(n<t.length)return t[n];if(n>=100){n-=100;let e=i.split(".");if(e.unshift(i),n<e.length)return e[n]}return null}(e,t,i,r);return a(s||"",e,t,i,n)}}}function Ko(e,t,i){if(i){if("string"==typeof i)return i;if(i.token||""===i.token){if("string"!=typeof i.token)throw Mt(e,"a 'token' attribute must be of type string, in rule: "+t);{let n={token:i.token};if(i.token.indexOf("$")>=0&&(n.tokenSubst=!0),"string"==typeof i.bracket)if("@open"===i.bracket)n.bracket=1;else{if("@close"!==i.bracket)throw Mt(e,"a 'bracket' attribute must be either '@open' or '@close', in rule: "+t);n.bracket=-1}if(i.next){if("string"!=typeof i.next)throw Mt(e,"the next state must be a string value in rule: "+t);{let r=i.next;if(!/^(@pop|@push|@popall)$/.test(r)&&("@"===r[0]&&(r=r.substr(1)),r.indexOf("$")<0&&!function(e,t){let i=t;for(;i&&i.length>0;){if(e.stateNames[i])return!0;const t=i.lastIndexOf(".");i=t<0?null:i.substr(0,t)}return!1}(e,Dt(e,r,"",[],""))))throw Mt(e,"the next state '"+i.next+"' is not defined in rule: "+t);n.next=r}}return"number"==typeof i.goBack&&(n.goBack=i.goBack),"string"==typeof i.switchTo&&(n.switchTo=i.switchTo),"string"==typeof i.log&&(n.log=i.log),"string"==typeof i.nextEmbedded&&(n.nextEmbedded=i.nextEmbedded,e.usesEmbedded=!0),n}}if(Array.isArray(i)){let n=[];for(let r=0,s=i.length;r<s;r++)n[r]=Ko(e,t,i[r]);return{group:n}}if(i.cases){let n=[];for(let r in i.cases)if(i.cases.hasOwnProperty(r)){const s=Ko(e,t,i.cases[r]);"@default"===r||"@"===r||""===r?n.push({test:void 0,value:s,name:r}):"@eos"===r?n.push({test:function(e,t,i,n){return n},value:s,name:r}):n.push($o(e,t,r,s))}const r=e.defaultToken;return{test:function(e,t,i,s){for(const r of n)if(!r.test||r.test(e,t,i,s))return r.value;return r}}}throw Mt(e,"an action must be a string, an object with a 'token' or 'cases' attribute, or an array of actions; in rule: "+t)}return{token:""}}class qo{constructor(e){this.regex=new RegExp(""),this.action={token:""},this.matchOnlyAtLineStart=!1,this.name="",this.name=e}setRegex(e,t){let i;if("string"==typeof t)i=t;else{if(!(t instanceof RegExp))throw Mt(e,"rules must start with a match string or regular expression: "+this.name);i=t.source}this.matchOnlyAtLineStart=i.length>0&&"^"===i[0],this.name=this.name+": "+i,this.regex=Uo(e,"^(?:"+(this.matchOnlyAtLineStart?i.substr(1):i)+")")}setAction(e,t){this.action=Ko(e,this.name,t)}}class Go{constructor(e){this._actual=e}getInitialState(){return this._actual.getInitialState()}tokenize(e,t,i){throw new Error("Not supported!")}tokenize2(e,t){let i=this._actual.tokenizeEncoded(e,t);return new z.Hi(i.tokens,i.endState)}}class Zo{constructor(e,t,i){this._standaloneThemeService=e,this._languageIdentifier=t,this._actual=i}getInitialState(){return this._actual.getInitialState()}_toClassicTokens(e,t,i){let n=[],r=0;for(let s=0,o=e.length;s<o;s++){const o=e[s];let a=o.startIndex;0===s?a=0:a<r&&(a=r),n[s]=new z.WU(a+i,o.scopes,t),r=a}return n}tokenize(e,t,i){let n,r=this._actual.tokenize(e,t),s=this._toClassicTokens(r.tokens,this._languageIdentifier.language,i);return n=r.endState.equals(t)?t:r.endState,new z.hG(s,n)}_toBinaryTokens(e,t){const i=this._languageIdentifier.id,n=this._standaloneThemeService.getColorTheme().tokenTheme;let r=[],s=0,o=0;for(let a=0,l=e.length;a<l;a++){const l=e[a],c=n.match(i,l.scopes);if(s>0&&r[s-1]===c)continue;let d=l.startIndex;0===a?d=0:d<o&&(d=o),r[s++]=d+t,r[s++]=c,o=d}let a=new Uint32Array(s);for(let e=0;e<s;e++)a[e]=r[e];return a}tokenize2(e,t,i){let n,r=this._actual.tokenize(e,t),s=this._toBinaryTokens(r.tokens,i);return n=r.endState.equals(t)?t:r.endState,new z.Hi(s,n)}}function Jo(e){return e&&"function"==typeof e.then}const Qo=self;P.BH.wrappingIndent.defaultValue=0,P.BH.glyphMargin.defaultValue=!1,P.BH.autoIndent.defaultValue=3,P.BH.overviewRulerLanes.defaultValue=2;const Xo=$();Xo.editor={create:function(e,t,i){return Yo(e,i||{},(i=>new nn(e,t,i,i.get(Ui.TG),i.get(q.$),i.get(ee.H),i.get(Vi.i6),i.get($i.d),i.get(zi.u),i.get(Hi.Z),i.get(pi.lT),i.get(qt.Ui),i.get(qi.F))))},onDidCreateEditor:function(e){return Po.codeEditorService.get().onCodeEditorAdd((t=>{e(t)}))},createDiffEditor:function(e,t,i){return Yo(e,i||{},(i=>new rn(e,t,i,i.get(Ui.TG),i.get(Vi.i6),i.get($i.d),i.get(zi.u),i.get(fe.p),i.get(q.$),i.get(Hi.Z),i.get(pi.lT),i.get(qt.Ui),i.get(zi.i),i.get(Zi.e),i.get(Gi.p))))},createDiffNavigator:function(e,t){return new le.F(e,t)},createModel:function(e,t,i){if(e=e||"",!t){let t=e.indexOf("\n"),n=e;return-1!==t&&(n=e.substring(0,t)),Ho(e,Po.modeService.get().createByFilepathOrFirstLine(i||null,n),i)}return Ho(e,Po.modeService.get().create(t),i)},setModelLanguage:function(e,t){Po.modelService.get().setMode(e,Po.modeService.get().create(t))},setModelMarkers:function(e,t,i){e&&Po.markerService.get().changeOne(t,e.uri,i)},getModelMarkers:function(e){return Po.markerService.get().read(e)},getModels:function(){return Po.modelService.get().getModels()},getModel:function(e){return Po.modelService.get().getModel(e)},onDidCreateModel:function(e){return Po.modelService.get().onModelAdded(e)},onWillDisposeModel:function(e){return Po.modelService.get().onModelRemoved(e)},onDidChangeModelLanguage:function(e){return Po.modelService.get().onModelModeChanged((t=>{e({model:t.model,oldLanguage:t.oldModeId})}))},createWebWorker:function(e){return function(e,t){return new bt(e,t)}(Po.modelService.get(),e)},colorizeElement:function(e,t){const i=Po.standaloneThemeService.get();return i.registerEditorContainer(e),Wt.colorizeElement(i,Po.modeService.get(),e,t)},colorize:function(e,t,i){return Po.standaloneThemeService.get().registerEditorContainer(document.body),Wt.colorize(Po.modeService.get(),e,t,i)},colorizeModelLine:function(e,t,i=4){return Po.standaloneThemeService.get().registerEditorContainer(document.body),Wt.colorizeModelLine(e,t,i)},tokenize:function(e,t){Po.modeService.get().triggerMode(t);let i=(n=t,ue.RW.get(n)||{getInitialState:()=>ge.nO,tokenize:(e,t,i)=>(0,ge.Ri)(n,e,t,i)});var n;let r=e.split(/\r\n|\r|\n/),s=[],o=i.getInitialState();for(let e=0,t=r.length;e<t;e++){let t=r[e],n=i.tokenize(t,o,0);s[e]=n.tokens,o=n.endState}return s},defineTheme:function(e,t){Po.standaloneThemeService.get().defineTheme(e,t)},setTheme:function(e){Po.standaloneThemeService.get().setTheme(e)},remeasureFonts:function(){(0,Wo.P)()},AccessibilitySupport:n,ContentWidgetPositionPreference:l,CursorChangeReason:c,DefaultEndOfLine:d,EditorAutoIndentStrategy:u,EditorOption:g,EndOfLinePreference:f,EndOfLineSequence:p,MinimapPosition:y,MouseTargetType:w,OverlayWidgetPositionPreference:C,OverviewRulerLane:S,RenderLineNumbersType:k,RenderMinimap:x,ScrollbarVisibility:M,ScrollType:L,TextEditorCursorBlinkingStyle:I,TextEditorCursorStyle:O,TrackedRangeStickiness:A,WrappingIndent:R,ConfigurationChangedEvent:P.Bb,BareFontInfo:ce.E,FontInfo:ce.p,TextModelResolvedOptions:he.dJ,FindMatch:he.tk,EditorType:de.g,EditorOptions:P.BH},Xo.languages={register:function(e){mn.dQ.registerLanguage(e)},getLanguages:function(){let e=[];return e=e.concat(mn.dQ.getLanguages()),e},onLanguage:function(e,t){let i=Po.modeService.get().onDidCreateMode((n=>{n.getId()===e&&(i.dispose(),t())}));return i},getEncodedLanguageId:function(e){let t=Po.modeService.get().getLanguageIdentifier(e);return t?t.id:0},setLanguageConfiguration:function(e,t){let i=Po.modeService.get().getLanguageIdentifier(e);if(!i)throw new Error(`Cannot set configuration for unknown language ${e}`);return Me.zu.register(i,t)},setTokensProvider:function(e,t){let i=Po.modeService.get().getLanguageIdentifier(e);if(!i)throw new Error(`Cannot set tokens provider for unknown language ${e}`);const n=e=>function(e){return"tokenizeEncoded"in e}(e)?new Go(e):new Zo(Po.standaloneThemeService.get(),i,e);return Jo(t)?ue.RW.registerPromise(e,t.then((e=>n(e)))):ue.RW.register(e,n(t))},setMonarchTokensProvider:function(e,t){const i=t=>function(e,t,i,n){return new Ft(e,t,i,n)}(Po.modeService.get(),Po.standaloneThemeService.get(),e,function(e,t){if(!t||"object"!=typeof t)throw new Error("Monarch: expecting a language definition object");let i={};i.languageId=e,i.noThrow=!1,i.maxStack=100,i.start="string"==typeof t.start?t.start:null,i.ignoreCase=jo(t.ignoreCase,!1),i.unicode=jo(t.unicode,!1),i.tokenPostfix=Vo(t.tokenPostfix,"."+i.languageId),i.defaultToken=Vo(t.defaultToken,"source"),i.usesEmbedded=!1;let n=t;function r(e,s,o){for(const a of o){let o=a.include;if(o){if("string"!=typeof o)throw Mt(i,"an 'include' attribute must be a string at: "+e);if("@"===o[0]&&(o=o.substr(1)),!t.tokenizer[o])throw Mt(i,"include target '"+o+"' is not defined at: "+e);r(e+"."+o,s,t.tokenizer[o])}else{const t=new qo(e);if(Array.isArray(a)&&a.length>=1&&a.length<=3)if(t.setRegex(n,a[0]),a.length>=3)if("string"==typeof a[1])t.setAction(n,{token:a[1],next:a[2]});else{if("object"!=typeof a[1])throw Mt(i,"a next state as the last element of a rule can only be given if the action is either an object or a string, at: "+e);{const e=a[1];e.next=a[2],t.setAction(n,e)}}else t.setAction(n,a[1]);else{if(!a.regex)throw Mt(i,"a rule must either be an array, or an object with a 'regex' or 'include' field at: "+e);a.name&&"string"==typeof a.name&&(t.name=a.name),a.matchOnlyAtStart&&(t.matchOnlyAtLineStart=jo(a.matchOnlyAtLineStart,!1)),t.setRegex(n,a.regex),t.setAction(n,a.action)}s.push(t)}}}if(n.languageId=e,n.ignoreCase=i.ignoreCase,n.unicode=i.unicode,n.noThrow=i.noThrow,n.usesEmbedded=i.usesEmbedded,n.stateNames=t.tokenizer,n.defaultToken=i.defaultToken,!t.tokenizer||"object"!=typeof t.tokenizer)throw Mt(i,"a language definition must define the 'tokenizer' attribute as an object");i.tokenizer=[];for(let e in t.tokenizer)if(t.tokenizer.hasOwnProperty(e)){i.start||(i.start=e);const n=t.tokenizer[e];i.tokenizer[e]=new Array,r("tokenizer."+e,i.tokenizer[e],n)}if(i.usesEmbedded=n.usesEmbedded,t.brackets){if(!Array.isArray(t.brackets))throw Mt(i,"the 'brackets' attribute must be defined as an array")}else t.brackets=[{open:"{",close:"}",token:"delimiter.curly"},{open:"[",close:"]",token:"delimiter.square"},{open:"(",close:")",token:"delimiter.parenthesis"},{open:"<",close:">",token:"delimiter.angle"}];let s=[];for(let e of t.brackets){let t=e;if(t&&Array.isArray(t)&&3===t.length&&(t={token:t[2],open:t[0],close:t[1]}),t.open===t.close)throw Mt(i,"open and close brackets in a 'brackets' attribute must be different: "+t.open+"\n hint: use the 'bracket' attribute if matching on equal brackets is required.");if("string"!=typeof t.open||"string"!=typeof t.token||"string"!=typeof t.close)throw Mt(i,"every element in the 'brackets' array must be a '{open,close,token}' object or array");s.push({token:t.token+i.tokenPostfix,open:xt(i,t.open),close:xt(i,t.close)})}return i.brackets=s,i.noThrow=!0,i}(e,t));return Jo(t)?ue.RW.registerPromise(e,t.then((e=>i(e)))):ue.RW.register(e,i(t))},registerReferenceProvider:function(e,t){return ue.FL.register(e,t)},registerRenameProvider:function(e,t){return ue.G0.register(e,t)},registerCompletionItemProvider:function(e,t){return ue.KZ.register(e,t)},registerSignatureHelpProvider:function(e,t){return ue.nD.register(e,t)},registerHoverProvider:function(e,t){return ue.xp.register(e,{provideHover:(e,i,n)=>{let r=e.getWordAtPosition(i);return Promise.resolve(t.provideHover(e,i,n)).then((e=>{if(e)return!e.range&&r&&(e.range=new j.e(i.lineNumber,r.startColumn,i.lineNumber,r.endColumn)),e.range||(e.range=new j.e(i.lineNumber,i.column,i.lineNumber,i.column)),e}))}})},registerDocumentSymbolProvider:function(e,t){return ue.vJ.register(e,t)},registerDocumentHighlightProvider:function(e,t){return ue.vH.register(e,t)},registerOnTypeRenameProvider:function(e,t){return ue.jC.register(e,t)},registerDefinitionProvider:function(e,t){return ue.Ct.register(e,t)},registerImplementationProvider:function(e,t){return ue.vI.register(e,t)},registerTypeDefinitionProvider:function(e,t){return ue.tA.register(e,t)},registerCodeLensProvider:function(e,t){return ue.He.register(e,t)},registerCodeActionProvider:function(e,t){return ue.H9.register(e,{provideCodeActions:(e,i,n,r)=>{let s=Po.markerService.get().read({resource:e.uri}).filter((e=>j.e.areIntersectingOrTouching(e,i)));return t.provideCodeActions(e,i,{markers:s,only:n.only},r)}})},registerDocumentFormattingEditProvider:function(e,t){return ue.Az.register(e,t)},registerDocumentRangeFormattingEditProvider:function(e,t){return ue.vN.register(e,t)},registerOnTypeFormattingEditProvider:function(e,t){return ue.ln.register(e,t)},registerLinkProvider:function(e,t){return ue.pM.register(e,t)},registerColorProvider:function(e,t){return ue.OH.register(e,t)},registerFoldingRangeProvider:function(e,t){return ue.aC.register(e,t)},registerDeclarationProvider:function(e,t){return ue.RN.register(e,t)},registerSelectionRangeProvider:function(e,t){return ue.AC.register(e,t)},registerDocumentSemanticTokensProvider:function(e,t){return ue.wT.register(e,t)},registerDocumentRangeSemanticTokensProvider:function(e,t){return ue.K7.register(e,t)},DocumentHighlightKind:h,CompletionItemKind:s,CompletionItemTag:o,CompletionItemInsertTextRule:r,SymbolKind:E,SymbolTag:T,IndentAction:m,CompletionTriggerKind:a,SignatureHelpTriggerKind:N,FoldingRangeKind:ue.AD};const ea=Xo.CancellationTokenSource,ta=Xo.Emitter,ia=Xo.KeyCode,na=Xo.KeyMod,ra=Xo.Position,sa=Xo.Range,oa=Xo.Selection,aa=Xo.SelectionDirection,la=Xo.MarkerSeverity,ca=Xo.MarkerTag,da=Xo.Uri,ha=Xo.Token,ua=Xo.editor,ga=Xo.languages;Qo.monaco=Xo,void 0!==Qo.require&&"function"==typeof Qo.require.config&&Qo.require.config({ignoreDuplicateModules:["vscode-languageserver-types","vscode-languageserver-types/main","vscode-languageserver-textdocument","vscode-languageserver-textdocument/main","vscode-nls","vscode-nls/vscode-nls","jsonc-parser","jsonc-parser/main","vscode-uri","vscode-uri/index","vs/basic-languages/typescript/typescript"]})},98368:(e,t,i)=>{"use strict";i.r(t),i.d(t,{CancellationTokenSource:()=>l.CancellationTokenSource,Emitter:()=>l.Emitter,KeyCode:()=>l.KeyCode,KeyMod:()=>l.KeyMod,MarkerSeverity:()=>l.MarkerSeverity,MarkerTag:()=>l.MarkerTag,Position:()=>l.Position,Range:()=>l.Range,Selection:()=>l.Selection,SelectionDirection:()=>l.SelectionDirection,Token:()=>l.Token,Uri:()=>l.Uri,__esModule:()=>l.__esModule,editor:()=>l.editor,languages:()=>l.languages});var n,r,s,o,a,l=i(50158),c=i(91429);!function(e){e[e.None=0]="None",e[e.CommonJS=1]="CommonJS",e[e.AMD=2]="AMD",e[e.UMD=3]="UMD",e[e.System=4]="System",e[e.ES2015=5]="ES2015",e[e.ESNext=99]="ESNext"}(n||(n={})),function(e){e[e.None=0]="None",e[e.Preserve=1]="Preserve",e[e.React=2]="React",e[e.ReactNative=3]="ReactNative"}(r||(r={})),function(e){e[e.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",e[e.LineFeed=1]="LineFeed"}(s||(s={})),function(e){e[e.ES3=0]="ES3",e[e.ES5=1]="ES5",e[e.ES2015=2]="ES2015",e[e.ES2016=3]="ES2016",e[e.ES2017=4]="ES2017",e[e.ES2018=5]="ES2018",e[e.ES2019=6]="ES2019",e[e.ES2020=7]="ES2020",e[e.ESNext=99]="ESNext",e[e.JSON=100]="JSON",e[e.Latest=99]="Latest"}(o||(o={})),function(e){e[e.Classic=1]="Classic",e[e.NodeJs=2]="NodeJs"}(a||(a={}));var d=function(){function e(e,t,i){this._onDidChange=new c.Q5,this._onDidExtraLibsChange=new c.Q5,this._extraLibs=Object.create(null),this._removedExtraLibs=Object.create(null),this._eagerModelSync=!1,this.setCompilerOptions(e),this.setDiagnosticsOptions(t),this.setWorkerOptions(i),this._onDidExtraLibsChangeTimeout=-1}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDidExtraLibsChange",{get:function(){return this._onDidExtraLibsChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"workerOptions",{get:function(){return this._workerOptions},enumerable:!1,configurable:!0}),e.prototype.getExtraLibs=function(){return this._extraLibs},e.prototype.addExtraLib=function(e,t){var i,n=this;if(i=void 0===t?"ts:extralib-"+Math.random().toString(36).substring(2,15):t,this._extraLibs[i]&&this._extraLibs[i].content===e)return{dispose:function(){}};var r=1;return this._removedExtraLibs[i]&&(r=this._removedExtraLibs[i]+1),this._extraLibs[i]&&(r=this._extraLibs[i].version+1),this._extraLibs[i]={content:e,version:r},this._fireOnDidExtraLibsChangeSoon(),{dispose:function(){var e=n._extraLibs[i];e&&e.version===r&&(delete n._extraLibs[i],n._removedExtraLibs[i]=r,n._fireOnDidExtraLibsChangeSoon())}}},e.prototype.setExtraLibs=function(e){for(var t in this._extraLibs)this._removedExtraLibs[t]=this._extraLibs[t].version;if(this._extraLibs=Object.create(null),e&&e.length>0)for(var i=0,n=e;i<n.length;i++){var r=n[i],s=(t=r.filePath||"ts:extralib-"+Math.random().toString(36).substring(2,15),r.content),o=1;this._removedExtraLibs[t]&&(o=this._removedExtraLibs[t]+1),this._extraLibs[t]={content:s,version:o}}this._fireOnDidExtraLibsChangeSoon()},e.prototype._fireOnDidExtraLibsChangeSoon=function(){var e=this;-1===this._onDidExtraLibsChangeTimeout&&(this._onDidExtraLibsChangeTimeout=setTimeout((function(){e._onDidExtraLibsChangeTimeout=-1,e._onDidExtraLibsChange.fire(void 0)}),0))},e.prototype.getCompilerOptions=function(){return this._compilerOptions},e.prototype.setCompilerOptions=function(e){this._compilerOptions=e||Object.create(null),this._onDidChange.fire(void 0)},e.prototype.getDiagnosticsOptions=function(){return this._diagnosticsOptions},e.prototype.setDiagnosticsOptions=function(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(void 0)},e.prototype.setWorkerOptions=function(e){this._workerOptions=e||Object.create(null),this._onDidChange.fire(void 0)},e.prototype.setMaximumWorkerIdleTime=function(e){},e.prototype.setEagerModelSync=function(e){this._eagerModelSync=e},e.prototype.getEagerModelSync=function(){return this._eagerModelSync},e}(),h=new d({allowNonTsExtensions:!0,target:o.Latest},{noSemanticValidation:!1,noSyntaxValidation:!1},{}),u=new d({allowNonTsExtensions:!0,allowJs:!0,target:o.Latest},{noSemanticValidation:!0,noSyntaxValidation:!1},{});function g(){return i.e(8183).then(i.bind(i,68183))}c.Mj.typescript={ModuleKind:n,JsxEmit:r,NewLineKind:s,ScriptTarget:o,ModuleResolutionKind:a,typescriptVersion:"4.0.3",typescriptDefaults:h,javascriptDefaults:u,getTypeScriptWorker:function(){return g().then((function(e){return e.getTypeScriptWorker()}))},getJavaScriptWorker:function(){return g().then((function(e){return e.getJavaScriptWorker()}))}},c.Mj.onLanguage("typescript",(function(){return g().then((function(e){return e.setupTypeScript(h)}))})),c.Mj.onLanguage("javascript",(function(){return g().then((function(e){return e.setupJavaScript(u)}))}));var f=i(61460),p=function(){function e(e,t,i){this._onDidChange=new f.Q5,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(i)}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modeConfiguration",{get:function(){return this._modeConfiguration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"diagnosticsOptions",{get:function(){return this._diagnosticsOptions},enumerable:!1,configurable:!0}),e.prototype.setDiagnosticsOptions=function(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)},e.prototype.setModeConfiguration=function(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)},e}(),m={validate:!0,lint:{compatibleVendorPrefixes:"ignore",vendorPrefix:"warning",duplicateProperties:"warning",emptyRules:"warning",importStatement:"ignore",boxModel:"ignore",universalSelector:"ignore",zeroUnits:"ignore",fontFaceProperties:"warning",hexColorLength:"error",argumentsInColorFunction:"error",unknownProperties:"warning",ieHack:"ignore",unknownVendorSpecificProperties:"ignore",propertyIgnoredDueToDisplay:"warning",important:"ignore",float:"ignore",idSelector:"ignore"}},_={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0},b=new p("css",m,_),v=new p("scss",m,_),y=new p("less",m,_);function w(){return i.e(6917).then(i.bind(i,46917))}f.Mj.css={cssDefaults:b,lessDefaults:y,scssDefaults:v},f.Mj.onLanguage("less",(function(){w().then((function(e){return e.setupMode(y)}))})),f.Mj.onLanguage("scss",(function(){w().then((function(e){return e.setupMode(v)}))})),f.Mj.onLanguage("css",(function(){w().then((function(e){return e.setupMode(b)}))})),i(72323);var C=i(47650),S=function(){function e(e,t,i){this._onDidChange=new C.Q5,this._languageId=e,this.setOptions(t),this.setModeConfiguration(i)}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modeConfiguration",{get:function(){return this._modeConfiguration},enumerable:!1,configurable:!0}),e.prototype.setOptions=function(e){this._options=e||Object.create(null),this._onDidChange.fire(this)},e.prototype.setModeConfiguration=function(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)},e}(),k={tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:'default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',contentUnformatted:"pre",indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:null,indentHandlebars:!1,endWithNewline:!1,extraLiners:"head, body, /html",wrapAttributes:"auto"},x={format:k,suggest:{html5:!0}},L={format:k,suggest:{html5:!0,razor:!0}};function M(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===D,documentFormattingEdits:e===D,documentRangeFormattingEdits:e===D}}var D="html",N="handlebars",E="razor",T=new S(D,{format:k,suggest:{html5:!0,angular1:!0,ionic:!0}},M(D)),I=new S(N,x,M(N)),O=new S(E,L,M(E));function A(){return i.e(5470).then(i.bind(i,65470))}C.Mj.html={htmlDefaults:T,razorDefaults:O,handlebarDefaults:I},C.Mj.onLanguage(D,(function(){A().then((function(e){return e.setupMode(T)}))})),C.Mj.onLanguage(N,(function(){A().then((function(e){return e.setupMode(I)}))})),C.Mj.onLanguage(E,(function(){A().then((function(e){return e.setupMode(O)}))}));var R=i(89587),P={},F={},B=function(){function e(e){var t=this;this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((function(e,i){t._lazyLoadPromiseResolve=e,t._lazyLoadPromiseReject=i}))}return e.getOrCreate=function(t){return F[t]||(F[t]=new e(t)),F[t]},e.prototype.whenLoaded=function(){return this._lazyLoadPromise},e.prototype.load=function(){var e=this;return this._loadingTriggered||(this._loadingTriggered=!0,P[this._languageId].loader().then((function(t){return e._lazyLoadPromiseResolve(t)}),(function(t){return e._lazyLoadPromiseReject(t)}))),this._lazyLoadPromise},e}();function W(e){var t=e.id;P[t]=e,R.Mj.register(e);var i=B.getOrCreate(t);R.Mj.setMonarchTokensProvider(t,i.whenLoaded().then((function(e){return e.language}))),R.Mj.onLanguage(t,(function(){i.load().then((function(e){R.Mj.setLanguageConfiguration(t,e.conf)}))}))}W({id:"abap",extensions:[".abap"],aliases:["abap","ABAP"],loader:function(){return i.e(848).then(i.bind(i,40848))}}),W({id:"apex",extensions:[".cls"],aliases:["Apex","apex"],mimetypes:["text/x-apex-source","text/x-apex"],loader:function(){return i.e(4386).then(i.bind(i,54386))}}),W({id:"azcli",extensions:[".azcli"],aliases:["Azure CLI","azcli"],loader:function(){return i.e(1471).then(i.bind(i,31471))}}),W({id:"bat",extensions:[".bat",".cmd"],aliases:["Batch","bat"],loader:function(){return i.e(4129).then(i.bind(i,84129))}}),W({id:"cameligo",extensions:[".mligo"],aliases:["Cameligo"],loader:function(){return i.e(1448).then(i.bind(i,11448))}}),W({id:"clojure",extensions:[".clj",".cljs",".cljc",".edn"],aliases:["clojure","Clojure"],loader:function(){return i.e(3036).then(i.bind(i,33036))}}),W({id:"coffeescript",extensions:[".coffee"],aliases:["CoffeeScript","coffeescript","coffee"],mimetypes:["text/x-coffeescript","text/coffeescript"],loader:function(){return i.e(1147).then(i.bind(i,21147))}}),W({id:"c",extensions:[".c",".h"],aliases:["C","c"],loader:function(){return i.e(1960).then(i.bind(i,71960))}}),W({id:"cpp",extensions:[".cpp",".cc",".cxx",".hpp",".hh",".hxx"],aliases:["C++","Cpp","cpp"],loader:function(){return i.e(1960).then(i.bind(i,71960))}}),W({id:"csharp",extensions:[".cs",".csx",".cake"],aliases:["C#","csharp"],loader:function(){return i.e(8719).then(i.bind(i,18719))}}),W({id:"csp",extensions:[],aliases:["CSP","csp"],loader:function(){return i.e(8946).then(i.bind(i,68946))}}),W({id:"css",extensions:[".css"],aliases:["CSS","css"],mimetypes:["text/css"],loader:function(){return i.e(2075).then(i.bind(i,62075))}}),W({id:"dart",extensions:[".dart"],aliases:["Dart","dart"],mimetypes:["text/x-dart-source","text/x-dart"],loader:function(){return i.e(9343).then(i.bind(i,39343))}}),W({id:"dockerfile",extensions:[".dockerfile"],filenames:["Dockerfile"],aliases:["Dockerfile"],loader:function(){return i.e(5849).then(i.bind(i,25849))}}),W({id:"fsharp",extensions:[".fs",".fsi",".ml",".mli",".fsx",".fsscript"],aliases:["F#","FSharp","fsharp"],loader:function(){return i.e(6241).then(i.bind(i,96241))}}),W({id:"go",extensions:[".go"],aliases:["Go"],loader:function(){return i.e(249).then(i.bind(i,80249))}}),W({id:"graphql",extensions:[".graphql",".gql"],aliases:["GraphQL","graphql","gql"],mimetypes:["application/graphql"],loader:function(){return i.e(6489).then(i.bind(i,66489))}}),W({id:"handlebars",extensions:[".handlebars",".hbs"],aliases:["Handlebars","handlebars"],mimetypes:["text/x-handlebars-template"],loader:function(){return i.e(5703).then(i.bind(i,15703))}}),W({id:"hcl",extensions:[".tf",".tfvars",".hcl"],aliases:["Terraform","tf","HCL","hcl"],loader:function(){return i.e(3632).then(i.bind(i,48534))}}),W({id:"html",extensions:[".html",".htm",".shtml",".xhtml",".mdoc",".jsp",".asp",".aspx",".jshtm"],aliases:["HTML","htm","html","xhtml"],mimetypes:["text/html","text/x-jshtm","text/template","text/ng-template"],loader:function(){return i.e(2571).then(i.bind(i,2571))}}),W({id:"ini",extensions:[".ini",".properties",".gitconfig"],filenames:["config",".gitattributes",".gitconfig",".editorconfig"],aliases:["Ini","ini"],loader:function(){return i.e(2798).then(i.bind(i,52798))}}),W({id:"java",extensions:[".java",".jav"],aliases:["Java","java"],mimetypes:["text/x-java-source","text/x-java"],loader:function(){return i.e(7043).then(i.bind(i,17043))}}),W({id:"javascript",extensions:[".js",".es6",".jsx",".mjs"],firstLine:"^#!.*\\bnode",filenames:["jakefile"],aliases:["JavaScript","javascript","js"],mimetypes:["text/javascript"],loader:function(){return i.e(1134).then(i.bind(i,41134))}}),W({id:"julia",extensions:[".jl"],aliases:["julia","Julia"],loader:function(){return i.e(4946).then(i.bind(i,34946))}}),W({id:"kotlin",extensions:[".kt"],aliases:["Kotlin","kotlin"],mimetypes:["text/x-kotlin-source","text/x-kotlin"],loader:function(){return i.e(4368).then(i.bind(i,84368))}}),W({id:"less",extensions:[".less"],aliases:["Less","less"],mimetypes:["text/x-less","text/less"],loader:function(){return i.e(5593).then(i.bind(i,35593))}}),W({id:"lexon",extensions:[".lex"],aliases:["Lexon"],loader:function(){return i.e(4912).then(i.bind(i,64912))}}),W({id:"lua",extensions:[".lua"],aliases:["Lua","lua"],loader:function(){return i.e(911).then(i.bind(i,20911))}}),W({id:"markdown",extensions:[".md",".markdown",".mdown",".mkdn",".mkd",".mdwn",".mdtxt",".mdtext"],aliases:["Markdown","markdown"],loader:function(){return i.e(2954).then(i.bind(i,42954))}}),W({id:"mips",extensions:[".s"],aliases:["MIPS","MIPS-V"],mimetypes:["text/x-mips","text/mips","text/plaintext"],loader:function(){return i.e(854).then(i.bind(i,60854))}}),W({id:"msdax",extensions:[".dax",".msdax"],aliases:["DAX","MSDAX"],loader:function(){return i.e(9398).then(i.bind(i,79398))}}),W({id:"mysql",extensions:[],aliases:["MySQL","mysql"],loader:function(){return i.e(1961).then(i.bind(i,31961))}}),W({id:"objective-c",extensions:[".m"],aliases:["Objective-C"],loader:function(){return i.e(9537).then(i.bind(i,79537))}}),W({id:"pascal",extensions:[".pas",".p",".pp"],aliases:["Pascal","pas"],mimetypes:["text/x-pascal-source","text/x-pascal"],loader:function(){return i.e(6082).then(i.bind(i,86082))}}),W({id:"pascaligo",extensions:[".ligo"],aliases:["Pascaligo","ligo"],loader:function(){return i.e(8084).then(i.bind(i,98084))}}),W({id:"perl",extensions:[".pl"],aliases:["Perl","pl"],loader:function(){return i.e(8070).then(i.bind(i,8070))}}),W({id:"pgsql",extensions:[],aliases:["PostgreSQL","postgres","pg","postgre"],loader:function(){return i.e(996).then(i.bind(i,20996))}}),W({id:"php",extensions:[".php",".php4",".php5",".phtml",".ctp"],aliases:["PHP","php"],mimetypes:["application/x-php"],loader:function(){return i.e(7835).then(i.bind(i,47835))}}),W({id:"postiats",extensions:[".dats",".sats",".hats"],aliases:["ATS","ATS/Postiats"],loader:function(){return i.e(8180).then(i.bind(i,48180))}}),W({id:"powerquery",extensions:[".pq",".pqm"],aliases:["PQ","M","Power Query","Power Query M"],loader:function(){return i.e(4407).then(i.bind(i,94407))}}),W({id:"powershell",extensions:[".ps1",".psm1",".psd1"],aliases:["PowerShell","powershell","ps","ps1"],loader:function(){return i.e(7562).then(i.bind(i,37562))}}),W({id:"pug",extensions:[".jade",".pug"],aliases:["Pug","Jade","jade"],loader:function(){return i.e(2892).then(i.bind(i,22892))}}),W({id:"python",extensions:[".py",".rpy",".pyw",".cpy",".gyp",".gypi"],aliases:["Python","py"],firstLine:"^#!/.*\\bpython[0-9.-]*\\b",loader:function(){return i.e(7287).then(i.bind(i,37287))}}),W({id:"r",extensions:[".r",".rhistory",".rmd",".rprofile",".rt"],aliases:["R","r"],loader:function(){return i.e(2140).then(i.bind(i,22140))}}),W({id:"razor",extensions:[".cshtml"],aliases:["Razor","razor"],mimetypes:["text/x-cshtml"],loader:function(){return i.e(6424).then(i.bind(i,76424))}}),W({id:"redis",extensions:[".redis"],aliases:["redis"],loader:function(){return i.e(1259).then(i.bind(i,91259))}}),W({id:"redshift",extensions:[],aliases:["Redshift","redshift"],loader:function(){return i.e(6449).then(i.bind(i,56449))}}),W({id:"restructuredtext",extensions:[".rst"],aliases:["reStructuredText","restructuredtext"],loader:function(){return i.e(1065).then(i.bind(i,71065))}}),W({id:"ruby",extensions:[".rb",".rbx",".rjs",".gemspec",".pp"],filenames:["rakefile","Gemfile"],aliases:["Ruby","rb"],loader:function(){return i.e(9684).then(i.bind(i,69684))}}),W({id:"rust",extensions:[".rs",".rlib"],aliases:["Rust","rust"],loader:function(){return i.e(8715).then(i.bind(i,8715))}}),W({id:"sb",extensions:[".sb"],aliases:["Small Basic","sb"],loader:function(){return i.e(5062).then(i.bind(i,78))}}),W({id:"scala",extensions:[".scala",".sc",".sbt"],aliases:["Scala","scala","SBT","Sbt","sbt","Dotty","dotty"],mimetypes:["text/x-scala-source","text/x-scala","text/x-sbt","text/x-dotty"],loader:function(){return i.e(180).then(i.bind(i,90180))}}),W({id:"scheme",extensions:[".scm",".ss",".sch",".rkt"],aliases:["scheme","Scheme"],loader:function(){return i.e(2060).then(i.bind(i,32060))}}),W({id:"scss",extensions:[".scss"],aliases:["Sass","sass","scss"],mimetypes:["text/x-scss","text/scss"],loader:function(){return i.e(525).then(i.bind(i,90525))}}),W({id:"shell",extensions:[".sh",".bash"],aliases:["Shell","sh"],loader:function(){return i.e(8670).then(i.bind(i,88670))}}),W({id:"sol",extensions:[".sol"],aliases:["sol","solidity","Solidity"],loader:function(){return i.e(1156).then(i.bind(i,1156))}}),W({id:"aes",extensions:[".aes"],aliases:["aes","sophia","Sophia"],loader:function(){return i.e(3919).then(i.bind(i,63919))}}),W({id:"sql",extensions:[".sql"],aliases:["SQL"],loader:function(){return i.e(7778).then(i.bind(i,27778))}}),W({id:"st",extensions:[".st",".iecst",".iecplc",".lc3lib"],aliases:["StructuredText","scl","stl"],loader:function(){return i.e(6587).then(i.bind(i,75458))}}),W({id:"swift",aliases:["Swift","swift"],extensions:[".swift"],mimetypes:["text/swift"],loader:function(){return i.e(2911).then(i.bind(i,42911))}}),W({id:"systemverilog",extensions:[".sv",".svh"],aliases:["SV","sv","SystemVerilog","systemverilog"],loader:function(){return i.e(1886).then(i.bind(i,81886))}}),W({id:"verilog",extensions:[".v",".vh"],aliases:["V","v","Verilog","verilog"],loader:function(){return i.e(1886).then(i.bind(i,81886))}}),W({id:"tcl",extensions:[".tcl"],aliases:["tcl","Tcl","tcltk","TclTk","tcl/tk","Tcl/Tk"],loader:function(){return i.e(7637).then(i.bind(i,57637))}}),W({id:"twig",extensions:[".twig"],aliases:["Twig","twig"],mimetypes:["text/x-twig"],loader:function(){return i.e(8424).then(i.bind(i,98424))}}),W({id:"typescript",extensions:[".ts",".tsx"],aliases:["TypeScript","ts","typescript"],mimetypes:["text/typescript"],loader:function(){return i.e(6717).then(i.bind(i,96717))}}),W({id:"vb",extensions:[".vb"],aliases:["Visual Basic","vb"],loader:function(){return i.e(9907).then(i.bind(i,39907))}}),W({id:"xml",extensions:[".xml",".dtd",".ascx",".csproj",".config",".wxi",".wxl",".wxs",".xaml",".svg",".svgz",".opf",".xsl"],firstLine:"(\\<\\?xml.*)|(\\<svg)|(\\<\\!doctype\\s+svg)",aliases:["XML","xml"],mimetypes:["text/xml","application/xml","application/xaml+xml","application/xml-dtd"],loader:function(){return i.e(4902).then(i.bind(i,4902))}}),W({id:"yaml",extensions:[".yaml",".yml"],aliases:["YAML","yaml","YML","yml"],mimetypes:["application/x-yaml"],loader:function(){return i.e(3585).then(i.bind(i,23585))}}),i(18728),i(95190),i(68143),i(75623),i(17355),i(17084),i(84594),i(77847),i(62015),i(9093),i(53832),i(64494),i(89098),i(76522),i(42834),i(7441),i(93391),i(62943),i(23111),i(76798);var Y=i(70666),H=i(24314),j=i(51200),V=i(71050),z=i(88216),U=i(86895),$=i(94565),K=i(98401),q=i(53725),G=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function Z(e,t,i){return G(this,void 0,void 0,(function*(){const n=yield U.C3.create(e,i),r=[];for(const e of n.children.values())e instanceof U.sT?r.push(e.symbol):r.push(...q.$.map(e.children.values(),(e=>e.symbol)));let s=[];return i.isCancellationRequested?s:(t?Q(s,r,""):s=r,s.sort(J))}))}function J(e,t){return H.e.compareRangesUsingStarts(e.range,t.range)}function Q(e,t,i){for(let n of t)e.push({kind:n.kind,tags:n.tags,name:n.name,detail:n.detail,containerName:n.containerName||i,range:n.range,selectionRange:n.selectionRange,children:void 0}),n.children&&Q(e,n.children,n.name)}$.P.registerCommand("_executeDocumentSymbolProvider",(function(e,...t){return G(this,void 0,void 0,(function*(){const[i]=t;(0,K.p_)(Y.o.isUri(i));const n=e.get(j.q).getModel(i);if(n)return Z(n,!1,V.T.None);const r=yield e.get(z.S).createModelReference(i);try{return yield Z(r.object.textEditorModel,!1,V.T.None)}finally{r.dispose()}}))})),i(92729),i(10365),i(42698),i(25217),i(80638),i(83554),i(42408),i(34800),i(38486),i(40517),i(55027),i(4454),i(81955),i(78694),i(24993);var X=i(63580),ee=i(16830),te=i(84013);class ie extends ee.R6{constructor(){super({id:"editor.action.forceRetokenize",label:X.N("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(e,t){if(!t.hasModel())return;const i=t.getModel();i.resetTokenization();const n=new te.G(!0);i.forceTokenization(i.getLineCount()),n.stop(),console.log(`tokenization took ${n.elapsed()}`)}}(0,ee.Qr)(ie),i(19720),i(31725),i(70185),i(43497),i(99453),i(60661),i(20913),i(28609),i(29477),i(19646),i(97830),i(78944),i(62097),i(98936),i(97720);var ne=i(11640),re=i(19192),se=i(33108),oe=i(38819),ae=i(72065),le=i(59422),ce=i(52365),de=function(e,t){return function(i,n){t(i,n,e)}};let he=class extends re.J{constructor(e,t,i,n,r,s,o){super(!0,e,t,i,n,r,s,o)}};he=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([de(1,oe.i6),de(2,ne.$),de(3,le.lT),de(4,ae.TG),de(5,ce.Uy),de(6,se.Ui)],he),(0,ee._K)(re.J.ID,he),i(15662)},29477:(e,t,i)=>{"use strict";i.r(t);var n=i(65321),r=i(38626),s=i(48764),o=i(85152),a=i(93794),l=i(5976),c=i(1432),d=i(97295),h=i(70666),u=i(16830),g=i(29102),f=i(19720),p=i(38819),m=i(72065),_=i(91847),b=i(50988),v=i(73910),y=i(97781),w=i(20913),C=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},S=function(e,t){return function(i,n){t(i,n,e)}};const k=new p.uy("accessibilityHelpWidgetVisible",!1);let x=class e extends l.JT{constructor(e,t){super(),this._editor=e,this._widget=this._register(t.createInstance(L,this._editor))}static get(t){return t.getContribution(e.ID)}show(){this._widget.show()}hide(){this._widget.hide()}};x.ID="editor.contrib.accessibilityHelpController",x=C([S(1,m.TG)],x);let L=class e extends a.${constructor(e,t,i,s){super(),this._contextKeyService=t,this._keybindingService=i,this._openerService=s,this._editor=e,this._isVisibleKey=k.bindTo(this._contextKeyService),this._domNode=(0,r.X)(document.createElement("div")),this._domNode.setClassName("accessibilityHelpWidget"),this._domNode.setDisplay("none"),this._domNode.setAttribute("role","dialog"),this._domNode.setAttribute("aria-hidden","true"),this._contentDomNode=(0,r.X)(document.createElement("div")),this._contentDomNode.setAttribute("role","document"),this._domNode.appendChild(this._contentDomNode),this._isVisible=!1,this._register(this._editor.onDidLayoutChange((()=>{this._isVisible&&this._layout()}))),this._register(n.mu(this._contentDomNode.domNode,"keydown",(e=>{if(this._isVisible&&(e.equals(2083)&&((0,o.Z9)(w.Oe.emergencyConfOn),this._editor.updateOptions({accessibilitySupport:"on"}),n.PO(this._contentDomNode.domNode),this._buildContent(),this._contentDomNode.domNode.focus(),e.preventDefault(),e.stopPropagation()),e.equals(2086))){(0,o.Z9)(w.Oe.openingDocs);let t=this._editor.getRawOptions().accessibilityHelpUrl;void 0===t&&(t="https://go.microsoft.com/fwlink/?linkid=852450"),this._openerService.open(h.o.parse(t)),e.preventDefault(),e.stopPropagation()}}))),this.onblur(this._contentDomNode.domNode,(()=>{this.hide()})),this._editor.addOverlayWidget(this)}dispose(){this._editor.removeOverlayWidget(this),super.dispose()}getId(){return e.ID}getDomNode(){return this._domNode.domNode}getPosition(){return{preference:null}}show(){this._isVisible||(this._isVisible=!0,this._isVisibleKey.set(!0),this._layout(),this._domNode.setDisplay("block"),this._domNode.setAttribute("aria-hidden","false"),this._contentDomNode.domNode.tabIndex=0,this._buildContent(),this._contentDomNode.domNode.focus())}_descriptionForCommand(e,t,i){let n=this._keybindingService.lookupKeybinding(e);return n?d.WU(t,n.getAriaLabel()):d.WU(i,e)}_buildContent(){const e=this._editor.getOptions(),t=this._editor.getSelections();let i=0;if(t){const e=this._editor.getModel();e&&t.forEach((t=>{i+=e.getValueLengthInRange(t)}))}let n=function(e,t){return e&&0!==e.length?1===e.length?t?d.WU(w.Oe.singleSelectionRange,e[0].positionLineNumber,e[0].positionColumn,t):d.WU(w.Oe.singleSelection,e[0].positionLineNumber,e[0].positionColumn):t?d.WU(w.Oe.multiSelectionRange,e.length,t):e.length>0?d.WU(w.Oe.multiSelection,e.length):"":w.Oe.noSelection}(t,i);e.get(47)?e.get(72)?n+=w.Oe.readonlyDiffEditor:n+=w.Oe.editableDiffEditor:e.get(72)?n+=w.Oe.readonlyEditor:n+=w.Oe.editableEditor;const r=c.dz?w.Oe.changeConfigToOnMac:w.Oe.changeConfigToOnWinLinux;switch(e.get(2)){case 0:n+="\n\n - "+r;break;case 2:n+="\n\n - "+w.Oe.auto_on;break;case 1:n+="\n\n - "+w.Oe.auto_off,n+=" "+r}e.get(116)?n+="\n\n - "+this._descriptionForCommand(f.ToggleTabFocusModeAction.ID,w.Oe.tabFocusModeOnMsg,w.Oe.tabFocusModeOnMsgNoKb):n+="\n\n - "+this._descriptionForCommand(f.ToggleTabFocusModeAction.ID,w.Oe.tabFocusModeOffMsg,w.Oe.tabFocusModeOffMsgNoKb),n+="\n\n - "+(c.dz?w.Oe.openDocMac:w.Oe.openDocWinLinux),n+="\n\n"+w.Oe.outroMsg,this._contentDomNode.domNode.appendChild((0,s.BO)(n)),this._contentDomNode.domNode.setAttribute("aria-label",n)}hide(){this._isVisible&&(this._isVisible=!1,this._isVisibleKey.reset(),this._domNode.setDisplay("none"),this._domNode.setAttribute("aria-hidden","true"),this._contentDomNode.domNode.tabIndex=-1,n.PO(this._contentDomNode.domNode),this._editor.focus())}_layout(){let t=this._editor.getLayoutInfo(),i=Math.max(5,Math.min(e.WIDTH,t.width-40)),n=Math.max(5,Math.min(e.HEIGHT,t.height-40));this._domNode.setWidth(i),this._domNode.setHeight(n);let r=Math.round((t.height-n)/2);this._domNode.setTop(r);let s=Math.round((t.width-i)/2);this._domNode.setLeft(s)}};L.ID="editor.contrib.accessibilityHelpWidget",L.WIDTH=500,L.HEIGHT=300,L=C([S(1,p.i6),S(2,_.d),S(3,b.v4)],L);class M extends u.R6{constructor(){super({id:"editor.action.showAccessibilityHelp",label:w.Oe.showAccessibilityHelpAction,alias:"Show Accessibility Help",precondition:void 0,kbOpts:{kbExpr:g.u.focus,primary:571,weight:100,linux:{primary:1595,secondary:[571]}}})}run(e,t){let i=x.get(t);i&&i.show()}}(0,u._K)(x.ID,x),(0,u.Qr)(M);const D=u._l.bindToContribution(x.get);(0,u.fK)(new D({id:"closeAccessibilityHelp",precondition:k,handler:e=>e.hide(),kbOpts:{weight:200,kbExpr:g.u.focus,primary:9,secondary:[1033]}})),(0,y.Ic)(((e,t)=>{const i=e.getColor(v.D0);i&&t.addRule(`.monaco-editor .accessibilityHelpWidget { background-color: ${i}; }`);const n=e.getColor(v.Hf);n&&t.addRule(`.monaco-editor .accessibilityHelpWidget { color: ${n}; }`);const r=e.getColor(v.rh);r&&t.addRule(`.monaco-editor .accessibilityHelpWidget { box-shadow: 0 2px 8px ${r}; }`);const s=e.getColor(v.lR);s&&t.addRule(`.monaco-editor .accessibilityHelpWidget { border: 2px solid ${s}; }`)}))},19646:(e,t,i)=>{"use strict";i.r(t),i.d(t,{IPadShowKeyboard:()=>a});var n=i(16268),r=i(65321),s=i(5976),o=i(16830);class a extends s.JT{constructor(e){super(),this.editor=e,this.widget=null,n.zc&&(this._register(e.onDidChangeConfiguration((()=>this.update()))),this.update())}update(){const e=!this.editor.getOption(72);!this.widget&&e?this.widget=new l(this.editor):this.widget&&!e&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}}a.ID="editor.contrib.iPadShowKeyboard";class l extends s.JT{constructor(e){super(),this.editor=e,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(r.nm(this._domNode,"touchstart",(e=>{this.editor.focus()}))),this._register(r.nm(this._domNode,"focus",(e=>{this.editor.focus()}))),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return l.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}}l.ID="editor.contrib.ShowKeyboardWidget",(0,o._K)(a.ID,a)},97830:(e,t,i)=>{"use strict";i.r(t);var n=i(65321),r=i(41264),s=i(5976),o=i(16830),a=i(43775),l=i(28111),c=i(71531),d=i(12095),h=i(73910),u=i(97781),g=i(20913),f=function(e,t){return function(i,n){t(i,n,e)}};let p=class e extends s.JT{constructor(e,t,i){super(),this._editor=e,this._modeService=i,this._widget=null,this._register(this._editor.onDidChangeModel((e=>this.stop()))),this._register(this._editor.onDidChangeModelLanguage((e=>this.stop()))),this._register(a.RW.onDidChange((e=>this.stop()))),this._register(this._editor.onKeyUp((e=>9===e.keyCode&&this.stop())))}static get(t){return t.getContribution(e.ID)}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new _(this._editor,this._modeService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}};p.ID="editor.contrib.inspectTokens",p=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([f(1,d.Z),f(2,c.h)],p);class m extends o.R6{constructor(){super({id:"editor.action.inspectTokens",label:g.ug.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(e,t){let i=p.get(t);i&&i.launch()}}class _ extends s.JT{constructor(e,t){var i;super(),this.allowEditorOverflow=!0,this._editor=e,this._modeService=t,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=(i=this._model.getLanguageIdentifier(),a.RW.get(i.language)||{getInitialState:()=>l.nO,tokenize:(e,t,n)=>(0,l.Ri)(i.language,e,t,n),tokenize2:(e,t,n)=>(0,l.mh)(i.id,e,t,n)}),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition((e=>this._compute(this._editor.getPosition())))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return _._ID}_compute(e){let t=this._getTokensAtLine(e.lineNumber),i=0;for(let n=t.tokens1.length-1;n>=0;n--){let r=t.tokens1[n];if(e.column-1>=r.offset){i=n;break}}let s=0;for(let i=t.tokens2.length>>>1;i>=0;i--)if(e.column-1>=t.tokens2[i<<1]){s=i;break}let o=this._model.getLineContent(e.lineNumber),a="";if(i<t.tokens1.length){let e=t.tokens1[i].offset,n=i+1<t.tokens1.length?t.tokens1[i+1].offset:o.length;a=o.substring(e,n)}(0,n.mc)(this._domNode,(0,n.$)("h2.tm-token",void 0,function(e){let t="";for(let i=0,n=e.length;i<n;i++){let n=e.charCodeAt(i);switch(n){case 9:t+="→";break;case 32:t+="·";break;default:t+=String.fromCharCode(n)}}return t}(a),(0,n.$)("span.tm-token-length",void 0,`${a.length} ${1===a.length?"char":"chars"}`))),(0,n.R3)(this._domNode,(0,n.$)("hr.tokens-inspect-separator",{style:"clear:both"}));const l=1+(s<<1)<t.tokens2.length?this._decodeMetadata(t.tokens2[1+(s<<1)]):null;(0,n.R3)(this._domNode,(0,n.$)("table.tm-metadata-table",void 0,(0,n.$)("tbody",void 0,(0,n.$)("tr",void 0,(0,n.$)("td.tm-metadata-key",void 0,"language"),(0,n.$)("td.tm-metadata-value",void 0,`${l?l.languageIdentifier.language:"-?-"}`)),(0,n.$)("tr",void 0,(0,n.$)("td.tm-metadata-key",void 0,"token type"),(0,n.$)("td.tm-metadata-value",void 0,`${l?this._tokenTypeToString(l.tokenType):"-?-"}`)),(0,n.$)("tr",void 0,(0,n.$)("td.tm-metadata-key",void 0,"font style"),(0,n.$)("td.tm-metadata-value",void 0,`${l?this._fontStyleToString(l.fontStyle):"-?-"}`)),(0,n.$)("tr",void 0,(0,n.$)("td.tm-metadata-key",void 0,"foreground"),(0,n.$)("td.tm-metadata-value",void 0,`${l?r.Il.Format.CSS.formatHex(l.foreground):"-?-"}`)),(0,n.$)("tr",void 0,(0,n.$)("td.tm-metadata-key",void 0,"background"),(0,n.$)("td.tm-metadata-value",void 0,`${l?r.Il.Format.CSS.formatHex(l.background):"-?-"}`))))),(0,n.R3)(this._domNode,(0,n.$)("hr.tokens-inspect-separator")),i<t.tokens1.length&&(0,n.R3)(this._domNode,(0,n.$)("span.tm-token-type",void 0,t.tokens1[i].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(e){let t=a.RW.getColorMap(),i=a.NX.getLanguageId(e),n=a.NX.getTokenType(e),r=a.NX.getFontStyle(e),s=a.NX.getForeground(e),o=a.NX.getBackground(e);return{languageIdentifier:this._modeService.getLanguageIdentifier(i),tokenType:n,fontStyle:r,foreground:t[s],background:t[o]}}_tokenTypeToString(e){switch(e){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 4:return"RegEx";default:return"??"}}_fontStyleToString(e){let t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),0===t.length&&(t="---"),t}_getTokensAtLine(e){let t=this._getStateBeforeLine(e),i=this._tokenizationSupport.tokenize(this._model.getLineContent(e),t,0),n=this._tokenizationSupport.tokenize2(this._model.getLineContent(e),t,0);return{startState:t,tokens1:i.tokens,tokens2:n.tokens,endState:i.endState}}_getStateBeforeLine(e){let t=this._tokenizationSupport.getInitialState();for(let i=1;i<e;i++)t=this._tokenizationSupport.tokenize(this._model.getLineContent(i),t,0).endState;return t}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}}_._ID="editor.contrib.inspectTokensWidget",(0,o._K)(p.ID,p),(0,o.Qr)(m),(0,u.Ic)(((e,t)=>{const i=e.getColor(h.CN);if(i){let n=e.type===u.QP?2:1;t.addRule(`.monaco-editor .tokens-inspect-widget { border: ${n}px solid ${i}; }`),t.addRule(`.monaco-editor .tokens-inspect-widget .tokens-inspect-separator { background-color: ${i}; }`)}const n=e.getColor(h.yJ);n&&t.addRule(`.monaco-editor .tokens-inspect-widget { background-color: ${n}; }`);const r=e.getColor(h.Sb);r&&t.addRule(`.monaco-editor .tokens-inspect-widget { color: ${r}; }`)}))},97720:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GotoLineAction:()=>z,StandaloneCommandsQuickAccessProvider:()=>V});var n,r=i(89872),s=i(90725),o=i(20913),a=i(11640),l=i(63580),c=i(71050),d=i(5976),h=i(15393),u=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function g(e){const t=e;return Array.isArray(t.items)}!function(e){e[e.NO_ACTION=0]="NO_ACTION",e[e.CLOSE_PICKER=1]="CLOSE_PICKER",e[e.REFRESH_PICKER=2]="REFRESH_PICKER",e[e.REMOVE_ITEM=3]="REMOVE_ITEM"}(n||(n={}));class f extends d.JT{constructor(e,t){super(),this.prefix=e,this.options=t}provide(e,t){var i;const r=new d.SL;let s;e.canAcceptInBackground=!!(null===(i=this.options)||void 0===i?void 0:i.canAcceptInBackground),e.matchOnLabel=e.matchOnDescription=e.matchOnDetail=e.sortByLabel=!1;const o=r.add(new d.XK),a=()=>u(this,void 0,void 0,(function*(){const i=o.value=new d.SL;null==s||s.dispose(!0),e.busy=!1,s=new c.A(t);const n=s.token,r=e.value.substr(this.prefix.length).trim(),a=this.getPicks(r,i,n),l=(t,i)=>{var n;let s,o;if(g(t)?(s=t.items,o=t.active):s=t,0===s.length){if(i)return!1;r.length>0&&(null===(n=this.options)||void 0===n?void 0:n.noResultsPick)&&(s=[this.options.noResultsPick])}return e.items=s,o&&(e.activeItems=[o]),!0};if(null===a);else if(function(e){const t=e;return!!t.picks&&t.additionalPicks instanceof Promise}(a)){let t=!1,i=!1;yield Promise.all([(()=>u(this,void 0,void 0,(function*(){yield(0,h.Vs)(f.FAST_PICKS_RACE_DELAY),n.isCancellationRequested||i||(t=l(a.picks,!0))})))(),(()=>u(this,void 0,void 0,(function*(){e.busy=!0;try{const r=yield a.additionalPicks;if(n.isCancellationRequested)return;let s,o,c,d;if(g(a.picks)?(s=a.picks.items,o=a.picks.active):s=a.picks,g(r)?(c=r.items,d=r.active):c=r,c.length>0||!t){let t;if(!o&&!d){const i=e.activeItems[0];i&&-1!==s.indexOf(i)&&(t=i)}l({items:[...s,...c],active:o||d||t})}}finally{n.isCancellationRequested||(e.busy=!1),i=!0}})))()])}else if(a instanceof Promise){e.busy=!0;try{const t=yield a;if(n.isCancellationRequested)return;l(t)}finally{n.isCancellationRequested||(e.busy=!1)}}else l(a)}));return r.add(e.onDidChangeValue((()=>a()))),a(),r.add(e.onDidAccept((t=>{const[i]=e.selectedItems;"function"==typeof(null==i?void 0:i.accept)&&(t.inBackground||e.hide(),i.accept(e.keyMods,t))}))),r.add(e.onDidTriggerItemButton((({button:i,item:r})=>u(this,void 0,void 0,(function*(){var s,o;if("function"==typeof r.trigger){const l=null!==(o=null===(s=r.buttons)||void 0===s?void 0:s.indexOf(i))&&void 0!==o?o:-1;if(l>=0){const i=r.trigger(l,e.keyMods),s="number"==typeof i?i:yield i;if(t.isCancellationRequested)return;switch(s){case n.NO_ACTION:break;case n.CLOSE_PICKER:e.hide();break;case n.REFRESH_PICKER:a();break;case n.REMOVE_ITEM:const t=e.items.indexOf(r);if(-1!==t){const i=e.items.slice();i.splice(t,1),e.items=i}}}}}))))),r}}f.FAST_PICKS_RACE_DELAY=200;var p=i(75392),m=i(98401),_=i(43702),b=i(52365),v=i(33108),y=i(72065),w=i(91847),C=i(94565),S=i(10829),k=i(17301),x=i(59422),L=i(9488);function M(e,t){return t&&(e.stack||e.stacktrace)?l.N("stackTrace.format","{0}: {1}",N(e),D(e.stack)||D(e.stacktrace)):N(e)}function D(e){return Array.isArray(e)?e.join("\n"):e}function N(e){return"string"==typeof e.code&&"number"==typeof e.errno&&"string"==typeof e.syscall?l.N("nodeExceptionMessage","A system error occurred ({0})",e.message):e.message||l.N("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}function E(e=null,t=!1){if(!e)return l.N("error.defaultMessage","An unknown error occurred. Please consult the log for more details.");if(Array.isArray(e)){const i=L.kX(e),n=E(i[0],t);return i.length>1?l.N("error.moreErrors","{0} ({1} errors in total)",n,i.length):n}if(m.HD(e))return e;if(e.detail){const i=e.detail;if(i.error)return M(i.error,t);if(i.exception)return M(i.exception,t)}return e.stack?M(e,t):e.message?e.message:l.N("error.defaultMessage","An unknown error occurred. Please consult the log for more details.")}var T=i(37280),I=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},O=function(e,t){return function(i,n){t(i,n,e)}},A=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};let R=class e extends f{constructor(t,i,n,r,s,o){super(e.PREFIX,t),this.options=t,this.instantiationService=i,this.keybindingService=n,this.commandService=r,this.telemetryService=s,this.notificationService=o,this.commandsHistory=this._register(this.instantiationService.createInstance(P))}getPicks(t,i,n){return A(this,void 0,void 0,(function*(){const r=yield this.getCommandPicks(i,n);if(n.isCancellationRequested)return[];const s=[];for(const i of r){const n=(0,m.f6)(e.WORD_FILTER(t,i.label)),r=i.commandAlias?(0,m.f6)(e.WORD_FILTER(t,i.commandAlias)):void 0;n||r?(i.highlights={label:n,detail:this.options.showAlias?r:void 0},s.push(i)):t===i.commandId&&s.push(i)}const o=new Map;for(const e of s){const t=o.get(e.label);t?(e.description=e.commandId,t.description=t.commandId):o.set(e.label,e)}s.sort(((e,t)=>{const i=this.commandsHistory.peek(e.commandId),n=this.commandsHistory.peek(t.commandId);return i&&n?i>n?-1:1:i?-1:n?1:e.label.localeCompare(t.label)}));const a=[];let c=!1;for(let e=0;e<s.length;e++){const t=s[e],i=this.keybindingService.lookupKeybinding(t.commandId),n=i?(0,l.N)("commandPickAriaLabelWithKeybinding","{0}, {1}",t.label,i.getAriaLabel()):t.label;0===e&&this.commandsHistory.peek(t.commandId)&&(a.push({type:"separator",label:(0,l.N)("recentlyUsed","recently used")}),c=!0),0!==e&&c&&!this.commandsHistory.peek(t.commandId)&&(a.push({type:"separator",label:(0,l.N)("morecCommands","other commands")}),c=!1),a.push(Object.assign(Object.assign({},t),{ariaLabel:n,detail:this.options.showAlias&&t.commandAlias!==t.label?t.commandAlias:void 0,keybinding:i,accept:()=>A(this,void 0,void 0,(function*(){this.commandsHistory.push(t.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:t.commandId,from:"quick open"});try{yield this.commandService.executeCommand(t.commandId)}catch(e){(0,k.VV)(e)||this.notificationService.error((0,l.N)("canNotRun","Command '{0}' resulted in an error ({1})",t.label,E(e)))}}))}))}return a}))}};R.PREFIX=">",R.WORD_FILTER=(0,p.or)(p.Ji,p.KZ,p.ir),R=I([O(1,y.TG),O(2,w.d),O(3,C.H),O(4,S.b),O(5,x.lT)],R);let P=class e extends d.JT{constructor(t,i,n){super(),this.storageService=t,this.configurationService=i,this.configuredCommandsHistoryLength=0,n.registerStorageKey({key:e.PREF_KEY_CACHE,version:1}),n.registerStorageKey({key:e.PREF_KEY_COUNTER,version:1}),this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration((()=>this.updateConfiguration())))}updateConfiguration(){this.configuredCommandsHistoryLength=e.getConfiguredCommandHistoryLength(this.configurationService),e.cache&&e.cache.limit!==this.configuredCommandsHistoryLength&&(e.cache.limit=this.configuredCommandsHistoryLength,e.saveState(this.storageService))}load(){const t=this.storageService.get(e.PREF_KEY_CACHE,0);let i;if(t)try{i=JSON.parse(t)}catch(e){}const n=e.cache=new _.z6(this.configuredCommandsHistoryLength,1);if(i){let e;e=i.usesLRU?i.entries:i.entries.sort(((e,t)=>e.value-t.value)),e.forEach((e=>n.set(e.key,e.value)))}e.counter=this.storageService.getNumber(e.PREF_KEY_COUNTER,0,e.counter)}push(t){e.cache&&(e.cache.set(t,e.counter++),e.saveState(this.storageService))}peek(t){var i;return null===(i=e.cache)||void 0===i?void 0:i.peek(t)}static saveState(t){if(!e.cache)return;const i={usesLRU:!0,entries:[]};e.cache.forEach(((e,t)=>i.entries.push({key:t,value:e}))),t.store(e.PREF_KEY_CACHE,JSON.stringify(i),0),t.store(e.PREF_KEY_COUNTER,e.counter,0)}static getConfiguredCommandHistoryLength(t){var i,n;const r=null===(n=null===(i=t.getValue().workbench)||void 0===i?void 0:i.commandPalette)||void 0===n?void 0:n.history;return"number"==typeof r?r:e.DEFAULT_COMMANDS_HISTORY_LENGTH}};P.DEFAULT_COMMANDS_HISTORY_LENGTH=50,P.PREF_KEY_CACHE="commandPalette.mru.cache",P.PREF_KEY_COUNTER="commandPalette.mru.counter",P.counter=1,P=I([O(0,b.Uy),O(1,v.Ui),O(2,T.u)],P);var F=i(73046);class B extends R{constructor(e,t,i,n,r,s){super(e,t,i,n,r,s)}getCodeEditorCommandPicks(){const e=this.activeTextEditorControl;if(!e)return[];const t=[];for(const i of e.getSupportedActions())t.push({commandId:i.id,commandAlias:i.alias,label:(0,F.QF)(i.label)||i.id});return t}}var W=i(16830),Y=i(29102),H=i(41157),j=function(e,t){return function(i,n){t(i,n,e)}};let V=class extends B{constructor(e,t,i,n,r,s){super({showAlias:!1},e,i,n,r,s),this.codeEditorService=t}get activeTextEditorControl(){return(0,m.f6)(this.codeEditorService.getFocusedCodeEditor())}getCommandPicks(){return e=this,t=void 0,n=function*(){return this.getCodeEditorCommandPicks()},new((i=void 0)||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}));var e,t,i,n}};V=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([j(0,y.TG),j(1,a.$),j(2,w.d),j(3,C.H),j(4,S.b),j(5,x.lT)],V),r.B.as(s.IP.Quickaccess).registerQuickAccessProvider({ctor:V,prefix:V.PREFIX,helpEntries:[{description:o.UX.quickCommandHelp,needsEditor:!0}]});class z extends W.R6{constructor(){super({id:"editor.action.quickCommand",label:o.UX.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:Y.u.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(e){e.get(H.eJ).quickAccess.show(V.PREFIX)}}(0,W.Qr)(z)},62097:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GotoLineAction:()=>y,StandaloneGotoLineQuickAccessProvider:()=>_});var n=i(63580),r=i(5976),s=i(98275),o=i(65520);class a extends s.X{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(e){const t=(0,n.N)("cannotRunGotoLine","Open a text editor first to go to a line.");return e.items=[{label:t}],e.ariaLabel=t,r.JT.None}provideWithTextEditor(e,t,i){const n=new r.SL;n.add(t.onDidAccept((i=>{const[n]=t.selectedItems;if(n){if(!this.isValidLineNumber(e,n.lineNumber))return;this.gotoLocation(e,{range:this.toRange(n.lineNumber,n.column),keyMods:t.keyMods,preserveFocus:i.inBackground}),i.inBackground||t.hide()}})));const s=()=>{const i=this.parsePosition(e,t.value.trim().substr(a.PREFIX.length)),n=this.getPickLabel(e,i.lineNumber,i.column);if(t.items=[{lineNumber:i.lineNumber,column:i.column,label:n}],t.ariaLabel=n,!this.isValidLineNumber(e,i.lineNumber))return void this.clearDecorations(e);const r=this.toRange(i.lineNumber,i.column);e.revealRangeInCenter(r,0),this.addDecorations(e,r)};s(),n.add(t.onDidChangeValue((()=>s())));const l=(0,o.Pi)(e);return l&&2===l.getOptions().get(52).renderType&&(l.updateOptions({lineNumbers:"on"}),n.add((0,r.OF)((()=>l.updateOptions({lineNumbers:"relative"}))))),n}toRange(e=1,t=1){return{startLineNumber:e,startColumn:t,endLineNumber:e,endColumn:t}}parsePosition(e,t){const i=t.split(/,|:|#/).map((e=>parseInt(e,10))).filter((e=>!isNaN(e))),n=this.lineCount(e)+1;return{lineNumber:i[0]>0?i[0]:n+i[0],column:i[1]}}getPickLabel(e,t,i){if(this.isValidLineNumber(e,t))return this.isValidColumn(e,t,i)?(0,n.N)("gotoLineColumnLabel","Go to line {0} and column {1}.",t,i):(0,n.N)("gotoLineLabel","Go to line {0}.",t);const r=e.getPosition()||{lineNumber:1,column:1},s=this.lineCount(e);return s>1?(0,n.N)("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",r.lineNumber,r.column,s):(0,n.N)("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",r.lineNumber,r.column)}isValidLineNumber(e,t){return!(!t||"number"!=typeof t)&&t>0&&t<=this.lineCount(e)}isValidColumn(e,t,i){if(!i||"number"!=typeof i)return!1;const n=this.getModel(e);if(!n)return!1;const r={lineNumber:t,column:i};return n.validatePosition(r).equals(r)}lineCount(e){var t,i;return null!==(i=null===(t=this.getModel(e))||void 0===t?void 0:t.getLineCount())&&void 0!==i?i:0}}a.PREFIX=":";var l=i(89872),c=i(90725),d=i(11640),h=i(98401),u=i(20913),g=i(4669),f=i(16830),p=i(29102),m=i(41157);let _=class extends a{constructor(e){super(),this.editorService=e,this.onDidActiveTextEditorControlChange=g.ju.None}get activeTextEditorControl(){return(0,h.f6)(this.editorService.getFocusedCodeEditor())}};var b,v;_=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(b=0,v=d.$,function(e,t){v(e,t,b)})],_),l.B.as(c.IP.Quickaccess).registerQuickAccessProvider({ctor:_,prefix:_.PREFIX,helpEntries:[{description:u.qq.gotoLineActionLabel,needsEditor:!0}]});class y extends f.R6{constructor(){super({id:"editor.action.gotoLine",label:u.qq.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:p.u.focus,primary:2085,mac:{primary:293},weight:100}})}run(e){e.get(m.eJ).quickAccess.show(_.PREFIX)}}(0,f.Qr)(y)},98936:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GotoLineAction:()=>W,StandaloneGotoSymbolQuickAccessProvider:()=>P});var n=i(63580),r=i(71050),s=i(5976),o=i(24314),a=i(98275),l=i(43775),c=i(86895),d=i(97295),h=i(75392),u=i(88721),g=i(1432);const f=[void 0,[]];function p(e,t,i=0,n=0){const r=t;return r.values&&r.values.length>1?function(e,t,i,n){let r=0;const s=[];for(const o of t){const[t,a]=m(e,o,i,n);if("number"!=typeof t)return f;r+=t,s.push(...a)}return[r,_(s)]}(e,r.values,i,n):m(e,t,i,n)}function m(e,t,i,n){const r=(0,h.EW)(t.original,t.originalLowercase,i,e,e.toLowerCase(),n,!0);return r?[r[0],(0,h.mB)(r)]:f}function _(e){const t=e.sort(((e,t)=>e.start-t.start)),i=[];let n;for(const e of t)!n||(s=e,(r=n).end<s.start||s.end<r.start)?(n=e,i.push(e)):(n.start=Math.min(n.start,e.start),n.end=Math.max(n.end,e.end));var r,s;return i}function b(e){"string"!=typeof e&&(e="");const t=e.toLowerCase(),{pathNormalized:i,normalized:n,normalizedLowercase:r}=v(e),s=i.indexOf(u.ir)>=0;let o;const a=e.split(" ");if(a.length>1)for(const e of a){const{pathNormalized:t,normalized:i,normalizedLowercase:n}=v(e);i&&(o||(o=[]),o.push({original:e,originalLowercase:e.toLowerCase(),pathNormalized:t,normalized:i,normalizedLowercase:n}))}return{original:e,originalLowercase:t,pathNormalized:i,normalized:n,normalizedLowercase:r,values:o,containsPathSeparator:s}}function v(e){let t;t=g.ED?e.replace(/\//g,u.ir):e.replace(/\\/g,u.ir);const i=(0,d.R1)(t).replace(/\s/g,"");return{pathNormalized:t,normalized:i,normalizedLowercase:i.toLowerCase()}}function y(e){return Array.isArray(e)?b(e.map((e=>e.original)).join(" ")):b(e.original)}var w=i(53725),C=i(73046),S=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};class k extends a.X{constructor(e=Object.create(null)){super(e),this.options=e,e.canAcceptInBackground=!0}provideWithoutTextEditor(e){return this.provideLabelPick(e,(0,n.N)("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),s.JT.None}provideWithTextEditor(e,t,i){const n=this.getModel(e);return n?l.vJ.has(n)?this.doProvideWithEditorSymbols(e,n,t,i):this.doProvideWithoutEditorSymbols(e,n,t,i):s.JT.None}doProvideWithoutEditorSymbols(e,t,i,r){const o=new s.SL;return this.provideLabelPick(i,(0,n.N)("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(()=>{S(this,void 0,void 0,(function*(){(yield this.waitForLanguageSymbolRegistry(t,o))&&!r.isCancellationRequested&&o.add(this.doProvideWithEditorSymbols(e,t,i,r))}))})(),o}provideLabelPick(e,t){e.items=[{label:t,index:0,kind:14}],e.ariaLabel=t}waitForLanguageSymbolRegistry(e,t){return S(this,void 0,void 0,(function*(){if(l.vJ.has(e))return!0;let i;const n=new Promise((e=>i=e)),r=t.add(l.vJ.onDidChange((()=>{l.vJ.has(e)&&(r.dispose(),i(!0))})));return t.add((0,s.OF)((()=>i(!1)))),n}))}doProvideWithEditorSymbols(e,t,i,o){const a=new s.SL;a.add(i.onDidAccept((t=>{const[n]=i.selectedItems;n&&n.range&&(this.gotoLocation(e,{range:n.range.selection,keyMods:i.keyMods,preserveFocus:t.inBackground}),t.inBackground||i.hide())}))),a.add(i.onDidTriggerItemButton((({item:t})=>{t&&t.range&&(this.gotoLocation(e,{range:t.range.selection,keyMods:i.keyMods,forceSideBySide:!0}),i.hide())})));const l=this.getDocumentSymbols(t,!0,o);let c;const d=()=>S(this,void 0,void 0,(function*(){null==c||c.dispose(!0),i.busy=!1,c=new r.A(o),i.busy=!0;try{const e=b(i.value.substr(k.PREFIX.length).trim()),t=yield this.doGetSymbolPicks(l,e,void 0,c.token);if(o.isCancellationRequested)return;t.length>0?i.items=t:e.original.length>0?this.provideLabelPick(i,(0,n.N)("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(i,(0,n.N)("noSymbolResults","No editor symbols"))}finally{o.isCancellationRequested||(i.busy=!1)}}));a.add(i.onDidChangeValue((()=>d()))),d();let h=!0;return a.add(i.onDidChangeActive((()=>{const[t]=i.activeItems;if(t&&t.range){if(h)return void(h=!1);e.revealRangeInCenter(t.range.selection,0),this.addDecorations(e,t.range.decoration)}}))),a}doGetSymbolPicks(e,t,i,r){return S(this,void 0,void 0,(function*(){const s=yield e;if(r.isCancellationRequested)return[];const a=0===t.original.indexOf(k.SCOPE_PREFIX),c=a?1:0;let h,u;t.values&&t.values.length>1?(h=y(t.values[0]),u=y(t.values.slice(1))):h=t;const g=[];for(let e=0;e<s.length;e++){const r=s[e],a=(0,d.fy)(r.name),f=`$(symbol-${l.uZ.toString(r.kind)||"property"}) ${a}`,m=f.length-a.length;let _,b,v,y,w=r.containerName;if((null==i?void 0:i.extraContainerLabel)&&(w=w?`${i.extraContainerLabel} • ${w}`:i.extraContainerLabel),t.original.length>c){let e=!1;if(h!==t&&([_,b]=p(f,Object.assign(Object.assign({},t),{values:void 0}),c,m),"number"==typeof _&&(e=!0)),"number"!=typeof _&&([_,b]=p(f,h,c,m),"number"!=typeof _))continue;if(!e&&u){if(w&&u.original.length>0&&([v,y]=p(w,u)),"number"!=typeof v)continue;"number"==typeof _&&(_+=v)}}const S=r.tags&&r.tags.indexOf(1)>=0;g.push({index:e,kind:r.kind,score:_,label:f,ariaLabel:a,description:w,highlights:S?void 0:{label:b,description:y},range:{selection:o.e.collapseToStart(r.selectionRange),decoration:r.range},strikethrough:S,buttons:(()=>{var e,t;const i=(null===(e=this.options)||void 0===e?void 0:e.openSideBySideDirection)?null===(t=this.options)||void 0===t?void 0:t.openSideBySideDirection():void 0;if(i)return[{iconClass:"right"===i?C.lA.splitHorizontal.classNames:C.lA.splitVertical.classNames,tooltip:"right"===i?(0,n.N)("openToSide","Open to the Side"):(0,n.N)("openToBottom","Open to the Bottom")}]})()})}const f=g.sort(((e,t)=>a?this.compareByKindAndScore(e,t):this.compareByScore(e,t)));let m=[];if(a){let e,t,i=0;function _(){t&&"number"==typeof e&&i>0&&(t.label=(0,d.WU)(L[e]||x,i))}for(const n of f)e!==n.kind?(_(),e=n.kind,i=1,t={type:"separator"},m.push(t)):i++,m.push(n);_()}else f.length>0&&(m=[{label:(0,n.N)("symbols","symbols ({0})",g.length),type:"separator"},...f]);return m}))}compareByScore(e,t){if("number"!=typeof e.score&&"number"==typeof t.score)return 1;if("number"==typeof e.score&&"number"!=typeof t.score)return-1;if("number"==typeof e.score&&"number"==typeof t.score){if(e.score>t.score)return-1;if(e.score<t.score)return 1}return e.index<t.index?-1:e.index>t.index?1:0}compareByKindAndScore(e,t){const i=L[e.kind]||x,n=L[t.kind]||x,r=i.localeCompare(n);return 0===r?this.compareByScore(e,t):r}getDocumentSymbols(e,t,i){return S(this,void 0,void 0,(function*(){const n=yield c.C3.create(e,i);if(i.isCancellationRequested)return[];const r=[];for(const e of n.children.values())e instanceof c.sT?r.push(e.symbol):r.push(...w.$.map(e.children.values(),(e=>e.symbol)));let s=[];return t?this.flattenDocumentSymbols(s,r,""):s=r,s.sort(((e,t)=>o.e.compareRangesUsingStarts(e.range,t.range)))}))}flattenDocumentSymbols(e,t,i){for(const n of t)e.push({kind:n.kind,tags:n.tags,name:n.name,detail:n.detail,containerName:n.containerName||i,range:n.range,selectionRange:n.selectionRange,children:void 0}),n.children&&this.flattenDocumentSymbols(e,n.children,n.name)}}k.PREFIX="@",k.SCOPE_PREFIX=":",k.PREFIX_BY_CATEGORY=`${k.PREFIX}${k.SCOPE_PREFIX}`;const x=(0,n.N)("property","properties ({0})"),L={5:(0,n.N)("method","methods ({0})"),11:(0,n.N)("function","functions ({0})"),8:(0,n.N)("_constructor","constructors ({0})"),12:(0,n.N)("variable","variables ({0})"),4:(0,n.N)("class","classes ({0})"),22:(0,n.N)("struct","structs ({0})"),23:(0,n.N)("event","events ({0})"),24:(0,n.N)("operator","operators ({0})"),10:(0,n.N)("interface","interfaces ({0})"),2:(0,n.N)("namespace","namespaces ({0})"),3:(0,n.N)("package","packages ({0})"),25:(0,n.N)("typeParameter","type parameters ({0})"),1:(0,n.N)("modules","modules ({0})"),6:(0,n.N)("property","properties ({0})"),9:(0,n.N)("enum","enumerations ({0})"),21:(0,n.N)("enumMember","enumeration members ({0})"),14:(0,n.N)("string","strings ({0})"),0:(0,n.N)("file","files ({0})"),17:(0,n.N)("array","arrays ({0})"),15:(0,n.N)("number","numbers ({0})"),16:(0,n.N)("boolean","booleans ({0})"),18:(0,n.N)("object","objects ({0})"),19:(0,n.N)("key","keys ({0})"),7:(0,n.N)("field","fields ({0})"),13:(0,n.N)("constant","constants ({0})")};var M=i(89872),D=i(90725),N=i(11640),E=i(98401),T=i(20913),I=i(4669),O=i(16830),A=i(29102),R=i(41157);let P=class extends k{constructor(e){super(),this.editorService=e,this.onDidActiveTextEditorControlChange=I.ju.None}get activeTextEditorControl(){return(0,E.f6)(this.editorService.getFocusedCodeEditor())}};var F,B;P=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(F=0,B=N.$,function(e,t){B(e,t,F)})],P),M.B.as(D.IP.Quickaccess).registerQuickAccessProvider({ctor:P,prefix:k.PREFIX,helpEntries:[{description:T.aq.quickOutlineActionLabel,prefix:k.PREFIX,needsEditor:!0},{description:T.aq.quickOutlineByCategoryActionLabel,prefix:k.PREFIX_BY_CATEGORY,needsEditor:!0}]});class W extends O.R6{constructor(){super({id:"editor.action.quickOutline",label:T.aq.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:A.u.hasDocumentSymbolProvider,kbOpts:{kbExpr:A.u.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(e){e.get(R.eJ).quickAccess.show(k.PREFIX)}}(0,O.Qr)(W)},78944:(e,t,i)=>{"use strict";i.r(t);var n=i(89872),r=i(90725),s=i(20913),o=i(41157),a=i(63580),l=i(5976);let c=class e{constructor(e){this.quickInputService=e,this.registry=n.B.as(r.IP.Quickaccess)}provide(t){const i=new l.SL;i.add(t.onDidAccept((()=>{const[e]=t.selectedItems;e&&this.quickInputService.quickAccess.show(e.prefix,{preserveValue:!0})}))),i.add(t.onDidChangeValue((t=>{const i=this.registry.getQuickAccessProvider(t.substr(e.PREFIX.length));i&&i.prefix&&i.prefix!==e.PREFIX&&this.quickInputService.quickAccess.show(i.prefix,{preserveValue:!0})})));const{editorProviders:n,globalProviders:r}=this.getQuickAccessProviders();return t.items=0===n.length||0===r.length?[...0===n.length?r:n]:[{label:(0,a.N)("globalCommands","global commands"),type:"separator"},...r,{label:(0,a.N)("editorCommands","editor commands"),type:"separator"},...n],i}getQuickAccessProviders(){const t=[],i=[];for(const n of this.registry.getQuickAccessProviders().sort(((e,t)=>e.prefix.localeCompare(t.prefix))))if(n.prefix!==e.PREFIX)for(const e of n.helpEntries){const r=e.prefix||n.prefix,s=r||"…";(e.needsEditor?i:t).push({prefix:r,label:s,ariaLabel:(0,a.N)("helpPickAriaLabel","{0}, {1}",s,e.description),description:e.description})}return{editorProviders:i,globalProviders:t}}};var d,h;c.PREFIX="?",c=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o}([(d=0,h=o.eJ,function(e,t){h(e,t,d)})],c),n.B.as(r.IP.Quickaccess).registerQuickAccessProvider({ctor:c,prefix:"",helpEntries:[{description:s.ld.helpQuickAccessActionLabel,needsEditor:!0}]})},15662:(e,t,i)=>{"use strict";i.r(t);var n=i(16830),r=i(12095),s=i(20913);class o extends n.R6{constructor(){super({id:"editor.action.toggleHighContrast",label:s.xi.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(e,t){const i=e.get(r.Z);this._originalThemeName?(i.setTheme(this._originalThemeName),this._originalThemeName=null):(this._originalThemeName=i.getColorTheme().themeName,i.setTheme("hc-black"))}}(0,n.Qr)(o)},12095:(e,t,i)=>{"use strict";i.d(t,{Z:()=>n});const n=(0,i(72065).yh)("themeService")},61460:(e,t,i)=>{"use strict";i.d(t,{Q5:()=>n.Emitter,ZL:()=>n.MarkerSeverity,e6:()=>n.Range,Sf:()=>n.Uri,j6:()=>n.editor,Mj:()=>n.languages});var n=i(50158)},47650:(e,t,i)=>{"use strict";i.d(t,{Q5:()=>n.Emitter,ZL:()=>n.MarkerSeverity,e6:()=>n.Range,Sf:()=>n.Uri,j6:()=>n.editor,Mj:()=>n.languages});var n=i(50158)},61174:(e,t,i)=>{"use strict";i.d(t,{Q5:()=>n.Emitter,ZL:()=>n.MarkerSeverity,e6:()=>n.Range,j6:()=>n.editor,Mj:()=>n.languages});var n=i(50158)},72323:(e,t,i)=>{"use strict";i.r(t),i.d(t,{jsonDefaults:()=>r}),i(50158);var n=i(61174),r=new(function(){function e(e,t,i){this._onDidChange=new n.Q5,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(i)}return Object.defineProperty(e.prototype,"onDidChange",{get:function(){return this._onDidChange.event},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modeConfiguration",{get:function(){return this._modeConfiguration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"diagnosticsOptions",{get:function(){return this._diagnosticsOptions},enumerable:!1,configurable:!0}),e.prototype.setDiagnosticsOptions=function(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)},e.prototype.setModeConfiguration=function(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)},e}())("json",{validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1},{documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0});n.Mj.json={jsonDefaults:r},n.Mj.register({id:"json",extensions:[".json",".bowerrc",".jshintrc",".jscsrc",".eslintrc",".babelrc",".har"],aliases:["JSON","json"],mimetypes:["application/json"]}),n.Mj.onLanguage("json",(function(){i.e(7194).then(i.bind(i,97194)).then((function(e){return e.setupMode(r)}))}))},91429:(e,t,i)=>{"use strict";i.d(t,{Q5:()=>n.Emitter,ZL:()=>n.MarkerSeverity,eB:()=>n.MarkerTag,e6:()=>n.Range,Sf:()=>n.Uri,j6:()=>n.editor,Mj:()=>n.languages});var n=i(50158)},63580:(e,t,i)=>{"use strict";function n(e,t,...i){return function(e,t){let i;return i=0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,i){const n=i[0];return void 0!==t[n]?t[n]:e})),i}(t,i)}i.d(t,{N:()=>n})},31106:(e,t,i)=>{"use strict";i.d(t,{F:()=>s,U:()=>o});var n=i(72065),r=i(38819);const s=(0,n.yh)("accessibilityService"),o=new r.uy("accessibilityModeEnabled",!1)},58335:(e,t,i)=>{"use strict";i.d(t,{Mm:()=>N,bi:()=>E,vr:()=>L});var n=i(65321),r=i(4850),s=i(74741),o=i(4669),a=i(44742),l=i(5976),c=i(1432),d=i(63580),h=i(84144),u=i(5606),g=i(91847),f=i(59422),p=i(97781),m=i(76033),_=i(10553),b=i(59069);class v extends s.Wi{constructor(e,t){super(),this._onDidChangeVisibility=new o.Q5,this.onDidChangeVisibility=this._onDidChangeVisibility.event,this._element=(0,n.R3)(e,(0,n.$)(".monaco-dropdown")),this._label=(0,n.R3)(this._element,(0,n.$)(".dropdown-label"));let i=t.labelRenderer;i||(i=e=>(e.textContent=t.label||"",null));for(const e of[n.tw.CLICK,n.tw.MOUSE_DOWN,_.t.Tap])this._register((0,n.nm)(this.element,e,(e=>n.zB.stop(e,!0))));for(const e of[n.tw.MOUSE_DOWN,_.t.Tap])this._register((0,n.nm)(this._label,e,(e=>{e instanceof MouseEvent&&e.detail>1||(this.visible?this.hide():this.show())})));this._register((0,n.nm)(this._label,n.tw.KEY_UP,(e=>{const t=new b.y(e);(t.equals(3)||t.equals(10))&&(n.zB.stop(e,!0),this.visible?this.hide():this.show())})));const r=i(this._label);r&&this._register(r),this._register(_.o.addTarget(this._label))}get element(){return this._element}show(){this.visible||(this.visible=!0,this._onDidChangeVisibility.fire(!0))}hide(){this.visible&&(this.visible=!1,this._onDidChangeVisibility.fire(!1))}dispose(){super.dispose(),this.hide(),this.boxContainer&&(this.boxContainer.remove(),this.boxContainer=void 0),this.contents&&(this.contents.remove(),this.contents=void 0),this._label&&(this._label.remove(),this._label=void 0)}}class y extends v{constructor(e,t){super(e,t),this._actions=[],this._contextMenuProvider=t.contextMenuProvider,this.actions=t.actions||[],this.actionProvider=t.actionProvider,this.menuClassName=t.menuClassName||"",this.menuAsChild=!!t.menuAsChild}set menuOptions(e){this._menuOptions=e}get menuOptions(){return this._menuOptions}get actions(){return this.actionProvider?this.actionProvider.getActions():this._actions}set actions(e){this._actions=e}show(){super.show(),(0,n.cn)(this.element,"active"),this._contextMenuProvider.showContextMenu({getAnchor:()=>this.element,getActions:()=>this.actions,getActionsContext:()=>this.menuOptions?this.menuOptions.context:null,getActionViewItem:e=>this.menuOptions&&this.menuOptions.actionViewItemProvider?this.menuOptions.actionViewItemProvider(e):void 0,getKeyBinding:e=>this.menuOptions&&this.menuOptions.getKeyBinding?this.menuOptions.getKeyBinding(e):void 0,getMenuClassName:()=>this.menuClassName,onHide:()=>this.onHide(),actionRunner:this.menuOptions?this.menuOptions.actionRunner:void 0,anchorAlignment:this.menuOptions?this.menuOptions.anchorAlignment:0,domForShadowRoot:this.menuAsChild?this.element:void 0})}hide(){super.hide()}onHide(){this.hide(),(0,n.IV)(this.element,"active")}}var w=i(9488);class C extends m.Y{constructor(e,t,i,n={}){super(null,e,n),this.options=n,this._onDidChangeVisibility=this._register(new o.Q5),this.menuActionsOrProvider=t,this.contextMenuProvider=i,this.options.actionRunner&&(this.actionRunner=this.options.actionRunner)}render(e){const t={contextMenuProvider:this.contextMenuProvider,labelRenderer:e=>{this.element=(0,n.R3)(e,(0,n.$)("a.action-label"));const t=this.options.classNames?(0,w._2)(this.options.classNames):[];return t.find((e=>"icon"===e))||t.push("codicon"),(0,n.PT)(this.element,...t),this.element.tabIndex=0,this.element.setAttribute("role","button"),this.element.setAttribute("aria-haspopup","true"),this.element.setAttribute("aria-expanded","false"),this.element.title=this._action.label||"",null},menuAsChild:this.options.menuAsChild};if(Array.isArray(this.menuActionsOrProvider)?t.actions=this.menuActionsOrProvider:t.actionProvider=this.menuActionsOrProvider,this.dropdownMenu=this._register(new y(e,t)),this._register(this.dropdownMenu.onDidChangeVisibility((e=>{var t;null===(t=this.element)||void 0===t||t.setAttribute("aria-expanded",`${e}`),this._onDidChangeVisibility.fire(e)}))),this.dropdownMenu.menuOptions={actionViewItemProvider:this.options.actionViewItemProvider,actionRunner:this.actionRunner,getKeyBinding:this.options.keybindingProvider,context:this._context},this.options.anchorAlignmentProvider){const e=this;this.dropdownMenu.menuOptions=Object.assign(Object.assign({},this.dropdownMenu.menuOptions),{get anchorAlignment(){return e.options.anchorAlignmentProvider()}})}}setActionContext(e){super.setActionContext(e),this.dropdownMenu&&(this.dropdownMenu.menuOptions?this.dropdownMenu.menuOptions.context=e:this.dropdownMenu.menuOptions={context:e})}}var S=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},k=function(e,t){return function(i,n){t(i,n,e)}};class x extends o.Q5{constructor(e){super(),this._subscriptions=new l.SL,this._isPressed=!1,this._suppressAltKeyUp=!1,this._subscriptions.add((0,r.j)(document.body,"keydown")((e=>{this.isPressed=e.altKey||(c.ED||c.IJ)&&e.shiftKey}))),this._subscriptions.add((0,r.j)(document.body,"keyup")((e=>{this.isPressed&&this._suppressAltKeyUp&&e.preventDefault(),this._suppressAltKeyUp=!1,this.isPressed=!1}))),this._subscriptions.add((0,r.j)(document.body,"mouseleave")((e=>this.isPressed=!1))),this._subscriptions.add((0,r.j)(document.body,"blur")((e=>this.isPressed=!1))),this._subscriptions.add(e.onDidContextMenu((()=>this.isPressed=!1)))}get isPressed(){return this._isPressed}set isPressed(e){this._isPressed=e,this.fire(this._isPressed)}suppressAltKeyUp(){this._suppressAltKeyUp=!0}static getInstance(e){return x.instance||(x.instance=new x(e)),x.instance}dispose(){super.dispose(),this._subscriptions.dispose()}}function L(e,t,i,n){const r=e.getActions(t);return function(e,t,i,n=(e=>"navigation"===e)){for(let r of e){let[e,o]=r;if(i&&(o=o.map((e=>e instanceof h.U8&&e.alt?e.alt:e))),n(e))(Array.isArray(t)?t:t.primary).unshift(...o);else{const e=Array.isArray(t)?t:t.secondary;e.length>0&&e.push(new s.Z0),e.push(...o)}}}(r,i,!1,n),function(e){const t=new l.SL;for(const[,i]of e)for(const e of i)t.add(e);return t}(r)}const M=new a.R("menu-item-action-item-icon-"),D=new Map;let N=class extends m.g{constructor(e,t,i,n){super(void 0,e,{icon:!(!e.class&&!e.item.icon),label:!e.class&&!e.item.icon}),this._action=e,this._keybindingService=t,this._notificationService=i,this._wantsAltCommand=!1,this._itemClassDispose=this._register(new l.XK),this._altKey=x.getInstance(n)}get _commandAction(){return this._wantsAltCommand&&this._action.alt||this._action}onClick(e){e.preventDefault(),e.stopPropagation(),this._altKey.isPressed&&this._altKey.suppressAltKeyUp(),this.actionRunner.run(this._commandAction,this._context).then(void 0,(e=>this._notificationService.error(e)))}render(e){super.render(e),this._updateItemClass(this._action.item);let t=!1,i=this._altKey.isPressed;const n=()=>{const e=t&&i;e!==this._wantsAltCommand&&(this._wantsAltCommand=e,this.updateLabel(),this.updateTooltip(),this.updateClass())};this._action.alt&&this._register(this._altKey.event((e=>{i=e,n()}))),this._register((0,r.j)(e,"mouseleave")((e=>{t=!1,n()}))),this._register((0,r.j)(e,"mouseenter")((e=>{t=!0,n()})))}updateLabel(){this.options.label&&this.label&&(this.label.textContent=this._commandAction.label)}updateTooltip(){if(this.label){const e=this._keybindingService.lookupKeybinding(this._commandAction.id),t=e&&e.getLabel(),i=this._commandAction.tooltip||this._commandAction.label;this.label.title=t?(0,d.N)("titleAndKb","{0} ({1})",i,t):i}}updateClass(){this.options.icon&&(this._commandAction!==this._action?this._action.alt&&this._updateItemClass(this._action.alt.item):this._action.alt&&this._updateItemClass(this._action.item))}_updateItemClass(e){var t,i;this._itemClassDispose.value=void 0;const r=this._commandAction.checked&&(null===(t=e.toggled)||void 0===t?void 0:t.icon)?e.toggled.icon:e.icon;if(p.kS.isThemeIcon(r)){const e=p.kS.asClassName(r);this.label&&e&&((0,n.PT)(this.label,e),this._itemClassDispose.value=(0,l.OF)((()=>{this.label&&(0,n.GK)(this.label,e)})))}else if(r){let e;if(null===(i=r.dark)||void 0===i?void 0:i.scheme){const t=r.dark.toString();D.has(t)?e=D.get(t):(e=M.nextId(),(0,n.fk)(`.icon.${e}`,`background-image: ${(0,n.wY)(r.light||r.dark)}`),(0,n.fk)(`.vs-dark .icon.${e}, .hc-black .icon.${e}`,`background-image: ${(0,n.wY)(r.dark)}`),D.set(t,e)),this.label&&((0,n.PT)(this.label,"icon",e),this._itemClassDispose.value=(0,l.OF)((()=>{this.label&&(0,n.GK)(this.label,"icon",e)})))}}}};N=S([k(1,g.d),k(2,f.lT),k(3,u.i)],N);let E=class extends C{constructor(e,t,i){var r;const s=[];if(e.item.icon)if(p.kS.isThemeIcon(e.item.icon))s.push(p.kS.asClassName(e.item.icon));else if(null===(r=e.item.icon.dark)||void 0===r?void 0:r.scheme){const t=e.item.icon.dark.toString();if(D.has(t))s.push("icon",D.get(t));else{const i=M.nextId();s.push("icon",i),(0,n.fk)(`.icon.${i}`,`background-image: ${(0,n.wY)(e.item.icon.light||e.item.icon.dark)}`),(0,n.fk)(`.vs-dark .icon.${i}, .hc-black .icon.${i}`,`background-image: ${(0,n.wY)(e.item.icon.dark)}`),D.set(t,i)}}super(e,e.actions,i,{classNames:s})}};E=S([k(1,f.lT),k(2,u.i)],E)},84144:(e,t,i)=>{"use strict";i.d(t,{vr:()=>g,eH:()=>f,co:()=>p,BH:()=>m,NZ:()=>b,U8:()=>v});var n=i(74741),r=i(72065),s=i(38819),o=i(94565),a=i(5976),l=i(4669),c=i(53725),d=i(91741),h=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},u=function(e,t){return function(i,n){t(i,n,e)}};function g(e){return void 0!==e.command}class f{constructor(e){this.id=f._idPool++,this._debugName=e}}f._idPool=0,f.CommandPalette=new f("CommandPalette"),f.EditorContext=new f("EditorContext"),f.EditorContextPeek=new f("EditorContextPeek"),f.MenubarEditMenu=new f("MenubarEditMenu"),f.MenubarGoMenu=new f("MenubarGoMenu"),f.MenubarSelectionMenu=new f("MenubarSelectionMenu");const p=(0,r.yh)("menuService"),m=new class{constructor(){this._commands=new Map,this._menuItems=new Map,this._onDidChangeMenu=new l.Q5,this.onDidChangeMenu=this._onDidChangeMenu.event,this._commandPaletteChangeEvent={has:e=>e===f.CommandPalette}}addCommand(e){return this.addCommands(c.$.single(e))}addCommands(e){for(const t of e)this._commands.set(t.id,t);return this._onDidChangeMenu.fire(this._commandPaletteChangeEvent),(0,a.OF)((()=>{let t=!1;for(const i of e)t=this._commands.delete(i.id)||t;t&&this._onDidChangeMenu.fire(this._commandPaletteChangeEvent)}))}getCommand(e){return this._commands.get(e)}getCommands(){const e=new Map;return this._commands.forEach(((t,i)=>e.set(i,t))),e}appendMenuItem(e,t){return this.appendMenuItems(c.$.single({id:e,item:t}))}appendMenuItems(e){const t=new Set,i=new d.S;for(const{id:n,item:r}of e){let e=this._menuItems.get(n);e||(e=new d.S,this._menuItems.set(n,e)),i.push(e.push(r)),t.add(n)}return this._onDidChangeMenu.fire(t),(0,a.OF)((()=>{if(i.size>0){for(let e of i)e();this._onDidChangeMenu.fire(t),i.clear()}}))}getMenuItems(e){let t;return t=this._menuItems.has(e)?[...this._menuItems.get(e)]:[],e===f.CommandPalette&&this._appendImplicitItems(t),t}_appendImplicitItems(e){const t=new Set;for(const i of e)g(i)&&(t.add(i.command.id),i.alt&&t.add(i.alt.id));this._commands.forEach(((i,n)=>{t.has(n)||e.push({command:i})}))}};let _=class extends n.aU{constructor(e,t,i){super(e,t),this._commandService=i}run(...e){return this._commandService.executeCommand(this.id,...e)}};_=h([u(2,o.H)],_);class b extends n.wY{constructor(e,t,i,r){super(`submenuitem.${e.submenu.id}`,"string"==typeof e.title?e.title:e.title.value,(()=>{const s=[],o=t.createMenu(e.submenu,i),a=o.getActions(r);o.dispose();for(let e of a){const[,t]=e;t.length>0&&(s.push(...t),s.push(new n.Z0))}return s.length&&s.pop(),s}),"submenu"),this.item=e}}let v=class e extends _{constructor(t,i,n,r,s){if("string"==typeof t.title?super(t.id,t.title,s):super(t.id,t.title.value,s),this._cssClass=void 0,this._enabled=!t.precondition||r.contextMatchesRules(t.precondition),this._tooltip=t.tooltip?"string"==typeof t.tooltip?t.tooltip:t.tooltip.value:void 0,t.toggled){const e=t.toggled.condition?t.toggled:{condition:t.toggled};this._checked=r.contextMatchesRules(e.condition),this._checked&&e.tooltip&&(this._tooltip="string"==typeof e.tooltip?e.tooltip:e.tooltip.value)}this._options=n||{},this.item=t,this.alt=i?new e(i,void 0,this._options,r,s):void 0}dispose(){this.alt&&this.alt.dispose(),super.dispose()}run(...e){let t=[];return this._options.arg&&(t=[...t,this._options.arg]),this._options.shouldForwardArgs&&(t=[...t,...e]),super.run(...t)}};v=h([u(3,s.i6),u(4,o.H)],v)},84972:(e,t,i)=>{"use strict";i.d(t,{p:()=>n});const n=(0,i(72065).yh)("clipboardService")},94565:(e,t,i)=>{"use strict";i.d(t,{H:()=>c,P:()=>d});var n=i(5976),r=i(98401),s=i(72065),o=i(4669),a=i(91741),l=i(53725);const c=(0,s.yh)("commandService"),d=new class{constructor(){this._commands=new Map,this._onDidRegisterCommand=new o.Q5,this.onDidRegisterCommand=this._onDidRegisterCommand.event}registerCommand(e,t){if(!e)throw new Error("invalid command");if("string"==typeof e){if(!t)throw new Error("invalid command");return this.registerCommand({id:e,handler:t})}if(e.description){const t=[];for(let i of e.description.args)t.push(i.constraint);const i=e.handler;e.handler=function(e,...n){return(0,r.D8)(n,t),i(e,...n)}}const{id:i}=e;let s=this._commands.get(i);s||(s=new a.S,this._commands.set(i,s));let o=s.unshift(e),l=(0,n.OF)((()=>{o();const e=this._commands.get(i);(null==e?void 0:e.isEmpty())&&this._commands.delete(i)}));return this._onDidRegisterCommand.fire(i),l}registerCommandAlias(e,t){return d.registerCommand(e,((e,...i)=>e.get(c).executeCommand(t,...i)))}getCommand(e){const t=this._commands.get(e);if(t&&!t.isEmpty())return l.$.first(t)}getCommands(){const e=new Map;for(const t of this._commands.keys()){const i=this.getCommand(t);i&&e.set(t,i)}return e}}},33108:(e,t,i)=>{"use strict";i.d(t,{Ui:()=>o,Od:()=>a,KV:()=>l,xL:()=>c,Mt:()=>h,MR:()=>u,O4:()=>g});var n=i(89872),r=i(72065),s=i(23193);const o=(0,r.yh)("configurationService");function a(e,t){const i=Object.create(null);for(let n in e)l(i,n,e[n],t);return i}function l(e,t,i,n){const r=t.split("."),s=r.pop();let o=e;for(let e=0;e<r.length;e++){let i=r[e],s=o[i];switch(typeof s){case"undefined":s=o[i]=Object.create(null);break;case"object":break;default:return void n(`Ignoring ${t} as ${r.slice(0,e+1).join(".")} is ${JSON.stringify(s)}`)}o=s}if("object"==typeof o&&null!==o)try{o[s]=i}catch(e){n(`Ignoring ${t} as ${r.join(".")} is ${JSON.stringify(o)}`)}else n(`Ignoring ${t} as ${r.join(".")} is ${JSON.stringify(o)}`)}function c(e,t){d(e,t.split("."))}function d(e,t){const i=t.shift();if(0!==t.length){if(-1!==Object.keys(e).indexOf(i)){const n=e[i];"object"!=typeof n||Array.isArray(n)||(d(n,t),0===Object.keys(n).length&&delete e[i])}}else delete e[i]}function h(e,t,i){const n=function(e,t){let i=e;for(const e of t){if("object"!=typeof i||null===i)return;i=i[e]}return i}(e,t.split("."));return void 0===n?i:n}function u(){const e=n.B.as(s.IP.Configuration).getConfigurationProperties();return Object.keys(e)}function g(){const e=Object.create(null),t=n.B.as(s.IP.Configuration).getConfigurationProperties();for(let i in t)l(e,i,t[i].default,(e=>console.error(`Conflict in default settings: ${e}`)));return e}},23193:(e,t,i)=>{"use strict";i.d(t,{IP:()=>l,G1:()=>_,Uh:()=>b});var n=i(63580),r=i(4669),s=i(89872),o=i(98401),a=i(81294);const l={Configuration:"base.contributions.configuration"},c={properties:{},patternProperties:{}},d={properties:{},patternProperties:{}},h={properties:{},patternProperties:{}},u={properties:{},patternProperties:{}},g={properties:{},patternProperties:{}},f={properties:{},patternProperties:{}},p="vscode://schemas/settings/resourceLanguage",m=s.B.as(a.I.JSONContribution),_=new RegExp("\\[.*\\]$");function b(e){return e.substring(1,e.length-1)}const v=new class{constructor(){this.overrideIdentifiers=new Set,this._onDidSchemaChange=new r.Q5,this._onDidUpdateConfiguration=new r.Q5,this.defaultValues={},this.defaultLanguageConfigurationOverridesNode={id:"defaultOverrides",title:n.N("defaultLanguageConfigurationOverrides.title","Default Language Configuration Overrides"),properties:{}},this.configurationContributors=[this.defaultLanguageConfigurationOverridesNode],this.resourceLanguageSettingsSchema={properties:{},patternProperties:{},additionalProperties:!1,errorMessage:"Unknown editor configuration setting",allowTrailingCommas:!0,allowComments:!0},this.configurationProperties={},this.excludedConfigurationProperties={},m.registerSchema(p,this.resourceLanguageSettingsSchema)}registerConfiguration(e,t=!0){this.registerConfigurations([e],t)}registerConfigurations(e,t=!0){const i=[];e.forEach((e=>{i.push(...this.validateAndRegisterProperties(e,t)),this.configurationContributors.push(e),this.registerJSONConfiguration(e)})),m.registerSchema(p,this.resourceLanguageSettingsSchema),this._onDidSchemaChange.fire(),this._onDidUpdateConfiguration.fire(i)}registerOverrideIdentifiers(e){for(const t of e)this.overrideIdentifiers.add(t);this.updateOverridePropertyPatternKey()}validateAndRegisterProperties(e,t=!0,i=3){i=o.Jp(e.scope)?i:e.scope;let n=[],r=e.properties;if(r)for(let e in r){if(t&&y(e)){delete r[e];continue}const s=r[e];this.updatePropertyDefaultValue(e,s),_.test(e)?s.scope=void 0:s.scope=o.Jp(s.scope)?i:s.scope,!r[e].hasOwnProperty("included")||r[e].included?(this.configurationProperties[e]=r[e],!r[e].deprecationMessage&&r[e].markdownDeprecationMessage&&(r[e].deprecationMessage=r[e].markdownDeprecationMessage),n.push(e)):(this.excludedConfigurationProperties[e]=r[e],delete r[e])}let s=e.allOf;if(s)for(let e of s)n.push(...this.validateAndRegisterProperties(e,t,i));return n}getConfigurationProperties(){return this.configurationProperties}registerJSONConfiguration(e){const t=e=>{let i=e.properties;if(i)for(const e in i)this.updateSchema(e,i[e]);let n=e.allOf;n&&n.forEach(t)};t(e)}updateSchema(e,t){switch(c.properties[e]=t,t.scope){case 1:d.properties[e]=t;break;case 2:h.properties[e]=t;break;case 6:u.properties[e]=t;break;case 3:g.properties[e]=t;break;case 4:f.properties[e]=t;break;case 5:f.properties[e]=t,this.resourceLanguageSettingsSchema.properties[e]=t}}updateOverridePropertyPatternKey(){for(const e of this.overrideIdentifiers.values()){const t=`[${e}]`,i={type:"object",description:n.N("overrideSettings.defaultDescription","Configure editor settings to be overridden for a language."),errorMessage:n.N("overrideSettings.errorMessage","This setting does not support per-language configuration."),$ref:p};this.updatePropertyDefaultValue(t,i),c.properties[t]=i,d.properties[t]=i,h.properties[t]=i,u.properties[t]=i,g.properties[t]=i,f.properties[t]=i}this._onDidSchemaChange.fire()}updatePropertyDefaultValue(e,t){let i=this.defaultValues[e];o.o8(i)&&(i=t.default),o.o8(i)&&(i=function(e){switch(Array.isArray(e)?e[0]:e){case"boolean":return!1;case"integer":case"number":return 0;case"string":return"";case"array":return[];case"object":return{};default:return null}}(t.type)),t.default=i}};function y(e){return _.test(e)?n.N("config.property.languageDefault","Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.",e):void 0!==v.getConfigurationProperties()[e]?n.N("config.property.duplicate","Cannot register '{0}'. This property is already registered.",e):null}s.B.add(l.Configuration,v)},38819:(e,t,i)=>{"use strict";i.d(t,{Ao:()=>l,uy:()=>C,i6:()=>S,Eq:()=>k});var n=i(97295),r=i(72065),s=i(1432);const o=new Map;o.set("false",!1),o.set("true",!0),o.set("isMac",s.dz),o.set("isLinux",s.IJ),o.set("isWindows",s.ED),o.set("isWeb",s.$L),o.set("isMacNative",s.dz&&!s.$L);const a=Object.prototype.hasOwnProperty;class l{static has(e){return u.create(e)}static equals(e,t){return g.create(e,t)}static regex(e,t){return b.create(e,t)}static not(e){return _.create(e)}static and(...e){return y.create(e)}static or(...e){return w.create(e)}static deserialize(e,t=!1){if(e)return this._deserializeOrExpression(e,t)}static _deserializeOrExpression(e,t){let i=e.split("||");return w.create(i.map((e=>this._deserializeAndExpression(e,t))))}static _deserializeAndExpression(e,t){let i=e.split("&&");return y.create(i.map((e=>this._deserializeOne(e,t))))}static _deserializeOne(e,t){if((e=e.trim()).indexOf("!=")>=0){let i=e.split("!=");return m.create(i[0].trim(),this._deserializeValue(i[1],t))}if(e.indexOf("==")>=0){let i=e.split("==");return g.create(i[0].trim(),this._deserializeValue(i[1],t))}if(e.indexOf("=~")>=0){let i=e.split("=~");return b.create(i[0].trim(),this._deserializeRegexValue(i[1],t))}if(e.indexOf(" in ")>=0){let t=e.split(" in ");return f.create(t[0].trim(),t[1].trim())}return/^\!\s*/.test(e)?_.create(e.substr(1).trim()):u.create(e)}static _deserializeValue(e,t){if("true"===(e=e.trim()))return!0;if("false"===e)return!1;let i=/^'([^']*)'$/.exec(e);return i?i[1].trim():e}static _deserializeRegexValue(e,t){if((0,n.m5)(e)){if(t)throw new Error("missing regexp-value for =~-expression");return console.warn("missing regexp-value for =~-expression"),null}let i=e.indexOf("/"),r=e.lastIndexOf("/");if(i===r||i<0){if(t)throw new Error(`bad regexp-value '${e}', missing /-enclosure`);return console.warn(`bad regexp-value '${e}', missing /-enclosure`),null}let s=e.slice(i+1,r),o="i"===e[r+1]?"i":"";try{return new RegExp(s,o)}catch(i){if(t)throw new Error(`bad regexp-value '${e}', parse error: ${i}`);return console.warn(`bad regexp-value '${e}', parse error: ${i}`),null}}}function c(e,t){return e.cmp(t)}class d{constructor(){this.type=0}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}evaluate(e){return!1}serialize(){return"false"}keys(){return[]}negate(){return h.INSTANCE}}d.INSTANCE=new d;class h{constructor(){this.type=1}cmp(e){return this.type-e.type}equals(e){return e.type===this.type}evaluate(e){return!0}serialize(){return"true"}keys(){return[]}negate(){return d.INSTANCE}}h.INSTANCE=new h;class u{constructor(e){this.key=e,this.type=2}static create(e){const t=o.get(e);return"boolean"==typeof t?t?h.INSTANCE:d.INSTANCE:new u(e)}cmp(e){return e.type!==this.type?this.type-e.type:this.key<e.key?-1:this.key>e.key?1:0}equals(e){return e.type===this.type&&this.key===e.key}evaluate(e){return!!e.getValue(this.key)}serialize(){return this.key}keys(){return[this.key]}negate(){return _.create(this.key)}}class g{constructor(e,t){this.key=e,this.value=t,this.type=4}static create(e,t){if("boolean"==typeof t)return t?u.create(e):_.create(e);const i=o.get(e);return"boolean"==typeof i?t===(i?"true":"false")?h.INSTANCE:d.INSTANCE:new g(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this.key<e.key?-1:this.key>e.key?1:this.value<e.value?-1:this.value>e.value?1:0}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}evaluate(e){return e.getValue(this.key)==this.value}serialize(){return this.key+" == '"+this.value+"'"}keys(){return[this.key]}negate(){return m.create(this.key,this.value)}}class f{constructor(e,t){this.key=e,this.valueKey=t,this.type=10}static create(e,t){return new f(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this.key<e.key?-1:this.key>e.key?1:this.valueKey<e.valueKey?-1:this.valueKey>e.valueKey?1:0}equals(e){return e.type===this.type&&this.key===e.key&&this.valueKey===e.valueKey}evaluate(e){const t=e.getValue(this.valueKey),i=e.getValue(this.key);return Array.isArray(t)?t.indexOf(i)>=0:"string"==typeof i&&"object"==typeof t&&null!==t&&a.call(t,i)}serialize(){return this.key+" in '"+this.valueKey+"'"}keys(){return[this.key,this.valueKey]}negate(){return p.create(this)}}class p{constructor(e){this._actual=e,this.type=11}static create(e){return new p(e)}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type&&this._actual.equals(e._actual)}evaluate(e){return!this._actual.evaluate(e)}serialize(){throw new Error("Method not implemented.")}keys(){return this._actual.keys()}negate(){return this._actual}}class m{constructor(e,t){this.key=e,this.value=t,this.type=5}static create(e,t){if("boolean"==typeof t)return t?_.create(e):u.create(e);const i=o.get(e);return"boolean"==typeof i?t===(i?"true":"false")?d.INSTANCE:h.INSTANCE:new m(e,t)}cmp(e){return e.type!==this.type?this.type-e.type:this.key<e.key?-1:this.key>e.key?1:this.value<e.value?-1:this.value>e.value?1:0}equals(e){return e.type===this.type&&this.key===e.key&&this.value===e.value}evaluate(e){return e.getValue(this.key)!=this.value}serialize(){return this.key+" != '"+this.value+"'"}keys(){return[this.key]}negate(){return g.create(this.key,this.value)}}class _{constructor(e){this.key=e,this.type=3}static create(e){const t=o.get(e);return"boolean"==typeof t?t?d.INSTANCE:h.INSTANCE:new _(e)}cmp(e){return e.type!==this.type?this.type-e.type:this.key<e.key?-1:this.key>e.key?1:0}equals(e){return e.type===this.type&&this.key===e.key}evaluate(e){return!e.getValue(this.key)}serialize(){return"!"+this.key}keys(){return[this.key]}negate(){return u.create(this.key)}}class b{constructor(e,t){this.key=e,this.regexp=t,this.type=7}static create(e,t){return new b(e,t)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.key<e.key)return-1;if(this.key>e.key)return 1;const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return t<i?-1:t>i?1:0}equals(e){if(e.type===this.type){const t=this.regexp?this.regexp.source:"",i=e.regexp?e.regexp.source:"";return this.key===e.key&&t===i}return!1}evaluate(e){let t=e.getValue(this.key);return!!this.regexp&&this.regexp.test(t)}serialize(){const e=this.regexp?`/${this.regexp.source}/${this.regexp.ignoreCase?"i":""}`:"/invalid/";return`${this.key} =~ ${e}`}keys(){return[this.key]}negate(){return v.create(this)}}class v{constructor(e){this._actual=e,this.type=8}static create(e){return new v(e)}cmp(e){return e.type!==this.type?this.type-e.type:this._actual.cmp(e._actual)}equals(e){return e.type===this.type&&this._actual.equals(e._actual)}evaluate(e){return!this._actual.evaluate(e)}serialize(){throw new Error("Method not implemented.")}keys(){return this._actual.keys()}negate(){return this._actual}}class y{constructor(e){this.expr=e,this.type=6}static create(e){return y._normalizeArr(e)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const i=c(this.expr[t],e.expr[t]);if(0!==i)return i}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].evaluate(e))return!1;return!0}static _normalizeArr(e){const t=[];let i=!1;for(const n of e)if(n)if(1!==n.type){if(0===n.type)return d.INSTANCE;6!==n.type?t.push(n):t.push(...n.expr)}else i=!0;if(0===t.length&&i)return h.INSTANCE;if(0!==t.length){if(1===t.length)return t[0];for(t.sort(c);t.length>1;){const e=t[t.length-1];if(9!==e.type)break;t.pop();const i=t.pop(),n=w.create(e.expr.map((e=>y.create([e,i]))));n&&(t.push(n),t.sort(c))}return new y(t)}}serialize(){return this.expr.map((e=>e.serialize())).join(" && ")}keys(){const e=[];for(let t of this.expr)e.push(...t.keys());return e}negate(){let e=[];for(let t of this.expr)e.push(t.negate());return w.create(e)}}class w{constructor(e){this.expr=e,this.type=9}static create(e){const t=w._normalizeArr(e);if(0!==t.length)return 1===t.length?t[0]:new w(t)}cmp(e){if(e.type!==this.type)return this.type-e.type;if(this.expr.length<e.expr.length)return-1;if(this.expr.length>e.expr.length)return 1;for(let t=0,i=this.expr.length;t<i;t++){const i=c(this.expr[t],e.expr[t]);if(0!==i)return i}return 0}equals(e){if(e.type===this.type){if(this.expr.length!==e.expr.length)return!1;for(let t=0,i=this.expr.length;t<i;t++)if(!this.expr[t].equals(e.expr[t]))return!1;return!0}return!1}evaluate(e){for(let t=0,i=this.expr.length;t<i;t++)if(this.expr[t].evaluate(e))return!0;return!1}static _normalizeArr(e){let t=[],i=!1;if(e){for(let n=0,r=e.length;n<r;n++){const r=e[n];if(r)if(0!==r.type){if(1===r.type)return[h.INSTANCE];9!==r.type?t.push(r):t=t.concat(r.expr)}else i=!0}if(0===t.length&&i)return[d.INSTANCE];t.sort(c)}return t}serialize(){return this.expr.map((e=>e.serialize())).join(" || ")}keys(){const e=[];for(let t of this.expr)e.push(...t.keys());return e}negate(){let e=[];for(let t of this.expr)e.push(t.negate());const t=e=>9===e.type?e.expr:[e];for(;e.length>1;){const i=e.shift(),n=e.shift(),r=[];for(const e of t(i))for(const i of t(n))r.push(l.and(e,i));e.unshift(l.or(...r))}return e[0]}}class C extends u{constructor(e,t){super(e),this._defaultValue=t}bindTo(e){return e.createKey(this.key,this._defaultValue)}getValue(e){return e.getContextKeyValue(this.key)}toNegated(){return l.not(this.key)}}const S=(0,r.yh)("contextKeyService"),k="setContext"},5606:(e,t,i)=>{"use strict";i.d(t,{u:()=>r,i:()=>s});var n=i(72065);const r=(0,n.yh)("contextViewService"),s=(0,n.yh)("contextMenuService")},28820:(e,t,i)=>{"use strict";i.d(t,{S:()=>n});const n=(0,i(72065).yh)("dialogService")},97108:(e,t,i)=>{"use strict";i.d(t,{M:()=>n});class n{constructor(e,t=[],i=!1){this.ctor=e,this.staticArguments=t,this.supportsDelayedInstantiation=i}}},65026:(e,t,i)=>{"use strict";i.d(t,{z:()=>s,d:()=>o});var n=i(97108);const r=[];function s(e,t,i){r.push([e,new n.M(t,[],i)])}function o(){return r}},72065:(e,t,i)=>{"use strict";var n;i.d(t,{I8:()=>n,TG:()=>r,yh:()=>o,jt:()=>a}),function(e){e.serviceIds=new Map,e.DI_TARGET="$di$target",e.DI_DEPENDENCIES="$di$dependencies",e.getServiceDependencies=function(t){return t[e.DI_DEPENDENCIES]||[]}}(n||(n={}));const r=o("instantiationService");function s(e,t,i,r){t[n.DI_TARGET]===t?t[n.DI_DEPENDENCIES].push({id:e,index:i,optional:r}):(t[n.DI_DEPENDENCIES]=[{id:e,index:i,optional:r}],t[n.DI_TARGET]=t)}function o(e){if(n.serviceIds.has(e))return n.serviceIds.get(e);const t=function(e,i,n){if(3!==arguments.length)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");s(t,e,n,!1)};return t.toString=()=>e,n.serviceIds.set(e,t),t}function a(e){return function(t,i,n){if(3!==arguments.length)throw new Error("@optional-decorator can only be used to decorate a parameter");s(e,t,n,!0)}}},60972:(e,t,i)=>{"use strict";i.d(t,{y:()=>n});class n{constructor(...e){this._entries=new Map;for(let[t,i]of e)this.set(t,i)}set(e,t){const i=this._entries.get(e);return this._entries.set(e,t),i}has(e){return this._entries.has(e)}get(e){return this._entries.get(e)}}},81294:(e,t,i)=>{"use strict";i.d(t,{I:()=>s});var n=i(89872),r=i(4669);const s={JSONContribution:"base.contributions.json"},o=new class{constructor(){this._onDidChangeSchema=new r.Q5,this.schemasById={}}registerSchema(e,t){var i;this.schemasById[(i=e,i.length>0&&"#"===i.charAt(i.length-1)?i.substring(0,i.length-1):i)]=t,this._onDidChangeSchema.fire(e)}notifySchemaChanged(e){this._onDidChangeSchema.fire(e)}};n.B.add(s.JSONContribution,o)},91847:(e,t,i)=>{"use strict";i.d(t,{d:()=>n});const n=(0,i(72065).yh)("keybindingService")},49989:(e,t,i)=>{"use strict";i.d(t,{W:()=>l});var n=i(22258),r=i(1432),s=i(94565),o=i(89872);class a{constructor(){this._coreKeybindings=[],this._extensionKeybindings=[],this._cachedMergedKeybindings=null}static bindToCurrentPlatform(e){if(1===r.OS){if(e&&e.win)return e.win}else if(2===r.OS){if(e&&e.mac)return e.mac}else if(e&&e.linux)return e.linux;return e}registerKeybindingRule(e){const t=a.bindToCurrentPlatform(e);if(t&&t.primary){const i=(0,n.gm)(t.primary,r.OS);i&&this._registerDefaultKeybinding(i,e.id,e.args,e.weight,0,e.when)}if(t&&Array.isArray(t.secondary))for(let i=0,s=t.secondary.length;i<s;i++){const s=t.secondary[i],o=(0,n.gm)(s,r.OS);o&&this._registerDefaultKeybinding(o,e.id,e.args,e.weight,-i-1,e.when)}}registerCommandAndKeybindingRule(e){this.registerKeybindingRule(e),s.P.registerCommand(e)}static _mightProduceChar(e){return e>=21&&e<=30||e>=31&&e<=56||80===e||81===e||82===e||83===e||84===e||85===e||86===e||110===e||111===e||87===e||88===e||89===e||90===e||91===e||92===e}_assertNoCtrlAlt(e,t){e.ctrlKey&&e.altKey&&!e.metaKey&&a._mightProduceChar(e.keyCode)&&console.warn("Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ",e," for ",t)}_registerDefaultKeybinding(e,t,i,n,s,o){1===r.OS&&this._assertNoCtrlAlt(e.parts[0],t),this._coreKeybindings.push({keybinding:e,command:t,commandArgs:i,when:o,weight1:n,weight2:s,extensionId:null}),this._cachedMergedKeybindings=null}getDefaultKeybindings(){return this._cachedMergedKeybindings||(this._cachedMergedKeybindings=[].concat(this._coreKeybindings).concat(this._extensionKeybindings),this._cachedMergedKeybindings.sort(c)),this._cachedMergedKeybindings.slice(0)}}const l=new a;function c(e,t){return e.weight1!==t.weight1?e.weight1-t.weight1:e.command<t.command?-1:e.command>t.command?1:e.weight2-t.weight2}o.B.add("platform.keybindingsRegistry",l)},44349:(e,t,i)=>{"use strict";i.d(t,{e:()=>n});const n=(0,i(72065).yh)("labelService")},58664:(e,t,i)=>{"use strict";i.d(t,{Lw:()=>We,XN:()=>Ye,ls:()=>_t,ev:()=>ct,CQ:()=>Ve});var n=i(65321),r=i(5976),s=i(9488),o=i(43799),a=i(4669),l=i(71050);class c{constructor(e,t){this.renderer=e,this.modelProvider=t}get templateId(){return this.renderer.templateId}renderTemplate(e){return{data:this.renderer.renderTemplate(e),disposable:r.JT.None}}renderElement(e,t,i,n){if(i.disposable&&i.disposable.dispose(),!i.data)return;const r=this.modelProvider();if(r.isResolved(e))return this.renderer.renderElement(r.get(e),e,i.data,n);const s=new l.A,o=r.resolve(e,s.token);i.disposable={dispose:()=>s.cancel()},this.renderer.renderPlaceholder(e,i.data),o.then((t=>this.renderer.renderElement(t,e,i.data,n)))}disposeTemplate(e){e.disposable&&(e.disposable.dispose(),e.disposable=void 0),e.data&&(this.renderer.disposeTemplate(e.data),e.data=void 0)}}class d{constructor(e,t){this.modelProvider=e,this.accessibilityProvider=t}getWidgetAriaLabel(){return this.accessibilityProvider.getWidgetAriaLabel()}getAriaLabel(e){const t=this.modelProvider();return t.isResolved(e)?this.accessibilityProvider.getAriaLabel(t.get(e)):null}}var h,u=i(63580),g=i(33108),f=i(23193),p=i(38819),m=i(72065),_=i(91847),b=i(89872),v=i(88810),y=i(97781),w=i(53725),C=i(59069);!function(e){e[e.Unknown=0]="Unknown",e[e.Twistie=1]="Twistie",e[e.Element=2]="Element"}(h||(h={}));class S extends Error{constructor(e,t){super(`TreeError [${e}] ${t}`)}}class k{constructor(e){this.fn=e,this._map=new WeakMap}map(e){let t=this._map.get(e);return t||(t=this.fn(e),this._map.set(e,t)),t}}var x=i(23547),L=i(25707),M=i(4850),D=i(75392);function N(e){return"object"==typeof e&&"visibility"in e&&"data"in e}function E(e){switch(e){case!0:return 1;case!1:return 0;default:return e}}function T(e){return"boolean"==typeof e.collapsible}class I{constructor(e,t,i,n={}){this.user=e,this.list=t,this.rootRef=[],this.eventBufferer=new a.E7,this._onDidChangeCollapseState=new a.Q5,this.onDidChangeCollapseState=this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event),this._onDidChangeRenderNodeCount=new a.Q5,this.onDidChangeRenderNodeCount=this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event),this._onDidSplice=new a.Q5,this.onDidSplice=this._onDidSplice.event,this.collapseByDefault=void 0!==n.collapseByDefault&&n.collapseByDefault,this.filter=n.filter,this.autoExpandSingleChildren=void 0!==n.autoExpandSingleChildren&&n.autoExpandSingleChildren,this.root={parent:void 0,element:i,children:[],depth:0,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:!1,collapsed:!1,renderNodeCount:0,visibility:1,visible:!0,filterData:void 0}}splice(e,t,i=w.$.empty(),n,r){if(0===e.length)throw new S(this.user,"Invalid tree location");const{parentNode:s,listIndex:o,revealed:a,visible:l}=this.getParentNodeWithListIndex(e),c=[],d=w.$.map(i,(e=>this.createTreeNode(e,s,s.visible?1:0,a,c,n))),h=e[e.length-1];let u=0;for(let e=h;e>=0&&e<s.children.length;e--){const t=s.children[e];if(t.visible){u=t.visibleChildIndex;break}}const g=[];let f=0,p=0;for(const e of d)g.push(e),p+=e.renderNodeCount,e.visible&&(e.visibleChildIndex=u+f++);const m=s.children.splice(h,t,...g);let _=0;for(const e of m)e.visible&&_++;if(0!==_)for(let e=h+g.length;e<s.children.length;e++){const t=s.children[e];t.visible&&(t.visibleChildIndex-=_)}if(s.visibleChildrenCount+=f-_,a&&l){const e=m.reduce(((e,t)=>e+(t.visible?t.renderNodeCount:0)),0);this._updateAncestorsRenderNodeCount(s,p-e),this.list.splice(o,e,c)}if(m.length>0&&r){const e=t=>{r(t),t.children.forEach(e)};m.forEach(e)}this._onDidSplice.fire({insertedNodes:g,deletedNodes:m});let b=s;for(;b;){if(2===b.visibility){this.refilter();break}b=b.parent}}rerender(e){if(0===e.length)throw new S(this.user,"Invalid tree location");const{node:t,listIndex:i,revealed:n}=this.getTreeNodeWithListIndex(e);t.visible&&n&&this.list.splice(i,1,[t])}has(e){return this.hasTreeNode(e)}getListIndex(e){const{listIndex:t,visible:i,revealed:n}=this.getTreeNodeWithListIndex(e);return i&&n?t:-1}getListRenderCount(e){return this.getTreeNode(e).renderNodeCount}isCollapsible(e){return this.getTreeNode(e).collapsible}setCollapsible(e,t){const i=this.getTreeNode(e);void 0===t&&(t=!i.collapsible);const n={collapsible:t};return this.eventBufferer.bufferEvents((()=>this._setCollapseState(e,n)))}isCollapsed(e){return this.getTreeNode(e).collapsed}setCollapsed(e,t,i){const n=this.getTreeNode(e);void 0===t&&(t=!n.collapsed);const r={collapsed:t,recursive:i||!1};return this.eventBufferer.bufferEvents((()=>this._setCollapseState(e,r)))}_setCollapseState(e,t){const{node:i,listIndex:n,revealed:r}=this.getTreeNodeWithListIndex(e),s=this._setListNodeCollapseState(i,n,r,t);if(i!==this.root&&this.autoExpandSingleChildren&&s&&!T(t)&&i.collapsible&&!i.collapsed&&!t.recursive){let n=-1;for(let e=0;e<i.children.length;e++)if(i.children[e].visible){if(n>-1){n=-1;break}n=e}n>-1&&this._setCollapseState([...e,n],t)}return s}_setListNodeCollapseState(e,t,i,n){const r=this._setNodeCollapseState(e,n,!1);if(!i||!e.visible||!r)return r;const s=e.renderNodeCount,o=this.updateNodeAfterCollapseChange(e),a=s-(-1===t?0:1);return this.list.splice(t+1,a,o.slice(1)),r}_setNodeCollapseState(e,t,i){let n;if(e===this.root?n=!1:(T(t)?(n=e.collapsible!==t.collapsible,e.collapsible=t.collapsible):e.collapsible?(n=e.collapsed!==t.collapsed,e.collapsed=t.collapsed):n=!1,n&&this._onDidChangeCollapseState.fire({node:e,deep:i})),!T(t)&&t.recursive)for(const i of e.children)n=this._setNodeCollapseState(i,t,!0)||n;return n}expandTo(e){this.eventBufferer.bufferEvents((()=>{let t=this.getTreeNode(e);for(;t.parent;)t=t.parent,e=e.slice(0,e.length-1),t.collapsed&&this._setCollapseState(e,{collapsed:!1,recursive:!1})}))}refilter(){const e=this.root.renderNodeCount,t=this.updateNodeAfterFilterChange(this.root);this.list.splice(0,e,t)}createTreeNode(e,t,i,n,r,s){const o={parent:t,element:e.element,children:[],depth:t.depth+1,visibleChildrenCount:0,visibleChildIndex:-1,collapsible:"boolean"==typeof e.collapsible?e.collapsible:void 0!==e.collapsed,collapsed:void 0===e.collapsed?this.collapseByDefault:e.collapsed,renderNodeCount:1,visibility:1,visible:!0,filterData:void 0},a=this._filterNode(o,i);o.visibility=a,n&&r.push(o);const l=e.children||w.$.empty(),c=n&&0!==a&&!o.collapsed,d=w.$.map(l,(e=>this.createTreeNode(e,o,a,c,r,s)));let h=0,u=1;for(const e of d)o.children.push(e),u+=e.renderNodeCount,e.visible&&(e.visibleChildIndex=h++);return o.collapsible=o.collapsible||o.children.length>0,o.visibleChildrenCount=h,o.visible=2===a?h>0:1===a,o.visible?o.collapsed||(o.renderNodeCount=u):(o.renderNodeCount=0,n&&r.pop()),s&&s(o),o}updateNodeAfterCollapseChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterCollapseChange(e,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterCollapseChange(e,t){if(!1===e.visible)return 0;if(t.push(e),e.renderNodeCount=1,!e.collapsed)for(const i of e.children)e.renderNodeCount+=this._updateNodeAfterCollapseChange(i,t);return this._onDidChangeRenderNodeCount.fire(e),e.renderNodeCount}updateNodeAfterFilterChange(e){const t=e.renderNodeCount,i=[];return this._updateNodeAfterFilterChange(e,e.visible?1:0,i),this._updateAncestorsRenderNodeCount(e.parent,i.length-t),i}_updateNodeAfterFilterChange(e,t,i,n=!0){let r;if(e!==this.root){if(r=this._filterNode(e,t),0===r)return e.visible=!1,e.renderNodeCount=0,!1;n&&i.push(e)}const s=i.length;e.renderNodeCount=e===this.root?0:1;let o=!1;if(e.collapsed&&0===r)e.visibleChildrenCount=0;else{let t=0;for(const s of e.children)o=this._updateNodeAfterFilterChange(s,r,i,n&&!e.collapsed)||o,s.visible&&(s.visibleChildIndex=t++);e.visibleChildrenCount=t}return e!==this.root&&(e.visible=2===r?o:1===r),e.visible?e.collapsed||(e.renderNodeCount+=i.length-s):(e.renderNodeCount=0,n&&i.pop()),this._onDidChangeRenderNodeCount.fire(e),e.visible}_updateAncestorsRenderNodeCount(e,t){if(0!==t)for(;e;)e.renderNodeCount+=t,this._onDidChangeRenderNodeCount.fire(e),e=e.parent}_filterNode(e,t){const i=this.filter?this.filter.filter(e.element,t):1;return"boolean"==typeof i?(e.filterData=void 0,i?1:0):N(i)?(e.filterData=i.data,E(i.visibility)):(e.filterData=void 0,E(i))}hasTreeNode(e,t=this.root){if(!e||0===e.length)return!0;const[i,...n]=e;return!(i<0||i>t.children.length)&&this.hasTreeNode(n,t.children[i])}getTreeNode(e,t=this.root){if(!e||0===e.length)return t;const[i,...n]=e;if(i<0||i>t.children.length)throw new S(this.user,"Invalid tree location");return this.getTreeNode(n,t.children[i])}getTreeNodeWithListIndex(e){if(0===e.length)return{node:this.root,listIndex:-1,revealed:!0,visible:!1};const{parentNode:t,listIndex:i,revealed:n,visible:r}=this.getParentNodeWithListIndex(e),s=e[e.length-1];if(s<0||s>t.children.length)throw new S(this.user,"Invalid tree location");const o=t.children[s];return{node:o,listIndex:i,revealed:n,visible:r&&o.visible}}getParentNodeWithListIndex(e,t=this.root,i=0,n=!0,r=!0){const[s,...o]=e;if(s<0||s>t.children.length)throw new S(this.user,"Invalid tree location");for(let e=0;e<s;e++)i+=t.children[e].renderNodeCount;return n=n&&!t.collapsed,r=r&&t.visible,0===o.length?{parentNode:t,listIndex:i,revealed:n,visible:r}:this.getParentNodeWithListIndex(o,t.children[s],i+1,n,r)}getNode(e=[]){return this.getTreeNode(e)}getNodeLocation(e){const t=[];let i=e;for(;i.parent;)t.push(i.parent.children.indexOf(i)),i=i.parent;return t.reverse()}getParentNodeLocation(e){return 0===e.length?void 0:1===e.length?[]:(0,s.JH)(e)[0]}}var O=i(15393),A=i(1432),R=i(59870),P=i(6626),F=i(73046);const B=(0,F.q5)("tree-item-expanded",F.lA.chevronDown),W=(0,F.q5)("tree-filter-on-type-on",F.lA.listFilter),Y=(0,F.q5)("tree-filter-on-type-off",F.lA.listSelection),H=(0,F.q5)("tree-filter-clear",F.lA.close),j=(0,F.q5)("tree-item-loading",F.lA.loading);class V extends L.kX{constructor(e){super(e.elements.map((e=>e.element))),this.data=e}}function z(e){return e instanceof L.kX?new V(e):e}class U{constructor(e,t){this.modelProvider=e,this.dnd=t,this.autoExpandDisposable=r.JT.None}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map((e=>e.element)),t)}onDragStart(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(z(e),t)}onDragOver(e,t,i,n,r=!0){const o=this.dnd.onDragOver(z(e),t&&t.element,i,n),a=this.autoExpandNode!==t;if(a&&(this.autoExpandDisposable.dispose(),this.autoExpandNode=t),void 0===t)return o;if(a&&"boolean"!=typeof o&&o.autoExpand&&(this.autoExpandDisposable=(0,O.Vg)((()=>{const e=this.modelProvider(),i=e.getNodeLocation(t);e.isCollapsed(i)&&e.setCollapsed(i,!1),this.autoExpandNode=void 0}),500)),"boolean"==typeof o||!o.accept||void 0===o.bubble||o.feedback)return r?o:{accept:"boolean"==typeof o?o:o.accept,effect:"boolean"==typeof o?void 0:o.effect,feedback:[i]};if(1===o.bubble){const i=this.modelProvider(),r=i.getNodeLocation(t),s=i.getParentNodeLocation(r),o=i.getNode(s),a=s&&i.getListIndex(s);return this.onDragOver(e,o,a,n,!1)}const l=this.modelProvider(),c=l.getNodeLocation(t),d=l.getListIndex(c),h=l.getListRenderCount(c);return Object.assign(Object.assign({},o),{feedback:(0,s.w6)(d,d+h)})}drop(e,t,i,n){this.autoExpandDisposable.dispose(),this.autoExpandNode=void 0,this.dnd.drop(z(e),t&&t.element,i,n)}onDragEnd(e){this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}}class ${constructor(e){this.delegate=e}getHeight(e){return this.delegate.getHeight(e.element)}getTemplateId(e){return this.delegate.getTemplateId(e.element)}hasDynamicHeight(e){return!!this.delegate.hasDynamicHeight&&this.delegate.hasDynamicHeight(e.element)}setDynamicHeight(e,t){this.delegate.setDynamicHeight&&this.delegate.setDynamicHeight(e.element,t)}}var K;!function(e){e.None="none",e.OnHover="onHover",e.Always="always"}(K||(K={}));class q{constructor(e,t=[]){this._elements=t,this.onDidChange=a.ju.forEach(e,(e=>this._elements=e))}get elements(){return this._elements}}class G{constructor(e,t,i,n,s={}){this.renderer=e,this.modelProvider=t,this.activeNodes=n,this.renderedElements=new Map,this.renderedNodes=new Map,this.indent=G.DefaultIndent,this.hideTwistiesOfChildlessElements=!1,this.shouldRenderIndentGuides=!1,this.renderedIndentGuides=new P.r,this.activeIndentNodes=new Set,this.indentGuidesDisposable=r.JT.None,this.disposables=new r.SL,this.templateId=e.templateId,this.updateOptions(s),a.ju.map(i,(e=>e.node))(this.onDidChangeNodeTwistieState,this,this.disposables),e.onDidChangeTwistieState&&e.onDidChangeTwistieState(this.onDidChangeTwistieState,this,this.disposables)}updateOptions(e={}){if(void 0!==e.indent&&(this.indent=(0,R.u)(e.indent,0,40)),void 0!==e.renderIndentGuides){const t=e.renderIndentGuides!==K.None;if(t!==this.shouldRenderIndentGuides&&(this.shouldRenderIndentGuides=t,this.indentGuidesDisposable.dispose(),t)){const e=new r.SL;this.activeNodes.onDidChange(this._onDidChangeActiveNodes,this,e),this.indentGuidesDisposable=e,this._onDidChangeActiveNodes(this.activeNodes.elements)}}void 0!==e.hideTwistiesOfChildlessElements&&(this.hideTwistiesOfChildlessElements=e.hideTwistiesOfChildlessElements)}renderTemplate(e){const t=(0,n.R3)(e,(0,n.$)(".monaco-tl-row")),i=(0,n.R3)(t,(0,n.$)(".monaco-tl-indent")),s=(0,n.R3)(t,(0,n.$)(".monaco-tl-twistie")),o=(0,n.R3)(t,(0,n.$)(".monaco-tl-contents")),a=this.renderer.renderTemplate(o);return{container:e,indent:i,twistie:s,indentGuidesDisposable:r.JT.None,templateData:a}}renderElement(e,t,i,n){"number"==typeof n&&(this.renderedNodes.set(e,{templateData:i,height:n}),this.renderedElements.set(e.element,e));const r=G.DefaultIndent+(e.depth-1)*this.indent;i.twistie.style.paddingLeft=`${r}px`,i.indent.style.width=r+this.indent-16+"px",this.renderTwistie(e,i),"number"==typeof n&&this.renderIndentGuides(e,i),this.renderer.renderElement(e,t,i.templateData,n)}disposeElement(e,t,i,n){i.indentGuidesDisposable.dispose(),this.renderer.disposeElement&&this.renderer.disposeElement(e,t,i.templateData,n),"number"==typeof n&&(this.renderedNodes.delete(e),this.renderedElements.delete(e.element))}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}onDidChangeTwistieState(e){const t=this.renderedElements.get(e);t&&this.onDidChangeNodeTwistieState(t)}onDidChangeNodeTwistieState(e){const t=this.renderedNodes.get(e);t&&(this.renderTwistie(e,t.templateData),this._onDidChangeActiveNodes(this.activeNodes.elements),this.renderIndentGuides(e,t.templateData))}renderTwistie(e,t){this.renderer.renderTwistie&&this.renderer.renderTwistie(e.element,t.twistie),e.collapsible&&(!this.hideTwistiesOfChildlessElements||e.visibleChildrenCount>0)?((0,n.PT)(t.twistie,B.classNames,"collapsible"),(0,n.og)(t.twistie,"collapsed",e.collapsed)):(0,n.GK)(t.twistie,B.classNames,"collapsible","collapsed"),e.collapsible?t.container.setAttribute("aria-expanded",String(!e.collapsed)):t.container.removeAttribute("aria-expanded")}renderIndentGuides(e,t){if((0,n.PO)(t.indent),t.indentGuidesDisposable.dispose(),!this.shouldRenderIndentGuides)return;const i=new r.SL,s=this.modelProvider();let o=e;for(;;){const e=s.getNodeLocation(o),a=s.getParentNodeLocation(e);if(!a)break;const l=s.getNode(a),c=(0,n.$)(".indent-guide",{style:`width: ${this.indent}px`});this.activeIndentNodes.has(l)&&(0,n.cn)(c,"active"),0===t.indent.childElementCount?t.indent.appendChild(c):t.indent.insertBefore(c,t.indent.firstElementChild),this.renderedIndentGuides.add(l,c),i.add((0,r.OF)((()=>this.renderedIndentGuides.delete(l,c)))),o=l}t.indentGuidesDisposable=i}_onDidChangeActiveNodes(e){if(!this.shouldRenderIndentGuides)return;const t=new Set,i=this.modelProvider();e.forEach((e=>{const n=i.getNodeLocation(e);try{const r=i.getParentNodeLocation(n);e.collapsible&&e.children.length>0&&!e.collapsed?t.add(e):r&&t.add(i.getNode(r))}catch(e){}})),this.activeIndentNodes.forEach((e=>{t.has(e)||this.renderedIndentGuides.forEach(e,(e=>(0,n.IV)(e,"active")))})),t.forEach((e=>{this.activeIndentNodes.has(e)||this.renderedIndentGuides.forEach(e,(e=>(0,n.cn)(e,"active")))})),this.activeIndentNodes=t}dispose(){this.renderedNodes.clear(),this.renderedElements.clear(),this.indentGuidesDisposable.dispose(),(0,r.B9)(this.disposables)}}G.DefaultIndent=8;class Z{constructor(e,t,i){this.tree=e,this.keyboardNavigationLabelProvider=t,this._filter=i,this._totalCount=0,this._matchCount=0,this._pattern="",this._lowercasePattern="",this.disposables=new r.SL,e.onWillRefilter(this.reset,this,this.disposables)}get totalCount(){return this._totalCount}get matchCount(){return this._matchCount}set pattern(e){this._pattern=e,this._lowercasePattern=e.toLowerCase()}filter(e,t){if(this._filter){const i=this._filter.filter(e,t);if(this.tree.options.simpleKeyboardNavigation)return i;let n;if(n="boolean"==typeof i?i?1:0:N(i)?E(i.visibility):i,0===n)return!1}if(this._totalCount++,this.tree.options.simpleKeyboardNavigation||!this._pattern)return this._matchCount++,{data:D.CL.Default,visibility:!0};const i=this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e),n=i&&i.toString();if(void 0===n)return{data:D.CL.Default,visibility:!0};const r=(0,D.EW)(this._pattern,this._lowercasePattern,0,n,n.toLowerCase(),0,!0);return r?(this._matchCount++,{data:r,visibility:!0}):this.tree.options.filterOnType?2:{data:D.CL.Default,visibility:!0}}reset(){this._totalCount=0,this._matchCount=0}dispose(){(0,r.B9)(this.disposables)}}class J{constructor(e,t,i,s,o){this.tree=e,this.view=i,this.filter=s,this.keyboardNavigationDelegate=o,this._enabled=!1,this._pattern="",this._empty=!1,this._onDidChangeEmptyState=new a.Q5,this.positionClassName="ne",this.automaticKeyboardNavigation=!0,this.triggered=!1,this._onDidChangePattern=new a.Q5,this.enabledDisposables=new r.SL,this.disposables=new r.SL,this.domNode=(0,n.$)(`.monaco-list-type-filter.${this.positionClassName}`),this.domNode.draggable=!0,(0,M.j)(this.domNode,"dragstart")(this.onDragStart,this,this.disposables),this.messageDomNode=(0,n.R3)(i.getHTMLElement(),(0,n.$)(".monaco-list-type-filter-message")),this.labelDomNode=(0,n.R3)(this.domNode,(0,n.$)("span.label"));const l=(0,n.R3)(this.domNode,(0,n.$)(".controls"));this._filterOnType=!!e.options.filterOnType,this.filterOnTypeDomNode=(0,n.R3)(l,(0,n.$)("input.filter")),this.filterOnTypeDomNode.type="checkbox",this.filterOnTypeDomNode.checked=this._filterOnType,this.filterOnTypeDomNode.tabIndex=-1,this.updateFilterOnTypeTitleAndIcon(),(0,M.j)(this.filterOnTypeDomNode,"input")(this.onDidChangeFilterOnType,this,this.disposables),this.clearDomNode=(0,n.R3)(l,(0,n.$)("button.clear"+H.cssSelector)),this.clearDomNode.tabIndex=-1,this.clearDomNode.title=(0,u.N)("clear","Clear"),this.keyboardNavigationEventFilter=e.options.keyboardNavigationEventFilter,t.onDidSplice(this.onDidSpliceModel,this,this.disposables),this.updateOptions(e.options)}get enabled(){return this._enabled}get pattern(){return this._pattern}get filterOnType(){return this._filterOnType}updateOptions(e){e.simpleKeyboardNavigation?this.disable():this.enable(),void 0!==e.filterOnType&&(this._filterOnType=!!e.filterOnType,this.filterOnTypeDomNode.checked=this._filterOnType),void 0!==e.automaticKeyboardNavigation&&(this.automaticKeyboardNavigation=e.automaticKeyboardNavigation),this.tree.refilter(),this.render(),this.automaticKeyboardNavigation||this.onEventOrInput("")}enable(){if(this._enabled)return;const e=a.ju.chain((0,M.j)(this.view.getHTMLElement(),"keydown")).filter((e=>!(0,o.cK)(e.target)||e.target===this.filterOnTypeDomNode)).filter((e=>"Dead"!==e.key&&!/^Media/.test(e.key))).map((e=>new C.y(e))).filter(this.keyboardNavigationEventFilter||(()=>!0)).filter((()=>this.automaticKeyboardNavigation||this.triggered)).filter((e=>this.keyboardNavigationDelegate.mightProducePrintableCharacter(e)&&!(18===e.keyCode||16===e.keyCode||15===e.keyCode||17===e.keyCode)||(this.pattern.length>0||this.triggered)&&(9===e.keyCode||1===e.keyCode)&&!e.altKey&&!e.ctrlKey&&!e.metaKey||1===e.keyCode&&(A.dz?e.altKey&&!e.metaKey:e.ctrlKey)&&!e.shiftKey)).forEach((e=>{e.stopPropagation(),e.preventDefault()})).event,t=(0,M.j)(this.clearDomNode,"click");a.ju.chain(a.ju.any(e,t)).event(this.onEventOrInput,this,this.enabledDisposables),this.filter.pattern="",this.tree.refilter(),this.render(),this._enabled=!0,this.triggered=!1}disable(){this._enabled&&(this.domNode.remove(),this.enabledDisposables.clear(),this.tree.refilter(),this.render(),this._enabled=!1,this.triggered=!1)}onEventOrInput(e){"string"==typeof e?this.onInput(e):e instanceof MouseEvent||9===e.keyCode||1===e.keyCode&&(A.dz?e.altKey:e.ctrlKey)?this.onInput(""):1===e.keyCode?this.onInput(0===this.pattern.length?"":this.pattern.substr(0,this.pattern.length-1)):this.onInput(this.pattern+e.browserEvent.key)}onInput(e){const t=this.view.getHTMLElement();e&&!this.domNode.parentElement?t.append(this.domNode):!e&&this.domNode.parentElement&&(this.domNode.remove(),this.tree.domFocus()),this._pattern=e,this._onDidChangePattern.fire(e),this.filter.pattern=e,this.tree.refilter(),e&&this.tree.focusNext(0,!0,void 0,(e=>!D.CL.isDefault(e.filterData)));const i=this.tree.getFocus();if(i.length>0){const e=i[0];null===this.tree.getRelativeTop(e)&&this.tree.reveal(e,.5)}this.render(),e||(this.triggered=!1)}onDragStart(){const e=this.view.getHTMLElement(),{left:t}=(0,n.i)(e),i=e.clientWidth,s=i/2,o=this.domNode.clientWidth,a=new r.SL;let l=this.positionClassName;const c=()=>{switch(l){case"nw":this.domNode.style.top="4px",this.domNode.style.left="4px";break;case"ne":this.domNode.style.top="4px",this.domNode.style.left=i-o-6+"px"}};c(),(0,n.IV)(this.domNode,l),(0,n.cn)(this.domNode,"dragging"),a.add((0,r.OF)((()=>(0,n.IV)(this.domNode,"dragging")))),(0,M.j)(document,"dragover")((e=>{e.preventDefault();const i=e.screenX-t;e.dataTransfer&&(e.dataTransfer.dropEffect="none"),l=i<s?"nw":"ne",c()}),null,a),(0,M.j)(this.domNode,"dragend")((()=>{this.positionClassName=l,this.domNode.className=`monaco-list-type-filter ${this.positionClassName}`,this.domNode.style.top="",this.domNode.style.left="",(0,r.B9)(a)}),null,a),x.P$.CurrentDragAndDropData=new x.TN("vscode-ui"),a.add((0,r.OF)((()=>x.P$.CurrentDragAndDropData=void 0)))}onDidSpliceModel(){this._enabled&&0!==this.pattern.length&&(this.tree.refilter(),this.render())}onDidChangeFilterOnType(){this.tree.updateOptions({filterOnType:this.filterOnTypeDomNode.checked}),this.tree.refilter(),this.tree.domFocus(),this.render(),this.updateFilterOnTypeTitleAndIcon()}updateFilterOnTypeTitleAndIcon(){this.filterOnType?((0,n.GK)(this.filterOnTypeDomNode,Y.classNames),(0,n.PT)(this.filterOnTypeDomNode,W.classNames),this.filterOnTypeDomNode.title=(0,u.N)("disable filter on type","Disable Filter on Type")):((0,n.GK)(this.filterOnTypeDomNode,W.classNames),(0,n.PT)(this.filterOnTypeDomNode,Y.classNames),this.filterOnTypeDomNode.title=(0,u.N)("enable filter on type","Enable Filter on Type"))}render(){const e=this.filter.totalCount>0&&0===this.filter.matchCount;this.pattern&&this.tree.options.filterOnType&&e?(this.messageDomNode.textContent=(0,u.N)("empty","No elements found"),this._empty=!0):(this.messageDomNode.innerText="",this._empty=!1),(0,n.og)(this.domNode,"no-matches",e),this.domNode.title=(0,u.N)("found","Matched {0} out of {1} elements",this.filter.matchCount,this.filter.totalCount),this.labelDomNode.textContent=this.pattern.length>16?"…"+this.pattern.substr(this.pattern.length-16):this.pattern,this._onDidChangeEmptyState.fire(this._empty)}shouldAllowFocus(e){return!(this.enabled&&this.pattern&&!this.filterOnType)||this.filter.totalCount>0&&this.filter.matchCount<=1||!D.CL.isDefault(e.filterData)}dispose(){this._enabled&&(this.domNode.remove(),this.enabledDisposables.dispose(),this._enabled=!1,this.triggered=!1),this._onDidChangePattern.dispose(),(0,r.B9)(this.disposables)}}function Q(e){let t=h.Unknown;return(0,n.uU)(e.browserEvent.target,"monaco-tl-twistie","monaco-tl-row")?t=h.Twistie:(0,n.uU)(e.browserEvent.target,"monaco-tl-contents","monaco-tl-row")&&(t=h.Element),{browserEvent:e.browserEvent,element:e.element?e.element.element:null,target:t}}function X(e,t){t(e),e.children.forEach((e=>X(e,t)))}class ee{constructor(e){this.identityProvider=e,this.nodes=[],this._onDidChange=new a.Q5,this.onDidChange=this._onDidChange.event}get nodeSet(){return this._nodeSet||(this._nodeSet=this.createNodeSet()),this._nodeSet}set(e,t){(0,s.fS)(this.nodes,e)||this._set(e,!1,t)}_set(e,t,i){if(this.nodes=[...e],this.elements=void 0,this._nodeSet=void 0,!t){const e=this;this._onDidChange.fire({get elements(){return e.get()},browserEvent:i})}}get(){return this.elements||(this.elements=this.nodes.map((e=>e.element))),[...this.elements]}getNodes(){return this.nodes}has(e){return this.nodeSet.has(e)}onDidModelSplice({insertedNodes:e,deletedNodes:t}){if(!this.identityProvider){const e=this.createNodeSet(),i=t=>e.delete(t);return t.forEach((e=>X(e,i))),void this.set([...e.values()])}const i=new Set,n=e=>i.add(this.identityProvider.getId(e.element).toString());t.forEach((e=>X(e,n)));const r=new Map,s=e=>r.set(this.identityProvider.getId(e.element).toString(),e);e.forEach((e=>X(e,s)));const o=[];for(const e of this.nodes){const t=this.identityProvider.getId(e.element).toString();if(i.has(t)){const e=r.get(t);e&&o.push(e)}else o.push(e)}this._set(o,!0)}createNodeSet(){const e=new Set;for(const t of this.nodes)e.add(t);return e}}class te extends o.sx{constructor(e,t){super(e),this.tree=t}onViewPointer(e){if((0,o.cK)(e.browserEvent.target)||(0,o.hD)(e.browserEvent.target))return;const t=e.element;if(!t)return super.onViewPointer(e);if(this.isSelectionRangeChangeEvent(e)||this.isSelectionSingleChangeEvent(e))return super.onViewPointer(e);const i=e.browserEvent.target,r=(0,n.pv)(i,"monaco-tl-twistie")||(0,n.pv)(i,"monaco-icon-label")&&(0,n.pv)(i,"folder-icon")&&e.browserEvent.offsetX<16;let s=!1;if(s="function"==typeof this.tree.expandOnlyOnTwistieClick?this.tree.expandOnlyOnTwistieClick(t.element):!!this.tree.expandOnlyOnTwistieClick,s&&!r)return super.onViewPointer(e);if(this.tree.expandOnlyOnDoubleClick&&2!==e.browserEvent.detail&&!r)return super.onViewPointer(e);if(t.collapsible){const i=this.tree.model,n=i.getNodeLocation(t),o=e.browserEvent.altKey;if(i.setCollapsed(n,void 0,o),s&&r)return}super.onViewPointer(e)}onDoubleClick(e){(0,n.pv)(e.browserEvent.target,"monaco-tl-twistie")||super.onDoubleClick(e)}}class ie extends o.aV{constructor(e,t,i,n,r,s,o){super(e,t,i,n,o),this.focusTrait=r,this.selectionTrait=s}createMouseController(e){return new te(this,e.tree)}splice(e,t,i=[]){if(super.splice(e,t,i),0===i.length)return;const n=[],r=[];i.forEach(((t,i)=>{this.focusTrait.has(t)&&n.push(e+i),this.selectionTrait.has(t)&&r.push(e+i)})),n.length>0&&super.setFocus((0,s.cU)([...super.getFocus(),...n])),r.length>0&&super.setSelection((0,s.cU)([...super.getSelection(),...r]))}setFocus(e,t,i=!1){super.setFocus(e,t),i||this.focusTrait.set(e.map((e=>this.element(e))),t)}setSelection(e,t,i=!1){super.setSelection(e,t),i||this.selectionTrait.set(e.map((e=>this.element(e))),t)}}class ne{constructor(e,t,i,s,l={}){this._options=l,this.eventBufferer=new a.E7,this.disposables=new r.SL,this._onWillRefilter=new a.Q5,this.onWillRefilter=this._onWillRefilter.event,this._onDidUpdateOptions=new a.Q5;const c=new $(i),d=new a.ZD,h=new a.ZD,u=new q(h.event);this.renderers=s.map((e=>new G(e,(()=>this.model),d.event,u,l)));for(let e of this.renderers)this.disposables.add(e);let g;var f,p;l.keyboardNavigationLabelProvider&&(g=new Z(this,l.keyboardNavigationLabelProvider,l.filter),l=Object.assign(Object.assign({},l),{filter:g}),this.disposables.add(g)),this.focus=new ee(l.identityProvider),this.selection=new ee(l.identityProvider),this.view=new ie(e,t,c,this.renderers,this.focus,this.selection,Object.assign(Object.assign({},(f=()=>this.model,(p=l)&&Object.assign(Object.assign({},p),{identityProvider:p.identityProvider&&{getId:e=>p.identityProvider.getId(e.element)},dnd:p.dnd&&new U(f,p.dnd),multipleSelectionController:p.multipleSelectionController&&{isSelectionSingleChangeEvent:e=>p.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},e),{element:e.element})),isSelectionRangeChangeEvent:e=>p.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},e),{element:e.element}))},accessibilityProvider:p.accessibilityProvider&&Object.assign(Object.assign({},p.accessibilityProvider),{getSetSize(e){const t=f(),i=t.getNodeLocation(e),n=t.getParentNodeLocation(i);return t.getNode(n).visibleChildrenCount},getPosInSet:e=>e.visibleChildIndex+1,isChecked:p.accessibilityProvider&&p.accessibilityProvider.isChecked?e=>p.accessibilityProvider.isChecked(e.element):void 0,getRole:p.accessibilityProvider&&p.accessibilityProvider.getRole?e=>p.accessibilityProvider.getRole(e.element):()=>"treeitem",getAriaLabel:e=>p.accessibilityProvider.getAriaLabel(e.element),getWidgetAriaLabel:()=>p.accessibilityProvider.getWidgetAriaLabel(),getWidgetRole:p.accessibilityProvider&&p.accessibilityProvider.getWidgetRole?()=>p.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e=>e.depth,getActiveDescendantId:p.accessibilityProvider.getActiveDescendantId&&(e=>p.accessibilityProvider.getActiveDescendantId(e.element))}),keyboardNavigationLabelProvider:p.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},p.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel:e=>p.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element)}),enableKeyboardNavigation:p.simpleKeyboardNavigation}))),{tree:this})),this.model=this.createModel(e,this.view,l),d.input=this.model.onDidChangeCollapseState;const m=a.ju.forEach(this.model.onDidSplice,(e=>{this.eventBufferer.bufferEvents((()=>{this.focus.onDidModelSplice(e),this.selection.onDidModelSplice(e)}))}));if(m((()=>null),null,this.disposables),h.input=a.ju.chain(a.ju.any(m,this.focus.onDidChange,this.selection.onDidChange)).debounce((()=>null),0).map((()=>{const e=new Set;for(const t of this.focus.getNodes())e.add(t);for(const t of this.selection.getNodes())e.add(t);return[...e.values()]})).event,!1!==l.keyboardSupport){const e=a.ju.chain(this.view.onKeyDown).filter((e=>!(0,o.cK)(e.target))).map((e=>new C.y(e)));e.filter((e=>15===e.keyCode)).on(this.onLeftArrow,this,this.disposables),e.filter((e=>17===e.keyCode)).on(this.onRightArrow,this,this.disposables),e.filter((e=>10===e.keyCode)).on(this.onSpace,this,this.disposables)}if(l.keyboardNavigationLabelProvider){const e=l.keyboardNavigationDelegate||o.WK;this.typeFilterController=new J(this,this.model,this.view,g,e),this.focusNavigationFilter=e=>this.typeFilterController.shouldAllowFocus(e),this.disposables.add(this.typeFilterController)}this.styleElement=(0,n.dS)(this.view.getHTMLElement()),(0,n.og)(this.getHTMLElement(),"always",this._options.renderIndentGuides===K.Always)}get onDidChangeFocus(){return this.eventBufferer.wrapEvent(this.focus.onDidChange)}get onDidChangeSelection(){return this.eventBufferer.wrapEvent(this.selection.onDidChange)}get onMouseDblClick(){return a.ju.map(this.view.onMouseDblClick,Q)}get onPointer(){return a.ju.map(this.view.onPointer,Q)}get onDidFocus(){return this.view.onDidFocus}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get expandOnlyOnDoubleClick(){var e;return null!==(e=this._options.expandOnlyOnDoubleClick)&&void 0!==e&&e}get expandOnlyOnTwistieClick(){return void 0!==this._options.expandOnlyOnTwistieClick&&this._options.expandOnlyOnTwistieClick}get onDidDispose(){return this.view.onDidDispose}updateOptions(e={}){this._options=Object.assign(Object.assign({},this._options),e);for(const t of this.renderers)t.updateOptions(e);this.view.updateOptions({enableKeyboardNavigation:this._options.simpleKeyboardNavigation,automaticKeyboardNavigation:this._options.automaticKeyboardNavigation,smoothScrolling:this._options.smoothScrolling,horizontalScrolling:this._options.horizontalScrolling}),this.typeFilterController&&this.typeFilterController.updateOptions(this._options),this._onDidUpdateOptions.fire(this._options),(0,n.og)(this.getHTMLElement(),"always",this._options.renderIndentGuides===K.Always)}get options(){return this._options}getHTMLElement(){return this.view.getHTMLElement()}get scrollTop(){return this.view.scrollTop}set scrollTop(e){this.view.scrollTop=e}domFocus(){this.view.domFocus()}layout(e,t){this.view.layout(e,t)}style(e){const t=`.${this.view.domId}`,i=[];e.treeIndentGuidesStroke&&(i.push(`.monaco-list${t}:hover .monaco-tl-indent > .indent-guide, .monaco-list${t}.always .monaco-tl-indent > .indent-guide { border-color: ${e.treeIndentGuidesStroke.transparent(.4)}; }`),i.push(`.monaco-list${t} .monaco-tl-indent > .indent-guide.active { border-color: ${e.treeIndentGuidesStroke}; }`));const n=i.join("\n");n!==this.styleElement.innerHTML&&(this.styleElement.innerHTML=n),this.view.style(e)}collapse(e,t=!1){return this.model.setCollapsed(e,!0,t)}expand(e,t=!1){return this.model.setCollapsed(e,!1,t)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}refilter(){this._onWillRefilter.fire(void 0),this.model.refilter()}setSelection(e,t){const i=e.map((e=>this.model.getNode(e)));this.selection.set(i,t);const n=e.map((e=>this.model.getListIndex(e))).filter((e=>e>-1));this.view.setSelection(n,t,!0)}getSelection(){return this.selection.get()}setFocus(e,t){const i=e.map((e=>this.model.getNode(e)));this.focus.set(i,t);const n=e.map((e=>this.model.getListIndex(e))).filter((e=>e>-1));this.view.setFocus(n,t,!0)}focusNext(e=1,t=!1,i,n=this.focusNavigationFilter){this.view.focusNext(e,t,i,n)}getFocus(){return this.focus.get()}reveal(e,t){this.model.expandTo(e);const i=this.model.getListIndex(e);-1!==i&&this.view.reveal(i,t)}getRelativeTop(e){const t=this.model.getListIndex(e);return-1===t?null:this.view.getRelativeTop(t)}onLeftArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(0===t.length)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!0)){const e=this.model.getParentNodeLocation(n);if(!e)return;const t=this.model.getListIndex(e);this.view.reveal(t),this.view.setFocus([t])}}onRightArrow(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(0===t.length)return;const i=t[0],n=this.model.getNodeLocation(i);if(!this.model.setCollapsed(n,!1)){if(!i.children.some((e=>e.visible)))return;const[e]=this.view.getFocus(),t=e+1;this.view.reveal(t),this.view.setFocus([t])}}onSpace(e){e.preventDefault(),e.stopPropagation();const t=this.view.getFocusedElements();if(0===t.length)return;const i=t[0],n=this.model.getNodeLocation(i),r=e.browserEvent.altKey;this.model.setCollapsed(n,void 0,r)}dispose(){(0,r.B9)(this.disposables),this.view.dispose()}}class re{constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.nodesByIdentity=new Map,this.model=new I(e,t,null,i),this.onDidSplice=this.model.onDidSplice,this.onDidChangeCollapseState=this.model.onDidChangeCollapseState,this.onDidChangeRenderNodeCount=this.model.onDidChangeRenderNodeCount,i.sorter&&(this.sorter={compare:(e,t)=>i.sorter.compare(e.element,t.element)}),this.identityProvider=i.identityProvider}setChildren(e,t=w.$.empty(),i,n){const r=this.getElementLocation(e);this._setChildren(r,this.preserveCollapseState(t),i,n)}_setChildren(e,t=w.$.empty(),i,n){const r=new Set,s=new Set;this.model.splice([...e,0],Number.MAX_VALUE,t,(e=>{if(null===e.element)return;const t=e;if(r.add(t.element),this.nodes.set(t.element,t),this.identityProvider){const e=this.identityProvider.getId(t.element).toString();s.add(e),this.nodesByIdentity.set(e,t)}i&&i(t)}),(e=>{if(null===e.element)return;const t=e;if(r.has(t.element)||this.nodes.delete(t.element),this.identityProvider){const e=this.identityProvider.getId(t.element).toString();s.has(e)||this.nodesByIdentity.delete(e)}n&&n(t)}))}preserveCollapseState(e=w.$.empty()){return this.sorter&&(e=(0,s.qt)([...e],this.sorter.compare.bind(this.sorter))),w.$.map(e,(e=>{let t=this.nodes.get(e.element);if(!t&&this.identityProvider){const i=this.identityProvider.getId(e.element).toString();t=this.nodesByIdentity.get(i)}if(!t)return Object.assign(Object.assign({},e),{children:this.preserveCollapseState(e.children)});const i="boolean"==typeof e.collapsible?e.collapsible:t.collapsible,n=void 0!==e.collapsed?e.collapsed:t.collapsed;return Object.assign(Object.assign({},e),{collapsible:i,collapsed:n,children:this.preserveCollapseState(e.children)})}))}rerender(e){const t=this.getElementLocation(e);this.model.rerender(t)}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getElementLocation(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getElementLocation(e);return this.model.getListRenderCount(t)}isCollapsible(e){const t=this.getElementLocation(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getElementLocation(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getElementLocation(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getElementLocation(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getElementLocation(e);this.model.expandTo(t)}refilter(){this.model.refilter()}getNode(e=null){if(null===e)return this.model.getNode(this.model.rootRef);const t=this.nodes.get(e);if(!t)throw new S(this.user,`Tree element not found: ${e}`);return t}getNodeLocation(e){return e.element}getParentNodeLocation(e){if(null===e)throw new S(this.user,"Invalid getParentNodeLocation call");const t=this.nodes.get(e);if(!t)throw new S(this.user,`Tree element not found: ${e}`);const i=this.model.getNodeLocation(t),n=this.model.getParentNodeLocation(i);return this.model.getNode(n).element}getElementLocation(e){if(null===e)return[];const t=this.nodes.get(e);if(!t)throw new S(this.user,`Tree element not found: ${e}`);return this.model.getNodeLocation(t)}}function se(e){return{element:{elements:[e.element],incompressible:e.incompressible||!1},children:w.$.map(w.$.from(e.children),se),collapsible:e.collapsible,collapsed:e.collapsed}}function oe(e){const t=[e.element],i=e.incompressible||!1;let n,r;for(;[r,n]=w.$.consume(w.$.from(e.children),2),1===r.length&&!(e=r[0]).incompressible;)t.push(e.element);return{element:{elements:t,incompressible:i},children:w.$.map(w.$.concat(r,n),oe),collapsible:e.collapsible,collapsed:e.collapsed}}function ae(e,t=0){let i;return i=t<e.element.elements.length-1?[ae(e,t+1)]:w.$.map(w.$.from(e.children),(e=>ae(e,0))),0===t&&e.element.incompressible?{element:e.element.elements[t],children:i,incompressible:!0,collapsible:e.collapsible,collapsed:e.collapsed}:{element:e.element.elements[t],children:i,collapsible:e.collapsible,collapsed:e.collapsed}}function le(e){return ae(e,0)}function ce(e,t,i){return e.element===t?Object.assign(Object.assign({},e),{children:i}):Object.assign(Object.assign({},e),{children:w.$.map(w.$.from(e.children),(e=>ce(e,t,i)))})}class de{constructor(e,t,i={}){this.user=e,this.rootRef=null,this.nodes=new Map,this.model=new re(e,t,i),this.enabled=void 0===i.compressionEnabled||i.compressionEnabled}get onDidSplice(){return this.model.onDidSplice}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}get onDidChangeRenderNodeCount(){return this.model.onDidChangeRenderNodeCount}setChildren(e,t=w.$.empty()){if(null===e){const e=w.$.map(t,this.enabled?oe:se);return void this._setChildren(null,e)}const i=this.nodes.get(e);if(!i)throw new Error("Unknown compressed tree node");const n=this.model.getNode(i),r=this.model.getParentNodeLocation(i),s=this.model.getNode(r),o=ce(le(n),e,t),a=(this.enabled?oe:se)(o),l=s.children.map((e=>e===n?a:e));this._setChildren(s.element,l)}setCompressionEnabled(e){if(e===this.enabled)return;this.enabled=e;const t=this.model.getNode().children,i=w.$.map(t,le),n=w.$.map(i,e?oe:se);this._setChildren(null,n)}_setChildren(e,t){const i=new Set;this.model.setChildren(e,t,(e=>{for(const t of e.element.elements)i.add(t),this.nodes.set(t,e.element)}),(e=>{for(const t of e.element.elements)i.has(t)||this.nodes.delete(t)}))}has(e){return this.nodes.has(e)}getListIndex(e){const t=this.getCompressedNode(e);return this.model.getListIndex(t)}getListRenderCount(e){const t=this.getCompressedNode(e);return this.model.getListRenderCount(t)}getNode(e){if(void 0===e)return this.model.getNode();const t=this.getCompressedNode(e);return this.model.getNode(t)}getNodeLocation(e){const t=this.model.getNodeLocation(e);return null===t?null:t.elements[t.elements.length-1]}getParentNodeLocation(e){const t=this.getCompressedNode(e),i=this.model.getParentNodeLocation(t);return null===i?null:i.elements[i.elements.length-1]}isCollapsible(e){const t=this.getCompressedNode(e);return this.model.isCollapsible(t)}setCollapsible(e,t){const i=this.getCompressedNode(e);return this.model.setCollapsible(i,t)}isCollapsed(e){const t=this.getCompressedNode(e);return this.model.isCollapsed(t)}setCollapsed(e,t,i){const n=this.getCompressedNode(e);return this.model.setCollapsed(n,t,i)}expandTo(e){const t=this.getCompressedNode(e);this.model.expandTo(t)}rerender(e){const t=this.getCompressedNode(e);this.model.rerender(t)}refilter(){this.model.refilter()}getCompressedNode(e){if(null===e)return null;const t=this.nodes.get(e);if(!t)throw new S(this.user,`Tree element not found: ${e}`);return t}}const he=e=>e[e.length-1];class ue{constructor(e,t){this.unwrapper=e,this.node=t}get element(){return null===this.node.element?null:this.unwrapper(this.node.element)}get children(){return this.node.children.map((e=>new ue(this.unwrapper,e)))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}}class ge{constructor(e,t,i={}){this.rootRef=null,this.elementMapper=i.elementMapper||he;const n=e=>this.elementMapper(e.elements);this.nodeMapper=new k((e=>new ue(n,e))),this.model=new de(e,function(e,t){return{splice(i,n,r){t.splice(i,n,r.map((t=>e.map(t))))},updateElementHeight(e,i){t.updateElementHeight(e,i)}}}(this.nodeMapper,t),function(e,t){return Object.assign(Object.assign({},t),{sorter:t.sorter&&{compare:(e,i)=>t.sorter.compare(e.elements[0],i.elements[0])},identityProvider:t.identityProvider&&{getId:i=>t.identityProvider.getId(e(i))},filter:t.filter&&{filter:(i,n)=>t.filter.filter(e(i),n)}})}(n,i))}get onDidSplice(){return a.ju.map(this.model.onDidSplice,(({insertedNodes:e,deletedNodes:t})=>({insertedNodes:e.map((e=>this.nodeMapper.map(e))),deletedNodes:t.map((e=>this.nodeMapper.map(e)))})))}get onDidChangeCollapseState(){return a.ju.map(this.model.onDidChangeCollapseState,(({node:e,deep:t})=>({node:this.nodeMapper.map(e),deep:t})))}get onDidChangeRenderNodeCount(){return a.ju.map(this.model.onDidChangeRenderNodeCount,(e=>this.nodeMapper.map(e)))}setChildren(e,t=w.$.empty()){this.model.setChildren(e,t)}setCompressionEnabled(e){this.model.setCompressionEnabled(e)}has(e){return this.model.has(e)}getListIndex(e){return this.model.getListIndex(e)}getListRenderCount(e){return this.model.getListRenderCount(e)}getNode(e){return this.nodeMapper.map(this.model.getNode(e))}getNodeLocation(e){return e.element}getParentNodeLocation(e){return this.model.getParentNodeLocation(e)}isCollapsible(e){return this.model.isCollapsible(e)}setCollapsible(e,t){return this.model.setCollapsible(e,t)}isCollapsed(e){return this.model.isCollapsed(e)}setCollapsed(e,t,i){return this.model.setCollapsed(e,t,i)}expandTo(e){return this.model.expandTo(e)}rerender(e){return this.model.rerender(e)}refilter(){return this.model.refilter()}getCompressedTreeNode(e=null){return this.model.getNode(e)}}var fe=i(49898);class pe extends ne{constructor(e,t,i,n,r={}){super(e,t,i,n,r)}get onDidChangeCollapseState(){return this.model.onDidChangeCollapseState}setChildren(e,t=w.$.empty()){this.model.setChildren(e,t)}rerender(e){void 0!==e?this.model.rerender(e):this.view.rerender()}hasElement(e){return this.model.has(e)}createModel(e,t,i){return new re(e,t,i)}}class me{constructor(e,t){this._compressedTreeNodeProvider=e,this.renderer=t,this.templateId=t.templateId,t.onDidChangeTwistieState&&(this.onDidChangeTwistieState=t.onDidChangeTwistieState)}get compressedTreeNodeProvider(){return this._compressedTreeNodeProvider()}renderTemplate(e){return{compressedTreeNode:void 0,data:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){const r=this.compressedTreeNodeProvider.getCompressedTreeNode(e.element);1===r.element.elements.length?(i.compressedTreeNode=void 0,this.renderer.renderElement(e,t,i.data,n)):(i.compressedTreeNode=r,this.renderer.renderCompressedElements(r,t,i.data,n))}disposeElement(e,t,i,n){i.compressedTreeNode?this.renderer.disposeCompressedElements&&this.renderer.disposeCompressedElements(i.compressedTreeNode,t,i.data,n):this.renderer.disposeElement&&this.renderer.disposeElement(e,t,i.data,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.data)}renderTwistie(e,t){this.renderer.renderTwistie&&this.renderer.renderTwistie(e,t)}}!function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);s>3&&o&&Object.defineProperty(t,i,o)}([fe.H],me.prototype,"compressedTreeNodeProvider",null);class _e extends pe{constructor(e,t,i,n,r={}){const s=()=>this;super(e,t,i,n.map((e=>new me(s,e))),function(e,t){return t&&Object.assign(Object.assign({},t),{keyboardNavigationLabelProvider:t.keyboardNavigationLabelProvider&&{getKeyboardNavigationLabel(i){let n;try{n=e().getCompressedTreeNode(i)}catch(e){return t.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(i)}return 1===n.element.elements.length?t.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(i):t.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(n.element.elements)}}})}(s,r))}setChildren(e,t=w.$.empty()){this.model.setChildren(e,t)}createModel(e,t,i){return new ge(e,t,i)}updateOptions(e={}){super.updateOptions(e),void 0!==e.compressionEnabled&&this.model.setCompressionEnabled(e.compressionEnabled)}getCompressedTreeNode(e=null){return this.model.getCompressedTreeNode(e)}}var be=i(17301),ve=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};function ye(e){return Object.assign(Object.assign({},e),{children:[],refreshPromise:void 0,stale:!0,slow:!1,collapsedByDefault:void 0})}function we(e,t){return!!t.parent&&(t.parent===e||we(e,t.parent))}class Ce{constructor(e){this.node=e}get element(){return this.node.element.element}get children(){return this.node.children.map((e=>new Ce(e)))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}}class Se{constructor(e,t,i){this.renderer=e,this.nodeMapper=t,this.onDidChangeTwistieState=i,this.renderedNodes=new Map,this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(0,n.PT)(t,j.classNames):(0,n.GK)(t,j.classNames),!1}disposeElement(e,t,i,n){this.renderer.disposeElement&&this.renderer.disposeElement(this.nodeMapper.map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear()}}function ke(e){return{browserEvent:e.browserEvent,elements:e.elements.map((e=>e.element))}}function xe(e){return{browserEvent:e.browserEvent,element:e.element&&e.element.element,target:e.target}}class Le extends L.kX{constructor(e){super(e.elements.map((e=>e.element))),this.data=e}}function Me(e){return e instanceof L.kX?new Le(e):e}class De{constructor(e){this.dnd=e}getDragURI(e){return this.dnd.getDragURI(e.element)}getDragLabel(e,t){if(this.dnd.getDragLabel)return this.dnd.getDragLabel(e.map((e=>e.element)),t)}onDragStart(e,t){this.dnd.onDragStart&&this.dnd.onDragStart(Me(e),t)}onDragOver(e,t,i,n,r=!0){return this.dnd.onDragOver(Me(e),t&&t.element,i,n)}drop(e,t,i,n){this.dnd.drop(Me(e),t&&t.element,i,n)}onDragEnd(e){this.dnd.onDragEnd&&this.dnd.onDragEnd(e)}}function Ne(e){return e&&Object.assign(Object.assign({},e),{collapseByDefault:!0,identityProvider:e.identityProvider&&{getId:t=>e.identityProvider.getId(t.element)},dnd:e.dnd&&new De(e.dnd),multipleSelectionController:e.multipleSelectionController&&{isSelectionSingleChangeEvent:t=>e.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({},t),{element:t.element})),isSelectionRangeChangeEvent:t=>e.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({},t),{element:t.element}))},accessibilityProvider:e.accessibilityProvider&&Object.assign(Object.assign({},e.accessibilityProvider),{getPosInSet:void 0,getSetSize:void 0,getRole:e.accessibilityProvider.getRole?t=>e.accessibilityProvider.getRole(t.element):()=>"treeitem",isChecked:e.accessibilityProvider.isChecked?t=>{var i;return!!(null===(i=e.accessibilityProvider)||void 0===i?void 0:i.isChecked(t.element))}:void 0,getAriaLabel:t=>e.accessibilityProvider.getAriaLabel(t.element),getWidgetAriaLabel:()=>e.accessibilityProvider.getWidgetAriaLabel(),getWidgetRole:e.accessibilityProvider.getWidgetRole?()=>e.accessibilityProvider.getWidgetRole():()=>"tree",getAriaLevel:e.accessibilityProvider.getAriaLevel&&(t=>e.accessibilityProvider.getAriaLevel(t.element)),getActiveDescendantId:e.accessibilityProvider.getActiveDescendantId&&(t=>e.accessibilityProvider.getActiveDescendantId(t.element))}),filter:e.filter&&{filter:(t,i)=>e.filter.filter(t.element,i)},keyboardNavigationLabelProvider:e.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},e.keyboardNavigationLabelProvider),{getKeyboardNavigationLabel:t=>e.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(t.element)}),sorter:void 0,expandOnlyOnTwistieClick:void 0===e.expandOnlyOnTwistieClick?void 0:"function"!=typeof e.expandOnlyOnTwistieClick?e.expandOnlyOnTwistieClick:t=>e.expandOnlyOnTwistieClick(t.element),additionalScrollHeight:e.additionalScrollHeight})}function Ee(e,t){t(e),e.children.forEach((e=>Ee(e,t)))}class Te{constructor(e,t,i,n,s,o={}){this.user=e,this.dataSource=s,this.nodes=new Map,this.subTreeRefreshPromises=new Map,this.refreshPromises=new Map,this._onDidRender=new a.Q5,this._onDidChangeNodeSlowState=new a.Q5,this.nodeMapper=new k((e=>new Ce(e))),this.disposables=new r.SL,this.identityProvider=o.identityProvider,this.autoExpandSingleChildren=void 0!==o.autoExpandSingleChildren&&o.autoExpandSingleChildren,this.sorter=o.sorter,this.collapseByDefault=o.collapseByDefault,this.tree=this.createTree(e,t,i,n,o),this.root=ye({element:void 0,parent:null,hasChildren:!0}),this.identityProvider&&(this.root=Object.assign(Object.assign({},this.root),{id:null})),this.nodes.set(null,this.root),this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState,this,this.disposables)}get onDidChangeFocus(){return a.ju.map(this.tree.onDidChangeFocus,ke)}get onDidChangeSelection(){return a.ju.map(this.tree.onDidChangeSelection,ke)}get onMouseDblClick(){return a.ju.map(this.tree.onMouseDblClick,xe)}get onPointer(){return a.ju.map(this.tree.onPointer,xe)}get onDidFocus(){return this.tree.onDidFocus}get onDidDispose(){return this.tree.onDidDispose}createTree(e,t,i,n,r){const s=new $(i),o=n.map((e=>new Se(e,this.nodeMapper,this._onDidChangeNodeSlowState.event))),a=Ne(r)||{};return new pe(e,t,s,o,a)}updateOptions(e={}){this.tree.updateOptions(e)}getHTMLElement(){return this.tree.getHTMLElement()}get scrollTop(){return this.tree.scrollTop}set scrollTop(e){this.tree.scrollTop=e}domFocus(){this.tree.domFocus()}layout(e,t){this.tree.layout(e,t)}style(e){this.tree.style(e)}getInput(){return this.root.element}setInput(e,t){return ve(this,void 0,void 0,(function*(){this.refreshPromises.forEach((e=>e.cancel())),this.refreshPromises.clear(),this.root.element=e;const i=t&&{viewState:t,focus:[],selection:[]};yield this._updateChildren(e,!0,!1,i),i&&(this.tree.setFocus(i.focus),this.tree.setSelection(i.selection)),t&&"number"==typeof t.scrollTop&&(this.scrollTop=t.scrollTop)}))}_updateChildren(e=this.root.element,t=!0,i=!1,n){return ve(this,void 0,void 0,(function*(){if(void 0===this.root.element)throw new S(this.user,"Tree input not set");this.root.refreshPromise&&(yield this.root.refreshPromise,yield a.ju.toPromise(this._onDidRender.event));const r=this.getDataNode(e);if(yield this.refreshAndRenderNode(r,t,n),i)try{this.tree.rerender(r)}catch(e){}}))}rerender(e){if(void 0===e||e===this.root.element)return void this.tree.rerender();const t=this.getDataNode(e);this.tree.rerender(t)}collapse(e,t=!1){const i=this.getDataNode(e);return this.tree.collapse(i===this.root?null:i,t)}expand(e,t=!1){return ve(this,void 0,void 0,(function*(){if(void 0===this.root.element)throw new S(this.user,"Tree input not set");this.root.refreshPromise&&(yield this.root.refreshPromise,yield a.ju.toPromise(this._onDidRender.event));const i=this.getDataNode(e);if(this.tree.hasElement(i)&&!this.tree.isCollapsible(i))return!1;if(i.refreshPromise&&(yield this.root.refreshPromise,yield a.ju.toPromise(this._onDidRender.event)),i!==this.root&&!i.refreshPromise&&!this.tree.isCollapsed(i))return!1;const n=this.tree.expand(i===this.root?null:i,t);return i.refreshPromise&&(yield this.root.refreshPromise,yield a.ju.toPromise(this._onDidRender.event)),n}))}setSelection(e,t){const i=e.map((e=>this.getDataNode(e)));this.tree.setSelection(i,t)}getSelection(){return this.tree.getSelection().map((e=>e.element))}setFocus(e,t){const i=e.map((e=>this.getDataNode(e)));this.tree.setFocus(i,t)}getFocus(){return this.tree.getFocus().map((e=>e.element))}reveal(e,t){this.tree.reveal(this.getDataNode(e),t)}getDataNode(e){const t=this.nodes.get(e===this.root.element?null:e);if(!t)throw new S(this.user,`Data tree node not found: ${e}`);return t}refreshAndRenderNode(e,t,i){return ve(this,void 0,void 0,(function*(){yield this.refreshNode(e,t,i),this.render(e,i)}))}refreshNode(e,t,i){return ve(this,void 0,void 0,(function*(){let n;return this.subTreeRefreshPromises.forEach(((r,s)=>{!n&&function(e,t){return e===t||we(e,t)||we(t,e)}(s,e)&&(n=r.then((()=>this.refreshNode(e,t,i))))})),n||this.doRefreshSubTree(e,t,i)}))}doRefreshSubTree(e,t,i){return ve(this,void 0,void 0,(function*(){let n;e.refreshPromise=new Promise((e=>n=e)),this.subTreeRefreshPromises.set(e,e.refreshPromise),e.refreshPromise.finally((()=>{e.refreshPromise=void 0,this.subTreeRefreshPromises.delete(e)}));try{const r=yield this.doRefreshNode(e,t,i);e.stale=!1,yield Promise.all(r.map((e=>this.doRefreshSubTree(e,t,i))))}finally{n()}}))}doRefreshNode(e,t,i){return ve(this,void 0,void 0,(function*(){let n;if(e.hasChildren=!!this.dataSource.hasChildren(e.element),e.hasChildren){const t=(0,O.Vs)(800);t.then((()=>{e.slow=!0,this._onDidChangeNodeSlowState.fire(e)}),(e=>null)),n=this.doGetChildren(e).finally((()=>t.cancel()))}else n=Promise.resolve(w.$.empty());try{const r=yield n;return this.setChildren(e,r,t,i)}catch(t){if(e!==this.root&&this.tree.collapse(e===this.root?null:e),(0,be.VV)(t))return[];throw t}finally{e.slow&&(e.slow=!1,this._onDidChangeNodeSlowState.fire(e))}}))}doGetChildren(e){let t=this.refreshPromises.get(e);return t||(t=(0,O.PG)((()=>ve(this,void 0,void 0,(function*(){const t=yield this.dataSource.getChildren(e.element);return this.processChildren(t)})))),this.refreshPromises.set(e,t),t.finally((()=>{this.refreshPromises.delete(e)})))}_onDidChangeCollapseState({node:e,deep:t}){null!==e.element&&!e.collapsed&&e.element.stale&&(t?this.collapse(e.element.element):this.refreshAndRenderNode(e.element,!1).catch(be.dL))}setChildren(e,t,i,n){const r=[...t];if(0===e.children.length&&0===r.length)return[];const s=new Map,o=new Map;for(const t of e.children)if(s.set(t.element,t),this.identityProvider){const e=this.tree.isCollapsed(t);o.set(t.id,{node:t,collapsed:e})}const a=[],l=r.map((t=>{const r=!!this.dataSource.hasChildren(t);if(!this.identityProvider){const i=ye({element:t,parent:e,hasChildren:r});return r&&this.collapseByDefault&&!this.collapseByDefault(t)&&(i.collapsedByDefault=!1,a.push(i)),i}const l=this.identityProvider.getId(t).toString(),c=o.get(l);if(c){const e=c.node;return s.delete(e.element),this.nodes.delete(e.element),this.nodes.set(t,e),e.element=t,e.hasChildren=r,i?c.collapsed?(e.children.forEach((e=>Ee(e,(e=>this.nodes.delete(e.element))))),e.children.splice(0,e.children.length),e.stale=!0):a.push(e):r&&this.collapseByDefault&&!this.collapseByDefault(t)&&(e.collapsedByDefault=!1,a.push(e)),e}const d=ye({element:t,parent:e,id:l,hasChildren:r});return n&&n.viewState.focus&&n.viewState.focus.indexOf(l)>-1&&n.focus.push(d),n&&n.viewState.selection&&n.viewState.selection.indexOf(l)>-1&&n.selection.push(d),n&&n.viewState.expanded&&n.viewState.expanded.indexOf(l)>-1?a.push(d):r&&this.collapseByDefault&&!this.collapseByDefault(t)&&(d.collapsedByDefault=!1,a.push(d)),d}));for(const e of s.values())Ee(e,(e=>this.nodes.delete(e.element)));for(const e of l)this.nodes.set(e.element,e);return e.children.splice(0,e.children.length,...l),e!==this.root&&this.autoExpandSingleChildren&&1===l.length&&0===a.length&&(l[0].collapsedByDefault=!1,a.push(l[0])),a}render(e,t){const i=e.children.map((e=>this.asTreeElement(e,t)));this.tree.setChildren(e===this.root?null:e,i),e!==this.root&&this.tree.setCollapsible(e,e.hasChildren),this._onDidRender.fire()}asTreeElement(e,t){if(e.stale)return{element:e,collapsible:e.hasChildren,collapsed:!0};let i;return i=!(t&&t.viewState.expanded&&e.id&&t.viewState.expanded.indexOf(e.id)>-1)&&e.collapsedByDefault,e.collapsedByDefault=void 0,{element:e,children:e.hasChildren?w.$.map(e.children,(e=>this.asTreeElement(e,t))):[],collapsible:e.hasChildren,collapsed:i}}processChildren(e){return this.sorter&&(e=[...e].sort(this.sorter.compare.bind(this.sorter))),e}dispose(){this.disposables.dispose()}}class Ie{constructor(e){this.node=e}get element(){return{elements:this.node.element.elements.map((e=>e.element)),incompressible:this.node.element.incompressible}}get children(){return this.node.children.map((e=>new Ie(e)))}get depth(){return this.node.depth}get visibleChildrenCount(){return this.node.visibleChildrenCount}get visibleChildIndex(){return this.node.visibleChildIndex}get collapsible(){return this.node.collapsible}get collapsed(){return this.node.collapsed}get visible(){return this.node.visible}get filterData(){return this.node.filterData}}class Oe{constructor(e,t,i,n){this.renderer=e,this.nodeMapper=t,this.compressibleNodeMapperProvider=i,this.onDidChangeTwistieState=n,this.renderedNodes=new Map,this.disposables=[],this.templateId=e.templateId}renderTemplate(e){return{templateData:this.renderer.renderTemplate(e)}}renderElement(e,t,i,n){this.renderer.renderElement(this.nodeMapper.map(e),t,i.templateData,n)}renderCompressedElements(e,t,i,n){this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}renderTwistie(e,t){return e.slow?(0,n.PT)(t,j.classNames):(0,n.GK)(t,j.classNames),!1}disposeElement(e,t,i,n){this.renderer.disposeElement&&this.renderer.disposeElement(this.nodeMapper.map(e),t,i.templateData,n)}disposeCompressedElements(e,t,i,n){this.renderer.disposeCompressedElements&&this.renderer.disposeCompressedElements(this.compressibleNodeMapperProvider().map(e),t,i.templateData,n)}disposeTemplate(e){this.renderer.disposeTemplate(e.templateData)}dispose(){this.renderedNodes.clear(),this.disposables=(0,r.B9)(this.disposables)}}class Ae extends Te{constructor(e,t,i,n,r,s,o={}){super(e,t,i,r,s,o),this.compressionDelegate=n,this.compressibleNodeMapper=new k((e=>new Ie(e))),this.filter=o.filter}createTree(e,t,i,n,r){const s=new $(i),o=n.map((e=>new Oe(e,this.nodeMapper,(()=>this.compressibleNodeMapper),this._onDidChangeNodeSlowState.event))),a=function(e){const t=e&&Ne(e);return t&&Object.assign(Object.assign({},t),{keyboardNavigationLabelProvider:t.keyboardNavigationLabelProvider&&Object.assign(Object.assign({},t.keyboardNavigationLabelProvider),{getCompressedNodeKeyboardNavigationLabel:t=>e.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(t.map((e=>e.element)))})})}(r)||{};return new _e(e,t,s,o,a)}asTreeElement(e,t){return Object.assign({incompressible:this.compressionDelegate.isIncompressible(e.element)},super.asTreeElement(e,t))}updateOptions(e={}){this.tree.updateOptions(e)}render(e,t){if(!this.identityProvider)return super.render(e,t);const i=e=>this.identityProvider.getId(e).toString(),n=e=>{const t=new Set;for(const n of e){const e=this.tree.getCompressedTreeNode(n===this.root?null:n);if(e.element)for(const n of e.element.elements)t.add(i(n.element))}return t},r=n(this.tree.getSelection()),s=n(this.tree.getFocus());super.render(e,t);const o=this.getSelection();let a=!1;const l=this.getFocus();let c=!1;const d=e=>{const t=e.element;if(t)for(let e=0;e<t.elements.length;e++){const n=i(t.elements[e].element),d=t.elements[t.elements.length-1].element;r.has(n)&&-1===o.indexOf(d)&&(o.push(d),a=!0),s.has(n)&&-1===l.indexOf(d)&&(l.push(d),c=!0)}e.children.forEach(d)};d(this.tree.getCompressedTreeNode(e===this.root?null:e)),a&&this.setSelection(o),c&&this.setFocus(l)}processChildren(e){return this.filter&&(e=w.$.filter(e,(e=>{const t="boolean"==typeof(i=this.filter.filter(e,1))?i?1:0:N(i)?E(i.visibility):E(i);var i;if(2===t)throw new Error("Recursive tree visibility not supported in async data compressed trees");return 1===t}))),super.processChildren(e)}}class Re extends ne{constructor(e,t,i,n,r,s={}){super(e,t,i,n,s),this.user=e,this.dataSource=r,this.identityProvider=s.identityProvider}createModel(e,t,i){return new re(e,t,i)}}var Pe=i(31106),Fe=function(e,t,i,n){var r,s=arguments.length,o=s<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,n);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,i,o):r(t,i))||o);return s>3&&o&&Object.defineProperty(t,i,o),o},Be=function(e,t){return function(i,n){t(i,n,e)}};const We=(0,m.yh)("listService");let Ye=class{constructor(e){this._themeService=e,this.disposables=new r.SL,this.lists=[],this._lastFocusedWidget=void 0,this._hasCreatedStyleController=!1}get lastFocusedList(){return this._lastFocusedWidget}register(e,t){if(!this._hasCreatedStyleController){this._hasCreatedStyleController=!0;const e=new o.wD((0,n.dS)(),"");this.disposables.add((0,v.Jl)(e,this._themeService))}if(this.lists.some((t=>t.widget===e)))throw new Error("Cannot register the same widget multiple times");const i={widget:e,extraContextKeys:t};return this.lists.push(i),e.getHTMLElement()===document.activeElement&&(this._lastFocusedWidget=e),(0,r.F8)(e.onDidFocus((()=>this._lastFocusedWidget=e)),(0,r.OF)((()=>this.lists.splice(this.lists.indexOf(i),1))),e.onDidDispose((()=>{this.lists=this.lists.filter((e=>e!==i)),this._lastFocusedWidget===e&&(this._lastFocusedWidget=void 0)})))}dispose(){this.disposables.dispose()}};Ye=Fe([Be(0,y.XE)],Ye);const He=new p.uy("listFocus",!0),je=new p.uy("listSupportsMultiselect",!0),Ve=p.Ao.and(He,p.Ao.not("inputFocus")),ze=new p.uy("listHasSelectionOrFocus",!1),Ue=new p.uy("listDoubleSelection",!1),$e=new p.uy("listMultiSelection",!1),Ke=new p.uy("listSupportsKeyboardNavigation",!0),qe="listAutomaticKeyboardNavigation",Ge=new p.uy(qe,!0);let Ze=!1;function Je(e,t){const i=e.createScoped(t.getHTMLElement());return He.bindTo(i),i}const Qe="workbench.list.multiSelectModifier",Xe="workbench.list.openMode",et="workbench.list.horizontalScrolling",tt="workbench.list.keyboardNavigation",it="workbench.list.automaticKeyboardNavigation",nt="workbench.tree.indent",rt="workbench.tree.renderIndentGuides",st="workbench.list.smoothScrolling";function ot(e){return"alt"===e.getValue(Qe)}class at extends r.JT{constructor(e){super(),this.configurationService=e,this.useAltAsMultipleSelectionModifier=ot(e),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration((e=>{e.affectsConfiguration(Qe)&&(this.useAltAsMultipleSelectionModifier=ot(this.configurationService))})))}isSelectionSingleChangeEvent(e){return this.useAltAsMultipleSelectionModifier?e.browserEvent.altKey:(0,o.Zo)(e)}isSelectionRangeChangeEvent(e){return(0,o.wn)(e)}}function lt(e,t,i){const n=new r.SL,s=Object.assign({},e);if(!1!==e.multipleSelectionSupport&&!e.multipleSelectionController){const e=new at(t);s.multipleSelectionController=e,n.add(e)}return s.keyboardNavigationDelegate={mightProducePrintableCharacter:e=>i.mightProducePrintableCharacter(e)},s.smoothScrolling=t.getValue(st),[s,n]}let ct=class extends o.aV{constructor(e,t,i,n,r,s,o,a,l,c){const d=void 0!==r.horizontalScrolling?r.horizontalScrolling:l.getValue(et),[h,u]=lt(r,l,c);super(e,t,i,n,Object.assign(Object.assign(Object.assign({keyboardSupport:!1},(0,v.o)(a.getColorTheme(),v.O2)),h),{horizontalScrolling:d})),this.disposables.add(u),this.contextKeyService=Je(s,this),this.themeService=a,je.bindTo(this.contextKeyService).set(!(!1===r.multipleSelectionSupport)),this.listHasSelectionOrFocus=ze.bindTo(this.contextKeyService),this.listDoubleSelection=Ue.bindTo(this.contextKeyService),this.listMultiSelection=$e.bindTo(this.contextKeyService),this.horizontalScrolling=r.horizontalScrolling,this._useAltAsMultipleSelectionModifier=ot(l),this.disposables.add(this.contextKeyService),this.disposables.add(o.register(this)),r.overrideStyles&&this.updateStyles(r.overrideStyles),this.disposables.add(this.onDidChangeSelection((()=>{const e=this.getSelection(),t=this.getFocus();this.contextKeyService.bufferChangeEvents((()=>{this.listHasSelectionOrFocus.set(e.length>0||t.length>0),this.listMultiSelection.set(e.length>1),this.listDoubleSelection.set(2===e.length)}))}))),this.disposables.add(this.onDidChangeFocus((()=>{const e=this.getSelection(),t=this.getFocus();this.listHasSelectionOrFocus.set(e.length>0||t.length>0)}))),this.disposables.add(l.onDidChangeConfiguration((e=>{e.affectsConfiguration(Qe)&&(this._useAltAsMultipleSelectionModifier=ot(l));let t={};if(e.affectsConfiguration(et)&&void 0===this.horizontalScrolling){const e=l.getValue(et);t=Object.assign(Object.assign({},t),{horizontalScrolling:e})}if(e.affectsConfiguration(st)){const e=l.getValue(st);t=Object.assign(Object.assign({},t),{smoothScrolling:e})}Object.keys(t).length>0&&this.updateOptions(t)})))}updateOptions(e){super.updateOptions(e),e.overrideStyles&&this.updateStyles(e.overrideStyles)}dispose(){super.dispose(),this._styler&&this._styler.dispose()}updateStyles(e){this._styler&&this._styler.dispose(),this._styler=(0,v.Jl)(this,this.themeService,e)}};ct=Fe([Be(5,p.i6),Be(6,We),Be(7,y.XE),Be(8,g.Ui),Be(9,_.d)],ct);let dt=class extends class{constructor(e,t,i,n,r={}){const s=()=>this.model,a=n.map((e=>new c(e,s)));this.list=new o.aV(e,t,i,a,function(e,t){return Object.assign(Object.assign({},t),{accessibilityProvider:t.accessibilityProvider&&new d(e,t.accessibilityProvider)})}(s,r))}updateOptions(e){this.list.updateOptions(e)}getHTMLElement(){return this.list.getHTMLElement()}get onDidFocus(){return this.list.onDidFocus}get onDidDispose(){return this.list.onDidDispose}get onMouseDblClick(){return a.ju.map(this.list.onMouseDblClick,(({element:e,index:t,browserEvent:i})=>({element:void 0===e?void 0:this._model.get(e),index:t,browserEvent:i})))}get onPointer(){return a.ju.map(this.list.onPointer,(({element:e,index:t,browserEvent:i})=>({element:void 0===e?void 0:this._model.get(e),index:t,browserEvent:i})))}get onDidChangeFocus(){return a.ju.map(this.list.onDidChangeFocus,(({elements:e,indexes:t,browserEvent:i})=>({elements:e.map((e=>this._model.get(e))),indexes:t,browserEvent:i})))}get onDidChangeSelection(){return a.ju.map(this.list.onDidChangeSelection,(({elements:e,indexes:t,browserEvent:i})=>({elements:e.map((e=>this._model.get(e))),indexes:t,browserEvent:i})))}get model(){return this._model}set model(e){this._model=e,this.list.splice(0,this.list.length,(0,s.w6)(e.length))}getFocus(){return this.list.getFocus()}setSelection(e,t){this.list.setSelection(e,t)}getSelection(){return this.list.getSelection()}style(e){this.list.style(e)}dispose(){this.list.dispose()}}{constructor(e,t,i,n,s,o,a,l,c,d){const h=void 0!==s.horizontalScrolling?s.horizontalScrolling:c.getValue(et),[u,g]=lt(s,c,d);super(e,t,i,n,Object.assign(Object.assign(Object.assign({keyboardSupport:!1},(0,v.o)(l.getColorTheme(),v.O2)),u),{horizontalScrolling:h})),this.disposables=new r.SL,this.disposables.add(g),this.contextKeyService=Je(o,this),this.horizontalScrolling=s.horizontalScrolling,je.bindTo(this.contextKeyService).set(!(!1===s.multipleSelectionSupport)),this._useAltAsMultipleSelectionModifier=ot(c),this.disposables.add(this.contextKeyService),this.disposables.add(a.register(this)),s.overrideStyles&&this.disposables.add((0,v.Jl)(this,l,s.overrideStyles)),this.disposables.add(c.onDidChangeConfiguration((e=>{e.affectsConfiguration(Qe)&&(this._useAltAsMultipleSelectionModifier=ot(c));let t={};if(e.affectsConfiguration(et)&&void 0===this.horizontalScrolling){const e=c.getValue(et);t=Object.assign(Object.assign({},t),{horizontalScrolling:e})}if(e.affectsConfiguration(st)){const e=c.getValue(st);t=Object.assign(Object.assign({},t),{smoothScrolling:e})}Object.keys(t).length>0&&this.updateOptions(t)})))}dispose(){super.dispose(),this.disposables.dispose()}};dt=Fe([Be(5,p.i6),Be(6,We),Be(7,y.XE),Be(8,g.Ui),Be(9,_.d)],dt);class ht extends r.JT{constructor(e,t){var i,n;super(),this.widget=e,this._onDidOpen=new a.Q5,this.onDidOpen=this._onDidOpen.event,this.openOnFocus=null!==(i=null==t?void 0:t.openOnFocus)&&void 0!==i&&i,this._register(a.ju.filter(this.widget.onDidChangeSelection,(e=>e.browserEvent instanceof KeyboardEvent))((e=>this.onSelectionFromKeyboard(e)))),this._register(this.widget.onPointer((e=>this.onPointer(e.browserEvent)))),this._register(this.widget.onMouseDblClick((e=>this.onMouseDblClick(e.browserEvent)))),this.openOnFocus&&this._register(a.ju.filter(this.widget.onDidChangeFocus,(e=>e.browserEvent instanceof KeyboardEvent))((e=>this.onFocusFromKeyboard(e)))),"boolean"!=typeof(null==t?void 0:t.openOnSingleClick)&&(null==t?void 0:t.configurationService)?(this.openOnSingleClick="doubleClick"!==(null==t?void 0:t.configurationService.getValue(Xe)),this._register(null==t?void 0:t.configurationService.onDidChangeConfiguration((()=>{this.openOnSingleClick="doubleClick"!==(null==t?void 0:t.configurationService.getValue(Xe))})))):this.openOnSingleClick=null===(n=null==t?void 0:t.openOnSingleClick)||void 0===n||n}onFocusFromKeyboard(e){const t=this.widget.getFocus();this.widget.setSelection(t,e.browserEvent);const i="boolean"!=typeof e.browserEvent.preserveFocus||e.browserEvent.preserveFocus;this._open(i,!1,!1,e.browserEvent)}onSelectionFromKeyboard(e){if(1!==e.elements.length)return;const t="boolean"!=typeof e.browserEvent.preserveFocus||e.browserEvent.preserveFocus;this._open(t,!1,!1,e.browserEvent)}onPointer(e){if(!this.openOnSingleClick)return;if(2===e.detail)return;const t=1===e.button,i=e.ctrlKey||e.metaKey||e.altKey;this._open(!0,t,i,e)}onMouseDblClick(e){if(!e)return;const t=e.ctrlKey||e.metaKey||e.altKey;this._open(!1,!0,t,e)}_open(e,t,i,n){this._onDidOpen.fire({editorOptions:{preserveFocus:e,pinned:t,revealIfVisible:!0},sideBySide:i,element:this.widget.getSelection()[0],browserEvent:n})}}class ut extends ht{constructor(e,t){super(e,t)}}function gt(e,t){let i=!1;return n=>{if(i)return i=!1,!1;const r=t.softDispatch(n,e);return r&&r.enterChord?(i=!0,!1):(i=!1,!0)}}let ft=class extends pe{constructor(e,t,i,n,r,s,o,a,l,c,d){const{options:h,getAutomaticKeyboardNavigation:u,disposable:g}=vt(t,r,s,l,c,d);super(e,t,i,n,h),this.disposables.add(g),this.internals=new yt(this,r,u,r.overrideStyles,s,o,a,l,d),this.disposables.add(this.internals)}};ft=Fe([Be(5,p.i6),Be(6,We),Be(7,y.XE),Be(8,g.Ui),Be(9,_.d),Be(10,Pe.F)],ft);let pt=class extends _e{constructor(e,t,i,n,r,s,o,a,l,c,d){const{options:h,getAutomaticKeyboardNavigation:u,disposable:g}=vt(t,r,s,l,c,d);super(e,t,i,n,h),this.disposables.add(g),this.internals=new yt(this,r,u,r.overrideStyles,s,o,a,l,d),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles)}};pt=Fe([Be(5,p.i6),Be(6,We),Be(7,y.XE),Be(8,g.Ui),Be(9,_.d),Be(10,Pe.F)],pt);let mt=class extends Re{constructor(e,t,i,n,r,s,o,a,l,c,d,h){const{options:u,getAutomaticKeyboardNavigation:g,disposable:f}=vt(t,s,o,c,d,h);super(e,t,i,n,r,u),this.disposables.add(f),this.internals=new yt(this,s,g,s.overrideStyles,o,a,l,c,h),this.disposables.add(this.internals)}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles)}};mt=Fe([Be(6,p.i6),Be(7,We),Be(8,y.XE),Be(9,g.Ui),Be(10,_.d),Be(11,Pe.F)],mt);let _t=class extends Te{constructor(e,t,i,n,r,s,o,a,l,c,d,h){const{options:u,getAutomaticKeyboardNavigation:g,disposable:f}=vt(t,s,o,c,d,h);super(e,t,i,n,r,u),this.disposables.add(f),this.internals=new yt(this,s,g,s.overrideStyles,o,a,l,c,h),this.disposables.add(this.internals)}get onDidOpen(){return this.internals.onDidOpen}updateOptions(e={}){super.updateOptions(e),e.overrideStyles&&this.internals.updateStyleOverrides(e.overrideStyles)}};_t=Fe([Be(6,p.i6),Be(7,We),Be(8,y.XE),Be(9,g.Ui),Be(10,_.d),Be(11,Pe.F)],_t);let bt=class extends Ae{constructor(e,t,i,n,r,s,o,a,l,c,d,h,u){const{options:g,getAutomaticKeyboardNavigation:f,disposable:p}=vt(t,o,a,d,h,u);super(e,t,i,n,r,s,g),this.disposables.add(p),this.internals=new yt(this,o,f,o.overrideStyles,a,l,c,d,u),this.disposables.add(this.internals)}};function vt(e,t,i,n,r,s){Ke.bindTo(i),Ze||(Ge.bindTo(i),Ze=!0);const o=()=>{let e=i.getContextKeyValue(qe);return e&&(e=n.getValue(it)),e},a=s.isScreenReaderOptimized()?"simple":n.getValue(tt),l=void 0!==t.horizontalScrolling?t.horizontalScrolling:n.getValue(et),[c,d]=lt(t,n,r),h=t.additionalScrollHeight;return{getAutomaticKeyboardNavigation:o,disposable:d,options:Object.assign(Object.assign({keyboardSupport:!1},c),{indent:n.getValue(nt),renderIndentGuides:n.getValue(rt),smoothScrolling:n.getValue(st),automaticKeyboardNavigation:o(),simpleKeyboardNavigation:"simple"===a,filterOnType:"filter"===a,horizontalScrolling:l,keyboardNavigationEventFilter:gt(e,r),additionalScrollHeight:h,hideTwistiesOfChildlessElements:t.hideTwistiesOfChildlessElements,expandOnlyOnDoubleClick:"doubleClick"===n.getValue(Xe)})}}bt=Fe([Be(7,p.i6),Be(8,We),Be(9,y.XE),Be(10,g.Ui),Be(11,_.d),Be(12,Pe.F)],bt);let yt=class{constructor(e,t,i,n,r,s,o,a,l){this.tree=e,this.themeService=o,this.disposables=[],this.contextKeyService=Je(r,e),je.bindTo(this.contextKeyService).set(!(!1===t.multipleSelectionSupport)),this.hasSelectionOrFocus=ze.bindTo(this.contextKeyService),this.hasDoubleSelection=Ue.bindTo(this.contextKeyService),this.hasMultiSelection=$e.bindTo(this.contextKeyService),this._useAltAsMultipleSelectionModifier=ot(a);const c=new Set;c.add(qe);const d=()=>{const t=l.isScreenReaderOptimized()?"simple":a.getValue(tt);e.updateOptions({simpleKeyboardNavigation:"simple"===t,filterOnType:"filter"===t})};this.updateStyleOverrides(n),this.disposables.push(this.contextKeyService,s.register(e),e.onDidChangeSelection((()=>{const t=e.getSelection(),i=e.getFocus();this.contextKeyService.bufferChangeEvents((()=>{this.hasSelectionOrFocus.set(t.length>0||i.length>0),this.hasMultiSelection.set(t.length>1),this.hasDoubleSelection.set(2===t.length)}))})),e.onDidChangeFocus((()=>{const t=e.getSelection(),i=e.getFocus();this.hasSelectionOrFocus.set(t.length>0||i.length>0)})),a.onDidChangeConfiguration((n=>{let r={};if(n.affectsConfiguration(Qe)&&(this._useAltAsMultipleSelectionModifier=ot(a)),n.affectsConfiguration(nt)){const e=a.getValue(nt);r=Object.assign(Object.assign({},r),{indent:e})}if(n.affectsConfiguration(rt)){const e=a.getValue(rt);r=Object.assign(Object.assign({},r),{renderIndentGuides:e})}if(n.affectsConfiguration(st)){const e=a.getValue(st);r=Object.assign(Object.assign({},r),{smoothScrolling:e})}if(n.affectsConfiguration(tt)&&d(),n.affectsConfiguration(it)&&(r=Object.assign(Object.assign({},r),{automaticKeyboardNavigation:i()})),n.affectsConfiguration(et)&&void 0===t.horizontalScrolling){const e=a.getValue(et);r=Object.assign(Object.assign({},r),{horizontalScrolling:e})}n.affectsConfiguration(Xe)&&(r=Object.assign(Object.assign({},r),{expandOnlyOnDoubleClick:"doubleClick"===a.getValue(Xe)})),Object.keys(r).length>0&&e.updateOptions(r)})),this.contextKeyService.onDidChangeContext((t=>{t.affectsSome(c)&&e.updateOptions({automaticKeyboardNavigation:i()})})),l.onDidChangeScreenReaderOptimized((()=>d()))),this.navigator=new ut(e,Object.assign({configurationService:a},t)),this.disposables.push(this.navigator)}get onDidOpen(){return this.navigator.onDidOpen}updateStyleOverrides(e){(0,r.B9)(this.styler),this.styler=e?(0,v.Jl)(this.tree,this.themeService,e):r.JT.None}dispose(){this.disposables=(0,r.B9)(this.disposables),(0,r.B9)(this.styler),this.styler=void 0}};yt=Fe([Be(4,p.i6),Be(5,We),Be(6,y.XE),Be(7,g.Ui),Be(8,Pe.F)],yt),b.B.as(f.IP.Configuration).registerConfiguration({id:"workbench",order:7,title:(0,u.N)("workbenchConfigurationTitle","Workbench"),type:"object",properties:{[Qe]:{type:"string",enum:["ctrlCmd","alt"],enumDescriptions:[(0,u.N)("multiSelectModifier.ctrlCmd","Maps to `Control` on Windows and Linux and to `Command` on macOS."),(0,u.N)("multiSelectModifier.alt","Maps to `Alt` on Windows and Linux and to `Option` on macOS.")],default:"ctrlCmd",description:(0,u.N)({key:"multiSelectModifier",comment:["- `ctrlCmd` refers to a value the setting can take and should not be localized.","- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized."]},"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.")},[Xe]:{type:"string",enum:["singleClick","doubleClick"],default:"singleClick",description:(0,u.N)({key:"openModeModifier",comment:["`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized."]},"Controls how to open items in trees and lists using the mouse (if supported). For parents with children in trees, this setting will control if a single click expands the parent or a double click. Note that some trees and lists might choose to ignore this setting if it is not applicable. ")},[et]:{type:"boolean",default:!1,description:(0,u.N)("horizontalScrolling setting","Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.")},[nt]:{type:"number",default:8,minimum:0,maximum:40,description:(0,u.N)("tree indent setting","Controls tree indentation in pixels.")},[rt]:{type:"string",enum:["none","onHover","always"],default:"onHover",description:(0,u.N)("render tree indent guides","Controls whether the tree should render indent guides.")},[st]:{type:"boolean",default:!1,description:(0,u.N)("list smoothScrolling setting","Controls whether lists and trees have smooth scrolling.")},[tt]:{type:"string",enum:["simple","highlight","filter"],enumDescriptions:[(0,u.N)("keyboardNavigationSettingKey.simple","Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes."),(0,u.N)("keyboardNavigationSettingKey.highlight","Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements."),(0,u.N)("keyboardNavigationSettingKey.filter","Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.")],default:"highlight",description:(0,u.N)("keyboardNavigationSettingKey","Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.")},[it]:{type:"boolean",default:!0,markdownDescription:(0,u.N)("automatic keyboard navigation setting","Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut.")}}})},43557:(e,t,i)=>{"use strict";i.d(t,{VZ:()=>o,in:()=>a,d8:()=>d});var n=i(72065),r=i(5976),s=i(4669);const o=(0,n.yh)("logService");var a;!function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Info=2]="Info",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.Off=6]="Off"}(a||(a={}));const l=a.Info;class c extends r.JT{constructor(){super(...arguments),this.level=l,this._onDidChangeLogLevel=this._register(new s.Q5)}setLevel(e){this.level!==e&&(this.level=e,this._onDidChangeLogLevel.fire(this.level))}getLevel(){return this.level}}class d extends c{constructor(e=l){super(),this.setLevel(e)}trace(e,...t){this.getLevel()<=a.Trace&&console.log("%cTRACE","color: #888",e,...t)}info(e,...t){this.getLevel()<=a.Info&&console.log("%c INFO","color: #33f",e,...t)}error(e,...t){this.getLevel()<=a.Error&&console.log("%c ERR","color: #f33",e,...t)}dispose(){}}},98674:(e,t,i)=>{"use strict";i.d(t,{ZL:()=>n,H0:()=>r,lT:()=>l});var n,r,s=i(72065),o=i(63580),a=i(14603);!function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(n||(n={})),function(e){e.compare=function(e,t){return t-e};const t=Object.create(null);t[e.Error]=(0,o.N)("sev.error","Error"),t[e.Warning]=(0,o.N)("sev.warning","Warning"),t[e.Info]=(0,o.N)("sev.info","Info"),e.toString=function(e){return t[e]||""},e.fromSeverity=function(t){switch(t){case a.Z.Error:return e.Error;case a.Z.Warning:return e.Warning;case a.Z.Info:return e.Info;case a.Z.Ignore:return e.Hint}},e.toSeverity=function(t){switch(t){case e.Error:return a.Z.Error;case e.Warning:return a.Z.Warning;case e.Info:return a.Z.Info;case e.Hint:return a.Z.Ignore}}}(n||(n={})),function(e){const t="";function i(e,i){let r=[t];return e.source?r.push(e.source.replace("¦","\\¦")):r.push(t),e.code?"string"==typeof e.code?r.push(e.code.replace("¦","\\¦")):r.push(e.code.value.replace("¦","\\¦")):r.push(t),void 0!==e.severity&&null!==e.severity?r.push(n.toString(e.severity)):r.push(t),e.message&&i?r.push(e.message.replace("¦","\\¦")):r.push(t),void 0!==e.startLineNumber&&null!==e.startLineNumber?r.push(e.startLineNumber.toString()):r.push(t),void 0!==e.startColumn&&null!==e.startColumn?r.push(e.startColumn.toString()):r.push(t),void 0!==e.endLineNumber&&null!==e.endLineNumber?r.push(e.endLineNumber.toString()):r.push(t),void 0!==e.endColumn&&null!==e.endColumn?r.push(e.endColumn.toString()):r.push(t),r.push(t),r.join("¦")}e.makeKey=function(e){return i(e,!0)},e.makeKeyOptionalMessage=i}(r||(r={}));const l=(0,s.yh)("markerService")},59422:(e,t,i)=>{"use strict";i.d(t,{lT:()=>n,EO:()=>r}),i(14603);const n=(0,i(72065).yh)("notificationService");class r{}},50988:(e,t,i)=>{"use strict";i.d(t,{v4:()=>l,SW:()=>c,xn:()=>d});var n=i(70666),r=i(72065),s=i(5976),o=i(97295),a=function(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{l(n.next(e))}catch(e){s(e)}}function a(e){try{l(n.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}l((n=n.apply(e,t||[])).next())}))};const l=(0,r.yh)("openerService"),c=Object.freeze({_serviceBrand:void 0,registerOpener:()=>s.JT.None,registerValidator:()=>s.JT.None,registerExternalUriResolver:()=>s.JT.None,setExternalOpener(){},open(){return a(this,void 0,void 0,(function*(){return!1}))},resolveExternalUri(e){return a(this,void 0,void 0,(function*(){return{resolved:e,dispose(){}}}))}});function d(e,t){return n.o.isUri(e)?(0,o.qq)(e.scheme,t):(0,o.ok)(e,t+":")}},90535:(e,t,i)=>{"use strict";i.d(t,{E:()=>r,e:()=>s});var n=i(72065);class r{constructor(e){this.callback=e}report(e){this._value=e,this.callback(this._value)}}r.None=Object.freeze({report(){}});const s=(0,n.yh)("editorProgressService")},90725:(e,t,i)=>{"use strict";i.d(t,{Ry:()=>n,IP:()=>a});var n,r=i(89872),s=i(9488),o=i(5976);!function(e){e[e.PRESERVE=0]="PRESERVE",e[e.LAST=1]="LAST"}(n||(n={}));const a={Quickaccess:"workbench.contributions.quickaccess"};r.B.add(a.Quickaccess,new class{constructor(){this.providers=[],this.defaultProvider=void 0}registerQuickAccessProvider(e){return 0===e.prefix.length?this.defaultProvider=e:this.providers.push(e),this.providers.sort(((e,t)=>t.prefix.length-e.prefix.length)),(0,o.OF)((()=>{this.providers.splice(this.providers.indexOf(e),1),this.defaultProvider===e&&(this.defaultProvider=void 0)}))}getQuickAccessProviders(){return(0,s.kX)([this.defaultProvider,...this.providers])}getQuickAccessProvider(e){return e&&this.providers.find((t=>e.startsWith(t.prefix)))||this.defaultProvider}})},41157:(e,t,i)=>{"use strict";i.d(t,{jG:()=>r.j,eJ:()=>s});var n=i(72065),r=i(67746);const s=(0,n.yh)("quickInputService")},89872:(e,t,i)=>{"use strict";i.d(t,{B:()=>s});var n=i(98401),r=i(35146);const s=new class{constructor(){this.data=new Map}add(e,t){r.ok(n.HD(e)),r.ok(n.Kn(t)),r.ok(!this.data.has(e),"There is already an extension with this id"),this.data.set(e,t)}as(e){return this.data.get(e)||null}}},52365:(e,t,i)=>{"use strict";i.d(t,{Uy:()=>a,fk:()=>l,vm:()=>c});var n=i(72065),r=i(4669),s=i(5976),o=i(98401);const a=(0,n.yh)("storageService");var l;!function(e){e[e.NONE=0]="NONE",e[e.SHUTDOWN=1]="SHUTDOWN"}(l||(l={}));class c extends s.JT{constructor(){super(...arguments),this._onDidChangeStorage=this._register(new r.Q5),this._onWillSaveState=this._register(new r.Q5),this.onWillSaveState=this._onWillSaveState.event,this.globalCache=new Map,this.workspaceCache=new Map}getCache(e){return 0===e?this.globalCache:this.workspaceCache}get(e,t,i){const n=this.getCache(t).get(e);return(0,o.Jp)(n)?i:n}getBoolean(e,t,i){const n=this.getCache(t).get(e);return(0,o.Jp)(n)?i:"true"===n}getNumber(e,t,i){const n=this.getCache(t).get(e);return(0,o.Jp)(n)?i:parseInt(n,10)}store(e,t,i){if((0,o.Jp)(t))return this.remove(e,i);const n=String(t);return this.getCache(i).get(e)===n||(this.getCache(i).set(e,n),this._onDidChangeStorage.fire({scope:i,key:e})),Promise.resolve()}remove(e,t){return this.getCache(t).delete(e)?(this._onDidChangeStorage.fire({scope:t,key:e}),Promise.resolve()):Promise.resolve()}}},10829:(e,t,i)=>{"use strict";i.d(t,{b:()=>n});const n=(0,i(72065).yh)("telemetryService")},73910:(e,t,i)=>{"use strict";i.d(t,{IP:()=>c,P6:()=>h,dR:()=>u,Id:()=>g,XZ:()=>f,R8:()=>p,lR:()=>m,xL:()=>_,ur:()=>b,Sw:()=>v,rh:()=>y,sE:()=>w,zJ:()=>C,dt:()=>S,PR:()=>k,XE:()=>x,Pv:()=>L,_l:()=>M,YI:()=>D,EP:()=>N,RV:()=>E,SU:()=>T,C3:()=>I,p:()=>O,_t:()=>A,OZ:()=>R,j5:()=>B,b7:()=>W,GO:()=>Y,g8:()=>H,qe:()=>j,_w:()=>V,et:()=>z,AB:()=>U,yn:()=>$,zR:()=>K,lX:()=>q,b6:()=>G,uo:()=>Z,pW:()=>J,c6:()=>Q,T8:()=>X,Du:()=>ee,fE:()=>te,cv:()=>ie,NO:()=>ne,D0:()=>re,Hf:()=>se,D1:()=>oe,Ng:()=>ae,zK:()=>le,tZ:()=>ce,lo:()=>de,kJ:()=>he,op:()=>ue,hE:()=>ge,yb:()=>fe,ES:()=>pe,Rz:()=>me,g_:()=>_e,ny:()=>be,MU:()=>ve,jU:()=>ye,pn:()=>we,Ei:()=>Ce,gk:()=>Se,pt:()=>ke,yJ:()=>xe,Sb:()=>Le,CN:()=>Me,Lo:()=>De,_Y:()=>Ne,Fu:()=>Ee,sK:()=>Te,Cz:()=>Ie,ke:()=>Oe,yp:()=>Ae,P4:()=>Re,XL:()=>Pe,mH:()=>Fe,LL:()=>Be,L_:()=>We,_b:()=>Ye,_2:()=>He,dC:()=>je,M6:()=>Ve,rg:()=>ze,yt:()=>Ue,s$:()=>$e,mV:()=>Ke,$d:()=>qe,AS:()=>Ge,Gw:()=>Ze,vG:()=>Je,oS:()=>Qe,S:()=>Xe,Un:()=>et,Cd:()=>tt,DE:()=>it,Hz:()=>nt,jb:()=>rt,$D:()=>st,E3:()=>ot,ZG:()=>at,u2:()=>lt,Pk:()=>ct,I1:()=>dt,U6:()=>ht,Fm:()=>ut,SP:()=>gt,KT:()=>ft,ov:()=>pt,Gj:()=>mt,Iv:()=>_t,kV:()=>bt,CA:()=>vt,Xy:()=>yt,br:()=>wt,Jp:()=>Ct,BO:()=>St,OL:()=>kt,_j:()=>xt,Zn:()=>Mt,kw:()=>Dt,Sn:()=>Et});var n=i(89872),r=i(41264),s=i(4669),o=i(63580),a=i(81294),l=i(15393);const c={ColorContribution:"base.contributions.colors"},d=new class{constructor(){this._onDidChangeSchema=new s.Q5,this.onDidChangeSchema=this._onDidChangeSchema.event,this.colorSchema={type:"object",properties:{}},this.colorReferenceSchema={type:"string",enum:[],enumDescriptions:[]},this.colorsById={}}registerColor(e,t,i,n=!1,r){let s={id:e,description:i,defaults:t,needsTransparency:n,deprecationMessage:r};this.colorsById[e]=s;let o={type:"string",description:i,format:"color-hex",defaultSnippets:[{body:"${1:#ff0000}"}]};return r&&(o.deprecationMessage=r),this.colorSchema.properties[e]=o,this.colorReferenceSchema.enum.push(e),this.colorReferenceSchema.enumDescriptions.push(i),this._onDidChangeSchema.fire(),e}resolveDefaultColor(e,t){const i=this.colorsById[e];if(i&&i.defaults)return Et(i.defaults[t.type],t)}getColorSchema(){return this.colorSchema}toString(){return Object.keys(this.colorsById).sort(((e,t)=>{let i=-1===e.indexOf(".")?0:1,n=-1===t.indexOf(".")?0:1;return i!==n?i-n:e.localeCompare(t)})).map((e=>`- \`${e}\`: ${this.colorsById[e].description}`)).join("\n")}};function h(e,t,i,n,r){return d.registerColor(e,t,i,n,r)}n.B.add(c.ColorContribution,d);const u=h("foreground",{dark:"#CCCCCC",light:"#616161",hc:"#FFFFFF"},o.N("foreground","Overall foreground color. This color is only used if not overridden by a component.")),g=h("errorForeground",{dark:"#F48771",light:"#A1260D",hc:"#F48771"},o.N("errorForeground","Overall foreground color for error messages. This color is only used if not overridden by a component.")),f=h("icon.foreground",{dark:"#C5C5C5",light:"#424242",hc:"#FFFFFF"},o.N("iconForeground","The default color for icons in the workbench.")),p=h("focusBorder",{dark:"#007FD4",light:"#0090F1",hc:"#F38518"},o.N("focusBorder","Overall border color for focused elements. This color is only used if not overridden by a component.")),m=h("contrastBorder",{light:null,dark:null,hc:"#6FC3DF"},o.N("contrastBorder","An extra border around elements to separate them from others for greater contrast.")),_=h("contrastActiveBorder",{light:null,dark:null,hc:p},o.N("activeContrastBorder","An extra border around active elements to separate them from others for greater contrast.")),b=h("textLink.foreground",{light:"#006AB1",dark:"#3794FF",hc:"#3794FF"},o.N("textLinkForeground","Foreground color for links in text.")),v=h("textCodeBlock.background",{light:"#dcdcdc66",dark:"#0a0a0a66",hc:r.Il.black},o.N("textCodeBlockBackground","Background color for code blocks in text.")),y=h("widget.shadow",{dark:"#000000",light:"#A8A8A8",hc:null},o.N("widgetShadow","Shadow color of widgets such as find/replace inside the editor.")),w=h("input.background",{dark:"#3C3C3C",light:r.Il.white,hc:r.Il.black},o.N("inputBoxBackground","Input box background.")),C=h("input.foreground",{dark:u,light:u,hc:u},o.N("inputBoxForeground","Input box foreground.")),S=h("input.border",{dark:null,light:null,hc:m},o.N("inputBoxBorder","Input box border.")),k=h("inputOption.activeBorder",{dark:"#007ACC00",light:"#007ACC00",hc:m},o.N("inputBoxActiveOptionBorder","Border color of activated options in input fields.")),x=h("inputOption.activeBackground",{dark:Mt(p,.4),light:Mt(p,.2),hc:r.Il.transparent},o.N("inputOption.activeBackground","Background color of activated options in input fields.")),L=h("inputOption.activeForeground",{dark:r.Il.white,light:r.Il.black,hc:null},o.N("inputOption.activeForeground","Foreground color of activated options in input fields.")),M=h("inputValidation.infoBackground",{dark:"#063B49",light:"#D6ECF2",hc:r.Il.black},o.N("inputValidationInfoBackground","Input validation background color for information severity.")),D=h("inputValidation.infoForeground",{dark:null,light:null,hc:null},o.N("inputValidationInfoForeground","Input validation foreground color for information severity.")),N=h("inputValidation.infoBorder",{dark:"#007acc",light:"#007acc",hc:m},o.N("inputValidationInfoBorder","Input validation border color for information severity.")),E=h("inputValidation.warningBackground",{dark:"#352A05",light:"#F6F5D2",hc:r.Il.black},o.N("inputValidationWarningBackground","Input validation background color for warning severity.")),T=h("inputValidation.warningForeground",{dark:null,light:null,hc:null},o.N("inputValidationWarningForeground","Input validation foreground color for warning severity.")),I=h("inputValidation.warningBorder",{dark:"#B89500",light:"#B89500",hc:m},o.N("inputValidationWarningBorder","Input validation border color for warning severity.")),O=h("inputValidation.errorBackground",{dark:"#5A1D1D",light:"#F2DEDE",hc:r.Il.black},o.N("inputValidationErrorBackground","Input validation background color for error severity.")),A=h("inputValidation.errorForeground",{dark:null,light:null,hc:null},o.N("inputValidationErrorForeground","Input validation foreground color for error severity.")),R=h("inputValidation.errorBorder",{dark:"#BE1100",light:"#BE1100",hc:m},o.N("inputValidationErrorBorder","Input validation border color for error severity.")),P=h("dropdown.background",{dark:"#3C3C3C",light:r.Il.white,hc:r.Il.black},o.N("dropdownBackground","Dropdown background.")),F=h("dropdown.foreground",{dark:"#F0F0F0",light:null,hc:r.Il.white},o.N("dropdownForeground","Dropdown foreground.")),B=h("button.foreground",{dark:r.Il.white,light:r.Il.white,hc:r.Il.white},o.N("buttonForeground","Button foreground color.")),W=h("button.background",{dark:"#0E639C",light:"#007ACC",hc:null},o.N("buttonBackground","Button background color.")),Y=h("button.hoverBackground",{dark:Lt(W,.2),light:xt(W,.2),hc:null},o.N("buttonHoverBackground","Button background color when hovering.")),H=h("badge.background",{dark:"#4D4D4D",light:"#C4C4C4",hc:r.Il.black},o.N("badgeBackground","Badge background color. Badges are small information labels, e.g. for search results count.")),j=h("badge.foreground",{dark:r.Il.white,light:"#333",hc:r.Il.white},o.N("badgeForeground","Badge foreground color. Badges are small information labels, e.g. for search results count.")),V=h("scrollbar.shadow",{dark:"#000000",light:"#DDDDDD",hc:null},o.N("scrollbarShadow","Scrollbar shadow to indicate that the view is scrolled.")),z=h("scrollbarSlider.background",{dark:r.Il.fromHex("#797979").transparent(.4),light:r.Il.fromHex("#646464").transparent(.4),hc:Mt(m,.6)},o.N("scrollbarSliderBackground","Scrollbar slider background color.")),U=h("scrollbarSlider.hoverBackground",{dark:r.Il.fromHex("#646464").transparent(.7),light:r.Il.fromHex("#646464").transparent(.7),hc:Mt(m,.8)},o.N("scrollbarSliderHoverBackground","Scrollbar slider background color when hovering.")),$=h("scrollbarSlider.activeBackground",{dark:r.Il.fromHex("#BFBFBF").transparent(.4),light:r.Il.fromHex("#000000").transparent(.6),hc:m},o.N("scrollbarSliderActiveBackground","Scrollbar slider background color when clicked on.")),K=h("progressBar.background",{dark:r.Il.fromHex("#0E70C0"),light:r.Il.fromHex("#0E70C0"),hc:m},o.N("progressBarBackground","Background color of the progress bar that can show for long running operations.")),q=h("editorError.foreground",{dark:"#F48771",light:"#E51400",hc:null},o.N("editorError.foreground","Foreground color of error squigglies in the editor.")),G=h("editorError.border",{dark:null,light:null,hc:r.Il.fromHex("#E47777").transparent(.8)},o.N("errorBorder","Border color of error boxes in the editor.")),Z=h("editorWarning.foreground",{dark:"#CCA700",light:"#E9A700",hc:null},o.N("editorWarning.foreground","Foreground color of warning squigglies in the editor.")),J=h("editorWarning.border",{dark:null,light:null,hc:r.Il.fromHex("#FFCC00").transparent(.8)},o.N("warningBorder","Border color of warning boxes in the editor.")),Q=h("editorInfo.foreground",{dark:"#75BEFF",light:"#75BEFF",hc:null},o.N("editorInfo.foreground","Foreground color of info squigglies in the editor.")),X=h("editorInfo.border",{dark:null,light:null,hc:r.Il.fromHex("#75BEFF").transparent(.8)},o.N("infoBorder","Border color of info boxes in the editor.")),ee=h("editorHint.foreground",{dark:r.Il.fromHex("#eeeeee").transparent(.7),light:"#6c6c6c",hc:null},o.N("editorHint.foreground","Foreground color of hint squigglies in the editor.")),te=h("editorHint.border",{dark:null,light:null,hc:r.Il.fromHex("#eeeeee").transparent(.8)},o.N("hintBorder","Border color of hint boxes in the editor.")),ie=h("editor.background",{light:"#fffffe",dark:"#1E1E1E",hc:r.Il.black},o.N("editorBackground","Editor background color.")),ne=h("editor.foreground",{light:"#333333",dark:"#BBBBBB",hc:r.Il.white},o.N("editorForeground","Editor default foreground color.")),re=h("editorWidget.background",{dark:"#252526",light:"#F3F3F3",hc:"#0C141F"},o.N("editorWidgetBackground","Background color of editor widgets, such as find/replace.")),se=h("editorWidget.foreground",{dark:u,light:u,hc:u},o.N("editorWidgetForeground","Foreground color of editor widgets, such as find/replace.")),oe=h("editorWidget.border",{dark:"#454545",light:"#C8C8C8",hc:m},o.N("editorWidgetBorder","Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.")),ae=h("editorWidget.resizeBorder",{light:null,dark:null,hc:null},o.N("editorWidgetResizeBorder","Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.")),le=h("quickInput.background",{dark:re,light:re,hc:re},o.N("pickerBackground","Quick picker background color. The quick picker widget is the container for pickers like the command palette.")),ce=h("quickInput.foreground",{dark:se,light:se,hc:se},o.N("pickerForeground","Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.")),de=h("quickInputTitle.background",{dark:new r.Il(new r.VS(255,255,255,.105)),light:new r.Il(new r.VS(0,0,0,.06)),hc:"#000000"},o.N("pickerTitleBackground","Quick picker title background color. The quick picker widget is the container for pickers like the command palette.")),he=h("pickerGroup.foreground",{dark:"#3794FF",light:"#0066BF",hc:r.Il.white},o.N("pickerGroupForeground","Quick picker color for grouping labels.")),ue=h("pickerGroup.border",{dark:"#3F3F46",light:"#CCCEDB",hc:r.Il.white},o.N("pickerGroupBorder","Quick picker color for grouping borders.")),ge=h("editor.selectionBackground",{light:"#ADD6FF",dark:"#264F78",hc:"#f3f518"},o.N("editorSelectionBackground","Color of the editor selection.")),fe=h("editor.selectionForeground",{light:null,dark:null,hc:"#000000"},o.N("editorSelectionForeground","Color of the selected text for high contrast.")),pe=h("editor.inactiveSelectionBackground",{light:Mt(ge,.5),dark:Mt(ge,.5),hc:Mt(ge,.5)},o.N("editorInactiveSelection","Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations."),!0),me=h("editor.selectionHighlightBackground",{light:Nt(ge,ie,.3,.6),dark:Nt(ge,ie,.3,.6),hc:null},o.N("editorSelectionHighlight","Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations."),!0),_e=h("editor.selectionHighlightBorder",{light:null,dark:null,hc:_},o.N("editorSelectionHighlightBorder","Border color for regions with the same content as the selection.")),be=h("editor.findMatchBackground",{light:"#A8AC94",dark:"#515C6A",hc:null},o.N("editorFindMatch","Color of the current search match.")),ve=h("editor.findMatchHighlightBackground",{light:"#EA5C0055",dark:"#EA5C0055",hc:null},o.N("findMatchHighlight","Color of the other search matches. The color must not be opaque so as not to hide underlying decorations."),!0),ye=h("editor.findRangeHighlightBackground",{dark:"#3a3d4166",light:"#b4b4b44d",hc:null},o.N("findRangeHighlight","Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),we=h("editor.findMatchBorder",{light:null,dark:null,hc:_},o.N("editorFindMatchBorder","Border color of the current search match.")),Ce=h("editor.findMatchHighlightBorder",{light:null,dark:null,hc:_},o.N("findMatchHighlightBorder","Border color of the other search matches.")),Se=h("editor.findRangeHighlightBorder",{dark:null,light:null,hc:Mt(_,.4)},o.N("findRangeHighlightBorder","Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations."),!0),ke=h("editor.hoverHighlightBackground",{light:"#ADD6FF26",dark:"#264f7840",hc:"#ADD6FF26"},o.N("hoverHighlight","Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations."),!0),xe=h("editorHoverWidget.background",{light:re,dark:re,hc:re},o.N("hoverBackground","Background color of the editor hover.")),Le=h("editorHoverWidget.foreground",{light:se,dark:se,hc:se},o.N("hoverForeground","Foreground color of the editor hover.")),Me=h("editorHoverWidget.border",{light:oe,dark:oe,hc:oe},o.N("hoverBorder","Border color of the editor hover.")),De=h("editorHoverWidget.statusBarBackground",{dark:Lt(xe,.2),light:xt(xe,.05),hc:re},o.N("statusBarBackground","Background color of the editor hover status bar.")),Ne=h("editorLink.activeForeground",{dark:"#4E94CE",light:r.Il.blue,hc:r.Il.cyan},o.N("activeLinkForeground","Color of active links.")),Ee=h("editorLightBulb.foreground",{dark:"#FFCC00",light:"#DDB100",hc:"#FFCC00"},o.N("editorLightBulbForeground","The color used for the lightbulb actions icon.")),Te=h("editorLightBulbAutoFix.foreground",{dark:"#75BEFF",light:"#007ACC",hc:"#75BEFF"},o.N("editorLightBulbAutoFixForeground","The color used for the lightbulb auto fix actions icon.")),Ie=new r.Il(new r.VS(155,185,85,.2)),Oe=new r.Il(new r.VS(255,0,0,.2)),Ae=h("diffEditor.insertedTextBackground",{dark:Ie,light:Ie,hc:null},o.N("diffEditorInserted","Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations."),!0),Re=h("diffEditor.removedTextBackground",{dark:Oe,light:Oe,hc:null},o.N("diffEditorRemoved","Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations."),!0),Pe=h("diffEditor.insertedTextBorder",{dark:null,light:null,hc:"#33ff2eff"},o.N("diffEditorInsertedOutline","Outline color for the text that got inserted.")),Fe=h("diffEditor.removedTextBorder",{dark:null,light:null,hc:"#FF008F"},o.N("diffEditorRemovedOutline","Outline color for text that got removed.")),Be=h("diffEditor.border",{dark:null,light:null,hc:m},o.N("diffEditorBorder","Border color between the two text editors.")),We=h("diffEditor.diagonalFill",{dark:"#cccccc33",light:"#22222233",hc:null},o.N("diffDiagonalFill","Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.")),Ye=h("list.focusBackground",{dark:"#062F4A",light:"#D6EBFF",hc:null},o.N("listFocusBackground","List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),He=h("list.focusForeground",{dark:null,light:null,hc:null},o.N("listFocusForeground","List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),je=h("list.activeSelectionBackground",{dark:"#094771",light:"#0074E8",hc:null},o.N("listActiveSelectionBackground","List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),Ve=h("list.activeSelectionForeground",{dark:r.Il.white,light:r.Il.white,hc:null},o.N("listActiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.")),ze=h("list.inactiveSelectionBackground",{dark:"#37373D",light:"#E4E6F1",hc:null},o.N("listInactiveSelectionBackground","List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Ue=h("list.inactiveSelectionForeground",{dark:null,light:null,hc:null},o.N("listInactiveSelectionForeground","List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),$e=h("list.inactiveFocusBackground",{dark:null,light:null,hc:null},o.N("listInactiveFocusBackground","List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.")),Ke=h("list.hoverBackground",{dark:"#2A2D2E",light:"#F0F0F0",hc:null},o.N("listHoverBackground","List/Tree background when hovering over items using the mouse.")),qe=h("list.hoverForeground",{dark:null,light:null,hc:null},o.N("listHoverForeground","List/Tree foreground when hovering over items using the mouse.")),Ge=h("list.dropBackground",{dark:Ye,light:Ye,hc:null},o.N("listDropBackground","List/Tree drag and drop background when moving items around using the mouse.")),Ze=h("list.highlightForeground",{dark:"#0097fb",light:"#0066BF",hc:p},o.N("highlight","List/Tree foreground color of the match highlights when searching inside the list/tree.")),Je=h("listFilterWidget.background",{light:"#efc1ad",dark:"#653723",hc:r.Il.black},o.N("listFilterWidgetBackground","Background color of the type filter widget in lists and trees.")),Qe=h("listFilterWidget.outline",{dark:r.Il.transparent,light:r.Il.transparent,hc:"#f38518"},o.N("listFilterWidgetOutline","Outline color of the type filter widget in lists and trees.")),Xe=h("listFilterWidget.noMatchesOutline",{dark:"#BE1100",light:"#BE1100",hc:m},o.N("listFilterWidgetNoMatchesOutline","Outline color of the type filter widget in lists and trees, when there are no matches.")),et=h("tree.indentGuidesStroke",{dark:"#585858",light:"#a9a9a9",hc:"#a9a9a9"},o.N("treeIndentGuidesStroke","Tree stroke color for the indentation guides.")),tt=h("menu.border",{dark:null,light:null,hc:m},o.N("menuBorder","Border color of menus.")),it=h("menu.foreground",{dark:F,light:u,hc:F},o.N("menuForeground","Foreground color of menu items.")),nt=h("menu.background",{dark:P,light:P,hc:P},o.N("menuBackground","Background color of menu items.")),rt=h("menu.selectionForeground",{dark:Ve,light:Ve,hc:Ve},o.N("menuSelectionForeground","Foreground color of the selected menu item in menus.")),st=h("menu.selectionBackground",{dark:je,light:je,hc:je},o.N("menuSelectionBackground","Background color of the selected menu item in menus.")),ot=h("menu.selectionBorder",{dark:null,light:null,hc:_},o.N("menuSelectionBorder","Border color of the selected menu item in menus.")),at=h("menu.separatorBackground",{dark:"#BBBBBB",light:"#888888",hc:m},o.N("menuSeparatorBackground","Color of a separator menu item in menus.")),lt=h("editor.snippetTabstopHighlightBackground",{dark:new r.Il(new r.VS(124,124,124,.3)),light:new r.Il(new r.VS(10,50,100,.2)),hc:new r.Il(new r.VS(124,124,124,.3))},o.N("snippetTabstopHighlightBackground","Highlight background color of a snippet tabstop.")),ct=h("editor.snippetTabstopHighlightBorder",{dark:null,light:null,hc:null},o.N("snippetTabstopHighlightBorder","Highlight border color of a snippet tabstop.")),dt=h("editor.snippetFinalTabstopHighlightBackground",{dark:null,light:null,hc:null},o.N("snippetFinalTabstopHighlightBackground","Highlight background color of the final tabstop of a snippet.")),ht=h("editor.snippetFinalTabstopHighlightBorder",{dark:"#525252",light:new r.Il(new r.VS(10,50,100,.5)),hc:"#525252"},o.N("snippetFinalTabstopHighlightBorder","Highlight border color of the final tabstop of a snippet.")),ut=h("editorOverviewRuler.findMatchForeground",{dark:"#d186167e",light:"#d186167e",hc:"#AB5A00"},o.N("overviewRulerFindMatchForeground","Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations."),!0),gt=h("editorOverviewRuler.selectionHighlightForeground",{dark:"#A0A0A0CC",light:"#A0A0A0CC",hc:"#A0A0A0CC"},o.N("overviewRulerSelectionHighlightForeground","Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations."),!0),ft=h("minimap.findMatchHighlight",{light:"#d18616",dark:"#d18616",hc:"#AB5A00"},o.N("minimapFindMatchHighlight","Minimap marker color for find matches."),!0),pt=h("minimap.selectionHighlight",{light:"#ADD6FF",dark:"#264F78",hc:"#ffffff"},o.N("minimapSelectionHighlight","Minimap marker color for the editor selection."),!0),mt=h("minimap.errorHighlight",{dark:new r.Il(new r.VS(255,18,18,.7)),light:new r.Il(new r.VS(255,18,18,.7)),hc:new r.Il(new r.VS(255,50,50,1))},o.N("minimapError","Minimap marker color for errors.")),_t=h("minimap.warningHighlight",{dark:Z,light:Z,hc:J},o.N("overviewRuleWarning","Minimap marker color for warnings.")),bt=h("minimap.background",{dark:null,light:null,hc:null},o.N("minimapBackground","Minimap background color.")),vt=h("minimapSlider.background",{light:Mt(z,.5),dark:Mt(z,.5),hc:Mt(z,.5)},o.N("minimapSliderBackground","Minimap slider background color.")),yt=h("minimapSlider.hoverBackground",{light:Mt(U,.5),dark:Mt(U,.5),hc:Mt(U,.5)},o.N("minimapSliderHoverBackground","Minimap slider background color when hovering.")),wt=h("minimapSlider.activeBackground",{light:Mt($,.5),dark:Mt($,.5),hc:Mt($,.5)},o.N("minimapSliderActiveBackground","Minimap slider background color when clicked on.")),Ct=h("problemsErrorIcon.foreground",{dark:q,light:q,hc:q},o.N("problemsErrorIconForeground","The color used for the problems error icon.")),St=h("problemsWarningIcon.foreground",{dark:Z,light:Z,hc:Z},o.N("problemsWarningIconForeground","The color used for the problems warning icon.")),kt=h("problemsInfoIcon.foreground",{dark:Q,light:Q,hc:Q},o.N("problemsInfoIconForeground","The color used for the problems info icon."));function xt(e,t){return i=>{let n=Et(e,i);if(n)return n.darken(t)}}function Lt(e,t){return i=>{let n=Et(e,i);if(n)return n.lighten(t)}}function Mt(e,t){return i=>{let n=Et(e,i);if(n)return n.transparent(t)}}function Dt(...e){return t=>{for(let i of e){let e=Et(i,t);if(e)return e}}}function Nt(e,t,i,n){return s=>{let o=Et(e,s);if(o){let e=Et(t,s);return e?o.isDarkerThan(e)?r.Il.getLighterColor(o,e,i).transparent(n):r.Il.getDarkerColor(o,e,i).transparent(n):o.transparent(i*n)}}}function Et(e,t){if(null!==e)return"string"==typeof e?"#"===e[0]?r.Il.fromHex(e):t.getColor(e):e instanceof r.Il?e:"function"==typeof e?e(t):void 0}const Tt="vscode://schemas/workbench-colors";let It=n.B.as(a.I.JSONContribution);It.registerSchema(Tt,d.getColorSchema());const Ot=new l.pY((()=>It.notifySchemaChanged(Tt)),200);d.onDidChangeSchema((()=>{Ot.isScheduled()||Ot.schedule()}))},88810:(e,t,i)=>{"use strict";i.d(t,{o:()=>r,WZ:()=>o,Jl:()=>a,O2:()=>l,tj:()=>d});var n=i(73910);function r(e,t){const i=Object.create(null);for(let r in t){const s=t[r];s&&(i[r]=(0,n.Sn)(s,e))}return i}function s(e,t,i){function n(n){const s=r(e.getColorTheme(),t);"function"==typeof i?i(s):i.style(s)}return n(e.getColorTheme()),e.onDidColorThemeChange(n)}function o(e,t,i){return s(t,{badgeBackground:i&&i.badgeBackground||n.g8,badgeForeground:i&&i.badgeForeground||n.qe,badgeBorder:n.lR},e)}function a(e,t,i){return s(t,Object.assign(Object.assign({},l),i||{}),e)}const l={listFocusBackground:n._b,listFocusForeground:n._2,listActiveSelectionBackground:(0,n._j)(n.dC,.1),listActiveSelectionForeground:n.M6,listFocusAndSelectionBackground:n.dC,listFocusAndSelectionForeground:n.M6,listInactiveSelectionBackground:n.rg,listInactiveSelectionForeground:n.yt,listInactiveFocusBackground:n.s$,listHoverBackground:n.mV,listHoverForeground:n.$d,listDropBackground:n.AS,listFocusOutline:n.xL,listSelectionOutline:n.xL,listHoverOutline:n.xL,listFilterWidgetBackground:n.vG,listFilterWidgetOutline:n.oS,listFilterWidgetNoMatchesOutline:n.S,listMatchesShadow:n.rh,treeIndentGuidesStroke:n.Un},c={shadowColor:n.rh,borderColor:n.Cd,foregroundColor:n.DE,backgroundColor:n.Hz,selectionForegroundColor:n.jb,selectionBackgroundColor:n.$D,selectionBorderColor:n.E3,separatorColor:n.ZG};function d(e,t,i){return s(t,Object.assign(Object.assign({},c),i),e)}},97781:(e,t,i)=>{"use strict";i.d(t,{XE:()=>a,EN:()=>l,kS:()=>c,QP:()=>d,m6:()=>h,IP:()=>u,Ic:()=>f,bB:()=>p});var n=i(72065),r=i(5976),s=i(89872),o=i(4669);const a=(0,n.yh)("themeService");function l(e){return{id:e}}var c;!function(e){e.isThemeIcon=function(e){return e&&"object"==typeof e&&"string"==typeof e.id};const t=/^\$\(([a-z.]+\/)?([a-z-~]+)\)$/i;e.fromString=function(e){const i=t.exec(e);if(!i)return;let[,n,r]=i;return n||(n="codicon/"),{id:n+r}};const i=/^(codicon\/)?([a-z-]+)(~[a-z]+)?$/i;e.asClassName=function(e){const t=i.exec(e.id);if(!t)return;let[,,n,r]=t,s=`codicon codicon-${n}`;return r&&(s+=` ${r.substr(1)}`),s}}(c||(c={}));const d="hc";function h(e){switch(e){case"dark":return"vs-dark";case d:return"hc-black";default:return"vs"}}const u={ThemingContribution:"base.contributions.theming"};let g=new class{constructor(){this.themingParticipants=[],this.themingParticipants=[],this.onThemingParticipantAddedEmitter=new o.Q5}onColorThemeChange(e){return this.themingParticipants.push(e),this.onThemingParticipantAddedEmitter.fire(e),(0,r.OF)((()=>{const t=this.themingParticipants.indexOf(e);this.themingParticipants.splice(t,1)}))}getThemingParticipants(){return this.themingParticipants}};function f(e){return g.onColorThemeChange(e)}s.B.add(u.ThemingContribution,g);class p extends r.JT{constructor(e){super(),this.themeService=e,this.theme=e.getColorTheme(),this._register(this.themeService.onDidColorThemeChange((e=>this.onThemeChange(e))))}onThemeChange(e){this.theme=e,this.updateStyles()}updateStyles(){}}},64862:(e,t,i)=>{"use strict";i.d(t,{t:()=>n,Y:()=>r});const n=(0,i(72065).yh)("undoRedoService");class r{constructor(e,t){this.resource=e,this.elements=t}}},37280:(e,t,i)=>{"use strict";i.d(t,{u:()=>s,i:()=>o});var n=i(4669),r=i(5976);const s=(0,i(72065).yh)("IStorageKeysSyncRegistryService");class o extends r.JT{constructor(){super(),this._storageKeys=new Map,this._onDidChangeStorageKeys=this._register(new n.Q5),this._register((0,r.OF)((()=>this._storageKeys.clear())))}get storageKeys(){return[...this._storageKeys.values()]}registerStorageKey(e){this._storageKeys.has(e.key)||(this._storageKeys.set(e.key,e),this._onDidChangeStorageKeys.fire(this.storageKeys))}}},40382:(e,t,i)=>{"use strict";i.d(t,{ec:()=>o,md:()=>c});var n=i(70666),r=i(95935),s=i(72065);i(43702);const o=(0,s.yh)("contextService");var a,l;!function(e){e.isIWorkspace=function(e){return!(!e||"object"!=typeof e||"string"!=typeof e.id||!Array.isArray(e.folders))}}(a||(a={})),function(e){e.isIWorkspaceFolder=function(e){return!(!e||"object"!=typeof e||!n.o.isUri(e.uri)||"string"!=typeof e.name||"function"!=typeof e.toResource)}}(l||(l={}));class c{constructor(e,t){this.raw=t,this.uri=e.uri,this.index=e.index,this.name=e.name}toResource(e){return r.Vo(this.uri,e)}toJSON(){return{uri:this.uri,name:this.name,index:this.index}}}},673:e=>{e.exports=function e(t){"use strict";var i=/^\0+/g,n=/[\0\r\f]/g,r=/: */g,s=/zoo|gra/,o=/([,: ])(transform)/g,a=/,+\s*(?![^(]*[)])/g,l=/ +\s*(?![^(]*[)])/g,c=/ *[\0] */g,d=/,\r+?/g,h=/([\t\r\n ])*\f?&/g,u=/:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g,g=/\W+/g,f=/@(k\w+)\s*(\S*)\s*/,p=/::(place)/g,m=/:(read-only)/g,_=/\s+(?=[{\];=:>])/g,b=/([[}=:>])\s+/g,v=/(\{[^{]+?);(?=\})/g,y=/\s{2,}/g,w=/([^\(])(:+) */g,C=/[svh]\w+-[tblr]{2}/,S=/\(\s*(.*)\s*\)/g,k=/([\s\S]*?);/g,x=/-self|flex-/g,L=/[^]*?(:[rp][el]a[\w-]+)[^]*/,M=/stretch|:\s*\w+\-(?:conte|avail)/,D=/([^-])(image-set\()/,N="-webkit-",E="-moz-",T="-ms-",I=59,O=125,A=123,R=40,P=41,F=10,B=13,W=64,Y=32,H=45,j=42,V=44,z=58,U=47,$=62,K=43,q=126,G=107,Z=1,J=1,Q=0,X=1,ee=1,te=1,ie=0,ne=0,re=0,se=[],oe=[],ae=0,le=null,ce=0,de=1,he="",ue="",ge="";function fe(e,t,r,s,o){for(var a,l,d=0,h=0,u=0,g=0,_=0,b=0,v=0,y=0,C=0,k=0,x=0,L=0,M=0,D=0,E=0,T=0,W=0,ie=0,oe=0,le=r.length,me=le-1,Ce="",Se="",ke="",xe="",Le="",Me="";E<le;){if(v=r.charCodeAt(E),E===me&&h+g+u+d!==0&&(0!==h&&(v=h===U?F:U),g=u=d=0,le++,me++),h+g+u+d===0){if(E===me&&(T>0&&(Se=Se.replace(n,"")),Se.trim().length>0)){switch(v){case Y:case 9:case I:case B:case F:break;default:Se+=r.charAt(E)}v=I}if(1===W)switch(v){case A:case O:case I:case 34:case 39:case R:case P:case V:W=0;case 9:case B:case F:case Y:break;default:for(W=0,oe=E,_=v,E--,v=I;oe<le;)switch(r.charCodeAt(oe++)){case F:case B:case I:++E,v=_,oe=le;break;case z:T>0&&(++E,v=_);case A:oe=le}}switch(v){case A:for(_=(Se=Se.trim()).charCodeAt(0),x=1,oe=++E;E<le;){switch(v=r.charCodeAt(E)){case A:x++;break;case O:x--;break;case U:switch(b=r.charCodeAt(E+1)){case j:case U:E=we(b,E,me,r)}break;case 91:v++;case R:v++;case 34:case 39:for(;E++<me&&r.charCodeAt(E)!==v;);}if(0===x)break;E++}switch(ke=r.substring(oe,E),0===_&&(_=(Se=Se.replace(i,"").trim()).charCodeAt(0)),_){case 64:switch(T>0&&(Se=Se.replace(n,"")),b=Se.charCodeAt(1)){case 100:case 109:case 115:case H:a=t;break;default:a=se}if(oe=(ke=fe(t,a,ke,b,o+1)).length,re>0&&0===oe&&(oe=Se.length),ae>0&&(l=ye(3,ke,a=pe(se,Se,ie),t,J,Z,oe,b,o,s),Se=a.join(""),void 0!==l&&0===(oe=(ke=l.trim()).length)&&(b=0,ke="")),oe>0)switch(b){case 115:Se=Se.replace(S,ve);case 100:case 109:case H:ke=Se+"{"+ke+"}";break;case G:ke=(Se=Se.replace(f,"$1 $2"+(de>0?he:"")))+"{"+ke+"}",ke=1===ee||2===ee&&be("@"+ke,3)?"@"+N+ke+"@"+ke:"@"+ke;break;default:ke=Se+ke,112===s&&(xe+=ke,ke="")}else ke="";break;default:ke=fe(t,pe(t,Se,ie),ke,s,o+1)}Le+=ke,L=0,W=0,D=0,T=0,ie=0,M=0,Se="",ke="",v=r.charCodeAt(++E);break;case O:case I:if((oe=(Se=(T>0?Se.replace(n,""):Se).trim()).length)>1)switch(0===D&&((_=Se.charCodeAt(0))===H||_>96&&_<123)&&(oe=(Se=Se.replace(" ",":")).length),ae>0&&void 0!==(l=ye(1,Se,t,e,J,Z,xe.length,s,o,s))&&0===(oe=(Se=l.trim()).length)&&(Se="\0\0"),_=Se.charCodeAt(0),b=Se.charCodeAt(1),_){case 0:break;case 64:if(105===b||99===b){Me+=Se+r.charAt(E);break}default:if(Se.charCodeAt(oe-1)===z)break;xe+=_e(Se,_,b,Se.charCodeAt(2))}L=0,W=0,D=0,T=0,ie=0,Se="",v=r.charCodeAt(++E)}}switch(v){case B:case F:if(h+g+u+d+ne===0)switch(k){case P:case 39:case 34:case 64:case q:case 62:case j:case 43:case U:case H:case z:case V:case I:case A:case O:break;default:D>0&&(W=1)}h===U?h=0:X+L===0&&s!==G&&Se.length>0&&(T=1,Se+="\0"),ae*ce>0&&ye(0,Se,t,e,J,Z,xe.length,s,o,s),Z=1,J++;break;case I:case O:if(h+g+u+d===0){Z++;break}default:switch(Z++,Ce=r.charAt(E),v){case 9:case Y:if(g+d+h===0)switch(y){case V:case z:case 9:case Y:Ce="";break;default:v!==Y&&(Ce=" ")}break;case 0:Ce="\\0";break;case 12:Ce="\\f";break;case 11:Ce="\\v";break;case 38:g+h+d===0&&X>0&&(ie=1,T=1,Ce="\f"+Ce);break;case 108:if(g+h+d+Q===0&&D>0)switch(E-D){case 2:112===y&&r.charCodeAt(E-3)===z&&(Q=y);case 8:111===C&&(Q=C)}break;case z:g+h+d===0&&(D=E);break;case V:h+u+g+d===0&&(T=1,Ce+="\r");break;case 34:case 39:0===h&&(g=g===v?0:0===g?v:g);break;case 91:g+h+u===0&&d++;break;case 93:g+h+u===0&&d--;break;case P:g+h+d===0&&u--;break;case R:if(g+h+d===0){if(0===L)switch(2*y+3*C){case 533:break;default:x=0,L=1}u++}break;case 64:h+u+g+d+D+M===0&&(M=1);break;case j:case U:if(g+d+u>0)break;switch(h){case 0:switch(2*v+3*r.charCodeAt(E+1)){case 235:h=U;break;case 220:oe=E,h=j}break;case j:v===U&&y===j&&oe+2!==E&&(33===r.charCodeAt(oe+2)&&(xe+=r.substring(oe,E+1)),Ce="",h=0)}}if(0===h){if(X+g+d+M===0&&s!==G&&v!==I)switch(v){case V:case q:case 62:case 43:case P:case R:if(0===L){switch(y){case 9:case Y:case F:case B:Ce+="\0";break;default:Ce="\0"+Ce+(v===V?"":"\0")}T=1}else switch(v){case R:D+7===E&&108===y&&(D=0),L=++x;break;case P:0==(L=--x)&&(T=1,Ce+="\0")}break;case 9:case Y:switch(y){case 0:case A:case O:case I:case V:case 12:case 9:case Y:case F:case B:break;default:0===L&&(T=1,Ce+="\0")}}Se+=Ce,v!==Y&&9!==v&&(k=v)}}C=y,y=v,E++}if(oe=xe.length,re>0&&0===oe&&0===Le.length&&0===t[0].length==0&&(109!==s||1===t.length&&(X>0?ue:ge)===t[0])&&(oe=t.join(",").length+2),oe>0){if(a=0===X&&s!==G?function(e){for(var t,i,r=0,s=e.length,o=Array(s);r<s;++r){for(var a=e[r].split(c),l="",d=0,h=0,u=0,g=0,f=a.length;d<f;++d)if(!(0===(h=(i=a[d]).length)&&f>1)){if(u=l.charCodeAt(l.length-1),g=i.charCodeAt(0),t="",0!==d)switch(u){case j:case q:case $:case K:case Y:case R:break;default:t=" "}switch(g){case 38:i=t+ue;case q:case $:case K:case Y:case P:case R:break;case 91:i=t+i+ue;break;case z:switch(2*i.charCodeAt(1)+3*i.charCodeAt(2)){case 530:if(te>0){i=t+i.substring(8,h-1);break}default:(d<1||a[d-1].length<1)&&(i=t+ue+i)}break;case V:t="";default:i=h>1&&i.indexOf(":")>0?t+i.replace(w,"$1"+ue+"$2"):t+i+ue}l+=i}o[r]=l.replace(n,"").trim()}return o}(t):t,ae>0&&void 0!==(l=ye(2,xe,a,e,J,Z,oe,s,o,s))&&0===(xe=l).length)return Me+xe+Le;if(xe=a.join(",")+"{"+xe+"}",ee*Q!=0){switch(2!==ee||be(xe,2)||(Q=0),Q){case 111:xe=xe.replace(m,":-moz-$1")+xe;break;case 112:xe=xe.replace(p,"::-webkit-input-$1")+xe.replace(p,"::-moz-$1")+xe.replace(p,":-ms-input-$1")+xe}Q=0}}return Me+xe+Le}function pe(e,t,i){var n=t.trim().split(d),r=n,s=n.length,o=e.length;switch(o){case 0:case 1:for(var a=0,l=0===o?"":e[0]+" ";a<s;++a)r[a]=me(l,r[a],i,o).trim();break;default:a=0;var c=0;for(r=[];a<s;++a)for(var h=0;h<o;++h)r[c++]=me(e[h]+" ",n[a],i,o).trim()}return r}function me(e,t,i,n){var r=t,s=r.charCodeAt(0);switch(s<33&&(s=(r=r.trim()).charCodeAt(0)),s){case 38:switch(X+n){case 0:case 1:if(0===e.trim().length)break;default:return r.replace(h,"$1"+e.trim())}break;case z:switch(r.charCodeAt(1)){case 103:if(te>0&&X>0)return r.replace(u,"$1").replace(h,"$1"+ge);break;default:return e.trim()+r.replace(h,"$1"+e.trim())}default:if(i*X>0&&r.indexOf("\f")>0)return r.replace(h,(e.charCodeAt(0)===z?"":"$1")+e.trim())}return e+r}function _e(e,t,i,n){var c,d=0,h=e+";",u=2*t+3*i+4*n;if(944===u)return function(e){var t=e.length,i=e.indexOf(":",9)+1,n=e.substring(0,i).trim(),r=e.substring(i,t-1).trim();switch(e.charCodeAt(9)*de){case 0:break;case H:if(110!==e.charCodeAt(10))break;default:var s=r.split((r="",a)),o=0;for(i=0,t=s.length;o<t;i=0,++o){for(var c=s[o],d=c.split(l);c=d[i];){var h=c.charCodeAt(0);if(1===de&&(h>W&&h<90||h>96&&h<123||95===h||h===H&&c.charCodeAt(1)!==H))switch(isNaN(parseFloat(c))+(-1!==c.indexOf("("))){case 1:switch(c){case"infinite":case"alternate":case"backwards":case"running":case"normal":case"forwards":case"both":case"none":case"linear":case"ease":case"ease-in":case"ease-out":case"ease-in-out":case"paused":case"reverse":case"alternate-reverse":case"inherit":case"initial":case"unset":case"step-start":case"step-end":break;default:c+=he}}d[i++]=c}r+=(0===o?"":",")+d.join(" ")}}return r=n+r+";",1===ee||2===ee&&be(r,1)?N+r+r:r}(h);if(0===ee||2===ee&&!be(h,1))return h;switch(u){case 1015:return 97===h.charCodeAt(10)?N+h+h:h;case 951:return 116===h.charCodeAt(3)?N+h+h:h;case 963:return 110===h.charCodeAt(5)?N+h+h:h;case 1009:if(100!==h.charCodeAt(4))break;case 969:case 942:return N+h+h;case 978:return N+h+E+h+h;case 1019:case 983:return N+h+E+h+T+h+h;case 883:return h.charCodeAt(8)===H?N+h+h:h.indexOf("image-set(",11)>0?h.replace(D,"$1-webkit-$2")+h:h;case 932:if(h.charCodeAt(4)===H)switch(h.charCodeAt(5)){case 103:return N+"box-"+h.replace("-grow","")+N+h+T+h.replace("grow","positive")+h;case 115:return N+h+T+h.replace("shrink","negative")+h;case 98:return N+h+T+h.replace("basis","preferred-size")+h}return N+h+T+h+h;case 964:return N+h+T+"flex-"+h+h;case 1023:if(99!==h.charCodeAt(8))break;return c=h.substring(h.indexOf(":",15)).replace("flex-","").replace("space-between","justify"),N+"box-pack"+c+N+h+T+"flex-pack"+c+h;case 1005:return s.test(h)?h.replace(r,":"+N)+h.replace(r,":"+E)+h:h;case 1e3:switch(d=(c=h.substring(13).trim()).indexOf("-")+1,c.charCodeAt(0)+c.charCodeAt(d)){case 226:c=h.replace(C,"tb");break;case 232:c=h.replace(C,"tb-rl");break;case 220:c=h.replace(C,"lr");break;default:return h}return N+h+T+c+h;case 1017:if(-1===h.indexOf("sticky",9))return h;case 975:switch(d=(h=e).length-10,u=(c=(33===h.charCodeAt(d)?h.substring(0,d):h).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|c.charCodeAt(7))){case 203:if(c.charCodeAt(8)<111)break;case 115:h=h.replace(c,N+c)+";"+h;break;case 207:case 102:h=h.replace(c,N+(u>102?"inline-":"")+"box")+";"+h.replace(c,N+c)+";"+h.replace(c,T+c+"box")+";"+h}return h+";";case 938:if(h.charCodeAt(5)===H)switch(h.charCodeAt(6)){case 105:return c=h.replace("-items",""),N+h+N+"box-"+c+T+"flex-"+c+h;case 115:return N+h+T+"flex-item-"+h.replace(x,"")+h;default:return N+h+T+"flex-line-pack"+h.replace("align-content","").replace(x,"")+h}break;case 973:case 989:if(h.charCodeAt(3)!==H||122===h.charCodeAt(4))break;case 931:case 953:if(!0===M.test(e))return 115===(c=e.substring(e.indexOf(":")+1)).charCodeAt(0)?_e(e.replace("stretch","fill-available"),t,i,n).replace(":fill-available",":stretch"):h.replace(c,N+c)+h.replace(c,E+c.replace("fill-",""))+h;break;case 962:if(h=N+h+(102===h.charCodeAt(5)?T+h:"")+h,i+n===211&&105===h.charCodeAt(13)&&h.indexOf("transform",10)>0)return h.substring(0,h.indexOf(";",27)+1).replace(o,"$1-webkit-$2")+h}return h}function be(e,t){var i=e.indexOf(1===t?":":"{"),n=e.substring(0,3!==t?i:10),r=e.substring(i+1,e.length-1);return le(2!==t?n:n.replace(L,"$1"),r,t)}function ve(e,t){var i=_e(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return i!==t+";"?i.replace(k," or ($1)").substring(4):"("+t+")"}function ye(e,t,i,n,r,s,o,a,l,c){for(var d,h=0,u=t;h<ae;++h)switch(d=oe[h].call(Se,e,u,i,n,r,s,o,a,l,c)){case void 0:case!1:case!0:case null:break;default:u=d}if(u!==t)return u}function we(e,t,i,n){for(var r=t+1;r<i;++r)switch(n.charCodeAt(r)){case U:if(e===j&&n.charCodeAt(r-1)===j&&t+2!==r)return r+1;break;case F:if(e===U)return r+1}return r}function Ce(e){for(var t in e){var i=e[t];switch(t){case"keyframe":de=0|i;break;case"global":te=0|i;break;case"cascade":X=0|i;break;case"compress":ie=0|i;break;case"semicolon":ne=0|i;break;case"preserve":re=0|i;break;case"prefix":le=null,i?"function"!=typeof i?ee=1:(ee=2,le=i):ee=0}}return Ce}function Se(t,i){if(void 0!==this&&this.constructor===Se)return e(t);var r=t,s=r.charCodeAt(0);s<33&&(s=(r=r.trim()).charCodeAt(0)),de>0&&(he=r.replace(g,91===s?"":"-")),s=1,1===X?ge=r:ue=r;var o,a=[ge];ae>0&&void 0!==(o=ye(-1,i,a,a,J,Z,0,0,0,0))&&"string"==typeof o&&(i=o);var l=fe(se,a,i,0,0);return ae>0&&void 0!==(o=ye(-2,l,a,a,J,Z,l.length,0,0,0))&&"string"!=typeof(l=o)&&(s=0),he="",ge="",ue="",Q=0,J=1,Z=1,ie*s==0?l:function(e){return e.replace(n,"").replace(_,"").replace(b,"$1").replace(v,"$1").replace(y," ")}(l)}return Se.use=function e(t){switch(t){case void 0:case null:ae=oe.length=0;break;default:if("function"==typeof t)oe[ae++]=t;else if("object"==typeof t)for(var i=0,n=t.length;i<n;++i)e(t[i]);else ce=0|!!t}return e},Se.set=Ce,void 0!==t&&Ce(t),Se}(null)},73466:(e,t,i)=>{"use strict";function n(){}function r(e,t){for(const i in t)e[i]=t[i];return e}function s(e){return e()}function o(){return Object.create(null)}function a(e){e.forEach(s)}function l(e){return"function"==typeof e}function c(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function d(e){return 0===Object.keys(e).length}function h(e,...t){if(null==e)return n;const i=e.subscribe(...t);return i.unsubscribe?()=>i.unsubscribe():i}function u(e){let t;return h(e,(e=>t=e))(),t}function g(e,t,i,n){if(e){const r=f(e,t,i,n);return e[0](r)}}function f(e,t,i,n){return e[1]&&n?r(i.ctx.slice(),e[1](n(t))):i.ctx}function p(e,t,i,n,r,s,o){const a=function(e,t,i,n){if(e[2]&&n){const r=e[2](n(i));if(void 0===t.dirty)return r;if("object"==typeof r){const e=[],i=Math.max(t.dirty.length,r.length);for(let n=0;n<i;n+=1)e[n]=t.dirty[n]|r[n];return e}return t.dirty|r}return t.dirty}(t,n,r,s);if(a){const r=f(t,i,n,o);e.p(r,a)}}function m(e){return null==e?"":e}function _(e){return e&&l(e.destroy)?e.destroy:n}new Set;let b=!1;const v=new Set;function y(e,t){b&&v.delete(t),t.parentNode!==e&&e.appendChild(t)}function w(e,t,i){b&&v.delete(t),(t.parentNode!==e||i&&t.nextSibling!==i)&&e.insertBefore(t,i||null)}function C(e){b?v.add(e):e.parentNode&&e.parentNode.removeChild(e)}function S(e,t){for(let i=0;i<e.length;i+=1)e[i]&&e[i].d(t)}function k(e){return document.createElement(e)}function x(e){return document.createTextNode(e)}function L(){return x(" ")}function M(){return x("")}function D(e,t,i,n){return e.addEventListener(t,i,n),()=>e.removeEventListener(t,i,n)}function N(e,t,i){null==i?e.removeAttribute(t):e.getAttribute(t)!==i&&e.setAttribute(t,i)}function E(e){return""===e?null:+e}function T(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function I(e,t){e.value=null==t?"":t}let O;function A(e){O=e}function R(){if(!O)throw new Error("Function called outside component initialization");return O}function P(e){R().$$.on_mount.push(e)}function F(e,t){const i=e.$$.callbacks[t.type];i&&i.slice().forEach((e=>e(t)))}new Set;const B=[],W=[],Y=[],H=[],j=Promise.resolve();let V=!1;function z(){V||(V=!0,j.then(G))}function U(){return z(),j}function $(e){Y.push(e)}let K=!1;const q=new Set;function G(){if(!K){K=!0;do{for(let e=0;e<B.length;e+=1){const t=B[e];A(t),Z(t.$$)}for(A(null),B.length=0;W.length;)W.pop()();for(let e=0;e<Y.length;e+=1){const t=Y[e];q.has(t)||(q.add(t),t())}Y.length=0}while(B.length);for(;H.length;)H.pop()();V=!1,K=!1,q.clear()}}function Z(e){if(null!==e.fragment){e.update(),a(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach($)}}const J=new Set;let Q,X;function ee(){Q={r:0,c:[],p:Q}}function te(){Q.r||a(Q.c),Q=Q.p}function ie(e,t){e&&e.i&&(J.delete(e),e.i(t))}function ne(e,t,i,n){if(e&&e.o){if(J.has(e))return;J.add(e),Q.c.push((()=>{J.delete(e),n&&(i&&e.d(1),n())})),e.o(t)}}function re(e,t){const i={},n={},r={$$scope:1};let s=e.length;for(;s--;){const o=e[s],a=t[s];if(a){for(const e in o)e in a||(n[e]=1);for(const e in a)r[e]||(i[e]=a[e],r[e]=1);e[s]=a}else for(const e in o)r[e]=1}for(const e in n)e in i||(i[e]=void 0);return i}function se(e){return"object"==typeof e&&null!==e?e:{}}function oe(e){e&&e.c()}function ae(e,t,i,n){const{fragment:r,on_mount:o,on_destroy:c,after_update:d}=e.$$;r&&r.m(t,i),n||$((()=>{const t=o.map(s).filter(l);c?c.push(...t):a(t),e.$$.on_mount=[]})),d.forEach($)}function le(e,t){const i=e.$$;null!==i.fragment&&(a(i.on_destroy),i.fragment&&i.fragment.d(t),i.on_destroy=i.fragment=null,i.ctx=[])}function ce(e,t,i,r,s,l,c=[-1]){const d=O;A(e);const h=e.$$={fragment:null,ctx:null,props:l,update:n,not_equal:s,bound:o(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(d?d.$$.context:t.context||[]),callbacks:o(),dirty:c,skip_bound:!1};let u=!1;if(h.ctx=i?i(e,t.props||{},((t,i,...n)=>{const r=n.length?n[0]:i;return h.ctx&&s(h.ctx[t],h.ctx[t]=r)&&(!h.skip_bound&&h.bound[t]&&h.bound[t](r),u&&function(e,t){-1===e.$$.dirty[0]&&(B.push(e),z(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}(e,t)),i})):[],h.update(),u=!0,a(h.before_update),h.fragment=!!r&&r(h.ctx),t.target){if(t.hydrate){b=!0;const e=(g=t.target,Array.from(g.childNodes));h.fragment&&h.fragment.l(e),e.forEach(C)}else h.fragment&&h.fragment.c();t.intro&&ie(e.$$.fragment),ae(e,t.target,t.anchor,t.customElement),function(){b=!1;for(const e of v)e.parentNode.removeChild(e);v.clear()}(),G()}var g;A(d)}"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:global,new Set(["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"]),"function"==typeof HTMLElement&&(X=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){const{on_mount:e}=this.$$;this.$$.on_disconnect=e.map(s).filter(l);for(const e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(e,t,i){this[e]=i}disconnectedCallback(){a(this.$$.on_disconnect)}$destroy(){le(this,1),this.$destroy=n}$on(e,t){const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}$set(e){this.$$set&&!d(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}});class de{$destroy(){le(this,1),this.$destroy=n}$on(e,t){const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}$set(e){this.$$set&&!d(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const he=[];function ue(e,t){return{subscribe:ge(e,t).subscribe}}function ge(e,t=n){let i;const r=[];function s(t){if(c(e,t)&&(e=t,i)){const t=!he.length;for(let t=0;t<r.length;t+=1){const i=r[t];i[1](),he.push(i,e)}if(t){for(let e=0;e<he.length;e+=2)he[e][0](he[e+1]);he.length=0}}}return{set:s,update:function(t){s(t(e))},subscribe:function(o,a=n){const l=[o,a];return r.push(l),1===r.length&&(i=t(s)||n),o(e),()=>{const e=r.indexOf(l);-1!==e&&r.splice(e,1),0===r.length&&(i(),i=null)}}}}function fe(e,t,i){const r=!Array.isArray(e),s=r?[e]:e,o=t.length<2;return ue(i,(e=>{let i=!1;const c=[];let d=0,u=n;const g=()=>{if(d)return;u();const i=t(r?c[0]:c,e);o?e(i):u=l(i)?i:n},f=s.map(((e,t)=>h(e,(e=>{c[t]=e,d&=~(1<<t),i&&g()}),(()=>{d|=1<<t}))));return i=!0,g(),function(){a(f),u()}}))}function pe(e){let t,i,n;const s=[e[2]];var o=e[0];function a(e){let t={};for(let e=0;e<s.length;e+=1)t=r(t,s[e]);return{props:t}}return o&&(t=new o(a()),t.$on("routeEvent",e[7])),{c(){t&&oe(t.$$.fragment),i=M()},m(e,r){t&&ae(t,e,r),w(e,i,r),n=!0},p(e,n){const r=4&n?re(s,[se(e[2])]):{};if(o!==(o=e[0])){if(t){ee();const e=t;ne(e.$$.fragment,1,0,(()=>{le(e,1)})),te()}o?(t=new o(a()),t.$on("routeEvent",e[7]),oe(t.$$.fragment),ie(t.$$.fragment,1),ae(t,i.parentNode,i)):t=null}else o&&t.$set(r)},i(e){n||(t&&ie(t.$$.fragment,e),n=!0)},o(e){t&&ne(t.$$.fragment,e),n=!1},d(e){e&&C(i),t&&le(t,e)}}}function me(e){let t,i,n;const s=[{params:e[1]},e[2]];var o=e[0];function a(e){let t={};for(let e=0;e<s.length;e+=1)t=r(t,s[e]);return{props:t}}return o&&(t=new o(a()),t.$on("routeEvent",e[6])),{c(){t&&oe(t.$$.fragment),i=M()},m(e,r){t&&ae(t,e,r),w(e,i,r),n=!0},p(e,n){const r=6&n?re(s,[2&n&&{params:e[1]},4&n&&se(e[2])]):{};if(o!==(o=e[0])){if(t){ee();const e=t;ne(e.$$.fragment,1,0,(()=>{le(e,1)})),te()}o?(t=new o(a()),t.$on("routeEvent",e[6]),oe(t.$$.fragment),ie(t.$$.fragment,1),ae(t,i.parentNode,i)):t=null}else o&&t.$set(r)},i(e){n||(t&&ie(t.$$.fragment,e),n=!0)},o(e){t&&ne(t.$$.fragment,e),n=!1},d(e){e&&C(i),t&&le(t,e)}}}function _e(e){let t,i,n,r;const s=[me,pe],o=[];function a(e,t){return e[1]?0:1}return t=a(e),i=o[t]=s[t](e),{c(){i.c(),n=M()},m(e,i){o[t].m(e,i),w(e,n,i),r=!0},p(e,[r]){let l=t;t=a(e),t===l?o[t].p(e,r):(ee(),ne(o[l],1,1,(()=>{o[l]=null})),te(),i=o[t],i?i.p(e,r):(i=o[t]=s[t](e),i.c()),ie(i,1),i.m(n.parentNode,n))},i(e){r||(ie(i),r=!0)},o(e){ne(i),r=!1},d(e){o[t].d(e),e&&C(n)}}}function be(){const e=window.location.href.indexOf("#/");let t=e>-1?window.location.href.substr(e+1):"/";const i=t.indexOf("?");let n="";return i>-1&&(n=t.substr(i+1),t=t.substr(0,i)),{location:t,querystring:n}}const ve=ue(null,(function(e){e(be());const t=()=>{e(be())};return window.addEventListener("hashchange",t,!1),function(){window.removeEventListener("hashchange",t,!1)}})),ye=fe(ve,(e=>e.location));function we(e,t,i){let{routes:n={}}=t,{prefix:r=""}=t,{restoreScrollState:s=!1}=t;class o{constructor(e,t){if(!t||"function"!=typeof t&&("object"!=typeof t||!0!==t._sveltesparouter))throw Error("Invalid component object");if(!e||"string"==typeof e&&(e.length<1||"/"!=e.charAt(0)&&"*"!=e.charAt(0))||"object"==typeof e&&!(e instanceof RegExp))throw Error('Invalid value for "path" argument - strings must start with / or *');const{pattern:i,keys:n}=function(e,t){if(e instanceof RegExp)return{keys:!1,pattern:e};var i,n,r,s,o=[],a="",l=e.split("/");for(l[0]||l.shift();r=l.shift();)"*"===(i=r[0])?(o.push("wild"),a+="/(.*)"):":"===i?(n=r.indexOf("?",1),s=r.indexOf(".",1),o.push(r.substring(1,~n?n:~s?s:r.length)),a+=~n&&!~s?"(?:/([^/]+?))?":"/([^/]+?)",~s&&(a+=(~n?"?":"")+"\\"+r.substring(s))):a+="/"+r;return{keys:o,pattern:new RegExp("^"+a+"/?$","i")}}(e);this.path=e,"object"==typeof t&&!0===t._sveltesparouter?(this.component=t.component,this.conditions=t.conditions||[],this.userData=t.userData,this.props=t.props||{}):(this.component=()=>Promise.resolve(t),this.conditions=[],this.props={}),this._pattern=i,this._keys=n}match(e){if(r)if("string"==typeof r){if(!e.startsWith(r))return null;e=e.substr(r.length)||"/"}else if(r instanceof RegExp){const t=e.match(r);if(!t||!t[0])return null;e=e.substr(t[0].length)||"/"}const t=this._pattern.exec(e);if(null===t)return null;if(!1===this._keys)return t;const i={};let n=0;for(;n<this._keys.length;){try{i[this._keys[n]]=decodeURIComponent(t[n+1]||"")||null}catch(e){i[this._keys[n]]=null}n++}return i}async checkConditions(e){for(let t=0;t<this.conditions.length;t++)if(!await this.conditions[t](e))return!1;return!0}}const a=[];n instanceof Map?n.forEach(((e,t)=>{a.push(new o(t,e))})):Object.keys(n).forEach((e=>{a.push(new o(e,n[e]))}));let l=null,c=null,d={};const h=function(){const e=R();return(t,i)=>{const n=e.$$.callbacks[t];if(n){const r=function(e,t){const i=document.createEvent("CustomEvent");return i.initCustomEvent(e,!1,!1,t),i}(t,i);n.slice().forEach((t=>{t.call(e,r)}))}}}();async function u(e,t){await U(),h(e,t)}let g=null;var f;s&&(window.addEventListener("popstate",(e=>{g=e.state&&e.state.scrollY?e.state:null})),f=()=>{g?window.scrollTo(g.scrollX,g.scrollY):window.scrollTo(0,0)},R().$$.after_update.push(f));let p=null,m=null;return ve.subscribe((async e=>{p=e;let t=0;for(;t<a.length;){const n=a[t].match(e.location);if(!n){t++;continue}const r={route:a[t].path,location:e.location,querystring:e.querystring,userData:a[t].userData};if(!await a[t].checkConditions(r))return i(0,l=null),m=null,void u("conditionsFailed",r);u("routeLoading",Object.assign({},r));const s=a[t].component;if(m!=s){s.loading?(i(0,l=s.loading),m=s,i(1,c=s.loadingParams),i(2,d={}),u("routeLoaded",Object.assign({},r,{component:l,name:l.name}))):(i(0,l=null),m=null);const t=await s();if(e!=p)return;i(0,l=t&&t.default||t),m=s}return n&&"object"==typeof n&&Object.keys(n).length?i(1,c=n):i(1,c=null),i(2,d=a[t].props),void u("routeLoaded",Object.assign({},r,{component:l,name:l.name}))}i(0,l=null),m=null})),e.$$set=e=>{"routes"in e&&i(3,n=e.routes),"prefix"in e&&i(4,r=e.prefix),"restoreScrollState"in e&&i(5,s=e.restoreScrollState)},e.$$.update=()=>{32&e.$$.dirty&&(history.scrollRestoration=s?"manual":"auto")},[l,c,d,n,r,s,function(t){F(e,t)},function(t){F(e,t)}]}fe(ve,(e=>e.querystring));const Ce=class extends de{constructor(e){super(),ce(this,e,we,_e,c,{routes:3,prefix:4,restoreScrollState:5})}},Se="function"==typeof atob,ke="function"==typeof btoa,xe="function"==typeof Buffer,Le="function"==typeof TextDecoder?new TextDecoder:void 0,Me="function"==typeof TextEncoder?new TextEncoder:void 0,De=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="],Ne=(e=>{let t={};return e.forEach(((e,i)=>t[e]=i)),t})(De),Ee=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Te=String.fromCharCode.bind(String),Ie="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):(e,t=(e=>e))=>new Uint8Array(Array.prototype.slice.call(e,0).map(t)),Oe=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),Ae=ke?e=>btoa(e):xe?e=>Buffer.from(e,"binary").toString("base64"):e=>{let t,i,n,r,s="";const o=e.length%3;for(let o=0;o<e.length;){if((i=e.charCodeAt(o++))>255||(n=e.charCodeAt(o++))>255||(r=e.charCodeAt(o++))>255)throw new TypeError("invalid character found");t=i<<16|n<<8|r,s+=De[t>>18&63]+De[t>>12&63]+De[t>>6&63]+De[63&t]}return o?s.slice(0,o-3)+"===".substring(o):s},Re=xe?e=>Buffer.from(e).toString("base64"):e=>{let t=[];for(let i=0,n=e.length;i<n;i+=4096)t.push(Te.apply(null,e.subarray(i,i+4096)));return Ae(t.join(""))},Pe=e=>{if(e.length<2)return(t=e.charCodeAt(0))<128?e:t<2048?Te(192|t>>>6)+Te(128|63&t):Te(224|t>>>12&15)+Te(128|t>>>6&63)+Te(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return Te(240|t>>>18&7)+Te(128|t>>>12&63)+Te(128|t>>>6&63)+Te(128|63&t)},Fe=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,Be=xe?e=>Buffer.from(e,"utf8").toString("base64"):Me?e=>Re(Me.encode(e)):e=>Ae(e.replace(Fe,Pe)),We=(e,t=!1)=>t?(e=>e.replace(/[+\/]/g,(e=>"+"==e?"-":"_")).replace(/=+$/m,""))(Be(e)):Be(e),Ye=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,He=e=>{switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return Te(55296+(t>>>10))+Te(56320+(1023&t));case 3:return Te((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return Te((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},je=Se?e=>atob(Oe(e)):xe?e=>Buffer.from(e,"base64").toString("binary"):e=>{if(e=e.replace(/\s+/g,""),!Ee.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(3&e.length));let t,i,n,r="";for(let s=0;s<e.length;)t=Ne[e.charAt(s++)]<<18|Ne[e.charAt(s++)]<<12|(i=Ne[e.charAt(s++)])<<6|(n=Ne[e.charAt(s++)]),r+=64===i?Te(t>>16&255):64===n?Te(t>>16&255,t>>8&255):Te(t>>16&255,t>>8&255,255&t);return r},Ve=xe?e=>Ie(Buffer.from(e,"base64")):e=>Ie(je(e),(e=>e.charCodeAt(0))),ze=xe?e=>Buffer.from(e,"base64").toString("utf8"):Le?e=>Le.decode(Ve(e)):e=>je(e).replace(Ye,He),Ue=We,$e=e=>We(e,!0),Ke=e=>ze(Oe(e.replace(/[-_]/g,(e=>"-"==e?"+":"/")))),qe={code:"graph TD\n A[Christmas] --\x3e|Get money| B(Go shopping)\n B --\x3e C{Let me think}\n C --\x3e|One| D[Laptop]\n C --\x3e|Two| E[iPhone]\n C --\x3e|Three| F[fa:fa-car Car]\n ",mermaid:{theme:(window.matchMedia("(prefers-color-scheme: dark)").matches,"default")}},Ge=ge(qe),Ze=(e,t)=>{const i=u(Ge);Ge.set({...i,code:e,updateEditor:t})},Je=(Ge.subscribe((e=>{!async function(e){if(!e||e.length<1||"/"!=e.charAt(0)&&0!==e.indexOf("#/"))throw Error("Invalid parameter location");await U();const t=("#"==e.charAt(0)?"":"#")+e;try{window.history.replaceState(void 0,void 0,t)}catch(e){console.warn("Caught exception while replacing the current page. If you're running this in the Svelte REPL, please note that the `replace` method might not work in this environment.")}window.dispatchEvent(new Event("hashchange"))}(`/${u(ye).split("/")[1]||"edit"}/`+$e(JSON.stringify(e)))})),ge(void 0)),Qe=ge(void 0);var Xe=i(21140),et=i.n(Xe);function tt(e){let t,i,n;return{c(){t=k("div"),i=x(e[1]),N(t,"id","error"),N(t,"class",n=m(e[0])+" svelte-104hor5")},m(e,n){w(e,t,n),y(t,i)},p(e,r){2&r&&T(i,e[1]),1&r&&n!==(n=m(e[0])+" svelte-104hor5")&&N(t,"class",n)},d(e){e&&C(t)}}}function it(e){let t,i=e[1]&&tt(e);return{c(){i&&i.c(),t=M()},m(e,n){i&&i.m(e,n),w(e,t,n)},p(e,[n]){e[1]?i?i.p(e,n):(i=tt(e),i.c(),i.m(t.parentNode,t)):i&&(i.d(1),i=null)},i:n,o:n,d(e){i&&i.d(e),e&&C(t)}}}function nt(e,t,i){let n,{classes:r=""}=t,{errorStore:s}=t;return s.subscribe((e=>{i(1,n=!!e&&e.toString())})),e.$$set=e=>{"classes"in e&&i(0,r=e.classes),"errorStore"in e&&i(2,s=e.errorStore)},[r,n,s]}const rt=class extends de{constructor(e){super(),ce(this,e,nt,it,c,{classes:0,errorStore:2})}},st=e=>{e.languages.register({id:"mermaid"}),e.languages.setMonarchTokensProvider("mermaid",{typeKeywords:["graph","stateDiagram","sequenceDiagram","classDiagram","pie","flowchart","gantt"],keywords:["patricipant","as"],arrows:["---","===","--\x3e","==>"],tokenizer:{root:[[/[{}]/,"delimiter.bracket"],[/[a-z_$][\w$]*/,{cases:{"@typeKeywords":"keyword","@keywords":"keyword"}}],[/[-=>ox]+/,{cases:{"@arrows":"transition"}}],[/[\[\{\(}]+.+?[\)\]\}]+/,"string"],[/\".*\"/,"string"]]},whitespace:[[/[ \t\r\n]+/,"white"],[/\%\%.*$/,"comment"]]}),e.editor.defineTheme("myCoolTheme",{base:"vs",inherit:!1,rules:[{token:"keyword",foreground:"880000",fontStyle:"bold"},{token:"custom-error",foreground:"ff0000",fontStyle:"bold"},{token:"string",foreground:"AA8500"},{token:"transition",foreground:"008800",fontStyle:"bold"},{token:"delimiter.bracket",foreground:"000000",fontStyle:"bold"}]}),e.languages.registerCompletionItemProvider("mermaid",{provideCompletionItems:()=>({suggestions:[{label:"simpleText",kind:e.languages.CompletionItemKind.Text,insertText:"simpleText"},{label:"testing",kind:e.languages.CompletionItemKind.Keyword,insertText:"testing(${1:condition})",insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet},{label:"ifelse",kind:e.languages.CompletionItemKind.Snippet,insertText:["if (${1:condition}) {","\t$0","} else {","\t","}"].join("\n"),insertTextRules:e.languages.CompletionItemInsertTextRule.InsertAsSnippet,documentation:"If-Else Statement"}]})})},ot=e=>t=>e&&e.layout();var at=i(36640),lt=i(63844),ct=i.n(lt)()({strategy:"scroll"});function dt(e,t){ct.listenTo(e,t);var i=t;return{update:function(t){ct.removeListener(e,i),ct.listenTo(e,t),i=t},destroy:function(){ct.removeListener(e,i)}}}function ht(e){let t,i,n,r,s,o,a,c;return s=new rt({props:{errorStore:Je}}),{c(){t=k("div"),i=k("div"),r=L(),oe(s.$$.fragment),N(i,"id","editor"),N(i,"class","svelte-129q4vv"),N(t,"id","editor-container")},m(l,d){w(l,t,d),y(t,i),y(t,r),ae(s,t,null),o=!0,a||(c=_(n=dt.call(null,i,e[0])),a=!0)},p(e,[t]){n&&l(n.update)&&1&t&&n.update.call(null,e[0])},i(e){o||(ie(s.$$.fragment,e),o=!0)},o(e){ne(s.$$.fragment,e),o=!1},d(e){e&&C(t),le(s),a=!1,c()}}}function ut(e,t,i){let n;const r=[];let s=null,o=()=>{};const a=(e,t)=>{try{et().parse(e),n&&(t&&n.setValue(e),r.forEach((e=>{n.deltaDecorations(e,[])}))),Ze(e,!1),Je.set(void 0)}catch(e){Je.set("Syntax Error"),console.log("Error in parsed",e.hash),e.hash.line,r.push(n.deltaDecorations([],[{range:new at.Range(e.hash.loc.first_line,e.hash.loc.last_line,e.hash.loc.first_column,e.hash.loc.last_column),options:{inlineClassName:"myInlineDecoration"}}]))}};return Ge.subscribe((e=>{e.updateEditor&&a(e.code,!0)})),P((async()=>{st(at),s=document.getElementById("editor"),n=at.editor.create(s,{value:"",theme:"myCoolTheme",language:"mermaid"}),i(0,o=ot(n)),n.onDidChangeModelContent((function(e){a(n.getValue(),!1)})),st(at)})),[o]}const gt=class extends de{constructor(e){super(),ce(this,e,ut,ht,c,{})}};var ft=i(50158);function pt(e){let t,i,n,r,s,o,a,c;return s=new rt({props:{errorStore:Qe}}),{c(){t=k("div"),i=k("div"),r=L(),oe(s.$$.fragment),N(i,"id","editor-conf"),N(i,"class","svelte-e1y9ss"),N(t,"id","editor-container")},m(l,d){w(l,t,d),y(t,i),y(t,r),ae(s,t,null),o=!0,a||(c=_(n=dt.call(null,i,e[0])),a=!0)},p(e,[t]){n&&l(n.update)&&1&t&&n.update.call(null,e[0])},i(e){o||(ie(s.$$.fragment,e),o=!0)},o(e){ne(s.$$.fragment,e),o=!1},d(e){e&&C(t),le(s),a=!1,c()}}}function mt(e,t,i){let n,r=()=>{};const s=(e,t)=>{console.log(e),t&&n&&n.setValue(JSON.stringify(e,null,2)),((e,t)=>{const i=u(Ge);Ge.set({...i,mermaid:e,updateEditor:!1})})(e),Qe.set(void 0)};return Ge.subscribe((e=>{console.log(e.mermaid,e.updateEditor),e.updateEditor&&s(e.mermaid,!0)})),P((async()=>{console.log("Mounting config");const e=document.getElementById("editor-conf");n=ft.editor.create(e,{value:"",theme:"myCoolTheme",language:"json"}),i(0,r=ot(n)),n.onDidChangeModelContent((function(e){try{const e=JSON.parse(n.getValue());s(e,!1)}catch(e){console.log("Error in parsed",e),Qe.set(e)}})),st(ft)})),[r]}const _t=class extends de{constructor(e){super(),ce(this,e,mt,pt,c,{})}};function bt(e){let t,i,r;return{c(){t=k("div"),i=k("div"),N(i,"id","container"),N(i,"class","svelte-adxv1m"),N(t,"id","view"),N(t,"class",r=e[1]+" "+e[0]+" svelte-adxv1m")},m(n,r){w(n,t,r),y(t,i),e[4](i)},p(e,[i]){3&i&&r!==(r=e[1]+" "+e[0]+" svelte-adxv1m")&&N(t,"class",r)},i:n,o:n,d(i){i&&C(t),e[4](null)}}}function vt(e,t,i){let n,r,{code:s=""}=t,{configClasses:o=""}=t,{codeClasses:a=""}=t;P((async()=>{Ge.subscribe((e=>{try{r&&e&&(i(3,s=e.code.replace(/</g,"<").replace(/>/g,">")),i(2,r.innerHTML=s,r),o=(o=s).replace(/^\s*%%.*\n/g,"\n"),console.debug("Detecting diagram type based on the text "+o),t=o.match(/^\s*sequenceDiagram/)?"sequence":o.match(/^\s*gantt/)?"gantt":o.match(/^\s*classDiagram/)?"class":o.match(/^\s*stateDiagram/)?"state":o.match(/^\s*gitGraph/)?"git":o.match(/^\s*flowchart/)?"flowchart":o.match(/^\s*info/)?"info":o.match(/^\s*pie/)?"pie":"flowchart",clearTimeout(n),n=setTimeout((function(){console.log("ga:","send","event","render",t,t),ga("send","event",t,"render","render")}),5e3),delete r.dataset.processed,et().initialize(Object.assign({},e.mermaid)),et().init(void 0,r),s&&et().render("graph-div",s,l))}catch(e){console.log("view fail",e)}var t,o})),Je.subscribe((e=>{void 0===e?i(1,a=""):(i(1,a="error"),console.log("code error: ",e))})),Qe.subscribe((e=>{void 0===e?i(0,o=""):(i(0,o="error"),console.log("conf error: ",e))}))}));let l=function(e,t){};return e.$$set=e=>{"code"in e&&i(3,s=e.code),"configClasses"in e&&i(0,o=e.configClasses),"codeClasses"in e&&i(1,a=e.codeClasses)},[o,a,r,s,function(e){W[e?"unshift":"push"]((()=>{r=e,i(2,r)}))}]}const yt=class extends de{constructor(e){super(),ce(this,e,vt,bt,c,{code:3,configClasses:0,codeClasses:1})}};function wt(e){let t,i,n,r,s,o,a;const l=e[4].default,c=g(l,e,e[3],null);return{c(){t=k("div"),i=k("div"),n=x(e[0]),r=L(),s=k("div"),c&&c.c(),N(i,"id","title"),N(i,"class","padding svelte-m2i2uf"),N(s,"id","content"),N(s,"class",o=m(e[1])+" svelte-m2i2uf"),N(t,"id","card"),N(t,"class","svelte-m2i2uf")},m(e,o){w(e,t,o),y(t,i),y(i,n),y(t,r),y(t,s),c&&c.m(s,null),a=!0},p(e,[t]){(!a||1&t)&&T(n,e[0]),c&&c.p&&(!a||8&t)&&p(c,l,e,e[3],t,null,null),(!a||2&t&&o!==(o=m(e[1])+" svelte-m2i2uf"))&&N(s,"class",o)},i(e){a||(ie(c,e),a=!0)},o(e){ne(c,e),a=!1},d(e){e&&C(t),c&&c.d(e)}}}function Ct(e,t,i){let{$$slots:n={},$$scope:r}=t,{title:s=""}=t,{noPadding:o=!1}=t,a="padding";return o&&(a=""),e.$$set=e=>{"title"in e&&i(0,s=e.title),"noPadding"in e&&i(2,o=e.noPadding),"$$scope"in e&&i(3,r=e.$$scope)},[s,a,o,r,n]}const St=class extends de{constructor(e){super(),ce(this,e,Ct,wt,c,{title:0,noPadding:2})}};function kt(e){let t,i;const n=e[1].default,r=g(n,e,e[0],null);return{c(){t=k("div"),r&&r.c(),N(t,"id","tag"),N(t,"class","svelte-1nm8e4l")},m(e,n){w(e,t,n),r&&r.m(t,null),i=!0},p(e,[t]){r&&r.p&&(!i||1&t)&&p(r,n,e,e[0],t,null,null)},i(e){i||(ie(r,e),i=!0)},o(e){ne(r,e),i=!1},d(e){e&&C(t),r&&r.d(e)}}}function xt(e,t,i){let{$$slots:n={},$$scope:r}=t;return e.$$set=e=>{"$$scope"in e&&i(0,r=e.$$scope)},[r,n]}const Lt=class extends de{constructor(e){super(),ce(this,e,xt,kt,c,{})}};var Mt=i(30381),Dt=i.n(Mt);function Nt(e){let t,i,r,s,o,l,c,d,h,u,g,f,p,m,_,b,v,S,M,T,O,A,R,P,F,B,W,Y,H,j,V,z,U,$,K,q,G,Z,J,Q,X,ee,te,ie,ne,re,se,oe,ae,le,ce,de,he,ue,ge=e[7](),fe=ge&&function(e){let t,i,n,r,s;return{c(){t=k("button"),i=k("a"),n=x("Copy Image"),N(i,"class","link-style svelte-187ys3m"),N(i,"href",e[0]),N(i,"download",""),N(t,"class","button-style svelte-187ys3m")},m(o,a){w(o,t,a),y(t,i),y(i,n),r||(s=D(i,"click",e[8]),r=!0)},p(e,t){1&t&&N(i,"href",e[0])},d(e){e&&C(t),r=!1,s()}}}(e);return{c(){t=k("div"),fe&&fe.c(),i=L(),r=k("button"),s=k("a"),o=x("Download PNG"),l=L(),c=k("button"),d=k("a"),h=x("Link to view"),u=L(),g=k("button"),f=k("a"),p=x("Download SVG"),m=L(),_=k("button"),b=k("a"),v=x("Link to Image"),S=L(),M=k("button"),T=k("a"),O=x("Link to SVG"),A=x("\n (markdown is base64 encoded for these urls)"),R=L(),P=k("div"),F=k("label"),F.textContent="Copy Markdown",B=L(),W=k("br"),Y=L(),H=k("input"),j=x("\n\nPNG size:\n"),V=k("br"),z=L(),U=k("input"),$=L(),K=k("label"),K.textContent="auto",q=k("br"),G=L(),Z=k("input"),J=L(),Q=k("label"),Q.textContent="width",X=L(),ee=k("input"),ie=k("br"),ne=L(),re=k("input"),se=L(),oe=k("label"),oe.textContent="height",ae=L(),le=k("input"),de=k("br"),N(s,"class","link-style svelte-187ys3m"),N(s,"href",e[0]),N(s,"download",""),N(r,"class","button-style svelte-187ys3m"),N(d,"class","link-style svelte-187ys3m"),N(d,"href",e[0]),N(c,"class","button-style svelte-187ys3m"),N(f,"class","link-style svelte-187ys3m"),N(f,"href",e[0]),N(f,"download",""),N(g,"class","button-style svelte-187ys3m"),N(b,"class","link-style svelte-187ys3m"),N(b,"href",e[1]),N(_,"class","button-style svelte-187ys3m"),N(T,"class","link-style svelte-187ys3m"),N(T,"href",e[2]),N(M,"class","button-style svelte-187ys3m"),N(t,"id","links"),N(t,"class","svelte-187ys3m"),N(F,"for","markdown"),N(F,"class","button-style svelte-187ys3m"),N(H,"id","markdown"),N(H,"type","text"),H.value=e[3],N(H,"class","svelte-187ys3m"),N(P,"id","copy-section"),N(P,"class","svelte-187ys3m"),N(U,"type","radio"),U.__value="auto",U.value=U.__value,N(U,"id","autosize"),e[13][0].push(U),N(K,"for","autosize"),N(Z,"type","radio"),Z.__value="width",Z.value=Z.__value,N(Z,"id","width-active"),e[13][0].push(Z),N(Q,"for","width"),N(ee,"id","width"),N(ee,"type","number"),N(ee,"min","3"),N(ee,"max","10000"),ee.disabled=te="width"!==e[4],N(re,"type","radio"),re.__value="height",re.value=re.__value,N(re,"id","height-active"),e[13][0].push(re),N(oe,"for","height"),N(le,"id","height"),N(le,"type","number"),N(le,"min","3"),N(le,"max","10000"),le.disabled=ce="height"!==e[4]},m(n,a){w(n,t,a),fe&&fe.m(t,null),y(t,i),y(t,r),y(r,s),y(s,o),y(t,l),y(t,c),y(c,d),y(d,h),y(t,u),y(t,g),y(g,f),y(f,p),y(t,m),y(t,_),y(_,b),y(b,v),y(t,S),y(t,M),y(M,T),y(T,O),y(t,A),w(n,R,a),w(n,P,a),y(P,F),y(P,B),y(P,W),y(P,Y),y(P,H),w(n,j,a),w(n,V,a),w(n,z,a),w(n,U,a),U.checked=U.__value===e[4],w(n,$,a),w(n,K,a),w(n,q,a),w(n,G,a),w(n,Z,a),Z.checked=Z.__value===e[4],w(n,J,a),w(n,Q,a),w(n,X,a),w(n,ee,a),I(ee,e[5]),w(n,ie,a),w(n,ne,a),w(n,re,a),re.checked=re.__value===e[4],w(n,se,a),w(n,oe,a),w(n,ae,a),w(n,le,a),I(le,e[6]),w(n,de,a),he||(ue=[D(s,"click",e[9]),D(f,"click",e[10]),D(H,"click",e[11]),D(U,"change",e[12]),D(Z,"change",e[14]),D(ee,"input",e[15]),D(re,"change",e[16]),D(le,"input",e[17])],he=!0)},p(e,[t]){ge&&fe.p(e,t),1&t&&N(s,"href",e[0]),1&t&&N(d,"href",e[0]),1&t&&N(f,"href",e[0]),2&t&&N(b,"href",e[1]),4&t&&N(T,"href",e[2]),8&t&&H.value!==e[3]&&(H.value=e[3]),16&t&&(U.checked=U.__value===e[4]),16&t&&(Z.checked=Z.__value===e[4]),16&t&&te!==(te="width"!==e[4])&&(ee.disabled=te),32&t&&E(ee.value)!==e[5]&&I(ee,e[5]),16&t&&(re.checked=re.__value===e[4]),16&t&&ce!==(ce="height"!==e[4])&&(le.disabled=ce),64&t&&E(le.value)!==e[6]&&I(le,e[6])},i:n,o:n,d(i){i&&C(t),fe&&fe.d(),i&&C(R),i&&C(P),i&&C(j),i&&C(V),i&&C(z),i&&C(U),e[13][0].splice(e[13][0].indexOf(U),1),i&&C($),i&&C(K),i&&C(q),i&&C(G),i&&C(Z),e[13][0].splice(e[13][0].indexOf(Z),1),i&&C(J),i&&C(Q),i&&C(X),i&&C(ee),i&&C(ie),i&&C(ne),i&&C(re),e[13][0].splice(e[13][0].indexOf(re),1),i&&C(se),i&&C(oe),i&&C(ae),i&&C(le),i&&C(de),he=!1,a(ue)}}}function Et(e,t,i){const n=()=>{const e=document.getElementById("container").innerHTML.replaceAll("<br>","<br/>");return Ue(e)},r=(e,t)=>{const i=document.createElement("canvas"),r=document.querySelector("#container svg").getBoundingClientRect();if(i.width=r.width,i.height=r.height,"width"===u){const e=r.height/r.width;i.width=g,i.height=g*e}else if("height"===u){const e=r.width/r.height;i.width=f*e,i.height=f}const s=i.getContext("2d");s.fillStyle="white",s.fillRect(0,0,i.width,i.height);const o=new Image;o.onload=t(i,s,o),console.log("SVG",n()),o.src=`data:image/svg+xml;base64,${n()}`,e.stopPropagation(),e.preventDefault()},s=(e,t,i)=>()=>{t.drawImage(i,0,0,e.width,e.height);const n=document.createElement("a");n.download=`mermaid-diagram-${Dt()().format("YYYYMMDDHHmmss")}.png`,n.href=e.toDataURL("image/png").replace("image/png","image/octet-stream"),n.click()},o=(e,t,i)=>()=>{t.drawImage(i,0,0,e.width,e.height),e.toBlob((e=>{try{navigator.clipboard.write([new ClipboardItem({[e.type]:e})])}catch(e){console.error(e)}}))};let a,l,c,d,h,u="auto",g=1920,f=1080;return Ge.subscribe((e=>{l=$e(JSON.stringify(e)),i(0,a=`${window.location.pathname.split("#")[0]}#/view/${l}`),i(1,c=`https://mermaid.ink/img/${l}`),i(2,d=`https://mermaid.ink/svg/${l}`),i(3,h=`[![](${c})](${window.location.protocol}//${window.location.host}${window.location.pathname}#/edit/${l})`)})),[a,c,d,h,u,g,f,()=>window.hasOwnProperty("ClipboardItem"),e=>{r(e,o)},e=>{r(e,s)},e=>{console.log("event",e.target),e.target.href=`data:image/svg+xml;base64,${n()}`,e.target.download=`mermaid-diagram-${Dt()().format("YYYYMMDDHHmmss")}.svg`,console.log("event",e)},e=>{e.target.select(),document.execCommand("Copy")},function(){u=this.__value,i(4,u)},[[]],function(){u=this.__value,i(4,u)},function(){g=E(this.value),i(5,g)},function(){u=this.__value,i(4,u)},function(){f=E(this.value),i(6,f)}]}const Tt=class extends de{constructor(e){super(),ce(this,e,Et,Nt,c,{})}},It={i8:"8.9.3"};function Ot(e,t,i){const n=e.slice();return n[9]=t[i],n[11]=i,n}function At(e,t,i){const n=e.slice();return n[12]=t[i],n[11]=i,n}function Rt(e){let t,i,n,r,s,o=e[12]+"";function a(...t){return e[7](e[12],...t)}return{c(){t=k("button"),i=x(o),n=L(),N(t,"class","button-style svelte-mx8k4g")},m(e,o){w(e,t,o),y(t,i),y(t,n),r||(s=D(t,"click",a),r=!0)},p(t,i){e=t},d(e){e&&C(t),r=!1,s()}}}function Pt(e){let t,i;return t=new gt({props:{data:e[1].data}}),{c(){oe(t.$$.fragment)},m(e,n){ae(t,e,n),i=!0},p(e,i){const n={};2&i&&(n.data=e[1].data),t.$set(n)},i(e){i||(ie(t.$$.fragment,e),i=!0)},o(e){ne(t.$$.fragment,e),i=!1},d(e){le(t,e)}}}function Ft(e){let t,i;return t=new _t({}),{c(){oe(t.$$.fragment)},m(e,n){ae(t,e,n),i=!0},i(e){i||(ie(t.$$.fragment,e),i=!0)},o(e){ne(t.$$.fragment,e),i=!1},d(e){le(t,e)}}}function Bt(e){let t,i;return t=new yt({}),{c(){oe(t.$$.fragment)},m(e,n){ae(t,e,n),i=!0},i(e){i||(ie(t.$$.fragment,e),i=!0)},o(e){ne(t.$$.fragment,e),i=!1},d(e){le(t,e)}}}function Wt(e){let t;return{c(){t=x("No records.")},m(e,i){w(e,t,i)},p:n,d(e){e&&C(t)}}}function Yt(e){let t,i=e[2],n=[];for(let t=0;t<i.length;t+=1)n[t]=Ht(Ot(e,i,t));return{c(){for(let e=0;e<n.length;e+=1)n[e].c();t=M()},m(e,i){for(let t=0;t<n.length;t+=1)n[t].m(e,i);w(e,t,i)},p(e,r){if(100&r){let s;for(i=e[2],s=0;s<i.length;s+=1){const o=Ot(e,i,s);n[s]?n[s].p(o,r):(n[s]=Ht(o),n[s].c(),n[s].m(t.parentNode,t))}for(;s<n.length;s+=1)n[s].d(1);n.length=i.length}},d(e){S(n,e),e&&C(t)}}}function Ht(e){let t,i,n,r,s,o=e[6](e[9].time)+"";function a(...t){return e[8](e[9],...t)}return{c(){t=k("button"),i=x(o),n=L(),N(t,"class","button-style svelte-mx8k4g")},m(e,o){w(e,t,o),y(t,i),y(t,n),r||(s=D(t,"click",a),r=!0)},p(t,n){e=t,4&n&&o!==(o=e[6](e[9].time)+"")&&T(i,o)},d(e){e&&C(t),r=!1,s()}}}function jt(e){let t,i,n,r,s;function o(e,t){return e[2].length>0?Yt:Wt}let a=o(e),l=a(e);return{c(){t=k("span"),t.textContent="Automatically saves once every minute, up to 10 records.",i=L(),n=k("br"),r=L(),s=k("div"),l.c(),N(t,"id","historyLoaderSubTitle"),N(t,"class","svelte-mx8k4g"),N(s,"id","historyList"),N(s,"class","button-container svelte-mx8k4g")},m(e,o){w(e,t,o),w(e,i,o),w(e,n,o),w(e,r,o),w(e,s,o),l.m(s,null)},p(e,t){a===(a=o(e))&&l?l.p(e,t):(l.d(1),l=a(e),l&&(l.c(),l.m(s,null)))},d(e){e&&C(t),e&&C(i),e&&C(n),e&&C(r),e&&C(s),l.d()}}}function Vt(e){let t;return{c(){t=k("div"),t.innerHTML='<button class="button-style svelte-mx8k4g"><a href="https://mermaid-js.github.io/mermaid/#/n00b-gettingStarted" target="_blank" class="link-style svelte-mx8k4g">Mermaid Documentation</a></button> \n <button class="button-style svelte-mx8k4g"><a href="https://github.com/mermaid-js/mermaid/blob/master/docs/getting-started/Tutorials.md" target="_blank" class="link-style svelte-mx8k4g">Live Editor Video Tutorials</a></button> \n <button class="button-style svelte-mx8k4g"><a href="https://github.com/mermaid-js/mermaid" target="_blank" class="link-style svelte-mx8k4g">Mermaid on GitHub</a></button> \n <button class="button-style svelte-mx8k4g"><a href="https://github.com/mermaid-js/mermaid-live-editor" target="_blank" class="link-style svelte-mx8k4g">Live Editor on GitHub</a></button> \n <button class="button-style svelte-mx8k4g"><a href="https://github.com/mermaid-js/mermaid-cli" target="_blank" class="link-style svelte-mx8k4g">Mermaid CLI</a></button>',N(t,"class","button-container svelte-mx8k4g")},m(e,i){w(e,t,i)},d(e){e&&C(t)}}}function zt(e){let t,i;return t=new Tt({}),{c(){oe(t.$$.fragment)},m(e,n){ae(t,e,n),i=!0},i(e){i||(ie(t.$$.fragment,e),i=!0)},o(e){ne(t.$$.fragment,e),i=!1},d(e){le(t,e)}}}function Ut(e){let t;return{c(){t=x(e[0])},m(e,i){w(e,t,i)},p(e,i){1&i&&T(t,e[0])},d(e){e&&C(t)}}}function $t(e){let t,i,n,r,s,o,a,l,c,d,h,u,g,f,p,m,_,b,v,M,D,E,T,I,O,A,R,P,F,B,W=Object.keys(e[3]),Y=[];for(let t=0;t<W.length;t+=1)Y[t]=Rt(At(e,W,t));return h=new St({props:{title:"Code",noPadding:"true",$$slots:{default:[Pt]},$$scope:{ctx:e}}}),g=new St({props:{title:"Mermaid Configuration",$$slots:{default:[Ft]},$$scope:{ctx:e}}}),m=new St({props:{title:"Preview",$$slots:{default:[Bt]},$$scope:{ctx:e}}}),M=new St({props:{title:"Editing history",$$slots:{default:[jt]},$$scope:{ctx:e}}}),E=new St({props:{title:"Links",$$slots:{default:[Vt]},$$scope:{ctx:e}}}),O=new St({props:{title:"Actions",$$slots:{default:[zt]},$$scope:{ctx:e}}}),F=new Lt({props:{color:"green",$$slots:{default:[Ut]},$$scope:{ctx:e}}}),{c(){t=k("div"),i=k("div"),i.innerHTML='<h1 id="app-title" class="svelte-mx8k4g">Mermaid Live Editor</h1>',n=L(),r=k("div"),s=k("div"),o=k("span"),o.innerHTML="<strong>Diagram presets:</strong>",a=L();for(let e=0;e<Y.length;e+=1)Y[e].c();l=L(),c=k("div"),d=k("div"),oe(h.$$.fragment),u=L(),oe(g.$$.fragment),f=L(),p=k("div"),oe(m.$$.fragment),_=L(),b=k("div"),v=k("div"),oe(M.$$.fragment),D=L(),oe(E.$$.fragment),T=L(),I=k("div"),oe(O.$$.fragment),A=L(),R=k("div"),P=x("Powered by mermaid\n "),oe(F.$$.fragment),N(i,"id","title-container"),N(i,"class","svelte-mx8k4g"),N(o,"id","sampleLoaderTitle"),N(s,"class","button-container svelte-mx8k4g"),N(r,"id","sampleLoader"),N(r,"class","svelte-mx8k4g"),N(d,"id","col1"),N(d,"class","svelte-mx8k4g"),N(v,"id","link-col1"),N(v,"class","svelte-mx8k4g"),N(I,"id","link-col2"),N(I,"class","svelte-mx8k4g"),N(b,"id","link-root"),N(b,"class","svelte-mx8k4g"),N(p,"id","col2"),N(p,"class","svelte-mx8k4g"),N(c,"id","editor-root"),N(c,"class","svelte-mx8k4g"),N(R,"id","power"),N(R,"class","svelte-mx8k4g"),N(t,"id","body"),N(t,"class","svelte-mx8k4g")},m(e,C){w(e,t,C),y(t,i),y(t,n),y(t,r),y(r,s),y(s,o),y(s,a);for(let e=0;e<Y.length;e+=1)Y[e].m(s,null);y(t,l),y(t,c),y(c,d),ae(h,d,null),y(d,u),ae(g,d,null),y(c,f),y(c,p),ae(m,p,null),y(p,_),y(p,b),y(b,v),ae(M,v,null),y(v,D),ae(E,v,null),y(b,T),y(b,I),ae(O,I,null),y(t,A),y(t,R),y(R,P),ae(F,R,null),B=!0},p(e,[t]){if(24&t){let i;for(W=Object.keys(e[3]),i=0;i<W.length;i+=1){const n=At(e,W,i);Y[i]?Y[i].p(n,t):(Y[i]=Rt(n),Y[i].c(),Y[i].m(s,null))}for(;i<Y.length;i+=1)Y[i].d(1);Y.length=W.length}const i={};16386&t&&(i.$$scope={dirty:t,ctx:e}),h.$set(i);const n={};16384&t&&(n.$$scope={dirty:t,ctx:e}),g.$set(n);const r={};16384&t&&(r.$$scope={dirty:t,ctx:e}),m.$set(r);const o={};16388&t&&(o.$$scope={dirty:t,ctx:e}),M.$set(o);const a={};16384&t&&(a.$$scope={dirty:t,ctx:e}),E.$set(a);const l={};16384&t&&(l.$$scope={dirty:t,ctx:e}),O.$set(l);const c={};16385&t&&(c.$$scope={dirty:t,ctx:e}),F.$set(c)},i(e){B||(ie(h.$$.fragment,e),ie(g.$$.fragment,e),ie(m.$$.fragment,e),ie(M.$$.fragment,e),ie(E.$$.fragment,e),ie(O.$$.fragment,e),ie(F.$$.fragment,e),B=!0)},o(e){ne(h.$$.fragment,e),ne(g.$$.fragment,e),ne(m.$$.fragment,e),ne(M.$$.fragment,e),ne(E.$$.fragment,e),ne(O.$$.fragment,e),ne(F.$$.fragment,e),B=!1},d(e){e&&C(t),S(Y,e),le(h),le(g),le(m),le(M),le(E),le(O),le(F)}}}function Kt(e,t,i){let{mermaidVersion:n=It.i8}=t,r=[];P((async()=>{ga("send","pageview"),ga("send","event","version",n,n);const e="_mermaid_history_";i(2,r=JSON.parse(localStorage.getItem(e)||"[]"));let t=r.length>0?r[r.length-1]:null;var o;s.data?(e=>{let t;try{const i=Ke(e);console.log("state from url",i),t=JSON.parse(i)}catch(e){console.error("Init error",e),t=qe}Ge.set({...t,updateEditor:!0})})(s.data):t?(o={code:t.code,mermaid:{},updateEditor:!0},Ge.set(o)):a("Flow Chart");let l=null;Ge.subscribe((e=>{l=e&&e.code||l})),setInterval((()=>{l!=t&&(r.unshift({time:(new Date).toISOString(),code:t=l}),r.length>10&&r.pop(),localStorage.setItem(e,JSON.stringify(r))),i(2,r)}),6e4)}));let{params:s={}}=t;const o={"Flow Chart":"graph TD\n A[Christmas] --\x3e|Get money| B(Go shopping)\n B --\x3e C{Let me think}\n C --\x3e|One| D[Laptop]\n C --\x3e|Two| E[iPhone]\n C --\x3e|Three| F[fa:fa-car Car]","Sequence Diagram":"sequenceDiagram\n Alice->>+John: Hello John, how are you?\n Alice->>+John: John, can you hear me?\n John--\x3e>-Alice: Hi Alice, I can hear you!\n John--\x3e>-Alice: I feel great!\n ","Class Diagram":"classDiagram\n Animal <|-- Duck\n Animal <|-- Fish\n Animal <|-- Zebra\n Animal : +int age\n Animal : +String gender\n Animal: +isMammal()\n Animal: +mate()\n class Duck{\n +String beakColor\n +swim()\n +quack()\n }\n class Fish{\n -int sizeInFeet\n -canEat()\n }\n class Zebra{\n +bool is_wild\n +run()\n }\n ","State Diagram":"stateDiagram-v2\n [*] --\x3e Still\n Still --\x3e [*]\n Still --\x3e Moving\n Moving --\x3e Still\n Moving --\x3e Crash\n Crash --\x3e [*]\n ","Gantt Chart":"gantt\n title A Gantt Diagram\n dateFormat YYYY-MM-DD\n section Section\n A task :a1, 2014-01-01, 30d\n Another task :after a1 , 20d\n section Another\n Task in sec :2014-01-12 , 12d\n another task : 24d\n ","Pie Chart":'pie title Pets adopted by volunteers\n "Dogs" : 386\n "Cats" : 85\n "Rats" : 15\n ',"ER Diagram":'erDiagram\n CUSTOMER }|..|{ DELIVERY-ADDRESS : has\n CUSTOMER ||--o{ ORDER : places\n CUSTOMER ||--o{ INVOICE : "liable for"\n DELIVERY-ADDRESS ||--o{ ORDER : receives\n INVOICE ||--|{ ORDER : covers\n ORDER ||--|{ ORDER-ITEM : includes\n PRODUCT-CATEGORY ||--|{ PRODUCT : contains\n PRODUCT ||--o{ ORDER-ITEM : "ordered in"\n '};function a(e){l(o[e])}function l(e){e&&Ze(e,!0)}return e.$$set=e=>{"mermaidVersion"in e&&i(0,n=e.mermaidVersion),"params"in e&&i(1,s=e.params)},[n,s,r,o,a,l,function(e){return`${Dt()(e).fromNow()} (${new Date(e).toLocaleString()})`},(e,t)=>a(e),(e,t)=>l(e.code)]}const qt=class extends de{constructor(e){super(),ce(this,e,Kt,$t,c,{mermaidVersion:0,params:1})}};function Gt(e){let t,i,r;return i=new yt({}),{c(){t=k("div"),oe(i.$$.fragment),N(t,"id","view-page"),N(t,"class","svelte-clxwlp")},m(e,n){w(e,t,n),ae(i,t,null),r=!0},p:n,i(e){r||(ie(i.$$.fragment,e),r=!0)},o(e){ne(i.$$.fragment,e),r=!1},d(e){e&&C(t),le(i)}}}function Zt(e){return P((async()=>{ga("send","pageview")})),[]}const Jt=class extends de{constructor(e){super(),ce(this,e,Zt,Gt,c,{})}};function Qt(e){let t,i,r,s;return r=new Ce({props:{routes:e[0]}}),{c(){t=k("link"),i=L(),oe(r.$$.fragment),N(t,"href","https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap"),N(t,"rel","stylesheet")},m(e,n){y(document.head,t),w(e,i,n),ae(r,e,n),s=!0},p:n,i(e){s||(ie(r.$$.fragment,e),s=!0)},o(e){ne(r.$$.fragment,e),s=!1},d(e){C(t),e&&C(i),le(r,e)}}}function Xt(e){return[{"/":qt,"/edit/:data":qt,"/view/:data":Jt,"*":qt}]}const ei=new class extends de{constructor(e){super(),ce(this,e,Xt,Qt,c,{})}}({target:document.body,props:{}});window.app=ei}},n={};function r(e){var t=n[e];if(void 0!==t)return t.exports;var s=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(s.exports,s,s.exports,r),s.loaded=!0,s.exports}r.m=i,r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((t,i)=>(r.f[i](e,t),t)),[])),r.u=e=>e+"."+e+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="mermaid-live-editor:",r.l=(i,n,s,o)=>{if(e[i])e[i].push(n);else{var a,l;if(void 0!==s)for(var c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var h=c[d];if(h.getAttribute("src")==i||h.getAttribute("data-webpack")==t+s){a=h;break}}a||(l=!0,(a=document.createElement("script")).charset="utf-8",a.timeout=120,r.nc&&a.setAttribute("nonce",r.nc),a.setAttribute("data-webpack",t+s),a.src=i),e[i]=[n];var u=(t,n)=>{a.onerror=a.onload=null,clearTimeout(g);var r=e[i];if(delete e[i],a.parentNode&&a.parentNode.removeChild(a),r&&r.forEach((e=>e(n))),t)return t(n)},g=setTimeout(u.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=u.bind(null,a.onerror),a.onload=u.bind(null,a.onload),l&&document.head.appendChild(a)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.g.importScripts&&(e=r.g.location+"");var t=r.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var i=t.getElementsByTagName("script");i.length&&(e=i[i.length-1].src)}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),r.p=e})(),(()=>{var e={4296:0};r.f.j=(t,i)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)i.push(n[2]);else{var s=new Promise(((i,r)=>n=e[t]=[i,r]));i.push(n[2]=s);var o=r.p+r.u(t),a=new Error;r.l(o,(i=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var s=i&&("load"===i.type?"missing":i.type),o=i&&i.target&&i.target.src;a.message="Loading chunk "+t+" failed.\n("+s+": "+o+")",a.name="ChunkLoadError",a.type=s,a.request=o,n[1](a)}}),"chunk-"+t,t)}};var t=(t,i)=>{var n,s,[o,a,l]=i,c=0;for(n in a)r.o(a,n)&&(r.m[n]=a[n]);for(l&&l(r),t&&t(i);c<o.length;c++)s=o[c],r.o(e,s)&&e[s]&&e[s][0](),e[o[c]]=0},i=self.webpackChunkmermaid_live_editor=self.webpackChunkmermaid_live_editor||[];i.forEach(t.bind(null,0)),i.push=t.bind(null,i.push.bind(i))})(),r(73466)})(); \ No newline at end of file diff --git a/docs/dist/bundle.js.LICENSE.txt b/docs/dist/bundle.js.LICENSE.txt deleted file mode 100644 index e677720f..00000000 --- a/docs/dist/bundle.js.LICENSE.txt +++ /dev/null @@ -1,803 +0,0 @@ -/* - * __ ___ - * _____/ /___ __/ (_)____ - * / ___/ __/ / / / / / ___/ - * (__ ) /_/ /_/ / / (__ ) - * /____/\__/\__, /_/_/____/ - * /____/ - * - * light - weight css preprocessor @licence MIT - */ - -/*! - * Wait for document loaded before starting the execution - */ - -/*! ../../config */ - -/*! ../../dagre-wrapper/index.js */ - -/*! ../../logger */ - -/*! ../../mermaidAPI */ - -/*! ../../utils */ - -/*! ../common/common */ - -/*! ../config */ - -/*! ../createLabel */ - -/*! ../diagrams/class/svgDraw */ - -/*! ../intersect/index.js */ - -/*! ../logger */ - -/*! ../package.json */ - -/*! ../utils */ - -/*! ./../../../../node_modules/process/browser.js */ - -/*! ./../../../../node_modules/webpack/buildin/module.js */ - -/*! ./../process/browser.js */ - -/*! ./classDb */ - -/*! ./clusters */ - -/*! ./config */ - -/*! ./createLabel */ - -/*! ./defaultConfig */ - -/*! ./diagrams/class/classDb */ - -/*! ./diagrams/class/classRenderer */ - -/*! ./diagrams/class/classRenderer-v2 */ - -/*! ./diagrams/class/parser/classDiagram */ - -/*! ./diagrams/class/styles */ - -/*! ./diagrams/common/common */ - -/*! ./diagrams/er/erDb */ - -/*! ./diagrams/er/erRenderer */ - -/*! ./diagrams/er/parser/erDiagram */ - -/*! ./diagrams/er/styles */ - -/*! ./diagrams/flowchart/flowDb */ - -/*! ./diagrams/flowchart/flowRenderer */ - -/*! ./diagrams/flowchart/flowRenderer-v2 */ - -/*! ./diagrams/flowchart/parser/flow */ - -/*! ./diagrams/flowchart/styles */ - -/*! ./diagrams/gantt/ganttDb */ - -/*! ./diagrams/gantt/ganttRenderer */ - -/*! ./diagrams/gantt/parser/gantt */ - -/*! ./diagrams/gantt/styles */ - -/*! ./diagrams/git/gitGraphAst */ - -/*! ./diagrams/git/gitGraphRenderer */ - -/*! ./diagrams/git/parser/gitGraph */ - -/*! ./diagrams/git/styles */ - -/*! ./diagrams/info/infoDb */ - -/*! ./diagrams/info/infoRenderer */ - -/*! ./diagrams/info/parser/info */ - -/*! ./diagrams/info/styles */ - -/*! ./diagrams/pie/parser/pie */ - -/*! ./diagrams/pie/pieDb */ - -/*! ./diagrams/pie/pieRenderer */ - -/*! ./diagrams/pie/styles */ - -/*! ./diagrams/requirement/parser/requirementDiagram */ - -/*! ./diagrams/requirement/requirementDb */ - -/*! ./diagrams/requirement/requirementRenderer */ - -/*! ./diagrams/requirement/styles */ - -/*! ./diagrams/sequence/parser/sequenceDiagram */ - -/*! ./diagrams/sequence/sequenceDb */ - -/*! ./diagrams/sequence/sequenceRenderer */ - -/*! ./diagrams/sequence/styles */ - -/*! ./diagrams/state/parser/stateDiagram */ - -/*! ./diagrams/state/stateDb */ - -/*! ./diagrams/state/stateRenderer */ - -/*! ./diagrams/state/stateRenderer-v2 */ - -/*! ./diagrams/state/styles */ - -/*! ./diagrams/user-journey/journeyDb */ - -/*! ./diagrams/user-journey/journeyRenderer */ - -/*! ./diagrams/user-journey/parser/journey */ - -/*! ./diagrams/user-journey/styles */ - -/*! ./edges */ - -/*! ./erDb */ - -/*! ./erMarkers */ - -/*! ./errorRenderer */ - -/*! ./flowChartShapes */ - -/*! ./flowDb */ - -/*! ./ganttDb */ - -/*! ./gitGraphAst */ - -/*! ./id-cache.js */ - -/*! ./infoDb */ - -/*! ./intersect-circle.js */ - -/*! ./intersect-ellipse */ - -/*! ./intersect-ellipse.js */ - -/*! ./intersect-line */ - -/*! ./intersect-node.js */ - -/*! ./intersect-polygon.js */ - -/*! ./intersect-rect.js */ - -/*! ./intersect/index.js */ - -/*! ./intersect/intersect-rect */ - -/*! ./journeyDb */ - -/*! ./logger */ - -/*! ./markers */ - -/*! ./mermaid-graphlib */ - -/*! ./mermaidAPI */ - -/*! ./nodes */ - -/*! ./parser/classDiagram */ - -/*! ./parser/erDiagram */ - -/*! ./parser/flow */ - -/*! ./parser/gantt */ - -/*! ./parser/gitGraph */ - -/*! ./parser/info */ - -/*! ./parser/journey */ - -/*! ./parser/pie */ - -/*! ./parser/requirementDiagram */ - -/*! ./parser/sequenceDiagram */ - -/*! ./parser/stateDiagram */ - -/*! ./pieDb */ - -/*! ./requirementDb */ - -/*! ./requirementMarkers */ - -/*! ./sequenceDb */ - -/*! ./shapes */ - -/*! ./shapes/note */ - -/*! ./shapes/util */ - -/*! ./stateDb */ - -/*! ./styles */ - -/*! ./svgDraw */ - -/*! ./theme-base */ - -/*! ./theme-dark */ - -/*! ./theme-default */ - -/*! ./theme-forest */ - -/*! ./theme-helpers */ - -/*! ./theme-neutral */ - -/*! ./themes */ - -/*! ./util */ - -/*! ./utils */ - -/*! @braintree/sanitize-url */ - -/*! Check if previously processed */ - -/*! d3 */ - -/*! dagre */ - -/*! dagre-d3 */ - -/*! dagre-d3/lib/label/add-html-label.js */ - -/*! entity-decode/browser */ - -/*! exports provided: LEVELS, log, setLogLevel */ - -/*! exports provided: addClasses, addRelations, setConf, drawOld, draw, default */ - -/*! exports provided: addToRender, addToRenderV2, default */ - -/*! exports provided: bounds, drawActors, setConf, draw, default */ - -/*! exports provided: calcThemeVariables, default */ - -/*! exports provided: clear, insertEdgeLabel, positionEdgeLabel, intersection, insertEdge */ - -/*! exports provided: clusterDb, clear, extractDecendants, validate, findNonClusterChild, adjustClustersAndEdges, extractor, sortNodesByHierarchy */ - -/*! exports provided: default */ - -/*! exports provided: defaultConfig, updateCurrentConfig, setSiteConfig, saveConfigFromInitilize, updateSiteConfig, getSiteConfig, setConfig, getConfig, sanitize, addDirective, reset */ - -/*! exports provided: detectInit, detectDirective, detectType, isSubstringInArray, interpolateToCurve, formatUrl, runFunc, getStylesFromArray, generateId, random, assignWithDepth, getTextObj, drawSimpleText, wrapLabel, calculateTextHeight, calculateTextWidth, calculateTextDimensions, calculateSvgSizeAttrs, configureSvgSize, initIdGeneratior, default */ - -/*! exports provided: drawEdge, drawClass, parseMember, default */ - -/*! exports provided: drawRect, drawFace, drawCircle, drawText, drawLabel, drawSection, drawTask, drawBackgroundRect, getTextObj, getNoteRect, default */ - -/*! exports provided: drawRect, drawText, drawLabel, drawActor, anchorElement, drawActivation, drawLoop, drawBackgroundRect, insertArrowHead, insertArrowFilledHead, insertSequenceNumber, insertArrowCrossHead, getTextObj, getNoteRect, default */ - -/*! exports provided: drawStartState, drawDivider, drawSimpleState, drawDescrState, addTitleAndBox, drawText, drawNote, drawState, drawEdge */ - -/*! exports provided: encodeEntities, decodeEntities, default */ - -/*! exports provided: getRows, removeScript, sanitizeText, lineBreakRegex, hasBreaks, splitBreaks, default */ - -/*! exports provided: getThemeVariables */ - -/*! exports provided: insertCluster, getClusterTitleWidth, clear, positionCluster */ - -/*! exports provided: insertNode, setNodeElem, clear, positionNode */ - -/*! exports provided: labelHelper, updateNodeBounds, insertPolygonShape */ - -/*! exports provided: mkBorder */ - -/*! exports provided: name, version, description, main, keywords, scripts, repository, author, license, standard, dependencies, devDependencies, files, yarn-upgrade-all, sideEffects, husky, default */ - -/*! exports provided: parseDirective, addActor, addMessage, addSignal, getMessages, getActors, getActor, getActorKeys, getTitle, getTitleWrapped, enableSequenceNumbers, showSequenceNumbers, setWrap, autoWrap, clear, parseMessage, LINETYPE, ARROWTYPE, PLACEMENT, addNote, setTitle, apply, default */ - -/*! exports provided: parseDirective, addClass, lookUpDomId, clear, getClass, getClasses, getRelations, addRelation, addAnnotation, addMember, addMembers, cleanupLabel, setCssClass, setLink, setClickEvent, bindFunctions, lineType, relationType, default */ - -/*! exports provided: parseDirective, addState, clear, getState, getStates, logDocuments, getRelations, addRelation, cleanupLabel, lineType, relationType, default */ - -/*! exports provided: parseDirective, clear, setAxisFormat, getAxisFormat, setTodayMarker, getTodayMarker, setDateFormat, enableInclusiveEndDates, endDatesAreInclusive, enableTopAxis, topAxisEnabled, getDateFormat, setExcludes, getExcludes, setTitle, getTitle, addSection, getSections, getTasks, addTask, findTaskById, addTaskOrg, setLink, setClass, setClickEvent, bindFunctions, default */ - -/*! exports provided: parseDirective, clear, setTitle, getTitle, addSection, getSections, getTasks, addTask, addTaskOrg, default */ - -/*! exports provided: parseDirective, default */ - -/*! exports provided: parseDirective, lookUpDomId, addVertex, addSingleLink, addLink, updateLinkInterpolate, updateLink, addClass, setDirection, setClass, setLink, getTooltip, setClickEvent, bindFunctions, getDirection, getVertices, getEdges, getClasses, clear, setGen, defaultStyle, addSubGraph, getDepthFirstPos, indexNodes, getSubGraphs, firstGraph, default */ - -/*! exports provided: render */ - -/*! exports provided: set, get, keys, size, default */ - -/*! exports provided: setConf, addVertices, addEdges, getClasses, draw, default */ - -/*! exports provided: setConf, draw, bounds, drawTasks, default */ - -/*! exports provided: setConf, draw, default */ - -/*! exports provided: setConf, drawReqs, drawElements, draw, default */ - -/*! exports provided: setConf, getClasses, draw, default */ - -/*! exports provided: setDirection, setOptions, getOptions, commit, branch, merge, checkout, reset, prettyPrint, clear, getBranchesAsObjArray, getBranches, getCommits, getCommitsArray, getCurrentBranch, getDirection, getHead, default */ - -/*! exports provided: setMessage, getMessage, setInfo, getInfo, default */ - -/*! fs */ - -/*! graphlib */ - -/*! khroma */ - -/*! moment-mini */ - -/*! no static exports found */ - -/*! path */ - -/*! sequence config was passed as #1 */ - -/*! stylis */ - -/*!*********************!*\ - !*** external "d3" ***! - \*********************/ - -/*!**********************!*\ - !*** ./package.json ***! - \**********************/ - -/*!**********************!*\ - !*** ./src/utils.js ***! - \**********************/ - -/*!***********************!*\ - !*** ./src/config.js ***! - \***********************/ - -/*!***********************!*\ - !*** ./src/logger.js ***! - \***********************/ - -/*!***********************!*\ - !*** ./src/styles.js ***! - \***********************/ - -/*!************************!*\ - !*** ./src/mermaid.js ***! - \************************/ - -/*!************************!*\ - !*** external "dagre" ***! - \************************/ - -/*!*************************!*\ - !*** external "khroma" ***! - \*************************/ - -/*!*************************!*\ - !*** external "stylis" ***! - \*************************/ - -/*!***************************!*\ - !*** ./src/mermaidAPI.js ***! - \***************************/ - -/*!***************************!*\ - !*** external "dagre-d3" ***! - \***************************/ - -/*!***************************!*\ - !*** external "graphlib" ***! - \***************************/ - -/*!*****************************!*\ - !*** ./src/themes/index.js ***! - \*****************************/ - -/*!******************************!*\ - !*** ./src/defaultConfig.js ***! - \******************************/ - -/*!******************************!*\ - !*** ./src/errorRenderer.js ***! - \******************************/ - -/*!******************************!*\ - !*** external "moment-mini" ***! - \******************************/ - -/*!*********************************!*\ - !*** ./src/diagrams/er/erDb.js ***! - \*********************************/ - -/*!**********************************!*\ - !*** ./src/themes/theme-base.js ***! - \**********************************/ - -/*!**********************************!*\ - !*** ./src/themes/theme-dark.js ***! - \**********************************/ - -/*!***********************************!*\ - !*** (webpack)/buildin/module.js ***! - \***********************************/ - -/*!***********************************!*\ - !*** ./src/diagrams/er/styles.js ***! - \***********************************/ - -/*!***********************************!*\ - !*** ./src/diagrams/pie/pieDb.js ***! - \***********************************/ - -/*!************************************!*\ - !*** ./src/dagre-wrapper/edges.js ***! - \************************************/ - -/*!************************************!*\ - !*** ./src/dagre-wrapper/index.js ***! - \************************************/ - -/*!************************************!*\ - !*** ./src/dagre-wrapper/nodes.js ***! - \************************************/ - -/*!************************************!*\ - !*** ./src/diagrams/git/styles.js ***! - \************************************/ - -/*!************************************!*\ - !*** ./src/diagrams/pie/styles.js ***! - \************************************/ - -/*!************************************!*\ - !*** ./src/themes/theme-forest.js ***! - \************************************/ - -/*!*************************************!*\ - !*** ./src/diagrams/info/infoDb.js ***! - \*************************************/ - -/*!*************************************!*\ - !*** ./src/diagrams/info/styles.js ***! - \*************************************/ - -/*!*************************************!*\ - !*** ./src/themes/theme-default.js ***! - \*************************************/ - -/*!*************************************!*\ - !*** ./src/themes/theme-helpers.js ***! - \*************************************/ - -/*!*************************************!*\ - !*** ./src/themes/theme-neutral.js ***! - \*************************************/ - -/*!**************************************!*\ - !*** ./src/dagre-wrapper/markers.js ***! - \**************************************/ - -/*!**************************************!*\ - !*** ./src/diagrams/class/styles.js ***! - \**************************************/ - -/*!**************************************!*\ - !*** ./src/diagrams/er/erMarkers.js ***! - \**************************************/ - -/*!**************************************!*\ - !*** ./src/diagrams/gantt/styles.js ***! - \**************************************/ - -/*!**************************************!*\ - !*** ./src/diagrams/state/shapes.js ***! - \**************************************/ - -/*!**************************************!*\ - !*** ./src/diagrams/state/styles.js ***! - \**************************************/ - -/*!***************************************!*\ - !*** ./src/dagre-wrapper/clusters.js ***! - \***************************************/ - -/*!***************************************!*\ - !*** ./src/diagrams/class/classDb.js ***! - \***************************************/ - -/*!***************************************!*\ - !*** ./src/diagrams/class/svgDraw.js ***! - \***************************************/ - -/*!***************************************!*\ - !*** ./src/diagrams/common/common.js ***! - \***************************************/ - -/*!***************************************!*\ - !*** ./src/diagrams/er/erRenderer.js ***! - \***************************************/ - -/*!***************************************!*\ - !*** ./src/diagrams/gantt/ganttDb.js ***! - \***************************************/ - -/*!***************************************!*\ - !*** ./src/diagrams/state/stateDb.js ***! - \***************************************/ - -/*!****************************************!*\ - !*** ./src/diagrams/state/id-cache.js ***! - \****************************************/ - -/*!****************************************!*\ - !*** external "entity-decode/browser" ***! - \****************************************/ - -/*!*****************************************!*\ - !*** ./node_modules/process/browser.js ***! - \*****************************************/ - -/*!*****************************************!*\ - !*** ./src/diagrams/git/gitGraphAst.js ***! - \*****************************************/ - -/*!*****************************************!*\ - !*** ./src/diagrams/pie/pieRenderer.js ***! - \*****************************************/ - -/*!*****************************************!*\ - !*** ./src/diagrams/sequence/styles.js ***! - \*****************************************/ - -/*!******************************************!*\ - !*** ./src/dagre-wrapper/createLabel.js ***! - \******************************************/ - -/*!******************************************!*\ - !*** ./src/dagre-wrapper/shapes/note.js ***! - \******************************************/ - -/*!******************************************!*\ - !*** ./src/dagre-wrapper/shapes/util.js ***! - \******************************************/ - -/*!******************************************!*\ - !*** ./src/diagrams/flowchart/flowDb.js ***! - \******************************************/ - -/*!******************************************!*\ - !*** ./src/diagrams/flowchart/styles.js ***! - \******************************************/ - -/*!******************************************!*\ - !*** ./src/diagrams/sequence/svgDraw.js ***! - \******************************************/ - -/*!******************************************!*\ - !*** external "@braintree/sanitize-url" ***! - \******************************************/ - -/*!*******************************************!*\ - !*** ./src/diagrams/info/infoRenderer.js ***! - \*******************************************/ - -/*!*******************************************!*\ - !*** ./src/diagrams/pie/parser/pie.jison ***! - \*******************************************/ - -/*!********************************************!*\ - !*** ./src/diagrams/requirement/styles.js ***! - \********************************************/ - -/*!*********************************************!*\ - !*** ./src/diagrams/class/classRenderer.js ***! - \*********************************************/ - -/*!*********************************************!*\ - !*** ./src/diagrams/gantt/ganttRenderer.js ***! - \*********************************************/ - -/*!*********************************************!*\ - !*** ./src/diagrams/info/parser/info.jison ***! - \*********************************************/ - -/*!*********************************************!*\ - !*** ./src/diagrams/sequence/sequenceDb.js ***! - \*********************************************/ - -/*!*********************************************!*\ - !*** ./src/diagrams/state/stateRenderer.js ***! - \*********************************************/ - -/*!*********************************************!*\ - !*** ./src/diagrams/user-journey/styles.js ***! - \*********************************************/ - -/*!**********************************************!*\ - !*** ./src/dagre-wrapper/intersect/index.js ***! - \**********************************************/ - -/*!**********************************************!*\ - !*** ./src/diagrams/git/gitGraphRenderer.js ***! - \**********************************************/ - -/*!**********************************************!*\ - !*** ./src/diagrams/user-journey/svgDraw.js ***! - \**********************************************/ - -/*!***********************************************!*\ - !*** ./node_modules/path-browserify/index.js ***! - \***********************************************/ - -/*!***********************************************!*\ - !*** ./src/dagre-wrapper/mermaid-graphlib.js ***! - \***********************************************/ - -/*!***********************************************!*\ - !*** ./src/diagrams/gantt/parser/gantt.jison ***! - \***********************************************/ - -/*!************************************************!*\ - !*** ./src/diagrams/class/classRenderer-v2.js ***! - \************************************************/ - -/*!************************************************!*\ - !*** ./src/diagrams/er/parser/erDiagram.jison ***! - \************************************************/ - -/*!************************************************!*\ - !*** ./src/diagrams/flowchart/flowRenderer.js ***! - \************************************************/ - -/*!************************************************!*\ - !*** ./src/diagrams/git/parser/gitGraph.jison ***! - \************************************************/ - -/*!************************************************!*\ - !*** ./src/diagrams/state/stateRenderer-v2.js ***! - \************************************************/ - -/*!************************************************!*\ - !*** ./src/diagrams/user-journey/journeyDb.js ***! - \************************************************/ - -/*!**************************************************!*\ - !*** ./src/diagrams/flowchart/parser/flow.jison ***! - \**************************************************/ - -/*!***************************************************!*\ - !*** ./src/diagrams/flowchart/flowChartShapes.js ***! - \***************************************************/ - -/*!***************************************************!*\ - !*** ./src/diagrams/flowchart/flowRenderer-v2.js ***! - \***************************************************/ - -/*!***************************************************!*\ - !*** ./src/diagrams/requirement/requirementDb.js ***! - \***************************************************/ - -/*!***************************************************!*\ - !*** ./src/diagrams/sequence/sequenceRenderer.js ***! - \***************************************************/ - -/*!******************************************************!*\ - !*** ./node_modules/node-libs-browser/mock/empty.js ***! - \******************************************************/ - -/*!******************************************************!*\ - !*** ./src/diagrams/class/parser/classDiagram.jison ***! - \******************************************************/ - -/*!******************************************************!*\ - !*** ./src/diagrams/state/parser/stateDiagram.jison ***! - \******************************************************/ - -/*!******************************************************!*\ - !*** ./src/diagrams/user-journey/journeyRenderer.js ***! - \******************************************************/ - -/*!*******************************************************!*\ - !*** ./src/dagre-wrapper/intersect/intersect-line.js ***! - \*******************************************************/ - -/*!*******************************************************!*\ - !*** ./src/dagre-wrapper/intersect/intersect-node.js ***! - \*******************************************************/ - -/*!*******************************************************!*\ - !*** ./src/dagre-wrapper/intersect/intersect-rect.js ***! - \*******************************************************/ - -/*!*******************************************************!*\ - !*** external "dagre-d3/lib/label/add-html-label.js" ***! - \*******************************************************/ - -/*!********************************************************!*\ - !*** ./src/diagrams/requirement/requirementMarkers.js ***! - \********************************************************/ - -/*!********************************************************!*\ - !*** ./src/diagrams/user-journey/parser/journey.jison ***! - \********************************************************/ - -/*!*********************************************************!*\ - !*** ./src/dagre-wrapper/intersect/intersect-circle.js ***! - \*********************************************************/ - -/*!*********************************************************!*\ - !*** ./src/diagrams/requirement/requirementRenderer.js ***! - \*********************************************************/ - -/*!**********************************************************!*\ - !*** ./src/dagre-wrapper/intersect/intersect-ellipse.js ***! - \**********************************************************/ - -/*!**********************************************************!*\ - !*** ./src/dagre-wrapper/intersect/intersect-polygon.js ***! - \**********************************************************/ - -/*!************************************************************!*\ - !*** ./src/diagrams/sequence/parser/sequenceDiagram.jison ***! - \************************************************************/ - -/*!******************************************************************!*\ - !*** ./src/diagrams/requirement/parser/requirementDiagram.jison ***! - \******************************************************************/ - -/** - * @license - * Copyright (c) 2012-2013 Chris Pettitt - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -//! moment.js - -//! moment.js locale configuration diff --git a/docs/dist/bundle.js.map b/docs/dist/bundle.js.map deleted file mode 100644 index 09b63e3d..00000000 --- a/docs/dist/bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mermaid-live-editor/./node_modules/@braintree/sanitize-url/index.js","webpack://mermaid-live-editor/./node_modules/batch-processor/src/batch-processor.js","webpack://mermaid-live-editor/./node_modules/batch-processor/src/utils.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-animations.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifications.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/media/quickInput.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPicker.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/dnd.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/media/outlineTree.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/media/symbol-icons.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/media/gotoErrorWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/media/peekViewWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/media/onTypeRename.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/renameInputField.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggest.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggestStatusBar.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.css","webpack://mermaid-live-editor/./src/components/Card.svelte?613a","webpack://mermaid-live-editor/./src/components/Config.svelte?ba12","webpack://mermaid-live-editor/./src/components/Editor.svelte?453a","webpack://mermaid-live-editor/./src/components/Error.svelte?3dbf","webpack://mermaid-live-editor/./src/components/Links.svelte?081b","webpack://mermaid-live-editor/./src/components/Tag.svelte","webpack://mermaid-live-editor/./src/components/View.svelte?26e1","webpack://mermaid-live-editor/./src/routes/Edit.svelte?0024","webpack://mermaid-live-editor/./src/routes/View.svelte?4811","webpack://mermaid-live-editor/./node_modules/css-loader/dist/runtime/api.js","webpack://mermaid-live-editor/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://mermaid-live-editor/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/ascending.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/bisect.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/bisector.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/cross.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/descending.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/deviation.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/extent.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/histogram.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/identity.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/max.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/mean.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/median.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/merge.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/min.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/number.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/pairs.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/permute.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/quantile.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/range.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/scan.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/shuffle.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/sum.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/threshold/freedmanDiaconis.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/threshold/scott.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/threshold/sturges.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/ticks.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/transpose.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/variance.js","webpack://mermaid-live-editor/./node_modules/d3-array/src/zip.js","webpack://mermaid-live-editor/./node_modules/d3-axis/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-axis/src/axis.js","webpack://mermaid-live-editor/./node_modules/d3-axis/src/identity.js","webpack://mermaid-live-editor/./node_modules/d3-axis/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-brush/src/brush.js","webpack://mermaid-live-editor/./node_modules/d3-brush/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-brush/src/event.js","webpack://mermaid-live-editor/./node_modules/d3-brush/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-brush/src/noevent.js","webpack://mermaid-live-editor/./node_modules/d3-chord/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-chord/src/chord.js","webpack://mermaid-live-editor/./node_modules/d3-chord/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-chord/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-chord/src/math.js","webpack://mermaid-live-editor/./node_modules/d3-chord/src/ribbon.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/entries.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/keys.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/map.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/nest.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/set.js","webpack://mermaid-live-editor/./node_modules/d3-collection/src/values.js","webpack://mermaid-live-editor/./node_modules/d3-color/src/color.js","webpack://mermaid-live-editor/./node_modules/d3-color/src/cubehelix.js","webpack://mermaid-live-editor/./node_modules/d3-color/src/define.js","webpack://mermaid-live-editor/./node_modules/d3-color/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-color/src/lab.js","webpack://mermaid-live-editor/./node_modules/d3-color/src/math.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/area.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/ascending.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/blur.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/contains.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/contours.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/density.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-contour/src/noop.js","webpack://mermaid-live-editor/./node_modules/d3-dispatch/src/dispatch.js","webpack://mermaid-live-editor/./node_modules/d3-dispatch/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-drag/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-drag/src/drag.js","webpack://mermaid-live-editor/./node_modules/d3-drag/src/event.js","webpack://mermaid-live-editor/./node_modules/d3-drag/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-drag/src/nodrag.js","webpack://mermaid-live-editor/./node_modules/d3-drag/src/noevent.js","webpack://mermaid-live-editor/./node_modules/d3-dsv/src/autoType.js","webpack://mermaid-live-editor/./node_modules/d3-dsv/src/csv.js","webpack://mermaid-live-editor/./node_modules/d3-dsv/src/dsv.js","webpack://mermaid-live-editor/./node_modules/d3-dsv/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-dsv/src/tsv.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/back.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/bounce.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/circle.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/cubic.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/elastic.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/exp.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/linear.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/poly.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/quad.js","webpack://mermaid-live-editor/./node_modules/d3-ease/src/sin.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/blob.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/buffer.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/dsv.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/image.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/json.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/text.js","webpack://mermaid-live-editor/./node_modules/d3-fetch/src/xml.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/center.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/collide.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/jiggle.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/link.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/manyBody.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/radial.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/simulation.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/x.js","webpack://mermaid-live-editor/./node_modules/d3-force/src/y.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/defaultLocale.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/exponent.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatDecimal.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatGroup.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatNumerals.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatPrefixAuto.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatRounded.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatSpecifier.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatTrim.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/formatTypes.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/identity.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/locale.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/precisionFixed.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/precisionPrefix.js","webpack://mermaid-live-editor/./node_modules/d3-format/src/precisionRound.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/adder.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/area.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/bounds.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/cartesian.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/centroid.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/circle.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/antimeridian.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/buffer.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/circle.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/extent.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/index.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/line.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/rectangle.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/clip/rejoin.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/compose.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/contains.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/distance.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/graticule.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/identity.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/interpolate.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/length.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/math.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/noop.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/area.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/bounds.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/centroid.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/context.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/index.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/measure.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/path/string.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/pointEqual.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/polygonContains.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/albers.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/albersUsa.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/azimuthal.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/conic.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/conicConformal.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/conicEqualArea.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/conicEquidistant.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/equalEarth.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/equirectangular.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/fit.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/gnomonic.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/identity.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/index.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/mercator.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/naturalEarth1.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/orthographic.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/resample.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/stereographic.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/projection/transverseMercator.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/rotation.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/stream.js","webpack://mermaid-live-editor/./node_modules/d3-geo/src/transform.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/accessors.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/cluster.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/count.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/descendants.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/each.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/index.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/leaves.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/links.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/path.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/sort.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/hierarchy/sum.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/pack/enclose.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/pack/index.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/pack/siblings.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/partition.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/stratify.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/tree.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/binary.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/dice.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/index.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/resquarify.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/round.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/slice.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/sliceDice.js","webpack://mermaid-live-editor/./node_modules/d3-hierarchy/src/treemap/squarify.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/basis.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/basisClosed.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/color.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/cubehelix.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/date.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/discrete.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/hcl.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/hsl.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/hue.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/lab.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/number.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/numberArray.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/object.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/piecewise.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/quantize.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/rgb.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/round.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/string.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/transform/index.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/transform/parse.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/value.js","webpack://mermaid-live-editor/./node_modules/d3-interpolate/src/zoom.js","webpack://mermaid-live-editor/./node_modules/d3-path/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-path/src/path.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/area.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/centroid.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/contains.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/cross.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/hull.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-polygon/src/length.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/add.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/cover.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/data.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/extent.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/find.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/quad.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/quadtree.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/remove.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/root.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/size.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/visit.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/visitAfter.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/x.js","webpack://mermaid-live-editor/./node_modules/d3-quadtree/src/y.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/bates.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/defaultSource.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/exponential.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/irwinHall.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/logNormal.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/normal.js","webpack://mermaid-live-editor/./node_modules/d3-random/src/uniform.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Accent.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Paired.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Set1.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Set2.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Set3.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/categorical/category10.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/colors.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/ramp.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","webpack://mermaid-live-editor/./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/band.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/continuous.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/diverging.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/identity.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/init.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/linear.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/log.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/nice.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/number.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/ordinal.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/pow.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/quantile.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/quantize.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/sequential.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/sequentialQuantile.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/symlog.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/threshold.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/tickFormat.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/time.js","webpack://mermaid-live-editor/./node_modules/d3-scale/src/utcTime.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/create.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/creator.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/local.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/matcher.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/mouse.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/namespace.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/namespaces.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/point.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/select.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selectAll.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/append.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/attr.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/call.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/classed.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/clone.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/data.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/datum.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/dispatch.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/each.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/empty.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/enter.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/exit.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/filter.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/html.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/index.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/insert.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/join.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/lower.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/merge.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/node.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/nodes.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/on.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/order.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/property.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/raise.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/remove.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/select.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/selectAll.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/size.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/sort.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/sparse.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/style.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selection/text.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selector.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/selectorAll.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/sourceEvent.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/touch.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/touches.js","webpack://mermaid-live-editor/./node_modules/d3-selection/src/window.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/arc.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/area.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/areaRadial.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/array.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/basis.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/basisClosed.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/basisOpen.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/bundle.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/cardinal.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/cardinalClosed.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/cardinalOpen.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/catmullRom.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/catmullRomClosed.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/catmullRomOpen.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/linear.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/linearClosed.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/monotone.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/natural.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/radial.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/curve/step.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/descending.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/identity.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/line.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/lineRadial.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/link/index.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/math.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/noop.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/offset/diverging.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/offset/expand.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/offset/none.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/offset/silhouette.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/offset/wiggle.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/order/appearance.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/order/ascending.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/order/descending.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/order/insideOut.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/order/none.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/order/reverse.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/pie.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/point.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/pointRadial.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/stack.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/circle.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/cross.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/diamond.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/square.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/star.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/triangle.js","webpack://mermaid-live-editor/./node_modules/d3-shape/src/symbol/wye.js","webpack://mermaid-live-editor/./node_modules/d3-time-format/src/defaultLocale.js","webpack://mermaid-live-editor/./node_modules/d3-time-format/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-time-format/src/isoFormat.js","webpack://mermaid-live-editor/./node_modules/d3-time-format/src/isoParse.js","webpack://mermaid-live-editor/./node_modules/d3-time-format/src/locale.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/day.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/duration.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/hour.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/interval.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/millisecond.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/minute.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/month.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/second.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/utcDay.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/utcHour.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/utcMinute.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/utcMonth.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/utcWeek.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/utcYear.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/week.js","webpack://mermaid-live-editor/./node_modules/d3-time/src/year.js","webpack://mermaid-live-editor/./node_modules/d3-timer/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-timer/src/interval.js","webpack://mermaid-live-editor/./node_modules/d3-timer/src/timeout.js","webpack://mermaid-live-editor/./node_modules/d3-timer/src/timer.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/active.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/interrupt.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/selection/index.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/selection/interrupt.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/selection/transition.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/attr.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/attrTween.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/delay.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/duration.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/ease.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/end.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/filter.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/index.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/interpolate.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/merge.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/on.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/remove.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/schedule.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/select.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/selectAll.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/selection.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/style.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/styleTween.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/text.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/textTween.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/transition.js","webpack://mermaid-live-editor/./node_modules/d3-transition/src/transition/tween.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/Beach.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/Cell.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/Circle.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/Diagram.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/Edge.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/point.js","webpack://mermaid-live-editor/./node_modules/d3-voronoi/src/voronoi.js","webpack://mermaid-live-editor/./node_modules/d3-zoom/src/constant.js","webpack://mermaid-live-editor/./node_modules/d3-zoom/src/event.js","webpack://mermaid-live-editor/./node_modules/d3-zoom/src/index.js","webpack://mermaid-live-editor/./node_modules/d3-zoom/src/noevent.js","webpack://mermaid-live-editor/./node_modules/d3-zoom/src/transform.js","webpack://mermaid-live-editor/./node_modules/d3-zoom/src/zoom.js","webpack://mermaid-live-editor/./node_modules/d3/dist/package.js","webpack://mermaid-live-editor/./node_modules/d3/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/arrows.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/create-clusters.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/create-edge-labels.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/create-edge-paths.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/create-nodes.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/d3.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/dagre.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/graphlib.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/intersect-circle.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/intersect-ellipse.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/intersect-line.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/intersect-node.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/intersect-polygon.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/intersect/intersect-rect.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/label/add-html-label.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/label/add-label.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/label/add-svg-label.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/label/add-text-label.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/lodash.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/position-clusters.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/position-edge-labels.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/position-nodes.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/render.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/shapes.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/util.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/lib/version.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/acyclic.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/add-border-segments.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/coordinate-system.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/data/list.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/debug.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/graphlib.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/greedy-fas.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/layout.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/lodash.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/nesting-graph.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/normalize.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/barycenter.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/cross-count.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/init-order.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/order/sort.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/position/bk.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/position/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/rank/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/rank/util.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/util.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/dagre/lib/version.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/components.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/prim.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/graph.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/index.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/json.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/lodash.js","webpack://mermaid-live-editor/./node_modules/dagre-d3/node_modules/graphlib/lib/version.js","webpack://mermaid-live-editor/./node_modules/dagre/index.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/acyclic.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/add-border-segments.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/coordinate-system.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/data/list.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/debug.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/graphlib.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/greedy-fas.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/layout.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/lodash.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/nesting-graph.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/normalize.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/add-subgraph-constraints.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/barycenter.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/build-layer-graph.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/cross-count.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/index.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/init-order.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/resolve-conflicts.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/sort-subgraph.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/order/sort.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/parent-dummy-chains.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/position/bk.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/position/index.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/rank/feasible-tree.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/rank/index.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/rank/network-simplex.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/rank/util.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/util.js","webpack://mermaid-live-editor/./node_modules/dagre/lib/version.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/browser-detector.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/collection-utils.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/detection-strategy/object.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/detection-strategy/scroll.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/element-resize-detector.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/element-utils.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/id-generator.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/id-handler.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/listener-handler.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/reporter.js","webpack://mermaid-live-editor/./node_modules/element-resize-detector/src/state-handler.js","webpack://mermaid-live-editor/./node_modules/entity-decode/browser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf","webpack://mermaid-live-editor/./node_modules/graphlib/index.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/components.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/dfs.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/dijkstra-all.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/dijkstra.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/find-cycles.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/floyd-warshall.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/index.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/is-acyclic.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/postorder.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/preorder.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/prim.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/tarjan.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/alg/topsort.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/data/priority-queue.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/graph.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/index.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/json.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/lodash.js","webpack://mermaid-live-editor/./node_modules/graphlib/lib/version.js","webpack://mermaid-live-editor/./node_modules/js-base64/base64.mjs","webpack://mermaid-live-editor/./node_modules/khroma/dist/channels/index.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/channels/reusable.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/channels/type.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/color/hex.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/color/hsl.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/color/index.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/color/keyword.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/color/rgb.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/consts.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/index.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/adjust.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/adjust_channel.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/alpha.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/blue.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/change.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/channel.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/complement.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/darken.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/desaturate.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/grayscale.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/green.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/hsla.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/hue.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/index.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/invert.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/is_dark.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/is_light.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/is_valid.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/lighten.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/lightness.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/luminance.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/mix.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/opacify.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/red.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/rgba.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/saturate.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/saturation.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/scale.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/methods/transparentize.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/types.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/utils/channel.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/utils/index.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/utils/lang.js","webpack://mermaid-live-editor/./node_modules/khroma/dist/utils/unit.js","webpack://mermaid-live-editor/./node_modules/lodash/_DataView.js","webpack://mermaid-live-editor/./node_modules/lodash/_Hash.js","webpack://mermaid-live-editor/./node_modules/lodash/_ListCache.js","webpack://mermaid-live-editor/./node_modules/lodash/_Map.js","webpack://mermaid-live-editor/./node_modules/lodash/_MapCache.js","webpack://mermaid-live-editor/./node_modules/lodash/_Promise.js","webpack://mermaid-live-editor/./node_modules/lodash/_Set.js","webpack://mermaid-live-editor/./node_modules/lodash/_SetCache.js","webpack://mermaid-live-editor/./node_modules/lodash/_Stack.js","webpack://mermaid-live-editor/./node_modules/lodash/_Symbol.js","webpack://mermaid-live-editor/./node_modules/lodash/_Uint8Array.js","webpack://mermaid-live-editor/./node_modules/lodash/_WeakMap.js","webpack://mermaid-live-editor/./node_modules/lodash/_apply.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayEach.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayFilter.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayIncludes.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayIncludesWith.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayLikeKeys.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayMap.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayPush.js","webpack://mermaid-live-editor/./node_modules/lodash/_arrayReduce.js","webpack://mermaid-live-editor/./node_modules/lodash/_arraySome.js","webpack://mermaid-live-editor/./node_modules/lodash/_asciiSize.js","webpack://mermaid-live-editor/./node_modules/lodash/_assignMergeValue.js","webpack://mermaid-live-editor/./node_modules/lodash/_assignValue.js","webpack://mermaid-live-editor/./node_modules/lodash/_assocIndexOf.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseAssign.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseAssignIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseAssignValue.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseClone.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseCreate.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseEach.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseExtremum.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseFilter.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseFindIndex.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseFlatten.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseFor.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseForOwn.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseGet.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseGetAllKeys.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseGetTag.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseGt.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseHasIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIndexOf.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsArguments.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsEqual.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsEqualDeep.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsMap.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsMatch.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsNaN.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsNative.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIsTypedArray.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseIteratee.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseKeys.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseKeysIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseLt.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseMap.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseMatches.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseMatchesProperty.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseMerge.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseMergeDeep.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseOrderBy.js","webpack://mermaid-live-editor/./node_modules/lodash/_basePick.js","webpack://mermaid-live-editor/./node_modules/lodash/_basePickBy.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseProperty.js","webpack://mermaid-live-editor/./node_modules/lodash/_basePropertyDeep.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseRange.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseReduce.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseRest.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseSetToString.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseSortBy.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseTimes.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseToString.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseUnary.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseUniq.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseValues.js","webpack://mermaid-live-editor/./node_modules/lodash/_baseZipObject.js","webpack://mermaid-live-editor/./node_modules/lodash/_cacheHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_castFunction.js","webpack://mermaid-live-editor/./node_modules/lodash/_castPath.js","webpack://mermaid-live-editor/./node_modules/lodash/_cloneArrayBuffer.js","webpack://mermaid-live-editor/./node_modules/lodash/_cloneBuffer.js","webpack://mermaid-live-editor/./node_modules/lodash/_cloneDataView.js","webpack://mermaid-live-editor/./node_modules/lodash/_cloneRegExp.js","webpack://mermaid-live-editor/./node_modules/lodash/_cloneSymbol.js","webpack://mermaid-live-editor/./node_modules/lodash/_cloneTypedArray.js","webpack://mermaid-live-editor/./node_modules/lodash/_compareAscending.js","webpack://mermaid-live-editor/./node_modules/lodash/_compareMultiple.js","webpack://mermaid-live-editor/./node_modules/lodash/_copyArray.js","webpack://mermaid-live-editor/./node_modules/lodash/_copyObject.js","webpack://mermaid-live-editor/./node_modules/lodash/_copySymbols.js","webpack://mermaid-live-editor/./node_modules/lodash/_copySymbolsIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_coreJsData.js","webpack://mermaid-live-editor/./node_modules/lodash/_createAssigner.js","webpack://mermaid-live-editor/./node_modules/lodash/_createBaseEach.js","webpack://mermaid-live-editor/./node_modules/lodash/_createBaseFor.js","webpack://mermaid-live-editor/./node_modules/lodash/_createFind.js","webpack://mermaid-live-editor/./node_modules/lodash/_createRange.js","webpack://mermaid-live-editor/./node_modules/lodash/_createSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_defineProperty.js","webpack://mermaid-live-editor/./node_modules/lodash/_equalArrays.js","webpack://mermaid-live-editor/./node_modules/lodash/_equalByTag.js","webpack://mermaid-live-editor/./node_modules/lodash/_equalObjects.js","webpack://mermaid-live-editor/./node_modules/lodash/_flatRest.js","webpack://mermaid-live-editor/./node_modules/lodash/_freeGlobal.js","webpack://mermaid-live-editor/./node_modules/lodash/_getAllKeys.js","webpack://mermaid-live-editor/./node_modules/lodash/_getAllKeysIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_getMapData.js","webpack://mermaid-live-editor/./node_modules/lodash/_getMatchData.js","webpack://mermaid-live-editor/./node_modules/lodash/_getNative.js","webpack://mermaid-live-editor/./node_modules/lodash/_getPrototype.js","webpack://mermaid-live-editor/./node_modules/lodash/_getRawTag.js","webpack://mermaid-live-editor/./node_modules/lodash/_getSymbols.js","webpack://mermaid-live-editor/./node_modules/lodash/_getSymbolsIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_getTag.js","webpack://mermaid-live-editor/./node_modules/lodash/_getValue.js","webpack://mermaid-live-editor/./node_modules/lodash/_hasPath.js","webpack://mermaid-live-editor/./node_modules/lodash/_hasUnicode.js","webpack://mermaid-live-editor/./node_modules/lodash/_hashClear.js","webpack://mermaid-live-editor/./node_modules/lodash/_hashDelete.js","webpack://mermaid-live-editor/./node_modules/lodash/_hashGet.js","webpack://mermaid-live-editor/./node_modules/lodash/_hashHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_hashSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_initCloneArray.js","webpack://mermaid-live-editor/./node_modules/lodash/_initCloneByTag.js","webpack://mermaid-live-editor/./node_modules/lodash/_initCloneObject.js","webpack://mermaid-live-editor/./node_modules/lodash/_isFlattenable.js","webpack://mermaid-live-editor/./node_modules/lodash/_isIndex.js","webpack://mermaid-live-editor/./node_modules/lodash/_isIterateeCall.js","webpack://mermaid-live-editor/./node_modules/lodash/_isKey.js","webpack://mermaid-live-editor/./node_modules/lodash/_isKeyable.js","webpack://mermaid-live-editor/./node_modules/lodash/_isMasked.js","webpack://mermaid-live-editor/./node_modules/lodash/_isPrototype.js","webpack://mermaid-live-editor/./node_modules/lodash/_isStrictComparable.js","webpack://mermaid-live-editor/./node_modules/lodash/_listCacheClear.js","webpack://mermaid-live-editor/./node_modules/lodash/_listCacheDelete.js","webpack://mermaid-live-editor/./node_modules/lodash/_listCacheGet.js","webpack://mermaid-live-editor/./node_modules/lodash/_listCacheHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_listCacheSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_mapCacheClear.js","webpack://mermaid-live-editor/./node_modules/lodash/_mapCacheDelete.js","webpack://mermaid-live-editor/./node_modules/lodash/_mapCacheGet.js","webpack://mermaid-live-editor/./node_modules/lodash/_mapCacheHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_mapCacheSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_mapToArray.js","webpack://mermaid-live-editor/./node_modules/lodash/_matchesStrictComparable.js","webpack://mermaid-live-editor/./node_modules/lodash/_memoizeCapped.js","webpack://mermaid-live-editor/./node_modules/lodash/_nativeCreate.js","webpack://mermaid-live-editor/./node_modules/lodash/_nativeKeys.js","webpack://mermaid-live-editor/./node_modules/lodash/_nativeKeysIn.js","webpack://mermaid-live-editor/./node_modules/lodash/_nodeUtil.js","webpack://mermaid-live-editor/./node_modules/lodash/_objectToString.js","webpack://mermaid-live-editor/./node_modules/lodash/_overArg.js","webpack://mermaid-live-editor/./node_modules/lodash/_overRest.js","webpack://mermaid-live-editor/./node_modules/lodash/_root.js","webpack://mermaid-live-editor/./node_modules/lodash/_safeGet.js","webpack://mermaid-live-editor/./node_modules/lodash/_setCacheAdd.js","webpack://mermaid-live-editor/./node_modules/lodash/_setCacheHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_setToArray.js","webpack://mermaid-live-editor/./node_modules/lodash/_setToString.js","webpack://mermaid-live-editor/./node_modules/lodash/_shortOut.js","webpack://mermaid-live-editor/./node_modules/lodash/_stackClear.js","webpack://mermaid-live-editor/./node_modules/lodash/_stackDelete.js","webpack://mermaid-live-editor/./node_modules/lodash/_stackGet.js","webpack://mermaid-live-editor/./node_modules/lodash/_stackHas.js","webpack://mermaid-live-editor/./node_modules/lodash/_stackSet.js","webpack://mermaid-live-editor/./node_modules/lodash/_strictIndexOf.js","webpack://mermaid-live-editor/./node_modules/lodash/_stringSize.js","webpack://mermaid-live-editor/./node_modules/lodash/_stringToPath.js","webpack://mermaid-live-editor/./node_modules/lodash/_toKey.js","webpack://mermaid-live-editor/./node_modules/lodash/_toSource.js","webpack://mermaid-live-editor/./node_modules/lodash/_unicodeSize.js","webpack://mermaid-live-editor/./node_modules/lodash/clone.js","webpack://mermaid-live-editor/./node_modules/lodash/cloneDeep.js","webpack://mermaid-live-editor/./node_modules/lodash/constant.js","webpack://mermaid-live-editor/./node_modules/lodash/defaults.js","webpack://mermaid-live-editor/./node_modules/lodash/each.js","webpack://mermaid-live-editor/./node_modules/lodash/eq.js","webpack://mermaid-live-editor/./node_modules/lodash/filter.js","webpack://mermaid-live-editor/./node_modules/lodash/find.js","webpack://mermaid-live-editor/./node_modules/lodash/findIndex.js","webpack://mermaid-live-editor/./node_modules/lodash/flatten.js","webpack://mermaid-live-editor/./node_modules/lodash/forEach.js","webpack://mermaid-live-editor/./node_modules/lodash/forIn.js","webpack://mermaid-live-editor/./node_modules/lodash/get.js","webpack://mermaid-live-editor/./node_modules/lodash/has.js","webpack://mermaid-live-editor/./node_modules/lodash/hasIn.js","webpack://mermaid-live-editor/./node_modules/lodash/identity.js","webpack://mermaid-live-editor/./node_modules/lodash/isArguments.js","webpack://mermaid-live-editor/./node_modules/lodash/isArray.js","webpack://mermaid-live-editor/./node_modules/lodash/isArrayLike.js","webpack://mermaid-live-editor/./node_modules/lodash/isArrayLikeObject.js","webpack://mermaid-live-editor/./node_modules/lodash/isBuffer.js","webpack://mermaid-live-editor/./node_modules/lodash/isEmpty.js","webpack://mermaid-live-editor/./node_modules/lodash/isFunction.js","webpack://mermaid-live-editor/./node_modules/lodash/isLength.js","webpack://mermaid-live-editor/./node_modules/lodash/isMap.js","webpack://mermaid-live-editor/./node_modules/lodash/isObject.js","webpack://mermaid-live-editor/./node_modules/lodash/isObjectLike.js","webpack://mermaid-live-editor/./node_modules/lodash/isPlainObject.js","webpack://mermaid-live-editor/./node_modules/lodash/isSet.js","webpack://mermaid-live-editor/./node_modules/lodash/isString.js","webpack://mermaid-live-editor/./node_modules/lodash/isSymbol.js","webpack://mermaid-live-editor/./node_modules/lodash/isTypedArray.js","webpack://mermaid-live-editor/./node_modules/lodash/isUndefined.js","webpack://mermaid-live-editor/./node_modules/lodash/keys.js","webpack://mermaid-live-editor/./node_modules/lodash/keysIn.js","webpack://mermaid-live-editor/./node_modules/lodash/last.js","webpack://mermaid-live-editor/./node_modules/lodash/map.js","webpack://mermaid-live-editor/./node_modules/lodash/mapValues.js","webpack://mermaid-live-editor/./node_modules/lodash/max.js","webpack://mermaid-live-editor/./node_modules/lodash/memoize.js","webpack://mermaid-live-editor/./node_modules/lodash/merge.js","webpack://mermaid-live-editor/./node_modules/lodash/min.js","webpack://mermaid-live-editor/./node_modules/lodash/minBy.js","webpack://mermaid-live-editor/./node_modules/lodash/noop.js","webpack://mermaid-live-editor/./node_modules/lodash/now.js","webpack://mermaid-live-editor/./node_modules/lodash/pick.js","webpack://mermaid-live-editor/./node_modules/lodash/property.js","webpack://mermaid-live-editor/./node_modules/lodash/range.js","webpack://mermaid-live-editor/./node_modules/lodash/reduce.js","webpack://mermaid-live-editor/./node_modules/lodash/size.js","webpack://mermaid-live-editor/./node_modules/lodash/sortBy.js","webpack://mermaid-live-editor/./node_modules/lodash/stubArray.js","webpack://mermaid-live-editor/./node_modules/lodash/stubFalse.js","webpack://mermaid-live-editor/./node_modules/lodash/toFinite.js","webpack://mermaid-live-editor/./node_modules/lodash/toInteger.js","webpack://mermaid-live-editor/./node_modules/lodash/toNumber.js","webpack://mermaid-live-editor/./node_modules/lodash/toPlainObject.js","webpack://mermaid-live-editor/./node_modules/lodash/toString.js","webpack://mermaid-live-editor/./node_modules/lodash/transform.js","webpack://mermaid-live-editor/./node_modules/lodash/union.js","webpack://mermaid-live-editor/./node_modules/lodash/uniqueId.js","webpack://mermaid-live-editor/./node_modules/lodash/values.js","webpack://mermaid-live-editor/./node_modules/lodash/zipObject.js","webpack://mermaid-live-editor/./node_modules/mermaid/dist/mermaid.core.js","webpack://mermaid-live-editor//Users/sidv/dev/mermaid-live-editor/node_modules/moment-mini/locale|sync|/^\\.\\/.*$/","webpack://mermaid-live-editor/./node_modules/moment-mini/moment.min.js","webpack://mermaid-live-editor/./node_modules/moment/locale/af.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar-dz.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar-kw.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar-ly.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar-ma.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar-sa.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar-tn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ar.js","webpack://mermaid-live-editor/./node_modules/moment/locale/az.js","webpack://mermaid-live-editor/./node_modules/moment/locale/be.js","webpack://mermaid-live-editor/./node_modules/moment/locale/bg.js","webpack://mermaid-live-editor/./node_modules/moment/locale/bm.js","webpack://mermaid-live-editor/./node_modules/moment/locale/bn-bd.js","webpack://mermaid-live-editor/./node_modules/moment/locale/bn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/bo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/br.js","webpack://mermaid-live-editor/./node_modules/moment/locale/bs.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ca.js","webpack://mermaid-live-editor/./node_modules/moment/locale/cs.js","webpack://mermaid-live-editor/./node_modules/moment/locale/cv.js","webpack://mermaid-live-editor/./node_modules/moment/locale/cy.js","webpack://mermaid-live-editor/./node_modules/moment/locale/da.js","webpack://mermaid-live-editor/./node_modules/moment/locale/de-at.js","webpack://mermaid-live-editor/./node_modules/moment/locale/de-ch.js","webpack://mermaid-live-editor/./node_modules/moment/locale/de.js","webpack://mermaid-live-editor/./node_modules/moment/locale/dv.js","webpack://mermaid-live-editor/./node_modules/moment/locale/el.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-au.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-ca.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-gb.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-ie.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-il.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-in.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-nz.js","webpack://mermaid-live-editor/./node_modules/moment/locale/en-sg.js","webpack://mermaid-live-editor/./node_modules/moment/locale/eo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/es-do.js","webpack://mermaid-live-editor/./node_modules/moment/locale/es-mx.js","webpack://mermaid-live-editor/./node_modules/moment/locale/es-us.js","webpack://mermaid-live-editor/./node_modules/moment/locale/es.js","webpack://mermaid-live-editor/./node_modules/moment/locale/et.js","webpack://mermaid-live-editor/./node_modules/moment/locale/eu.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fa.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fi.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fil.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fr-ca.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fr-ch.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fr.js","webpack://mermaid-live-editor/./node_modules/moment/locale/fy.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ga.js","webpack://mermaid-live-editor/./node_modules/moment/locale/gd.js","webpack://mermaid-live-editor/./node_modules/moment/locale/gl.js","webpack://mermaid-live-editor/./node_modules/moment/locale/gom-deva.js","webpack://mermaid-live-editor/./node_modules/moment/locale/gom-latn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/gu.js","webpack://mermaid-live-editor/./node_modules/moment/locale/he.js","webpack://mermaid-live-editor/./node_modules/moment/locale/hi.js","webpack://mermaid-live-editor/./node_modules/moment/locale/hr.js","webpack://mermaid-live-editor/./node_modules/moment/locale/hu.js","webpack://mermaid-live-editor/./node_modules/moment/locale/hy-am.js","webpack://mermaid-live-editor/./node_modules/moment/locale/id.js","webpack://mermaid-live-editor/./node_modules/moment/locale/is.js","webpack://mermaid-live-editor/./node_modules/moment/locale/it-ch.js","webpack://mermaid-live-editor/./node_modules/moment/locale/it.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ja.js","webpack://mermaid-live-editor/./node_modules/moment/locale/jv.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ka.js","webpack://mermaid-live-editor/./node_modules/moment/locale/kk.js","webpack://mermaid-live-editor/./node_modules/moment/locale/km.js","webpack://mermaid-live-editor/./node_modules/moment/locale/kn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ko.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ku.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ky.js","webpack://mermaid-live-editor/./node_modules/moment/locale/lb.js","webpack://mermaid-live-editor/./node_modules/moment/locale/lo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/lt.js","webpack://mermaid-live-editor/./node_modules/moment/locale/lv.js","webpack://mermaid-live-editor/./node_modules/moment/locale/me.js","webpack://mermaid-live-editor/./node_modules/moment/locale/mi.js","webpack://mermaid-live-editor/./node_modules/moment/locale/mk.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ml.js","webpack://mermaid-live-editor/./node_modules/moment/locale/mn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/mr.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ms-my.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ms.js","webpack://mermaid-live-editor/./node_modules/moment/locale/mt.js","webpack://mermaid-live-editor/./node_modules/moment/locale/my.js","webpack://mermaid-live-editor/./node_modules/moment/locale/nb.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ne.js","webpack://mermaid-live-editor/./node_modules/moment/locale/nl-be.js","webpack://mermaid-live-editor/./node_modules/moment/locale/nl.js","webpack://mermaid-live-editor/./node_modules/moment/locale/nn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/oc-lnc.js","webpack://mermaid-live-editor/./node_modules/moment/locale/pa-in.js","webpack://mermaid-live-editor/./node_modules/moment/locale/pl.js","webpack://mermaid-live-editor/./node_modules/moment/locale/pt-br.js","webpack://mermaid-live-editor/./node_modules/moment/locale/pt.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ro.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ru.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sd.js","webpack://mermaid-live-editor/./node_modules/moment/locale/se.js","webpack://mermaid-live-editor/./node_modules/moment/locale/si.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sk.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sl.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sq.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sr-cyrl.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sr.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ss.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sv.js","webpack://mermaid-live-editor/./node_modules/moment/locale/sw.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ta.js","webpack://mermaid-live-editor/./node_modules/moment/locale/te.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tet.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tg.js","webpack://mermaid-live-editor/./node_modules/moment/locale/th.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tk.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tl-ph.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tlh.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tr.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tzl.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tzm-latn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/tzm.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ug-cn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/uk.js","webpack://mermaid-live-editor/./node_modules/moment/locale/ur.js","webpack://mermaid-live-editor/./node_modules/moment/locale/uz-latn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/uz.js","webpack://mermaid-live-editor/./node_modules/moment/locale/vi.js","webpack://mermaid-live-editor/./node_modules/moment/locale/x-pseudo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/yo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/zh-cn.js","webpack://mermaid-live-editor/./node_modules/moment/locale/zh-hk.js","webpack://mermaid-live-editor/./node_modules/moment/locale/zh-mo.js","webpack://mermaid-live-editor/./node_modules/moment/locale/zh-tw.js","webpack://mermaid-live-editor//Users/sidv/dev/mermaid-live-editor/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://mermaid-live-editor/./node_modules/moment/moment.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.api.js?c99d","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.main.js?c958","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/browser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/canIUse.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/codicons.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/dnd.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/dom.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/event.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/fastDomNode.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/formattedTextRenderer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/globalMouseMoveMonitor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/iframe.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/keyboardEvent.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/markdownRenderer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/mouseEvent.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/touch.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionViewItems.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codiconStyles.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInputCheckboxes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/replaceInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/highlightedlabel/highlightedLabel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hoverWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconLabel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listPaging.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listView.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/listWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rangeMap.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/rowCache.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/splice.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/menu/menu.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/abstractScrollbar.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/horizontalScrollbar.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollableElement.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarArrow.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarState.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/scrollbarVisibilityController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/verticalScrollbar.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/abstractTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/asyncDataTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/dataTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/indexTreeModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/objectTreeModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/tree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/treeIcons.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/widget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/actions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/arrays.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/assert.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/async.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/buffer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/codicon.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/codicons.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/collections.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/color.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/comparers.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/decorators.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/errorMessage.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/errors.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/event.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/extpath.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/filters.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/functional.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/fuzzyScorer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/glob.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/hash.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/history.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/htmlContent.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/idGenerator.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/insane/insane.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/iterator.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/keybindingLabels.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/labels.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/lazy.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/map.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/marked/marked.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/marshalling.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/mime.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/navigator.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/network.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/numbers.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/objects.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/path.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/platform.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/process.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/range.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/resources.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/scrollable.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/search.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/severity.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/stopwatch.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/strings.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/types.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/uint.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/uri.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputBox.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputList.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/quickInputUtils.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/common/quickInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/worker/defaultWorkerFactory.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/abap/abap.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/apex/apex.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/azcli/azcli.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/bat/bat.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/cameligo/cameligo.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/clojure/clojure.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/coffee/coffee.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/cpp/cpp.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/csharp/csharp.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/csp/csp.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/css/css.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/dart/dart.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/dockerfile/dockerfile.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/fillers/monaco-editor-core.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/fsharp/fsharp.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/go/go.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/handlebars/handlebars.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/hcl/hcl.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/html/html.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/ini/ini.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/java/java.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/julia/julia.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/kotlin/kotlin.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/less/less.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/lexon/lexon.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/lua/lua.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/mips/mips.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/monaco.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/msdax/msdax.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/objective-c/objective-c.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/pascal/pascal.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/pascaligo/pascaligo.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/perl/perl.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/php/php.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/postiats/postiats.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/powerquery/powerquery.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/pug/pug.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/python/python.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/r/r.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/razor/razor.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/redis/redis.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/redshift/redshift.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/restructuredtext/restructuredtext.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/ruby/ruby.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/rust/rust.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/sb/sb.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/scala/scala.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/scheme/scheme.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/scss/scss.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/shell/shell.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/solidity/solidity.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/sophia/sophia.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/sql/sql.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/st/st.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/swift/swift.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/systemverilog/systemverilog.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/tcl/tcl.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/twig/twig.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/vb/vb.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/xml/xml.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/config/charWidthReader.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/config/configuration.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/config/elementSizeObserver.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/coreCommands.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseHandler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/mouseTarget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/pointerHandler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaState.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/core/editorState.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/core/keybindingCancellation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/editorBrowser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/editorDom.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/editorExtensions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/services/abstractCodeEditorService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/services/bulkEditService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/services/codeEditorServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/services/openerService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/domLineBreaksComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/dynamicViewOverlay.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewLayer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewOverlays.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewPart.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/view/viewUserInputEvents.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/editorScrollbar/editorScrollbar.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/rangeUtil.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLine.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/margin/margin.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRenderer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharRendererFactory.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapCharSheet.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimapPreBaked.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/decorationsOverviewRuler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewZones/viewZones.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/codeEditorWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffEditorWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffNavigator.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/diffReview.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/embeddedCodeEditorWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/inlineDiffMargin.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/commands/replaceCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/commands/shiftCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/commands/surroundSelectionCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/commands/trimTrailingWhitespaceCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/config/commonEditorConfig.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/config/editorOptions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/config/editorZoom.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/config/fontInfo.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorCollection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorColumnSelection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorCommon.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorDeleteOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorMoveCommands.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorMoveOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorTypeOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/cursorWordOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/oneCursor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/controller/wordCharacterClassifier.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/editOperation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/lineTokens.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/position.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/range.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/rgba.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/stringBuilder.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/token.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/editorAction.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/editorCommon.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/editorContextKeys.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/editStack.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/indentationGuesser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/intervalTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/pieceTreeTextBuffer/rbTreeBase.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/textChange.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/textModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelEvents.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelSearch.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/textModelTokens.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/tokensStore.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/abstractMode.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageConfiguration.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageConfigurationRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageFeatureRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/languageSelector.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/modesRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/nullMode.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/characterPair.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/electricCharacter.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/indentRules.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/onEnter.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/richEditBrackets.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/tokenization.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/textToHtmlTokenizer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/tokenizationRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/editorWorkerServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/getIconClasses.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/languagesRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/markerDecorationsServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/markersDecorationService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/modeService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/modeServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/modelService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/modelServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/resolverService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/semanticTokensProviderStyling.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/textResourceConfigurationService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/webWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standaloneStrings.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/view/editorColorRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/view/overviewZoneManager.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/view/renderingContext.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/view/viewContext.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/view/viewEvents.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/lineDecorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/linesLayout.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLayout.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLineRenderer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewLayout/viewLinesViewportData.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/minimapTokensColorTracker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/monospaceLineBreaksComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/splitLinesCollection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewEventHandler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelDecorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelEventDispatcher.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/viewModelImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/caretOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/moveCaretCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/caretOperations/transpose.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/clipboard/clipboard.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeAction.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionCommands.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionContributions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionMenu.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/codeActionUi.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/types.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codeLensCache.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelens.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/color.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorDetector.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPickerModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPickerWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/comment/blockCommentCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/comment/comment.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/comment/lineCommentCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/contextmenu/contextmenu.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/cursorUndo/cursorUndo.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/dnd.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/dragAndDropCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/outlineModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/outlineTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findDecorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findOptionsWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findState.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/replaceAllCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/replacePattern.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/foldingDecorations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/foldingModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/foldingRanges.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/hiddenRangeModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/indentRangeProvider.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/intializingRangeProvider.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/syntaxRangeProvider.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/fontZoom/fontZoom.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/format/format.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/format/formatActions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/format/formattingEdit.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/gotoError.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/gotoErrorWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/markerNavigationService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/documentSymbols.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToCommands.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/goToSymbol.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/clickLinkGesture.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesTree.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/referencesModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/symbolNavigation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/getHover.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hover.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hoverOperation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/hoverWidgets.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/modesContentHover.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/hover/modesGlyphHover.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplace.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/inPlaceReplace/inPlaceReplaceCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/indentation/indentUtils.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/indentation/indentation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/copyLinesCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/linesOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/moveLinesCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/linesOperations/sortLinesCommand.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/links/getLinks.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/markdown/markdownRenderer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/multicursor/multicursor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHintsModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHintsWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/provideSignatureHelp.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/peekView.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/commandsQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/editorNavigationQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/gotoLineQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/onTypeRename.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/rename.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/renameInputField.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/bracketSelections.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/smartSelect.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/smartSelect/wordSelections.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetController2.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetParser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetVariables.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/completionModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggest.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestAlternatives.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestCommitCharacters.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestController.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestMemory.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestOvertypingCapturer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/suggestWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/wordContextKey.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/wordDistance.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/toggleTabFocusMode/toggleTabFocusMode.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/tokenization/tokenization.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/unusualLineTerminators/unusualLineTerminators.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/viewportSemanticTokens/viewportSemanticTokens.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/wordHighlighter/wordHighlighter.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/wordOperations/wordOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/wordPartOperations/wordPartOperations.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/edcore.main.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.all.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.api.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.main.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/colorizer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/simpleServices.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeEditor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneCodeServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneEditor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneLanguages.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneServices.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standaloneThemeServiceImpl.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/toggleHighContrast/toggleHighContrast.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCommon.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchCompile.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/common/monarch/monarchLexer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/common/standaloneThemeService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/common/themes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/css/fillers/monaco-editor-core.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/css/monaco.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/html/fillers/monaco-editor-core.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/html/monaco.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/fillers/monaco-editor-core.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/monaco.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/typescript/fillers/monaco-editor-core.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/typescript/lib/typescriptServicesMetadata.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/typescript/monaco.contribution.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/nls.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibility.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/accessibility/common/accessibilityService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/actions/browser/menuEntryActionViewItem.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/actions/common/actions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/actions/common/menuService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/browser/contextScopedHistoryWidget.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/clipboard/browser/clipboardService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/clipboard/common/clipboardService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/commands/common/commands.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configuration.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationModels.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/configuration/common/configurationRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextkey/browser/contextKeyService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkey.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextkey/common/contextkeys.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextView.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextViewService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/dialogs/common/dialogs.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/editor/common/editor.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/extensions/common/extensions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/files/common/files.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/descriptors.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/extensions.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/graph.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/instantiationService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/instantiation/common/serviceCollection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/jsonschemas/common/jsonContributionRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/abstractKeybindingService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybinding.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingResolver.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/keybindingsRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/resolvedKeybindingItem.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/keybinding/common/usLayoutResolvedKeybinding.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/label/common/label.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/layout/browser/layoutService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/list/browser/listService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/log/common/log.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/markers/common/markerService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/markers/common/markers.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/notification/common/notification.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/opener/common/opener.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/progress/common/progress.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/commandsQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/helpQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/pickerQuickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/browser/quickInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickAccess.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/quickinput/common/quickInput.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/registry/common/platform.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/severityIcon/common/severityIcon.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/storage/common/storage.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/telemetry/common/telemetry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/theme/common/colorRegistry.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/theme/common/styler.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/theme/common/themeService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedo.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/undoRedo/common/undoRedoService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/userDataSync/common/storageKeys.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/workspace/common/workspace.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/workspaces/common/workspaces.js","webpack://mermaid-live-editor/./node_modules/regexparam/dist/regexparam.mjs","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css?97bc","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css?eadf","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css?d9d2","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.css?040a","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-animations.css?dec8","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifications.css?efad","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css?1411","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css?b2e8","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css?6d35","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css?6da1","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css?a0ce","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css?37e7","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css?c9eb","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css?5cc7","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css?42c7","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css?df0f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css?3621","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css?d1cf","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css?38af","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css?da29","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css?6b09","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css?0d37","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/media/quickInput.css?e7c2","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css?d938","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css?f1f5","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css?25b8","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css?f9e4","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css?5f92","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css?bf9b","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css?f07c","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css?7ebd","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css?e0d6","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css?1c43","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css?0454","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css?5da1","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css?95db","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css?66e1","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css?3970","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css?15dd","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css?b51a","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css?679f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.css?dafb","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.css?f34f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.css?2e73","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.css?9aa5","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPicker.css?48bd","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/dnd.css?4bd3","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/media/outlineTree.css?206f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/media/symbol-icons.css?e862","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.css?da90","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.css?98ad","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/media/gotoErrorWidget.css?66e2","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css?726f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css?5ce5","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.css?f703","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.css?24ca","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.css?11a9","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/media/peekViewWidget.css?57b8","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/media/onTypeRename.css?d652","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/rename/renameInputField.css?6460","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.css?ad0f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggest.css?4482","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggestStatusBar.css?495f","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.css?f6de","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.css?764a","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.css?116d","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css?ab46","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css?63dd","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css?41d7","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.css?6a84","webpack://mermaid-live-editor/./src/components/Card.svelte?9644","webpack://mermaid-live-editor/./src/components/Config.svelte?d918","webpack://mermaid-live-editor/./src/components/Editor.svelte?9c31","webpack://mermaid-live-editor/./src/components/Error.svelte?b07e","webpack://mermaid-live-editor/./src/components/Links.svelte?27e6","webpack://mermaid-live-editor/./src/components/Tag.svelte?50b7","webpack://mermaid-live-editor/./src/components/View.svelte?c6d2","webpack://mermaid-live-editor/./src/routes/Edit.svelte?e5b7","webpack://mermaid-live-editor/./src/routes/View.svelte?2a58","webpack://mermaid-live-editor/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://mermaid-live-editor/./node_modules/stylis/stylis.js","webpack://mermaid-live-editor/./node_modules/svelte-hmr/runtime/hot-api.js","webpack://mermaid-live-editor/./node_modules/svelte-hmr/runtime/index.js","webpack://mermaid-live-editor/./node_modules/svelte-hmr/runtime/overlay.js","webpack://mermaid-live-editor/./node_modules/svelte-hmr/runtime/proxy-adapter-dom.js","webpack://mermaid-live-editor/./node_modules/svelte-hmr/runtime/proxy.js","webpack://mermaid-live-editor/./node_modules/svelte-hmr/runtime/svelte-hooks.js","webpack://mermaid-live-editor/./node_modules/svelte-spa-router/Router.svelte","webpack://mermaid-live-editor/./src/App.svelte","webpack://mermaid-live-editor/./src/components/Card.svelte","webpack://mermaid-live-editor/./src/components/Config.svelte","webpack://mermaid-live-editor/./src/components/Editor.svelte","webpack://mermaid-live-editor/./src/components/Error.svelte","webpack://mermaid-live-editor/./src/components/Links.svelte","webpack://mermaid-live-editor/./src/components/View.svelte","webpack://mermaid-live-editor/./src/routes/Edit.svelte","webpack://mermaid-live-editor/./src/routes/View.svelte","webpack://mermaid-live-editor/./node_modules/svelte-loader/lib/hot-api.js","webpack://mermaid-live-editor/./node_modules/svelte-spa-router/wrap.js","webpack://mermaid-live-editor/./node_modules/svelte-watch-resize/lib/index.es.js","webpack://mermaid-live-editor/./node_modules/svelte/index.mjs","webpack://mermaid-live-editor/./node_modules/svelte/internal/index.mjs","webpack://mermaid-live-editor/./node_modules/svelte/store/index.mjs","webpack://mermaid-live-editor/./src/code-store.js","webpack://mermaid-live-editor/./src/components/editor-utils.js","webpack://mermaid-live-editor/./src/error-store.js","webpack://mermaid-live-editor/webpack/bootstrap","webpack://mermaid-live-editor/webpack/runtime/compat get default export","webpack://mermaid-live-editor/webpack/runtime/define property getters","webpack://mermaid-live-editor/webpack/runtime/ensure chunk","webpack://mermaid-live-editor/webpack/runtime/get javascript chunk filename","webpack://mermaid-live-editor/webpack/runtime/get mini-css chunk filename","webpack://mermaid-live-editor/webpack/runtime/global","webpack://mermaid-live-editor/webpack/runtime/harmony module decorator","webpack://mermaid-live-editor/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid-live-editor/webpack/runtime/load script","webpack://mermaid-live-editor/webpack/runtime/make namespace object","webpack://mermaid-live-editor/webpack/runtime/node module decorator","webpack://mermaid-live-editor/webpack/runtime/publicPath","webpack://mermaid-live-editor/webpack/runtime/jsonp chunk loading","webpack://mermaid-live-editor/./src/main.js"],"names":[],"mappings":";;;;;;;;;;AAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACxCa;;AAEb,YAAY,mBAAO,CAAC,4DAAS;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4IAA4I,kCAAkC;AAC9K,gCAAgC,0BAA0B;AAC1D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,mBAAmB;AACvD;;AAEA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzIa;;AAEb;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;ACdA;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,8aAA8a,wBAAwB,0BAA0B,KAAK,+CAA+C,oBAAoB,qBAAqB,iBAAiB,kBAAkB,gCAAgC,KAAK,wDAAwD,4BAA4B,KAAK,uDAAuD,kCAAkC,KAAK,yCAAyC,sBAAsB,4BAA4B,sCAAsC,yBAAyB,6FAA6F,kDAAkD,sBAAsB,KAAK,yDAAyD,iDAAiD,4BAA4B,4FAA4F,4BAA4B,KAAK,kDAAkD,oBAAoB,0BAA0B,KAAK,0CAA0C,sBAAsB,wBAAwB,KAAK,iIAAiI,mBAAmB,KAAK,mEAAmE,uBAAuB,KAAK,kDAAkD,qBAAqB,KAAK,6DAA6D,qBAAqB,oCAAoC,uBAAuB,wBAAwB,yBAAyB,KAAK,kEAAkE,mCAAmC,KAAK,6DAA6D,uBAAuB,KAAK,gFAAgF,uBAAuB,iGAAiG,uBAAuB,sBAAsB,oBAAoB,0BAA0B,8BAA8B,yBAAyB,KAAK,WAAW,8IAA8I,QAAQ,MAAM,YAAY,aAAa,OAAO,KAAK,UAAU,UAAU,UAAU,UAAU,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,YAAY,aAAa,yBAAyB,OAAO,KAAK,UAAU,OAAO,KAAK,wBAAwB,OAAO,MAAM,YAAY,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,MAAM,aAAa,MAAM,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,YAAY,MAAM,wBAAwB,WAAW,YAAY,WAAW,UAAU,YAAY,aAAa,aAAa,8ZAA8Z,wBAAwB,0BAA0B,KAAK,+CAA+C,oBAAoB,qBAAqB,iBAAiB,kBAAkB,gCAAgC,KAAK,wDAAwD,4BAA4B,KAAK,uDAAuD,kCAAkC,KAAK,yCAAyC,sBAAsB,4BAA4B,sCAAsC,yBAAyB,6FAA6F,kDAAkD,sBAAsB,KAAK,yDAAyD,iDAAiD,4BAA4B,4FAA4F,4BAA4B,KAAK,kDAAkD,oBAAoB,0BAA0B,KAAK,0CAA0C,sBAAsB,wBAAwB,KAAK,iIAAiI,mBAAmB,KAAK,mEAAmE,uBAAuB,KAAK,kDAAkD,qBAAqB,KAAK,6DAA6D,qBAAqB,oCAAoC,uBAAuB,wBAAwB,yBAAyB,KAAK,kEAAkE,mCAAmC,KAAK,6DAA6D,uBAAuB,KAAK,gFAAgF,uBAAuB,iGAAiG,uBAAuB,sBAAsB,oBAAoB,0BAA0B,8BAA8B,yBAAyB,KAAK,uBAAuB;AAC/jM;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,kbAAkb,yBAAyB,4EAA4E,KAAK,OAAO,oIAAoI,QAAQ,MAAM,wBAAwB,WAAW,iaAAia,yBAAyB,4EAA4E,KAAK,mBAAmB;AACtvC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+aAA+a,6BAA6B,oBAAoB,kBAAkB,mBAAmB,yBAAyB,sBAAsB,qCAAqC,8BAA8B,0BAA0B,KAAK,mCAAmC,uCAAuC,KAAK,iCAAiC,mBAAmB,sBAAsB,KAAK,mCAAmC,sBAAsB,gCAAgC,KAAK,WAAW,wIAAwI,QAAQ,MAAM,YAAY,WAAW,UAAU,UAAU,YAAY,WAAW,YAAY,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,OAAO,KAAK,UAAU,YAAY,+ZAA+Z,6BAA6B,oBAAoB,kBAAkB,mBAAmB,yBAAyB,sBAAsB,qCAAqC,8BAA8B,0BAA0B,KAAK,mCAAmC,uCAAuC,KAAK,iCAAiC,mBAAmB,sBAAsB,KAAK,mCAAmC,sBAAsB,gCAAgC,KAAK,uBAAuB;AAC9oE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,mbAAmb,uBAAuB,kBAAkB,sBAAsB,uBAAuB,mBAAmB,kBAAkB,mBAAmB,oCAAoC,mBAAmB,8BAA8B,wBAAwB,gCAAgC,4BAA4B,KAAK,2EAA2E,iBAAiB,KAAK,2CAA2C,uBAAuB,KAAK,iDAAiD,uBAAuB,KAAK,wDAAwD,mBAAmB,kBAAkB,oCAAoC,yBAAyB,wBAAwB,uBAAuB,mBAAmB,iBAAiB,uCAAuC,KAAK,2HAA2H,0BAA0B,KAAK,WAAW,4IAA4I,QAAQ,MAAM,YAAY,WAAW,UAAU,YAAY,WAAW,UAAU,UAAU,YAAY,WAAW,YAAY,aAAa,aAAa,aAAa,OAAO,MAAM,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,aAAa,aAAa,WAAW,UAAU,YAAY,OAAO,YAAY,MAAM,YAAY,maAAma,uBAAuB,kBAAkB,sBAAsB,uBAAuB,mBAAmB,kBAAkB,mBAAmB,oCAAoC,mBAAmB,8BAA8B,wBAAwB,gCAAgC,4BAA4B,KAAK,2EAA2E,iBAAiB,KAAK,2CAA2C,uBAAuB,KAAK,iDAAiD,uBAAuB,KAAK,wDAAwD,mBAAmB,kBAAkB,oCAAoC,yBAAyB,wBAAwB,uBAAuB,mBAAmB,iBAAiB,uCAAuC,KAAK,2HAA2H,0BAA0B,KAAK,uBAAuB;AAC/0G;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC8H;AAC7B;AACjG,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,mbAAmb,YAAY,iCAAiC,OAAO,KAAK,iCAAiC,+GAA+G,KAAK,WAAW,8JAA8J,QAAQ,MAAM,KAAK,YAAY,MAAM,MAAM,KAAK,YAAY,aAAa,maAAma,YAAY,iCAAiC,OAAO,KAAK,iCAAiC,+GAA+G,KAAK,uBAAuB;AAC3/C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC8H;AAC7B;AACjG,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,qbAAqb,mBAAmB,KAAK,WAAW,iKAAiK,QAAQ,MAAM,UAAU,oaAAoa,mBAAmB,KAAK,uBAAuB;AACpmC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;;;;ACPvC;AAC8H;AAC7B;AACO;AAC9C;AAC1D,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F,yCAAyC,yEAA+B,CAAC,iDAA6B;AACtG;AACA,saAAsa,+BAA+B,gFAAgF,KAAK,qCAAqC,gDAAgD,4BAA4B,4BAA4B,2BAA2B,yBAAyB,0CAA0C,yCAAyC,wBAAwB,gCAAgC,4BAA4B,KAAK,4EAA4E,mJAAmJ,QAAQ,MAAM,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,OAAO,4ZAA4Z,+BAA+B,mDAAmD,KAAK,qCAAqC,gDAAgD,4BAA4B,4BAA4B,2BAA2B,yBAAyB,0CAA0C,yCAAyC,wBAAwB,gCAAgC,4BAA4B,KAAK,wFAAwF;AACztE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACVvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,yaAAya,yBAAyB,oBAAoB,KAAK,6BAA6B,mBAAmB,2BAA2B,sBAAsB,sBAAsB,oBAAoB,qBAAqB,KAAK,WAAW,kJAAkJ,QAAQ,MAAM,YAAY,WAAW,MAAM,KAAK,UAAU,YAAY,WAAW,UAAU,UAAU,UAAU,wZAAwZ,yBAAyB,oBAAoB,KAAK,6BAA6B,mBAAmB,2BAA2B,sBAAsB,sBAAsB,oBAAoB,qBAAqB,KAAK,uBAAuB;AAClhD;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+aAA+a,uBAAuB,0BAA0B,sBAAsB,sBAAsB,uBAAuB,wBAAwB,0BAA0B,yBAAyB,4BAA4B,6BAA6B,KAAK,kCAAkC,uBAAuB,yBAAyB,uBAAuB,0BAA0B,KAAK,WAAW,gJAAgJ,QAAQ,MAAM,YAAY,aAAa,WAAW,UAAU,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,+ZAA+Z,uBAAuB,0BAA0B,sBAAsB,sBAAsB,uBAAuB,wBAAwB,0BAA0B,yBAAyB,4BAA4B,6BAA6B,KAAK,kCAAkC,uBAAuB,yBAAyB,uBAAuB,0BAA0B,KAAK,uBAAuB;AACl9D;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4aAA4a,mBAAmB,iBAAiB,KAAK,4CAA4C,sBAAsB,mBAAmB,KAAK,WAAW,4IAA4I,QAAQ,MAAM,UAAU,UAAU,MAAM,KAAK,UAAU,UAAU,2ZAA2Z,mBAAmB,iBAAiB,KAAK,4CAA4C,sBAAsB,mBAAmB,KAAK,uBAAuB;AAC5zC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,udAAud,yBAAyB,KAAK,4CAA4C,sBAAsB,kBAAkB,KAAK,uCAAuC,yBAAyB,eAAe,iBAAiB,KAAK,wCAAwC,gCAAgC,KAAK,8DAA8D,6BAA6B,KAAK,uEAAuE,8DAA8D,KAAK,6CAA6C,8DAA8D,KAAK,6GAA6G,mEAAmE,KAAK,6GAA6G,mEAAmE,KAAK,iDAAiD,UAAU,oCAAoC,EAAE,YAAY,yBAAyB,EAAE,KAAK,6CAA6C,UAAU,oCAAoC,EAAE,oIAAoI,yBAAyB,EAAE,KAAK,sDAAsD,UAAU,uCAAuC,EAAE,YAAY,yBAAyB,EAAE,KAAK,kDAAkD,UAAU,uCAAuC,EAAE,oIAAoI,yBAAyB,EAAE,KAAK,OAAO,8IAA8I,OAAO,cAAc,MAAM,YAAY,OAAO,KAAK,UAAU,UAAU,MAAM,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,OAAO,UAAU,KAAK,YAAY,OAAO,YAAY,MAAM,YAAY,MAAM,KAAK,YAAY,MAAM,MAAM,YAAY,MAAM,MAAM,YAAY,OAAO,KAAK,sBAAsB,uBAAuB,MAAM,KAAK,sBAAsB,aAAa,uBAAuB,OAAO,KAAK,sBAAsB,uBAAuB,MAAM,KAAK,sBAAsB,aAAa,uBAAuB,ucAAuc,yBAAyB,KAAK,4CAA4C,sBAAsB,kBAAkB,KAAK,uCAAuC,yBAAyB,eAAe,iBAAiB,KAAK,wCAAwC,gCAAgC,KAAK,8DAA8D,6BAA6B,KAAK,uEAAuE,8DAA8D,KAAK,6CAA6C,8DAA8D,KAAK,6GAA6G,mEAAmE,KAAK,6GAA6G,mEAAmE,KAAK,iDAAiD,UAAU,oCAAoC,EAAE,YAAY,yBAAyB,EAAE,KAAK,6CAA6C,UAAU,oCAAoC,EAAE,oIAAoI,yBAAyB,EAAE,KAAK,sDAAsD,UAAU,uCAAuC,EAAE,YAAY,yBAAyB,EAAE,KAAK,kDAAkD,UAAU,uCAAuC,EAAE,oIAAoI,yBAAyB,EAAE,KAAK,mBAAmB;AAC5oK;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,yaAAya,sBAAsB,yBAAyB,uBAAuB,kBAAkB,wBAAwB,gCAAgC,4BAA4B,0BAA0B,qCAAqC,yBAAyB,KAAK,8BAA8B,oBAAoB,KAAK,uCAAuC,uBAAuB,KAAK,mFAAmF,uBAAuB,4BAA4B,KAAK,sFAAsF,sMAAsM,KAAK,sEAAsE,oBAAoB,KAAK,4BAA4B,gDAAgD,KAAK,0BAA0B,sBAAsB,0BAA0B,yBAAyB,0BAA0B,kBAAkB,KAAK,0GAA0G,oBAAoB,KAAK,uGAAuG,uBAAuB,KAAK,wDAAwD,yBAAyB,KAAK,sBAAsB,yBAAyB,KAAK,8BAA8B,uBAAuB,KAAK,+BAA+B,oBAAoB,KAAK,4BAA4B,yBAAyB,uBAAuB,KAAK,gDAAgD,4BAA4B,4BAA4B,KAAK,6CAA6C,sBAAsB,wBAAwB,KAAK,sDAAsD,oBAAoB,uBAAuB,KAAK,wEAAwE,yBAAyB,sBAAsB,KAAK,sFAAsF,yBAAyB,KAAK,gEAAgE,qBAAqB,yBAAyB,6BAA6B,KAAK,0DAA0D,mBAAmB,KAAK,qDAAqD,mBAAmB,KAAK,mDAAmD,qBAAqB,KAAK,sDAAsD,iCAAiC,wFAAwF,qCAAqC,KAAK,WAAW,sIAAsI,QAAQ,MAAM,UAAU,YAAY,aAAa,WAAW,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,OAAO,OAAO,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,YAAY,aAAa,aAAa,WAAW,MAAM,OAAO,UAAU,MAAM,OAAO,YAAY,OAAO,YAAY,MAAM,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,YAAY,WAAW,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,KAAK,KAAK,UAAU,MAAM,KAAK,UAAU,KAAK,KAAK,YAAY,aAAa,aAAa,aAAa,yZAAyZ,sBAAsB,yBAAyB,uBAAuB,kBAAkB,wBAAwB,gCAAgC,4BAA4B,0BAA0B,qCAAqC,yBAAyB,KAAK,8BAA8B,oBAAoB,KAAK,uCAAuC,uBAAuB,KAAK,mFAAmF,uBAAuB,4BAA4B,KAAK,sFAAsF,sMAAsM,KAAK,sEAAsE,oBAAoB,KAAK,4BAA4B,gDAAgD,KAAK,0BAA0B,sBAAsB,0BAA0B,yBAAyB,0BAA0B,kBAAkB,KAAK,0GAA0G,oBAAoB,KAAK,uGAAuG,uBAAuB,KAAK,wDAAwD,yBAAyB,KAAK,sBAAsB,yBAAyB,KAAK,8BAA8B,uBAAuB,KAAK,+BAA+B,oBAAoB,KAAK,4BAA4B,yBAAyB,uBAAuB,KAAK,gDAAgD,4BAA4B,4BAA4B,KAAK,6CAA6C,sBAAsB,wBAAwB,KAAK,sDAAsD,oBAAoB,uBAAuB,KAAK,wEAAwE,yBAAyB,sBAAsB,KAAK,sFAAsF,yBAAyB,KAAK,gEAAgE,qBAAqB,yBAAyB,6BAA6B,KAAK,0DAA0D,mBAAmB,KAAK,qDAAqD,mBAAmB,KAAK,mDAAmD,qBAAqB,KAAK,sDAAsD,iCAAiC,wFAAwF,qCAAqC,KAAK,uBAAuB;AACz+O;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4dAA4d,oBAAoB,qEAAqE,8BAA8B,KAAK,oCAAoC,kFAAkF,uCAAuC,mCAAmC,yBAAyB,kBAAkB,mBAAmB,sCAAsC,4BAA4B,qEAAqE,yCAAyC,0BAA0B,yBAAyB,oEAAoE,2DAA2D,mBAAmB,uBAAuB,8BAA8B,cAAc,KAAK,uGAAuG,qBAAqB,uBAAuB,mEAAmE,0HAA0H,oBAAoB,mBAAmB,KAAK,qHAAqH,kBAAkB,yBAAyB,uBAAuB,uBAAuB,mEAAmE,yHAAyH,mBAAmB,KAAK,sMAAsM,yBAAyB,KAAK,oNAAoN,oCAAoC,KAAK,mCAAmC,oBAAoB,qBAAqB,uBAAuB,4BAA4B,yBAAyB,KAAK,yMAAyM,gCAAgC,KAAK,+GAA+G,kBAAkB,KAAK,WAAW,8IAA8I,QAAQ,cAAc,MAAM,sBAAsB,aAAa,aAAa,OAAO,MAAM,YAAY,aAAa,aAAa,aAAa,aAAa,WAAW,UAAU,YAAY,cAAc,aAAa,aAAa,aAAa,cAAc,uBAAuB,OAAO,KAAK,UAAU,YAAY,aAAa,WAAW,MAAM,KAAK,UAAU,wBAAwB,OAAO,KAAK,UAAU,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,yBAAyB,OAAO,KAAK,UAAU,MAAM,MAAM,YAAY,OAAO,MAAM,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,aAAa,OAAO,YAAY,QAAQ,YAAY,OAAO,MAAM,UAAU,2cAA2c,oBAAoB,qEAAqE,8BAA8B,KAAK,oCAAoC,kFAAkF,uCAAuC,mCAAmC,yBAAyB,kBAAkB,mBAAmB,sCAAsC,4BAA4B,qEAAqE,yCAAyC,0BAA0B,yBAAyB,oEAAoE,2DAA2D,mBAAmB,uBAAuB,8BAA8B,cAAc,KAAK,uGAAuG,qBAAqB,uBAAuB,mEAAmE,0HAA0H,oBAAoB,mBAAmB,KAAK,qHAAqH,kBAAkB,yBAAyB,uBAAuB,uBAAuB,mEAAmE,yHAAyH,mBAAmB,KAAK,sMAAsM,yBAAyB,KAAK,oNAAoN,oCAAoC,KAAK,mCAAmC,oBAAoB,qBAAqB,uBAAuB,4BAA4B,yBAAyB,KAAK,yMAAyM,gCAAgC,KAAK,+GAA+G,kBAAkB,KAAK,uBAAuB;AACl5N;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4aAA4a,yBAAyB,qBAAqB,iBAAiB,8BAA8B,qDAAqD,KAAK,+BAA+B,oCAAoC,KAAK,wFAAwF,+CAA+C,KAAK,qCAAqC,yBAAyB,kBAAkB,mBAAmB,KAAK,8CAA8C,4BAA4B,8BAA8B,kBAAkB,mBAAmB,2BAA2B,mBAAmB,2BAA2B,yBAAyB,mBAAmB,qBAAqB,KAAK,6CAA6C,8BAA8B,KAAK,sDAAsD,qBAAqB,+BAA+B,0DAA0D,mDAAmD,KAAK,yEAAyE,oBAAoB,2CAA2C,4DAA4D,0BAA0B,KAAK,+CAA+C,yBAAyB,4BAA4B,kBAAkB,aAAa,cAAc,6BAA6B,4BAA4B,yBAAyB,4BAA4B,KAAK,8DAA8D,wBAAwB,KAAK,6DAA6D,4BAA4B,uBAAuB,uBAAuB,kBAAkB,8BAA8B,qBAAqB,sBAAsB,wBAAwB,uBAAuB,uBAAuB,4BAA4B,KAAK,yEAAyE,yBAAyB,iBAAiB,eAAe,KAAK,0DAA0D,uBAAuB,KAAK,mEAAmE,mCAAmC,kBAAkB,mBAAmB,KAAK,WAAW,4IAA4I,QAAQ,MAAM,YAAY,WAAW,UAAU,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,OAAO,YAAY,WAAW,MAAM,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,UAAU,YAAY,WAAW,YAAY,aAAa,WAAW,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,wBAAwB,yBAAyB,WAAW,MAAM,KAAK,sBAAsB,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,WAAW,UAAU,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,aAAa,MAAM,YAAY,OAAO,KAAK,YAAY,aAAa,aAAa,WAAW,YAAY,WAAW,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,YAAY,MAAM,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,2ZAA2Z,yBAAyB,qBAAqB,iBAAiB,8BAA8B,qDAAqD,KAAK,+BAA+B,oCAAoC,KAAK,wFAAwF,+CAA+C,KAAK,qCAAqC,yBAAyB,kBAAkB,mBAAmB,KAAK,8CAA8C,4BAA4B,8BAA8B,kBAAkB,mBAAmB,2BAA2B,mBAAmB,2BAA2B,yBAAyB,mBAAmB,qBAAqB,KAAK,6CAA6C,8BAA8B,KAAK,sDAAsD,qBAAqB,+BAA+B,0DAA0D,mDAAmD,KAAK,yEAAyE,oBAAoB,2CAA2C,4DAA4D,0BAA0B,KAAK,+CAA+C,yBAAyB,4BAA4B,kBAAkB,aAAa,cAAc,6BAA6B,4BAA4B,yBAAyB,4BAA4B,KAAK,8DAA8D,wBAAwB,KAAK,6DAA6D,4BAA4B,uBAAuB,uBAAuB,kBAAkB,8BAA8B,qBAAqB,sBAAsB,wBAAwB,uBAAuB,uBAAuB,4BAA4B,KAAK,yEAAyE,yBAAyB,iBAAiB,eAAe,KAAK,0DAA0D,uBAAuB,KAAK,mEAAmE,mCAAmC,kBAAkB,mBAAmB,KAAK,uBAAuB;AACt6M;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,8aAA8a,oBAAoB,0BAA0B,wBAAwB,KAAK,qDAAqD,4BAA4B,iDAAiD,oDAAoD,yBAAyB,0DAA0D,iDAAiD,6BAA6B,kBAAkB,sBAAsB,uBAAuB,oBAAoB,KAAK,iEAAiE,qBAAqB,KAAK,gEAAgE,sBAAsB,KAAK,wHAAwH,kDAAkD,kBAAkB,8CAA8C,iDAAiD,uDAAuD,KAAK,+DAA+D,4BAA4B,KAAK,qEAAqE,iBAAiB,KAAK,OAAO,0JAA0J,QAAQ,MAAM,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,WAAW,UAAU,YAAY,WAAW,MAAM,KAAK,UAAU,MAAM,KAAK,UAAU,OAAO,MAAM,YAAY,WAAW,YAAY,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,6ZAA6Z,oBAAoB,0BAA0B,wBAAwB,KAAK,qDAAqD,4BAA4B,iDAAiD,oDAAoD,yBAAyB,0DAA0D,iDAAiD,6BAA6B,kBAAkB,sBAAsB,uBAAuB,oBAAoB,KAAK,iEAAiE,qBAAqB,KAAK,gEAAgE,sBAAsB,KAAK,wHAAwH,kDAAkD,kBAAkB,8CAA8C,iDAAiD,uDAAuD,KAAK,+DAA+D,4BAA4B,KAAK,qEAAqE,iBAAiB,KAAK,mBAAmB;AACxuH;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,waAAwa,yBAAyB,mBAAmB,kBAAkB,0BAA0B,KAAK,oCAAoC,wBAAwB,gCAAgC,4BAA4B,KAAK,mDAAmD,mBAAmB,KAAK,2BAA2B,yBAAyB,kBAAkB,mBAAmB,KAAK,6DAA6D,kBAAkB,sBAAsB,KAAK,0BAA0B,yBAAyB,8BAA8B,uBAAuB,kBAAkB,KAAK,qDAAqD,sBAAsB,yBAAyB,KAAK,0EAA0E,+BAA+B,KAAK,qHAAqH,4BAA4B,KAAK,+DAA+D,qBAAqB,KAAK,yCAAyC,4BAA4B,uBAAuB,0BAA0B,sBAAsB,yBAAyB,KAAK,2DAA2D,oBAAoB,0BAA0B,yBAAyB,yBAAyB,uBAAuB,mCAAmC,8BAA8B,uBAAuB,wBAAwB,6BAA6B,yBAAyB,sBAAsB,wBAAwB,mBAAmB,iBAAiB,eAAe,KAAK,2CAA2C,sCAAsC,KAAK,qCAAqC,iBAAiB,KAAK,qCAAqC,gBAAgB,KAAK,8CAA8C,oBAAoB,0BAA0B,6BAA6B,6BAA6B,eAAe,KAAK,sGAAsG,kBAAkB,KAAK,kDAAkD,mBAAmB,6BAA6B,+BAA+B,4BAA4B,uBAAuB,kBAAkB,mBAAmB,qBAAqB,gBAAgB,iBAAiB,oBAAoB,0BAA0B,8BAA8B,sBAAsB,KAAK,wDAAwD,uBAAuB,KAAK,0CAA0C,yBAAyB,6BAA6B,kBAAkB,mBAAmB,aAAa,cAAc,gCAAgC,yBAAyB,0BAA0B,mBAAmB,2BAA2B,KAAK,gDAAgD,oBAAoB,KAAK,wDAAwD,mBAAmB,KAAK,2CAA2C,uBAAuB,KAAK,WAAW,oIAAoI,QAAQ,MAAM,YAAY,WAAW,UAAU,YAAY,OAAO,KAAK,YAAY,aAAa,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,UAAU,UAAU,OAAO,KAAK,YAAY,aAAa,aAAa,WAAW,MAAM,KAAK,UAAU,YAAY,OAAO,YAAY,MAAM,YAAY,OAAO,UAAU,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,UAAU,KAAK,YAAY,aAAa,aAAa,WAAW,YAAY,OAAO,aAAa,MAAM,UAAU,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,aAAa,WAAW,YAAY,WAAW,UAAU,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,aAAa,WAAW,MAAM,MAAM,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,aAAa,aAAa,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,YAAY,aAAa,WAAW,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,WAAW,UAAU,UAAU,UAAU,YAAY,aAAa,aAAa,WAAW,YAAY,OAAO,KAAK,UAAU,MAAM,WAAW,KAAK,UAAU,MAAM,KAAK,YAAY,wZAAwZ,yBAAyB,mBAAmB,kBAAkB,0BAA0B,KAAK,oCAAoC,wBAAwB,gCAAgC,4BAA4B,KAAK,mDAAmD,mBAAmB,KAAK,2BAA2B,yBAAyB,kBAAkB,mBAAmB,KAAK,6DAA6D,kBAAkB,sBAAsB,KAAK,0BAA0B,yBAAyB,8BAA8B,uBAAuB,kBAAkB,KAAK,qDAAqD,sBAAsB,yBAAyB,KAAK,0EAA0E,+BAA+B,KAAK,qHAAqH,4BAA4B,KAAK,+DAA+D,qBAAqB,KAAK,yCAAyC,4BAA4B,uBAAuB,0BAA0B,sBAAsB,yBAAyB,KAAK,2DAA2D,oBAAoB,0BAA0B,yBAAyB,yBAAyB,uBAAuB,mCAAmC,8BAA8B,uBAAuB,wBAAwB,6BAA6B,yBAAyB,sBAAsB,wBAAwB,mBAAmB,iBAAiB,eAAe,KAAK,2CAA2C,sCAAsC,KAAK,qCAAqC,iBAAiB,KAAK,qCAAqC,gBAAgB,KAAK,8CAA8C,oBAAoB,0BAA0B,6BAA6B,6BAA6B,eAAe,KAAK,sGAAsG,kBAAkB,KAAK,kDAAkD,mBAAmB,6BAA6B,+BAA+B,4BAA4B,uBAAuB,kBAAkB,mBAAmB,qBAAqB,gBAAgB,iBAAiB,oBAAoB,0BAA0B,8BAA8B,sBAAsB,KAAK,wDAAwD,uBAAuB,KAAK,0CAA0C,yBAAyB,6BAA6B,kBAAkB,mBAAmB,aAAa,cAAc,gCAAgC,yBAAyB,0BAA0B,mBAAmB,2BAA2B,KAAK,gDAAgD,oBAAoB,KAAK,wDAAwD,mBAAmB,KAAK,2CAA2C,uBAAuB,KAAK,uBAAuB;AAC34Q;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,qbAAqb,mBAAmB,KAAK,iSAAiS,mDAAmD,4KAA4K,uXAAuX,KAAK,WAAW,kJAAkJ,QAAQ,MAAM,UAAU,MAAM,YAAY,OAAO,cAAc,saAAsa,mBAAmB,KAAK,iSAAiS,mDAAmD,4KAA4K,uXAAuX,KAAK,uBAAuB;AACt3F;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,sbAAsb,kBAAkB,kBAAkB,uBAAuB,uCAAuC,kDAAkD,gBAAgB,kBAAkB,yBAAyB,cAAc,oBAAoB,KAAK,yDAAyD,uBAAuB,KAAK,2DAA2D,cAAc,qCAAqC,KAAK,gEAAgE,kBAAkB,KAAK,2DAA2D,+BAA+B,6BAA6B,0CAA0C,wCAAwC,4CAA4C,KAAK,qYAAqY,OAAO,sCAAsC,MAAM,yCAAyC,KAAK,yCAAyC,EAAE,WAAW,kJAAkJ,QAAQ,MAAM,UAAU,UAAU,wBAAwB,OAAO,KAAK,UAAU,UAAU,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,aAAa,aAAa,aAAa,OAAO,UAAU,KAAK,+dAA+d,kBAAkB,kBAAkB,uBAAuB,uCAAuC,kDAAkD,gBAAgB,kBAAkB,yBAAyB,cAAc,oBAAoB,KAAK,yDAAyD,uBAAuB,KAAK,2DAA2D,cAAc,qCAAqC,KAAK,gEAAgE,kBAAkB,KAAK,2DAA2D,+BAA+B,6BAA6B,0CAA0C,wCAAwC,4CAA4C,KAAK,qYAAqY,OAAO,sCAAsC,MAAM,yCAAyC,KAAK,yCAAyC,EAAE,uBAAuB;AACp7H;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,waAAwa,yBAAyB,kBAAkB,yBAAyB,KAAK,+BAA+B,2BAA2B,KAAK,mCAAmC,yBAAyB,KAAK,uCAAuC,uBAAuB,KAAK,uCAAuC,uBAAuB,KAAK,qCAAqC,yBAAyB,KAAK,yCAAyC,uBAAuB,KAAK,yCAAyC,uBAAuB,KAAK,+BAA+B,iCAAiC,sCAAsC,KAAK,iDAAiD,uBAAuB,KAAK,qCAAqC,yCAAyC,KAAK,gIAAgI,sBAAsB,KAAK,WAAW,oIAAoI,QAAQ,MAAM,YAAY,WAAW,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,WAAW,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,MAAM,UAAU,wZAAwZ,yBAAyB,kBAAkB,yBAAyB,KAAK,+BAA+B,2BAA2B,KAAK,mCAAmC,yBAAyB,KAAK,uCAAuC,uBAAuB,KAAK,uCAAuC,uBAAuB,KAAK,qCAAqC,yBAAyB,KAAK,yCAAyC,uBAAuB,KAAK,yCAAyC,uBAAuB,KAAK,+BAA+B,iCAAiC,sCAAsC,KAAK,iDAAiD,uBAAuB,KAAK,qCAAqC,yCAAyC,KAAK,gIAAgI,sBAAsB,KAAK,uBAAuB;AAC1rG;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC8H;AAC7B;AACjG,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,2dAA2d,sBAAsB,iCAAiC,KAAK,+CAA+C,iBAAiB,0GAA0G,2CAA2C,KAAK,6CAA6C,iBAAiB,2BAA2B,KAAK,kDAAkD,uCAAuC,KAAK,uFAAuF,yBAAyB,oBAAoB,KAAK,8CAA8C,qBAAqB,aAAa,gBAAgB,kBAAkB,kBAAkB,4CAA4C,KAAK,+CAA+C,qBAAqB,eAAe,cAAc,mBAAmB,iBAAiB,4CAA4C,KAAK,0DAA0D,qBAAqB,aAAa,cAAc,kBAAkB,iBAAiB,KAAK,mDAAmD,8CAA8C,KAAK,gHAAgH,0CAA0C,KAAK,gEAAgE,0CAA0C,KAAK,iEAAiE,0CAA0C,KAAK,iEAAiE,0CAA0C,KAAK,uEAAuE,0CAA0C,KAAK,kEAAkE,oCAAoC,KAAK,uEAAuE,0CAA0C,KAAK,wEAAwE,yCAAyC,KAAK,yDAAyD,uBAAuB,KAAK,0DAA0D,4CAA4C,KAAK,8DAA8D,8CAA8C,KAAK,0DAA0D,uBAAuB,KAAK,2DAA2D,uBAAuB,KAAK,+DAA+D,uBAAuB,KAAK,WAAW,qJAAqJ,QAAQ,WAAW,KAAK,UAAU,YAAY,OAAO,KAAK,WAAW,YAAY,cAAc,aAAa,MAAM,KAAK,UAAU,YAAY,MAAM,KAAK,YAAY,OAAO,YAAY,MAAM,YAAY,WAAW,KAAK,KAAK,UAAU,UAAU,UAAU,UAAU,UAAU,YAAY,MAAM,KAAK,UAAU,UAAU,UAAU,UAAU,UAAU,YAAY,MAAM,KAAK,UAAU,UAAU,UAAU,UAAU,UAAU,KAAK,KAAK,YAAY,OAAO,aAAa,MAAM,YAAY,MAAM,KAAK,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,MAAM,KAAK,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,2cAA2c,sBAAsB,iCAAiC,KAAK,+CAA+C,iBAAiB,0GAA0G,2CAA2C,KAAK,6CAA6C,iBAAiB,2BAA2B,KAAK,kDAAkD,uCAAuC,KAAK,uFAAuF,yBAAyB,oBAAoB,KAAK,8CAA8C,qBAAqB,aAAa,gBAAgB,kBAAkB,kBAAkB,4CAA4C,KAAK,+CAA+C,qBAAqB,eAAe,cAAc,mBAAmB,iBAAiB,4CAA4C,KAAK,0DAA0D,qBAAqB,aAAa,cAAc,kBAAkB,iBAAiB,KAAK,mDAAmD,8CAA8C,KAAK,gHAAgH,0CAA0C,KAAK,gEAAgE,0CAA0C,KAAK,iEAAiE,0CAA0C,KAAK,iEAAiE,0CAA0C,KAAK,uEAAuE,0CAA0C,KAAK,kEAAkE,oCAAoC,KAAK,uEAAuE,0CAA0C,KAAK,wEAAwE,yCAAyC,KAAK,yDAAyD,uBAAuB,KAAK,0DAA0D,4CAA4C,KAAK,8DAA8D,8CAA8C,KAAK,0DAA0D,uBAAuB,KAAK,2DAA2D,uBAAuB,KAAK,+DAA+D,uBAAuB,KAAK,uBAAuB;AACltO;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+aAA+a,yBAAyB,kBAAkB,mBAAmB,KAAK,+CAA+C,yBAAyB,kBAAkB,mBAAmB,2BAA2B,KAAK,8DAA8D,8BAA8B,KAAK,qDAAqD,kBAAkB,mBAAmB,0BAA0B,yBAAyB,KAAK,wEAAwE,2BAA2B,yBAAyB,KAAK,sFAAsF,oBAAoB,KAAK,iFAAiF,kBAAkB,KAAK,mFAAmF,mBAAmB,KAAK,mHAAmH,mBAAmB,yBAAyB,aAAa,cAAc,iBAAiB,2BAA2B,gDAAgD,KAAK,8HAA8H,mBAAmB,iBAAiB,KAAK,4HAA4H,kBAAkB,kBAAkB,KAAK,WAAW,8IAA8I,QAAQ,MAAM,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,WAAW,UAAU,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,WAAW,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,UAAU,MAAM,KAAK,UAAU,UAAU,8ZAA8Z,yBAAyB,kBAAkB,mBAAmB,KAAK,+CAA+C,yBAAyB,kBAAkB,mBAAmB,2BAA2B,KAAK,8DAA8D,8BAA8B,KAAK,qDAAqD,kBAAkB,mBAAmB,0BAA0B,yBAAyB,KAAK,wEAAwE,2BAA2B,yBAAyB,KAAK,sFAAsF,oBAAoB,KAAK,iFAAiF,kBAAkB,KAAK,mFAAmF,mBAAmB,KAAK,mHAAmH,mBAAmB,yBAAyB,aAAa,cAAc,iBAAiB,2BAA2B,gDAAgD,KAAK,8HAA8H,mBAAmB,iBAAiB,KAAK,4HAA4H,kBAAkB,kBAAkB,KAAK,uBAAuB;AAC54I;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC8H;AAC7B;AACjG,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,0aAA0a,oBAAoB,mBAAmB,0BAA0B,yBAAyB,KAAK,2BAA2B,mBAAmB,yBAAyB,aAAa,iBAAiB,2BAA2B,KAAK,wCAAwC,iBAAiB,KAAK,2CAA2C,4BAA4B,6BAA6B,mBAAmB,yCAAyC,KAAK,2CAA2C,2CAA2C,KAAK,oDAAoD,mBAAmB,KAAK,4BAA4B,sBAAsB,wBAAwB,yBAAyB,qBAAqB,kBAAkB,+BAA+B,0BAA0B,8BAA8B,gCAAgC,iCAAiC,KAAK,6BAA6B,cAAc,uBAAuB,KAAK,8CAA8C,gCAAgC,KAAK,8DAA8D,gHAAgH,KAAK,WAAW,0IAA0I,QAAQ,MAAM,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,WAAW,UAAU,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,YAAY,OAAO,KAAK,YAAY,OAAO,MAAM,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,WAAW,UAAU,YAAY,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,0ZAA0Z,oBAAoB,mBAAmB,0BAA0B,yBAAyB,KAAK,2BAA2B,mBAAmB,yBAAyB,aAAa,iBAAiB,2BAA2B,KAAK,wCAAwC,iBAAiB,KAAK,2CAA2C,4BAA4B,6BAA6B,mBAAmB,yCAAyC,KAAK,2CAA2C,2CAA2C,KAAK,oDAAoD,mBAAmB,KAAK,4BAA4B,sBAAsB,wBAAwB,yBAAyB,qBAAqB,kBAAkB,+BAA+B,0BAA0B,8BAA8B,gCAAgC,iCAAiC,KAAK,6BAA6B,cAAc,uBAAuB,KAAK,8CAA8C,gCAAgC,KAAK,8DAA8D,gHAAgH,KAAK,uBAAuB;AACp5H;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC8H;AAC7B;AACjG,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+aAA+a,yBAAyB,mBAAmB,oBAAoB,0BAA0B,gBAAgB,0BAA0B,KAAK,+BAA+B,oBAAoB,KAAK,sCAAsC,oBAAoB,uBAAuB,cAAc,KAAK,2EAA2E,kCAAkC,KAAK,4BAA4B,uBAAuB,yBAAyB,KAAK,uCAAuC,oBAAoB,wBAAwB,cAAc,KAAK,wEAAwE,gBAAgB,kBAAkB,mBAAmB,kCAAkC,mCAAmC,KAAK,kCAAkC,kBAAkB,KAAK,6BAA6B,oBAAoB,+BAA+B,0BAA0B,KAAK,8DAA8D,8EAA8E,uBAAuB,KAAK,kCAAkC,oBAAoB,6BAA6B,mBAAmB,yBAAyB,KAAK,gCAAgC,yBAAyB,gBAAgB,KAAK,6BAA6B,mBAAmB,oBAAoB,yBAAyB,KAAK,0BAA0B,mBAAmB,KAAK,2HAA2H,uBAAuB,KAAK,oCAAoC,yBAAyB,qBAAqB,KAAK,4BAA4B,yBAAyB,yBAAyB,iBAAiB,oBAAoB,0BAA0B,KAAK,gDAAgD,6BAA6B,uBAAuB,yBAAyB,uBAAuB,0BAA0B,KAAK,6BAA6B,uBAAuB,KAAK,iDAAiD,sBAAsB,qBAAqB,oBAAoB,mBAAmB,0BAA0B,KAAK,8BAA8B,uBAAuB,+BAA+B,KAAK,yDAAyD,yBAAyB,KAAK,2HAA2H,kBAAkB,KAAK,2BAA2B,wBAAwB,sBAAsB,KAAK,4DAA4D,oBAAoB,gDAAgD,wCAAwC,uBAAuB,kCAAkC,KAAK,mDAAmD,6BAA6B,uBAAuB,oBAAoB,mBAAmB,qBAAqB,KAAK,qFAAqF,4BAA4B,8BAA8B,KAAK,kHAAkH,6BAA6B,KAAK,mDAAmD,uBAAuB,oBAAoB,mBAAmB,cAAc,KAAK,sDAAsD,yBAAyB,gBAAgB,KAAK,kDAAkD,uBAAuB,8BAA8B,oBAAoB,6BAA6B,mBAAmB,cAAc,uBAAuB,KAAK,sFAAsF,wBAAwB,KAAK,0EAA0E,oBAAoB,KAAK,sFAAsF,sBAAsB,KAAK,0EAA0E,oBAAoB,0BAA0B,KAAK,gPAAgP,cAAc,yDAAyD,sGAAsG,0BAA0B,KAAK,iFAAiF,iBAAiB,KAAK,sFAAsF,wBAAwB,iEAAiE,wDAAwD,mBAAmB,0BAA0B,8BAA8B,uBAAuB,KAAK,gEAAgE,wBAAwB,KAAK,+EAA+E,wBAAwB,gDAAgD,8DAA8D,oBAAoB,cAAc,wBAAwB,KAAK,4EAA4E,uJAAuJ,KAAK,oFAAoF,gBAAgB,mBAAmB,qBAAqB,6BAA6B,KAAK,8DAA8D,sBAAsB,KAAK,8DAA8D,wBAAwB,mCAAmC,oFAAoF,wBAAwB,4BAA4B,wTAAwT,oBAAoB,KAAK,WAAW,yJAAyJ,QAAQ,MAAM,YAAY,WAAW,UAAU,YAAY,WAAW,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,WAAW,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,WAAW,MAAM,KAAK,UAAU,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,WAAW,YAAY,OAAO,KAAK,UAAU,YAAY,WAAW,YAAY,OAAO,KAAK,YAAY,WAAW,MAAM,KAAK,UAAU,UAAU,YAAY,OAAO,KAAK,UAAU,MAAM,MAAM,YAAY,OAAO,KAAK,YAAY,WAAW,MAAM,KAAK,YAAY,aAAa,WAAW,UAAU,YAAY,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,UAAU,UAAU,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,MAAM,UAAU,MAAM,KAAK,YAAY,WAAW,OAAO,KAAK,sBAAsB,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,WAAW,UAAU,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,UAAU,MAAM,KAAK,YAAY,WAAW,MAAM,KAAK,YAAY,aAAa,WAAW,YAAY,WAAW,UAAU,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,KAAK,KAAK,UAAU,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,sBAAsB,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,wBAAwB,OAAO,KAAK,UAAU,YAAY,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,wBAAwB,OAAO,KAAK,UAAU,UAAU,YAAY,OAAO,KAAK,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,UAAU,UAAU,YAAY,OAAO,KAAK,UAAU,OAAO,KAAK,wBAAwB,OAAO,KAAK,wBAAwB,OAAO,OAAO,UAAU,8ZAA8Z,yBAAyB,mBAAmB,oBAAoB,0BAA0B,gBAAgB,0BAA0B,KAAK,+BAA+B,oBAAoB,KAAK,sCAAsC,oBAAoB,uBAAuB,cAAc,KAAK,2EAA2E,kCAAkC,KAAK,4BAA4B,uBAAuB,yBAAyB,KAAK,uCAAuC,oBAAoB,wBAAwB,cAAc,KAAK,wEAAwE,gBAAgB,kBAAkB,mBAAmB,kCAAkC,mCAAmC,KAAK,kCAAkC,kBAAkB,KAAK,6BAA6B,oBAAoB,+BAA+B,0BAA0B,KAAK,8DAA8D,8EAA8E,uBAAuB,KAAK,kCAAkC,oBAAoB,6BAA6B,mBAAmB,yBAAyB,KAAK,gCAAgC,yBAAyB,gBAAgB,KAAK,6BAA6B,mBAAmB,oBAAoB,yBAAyB,KAAK,0BAA0B,mBAAmB,KAAK,2HAA2H,uBAAuB,KAAK,oCAAoC,yBAAyB,qBAAqB,KAAK,4BAA4B,yBAAyB,yBAAyB,iBAAiB,oBAAoB,0BAA0B,KAAK,gDAAgD,6BAA6B,uBAAuB,yBAAyB,uBAAuB,0BAA0B,KAAK,6BAA6B,uBAAuB,KAAK,iDAAiD,sBAAsB,qBAAqB,oBAAoB,mBAAmB,0BAA0B,KAAK,8BAA8B,uBAAuB,+BAA+B,KAAK,yDAAyD,yBAAyB,KAAK,2HAA2H,kBAAkB,KAAK,2BAA2B,wBAAwB,sBAAsB,KAAK,4DAA4D,oBAAoB,gDAAgD,wCAAwC,uBAAuB,kCAAkC,KAAK,mDAAmD,6BAA6B,uBAAuB,oBAAoB,mBAAmB,qBAAqB,KAAK,qFAAqF,4BAA4B,8BAA8B,KAAK,kHAAkH,6BAA6B,KAAK,mDAAmD,uBAAuB,oBAAoB,mBAAmB,cAAc,KAAK,sDAAsD,yBAAyB,gBAAgB,KAAK,kDAAkD,uBAAuB,8BAA8B,oBAAoB,6BAA6B,mBAAmB,cAAc,uBAAuB,KAAK,sFAAsF,wBAAwB,KAAK,0EAA0E,oBAAoB,KAAK,sFAAsF,sBAAsB,KAAK,0EAA0E,oBAAoB,0BAA0B,KAAK,gPAAgP,cAAc,yDAAyD,sGAAsG,0BAA0B,KAAK,iFAAiF,iBAAiB,KAAK,sFAAsF,wBAAwB,iEAAiE,wDAAwD,mBAAmB,0BAA0B,8BAA8B,uBAAuB,KAAK,gEAAgE,wBAAwB,KAAK,+EAA+E,wBAAwB,gDAAgD,8DAA8D,oBAAoB,cAAc,wBAAwB,KAAK,4EAA4E,uJAAuJ,KAAK,oFAAoF,gBAAgB,mBAAmB,qBAAqB,6BAA6B,KAAK,8DAA8D,sBAAsB,KAAK,8DAA8D,wBAAwB,mCAAmC,oFAAoF,wBAAwB,4BAA4B,wTAAwT,oBAAoB,KAAK,uBAAuB;AAC5zf;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,qbAAqb,mBAAmB,oBAAoB,gBAAgB,iBAAiB,yBAAyB,+BAA+B,mBAAmB,mBAAmB,uBAAuB,yBAAyB,oCAAoC,KAAK,iCAAiC,iCAAiC,8BAA8B,+BAA+B,8BAA8B,+BAA+B,2BAA2B,0BAA0B,8BAA8B,mCAAmC,mCAAmC,iCAAiC,KAAK,2CAA2C,kBAAkB,KAAK,WAAW,oJAAoJ,QAAQ,MAAM,UAAU,UAAU,UAAU,UAAU,YAAY,aAAa,WAAW,UAAU,YAAY,aAAa,aAAa,MAAM,gBAAgB,KAAK,KAAK,UAAU,oaAAoa,mBAAmB,oBAAoB,gBAAgB,iBAAiB,yBAAyB,+BAA+B,mBAAmB,mBAAmB,uBAAuB,yBAAyB,oCAAoC,KAAK,iCAAiC,iCAAiC,8BAA8B,+BAA+B,8BAA8B,+BAA+B,2BAA2B,0BAA0B,8BAA8B,mCAAmC,mCAAmC,iCAAiC,KAAK,2CAA2C,kBAAkB,KAAK,uBAAuB;AAC3jF;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ucAAuc,qBAAqB,yBAAyB,cAAc,aAAa,6BAA6B,KAAK,4DAA4D,qBAAqB,yBAAyB,cAAc,aAAa,6BAA6B,KAAK,yGAAyG,sBAAsB,KAAK,WAAW,6KAA6K,QAAQ,MAAM,UAAU,YAAY,WAAW,UAAU,YAAY,OAAO,KAAK,UAAU,YAAY,WAAW,UAAU,YAAY,OAAO,KAAK,UAAU,ubAAub,qBAAqB,yBAAyB,cAAc,aAAa,6BAA6B,KAAK,4DAA4D,qBAAqB,yBAAyB,cAAc,aAAa,6BAA6B,KAAK,yGAAyG,sBAAsB,KAAK,uBAAuB;AACvhE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,kiBAAkiB,yBAAyB,KAAK,OAAO,2JAA2J,QAAQ,QAAQ,KAAK,KAAK,YAAY,khBAAkhB,yBAAyB,KAAK,mBAAmB;AAC30C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,wbAAwb,yBAAyB,aAAa,KAAK,0JAA0J,yBAAyB,oBAAoB,0BAA0B,8BAA8B,KAAK,WAAW,2JAA2J,QAAQ,MAAM,YAAY,WAAW,MAAM,OAAO,KAAK,KAAK,YAAY,WAAW,YAAY,aAAa,waAAwa,yBAAyB,aAAa,KAAK,0JAA0J,yBAAyB,oBAAoB,0BAA0B,8BAA8B,KAAK,uBAAuB;AACvuD;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,qiBAAqiB,yBAAyB,KAAK,0CAA0C,yBAAyB,KAAK,WAAW,6JAA6J,QAAQ,QAAQ,KAAK,KAAK,YAAY,MAAM,KAAK,YAAY,qhBAAqhB,yBAAyB,KAAK,0CAA0C,yBAAyB,KAAK,uBAAuB;AAClgD;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,8cAA8c,yCAAyC,yBAAyB,wBAAwB,4BAA4B,6BAA6B,6BAA6B,sBAAsB,mBAAmB,KAAK,sDAAsD,uBAAuB,4BAA4B,kBAAkB,KAAK,mEAAmE,sBAAsB,KAAK,WAAW,2JAA2J,QAAQ,MAAM,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,WAAW,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,MAAM,KAAK,UAAU,8bAA8b,yCAAyC,yBAAyB,wBAAwB,4BAA4B,6BAA6B,6BAA6B,sBAAsB,mBAAmB,KAAK,sDAAsD,uBAAuB,4BAA4B,kBAAkB,KAAK,mEAAmE,sBAAsB,KAAK,uBAAuB;AACrnE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,mgBAAmgB,6BAA6B,uCAAuC,gCAAgC,KAAK,iCAAiC,YAAY,8BAA8B,EAAE,YAAY,yBAAyB,KAAK,mJAAmJ,wBAAwB,gCAAgC,4BAA4B,KAAK,oCAAoC,0BAA0B,KAAK,mCAAmC,yBAAyB,kBAAkB,KAAK,8BAA8B,4BAA4B,KAAK,4FAA4F,kBAAkB,0BAA0B,2BAA2B,KAAK,aAAa,mJAAmJ,QAAQ,aAAa,aAAa,MAAM,OAAO,YAAY,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,MAAM,KAAK,YAAY,OAAO,YAAY,SAAS,kfAAkf,6BAA6B,uCAAuC,gCAAgC,KAAK,iCAAiC,YAAY,8BAA8B,EAAE,YAAY,yBAAyB,KAAK,mJAAmJ,wBAAwB,gCAAgC,4BAA4B,KAAK,oCAAoC,0BAA0B,KAAK,mCAAmC,yBAAyB,kBAAkB,KAAK,8BAA8B,4BAA4B,KAAK,4FAA4F,kBAAkB,0BAA0B,2BAA2B,KAAK,yBAAyB;AACngG;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ybAAyb,yBAAyB,aAAa,wBAAwB,KAAK,+JAA+J,yBAAyB,mBAAmB,KAAK,OAAO,qKAAqK,OAAO,MAAM,YAAY,WAAW,YAAY,OAAO,OAAO,KAAK,KAAK,YAAY,WAAW,waAAwa,yBAAyB,aAAa,wBAAwB,KAAK,+JAA+J,yBAAyB,mBAAmB,KAAK,mBAAmB;AACrqD;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,kjBAAkjB,yBAAyB,cAAc,kBAAkB,mBAAmB,KAAK,OAAO,uKAAuK,QAAQ,QAAQ,KAAK,KAAK,YAAY,WAAW,UAAU,UAAU,iiBAAiiB,yBAAyB,cAAc,kBAAkB,mBAAmB,KAAK,mBAAmB;AAC3/C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,shBAAshB,iBAAiB,uCAAuC,KAAK,oEAAoE,iBAAiB,KAAK,qEAAqE,iBAAiB,KAAK,+GAA+G,yBAAyB,eAAe,KAAK,4CAA4C,yBAAyB,iBAAiB,iBAAiB,KAAK,WAAW,mJAAmJ,QAAQ,aAAa,MAAM,UAAU,YAAY,MAAM,KAAK,UAAU,KAAK,KAAK,UAAU,KAAK,aAAa,MAAM,YAAY,WAAW,KAAK,KAAK,YAAY,WAAW,UAAU,qgBAAqgB,iBAAiB,uCAAuC,KAAK,oEAAoE,iBAAiB,KAAK,qEAAqE,iBAAiB,KAAK,+GAA+G,yBAAyB,eAAe,KAAK,4CAA4C,yBAAyB,iBAAiB,iBAAiB,KAAK,uBAAuB;AACx3E;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,sbAAsb,yBAAyB,aAAa,aAAa,KAAK,OAAO,iKAAiK,OAAO,MAAM,YAAY,WAAW,UAAU,qaAAqa,yBAAyB,aAAa,aAAa,KAAK,mBAAmB;AACprC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,sbAAsb,yBAAyB,aAAa,KAAK,OAAO,iJAAiJ,QAAQ,MAAM,YAAY,WAAW,qaAAqa,yBAAyB,aAAa,KAAK,mBAAmB;AACjoC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,6bAA6b,yBAAyB,aAAa,cAAc,kBAAkB,KAAK,OAAO,qKAAqK,QAAQ,MAAM,YAAY,WAAW,UAAU,UAAU,4aAA4a,yBAAyB,aAAa,cAAc,kBAAkB,KAAK,mBAAmB;AACvvC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,yiBAAyiB,yBAAyB,KAAK,iDAAiD,6BAA6B,EAAE,gDAAgD,gCAAgC,EAAE,8CAA8C,8BAA8B,EAAE,+CAA+C,iCAAiC,EAAE,qDAAqD,2BAA2B,EAAE,oDAAoD,8BAA8B,EAAE,kDAAkD,4BAA4B,EAAE,mDAAmD,+BAA+B,EAAE,WAAW,yJAAyJ,QAAQ,QAAQ,KAAK,KAAK,YAAY,OAAO,wBAAwB,yBAAyB,yBAAyB,0BAA0B,yBAAyB,yBAAyB,yBAAyB,4iBAA4iB,yBAAyB,KAAK,iDAAiD,6BAA6B,EAAE,gDAAgD,gCAAgC,EAAE,8CAA8C,8BAA8B,EAAE,+CAA+C,iCAAiC,EAAE,qDAAqD,2BAA2B,EAAE,oDAAoD,8BAA8B,EAAE,kDAAkD,4BAA4B,EAAE,mDAAmD,+BAA+B,EAAE,uBAAuB;AACh0F;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,qbAAqb,yBAAyB,aAAa,KAAK,iDAAiD,yBAAyB,uBAAuB,KAAK,qHAAqH,2BAA2B,KAAK,+GAA+G,6BAA6B,yCAAyC,0BAA0B,wBAAwB,KAAK,uGAAuG,+BAA+B,iCAAiC,yCAAyC,6BAA6B,KAAK,iHAAiH,+BAA+B,iCAAiC,yCAAyC,6BAA6B,KAAK,yCAAyC,oBAAoB,mBAAmB,OAAO,sBAAsB,mBAAmB,OAAO,KAAK,wCAAwC,oBAAoB,mBAAmB,OAAO,sBAAsB,mBAAmB,OAAO,KAAK,yCAAyC,oBAAoB,6BAA6B,OAAO,sBAAsB,6BAA6B,OAAO,KAAK,wBAAwB,uEAAuE,KAAK,uBAAuB,sEAAsE,KAAK,kCAAkC,uEAAuE,KAAK,WAAW,2JAA2J,OAAO,MAAM,YAAY,WAAW,MAAM,KAAK,YAAY,aAAa,OAAO,YAAY,MAAM,YAAY,OAAO,YAAY,MAAM,YAAY,aAAa,aAAa,aAAa,OAAO,YAAY,MAAM,YAAY,aAAa,aAAa,aAAa,OAAO,YAAY,MAAM,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,MAAM,UAAU,KAAK,MAAM,UAAU,KAAK,MAAM,KAAK,MAAM,UAAU,KAAK,MAAM,UAAU,KAAK,MAAM,KAAK,MAAM,YAAY,MAAM,MAAM,YAAY,MAAM,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,qaAAqa,yBAAyB,aAAa,KAAK,iDAAiD,yBAAyB,uBAAuB,KAAK,qHAAqH,2BAA2B,KAAK,+GAA+G,6BAA6B,yCAAyC,0BAA0B,wBAAwB,KAAK,uGAAuG,+BAA+B,iCAAiC,yCAAyC,6BAA6B,KAAK,iHAAiH,+BAA+B,iCAAiC,yCAAyC,6BAA6B,KAAK,yCAAyC,oBAAoB,mBAAmB,OAAO,sBAAsB,mBAAmB,OAAO,KAAK,wCAAwC,oBAAoB,mBAAmB,OAAO,sBAAsB,mBAAmB,OAAO,KAAK,yCAAyC,oBAAoB,6BAA6B,OAAO,sBAAsB,6BAA6B,OAAO,KAAK,wBAAwB,uEAAuE,KAAK,uBAAuB,sEAAsE,KAAK,kCAAkC,uEAAuE,KAAK,uBAAuB;AAC3iK;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ueAAue,iBAAiB,KAAK,yDAAyD,kBAAkB,KAAK,sHAAsH,iCAAiC,EAAE,kDAAkD,uCAAuC,EAAE,oFAAoF,2BAA2B,EAAE,mFAAmF,2BAA2B,EAAE,oFAAoF,kBAAkB,EAAE,2EAA2E,kBAAkB,KAAK,2DAA2D,qCAAqC,EAAE,8DAA8D,kBAAkB,EAAE,uLAAuL,iCAAiC,8BAA8B,+BAA+B,0BAA0B,KAAK,+KAA+K,iBAAiB,KAAK,yDAAyD,wBAAwB,KAAK,mDAAmD,wBAAwB,KAAK,+GAA+G,4BAA4B,KAAK,kEAAkE,sBAAsB,KAAK,WAAW,iJAAiJ,OAAO,cAAc,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,YAAY,yBAAyB,0BAA0B,yBAAyB,yBAAyB,0BAA0B,MAAM,UAAU,KAAK,wBAAwB,0BAA0B,cAAc,SAAS,YAAY,aAAa,aAAa,aAAa,MAAM,QAAQ,UAAU,MAAM,KAAK,YAAY,MAAM,KAAK,YAAY,OAAO,aAAa,MAAM,YAAY,OAAO,KAAK,UAAU,udAAud,iBAAiB,KAAK,yDAAyD,kBAAkB,KAAK,sHAAsH,iCAAiC,EAAE,kDAAkD,uCAAuC,EAAE,oFAAoF,2BAA2B,EAAE,mFAAmF,2BAA2B,EAAE,oFAAoF,kBAAkB,EAAE,2EAA2E,kBAAkB,KAAK,2DAA2D,qCAAqC,EAAE,8DAA8D,kBAAkB,EAAE,uLAAuL,iCAAiC,8BAA8B,+BAA+B,0BAA0B,KAAK,+KAA+K,iBAAiB,KAAK,yDAAyD,wBAAwB,KAAK,mDAAmD,wBAAwB,KAAK,+GAA+G,4BAA4B,KAAK,kEAAkE,sBAAsB,KAAK,uBAAuB;AACztK;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,wcAAwc,wBAAwB,4BAA4B,KAAK,0CAA0C,yBAAyB,wBAAwB,gCAAgC,4BAA4B,KAAK,kDAAkD,yBAAyB,KAAK,iDAAiD,yBAAyB,KAAK,8CAA8C,uBAAuB,KAAK,gDAAgD,qBAAqB,sBAAsB,KAAK,8CAA8C,yBAAyB,kBAAkB,KAAK,iDAAiD,4BAA4B,kBAAkB,6BAA6B,KAAK,4DAA4D,gCAAgC,KAAK,kDAAkD,4BAA4B,yBAAyB,kBAAkB,eAAe,KAAK,gEAAgE,kBAAkB,mBAAmB,oBAAoB,KAAK,WAAW,iJAAiJ,QAAQ,MAAM,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,OAAO,KAAK,YAAY,WAAW,MAAM,KAAK,YAAY,WAAW,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,WAAW,UAAU,MAAM,KAAK,UAAU,UAAU,UAAU,ubAAub,wBAAwB,4BAA4B,KAAK,0CAA0C,yBAAyB,wBAAwB,gCAAgC,4BAA4B,KAAK,kDAAkD,yBAAyB,KAAK,iDAAiD,yBAAyB,KAAK,8CAA8C,uBAAuB,KAAK,gDAAgD,qBAAqB,sBAAsB,KAAK,8CAA8C,yBAAyB,kBAAkB,KAAK,iDAAiD,4BAA4B,kBAAkB,6BAA6B,KAAK,4DAA4D,gCAAgC,KAAK,kDAAkD,4BAA4B,yBAAyB,kBAAkB,eAAe,KAAK,gEAAgE,kBAAkB,mBAAmB,oBAAoB,KAAK,uBAAuB;AAC9pH;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4fAA4f,oBAAoB,KAAK,2GAA2G,qBAAqB,KAAK,sFAAsF,yBAAyB,wBAAwB,qCAAqC,KAAK,oGAAoG,yBAAyB,uBAAuB,KAAK,uCAAuC,yBAAyB,aAAa,KAAK,qDAAqD,mBAAmB,KAAK,iBAAiB,6IAA6I,QAAQ,cAAc,MAAM,UAAU,MAAM,YAAY,aAAa,MAAM,UAAU,MAAM,aAAa,MAAM,YAAY,aAAa,aAAa,OAAO,aAAa,MAAM,YAAY,aAAa,OAAO,KAAK,YAAY,WAAW,MAAM,QAAQ,2eAA2e,oBAAoB,KAAK,2GAA2G,qBAAqB,KAAK,sFAAsF,yBAAyB,wBAAwB,qCAAqC,KAAK,oGAAoG,yBAAyB,uBAAuB,KAAK,uCAAuC,yBAAyB,aAAa,KAAK,qDAAqD,mBAAmB,KAAK,6BAA6B;AACxqF;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4bAA4b,gCAAgC,4BAA4B,KAAK,WAAW,mJAAmJ,QAAQ,MAAM,YAAY,aAAa,4aAA4a,gCAAgC,4BAA4B,KAAK,uBAAuB;AACtsC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ybAAyb,6BAA6B,KAAK,WAAW,yJAAyJ,QAAQ,MAAM,YAAY,yaAAya,6BAA6B,KAAK,uBAAuB;AAC3nC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ieAAie,oBAAoB,0BAA0B,8BAA8B,mBAAmB,kBAAkB,wBAAwB,KAAK,2FAA2F,sBAAsB,oCAAoC,QAAQ,WAAW,oJAAoJ,QAAQ,OAAO,UAAU,YAAY,aAAa,WAAW,UAAU,YAAY,OAAO,MAAM,UAAU,YAAY,idAAid,oBAAoB,0BAA0B,8BAA8B,mBAAmB,kBAAkB,wBAAwB,KAAK,2FAA2F,sBAAsB,oCAAoC,QAAQ,uBAAuB;AACpzD;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+bAA+b,uBAAuB,4BAA4B,8BAA8B,KAAK,gGAAgG,wBAAwB,gCAAgC,4BAA4B,0BAA0B,0BAA0B,KAAK,iDAAiD,4BAA4B,KAAK,uDAAuD,sBAAsB,KAAK,sDAAsD,6BAA6B,qCAAqC,KAAK,wEAAwE,sBAAsB,KAAK,2BAA2B,UAAU,YAAY,sBAAsB,YAAY,YAAY,EAAE,KAAK,oDAAoD,oCAAoC,KAAK,WAAW,iJAAiJ,QAAQ,MAAM,YAAY,aAAa,aAAa,OAAO,MAAM,YAAY,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,OAAO,KAAK,gCAAgC,qBAAqB,OAAO,KAAK,YAAY,+aAA+a,uBAAuB,4BAA4B,8BAA8B,KAAK,gGAAgG,wBAAwB,gCAAgC,4BAA4B,0BAA0B,0BAA0B,KAAK,iDAAiD,4BAA4B,KAAK,uDAAuD,sBAAsB,KAAK,sDAAsD,6BAA6B,qCAAqC,KAAK,wEAAwE,sBAAsB,KAAK,2BAA2B,UAAU,YAAY,sBAAsB,YAAY,YAAY,EAAE,KAAK,oDAAoD,oCAAoC,KAAK,uBAAuB;AACxnG;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+aAA+a,oBAAoB,wBAAwB,gCAAgC,4BAA4B,KAAK,iDAAiD,oBAAoB,KAAK,qDAAqD,oBAAoB,mBAAmB,yBAAyB,uCAAuC,mPAAmP,+BAA+B,iCAAiC,KAAK,2CAA2C,mBAAmB,yBAAyB,wBAAwB,sBAAsB,mBAAmB,cAAc,yBAAyB,KAAK,iDAAiD,mBAAmB,KAAK,6CAA6C,kBAAkB,uBAAuB,sBAAsB,KAAK,iDAAiD,oBAAoB,mBAAmB,yBAAyB,KAAK,4CAA4C,uBAAuB,oBAAoB,yBAAyB,uBAAuB,cAAc,KAAK,2CAA2C,oBAAoB,yBAAyB,KAAK,iDAAiD,iBAAiB,kBAAkB,4BAA4B,2CAA2C,0BAA0B,iDAAiD,yBAAyB,KAAK,kCAAkC,kBAAkB,oBAAoB,KAAK,sCAAsC,yBAAyB,uBAAuB,mBAAmB,wIAAwI,KAAK,0CAA0C,yBAAyB,uBAAuB,mBAAmB,uCAAuC,mPAAmP,+BAA+B,iCAAiC,KAAK,2CAA2C,uBAAuB,KAAK,mCAAmC,yBAAyB,aAAa,iBAAiB,8BAA8B,kBAAkB,6BAA6B,kDAAkD,kDAAkD,KAAK,2CAA2C,oBAAoB,2BAA2B,KAAK,WAAW,iJAAiJ,QAAQ,MAAM,UAAU,YAAY,aAAa,aAAa,OAAO,KAAK,UAAU,OAAO,WAAW,KAAK,UAAU,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,YAAY,aAAa,WAAW,UAAU,UAAU,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,WAAW,QAAQ,WAAW,KAAK,UAAU,UAAU,YAAY,OAAO,KAAK,YAAY,WAAW,YAAY,aAAa,WAAW,MAAM,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,YAAY,OAAO,KAAK,YAAY,aAAa,WAAW,YAAY,aAAa,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,YAAY,WAAW,YAAY,aAAa,aAAa,OAAO,KAAK,UAAU,YAAY,+ZAA+Z,oBAAoB,wBAAwB,gCAAgC,4BAA4B,KAAK,iDAAiD,oBAAoB,KAAK,qDAAqD,oBAAoB,mBAAmB,yBAAyB,uCAAuC,mPAAmP,+BAA+B,iCAAiC,KAAK,2CAA2C,mBAAmB,yBAAyB,wBAAwB,sBAAsB,mBAAmB,cAAc,yBAAyB,KAAK,iDAAiD,mBAAmB,KAAK,6CAA6C,kBAAkB,uBAAuB,sBAAsB,KAAK,iDAAiD,oBAAoB,mBAAmB,yBAAyB,KAAK,4CAA4C,uBAAuB,oBAAoB,yBAAyB,uBAAuB,cAAc,KAAK,2CAA2C,oBAAoB,yBAAyB,KAAK,iDAAiD,iBAAiB,kBAAkB,4BAA4B,2CAA2C,0BAA0B,iDAAiD,yBAAyB,KAAK,kCAAkC,kBAAkB,oBAAoB,KAAK,sCAAsC,yBAAyB,uBAAuB,mBAAmB,wIAAwI,KAAK,0CAA0C,yBAAyB,uBAAuB,mBAAmB,uCAAuC,mPAAmP,+BAA+B,iCAAiC,KAAK,2CAA2C,uBAAuB,KAAK,mCAAmC,yBAAyB,aAAa,iBAAiB,8BAA8B,kBAAkB,6BAA6B,kDAAkD,kDAAkD,KAAK,2CAA2C,oBAAoB,2BAA2B,KAAK,uBAAuB;AACliP;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ybAAyb,qCAAqC,mBAAmB,6BAA6B,wCAAwC,uCAAuC,qBAAqB,+BAA+B,yCAAyC,oCAAoC,kBAAkB,4BAA4B,qKAAqK,sBAAsB,KAAK,wJAAwJ,mBAAmB,KAAK,OAAO,iIAAiI,QAAQ,MAAM,YAAY,uBAAuB,MAAM,KAAK,YAAY,uBAAuB,MAAM,KAAK,YAAY,uBAAuB,OAAO,OAAO,UAAU,MAAM,OAAO,UAAU,waAAwa,qCAAqC,mBAAmB,6BAA6B,wCAAwC,uCAAuC,qBAAqB,+BAA+B,yCAAyC,oCAAoC,kBAAkB,4BAA4B,qKAAqK,sBAAsB,KAAK,wJAAwJ,mBAAmB,KAAK,mBAAmB;AAC9jF;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,okBAAokB,yGAAyG,KAAK,uCAAuC,oBAAoB,cAAc,4BAA4B,0BAA0B,KAAK,iEAAiE,0CAA0C,KAAK,mEAAmE,oBAAoB,qBAAqB,uBAAuB,4BAA4B,wBAAwB,yBAAyB,0CAA0C,KAAK,0EAA0E,2BAA2B,sBAAsB,mBAAmB,KAAK,6DAA6D,wBAAwB,KAAK,WAAW,2JAA2J,QAAQ,OAAO,YAAY,aAAa,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,ojBAAojB,yGAAyG,KAAK,uCAAuC,oBAAoB,cAAc,4BAA4B,0BAA0B,KAAK,iEAAiE,0CAA0C,KAAK,mEAAmE,oBAAoB,qBAAqB,uBAAuB,4BAA4B,wBAAwB,yBAAyB,0CAA0C,KAAK,0EAA0E,2BAA2B,sBAAsB,mBAAmB,KAAK,6DAA6D,wBAAwB,KAAK,uBAAuB;AAC9uG;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,ybAAyb,oCAAoC,oBAAoB,KAAK,WAAW,4JAA4J,QAAQ,MAAM,YAAY,WAAW,waAAwa,oCAAoC,oBAAoB,KAAK,uBAAuB;AAC9rC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4cAA4c,yBAAyB,kBAAkB,mBAAmB,uBAAuB,wBAAwB,yCAAyC,qBAAqB,6BAA6B,gDAAgD,yBAAyB,8CAA8C,kBAAkB,KAAK,kDAAkD,oBAAoB,KAAK,oHAAoH,oBAAoB,KAAK,8CAA8C,+BAA+B,KAAK,sEAAsE,kDAAkD,2BAA2B,KAAK,6DAA6D,oCAAoC,oBAAoB,KAAK,8DAA8D,sBAAsB,KAAK,kGAAkG,2BAA2B,sBAAsB,oBAAoB,KAAK,oIAAoI,uBAAuB,KAAK,+FAA+F,0BAA0B,KAAK,qVAAqV,uBAAuB,0BAA0B,KAAK,gEAAgE,mBAAmB,oBAAoB,0BAA0B,KAAK,sEAAsE,mBAAmB,oBAAoB,0BAA0B,KAAK,uDAAuD,6BAA6B,oBAAoB,aAAa,KAAK,kFAAkF,6EAA6E,KAAK,sGAAsG,oDAAoD,KAAK,mDAAmD,oBAAoB,oBAAoB,wBAAwB,2BAA2B,mBAAmB,6BAA6B,6BAA6B,yBAAyB,wBAAwB,KAAK,6CAA6C,kBAAkB,mBAAmB,oBAAoB,oBAAoB,uBAAuB,yCAAyC,mCAAmC,sBAAsB,oBAAoB,0BAA0B,8BAA8B,KAAK,kDAAkD,qBAAqB,wBAAwB,KAAK,kDAAkD,kBAAkB,uBAAuB,gBAAgB,KAAK,oDAAoD,yBAAyB,aAAa,gBAAgB,kBAAkB,mBAAmB,6BAA6B,KAAK,6DAA6D,oBAAoB,KAAK,+CAA+C,mBAAmB,sBAAsB,KAAK,qDAAqD,oBAAoB,KAAK,yEAAyE,yBAAyB,oBAAoB,6BAA6B,iBAAiB,mBAAmB,qBAAqB,KAAK,qFAAqF,yBAAyB,eAAe,iBAAiB,KAAK,wFAAwF,mBAAmB,KAAK,+FAA+F,kCAAkC,KAAK,oGAAoG,kCAAkC,KAAK,8XAA8X,mBAAmB,KAAK,mCAAmC,4BAA4B,yCAAyC,KAAK,kDAAkD,yBAAyB,KAAK,6DAA6D,yBAAyB,eAAe,gBAAgB,KAAK,WAAW,yIAAyI,QAAQ,aAAa,MAAM,YAAY,WAAW,UAAU,YAAY,aAAa,aAAa,WAAW,YAAY,yBAAyB,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,MAAM,YAAY,MAAM,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,WAAW,MAAM,KAAK,UAAU,OAAO,MAAM,YAAY,WAAW,UAAU,MAAM,MAAM,YAAY,QAAQ,KAAK,YAAY,OAAO,QAAQ,YAAY,aAAa,OAAO,KAAK,UAAU,UAAU,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,WAAW,MAAM,KAAK,YAAY,WAAW,MAAM,KAAK,UAAU,UAAU,YAAY,aAAa,WAAW,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,UAAU,UAAU,UAAU,YAAY,aAAa,aAAa,WAAW,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,YAAY,WAAW,MAAM,KAAK,YAAY,WAAW,UAAU,UAAU,UAAU,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,UAAU,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,WAAW,YAAY,WAAW,UAAU,UAAU,MAAM,KAAK,YAAY,WAAW,UAAU,MAAM,UAAU,KAAK,UAAU,MAAM,YAAY,MAAM,YAAY,OAAO,YAAY,MAAM,YAAY,OAAO,SAAS,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,2bAA2b,yBAAyB,kBAAkB,mBAAmB,uBAAuB,wBAAwB,yCAAyC,qBAAqB,6BAA6B,gDAAgD,yBAAyB,8CAA8C,kBAAkB,KAAK,kDAAkD,oBAAoB,KAAK,oHAAoH,oBAAoB,KAAK,8CAA8C,+BAA+B,KAAK,sEAAsE,kDAAkD,2BAA2B,KAAK,6DAA6D,oCAAoC,oBAAoB,KAAK,8DAA8D,sBAAsB,KAAK,kGAAkG,2BAA2B,sBAAsB,oBAAoB,KAAK,oIAAoI,uBAAuB,KAAK,+FAA+F,0BAA0B,KAAK,qVAAqV,uBAAuB,0BAA0B,KAAK,gEAAgE,mBAAmB,oBAAoB,0BAA0B,KAAK,sEAAsE,mBAAmB,oBAAoB,0BAA0B,KAAK,uDAAuD,6BAA6B,oBAAoB,aAAa,KAAK,kFAAkF,6EAA6E,KAAK,sGAAsG,oDAAoD,KAAK,mDAAmD,oBAAoB,oBAAoB,wBAAwB,2BAA2B,mBAAmB,6BAA6B,6BAA6B,yBAAyB,wBAAwB,KAAK,6CAA6C,kBAAkB,mBAAmB,oBAAoB,oBAAoB,uBAAuB,yCAAyC,mCAAmC,sBAAsB,oBAAoB,0BAA0B,8BAA8B,KAAK,kDAAkD,qBAAqB,wBAAwB,KAAK,kDAAkD,kBAAkB,uBAAuB,gBAAgB,KAAK,oDAAoD,yBAAyB,aAAa,gBAAgB,kBAAkB,mBAAmB,6BAA6B,KAAK,6DAA6D,oBAAoB,KAAK,+CAA+C,mBAAmB,sBAAsB,KAAK,qDAAqD,oBAAoB,KAAK,yEAAyE,yBAAyB,oBAAoB,6BAA6B,iBAAiB,mBAAmB,qBAAqB,KAAK,qFAAqF,yBAAyB,eAAe,iBAAiB,KAAK,wFAAwF,mBAAmB,KAAK,+FAA+F,kCAAkC,KAAK,oGAAoG,kCAAkC,KAAK,8XAA8X,mBAAmB,KAAK,mCAAmC,4BAA4B,yCAAyC,KAAK,kDAAkD,yBAAyB,KAAK,6DAA6D,yBAAyB,eAAe,gBAAgB,KAAK,uBAAuB;AACr1Z;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,8hBAA8hB,sBAAsB,iBAAiB,+BAA+B,oBAAoB,0BAA0B,8BAA8B,sBAAsB,uBAAuB,KAAK,+MAA+M,iBAAiB,KAAK,6CAA6C,kBAAkB,kCAAkC,qBAAqB,sBAAsB,uBAAuB,sBAAsB,KAAK,WAAW,yIAAyI,QAAQ,OAAO,UAAU,UAAU,YAAY,WAAW,YAAY,aAAa,WAAW,YAAY,OAAO,OAAO,UAAU,MAAM,KAAK,UAAU,YAAY,WAAW,UAAU,YAAY,WAAW,8gBAA8gB,sBAAsB,iBAAiB,+BAA+B,oBAAoB,0BAA0B,8BAA8B,sBAAsB,uBAAuB,KAAK,+MAA+M,iBAAiB,KAAK,6CAA6C,kBAAkB,kCAAkC,qBAAqB,sBAAsB,uBAAuB,sBAAsB,KAAK,uBAAuB;AACpnF;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,yfAAyf,4BAA4B,+BAA+B,wBAAwB,KAAK,uCAAuC,8BAA8B,0BAA0B,KAAK,gDAAgD,mBAAmB,yBAAyB,KAAK,8CAA8C,4BAA4B,yBAAyB,KAAK,6DAA6D,yBAAyB,uBAAuB,wBAAwB,gCAAgC,4BAA4B,+BAA+B,KAAK,sEAAsE,oBAAoB,6BAA6B,KAAK,+EAA+E,wBAAwB,KAAK,yJAAyJ,mBAAmB,KAAK,kFAAkF,mBAAmB,qBAAqB,KAAK,qFAAqF,mBAAmB,KAAK,oFAAoF,mBAAmB,KAAK,qFAAqF,iCAAiC,wFAAwF,qCAAqC,KAAK,uEAAuE,sBAAsB,KAAK,WAAW,yJAAyJ,QAAQ,cAAc,MAAM,YAAY,aAAa,aAAa,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,YAAY,OAAO,MAAM,UAAU,MAAM,KAAK,UAAU,UAAU,KAAK,KAAK,UAAU,KAAK,KAAK,UAAU,KAAK,KAAK,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,yeAAye,4BAA4B,+BAA+B,wBAAwB,KAAK,uCAAuC,8BAA8B,0BAA0B,KAAK,gDAAgD,mBAAmB,yBAAyB,KAAK,8CAA8C,4BAA4B,yBAAyB,KAAK,6DAA6D,yBAAyB,uBAAuB,wBAAwB,gCAAgC,4BAA4B,+BAA+B,KAAK,sEAAsE,oBAAoB,6BAA6B,KAAK,+EAA+E,wBAAwB,KAAK,yJAAyJ,mBAAmB,KAAK,kFAAkF,mBAAmB,qBAAqB,KAAK,qFAAqF,mBAAmB,KAAK,oFAAoF,mBAAmB,KAAK,qFAAqF,iCAAiC,wFAAwF,qCAAqC,KAAK,uEAAuE,sBAAsB,KAAK,uBAAuB;AACz/J;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,gcAAgc,iCAAiC,sBAAsB,KAAK,OAAO,kKAAkK,QAAQ,MAAM,YAAY,WAAW,gbAAgb,iCAAiC,sBAAsB,KAAK,mBAAmB;AACzsC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4fAA4f,4BAA4B,+BAA+B,KAAK,uDAAuD,4BAA4B,0BAA0B,KAAK,yDAAyD,mBAAmB,kBAAkB,yBAAyB,qBAAqB,KAAK,yDAAyD,wBAAwB,KAAK,oEAAoE,8BAA8B,uBAAuB,KAAK,yEAAyE,2BAA2B,kBAAkB,mBAAmB,KAAK,sGAAsG,gCAAgC,KAAK,gFAAgF,yBAAyB,wBAAwB,KAAK,qHAAqH,wBAAwB,KAAK,WAAW,0JAA0J,QAAQ,aAAa,MAAM,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,UAAU,YAAY,WAAW,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,aAAa,MAAM,YAAY,4eAA4e,4BAA4B,+BAA+B,KAAK,uDAAuD,4BAA4B,0BAA0B,KAAK,yDAAyD,mBAAmB,kBAAkB,yBAAyB,qBAAqB,KAAK,yDAAyD,wBAAwB,KAAK,oEAAoE,8BAA8B,uBAAuB,KAAK,yEAAyE,2BAA2B,kBAAkB,mBAAmB,KAAK,sGAAsG,gCAAgC,KAAK,gFAAgF,yBAAyB,wBAAwB,KAAK,qHAAqH,wBAAwB,KAAK,uBAAuB;AAC/oH;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,8dAA8d,iCAAiC,qCAAqC,KAAK,8CAA8C,sBAAsB,KAAK,WAAW,qIAAqI,OAAO,OAAO,YAAY,aAAa,OAAO,KAAK,UAAU,8cAA8c,iCAAiC,qCAAqC,KAAK,8CAA8C,sBAAsB,KAAK,uBAAuB;AACx7C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,wcAAwc,0BAA0B,qBAAqB,KAAK,2BAA2B,YAAY,YAAY,EAAE,UAAU,YAAY,EAAE,KAAK,yDAAyD,uCAAuC,KAAK,4BAA4B,YAAY,YAAY,EAAE,UAAU,YAAY,EAAE,KAAK,0DAA0D,wCAAwC,KAAK,+DAA+D,uBAAuB,KAAK,8DAA8D,0BAA0B,2BAA2B,gCAAgC,0BAA0B,oBAAoB,wBAAwB,yBAAyB,KAAK,WAAW,mJAAmJ,QAAQ,MAAM,YAAY,WAAW,MAAM,KAAK,oBAAoB,qBAAqB,MAAM,KAAK,YAAY,OAAO,KAAK,oBAAoB,qBAAqB,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,WAAW,YAAY,aAAa,wbAAwb,0BAA0B,qBAAqB,KAAK,2BAA2B,YAAY,YAAY,EAAE,UAAU,YAAY,EAAE,KAAK,yDAAyD,uCAAuC,KAAK,4BAA4B,YAAY,YAAY,EAAE,UAAU,YAAY,EAAE,KAAK,0DAA0D,wCAAwC,KAAK,+DAA+D,uBAAuB,KAAK,8DAA8D,0BAA0B,2BAA2B,gCAAgC,0BAA0B,oBAAoB,wBAAwB,yBAAyB,KAAK,uBAAuB;AAC11F;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,kcAAkc,kBAAkB,oBAAoB,6BAA6B,yBAAyB,KAAK,2DAA2D,uBAAuB,oBAAoB,0BAA0B,KAAK,yDAAyD,wBAAwB,iBAAiB,KAAK,wDAAwD,wCAAwC,KAAK,gGAAgG,oBAAoB,KAAK,4HAA4H,oBAAoB,cAAc,6BAA6B,uBAAuB,KAAK,2DAA2D,uBAAuB,KAAK,sDAAsD,4BAA4B,4BAA4B,KAAK,4DAA4D,oBAAoB,KAAK,qEAAqE,2BAA2B,KAAK,0EAA0E,gDAAgD,KAAK,4DAA4D,4BAA4B,KAAK,2DAA2D,yBAAyB,uBAAuB,KAAK,0DAA0D,oBAAoB,6BAA6B,0BAA0B,sBAAsB,gCAAgC,KAAK,mEAAmE,oBAAoB,qBAAqB,KAAK,iEAAiE,kBAAkB,mBAAmB,mCAAmC,sBAAsB,KAAK,iEAAiE,mBAAmB,KAAK,2DAA2D,yBAAyB,mBAAmB,wBAAwB,mBAAmB,gDAAgD,KAAK,6EAA6E,wBAAwB,iCAAiC,KAAK,sFAAsF,wBAAwB,0BAA0B,KAAK,WAAW,uJAAuJ,QAAQ,MAAM,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,WAAW,YAAY,OAAO,KAAK,YAAY,WAAW,MAAM,KAAK,YAAY,OAAO,MAAM,UAAU,MAAM,MAAM,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,aAAa,WAAW,YAAY,OAAO,KAAK,UAAU,UAAU,MAAM,KAAK,UAAU,UAAU,YAAY,WAAW,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,WAAW,YAAY,WAAW,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,kbAAkb,kBAAkB,oBAAoB,6BAA6B,yBAAyB,KAAK,2DAA2D,uBAAuB,oBAAoB,0BAA0B,KAAK,yDAAyD,wBAAwB,iBAAiB,KAAK,wDAAwD,wCAAwC,KAAK,gGAAgG,oBAAoB,KAAK,4HAA4H,oBAAoB,cAAc,6BAA6B,uBAAuB,KAAK,2DAA2D,uBAAuB,KAAK,sDAAsD,4BAA4B,4BAA4B,KAAK,4DAA4D,oBAAoB,KAAK,qEAAqE,2BAA2B,KAAK,0EAA0E,gDAAgD,KAAK,4DAA4D,4BAA4B,KAAK,2DAA2D,yBAAyB,uBAAuB,KAAK,0DAA0D,oBAAoB,6BAA6B,0BAA0B,sBAAsB,gCAAgC,KAAK,mEAAmE,oBAAoB,qBAAqB,KAAK,iEAAiE,kBAAkB,mBAAmB,mCAAmC,sBAAsB,KAAK,iEAAiE,mBAAmB,KAAK,2DAA2D,yBAAyB,mBAAmB,wBAAwB,mBAAmB,gDAAgD,KAAK,6EAA6E,wBAAwB,iCAAiC,KAAK,sFAAsF,wBAAwB,0BAA0B,KAAK,uBAAuB;AAC/tN;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,icAAic,6BAA6B,oBAAoB,KAAK,+DAA+D,oBAAoB,0BAA0B,sBAAsB,wBAAwB,sBAAsB,mBAAmB,KAAK,oFAAoF,uBAAuB,yBAAyB,KAAK,qEAAqE,0BAA0B,KAAK,wEAAwE,0BAA0B,KAAK,yEAAyE,uBAAuB,8BAA8B,KAAK,yFAAyF,mBAAmB,uBAAuB,KAAK,iEAAiE,cAAc,wBAAwB,yBAAyB,KAAK,sFAAsF,4BAA4B,KAAK,4LAA4L,mBAAmB,KAAK,mGAAmG,uBAAuB,KAAK,oGAAoG,kBAAkB,mBAAmB,gBAAgB,2BAA2B,mCAAmC,yCAAyC,KAAK,4GAA4G,gBAAgB,KAAK,iDAAiD,4BAA4B,yBAAyB,KAAK,wEAAwE,wBAAwB,KAAK,WAAW,uJAAuJ,QAAQ,MAAM,YAAY,WAAW,MAAM,KAAK,UAAU,YAAY,WAAW,YAAY,WAAW,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,MAAM,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,UAAU,UAAU,YAAY,aAAa,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,ibAAib,6BAA6B,oBAAoB,KAAK,+DAA+D,oBAAoB,0BAA0B,sBAAsB,wBAAwB,sBAAsB,mBAAmB,KAAK,oFAAoF,uBAAuB,yBAAyB,KAAK,qEAAqE,0BAA0B,KAAK,wEAAwE,0BAA0B,KAAK,yEAAyE,uBAAuB,8BAA8B,KAAK,yFAAyF,mBAAmB,uBAAuB,KAAK,iEAAiE,cAAc,wBAAwB,yBAAyB,KAAK,sFAAsF,4BAA4B,KAAK,4LAA4L,mBAAmB,KAAK,mGAAmG,uBAAuB,KAAK,oGAAoG,kBAAkB,mBAAmB,gBAAgB,2BAA2B,mCAAmC,yCAAyC,KAAK,4GAA4G,gBAAgB,KAAK,iDAAiD,4BAA4B,yBAAyB,KAAK,wEAAwE,wBAAwB,KAAK,uBAAuB;AACrlL;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,qcAAqc,yCAAyC,2EAA2E,KAAK,WAAW,mJAAmJ,QAAQ,MAAM,YAAY,aAAa,aAAa,qbAAqb,yCAAyC,2EAA2E,KAAK,uBAAuB;AACr1C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,sbAAsb,mBAAmB,qBAAqB,KAAK,4CAA4C,6BAA6B,KAAK,kDAAkD,mBAAmB,8BAA8B,KAAK,kDAAkD,oBAAoB,kBAAkB,KAAK,0DAA0D,uBAAuB,KAAK,WAAW,iJAAiJ,QAAQ,MAAM,UAAU,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,YAAY,OAAO,KAAK,UAAU,UAAU,MAAM,KAAK,YAAY,saAAsa,mBAAmB,qBAAqB,KAAK,4CAA4C,6BAA6B,KAAK,kDAAkD,mBAAmB,8BAA8B,KAAK,kDAAkD,oBAAoB,kBAAkB,KAAK,0DAA0D,uBAAuB,KAAK,uBAAuB;AAC78D;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+bAA+b,qBAAqB,2BAA2B,yBAAyB,KAAK,oDAAoD,2BAA2B,yBAAyB,KAAK,WAAW,gJAAgJ,QAAQ,MAAM,UAAU,YAAY,aAAa,OAAO,KAAK,YAAY,aAAa,+aAA+a,qBAAqB,2BAA2B,yBAAyB,KAAK,oDAAoD,2BAA2B,yBAAyB,KAAK,uBAAuB;AAC5+C;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,idAAid,kBAAkB,KAAK,sEAAsE,mBAAmB,KAAK,4IAA4I,kBAAkB,0BAA0B,wBAAwB,6BAA6B,KAAK,uKAAuK,wBAAwB,KAAK,6GAA6G,mBAAmB,KAAK,kHAAkH,iBAAiB,kBAAkB,KAAK,yIAAyI,mBAAmB,KAAK,oFAAoF,yBAAyB,KAAK,kDAAkD,yBAAyB,KAAK,0DAA0D,gDAAgD,KAAK,8HAA8H,yBAAyB,KAAK,uFAAuF,mBAAmB,KAAK,qDAAqD,wBAAwB,gCAAgC,4BAA4B,KAAK,6HAA6H,oBAAoB,kCAAkC,6BAA6B,0BAA0B,mCAAmC,mCAAmC,0BAA0B,sBAAsB,yBAAyB,KAAK,kFAAkF,cAAc,mBAAmB,uBAAuB,wBAAwB,KAAK,0FAA0F,oBAAoB,uBAAuB,8BAA8B,uBAAuB,qCAAqC,KAAK,gMAAgM,oBAAoB,KAAK,0FAA0F,wBAAwB,KAAK,wFAAwF,yBAAyB,6BAA6B,cAAc,iCAAiC,wBAAwB,4BAA4B,qCAAqC,sBAAsB,yBAAyB,iCAAiC,+BAA+B,8BAA8B,gCAAgC,+BAA+B,iCAAiC,+BAA+B,KAAK,mFAAmF,iBAAiB,eAAe,KAAK,oEAAoE,iBAAiB,KAAK,uQAAuQ,qBAAqB,iBAAiB,sBAAsB,sBAAsB,KAAK,iHAAiH,yBAAyB,eAAe,iBAAiB,KAAK,uOAAuO,iBAAiB,KAAK,0YAA0Y,mBAAmB,KAAK,qHAAqH,uBAAuB,8BAA8B,KAAK,qHAAqH,uBAAuB,mBAAmB,qBAAqB,8BAA8B,uBAAuB,wBAAwB,yBAAyB,KAAK,uMAAuM,yBAAyB,uBAAuB,8BAA8B,0BAA0B,KAAK,+IAA+I,sBAAsB,KAAK,4TAA4T,oBAAoB,KAAK,4HAA4H,sBAAsB,KAAK,qWAAqW,sBAAsB,KAAK,0LAA0L,+BAA+B,KAAK,kGAAkG,qBAAqB,mBAAmB,uBAAuB,KAAK,mHAAmH,qBAAqB,KAAK,sIAAsI,sBAAsB,KAAK,gIAAgI,qBAAqB,KAAK,+FAA+F,uBAAuB,wBAAwB,qBAAqB,qBAAqB,KAAK,+GAA+G,4BAA4B,yBAAyB,kBAAkB,kBAAkB,mBAAmB,yBAAyB,KAAK,ySAAyS,+BAA+B,KAAK,kPAAkP,oBAAoB,KAAK,6MAA6M,4BAA4B,KAAK,8OAA8O,oBAAoB,KAAK,qHAAqH,0BAA0B,KAAK,mJAAmJ,oBAAoB,6BAA6B,KAAK,6JAA6J,oCAAoC,KAAK,iGAAiG,mBAAmB,KAAK,4EAA4E,qBAAqB,mBAAmB,kBAAkB,uBAAuB,mCAAmC,2BAA2B,kCAAkC,KAAK,iFAAiF,oBAAoB,KAAK,oFAAoF,oBAAoB,0BAA0B,wBAAwB,KAAK,qLAAqL,oBAAoB,KAAK,mGAAmG,0BAA0B,+BAA+B,mBAAmB,oBAAoB,4BAA4B,KAAK,gHAAgH,oBAAoB,6BAA6B,sBAAsB,KAAK,yDAAyD,oBAAoB,KAAK,4DAA4D,0BAA0B,KAAK,8EAA8E,cAAc,KAAK,sFAAsF,yBAAyB,6BAA6B,mBAAmB,kBAAkB,KAAK,wGAAwG,cAAc,uBAAuB,8BAA8B,mBAAmB,4BAA4B,yBAAyB,8BAA8B,KAAK,8FAA8F,gBAAgB,uBAAuB,4BAA4B,KAAK,4GAA4G,iBAAiB,2BAA2B,mCAAmC,KAAK,4OAA4O,uBAAuB,KAAK,kIAAkI,oBAAoB,KAAK,mIAAmI,uBAAuB,KAAK,oGAAoG,4BAA4B,4BAA4B,KAAK,qHAAqH,0BAA0B,KAAK,gGAAgG,oBAAoB,KAAK,sDAAsD,yBAAyB,uBAAuB,KAAK,+FAA+F,yBAAyB,KAAK,eAAe,+IAA+I,QAAQ,aAAa,MAAM,UAAU,MAAM,aAAa,MAAM,UAAU,MAAM,OAAO,UAAU,YAAY,aAAa,aAAa,OAAO,OAAO,YAAY,OAAO,YAAY,MAAM,UAAU,MAAM,MAAM,UAAU,UAAU,MAAM,MAAM,UAAU,MAAM,YAAY,MAAM,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,OAAO,YAAY,MAAM,YAAY,OAAO,YAAY,MAAM,UAAU,MAAM,KAAK,YAAY,aAAa,aAAa,OAAO,aAAa,MAAM,UAAU,YAAY,aAAa,aAAa,aAAa,aAAa,aAAa,WAAW,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,MAAM,UAAU,MAAM,KAAK,YAAY,OAAO,aAAa,MAAM,aAAa,aAAa,YAAY,aAAa,WAAW,YAAY,cAAc,YAAY,WAAW,YAAY,aAAa,aAAa,aAAa,aAAa,cAAc,aAAa,OAAO,KAAK,UAAU,UAAU,KAAK,KAAK,UAAU,MAAM,aAAa,OAAO,UAAU,UAAU,UAAU,UAAU,OAAO,KAAK,YAAY,WAAW,UAAU,MAAM,MAAM,UAAU,MAAM,YAAY,QAAQ,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,WAAW,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,aAAa,MAAM,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,OAAO,aAAa,OAAO,UAAU,MAAM,KAAK,UAAU,OAAO,aAAa,OAAO,UAAU,OAAO,YAAY,MAAM,YAAY,OAAO,KAAK,UAAU,UAAU,YAAY,MAAM,KAAK,UAAU,KAAK,KAAK,UAAU,MAAM,KAAK,UAAU,KAAK,KAAK,YAAY,aAAa,WAAW,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,UAAU,UAAU,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,YAAY,MAAM,UAAU,KAAK,YAAY,MAAM,YAAY,OAAO,MAAM,UAAU,MAAM,KAAK,YAAY,OAAO,aAAa,MAAM,UAAU,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,UAAU,UAAU,YAAY,aAAa,aAAa,aAAa,OAAO,KAAK,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,OAAO,MAAM,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,UAAU,YAAY,OAAO,YAAY,MAAM,UAAU,YAAY,WAAW,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,WAAW,UAAU,MAAM,KAAK,UAAU,YAAY,aAAa,WAAW,YAAY,aAAa,aAAa,OAAO,KAAK,UAAU,YAAY,aAAa,OAAO,KAAK,UAAU,YAAY,aAAa,OAAO,MAAM,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,QAAQ,aAAa,MAAM,YAAY,icAAic,kBAAkB,KAAK,sEAAsE,mBAAmB,KAAK,4IAA4I,kBAAkB,0BAA0B,wBAAwB,6BAA6B,KAAK,uKAAuK,wBAAwB,KAAK,6GAA6G,mBAAmB,KAAK,kHAAkH,iBAAiB,kBAAkB,KAAK,yIAAyI,mBAAmB,KAAK,oFAAoF,yBAAyB,KAAK,kDAAkD,yBAAyB,KAAK,0DAA0D,gDAAgD,KAAK,8HAA8H,yBAAyB,KAAK,uFAAuF,mBAAmB,KAAK,qDAAqD,wBAAwB,gCAAgC,4BAA4B,KAAK,6HAA6H,oBAAoB,kCAAkC,6BAA6B,0BAA0B,mCAAmC,mCAAmC,0BAA0B,sBAAsB,yBAAyB,KAAK,kFAAkF,cAAc,mBAAmB,uBAAuB,wBAAwB,KAAK,0FAA0F,oBAAoB,uBAAuB,8BAA8B,uBAAuB,qCAAqC,KAAK,gMAAgM,oBAAoB,KAAK,0FAA0F,wBAAwB,KAAK,wFAAwF,yBAAyB,6BAA6B,cAAc,iCAAiC,wBAAwB,4BAA4B,qCAAqC,sBAAsB,yBAAyB,iCAAiC,+BAA+B,8BAA8B,gCAAgC,+BAA+B,iCAAiC,+BAA+B,KAAK,mFAAmF,iBAAiB,eAAe,KAAK,oEAAoE,iBAAiB,KAAK,uQAAuQ,qBAAqB,iBAAiB,sBAAsB,sBAAsB,KAAK,iHAAiH,yBAAyB,eAAe,iBAAiB,KAAK,uOAAuO,iBAAiB,KAAK,0YAA0Y,mBAAmB,KAAK,qHAAqH,uBAAuB,8BAA8B,KAAK,qHAAqH,uBAAuB,mBAAmB,qBAAqB,8BAA8B,uBAAuB,wBAAwB,yBAAyB,KAAK,uMAAuM,yBAAyB,uBAAuB,8BAA8B,0BAA0B,KAAK,+IAA+I,sBAAsB,KAAK,4TAA4T,oBAAoB,KAAK,4HAA4H,sBAAsB,KAAK,qWAAqW,sBAAsB,KAAK,0LAA0L,+BAA+B,KAAK,kGAAkG,qBAAqB,mBAAmB,uBAAuB,KAAK,mHAAmH,qBAAqB,KAAK,sIAAsI,sBAAsB,KAAK,gIAAgI,qBAAqB,KAAK,+FAA+F,uBAAuB,wBAAwB,qBAAqB,qBAAqB,KAAK,+GAA+G,4BAA4B,yBAAyB,kBAAkB,kBAAkB,mBAAmB,yBAAyB,KAAK,ySAAyS,+BAA+B,KAAK,kPAAkP,oBAAoB,KAAK,6MAA6M,4BAA4B,KAAK,8OAA8O,oBAAoB,KAAK,qHAAqH,0BAA0B,KAAK,mJAAmJ,oBAAoB,6BAA6B,KAAK,6JAA6J,oCAAoC,KAAK,iGAAiG,mBAAmB,KAAK,4EAA4E,qBAAqB,mBAAmB,kBAAkB,uBAAuB,mCAAmC,2BAA2B,kCAAkC,KAAK,iFAAiF,oBAAoB,KAAK,oFAAoF,oBAAoB,0BAA0B,wBAAwB,KAAK,qLAAqL,oBAAoB,KAAK,mGAAmG,0BAA0B,+BAA+B,mBAAmB,oBAAoB,4BAA4B,KAAK,gHAAgH,oBAAoB,6BAA6B,sBAAsB,KAAK,yDAAyD,oBAAoB,KAAK,4DAA4D,0BAA0B,KAAK,8EAA8E,cAAc,KAAK,sFAAsF,yBAAyB,6BAA6B,mBAAmB,kBAAkB,KAAK,wGAAwG,cAAc,uBAAuB,8BAA8B,mBAAmB,4BAA4B,yBAAyB,8BAA8B,KAAK,8FAA8F,gBAAgB,uBAAuB,4BAA4B,KAAK,4GAA4G,iBAAiB,2BAA2B,mCAAmC,KAAK,4OAA4O,uBAAuB,KAAK,kIAAkI,oBAAoB,KAAK,mIAAmI,uBAAuB,KAAK,oGAAoG,4BAA4B,4BAA4B,KAAK,qHAAqH,0BAA0B,KAAK,gGAAgG,oBAAoB,KAAK,sDAAsD,yBAAyB,uBAAuB,KAAK,+FAA+F,yBAAyB,KAAK,2BAA2B;AAC5j7B;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,8dAA8d,0BAA0B,KAAK,4DAA4D,0BAA0B,KAAK,0FAA0F,uBAAuB,mBAAmB,qBAAqB,KAAK,0HAA0H,sBAAsB,KAAK,iIAAiI,oBAAoB,0BAA0B,KAAK,8QAA8Q,oBAAoB,KAAK,6KAA6K,kBAAkB,KAAK,WAAW,wJAAwJ,QAAQ,MAAM,YAAY,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,UAAU,OAAO,KAAK,UAAU,YAAY,OAAO,MAAM,UAAU,MAAM,KAAK,UAAU,6cAA6c,0BAA0B,KAAK,4DAA4D,0BAA0B,KAAK,0FAA0F,uBAAuB,mBAAmB,qBAAqB,KAAK,0HAA0H,sBAAsB,KAAK,iIAAiI,oBAAoB,0BAA0B,KAAK,8QAA8Q,oBAAoB,KAAK,6KAA6K,kBAAkB,KAAK,uBAAuB;AAC97G;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,mbAAmb,yBAAyB,kBAAkB,KAAK,gEAAgE,8BAA8B,iCAAiC,0BAA0B,6BAA6B,yBAAyB,KAAK,WAAW,+IAA+I,OAAO,MAAM,YAAY,WAAW,OAAO,KAAK,YAAY,aAAa,aAAa,aAAa,aAAa,maAAma,yBAAyB,kBAAkB,KAAK,gEAAgE,8BAA8B,iCAAiC,0BAA0B,6BAA6B,yBAAyB,KAAK,uBAAuB;AAC/nD;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,mcAAmc,oBAAoB,6BAA6B,uBAAuB,KAAK,OAAO,wKAAwK,QAAQ,MAAM,UAAU,YAAY,aAAa,mbAAmb,oBAAoB,6BAA6B,uBAAuB,KAAK,mBAAmB;AACnwC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,4bAA4b,kBAAkB,mBAAmB,mBAAmB,oBAAoB,gBAAgB,iBAAiB,yBAAyB,mBAAmB,uBAAuB,2CAA2C,+lDAA+lD,gCAAgC,yBAAyB,KAAK,kDAAkD,2CAA2C,+lDAA+lD,gCAAgC,KAAK,OAAO,sKAAsK,QAAQ,MAAM,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,YAAY,WAAW,YAAY,eAAe,cAAc,aAAa,OAAO,KAAK,cAAc,cAAc,4aAA4a,kBAAkB,mBAAmB,mBAAmB,oBAAoB,gBAAgB,iBAAiB,yBAAyB,mBAAmB,uBAAuB,2CAA2C,+lDAA+lD,gCAAgC,yBAAyB,KAAK,kDAAkD,2CAA2C,+lDAA+lD,gCAAgC,KAAK,mBAAmB;AACz5Q;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,icAAic,kBAAkB,wBAAwB,gCAAgC,4BAA4B,oBAAoB,KAAK,mCAAmC,kBAAkB,gBAAgB,KAAK,yDAAyD,gDAAgD,KAAK,gEAAgE,0BAA0B,qBAAqB,mBAAmB,KAAK,kEAAkE,kBAAkB,KAAK,kEAAkE,gDAAgD,wBAAwB,KAAK,8DAA8D,gDAAgD,KAAK,WAAW,gKAAgK,QAAQ,MAAM,UAAU,YAAY,aAAa,aAAa,WAAW,MAAM,KAAK,UAAU,UAAU,MAAM,KAAK,YAAY,OAAO,KAAK,YAAY,WAAW,UAAU,MAAM,KAAK,UAAU,MAAM,KAAK,YAAY,aAAa,OAAO,KAAK,YAAY,ibAAib,kBAAkB,wBAAwB,gCAAgC,4BAA4B,oBAAoB,KAAK,mCAAmC,kBAAkB,gBAAgB,KAAK,yDAAyD,gDAAgD,KAAK,gEAAgE,0BAA0B,qBAAqB,mBAAmB,KAAK,kEAAkE,kBAAkB,KAAK,kEAAkE,gDAAgD,wBAAwB,KAAK,8DAA8D,gDAAgD,KAAK,uBAAuB;AACn2F;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AAC2H;AAC7B;AAC9F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,+aAA+a,sBAAsB,KAAK,+HAA+H,qBAAqB,KAAK,iJAAiJ,qBAAqB,KAAK,mJAAmJ,qBAAqB,KAAK,WAAW,oKAAoK,QAAQ,MAAM,UAAU,OAAO,MAAM,UAAU,MAAM,MAAM,UAAU,MAAM,MAAM,UAAU,8ZAA8Z,sBAAsB,KAAK,+HAA+H,qBAAqB,KAAK,iJAAiJ,qBAAqB,KAAK,mJAAmJ,qBAAqB,KAAK,uBAAuB;AACtoE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,udAAud,8JAA8J,4JAA4J,KAAK,qGAAqG,0BAA0B,KAAK,0NAA0N,0BAA0B,KAAK,yBAAyB,gBAAgB,KAAK,gGAAgG,qCAAqC,KAAK,qKAAqK,sJAAsJ,4CAA4C,uBAAuB,wBAAwB,OAAO,kGAAkG,gDAAgD,OAAO,oGAAoG,4CAA4C,OAAO,4HAA4H,+CAA+C,OAAO,4IAA4I,uCAAuC,OAAO,gHAAgH,qCAAqC,OAAO,+JAA+J,wCAAwC,OAAO,qHAAqH,uCAAuC,OAAO,oZAAoZ,gDAAgD,2CAA2C,+BAA+B,OAAO,sFAAsF,2CAA2C,mDAAmD,+BAA+B,OAAO,oFAAoF,4CAA4C,2CAA2C,OAAO,gMAAgM,mDAAmD,2CAA2C,+BAA+B,OAAO,gFAAgF,qCAAqC,OAAO,+JAA+J,uCAAuC,qCAAqC,OAAO,kIAAkI,wCAAwC,+CAA+C,OAAO,8HAA8H,2CAA2C,oCAAoC,+BAA+B,OAAO,gKAAgK,uCAAuC,0CAA0C,qCAAqC,+BAA+B,OAAO,0JAA0J,0CAA0C,OAAO,sKAAsK,yCAAyC,OAAO,wKAAwK,yCAAyC,OAAO,wIAAwI,mBAAmB,OAAO,+FAA+F,sBAAsB,OAAO,mHAAmH,2CAA2C,0CAA0C,OAAO,8FAA8F,0CAA0C,OAAO,wFAAwF,0CAA0C,OAAO,wFAAwF,0CAA0C,OAAO,+OAA+O,uCAAuC,wCAAwC,+CAA+C,OAAO,oNAAoN,uCAAuC,2CAA2C,oCAAoC,+BAA+B,OAAO,iIAAiI,sBAAsB,OAAO,+JAA+J,2CAA2C,+CAA+C,+BAA+B,OAAO,+JAA+J,2CAA2C,OAAO,KAAK,oDAAoD,gDAAgD,2BAA2B,4BAA4B,KAAK,uDAAuD,gDAAgD,2BAA2B,4BAA4B,KAAK,aAAa,sJAAsJ,SAAS,aAAa,MAAM,YAAY,aAAa,OAAO,KAAK,YAAY,OAAO,MAAM,YAAY,OAAO,KAAK,UAAU,MAAM,YAAY,MAAM,YAAY,MAAM,YAAY,OAAO,YAAY,OAAO,YAAY,WAAW,UAAU,OAAO,YAAY,OAAO,YAAY,MAAM,UAAU,MAAM,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,UAAU,MAAM,YAAY,MAAM,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,YAAY,aAAa,YAAY,aAAa,aAAa,MAAM,MAAM,YAAY,aAAa,aAAa,MAAM,MAAM,YAAY,aAAa,OAAO,YAAY,SAAS,YAAY,aAAa,aAAa,MAAM,MAAM,YAAY,OAAO,YAAY,OAAO,YAAY,aAAa,MAAM,MAAM,YAAY,aAAa,MAAM,MAAM,YAAY,aAAa,aAAa,OAAO,UAAU,MAAM,YAAY,aAAa,aAAa,aAAa,MAAM,MAAM,YAAY,MAAM,MAAM,YAAY,MAAM,MAAM,YAAY,OAAO,YAAY,OAAO,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,YAAY,aAAa,MAAM,MAAM,YAAY,MAAM,MAAM,YAAY,MAAM,MAAM,YAAY,OAAO,YAAY,OAAO,YAAY,aAAa,aAAa,MAAM,MAAM,YAAY,aAAa,aAAa,aAAa,OAAO,YAAY,OAAO,UAAU,KAAK,QAAQ,YAAY,aAAa,aAAa,MAAM,QAAQ,YAAY,MAAM,MAAM,cAAc,scAAsc,8JAA8J,4JAA4J,KAAK,qGAAqG,0BAA0B,KAAK,0NAA0N,0BAA0B,KAAK,yBAAyB,gBAAgB,KAAK,gGAAgG,qCAAqC,KAAK,qKAAqK,sJAAsJ,4CAA4C,uBAAuB,wBAAwB,OAAO,kGAAkG,gDAAgD,OAAO,oGAAoG,4CAA4C,OAAO,4HAA4H,+CAA+C,OAAO,4IAA4I,uCAAuC,OAAO,gHAAgH,qCAAqC,OAAO,+JAA+J,wCAAwC,OAAO,qHAAqH,uCAAuC,OAAO,oZAAoZ,gDAAgD,2CAA2C,+BAA+B,OAAO,sFAAsF,2CAA2C,mDAAmD,+BAA+B,OAAO,oFAAoF,4CAA4C,2CAA2C,OAAO,gMAAgM,mDAAmD,2CAA2C,+BAA+B,OAAO,gFAAgF,qCAAqC,OAAO,+JAA+J,uCAAuC,qCAAqC,OAAO,kIAAkI,wCAAwC,+CAA+C,OAAO,8HAA8H,2CAA2C,oCAAoC,+BAA+B,OAAO,gKAAgK,uCAAuC,0CAA0C,qCAAqC,+BAA+B,OAAO,0JAA0J,0CAA0C,OAAO,sKAAsK,yCAAyC,OAAO,wKAAwK,yCAAyC,OAAO,wIAAwI,mBAAmB,OAAO,+FAA+F,sBAAsB,OAAO,mHAAmH,2CAA2C,0CAA0C,OAAO,8FAA8F,0CAA0C,OAAO,wFAAwF,0CAA0C,OAAO,wFAAwF,0CAA0C,OAAO,+OAA+O,uCAAuC,wCAAwC,+CAA+C,OAAO,oNAAoN,uCAAuC,2CAA2C,oCAAoC,+BAA+B,OAAO,iIAAiI,sBAAsB,OAAO,+JAA+J,2CAA2C,+CAA+C,+BAA+B,OAAO,+JAA+J,2CAA2C,OAAO,KAAK,oDAAoD,gDAAgD,2BAA2B,4BAA4B,KAAK,uDAAuD,gDAAgD,2BAA2B,4BAA4B,KAAK,yBAAyB;AAC19kB;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACwH;AAC7B;AAC3F,8BAA8B,sEAA2B,CAAC,2FAAqC;AAC/F;AACA,sbAAsb,uBAAuB,KAAK,eAAe,0JAA0J,QAAQ,MAAM,YAAY,saAAsa,uBAAuB,KAAK,2BAA2B;AAClnC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,8DAA8D,2BAA2B,mBAAmB,qBAAqB,sCAAsC,gBAAgB,kCAAkC,kBAAkB,yBAAyB,cAAc,uBAAuB,gBAAgB,uBAAuB,YAAY,6CAA6C,cAAc,gkDAAgkD,yOAAyO,sEAAsE,iCAAiC,iCAAiC,oBAAoB,wBAAwB,KAAK,iCAAiC,kCAAkC,0BAA0B,KAAK,YAAY,6CAA6C,uBAAuB,yCAAyC,yBAAyB,gCAAgC,qBAAqB,KAAK,cAAc,uBAAuB,KAAK,cAAc,mBAAmB,KAAK,wEAAwE,MAAM,qCAAqC,aAAa,sDAAsD;AAC76F;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,qEAAqE,WAAW,aAAa,iBAAiB,OAAO,6CAA6C,cAAc,woFAAwoF,4IAA4I,uDAAuD,0BAA0B,yBAAyB,YAAY,mBAAmB,0BAA0B,YAAY,UAAU,eAAe,uCAAuC,YAAY,+BAA+B,uBAAuB,YAAY,cAAc,4BAA4B,wEAAwE,eAAe,mCAAmC,wDAAwD,wBAAwB,iCAAiC,qDAAqD,OAAO,gCAAgC,sCAAsC,MAAM,0DAA0D,qDAAqD,+BAA+B,8CAA8C,OAAO,KAAK,EAAE,2BAA2B,qCAAqC,gEAAgE,+CAA+C,+EAA+E,EAAE,6CAA6C,iDAAiD,aAAa,mDAAmD,wCAAwC,SAAS,cAAc,8CAA8C,oCAAoC,SAAS,OAAO,EAAE,2BAA2B,KAAK,EAAE,wCAAwC,kBAAkB,oBAAoB,wBAAwB,cAAc,KAAK,wFAAwF,cAAc,0BAA0B,iBAAiB,gCAAgC;AACrvJ;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,iEAAiE,WAAW,aAAa,iBAAiB,OAAO,6CAA6C,cAAc,ozGAAozG,4IAA4I,uDAAuD,wBAAwB,yBAAyB,YAAY,iBAAiB,0BAA0B,YAAY,UAAU,eAAe,mCAAmC,uCAAuC,YAAY,+BAA+B,uBAAuB,4CAA4C,YAAY,cAAc,4BAA4B,eAAe,wBAAwB,0BAA0B,iCAAiC,6DAA6D,WAAW,mCAAmC,mBAAmB,6BAA6B,uCAAuC,WAAW,qCAAqC,6CAA6C,WAAW,EAAE,SAAS,uCAAuC,sCAAsC,OAAO,YAAY,2CAA2C,+CAA+C,8BAA8B,+FAA+F,qPAAqP,wCAAwC,gBAAgB,mCAAmC,OAAO,MAAM,0DAA0D,+BAA+B,2CAA2C,OAAO,KAAK,EAAE,2BAA2B,yBAAyB,qDAAqD,+CAA+C,kFAAkF,EAAE,6CAA6C,iDAAiD,iDAAiD,OAAO,EAAE,2BAA2B,KAAK,EAAE,mCAAmC,kBAAkB,oBAAoB,wBAAwB,cAAc,KAAK,mFAAmF,cAAc,0BAA0B,eAAe,gCAAgC;AAC/5L;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,gEAAgE,mBAAmB,YAAY,OAAO,aAAa,0BAA0B,aAAa,wBAAwB,cAAc,6CAA6C,cAAc,wlCAAwlC,yKAAyK,wEAAwE,0BAA0B,cAAc,sCAAsC,mBAAmB,kCAAkC,OAAO,OAAO,sBAAsB,OAAO,KAAK,EAAE,kCAAkC,0BAA0B,mBAAmB,cAAc,oBAAoB,KAAK,gBAAgB,oBAAoB,KAAK,cAAc,qBAAqB,KAAK,eAAe,UAAU,6BAA6B,QAAQ,EAAE,MAAM,SAAS,IAAI,qBAAqB;AACxiE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,gEAAgE,mBAAmB,sBAAsB,kCAAkC,yBAAyB,YAAY,sBAAsB,eAAe,UAAU,cAAc,2BAA2B,qCAAqC,eAAe,cAAc,6BAA6B,yBAAyB,cAAc,sBAAsB,eAAe,yBAAyB,eAAe,mCAAmC,sBAAsB,cAAc,yBAAyB,mCAAmC,aAAa,2BAA2B,qBAAqB,cAAc,6BAA6B,iBAAiB,kBAAkB,6CAA6C,cAAc,onTAAonT,yaAAya,wDAAwD,SAAS,kBAAkB,gCAAgC,YAAY,YAAY,yBAAyB,kCAAkC,6DAA6D,kEAAkE,gCAAgC,MAAM,gDAAgD,sDAAsD,2DAA2D,8CAA8C,+BAA+B,iCAAiC,0CAA0C,6CAA6C,sCAAsC,+CAA+C,OAAO,2CAA2C,6CAA6C,+CAA+C,wCAAwC,OAAO,8CAA8C,kCAAkC,0DAA0D,kCAAkC,sDAAsD,2CAA2C,sCAAsC,SAAS,eAAe,EAAE,8BAA8B,6BAA6B,MAAM,yDAAyD,oBAAoB,oEAAoE,gDAAgD,wCAAwC,kCAAkC,MAAM,8GAA8G,kBAAkB,QAAQ,MAAM,0CAA0C,oDAAoD,MAAM,yDAAyD,oBAAoB,oEAAoE,mCAAmC,eAAe,wEAAwE,iDAAiD,iBAAiB,WAAW,gBAAgB,iCAAiC,WAAW,SAAS,EAAE,QAAQ,MAAM,0CAA0C,wCAAwC,MAAM,wCAAwC,wCAAwC,MAAM,wCAAwC,yCAAyC,8CAA8C,SAAS,eAAe,EAAE,iDAAiD,gDAAgD,MAAM,kCAAkC,MAAM,yCAAyC,4BAA4B,mCAAmC,MAAM,cAAc,gBAAgB,aAAa,eAAe,eAAe,mCAAmC,8BAA8B,+BAA+B,0DAA0D,wDAAwD,eAAe,uCAAuC,SAAS,QAAQ,EAAE,wCAAwC,QAAQ,EAAE,0CAA0C,QAAQ,EAAE,uBAAuB,KAAK,KAAK,yBAAyB,IAAI,qBAAqB,EAAE,yBAAyB,SAAS,QAAQ,GAAG,KAAK,EAAE,kCAAkC,0BAA0B,6BAA6B,yCAAyC,KAAK,eAAe,mBAAmB,6BAA6B,sBAAsB,iBAAiB,qBAAqB,kCAAkC,KAAK,2BAA2B,sBAAsB,qBAAqB,KAAK,iDAAiD,mCAAmC,6BAA6B,WAAW,OAAO,sBAAsB,gCAAgC,qBAAqB,6BAA6B,sBAAsB,gCAAgC,sBAAsB,KAAK,yBAAyB,6BAA6B,qBAAqB,gCAAgC,KAAK,yBAAyB,oBAAoB,KAAK,iBAAiB,4BAA4B,qBAAqB,KAAK,mBAAmB,wBAAwB,yBAAyB,KAAK,qCAAqC,2BAA2B,2EAA2E,IAAI,yBAAyB,gBAAgB,qDAAqD,IAAI,uEAAuE,IAAI,yBAAyB,cAAc,mHAAmH,IAAI,qGAAqG,IAAI,yBAAyB,cAAc,mHAAmH,KAAK,sGAAsG,OAAO,iPAAiP,OAAO,WAAW,eAAe,mGAAmG,kBAAkB,mIAAmI,kBAAkB,gIAAgI,eAAe,cAAc,8BAA8B,+FAA+F,kBAAkB,mIAAmI,gBAAgB,cAAc,+BAA+B,8BAA8B;AAChliB;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,8DAA8D,YAAY,iBAAiB,cAAc,eAAe,iBAAiB,mBAAmB,yBAAyB,kBAAkB,eAAe,kBAAkB,cAAc,mBAAmB,qBAAqB,gBAAgB,6CAA6C,cAAc,4rCAA4rC,kQAAkQ,oDAAoD,mBAAmB,wBAAwB,qBAAqB,sBAAsB,wBAAwB,0BAA0B,gCAAgC,yBAAyB,sBAAsB,yBAAyB,qBAAqB,0BAA0B,4BAA4B,uBAAuB,KAAK,uEAAuE;AACzvE;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,8DAA8D,yBAAyB,OAAO,yBAAyB,gBAAgB,qBAAqB,YAAY,6CAA6C,cAAc,w0IAAw0I,uJAAuJ,wDAAwD,YAAY,yBAAyB,YAAY,mCAAmC,0BAA0B,YAAY,UAAU,eAAe,mCAAmC,oCAAoC,kDAAkD,wEAAwE,+CAA+C,0BAA0B,OAAO,uCAAuC,uBAAuB,OAAO,8CAA8C,uBAAuB,OAAO,8CAA8C,uBAAuB,OAAO,0CAA0C,qBAAqB,OAAO,yCAAyC,2BAA2B,OAAO,sCAAsC,sBAAsB,OAAO,mCAAmC,qBAAqB,OAAO,2BAA2B,MAAM,wCAAwC,0CAA0C,4BAA4B,wFAAwF,4EAA4E,2DAA2D,OAAO,QAAQ,MAAM,oBAAoB,2BAA2B,kCAAkC,gCAAgC,2BAA2B,0DAA0D,aAAa,mCAAmC,0EAA0E,WAAW,kDAAkD,sBAAsB,GAAG,yCAAyC,4CAA4C,+CAA+C,+CAA+C,kBAAkB,+CAA+C,mEAAmE,WAAW,SAAS,YAAY,sCAAsC,SAAS,OAAO,EAAE,qEAAqE,4CAA4C,2BAA2B,SAAS,OAAO,gCAAgC,8CAA8C,SAAS,OAAO,EAAE,6EAA6E,4CAA4C,6BAA6B,SAAS,OAAO,kCAAkC,8CAA8C,SAAS,OAAO,EAAE,KAAK,EAAE,2DAA2D,iCAAiC,gCAAgC,cAAc,KAAK,gBAAgB,uBAAuB,KAAK,YAAY,mBAAmB,KAAK,wCAAwC,YAAY,EAAE,cAAc,wCAAwC,UAAU,gCAAgC;AACtrP;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,8DAA8D,iCAAiC,yBAAyB,2BAA2B,aAAa,YAAY,oBAAoB,UAAU,oBAAoB,UAAU,kBAAkB,yBAAyB,aAAa,mBAAmB,yBAAyB,UAAU,yBAAyB,UAAU,kBAAkB,yBAAyB,sCAAsC,eAAe,gBAAgB,SAAS,cAAc,YAAY,+BAA+B,kBAAkB,kBAAkB,qBAAqB,WAAW,aAAa,yBAAyB,mBAAmB,YAAY,4BAA4B,kBAAkB,kCAAkC,qCAAqC,qBAAqB,cAAc,gBAAgB,kBAAkB,gCAAgC,aAAa,mBAAmB,mBAAmB,eAAe,4BAA4B,yBAAyB,cAAc,sBAAsB,eAAe,yBAAyB,eAAe,kCAAkC,sBAAsB,cAAc,yBAAyB,kCAAkC,aAAa,0BAA0B,qBAAqB,cAAc,6CAA6C,cAAc,gscAAgsc,wtBAAwtB,wDAAwD,UAAU,eAAe,YAAY,yCAAyC,yBAAyB,qDAAqD,qDAAqD,iDAAiD,iDAAiD,+CAA+C,mDAAmD,YAAY,UAAU,yBAAyB,4CAA4C,gCAAgC,4CAA4C,yBAAyB,yBAAyB,6BAA6B,qEAAqE,mDAAmD,6EAA6E,+FAA+F,0BAA0B,6BAA6B,OAAO,oBAAoB,yBAAyB,kDAAkD,uCAAuC,EAAE,OAAO,OAAO,wCAAwC,OAAO,wBAAwB,sCAAsC,6CAA6C,OAAO,EAAE,2BAA2B,8BAA8B,uDAAuD,yFAAyF,EAAE,wCAAwC,8BAA8B,WAAW,4EAA4E,SAAS,kCAAkC,0BAA0B,iBAAiB,KAAK,EAAE,6BAA6B,qBAAqB,2FAA2F,aAAa,uhBAAuhB,+DAA+D,iBAAiB,+CAA+C,kBAAkB,0CAA0C,4pBAA4pB,KAAK,kDAAkD,0CAA0C,4DAA4D,2CAA2C,uCAAuC,yDAAyD,6CAA6C,kDAAkD,+CAA+C,8CAA8C,KAAK,wCAAwC,wBAAwB,6BAA6B,KAAK,gCAAgC,gBAAgB,oBAAoB,IAAI,6BAA6B,GAAG,KAAK,iCAAiC,wCAAwC,gCAAgC,KAAK,kBAAkB,oBAAoB,mBAAmB,KAAK,WAAW,iBAAiB,KAAK,WAAW,iBAAiB,yBAAyB,KAAK,gBAAgB,oBAAoB,0BAA0B,KAAK,gBAAgB,iBAAiB,KAAK,gBAAgB,iBAAiB,yBAAyB,KAAK,gBAAgB,6CAA6C,sBAAsB,uBAAuB,gBAAgB,qBAAqB,mBAAmB,KAAK,sBAAsB,yBAAyB,yBAAyB,KAAK,YAAY,kBAAkB,oBAAoB,gCAAgC,0BAA0B,mBAAmB,KAAK,mBAAmB,yBAAyB,yCAAyC,KAAK,4BAA4B,4BAA4B,qBAAqB,uBAAuB,yBAAyB,KAAK,uBAAuB,oBAAoB,0BAA0B,0BAA0B,sBAAsB,KAAK,mBAAmB,gCAAgC,qBAAqB,6BAA6B,sBAAsB,gCAAgC,sBAAsB,KAAK,yBAAyB,6BAA6B,qBAAqB,gCAAgC,KAAK,yBAAyB,oBAAoB,KAAK,iBAAiB,4BAA4B,qBAAqB,KAAK,uRAAuR,6CAA6C,yEAAyE,sCAAsC,cAAc,YAAY,4BAA4B,MAAM,iJAAiJ,YAAY,uhBAAuhB,2BAA2B,mBAAmB,6BAA6B,uGAAuG,oCAAoC,wBAAwB,wBAAwB,gDAAgD,MAAM,iBAAiB,MAAM,YAAY,IAAI,47DAA47D,eAAe,6CAA6C;AAC3vyB;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;;;;;;;;;ACPvC;AACyH;AAC7B;AAC5F,8BAA8B,mFAA2B,CAAC,wGAAqC;AAC/F;AACA,mEAAmE,aAAa,YAAY,6CAA6C,cAAc,woBAAwoB,8GAA8G,uDAAuD,UAAU,eAAe,iDAAiD,2BAA2B,6BAA6B,KAAK,EAAE,sCAAsC,oBAAoB,mBAAmB,KAAK,6EAA6E;AAC5uC;AACA,iEAAe,uBAAuB,EAAC;;;;;;;;;;;;ACP1B;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA;;AAEA;AACA,4CAA4C,qBAAqB;AACjE;;AAEA;AACA,KAAK;AACL,IAAI;AACJ;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qBAAqB,iBAAiB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,qBAAqB;AACzC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,E;;;;;;;;;;;ACjEa;;AAEb,iCAAiC,2HAA2H;;AAE5J,6BAA6B,kKAAkK;;AAE/L,iDAAiD,gBAAgB,gEAAgE,wDAAwD,6DAA6D,sDAAsD,kHAAkH;;AAE9Z,sCAAsC,uDAAuD,uCAAuC,SAAS,OAAO,kBAAkB,EAAE,aAAa;;AAErL,wCAAwC,gFAAgF,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,mCAAmC,EAAE,EAAE,cAAc,WAAW,UAAU,EAAE,UAAU,MAAM,iDAAiD,EAAE,UAAU,kBAAkB,EAAE,EAAE,aAAa;;AAEve,+BAA+B,oCAAoC;;AAEnE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,E;;;;;;;;;;;AC/Ba;;AAEb;AACA;AACA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;;AAEA;AACA,E;;;;;;;;;;;;;;;;ACjCA;;AAEO;AACA;;;;;;;;;;;;;;;;ACHP,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;ACFoC;AACF;;AAElC,sBAAsB,kDAAQ,CAAC,+CAAS;AACjC;AACA;AACP,iEAAe,WAAW,EAAC;;;;;;;;;;;;;;;;;ACNS;;AAEpC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,mDAAS;AACpB;AACA;;;;;;;;;;;;;;;;AChCA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJ6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,wCAAI;;AAEnC,kBAAkB,SAAS;AAC3B,sCAAsC,SAAS;AAC/C;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACpBA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACFkC;;AAElC,6BAAe,oCAAS;AACxB,UAAU,kDAAQ;AAClB;AACA;;;;;;;;;;;;;;;;ACLA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACpC8B;AACA;AACI;AACJ;AACI;AACN;AACK;AACS;;AAE1C,6BAAe,sCAAW;AAC1B,cAAc,8CAAQ;AACtB,eAAe,4CAAM;AACrB,kBAAkB,uDAAO;;AAEzB;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,gDAAQ;AACnB,WAAW,+CAAK,kCAAkC;AAClD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,aAAa,gDAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,kDAAQ;AAC7E;;AAEA;AACA,sEAAsE,kDAAQ;AAC9E;;AAEA;AACA,4FAA4F,kDAAQ,CAAC,8CAAU,OAAO,kDAAQ;AAC9H;;AAEA;AACA;;;;;;;;;;;;;;;;AC1EA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFoE;AACnB;AACF;AACN;AACU;AACF;AACN;AACM;AACiC;AACtB;AACI;AAC3B;AACE;AACI;AACF;AACJ;AACI;AACI;AACE;AACN;AACF;AACM;AACR;AAC6B;AACjB;AACF;AACV;;;;;;;;;;;;;;;;AC1BrC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACjC8B;;AAE9B,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gDAAM;AAC/B;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gDAAM;AAC/B;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACxBoC;AACN;AACI;;AAElC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gDAAM;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gDAAM;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,kDAAQ,cAAc,+CAAS;AACxC;;;;;;;;;;;;;;;;AC3BA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACpBA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACjCA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACFA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACTA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJ8B;;AAE9B,6BAAe,oCAAS;AACxB,iCAAiC,4CAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACbA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACZoC;;AAEpC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,+CAAS;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACnBA,6BAAe,oCAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACbA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;ACnB6B;AACQ;AACN;AACI;;AAEnC,6BAAe,oCAAS;AACxB,WAAW,4CAAQ,SAAS,4CAAM,OAAO,+CAAS;AAClD,uCAAuC,kDAAQ,iBAAiB,kDAAQ;AACxE;;;;;;;;;;;;;;;;;ACRqC;;AAErC,6BAAe,oCAAS;AACxB,wCAAwC,mDAAS;AACjD;;;;;;;;;;;;;;;;ACJA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClDwB;;AAExB,6BAAe,oCAAS;AACxB;AACA,uBAAuB,6CAAG,2CAA2C,SAAS;AAC9E,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;ACd8B;;AAE9B,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;AChCoC;;AAEpC,6BAAe,sCAAW;AAC1B,SAAS,mDAAS;AAClB;;;;;;;;;;;;;;;;ACJO;;;;;;;;;;;;;;;;;;;;;ACAuB;AACI;;AAElC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yGAAyG,8CAAQ;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,kFAAkF,EAAE;;AAE9H;AACA;AACA,0CAA0C,gCAAgC,6DAA6D,EAAE;AACzI;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,+BAA+B,EAAE;;AAEzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,wBAAwB,EAAE;AACpD;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,8CAAU;AACrC;;AAEA;AACA,gEAAgE,8CAAU;AAC1E;;AAEA;AACA,+DAA+D,8CAAU;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;AC7KA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;ACGgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLqB;AACW;AACL;AAC2B;AAC9B;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,qDAAK,SAAS,uDAAa;AACtC;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA;AACA,uBAAuB,wCAAwC,EAAE;AACjE,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEA;AACA;AACA,UAAU,uDAAa,KAAK,sDAAY;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oDAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,qDAAM;AAChB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe,EAAE;;AAEvD;;AAEA;AACA,oCAAoC,mCAAmC,EAAE;AACzE,qCAAqC,wBAAwB,EAAE;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,gDAAgD,EAAE;AAC3F,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAW;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,wDAAS;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,qDAAM;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gHAAgH,EAAE;AACpJ,kCAAkC,gGAAgG,EAAE;AACpI,sCAAsC,uGAAuG,EAAE;AAC/I,uCAAuC,uGAAuG,EAAE;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,yDAAW,KAAK,8CAAU;AAChC;AACA;;AAEA;AACA,wBAAwB,uDAAa;AACrC;;AAEA;AACA,eAAe,oEAA0B;AACzC,wBAAwB,uDAAa,mEAAmE,sDAAY;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wDAAc;AAC3D;AACA;AACA,kBAAkB,uDAAa,WAAW,4EAAkC,IAAI,iDAAK;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,qDAAM;AACtB;;AAEA;AACA;;AAEA,QAAQ,uDAAa;AACrB;AACA;AACA,KAAK;AACL,iBAAiB,qDAAM,CAAC,oDAAU;AAClC;AACA;AACA;AACA;AACA;;AAEA,MAAM,kDAAW,CAAC,oDAAU;AAC5B;;AAEA,IAAI,0DAAa;AACjB,IAAI,wDAAS;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oDAAO;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,0DAAa;AACnB,UAAU,uDAAa;AACvB,YAAY,8DAAoB;AAChC;AACA,6CAA6C,oBAAoB,EAAE,OAAO;AAC1E,OAAO;AACP,QAAQ,iDAAU,CAAC,oDAAU;AAC7B;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA,cAAc,uDAAa;AAC3B,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oDAAO;AACb;;AAEA;AACA,cAAc,uDAAa;AAC3B,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB,sDAAY;AAC5B;AACA;AACA;AACA,aAAa;AACb,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,oDAAO;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA,yEAAyE,qDAAQ;AACjF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;AC5kBA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACJA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACCoB;;;;;;;;;;;;;;;;;;ACLe;;AAE5B;AACP,EAAE,wEAA8B;AAChC;;AAEA,6BAAe,sCAAW;AAC1B,EAAE,8DAAoB;AACtB,EAAE,wEAA8B;AAChC;;;;;;;;;;;;;;;;ACTO;;;;;;;;;;;;;;;;;;ACAwB;AACC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,+CAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,oBAAoB;AACpB;AACA;AACA;AACA,yBAAyB,+CAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,0CAAG,IAAI,sCAAG;AAClB,wBAAwB,sCAAG;;AAE3B;AACA;AACA,kBAAkB;AAClB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,gBAAgB;AAChB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,0CAAG;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACxHA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACJyC;AACE;;;;;;;;;;;;;;;;;;;;;ACDpC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACLuB;AACI;AACM;AACX;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,8CAAU;AACzB;AACA;AACA;AACA,6CAA6C,yCAAM;AACnD,2CAA2C,yCAAM;AACjD,mBAAmB,0CAAG;AACtB,mBAAmB,0CAAG;AACtB;AACA,6CAA6C,yCAAM;AACnD,2CAA2C,yCAAM;;AAEjD,qCAAqC,gDAAI;;AAEzC;AACA;AACA,qCAAqC;AACrC,0CAA0C,0CAAG,YAAY,0CAAG;AAC5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sEAAsE,kDAAQ;AAC9E;;AAEA;AACA,0EAA0E,kDAAQ;AAClF;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACtFA,6BAAe,oCAAS;AACxB;AACA,qCAAqC,0BAA0B;AAC/D;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJuC;AACF;AACA;AACE;AACI;AACE;;;;;;;;;;;;;;;;ACL7C,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJO;;AAEP;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yEAAyE,8CAA8C;AACvH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+DAA+D,qBAAqB,EAAE;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;;AC1EK;;AAExB,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAG;AACzB;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,aAAa,kCAAkC,EAAE,EAAE;AACjG,wDAAwD,8BAA8B,EAAE;AACxF;;AAEA;AACA,6BAA6B,iDAAiD,EAAE;AAChF,0BAA0B,2CAA2C,EAAE;AACvE,8BAA8B,uDAAuD,EAAE;AACvF,sBAAsB,cAAc,aAAa,EAAE;AACnD,+BAA+B,mCAAmC,aAAa,EAAE;AACjF,iCAAiC,oBAAoB,aAAa,EAAE;AACpE,yBAAyB,YAAY,aAAa;AAClD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS,6CAAG;AACZ;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;ACxE6C;;AAE7C;;AAEA,YAAY,mDAAa;;AAEzB;AACA;AACA;AACA;AACA;AACA,SAAS,wCAAM;AACf;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0DAA0D,gBAAgB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iEAAe,GAAG,EAAC;;;;;;;;;;;;;;;;ACtCnB,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACJ2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mDAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,mDAAM,WAAW,kDAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mDAAM,WAAW,kDAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AClX2C;AACyB;AACzB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,0CAAG,OAAO,qDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAO;AACzC;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,mDAAM,uBAAuB,kDAAM,CAAC,4CAAK;AACzC;AACA,oBAAoB,+CAAQ,YAAY,+CAAQ;AAChD;AACA,GAAG;AACH;AACA,oBAAoB,6CAAM,YAAY,6CAAM;AAC5C;AACA,GAAG;AACH;AACA,iDAAiD,6CAAO;AACxD;AACA;AACA;AACA;AACA,eAAe,0CAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC5DD,6BAAe,oCAAS;AACxB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACTsD;AACE;AACJ;;;;;;;;;;;;;;;;;;;;;;;;ACFT;AACO;AACP;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0CAAG,OAAO,qDAAU;AACzC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,mDAAM,WAAW,kDAAM,CAAC,4CAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0CAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,6CAAO;AACxC;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,6CAAO;AACvB;AACA;;AAEA,mDAAM,WAAW,kDAAM,CAAC,4CAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;AC1HM;AACA;;;;;;;;;;;;;;;;ACDP,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACJA;;AAEO;;;;;;;;;;;;;;;;ACFP,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1CA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACJA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1BmE;AACrC;AACM;AACV;AACQ;AACA;AACR;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA,kBAAkB,sDAAgB;AAClC;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,gDAAM;AACzB,WAAW,kDAAQ;AACnB,WAAW,+CAAK;AAChB,KAAK;AACL,2BAA2B,+CAAS;AACpC;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,8CAAI;AACd;AACA,KAAK;;AAEL;AACA,mDAAmD,OAAO;AAC1D,YAAY,kDAAQ;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,kDAAQ,CAAC,8CAAU,OAAO,kDAAQ;AAC9H;;AAEA;AACA,2DAA2D,0CAAI;AAC/D;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;AC1M8C;AAChB;AACM;AACF;AACA;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kDAAQ;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI,4CAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,4CAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,4CAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,4CAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,4CAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,4CAAK,EAAE,mCAAmC,GAAG,mCAAmC;;AAEpF;;AAEA;AACA;AACA,iBAAiB,6CAAG;AACpB,WAAW,kDAAQ;AACnB,WAAW,+CAAK;AAChB;AACA;;AAEA,WAAW,kDAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,kDAAQ;AACzE;;AAEA;AACA,iEAAiE,kDAAQ;AACzE;;AAEA;AACA,sEAAsE,kDAAQ;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,kDAAQ,CAAC,8CAAU,OAAO,kDAAQ;AAC9H;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACpI+C;AACK;;;;;;;;;;;;;;;;ACDpD,6BAAe,sCAAW;;;;;;;;;;;;;;;;ACA1B,YAAY;;AAEZ;AACA,8CAA8C,IAAI,OAAO;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,kFAAkF,OAAO;AACzF;AACA,+CAA+C,OAAO;AACtD,GAAG;AACH;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEA,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;ACnF0B;;;;;;;;;;;;;;;;ACAlD,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACJqC;AACiC;AAC1B;AACQ;AACf;AACF;;AAEnC;AACA;AACA,UAAU,uDAAa,KAAK,sDAAY;AACxC;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,GAAG,iDAAO,KAAK,iDAAO,CAAC;AAC7C;;AAEA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA,mBAAmB;AACnB,kBAAkB,oDAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yEAAyE,iDAAK;AAC9E;AACA,IAAI,qDAAM,CAAC,oDAAU;AACrB,IAAI,mDAAM,CAAC,oDAAU;AACrB,IAAI,0DAAa;AACjB;AACA,iBAAiB,uDAAa;AAC9B,iBAAiB,uDAAa;AAC9B;AACA;;AAEA;AACA,IAAI,oDAAO;AACX;AACA,eAAe,uDAAa,oBAAoB,uDAAa;AAC7D;AACA;AACA;AACA;;AAEA;AACA,IAAI,qDAAM,CAAC,oDAAU;AACrB,IAAI,mDAAO,CAAC,oDAAU;AACtB,IAAI,oDAAO;AACX;AACA;;AAEA;AACA;AACA,kBAAkB,8DAAoB;AACtC;AACA;;AAEA,eAAe,OAAO;AACtB,0DAA0D,iDAAK;AAC/D,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,8DAAoB;AACtC;;AAEA,eAAe,OAAO;AACtB;AACA,QAAQ,oDAAO;AACf;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,8DAAoB;AACtC;;AAEA;AACA,yCAAyC,oBAAoB,EAAE,OAAO;AACtE,eAAe,OAAO;AACtB;AACA,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,yDAAW,KAAK,8CAAS;AAClC,WAAW,uDAAa;AACxB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,2DAA2D;AAC3D,kDAAkD;AAClD,0DAA0D;AAC1D;AACA,MAAM,yDAAW,KAAK,8CAAS;AAC/B;AACA;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA,yEAAyE,qDAAQ;AACjF;;AAEA;AACA,uEAAuE,qDAAQ;AAC/E;;AAEA;AACA,yEAAyE,qDAAQ;AACjF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACtKe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChB0C;AACgC;;;;;;;;;;;;;;;;;;;ACDtC;AACD;;AAEnC,6BAAe,oCAAS;AACxB;AACA,kBAAkB,qDAAM,4BAA4B,gDAAO;AAC3D;AACA,qCAAqC,gDAAO;AAC5C,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA,kBAAkB,qDAAM;AACxB;AACA,+BAA+B,gDAAO;AACtC,2BAA2B,kCAAkC,EAAE;AAC/D;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC3BmC;;AAE5B;AACP,EAAE,wEAA8B;AAChC;;AAEA,6BAAe,sCAAW;AAC1B,EAAE,8DAAoB;AACtB,EAAE,wEAA8B;AAChC;;;;;;;;;;;;;;;;ACTe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+F;;;;;;;;;;;;;;;;;;;;;;ACnB2B;;AAE3B,UAAU,gDAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACVP,YAAY;AACZ,YAAY;AACZ;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnK8C;AACyE;AACA;AACrE;;;;;;;;;;;;;;;;;;;;;;;ACHvB;;AAE3B,UAAU,gDAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACVP;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;;;;;;;;;;;;;;;;;ACpCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;ACrBO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;ACVO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA,qCAAqC,2BAA2B;AAChE,kCAAkC,qBAAqB;;AAEvD;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;;AAEA,sCAAsC,2BAA2B;AACjE,mCAAmC,qBAAqB;;AAExD;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC,2BAA2B;AACnE,qCAAqC,qBAAqB;;AAE1D;AACA,CAAC;;;;;;;;;;;;;;;;;;AC3CM;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRqB;;AAOF;;AAOC;;AAOD;;AAOD;;AAOA;;AAOG;;AAOA;;AAOF;;AAOG;;;;;;;;;;;;;;;;ACjEf;AACP;AACA;;;;;;;;;;;;;;;;;;ACFA;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;;;;;;;;;;;;;;;;;ACpCM;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;ACVA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACbA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;ACPqD;AAC3B;;AAE1B;AACA;AACA;AACA,WAAW,8CAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe;AACf;AACA,eAAe,+CAAS;AACxB,SAAS,8CAAI;AACb;AACA,GAAG;AACH;;AAEO,mBAAmB,4CAAQ;AAC3B,mBAAmB,4CAAQ;;;;;;;;;;;;;;;;ACrBlC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRuC;AACI;AACI;AACN;AACF;AACA;AACS;;;;;;;;;;;;;;;;ACNhD;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;ACPA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;ACP0B;;AAE1B;AACA;AACA,WAAW,8CAAI;AACf;AACA,KAAK;AACL;AACA;;AAEA,iEAAe,yBAAyB,EAAC;;AAElC;;AAEA;;;;;;;;;;;;;;;;ACdP,6BAAe,oCAAS;AACxB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,iDAAiD,OAAO;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACnCkC;AACJ;AACO;;AAErC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA,6CAA6C,kDAAQ;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,aAAa,oDAAQ;AACrB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAM;AACnC,6BAA6B,gDAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,kDAAQ;AAC9E;;AAEA;AACA;;;;;;;;;;;;;;;;ACjGA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJgD;AACE;AACN;AACQ;AACJ;AACQ;AAClB;AACA;;;;;;;;;;;;;;;;ACPtC,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;;;ACFkC;AACJ;AACI;;AAElC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA,iBAAiB,kDAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,gBAAgB;AACrD,uDAAuD,OAAO;AAC9D;AACA,2DAA2D,gDAAM;AACjE,2DAA2D,gDAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,kDAAG;AACtB;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;ACnHkC;AACJ;AACO;AACH;;AAElC,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA,iBAAiB,kDAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,oDAAQ,QAAQ,0CAAC,EAAE,0CAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,gDAAM;AAC/B,yBAAyB,gDAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC;AACzC;AACA,uBAAuB,gDAAM;AAC7B,uBAAuB,gDAAM;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACjHkC;;AAElC,6BAAe,oCAAS;AACxB;AACA,iBAAiB,kDAAQ;AACzB;AACA;;AAEA,6CAA6C,kDAAQ;AACrD;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA,sEAAsE,kDAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;ACxDqC;AACH;AACH;;AAExB;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kDAAG;AAClB,gBAAgB,+CAAK;AACrB,cAAc,oDAAQ;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtJkC;;AAElC,6BAAe,oCAAS;AACxB,iBAAiB,kDAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,kDAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA,iEAAiE,kDAAQ;AACzE;;AAEA;AACA;;;;;;;;;;;;;;;;;ACxCkC;;AAElC,6BAAe,oCAAS;AACxB,iBAAiB,kDAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,kDAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,kDAAQ;AAChF;;AAEA;AACA,iEAAiE,kDAAQ;AACzE;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACxCuC;;AAEvC;AACO;AACA;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,WAAW,mDAAY;AACvB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnB+C;;AAE/C,6BAAe,oCAAS;AACxB,aAAa,0DAAa;AAC1B;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA,6BAAe,oCAAS;AACxB,+FAA+F;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACbA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;ACjBA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;ACN+C;;AAExC;;AAEP,6BAAe,oCAAS;AACxB,UAAU,0DAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,0DAAa,+BAA+B;AACxF;;;;;;;;;;;;;;;;;ACf+C;;AAE/C,6BAAe,oCAAS;AACxB,UAAU,0DAAa;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACVA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,sDAAsD;;AAE/C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9CA;AACA,6BAAe,oCAAS;AACxB,iDAAiD,OAAO;AACxD;AACA,4BAA4B;AAC5B,qCAAqC,QAAQ;AAC7C,4BAA4B,uBAAuB,QAAQ,EAAE;AAC7D;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACVqD;AACN;;AAE/C,iEAAe;AACf,uBAAuB,6BAA6B,EAAE;AACtD,oBAAoB,kCAAkC,EAAE;AACxD,oBAAoB,eAAe,EAAE;AACrC,oBAAoB,mCAAmC,EAAE;AACzD,uBAAuB,2BAA2B,EAAE;AACpD,uBAAuB,qBAAqB,EAAE;AAC9C,uBAAuB,yBAAyB,EAAE;AAClD,oBAAoB,kCAAkC,EAAE;AACxD,uBAAuB,QAAQ,0DAAa,aAAa,EAAE;AAC3D,OAAO,sDAAa;AACpB,OAAO,yDAAgB;AACvB,oBAAoB,iDAAiD,EAAE;AACvE,oBAAoB,mCAAmC;AACvD,CAAC,EAAC;;;;;;;;;;;;;;;;ACjBF,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFwF;AACpC;AAC6B;AACnB;AACE;AACF;;;;;;;;;;;;;;;;;;;;;;;;ACLzB;AACM;AACM;AACE;AACV;AACE;AACU;AAChB;;AAErC;AACA;;AAEA,6BAAe,oCAAS;AACxB,gFAAgF,iDAAQ,GAAG,wDAAW;AACtG;AACA;AACA;AACA,iDAAiD,iDAAQ,GAAG,2DAAc;AAC1E;AACA;AACA;;AAEA;AACA,gBAAgB,4DAAe;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,oDAAW;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,oDAAW;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,uDAAU;;AAEpC;AACA;;AAEA;AACA;;AAEA,mDAAmD,gEAAc;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sEAAsE;AACtE,sEAAsE;AACtE,qIAAqI;AACrI,qEAAqE;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,4DAAe;AAClD,gDAAgD,qDAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClJqC;;AAErC,6BAAe,oCAAS;AACxB,sBAAsB,qDAAQ;AAC9B;;;;;;;;;;;;;;;;;ACJqC;;AAErC,6BAAe,oCAAS;AACxB,yDAAyD,qDAAQ,qBAAqB,qDAAQ;AAC9F;;;;;;;;;;;;;;;;;ACJqC;;AAErC,6BAAe,oCAAS;AACxB;AACA,qBAAqB,qDAAQ,QAAQ,qDAAQ;AAC7C;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACvC+B;AACoC;AACtC;AACI;;AAE1B,kBAAkB,kDAAK;;AAE9B,cAAc,kDAAK;AACnB;AACA;AACA;AACA;AACA;;AAEO;AACP,SAAS,6CAAI;AACb,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,+BAA+B,yCAAG;AAClC,iDAAiD,6CAAI;AACrD,GAAG;AACH;AACA,gBAAgB,yCAAG;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,8BAA8B,6CAAG,iBAAiB,+CAAS,aAAa,6CAAG;AAC3E;;AAEA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,kBAAkB,+CAAS,CAAC;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6CAAG;AAClB,eAAe,6CAAG;AAClB;AACA,iCAAiC,6CAAG;AACpC,yBAAyB,6CAAG;AAC5B,kBAAkB,+CAAK;;AAEvB;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA,EAAE,mDAAM;AACR;AACA;;;;;;;;;;;;;;;;;;;;;ACzE+B;AACmB;AAC6C;AACtC;AACxB;;AAEjC;AACA;AACA;AACA;AACA,eAAe,kDAAK;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6DAAuB;AAC3B,GAAG;AACH;AACA,IAAI,2DAAqB;AACzB;AACA;AACA;AACA,QAAQ,iDAAW;AACnB,wBAAwB,6CAAO;AAC/B,yBAAyB,6CAAO;AAChC;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,wDAAS,WAAW,6CAAO,QAAQ,6CAAO;AACpD;AACA,iBAAiB,6DAAc;AAC/B;AACA,qBAAqB,6DAAc;AACnC,IAAI,wEAAyB;AAC7B,iBAAiB,wDAAS;AAC1B;AACA;AACA,kCAAkC,6CAAO;AACzC;AACA,uBAAuB,6CAAG;AAC1B;AACA,6BAA6B,6CAAO;AACpC;AACA,KAAK;AACL,8BAA8B,6CAAO;AACrC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,6CAAG;AACpB,GAAG;AACH;AACA;AACA,EAAE,sDAAgB;AAClB;AACA;;AAEA;AACA,EAAE,0DAAoB;AACtB;;AAEA;AACA;AACA,EAAE,wDAAkB;AACpB,MAAM,6CAAG,aAAa,6CAAO;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA,EAAE,mDAAM;;AAER;AACA;AACA;;AAEA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,2EAA2E,QAAQ;AACnF;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClLsD;;AAE/C;AACP,UAAU,+CAAK,8BAA8B,8CAAI;AACjD;;AAEO;AACP,0DAA0D,6CAAG;AAC7D,mBAAmB,6CAAG,mBAAmB,6CAAG,UAAU,6CAAG;AACzD;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP,UAAU,8CAAI;AACd;AACA;;;;;;;;;;;;;;;;;;;AChC2F;AAC9D;AACI;;AAEjC;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA,UAAU,6CAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,eAAe,6CAAG;AAClB,kCAAkC,6CAAG,mBAAmB,6CAAG,UAAU,6CAAG;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,eAAe,6CAAG;AAClB,gBAAgB,6CAAG;AACnB,gBAAgB,6CAAG;AACnB,OAAO,6CAAG;AACV;AACA;AACA;;AAEA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,eAAe,6CAAG;AAClB,mBAAmB,6CAAG;AACtB,mBAAmB,6CAAG;AACtB,UAAU,6CAAG;AACb,UAAU,+CAAK,CAAC,8CAAI;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC;AACA,eAAe,6CAAG;AAClB,gBAAgB,6CAAG;AACnB,gBAAgB,6CAAG;AACnB,OAAO,6CAAG;AACV;AACA;;AAEA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,eAAe,6CAAG;AAClB,mBAAmB,6CAAG;AACtB,mBAAmB,6CAAG;AACtB,UAAU,6CAAG;AACb;AACA;AACA;AACA,UAAU,8CAAI;AACd,UAAU,8CAAI;AACd,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA,EAAE,mDAAM;;AAER;AACA;AACA;AACA;;AAEA;AACA,UAAU,8CAAQ;AAClB;AACA;AACA,aAAa,6CAAO;AACpB;AACA;AACA,YAAY,8CAAQ;AACpB;;AAEA,UAAU,+CAAK,SAAS,6CAAO,EAAE,8CAAI,KAAK,8CAAI,OAAO,6CAAO;AAC5D;;;;;;;;;;;;;;;;;;;;;AC3I+E;AAC1C;AACoC;AAC7B;;AAE5C;AACO;AACP;AACA,kBAAkB,6CAAG;AACrB,kBAAkB,6CAAG;AACrB;AACA;AACA,8BAA8B,yCAAG;AACjC;AACA,GAAG;AACH;AACA;AACA,6DAA6D,yCAAG;AAChE;AACA,yBAAyB,iCAAiC;AAC1D,YAAY,wDAAS,0BAA0B,6CAAG,kBAAkB,6CAAG;AACvE;AACA;AACA;;AAEA;AACA;AACA,UAAU,wDAAS;AACnB,EAAE,wEAAyB;AAC3B,eAAe,8CAAI;AACnB,+CAA+C,yCAAG,GAAG,6CAAO,IAAI,yCAAG;AACnE;;AAEA,6BAAe,sCAAW;AAC1B,eAAe,qDAAQ;AACvB,eAAe,qDAAQ;AACvB,kBAAkB,qDAAQ;AAC1B;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,YAAY,6CAAO,UAAU,6CAAO;AACpC;;AAEA;AACA;AACA,4CAA4C,6CAAO;AACnD,+CAA+C,6CAAO;AACtD;AACA,aAAa,2DAAa,SAAS,6CAAO,UAAU,6CAAO;AAC3D;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA,yEAAyE,qDAAQ;AACjF;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACvE8B;AACsC;;AAEpE,iEAAe,kDAAI;AACnB,cAAc,aAAa,EAAE;AAC7B;AACA;AACA,IAAI,wCAAE,GAAG,4CAAM;AACf,CAAC,EAAC;;AAEF;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gCAAgC,wCAAE,IAAI,wCAAE;AACxC,kBAAkB,6CAAG;AACrB,UAAU,6CAAG,SAAS,wCAAE,IAAI,6CAAO,GAAG;AACtC,6DAA6D,4CAAM,IAAI,4CAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sCAAsC,wCAAE,GAAG;AAClD,YAAY,6CAAG,oBAAoB,6CAAO,qBAAqB,6CAAO,CAAC;AACvE,YAAY,6CAAG,oBAAoB,6CAAO,qBAAqB,6CAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,6CAAG;AAC7B,SAAS,6CAAG,sBAAsB,6CAAO;AACzC,QAAQ,8CAAI,EAAE,6CAAG,oBAAoB,6CAAG,UAAU,6CAAG;AACrD,YAAY,6CAAG,oBAAoB,6CAAG,UAAU,6CAAG;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,4CAAM;AAC5B,kBAAkB,wCAAE;AACpB;AACA,iBAAiB,wCAAE;AACnB,iBAAiB,wCAAE;AACnB,iBAAiB,wCAAE;AACnB;AACA,kBAAkB,wCAAE;AACpB,kBAAkB,wCAAE;AACpB,kBAAkB,wCAAE;AACpB,GAAG,UAAU,6CAAG,oBAAoB,6CAAO;AAC3C,mCAAmC,wCAAE,IAAI,wCAAE;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;;;AC3F8B;;AAE9B,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,aAAa,6CAAI;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACvBwH;AAC9E;AACsB;AACtB;AACZ;;AAE9B,6BAAe,oCAAS;AACxB,WAAW,6CAAG;AACd,kBAAkB,6CAAO;AACzB;AACA,sBAAsB,6CAAG,OAAO,6CAAO,CAAC;;AAExC;AACA,IAAI,wDAAY;AAChB;;AAEA;AACA,WAAW,6CAAG,WAAW,6CAAG;AAC5B;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,wCAAE,IAAI,wCAAE;AACxD;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAU,oBAAoB,uDAAU;AACjE,yBAAyB,6CAAO;AAChC,yBAAyB,6CAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uDAAU;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,wDAAS;AACtB,aAAa,wDAAS;;AAEtB;AACA;AACA;AACA,aAAa,6DAAc;AAC3B,eAAe,2DAAY;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,6DAAc;AAC9B,YAAY,6DAAc;AAC1B,YAAY,6DAAc;AAC1B,IAAI,kEAAmB;;AAEvB;AACA;AACA,YAAY,2DAAY;AACxB,aAAa,2DAAY;AACzB,2BAA2B,2DAAY;;AAEvC;;AAEA,YAAY,8CAAI;AAChB,YAAY,6DAAc;AAC1B,IAAI,kEAAmB;AACvB,QAAQ,wDAAS;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,6CAAG,SAAS,wCAAE,IAAI,6CAAO;AACzC,oCAAoC,6CAAO;;AAE3C;;AAEA;AACA;AACA;AACA,sCAAsC,6CAAG,mBAAmB,6CAAO;AACnE;AACA,kBAAkB,wCAAE;AACpB,eAAe,6DAAc;AAC7B,MAAM,kEAAmB;AACzB,iBAAiB,wDAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,wCAAE;AACrC;AACA,+BAA+B;AAC/B,mCAAmC;AACnC,4BAA4B;AAC5B,gCAAgC;AAChC;AACA;;AAEA,SAAS,kDAAI,gEAAgE,wCAAE,WAAW,wCAAE;AAC5F;;;;;;;;;;;;;;;;;ACrL2C;;AAE3C,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,sDAAa;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnBqC;AACA;AACM;AACS;AACrB;;AAE/B,6BAAe,oCAAS;AACxB;AACA;AACA,qBAAqB,mDAAU;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,mBAAmB,+CAAK;AACxB,0BAA0B,4DAAe;AACzC;AACA;AACA,UAAU,mDAAU;AACpB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,4CAAM,GAAG,6CAAO,GAAG,4CAAM;AAC7D,oCAAoC,4CAAM,GAAG,6CAAO,GAAG,4CAAM;AAC7D;;;;;;;;;;;;;;;;AClIA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC1DwC;AACH;AACJ;AACI;AACN;;AAE/B;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,6CAAG,cAAc,6CAAO;AACnC,UAAU,6CAAG,cAAc,6CAAO;AAClC,UAAU,6CAAG,cAAc,6CAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,mDAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,+CAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,mDAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,iDAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;ACvK0C;;AAE1C;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,uDAAU;AAClB;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;;AAEA,8BAA8B,OAAO;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qCAAqC,QAAQ;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACpGA,6BAAe,oCAAS;;AAExB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACXA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACJgE;AACd;AACN;;AAE5C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,qDAAQ;AACjB;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD,SAAS,qDAAQ;AACjB;AACA;AACA,WAAW,qDAAQ;AACnB;AACA;AACA;AACA;AACA,6DAA6D,8CAAQ;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,4DAAe;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,6CAAO,aAAa,6CAAO;AAChD;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChGiC;;AAEjC;AACA,cAAc;;AAEd,6BAAe,oCAAS;AACxB;AACA;AACA,SAAS,mDAAM;AACf;;;;;;;;;;;;;;;;;;;ACT+B;AACc;;AAE7C;AACA,UAAU,+CAAK,UAAU,6CAAO;AAChC,sBAAsB,2BAA2B,eAAe,EAAE,EAAE;AACpE;;AAEA;AACA,UAAU,+CAAK,UAAU,6CAAO;AAChC,sBAAsB,2BAA2B,eAAe,EAAE,EAAE;AACpE;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA,WAAW,+CAAK,CAAC,8CAAI;AACrB,gBAAgB,+CAAK,CAAC,8CAAI;AAC1B,gBAAgB,+CAAK,CAAC,8CAAI,4CAA4C,QAAQ,6CAAG,WAAW,6CAAO,CAAC,EAAE;AACtG,gBAAgB,+CAAK,CAAC,8CAAI,4CAA4C,QAAQ,6CAAG,WAAW,6CAAO,CAAC,EAAE;AACtG;;AAEA;AACA,8CAA8C,SAAS,8CAA8C,EAAE;AACvG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,6CAAO,cAAc,6CAAO;AAC7D,iCAAiC,6CAAO,cAAc,6CAAO;AAC7D;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACxGA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACF6C;AACI;AACI;AACJ;AACqB;AACZ;AACA;AACM;AACX;AACA;AACiC;AAC3B;AACV;AACE;AACS;AACM;AACqE;AACQ;AACxB;AACA;AACQ;AACxB;AACoB;AAC5B;AAC/B;AAC0C;AACX;AACoB;AACJ;AACI;AACoB;AAClF;AACJ;AACM;;;;;;;;;;;;;;;;;ACjC2B;;AAElF,6BAAe,oCAAS;AACxB,kBAAkB,6CAAO;AACzB,kBAAkB,6CAAO;AACzB,kBAAkB,6CAAO;AACzB,kBAAkB,6CAAO;AACzB,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf,kBAAkB,6CAAG;AACrB,kBAAkB,6CAAG;AACrB,kBAAkB,6CAAG;AACrB,kBAAkB,6CAAG;AACrB,cAAc,8CAAI,CAAC,8CAAI,CAAC,kDAAQ,wBAAwB,kDAAQ;AAChE,UAAU,6CAAG;;AAEb;AACA,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf;AACA;AACA;AACA;AACA,MAAM,+CAAK,SAAS,6CAAO;AAC3B,MAAM,+CAAK,IAAI,8CAAI,mBAAmB,6CAAO;AAC7C;AACA,GAAG;AACH,iBAAiB,6CAAO,OAAO,6CAAO;AACtC;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;ACnC+B;AAC+B;AACjC;AACI;;AAEjC,gBAAgB,kDAAK;AACrB;AACA;AACA;;AAEA;AACA,UAAU,6CAAI;AACd,SAAS,6CAAI;AACb;AACA,WAAW,6CAAI;AACf,gBAAgB,6CAAI;AACpB,cAAc,6CAAI;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,6CAAI;AAClD;;AAEA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,8BAA8B,6CAAG,iBAAiB,6CAAG;AACrD;AACA;;AAEA;AACA,YAAY,6CAAO,SAAS,6CAAO;AACnC,eAAe,6CAAG;AAClB,eAAe,6CAAG;AAClB,cAAc,6CAAG;AACjB,iBAAiB,6CAAG;AACpB,iBAAiB,6CAAG;AACpB;AACA;AACA;AACA,gBAAgB,+CAAK,CAAC,8CAAI;AAC1B;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA,EAAE,mDAAM;AACR;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDO;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAmC;AACxE;AACA;;AAEA;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;AClCe;;;;;;;;;;;;;;;;;;;ACAiB;AACD;AACD;;AAE9B,cAAc,kDAAK;AACnB,kBAAkB,kDAAK;AACvB;AACA;AACA;AACA;;AAEA;AACA,SAAS,6CAAI;AACb,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,mEAAmE,6CAAI;AACvE,gBAAgB,6CAAG;AACnB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;ACjDI;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf,gBAAgB,6CAAI;AACpB,cAAc,6CAAI;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;AC3BI;;AAEhC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,8CAAI;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,8CAAI;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,cAAc,EAAC;;;;;;;;;;;;;;;;;;ACnGC;AACD;;AAEf;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yCAAG;AACpD;AACA;AACA;AACA,GAAG;AACH,UAAU,6CAAI;AACd;;;;;;;;;;;;;;;;;;;;;;;;AC5CsC;AACJ;AACD;AACI;AACI;AACF;AACA;AACF;;AAErC,6BAAe,oCAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM,mDAAM;AACZ;AACA;AACA;;AAEA;AACA,IAAI,mDAAM,0BAA0B,6CAAQ;AAC5C,WAAW,oDAAe;AAC1B;;AAEA;AACA,IAAI,mDAAM,0BAA0B,gDAAW;AAC/C,WAAW,uDAAkB;AAC7B;;AAEA;AACA,IAAI,mDAAM,0BAA0B,+CAAU;AAC9C,WAAW,sDAAiB;AAC5B;;AAEA;AACA,IAAI,mDAAM,0BAA0B,iDAAY;AAChD,WAAW,wDAAmB;AAC9B;;AAEA;AACA,kFAAkF,iDAAQ;AAC1F;;AAEA;AACA;AACA,qDAAqD,+CAAU,QAAQ,gDAAW;AAClF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;AC5DgC;AACA;AACF;;AAE9B,gBAAgB,kDAAK;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,6CAAI;AACb;AACA;AACA,GAAG;AACH;AACA;AACA,yBAAyB,6CAAI;AAC7B,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,8CAAI;AACpB;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;AC5Cb;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC1DuC;;AAEvC,6BAAe,oCAAS;AACxB,SAAS,6CAAG,gBAAgB,6CAAO,IAAI,6CAAG,gBAAgB,6CAAO;AACjE;;;;;;;;;;;;;;;;;;;ACJ+B;AACqD;AACY;;AAEhG,UAAU,kDAAK;;AAEf;AACA,MAAM,6CAAG,cAAc,wCAAE;AACzB;AACA;AACA,WAAW,8CAAI,eAAe,6CAAG,aAAa,wCAAE,IAAI,yCAAG,GAAG,wCAAE;AAC5D;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA,eAAe,6CAAG;AAClB,gBAAgB,6CAAG,WAAW,6CAAG;AACjC;AACA;;AAEA;;AAEA,0BAA0B,4CAAM,GAAG,6CAAO;AAC1C,iCAAiC,4CAAM,GAAG,6CAAO;;AAEjD,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA,+BAA+B,+CAAS;AACxC,kBAAkB,6CAAG;AACrB,kBAAkB,6CAAG;;AAErB,mBAAmB,OAAO;AAC1B;AACA;AACA,iCAAiC,+CAAS;AAC1C,oBAAoB,6CAAG;AACvB,oBAAoB,6CAAG;AACvB;AACA;AACA;AACA,oCAAoC,wCAAE;AACtC;;AAEA,cAAc,+CAAK,YAAY,6CAAG,oCAAoC,6CAAG;AACzE,6CAA6C,yCAAG;;AAEhD;AACA;AACA;AACA,kBAAkB,6DAAc,CAAC,wDAAS,UAAU,wDAAS;AAC7D,QAAQ,wEAAyB;AACjC,2BAA2B,6DAAc;AACzC,QAAQ,wEAAyB;AACjC,4DAA4D,8CAAI;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,6CAAO,YAAY,6CAAO,WAAW,6CAAO;AAC/D;;;;;;;;;;;;;;;;;AC9EiD;;AAEjD,6BAAe,sCAAW;AAC1B,SAAS,2DAAc;AACvB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACTmC;AACF;AACgB;AACgB;;AAEjE;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY,wCAAwC,EAAE;AACjF,wBAAwB,YAAY,qCAAqC,EAAE;AAC3E,2BAA2B,YAAY,wCAAwC,EAAE;AACjF,yBAAyB,YAAY,sCAAsC,EAAE;AAC7E,8BAA8B,YAAY,2CAA2C,EAAE;AACvF,4BAA4B,YAAY,yCAAyC;AACjF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAAe,sCAAW;AAC1B;AACA;AACA,gBAAgB,mDAAM;AACtB,eAAe,2DAAc;AAC7B,eAAe,2DAAc;AAC7B,4BAA4B,uBAAuB,gBAAgB;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,6CAAO,kBAAkB,6CAAO,oBAAoB,6CAAO,kBAAkB,6CAAO;AAC1H;;AAEA;AACA;AACA,sCAAsC,6CAAO,kBAAkB,6CAAO,oBAAoB,6CAAO,kBAAkB,6CAAO;AAC1H;;AAEA;AACA;;AAEA;AACA,WAAW,kDAAS;AACpB;;AAEA;AACA,WAAW,gDAAO;AAClB;;AAEA;AACA,WAAW,iDAAQ;AACnB;;AAEA;AACA,WAAW,kDAAS;AACpB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;AC9GuD;;AAEhD;AACP;AACA,aAAa,6CAAG;AAChB,aAAa,6CAAG;AAChB;AACA;AACA,eAAe,6CAAG;AAClB,UAAU,6CAAG;AACb;AACA;AACA;;AAEO;AACP;AACA,YAAY,8CAAI;AAChB;AACA,aAAa,6CAAG;AAChB,aAAa,6CAAG;AAChB;AACA,MAAM,+CAAK;AACX,MAAM,8CAAI;AACV;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACzBsC;AACuB;AACzB;;AAE7B,4BAA4B,2DAAY;AAC/C,SAAS,8CAAI;AACb,CAAC;;AAED,+BAA+B,8DAAe;AAC9C,aAAa,8CAAI;AACjB,CAAC;;AAED,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChBqC;AACwB;AACzB;;AAE7B,8BAA8B,2DAAY;AACjD,cAAc,8CAAI,YAAY,6CAAG;AACjC,CAAC;;AAED,iCAAiC,8DAAe;AAChD;AACA,CAAC;;AAED,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;AChBgD;AACH;;AAEtC;AACP;AACA,aAAa,wCAAE;AACf,UAAU,4DAAiB;AAC3B;;AAEA;AACA,8CAA8C,6CAAO,gBAAgB,6CAAO,YAAY,6CAAO,SAAS,6CAAO;AAC/G;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;ACdkG;AACvD;AACD;;AAE1C;AACA,SAAS,6CAAG,EAAE,4CAAM;AACpB;;AAEO;AACP,YAAY,6CAAG;AACf,sBAAsB,6CAAG,OAAO,6CAAG,OAAO,6CAAG,QAAQ,6CAAG;AACxD,gBAAgB,6CAAG;;AAEnB,iBAAiB,qDAAW;;AAE5B;AACA,gBAAgB,UAAU,4CAAM,GAAG,6CAAO,OAAO,4CAAM,GAAG,6CAAO,CAAC;AAClE,UAAU,SAAS,4CAAM,GAAG,6CAAO,MAAM,4CAAM,GAAG,6CAAO,CAAC;AAC1D,gBAAgB,6CAAG;AACnB,gBAAgB,6CAAG,iBAAiB,6CAAG;AACvC;;AAEA;AACA,wBAAwB,8CAAI,MAAM,8CAAI;AACtC,YAAY,+CAAK,IAAI,6CAAG,YAAY,8CAAI,UAAU,8CAAI,CAAC,6CAAG,kBAAkB,4CAAM;AAClF;;AAEA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,0DAAe;AACxB;AACA;AACA;;;;;;;;;;;;;;;;;;;;AClC2E;AAChC;AACuB;;AAE3D;AACP,YAAY,6CAAG,iBAAiB,6CAAG;;AAEnC;AACA,MAAM,6CAAG,MAAM,6CAAO,SAAS,iFAAuB;;AAEtD,wCAAwC,8CAAI;;AAE5C;AACA,YAAY,8CAAI,aAAa,6CAAG;AAChC,gBAAgB,6CAAG,mBAAmB,6CAAG;AACzC;;AAEA;AACA;AACA,YAAY,+CAAK,IAAI,6CAAG,aAAa,8CAAI,OAAO,8CAAI;AACpD;;AAEA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,0DAAe;AACxB;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7BqE;AAC1B;AACa;;AAEjD;AACP,YAAY,6CAAG;AACf,sBAAsB,6CAAG,cAAc,6CAAG;AAC1C;;AAEA,MAAM,6CAAG,MAAM,6CAAO,SAAS,mEAAkB;;AAEjD;AACA;AACA,iBAAiB,6CAAG,eAAe,6CAAG;AACtC;;AAEA;AACA;AACA,YAAY,+CAAK,IAAI,6CAAG,YAAY,8CAAI,UAAU,8CAAI,MAAM,8CAAI;AAChE;;AAEA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,0DAAe;AACxB;AACA;AACA;;;;;;;;;;;;;;;;;AC5B0C;;AAEnC;AACP,gBAAgB,6CAAG;;AAEnB;AACA,8BAA8B,6CAAG;AACjC;;AAEA;AACA,yBAAyB,8CAAI;AAC7B;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACdoC;AAC2B;;AAE/D;AACA;AACA;AACA;AACA,QAAQ,8CAAI;AACZ;;AAEO;AACP,UAAU,8CAAI,KAAK,6CAAG;AACtB;AACA,aAAa,6CAAG;AAChB;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA,QAAQ,6CAAG,UAAU,8CAAQ;AAC7B;AACA;AACA,+DAA+D,6CAAG;AAClE,IAAI,8CAAI,CAAC,6CAAG;AACZ;AACA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;;;;;;;;;;;;;;;;;;ACnCoC;;AAE7B;AACP;AACA;;AAEA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;;;;;;;;;;;;;;;;;;;;;ACXkD;AACL;;AAE7C;AACA;AACA;AACA;AACA,EAAE,mDAAS,2BAA2B,oDAAY;AAClD,YAAY,2DAAmB;AAC/B;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;AC9C0C;AACK;AACX;;AAE7B;AACP,WAAW,6CAAG,SAAS,6CAAG;AAC1B,eAAe,6CAAG,SAAS,6CAAG;AAC9B;;AAEA,qBAAqB,8DAAe,CAAC,0CAAI;;AAEzC,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACfiD;AACX;AACM;AACqB;;AAEjE;AACA,wDAAwD,iDAAQ,GAAG,0DAAW;AAC9E;AACA;AACA;AACA,GAAG;AACH;;AAEA,6BAAe,sCAAW;AAC1B,yDAAyD,iDAAQ;AACjE;AACA,iBAAiB,iDAAQ;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,mFAAmF,iDAAQ,IAAI,2DAAa;AAC5G,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,aAAa,kDAAS;AACtB,KAAK;AACL;AACA,aAAa,gDAAO;AACpB,KAAK;AACL;AACA,aAAa,iDAAQ;AACrB,KAAK;AACL;AACA,aAAa,kDAAS;AACtB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DuD;AACZ;AACM;AACb;AACE;AACsB;AACf;AACD;AACqB;AAC5B;;AAErC,uBAAuB,0DAAW;AAClC;AACA,0BAA0B,6CAAO,MAAM,6CAAO;AAC9C;AACA,CAAC;;AAED;AACA,SAAS,0DAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,6CAAG;AACpB,iBAAiB,6CAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,uCAAuC,gBAAgB,EAAE;AACzD;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0DAAgB;AAC9C,wCAAwC,iDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,6CAAO,aAAa,6CAAO;AACxE;;AAEA;AACA;AACA,gCAAgC,6CAAO,aAAa,6CAAO;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,wDAAU,aAAa,6CAAO,mBAAmB,0DAAgB,sBAAsB,6CAAO;AAC5I;;AAEA;AACA,iFAAiF,iDAAQ,IAAI,2DAAa;AAC1G;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qDAAqD,6CAAO,qBAAqB,6CAAO,0BAA0B,6CAAO,QAAQ,6CAAO;AACxI;;AAEA;AACA,0DAA0D,6CAAO,0BAA0B,6CAAO,2CAA2C,6CAAO,mCAAmC,6CAAO,aAAa,6CAAO,eAAe,6CAAO;AACxO;;AAEA;AACA,iDAAiD,6CAAO,wBAAwB,6CAAO;AACvF;;AAEA;AACA,iDAAiD,qDAAQ,+CAA+C,8CAAI;AAC5G;;AAEA;AACA,WAAW,kDAAS;AACpB;;AAEA;AACA,WAAW,gDAAO;AAClB;;AAEA;AACA,WAAW,iDAAQ;AACnB;;AAEA;AACA,WAAW,kDAAS;AACpB;;AAEA;AACA;AACA;AACA,aAAa,2DAAa;AAC1B,uBAAuB,oDAAO;AAC9B,6BAA6B,oDAAO;AACpC,sBAAsB,qDAAQ;AAC9B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnKgE;AAC1B;AACF;;AAE7B;AACP,kBAAkB,6CAAG,CAAC,6CAAG,EAAE,4CAAM;AACjC;;AAEA;AACA,iBAAiB,8CAAI,CAAC,6CAAG,OAAO,4CAAM;AACtC;;AAEA,6BAAe,sCAAW;AAC1B;AACA,mBAAmB,yCAAG;AACtB;;AAEO;AACP,UAAU,kDAAU;AACpB;AACA;AACA;AACA;AACA,4BAA4B;;AAE5B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,wCAAE;AACd,cAAc,qDAAQ;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACnDoC;AACI;;AAEjC;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,6CAAG,UAAU,6CAAO;AAC/B;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;;;;;;;;;;;;;;;;;;;;AC3BmD;AACJ;AACX;;AAE7B;AACP,UAAU,6CAAG,MAAM,6CAAG,KAAK,6CAAG;AAC9B;;AAEA,yBAAyB,8DAAe,CAAC,0CAAI;;AAE7C,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA,sBAAsB,6CAAO;AAC7B;;;;;;;;;;;;;;;;;;;ACd0C;AAC+B;AAC7B;;AAE5C;AACA,qBAAqB,6CAAG,MAAM,6CAAO,EAAE;;AAEvC,6BAAe,oCAAS;AACxB;AACA;;AAEA;AACA,SAAS,0DAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,8CAAI;AAClB,iBAAiB,8CAAI;AACrB,oBAAoB,6CAAG,CAAC,6CAAG,WAAW,6CAAO,IAAI,6CAAG,sBAAsB,6CAAO,6BAA6B,+CAAK;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAG;AAChB,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,sCAAsC,EAAE;AAC/F,8BAA8B,qBAAqB,sCAAsC;AACzF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,wDAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACrG0C;AACK;AACX;;AAE7B;AACP,WAAW,6CAAG,aAAa,6CAAG;AAC9B,eAAe,6CAAG,SAAS,6CAAG;AAC9B;;AAEA,0BAA0B,8DAAe;AACzC,aAAa,8CAAI;AACjB,CAAC;;AAED,6BAAe,sCAAW;AAC1B,SAAS,kDAAU;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjBuD;AACN;;AAE1C;AACP,UAAU,6CAAG,CAAC,6CAAG,EAAE,4CAAM;AACzB;;AAEA;AACA,kBAAkB,8CAAI,CAAC,6CAAG,OAAO,4CAAM;AACvC;;AAEA,6BAAe,sCAAW;AAC1B,UAAU,gEAAkB;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1BmC;AAC6C;;AAEhF;AACA,UAAU,6CAAG,WAAW,wCAAE,iCAAiC,yCAAG,IAAI,yCAAG;AACrE;;AAEA;;AAEO;AACP,yBAAyB,yCAAG,8BAA8B,oDAAO;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,wCAAE,YAAY,yCAAG,aAAa,wCAAE,YAAY,yCAAG;AAC3F;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,6CAAG;AACvB,oBAAoB,6CAAG;AACvB,sBAAsB,6CAAG;AACzB,sBAAsB,6CAAG;;AAEzB;AACA,iBAAiB,6CAAG;AACpB,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf;AACA;AACA,MAAM,+CAAK;AACX,MAAM,8CAAI;AACV;AACA;;AAEA;AACA,iBAAiB,6CAAG;AACpB,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf,YAAY,6CAAG;AACf;AACA;AACA,MAAM,+CAAK;AACX,MAAM,8CAAI;AACV;AACA;;AAEA;AACA;;AAEA,6BAAe,oCAAS;AACxB,qCAAqC,6CAAO,cAAc,6CAAO,kCAAkC,6CAAO;;AAE1G;AACA,0CAA0C,6CAAO,mBAAmB,6CAAO;AAC3E,6BAA6B,6CAAO,oBAAoB,6CAAO;AAC/D;;AAEA;AACA,iDAAiD,6CAAO,mBAAmB,6CAAO;AAClF,6BAA6B,6CAAO,oBAAoB,6CAAO;AAC/D;;AAEA;AACA;;;;;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;;;ACpEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,yBAAyB,yBAAyB,EAAE;AACpD,sBAAsB,sBAAsB,EAAE;AAC9C,yBAAyB,yBAAyB,EAAE;AACpD,uBAAuB,uBAAuB,EAAE;AAChD,4BAA4B,4BAA4B,EAAE;AAC1D,0BAA0B,0BAA0B;AACpD;;;;;;;;;;;;;;;;;ACzBO;AACP;AACA;;AAEO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;ACPO;;AAEA;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACnFO;AACP;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACRA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;ACXA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;ACNA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;ACZA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACZA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACToC;AACF;AACY;AACF;AACZ;AACE;AACA;AACU;AACI;AACV;AACF;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,8CAAU;AACnB,QAAQ,6CAAS;AACjB,aAAa,kDAAc;AAC3B,cAAc,mDAAe;AAC7B,OAAO,4CAAQ;AACf,QAAQ,6CAAS;AACjB,QAAQ,6CAAS;AACjB,aAAa,kDAAc;AAC3B,eAAe,oDAAgB;AAC/B,UAAU,+CAAW;AACrB,SAAS,+CAAU;AACnB;AACA;;;;;;;;;;;;;;;;AC9EA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;ACRA,6BAAe,sCAAW;AAC1B;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;ACRA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC7BA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;ACNA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRgD;AACU;AACV;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;;;;;;;;;;;;;;;ACd1B;;AAE3C,6BAAe,oCAAS;AACxB,4BAA4B,kDAAO,CAAC,iDAAU;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrH0C;AACD;AACa;;AAEtD;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA,gBAAgB,sDAAY;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,kCAAkC,sDAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,uDAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,qDAAQ;AAC/E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,yDAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC9EmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,oDAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;;;;;;;;;;;;;;;;;;ACrH2C;AACC;;AAE5C,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sDAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,yDAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACnDwC;AACiB;;AAEzD;AACA,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,yCAAyC,qDAAI;AAC7C;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,8DAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,uDAAQ;AAC5C;;AAEA;AACA,0CAA0C,uDAAQ;AAClD;;AAEA;AACA;;;;;;;;;;;;;;;;;ACxE0C;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,mCAAmC,+DAAc;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;AC5OA,6BAAe,oCAAS;AACxB;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC7CA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACXmC;AACE;AACI;AACa;;AAEtD,6BAAe,sCAAW;AAC1B,aAAa,iDAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,sDAAY;AACjC,mBAAmB,sDAAY;AAC/B,qBAAqB,sDAAY;AACjC,sBAAsB,sDAAY;AAClC,oBAAoB,sDAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8CAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,uDAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,qDAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,qDAAQ;AAClF;;AAEA;AACA,4EAA4E,qDAAQ;AACpF;;AAEA;AACA,6EAA6E,qDAAQ;AACrF;;AAEA;AACA,2EAA2E,qDAAQ;AACnF;;AAEA;AACA;;;;;;;;;;;;;;;;;;;AC7FoC;AACE;AACW;;AAEjD,iEAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD,sBAAsB,iDAAW;AACjC,aAAa,kDAAY;AACzB;AACA;AACA,KAAK;AACL,gCAAgC,2DAAa;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,6CAAG,CAAC,EAAC;;;;;;;;;;;;;;;;ACnCR,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACX6B;AACE;;AAE/B,6BAAe,oCAAS;AACxB,sBAAsB,8CAAK,GAAG,6CAAI;AAClC;;;;;;;;;;;;;;;;;;;;ACLoC;AACE;;AAE/B;;AAEA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,OAAO;AAC9D;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,iDAAW;AAC7B,SAAS,kDAAY;AACrB;AACA;;AAEA;AACA;;AAEA,iEAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;;;;;;;ACjEuB;AAC6B;;AAE5D,6BAAe,oCAAS;AACxB,UAAU,8DAAa,MAAM,oDAAW;AACxC;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,aAAa,QAAQ,aAAa,kDAAK;AACvC,QAAQ,QAAQ;;AAEhB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;;;;;;;;;;;;;;;;;ACrBO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClBiC;;AAEjC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gDAAK;AAChB;AACA;;;;;;;;;;;;;;;;;;;ACZqC;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,kFAAkF,qDAAQ;AAC1F;;AAEO;AACP;AACA,0CAA0C,qDAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,qDAAQ;AACpC;;;;;;;;;;;;;;;;AC5BA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACJqD;AACf;;AAEtC;AACA;AACA;;AAEA;AACA,2BAA2B,iDAAc,mBAAmB,iDAAc;AAC1E,cAAc,kDAAK;AACnB,cAAc,kDAAK;AACnB,oBAAoB,kDAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,GAAG;AACH;;AAEA,iEAAe,UAAU,0CAAG,CAAC,EAAC;AACvB,8BAA8B,8CAAK;;;;;;;;;;;;;;;;AC5B1C,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACLyC;AACH;;AAEtC;AACA;AACA,yBAAyB,6CAAQ,mBAAmB,6CAAQ;AAC5D,YAAY,kDAAK;AACjB,YAAY,kDAAK;AACjB,kBAAkB,kDAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,IAAI,0CAAG,CAAC,EAAC;AACjB,kBAAkB,8CAAK;;;;;;;;;;;;;;;;;;;ACpBW;AACH;;AAEtC;AACA;AACA,yBAAyB,6CAAQ,mBAAmB,6CAAQ;AAC5D,YAAY,kDAAK;AACjB,YAAY,kDAAK;AACjB,kBAAkB,kDAAK;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,IAAI,0CAAG,CAAC,EAAC;AACjB,kBAAkB,8CAAK;;;;;;;;;;;;;;;;;ACpBC;;AAE/B,6BAAe,oCAAS;AACxB,UAAU,8CAAG;AACb;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRkD;AACK;AACA;AACY;AACd;AACQ;AACV;AACM;AACU;AACV;AACF;AACE;AAC6B;AACjC;AAC4E;AAC/C;AAC/B;AAC+B;AACwB;AACtD;AACF;;;;;;;;;;;;;;;;;;ACpBT;AACV;;AAEhB;AACf,UAAU,kDAAK,UAAU,iDAAQ,mBAAmB,iDAAQ;AAC5D,UAAU,kDAAK;AACf,UAAU,kDAAK;AACf,gBAAgB,kDAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACfA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;ACb+B;;AAE/B,6BAAe,oCAAS;AACxB,YAAY;AACZ,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,kDAAK;AAClB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtBe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACPA,6BAAe,oCAAS;AACxB;AACA,iBAAiB,OAAO;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;ACJyC;AACV;AACY;AACD;;AAE1C,iEAAe;AACf,cAAc,gDAAK;;AAEnB;AACA,2BAA2B,6CAAQ,mBAAmB,6CAAQ;AAC9D;AACA;AACA,kBAAkB,kDAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,cAAc,6CAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,8CAAK;AAC9B,+BAA+B,oDAAW;;;;;;;;;;;;;;;;ACtDjD,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJiC;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA;AACA,wCAAwC;AACxC,2BAA2B;AAC3B;AACA,KAAK,OAAO;AACZ;AACA,cAAc,SAAS,mDAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA,SAAS;AACT;;;;;;;;;;;;;;;;;AC/DA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzBkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,mDAAM,SAAS,GAAG,aAAa,mDAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gCAAgC;AAChE,cAAc,sDAAsD,mDAAM,OAAO;AACjF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,mDAAM,OAAO;AAChF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,mDAAM,SAAS,GAAG,aAAa,mDAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,mDAAmD,+CAAQ;AAC3D,mDAAmD,+CAAQ;;;;;;;;;;;;;;;;;;AC9Df;;AAEnD;AACA;AACA;AACA;;AAEO;AACP,+BAA+B,mDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS,sDAAS;AAClB;;AAEO;AACP,4BAA4B,mDAAQ;AACpC;AACA;AACA,iEAAiE,mDAAQ;AACzE;AACA,SAAS,sDAAS;AAClB;;;;;;;;;;;;;;;;;;;;;;;;;ACxB+B;AACJ;AACa;AACX;AACI;AACA;AACA;AACI;AACuB;;AAE5D,6BAAe,oCAAS;AACxB;AACA,wCAAwC,qDAAQ;AAChD,0BAA0B,+CAAM;AAChC,+BAA+B,iDAAK,eAAe,4CAAG,IAAI,+CAAM;AAChE,qBAAqB,6CAAK,GAAG,4CAAG;AAChC,4BAA4B,6CAAI;AAChC,QAAQ,8DAAa,MAAM,oDAAW;AACtC,2BAA2B,mDAAY;AACvC,0FAA0F,+CAAM;AAChG,QAAQ,+CAAM;AACd;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;;;AC/D0C;;;;;;;;;;;;;;;;ACA1C;AACA;AACA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,iEAAe,IAAI,EAAC;;;;;;;;;;;;;;;;ACjIpB,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACdA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACnBA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACfA;AACA;AACA;AACA;AACA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACN+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,uBAAuB,kDAAK;AAC5B;AACA;;AAEA,gCAAgC;AAChC;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C,qBAAqB,qCAAqC;;AAE1D;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AChDiD;AACQ;AACR;AACQ;AACJ;;;;;;;;;;;;;;;;ACJrD,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACtBA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;AAEA;AACA,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACnFA,6BAAe,oCAAS;AACxB,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1CA,6BAAe,sCAAW;AAC1B;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA;;;;;;;;;;;;;;;;ACNA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJ6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,6CAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,6CAAI;AAChB,YAAY,6CAAI;AAChB,YAAY,6CAAI;AAChB,YAAY,6CAAI;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACrEkD;;;;;;;;;;;;;;;;ACAlD,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNyD;AACrB;AACF;AACI;AACJ;AACmC;AACnC;AACA;AACE;AACU;AACN;AACA;;AAEzB;AACf,sCAAsC,2CAAQ,kBAAkB,2CAAQ;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,gBAAgB;AAC9B,+CAA+C;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,YAAY,gDAAgD;AAC5D;AACA,mBAAmB,OAAO;AAC1B;AACA,sCAAsC,qDAAqD;AAC3F;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,4CAAQ;AACxB,mBAAmB,2CAAW;AAC9B,kBAAkB,8CAAU;AAC5B,iBAAiB,6CAAS;AAC1B,mBAAmB,+CAAW;AAC9B,iBAAiB,6CAAS;AAC1B,mBAAmB,+CAAW;AAC9B,sBAAsB,iDAAc;AACpC,iBAAiB,6CAAS;AAC1B,iBAAiB,6CAAS;AAC1B,kBAAkB,+CAAU;AAC5B,uBAAuB,oDAAe;AACtC,cAAc,0CAAM;AACpB,cAAc,0CAAM;;;;;;;;;;;;;;;;;ACxEpB,6BAAe,oCAAS;AACxB,0FAA0F;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP,kCAAkC,OAAO;AACzC;AACA;;;;;;;;;;;;;;;;AC7DA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;ACFA,6BAAe,sCAAW;AAC1B;AACA;AACA,gCAAgC;AAChC,GAAG;AACH;AACA;;;;;;;;;;;;;;;;;ACN6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,2BAA2B,6CAAI;AAC/B;AACA;AACA;AACA,0CAA0C,6CAAI;AAC9C,0CAA0C,6CAAI;AAC9C,0CAA0C,6CAAI;AAC9C,0CAA0C,6CAAI;AAC9C;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACf6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,iCAAiC,6CAAI;AACrC;AACA;AACA;AACA;AACA,0CAA0C,6CAAI;AAC9C,0CAA0C,6CAAI;AAC9C,0CAA0C,6CAAI;AAC9C,0CAA0C,6CAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpBO;AACP;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACNO;AACP;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;ACN4C;AACR;;AAEpC,iEAAe;AACf;AACA,0BAA0B,sDAAgB;AAC1C;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,mDAAa,CAAC,EAAC;;;;;;;;;;;;;;;;ACdlB,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;ACF4C;;AAE5C,iEAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,mDAAa,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZiC;AACF;AACM;AACR;AACQ;AACI;;;;;;;;;;;;;;;;;ACLf;;AAE5C,iEAAe;AACf;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,mDAAa,CAAC,EAAC;;;;;;;;;;;;;;;;;;ACb0B;AACd;;AAE9B,iEAAe;AACf;AACA,uBAAuB,mDAAa;AACpC;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,mDAAa,CAAC,EAAC;;;;;;;;;;;;;;;;;ACd0B;;AAE5C,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,mDAAa,CAAC,EAAC;;;;;;;;;;;;;;;;;AC3B0B;;AAE5C,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,mDAAa,CAAC,EAAC;;;;;;;;;;;;;;;;;AChBgB;;AAElC,iEAAe,mDAAM,oDAAoD,EAAC;;;;;;;;;;;;;;;;;ACFxC;;AAElC,iEAAe,mDAAM,oDAAoD,EAAC;;;;;;;;;;;;;;;;;ACFxC;;AAElC,iEAAe,mDAAM,4EAA4E,EAAC;;;;;;;;;;;;;;;;;ACFhE;;AAElC,iEAAe,mDAAM,0DAA0D,EAAC;;;;;;;;;;;;;;;;;ACF9C;;AAElC,iEAAe,mDAAM,oDAAoD,EAAC;;;;;;;;;;;;;;;;;ACFxC;;AAElC,iEAAe,mDAAM,0DAA0D,EAAC;;;;;;;;;;;;;;;;;ACF9C;;AAElC,iEAAe,mDAAM,oDAAoD,EAAC;;;;;;;;;;;;;;;;;ACFxC;;AAElC,iEAAe,mDAAM,4EAA4E,EAAC;;;;;;;;;;;;;;;;;ACFhE;;AAElC,iEAAe,mDAAM,gEAAgE,EAAC;;;;;;;;;;;;;;;;;ACFpD;;AAElC,iEAAe,mDAAM,gEAAgE,EAAC;;;;;;;;;;;;;;;;ACFtF,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACJkC;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACfM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACf4C;AACR;AACF;AACE;AACE;AACA;AACN;AACA;AACA;AACU;AACe;AACA;AACA;AACA;AACA;AACA;AACM;AACA;AACM;AACL;AACA;AACA;AACA;AACM;AACN;AACA;AACA;AACM;AACN;AACM;AACA;AACF;AACG;AACH;AACM;AACT;AACS;AAC1B;AACW;AACuC;AAClD;AACJ;AAC2F;;;;;;;;;;;;;;;;;AC1ChH;;AAEnD,6BAAe,oCAAS;AACxB,SAAS,wDAAmB;AAC5B;;;;;;;;;;;;;;;;;;;ACJkC;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;ACb5B,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACPmC;AACqB;;AAExD,iEAAe,6DAAwB,CAAC,iDAAS,iBAAiB,iDAAS,iBAAiB,EAAC;;;;;;;;;;;;;;;;;;;;ACH1D;AACqB;;AAEjD,WAAW,6DAAwB,CAAC,iDAAS,oBAAoB,iDAAS;;AAE1E,WAAW,6DAAwB,CAAC,iDAAS,mBAAmB,iDAAS;;AAEhF,QAAQ,iDAAS;;AAEjB,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChB6B;;AAE7B,QAAQ,6CAAG;AACX;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACbA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACPkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK,mDAAM,qgDAAqgD,EAAC;;AAEzhD,iBAAiB,mDAAM;;AAEvB,mBAAmB,mDAAM;;AAEzB,kBAAkB,mDAAM;;;;;;;;;;;;;;;;;;;ACfG;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;ACbM;AACJ;;AAEvB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,+CAAM;;AAEZ,iEAAe,iDAAI,QAAQ,EAAC;;;;;;;;;;;;;;;;;ACb5B;;AAEO;AACA;;;;;;;;;;;;;;;;;;;;ACHoC;AACV;AACD;;AAEjB;AACf,cAAc,iDAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+CAAQ,qBAAqB,yBAAyB,EAAE;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kDAAe;AACxB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACnGA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACJgC;AACoE;AACjE;AACD;AACJ;;AAE9B;;AAEO;AACP;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC,QAAQ,kDAAQ;AAChB;;AAEA;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,gDAAM;AAClB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,oBAAoB,mDAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wFAAwF,mDAAiB;AACzG;;AAEA;AACA,wCAAwC,4CAAQ,IAAI,4CAAM;AAC1D;;AAEA;AACA,uCAAuC,8CAAU;AACjD;;AAEA;AACA,mBAAmB,8CAAU,mBAAmB,mDAAgB;AAChE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3HsC;AACE;AACL;AACL;AACI;AACC;AACN;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iDAAQ;AAC7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,cAAc,kDAAS,eAAe,iDAAQ;;AAE9C;AACA,WAAW,iDAAI;AACf;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP,cAAc,6CAAO;;AAErB;AACA,WAAW,iDAAI;AACf;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP,cAAc,kDAAS;;AAEvB;AACA,WAAW,iDAAI;AACf;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP,cAAc,4CAAM;;AAEpB;AACA,WAAW,iDAAI;AACf;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;;AC1F4B;AACO;AACL;;AAEf;AACf;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,wCAAwC,4CAAQ,IAAI,4CAAM;AAC1D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,4CAAQ,SAAS,4CAAM;;AAErD,SAAS,kDAAS;AAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBgB;;AAII;;AAIF;;AAIH;;AAIG;;AAKC;;AAKJ;;AAIK;;AAIA;;AAIC;;AAIL;;AAIG;;AAQG;;AAIQ;;AAQT;;AAIC;;;;;;;;;;;;;;;;;ACzEf;AACP;AACA;AACA,+BAA+B;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEO;AACP;AACA;AACA,sCAAsC;AACtC,4DAA4D;AAC5D;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AChB8C;AACU;AACvB;AACK;;AAE/B;AACP;;AAEA;AACA;AACA,WAAW,+CAAK;AAChB;;AAEA;AACA;AACA,WAAW,oDAAU;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,uDAAa;;AAExB;AACA;AACA;AACA,aAAa,uDAAa;AAC1B,KAAK;AACL;AACA;AACA,aAAa,uDAAa;AAC1B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe;AACf,cAAc,oDAAU,CAAC,iDAAQ,EAAE,iDAAQ;;AAE3C;AACA,WAAW,iDAAI;AACf;;AAEA,EAAE,kDAAe;;AAEjB;AACA;;;;;;;;;;;;;;;;;;;;;;ACvE+B;AACE;AACP;AACqB;AACd;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,2BAA2B,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY,OAAO;AAC1B,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,+CAAK;AACf;;AAEA;AACA;;AAEA;AACA;AACA,qDAAqD,iDAAM;AAC3D;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,8CAAI;AACtB,0BAA0B,kCAAkC,EAAE;AAC9D,yBAAyB,iCAAiC;AAC1D,KAAK;AACL;;AAEA;AACA;;AAEe;AACf,sBAAsB,wDAAW;;AAEjC;AACA,WAAW,iDAAI;AACf;;AAEA,EAAE,kDAAe;;AAEjB;AACA;;;;;;;;;;;;;;;;AChJA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjBA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;ACFkC;AACJ;AACG;;AAE1B,gBAAgB;;AAER;AACf,cAAc,kDAAG;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,kDAAG;AAC5B;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,8CAAU;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,kDAAe;;AAEjB;AACA;;;;;;;;;;;;;;;;;;;;;AC5CmC;AACsB;AACxB;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,wBAAwB,iDAAQ,EAAE,iDAAQ;AAC1C;;AAEA;AACA,sCAAsC,iDAAQ,EAAE,iDAAQ;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,kDAAS;AAClB;;AAEe;AACf,qBAAqB,wDAAW;;AAEhC;AACA,WAAW,iDAAI;AACf;;AAEA,EAAE,kDAAe;;AAEjB;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;;ACjDkE;AACpC;AACG;;AAElB;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,kDAAS;AACjD;AACA;;AAEA;AACA,2CAA2C,gDAAM;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,gBAAgB,+CAAS;AACzB;AACA;;AAEA;AACA,uCAAuC,8CAAU;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kDAAe;AACxB;;;;;;;;;;;;;;;;;;;;ACzDgC;AACF;AACK;AACF;;AAElB;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,gDAAM;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,8CAAU;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kDAAe,CAAC,kDAAS;AAClC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxDsC;AACE;AACL;AACL;AACK;AACN;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iDAAQ;AAC7B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,cAAc,kDAAS,eAAe,iDAAQ;;AAE9C;AACA;AACA;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP,cAAc,6CAAO;;AAErB;AACA;AACA;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP,cAAc,kDAAS;;AAEvB;AACA;AACA;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP,cAAc,4CAAM;;AAEpB;AACA;AACA;;AAEA,SAAS,yDAAsB;AAC/B;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;;AC9F2C;AACL;AACE;;AAEzB;AACf;AACA,qBAAqB,iDAAQ;;AAE7B;AACA,6CAA6C,gDAAM;AACnD;;AAEA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,gBAAgB,+CAAS;AACzB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,yDAAsB;AAC/B;;;;;;;;;;;;;;;;;;;;AC7BmC;AACY;AACd;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA,SAAS,kDAAS;AAClB;;AAEe;AACf,wBAAwB,wDAAW;;AAEnC;AACA,WAAW,iDAAI;AACf;;AAEA,SAAS,kDAAe;AACxB;;;;;;;;;;;;;;;;;;;AClCgC;AACF;AACG;;AAElB;AACf;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,gDAAM;AAChC;;AAEA;AACA,wCAAwC,8CAAU;AAClD;;AAEA;AACA,uCAAuC,8CAAU;AACjD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,kDAAe;AACxB;;;;;;;;;;;;;;;;;;;;;;ACvCkC;AAC+E;;AAEjH,6BAAe,oCAAS;AACxB,aAAa,kDAAQ;AACrB;AACA,cAAc,kDAAe;AAC7B;AACA;AACA;AACA,4DAA4D,kDAAe;AAC3E,aAAa,uDAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,kDAAc;AAC1E;AACA;AACA;AACA;AACA,4DAA4D,kDAAc;AAC1E;AACA;AACA;AACA,SAAS,iDAAM;AACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5B4C;AACsE;AACxE;AACd;AAC4B;AACvB;AACP;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,cAAc,oDAAU,CAAC,iDAAQ,EAAE,iDAAQ;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,kDAAQ,cAAc,aAAa,EAAE;AACnD;AACA,eAAe,kDAAQ;AACvB;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,wBAAwB,kDAAQ;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,4CAAQ;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,8CAAI;AACrB;AACA;;AAEA;AACA,WAAW,iDAAI;AACf;;AAEA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,SAAS,kDAAe,UAAU,4CAAQ,EAAE,4CAAS,EAAE,2CAAQ,EAAE,4CAAO,EAAE,4CAAQ,EAAE,6CAAU,EAAE,6CAAU,EAAE,6CAAe,EAAE,uDAAU;AACvI;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtIgC;AACS;AACiE;AACzE;;AAEjC,6BAAe,sCAAW;AAC1B,SAAS,kDAAe,CAAC,+CAAQ,CAAC,4CAAO,EAAE,4CAAQ,EAAE,8CAAO,EAAE,4CAAM,EAAE,4CAAO,EAAE,4CAAS,EAAE,4CAAS,EAAE,4CAAc,EAAE,sDAAS;AAC9H;;;;;;;;;;;;;;;;ACPA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACJgC;AACF;;AAE9B,6BAAe,oCAAS;AACxB,SAAS,gDAAM,CAAC,iDAAO;AACvB;;;;;;;;;;;;;;;;;;ACLoC;AACD;;AAEnC;AACA;AACA;AACA;AACA,mBAAmB,8CAAK,8CAA8C,8CAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB,iBAAiB,mDAAS;AAC1B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxB2C;AACE;AACJ;AACI;AACJ;AACQ;AACE;AACJ;AACJ;AACM;AACM;AACR;AACM;AACC;AACb;AACI;AACF;AACO;;;;;;;;;;;;;;;;ACjBlD;;AAEe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1BA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACJwC;AACZ;;AAE5B,6BAAe,oCAAS;AACxB,cAAc,qDAAW;AACzB;AACA,SAAS,+CAAK;AACd;;;;;;;;;;;;;;;;;ACPsC;;AAEtC,6BAAe,oCAAS;AACxB;AACA;AACA,SAAS,+DAAyB,YAAY,OAAO,gDAAU,sBAAsB;AACrF;;;;;;;;;;;;;;;;;ACNO;;AAEP,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;ACRF,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;ACZkD;;AAElD,6BAAe,oCAAS;AACxB;AACA,YAAY,uDAAS;AACrB,YAAY,uDAAS,eAAe,kDAAI;AACxC;;;;;;;;;;;;;;;;;ACNkD;;AAElD,6BAAe,oCAAS;AACxB;AACA,YAAY,uDAAS;AACrB,YAAY,uDAAS,qCAAqC,kDAAI;AAC9D;;;;;;;;;;;;;;;;;ACNiC;;AAEjC,6BAAe,oCAAS;AACxB,mDAAmD,iDAAO;AAC1D;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;ACPqC;;AAErC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB,iBAAiB,mDAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxDA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACLA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1EA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;ACZkC;AACA;AACC;;AAEnC,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA,KAAK;AACL,qBAAqB,6CAAS;AAC9B;AACA;;AAEA;AACA,QAAQ,iBAAiB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,qBAAqB,6CAAS;AAC9B;AACA;;AAEA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA,2BAA2B,eAAe,EAAE;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C,kDAAQ;;AAEnD,sGAAsG,OAAO;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C,iBAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,6CAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrHA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJoC;;AAEpC;AACA,eAAe,gDAAW;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjCA,6BAAe,oCAAS;;AAExB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACTA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;;;ACF8B;AACI;;AAElC,6BAAe,sCAAW;AAC1B,aAAa,6CAAS,iCAAiC,4CAAM;AAC7D;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,qDAAqD,EAAE;AACvF,uCAAuC,+CAA+C,EAAE;AACxF,qCAAqC,6CAA6C,EAAE;AACpF,wCAAwC,gDAAgD;AACxF;;;;;;;;;;;;;;;;;;ACrB8B;AACI;;AAElC,6BAAe,sCAAW;AAC1B,aAAa,6CAAS,gCAAgC,4CAAM;AAC5D;;;;;;;;;;;;;;;;;;ACLkC;AACD;;AAEjC,6BAAe,oCAAS;AACxB,2CAA2C,iDAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,6CAAS;AACtB;;;;;;;;;;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBwC;AACM;AACN;AACJ;AACE;AACF;AACA;AACE;AACA;AACF;AACA;AACE;AACF;AACA;AACE;AACF;AACA;AACE;AACM;AACF;AACN;AACA;AACE;AACA;AACE;AACA;AACA;AACF;AACA;AACN;AACY;;AAErC;;AAEA;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,4CAAgB;AAC1B,aAAa,+CAAmB;AAChC,UAAU,4CAAgB;AAC1B,QAAQ,0CAAc;AACtB,SAAS,2CAAe;AACxB,QAAQ,0CAAc;AACtB,QAAQ,0CAAc;AACtB,SAAS,2CAAe;AACxB,SAAS,2CAAe;AACxB,QAAQ,0CAAc;AACtB,QAAQ,2CAAc;AACtB,SAAS,4CAAe;AACxB,QAAQ,2CAAc;AACtB,QAAQ,2CAAc;AACtB,SAAS,4CAAe;AACxB,QAAQ,2CAAc;AACtB,QAAQ,2CAAc;AACtB,SAAS,4CAAe;AACxB,YAAY,+CAAkB;AAC9B,WAAW,8CAAiB;AAC5B,QAAQ,2CAAc;AACtB,QAAQ,2CAAc;AACtB,SAAS,4CAAe;AACxB,SAAS,4CAAe;AACxB,UAAU,6CAAgB;AAC1B,UAAU,6CAAgB;AAC1B,UAAU,6CAAgB;AAC1B,SAAS,4CAAe;AACxB,SAAS,4CAAe;AACxB,MAAM,yCAAY;AAClB,YAAY,+CAAkB;AAC9B;;AAEA,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;AC9EQ;AACE;;AAEnC;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB,mDAAmD,iDAAO;AAC1D,uFAAuF,kDAAQ;AAC/F;AACA;AACA,GAAG;AACH;;;;;;;;;;;;;;;;ACbA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA,oCAAoC;AACpC;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;ACNkC;;AAElC,6BAAe,oCAAS;;AAExB,8JAA8J,OAAO;AACrK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,6CAAS;AACtB;;;;;;;;;;;;;;;;ACjBA,6BAAe,sCAAW;;AAE1B,2DAA2D,OAAO;AAClE,wDAAwD,OAAO;AAC/D;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACVA,6BAAe,sCAAW;AAC1B;AACA,wBAAwB,mBAAmB,EAAE;AAC7C;AACA;;;;;;;;;;;;;;;;;;ACJA;;AAEO;;AAEP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;;AC1GA,6BAAe,sCAAW;;AAE1B,4DAA4D,SAAS;AACrE,4EAA4E,UAAU;AACtF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;;ACPkC;AACC;;AAEnC,6BAAe,oCAAS;AACxB,6CAA6C,kDAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,6CAAS;AACtB;;;;;;;;;;;;;;;;;;AChBkC;AACO;;AAEzC,6BAAe,oCAAS;AACxB,6CAA6C,qDAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,6CAAS;AACtB;;;;;;;;;;;;;;;;AChBA,6BAAe,sCAAW;AAC1B;AACA,wBAAwB,QAAQ,EAAE;AAClC;AACA;;;;;;;;;;;;;;;;;ACJkC;;AAElC,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;;AAEA,sFAAsF,OAAO;AAC7F,wGAAwG,OAAO;AAC/G;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,6CAAS;AACtB;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;ACvBA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;ACFoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,SAAS,gDAAW;AACpB;;;;;;;;;;;;;;;;AClCA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxBA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACNA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACRqC;;AAErC,6BAAe,sCAAW;AAC1B,gBAAgB,gDAAK;AACrB;AACA;AACA;;;;;;;;;;;;;;;;;;ACNwC;AACZ;;AAE5B,6BAAe,oCAAS;AACxB,4DAA4D,qDAAW;;AAEvE,0DAA0D,OAAO;AACjE;AACA,aAAa,+CAAK;AAClB;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACbwC;AACZ;;AAE5B,6BAAe,oCAAS;AACxB,iCAAiC,qDAAW;;AAE5C,0EAA0E,OAAO;AACjF,gBAAgB,+CAAK;AACrB;;AAEA;AACA;;;;;;;;;;;;;;;;ACXA,6BAAe,oCAAS;AACxB;AACA;AACA,0BAA0B;AAC1B;;;;;;;;;;;;;;;;;;;ACJ6B;AACQ;AACgE;;AAErG;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA,cAAc,6CAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8CAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8CAAI,CAAC,6CAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA,qBAAqB,qDAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAAM;AACvD,+CAA+C,4CAAM;AACrD,aAAa,6CAAG;AAChB;;AAEA,qCAAqC,gDAAI;;AAEzC;AACA;;AAEA;AACA,eAAe,6CAAO;;AAEtB;AACA,kBAAkB,yCAAG,GAAG,6CAAO;AAC/B,0BAA0B,6CAAG,WAAW,6CAAG;AAC3C;AACA,eAAe,6CAAO;AACtB,4BAA4B,6CAAG,WAAW,6CAAG;AAC7C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6CAAO,sDAAsD,8CAAI;AACtF,eAAe,6CAAG,CAAC,6CAAG;AACtB;AACA;AACA;AACA;;AAEA;AACA,eAAe,6CAAO;AACtB,iBAAiB,8CAAI,WAAW,6CAAG;AACnC,iBAAiB,8CAAI,WAAW,6CAAG;AACnC,8BAA8B,6CAAO;AACrC;AACA,8BAA8B,6CAAO;AACrC;AACA;;AAEA,qBAAqB,6CAAG;AACxB,qBAAqB,6CAAG;AACxB,qBAAqB,6CAAG;AACxB,qBAAqB,6CAAG;;AAExB;AACA,eAAe,6CAAO;AACtB,uBAAuB,6CAAG;AAC1B,uBAAuB,6CAAG;AAC1B,uBAAuB,6CAAG;AAC1B,uBAAuB,6CAAG;AAC1B;;AAEA;AACA,iBAAiB,wCAAE;AACnB;AACA;AACA;AACA;AACA,uBAAuB,6CAAG,CAAC,8CAAI,wBAAwB,8CAAI,sBAAsB,8CAAI;AACrF,mBAAmB,8CAAI;AACvB,gBAAgB,6CAAG;AACnB,gBAAgB,6CAAG;AACnB;AACA;;AAEA;AACA,kBAAkB,6CAAO;;AAEzB;AACA,qBAAqB,6CAAO;AAC5B;AACA;;AAEA;;AAEA;AACA,qDAAqD,+CAAK,kBAAkB,+CAAK;;AAEjF;AACA;AACA,yCAAyC,+CAAK,kBAAkB,+CAAK;AACrE,gCAAgC,+CAAK,kCAAkC,+CAAK;AAC5E,yCAAyC,+CAAK,kBAAkB,+CAAK;AACrE;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,6CAAO,aAAa,6CAAO;;AAE5C;AACA,qBAAqB,6CAAO;AAC5B;AACA;;AAEA;;AAEA;AACA,qDAAqD,+CAAK,kBAAkB,+CAAK;;AAEjF;AACA;AACA,yCAAyC,+CAAK,kBAAkB,+CAAK;AACrE,gCAAgC,+CAAK,kCAAkC,+CAAK;AAC5E,yCAAyC,+CAAK,kBAAkB,+CAAK;AACrE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,0FAA0F,wCAAE;AAC5F,YAAY,6CAAG,SAAS,6CAAG;AAC3B;;AAEA;AACA,2EAA2E,qDAAQ;AACnF;;AAEA;AACA,2EAA2E,qDAAQ;AACnF;;AAEA;AACA,4EAA4E,qDAAQ;AACpF;;AAEA;AACA,4FAA4F,qDAAQ;AACpG;;AAEA;AACA,0EAA0E,qDAAQ;AAClF;;AAEA;AACA,wEAAwE,qDAAQ;AAChF;;AAEA;AACA,wEAAwE,qDAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;ACpQ6B;AACQ;AACO;AACf;AACuB;;AAEpD,6BAAe,sCAAW;AAC1B,WAAW,wCAAM;AACjB;AACA,WAAW,qDAAQ;AACnB,WAAW,wCAAM;AACjB,gBAAgB,qDAAQ;AACxB;AACA,cAAc,qDAAW;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,gDAAI;;AAErD,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,WAAW,iDAAI;AACf;;AAEA;AACA,kEAAkE,qDAAQ;AAC1E;;AAEA;AACA,kEAAkE,qDAAQ;AAC1E;;AAEA;AACA,qFAAqF,qDAAQ;AAC7F;;AAEA;AACA,kEAAkE,qDAAQ;AAC1E;;AAEA;AACA,kEAAkE,qDAAQ;AAC1E;;AAEA;AACA,qFAAqF,qDAAQ;AAC7F;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,qDAAQ;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;AC5GiE;AACpC;AACc;;AAE3C,6BAAe,sCAAW;AAC1B,UAAU,iDAAI,SAAS,+DAAiB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ,0DAAU,OAAO,EAAE;AAC5D,+BAA+B,QAAQ,0DAAU,OAAO,EAAE;AAC1D,kCAAkC,QAAQ,0DAAU,OAAO,EAAE;AAC7D,kCAAkC,QAAQ,0DAAU,OAAO,EAAE;;AAE7D;AACA,gCAAgC,yDAAW;AAC3C;;AAEA;AACA;;;;;;;;;;;;;;;;AC5BO;;;;;;;;;;;;;;;;ACAP,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACJO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,8CAA8C;AAC9C,uDAAuD;AACvD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,oFAAoF;AAClH,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;AClD8B;AACG;;AAEjC;AACA;AACA;;AAEA;AACA,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,gDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACnDiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,gDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACtCiC;;AAEjC;AACA,oBAAoB,4CAAK;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA,4BAA4B,4CAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;;;;;;;;;;;;;;;;ACvDF;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,8CAA8C;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;;;;;;;AC5DwB;AACM;;AAE7B;AACP;AACA;AACA;;AAEA;AACA,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,mDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;;;;;;AC5D8B;;AAE7B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,mDAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;;;;;;;;;;;;;;;;;AChD6B;AACI;;AAEhC;AACP;AACA;AACA;AACA;;AAEA,oBAAoB,6CAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,6CAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,iCAAiC;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA,wDAAwD,kDAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;;;;;;;ACvF2C;AACrB;AACQ;;AAEtC;AACA;AACA;AACA;;AAEA;AACA,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,qDAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA,8DAA8D,8DAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;;;;;;ACzEuC;AACT;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,qDAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe;;AAEf;AACA,4DAA4D,0DAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;;;;;;;;;;;;;;AC7DR;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,0CAA0C;AAC1C;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;AC9B8B;;AAE9B;AACA;AACA;;AAEA;AACA,aAAa,6CAAI;AACjB,WAAW,6CAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,4DAA4D;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,wDAAwD;AACtF,8DAA8D;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACvGA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;AChEsC;;AAE/B,oCAAoC,+CAAW;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACnCA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACpDA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;ACFA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFwC;AACE;AACA;AACF;AACqC;AACA;AACrB;AACiB;;AAElB;AACI;AACF;AACI;AACF;AACJ;AACQ;AACV;;AAEc;AACJ;AACR;AACE;AACgB;AACJ;AACR;AACgB;AACJ;AACR;AACI;AACZ;AACoC;AAClC;AACsD;;AAErE;AACoB;AACM;AACV;AACY;AACR;AACM;AACF;AACE;AACF;AACV;AACM;;;;;;;;;;;;;;;;;;;;AC7CnC;AACQ;AACO;AACQ;;AAEpD,6BAAe,sCAAW;AAC1B,UAAU,wCAAM;AAChB,UAAU,wCAAM;AAChB,gBAAgB,qDAAQ;AACxB;AACA,cAAc,qDAAW;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,gDAAI;;AAErD,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iEAAiE,qDAAQ;AACzE;;AAEA;AACA,iEAAiE,qDAAQ;AACzE;;AAEA;AACA,uEAAuE,qDAAQ;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;ACtDiE;AACpC;;AAEtB;AACP;;AAEA;AACA;;AAEA;AACA,gCAAgC,yDAAW;AAC3C;;AAEA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,oBAAoB,iDAAI,SAAS,+DAAiB;AAClD;;;;;;;;;;;;;;;;;;;;;;;AClB6B;AACK;AACI;AACe;AACT;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU,wCAAM;AAChB,UAAU,wCAAM;AAChB;;AAEA;AACA,uBAAuB,iDAAU;AACjC,qCAAqC,gDAAI;AACzC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,qDAAQ;AACzE;;AAEA;AACA,iEAAiE,qDAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,wDAAW;AACtB,WAAW,wDAAW;AACtB,WAAW,wDAAW;AACtB,WAAW,wDAAW;AACtB;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnFO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACnBA,6BAAe,sCAAW;;;;;;;;;;;;;;;;ACA1B,6BAAe,oCAAS;AACxB;AACA,mEAAmE,OAAO;AAC1E,4BAA4B,OAAO;AACnC;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACb6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,gDAAgD,OAAO;AACvD,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAC7B;AACA,EAAE,iDAAI;AACN;;;;;;;;;;;;;;;;ACTA,6BAAe,oCAAS;AACxB;AACA,iEAAiE,OAAO;AACxE;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACR6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,0DAA0D,OAAO;AACjE,0BAA0B,OAAO;AACjC;AACA;AACA,EAAE,iDAAI;AACN;;;;;;;;;;;;;;;;;ACT6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,kCAAkC,OAAO;AACzC,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,iDAAI;AACN;;;;;;;;;;;;;;;;;ACvB6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,SAAS,iDAAI,8BAA8B,4BAA4B,EAAE;AACzE;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACX6B;;AAE7B,6BAAe,oCAAS;AACxB;AACA,SAAS,iDAAI,8BAA8B,0BAA0B,EAAE;AACvE;;AAEO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACXuC;;AAEvC,6BAAe,oCAAS;AACxB,SAAS,sDAAS;AAClB;;;;;;;;;;;;;;;;;;ACJyC;AACN;;AAEnC,6BAAe,oCAAS;AACxB;AACA;AACA;AACA,wBAAwB,8CAAG;AAC3B,cAAc,uDAAU;AACxB;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;AC1BA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJ6B;;AAE7B,6BAAe,oCAAS;AACxB,SAAS,iDAAI;AACb;;;;;;;;;;;;;;;;;;;;ACJqC;AACI;AACJ;AACP;;AAE9B,6BAAe,sCAAW;AAC1B,cAAc,iDAAQ;AACtB,mBAAmB,mDAAU;AAC7B;AACA,mBAAmB,qDAAQ;AAC3B,iBAAiB,qDAAQ,CAAC,yCAAG;AAC7B,iBAAiB,qDAAQ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAG,YAAY,yCAAG;AACxC;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,qCAAqC,EAAE;AAC9F,sDAAsD,+BAA+B,EAAE;;AAEvF;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,qDAAQ;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,qDAAQ;AAClF;;AAEA;AACA,wEAAwE,qDAAQ;AAChF;;AAEA;AACA,wEAAwE,qDAAQ;AAChF;;AAEA;AACA;;;;;;;;;;;;;;;;;AC9EO;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;ACNA,6BAAe,oCAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;ACFiC;AACI;AACK;AACF;;AAExC;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B,aAAa,qDAAQ;AACrB,cAAc,mDAAS;AACvB,eAAe,oDAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,iEAAiE,OAAO;AACxE;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE,qDAAQ,CAAC,iDAAU;AACvF;;AAEA;AACA,qEAAqE,qDAAQ;AAC7E;;AAEA;AACA,mDAAmD,mDAAS,iCAAiC,qDAAQ,CAAC,iDAAU;AAChH;;AAEA;AACA,oDAAoD,oDAAU;AAC9D;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACxD6B;AACW;AACF;AACI;AACN;AACI;AACI;AACV;AACG;;AAE9B;AACP,EAAE,sDAAM;AACR,EAAE,qDAAK;AACP,EAAE,uDAAO;AACT,EAAE,sDAAM;AACR,EAAE,oDAAI;AACN,EAAE,wDAAQ;AACV,EAAE,mDAAG;AACL;;AAEA,6BAAe,sCAAW;AAC1B,aAAa,qDAAQ,CAAC,sDAAM;AAC5B,aAAa,qDAAQ;AACrB;;AAEA;AACA;AACA,qCAAqC,gDAAI;AACzC;AACA;AACA;;AAEA;AACA,oEAAoE,qDAAQ;AAC5E;;AAEA;AACA,oEAAoE,qDAAQ;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;AC7CmC;;AAEnC,iEAAe;AACf;AACA,6BAA6B,wCAAE;AAC/B;AACA,4BAA4B,yCAAG;AAC/B;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;ACRF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;ACjBF;AACA;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;ACbF,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;;ACNiC;;AAEnC;AACA,kBAAkB,wCAAE,sBAAsB,wCAAE;AAC5C,kBAAkB,yCAAG;AACrB,mBAAmB,yCAAG;;AAEtB,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B,cAAc,yCAAG;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;ACvBF;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;ACVF;AACA;AACA;AACA;;AAEA,iEAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;ACzBqC;;AAEvC;AACO;AACA;AACA;AACA;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,WAAW,mDAAY;AACvB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BkH;AAC1D;AACJ;AACF;;;;;;;;;;;;;;;;;;ACHL;;AAEtC;;AAEP;AACA;AACA;;AAEA;AACA;AACA,MAAM,4DAAS;;AAEf,iEAAe,SAAS,EAAC;;;;;;;;;;;;;;;;;;ACZmB;AACA;;AAE5C;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,2DAAQ,CAAC,uDAAY;;AAE3B,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;;;;;;ACDP;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,mDAAc,SAAS,kDAAS;AACxE,iBAAiB,mDAAa;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,gDAAe,SAAS,+CAAU;AAC1E,iBAAiB,mDAAc;AAC/B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kDAAa,CAAC,gDAAQ;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,iDAAgB,CAAC,gDAAQ;AACtC;;AAEA;AACA;AACA,gCAAgC,iDAAY,MAAM,kDAAiB;AACnE,aAAa,mDAAkB,CAAC,gDAAQ,WAAW,gDAAQ;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,iDAAgB,CAAC,gDAAQ;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,kDAAY,CAAC,gDAAO;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,oDAAe,CAAC,gDAAO;AACpC;;AAEA;AACA;AACA,gCAAgC,oDAAW,MAAM,qDAAgB;AACjE,aAAa,sDAAiB,CAAC,gDAAO,WAAW,gDAAO;AACxD;;AAEA;AACA;AACA;;AAEA;AACA,aAAa,oDAAe,CAAC,gDAAO;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACtpBqC;AACqB;;AAE1D,UAAU,qDAAQ;AAClB;AACA,CAAC;AACD;AACA,CAAC;AACD,gFAAgF,wDAAc,IAAI,qDAAW;AAC7G,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,GAAG,EAAC;AACZ;;;;;;;;;;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACJ8B;AACsC;;AAE3E,WAAW,qDAAQ;AACnB,mEAAmE,wDAAc,uBAAuB,wDAAc;AACtH,CAAC;AACD,8BAA8B,sDAAY;AAC1C,CAAC;AACD,yBAAyB,sDAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,IAAI,EAAC;AACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZgB;;AAOG;;AAOL;;AAKA;;AAKF;;AAKD;;AAmBC;;AAKC;;AAKD;;AAKK;;AAKF;;AAKD;;AAmBC;;AAKC;;AAKD;;;;;;;;;;;;;;;;ACxGtB;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mDAAmD;AACnD,SAAS;AACT,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8BAA8B;AAC3D,6BAA6B,0CAA0C,EAAE;AACzE;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACrEqC;;AAErC,kBAAkB,qDAAQ;AAC1B;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,SAAS,qDAAQ;AACjB;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA,iEAAe,WAAW,EAAC;AACpB;;;;;;;;;;;;;;;;;;;ACzB8B;AACwB;;AAE7D,aAAa,qDAAQ;AACrB,mEAAmE,wDAAc;AACjF,CAAC;AACD,8BAA8B,wDAAc;AAC5C,CAAC;AACD,yBAAyB,wDAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,MAAM,EAAC;AACf;;;;;;;;;;;;;;;;;;ACd8B;;AAErC,YAAY,qDAAQ;AACpB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,KAAK,EAAC;AACd;;;;;;;;;;;;;;;;;;;ACd8B;AACQ;;AAE7C,aAAa,qDAAQ;AACrB;AACA,CAAC;AACD,8BAA8B,wDAAc;AAC5C,CAAC;AACD,yBAAyB,wDAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,MAAM,EAAC;AACf;;;;;;;;;;;;;;;;;;;ACd8B;AACK;;AAE1C,aAAa,qDAAQ;AACrB;AACA,CAAC;AACD;AACA,CAAC;AACD,yBAAyB,qDAAW;AACpC,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,MAAM,EAAC;AACf;;;;;;;;;;;;;;;;;;;ACd8B;AACM;;AAE3C,cAAc,qDAAQ;AACtB;AACA,CAAC;AACD,8BAA8B,sDAAY;AAC1C,CAAC;AACD,yBAAyB,sDAAY;AACrC,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,OAAO,EAAC;AAChB;;;;;;;;;;;;;;;;;;;ACd8B;AACQ;;AAE7C,gBAAgB,qDAAQ;AACxB;AACA,CAAC;AACD,8BAA8B,wDAAc;AAC5C,CAAC;AACD,yBAAyB,wDAAc;AACvC,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,SAAS,EAAC;AAClB;;;;;;;;;;;;;;;;;;ACd8B;;AAErC,eAAe,qDAAQ;AACvB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED,iEAAe,QAAQ,EAAC;AACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACd8B;AACM;;AAE3C;AACA,SAAS,qDAAQ;AACjB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,2BAA2B,sDAAY;AACvC,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5B8B;;AAErC,cAAc,qDAAQ;AACtB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,qDAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA,iEAAe,OAAO,EAAC;AAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzB8B;AACsB;;AAE3D;AACA,SAAS,qDAAQ;AACjB;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,kFAAkF,wDAAc,IAAI,sDAAY;AAChH,GAAG;AACH;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5B8B;;AAErC,WAAW,qDAAQ;AACnB;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA,2DAA2D,qDAAQ;AACnE;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA,iEAAe,IAAI,EAAC;AACb;;;;;;;;;;;;;;;;;;;;;;;ACrBa;;AAIE;;AAIC;;;;;;;;;;;;;;;;;ACZe;;AAEtC,6BAAe,oCAAS;AACxB,cAAc,4CAAK;AACnB;AACA,wCAAwC,8CAAG;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;;ACZiC;;AAEjC,6BAAe,oCAAS;AACxB,cAAc,4CAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,mBAAmB;;AAEjJ;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,QAAQ;AACR,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;AACpB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7GiD;AACE;;AAEnD;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,8DAAS;AACrD,mBAAmB,4DAAU;AAC7B;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpB8B;AAC8B;AACd;AACM;;;;;;;;;;;;;;;;;ACHa;;AAEjE,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kDAAkD,eAAe,UAAU;AAC3E,8BAA8B,6DAAQ,qBAAqB,2DAAM;AACjE,qBAAqB,0DAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACvBuC;AACU;AACE;;AAEnD,qEAA6B,GAAG,kDAAmB;AACnD,sEAA8B,GAAG,mDAAoB;;;;;;;;;;;;;;;;;ACLb;;AAExC,6BAAe,oCAAS;AACxB;AACA,IAAI,sDAAS;AACb,GAAG;AACH;;;;;;;;;;;;;;;;;;;;ACNyD;AACR;AACV;AACV;;AAE7B;AACA;AACA;AACA;AACA,QAAQ,+CAAc;AACtB;;AAEA;AACA;AACA;AACA;AACA,kCAAkC,6CAAG;AACrC;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;;AAEA,sBAAsB,4DAAU;AAChC;AACA,GAAG;AACH,SAAS,2DAAK,oCAAoC,6CAAG;AACrD;;AAEA,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,QAAQ,gEAAQ;AAChB;AACA;AACA;;AAEA,aAAa,4DAAU;AACvB;;;;;;;;;;;;;;;;;;;;ACzC+E;AACxC;AACD;AACK;;AAE3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB,iBAAiB,qDAAS,uCAAuC,mEAAoB,GAAG,oDAAW;AACnG;AACA,sEAAsE,qDAAU;AAChF;AACA;AACA;;;;;;;;;;;;;;;;;AC7EuC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA,iBAAiB,qDAAS;AAC1B;AACA;;;;;;;;;;;;;;;;;AC3CwC;;AAExC;AACA;AACA,IAAI,kDAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,kDAAI;AACR;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,iDAAG;AACX;;;;;;;;;;;;;;;;;ACtBuC;;AAEvC;AACA;AACA,IAAI,iDAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,iDAAG;AACP;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA;AACA;AACA,QAAQ,iDAAG;AACX;;;;;;;;;;;;;;;;;ACtBuC;;AAEvC;AACA;AACA;AACA,IAAI,iDAAG;AACP;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA;AACA,QAAQ,iDAAG;AACX;;;;;;;;;;;;;;;;;ACfkC;;AAElC,6BAAe,sCAAW;AAC1B;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,mBAAmB,6BAA6B;;AAE/D;AACA,qBAAqB,iDAAG;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;;;;;;;ACzBqC;AACC;;AAEtC,6BAAe,oCAAS;AACxB,2CAA2C,qDAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,iDAAU;AACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfuC;AACC;AACU;AACR;AACM;AACR;AACI;AACF;AACN;AACQ;AACA;AACM;AACA;AACR;AACU;AACZ;AACU;AACE;AACV;AACJ;;AAEtC;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,sDAAS;AAClB;;AAEO;AACP;AACA;;AAEA,0BAA0B,4DAAmB;;AAE7C;AACA;AACA,UAAU,+CAAiB;AAC3B,aAAa,mDAAoB;AACjC,UAAU,+CAAiB;AAC3B,SAAS,8CAAgB;AACzB,aAAa,mDAAoB;AACjC,cAAc,oDAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,2CAAa;AACnB,QAAQ,6CAAe;AACvB,aAAa,kDAAoB;AACjC,SAAS,+CAAgB;AACzB,cAAc,oDAAqB;AACnC,QAAQ,8CAAe;AACvB,aAAa,mDAAoB;AACjC,UAAU,+CAAiB;AAC3B,SAAS,+CAAgB;AACzB,SAAS,8CAAgB;AACzB,YAAY,iDAAmB;AAC/B,QAAQ,6CAAe;AACvB,OAAO,6CAAc;AACrB;;;;;;;;;;;;;;;;;;;;ACnE+B;AACqD;;AAEpF,6BAAe,oCAAS;AACxB;AACA,kCAAkC,mDAAiB;AACnD,qBAAqB,6CAAK,GAAG,mDAAc;AAC3C,aAAa,iDAAK,eAAe,mDAAc;AAC/C,QAAQ,mDAAiB;AACzB;;;;;;;;;;;;;;;;;ACTsC;;AAEtC,6BAAe,oCAAS;AACxB;;AAEA,+JAA+J,OAAO;AACtK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,iDAAU;AACvB;;;;;;;;;;;;;;;;;AClB6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,oCAAoC,8CAAI,GAAG,6CAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;AACA,QAAQ,iDAAG;AACX;AACA;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVqC;AACG;;AAExC,cAAc,oDAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEP,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA,0DAA0D;AAC1D;AACA;;AAEO;AACP;AACA,0DAA0D;AAC1D;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,+CAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C,sCAAsC,iDAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA,0DAA0D;AAC1D;AACA,IAAI,iDAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;;;;;;;;;;;;;;;;;ACxJsC;AACA;AACM;;AAE5C,6BAAe,oCAAS;AACxB;AACA;;AAEA,6CAA6C,qDAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA,QAAQ,qDAAQ,qCAAqC,iDAAG;AACxD;AACA;AACA;;AAEA,aAAa,iDAAU;AACvB;;;;;;;;;;;;;;;;;;;ACrByC;AACH;AACM;;AAE5C,6BAAe,oCAAS;AACxB;AACA;;AAEA,6CAA6C,qDAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA,yFAAyF,iDAAG,uCAAuC,OAAO;AAC1I;AACA,YAAY,qDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,iDAAU;AACvB;;;;;;;;;;;;;;;;;ACzBuC;;AAEvC,gBAAgB,uEAA+B;;AAE/C,6BAAe,sCAAW;AAC1B;AACA;;;;;;;;;;;;;;;;;;;;;ACN+E;AAC5C;AACD;AACI;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAK;AACvB,oDAAoD,wDAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wDAAK;AACvB;AACA;AACA,6EAA6E,wDAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,iDAAG;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB,yCAAyC,mEAAoB,GAAG,oDAAW;AAC3E;AACA;AACA;AACA;AACA,+CAA+C,qDAAU;AACzD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvBsC;;AAEtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA,qBAAqB,qDAAU;AAC/B;AACA;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvB6C;AACD;;AAE5C,6BAAe,sCAAW;AAC1B;AACA;AACA,YAAY,gDAAK;;AAEjB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,sBAAsB,iDAAG;AACzB,QAAQ,qDAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,iDAAU;AACvB;;;;;;;;;;;;;;;;;;ACvBuC;;AAEvC;AACA;AACA;AACA,mBAAmB,iDAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iDAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,2BAA2B,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,6BAAe,oCAAS;AACxB;;AAEA;;AAEA;AACA,gBAAgB,iDAAG;AACnB,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;;AAEA;AACA,mBAAmB,iDAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,iDAAG;AACd;AACA;;;;;;;;;;;;;;;;;;;;;;AChF4C;AACV;AACkB;AACN;AACH;;AAE3C;;AAEA;AACA,EAAE,2DAAY;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,qDAAY;AACd,EAAE,oDAAc;AAChB;AACA,EAAE,2DAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC,6CAAO;AAC9C,wCAAwC,6CAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,qDAAY;;AAEd;AACA;AACA,uCAAuC,6CAAO;AAC9C,wCAAwC,6CAAO;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,qDAAY;;AAEd;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA,IAAI,iDAAU;AACd;;AAEA;AACA;AACA,cAAc,iDAAU;;AAExB,EAAE,qDAAY;AACd,EAAE,qDAAY;AACd;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,+CAAS;;AAEtB;AACA;AACA,cAAc,6CAAO,gBAAgB;AACrC;AACA,gBAAgB,6CAAO;AACvB;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,mBAAmB,6CAAO;AAC1B;AACA;AACA,SAAS,iBAAiB,6CAAO;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,iDAAU;AACZ;AACA,EAAE,oDAAc;;AAEhB;;AAEA;AACA,IAAI,qDAAY;AAChB;AACA,IAAI,oDAAc;AAClB,8BAA8B,iDAAU;AACxC,IAAI,qDAAY;AAChB,IAAI,qDAAY;AAChB;AACA;;AAEA,cAAc;AACd,kBAAkB,iDAAU;AAC5B;AACA;;AAEA;AACA,EAAE,qDAAY;AACd,EAAE,qDAAY;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,iDAAU;AACZ,gBAAgB,iDAAU;AAC1B,cAAc,iDAAU;AACxB,EAAE,qDAAY;AACd,EAAE,qDAAY;AACd;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AChMwC;AACQ;;AAEzC;AACP,SAAS,2CAAK;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP,sBAAsB,kDAAY,wBAAwB,OAAO;AACjE,gBAAgB,2CAAK;AACrB;AACA;AACA,iBAAiB,OAAO,uDAAuD,2CAAK;AACpF,iCAAiC,4BAA4B,EAAE;AAC/D,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEO;AACP,eAAe,kDAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC,eAAe,2CAAK;AACpB;AACA;AACA;;AAEA;AACA;AACA,aAAa,2CAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,2CAAK;AACzC,wCAAwC,2CAAK;AAC7C,sCAAsC,6CAAO,8BAA8B,6CAAO;AAClF,yCAAyC,gDAAU,CAAC,uDAAgB;AACpE,oCAAoC,6CAAO,gBAAgB,6CAAO,gCAAgC,6CAAO;AACzG,sCAAsC,6CAAO,gBAAgB,6CAAO,4BAA4B,6CAAO;AACvG,sCAAsC,6CAAO,gBAAgB,6CAAO,gCAAgC,6CAAO;AAC3G,sCAAsC,6CAAO,gBAAgB,6CAAO,4BAA4B,6CAAO;AACvG;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC,gBAAgB;AACjD,iBAAiB,2CAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,gDAAU,CAAC,uDAAgB;AACnC,QAAQ,gDAAU,CAAC,uDAAgB;AACnC,QAAQ,gDAAU,CAAC,uDAAgB;AACnC,QAAQ,gDAAU,CAAC,uDAAgB;AACnC;AACA;AACA;;AAEA,2CAA2C;AAC3C,iBAAiB,gBAAgB;AACjC,eAAe,2CAAK;AACpB;AACA,eAAe,2CAAK;AACpB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7H4C;AACA;;AAE5C;;AAEO;;AAEP;AACA,EAAE,2DAAY;AACd;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,8CAAQ;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6DAA6D;;AAE7D;;AAEA;AACA,aAAa,+CAAS;;AAEtB;AACA;AACA;AACA,YAAY,iBAAiB,OAAO;AACpC,KAAK;AACL;AACA,YAAY,eAAe,OAAO;AAClC;AACA;;AAEA,EAAE,oDAAc;AAChB;AACA;;AAEO;AACP;AACA;AACA;AACA,IAAI,oDAAc;AAClB;AACA,IAAI,2DAAY;AAChB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7E8C;AACyB;AAClC;AACJ;AACS;;AAEnC;AACA;AACA;AACA;AACA;AACA;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,kDAAY;AAC5B,gBAAgB,kDAAY;;AAE5B;AACA,aAAa,gDAAW;AACxB;AACA;AACA,QAAQ,gDAAQ;AAChB;AACA;AACA;AACA,KAAK;AACL,MAAM,mDAAW;AACjB,KAAK;AACL;AACA;AACA;;AAEA,EAAE,wDAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA,IAAI,gDAAS;AACb,IAAI,gDAAS;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,QAAQ,wDAAiB,iBAAiB,EAAE;AAChG;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7IgD;;AAEzC;AACP;AACA,cAAc,gDAAU;AACxB;AACA;AACA;AACA;AACA,EAAE,2CAAK;AACP,EAAE,2CAAK;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,UAAU,kDAAY;AACtB;;AAEA;AACA,4BAA4B,2CAAK;AACjC;AACA,iDAAiD,6CAAO;AACxD,mDAAmD,6CAAO;AAC1D,aAAa,2CAAK;AAClB;AACA;AACA;;;;;;;;;;;;;;;;;ACvKA;AACA,gBAAgB;AAChB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB,QAAQ;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;AC5O5B,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACJ6C;;;;;;;;;;;;;;;;;ACAtC;AACP;AACA;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;;ACNkC;AACe;AACN;;AAE3C,6BAAe,sCAAW;AAC1B,UAAU,qCAAM;AAChB,UAAU,qCAAM;AAChB;;AAEA;AACA,eAAe,6CAAO;AACtB,0CAA0C,6CAAO,IAAI,6CAAO,6BAA6B,6CAAO,IAAI,6CAAO;AAC3G;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,kDAAQ;AACzE;;AAEA;AACA,iEAAiE,kDAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;AC/CA,6BAAe,oCAAS;AACxB;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACJe;AACf;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACJ0C;AACwC;;;;;;;;;;;;;;;;;;ACD/C;;AAE5B;AACP,EAAE,wEAA8B;AAChC;;AAEA,6BAAe,sCAAW;AAC1B,EAAE,8DAAoB;AACtB,EAAE,wEAA8B;AAChC;;;;;;;;;;;;;;;;;;ACTO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;;AAEP;;AAEe;AACf;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDqC;AACW;AACD;AACuB;AAC9B;AACH;AACF;AACgB;AACC;;AAEpD;AACA;AACA,UAAU,uDAAa,KAAK,sDAAY;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,mDAAQ;AAChC;;AAEA;AACA,UAAU,sDAAY,IAAI,yDAAe,gBAAgB,yDAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAAe,sCAAW;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mDAAe;AACnC,kBAAkB,oDAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAkB;AACzC;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,+CAA+C,oDAAS;AACxD;;AAEA;AACA;AACA,oEAAoE,oDAAS;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,kCAAkC,EAAE;AAC1E,mDAAmD,gCAAgC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,kBAAkB,4BAA4B,SAAS,oDAAS,sCAAsC;AACtG;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,yDAAW,KAAK,8CAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAK;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM,wDAAS;AACf;AACA;;AAEA,IAAI,oDAAO;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,qDAAM,CAAC,oDAAU;AAC7B,YAAY,qDAAK;AACjB,aAAa,uDAAa;AAC1B,aAAa,uDAAa;;AAE1B,IAAI,iDAAW,CAAC,oDAAU;AAC1B,IAAI,0DAAa;AACjB;AACA,IAAI,wDAAS;AACb;;AAEA;AACA,MAAM,oDAAO;AACb;AACA,iBAAiB,uDAAa,YAAY,uDAAa;AACvD;AACA;AACA,sEAAsE,qDAAK;AAC3E;;AAEA;AACA;AACA,MAAM,iDAAU,CAAC,oDAAU;AAC3B,MAAM,oDAAO;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,qDAAK;AAClB;AACA,qBAAqB,wDAAc;AACnC;;AAEA,IAAI,oDAAO;AACX,sBAAsB,qDAAM;AAC5B,SAAS,qDAAM;AACf;;AAEA;AACA;AACA,kBAAkB,uDAAa;AAC/B;AACA,qCAAqC,qEAA2B;AAChE;;AAEA,IAAI,0DAAa;AACjB,eAAe,OAAO;AACtB,0BAA0B,sDAAK;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6DAA6D,sBAAsB,EAAE;AACrF,MAAM,wDAAS;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,8DAAoB;AACtC;;AAEA,IAAI,oDAAO;AACX;AACA;AACA,eAAe,OAAO;AACtB,0BAA0B,sDAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,8DAAoB;AACtC;;AAEA,IAAI,0DAAa;AACjB;AACA,yCAAyC,oBAAoB,EAAE;AAC/D,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAM;AACtB;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,qDAAQ;AAClF;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA,yEAAyE,qDAAQ;AACjF;;AAEA;AACA,sEAAsE,qDAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClaO;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,eAAe,+WAA+W,oBAAoB,sMAAsM,oBAAoB,sBAAsB,oBAAoB,MAAM,oBAAoB;AAChrB,uBAAuB;AACvB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfe;AACjB;AACD;AACC;AACA;AACK;AACL;AACE;AACC;AACJ;AACD;AACC;AACC;AACA;AACC;AACH;AACM;AACE;AACP;AACG;AACC;AACF;AACD;AACU;AACN;AACJ;AACD;AACO;AACN;AACK;AACH;AACH;;;;;;;;;;;AC/BxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mBAAO,CAAC,+DAAgB;AACpC,SAAS,mBAAO,CAAC,yDAAa;AAC9B,aAAa,mBAAO,CAAC,uEAAiB;AACtC,UAAU,mBAAO,CAAC,2DAAc;AAChC,QAAQ,mBAAO,CAAC,uDAAY;AAC5B,WAAW,mBAAO,CAAC,6DAAe;AAClC;;;;;;;;;;;AC7BA,WAAW,mBAAO,CAAC,mDAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACtEA,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;AACvB,eAAe,mBAAO,CAAC,yEAAmB;;AAE1C;;AAEA;AACA,+CAA+C,8BAA8B,EAAE;AAC/E;AACA,iCAAiC,UAAU,EAAE;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,GAAG;AACH,gDAAgD;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACpDa;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,eAAe,mBAAO,CAAC,yEAAmB;AAC1C,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;;AAEvB;;AAEA;AACA;AACA,kCAAkC,yBAAyB,EAAE;AAC7D;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,gCAAgC;AACvD,gCAAgC,yBAAyB;AACzD,iCAAiC,2BAA2B;AAC5D,GAAG;;AAEH;;AAEA;AACA;AACA,GAAG;AACH,kDAAkD;AAClD;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC9Ca;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,oBAAoB,mBAAO,CAAC,2FAA4B;AACxD,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;AACvB;;AAEA;AACA;AACA,kCAAkC,yBAAyB,EAAE;AAC7D;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA,gCAAgC,yBAAyB,EAAE;;AAE3D;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,YAAY,EAAE;AAClC,oBAAoB,YAAY,EAAE;;AAElC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,8BAA8B,EAAE;AAC/F;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtHa;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,eAAe,mBAAO,CAAC,yEAAmB;AAC1C,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;;AAEvB;;AAEA;AACA,kDAAkD,+BAA+B,EAAE;AACnF;AACA,oCAAoC,UAAU,EAAE;AAChD;;AAEA;;AAEA;AACA;AACA;;AAEA,2C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kBAAkB,+BAA+B;AACjD,uBAAuB,qCAAqC;;AAE5D,+BAA+B,yBAAyB;AACxD,gCAAgC,2BAA2B;;AAE3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA,GAAG;AACH,6CAA6C;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACxEA;AACA;;AAEA;AACA,MAAM,IAA6B;AACnC;AACA,WAAW,mBAAO,CAAC,sCAAI;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA,YAAY,mBAAO,CAAC,kEAAO;AAC3B,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA,eAAe,mBAAO,CAAC,wEAAU;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA,QAAQ,mBAAO,CAAC,iFAAkB;AAClC,UAAU,mBAAO,CAAC,qFAAoB;AACtC,WAAW,mBAAO,CAAC,uFAAqB;AACxC,WAAW,mBAAO,CAAC,uFAAqB;AACxC,QAAQ,mBAAO,CAAC,iFAAkB;AAClC;;;;;;;;;;;ACNA,uBAAuB,mBAAO,CAAC,uFAAqB;;AAEpD;;AAEA;AACA;AACA;;;;;;;;;;;ACNA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;;;;;;;;;;;ACvBA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;;;;;;;;;;ACrEA;;AAEA;AACA;AACA;;;;;;;;;;;ACJA;;AAEA,oBAAoB,mBAAO,CAAC,iFAAkB;;AAE9C;;AAEA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA,OAAO,8BAA8B,GAAG,8BAA8B;AACtE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;ACxDA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;;;;;;;;;;AC/BA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc,EAAE;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mC;;AAEA;AACA;;;;;;;;;;;ACpCA,mBAAmB,mBAAO,CAAC,6EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,6EAAkB;AAC7C,mBAAmB,mBAAO,CAAC,2EAAiB;;AAE5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACrCA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;;;;;;;;;;ACZA,WAAW,mBAAO,CAAC,oDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3CA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,kBAAkB,mBAAO,CAAC,8DAAmB;AAC7C,qBAAqB,mBAAO,CAAC,oEAAsB;AACnD,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;AC1Ba;;AAEb,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;;AAEvB;;AAEA;AACA,6CAA6C,2CAA2C,EAAE;;AAE1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,gCAAgC,wBAAwB,EAAE;AAC1D,iCAAiC,yBAAyB,EAAE;AAC5D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;AChCa;;AAEb,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;AACvB,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;;AAEA;AACA,6CAA6C,2CAA2C,EAAE;;AAE1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACrBa;;AAEb,WAAW,mBAAO,CAAC,mDAAQ;AAC3B,SAAS,mBAAO,CAAC,+CAAM;;AAEvB;;AAEA;AACA,6CAA6C,2CAA2C,EAAE;;AAE1F;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;ACpBA,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,SAAS,mBAAO,CAAC,+CAAM;AACvB,aAAa,iFAAyB;;AAEtC;;AAEA;AACA;AACA,oBAAoB,mBAAO,CAAC,mEAAgB;AAC5C,uBAAuB,mBAAO,CAAC,yEAAmB;AAClD,yBAAyB,mBAAO,CAAC,+EAAsB;AACvD,wBAAwB,mBAAO,CAAC,6EAAqB;AACrD,sBAAsB,mBAAO,CAAC,uEAAkB;AAChD,2BAA2B,mBAAO,CAAC,mFAAwB;AAC3D,yBAAyB,mBAAO,CAAC,6EAAqB;AACtD,eAAe,mBAAO,CAAC,uDAAU;AACjC,eAAe,mBAAO,CAAC,uDAAU;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,gBAAgB;;AAEzE;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,+BAA+B,8BAA8B;AAC7D,gCAAgC,gCAAgC;AAChE,GAAG;;AAEH;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvKa;;AAEb,oBAAoB,mBAAO,CAAC,2FAA4B;AACxD,uBAAuB,mBAAO,CAAC,iGAA+B;AAC9D,sBAAsB,mBAAO,CAAC,+FAA8B;AAC5D,uBAAuB,mBAAO,CAAC,iGAA+B;;AAE9D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,eAAe;AACpB,KAAK,eAAe;AACpB,KAAK,eAAe;AACpB,KAAK;AACL;AACA;AACA,4CAA4C,wBAAwB,EAAE;;AAEtE;AACA;AACA;;AAEA;AACA;;;;;;;;;;;AChFA,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;ACrDA;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,mBAAO,CAAC,kFAAgB;;AAEpC,UAAU,mBAAO,CAAC,8EAAc;AAChC,SAAS,mBAAO,CAAC,4EAAa;AAC9B;AACA,UAAU,oGAA0B;AACpC,YAAY,sGAA4B;AACxC,GAAG;AACH,WAAW,mBAAO,CAAC,gFAAe;AAClC;;;;;;;;;;;;AChCa;;AAEb,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,gBAAgB,mBAAO,CAAC,kFAAc;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;AClEA,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,WAAW,mBAAO,CAAC,sEAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,0EAAU;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,+BAA+B,EAAE;AACrE,oCAAoC,+BAA+B,EAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,wBAAwB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,sBAAsB,EAAE;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvDA,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,WAAW,mBAAO,CAAC,sEAAQ;AAC3B,YAAY,yGAA2B;;AAEvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mCAAmC,aAAa;;AAErE;AACA,kBAAkB,WAAW;AAC7B;AACA,GAAG;;AAEH;AACA,0BAA0B;AAC1B,GAAG;;AAEH;AACA;AACA,uBAAuB,eAAe;AACtC;AACA,uBAAuB,iBAAiB;AACxC;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;;;;;;;;;;ACjCA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA,eAAe,mBAAO,CAAC,wEAAU;AACjC,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,YAAY,yGAA2B;AACvC,WAAW,mBAAO,CAAC,gFAAa;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,wCAAwC;AACjF,yCAAyC,wCAAwC;AACjF;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,uBAAuB;AAC3C;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,wBAAwB;AACjD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,4DAA4D,mBAAmB,EAAE;AACjF;;AAEA;AACA;AACA,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACrHa;;AAEb,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,cAAc,mBAAO,CAAC,4EAAW;AACjC,gBAAgB,mBAAO,CAAC,gFAAa;AACrC,WAAW,mBAAO,CAAC,4EAAQ;AAC3B,qBAAqB,0GAAgC;AACrD,wBAAwB,mBAAO,CAAC,oGAAuB;AACvD,uBAAuB,4GAAkC;AACzD,mBAAmB,mBAAO,CAAC,wFAAiB;AAC5C,wBAAwB,mBAAO,CAAC,oGAAuB;AACvD,uBAAuB,mBAAO,CAAC,gGAAqB;AACpD,YAAY,mBAAO,CAAC,8EAAS;AAC7B,eAAe,mBAAO,CAAC,oFAAY;AACnC,WAAW,mBAAO,CAAC,sEAAQ;AAC3B,YAAY,yGAA2B;;AAEvC;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B,EAAE;AAC3E,2CAA2C,8BAA8B,EAAE;AAC3E,2CAA2C,kCAAkC,EAAE;AAC/E,GAAG;AACH;;AAEA;AACA,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,oBAAoB,EAAE;AACvE,iDAAiD,gBAAgB,EAAE;AACnE,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,kCAAkC,EAAE;AACrF,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,kBAAkB,EAAE;AACrE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,UAAU,EAAE;AAC7D,iDAAiD,oBAAoB,EAAE;AACvE,iDAAiD,4BAA4B,EAAE;AAC/E,iDAAiD,aAAa,EAAE;AAChE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,0BAA0B,EAAE;AAC7E,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,kCAAkC,EAAE;AACrF,iDAAiD,iBAAiB,EAAE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAmC;AACxD;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,2BAA2B,gBAAgB;AAC3C,2BAA2B,gBAAgB;AAC3C,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,4DAA4D;AAC5D;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+BAA+B;AACxC,SAAS,+BAA+B;AACxC,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;ACvYA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,kDAAa;AACjC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,aAAa,mBAAO,CAAC,oDAAc;AACnC,YAAY,mBAAO,CAAC,gDAAY;AAChC,mBAAmB,mBAAO,CAAC,gEAAoB;AAC/C,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,YAAY,mBAAO,CAAC,kDAAa;AACjC,aAAa,mBAAO,CAAC,oDAAc;AACnC,cAAc,mBAAO,CAAC,sDAAe;AACrC,cAAc,mBAAO,CAAC,sDAAe;AACrC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,cAAc,mBAAO,CAAC,sDAAe;AACrC,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC3CA,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,WAAW,mBAAO,CAAC,sEAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,2CAA2C;AAC3C;;AAEA;;AAEA;AACA,oCAAoC,6BAA6B,EAAE;;AAEnE;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA,0BAA0B,wCAAwC;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,uCAAuC,WAAW,EAAE;AACpD;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACnIa;;AAEb,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,WAAW,mBAAO,CAAC,sEAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,2BAA2B;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACzFA,QAAQ,mBAAO,CAAC,2EAAW;;AAE3B;;AAEA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B;AACtD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACpDA,QAAQ,mBAAO,CAAC,2EAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,GAAG,oBAAoB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,YAAY,0GAA4B;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB,YAAY,aAAa;AAClE,wCAAwC,kBAAkB,EAAE;;AAE5D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC;AAClE,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxEa;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,UAAU,EAAE;AACnD;AACA;AACA,cAAc;AACd,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU,EAAE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;AClEa;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,gBAAgB,mBAAO,CAAC,wFAAc;AACtC,iBAAiB,mBAAO,CAAC,0FAAe;AACxC,mBAAmB,mBAAO,CAAC,8FAAiB;AAC5C,sBAAsB,mBAAO,CAAC,sGAAqB;AACnD,6BAA6B,mBAAO,CAAC,oHAA4B;AACjE,YAAY,0GAA4B;AACxC,WAAW,mBAAO,CAAC,uEAAS;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,+BAA+B,cAAc;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;AC9Ea;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sDAAsD,uBAAuB,EAAE;AAC/E,uDAAuD,WAAW,EAAE;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,uBAAuB,EAAE;AAC9E;;AAEA;AACA;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;;AAE3B;;AAEA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD,8BAA8B,EAAE;AAChC;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,sBAAsB,EAAE;AAC1E;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACzHA,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,iBAAiB,mBAAO,CAAC,wFAAc;AACvC,uBAAuB,mBAAO,CAAC,sGAAqB;AACpD,WAAW,mBAAO,CAAC,4EAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;AC3EA,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,WAAW,mBAAO,CAAC,uEAAS;;AAE5B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,sDAAsD,iBAAiB,EAAE;AACzE;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACxDA,QAAQ,mBAAO,CAAC,0EAAU;;AAE1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;;;;;;;;;;;ACrFa;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,YAAY,0GAA4B;AACxC,WAAW,mBAAO,CAAC,uEAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe,EAAE;AACxD;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sDAAsD,kBAAkB,EAAE;AAC1E;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C,WAAW,EAAE;AACvD;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;AAC1C,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AClaa;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,WAAW,mBAAO,CAAC,uEAAS;AAC5B,gBAAgB,0GAAyB;;AAEzC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB,EAAE;AAC/E;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;;;;;;;;;;;;AC5Ba;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,YAAY,0GAA4B;AACxC,YAAY,sGAAuB;;AAEnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;;AAEvC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACxFa;;AAEb,eAAe,mBAAO,CAAC,2EAAQ;AAC/B;AACA,mBAAmB,mBAAO,CAAC,6FAAiB;AAC5C,qBAAqB,mBAAO,CAAC,iGAAmB;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD,wCAAwC;AACxC,4CAA4C;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC/Ca;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;AAC3B,mBAAmB,mBAAO,CAAC,6FAAiB;AAC5C,YAAY,sGAAuB;AACnC,eAAe,4GAA6B;AAC5C,eAAe,iHAAmC;AAClD,gBAAgB,kHAAoC;AACpD,eAAe,qGAA2B;;AAE1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,6CAA6C,uBAAuB,EAAE;AACtE;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,0BAA0B,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzOa;;AAEb,QAAQ,mBAAO,CAAC,2EAAW;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9DA;;AAEa;;AAEb,QAAQ,mBAAO,CAAC,0EAAU;AAC1B,YAAY,yGAA2B;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC,EAAE;AACxE;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA,0CAA0C,KAAK;AAC/C,KAAK,oBAAoB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,WAAW,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mDAAmD,uBAAuB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,yBAAyB,EAAE;AAC5D;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;AC7OA;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,yEAAO;;AAEzB;AACA;AACA,QAAQ,mBAAO,CAAC,6EAAY;AAC5B,OAAO,mBAAO,CAAC,iFAAW;AAC1B;AACA;;;;;;;;;;;ACrCA,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,aAAa;AAClC;AACA;AACA,KAAK;AACL,oBAAoB,aAAa;AACjC;AACA;;;;;;;;;;;ACzCA,eAAe,mBAAO,CAAC,qFAAY;AACnC,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;;AAEA;AACA;AACA;AACA,GAAG,IAAI;AACP;;;;;;;;;;;ACTA,QAAQ,mBAAO,CAAC,8EAAW;AAC3B,oBAAoB,mBAAO,CAAC,wGAAwB;;AAEpD;;AAEA;;AAEA;AACA;AACA;AACA,2BAA2B,sBAAsB,EAAE;AACnD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACrDA,QAAQ,mBAAO,CAAC,8EAAW;AAC3B,aAAa,mBAAO,CAAC,iFAAU;;AAE/B;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACTA,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;;AAEA;;AAEA;AACA;AACA;AACA,2BAA2B,sBAAsB,EAAE;AACnD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB;AACvB,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;;AAEH;AACA;;;;;;;;;;;ACjDA;AACA,cAAc,mBAAO,CAAC,yFAAc;AACpC,YAAY,mBAAO,CAAC,qFAAY;AAChC,eAAe,mBAAO,CAAC,6FAAgB;AACvC,cAAc,mBAAO,CAAC,2FAAe;AACrC,iBAAiB,mBAAO,CAAC,iGAAkB;AAC3C,aAAa,mBAAO,CAAC,yFAAc;AACnC,aAAa,mBAAO,CAAC,uFAAa;AAClC,YAAY,mBAAO,CAAC,qFAAY;AAChC,QAAQ,mBAAO,CAAC,6EAAQ;AACxB,UAAU,mBAAO,CAAC,iFAAU;AAC5B,WAAW,mBAAO,CAAC,mFAAW;AAC9B;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,mFAAW;;AAEjC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACdA,UAAU,mBAAO,CAAC,2EAAO;;AAEzB;;AAEA;AACA;AACA;;;;;;;;;;;ACNA,UAAU,mBAAO,CAAC,2EAAO;;AAEzB;;AAEA;AACA;AACA;;;;;;;;;;;ACNA,QAAQ,mBAAO,CAAC,8EAAW;AAC3B,YAAY,mBAAO,CAAC,4EAAU;AAC9B,oBAAoB,mBAAO,CAAC,wGAAwB;;AAEpD;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACnDA,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;AC9CA,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,gD;;;;;;;;;;AClCvC,QAAQ,mBAAO,CAAC,8EAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,cAAc,EAAE;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJa;;AAEb,QAAQ,mBAAO,CAAC,6EAAU;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,WAAW;AAC/E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,kBAAkB,eAAe;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACnhBA;AACA;AACA,SAAS,mBAAO,CAAC,2EAAS;AAC1B,WAAW,mBAAO,CAAC,+EAAW;AAC9B;;;;;;;;;;;ACJA,QAAQ,mBAAO,CAAC,6EAAU;AAC1B,YAAY,mBAAO,CAAC,2EAAS;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,eAAe,2CAA2C;AAC1D,GAAG;AACH;AACA;;;;;;;;;;;ACjEA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,aAAa,mBAAO,CAAC,oDAAc;AACnC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,gDAAY;AAChC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,kBAAkB,mBAAO,CAAC,8DAAmB;AAC7C,mBAAmB,mBAAO,CAAC,gEAAoB;AAC/C,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,kDAAa;AACjC,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,aAAa,mBAAO,CAAC,oDAAc;AACnC,cAAc,mBAAO,CAAC,sDAAe;AACrC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;;;;;;;;;;;ACAA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,mBAAO,CAAC,4DAAgB;;AAEpC,UAAU,mBAAO,CAAC,wDAAc;AAChC,SAAS,mBAAO,CAAC,sDAAa;AAC9B;AACA,UAAU,8EAA0B;AACpC,YAAY,gFAA4B;AACxC,GAAG;AACH,WAAW,mBAAO,CAAC,0DAAe;AAClC;;;;;;;;;;;;AChCa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,gBAAgB,mBAAO,CAAC,4DAAc;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;AClEA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,oDAAoD;AACnE;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,+BAA+B,EAAE;AACrE,oCAAoC,+BAA+B,EAAE;AACrE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,wBAAwB,EAAE;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,sBAAsB,EAAE;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACvDA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;AAC3B,YAAY,mFAA2B;;AAEvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mCAAmC,aAAa;;AAErE;AACA,kBAAkB,WAAW;AAC7B;AACA,GAAG;;AAEH;AACA,0BAA0B;AAC1B,GAAG;;AAEH;AACA;AACA,uBAAuB,eAAe;AACtC;AACA,uBAAuB,iBAAiB;AACxC;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;;;;;;;;;;ACjCA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA,eAAe,mBAAO,CAAC,kDAAU;AACjC,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,YAAY,mFAA2B;AACvC,WAAW,mBAAO,CAAC,0DAAa;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,wCAAwC;AACjF,yCAAyC,wCAAwC;AACjF;AACA,sCAAsC,OAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,uBAAuB;AAC3C;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,wBAAwB;AACjD,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,4DAA4D,mBAAmB,EAAE;AACjF;;AAEA;AACA;AACA,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;ACrHa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,cAAc,mBAAO,CAAC,sDAAW;AACjC,gBAAgB,mBAAO,CAAC,0DAAa;AACrC,WAAW,mBAAO,CAAC,sDAAQ;AAC3B,qBAAqB,oFAAgC;AACrD,wBAAwB,mBAAO,CAAC,8EAAuB;AACvD,uBAAuB,sFAAkC;AACzD,mBAAmB,mBAAO,CAAC,kEAAiB;AAC5C,wBAAwB,mBAAO,CAAC,8EAAuB;AACvD,uBAAuB,mBAAO,CAAC,0EAAqB;AACpD,YAAY,mBAAO,CAAC,wDAAS;AAC7B,eAAe,mBAAO,CAAC,8DAAY;AACnC,WAAW,mBAAO,CAAC,gDAAQ;AAC3B,YAAY,mFAA2B;;AAEvC;;AAEA;AACA;AACA;AACA;AACA,2CAA2C,4BAA4B,EAAE;AACzE,2CAA2C,8BAA8B,EAAE;AAC3E,2CAA2C,kCAAkC,EAAE;AAC/E,GAAG;AACH;;AAEA;AACA,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,oBAAoB,EAAE;AACvE,iDAAiD,gBAAgB,EAAE;AACnE,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,kCAAkC,EAAE;AACrF,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,qBAAqB,EAAE;AACxE,iDAAiD,2BAA2B,EAAE;AAC9E,iDAAiD,kBAAkB,EAAE;AACrE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,UAAU,EAAE;AAC7D,iDAAiD,oBAAoB,EAAE;AACvE,iDAAiD,4BAA4B,EAAE;AAC/E,iDAAiD,aAAa,EAAE;AAChE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,sBAAsB,EAAE;AACzE,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,0BAA0B,EAAE;AAC7E,iDAAiD,mBAAmB,EAAE;AACtE,iDAAiD,yBAAyB,EAAE;AAC5E,iDAAiD,kCAAkC,EAAE;AACrF,iDAAiD,iBAAiB,EAAE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,qBAAqB,uDAAuD;AAC5E;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mCAAmC;AACxD;;AAEA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,2BAA2B,gBAAgB;AAC3C,2BAA2B,gBAAgB;AAC3C,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8DAA8D;AAC9D;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+BAA+B;AACxC,SAAS,+BAA+B;AACxC,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;ACvYA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,kDAAa;AACjC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,aAAa,mBAAO,CAAC,oDAAc;AACnC,YAAY,mBAAO,CAAC,gDAAY;AAChC,mBAAmB,mBAAO,CAAC,gEAAoB;AAC/C,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,aAAa,mBAAO,CAAC,oDAAc;AACnC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,YAAY,mBAAO,CAAC,kDAAa;AACjC,aAAa,mBAAO,CAAC,oDAAc;AACnC,cAAc,mBAAO,CAAC,sDAAe;AACrC,cAAc,mBAAO,CAAC,sDAAe;AACrC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,cAAc,mBAAO,CAAC,sDAAe;AACrC,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACzCA,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,2CAA2C;AAC3C;;AAEA;;AAEA;AACA,oCAAoC,6BAA6B,EAAE;;AAEnE;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;AACvD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA,0BAA0B,wCAAwC;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,uCAAuC,WAAW,EAAE;AACpD;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACnIa;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,WAAW,mBAAO,CAAC,gDAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2BAA2B;AACpD;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,2BAA2B;AAC9C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACzFA,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4BAA4B;AACtD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACpDA,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,GAAG,oBAAoB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,oFAA4B;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB,YAAY,aAAa;AACpE,oDAAoD,kBAAkB,EAAE;;AAExE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oCAAoC;AAClE,OAAO;;AAEP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxEa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE,UAAU,EAAE;AAC5E;AACA;AACA,sBAAsB;AACtB,aAAa;AACb,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU,EAAE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;;AClEa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,gBAAgB,mBAAO,CAAC,kEAAc;AACtC,iBAAiB,mBAAO,CAAC,oEAAe;AACxC,mBAAmB,mBAAO,CAAC,wEAAiB;AAC5C,sBAAsB,mBAAO,CAAC,gFAAqB;AACnD,6BAA6B,mBAAO,CAAC,8FAA4B;AACjE,YAAY,oFAA4B;AACxC,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,+BAA+B,cAAc;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;;;;;;;;;;;AC9Ea;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,OAAO;AACP,sDAAsD,uBAAuB,EAAE;AAC/E,uDAAuD,WAAW,EAAE;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,uBAAuB,EAAE;AAC9E;;AAEA;AACA;;;;;;;;;;;;ACrCa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;;AAEA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD,8BAA8B,EAAE;AAChC;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,sBAAsB,EAAE;AAC1E;AACA;AACA,gBAAgB;;AAEhB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACzHA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,iBAAiB,mBAAO,CAAC,kEAAc;AACvC,uBAAuB,mBAAO,CAAC,gFAAqB;AACpD,WAAW,mBAAO,CAAC,sDAAQ;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;;;;AC3EA,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,wDAAwD,iBAAiB,EAAE;AAC3E;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACxDA,QAAQ,mBAAO,CAAC,oDAAU;;AAE1B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;;;;;;;;;;;;ACrFa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,oFAA4B;AACxC,WAAW,mBAAO,CAAC,iDAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe,EAAE;AACxD;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sDAAsD,kBAAkB,EAAE;AAC1E;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,WAAW,EAAE;AACvD;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C;AAC5C,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2CAA2C;AAC3C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AClaa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,WAAW,mBAAO,CAAC,iDAAS;AAC5B,gBAAgB,oFAAyB;;AAEzC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yBAAyB,EAAE;AAC/E;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;;;;;;;;;;;;AC5Ba;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,YAAY,oFAA4B;AACxC,YAAY,gFAAuB;;AAEnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;;AAEvC;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;;ACxFa;;AAEb,eAAe,mBAAO,CAAC,qDAAQ;AAC/B;AACA,mBAAmB,mBAAO,CAAC,uEAAiB;AAC5C,qBAAqB,mBAAO,CAAC,2EAAmB;;AAEhD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,0CAA0C;AAC1C,8CAA8C;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;AC/Ca;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;AAC3B,mBAAmB,mBAAO,CAAC,uEAAiB;AAC5C,YAAY,gFAAuB;AACnC,eAAe,sFAA6B;AAC5C,eAAe,2FAAmC;AAClD,gBAAgB,4FAAoC;AACpD,eAAe,+EAA2B;;AAE1C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,6CAA6C,uBAAuB,EAAE;AACtE;;AAEA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA,4CAA4C,0BAA0B,EAAE;AACxE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzOa;;AAEb,QAAQ,mBAAO,CAAC,qDAAW;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9Da;;AAEb,QAAQ,mBAAO,CAAC,oDAAU;AAC1B,YAAY,mFAA2B;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kCAAkC,EAAE;AACxE;AACA,oDAAoD,uBAAuB;AAC3E;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA,0CAA0C,KAAK;AAC/C,KAAK,oBAAoB;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,WAAW,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,mDAAmD,uBAAuB,EAAE;;AAE5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,yBAAyB,EAAE;AAC5D;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;AC3OA;;;;;;;;;;;;ACAa;;AAEb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACtCa;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AClBA;AACA;AACA;AACA;;AAEa;;AAEb,sBAAsB,mBAAO,CAAC,2FAAqB;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,OAAO;;AAEhE;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtPA;AACA;AACA;AACA;;AAEa;;AAEb,cAAc,wHAAsC;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yDAAyD,OAAO;;AAEhE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wEAAwE,gDAAgD;AACxH,8DAA8D,mMAAmM;AACjQ,2EAA2E,KAAK,YAAY,EAAE,MAAM,YAAY,EAAE,OAAO,YAAY,EAAE,EAAE;AACzI,2EAA2E,KAAK,YAAY,EAAE,MAAM,YAAY,EAAE,OAAO,YAAY,EAAE,EAAE;AACzI;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC,iBAAiB;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;;AAEjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACppBa;;AAEb,8BAA8B,uHAAqC;AACnE,8BAA8B,mBAAO,CAAC,oFAAiB;AACvD,8BAA8B,mBAAO,CAAC,0FAAoB;AAC1D,8BAA8B,mBAAO,CAAC,kFAAgB;AACtD,8BAA8B,mBAAO,CAAC,8EAAc;AACpD,8BAA8B,mBAAO,CAAC,0EAAY;AAClD,8BAA8B,mBAAO,CAAC,0FAAoB;AAC1D,8BAA8B,mBAAO,CAAC,8EAAiB;AACvD,8BAA8B,mBAAO,CAAC,oFAAiB;;AAEvD;AACA,8BAA8B,mBAAO,CAAC,+GAAgC;AACtE,8BAA8B,mBAAO,CAAC,+GAAgC;;AAEtE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB;;AAEA;AACA;AACA,UAAU;AACV,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,UAAU;AACxB;AACA,cAAc,SAAS;AACvB;AACA;AACA,cAAc,QAAQ;AACtB;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,qCAAqC,6CAA6C,EAAE;AACpF;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,mFAAmF,qBAAqB;;AAExG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,kBAAkB;AACjC,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,6CAA6C;AACtG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACvUa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnDa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;ACjBa;;AAEb;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9Ca;;AAEb;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3Da;;AAEb;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,iBAAiB;AACjB,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;;;;;AC1Ca;;AAEb;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;;AAEA;;AAEe;AACf;AACA;AACA,iFAAiF;AACjF;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;ACfA,iEAAe,qBAAuB,gBAAgB,E;;;;;;;;;;ACAtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+BAA+B;AAC3C;AACA;AACA;AACA;;AAEA,UAAU,mBAAO,CAAC,mDAAO;;AAEzB;AACA;AACA,QAAQ,mBAAO,CAAC,uDAAY;AAC5B,OAAO,mBAAO,CAAC,2DAAW;AAC1B;AACA;;;;;;;;;;;ACrCA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;AC1BA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,aAAa;AAClC;AACA;AACA,KAAK;AACL,oBAAoB,aAAa;AACjC;AACA;;;;;;;;;;;ACzCA,eAAe,mBAAO,CAAC,+DAAY;AACnC,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA,GAAG,IAAI;AACP;;;;;;;;;;;ACTA,QAAQ,mBAAO,CAAC,wDAAW;AAC3B,oBAAoB,mBAAO,CAAC,kFAAwB;;AAEpD;;AAEA;;AAEA;AACA;AACA;AACA,4CAA4C,sBAAsB,EAAE;AACpE;;AAEA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACrDA,QAAQ,mBAAO,CAAC,wDAAW;AAC3B,aAAa,mBAAO,CAAC,2DAAU;;AAE/B;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;;;;ACTA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;;AAEA;AACA;AACA;AACA,iDAAiD,sBAAsB,EAAE;AACzE;;AAEA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB;AACvB,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;;AAEH;AACA;;;;;;;;;;;ACjDA;AACA,cAAc,mBAAO,CAAC,mEAAc;AACpC,YAAY,mBAAO,CAAC,+DAAY;AAChC,eAAe,mBAAO,CAAC,uEAAgB;AACvC,cAAc,mBAAO,CAAC,qEAAe;AACrC,iBAAiB,mBAAO,CAAC,2EAAkB;AAC3C,aAAa,mBAAO,CAAC,mEAAc;AACnC,aAAa,mBAAO,CAAC,iEAAa;AAClC,YAAY,mBAAO,CAAC,+DAAY;AAChC,QAAQ,mBAAO,CAAC,uDAAQ;AACxB,UAAU,mBAAO,CAAC,2DAAU;AAC5B,WAAW,mBAAO,CAAC,6DAAW;AAC9B;;;;;;;;;;;ACZA,cAAc,mBAAO,CAAC,6DAAW;;AAEjC;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACdA,UAAU,mBAAO,CAAC,qDAAO;;AAEzB;;AAEA;AACA;AACA;;;;;;;;;;;ACNA,UAAU,mBAAO,CAAC,qDAAO;;AAEzB;;AAEA;AACA;AACA;;;;;;;;;;;ACNA,QAAQ,mBAAO,CAAC,wDAAW;AAC3B,YAAY,mBAAO,CAAC,sDAAU;AAC9B,oBAAoB,mBAAO,CAAC,kFAAwB;;AAEpD;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;;;ACnDA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;;;;;;;;;;AC9CA,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;AACA;;AAEA;AACA,kBAAkB;AAClB,gBAAgB;AAChB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,uCAAuC,gD;;;;;;;;;;AClCvC,QAAQ,mBAAO,CAAC,wDAAW;;AAE3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,cAAc,EAAE;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvJa;;AAEb,QAAQ,mBAAO,CAAC,uDAAU;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oEAAoE,WAAW;AAC/E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC,oCAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,kBAAkB,eAAe;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;ACnhBA;AACA;AACA,SAAS,mBAAO,CAAC,qDAAS;AAC1B,WAAW,mBAAO,CAAC,yDAAW;AAC9B;;;;;;;;;;;ACJA,QAAQ,mBAAO,CAAC,uDAAU;AAC1B,YAAY,mBAAO,CAAC,qDAAS;;AAE7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,eAAe,2CAA2C;AAC1D,GAAG;AACH;AACA;;;;;;;;;;;ACjEA;;AAEA;;AAEA,IAAI,IAA6B;AACjC;AACA;AACA,aAAa,mBAAO,CAAC,oDAAc;AACnC,gBAAgB,mBAAO,CAAC,0DAAiB;AACzC,YAAY,mBAAO,CAAC,kDAAa;AACjC,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,gDAAY;AAChC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,eAAe,mBAAO,CAAC,wDAAgB;AACvC,kBAAkB,mBAAO,CAAC,8DAAmB;AAC7C,mBAAmB,mBAAO,CAAC,gEAAoB;AAC/C,YAAY,mBAAO,CAAC,kDAAa;AACjC,WAAW,mBAAO,CAAC,gDAAY;AAC/B,cAAc,mBAAO,CAAC,sDAAe;AACrC,YAAY,mBAAO,CAAC,kDAAa;AACjC,iBAAiB,mBAAO,CAAC,4DAAkB;AAC3C,aAAa,mBAAO,CAAC,oDAAc;AACnC,cAAc,mBAAO,CAAC,sDAAe;AACrC;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iCAAiC,EAAE,oBAAoB,EAAE,sBAAsB,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,+DAA+D,EAAE,wBAAwB,EAAE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qBAAqB,EAAE;AAC3D,yCAAyC,8BAA8B,EAAE;AACzE,qCAAqC,2BAA2B,EAAE;AAClE,qCAAqC,2BAA2B,EAAE;AAClE,sCAAsC,2BAA2B,EAAE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sCAAsC,EAAE;AACjF,qCAAqC,mCAAmC,EAAE;AAC1E,qCAAqC,mCAAmC,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACmB;AACA;AACM;AACD;AACC;AACD;AACQ;AACF;AACd;AACE;AACG;AACa;AAClB;AACE;AACC;AACO;AACF;AACA;AACI;AACF;AAC1B;AAC6B;;;;;;;;;;;;ACxShB;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,qDAAU;AAChC,aAAa,mBAAO,CAAC,2DAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA,eAAe;;;;;;;;;;;;AClJF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,SAAS,mBAAO,CAAC,uDAAG;AACpB;AACA,+BAA+B,yBAAyB;AACxD;AACA,eAAe;;;;;;;;;;;;ACPF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,qDAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,eAAe;;;;;;;;;;;;AC1BF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C,eAAe,mBAAO,CAAC,uDAAW;AAClC;AACA;AACA;AACA,wBAAwB,EAAE,EAAE,IAAI,UAAU,EAAE;AAC5C;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACnCF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACjDF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,qDAAU;AAChC,YAAY,mBAAO,CAAC,sDAAO;AAC3B,gBAAgB,mBAAO,CAAC,8DAAW;AACnC,YAAY,mBAAO,CAAC,sDAAO;AAC3B,YAAY,mBAAO,CAAC,sDAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gJAAgJ;AAChJ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;AC5CF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,YAAY,mBAAO,CAAC,sDAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;AC7KF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,6BAA6B;AAC7B;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACnCF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,0DAAS;AAC/B;AACA;AACA,eAAe;AACf,eAAe,UAAU;AACzB,iDAAiD;;;;;;;;;;;;ACRpC;AACb;AACA;AACA;AACA;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,SAAS,mBAAO,CAAC,8DAAW;;;;;;;;;;;;ACNf;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,eAAe,mBAAO,CAAC,8DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;AChBF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACbF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACdF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACVF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,eAAe,mBAAO,CAAC,8DAAU;AACjC;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe;;;;;;;;;;;;AClBF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,aAAa,mBAAO,CAAC,0DAAQ,EAAE;AAC/B,WAAW;AACX,aAAa,mBAAO,CAAC,0DAAQ,EAAE;AAC/B,WAAW;AACX,aAAa,mBAAO,CAAC,0DAAQ;AAC7B,YAAY;AACZ,aAAa,mBAAO,CAAC,0DAAQ,EAAE;AAC/B,WAAW;AACX,aAAa,mBAAO,CAAC,0DAAQ;AAC7B,YAAY;AACZ,gBAAgB,mBAAO,CAAC,gEAAW;AACnC,eAAe;AACf,YAAY,mBAAO,CAAC,wDAAO;AAC3B,WAAW;AACX,cAAc,mBAAO,CAAC,4DAAS;AAC/B,aAAa;AACb,aAAa,mBAAO,CAAC,0DAAQ;AAC7B,YAAY;AACZ,YAAY,mBAAO,CAAC,wDAAO;AAC3B,WAAW;AACX,mBAAmB,mBAAO,CAAC,sEAAc;AACzC,kBAAkB;AAClB,kBAAkB,mBAAO,CAAC,oEAAa;AACvC,iBAAiB;AACjB,cAAc,mBAAO,CAAC,4DAAS;AAC/B,aAAa;AACb,cAAc,mBAAO,CAAC,4DAAS,EAAE;AACjC,eAAe;AACf,kBAAkB,mBAAO,CAAC,oEAAa;AACvC,iBAAiB;AACjB,gBAAgB,mBAAO,CAAC,gEAAW;AACnC,cAAc;AACd,iBAAiB,mBAAO,CAAC,kEAAY;AACrC,eAAe;AACf,iBAAiB,mBAAO,CAAC,kEAAY;AACrC,eAAe;AACf,iBAAiB,mBAAO,CAAC,kEAAY;AACrC,gBAAgB;AAChB,mBAAmB,mBAAO,CAAC,sEAAc;AACzC,kBAAkB;AAClB,gBAAgB,mBAAO,CAAC,gEAAW;AACnC,eAAe;AACf,eAAe,mBAAO,CAAC,8DAAU;AACjC,cAAc;AACd,gBAAgB,mBAAO,CAAC,gEAAW;AACnC,eAAe;AACf,gBAAgB,mBAAO,CAAC,gEAAW,EAAE;AACrC,cAAc;AACd,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD,sBAAsB;AACtB,uBAAuB,mBAAO,CAAC,8EAAkB,EAAE;AACnD,eAAe;AACf,mBAAmB,mBAAO,CAAC,sEAAc;AACzC,kBAAkB;AAClB,kBAAkB,mBAAO,CAAC,oEAAa;AACvC,iBAAiB;AACjB,eAAe,mBAAO,CAAC,8DAAU;AACjC,cAAc;AACd,eAAe,mBAAO,CAAC,8DAAU;AACjC,cAAc;AACd,eAAe,mBAAO,CAAC,8DAAU;AACjC,cAAc;AACd,YAAY,mBAAO,CAAC,wDAAO;AAC3B,WAAW;AACX,cAAc,mBAAO,CAAC,4DAAS;AAC/B,aAAa;;;;;;;;;;;;ACpEA;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,YAAY,mBAAO,CAAC,wDAAO;AAC3B;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACfF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,iBAAiB,mBAAO,CAAC,kEAAY;AACrC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,kBAAkB,mBAAO,CAAC,oEAAa;AACvC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACfF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACZF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,aAAa,mBAAO,CAAC,0DAAQ;AAC7B;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACbF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,iBAAiB,mBAAO,CAAC,6EAAsB;AAC/C,cAAc,mBAAO,CAAC,2DAAU;AAChC,eAAe,mBAAO,CAAC,8DAAU;AACjC;AACA,uBAAuB,OAAO;AAC9B,uBAAuB,OAAO;AAC9B;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACrBF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,gEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,cAAc,mBAAO,CAAC,2DAAU;AAChC,cAAc,mBAAO,CAAC,2DAAU;AAChC,eAAe,mBAAO,CAAC,8DAAU;AACjC;AACA;AACA,2DAA2D,0CAA0C,2EAA2E;AAChL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACfF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,uBAAuB,mBAAO,CAAC,8EAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACrB,YAAY;AACZ;;;;;;;;;;;;ACVa;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,gBAAgB,EAAE;AAC3C,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,yCAAyC,EAAE;AACpE,yBAAyB,qCAAqC;AAC9D,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACxFF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D,gBAAgB,mBAAO,CAAC,8DAAW;AACnC,aAAa,mBAAO,CAAC,wDAAQ;AAC7B,aAAa,mBAAO,CAAC,wDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACbF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;;ACTF;AACb;AACA,8CAA6C,CAAC,cAAc,EAAC;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;;;;;;;;;;ACdf,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;;;;;ACXA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,SAAS,mBAAO,CAAC,yCAAM;;AAEvB;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,YAAY,mBAAO,CAAC,iDAAU;AAC9B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,+CAAS;AAC7B,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,+CAAS;AAC7B,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACpKA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;AC7BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;;;;;ACfA,cAAc,mBAAO,CAAC,qDAAY;AAClC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,eAAe,mBAAO,CAAC,uDAAa;AACpC,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,EAAE;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,YAAY,mBAAO,CAAC,iDAAU;AAC9B,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,mDAAW;AAChC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,YAAY,mBAAO,CAAC,iDAAU;AAC9B,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,aAAa,mBAAO,CAAC,mDAAW;AAChC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3DA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,0BAA0B,mBAAO,CAAC,6EAAwB;AAC1D,eAAe,mBAAO,CAAC,qDAAY;AACnC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,eAAe,mBAAO,CAAC,qDAAY;AACnC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,8BAA8B,mBAAO,CAAC,qFAA4B;;AAElE;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,UAAU,mBAAO,CAAC,2CAAO;AACzB,YAAY,mBAAO,CAAC,+CAAS;AAC7B,YAAY,mBAAO,CAAC,iDAAU;AAC9B,yBAAyB,mBAAO,CAAC,2EAAuB;AACxD,8BAA8B,mBAAO,CAAC,qFAA4B;AAClE,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,YAAY,mBAAO,CAAC,iDAAU;AAC9B,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,cAAc,mBAAO,CAAC,qDAAY;AAClC,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,qDAAY;AACnC,aAAa,mBAAO,CAAC,iDAAU;AAC/B,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;ACzCA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,wBAAwB,mBAAO,CAAC,uEAAqB;AACrD,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;AACnC,oBAAoB,mBAAO,CAAC,+DAAiB;AAC7C,mBAAmB,mBAAO,CAAC,6DAAgB;AAC3C,cAAc,mBAAO,CAAC,qDAAY;AAClC,oBAAoB,mBAAO,CAAC,+DAAiB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7FA,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,qDAAY;AAClC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,6BAA6B;AACxC,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,YAAY;AACZ,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;ACjCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,YAAY,mBAAO,CAAC,+CAAS;;AAE7B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AClBA,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,QAAQ;AACnB;AACA,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9CA,eAAe,mBAAO,CAAC,qDAAY;AACnC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,uDAAa;AACpC,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,eAAe,mBAAO,CAAC,uDAAa;AACpC,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,wBAAwB,mBAAO,CAAC,yEAAsB;AACtD,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvEA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,cAAc,mBAAO,CAAC,mDAAW;AACjC,YAAY,mBAAO,CAAC,iDAAU;AAC9B,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACfA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxCA,uBAAuB,mBAAO,CAAC,uEAAqB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,mBAAmB;AAC9B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,OAAO,WAAW;AAC7B,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvCA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,WAAW;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,WAAW;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;ACLA,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;ACpCA,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+CAA+C;AAChF;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,WAAW,mBAAO,CAAC,6CAAQ;AAC3B,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;ACVA,eAAe,mBAAO,CAAC,uDAAa;AACpC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClFA,aAAa,mBAAO,CAAC,mDAAW;AAChC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,SAAS,mBAAO,CAAC,yCAAM;AACvB,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/GA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxFA,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA;AACA,wBAAwB,qBAAM,gBAAgB,qBAAM,IAAI,qBAAM,sBAAsB,qBAAM;;AAE1F;;;;;;;;;;;ACHA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,yBAAyB,mBAAO,CAAC,2EAAuB;AACxD,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;AC7BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,cAAc,mBAAO,CAAC,qDAAY;AAClC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,cAAc,mBAAO,CAAC,qDAAY;AAClC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,qDAAY;AACnC,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,sBAAsB,mBAAO,CAAC,qEAAoB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5EA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxBA,SAAS,mBAAO,CAAC,yCAAM;AACvB,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,qDAAY;AAClC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACZA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClBA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,WAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACfA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;;;;;;;;;;;ACLA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;;AAEA;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;;AAED;;;;;;;;;;;AC7BA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;ACjBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACbA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,UAAU,mBAAO,CAAC,6CAAQ;AAC1B,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;;;;;;;;;AC1BA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,EAAE;AACjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3CA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA,gBAAgB,mBAAO,CAAC,yDAAc;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,SAAS;AACtB;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA,WAAW,SAAS,GAAG,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,SAAS,mBAAO,CAAC,yCAAM;AACvB,qBAAqB,mBAAO,CAAC,mEAAmB;AAChD,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,eAAe,SAAS,GAAG,SAAS,GAAG,SAAS;AAChD,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;;;;;;;;;;AC/DA,yFAAqC;;;;;;;;;;;ACArC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,MAAM,8CAA8C;AACpD,MAAM;AACN;AACA;AACA,gCAAgC,kBAAkB,EAAE;AACpD;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/CA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,EAAE;AACf;AACA;AACA;AACA,MAAM,+CAA+C;AACrD,MAAM,gDAAgD;AACtD,MAAM;AACN;AACA;AACA,8BAA8B,mBAAmB,EAAE;AACnD;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzCA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,MAAM,qCAAqC;AAC3C,MAAM,qCAAqC;AAC3C,MAAM;AACN;AACA;AACA,mCAAmC,2BAA2B,EAAE;AAChE;AACA;AACA;AACA,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtDA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACxCA,cAAc,mBAAO,CAAC,qDAAY;AAClC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtCA,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB,QAAQ,OAAO,SAAS,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,iBAAiB,OAAO,SAAS;AACjC,yBAAyB,gBAAgB,SAAS,GAAG;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,cAAc,mBAAO,CAAC,qDAAY;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA,0BAA0B,gBAAgB,SAAS,GAAG;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpBA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,kBAAkB,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kBAAkB,EAAE;AAClE;AACA;AACA;;AAEA;;;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChCA,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AChCA,WAAW,mBAAO,CAAC,+CAAS;AAC5B,gBAAgB,mBAAO,CAAC,uDAAa;;AAErC;AACA,kBAAkB,KAA0B;;AAE5C;AACA,gCAAgC,QAAa;;AAE7C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrCA,eAAe,mBAAO,CAAC,uDAAa;AACpC,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,cAAc,mBAAO,CAAC,mDAAW;AACjC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,eAAe,mBAAO,CAAC,qDAAY;AACnC,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5EA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AClCA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7DA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,mDAAW;AACjC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACrBA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,eAAe,mBAAO,CAAC,uDAAa;AACpC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpCA,oBAAoB,mBAAO,CAAC,iEAAkB;AAC9C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,kBAAkB,mBAAO,CAAC,2DAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACnBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,qDAAY;AAClC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iBAAiB;AAC3B;AACA;AACA;AACA,MAAM,mBAAmB;AACzB,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACpDA,sBAAsB,mBAAO,CAAC,qEAAoB;AAClD,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD,iBAAiB;AACjB;AACA;AACA,mCAAmC,cAAc,EAAE;AACnD,UAAU,2BAA2B;AACrC;AACA;AACA;AACA,UAAU,2BAA2B;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;AC1CA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACxEA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,YAAY,SAAS,GAAG,SAAS;AACjC;AACA;AACA;AACA,UAAU,QAAQ,iBAAiB,GAAG,iBAAiB;AACvD;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;ACtCA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;AAChC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC5BA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,EAAE;AACf;AACA;AACA,mBAAmB,SAAS,GAAG,SAAS;AACxC;AACA,iCAAiC,YAAY,EAAE;AAC/C,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AChBA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,qBAAqB;AAChC,aAAa,OAAO;AACpB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,UAAU;AACV;AACA;AACA,4BAA4B;AAC5B,CAAC;;AAED;;;;;;;;;;;ACxBA,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,uBAAuB,mBAAO,CAAC,uEAAqB;AACpD,YAAY,mBAAO,CAAC,iDAAU;AAC9B,YAAY,mBAAO,CAAC,iDAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB;AACA;AACA;AACA,MAAM,OAAO,SAAS,EAAE;AACxB,MAAM,OAAO,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,kBAAkB,mBAAO,CAAC,6DAAgB;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,cAAc,mBAAO,CAAC,mDAAW;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,aAAa,yBAAyB;AACtC;AACA;AACA,IAAI,IAAI;AACR,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;AClDA,eAAe,mBAAO,CAAC,uDAAa;AACpC,aAAa,mBAAO,CAAC,mDAAW;AAChC,kBAAkB,mBAAO,CAAC,2DAAe;AACzC,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC7CA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,yBAAyB;AACpC;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM;AACN;AACA;AACA,iCAAiC,eAAe,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACzCA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;ACnCA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjEA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,aAAa,mBAAO,CAAC,iDAAU;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA,aAAa,SAAS;AACtB,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC/BA,mBAAmB,mBAAO,CAAC,+DAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,mBAAmB,mBAAO,CAAC,+DAAiB;AAC5C,cAAc,mBAAO,CAAC,mDAAW;AACjC,eAAe,mBAAO,CAAC,qDAAY;AACnC,iBAAiB,mBAAO,CAAC,yDAAc;AACvC,eAAe,mBAAO,CAAC,qDAAY;AACnC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA,IAAI,IAAI;AACR,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;;;;;;;;;;AChEA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,eAAe,mBAAO,CAAC,uDAAa;AACpC,eAAe,mBAAO,CAAC,uDAAa;AACpC,wBAAwB,mBAAO,CAAC,uEAAqB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;;;;;;;;;;ACzBA,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;AC3BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,WAAW,mBAAO,CAAC,6CAAQ;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACjCA,kBAAkB,mBAAO,CAAC,6DAAgB;AAC1C,oBAAoB,mBAAO,CAAC,iEAAkB;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;;;;;;;;;ACvBA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAKwB;AAC9B,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA,mBAAmB,8BAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,8BAAmB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B,eAAe,8BAAmB;AAClC,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA,gEAAgE,kBAAkB;AAClF;AACA,yDAAyD,cAAc;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B,gCAAgC,8BAAmB;AACnD;AACA;AACA;AACA,WAAW,8BAAmB;AAC9B,iDAAiD,iCAAiC;AAClF,0EAA0E,8BAAmB,2BAA2B,mBAAmB,EAAE;AAC7I;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD,WAAW,8BAAmB;AAC9B;AACA;AACA;AACA;AACA,UAAU,8BAAmB,iCAAiC,+DAA+D;AAC7H;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA;AACA,iBAAiB,8BAAmB,CAAC,8BAAmB;AACxD,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;AAIA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,+BAAmB;;AAEpD,+CAA+C;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,8BAA8B;AAClE;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,oBAAoB;AAC9B;AACA;;AAEA;AACA,UAAU,UAAU;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,sBAAsB;AACrD;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;AAEA;AACA,aAAa,KAAuB;AACpC,kCAAkC;AAClC,MAAM,CAGD;AACL;;AAEA,4BAA4B,YAAY,+BAAmB;;AAE3D,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;AAGtC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B,iVAAiV,g8BAAg8B,iBAAiB,6DAA6D,kEAAkE,4FAA4F,mBAAmB,2QAA2Q,sBAAsB,o8BAAo8B,4CAA4C,4BAA4B,yDAAyD,WAAW,6BAA6B;;AAE57F,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,+BAA+B,gCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,gCAAmB,2DAA2D,4BAA4B,EAAE;AAC3I,+BAA+B,gCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,gCAAmB,+DAA+D,gCAAgC,EAAE;AACnJ,+BAA+B,gCAAmB,wDAAwD,yBAAyB,EAAE;AACrI,+BAA+B,gCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,gCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,gCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,gCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,gCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,gCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+DAA+D,gCAAmB;AAClF,gEAAgE,gCAAmB;AACnF,gEAAgE,gCAAmB;AACnF,uEAAuE,gCAAmB;AAC1F,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;;;;AAKxX;;AAEA;AACA,kFAAkF;AAClF;AACA;AACA,qFAAqF;AACrF;AACA;AACA,6EAA6E,WAAW;AACxF;;AAEA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA,gBAAgB;;AAEhB;AACA;;AAEA;;AAEA;AACA,mGAAmG;AACnG,oIAAoI;AACpI;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;;AAEA;AACA,gFAAgF;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;;AAEA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,+BAA+B,gCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,gCAAmB,4DAA4D,6BAA6B,EAAE;AAC7I,+BAA+B,gCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,gCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,kFAAkF,gCAAmB;AACrG,gEAAgE,gCAAmB;AACnF,qEAAqE,gCAAmB;AACxF,2DAA2D,gCAAmB;AAC9E,gFAAgF,gCAAmB;AACnG,gEAAgE,gCAAmB;;;;;;;AAOnF;AACA,kGAAkG;;AAElG,wHAAwH;;AAExH,qDAAqD;;AAErD;AACA,sJAAsJ;;AAEtJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yFAAyF;;AAEzF,sPAAsP;;AAEtP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,sFAAsF;;AAEtF;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oFAAoF;;AAEpF,qDAAqD;;AAErD;AACA;AACA,sJAAsJ;;AAEtJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;;AAEhC;AACA,oPAAoP;;AAEpP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oFAAoF;;AAEpF;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,2DAA2D,gCAAmB;AAC9E,gFAAgF,gCAAmB;AACnG,gEAAgE,gCAAmB;AACnF,gEAAgE,gCAAmB;;AAEnF;AACA;AACA;AACA;AACA;AACA,2EAA2E,oBAAoB;AAC/F;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,wCAAwC;;AAExC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,+BAA+B,gCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,gCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,gCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+BAA+B,gCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,gCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,gEAAgE,gCAAmB;AACnF,qEAAqE,gCAAmB;AACxF,2DAA2D,gCAAmB;AAC9E,gFAAgF,gCAAmB;AACnG,gEAAgE,gCAAmB;AACnF,+DAA+D,gCAAmB;AAClF;;;;;AAKA,YAAY,oBAAoB;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+GAA+G;;AAE/G,8DAA8D;;AAE9D;AACA,yCAAyC;;AAEzC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0FAA0F;;AAE1F,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2HAA2H;AAC3H;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6GAA6G;;AAE7G;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;;AAEA;AACA,kGAAkG;;AAElG,wEAAwE;;AAExE,4CAA4C;;AAE5C;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG,EAAE;;AAEL,YAAY;AACZ;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG,eAAe;;AAElB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kMAAkM;AAClM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,+BAA+B,gCAAmB,8CAA8C,eAAe,EAAE;AACjH,8DAA8D,gCAAmB;AACjF,mFAAmF,gCAAmB;AACtG,iEAAiE,gCAAmB;AACpF,sFAAsF,gCAAmB;AACzG,iEAAiE,gCAAmB;AACpF,qEAAqE,gCAAmB;AACxF,0EAA0E,gCAAmB;AAC7F,+DAA+D,gCAAmB;AAClF,kEAAkE,gCAAmB;AACrF,+DAA+D,gCAAmB;AAClF,gEAAgE,gCAAmB;;;;;;;;;;;AAWnF;AACA;AACA;AACA;;AAEA,qDAAqD;;;AAGrD;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,4DAA4D;;AAE5D;AACA;AACA,sDAAsD;AACtD;;AAEA;AACA;;AAEA;AACA,uEAAuE;;AAEvE;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,iIAAiI;;AAEjI;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,6IAA6I;;AAE7I;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI;;AAEtI;AACA,EAAE;AACF,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,2EAA2E,gCAAmB;AAC9F,gGAAgG,gCAAmB;AACnH,6EAA6E,gCAAmB;AAChG,8EAA8E,gCAAmB;AACjG,8EAA8E,gCAAmB;AACjG,2EAA2E,gCAAmB;AAC9F;AACA;AACA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,2EAA2E,gCAAmB;;;AAG9F;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,iCAAiC;;AAEjC;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,wEAAwE,gCAAmB;AAC3F;;AAEA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,gEAAgE,gCAAmB;AACnF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,4QAA4Q;AAC5Q;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,gCAAmB;;AAEhE;AACA,gCAAmB;AACnB,+BAA+B,gCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,gCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,gCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+BAA+B,gCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,gCAAmB,2DAA2D,4BAA4B,EAAE;AAC3I,+BAA+B,gCAAmB,8DAA8D,+BAA+B,EAAE;AACjJ,+BAA+B,gCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,gCAAmB,4DAA4D,6BAA6B,EAAE;AAC7I,gEAAgE,gCAAmB;AACnF,iEAAiE,gCAAmB;AACpF,sFAAsF,gCAAmB;AACzG;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qEAAqE;;AAErE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gHAAgH;;AAEhH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B;;AAEA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb;;AAEA;AACA;AACA,qEAAqE;;AAErE,oCAAoC;;AAEpC;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG,EAAE;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,oBAAoB;;;AAGpB;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;;AAEA,kBAAkB,mBAAmB;AACrC;AACA,sOAAsO;AACtO;;AAEA;AACA;AACA,uFAAuF;AACvF,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF,qEAAqE,iCAAmB;AACxF,gEAAgE,iCAAmB;AACnF,4EAA4E,iCAAmB;AAC/F,qEAAqE,iCAAmB;AACxF,qEAAqE,iCAAmB;AACxF,gFAAgF,iCAAmB;;AAEnG;;;;;;;;;AASA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gFAAgF;;AAEhF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,8BAA8B;AAC1C;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH,6FAA6F;;AAE7F,qDAAqD;;AAErD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;;AAEA,gCAAgC;;AAEhC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yDAAyD;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,yDAAyD;;AAEzD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH,6FAA6F;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,0BAA0B;AAC1B;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2MAA2M;AAC3M;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,8DAA8D,iCAAmB;AACjF,gEAAgE,iCAAmB;AACnF,4EAA4E,iCAAmB;;AAE/F;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA,+EAA+E;;AAE/E;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,wDAAwD,yBAAyB,EAAE;AACrI,+BAA+B,iCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,qEAAqE,iCAAmB;AACxF,gEAAgE,iCAAmB;AACnF,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;;;;AAInG;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH,6FAA6F;;AAE7F;AACA,oJAAoJ;;AAEpJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,gEAAgE,iCAAmB;;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW,EAAE;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;AACnF,uEAAuE,iCAAmB;AAC1F,+DAA+D,iCAAmB;AAClF,oEAAoE,iCAAmB;AACvF,kCAAkC,iFAAiF;;AAEnH,+BAA+B,wEAAwE;;AAEvG,iCAAiC,+HAA+H;;AAEhK,kCAAkC,0BAA0B,8CAA8C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE;;;;;;;;AAQpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sDAAsD,EAAE;;AAExD,qBAAqB,oBAAoB;AACzC;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,8DAA8D,iCAAmB;AACjF,mFAAmF,iCAAmB;AACtG,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,gEAAgE,iCAAmB;AACnF,iEAAiE,iCAAmB;AACpF,6EAA6E,iCAAmB;AAChG,kGAAkG,iCAAmB;AACrH,iEAAiE,iCAAmB;AACpF,gEAAgE,iCAAmB;AACnF,gFAAgF,iCAAmB;AACnG,+DAA+D,iCAAmB;AAClF,wEAAwE,iCAAmB;;;;;;;;;AAS3F;;;;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,MAAM;AACtC;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA,MAAM;AACN;;AAEA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA,KAAK;AACL;AACA;;AAEA,qEAAqE;AACrE;;AAEA;AACA,sFAAsF;AACtF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,2DAA2D,qBAAqB;AAChF;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,GAAG;AACH,EAAE;;AAEF;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gFAAgF;;AAEhF,4FAA4F;AAC5F;;AAEA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4GAA4G;;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;;AAEA,0EAA0E,KAAK;AAC/E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG,EAAE;AACL;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,8DAA8D;AAC9D,mCAAmC,QAAQ;AAC3C;AACA;AACA,sBAAsB,uBAAuB;AAC7C;AACA;AACA;;AAEA;AACA,6BAA6B;AAC7B;AACA;;AAEA;AACA,0DAA0D;;AAE1D;AACA,oKAAoK;AACpK;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8HAA8H;AAC9H;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,8DAA8D,iCAAmB;AACjF,mFAAmF,iCAAmB;AACtG,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,gEAAgE,iCAAmB;AACnF,iEAAiE,iCAAmB;AACpF,6EAA6E,iCAAmB;AAChG,kGAAkG,iCAAmB;AACrH,iEAAiE,iCAAmB;AACpF,+DAA+D,iCAAmB;;;;;;;;;AASlF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,0NAA0N;;AAE1N;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gFAAgF;;AAEhF;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG;AACH;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,4BAA4B;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,4GAA4G;;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,qpCAAqpC;AAChqC,aAAa,orBAAorB;AACjsB;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,iC;AACrB;AACA;AACA,e;AACA;AACA;AACA,wB;AACA;AACA;AACA,4B;AACA;AACA;AACA,wB;AACA;AACA;AACA,2CAA2C,0B;AAC3C;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA,sBAAsB,mCAAmC;AACzD;AACA;AACA,mC;AACA;AACA;AACA,mB;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,WAAW,8F;AACX;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW,6F;AACX;AACA;AACA,WAAW,8F;AACX;AACA;AACA,SAAS,+C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,6C;AACT;AACA;AACA,SAAS,2C;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,kCAAkC,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,sBAAsB,mBAAmB,sKAAsK,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,EAAE,oBAAoB,eAAe,UAAU,oGAAoG,gFAAgF,GAAG,8CAA8C,8BAA8B,2BAA2B,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,8CAA8C,EAAE,UAAU,eAAe,wDAAwD,gBAAgB,UAAU,mHAAmH,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,gLAAgL,gBAAgB,wDAAwD,EAAE,4DAA4D,gBAAgB,oBAAoB,eAAe,kCAAkC,oGAAoG,oBAAoB,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,2BAA2B,4CAA4C,UAAU,EAAE,UAAU,gBAAgB,8CAA8C,EAAE,wDAAwD,eAAe,kCAAkC,iBAAiB,2BAA2B,EAAE,aAAa,EAAE,8CAA8C,eAAe,UAAU,gBAAgB,oBAAoB,gBAAgB,oBAAoB,gBAAgB,oBAAoB,0DAA0D,8CAA8C,6BAA6B,UAAU,GAAG,UAAU,EAAE,uBAAuB,yDAAyD,WAAW,8BAA8B,WAAW,8BAA8B,WAAW,iBAAiB,cAAc,gBAAgB,UAAU,4CAA4C,WAAW;AACpnF,iBAAiB,gFAAgF;AACjG;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,6HAA6H,oBAAoB,WAAW,yBAAyB,0fAA0f,EAAE,MAAM,YAAY,EAAE;AACjzB,aAAa,iBAAiB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,kBAAkB,kCAAkC,kBAAkB,qCAAqC,SAAS,kCAAkC,WAAW,2CAA2C,YAAY,kCAAkC,aAAa,kCAAkC,WAAW,kCAAkC,YAAY;AACpgB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,6BAA6B,yCAAyC,yCAAyC,iBAAiB,iDAAiD,oBAAoB,cAAc,0BAA0B,KAAK,KAAK,iBAAiB,wBAAwB,GAAG,kFAAkF,yCAAyC,8CAA8C,wBAAwB,KAAK,gBAAgB,4CAA4C,cAAc,GAAG,iBAAiB,oBAAoB,GAAG,uBAAuB,uCAAuC,4CAA4C,GAAG,uBAAuB,4CAA4C,oBAAoB,GAAG,sBAAsB,iBAAiB,oBAAoB,uCAAuC,iBAAiB,GAAG,wBAAwB,0CAA0C,oBAAoB,GAAG,eAAe,2CAA2C,oBAAoB,eAAe,GAAG,iBAAiB,wBAAwB,GAAG,qCAAqC,oDAAoD,sDAAsD,oBAAoB,GAAG,mCAAmC,oDAAoD,sDAAsD,oBAAoB,GAAG,mCAAmC,oDAAoD,sDAAsD,oBAAoB,GAAG,mCAAmC,oDAAoD,sDAAsD,oBAAoB,GAAG,iCAAiC,oDAAoD,sDAAsD,oBAAoB,GAAG,+BAA+B,oDAAoD,sDAAsD,oBAAoB,GAAG,qCAAqC,kDAAkD,sDAAsD,oBAAoB,GAAG,mCAAmC,kDAAkD,sDAAsD,oBAAoB,GAAG,oBAAoB,oBAAoB,GAAG;AACr8E;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,iEAAiE,iCAAmB;AACpF,+DAA+D,iCAAmB;AAClF,gEAAgE,iCAAmB;;;;;AAKnF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG,EAAE;;AAEL,6BAA6B;;AAE7B;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ,oIAAoI;;AAEpI;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,uFAAuF;;AAEvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA,wCAAwC;;AAExC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC,sBAAsB;AACzD,uCAAuC;AACvC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,gEAAgE,iCAAmB;AACnF,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC;AACrC;;AAEA;;AAEA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,8DAA8D,iCAAmB;AACjF,0EAA0E,iCAAmB;AAC7F,+FAA+F,iCAAmB;AAClH,8DAA8D,iCAAmB;AACjF,mFAAmF,iCAAmB;AACtG,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;AACnF,mEAAmE,iCAAmB;AACtF,+DAA+D,iCAAmB;;;;;;;;;;AAUlF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;;AAE7C,4CAA4C;;AAE5C;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA,mFAAmF;;AAEnF,4TAA4T,8DAA8D;;AAE1X,4TAA4T,8DAA8D;;AAE1X;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA;AACA;AACA,yHAAyH;;AAEzH,4DAA4D;;AAE5D,wCAAwC;;AAExC;AACA;AACA,yIAAyI;;AAEzI,sFAAsF;;AAEtF,kXAAkX;;AAElX,6HAA6H;;AAE7H;AACA,uKAAuK;;AAEvK,6HAA6H;;AAE7H;AACA,KAAK;AACL,GAAG;AACH;AACA,mEAAmE;;AAEnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;;AAEA;AACA,sSAAsS;;AAEtS;AACA;AACA,8CAA8C;;;AAG9C;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,MAAM;AAClB;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;;AAEX,gEAAgE;;AAEhE;AACA;AACA,GAAG;AACH;AACA,GAAG,uDAAuD;;AAE1D,4KAA4K;;AAE5K;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA,8DAA8D;;AAE9D;AACA,4TAA4T,sDAAsD;;AAElX,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH,wFAAwF;;AAExF,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG,EAAE;AACL;;AAEA,sGAAsG;AACtG;;AAEA;AACA,yDAAyD;AACzD;;AAEA,yBAAyB;;AAEzB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,4mBAA4mB;AACvnB,aAAa,oUAAoU;AACjV;AACA;AACA;;AAEA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE;;AAEvE;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA,wB;AACA;AACA;AACA,sB;AACA;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;AACA,mB;AACA;AACA;AACA,uBAAuB,e;AACvB;AACA;AACA,WAAW,kD;AACX;AACA;AACA,e;AACA;AACA;;AAEA,kBAAkB;AAClB,kEAAkE;;AAElE;AACA;AACA,qC;AACA;AACA;AACA,sC;AACA;AACA;AACA,qC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4C;AACA;AACA;AACA,wC;AACA;AACA;AACA,mC;AACA;AACA;AACA,iB;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,8B;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,qEAAqE,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,oCAAoC,uDAAuD,kDAAkD,8CAA8C,UAAU,EAAE,gBAAgB,EAAE,UAAU,eAAe,aAAa,EAAE,mCAAmC,EAAE,0BAA0B,uEAAuE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,mCAAmC,EAAE,gBAAgB,EAAE,UAAU,EAAE,kCAAkC,8BAA8B,UAAU,EAAE,0BAA0B,gBAAgB,UAAU,8BAA8B,UAAU;AAC38B,iBAAiB,mEAAmE;AACpF;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,W;AAC7B;AACA;AACA;AACA,mB;AACA;AACA;AACA;AACA,yBAAyB,W;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,gGAAgG,qEAAqE,mCAAmC,cAAc,uCAAuC,aAAa;AAC9Y,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,UAAU,2CAA2C,YAAY;AACnO,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,0BAA0B,wCAAwC,8CAA8C,KAAK,wBAAwB,oBAAoB,8CAA8C,KAAK,yBAAyB,oBAAoB,8CAA8C,KAAK,6BAA6B,+CAA+C,mBAAmB,2DAA2D,cAAc,uBAAuB,SAAS,KAAK,2BAA2B,+CAA+C,OAAO;AACllB;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;;;AAGzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC,4DAA4D;;AAE5D,0CAA0C;;AAE1C,wCAAwC;;AAExC,wCAAwC;;AAExC,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,6DAA6D,8BAA8B,EAAE;AAC/I,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,wDAAwD,yBAAyB,EAAE;AACrI,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,+DAA+D,iCAAmB;AAClF,gEAAgE,iCAAmB;AACnF,uEAAuE,iCAAmB;AAC1F,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,kCAAkC,iFAAiF;;AAEnH,+BAA+B,wEAAwE;;AAEvG,iCAAiC,+HAA+H;;AAEhK,kCAAkC,0BAA0B,8CAA8C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE;;;;;;;;AAQpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,mGAAmG;;AAEnG;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6GAA6G;;AAE7G;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,mBAAmB;AAChC,eAAe,iBAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,oDAAoD,EAAE;;AAEtD,mBAAmB,oBAAoB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,oBAAoB,aAAa,mBAAmB,wBAAwB,UAAU,aAAa;AACnG;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mFAAmF;AACnF,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA;;AAEA,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF,qEAAqE,iCAAmB;AACxF,0FAA0F,iCAAmB;AAC7G,gEAAgE,iCAAmB;AACnF,gFAAgF,iCAAmB;AACnG,6FAA6F,iCAAmB;AAChH,kHAAkH,iCAAmB;AACrI,gEAAgE,iCAAmB;AACnF,uEAAuE,iCAAmB;AAC1F,+DAA+D,iCAAmB;;;;;;;;;;;AAWlF;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA;;AAEA,kGAAkG;;AAElG,yEAAyE;;AAEzE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,iBAAiB,mBAAmB;AACxE;;AAEA;AACA;AACA;AACA,8CAA8C,UAAU;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,yCAAyC,OAAO,uBAAuB,cAAc,MAAM,YAAY,IAAI,UAAU;AACrH,QAAQ;;;AAGR;AACA;;AAEA;AACA,uDAAuD,qBAAqB,UAAU;AACtF;;AAEA,yEAAyE;;AAEzE;AACA,6EAA6E;;AAE7E;AACA,GAAG;AACH;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;;AAEA,qBAAqB,KAAK;AAC1B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA,gCAAgC,QAAQ;AACxC,sBAAsB,sBAAsB;AAC5C;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8HAA8H;;AAE9H,6EAA6E;;AAE7E;AACA;;AAEA,mBAAmB,mBAAmB;AACtC,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA,8CAA8C,6CAA6C;;AAE3F;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF,qEAAqE,iCAAmB;AACxF,0FAA0F,iCAAmB;AAC7G,gEAAgE,iCAAmB;AACnF,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,6FAA6F,iCAAmB;AAChH,kHAAkH,iCAAmB;AACrI,gEAAgE,iCAAmB;AACnF,uEAAuE,iCAAmB;AAC1F,+DAA+D,iCAAmB;AAClF,0EAA0E,iCAAmB;;;;;;;;;;;;AAY7F;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;AACA;;AAEA,kGAAkG;;AAElG,yEAAyE;;AAEzE;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,6BAA6B,iBAAiB,mBAAmB;AACjE;;AAEA;AACA,wCAAwC;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;;AAEA;AACA,2DAA2D,qBAAqB;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA,GAAG;AACH;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;;AAEhE;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;;AAEA,qBAAqB,KAAK;AAC1B;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA,gCAAgC,QAAQ;AACxC;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB;AACA,4BAA4B;;AAE5B,gFAAgF;;AAEhF;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,wGAAwG;;AAExG;AACA;AACA,4BAA4B;;AAE5B,6EAA6E;;AAE7E,aAAa,sBAAsB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,0BAA0B;AAChD;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA,8CAA8C,6CAA6C;;AAE3F;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,WAAW;AACX;;AAEA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,ytDAAytD;AACpuD,aAAa,2/BAA2/B;AACxgC;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,qC;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8CAA8C,WAAW,qD;AACrG;AACA;AACA,8CAA8C,gDAAgD,WAAW,yD;AACzG;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA,gCAAgC;AAChC;AACA;AACA,kCAAkC,qDAAqD;AACvF;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,uBAAuB;AACvB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,qCAAqC;AACvD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,uCAAuC;AACzD;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,8CAA8C;AAChE;AACA;AACA,kBAAkB,4CAA4C;AAC9D;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,iDAAiD,EAAE,MAAM,EAAE,QAAQ,EAAE,kDAAkD,YAAY,MAAM,GAAG,eAAe,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,SAAS,EAAE,QAAQ,EAAE,yQAAyQ,EAAE,sBAAsB,6DAA6D,uCAAuC,sFAAsF,0DAA0D,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oCAAoC,eAAe,aAAa,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,2KAA2K,eAAe,WAAW,gBAAgB,wOAAwO,mPAAmP,2BAA2B,EAAE,kBAAkB,yDAAyD,WAAW,eAAe,cAAc,iBAAiB,4IAA4I,yDAAyD,6BAA6B,GAAG,+RAA+R,gJAAgJ,+RAA+R,aAAa,OAAO,gBAAgB,QAAQ,GAAG,yJAAyJ,EAAE,6BAA6B,EAAE,yJAAyJ,EAAE,8IAA8I,eAAe,sBAAsB,gBAAgB,WAAW,iBAAiB,mJAAmJ,iBAAiB,WAAW,mSAAmS,gIAAgI,EAAE,+RAA+R,EAAE,0SAA0S,EAAE,+RAA+R,EAAE,+RAA+R,EAAE,+RAA+R,EAAE,+RAA+R,EAAE,0SAA0S,EAAE,+RAA+R,EAAE,+RAA+R,EAAE,+RAA+R,+BAA+B,aAAa,EAAE,SAAS,2CAA2C,cAAc,gBAAgB,WAAW,GAAG,WAAW,EAAE,+RAA+R,EAAE,2RAA2R,qWAAqW,sTAAsT,EAAE,4QAA4Q,EAAE,cAAc,EAAE,mJAAmJ,EAAE,WAAW,EAAE,WAAW,EAAE,sBAAsB,kBAAkB,WAAW,EAAE,mJAAmJ,EAAE,mJAAmJ,EAAE,WAAW,eAAe,WAAW,GAAG,sBAAsB,EAAE,WAAW,kBAAkB,sBAAsB,eAAe,0HAA0H,GAAG,2RAA2R,EAAE,+RAA+R,EAAE,2RAA2R,EAAE,2RAA2R,EAAE,2RAA2R,EAAE,2RAA2R,EAAE,2RAA2R,EAAE,2RAA2R,EAAE,+RAA+R,EAAE,2RAA2R,EAAE,sSAAsS,EAAE,sSAAsS,EAAE,2BAA2B,eAAe,QAAQ,+BAA+B,2RAA2R,+BAA+B,+RAA+R,aAAa,OAAO,iBAAiB,sIAAsI,EAAE,kHAAkH,EAAE,kHAAkH,EAAE,6HAA6H,EAAE,6HAA6H,EAAE,WAAW,EAAE,kHAAkH,EAAE,kHAAkH,EAAE,8IAA8I,gBAAgB,WAAW,gBAAgB,WAAW,+CAA+C,WAAW,gCAAgC,2RAA2R,sFAAsF,2RAA2R,2JAA2J,2RAA2R,EAAE,4QAA4Q,8BAA8B,QAAQ,kBAAkB,oGAAoG,iNAAiN,QAAQ,iBAAiB,QAAQ,GAAG,WAAW,gBAAgB,QAAQ,GAAG,WAAW,+BAA+B,QAAQ,gBAAgB,QAAQ,gBAAgB,wIAAwI,iBAAiB,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,2BAA2B,gBAAgB,2GAA2G,kBAAkB,8IAA8I,EAAE,8IAA8I,uEAAuE,OAAO,kBAAkB,oGAAoG,iBAAiB,mJAAmJ,iBAAiB,mJAAmJ,GAAG,4QAA4Q,EAAE,kHAAkH,EAAE,kHAAkH,8BAA8B,QAAQ,iBAAiB,QAAQ;AACz9jB,iBAAiB,mCAAmC;AACpD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,WAAW;AACX;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA,2BAA2B,Y;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,iBAAiB,8BAA8B,mBAAmB,yBAAyB,mBAAmB,kqBAAkqB,mzJAAmzJ,UAAU;AAC9lL,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,WAAW,6BAA6B,QAAQ,6DAA6D,WAAW,gCAAgC,YAAY;AACvjB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,kBAAkB,kDAAkD,qEAAqE,KAAK,yBAAyB,4CAA4C,KAAK,yBAAyB,6CAA6C,KAAK,wBAAwB,oEAAoE,qEAAqE,KAAK,sFAAsF,yCAAyC,8CAA8C,wBAAwB,KAAK,oBAAoB,yBAAyB,KAAK,qBAAqB,sBAAsB,KAAK,sBAAsB,gDAAgD,KAAK,uBAAuB,6CAA6C,0BAA0B,KAAK,uBAAuB,6CAA6C,iBAAiB,KAAK,kBAAkB,iEAAiE,YAAY,qBAAqB,mEAAmE,uDAAuD,OAAO,yBAAyB,KAAK,qBAAqB,4CAA4C,iDAAiD,wBAAwB,KAAK,qBAAqB,4CAA4C,KAAK,qBAAqB,6CAA6C,KAAK,qBAAqB,gDAAgD,QAAQ,0BAA0B,yBAAyB,yBAAyB,uBAAuB,mBAAmB,mDAAmD,sBAAsB,qDAAqD,qDAAqD,yBAAyB,2BAA2B,mBAAmB,KAAK;AAC9+D;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,+DAA+D,gCAAgC,EAAE;AACnJ,+BAA+B,iCAAmB,4DAA4D,6BAA6B,EAAE;AAC7I,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,oEAAoE,iCAAmB;AACvF,yFAAyF,iCAAmB;AAC5G,gFAAgF,iCAAmB;AACnG,qGAAqG,iCAAmB;AACxH,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;AAClF,oEAAoE,iCAAmB;AACvF,kCAAkC,iFAAiF;;AAEnH,+BAA+B,wEAAwE;;AAEvG,iCAAiC,+HAA+H;;AAEhK,kCAAkC,0BAA0B,8CAA8C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE;;;;;;;;AAQpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA,mBAAmB;;AAEnB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,gBAAgB;;AAEhB;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,gBAAgB;;AAEhB;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,oDAAoD,EAAE;;AAEtD,mBAAmB,oBAAoB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,sDAAsD,GAAG;AACzD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA,sDAAsD,GAAG;AACzD;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,sEAAsE,iCAAmB;AACzF,2FAA2F,iCAAmB;AAC9G,uEAAuE,iCAAmB;AAC1F,iEAAiE,iCAAmB;AACpF,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;;;;;AAOlF;AACA,kCAAkC;AAClC;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qFAAqF;;AAErF,kFAAkF;;AAElF;AACA,0FAA0F;;AAE1F;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA,kCAAkC;;AAElC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;;AAEA;AACA,KAAK,EAAE;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2CAA2C;;AAE3C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oPAAoP;AACpP;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,yBAAyB;AAC9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0DAA0D;AAC1D;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA,uBAAuB;;AAEvB,iBAAiB;;AAEjB;AACA,6CAA6C;AAC7C;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,+hBAA+hB;AAC1iB,aAAa,oVAAoV;AACjW;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,aAAa;AACb;AACA;AACA,oCAAoC;AACpC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,qCAAqC;AACrC;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB;AAClB;AACA;AACA,kBAAkB,2CAA2C;AAC7D;AACA;AACA,kBAAkB,+CAA+C;AACjE;AACA;AACA,kBAAkB,yCAAyC;AAC3D;AACA;AACA,kBAAkB,6CAA6C;AAC/D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,iC;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,EAAE,0BAA0B,cAAc,IAAI,GAAG,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,oIAAoI,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,mGAAmG,yJAAyJ,UAAU,gBAAgB,oBAAoB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,oBAAoB,gBAAgB,UAAU,iBAAiB,aAAa,EAAE,UAAU,eAAe,UAAU,8BAA8B,UAAU,GAAG,UAAU;AAC33B,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,qBAAqB,8TAA8T,2EAA2E,2BAA2B,6BAA6B,qDAAqD,2BAA2B,kBAAkB,kBAAkB;AAC3rB,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,iBAAiB,kCAAkC,iBAAiB,qCAAqC,SAAS,kCAAkC,UAAU,kCAAkC,YAAY;AAC/Z,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,kCAAkC,gEAAgE,8CAA8C,KAAK,gBAAgB,mBAAmB,mBAAmB,KAAK,iBAAiB,gDAAgD,KAAK,iBAAiB,kDAAkD,KAAK,+BAA+B,oDAAoD,mBAAmB,KAAK,sBAAsB,4CAA4C,KAAK,sBAAsB,4CAA4C,KAAK,sBAAsB,4CAA4C,KAAK,sBAAsB,4CAA4C,KAAK,qBAAqB,yBAAyB,uDAAuD,2BAA2B,8DAA8D,8CAA8C,OAAO,8CAA8C,6CAA6C,mBAAmB,kCAAkC,YAAY,qDAAqD,6CAA6C,OAAO,KAAK,kBAAkB,sBAAsB,KAAK,sCAAsC,iBAAiB,kDAAkD,wBAAwB,KAAK,+DAA+D,sBAAsB,KAAK,iBAAiB,0BAA0B,8DAA8D,8CAA8C,KAAK,qCAAqC,uDAAuD,QAAQ,6BAA6B,mDAAmD,yBAAyB,uDAAuD,8DAA8D,8CAA8C,OAAO,4BAA4B,mDAAmD,uBAAuB,uDAAuD,KAAK,uDAAuD,sBAAsB,KAAK,yBAAyB,sBAAsB,mEAAmE,wBAAwB,KAAK,sCAAsC,sBAAsB,mEAAmE,wBAAwB,KAAK,uCAAuC,sBAAsB,mEAAmE,wBAAwB,KAAK,iHAAiH,+CAA+C,KAAK,+CAA+C,8CAA8C,mDAAmD,KAAK,kDAAkD,sDAAsD,KAAK,+CAA+C,sDAAsD,KAAK,gFAAgF,oDAAoD,yDAAyD,KAAK,uEAAuE,8DAA8D,KAAK,2EAA2E,uDAAuD,kDAAkD,sBAAsB,KAAK,+DAA+D,8DAA8D,KAAK,uFAAuF,mDAAmD,8CAA8C,sBAAsB,KAAK,uEAAuE,mDAAmD,oDAAoD,sBAAsB,KAAK,+DAA+D,mDAAmD,kDAAkD,sBAAsB,sBAAsB,kCAAkC,KAAK,kBAAkB,8CAA8C,KAAK,sBAAsB,yBAAyB,KAAK,6EAA6E,8DAA8D,KAAK,uFAAuF,8DAA8D,KAAK,kBAAkB,0BAA0B,sBAAsB,+CAA+C,8DAA8D,8CAA8C,KAAK;AACpoK;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,iCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,6DAA6D,8BAA8B,EAAE;AAC/I,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,iCAAmB,wDAAwD,yBAAyB,EAAE;AACrI,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;AAGlF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,qEAAqE,iCAAmB;AACxF,yEAAyE,iCAAmB;AAC5F,8FAA8F,iCAAmB;AACjH,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;;;;AAMlF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0GAA0G;;AAE1G;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,uSAAuS;AAClT,aAAa,0JAA0J;AACvK;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,QAAQ,cAAc,gBAAgB,gBAAgB,sBAAsB,EAAE,QAAQ,EAAE,gFAAgF,eAAe,SAAS,eAAe,UAAU,gBAAgB,0BAA0B,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,0BAA0B,EAAE,QAAQ,eAAe,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,oBAAoB,EAAE,UAAU,EAAE,UAAU;AAC1lB,iBAAiB,2GAA2G;AAC5H;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW,kCAAkC,WAAW,kCAAkC,YAAY;AACnH,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,4DAA4D,sBAAsB,uBAAuB,8DAA8D,8CAA8C,KAAK;AAC1N;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,gEAAgE,iCAAmB;AACnF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF,qEAAqE,iCAAmB;AACxF,0FAA0F,iCAAmB;AAC7G,gEAAgE,iCAAmB;AACnF;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uFAAuF;;AAEvF;AACA,6EAA6E;;AAE7E;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,mHAAmH;AAC9H,aAAa,gDAAgD;AAC7D;AACA;AACA;;AAEA;AACA;AACA;AACA,W;AACA;AACA;;AAEA;AACA;AACA,kB;AACA;AACA;AACA,CAAC;AACD,SAAS,YAAY,EAAE,MAAM,cAAc,IAAI,GAAG,iCAAiC,EAAE,QAAQ;AAC7F,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,aAAa,WAAW;AACxB,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,wOAAwO,mHAAmH;AACtW,aAAa,2FAA2F,2FAA2F;AACnM;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iD;AACA;AACA;AACA,sBAAsB,oB;AACtB;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,+B;AACrB;AACA;AACA,CAAC;AACD,SAAS,mDAAmD,EAAE,MAAM,EAAE,oDAAoD,EAAE,oDAAoD,cAAc,KAAK,6CAA6C,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,cAAc,uDAAuD,GAAG,uBAAuB,iCAAiC,0BAA0B,EAAE,UAAU,EAAE,UAAU,8BAA8B,gBAAgB,uDAAuD,aAAa,EAAE,UAAU;AAChlB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,U;AAC7B;AACA,yBAAyB,sB;AACzB;AACA,8B;AACA;AACA,yB;AACA;AACA,sB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB;AACrI,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,UAAU,+BAA+B,WAAW,kCAAkC,YAAY;AACrT,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,gEAAgE,iCAAmB;AACnF,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,+DAA+D,iCAAmB;AAClF,oEAAoE,iCAAmB;AACvF,yFAAyF,iCAAmB;AAC5G,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;AAClF;AACA;AACA;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;;AAExF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8GAA8G;;AAE9G,gEAAgE;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE;;AAEP,4IAA4I;;AAE5I;AACA;AACA,KAAK;AACL,kFAAkF;;AAElF,2GAA2G;;AAE3G;AACA;AACA,KAAK,6EAA6E;AAClF;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL,2HAA2H;;AAE3H;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,yBAAyB,0BAA0B,sBAAsB,kDAAkD,mDAAmD,KAAK,YAAY,mDAAmD,2CAA2C,qBAAqB,KAAK,kBAAkB,mDAAmD,mDAAmD,sBAAsB,KAAK;AAC1c;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,6iCAA6iC;AACxjC,aAAa,yrBAAyrB;AACtsB;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,+B;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0B;AACA;AACA;AACA,4B;AACA;AACA;AACA,4B;AACA;AACA;AACA,oC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;AACA;AACA;AACA,kC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,SAAS,yBAAyB,EAAE,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,8GAA8G,EAAE,uBAAuB,mBAAmB,SAAS,EAAE,8GAA8G,EAAE,8GAA8G,EAAE,8GAA8G,EAAE,8GAA8G,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,oBAAoB,+HAA+H,gBAAgB,eAAe,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,uDAAuD,EAAE,uDAAuD,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,oGAAoG,UAAU,eAAe,+CAA+C,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,oBAAoB,gBAAgB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,+CAA+C,8BAA8B,UAAU,EAAE,UAAU,EAAE,iCAAiC,4CAA4C,oBAAoB,EAAE,0BAA0B,EAAE,oCAAoC,EAAE,8CAA8C,gBAAgB,0BAA0B,EAAE,2BAA2B,gBAAgB,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,gDAAgD,EAAE,kCAAkC,EAAE,kCAAkC;AAC95E,iBAAiB,qPAAqP;AACtQ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8B;AACA;AACA,yB;AACA;AACA,0B;AACA;AACA,wCAAwC;AACxC;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yHAAyH,WAAW,qoBAAqoB;AACh2B,aAAa,mBAAmB,6BAA6B,kBAAkB,gCAAgC,mBAAmB,gCAAgC,mBAAmB,8BAA8B,cAAc,6BAA6B,UAAU,6BAA6B,WAAW,kCAAkC,YAAY;AAC9V,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;AACnF,oEAAoE,iCAAmB;;;;AAIvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,8DAA8D,iCAAmB;AACjF,mFAAmF,iCAAmB;AACtG,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;AAClF,uEAAuE,iCAAmB;AAC1F,mFAAmF,iCAAmB;AACtG,wGAAwG,iCAAmB;AAC3H,uEAAuE,iCAAmB;AAC1F,4EAA4E,iCAAmB;;;;;;;;;;;AAW/F;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gRAAgR;AAChR;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,4KAA4K;AAC5K;AACA;AACA;AACA;AACA;;AAEA;AACA,2QAA2Q;AAC3Q;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA,4QAA4Q,gDAAgD;;AAE5T,6CAA6C;;AAE7C;AACA;;AAEA;AACA;AACA,oEAAoE;;AAEpE;AACA;AACA,GAAG;AACH;AACA,GAAG,EAAE;;AAEL;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA;AACA;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,g1BAAg1B;AAC31B,aAAa,yhBAAyhB;AACtiB;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,c;AAClB;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,W;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS,+BAA+B;AACxC;AACA;;AAEA,oBAAoB,0FAA0F;AAC9G,iBAAiB,qEAAqE;AACtF;AACA;AACA;;AAEA,oBAAoB,wFAAwF;AAC5G,iBAAiB,oFAAoF;AACrG;AACA;AACA;;AAEA,oBAAoB,uFAAuF;AAC3G,iBAAiB,mFAAmF;AACpG;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;;AAEA;AACA,oBAAoB,uFAAuF;AAC3G;AACA;AACA,iBAAiB,gDAAgD;AACjE;AACA;AACA;AACA,4BAA4B,gFAAgF,W;AAC5G;AACA;AACA,4BAA4B,kFAAkF,W;AAC9G;AACA;;AAEA,uBAAuB,sEAAsE;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,qFAAqF;AAC5G;AACA;AACA,6B;AACA;AACA;AACA,iB;AACA;AACA;AACA,8B;AACA;AACA;AACA,+B;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,gBAAgB;AAChB;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H,eAAe;AACf;AACA;AACA;AACA,8BAA8B,4FAA4F;AAC1H;AACA;AACA,QAAQ;AACR;AACA;AACA,iC;AACA;AACA;AACA,kC;AACA;AACA;AACA,4B;AACA;AACA;AACA,6B;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA,kC;AACA;AACA;AACA,mC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,oC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,uDAAuD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,sJAAsJ,EAAE,uBAAuB,iCAAiC,6HAA6H,4BAA4B,aAAa,EAAE,SAAS,gBAAgB,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,gBAAgB,sFAAsF,EAAE,oCAAoC,iDAAiD,SAAS,EAAE,gBAAgB,EAAE,SAAS,eAAe,mBAAmB,gBAAgB,SAAS,EAAE,SAAS,gBAAgB,SAAS,EAAE,SAAS,YAAY,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,WAAW,aAAa,WAAW,GAAG,iCAAiC,kHAAkH,aAAa,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,gBAAgB,aAAa,EAAE,UAAU,EAAE,UAAU,0DAA0D,wJAAwJ,EAAE,wJAAwJ,EAAE,wJAAwJ,EAAE,UAAU,EAAE,kKAAkK,EAAE,UAAU,EAAE,kKAAkK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,SAAS,EAAE,UAAU,0DAA0D,WAAW,gBAAgB,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,wCAAwC,YAAY,aAAa,YAAY,GAAG,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAC5vF,iBAAiB,yKAAyK;AAC1L;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,W;AAC1B;AACA,wCAAwC,qBAAqB,W;AAC7D;AACA,yBAAyB,iBAAiB,oBAAoB,W;AAC9D;AACA,yBAAyB,iBAAiB,U;AAC1C;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,W;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,W;AAC1B;AACA,0BAA0B,W;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,W;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,uFAAuF,oBAAoB,kDAAkD,iCAAiC,sKAAsK,8MAA8M,qBAAqB,yCAAyC,4IAA4I;AACn1B,aAAa,kBAAkB,gCAAgC,mBAAmB,kCAAkC,kBAAkB,kCAAkC,OAAO,mCAAmC,UAAU,sCAAsC,SAAS,mCAAmC,YAAY;AAC1T,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,iCAAmB,6DAA6D,8BAA8B,EAAE;AAC/I,+BAA+B,iCAAmB,2DAA2D,4BAA4B,EAAE;AAC3I,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;;;;AAInF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;;AAE9D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,iEAAiE,iCAAmB;AACpF,gEAAgE,iCAAmB;AACnF,gFAAgF,iCAAmB;AACnG,qGAAqG,iCAAmB;AACxH,uEAAuE,iCAAmB;AAC1F,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;;;;;;;AASlF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,cAAc;;AAEd;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qDAAqD;AAC1E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;;AAE9B,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC,qCAAqC;;AAErC;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF;;AAElF;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,KAAK;;;AAGL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA,qCAAqC;;;AAGrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA,4CAA4C;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,kBAAkB,8CAA8C,0CAA0C,KAAK,0BAA0B,gDAAgD,mBAAmB,KAAK,mBAAmB,kDAAkD,KAAK,qBAAqB,wBAAwB,6BAA6B,+CAA+C,KAAK,qBAAqB,wBAAwB,6BAA6B,+CAA+C,KAAK,uBAAuB,6CAA6C,+CAA+C,KAAK,uBAAuB,qDAAqD,KAAK,uBAAuB,6CAA6C,KAAK,uBAAuB,6CAA6C,+CAA+C,KAAK,oBAAoB,iDAAiD,mDAAmD,KAAK,iBAAiB,uDAAuD,kDAAkD,KAAK,sCAAsC,gDAAgD,mBAAmB,KAAK,oCAAoC,+CAA+C,mBAAmB,KAAK,iBAAiB,wBAAwB,6BAA6B,uDAAuD,qDAAqD,KAAK,aAAa,wBAAwB,mDAAmD,8CAA8C,KAAK,oCAAoC,+CAA+C,mBAAmB,KAAK,oBAAoB,oDAAoD,yDAAyD,KAAK,oBAAoB,oDAAoD,yDAAyD,KAAK,oBAAoB,oDAAoD,yDAAyD,KAAK;AACrrE;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,qDAAqD,sBAAsB,EAAE;AAC/H,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+BAA+B,iCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,iCAAmB,6DAA6D,8BAA8B,EAAE;AAC/I,+BAA+B,iCAAmB,4DAA4D,6BAA6B,EAAE;AAC7I,+BAA+B,iCAAmB,4DAA4D,6BAA6B,EAAE;AAC7I,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,uEAAuE,iCAAmB;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,+PAA+P;AAC/P;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0OAA0O;AAC1O;AACA;AACA;AACA;;AAEA;AACA;AACA,qKAAqK;;AAErK,qKAAqK;;AAErK,0KAA0K;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,2CAA2C,YAAY,EAAE;AAC3G,+BAA+B,iCAAmB,2CAA2C,YAAY,EAAE;AAC3G,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,+aAA+a,qJAAqJ;AAC/kB,aAAa,6PAA6P,6HAA6H;AACvY;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,yBAAyB,c;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,UAAU;AACtD;AACA;AACA,6DAA6D,UAAU;AACvE;AACA;;AAEA,2CAA2C,iCAAiC;AAC5E,gBAAgB,4BAA4B,gEAAgE,UAAU;;AAEtH;AACA;;AAEA,sEAAsE;AACtE,gBAAgB,4BAA4B,gEAAgE,UAAU,+DAA+D;;AAErL;AACA;;;AAGA,2EAA2E;AAC3E,gBAAgB;;AAEhB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;;AAGhB;AACA;;AAEA,kFAAkF;AAClF,iBAAiB;;AAEjB;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,4GAA4G;AAC5G,gBAAgB,2CAA2C;;AAE3D;AACA;AACA;AACA;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,iC;AACrB;AACA;AACA,CAAC;AACD,SAAS,sCAAsC,EAAE,MAAM,EAAE,sCAAsC,EAAE,sCAAsC,EAAE,uCAAuC,iDAAiD,KAAK,GAAG,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,4HAA4H,EAAE,uBAAuB,iCAAiC,mGAAmG,yCAAyC,oBAAoB,iBAAiB,UAAU,eAAe,UAAU,GAAG,UAAU,4CAA4C,oCAAoC,0DAA0D,gBAAgB,2CAA2C,oBAAoB,0BAA0B,KAAK,GAAG,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,eAAe,UAAU,GAAG,8HAA8H,eAAe,UAAU,GAAG,UAAU,EAAE,UAAU,sDAAsD,KAAK,+BAA+B,8HAA8H;AACh7C,iBAAiB,gEAAgE;AACjF;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC,a;AAC1E;AACA;AACA;AACA;AACA;AACA,iC;AACA;AACA,wBAAwB,yCAAyC,0CAA0C;AAC3G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA,wBAAwB,yCAAyC,yCAAyC;AAC1G;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA,wBAAwB,uCAAuC;AAC/D;AACA;AACA;AACA,wDAAwD;AACxD;AACA,oDAAoD;AACpD;AACA;AACA;AACA,wBAAwB,yBAAyB,2CAA2C;AAC5F;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA,4BAA4B,W;AAC5B;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB,0BAA0B;AACnD;AACA,yBAAyB;AACzB;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,8CAA8C;AACtE;AACA,yBAAyB,4BAA4B,6CAA6C;AAClG;AACA,yBAAyB,mDAAmD,2CAA2C;AACvH;AACA,yBAAyB,mDAAmD,6CAA6C;AACzH;AACA,4DAA4D,W;AAC5D;AACA,4DAA4D,W;AAC5D;AACA,qDAAqD,Y;AACrD;AACA,iDAAiD;AACjD;AACA,2CAA2C;AAC3C;AACA,wCAAwC,uCAAuC,a;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,0BAA0B,oBAAoB,0RAA0R,6CAA6C,wBAAwB,WAAW,gLAAgL,oJAAoJ,qBAAqB;AACx0B,aAAa,QAAQ,iCAAiC,oBAAoB,iCAAiC,kBAAkB,qCAAqC,mBAAmB,qCAAqC,mBAAmB,mCAAmC,WAAW,4DAA4D,qBAAqB,+BAA+B,kBAAkB,qCAAqC,cAAc,kCAAkC,YAAY,+BAA+B,SAAS,qCAAqC,UAAU,kCAAkC,UAAU,6BAA6B,aAAa,+BAA+B,iBAAiB,kCAAkC,eAAe,6BAA6B,UAAU,4DAA4D,OAAO,iCAAiC,YAAY;AACn6B,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,qEAAqE,iCAAmB;AACxF,iEAAiE,iCAAmB;AACpF,+DAA+D,iCAAmB;AAClF,uEAAuE,iCAAmB;AAC1F,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;;;;;;;AAOnF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,8GAA8G;;AAE9G;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;;AAE7C;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC;;AAEpC,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+FAA+F;;AAE/F;AACA;AACA,kGAAkG;;AAElG;AACA,yLAAyL;;AAEzL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,gEAAgE;AACzH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG,EAAE;;AAEL,6BAA6B;;AAE7B;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,oDAAoD,qBAAqB,EAAE;AAC7H,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;AAClF,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;;;;;;AAOxX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,eAAe;;AAEzF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB;;AAEnB;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;;;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,iEAAiE,iCAAmB;AACpF,6EAA6E,iCAAmB;AAChG,kGAAkG,iCAAmB;AACrH,gEAAgE,iCAAmB;AACnF,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;;;;;;;AASlF;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,+DAA+D;;AAE/D,qBAAqB;;AAErB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,iGAAiG;;AAEjG,0FAA0F;;AAE1F;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA,+GAA+G;;AAE/G;AACA;AACA,4BAA4B;;AAE5B;AACA;;AAEA,mBAAmB,mBAAmB;AACtC,4BAA4B;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,8DAA8D,iCAAmB;AACjF,mFAAmF,iCAAmB;AACtG,iEAAiE,iCAAmB;AACpF,sFAAsF,iCAAmB;AACzG,gEAAgE,iCAAmB;AACnF,iEAAiE,iCAAmB;AACpF,uEAAuE,iCAAmB;AAC1F,6EAA6E,iCAAmB;AAChG,kGAAkG,iCAAmB;AACrH,gEAAgE,iCAAmB;AACnF,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;;;;;AAOlF;;;;;AAKA,kHAAkH;;AAElH;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,iFAAiF;;AAEjF;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;;AAEA,GAAG,EAAE;;AAEL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,wCAAwC,sCAAsC;AAC9E;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG;;AAEpG;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;;AAGP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,6BAA6B,yCAAyC,iBAAiB,oBAAoB,GAAG,qBAAqB,yCAAyC,iBAAiB,oBAAoB,KAAK,6BAA6B,wBAAwB,0CAA0C,GAAG,uBAAuB,uCAAuC,4CAA4C,GAAG,uBAAuB,2CAA2C,oBAAoB,GAAG,iBAAiB,2CAA2C,oBAAoB,eAAe,GAAG,2BAA2B,0CAA0C,yBAAyB,+BAA+B,kBAAkB,yBAAyB,iBAAiB,iDAAiD,4CAA4C,YAAY,kBAAkB,mBAAmB,sBAAsB,KAAK,GAAG,sBAAsB,iBAAiB,oBAAoB,uCAAuC,iBAAiB,GAAG,4BAA4B,6CAA6C,iBAAiB,GAAG,0BAA0B,iDAAiD,GAAG,yBAAyB,kDAAkD,GAAG,sBAAsB,0CAA0C,oBAAoB,sBAAsB,GAAG,8BAA8B,yCAAyC,kBAAkB,GAAG,0BAA0B,kDAAkD,4CAA4C,wBAAwB,oBAAoB,0CAA0C,+CAA+C,wBAAwB,gBAAgB,uCAAuC,4CAA4C,sBAAsB,GAAG,yBAAyB,yCAAyC,GAAG,gCAAgC,uCAAuC,4CAA4C,sBAAsB,GAAG,gCAAgC,0CAA0C,GAAG,sCAAsC,YAAY,YAAY,GAAG,gCAAgC,4CAA4C,GAAG,sCAAsC,YAAY,YAAY,GAAG,qDAAqD,0CAA0C,GAAG,yDAAyD,kBAAkB,GAAG,kCAAkC,SAAS,SAAS,GAAG,oCAAoC,YAAY,YAAY,GAAG,oCAAoC,4BAA4B,iFAAiF,GAAG,gBAAgB,wBAAwB,GAAG,6BAA6B,4CAA4C,iDAAiD,sBAAsB,UAAU,UAAU,GAAG,2BAA2B,4CAA4C,iDAAiD,sBAAsB,UAAU,UAAU,GAAG,6BAA6B,6CAA6C,GAAG,mCAAmC,8CAA8C,GAAG,sCAAsC,yCAAyC,2CAA2C,oBAAoB,GAAG;AACh+G;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,6CAA6C,cAAc,EAAE;AAC/G,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,oEAAoE,iCAAmB;AACvF,gEAAgE,iCAAmB;AACnF,kCAAkC,iFAAiF;;AAEnH,+BAA+B,wEAAwE;;AAEvG,iCAAiC,+HAA+H;;AAEhK,kCAAkC,0BAA0B,8CAA8C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE;;;;AAIpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,+BAA+B,iCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,wEAAwE,iCAAmB;AAC3F,6FAA6F,iCAAmB;AAChH,mEAAmE,iCAAmB;AACtF,iEAAiE,iCAAmB;AACpF,gEAAgE,iCAAmB;AACnF,+DAA+D,iCAAmB;;;;;;;AAOlF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iFAAiF;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4GAA4G;;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,cAAc;;AAEd;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,iBAAiB,kBAAkB;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA,KAAK,IAAI,EAAE;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,iCAAiC,iCAAmB;;AAEpD,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA,eAAe,kCAAkC;AACjD,iBAAiB,kCAAkC;AACnD;AACA;AACA;AACA,qBAAqB,IAAI;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mJAAmJ;AACnJ,SAAS;;AAET;AACA;AACA,qBAAqB,+BAA+B;AACpD;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW,YAAY,IAAI,WAAW,SAAS;AACvE,cAAc,0BAA0B,EAAE;AAC1C,MAAM;AACN,WAAW,8VAA8V;AACzW,aAAa,gMAAgM;AAC7M;AACA;AACA;;AAEA;AACA;AACA;AACA,iB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,gCAAgC;AAChC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,uBAAuB,qB;AACvB;AACA;AACA,6C;AACA;AACA;AACA,2CAA2C,4C;AAC3C;AACA;AACA,qBAAqB,mC;AACrB;AACA;AACA,CAAC;AACD,SAAS,0BAA0B,EAAE,MAAM,cAAc,IAAI,GAAG,0BAA0B,EAAE,cAAc,EAAE,UAAU,EAAE,6EAA6E,EAAE,QAAQ,EAAE,uBAAuB,gCAAgC,QAAQ,gBAAgB,4CAA4C,wDAAwD,UAAU,gBAAgB,UAAU,EAAE,gBAAgB,EAAE,UAAU,0CAA0C,aAAa,EAAE,UAAU,EAAE,UAAU;AACrhB,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL,qDAAqD;AACrD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL,UAAU,wBAAwB;AAClC;AACA;AACA;AACA,qCAAqC,W;AACrC;AACA,qCAAqC,W;AACrC;AACA,wBAAwB,6BAA6B,W;AACrD;AACA,wBAAwB,iBAAiB,W;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,kBAAkB,gCAAgC,oBAAoB,yBAAyB,oBAAoB,2FAA2F,2BAA2B,kBAAkB,kBAAkB;AAC9R,aAAa,kBAAkB,8BAA8B,mBAAmB,gCAAgC,kBAAkB,gCAAgC,YAAY;AAC9K,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,CAAC;;;AAGD,IAAI,IAAI;AACR;AACA;AACA,6BAA6B,8CAA8C;AAC3E;AACA;AACA;AACA;AACA;AACA,iBAAiB,iCAAmB,0EAA0E,iCAAmB;AACjI;AACA;AACA,KAAK,KAAI,IAAI,iCAAmB,GAAG,iCAAmB;AACtD;AACA;AACA;AACA,4BAA4B,YAAY,iCAAmB,4FAA4F,iCAAmB;;AAE1K,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB;AACA,kBAAkB,8DAA8D,8CAA8C,2CAA2C,KAAK,YAAY,mBAAmB,KAAK,YAAY,iDAAiD,eAAe,2CAA2C,KAAK,mBAAmB,iBAAiB,KAAK,YAAY,gDAAgD,aAAa,oBAAoB,mBAAmB,KAAK,sFAAsF,yCAAyC,8CAA8C,wBAAwB,KAAK,oBAAoB,yBAAyB,KAAK,qBAAqB,sBAAsB,KAAK,sBAAsB,gDAAgD,KAAK,uBAAuB,6CAA6C,0BAA0B,KAAK,uBAAuB,6CAA6C,iBAAiB,KAAK,kBAAkB,iEAAiE,YAAY,qBAAqB,OAAO,yBAAyB,KAAK,qBAAqB,KAAK,qBAAqB,4CAA4C,KAAK,0BAA0B,yBAAyB,yBAAyB,uBAAuB,mBAAmB,8DAA8D,8CAA8C,sBAAsB,qDAAqD,qDAAqD,yBAAyB,2BAA2B,mBAAmB,KAAK,sCAAsC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK,oCAAoC,+EAA+E,KAAK;AACzoF;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,+BAA+B,iCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+BAA+B,iCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+BAA+B,iCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC,qLAAqL;;AAErL;;AAEA;AACA,qKAAqK;;AAErK;AACA;;AAEA;AACA,yKAAyK;;AAEzK;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA,sNAAsN;AACtN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,iCAAmB,4CAA4C,aAAa,EAAE;AAC7G,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,gEAAgE,iCAAmB;AACnF;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,iCAAmB,2CAA2C,YAAY,EAAE;AAC3G,+BAA+B,iCAAmB,mDAAmD,oBAAoB,EAAE;AAC3H,oEAAoE,iCAAmB;AACvF,yFAAyF,iCAAmB;;AAE5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,0BAA0B;AAC1B,0BAA0B;AAC1B,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,8EAA8E,iCAAmB;AACjG,mGAAmG,iCAAmB;AACtH,gEAAgE,iCAAmB;AACnF,oEAAoE,iCAAmB;AACvF,+DAA+D,iCAAmB;AAClF;AACA;AACA;AACA;AACA,WAAW,SAAS;;;;;AAKpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6EAA6E;;AAE7E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,sLAAsL;;AAEtL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA,oDAAoD;;AAEpD,4BAA4B;;AAE5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,iCAAmB;;AAEhE;AACA,iCAAmB;AACnB,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,iCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,2DAA2D,iCAAmB;AAC9E,gFAAgF,iCAAmB;AACnG,+DAA+D,iCAAmB;AAClF,oFAAoF,iCAAmB;AACvG,sEAAsE,iCAAmB;AACzF,wEAAwE,iCAAmB;AAC3F,gEAAgE,iCAAmB;AACnF,gFAAgF,iCAAmB;AACnG,sFAAsF,iCAAmB;AACzG,yFAAyF,iCAAmB;AAC5G,4FAA4F,iCAAmB;AAC/G,iHAAiH,iCAAmB;AACpI,0EAA0E,iCAAmB;AAC7F,gFAAgF,iCAAmB;AACnG,uFAAuF,iCAAmB;AAC1G,4GAA4G,iCAAmB;AAC/H,oFAAoF,iCAAmB;AACvG,0FAA0F,iCAAmB;AAC7G,6FAA6F,iCAAmB;AAChH,yFAAyF,iCAAmB;AAC5G,8GAA8G,iCAAmB;AACjI,iFAAiF,iCAAmB;AACpG,uFAAuF,iCAAmB;AAC1G,sFAAsF,iCAAmB;AACzG,2GAA2G,iCAAmB;AAC9H,mFAAmF,iCAAmB;AACtG,wFAAwF,iCAAmB;AAC3G,uFAAuF,iCAAmB;AAC1G,4GAA4G,iCAAmB;AAC/H,+EAA+E,iCAAmB;AAClG,qFAAqF,iCAAmB;AACxG,oFAAoF,iCAAmB;AACvG,yGAAyG,iCAAmB;AAC5H,kFAAkF,iCAAmB;AACrG,uGAAuG,iCAAmB;AAC1H,6EAA6E,iCAAmB;AAChG,mFAAmF,iCAAmB;AACtG,yGAAyG,iCAAmB;AAC5H,8HAA8H,iCAAmB;AACjJ,6FAA6F,iCAAmB;AAChH,mGAAmG,iCAAmB;AACtH,mGAAmG,iCAAmB;AACtH,wHAAwH,iCAAmB;AAC3I,uFAAuF,iCAAmB;AAC1G,6FAA6F,iCAAmB;AAChH,6FAA6F,iCAAmB;AAChH,kHAAkH,iCAAmB;AACrI,iFAAiF,iCAAmB;AACpG,uFAAuF,iCAAmB;AAC1G,0FAA0F,iCAAmB;AAC7G,0FAA0F,iCAAmB;AAC7G,gGAAgG,iCAAmB;AACnH,+FAA+F,iCAAmB;AAClH,oHAAoH,iCAAmB;AACvI,wEAAwE,iCAAmB;AAC3F,iEAAiE,iCAAmB;AACpF,iEAAiE,iCAAmB;AACpF,iEAAiE,iCAAmB;AACpF,gEAAgE,iCAAmB;AACnF,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AAOA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,GAAG;AACH,uCAAuC;AACvC;AACA;AACA,GAAG;AACH,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;AAGA,gEAAgE;;AAEhE;AACA,oBAAoB,yCAAyC;AAC7D;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kFAAkF;;AAElF;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,GAAG;;;AAGH;AACA,4BAA4B,mDAAmD;AAC/E,GAAG;;;AAGH;AACA,4BAA4B,0DAA0D;AACtF,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA,qDAAqD,uDAAuD,kBAAkB,EAAE;AAChI,sDAAsD,uDAAuD,kBAAkB,EAAE;AACjI,OAAO;AACP;AACA,sDAAsD,uDAAuD,kBAAkB,EAAE;AACjI,sDAAsD,uDAAuD,kBAAkB,EAAE;AACjI,yDAAyD,uDAAuD,kBAAkB,EAAE;AACpI,yDAAyD,uDAAuD,kBAAkB,EAAE;AACpI,wDAAwD,uDAAuD,kBAAkB,EAAE;;AAEnI;AACA,yDAAyD,2DAA2D,kBAAkB,EAAE;AACxI;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,6BAA6B,GAAG;AAChC,gBAAgB;AAChB,kBAAkB;AAClB;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,6JAA6J;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,oCAAoC;;AAEpC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0FAA0F,yFAAyF,KAAK;AACxL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,gCAAgC,YAAY;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,YAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,gFAAgF;AAChF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+EAA+E,kCAAmB;AAClG,4EAA4E,kCAAmB;AAC/F,mFAAmF,kCAAmB;AACtG,+EAA+E,kCAAmB;AAClG,6EAA6E,kCAAmB;AAChG,8EAA8E,kCAAmB;AACjG,6EAA6E,kCAAmB;AAChG,qFAAqF,kCAAmB;AACxG,kFAAkF,kCAAmB;AACrG,+EAA+E,kCAAmB;AAClG,uFAAuF,kCAAmB;;;;;;;;;;;;AAY1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,kDAAkD,+CAA+C,+CAA+C,mEAAmE,+CAA+C,KAAK,iBAAiB,gDAAgD,kDAAkD,KAAK,8BAA8B,wBAAwB,KAAK,2BAA2B,8BAA8B,yBAAyB,0BAA0B,KAAK,2BAA2B,0BAA0B,KAAK,0BAA0B,0BAA0B,KAAK,eAAe,2CAA2C,6CAA6C,KAAK,mBAAmB,6CAA6C,KAAK,WAAW,mDAAmD,+CAA+C,KAAK,8FAA8F,YAAY;AACvjC;;AAEA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,oEAAoE,kCAAmB;AACvF,oEAAoE,kCAAmB;AACvF,uEAAuE,kCAAmB;AAC1F,sEAAsE,kCAAmB;AACzF,uEAAuE,kCAAmB;;;;;;AAM1F;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+DAA+D,kCAAmB;AAClF,oFAAoF,kCAAmB;AACvG,uEAAuE,kCAAmB;AAC1F,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;;;;AAKrN;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B;AAC1B;;AAEA,kCAAkC;AAClC;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yFAAyF;;AAEzF;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA,OAAO,EAAE;;AAET,0BAA0B;;AAE1B;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+DAA+D,kCAAmB;AAClF,oFAAoF,kCAAmB;AACvG,uEAAuE,kCAAmB;AAC1F,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;;;;AAKrN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA,OAAO,EAAE;;AAET,0BAA0B;;AAE1B;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+DAA+D,kCAAmB;AAClF,oFAAoF,kCAAmB;AACvG,uEAAuE,kCAAmB;AAC1F,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;;;;AAKrN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kIAAkI;;AAElI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA,OAAO,EAAE;;AAET,0BAA0B;;AAE1B;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+DAA+D,kCAAmB;AAClF,oFAAoF,kCAAmB;AACvG,uEAAuE,kCAAmB;AAC1F,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;;;;AAKrN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA,OAAO,EAAE;;AAET,0BAA0B;;AAE1B;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,gDAAgD,iBAAiB,EAAE;AACrH,+DAA+D,kCAAmB;AAClF,oFAAoF,kCAAmB;;AAEvG;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,yDAAyD,0BAA0B,EAAE;AACvI,+DAA+D,kCAAmB;AAClF,oFAAoF,kCAAmB;AACvG,uEAAuE,kCAAmB;AAC1F,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;;AAGrN;AACA,4EAA4E;;AAE5E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,qDAAqD,SAAS;;AAE9F;AACA;AACA,KAAK;AACL;AACA;AACA,kIAAkI;;AAElI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA,OAAO,EAAE;;AAET,0BAA0B;;AAE1B;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,6CAA6C,kCAAmB;;AAEhE;AACA,kCAAmB;AACnB,+BAA+B,kCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,kCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,kCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,kCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+BAA+B,kCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+BAA+B,kCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,kCAAmB,+CAA+C,gBAAgB,EAAE;AACnH,+BAA+B,kCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+BAA+B,kCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,kCAAmB,8CAA8C,eAAe,EAAE;AACjH,+BAA+B,kCAAmB,uDAAuD,wBAAwB,EAAE;AACnI,+BAA+B,kCAAmB,kDAAkD,mBAAmB,EAAE;AACzH,+BAA+B,kCAAmB,sDAAsD,uBAAuB,EAAE;AACjI,+BAA+B,kCAAmB,iDAAiD,kBAAkB,EAAE;AACvH,+BAA+B,kCAAmB,2DAA2D,4BAA4B,EAAE;AAC3I,+BAA+B,kCAAmB,0DAA0D,2BAA2B,EAAE;AACzI,+BAA+B,kCAAmB,+DAA+D,gCAAgC,EAAE;AACnJ,+BAA+B,kCAAmB,6DAA6D,8BAA8B,EAAE;AAC/I,+BAA+B,kCAAmB,wDAAwD,yBAAyB,EAAE;AACrI,+BAA+B,kCAAmB,wDAAwD,yBAAyB,EAAE;AACrI,gFAAgF,kCAAmB;AACnG,qGAAqG,kCAAmB;AACxH,2DAA2D,kCAAmB;AAC9E,gFAAgF,kCAAmB;AACnG,gFAAgF,kCAAmB;AACnG,gEAAgE,kCAAmB;AACnF;;AAEA,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE;;AAE3T,6DAA6D,sEAAsE,8DAA8D,oBAAoB;;AAErN,uBAAuB,2BAA2B,2EAA2E,kCAAkC,mBAAmB,GAAG,EAAE,OAAO,kCAAkC,8HAA8H,GAAG,EAAE,qBAAqB;;AAExX,kCAAkC,iFAAiF;;AAEnH,+BAA+B,wEAAwE;;AAEvG,iCAAiC,+HAA+H;;AAEhK,kCAAkC,0BAA0B,8CAA8C,gBAAgB,OAAO,kBAAkB,EAAE,aAAa,EAAE;;;;;AAKpK;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,EAAE,EAAE,mDAAmD,KAAK,EAAE,sBAAsB,KAAK,EAAE;AAChH,gFAAgF,KAAK,EAAE,sBAAsB,KAAK,EAAE;AACpH;AACA;AACA;AACA;AACA;AACA,MAAM,OAAO,kCAAkC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,qCAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,cAAc;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,aAAa,eAAe,oDAAoD,kCAAkC;AAClH;AACA;;AAEA;AACA;;AAEA;AACA,mDAAmD,EAAE,KAAK,8CAA8C,KAAK,EAAE;AAC/G;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,yCAAyC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,uEAAuE,aAAa;AACpF;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;;;AAGA;AACA,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA,8FAA8F,eAAe;AAC7G;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB;;AAExB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG,EAAE;;AAEL,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG,EAAE;;AAEL,aAAa;;AAEb;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,6CAA6C;AAC7C,OAAO;AACP,mCAAmC;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+BAA+B;AAChE;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,mBAAmB,OAAO,aAAa;AACvC,mBAAmB;AACnB;AACA;AACA,iBAAiB,OAAO,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kCAAkC;AACpD,uDAAuD,2BAA2B;AAClF,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA,uEAAuE;AACvE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,gDAAgD,2BAA2B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,gEAAgE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA,2DAA2D,mEAAmE;AAC9H;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,gFAAyB;;AAElD,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sCAAI;;AAE7B,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,4CAAO;;AAEhC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,kDAAU;;AAEnC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,iGAAsC;;AAE/D,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,sEAAuB;;AAEhD,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,kDAAU;;AAEnC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,mDAAQ;;AAEjC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,6DAAa;;AAEtC,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,+CAAQ;;AAEjC,OAAO;;AAEP,UAAU;AACV,CAAC;AACD,wC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvj2BA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kF;;;;;;;;;;;ACvBA,eAAe,KAAoD,oBAAoB,CAA4D,CAAC,iBAAiB,aAAa,QAAQ,aAAa,+BAA+B,cAAc,gFAAgF,cAAc,sEAAsE,cAAc,kBAAkB,cAAc,gFAAgF,cAAc,8EAA8E,gBAAgB,WAAW,QAAQ,WAAW,sBAAsB,SAAS,gBAAgB,iDAAiD,gBAAgB,mCAAmC,wFAAwF,oBAAoB,4BAA4B,cAAc,4BAA4B,6MAA6M,QAAQ,cAAc,qBAAqB,kDAAkD,eAAe,6LAA6L,2IAA2I,aAAa,kBAAkB,cAAc,aAAa,mDAAmD,wDAAwD,0CAA0C,IAAI,8CAA8C,UAAU,4BAA4B,gBAAgB,UAAU,mVAAmV,WAAW,6BAA6B,SAAS,SAAS,cAAc,2IAA2I,cAAc,yDAAyD,cAAc,yCAAyC,cAAc,aAAa,sCAAsC,kBAAkB,sEAAsE,QAAQ,IAAI,iDAAiD,WAAW,cAAc,uHAAuH,gBAAgB,SAAS,oBAAoB,+DAA+D,mBAAmB,mBAAmB,KAAK,uCAAuC,yEAAyE,gBAAgB,oBAAoB,UAAU,wFAAwF,+BAA+B,IAAI,WAAW,gBAAgB,2EAA2E,cAAc,sFAAsF,gBAAgB,YAAY,IAAI,6CAA6C,8DAA8D,+CAA+C,QAAQ,SAAS,cAAc,qBAAqB,iGAAiG,WAAW,6BAA6B,UAAU,SAAS,gBAAgB,sBAAsB,qBAAqB,cAAc,yDAAyD,cAAc,aAAa,yCAAyC,SAAS,SAAS,gBAAgB,OAAO,kBAAkB,kCAAkC,4EAA4E,uKAAuK,IAAI,yDAAyD,IAAI,QAAQ,MAAM,oBAAoB,QAAQ,kCAAkC,iBAAiB,qCAAqC,4CAA4C,sBAAsB,4DAA4D,EAAE,gBAAgB,iEAAiE,uBAAuB,mBAAmB,IAAI,sGAAsG,mBAAmB,WAAW,QAAQ,IAAI,mCAAmC,UAAU,0CAA0C,gBAAgB,QAAQ,cAAc,8BAA8B,kBAAkB,gBAAgB,qCAAqC,SAAS,0BAA0B,EAAE,QAAQ,EAAE,aAAa,EAAE,kDAAkD,IAAI,SAAS,IAAI,cAAc,IAAI,wFAAwF,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI,SAAS,mBAAmB,2BAA2B,iBAAiB,iBAAiB,6IAA6I,kBAAkB,IAAI,eAAe,sCAAsC,YAAY,UAAU,iBAAiB,UAAU,uDAAuD,UAAU,MAAM,WAAW,eAAe,iBAAiB,uBAAuB,aAAa,eAAe,EAAE,iDAAiD,eAAe,qBAAqB,eAAe,kCAAkC,qBAAqB,kBAAkB,0BAA0B,4BAA4B,uBAAuB,0OAA0O,+CAA+C,wBAAwB,6BAA6B,uBAAuB,qBAAqB,kCAAkC,gCAAgC,4BAA4B,iBAAiB,mBAAmB,sEAAsE,iBAAiB,2DAA2D,mBAAmB,yLAAyL,iBAAiB,iCAAiC,uBAAuB,8CAA8C,+DAA+D,MAAM,QAAQ,cAAc,4BAA4B,SAAS,gCAAgC,sBAAsB,0BAA0B,6CAA6C,2BAA2B,wCAAwC,4EAA4E,6BAA6B,0BAA0B,wBAAwB,8BAA8B,aAAa,sCAAsC,2CAA2C,oCAAoC,EAAE,6IAA6I,oEAAoE,iBAAiB,MAAM,yBAAyB,gDAAgD,qDAAqD,0FAA0F,eAAe,0EAA0E,UAAU,UAAU,cAAc,gBAAgB,yBAAyB,uBAAuB,QAAQ,KAAK,mIAAmI,sCAAsC,KAAK,gCAAgC,QAAQ,KAAK,kBAAkB,+NAA+N,eAAe,+CAA+C,wEAAwE,mBAAmB,YAAY,2CAA2C,uBAAuB,wCAAwC,+DAA+D,oBAAoB,mBAAmB,iEAAiE,6GAA6G,eAAe,mBAAmB,8BAA8B,oBAAoB,4MAA4M,sBAAsB,EAAE,2CAA2C,6CAA6C,0BAA0B,+CAA+C,2BAA2B,0CAA0C,oMAAoM,6BAA6B,yBAAyB,+BAA+B,0BAA0B,0BAA0B,2CAA2C,6CAA6C,oCAAoC,qCAAqC,UAAU,EAAE,6EAA6E,gDAAgD,yCAAyC,UAAU,UAAU,UAAU,cAAc,gBAAgB,yBAAyB,kCAAkC,QAAQ,IAAI,8JAA8J,gDAAgD,IAAI,8CAA8C,sVAAsV,cAAc,2BAA2B,iBAAiB,mBAAmB,iEAAiE,EAAE,iBAAiB,wBAAwB,0EAA0E,wBAAwB,yBAAyB,4CAA4C,2BAA2B,gEAAgE,yBAAyB,0CAA0C,2BAA2B,8DAA8D,kPAAkP,WAAW,iBAAiB,+BAA+B,wCAAwC,gCAAgC,2BAA2B,2BAA2B,iBAAiB,4DAA4D,6BAA6B,8BAA8B,mFAAmF,2BAA2B,iBAAiB,4CAA4C,6BAA6B,8BAA8B,mEAAmE,EAAE,6BAA6B,UAAU,mJAAmJ,iBAAiB,wHAAwH,oEAAoE,IAAI,gBAAgB,iMAAiM,gCAAgC,YAAY,2EAA2E,MAAM,OAAO,eAAe,4CAA4C,eAAe,WAAW,wBAAwB,QAAa,6BAA6B,WAAW,mFAAQ,IAAW,EAAE,CAAC,OAAO,UAAU,aAAa,iBAAiB,MAAM,+JAA+J,iBAAiB,aAAa,WAAW,4SAA4S,sFAAsF,KAAK,4GAA4G,gBAAgB,OAAO,YAAY,4DAA4D,oBAAoB,cAAc,yBAAyB,eAAe,MAAM,mEAAmE,UAAU,oBAAoB,MAAM,mBAAmB,oBAAoB,WAAW,EAAE,wEAAwE,IAAI,EAAE,yCAAyC,wCAAwC,IAAI,IAAI,UAAU,IAAI,eAAe,aAAa,0WAA0W,mBAAmB,6BAA6B,eAAe,mBAAmB,UAAU,QAAQ,yLAAyL,oBAAoB,oIAAoI,KAAK,4CAA4C,mBAAmB,8HAA8H,oIAAoI,gMAAgM,mBAAmB,sBAAsB,KAAK,IAAI,iDAAiD,+HAA+H,8BAA8B,kEAAkE,iNAAiN,uBAAuB,EAAE,IAAI,EAAE,8IAA8I,EAAE,IAAI,EAAE,6KAA6K,EAAE,+BAA+B,EAAE,iCAAiC,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,IAAI,EAAE,kBAAkB,EAAE,iCAAiC,GAAG,mBAAmB,EAAE,qBAAqB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,qBAAqB,EAAE,wSAAwS,eAAe,gDAAgD,MAAM,gCAAgC,IAAI,4BAA4B,2BAA2B,MAAM,sCAAsC,SAAS,oBAAoB,IAAI,4BAA4B,uBAAuB,MAAM,sCAAsC,0CAA0C,SAAS,6CAA6C,MAAM,6BAA6B,mBAAmB,mDAAmD,IAAI,0DAA0D,IAAI,qEAAqE,EAAE,KAAK,yBAAyB,mBAAmB,sBAAsB,sBAAsB,wBAAwB,SAAS,gEAAgE,mCAAmC,QAAQ,oFAAoF,eAAe,0FAA0F,MAAM,wCAAwC,0HAA0H,8BAA8B,kBAAkB,cAAc,6BAA6B,qBAAqB,2GAA2G,mBAAmB,eAAe,2CAA2C,sBAAsB,6CAA6C,yCAAyC,WAAW,mSAAmS,qNAAqN,MAAM,oBAAoB,kHAAkH,6CAA6C,WAAW,WAAW,eAAe,0BAA0B,qEAAqE,aAAa,sGAAsG,cAAc,mEAAmE,QAAQ,cAAc,cAAc,kKAAkK,UAAU,iTAAiT,sBAAsB,0BAA0B,UAAU,cAAc,yFAAyF,yBAAyB,SAAS,6EAA6E,uBAAuB,WAAW,wDAAwD,8EAA8E,MAAM,2CAA2C,SAAS,mLAAmL,qBAAqB,sBAAsB,yXAAyX,0CAA0C,yBAAyB,yBAAyB,yHAAyH,+BAA+B,qDAAqD,uHAAuH,+BAA+B,qDAAqD,EAAE,iBAAiB,QAAQ,yDAAyD,eAAe,WAAW,0CAA0C,SAAS,sFAAsF,eAAe,qIAAqI,0BAA0B,uEAAuE,iBAAiB,YAAY,iBAAiB,cAAc,2CAA2C,SAAS,0GAA0G,kCAAkC,eAAe,uBAAuB,eAAe,6CAA6C,iBAAiB,mBAAmB,6BAA6B,uDAAuD,EAAE,6EAA6E,6BAA6B,EAAE,yBAAyB,iBAAiB,uBAAuB,wBAAwB,sEAAsE,+BAA+B,iBAAiB,QAAQ,yJAAyJ,eAAe,mDAAmD,cAAc,wDAAwD,4BAA4B,2OAA2O,iBAAiB,qBAAqB,gBAAgB,yCAAyC,WAAW,iEAAiE,8EAA8E,8CAA8C,2FAA2F,cAAc,8DAA8D,MAAM,qCAAqC,yBAAyB,gGAAgG,SAAS,2BAA2B,6FAA6F,iBAAiB,wCAAwC,uBAAuB,iBAAiB,OAAO,yBAAyB,+JAA+J,iBAAiB,qBAAqB,MAAM,wQAAwQ,qBAAqB,oDAAoD,sJAAsJ,yCAAyC,gBAAgB,wCAAwC,iBAAiB,+EAA+E,kGAAkG,eAAe,MAAM,8EAA8E,mFAAmF,uKAAuK,mDAAmD,EAAE,cAAc,oBAAoB,iBAAiB,sBAAsB,uBAAuB,MAAM,6EAA6E,+CAA+C,gGAAgG,uBAAuB,0BAA0B,2BAA2B,4BAA4B,8BAA8B,qVAAqV,sBAAsB,mCAAmC,4BAA4B,yFAAyF,iBAAiB,qGAAqG,qFAAqF,0CAA0C,uBAAuB,EAAE,qBAAqB,wIAAwI,kBAAkB,qGAAqG,wBAAwB,mGAAmG,2BAA2B,yBAAyB,iCAAiC,4BAA4B,gCAAgC,6DAA6D,6BAA6B,+BAA+B,8BAA8B,gCAAgC,8BAA8B,iCAAiC,8BAA8B,kCAAkC,8BAA8B,mCAAmC,8BAA8B,6FAA6F,aAAa,kBAAkB,iBAAiB,sBAAsB,WAAW,aAAa,kBAAkB,6BAA6B,6CAA6C,mBAAmB,eAAe,SAAS,oCAAoC,uHAAuH,gEAAgE,qBAAqB,mBAAmB,yBAAyB,UAAU,8BAA8B,wCAAwC,sDAAsD,2BAA2B,MAAM,yBAAyB,MAAM,6BAA6B,MAAM,4BAA4B,MAAM,4BAA4B,MAAM,2BAA2B,MAAM,6BAA6B,MAAM,+BAA+B,MAAM,iBAAiB,gBAAgB,sBAAsB,wIAAwI,uBAAuB,uDAAuD,gBAAgB,uCAAuC,uBAAuB,gEAAgE,eAAe,qEAAqE,wBAAwB,yBAAyB,qBAAqB,gEAAgE,eAAe,qEAAqE,sBAAsB,uBAAuB,oBAAoB,sCAAsC,yBAAyB,wBAAwB,0BAA0B,mBAAmB,+JAA+J,2BAA2B,mBAAmB,6JAA6J,gCAAgC,uHAAuH,yBAAyB,qBAAqB,wMAAwM,gCAAgC,2CAA2C,iCAAiC,4CAA4C,uBAAuB,eAAe,yFAAyF,WAAW,UAAU,sBAAsB,4CAA4C,SAAS,uBAAuB,qBAAqB,EAAE,4BAA4B,6BAA6B,IAAI,aAAa,WAAW,kCAAkC,0CAA0C,YAAY,wBAAwB,eAAe,yBAAyB,uCAAuC,4DAA4D,2BAA2B,6BAA6B,kCAAkC,iIAAiI,sCAAsC,WAAW,mFAAmF,wBAAwB,WAAW,OAAO,qIAAqI,sBAAsB,gCAAgC,4BAA4B,+BAA+B,yCAAyC,4TAA4T,uBAAuB,6DAA6D,oBAAoB,+EAA+E,iFAAiF,kDAAkD,sBAAsB,8CAA8C,wBAAwB,4EAA4E,oBAAoB,sCAAsC,uBAAuB,+CAA+C,4BAA4B,OAAO,wFAAwF,qCAAqC,uBAAuB,yBAAyB,0GAA0G,4BAA4B,4DAA4D,oCAAoC,gFAAgF,uCAAuC,oCAAoC,8BAA8B,mCAAmC,uCAAuC,oCAAoC,wBAAwB,uCAAuC,2BAA2B,8BAA8B,mCAAmC,8BAA8B,2BAA2B,uCAAuC,2CAA2C,2DAA2D,0JAA0J,wBAAwB,2CAA2C,mDAAmD,mCAAmC,2BAA2B,2CAA2C,YAAY,2FAA2F,oCAAoC,qBAAqB,QAAQ,0BAA0B,qFAAqF,mCAAmC,oIAAoI,wBAAwB,2CAA2C,YAAY,uBAAuB,mCAAmC,iCAAiC,sQAAsQ,8BAA8B,oBAAoB,2BAA2B,sBAAsB,6FAA6F,yBAAyB,mDAAmD,kCAAkC,qBAAqB,+CAA+C,YAAY,qCAAqC,6EAA6E,qBAAqB,8GAA8G,uBAAuB,qCAAqC,2BAA2B,oCAAoC,gDAAgD,4BAA4B,wBAAwB,mDAAmD,wUAAwU,uFAAuF,yIAAyI,oDAAoD,SAAS,2BAA2B,gCAAgC,yDAAyD,2BAA2B,0BAA0B,EAAE,mBAAmB,qBAAqB,0BAA0B,iBAAiB,mBAAmB,iEAAiE,WAAW,QAAQ,KAAK,2BAA2B,SAAS,qBAAqB,mFAAmF,+BAA+B,wCAAwC,SAAS,QAAQ,IAAI,+BAA+B,SAAS,4BAA4B,iDAAiD,0BAA0B,+BAA+B,sEAAsE,iFAAiF,kBAAkB,2BAA2B,2BAA2B,yBAAyB,wBAAwB,qCAAqC,mEAAmE,4BAA4B,0CAA0C,6BAA6B,8CAA8C,oCAAoC,oBAAoB,QAAQ,6CAA6C,uIAAuI,IAAI,UAAU,yBAAyB,yLAAyL,8BAA8B,8LAA8L,gCAAgC,UAAU,iDAAiD,kCAAkC,sGAAsG,KAAK,qJAAqJ,4TAA4T,kBAAkB,qGAAqG,KAAK,KAAK,2ZAA2Z,4DAA4D,8CAA8C,4BAA4B,wOAAwO,iCAAiC,2QAA2Q,qBAAqB,gDAAgD,8BAA8B,sBAAsB,8BAA8B,sBAAsB,2BAA2B,6LAA6L,4BAA4B,sDAAsD,8BAA8B,0DAA0D,kCAAkC,UAAU,mDAAmD,kCAAkC,6GAA6G,IAAI,qOAAqO,ymBAAymB,kBAAkB,uIAAuI,IAAI,KAAK,8iBAA8iB,8DAA8D,2DAA2D,gDAAgD,8BAA8B,0PAA0P,mCAAmC,6RAA6R,iCAAiC,+QAA+Q,qBAAqB,2CAA2C,6BAA6B,oCAAoC,UAAU,2BAA2B,IAAI,mCAAmC,WAAW,uEAAuE,wJAAwJ,gBAAgB,qBAAqB,cAAc,gGAAgG,eAAe,sCAAsC,eAAe,qBAAqB,eAAe,qBAAqB,eAAe,kBAAkB,mBAAmB,6FAA6F,eAAe,kBAAkB,yCAAyC,wHAAwH,sBAAsB,gCAAgC,gBAAgB,eAAe,sBAAsB,cAAc,0DAA0D,yEAAyE,gCAAgC,8FAA8F,kBAAkB,2HAA2H,wHAAwH,oBAAoB,6BAA6B,qBAAqB,mBAAmB,iBAAiB,8PAA8P,sBAAsB,sBAAsB,2BAA2B,uBAAuB,mBAAmB,8BAA8B,6BAA6B,sGAAsG,oDAAoD,+BAA+B,2BAA2B,8BAA8B,iCAAiC,kCAAkC,+CAA+C,4CAA4C,kJAAkJ,gHAAgH,uBAAuB,4EAA4E,8PAA8P,qBAAqB,gBAAgB,oBAAoB,+CAA+C,2FAA2F,wBAAwB,kDAAkD,0DAA0D,kZAAkZ,oCAAoC,gBAAgB,oDAAoD,2QAA2Q,IAAI,4BAA4B,oCAAoC,yBAAyB,oBAAoB,mDAAmD,iDAAiD,kBAAkB,gDAAgD,kBAAkB,qCAAqC,4BAA4B,iBAAiB,wBAAwB,wBAAwB,0FAA0F,4BAA4B,wBAAwB,4CAA4C,6DAA6D,6BAA6B,+BAA+B,+BAA+B,gDAAgD,YAAY,aAAa,oFAAoF,gGAAgG,aAAa,sBAAsB,aAAa,iCAAiC,iCAAiC,uDAAuD,qDAAqD,uCAAuC,4EAA4E,gCAAgC,0BAA0B,2GAA2G,6BAA6B,2OAA2O,GAAG,E;;;;;;;;;;ACAp7kD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,cAAc;AACd,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9KD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpKD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC;AAChC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,kCAAkC;AAClC,aAAa;AACb,+BAA+B;AAC/B,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7KD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,kDAAW;AACrE,GAAG,CACsB;AACzB,CAAC,2BAA2B;;AAE5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6E;;;;;;;;;;;ACnSA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uHAAuH,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AAClN,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA,2BAA2B,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACzK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,8EAAe,IAAW,OAAO,CAAC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,2CAA2C,EAAE,IAAI,EAAE;AACnD,wCAAwC,EAAE,IAAI,EAAE;AAChD;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACriLD;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAA2C,GAAG,qBAAuB,GAAG,CAAE;AACrG;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE,yCAAyC,iCAAiC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD,mBAAO,CAAC,yKAA6D;AACrE,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,iJAAiD;AACzD,mBAAO,CAAC,mIAA0C;AAClD,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,2GAA8B;AACtC,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,uHAAoC;AAC5C,mBAAO,CAAC,2FAAsB;AAC9B,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,2GAA8B;AACtC,mBAAO,CAAC,+GAAgC;AACxC,mBAAO,CAAC,qHAAmC;AAC3C,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,qLAAmE;AAC3E,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,6JAAuD;AAC/D,mBAAO,CAAC,mGAA0B;AAClC,mBAAO,CAAC,qKAA2D;AACnE,mBAAO,CAAC,uIAA4C;AACpD,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,yJAAqD;AAC7D,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,mGAA0B;AAClC,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,uIAA4C;AACpD,mBAAO,CAAC,qLAAmE;AAC3E,mBAAO,CAAC,6KAA+D;AACvE,mBAAO,CAAC,yLAAqE;AAC7E,mBAAO,CAAC,uGAA4B;AACpC,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,iIAAyC;AACjD,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,6KAA+D;AACvE,mBAAO,CAAC,uJAAoD;AAC5D,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,uKAA4D;AACpE,mBAAO,CAAC,uKAA4D;AACpE,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,uIAA4C;AACpD,mBAAO,CAAC,uJAAoD;AAC5D,yHAA6C;AAC7C,mBAAO,CAAC,yHAAyC,E;;;;;;;;;;ACvEjD;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAA2C,GAAG,qBAAuB,GAAG,CAAE;AACrG;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE,yCAAyC,iCAAiC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD,mBAAO,CAAC,yKAA6D;AACrE,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,iJAAiD;AACzD,mBAAO,CAAC,mIAA0C;AAClD,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,2GAA8B;AACtC,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,uHAAoC;AAC5C,mBAAO,CAAC,2FAAsB;AAC9B,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,2GAA8B;AACtC,mBAAO,CAAC,+GAAgC;AACxC,mBAAO,CAAC,qHAAmC;AAC3C,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,qLAAmE;AAC3E,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,6JAAuD;AAC/D,mBAAO,CAAC,mGAA0B;AAClC,mBAAO,CAAC,qKAA2D;AACnE,mBAAO,CAAC,uIAA4C;AACpD,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,yJAAqD;AAC7D,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,mGAA0B;AAClC,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,mHAAkC;AAC1C,mBAAO,CAAC,uIAA4C;AACpD,mBAAO,CAAC,qLAAmE;AAC3E,mBAAO,CAAC,6KAA+D;AACvE,mBAAO,CAAC,yLAAqE;AAC7E,mBAAO,CAAC,uGAA4B;AACpC,mBAAO,CAAC,2HAAsC;AAC9C,mBAAO,CAAC,iIAAyC;AACjD,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,6KAA+D;AACvE,mBAAO,CAAC,uJAAoD;AAC5D,mBAAO,CAAC,+HAAwC;AAChD,mBAAO,CAAC,uKAA4D;AACpE,mBAAO,CAAC,uKAA4D;AACpE,mBAAO,CAAC,2IAA8C;AACtD,mBAAO,CAAC,uIAA4C;AACpD,mBAAO,CAAC,uJAAoD;AAC5D,2HAA8C;AAC9C,mBAAO,CAAC,yHAAyC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvEjD;AACA;AACA;AACA;AAC6C;AAC7C;AACA;AACA;AACA;AACA;AACA,yCAAyC,qDAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/DP;AACA;AACA;AACA;AACwC;AACU;AAClD;AACA;AACA;AACO;AACP;AACA,oBAAoB,yDAAiB;AACrC;AACA;AACA,mBAAmB,yDAAiB;AACpC;AACA;AACA,gBAAgB,+CAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,YAAY,yDAAiB,IAAI,qDAAoB;AACrD;AACA;AACA,kCAAkC,iDAAgB;AAClD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACgC;AAC4B;AACrD;AACP;AACA;AACA;AACA,oBAAoB,yEAAwB;AAC5C;AACA;AACA;AACA;AACA,qCAAqC,QAAQ,KAAK,sCAAK,yBAAyB,KAAK,EAAE,kCAAkC,UAAU,OAAO;AAC1I;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrBA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChCA;AACA;AACA;AACA;AACwC;AACF;AACqB;AACN;AACH;AACM;AACX;AACqB;AAChB;AACH;AACmB;AACnB;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,2BAA2B,8DAAkB;AAC7C;AACA;AACA;AACA;AACA,2BAA2B,oEAAqB;AAChD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP,uCAAuC,sDAAc,IAAI,uEAA6B;AACtF;AACO;AACP,uCAAuC,sDAAc,IAAI,uEAA6B;AACtF;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0CAA0C,4DAAU;AACpD;AACA;AACA;AACA;AACA,yCAAyC,0DAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,QAAQ,sDAAc;AACtB;AACA,uDAAuD,qDAAoB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,wCAAwC,gBAAgB;AACxD;AACO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+CAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iDAAgB;AACrC,mBAAmB,iDAAgB;AACnC,yBAAyB,iDAAgB;AACzC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;AACA;AACA;AACO;AACP,mBAAmB,6CAA6C;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4DAAU;AACrC;AACA;AACA,8CAA8C,qDAAO;AACrD;AACA,6CAA6C,qDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAQ;AAC/B,uBAAuB,mDAAQ;AAC/B;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,IAAI,2DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI,2DAAQ;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,QAAQ,yDAAiB,IAAI,sDAAqB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,WAAW,kEAAY;AACvB;AACA,wFAAuC;AAChC;AACP;AACA;AACA;AACA,QAAQ,qEAAoB;AAC5B,eAAe,0EAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,kDAAkD;AACrE;;;;;;;;;;;;;;;;;;AC33BA;AACA;AACA;AACA;AACiE;AAC1D;AACP;AACA,wBAAwB,qDAAO;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP,WAAW,uDAAa;AACxB;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;AACgC;AACzB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;AC3MA;AACA;AACA;AACA;AACgC;AACzB,sCAAsC;AAC7C;AACA;AACA;AACA;AACO,wDAAwD;AAC/D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kEAAiC;AACxE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACgC;AACkB;AACR;AACW;AACI;AACV;AACxC;AACP,iBAAiB,8DAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,0BAA0B,iEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4EAAoC;AAChE,0BAA0B,sDAAc,IAAI,sEAA6B;AACzE,wBAAwB,sDAAc,IAAI,sEAA6B;AACvE;AACA,2BAA2B,kDAAiB;AAC5C;AACA;AACA;AACA;AACA,4BAA4B,mEAAkC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,4BAA4B,0DAAyB;AACrD;AACA,YAAY,8EAAsC;AAClD;AACA;AACA;AACA,4BAA4B,0DAAyB;AACrD,4BAA4B,8DAAkB;AAC9C;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,0DAAyB;AACrD,4BAA4B,8DAAkB;AAC9C;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,0DAAyB;AACrD;AACA,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjGA;AACA;AACA;AACA;AACwC;AAC+B;AACrB;AAClD;AACA;AACA;AACA,mBAAmB,iCAAiC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAiB;AACzB;AACA;AACA;AACA,YAAY,4DAAoB;AAChC;AACA;AACA;AACA,aAAa,iDAAgB;AAC7B;AACA,YAAY,4DAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,eAAe,wEAAuB;AACtC;AACA;AACA;AACA,oBAAoB,4DAAoB;AACxC;AACA;AACA,oBAAoB,4DAAoB;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO,aAAa,UAAU,SAAS,MAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAgB;AACnC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpOA;AACA;AACA;AACA;AACgC;AAC2B;AACH;AACiC;AAC7B;AACP;AACD;AACH;AACK;AACR;AACP;AACQ;AACuC;AACjC;AACA;AACrD;AACA;AACA;AACO,8CAA8C,oBAAoB;AACzE;AACA,oBAAoB,wEAAa;AACjC;AACA;AACA;AACA,mBAAmB,6DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kEAAc;AAC7B;AACA,uBAAuB,uDAAU;AACjC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,kBAAkB,uDAAU;AAC5B,YAAY,sDAAS;AACrB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAe;AACxC;AACA;AACA;AACA;AACA,cAAc,mBAAmB,GAAG,8EAAsB;AAC1D;AACA;AACA,kCAAkC,sDAAS;AAC3C,4DAA4D,6DAAY,GAAG;AAC3E,2BAA2B,kEAAW;AACtC;AACA;AACA,yBAAyB;AACzB,oCAAoC,KAAK;AACzC;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA,sCAAsC,MAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,mBAAmB,6EAAqB;AACxC;AACA;AACA;AACA;AACA;AACA,uBAAuB,kEAAW;AAClC;AACA;AACA,gBAAgB,6EAAqB;AACrC,eAAe,6EAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,oCAAoC;AACpC,oCAAoC;AACpC,sCAAsC;AACtC,qCAAqC;AACrC,6CAA6C,KAAK,WAAW,cAAc,IAAI,KAAK;AACpF;AACA;AACA;AACA,qBAAqB,6BAA6B,oEAAc,cAAc;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2EAAuB;AAC9C;AACA;AACA,qEAAqE,GAAG;AACxE;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA,mDAAmD,GAAG,IAAI,0DAAM,OAAO;AACvE;AACA;AACA;AACA;AACA,SAAS,oDAAmB,EAAE,uDAAsB;AACpD,2CAA2C,0DAAyB;AACpE,uCAAuC,+DAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oEAAiB;AACrC;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAY,EAAE,8DAAa,EAAE,+DAAc,EAAE,6DAAY,EAAE,6DAAY,EAAE,qEAAoB,EAAE,6EAA4B;AACvJ;AACA,4BAA4B,gEAAe;AAC3C;AACA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA,6BAA6B,2DAAY,8BAA8B,mFAA6B;AACpG;AACA;AACA;AACA,4EAA4E,mCAAmC;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gEAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC3OA;AACA;AACA;AACA;AACwC;AACE;AACQ;AAC3C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oGAA4D;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kDAAiB,KAAK,4DAAoB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iDAAgB,IAAI,0DAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kDAAiB,KAAK,4DAAoB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC5HA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AAC8C;AACM;AACf;AACa;AAC3C;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AACxB,sBAAsB,4DAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0DAA8B,uDAAuD,iBAAiB;AAC7H,uBAAuB,0DAA8B;AACrD,uBAAuB,0DAA8B,qDAAqD,iBAAiB;AAC3H;AACA;AACA;AACA,mBAAmB,iEAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,mDAAW;AAC3D,gDAAgD,mDAAW;AAC3D;AACA,4BAA4B,mDAAW;AACvC,4BAA4B,mDAAW;AACvC;AACA;AACA;AACA,gDAAgD,mDAAW;AAC3D,gDAAgD,mDAAW;AAC3D;AACA,4BAA4B,mDAAW;AACvC,4BAA4B,mDAAW;AACvC;AACA;AACA;AACA,6BAA6B,mDAAW;AACxC,6BAA6B,mDAAW;AACxC,6BAA6B,mDAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+BAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB,iEAAqC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mCAAmC;AACnC,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAW;AACxD,6CAA6C,mDAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,IAAI,0DAAO;AACX;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/PA;AACA;AACA;AACA;AACyB;AAC+B;AACd;AACgB;AACmB;AACzC;AACc;AACE;AACP;AACA;AACtC,iCAAiC,4DAAU;AAClD,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,8BAA8B,sDAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,4DAAY;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wDAAiB;AACxC;AACA;AACA;AACA,gBAAgB,kDAAS;AACzB;AACA,+BAA+B,0DAAyB,YAAY,yDAAwB,QAAQ,QAAQ,8EAA8E,uDAAkB,sBAAsB,EAAE;AACpO;AACA;AACA,uBAAuB,0DAAyB,UAAU,oDAAa;AACvE,uBAAuB,0DAAyB,UAAU,yDAAwB;AAClF;AACA,gBAAgB,qDAAoB,UAAU;AAC9C;AACA;AACA,gBAAgB,6CAAY;AAC5B;AACA,SAAS;AACT,YAAY,4DAAoB;AAChC;AACA;AACA;AACA;AACA,2BAA2B,0DAAyB,UAAU,2DAA0B;AACxF;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,0DAAyB,UAAU,oDAAmB;AAC7E,YAAY,qDAAoB;AAChC;AACA;AACA,gBAAgB,6DAAqB;AACrC;AACA,SAAS;AACT,uBAAuB,0DAAyB,UAAU,uDAAsB;AAChF,YAAY,qDAAoB;AAChC,SAAS;AACT,SAAS,uDAAsB,EAAE,wDAAuB;AACxD,2BAA2B,0DAAyB;AACpD,gBAAgB,qDAAoB;AACpC,gBAAgB,gDAAe;AAC/B,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,QAAQ,qDAAoB;AAC5B,wBAAwB,+DAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA;AACA;AACA;AACA,YAAY,gDAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+CAAc;AAC1B;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2CAAU,eAAe,sCAAK;AACvD;AACA;AACA,oCAAoC,4DAAY;AAChD,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2CAAU,eAAe,sCAAK;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAY,EAAE,oEAAoE,IAAI,EAAE,GAAG,EAAE;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAiB;AAC7B;AACA;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B;AACA,oBAAoB,+CAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAe;AAC/B;AACA;AACA;AACA,gBAAgB,gDAAe;AAC/B;AACA;AACA;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B,gBAAgB,iEAAgC;AAChD;AACA;AACA,gBAAgB,6CAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B;AACA;AACA,gBAAgB,gDAAe;AAC/B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC7QA;AACA;AACA;AACA;AACyB;AAC0C;AACT;AACtB;AACc;AACa;AACZ;AACuB;AACnE,wBAAwB,4DAAU;AACzC,uCAAuC;AACvC;AACA;AACA,6CAA6C,qDAAO;AACpD;AACA,+CAA+C,qDAAO;AACtD;AACA,4CAA4C,qDAAO;AACnD;AACA,kDAAkD,qDAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0DAAyB,eAAe,uDAAsB;AACrF,8BAA8B,oEAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,0DAAyB,eAAe,qDAAoB;AACnF,8BAA8B,oEAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2CAA2C,+CAAc;AACzD;AACA,gBAAgB,qDAAoB,wBAAwB,+CAAc,CAAC,qDAAoB;AAC/F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,sCAAsC;AAC7D;AACA,gBAAgB,+CAAc,CAAC,qDAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,oBAAoB,sDAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0DAAyB,wBAAwB,2DAA0B;AAC1G,oBAAoB,qDAAoB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA,QAAQ,8CAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA,oBAAoB,wDAAgB;AACpC,sDAAsD,wDAAgB;AACtE;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA,oBAAoB,wDAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,sCAAsC,mEAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA,QAAQ,+CAAc;AACtB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7TA;AACA;AACA;AACA;AACoB;AACsC;AACtB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAa;AACrB;AACA;AACA;AACA,QAAQ,8CAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,QAAQ,4DAAW;AACnB,mBAAmB;AACnB;AACA;AACA;AACA,YAAY,8CAAa;AACzB;AACA;AACA;AACA,YAAY,8CAAa;AACzB;AACA;AACA;AACA;AACA;AACA,IAAI,8CAAa;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACvFA;AACA;AACA;AACA;AACsB;AACc;AAC2B;AACd;AACE;AACA;AACO;AACN;AACQ;AAC5D;AACA,sBAAsB,2DAAa;AACnC,2BAA2B,2DAAa;AACxC,sBAAsB,yDAAW;AACjC;AACO,qBAAqB,4DAAU;AACtC;AACA;AACA,8CAA8C,qDAAO;AACrD;AACA,QAAQ,yDAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAY;AACpB;AACA;AACA;AACA,uBAAuB,wDAAiB;AACxC,SAAS,oDAAmB,EAAE,oDAAa;AAC3C,2BAA2B,0DAAyB;AACpD;AACA,oBAAoB,qDAAoB;AACxC;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,uBAAuB,0DAAyB,gBAAgB,uDAAsB;AACtF,8BAA8B,oEAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAoB;AACpC;AACA,SAAS;AACT,uBAAuB,0DAAyB,gBAAgB,yDAAwB;AACxF,iBAAiB,6CAAY;AAC7B;AACA;AACA,SAAS;AACT,uBAAuB,0DAAyB,gBAAgB,wDAAuB;AACvF,+BAA+B;AAC/B,SAAS;AACT;AACA,2CAA2C,+CAAc;AACzD;AACA,8EAA8E;AAC9E;AACA;AACA,sBAAsB,+BAA+B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6CAAY;AACzB,YAAY,6CAAY;AACxB;AACA;AACA,YAAY,0CAAS,mBAAmB,qEAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gDAAe;AAC3B;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA,YAAY,iEAAgC;AAC5C;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B;AACA;;;;;;;;;;;;;;;;;;;;;ACxJA;AACA;AACA;AACA;AACwB;AACY;AACE;AACW;AACE;AACnD;AACA,6BAA6B,2DAAa;AAC1C,iCAAiC,2DAAa;AAC9C,iCAAiC,2DAAa;AAC9C;AACO,uBAAuB,8CAAM;AACpC;AACA;AACA,4CAA4C,qDAAO;AACnD;AACA,6CAA6C,qDAAO;AACpD;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAgC;AACxC;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AAC+B;AACc;AACH;AAC0B;AAC7D;AACP;AACA,2BAA2B,2EAA0B;AACrD;AACA;AACA;AACA,sBAAsB,iEAAgB;AACtC;AACA;AACA;AACA;AACA;AACO;AACP;AACA,0BAA0B,wDAAO;AACjC;AACA;AACA,uBAAuB,KAAK,SAAS,aAAa,cAAc,EAAE,EAAE;AACpE;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AAC2B;AACS;AACoB;AACiC;AACxC;AACE;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,4CAA4C;AAC5C;AACA,oDAAoD;AACpD;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,6BAA6B;AAC7B;AACA,iBAAiB;AACjB;AACA;AACO,0BAA0B,4DAAU;AAC3C;AACA;AACA;AACA;AACA,gCAAgC,iEAAe;AAC/C,uCAAuC,iEAAe;AACtD;AACA;AACA,oBAAoB,sCAAK;AACzB;AACA;AACA,QAAQ,yCAAQ;AAChB;AACA,uBAAuB,kEAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+CAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,sCAAK;AAClD;AACA,2EAA2E,eAAe;AAC1F;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,4CAA4C,sCAAK;AACjD;AACA;AACA;AACA;AACA,gDAAgD,iEAAe;AAC/D;AACA,4CAA4C,kEAAiC;AAC7E;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,4CAA4C,kEAAiC;AAC7E;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAa;AACrB;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAQ;AAChB;AACA,8DAA8D,iEAAe;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,sDAAc,IAAI,sEAA6B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAiB;AAC7B,kCAAkC,2DAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kDAAiB;AAC/C,+BAA+B,mDAAkB;AACjD;AACA;AACA,gCAAgC;AAChC;AACA;AACA,gCAAgC;AAChC;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,YAAY,8DAAgB,EAAE,wCAAwC,GAAG,iFAAiF;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAiB;AACzB,QAAQ,6CAAY;AACpB,QAAQ,6CAAY;AACpB,QAAQ,gDAAe;AACvB,kCAAkC,2DAA0B;AAC5D,iCAAiC,+BAA+B,2DAA0B,yCAAyC;AACnI,kCAAkC,gCAAgC,2DAA0B,2CAA2C;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+CAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,4DAA4D;AAClF,oCAAoC,+FAA+F;AACnI,oCAAoC,2EAA2E;AAC/G,+BAA+B,wFAAwF;AACvH,+BAA+B,kHAAkH;;AAEjJ,0BAA0B,kDAAkD;AAC5E,wCAAwC,qEAAqE;AAC7G,wCAAwC,wEAAwE;AAChH,mCAAmC,+EAA+E;AAClH,mCAAmC,4EAA4E;;AAE/G,wBAAwB,4DAA4D;AACpF,sCAAsC,2HAA2H;AACjK,sCAAsC,2HAA2H;AACjK,iCAAiC,0HAA0H;AAC3J,iCAAiC,uJAAuJ;AACxL;;;;;;;;;;;;;;;;;;;;;AC5QA;AACA;AACA;AACA;AAC0B;AACe;AACW;AACH;AACE;AACnD;AACA,qBAAqB,2DAAa;AAClC,qBAAqB,2DAAa;AAClC;AACO;AACP;AACA;AACA;AACA,QAAQ,yDAAK;AACb;AACA;AACA;AACA,uBAAuB,+CAAM,YAAY,0CAAC;AAC1C,yDAAyD,EAAE;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0DAAM;AACzC,6BAA6B,0DAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACwB;AACgD;AACd;AACqD;AAChD;AACZ;AAC5C,2BAA2B,4DAAY;AAC9C;AACA;AACA,0CAA0C,qDAAO;AACjD;AACA,wBAAwB,+CAAM,YAAY,0CAAC;AAC3C,sBAAsB,+CAAM,gBAAgB,0CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,oDAAe,EAAE,yDAAoB,EAAE,oDAAoB;AACxF,2BAA2B,8DAAqB,2BAA2B,qDAAgB,YAAY;AACvG;AACA,6BAA6B,yDAAoB,EAAE,oDAAoB;AACvE,2BAA2B,8DAAqB;AAChD;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8DAAqB,cAAc,qDAAgB;AAC1E,8BAA8B,oEAAqB;AACnD;AACA,gBAAgB,qDAAgB,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,uBAAuB,wDAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAW;AACnB;AACA;;;;;;;;;;;;;;;;;;;;;;AC1IA;AACA;AACA;AACA;AACwB;AAC6B;AACF;AACkB;AACxB;AACO;AAC7C,yCAAyC,6EAAkB;AAClE,gFAAgF;AAChF;AACA;AACA,yDAAyD,qDAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+CAAM,KAAK,0CAAC;AACvC,yDAAyD,0DAAO;AAChE;AACA;AACA;AACA;AACA,YAAY,mDAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sDAAY;AAC3D;AACA;AACA,yGAAyG,QAAQ;AACjH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,mCAAmC;AAC7G;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/EA;AACA;AACA;AACA;AACyB;AACiB;AACN;AACsB;AACpB;AACa;AACiD;AACpG,0BAA0B,6CAAY;AAC/B,wBAAwB,8CAAM;AACrC;AACA;AACA;AACA;AACA,qDAAqD,qDAAO;AAC5D;AACA,6CAA6C,qDAAO;AACpD;AACA,+CAA+C,qDAAO;AACtD;AACA,2CAA2C,qDAAO;AAClD,2CAA2C,qDAAO;AAClD,0DAA0D,qDAAO;AACjE;AACA,kDAAkD,qDAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAY;AACpB,2CAA2C,kEAAe;AAC1D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,wCAAwC,kEAAa;AACrD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,6CAA6C,uEAAkB;AAC/D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gDAAgD,0EAAqB;AACrE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAoB;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA,QAAQ,6CAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACpSA;AACA;AACA;AACA;AACmD;AACT;AACY;AACtD,0CAA0C,6CAAY;AACtD,sCAAsC,6CAAY;AAClD,iCAAiC,6CAAY;AACtC,oCAAoC,2DAAQ;AACnD;AACA;AACA,kBAAkB,sEAAqB;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO,iCAAiC,2DAAQ;AAChD;AACA;AACA,kBAAkB,kEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO,4BAA4B,2DAAQ;AAC3C;AACA;AACA,kBAAkB,8DAAa;AAC/B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACyB;AACiB;AACN;AACsB;AACpB;AACa;AACA;AACG;AACtD,0BAA0B,6CAAY;AACtC,gCAAgC,6CAAY;AACrC,mCAAmC,2DAAQ;AAClD;AACA;AACA;AACA,kBAAkB,qEAAoB;AACtC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO,2BAA2B,8CAAM;AACxC;AACA;AACA;AACA;AACA;AACA,qDAAqD,qDAAO;AAC5D;AACA,6CAA6C,qDAAO;AACpD;AACA,+CAA+C,qDAAO;AACtD,2CAA2C,qDAAO;AAClD,2CAA2C,qDAAO;AAClD,yDAAyD,qDAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6CAAY;AACpB,2CAA2C,kEAAe;AAC1D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qDAAoB;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA,QAAQ,6CAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACnPA;AACA;AACA;AACA;AACsD;AACO;AACT;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sDAAc;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mEAAc,CAAC,0DAAM,eAAe,0DAAM;AAChG;AACA;AACA;AACA;AACA,yDAAyD,uBAAuB;AAChF;AACA;AACA;AACA;AACA;AACA,kDAAkD,mEAAc,CAAC,0DAAM,eAAe,0DAAM;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mEAAc,CAAC,0DAAM,eAAe,0DAAM;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACqB;AACe;AACsB;AACe;AACzE,UAAU,sCAAK;AACR,0BAA0B,4DAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iFAAoB,yBAAyB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,2CAAU;AACtC,mBAAmB,2CAAU;AAC7B;AACA;AACA;AACA,QAAQ,2CAAU,wBAAwB,wBAAwB;AAClE;AACA,kBAAkB,2CAAU;AAC5B,6CAA6C,oBAAoB,IAAI,gBAAgB;AACrF,WAAW,0DAAyB,kBAAkB,oDAAmB;AACzE;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACyB;AACW;AACuC;AACjB;AACT;AACG;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,4DAAU;AACzC;AACA;AACA,wDAAwD,2CAAU,YAAY,sCAAK;AACnF,+BAA+B,2CAAU,uBAAuB,sCAAK;AACrE,8BAA8B,2CAAU,iBAAiB,sCAAK;AAC9D,qEAAqE,2CAAU,iBAAiB,sCAAK;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mFAAgB,CAAC,2CAAU,oCAAoC,sCAAK;AACxH;AACA;AACA,iFAAiF,2CAAU,oCAAoC,sCAAK;AACpI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA,gDAAgD,mFAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0DAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAe;AAC/B,mCAAmC,2CAAU,iBAAiB,sCAAK,kBAAkB,sEAAsE;AAC3J;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA,2BAA2B,kBAAkB;AAC7C;AACA,mGAAmG,gEAAgE,GAAG,EAAE;AACxK,gBAAgB,2CAAU,iBAAiB,sCAAK,kBAAkB,4FAA4F;AAC9J;AACA,oBAAoB,2CAAU,iBAAiB,sCAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,0BAA0B,6DAAe;AACzC,8BAA8B,2DAAa;AAC3C,mBAAmB,aAAa,OAAO,mDAAmD;AAC1F;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0DAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gDAAe;AAC/B,uCAAuC,mFAAgB,CAAC,2CAAU,iBAAiB,sCAAK,kBAAkB,sEAAsE;AAChL;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA,mGAAmG,gEAAgE,GAAG,EAAE;AACxK,6BAA6B,sCAAK,kBAAkB,4FAA4F;AAChJ,6CAA6C,mFAAgB,CAAC,2CAAU;AACxE;AACA;AACA,oBAAoB,2CAAU,OAAO,sCAAK;AAC1C;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACwB;AACkB;AACN;AAC6C;AACzC;AACc;AACI;AACpB;AACW;AACE;AACW;AACQ;AAC5B;AAC1C,UAAU,sCAAK;AACf;AACA,qBAAqB,2DAAa;AAClC,qBAAqB,2DAAa;AAClC,+BAA+B,2DAAa;AAC5C,mCAAmC,2DAAa;AAChD,kCAAkC,2DAAa;AAC/C,sCAAsC,2DAAa;AACnD,gCAAgC,2DAAa;AAC7C,oCAAoC,2DAAa;AACjD;AACO,uBAAuB,8CAAM;AACpC;AACA;AACA;AACA;AACA,+CAA+C,qDAAO;AACtD;AACA,qDAAqD,qDAAO;AAC5D;AACA;AACA;AACA,QAAQ,yDAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2CAAU;AACjC;AACA,sBAAsB,2CAAU;AAChC,qBAAqB,2CAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2CAAU;AACpC;AACA,yCAAyC,+EAAiB,gBAAgB,yBAAyB;AACnG;AACA;AACA;AACA;AACA;AACA,YAAY,2CAAU;AACtB;AACA;AACA;AACA,sCAAsC,0DAAY,CAAC,oDAAQ;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8DAAS;AACzD,uDAAuD,2BAA2B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,mDAAkB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kDAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uBAAuB;AAC3E,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,cAAc;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,0CAA0C;AAC1C,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2CAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8EAAmB;AACzC,sBAAsB,qEAAU;AAChC;AACA;AACA;AACA;AACA,wEAAwE,cAAc;AACtF,gBAAgB,2CAAU;AAC1B;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,6CAAY,+BAA+B,EAAE;AACrE;AACA;AACA,wBAAwB,6CAAY,mCAAmC,EAAE;AACzE;AACA;AACA,wBAAwB,6CAAY,6BAA6B,EAAE;AACnE;AACA,QAAQ,gDAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,mDAAkB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,2BAA2B,iEAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC5cA;AACA;AACA;AACA;AAC+B;AACqB;AACkB;AAClC;AACU;AAC9C,UAAU,sCAAK;AACR;AACP;AACA;AACA;AACA,uBAAuB,2CAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8CAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2CAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uFAA8B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2CAAU;AAClB;AACA,YAAY,2CAAU;AACtB;AACA;AACA;AACA,QAAQ,2CAAU,oDAAoD,iDAAQ;AAC9E;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAM,8BAA8B,0DAAM;AACvE;AACA;;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACO;AACP;AACA,4BAA4B,KAAK,IAAI,QAAQ;AAC7C;AACA;;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACoB;AACsC;AACR;AACX;AACU;AACyB;AAC1E;AACA;AACA;AACA;AACA;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA,gBAAgB,mBAAmB,iEAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4EAAuB;AAC/C;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,aAAa,uIAAuI;AAC7L;AACO;AACP,yEAAyE;AACzE;AACA;AACA,wBAAwB,gDAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAS,8BAA8B,+BAA+B,OAAO,6FAA6F;AACzL;AACA;AACA,eAAe,uDAAS,wBAAwB,+BAA+B,OAAO,6FAA6F;AACnL;AACA;AACA,eAAe,uDAAS,+BAA+B,kCAAkC,OAAO,yEAAyE;AACzK;AACA;AACA,eAAe,uDAAS,mCAAmC,kCAAkC,OAAO,yEAAyE;AAC7K;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wDAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvHA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AAC0D;AACwC;AAC5B;AAClC;AACsB;AAChB;AACkC;AACjB;AACX;AACP;AACe;AACP;AACY;AACL;AACc;AACzB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY,EAAE;AAC1C,sBAAsB,aAAa,EAAE;AACrC,uBAAuB,EAAE;AACzB,sBAAsB,cAAc,EAAE;AACtC,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;AACO;AACP;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0DAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA,iDAAiD,sDAAO;AACxD;AACA,+CAA+C,iEAAe;AAC9D;AACA;AACA,6CAA6C,iEAAe;AAC5D,kCAAkC,iEAAe;AACjD,+BAA+B,iEAAe;AAC9C,6CAA6C,qDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kDAAQ;AACpC;AACA;AACA;AACA,8CAA8C,kDAAQ;AACtD;AACA;AACA;AACA;AACA,QAAQ,6CAAY;AACpB;AACA,QAAQ,gDAAe;AACvB,oCAAoC,gEAAY;AAChD,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA,sCAAsC,gEAAY;AAClD;AACA;AACA;AACA,6BAA6B,wDAAiB;AAC9C,8BAA8B,6DAAU,CAAC,gEAAY,0DAA0D,iEAAgC;AAC/I,0DAA0D,oFAAuB;AACjF;AACA;AACA,sBAAsB,gEAAY;AAClC,wBAAwB,gEAAY;AACpC,SAAS;AACT;AACA;AACA;AACA,QAAQ,mDAAQ,qBAAqB,uDAAqB;AAC1D;AACA;AACA,QAAQ,mDAAQ;AAChB,QAAQ,uDAAS,CAAC,mDAAQ;AAC1B,QAAQ,uDAAS,CAAC,mDAAQ;AAC1B,QAAQ,mDAAQ;AAChB,QAAQ,mDAAQ;AAChB,gCAAgC,gEAAY;AAC5C,4BAA4B,gEAAY;AACxC,qCAAqC,gEAAY;AACjD,mBAAmB,gEAAY;AAC/B;AACA;AACA,yBAAyB,2BAA2B;AACpD,+BAA+B,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA,wDAAwD,QAAQ,oDAAmB,gBAAgB;AACnG,gDAAgD,kDAAkD;AAClG;AACA;AACA;AACA,wDAAwD,yDAAyD;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,4BAA4B,8DAAe;AAC3C,uCAAuC,qBAAqB;AAC5D;AACA;AACA,mCAAmC;AACnC,0CAA0C,8DAAe;AACzD,6CAA6C,uEAAwB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iEAAe;AAChD,SAAS;AACT;AACA;AACA;AACA,gCAAgC,kDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAK;AACvC,4BAA4B,8DAAe;AAC3C,uCAAuC,qBAAqB;AAC5D;AACA;AACA,6BAA6B,uEAAwB;AACrD;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA,2EAA2E,mDAAK;AAChF,+BAA+B;AAC/B,+EAA+E,8DAAe;AAC9F;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mBAAmB;AAChE;AACA,qDAAqD,iEAAgC;AACrF,4DAA4D,kCAAkC;AAC9F;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0DAA0D;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,qDAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,oDAAmB;AAClF,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uEAAwB;AACvD,+BAA+B,uEAAwB;AACvD;AACA;AACA,mCAAmC,8DAAe;AAClD,8CAA8C,wBAAwB;AACtE;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA,gDAAgD,WAAW;AAC3D;AACA,2CAA2C,UAAU;AACrD;AACA,gDAAgD,wCAAwC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gBAAgB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mDAAS;AAChD,qBAAqB,oDAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA,+CAA+C,UAAU;AACzD;AACA;AACA,mDAAmD,UAAU;AAC7D;AACA,uDAAuD,MAAM;AAC7D;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,kCAAkC;AAC1F;AACA,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ,uDAAS,CAAC,mDAAQ,oDAAoD;AACtG,2BAA2B,QAAQ,uDAAS,CAAC,mDAAQ,uDAAuD;AAC5G,8BAA8B,QAAQ,0DAAY,CAAC,uDAAS,CAAC,mDAAQ,0FAA0F;AAC/J,uBAAuB,QAAQ,uDAAS,CAAC,mDAAQ,wDAAwD;AACzG,yBAAyB,QAAQ,uDAAS,CAAC,mDAAQ,0DAA0D;AAC7G,wBAAwB,QAAQ,uDAAS,CAAC,mDAAQ,yDAAyD;AAC3G,iBAAiB,QAAQ,uDAAS,CAAC,mDAAQ,qBAAqB,oDAAkB,gCAAgC;AAClH;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6DAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sCAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sEAAgC;AACxC;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,YAAY,sEAAgC,IAAI,8EAAwC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAgC;AAChD;AACA,uCAAuC,sEAAgC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,iDAAiD,kEAAY;AAC7D,gBAAgB,gDAAe;AAC/B,gBAAgB,gDAAe;AAC/B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAY;AAChC;AACA;AACA,iDAAiD,kEAAY;AAC7D;AACA;AACA;AACA;AACA,wBAAwB,gDAAe;AACvC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,kCAAkC,oEAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sEAAgC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sEAAgC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iEAAe;AAC5D;AACA;AACA;AACA;AACA,4BAA4B,qDAAoB;AAChD,+CAA+C,4CAAW;AAC1D;AACA;AACA,+CAA+C,oEAAiB;AAChE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qBAAqB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uEAAwB;AAC/D;AACA,6CAA6C,eAAe;AAC5D;AACA;AACA;AACA;AACA;AACA,qCAAqC,uEAAwB;AAC7D;AACA,6CAA6C,eAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAqB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW,GAAG,MAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACn6BA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACoB;AACoD;AACpB;AACwB;AACpB;AACpB;AACoB;AACf;AACsB;AACU;AAC/B;AACJ;AACG;AACQ;AACE;AACF;AACE;AACQ;AACnB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA,qCAAqC,6DAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6DAAU;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qDAAO;AACpC;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAY;AAC3B;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA;AACA,IAAI,0DAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP,QAAQ,6CAAY;AACpB;AACA;AACA,QAAQ,6CAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAe;AAC9C;AACA,0BAA0B,yDAAW,CAAC,oDAAQ;AAC9C;AACA,0BAA0B,oEAAqB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iEAAe;AACrD,+BAA+B,iEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yDAAW,CAAC,oDAAQ;AAC3C;AACA;AACA,8BAA8B,oEAAqB;AACnD;AACA,2BAA2B,qBAAqB,oBAAoB,EAAE;AACtE;AACA;AACA,wBAAwB,4DAAc;AACtC,wBAAwB,0DAAY,CAAC,uDAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qDAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA,mDAAmD,kEAAa;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAe;AAC9C,0BAA0B,yDAAW,CAAC,oDAAQ;AAC9C;AACA,0BAA0B,oEAAqB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,4DAAoB;AAC/B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,+BAA+B,iEAAe;AAC9C,8BAA8B,qDAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wDAAiB;AAClD;AACA,QAAQ,uDAAS;AACjB;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wDAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,kDAAkD,oBAAoB;AACtE;AACA;AACA;AACA,4CAA4C,OAAO,oBAAoB,eAAe,uBAAuB,EAAE;AAC/G;AACA,sBAAsB,4DAAoB,GAAG;AAC7C,8CAA8C,oBAAoB;AAClE;AACA;AACA;AACA,wCAAwC,OAAO,iCAAiC,qBAAqB,4BAA4B,EAAE;AACnI,wCAAwC,OAAO,uCAAuC,qBAAqB,4BAA4B,EAAE,GAAG;AAC5I;AACA;AACA,wCAAwC,OAAO,iCAAiC,UAAU,4BAA4B,EAAE;AACxH;AACA;AACA,wCAAwC,OAAO,kCAAkC,qBAAqB,sCAAsC,EAAE;AAC9I,wCAAwC,OAAO,wCAAwC,qBAAqB,sCAAsC,EAAE,GAAG;AACvJ;AACA;AACA,wCAAwC,OAAO,kCAAkC,UAAU,sCAAsC,EAAE;AACnI;AACA;AACA;AACA;AACA,kBAAkB,OAAO,0CAA0C,qBAAqB,wCAAwC;AAChI;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO,0CAA0C,UAAU,wCAAwC;AACrH;AACA;AACA;AACA,wCAAwC,OAAO,2BAA2B,sBAAsB,oCAAoC,EAAE;AACtI,wCAAwC,OAAO,iCAAiC,sBAAsB,oCAAoC,EAAE,GAAG;AAC/I;AACA;AACA,wCAAwC,OAAO,4BAA4B,sBAAsB,wCAAwC,EAAE;AAC3I,wCAAwC,OAAO,kCAAkC,sBAAsB,wCAAwC,EAAE,GAAG;AACpJ;AACA;AACA,wCAAwC,OAAO,4BAA4B,UAAU,wCAAwC,EAAE;AAC/H;AACA;AACA,wCAAwC,OAAO,wEAAwE,sBAAsB,4BAA4B,EAAE;AAC3K;AACA;AACA,wCAAwC,OAAO,sDAAsD,WAAW,4BAA4B,EAAE;AAC9I;AACA;AACA,wCAAwC,OAAO,4BAA4B,uBAAuB,6BAA6B,sBAAsB,EAAE;AACvJ;AACA;AACA;AACA;AACA,kBAAkB,OAAO,iCAAiC,sBAAsB,yBAAyB,sBAAsB;AAC/H;AACA;AACA;AACA,wCAAwC,OAAO,2BAA2B,uBAAuB,iCAAiC,sBAAsB,EAAE;AAC1J;AACA;AACA,wCAAwC,OAAO,yBAAyB,uBAAuB,yBAAyB,sBAAsB,EAAE;AAChJ;AACA;AACA;AACA,kBAAkB,OAAO;AACzB,kBAAkB,OAAO;AACzB,kBAAkB,OAAO,+BAA+B,qBAAqB,0BAA0B,YAAY,2BAA2B;AAC9I;AACA;AACA;AACA,oDAAoD,qBAAqB,kCAAkC,EAAE;AAC7G;AACA;AACA,oDAAoD,qBAAqB,gCAAgC,EAAE;AAC3G;AACA;AACA,+DAA+D,qBAAqB,yCAAyC,EAAE;AAC/H;AACA;AACA,oDAAoD,2BAA2B,0BAA0B,EAAE;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4DAAa;AACtC,mCAAmC,4DAAa;AAChD,mCAAmC,4DAAa;AAChD,qCAAqC,4DAAa;AAClD,qCAAqC,4DAAa;AAClD,qCAAqC,4DAAa;AAClD,yBAAyB,4DAAa;AACtC,wBAAwB,4DAAa;AACrC,4BAA4B,4DAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,aAAa,EAAE;AACrC,uBAAuB,EAAE;AACzB,sBAAsB,cAAc,EAAE;AACtC,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,iCAAiC,2DAAa;AAC9C;AACA,+BAA+B,iEAAe;AAC9C;AACA,iCAAiC,qDAAO;AACxC;AACA;AACA;AACA;AACA,QAAQ,0DAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,cAAc,mEAAmE;AAC3I,wBAAwB,mDAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,iCAAiC,qDAAoB;AACrD;AACA;AACA,8BAA8B,2DAAkB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAS,CAAC,oDAAQ;AAC5C,yBAAyB,uDAAS,CAAC,oDAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uDAAS;AACxB;AACA;AACA,eAAe,uDAAS;AACxB;AACA,iBAAiB,wBAAwB;AACzC,wBAAwB,+BAA+B;AACvD,2BAA2B,kCAAkC;AAC7D,8BAA8B,qCAAqC;AACnE,qBAAqB,uCAAuC;AAC5D,uBAAuB,8BAA8B;AACrD,wBAAwB,+BAA+B;AACvD,iBAAiB,wBAAwB;AACzC;AACA,4BAA4B,yDAAW,CAAC,oDAAQ;AAChD,0BAA0B,oEAAqB;AAC/C;AACA,0BAA0B,oBAAoB,qBAAqB,cAAc,EAAE;AACnF;AACA,0BAA0B,yDAAW,CAAC,oDAAQ;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,SAAS;AACT;AACA,0BAA0B,yDAAW;AACrC;AACA,mBAAmB,+BAA+B,OAAO,0BAA0B,uDAAuD,gBAAgB;AAC1J;AACA,eAAe,uDAAS;AACxB;AACA,qBAAqB,QAAQ,oDAAQ,+BAA+B;AACpE;AACA;AACA;AACA,oCAAoC;AACpC,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAS,oCAAoC,MAAM;AACzE;AACA;AACA,sBAAsB,gDAAS,qCAAqC,YAAY;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gDAAS,6BAA6B,MAAM;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gDAAS,6BAA6B,MAAM;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAS,6BAA6B,MAAM;AAClE;AACA;AACA;AACA;AACA,YAAY,0DAAQ;AACpB;AACA;AACA,uCAAuC,0DAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gDAAS,6BAA6B,MAAM;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC,gBAAgB;AAChB;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB,QAAQ,gDAAe;AACvB,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0DAAO;AACX;AACA;AACA,IAAI,0DAAO;AACX;AACA;AACA,IAAI,0DAAO;AACX;;;;;;;;;;;;;;;;;;;;ACztCA;AACA;AACA;AACA;AACiD;AACjD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAe;AAC5C,YAAY,2DAAa;AACzB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACO,gBAAgB,aAAa;AACpC,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS,aAAa;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uBAAuB;AAC9D,sCAAsC,4DAA4D;AAClG,wBAAwB,4CAA4C;AACpE;AACA,oBAAoB,uCAAuC;AAC3D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChJA;AACA;AACA;AACA;AAC8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0CAAC;AAC7B;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC;AACA,YAAY,oDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,WAAW;AAChE;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AAC0C;AACY;AACgB;AAChB;AACsM;AAC7L;AACH;AACG;AACU;AAClB;AACY;AACgB;AACE;AAC3B;AACb;AACY;AAClD;AACA,2CAA2C,QAAQ;AAC1D,0BAA0B,kEAAY,mBAAmB,+DAAa;AACtE,wBAAwB,kEAAY,iBAAiB,sEAAoB;AAClE;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AACxB,mBAAmB,8DAAS;AACnC,gDAAgD;AAChD,QAAQ,iDAAQ;AAChB;AACA;AACA,QAAQ,iDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B,6DAAW,IAAI,yDAAO;AAC3E,SAAS;AACT;AACA;AACA;AACA,kDAAkD,iEAAe;AACjE;AACA,QAAQ,8DAAqB,cAAc,uDAAkB;AAC7D,8BAA8B,oEAAqB;AACnD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qCAAqC,8DAAqB,cAAc,uDAAkB;AAC1F;AACA;AACA,oBAAoB,qDAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,yDAAO;AACnB,2BAA2B,8DAAqB,cAAc,uDAAkB;AAChF,kCAAkC,oEAAqB;AACvD;AACA;AACA;AACA,oBAAoB,qDAAgB;AACpC;AACA;AACA;AACA;AACA,oBAAoB,qDAAgB;AACpC;AACA,aAAa;AACb;AACA,uBAAuB,8DAAqB,eAAe,wDAAmB;AAC9E;AACA,iBAAiB,mDAAU;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,8DAAqB,mBAAmB,yDAAoB;AACnF;AACA,4BAA4B,mDAAU;AACtC;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oDAAoD,iFAAoB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,8DAAqB,gBAAgB,uDAAkB;AAC9E;AACA;AACA;AACA,SAAS;AACT,yCAAyC,8EAA8E;AACvH;AACA;AACA;AACA,qDAAqD,KAAK;AAC1D;AACA;AACA;AACA,SAAS;AACT,4BAA4B,wCAAwC;AACpE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,sDAAa;AACzB,8BAA8B,yDAAgB;AAC9C;AACA;AACA;AACA;AACA,wCAAwC,yDAAgB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,sBAAsB;AACzE,mDAAmD,sBAAsB;AACzE,wDAAwD,kBAAkB;AAC1E,wDAAwD,kBAAkB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sCAAsC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,8BAA8B,yDAAS;AACvC,6EAA6E,aAAa;AAC1F;AACA,mCAAmC,6DAAa;AAChD,uIAAuI,aAAa,kEAAkE;AACtN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8EAAkB;AACvD,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,8DAAgB;AAC1D;AACA;AACA;AACA,2BAA2B,8DAAqB,eAAe,uDAAkB;AACjF;AACA;AACA;AACA,gBAAgB,qDAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mDAAS;AAC7B,2CAA2C,+DAAkB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,2BAA2B,8DAAqB,eAAe,2DAAsB;AACrF,gBAAgB,qDAAgB;AAChC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAM,eAAe,0CAAC;AAC1C,gCAAgC,4DAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,cAAc;AAC7E;AACA;AACA,qBAAqB,+CAAM,YAAY,0CAAC;AACxC;AACA,qBAAqB,+CAAM,YAAY,0CAAC;AACxC;AACA,YAAY,+CAAM,YAAY,0CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,sDAAsD,QAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kDAAS;AACrB,wBAAwB,mEAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sDAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,KAAK,UAAU;AAC3F;AACA,0CAA0C,qDAAa,8DAA8D,0CAAC,OAAO,wBAAwB,gBAAgB,qDAAa;AAClL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6CAAY,EAAE,oEAAoE,IAAI,EAAE,GAAG,EAAE;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sDAAa;AACzB;AACA;AACA;AACA,YAAY,iDAAQ;AACpB;AACA,gBAAgB,mDAAU;AAC1B;AACA;AACA;AACA;AACA,YAAY,oDAAW;AACvB;AACA;AACA;AACA;AACA;AACA,gBAAgB,oDAAW;AAC3B;AACA;AACA,gBAAgB,oDAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAQ;AACxB;AACA;AACA,gBAAgB,iDAAQ;AACxB,gBAAgB,qEAA4B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iDAAQ;AACpB;AACA;AACA;AACA;AACA,YAAY,oDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iDAAQ;AACnD;AACA;AACA,yFAAyF,oCAAoC;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iEAAe;AACpE;AACA;AACA,iCAAiC,8DAAgB;AACjD;AACA;AACA;AACA;AACA,SAAS;AACT,iCAAiC,8DAAgB;AACjD,kCAAkC,mDAAU,CAAC,yDAAgB;AAC7D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iDAAQ;AACpB;AACA;AACA,oCAAoC,+CAAM,YAAY,0CAAC;AACvD;AACA;AACA,uBAAuB,8DAAqB,eAAe,qDAAgB;AAC3E,4BAA4B,oEAAqB;AACjD;AACA,gBAAgB,qDAAgB;AAChC;AACA;AACA,SAAS;AACT,uBAAuB,8DAAqB,eAAe,uDAAkB;AAC7E,4BAA4B,oEAAqB;AACjD,gBAAgB,yDAAgB;AAChC;AACA,oBAAoB,qDAAgB;AACpC;AACA;AACA,SAAS;AACT,uBAAuB,8DAAqB,eAAe,yDAAoB;AAC/E;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,8DAAqB,eAAe,0DAAqB;AAChF;AACA,SAAS;AACT,uBAAuB,8DAAqB,eAAe,wDAAmB;AAC9E,iCAAiC,mDAAU,CAAC,yDAAgB;AAC5D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,qDAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,mBAAmB,mEAAM,yCAAyC,wHAAwH;AAC1L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mEAAM,2CAA2C,uDAAuD;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAAM,eAAe,0CAAC;AAC1D,YAAY,mDAAU;AACtB;AACA;AACA;AACA;AACA,oDAAoD,0EAA0E;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,YAAY,oCAAoC,uDAAuD;AAC1H,kDAAkD,KAAK;AACvD,iDAAiD,IAAI;AACrD,wCAAwC,8DAAqB,wBAAwB,qDAAgB;AACrG,gCAAgC,oEAAqB;AACrD;AACA,oBAAoB,qDAAgB;AACpC;AACA;AACA;AACA,aAAa;AACb,wCAAwC,8DAAqB,wBAAwB,uDAAkB;AACvG,gCAAgC,oEAAqB;AACrD;AACA,oBAAoB,qDAAgB;AACpC;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iDAAQ;AACnD;AACA;AACA,6DAA6D,QAAQ;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0EAAc;AACxD;AACA;AACA,2EAA2E,qBAAqB;AAChG;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE,uEAAU;AACZ,EAAE,uEAAU;;AAEZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzlCA;AACA;AACA;AACA;AAC2B;AACpB;;;;;;;;;;;;;;;;;;;;;;ACLP;AACA;AACA;AACA;AAC2B;AAC+B;AACT;AACE;AACgC;AACvB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAa;AACxC;AACA;AACA;AACA;AACO,0BAA0B,4DAAU;AAC3C;AACA;AACA;AACA,QAAQ,yDAAK;AACb;AACA;AACA,uDAAuD,8DAAgB,OAAO,6CAAI;AAClF;AACA;AACA;AACA;AACA,QAAQ,iDAAQ;AAChB;AACA;AACA,QAAQ,iDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sDAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iDAAQ;AAChB;AACA,aAAa,iDAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sDAAa;AACrB,QAAQ,mDAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACoB;AACgE;AAC1B;AACR;AACE;AACK;AACN;AACsG;AAC/G;AAC1C;AACA;AACA,kCAAkC,qDAAO;AAClC,mBAAmB,4DAAU;AACpC;AACA;AACA;AACA,yDAAyD,qDAAO;AAChE;AACA,8CAA8C,qDAAO;AACrD;AACA,+CAA+C,qDAAO;AACtD;AACA,8CAA8C,qDAAO;AACrD;AACA,4CAA4C,qDAAO;AACnD;AACA;AACA,iEAAiE,iEAAe;AAChF,+DAA+D,iEAAe;AAC9E,kBAAkB,+CAAM,YAAY,0CAAC;AACrC,YAAY,4DAAW;AACvB,YAAY,iDAAQ;AACpB;AACA,uBAAuB,mDAAQ;AAC/B,uBAAuB,mDAAQ;AAC/B,uBAAuB,wDAAiB;AACxC,uBAAuB,mDAAQ,UAAU,sDAAe;AACxD;AACA;AACA;AACA,yCAAyC,UAAU;AACnD;AACA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iDAAQ;AACpB,YAAY,oDAAW;AACvB;AACA;AACA,YAAY,oDAAW;AACvB,YAAY,iDAAQ;AACpB;AACA,QAAQ,oDAAW;AACnB;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA,QAAQ,oDAAW;AACnB,QAAQ,oDAAW;AACnB,QAAQ,oDAAW;AACnB;AACA;AACA;AACA,+BAA+B,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gCAAgC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,eAAe,6DAAoB;AACnC,eAAe,6DAAoB;AACnC;AACA;AACA,gDAAgD;AAChD;AACA,mCAAmC,8DAAkB;AACrD;AACA;AACA;AACA,4BAA4B;AAC5B,QAAQ,iDAAQ;AAChB;AACA;AACA,sBAAsB,yDAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4DAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4DAAW;AACxC;AACA;AACA,kCAAkC,WAAW,OAAO,YAAY,EAAE;AAClE;AACA,gCAAgC,iEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAgB;AAC5B,uCAAuC,8DAAkB;AACzD,2BAA2B;AAC3B;AACA;AACA;AACA,YAAY,qDAAgB;AAC5B;AACA,YAAY,oDAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAQ;AAChB,QAAQ,mDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,8DAAqB,UAAU,uDAAgB;AACtE,gBAAgB,sDAAc,iBAAiB,sDAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,uBAAuB,8DAAqB,UAAU,oDAAa;AACnE;AACA,YAAY,6DAAO;AACnB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAW;AACnB;AACA;AACA,QAAQ,oDAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACpSA;AACA;AACA;AACA;AACoC;AACqB;AACyC;AAC7C;AAC8B;AAC7C;AACkB;AACxD;AACA;AACA;AACA;AACO,gCAAgC,8CAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,4FAA6B;AACrF;AACA,oDAAoD,8EAAsB;AAC1E;AACA,uBAAuB,kEAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8DAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2DAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,EAAE;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,+EAAuB;AAC3F;AACA;AACA,gBAAgB,0DAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACpMA;AACA;AACA;AACA;AACyD;AACE;AACN;AACA;AACe;AACpE,gCAAgC,iEAAY,0BAA0B,qEAAoB;AAC1F,iCAAiC,iEAAY,2BAA2B,sEAAqB;AACtF,kCAAkC,oEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAc;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA,kDAAkD,8DAAc;AAChE,oEAAoE,8DAAc;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,8DAAkB;AAChF,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,8DAAkB;AAChF,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACgC;AACI;AACqB;AACA;AACM;AACJ;AACrB;AACkB;AACL;AACI;AACC;AACG;AACV;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wCAAwC,8CAAM;AACrD;AACA;AACA,4CAA4C,qDAAO;AACnD;AACA,gDAAgD,qDAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,oEAAiB;AACtE,uDAAuD,wEAAmB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kEAAiB;AACvD;AACA;AACA,qCAAqC,kEAAiB;AACtD;AACA;AACA,yCAAyC,kEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0DAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA;AACA,uCAAuC,8DAAkB;AACzD;AACA,2CAA2C,0DAAyB,wBAAwB,0DAAyB,iBAAiB,iBAAiB;AACvJ;AACA;AACA;AACA;AACA;AACA,2DAA2D,2DAAa;AACxE,gBAAgB,2DAAkB,IAAI,yDAAgB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,WAAW,IAAI,SAAS,IAAI,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6DAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,+BAA+B,8DAAU,kBAAkB,iEAAgC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAoB;AAC5B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACzdA;AACA;AACA;AACA;AACkG;AAC5D;AACiC;AAC7B;AAC1C;AACA;AACA;AACO;AACA,6BAA6B,8CAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8EAAsB;AAC1E;AACA;AACA,wDAAwD,2DAAa;AACrE,gEAAgE,0DAAY;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,+EAAuB;AAC3F;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACwD;AACE;AACnD,4CAA4C,4DAAU;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,0DAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACyD;AACE;AACN;AACA;AACe;AACpE,8BAA8B,iEAAY,wBAAwB,mEAAkB;AACpF,gCAAgC,iEAAY,0BAA0B,qEAAoB;AACnF,gCAAgC,oEAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAc;AAC9C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kDAAkD,8DAAc;AAChE,kEAAkE,8DAAc;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,8DAAkB;AAChF,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,8DAAkB;AAChF,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACyB;AACmE;AAClC;AACR;AACd;AACe;AACmC;AAC/C;AACU;AACP;AAC1C;AACA,qBAAqB,+DAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yDAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gDAAe;AACvB;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE,2BAA2B,8BAA8B;AACzD,uBAAuB,iDAAiD;AACxE,2BAA2B,8BAA8B;AACzD,oBAAoB,2BAA2B;AAC/C,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,OAAO;AAC7C,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AAChB;AACP;AACA,yBAAyB;AACzB,2BAA2B,SAAS,wBAAwB;AAC5D;AACA,2CAA2C,SAAS,wCAAwC;AAC5F;AACA,CAAC,wBAAwB;AAClB,wBAAwB,4DAAU;AACzC,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,qDAAO;AAC1D;AACA,kDAAkD,qDAAO;AACzD;AACA;AACA,2BAA2B,yDAAiB;AAC5C;AACA,kCAAkC,yDAAiB;AACnD;AACA,QAAQ,6CAAY;AACpB,QAAQ,6CAAY;AACpB;AACA,6BAA6B,2CAAU,UAAU,sCAAK;AACtD,6BAA6B,2CAAU,UAAU,sCAAK;AACtD;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAiB,4EAA4E;AAC5H;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,+BAA+B,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gCAAgC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,mCAAmC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iCAAiC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gDAAe;AAC3B;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAK;AACjC;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA,4BAA4B,yDAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,sBAAsB,6DAAU;AAChC;AACA,2BAA2B,wEAAkB,CAAC,mDAAQ,2FAA2F,mDAAQ;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wDAAK;AACvC,oCAAoC,wDAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B,eAAe,sEAAsE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAK;AAC7B;AACA;AACA;AACA;AACA,eAAe,yDAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yDAAK;AAC7B;AACA,wBAAwB,wDAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sCAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kEAAY;AAChD,2BAA2B,wEAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAI,sBAAsB,6DAA6D;AAC7G;AACA;AACA;AACA,iBAAiB;AACjB,sBAAsB,+CAAI,sBAAsB,4DAA4D;AAC5G;AACA;AACA;AACA,iBAAiB;AACjB;AACA,2BAA2B,4DAA4D;AACvF,2BAA2B,4DAA4D;AACvF,4BAA4B,uDAAS;AACrC;AACA,6BAA6B,uDAAS;AACtC;AACA,0BAA0B,uDAAS,sBAAsB,6DAAU;AACnE;AACA;AACA,8BAA8B,6DAAU;AACxC,kCAAkC,wDAAK;AACvC,oCAAoC,wDAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,+BAA+B,wEAAkB;AACjD,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAK;AAC/B,4BAA4B,wDAAK;AACjC;AACA;AACA,gBAAgB,8DAAW;AAC3B,gBAAgB,8DAAW;AAC3B;AACA;AACA;AACA;AACA,gBAAgB,4DAAS;AACzB,gBAAgB,4DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAK;AACrB,wCAAwC,oBAAoB;AAC5D;AACA,yBAAyB,yDAAK;AAC9B;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA,yBAAyB,yDAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAK;AAC7B;AACA;AACA;AACA,YAAY,8DAAW;AACvB;AACA;AACA,YAAY,4DAAS;AACrB;AACA;AACA,YAAY,4DAAS;AACrB;AACA,uBAAuB,wCAAwC;AAC/D;AACA,yBAAyB,yDAAK;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA,kCAAkC,wDAAK;AACvC,oCAAoC,wDAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1nBA;AACA;AACA;AACA;AAC0B;AACwE;AAC+B;AAC0D;AAC3G;AACjB;AACd;AACS;AACa;AACT;AACpB;AAC0B;AACE;AACxB;AACe;AACH;AACP;AACK;AACoE;AAC5H,0CAA0C,sEAAuB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iEAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oEAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY,WAAW,wDAAK,yBAAyB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA,SAAS;AACT;AACA,sHAAsH,OAAO,qBAAqB;AAClJ,aAAa;AACb;AACA,qHAAqH,OAAO,qBAAqB;AACjJ;AACA,SAAS,wFAAwF,mCAAmC;AACpI;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa,GAAG,6GAA6G,6CAA6C;AAC1K;AACA,aAAa,EAAE,+DAA+D;AAC9E;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA,2BAA2B,2DAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAAM;AAC9C;AACA,sCAAsC,iEAAe;AACrD,+BAA+B,iEAAe;AAC9C;AACA;AACA,QAAQ,uDAAS;AACjB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,0BAA0B,0DAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iEAAe;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+CAAM,YAAY,0CAAC;AACtC,uBAAuB,+CAAM,KAAK,0CAAC;AACnC,wBAAwB,+CAAM,KAAK,0CAAC;AACpC,yBAAyB,+CAAM,KAAK,0CAAC;AACrC;AACA,gBAAgB,qDAAqD,iEAAe;AACpF;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D,6CAA6C,0BAA0B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAU,uBAAuB,2EAA+B;AAC5E,YAAY,oDAAW;AACvB;AACA;AACA,YAAY,sDAAa,uBAAuB,2EAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAS;AACjB;AACA;AACA;AACA;AACA,oCAAoC,iEAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0CAAC,mBAAmB,kBAAkB,YAAY,KAAK;AACjF;AACA,gBAAgB,iDAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kEAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gEAAgE,oDAAW;AAC3E;AACA,SAAS;AACT;AACA;AACA,gEAAgE,iDAAQ;AACxE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAe;AAC9C;AACA;AACA,sBAAsB,yBAAyB;AAC/C,sBAAsB,yBAAyB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mEAAc;AACnC,6BAA6B,oEAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO,mEAAkB;AAC7C;AACA;AACA;AACA;AACA,oBAAoB,OAAO,mEAAkB;AAC7C;AACA,sBAAsB,+DAAU;AAChC;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO,mEAAkB;AACjD;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qDAAO;AACjD;AACA;AACA;AACA,uCAAuC,qDAAO;AAC9C,sCAAsC,iEAAe;AACrD,+BAA+B,iEAAe;AAC9C,uBAAuB,0CAAC,6BAA6B,uBAAuB;AAC5E;AACA,QAAQ,oDAAQ;AAChB,8BAA8B,+CAAM,wBAAwB,0CAAC;AAC7D,4BAA4B,+CAAM,eAAe,0CAAC;AAClD,yBAAyB,+CAAM,eAAe,0CAAC;AAC/C;AACA,mCAAmC,+CAAM,WAAW,0CAAC;AACrD;AACA;AACA;AACA;AACA,QAAQ,oDAAQ;AAChB,4BAA4B,+CAAM,WAAW,0CAAC,kBAAkB,2EAA+B;AAC/F;AACA,kCAAkC,kDAAQ;AAC1C;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yDAAW,CAAC,oDAAQ;AAC9C,0BAA0B,mEAAc;AACxC;AACA,0BAA0B,oEAAqB;AAC/C;AACA;AACA,ubAAub,6DAAW;AAClc,2BAA2B,qBAAqB,oBAAoB,EAAE;AACtE;AACA,wBAAwB,oDAAQ;AAChC,QAAQ,yDAAW,CAAC,uDAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iHAAiH,6DAAW;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,qEAAoB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO,GAAG,+DAAsB;AAC/C;AACA;AACA;AACA,gCAAgC,iEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,uBAAuB;AACvF;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA,QAAQ,oDAAW;AACnB,QAAQ,iDAAQ;AAChB,wBAAwB,kEAAY,OAAO,oDAAW;AACtD,QAAQ,oDAAQ;AAChB,QAAQ,oDAAQ;AAChB,QAAQ,qEAAgC,OAAO,oDAAe;AAC9D,wBAAwB,kEAAY,OAAO,qEAAgC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iDAAiD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sDAAa,2BAA2B,8EAAkC;AACtF,YAAY,mDAAU,2BAA2B,6EAAiC;AAClF,6CAA6C,kDAAQ;AACrD;AACA;AACA,YAAY,sDAAa,2BAA2B,6EAAiC;AACrF,YAAY,mDAAU,2BAA2B,8EAAkC;AACnF,6CAA6C,kDAAQ;AACrD;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAW;AACnB,6BAA6B,kDAAQ,oBAAoB,EAAE,SAAS,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA;AACA,iBAAiB,kEAA4B;AAC7C,QAAQ,2DAAkB;AAC1B,iBAAiB,kEAA4B;AAC7C;AACA,aAAa,2DAAkB;AAC/B,iBAAiB,kEAA4B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qDAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yDAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB,mBAAmB,EAAE,gBAAgB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gEAAe;AACzD;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAc,2BAA2B,mEAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iDAAQ;AAClC,gBAAgB,iDAAQ,iCAAiC,iDAAQ;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iDAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,2BAA2B,8DAAW;AACtC;AACA;AACA,+BAA+B,8DAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mEAAmE;AACnE;AACA,iCAAiC,2DAAa;AAC9C,+BAA+B,iEAAe;AAC9C,mCAAmC,qDAAO;AAC1C;AACA,uCAAuC,qDAAO;AAC9C;AACA,kDAAkD,mDAAK;AACvD,2CAA2C,mDAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,cAAc,iBAAiB,EAAE;AACtF;AACA;AACA;AACA;AACA,8IAA8I,+CAA+C,aAAa;AAC1M;AACA;AACA,iCAAiC,2DAAa;AAC9C;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yDAAW,CAAC,uDAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,8BAA8B,yDAAW;AACzC,8BAA8B,mEAAc;AAC5C,8BAA8B,oEAAqB;AACnD;AACA;AACA;AACA;AACA;AACA,oEAAoE,kFAAiC;AACrG;AACA;AACA;AACA;AACA,4BAA4B,yDAAgB;AAC5C,QAAQ,oDAAW;AACnB;AACA,4BAA4B,6DAA6D;AACzF,gCAAgC,iEAAiE;AACjG,2BAA2B,QAAQ,uDAAS,8CAA8C;AAC1F,qBAAqB,QAAQ,uDAAS,wCAAwC;AAC9E,sBAAsB,6BAA6B;AACnD,oCAAoC,4CAA4C;AAChF,mCAAmC,QAAQ,4FAA4F;AACvI,oCAAoC,uHAAuH;AAC3J,wBAAwB,+BAA+B;AACvD,oCAAoC;AACpC,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,oDAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA,wCAAwC,OAAO,wDAAwD,OAAO,4CAA4C,iBAAiB,gDAAgD,EAAE;AAC7N,wCAAwC,OAAO,2CAA2C,iBAAiB,+BAA+B,EAAE;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChmCA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACyD;AACY;AACnB;AACsB;AACd;AACkB;AACrB;AACO;AACwB;AAC7B;AACa;AACjB;AACrD;AACA,yCAAyC,WAAW,mGAAmG;AACvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kCAAkC;AACrD,oBAAoB,2EAA2E;AAC/F,iBAAiB,wBAAwB;AACzC,gCAAgC,uCAAuC;AACvE,6BAA6B,oCAAoC;AACjE,uBAAuB,8BAA8B;AACrD,qBAAqB,4BAA4B;AACjD,mBAAmB,0BAA0B;AAC7C,sBAAsB,6BAA6B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAU,iBAAiB,0EAA8B;AACrE;AACA;AACA,YAAY,sDAAa,iBAAiB,0EAA8B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,sEAAuB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA,SAAS;AACT;AACA,sHAAsH,OAAO,qBAAqB;AAClJ,aAAa;AACb;AACA,qHAAqH,OAAO,qBAAqB;AACjJ;AACA,SAAS,wFAAwF,mCAAmC;AACpI;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa,GAAG;AAChB;AACA;AACA;AACA,SAAS,4GAA4G,6CAA6C;AAClK;AACA,aAAa,EAAE,gUAAgU;AAC/U;AACA;AACA;AACA;AACA;AACO;AACP,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA,gCAAgC,qDAAO;AACvC,6CAA6C,qDAAO;AACpD,8BAA8B,gDAAU;AACxC,+BAA+B,iEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,sDAAsD,eAAe,WAAW;AAChF;AACA;AACA;AACA;AACA,4BAA4B,QAAQ,uDAAS,0CAA0C;AACvF,gCAAgC,QAAQ,uDAAS,8CAA8C;AAC/F,2BAA2B,QAAQ,uDAAS,8CAA8C;AAC1F,qBAAqB,QAAQ,uDAAS,wCAAwC;AAC9E,sBAAsB,6BAA6B;AACnD,wBAAwB,+BAA+B;AACvD;AACA,uCAAuC,kEAAoB;AAC3D;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,+CAAS;AACnC;AACA;AACA;AACA,sBAAsB,6DAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+CAAS;AACnC;AACA;AACA;AACA,sBAAsB,6DAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6DAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6DAAe;AACrC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS,yCAAyC,QAAQ;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,+DAAc;AAChE;AACA;AACA,oCAAoC,yDAAO;AAC3C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yEAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yEAAuB;AACxC;AACA;AACA,SAAS;AACT;AACA,qCAAqC,mCAAmC,EAAE;AAC1E;AACA,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,yBAAyB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,yCAAyC;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6DAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uFAAuF;AAC3G,iBAAiB,wBAAwB;AACzC,gCAAgC,uCAAuC;AACvE,6BAA6B,oCAAoC;AACjE,uBAAuB,8BAA8B;AACrD,qBAAqB,4BAA4B;AACjD,mBAAmB,0BAA0B;AAC7C,sBAAsB,6BAA6B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAU,iBAAiB,0EAA8B;AACrE;AACA;AACA,YAAY,sDAAa,iBAAiB,0EAA8B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA,8DAA8D,uBAAuB,qHAAqH,uDAAuD;AACjQ;AACA,aAAa,EAAE,GAAG;AAClB;AACO;AACP,0GAA0G;AAC1G;AACA;AACA,0CAA0C,gDAAU;AACpD;AACA;AACA;AACA,uCAAuC,kEAAoB;AAC3D;AACA;AACA,mBAAmB,kEAAsB;AACzC;AACA;AACA,8BAA8B,0EAA0E;AACxG;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oCAAoC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gEAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mEAAc;AAC3B,eAAe,oEAAe;AAC9B;AACA;AACA,eAAe,oEAAe;AAC9B;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACjvBA;AACA;AACA;AACA;AACuD;AACN;AACC;AACK;AACvD;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C,kBAAkB,6DAAY,CAAC,8DAAa;AAC5C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,uCAAuC,iEAAgB,CAAC,8DAAa;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C,kBAAkB,6DAAY,CAAC,gEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAY,CAAC,8DAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB,WAAW;AACzE;AACA,yCAAyC,iBAAiB,WAAW,6DAAY,CAAC,8DAAa,4DAA4D;AAC3J;AACA;AACO;AACP,wCAAwC;AACxC;AACA;AACA;AACA,yBAAyB,gEAAe;AACxC;AACA;AACA,uBAAuB,+BAA+B;AACtD,oCAAoC,4CAA4C;AAChF,sCAAsC,8CAA8C;AACpF,oCAAoC,+DAAc;AAClD;AACA,uCAAuC,6DAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6DAAY;AACrD,yCAAyC,6DAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS,uCAAuC,QAAQ;AAC9E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,8EAA8E;AACjG,oBAAoB,4FAA4F;AAChH,iBAAiB,wBAAwB;AACzC,gCAAgC,uCAAuC;AACvE,6BAA6B,oCAAoC;AACjE,uBAAuB,8BAA8B;AACrD,qBAAqB,4BAA4B;AACjD,mBAAmB,0BAA0B;AAC7C,sBAAsB,6BAA6B;AACnD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS,EAAE;AACX;AACO;AACP,wCAAwC;AACxC;AACA;AACA;AACA,8BAA8B,gDAAU;AACxC;AACA;AACA;AACA,eAAe,uDAAS,2BAA2B,8BAA8B;AACjF;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,uDAAS,wCAAwC,aAAa;AAC7E;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,uDAAS;AACxB;AACA,oCAAoC,+DAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjUA;AACA;AACA;AACA;AACiD;AACM;AAChD,uBAAuB,0DAAY;AAC1C,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAe;AAClC;AACA;;;;;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACsC;AACY;AACgB;AACX;AAChD;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,qDAAqD;AACrD;AACA;AACA;AACA,iCAAiC,2DAAa;AAC9C,6CAA6C,qDAAO;AACpD;AACA,+CAA+C,qDAAO;AACtD;AACA,gCAAgC,qDAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAc;AAC3D;AACA,sBAAsB,+CAAS;AAC/B;AACA,eAAe,2CAA2C;AAC1D;AACA,sCAAsC,6DAAY;AAClD;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gCAAgC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAA6C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS;AAC/B;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+BAA+B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA,2BAA2B,0BAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,aAAa;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qCAAqC;AAC3F;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,+DAAc;AACpE;AACA,2BAA2B,6DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,eAAe,2CAA2C;AAC1D;AACA;AACA,sBAAsB,+CAAS;AAC/B;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,sBAAsB,+CAAS;AAC/B;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7cA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACuD;AACN;AACM;AACsB;AACrB;AACjD,yBAAyB,0DAAY;AAC5C,kEAAkE;AAClE;AACA;AACA,oCAAoC,4CAA4C;AAChF,oCAAoC,+DAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,0DAAO;AACX;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;AACX;AACO;AACP,kEAAkE;AAClE;AACA;AACA;AACA;AACA,oCAAoC,+DAAc;AAClD;AACA;AACA;AACA,mBAAmB,sFAA2B;AAC9C;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AChIA;AACA;AACA;AACA;AACuD;AACF;AACf;AACgB;AAC/C;AACP,wCAAwC;AACxC;AACA;AACA;AACA;AACA,yBAAyB,8DAAc;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+DAAc;AAClD;AACA;AACA;AACA,sCAAsC,+DAAc;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAc;AACnD;AACA,uBAAuB,4DAAS;AAChC;AACA,eAAe,6DAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iBAAiB,6DAA6D;AACnI;AACA;AACA;AACA,iDAAiD,iBAAiB;AAClE,uFAAuF;AACvF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS,uCAAuC,QAAQ;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS;AAC/B;AACA;AACA;AACA,sBAAsB,+CAAS,uCAAuC,QAAQ;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+CAAS,uCAAuC,QAAQ;AAC9E;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AAC9C;AACP;AACA,4BAA4B,KAAK,IAAI,QAAQ;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC5BA;AACA;AACA;AACA;AACoE;AAC7D,6BAA6B,iEAAY,uBAAuB,oEAAmB,EAAE;AACrF,+BAA+B,iEAAY,2BAA2B,mEAAkB;AACxF,gCAAgC,iEAAY,4BAA4B,sEAAqB;AAC7F,4BAA4B,iEAAY,sBAAsB,8DAAa;AAC3E,4BAA4B,iEAAY,sBAAsB,gEAAe;;;;;;;;;;;;;;;;;;;;;ACTpF;AACA;AACA;AACA;AACiC;AAC2B;AACN;AACC;AACjB;AAC/B,qBAAqB,4DAAU;AACtC;AACA,uBAAuB,0DAAyB,UAAU,oDAAmB,sBAAsB,8DAAkB;AACrH;AACA;AACA,uBAAuB,0DAAyB,UAAU,yDAAwB,sBAAsB,8DAAkB;AAC1H;AACA;AACA,uBAAuB,0DAAyB,UAAU,yDAAwB,sBAAsB,8DAAkB;AAC1H;AACA;AACA,uBAAuB,6EAA4C,8BAA8B,8DAAkB;AACnH;AACA;AACA,uBAAuB,0DAAyB,UAAU,uDAAsB,sBAAsB,oEAAqB;AAC3H;AACA;AACA,uBAAuB,0DAAyB,UAAU,qDAAoB,sBAAsB,oEAAqB;AACzH;AACA;AACA,uBAAuB,0DAAyB,UAAU,oDAAmB;AAC7E;AACA;AACA,uBAAuB,0DAAyB,UAAU,mDAAkB;AAC5E;AACA;AACA,uBAAuB,0DAAyB,UAAU,oDAAmB;AAC7E;AACA;AACA,QAAQ,2DAAoB;AAC5B;AACA;;;;;;;;;;;;;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC4C;AACP;AAC9B,qBAAqB,qDAAU;AACtC;AACA;AACA,+CAA+C,8CAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,qDAAU;AAC5C;AACA;AACA,kDAAkD,8CAAO;AACzD;AACA,4CAA4C,8CAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA,qCAAqC,iCAAiC;AACtE;AACA;AACA,qCAAqC,+BAA+B;AACpE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;AC1PA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,uDAAuD,QAAQ;AAC/D;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AAC4D;AACtB;AACQ;AACvC;AACP;AACA;AACO;AACP,uBAAuB,qEAAuB;AAC9C;AACA;AACA;AACA,mBAAmB,gDAAe;AAClC,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sBAAsB,EAAE;AACrD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gDAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gDAAe;AAClC,SAAS;AACT,KAAK;AACL;AACO;AACP;AACA,WAAW,2DAAY;AACvB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,WAAW;AACxC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC7UA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAkB;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AAC4C;AAC5C;AACA;AACA,YAAY,YAAY,sBAAsB,EAAE;AAChD,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iDAAU;AAC3C,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8CAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AAC4C;AACP;AAC9B;AACA;AACP;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACO;AACP,WAAW,uBAAuB;AAClC;AACA;AACA,eAAe,yDAAY;AAC3B;AACA;AACA;AACA,qDAAqD,kDAAK;AAC1D;AACA;AACA,oBAAoB,yDAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AACkD;AACb;AACrC;AACA;AACA;AACA,kCAAkC,8CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,QAAQ;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qCAAqC;AAC3D,uBAAuB,sCAAsC;AAC7D;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D,wCAAwC,sBAAsB;AAC9D,+CAA+C,sBAAsB;AACrE,qDAAqD,sBAAsB;AAC3E,kDAAkD,sBAAsB;AACxE,mDAAmD,sBAAsB;AACzE,wCAAwC,sBAAsB;AAC9D,qDAAqD,sBAAsB;AAC3E,iDAAiD,sBAAsB;AACvE,qDAAqD,sBAAsB;AAC3E,8DAA8D,sBAAsB;AACpF,iFAAiF,sBAAsB;AACvG,qDAAqD,sBAAsB;AAC3E,gDAAgD,sBAAsB;AACtE,sCAAsC,sBAAsB;AAC5D,6CAA6C,sBAAsB;AACnE,mDAAmD,sBAAsB;AACzE,4CAA4C,sBAAsB;AAClE,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E,2DAA2D,sBAAsB;AACjF,yDAAyD,sBAAsB;AAC/E,mDAAmD,sBAAsB;AACzE,gEAAgE,sBAAsB;AACtF,gEAAgE,sBAAsB;AACtF,2DAA2D,sBAAsB;AACjF,4CAA4C,sBAAsB;AAClE,yDAAyD,sBAAsB;AAC/E,wCAAwC,sBAAsB;AAC9D,+CAA+C,sBAAsB;AACrE,qDAAqD,sBAAsB;AAC3E,mDAAmD,sBAAsB;AACzE,8CAA8C,sBAAsB;AACpE,qDAAqD,sBAAsB;AAC3E,0CAA0C,sBAAsB;AAChE,8CAA8C,sBAAsB;AACpE,4CAA4C,sBAAsB;AAClE,qDAAqD,sBAAsB;AAC3E,6CAA6C,sBAAsB;AACnE,+CAA+C,sBAAsB;AACrE,2CAA2C,sBAAsB;AACjE,6CAA6C,sBAAsB;AACnE,sCAAsC,sBAAsB;AAC5D,qDAAqD,sBAAsB;AAC3E,iDAAiD,sBAAsB;AACvE,yDAAyD,sBAAsB;AAC/E,yDAAyD,sBAAsB;AAC/E,qDAAqD,sBAAsB;AAC3E,+DAA+D,sBAAsB;AACrF,gFAAgF,sBAAsB;AACtG,mDAAmD,sBAAsB;AACzE,+DAA+D,sBAAsB;AACrF,wCAAwC,sBAAsB;AAC9D,4CAA4C,sBAAsB;AAClE,wCAAwC,sBAAsB;AAC9D,uDAAuD,sBAAsB;AAC7E,uDAAuD,sBAAsB;AAC7E,8DAA8D,sBAAsB;AACpF,wCAAwC,sBAAsB;AAC9D,2DAA2D,sBAAsB;AACjF,0CAA0C,sBAAsB;AAChE,uDAAuD,sBAAsB;AAC7E,kCAAkC,sBAAsB;AACxD,iDAAiD,sBAAsB;AACvE,wCAAwC,sBAAsB;AAC9D,0CAA0C,sBAAsB;AAChE,+DAA+D,sBAAsB;AACrF,4CAA4C,sBAAsB;AAClE,oDAAoD,sBAAsB;AAC1E,oCAAoC,sBAAsB;AAC1D,2DAA2D,sBAAsB;AACjF,wCAAwC,sBAAsB;AAC9D,iDAAiD,sBAAsB;AACvE,wCAAwC,sBAAsB;AAC9D,gDAAgD,sBAAsB;AACtE,+DAA+D,sBAAsB;AACrF,mDAAmD,sBAAsB;AACzE,0CAA0C,sBAAsB;AAChE,wDAAwD,sBAAsB;AAC9E,qEAAqE,sBAAsB;AAC3F,uEAAuE,sBAAsB;AAC7F,+CAA+C,sBAAsB;AACrE,+CAA+C,sBAAsB;AACrE,mDAAmD,sBAAsB;AACzE,wEAAwE,sBAAsB;AAC9F,0CAA0C,sBAAsB;AAChE,gDAAgD,sBAAsB;AACtE,8CAA8C,sBAAsB;AACpE,0CAA0C,sBAAsB;AAChE,4CAA4C,sBAAsB;AAClE,2DAA2D,sBAAsB;AACjF,yDAAyD,sBAAsB;AAC/E,qDAAqD,sBAAsB;AAC3E,qDAAqD,sBAAsB;AAC3E,4CAA4C,sBAAsB;AAClE,gDAAgD,sBAAsB;AACtE,8CAA8C,sBAAsB;AACpE,wCAAwC,sBAAsB;AAC9D,sCAAsC,sBAAsB;AAC5D,uDAAuD,sBAAsB;AAC7E,0CAA0C,sBAAsB;AAChE,wCAAwC,sBAAsB;AAC9D,gDAAgD,sBAAsB;AACtE,6DAA6D,sBAAsB;AACnF,0CAA0C,sBAAsB;AAChE,uDAAuD,sBAAsB;AAC7E,yDAAyD,sBAAsB;AAC/E,2DAA2D,sBAAsB;AACjF,+DAA+D,sBAAsB;AACrF,yDAAyD,sBAAsB;AAC/E,yDAAyD,sBAAsB;AAC/E,6DAA6D,sBAAsB;AACnF,mEAAmE,sBAAsB;AACzF,2DAA2D,sBAAsB;AACjF,qDAAqD,sBAAsB;AAC3E,2DAA2D,sBAAsB;AACjF,yDAAyD,sBAAsB;AAC/E,+DAA+D,sBAAsB;AACrF,yDAAyD,sBAAsB;AAC/E,+DAA+D,sBAAsB;AACrF,wEAAwE,sBAAsB;AAC9F,mDAAmD,sBAAsB;AACzE,qDAAqD,sBAAsB;AAC3E,+DAA+D,sBAAsB;AACrF,kDAAkD,sBAAsB;AACxE,qDAAqD,sBAAsB;AAC3E,uDAAuD,sBAAsB;AAC7E,uDAAuD,sBAAsB;AAC7E,qDAAqD,sBAAsB;AAC3E,uEAAuE,sBAAsB;AAC7F,8CAA8C,sBAAsB;AACpE,mDAAmD,sBAAsB;AACzE,mDAAmD,sBAAsB;AACzE,mDAAmD,sBAAsB;AACzE,qDAAqD,sBAAsB;AAC3E,8DAA8D,sBAAsB;AACpF,8DAA8D,sBAAsB;AACpF,gEAAgE,sBAAsB;AACtF,0DAA0D,sBAAsB;AAChF,+CAA+C,sBAAsB;AACrE,wCAAwC,sBAAsB;AAC9D,wCAAwC,sBAAsB;AAC9D,wCAAwC,sBAAsB;AAC9D,gDAAgD,sBAAsB;AACtE,2GAA2G,sBAAsB;AACjI,sFAAsF,sBAAsB;AAC5G,uGAAuG,sBAAsB;AAC7H,6FAA6F,sBAAsB;AACnH,wEAAwE,sBAAsB;AAC9F,yFAAyF,sBAAsB;AAC/G,2FAA2F,sBAAsB;AACjH,sEAAsE,sBAAsB;AAC5F,uFAAuF,sBAAsB;AAC7G,kDAAkD,sBAAsB;AACxE,kDAAkD,sBAAsB;AACxE,8CAA8C,sBAAsB;AACpE,sCAAsC,sBAAsB;AAC5D,gDAAgD,sBAAsB;AACtE,2DAA2D,sBAAsB;AACjF,0CAA0C,sBAAsB;AAChE,kDAAkD,sBAAsB;AACxE,uDAAuD,sBAAsB;AAC7E,uDAAuD,sBAAsB;AAC7E,yDAAyD,sBAAsB;AAC/E,mDAAmD,sBAAsB;AACzE,uDAAuD,sBAAsB;AAC7E,6DAA6D,sBAAsB;AACnF,6DAA6D,sBAAsB;AACnF,2DAA2D,sBAAsB;AACjF,2DAA2D,sBAAsB;AACjF,oFAAoF,sBAAsB;AAC1G,uDAAuD,sBAAsB;AAC7E,yDAAyD,sBAAsB;AAC/E,iDAAiD,sBAAsB;AACvE,4CAA4C,sBAAsB;AAClE,iDAAiD,sBAAsB;AACvE,2DAA2D,sBAAsB;AACjF,uDAAuD,sBAAsB;AAC7E,wCAAwC,sBAAsB;AAC9D,uDAAuD,sBAAsB;AAC7E,mDAAmD,sBAAsB;AACzE,mEAAmE,sBAAsB;AACzF,6DAA6D,sBAAsB;AACnF,qDAAqD,sBAAsB;AAC3E,wCAAwC,sBAAsB;AAC9D,kDAAkD,sBAAsB;AACxE,gDAAgD,sBAAsB;AACtE,2DAA2D,sBAAsB;AACjF,+DAA+D,sBAAsB;AACrF,qDAAqD,sBAAsB;AAC3E,yDAAyD,sBAAsB;AAC/E,qDAAqD,sBAAsB;AAC3E,4DAA4D,sBAAsB;AAClF,0DAA0D,sBAAsB;AAChF,4DAA4D,sBAAsB;AAClF,mDAAmD,sBAAsB;AACzE,0CAA0C,sBAAsB;AAChE,oEAAoE,sBAAsB;AAC1F,yDAAyD,sBAAsB;AAC/E,yDAAyD,sBAAsB;AAC/E,mDAAmD,sBAAsB;AACzE,uDAAuD,sBAAsB;AAC7E,yDAAyD,sBAAsB;AAC/E,uDAAuD,sBAAsB;AAC7E,uDAAuD,sBAAsB;AAC7E,wCAAwC,sBAAsB;AAC9D,8CAA8C,sBAAsB;AACpE,yDAAyD,sBAAsB;AAC/E,uDAAuD,sBAAsB;AAC7E,8CAA8C,sBAAsB;AACpE,oDAAoD,sBAAsB;AAC1E,mDAAmD,sBAAsB;AACzE,qDAAqD,sBAAsB;AAC3E,iDAAiD,sBAAsB;AACvE,mDAAmD,sBAAsB;AACzE,+CAA+C,sBAAsB;AACrE,2DAA2D,sBAAsB;AACjF,0EAA0E,sBAAsB;AAChG,gEAAgE,sBAAsB;AACtF,+CAA+C,sBAAsB;AACrE,0CAA0C,sBAAsB;AAChE,4CAA4C,sBAAsB;AAClE,0CAA0C,sBAAsB;AAChE,iDAAiD,sBAAsB;AACvE,6CAA6C,sBAAsB;AACnE,wCAAwC,sBAAsB;AAC9D,yDAAyD,sBAAsB;AAC/E,yDAAyD,sBAAsB;AAC/E,wCAAwC,sBAAsB;AAC9D,wCAAwC,sBAAsB;AAC9D,qDAAqD,sBAAsB;AAC3E,wCAAwC,sBAAsB;AAC9D,mDAAmD,sBAAsB;AACzE,qDAAqD,sBAAsB;AAC3E,iDAAiD,sBAAsB;AACvE,yDAAyD,sBAAsB;AAC/E,mDAAmD,sBAAsB;AACzE,0CAA0C,sBAAsB;AAChE,8CAA8C,sBAAsB;AACpE,0CAA0C,sBAAsB;AAChE,8CAA8C,sBAAsB;AACpE,0CAA0C,sBAAsB;AAChE,wCAAwC,sBAAsB;AAC9D,6DAA6D,sBAAsB;AACnF,0CAA0C,sBAAsB;AAChE,0CAA0C,sBAAsB;AAChE,uDAAuD,sBAAsB;AAC7E,2DAA2D,sBAAsB;AACjF,4CAA4C,sBAAsB;AAClE,4CAA4C,sBAAsB;AAClE,4CAA4C,sBAAsB;AAClE,wCAAwC,sBAAsB;AAC9D,2DAA2D,sBAAsB;AACjF,sCAAsC,sBAAsB;AAC5D,sCAAsC,sBAAsB;AAC5D,iEAAiE,sBAAsB;AACvF,yDAAyD,sBAAsB;AAC/E,wCAAwC,sBAAsB;AAC9D,uDAAuD,sBAAsB;AAC7E,2DAA2D,sBAAsB;AACjF,mDAAmD,sBAAsB;AACzE,8CAA8C,sBAAsB;AACpE,gDAAgD,sBAAsB;AACtE,iDAAiD,sBAAsB;AACvE,wCAAwC,sBAAsB;AAC9D,gDAAgD,sBAAsB;AACtE,kDAAkD,sBAAsB;AACxE,8CAA8C,sBAAsB;AACpE,kDAAkD,sBAAsB;AACxE,uDAAuD,sBAAsB;AAC7E,wCAAwC,sBAAsB;AAC9D,+DAA+D,sBAAsB;AACrF,wCAAwC,sBAAsB;AAC9D,mDAAmD,sBAAsB;AACzE,wCAAwC,sBAAsB;AAC9D,gDAAgD,sBAAsB;AACtE,uDAAuD,sBAAsB;AAC7E,+CAA+C,sBAAsB;AACrE,gDAAgD,sBAAsB;AACtE,sCAAsC,sBAAsB;AAC5D,wCAAwC,sBAAsB;AAC9D,sCAAsC,sBAAsB;AAC5D,wCAAwC,sBAAsB;AAC9D,yDAAyD,sBAAsB;AAC/E,8CAA8C,sBAAsB;AACpE,8CAA8C,sBAAsB;AACpE,0CAA0C,sBAAsB;AAChE,gDAAgD,sBAAsB;AACtE,0CAA0C,sBAAsB;AAChE,qDAAqD,sBAAsB;AAC3E,kDAAkD,sBAAsB;AACxE,oDAAoD,sBAAsB;AAC1E,8CAA8C,sBAAsB;AACpE,0CAA0C,sBAAsB;AAChE,6DAA6D,sBAAsB;AACnF,4CAA4C,sBAAsB;AAClE,4CAA4C,sBAAsB;AAClE,qDAAqD,sBAAsB;AAC3E,8CAA8C,sBAAsB;AACpE,mDAAmD,sBAAsB;AACzE,4DAA4D,sBAAsB;AAClF,iDAAiD,sBAAsB;AACvE,iDAAiD,sBAAsB;AACvE,4CAA4C,sBAAsB;AAClE,6DAA6D,sBAAsB;AACnF,4CAA4C,sBAAsB;AAClE,kEAAkE,sBAAsB;AACxF,qDAAqD,sBAAsB;AAC3E,sCAAsC,sBAAsB;AAC5D,wCAAwC,sBAAsB;AAC9D,+CAA+C,sBAAsB;AACrE,6CAA6C,sBAAsB;AACnE,wCAAwC,sBAAsB;AAC9D,qDAAqD,sBAAsB;AAC3E,yDAAyD,sBAAsB;AAC/E,qDAAqD,sBAAsB;AAC3E,4CAA4C,sBAAsB;AAClE,yDAAyD,sBAAsB;AAC/E,gDAAgD,sBAAsB;AACtE,4CAA4C,sBAAsB;AAClE,4CAA4C,sBAAsB;AAClE,6DAA6D,sBAAsB;AACnF,+DAA+D,sBAAsB;AACrF,2DAA2D,sBAAsB;AACjF,gDAAgD,sBAAsB;AACtE,iDAAiD,sBAAsB;AACvE,iDAAiD,sBAAsB;AACvE,uDAAuD,sBAAsB;AAC7E,uDAAuD,sBAAsB;AAC7E,6DAA6D,sBAAsB;AACnF,kEAAkE,sBAAsB;AACxF,uDAAuD,sBAAsB;AAC7E,qDAAqD,sBAAsB;AAC3E,+DAA+D,sBAAsB;AACrF,2DAA2D,sBAAsB;AACjF,qDAAqD,sBAAsB;AAC3E,6DAA6D,sBAAsB;AACnF,6DAA6D,sBAAsB;AACnF,4CAA4C,sBAAsB;AAClE,+DAA+D,sBAAsB;AACrF,2DAA2D,sBAAsB;AACjF,gDAAgD,sBAAsB;AACtE,kDAAkD,sBAAsB;AACxE,iDAAiD,sBAAsB;AACvE,mDAAmD,sBAAsB;AACzE,oDAAoD,sBAAsB;AAC1E,gDAAgD,sBAAsB;AACtE,0CAA0C,sBAAsB;AAChE,yDAAyD,sBAAsB;AAC/E,yDAAyD,sBAAsB;AAC/E,2DAA2D,sBAAsB;AACjF,qDAAqD,sBAAsB;AAC3E,8CAA8C,sBAAsB;AACpE,4CAA4C,sBAAsB;AAClE,4CAA4C,sBAAsB;AAClE,4CAA4C,sBAAsB;AAClE,oDAAoD,sBAAsB;AAC1E,gDAAgD,sBAAsB;AACtE,gDAAgD,sBAAsB;AACtE,iDAAiD,sBAAsB;AACvE,mDAAmD,sBAAsB;AACzE,mDAAmD,sBAAsB;AACzE,0CAA0C,sBAAsB;AAChE,oDAAoD,sBAAsB;AAC1E,mDAAmD,sBAAsB;AACzE,4CAA4C,sBAAsB;AAClE,iDAAiD,sBAAsB;AACvE,6CAA6C,sBAAsB;AACnE,+CAA+C,sBAAsB;AACrE,qDAAqD,sBAAsB;AAC3E,iDAAiD,sBAAsB;AACvE,2DAA2D,sBAAsB;AACjF,kDAAkD,sBAAsB;AACxE,iDAAiD,sBAAsB;AACvE,qGAAqG,sBAAsB;AAC3H,gFAAgF,sBAAsB;AACtG,iGAAiG,sBAAsB;AACvH,4EAA4E,sBAAsB;AAClG,sEAAsE,sBAAsB;AAC5F,+DAA+D,sBAAsB;AACrF,8EAA8E,sBAAsB;AACpG,sFAAsF,sBAAsB;AAC5G,yDAAyD,sBAAsB;AAC/E,0EAA0E,sBAAsB;AAChG,4DAA4D,sBAAsB;AAClF,oEAAoE,sBAAsB;AAC1F,yDAAyD,sBAAsB;AAC/E,yDAAyD,sBAAsB;AAC/E,wCAAwC,sBAAsB;AAC9D,mDAAmD,sBAAsB;AACzE,gDAAgD,sBAAsB;AACtE,+DAA+D,sBAAsB;AACrF,mEAAmE,sBAAsB;AACzF,8CAA8C,sBAAsB;AACpE,+CAA+C,sBAAsB;AACrE,yDAAyD,sBAAsB;AAC/E,8CAA8C,sBAAsB;AACpE,4CAA4C,sBAAsB;AAClE,6CAA6C,sBAAsB;AACnE,uDAAuD,sBAAsB;AAC7E,4CAA4C,sBAAsB;AAClE,6DAA6D,sBAAsB;AACnF,iDAAiD,sBAAsB;AACvE,2DAA2D,sBAAsB;AACjF,mEAAmE,sBAAsB;AACzF,wCAAwC,sBAAsB;AAC9D,qDAAqD,sBAAsB;AAC3E,qDAAqD,sBAAsB;AAC3E,4CAA4C,sBAAsB;AAClE,4DAA4D,sBAAsB;AAClF,mDAAmD,sBAAsB;AACzE,0CAA0C,sBAAsB;AAChE,0CAA0C,sBAAsB;AAChE,CAAC,0BAA0B;AAC3B;AACO;AACP,wFAAwF,MAAM;AAC9F;AACA;AACO;AACP;AACA,oEAAoE,MAAM;AAC1E;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B,8CAA8C,KAAK,EAAE,kCAAkC,UAAU,OAAO;AACxG,KAAK;AACL;AACA;AACO;AACP,qBAAqB,2DAAkB;AACvC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,OAAO;AACvE;AACO;AACP;AACA;AACA,qCAAqC,6BAA6B;AAClE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa,IAAI,aAAa,IAAI,aAAa;AACjF;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,2BAA2B;AAC7G;AACA;AACA;AACA;AACA,kCAAkC,aAAa,IAAI,gCAAgC,KAAK,gCAAgC;AACxH;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAa,IAAI,gCAAgC,KAAK,gCAAgC,KAAK,wBAAwB;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B,EAAE,6BAA6B,EAAE,6BAA6B;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,+CAA+C;AACvK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,sCAAsC;AAC/C,KAAK,6CAA6C;AAClD,CAAC,sBAAsB;;;;;;;;;;;;;;;;;;;ACpbgB;AACvC;AACA;AACA;AACA;AACA,4CAA4C,gDAAS;AACrD,mDAAmD,qCAAqC;AACxF;AACA;AACA;AACA;AACA,CAAC,EAAE;AACI;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChEA;AACO;AACP,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAiB,GAAG,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;ACjDA;AACA;AACA;AACA;AAC6C;AACL;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sDAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAA4C;AAChF;AACA;AACA;AACA;AACA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACoC;AACA;AACE;AACtC;AACA;AACA,eAAe,6CAAY,wBAAwB,EAAE,GAAG,EAAE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6CAAY,oDAAoD,EAAE;AACjF;AACA,gCAAgC,6CAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,6CAAY;AAC3B;AACA;AACA,uBAAuB,gDAAe;AACtC;AACA;AACA,mBAAmB,6CAAY,uBAAuB,EAAE,GAAG,EAAE;AAC7D;AACA;AACA;AACA,QAAQ,+CAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,6CAAY;AACvB;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,8CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2CAA2C,KAAK;AAChD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACgD;AACiC;AACpC;AACtC;AACP;AACA,uBAAuB,0DAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,SAAS,4BAA4B,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,iEAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,UAAU,6CAA6C,cAAc,8CAA8C,SAAS;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AACtB;AACP;AACA;AACA;AACA,+BAA+B,sDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,0DAAe;AACjD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7kBoD;AACb;AACvC;AACA;AACA;AACA;AACA;AACO;AACP,oCAAoC,+CAAS;AAC7C;AACO,kEAAkE,yCAAG;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iEAAoB;AAC/C;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACoC;AACI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6DAA4B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACO;AACP;AACA;AACA;AACA;AACA,aAAa,yCAAyC;AACtD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE,IAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;AACA,WAAW,2DAA2D;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAQ,QAAQ;AACtC;AACP;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,4BAA4B,oEAAmC;AAC/D;AACA;AACA;AACA;AACA;AACA,iBAAiB,yDAAyD;AAC1E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAwD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAA6C;AACpE,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,yBAAyB;AACrE,6CAA6C,mBAAmB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,0BAA0B;AAC7E;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACpqBA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AChB+E;AAC/C;AACU;AACI;AAC9C;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uDAAU;AAC5B;AACA;AACA;AACA,sBAAsB,0DAAkB;AACxC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,WAAW,kDAAkD;AAC7D,yDAAyD,yCAAG;AAC5D;AACA;AACA;AACA;AACA,mBAAmB,kHAAkH;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,QAAQ,mDAAS;AACjB,iDAAiD,yCAAG,EAAE;AACtD;AACA;AACA,iDAAiD,yCAAG,EAAE;AACtD;AACA,uBAAuB,2DAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC7HA;AACA;AACA;AACA;AACsC;AACE;AACA;AACL;AACC;AACI;AACxC;AACA;AACA,6BAA6B;AAC7B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,cAAc,IAAI;AACxC;AACA;AACA;AACA;AACA,yBAAyB,WAAW,GAAG,cAAc,GAAG,WAAW,GAAG,WAAW,EAAE,cAAc;AACjG;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAA8B;AAC5D;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,qCAAqC,QAAQ;AAC7C,kDAAkD,2CAA2C;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iCAAiC,+DAA8B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kCAAkC;AAClC,mCAAmC;AACnC,cAAc,qDAAqD,GAAG,KAAK,yBAAyB,KAAK;AACzG,gBAAgB,uEAAuE,GAAG;AAC1F,sCAAsC;AACtC,0CAA0C;AAC1C,kBAAkB,6CAAQ,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ,GAAG,4BAA4B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,uCAAuC;AACvC;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA,qEAAqE,+CAA+C;AACpH;AACA;AACA,oEAAoE;AACpE;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wDAAuB;AACpC;AACA;AACA,6BAA6B,8CAAc;AAC3C;AACA;AACA;AACA,kHAAkH;AAClH;AACA;AACA;AACA,0BAA0B,KAAK;AAC/B,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yCAAS,KAAK,+CAAe,qCAAqC,yCAAS;AAClG,0BAA0B,yCAAS;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO,iCAAiC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,OAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA,+BAA+B,8CAAc;AAC7C;AACA;AACA,gEAAgE,6CAAa;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qDAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC3eA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACO;AACP;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAuB;AACvC;AACA;AACA,wBAAwB,uDAAsB;AAC9C;AACA,oCAAoC,yDAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;;;;;;;;;;;;;;;;AC9P5D;AACA;AACA;AACA;AACgD;AACzC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yDAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrEA;AACA;AACA;AACA;AACqC;AACU;AACD;AACvC;AACP;AACA;AACA;AACA;AACA,kBAAkB,2DAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC,qBAAqB,wBAAwB;AAC7C,6BAA6B,gCAAgC;AAC7D;AACA;AACA,kDAAkD,4DAAc;AAChE,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kDAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oCAAoC;AACpC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM;AAC5C;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,YAAY;AACZ;;;;;;;;;;;;;;;;;AC1HA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;ACbP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,cAAc,sBAAsB,mBAAmB,aAAa,aAAa,SAAS,SAAuC,CAAC,qBAAqB,OAAC,QAAQ,wBAAwB,qDAAqD,uCAAuC,iBAAiB,YAAY,GAAG,uCAAuC,oBAAoB,mBAAmB,6BAA6B,sBAAsB,cAAc,SAAuC,QAAQ,cAAc,aAAa,WAAW,WAAW;AACniB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,GAAG,gBAAgB;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE,IAAI;AACN;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,GAAG,gBAAgB;AACrB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,GAAG,6EAA6E;AAClF;;AAEA;AACA;AACA;;AAEA,EAAE,IAAI;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE,IAAI;AACN;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;;AAEA,eAAe;AACf;AACA;AACA;;AAEA;AACA,uCAAuC;AACvC;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,UAAU;AAC3C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,+BAA+B,UAAU;AACzC,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE,GAAG,gEAAgE;AACrE;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,+BAA+B,yBAAyB;AACxD,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C,6CAA6C;AAC7C,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;;AAEA;;AAEA,EAAE,GAAG,gEAAgE;AACrE;;AAEA;AACA,cAAc;AACd,aAAa;AACb,aAAa;AACb,eAAe;AACf,cAAc;AACd;AACA;AACA,SAAS;AACT,QAAQ;AACR,QAAQ;AACR,UAAU;AACV,SAAS;AACT;AACA,wBAAwB,KAAK,KAAK,OAAO,MAAM;AAC/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,IAAI;AACN;;AAEA;AACA,+BAA+B;AAC/B;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,EAAE,IAAI;AACN,CAAC,IAAI;;AAEL;AACA,sBAAsB,SAAS,yBAAyB,EAAE;AAC1D;;AAEA;AACO;AACP;;;;;;;;;;;;;;;;ACzdA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB,iBAAiB,EAAE,EAAE;AACtE;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;AC9E7B;AACA;AACA;AACA;AAC8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AAC9B;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,2DAAe;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;;;;;;;;;;;;;;;;;;AC1PA;AACA;AACA;AACA;AACoC;AAC7B;AACP;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,aAAa,6CAAY,EAAE,0FAA0F;AACrH,cAAc,6CAAY,EAAE,yFAAyF;AACrH,YAAY,6CAAY,EAAE,qFAAqF;AAC/G,aAAa,6CAAY,EAAE,6FAA6F;AACxH;AACA,CAAC;AACD,aAAa,6CAAY,EAAE,0FAA0F;AACrH,cAAc,6CAAY,EAAE,yFAAyF;AACrH,YAAY,6CAAY,EAAE,qFAAqF;AAC/G,aAAa,6CAAY,EAAE,yFAAyF;AACpH;AACA,CAAC;AACD;AACA;AACA;AACO;AACP,aAAa,6CAAY,EAAE,8FAA8F;AACzH,cAAc,6CAAY,EAAE,6FAA6F;AACzH,YAAY,6CAAY,EAAE,yFAAyF;AACnH,aAAa,6CAAY,EAAE,6FAA6F;AACxH;AACA,CAAC;AACD,aAAa,6CAAY,EAAE,8FAA8F;AACzH,cAAc,6CAAY,EAAE,6FAA6F;AACzH,YAAY,6CAAY,EAAE,yFAAyF;AACnH,aAAa,6CAAY,EAAE,iGAAiG;AAC5H;AACA,CAAC;AACD,aAAa,6CAAY,EAAE,8FAA8F;AACzH,cAAc,6CAAY,EAAE,6FAA6F;AACzH,YAAY,6CAAY,EAAE,yFAAyF;AACnH,aAAa,6CAAY,EAAE,6FAA6F;AACxH;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AChGA;AACA;AACA;AACA;AAC+B;AACc;AACc;AACpB;AACY;AACc;AACjE;AACA;AACA;AACO;AACP;AACA,mBAAmB,6CAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sDAAO;AACvB,+BAA+B;AAC/B;AACA;AACA,4BAA4B,2DAAY;AACxC;AACA;AACA,yEAAyE,uDAAQ;AACjF,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA,4BAA4B,qDAAY,wBAAwB,yDAAgB;AAChF,8BAA8B,8BAA8B;AAC5D;AACA;AACA;AACA,eAAe,mDAAS;AACxB;AACA;AACA,cAAc,mDAAS;AACvB,SAAS,mDAAS;AAClB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,mBAAmB,6CAAQ;AAC3B;AACA,iBAAiB,uDAAQ,mCAAmC,qDAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mDAAS;AACvB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP,QAAQ,mDAAS;AACjB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,gCAAgC,kDAAK,WAAW,+CAAS,EAAE,EAAE,+CAAS,CAAC;AACvE,oCAAoC;AACpC;AACA;AACA,QAAQ,iDAAO,yCAAyC,iEAAoB;AAC5E,oBAAoB,uCAAuC;AAC3D;AACA;AACA;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;;;;;;;;;;;;;;;;;;;;;;;;;ACpCyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA,qEAAqE,kBAAkB;AACvF;AACA;AACA;AACO;AACP;AACA;AACO;AACP,QAAQ,qDAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,4BAA4B,sCAAsC;AAClE;AACO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY,EAAE,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;;;;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AAC+B;AACsD;AAC9C;AACC;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+BAA+B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6DAAgB;AAC9B,cAAc,uEAA0B;AACxC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qDAAY,IAAI,iDAAO;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAO;AAC1B;AACA;AACA,mBAAmB,uEAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAO;AAC1B;AACA;AACA,mBAAmB,oDAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8CAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8CAAS;AAC3B;AACA;AACA;AACA;AACA,mBAAmB,8CAAS;AAC5B;AACA;AACA;AACA;AACA,mBAAmB,8CAAS;AAC5B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACptBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE,KAA4D;AAC9D,EAAE,CACoD;AACtD,CAAC,qBAAqB;;AAEtB;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0CAA0C,SAAS;;AAEnD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oBAAoB,YAAY,EAAE;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,gDAAgD;AAChD;AACA,eAAe;AACf,cAAc;AACd,cAAc;AACd,gBAAgB;AAChB,eAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6DAA6D;;AAE7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,UAAU,sBAAsB;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,UAAU,kBAAkB;AAC5B;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,UAAU,OAAO;AACjB;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD;;AAElD;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,EAAE;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA,qBAAqB;AACrB;;AAEA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA,wEAAwE,gBAAgB,iCAAiC,IAAI;AAC7H,WAAW;AACX;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;;;AAGX;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB,IAAI,GAAG,GAAG,gBAAgB,GAAG,iCAAiC,IAAI;AAClF,YAAY,IAAI,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG;AACrD,iBAAiB,IAAI,GAAG,IAAI;AAC5B,qBAAqB,IAAI;AACzB,eAAe,IAAI,6BAA6B,GAAG;AACnD,cAAc,IAAI;AAClB;AACA;AACA;AACA;AACA;AACA,+CAA+C,GAAG;AAClD,oGAAoG,GAAG;AACvG,oFAAoF,GAAG;AACvF;AACA,aAAa,IAAI;AACjB;AACA;AACA,4BAA4B,IAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,IAAI;AAClC;AACA;AACA,sGAAsG,GAAG,SAAS,GAAG,WAAW,GAAG;AACnI;AACA;AACA;AACA,2FAA2F,IAAI,EAAE,IAAI;AACrG,4BAA4B,IAAI,yBAAyB,IAAI,KAAK,GAAG,kBAAkB,GAAG,iCAAiC,IAAI;AAC/H;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,GAAG;AACH,8FAA8F,IAAI,EAAE,IAAI,6BAA6B,IAAI,uBAAuB,EAAE,8BAA8B,IAAI,KAAK,GAAG,kBAAkB,GAAG,iCAAiC,IAAI;AACtQ;AACA;AACA,0FAA0F,IAAI,EAAE,IAAI,6BAA6B,IAAI,uBAAuB,EAAE,8BAA8B,IAAI,KAAK,GAAG,kBAAkB,GAAG,iCAAiC,IAAI;AAClQ;AACA;AACA;AACA;AACA;;AAEA,6BAA6B;AAC7B,mFAAmF,GAAG;AACtF,gEAAgE,GAAG;AACnE;AACA,oBAAoB,IAAI;AACxB;AACA;AACA,+FAA+F,IAAI,uEAAuE,IAAI;AAC9K,GAAG;AACH;AACA;AACA;;AAEA;AACA,oCAAoC,eAAe,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA,aAAa,GAAG;AAChB;AACA,iEAAiE,GAAG,UAAU,GAAG;AACjF;AACA,IAAI;AACJ;;AAEA,4CAA4C,cAAc,EAAE;AAC5D,0GAA0G;;AAE1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,eAAe,EAAE;AAC5D,2CAA2C,KAAK;AAChD,6CAA6C,EAAE,kCAAkC,KAAK,6CAA6C,KAAK;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;AACA;AACA,4BAA4B,oCAAoC,UAAU;AAC1E;AACA,6FAA6F,GAAG,+BAA+B,GAAG,gCAAgC,GAAG,aAAa,GAAG,6BAA6B,GAAG;AACrN,GAAG;AACH;AACA;AACA;AACA;;AAEA,4BAA4B;AAC5B,oCAAoC,GAAG;AACvC,0DAA0D,GAAG,iBAAiB,IAAI;AAClF,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,8BAA8B;AAC9B;AACA,iBAAiB,EAAE;AACnB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;;AAEA,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;;AAEhB;;AAEA,yBAAyB,QAAQ;AACjC;AACA;AACA,eAAe;;;AAGf;;AAEA,yBAAyB,QAAQ;AACjC;AACA;;AAEA,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,QAAQ;AACjC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB;;AAEhB;AACA,gBAAgB;;AAEhB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;;AAGP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,6DAA6D,WAAW,EAAE;AAC1E;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,QAAQ;AACvB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;;AAE1B;AACA;;AAEA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;;AAEA,yBAAyB,QAAQ;AACjC;AACA;AACA;;AAEA,2BAA2B,QAAQ;AACnC;AACA;AACA;AACA,mBAAmB;AACnB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,uBAAuB;AACvB;AACA,mBAAmB;AACnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,oBAAoB,4BAA4B;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;;AAEzB;AACA;AACA;;AAEA;AACA;;AAEA;AACA,+EAA+E,aAAa;AAC5F;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kFAAkF,eAAe;AACjG;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA,wEAAwE,6BAA6B;AACrG;AACA;;AAEA;AACA;AACA;AACA,+FAA+F,+BAA+B;AAC9H;AACA;AACA;;AAEA,8FAA8F,+BAA+B;AAC7H;;AAEA,iFAAiF,+BAA+B;AAChH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;;;;;AClkFD;AACA;AACA;AACA;AACuC;AACR;AACxB;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,2BAA2B,+CAAU;AACrC;AACA;AACA,2BAA2B,gDAAQ;AACnC;AACA;AACA;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AAC4C;AACK;AACf;AACK;AACE;AAClC;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,wDAAwD,0BAA0B,4BAA4B,qBAAqB;AACnI;AACA;AACA,uDAAuD,yBAAyB,4BAA4B,qBAAqB;AACjI;AACA;AACA,0DAA0D,4BAA4B,4BAA4B,qBAAqB;AACvI;AACA;AACA,wDAAwD,0BAA0B,4BAA4B,qBAAqB;AACnI;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qFAAqF,+CAAS;AAC9F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,qDAAY;AAC7B;AACA;AACA,iBAAiB,qDAAY;AAC7B,iCAAiC,gEAAqB;AACtD,oCAAoC,kEAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,+EAA+E;AAC/E,oBAAoB,+CAAK;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAiB;AACzB;AACA;AACA;AACA;AACA;AACA,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzKA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AAC+B;AACW;AACnC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,KAAK;AAC5B;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA,6BAA6B,oCAAoC;AACjE;AACA,eAAe,6CAAQ;AACvB,oBAAoB,+CAAc;AAClC,0BAA0B,KAAK,GAAG,KAAK;AACvC;AACA;AACA,SAAS;AACT;AACA;AACO;;;;;;;;;;;;;;;;;AC3FP;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACjBA;AACA;AACA;AACA;AACkE;AAC3D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,QAAQ,4DAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kDAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,SAAS,mDAAQ;AACjB;AACA;AACA,QAAQ,mDAAQ;AAChB;AACA;AACA;AACA,wBAAwB,mDAAQ,sBAAsB,mDAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC,4BAA4B;AAC5B,4BAA4B;AAC5B,4BAA4B;AAC5B,6BAA6B;AAC7B,oBAAoB;AACpB,8BAA8B;AAC9B,+BAA+B;AAC/B,sBAAsB;AACtB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,KAAK,IAAI,KAAK,GAAG,WAAW,WAAW,SAAS;AAC1E,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,UAAU;AACzD;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU,EAAE,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB,EAAE,qBAAqB;AACxD;AACA;AACA;AACA,wCAAwC,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE,KAAK;AAC3E;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAW,KAAK,eAAe,MAAM,4CAAW;AACvE;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,UAAU,IAAI,oBAAoB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB,IAAI,aAAa;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe,IAAI,aAAa;AAC/C,eAAe,eAAe,EAAE,aAAa;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,UAAU,IAAI,iBAAiB;AACzE;AACA;AACA;AACA,4CAA4C,UAAU,IAAI,oBAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,KAAK;AAC1C;AACA,+BAA+B,OAAO,IAAI,KAAK,OAAO,OAAO,EAAE,KAAK;AACpE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI,EAAE,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,iBAAiB;AACjB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E,oDAAoD,4CAAW;AAC/D;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK,GAAG,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,KAAK;AACrC,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,IAAI,EAAE,kCAAkC;AAC1D,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,iDAAgB;AACnC,iBAAiB,iDAAgB;AACjC,kBAAkB,iDAAgB;AAClC,iBAAiB,iDAAgB;AACjC,kBAAkB,iDAAgB;AAClC,iBAAiB,iDAAgB;AACjC,aAAa,iDAAgB;;;;;;;;;;;;;;;;;;;;;;;;;ACl2CpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACP,2DAA2D,qBAAM,gBAAgB,qBAAM,KAAK;AACrF;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjHA;AACA;AACA;AACA;AACqE;AACrE;AACA,WAAW,YAAY,EAAE;AACzB;AACA,oBAAoB,QAAQ,mDAAS,aAAa,qDAAW,sBAAsB,EAAE;AACrF,wBAAwB,QAAQ,0DAAY,WAAW;AACvD,CAAC;AACM;AACA;AACA;;;;;;;;;;;;;;;;ACbP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CvB;AACA;AACA;AACA;AACwC;AACL;AACS;AAC2B;AAChC;AACG;AACnC;AACP,WAAW,oDAAW;AACtB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,iDAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qDAAY;AAC5C,sBAAsB,6CAAQ,CAAC,6CAAa;AAC5C;AACA;AACA,sBAAsB,mDAAmB;AACzC;AACA,0CAA0C,kBAAkB;AAC5D,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qDAAY;AAC5C,6BAA6B,6CAAQ,CAAC,+CAAe;AACrD;AACA;AACA,6BAA6B,qDAAqB;AAClD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4BAA4B,qDAAY;AACxC,iCAAiC,8CAAc;AAC/C,mBAAmB,mDAAS,GAAG,kDAAiB;AAChD;AACA;AACA;AACA;AACA;AACA,sEAAsE,SAAS;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oDAAoB;AACnC;AACA;AACA,4BAA4B,qDAAY;AACxC,2BAA2B,6CAAQ,CAAC,6CAAa;AACjD;AACA;AACA;AACA,aAAa;AACb;AACA,uCAAuC;AACvC,mBAAmB,kDAAiB;AACpC,gDAAgD;AAChD;AACA;AACA;AACA;AACA,kBAAkB,mDAAmB;AACrC,SAAS;AACT;AACA;AACA,4BAA4B,6DAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,UAAU,gBAAgB,4BAA4B;AACjG,sCAAsC,gBAAgB;AACtD,mEAAmE,mCAAmC;AACtG,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT,2CAA2C,UAAU,gBAAgB,4BAA4B;AACjG;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;;;;;;;;;;;;;;;;;;;;;AC7K3B;AACA;AACA;AACA;AACqC;AACO;AACrC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,qDAAU;AAC1C;AACA;AACA,4CAA4C,8CAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClTA;AACA;AACA;AACA;AACwC;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mEAAkC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yDAAwB;AACpC;AACA;AACA,YAAY,yDAAwB,qBAAqB,yDAAwB;AACjF;AACA;AACA,YAAY,yDAAwB;AACpC;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B,iEAAe,QAAQ,EAAC;;;;;;;;;;;;;;;;;ACtCxB;AACA;AACA;AACA;AACwC;AACxC,2BAA2B,6DAAmB,WAAW,iEAAuB;AACzE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iEAAuB;AAC7D;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA,8BAA8B,EAAE;AAChC;AACA,iCAAiC,EAAE;AACnC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kCAAkC;AAClC,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mCAAmC,EAAE;AACrC;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yDAAyD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,UAAU,gCAAgC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP,UAAU,gCAAgC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO,kDAAkD;AACzD;AACA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,kBAAkB,sBAAsB,kBAAkB;AAC1D;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5uBA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA,6DAA6D,KAAK;AAClE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACO;AACP;AACA;AACA,0EAA0E,WAAW;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AC1IA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AAC0C;AACP;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0BAA0B,cAAc,YAAY,SAAS,aAAa,UAAU,gBAAgB,aAAa,EAAE;AAC5K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,YAAY;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2CAA2C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAS;AACrB,+BAA+B,gDAAgB;AAC/C;AACA;AACA,sBAAsB,gDAAgB;AACtC;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,qBAAqB,cAAc,EAAE,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2CAA2C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B,GAAG,eAAe,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAA+B,GAAG,eAAe,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1kBA;AACA;AACA;AACA;AAC8D;AACjB;AACN;AACF;AACrC;AACA;AACO;AACP,SAAS,+CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,0EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA,qBAAqB,0EAA8B;AACnD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,qDAAU;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAuB;AAC/C,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAuB;AACjD;AACA;AACA;AACA,mCAAmC,wDAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAuB;AAC/C,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClRA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACgC;AACsC;AACvB;AACqB;AACM;AACvB;AACuB;AAC5B;AAC4B;AACG;AAC1B;AACW;AACsB;AACjC;AACoB;AACnB;AACD;AACK;AACJ;AACgB;AACpE,UAAU,8CAAK;AACf,uBAAuB,kEAAY,qBAAqB,mEAAiB;AACzE;AACA;AACA,aAAa,iDAAQ;AACrB;AACA;AACA,yBAAyB,6DAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,sDAAO;AACnE,mDAAmD,sDAAO;AAC1D,mDAAmD,sDAAO;AAC1D,qDAAqD,kEAAe;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,2DAAY;AAC7C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uDAAM,OAAO,MAAM,2BAA2B,kEAAY;AAC7F;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,IAAI,2BAA2B;AAC5C;AACA;AACA;AACA,mCAAmC,uDAAM,OAAO,MAAM,2BAA2B,kEAAY;AAC7F;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,IAAI,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,WAAW,IAAI,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAQ,uBAAuB,EAAE,EAAE,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAc;AACvC;AACA,iEAAiE,kBAAkB;AACnF,2EAA2E,kBAAkB;AAC7F,wEAAwE,cAAc;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,sDAAO;AACjE,qDAAqD,sDAAO;AAC5D,qDAAqD,sDAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,sEAAmB,0DAA0D,uEAAoB;AACpK;AACA;AACA;AACA,2DAA2D,sDAAO;AAClE;AACA;AACA;AACA,8DAA8D,sDAAO;AACrE,gEAAgE,sDAAO;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yEAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,2CAA2C,wEAAwB;AACnE;AACA;AACA;AACA,wBAAwB,6DAAoB;AAC5C;AACA;AACA;AACA,+CAA+C,4EAA4B;AAC3E;AACA;AACA,+CAA+C,wEAAwB;AACvE;AACA;AACA;AACA;AACA,wBAAwB,6DAAoB;AAC5C;AACA;AACA,2CAA2C,4EAA4B;AACvE;AACA;AACA;AACA,wBAAwB,6DAAoB;AAC5C;AACA;AACA,2CAA2C,gFAAgC;AAC3E;AACA;AACA;AACA,wBAAwB,6DAAoB;AAC5C;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA;AACA,+CAA+C,yEAAyB;AACxE,4BAA4B,6DAAoB;AAChD;AACA;AACA;AACA;AACA,+CAA+C,wEAAwB;AACvE,4BAA4B,6DAAoB;AAChD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,8CAA8C,sBAAsB;AACpE,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,2BAA2B;AAC3B;AACA,uEAAuE,0DAAM;AAC7E;AACA;AACA;AACA;AACA,aAAa;AACb,4EAA4E,8BAA8B;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,0DAAM;AACjF;AACA;AACA;AACA;AACA;AACA,kDAAkD,2FAA2F;AAC7I;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,2EAA2E,0DAAM;AACjF;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,eAAe,kEAAyB,oBAAoB,6DAAoB;AAChF;AACA;AACA;AACA,sCAAsC,4EAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kDAAkD,sBAAsB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wDAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,+DAA+D;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sEAAmB;AACxC,2CAA2C,uEAAoB,CAAC;AAChE;AACA,qBAAqB,wEAAqB;AAC1C,uCAAuC,0EAA0B;AACjE,2CAA2C,uEAAoB,CAAC;AAChE;AACA,qBAAqB,sEAAmB;AACxC,uCAAuC,wEAAwB;AAC/D,2CAA2C,uEAAoB,CAAC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+DAAc;AACrD;AACA;AACA;AACA,uCAAuC,gEAAe;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAQ;AAChC,mCAAmC,6DAAU;AACpD;AACA;AACA;AACA;AACA;AACA,qDAAqD,sDAAO;AAC5D,qDAAqD,sDAAO;AAC5D,4DAA4D,sDAAO;AACnE,wBAAwB;AACxB;AACA,gDAAgD,sDAAO;AACvD;AACA,gDAAgD,sDAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kEAAyB,SAAS,+DAAsB;AAC/E,uBAAuB,kEAAyB,SAAS,6DAAoB;AAC7E,uBAAuB,kEAAyB,SAAS,iEAAwB;AACjF;AACA;AACA;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA,2BAA2B,6DAAoB;AAC/C,yBAAyB,mDAAU;AACnC,iDAAiD,0EAAS;AAC1D;AACA,sBAAsB,mDAAU;AAChC,kDAAkD,0EAAS;AAC3D;AACA,4BAA4B,mDAAU;AACtC,gCAAgC,mDAAU;AAC1C,yBAAyB,mDAAU;AACnC;AACA,uBAAuB,0EAAiC,WAAW,6DAAoB;AACvF;AACA;AACA,SAAS;AACT,uBAAuB,kEAAyB,WAAW,4DAAmB;AAC9E,6BAA6B;AAC7B;AACA;AACA,SAAS;AACT,+BAA+B,mDAAU;AACzC,gCAAgC,mDAAU;AAC1C,4CAA4C,4DAAa;AACzD,qDAAqD,cAAc;AACnE,sCAAsC,mDAAU;AAChD;AACA;AACA,iCAAiC,4EAAU,yBAAyB,cAAc,iDAAQ,EAAE,6MAA6M,IAAI,EAAE,YAAY;AAC3T,+BAA+B,mDAAU;AACzC;AACA,0BAA0B,4EAAU,kBAAkB,cAAc,iDAAQ,EAAE,8JAA8J,IAAI,EAAE,aAAa;AAC/P,4BAA4B,mDAAU;AACtC,uBAAuB,iEAAM;AAC7B,mBAAmB,iDAAQ;AAC3B;AACA;AACA,SAAS;AACT,sCAAsC,mDAAU;AAChD,iCAAiC,iEAAM;AACvC,6BAA6B,iDAAQ;AACrC;AACA;AACA,SAAS;AACT,wBAAwB,mDAAU,uBAAuB,cAAc;AACvE,gCAAgC,+EAAW;AAC3C,QAAQ,qDAAY;AACpB,wCAAwC,8DAAc;AACtD;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,6BAA6B,uDAAc;AAC3C;AACA,uBAAuB,kEAAyB,YAAY,4DAAmB;AAC/E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,kEAAyB,YAAY,4DAAmB;AAC/E;AACA,SAAS;AACT,uBAAuB,kEAAyB,YAAY,+DAAsB;AAClF,8BAA8B,4EAAqB;AACnD;AACA;AACA,oBAAoB,6DAAoB;AACxC;AACA;AACA;AACA,oBAAoB,6DAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAoB;AAChD;AACA;AACA;AACA,4BAA4B,6DAAoB;AAChD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU,2EAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qJAAqJ,WAAW;AAChK;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,EAAE;AACvB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,oBAAoB,8DAAO;AAC3B;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F;AAC9F,uGAAuG;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,mCAAmC,gEAAe;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iDAAQ,0CAA0C,EAAE,2BAA2B,iDAAQ;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oBAAoB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uGAAuG;AAC1H;AACA;AACA;AACA,2EAA2E,eAAe;AAC1F,4EAA4E,aAAa;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,WAAW,8CAA8C,EAAE;AAChI,2EAA2E,WAAW,8CAA8C,EAAE,GAAG;AACzI;AACA;AACA,yEAAyE,sBAAsB,oCAAoC,EAAE;AACrI;AACA;AACA,6EAA6E,WAAW,wCAAwC,EAAE;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;ACjrCrC;AACA;AACA;AACA;AACgC;AACe;AACqB;AACV;AACgB;AACvB;AACiB;AACpE,UAAU,8CAAK;AACR,4BAA4B,4DAAU;AAC7C;AACA;AACA;AACA;AACA,mBAAmB,kEAAyB,6BAA6B,+DAAsB;AAC/F,4BAA4B,4EAAqB;AACjD,aAAa;AACb;AACA;AACA,mBAAmB,kEAAyB,6BAA6B,iEAAwB;AACjG,4BAA4B,sEAAkB;AAC9C,aAAa;AACb;AACA;AACA;AACA;AACA,yBAAyB,mDAAU;AACnC,2CAA2C,sEAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAe;AAC1C;AACA;AACA;AACA,uCAAuC,sBAAsB,6DAAa,iCAAiC,gEAAgB,iDAAiD;AAC5K;AACA;AACA;AACA,0DAA0D,6DAAa,iCAAiC,gEAAgB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACgC;AACe;AACQ;AAC8B;AACtB;AACL;AACN;AACsB;AACH;AACqB;AACpC;AACN;AACM;AACe;AACnB;AACA;AACW;AAC0B;AAC3C;AAC9C,UAAU,8CAAK;AACf;AACA;AACA;AACA,8BAA8B,qDAAO;AACrC;AACA,QAAQ,0DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mDAAU;AAC/B;AACA,sBAAsB,mDAAU;AAChC,oCAAoC,0EAAiC,QAAQ,4DAAmB;AAChG,8CAA8C;AAC9C,mCAAmC;AACnC;AACA,SAAS;AACT,wBAAwB,mDAAU;AAClC;AACA,oCAAoC,0EAAiC,gBAAgB,6DAAoB;AACzG;AACA,SAAS;AACT;AACA,qBAAqB,mDAAU;AAC/B,qBAAqB,mDAAU;AAC/B,qBAAqB,mDAAU;AAC/B;AACA,yBAAyB,yEAAS,QAAQ,qFAAqF;AAC/H;AACA,oCAAoC,mDAAU;AAC9C,8BAA8B,4FAAe,sBAAsB,oDAAW;AAC9E;AACA,gCAAgC,mDAAU;AAC1C,0BAA0B,8FAAgB;AAC1C;AACA,yBAAyB,mDAAU;AACnC;AACA,6BAA6B,0EAAS;AACtC;AACA;AACA;AACA;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA;AACA;AACA,eAAe,2DAA2D;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qDAAY;AACxB;AACA;AACA,YAAY,wDAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,kEAAY;AACpF;AACA,iDAAiD,WAAW;AAC5D;AACA,mCAAmC,uDAAM,OAAO,MAAM;AACtD;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,IAAI,2BAA2B;AAC5C,YAAY,qDAAY;AACxB;AACA;AACA,YAAY,wDAAe;AAC3B;AACA;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA;AACA,gCAAgC,6DAAO;AACvC,iCAAiC,6DAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qDAAO;AACtD;AACA,0CAA0C,qDAAO;AACjD;AACA,0CAA0C,qDAAO;AACjD;AACA,6CAA6C,qDAAO;AACpD;AACA,sCAAsC,qDAAO;AAC7C;AACA,8BAA8B,qDAAO;AACrC;AACA,4BAA4B,qDAAO;AACnC;AACA;AACA;AACA;AACA;AACA,yBAAyB,mDAAU;AACnC;AACA;AACA;AACA,+BAA+B,sCAAsC;AACrE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8BAA8B,4EAAqB;AACnD;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAoB;AAC5C,2CAA2C,yDAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8BAA8B,kEAAyB,iBAAiB,4DAAmB;AAC3F,6BAA6B;AAC7B;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,uDAAS;AACxB;AACA;AACA,eAAe,uDAAS,wCAAwC,4DAA4D;AAC5H;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6DAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iEAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,gCAAgC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,4DAA4D,sEAAmB,CAAC,4EAAwB,QAAQ,iEAAa;AAC7H,wEAAwE,sEAAmB,CAAC,4EAAwB,QAAQ,iEAAa;AACzI,8DAA8D,sEAAmB,CAAC,4EAAwB,QAAQ,iEAAa;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6DAAO;AACzC,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA,IAAI,2DAAO;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qEAAe;AAC1B;AACA;AACA;AACA,eAAe,kDAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjlBA;AACA;AACA;AACA;AACgC;AACe;AACc;AAC7D;AACA,+BAA+B,+DAAW;AACnC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAiB,KAAK,UAAU,wBAAwB,qDAAY,kCAAkC;AAC9G,QAAQ,0DAAiB,cAAc,UAAU,eAAe,UAAU,wBAAwB,qDAAY,gBAAgB;AAC9H;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACO,qBAAqB;AACrB;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACgD;AAC2B;AAC3E;AACA;AACA,QAAQ,0EAAyB;AACjC,mBAAmB,oFAAmC;AACtD,mBAAmB,oFAAmC;AACtD;AACA,mBAAmB,uFAAsC;AACzD,8BAA8B,uFAAsC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,MAAM,0BAA0B,YAAY,cAAc,GAAG,iBAAiB,WAAW,GAAG,IAAI,MAAM;AAC5H;AACA,yCAAyC,gBAAgB,uBAAuB;AAChF;AACA;AACA,mCAAmC,iCAAiC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uFAAuB;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;AC/GA;AACA;AACA;AACA;AAC4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,2CAA2C,EAAE,kBAAkB,0CAA0C,EAAE;AAC3L;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACO;AACP;AACA;AACA,IAAI,8EAAkB;AACtB;AACA,IAAI,8FAAkC,kEAAkE,qBAAqB,EAAE;AAC/H,IAAI,gFAAoB;AACxB;AACA,YAAY,8FAAkC;AAC9C,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,wPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qPAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,oQAAuB,CAAC;AACzD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,uQAAsB,CAAC;AACxD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;AACD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;AChBD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,8QAAyB,CAAC;AAC3D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AAC2C;;;;;;;;;;;;;;ACJ3C;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,sOAAiB,CAAC;AACnD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,+PAAsB,CAAC;AACxD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,sRAAyB,CAAC;AAC3D,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,sRAAyB,CAAC;AAC3D,CAAC;;;;;;;;;;;;;;ACbD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,6PAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qPAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,oQAAuB,CAAC;AACzD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXgC;AACjC;AACA;AACA;AACA;AACqC;AACA;AACE;AACJ;AACU;AACF;AACF;AACN;AACM;AACN;AACA;AACE;AACY;AACR;AACR;AACU;AACM;AACd;AACE;AACF;AACE;AACY;AACV;AACE;AACJ;AACE;AACJ;AACU;AACR;AACE;AACA;AACY;AACV;AACM;AACV;AACE;AACJ;AACU;AACI;AACA;AACd;AACM;AACV;AACQ;AACA;AACM;AACgB;AACxB;AACA;AACJ;AACM;AACE;AACJ;AACE;AACM;AACJ;AACN;AACF;AACM;AACgB;AACpB;AACE;AACY;AAChB;AACE;AACE;;;;;;;;;;;;;;ACtErC;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qPAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,6PAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,mRAA0B,CAAC;AAC5D,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,yQAAwB,CAAC;AAC1D,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,wPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,6PAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,mPAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,4QAAuB,CAAC;AACzD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,sRAAyB,CAAC;AAC3D,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,8QAAyB,CAAC;AAC3D,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,mPAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,iOAAgB,CAAC;AAClD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,6PAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qPAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,4QAAuB,CAAC;AACzD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,4SAA+B,CAAC;AACjE,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,wPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,sOAAiB,CAAC;AACnD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,6PAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qPAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,4QAAuB,CAAC;AACzD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,0PAAqB,CAAC;AACvD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,mPAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,8OAAiB,CAAC;AACnD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,qPAAoB,CAAC;AACtD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qSAA4B,CAAC;AAC9D,CAAC;AACD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,qSAA4B,CAAC;AAC9D,CAAC;;;;;;;;;;;;;;AChBD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,wPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,8QAAyB,CAAC;AAC3D,CAAC;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,8OAAiB,CAAC;AACnD,CAAC;;;;;;;;;;;;;;ACVD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,2OAAkB,CAAC;AACpD,CAAC;;;;;;;;;;;;;;AC1BD;AACA;AACA;AACA;AACwD;AACxD,kEAAgB;AAChB;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,gPAAmB,CAAC;AACrD,CAAC;;;;;;;;;;;;;;;;;ACXD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjHA;AACA;AACA;AACA;AAC4D;AACJ;AACO;AACF;AACW;AACT;AACuB;AACX;AAChB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oCAAoC,iEAAU;AAC9C;AACA;AACA,+CAA+C,0DAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gEAAQ;AACzC,+BAA+B,kEAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iEAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAc;AACtB;AACA,gEAAgE,oFAAuB;AACvF;AACA,+CAA+C,wBAAwB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sFAAwC;AAClF,mBAAmB,gEAAQ;AAC3B,uBAAuB,kEAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO,4BAA4B,2FAAyB;AAC5D;AACA;AACA;AACA,uDAAuD,wEAAmB;AAC1E;AACA;AACA;AACA;AACA,uBAAuB,0EAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAgB,KAAK,qEAAuB;AACzD;AACA;AACA;AACA,YAAY,iEAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8DAAgB,IAAI,+DAAiB;AAC1E,wBAAwB,mEAAqB;AAC7C,uBAAuB,kEAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpRA;AACA;AACA;AACA;AAC+D;AACxD,kCAAkC,iEAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6EAA6E;AACnH;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjFA;AACA;AACA;AACA;AACuC;AACgB;AAC4E;AAC7D;AACa;AACb;AACe;AACyB;AAC7B;AACxB;AACN;AACmB;AACa;AACc;AACjG;AACO,gCAAgC,+DAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACO;AACP;AACA;AACA,aAAa,2DAAc;AAC3B;AACA;AACA;AACA,aAAa,2DAAc;AAC3B;AACA;AACA,aAAa,8DAAiB,mBAAmB,2DAAc;AAC/D;AACA;AACA,aAAa,8DAAiB,sBAAsB,2DAAc;AAClE;AACA;AACA,aAAa,8DAAiB,6BAA6B,4DAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AAChC;AACP;AACA;AACA,aAAa,2DAAc;AAC3B;AACA;AACA;AACA,aAAa,2DAAc;AAC3B;AACA;AACA,aAAa,8DAAiB,sBAAsB,2DAAc;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA,+CAA+C,8EAAkB;AACjE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8CAA8C,8EAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+FAAyB;AACzC;AACA;AACA;AACA;AACA,oCAAoC,2EAAqB;AACzD;AACA;AACA;AACA,KAAK;AACL,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0GAA0G,yFAAyB;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kGAAkG,8DAAQ;AAC1G;AACA;AACA,mBAAmB,qGAA4B;AAC/C;AACA,KAAK;AACL,oDAAoD,2EAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,4BAA4B;AAC5B;AACA,aAAa;AACb;AACA;AACA,mBAAmB,yGAAgC;AACnD;AACA,KAAK;AACL,qDAAqD,2EAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,4BAA4B;AAC5B;AACA,aAAa;AACb;AACA;AACA,mBAAmB,0GAAiC;AACpD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uGAA8B;AACjD;AACA;AACA,kDAAkD,2EAAqB;AACvE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,sDAAsD,2EAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,oBAAoB;AACpB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yGAAgC;AACnD;AACA;AACA,oDAAoD,2EAAqB;AACzE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,oBAAoB;AACpB;AACA,KAAK;AACL,wDAAwD,2EAAqB;AAC7E;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,oBAAoB;AACpB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,6BAA6B,4FAAuB;AACpD,aAAa;AACb;AACA;AACA,2BAA2B,sFAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mGAA6B;AACxD;AACA;AACA;AACA;AACA,2BAA2B,qGAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,mGAA6B;AACzG;AACA;AACA;AACA,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,8CAA8C,2EAAqB;AACnE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,KAAK;AACL,yCAAyC,2EAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,+CAA+C,2EAAqB;AACpE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,KAAK;AACL,sCAAsC,2EAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,4CAA4C,2EAAqB;AACjE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,kBAAkB,+CAA+C;AACjE,oBAAoB;AACpB;AACA,KAAK;AACL,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,KAAK;AACL,gDAAgD,2EAAqB;AACrE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,KAAK;AACL,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,8CAA8C,2EAAqB;AACnE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,kBAAkB,iDAAiD;AACnE,oBAAoB;AACpB;AACA,KAAK;AACL,4CAA4C,2EAAqB;AACjE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,KAAK;AACL,kDAAkD,2EAAqB;AACvE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA;AACA,KAAK;AACL,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,2BAA2B,6FAAuB;AAClD;AACA;AACA,2BAA2B,+FAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,oDAAoD,2EAAqB;AACzE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,8CAA8C,+FAAyB;AACvE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,8GAAwC;AAC7G;AACA;AACA;AACA,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,8CAA8C,2EAAqB;AACnE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA,4BAA4B,0FAA0B;AACtD;AACA;AACA;AACA;AACA,6CAA6C,2EAAqB;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,mDAAmD,2EAAqB;AACxE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,wGAAkC;AACvG;AACA;AACA;AACA,uCAAuC,2EAAqB;AAC5D;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6CAAY;AACzD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,KAAK;AACL,6CAA6C,2EAAqB;AAClE;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6CAAY;AACzD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA,4BAA4B,0FAA0B;AACtD;AACA;AACA;AACA;AACA,2CAA2C,2EAAqB;AAChE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,iDAAiD,2EAAqB;AACtE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,gHAA0C;AAC/G;AACA;AACA;AACA,uCAAuC,2EAAqB;AAC5D;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,6CAA6C,2EAAqB;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,0GAAoC;AACzG;AACA;AACA;AACA,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL,gDAAgD,2EAAqB;AACrE;AACA;AACA;AACA;AACA;AACA,oBAAoB,2FAAgC;AACpD;AACA,kBAAkB;AAClB;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wHAAkD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G,8DAAQ;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,2EAAqB;AAC/D,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,0BAA0B;AAC1B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,0BAA0B,2CAA2C;AACrE,4BAA4B;AAC5B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,4CAA4C,2EAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,0BAA0B;AAC1B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,4CAA4C,2EAAqB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,0BAA0B,6CAA6C;AACvE,4BAA4B;AAC5B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6FAAuB;AACvC;AACA;AACA;AACA;AACA,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA,KAAK;AACL,4CAA4C,2EAAqB;AACjE;AACA;AACA;AACA,KAAK;AACL,kDAAkD,2EAAqB;AACvE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6FAAuB;AACrE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6FAAuB;AACvC;AACA;AACA;AACA;AACA,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA,KAAK;AACL,4CAA4C,2EAAqB;AACjE;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6FAAuB;AACrE;AACA;AACA;AACA;AACA,kDAAkD,2EAAqB;AACvE;AACA;AACA;AACA,KAAK;AACL,sDAAsD,2EAAqB;AAC3E;AACA;AACA;AACA,KAAK;AACL,iDAAiD,2EAAqB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,qEAAqE,4GAAsC;AAC3G;AACA;AACA,KAAK;AACL,6CAA6C,2EAAqB;AAClE;AACA;AACA;AACA,8BAA8B,iGAAsC;AACpE;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gBAAgB,wGAAkC;AAClD;AACA;AACA;AACA,KAAK;AACL,oDAAoD,2EAAqB;AACzE;AACA;AACA;AACA,8BAA8B,kGAAuC;AACrE;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wCAAwC,2EAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yDAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB,kEAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kGAA4B;AAC5C;AACA;AACA,KAAK;AACL,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gBAAgB,8FAA8B;AAC9C;AACA;AACA,KAAK;AACL,CAAC,wDAAwD;AACzD,iCAAiC,0FAAkB,CAAC,2FAAgC,EAAE,4FAAiC;AACvH;AACA,IAAI,2HAA0C;AAC9C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qCAAqC,+DAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA,0CAA0C,2EAAqB;AAC/D;AACA;AACA;AACA,8BAA8B,qFAA0B;AACxD;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,0BAA0B;AAC1B;AACA,aAAa;AACb;AACA;AACA;AACA,4CAA4C,sGAA8B;AAC1E;AACA,KAAK;AACL,kCAAkC,2EAAqB;AACvD;AACA;AACA;AACA,8BAA8B,qFAA0B;AACxD;AACA;AACA,4BAA4B,0FAAkB,CAAC,4FAAiC,EAAE,gGAAqC;AACvH;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4CAA4C,8FAAsB;AAClE;AACA;AACA,KAAK;AACL,8BAA8B,2EAAqB;AACnD;AACA;AACA;AACA,8BAA8B,qFAA0B;AACxD;AACA;AACA,4BAA4B,0FAAkB,CAAC,4FAAiC,EAAE,gGAAqC;AACvH;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4CAA4C,0FAAkB;AAC9D;AACA;AACA,KAAK;AACL,qCAAqC,2EAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA;AACA,0BAA0B;AAC1B;AACA,aAAa;AACb;AACA;AACA,6DAA6D,qGAA2B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,2EAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2FAAgC;AAC5D;AACA,0BAA0B;AAC1B;AACA,aAAa;AACb;AACA;AACA,6DAA6D,sGAA4B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB,6DAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,kBAAkB,6DAAW;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC,kDAAkD;AACnD;AACA;AACA;AACA,mCAAmC,yDAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oCAAoC,8EAAkB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,CAAC;AACD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrgDA;AACA;AACA;AACA;AACoD;AACqB;AACZ;AACE;AACF;AACsB;AACkD;AACtE;AACN;AACE;AACmB;AAC9E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,oFAAgB;AAClD;AACA;AACA;AACA;AACA;AACA,sCAAsC,+DAAkB;AACxD;AACA;AACA,gCAAgC,kEAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2EAAkB;AAC5C;AACA,kCAAkC,iFAAuB;AACzD;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA;AACA;AACA,uBAAuB,uEAAyB,8BAA8B,uEAAyB,iBAAiB,gCAAgC;AACxJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAiB;AAC/C;AACA,0BAA0B,uEAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2CAA2C;AAC3C,iCAAiC,iEAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uEAA4B;AAChF,mDAAmD,+DAAY;AAC/D;AACA,qCAAqC,gEAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0EAA6B;AAC9D;AACA;AACA;AACA,+BAA+B,wDAAW;AAC1C;AACA;AACA;AACA,uBAAuB,wDAAW,iDAAiD,8DAAQ;AAC3F;AACA;AACA;AACA,iCAAiC,0EAA6B;AAC9D;AACA;AACA;AACA,+BAA+B,wDAAW;AAC1C;AACA;AACA;AACA,uBAAuB,wDAAW,iDAAiD,8DAAQ;AAC3F;AACA;AACA;AACA,uBAAuB,wDAAW,iDAAiD,8DAAQ;AAC3F;AACA;AACA,uBAAuB,wDAAW,iDAAiD,8DAAQ;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wDAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8DAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qBAAqB;AACvC,mBAAmB,sBAAsB;AACzC,mBAAmB,sBAAsB;AACzC,oBAAoB,uBAAuB;AAC3C,sBAAsB,yBAAyB;AAC/C,wBAAwB,2BAA2B;AACnD,gCAAgC,mCAAmC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/ajD;AACA;AACA;AACA;AAC4D;AACV;AACK;AACG;AACD;AACS;AACM;AACpB;AAC7C;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAQ;AAC5C;AACA;AACA;AACA,qCAAqC,8DAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wDAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wDAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAwB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,WAAW,GAAG,WAAW,eAAe,iBAAiB,GAAG,iBAAiB,0BAA0B,yBAAyB,kCAAkC,kCAAkC,cAAc,2CAA2C;AACnR;AACA;AACA;AACA;AACA;AACA,0BAA0B,qGAAqC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAwB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAA+B,mBAAmB,QAAQ;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,8DAAQ;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,8DAAQ;AAC9E;AACA;AACA;AACA;AACA,oCAAoC,8DAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,8DAAQ;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,8DAAQ;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,8DAAQ;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,gBAAgB,4DAAc;AAC9B;AACA;AACA,kEAAkE,8DAAQ;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4CAA4C;AACjE;AACA;AACA;AACA,6BAA6B,gDAAgD;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAgD;AAC7E;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA,gCAAgC,wDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0DAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,gEAAgE;AAChE,gEAAgE;AAChE;AACA,qCAAqC,6EAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,gEAAgE;AAChE;AACA,qCAAqC,6EAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,gEAAgE;AAChE,gEAAgE;AAChE;AACA,qCAAqC,6EAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,qCAAqC,6EAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6EAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACz0BA;AACA;AACA;AACA;AACoD;AACS;AACO;AACL;AACc;AACC;AACX;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,+BAA+B,gFAAkC;AACjE,+BAA+B,uEAAyB;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2DAAgB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,kCAAkC,0DAAY;AACrD;AACA;AACA,uBAAuB,qEAAiB;AACxC,uBAAuB,uEAAyB,sCAAsC,iEAAa;AACnG,uBAAuB,uEAAyB,sCAAsC,oEAAgB;AACtG,uBAAuB,uEAAyB,sCAAsC,yEAAqB,iCAAiC,2DAAgB;AAC5J;AACA,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kCAAkC,oEAAyB;AAC3D,sHAAsH,4EAA0B,2BAA2B,kFAAoC;AAC/M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,2DAAgB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAY;AACvC;AACA;AACA,uBAAuB,qEAAiB;AACxC,uBAAuB,uEAAyB,sCAAsC,iEAAa;AACnG,uBAAuB,uEAAyB,sCAAsC,oEAAgB;AACtG,uBAAuB,uEAAyB,sCAAsC,yEAAqB,iCAAiC,2DAAgB;AAC5J;AACA;AACA;AACA;AACA,mDAAmD,2DAAgB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,6BAA6B,iEAAU;AAC9C;AACA;AACA,aAAa,2DAAc,IAAI,mFAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0DAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrMA;AACA;AACA;AACA;AAC+B;AACQ;AACqB;AACa;AACZ;AACF;AACA;AACK;AACc;AACb;AACY;AACtB;AACc;AACwB;AACpC;AACN;AACQ;AAC4C;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAc,IAAI,+DAAiB;AAC5D,8BAA8B,uDAAQ;AAC7C;AACA;AACA;AACA,0CAA0C,+DAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iEAAS;AACzC,qCAAqC,iEAAS;AAC9C;AACA;AACA,wBAAwB,+EAAiB;AACzC,QAAQ,qEAAsB;AAC9B,gDAAgD,0GAAgC,CAAC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,6CAAY;AACvE;AACA;AACA;AACA,YAAY,2DAAc;AAC1B;AACA;AACA,6BAA6B,+EAAiB;AAC9C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mIAAmI,+DAAkB;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAA2C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,4DAAa;AACxD;AACA;AACA;AACA,2BAA2B,kEAAmB;AAC9C;AACA,uBAAuB,4FAA6C;AACpE,aAAa;AACb;AACA;AACA;AACA;AACA,iDAAiD,4DAAa;AAC9D;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kEAAkE,yDAAK;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0GAAgC,CAAC;AACrF;AACA,SAAS;AACT;AACA,gBAAgB,4DAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oDAAoD,0GAAgC,CAAC;AACrF;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uGAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oEAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY,iFAAiF,EAAE,gBAAgB,6DAAgB;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,8GAAgD;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,+DAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,iFAAuB;AAChG;AACA;AACA;AACA,6EAA6E,iGAA6B;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+DAAiB;AACzB,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU,UAAU,WAAW,GAAG,SAAS,OAAO,WAAW,KAAK,WAAW;AAC3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvcA;AACA;AACA;AACA;AAC4D;AACR;AACa;AACT;AACO;AACF;AACF;AACR;AACM;AACE;AACQ;AAC5D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,4BAA4B,iEAAU;AAC7C;AACA;AACA;AACA,2CAA2C,0DAAO;AAClD;AACA,0CAA0C,0DAAO;AACjD;AACA,6CAA6C,0DAAO;AACpD;AACA,2CAA2C,0DAAO;AAClD;AACA,yCAAyC,0DAAO;AAChD;AACA,2CAA2C,0DAAO;AAClD;AACA,0CAA0C,0DAAO;AACjD;AACA,sDAAsD,0DAAO;AAC7D;AACA,uDAAuD,0DAAO;AAC9D;AACA,oDAAoD,0DAAO;AAC3D;AACA,4DAA4D,0DAAO;AACnE;AACA;AACA;AACA,mDAAmD,mEAAgB;AACnE,8BAA8B,kEAAmB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+EAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,+EAAiC;AACxD;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4DAAa,uJAAuJ,8DAAQ;AACtN;AACA,sBAAsB,4DAAc;AACpC;AACA,mEAAmE,kEAAmB;AACtF;AACA,2CAA2C,uBAAuB;AAClE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6BAA6B,6EAA8B;AAC3D,8BAA8B,wEAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yEAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAc;AAC9B;AACA;AACA;AACA;AACA,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAc,IAAI,8DAAgB;AAClD,sCAAsC,6EAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,iEAAoB;AACjH,iFAAiF,oEAAuB;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,kEAAmB;AAC/E;AACA;AACA;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8DAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gEAAS;AAC9C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAiB;AAC5C;AACA;AACA;AACA,iBAAiB,yDAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAc;AAC9B;AACA;AACA,4DAA4D,kEAAmB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,yFAAkC;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,+DAAiB;AAC1B;AACA;AACA;AACA,0DAA0D,yEAA0B;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAwB;AACxD;AACA;AACA;AACA,YAAY,yEAA2B;AACvC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpjBA;AACA;AACA;AACA;AAC2D;AACF;AACN;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAA0B;AACvD;AACA;AACA;AACA;AACA,6BAA6B,uEAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA,0DAA0D,kEAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+EAAkC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,wDAAK;AAC9E;AACA;AACA;AACA,wEAAwE,wDAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8GAA8G,8DAAQ,wDAAwD,8DAAQ;AACtL;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACjNA;AACA;AACA;AACA;AAC2D;AACR;AAC4B;AACX;AACkB;AAC/E;AACP;AACA;AACA;AACA;AACA,0CAA0C,2DAAc,GAAG,EAAE,EAAE,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iDAAiD,+FAAuC;AAC/F;AACA;AACA;AACA,6BAA6B,sEAAe;AAC5C;AACA;AACA,+BAA+B,yEAAsB;AACrD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,+BAA+B,sEAAmB;AAClD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,+CAA+C,iFAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AClJA;AACA;AACA;AACA;AAC8E;AACwB;AACvB;AACf;AAC0B;AACD;AACzF,kCAAkC,gGAAe;AACjD,oCAAoC,oFAAa;AACjD,+FAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,yFAAkB;AAC1F,mCAAmC,kEAAU;AAC7C,wBAAwB;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM,sDAAsD,iFAAuB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAAqB,mBAAmB,+DAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;AC5ED;AACA;AACA;AACA;AAC0D;AAC1D;AACA;AACA;AACO;AACP;AACA,yCAAyC,2EAAmC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,yCAAyC,2EAAmC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AACiD;AACqC;AAChB;AACV;AAC5D;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,8CAA8C,wEAA0B,WAAW,wEAA0B;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,kDAAkD,wEAA0B,iBAAiB,wEAA0B;AACvH;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,sBAAsB,wEAA0B;AAChD;AACA;AACO,+BAA+B,2EAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAyB;AACxC;AACA,SAAS;AACT;AACA;AACA,eAAe,uEAAyB;AACxC;AACA,SAAS;AACT;AACA;AACA,eAAe,uEAAyB;AACxC;AACA,SAAS;AACT;AACA;AACA,eAAe,0FAA4C;AAC3D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkC;AACjD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAyB;AACxC;AACA,SAAS;AACT;AACA;AACA,eAAe,uEAAyB;AACxC;AACA,SAAS;AACT;AACA;AACA,eAAe,4FAA8C;AAC7D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkC;AACjD;AACA;AACO,2CAA2C,iEAAU;AAC5D;AACA;AACA;AACA,0DAA0D,2FAAsB;AAChF;AACA;AACA;AACA;AACA;AACA,gCAAgC,+EAAiC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnJA;AACA;AACA;AACA;AACoC;AAC0B;AACf;AACsB;AACf;AACa;AACO;AACM;AACF;AACsB;AACN;AACxB;AACW;AACJ;AACtE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yFAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA,YAAY,qIAAoD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,mGAAgC;AAC5C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,QAAQ,4FAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kCAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8EAAkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yFAAkB;AACnE,+CAA+C,2EAAmB;AAClE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qFAAoB;AAClD;AACA;AACA;AACA;AACA,wBAAwB,yFAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA,qBAAqB,uFAAiB,qCAAqC,gCAAgC;AAC3G;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACO;AACP,IAAI,mGAAgC,qDAAqD;AACzF;AACO;AACP;AACA,eAAe,qBAAqB;AACpC,kCAAkC,oDAAG;AACrC,kBAAkB,uEAAe;AACjC;AACA,aAAa,0EAAoB;AACjC,kBAAkB,uEAAe;AACjC;AACA,mCAAmC,2EAAa;AAChD;AACA,mCAAmC,mEAAa;AAChD;AACA;AACA,4BAA4B,kFAAiB;AAC7C;AACA;AACA,6EAA6E,mEAAa;AAC1F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACO;AACP,IAAI,mGAAgC;AACpC;AACA,QAAQ,kEAAU,CAAC,0DAAS;AAC5B,QAAQ,kEAAU,CAAC,0EAAoB;AACvC,mCAAmC,2EAAa;AAChD;AACA,mCAAmC,mEAAa;AAChD;AACA;AACA,4BAA4B,kFAAiB;AAC7C;AACA;AACA,6EAA6E,mEAAa;AAC1F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACO;AACP,IAAI,mGAAgC;AACpC;AACA,QAAQ,kEAAU,CAAC,0DAAS;AAC5B,mCAAmC,2EAAa;AAChD;AACA;AACA;AACA,4BAA4B,kFAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAY;AACZ;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,oBAAoB,uFAAsB;AAC1C;AACA,mBAAmB,6CAAY,EAAE,oDAAoD;AACrF;AACA,SAAS;AACT,oBAAoB,sFAAqB;AACzC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,CAAC;AACD,+CAA+C,8CAA8C;AACtF;AACP;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL;AACA,oBAAoB,uFAAsB;AAC1C;AACA,mBAAmB,6CAAY,EAAE,oDAAoD;AACrF;AACA,SAAS;AACT,oBAAoB,sFAAqB;AACzC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,CAAC;AACD,+CAA+C,8CAA8C;AACtF;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,oBAAoB,4FAA2B;AAC/C;AACA,mBAAmB,6CAAY,EAAE,yDAAyD;AAC1F;AACA,SAAS;AACT,oBAAoB,sFAAqB;AACzC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,CAAC;;;;;;;;;;;;;;;;;;AC7bD;AACA;AACA;AACA;AACwD;AACO;AACxD,wCAAwC,iEAAU;AACzD;AACA;AACA,mDAAmD,0DAAO;AAC1D;AACA,sDAAsD,0DAAO;AAC7D;AACA,mDAAmD,0DAAO;AAC1D,sDAAsD,0DAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7EA;AACA;AACA;AACA;AAC0F;AACxC;AACO;AAClD,yBAAyB,gGAAe;AAC/C;AACA,WAAW,+DAAQ;AACnB;AACA;AACA,WAAW,+DAAQ,WAAW,0DAAS,oBAAoB,+DAAQ;AACnE;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AAC0F;AACnF,2BAA2B,gGAAe;;;;;;;;;;;;;;;;;;;;;;;;;;ACLjD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACoD;AACgB;AACT;AACT;AACyB;AACf;AACF;AACqB;AACxE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kFAAoC;AAC5C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kFAAoC;AAC5C;AACA;AACA,gEAAgE,oFAAyB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,kEAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,+DAAiB;AAC9B;AACA;AACA;AACA;AACA,kFAAkF,kEAAoB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iFAAa;AAC5B;AACiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sEAAwB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE,YAAY;AACjC,uBAAuB,GAAG;AAC1B,wCAAwC,GAAG;AAC3C,uBAAuB,GAAG;AAC1B,kCAAkC,GAAG;AACrC,kCAAkC,GAAG;AACrC,kCAAkC,GAAG;AACrC,qBAAqB,GAAG;AACxB,gCAAgC,GAAG;AACnC,kCAAkC,GAAG;AACrC,oCAAoC,GAAG;AACvC,gCAAgC,GAAG;AACnC,gCAAgC,GAAG;AACnC,4BAA4B,GAAG;AAC/B,8BAA8B,GAAG;AACjC,sCAAsC,GAAG;AACzC,qBAAqB,GAAG;AACxB,oCAAoC,GAAG;AACvC,iCAAiC,EAAE,yBAAyB;AAC5D,sCAAsC,GAAG;AACzC,6BAA6B,EAAE,GAAG;AAClC,+BAA+B,GAAG;AAClC,qBAAqB,GAAG;AACxB,mBAAmB,GAAG;AACtB,qBAAqB,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,EAAE,EAAE,aAAa;AACxE;AACA;AACA;AACA,mCAAmC,uBAAuB,EAAE,EAAE,UAAU;AACxE;AACA;AACA;AACA,wCAAwC,uBAAuB,aAAa,uBAAuB,EAAE,EAAE,SAAS;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2DAAc,2BAA2B,0DAAY,CAAC,2DAAU;AAChG;AACA;AACA,qEAAqE;AACrE;AACA,gCAAgC,2DAAc;AAC9C;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2DAAc,0BAA0B,0DAAY,CAAC,2DAAU;AAC3F;AACA,gCAAgC,2DAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2DAAc,yBAAyB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2DAAc;AAC9C;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACvdA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACoD;AACY;AACJ;AACF;AACQ;AAChB;AACU;AACoB;AACN;AACI;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gFAAa,SAAS,oEAAe;AACtD;AACA;AACA;AACA;AACA,yBAAyB,0DAAS;AAClC;AACA;AACA;AACA;AACA,uBAAuB,kEAAK;AAC5B;AACA;AACA;AACA;AACA,2BAA2B,kEAAK;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,kFAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0DAAS;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA,kCAAkC,iEAAY;AAC9C,yBAAyB,wEAAa,SAAS;AAC/C;AACA,sDAAsD,6BAA6B,mGAAmG,qFAAsB,GAAG,oFAAqB,EAAE,EAAE;AACxO;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,qEAAkB;AACjC;AACA;AACA;AACA,4BAA4B,kEAAU;AACtC,+BAA+B,kEAAU;AACzC,8BAA8B,kEAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gFAAa,OAAO,iEAAY,KAAK,gFAAa,OAAO,kEAAa;AAC1F,oBAAoB,oEAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,gFAAa,SAAS,mEAAc,KAAK,gFAAa,SAAS,iEAAY,KAAK,gFAAa,SAAS,kEAAa;AACnN;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qCAAqC,EAAE;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA,uDAAuD,0DAAS;AAChE,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qEAAkB;AACjC,eAAe,kFAAe;AAC9B;AACyB;;;;;;;;;;;;;;;;;;;;AC7LzB;AACA;AACA;AACA;AAC+E;AACN;AACd;AACA;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,yCAAyC;AACzC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,qFAA+B;AACnC,eAAe,kFAAmB;AAClC;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA,sCAAsC,4EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6BAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA,wBAAwB,oFAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6BAA6B;AAChE;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yEAA4B;AAChD;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AACA;AAC8E;AACvE,iCAAiC,mFAAgB;AACxD;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACuE;AACd;AACI;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iHAAwD;AAChE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6DAAgB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2GAAkD;AAC1D;AACA;AACA,QAAQ,iHAAwD;AAChE;AACA;AACA;AACA,QAAQ,iHAAwD;AAChE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,iHAAwD;AAChE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,2HAAkE;AAC1E;AACA;AACA,QAAQ,+GAAsD;AAC9D;AACA;AACA,QAAQ,mHAA0D;AAClE;AACA;AACA,QAAQ,yHAAgE;AACxE;AACA;AACA,QAAQ,+GAAsD;AAC9D;AACA;AACA,QAAQ,mHAA0D;AAClE;AACA;AACA,QAAQ,yHAAgE;AACxE;AACA;AACA,QAAQ,6HAAoE;AAC5E;AACA;AACA,QAAQ,8GAAqD,kBAAkB,kBAAkB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpQA;AACA;AACA;AACA;AACoD;AACO;AACc;AACN;AACF;AACE;AACd;AACU;AACa;AAC3B;AACkC;AACwD;AAC9D;AACK;AACL;AACG;AACH;AACjB;AACgC;AACrC;AACgD;AAC7C;AACyB;AACe;AACtB;AACrB;AACsC;AACnB;AACJ;AACN;AACP;AACN;AACsB;AACV;AACiB;AACF;AACQ;AACV;AACrE,mBAAmB,oFAAgB;AAC1C;AACA;AACA,gCAAgC,gEAAS;AACzC;AACA,mCAAmC,8DAAc;AACjD;AACA,4BAA4B,qEAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oCAAoC,2EAAe;AACnD;AACA;AACA,6BAA6B,+EAAiB;AAC9C;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA;AACA,uCAAuC,+EAAiB;AACxD,QAAQ,gEAAsB;AAC9B;AACA,8BAA8B,2FAAe;AAC7C;AACA;AACA,8BAA8B,qEAAS;AACvC;AACA,8BAA8B,yEAAS;AACvC;AACA;AACA,6CAA6C,2GAAwB;AACrE;AACA,qCAAqC,sGAAwB;AAC7D;AACA,wCAAwC,iEAAmB;AAC3D;AACA,kDAAkD,iHAA2B;AAC7E,kDAAkD,mFAAiB;AACnE,kDAAkD,yFAAmB;AACrE,kDAAkD,sFAAkB;AACpE,uCAAuC,gEAAkB;AACzD;AACA,iDAAiD,uHAAiC;AAClF,iDAAiD,sFAAkB;AACnE,iDAAiD,gHAAgC;AACjF,iDAAiD,qGAAuB;AACxE,iDAAiD,sFAAkB;AACnE,2BAA2B,gEAAM;AACjC;AACA;AACA;AACA;AACA,mCAAmC,4FAAkB;AACrD;AACA,gCAAgC,+EAAW;AAC3C;AACA;AACA,mCAAmC,4FAAkB;AACrD;AACA,2BAA2B,gEAAM;AACjC;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yEAAc;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,2BAA2B,qFAA4B;AACvD,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,mEAAmE,+DAAQ;AAC3E,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,+DAAQ;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,6FAAoB;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yFAA2C;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yDAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,sFAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+EAAgB;AACrD;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sCAAsC;AACrF;AACA;AACA;AACA,+CAA+C,wCAAwC;AACvF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yEAAyE,+DAAQ;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sGAAiD;AAChE;AACA;AACA,mBAAmB,qFAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yEAAiB;AACzB;AACA;;;;;;;;;;;;;;;;;;;AChZA;AACA;AACA;AACA;AACyE;AACA;AAClE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,yCAAyC;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qBAAqB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B;AACzE;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4BAA4B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kFAAmB;;;;;;;;;;;;;;;;;;;;;;;ACtc3C;AACA;AACA;AACA;AACyE;AACd;AACH;AACf;AAClC,2BAA2B,kDAAQ;AAC1C;AACA;AACA,iCAAiC,iEAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,iCAAiC,WAAW;AAC5C;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7MA;AACA;AACA;AACA;AACmE;AACW;AACvE,uBAAuB,mFAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,8BAA8B,qEAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AAC2D;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAoB;AACnC;AACA;;;;;;;;;;;;;;;;;;;ACjGA;AACA;AACA;AACA;AACuD;AACqB;AACR;AACpE;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,uDAAQ;AAChD;AACA;AACA;AACA;AACA,uBAAuB,+EAAiB;AACxC,QAAQ,qEAAsB;AAC9B;AACA;AACA;AACA,gDAAgD,+EAAiB;AACjE,QAAQ,qEAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,wEAA0B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wEAA0B;AAC1D,kEAAkE,wEAA0B;AAC5F,kEAAkE,wEAA0B;AAC5F,2BAA2B,+DAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACtZA;AACA;AACA;AACA;AACoC;AACkC;AACuC;AACjD;AACmC;AAC/F;AACO,2CAA2C,2EAAkB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0DAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,8BAA8B,UAAU,iBAAiB,8CAA8C,GAAG,UAAU,iBAAiB,GAAG;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,8BAA8B,UAAU,iBAAiB,kBAAkB,GAAG,UAAU,iBAAiB,GAAG;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B;AACA,yCAAyC,oFAAmB;AAC5D;AACA,wEAAwE,qBAAqB,eAAe,EAAE;AAC9G,sFAAsF,qBAAqB,eAAe,cAAc,EAAE;AAC1I;AACA,yEAAyE,0FAAyB;AAClG,mDAAmD,0FAAyB;AAC5E;AACA;AACA,4EAA4E,qBAAqB,qBAAqB,EAAE;AACxH,0FAA0F,qBAAqB,qBAAqB,EAAE;AACtI;AACA,gFAAgF,mBAAmB,EAAE;AACrG,8FAA8F,mBAAmB,EAAE;AACnH;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;AC/KD;AACA;AACA;AACA;AAC2B;AAC2C;AAChB;AACqB;AACpE,iCAAiC,2EAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iFAA8B;AACjD,SAAS;AACT;AACA;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,UAAU;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA,sBAAsB;AACtB;AACA;AACA,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,UAAU;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAK;AACjC;AACA,0FAA0F,kFAA+B;AACzH;AACA,4BAA4B,kEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,UAAU;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,6EAAe;AACrE;AACA;AACA,mEAAmE,UAAU;AAC7E;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC/LA;AACA;AACA;AACA;AACuD;AACqB;AACyB;AACjC;AACqB;AAClF,8BAA8B,uDAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,4FAAoB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,oGAAuB;AACnE,QAAQ,qEAAsB;AAC9B,gCAAgC,+EAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAyB;AAChD,uBAAuB,uEAAyB;AAChD,uBAAuB,uEAAyB;AAChD,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,4FAAoB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AACA;AAC2B;AAC2C;AAC/D;AACP;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,2EAAkB;AACpD;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,2BAA2B,4BAA4B;AAC5G;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACzJA;AACA;AACA;AACA;AAC4B;AAC0C;AACV;AAC+C;AACZ;AACxF,kCAAkC,2EAAkB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA;AACA,gFAAgF,8DAAQ;AACxF;AACA,+BAA+B,aAAa;AAC5C;AACA,6CAA6C,UAAU,gBAAgB,KAAK,GAAG,SAAS,WAAW,GAAG,QAAQ,YAAY;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,mDAAmD,mFAAkB;AACrE;AACA,gEAAgE,yBAAyB,wBAAwB,OAAO,EAAE;AAC1H;AACA,yDAAyD,yFAAwB;AACjF;AACA,iEAAiE,yBAAyB,8BAA8B,OAAO,EAAE;AACjI;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;AC5ID;AACA;AACA;AACA;AAC2B;AACqC;AACM;AACV;AAC4C;AACT;AACxF,iCAAiC,2EAAkB;AAC1D;AACA;AACA;AACA;AACA,4CAA4C,8DAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8GAA8G,8DAAQ;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6DAAgB;AACrD;AACA;AACA,wJAAwJ,kDAAkD;AAC1M;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,uCAAuC,kFAAiB;AACxD;AACA,yDAAyD,UAAU,aAAa,EAAE;AAClF;AACA,4CAA4C,uFAAsB;AAClE;AACA,yEAAyE,UAAU,kBAAkB,EAAE;AACvG;AACA,CAAC;;;;;;;;;;;;;;;;;ACpJD;AACA;AACA;AACA;AAC2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU,GAAG,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6EAAe;AACvC;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6EAAe;AACzD;AACA;AACA;AACA;AACA,kCAAkC,6EAAe;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9HA;AACA;AACA;AACA;AAC+D;AACa;AACZ;AACrB;AAC+C;AACX;AAC+C;AAC5C;AACJ;AAC9E;AACA,QAAQ,8DAAiB;AACzB;AACA;AACA;AACA,QAAQ,6DAAgB,IAAI,+DAAiB,IAAI,8DAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,qCAAqC,4DAAc;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+EAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,iFAAa;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wFAAqB;AAC7D;AACA;AACA,iEAAiE,iFAAa;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iFAAa;AAC3D,yDAAyD,iFAAc;AACvE;AACA;AACA;AACA;AACA;AACA,kDAAkD,6EAAS;AAC3D;AACA;AACA;AACA;AACA,oCAAoC,mFAAe,odAAod,oFAAuB;AAC9hB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC;AACA;AACA,uBAAuB,sFAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC,kCAAkC;AAClC;AACA;AACA,+FAA+F;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2EAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6EAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,eAAe;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6EAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6EAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yEAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iGAA6B;AACvD,iCAAiC,iGAA6B;AAC9D,kBAAkB,yEAA8B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6EAAe;AACvC;AACA;AACA,+BAA+B,iGAA6B;AAC5D,sCAAsC,iGAA6B;AACnE;AACA,6BAA6B,iGAA6B;AAC1D,oCAAoC,iGAA6B;AACjE,eAAe,yEAA8B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAgB;AACxB;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1gBA;AACA;AACA;AACA;AACyB;AACuC;AACI;AACN;AACG;AACG;AACS;AACjB;AACN;AAC2C;AACS;AAC1G;AACA;AACA,wCAAwC,wDAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,uDAAQ;AACvC;AACA;AACA;AACA;AACA,iCAAiC,sEAAsB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yDAAe;AACnD,QAAQ,qEAAsB;AAC9B,gDAAgD,0GAAgC,CAAC;AACjF,QAAQ,iFAA2B;AACnC;AACA;AACA,0CAA0C,mEAAgB;AAC1D;AACA,SAAS;AACT,uDAAuD,mEAAgB;AACvE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,yDAAe;AACtD;AACA;AACA;AACA;AACA,kDAAkD,6BAA6B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA;AACA,YAAY,IAAI;AAChB;AACA;AACA,sDAAsD,iCAAiC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,8BAA8B;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA;AACA,mCAAmC,6DAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,wEAAqB;AAC3C;AACA;AACA;AACA;AACA,sCAAsC,2DAAiB;AACvD;AACA;AACA,sHAAsH,8DAAQ;AAC9H;AACA;AACA;AACA,oDAAoD,mCAAmC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0HAA0H,8DAAQ;AAClI;AACA;AACA;AACA;AACA,oDAAoD,+EAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kHAAkH,2DAAiB;AACnI;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gFAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iCAAiC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAgB;AAC5B;AACA;AACA,sDAAsD,iCAAiC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzoBA;AACA;AACA;AACA;AACgC;AACiD;AAC1E,sCAAsC,qEAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA,gCAAgC,2EAAkB;AAClD;AACA;AACA;AACA,gCAAgC,2EAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,sBAAsB;AAC3E;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AAC4E;AAC1B;AAC3C,qBAAqB,uDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA,6CAA6C,+EAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACiC;AACgD;AAC1E,+CAA+C,qEAAY;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA,gCAAgC,2EAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACuB;AACgC;AACqB;AACyC;AACnD;AACF;AACF;AACI;AACE;AACqC;AACnD;AACD;AAC8C;AACtB;AACmI;AACjH;AACjC;AACS;AACM;AAClB;AACE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAI,OAAO,8FAAiC;AACxE;AACA;AACA;AACA,0CAA0C,uFAAiB;AAC3D;AACA,uBAAuB,wDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAuB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB,GAAG,sHAAyD;AAC9F;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,eAAe;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sBAAsB,uDAAQ;AACrC;AACA;AACA,kCAAkC,kHAAqC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAAyE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,uBAAuB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iEAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gFAAmB,KAAK,yDAAK;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,yDAAK;AACjE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,iEAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,sFAAgB;AACpE,wBAAwB,+EAAiB;AACzC,QAAQ,qEAAsB;AAC9B;AACA;AACA;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA;AACA,kCAAkC,+EAAiB;AACnD;AACA;AACA;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA;AACA;AACA;AACA,iCAAiC,+EAAiB;AAClD;AACA;AACA;AACA;AACA,kCAAkC,+EAAiC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wEAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2CAA2C,2FAAsB;AACjE,wCAAwC,+EAAiC;AACzE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kCAAkC,sEAAiB;AACnD,yCAAyC,uEAAyB,wBAAwB,oEAAe;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,iBAAiB;AAC7B,wCAAwC,uEAAyB,wBAAwB,qEAAgB;AACzG;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,iBAAiB;AAC7B,uCAAuC,+EAAiC,wBAAwB,kEAAa;AAC7G;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,4FAAuB;AAClH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,sFAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sCAAsC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA,0DAA0D,iCAAiC;AAC3F;AACA;AACA;AACA;AACA,2BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA,iEAAiE,wCAAwC;AACzG;AACA,6BAA6B,qEAAsB;AACnD;AACA;AACA,6BAA6B,qEAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iFAAoB;AACtD,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA,sBAAsB,yEAA4B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAyD;AACxE,yFAAyF,iFAAoB;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iFAAoB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,uBAAuB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,SAAS;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,iFAAoB;AACrC;AACA;AACA,+DAA+D,wBAAwB;AACvF;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yEAA4B;AAC9D,mCAAmC,WAAW;AAC9C;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAA0B;AAC1B,kDAAkD,uFAAiB;AACnE;AACA,6DAA6D,YAAY,+BAA+B,sBAAsB,EAAE;AAChI;AACA,4CAA4C,6FAAuB;AACnE;AACA,sFAAsF,eAAe,kBAAkB,EAAE;AACzH;AACA,iDAAiD,kGAA4B;AAC7E;AACA,4FAA4F,eAAe,uBAAuB,EAAE;AACpI;AACA,kDAAkD,mGAA6B;AAC/E;AACA,6FAA6F,eAAe,wBAAwB,EAAE;AACtI;AACA,kCAAkC,qFAAe;AACjD;AACA,mEAAmE,eAAe,OAAO,uBAAuB,EAAE;AAClH;AACA,CAAC;;;;;;;;;;;;;;;;;;AC1vCD;AACA;AACA;AACA;AACqD;AACK;AACnD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kEAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnFA;AACA;AACA;AACA;AAC+D;AACV;AACG;AACE;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAgB;AAC5B,0BAA0B,wEAAmB,CAAC,iEAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B,KAAK,WAAW;AACxE;AACA;AACA,2BAA2B,8DAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wEAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD;AACA;AACA,2CAA2C,eAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6DAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AACA;AACO;AACP;AACA,wCAAwC,4BAA4B;AACpE;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AAC6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,OAAO,gEAAI;AACX,OAAO,gEAAI;AACX;;;;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AAC8B;AAC8C;AACR;AAC7D,iCAAiC,uDAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC,QAAQ,qEAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACxGA;AACA;AACA;AACA;AAC4E;AACnB;AACP;AACU;AACI;AAC+E;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0FAAyB;AACpE;AACA;AACA,2CAA2C,uFAAsB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8FAA6B,KAAK,uFAAyC;AACxG;AACA;AACA;AACA;AACA;AACA,mCAAmC,6EAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uCAAuC,uDAAQ;AACtD;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,8EAAgC;AAC3E;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA,mCAAmC,sEAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,SAAS;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACtWA;AACA;AACA;AACA;AAC4E;AACM;AACD;AAC1E,4BAA4B,mFAAgB;AACnD;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA,gCAAgC,oFAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC9HA;AACA;AACA;AACA;AACsB;AACsD;AAC1B;AACwB;AACqB;AACxF,qBAAqB,uDAAQ;AACpC;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA,6BAA6B,+EAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA,yDAAyD,YAAY;AACrE;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,sCAAsC,4EAAW;AACjD;AACA,uDAAuD,yBAAyB,WAAW,OAAO,EAAE;AACpG;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;AClFD;AACA;AACA;AACA;AACgC;AAC4C;AAC1B;AACmC;AACU;AACxF,uCAAuC,uDAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,kCAAkC,oFAAe;AACjD;AACA,8DAA8D,eAAe,OAAO,sBAAsB,EAAE;AAC5G;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AAC0B;AACqC;AACO;AAC6E;AACpD;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,4DAAc;AACvD,gCAAgC,2EAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+CAA+C;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gCAAgC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,UAAU;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,oCAAoC;AACzF;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,gDAAgD,8FAAyB;AACzE;AACA,mEAAmE,qBAAqB,sBAAsB,EAAE;AAChH;AACA,wDAAwD,4FAAuB;AAC/E;AACA,0DAA0D,qBAAqB,8BAA8B,EAAE;AAC/G;AACA,0DAA0D,8FAAyB;AACnF;AACA,gFAAgF,UAAU,gCAAgC,EAAE;AAC5H;AACA,CAAC;AACD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACrVA;AACA;AACA;AACA;AACuD;AACqB;AACd;AACA;AACkB;AACpB;AACN;AACoD;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC,6CAA6C,yGAAgC,CAAC;AAC9E;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA,6BAA6B,8DAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAA2B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uFAA0B,0BAA0B,2FAA8B;AACpH;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uFAA0B;AAChE,wBAAwB,wEAA0B;AAClD;AACA;AACA,2CAA2C,mEAAsB;AACjE;AACA;AACA;AACA;AACA,wBAAwB,wEAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mEAAsB;AACrD,4EAA4E,wDAAK;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wFAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4FAA+B,0BAA0B,gGAAmC;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,yGAAgC,CAAC,GAAG,sCAAsC;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACjKA;AACA;AACA;AACA;AAC2B;AACiD;AACG;AAC7B;AACL;AACmC;AAC6B;AACd;AACxF,0BAA0B,uDAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAU;AAC5C;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA,8CAA8C,+DAAY;AAC1D,4CAA4C,gEAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC,sCAAsC,sDAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA,uBAAuB,+BAA+B;AACtD;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uFAA0B;AAC3C;AACA;AACA,iBAAiB,wFAA2B;AAC5C;AACA;AACA,iBAAiB,4FAA+B;AAChD;AACA;AACA,iBAAiB,2FAA8B;AAC/C;AACA;AACA,iBAAiB,+FAAkC;AACnD;AACA;AACA,iBAAiB,gGAAmC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,iCAAiC,uFAAsB;AACvD;AACA,6CAA6C,uFAAsB;AACnE;AACA;AACA;AACA,kEAAkE,qBAAqB,OAAO,iBAAiB,OAAO,UAAU,iBAAiB,EAAE;AACnJ;AACA,oFAAoF,0BAA0B,iBAAiB,2BAA2B,iBAAiB,EAAE;AAC7K;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;AC5SD;AACA;AACA;AACA;AAC4E;AACN;AACpB;AACU;AAC5D,2BAA2B,4CAA4C;AAChE,wBAAwB,uDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+EAAiB;AACxC;AACA;AACA;AACA;AACA,6BAA6B,+EAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,yCAAyC,8DAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+EAAiB;AACtC,gDAAgD,+EAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yEAAiB;AACzB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChUA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC4B;AACW;AACa;AACe;AACX;AACgB;AACd;AACC;AACO;AACI;AAC3B;AAC0B;AACc;AACxB;AACa;AACf;AACN;AACQ;AACS;AACP;AACS;AACvB;AACsE;AACsI;AACvL;AACY;AACO;AACS;AACA;AACH;AACc;AACX;AAC5B;AACuC;AAC3B;AACC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iEAAU;AAChE;AACA;AACA;AACA,gDAAgD,0DAAO;AACvD;AACA,2DAA2D,0DAAO;AAClE;AACA,4DAA4D,0DAAO;AACnE;AACA,yEAAyE,0DAAO;AAChF;AACA,2DAA2D,0DAAO;AAClE;AACA,+DAA+D,0DAAO;AACtE;AACA,4DAA4D,0DAAO;AACnE;AACA,oDAAoD,0DAAO;AAC3D;AACA,6DAA6D,0DAAO;AACpE;AACA,8DAA8D,0DAAO;AACrE;AACA,4DAA4D,0DAAO;AACnE;AACA,qDAAqD,0DAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,0DAAO;AACrD;AACA,6CAA6C,0DAAO;AACpD;AACA,yDAAyD,0DAAO;AAChE;AACA,uDAAuD,0DAAO;AAC9D;AACA,8CAA8C,0DAAO;AACrD;AACA,6CAA6C,0DAAO;AACpD;AACA,+CAA+C,0DAAO;AACtD;AACA,+CAA+C,0DAAO;AACtD;AACA,+CAA+C,0DAAO;AACtD;AACA,iDAAiD,0DAAO;AACxD;AACA,+CAA+C,0DAAO;AACtD;AACA,gDAAgD,0DAAO;AACvD;AACA,gDAAgD,0DAAO;AACvD;AACA,2CAA2C,0DAAO;AAClD;AACA,6CAA6C,0DAAO;AACpD;AACA,0DAA0D,0DAAO;AACjE;AACA,qDAAqD,0DAAO;AAC5D;AACA,wDAAwD,0DAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,mGAAiB,EAAE,0FAAkB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iGAA+C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA,QAAQ,2FAAyC;AACjD,uCAAuC,0EAAoB,wCAAwC,2EAAmB;AACtH;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,mEAAa;AAChC;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAmC;AAClD;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yGAAgC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,8DAAU;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sGAAqC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2EAAoB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa,kEAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2EAAoB;AACjC;AACA;AACA,kCAAkC,yDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8EAAsB;AAClD,wBAAwB,kEAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kEAAc;AAC3B;AACA;AACA,8BAA8B,8DAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD,iBAAiB,8EAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,qEAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yDAAK;AAChC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2FAAyC;AACjE;AACA;AACA;AACA;AACA,mGAAmG,qEAAiB;AACpH,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,6FAA2B;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qFAA+B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0EAAS,uCAAuC,gGAAmC,IAAI,wHAAyC,6CAA6C,8EAAgC;AAC3O;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,6CAAY,gEAAgE,EAAE,IAAI,kFAAuB;AAChK;AACA;AACA,8DAA8D,SAAS;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA,qCAAqC;AACrC;AACA,iBAAiB;AACjB;AACA,qGAAqG;AACrG,iBAAiB;AACjB;AACA,iGAAiG;AACjG,iBAAiB;AACjB;AACA,2EAA2E;AAC3E;AACA;AACA;AACA,wCAAwC,8EAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC,eAAe,8EAAkB;AACjC,eAAe,mFAAe;AAC9B,eAAe,0FAAkB;AACjC,eAAe,kFAAa;AAC5B,eAAe,gGAAoB;AACnC,eAAe,mGAAqB;AACpC;AAC4B;AACrB,kCAAkC,iEAAU;AACnD;AACA;AACA,qDAAqD,0DAAO;AAC5D;AACA,sDAAsD,0DAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iEAAU;AACjD;AACA;AACA;AACA;AACA,kCAAkC,qGAA0C;AAC5E,4BAA4B,yFAA8B;AAC1D,+BAA+B,kGAAuC;AACtE,gCAAgC,mGAAwC;AACxE,oCAAoC,iGAAsC;AAC1E,+BAA+B,4FAAiC;AAChE,sCAAsC,mGAAwC;AAC9E,sCAAsC,yGAA8C;AACpF,qCAAqC,wGAA6C;AAClF,wBAAwB,2FAAgC;AACxD,wBAAwB,2FAAgC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,gCAAgC,iEAAU;AACjD;AACA;AACA;AACA;AACA,uBAAuB,8FAAmC;AAC1D,0CAA0C,6GAAkD;AAC5F,uCAAuC,0GAA+C;AACtF,oCAAoC,uGAA4C;AAChF,sCAAsC,yGAA8C;AACpF,uCAAuC,0GAA+C;AACtF,0CAA0C,6GAAkD;AAC5F,0CAA0C,6GAAkD;AAC5F,iCAAiC,oGAAyC;AAC1E,6CAA6C,gHAAqD;AAClG,0CAA0C,6GAAkD;AAC5F,qCAAqC,wGAA6C;AAClF,kCAAkC,qGAA0C;AAC5E,yCAAyC,4GAAiD;AAC1F,8CAA8C,iHAAsD;AACpG,uDAAuD,0HAA+D;AACtH,sDAAsD,yHAA8D;AACpH,+DAA+D,kIAAuE;AACtI,gCAAgC,0GAA+C;AAC/E;AACA;AACA;AACA;AACA;AACA,uBAAuB,qFAA4C;AACnE,uBAAuB,qFAA4C;AACnE,uBAAuB,mFAA0C;AACjE,uBAAuB,qFAA4C;AACnE,uBAAuB,sFAA6C;AACpE,uBAAuB,yFAAgD;AACvE,uBAAuB,yFAAgD;AACvE,uBAAuB,gFAAuC;AAC9D,uBAAuB,4FAAmD;AAC1E,uBAAuB,yFAAgD;AACvE,uBAAuB,oFAA2C;AAClE,uBAAuB,iFAAwC;AAC/D,uBAAuB,iGAAwD;AAC/E,uBAAuB,sGAA6D;AACpF,uBAAuB,wFAA+C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,6EAAoC;AACpF,6CAA6C,6EAAoC;AACjF,0CAA0C,2EAAkC;AAC5E,4CAA4C,6EAAoC;AAChF,6CAA6C,8EAAqC;AAClF,gDAAgD,iFAAwC;AACxF,gDAAgD,iFAAwC;AACxF,uCAAuC,wEAA+B;AACtE,mDAAmD,oFAA2C;AAC9F,gDAAgD,iFAAwC;AACxF,2CAA2C,4EAAmC;AAC9E,wCAAwC,yEAAgC;AACxE,+CAA+C,gFAAuC;AACtF,oDAAoD,yFAAgD,WAAW,8FAAqD;AACpK,6DAA6D,8FAAqD;AAClH,4DAA4D,yFAAgD,iBAAiB,8FAAqD;AAClL,qEAAqE,8FAAqD;AAC1H,2DAA2D,+EAA0B;AACrF,SAAS;AACT;AACA;AACA,2CAA2C,iEAAU;AACrD;AACA;AACA,4CAA4C,0DAAO;AACnD;AACA;AACA,+CAA+C,4DAAc;AAC7D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAA0B;AAC1B,4CAA4C,uFAAiB;AAC7D;AACA,6CAA6C,6CAA6C,EAAE,6BAA6B,kBAAkB,EAAE;AAC7I;AACA,2CAA2C,2FAAqB;AAChE;AACA,6CAA6C,6CAA6C,EAAE,uCAAuC,oCAAoC,wBAAwB,EAAE;AACjM;AACA,8CAA8C,yFAAmB;AACjE;AACA,6CAA6C,iDAAiD,EAAE,6BAA6B,oBAAoB,EAAE;AACnJ;AACA,6CAA6C,6FAAuB;AACpE;AACA,6CAA6C,iDAAiD,EAAE,uCAAuC,sCAAsC,wBAAwB,EAAE;AACvM;AACA,2CAA2C,sFAAgB;AAC3D;AACA,6CAA6C,2CAA2C,EAAE,6BAA6B,iBAAiB,EAAE;AAC1I;AACA,0CAA0C,0FAAoB;AAC9D;AACA,6CAA6C,2CAA2C,EAAE,uCAAuC,mCAAmC,wBAAwB,EAAE;AAC9L;AACA,2CAA2C,sFAAgB;AAC3D;AACA,6CAA6C,2CAA2C,EAAE,6BAA6B,iBAAiB,EAAE;AAC1I;AACA,0CAA0C,0FAAoB;AAC9D;AACA,6CAA6C,2CAA2C,EAAE,uCAAuC,oCAAoC,yBAAyB,EAAE;AAChM;AACA,iDAAiD,8FAA4B;AAC7E;AACA,wDAAwD,sEAAsE,EAAE,YAAY,8BAA8B,EAAE;AAC5K;AACA,6CAA6C,6FAA2B;AACxE;AACA,wDAAwD,yDAAyD,EAAE,6BAA6B,mBAAmB,EAAE;AACrK;AACA,gDAAgD,sFAAgB;AAChE,wDAAwD,oEAAoE,EAAE,+BAA+B,0BAA0B,sBAAsB;AAC7M,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC15CD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACgC;AACO;AACa;AACqB;AACZ;AACI;AACT;AACO;AACJ;AACA;AACM;AACK;AACb;AACZ;AAC6C;AACvC;AACsB;AACZ;AACY;AACW;AACP;AACD;AACkB;AACA;AACP;AACS;AACA;AACH;AAC2N;AACvL;AACtC;AAClC;AACkC;AACzB;AACC;AACoB;AAChB;AACE;AAC8B;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,YAAY;AACxE;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kFAA+B;AAChF;AACA;AACA,wDAAwD,YAAY;AACpE;AACA;AACA,mEAAmE,YAAY;AAC/E;AACA;AACA;AACA;AACA;AACA,iEAAiE,YAAY;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,mEAAgB;AACpE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAY,gBAAgB,kEAAW;AAC9D,uBAAuB,uEAAY,gBAAgB,qEAAc;AACjE,sDAAsD,iEAAU;AAChE;AACA;AACA;AACA,gDAAgD,0DAAO;AACvD;AACA,mDAAmD,0DAAO;AAC1D;AACA,0DAA0D,0DAAO;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,mEAAgB;AAC3E;AACA;AACA;AACA;AACA;AACA,2CAA2C,+EAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+EAAiC;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gFAAmB;AAC1E;AACA;AACA;AACA;AACA;AACA,iCAAiC,mGAAiB;AAClD,yBAAyB,0FAAkB;AAC3C;AACA;AACA,kCAAkC,mGAAiB;AACnD,0BAA0B,0FAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8BAA8B,sGAAmD;AACjF;AACA;AACA;AACA;AACA;AACA,gBAAgB,0EAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6FAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,mDAAmD,mEAAgB,wBAAwB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAmC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6CAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAiB,cAAc;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qHAAuD;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAqD;AACzF,oCAAoC,2GAA2G;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,eAAe,8FAAiB;AAChC,eAAe,0FAAoB;AACnC,eAAe,0FAAkB;AACjC,eAAe,mGAAqB;AACpC,eAAe,+EAAkB;AACjC,eAAe,kFAAa;AAC5B,eAAe,gGAAoB;AACnC,eAAe,8FAAmB;AAClC,gBAAgB,0FAAsB;AACtC;AAC4B;AAC5B,oCAAoC,iEAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kFAAY,KAAK,wFAAkB;AAChF,6CAA6C,iFAAW,KAAK,wFAAkB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,aAAa;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA,mBAAmB,yDAAK;AACxB;AACA;AACA;AACO;AACP,gBAAgB,wFAA+B;AAC/C;AACA,KAAK;AACL,yBAAyB,wFAA+B;AACxD;AACA;AACA,KAAK;AACL,gBAAgB,wFAA+B;AAC/C;AACA,KAAK;AACL,yBAAyB,wFAA+B;AACxD;AACA;AACA,KAAK;AACL,gBAAgB,wFAA+B;AAC/C;AACA;AACA;AACA,KAAK;AACL,wBAAwB,wFAA+B;AACvD;AACA;AACA;AACA;AACA,KAAK;AACL,gBAAgB,wFAA+B;AAC/C;AACA;AACA;AACA,KAAK;AACL,wBAAwB,wFAA+B;AACvD;AACA;AACA;AACA;AACA,KAAK;AACL,sBAAsB,wFAA+B;AACrD;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+DAAI,gDAAgD,gCAAgC;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA,iBAAiB;AACjB;AACA;AACA;AACA,8CAA8C,mFAAiB;AAC/D;AACA,4EAA4E,aAAa;AACzF;AACA;AACA;AACA,yFAAyF,gDAAgD;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA,iBAAiB;AACjB;AACA;AACA;AACA,8CAA8C,mFAAiB;AAC/D;AACA,4EAA4E,aAAa;AACzF;AACA;AACA;AACA,yFAAyF,gDAAgD;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA,iBAAiB;AACjB,8CAA8C,mFAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA,iBAAiB;AACjB,8CAA8C,mFAAiB;AAC/D;AACA,4EAA4E,aAAa;AACzF;AACA;AACA;AACA,yFAAyF,gDAAgD;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,aAAa;AACjF;AACA;AACA,yCAAyC,6EAAgB,KAAK,yDAAK;AACnE;AACA;AACA;AACA,iBAAiB,mFAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gDAAgD;AACjH;AACA;AACA;AACA;AACA;AACA,+CAA+C,0BAA0B,2BAA2B,MAAM,mBAAmB,GAAG,QAAQ,qBAAqB,GAAG,SAAS,WAAW,GAAG,QAAQ;AAC/L;AACA;AACA;AACA;AACA;AACA,sDAAsD,0GAAgC,CAAC;AACvF;AACA,QAAQ,qFAA+B;AACvC;AACA;AACA;AACA,QAAQ,qFAA+B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yFAAqB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD,6BAA6B,+FAAkC;AAC/D,4BAA4B,8FAAiC;AAC7D,uBAAuB,uFAAc,KAAK,oFAAe,ucAAuc,qFAAuB;AACvhB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAA0B;AAC1B,iCAAiC,kFAAY;AAC7C;AACA,qFAAqF,qBAAqB,OAAO,EAAE;AACnH,+FAA+F,qBAAqB,OAAO,EAAE;AAC7H,0EAA0E,qBAAqB,OAAO,EAAE;AACxG;AACA,mCAAmC,iFAAW;AAC9C;AACA,qFAAqF,qBAAqB,SAAS,EAAE;AACrH,+FAA+F,qBAAqB,SAAS,EAAE;AAC/H,4EAA4E,qBAAqB,SAAS,EAAE;AAC5G;AACA,wCAAwC,yFAAmB;AAC3D;AACA,qFAAqF,eAAe,yCAAyC,GAAG,cAAc,EAAE;AAChK;AACA,0CAA0C,wFAAkB;AAC5D;AACA,qFAAqF,eAAe,yCAAyC,GAAG,gBAAgB,EAAE;AAClK;AACA,kCAAkC,qFAAe;AACjD;AACA,8EAA8E,+BAA+B,QAAQ,EAAE;AACvH;AACA,kCAAkC,gFAAU;AAC5C;AACA,8EAA8E,0BAA0B,QAAQ,EAAE;AAClH;AACA,0DAA0D,+FAAyB;AACnF;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,+DAA+D,oGAA8B;AAC7F;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,gEAAgE,qGAA+B;AAC/F;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,iDAAiD,sFAAgB;AACjE;AACA;AACA;AACA;AACA,KAAK,sBAAsB;AAC3B;AACA,KAAK,sBAAsB,QAAQ,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;ACzsDD;AACA;AACA;AACA;AACyD;AACD;AACO;AACJ;AACR;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,4BAA4B,iEAAU;AAC7C,oCAAoC;AACpC;AACA,+CAA+C,0DAAO;AACtD;AACA,wBAAwB,0DAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wDAAK;AAC5C,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,mCAAmC,wDAAK;AACxC,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,mBAAmB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxKA;AACA;AACA;AACA;AACgC;AACO;AACa;AACqB;AACG;AACmB;AACtC;AACM;AACJ;AACiB;AACN;AACK;AACd;AACJ;AACoB;AACoC;AACrC;AACO;AACD;AACU;AACnB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAY,uBAAuB,kEAAW;AAC3E,6BAA6B,uEAAY,uBAAuB,qEAAc;AAC9E,4BAA4B,uEAAY,sBAAsB,oEAAa;AACpE,yBAAyB,iEAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,sBAAsB,+EAAiB;AACvC;AACA,kCAAkC,+EAAiB;AACnD;AACA,6CAA6C,8EAAS;AACtD,iCAAiC,2DAAM,qBAAqB,6CAAY;AACxE;AACA;AACA,SAAS,IAAI,2BAA2B;AACxC,uBAAuB,+EAAiB;AACxC;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA,4CAA4C,iGAAoB,0BAA0B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,+EAAiC;AACxD;AACA,sBAAsB,qEAAuB;AAC7C;AACA;AACA;AACA,SAAS;AACT,uBAAuB,+EAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+DAAQ;AACjD,uCAAuC,gLAAgL;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+DAAQ;AACjD,uCAAuC,gLAAgL;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+DAAQ;AACrD,gDAAgD,+DAAQ;AACxD;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAa;AACzB;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qFAA+B;AACvC;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,cAAc,GAAG,mBAAmB,QAAQ,gBAAgB,GAAG,wBAAwB,IAAI,gBAAgB,GAAG,wBAAwB;AAC1L;AACA;AACA;AACA,uBAAuB,6CAAY;AACnC;AACA;AACA,uBAAuB,6CAAY;AACnC;AACA;AACA,uBAAuB,6CAAY,yBAAyB,EAAE;AAC9D;AACA;AACA;AACA;AACA,0CAA0C,6CAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,oCAAoC,6CAAY,EAAE,4GAA4G,IAAI,EAAE,iBAAiB,EAAE;AACvL;AACA;AACA,oCAAoC,6CAAY,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE;AACtG;AACA;AACA;AACA,gCAAgC,6CAAY,mBAAmB,EAAE,gBAAgB,EAAE;AACnF;AACA;AACA,gCAAgC,6CAAY,mBAAmB,EAAE,gBAAgB,EAAE;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mEAAU;AACzC,6BAA6B,+FAAkC;AAC/D,4BAA4B,8FAAiC;AAC7D,kBAAkB,wFAAc,KAAK,oFAAe,wbAAwb,qFAAuB;AACngB;AACA;AACA;AACA;AACA,mGAA0B;AAC1B,uCAAuC,mFAAiB;AACxD;AACA,yEAAyE,UAAU,aAAa,EAAE;AAClG;AACA,kCAAkC,qFAAe;AACjD;AACA,oEAAoE,eAAe,OAAO,uBAAuB,EAAE;AACnH;AACA,CAAC;AACD,6BAA6B,8DAAY;AACzC;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAY;AACzC;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+EAAkB;AAC7D;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAAoB;AACpB,0EAAoB;;;;;;;;;;;;;;;;;;;;;;;;;AC7rBpB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC2D;AACW;AACb;AACuB;AACO;AACS;AACH;AACd;AACiB;AAChG,sEAAsE,kEAAgB;AACtF;AACA,wDAAwD,kCAAkC,mEAAmE,KAAK;AAClK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;AACA,eAAe,kGAAqB;AACpC,eAAe,8EAAkB;AACjC,eAAe,kFAAe;AAC9B,eAAe,yFAAkB;AACjC,eAAe,iFAAa;AAC5B,eAAe,+FAAoB;AACnC,eAAe,kGAAqB;AACpC;AACoC;;;;;;;;;;;;;;;;;;;;;;ACpDpC;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AACa;AACK;AACM;AACZ;AACQ;AACpD,+BAA+B,iEAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kFAA4B;AAClE;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD,gDAAgD,WAAW;AAC3D;AACA;AACA;AACA,yBAAyB,2DAAM;AAC/B,cAAc,6CAAY;AAC1B,cAAc,6CAAY;AAC1B;AACA,SAAS;AACT;AACA;AACA;AACA,iCAAiC,2DAAM,0CAA0C,6CAAY,qEAAqE,EAAE;AACpK;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,6BAA6B,2DAAM,6BAA6B,6CAAY;AAC5E;AACA;AACA;AACA;AACA;AACA,uCAAuC,wDAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wDAAK;AAC5C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+CAA+C,6CAAY,qEAAqE,EAAE;AAClI;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,uBAAuB,+EAAiC;AACxD,mBAAmB,cAAc,GAAG,wEAA0B;AAC9D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM,GAAG,wEAA0B;AAClD;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC1JA;AACA;AACA;AACA;AACiD;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAS;AAC5B;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAS;AAC5B;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAS;AAC5B;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAS;AAC5B;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACjFA;AACA;AACA;AACA;AAC2D;AACG;AACrB;AACQ;AACyC;AAC1F;AACO;AACP;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,8FAAqC;AAC/E;AACA;AACA,mCAAmC,wFAA+B;AAClE,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,mCAAmC,wFAA+B;AAClE,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA,0CAA0C,8FAAqC;AAC/E;AACA;AACA,mCAAmC,wFAA+B;AAClE,4DAA4D;AAC5D;AACA;AACA;AACA;AACA,mCAAmC,wFAA+B;AAClE,yDAAyD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uBAAuB;AACnE;AACA;AACA,0CAA0C,4EAA+B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,8FAAqC;AACzF;AACA;AACA;AACA;AACA,8CAA8C,iHAA4C,mCAAmC,iDAAK;AAClI;AACA;AACA;AACA,yFAAyF,sCAAsC;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,iDAAK;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uBAAuB;AACnE;AACA,0CAA0C,4EAA+B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,yBAAyB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,iDAAK;AAC7D;AACA;AACA,wDAAwD,iDAAK;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yDAAS;AACpC;AACA,uBAAuB,yDAAS;AAChC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC3NA;AACA;AACA;AACA;AACyC;AACQ;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAK;AACjD,4CAA4C,iDAAK;AACjD;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAS;AAC5B;AACA;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AAC2D;AACF;AAChB;AAClC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,yBAAyB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2EAA8B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB,KAAK,iDAAK;AAClD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AACA;AACuC;AACiB;AACO;AACJ;AACF;AACkG;AAC9G;AACA;AACgD;AACpB;AACX;AACvD;AACP;AACA;AACA,wCAAwC,0DAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oEAAqB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qEAAsB;AACjD,mCAAmC,oEAAqB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oEAAqB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,0DAAa;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oEAAqB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wEAAyB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAO;AACf;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAiB;AACrC;AACA;AACA;AACO,wCAAwC,iEAAU;AACzD;AACA;AACA,+CAA+C,0DAAO;AACtD;AACA,mDAAmD,0DAAO;AAC1D;AACA;AACA;AACA,yCAAyC,mEAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA,uBAAuB,2EAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kFAAwC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0DAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAa,mCAAmC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,WAAW,6CAAY;AACvB;AACA,CAAC;AACD,8BAA8B,8EAAW,CAAC,6GAAwB;AAClE,0DAA0D,iCAAiC;AAC3F;AACA;AACA,qBAAqB,4EAA6B;AAClD;AACA,iCAAiC,6CAAY;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,qBAAqB,iFAAkC;AACvD,iCAAiC,6CAAY;AAC7C,SAAS;AACT;AACA;AACA,qBAAqB,sFAAuC;AAC5D,iCAAiC,6CAAY;AAC7C,SAAS;AACT;AACA;AACA,qBAAqB,uFAAwC;AAC7D,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA,qBAAqB,2FAA4C;AACjE,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,iCAAiC,6CAAY;AAC7C,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA,KAAK,EAAE;AACP;AACA;AACA;AACA;AACA,2BAA2B,oEAAqB;AAChD;AACA;AACA;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA,8CAA8C,IAAI;AAClD;AACO;AACP;AACA,kDAAkD,IAAI;AACtD;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7fA;AACA;AACA;AACA;AACuC;AACsB;AACE;AAC/D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,cAAc,6CAAY,sGAAsG;AAClN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAY;AAChC,oBAAoB,6CAAY;AAChC,oBAAoB,6CAAY;AAChC;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,0BAA0B,iEAAoB;AAC9C,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAAY;AAC7C,iBAAiB;AACjB;AACA;AACA,iCAAiC,6CAAY;AAC7C;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6CAAY;AAC9C,iBAAiB;AACjB;AACA;AACA,4DAA4D,IAAI;AAChE,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B;AACA;AACA;AACA;AACA,oCAAoC,6CAAY;AAChD,aAAa;AACb,sEAAsE,cAAc,6CAAY,kJAAkJ;AAClP,0EAA0E,cAAc,6CAAY,2JAA2J;AAC/P,uEAAuE,cAAc,6CAAY,oJAAoJ;AACrP,0EAA0E,cAAc,6CAAY,2JAA2J;AAC/P,qEAAqE,cAAc,6CAAY,iJAAiJ;AAChP;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qFAAqF;AACxG;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,cAAc,6CAAY,kGAAkG;AACvN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA,oBAAoB,6CAAY;AAChC,oBAAoB,6CAAY;AAChC,oBAAoB,6CAAY;AAChC;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAoB;AACpC;AACA;AACA;AACA;AACA;AACA,4CAA4C,oBAAoB;AAChE;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6CAAY;AACrD,yBAAyB;AACzB;AACA;AACA;AACA,yCAAyC,6CAAY;AACrD,yBAAyB;AACzB;AACA;AACA;AACA,yCAAyC,6CAAY;AACrD,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yCAAyC;AAC7F;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8BAA8B,6CAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6CAAY;AACzD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6CAAY;AAChC,oBAAoB,6CAAY;AAChC;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC,aAAa;AACb;AACA;AACA,oCAAoC,6CAAY;AAChD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD,aAAa;AACb;AACA;AACA;AACA,qCAAqC,6CAAY;AACjD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,iBAAiB,iEAAoB,8BAA8B,6DAAgB;AACnF;AACA,eAAe,iEAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,+JAA+J,sBAAsB,6CAAY,2JAA2J,oFAAoF;AAChb;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA,6BAA6B,6CAAY;AACzC,KAAK;AACL;AACA,iKAAiK,cAAc,6CAAY,mMAAmM;AAC9X,+EAA+E,6CAAY;AAC3F;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,qFAAqF,cAAc,6CAAY,6DAA6D;AAC5K,0GAA0G,cAAc,6CAAY,gHAAgH;AACpP,2GAA2G,cAAc,6CAAY,qGAAqG;AAC1O;AACA;AACA,2IAA2I,cAAc,6CAAY,6GAA6G;AAClR,uMAAuM,cAAc,6CAAY,2DAA2D;AAC5R,4IAA4I,cAAc,6CAAY,kGAAkG;AACxQ,iOAAiO,cAAc,6CAAY,+CAA+C;AAC1S,oKAAoK,cAAc,6CAAY,uLAAuL;AACrX;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,mIAAmI,sBAAsB,6CAAY,mGAAmG;AACxQ;AACA;AACA,8FAA8F,cAAc,6CAAY,kGAAkG;AAC1N;AACA;AACA,8IAA8I,sBAAsB,6CAAY,8EAA8E;AAC9P;AACA;AACA,kFAAkF,cAAc,6CAAY,sEAAsE;AAClL;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,6GAA6G,cAAc,6CAAY,qFAAqF;AAC5N,+IAA+I,cAAc,6CAAY,6HAA6H;AACtS,qHAAqH,cAAc,6CAAY,6CAA6C;AAC5L;AACA;AACA;AACA;AACA,qGAAqG,cAAc,6CAAY,kMAAkM;AACjU,kGAAkG,cAAc,6CAAY,oGAAoG;AAChO,8FAA8F,cAAc,6CAAY,oIAAoI;AAC5P;AACA,yIAAyI,cAAc,6CAAY,sGAAsG;AACzQ,2IAA2I,cAAc,6CAAY,yGAAyG;AAC9Q;AACA;AACA,yKAAyK,cAAc,6CAAY,6DAA6D;AAChQ;AACA;AACA;AACA;AACA;AACA,4EAA4E,cAAc,6CAAY,uFAAuF;AAC7L,wIAAwI,cAAc,6CAAY,mDAAmD;AACrN;AACA;AACA,iKAAiK,sBAAsB,6CAAY,uHAAuH;AAC1T,wGAAwG,sBAAsB,6CAAY,8FAA8F;AACxO,8IAA8I,cAAc,6CAAY,sFAAsF;AAC9P;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,6BAA6B,6CAAY;AACzC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,6BAA6B,6CAAY;AACzC,KAAK;AACL,yHAAyH,cAAc,6CAAY,uGAAuG;AAC1P,sHAAsH,cAAc,6CAAY,iGAAiG;AACjP;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,yIAAyI,cAAc,6CAAY,oHAAoH;AACvR;AACA,kKAAkK,cAAc,6CAAY,6GAA6G;AACzS;AACA,kGAAkG,cAAc,6CAAY,uEAAuE;AACnM,mIAAmI,cAAc,6CAAY,8FAA8F;AAC3P,mHAAmH,cAAc,6CAAY,oFAAoF;AACjO,mHAAmH,cAAc,6CAAY,sFAAsF;AACnO;AACA;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,8JAA8J,cAAc,6CAAY,yIAAyI;AACjU;AACA;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA,6GAA6G,cAAc,6CAAY,kFAAkF;AACzN;AACA;AACA,oKAAoK,cAAc,6CAAY,yHAAyH;AACvT,yHAAyH,cAAc,6CAAY,2FAA2F;AAC9O,4HAA4H,cAAc,6CAAY,0MAA0M;AAChW;AACA,qBAAqB,6CAAY;AACjC,kBAAkB,6DAAgB;AAClC,KAAK;AACL,mHAAmH,cAAc,6CAAY,0GAA0G;AACvP;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,2FAA2F,cAAc,6CAAY,uDAAuD;AAC5K,wGAAwG,cAAc,6CAAY,oEAAoE;AACtM;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,2GAA2G,cAAc,6CAAY,oFAAoF;AACzN;AACA;AACA,4GAA4G,sBAAsB,6CAAY,qHAAqH;AACnQ,kHAAkH,sBAAsB,6CAAY,2HAA2H;AAC/Q,2IAA2I,cAAc,6CAAY,6HAA6H;AAClS;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL,+FAA+F,cAAc,6CAAY,yEAAyE;AAClM,gGAAgG,uEAAqB,GAAG,cAAc,6CAAY,0HAA0H;AAC5Q;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,6CAAY;AACxB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,qBAAqB,6CAAY;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,+IAA+I,SAAS;AACxJ,iJAAiJ;AACjJ;AACA,6BAA6B,6CAAY;AACzC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA,YAAY,6CAAY;AACxB,YAAY,6CAAY;AACxB;AACA,qBAAqB,6CAAY;AACjC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/iEA;AACA;AACA;AACA;AACwD;AACjD;AACP;AACA;AACA,yCAAyC,0DAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AAC6D;AAChB;AAC7C;AACA;AACA;AACA;AACA,iCAAiC,iEAAoB;AACrD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,mEAAuB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtHA;AACA;AACA;AACA;AACmE;AACR;AACF;AAC0C;AACpC;AACwB;AAC9C;AACQ;AACgD;AACzB;AACW;AACnF;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kDAAkD;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAiD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0EAA8B;AAC3D,wBAAwB,0EAA8B;AACtD,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qBAAqB,iEAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAa;AACxC,4BAA4B,kEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAO;AACzC;AACA;AACA;AACA,2BAA2B,2DAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oCAAoC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iDAAK;AACvC;AACA;AACA;AACA;AACA,0CAA0C,4EAA2B;AACrE;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,wEAAwE,6EAA+B;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kEAAgB;AAChD;AACA;AACA;AACA;AACA;AACA,oCAAoC,6EAA+B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,6EAA+B;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oFAAsC;AACxE;AACA,gCAAgC,oFAAsC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,6EAA+B;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,8BAA8B;AACzD;AACA,uCAAuC,gFAA0B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4EAA2B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4FAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA,wDAAwD,iDAAK;AAC7D,uDAAuD,iDAAK;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,mGAA6C;AACxF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mEAAsB;AAC7D;AACA;AACA;AACA,+CAA+C,yFAAmC;AAClF;AACA;AACA;AACA;AACA,2CAA2C,4FAAsC;AACjF;AACA,SAAS;AACT;AACA;AACA;AACA,uCAAuC,wFAAkC;AACzE,SAAS;AACT;AACA;AACA;AACA,uCAAuC,0EAAoB;AAC3D,SAAS;AACT;AACA;AACA;AACA,uCAAuC,4EAAoB;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA,2CAA2C,iEAAmB;AAC9D;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,2CAA2C,iEAAmB;AAC9D;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,2CAA2C,yDAAS;AACpD;AACA,uCAAuC,yDAAS;AAChD;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wEAA4B;AACjD,SAAS;AACT;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA,gBAAgB,kEAAsB,4BAA4B,gEAAoB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClyBA;AACA;AACA;AACA;AACgD;AACL;AACM;AAC1C;AACP;AACA;AACA,iCAAiC,oDAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA,uBAAuB,6EAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA,uBAAuB,2BAA2B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oDAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uCAAuC,8CAA8C;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,yDAAS;AAC1D;AACA;AACA,iDAAiD,yDAAS;AAC1D;AACA;AACA,2CAA2C,4EAA8B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjPA;AACA;AACA;AACA;AACqE;AACtB;AACN;AAClC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kBAAkB,qBAAqB,gBAAgB;AACpG,uBAAuB,eAAe;AACtC;AACA,8BAA8B,oFAAsC;AACpE,4BAA4B,oFAAsC;AAClE,qCAAqC,oFAAsC,oBAAoB,uDAAQ;AACvG,mCAAmC,oFAAsC,oBAAoB,uDAAQ;AACrG,0CAA0C,WAAW,wBAAwB,mBAAmB,sBAAsB,iBAAiB;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAiB,KAAK,iDAAK,2DAA2D,uDAAQ;AAC1H;AACA;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA,gCAAgC,+DAAiB,KAAK,iDAAK,uDAAuD,uDAAQ;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iCAAiC;AACjF;AACA,4CAA4C,oFAAsC,oBAAoB,uDAAQ;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzFA;AACA;AACA;AACA;AACmE;AACR;AACZ;AACN;AACQ;AACC;AACwC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+EAA8B;AAC7C;AACA;AACA;AACA,mBAAmB,wHAAmD;AACtE;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,mBAAmB,sHAAiD;AACpE;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wHAAmD;AAC1F;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,mBAAmB,sHAAiD;AACpE;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6GAA6G,uDAAQ;AACrH;AACA;AACA;AACA,6CAA6C,iDAAK,sEAAsE,uDAAQ;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAS;AAC5B;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iDAAK,yGAAyG,uDAAQ;AAC3K;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qEAAwB;AACtD;AACA;AACA;AACA;AACA;AACA,wCAAwC,yEAA4B;AACpE;AACA,0CAA0C,qEAAwB;AAClE,kDAAkD,yEAA4B;AAC9E,wBAAwB,kFAAqC;AAC7D;AACA;AACA;AACA;AACA;AACA,oBAAoB,yEAA4B,eAAe,qEAAwB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,qEAAwB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yEAA4B;AACpE;AACA,0CAA0C,qEAAwB;AAClE,kDAAkD,yEAA4B;AAC9E,wBAAwB,kFAAqC;AAC7D;AACA;AACA;AACA;AACA;AACA,oBAAoB,yEAA4B,eAAe,qEAAwB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;ACnYA;AACA;AACA;AACA;AAC2D;AACI;AACiB;AACrB;AAClB;AAClC;AACP;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA,sCAAsC,0EAAoB;AAC1D,sCAAsC,iDAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA,wCAAwC,iDAAK;AAC7C,8BAA8B,uEAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4EAA+B;AACjF;AACA;AACA;AACA;AACA,gDAAgD,oFAAsC;AACtF,8CAA8C,6EAA+B;AAC7E,uCAAuC,oFAAsC;AAC7E,8CAA8C,iDAAK;AACnD;AACA;AACA,8CAA8C,iDAAK;AACnD;AACA;AACA;AACA,yCAAyC,yEAAmB;AAC5D,0CAA0C,iDAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAc;AAC5C;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iDAAK;AACnD;AACA,0CAA0C,uEAAc;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAc;AAChD;AACA;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;ACjLA;AACA;AACA;AACA;AACuD;AACY;AACR;AACA;AACZ;AACN;AAClC;AACP;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,sCAAsC,yDAAW;AACjD;AACA,sCAAsC,wEAA0B,CAAC,kFAA4B;AAC7F;AACA;AACA,sCAAsC,uEAAyB,CAAC,kFAA4B;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,sCAAsC,yDAAW;AACjD;AACA,sCAAsC,wEAA0B,CAAC,gFAA0B;AAC3F;AACA;AACA,sCAAsC,uEAAyB,CAAC,gFAA0B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAyB,CAAC,0FAAoC;AAC7E;AACA;AACA,eAAe,wEAA0B,CAAC,0FAAoC;AAC9E;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAyB,CAAC,oFAA8B;AACvE;AACA;AACA,eAAe,wEAA0B,CAAC,oFAA8B;AACxE;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wEAA0B,KAAK,+DAAiB,KAAK,iDAAK,iDAAiD,uDAAQ;AAC3I;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,wBAAwB,wEAA0B,CAAC,4FAAsC;AACzF;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,wBAAwB,wEAA0B,CAAC,sFAAgC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wEAA0B,KAAK,+DAAiB,KAAK,iDAAK,qBAAqB,uDAAQ;AACtG;AACA;AACA;AACA;AACA,sEAAsE,uDAAQ;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wEAA0B,KAAK,+DAAiB,KAAK,iDAAK,qEAAqE,uDAAQ;AAC1J;AACA;AACA;AACA;AACA,mBAAmB,uEAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAyB;AAC5C;AACA;AACA;AACA,mBAAmB,wEAA0B;AAC7C;AACA;AACA;AACA;AACA,eAAe,wEAA0B,CAAC,yEAAmB;AAC7D;AACA;AACA;AACA,uBAAuB,yDAAW;AAClC;AACA;AACA;AACA,eAAe,uEAAyB,KAAK,+DAAiB,KAAK,iDAAK,iDAAiD,uDAAQ;AACjI;AACA;AACA;AACA;AACA,sEAAsE,uDAAQ;AAC9E;AACA,eAAe,uEAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yDAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA,+BAA+B,6EAAuB;AACtD;AACA;AACA;AACA;AACA;AACA,mCAAmC,6EAAuB;AAC1D;AACA;AACA,wBAAwB,uEAAyB;AACjD;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA,wBAAwB,uEAAyB,CAAC,6EAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA,+BAA+B,8EAAwB;AACvD;AACA;AACA;AACA;AACA;AACA,mCAAmC,8EAAwB;AAC3D;AACA;AACA,wBAAwB,uEAAyB;AACjD;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA,wBAAwB,uEAAyB,CAAC,8EAAwB;AAC1E;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,wBAAwB,uEAAyB,CAAC,6EAAuB;AACzE;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,wBAAwB,wEAA0B,CAAC,6EAAuB;AAC1E;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,wBAAwB,uEAAyB,CAAC,2EAAqB;AACvE;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA,wBAAwB,wEAA0B,CAAC,2EAAqB;AACxE;AACA;AACA;AACA;AACA,eAAe,uEAAyB;AACxC;AACA;AACA,eAAe,wEAA0B;AACzC;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,aAAa,2DAAc;AAC3B;AACA;AACA;AACA,aAAa,2DAAc;AAC3B;AACA;AACA,aAAa,8DAAiB,2BAA2B,4DAAe;AACxE;AACA;AACA,aAAa,8DAAiB,uBAAuB,2DAAc;AACnE;AACA;AACA,aAAa,8DAAiB,0BAA0B,2DAAc;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;;;;;;;;;;;;;;;;;;;;;ACpoBjC;AACA;AACA;AACA;AACqE;AACtB;AACN;AACkB;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,8BAA8B,mEAAsB;AACpD;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAsB;AACpD;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mFAAqC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oFAAsC;AAC3D;AACA;AACA;AACA;AACA;AACA,4DAA4D,mFAAqC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+DAAiB,KAAK,iDAAK,iJAAiJ,uDAAQ;AACvM;AACA;AACA,qCAAqC,mFAAqC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oFAAsC;AAC3D;AACA;AACA;AACA;AACA;AACA,4DAA4D,mFAAqC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+DAAiB,KAAK,iDAAK,iJAAiJ,uDAAQ;AACvM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5LA;AACA;AACA;AACA;AACmE;AACR;AACsH;AACtH;AACwB;AACH;AACT;AAC9B;AACQ;AACgB;AACyB;AACnF;AACP;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD,8BAA8B,mEAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD,8BAA8B,mEAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,+EAAwB;AACvC;AACA;AACA;AACA,eAAe,iFAA0B;AACzC;AACA;AACA;AACA,gDAAgD,SAAS;AACzD,8BAA8B,uEAAc;AAC5C;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAK;AAC7C,kCAAkC,6FAAoC;AACtE;AACA;AACA,kCAAkC,uEAAc;AAChD;AACA;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,0EAA8B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2HAAqD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qBAAqB;AACtE;AACA,yCAAyC,2EAA8B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kHAA4C,+BAA+B,iDAAK;AACxH;AACA;AACA;AACA;AACA;AACA,2BAA2B,gFAAmB;AAC9C;AACA;AACA,2BAA2B,iFAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oFAAsC;AAChF;AACA;AACA,2BAA2B,eAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAc;AACjC;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAkB;AAC3C,0CAA0C,uEAAc,KAAK,iDAAK;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mEAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAc;AAC5C;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,8FAAqC;AAC5D;AACA;AACA,uBAAuB,uEAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yEAA4B;AAC1D;AACA;AACA,kBAAkB,kHAA4C;AAC9D;AACA,mCAAmC,8EAAiB;AACpD;AACA;AACA;AACA,wCAAwC,gFAAmB;AAC3D;AACA;AACA;AACA,wCAAwC,uFAA0B;AAClE;AACA;AACA;AACA;AACA;AACA,+BAA+B,8FAAqC;AACpE;AACA;AACA,+BAA+B,4FAAmC;AAClE;AACA;AACA,wCAAwC,iFAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA,4BAA4B,yEAA4B;AACxD;AACA,uBAAuB,qHAA+C;AACtE;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA,uCAAuC,oFAAsC;AAC7E;AACA;AACA;AACA;AACA,gCAAgC,iDAAK;AACrC;AACA;AACA,2CAA2C,4EAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8FAAqC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4FAAmC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4HAAsD;AACzF,kCAAkC,0HAAoD;AACtF;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,iDAAK;AAC5D;AACA;AACA,uDAAuD,iDAAK;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yDAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,UAAU;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,sCAAsC,iDAAK;AAC3C,8BAA8B,uEAAc;AAC5C;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,iDAAK;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yDAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oFAAuB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uHAAiD;AACvF;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,yDAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yDAAO;AAC/C,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA,4DAA4D,uCAAuC;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yDAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,8BAA8B,2FAAwB;AACtD;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uHAAiD;AAC9E;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,yEAA4B;AACvE;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAK;AAC7C,oCAAoC,uEAAc;AAClD,2BAA2B,iEAAmB;AAC9C;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4EAA4B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iDAAK;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uEAAc,KAAK,iDAAK;AAC7E,uBAAuB,iEAAmB;AAC1C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA,uBAAuB,iEAAmB;AAC1C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iEAAmB;AAC9C;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD,8BAA8B,uEAAc;AAC5C;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gDAAgD,SAAS;AACzD,8BAA8B,uEAAc;AAC5C;AACA,mBAAmB,iEAAmB;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,kCAAkC,8FAAqC,KAAK,iDAAK;AACjF;AACA;AACA;AACA;AACA,oEAAoE,iDAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,gEAAgE,iDAAK;AACrE;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACO,yCAAyC,4FAAmC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAK;AAC5C,kCAAkC,iDAAK;AACvC;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC7yBA;AACA;AACA;AACA;AAC2D;AACL;AACiB;AACxB;AACN;AAClC;AACP;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,uDAAQ;AAC3G;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,mGAAmG,uDAAQ;AAC3G;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA,yCAAyC,uDAAQ;AACjD;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA,2BAA2B,uDAAQ;AACnC;AACA,gBAAgB,uEAA0B,UAAU,uEAA0B;AAC9E;AACA,2BAA2B,uDAAQ;AACnC;AACA,gBAAgB,uEAA0B,UAAU,uEAA0B;AAC9E;AACA;AACA;AACA,wBAAwB,uEAA0B;AAClD,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,uDAAQ;AACnG;AACA;AACA;AACA;AACA,mGAAmG,uDAAQ;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA,4DAA4D,uDAAQ;AACpE;AACA;AACA,8CAA8C,oBAAoB;AAClE;AACA;AACA;AACA;AACA,2BAA2B,uDAAQ;AACnC;AACA,gBAAgB,uEAA0B,UAAU,uEAA0B;AAC9E;AACA,2BAA2B,uDAAQ;AACnC;AACA,gBAAgB,uEAA0B,UAAU,uEAA0B;AAC9E;AACA;AACA;AACA,wBAAwB,uEAA0B;AAClD,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA,kCAAkC,2EAA8B;AAChE;AACA,uBAAuB,iDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,uDAAQ;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,uDAAQ;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,uDAAQ;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA,0BAA0B,iDAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oFAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oFAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+DAAiB,KAAK,iDAAK,2EAA2E,uDAAQ;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wEAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0EAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACljBA;AACA;AACA;AACA;AACmE;AACpB;AACN;AACQ;AAC1C;AACP;AACA;AACA;AACA,oCAAoC,+DAAiB,KAAK,iDAAK,qBAAqB,uDAAQ,gBAAgB,+DAAiB,KAAK,iDAAK,qBAAqB,uDAAQ;AACpK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAW;AAC9B;AACA;AACA;AACA;AACA,uBAAuB,yDAAS;AAChC;AACA,mBAAmB,yDAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAAiB;AAC9C;AACA;AACA;AACA,4GAA4G,uDAAQ;AACpH,4GAA4G,uDAAQ;AACpH,2CAA2C,iDAAK;AAChD;AACA,4BAA4B,+DAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvFA;AACA;AACA;AACA;AACqE;AAC9D,sCAAsC,6EAAmB;AAChE;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;ACxBP;AACA;AACA;AACA;AACuD;AACvD;AACA;AACA;AACO;AACP;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACmC;AAC5B;AACP;AACA;AACA,uBAAuB,4CAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChCA;AACA;AACA;AACA;AAC4C;AACrC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kEAA2B;AAC1C;AACA;AACA;AACA,eAAe,iEAA0B;AACzC;AACA;AACA;AACA,eAAe,kEAA2B;AAC1C;AACA;AACA;AACA,eAAe,6EAAsC;AACrD;AACA;AACA;AACA,eAAe,+EAAwC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,SAAS;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;AACyC;AACzC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACvWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACyC;AACN;AACnC;AACA;AACA;AACA;AACO,wBAAwB,4CAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC5HA;AACA;AACA;AACA;AAC2D;AACE;AACJ;AACzD;AACO;AACP;AACA,+CAA+C,oEAAuB;AACtE;AACA;AACA;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B,yBAAyB,gEAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oEAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5HA;AACA;AACA;AACA;AACO;AACP;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AAC4D;AACD;AAC3D;AACA;AACA,yBAAyB,8DAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,4EAA+B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACpYA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;ACZA;AACA;AACA;AACA;AAC+E;AACxE;AACP;AACA,8CAA8C,oFAAa;AAC3D;AACA;AACA;AACA;AACA,4CAA4C,oFAAa;AACzD;AACA;AACA;AACA,kCAAkC,oFAAa;AAC/C;AACA;AACA;AACA,2CAA2C,oFAAa;AACxD,qCAAqC,oFAAa;AAClD,4CAA4C,oFAAa;AACzD;AACA,iDAAiD,oFAAa;AAC9D;AACA,kDAAkD,oFAAa;AAC/D;AACA,0CAA0C,oFAAa;AACvD;AACA,mDAAmD,oFAAa;AAChE,oCAAoC,oFAAa;AACjD,oCAAoC,oFAAa;AACjD,yCAAyC,oFAAa;AACtD;AACA;AACA;AACA;AACA,8CAA8C,oFAAa;AAC3D;AACA;AACA,uCAAuC,oFAAa;AACpD,sDAAsD,oFAAa;AACnE,mDAAmD,oFAAa;AAChE,gDAAgD,oFAAa;AAC7D,kDAAkD,oFAAa;AAC/D,mDAAmD,oFAAa;AAChE,sDAAsD,oFAAa;AACnE,sDAAsD,oFAAa;AACnE,6CAA6C,oFAAa;AAC1D,yDAAyD,oFAAa;AACtE,sDAAsD,oFAAa;AACnE,iDAAiD,oFAAa;AAC9D,8CAA8C,oFAAa;AAC3D,qDAAqD,oFAAa;AAClE;AACA,0DAA0D,oFAAa;AACvE,mEAAmE,oFAAa;AAChF,kEAAkE,oFAAa;AAC/E,2EAA2E,oFAAa;AACxF,CAAC,8CAA8C;;;;;;;;;;;;;;;;;;;;;AC5D/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA,CAAC,0CAA0C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACuC;AAC4B;AAClB;AACC;AAC2B;AACpB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,8EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAoB;AAC5B;AACA;AACA;AACA,gBAAgB,iEAAoB;AACpC;AACA,gBAAgB,iEAAoB;AACpC;AACA,gBAAgB,iEAAoB;AACpC;AACA,gBAAgB,iEAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gEAAmB;AACzC;AACA,uBAAuB,WAAW;AAClC,6CAA6C,gEAAmB;AAChE;AACA,yCAAyC,gEAAmB;AAC5D;AACA,uCAAuC,gEAAmB;AAC1D;AACA,mCAAmC,gEAAmB;AACtD;AACA,0BAA0B,yDAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAoB;AAC5B;AACA,QAAQ,iEAAoB;AAC5B;AACA,QAAQ,8DAAiB;AACzB;AACA,QAAQ,8DAAiB;AACzB;AACA;AACA;AACA,QAAQ,iEAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gEAAmB;AACnD;AACA,+BAA+B,gEAAmB;AAClD;AACA,0BAA0B,6DAAgB;AAC1C;AACA,yBAAyB,6DAAgB;AACzC;AACA;AACA;AACA;AACA;AACA,4BAA4B,gEAAmB;AAC/C;AACA;AACA,uBAAuB,iBAAiB;AACxC,qBAAqB,2DAAe;AACpC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAS;AACrB;AACA;AACA;AACA;AACA;AACA,eAAe,6CAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0DAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,0CAA0C;AACjH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;;;;;;;;;;;;;;;;AClUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,uCAAuC;AACvC,yCAAyC;AACzC,8BAA8B;AAC9B,oCAAoC;AACpC,2DAA2D;AAC3D,yCAAyC;AACzC,sDAAsD;AACtD;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,uCAAuC;AACvC,uCAAuC;AACvC,qCAAqC;AACrC,iDAAiD,UAAU;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/KA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,uBAAuB;AACvB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,sBAAsB;AACtB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACn9BA;AACA;AACA;AACA;AAC+C;AACuB;AAC/D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA,mCAAmC,8EAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACkD;AACN;AACD;AACuE;AAClC;AAChF;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oDAAQ;AAClC;AACA,6BAA6B,oDAAQ;AACrC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,oBAAoB,oDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA,8CAA8C,qBAAqB,GAAG,iIAAiI;AACvM;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,qBAAqB,oDAAQ;AAC7B,2BAA2B,oDAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAQ;AACvC;AACA,2BAA2B,uDAAQ;AACnC;AACA;AACA;AACA;AACA,gCAAgC,oDAAQ;AACxC;AACA;AACA;AACA,+BAA+B,uDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAqB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oEAAe,KAAK,iDAAK;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6BAA6B,yDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iEAAY;AACnD,8CAA8C,gDAAS,KAAK,iDAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oEAAe,KAAK,iDAAK;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oDAAQ;AAClC,iBAAiB,mCAAmC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oDAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA,oBAAoB,wDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU,oDAAQ,qBAAqB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,YAAY,kEAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC,YAAY,wDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,qBAAqB,GAAG,4FAA4F;AACvM;AACA;AACA;AACA,+EAA+E,qBAAqB,GAAG,uFAAuF;AAC9L;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uBAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oDAAQ;AACjC,+BAA+B,oDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B,2BAA2B,oDAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,QAAQ,kEAAkB;AAC1B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,QAAQ,kEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C,YAAY,wDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wDAAQ;AAC5B;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,oBAAoB,kEAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B,4BAA4B,oDAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oDAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAQ;AAC5B,iBAAiB,oDAAQ;AACzB,kBAAkB,oDAAQ;AAC1B,mBAAmB,oDAAQ;AAC3B;AACA;AACA;AACA,kBAAkB,oDAAQ;AAC1B;AACA;AACA;AACA,gCAAgC,oDAAQ;AACxC;AACA;AACA;AACA;AACA,2BAA2B,uDAAO;AAClC;AACA;AACA;AACA,QAAQ,yDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oDAAQ;AAC5B,iBAAiB,oDAAQ;AACzB,kBAAkB,oDAAQ;AAC1B,mBAAmB,oDAAQ;AAC3B;AACA;AACA,0BAA0B,oDAAQ;AAClC;AACA;AACA;AACA,+BAA+B,oDAAQ;AACvC;AACA;AACA;AACA;AACA,2BAA2B,yDAAS,YAAY;AAChD;AACA;AACA;AACA,QAAQ,yDAAS;AACjB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC36CA;AACA;AACA;AACA;AAC2D;AACG;AAClB;AACM;AACC;AACN;AACC;AACvC;AACP;AACA,uCAAuC,0DAAO;AAC9C;AACA;AACA;AACA;AACA,8BAA8B,4DAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4BAA4B;AAC7E;AACA;AACA;AACA,6CAA6C,mBAAmB;AAChE,wBAAwB,oEAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4EAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2EAA8B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iEAAoB;AACzE;AACA;AACA;AACA;AACA,sCAAsC,gEAAmB;AACzD;AACA;AACA;AACA,yDAAyD,mFAAsC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,yDAAQ;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,WAAW;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA,uEAAuE,0CAA0C;AACjH;AACA;AACA;AACA,gCAAgC,4EAA+B;AAC/D;AACA;AACA;AACA,8DAA8D,yDAAyD;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,SAAS;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,4EAA+B;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iDAAK;AACzC;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA,iDAAiD,iDAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,yDAAQ;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iDAAK;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAK;AAC3C;AACA;AACA;AACA,sCAAsC,iDAAK;AAC3C;AACA;AACA;AACA;AACA,kCAAkC,iDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wEAA4B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wEAA4B;AAC5C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7bA;AACA;AACA;AACA;AAC8D;AAC4B;AAC3B;AACxD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA,mCAAmC,uEAAoB;AACvD,gCAAgC,2DAAY;AAC5C;AACA;AACA,mBAAmB,wEAAmB;AACtC;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAyB;AACzC,2BAA2B,uEAA0B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAgB;AAC3C,6BAA6B,2DAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gEAAmB;AAClD;AACA;AACA;AACA,kDAAkD,mFAAsC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uEAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxIA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzWA;AACA;AACA;AACA;AACyD;AACA;AAClD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAiB,IAAI,aAAa;AAChE;AACA;AACA,8BAA8B,iBAAiB,IAAI,aAAa;AAChE;AACA,2BAA2B,iBAAiB,IAAI,aAAa,UAAU,aAAa;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAoB;AAC5B;AACA,uBAAuB,SAAS;AAChC,YAAY,iEAAoB;AAChC;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAmB;AACvC;AACA,eAAe,qEAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAoB;AAC5B;AACA,QAAQ,iEAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gEAAmB;AAC/C;AACA,4BAA4B,gEAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7OA;AACA;AACA;AACA;AACmE;AACX;AACO;AACJ;AACT;AACiB;AACpB;AACN;AACQ;AACZ;AACM;AACgB;AAC+C;AACT;AACwG;AACpI;AACR;AACb;AAC0C;AAC1B;AACH;AACS;AACC;AACjB;AACtD;AACA,eAAe,2GAA0B;AACzC;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,4CAA4C;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wBAAwB,iEAAU;AACzC;AACA;AACA;AACA;AACA,iDAAiD,0DAAO;AACxD;AACA;AACA;AACA,uDAAuD,0DAAO;AAC9D;AACA,oEAAoE,0DAAO;AAC3E;AACA,qDAAqD,0DAAO;AAC5D;AACA,sDAAsD,0DAAO;AAC7D;AACA,uDAAuD,0DAAO;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0DAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,iDAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,yEAAwB;AACjF,yCAAyC,+GAAyC;AAClF;AACA,8DAA8D;AAC9D;AACA,SAAS;AACT,2BAA2B,qEAAwB;AACnD;AACA;AACA;AACA,mCAAmC,qDAAS;AAC5C;AACA;AACA;AACA,2BAA2B,yDAAW;AACtC,4BAA4B,0DAAY;AACxC,iCAAiC,uEAAqB;AACtD;AACA;AACA;AACA,uCAAuC,yEAAgB;AACvD,uBAAuB,+DAA8B;AACrD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,mBAAmB,+DAA8B;AACjD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iFAA+B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6EAA2B;AACrE,gBAAgB,+DAAa;AAC7B,2EAA2E,iDAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6EAA2B;AACrE,gBAAgB,oEAAkB;AAClC,2EAA2E,iDAAK;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAA8B;AACxD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAAgB;AACjD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,aAAa;AACxC;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA,sCAAsC,4EAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oFAAuC;AAChF;AACA,+DAA+D,6BAA6B;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iDAAK;AACrC,kCAAkC,yDAAS;AAC3C;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oEAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oEAAuB;AACvC,2BAA2B,uDAAQ;AACnC;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oEAAuB;AACpE,2CAA2C,oEAAuB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAK,yBAAyB,yDAAS;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oEAAuB;AACpE,2CAA2C,oEAAuB;AAClE;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA,uBAAuB,iDAAK;AAC5B;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,0DAAc;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAqB;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qCAAqC,8DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6EAA2B,WAAW,8DAAY;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8DAAY;AACjD;AACA;AACA;AACA;AACA;AACA,kCAAkC,iDAAK;AACvC;AACA,YAAY,+EAA6B,WAAW,8DAAY;AAChE;AACA;AACA;AACA,8BAA8B,iDAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+EAA6B,WAAW,8DAAY;AACnE;AACA;AACA;AACA;AACA,eAAe,mFAAiC,WAAW,8DAAY;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kEAAiC;AACrE;AACA;AACA,mBAAmB,kEAAiC;AACpD;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,+DAA+D,SAAS;AACxE;AACA;AACA,gEAAgE,UAAU;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,SAAS;AACpF;AACA;AACA;AACA,gEAAgE,UAAU;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iDAAK;AACnD,gDAAgD,kEAAiC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA,oEAAoE,0DAAQ;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA,+CAA+C,qEAAmB;AAClE;AACA;AACA;AACA;AACA,+CAA+C,sEAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;AACA;AACA,+CAA+C,uEAAqB;AACpE;AACA;AACA;AACA;AACA,8CAA8C,6EAA2B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,iCAAiC;AAClG,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,iEAAiE;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,iDAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kBAAkB,EAAE,qBAAqB;AACrF,+BAA+B,2DAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA,yDAAyD,UAAU;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2EAA2E;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uDAAuD;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yFAAyF;AAC/G,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,mDAAmD,uDAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAa,kBAAkB,qHAA+C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8DAAa,kBAAkB,qHAA+C;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sDAAsD;AACtF;AACA;AACA;AACA;AACA,oEAAoE,8DAA8D;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sHAAgD;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sHAAgD;AACpF;AACA,oCAAoC,0EAAqB;AACzD;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA,oBAAoB,0EAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sGAAoC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sHAAgD;AACrF;AACA,qCAAqC,0EAAqB;AAC1D;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA,wBAAwB,0EAAqB;AAC7C;AACA;AACA;AACA,qCAAqC,sGAAoC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sGAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iBAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC,+FAA+F,0EAAqB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sGAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,yBAAyB;AAC3C,+FAA+F,0EAAqB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iBAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sHAAgD;AACnF;AACA;AACA;AACA,kBAAkB,iBAAiB;AACnC;AACA;AACA;AACA;AACA,kCAAkC,sGAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sHAAgD;AACnF;AACA,0DAA0D,0EAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sGAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sGAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sHAAgD;AACnF;AACA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;AACA,kCAAkC,sGAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sHAAgD;AACnF;AACA,0DAA0D,0EAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sGAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sGAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,SAAS;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sGAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sHAAgD;AACnF;AACA;AACA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sHAAgD;AACnF;AACA;AACA,0DAA0D,0EAAqB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mHAA6C;AAC1E;AACA,0CAA0C;AAC1C;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mHAA6C;AAC1E;AACA;AACA,uCAAuC;AACvC;AACA,uCAAuC;AACvC;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uBAAuB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,uDAAuD;AACvD,uDAAuD;AACvD;AACA;AACA,aAAa,mFAA6B;AAC1C,gBAAgB,sFAAgC;AAChD,kBAAkB,wFAAkC;AACpD;AACA;AACA,wBAAwB,8FAAwC;AAChE,4BAA4B,kGAA4C;AACxE;AACA;AACA;AACA;AACA,qCAAqC,2DAAY;AACjD,qCAAqC,2DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2EAAwB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2EAAwB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2EAAwB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mFAAmF,+DAA8B;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAa;AAChC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA,qCAAqC,mDAAmD;AACxF,qCAAqC,kDAAkD;AACvF,qCAAqC,gDAAgD;AACrF,qCAAqC,+CAA+C;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACO,0CAA0C,iEAAU;AAC3D;AACA;AACA,0CAA0C,0DAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sCAAsC,iEAAU;AACvD;AACA;AACA;AACA;AACA;AACA,+CAA+C,0DAAO;AACtD;AACA,+CAA+C,0DAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC/jFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHA;AACA;AACA;AACA;AAC2D;AACwB;AACpC;AACN;AACD;AACxC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,+FAAuB;AAClF;AACA;AACO;AACP;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,mBAAmB,gDAAS;AAC5B;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA;AACA;AACA;AACA,8CAA8C,aAAa;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,wEAAwE;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gDAAS,KAAK,iDAAK;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iDAAK;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uDAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA,+CAA+C,iDAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,uDAAQ;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iDAAK;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,iDAAK;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,uDAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iDAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qEAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvcA;AACA;AACA;AACA;AACyD;AACU;AAChB;AACJ;AACI;AACE;AACU;AACD;AACM;AACP;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA,2BAA2B,+DAAkB;AAC7C,sBAAsB,+DAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oCAAoC,iEAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mDAAmD,SAAS;AAC5D;AACA,mCAAmC,yDAAQ;AAC3C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAqB;AACjC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,4BAA4B,mEAAsB;AAClD,mBAAmB,uEAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,2BAA2B;AAC3G;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mCAAmC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,+DAAwB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA,YAAY,iEAAa;AACzB;AACA,IAAI,8EAA6B;AACjC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/WA;AACA;AACA;AACA;AACyD;AACN;AACJ;AACN;AACG;AACrC;AACP;AACA;AACA;AACA;AACA,sCAAsC,SAAS;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C,4BAA4B,wCAAwC,GAAG,2BAA2B,GAAG,yBAAyB;AAC9H;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO,GAAG,yCAAyC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,4CAA4C;AAC5C;AACA,2BAA2B,+DAAkB;AAC7C;AACA,iCAAiC,oBAAoB;AACrD,0BAA0B,+CAA+C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2DAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2DAAU;AACjC;AACA;AACA;AACA;AACA,mBAAmB,2DAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kEAA2B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA,2BAA2B,+DAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kFAAiC;AAChE;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0BAA0B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kFAAiC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,0BAA0B;AACvE;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1/BA;AACA;AACA;AACA;AACO,gDAAgD,EAAE,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI,MAAM;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AAC+C;AACP;AACqC;AACF;AACL;AACtE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sBAAsB;AACrD;AACA,0CAA0C;AAC1C;AACA;AACA,yCAAyC;AACzC;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAgB;AAC9C;AACA;AACA,sBAAsB,4EAAsB;AAC5C;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA,WAAW,0DAAS;AACpB,WAAW,0DAAc;AACzB,YAAY,0DAAc,gCAAgC,0DAAc;AACxE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sEAAgB;AACpD;AACA;AACA,sBAAsB,4EAAsB;AAC5C;AACA,kBAAkB,4BAA4B,GAAG,mBAAmB;AACpE;AACA;AACA,CAAC,kCAAkC;AAC5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sCAAsC,sFAAuB;AACpE;AACA;AACA;AACO,mCAAmC,sFAAuB;AACjE;AACA;AACA;AACO,uCAAuC,sFAAuB;AACrE;AACA;AACA;AACO,0CAA0C,sFAAuB;AACxE;AACA;AACA;AACO,kCAAkC,sFAAuB;AAChE;AACA;AACA;AACO,2CAA2C,sFAAuB;AACzE;AACA;AACA;AACO,8CAA8C,sFAAuB;AAC5E;AACA;AACA;AACO,yCAAyC,sFAAuB;AACvE;AACA;AACA;AACO,uCAAuC,sFAAuB;AACrE;AACA;AACA;AACO,wCAAwC,sFAAuB;AACtE;AACA;AACA;AACO,2CAA2C,sFAAuB;AACzE;AACA;AACA;AACO,2CAA2C,sFAAuB;AACzE;AACA;AACA;AACO,qCAAqC,sFAAuB;AACnE;AACA;AACA;AACO,uCAAuC,sFAAuB;AACrE;AACA;AACA;AACO,mDAAmD,sFAAuB;AACjF;AACA;AACA;AACO,wDAAwD,sFAAuB;AACtF;AACA;AACA;AACO,iDAAiD,sFAAuB;AAC/E;AACA;AACA;AACO,iCAAiC,sFAAuB;AAC/D;AACA;AACA;AACO,kCAAkC,sFAAuB;AAChE;AACA;AACA;AACO,mCAAmC,sFAAuB;AACjE;AACA;AACA;AACO,yCAAyC,sFAAuB;AACvE;AACA;AACA;AACO,mDAAmD,sFAAuB;AACjF;AACA;AACA;AACO,wDAAwD,sFAAuB;AACtF;AACA;AACA;AACO,iCAAiC,oFAAwB;;;;;;;;;;;;;;;;ACzYhE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzDA;AACA;AACA;AACA;AACwD;AACS;AACN;AAC6B;AAC9B;AACH;AACY;AACe;AACnB;AACR;AACW;AAC3D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH,gEAAc;AAClI;AACA,iCAAiC,4EAAoB;AACrD,wDAAwD,qEAAmB;AAC3E;AACA;AACA,0CAA0C,wEAAkB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4EAAgB;AACjD;AACA;AACA;AACA;AACA;AACA,0CAA0C,2FAA+B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA,gCAAgC,0DAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oEAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sHAA8D;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oEAAsB;AACvD,eAAe,gGAAwC;AACvD;AACA;AACA;AACA;AACA;AACA,mBAAmB,+EAAyB;AAC5C;AACA,eAAe,+EAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qBAAqB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yEAA4B;AACzD,wBAAwB,0EAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,6BAA6B,yEAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,yCAAyC,yEAA4B;AACrE,oCAAoC,0EAAmB;AACvD;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yEAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yEAA4B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yEAA4B;AAClE;AACA;AACA;AACA,sDAAsD,0EAAmB;AACzE,sDAAsD,iFAA0B;AAChF;AACA;AACA,0DAA0D,2EAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yEAA4B;AACvD;AACA;AACA;AACA,sCAAsC,0EAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0EAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oEAAsB;AACvD;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yEAA4B;AAC9D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yEAA4B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0EAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0EAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0EAAmB;AACrD,kCAAkC,iFAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yEAA4B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oEAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;;;ACpnBP;AACA;AACA;AACA;AACwD;AACS;AACnB;AACuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,gCAAgC,0DAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAK,oEAAoE,iFAAsB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/IA;AACA;AACA;AACA;AACyE;AAChB;AAClD;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kDAAkD;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,aAAa,OAAO,+DAAS,gBAAgB;AAC/G;AACA,6DAA6D,2DAAgB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5FA;AACA;AACA;AACA;AACqE;AAC9D;AACP;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6EAAmB;AAC7C;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA,+CAA+C;AAC/C,uBAAuB,uCAAuC;AAC9D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACvQA;AACA;AACA;AACA;AACuC;AACiB;AACP;AACkC;AACV;AACzE;AACO;AACP;AACA;AACO;AACP;AACA,yCAAyC,0DAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,SAAS;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,+EAAY;AACL;AACA,0CAA0C,yDAAkB;AACnE;AACA;AACA;AACA,cAAc,6CAAY;AAC1B;AACA,CAAC;AACD,qGAAsC;AACtC;AACA;AACA;AACA,WAAW,KAAK;AAChB;AACA;AACA,SAAS,SAAS,YAAY,GAAG;AACjC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AACnC,SAAS,wBAAwB;AACjC;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;ACnED;AACA;AACA;AACA;AACkF;AACjC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA,qCAAqC,yDAAkB;AACvD;AACP,eAAe,8DAAkB,MAAM,iDAAK;AAC5C;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAmB;AAClC;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACiF;AAC1E;AACP;AACA;AACA,2EAA2E,yFAAkC;AAC7G;AACA;AACA,kEAAkE,yFAAkC,EAAE,0BAA0B;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,yFAAkC,EAAE,uDAAuD;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,KAAK;;;;;;;;;;;;;;;;;;AC3CxE;AACA;AACA;AACA;AACuD;AACD;AAC/C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAqB;AACjC;AACA;AACA;AACA;AACA,kBAAkB,sFAAoC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,sBAAsB;AACtB,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4BAA4B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACsE;AACR;AACH;AACpD;AACP;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA,gCAAgC,eAAe,iFAA0B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA,gCAAgC,eAAe,0EAAmB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2EAA8B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2EAA8B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACrGA;AACA;AACA;AACA;AAC8D;AACD;AACjB;AACrC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,2EAA8B;AACxC,yCAAyC,IAAI;AAC7C;AACA;AACA,uBAAuB,gDAAgD;AACvE,WAAW,iEAAoB;AAC/B;AACA;AACA;AACA,YAAY,kEAA4B;AACxC;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA,mBAAmB,0EAAoC;AACvD;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA,8HAA8H;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC7QA;AACA;AACA;AACA;AACyD;AAClD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA,mDAAmD,UAAU;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA,qCAAqC,EAAE,cAAc,EAAE;AAChD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gEAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,0CAA0C,SAAS;AACnD;AACA,0BAA0B,EAAE,EAAE,UAAU,OAAO,EAAE;AACjD;AACA,uBAAuB,oBAAoB,EAAE;AAC7C,uBAAuB,mBAAmB,EAAE;AAC5C,uBAAuB,4BAA4B,gCAAgC,EAAE;AACrF;AACA;;;;;;;;;;;;;;;;;;;;AClRA;AACA;AACA;AACA;AAC2D;AACR;AACO;AAC1D;AACA,2BAA2B,oDAAU;AACrC,+CAA+C,2DAAa;AAC5D;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA,oEAAoE,yBAAyB;AAC7F;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAoD;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA,yCAAyC;AACzC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA,kCAAkC,oDAAoD,IAAI,YAAY;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA,QAAQ,8EAA6B;AACrC,6BAA6B,2DAAU;AACvC;AACA;AACA,yDAAyD,UAAU;AACnE;AACA;AACA,sCAAsC,KAAK,IAAI,2DAAc,wCAAwC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChGA;AACA;AACA;AACA;AACwD;AACS;AAC1D;AACP;AACA;AACA;AACA,gCAAgC,0DAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9EA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2D;AACI;AACJ;AACT;AACH;AACN;AACc;AAC0B;AACC;AAC1B;AACyB;AACX;AACf;AACvD;AACA;AACA;AACA,0BAA0B,sEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAa,kBAAkB,+EAAyB;AACjF;AACA,uBAAuB,iDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAyD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,+DAA+D;AAC7G,4CAA4C,2DAA2D;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mEAAoB;AACjC;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAY;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAS;AAC7B;AACA,2BAA2B,0EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA,oBAAoB,yDAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA,gCAAgC,qEAAU;AAC1C,kDAAkD,sDAAU;AAC5D;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iCAAiC,qEAAqE,EAAE;AACrI;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oEAAY;AAC/B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAA+D;AACpH;AACA;AACA;AACA;AACA,yBAAyB,oHAA6C;AACtE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qEAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qEAAuB;AAC1D;AACA;AACA;AACA,mDAAmD,gCAAgC;AACnF;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,IAAI,oEAAc,GAAG,mFAAmB;AACxC;;;;;;;;;;;;;;;;;;ACzeA;AACA;AACA;AACA;AAC0F;AACnF;AACA,6BAA6B,gGAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNnD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC8D;AACyC;AACG;AACtB;AAC3C;AACJ;AACqD;AAC7B;AACX;AACwC;AAC5B;AACG;AACC;AACJ;AACJ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,iEAAU;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oEAAmC;AAC1D;AACA;AACA,4CAA4C,YAAY,EAAE;AAC1D;AACA;AACA,qCAAqC;AACrC,iBAAiB;AACjB;AACA,SAAS;AACT,uBAAuB,0EAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAe;AAC3B;AACA,8CAA8C;AAC9C;AACA,uBAAuB,wEAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAa;AAC5B,eAAe,mGAAiC;AAChD,eAAe,qEAAW;AAC1B;AACmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,oCAAoC,+DAAmB,iBAAiB,iDAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,4BAA4B,iEAAU;AACtC;AACA;AACA;AACA;AACA;AACA,oDAAoD,gEAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iEAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gEAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8BAA8B,sEAAe;AAC7C;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,sBAAsB,uEAAY;AAClC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,iEAAU;AAClD;AACA;AACA;AACA;AACA;AACA,kCAAkC,sFAAoB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mFAAkB;AACpE;AACA;AACA,gBAAgB,4FAAuB;AACvC,+DAA+D,sEAAkB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4FAAuB;AACnC,2DAA2D,sEAAkB;AAC7E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAQ;AAC1C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oHAA+C;AAC/E;AACA,+BAA+B,qEAAW;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oHAA+C;AAC/E;AACA,+BAA+B,qEAAW;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oHAA+C;AAC/E;AACA,+BAA+B,qEAAW;AAC1C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACxZA;AACA;AACA;AACA;AAC0D;AACuB;AACnB;AACK;AAC5D;AACP;AACA,iCAAiC,iFAAoB,sCAAsC,4EAAe;AAC1G;AACA;AACA;AACA,gCAAgC,iEAAY;AAC5C,6BAA6B,4EAAqB;AAClD,gCAAgC,8EAAuB;AACvD;AACA;AACA,6BAA6B,8EAAmB;AAChD;AACA;AACA,yBAAyB,4EAAe;AACxC,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA,gCAAgC,KAAK;AACrC;AACA,+BAA+B,wBAAwB;AACvD,oCAAoC,+BAA+B,iBAAiB;AACpF;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACO;AACP;AACA,oBAAoB;AACpB;AACA;AACA;AACA,4BAA4B,iEAAY;AACxC,yBAAyB,4EAAqB;AAC9C,kCAAkC,6EAAsB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACO;AACP,sCAAsC;AACtC;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EA;AACA;AACA;AACA;AACmE;AACX;AACO;AACV;AACM;AACV;AACS;AACoB;AACe;AACpB;AACzE;AACO,gCAAgC,iEAAU;AACjD;AACA;AACA,+CAA+C,0DAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uFAAkC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+EAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT,QAAQ,8EAAW,CAAC,6GAAwB,8BAA8B,+EAA0B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAqB,EAAE,sDAAsD;AAC7F;AACA;AACA;AACA;AACA,gBAAgB,kEAAqB,EAAE,oDAAoD;AAC3F;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAqB,EAAE,8DAA8D;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6EAAgC;AACrD,oBAAoB,kEAAqB,EAAE,2DAA2D;AACtG;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,wBAAwB,4DAAY;AACpC,mBAAmB,wEAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gEAAmB;AAC3C;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC1OA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6F;AAChB;AACZ;AACiB;AAC2B;AAC3D;AACT;AACiB;AACF;AACuC;AAC/F;AACA;AACA;AACA,gCAAgC,iEAAU;AAC1C;AACA;AACA;AACA;AACA,uBAAuB,uEAAY;AACnC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,iEAAU;AAChF;AACA;AACA;AACA,qDAAqD,0DAAO;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qEAAgB;AACjD,oCAAoC,qEAAgB;AACpD,oCAAoC,mEAAc;AAClD;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA;AACA,kDAAkD,mDAAmD;AACrG;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kBAAkB,sDAAU;AAC5B,mCAAmC,oFAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iDAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAK;AACnC;AACA;AACA;AACA,8BAA8B,iDAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iDAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oFAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uFAAsB;AACvC;AACA,wBAAwB,wFAAgB,CAAC,8EAAoB;AAC7D;AACA;AACA,2BAA2B,wFAAgB,CAAC,mFAAc;AAC1D,8BAA8B,6DAAsB;AACpD;AACA;AACA,iBAAiB,oFAAmB;AACpC;AACA,wBAAwB,wFAAgB,CAAC,2EAAiB;AAC1D;AACA;AACA,iBAAiB,qFAAoB;AACrC;AACA;AACA,wBAAwB,wFAAgB,CAAC,4EAAkB;AAC3D;AACA;AACA,2BAA2B,wFAAgB,CAAC,iFAAY;AACxD,8BAA8B,6DAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8DAAuB;AACjD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAa;AAC5B,eAAe,+EAAc;AAC7B;AACoC;;;;;;;;;;;;;;;;;ACjOpC;AACA;AACA;AACA;AAC0F;AACnF,kCAAkC,gGAAe;;;;;;;;;;;;;;;;;ACLxD;AACA;AACA;AACA;AAC0F;AACnF,qBAAqB,gGAAe;;;;;;;;;;;;;;;;;;;;;;ACL3C;AACA;AACA;AACA;AACwD;AACO;AACH;AACI;AACL;AACK;AAChE,gCAAgC,iEAAU;AAC1C;AACA;AACA,+CAA+C,0DAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,oCAAoC,0DAAO;AAC3C;AACA,4CAA4C,0DAAO;AACnD;AACA;AACA,6BAA6B,oEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sEAAc;AAC7B;AACA;AACA;AACA,eAAe,sEAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wFAAwF,wEAAwB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,wEAAwB;AACnG,kDAAkD,oEAAgB;AAClE;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACxFA;AACA;AACA;AACA;AAC0F;AACnF,sBAAsB,gGAAe;AACrC;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACwD;AACiC;AAC5B;AACJ;AACU;AACjB;AACmB;AACK;AACa;AACS;AAC/B;AACc;AACA;AACb;AACe;AACvB;AACC;AAC4C;AACvG;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sEAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAgB,IAAI,iEAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iEAAU;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,0DAAO;AACvD;AACA,kDAAkD,0DAAO;AACzD;AACA,sDAAsD,0DAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mFAA6B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wFAAkC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,8FAAwC;AACzE;AACA;AACA;AACA,gCAAgC,6FAAuC;AACvE;AACA;AACA;AACA,qCAAqC,kGAA4C;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,+BAA+B;AACrG;AACA;AACA;AACA,eAAe,wDAAW,sBAAsB,wDAAW;AAC3D;AACA;AACA;AACA;AACA,0EAA0E,yCAAyC;AACnH;AACA,kEAAkE,cAAc;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wEAAkB;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,wEAAkB;AAC1C;AACA;AACA;AACA,yFAAyF,wEAAkB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kFAA6B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mBAAmB;AAC1D;AACA;AACA;AACA,eAAe,kGAAqB;AACpC,eAAe,gGAA8B;AAC7C,eAAe,kFAAa;AAC5B,eAAe,qEAAW;AAC1B,eAAe,oFAAgB;AAC/B;AAC4B;AACrB;AACA;AACP;AACA,2FAA2F,kFAAkF;AAC7K;AACA;AACA;AACA;AACA;AACA,sCAAsC,iEAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8BAA8B,iEAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2CAA2C,6FAA6B;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iEAAU;AAC9C;AACA;AACA;AACA;AACA;AACA,+DAA+D,oEAAgB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,kEAAO;AACnB;AACA,mCAAmC,iFAA0C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yFAAkD;AACzE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,kFAAuB;AACzF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gBAAgB,qEAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sFAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qFAA8C;AACrE;AACA;AACA;;;;;;;;;;;;;;;;;AC5mBA;AACA;AACA;AACA;AAC0F;AACnF,0BAA0B,gGAAe;;;;;;;;;;;;;;;;;;;;ACLhD;AACA;AACA;AACA;AAC4C;AACmB;AACiB;AACzE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAc;AAC9D,iFAAiF,eAAe,KAAK,iBAAiB,eAAe,kEAA2B,WAAW,cAAc,iEAA0B,uBAAuB;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uEAAuE;AAClH;AACA;AACA;AACA;AACA;AACA,uEAAuE,uEAAc;AACrF,2GAA2G,6BAA6B,eAAe,4CAA4C;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uEAAc;AAClE,uGAAuG,eAAe,eAAe,wCAAwC;AAC7K;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAc;AAC9D,wEAAwE,eAAe,IAAI,UAAU,MAAM,iBAAiB,IAAI,yBAAyB,gBAAgB,kEAA2B,WAAW,cAAc,iEAA0B,uBAAuB;AAC9Q;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAgB,eAAe,sEAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrN0F;AACnF,0CAA0C,gGAAe;AACzD,uCAAuC,gGAAe;;;;;;;;;;;;;;;;;;ACF7D;AACA;AACA;AACA;AACkE;AACX;AACvD;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kCAAkC,2EAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,oEAAuB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AACA;AACA;AAC+E;AACvB;AACI;AACV;AACH;AACN;AACQ;AACR;AACe;AACjD;AACP;AACA,eAAe,kEAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,iFAAuB;AACxD,iBAAiB,0DAAO;AACxB,iBAAiB,wDAAuB;AACxC;AACA,kBAAkB,uDAAQ;AAC1B,eAAe,iDAAK;AACpB,mBAAmB,yDAAS;AAC5B,4BAA4B,mEAAkC;AAC9D,wBAAwB,+DAA8B;AACtD,mBAAmB,0DAAyB;AAC5C,aAAa,oDAAG;AAChB,eAAe,iDAAK;AACpB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AAC9D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AACpB;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AAChD;AACP;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AAChC;AACP;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE;AACvE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;;;;;;;;;;;;;;;;;;;;;;;;;ACvyBzC;AACA;AACA;AACA;AACoC;AAC7B;AACP;AACA,uCAAuC,6CAAY;AACnD,gDAAgD,6CAAY,gCAAgC,EAAE,UAAU,EAAE,GAAG,EAAE;AAC/G,2CAA2C,6CAAY,2BAA2B,EAAE,UAAU,EAAE;AAChG,+CAA+C,6CAAY,0BAA0B,EAAE,cAAc,EAAE;AACvG,0CAA0C,6CAAY,qBAAqB,EAAE;AAC7E,2CAA2C,6CAAY;AACvD,uCAAuC,6CAAY;AACnD,8CAA8C,6CAAY;AAC1D,8CAA8C,6CAAY;AAC1D,0CAA0C,6CAAY;AACtD,0CAA0C,6CAAY;AACtD,+CAA+C,6CAAY;AAC3D,oDAAoD,6CAAY;AAChE,mCAAmC,6CAAY;AAC/C,oCAAoC,6CAAY;AAChD,6CAA6C,6CAAY,2IAA2I,EAAE;AACtM,iDAAiD,6CAAY,0HAA0H,EAAE;AACzL,8CAA8C,6CAAY,4HAA4H,EAAE;AACxL,kDAAkD,6CAAY,2GAA2G,EAAE;AAC3K,sCAAsC,6CAAY;AAClD,2CAA2C,6CAAY;AACvD,oCAAoC,6CAAY;AAChD,uDAAuD,6CAAY;AACnE,CAAC,oDAAoD;AAC9C;AACP;AACA,2CAA2C,6CAAY;AACvD,CAAC,4CAA4C;AACtC;AACP;AACA,sCAAsC,6CAAY;AAClD,CAAC,kCAAkC;AAC5B;AACP;AACA,8CAA8C,6CAAY;AAC1D,CAAC,oCAAoC;AAC9B;AACP;AACA,8CAA8C,6CAAY;AAC1D,uCAAuC,6CAAY;AACnD,CAAC,0CAA0C;AACpC;AACP;AACA,8CAA8C,6CAAY;AAC1D,wDAAwD,6CAAY;AACpE,CAAC,0CAA0C;AACpC;AACP;AACA,wDAAwD,6CAAY;AACpE,uDAAuD,6CAAY;AACnE,CAAC,0DAA0D;AACpD;AACP;AACA,+CAA+C,6CAAY;AAC3D,CAAC,sDAAsD;AAChD;AACP;AACA,+CAA+C,6CAAY,kCAAkC,EAAE,WAAW,EAAE;AAC5G,CAAC,8CAA8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjE/C;AACA;AACA;AACA;AACuC;AACqB;AAC8M;AAC9K;AAC5F;AACA;AACA;AACO,4BAA4B,sFAAa,oCAAoC,oCAAoC,EAAE,6CAAY;AAC/H,kCAAkC,sFAAa,gCAAgC,mDAAmD,EAAE,6CAAY;AAChJ,6BAA6B,sFAAa,qCAAqC,kDAAkD,EAAE,6CAAY;AAC/I,mCAAmC,sFAAa,iCAAiC,8BAA8B,yFAAoB,EAAE,EAAE,6CAAY;AACnJ,8BAA8B,sFAAa,sCAAsC,OAAO,6FAAwB,SAAS,6FAAwB,YAAY,EAAE,6CAAY;AAC3K,oCAAoC,sFAAa,kCAAkC,8BAA8B,yFAAoB,EAAE,EAAE,6CAAY;AACrJ,+BAA+B,sFAAa,6BAA6B,yBAAyB,8DAAW,MAAM,8DAAW,EAAE,EAAE,6CAAY;AAC9I,+BAA+B,sFAAa,kCAAkC,6CAAY;AAC1F,0BAA0B,sFAAa,iCAAiC,yDAAyD,EAAE,6CAAY;AAC/I,2BAA2B,sFAAa,kCAAkC,2EAA2E,EAAE,6CAAY;AACnK,iCAAiC,sFAAa,wCAAwC,2EAA2E,EAAE,6CAAY;AAC/K,0BAA0B,sFAAa,iCAAiC,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AAClJ,yCAAyC,sFAAa,uCAAuC,wCAAwC,yFAAoB,EAAE,EAAE,6CAAY,yEAAyE,6CAAY;AACvP,+BAA+B,sFAAa,uCAAuC,wHAAwH,EAAE,6CAAY;AACzN,oBAAoB,sFAAa,4BAA4B,yBAAyB,kEAAe,MAAM,8DAAW,EAAE,EAAE,6CAAY;AACtI,iCAAiC,sFAAa,+BAA+B,mDAAmD,EAAE,6CAAY;AAC9I,qCAAqC,sFAAa,mCAAmC,yDAAyD,EAAE,6CAAY;AAC5J,iCAAiC,sFAAa,+BAA+B,qCAAqC,mFAAc,EAAE,EAAE,6CAAY;AAChJ,kCAAkC,sFAAa,gCAAgC,yDAAyD,EAAE,6CAAY;AACtJ,sCAAsC,sFAAa,yCAAyC,6CAAY;AACxG,qBAAqB,sFAAa,6BAA6B,OAAO,qFAAgB,SAAS,qFAAgB,MAAM,qFAAgB,EAAE,EAAE,6CAAY;AACrJ,oCAAoC,sFAAa,kCAAkC,8BAA8B,gEAAa,2BAA2B,EAAE,6CAAY;AACvK,qCAAqC,sFAAa,mCAAmC,OAAO,gEAAa,kBAAkB,gEAAa,qBAAqB,EAAE,6CAAY;AAClL,8BAA8B,wDAAK,KAAK,uDAAI;AACrC,oCAAoC,sFAAa,kDAAkD,2EAA2E,EAAE,6CAAY;AAC5L,2BAA2B,sFAAa,yCAAyC,WAAW,wDAAK,KAAK,uDAAI,gCAAgC,wDAAK,KAAK,uDAAI,6BAA6B,wDAAK,KAAK,uDAAI,mBAAmB,EAAE,6CAAY;AACpO,6BAA6B,sFAAa,2CAA2C,OAAO,4FAAuB,SAAS,4FAAuB,MAAM,wFAAmB,EAAE,EAAE,6CAAY;AAC5L,0BAA0B,sFAAa,wCAAwC,OAAO,yFAAoB,SAAS,yFAAoB,MAAM,qFAAgB,EAAE,EAAE,6CAAY;AACpL;AACA,kGAA0B;AAC1B,sCAAsC,qFAAgB;AACtD;AACA,2GAA2G,qBAAqB,YAAY,EAAE;AAC9I;AACA,sCAAsC,qFAAgB;AACtD;AACA,gFAAgF,UAAU,YAAY,EAAE;AACxG;AACA;AACA;AACA,mDAAmD,qBAAqB,QAAQ,EAAE;AAClF;AACA;AACA;AACA,2DAA2D,qBAAqB,gBAAgB,EAAE;AAClG;AACA;AACA;AACA,2DAA2D,eAAe,yCAAyC,GAAG,sBAAsB,EAAE;AAC9I;AACA;AACA;AACA,4DAA4D,qBAAqB,iBAAiB,EAAE;AACpG;AACA;AACA;AACA,4DAA4D,eAAe,yCAAyC,GAAG,uBAAuB,EAAE;AAChJ;AACA;AACA;AACA,iDAAiD,UAAU,WAAW,YAAY,EAAE;AACpF,iDAAiD,UAAU,WAAW,YAAY,EAAE;AACpF;AACA,CAAC;;;;;;;;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,+DAA+D;AAC/D,0DAA0D;AAC1D;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnKA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,UAAU,GAAG,WAAW;AAC3C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AAC2D;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oEAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,oBAAoB,oEAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC5LA;AACA;AACA;AACA;AAC2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2BAA2B,qEAAwB;AACnD;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iDAAiD,oCAAoC;AACrF,iBAAiB;AACjB;AACA;AACA,iDAAiD,KAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACluBA;AACA;AACA;AACA;AACwD;AACO;AACC;AACjB;AACM;AAC8B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAU;AACzC;AACA;AACA,0DAA0D,0DAAO;AACjE;AACA;AACA,8CAA8C,kEAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kDAAkD,2FAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,iEAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAQ;AAC3B;AACA;AACA;AACA;AACA,mBAAmB,6DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACrUA;AACA;AACA;AACA;AAC2D;AACI;AACkB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kCAAkC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yEAAwB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,SAAS;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,2BAA2B;AAC7G,gFAAgF,0BAA0B;AAC1G,mCAAmC,WAAW,EAAE,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,aAAa,2EAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,wBAAwB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,mBAAmB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8HAA8H,YAAY,sCAAsC;AAChL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4EAA+B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,2EAA8B;AAC/D;AACA;AACA;AACA;AACA;AACA,0CAA0C,iBAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yEAA4B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAsB;AAChD,4BAA4B,oFAAmC;AAC/D;AACA;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2BAA2B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,0CAA0C;AAC1C;AACA,uCAAuC,oBAAoB;AAC3D,wCAAwC;AACxC;AACA;AACA,sBAAsB;AACtB;AACA,mDAAmD,YAAY;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,6BAA6B;AACxE,4CAA4C;AAC5C;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,kDAAkD;AAClD;AACA;AACA,kDAAkD;AAClD;AACA;AACA,mDAAmD;AACnD;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yEAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtvBA;AACA;AACA;AACA;AACyC;AACzC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iDAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACwD;AAChB;AACW;AAC5C;AACP;AACA,gCAAgC,0DAAO;AACvC;AACA;AACA,QAAQ,uEAAgC;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAgC;AACzD;AACA,4BAA4B,sDAAW;AACvC;AACA;AACA;AACA,wBAAwB,sDAAW;AACnC,6BAA6B,2BAA2B;AACxD;AACA;AACA,wCAAwC,gDAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AAC2D;AACU;AACX;AAC1D,0CAA0C,6EAAmB;AAC7D;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,kIAAkI;AAClI;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA,oBAAoB,oEAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,yBAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mEAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yEAA4B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oEAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS;AACtC;AACA;AACA;AACA;AACA,YAAY,oEAAuB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mEAAa;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,yEAA4B;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4EAA+B;AACvE;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA,2BAA2B,4BAA4B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC/YA;AACA;AACA;AACA;AACwD;AACjD;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAQ;AAC7B,cAAc,8DAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtIA;AACA;AACA;AACA;AACyD;AACV;AACN;AACsB;AACX;AACY;AAClB;AACvC;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,SAAS;AACjF;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+DAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yEAAsB;AACzC;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA,0GAA0G,0EAA8B;AACxI;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wEAAwE,0EAA8B;AACtG;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA,gCAAgC,iDAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iDAAK;AAC7B;AACA;AACA;AACA;AACA;AACA,wGAAwG,0EAA8B;AACtI;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6EAA4B;AACrD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAiC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,sEAAgC;AACpG,qEAAqE,uEAAiC;AACtG,oEAAoE,sEAAgC;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,qCAAqC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,sBAAsB;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,uDAAQ;AAC5E;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uDAAQ;AACvD;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA,8DAA8D,uDAAQ;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uDAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iDAAK;AAChC;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,iDAAK;AAC7D;AACA;AACA;AACA;AACA;AACA,sDAAsD,qCAAqC;AAC3F;AACA;AACA;AACA;AACA,mCAAmC,uDAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,iDAAK;AACrF;AACA;AACA;AACA;AACA;AACA,wEAAwE,iDAAK;AAC7E;AACA;AACA;AACA,wBAAwB,0EAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,sDAAsD,qCAAqC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAgC;AACnD;AACA;AACA,mBAAmB,uEAAiC;AACpD;AACA;AACA,2BAA2B,sEAAgC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uDAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtrCA;AACA;AACA;AACA;AAC+D;AACxD,+BAA+B,iEAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACtKA;AACA;AACA;AACA;AAC2D;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAoB;AACvC;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAmB;AACtC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACnEA;AACA;AACA;AACA;AAC+C;AACN;AAC8B;AACE;AAClE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,uDAAQ;AACxG,8FAA8F,uDAAQ;AACtG,gCAAgC,iDAAK;AACrC;AACA;AACA;AACA;AACA,oBAAoB,8DAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2GAA2G,qFAA2B;AACtI;AACA;AACA;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2DAAgB;AAC3D;AACA;AACA,wDAAwD,+BAA+B;AACvF;AACA;AACA;AACA;AACA;AACA,+CAA+C,2DAAgB,KAAK,iDAAK;AACzE;AACA;AACA;AACA;AACA;AACA,+CAA+C,2DAAgB,KAAK,iDAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACwD;AACO;AACxD,uCAAuC,iEAAU;AACxD;AACA;AACA,2CAA2C,0DAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrQA;AACA;AACA;AACA;AACsD;AACS;AACJ;AACoC;AAChD;AACN;AACU;AACkB;AACM;AACvB;AACK;AACiC;AACR;AACjB;AACA;AACJ;AACZ;AACmB;AAC6F;AACjK;AACO,wBAAwB,iEAAU;AACzC;AACA;AACA;AACA;AACA;AACA,oCAAoC,mFAAwB;AAC5D;AACA,gCAAgC,6EAAmB;AACnD,wDAAwD,oEAAgB;AACxE,oEAAoE,oEAAgB;AACpF;AACA;AACA;AACA;AACA;AACA,8BAA8B,8EAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2EAAoB;AAClD;AACA;AACA,0CAA0C,0DAAM;AAChD,6CAA6C,kEAAU;AACvD;AACA;AACA;AACA;AACA,0DAA0D,uEAAiC;AAC3F,wDAAwD,6EAAkB;AAC1E,SAAS;AACT;AACA;AACA,SAAS;AACT,gCAAgC,2EAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,gGAAqC;AAC5D,0DAA0D,6EAAuC;AACjG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG,6FAA6F,uDAAQ;AACrG;AACA;AACA;AACA;AACA;AACA,sDAAsD,sEAAgC;AACtF,oDAAoD,4EAAiB;AACrE;AACA;AACA,sDAAsD,sEAAgC;AACtF;AACA;AACA;AACA;AACA;AACA,wDAAwD,uDAAQ;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iEAA2B;AACzE,8CAA8C,4EAAsC;AACpF,8CAA8C,4EAAsC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,4EAAsC;AACpF;AACA,0CAA0C,8EAAwC;AAClF;AACA;AACA;AACA;AACA,+CAA+C,4DAA4D;AAC3G;AACA,YAAY,4FAAkC;AAC9C,oCAAoC,6EAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,iEAA2B;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,4EAAsC;AAC5F,sDAAsD,4EAAsC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,4DAA4D;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mDAAmD,UAAU;AAC7D;AACA,6GAA6G,uDAAQ;AACrH,2GAA2G,uDAAQ;AACnH;AACA;AACA;AACA;AACA;AACA,0DAA0D,uEAAiC;AAC3F;AACA;AACA;AACA,SAAS;AACT;AACA,0DAA0D,+EAAyC;AACnG,oCAAoC,6EAAmB;AACvD;AACA,SAAS;AACT;AACA,oCAAoC,6EAAmB;AACvD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sDAAsD,iEAA2B;AACjF,sDAAsD,4EAAsC;AAC5F,sDAAsD,4EAAsC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6EAAmB;AACvD;AACA,SAAS;AACT;AACA;AACA,0DAA0D,4EAAsC;AAChG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iEAA2B;AAC7E,kDAAkD,4EAAsC;AACxF,kDAAkD,4EAAsC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,iDAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iDAAK;AAC/C;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,+FAA+F,uDAAQ;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,uDAAQ;AAChG,mHAAmH,iDAAK;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4EAA+B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2EAA8B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iEAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qEAAyB;AAC5C;AACA;AACA,0EAA0E,qFAA2B;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAA8B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iDAAK;AAC7B;AACA;AACA;AACA,mDAAmD,qFAA+B,6BAA6B,oBAAoB,KAAK,qFAA+B,CAAC;AACxK;AACA;AACA;AACA,4BAA4B,qCAAqC;AACjE,uCAAuC,qCAAqC;AAC5E,kCAAkC,YAAY;AAC9C,kCAAkC,qBAAqB;AACvD,gCAAgC,kBAAkB,GAAG;AACrD,kCAAkC,oBAAoB,GAAG;AACzD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6BAA6B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iFAAkB,+EAA+E,gEAAkB;AAC7I;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAgC;AACvD;AACA;AACA,kDAAkD,SAAS;AAC3D,4BAA4B,6EAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,mFAAwB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAK;AACnC,2FAA2F,4EAAsC;AACjI;AACA;AACA;AACA,8BAA8B,iDAAK;AACnC,2FAA2F,4EAAsC;AACjI;AACA;AACA,2FAA2F,4EAAsC;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,sEAAgC;AAC1F,wDAAwD,gFAAqB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACxyBA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC4B;AACuF;AACxE;AAC2B;AACX;AACC;AAC0C;AACjC;AACP;AACvD,+BAA+B,oFAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,8EAAuB;AAClD;AACA;AACA,0CAA0C,uEAAc,cAAc,iDAAQ;AAC9E;AACA;AACA,iBAAiB;AACjB;AACA;AACA,YAAY,oEAAK,CAAC,iDAAQ,8BAA8B,EAAE,EAAE,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,8EAAuB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yFAAkB;AACjC;AACA,iCAAiC,sEAAY;AAC7C;AACA;AACA;AACA,mBAAmB,iDAAQ;AAC3B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC,sEAAY;AAC9C;AACA;AACA;AACA,mBAAmB,iDAAQ;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uCAAuC,sEAAY;AACnD;AACA;AACA;AACA,mBAAmB,iDAAQ;AAC3B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oCAAoC,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,iDAAQ;AAC3B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/KpB;AACA;AACA;AACA;AAC+B;AACQ;AAC0B;AACF;AACoD;AAC1D;AACN;AACQ;AACW;AACZ;AACe;AACyC;AAClC;AAC8B;AAC3B;AACnF,4CAA4C,uFAAa,gDAAgD,mDAAmD,EAAE,6CAAY;AAC1K,kCAAkC,sEAAY;AAC9C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wCAAwC,iEAAU;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,mEAAgB;AACtE;AACA;AACA;AACA;AACA;AACA,6HAA6H;AAC7H;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gEAAS;AACpC;AACA,uBAAuB,gEAAS;AAChC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iFAA8B;AAC5D;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sEAAgB;AAC3C;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,wFAA+B;AACnG;AACA;AACA;AACA,eAAe,yFAAgB;AAC/B,kBAAkB,sEAAwB;AAC1C;AACA,CAAC;AACD,uEAAuE,wFAA+B;AACtG;AACA;AACA,CAAC;AACD,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,mGAA0B;AAC1B,kDAAkD,8FAA4B;AAC9E;AACA,0DAA0D,qBAAqB,wBAAwB,EAAE;AACzG;AACA,8CAA8C,0FAAwB;AACtE;AACA,0DAA0D,qBAAqB,oBAAoB,EAAE;AACrG;AACA,CAAC;AACD;AACA,6FAA2B,CAAC,sFAAoB;AAChD;AACA;AACA;AACA,eAAe,6CAAY,EAAE,2DAA2D;AACxF,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;;;;;;ACrTD;AACA;AACA;AACA;AACuC;AACgD;AACjB;AACb;AACzD,8BAA8B,sEAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACA,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;AChDpB;AACA;AACA;AACA;AACmD;AACQ;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wDAAK;AACzC;AACA;AACA,yCAAyC,wDAAK;AAC9C;AACA;AACA,mCAAmC,wDAAK;AACxC;AACA;AACA,yCAAyC,wDAAK;AAC9C;AACA;AACA;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7CA;AACA;AACA;AACA;AACuC;AACgD;AACd;AACtB;AACmB;AACW;AACjF,qCAAqC,sEAAY;AACjD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,0FAAgC;AACxD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oGAA4B;AAC5C,iCAAiC,mGAA2B;AAC5D,gCAAgC,mGAA2B;AAC3D,iDAAiD,sEAAmB;AACpE,kDAAkD,sEAAmB;AACrE,+BAA+B,sEAAmB;AAClD,8BAA8B,8EAAc;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;AChEpB;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AACqB;AACC;AAC6C;AACL;AACpB;AACX;AACD;AACsB;AAC3F;AACA,qBAAqB,8DAAiB;AACtC,sBAAsB,8DAAiB;AACvC;AACA,6DAA6D,4DAAc;AAC3E;AACA;AACA,uBAAuB,+DAAiB;AACxC;AACA;AACA;AACA;AACO,oDAAoD,sEAAY;AACvE;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAiB;AACrB;AACA,cAAc,gGAAgG;AAC9G;AACA,KAAK;AACL;AACA,oBAAoB,uFAAsB;AAC1C;AACA,mBAAmB,6CAAY,EAAE,mDAAmD;AACpF;AACA,SAAS;AACT,oBAAoB,qFAAoB;AACxC;AACA,mBAAmB,6CAAY;AAC/B,kBAAkB,oFAA0B;AAC5C;AACA,SAAS;AACT,oBAAoB,sFAAqB;AACzC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,CAAC;AACM,sDAAsD,sEAAY;AACzE;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAiB;AACrB;AACA,cAAc,kGAAkG;AAChH;AACA,KAAK;AACL;AACA,oBAAoB,uFAAsB;AAC1C;AACA,mBAAmB,6CAAY,EAAE,oDAAoD;AACrF;AACA,SAAS;AACT,oBAAoB,qFAAoB;AACxC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,oBAAoB,sFAAqB;AACzC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,CAAC;AACM,wDAAwD,sEAAY;AAC3E;AACA;AACA;AACA;AACA;AACA,IAAI,8DAAiB;AACrB;AACA,cAAc,gGAAgG;AAC9G,gBAAgB,gGAAgG;AAChH;AACA,KAAK;AACL;AACA,oBAAoB,uFAAsB;AAC1C;AACA,mBAAmB,6CAAY,EAAE,qDAAqD;AACtF;AACA,SAAS;AACT,oBAAoB,qFAAoB;AACxC;AACA,mBAAmB,6CAAY;AAC/B,kBAAkB,oFAA0B;AAC5C;AACA,SAAS;AACT,oBAAoB,sFAAqB;AACzC;AACA,mBAAmB,6CAAY;AAC/B;AACA,SAAS;AACT,CAAC;AACD,0DAA0D,sEAAY;AACtE;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6GAA2C;AACnD;AACA;AACA,QAAQ,6GAA2C;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sFAAkB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,sFAAkB;AACjE,8CAA8C,6FAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAc;AACzC;AACA;AACA;AACA,yCAAyC,+GAA6C;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,kFAAoB;AACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9NA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuG;AAC9B;AAC2C;AACpC;AAC9B;AACmC;AACT;AACzB;AACQ;AACZ;AACuB;AACc;AACX;AAClE;AACA;AACA;AACA;AACA;AACP,mCAAmC,iEAAU;AAC7C;AACA;AACA;AACA;AACA,0BAA0B,iEAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAe;AAC3B,gBAAgB,uEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAe;AAChC;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,2DAA2D,wEAAgC,KAAK,sDAAc;AAC9G;AACA;AACA,kCAAkC;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0FAAgC;AACpD;AACA,4BAA4B,sEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+KAA+K,yDAAa;AAC5L;AACA,oBAAoB;AACpB;AACA;AACA,gBAAgB,8EAAsB;AACtC;AACA;AACA,YAAY,iFAAyB;AACrC;AACA;AACA,KAAK;AACL,qBAAqB,oFAA4C;AACjE,6BAA6B,4EAAoC;AACjE,aAAa,8DAAM;AACnB;AACA;AACA,KAAK;AACL;AACA,2BAA2B,+DAAO;AAClC,iCAAiC,gEAAQ;AACzC;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,4EAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mEAAuB,aAAa,sDAAc;AAC/G,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,gEAAgE,WAAW,sDAAc,sCAAsC;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sDAAc;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,qFAAuB;AACvB;AACA,eAAe,mCAAmC;AAClD,kCAAkC,oDAAG;AACrC,kBAAkB,uEAAe;AACjC;AACA,mCAAmC,4EAAa;AAChD;AACA,kBAAkB,uEAAe;AACjC;AACA,0CAA0C,6EAAsB;AAChE,cAAc,8EAAuB;AACrC,cAAc,iEAAc;AAC5B;AACA;AACA;AACA,kBAAkB,uEAAe;AACjC;AACA,sFAAsF,gCAAgC,+DAA+D,sDAAc,0BAA0B,EAAE,EAAE,iFAAa,EAAE,gFAAsB;AACtQ;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxLD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACoD;AACW;AACU;AACO;AACW;AACrB;AACqE;AAC1F;AACmB;AAC7B;AACyC;AACuB;AACP;AACnB;AACgB;AACN;AACH;AACL;AACZ;AACnE;AACA,WAAW,4FAAoB,CAAC,6EAA2B,8BAA8B,+EAAsB;AAC/G;AACA;AACA;AACA,uBAAuB,QAAQ,WAAW,EAAE;AAC5C;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC,SAAS;AACT;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA;AACA;AACA,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B,gBAAgB,6CAAY;AAC5B;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA;AACA;AACA,0DAA0D,iEAAU;AACpE;AACA;AACA;AACA;AACA,yCAAyC,iEAAe;AACxD;AACA,uBAAuB,sDAAI,0BAA0B,0DAAY;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+BAA+B,EAAE;AACxE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,gCAAgC;AAC7G;AACA;AACA;AACA;AACA;AACA,QAAQ,gFAAqB;AAC7B;AACA,uBAAuB,oDAAoD,iDAAiD,EAAE;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAc;AAC7B,eAAe,0FAAkB;AACjC,eAAe,0FAAsB;AACrC,eAAe,mGAAqB;AACpC;AAC8B;AACvB;AACP;AACA,6CAA6C,kFAAgB;AAC7D,4CAA4C,mFAAe;AAC3D,8CAA8C,uFAAiB;AAC/D,iDAAiD,gGAAoB;AACrE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,sFAAoB,gBAAgB,8BAA8B;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAAY;AAClC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,6BAA6B,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,kGAAwC;AACjH;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4DAA4D,6CAAY;AACxE;AACA;AACA;AACO,gCAAgC,uEAAa;AACpD;AACA;AACA,gBAAgB,+DAAmB;AACnC,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,kGAAwC;AACjH;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA,SAAS;AACT;AACA;AACA,qBAAqB,sEAA8B;AACnD,kBAAkB,4DAAoB;AACtC;AACA,SAAS;AACT;AACA;AACA,kBAAkB,6CAAY,yFAAyF,EAAE;AACzH,kBAAkB,6CAAY,qEAAqE,EAAE;AACrG;AACA,kBAAkB,6CAAY;AAC9B,kBAAkB,6CAAY;AAC9B;AACA;AACA;AACA,SAAS;AACT;AACA;AACO,6BAA6B,sEAAY;AAChD;AACA;AACA,gBAAgB,6DAAiB;AACjC,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,kGAAwC;AACjH;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA,sBAAsB,0FAAkB,CAAC,oFAA0B,gCAAgC,+DAAuB;AAC1H,aAAa;AACb;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA,SAAS;AACT;AACA;AACA,qBAAqB,sEAA8B;AACnD,kBAAkB,+DAAuB;AACzC;AACA,SAAS;AACT;AACA;AACA,kBAAkB,6CAAY,uFAAuF,EAAE;AACvH,kBAAkB,6CAAY,mEAAmE,EAAE;AACnG;AACA,kBAAkB,6CAAY;AAC9B,kBAAkB,6CAAY;AAC9B,qBAAqB,wEAAgC,0BAA0B,2DAAmB;AAClG;AACA,SAAS;AACT;AACA;AACO,2BAA2B,sEAAY;AAC9C;AACA;AACA,gBAAgB,iEAAqB;AACrC,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,kGAAwC;AACjH;AACA;AACA;AACA,sBAAsB,0FAAkB,CAAC,oFAA0B,gCAAgC,6DAAqB;AACxH,aAAa;AACb;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA,SAAS;AACT;AACA;AACA,qBAAqB,sEAA8B;AACnD,kBAAkB,6DAAqB;AACvC;AACA,SAAS;AACT;AACA;AACA,kBAAkB,6CAAY,uFAAuF,EAAE;AACvH,kBAAkB,6CAAY,mEAAmE,EAAE;AACnG;AACA,kBAAkB,6CAAY;AAC9B,kBAAkB,6CAAY;AAC9B,qBAAqB,sEAA8B,0BAA0B,2DAAmB;AAChG;AACA;AACA,SAAS;AACT;AACA;AACO,oCAAoC,sEAAY;AACvD;AACA;AACA,gBAAgB,oEAAwB;AACxC,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,gCAAgC,4EAAoC;AAC3I;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,4DAA4D,6CAAY,iFAAiF,UAAU,4EAAoC,8BAA8B;AACrO;AACA;AACO,2BAA2B,sEAAY;AAC9C;AACA;AACA,gBAAgB,2DAAe;AAC/B,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,gCAAgC,mEAA2B;AAClI,SAAS;AACT;AACA;AACA,4DAA4D,6CAAY,wDAAwD,UAAU,mEAA2B,8BAA8B;AACnM;AACA;AACO,4BAA4B,sEAAY;AAC/C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,gCAAgC,+DAAuB;AAC9H;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,4DAA4D,6CAAY;AACxE,qBAAqB,+DAAuB;AAC5C;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;;;AC9VA;AACA;AACA;AACA;AAC4H;AACsD;AAClL,wFAA0B,CAAC,yEAAqB,EAAE,sEAAkB;AACpE,kFAAoB,CAAC,kEAAc;AACnC,kFAAoB,CAAC,kEAAc;AACnC,kFAAoB,CAAC,gEAAY;AACjC,kFAAoB,CAAC,yEAAqB;AAC1C,kFAAoB,CAAC,iEAAa;AAClC,kFAAoB,CAAC,gEAAY;AACjC,mFAAqB,KAAK,qEAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACb3C;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACsE;AACF;AACV;AACN;AAC8B;AACzB;AACU;AACwE;AACxE;AACwB;AACJ;AACvF,+BAA+B,2DAAM;AACrC;AACA;AACA;AACA;AACA;AACA,kDAAkD,iEAAU;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,wEAAiB;AACnE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gEAAQ;AAC9B;AACA;AACA;AACA;AACA,2BAA2B,0EAAoB,mCAAmC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4EAA8B;AACjE;AACA,+EAA+E,0JAA0J;AACzO;AACA;AACA;AACA;AACA,4BAA4B,8DAAS;AACrC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,6BAA6B,4EAAsB;AACnD;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,6FAAmB;AAClC,eAAe,0FAAkB;AACjC;AAC0B;AACnB;AACP;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAI;AAC9C;AACA;AACA;AACA;AACA;AACA,iCAAiC,oEAAwB;AACzD,+BAA+B,OAAO,iFAA0C;AAChF;AACA,sCAAsC,2DAAe;AACrD,+BAA+B,OAAO,wEAAiC;AACvE;AACA,kCAAkC,8CAA8C,EAAE,qEAA8B;AAChH,sBAAsB,0DAAmB;AACzC;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qDAAc;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,IAAI,6DAAiB;AACrB,IAAI,+DAAmB;AACvB,IAAI,iEAAqB;AACzB,IAAI,oEAAwB;AAC5B,IAAI,2DAAe;AACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzLA;AACA;AACA;AACA;AACsF;AAC9B;AAC0B;AAC/B;AACgB;AACe;AACT;AACxB;AACW;AACrD,mCAAmC,oFAAa;AACvD,+BAA+B,iEAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,+DAAY;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kEAAO;AAC9C;AACA,8BAA8B,qBAAqB;AACnD,aAAa;AACb;AACA;AACA;AACA;AACA,0BAA0B,qBAAqB;AAC/C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sBAAsB;AAC7E;AACA,gBAAgB,wEAAqB;AACrC,uBAAuB,6DAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AACtC,8BAA8B,iEAAU;AAC/C;AACA;AACA;AACA;AACA;AACA,oDAAoD,wEAAiB;AACrE;AACA,oDAAoD,0DAAO;AAC3D;AACA;AACA;AACA;AACA,uBAAuB,oFAAsC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAA8B;AAC7C;AACA;AACA,mCAAmC,4EAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8EAAuB,UAAU,8DAAc,4CAA4C,gFAAa;AACxI;AACA;AACA;AACA;AACA,aAAa;AACb,kDAAkD,qBAAqB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AClMA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACmE;AACf;AAC8B;AACd;AAC4B;AAC3C;AACE;AACvD,8CAA8C,iEAAU;AACxD;AACA;AACA;AACA;AACA,qDAAqD,wEAAiB;AACtE,qCAAqC,sDAAI;AACzC,sEAAsE,8DAAc;AACpF;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,oCAAoC,sDAAI;AACxC,8EAA8E,gEAAe;AAC7F,iGAAiG,gCAAgC;AACjI;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gFAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gFAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,yBAAyB;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,kGAAqB;AACpC;AACwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5IxB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACoD;AAC8D;AAC1D;AACO;AAChC;AAC6B;AACrB;AACgD;AACK;AACkC;AACrE;AACE;AAC3D;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC,oDAAoD,iEAAU;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0DAAO;AAClD;AACA;AACA;AACA,kCAAkC,mFAA4B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ,yEAAoB;AAC5B,uBAAuB,8FAAgD;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc,GAAG,wEAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2FAAsB;AACtD,yDAAyD,4FAAuB,SAAS,EAAE;AAC3F;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC;AACA;AACA;AACA,uBAAuB,oFAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAA6C;AACpE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAAiB,gBAAgB,mFAA4B;AACzE,YAAY,4DAAc,gBAAgB,0FAAmC;AAC7E;AACA;AACA,6BAA6B,6CAAY,mEAAmE,EAAE;AAC9G;AACA;AACA;AACA;AACA,QAAQ,+DAAiB,gBAAgB,0FAAmC;AAC5E,QAAQ,4DAAc,gBAAgB,mFAA4B;AAClE;AACA;AACA,yBAAyB,6CAAY,iCAAiC,EAAE;AACxE;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yFAAkB;AACjC;AAC2B;AAC3B,kGAA0B;AAC1B;AACA,0DAA0D,8FAAyB;AACnF;AACA;AACA,mCAAmC,oFAA6B,CAAC;AACjE,YAAY;AACZ,GAAG;AACH;AACA;AACA,iEAAiE,qGAAgC;AACjG;AACA;AACA,mCAAmC,2FAAoC,CAAC;AACxE,YAAY;AACZ,GAAG;AACH;AACA,CAAC;;;;;;;;;;;;;;;;;;;;ACvND;AACA;AACA;AACA;AAC6D;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,mEAAU;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AChHA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC0F;AACD;AAC3C;AACS;AAC4C;AAChD;AACS;AACF;AACnD,uBAAuB,gGAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yDAAQ;AAClC;AACA;AACA,QAAQ,kEAAW;AACnB;AACA;AACA,kEAAkE;AAClE;AACA;AACA,QAAQ,gEAAI;AACZ,6BAA6B,6FAA4B;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0FAA0F;AAC3I;AACA,SAAS;AACT,8BAA8B,uDAAa;AAC3C,uBAAuB,oCAAoC,EAAE,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY,wDAAK,qBAAqB;AACvE;AACA,kCAAkC,uDAAa;AAC/C,2BAA2B,oBAAoB,EAAE,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAe;AAC9B;AACyB;AACzB,+FAAiB;;;;;;;;;;;;;;;;;;;;;;;;;AC9GjB;AACA;AACA;AACA;AAC2D;AACc;AACmB;AAC1C;AAC0B;AACX;AACK;AACF;AAC7D;AACP;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACO;AACP,qBAAqB,8EAAgC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6EAAyB;AAC5C,KAAK;AACL;AACA,wBAAwB,iEAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,qFAAuB;AACvB,SAAS,6BAA6B;AACtC,8BAA8B,oDAAG;AACjC,cAAc,uEAAe;AAC7B;AACA,+BAA+B,2EAAa;AAC5C;AACA,cAAc,uEAAe;AAC7B;AACA;AACA,4BAA4B,sEAAe;AAC3C,kCAAkC,gFAAsB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,gFAAsB;AACrH;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/FD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC6G;AACf;AACH;AACf;AACuC;AAClD;AACjB;AACqB;AACW;AACa;AACzC;AACA;AACA;AACmC;AAC5C;AAC2B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sEAAe;AACnD,mCAAmC,sEAAe;AAClD;AACA,sCAAsC,sEAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kCAAkC,kFAAoC;AACtE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qCAAqC,2DAAI;AACzC,6BAA6B,mEAAoB,CAAC,gEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAqB,EAAE,WAAW,OAAO,GAAG,gBAAgB,WAAW,GAAG,cAAc,SAAS,GAAG,kBAAkB,qCAAqC;AACnM,wCAAwC,qBAAqB,iBAAiB,gBAAgB,WAAW,GAAG,cAAc,SAAS,GAAG;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0EAA4B;AACzC;AACA;AACA;AACA,yCAAyC,wEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,+BAA+B,0EAA4B;AAC3D;AACA;AACA;AACA;AACA;AACA,oEAAoE,mEAAgB;AACpF,8BAA8B,mEAAgB;AAC9C;AACA;AACA;AACA;AACA,sDAAsD,8EAAuB,UAAU,6DAAe;AACtG;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE,qEAAiB;AAChC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qCAAqC,8DAAc;AACnD;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,iCAAiC,uEAAY;AAC7C;AACA,oCAAoC,yFAA+B;AACnE;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2BAA2B,8DAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yFAA+B;AAC3D;AACA;AACA,mCAAmC,8DAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,8DAAc;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,8DAAc;AACxD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+BAA+B,8EAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,EAAE,6EAAyB;AACpD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA,SAAS;AACT,YAAY,yEAAiB,MAAM;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kFAAe;AAC9B,eAAe,+FAAoB;AACnC,eAAe,8DAAc;AAC7B;AACgC;AAChC,wFAA0B;AAC1B,kFAAoB,uCAAuC,sEAAY;AACvE;AACA;AACA;AACA,0BAA0B,gGAAqC;AAC/D,mBAAmB,kDAAQ;AAC3B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,0FAAkB;AACrE,gDAAgD,kFAAe;AAC/D,qDAAqD,+FAAoB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,UAAU;AACzC;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,qBAAqB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACzaD;AACA;AACA;AACA;AAC8B;AACoC;AACT;AACN;AACsB;AACW;AACS;AACD;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kCAAkC;AACxE;AACA;AACA,yDAAyD,UAAU;AACnE;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wEAAc,CAAC,+DAAM;AACnD;AACA,0CAA0C,EAAE,GAAG,MAAM;AACrD;AACA;AACA;AACA,0CAA0C,MAAM;AAChD;AACA;AACA,8CAA8C,OAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mCAAmC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oFAA4B;AACrD,aAAa;AACb;AACA;AACA,wBAAwB,6DAAU;AAClC;AACA;AACA,wBAAwB,kEAAe;AACvC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gEAAa;AAC5C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oFAA4B;AACrD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,8CAA8C,yFAAwB;AACtE;AACA,gEAAgE,UAAU,oBAAoB,EAAE;AAChG,yEAAyE,UAAU,oBAAoB,EAAE;AACzG;AACA,gDAAgD,+FAA0B;AAC1E;AACA,0EAA0E,UAAU,qBAAqB,YAAY,EAAE;AACvH,mFAAmF,UAAU,qBAAqB,YAAY,EAAE;AAChI;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;ACtQD;AACA;AACA;AACA;AACyE;AACR;AACf;AAC0B;AACzB;AACW;AACQ;AAC/D;AACP;AACA,sBAAsB,2EAA6B;AACnD;AACA;AACA;AACA,6BAA6B,sBAAsB;AACnD;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA,qFAAuB;AACvB,WAAW,WAAW;AACtB,8BAA8B,oDAAG;AACjC,cAAc,uEAAe;AAC7B;AACA,+BAA+B,2EAAa;AAC5C;AACA,cAAc,uEAAe;AAC7B;AACA;AACA,sBAAsB,2EAA6B;AACnD,qGAAqG,gFAAsB;AAC3H;AACA;AACA,6BAA6B,wFAAwF;AACrH;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD,qFAAuB;AACvB,WAAW,yBAAyB;AACpC,8BAA8B,oDAAG,qDAAqD,iEAAc;AACpG,cAAc,uEAAe;AAC7B;AACA;AACA,+BAA+B,2EAAa;AAC5C;AACA,cAAc,uEAAe;AAC7B;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,sBAAsB,2EAA6B;AACnD,oHAAoH,gFAAsB;AAC1I;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpED;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACsF;AACjC;AACc;AACf;AAC4B;AACD;AACE;AAC9B;AACsB;AACX;AACvB;AACyD;AAChG;AACA,gDAAgD,iEAAU;AAC1D;AACA;AACA;AACA;AACA;AACA,kDAAkD,sEAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,+EAAiC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA,yCAAyC,+DAAY;AACrD;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,+BAA+B,8EAAuB;AACtD;AACA;AACA;AACA;AACA,mBAAmB,qDAAS;AAC5B,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS,EAAE,qEAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,oFAA4B;AACjD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAA6D;AACpF,mBAAmB,0BAA0B;AAC7C,6BAA6B,uDAAI;AACjC,yBAAyB,0DAAI,SAAS,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO;AAC3E,gCAAgC,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sEAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,eAAe,sFAAkB;AACjC,eAAe,mGAAqB;AACpC;AACyB;AACzB,wFAA0B;;;;;;;;;;;;;;;;;ACvN1B;AACA;AACA;AACA;AACwD;AACjD;AACP;AACA;AACA,mCAAmC,0DAAO;AAC1C;AACA,qCAAqC,0DAAO;AAC5C;AACA,4CAA4C,0DAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAwD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oCAAoC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxDA;AACA;AACA;AACA;AAC2B;AAC6C;AACpB;AAC8D;AACtD;AACM;AACV;AACO;AACyB;AACI;AAC5F,UAAU,mDAAK;AACR,gCAAgC,iEAAU;AACjD;AACA;AACA;AACA;AACA,QAAQ,wDAAU;AAClB,+BAA+B,wDAAU;AACzC,yBAAyB,wDAAU;AACnC,yCAAyC,0EAAuB;AAChE,qEAAqE,0FAAqB,KAAK,8DAAW;AAC1G,uBAAuB,kGAA0B;AACjD,kDAAkD,0FAAqB,KAAK,8DAAW;AACvF,SAAS;AACT,uBAAuB,uEAAyB,uBAAuB,iEAAmB;AAC1F,uBAAuB,uEAAyB,WAAW,iEAAmB;AAC9E;AACA;AACA,SAAS;AACT;AACA;AACA,qDAAqD,0EAAuB;AAC5E,QAAQ,6DAAe;AACvB;AACA;AACA,qDAAqD,0EAAuB;AAC5E,QAAQ,6DAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACO,8BAA8B,iEAAU;AAC/C;AACA;AACA;AACA;AACA;AACA,QAAQ,wDAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA,+BAA+B,wDAAK,KAAK,uDAAI;AAC7C;AACA;AACA;AACA,+BAA+B,wDAAK,KAAK,uDAAI;AAC7C;AACA;AACA;AACA;AACA,+BAA+B,wDAAK,KAAK,uDAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAU;AACtC;AACA;AACA;AACA;AACA,gCAAgC,0DAAO;AACvC;AACA,mCAAmC,0DAAO;AAC1C;AACA;AACA,QAAQ,wDAAU;AAClB;AACA;AACA;AACA,QAAQ,wDAAU;AAClB;AACA;AACA,QAAQ,wDAAU;AAClB;AACA,uBAAuB,sFAAwC;AAC/D;AACA;AACA;AACA;AACA,0CAA0C,2FAAsB;AAChE,uBAAuB,wEAA0B;AACjD;AACA;AACA;AACA,0DAA0D,4FAAuB;AACjF,gCAAgC,oFAAsC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wDAAK,KAAK,uDAAI;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0EAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,eAAe;AACtD,sCAAsC,8BAA8B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAU;AAC9B;AACA;AACA;AACA,gCAAgC,0DAAO;AACvC;AACA,mCAAmC,0DAAO;AAC1C;AACA,uBAAuB,wDAAU;AACjC,uBAAuB,wDAAU;AACjC,sBAAsB,wDAAU;AAChC;AACA,uBAAuB,sFAAwC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2FAAsB;AACjE,uBAAuB,wEAA0B;AACjD,QAAQ,0DAAY;AACpB;AACA;AACA;AACA,qDAAqD,4FAAuB;AAC5E,gCAAgC,oFAAsC;AACtE;AACA;AACA;AACA,YAAY,6DAAe;AAC3B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAY;AACpB;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,2BAA2B,wDAAK,KAAK,uDAAI;AACzC,gCAAgC,wDAAK,KAAK,uDAAI;AAC9C,sEAAsE,OAAO,OAAO,YAAY;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAY;AACpB;AACA;AACA;AACA;AACA;AACO,gCAAgC,8DAAM;AAC7C;AACA;AACA;AACA;AACA,uBAAuB,8EAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACnQA;AACA;AACA;AACA;AACmE;AACV;AACN;AACQ;AACyC;AAC7F;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,wDAAK;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA,qBAAqB,+EAAoB,KAAK,wDAAK;AACnD;AACA,qBAAqB,+EAAoB,KAAK,wDAAK;AACnD;AACA;AACA;AACA,qBAAqB,+EAAoB,KAAK,wDAAK;AACnD;AACA;AACA;AACA;AACA;AACA,aAAa,gEAAa;AAC1B;AACA,qBAAqB,+EAAoB,KAAK,8DAAQ;AACtD;AACA,qBAAqB,+EAAoB,KAAK,8DAAQ;AACtD;AACA;AACA;AACA,qBAAqB,gFAAqB,KAAK,wDAAK;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qHAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA;AACA;AACA,wFAAwF;AACxF,uBAAuB,gEAAS;AAChC;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACjJA;AACA;AACA;AACA;AACuC;AACqB;AAC2B;AACjB;AACP;AACF;AACQ;AACrE,gCAAgC,sEAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAkB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA,aAAa;AACb;AACA,wBAAwB,uFAAsB;AAC9C;AACA,uBAAuB,6CAAY,EAAE,iEAAiE;AACtG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,2FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,2FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA,iCAAiC,sEAAY;AAC7C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,2FAAiC;AACzD;AACA,wBAAwB,kEAAkE;AAC1F;AACA,aAAa;AACb;AACA,wBAAwB,uFAAsB;AAC9C;AACA,uBAAuB,6CAAY,EAAE,kEAAkE;AACvG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wEAAmB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;AC3HpB;AACA;AACA;AACA;AAC2D;AACQ;AACV;AACN;AACQ;AACyC;AACrC;AACxD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qHAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,eAAe;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe;AAChE;AACA;AACA;AACA,2CAA2C,4EAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mGAA8C;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,eAAe;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8DAAQ;AAC3C,yCAAyC,SAAS;AAClD;AACA,gBAAgB,gEAAa,kBAAkB,yEAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4GAAuD,KAAK,wDAAK;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qHAAyC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,4EAA+B;AAC7E;AACA;AACA;AACA;AACA,sBAAsB,yGAAoD,KAAK,wDAAK;AACpF;AACA;AACA,sBAAsB,yGAAoD,KAAK,wDAAK;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA,qBAAqB,+EAAoB,KAAK,wDAAK;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA,qBAAqB,+EAAoB,KAAK,8DAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA,6DAA6D,qDAAqD;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA,yDAAyD,qDAAqD;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvTA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuC;AACa;AACuB;AACP;AAC+C;AAC7C;AACgC;AACf;AACyB;AACzB;AACA;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+DAAiB;AAC5D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,0EAA0E,qFAAoB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kFAAiB;AACvD;AACA;AACA,wCAAwC,kEAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAS;AACzC;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wEAA0B;AAC3D;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0FAAc,kBAAkB,+DAA+D;AAC9H;AACA;AACA;AACA;AACA;AACA,2BAA2B,0FAAc,kBAAkB,wCAAwC;AACnG,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6FAAmB;AAClC,eAAe,6FAAmB;AAClC,eAAe,yFAAkB;AACjC,eAAe,yFAAkB;AACjC,eAAe,6EAAY;AAC3B;AACiC;AACjC,8BAA8B,sEAAY;AAC1C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;;;;;;;;;;;;;;;;;;;;;;AChPpB;AACA;AACA;AACA;AACuC;AACwB;AACoD;AAC7C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,uCAAuC,iEAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACO,yBAAyB,sEAAY;AAC5C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO,yBAAyB,sEAAY;AAC5C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;ACnIpB;AACA;AACA;AACA;AACmB;AAC4C;AACA;AACgB;AACtB;AACN;AACQ;AACE;AACY;AACzE;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACO,oCAAoC,iEAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,8DAAQ;AAChD;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAiD;AAChF,6CAA6C,gEAAS;AACtD;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,sEAAkB;AAC5F;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wDAAK;AAChC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iEAAW;AACrD,4CAA4C,uFAA+B;AAC3E;AACA,CAAC;AACD,wFAA0B;;;;;;;;;;;;;;;;;;ACzL1B;AACA;AACA;AACA;AAC2D;AACR;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wDAAK;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DA;AACA;AACA;AACA;AACwD;AACuB;AACJ;AACpB;AACgB;AACX;AACI;AACzD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa,GAAG,UAAU;AACvD;AACA;AACA,6BAA6B,aAAa,GAAG,eAAe;AAC5D;AACA,iCAAiC,aAAa,GAAG,eAAe,GAAG,gCAAgC,GAAG,4BAA4B;AAClI;AACA;AACA;AACA,uBAAuB,0CAA0C;AACjE,oBAAoB,YAAY,GAAG,EAAE;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iFAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAa;AAC3C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA,yBAAyB,oFAAsC;AAC/D;AACA;AACA,oDAAoD,MAAM;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gBAAgB,iFAAyB;AACzC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,yBAAyB,wFAA0C;AACnE,gCAAgC,oFAAsC;AACtE,iBAAiB,8DAAM;AACvB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oEAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yDAAQ;AAC7C,6BAA6B,yDAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa,GAAG,wCAAwC,GAAG,WAAW,gFAAkC,aAAa;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxNiC;AACC;AACS;AACiD;AACA;AACjC;AACpD,qCAAqC,sFAAa;AACzD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,uCAAuC,sFAAa;AAC3D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,qCAAqC,sFAAa;AACzD;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,qCAAqC,sFAAa;AACzD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,wCAAwC,sFAAa;AAC5D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,2CAA2C,sFAAa;AAC/D;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,0CAA0C,sFAAa;AAC9D;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,iDAAiD,sFAAa;AACrE;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,qCAAqC,sFAAa;AACzD;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,qCAAqC,sFAAa;AACzD;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,oCAAoC,sFAAa;AACxD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,wCAAwC,sFAAa;AAC5D;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,yCAAyC,sFAAa;AAC7D;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,mCAAmC,sFAAa;AACvD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,uCAAuC,sFAAa;AAC3D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,yCAAyC,sFAAa;AAC7D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,oCAAoC,sFAAa;AACxD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,wCAAwC,sFAAa;AAC5D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,uCAAuC,sFAAa;AAC3D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,wCAAwC,sFAAa;AAC5D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,yCAAyC,sFAAa;AAC7D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,uCAAuC,sFAAa;AAC3D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,sCAAsC,sFAAa;AAC1D,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,oCAAoC,sFAAa;AACxD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,6CAA6C,sFAAa;AACjE,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,oCAAoC,sFAAa;AACxD,UAAU,+EAAU;AACpB,WAAW,+EAAU;AACrB,QAAQ,+EAAU;AAClB,CAAC,EAAE,iDAAQ;AACJ,wCAAwC,sFAAa;AAC5D;AACA;AACA;AACA,CAAC,EAAE,iDAAQ;AACX,kGAA0B;AAC1B;AACA;AACA,6BAA6B,qFAA+B,CAAC,EAAE,UAAU,sBAAsB,EAAE;AACjG;AACA;AACA;AACA,6BAA6B,uFAAiC,CAAC,EAAE,UAAU,wBAAwB,EAAE;AACrG;AACA;AACA;AACA,6BAA6B,qFAA+B,CAAC,EAAE,UAAU,sBAAsB,EAAE;AACjG;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,qFAA+B,CAAC,EAAE,UAAU,sBAAsB,EAAE;AACjG;AACA;AACA;AACA,6BAA6B,wFAAkC,CAAC,EAAE,UAAU,yBAAyB,EAAE;AACvG;AACA;AACA;AACA,6BAA6B,2FAAqC,CAAC,EAAE,UAAU,4BAA4B,EAAE;AAC7G;AACA;AACA;AACA;AACA,KAAK,qFAA+B,CAAC,GAAG,oFAA8B,CAAC,EAAE,UAAU,2BAA2B,EAAE;AAChH;AACA;AACA;AACA,6BAA6B,0FAAoC,CAAC,EAAE,UAAU,iCAAiC,EAAE;AACjH;AACA;AACA;AACA,6BAA6B,qFAA+B,CAAC,EAAE,UAAU,sBAAsB,EAAE;AACjG;AACA;AACA;AACA,6BAA6B,qFAA+B,CAAC,EAAE,UAAU,sBAAsB,EAAE;AACjG;AACA;AACA;AACA,6BAA6B,oFAA8B,CAAC,EAAE,UAAU,qBAAqB,EAAE;AAC/F;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,wFAAkC,CAAC,EAAE,UAAU,yBAAyB,EAAE;AACvG;AACA;AACA;AACA,6BAA6B,yFAAmC,CAAC,EAAE,UAAU,0BAA0B,EAAE;AACzG;AACA;AACA;AACA,6BAA6B,mFAA6B,CAAC,EAAE,UAAU,oBAAoB,EAAE;AAC7F;AACA;AACA;AACA,6BAA6B,uFAAiC,CAAC,EAAE,UAAU,wBAAwB,EAAE;AACrG;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,yFAAmC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACtG;AACA;AACA;AACA,6BAA6B,oFAA8B,CAAC,EAAE,UAAU,qBAAqB,EAAE;AAC/F;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,wFAAkC,CAAC,EAAE,UAAU,yBAAyB,EAAE;AACvG;AACA;AACA;AACA,6BAA6B,uFAAiC,CAAC,EAAE,UAAU,wBAAwB,EAAE;AACrG;AACA;AACA;AACA,6BAA6B,wFAAkC,CAAC,EAAE,UAAU,yBAAyB,EAAE;AACvG;AACA;AACA;AACA,6BAA6B,yFAAmC,CAAC,EAAE,UAAU,0BAA0B,EAAE;AACzG;AACA;AACA;AACA,6BAA6B,uFAAiC,CAAC,EAAE,UAAU,wBAAwB,EAAE;AACrG;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,sFAAgC,CAAC,EAAE,UAAU,uBAAuB,EAAE;AACnG;AACA;AACA;AACA,6BAA6B,oFAA8B,CAAC,EAAE,UAAU,qBAAqB,EAAE;AAC/F;AACA;AACA;AACA,6BAA6B,6FAAuC,CAAC,EAAE,UAAU,8BAA8B,EAAE;AACjH;AACA;AACA;AACA,6BAA6B,oFAA8B,CAAC,EAAE,UAAU,qBAAqB,EAAE;AAC/F;AACA;AACA;AACA,6BAA6B,wFAAkC,CAAC,EAAE,UAAU,yBAAyB,EAAE;AACvG;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjTD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AACiB;AACO;AACJ;AAC4I;AACjI;AACuM;AAClN;AACT;AACL;AACwB;AACsB;AACY;AACZ;AACJ;AACT;AACC;AACc;AACU;AACvG;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,iEAAU;AACxE;AACA;AACA;AACA,kCAAkC,6EAAkC;AACpE;AACA;AACA;AACA,yCAAyC,0DAAO;AAChD,yCAAyC,2DAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,mDAAmD,MAAK,IAAI,CAAmE;AAC/H;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iBAAiB,8EAAmC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,oCAAoC;AAChE;AACA;AACA;AACA;AACA;AACA,4BAA4B,oCAAoC;AAChE;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oBAAoB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2EAA8B;AACzD;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,2EAA8B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAA2B;AAC7D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0FAAkB;AACjC,eAAe,iFAAe;AAC9B,eAAe,8FAAiB;AAChC;AACgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD,qDAAqD,oEAAiB;AACtE;AACA;AACA;AACA,eAAe,8FAAmB;AAClC,eAAe,0FAAkB;AACjC,eAAe,0FAAkB;AACjC,eAAe,kFAAa;AAC5B,eAAe,gGAAoB;AACnC,eAAe,iFAAe;AAC9B,eAAe,0GAA+B;AAC9C,eAAe,8FAAiB;AAChC;AAC0B;AACnB,8BAA8B,2EAAiB;AACtD;AACA;AACA,gBAAgB,mEAAwB;AACxC,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,wBAAwB,wFAAsB;AAC9C;AACA,uBAAuB,6CAAY,EAAE,oDAAoD;AACzF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACO,2CAA2C,sEAAY;AAC9D;AACA;AACA,gBAAgB,0EAA+B;AAC/C,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACO,8BAA8B,sEAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA,gBAAgB,uEAA4B;AAC5C,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA,sBAAsB,yEAAyE;AAC/F;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,gBAAgB,uEAA4B;AAC5C,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,0FAAkB,CAAC,iFAAuB,EAAE,qEAA0B;AAC9F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,gBAAgB,2EAAgC;AAChD,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA,sBAAsB,+GAA+G;AACrI;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,gBAAgB,2EAAgC;AAChD,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,0FAAkB,CAAC,iFAAuB,EAAE,qEAA0B;AAC9F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO,uCAAuC,sEAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA,gBAAgB,gFAAqC;AACrD,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,gBAAgB,oFAAyC;AACzD,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO,qCAAqC,2EAAiB;AAC7D;AACA;AACA,gBAAgB,0EAA+B;AAC/C,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,sBAAsB,+DAA+D;AACrF;AACA,aAAa;AACb;AACA,wBAAwB,wFAAsB;AAC9C;AACA,uBAAuB,6CAAY,EAAE,uDAAuD;AAC5F;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,wFAA0B;AACnB;AACP,uFAAyB;AACzB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACb;AACP,uFAAyB;AACzB,oBAAoB,0FAAgC;AACpD,mFAAqB;AACrB,QAAQ,0EAA+B;AACvC,kBAAkB,sEAA2B;AAC7C;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,8EAAmC;AAC3C;AACA;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC,iBAAiB,gFAAqC;AACtD,aAAa,4EAAiC;AAC9C,aAAa,4EAAiC;AAC9C,eAAe,8EAAmC;AAClD;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,0EAA+B;AACvC;AACA;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC,iBAAiB,4EAAiC;AAClD,aAAa,wEAA6B;AAC1C,aAAa,wEAA6B;AAC1C,eAAe,0EAA+B;AAC9C;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,sEAA2B;AACnC;AACA;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC,iBAAiB,wEAA6B;AAC9C,aAAa,oEAAyB;AACtC,aAAa,oEAAyB;AACtC,eAAe,sEAA2B;AAC1C;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,4EAAiC;AACzC;AACA;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC,iBAAiB,8EAAmC;AACpD,aAAa,0EAA+B;AAC5C,aAAa,0EAA+B;AAC5C,eAAe,4EAAiC;AAChD;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,oEAAyB;AACjC,kBAAkB,sEAA2B;AAC7C;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,oEAAyB;AACjC,kBAAkB,sEAA2B;AAC7C;AACA;AACA;AACA,gBAAgB,0FAAkB,CAAC,iFAAuB,EAAE,wEAA6B;AACzF;AACA;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,oEAAyB;AACjC,kBAAkB,sEAA2B;AAC7C;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,oEAAyB;AACjC,kBAAkB,sEAA2B;AAC7C;AACA;AACA;AACA,gBAAgB,0FAAkB,CAAC,iFAAuB,EAAE,wEAA6B;AACzF;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB,QAAQ,0EAA+B;AACvC,kBAAkB,sEAA2B;AAC7C;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;AC7yBD;AACA;AACA;AACA;AACmD;AACwB;AACF;AAC4C;AACnC;AAC3E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wDAAK;AACvC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,SAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wDAAK;AAC5C;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uFAA+B;AAChF;AACA;AACA;AACA;AACA;AACA,eAAe,wFAAgB,CAAC,qGAAgC;AAChE,kBAAkB,sEAAwB;AAC1C,KAAK;AACL;AACA,eAAe,wFAAgB,CAAC,qFAAgB;AAChD,kBAAkB,oEAAsB;AACxC;AACA,CAAC;AACD,yCAAyC,uFAA+B;AACxE;AACA;AACA;AACA;AACA,eAAe,wFAAgB,CAAC,qGAAgC;AAChE,kBAAkB,sEAAwB;AAC1C,KAAK;AACL;AACA,eAAe,wFAAgB,CAAC,qFAAgB;AAChD,kBAAkB,oEAAsB;AACxC;AACA,CAAC;AACD,qDAAqD,uFAA+B;AACpF;AACA;AACA;AACA,CAAC;AACD,uDAAuD,uFAA+B;AACtF;AACA;AACA,eAAe,wFAAgB,CAAC,qGAAgC;AAChE,kBAAkB,sEAAwB;AAC1C;AACA,CAAC;AACD,8CAA8C,uFAA+B;AAC7E;AACA;AACA;AACA,CAAC;AACD,yCAAyC,uFAA+B;AACxE;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzRD;AACA;AACA;AACA;AAC+E;AACF;AACkC;AACtD;AACN;AACQ;AACU;AACd;AACI;AACc;AACS;AACf;AAC5D,wCAAwC,qFAAa;AAC5D;AACO,uCAAuC,qFAAa;AACpD,0CAA0C,qFAAa;AACvD;AACP;AACA,UAAU;AACV;AACO;AACP;AACA,UAAU;AACV;AACO;AACP;AACA,UAAU;AACV;AACO;AACP;AACA,UAAU;AACV;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA,8BAA8B,sEAAe;AAC7C;AACA;AACA;AACA,wCAAwC,+DAAY;AACpD,gCAAgC,gEAAe;AAC/C;AACA,+CAA+C,mEAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0EAAiB,iDAAiD,iFAA8B;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,2BAA2B,8DAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC;AACA,2BAA2B,8DAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAkB;AACrC;AACA,eAAe,8EAA8B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8EAAc;AAChD;AACA,uDAAuD,8DAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,cAAc;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0EAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,0BAA0B,oGAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA,0BAA0B,oEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gEAAS;AACvD;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACvdA;AACA;AACA;AACA;AACoD;AACiF;AACzE;AACK;AACvB;AACwL;AACtI;AACrF,gCAAgC,8DAAM;AAC7C;AACA;AACA,4CAA4C,mEAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,4FAAuB;AAC1G,uFAAuF,gGAA2B;AAClH,uFAAuF,gGAA2B;AAClH,gDAAgD,oGAAqB;AACrE,kDAAkD,8EAAmC;AACrF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,6CAA6C,iGAAkB;AAC/D,kDAAkD,0EAA+B;AACjF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,wCAAwC,4FAAa;AACrD,kDAAkD,sEAA2B;AAC7E;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,0FAA4C;AACnE,uBAAuB,uEAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,4FAAuB;AAC3E,wDAAwD,gGAA2B;AACnF,wDAAwD,gGAA2B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAA0B;AAC1B,4CAA4C,2FAAsB;AAClE;AACA,8DAA8D,qBAAqB,kBAAkB,EAAE;AACvG;AACA,4CAA4C,2FAAsB;AAClE;AACA,8DAA8D,UAAU,kBAAkB,EAAE;AAC5F;AACA,6CAA6C,iFAAY;AACzD;AACA,8DAA8D,yBAAyB,mBAAmB,EAAE;AAC5G;AACA,oCAAoC,mFAAc;AAClD;AACA,8DAA8D,qBAAqB,UAAU,EAAE;AAC/F;AACA,CAAC;;;;;;;;;;;;;;;;;;;;AC1KD;AACA;AACA;AACA;AACwD;AACO;AACZ;AACJ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,+BAA+B,iEAAU;AAChD;AACA;AACA,4DAA4D,0DAAO;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD,yBAAyB,4BAA4B;AACrD,sBAAsB,yBAAyB;AAC/C,6BAA6B,gCAAgC;AAC7D,mBAAmB,mEAAmE;AACtF,qBAAqB,uEAAuE;AAC5F,qBAAqB,uEAAuE;AAC5F,wBAAwB,6EAA6E;AACrG,yBAAyB,sBAAsB;AAC/C,2BAA2B,wBAAwB;AACnD,2BAA2B,wBAAwB;AACnD,8BAA8B,2BAA2B;AACzD,uBAAuB,0BAA0B;AACjD,2BAA2B,8BAA8B;AACzD,wBAAwB,2BAA2B;AACnD,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,oEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oEAAiB;AAC7C,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,wDAAa;AAChE;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3NA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC0B;AACa;AACa;AACqB;AACA;AACZ;AACD;AACJ;AACW;AACF;AACJ;AACF;AACR;AACiE;AAC4pB;AACprB;AACgC;AACnD;AACzE,0BAA0B,uEAAY,mBAAmB,wEAAiB;AAC1E,0BAA0B,uEAAY,mBAAmB,2EAAoB;AAC7E,yBAAyB,uEAAY,kBAAkB,0EAAmB;AACnE,sBAAsB,uEAAY,eAAe,oEAAa;AAC9D,wBAAwB,uEAAY,iBAAiB,sEAAe;AACpE,2BAA2B,uEAAY,qBAAqB,yEAAkB;AAC9E,8BAA8B,uEAAY,wBAAwB,sEAAe;AACjF,0BAA0B,uEAAY,oBAAoB,wEAAiB;AAClF,6BAA6B,6CAAY;AACzC,mCAAmC,6CAAY;AAC/C,qCAAqC,6CAAY;AACjD,iCAAiC,6CAAY;AAC7C,wCAAwC,6CAAY;AACpD,4BAA4B,6CAAY;AACxC,gCAAgC,6CAAY;AAC5C,sCAAsC,6CAAY;AAClD,8BAA8B,6CAAY;AAC1C,kCAAkC,6CAAY;AAC9C,0CAA0C,6CAAY;AACtD,sCAAsC,6CAAY,6CAA6C,EAAE,6EAA6E,yDAAa;AAC3L,6BAA6B,6CAAY,4BAA4B,EAAE,KAAK,EAAE;AAC9E,uBAAuB,6CAAY;AACnC;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,oBAAoB,kEAAoB;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,8DAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,yDAAyD;AACpH;AACA;AACA;AACA;AACA,yCAAyC,0DAAO;AAChD,uBAAuB,uEAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wCAAwC,iCAAiC;AACzE;AACA;AACA;AACA,SAAS;AACT,iCAAiC,6EAAiC;AAClE,gDAAgD,4DAAc;AAC9D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,oCAAoC,gFAAoC;AACxE,mDAAmD,4DAAc;AACjE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,+DAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yDAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,yDAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAc;AAClC;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6CAAY,8BAA8B,EAAE;AAC9D,kBAAkB,6CAAY,yBAAyB,EAAE,aAAa,EAAE;AACxE;AACA;AACA,8BAA8B,6CAAY,oCAAoC,EAAE,aAAa,EAAE,OAAO,EAAE;AACxG;AACA;AACA;AACA,0BAA0B,YAAY,IAAI,UAAU;AACpD;AACA;AACA;AACA,eAAe,6CAAY,kDAAkD,EAAE,aAAa,EAAE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0DAAY;AAC5B;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,yCAAyC,wEAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,kEAAoB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oDAAoD,6FAAuB;AAC3E,wDAAwD,iGAA2B;AACnF,wDAAwD,iGAA2B;AACnF,4CAA4C,qFAAe;AAC3D,4CAA4C,qFAAe;AAC3D,wCAAwC,iFAAW;AACnD,0DAA0D,mGAA6B;AACvF,0DAA0D,mGAA6B;AACvF,sDAAsD,+FAAyB;AAC/E,6DAA6D,sGAAgC;AAC7F,6DAA6D,sGAAgC;AAC7F,yDAAyD,kGAA4B;AACrF,2DAA2D,oGAA8B;AACzF,2DAA2D,oGAA8B;AACzF,uDAAuD,gGAA0B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,yDAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAY;AACxB;AACA;AACA,iBAAiB,0DAAY;AAC7B,YAAY,6DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAiB;AAC/C;AACA;AACA,kDAAkD,qCAAqC;AACvF,2CAA2C,+DAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAe;AACvB,QAAQ,6DAAe;AACvB,QAAQ,6DAAe;AACvB;AACA;AACA,8CAA8C,qCAAqC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+DAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,qEAAiB;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAkB,IAAI,+DAAiB;AACvD;AACA,+CAA+C,6CAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA,6CAA6C,oGAAsB;AACnE;AACA;AACA;AACA,+DAA+D,+EAAmC;AAClG,4DAA4D,2EAA+B;AAC3F,uDAAuD,uEAA2B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2CAA2C;AAC3E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,YAAY,8DAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,4EAAgC;AAC3G;AACA;AACA,2CAA2C,4EAAgC,wBAAwB,qEAAiB;AACpH;AACA,SAAS;AACT;AACA;AACA,uEAAuE,wEAA4B;AACnG;AACA;AACA,2CAA2C,wEAA4B,wBAAwB,qEAAiB;AAChH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,2EAAQ;AAC/D;AACA,8EAA8E,6EAAiC;AAC/G;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA,kEAAkE,2EAA+B;AACjG;AACA;AACA,oCAAoC,uCAAuC;AAC3E,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gDAAgD,uGAAyB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gCAAgC,mDAAmD;AACnF,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oEAAoE,qEAAyB;AAC7F;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,wEAAwE,qEAAyB;AACjG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6CAA6C;AACjF;AACA,+CAA+C,+DAAiB;AAChE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;AACA,+BAA+B,+DAAI,uBAAuB,yCAAyC;AACnG;AACA;AACA;AACA,4BAA4B,+DAAiB;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kEAAoB;AAC5D;AACA;AACA;AACA,2CAA2C,MAAM;AACjD;AACA,2CAA2C,+DAAiB;AAC5D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iCAAiC,+DAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,MAAM;AACjD;AACA,2CAA2C,+DAAiB;AAC5D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,8DAAM;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAAiB;AAC7B,YAAY,4DAAc;AAC1B;AACA;AACA,YAAY,+DAAiB;AAC7B,YAAY,4DAAc;AAC1B;AACA;AACA;AACA;AACA,mGAA0B;AAC1B;AACA;AACA,gDAAgD,SAAS,EAAE,qBAAqB,OAAO,EAAE;AACzF;AACA;AACA,wDAAwD,8FAAwB;AAChF,+DAA+D,qFAAe;AAC9E,wDAAwD,8FAAwB;AAChF,4CAA4C,4FAAsB;AAClE;AACA,6CAA6C,kFAAY;AACzD;AACA,wDAAwD,yBAAyB,mBAAmB,EAAE;AACtG;AACA,oDAAoD,oGAA8B;AAClF;AACA,sDAAsD,eAAe,yCAAyC,GAAG,0BAA0B,wBAAwB,EAAE;AACrK;AACA,2CAA2C,2FAAqB;AAChE;AACA,6DAA6D,qBAAqB,iBAAiB,cAAc,wBAAwB,EAAE;AAC3I;AACA,oDAAoD,oGAA8B;AAClF;AACA,sDAAsD,eAAe,yCAAyC,GAAG,0BAA0B,EAAE;AAC7I;AACA,oCAAoC,oFAAc;AAClD;AACA,wDAAwD,qBAAqB,UAAU,EAAE;AACzF;AACA,sCAAsC,4FAAsB;AAC5D;AACA,wDAAwD,UAAU,YAAY,EAAE;AAChF;AACA,iCAAiC,qFAAe;AAChD;AACA,iFAAiF,UAAU,OAAO,EAAE;AACpG;AACA,kDAAkD,8FAAwB;AAC1E;AACA,qEAAqE,qBAAqB,wBAAwB,EAAE;AACpH;AACA;AACA,sCAAsC,wFAAkB;AACxD;AACA,yEAAyE,qBAAqB,QAAQ,EAAE;AACxG;AACA;AACA;AACA,wCAAwC,iFAAW;AACnD;AACA,yFAAyF,kBAAkB,cAAc,EAAE;AAC3H;AACA,CAAC;;;;;;;;;;;;;;;;;ACxnCD;AACA;AACA;AACA;AACmD;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,uBAAuB,iFAA8B;AACrD,aAAa;AACb;AACA;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACqF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2FAAmC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,WAAW;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7RA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuB;AACgB;AACgB;AACkB;AAC0B;AACvC;AACoB;AACqE;AAC+E;AACrH;AACzC;AACb;AAC2C;AACrC;AACwB;AACJ;AACS;AACzB;AACmC;AACV;AAC4C;AACxI,oCAAoC,qFAAa;AACjD,wDAAwD,iEAAU;AAClE;AACA;AACA;AACA,iDAAiD,sEAAe;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6EAAyB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wEAAkB,uBAAuB,2EAAgB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB,sEAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAY;AAC5C;AACA,oCAAoC,mEAAgB;AACpD;AACA;AACA,mCAAmC,0DAAO;AAC1C,0CAA0C,mEAAgB;AAC1D;AACA,gCAAgC,uFAAwC;AACxE,0HAA0H;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAAmB,cAAc;AAClE;AACA,mCAAmC,mFAAoC;AACvE;AACA,+DAA+D,oFAAyB;AACxF;AACA;AACA;AACA,iBAAiB;AACjB,qCAAqC;AACrC;AACA;AACA,yCAAyC,yEAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,uEAAuE,8EAAuB;AAC9F;AACA,8FAA8F;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,gBAAgB,0EAAiB;AACjC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,sEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA,SAAS,kBAAkB,sEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0FAAkB;AACjC;AAC6B;AAC7B,4BAA4B,sEAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,8DAAiB;AAC1B,aAAa,2DAAc;AAC3B;AACA;AACA;AACA,aAAa,8DAAiB,yBAAyB,2DAAc;AACrE;AACA;AACA,aAAa,8DAAiB,4BAA4B,2DAAc;AACxE;AACA;AACA,aAAa,8DAAiB,kCAAkC,0DAAa,kEAAkE,2DAAc;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,YAAY,0EAAwB;AACpC;AACA;AACA,YAAY,4EAA0B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,4EAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oEAAkB;AAC9B;AACA;AACA;AACA,gBAAgB,0EAAwB;AACxC;AACA;AACA,gBAAgB,4EAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,4EAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,yEAAuB,eAAe,6EAA8B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sHAAyC;AACpE;AACA,kDAAkD,+EAAsB;AACxE,gBAAgB,kFAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,yEAAuB,eAAe,4EAA6B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0HAA6C;AAC5E;AACA;AACA,gBAAgB,kFAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,yEAAuB,eAAe,4EAA6B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0HAA6C;AAC5E;AACA;AACA,gBAAgB,kFAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,4EAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,4EAA0B;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yEAAuB;AAC/B;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,eAAe,QAAQ;AACvB,IAAI,8FAAgC;AACpC;AACA,eAAe,6CAAY,uCAAuC,EAAE;AACpE,6BAA6B,EAAE;AAC/B;AACA;AACA,oBAAoB,4FAAiC;AACrD,qBAAqB,kEAAQ;AAC7B;AACA;AACA,KAAK;AACL;AACO,iCAAiC,uFAAa,2BAA2B,QAAQ,qFAAW,CAAC,+FAAyB,cAAc,qFAAW,CAAC,+FAAyB,kBAAkB,EAAE,6CAAY;AACzM,6BAA6B,uFAAa,2CAA2C,OAAO,oFAAc,SAAS,oFAAc,MAAM,oFAAc,EAAE,EAAE,6CAAY;AAC5K,mGAA0B;AAC1B;AACA;AACA,8DAA8D,qBAAqB,gBAAgB,EAAE;AACrG;AACA;AACA;AACA;AACA,wBAAwB,mFAA+B,CAAC;AACxD,wBAAwB,oFAAgC,CAAC;AACzD,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;ACpxBD;AACA;AACA;AACA;AACyE;AACA;AAClE,4BAA4B,sEAAY,qBAAqB,yEAAmB;AAChF,6BAA6B,sEAAY,sBAAsB,0EAAoB;AACnF;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uFAA+B;AACvF;AACA;AACA;AACA;AACA,CAAC;AACD,oEAAoE,uFAA+B;AACnG;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,iEAAiE,uFAA+B;AAChG;AACA;AACA;AACA,CAAC;AACD,uDAAuD,uFAA+B;AACtF;AACA;AACA;AACA,CAAC;AACD,oDAAoD,uFAA+B;AACnF;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AC5DD;AACA;AACA;AACA;AACwD;AACJ;AAC7C;AACP;AACA,uCAAuC,0DAAO;AAC9C;AACA;AACA;AACA,4BAA4B,6DAAc;AAC1C;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC,qBAAqB,wBAAwB;AAC7C,yBAAyB,4BAA4B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,wCAAwC;AACxC,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uCAAuC,oDAAoD;AAC3F;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8HAA8H;AACrK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0GAA0G;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,SAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7VA;AACA;AACA;AACA;AACO;AACA;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC,yBAAyB,gCAAgC,IAAI,2BAA2B,GAAG,yBAAyB;AACpH;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1JA;AACA;AACA;AACA;AACwD;AACL;AACgB;AAC5D;AACP;AACA,uCAAuC,0DAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uCAAuC;AAC9D,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wDAAK;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,yEAAyE;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpIA;AACA;AACA;AACA;AACqE;AACT;AACwC;AACpG;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yHAA6C;AACxE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAe,oBAAoB,8DAAe;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA,uBAAuB,6DAAc;AACrC;AACA;AACA;AACA;AACA,2BAA2B,oCAAoC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,6BAA6B,oFAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAc;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB,OAAO,mBAAmB;AAChF;AACA;AACA;AACA,0BAA0B,mCAAmC,EAAE;AAC/D,yCAAyC,UAAU;AACnD;AACA,qBAAqB,oFAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,sCAAsC,mCAAmC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC9JA;AACA;AACA;AACA;AAC0D;AACnD;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,kEAAkE;AAC7G;AACA;AACA;AACA,+BAA+B,uEAAc;AAC7C;AACA;;;;;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AAC2E;AACN;AACrE;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oDAAoD;AAC5F;AACA;AACA;AACA,SAAS,EAAE,6EAAyB;AACpC,KAAK;AACL;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAe,oBAAoB,8DAAe;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,uBAAuB,6DAAc;AACrC;AACA;AACA;AACA;AACA,2BAA2B,qCAAqC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAc;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1JA;AACA;AACA;AACA;AACuC;AACgD;AACxB;AAC/D,+BAA+B,sEAAY;AAC3C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,iFAAuB,CAAC,iFAAuB;AACvD;AACA;AACA,gCAAgC,sEAAY;AAC5C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,iFAAuB,CAAC,iFAAuB;AACvD;AACA;AACA,kCAAkC,sEAAY;AAC9C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,iFAAuB;AAC/B;AACA;AACA,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDpB;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC8D;AACY;AACD;AACmB;AAC1C;AACuE;AAC3D;AACL;AACN;AACQ;AACuG;AAC9E;AACd;AACjB;AACd;AACiD;AACQ;AAChC;AACiB;AACtB;AACC;AACrD;AACP;AACA;AACA;AACA;AACA,SAAS,QAAQ;AACjB,mBAAmB,kBAAkB;AACrC,gBAAgB,kEAAe;AAC/B;AACA,WAAW,iCAAiC;AAC5C;AACA;AACA,YAAY,oEAAK,CAAC,8CAAY,4CAA4C,EAAE;AAC5E;AACA;AACA,YAAY,oEAAK,CAAC,8CAAY,kBAAkB,EAAE,2BAA2B,EAAE;AAC/E;AACA;AACA;AACA;AACA,YAAY,oEAAK,CAAC,8CAAY,kDAAkD,EAAE,MAAM,EAAE;AAC1F;AACA;AACA,YAAY,oEAAK,CAAC,8CAAY,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,EAAE;AAC7F;AACA;AACA;AACO;AACP;AACA;AACA;AACA,yBAAyB,6FAA8C;AACvE;AACA;AACA;AACA,qBAAqB,iGAAyB;AAC9C;AACA;AACA;AACA,2BAA2B,kGAAmD;AAC9E;AACA;AACA,yBAAyB,iGAAyB;AAClD;AACA;AACA,qBAAqB,iGAAyB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAc;AAC3C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qCAAqC,mEAAU;AACxC;AACP;AACA,0CAA0C,mGAAqB;AAC/D,sBAAsB,uEAAY;AAClC,yBAAyB,kGAAmD;AAC5E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA,2CAA2C,0FAAoB;AAC/D;AACA;AACA,YAAY,uEAAY;AACxB;AACA,sBAAsB,4FAAkC;AACxD;AACA;AACA;AACA,sBAAsB,0FAAgC;AACtD;AACA;AACA;AACA;AACA,0BAA0B,+DAAO,qBAAqB,iFAA8B;AACpF,2BAA2B,kFAA+B;AAC1D,kCAAkC,sEAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAY;AACxB;AACA,YAAY,uEAAsB;AAClC;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B,yCAAyC,gEAAS;AAClD;AACA;AACA;AACA,2BAA2B,6DAAU;AACrC;AACA;AACA,aAAa;AACb,4BAA4B,QAAQ;AACpC,wBAAwB,kFAA+B;AACvD,oCAAoC,gEAAS;AAC7C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACO;AACP;AACA,0CAA0C,mGAAqB;AAC/D,sBAAsB,uEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA,2CAA2C,0FAAoB;AAC/D;AACA;AACA,YAAY,uEAAY;AACxB;AACA,sBAAsB,4FAAkC;AACxD;AACA;AACA;AACA,sBAAsB,0FAAgC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAY;AACxB;AACA,YAAY,uEAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B,yCAAyC,gEAAS;AAClD;AACA;AACA;AACA,2BAA2B,6DAAU;AACrC;AACA;AACA,aAAa;AACb,4BAA4B,QAAQ;AACpC,wBAAwB,kFAA+B;AACvD,oCAAoC,gEAAS;AAC7C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACO;AACP;AACA,0BAA0B,kGAAmD;AAC7E;AACA,mIAAmI,6EAAyB;AAC5J,gBAAgB,uEAAe;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA,uHAAuH,6EAAyB;AAChJ,gBAAgB,uEAAe;AAC/B;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP,sBAAsB,2FAA4C;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,mGAAmG,gFAAsB,SAAS,6EAAyB;AAC3J;AACA,KAAK;AACL;AACA,oGAAgC;AAChC;AACA,IAAI,kEAAU,CAAC,0DAAS;AACxB,IAAI,kEAAU,CAAC,iEAAc;AAC7B,+BAA+B,4EAAa;AAC5C;AACA,cAAc,uEAAe;AAC7B;AACA,mEAAmE,0FAAoB,UAAU,6DAAU,kBAAkB,gFAAsB;AACnJ,CAAC;AACD,oGAAgC;AAChC;AACA,IAAI,kEAAU,CAAC,0DAAS;AACxB,+BAA+B,4EAAa;AAC5C;AACA,cAAc,uEAAe;AAC7B;AACA,8DAA8D,0FAAoB,mBAAmB,gFAAsB;AAC3H,CAAC;AACD,oGAAgC;AAChC;AACA,IAAI,kEAAU,CAAC,0DAAS;AACxB,IAAI,kEAAU,CAAC,0EAAoB;AACnC,IAAI,kEAAU;AACd,+BAA+B,4EAAa;AAC5C;AACA,cAAc,uEAAe;AAC7B;AACA,iDAAiD,0FAAoB,UAAU,mEAAa;AAC5F,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnUD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACiE;AACQ;AACb;AACQ;AAC+C;AAClC;AACT;AACrB;AACmB;AACoD;AACtC;AACuE;AACtG;AACd;AAC2D;AACf;AACa;AAC7B;AAC8B;AACjG;AACA;AACA;AACA,kCAAkC,sEAAe;AACjD,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA,gCAAgC,8FAAgD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0FAA4C;AACtE;AACA;AACA;AACA;AACA,+BAA+B,6EAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ,qEAAwB;AAChC;AACA;AACA;AACA;AACA,gBAAgB,uEAAe;AAC/B,gBAAgB,uEAAsB;AACtC,gBAAgB,iEAAoB;AACpC;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,0FAAoB;AACnC;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAAe;AACjD,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA,gCAAgC,qGAAuD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6FAA+C;AAC5D;AACA;AACA,uDAAuD,QAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,iFAAwC,sCAAsC,iFAAa,EAAE,gFAAsB,QAAQ,sEAAiB;AAC9L;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC;AACA,mCAAmC,sEAAY;AAC/C;AACA;AACA;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,gGAAsC,EAAE,oFAA0B,EAAE,yGAA+C;AAChK;AACA,wBAAwB,0FAAkB,CAAC,2FAAiC,EAAE,yGAA+C;AAC7H;AACA,wBAAwB,kEAAkE;AAC1F;AACA,aAAa;AACb;AACA,sBAAsB,yGAA+C;AACrE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kDAAkD,mGAAqB;AACvE,qDAAqD,0FAAsB;AAC3E,4EAA4E,2EAAkC,4BAA4B,iFAAa,EAAE,gFAAsB;AAC/K;AACA,SAAS;AACT;AACA;AACA,oCAAoC,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,kHAAwD;AACjI;AACA,wBAAwB,0FAAkB,CAAC,2FAAiC,EAAE,kHAAwD;AACtI,yBAAyB,kEAAQ;AACjC;AACA,aAAa;AACb;AACA,sBAAsB,0FAAkB,CAAC,kHAAwD,EAAE,gGAAsC;AACzI;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,mGAAqB;AACnE;AACA;AACA;AACA,0BAA0B,wDAAK;AAC/B;AACA,aAAa;AACb,iDAAiD,0FAAsB;AACvE,wEAAwE,iFAAwC,oCAAoC,iFAAa,EAAE,gFAAsB;AACzL,SAAS;AACT;AACA;AACA,wFAA0B;AAC1B,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB;AACA;AACA,oGAAgC;AAChC,gCAAgC,sFAAkB;AAClD;AACA;AACA;AACA,wCAAwC,mFAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;ACzQD;AACA;AACA;AACA;AACmE;AAChB;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,gFAAqB,CAAC,6DAAU;AACxG;AACA;AACA,wEAAwE,oFAAyB,CAAC,6DAAU;AAC5G;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AAC6B;AACkC;AAC7C;AACN;AACsG;AACnF;AACR;AACmB;AACZ;AACI;AACuB;AACxB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sEAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,uEAAsB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,yEAAsB;AACjH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,gDAAgD,6DAAU;AACpF,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,8DAAQ;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,kFAAwB;AACvC,eAAe,yFAAkB;AACjC,eAAe,sFAAkB;AACjC,eAAe,mGAAqB;AACpC;AAC4B;AAC5B,qCAAqC,sEAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA,wBAAwB,iFAAgC;AACxD;AACA,sBAAsB,uEAAY,2BAA2B,0EAAmB;AAChF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA,wBAAwB,iFAAgC;AACxD;AACA,sBAAsB,uEAAY,+BAA+B,wEAAiB;AAClF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA,wBAAwB,qFAAoB;AAC5C,uBAAuB,6CAAY,EAAE,+DAA+D;AACpG;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA,wBAAwB,qFAAoB;AAC5C,uBAAuB,6CAAY,EAAE,mEAAmE;AACxG;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,+CAA+C,oFAAa;AAC5D,sBAAsB,0FAAgC;AACtD,mFAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxRD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACqC;AACE;AACa;AACyB;AACA;AAC1B;AACwL;AAChI;AACrD;AACsC;AAChB;AACX;AACT;AACuD;AAClD;AACwB;AACV;AACQ;AACI;AACwB;AACf;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA,QAAQ,0DAAY;AACpB;AACA;AACA;AACA;AACA;AACA,8BAA8B,+EAAiC;AAC/D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,+BAA+B,8FAAiB;AAChD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qCAAqC,aAAa;AAClD,oCAAoC,YAAY;AAChD,SAAS;AACT;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA,eAAe,4CAA4C;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0DAAY;AACxB;AACA;AACA;AACA;AACA,gBAAgB,0DAAY;AAC5B;AACA;AACA;AACA;AACA;AACA,gDAAgD,KAAK;AACrD,oBAAoB,0DAAY;AAChC;AACA;AACA;AACA,qCAAqC,mDAAK;AAC1C,2DAA2D,uBAAuB;AAClF;AACA;AACA;AACA;AACA;AACA,wCAAwC,wDAAU,iBAAiB,mDAAK;AACxE;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAa;AACrB;AACA,YAAY,wEAAe;AAC3B;AACA,yDAAyD,+DAA+D;AACxH;AACA;AACA;AACA;AACA,gBAAgB,0DAAY;AAC5B,+CAA+C,qEAAY,mBAAmB,GAAG,wBAAwB,IAAI,oBAAoB;AACjI,wCAAwC,qEAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,4BAA4B;AAC1E;AACA;AACA,wDAAwD,OAAO;AAC/D,uDAAuD,MAAM;AAC7D,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qFAAoB;AACrC,gCAAgC,6CAAY;AAC5C;AACA,iBAAiB,uFAAsB;AACvC,gCAAgC,6CAAY;AAC5C;AACA,iBAAiB,oFAAmB;AACpC,gCAAgC,6CAAY;AAC5C;AACA,iBAAiB,oFAAmB;AACpC,gCAAgC,6CAAY;AAC5C;AACA;AACA,wBAAwB,6CAAY,kBAAkB,EAAE,KAAK,EAAE;AAC/D;AACA;AACA;AACA,2BAA2B,YAAY,IAAI,UAAU;AACrD;AACA;AACA;AACA;AACA,kEAAkE,kEAAc;AAChF;AACA,uBAAuB,uDAAuD;AAC9E;AACA;AACA;AACA;AACA,kCAAkC,sEAAe;AACjD,kDAAkD,2DAAO;AACzD;AACA,yBAAyB,uFAAsB;AAC/C,gCAAgC,8DAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uFAAsB;AACrD;AACA;AACA,oCAAoC,oFAAmB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,2EAAuB;AACvE,kDAAkD,+EAA2B;AAC7E,SAAS,EAAE;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sHAA+B;AACvC,6CAA6C,qCAAqC;AAClF;AACA;AACA;AACA,qBAAqB,wDAAU,YAAY,mDAAK;AAChD;AACA;AACA,6CAA6C,kCAAkC,kCAAkC;AACjH;AACA;AACA;AACA,QAAQ,0DAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6CAAY,eAAe,EAAE,KAAK,EAAE;AACtD,kBAAkB,6CAAY,aAAa,EAAE,KAAK,EAAE;AACpD,0BAA0B,oEAAQ;AAClC;AACA,0CAA0C,kGAAsB,CAAC,0FAAyB,kBAAkB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,cAAc;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wEAAM;AAC7C;AACA,eAAe,iFAAa;AAC5B,eAAe,8EAAc;AAC7B,eAAe,8EAAY;AAC3B,eAAe,mGAAqB;AACpC,eAAe,0FAAkB;AACjC;AACkC;AAClC;AACA,mBAAmB,8EAAK,CAAC,0FAAqB,EAAE,sFAAiB;AACjE,qBAAqB,8EAAK,CAAC,4FAAuB,EAAE,wFAAmB;AACvE,kBAAkB,8EAAK,CAAC,yFAAoB,EAAE,qFAAgB;AACvD,oCAAoC,sFAAa,4CAA4C,4DAA4D,EAAE,6CAAY;AACvK,sCAAsC,sFAAa,8CAA8C,kEAAkE,EAAE,6CAAY;AACjL,mCAAmC,sFAAa,2CAA2C,yDAAyD,EAAE,6CAAY;AAClK,yCAAyC,sFAAa,uCAAuC,yBAAyB,8DAAW,iBAAiB,EAAE,6CAAY;AACvK,kGAA0B;AAC1B,kCAAkC,uFAAkB;AACpD;AACA,4DAA4D,UAAU,QAAQ,EAAE;AAChF,iFAAiF,UAAU,QAAQ,EAAE;AACrG;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClVD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6F;AAC3C;AACM;AACY;AACjB;AACO;AACI;AAC4B;AACD;AACzB;AACzD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAO;AACvC;AACA,+BAA+B,sEAAe;AAC9C;AACA;AACA,YAAY,0DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAS;AACnC,4BAA4B,qFAAoB,GAAG,uFAAsB,GAAG,oFAAmB;AAC/F,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,oEAAY,iBAAiB,sBAAsB,YAAY,gEAAO;AACxF;AACA;AACA;AACA;AACA,yBAAyB,0BAA0B;AACnD,wBAAwB,6DAAU;AAClC;AACA;AACA;AACA,gCAAgC,wDAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,4BAA4B;AAC1C,gBAAgB,yEAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gEAAO;AACzB;AACA,kBAAkB,uFAAsB;AACxC;AACA;AACA,kBAAkB,iFAA8B;AAChD;AACA;AACA;AACA;AACA;AACA,eAAe,+EAAc;AAC7B;AACsB;AACf,iCAAiC,gGAAe;AACvD;AACA;AACA;AACA,6BAA6B,kEAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+EAAc;AAC7B;AACA,+FAAiB;;;;;;;;;;;;;;;;;;;;;;;;;ACvLjB;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACkD;AACC;AACmB;AACG;AACI;AACK;AACD;AACtB;AACC;AACrD;AACP;AACA,4BAA4B,iFAAmB;AAC/C;AACA;AACA,iCAAiC,4EAAc;AAC/C;AACA;AACA;AACA,8BAA8B,kEAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,iFAA8B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mGAAgC;AAChC;AACA;AACA,QAAQ,iEAAU,CAAC,0DAAS;AAC5B,mCAAmC,2EAAa;AAChD;AACA,oDAAoD,gFAAsB;AAC1E;AACA,6CAA6C,kFAAiB;AAC9D;AACA,qFAAqF,gFAAsB;AAC3G;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnFD;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AAC8D;AAC4B;AAC9B;AACH;AACK;AACyB;AACN;AACnB;AACX;AACmB;AACf;AACa;AACd;AACgB;AACf;AAChB;AAC4C;AACA;AACU;AACN;AACoF;AACzE;AACX;AACtB;AACD;AACd;AAC8C;AACrC;AACiC;AAC5F,6FAA2B,CAAC,sFAAoB;AAChD,aAAa,0FAAwB;AACrC,WAAW,8CAAY;AACvB;AACA;AACA,CAAC;AACD,qCAAqC,sEAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gGAAoB;AACrE,2CAA2C,sFAAkB;AAC7D,6CAA6C,0FAAsB;AACnE,8CAA8C,2EAAwB;AACtE;AACA;AACA,wBAAwB,6FAAkC;AAC1D,wBAAwB,uEAAgB;AACxC;AACA;AACA;AACA,YAAY,oEAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iFAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kGAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wEAAqB;AACpD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB,+BAA+B,EAAE;AACnH;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,oFAAwB;AACjD;AACA,2DAA2D,8EAAuB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,uBAAuB,iEAAe,OAAO,yEAAwB,0BAA0B,8CAAY;AAC3G,SAAS;AACT;AACA;AACA;AACA,cAAc,8CAAY,4CAA4C,EAAE;AACxE,cAAc,8CAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2DAAK,KAAK,mEAAY;AAC/C;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,iGAAuC,EAAE,4GAAkD;AAC5I;AACA,4BAA4B,2FAAiC;AAC7D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B,sFAAoB;AAChD;AACA;AACA,2BAA2B,8CAAY,EAAE,8DAA8D;AACvG;AACA,aAAa;AACb,YAAY,yGAAqC;AACjD;AACA,KAAK;AACL;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,iGAAuC,EAAE,4GAAkD;AAC5I;AACA,4BAA4B,2FAAiC;AAC7D,6BAA6B,kEAAQ;AACrC;AACA;AACA,aAAa;AACb,YAAY,yGAAqC;AACjD;AACA,KAAK;AACL;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,iGAAuC,EAAE,+EAA2B,EAAE,4GAAkD;AACzK;AACA,4BAA4B,2FAAiC;AAC7D;AACA,4BAA4B,gEAAgE;AAC5F;AACA,iBAAiB;AACjB;AACA,4BAA4B,0FAAwB;AACpD;AACA;AACA;AACA,aAAa;AACb,YAAY,yGAAqC;AACjD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iEAAe,OAAO,0EAAyB,0BAA0B,8CAAY;AAC5G,SAAS;AACT;AACA;AACA;AACA,cAAc,8CAAY,kDAAkD,EAAE;AAC9E,cAAc,8CAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,kGAAwC,EAAE,4GAAkD;AAC7I;AACA;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B,sFAAoB;AAChD;AACA;AACA,2BAA2B,8CAAY,EAAE,+DAA+D;AACxG,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,kBAAkB,8CAAY,kDAAkD,EAAE;AAClF,kBAAkB,8CAAY;AAC9B;AACA,KAAK;AACL;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,kGAAwC,EAAE,+EAA2B,EAAE,4GAAkD;AACtK;AACA,wBAAwB,0FAAwB;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,uBAAuB,iEAAe,OAAO,6EAA4B,0BAA0B,8CAAY;AAC/G,SAAS;AACT;AACA;AACA;AACA,cAAc,8CAAY,oEAAoE,EAAE;AAChG,cAAc,8CAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,qGAA2C,EAAE,4GAAkD;AAChJ;AACA,4BAA4B,2FAAiC;AAC7D;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B,sFAAoB;AAChD;AACA;AACA,2BAA2B,8CAAY,EAAE,kEAAkE;AAC3G;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,qGAA2C,EAAE,+EAA2B,EAAE,4GAAkD;AAC7K;AACA,4BAA4B,0FAAwB;AACpD;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iEAAe,OAAO,6EAA4B,0BAA0B,8CAAY;AAC/G,SAAS;AACT;AACA;AACA;AACA,cAAc,8CAAY,mEAAmE,EAAE;AAC/F,cAAc,8CAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,qGAA2C,EAAE,4GAAkD;AAChJ;AACA,4BAA4B,2FAAiC;AAC7D;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B,sFAAoB;AAChD;AACA;AACA,2BAA2B,8CAAY,EAAE,kEAAkE;AAC3G,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,8CAAY;AACnC;AACA,8BAA8B,0FAAkB,CAAC,qGAA2C,EAAE,+EAA2B,EAAE,4GAAkD;AAC7K;AACA,4BAA4B,2FAAiC;AAC7D;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B,0FAAwB;AACpD;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,8CAAY,6CAA6C,EAAE;AACzE,cAAc,8CAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,gGAAsC,EAAE,+EAA2B,EAAE,4GAAkD;AACpK;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,wBAAwB,sFAAoB;AAC5C;AACA;AACA,uBAAuB,8CAAY,EAAE,6DAA6D;AAClG,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,uBAAuB,iEAAe,OAAO,wEAAuB,gCAAgC,8CAAY;AAChH,SAAS;AACT;AACA,CAAC;AACD,kFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,gGAAsC,EAAE,+EAA2B,EAAE,4GAAkD;AACpK;AACA,wBAAwB,0FAAwB;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,iEAAe,OAAO,wEAAuB,iCAAiC,8CAAY;AACjH,SAAS;AACT;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,+EAA2B,EAAE,4GAAkD;AAC5H,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,uBAAuB,iEAAe,mBAAmB,8CAAY;AACrE,SAAS;AACT;AACA;AACA,uBAAuB,8CAAY,uCAAuC,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW;AACzC;AACA,oGAAgC;AAChC;AACA;AACA;AACA;AACA,aAAa,8EAA8E,qDAAG,EAAE;AAChG,aAAa,8EAA8E,0EAAiC,EAAE;AAC9H,aAAa,8EAA8E;AAC3F,aAAa,0HAA0H;AACvI,aAAa,sGAAsG;AACnH;AACA,KAAK;AACL;AACA,QAAQ,kEAAU,CAAC,2DAAS;AAC5B,QAAQ,kEAAU,CAAC,0EAAiC;AACpD,QAAQ,kEAAU;AAClB,QAAQ,kEAAU;AAClB,QAAQ,kEAAU;AAClB,2CAA2C,sFAAkB;AAC7D,2DAA2D,WAAW;AACtE,YAAY,uEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,6BAA6B,mGAAqB;AAClD,aAAa;AACb;AACA,KAAK;AACL,CAAC;AACD,oGAAgC;AAChC;AACA;AACA;AACA;AACA,aAAa,8EAA8E,qDAAG,EAAE;AAChG,aAAa,8EAA8E,0EAAiC,EAAE;AAC9H,aAAa,8EAA8E;AAC3F,aAAa,0HAA0H;AACvI;AACA,KAAK;AACL;AACA,qBAAqB,mFAAe;AACpC,KAAK;AACL,CAAC;AACD;AACA;AACA,oGAAgC;AAChC;AACA;AACA,QAAQ,kEAAU,CAAC,2DAAS;AAC5B,QAAQ,kEAAU,CAAC,0EAAiC;AACpD,+CAA+C,sFAAkB;AACjE,iDAAiD,WAAW;AAC5D,iBAAiB,uEAAY;AAC7B;AACA;AACA,+BAA+B,oFAAwB;AACvD;AACA;AACA;AACA,+BAA+B,8EAAuB,UAAU,wEAAuB,qBAAqB,mEAA0B,iDAAiD,iEAAe,aAAa,8CAAY;AAC/N,8BAA8B,wDAAK;AACnC;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA,yGAAqC;AACrC;;;;;;;;;;;;;;;;;;;;;;;;AC7pBA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACyE;AACE;AACS;AACuG;AAC3L;AACA;AACA;AACA;AACA;AACA,YAAY,iFAAyB;AACrC;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP,6CAA6C,wEAA0B;AACvE;AACA,KAAK;AACL;AACO;AACP,6CAA6C,yEAA2B;AACxE;AACA,KAAK;AACL;AACO;AACP,6CAA6C,4EAA8B;AAC3E;AACA,KAAK;AACL;AACO;AACP,6CAA6C,4EAA8B;AAC3E;AACA,KAAK;AACL;AACO;AACP,6CAA6C,uEAAyB;AACtE,0EAA0E,2BAA2B;AACrG;AACA;AACA;AACA,4FAA4F,4BAA4B;AACxH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,6FAA+B,8FAA8F,gFAAsB;AACnJ,6FAA+B,gGAAgG,gFAAsB;AACrJ,6FAA+B,sGAAsG,gFAAsB;AAC3J,6FAA+B,sGAAsG,gFAAsB;AAC3J,6FAA+B,mGAAmG,gFAAsB;;;;;;;;;;;;;;;;;;;;;;AC5ExJ;AACA;AACA;AACA;AACkE;AACP;AACK;AAChE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAoB;AAChC;AACA;AACA;AACA;AACA,QAAQ,iEAAoB;AAC5B;AACA;AACA;AACA;AACO,+BAA+B,iEAAU;AAChD;AACA;AACA,gEAAgE,0DAAO;AACvE;AACA,6CAA6C,0DAAO;AACpD;AACA,4CAA4C,0DAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACwC;AACE;AACiC;AACL;AACE;AACD;AACjB;AACgB;AACY;AACtB;AACW;AACS;AACe;AACC;AAC7B;AACb;AACG;AACG;AACW;AACd;AACiC;AAC1F;AACA;AACA;AACA;AACA,4BAA4B,uEAAe;AAC3C,uCAAuC,uEAAe;AACtD;AACA;AACA;AACA;AACA,8BAA8B,mEAAgB;AAC9C;AACA;AACA,0DAA0D,2EAAmB;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,oBAAoB,yEAAiB;AACrC,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAW;AACnC;AACA;AACA;AACA;AACA,+BAA+B,8EAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,wDAAK,kFAAkF,uEAAc,cAAc,6CAAY,oCAAoC,EAAE;AAC5M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU,kBAAkB,EAAE;AACzD,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAU;AAC9C;AACA;AACA,wCAAwC,wDAAK;AAC7C;AACA;AACA,sDAAsD,uEAAc;AACpE;AACA,iBAAiB;AACjB;AACA,SAAS,kBAAkB,qEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,4CAA4C;AACjG;AACA;AACA;AACA,oGAAoG,EAAE,eAAe;AACrH;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,+BAA+B;AAC7C;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;AACA;AACA;AACA,iEAAiE,+DAAQ;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wDAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wDAAK;AAChC;AACA,iEAAiE,+DAAQ;AACzE;AACA,mBAAmB,wDAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4EAA8B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wEAAwB;AACvC;AACA;AACA;AACA;AACA;AACA,+BAA+B,+DAAgB,EAAE,qDAAqD,GAAG,wDAAwD;AACjK;AACA,SAAS;AACT;AACA;AACA,+CAA+C,0FAAkB;AACjE,eAAe,qFAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mFAAiB;AAChC,eAAe,yEAAY;AAC3B;AACsD;AACtD,wFAA0B;AAC1B,mGAA0B;AAC1B,gDAAgD,gGAA0B;AAC1E;AACA,iEAAiE,UAAU,qBAAqB,YAAY,EAAE;AAC9G;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3SD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC0C;AAC4B;AACU;AACI;AACe;AACsB;AACtB;AAClB;AAC5B;AACe;AACd;AACM;AACoC;AACrB;AACF;AACqC;AACV;AACrC;AACqB;AAC7E,sCAAsC,oFAAa;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,oBAAoB,EAAE;AACjG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qBAAqB,qEAAmB,yDAAyD;AACjG,iEAAiE,iEAAe;AAChF,8BAA8B,6CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA,kDAAkD,6CAAY,kBAAkB,EAAE,GAAG,EAAE;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+DAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAU;AAChC;AACA;AACA,sBAAsB;AACtB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,+EAAuB;AACjE;AACA,SAAS;AACT;AACA,YAAY,yEAAiB;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B;AACA;AACA,sBAAsB;AACtB,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,yFAAkB;AACjC,eAAe,sFAAkB;AACjC,eAAe,gGAAoB;AACnC,eAAe,kGAAqB;AACpC,eAAe,gFAAe;AAC9B,eAAe,kGAAqB;AACpC;AACgC;AAChC;AACA,wBAAwB,sEAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAoD;AACpD;AACA;AACA,aAAa,mEAAQ;AACrB,UAAU,wFAAiB,4BAA4B,4EAAwB;AAC/E;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD,qIAAoD;AACpD;AACA;AACA;AACA;AACA,UAAU,wFAAiB,4BAA4B,4EAAwB;AAC/E;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD,qIAAoD;AACpD;AACA;AACA;AACA;AACA,UAAU,wFAAiB,4BAA4B,4EAAwB;AAC/E;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;AACD;AACA,yGAAqC;AACrC,yGAAqC;AACrC;AACA,yGAAqC;AACrC,oGAAgC;AAChC,2HAA0C;AAC1C;AACA;AACA;AACA;AACA,UAAU,yFAAkB,CAAC,4EAAwB,EAAE,yFAAkB;AACzE,CAAC;AACD,2HAA0C;AAC1C;AACA;AACA;AACA;AACA,UAAU,yFAAkB,4BAA4B,yFAAkB;AAC1E,CAAC;AACD,qIAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,yFAAkB,4BAA4B,gGAA4B;AACpF;AACA;AACA,yCAAyC,gFAAY;AACrD;AACA,wDAAwD,6DAAY;AACpE;AACA;AACA;AACA,CAAC;AACD,qIAAoD;AACpD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,yFAAkB,4BAA4B,gGAA4B;AACpF;AACA;AACA,yCAAyC,gFAAY;AACrD;AACA,wDAAwD,6DAAY;AACpE;AACA;AACA;AACA,CAAC;AACD,oGAAgC;AAChC;AACA,qCAAqC,gFAAY;AACjD;AACA,oDAAoD,6DAAY;AAChE;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpYD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACsF;AACN;AACD;AACG;AACP;AACO;AACF;AACzB;AACT;AACmB;AACQ;AACP;AACiC;AACT;AACX;AACqB;AACpG;AACA;AACA;AACA;AACA;AACA,+BAA+B,gEAAe;AAC9C;AACA;AACA,+BAA+B,+DAAc;AAC7C;AACA;AACA;AACA;AACA;AACA,+BAA+B,gEAAe;AAC9C;AACA;AACA,+BAA+B,+DAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,kFAAiB;AAChC;AACsB;AACtB;AACO;AACP;AACA;AACA;AACA;AACA,+BAA+B,+DAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oEAAQ;AACvB;AACA;AACA;AACA,eAAe,0FAAkB;AACjC;AACwC;AACjC;AACP;AACA,kCAAkC,6DAAY;AAC9C;AACA;AACA;AACA,kEAAkE,kEAAU;AAC5E;AACA;AACA;AACA;AACA;AACA,uCAAuC,8EAAS,UAAU,0BAA0B;AACpF,yBAAyB,iFAAU,CAAC,wDAAU,SAAS,mDAAK;AAC5D,uBAAuB,mFAAiB;AACxC;AACA;AACA;AACA,qBAAqB,mEAAO;AAC5B,2BAA2B,oEAAY,mDAAmD,iBAAiB,IAAI,0DAA0D;AACzK;AACA;AACA;AACA,sCAAsC,iDAAQ,sBAAsB,EAAE;AACtE;AACA;AACA,sCAAsC,iDAAQ,qBAAqB,EAAE;AACrE;AACA;AACA;AACA;AACA,eAAe,0EAAa;AAC5B,eAAe,iFAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uEAAa;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC;AACkC;AAClC;AACA;AACA;AACA;AACA,yBAAyB,oGAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oEAAQ,cAAc,GAAG,kCAAkC,GAAG,8BAA8B;AAC1H;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC,0BAA0B,0EAAoB;AAC9C;AACA,sCAAsC,uEAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,iDAAQ;AACvB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzMA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACgC;AACuB;AACE;AACS;AACc;AACnB;AACuB;AACW;AACzC;AACiC;AACP;AACgG;AACtI;AACyD;AACxB;AACe;AACA;AACoB;AACvD;AACc;AACkB;AACH;AACM;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAAe;AACjD,sCAAsC,sEAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oEAAiB;AACjC;AACA;AACA,gBAAgB,2EAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uFAA+B;AACtE;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0FAAsB;AACnD;AACA;AACA;AACA;AACA,oDAAoD,kEAAuB;AAC3E;AACA,uBAAuB,4EAA4E;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sEAAe;AACrD,kCAAkC,sEAAe;AACjD,yCAAyC,0DAAO;AAChD;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA,2CAA2C,kEAAuB,KAAK,oEAAiB;AACxF;AACA;AACA;AACA,kDAAkD,2EAAgC,KAAK,oEAAiB;AACxG,gDAAgD,2EAAgC;AAChF,kDAAkD,+EAAoC;AACtF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iCAAiC,wDAAU,mBAAmB,mDAAK;AACnE,QAAQ,sDAAQ;AAChB,8BAA8B,+EAAS,oBAAoB,kCAAkC;AAC7F;AACA,iCAAiC,wDAAU,mBAAmB,mDAAK;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,iGAAwB;AAC1F,QAAQ,sDAAQ;AAChB,+CAA+C,iEAAS,CAAC,8CAAY,mDAAmD,0FAAkC;AAC1J;AACA,8BAA8B,wDAAU,mBAAmB,mDAAK;AAChE;AACA;AACA,uCAAuC,sEAAqB;AAC5D,uFAAuF,6EAA4B;AACnH,kCAAkC,iEAAgB;AAClD;AACA;AACA;AACA,gCAAgC,6EAAkC;AAClE;AACA;AACA;AACA;AACA,oCAAoC,+EAAiC;AACrE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4HAA4H,yDAAQ;AACpI,sDAAsD,uEAAsB;AAC5E,sDAAsD,qEAAoB;AAC1E,qDAAqD,2DAAU;AAC/D;AACA;AACA,yBAAyB,6DAAU;AACnC;AACA;AACA;AACA;AACA,sCAAsC,kCAAkC;AACxE;AACA,SAAS,EAAE,uFAAiB;AAC5B;AACA,yBAAyB,6DAAU;AACnC;AACA;AACA;AACA;AACA,sDAAsD,iBAAiB;AACvE,qDAAqD,MAAM;AAC3D;AACA;AACA,SAAS,EAAE,uFAAiB;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mCAAmC,8DAAY;AAC/C;AACA;AACA;AACA,iDAAiD,gCAAgC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ,sDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8CAAY;AAC3D,YAAY,sDAAQ;AACpB;AACA;AACA,QAAQ,sDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wCAAwC;AAClE;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,QAAQ,sDAAQ;AAChB,QAAQ,sDAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8DAAY;AAC3C;AACA;AACA,oCAAoC,gEAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,mDAAmD;AAChG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qEAAgB;AACzD,8BAA8B,8EAAmB,4CAA4C,kEAAO;AACpG;AACA;AACA,8BAA8B,8CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAO;AACnB;AACA;AACA;AACA;AACA,4BAA4B,6DAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,kFAAa;AAC5B,eAAe,mFAAiB;AAChC,eAAe,mGAAqB;AACpC,eAAe,oEAAyB;AACxC,eAAe,2EAAa;AAC5B,eAAe,oFAAgB;AAC/B,eAAe,0FAAkB;AACjC;AAC2B;AAC3B;AACA,mGAA0B;AAC1B,mDAAmD,iFAAsC;AACzF;AACA,uGAAuG,qBAAqB,yBAAyB,EAAE;AACvJ;AACA,mDAAmD,gFAAqC;AACxF;AACA,iGAAiG,qBAAqB,yBAAyB,EAAE;AACjJ;AACA,oDAAoD,sFAA2C;AAC/F;AACA,iGAAiG,qBAAqB,0BAA0B,wBAAwB,EAAE;AAC1K;AACA,qCAAqC,0FAAoB;AACzD;AACA,uGAAuG,sBAAsB,WAAW,wBAAwB,EAAE;AAClK;AACA,6CAA6C,6EAAkC;AAC/E;AACA,4EAA4E,qBAAqB,mBAAmB,EAAE;AACtH;AACA,kDAAkD,kFAAuC;AACzF;AACA,4EAA4E,UAAU,wBAAwB,EAAE;AAChH;AACA,iDAAiD,iFAAsC;AACvF;AACA,4FAA4F,UAAU,uBAAuB,EAAE;AAC/H;AACA,qDAAqD,sFAA2C;AAChG;AACA,+JAA+J,qBAAqB,2BAA2B,EAAE;AACjN;AACA,qDAAqD,sFAA2C;AAChG;AACA,+JAA+J,UAAU,0BAA0B,YAAY,EAAE;AACjN;AACA,4CAA4C,4EAAiC;AAC7E;AACA;AACA,iGAAiG;AACjG,kCAAkC,kBAAkB;AACpD,cAAc;AACd;AACA,kDAAkD,kFAAuC;AACzF;AACA,kGAAkG;AAClG,kCAAkC,wBAAwB;AAC1D,cAAc;AACd;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3hBD;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2C;AACa;AACa;AACQ;AAClB;AACY;AACpB;AACO;AACS;AAC5D;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gFAAuB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iDAAQ,kCAAkC,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,mEAAQ;AAChG;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAyD;AACxE,iDAAiD,uDAAuD;AACxG,gCAAgC,wDAAK;AACrC,+BAA+B,wDAAK;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,4DAAW;AACxC;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAQ,wCAAwC,EAAE,aAAa,EAAE,GAAG,mEAAQ;AAC/F;AACA;AACA,mBAAmB,iDAAQ,4BAA4B,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,mEAAQ;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yEAAiB;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA,8CAA8C,0DAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAQ;AAC3B;AACA;AACA,mBAAmB,iDAAQ,sCAAsC,EAAE;AACnE;AACA;AACA,mBAAmB,iDAAQ,2BAA2B,EAAE,aAAa,EAAE;AACvE;AACA;AACA,mBAAmB,iDAAQ,2BAA2B,EAAE,aAAa,EAAE;AACvE;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAA0B;AACrD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yEAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qEAAc,kBAAkB,iFAA8B;AAC7E;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClPA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACsG;AACZ;AACD;AACQ;AACR;AACR;AAC9B;AAC8C;AACzC;AACb;AAC4C;AACM;AACjC;AACrD,0BAA0B,oFAAa;AACvC,iCAAiC,gGAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mEAAO;AAC3B;AACA,mDAAmD,yEAAsB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,6BAA6B,6EAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wEAAqB;AAChD;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA,cAAc,iDAAQ,yBAAyB,EAAE,KAAK,EAAE,GAAG,EAAE;AAC7D,cAAc,iDAAQ,sBAAsB,EAAE,KAAK,EAAE;AACrD;AACA;AACA;AACA;AACA,eAAe,yFAAkB;AACjC,eAAe,sFAAkB;AACjC,eAAe,gGAAoB;AACnC,eAAe,0FAAkB;AACjC;AACA,+FAAiB;AACjB,mFAAqB,mBAAmB,uEAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,CAAC;AACD,oIAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C,gCAAgC,0DAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA,mCAAmC,6EAAkB,+DAA+D,SAAS,gEAAgE,SAAS;AACtM;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA,eAAe,sFAAkB;AACjC;;;;;;;;;;;;;;;;;;;;;AC9KA;AACA;AACA;AACA;AAC0D;AACe;AACE;AACS;AACtB;AACvD;AACP,qBAAqB,2EAA6B;AAClD;AACA;AACA;AACA,SAAS;AACT,YAAY,iFAAyB;AACrC;AACA,SAAS;AACT,KAAK;AACL,sCAAsC,4DAAQ;AAC9C;AACA,6FAA+B,yEAAyE,gFAAsB;AAC9H;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuC;AACqB;AAC2B;AAC4B;AAChE;AACmB;AACF;AACH;AACJ;AACc;AAC0J;AAC1H;AACb;AACP;AACqB;AACrB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sEAAe;AAC5C,kCAAkC,wEAAiB;AACnD,gCAAgC,wEAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gCAAgC,+FAAqC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,6EAA0B;AAC5G;AACA;AACA;AACA;AACA,mFAAmF,yEAAwB;AAC3G;AACA;AACA;AACA,mFAAmF,yEAAwB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yGAAyG,6EAA0B;AACnI;AACA;AACA;AACA,0GAA0G,yEAAwB;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0EAAuB;AAC/D,sCAAsC,sEAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6EAAc;AAC7B,eAAe,yEAAY;AAC3B,eAAe,oGAAyB;AACxC,eAAe,0FAAkB;AACjC,eAAe,kFAAa;AAC5B,eAAe,0FAAkB;AACjC;AACgC;AAChC,8BAA8B,sEAAY;AAC1C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAK;AAC/B;AACA;AACA;AACA;AACA,+CAA+C,sEAAY;AAC3D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAK;AAC/B,qBAAqB,yHAA8C;AACnE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB;AACA,mGAA0B;AAC1B,qDAAqD,0FAAoB;AACzE;AACA,2DAA2D,qBAAqB,2BAA2B,EAAE;AAC7G;AACA,2CAA2C,2FAAqB;AAChE;AACA,yDAAyD,qBAAqB,iBAAiB,EAAE;AACjG;AACA,uCAAuC,uFAAiB;AACxD;AACA,yDAAyD,qBAAqB,aAAa,EAAE;AAC7F,kGAAkG,yBAAyB,8BAA8B,EAAE;AAC3J,4DAA4D,yBAAyB,8BAA8B,EAAE;AACrH,4DAA4D,4BAA4B,8BAA8B,EAAE;AACxH;AACA,gCAAgC,wFAAkB;AAClD;AACA,2DAA2D,UAAU,MAAM,EAAE;AAC7E;AACA,2CAA2C,2FAAqB;AAChE;AACA,yDAAyD,UAAU,iBAAiB,EAAE;AACtF;AACA,6CAA6C,oGAA8B;AAC3E;AACA,6EAA6E,qBAAqB,mBAAmB,EAAE;AACvH;AACA,0CAA0C,6FAAuB;AACjE;AACA,8DAA8D,qBAAqB,gBAAgB,EAAE;AACrG;AACA,CAAC;;;;;;;;;;;;;;;;;;AC7SD;AACA;AACA;AACA;AAC0F;AACvB;AAC5D;AACP;AACA;AACA;AACA;AACA,uCAAuC,mEAAgB;AACvD,wCAAwC,mEAAgB;AACxD,4CAA4C,mEAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8EAAuB;AACnE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AClIA;AACA;AACA;AACA;AACoD;AACQ;AACmC;AACxF,iCAAiC,8DAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,8EAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wFAAiB;AAChC;AACA;AACA;AACA,eAAe,uBAAuB;AACtC,wDAAwD,SAAS;AACjE,0DAA0D,WAAW;AACrE,yDAAyD,OAAO;AAChE,wDAAwD,yDAAyD;AACjH;AACA;AACO,+BAA+B,8DAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6DAA6D;AACnG,qCAAqC,6BAA6B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9LA;AACA;AACA;AACA;AACuC;AACa;AACqB;AACb;AACqD;AACQ;AAChE;AACN;AACsB;AACW;AACpB;AACA;AACM;AACE;AAC/B;AACY;AACE;AACY;AACyB;AACR;AACM;AAC7B;AACM;AACW;AACC;AACP;AACX;AAC4B;AACjC;AAC6B;AACZ;AACzE,UAAU,mDAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAyB;AACtC;AACA;AACA,eAAe,uDAAQ,YAAY,8DAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6EAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wDAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA,oBAAoB,kFAAqB;AACzC;AACA;AACA,0DAA0D,gEAAO;AACjE,wBAAwB;AACxB;AACA,SAAS;AACT,eAAe,iEAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAc,cAAc,6CAAY;AACnE;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU,0EAAuB;AAC9C;AACO,sCAAsC,iEAAkB;AAC/D,qIAAqI,iFAAiB;AACtJ;AACA;AACA;AACA;AACA,mDAAmD,wEAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+DAAc;AACjD,uBAAuB,+EAAiC,oBAAoB,iEAAmB;AAC/F;AACA,gBAAgB,0DAAY;AAC5B;AACA,SAAS;AACT,uBAAuB,+EAAiC,oBAAoB,gEAAkB;AAC9F,YAAY,6DAAe;AAC3B,SAAS;AACT;AACA;AACA,SAAS;AACT,uBAAuB,8EAAgC;AACvD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,6DAAU;AAC3D;AACA;AACA;AACA,yCAAyC,sEAAe;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,kEAAe,8BAA8B,6DAAU;AACrG;AACA;AACA,uBAAuB,0BAA0B;AACjD,iCAAiC,uDAAI;AACrC,kCAAkC,wDAAK;AACvC;AACA;AACA;AACA;AACA,gCAAgC,wDAAK;AACrC,iCAAiC;AACjC;AACA,kCAAkC,+EAAgB;AAClD,mCAAmC,iFAAiB;AACpD,gBAAgB,6EAAqB,uCAAuC,gFAAsB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wDAAK;AAChD;AACA;AACA;AACA,0CAA0C,mFAAmF;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6EAAqB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gBAAgB,gFAAsB;AAC/D;AACA,yBAAyB;AACzB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,kDAAkD,6EAAkB;AACpE,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kFAAqB;AAClE;AACA;AACA,qDAAqD,wDAAU;AAC/D,sEAAsE,4EAAgB;AACtF;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA,4HAA4H,wFAAsB;AAClJ;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,8BAA8B,wDAAU;AACxC,eAAe,4CAA4C;AAC3D;AACA,+BAA+B,wDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,wDAAU;AACpD;AACA;AACA,iCAAiC,wDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wDAAU;AAC9C;AACA,uCAAuC,wDAAU;AACjD;AACA;AACA;AACA;AACA,uCAAuC,wDAAU;AACjD;AACA;AACA,+DAA+D,OAAO,GAAG,KAAK,2BAA2B,KAAK;AAC9G;AACA;AACA,YAAY,wEAAe;AAC3B,wBAAwB,kDAAkD;AAC1E,6CAA6C,wDAAU;AACvD;AACA,0BAA0B,wDAAU;AACpC,iCAAiC,oEAAQ,WAAW,GAAG,gBAAgB,IAAI,YAAY;AACvF;AACA;AACA;AACA;AACA;AACA,gEAAgE,cAAc,gBAAgB,GAAG,YAAY,GAAG,IAAI,wBAAwB,QAAQ,sEAAiB;AACrK;AACA;AACA,uCAAuC,wDAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C,+BAA+B,wDAAU;AACzC,4CAA4C,sFAAoB,oCAAoC,wFAAsB,oCAAoC,qFAAmB;AACjL;AACA,uBAAuB,6CAAY;AACnC,2BAA2B,yEAAmB;AAC9C;AACA;AACA,oBAAoB,0EAAoB;AACxC;AACA;AACA,aAAa;AACb;AACA;AACA,+CAA+C,wDAAU;AACzD;AACA;AACA;AACA,qDAAqD,6CAAY;AACjE,4BAA4B,uEAAY;AACxC;AACA,4BAA4B,uEAAY;AACxC;AACA;AACA;AACA;AACA;AACA,6DAA6D,6CAAY;AACzE;AACA;AACA;AACA;AACA,gCAAgC,uEAAY;AAC5C;AACA;AACA;AACA,iBAAiB;AACjB;AACA,2BAA2B,6CAAY;AACvC,+BAA+B,iFAAiB;AAChD;AACA;AACA,2CAA2C,sFAAsB;AACjE,gDAAgD,wEAA0B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,+EAAuB;AACtC,mBAAmB,0EAAc,8BAA8B,wDAAK,+GAA+G,iFAAa;AAChM,SAAS;AACT;AACA;AACA;AACA,8CAA8C,uFAA+B;AAC7E;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA,mBAAmB,qFAAmB,0BAA0B,qFAAmB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,gFAAmB;AAChC;AACA;AACA;AACA;AACA;AACA,mGAA0B;AAC1B,kCAAkC,wFAAkB;AACpD;AACA,iFAAiF,UAAU,QAAQ,EAAE;AACrG;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AC9hBD;AACA;AACA;AACA;AACiD;AAC2B;AACR;AACf;AACA;AACc;AACW;AACrB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kFAAqB;AACtD;AACA;AACA,2BAA2B,+DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oCAAoC,8DAAgB;AAC3D,qDAAqD,gFAAiB;AACtE;AACA,sDAAsD,sEAAe;AACrE;AACA;AACA,oDAAoD,2EAAgB;AACpE;AACA,mCAAmC,8DAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAC;AAClC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtHA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuC;AACY;AACQ;AACW;AAC6C;AAC/B;AACjB;AACH;AAC4B;AACR;AACX;AACQ;AACd;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,qEAAW;AACrC;AACA;AACA;AACA;AACA,8BAA8B,+EAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gEAAS;AACzC;AACA;AACA,gCAAgC,4EAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qCAAqC,+DAAO;AAC5C,+HAA+H,sEAAiB;AAChJ,SAAS,QAAQ,sEAAiB;AAClC;AACA;AACA;AACA,sCAAsC,wFAA+B;AACrE;AACA,CAAC;AACD;AACA,eAAe,yFAAoB;AACnC;AACA,+BAA+B,sEAAY;AAC3C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,sEAAY;AAC7C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kGAA0B;AAC1B,kCAAkC,yFAAwB;AAC1D;AACA,mEAAmE,sBAAsB,QAAQ,EAAE;AACnG;AACA,CAAC;;;;;;;;;;;;;;;;;AC/JD;AACA;AACA;AACA;AAC2D;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA,mBAAmB,gEAAS;AAC5B;AACA;;;;;;;;;;;;;;;;;ACvBA;AACA;AACA;AACA;AACO;AACP;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACuC;AAC6B;AACT;AACwD;AAC9C;AACF;AAChB;AACQ;AACW;AACV;AACwC;AAC9B;AACtB;AACuC;AAChF;AACP;AACA;AACA;AACA;AACA,2BAA2B,8HAAiD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA,eAAe,sFAAwB;AACvC;AACA;AACA;AACA,eAAe,wFAA0B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yEAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gFAAqB,KAAK,gEAAS,kEAAkE,sFAA8B;AAChK;AACA;AACA;AACA,uBAAuB,yEAA4B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6BAA6B;AACvE;AACA,6BAA6B,yEAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gFAAqB,KAAK,gEAAS,wDAAwD,sFAA8B;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wCAAwC,sEAAY;AAC3D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO,sCAAsC,sEAAY;AACzD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACO,0CAA0C,sEAAY;AAC7D;AACA;AACA;AACA;AACA;AACA,+CAA+C,0FAAkB;AACjE,0CAA0C,4EAAa;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,6CAAY;AAClE,SAAS;AACT;AACA;AACA;AACA,2CAA2C,cAAc,6CAAY,EAAE,qEAAqE,0EAA0E;AACtN;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACO,gCAAgC,sEAAY;AACnD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA,0CAA0C,4EAAa;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,kCAAkC,sEAAY;AACrD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,0CAA0C,sEAAY;AAC7D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6DAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,iCAAiC,sEAAe;AAChD,+BAA+B,sEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,QAAQ;AAC9D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;AACA,uBAAuB,sFAAwB;AAC/C,aAAa;AACb;AACA,uBAAuB,wFAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+HAAkD;AACtF;AACA,qCAAqC,yEAA4B;AACjE,kCAAkC,yDAAuB;AACzD,kCAAkC,yDAAuB;AACzD;AACA,oCAAoC,4DAA0B;AAC9D;AACA,mCAAmC,wDAAK;AACxC;AACA,qBAAqB;AACrB;AACA;AACA;AACA,yCAAyC,4HAA+C;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+HAAkD;AACvF;AACA,8CAA8C,yDAAuB;AACrE,8CAA8C,yDAAuB,CAAC,yEAA4B;AAClG;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA,6CAA6C,yEAA4B;AACzE,gDAAgD,yDAAuB;AACvE;AACA,wCAAwC,4DAA0B;AAClE;AACA;AACA,2CAA2C,wDAAK;AAChD;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA,8DAA8D,yBAAyB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wDAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;AC7jBpB;AACA;AACA;AACA;AACmD;AACQ;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wDAAK;AAC9C;AACA;AACA,yCAAyC,wDAAK;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oFAA6B;AAClD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AACuC;AACqB;AACmB;AACQ;AACuD;AACvC;AACtB;AACd;AACV;AACN;AACQ;AACW;AACb;AACA;AACA;AACY;AACrE;AACA,sCAAsC,sEAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,kCAAkC;AAChH,kCAAkC,iFAA8B;AAChE;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA,wBAAwB,oFAAoF;AAC5G;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,2DAA2D;AAChG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA,wBAAwB,sFAAsF;AAC9G;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,6DAA6D;AAClG;AACA;AACA,SAAS;AACT;AACA;AACO,uCAAuC,sEAAY;AAC1D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,kEAAkE;AACvG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mEAAgB;AAClD;AACA;AACA,4CAA4C,iEAAS;AACrD,kCAAkC,6FAA6B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sEAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA,wBAAwB,4CAA4C;AACpE;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,2DAA2D;AAChG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA,wBAAwB,8CAA8C;AACtE;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,6DAA6D;AAClG;AACA;AACA,SAAS;AACT;AACA;AACO,sCAAsC,sEAAY;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,0EAAuB;AACxC;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD,8BAA8B,mEAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD,SAAS;AACT;AACA;AACO,2CAA2C,sEAAY;AAC9D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,8DAAQ;AAC1E;AACA;AACA;AACA;AACA;AACA,0BAA0B,4GAA6B;AACvD;AACA;AACA;AACA;AACA;AACA;AACO,gCAAgC,sEAAY;AACnD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,2FAAgC;AACxD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gFAAqB,KAAK,iEAAS;AAC1D,iCAAiC,iEAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,gCAAgC,sEAAY;AACnD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6FAAqB;AAC7D;AACA;AACA;AACA,iCAAiC,sEAAY;AAC7C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,6GAA4C;AACpD;AACA;AACO,qCAAqC,sEAAY;AACxD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uGAA+B;AACvE;AACA;AACO,oCAAoC,sEAAY;AACvD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sGAA8B;AACtE;AACA;AACO,gDAAgD,sEAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,WAAW;AACrE;AACA;AACA,gBAAgB,wEAAqB;AACrC;AACA;AACA;AACA,wCAAwC,kEAAe;AACvD;AACA;AACA;AACA;AACA;AACA,mBAAmB,gFAAqB;AACxC,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,2FAAgC;AACxD;AACA,sBAAsB,kDAAkD;AACxE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iEAAS;AACzC;AACA;AACA,gCAAgC,iEAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iFAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA;AACA;AACA,2BAA2B,wDAAK;AAChC;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,2FAAgC;AACxD;AACA,sBAAsB,iGAAiG;AACvH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gEAAgE,SAAS;AACzE;AACA,gCAAgC,iEAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA;AACA,+BAA+B,wDAAK;AACpC;AACA;AACA;AACA,SAAS;AACT,4BAA4B,iFAA8B;AAC1D;AACA;AACA;AACO,8BAA8B,sEAAY;AACjD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD;AACA,wBAAwB,4FAAiC;AACzD;AACA,sBAAsB,8CAA8C;AACpE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAS;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oBAAoB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wDAAK;AAC3C;AACA;AACA;AACA,+BAA+B,gFAAqB;AACpD,0CAA0C,iEAAS;AACnD;AACA;AACA;AACA,mCAAmC,gFAAqB;AACxD,8CAA8C,iEAAS;AACvD;AACA;AACA,mCAAmC,gFAAqB;AACxD,8CAA8C,iEAAS;AACvD;AACA;AACA,oBAAoB,wEAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,8BAA8B,sEAAY;AACjD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,wDAAK;AAC/C;AACA,kCAAkC,8EAAc,KAAK,iEAAS;AAC9D;AACA;AACA,0CAA0C,wDAAK;AAC/C;AACA,kCAAkC,oGAAoC,6BAA6B,iEAAS;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,sEAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wDAAK;AACzC;AACA,kCAAkC,oGAAoC,wDAAwD,iEAAS;AACvI;AACA;AACA;AACA,kCAAkC,oGAAoC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,qFAA0B;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;AC94BpB;AACA;AACA;AACA;AAC2D;AACU;AAClB;AACQ;AACgB;AACyB;AACvC;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wDAAK;AAClD;AACA;AACA;AACA,6CAA6C,wDAAK;AAClD;AACA,6CAA6C,wDAAK;AAClD;AACA;AACA,oBAAoB,gEAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wDAAK;AAClD;AACA;AACA;AACA;AACA;AACA,6CAA6C,yEAA4B;AACzE,kEAAkE,oEAAuB;AACzF,6CAA6C,uEAA0B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8HAAkD;AACnG;AACA,iDAAiD,yEAA4B;AAC7E,8CAA8C,oEAAuB;AACrE,8CAA8C,oEAAuB;AACrE;AACA,qDAAqD,uEAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wDAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,8HAAkD;AACzG;AACA,mDAAmD,yEAA4B;AAC/E,gDAAgD,oEAAuB;AACvE,gDAAgD,oEAAuB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wDAAK;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,wDAAK;AAClD;AACA,6CAA6C,wDAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8HAAkD;AAClG;AACA;AACA,4CAA4C,yEAA4B;AACxE,8CAA8C,oEAAuB;AACrE,8CAA8C,oEAAuB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sFAAwB;AAC/C,aAAa;AACb;AACA,uBAAuB,wFAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,2EAA8B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wHAA4C,8BAA8B,wDAAK;AACnG;AACA;AACA,uCAAuC,qFAAiB;AACxD;AACA;AACA,4CAA4C,uFAAmB;AAC/D;AACA;AACA,4CAA4C,8FAA0B;AACtE;AACA;AACA,4CAA4C,wFAAoB;AAChE;AACA;AACA;AACA;AACA,qCAAqC,yEAA4B;AACjE,qCAAqC,yEAA4B;AACjE,mDAAmD,2HAA+C;AAClG;AACA;AACA;AACA,kCAAkC,oEAAuB;AACzD,kCAAkC,oEAAuB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+HAAmD;AAC/D;AACA;AACA;AACA;AACA;AACA,uCAAuC,sBAAsB;AAC7D;AACA,iCAAiC,yEAA4B;AAC7D,oCAAoC,oEAAuB;AAC3D;AACA,4BAA4B,uEAA0B;AACtD;AACA,6CAA6C,wDAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzSA;AACA;AACA;AACA;AACmE;AAChB;AAC5C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gFAAqB,KAAK,wDAAK;AAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACyE;AACE;AACzB;AACC;AACU;AACS;AACW;AACJ;AACnB;AACnD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACO,wBAAwB,iEAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,wCAAwC;AACpI;AACA;AACA,gBAAgB,kFAA+B;AAC/C;AACA;AACA;AACA;AACA,qCAAqC,iFAA8B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,qBAAqB,0EAA4B;AACjD;AACA;AACA;AACA;AACA,SAAS,EAAE,6EAAyB;AACpC,KAAK;AACL;AACA,qCAAqC,gEAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,mGAAgC;AAChC;AACA,yBAAyB,oDAAG;AAC5B;AACA;AACA,+BAA+B,2EAAa;AAC5C;AACA;AACA;AACA,uCAAuC,gFAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpJD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACqB;AACkB;AACgB;AACkB;AACN;AACE;AACD;AACP;AACsD;AAC1C;AACZ;AACa;AACjC;AACoD;AAClB;AACkB;AACD;AAC1C;AACQ;AACK;AACJ;AAC3D;AACA;AACA;AACA;AACA;AACA,cAAc,6CAAY;AAC1B,cAAc,6CAAY;AAC1B;AACA,UAAU,iEAAoB;AAC9B,cAAc,6CAAY;AAC1B,cAAc,6CAAY;AAC1B,UAAU,iEAAoB;AAC9B,cAAc,6CAAY;AAC1B,cAAc,6CAAY;AAC1B;AACA,iCAAiC,uEAAc,8BAA8B,MAAM,IAAI,oBAAoB,KAAK,GAAG;AACnH;AACA;AACA;AACA,mBAAmB,uEAAc,iBAAiB,MAAM,IAAI,GAAG;AAC/D;AACA;AACA;AACA,aAAa,uFAA+B;AAC5C;AACA;AACA;AACA,KAAK;AACL,YAAY,uFAA+B;AAC3C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sEAAe;AACpD;AACA;AACA;AACA,mCAAmC,mFAAgB;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mCAAmC,+EAAgC;AACnE,2BAA2B,+DAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAwB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0EAA6B,UAAU,uDAAQ;AACjF;AACA;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,qBAAqB,gFAAsB;AAC3C;AACA;AACA;AACA,wCAAwC,kEAAY,IAAI,gEAAkB;AAC1E,sCAAsC,2DAAS;AAC/C,6CAA6C,kEAAY;AACzD,uCAAuC,sEAAwB;AAC/D;AACA,4BAA4B,gEAAkB;AAC9C,+CAA+C,iBAAiB;AAChE;AACA,iCAAiC,gEAAkB;AACnD,+CAA+C,iBAAiB;AAChE;AACA;AACA,kCAAkC,gEAAkB;AACpD;AACA;AACA;AACA;AACA,iDAAiD,8BAA8B;AAC/E,SAAS;AACT;AACA;AACA;AACA,8CAA8C,6CAAY,0EAA0E,EAAE;AACtI;AACA;AACA,8CAA8C,6CAAY;AAC1D;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA,eAAe,8EAAc;AAC7B,eAAe,gGAAoB;AACnC;AACwB;AACxB,6BAA6B,sEAAY;AACzC;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,mGAA0B;AAC1B,gDAAgD,gGAA0B;AAC1E;AACA,iEAAiE,UAAU,qBAAqB,YAAY,EAAE;AAC9G;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AC9WD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC2E;AACmB;AAC1B;AACD;AACU;AACM;AAC3B;AACwB;AACnB;AAC7D,sDAAsD,iEAAU;AAChE,wDAAwD,gFAAiB;AACzE;AACA;AACA;AACA;AACA,wDAAwD,0DAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6EAA+B;AACnE;AACA,uDAAuD,sFAAgB;AACvE;AACA,2BAA2B,sFAAgB;AAC3C,iBAAiB;AACjB,wDAAwD,qDAAqD,IAAI,KAAK;AACtH,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,uDAAuD,wBAAwB,QAAQ,qEAAiB;AACxG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iCAAiC,sEAAe;AAChD;AACA;AACA;AACA;AACA;AACA,sBAAsB,iFAAc;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yEAAY;AAC3B,eAAe,yFAAQ,CAAC,6EAAc;AACtC;AAC4B;;;;;;;;;;;;;;;;;;;;;;;;;;ACtF5B;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACiC;AACM;AACsB;AACsC;AACrC;AACX;AACkE;AACf;AACK;AAC+C;AAC1J,wDAAwD,iEAAU;AAClE;AACA;AACA,iDAAiD,wEAAiB;AAClE,oDAAoD,sEAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+DAAY;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wDAAK;AAClC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAAY;AACzC;AACA;AACA;AACA;AACA,wCAAwC,oFAAa;AACrD;AACA,eAAe,yFAAkB;AACjC;AAC6B;AAC7B,uBAAuB,0FAAgC;AACvD,mFAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,wFAA0B;AAC1B,kGAA0B;AAC1B,kCAAkC,8FAAyB;AAC3D;AACA,yCAAyC,iFAAa;AACtD,iFAAiF,qBAAqB,QAAQ,EAAE;AAChH,kFAAkF,WAAW,YAAY,WAAW,QAAQ,EAAE;AAC9H;AACA,sCAAsC,kGAA6B;AACnE;AACA,kFAAkF,qBAAqB,YAAY,EAAE;AACrH;AACA,sCAAsC,kGAA6B;AACnE;AACA,kFAAkF,UAAU,YAAY,EAAE;AAC1G;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/JD;AACA;AACA;AACA;AACuC;AAC0B;AACL;AACoB;AACmC;AAChC;AAChC;AACQ;AACW;AACZ;AACe;AACC;AACT;AACI;AACuC;AAC1B;AACC;AAC5E,gCAAgC,sEAAY;AACnD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,iEAAiE;AACtG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,oGAA8B;AAC/F;AACA;AACA;AACO,gCAAgC,sEAAY;AACnD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,iEAAiE;AACtG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,sGAAgC;AACjG;AACA;AACA;AACA,kDAAkD,sEAAY;AAC9D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,mFAAmF;AACxH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,+CAA+C,6BAA6B;AAC5E;AACA,4BAA4B,gEAAS;AACrC;AACA;AACA,4BAA4B,gEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sEAAY;AAC1D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,gBAAgB;AACnE,mCAAmC,gEAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sEAAY;AAC1D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D,mCAAmC,gEAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gEAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,6CAA6C,iEAAU;AAC9D;AACA;AACA,kDAAkD,sEAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,SAAS;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gEAAS;AAC9D;AACA;AACA;AACA;AACO,mDAAmD,sEAAY;AACtE;AACA;AACA;AACA;AACA;AACA,+BAA+B,8EAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,2EAA2E;AAChH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,+EAA+E;AACpH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C,yBAAyB,kEAAQ;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA,wBAAwB,6FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,gEAAgE;AACrG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,2FAAiC;AAC1G;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,mCAAmC,iEAAU;AACpD;AACA;AACA;AACA;AACA;AACA,6CAA6C,mEAAgB;AAC7D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6HAA6H;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,8EAAwB;AAC/C;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8EAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oFAAqC;AACxE;AACA,wBAAwB,iFAA8B;AACtD;AACA,wBAAwB,iFAA8B;AACtD;AACA;AACA,iFAAiF,SAAS;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iFAA8B;AAC1D;AACA;AACA,oDAAoD,wEAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,wFAA+B;AACpF;AACA;AACA;AACA,eAAe,yFAAgB,CAAC,+GAAyC;AACzE,kBAAkB,sEAAwB;AAC1C;AACA,CAAC;AACD,4CAA4C,wFAA+B;AAC3E;AACA;AACA,CAAC;AACD;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;ACt4BpB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuC;AACwB;AACiC;AAC1B;AACa;AACsE;AACxF;AACb;AACL;AAC/C,sEAAsE,iEAAU;AAChF;AACA;AACA;AACA,yEAAyE,0EAAoB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kGAAqB;AACpC;AACO,0CAA0C,sEAAY;AAC7D;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,oGAA0C;AACpE;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,6BAA6B,6EAAqC;AAClE,aAAa;AACb;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB;AACA,8BAA8B,0FAAgC;AAC9D,mFAAqB;AACrB;AACA,kBAAkB,qEAAe;AACjC;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yFAAkB,CAAC,qEAAe,EAAE,gFAA0B;AAChF;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,cAAc;AACd;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yFAAkB,CAAC,qEAAe,EAAE,gFAA0B;AAChF;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,cAAc;AACd;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACiF;AACd;AACX;AAC0B;AACV;AACzB;AACkB;AACjE;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C,kCAAkC,iEAAU;AACnD;AACA;AACA,kDAAkD,0DAAO;AACzD;AACA;AACA;AACA;AACA,2DAA2D,wEAAiB;AAC5E,gCAAgC,6EAAY;AAC5C,kCAAkC,6EAAY;AAC9C;AACA;AACA,oCAAoC,0DAAO;AAC3C;AACA;AACA;AACA;AACA;AACA,uBAAuB,uFAA+C;AACtE;AACA;AACA;AACA;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+EAAuC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,qEAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,sBAAsB,kBAAkB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8EAAuB,UAAU,8EAAoB;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yEAAiB;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6EAAY;AAC5C,kCAAkC,6EAAY;AAC9C;AACA;AACA;AACA;AACA,8BAA8B,mFAA2C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uFAA+C;AAC5E;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAc,oFAA4C,EAAE;AACtF;AACA;AACA;AACA;AACA,0BAA0B,cAAc,oFAA4C,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,aAAa,6EAAqC;AAClD;AACA;AACA,aAAa,oFAA4C;AACzD;AACA;AACA,aAAa,uFAA+C;AAC5D;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3PA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACoD;AACY;AACF;AACiC;AACzC;AAC0B;AAClD;AACsC;AACD;AACf;AACb;AACgD;AACZ;AACoG;AACpE;AAC5C;AACT;AACmB;AACT;AAChE,UAAU,mDAAK;AACf,+BAA+B,uEAAY,yBAAyB,0EAAmB;AACvF,mCAAmC,uEAAY,6BAA6B,wEAAiB;AAC7F,8DAA8D,iEAAU;AACxE;AACA;AACA;AACA,qDAAqD,sEAAe;AACpE;AACA;AACA;AACA;AACA,mDAAmD,2EAAgB;AACnE,wCAAwC,yEAAmB;AAC3D,0BAA0B,4EAAsB;AAChD,qCAAqC,uFAAiC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,wDAAU;AAClC;AACA,yBAAyB,wDAAU;AACnC,yBAAyB,wDAAU;AACnC,0BAA0B,wDAAU;AACpC,qBAAqB,wDAAU;AAC/B,gCAAgC,4DAAI,CAAC,gEAAQ;AAC7C;AACA,4BAA4B,4DAAI,CAAC,gEAAQ;AACzC;AACA;AACA,8BAA8B,iGAAoB,SAAS;AAC3D;AACA;AACA,0BAA0B,wDAAU;AACpC,qBAAqB,wDAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,sDAAsD,kBAAkB;AACxE;AACA;AACA,uBAAuB,8DAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0DAAY;AAC5B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,wDAAU;AAC/B;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA;AACA;AACA,0BAA0B,wDAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0DAAY;AAC5B;AACA;AACA,YAAY,wDAAU,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA,YAAY,wDAAU,8BAA8B;AACpD;AACA;AACA;AACA,YAAY,0DAAY;AACxB,YAAY,wDAAU;AACtB;AACA;AACA,QAAQ,6DAAe;AACvB,QAAQ,6DAAe;AACvB;AACA,YAAY,6DAAG;AACf;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,CAAC,8CAAY,WAAW,EAAE;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,uEAAe;AACnG;AACA;AACA,oFAAoF,uEAAe;AACnG;AACA;AACA,sFAAsF,uEAAe;AACrG;AACA;AACA,sFAAsF,uEAAe;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wDAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0FAAkB;AACjC,eAAe,8EAAc;AAC7B,eAAe,yEAAY;AAC3B;AACgC;AAChC,mGAA0B;AAC1B,kCAAkC,uFAAiB;AACnD;AACA,2CAA2C,kFAAa;AACxD,mEAAmE,WAAW,YAAY,WAAW,QAAQ,EAAE;AAC/G,kFAAkF,0BAA0B,yBAAyB,EAAE;AACvI,uFAAuF,4BAA4B,yBAAyB,EAAE;AAC9I;AACA,sCAAsC,2FAAqB;AAC3D;AACA,mEAAmE,qBAAqB,YAAY,EAAE;AACtG;AACA,gCAAgC,wFAAkB;AAClD;AACA,qEAAqE,UAAU,MAAM,EAAE;AACvF;AACA,sCAAsC,2FAAqB;AAC3D;AACA,mEAAmE,UAAU,YAAY,EAAE;AAC3F;AACA,0CAA0C,6FAAuB;AACjE;AACA,wEAAwE,qBAAqB,gBAAgB,EAAE;AAC/G;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;ACzUD;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACsD;AACqB;AACQ;AACpC;AACmC;AACT;AAClE;AACP,iBAAiB,oFAAa;AAC9B,4BAA4B,oFAAa;AACzC;AACO;AACP,qBAAqB,mFAA2C;AAChE,WAAW,4DAAK;AAChB;AACA,wBAAwB,iFAAyB;AACjD,KAAK;AACL;AACA,4FAA8B;AAC9B;AACA,qBAAqB,6EAAqC;AAC1D;AACA;AACA,KAAK,EAAE,gFAAsB;AAC7B;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzCD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACoC;AACgB;AACwB;AACnB;AACH;AACE;AACG;AACsB;AACW;AACnC;AAClB;AAC+D;AACW;AACxB;AACV;AACuC;AAC3D;AACqC;AACmC;AAC5H,yBAAyB,iGAAe;AAC/C,gGAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,8CAA8C;AACjF;AACA,CAAC;AACM;AACP;AACA,mCAAmC,qFAAa;AAChD;AACA,CAAC,kCAAkC;AACnC;AACA;AACA,8BAA8B,iGAAwB;AACtD;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe,0FAAkB;AACjC;AACA,yFAA0B;AACnB;AACP,8BAA8B,sFAAkB;AAChD,0BAA0B,iGAAwB;AAClD;AACA;AACA;AACA;AACA;AACA,2BAA2B,8DAAW;AACtC,yBAAyB,gEAAa;AACtC,2BAA2B,gEAAa;AACxC;AACA,kDAAkD,iEAAU;AAC5D;AACA;AACA;AACA,+BAA+B,0DAAO;AACtC;AACA,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mDAAK;AACjC,4BAA4B,mDAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAK;AAClC,QAAQ,wDAAU;AAClB,QAAQ,+EAAiC;AACzC;AACA,+BAA+B,mDAAK;AACpC,iCAAiC,mDAAK;AACtC,4BAA4B,mDAAK;AACjC,QAAQ,wDAAU;AAClB,iCAAiC,mDAAK;AACtC,QAAQ,wDAAU;AAClB;AACA,oCAAoC,8EAAS;AAC7C;AACA;AACA,2CAA2C,2DAAM,mBAAmB,8CAAY,0BAA0B,+EAAwB;AAClI;AACA;AACA,aAAa,IAAI,2BAA2B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gFAAc;AACpD,oEAAoE,0GAAuB;AAC3F;AACA,2CAA2C,mFAAiB;AAC5D,oEAAoE,6GAA0B;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sDAAQ;AACxB;AACA;AACA,gBAAgB,sDAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC;AAC0B;AACnB,gCAAgC,uFAAa,8BAA8B,mDAAmD,EAAE,8CAAY;AAC5I,gCAAgC,uFAAa,mCAAmC,mDAAmD,EAAE,8CAAY;AACjJ,oCAAoC,uFAAa,yCAAyC,yDAAyD,EAAE,8CAAY;AACjK,uBAAuB,uFAAa,qBAAqB,wCAAwC,oFAAc,EAAE,EAAE,8CAAY;AAC/H,kCAAkC,uFAAa,+BAA+B,wCAAwC,8DAAW,EAAE,EAAE,8CAAY;AACjJ,uCAAuC,uFAAa,mCAAmC,wCAAwC,8DAAW,EAAE,EAAE,8CAAY;AAC1J,sCAAsC,uFAAa,mCAAmC,OAAO,8DAAW,wBAAwB,8DAAW,EAAE,EAAE,8CAAY;AAC3J,2CAA2C,uFAAa,wCAAwC,kDAAkD,EAAE,8CAAY;AAChK,2CAA2C,uFAAa,wCAAwC,OAAO,8DAAW,wBAAwB,8DAAW,EAAE,EAAE,8CAAY;AACrK,iCAAiC,uFAAa,+BAA+B,wCAAwC,8DAAW,EAAE,EAAE,8CAAY;AAChJ,uCAAuC,uFAAa,qCAAqC,gGAAgG,EAAE,8CAAY;AACvM,sCAAsC,uFAAa,6CAA6C,kDAAkD,EAAE,8CAAY;AAChK,qCAAqC,uFAAa,6CAA6C,kDAAkD,EAAE,8CAAY;AAC/J,2CAA2C,uFAAa,yCAAyC,8BAA8B,0FAAoB,EAAE,EAAE,8CAAY;;;;;;;;;;;;;;;;;;AC3O1K;AACA;AACA;AACA;AACkH;AACjD;AAC1D,wDAAwD,oHAAmC;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAa;AACpC,aAAa;AACb;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AAC0D;AACwB;AACK;AACc;AACxB;AACT;AACV;AAC1D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,qDAAqD,wEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,+BAA+B,wEAAa;AAC5C;AACA;AACA;AACA;AACA;AACA,+CAA+C,0EAAmB;AAClE;AACA,+CAA+C,0EAAmB;AAClE,iBAAiB;AACjB,gCAAgC,gEAAI;AACpC;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,4BAA4B,uEAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,mCAAmC,wFAAgB,CAAC,4FAA2B;AAC/E,sCAAsC,oEAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC7IA;AACA;AACA;AACA;AAC2C;AACmD;AACC;AAChC;AACxD,kDAAkD,wGAA2C;AACpG;AACA,eAAe,8BAA8B;AAC7C;AACA;AACA,sBAAsB,iDAAQ;AAC9B,yBAAyB,QAAQ;AACjC;AACA,eAAe,sEAAe;AAC9B;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gHAAgH;AAC3J;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wEAAa;AACxC;AACA;AACA;AACA;AACA,0CAA0C,oBAAoB;AAC9D,gCAAgC,uEAAY,iCAAiC,0BAA0B;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iDAAQ,qCAAqC,EAAE,aAAa,EAAE;AACrF;AACA,mBAAmB,iDAAQ,+BAA+B,EAAE;AAC5D;AACA;AACA,kDAAkD;AAClD;AACA;AACA,mBAAmB,iDAAQ,gDAAgD,EAAE,cAAc,EAAE,oCAAoC,EAAE;AACnI;AACA,eAAe,iDAAQ,uCAAuC,EAAE,cAAc,EAAE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7HA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2C;AACoC;AACe;AAC3C;AAC4C;AACX;AACF;AACnB;AAC+B;AAClC;AACD;AACpD,oDAAoD,wGAA2C;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iDAAQ;AAC9C,eAAe,sEAAe;AAC9B;AACA;AACA;AACA;AACA,mBAAmB,sEAAe;AAClC;AACA;AACA,YAAY,gFAAkC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA,sCAAsC,iDAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB,yCAAyC;AAClE;AACA;AACA;AACA;AACA,gBAAgB,gFAAkC;AAClD;AACA;AACA;AACA;AACA;AACA,2DAA2D,wFAA0C;AACrG,oBAAoB,gFAAkC;AACtD;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,uEAAY;AACxC;AACA,SAAS;AACT;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA,2CAA2C,0FAA0F;AACrI;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,wDAAwD,OAAO;AAC/D;AACA,2CAA2C,8EAA8E;AACzH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iFAAuB;AAClD;AACA;AACA;AACA,8BAA8B,yEAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,iDAAQ;AAC9D;AACA;AACA,sDAAsD,iDAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yEAAY,kBAAkB;AAC5D,iCAAiC,yEAAY,wBAAwB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA,oCAAoC,6DAAI;AACxC,wDAAwD,kEAAoB,4BAA4B,IAAI,YAAY;AACxH;AACA;AACA;AACA;AACA,4CAA4C,4BAA4B,KAAK,eAAe;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,wEAAW,oDAAoD,WAAW,sDAAsD;AACvL;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA,uDAAuD,wEAAW;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,wEAAW;AAC5E;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,mCAAmC,wEAAqB;AACxD;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,yFAAkC,GAAG,uFAAgC;AACtJ,+EAA+E,iDAAQ,qCAAqC,iDAAQ;AACpI;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,+DAAM;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ,iDAAQ,uBAAuB,EAAE,oDAAoD;AAClH;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iFAAmB;AACnD;AACA;AACA;AACA;AACA;AACA,qCAAqC,4EAAc;AACnD;AACA;AACA;AACA,kCAAkC,kEAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,iFAA8B;AACxF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,6CAA6C,EAAE,mDAAmD;AAChK;AACA,iCAAiC,iDAAQ,2BAA2B,EAAE;AACtE;AACA,sBAAsB,iDAAQ,sBAAsB,EAAE;AACtD,yBAAyB,iDAAQ,0BAA0B,EAAE;AAC7D,2BAA2B,iDAAQ,iCAAiC,EAAE;AACtE,yBAAyB,iDAAQ,0BAA0B,EAAE;AAC7D,qBAAqB,iDAAQ,qBAAqB,EAAE;AACpD,uBAAuB,iDAAQ,sBAAsB,EAAE;AACvD,sBAAsB,iDAAQ,oBAAoB,EAAE;AACpD,yBAAyB,iDAAQ,0BAA0B,EAAE;AAC7D,0BAA0B,iDAAQ,4BAA4B,EAAE;AAChE,yBAAyB,iDAAQ,4BAA4B,EAAE;AAC/D,uBAAuB,iDAAQ,wBAAwB,EAAE;AACzD,8BAA8B,iDAAQ,qCAAqC,EAAE;AAC7E,sBAAsB,iDAAQ,uBAAuB,EAAE;AACvD,wBAAwB,iDAAQ,2BAA2B,EAAE;AAC7D,oBAAoB,iDAAQ,yBAAyB,EAAE;AACvD,2BAA2B,iDAAQ,sCAAsC,EAAE;AAC3E,uBAAuB,iDAAQ,sBAAsB,EAAE;AACvD,oBAAoB,iDAAQ,kBAAkB,EAAE;AAChD,sBAAsB,iDAAQ,oBAAoB,EAAE;AACpD,uBAAuB,iDAAQ,sBAAsB,EAAE;AACvD,wBAAwB,iDAAQ,wBAAwB,EAAE;AAC1D,uBAAuB,iDAAQ,sBAAsB,EAAE;AACvD,oBAAoB,iDAAQ,gBAAgB,EAAE;AAC9C,qBAAqB,iDAAQ,oBAAoB,EAAE;AACnD,yBAAyB,iDAAQ,0BAA0B,EAAE;AAC7D;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzaA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACkC;AACK;AACmJ;AACjI;AACuB;AACvB;AACgB;AACtB;AACkB;AACmB;AACf;AAC6C;AAChD;AACpB;AAC+B;AACqC;AAC3D;AACqB;AACY;AACtC;AAC8C;AAC7F,gDAAgD,qFAAa;AACpE,sEAAsE,iEAAU;AAChF;AACA;AACA;AACA,kDAAkD,sEAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,sEAAe;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uBAAuB,sFAAwC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,8EAAgC;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4HAA+C;AACnF;AACA,wCAAwC,4HAA+C;AACvF,SAAS;AACT,yCAAyC,0DAAO;AAChD;AACA;AACA;AACA,uCAAuC,0DAAO;AAC9C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wEAA0B;AACrE;AACA;AACA;AACA,2CAA2C,wEAA0B;AACrE;AACA;AACA;AACA;AACA;AACA,mCAAmC,wDAAK;AACxC;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,4BAA4B,8EAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE,4BAA4B,yEAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,6DAA6D;AAC3H;AACA;AACA;AACA;AACA,yBAAyB,+EAAsB;AAC/C,wBAAwB,0EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sCAAsC,wFAA+B;AACrE;AACA;AACA,CAAC;AACD;AACA,eAAe,0FAAkB;AACjC;AACoC;AAC7B,iCAAiC,sEAAY;AACpD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,qFAA0B,EAAE,8FAAmC;AAC5G;AACA,wBAAwB,4FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2CAA2C,uFAAkB;AAC7D;AACA,YAAY,2DAAS,SAAS,0EAAoB;AAClD,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,EAAE,sEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0FAAgC;AAC5D,mFAAqB;AACrB;AACA;AACA;AACA;AACA,gBAAgB,4FAAiC;AACjD;AACA;AACA;AACA;AACA,CAAC;AACM;AACP,2BAA2B,kFAAoC;AAC/D;AACA;AACA;AACA,WAAW,4DAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,YAAY,kFAAyB;AACrC;AACA,SAAS;AACT,KAAK,yBAAyB,mEAAsB;AACpD;AACO,qCAAqC,uFAAa,mCAAmC,OAAO,iEAAa,kCAAkC,iEAAa,+BAA+B,iEAAa,2BAA2B,EAAE,6CAAY;AACpP,mGAA0B;AAC1B;AACA;AACA,sEAAsE,eAAe,mCAAmC,sBAAsB,mCAAmC,EAAE;AACnL;AACA,CAAC;AACD,6FAA+B,6FAA6F,gFAAsB;AAClJ,wFAA0B;AAC1B,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/WpB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AAC4B;AACgB;AACI;AACmG;AACpH;AACiB;AACxB;AACN;AACK;AACX;AACiB;AACmB;AACM;AACF;AACzC;AAC+B;AACiB;AAC9B;AACQ;AACV;AAC8B;AACvB;AACoB;AACiB;AACnD;AAC3D;AACA;AACA;AACA;AACA;AACA,0BAA0B,4EAA8B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAkD;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA,2BAA2B,yDAAK;AAChC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,6CAAY;AAC3F;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA,yDAAyD,iFAAsB;AAC/E;AACA,oBAAoB;AACpB;AACA,oDAAoD,iFAAsB;AAC1E,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uEAAe;AAClD,wBAAwB,kFAAuB;AAC/C,8DAA8D,6DAAS,kEAAkE,kEAAgB;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6FAAkC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAAqB,+BAA+B,6CAAY;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAAqB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6FAAkC;AAC9D;AACA;AACA;AACA;AACA,iBAAiB,iEAAa,gBAAgB,4EAAwB,eAAe,uEAAmB;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wEAAgB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uFAAoB;AAChE;AACA;AACA,2BAA2B,6CAAY,sBAAsB,EAAE;AAC/D,mCAAmC,6CAAY,6BAA6B,EAAE;AAC9E,iBAAiB;AACjB;AACA,wBAAwB,oEAAK,CAAC,6CAAY,iCAAiC,EAAE,OAAO,EAAE,aAAa,EAAE;AACrG;AACA,iBAAiB;AACjB,oDAAoD,6CAAY;AAChE;AACA,iBAAiB;AACjB,aAAa;AACb,gDAAgD,6CAAY;AAC5D;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC,eAAe,gGAAoB;AACnC,eAAe,mFAAgB;AAC/B,eAAe,yFAAsB;AACrC,eAAe,qEAAW;AAC1B,eAAe,oHAAiC;AAChD;AACA;AACO,2BAA2B,sEAAY;AAC9C;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA,0BAA0B,yFAAkB,CAAC,oFAA0B,EAAE,6FAAmC;AAC5G;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2CAA2C,uFAAkB;AAC7D;AACA,YAAY,2DAAS,SAAS,0EAAoB;AAClD,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa,EAAE,qEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,sBAAsB,0FAAgC;AACtD,mFAAqB;AACrB;AACA,kBAAkB,8EAA4B;AAC9C;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yFAAkB,CAAC,8EAA4B,EAAE,yFAAkB;AACrF;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,8EAA4B;AAC9C;AACA;AACA;AACA,gBAAgB,iFAAuB;AACvC;AACA;AACA;AACA,CAAC;AACD;AACA,6FAA+B;AAC/B;AACA,IAAI,kEAAU;AACd;AACA,CAAC;AACD;AACA,+EAAW,CAAC,8GAAwB;AACpC;AACA;AACA;AACA;AACA,yBAAyB,6CAAY;AACrC;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACpVD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACgC;AACoC;AACX;AACd;AAC2D;AACgD;AACvE;AACQ;AAChF,yCAAyC,oFAAa;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iDAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iDAAQ,EAAE,mGAAmG,IAAI,EAAE,aAAa,EAAE;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iFAAY;AAC7D,0EAA0E,2FAAsB;AAChG,0EAA0E,kBAAkB;AAC5F,gEAAgE,oFAAe;AAC/E,wEAAwE,oFAAe;AACvF;AACA,sCAAsC,gFAAW;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D,wCAAwC,wBAAwB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAQ;AACrC;AACA;AACA;AACA;AACA,kCAAkC,sEAAe;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iFAAa;AAC5B,eAAe,yFAAkB;AACjC,eAAe,yFAAkB;AACjC;AAC4B;;;;;;;;;;;;;;;;;;;AC7K5B;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACyD;AACN;AACa;AACzD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kEAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,sEAAmB;AAChE,6CAA6C,sEAAmB;AAChE,qCAAqC,sBAAsB;AAC3D,qCAAqC,sBAAsB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ,sEAAmB,KAAK,8DAAQ,gDAAgD;AACjH,yBAAyB,QAAQ,sEAAmB,KAAK,8DAAQ,2CAA2C;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ,sEAAmB,KAAK,8DAAQ,gDAAgD;AACrH,6BAA6B,QAAQ,sEAAmB,KAAK,8DAAQ,2CAA2C;AAChH;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1JA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACyD;AACgB;AACgE;AAChF;AACN;AACQ;AACW;AACvB;AACR;AAC8B;AACT;AACK;AACM;AACU;AACN;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wEAAgC;AAC7C;AACA;AACA;AACA;AACA,0FAA0F,gFAAsB;AAChH,qBAAqB,mEAAsB;AAC3C;AACA;AACA;AACA,iDAAiD,0DAAa;AAC9D;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAO;AACvB;AACA;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8EAAuB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kCAAkC,sEAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,wBAAwB,4FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,+DAA+D;AACpG;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yGAAqC;AACrC;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,wBAAwB,4FAA2B;AACnD;AACA,uBAAuB,6CAAY,EAAE,iEAAiE;AACtG;AACA;AACA,SAAS;AACT;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB;AACA,6EAAqC,UAAU,2EAA0B;AAClE;AACP,sBAAsB,wEAAgC;AACtD;AACA;AACA,8BAA8B,iFAA6B;AAC3D;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAsB;AACtC,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA,4BAA4B,iEAAc,6BAA6B,yEAAsB;AAC7F,iDAAiD,6DAAU;AAC3D;AACA;AACA;AACA;AACA,SAAS,EAAE,8EAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAmB,kBAAkB,oEAAiB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA,kDAAkD,wDAAK;AACvD;AACA;AACA;AACA;AACA,0CAA0C,wDAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,kFAAoB;AACpB;AACA,oDAAoD,gFAAsB;AAC1E,CAAC;;;;;;;;;;;;;;;;;;AC7QD;AACA;AACA;AACA;AACmD;AACsC;AAClF;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mCAAmC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA,qBAAqB,2EAAkB,QAAQ,2EAAkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA,gBAAgB,2EAAkB,QAAQ,2EAAkB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY,wDAAK,0EAA0E;AACpH;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY,wDAAK,oEAAoE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,YAAY,wDAAK,6EAA6E;AACvH;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6E;AACwC;AAClE;AACQ;AACW;AACR;AACwD;AACpD;AACb;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sEAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8EAAuB;AACjD;AACA,YAAY,0EAAqB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI,+BAA+B,EAAE;AAC5E;AACA;AACA,2BAA2B,sEAAmB;AAC9C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,oFAAa;AACpD,wCAAwC,oFAAa;AACrD,wCAAwC,oFAAa;AACrD;AACA,eAAe,oEAAW;AAC1B,eAAe,yFAAkB;AACjC;AAC8B;AAC9B,wFAA0B;AAC1B,oBAAoB,0FAAgC;AACpD,mFAAqB;AACrB;AACA,kBAAkB,yFAAkB;AACpC;AACA;AACA;AACA,gBAAgB,2FAAiC;AACjD;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yFAAkB;AACpC;AACA;AACA;AACA,gBAAgB,2FAAiC;AACjD;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gBAAgB,2FAAiC;AACjD;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnOD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,kCAAkC;AAClC;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa,IAAI,EAAE;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,eAAe,IAAI,IAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh1BA;AACA;AACA;AACA;AACyD;AACG;AACW;AACzC;AACqC;AAChB;AACQ;AACc;AACkB;AACR;AACL;AAC6M;AAC/L;AAClB;AACF;AACxE,mGAA0B;AAC1B;AACA;AACA;AACA;AACA,4DAA4D,qBAAqB,iBAAiB,uGAAwC,GAAG,kBAAkB,iBAAiB,mGAAoC,GAAG,EAAE;AACzN,mEAAmE,qBAAqB,iBAAiB,4GAA6C,GAAG,kBAAkB,iBAAiB,wGAAyC,GAAG,EAAE;AAC1O,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA,kCAAkC,+DAAO,uBAAuB,0EAA0B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAmB;AACjD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oFAAyB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gEAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2DAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAAmB;AACrD;AACA;AACA;AACA;AACA;AACA,sCAAsC,+DAAO,6BAA6B,0EAA0B;AACpG,SAAS;AACT;AACA;AACA;AACA,YAAY,uFAA+B,EAAE,qFAAqF;AAClI,cAAc,uFAA+B,EAAE,oFAAoF;AACnI,iBAAiB,uFAA+B,EAAE,2FAA2F;AAC7I,mBAAmB,uFAA+B,EAAE,2FAA2F;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6EAAoB;AAC1D;AACA,kCAAkC,oDAAI,+BAA+B,sDAAM;AAC3E;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD,wDAAwD,6EAAoB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,oDAAI;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,qCAAqC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,wBAAwB,oFAA6B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,qFAAqF,6FAAwB,EAAE,qFAAQ;AACvH,sFAAsF,6EAA0B,cAAc,2EAAa,EAAE,qFAAQ;AACrJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD,4BAA4B,iFAA8B;AAC1D,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6DAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mFAAgC;AACzE;AACA,oBAAoB,iFAA8B;AAClD,oBAAoB,iFAA8B;AAClD,oBAAoB,+EAA4B;AAChD,oBAAoB,4EAAyB;AAC7C,oBAAoB,iFAA8B;AAClD,oBAAoB,8EAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,gFAAqB;AAC9C,qCAAqC,wBAAwB;AAC7D;AACA;AACA,gBAAgB;AAChB;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA,4BAA4B,eAAe,uBAAuB,kCAAkC;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,8EAAuB;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,8EAAuB;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iFAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wBAAwB,iFAA8B;AACtD;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAA8B;AACtD,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjfA;AACA;AACA;AACA;AACuC;AACc;AACO;AAClB;AAC0D;AACY;AACkC;AAC5E;AAC/D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6EAAoB;AAClE;AACA;AACA;AACA;AACA;AACA,0CAA0C,mDAAI;AAC9C,+CAA+C,6EAAoB;AACnE;AACA;AACA,iBAAiB;AACjB,+CAA+C,2EAAkB;AACjE,oFAAoF,QAAQ,EAAE,oDAAoD,EAAE,KAAK;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,mBAAmB,0DAAa;AAChC;AACA;AACA,yBAAyB,0DAAa;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAY;AAC5B;AACA;AACA,kDAAkD,kEAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,4EAAmB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,uBAAuB,qHAAyC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,6CAAY,sBAAsB,6CAAY,sBAAsB,6CAAY,wBAAwB,6CAAY,4BAA4B,6CAAY,0BAA0B,6CAAY,sBAAsB,6CAAY;AAC1Q,2CAA2C,6CAAY,wBAAwB,6CAAY,wBAAwB,6CAAY,yBAAyB,6CAAY,2BAA2B,6CAAY,0BAA0B,6CAAY,wBAAwB,6CAAY;AACrR,wCAAwC,6CAAY,wBAAwB,6CAAY,0BAA0B,6CAAY,oBAAoB,6CAAY,oBAAoB,6CAAY,gBAAgB,6CAAY,kBAAkB,6CAAY,kBAAkB,6CAAY,sBAAsB,6CAAY,4BAA4B,6CAAY,wBAAwB,6CAAY,0BAA0B,6CAAY;AAC1a,6CAA6C,6CAAY,yBAAyB,6CAAY,0BAA0B,6CAAY,uBAAuB,6CAAY,uBAAuB,6CAAY,qBAAqB,6CAAY,sBAAsB,6CAAY,sBAAsB,6CAAY,wBAAwB,6CAAY,2BAA2B,6CAAY,yBAAyB,6CAAY,0BAA0B,6CAAY;AAC9b;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gGAAqB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4GAAiC;AAC7C,mBAAmB,0DAAa;AAChC;AACA,uBAAuB,0DAAa;AACpC,8BAA8B,0FAAmB;AACjD,4DAA4D,iGAA0B;AACtF;AACA;AACA;AACA;AACA,YAAY,4GAAiC;AAC7C,mBAAmB,4EAAoB;AACvC;AACA,uBAAuB,0DAAa;AACpC;AACA;AACA;AACA;AACA,6BAA6B,4EAAoB;AACjD;AACA;AACO;AACP;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACnRA;AACA;AACA;AACA;AACiH;AAC7C;AAC7D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB,eAAe,0CAA0C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,+DAAU,GAAG,iFAA4B;AAC3H,uBAAuB,mBAAmB;AAC1C;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,wBAAwB,0EAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iEAAQ;AAC7C,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3OA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC6G;AAC1B;AACpC;AACU;AACyB;AACT;AACtB;AACU;AACqB;AACb;AACT;AACrD;AACP,iBAAiB,oFAAa;AAC9B,wBAAwB,oFAAa;AACrC,6BAA6B,oFAAa;AAC1C,uBAAuB,oFAAa;AACpC,kCAAkC,oFAAa;AAC/C,kCAAkC,oFAAa;AAC/C,oBAAoB,oFAAa;AACjC;AACO,uCAAuC,uEAAM;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAc;AAC1B,iCAAiC,8DAAQ;AACzC,qCAAqC,8DAAQ;AAC7C,sCAAsC,8DAAQ;AAC9C;AACA;AACA,mBAAmB,2EAAwB;AAC3C;AACA;AACA,iCAAiC,8DAAQ;AACzC,qCAAqC,8DAAQ;AAC7C,sCAAsC,8DAAQ;AAC9C;AACA;AACA,mBAAmB,2EAAwB,6BAA6B,2EAAwB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,wBAAwB,8EAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iGAAiG,8BAA8B,UAAU,gFAAsB;AACtK;AACA;AACA;AACA;AACA,+CAA+C,wDAAK,+EAA+E,sEAAmB;AACtJ,8BAA8B;AAC9B;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,yFAAiC;AAC1E;AACA;AACA;AACA;AACA,gBAAgB,uEAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kCAAkC,sFAA8C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iFAAyB;AAC7C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAQ;AAC1C;AACA,0BAA0B,cAAc,eAAe,gBAAgB;AACvE;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,4FAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gFAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,iFAAyC;AAClC;AACP;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;ACpSA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC4D;AAC0C;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA,SAAS,eAAe;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+EAA+E;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,oFAAa;AACxD;AACA,eAAe,yFAAkB;AACjC;AAC+B;;;;;;;;;;;;;;;;;;;AC3F/B;AACA;AACA;AACA;AACiE;AACG;AACI;AACjE;AACP;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,0BAA0B,uEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6EAAY;AACjD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC8D;AACG;AACE;AACC;AAC0C;AAClC;AAC6E;AACtF;AAChB;AACmB;AACA;AACV;AACD;AACpB;AAC2D;AACK;AACP;AACC;AACZ;AACtB;AACd;AACE;AACE;AACC;AAC8B;AAC1B;AACW;AACI;AACL;AACX;AACI;AACc;AACI;AACb;AACJ;AAC6B;AAC3F;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sEAAmB;AAC9C,8BAA8B;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wEAAiB;AAChD,8BAA8B,sEAAe;AAC7C;AACA,yBAAyB,2DAAY;AACrC,8CAA8C,6DAAS;AACvD,qEAAqE,6DAAa;AAClF;AACA;AACA;AACA,kDAAkD,mFAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,qCAAqC,sEAAmC;AACxE,2CAA2C,iFAA8C;AACzF,kCAAkC,mEAAgC;AAClE,gCAAgC,uEAAY;AAC5C;AACA;AACA;AACA,aAAa;AACb,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,4CAA4C,sEAAe;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA,gDAAgD,sEAAgB;AAChE,qBAAqB,kEAAoB,gCAAgC,sEAAgB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,2DAA2D,6DAAS;AACpE,2CAA2C,8EAAkB;AAC7D,SAAS;AACT,qDAAqD,6DAAS;AAC9D,2CAA2C,yEAAmB;AAC9D,SAAS;AACT,iEAAiE,+DAAc;AAC/E;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uCAAuC,iFAA8C;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,wBAAwB,kFAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yFAA+B;AAC/D,mIAAmI,gFAAqB,CAAC,6DAAU;AACnK;AACA;AACA;AACA;AACA,2BAA2B,iEAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAoB;AAC7D,qCAAqC,wEAAiB;AACtD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iFAAiF,wEAAiB,WAAW,yEAAsB;AACnI;AACA;AACA;AACA;AACA;AACA,oCAAoC,yFAA+B;AACnE,wIAAwI,gFAAqB,CAAC,6DAAU;AACxK;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa,aAAa;AAC1B;AACA,yBAAyB,4EAAoB;AAC7C;AACA,QAAQ,mFAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA,mLAAmL,qEAAiB;AACpM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,kEAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yBAAyB;AACnD;AACA,YAAY,uEAAe;AAC3B,sBAAsB,8CAAY,oCAAoC,EAAE,QAAQ,EAAE;AAClF,YAAY,oEAAK;AACjB;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,QAAQ,8DAAU;AAClB;AACA;AACA,YAAY,6DAAS;AACrB;AACA,gBAAgB,kEAAO;AACvB;AACA,aAAa;AACb,sCAAsC,kBAAkB;AACxD,gBAAgB,kEAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sCAAsC;AAC9E,aAAa;AACb,SAAS;AACT,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0FAAoB;AACnC,eAAe,qEAAqB;AACpC,eAAe,mFAAe;AAC9B,eAAe,0FAAkB;AACjC,eAAe,mGAAqB;AACpC,eAAe,qEAAW;AAC1B,eAAe,8FAAiB;AAChC;AAC6B;AACtB,mCAAmC,sEAAY;AACtD;AACA;AACA;AACA,mBAAmB,8CAAY;AAC/B;AACA,0BAA0B,0FAAkB,CAAC,oFAA0B,EAAE,qGAA2C;AACpH;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,2FAA2F;AACjH;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB;AACA,uBAAuB,0FAAgC;AACvD,mFAAqB;AACrB;AACA,kBAAkB,yDAAsB;AACxC;AACA;AACA;AACA,CAAC;AACD;AACA,2HAA0C;AAC1C;AACA,UAAU,0FAAkB,CAAC,yDAAsB,EAAE,0FAAgC;AACrF;AACA;AACA,CAAC;AACD;AACA,2HAA0C;AAC1C;AACA,UAAU,0FAAkB,CAAC,yDAAsB,EAAE,0FAAgC,EAAE,0EAAuC,EAAE,+DAA4B;AAC5J;AACA;AACA,CAAC;AACD,6FAA2B,CAAC,oEAA0B;AACtD,cAAc,wCAAwC,8CAAY,EAAE,mCAAmC,EAAE,gDAAgD,IAAI,EAAE,cAAc;AAC7K;AACA;AACA,UAAU,oFAAiD;AAC3D,CAAC;AACD,6FAA2B,CAAC,oEAA0B;AACtD,cAAc,wCAAwC,8CAAY,EAAE,mCAAmC,EAAE,gDAAgD,IAAI,EAAE,cAAc;AAC7K;AACA;AACA,UAAU,0FAAkB,CAAC,0EAAuC,EAAE,6FAAqB;AAC3F,CAAC;AACD,6FAA2B,CAAC,oEAA0B;AACtD,cAAc,wCAAwC,8CAAY,EAAE,oCAAoC,EAAE,iDAAiD,IAAI,EAAE,eAAe;AAChL;AACA;AACA,UAAU,0FAAkB,CAAC,0EAAuC,EAAE,6FAAqB;AAC3F,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,0FAAgC;AAC7F;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,oBAAoB,oEAA0B;AAC9C;AACA;AACA,kBAAkB,0FAAkB,CAAC,0EAAuC,EAAE,6FAAqB;AACnG,mBAAmB,8CAAY,EAAE,oCAAoC,EAAE,iDAAiD,IAAI,EAAE;AAC9H,SAAS;AACT,oBAAoB,oEAA0B;AAC9C;AACA;AACA,kBAAkB,0FAAkB,CAAC,0EAAuC,EAAE,6FAAqB;AACnG,mBAAmB,8CAAY,EAAE,mCAAmC,EAAE,gDAAgD,IAAI,EAAE;AAC5H,SAAS;AACT,CAAC;AACD;AACA,yGAAqC;AACrC,mFAAqB;AACrB;AACA,kBAAkB,yDAAsB;AACxC;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,qEAAkC;AAC/F;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA,cAAc;AACd;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,qEAAkC;AAC/F;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,qEAAkC;AAC/F;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,qEAAkC;AAC/F;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA,cAAc;AACd;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,qEAAkC;AAC/F;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,yDAAsB,EAAE,qEAAkC;AAC/F;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yDAAsB;AACxC;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA,cAAc;AACd,KAAK;AACL;AACA,oBAAoB,oEAA0B;AAC9C;AACA;AACA,kBAAkB,0FAAkB,CAAC,gEAA6B,EAAE,4DAAyB;AAC7F,mBAAmB,8CAAY;AAC/B,SAAS;AACT,oBAAoB,oEAA0B;AAC9C;AACA;AACA,kBAAkB,0FAAkB,CAAC,0EAAuC,IAAI,4DAAyB;AACzG,mBAAmB,8CAAY;AAC/B,SAAS;AACT,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yDAAsB;AACxC;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,yDAAsB;AACxC;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA,cAAc;AACd;AACA,CAAC;AACD;AACA,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,0FAAgC,EAAE,6FAAqB,uCAAuC,qEAAoB,EAAE,mEAAgC,IAAI,oGAA8C,IAAI,uGAA0C;AACzR;AACA,sCAAsC,gEAAQ,uBAAuB,kBAAkB,UAAU,kBAAkB;AACnH,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,0FAAgC,EAAE,6FAAqB,uCAAuC,0FAAoC,EAAE,mEAAgC,IAAI,uGAA0C;AACvP;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA,CAAC;AACD,mFAAqB;AACrB;AACA,kBAAkB,0FAAkB,CAAC,0FAAgC,EAAE,6FAAqB,uCAAuC,0FAAoC,EAAE,mEAAgC,IAAI,uGAA0C;AACvP;AACA;AACA;AACA,gBAAgB,0FAAgC;AAChD;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACztBD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC0E;AACyB;AAClC;AACG;AACH;AACyB;AACM;AACP;AACrB;AAC7D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,0BAA0B,yDAAQ;AAClC;AACA;AACA;AACA,eAAe,QAAQ;AACvB,uBAAuB,uCAAuC,GAAG,MAAM;AACvE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA,2BAA2B,uCAAuC,GAAG,0BAA0B;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,0EAAwB;AAC/F;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,qBAAqB,6EAA4B;AACjD;AACA;AACA;AACA,eAAe,OAAO;AACtB,uBAAuB,uCAAuC,GAAG,KAAK;AACtE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,qBAAqB,uCAAuC,GAAG,KAAK;AACpE;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,0EAAwB;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C,gCAAgC,mEAAgB;AAChD;AACA,6BAA6B,6FAA4B;AACzD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,oCAAoC,GAAG,KAAK;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oCAAoC,GAAG,oBAAoB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAe;AAC9B,eAAe,yEAAY;AAC3B,eAAe,kGAAqB;AACpC;AACgC;AACzB,8BAA8B,gGAAe;AACpD,+FAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7PjB;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC6D;AACM;AACX;AACqB;AAClB;AACQ;AACZ;AACqE;AACtD;AACS;AAC9B;AACiC;AAC3E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,8BAA8B,sEAAe;AAC7C;AACA,6CAA6C,sEAAe;AAC5D,wCAAwC,+DAAY;AACpD;AACA,0CAA0C,sEAAe;AACzD,gCAAgC,0DAAO;AACvC,iCAAiC,0DAAO;AACxC,iCAAiC,0DAAO;AACxC;AACA;AACA;AACA,oEAAoE,gEAAS;AAC7E;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,4BAA4B,oFAAsC;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4EAA8B;AAC5D;AACA;AACA;AACA;AACA,4BAA4B,qEAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wEAAc;AAC9B,oBAAoB,yEAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4EAA8B;AAC3E;AACA;AACA;AACA,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yHAAyH;AACzH;AACA;AACA;AACA,aAAa,4EAA8B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,kFAAsB;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+DAA+D;AAChG;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iFAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kEAAmB;AAC9C,0BAA0B,mEAAsB,wCAAwC,0DAAiB;AACzG;AACA,YAAY,kEAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oEAAuB;AACrD;AACA;AACA;AACA,wCAAwC,gEAAe;AACvD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS,SAAS,qEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4EAA8B;AAC3E;AACA;AACA,0BAA0B,uCAAuC,2BAA2B,4DAA4D;AACxJ;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA,0BAA0B,uGAAuG,qBAAqB,4DAA4D;AAClN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uCAAuC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;;AC7hBA;AACA;AACA;AACA;AACoE;AAC7D;AACP;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB;AACjD;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC6B;AACS;AACsB;AACjB;AACJ;AACyB;AACL;AACI;AACI;AACoC;AACwD;AAC5F;AAC4B;AACR;AACA;AACF;AACD;AACR;AAC+B;AACiK;AAC9L;AACX;AACC;AACO;AAC8B;AACxC;AACW;AACH;AACH;AACpB;AAC8C;AAC7B;AACE;AACI;AACE;AACC;AACH;AACc;AACvF;AACA,4BAA4B,uEAAY,sBAAsB,2EAAoB;AAClF;AACA;AACA;AACO,sCAAsC,uFAAa,oCAAoC,OAAO,4FAAsB,SAAS,4FAAsB,MAAM,4FAAsB,EAAE,EAAE,6CAAY;AAC/L,kCAAkC,uFAAa,gCAAgC,OAAO,wFAAkB,SAAS,wFAAkB,MAAM,wFAAkB,EAAE,EAAE,6CAAY;AAC3K,sCAAsC,uFAAa,oCAAoC,OAAO,sFAAgB,SAAS,sFAAgB,MAAM,sFAAgB,EAAE,EAAE,6CAAY;AAC7K,8CAA8C,uFAAa,4CAA4C,OAAO,yFAAmB,SAAS,yFAAmB,MAAM,yFAAmB,EAAE,EAAE,6CAAY;AACtM,+CAA+C,uFAAa,6CAA6C,OAAO,6FAAuB,SAAS,6FAAuB,MAAM,6FAAuB,EAAE,EAAE,6CAAY;AAC3N,iCAAiC,EAAE,EAAE,IAAI,oBAAoB,IAAI,WAAW,EAAE,+BAA+B,IAAI,aAAa,IAAI,IAAI,EAAE;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,MAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sEAAe;AAC9C;AACA;AACA,oBAAoB,6DAAM,YAAY,wDAAC;AACvC,yBAAyB,6DAAM,YAAY,wDAAC;AAC5C,qBAAqB,6DAAM,YAAY,wDAAC;AACxC,qBAAqB,6DAAM,OAAO,wDAAC;AACnC,6BAA6B,6DAAM,OAAO,wDAAC;AAC3C,oBAAoB,6DAAM,OAAO,wDAAC;AAClC,qBAAqB,6DAAM,OAAO,wDAAC;AACnC,6BAA6B,+EAAS,aAAa,iDAAiD;AACpG;AACA,+BAA+B,6DAAM,YAAY,wDAAC;AAClD,8BAA8B,6DAAM,YAAY,wDAAC;AACjD,4BAA4B,6DAAM,aAAa,wDAAC;AAChD,wBAAwB,6DAAM,aAAa,wDAAC;AAC5C,8BAA8B,6CAAY,0BAA0B,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAS;AAC3C,oCAAoC,WAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAW;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sEAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mFAAc,wCAAwC,0DAAQ,EAAE,kCAAkC,GAAG,2EAAa;AACnJ,kCAAkC,mFAAc,wCAAwC,0DAAQ,EAAE,0CAA0C,GAAG,2EAAa;AAC5J;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gEAAO;AAC/C,gBAAgB,mFAAc,wCAAwC,0DAAQ,EAAE,kCAAkC,GAAG,6EAAe;AACpI,gBAAgB,mFAAc,wCAAwC,0DAAQ,EAAE,0CAA0C,GAAG,6EAAe;AAC5I;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAU,qCAAqC,2EAAwB,kBAAkB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAa;AAC5B,eAAe,0EAAY;AAC3B,eAAe,kFAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sEAAe;AAC9C,kBAAkB,6DAAM,YAAY,wDAAC;AACrC,6BAA6B,uEAAY;AACzC,oBAAoB,wDAAC;AACrB,6BAA6B,kGAAoB,cAAc;AAC/D,QAAQ,6DAAM;AACd;AACA,sBAAsB,6DAAM,YAAY,wDAAC;AACzC,qBAAqB,6DAAM,cAAc,wDAAC,UAAU,gFAAyB;AAC7E,2BAA2B,6CAAY,0BAA0B,EAAE;AACnE,oBAAoB,6DAAM,cAAc,wDAAC;AACzC,oBAAoB,6DAAM,YAAY,wDAAC;AACvC;AACA,QAAQ,8DAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAY;AAC5C;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA,aAAa,wBAAwB;AACrC;AACA;AACA;AACA,4BAA4B,cAAc,EAAE,2BAA2B,sGAAsG,UAAU,UAAU,oBAAoB;AACrN,+BAA+B,cAAc;AAC7C,4BAA4B,SAAS,aAAa,0CAA0C,yBAAyB,cAAc;AACnI,gCAAgC,wEAAc;AAC9C,kCAAkC,gCAAgC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,yBAAyB;AACvF,YAAY,2DAAI;AAChB;AACA;AACA;AACA,YAAY,2DAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,SAAS;AACvC,gCAAgC,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAe;AAC7C;AACA;AACA;AACA,+BAA+B,gEAAY;AAC3C,6BAA6B,sEAAe;AAC5C,sCAAsC,0DAAO;AAC7C,qCAAqC,0DAAO;AAC5C,oCAAoC,0DAAO;AAC3C,oCAAoC,0DAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,0DAAO;AAC5C;AACA,wDAAwD,4EAAgB;AACxE;AACA;AACA;AACA;AACA,uBAAuB,wDAAC;AACxB,2BAA2B,4EAAqB;AAChD;AACA;AACA;AACA,SAAS;AACT,8BAA8B,6DAAM,eAAe,wDAAC;AACpD,2BAA2B,6DAAM,eAAe,wDAAC;AACjD;AACA;AACA,gCAAgC,6DAAM,eAAe,wDAAC;AACtD;AACA;AACA,qCAAqC,0FAAc;AACnD;AACA,8CAA8C,2BAA2B;AACzE;AACA;AACA,wBAAwB,uEAAc;AACtC;AACA;AACA,2BAA2B,QAAQ;AACnC,+CAA+C,GAAG;AAClD,0BAA0B,2DAAc;AACxC,6BAA6B,uBAAuB,IAAI,iBAAiB;AACzE;AACA;AACA,SAAS;AACT,gCAAgC,+EAAS,yBAAyB,yBAAyB;AAC3F,iCAAiC,+EAAS,yBAAyB,yBAAyB;AAC5F,4CAA4C,oEAA0B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD,qCAAqC,2DAAc,GAAG,GAAG,EAAE;AAC3D,+BAA+B,6CAAY,wCAAwC,EAAE,SAAS,EAAE;AAChG;AACA;AACA;AACA;AACA,iBAAiB;AACjB,0CAA0C,6CAAY;AACtD;AACA;AACA,SAAS;AACT,2BAA2B,mFAAgB;AAC3C;AACA,sCAAsC,0FAAoB;AAC1D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uCAAuC,gEAA6B;AACpE,8CAA8C,uEAAoC;AAClF,mDAAmD,4EAAyC;AAC5F;AACA,2BAA2B,oFAA6B;AACxD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sCAAsC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iFAAW;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,8BAA8B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+EAAuB;AACnE,gCAAgC,yEAAiB;AACjD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,qCAAqC;AACjF,aAAa,QAAQ,qEAAiB;AACtC;AACA;AACA,qCAAqC,2CAA2C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAI;AACpB,gBAAgB,2DAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAI;AACpB,gBAAgB,2DAAI;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAI;AACpB,gBAAgB,2DAAI;AACpB;AACA;AACA;AACA,gBAAgB,2DAAI;AACpB,gBAAgB,2DAAI;AACpB;AACA;AACA;AACA,gBAAgB,2DAAI;AACpB,gBAAgB,2DAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,yEAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA,uDAAuD,yFAAyF;AAChJ,2BAA2B,QAAQ;AACnC,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA,iFAAiF;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wBAAwB;AAC3C;AACA;AACA,2CAA2C,qBAAqB;AAChE,2CAA2C,OAAO;AAClD,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6EAAsB;AACnD;AACA;AACA,6BAA6B,6EAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kEAAkE;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAAY;AAC5C,uCAAuC,6CAAY;AACnD;AACA,eAAe,uFAAiB;AAChC,eAAe,0FAAkB;AACjC,eAAe,0FAAkB;AACjC,eAAe,kFAAa;AAC5B,eAAe,iFAAe;AAC9B,eAAe,0EAAY;AAC3B,eAAe,8EAAc;AAC7B,eAAe,8EAAY;AAC3B,eAAe,mGAAqB;AACpC;AACyB;AACzB,mGAA0B;AAC1B;AACA;AACA,8HAA8H,UAAU,gBAAgB,EAAE;AAC1J;AACA;AACA;AACA,2DAA2D,UAAU,YAAY,EAAE;AACnF;AACA,gCAAgC,wFAAkB;AAClD;AACA,6DAA6D,UAAU,MAAM,EAAE;AAC/E;AACA,0CAA0C,6FAAuB;AACjE;AACA,gEAAgE,qBAAqB,gBAAgB,EAAE;AACvG;AACA,CAAC;;;;;;;;;;;;;;;;;;ACjkCD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACsG;AAC9B;AACxE,kDAAkD,iEAAU;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oFAAa;AACxC;AACA,eAAe,yFAAkB;AACjC;AAC0B;;;;;;;;;;;;;;;;;;;ACjE1B;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC8E;AAC3B;AACiC;AAC7E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,4FAA6B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAc;AACtC;AACA;AACA,8BAA8B,oEAAY,YAAY,sEAAmB,UAAU,iFAA8B;AACjH;AACA;AACA;AACA,6BAA6B,sEAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;;;;;;;;;;;;;;;;;;;;ACvEA;AACA;AACA;AACA;AACuC;AACuB;AACyB;AAClB;AAC9D,uCAAuC,sEAAY;AAC1D;AACA;AACA;AACA,mBAAmB,6CAAY,EAAE,uGAAuG;AACxI;AACA;AACA;AACA;AACA;AACA,sBAAsB,iEAAiE;AACvF;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,0FAAwB;AACjD;AACA,QAAQ,0FAAwB;AAChC;AACA,YAAY,oEAAK,CAAC,6CAAY;AAC9B;AACA;AACA,YAAY,oEAAK,CAAC,6CAAY;AAC9B;AACA;AACA;AACA;AACA,kFAAoB;;;;;;;;;;;;;;;;ACpCpB;AACA;AACA;AACA;AACuC;AACgD;AACzB;AAC9D,oCAAoC,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA,kFAAoB;;;;;;;;;;;;;;;;;;AC5BpB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AACwB;AACgB;AACE;AACJ;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,iEAAU;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6CAAY;AACnC,yBAAyB,6CAAY;AACrC,wBAAwB,6CAAY;AACpC,+BAA+B,6CAAY;AAC3C,iCAAiC,6CAAY;AAC7C,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,+EAAc;AAC7B,eAAe,sFAAkB;AACjC;AACA,wFAA0B;;;;;;;;;;;;;;;;;;;;;;ACzG1B;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC0F;AAC3B;AACgB;AACK;AACd;AACsB;AACb;AACiB;AACwB;AACxH,0FAA0F,iEAAU;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mEAAgB;AACrD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,uBAAuB,qGAAuD;AAC9E;AACA;AACA,SAAS;AACT;AACA,uCAAuC,kGAAgC;AACvE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,iGAAmD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,SAAS;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,+FAAyB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8EAAuB;AAC/C;AACA;AACA;AACA;AACA,kDAAkD,qGAAkB;AACpE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,2EAAa;AAC5B,eAAe,iFAAa;AAC5B,eAAe,kGAAqB;AACpC;AACA,wFAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChH1B;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuC;AACkB;AAC+B;AACf;AACqB;AACd;AACoE;AACjG;AACmB;AACZ;AACe;AACwB;AACK;AACqG;AAC7F;AAChD;AAC9D,4BAA4B,uFAAa,oCAAoC,kDAAkD,EAAE,6CAAY;AAC7I,kCAAkC,uFAAa,0CAA0C,kDAAkD,EAAE,6CAAY;AACzJ,kCAAkC,uFAAa,gCAAgC,8BAA8B,0FAAoB,EAAE,EAAE,6CAAY;AACjJ,wCAAwC,uFAAa,sCAAsC,8BAA8B,0FAAoB,EAAE,EAAE,6CAAY;AAC7J,6CAA6C,uFAAa,iDAAiD,yDAAyD,EAAE,6CAAY;AAClL,mDAAmD,uFAAa,uDAAuD,yDAAyD,EAAE,6CAAY;AAC9L,iCAAiC,qFAAa;AACvC;AACP,2BAA2B,wFAAyC;AACpE;AACA;AACA;AACA,WAAW,4DAAK;AAChB;AACA,6BAA6B,6EAAyB;AACtD,KAAK,GAAG,mEAAsB;AAC9B;AACA;AACA;AACA;AACA,sBAAsB,8EAAuB;AAC7C;AACA;AACA;AACA;AACA,uBAAuB,wDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,4BAA4B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yEAA0B;AACpD;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oFAAqC;AAC7C;AACA;AACA;AACA;AACA,6FAA+B,8FAA8F,gFAAsB;AACnJ;AACA;AACA,4BAA4B,sEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6HAA6H;AAC7H;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAe;AAC9B;AACA,kBAAkB,iFAA8B;AAChD;AACA;AACA;AACA,oBAAoB,8DAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAK,IAAI,YAAY,IAAI,aAAa,MAAM,kBAAkB,QAAQ,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAK,IAAI,YAAY,IAAI,aAAa,MAAM,kBAAkB,QAAQ,UAAU;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE,qEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0EAA2B;AAChD;AACA;AACA,0BAA0B,yEAA0B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wFAA+B;AAChE;AACA;AACA;AACA,eAAe,yFAAgB;AAC/B,kBAAkB,sEAAwB;AAC1C;AACA,CAAC;AACD,gCAAgC,wFAA+B;AAC/D;AACA;AACA;AACA,eAAe,yFAAgB,CAAC,+GAAyC;AACzE,kBAAkB,sEAAwB;AAC1C;AACA,CAAC;AACD,mCAAmC,wFAA+B;AAClE;AACA;AACA;AACA,eAAe,yFAAgB;AAC/B,kBAAkB,sEAAwB;AAC1C;AACA,CAAC;AACD,4EAA4E,iEAAU;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0FAAkB;AACjC;AACA,4CAA4C,sEAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yCAAyC,sEAAY;AACrD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,wBAAwB,2FAAiC;AACzD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,kFAAoB;AACpB,kFAAoB;AACpB,mGAA0B;AAC1B,8CAA8C,8FAAwB;AACtE;AACA,wEAAwE,qBAAqB,oBAAoB,EAAE;AACnH,+DAA+D,qBAAqB,qCAAqC,EAAE;AAC3H;AACA;AACA;AACA,0DAA0D,qBAAqB,eAAe,EAAE;AAChG;AACA;AACA;AACA,gEAAgE,qBAAqB,qBAAqB,EAAE;AAC5G;AACA,oDAAoD,oGAA8B;AAClF;AACA,+DAA+D,eAAe,yCAAyC,GAAG,0BAA0B,wBAAwB,EAAE;AAC9K;AACA;AACA;AACA,0DAA0D,eAAe,yCAAyC,GAAG,qBAAqB,wBAAwB,EAAE;AACpK;AACA;AACA;AACA,gEAAgE,eAAe,yCAAyC,GAAG,2BAA2B,wBAAwB,EAAE;AAChL;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7hBD;AACA;AACA;AACA;AACyF;AAChB;AACH;AACW;AACY;AACpC;AACN;AACQ;AACW;AACuC;AAC1B;AACd;AAC9D,8BAA8B,uEAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sGAAuB;AACtD;AACA;AACA;AACA,mCAAmC,8DAAQ;AAC3C;AACA;AACA,SAAS;AACT;AACA,kGAAkG,8FAA8B;AAChI;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA;AACA;AACA,uBAAuB,gEAAS;AAChC;AACA;AACA;AACO;AACP;AACA,eAAe,mGAA2B;AAC1C;AACA;AACO;AACP;AACA,eAAe,oGAA4B;AAC3C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,8CAA8C;AACpE;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,iEAAiE;AACvF;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAkB,CAAC,0FAAgC,EAAE,+GAAkC;AAC/G,sBAAsB,mDAAmD;AACzE;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,sGAAuB,CAAC,uGAAyC;AAC5F;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAkB,CAAC,0FAAgC,EAAE,+GAAkC;AAC/G,sBAAsB,sEAAsE;AAC5F;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,sGAAuB,CAAC,uGAAyC;AAC5F;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,+CAA+C;AACrE;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,kEAAkE;AACxF;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAkB,CAAC,0FAAgC,EAAE,+GAAkC;AAC/G,sBAAsB,oDAAoD;AAC1E;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,sGAAuB,CAAC,uGAAyC;AAC5F;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAkB,CAAC,0FAAgC,EAAE,+GAAkC;AAC/G,sBAAsB,uEAAuE;AAC7F;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,sGAAuB,CAAC,uGAAyC;AAC5F;AACA;AACO,gCAAgC,uEAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sGAAuB;AACtD;AACA;AACA;AACA;AACA,uBAAuB,8EAAc;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA,gBAAgB,qGAA6B;AAC7C;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACO;AACP;AACA,gBAAgB,sGAA8B;AAC9C;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,6CAA6C;AACnE;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,2CAA2C;AACjE;AACA;AACA,SAAS;AACT;AACA;AACA,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9ZrB;AACA;AACA;AACA;AAC0E;AACW;AAClC;AACmB;AACmB;AACR;AAC1E,iCAAiC,gFAAiB;AACzD;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,iEAAiE;AACvF;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,6GAAqC;AACrD;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACO,kCAAkC,gFAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA,0BAA0B,oFAA0B;AACpD;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,+DAA+D;AACrF;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,8GAAsC;AACtD;AACA;AACA;AACA;AACA;AACA,mBAAmB,wDAAK;AACxB;AACA;AACO,kCAAkC,8EAAe;AACxD;AACA,eAAe,2GAAmC;AAClD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,kEAAkE;AACxF;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wGAAqC;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,qFAAqF;AAC3G;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wGAAqC;AAC9B,mCAAmC,8EAAe;AACzD;AACA,eAAe,4GAAoC;AACnD;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,mEAAmE;AACzF;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0FAAgC;AACxD;AACA,sBAAsB,sFAAsF;AAC5G;AACA;AACA,SAAS;AACT;AACA;AACA,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;AACrB,mFAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7IrB;AACA;AACA;AACA;AAC0B;AAC0B;AACS;AACD;AACM;AACE;AACT;AACR;AACsB;AACzE,yBAAyB,wDAAK,KAAK,uDAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kFAAoC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kFAAoC;AAC5C,QAAQ,+DAAiB,mBAAmB,eAAe,wBAAwB,2BAA2B,wBAAwB,aAAa,iBAAiB,aAAa,GAAG,YAAY,aAAa,GAAG,iBAAiB,aAAa,GAAG;AACjP;AACA;AACA,+EAA+E,QAAQ,sEAAmB,mBAAmB,6EAA6E,EAAE;AAC5M;AACA;AACA;AACA;AACA;AACA,yBAAyB,oEAAW;AAC7B;AACP,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA,uBAAuB,8DAAiB;AACxC,QAAQ,0DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iEAAc,eAAe,6DAAU,eAAe,sEAAmB;AAC/F;AACA;AACA;AACA,wFAAwF,iBAAiB,oFAA4B,EAAE;AACvI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAAI,sBAAsB,kCAAkC;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvYA;AACA;AACA;AACA;AACyB;AAC4C;AACF;AACN;AACU;AACI;AACE;AACF;AACA;AACJ;AACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACdhC;AACA;AACA;AACA;AAC8C;AACA;AACA;AACH;AACK;AACM;AACA;AACN;AACN;AACe;AACP;AACF;AACV;AACQ;AACF;AACd;AACY;AACJ;AACE;AACG;AACM;AACH;AACiB;AACrB;AACR;AACY;AACM;AACE;AACpB;AACY;AACM;AACV;AACN;AACU;AACG;AACD;AACA;AACY;AACQ;AACA;AACd;AACF;AACQ;AAC5D;AACA;AACuC;AACe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDtD;AACA;AACA;AACA;AACiE;AACW;AACK;AACM;AACvF;AACA;AACA,sGAAyC;AACzC,mGAAsC;AACtC,kGAAqC;AACrC,0GAA6C;AAC7C,YAAY,yFAAmB;AAC/B,aAAa,8FAAqB;AAClC,gBAAgB,oGAAwB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChDoD;AACP;AACC;AACA;AACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJhD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACiC;AACsB;AACqB;AACY;AACvB;AACF;AACG;AACF;AACF;AACT;AACuG;AACnF;AAC4B;AACI;AACN;AACT;AACZ;AACoE;AACnD;AACnB;AAC5E,iDAAiD,qFAAa;AAC9D,4EAA4E,iEAAU;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC;AACA;AACA;AACA,eAAe,2FAAgC;AAC/C;AACA;AACA;AACA,mBAAmB,2DAAc,CAAC,oGAAyC;AAC3E;AACA,eAAe,2DAAc,CAAC,+FAAoC;AAClE;AACA;AACA,eAAe,2DAAc,CAAC,mGAAwC;AACtE;AACA;AACA,eAAe,2DAAc,CAAC,8FAAmC;AACjE;AACA;AACA;AACA,oEAAoE,8DAAM;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+EAAiB;AACzC;AACA;AACA;AACA;AACA,+BAA+B,+EAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,+EAAiC;AACxD;AACA;AACA;AACA;AACA,gBAAgB,oEAAK,CAAC,+FAAoC;AAC1D;AACA;AACA,iBAAiB;AACjB,gBAAgB,2DAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oEAAK,CAAC,2FAAgC;AACtD;AACA;AACA;AACA;AACA,yCAAyC,0DAAS;AAClD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2DAAc;AACjC;AACA,eAAe,2DAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,wBAAwB,kGAAuC;AAC/D;AACA;AACA,wBAAwB,kGAAuC;AAC/D;AACA;AACA;AACA;AACA,wBAAwB,8FAAmC;AAC3D;AACA;AACA,wBAAwB,8FAAmC;AAC3D;AACA;AACA,+BAA+B,iEAAoB;AACnD,cAAc,mGAAwC;AACtD,cAAc,wGAA6C;AAC3D;AACA;AACA;AACA;AACA;AACA,oCAAoC,uFAA4B;AAChE;AACA;AACA,oCAAoC,wFAA6B;AACjE;AACA;AACA;AACA;AACA,4DAA4D,2GAA2B,EAAE,iGAAsC,EAAE,qGAA0C;AAC3K;AACA;AACA,4DAA4D,2GAA2B,EAAE,kGAAuC,EAAE,sGAA2C;AAC7K;AACA,gCAAgC,iEAAoB;AACpD,cAAc,0FAA+B;AAC7C,cAAc,+FAAoC;AAClD;AACA,yBAAyB,wFAA6B;AACtD,iDAAiD,2FAAmB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0FAAkB;AACjC,eAAe,0FAAkB;AACjC,eAAe,8EAAc;AAC7B;AACA,0CAA0C,uEAAY;AACtD;AACA;AACA;AACA,mBAAmB,2GAAgD;AACnE;AACA;AACA;AACA,wBAAwB,kFAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAA0B;AAC1B,mFAAoB;AACpB,iCAAiC,2FAAgC;AACjE,oFAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gBAAgB,kFAAuB;AACvC;AACA;AACA;AACA,CAAC;AACD,mGAA0B;AAC1B,4CAA4C,4FAAsB;AAClE;AACA,oEAAoE,qBAAqB,kBAAkB,EAAE;AAC7G;AACA,4CAA4C,4FAAsB;AAClE;AACA,oEAAoE,UAAU,kBAAkB,EAAE;AAClG;AACA,6CAA6C,kFAAY;AACzD;AACA,oEAAoE,yBAAyB,mBAAmB,EAAE;AAClH;AACA,oCAAoC,oFAAc;AAClD;AACA,oEAAoE,qBAAqB,UAAU,EAAE;AACrG;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;ACpTD;AACA;AACA;AACA;AAC6D;AACF;AACE;AACA;AACoD;AACrC;AACP;AAC9D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sEAAyB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sEAAwB;AAC5D;AACA;AACA;AACA,2CAA2C,6EAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sEAAwB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAY;AACtC;AACA,uBAAuB,8EAAgC;AACvD;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,6BAA6B,8FAAkC;AAC/D,4BAA4B,6FAAiC;AAC7D,2BAA2B,uFAAc,KAAK,mFAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6EAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA,+BAA+B,kEAAU;AACzC,6BAA6B,8FAAkC;AAC/D,4BAA4B,6FAAiC;AAC7D,2BAA2B,uFAAc,KAAK,mFAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA,QAAQ,qFAA6B;AACrC,6BAA6B,kEAAU;AACvC,6BAA6B,8FAAkC;AAC/D,4BAA4B,6FAAiC;AAC7D,2BAA2B,uFAAc,KAAK,mFAAe;AAC7D;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACgC;AAC+B;AACR;AACW;AACgB;AAC3E,+BAA+B,iEAAU;AAChD;AACA;AACA;AACA;AACA,YAAY,4DAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iEAAU;AAC3C;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAyB;AAChD;AACA,SAAS;AACT,uBAAuB,uEAAyB;AAChD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;;;;;;;;;;;;;;;;;;;;;;;;;ACtE1B;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6B;AACsC;AACV;AACS;AACoD;AACvC;AACa;AACrB;AACU;AACoD;AACvB;AACtC;AACxE,oEAAoE,iEAAU;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8EAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sFAAuB;AACtC,eAAe,yEAAY;AAC3B;AACA,4BAA4B,sEAAY;AACxC;AACA;AACA;AACA,mBAAmB,+FAAoC;AACvD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iBAAiB;AACpE;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAwB;AACtD;AACA;AACA;AACA;AACA,+BAA+B,iEAAU;AACzC,gDAAgD,uEAAY;AAC5D,iDAAiD,wEAAa;AAC9D;AACA;AACA,kCAAkC,iEAAU;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK,gBAAgB,uDAAC,uDAAuD,uDAAC,uCAAuC,iBAAiB,GAAG,0CAA0C;AAC3L,QAAQ,4DAAM,gBAAgB,uDAAC,iCAAiC,wBAAwB;AACxF;AACA,QAAQ,4DAAM,gBAAgB,uDAAC,uCAAuC,uDAAC,qBAAqB,uDAAC,kBAAkB,uDAAC,+CAA+C,uDAAC,uCAAuC,wDAAwD,KAAK,uDAAC,kBAAkB,uDAAC,iDAAiD,uDAAC,uCAAuC,+DAA+D,KAAK,uDAAC,kBAAkB,uDAAC,iDAAiD,uDAAC,uCAAuC,+DAA+D,KAAK,uDAAC,kBAAkB,uDAAC,iDAAiD,uDAAC,uCAAuC,WAAW,6EAA0B,8BAA8B,KAAK,uDAAC,kBAAkB,uDAAC,iDAAiD,uDAAC,uCAAuC,WAAW,6EAA0B,8BAA8B;AAC38B,QAAQ,4DAAM,gBAAgB,uDAAC;AAC/B;AACA,YAAY,4DAAM,gBAAgB,uDAAC;AACnC;AACA;AACA;AACA;AACA,uBAAuB,8EAAgC;AACvD,yBAAyB,yEAA2B;AACpD,wBAAwB,wEAA0B;AAClD,wBAAwB,wEAA0B;AAClD,yBAAyB,yEAA2B;AACpD,yBAAyB,yEAA2B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;AAC1B,kFAAoB;AACpB,mGAA0B;AAC1B,kCAAkC,sFAAiB;AACnD;AACA,yCAAyC,kFAAa;AACtD,kEAAkE,WAAW,YAAY,WAAW,QAAQ,EAAE;AAC9G,4FAA4F,qBAAqB,QAAQ,EAAE;AAC3H;AACA,sCAAsC,0FAAqB;AAC3D;AACA,kEAAkE,qBAAqB,YAAY,EAAE;AACrG;AACA,sCAAsC,0FAAqB;AAC3D;AACA,kEAAkE,UAAU,YAAY,EAAE;AAC1F;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3PD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC4E;AACO;AACZ;AACa;AAC4B;AACzC;AAC4B;AACT;AACP;AACI;AACS;AACN;AACjB;AACiB;AAC1F,gGAAgG,kHAAyC;AACzI;AACA,eAAe,mBAAmB;AAClC;AACA;AACA,mCAAmC,QAAQ,0EAAmB,gDAAgD;AAC9G;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,kGAAqB;AACpC,eAAe,sFAAkB;AACjC,eAAe,yFAAkB;AACjC,eAAe,kFAAe;AAC9B,eAAe,sFAAiB;AAChC,eAAe,gGAAoB;AACnC;AACiD;AACjD,8EAAW,CAAC,8FAAsB;AAClC;AACA;AACA,mBAAmB,cAAc,0FAAgC,qBAAqB;AACtF,CAAC;AACM,6BAA6B,uEAAY;AAChD;AACA;AACA;AACA,mBAAmB,iGAAuC;AAC1D;AACA;AACA;AACA,wBAAwB,kFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qBAAqB,0FAAkB;AACvC;AACA;AACA,mFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpFpB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC0G;AAC9B;AACO;AACC;AACb;AACJ;AACV;AACiC;AACjB;AACiB;AAC1F,gGAAgG,4GAAmC;AACnI;AACA;AACA;AACA,kDAAkD,6DAAU;AAC5D;AACA;AACA,eAAe,0EAAmB;AAClC;AACA;AACA;AACA,eAAe,sFAAkB;AACjC;AACiD;AACjD,8EAAW,CAAC,8FAAsB;AAClC;AACA;AACA,mBAAmB,cAAc,yFAA+B,qBAAqB;AACrF,CAAC;AACM,6BAA6B,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,yFAA+B;AAClD;AACA;AACA;AACA,wBAAwB,iFAAuB;AAC/C;AACA,sBAAsB,8CAA8C;AACpE;AACA;AACA,SAAS;AACT;AACA;AACA,qBAAqB,yFAAkB;AACvC;AACA;AACA,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7DpB;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC8G;AAClC;AACO;AACC;AACb;AACA;AACd;AACiC;AACjB;AACiB;AAC1F,oGAAoG,gHAAqC;AACzI;AACA;AACA;AACA,kDAAkD,6DAAU;AAC5D;AACA;AACA,eAAe,0EAAmB;AAClC;AACA;AACA;AACA,eAAe,sFAAkB;AACjC;AACmD;AACnD,8EAAW,CAAC,8FAAsB;AAClC;AACA,YAAY,uHAA4C;AACxD;AACA,SAAS,cAAc,iGAAuC,UAAU,uHAA4C,qBAAqB;AACzI,SAAS,cAAc,2GAAiD,UAAU,mIAAwD;AAC1I;AACA,CAAC;AACM,6BAA6B,sEAAY;AAChD;AACA;AACA;AACA,mBAAmB,iGAAuC;AAC1D;AACA,0BAA0B,qGAA2C;AACrE;AACA,wBAAwB,iFAAuB;AAC/C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qBAAqB,yFAAkB,mBAAmB,uHAA4C;AACtG;AACA;AACA,kFAAoB;;;;;;;;;;;;;;;;;ACnEpB;AACA;AACA;AACA;AAC4E;AACO;AACf;AACiC;AACrG,8EAAW,CAAC,8FAAsB;AAClC,UAAU,oGAAuB;AACjC;AACA,mBAAmB,cAAc,iGAAuC,qBAAqB;AAC7F,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACoC;AAC8C;AACA;AACN;AACuB;AACT;AACS;AACb;AACF;AACM;AAC7B;AAC7D,wFAAwF,yFAAiB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yCAAyC,EAAE;AACxE,6BAA6B,+BAA+B,EAAE;AAC9D,4BAA4B,iCAAiC,EAAE;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kGAAqB;AACpC,eAAe,yFAAkB;AACjC,eAAe,iFAAa;AAC5B,eAAe,kGAAqB;AACpC,eAAe,qFAAc;AAC7B;AAC6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAI;AAChB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,uBAAuB,uCAAuC;AAC9D,4BAA4B,UAAU,gFAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kGAAqB;AACpC,eAAe,sFAAkB;AACjC;AAC2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,wFAA0B;;;;;;;;;;;;;;;;;;;;;;;;ACxH1B;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACkF;AACE;AACY;AACG;AACT;AACS;AACH;AACf;AACjF,kFAAkF,kGAAoB;AACtG;AACA;AACA;AACA;AACA;AACA,eAAe,yFAAkB;AACjC,eAAe,sFAAkB;AACjC,eAAe,+FAAoB;AACnC,eAAe,kGAAqB;AACpC,eAAe,gFAAe;AAC9B,eAAe,kGAAqB;AACpC;AAC0C;AAC1C,wFAA0B,CAAC,qGAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnClD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2D;AACP;AAC2B;AAChB;AACuB;AAC2B;AACrC;AACpB;AACN;AACY;AACe;AACsC;AAChD;AACH;AACb;AACmB;AACW;AACe;AACuE;AAC1D;AACd;AACE;AACM;AACQ;AACtB;AACP;AACZ;AAC/D;AACP;AACA;AACA;AACA,8BAA8B,0DAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wEAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAa;AAC5B;AAC4C;AACrC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,EAAE;AACnB,kBAAkB,EAAE;AACpB,mBAAmB;AACnB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACO;AACP;AACA,4BAA4B,WAAW,kEAAa,WAAW;AAC/D;AACA;AACA,4BAA4B,WAAW,qEAAgB,WAAW;AAClE;AACA;AACA,4BAA4B,WAAW,mEAAc,kBAAkB;AACvE;AACA;AACA;AACA,iBAAiB,mEAAc;AAC/B;AACA;AACA,iBAAiB,qEAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sEAAe;AAC9B;AACA;AACA,sCAAsC,4FAAgB;AAC/C;AACP;AACA,yCAAyC,0DAAO;AAChD,wCAAwC,0DAAO;AAC/C;AACA;AACA;AACA,wBAAwB,+FAA2B;AACnD;AACA,wDAAwD,GAAG;AAC3D;AACA;AACA,6CAA6C,sBAAsB;AACnE;AACA,4CAA4C,sBAAsB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACO,0CAA0C,gHAAyB;AAC1E;AACA;AACA;AACA;AACA,uBAAuB,uEAAyB,UAAU,oEAAsB;AAChF,+BAA+B,iFAAqB;AACpD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,0EAAgB,cAAc,wDAAE;AAC3D,8BAA8B,sEAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,0BAA0B,uEAAY;AACtC,+BAA+B,qCAAqC;AACpE;AACA;AACA;AACA,6CAA6C,0BAA0B;AACvE;AACA;AACA;AACA,aAAa;AACb;AACA,sBAAsB,oGAAgC;AACtD,6BAA6B,0BAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,0HAAyC;AACxG;AACA,uCAAuC,kGAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0GAAsB;AAChE;AACA;AACA;AACA;AACA,8CAA8C,0GAAsB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kHAA0B,aAAa,wDAAE;AAC7D;AACA;AACA,6BAA6B,sEAAgB;AAC7C,mBAAmB,kHAA0B,aAAa,wDAAE;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,oDAAG;AAC5D;AACO;AACP;AACA,6CAA6C,0DAAO;AACpD;AACA,kCAAkC,iGAAa,KAAK,6GAAyB,QAAQ,sGAAkB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4GAAwB,EAAE,mCAAmC;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,0DAAO;AACpD;AACA,iDAAiD,yHAAyH;AAC1K,SAAS;AACT;AACA;AACA,yBAAyB,2EAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,yCAAyC;AAC9G;AACA;AACA;AACA,gBAAgB,6DAAO,IAAI,iEAAW;AACtC;AACA;AACA;AACA,eAAe,mGAAqB;AACpC;AAC2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,yBAAyB,yDAAQ,EAAE,8EAA8E;AACjH,0BAA0B,2DAA2D,qFAAe,EAAE,oCAAoC;AAC1I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+FAAwB;AACpC,qCAAqC,IAAI;AACzC;AACA,4BAA4B,mGAA4B;AACxD,yCAAyC,IAAI;AAC7C;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mFAAgB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qFAAyB,CAAC,8DAAU;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAAc,CAAC,mGAAwC;AACpF;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,wBAAwB,6DAAU;AAClC;AACA;AACA;AACA,8BAA8B,+DAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClcA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC8D;AACgC;AACb;AACL;AACA;AACR;AACgB;AACQ;AACd;AACK;AACe;AACF;AACO;AACS;AAChB;AACT;AACM;AACd;AACiB;AACpB;AACe;AACJ;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,2EAAqB;AACzB;AACA;AACA;AACA;AACA,8DAA8D,iFAAgB;AAC9E;AACA;AACA,iDAAiD,4GAAiD;AAClG,kDAAkD,KAAK,2GAAgD;AACvG,qCAAqC;AACrC,yCAAyC,2EAA2B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kGAA0B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAe;AAClC;AACA;AACA;AACA;AACA,6BAA6B,0FAAkB,CAAC,6FAAqB,4BAA4B,kGAA0B;AAC3H;AACA,gCAAgC,0FAAkB,eAAe,kGAA0B;AAC3F;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAe;AAC7C;AACA;AACA;AACA,sBAAsB,oGAAgC;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0BAA0B,4FAA2B,CAAC,qFAAoB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yEAAoB;AACrD;AACA;AACA,sBAAsB,uEAAY;AAClC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC,eAAe,sFAAkB;AACjC,eAAe,mFAAe;AAC9B,eAAe,0FAAkB;AACjC,eAAe,0FAAkB;AACjC,eAAe,kFAAa;AAC5B,eAAe,gGAAoB;AACnC,eAAe,mGAAqB;AACpC;AACgC;AAChC;AACA;AACA,QAAQ,4EAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4EAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC,eAAe,sFAAkB;AACjC,eAAe,mFAAe;AAC9B,eAAe,0FAAkB;AACjC,eAAe,0FAAkB;AACjC,eAAe,8FAAmB;AAClC,eAAe,sFAAuB;AACtC,gBAAgB,gGAAoB;AACpC,gBAAgB,mGAAqB;AACrC,gBAAgB,mGAAqB;AACrC;AAC4B;AAC5B,8DAA8D,iFAAgB;AAC9E;AACA,QAAQ,4EAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4EAAwB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mGAAqB;AACpC,eAAe,0FAAkB;AACjC,eAAe,0FAAkB;AACjC,eAAe,8FAAmB;AAClC,eAAe,yFAAoB;AACnC,eAAe,sFAAkB;AACjC,eAAe,sFAAuB;AACtC,gBAAgB,gGAAoB;AACpC,gBAAgB,mGAAqB;AACrC,gBAAgB,8FAAmB;AACnC,gBAAgB,0FAAsB;AACtC,gBAAgB,8FAAiB;AACjC;AACgC;;;;;;;;;;;;;;;;;;;AC7QhC;AACA;AACA;AACA;AACkE;AACR;AAC8B;AACjF,8CAA8C,6FAAqB;AAC1E;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAY,eAAe,kEAAa;AACvE;AACA,oBAAoB,wEAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtDA;AACA;AACA;AACA;AACiC;AACgD;AACT;AACF;AAC0B;AACvB;AACf;AACkB;AAC7B;AAC2B;AACU;AACP;AACiB;AAChB;AACnC;AAC4B;AACY;AACC;AACN;AACE;AACgB;AACT;AACyB;AAChB;AACT;AACM;AAClB;AACqB;AACtB;AACa;AACI;AAC3F;AACA,uBAAuB,8EAAyB;AAChD;AACA,sBAAsB,mFAAiB;AACvC,+CAA+C,iFAAgC,CAAC,oFAA+B;AAC/G,qBAAqB,mFAAiB;AACtC;AACA,sBAAsB,8EAAc;AACpC,qBAAqB,8EAAc,MAAM,6EAAa,cAAc,sFAAkB,gBAAgB,mFAAe;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,+DAA+D;AAC/D,mBAAmB,uEAAgB,6CAA6C,mGAAqB,gBAAgB,sFAAkB,gBAAgB,mFAAe,gBAAgB,0FAAkB,gBAAgB,0FAAkB,gBAAgB,8FAAmB,gBAAgB,uFAAuB,gBAAgB,gGAAoB,gBAAgB,mGAAqB,gBAAgB,mGAAqB;AACla,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,yFAAoC;AAC/C;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACO;AACP,+DAA+D;AAC/D,mBAAmB,2EAAoB,6CAA6C,mGAAqB,gBAAgB,0FAAkB,gBAAgB,0FAAkB,gBAAgB,8FAAmB,gBAAgB,0FAAoB,gBAAgB,sFAAkB,gBAAgB,uFAAuB,gBAAgB,gGAAoB,gBAAgB,mGAAqB,gBAAgB,8FAAmB,gBAAgB,0FAAsB,gBAAgB,8FAAiB;AAChf,KAAK;AACL;AACO;AACP,eAAe,2EAAa;AAC5B;AACA;AACA,WAAW,oFAA+B;AAC1C;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mFAA8B;AAClE;AACA,gCAAgC,mFAA8B;AAC9D;AACA;AACA;AACA;AACO;AACP,IAAI,oFAA+B,kBAAkB,mFAA8B;AACnF;AACA;AACA;AACA;AACO;AACP;AACA,QAAQ,qFAAgC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,qFAAgC;AAC3C;AACA;AACA;AACA;AACO;AACP,WAAW,oFAA+B;AAC1C;AACA;AACA;AACA;AACO;AACP,WAAW,oFAA+B;AAC1C;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,oFAA+B;AAC1C;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,oFAA+B;AAC1C;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,oFAA+B;AAC1C;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,+EAAqB,CAAC,oFAA+B;AAChE;AACA;AACA;AACA;AACO;AACP,yBAAyB,8FAAyC;AAClE;AACA,WAAW,qEAAyB,eAAe,mFAA8B;AACjF;AACA;AACA;AACA;AACO;AACP,yBAAyB,8FAAyC;AAClE;AACA,WAAW,8DAAkB,CAAC,mFAA8B;AAC5D;AACA;AACA;AACA;AACO;AACP,yBAAyB,8FAAyC;AAClE;AACA,WAAW,uEAA2B;AACtC;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAA8B;AAC5D;AACA;AACA;AACA;AACA,+BAA+B,iEAAU;AACzC,gDAAgD,uEAAY;AAC5D;AACA;AACA;AACA;AACA;AACO;AACP,sBAAsB,mFAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,IAAI,8FAAyC;AAC7C;AACA;AACA;AACA;AACO;AACP,IAAI,8FAAyC;AAC7C;AACA;AACA;AACA;AACO;AACP,IAAI,oFAAiB;AACrB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wFAAoC;AAClE,yCAAyC,mGAA+C;AACxF,4BAA4B,sFAAkC;AAC9D,0BAA0B,oFAAgC;AAC1D,kCAAkC,4FAAwC;AAC1E,sBAAsB,gFAA4B;AAClD,6BAA6B,uFAAmC;AAChE,2BAA2B,qFAAiC;AAC5D,yBAAyB,mFAA+B;AACxD,yBAAyB,mFAA+B;AACxD,yCAAyC,mGAA+C;AACxF,2BAA2B,qFAAiC;AAC5D,+BAA+B,yFAAqC;AACpE,uBAAuB,iFAA6B;AACpD,6BAA6B,uFAAmC;AAChE,oBAAoB,8EAA0B;AAC9C,uCAAuC,iGAA6C;AACpF,+BAA+B,yFAAqC;AACpE,gCAAgC,0FAAsC;AACtE,wBAAwB,kFAA8B;AACtD;AACA,mCAAmC,sFAAyB;AAC5D,sBAAsB,oEAAY;AAClC,kBAAkB,gEAAQ;AAC1B,kCAAkC,sEAAwB;AAC1D,mBAAmB,uDAAS;AAC5B;AACA,oBAAoB,+DAAU;AAC9B,uBAAuB,0EAAa;AACpC;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9SA;AACA;AACA;AACA;AACmD;AACyC;AAC7C;AACqD;AAChC;AACU;AACrB;AACK;AACgB;AAC9E;AACA;AACA;AACO;AACP,IAAI,0FAA8B;AAClC;AACA;AACA;AACA;AACO;AACP;AACA,2BAA2B,sFAA0B;AACrD;AACA;AACO;AACP,cAAc,kFAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACO;AACP,qBAAqB,kFAA8B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,kFAA8B;AAC3D;AACA,yEAAyE,WAAW;AACpF;AACA,WAAW,kHAAsC;AACjD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAmB;AACtC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qEAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,kFAA8B;AAC3D;AACA,2EAA2E,WAAW;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6FAAyC;AAC5F;AACA;AACA;AACA,eAAe,kFAA0C;AACzD;AACA,WAAW,2EAAmC;AAC9C;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,0FAAyB,CAAC,kFAA8B,IAAI,6FAAyC,gBAAgB,0EAAO;AAC3I;AACA;AACA,eAAe,kFAA0C;AACzD;AACA,WAAW,2EAAmC;AAC9C;AACA;AACA;AACA;AACO;AACP,WAAW,gFAAwC;AACnD;AACA;AACA;AACA;AACO;AACP,WAAW,6EAAqC;AAChD;AACA;AACA;AACA;AACO;AACP,WAAW,oFAA4C;AACvD;AACA;AACA;AACA;AACO;AACP,WAAW,4EAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wDAAK;AAC3C;AACA;AACA,sCAAsC,wDAAK;AAC3C;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,WAAW,qFAA6C;AACxD;AACA;AACA;AACA;AACO;AACP,WAAW,wFAAgD;AAC3D;AACA;AACA;AACA;AACO;AACP,WAAW,mFAA2C;AACtD;AACA;AACA;AACA;AACO;AACP,WAAW,iFAAyC;AACpD;AACA;AACA;AACA;AACO;AACP,WAAW,qFAA6C;AACxD;AACA;AACA;AACA;AACO;AACP,WAAW,qFAA6C;AACxD;AACA;AACA;AACA;AACO;AACP,WAAW,+EAAuC;AAClD;AACA;AACA;AACA;AACO;AACP,WAAW,iFAAyC;AACpD;AACA,0BAA0B,oFAAgC,SAAS,sBAAsB;AACzF,uBAAuB,kFAA+B;AACtD,aAAa;AACb,8DAA8D,8BAA8B;AAC5F;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,WAAW,6FAAqD;AAChE;AACA;AACA;AACA;AACO;AACP,WAAW,kGAA0D;AACrE;AACA;AACA;AACA;AACO;AACP,WAAW,2FAAmD;AAC9D;AACA;AACA;AACA;AACO;AACP,WAAW,2EAAmC;AAC9C;AACA;AACA;AACA;AACO;AACP,WAAW,iFAAyC;AACpD;AACA;AACA;AACA;AACO;AACP,WAAW,4EAAoC;AAC/C;AACA;AACA;AACA;AACO;AACP,WAAW,mFAA2C;AACtD;AACA;AACA;AACA;AACO;AACP,WAAW,kFAA0C;AACrD;AACA;AACA;AACA;AACO;AACP,WAAW,6EAAqC;AAChD;AACA;AACA;AACA;AACO;AACP,WAAW,6FAAqD;AAChE;AACA;AACA;AACA;AACO;AACP,WAAW,kGAA0D;AACrE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,wFAAqC;AACpE,4BAA4B,qFAAkC;AAC9D,2BAA2B,oFAAiC;AAC5D,sCAAsC,+FAA4C;AAClF,oBAAoB,6EAA0B;AAC9C,mBAAmB,4EAAyB;AAC5C,sBAAsB,+EAA4B;AAClD,+BAA+B,wFAAqC;AACpE,kCAAkC,2FAAwC;AAC1E;AACA,0BAA0B,8DAAsB;AAChD;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9ZA;AACA;AACA;AACA;AAC+D;AACc;AACI;AACG;AACO;AACvB;AACO;AACL;AACO;AACiE;AAC0P;AACvT;AACJ;AACC;AACH;AACK;AACgB;AACF;AACP;AACU;AACe;AACf;AACpB;AACoC;AACX;AACN;AACT;AACf;AACkB;AACL;AACH;AACL;AACgB;AACN;AACe;AAClB;AACL;AACY;AACb;AACgB;AACG;AACD;AACb;AACmB;AACA;AACX;AACO;AACjB;AACM;AACW;AACX;AACgD;AAChI;AACP;AACA,mCAAmC,mGAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mGAAiB;AAC1C;AACA,uCAAuC,6GAA8B;AACrE;AACA;AACA;AACA;AACA;AACA,2BAA2B,iGAAe;AAC1C;AACA;AACA;AACA;AACA;AACA,uCAAuC,yGAAoB;AAC3D,mBAAmB,mGAAqB;AACxC;AACA;AACA;AACA,iDAAiD,mGAAqB,YAAY,yGAAoB;AACtG,yCAAyC,2EAA0B;AACnE,iDAAiD,mGAAqB;AACtE,yDAAyD,mHAAiC,YAAY,mFAAkC;AACxI,sDAAsD,gHAA8B,YAAY,gFAA+B;AAC/H,2CAA2C,8FAAwB,YAAY,8EAA6B;AAC5G,yCAAyC,2EAAa,YAAY,sEAAqB;AACvF,6CAA6C,uFAAiB,YAAY,2EAA0B;AACpG,0CAA0C,gFAAc,YAAY,oEAAmB;AACvF,gDAAgD,gGAAoB,YAAY,0EAAyB;AACzG,0CAA0C,gFAAc,YAAY,qFAAa;AACjF,wCAAwC,yEAAY,aAAa,gFAAe;AAChF,mDAAmD,uFAAuB,YAAY,uFAA0B;AAChH,uCAAuC,qEAAW,YAAY,2EAAiB;AAC/E,4CAA4C,oFAAgB,aAAa,0FAAe;AACxF,yCAAyC,2EAAa,aAAa,kFAAgB;AACnF,qDAAqD,oGAAyB,aAAa,uGAAwB;AACnH,8CAA8C,sFAAkB,aAAa,2FAA+B;AAC5G,kDAAkD,0FAAsB,YAAY,4EAA2B;AAC/G,2CAA2C,iFAAe,YAAY,wFAAsB;AAC5F,+CAA+C,0GAA+B,YAAY,yGAA8B;AACxH,gDAAgD,yFAAoB,aAAa,gGAAuB;AACxG,CAAC,wCAAwC;AAClC,wCAAwC,iEAAU;AACzD;AACA;AACA;AACA;AACA;AACA,8CAA8C,mGAAqB;AACnE,6CAA6C,gGAAoB;AACjE,0CAA0C,uFAAiB;AAC3D,sCAAsC,kFAAa;AACnD,oCAAoC,qEAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0FAAkB,2BAA2B,iGAAiB;AACrG,eAAe,mGAAqB,YAAY,yGAAoB;AACpE,eAAe,gFAAY,YAAY,+EAAW;AAClD,oCAAoC,mFAAe,YAAY,yEAAwB;AACvF,uCAAuC,0FAAkB,2BAA2B,4EAA2B;AAC/G,mCAAmC,sFAAc,YAAY,oEAAmB,sCAAsC,sFAAkB;AACxI,eAAe,0FAAkB,YAAY,4GAA+B,6DAA6D,sFAAkB;AAC3J,wCAAwC,8FAAmB,2BAA2B,oGAAkB;AACxG,eAAe,8FAAiB,YAAY,qGAAuB;AACnE,eAAe,8FAAmB;AAClC,2CAA2C,oGAAkB;AAC7D,0CAA0C,oBAAoB,EAAE;AAChE;AACA,SAAS;AACT,eAAe,8EAAY,YAAY,iFAAW;AAClD,eAAe,kFAAgB,YAAY,sEAAqB,iCAAiC,2EAAa;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzLA;AACA;AACA;AACA;AACoD;AACE;AACE;AACoB;AAC2B;AAC3C;AACa;AACI;AACoB;AAClC;AACoB;AACnF;AACA;AACA;AACA,sBAAsB,8EAAW,CAAC,iGAA4B;AAC9D,wBAAwB,8EAAW,CAAC,kGAAqC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gEAAa;AAC5C;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sGAAkC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yEAA2B;AACtD,0BAA0B,wEAA0B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iDAAE;AACrB;AACA,mBAAmB,sDAAO;AAC1B;AACA,mBAAmB,uDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACO,yCAAyC,iEAAU;AAC1D;AACA;AACA,sDAAsD,0DAAO;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6FAAoB;AAC/C;AACA,0BAA0B,iBAAiB,IAAI,eAAe;AAC9D;AACA;AACA;AACA,QAAQ,kGAAyB;AACjC,+BAA+B,6FAAoB;AACnD;AACA,SAAS;AACT;AACA;AACA,YAAY,+DAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kEAAoB;AAC3D;AACA;AACA;AACA;AACA,eAAe,sEAAe;AAC9B;AACA;AACA,6BAA6B,kEAAoB;AACjD;AACA;AACA;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oGAA4B;AAC1D;AACA;AACA,QAAQ,8EAAgC;AACxC;AACA;AACA;AACA;AACA,0BAA0B,iBAAiB,IAAI,eAAe;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACxQA;AACA;AACA;AACA;AAC0F;AACT;AACJ;AAC7E,iCAAiC,sEAAY;AAC7C;AACA;AACA;AACA,mBAAmB,kGAAwC;AAC3D;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oDAAoD,sFAAuB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BpB;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACO;AACP,mBAAmB,iBAAiB,IAAI,IAAI;AAC5C;AACA;AACO;AACP,wBAAwB,iBAAiB,IAAI,IAAI;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,sCAAsC;AACtC;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,+BAA+B;AAC/B;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA,oBAAoB,oDAAmB;AACvC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA;AACA;AACA,kBAAkB,0DAAyB;AAC3C;AACA,yCAAyC,qCAAqC,EAAE;AAChF,kBAAkB,0DAAyB;AAC3C;AACA;AACA,+BAA+B,gDAAgD;AAC/E;AACA;AACA;AACA;AACA;AACA,mCAAmC,gDAAgD;AACnF;AACA;AACA;AACA,oDAAoD,gEAA+B;AACnF;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,uBAAuB,sDAAqB;AAC5C,mCAAmC,gDAAgD;AACnF;AACA;AACA,uBAAuB,sDAAqB;AAC5C;AACA,6BAA6B,gEAA+B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,sBAAsB,KAAK;AAC3B;AACA;AACA;AACA,kBAAkB,0DAAyB;AAC3C;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA,oDAAoD;AACpD,iCAAiC,0DAAyB,QAAQ,gEAA+B;AACjG,sCAAsC,0DAAyB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0CAA0C;AAC1E;AACA;AACA,gCAAgC,2CAA2C,YAAY,EAAE,0BAA0B;AACnH;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAAyB,+GAA+G;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAyB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA,gDAAgD;AAChD;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gCAAgC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0DAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,kBAAkB,0DAAyB;AAC3C;AACA;AACA;AACA;AACA,aAAa,SAAS,YAAY,6BAA6B;AAC/D,aAAa,mDAAmD;AAChE,aAAa,wDAAwD;AACrE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,kBAAkB,0DAAyB;AAC3C;AACA;AACA;AACA;AACA;AACA,sBAAsB,sDAAqB;AAC3C,uBAAuB,sDAAqB;AAC5C,aAAa;AACb;AACA;AACA,kBAAkB,0DAAyB,8DAA8D,iBAAiB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACtfA;AACA;AACA;AACA;AAC+F;AAC7C;AAC2B;AACzB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wDAAK;AACnC;AACA;AACA;AACA;AACA,8CAA8C,sEAA8B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,qEAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,sEAA8B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sEAAmB;AACtC;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8EAAsC;AACnF;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAA+B;AAC/C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sEAA8B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6EAAqC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wDAAuB,iCAAiC;AAC5E;AACA,sBAAsB,0DAAyB;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB,wDAAuB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAyB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAuB,qBAAqB;AACxE;AACA,8BAA8B,0DAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4DAA2B,YAAY,wDAAuB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAA+B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAyB;AAC3D;AACA;AACA;AACA;AACA,8BAA8B,0DAAyB;AACvD;AACA;AACA,+CAA+C,gEAA+B;AAC9E;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,oCAAoC,gEAA+B,wDAAwD;AAC3H;AACA,wDAAwD;AACxD;AACA,yBAAyB,wDAAuB;AAChD,8BAA8B,0DAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA;AACA;AACA,kCAAkC,0DAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gEAA+B;AACvE;AACA,4DAA4D;AAC5D;AACA,6BAA6B,wDAAuB;AACpD,kCAAkC,0DAAyB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kDAAiB,8CAA8C,gEAA+B;AAClH;AACA;AACA;AACA;AACA,sBAAsB,0DAAyB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA,+BAA+B,oBAAoB;AACnD;AACA;AACA;AACA,0BAA0B,0DAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0DAAyB;AACvD;AACA;AACA;AACA;AACA;AACA,oBAAoB,uDAAsB;AAC1C;AACA;AACA;AACA,8BAA8B,0DAAyB;AACvD;AACA,gCAAgC,uDAAsB;AACtD;AACA;AACA;AACA,gCAAgC,uDAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sEAA8B;AACpE;AACA;AACA;AACA;AACA,oDAAoD,mEAAY,EAAE,iEAAU;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,sDAAqB;AACnC;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AC1tBA;AACA;AACA;AACA;AAC0F;AACnF,gCAAgC,gGAAe;;;;;;;;;;;;;;;;;;;;ACLtD;AACA;AACA;AACA;AACwG;AACgD;AACxJ;AACO;AACP;AACA;AACA;AACA,SAAS,wDAAwD;AACjE,SAAS,yCAAyC;AAClD,SAAS,yCAAyC;AAClD,SAAS,qCAAqC;AAC9C,SAAS,0CAA0C;AACnD,SAAS,qDAAqD;AAC9D,SAAS,0CAA0C;AACnD,SAAS,yCAAyC;AAClD,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,sCAAsC;AAC/C,SAAS,2CAA2C;AACpD,SAAS,gDAAgD;AACzD,SAAS,+CAA+C;AACxD,SAAS,qCAAqC;AAC9C,SAAS,4CAA4C;AACrD,SAAS,+CAA+C;AACxD,SAAS,2CAA2C;AACpD,SAAS,yCAAyC;AAClD,SAAS,sDAAsD;AAC/D,SAAS,8CAA8C;AACvD,SAAS,6CAA6C;AACtD,SAAS,0CAA0C;AACnD,SAAS,qCAAqC;AAC9C,SAAS,iDAAiD;AAC1D,SAAS,mDAAmD;AAC5D,SAAS,gDAAgD;AACzD,SAAS,iDAAiD;AAC1D,SAAS,wDAAwD;AACjE,SAAS,sDAAsD;AAC/D,SAAS,sDAAsD;AAC/D,SAAS,qDAAqD;AAC9D,SAAS,wCAAwC;AACjD,SAAS,6CAA6C;AACtD,SAAS,4CAA4C;AACrD,SAAS,6CAA6C;AACtD,SAAS,yCAAyC;AAClD,SAAS,8CAA8C;AACvD,SAAS,8CAA8C;AACvD,SAAS,mDAAmD;AAC5D,SAAS,+CAA+C;AACxD,SAAS,8CAA8C;AACvD,SAAS,gDAAgD;AACzD,SAAS,gDAAgD;AACzD;AACA;AACA,SAAS,qFAAgB;AACzB,SAAS,qFAAgB;AACzB,SAAS,4FAAuB;AAChC,SAAS,mFAAkB;AAC3B,SAAS,yFAAwB;AACjC,SAAS,6FAAwB;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS,wDAAwD;AACjE,SAAS,yCAAyC;AAClD,SAAS,yCAAyC;AAClD,SAAS,qCAAqC;AAC9C,SAAS,0CAA0C;AACnD,SAAS,qDAAqD;AAC9D,SAAS,oDAAoD;AAC7D,SAAS,0CAA0C;AACnD,SAAS,yCAAyC;AAClD,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,sCAAsC;AAC/C,SAAS,2CAA2C;AACpD,SAAS,gDAAgD;AACzD,SAAS,+CAA+C;AACxD,SAAS,qCAAqC;AAC9C,SAAS,4CAA4C;AACrD,SAAS,+CAA+C;AACxD,SAAS,2CAA2C;AACpD,SAAS,0CAA0C;AACnD,SAAS,yCAAyC;AAClD,SAAS,sDAAsD;AAC/D,SAAS,8CAA8C;AACvD,SAAS,6CAA6C;AACtD,SAAS,0CAA0C;AACnD,SAAS,qCAAqC;AAC9C,SAAS,iDAAiD;AAC1D,SAAS,mDAAmD;AAC5D,SAAS,gDAAgD;AACzD,SAAS,iDAAiD;AAC1D,SAAS,4DAA4D;AACrE,SAAS,0DAA0D;AACnE,SAAS,yDAAyD;AAClE,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,yCAAyC;AAClD,SAAS,8CAA8C;AACvD,SAAS,8CAA8C;AACvD,SAAS,mDAAmD;AAC5D,SAAS,+CAA+C;AACxD,SAAS,8CAA8C;AACvD,SAAS,gDAAgD;AACzD,SAAS,gDAAgD;AACzD;AACA;AACA,SAAS,qFAAgB;AACzB,SAAS,qFAAgB;AACzB,SAAS,4FAAuB;AAChC,SAAS,mFAAkB;AAC3B,SAAS,yFAAwB;AACjC,SAAS,6FAAwB;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS,wDAAwD;AACjE,SAAS,yCAAyC;AAClD,SAAS,yCAAyC;AAClD,SAAS,qCAAqC;AAC9C,SAAS,0CAA0C;AACnD,SAAS,oDAAoD;AAC7D,SAAS,0CAA0C;AACnD,SAAS,yCAAyC;AAClD,SAAS,wCAAwC;AACjD,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,sCAAsC;AAC/C,SAAS,2CAA2C;AACpD,SAAS,gDAAgD;AACzD,SAAS,qCAAqC;AAC9C,SAAS,4CAA4C;AACrD,SAAS,+CAA+C;AACxD,SAAS,sCAAsC;AAC/C,SAAS,0CAA0C;AACnD,SAAS,yCAAyC;AAClD,SAAS,sDAAsD;AAC/D,SAAS,8CAA8C;AACvD,SAAS,6CAA6C;AACtD,SAAS,0CAA0C;AACnD,SAAS,qCAAqC;AAC9C,SAAS,4CAA4C;AACrD,SAAS,8CAA8C;AACvD,SAAS,gDAAgD;AACzD,SAAS,iDAAiD;AAC1D,SAAS,wCAAwC;AACjD,SAAS,4CAA4C;AACrD,SAAS,yCAAyC;AAClD,SAAS,8CAA8C;AACvD,SAAS,8CAA8C;AACvD,SAAS,gDAAgD;AACzD,SAAS,gDAAgD;AACzD;AACA;AACA,SAAS,qFAAgB;AACzB,SAAS,qFAAgB;AACzB,SAAS,mFAAkB;AAC3B,SAAS,yFAAwB;AACjC;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClLA;AACA;AACA;AACA;AAC8C;;;;;;;;;;;;;;;;;;;;ACJV;AACpC;AACA;AACA;AACA;AACqE;AACrE;AACA;AACA;AACA,gCAAgC,mEAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA,yEAAa,IAAI;AACjB;AACA;AACA,WAAW,iPAAsB;AACjC;AACA,gFAAoB;AACpB,oCAAoC,qCAAqC,EAAE;AAC3E,CAAC;AACD,gFAAoB;AACpB,oCAAoC,qCAAqC,EAAE;AAC3E,CAAC;AACD,gFAAoB;AACpB,oCAAoC,oCAAoC,EAAE;AAC1E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzGD;AACA;AACA;AACA;AAC8C;;;;;;;;;;;;;;;;;;;;ACJV;AACpC;AACA;AACA;AACA;AACqE;AACrE;AACA;AACA;AACA,gCAAgC,mEAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACP;AACA,0EAAc,IAAI;AAClB;AACA;AACA,WAAW,sPAAuB;AAClC;AACA,gFAAoB;AACpB,oCAAoC,qCAAqC,EAAE;AAC3E,CAAC;AACD,gFAAoB;AACpB,oCAAoC,0CAA0C,EAAE;AAChF,CAAC;AACD,gFAAoB;AACpB,oCAAoC,sCAAsC,EAAE;AAC5E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClHD;AACA;AACA;AACA;AAC8C;;;;;;;;;;;;;;;;;;ACJV;AACpC;AACA;AACA;AACA;AACqE;AACrE;AACA;AACA,gCAAgC,mEAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,0EAAc,IAAI;AAClB;AACA;AACA,WAAW,sPAAuB;AAClC;AACA,8EAAkB;AAClB;AACA;AACA;AACA;AACA,CAAC;AACD,gFAAoB;AACpB,oCAAoC,qCAAqC,EAAE;AAC3E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpFD;AACA;AACA;AACA;AAC8C;;;;;;;;;;;;;;;;ACJ9C;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACH6B;AACpC;AACA;AACA;AACA;AACA;AACqF;AAChB;AACrE;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AACpB;AACP;AACA;AACA;AACA,CAAC,kCAAkC;AAC5B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AAC9B;AACP;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA,gCAAgC,mEAAO;AACvC,yCAAyC,mEAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,oBAAoB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM,wBAAwB,iFAAS;AACjC,0DAA0D,0DAA0D,GAAG,yDAAyD,IAAI;AACpL,0DAA0D,yEAAyE,GAAG,wDAAwD,IAAI;AAClM;AACP,2CAA2C,mCAAmC,EAAE;AAChF;AACO;AACP,2CAA2C,mCAAmC,EAAE;AAChF;AACA;AACA,gFAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4PAAqB;AAChC;AACA,gFAAoB;AACpB,2CAA2C,iDAAiD,EAAE;AAC9F,CAAC;AACD,gFAAoB;AACpB,2CAA2C,iDAAiD,EAAE;AAC9F,CAAC;;;;;;;;;;;;;;;;AC/ND;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA,SAAS;AACT;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AAC8E;AACR;AAC/D,8BAA8B,uFAAe;AAC7C,+CAA+C,2EAAa;;;;;;;;;;;;;;;;;;;;;ACPnE;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC+D;AACS;AAChB;AACmB;AACS;AACpF,8DAA8D,iEAAU;AACxE;AACA;AACA;AACA;AACA;AACA,qDAAqD,0DAAO;AAC5D,gDAAgD,wFAAyC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC,eAAe,yFAAqB;AACpC;AACgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDhC;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACkG;AACxC;AACE;AACJ;AACU;AACmC;AAC/B;AAC3B;AACW;AACyB;AACJ;AACM;AAClB;AACwB;AACkB;AACzG;AACA,oCAAoC,0DAAO;AAC3C;AACA;AACA,kCAAkC,sEAAe;AACjD;AACA;AACA,gCAAgC,gEAAQ;AACxC,2CAA2C,+DAAS,IAAI,6DAAO;AAC/D,SAAS;AACT,gCAAgC,gEAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gCAAgC,gEAAQ;AACxC,gCAAgC,gEAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8DAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAS;AACrC;AACA;AACA;AACA;AACA;AACA,gBAAgB,oEAAW;AAC3B;AACA,oEAAoE,0FAAc;AAClF;AACA,mCAAmC,4FAA4F;AAC/H;AACA;AACA;AACA;AACA,oDAAoD,wEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,gEAAQ;AAC/B;AACA;AACA,SAAS;AACT,uBAAuB,gEAAQ;AAC/B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iDAAQ,iBAAiB,EAAE,GAAG,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iFAAqB;AACjC;AACA,8BAA8B,iFAAqB;AACnD;AACA,gBAAgB,gEAAU;AAC1B,+CAA+C,uEAAY;AAC3D;AACA,wBAAwB,mEAAa;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mEAAa,UAAU,UAAU,wBAAwB,8DAAQ,0BAA0B;AAC/G,oBAAoB,mEAAa,mBAAmB,UAAU,oBAAoB,UAAU,wBAAwB,8DAAQ,YAAY;AACxI;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B,mDAAmD,uEAAY;AAC/D;AACA,4BAA4B,mEAAa;AACzC;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iFAAkB;AACjC,eAAe,uFAAoB;AACnC,eAAe,oFAAmB;AAClC;AACmC;AACnC,0EAA0E,4GAA0B;AACpG;AACA;AACA;AACA;AACA,gBAAgB,iFAAqB;AACrC,gCAAgC,iFAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mEAAa,UAAU,UAAU,wBAAwB,8DAAQ,kDAAkD;AACvI,oBAAoB,mEAAa,mBAAmB,UAAU,oBAAoB,UAAU,wBAAwB,8DAAQ,wBAAwB;AACpJ;AACA;AACA;AACA;AACA,4DAA4D,aAAa;AACzE;AACA;AACA;AACA,eAAe,uFAAoB;AACnC,eAAe,oFAAmB;AAClC;AACsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1QtC;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACmF;AACL;AACH;AACP;AACH;AACT;AACI;AACI;AACzD;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qBAAqB,uFAAe;AACpC;AACP;AACA;AACA;AACA,oCAAoC,0DAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,qEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qEAAe,EAAE,WAAW;AAChE;AACA;AACA;AACA,6BAA6B,kEAAU;AACvC,oBAAoB,WAAW;AAC/B;AACA;AACA,2BAA2B,kEAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,UAAU;AACvC;AACA,SAAS;AACT;AACA;AACA,8DAA8D,2DAAM;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yEAAe;AAC9B;AACgC;AACzB,gCAAgC,kEAAa;AACpD;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAS;AAC7C;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,0BAA0B;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC,eAAe,yEAAe;AAC9B;AAC0B;AAC1B;;;;;;;;;;;;;;;;;;;;;AC9MA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC+D;AACK;AACsC;AACtC;AACO;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yEAAe;AAC9B;AACuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0DAAO;AACvC,+BAA+B,sEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAc,CAAC,+DAAY,CAAC,qEAA4B,oCAAoC,EAAE;AAC3H;AACA;AACA,6BAA6B,iEAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kEAAyB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAW;AAC3B;AACA;AACA;AACA,gBAAgB,wDAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wDAAW;AAC9C,8BAA8B,uDAAc;AAC5C,8BAA8B,0DAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,wDAAW,iCAAiC,wDAAW;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yEAAe;AAC9B,eAAe,gFAAkB;AACjC,eAAe,qDAAY;AAC3B;;;;;;;;;;;;;;;;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuG;AAC9B;AACS;AACH;AACxE;AACA;AACP;AACA,QAAQ,2EAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,4CAA4C,2EAAa;AACzD,YAAY;AACZ;AACA,kEAAkE,8EAAS;AAC3E;AACA;AACA,uGAAuG,iEAAiE;AACxK;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACkC;AAClC,wEAAwE,oFAAY;AACpF;AACA;AACA,uGAAuG,iEAAiE;AACxK;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACqC;AACrC,2HAAoD;AACpD;AACA;AACA,UAAU,gFAAkB,CAAC,gFAAkB,kCAAkC,mFAAqB;AACtG;AACA;AACA;AACA,2DAA2D,gFAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,2HAAoD;AACpD;AACA;AACA,UAAU,gFAAkB,CAAC,gFAAkB,kCAAkC,mFAAqB;AACtG;AACA;AACA;AACA,2DAA2D,gFAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACiD;AAC1C;AACP;AACA,uCAAuC;AACvC,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,uDAAC,cAAc,sBAAsB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;;;;;AChFA;AACA;AACA;AACA;AAC8E;AACvE,0BAA0B,uFAAe;;;;;;;;;;;;;;;;;;;;;;;ACLhD;AACA;AACA;AACA;AACiE;AACG;AACU;AACtB;AACQ;AACJ;AACrD,wBAAwB,uFAAe;AACvC;AACP;AACA;AACA,yCAAyC,0DAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,2BAA2B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,0EAAmB;AACnC;AACA;AACA;AACA;AACA,eAAe,KAAK;AACpB;AACA;AACA,2BAA2B,kEAAU;AACrC;AACA;AACA;AACA,kBAAkB,uEAAY;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oEAAc;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AC9E6D;AACiB;AACtB;AACjD,8BAA8B,uFAAe;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,qBAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,IAAI,MAAM,mCAAmC,MAAM,oBAAoB;AACpH;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,yCAAyC,IAAI,MAAM,mBAAmB,MAAM,qBAAqB;AACjG;AACA;AACA;AACA,qCAAqC,IAAI,MAAM,mBAAmB,MAAM,qBAAqB;AAC7F;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uBAAuB,qEAAW,CAAC,+EAAwB;AAC3D;AACA;AACO;AACP;AACA,uBAAuB,qEAAW,CAAC,+EAAwB;AAC3D;AACA;AACA,4GAA4G,QAAQ;AACpH;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;AC7F0D;AACD;AACF;AACI;AACT;AACgD;AACoD;AAC/I;AACP,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,wEAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8DAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAiB;AAC1C,0BAA0B,8DAAiB;AAC3C;AACA;AACA;AACA;AACA,yDAAyD,0DAAa;AACtE;AACA;AACA;AACA;AACA,mCAAmC,8DAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2DAAc,iBAAiB,2DAAc;AACjE;AACA;AACA;AACA;AACA,0BAA0B,8DAAiB;AAC3C;AACA;AACA;AACA;AACA,mBAAmB,+DAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAc,kCAAkC,oBAAoB,EAAE;AAC9E;AACA;AACA;AACA,YAAY,sEAAmB;AAC/B;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,yBAAyB,mEAAgB;AACzC,qBAAqB,uEAAoB;AACzC;AACA;AACA,gBAAgB,qFAA8B;AAC9C;AACA,kCAAkC,oFAAyB;AAC3D;AACA,8BAA8B,+DAAY,+EAA+E,QAAQ;AACjI,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACO;AACP,qMAAqM,4DAAW,0FAA0F,4DAAW;AACrT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,4DAAW;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,WAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,4BAA4B;AACnD,sCAAsC,4BAA4B;AAClE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2DAAU;AACjC;AACA,SAAS,MAAM,4DAAW;AAC1B,mKAAmK,4DAAW;AAC9K;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2DAAc;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAY,EAAE,kBAAkB,SAAS,EAAE;AACvE;AACA,4FAA4F;AAC5F;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/UA;AACA;AACA;AACA;AACuC;AACiB;AACK;AACN;AAC6C;AAC7F;AACP;AACA;AACO,qBAAqB,eAAe,uBAAuB;AAC3D,6BAA6B,eAAe,uBAAuB;AACnE,yBAAyB,eAAe,uBAAuB;AAC/D,oCAAoC,eAAe,uBAAuB;AAC1E,wBAAwB,eAAe,uBAAuB;AAC9D,0BAA0B,eAAe,uBAAuB;AAChE;AACP,6BAA6B,qEAAW,CAAC,wGAA+B;AACxE;AACA;AACA;AACA,sCAAsC,0DAAO;AAC7C,6CAA6C,0DAAO;AACpD;AACA;AACA;AACA,mBAAmB,6CAAY;AAC/B;AACA;AACA;AACA,+CAA+C,eAAe,uBAAuB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F;AAC5F;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oEAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4CAA4C,WAAW;AACtG;AACA;AACA,qCAAqC,oEAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,mBAAmB;AACtE;AACA;AACA,6BAA6B,6CAAY;AACzC,8BAA8B,6CAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAiB;AAC7B;AACA;AACA,YAAY,8DAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAY;AACL;AACP;AACA,eAAe,6CAAY,uDAAuD,EAAE;AACpF;AACA;AACA,eAAe,6CAAY,iDAAiD,EAAE;AAC9E;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC/MA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACwE;AACJ;AACC;AACe;AACC;AACF;AACnF;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,UAAU;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,uCAAuC,mEAAgB,EAAE,4DAA4D;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4GAAsC;AAC7D;AACA,wCAAwC,4BAA4B,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yFAAqB;AACpC;AAC6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAAgC,CAAC,yEAAsB;AACvD,iBAAiB,qEAAkB;AACnC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtWD;AACA;AACA;AACA;AACsE;AACQ;AACY;AAC1F;AACA;AACA;AACA,2BAA2B,iEAAW;AACtC,6BAA6B,6DAAO;AACpC,+BAA+B,+DAAS;AACxC,2BAA2B,2DAAK;AAChC,iCAAiC,iEAAW,KAAK,2DAAK;AACtD;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4EAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB,kBAAkB,EAAE;AACzF;AACA;AACA,kDAAkD,gBAAgB,kBAAkB,EAAE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mBAAmB,GAAG,kCAAkC;AAC1E;AACA,kBAAkB,SAAS,MAAM,MAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,2BAA2B,uFAAe;AAC1C;;;;;;;;;;;;;;;;ACzyBA;;;;;;;;;;;;;;;;;;;;;;;;ACAP;AACA;AACA;AACA;AACkC;AAC6B;AACyB;AAC3B;AAC0B;AACvB;AACN;AACe;AAClE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,gCAAgC,mEAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,uDAAC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAQ,aAAa,sEAAoB;AAC7D;AACA,4CAA4C,sEAAe;AAC3D,kEAAkE,iEAAY;AAC9E;AACA;AACA,2BAA2B,+DAAI;AAC/B;AACA;AACA;AACA;AACA,iBAAiB;AACjB,oCAAoC,yEAAgB;AACpD;AACA;AACA,gBAAgB,gEAAQ,SAAS,gEAAc,SAAS,+CAA+C,EAAE;AACzG,gBAAgB,gEAAQ,SAAS,sEAAoB;AACrD;AACA;AACA;AACA,oCAAoC,2EAAkB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,uBAAuB,6EAAkB;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yEAAyE,uCAAuC;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6D;AACN;AACiB;AAChB;AACyB;AACd;AACQ;AACZ;AAC/D,0DAA0D,iEAAU;AACpE;AACA;AACA,oDAAoD,0DAAO;AAC3D;AACA,sCAAsC,sEAAkB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6EAAiB;AAChC,eAAe,sFAAoB;AACnC,eAAe,gEAAmB;AAClC,eAAe,gFAAkB;AACjC,eAAe,wEAAa;AAC5B;AAC8B;;;;;;;;;;;;;;;;;;AC5C9B;AACA;AACA;AACA;AAC8E;AACvE,4BAA4B,uFAAe;AAC3C,4BAA4B,uFAAe;;;;;;;;;;;;;;;;;;;ACNlD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACkF;AACL;AACN;AACvE,0DAA0D,iEAAU;AACpE;AACA;AACA;AACA,qCAAqC,sEAAe;AACpD;AACA,8CAA8C,oFAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAY;AACvC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4EAAc;AAC7B;AAC8B;;;;;;;;;;;;;;;;;ACjE9B;AACA;AACA;AACA;AAC8E;AACvE,uBAAuB,uFAAe;;;;;;;;;;;;;;;;ACL7C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;;;;;;;;;;;;;;;;AChB/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9BO;AACP;AACA;AACA;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;ACLtB;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACkD;AAClD;AACO;AACP,4BAA4B,2DAAc;AAC1C;AACO;AACP;AACA;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,IAAI,eAAe,sCAAsC,gBAAgB,qCAAqC;AACvI;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AAChB;AACP;AACA;AACA,4CAA4C,sBAAsB;AAClE;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AAC8D;AAC3B;AACe;AAC0B;AACjB;AACD;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,+BAA+B,oEAAiB;AAChD;AACA;AACA;AACA,2BAA2B,oEAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oEAAY;AAC1C;AACA;AACA,kDAAkD,uDAAQ;AAC1D,6EAA6E,GAAG;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2DAAc;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2EAA4B;AAC9D;AACA;AACA;AACA;AACA,oDAAoD,UAAU,8BAA8B,cAAc;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,UAAU,eAAe,uBAAuB,kBAAkB,YAAY;AACvJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,2DAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2DAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4CAAK;AAC/B;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,2EAA4B;AAC/D;AACA;AACA,qDAAqD,GAAG,cAAc,cAAc;AACpF;AACA,8CAA8C,2DAAc;AAC5D,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,2DAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,UAAU;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4DAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO,aAAa,GAAG;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,OAAO,UAAU,GAAG;AACpD;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAmD,GAAG,UAAU;AAC/E,eAAe,oBAAoB;AACnC,0BAA0B,eAAe,kBAAkB,yBAAyB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC,YAAY;AACZ,cAAc,aAAa;AAC3B;AACA;AACA;;;;;;;;;;;;;;;;ACvQA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AAC8D;AACN;AACjD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0DAAO;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqB;;;;;;;;;;;;;;;;;;;;;AC7BrB;AACA;AACA;AACA;AACuC;AACkB;AACK;AACC;AACA;AACxD,wCAAwC,iEAAU;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,0DAAO;AACjE;AACA,wCAAwC,gEAAa;AACrD;AACA;AACA;AACA;AACA,mFAAmF,6DAAU,CAAC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,IAAI;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,6CAAY,mBAAmB,EAAE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,6CAAY,yCAAyC,EAAE,GAAG,EAAE,iEAAiE,iCAAiC;AAC/M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,kDAAkD;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACiE;AAC6B;AACA;AACvF,qCAAqC,wEAAkB;AAC9D;AACA;AACA;AACA,kBAAkB,uEAAe;AACjC;AACA;AACA;AACA;AACA;AACA,eAAe,qFAAuB;AACtC;AACA;AACA,eAAe,uFAAyB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4EAAsB;AACzC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AAC8E;AACvE,2BAA2B,uFAAe;;;;;;;;;;;;;;;;ACL1C;AACP;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAS,EAAE,gCAAgC,aAAa,OAAO;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB,4CAA4C,kCAAkC,YAAY,+BAA+B;AAC3K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB,+BAA+B,eAAe,UAAU,kCAAkC,YAAY,+BAA+B;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA;AACA;AACA;AACA,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACrRA;AACA;AACA;AACA;AACoE;AACd;AACe;AACR;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wDAAE;AACd;AACA;AACA;AACA;AACA,iBAAiB,wDAAE;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0EAAgB,mBAAmB,wDAAE;AAC5D;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA,2BAA2B,0EAAgB,IAAI,wDAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0FAAgC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wDAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACO;AACP;AACA;AACA,sEAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/HA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACgE;AACK;AACrE;AACA;AACA;AACO,yCAAyC,8EAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2EAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2EAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2EAAqB;AACvC;AACA;AACA;;;;;;;;;;;;;;;;;AC/DA;AACA;AACA;AACA;AAC8E;AACvE,sBAAsB,uFAAe;;;;;;;;;;;;;;;;;ACL5C;AACA;AACA;AACA;AAC8E;AACvE,uBAAuB,uFAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACL7C;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACgE;AACQ;AAC8E;AACvF;AAC4D;AAChF;AACyC;AACwB;AACF;AAC5B;AACH;AACd;AACqC;AAC/B;AACa;AACiB;AACS;AACrC;AACe;AAC7E,qBAAqB,uFAAe;AAC3C;AACA;AACA;AACA,+BAA+B,sEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uFAAsB,CAAC,sEAAgB;AAC/E,iCAAiC,0EAAgB;AACjD;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,eAAe,6EAAkB,4DAA4D,uEAAY;AACzG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yEAAa;AAC5B;AACuB;AACvB,4CAA4C,2EAAa;AAClD,uDAAuD,2EAAa;AACpE,qCAAqC,gFAAkB,kCAAkC,gFAAkB,CAAC,sFAAsB;AAClI,6CAA6C,2EAAa;AAC1D,yCAAyC,2EAAa;AACtD,wCAAwC,2EAAa;AACrD,oDAAoD,2EAAa;AACjE;AACA,qDAAqD,2EAAa;AAClE;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iEAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,iGAA4B;AAC3C;AACA;AACA,eAAe,gGAA2B;AAC1C;AACA;AACA;AACA,4BAA4B,sEAAe;AAC3C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,qEAAI;AACpD;AACA;AACA;AACA,+FAA+F,yBAAyB,EAAE,uEAAa,+BAA+B,uEAAiB,4BAA4B,sBAAsB;AACzO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,aAAa,sBAAsB;AAC3F;AACA;AACA;AACA,wDAAwD,aAAa,kBAAkB;AACvF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0EAAgB;AACvC;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,eAAe,iFAAkB;AACjC;AACyB;AACzB,0DAA0D,0EAAS;AACnE;AACA;AACA;AACA,+FAA+F,yBAAyB,EAAE,uEAAa,+BAA+B,uEAAiB,4BAA4B,sBAAsB;AACzO,+BAA+B,sEAAe;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0EAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,aAAa,sBAAsB;AAC3F;AACA;AACA;AACA,wDAAwD,aAAa,kBAAkB;AACvF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,eAAe,iFAAkB;AACjC;AAC8B;AAC9B,gCAAgC,iEAAU;AAC1C;AACA;AACA;AACA;AACA,8BAA8B,0DAAO;AACrC;AACA;AACA,uBAAuB,+DAAY;AACnC;AACA;AACA;AACA,2BAA2B,+DAAY;AACvC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,4EAAU;AACtE;AACA,eAAe,mEAAmE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,eAAe,iFAAkB;AACjC,gBAAgB,0FAAqB;AACrC;AAC+B;AAC/B,oFAAoF,wFAAsB;AAC1G;AACA,eAAe,mEAAmE;AAClF;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,eAAe,iFAAkB;AACjC,gBAAgB,0FAAqB;AACrC;AAC2C;AAC3C,wDAAwD,wEAAQ;AAChE;AACA,eAAe,mEAAmE;AAClF;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,gBAAgB,iFAAkB;AAClC,gBAAgB,0FAAqB;AACrC;AAC6B;AAC7B,kEAAkE,kFAAa;AAC/E;AACA,eAAe,mEAAmE;AAClF;AACA;AACA;AACA;AACA;AACA,qBAAqB,iCAAiC;AACtD,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,gBAAgB,iFAAkB;AAClC,gBAAgB,0FAAqB;AACrC;AACkC;AAClC,0FAA0F,8FAAyB;AACnH;AACA,eAAe,mEAAmE;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,gBAAgB,yFAAqB;AACrC,gBAAgB,iFAAkB;AAClC,gBAAgB,0FAAqB;AACrC;AAC8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8C;AACA;AACA,oCAAoC,0BAA0B,0qBAA0qB;AACxuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB,SAAS;AACpF;AACA;AACA;AACA,2DAA2D,gBAAgB,qBAAqB;AAChG;AACA;AACA;AACA,2DAA2D,gBAAgB,kBAAkB;AAC7F;AACA;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB,gEAAgE;AAC3I;AACA;AACA;AACA,2DAA2D,gBAAgB,sBAAsB;AACjG;AACA;AACA,2DAA2D,gBAAgB,+FAA+F;AAC1K;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oCAAoC,gEAAgE;AACpG;AACA,SAAS;AACT,wEAAwE,uBAAuB;AAC/F;AACA;AACA,qBAAqB,iCAAiC;AACtD;AACA,QAAQ,kEAAO;AACf,uCAAuC,0EAAgB,iDAAiD,sEAAe;AACvH;AACA;AACA,2BAA2B,kEAAO;AAClC,QAAQ,kEAAO;AACf;AACA;AACA;AACA;AACA,eAAe,gFAAkB;AACjC;AACA,eAAe,yEAAa;AAC5B,eAAe,yFAAqB;AACpC,eAAe,0FAAqB;AACpC;AACA,8BAA8B,sEAAW,CAAC,oGAAqC;AAC/E;AACA;AACA;AACA,aAAa,iDAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAQ;AACxB,gBAAgB,iDAAQ;AACxB;AACA;AACA,2BAA2B,iDAAQ;AACnC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,iDAAQ;AACnC;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,2BAA2B,iDAAQ;AACnC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B,iDAAQ;AACnC,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB,iDAAQ;AACjC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,iDAAQ;AACjC,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB,iDAAQ;AACxB,gBAAgB,iDAAQ;AACxB,gBAAgB,iDAAQ;AACxB;AACA;AACA,2BAA2B,iDAAQ;AACnC,SAAS;AACT;AACA;AACA;AACA,iCAAiC,iDAAQ;AACzC;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;AC7pBD;AACA;AACA;AACA;AACwG;AACzC;AACP;AACjD,oBAAoB,uFAAsB;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AACtB;AACA,iCAAiC,iEAAU;AAClD;AACA;AACA;AACA,uDAAuD,0DAAO;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC1DA;AACA;AACA;AACA;AACgE;AACN;AACR;AACa;AACjB;AACY;AACE;AAC5D;AACA;AACA,+BAA+B,4DAAW;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0IAA0I,oEAAc;AACxJ;AACA,YAAY,0DAAS;AACrB,6IAA6I,oEAAc;AAC3J;AACA,eAAe,kEAAY,CAAC,qEAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4DAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,gCAAgC,qEAAgB,wBAAwB,wEAAmB,wBAAwB,+EAA0B;AAC7I;AACA;AACA,oBAAoB,WAAW,wBAAwB,WAAW;AAClE,6BAA6B,6DAAoB;AACjD;AACA;AACA,kCAAkC,+DAAsB;AACxD;AACA;AACA,kCAAkC,4DAAmB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,oCAAoC,0DAAO;AAC3C,+BAA+B,iEAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sEAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qHAAqH;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oCAAoC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,4DAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7PA;AACA;AACA;AACA;AAC8E;AACnC;AACa;AACjD;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAQ;AACpD,8CAA8C,iDAAQ;AACtD,2CAA2C,iDAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mEAAc;AAC/B,iBAAiB,qEAAgB;AACjC,iBAAiB,kEAAa;AAC9B,iBAAiB,oEAAe;AAChC;AACA;AACA;AACA;AACA;AACA,8CAA8C,mEAAc;AAC5D,gDAAgD,qEAAgB;AAChE,6CAA6C,kEAAa;AAC1D,6CAA6C,oEAAe;AAC5D;AACA;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AAC5B,uBAAuB,uFAAe;;;;;;;;;;;;;;;;;;;;ACnH7C;AACA;AACA;AACA;AAC4D;AACkB;AACvE,eAAe,6DAAY;AAC3B,6BAA6B,uFAAe;AAC5C;AACP;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACkD;AAC4B;AACf;AAC0B;AAClF,uBAAuB,uFAAe;AACtC;AACP;AACA,sBAAsB,QAAQ,sEAAe,CAAC,EAAE;AAChD,yBAAyB,QAAQ,sEAAe,CAAC,EAAE;AACnD,mCAAmC,QAAQ,sEAAe,CAAC,EAAE;AAC7D,yBAAyB,EAAE;AAC3B;AACA,6DAA6D,cAAc,EAAE;AAC7E,KAAK;AACL;AACA,6DAA6D,SAAS,2BAA2B,EAAE,GAAG,EAAE;AACxG,KAAK;AACL,CAAC;AACM;AACP,QAAQ,0DAAS;AACjB,eAAe,yEAAgB;AAC/B;AACA;AACA,eAAe,6EAAoB;AACnC;AACA;;;;;;;;;;;;;;;;;;ACtCA;AACA;AACA;AACA;AAC8E;AACvE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW,EAAE,EAAE;AACvC,+BAA+B,uFAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACfrD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2C;AACwB;AACJ;AAC+C;AAC1C;AACb;AACW;AACkB;AACA;AACT;AACP;AACI;AACA;AACS;AACX;AACqB;AAC3F,4FAA4F,4EAAyB;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0EAAmB;AAC3D,mEAAmE,0EAAmB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA,oBAAoB,iDAAQ,yCAAyC,EAAE,GAAG,EAAE;AAC5E;AACA;AACA;AACA,uCAAuC,2BAA2B,iDAAQ,mCAAmC;AAC7G;AACA;AACA;AACA;AACA,uCAAuC,2BAA2B,iDAAQ,qCAAqC;AAC/G,yCAAyC;AACzC;AACA;AACA,gEAAgE,iBAAiB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iCAAiC,+EAAsB;AACvD,+DAA+D,iDAAQ,yBAAyB,EAAE,yBAAyB,EAAE,uBAAuB,6EAAc;AAClK;AACA;AACA,qBAAqB,GAAG;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kDAAkD,2DAAE,CAAC,kEAAa,EAAE,iEAAY,EAAE,+EAA0B;AAC5G;AACA,eAAe,yFAAqB;AACpC,eAAe,gFAAkB;AACjC,eAAe,0EAAe;AAC9B,eAAe,8EAAiB;AAChC,eAAe,uFAAoB;AACnC;AAC+C;AAC/C,oDAAoD,iEAAU;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,kDAAkD;AAC7G,2DAA2D,oDAAoD;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yDAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,oFAAoF,aAAa;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAe;AAC9B,eAAe,yFAAqB;AACpC,eAAe,iGAA+B;AAC9C;AAC2B;;;;;;;;;;;;;;;;;;;;;AChP3B;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6D;AACP;AACO;AAClB;AACyB;AACpE;AACA;AACA;AACA,wBAAwB,qEAAW,CAAC,0EAAsB;AAC1D;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA,sEAAsE,sBAAsB;AAC5F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oFAAoF,sBAAsB;AAC1G;AACA,SAAS;AACT;AACA,eAAe,mCAAmC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ,iDAAQ,0DAA0D;AAC3F;AACA,iBAAiB,QAAQ,iDAAQ,0DAA0D;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iDAAQ,wBAAwB,EAAE,GAAG,EAAE;AACtE;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,eAAe,qEAAkB;AACjC;AACmC;;;;;;;;;;;;;;;;;;;;ACjFnC;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC+E;AACoB;AAC3C;AACjD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,wCAAwC,iEAAU;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,wEAAiB;AACrE;AACA,iEAAiE,sEAAe;AAChF;AACA;AACA;AACA;AACA,2BAA2B,iFAAuB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,8DAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,SAAS;AACT;AACA,wDAAwD,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sDAAsD;;;;;;;;;;;;;;;;;;;;;;;AClPtD;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AAC6E;AACiB;AACT;AACxB;AACkB;AACK;AAC1B;AAC1D,gEAAgE,iEAAU;AAC1E;AACA;AACA;AACA;AACA,wBAAwB,qEAAW,CAAC,0EAAsB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kBAAkB,EAAE,+BAA+B;AACrF;AACA;AACA;AACA;AACA;AACA,2CAA2C,sFAAkC;AAC7E;AACA;AACA;AACA,kCAAkC,kBAAkB,EAAE,mBAAmB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA,qJAAqJ,wEAAqB;AAC1K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,wBAAwB,uEAAY;AACpC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD;AACA;AACA,iDAAiD;AACjD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wCAAwC,iFAAuB;AAC/D,QAAQ,gEAAI;AACZ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qEAAkB;AACjC,eAAe,yFAAqB;AACpC;AACiC;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvKjC;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACuE;AACa;AACP;AACinB;AACrnB;AACZ;AAC6B;AACN;AACQ;AAC1B;AACT;AACzD,wDAAwD,mEAAQ;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,mEAAqB;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oHAAoH,uEAAa;AACjI;AACA;AACA,8CAA8C,8FAAoB,+BAA+B;AACjG;AACA;AACA,mDAAmD,YAAY,+IAA+I,EAAE;AAChN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2EAAa;AACvC;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,4BAA4B,UAAU,gFAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,EAAE,sEAAa;AACnD,oCAAoC;AACpC,oCAAoC;AACpC,yCAAyC;AACzC,8BAA8B;AAC9B,4BAA4B;AAC5B,aAAa;AACb,sBAAsB,sEAAa;AACnC,+BAA+B;AAC/B,+BAA+B;AAC/B,2BAA2B;AAC3B,6CAA6C;AAC7C,6CAA6C;AAC7C,yCAAyC;AACzC,gDAAgD;AAChD,gDAAgD;AAChD,4CAA4C;AAC5C,8CAA8C;AAC9C,8CAA8C;AAC9C,0CAA0C;AAC1C,aAAa;AACb,wBAAwB,sEAAa;AACrC,+BAA+B;AAC/B,+BAA+B;AAC/B,6BAA6B,0EAAc;AAC3C,aAAa;AACb,oBAAoB,sEAAa;AACjC,gCAAgC;AAChC,gCAAgC;AAChC,qCAAqC;AACrC,8BAA8B,0EAAc;AAC5C,aAAa;AACb,yBAAyB,sEAAa;AACtC,qCAAqC;AACrC,aAAa;AACb,kBAAkB,sEAAa;AAC/B,gCAAgC,gFAAoB;AACpD;AACA,6CAA6C,+EAAmB;AAChE,6CAA6C,+EAAmB;AAChE,kCAAkC,gFAAoB;AACtD,0CAA0C,gFAAoB;AAC9D,iCAAiC;AACjC,qCAAqC;AACrC,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe,yFAAqB;AACpC,eAAe,gFAAkB;AACjC,eAAe,wEAAa;AAC5B,eAAe,yFAAqB;AACpC,eAAe,4EAAc;AAC7B;AAC6B;;;;;;;;;;;;;;;;;;;;;AC9J7B;AACA;AACA;AACA;AAC6D;AACH;AACO;AAC1D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE;AAChE;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,gEAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,sEAAY;;;;;;;;;;;;;;;;;;;;ACpDkE;AACV;AAC7D,2BAA2B,uFAAe;;;;;;;;;;;;;;;;;;ACFjD;AACA;AACA;AACA;AACuD;AACE;AACzD;AACA;AACA;AACA;AACA;AACA,QAAQ,sDAAS,CAAC,2DAAc;AAChC,QAAQ,sDAAS,CAAC,2DAAc;AAChC,QAAQ,sDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;;;ACpBP;AACA;AACA;AACA;AACwD;AACwB;AAC6D;AAClF;AACpD;AACP;AACA;AACA;AACA,iBAAiB,oEAAe;AAChC,4CAA4C,6EAAuB;AACnE,iBAAiB,kEAAa;AAC9B,uBAAuB,6EAAuB;AAC9C,iBAAiB,qEAAgB;AACjC,uBAAuB,gFAA0B;AACjD,iBAAiB,mEAAc;AAC/B,uBAAuB,8EAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC,yFAA0B;AAC1B,+CAA+C,uFAA2B;AAC1E;AACA,qCAAqC,+EAAyB;AAC9D;AACA,iCAAiC,qBAAqB;AACtD,gCAAgC,qBAAqB;AACrD,uCAAuC,qBAAqB;AAC5D,aAAa;AACb;AACA;AACA;AACA,iDAAiD,yFAA6B;AAC9E;AACA,uCAAuC,iFAA2B;AAClE;AACA,iCAAiC,uBAAuB;AACxD,gCAAgC,uBAAuB;AACvD,uCAAuC,uBAAuB;AAC9D,uBAAuB,uBAAuB;AAC9C,aAAa;AACb;AACA;AACA;AACA,8CAA8C,sFAA0B;AACxE;AACA,oCAAoC,8EAAwB;AAC5D;AACA,iCAAiC,oBAAoB;AACrD,gCAAgC,oBAAoB;AACpD,uCAAuC,oBAAoB;AAC3D,uBAAuB,oBAAoB;AAC3C,aAAa;AACb;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;AC9DD;AACA;AACA;AACA;AAC8E;AACtB;AACO;AACG;AAC3D,wBAAwB,uFAAe;AACvC;AACP;AACA;AACA;AACA,CAAC,kDAAkD;AAC5C,qCAAqC,iEAAU;AACtD;AACA;AACA,sDAAsD,0DAAO;AAC7D,mDAAmD,0DAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,uCAAuC,aAAa;AACpD;AACA;AACA;;;;;;;;;;;;;;;;;AC1EA;AACA;AACA;AACA;AAC8E;AACvE,0BAA0B,uFAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLhD;AACA;AACA;AACA;AAC8D;AACF;AACJ;AACjB;AAC6D;AACnC;AACjE;AACO;AACP;AACA;AACA;AACA;AACA,sCAAsC,0DAAO;AAC7C;AACA,4BAA4B,+BAA+B;AAC3D,qCAAqC;AACrC;AACA;AACA;AACA,iCAAiC;AACjC;AACA,8BAA8B,sEAAsE,UAAU,UAAU,GAAG;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,EAAE,MAAM,+BAA+B;AAChH;AACA;AACA;AACA,sEAAqB;AACd;AACP;AACA;AACA;AACO,gDAAgD,mDAAmD,EAAE,6CAAY;AACjH,0DAA0D,mDAAmD,EAAE,6CAAY;AAC3H,yDAAyD,mDAAmD,EAAE,6CAAY;AAC1H,kDAAkD,mDAAmD,EAAE,6CAAY;AACnH,wDAAwD,yCAAyC,EAAE,6CAAY;AAC/G,oEAAoE,2CAA2C,EAAE,6CAAY;AAC7H,iEAAiE,mDAAmD,EAAE,6CAAY;AAClI,2EAA2E,4CAA4C,8DAAW,EAAE,EAAE,6CAAY;AACzJ;AACO,qDAAqD,8CAA8C,EAAE,6CAAY;AACjH,2DAA2D,yBAAyB,8DAAW,MAAM,8DAAW,EAAE,EAAE,6CAAY;AAChI,2DAA2D,sDAAsD,EAAE,6CAAY;AAC/H,mDAAmD,8CAA8C,EAAE,6CAAY;AAC/G,2EAA2E,4DAA4D,EAAE,6CAAY;AACrJ,mFAAmF,gFAAgF,oEAAiB,EAAE,EAAE,6CAAY;AACpM,mFAAmF,OAAO,8DAAW,SAAS,8DAAW,YAAY,EAAE,6CAAY;AACnJ,uFAAuF,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AAC1J,uFAAuF,oCAAoC,EAAE,6CAAY;AACzI,+EAA+E,wDAAwD,EAAE,6CAAY;AACrJ,6FAA6F,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AAChK,6FAA6F,oCAAoC,EAAE,6CAAY;AAC/I,qFAAqF,wDAAwD,EAAE,6CAAY;AAC3J,yFAAyF,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AAC5J,yFAAyF,oCAAoC,EAAE,6CAAY;AAC3I,iFAAiF,wDAAwD,EAAE,6CAAY;AACvJ,+DAA+D,yBAAyB,8DAAW,MAAM,8DAAW,EAAE,EAAE,6CAAY;AACpI,+DAA+D,mCAAmC,8DAAW,EAAE,EAAE,6CAAY;AAC7H,6DAA6D,OAAO,8DAAW,SAAS,8DAAW,MAAM,8DAAW,EAAE,EAAE,6CAAY;AACpI,6DAA6D,8CAA8C,EAAE,6CAAY;AACzH,uEAAuE,uFAAuF,EAAE,6CAAY;AAC5K,2DAA2D,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AAC9H,2DAA2D,OAAO,8DAAW,qBAAqB,8DAAW,EAAE,EAAE,6CAAY;AAC7H,2DAA2D,8CAA8C,EAAE,6CAAY;AACvH,+EAA+E,OAAO,gEAAa,qCAAqC,gEAAa,oEAAoE,EAAE,6CAAY;AACvO,yFAAyF,OAAO,gEAAa,qCAAqC,gEAAa,oEAAoE,EAAE,6CAAY;AACjP,2FAA2F,OAAO,gEAAa,qCAAqC,gEAAa,kDAAkD,EAAE,6CAAY;AACjO,uEAAuE,OAAO,gEAAa,oBAAoB,gEAAa,iCAAiC,EAAE,6CAAY;AAC3K,uEAAuE,8CAA8C,EAAE,6CAAY;AACnI,+DAA+D,8BAA8B,gEAAa,8BAA8B,EAAE,6CAAY;AACtJ,2EAA2E,8CAA8C,EAAE,6CAAY;AACvI,mEAAmE,8BAA8B,gEAAa,8BAA8B,EAAE,6CAAY;AAC1J,qEAAqE,8CAA8C,EAAE,6CAAY;AACjI,6DAA6D,8BAA8B,gEAAa,8BAA8B,EAAE,6CAAY;AACpJ,qEAAqE,OAAO,gEAAa,0DAA0D,EAAE,6CAAY;AACjK,6DAA6D,8BAA8B,gEAAa,8BAA8B,EAAE,6CAAY;AAC3J;AACA;AACA;AACA;AACA;AACO,6DAA6D,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AACvI;AACA;AACA;AACO,6DAA6D,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AACvI;AACA;AACA;AACO,yEAAyE,mDAAmD,EAAE,6CAAY;AAC1I,yEAAyE,sDAAsD,EAAE,6CAAY;AAC7I,iEAAiE,wDAAwD,EAAE,6CAAY;AACvI,6EAA6E,oCAAoC,EAAE,6CAAY;AACtI;AACA;AACA;AACO,qEAAqE,0FAA0F,EAAE,6CAAY;AAC7K,qEAAqE,0FAA0F,EAAE,6CAAY;AAC7K,+EAA+E,WAAW,wDAAK,KAAK,uDAAI,oCAAoC,wDAAK,KAAK,uDAAI,iCAAiC,EAAE,6CAAY;AACzM,uEAAuE,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AAC1I,+DAA+D,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AACzI;AACA;AACA;AACO,+EAA+E,mDAAmD,EAAE,6CAAY;AAChJ,+EAA+E,yCAAyC,EAAE,6CAAY;AACtI,qFAAqF,yJAAyJ,EAAE,6CAAY;AAC5P,uFAAuF,oKAAoK,EAAE,6CAAY;AACzQ,yFAAyF,oDAAoD,EAAE,6CAAY;AAClK;AACA;AACA;AACO,qEAAqE,8CAA8C,EAAE,6CAAY;AACjI,uFAAuF,kDAAkD,EAAE,6CAAY;AACvJ,uFAAuF,kDAAkD,EAAE,6CAAY;AACvJ,uEAAuE,oDAAoD,EAAE,6CAAY;AACzI,yFAAyF,oDAAoD,EAAE,6CAAY;AAC3J,yFAAyF,sEAAsE,EAAE,6CAAY;AACpL;AACA;AACA;AACO,+EAA+E,yDAAyD,EAAE,6CAAY;AACtJ,6EAA6E,0FAA0F,EAAE,6CAAY;AACrL,6EAA6E,0FAA0F,EAAE,6CAAY;AACrL,qEAAqE,8EAA8E,EAAE,6CAAY;AACjK,+FAA+F,oHAAoH,EAAE,6CAAY;AACxO;AACA;AACA;AACO,iFAAiF,yBAAyB,6DAAU,MAAM,6DAAU,EAAE,EAAE,6CAAY;AAC3J;AACA;AACA;AACO,+EAA+E,mDAAmD,EAAE,6CAAY;AAChJ,6FAA6F,mDAAmD,EAAE,6CAAY;AACrK;AACA;AACA;AACO,+BAA+B,wDAAK,KAAK,uDAAI;AAC7C,+BAA+B,wDAAK,KAAK,uDAAI;AAC7C,yEAAyE,gEAAgE,EAAE,6CAAY;AACvJ,uEAAuE,gEAAgE,EAAE,6CAAY;AACrJ,4EAA4E,2CAA2C,EAAE,6CAAY;AACrI,0EAA0E,yCAAyC,EAAE,6CAAY;AACjI,uDAAuD,8CAA8C,EAAE,6CAAY;AACnH,mEAAmE,kDAAkD,EAAE,6CAAY;AAC1I;AACA;AACA;AACO,mEAAmE,8CAA8C,EAAE,6CAAY;AAC/H,mEAAmE,oCAAoC,EAAE,6CAAY;AACrH,uFAAuF,8CAA8C,EAAE,6CAAY;AACnJ,uFAAuF,OAAO,8DAAW,SAAS,8DAAW,YAAY,EAAE,6CAAY;AACvJ,2FAA2F,8CAA8C,EAAE,6CAAY;AACvJ,2FAA2F,oCAAoC,EAAE,6CAAY;AAC7I,mFAAmF,oCAAoC,EAAE,6CAAY;AACrI,mEAAmE,8CAA8C,EAAE,6CAAY;AAC/H,mEAAmE,oCAAoC,EAAE,6CAAY;AACrH,iEAAiE,kEAAkE,EAAE,6CAAY;AACjJ,2EAA2E,qDAAqD,EAAE,6CAAY;AAC9I,iFAAiF,wCAAwC,8DAAW,EAAE,EAAE,6CAAY;AACpJ,2EAA2E,OAAO,oEAAiB,SAAS,oEAAiB,iBAAiB,EAAE,6CAAY;AAC5J,6FAA6F,wDAAwD,EAAE,6CAAY;AACnK,yEAAyE,mDAAmD,EAAE,6CAAY;AACjJ;AACA;AACA;AACO,iDAAiD,8CAA8C,EAAE,6CAAY;AAC7G,yDAAyD,kEAAkE,EAAE,6CAAY;AACzI,yDAAyD,wEAAwE,EAAE,6CAAY;AAC/I,2EAA2E,+GAA+G,EAAE,6CAAY;AACxM,2EAA2E,+GAA+G,EAAE,6CAAY;AACxM,mEAAmE,oDAAoD,EAAE,6CAAY;AACrI,2EAA2E,wDAAwD,EAAE,6CAAY;AACxJ;AACA;AACA;AACO,qGAAqG,WAAW,wDAAK,KAAK,uDAAI,kCAAkC,wDAAK,KAAK,uDAAI,6BAA6B,wDAAK,KAAK,uDAAI,uBAAuB,EAAE,6CAAY;AAC9P,6FAA6F,oCAAoC,EAAE,6CAAY;AAC/I,+GAA+G,oCAAoC,EAAE,6CAAY;AACjK,uGAAuG,6BAA6B,wDAAK,KAAK,uDAAI,oCAAoC,EAAE,6CAAY;AACpM,mGAAmG,uDAAuD,EAAE,6CAAY;AACxK,qHAAqH,yDAAyD,EAAE,6CAAY;AAC5L,sEAAsE,mDAAmD,EAAE,6CAAY;AACvI,sEAAsE,mDAAmD,EAAE,6CAAY;AACvI,8DAA8D,WAAW,wDAAK,KAAK,uDAAI,gCAAgC,wDAAK,KAAK,uDAAI,6BAA6B,wDAAK,KAAK,uDAAI,mBAAmB,EAAE,6CAAY;AACjN,kEAAkE,yFAAyF,EAAE,6CAAY;AACzK,+DAA+D,oCAAoC,EAAE,6CAAY;AACjH,2EAA2E,yJAAyJ,EAAE,6CAAY;AAClP,qFAAqF,wKAAwK,EAAE,6CAAY;AAC3Q,uFAAuF,2KAA2K,EAAE,6CAAY;AAChR,mFAAmF,uFAAuF,EAAE,6CAAY;AACxL,uFAAuF,6FAA6F,EAAE,6CAAY;AAClM,iFAAiF,oFAAoF,EAAE,6CAAY;AAC1L;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wEAAqB;AAChD;AACA,uBAAuB,uEAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAa;AAChC;AACA;AACA;AACA,mCAAmC,wDAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,qBAAqB,qEAAoB,CAAC,wGAA+B;AACzE;AACA,oBAAoB,mEAAgB;AACpC;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;;;;;;;;;;;ACzTA;AACA;AACA;AACA;AACqpB;AAC9oB;AACP;AACA;AACA;AACA;AACA,0BAA0B,oEAAiB;AAC3C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,6DAA6D,8DAAe;AAC5E,6DAA6D,8DAAe;AAC5E,qBAAqB,6DAAc;AACnC,KAAK;AACL;AACO;AACP,oEAAoE,sCAAsC;AAC1G;AACO;AACP,yBAAyB,kEAAmB;AAC5C,yBAAyB,kEAAmB;AAC5C,mCAAmC,yDAAM,CAAC,4EAA6B;AACvE,mCAAmC,4EAA6B;AAChE,qCAAqC,4EAA6B;AAClE,qCAAqC,4EAA6B;AAClE,qCAAqC,8EAA+B;AACpE,qCAAqC,8EAA+B;AACpE,iCAAiC,0EAA2B;AAC5D,yBAAyB,kEAAmB;AAC5C,yBAAyB,kEAAmB;AAC5C,wBAAwB,iEAAkB;AAC1C,sBAAsB,mEAAoB;AAC1C,0BAA0B,mEAAoB;AAC9C,sBAAsB,mEAAoB;AAC1C,gCAAgC,yEAA0B;AAC1D,6BAA6B,sEAAuB;AACpD,sCAAsC,+EAAgC;AACtE,uBAAuB,2DAAY;AACnC,4BAA4B,qEAAsB;AAClD;AACO;AACP,iBAAiB,2DAAY;AAC7B,iBAAiB,yDAAU;AAC3B,qBAAqB,6DAAc;AACnC,qBAAqB,6DAAc;AACnC,8BAA8B,sEAAuB;AACrD,8BAA8B,sEAAuB;AACrD,0BAA0B,kEAAmB;AAC7C,oBAAoB,sEAAuB;AAC3C;AACO;AACP,oEAAoE;AACpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxEA;AACA;AACA;AACA;AAC8E;AACD;AACf;AACN;AACjD,sBAAsB,uFAAe;AACrC;AACP,YAAY;AACZ;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,KAAK;AAChD;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACO;AACA;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0DAAO;AAC3D;AACA;AACA;AACA;AACA,eAAe,uEAAY;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sEAAqB;AACd;AACP;AACA;AACA;AACA;AACA;AACO,uBAAuB,iEAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtGA;AACA;AACA;AACA;AAC8E;AACvE,yBAAyB,uFAAe;AACxC;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACA,kBAAkB,SAAI,IAAI,SAAI;AAC9B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA,eAAe,SAAI,IAAI,SAAI;AAC3B,mCAAmC,oCAAoC;AACvE;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACuC;AACqC;AACT;AACU;AACZ;AACT;AACE;AACuB;AACJ;AAC7E;AACA;AACA,+BAA+B,iEAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ,KAAK,mCAAmC,IAAI,YAAY;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6CAAY,EAAE,qCAAqC,EAAE,2BAA2B,+DAA+D,EAAE;AAC3K;AACA;AACA,0BAA0B,6CAAY,EAAE,yCAAyC,EAAE,2BAA2B,mEAAmE,EAAE;AACnL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ,KAAK,gDAAgD,IAAI,YAAY;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iBAAiB;AAC1C,uBAAuB,uBAAuB;AAC9C,uCAAuC,cAAc;AACrD;AACA,6CAA6C,QAAQ;AACrD,uCAAuC,gBAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA,mBAAmB,mEAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mEAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,sEAAe;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sEAAe;AACtC;AACA;AACA;AACA,uBAAuB,sEAAe;AACtC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB,sEAAe;AACpC;AACA;AACA;AACA;AACA;AACA,qBAAqB,sEAAe;AACpC;AACA;AACA,YAAY,uEAAY;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,6CAAY,EAAE,yCAAyC,EAAE,+BAA+B,EAAE,wBAAwB,oBAAoB,EAAE,qBAAqB,EAAE;AAC1P;AACA;AACA,+FAA+F,6CAAY,EAAE,yCAAyC,EAAE,+BAA+B,EAAE,wBAAwB,oBAAoB,EAAE,qBAAqB,EAAE;AAC9P;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,6CAAY,EAAE,qDAAqD,EAAE,+BAA+B,EAAE,4BAA4B,oBAAoB,EAAE,iDAAiD,EAAE;AAClR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,6CAAY,EAAE,gEAAgE,EAAE,+BAA+B,EAAE,4BAA4B,oBAAoB,EAAE,kFAAkF,EAAE;AAC9T;AACA;AACA;AACA,uEAAuE,6CAAY,EAAE,gEAAgE,EAAE,+BAA+B,EAAE,4BAA4B,oBAAoB,EAAE;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,kEAAa,EAAE,6CAAY,+CAA+C,EAAE;AAC1I,oBAAoB,6CAAY,EAAE,wBAAwB,EAAE,iCAAiC,YAAY,EAAE;AAC3G,oBAAoB,6CAAY;AAChC,oBAAoB,6CAAY;AAChC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6CAAY,EAAE,+DAA+D,EAAE,iCAAiC,oBAAoB,EAAE;AAClK;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,6CAAY,EAAE,yCAAyC,EAAE,+BAA+B,EAAE,wBAAwB,oBAAoB,EAAE,qBAAqB,EAAE;AAC1P;AACA;AACA,+FAA+F,6CAAY,EAAE,yCAAyC,EAAE,+BAA+B,EAAE,wBAAwB,oBAAoB,EAAE,qBAAqB,EAAE;AAC9P;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,6CAAY,EAAE,qDAAqD,EAAE,+BAA+B,EAAE,4BAA4B,oBAAoB,EAAE,iDAAiD,EAAE;AAClR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,6CAAY,EAAE,gEAAgE,EAAE,+BAA+B,EAAE,4BAA4B,oBAAoB,EAAE,kFAAkF,EAAE;AAC9T;AACA;AACA;AACA,uEAAuE,6CAAY,EAAE,gEAAgE,EAAE,+BAA+B,EAAE,4BAA4B,oBAAoB,EAAE;AAC1O;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6CAAY,EAAE,+DAA+D,EAAE,iCAAiC,oBAAoB,EAAE;AAClK;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sEAAc;AAC7B,eAAe,sFAAoB;AACnC;AAC2B;AAC3B;AACA;AACA;AACA;AACA;AACA,sFAAiB,CAAC,0DAAgB;;;;;;;;;;;;;;;;;;;;ACl4BlC;AACA;AACA;AACA;AACwD;AACqB;AACC;AACvE,wCAAwC,uFAAe;AACvD,6CAA6C,iEAAU;AAC9D;AACA;AACA;AACA,0DAA0D,0DAAO;AACjE,uBAAuB,uEAAY;AACnC;AACA,uBAAuB,wCAAwC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACtBA;AACA;AACA;AACA;AACkD;AACa;AACe;AACd;AACzD,iCAAiC,uFAAe;AAChD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA,eAAe,0DAAS;AACxB;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AACtC;AACP;AACA;AACA;AACA,2BAA2B,0EAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,2BAA2B,0EAAyB;AACpD;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAkB;AACjC;AACA;AACA,gBAAgB;AAChB;AACA;;;;;;;;;;;;;;;;;;;ACpFkD;AAC3C;AACA;AACP,0BAA0B,oDAAG;AAC7B;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AClBA,6BAAe,oCAAU;AACzB,oCAAoC;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzB8F;AAC9F,YAAgG;;AAEhG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,0EAAO;;;;AAIxB,iEAAe,iFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA2F;;AAE3F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,qEAAO;;;;AAIxB,iEAAe,4EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA6F;;AAE7F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,uEAAO;;;;AAIxB,iEAAe,8EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA+F;;AAE/F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,yEAAO;;;;AAIxB,iEAAe,gFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ8D;AACjG,YAA4G;;AAE5G;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,mFAAO;;;;AAIxB,iEAAe,0FAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ8D;AACjG,YAA+G;;AAE/G;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,sFAAO;;;;AAIxB,iEAAe,6FAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ8D;AACjG,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,wEAAO;;;;AAIxB,iEAAe,+EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA+F;;AAE/F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,yEAAO;;;;AAIxB,iEAAe,gFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAgG;;AAEhG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,0EAAO;;;;AAIxB,iEAAe,iFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA4F;;AAE5F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,sEAAO;;;;AAIxB,iEAAe,6EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAgG;;AAEhG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,0EAAO;;;;AAIxB,iEAAe,iFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA+F;;AAE/F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,yEAAO;;;;AAIxB,iEAAe,gFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAsG;;AAEtG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,gFAAO;;;;AAIxB,iEAAe,uFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA2F;;AAE3F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,qEAAO;;;;AAIxB,iEAAe,4EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA2F;;AAE3F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,qEAAO;;;;AAIxB,iEAAe,4EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ8D;AACjG,YAAoG;;AAEpG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAgG;;AAEhG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,0EAAO;;;;AAIxB,iEAAe,iFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ8D;AACjG,YAA8F;;AAE9F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,qEAAO;;;;AAIxB,iEAAe,4EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ8D;AACjG,YAAoG;;AAEpG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAmG;;AAEnG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,gFAAO;;;;AAIxB,iEAAe,uFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA2G;;AAE3G;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,qFAAO;;;;AAIxB,iEAAe,4FAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAmG;;AAEnG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,6EAAO;;;;AAIxB,iEAAe,oFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAgG;;AAEhG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,0EAAO;;;;AAIxB,iEAAe,iFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAuG;;AAEvG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,iFAAO;;;;AAIxB,iEAAe,wFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAwG;;AAExG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,kFAAO;;;;AAIxB,iEAAe,yFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA8F;;AAE9F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,wEAAO;;;;AAIxB,iEAAe,+EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAqG;;AAErG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,+EAAO;;;;AAIxB,iEAAe,sFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA6F;;AAE7F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,uEAAO;;;;AAIxB,iEAAe,8EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAuG;;AAEvG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,iFAAO;;;;AAIxB,iEAAe,wFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAiG;;AAEjG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA6F;;AAE7F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,uEAAO;;;;AAIxB,iEAAe,8EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAgG;;AAEhG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,6EAAO;;;;AAIxB,iEAAe,oFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAmG;;AAEnG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,gFAAO;;;;AAIxB,iEAAe,uFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAmG;;AAEnG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,gFAAO;;;;AAIxB,iEAAe,uFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,+EAAO;;;;AAIxB,iEAAe,sFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAA+F;;AAE/F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAuF;;AAEvF;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,oEAAO;;;;AAIxB,iEAAe,2EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,4EAAO;;;;AAIxB,iEAAe,mFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAmG;;AAEnG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,6EAAO;;;;AAIxB,iEAAe,oFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAA8F;;AAE9F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAA2F;;AAE3F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,wEAAO;;;;AAIxB,iEAAe,+EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAsG;;AAEtG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,gFAAO;;;;AAIxB,iEAAe,uFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA+G;;AAE/G;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,yFAAO;;;;AAIxB,iEAAe,gGAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAuG;;AAEvG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,iFAAO;;;;AAIxB,iEAAe,wFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAyF;;AAEzF;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,sEAAO;;;;AAIxB,iEAAe,6EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAqG;;AAErG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,kFAAO;;;;AAIxB,iEAAe,yFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,+EAAO;;;;AAIxB,iEAAe,sFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAqG;;AAErG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,+EAAO;;;;AAIxB,iEAAe,sFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAmG;;AAEnG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,6EAAO;;;;AAIxB,iEAAe,oFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAoG;;AAEpG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,iFAAO;;;;AAIxB,iEAAe,wFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAkG;;AAElG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,+EAAO;;;;AAIxB,iEAAe,sFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA8F;;AAE9F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,wEAAO;;;;AAIxB,iEAAe,+EAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAuG;;AAEvG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,iFAAO;;;;AAIxB,iEAAe,wFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAA8F;;AAE9F;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,2EAAO;;;;AAIxB,iEAAe,kFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAwG;;AAExG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,kFAAO;;;;AAIxB,iEAAe,yFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAuG;;AAEvG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,iFAAO;;;;AAIxB,iEAAe,wFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAAoG;;AAEpG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,8EAAO;;;;AAIxB,iEAAe,qFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZ2D;AAC9F,YAA2G;;AAE3G;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,qFAAO;;;;AAIxB,iEAAe,4FAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAqG;;AAErG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,kFAAO;;;;AAIxB,iEAAe,yFAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZwD;AAC3F,YAAsG;;AAEtG;;AAEA;AACA;;AAEA,aAAa,6FAAG,CAAC,mFAAO;;;;AAIxB,iEAAe,0FAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAmN;;AAEnN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,qMAAO;;;;AAIxB,iEAAe,4MAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAuN;;AAEvN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,yMAAO;;;;AAIxB,iEAAe,gNAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAuN;;AAEvN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,yMAAO;;;;AAIxB,iEAAe,gNAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAqN;;AAErN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,uMAAO;;;;AAIxB,iEAAe,8MAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAqN;;AAErN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,uMAAO;;;;AAIxB,iEAAe,8MAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAiN;;AAEjN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,mMAAO;;;;AAIxB,iEAAe,0MAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAAmN;;AAEnN;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,qMAAO;;;;AAIxB,iEAAe,4MAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAA+M;;AAE/M;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,iMAAO;;;;AAIxB,iEAAe,wMAAc,MAAM,E;;;;;;;;;;;;;;;;;;ACZyD;AAC5F,YAA+M;;AAE/M;;AAEA;AACA;;AAEA,aAAa,0GAAG,CAAC,iMAAO;;;;AAIxB,iEAAe,wMAAc,MAAM,E;;;;;;;;;;;ACZtB;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,KAAwC,GAAG,sBAAiB,GAAG,CAAI;;AAEnF;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,qEAAqE,qBAAqB,aAAa;;AAEvG;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,yDAAyD;AACzD,GAAG;;AAEH;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,4BAA4B;AAC/C;AACA;AACA;AACA;;AAEA;;AAEA,oBAAoB,6BAA6B;AACjD;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,E;;;;;;;;;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,CAAC,KAA4D;AAC7D,EAAE,CACmC;AACrC,CAAC,aAAa,GAAG,uCAAuC;;AAExD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,GAAG,gCAAgC;AAC7D,qBAAqB,6CAA6C;AAClE,mBAAmB,GAAG,KAAK,KAAK,kCAAkC;AAClE,oBAAoB,GAAG;AACvB;AACA,mCAAmC,EAAE;AACrC;AACA;AACA,+BAA+B;AAC/B,6EAA6E;AAC7E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB,2BAA2B;AAC3B,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA,6BAA6B,cAAc;;AAE3C;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,YAAY;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8DAA8D,YAAY;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,YAAY;AAChD,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE,0CAA0C;AAC1C,4CAA4C;AAC5C;AACA;AACA;AACA;;AAEA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,sDAAsD;AACtD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;AAC1B;AACA;AACA,sFAAsF,YAAY;AAClG;AACA;AACA;;AAEA,qEAAqE,OAAO;AAC5E;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,sCAAsC,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,WAAW;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,oDAAoD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4CAA4C,YAAY;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,oCAAoC;AACpC,sCAAsC;AACtC,wCAAwC;AACxC,0CAA0C;AAC1C,wCAAwC;AACxC;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,OAAO;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;;;;;;;;;;;;;;;AC/pDD;;AAEuD;;AAEvD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,iCAAiC,0BAA0B;AAC3D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA,gBAAgB,sDAAW;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,uBAAuB,wDAAa;AACpC;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,aAAa,UAAU;;AAEvB;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,UAAU,wDAAa;AACvB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,GAAG;AAC1E;;AAEA;AACA;;;;;;;;;;;;;;;;;ACnK2C;;;;;;;;;;;;;;;;ACA3C;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA,qBAAqB,UAAU;AAC/B;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY;;;;;;;;;;;;;;;;;AClI3B;AACuC;;AAEvC;;AAEe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B,oDAAY;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,mBAAmB;AACpC;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;;AAE0D;;AAE1D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,+BAA+B,oBAAoB;;AAEnD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB,0BAA0B;AACtE;AACA,KAAK;AACL,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,qDAAqD,UAAU;AAC/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,WAAW,uBAAuB;;AAElC;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,mBAAmB,wEAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,KAAK;AACL,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEO;;AAEP;AACA;AACA;AACA;AACO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,UAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,uCAAuC,UAAU;AACjD;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,UAAU;AACV;;;;;;;;;;;;;;;;;ACtZA;AACA;AACA;AACA;AACA;AACA;AAKwB;;AAExB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,wBAAwB;AACjC,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,GAAG;;AAEH,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,mBAAmB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sEAAqB;AAChC,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAiB;AAC9B,KAAK;AACL;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,MAAM,uEAAqB;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtPoC;AADT;AADmB;AAwNW;AACtB;;;;;;kDAN3B,GAAK;kCAFF,GAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qLAEZ,GAAK;;;sDAFF,GAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sEANP,GAAe,iBAEpB,GAAK;kCAHF,GAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEACP,GAAe;yGAEpB,GAAK;;;;sDAHF,GAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAFf,GAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA3LJ,IAAI,CAAC,SAAS,EAAE,QAAQ,KAAK,UAAU;;;CAGnD,OAAO,CAAC,IAAI,CAAC,0LAA0L;;QAChM,2CAAK,GACR,SAAS,EACT,QAAQ,EACR,UAAU;;;;;;;;;;;;;;SAeT,WAAW;OACV,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;;KAClD,QAAQ,GAAI,YAAY,IAAI,CAAC;GAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC;GAAI,GAAG;;;OAGlF,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG;;KACnC,WAAW,GAAG,EAAE;;KAChB,UAAU,IAAI,CAAC;EACf,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC;EAC5C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU;;;UAGpC,QAAQ,EAAE,WAAW;;;MAMpB,GAAG,GAAG,sDAAQ,CACvB,IAAI;SAEK,KAAK,CAAC,GAAG;CACd,GAAG,CAAC,WAAW;;OAET,MAAM;EACR,GAAG,CAAC,WAAW;;;CAEnB,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK;;iBAEnC,IAAI;EAChB,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK;;;;MAQrD,QAAQ,GAAG,qDAAO,CAC3B,GAAG,EACF,IAAI,IAAK,IAAI,CAAC,QAAQ;MAMd,WAAW,GAAG,qDAAO,CAC9B,GAAG,EACF,IAAI,IAAK,IAAI,CAAC,WAAW;;eASR,IAAI,CAAC,QAAQ;MAC1B,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;QACxF,KAAK,CAAC,4BAA4B;;;;OAItC,4CAAI;;;CAGV,OAAO,CAAC,YAAY;;GAAE,OAAO,EAAE,MAAM,CAAC,OAAO;GAAE,OAAO,EAAE,MAAM,CAAC,OAAO;;EAAG,SAAS;EAAE,SAAS;;;CAC7F,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,QAAQ;;;eAQtD,GAAG;;OAEf,4CAAI;;CAEV,MAAM,CAAC,OAAO,CAAC,IAAI;;;eASD,OAAO,CAAC,QAAQ;MAC7B,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;QACxF,KAAK,CAAC,4BAA4B;;;;OAItC,4CAAI;;OAEJ,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,QAAQ;;;EAE1D,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI;SAEnD,CAAC;;EAEJ,OAAO,CAAC,IAAI,CAAC,yKAA0K;;;;CAI3L,MAAM,CAAC,aAAa,KAAK,KAAK,CAAC,YAAY;;;SAe/B,IAAI,CAAC,IAAI,EAAE,OAAO;;MAEzB,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,MAAM,GAAG;QACrD,KAAK,CAAC,gDAA8C;;;CAG9D,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM;;;EAGhD,MAAM,CAAC,OAAO;GACV,UAAU,CAAC,IAAI,EAAE,OAAO;;;;;;SAM3B,UAAU,CAAC,IAAI,EAAE,IAAI;;MAErB,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG;QAC3C,KAAK,CAAC,wCAAsC,GAAG,IAAI;;;;CAI7D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI;;CACpC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,yBAAyB;;;;;;;;;SASnD,yBAAyB,CAAC,KAAK;;CAEpC,KAAK,CAAC,cAAc;;OACd,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM;;;CAEpD,OAAO,CAAC,YAAY;;GAAE,OAAO,EAAE,MAAM,CAAC,OAAO;GAAE,OAAO,EAAE,MAAM,CAAC,OAAO;;EAAG,SAAS;EAAE,SAAS;;;;CAE7F,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI;;;;OAsCpB,MAAM;OAKN,MAAM,GAAG,EAAE;OAMX,kBAAkB,GAAG,KAAK;;;;;OAK/B,SAAS;;;;;;;EAOX,WAAW,CAAC,IAAI,EAAE,SAAS;QAClB,SAAS,WAAY,SAAS,IAAI,UAAU,YAAY,SAAS,IAAI,QAAQ,IAAI,SAAS,CAAC,gBAAgB,KAAK,IAAI;UAC/G,KAAK,CAAC,0BAA0B;;;;QAIrC,IAAI,WACG,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAK,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,YACvF,IAAI,IAAI,QAAQ,MAAM,IAAI,YAAY,MAAM;UAE9C,KAAK,CAAC,sEAAoE;;;WAG7E,OAAO,EAAE,IAAI,KAAI,mDAAU,CAAC,IAAI;GAEvC,IAAI,CAAC,IAAI,GAAG,IAAI;;;cAGL,SAAS,IAAI,QAAQ,IAAI,SAAS,CAAC,gBAAgB,KAAK,IAAI;IACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS;IACpC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU;IACtC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ;IAClC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK;;;IAI5B,IAAI,CAAC,SAAS,SAAS,OAAO,CAAC,OAAO,CAAC,SAAS;;IAChD,IAAI,CAAC,UAAU;IACf,IAAI,CAAC,KAAK;;;GAGd,IAAI,CAAC,QAAQ,GAAG,OAAO;GACvB,IAAI,CAAC,KAAK,GAAG,IAAI;;;;;;;;;;;EAWrB,KAAK,CAAC,IAAI;;;OAGF,MAAM;eACK,MAAM,IAAI,QAAQ;SACrB,IAAI,CAAC,UAAU,CAAC,MAAM;MACtB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,GAAG;;aAGjC,IAAI;;eAGV,MAAM,YAAY,MAAM;WACvB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;;SAC3B,KAAK,IAAI,KAAK,CAAC,CAAC;MAChB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,KAAK,GAAG;;aAGnC,IAAI;;;;;;SAMjB,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;;OACnC,OAAO,KAAK,IAAI;WACT,IAAI;;;;OAIX,IAAI,CAAC,KAAK,KAAK,KAAK;WACb,OAAO;;;SAGZ,GAAG;OACL,CAAC,GAAG,CAAC;;UACF,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;;;KAGpB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,IAAI;YAElE,CAAC;KACJ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI;;;IAE7B,CAAC;;;UAEE,GAAG;;;;;;;;;;;;;;;;;;;QAoBR,eAAe,CAAC,MAAM;YACf,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;eAC7B,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM;YAC1B,KAAK;;;;UAIb,IAAI;;;;;OAKb,UAAU;;KACZ,MAAM,YAAY,GAAG;;EAErB,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI;GACvB,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK;;;;EAK7C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAE,IAAI;GAC7B,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI;;;;;KAKnD,SAAS,GAAG,IAAI;;KAChB,eAAe,GAAG,IAAI;KACtB,KAAK;;;OAGH,QAAQ,GAAG,6DAAqB;;;gBAGvB,gBAAgB,CAAC,IAAI,EAAE,MAAM;;QAElC,4CAAI;;EACV,QAAQ,CAAC,IAAI,EAAE,MAAM;;;;KAIrB,mBAAmB,GAAG,IAAI;;KAK1B,kBAAkB;EAClB,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAG,KAAK;;;;OAIlC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO;IAClC,mBAAmB,GAAG,KAAK,CAAC,KAAK;;IAGjC,mBAAmB,GAAG,IAAI;;;;EAIlC,mDAAW;;OAEH,mBAAmB;IACnB,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,CAAC,OAAO;;;IAIxE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;;;;;;KAM5B,OAAO,GAAG,IAAI;;;KAGd,YAAY,GAAG,IAAI;;;;;CAKvB,GAAG,CAAC,SAAS,OAAQ,MAAM;EACvB,OAAO,GAAG,MAAM;;;MAGZ,CAAC,GAAG,CAAC;;SACF,CAAC,GAAG,UAAU,CAAC,MAAM;SAClB,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;;QAC5C,KAAK;IACN,CAAC;;;;SAIC,MAAM;IACR,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,IAAI;IACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;IACzB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE,QAAQ;;;;cAIxB,UAAU,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM;;oBAE5C,SAAS,GAAG,IAAI;;IAChB,YAAY,GAAG,IAAI;;;IAEnB,gBAAgB,CAAC,kBAAkB,EAAE,MAAM;;;;;;;GAM/C,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM;;;SAGnD,GAAG,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS;;;OAE/B,YAAY,IAAI,GAAG;QACf,GAAG,CAAC,OAAO;qBACX,SAAS,GAAG,GAAG,CAAC,OAAO;KACvB,YAAY,GAAG,GAAG;qBAClB,eAAe,GAAG,GAAG,CAAC,aAAa;qBACnC,KAAK;;;;KAIL,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM,IACzC,SAAS,EACpB,IAAI,EAAE,SAAS,CAAC,IAAI;;qBAIxB,SAAS,GAAG,IAAI;KAChB,YAAY,GAAG,IAAI;;;;UAIjB,MAAM,SAAS,GAAG;;;QAGpB,MAAM,IAAI,OAAO;;;;;;oBAMrB,SAAS,GAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAK,MAAM;;IAChD,YAAY,GAAG,GAAG;;;;;OAKlB,KAAK,WAAW,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM;oBAC9D,eAAe,GAAG,KAAK;;oBAGvB,eAAe,GAAG,IAAI;;;;mBAI1B,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK;;;;GAI3B,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM,IACzC,SAAS,EACpB,IAAI,EAAE,SAAS,CAAC,IAAI;;;;;;kBAM5B,SAAS,GAAG,IAAI;;EAChB,YAAY,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;GAhIvB,CAAC,EAAE,OAAO,CAAC,iBAAiB,GAAG,kBAAkB,GAAG,QAAQ,GAAG,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3Z5B;;;AAEC;;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAElC,MAAM;;EAEV,GAAG,EAAE,wDAAI;;EAGT,aAAa,EAAE,wDAAI;;EAGnB,aAAa,EAAE,wDAAI;;;EAInB,GAAG,EAAE,wDAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wECasB,GAAK;;;;;;;iLACb,GAAY;;;;;;;;;;;;;;;;;;gHADJ,GAAK;;;;;;;;gLACb,GAAY;;;;;;;;;;;;;;;;;;;;;;OA/B1B,KAAK,GAAG,EAAE;OACV,SAAS,GAAG,KAAK;KACxB,YAAY,GAAG,SAAS;;KACxB,SAAS;EACX,YAAY,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJwC;AACN;AACpB;AACE;AAC2B;AACZ;AACkB;;;;;;;;;;;uFAwDjD,6DAAgB;;;;;;;;;;;;;;;;;;;;qMADI,GAAa;;;;;4MAAb,GAAa;;;;;;;;;;;;;;;;;;;;;KArDhD,IAAI;;KAEJ,aAAa;;;;OAEX,gBAAgB,IAAI,IAAI,EAAE,YAAY;EAC1C,OAAO,CAAC,GAAG,CAAC,IAAI;;MACZ,YAAY,IAAI,IAAI;GACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;;;EAE5C,4DAAY,CAAC,IAAI,EAAE,KAAK;EACxB,iEAAoB,CAAC,SAAS;;;OAG1B,WAAW,GAAG,+DAAmB,CAAE,KAAK;EAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY;;MACzC,KAAK,CAAC,YAAY;GACpB,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI;;;;CAIxC,+CAAO;EACL,OAAO,CAAC,GAAG,CAAC,iBAAiB;QACvB,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa;;EACxD,IAAI,GAAG,oFAAoB,CAAC,UAAU;GACpC,KAAK,EAAE,EAAE;GACT,KAAK,EAAE,aAAa;GACpB,QAAQ,EAAE,MAAM;;;kBAElB,aAAa,GAAG,+DAAgB,CAAC,IAAI;;EACrC,IAAI,CAAC,uBAAuB,WAAW,CAAC;;UAE9B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;IACrC,gBAAgB,CAAC,IAAI,EAAE,KAAK;WACrB,GAAG;IACV,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG;IAClC,iEAAoB,CAAC,GAAG;;;;EAI5B,yDAAU,CAAC,sEAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/CsC;AACN;AAClB;AACF;AACI;AAC2B;AACtB;AACU;;;;;;;;;;;uFA6E/B,2DAAc;;;;;;;;;;;;;;;;;;;;qMADC,GAAa;;;;;4MAAb,GAAa;;;;;;;;;;;;;;;;;;;;;KA1E3C,IAAI;OAEF,MAAM;KACR,UAAU,GAAG,IAAI;;KACjB,aAAa;;;;OACX,gBAAgB,IAAI,WAAW,EAAE,YAAY;;GAE/C,qDAAa,CAAC,WAAW;;OACrB,IAAI;QACF,YAAY;KACd,IAAI,CAAC,QAAQ,CAAC,WAAW;;;IAE3B,MAAM,CAAC,OAAO,CAAE,KAAK;KACnB,IAAI,CAAC,gBAAgB,CAAC,KAAK;;;;GAG/B,0DAAU,CAAC,WAAW,EAAE,KAAK;GAC7B,+DAAkB,CAAC,SAAS;UACrB,CAAC;GACR,+DAAkB,CAAC,cAAc;GACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI;SAC/B,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI;;GACrB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,gBAAgB;;KAIf,KAAK,MAAM,gDAAY,CACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EACpB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;KAExB,OAAO,IAAI,eAAe,EAAE,oBAAoB;;;;;;OAQtD,WAAW,GAAG,+DAAmB,CAAE,KAAK;MACxC,KAAK,CAAC,YAAY;GACpB,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI;;;;CAIrC,+CAAO;EACL,yDAAU,CAAC,0CAAM;EACjB,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,QAAQ;;EAC7C,IAAI,GAAG,wDAAoB,CAAC,UAAU;GACpC,KAAK,EAAE,EAAE;GACT,KAAK,EAAE,aAAa;GACpB,QAAQ,EAAE,SAAS;;;kBAErB,aAAa,GAAG,+DAAgB,CAAC,IAAI;;EACrC,IAAI,CAAC,uBAAuB,WAAW,CAAC;GACtC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK;;;EAGzC,yDAAU,CAAC,0CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uECzCc,GAAK;;0KAAf,GAAO;;;;;;;mGAAG,GAAK;;wJAAf,GAAO;;;;;;;;;;;;0BAD3B,GAAK;;;;;;;;;;;;iBAAL,GAAK;;;;;;;;;;;;;;;;;;;;;;;OA3BG,OAAO,GAAG,EAAE;OACZ,UAAU;KACjB,KAAK;;CACT,UAAU,CAAC,SAAS,CAAE,MAAM;MACtB,MAAM;mBACR,KAAK,GAAG,MAAM,CAAC,QAAQ;;mBAEvB,KAAK,GAAG,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPkB;AACP;AACiB;;;;;;;;;;;;;;;4EAoKb,GAAG;;;;;;;;;;sGAAwB,GAAe;;;;;;6EAA1C,GAAG;;;;;;;;;;;;;wCAF9B,GAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAQK,GAAG;;;;6EAKH,GAAG;;;6EAGH,GAAG;;;;8EAKH,GAAI;;;gFAGJ,GAAM;;;;;;;;6BAOI,GAAM;;;;;;;;;;;;;;;;;;;;mEAmBpC,GAAiB,QAAK,OAAO;;;;;;;;;;;mEAa7B,GAAiB,QAAK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6DA3BiB,GAAiB;;;;;;6DAM9D,GAAiB;;;;;+FAOjB,GAAc;;;;6DAMd,GAAiB;;;;;gGAOjB,GAAe;;;;;4FAtD8B,GAAa;4FAQb,GAAa;iGAeZ,GAAc;;;;;;;;;;;;;;;8EAvB1C,GAAG;;;;8EAKH,GAAG;;;;8EAGH,GAAG;;;;+EAKH,GAAI;;;;iFAGJ,GAAM;;;2DAOI,GAAM;8BAAN,GAAM;;;;8DAKW,GAAiB;;;;8DAM9D,GAAiB;;;oHAQnB,GAAiB,QAAK,OAAO;;;;wIAD3B,GAAc;gGAAd,GAAc;;;;8DAMd,GAAiB;;;oHAQnB,GAAiB,QAAK,QAAQ;;;;0IAD5B,GAAe;iGAAf,GAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA9NrB,YAAY;QACV,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW;QAC/C,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO;SACnD,oDAAa,CAAC,GAAG;;;OAGpB,WAAW,IAAI,KAAK,EAAE,QAAQ;QAC5B,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ;QACxC,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB;QAC7C,GAAG,GAAG,GAAG,CAAC,qBAAqB;EACrC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;EACxB,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM;;MACtB,iBAAiB,KAAK,OAAO;SACzB,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK;GACpC,MAAM,CAAC,KAAK,GAAG,cAAc;GAC7B,MAAM,CAAC,MAAM,GAAG,cAAc,GAAG,KAAK;aAC7B,iBAAiB,KAAK,QAAQ;SACjC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM;GACpC,MAAM,CAAC,KAAK,GAAG,eAAe,GAAG,KAAK;GACtC,MAAM,CAAC,MAAM,GAAG,eAAe;;;QAE3B,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI;EACtC,OAAO,CAAC,SAAS,GAAG,OAAO;EAC3B,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM;QAE5C,KAAK,OAAO,KAAK;EACvB,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK;EAE9C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY;EAC/B,KAAK,CAAC,GAAG,gCAAgC,YAAY;EACrD,KAAK,CAAC,eAAe;EACrB,KAAK,CAAC,cAAc;;;OAGhB,aAAa,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK;;GAEzC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM;SAEpD,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG;GACpC,CAAC,CAAC,QAAQ,sBAAsB,6CAAM,GAAG,MAAM,CAAC,gBAAgB;GAChE,CAAC,CAAC,IAAI,GAAG,MAAM,CACZ,SAAS,CAAC,WAAW,EACrB,OAAO,CAAC,WAAW,EAAE,oBAAoB;GAC5C,CAAC,CAAC,KAAK;;;;OAIL,oBAAoB;SACjB,MAAM,CAAC,cAAc,CAAC,eAAe;;;OAGxC,aAAa,IAAI,MAAM,EAAE,OAAO,EAAE,KAAK;;GAEzC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM;;GAE1D,MAAM,CAAC,MAAM,CAAE,IAAI;;KAEf,SAAS,CAAC,SAAS,CAAC,KAAK,MACnB,aAAa,IACd,IAAI,CAAC,IAAI,GAAG,IAAI;YAGd,KAAK;KACZ,OAAO,CAAC,KAAK,CAAC,KAAK;;;;;;OAMrB,eAAe,GAAI,KAAK;EAC5B,WAAW,CAAC,KAAK,EAAE,aAAa;;;OAG5B,aAAa,GAAI,KAAK;EAC1B,WAAW,CAAC,KAAK,EAAE,aAAa;;;OAG5B,aAAa,GAAI,KAAK;EAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM;EACjC,KAAK,CAAC,MAAM,CAAC,IAAI,gCAAgC,YAAY;EAC7D,KAAK,CAAC,MAAM,CAAC,QAAQ,sBAAsB,6CAAM,GAAG,MAAM,CACxD,gBAAgB;EAElB,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK;;;OAGtB,cAAc,GAAI,KAAK;EAC3B,KAAK,CAAC,MAAM,CAAC,MAAM;EACnB,QAAQ,CAAC,WAAW,CAAC,MAAM;;;KAGzB,GAAG;KACH,OAAO;KACP,IAAI;KACJ,MAAM;KACN,MAAM;KACN,iBAAiB,GAAG,MAAM;KAC1B,cAAc,GAAG,IAAI;KACrB,eAAe,GAAG,IAAI;;OAEpB,WAAW,GAAG,+DAAmB,CAAE,KAAK;EAC5C,OAAO,GAAG,uDAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK;kBAC/C,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,WAAW,OAAO;kBAChE,IAAI,8BAA8B,OAAO;kBACzC,MAAM,8BAA8B,OAAO;kBAC3C,MAAM,WAAW,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,UAAU,OAAO;;;;;;EA2FjE,iBAAiB;;;;;EAM9D,iBAAiB;;;;;EAOjB,cAAc;;;;;EAMd,iBAAiB;;;;;EAOjB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClOkB;AACwB;AACpC;AACF;;;;;;;;;;;;;;iHA2GV,GAAW,8BAAG,GAAa;;;;;;;;kHAA3B,GAAW,8BAAG,GAAa;;;;;;;;;;;;;;OAzG1C,UAAU,GAAI,IAAI;EACtB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI;EACvC,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,IAAI;;MAC5D,IAAI,CAAC,KAAK,CAAC,qBAAqB;UAC3B,UAAU;;;MAGf,IAAI,CAAC,KAAK,CAAC,WAAW;UACjB,OAAO;;;MAGZ,IAAI,CAAC,KAAK,CAAC,kBAAkB;UACxB,OAAO;;;MAGZ,IAAI,CAAC,KAAK,CAAC,kBAAkB;UACxB,OAAO;;;MAGZ,IAAI,CAAC,KAAK,CAAC,cAAc;UACpB,KAAK;;;MAEV,IAAI,CAAC,KAAK,CAAC,eAAe;UACrB,WAAW;;;MAGhB,IAAI,CAAC,KAAK,CAAC,UAAU;UAChB,MAAM;;;MAEX,IAAI,CAAC,KAAK,CAAC,SAAS;UACf,KAAK;;;SAGP,WAAW;;;;KAIhB,OAAO;;OACL,aAAa,GAAI,SAAS;EAC9B,YAAY,CAAC,OAAO;;;EAEpB,OAAO,GAAG,UAAU;;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IAClE,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;;GAChD,IAAI;;;;KAGL,SAAS;OAEF,IAAI,GAAG,EAAE;OACT,aAAa,GAAG,EAAE;OAClB,WAAW,GAAG,EAAE;;CAE3B,+CAAO;QACC,WAAW,GAAG,+DAAmB,CAAE,KAAK;;QAEtC,SAAS,IAAI,KAAK;;qBAEpB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM;;qBAE5D,SAAS,CAAC,SAAS,GAAG,IAAI;KAC1B,aAAa,CAAC,UAAU,CAAC,IAAI;YACtB,SAAS,CAAC,OAAO,CAAC,SAAS;KAClC,0DAAkB,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,OAAO;KAClD,oDAAY,CAAC,SAAS,EAAE,SAAS;SAC7B,IAAI,EAAE,sDAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS;;WAEhD,CAAC;IACR,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;;;;QAGxB,gBAAgB,GAAG,qEAAwB,CAAE,MAAM;cAC5C,MAAM,KAAK,WAAW;oBAC/B,WAAW,GAAG,EAAE;;oBAEhB,WAAW,GAAG,OAAO;IACrB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM;;;;QAGhC,sBAAsB,GAAG,uEAA0B,CAAE,MAAM;cACpD,MAAM,KAAK,WAAW;oBAC/B,aAAa,GAAG,EAAE;;oBAElB,aAAa,GAAG,OAAO;IACvB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM;;;;;KAKpC,SAAS,aAAa,OAAO,EAAE,aAAa;;;;;;GAiBjB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/GP;AACyC;AACzB;AACA;AACJ;AACA;AACF;AACI;AACJ;AACH;AACZ;;;;;;;;;;;;;;;;;;;gCAiOnB,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yGAQA,GAAM,IAAC,IAAI;;;;;;;;;;;;8DAAX,GAAM,IAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAkBV,GAAW;;;gCAAhB,MAAI;;;;;;;;;;;;;;;;;;;;;iCAAC,GAAW;;;+BAAhB,MAAI;;;;;;;;;;;;;;;;oCAAJ,MAAI;;;;;;;;;;;;;iCAID,GAAY,aAAC,GAAI,IAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EAAtB,GAAY,aAAC,GAAI,IAAC,IAAI;;;;;;;;;;;;;;;;;;;sBALxB,GAAW,IAAC,MAAM,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gFAkEjB,GAAc;;;;;;qHAAd,GAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA/FzB,MAAM,CAAC,IAAI,aAAC,GAAO;;;kCAAxB,MAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAC,MAAM,CAAC,IAAI,aAAC,GAAO;;;iCAAxB,MAAI;;;;;;;;;;;;;;;;sCAAJ,MAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA5NC,cAAc,GAAG,2DAAW;KACnC,WAAW;;CACf,+CAAO;EACL,EAAE,CAAC,MAAM,EAAE,UAAU;EACrB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc;QAEvD,cAAc,GAAG,mBAAmB;kBAC1C,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI;;MACjE,OAAO,GACT,WAAW,CAAC,MAAM,GAAG,CAAC;IAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;IAAI,IAAI;;MAEjE,MAAM,CAAC,IAAI;GACb,uDAAO,CAAC,MAAM,CAAC,IAAI;aACV,OAAO;GAChB,+DAAe;IACb,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,OAAO;IACP,YAAY,EAAE,IAAI;;;GAGpB,iBAAiB,CAAC,YAAY;;;MAG5B,IAAI,GAAG,IAAI;;EACf,+DAAmB,CAAE,KAAK;GACxB,IAAI,GAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAK,IAAI;;;EAGtC,WAAW;;QACL,IAAI,IAAI,OAAO;;KAEjB,WAAW,CAAC,OAAO;MACjB,IAAI,MAAM,IAAI,GAAG,WAAW;MAC5B,IAAI,EAAG,OAAO,GAAG,IAAI;;;SAEnB,WAAW,CAAC,MAAM,GAAG,EAAE;MACzB,WAAW,CAAC,GAAG;;;KAEjB,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;;;;;GAGhE,CAAC,GAAG,EAAE,GAAG,IAAI;;;;OAGP,MAAM;;OACX,OAAO;EACX,YAAY;;;;;;EAMZ,kBAAkB;;;;;;EAMlB,eAAe;;;;;;;;;;;;;;;;;;;;;;EAsBf,eAAe;;;;;;;;EAQf,aAAa;;;;;;;;;;EAUb,WAAW;;;;;EAKX,YAAY;;;;;;;;;;;;UAYL,iBAAiB,CAAC,WAAW;EACpC,iBAAiB,CAAC,OAAO,CAAC,WAAW;;;UAG9B,iBAAiB,CAAC,IAAI;OACxB,IAAI;EACT,0DAAU,CAAC,IAAI,EAAE,IAAI;;;UAGd,YAAY,CAAC,CAAC;YACX,6CAAM,CAAC,CAAC,EAAE,OAAO,WAAW,IAAI,CAAC,CAAC,EAAE,cAAc;;;qCAkG3C,CAAC,KAAK,iBAAiB,CAAC,WAAW;gCA8BzB,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxQ7B;AACY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE7C,+CAAO;EACL,EAAE,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLyB;;AAElD;AACA,mDAAmD,qBAAM;;AAEzD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEO,iBAAiB,gEAAY;AACpC,QAAQ,sCAAsC;AAC9C,QAAQ,YAAY;;AAEpB;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA,SAAS;AACT,CAAC;;;;;;;;;;;;;;;;;ACtGD;AACA,aAAa,OAAO;AACpB,cAAc,gBAAgB;AAC9B,cAAc,oBAAoB;AAClC,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,KAAK,kCAAkC;AACrD;;AAEA;AACA;AACA,aAAa,yBAAyB;AACtC;;AAEA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,yBAAyB;AACtC;;AAEA;AACA,aAAa,OAAO;AACpB,cAAc,gBAAgB;AAC9B,cAAc,qBAAqB,kGAAkG,2CAA2C;AAChL,cAAc,gBAAgB,2GAA2G;AACzI,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO,4HAA4H,SAAS;AAC1J,cAAc,sCAAsC;AACpD;;AAEA;AACA;AACA,yDAAyD,2CAA2C;AACpG,0CAA0C,kBAAkB;AAC5D;AACA,4HAA4H,WAAW,WAAW;AAClJ;AACA,WAAW,YAAY;AACvB,aAAa,iBAAiB;AAC9B;AACO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4BAA4B;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;;AAEA;AACA;;AAEA,iEAAe,IAAI;;;;;;;;;;;;;;;;;;AC5F8C;;AAEjE,UAAU,8DAA0B,EAAE,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;;AAEuB;;;;;;;;;;;;;;;;;;;;;;;;;;;AClB4L;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAnN,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0BAA0B;AACxD,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,KAAK;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC,oBAAoB,6CAA6C;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2BAA2B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB,QAAQ,SAAS,aAAa,cAAc;AACjH,0BAA0B,WAAW,YAAY,sBAAsB,aAAa;AACpF;AACA;AACA;AACA;AACA;AACA,iEAAiE,0BAA0B;AAC3F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,mBAAmB,QAAQ;AAC3B;AACA,kCAAkC,EAAE,cAAc;AAClD;AACA,oCAAoC,EAAE,cAAc,GAAG;AACvD,6BAA6B,WAAW,GAAG,IAAI;AAC/C;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA,4CAA4C,KAAK,GAAG,KAAK;AACzD;AACA;AACA,8BAA8B,eAAe,UAAU,SAAS,EAAE,KAAK,GAAG,SAAS,YAAY,MAAM;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,mDAAmD,aAAa,WAAW;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU,aAAa,gBAAgB,MAAM,cAAc;AAC7F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B,EAAE,KAAK;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAiE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAiE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAiE;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qDAAqD,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO;AACrX;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,KAAK,IAAI,kCAAkC,uBAAuB,GAAG;AAC5F;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB;AAChB,eAAe;AACf,eAAe;AACf,cAAc;AACd,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI;AAChC,4BAA4B,KAAK;AACjC;AACA;AACA;AACA;AACA,kBAAkB,OAAO,GAAG,uBAAuB,GAAG,KAAK,GAAG,OAAO,IAAI;AACzE,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG,aAAa,uBAAuB,KAAK;AACvE;AACA,4BAA4B;AAC5B,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAK,EAAE,0BAA0B,gEAAgE,MAAM,GAAG,EAAE;AAC3H;AACA;AACA,gCAAgC,QAAQ;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+CAA+C;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6DAA6D,oBAAoB;AACjF;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA,qCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kCAAkC;AACjF;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kBAAkB;AACpE;AACA,+CAA+C,yBAAyB;AACxE;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,KAAK,iCAAiC,SAAS;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,sBAAsB;AACtB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,0DAA0D,YAAY;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B;AACA,qBAAqB,MAAM;AAC3B;AACA;AACA;AACA;AACA;AACA,6DAA6D,YAAY;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEuzE;;;;;;;;;;;;;;;;;;;;ACxuDztE;AAC/B;;AAE/D;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,mBAAmB;AAC9B;AACA,iCAAiC,qDAAI;AACrC;AACA;AACA;AACA,YAAY,mEAAc;AAC1B;AACA,uBAAuB;AACvB;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA;AACA,mCAAmC,6BAA6B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qDAAI;AAC7C;AACA;AACA;AACA,iCAAiC,qDAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAI;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gEAAW,oBAAoB,qDAAI;AAC7D;AACA;AACA,6DAA6D,8DAAS;AACtE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,4DAAO;AACnB;AACA;AACA,KAAK;AACL;;AAEuC;;;;;;;;;;;;;;;;;;;;;;;AC1GM;AACV;AACmB;;AAEtD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,YAAY,yCAAyC;AACrD;AACO,kBAAkB,sDAAQ;AAC1B;AACP;AACA;AACA,qBAAqB,oDAAa;AAClC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,iBAAiB,+BAA+B;AAChD;AACO;AACP;AACA;AACO;AACP,gBAAgB,iDAAG;AACnB,iBAAiB,+BAA+B;AAChD;AACO;AACP,gBAAgB,iDAAG;AACnB,iBAAiB,0CAA0C;AAC3D;;AAEA;AACA,0BAA0B,iDAAG,CAAC,uDAAQ;AACtC,EAAE,0DAAO;AACT,QAAQ,0BAA0B,KAAK,uDAAgB;AACvD;AACA,CAAC;;;;;;;;;;;;;;;;;AC9CM;AACP,6BAA6B,gBAAgB;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW,SAAS,qDAAqD,EAAE;AAC3E;AACA,sBAAsB,SAAS,0BAA0B,EAAE;AAC3D,eAAe,GAAG,YAAY;AAC9B;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,OAAO,4DAA4D;AACnE,OAAO,iEAAiE;AACxE,OAAO,wCAAwC;AAC/C,OAAO,+DAA+D;AACtE,OAAO,sEAAsE;AAC7E;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,mBAAmB,YAAY,GAAG;AAClC;AACA,cAAc,OAAO;AACrB;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,cAAc;AACd,KAAK;AACL,GAAG;AACH;;AAEO;AACP;AACA;;;;;;;;;;;;;;;;;;ACrFwC;;AAEjC,uBAAuB,sDAAQ;AAC/B,yBAAyB,sDAAQ;;;;;;;UCHxC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;WACA;WACA;WACA;WACA;WACA,gCAAgC,YAAY;WAC5C;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF,E;;;;;WCRA;WACA;WACA;WACA;WACA,E;;;;;WCJA;WACA;WACA;WACA;WACA,E;;;;;WCJA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA,E;;;;;WCVA,wF;;;;;WCAA;WACA;WACA;WACA;WACA,sBAAsB,4BAA4B,QAAQ;WAC1D;WACA;WACA;WACA,gBAAgB,oBAAoB;WACpC;WACA,kGAAkG,YAAY,OAAO;WACrH;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,kEAAkE,kCAAkC;WACpG;WACA;WACA;WACA,E;;;;;WCzCA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;WCNA;WACA;WACA;WACA;WACA,E;;;;;WCJA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,kC;;;;;WCfA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,gCAAgC;;WAEhC;WACA;WACA;WACA,IAAI;WACJ,cAAc;WACd;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,KAAK;WACL;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,oBAAoB;WAC1B;WACA;WACA;WACA;WACA;WACA;;WAEA;;WAEA;WACA;WACA,4G;;;;;;;;;;;;;;;;ACnF+B;;AAE/B,gBAAgB,gDAAG;AACnB;AACA,WAAW;AACX,CAAC;;AAED;;AAEA,iEAAe,GAAG,EAAC","file":"bundle.js","sourcesContent":["'use strict';\n\nvar invalidPrototcolRegex = /^(%20|\\s)*(javascript|data)/im;\nvar ctrlCharactersRegex = /[^\\x20-\\x7E]/gmi;\nvar urlSchemeRegex = /^([^:]+):/gm;\nvar relativeFirstCharacters = ['.', '/']\n\nfunction isRelativeUrl(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n\nfunction sanitizeUrl(url) {\n if (!url) {\n return 'about:blank';\n }\n\n var urlScheme, urlSchemeParseResults;\n var sanitizedUrl = url.replace(ctrlCharactersRegex, '').trim();\n\n if (isRelativeUrl(sanitizedUrl)) {\n return sanitizedUrl;\n }\n\n urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n\n if (!urlSchemeParseResults) {\n return 'about:blank';\n }\n\n urlScheme = urlSchemeParseResults[0];\n\n if (invalidPrototcolRegex.test(urlScheme)) {\n return 'about:blank';\n }\n\n return sanitizedUrl;\n}\n\nmodule.exports = {\n sanitizeUrl: sanitizeUrl\n};\n","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n options = options || {};\n var reporter = options.reporter;\n var asyncProcess = utils.getOption(options, \"async\", true);\n var autoProcess = utils.getOption(options, \"auto\", true);\n\n if(autoProcess && !asyncProcess) {\n reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n asyncProcess = true;\n }\n\n var batch = Batch();\n var asyncFrameHandler;\n var isProcessing = false;\n\n function addFunction(level, fn) {\n if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n // This needs to be done before, since we're checking the size of the batch to be 0.\n processBatchAsync();\n }\n\n batch.add(level, fn);\n }\n\n function processBatch() {\n // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n isProcessing = true;\n while (batch.size()) {\n var processingBatch = batch;\n batch = Batch();\n processingBatch.process();\n }\n isProcessing = false;\n }\n\n function forceProcessBatch(localAsyncProcess) {\n if (isProcessing) {\n return;\n }\n\n if(localAsyncProcess === undefined) {\n localAsyncProcess = asyncProcess;\n }\n\n if(asyncFrameHandler) {\n cancelFrame(asyncFrameHandler);\n asyncFrameHandler = null;\n }\n\n if(localAsyncProcess) {\n processBatchAsync();\n } else {\n processBatch();\n }\n }\n\n function processBatchAsync() {\n asyncFrameHandler = requestFrame(processBatch);\n }\n\n function clearBatch() {\n batch = {};\n batchSize = 0;\n topLevel = 0;\n bottomLevel = 0;\n }\n\n function cancelFrame(listener) {\n // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n var cancel = clearTimeout;\n return cancel(listener);\n }\n\n function requestFrame(callback) {\n // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n var raf = function(fn) { return setTimeout(fn, 0); };\n return raf(callback);\n }\n\n return {\n add: addFunction,\n force: forceProcessBatch\n };\n};\n\nfunction Batch() {\n var batch = {};\n var size = 0;\n var topLevel = 0;\n var bottomLevel = 0;\n\n function add(level, fn) {\n if(!fn) {\n fn = level;\n level = 0;\n }\n\n if(level > topLevel) {\n topLevel = level;\n } else if(level < bottomLevel) {\n bottomLevel = level;\n }\n\n if(!batch[level]) {\n batch[level] = [];\n }\n\n batch[level].push(fn);\n size++;\n }\n\n function process() {\n for(var level = bottomLevel; level <= topLevel; level++) {\n var fns = batch[level];\n\n for(var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n fn();\n }\n }\n }\n\n function getSize() {\n return size;\n }\n\n return {\n add: add,\n process: process,\n size: getSize\n };\n}\n","\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-action-bar {\\r\\n\\ttext-align: right;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .actions-container {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin: 0 auto;\\r\\n\\tpadding: 0;\\r\\n\\twidth: 100%;\\r\\n\\tjustify-content: flex-end;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .actions-container {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.reverse .actions-container {\\r\\n\\tflex-direction: row-reverse;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item {\\r\\n\\tcursor: pointer;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttransition: transform 50ms ease;\\r\\n\\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.disabled {\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.animated .action-item.active {\\r\\n\\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .icon,\\r\\n.monaco-action-bar .action-item .codicon {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .codicon {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-label {\\r\\n\\tfont-size: 11px;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.disabled .action-label,\\r\\n.monaco-action-bar .action-item.disabled .action-label:hover {\\r\\n\\topacity: 0.4;\\r\\n}\\r\\n\\r\\n/* Vertical actions */\\r\\n\\r\\n.monaco-action-bar.vertical {\\r\\n\\ttext-align: left;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .action-item {\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .action-label.separator {\\r\\n\\tdisplay: block;\\r\\n\\tborder-bottom: 1px solid #bbb;\\r\\n\\tpadding-top: 1px;\\r\\n\\tmargin-left: .8em;\\r\\n\\tmargin-right: .8em;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.animated.vertical .action-item.active {\\r\\n\\ttransform: translate(5px, 0);\\r\\n}\\r\\n\\r\\n.secondary-actions .monaco-action-bar .action-label {\\r\\n\\tmargin-left: 6px;\\r\\n}\\r\\n\\r\\n/* Action Items */\\r\\n.monaco-action-bar .action-item.select-container {\\r\\n\\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\\r\\n\\tflex: 1;\\r\\n\\tmax-width: 170px;\\r\\n\\tmin-width: 60px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tmargin-right: 10px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/actionbar/actionbar.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,iBAAiB;CACjB,mBAAmB;AACpB;;AAEA;CACC,aAAa;CACb,cAAc;CACd,UAAU;CACV,WAAW;CACX,yBAAyB;AAC1B;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,2BAA2B;AAC5B;;AAEA;CACC,eAAe;CACf,qBAAqB;CACrB,+BAA+B;CAC/B,kBAAkB,GAAG,qFAAqF;AAC3G;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,0CAA0C,EAAE,qBAAqB;AAClE;;AAEA;;CAEC,qBAAqB;AACtB;;AAEA;CACC,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,eAAe;CACf,iBAAiB;AAClB;;AAEA;;CAEC,YAAY;AACb;;AAEA,qBAAqB;;AAErB;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,cAAc;CACd,6BAA6B;CAC7B,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,4BAA4B;AAC7B;;AAEA;CACC,gBAAgB;AACjB;;AAEA,iBAAiB;AACjB;CACC,gBAAgB,EAAE,iFAAiF;CACnG,OAAO;CACP,gBAAgB;CAChB,eAAe;CACf,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-action-bar {\\r\\n\\ttext-align: right;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .actions-container {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin: 0 auto;\\r\\n\\tpadding: 0;\\r\\n\\twidth: 100%;\\r\\n\\tjustify-content: flex-end;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .actions-container {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.reverse .actions-container {\\r\\n\\tflex-direction: row-reverse;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item {\\r\\n\\tcursor: pointer;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttransition: transform 50ms ease;\\r\\n\\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.disabled {\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.animated .action-item.active {\\r\\n\\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .icon,\\r\\n.monaco-action-bar .action-item .codicon {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item .codicon {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-label {\\r\\n\\tfont-size: 11px;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-action-bar .action-item.disabled .action-label,\\r\\n.monaco-action-bar .action-item.disabled .action-label:hover {\\r\\n\\topacity: 0.4;\\r\\n}\\r\\n\\r\\n/* Vertical actions */\\r\\n\\r\\n.monaco-action-bar.vertical {\\r\\n\\ttext-align: left;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .action-item {\\r\\n\\tdisplay: block;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.vertical .action-label.separator {\\r\\n\\tdisplay: block;\\r\\n\\tborder-bottom: 1px solid #bbb;\\r\\n\\tpadding-top: 1px;\\r\\n\\tmargin-left: .8em;\\r\\n\\tmargin-right: .8em;\\r\\n}\\r\\n\\r\\n.monaco-action-bar.animated.vertical .action-item.active {\\r\\n\\ttransform: translate(5px, 0);\\r\\n}\\r\\n\\r\\n.secondary-actions .monaco-action-bar .action-label {\\r\\n\\tmargin-left: 6px;\\r\\n}\\r\\n\\r\\n/* Action Items */\\r\\n.monaco-action-bar .action-item.select-container {\\r\\n\\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\\r\\n\\tflex: 1;\\r\\n\\tmax-width: 170px;\\r\\n\\tmin-width: 60px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tmargin-right: 10px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-aria-container {\\r\\n\\tposition: absolute; /* try to hide from window but not from screen readers */\\r\\n\\tleft:-999em;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/aria/aria.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB,EAAE,wDAAwD;CAC5E,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-aria-container {\\r\\n\\tposition: absolute; /* try to hide from window but not from screen readers */\\r\\n\\tleft:-999em;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-text-button {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: flex;\\r\\n\\twidth: 100%;\\r\\n\\tpadding: 4px;\\r\\n\\ttext-align: center;\\r\\n\\tcursor: pointer;\\r\\n\\toutline-offset: 2px !important;\\r\\n\\tjustify-content: center;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-text-button:hover {\\r\\n\\ttext-decoration: none !important;\\r\\n}\\r\\n\\r\\n.monaco-button.disabled {\\r\\n\\topacity: 0.4;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-button > .codicon {\\r\\n\\tmargin: 0 0.2em;\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/button/button.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;CACtB,aAAa;CACb,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,eAAe;CACf,8BAA8B;CAC9B,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;CACC,gCAAgC;AACjC;;AAEA;CACC,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,yBAAyB;AAC1B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-text-button {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: flex;\\r\\n\\twidth: 100%;\\r\\n\\tpadding: 4px;\\r\\n\\ttext-align: center;\\r\\n\\tcursor: pointer;\\r\\n\\toutline-offset: 2px !important;\\r\\n\\tjustify-content: center;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-text-button:hover {\\r\\n\\ttext-decoration: none !important;\\r\\n}\\r\\n\\r\\n.monaco-button.disabled {\\r\\n\\topacity: 0.4;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-button > .codicon {\\r\\n\\tmargin: 0 0.2em;\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-custom-checkbox {\\r\\n\\tmargin-left: 2px;\\r\\n\\tfloat: left;\\r\\n\\tcursor: pointer;\\r\\n\\toverflow: hidden;\\r\\n\\topacity: 0.7;\\r\\n\\twidth: 20px;\\r\\n\\theight: 20px;\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tpadding: 1px;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-custom-checkbox:hover,\\r\\n.monaco-custom-checkbox.checked {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-custom-checkbox {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-custom-checkbox:hover {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\\r\\n.monaco-custom-checkbox.monaco-simple-checkbox {\\r\\n\\theight: 18px;\\r\\n\\twidth: 18px;\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tborder-radius: 3px;\\r\\n\\tmargin-right: 9px;\\r\\n\\tmargin-left: 0px;\\r\\n\\tpadding: 0px;\\r\\n\\topacity: 1;\\r\\n\\tbackground-size: 16px !important;\\r\\n}\\r\\n\\r\\n/* hide check when unchecked */\\r\\n.monaco-custom-checkbox.monaco-simple-checkbox.unchecked:not(.checked)::before {\\r\\n\\tvisibility: hidden;;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/checkbox/checkbox.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;CAChB,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,6BAA6B;CAC7B,YAAY;CACZ,sBAAsB;CACtB,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;;CAEC,UAAU;AACX;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,WAAW;CACX,6BAA6B;CAC7B,kBAAkB;CAClB,iBAAiB;CACjB,gBAAgB;CAChB,YAAY;CACZ,UAAU;CACV,gCAAgC;AACjC;;AAEA,8BAA8B;AAC9B;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-custom-checkbox {\\r\\n\\tmargin-left: 2px;\\r\\n\\tfloat: left;\\r\\n\\tcursor: pointer;\\r\\n\\toverflow: hidden;\\r\\n\\topacity: 0.7;\\r\\n\\twidth: 20px;\\r\\n\\theight: 20px;\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tpadding: 1px;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-custom-checkbox:hover,\\r\\n.monaco-custom-checkbox.checked {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-custom-checkbox {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-custom-checkbox:hover {\\r\\n\\tbackground: none;\\r\\n}\\r\\n\\r\\n.monaco-custom-checkbox.monaco-simple-checkbox {\\r\\n\\theight: 18px;\\r\\n\\twidth: 18px;\\r\\n\\tborder: 1px solid transparent;\\r\\n\\tborder-radius: 3px;\\r\\n\\tmargin-right: 9px;\\r\\n\\tmargin-left: 0px;\\r\\n\\tpadding: 0px;\\r\\n\\topacity: 1;\\r\\n\\tbackground-size: 16px !important;\\r\\n}\\r\\n\\r\\n/* hide check when unchecked */\\r\\n.monaco-custom-checkbox.monaco-simple-checkbox.unchecked:not(.checked)::before {\\r\\n\\tvisibility: hidden;;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n@keyframes codicon-spin {\\r\\n\\t100% {\\r\\n\\t\\ttransform:rotate(360deg);\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.codicon-animation-spin {\\r\\n\\t/* Use steps to throttle FPS to reduce CPU usage */\\r\\n\\tanimation: codicon-spin 1.5s steps(30) infinite;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-animations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC;EACC,wBAAwB;CACzB;AACD;;AAEA;CACC,kDAAkD;CAClD,+CAA+C;AAChD\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n@keyframes codicon-spin {\\r\\n\\t100% {\\r\\n\\t\\ttransform:rotate(360deg);\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.codicon-animation-spin {\\r\\n\\t/* Use steps to throttle FPS to reduce CPU usage */\\r\\n\\tanimation: codicon-spin 1.5s steps(30) infinite;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.codicon-wrench-subaction {\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon-modifications.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.codicon-wrench-subaction {\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"./codicon.ttf\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n@font-face {\\r\\n\\tfont-family: \\\"codicon\\\";\\r\\n\\tsrc: url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \") format(\\\"truetype\\\");\\r\\n}\\r\\n\\r\\n.codicon[class*='codicon-'] {\\r\\n\\tfont: normal normal normal 16px/1 codicon;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttext-decoration: none;\\r\\n\\ttext-rendering: auto;\\r\\n\\ttext-align: center;\\r\\n\\t-webkit-font-smoothing: antialiased;\\r\\n\\t-moz-osx-font-smoothing: grayscale;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n/* icon rules are dynamically created in codiconStyles */\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/codicons/codicon/codicon.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;CACtB,+DAA0C;AAC3C;;AAEA;CACC,yCAAyC;CACzC,qBAAqB;CACrB,qBAAqB;CACrB,oBAAoB;CACpB,kBAAkB;CAClB,mCAAmC;CACnC,kCAAkC;CAClC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA,wDAAwD\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n@font-face {\\r\\n\\tfont-family: \\\"codicon\\\";\\r\\n\\tsrc: url(./codicon.ttf) format(\\\"truetype\\\");\\r\\n}\\r\\n\\r\\n.codicon[class*='codicon-'] {\\r\\n\\tfont: normal normal normal 16px/1 codicon;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttext-decoration: none;\\r\\n\\ttext-rendering: auto;\\r\\n\\ttext-align: center;\\r\\n\\t-webkit-font-smoothing: antialiased;\\r\\n\\t-moz-osx-font-smoothing: grayscale;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n/* icon rules are dynamically created in codiconStyles */\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.context-view {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 2500;\\r\\n}\\r\\n\\r\\n.context-view.fixed {\\r\\n\\tall: initial;\\r\\n\\tfont-family: inherit;\\r\\n\\tfont-size: 13px;\\r\\n\\tposition: fixed;\\r\\n\\tz-index: 2500;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/contextview/contextview.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,aAAa;AACd;;AAEA;CACC,YAAY;CACZ,oBAAoB;CACpB,eAAe;CACf,eAAe;CACf,aAAa;CACb,cAAc;AACf\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.context-view {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 2500;\\r\\n}\\r\\n\\r\\n.context-view.fixed {\\r\\n\\tall: initial;\\r\\n\\tfont-family: inherit;\\r\\n\\tfont-size: 13px;\\r\\n\\tposition: fixed;\\r\\n\\tz-index: 2500;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-count-badge {\\r\\n\\tpadding: 3px 6px;\\r\\n\\tborder-radius: 11px;\\r\\n\\tfont-size: 11px;\\r\\n\\tmin-width: 18px;\\r\\n\\tmin-height: 18px;\\r\\n\\tline-height: 11px;\\r\\n\\tfont-weight: normal;\\r\\n\\ttext-align: center;\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-count-badge.long {\\r\\n\\tpadding: 2px 3px;\\r\\n\\tborder-radius: 2px;\\r\\n\\tmin-height: auto;\\r\\n\\tline-height: normal;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/countBadge/countBadge.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;CAChB,mBAAmB;CACnB,eAAe;CACf,eAAe;CACf,gBAAgB;CAChB,iBAAiB;CACjB,mBAAmB;CACnB,kBAAkB;CAClB,qBAAqB;CACrB,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;CAChB,kBAAkB;CAClB,gBAAgB;CAChB,mBAAmB;AACpB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-count-badge {\\r\\n\\tpadding: 3px 6px;\\r\\n\\tborder-radius: 11px;\\r\\n\\tfont-size: 11px;\\r\\n\\tmin-width: 18px;\\r\\n\\tmin-height: 18px;\\r\\n\\tline-height: 11px;\\r\\n\\tfont-weight: normal;\\r\\n\\ttext-align: center;\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-count-badge.long {\\r\\n\\tpadding: 2px 3px;\\r\\n\\tborder-radius: 2px;\\r\\n\\tmin-height: auto;\\r\\n\\tline-height: normal;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-dropdown {\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.monaco-dropdown > .dropdown-label {\\r\\n\\tcursor: pointer;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/dropdown/dropdown.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;CACZ,UAAU;AACX;;AAEA;CACC,eAAe;CACf,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-dropdown {\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.monaco-dropdown > .dropdown-label {\\r\\n\\tcursor: pointer;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n/* ---------- Find input ---------- */\\r\\n\\r\\n.monaco-findInput {\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-findInput .monaco-inputbox {\\r\\n\\tfont-size: 13px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-findInput > .controls {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 3px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n.vs .monaco-findInput.disabled {\\r\\n\\tbackground-color: #E1E1E1;\\r\\n}\\r\\n\\r\\n/* Theming */\\r\\n.vs-dark .monaco-findInput.disabled {\\r\\n\\tbackground-color: #333;\\r\\n}\\r\\n\\r\\n/* Highlighting */\\r\\n.monaco-findInput.highlight-0 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-0 100ms linear 0s;\\r\\n}\\r\\n.monaco-findInput.highlight-1 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-1 100ms linear 0s;\\r\\n}\\r\\n.hc-black .monaco-findInput.highlight-0 .controls,\\r\\n.vs-dark .monaco-findInput.highlight-0 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-dark-0 100ms linear 0s;\\r\\n}\\r\\n.hc-black .monaco-findInput.highlight-1 .controls,\\r\\n.vs-dark .monaco-findInput.highlight-1 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-dark-1 100ms linear 0s;\\r\\n}\\r\\n\\r\\n@keyframes monaco-findInput-highlight-0 {\\r\\n\\t0% { background: rgba(253, 255, 0, 0.8); }\\r\\n\\t100% { background: transparent; }\\r\\n}\\r\\n@keyframes monaco-findInput-highlight-1 {\\r\\n\\t0% { background: rgba(253, 255, 0, 0.8); }\\r\\n\\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\\r\\n\\t99% { background: transparent; }\\r\\n}\\r\\n\\r\\n@keyframes monaco-findInput-highlight-dark-0 {\\r\\n\\t0% { background: rgba(255, 255, 255, 0.44); }\\r\\n\\t100% { background: transparent; }\\r\\n}\\r\\n@keyframes monaco-findInput-highlight-dark-1 {\\r\\n\\t0% { background: rgba(255, 255, 255, 0.44); }\\r\\n\\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\\r\\n\\t99% { background: transparent; }\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/findinput/findInput.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F,qCAAqC;;AAErC;CACC,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,WAAW;AACZ;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,UAAU;AACX;;AAEA;CACC,yBAAyB;AAC1B;;AAEA,YAAY;AACZ;CACC,sBAAsB;AACvB;;AAEA,iBAAiB;AACjB;CACC,uDAAuD;AACxD;AACA;CACC,uDAAuD;AACxD;AACA;;CAEC,4DAA4D;AAC7D;AACA;;CAEC,4DAA4D;AAC7D;;AAEA;CACC,KAAK,kCAAkC,EAAE;CACzC,OAAO,uBAAuB,EAAE;AACjC;AACA;CACC,KAAK,kCAAkC,EAAE;CACzC,kHAAkH;CAClH,MAAM,uBAAuB,EAAE;AAChC;;AAEA;CACC,KAAK,qCAAqC,EAAE;CAC5C,OAAO,uBAAuB,EAAE;AACjC;AACA;CACC,KAAK,qCAAqC,EAAE;CAC5C,kHAAkH;CAClH,MAAM,uBAAuB,EAAE;AAChC\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n/* ---------- Find input ---------- */\\r\\n\\r\\n.monaco-findInput {\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-findInput .monaco-inputbox {\\r\\n\\tfont-size: 13px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-findInput > .controls {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 3px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n.vs .monaco-findInput.disabled {\\r\\n\\tbackground-color: #E1E1E1;\\r\\n}\\r\\n\\r\\n/* Theming */\\r\\n.vs-dark .monaco-findInput.disabled {\\r\\n\\tbackground-color: #333;\\r\\n}\\r\\n\\r\\n/* Highlighting */\\r\\n.monaco-findInput.highlight-0 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-0 100ms linear 0s;\\r\\n}\\r\\n.monaco-findInput.highlight-1 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-1 100ms linear 0s;\\r\\n}\\r\\n.hc-black .monaco-findInput.highlight-0 .controls,\\r\\n.vs-dark .monaco-findInput.highlight-0 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-dark-0 100ms linear 0s;\\r\\n}\\r\\n.hc-black .monaco-findInput.highlight-1 .controls,\\r\\n.vs-dark .monaco-findInput.highlight-1 .controls {\\r\\n\\tanimation: monaco-findInput-highlight-dark-1 100ms linear 0s;\\r\\n}\\r\\n\\r\\n@keyframes monaco-findInput-highlight-0 {\\r\\n\\t0% { background: rgba(253, 255, 0, 0.8); }\\r\\n\\t100% { background: transparent; }\\r\\n}\\r\\n@keyframes monaco-findInput-highlight-1 {\\r\\n\\t0% { background: rgba(253, 255, 0, 0.8); }\\r\\n\\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\\r\\n\\t99% { background: transparent; }\\r\\n}\\r\\n\\r\\n@keyframes monaco-findInput-highlight-dark-0 {\\r\\n\\t0% { background: rgba(255, 255, 255, 0.44); }\\r\\n\\t100% { background: transparent; }\\r\\n}\\r\\n@keyframes monaco-findInput-highlight-dark-1 {\\r\\n\\t0% { background: rgba(255, 255, 255, 0.44); }\\r\\n\\t/* Made intentionally different such that the CSS minifier does not collapse the two animations into a single one*/\\r\\n\\t99% { background: transparent; }\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-hover {\\r\\n\\tcursor: default;\\r\\n\\tposition: absolute;\\r\\n\\toverflow: hidden;\\r\\n\\tz-index: 50;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tbox-sizing: initial;\\r\\n\\tanimation: fadein 100ms linear;\\r\\n\\tline-height: 1.5em;\\r\\n}\\r\\n\\r\\n.monaco-hover.hidden {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents {\\r\\n\\tpadding: 4px 8px;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) {\\r\\n\\tmax-width: 500px;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) hr {\\r\\n\\t/* This is a strange rule but it avoids https://github.com/microsoft/vscode/issues/96795, just 100vw on its own caused the actual hover width to increase */\\r\\n\\tmin-width: calc(100% + 100vw);\\r\\n}\\r\\n\\r\\n.monaco-hover p,\\r\\n.monaco-hover .code,\\r\\n.monaco-hover ul {\\r\\n\\tmargin: 8px 0;\\r\\n}\\r\\n\\r\\n.monaco-hover code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-hover hr {\\r\\n\\tmargin-top: 4px;\\r\\n\\tmargin-bottom: -4px;\\r\\n\\tmargin-left: -10px;\\r\\n\\tmargin-right: -10px;\\r\\n\\theight: 1px;\\r\\n}\\r\\n\\r\\n.monaco-hover p:first-child,\\r\\n.monaco-hover .code:first-child,\\r\\n.monaco-hover ul:first-child {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover p:last-child,\\r\\n.monaco-hover .code:last-child,\\r\\n.monaco-hover ul:last-child {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n/* MarkupContent Layout */\\r\\n.monaco-hover ul {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n.monaco-hover ol {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-hover li > p {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover li > ul {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n.monaco-hover .monaco-tokenized-source {\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tword-break: break-all;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar {\\r\\n\\tfont-size: 12px;\\r\\n\\tline-height: 22px;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 0px 8px;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions .action-container {\\r\\n\\tmargin-right: 16px;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions .action-container .action .icon {\\r\\n\\tpadding-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover .hover-contents .codicon {\\r\\n\\tcolor: inherit;\\r\\n\\tfont-size: inherit;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link:before {\\r\\n\\tcontent: '(';\\r\\n}\\r\\n.monaco-hover .hover-contents a.code-link:after {\\r\\n\\tcontent: ')';\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n.monaco-hover .hover-contents a.code-link > span {\\r\\n\\ttext-decoration: underline;\\r\\n\\t/** Hack to force underline to show **/\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/hover/hover.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,eAAe;CACf,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,mBAAmB;CACnB,8BAA8B;CAC9B,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,2JAA2J;CAC3J,6BAA6B;AAC9B;;AAEA;;;CAGC,aAAa;AACd;;AAEA;CACC,yCAAyC;AAC1C;;AAEA;CACC,eAAe;CACf,mBAAmB;CACnB,kBAAkB;CAClB,mBAAmB;CACnB,WAAW;AACZ;;AAEA;;;CAGC,aAAa;AACd;;AAEA;;;CAGC,gBAAgB;AACjB;;AAEA,yBAAyB;AACzB;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;CACrB,qBAAqB;AACtB;;AAEA;CACC,eAAe;CACf,iBAAiB;AAClB;;AAEA;CACC,aAAa;CACb,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,eAAe;AAChB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,sBAAsB;AACvB;;AAEA;CACC,YAAY;AACb;AACA;CACC,YAAY;AACb;;AAEA;CACC,cAAc;AACf;AACA;CACC,0BAA0B;CAC1B,sCAAsC;CACtC,oCAAoC;CACpC,8BAA8B;AAC/B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-hover {\\r\\n\\tcursor: default;\\r\\n\\tposition: absolute;\\r\\n\\toverflow: hidden;\\r\\n\\tz-index: 50;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tbox-sizing: initial;\\r\\n\\tanimation: fadein 100ms linear;\\r\\n\\tline-height: 1.5em;\\r\\n}\\r\\n\\r\\n.monaco-hover.hidden {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents {\\r\\n\\tpadding: 4px 8px;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) {\\r\\n\\tmax-width: 500px;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover > .hover-contents:not(.code-hover-contents) hr {\\r\\n\\t/* This is a strange rule but it avoids https://github.com/microsoft/vscode/issues/96795, just 100vw on its own caused the actual hover width to increase */\\r\\n\\tmin-width: calc(100% + 100vw);\\r\\n}\\r\\n\\r\\n.monaco-hover p,\\r\\n.monaco-hover .code,\\r\\n.monaco-hover ul {\\r\\n\\tmargin: 8px 0;\\r\\n}\\r\\n\\r\\n.monaco-hover code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-hover hr {\\r\\n\\tmargin-top: 4px;\\r\\n\\tmargin-bottom: -4px;\\r\\n\\tmargin-left: -10px;\\r\\n\\tmargin-right: -10px;\\r\\n\\theight: 1px;\\r\\n}\\r\\n\\r\\n.monaco-hover p:first-child,\\r\\n.monaco-hover .code:first-child,\\r\\n.monaco-hover ul:first-child {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover p:last-child,\\r\\n.monaco-hover .code:last-child,\\r\\n.monaco-hover ul:last-child {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n/* MarkupContent Layout */\\r\\n.monaco-hover ul {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n.monaco-hover ol {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-hover li > p {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover li > ul {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-hover code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n.monaco-hover .monaco-tokenized-source {\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tword-break: break-all;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar {\\r\\n\\tfont-size: 12px;\\r\\n\\tline-height: 22px;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 0px 8px;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions .action-container {\\r\\n\\tmargin-right: 16px;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-row.status-bar .actions .action-container .action .icon {\\r\\n\\tpadding-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-hover .markdown-hover .hover-contents .codicon {\\r\\n\\tcolor: inherit;\\r\\n\\tfont-size: inherit;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link:before {\\r\\n\\tcontent: '(';\\r\\n}\\r\\n.monaco-hover .hover-contents a.code-link:after {\\r\\n\\tcontent: ')';\\r\\n}\\r\\n\\r\\n.monaco-hover .hover-contents a.code-link {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n.monaco-hover .hover-contents a.code-link > span {\\r\\n\\ttext-decoration: underline;\\r\\n\\t/** Hack to force underline to show **/\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* ---------- Icon label ---------- */\\r\\n\\r\\n.monaco-icon-label {\\r\\n\\tdisplay: flex; /* required for icons support :before rule */\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-icon-label::before {\\r\\n\\r\\n\\t/* svg icons rendered as background image */\\r\\n\\tbackground-size: 16px;\\r\\n\\tbackground-position: left center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tpadding-right: 6px;\\r\\n\\twidth: 16px;\\r\\n\\theight: 22px;\\r\\n\\tline-height: inherit !important;\\r\\n\\tdisplay: inline-block;\\r\\n\\r\\n\\t/* fonts icons */\\r\\n\\t-webkit-font-smoothing: antialiased;\\r\\n\\t-moz-osx-font-smoothing: grayscale;\\r\\n\\tvertical-align: top;\\r\\n\\r\\n\\tflex-shrink: 0; /* fix for https://github.com/Microsoft/vscode/issues/13787 */\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container {\\r\\n\\tmin-width: 0;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name {\\r\\n\\tcolor: inherit;\\r\\n\\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name > .label-separator {\\r\\n\\tmargin: 0 2px;\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\topacity: .7;\\r\\n\\tmargin-left: 0.5em;\\r\\n\\tfont-size: 0.9em;\\r\\n\\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\\r\\n}\\r\\n\\r\\n.vs .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\topacity: .95;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\\r\\n.monaco-icon-label.italic > .monaco-icon-description-container > .label-description {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\\r\\n.monaco-icon-label.strikethrough > .monaco-icon-description-container > .label-description {\\r\\n\\ttext-decoration: line-through;\\r\\n}\\r\\n\\r\\n.monaco-icon-label::after {\\r\\n\\topacity: 0.75;\\r\\n\\tfont-size: 90%;\\r\\n\\tfont-weight: 600;\\r\\n\\tpadding: 0 16px 0 5px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n/* make sure selection color wins when a label is being selected */\\r\\n.monaco-list:focus .selected .monaco-icon-label, /* list */\\r\\n.monaco-list:focus .selected .monaco-icon-label::after\\r\\n{\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-list-row.focused.selected .label-description,\\r\\n.monaco-list-row.selected .label-description {\\r\\n\\topacity: .8;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/iconLabel/iconlabel.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,qCAAqC;;AAErC;CACC,aAAa,EAAE,4CAA4C;CAC3D,gBAAgB;CAChB,uBAAuB;AACxB;;AAEA;;CAEC,2CAA2C;CAC3C,qBAAqB;CACrB,gCAAgC;CAChC,4BAA4B;CAC5B,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,+BAA+B;CAC/B,qBAAqB;;CAErB,gBAAgB;CAChB,mCAAmC;CACnC,kCAAkC;CAClC,mBAAmB;;CAEnB,cAAc,EAAE,6DAA6D;AAC9E;;AAEA;CACC,YAAY;CACZ,gBAAgB;CAChB,uBAAuB;CACvB,OAAO;AACR;;AAEA;CACC,cAAc;CACd,gBAAgB,EAAE,4DAA4D;AAC/E;;AAEA;CACC,aAAa;CACb,YAAY;AACb;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,gBAAgB;CAChB,gBAAgB,EAAE,4DAA4D;AAC/E;;AAEA;CACC,YAAY;AACb;;AAEA;;CAEC,kBAAkB;AACnB;;AAEA;;CAEC,6BAA6B;AAC9B;;AAEA;CACC,aAAa;CACb,cAAc;CACd,gBAAgB;CAChB,qBAAqB;CACrB,kBAAkB;AACnB;;AAEA,kEAAkE;AAClE;;;CAGC,yBAAyB;AAC1B;;AAEA;;CAEC,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* ---------- Icon label ---------- */\\r\\n\\r\\n.monaco-icon-label {\\r\\n\\tdisplay: flex; /* required for icons support :before rule */\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-icon-label::before {\\r\\n\\r\\n\\t/* svg icons rendered as background image */\\r\\n\\tbackground-size: 16px;\\r\\n\\tbackground-position: left center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tpadding-right: 6px;\\r\\n\\twidth: 16px;\\r\\n\\theight: 22px;\\r\\n\\tline-height: inherit !important;\\r\\n\\tdisplay: inline-block;\\r\\n\\r\\n\\t/* fonts icons */\\r\\n\\t-webkit-font-smoothing: antialiased;\\r\\n\\t-moz-osx-font-smoothing: grayscale;\\r\\n\\tvertical-align: top;\\r\\n\\r\\n\\tflex-shrink: 0; /* fix for https://github.com/Microsoft/vscode/issues/13787 */\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container {\\r\\n\\tmin-width: 0;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name {\\r\\n\\tcolor: inherit;\\r\\n\\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-name-container > .label-name > .label-separator {\\r\\n\\tmargin: 0 2px;\\r\\n\\topacity: 0.5;\\r\\n}\\r\\n\\r\\n.monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\topacity: .7;\\r\\n\\tmargin-left: 0.5em;\\r\\n\\tfont-size: 0.9em;\\r\\n\\twhite-space: pre; /* enable to show labels that include multiple whitespaces */\\r\\n}\\r\\n\\r\\n.vs .monaco-icon-label > .monaco-icon-label-container > .monaco-icon-description-container > .label-description {\\r\\n\\topacity: .95;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.italic > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\\r\\n.monaco-icon-label.italic > .monaco-icon-description-container > .label-description {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-icon-label.strikethrough > .monaco-icon-label-container > .monaco-icon-name-container > .label-name,\\r\\n.monaco-icon-label.strikethrough > .monaco-icon-description-container > .label-description {\\r\\n\\ttext-decoration: line-through;\\r\\n}\\r\\n\\r\\n.monaco-icon-label::after {\\r\\n\\topacity: 0.75;\\r\\n\\tfont-size: 90%;\\r\\n\\tfont-weight: 600;\\r\\n\\tpadding: 0 16px 0 5px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n/* make sure selection color wins when a label is being selected */\\r\\n.monaco-list:focus .selected .monaco-icon-label, /* list */\\r\\n.monaco-list:focus .selected .monaco-icon-label::after\\r\\n{\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-list-row.focused.selected .label-description,\\r\\n.monaco-list-row.selected .label-description {\\r\\n\\topacity: .8;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-inputbox {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n\\tpadding: 0;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\r\\n\\t/* Customizable */\\r\\n\\tfont-size: inherit;\\r\\n}\\r\\n\\r\\n.monaco-inputbox.idle {\\r\\n\\tborder: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > .input,\\r\\n.monaco-inputbox > .wrapper > .mirror {\\r\\n\\r\\n\\t/* Customizable */\\r\\n\\tpadding: 4px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > .input {\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tline-height: inherit;\\r\\n\\tborder: none;\\r\\n\\tfont-family: inherit;\\r\\n\\tfont-size: inherit;\\r\\n\\tresize: none;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > input {\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > textarea.input {\\r\\n\\tdisplay: block;\\r\\n\\t-ms-overflow-style: none; /* IE 10+: hide scrollbars */\\r\\n\\tscrollbar-width: none; /* Firefox: hide scrollbars */\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > textarea.input::-webkit-scrollbar {\\r\\n\\tdisplay: none; /* Chrome + Safari: hide scrollbar */\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > textarea.input.empty {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > .mirror {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 100%;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tvisibility: hidden;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n/* Context view */\\r\\n\\r\\n.monaco-inputbox-container {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.monaco-inputbox-container .monaco-inputbox-message {\\r\\n\\tdisplay: inline-block;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-align: left;\\r\\n\\twidth: 100%;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\tpadding: 0.4em;\\r\\n\\tfont-size: 12px;\\r\\n\\tline-height: 17px;\\r\\n\\tmin-height: 34px;\\r\\n\\tmargin-top: -1px;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n/* Action bar support */\\r\\n.monaco-inputbox .monaco-action-bar {\\r\\n\\tposition: absolute;\\r\\n\\tright: 2px;\\r\\n\\ttop: 4px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox .monaco-action-bar .action-item {\\r\\n\\tmargin-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox .monaco-action-bar .action-item .codicon {\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/inputbox/inputBox.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,cAAc;CACd,UAAU;CACV,sBAAsB;;CAEtB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,6BAA6B;AAC9B;;AAEA;;;CAGC,iBAAiB;CACjB,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,qBAAqB;CACrB,sBAAsB;CACtB,WAAW;CACX,YAAY;CACZ,oBAAoB;CACpB,YAAY;CACZ,oBAAoB;CACpB,kBAAkB;CAClB,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,cAAc;CACd,wBAAwB,EAAE,4BAA4B;CACtD,qBAAqB,EAAE,6BAA6B;CACpD,aAAa;AACd;;AAEA;CACC,aAAa,EAAE,oCAAoC;AACpD;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,qBAAqB;CACrB,WAAW;CACX,MAAM;CACN,OAAO;CACP,sBAAsB;CACtB,qBAAqB;CACrB,kBAAkB;CAClB,qBAAqB;AACtB;;AAEA,iBAAiB;;AAEjB;CACC,iBAAiB;AAClB;;AAEA;CACC,qBAAqB;CACrB,gBAAgB;CAChB,gBAAgB;CAChB,WAAW;CACX,sBAAsB;CACtB,cAAc;CACd,eAAe;CACf,iBAAiB;CACjB,gBAAgB;CAChB,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA,uBAAuB;AACvB;CACC,kBAAkB;CAClB,UAAU;CACV,QAAQ;AACT;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,4BAA4B;CAC5B,WAAW;CACX,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-inputbox {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: block;\\r\\n\\tpadding: 0;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\r\\n\\t/* Customizable */\\r\\n\\tfont-size: inherit;\\r\\n}\\r\\n\\r\\n.monaco-inputbox.idle {\\r\\n\\tborder: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > .input,\\r\\n.monaco-inputbox > .wrapper > .mirror {\\r\\n\\r\\n\\t/* Customizable */\\r\\n\\tpadding: 4px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > .input {\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tline-height: inherit;\\r\\n\\tborder: none;\\r\\n\\tfont-family: inherit;\\r\\n\\tfont-size: inherit;\\r\\n\\tresize: none;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > input {\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > textarea.input {\\r\\n\\tdisplay: block;\\r\\n\\t-ms-overflow-style: none; /* IE 10+: hide scrollbars */\\r\\n\\tscrollbar-width: none; /* Firefox: hide scrollbars */\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > textarea.input::-webkit-scrollbar {\\r\\n\\tdisplay: none; /* Chrome + Safari: hide scrollbar */\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > textarea.input.empty {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-inputbox > .wrapper > .mirror {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 100%;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tvisibility: hidden;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n/* Context view */\\r\\n\\r\\n.monaco-inputbox-container {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.monaco-inputbox-container .monaco-inputbox-message {\\r\\n\\tdisplay: inline-block;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-align: left;\\r\\n\\twidth: 100%;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\tpadding: 0.4em;\\r\\n\\tfont-size: 12px;\\r\\n\\tline-height: 17px;\\r\\n\\tmin-height: 34px;\\r\\n\\tmargin-top: -1px;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n/* Action bar support */\\r\\n.monaco-inputbox .monaco-action-bar {\\r\\n\\tposition: absolute;\\r\\n\\tright: 2px;\\r\\n\\ttop: 4px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox .monaco-action-bar .action-item {\\r\\n\\tmargin-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-inputbox .monaco-action-bar .action-item .codicon {\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-keybinding {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tline-height: 10px;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tdisplay: inline-block;\\r\\n\\tborder: solid 1px rgba(204, 204, 204, 0.4);\\r\\n\\tborder-bottom-color: rgba(187, 187, 187, 0.4);\\r\\n\\tborder-radius: 3px;\\r\\n\\tbox-shadow: inset 0 -1px 0 rgba(187, 187, 187, 0.4);\\r\\n\\tbackground-color: rgba(221, 221, 221, 0.4);\\r\\n\\tvertical-align: middle;\\r\\n\\tcolor: #555;\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 3px 5px;\\r\\n\\tmargin: 0 2px;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key:first-child {\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key:last-child {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-keybinding > .monaco-keybinding-key,\\r\\n.vs-dark .monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tbackground-color: rgba(128, 128, 128, 0.17);\\r\\n\\tcolor: #ccc;\\r\\n\\tborder: solid 1px rgba(51, 51, 51, 0.6);\\r\\n\\tborder-bottom-color: rgba(68, 68, 68, 0.6);\\r\\n\\tbox-shadow: inset 0 -1px 0 rgba(68, 68, 68, 0.6);\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key-separator {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key-chord-separator {\\r\\n\\twidth: 6px;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA;CACC,qBAAqB;CACrB,0CAA0C;CAC1C,6CAA6C;CAC7C,kBAAkB;CAClB,mDAAmD;CACnD,0CAA0C;CAC1C,sBAAsB;CACtB,WAAW;CACX,eAAe;CACf,gBAAgB;CAChB,aAAa;AACd;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,eAAe;AAChB;;AAEA;;CAEC,2CAA2C;CAC3C,WAAW;CACX,uCAAuC;CACvC,0CAA0C;CAC1C,gDAAgD;AACjD;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,UAAU;AACX\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-keybinding {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tline-height: 10px;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tdisplay: inline-block;\\r\\n\\tborder: solid 1px rgba(204, 204, 204, 0.4);\\r\\n\\tborder-bottom-color: rgba(187, 187, 187, 0.4);\\r\\n\\tborder-radius: 3px;\\r\\n\\tbox-shadow: inset 0 -1px 0 rgba(187, 187, 187, 0.4);\\r\\n\\tbackground-color: rgba(221, 221, 221, 0.4);\\r\\n\\tvertical-align: middle;\\r\\n\\tcolor: #555;\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 3px 5px;\\r\\n\\tmargin: 0 2px;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key:first-child {\\r\\n\\tmargin-left: 0;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key:last-child {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-keybinding > .monaco-keybinding-key,\\r\\n.vs-dark .monaco-keybinding > .monaco-keybinding-key {\\r\\n\\tbackground-color: rgba(128, 128, 128, 0.17);\\r\\n\\tcolor: #ccc;\\r\\n\\tborder: solid 1px rgba(51, 51, 51, 0.6);\\r\\n\\tborder-bottom-color: rgba(68, 68, 68, 0.6);\\r\\n\\tbox-shadow: inset 0 -1px 0 rgba(68, 68, 68, 0.6);\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key-separator {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-keybinding > .monaco-keybinding-key-chord-separator {\\r\\n\\twidth: 6px;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-list {\\r\\n\\tposition: relative;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-list.mouse-support {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-list > .monaco-scrollable-element {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list-rows {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list.horizontal-scrolling .monaco-list-rows {\\r\\n\\twidth: auto;\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list-row {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\toverflow: hidden;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list.mouse-support .monaco-list-row {\\r\\n\\tcursor: pointer;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n/* for OS X ballistic scrolling */\\r\\n.monaco-list-row.scrolling {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n/* Focus */\\r\\n.monaco-list.element-focused, .monaco-list.selection-single, .monaco-list.selection-multiple {\\r\\n\\toutline: 0 !important;\\r\\n}\\r\\n\\r\\n.monaco-list:focus .monaco-list-row.selected .codicon {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n/* Dnd */\\r\\n.monaco-drag-image {\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding: 1px 7px;\\r\\n\\tborder-radius: 10px;\\r\\n\\tfont-size: 12px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n/* Type filter */\\r\\n\\r\\n.monaco-list-type-filter {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tposition: absolute;\\r\\n\\tborder-radius: 2px;\\r\\n\\tpadding: 0px 3px;\\r\\n\\tmax-width: calc(100% - 10px);\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-align: right;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tcursor: all-scroll;\\r\\n\\tfont-size: 13px;\\r\\n\\tline-height: 18px;\\r\\n\\theight: 20px;\\r\\n\\tz-index: 1;\\r\\n\\ttop: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging {\\r\\n\\ttransition: top 0.2s, left 0.2s;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.ne {\\r\\n\\tright: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.nw {\\r\\n\\tleft: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttransition: width 0.2s;\\r\\n\\twidth: 0;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging > .controls,\\r\\n.monaco-list-type-filter:hover > .controls {\\r\\n\\twidth: 36px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls > * {\\r\\n\\tborder: none;\\r\\n\\tbox-sizing: border-box;\\r\\n\\t-webkit-appearance: none;\\r\\n\\t-moz-appearance: none;\\r\\n\\tbackground: none;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tflex-shrink: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls > .filter {\\r\\n\\tmargin-left: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter-message {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing: border-box;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tpadding: 40px 1em 1em 1em;\\r\\n\\ttext-align: center;\\r\\n\\twhite-space: normal;\\r\\n\\topacity: 0.7;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter-message:empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* Electron */\\r\\n\\r\\n.monaco-list-type-filter {\\r\\n\\tcursor: grab;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging {\\r\\n\\tcursor: grabbing;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/list/list.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,eAAe;CACf,kBAAkB;AACnB;;AAEA,iCAAiC;AACjC;CACC,wBAAwB;AACzB;;AAEA,UAAU;AACV;CACC,qBAAqB;AACtB;;AAEA;CACC,cAAc;AACf;;AAEA,QAAQ;AACR;CACC,qBAAqB;CACrB,gBAAgB;CAChB,mBAAmB;CACnB,eAAe;CACf,kBAAkB;AACnB;;AAEA,gBAAgB;;AAEhB;CACC,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,gBAAgB;CAChB,4BAA4B;CAC5B,uBAAuB;CACvB,gBAAgB;CAChB,iBAAiB;CACjB,sBAAsB;CACtB,kBAAkB;CAClB,eAAe;CACf,iBAAiB;CACjB,YAAY;CACZ,UAAU;CACV,QAAQ;AACT;;AAEA;CACC,+BAA+B;AAChC;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,SAAS;AACV;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,sBAAsB;CACtB,sBAAsB;CACtB,QAAQ;AACT;;AAEA;;CAEC,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,sBAAsB;CACtB,wBAAwB;CACxB,qBAAqB;CACrB,gBAAgB;CAChB,WAAW;CACX,YAAY;CACZ,cAAc;CACd,SAAS;CACT,UAAU;CACV,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,eAAe;AAChB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,WAAW;CACX,YAAY;CACZ,MAAM;CACN,OAAO;CACP,yBAAyB;CACzB,kBAAkB;CAClB,mBAAmB;CACnB,YAAY;CACZ,oBAAoB;AACrB;;AAEA;CACC,aAAa;AACd;;AAEA,aAAa;;AAEb;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-list {\\r\\n\\tposition: relative;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-list.mouse-support {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-list > .monaco-scrollable-element {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list-rows {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list.horizontal-scrolling .monaco-list-rows {\\r\\n\\twidth: auto;\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list-row {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing:\\tborder-box;\\r\\n\\toverflow: hidden;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-list.mouse-support .monaco-list-row {\\r\\n\\tcursor: pointer;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n/* for OS X ballistic scrolling */\\r\\n.monaco-list-row.scrolling {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n/* Focus */\\r\\n.monaco-list.element-focused, .monaco-list.selection-single, .monaco-list.selection-multiple {\\r\\n\\toutline: 0 !important;\\r\\n}\\r\\n\\r\\n.monaco-list:focus .monaco-list-row.selected .codicon {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n/* Dnd */\\r\\n.monaco-drag-image {\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding: 1px 7px;\\r\\n\\tborder-radius: 10px;\\r\\n\\tfont-size: 12px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n/* Type filter */\\r\\n\\r\\n.monaco-list-type-filter {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tposition: absolute;\\r\\n\\tborder-radius: 2px;\\r\\n\\tpadding: 0px 3px;\\r\\n\\tmax-width: calc(100% - 10px);\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-align: right;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tcursor: all-scroll;\\r\\n\\tfont-size: 13px;\\r\\n\\tline-height: 18px;\\r\\n\\theight: 20px;\\r\\n\\tz-index: 1;\\r\\n\\ttop: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging {\\r\\n\\ttransition: top 0.2s, left 0.2s;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.ne {\\r\\n\\tright: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.nw {\\r\\n\\tleft: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttransition: width 0.2s;\\r\\n\\twidth: 0;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging > .controls,\\r\\n.monaco-list-type-filter:hover > .controls {\\r\\n\\twidth: 36px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls > * {\\r\\n\\tborder: none;\\r\\n\\tbox-sizing: border-box;\\r\\n\\t-webkit-appearance: none;\\r\\n\\t-moz-appearance: none;\\r\\n\\tbackground: none;\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tflex-shrink: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter > .controls > .filter {\\r\\n\\tmargin-left: 4px;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter-message {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing: border-box;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tpadding: 40px 1em 1em 1em;\\r\\n\\ttext-align: center;\\r\\n\\twhite-space: normal;\\r\\n\\topacity: 0.7;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter-message:empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* Electron */\\r\\n\\r\\n.monaco-list-type-filter {\\r\\n\\tcursor: grab;\\r\\n}\\r\\n\\r\\n.monaco-list-type-filter.dragging {\\r\\n\\tcursor: grabbing;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-mouse-cursor-text {\\r\\n\\tcursor: text;\\r\\n}\\r\\n\\r\\n/* The following selector looks a bit funny, but that is needed to cover all the workbench and the editor!! */\\r\\n.vs-dark .mac .monaco-mouse-cursor-text, .hc-black .mac .monaco-mouse-cursor-text,\\r\\n.vs-dark.mac .monaco-mouse-cursor-text, .hc-black.mac .monaco-mouse-cursor-text {\\r\\n\\tcursor: -webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8, text;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/mouseCursor/mouseCursor.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;AACb;;AAEA,6GAA6G;AAC7G;;CAEC,+kBAA+kB;AAChlB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-mouse-cursor-text {\\r\\n\\tcursor: text;\\r\\n}\\r\\n\\r\\n/* The following selector looks a bit funny, but that is needed to cover all the workbench and the editor!! */\\r\\n.vs-dark .mac .monaco-mouse-cursor-text, .hc-black .mac .monaco-mouse-cursor-text,\\r\\n.vs-dark.mac .monaco-mouse-cursor-text, .hc-black.mac .monaco-mouse-cursor-text {\\r\\n\\tcursor: -webkit-image-set(url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAL0lEQVQoz2NgCD3x//9/BhBYBWdhgFVAiVW4JBFKGIa4AqD0//9D3pt4I4tAdAMAHTQ/j5Zom30AAAAASUVORK5CYII=) 1x, url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAz0lEQVRIx2NgYGBY/R8I/vx5eelX3n82IJ9FxGf6tksvf/8FiTMQAcAGQMDvSwu09abffY8QYSAScNk45G198eX//yev73/4///701eh//kZSARckrNBRvz//+8+6ZohwCzjGNjdgQxkAg7B9WADeBjIBqtJCbhRA0YNoIkBSNmaPEMoNmA0FkYNoFKhapJ6FGyAH3nauaSmPfwI0v/3OukVi0CIZ+F25KrtYcx/CTIy0e+rC7R1Z4KMICVTQQ14feVXIbR695u14+Ir4gwAAD49E54wc1kWAAAAAElFTkSuQmCC) 2x) 5 8, text;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-progress-container {\\r\\n\\twidth: 100%;\\r\\n\\theight: 5px;\\r\\n\\toverflow: hidden; /* keep progress bit in bounds */\\r\\n}\\r\\n\\r\\n.monaco-progress-container .progress-bit {\\r\\n\\twidth: 2%;\\r\\n\\theight: 5px;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.active .progress-bit {\\r\\n\\tdisplay: inherit;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.discrete .progress-bit {\\r\\n\\tleft: 0;\\r\\n\\ttransition: width 100ms linear;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.discrete.done .progress-bit {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.infinite .progress-bit {\\r\\n\\tanimation-name: progress;\\r\\n\\tanimation-duration: 4s;\\r\\n\\tanimation-iteration-count: infinite;\\r\\n\\tanimation-timing-function: linear;\\r\\n\\ttransform: translate3d(0px, 0px, 0px);\\r\\n}\\r\\n\\r\\n/**\\r\\n * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of\\r\\n * that container. Since translateX is relative to the progress bit size, we have to multiple it with\\r\\n * its relative size to the parent container:\\r\\n * 50%: 50 * 50 = 2500%\\r\\n * 100%: 50 * 100 - 50 (do not overflow): 4950%\\r\\n */\\r\\n@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4950%) scaleX(1) } }\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/progressbar/progressbar.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,WAAW;CACX,gBAAgB,EAAE,gCAAgC;AACnD;;AAEA;CACC,SAAS;CACT,WAAW;CACX,kBAAkB;CAClB,OAAO;CACP,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,OAAO;CACP,8BAA8B;AAC/B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,wBAAwB;CACxB,sBAAsB;CACtB,mCAAmC;CACnC,iCAAiC;CACjC,qCAAqC;AACtC;;AAEA;;;;;;EAME;AACF,sBAAsB,OAAO,oCAAoC,EAAE,MAAM,uCAAuC,EAAE,KAAK,uCAAuC,EAAE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-progress-container {\\r\\n\\twidth: 100%;\\r\\n\\theight: 5px;\\r\\n\\toverflow: hidden; /* keep progress bit in bounds */\\r\\n}\\r\\n\\r\\n.monaco-progress-container .progress-bit {\\r\\n\\twidth: 2%;\\r\\n\\theight: 5px;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.active .progress-bit {\\r\\n\\tdisplay: inherit;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.discrete .progress-bit {\\r\\n\\tleft: 0;\\r\\n\\ttransition: width 100ms linear;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.discrete.done .progress-bit {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-progress-container.infinite .progress-bit {\\r\\n\\tanimation-name: progress;\\r\\n\\tanimation-duration: 4s;\\r\\n\\tanimation-iteration-count: infinite;\\r\\n\\tanimation-timing-function: linear;\\r\\n\\ttransform: translate3d(0px, 0px, 0px);\\r\\n}\\r\\n\\r\\n/**\\r\\n * The progress bit has a width: 2% (1/50) of the parent container. The animation moves it from 0% to 100% of\\r\\n * that container. Since translateX is relative to the progress bit size, we have to multiple it with\\r\\n * its relative size to the parent container:\\r\\n * 50%: 50 * 50 = 2500%\\r\\n * 100%: 50 * 100 - 50 (do not overflow): 4950%\\r\\n */\\r\\n@keyframes progress { from { transform: translateX(0%) scaleX(1) } 50% { transform: translateX(2500%) scaleX(3) } to { transform: translateX(4950%) scaleX(1) } }\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-sash {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 35;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n.monaco-sash.disabled {\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-sash.mac.vertical {\\r\\n\\tcursor: col-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical.minimum {\\r\\n\\tcursor: e-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical.maximum {\\r\\n\\tcursor: w-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.mac.horizontal {\\r\\n\\tcursor: row-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.minimum {\\r\\n\\tcursor: s-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.maximum {\\r\\n\\tcursor: n-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.disabled {\\r\\n\\tcursor: default !important;\\r\\n\\tpointer-events: none !important;\\r\\n}\\r\\n\\r\\n/** Debug **/\\r\\n\\r\\n.monaco-sash.debug {\\r\\n\\tbackground: cyan;\\r\\n}\\r\\n\\r\\n.monaco-sash.debug.disabled {\\r\\n\\tbackground: rgba(0, 255, 255, 0.2);\\r\\n}\\r\\n\\r\\n.monaco-sash.debug:not(.disabled).orthogonal-start::before,\\r\\n.monaco-sash.debug:not(.disabled).orthogonal-end::after {\\r\\n\\tbackground: red;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/sash/sash.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,WAAW;CACX,kBAAkB;AACnB;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,0BAA0B;CAC1B,+BAA+B;AAChC;;AAEA,YAAY;;AAEZ;CACC,gBAAgB;AACjB;;AAEA;CACC,kCAAkC;AACnC;;AAEA;;CAEC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-sash {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 35;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n.monaco-sash.disabled {\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-sash.mac.vertical {\\r\\n\\tcursor: col-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical.minimum {\\r\\n\\tcursor: e-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.vertical.maximum {\\r\\n\\tcursor: w-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.mac.horizontal {\\r\\n\\tcursor: row-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.minimum {\\r\\n\\tcursor: s-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.horizontal.maximum {\\r\\n\\tcursor: n-resize;\\r\\n}\\r\\n\\r\\n.monaco-sash.disabled {\\r\\n\\tcursor: default !important;\\r\\n\\tpointer-events: none !important;\\r\\n}\\r\\n\\r\\n/** Debug **/\\r\\n\\r\\n.monaco-sash.debug {\\r\\n\\tbackground: cyan;\\r\\n}\\r\\n\\r\\n.monaco-sash.debug.disabled {\\r\\n\\tbackground: rgba(0, 255, 255, 0.2);\\r\\n}\\r\\n\\r\\n.monaco-sash.debug:not(.disabled).orthogonal-start::before,\\r\\n.monaco-sash.debug:not(.disabled).orthogonal-end::after {\\r\\n\\tbackground: red;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Arrows */\\r\\n.monaco-scrollable-element > .scrollbar > .scra {\\r\\n\\tcursor: pointer;\\r\\n\\tfont-size: 11px !important;\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .visible {\\r\\n\\topacity: 1;\\r\\n\\r\\n\\t/* Background rule added for IE9 - to allow clicks on dom node */\\r\\n\\tbackground:rgba(0,0,0,0);\\r\\n\\r\\n\\ttransition: opacity 100ms linear;\\r\\n}\\r\\n.monaco-scrollable-element > .invisible {\\r\\n\\topacity: 0;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n.monaco-scrollable-element > .invisible.fade {\\r\\n\\ttransition: opacity 800ms linear;\\r\\n}\\r\\n\\r\\n/* Scrollable Content Inset Shadow */\\r\\n.monaco-scrollable-element > .shadow {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: none;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 0;\\r\\n\\tleft: 3px;\\r\\n\\theight: 3px;\\r\\n\\twidth: 100%;\\r\\n\\tbox-shadow: #DDD 0 6px 6px -6px inset;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.left {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 3px;\\r\\n\\tleft: 0;\\r\\n\\theight: 100%;\\r\\n\\twidth: 3px;\\r\\n\\tbox-shadow: #DDD 6px 0 6px -6px inset;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top-left-corner {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 3px;\\r\\n\\twidth: 3px;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top.left {\\r\\n\\tbox-shadow: #DDD 6px 6px 6px -6px inset;\\r\\n}\\r\\n\\r\\n/* ---------- Default Style ---------- */\\r\\n\\r\\n.vs .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(100, 100, 100, .4);\\r\\n}\\r\\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(121, 121, 121, .4);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(111, 195, 223, .6);\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\tbackground: rgba(100, 100, 100, .7);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\tbackground: rgba(111, 195, 223, .8);\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(0, 0, 0, .6);\\r\\n}\\r\\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(191, 191, 191, .4);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(111, 195, 223, 1);\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.top {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.left {\\r\\n\\tbox-shadow: #000 6px 0 6px -6px inset;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.top.left {\\r\\n\\tbox-shadow: #000 6px 6px 6px -6px inset;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.top {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.left {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.top.left {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/scrollbar/media/scrollbars.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,WAAW;AACX;CACC,eAAe;CACf,0BAA0B;AAC3B;;AAEA;CACC,UAAU;;CAEV,gEAAgE;CAChE,wBAAwB;;CAExB,gCAAgC;AACjC;AACA;CACC,UAAU;CACV,oBAAoB;AACrB;AACA;CACC,gCAAgC;AACjC;;AAEA,oCAAoC;AACpC;CACC,kBAAkB;CAClB,aAAa;AACd;AACA;CACC,cAAc;CACd,MAAM;CACN,SAAS;CACT,WAAW;CACX,WAAW;CACX,qCAAqC;AACtC;AACA;CACC,cAAc;CACd,QAAQ;CACR,OAAO;CACP,YAAY;CACZ,UAAU;CACV,qCAAqC;AACtC;AACA;CACC,cAAc;CACd,MAAM;CACN,OAAO;CACP,WAAW;CACX,UAAU;AACX;AACA;CACC,uCAAuC;AACxC;;AAEA,wCAAwC;;AAExC;CACC,mCAAmC;AACpC;AACA;CACC,mCAAmC;AACpC;AACA;CACC,mCAAmC;AACpC;;AAEA;CACC,mCAAmC;AACpC;AACA;CACC,mCAAmC;AACpC;;AAEA;CACC,6BAA6B;AAC9B;AACA;CACC,mCAAmC;AACpC;AACA;CACC,kCAAkC;AACnC;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,qCAAqC;AACtC;;AAEA;CACC,uCAAuC;AACxC;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Arrows */\\r\\n.monaco-scrollable-element > .scrollbar > .scra {\\r\\n\\tcursor: pointer;\\r\\n\\tfont-size: 11px !important;\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .visible {\\r\\n\\topacity: 1;\\r\\n\\r\\n\\t/* Background rule added for IE9 - to allow clicks on dom node */\\r\\n\\tbackground:rgba(0,0,0,0);\\r\\n\\r\\n\\ttransition: opacity 100ms linear;\\r\\n}\\r\\n.monaco-scrollable-element > .invisible {\\r\\n\\topacity: 0;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n.monaco-scrollable-element > .invisible.fade {\\r\\n\\ttransition: opacity 800ms linear;\\r\\n}\\r\\n\\r\\n/* Scrollable Content Inset Shadow */\\r\\n.monaco-scrollable-element > .shadow {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: none;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 0;\\r\\n\\tleft: 3px;\\r\\n\\theight: 3px;\\r\\n\\twidth: 100%;\\r\\n\\tbox-shadow: #DDD 0 6px 6px -6px inset;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.left {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 3px;\\r\\n\\tleft: 0;\\r\\n\\theight: 100%;\\r\\n\\twidth: 3px;\\r\\n\\tbox-shadow: #DDD 6px 0 6px -6px inset;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top-left-corner {\\r\\n\\tdisplay: block;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 3px;\\r\\n\\twidth: 3px;\\r\\n}\\r\\n.monaco-scrollable-element > .shadow.top.left {\\r\\n\\tbox-shadow: #DDD 6px 6px 6px -6px inset;\\r\\n}\\r\\n\\r\\n/* ---------- Default Style ---------- */\\r\\n\\r\\n.vs .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(100, 100, 100, .4);\\r\\n}\\r\\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(121, 121, 121, .4);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\tbackground: rgba(111, 195, 223, .6);\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\tbackground: rgba(100, 100, 100, .7);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\tbackground: rgba(111, 195, 223, .8);\\r\\n}\\r\\n\\r\\n.monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(0, 0, 0, .6);\\r\\n}\\r\\n.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(191, 191, 191, .4);\\r\\n}\\r\\n.hc-black .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\tbackground: rgba(111, 195, 223, 1);\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.top {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.left {\\r\\n\\tbox-shadow: #000 6px 0 6px -6px inset;\\r\\n}\\r\\n\\r\\n.vs-dark .monaco-scrollable-element .shadow.top.left {\\r\\n\\tbox-shadow: #000 6px 6px 6px -6px inset;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.top {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.left {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\\r\\n.hc-black .monaco-scrollable-element .shadow.top.left {\\r\\n\\tbox-shadow: none;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-split-view2 {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .sash-container {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .sash-container > .monaco-sash {\\r\\n\\tpointer-events: initial;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .split-view-container {\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .split-view-container > .split-view-view {\\r\\n\\twhite-space: initial;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .split-view-container > .split-view-view:not(.visible) {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.vertical > .split-view-container > .split-view-view {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.horizontal > .split-view-container > .split-view-view {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\tcontent: ' ';\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tz-index: 5;\\r\\n\\tpointer-events: none;\\r\\n\\tbackground-color: var(--separator-border);\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border.horizontal > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\theight: 100%;\\r\\n\\twidth: 1px;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border.vertical > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\theight: 1px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/splitview/splitview.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,oBAAoB;AACrB;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,UAAU;CACV,oBAAoB;CACpB,yCAAyC;AAC1C;;AAEA;CACC,YAAY;CACZ,UAAU;AACX;;AAEA;CACC,WAAW;CACX,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-split-view2 {\\r\\n\\tposition: relative;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .sash-container {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .sash-container > .monaco-sash {\\r\\n\\tpointer-events: initial;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .split-view-container {\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n\\twhite-space: nowrap;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .split-view-container > .split-view-view {\\r\\n\\twhite-space: initial;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-split-view2 > .split-view-container > .split-view-view:not(.visible) {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.vertical > .split-view-container > .split-view-view {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.horizontal > .split-view-container > .split-view-view {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\tcontent: ' ';\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\tz-index: 5;\\r\\n\\tpointer-events: none;\\r\\n\\tbackground-color: var(--separator-border);\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border.horizontal > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\theight: 100%;\\r\\n\\twidth: 1px;\\r\\n}\\r\\n\\r\\n.monaco-split-view2.separator-border.vertical > .split-view-container > .split-view-view:not(:first-child)::before {\\r\\n\\theight: 1px;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-tl-row {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\talign-items: center;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent {\\r\\n\\theight: 100%;\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 16px;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.hide-arrows .monaco-tl-indent {\\r\\n\\tleft: 12px;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent > .indent-guide {\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing: border-box;\\r\\n\\theight: 100%;\\r\\n\\tborder-left: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent > .indent-guide {\\r\\n\\ttransition: border-color 0.1s linear;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie,\\r\\n.monaco-tl-contents {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie {\\r\\n\\tfont-size: 10px;\\r\\n\\ttext-align: right;\\r\\n\\tpadding-right: 6px;\\r\\n\\tflex-shrink: 0;\\r\\n\\twidth: 16px;\\r\\n\\tdisplay: flex !important;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tcolor: inherit !important;\\r\\n\\ttransform: translateX(3px);\\r\\n}\\r\\n\\r\\n.monaco-tl-contents {\\r\\n\\tflex: 1;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie.collapsed::before {\\r\\n\\ttransform: rotate(-90deg);\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie.codicon-tree-item-loading::before {\\r\\n\\t/* Use steps to throttle FPS to reduce CPU usage */\\r\\n\\tanimation: codicon-spin 1.25s steps(30) infinite;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/browser/ui/tree/media/tree.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,YAAY;CACZ,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,MAAM;CACN,UAAU;CACV,oBAAoB;AACrB;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,qBAAqB;CACrB,sBAAsB;CACtB,YAAY;CACZ,kCAAkC;AACnC;;AAEA;CACC,oCAAoC;AACrC;;AAEA;;CAEC,YAAY;AACb;;AAEA;CACC,eAAe;CACf,iBAAiB;CACjB,kBAAkB;CAClB,cAAc;CACd,WAAW;CACX,wBAAwB;CACxB,mBAAmB;CACnB,uBAAuB;CACvB,yBAAyB;CACzB,0BAA0B;AAC3B;;AAEA;CACC,OAAO;CACP,gBAAgB;AACjB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,kDAAkD;CAClD,gDAAgD;AACjD\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-tl-row {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\talign-items: center;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent {\\r\\n\\theight: 100%;\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 16px;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\\r\\n.hide-arrows .monaco-tl-indent {\\r\\n\\tleft: 12px;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent > .indent-guide {\\r\\n\\tdisplay: inline-block;\\r\\n\\tbox-sizing: border-box;\\r\\n\\theight: 100%;\\r\\n\\tborder-left: 1px solid transparent;\\r\\n}\\r\\n\\r\\n.monaco-tl-indent > .indent-guide {\\r\\n\\ttransition: border-color 0.1s linear;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie,\\r\\n.monaco-tl-contents {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie {\\r\\n\\tfont-size: 10px;\\r\\n\\ttext-align: right;\\r\\n\\tpadding-right: 6px;\\r\\n\\tflex-shrink: 0;\\r\\n\\twidth: 16px;\\r\\n\\tdisplay: flex !important;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tcolor: inherit !important;\\r\\n\\ttransform: translateX(3px);\\r\\n}\\r\\n\\r\\n.monaco-tl-contents {\\r\\n\\tflex: 1;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie.collapsed::before {\\r\\n\\ttransform: rotate(-90deg);\\r\\n}\\r\\n\\r\\n.monaco-tl-twistie.codicon-tree-item-loading::before {\\r\\n\\t/* Use steps to throttle FPS to reduce CPU usage */\\r\\n\\tanimation: codicon-spin 1.25s steps(30) infinite;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.quick-input-widget {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 600px;\\r\\n\\tz-index: 2000;\\r\\n\\tpadding-bottom: 6px;\\r\\n\\tleft: 50%;\\r\\n\\tmargin-left: -300px;\\r\\n}\\r\\n\\r\\n.quick-input-titlebar {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.quick-input-left-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin-left: 4px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-left-action-bar.monaco-action-bar .actions-container {\\r\\n\\tjustify-content: flex-start;\\r\\n}\\r\\n\\r\\n.quick-input-title {\\r\\n\\tpadding: 3px 0px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.quick-input-right-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin-right: 4px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-titlebar .monaco-action-bar .action-label.codicon {\\r\\n\\tmargin: 0;\\r\\n\\twidth: 19px;\\r\\n\\theight: 100%;\\r\\n\\tbackground-position: center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n}\\r\\n\\r\\n.quick-input-description {\\r\\n\\tmargin: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-header {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 6px 6px 0px 6px;\\r\\n\\tmargin-bottom: -2px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.hidden-input .quick-input-header {\\r\\n\\t/* reduce margins and paddings when input box hidden */\\r\\n\\tpadding: 0;\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.quick-input-and-message {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tflex-grow: 1;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-check-all {\\r\\n\\talign-self: center;\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.quick-input-filter {\\r\\n\\tflex-grow: 1;\\r\\n\\tdisplay: flex;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-box {\\r\\n\\tflex-grow: 1;\\r\\n}\\r\\n\\r\\n.quick-input-widget.show-checkboxes .quick-input-box,\\r\\n.quick-input-widget.show-checkboxes .quick-input-message {\\r\\n\\tmargin-left: 5px;\\r\\n}\\r\\n\\r\\n.quick-input-visible-count {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -10000px;\\r\\n}\\r\\n\\r\\n.quick-input-count {\\r\\n\\talign-self: center;\\r\\n\\tposition: absolute;\\r\\n\\tright: 4px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-count .monaco-count-badge {\\r\\n\\tvertical-align: middle;\\r\\n\\tpadding: 2px 4px;\\r\\n\\tborder-radius: 2px;\\r\\n\\tmin-height: auto;\\r\\n\\tline-height: normal;\\r\\n}\\r\\n\\r\\n.quick-input-action {\\r\\n\\tmargin-left: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-action .monaco-text-button {\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 0 6px;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-message {\\r\\n\\tmargin-top: -1px;\\r\\n\\tpadding: 5px 5px 2px 5px;\\r\\n}\\r\\n\\r\\n.quick-input-progress.monaco-progress-container {\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-progress.monaco-progress-container,\\r\\n.quick-input-progress.monaco-progress-container .progress-bit {\\r\\n\\theight: 2px;\\r\\n}\\r\\n\\r\\n.quick-input-list {\\r\\n\\tline-height: 22px;\\r\\n\\tmargin-top: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.hidden-input .quick-input-list {\\r\\n\\tmargin-top: 0; /* reduce margins when input box hidden */\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-list {\\r\\n\\toverflow: hidden;\\r\\n\\tmax-height: calc(20 * 22px);\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry {\\r\\n\\tbox-sizing: border-box;\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0 6px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry.quick-input-list-separator-border {\\r\\n\\tborder-top-width: 1px;\\r\\n\\tborder-top-style: solid;\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-list-row:first-child .quick-input-list-entry.quick-input-list-separator-border {\\r\\n\\tborder-top-style: none;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-label {\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-checkbox {\\r\\n\\talign-self: center;\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\theight: 100%;\\r\\n\\tflex: 1;\\r\\n\\tmargin-left: 5px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows {\\r\\n\\tmargin-left: 10px;\\r\\n}\\r\\n\\r\\n.quick-input-widget .quick-input-list .quick-input-list-checkbox {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label,\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label .monaco-icon-label-container > .monaco-icon-name-container {\\r\\n\\tflex: 1; /* make sure the icon label grows within the row */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .codicon[class*='codicon-'] {\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows .monaco-highlighted-label span {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding {\\r\\n\\tmargin-right: 8px; /* separate from the separator label or scrollbar if any */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-label-meta {\\r\\n\\topacity: 0.7;\\r\\n\\tline-height: normal;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-highlighted-label .highlight {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-separator {\\r\\n\\tmargin-right: 8px; /* separate from keybindings or actions */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 0;\\r\\n\\toverflow: visible;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label {\\r\\n\\t/*\\r\\n\\t * By default, actions in the quick input action bar are hidden\\r\\n\\t * until hovered over them or selected.\\r\\n\\t */\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\\r\\n\\tmargin: 0;\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0 2px;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tmargin-top: 1px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tmargin-right: 4px; /* separate from scrollbar */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\\r\\n\\tmargin-right: 4px; /* separate actions */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,\\r\\n.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,\\r\\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/base/parts/quickinput/browser/media/quickInput.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,YAAY;CACZ,aAAa;CACb,mBAAmB;CACnB,SAAS;CACT,mBAAmB;AACpB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,aAAa;CACb,gBAAgB;CAChB,OAAO;AACR;;AAEA;CACC,2BAA2B;AAC5B;;AAEA;CACC,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,aAAa;CACb,iBAAiB;CACjB,OAAO;AACR;;AAEA;CACC,SAAS;CACT,WAAW;CACX,YAAY;CACZ,2BAA2B;CAC3B,4BAA4B;AAC7B;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,aAAa;CACb,wBAAwB;CACxB,mBAAmB;AACpB;;AAEA;CACC,sDAAsD;CACtD,UAAU;CACV,gBAAgB;AACjB;;AAEA;CACC,aAAa;CACb,sBAAsB;CACtB,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,SAAS;AACV;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA;;CAEC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,cAAc;AACf;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,UAAU;CACV,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,sBAAsB;CACtB,gBAAgB;CAChB,kBAAkB;CAClB,gBAAgB;CAChB,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;CACf,cAAc;CACd,aAAa;CACb,YAAY;CACZ,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,wBAAwB;AACzB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;;CAEC,WAAW;AACZ;;AAEA;CACC,iBAAiB;CACjB,eAAe;AAChB;;AAEA;CACC,aAAa,EAAE,yCAAyC;AACzD;;AAEA;CACC,gBAAgB;CAChB,2BAA2B;AAC5B;;AAEA;CACC,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,qBAAqB;CACrB,uBAAuB;AACxB;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,YAAY;CACZ,OAAO;AACR;;AAEA;CACC,kBAAkB;CAClB,SAAS;AACV;;AAEA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,aAAa;CACb,sBAAsB;CACtB,YAAY;CACZ,OAAO;CACP,gBAAgB;AACjB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,aAAa;AACd;AACA;CACC,eAAe;AAChB;;AAEA;CACC,aAAa;CACb,mBAAmB;AACpB;;AAEA;;CAEC,OAAO,EAAE,kDAAkD;AAC5D;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,iBAAiB,EAAE,0DAA0D;AAC9E;;AAEA;CACC,YAAY;CACZ,mBAAmB;CACnB,uBAAuB;CACvB,gBAAgB;AACjB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,iBAAiB,EAAE,yCAAyC;AAC7D;;AAEA;CACC,aAAa;CACb,OAAO;CACP,iBAAiB;AAClB;;AAEA;CACC;;;GAGE;CACF,aAAa;AACd;;AAEA;CACC,SAAS;CACT,YAAY;CACZ,cAAc;CACd,sBAAsB;AACvB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,iBAAiB,EAAE,4BAA4B;AAChD;;AAEA;CACC,iBAAiB,EAAE,qBAAqB;AACzC;;AAEA;;;CAGC,aAAa;AACd\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.quick-input-widget {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 600px;\\r\\n\\tz-index: 2000;\\r\\n\\tpadding-bottom: 6px;\\r\\n\\tleft: 50%;\\r\\n\\tmargin-left: -300px;\\r\\n}\\r\\n\\r\\n.quick-input-titlebar {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.quick-input-left-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin-left: 4px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-left-action-bar.monaco-action-bar .actions-container {\\r\\n\\tjustify-content: flex-start;\\r\\n}\\r\\n\\r\\n.quick-input-title {\\r\\n\\tpadding: 3px 0px;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.quick-input-right-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tmargin-right: 4px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-titlebar .monaco-action-bar .action-label.codicon {\\r\\n\\tmargin: 0;\\r\\n\\twidth: 19px;\\r\\n\\theight: 100%;\\r\\n\\tbackground-position: center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n}\\r\\n\\r\\n.quick-input-description {\\r\\n\\tmargin: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-header {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 6px 6px 0px 6px;\\r\\n\\tmargin-bottom: -2px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.hidden-input .quick-input-header {\\r\\n\\t/* reduce margins and paddings when input box hidden */\\r\\n\\tpadding: 0;\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.quick-input-and-message {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tflex-grow: 1;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-check-all {\\r\\n\\talign-self: center;\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.quick-input-filter {\\r\\n\\tflex-grow: 1;\\r\\n\\tdisplay: flex;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-box {\\r\\n\\tflex-grow: 1;\\r\\n}\\r\\n\\r\\n.quick-input-widget.show-checkboxes .quick-input-box,\\r\\n.quick-input-widget.show-checkboxes .quick-input-message {\\r\\n\\tmargin-left: 5px;\\r\\n}\\r\\n\\r\\n.quick-input-visible-count {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -10000px;\\r\\n}\\r\\n\\r\\n.quick-input-count {\\r\\n\\talign-self: center;\\r\\n\\tposition: absolute;\\r\\n\\tright: 4px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-count .monaco-count-badge {\\r\\n\\tvertical-align: middle;\\r\\n\\tpadding: 2px 4px;\\r\\n\\tborder-radius: 2px;\\r\\n\\tmin-height: auto;\\r\\n\\tline-height: normal;\\r\\n}\\r\\n\\r\\n.quick-input-action {\\r\\n\\tmargin-left: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-action .monaco-text-button {\\r\\n\\tfont-size: 11px;\\r\\n\\tpadding: 0 6px;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-message {\\r\\n\\tmargin-top: -1px;\\r\\n\\tpadding: 5px 5px 2px 5px;\\r\\n}\\r\\n\\r\\n.quick-input-progress.monaco-progress-container {\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.quick-input-progress.monaco-progress-container,\\r\\n.quick-input-progress.monaco-progress-container .progress-bit {\\r\\n\\theight: 2px;\\r\\n}\\r\\n\\r\\n.quick-input-list {\\r\\n\\tline-height: 22px;\\r\\n\\tmargin-top: 6px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.hidden-input .quick-input-list {\\r\\n\\tmargin-top: 0; /* reduce margins when input box hidden */\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-list {\\r\\n\\toverflow: hidden;\\r\\n\\tmax-height: calc(20 * 22px);\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry {\\r\\n\\tbox-sizing: border-box;\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0 6px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry.quick-input-list-separator-border {\\r\\n\\tborder-top-width: 1px;\\r\\n\\tborder-top-style: solid;\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-list-row:first-child .quick-input-list-entry.quick-input-list-separator-border {\\r\\n\\tborder-top-style: none;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-label {\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: flex;\\r\\n\\theight: 100%;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-checkbox {\\r\\n\\talign-self: center;\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\theight: 100%;\\r\\n\\tflex: 1;\\r\\n\\tmargin-left: 5px;\\r\\n}\\r\\n\\r\\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-rows {\\r\\n\\tmargin-left: 10px;\\r\\n}\\r\\n\\r\\n.quick-input-widget .quick-input-list .quick-input-list-checkbox {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n.quick-input-widget.show-checkboxes .quick-input-list .quick-input-list-checkbox {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label,\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .monaco-icon-label .monaco-icon-label-container > .monaco-icon-name-container {\\r\\n\\tflex: 1; /* make sure the icon label grows within the row */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows > .quick-input-list-row .codicon[class*='codicon-'] {\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-rows .monaco-highlighted-label span {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-keybinding {\\r\\n\\tmargin-right: 8px; /* separate from the separator label or scrollbar if any */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-label-meta {\\r\\n\\topacity: 0.7;\\r\\n\\tline-height: normal;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.quick-input-list .monaco-highlighted-label .highlight {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-separator {\\r\\n\\tmargin-right: 8px; /* separate from keybindings or actions */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 0;\\r\\n\\toverflow: visible;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label {\\r\\n\\t/*\\r\\n\\t * By default, actions in the quick input action bar are hidden\\r\\n\\t * until hovered over them or selected.\\r\\n\\t */\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\\r\\n\\tmargin: 0;\\r\\n\\theight: 100%;\\r\\n\\tpadding: 0 2px;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tmargin-top: 1px;\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar {\\r\\n\\tmargin-right: 4px; /* separate from scrollbar */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry-action-bar .action-label.codicon {\\r\\n\\tmargin-right: 4px; /* separate actions */\\r\\n}\\r\\n\\r\\n.quick-input-list .quick-input-list-entry .quick-input-list-entry-action-bar .action-label.always-visible,\\r\\n.quick-input-list .quick-input-list-entry:hover .quick-input-list-entry-action-bar .action-label,\\r\\n.quick-input-list .monaco-list-row.focused .quick-input-list-entry-action-bar .action-label {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .inputarea {\\r\\n\\tmin-width: 0;\\r\\n\\tmin-height: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tposition: absolute;\\r\\n\\toutline: none !important;\\r\\n\\tresize: none;\\r\\n\\tborder: none;\\r\\n\\toverflow: hidden;\\r\\n\\tcolor: transparent;\\r\\n\\tbackground-color: transparent;\\r\\n}\\r\\n/*.monaco-editor .inputarea {\\r\\n\\tposition: fixed !important;\\r\\n\\twidth: 800px !important;\\r\\n\\theight: 500px !important;\\r\\n\\ttop: initial !important;\\r\\n\\tleft: initial !important;\\r\\n\\tbottom: 0 !important;\\r\\n\\tright: 0 !important;\\r\\n\\tcolor: black !important;\\r\\n\\tbackground: white !important;\\r\\n\\tline-height: 15px !important;\\r\\n\\tfont-size: 14px !important;\\r\\n}*/\\r\\n.monaco-editor .inputarea.ime-input {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/controller/textAreaHandler.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;CACZ,aAAa;CACb,SAAS;CACT,UAAU;CACV,kBAAkB;CAClB,wBAAwB;CACxB,YAAY;CACZ,YAAY;CACZ,gBAAgB;CAChB,kBAAkB;CAClB,6BAA6B;AAC9B;AACA;;;;;;;;;;;;EAYE;AACF;CACC,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .inputarea {\\r\\n\\tmin-width: 0;\\r\\n\\tmin-height: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tposition: absolute;\\r\\n\\toutline: none !important;\\r\\n\\tresize: none;\\r\\n\\tborder: none;\\r\\n\\toverflow: hidden;\\r\\n\\tcolor: transparent;\\r\\n\\tbackground-color: transparent;\\r\\n}\\r\\n/*.monaco-editor .inputarea {\\r\\n\\tposition: fixed !important;\\r\\n\\twidth: 800px !important;\\r\\n\\theight: 500px !important;\\r\\n\\ttop: initial !important;\\r\\n\\tleft: initial !important;\\r\\n\\tbottom: 0 !important;\\r\\n\\tright: 0 !important;\\r\\n\\tcolor: black !important;\\r\\n\\tbackground: white !important;\\r\\n\\tline-height: 15px !important;\\r\\n\\tfont-size: 14px !important;\\r\\n}*/\\r\\n.monaco-editor .inputarea.ime-input {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .view-overlays .current-line {\\r\\n\\tdisplay: block;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .current-line {\\r\\n\\tdisplay: block;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both {\\r\\n\\tborder-right: 0;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,cAAc;CACd,kBAAkB;CAClB,OAAO;CACP,MAAM;CACN,sBAAsB;AACvB;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,OAAO;CACP,MAAM;CACN,sBAAsB;AACvB;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .view-overlays .current-line {\\r\\n\\tdisplay: block;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .current-line {\\r\\n\\tdisplay: block;\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .current-line.current-line-margin.current-line-margin-both {\\r\\n\\tborder-right: 0;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcdr = core decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cdr {\\r\\n\\tposition: absolute;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/decorations/decorations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcdr = core decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cdr {\\r\\n\\tposition: absolute;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .glyph-margin {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcgmr = core glyph margin rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cgmr {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,MAAM;AACP;;AAEA;;;CAGC;AACD;CACC,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .glyph-margin {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcgmr = core glyph margin rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cgmr {\\r\\n\\tposition: absolute;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcigr = core ident guides rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cigr {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n.monaco-editor .lines-content .cigra {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/indentGuides/indentGuides.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcigr = core ident guides rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cigr {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n.monaco-editor .lines-content .cigra {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .margin-view-overlays .line-numbers {\\r\\n\\tfont-variant-numeric: tabular-nums;\\r\\n\\tposition: absolute;\\r\\n\\ttext-align: right;\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: middle;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tcursor: default;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .relative-current-line-number {\\r\\n\\ttext-align: left;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .line-numbers.lh-odd {\\r\\n\\tmargin-top: 1px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lineNumbers/lineNumbers.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kCAAkC;CAClC,kBAAkB;CAClB,iBAAiB;CACjB,qBAAqB;CACrB,sBAAsB;CACtB,sBAAsB;CACtB,eAAe;CACf,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,qBAAqB;CACrB,WAAW;AACZ;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .margin-view-overlays .line-numbers {\\r\\n\\tfont-variant-numeric: tabular-nums;\\r\\n\\tposition: absolute;\\r\\n\\ttext-align: right;\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: middle;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tcursor: default;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .relative-current-line-number {\\r\\n\\ttext-align: left;\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays .line-numbers.lh-odd {\\r\\n\\tmargin-top: 1px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Uncomment to see lines flashing when they're painted */\\r\\n/*.monaco-editor .view-lines > .view-line {\\r\\n\\tbackground-color: none;\\r\\n\\tanimation-name: flash-background;\\r\\n\\tanimation-duration: 800ms;\\r\\n}\\r\\n@keyframes flash-background {\\r\\n\\t0% { background-color: lightgreen; }\\r\\n\\t100% { background-color: none }\\r\\n}*/\\r\\n\\r\\n.monaco-editor.no-user-select .lines-content,\\r\\n.monaco-editor.no-user-select .view-line,\\r\\n.monaco-editor.no-user-select .view-lines {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-lines {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-line {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .mtkz {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n/* TODO@tokenization bootstrap fix */\\r\\n/*.monaco-editor .view-line > span > span {\\r\\n\\tfloat: none;\\r\\n\\tmin-height: inherit;\\r\\n\\tmargin-left: inherit;\\r\\n}*/\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/lines/viewLines.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,yDAAyD;AACzD;;;;;;;;EAQE;;AAEF;;;CAGC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,qBAAqB;AACtB;;AAEA,oCAAoC;AACpC;;;;EAIE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Uncomment to see lines flashing when they're painted */\\r\\n/*.monaco-editor .view-lines > .view-line {\\r\\n\\tbackground-color: none;\\r\\n\\tanimation-name: flash-background;\\r\\n\\tanimation-duration: 800ms;\\r\\n}\\r\\n@keyframes flash-background {\\r\\n\\t0% { background-color: lightgreen; }\\r\\n\\t100% { background-color: none }\\r\\n}*/\\r\\n\\r\\n.monaco-editor.no-user-select .lines-content,\\r\\n.monaco-editor.no-user-select .view-line,\\r\\n.monaco-editor.no-user-select .view-lines {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-lines {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-line {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .mtkz {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n/* TODO@tokenization bootstrap fix */\\r\\n/*.monaco-editor .view-line > span > span {\\r\\n\\tfloat: none;\\r\\n\\tmin-height: inherit;\\r\\n\\tmargin-left: inherit;\\r\\n}*/\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .lines-decorations {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tbackground: white;\\r\\n}\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcldr = core lines decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cldr {\\r\\n\\tposition: absolute;\\r\\n\\theight: 100%;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/linesDecorations/linesDecorations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,MAAM;CACN,iBAAiB;AAClB;;AAEA;;;CAGC;AACD;CACC,kBAAkB;CAClB,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .lines-decorations {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tbackground: white;\\r\\n}\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcldr = core lines decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cldr {\\r\\n\\tposition: absolute;\\r\\n\\theight: 100%;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcmdr = core margin decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cmdr {\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/marginDecorations/marginDecorations.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;CAClB,OAAO;CACP,WAAW;CACX,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcmdr = core margin decorations rendering (div)\\r\\n*/\\r\\n.monaco-editor .margin-view-overlays .cmdr {\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* START cover the case that slider is visible on mouseover */\\r\\n.monaco-editor .minimap.slider-mouseover .minimap-slider {\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity 100ms linear;\\r\\n}\\r\\n.monaco-editor .minimap.slider-mouseover:hover .minimap-slider {\\r\\n\\topacity: 1;\\r\\n}\\r\\n.monaco-editor .minimap.slider-mouseover .minimap-slider.active {\\r\\n\\topacity: 1;\\r\\n}\\r\\n/* END cover the case that slider is visible on mouseover */\\r\\n\\r\\n.monaco-editor .minimap-shadow-hidden {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 0;\\r\\n}\\r\\n.monaco-editor .minimap-shadow-visible {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -6px;\\r\\n\\twidth: 6px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/minimap/minimap.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,6DAA6D;AAC7D;CACC,UAAU;CACV,gCAAgC;AACjC;AACA;CACC,UAAU;AACX;AACA;CACC,UAAU;AACX;AACA,2DAA2D;;AAE3D;CACC,kBAAkB;CAClB,QAAQ;AACT;AACA;CACC,kBAAkB;CAClB,UAAU;CACV,UAAU;AACX\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* START cover the case that slider is visible on mouseover */\\r\\n.monaco-editor .minimap.slider-mouseover .minimap-slider {\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity 100ms linear;\\r\\n}\\r\\n.monaco-editor .minimap.slider-mouseover:hover .minimap-slider {\\r\\n\\topacity: 1;\\r\\n}\\r\\n.monaco-editor .minimap.slider-mouseover .minimap-slider.active {\\r\\n\\topacity: 1;\\r\\n}\\r\\n/* END cover the case that slider is visible on mouseover */\\r\\n\\r\\n.monaco-editor .minimap-shadow-hidden {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 0;\\r\\n}\\r\\n.monaco-editor .minimap-shadow-visible {\\r\\n\\tposition: absolute;\\r\\n\\tleft: -6px;\\r\\n\\twidth: 6px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .overlayWidgets {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft:0;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,MAAM;CACN,MAAM;AACP\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .overlayWidgets {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft:0;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .view-ruler {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/rulers/rulers.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,MAAM;AACP\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .view-ruler {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .scroll-decoration {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 6px;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kBAAkB;CAClB,MAAM;CACN,OAAO;CACP,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .scroll-decoration {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 0;\\r\\n\\theight: 6px;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcslr = core selections layer rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cslr {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-editor\\t\\t\\t.top-left-radius\\t\\t{ border-top-left-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.bottom-left-radius\\t\\t{ border-bottom-left-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.top-right-radius\\t\\t{ border-top-right-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.bottom-right-radius\\t{ border-bottom-right-radius: 3px; }\\r\\n\\r\\n.monaco-editor.hc-black .top-left-radius\\t\\t{ border-top-left-radius: 0; }\\r\\n.monaco-editor.hc-black .bottom-left-radius\\t\\t{ border-bottom-left-radius: 0; }\\r\\n.monaco-editor.hc-black .top-right-radius\\t\\t{ border-top-right-radius: 0; }\\r\\n.monaco-editor.hc-black .bottom-right-radius\\t{ border-bottom-right-radius: 0; }\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/selections/selections.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;;CAGC;AACD;CACC,kBAAkB;AACnB;;AAEA,qCAAqC,2BAA2B,EAAE;AAClE,wCAAwC,8BAA8B,EAAE;AACxE,sCAAsC,4BAA4B,EAAE;AACpE,wCAAwC,+BAA+B,EAAE;;AAEzE,4CAA4C,yBAAyB,EAAE;AACvE,+CAA+C,4BAA4B,EAAE;AAC7E,6CAA6C,0BAA0B,EAAE;AACzE,+CAA+C,6BAA6B,EAAE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/*\\r\\n\\tKeeping name short for faster parsing.\\r\\n\\tcslr = core selections layer rendering (div)\\r\\n*/\\r\\n.monaco-editor .lines-content .cslr {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-editor\\t\\t\\t.top-left-radius\\t\\t{ border-top-left-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.bottom-left-radius\\t\\t{ border-bottom-left-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.top-right-radius\\t\\t{ border-top-right-radius: 3px; }\\r\\n.monaco-editor\\t\\t\\t.bottom-right-radius\\t{ border-bottom-right-radius: 3px; }\\r\\n\\r\\n.monaco-editor.hc-black .top-left-radius\\t\\t{ border-top-left-radius: 0; }\\r\\n.monaco-editor.hc-black .bottom-left-radius\\t\\t{ border-bottom-left-radius: 0; }\\r\\n.monaco-editor.hc-black .top-right-radius\\t\\t{ border-top-right-radius: 0; }\\r\\n.monaco-editor.hc-black .bottom-right-radius\\t{ border-bottom-right-radius: 0; }\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .cursors-layer {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .cursors-layer > .cursor {\\r\\n\\tposition: absolute;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n/* -- smooth-caret-animation -- */\\r\\n.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor {\\r\\n\\ttransition: all 80ms;\\r\\n}\\r\\n\\r\\n/* -- block-outline-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-block-outline-style > .cursor {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tbackground: transparent !important;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n}\\r\\n\\r\\n/* -- underline-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-underline-style > .cursor {\\r\\n\\tborder-bottom-width: 2px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tbackground: transparent !important;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n/* -- underline-thin-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-underline-thin-style > .cursor {\\r\\n\\tborder-bottom-width: 1px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tbackground: transparent !important;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-smooth {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\topacity: 1;\\r\\n\\t}\\r\\n\\t60%,\\r\\n\\t100% {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-phase {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\topacity: 1;\\r\\n\\t}\\r\\n\\t90%,\\r\\n\\t100% {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-expand {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\ttransform: scaleY(1);\\r\\n\\t}\\r\\n\\t80%,\\r\\n\\t100% {\\r\\n\\t\\ttransform: scaleY(0);\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.cursor-smooth {\\r\\n\\tanimation: monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\\r\\n.cursor-phase {\\r\\n\\tanimation: monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\\r\\n.cursor-expand > .cursor {\\r\\n\\tanimation: monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/viewParts/viewCursors/viewCursors.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,MAAM;AACP;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA,iCAAiC;AACjC;CACC,oBAAoB;AACrB;;AAEA,8BAA8B;AAC9B;CACC,sBAAsB;CACtB,kCAAkC;CAClC,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA,0BAA0B;AAC1B;CACC,wBAAwB;CACxB,0BAA0B;CAC1B,kCAAkC;CAClC,sBAAsB;AACvB;;AAEA,+BAA+B;AAC/B;CACC,wBAAwB;CACxB,0BAA0B;CAC1B,kCAAkC;CAClC,sBAAsB;AACvB;;AAEA;CACC;;EAEC,UAAU;CACX;CACA;;EAEC,UAAU;CACX;AACD;;AAEA;CACC;;EAEC,UAAU;CACX;CACA;;EAEC,UAAU;CACX;AACD;;AAEA;CACC;;EAEC,oBAAoB;CACrB;CACA;;EAEC,oBAAoB;CACrB;AACD;;AAEA;CACC,gEAAgE;AACjE;;AAEA;CACC,+DAA+D;AAChE;;AAEA;CACC,gEAAgE;AACjE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .cursors-layer {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .cursors-layer > .cursor {\\r\\n\\tposition: absolute;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n/* -- smooth-caret-animation -- */\\r\\n.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor {\\r\\n\\ttransition: all 80ms;\\r\\n}\\r\\n\\r\\n/* -- block-outline-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-block-outline-style > .cursor {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tbackground: transparent !important;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n}\\r\\n\\r\\n/* -- underline-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-underline-style > .cursor {\\r\\n\\tborder-bottom-width: 2px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tbackground: transparent !important;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n/* -- underline-thin-style -- */\\r\\n.monaco-editor .cursors-layer.cursor-underline-thin-style > .cursor {\\r\\n\\tborder-bottom-width: 1px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tbackground: transparent !important;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-smooth {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\topacity: 1;\\r\\n\\t}\\r\\n\\t60%,\\r\\n\\t100% {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-phase {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\topacity: 1;\\r\\n\\t}\\r\\n\\t90%,\\r\\n\\t100% {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n@keyframes monaco-cursor-expand {\\r\\n\\t0%,\\r\\n\\t20% {\\r\\n\\t\\ttransform: scaleY(1);\\r\\n\\t}\\r\\n\\t80%,\\r\\n\\t100% {\\r\\n\\t\\ttransform: scaleY(0);\\r\\n\\t}\\r\\n}\\r\\n\\r\\n.cursor-smooth {\\r\\n\\tanimation: monaco-cursor-smooth 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\\r\\n.cursor-phase {\\r\\n\\tanimation: monaco-cursor-phase 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\\r\\n.cursor-expand > .cursor {\\r\\n\\tanimation: monaco-cursor-expand 0.5s ease-in-out 0s 20 alternate;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n/* ---------- DiffEditor ---------- */\\r\\n\\r\\n.monaco-diff-editor .diffOverview {\\r\\n\\tz-index: 9;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diffOverview .diffViewport {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\\r\\n/* colors not externalized: using transparancy on background */\\r\\n.monaco-diff-editor.vs\\t\\t\\t.diffOverview { background: rgba(0, 0, 0, 0.03); }\\r\\n.monaco-diff-editor.vs-dark\\t\\t.diffOverview { background: rgba(255, 255, 255, 0.01); }\\r\\n\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs\\t\\t.scrollbar { background: rgba(0,0,0,0); }\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark\\t.scrollbar { background: rgba(0,0,0,0); }\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black\\t.scrollbar { background: none; }\\r\\n\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor .slider {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n.modified-in-monaco-diff-editor\\t\\t\\t\\t.slider.active { background: rgba(171, 171, 171, .4); }\\r\\n.modified-in-monaco-diff-editor.hc-black\\t.slider.active { background: none; }\\r\\n\\r\\n/* ---------- Diff ---------- */\\r\\n\\r\\n.monaco-editor .insert-sign,\\r\\n.monaco-diff-editor .insert-sign,\\r\\n.monaco-editor .delete-sign,\\r\\n.monaco-diff-editor .delete-sign {\\r\\n\\tfont-size: 11px !important;\\r\\n\\topacity: 0.7 !important;\\r\\n\\tdisplay: flex !important;\\r\\n\\talign-items: center;\\r\\n}\\r\\n.monaco-editor.hc-black .insert-sign,\\r\\n.monaco-diff-editor.hc-black .insert-sign,\\r\\n.monaco-editor.hc-black .delete-sign,\\r\\n.monaco-diff-editor.hc-black .delete-sign {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .inline-deleted-margin-view-zone {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n.monaco-editor .inline-added-margin-view-zone {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n/* ---------- Inline Diff ---------- */\\r\\n\\r\\n.monaco-editor .view-zones .view-lines .view-line span {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-zones .lightbulb-glyph:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffEditor.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F,qCAAqC;;AAErC;CACC,UAAU;AACX;;AAEA;CACC,WAAW;AACZ;;AAEA,8DAA8D;AAC9D,yCAAyC,+BAA+B,EAAE;AAC1E,6CAA6C,qCAAqC,EAAE;;AAEpF,2EAA2E,yBAAyB,EAAE;AACtG,+EAA+E,yBAAyB,EAAE;AAC1G,gFAAgF,gBAAgB,EAAE;;AAElG;CACC,WAAW;AACZ;AACA,oDAAoD,mCAAmC,EAAE;AACzF,0DAA0D,gBAAgB,EAAE;;AAE5E,+BAA+B;;AAE/B;;;;CAIC,0BAA0B;CAC1B,uBAAuB;CACvB,wBAAwB;CACxB,mBAAmB;AACpB;AACA;;;;CAIC,UAAU;AACX;;AAEA;CACC,iBAAiB;AAClB;AACA;CACC,iBAAiB;AAClB;;AAEA,sCAAsC;;AAEtC;CACC,qBAAqB;AACtB;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n/* ---------- DiffEditor ---------- */\\r\\n\\r\\n.monaco-diff-editor .diffOverview {\\r\\n\\tz-index: 9;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diffOverview .diffViewport {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\\r\\n/* colors not externalized: using transparancy on background */\\r\\n.monaco-diff-editor.vs\\t\\t\\t.diffOverview { background: rgba(0, 0, 0, 0.03); }\\r\\n.monaco-diff-editor.vs-dark\\t\\t.diffOverview { background: rgba(255, 255, 255, 0.01); }\\r\\n\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs\\t\\t.scrollbar { background: rgba(0,0,0,0); }\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.vs-dark\\t.scrollbar { background: rgba(0,0,0,0); }\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor.hc-black\\t.scrollbar { background: none; }\\r\\n\\r\\n.monaco-scrollable-element.modified-in-monaco-diff-editor .slider {\\r\\n\\tz-index: 10;\\r\\n}\\r\\n.modified-in-monaco-diff-editor\\t\\t\\t\\t.slider.active { background: rgba(171, 171, 171, .4); }\\r\\n.modified-in-monaco-diff-editor.hc-black\\t.slider.active { background: none; }\\r\\n\\r\\n/* ---------- Diff ---------- */\\r\\n\\r\\n.monaco-editor .insert-sign,\\r\\n.monaco-diff-editor .insert-sign,\\r\\n.monaco-editor .delete-sign,\\r\\n.monaco-diff-editor .delete-sign {\\r\\n\\tfont-size: 11px !important;\\r\\n\\topacity: 0.7 !important;\\r\\n\\tdisplay: flex !important;\\r\\n\\talign-items: center;\\r\\n}\\r\\n.monaco-editor.hc-black .insert-sign,\\r\\n.monaco-diff-editor.hc-black .insert-sign,\\r\\n.monaco-editor.hc-black .delete-sign,\\r\\n.monaco-diff-editor.hc-black .delete-sign {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .inline-deleted-margin-view-zone {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n.monaco-editor .inline-added-margin-view-zone {\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n/* ---------- Inline Diff ---------- */\\r\\n\\r\\n.monaco-editor .view-zones .view-lines .view-line span {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-zones .lightbulb-glyph:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-diff-editor .diff-review-line-number {\\r\\n\\ttext-align: right;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review {\\r\\n\\tposition: absolute;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-summary {\\r\\n\\tpadding-left: 10px;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-shadow {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-row {\\r\\n\\twhite-space: pre;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-table {\\r\\n\\tdisplay: table;\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-row {\\r\\n\\tdisplay: table-row;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-spacer {\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 10px;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-spacer > .codicon {\\r\\n\\tfont-size: 9px !important;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-actions {\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tright: 10px;\\r\\n\\ttop: 2px;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-actions .action-label {\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tmargin: 2px 0;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/diffReview.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,iBAAiB;CACjB,qBAAqB;AACtB;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,qBAAqB;CACrB,WAAW;CACX,sBAAsB;AACvB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,WAAW;CACX,QAAQ;AACT;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,aAAa;AACd\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-diff-editor .diff-review-line-number {\\r\\n\\ttext-align: right;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review {\\r\\n\\tposition: absolute;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-summary {\\r\\n\\tpadding-left: 10px;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-shadow {\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-row {\\r\\n\\twhite-space: pre;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-table {\\r\\n\\tdisplay: table;\\r\\n\\tmin-width: 100%;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-row {\\r\\n\\tdisplay: table-row;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-spacer {\\r\\n\\tdisplay: inline-block;\\r\\n\\twidth: 10px;\\r\\n\\tvertical-align: middle;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-spacer > .codicon {\\r\\n\\tfont-size: 9px !important;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-actions {\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tright: 10px;\\r\\n\\ttop: 2px;\\r\\n}\\r\\n\\r\\n.monaco-diff-editor .diff-review-actions .action-label {\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tmargin: 2px 0;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* -------------------- IE10 remove auto clear button -------------------- */\\r\\n\\r\\n::-ms-clear {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* All widgets */\\r\\n/* I am not a big fan of this rule */\\r\\n.monaco-editor .editor-widget input {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n/* -------------------- Editor -------------------- */\\r\\n\\r\\n.monaco-editor {\\r\\n\\tposition: relative;\\r\\n\\toverflow: visible;\\r\\n\\t-webkit-text-size-adjust: 100%;\\r\\n}\\r\\n\\r\\n/* -------------------- Misc -------------------- */\\r\\n\\r\\n.monaco-editor .overflow-guard {\\r\\n\\tposition: relative;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-overlays {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n/*\\r\\n.monaco-editor .auto-closed-character {\\r\\n\\topacity: 0.3;\\r\\n}\\r\\n*/\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/browser/widget/media/editor.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,4EAA4E;;AAE5E;CACC,aAAa;AACd;;AAEA,gBAAgB;AAChB,oCAAoC;AACpC;CACC,cAAc;AACf;;AAEA,qDAAqD;;AAErD;CACC,kBAAkB;CAClB,iBAAiB;CACjB,8BAA8B;AAC/B;;AAEA,mDAAmD;;AAEnD;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,MAAM;AACP;;AAEA;;;;CAIC\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* -------------------- IE10 remove auto clear button -------------------- */\\r\\n\\r\\n::-ms-clear {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* All widgets */\\r\\n/* I am not a big fan of this rule */\\r\\n.monaco-editor .editor-widget input {\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n/* -------------------- Editor -------------------- */\\r\\n\\r\\n.monaco-editor {\\r\\n\\tposition: relative;\\r\\n\\toverflow: visible;\\r\\n\\t-webkit-text-size-adjust: 100%;\\r\\n}\\r\\n\\r\\n/* -------------------- Misc -------------------- */\\r\\n\\r\\n.monaco-editor .overflow-guard {\\r\\n\\tposition: relative;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .view-overlays {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n/*\\r\\n.monaco-editor .auto-closed-character {\\r\\n\\topacity: 0.3;\\r\\n}\\r\\n*/\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .selection-anchor {\\r\\n\\tbackground-color: #007ACC;\\r\\n\\twidth: 2px !important;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/anchorSelect/anchorSelect.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,yBAAyB;CACzB,qBAAqB;AACtB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .selection-anchor {\\r\\n\\tbackground-color: #007ACC;\\r\\n\\twidth: 2px !important;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .bracket-match {\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/bracketMatching/bracketMatching.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;AACvB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .bracket-match {\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .lightbulb-glyph,\\r\\n.monaco-editor .codicon-lightbulb {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\theight: 16px;\\r\\n\\twidth: 20px;\\r\\n\\tpadding-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .lightbulb-glyph:hover,\\r\\n.monaco-editor .codicon-lightbulb:hover {\\r\\n\\tcursor: pointer;\\r\\n\\t/* transform: scale(1.3, 1.3); */\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/codeAction/lightBulbWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;CAEC,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,YAAY;CACZ,WAAW;CACX,iBAAiB;AAClB;;AAEA;;CAEC,eAAe;CACf,gCAAgC;AACjC\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .lightbulb-glyph,\\r\\n.monaco-editor .codicon-lightbulb {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\theight: 16px;\\r\\n\\twidth: 20px;\\r\\n\\tpadding-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .lightbulb-glyph:hover,\\r\\n.monaco-editor .codicon-lightbulb:hover {\\r\\n\\tcursor: pointer;\\r\\n\\t/* transform: scale(1.3, 1.3); */\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .codelens-decoration {\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > span,\\r\\n.monaco-editor .codelens-decoration > a {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n\\twhite-space: nowrap;\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a {\\r\\n\\ttext-decoration: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration .codicon {\\r\\n\\tvertical-align: middle;\\r\\n\\tcolor: currentColor !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a:hover .codicon::before {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n@keyframes fadein {\\r\\n\\t0% { opacity: 0; visibility: visible;}\\r\\n\\t100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration.fadein {\\r\\n\\tanimation: fadein 0.1s linear;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/codelens/codelensWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;CAChB,qBAAqB;CACrB,uBAAuB;AACxB;;AAEA;;CAEC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,mBAAmB;CACnB,mBAAmB;AACpB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,sBAAsB;CACtB,8BAA8B;AAC/B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,KAAK,UAAU,EAAE,mBAAmB,CAAC;CACrC,OAAO,UAAU,EAAE;AACpB;;AAEA;CACC,6BAA6B;AAC9B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .codelens-decoration {\\r\\n\\toverflow: hidden;\\r\\n\\tdisplay: inline-block;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > span,\\r\\n.monaco-editor .codelens-decoration > a {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n\\twhite-space: nowrap;\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a {\\r\\n\\ttext-decoration: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a:hover {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration .codicon {\\r\\n\\tvertical-align: middle;\\r\\n\\tcolor: currentColor !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration > a:hover .codicon::before {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n@keyframes fadein {\\r\\n\\t0% { opacity: 0; visibility: visible;}\\r\\n\\t100% { opacity: 1; }\\r\\n}\\r\\n\\r\\n.monaco-editor .codelens-decoration.fadein {\\r\\n\\tanimation: fadein 0.1s linear;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.colorpicker-widget {\\r\\n\\theight: 190px;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .colorpicker-hover:focus {\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n\\r\\n/* Header */\\r\\n\\r\\n.colorpicker-header {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 24px;\\r\\n\\tposition: relative;\\r\\n\\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\\\");\\r\\n\\tbackground-size: 9px 9px;\\r\\n\\timage-rendering: pixelated;\\r\\n}\\r\\n\\r\\n.colorpicker-header .picked-color {\\r\\n\\twidth: 216px;\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 24px;\\r\\n\\tcursor: pointer;\\r\\n\\tcolor: white;\\r\\n\\tflex: 1;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.colorpicker-header .picked-color.light {\\r\\n\\tcolor: black;\\r\\n}\\r\\n\\r\\n.colorpicker-header .original-color {\\r\\n\\twidth: 74px;\\r\\n\\tz-index: inherit;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n\\r\\n/* Body */\\r\\n\\r\\n.colorpicker-body {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 8px;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-wrap {\\r\\n\\toverflow: hidden;\\r\\n\\theight: 150px;\\r\\n\\tposition: relative;\\r\\n\\tmin-width: 220px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-box {\\r\\n\\theight: 150px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-selection {\\r\\n\\twidth: 9px;\\r\\n\\theight: 9px;\\r\\n\\tmargin: -5px 0 0 -5px;\\r\\n\\tborder: 1px solid rgb(255, 255, 255);\\r\\n\\tborder-radius: 100%;\\r\\n\\tbox-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8);\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip {\\r\\n\\twidth: 25px;\\r\\n\\theight: 150px;\\r\\n}\\r\\n\\r\\n.colorpicker-body .hue-strip {\\r\\n\\tposition: relative;\\r\\n\\tmargin-left: 8px;\\r\\n\\tcursor: grab;\\r\\n\\tbackground: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\\r\\n}\\r\\n\\r\\n.colorpicker-body .opacity-strip {\\r\\n\\tposition: relative;\\r\\n\\tmargin-left: 8px;\\r\\n\\tcursor: grab;\\r\\n\\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\\\");\\r\\n\\tbackground-size: 9px 9px;\\r\\n\\timage-rendering: pixelated;\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip.grabbing {\\r\\n\\tcursor: grabbing;\\r\\n}\\r\\n\\r\\n.colorpicker-body .slider {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: -2px;\\r\\n\\twidth: calc(100% + 4px);\\r\\n\\theight: 4px;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tborder: 1px solid rgba(255, 255, 255, 0.71);\\r\\n\\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip .overlay {\\r\\n\\theight: 150px;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/colorPicker/colorPicker.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,aAAa;AACd;;;AAGA,WAAW;;AAEX;CACC,aAAa;CACb,YAAY;CACZ,kBAAkB;CAClB,iRAAiR;CACjR,wBAAwB;CACxB,0BAA0B;AAC3B;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf,YAAY;CACZ,OAAO;CACP,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,eAAe;AAChB;;;AAGA,SAAS;;AAET;CACC,aAAa;CACb,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,kBAAkB;CAClB,gBAAgB;CAChB,OAAO;AACR;;AAEA;CACC,aAAa;CACb,kBAAkB;AACnB;;AAEA;CACC,UAAU;CACV,WAAW;CACX,qBAAqB;CACrB,oCAAoC;CACpC,mBAAmB;CACnB,0CAA0C;CAC1C,kBAAkB;AACnB;;AAEA;CACC,WAAW;CACX,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,YAAY;CACZ,iIAAiI;AAClI;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,YAAY;CACZ,iRAAiR;CACjR,wBAAwB;CACxB,0BAA0B;AAC3B;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,MAAM;CACN,UAAU;CACV,uBAAuB;CACvB,WAAW;CACX,sBAAsB;CACtB,2CAA2C;CAC3C,2CAA2C;AAC5C;;AAEA;CACC,aAAa;CACb,oBAAoB;AACrB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.colorpicker-widget {\\r\\n\\theight: 190px;\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .colorpicker-hover:focus {\\r\\n\\toutline: none;\\r\\n}\\r\\n\\r\\n\\r\\n/* Header */\\r\\n\\r\\n.colorpicker-header {\\r\\n\\tdisplay: flex;\\r\\n\\theight: 24px;\\r\\n\\tposition: relative;\\r\\n\\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\\\");\\r\\n\\tbackground-size: 9px 9px;\\r\\n\\timage-rendering: pixelated;\\r\\n}\\r\\n\\r\\n.colorpicker-header .picked-color {\\r\\n\\twidth: 216px;\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 24px;\\r\\n\\tcursor: pointer;\\r\\n\\tcolor: white;\\r\\n\\tflex: 1;\\r\\n\\ttext-align: center;\\r\\n}\\r\\n\\r\\n.colorpicker-header .picked-color.light {\\r\\n\\tcolor: black;\\r\\n}\\r\\n\\r\\n.colorpicker-header .original-color {\\r\\n\\twidth: 74px;\\r\\n\\tz-index: inherit;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n\\r\\n/* Body */\\r\\n\\r\\n.colorpicker-body {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 8px;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-wrap {\\r\\n\\toverflow: hidden;\\r\\n\\theight: 150px;\\r\\n\\tposition: relative;\\r\\n\\tmin-width: 220px;\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-box {\\r\\n\\theight: 150px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.colorpicker-body .saturation-selection {\\r\\n\\twidth: 9px;\\r\\n\\theight: 9px;\\r\\n\\tmargin: -5px 0 0 -5px;\\r\\n\\tborder: 1px solid rgb(255, 255, 255);\\r\\n\\tborder-radius: 100%;\\r\\n\\tbox-shadow: 0px 0px 2px rgba(0, 0, 0, 0.8);\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip {\\r\\n\\twidth: 25px;\\r\\n\\theight: 150px;\\r\\n}\\r\\n\\r\\n.colorpicker-body .hue-strip {\\r\\n\\tposition: relative;\\r\\n\\tmargin-left: 8px;\\r\\n\\tcursor: grab;\\r\\n\\tbackground: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\\r\\n}\\r\\n\\r\\n.colorpicker-body .opacity-strip {\\r\\n\\tposition: relative;\\r\\n\\tmargin-left: 8px;\\r\\n\\tcursor: grab;\\r\\n\\tbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMTZEaa/1AAAAHUlEQVQYV2PYvXu3JAi7uLiAMaYAjAGTQBPYLQkAa/0Zef3qRswAAAAASUVORK5CYII=\\\");\\r\\n\\tbackground-size: 9px 9px;\\r\\n\\timage-rendering: pixelated;\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip.grabbing {\\r\\n\\tcursor: grabbing;\\r\\n}\\r\\n\\r\\n.colorpicker-body .slider {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: -2px;\\r\\n\\twidth: calc(100% + 4px);\\r\\n\\theight: 4px;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tborder: 1px solid rgba(255, 255, 255, 0.71);\\r\\n\\tbox-shadow: 0px 0px 1px rgba(0, 0, 0, 0.85);\\r\\n}\\r\\n\\r\\n.colorpicker-body .strip .overlay {\\r\\n\\theight: 150px;\\r\\n\\tpointer-events: none;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor.vs .dnd-target {\\r\\n\\tborder-right: 2px dotted black;\\r\\n\\tcolor: white; /* opposite of black */\\r\\n}\\r\\n.monaco-editor.vs-dark .dnd-target {\\r\\n\\tborder-right: 2px dotted #AEAFAD;\\r\\n\\tcolor: #51504f; /* opposite of #AEAFAD */\\r\\n}\\r\\n.monaco-editor.hc-black .dnd-target {\\r\\n\\tborder-right: 2px dotted #fff;\\r\\n\\tcolor: #000; /* opposite of #fff */\\r\\n}\\r\\n\\r\\n.monaco-editor.mouse-default .view-lines,\\r\\n.monaco-editor.vs-dark.mac.mouse-default .view-lines,\\r\\n.monaco-editor.hc-black.mac.mouse-default .view-lines {\\r\\n\\tcursor: default;\\r\\n}\\r\\n.monaco-editor.mouse-copy .view-lines,\\r\\n.monaco-editor.vs-dark.mac.mouse-copy .view-lines,\\r\\n.monaco-editor.hc-black.mac.mouse-copy .view-lines {\\r\\n\\tcursor: copy;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/dnd/dnd.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,8BAA8B;CAC9B,YAAY,EAAE,sBAAsB;AACrC;AACA;CACC,gCAAgC;CAChC,cAAc,EAAE,wBAAwB;AACzC;AACA;CACC,6BAA6B;CAC7B,WAAW,EAAE,qBAAqB;AACnC;;AAEA;;;CAGC,eAAe;AAChB;AACA;;;CAGC,YAAY;AACb\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor.vs .dnd-target {\\r\\n\\tborder-right: 2px dotted black;\\r\\n\\tcolor: white; /* opposite of black */\\r\\n}\\r\\n.monaco-editor.vs-dark .dnd-target {\\r\\n\\tborder-right: 2px dotted #AEAFAD;\\r\\n\\tcolor: #51504f; /* opposite of #AEAFAD */\\r\\n}\\r\\n.monaco-editor.hc-black .dnd-target {\\r\\n\\tborder-right: 2px dotted #fff;\\r\\n\\tcolor: #000; /* opposite of #fff */\\r\\n}\\r\\n\\r\\n.monaco-editor.mouse-default .view-lines,\\r\\n.monaco-editor.vs-dark.mac.mouse-default .view-lines,\\r\\n.monaco-editor.hc-black.mac.mouse-default .view-lines {\\r\\n\\tcursor: default;\\r\\n}\\r\\n.monaco-editor.mouse-copy .view-lines,\\r\\n.monaco-editor.vs-dark.mac.mouse-copy .view-lines,\\r\\n.monaco-editor.hc-black.mac.mouse-copy .view-lines {\\r\\n\\tcursor: copy;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-list .monaco-list-row.focused.selected .outline-element .monaco-highlighted-label,\\r\\n.monaco-list .monaco-list-row.focused.selected .outline-element-decoration {\\r\\n\\t/* make sure selection color wins when a label is being selected */\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 1;\\r\\n\\tflex-flow: row nowrap;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .monaco-highlighted-label {\\r\\n\\tcolor: var(--outline-element-color);\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .outline-element-decoration {\\r\\n\\topacity: 0.75;\\r\\n\\tfont-size: 90%;\\r\\n\\tfont-weight: 600;\\r\\n\\tpadding: 0 12px 0 5px;\\r\\n\\tmargin-left: auto;\\r\\n\\ttext-align: center;\\r\\n\\tcolor: var(--outline-element-color);\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .outline-element-decoration.bubble {\\r\\n\\tfont-family: codicon;\\r\\n\\tfont-size: 14px;\\r\\n\\topacity: 0.4;\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .outline-element-icon {\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/media/outlineTree.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;CAEC,kEAAkE;CAClE,yBAAyB;AAC1B;;AAEA;CACC,aAAa;CACb,OAAO;CACP,qBAAqB;CACrB,mBAAmB;AACpB;;AAEA;CACC,mCAAmC;AACpC;;AAEA;CACC,aAAa;CACb,cAAc;CACd,gBAAgB;CAChB,qBAAqB;CACrB,iBAAiB;CACjB,kBAAkB;CAClB,mCAAmC;AACpC;;AAEA;CACC,oBAAoB;CACpB,eAAe;CACf,YAAY;AACb;;AAEA;CACC,iBAAiB;AAClB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-list .monaco-list-row.focused.selected .outline-element .monaco-highlighted-label,\\r\\n.monaco-list .monaco-list-row.focused.selected .outline-element-decoration {\\r\\n\\t/* make sure selection color wins when a label is being selected */\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 1;\\r\\n\\tflex-flow: row nowrap;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .monaco-highlighted-label {\\r\\n\\tcolor: var(--outline-element-color);\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .outline-element-decoration {\\r\\n\\topacity: 0.75;\\r\\n\\tfont-size: 90%;\\r\\n\\tfont-weight: 600;\\r\\n\\tpadding: 0 12px 0 5px;\\r\\n\\tmargin-left: auto;\\r\\n\\ttext-align: center;\\r\\n\\tcolor: var(--outline-element-color);\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .outline-element-decoration.bubble {\\r\\n\\tfont-family: codicon;\\r\\n\\tfont-size: 14px;\\r\\n\\topacity: 0.4;\\r\\n}\\r\\n\\r\\n.monaco-list .outline-element .outline-element-icon {\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-icon-label.deprecated {\\r\\n\\ttext-decoration: line-through;\\r\\n\\topacity: 0.66;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/documentSymbols/media/symbol-icons.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,6BAA6B;CAC7B,aAAa;AACd\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-icon-label.deprecated {\\r\\n\\ttext-decoration: line-through;\\r\\n\\topacity: 0.66;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Find widget */\\r\\n.monaco-editor .find-widget {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 50;\\r\\n\\theight: 33px;\\r\\n\\toverflow: hidden;\\r\\n\\tline-height: 19px;\\r\\n\\ttransition: transform 200ms linear;\\r\\n\\tpadding: 0 4px;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttransform: translateY(calc(-100% - 10px)); /* shadow (10px) */\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget textarea {\\r\\n\\tmargin: 0px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.hiddenEditor {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* Find widget when replace is toggled on */\\r\\n.monaco-editor .find-widget.replaceToggled > .replace-part {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.visible {\\r\\n\\ttransform: translateY(0);\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-inputbox.synthetic-focus {\\r\\n\\toutline: 1px solid -webkit-focus-ring-color;\\r\\n\\toutline-offset: -1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-inputbox .input {\\r\\n\\tbackground-color: transparent;\\r\\n\\tmin-height: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .input {\\r\\n\\tfont-size: 13px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part,\\r\\n.monaco-editor .find-widget > .replace-part {\\r\\n\\tmargin: 4px 0 0 17px;\\r\\n\\tfont-size: 12px;\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox {\\r\\n\\tmin-height: 25px;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .mirror {\\r\\n\\tpadding-right: 22px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .wrapper > .input,\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .wrapper > .mirror,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .input,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .mirror {\\r\\n\\tpadding-top: 2px;\\r\\n\\tpadding-bottom: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .find-actions {\\r\\n\\theight: 25px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part .replace-actions {\\r\\n\\theight: 25px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput {\\r\\n\\tvertical-align: middle;\\r\\n\\tdisplay: flex;\\r\\n\\tflex:1;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element {\\r\\n\\t/* Make sure textarea inherits the width correctly */\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical {\\r\\n\\t/* Hide vertical scrollbar */\\r\\n\\topacity: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .matchesCount {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: initial;\\r\\n\\tmargin: 0 0 0 3px;\\r\\n\\tpadding: 2px 0 0 2px;\\r\\n\\theight: 25px;\\r\\n\\tvertical-align: middle;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 23px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button {\\r\\n\\twidth: 20px;\\r\\n\\theight: 20px;\\r\\n\\tdisplay: flex;\\r\\n\\tflex: initial;\\r\\n\\tmargin-left: 3px;\\r\\n\\tbackground-position: center center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tcursor: pointer;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.left {\\r\\n\\tmargin-left: 0;\\r\\n\\tmargin-right: 3px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.wide {\\r\\n\\twidth: auto;\\r\\n\\tpadding: 1px 6px;\\r\\n\\ttop: -1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.toggle {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 3px;\\r\\n\\twidth: 18px;\\r\\n\\theight: 100%;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.toggle.disabled {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .disabled {\\r\\n\\topacity: 0.3;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part > .monaco-findInput {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: flex;\\r\\n\\tvertical-align: middle;\\r\\n\\tflex: auto;\\r\\n\\tflex-grow: 0;\\r\\n\\tflex-shrink: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part > .monaco-findInput > .controls {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 3px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n/* REDUCED */\\r\\n.monaco-editor .find-widget.reduced-find-widget .matchesCount {\\r\\n\\tdisplay:none;\\r\\n}\\r\\n\\r\\n/* NARROW (SMALLER THAN REDUCED) */\\r\\n.monaco-editor .find-widget.narrow-find-widget {\\r\\n\\tmax-width: 257px !important;\\r\\n}\\r\\n\\r\\n/* COLLAPSED (SMALLER THAN NARROW) */\\r\\n.monaco-editor .find-widget.collapsed-find-widget {\\r\\n\\tmax-width: 170px !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.previous,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.next,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.replace,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,\\r\\n.monaco-editor .find-widget.collapsed-find-widget > .find-part .monaco-findInput .controls {\\r\\n\\tdisplay:none;\\r\\n}\\r\\n\\r\\n.monaco-editor .findMatch {\\r\\n\\tanimation-duration: 0;\\r\\n\\tanimation-name: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-sash {\\r\\n\\tleft: 0 !important;\\r\\n}\\r\\n\\r\\n.monaco-editor.hc-black .find-widget .button:before {\\r\\n\\tposition: relative;\\r\\n\\ttop: 1px;\\r\\n\\tleft: 2px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/find/findWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,gBAAgB;AAChB;CACC,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,gBAAgB;CAChB,iBAAiB;CACjB,kCAAkC;CAClC,cAAc;CACd,sBAAsB;CACtB,yCAAyC,EAAE,kBAAkB;AAC9D;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,aAAa;AACd;;AAEA,2CAA2C;AAC3C;CACC,aAAa;AACd;;AAEA;CACC,wBAAwB;AACzB;;AAEA;CACC,2CAA2C;CAC3C,oBAAoB;AACrB;;AAEA;CACC,6BAA6B;CAC7B,aAAa;AACd;;AAEA;CACC,eAAe;AAChB;;AAEA;;CAEC,oBAAoB;CACpB,eAAe;CACf,aAAa;AACd;;AAEA;;CAEC,gBAAgB;AACjB;;;AAGA;CACC,mBAAmB;AACpB;;AAEA;;;;CAIC,gBAAgB;CAChB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,sBAAsB;CACtB,aAAa;CACb,MAAM;AACP;;AAEA;CACC,oDAAoD;CACpD,WAAW;AACZ;;AAEA;CACC,4BAA4B;CAC5B,UAAU;AACX;;AAEA;CACC,aAAa;CACb,aAAa;CACb,iBAAiB;CACjB,oBAAoB;CACpB,YAAY;CACZ,sBAAsB;CACtB,sBAAsB;CACtB,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,aAAa;CACb,aAAa;CACb,gBAAgB;CAChB,kCAAkC;CAClC,4BAA4B;CAC5B,eAAe;CACf,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB;;AAEA;CACC,cAAc;CACd,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,SAAS;AACV;;AAEA;CACC,kBAAkB;CAClB,MAAM;CACN,SAAS;CACT,WAAW;CACX,YAAY;CACZ,sBAAsB;AACvB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,aAAa;CACb,sBAAsB;CACtB,UAAU;CACV,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,UAAU;AACX;;AAEA,YAAY;AACZ;CACC,YAAY;AACb;;AAEA,kCAAkC;AAClC;CACC,2BAA2B;AAC5B;;AAEA,oCAAoC;AACpC;CACC,2BAA2B;AAC5B;;AAEA;;;;;CAKC,YAAY;AACb;;AAEA;CACC,qBAAqB;CACrB,kCAAkC;AACnC;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,SAAS;AACV\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Find widget */\\r\\n.monaco-editor .find-widget {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 50;\\r\\n\\theight: 33px;\\r\\n\\toverflow: hidden;\\r\\n\\tline-height: 19px;\\r\\n\\ttransition: transform 200ms linear;\\r\\n\\tpadding: 0 4px;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttransform: translateY(calc(-100% - 10px)); /* shadow (10px) */\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget textarea {\\r\\n\\tmargin: 0px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.hiddenEditor {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n/* Find widget when replace is toggled on */\\r\\n.monaco-editor .find-widget.replaceToggled > .replace-part {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.visible {\\r\\n\\ttransform: translateY(0);\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-inputbox.synthetic-focus {\\r\\n\\toutline: 1px solid -webkit-focus-ring-color;\\r\\n\\toutline-offset: -1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-inputbox .input {\\r\\n\\tbackground-color: transparent;\\r\\n\\tmin-height: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .input {\\r\\n\\tfont-size: 13px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part,\\r\\n.monaco-editor .find-widget > .replace-part {\\r\\n\\tmargin: 4px 0 0 17px;\\r\\n\\tfont-size: 12px;\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox {\\r\\n\\tmin-height: 25px;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .mirror {\\r\\n\\tpadding-right: 22px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .wrapper > .input,\\r\\n.monaco-editor .find-widget > .find-part .monaco-inputbox > .wrapper > .mirror,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .input,\\r\\n.monaco-editor .find-widget > .replace-part .monaco-inputbox > .wrapper > .mirror {\\r\\n\\tpadding-top: 2px;\\r\\n\\tpadding-bottom: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .find-part .find-actions {\\r\\n\\theight: 25px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part .replace-actions {\\r\\n\\theight: 25px;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput {\\r\\n\\tvertical-align: middle;\\r\\n\\tdisplay: flex;\\r\\n\\tflex:1;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element {\\r\\n\\t/* Make sure textarea inherits the width correctly */\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-findInput .monaco-scrollable-element .scrollbar.vertical {\\r\\n\\t/* Hide vertical scrollbar */\\r\\n\\topacity: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .matchesCount {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: initial;\\r\\n\\tmargin: 0 0 0 3px;\\r\\n\\tpadding: 2px 0 0 2px;\\r\\n\\theight: 25px;\\r\\n\\tvertical-align: middle;\\r\\n\\tbox-sizing: border-box;\\r\\n\\ttext-align: center;\\r\\n\\tline-height: 23px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button {\\r\\n\\twidth: 20px;\\r\\n\\theight: 20px;\\r\\n\\tdisplay: flex;\\r\\n\\tflex: initial;\\r\\n\\tmargin-left: 3px;\\r\\n\\tbackground-position: center center;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tcursor: pointer;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.left {\\r\\n\\tmargin-left: 0;\\r\\n\\tmargin-right: 3px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.wide {\\r\\n\\twidth: auto;\\r\\n\\tpadding: 1px 6px;\\r\\n\\ttop: -1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.toggle {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 0;\\r\\n\\tleft: 3px;\\r\\n\\twidth: 18px;\\r\\n\\theight: 100%;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .button.toggle.disabled {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .disabled {\\r\\n\\topacity: 0.3;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part > .monaco-findInput {\\r\\n\\tposition: relative;\\r\\n\\tdisplay: flex;\\r\\n\\tvertical-align: middle;\\r\\n\\tflex: auto;\\r\\n\\tflex-grow: 0;\\r\\n\\tflex-shrink: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget > .replace-part > .monaco-findInput > .controls {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 3px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n/* REDUCED */\\r\\n.monaco-editor .find-widget.reduced-find-widget .matchesCount {\\r\\n\\tdisplay:none;\\r\\n}\\r\\n\\r\\n/* NARROW (SMALLER THAN REDUCED) */\\r\\n.monaco-editor .find-widget.narrow-find-widget {\\r\\n\\tmax-width: 257px !important;\\r\\n}\\r\\n\\r\\n/* COLLAPSED (SMALLER THAN NARROW) */\\r\\n.monaco-editor .find-widget.collapsed-find-widget {\\r\\n\\tmax-width: 170px !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.previous,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.next,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.replace,\\r\\n.monaco-editor .find-widget.collapsed-find-widget .button.replace-all,\\r\\n.monaco-editor .find-widget.collapsed-find-widget > .find-part .monaco-findInput .controls {\\r\\n\\tdisplay:none;\\r\\n}\\r\\n\\r\\n.monaco-editor .findMatch {\\r\\n\\tanimation-duration: 0;\\r\\n\\tanimation-name: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .find-widget .monaco-sash {\\r\\n\\tleft: 0 !important;\\r\\n}\\r\\n\\r\\n.monaco-editor.hc-black .find-widget .button:before {\\r\\n\\tposition: relative;\\r\\n\\ttop: 1px;\\r\\n\\tleft: 2px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .margin-view-overlays .codicon-folding-expanded,\\r\\n.monaco-editor .margin-view-overlays .codicon-folding-collapsed {\\r\\n\\tcursor: pointer;\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity 0.5s;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tfont-size: 140%;\\r\\n\\tmargin-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays:hover .codicon,\\r\\n.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,\\r\\n.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .inline-folded:after {\\r\\n\\tcolor: grey;\\r\\n\\tmargin: 0.1em 0.2em 0 0.2em;\\r\\n\\tcontent: \\\"⋯\\\";\\r\\n\\tdisplay: inline;\\r\\n\\tline-height: 1em;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/folding/folding.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;;CAEC,eAAe;CACf,UAAU;CACV,wBAAwB;CACxB,aAAa;CACb,mBAAmB;CACnB,uBAAuB;CACvB,eAAe;CACf,gBAAgB;AACjB;;AAEA;;;CAGC,UAAU;AACX;;AAEA;CACC,WAAW;CACX,2BAA2B;CAC3B,YAAY;CACZ,eAAe;CACf,gBAAgB;CAChB,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .margin-view-overlays .codicon-folding-expanded,\\r\\n.monaco-editor .margin-view-overlays .codicon-folding-collapsed {\\r\\n\\tcursor: pointer;\\r\\n\\topacity: 0;\\r\\n\\ttransition: opacity 0.5s;\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tjustify-content: center;\\r\\n\\tfont-size: 140%;\\r\\n\\tmargin-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .margin-view-overlays:hover .codicon,\\r\\n.monaco-editor .margin-view-overlays .codicon.codicon-folding-collapsed,\\r\\n.monaco-editor .margin-view-overlays .codicon.alwaysShowFoldIcons {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .inline-folded:after {\\r\\n\\tcolor: grey;\\r\\n\\tmargin: 0.1em 0.2em 0 0.2em;\\r\\n\\tcontent: \\\"⋯\\\";\\r\\n\\tdisplay: inline;\\r\\n\\tline-height: 1em;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* marker zone */\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .severity-icon {\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: text-top;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget {\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget > .stale {\\r\\n\\topacity: 0.6;\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .title {\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding-right: 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer {\\r\\n\\tposition: absolute;\\r\\n\\twhite-space: pre;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tpadding: 8px 12px 0 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message .details {\\r\\n\\tpadding-left: 6px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message .source,\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message span.code {\\r\\n\\topacity: 0.6;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link {\\r\\n\\topacity: 0.6;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before {\\r\\n\\tcontent: '(';\\r\\n}\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after {\\r\\n\\tcontent: ')';\\r\\n}\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {\\r\\n\\ttext-decoration: underline;\\r\\n\\t/** Hack to force underline to show **/\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .filename {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/gotoError/media/gotoErrorWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,gBAAgB;;AAEhB;CACC,qBAAqB;CACrB,wBAAwB;CACxB,iBAAiB;AAClB;;AAEA;CACC,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;CAChB,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,wBAAwB;AACzB;;AAEA;CACC,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;;CAEC,YAAY;AACb;;AAEA;CACC,YAAY;CACZ,cAAc;AACf;AACA;CACC,YAAY;AACb;AACA;CACC,YAAY;AACb;AACA;CACC,0BAA0B;CAC1B,sCAAsC;CACtC,oCAAoC;CACpC,8BAA8B;AAC/B;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* marker zone */\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .severity-icon {\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: text-top;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget {\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget > .stale {\\r\\n\\topacity: 0.6;\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .title {\\r\\n\\tdisplay: inline-block;\\r\\n\\tpadding-right: 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer {\\r\\n\\tposition: absolute;\\r\\n\\twhite-space: pre;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tpadding: 8px 12px 0 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message .details {\\r\\n\\tpadding-left: 6px;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message .source,\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message span.code {\\r\\n\\topacity: 0.6;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link {\\r\\n\\topacity: 0.6;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:before {\\r\\n\\tcontent: '(';\\r\\n}\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link:after {\\r\\n\\tcontent: ')';\\r\\n}\\r\\n.monaco-editor .marker-widget .descriptioncontainer .message a.code-link > span {\\r\\n\\ttext-decoration: underline;\\r\\n\\t/** Hack to force underline to show **/\\r\\n\\tborder-bottom: 1px solid transparent;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .marker-widget .descriptioncontainer .filename {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .goto-definition-link {\\r\\n\\ttext-decoration: underline;\\r\\n\\tcursor: pointer;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/link/goToDefinitionAtPosition.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,0BAA0B;CAC1B,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .goto-definition-link {\\r\\n\\ttext-decoration: underline;\\r\\n\\tcursor: pointer;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* -- zone widget */\\r\\n.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget {\\r\\n\\tborder-top-width: 1px;\\r\\n\\tborder-bottom-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .inline {\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: top;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .messages {\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\ttext-align: center;\\r\\n\\tpadding: 3em 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree {\\r\\n\\tline-height: 23px;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference {\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference-file {\\r\\n\\tdisplay: inline-flex;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file {\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference-file .count {\\r\\n\\tmargin-right: 12px;\\r\\n\\tmargin-left: auto;\\r\\n}\\r\\n\\r\\n/* High Contrast Theming */\\r\\n\\r\\n.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/gotoSymbol/peek/referencesWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,mBAAmB;AACnB;CACC,qBAAqB;CACrB,wBAAwB;AACzB;;AAEA;CACC,qBAAqB;CACrB,mBAAmB;AACpB;;AAEA;CACC,YAAY;CACZ,WAAW;CACX,kBAAkB;CAClB,cAAc;AACf;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,uBAAuB;CACvB,gBAAgB;AACjB;;AAEA;CACC,oBAAoB;CACpB,WAAW;CACX,YAAY;AACb;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA,0BAA0B;;AAE1B;CACC,iBAAiB;AAClB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* -- zone widget */\\r\\n.monaco-editor .zone-widget .zone-widget-container.reference-zone-widget {\\r\\n\\tborder-top-width: 1px;\\r\\n\\tborder-bottom-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .inline {\\r\\n\\tdisplay: inline-block;\\r\\n\\tvertical-align: top;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .messages {\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n\\ttext-align: center;\\r\\n\\tpadding: 3em 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree {\\r\\n\\tline-height: 23px;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference {\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference-file {\\r\\n\\tdisplay: inline-flex;\\r\\n\\twidth: 100%;\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .selected .reference-file {\\r\\n\\tcolor: inherit !important;\\r\\n}\\r\\n\\r\\n.monaco-editor .reference-zone-widget .ref-tree .reference-file .count {\\r\\n\\tmargin-right: 12px;\\r\\n\\tmargin-left: auto;\\r\\n}\\r\\n\\r\\n/* High Contrast Theming */\\r\\n\\r\\n.monaco-editor.hc-black .reference-zone-widget .ref-tree .reference-file {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .detected-link,\\r\\n.monaco-editor .detected-link-active {\\r\\n\\ttext-decoration: underline;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .detected-link-active {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/links/links.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;;CAEC,0BAA0B;CAC1B,8BAA8B;AAC/B;;AAEA;CACC,eAAe;AAChB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .detected-link,\\r\\n.monaco-editor .detected-link-active {\\r\\n\\ttext-decoration: underline;\\r\\n\\ttext-underline-position: under;\\r\\n}\\r\\n\\r\\n.monaco-editor .detected-link-active {\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage {\\r\\n\\tpadding-bottom: 8px;\\r\\n\\tz-index: 10000;\\r\\n}\\r\\n\\r\\n@keyframes fadeIn {\\r\\n\\tfrom { opacity: 0; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n.monaco-editor .monaco-editor-overlaymessage.fadeIn {\\r\\n\\tanimation: fadeIn 150ms ease-out;\\r\\n}\\r\\n\\r\\n@keyframes fadeOut {\\r\\n\\tfrom { opacity: 1; }\\r\\n\\tto { opacity: 0; }\\r\\n}\\r\\n.monaco-editor .monaco-editor-overlaymessage.fadeOut {\\r\\n\\tanimation: fadeOut 100ms ease-out;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage .message {\\r\\n\\tpadding: 1px 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage .anchor {\\r\\n\\twidth: 0 !important;\\r\\n\\theight: 0 !important;\\r\\n\\tborder-color: transparent;\\r\\n\\tborder-style: solid;\\r\\n\\tz-index: 1000;\\r\\n\\tborder-width: 8px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/message/messageController.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,mBAAmB;CACnB,cAAc;AACf;;AAEA;CACC,OAAO,UAAU,EAAE;CACnB,KAAK,UAAU,EAAE;AAClB;AACA;CACC,gCAAgC;AACjC;;AAEA;CACC,OAAO,UAAU,EAAE;CACnB,KAAK,UAAU,EAAE;AAClB;AACA;CACC,iCAAiC;AAClC;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,mBAAmB;CACnB,oBAAoB;CACpB,yBAAyB;CACzB,mBAAmB;CACnB,aAAa;CACb,iBAAiB;CACjB,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage {\\r\\n\\tpadding-bottom: 8px;\\r\\n\\tz-index: 10000;\\r\\n}\\r\\n\\r\\n@keyframes fadeIn {\\r\\n\\tfrom { opacity: 0; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n.monaco-editor .monaco-editor-overlaymessage.fadeIn {\\r\\n\\tanimation: fadeIn 150ms ease-out;\\r\\n}\\r\\n\\r\\n@keyframes fadeOut {\\r\\n\\tfrom { opacity: 1; }\\r\\n\\tto { opacity: 0; }\\r\\n}\\r\\n.monaco-editor .monaco-editor-overlaymessage.fadeOut {\\r\\n\\tanimation: fadeOut 100ms ease-out;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage .message {\\r\\n\\tpadding: 1px 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .monaco-editor-overlaymessage .anchor {\\r\\n\\twidth: 0 !important;\\r\\n\\theight: 0 !important;\\r\\n\\tborder-color: transparent;\\r\\n\\tborder-style: solid;\\r\\n\\tz-index: 1000;\\r\\n\\tborder-width: 8px;\\r\\n\\tposition: absolute;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .parameter-hints-widget {\\r\\n\\tz-index: 10;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tline-height: 1.5em;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget > .wrapper {\\r\\n\\tmax-width: 440px;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: row;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.multiple {\\r\\n\\tmin-height: 3.3em;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.visible {\\r\\n\\ttransition: left .05s ease-in-out;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget p,\\r\\n.monaco-editor .parameter-hints-widget ul {\\r\\n\\tmargin: 8px 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .monaco-scrollable-element,\\r\\n.monaco-editor .parameter-hints-widget .body {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 1;\\r\\n\\tflex-direction: column;\\r\\n\\tmin-height: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .signature {\\r\\n\\tpadding: 4px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs {\\r\\n\\tpadding: 0 10px 0 5px;\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs.empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs .markdown-docs {\\r\\n\\twhite-space: initial;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs .markdown-docs code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs .code {\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .controls {\\r\\n\\tdisplay: none;\\r\\n\\tflex-direction: column;\\r\\n\\talign-items: center;\\r\\n\\tmin-width: 22px;\\r\\n\\tjustify-content: flex-end;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.multiple .controls {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 0 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.multiple .button {\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .button.previous {\\r\\n\\tbottom: 24px;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .overloads {\\r\\n\\ttext-align: center;\\r\\n\\theight: 12px;\\r\\n\\tline-height: 12px;\\r\\n\\topacity: 0.5;\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .signature .parameter.active {\\r\\n\\tfont-weight: bold;\\r\\n\\ttext-decoration: underline;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .documentation-parameter > .parameter {\\r\\n\\tfont-weight: bold;\\r\\n\\tmargin-right: 0.5em;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/parameterHints/parameterHints.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,aAAa;CACb,sBAAsB;CACtB,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;CACjB,UAAU;AACX;;AAEA;CACC,iCAAiC;AAClC;;AAEA;;CAEC,aAAa;AACd;;AAEA;;CAEC,aAAa;CACb,OAAO;CACP,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;CACrB,qBAAqB;AACtB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,yCAAyC;AAC1C;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,aAAa;CACb,sBAAsB;CACtB,mBAAmB;CACnB,eAAe;CACf,yBAAyB;AAC1B;;AAEA;CACC,aAAa;CACb,cAAc;AACf;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,4BAA4B;CAC5B,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,YAAY;CACZ,iBAAiB;CACjB,YAAY;CACZ,yCAAyC;AAC1C;;AAEA;CACC,iBAAiB;CACjB,0BAA0B;AAC3B;;AAEA;CACC,iBAAiB;CACjB,mBAAmB;AACpB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .parameter-hints-widget {\\r\\n\\tz-index: 10;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tline-height: 1.5em;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget > .wrapper {\\r\\n\\tmax-width: 440px;\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: row;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.multiple {\\r\\n\\tmin-height: 3.3em;\\r\\n\\tpadding: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.visible {\\r\\n\\ttransition: left .05s ease-in-out;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget p,\\r\\n.monaco-editor .parameter-hints-widget ul {\\r\\n\\tmargin: 8px 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .monaco-scrollable-element,\\r\\n.monaco-editor .parameter-hints-widget .body {\\r\\n\\tdisplay: flex;\\r\\n\\tflex: 1;\\r\\n\\tflex-direction: column;\\r\\n\\tmin-height: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .signature {\\r\\n\\tpadding: 4px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs {\\r\\n\\tpadding: 0 10px 0 5px;\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs.empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs .markdown-docs {\\r\\n\\twhite-space: initial;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs .markdown-docs code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs .code {\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .docs code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .controls {\\r\\n\\tdisplay: none;\\r\\n\\tflex-direction: column;\\r\\n\\talign-items: center;\\r\\n\\tmin-width: 22px;\\r\\n\\tjustify-content: flex-end;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.multiple .controls {\\r\\n\\tdisplay: flex;\\r\\n\\tpadding: 0 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget.multiple .button {\\r\\n\\twidth: 16px;\\r\\n\\theight: 16px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .button.previous {\\r\\n\\tbottom: 24px;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .overloads {\\r\\n\\ttext-align: center;\\r\\n\\theight: 12px;\\r\\n\\tline-height: 12px;\\r\\n\\topacity: 0.5;\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .signature .parameter.active {\\r\\n\\tfont-weight: bold;\\r\\n\\ttext-decoration: underline;\\r\\n}\\r\\n\\r\\n.monaco-editor .parameter-hints-widget .documentation-parameter > .parameter {\\r\\n\\tfont-weight: bold;\\r\\n\\tmargin-right: 0.5em;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .peekview-widget .head {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tfont-size: 13px;\\r\\n\\tmargin-left: 20px;\\r\\n\\tcursor: pointer;\\r\\n\\tmin-width: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) {\\r\\n\\tfont-size: 0.9em;\\r\\n\\tmargin-left: 0.5em;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .meta {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .dirname {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .filename {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before {\\r\\n\\tcontent: '-';\\r\\n\\tpadding: 0 0.3em;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions {\\r\\n\\tflex: 1;\\r\\n\\ttext-align: right;\\r\\n\\tpadding-right: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar,\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar > .actions-container {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-item {\\r\\n\\tmargin-left: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-label {\\r\\n\\twidth: 16px;\\r\\n\\theight: 100%;\\r\\n\\tmargin: 0;\\r\\n\\tline-height: inherit;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: center center;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-label.codicon {\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget > .body {\\r\\n\\tborder-top: 1px solid;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .codicon {\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/peekView/media/peekViewWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,sBAAsB;CACtB,aAAa;AACd;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,eAAe;CACf,iBAAiB;CACjB,eAAe;CACf,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,uBAAuB;AACxB;;AAEA;CACC,YAAY;CACZ,gBAAgB;AACjB;;AAEA;CACC,OAAO;CACP,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;;CAEC,YAAY;AACb;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,SAAS;CACT,oBAAoB;CACpB,4BAA4B;CAC5B,kCAAkC;AACnC;;AAEA;CACC,SAAS;AACV;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;AAClB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .peekview-widget .head {\\r\\n\\tbox-sizing: border-box;\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tfont-size: 13px;\\r\\n\\tmargin-left: 20px;\\r\\n\\tcursor: pointer;\\r\\n\\tmin-width: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .dirname:not(:empty) {\\r\\n\\tfont-size: 0.9em;\\r\\n\\tmargin-left: 0.5em;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .meta {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .dirname {\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .filename {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .meta:not(:empty)::before {\\r\\n\\tcontent: '-';\\r\\n\\tpadding: 0 0.3em;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions {\\r\\n\\tflex: 1;\\r\\n\\ttext-align: right;\\r\\n\\tpadding-right: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar,\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar > .actions-container {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-item {\\r\\n\\tmargin-left: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-label {\\r\\n\\twidth: 16px;\\r\\n\\theight: 100%;\\r\\n\\tmargin: 0;\\r\\n\\tline-height: inherit;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: center center;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-actions > .monaco-action-bar .action-label.codicon {\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget > .body {\\r\\n\\tborder-top: 1px solid;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\\r\\n.monaco-editor .peekview-widget .head .peekview-title .codicon {\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .on-type-rename-decoration {\\r\\n\\tborder-left: 1px solid transparent;\\r\\n\\t/* So border can be transparent */\\r\\n\\tbackground-clip: padding-box;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/rename/media/onTypeRename.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,kCAAkC;CAClC,iCAAiC;CACjC,4BAA4B;AAC7B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .on-type-rename-decoration {\\r\\n\\tborder-left: 1px solid transparent;\\r\\n\\t/* So border can be transparent */\\r\\n\\tbackground-clip: padding-box;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .rename-box {\\r\\n\\tz-index: 100;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box.preview {\\r\\n\\tpadding: 3px 3px 0 3px;\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box .rename-input {\\r\\n\\tpadding: 3px;\\r\\n\\twidth: calc(100% - 6px);\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box .rename-label {\\r\\n\\tdisplay: none;\\r\\n\\topacity: .8;\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box.preview .rename-label {\\r\\n\\tdisplay: inherit;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/rename/renameInputField.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,YAAY;CACZ,uBAAuB;AACxB;;AAEA;CACC,aAAa;CACb,WAAW;AACZ;;AAEA;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .rename-box {\\r\\n\\tz-index: 100;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box.preview {\\r\\n\\tpadding: 3px 3px 0 3px;\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box .rename-input {\\r\\n\\tpadding: 3px;\\r\\n\\twidth: calc(100% - 6px);\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box .rename-label {\\r\\n\\tdisplay: none;\\r\\n\\topacity: .8;\\r\\n}\\r\\n\\r\\n.monaco-editor .rename-box.preview .rename-label {\\r\\n\\tdisplay: inherit;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .snippet-placeholder {\\r\\n\\tmin-width: 2px;\\r\\n\\toutline-style: solid;\\r\\n\\toutline-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .finish-snippet-placeholder {\\r\\n\\toutline-style: solid;\\r\\n\\toutline-width: 1px;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/snippet/snippetSession.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,cAAc;CACd,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,oBAAoB;CACpB,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .snippet-placeholder {\\r\\n\\tmin-width: 2px;\\r\\n\\toutline-style: solid;\\r\\n\\toutline-width: 1px;\\r\\n}\\r\\n\\r\\n.monaco-editor .finish-snippet-placeholder {\\r\\n\\toutline-style: solid;\\r\\n\\toutline-width: 1px;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Suggest widget*/\\r\\n.monaco-editor .suggest-widget {\\r\\n\\tz-index: 40;\\r\\n}\\r\\n\\r\\n/** Initial widths **/\\r\\n\\r\\n.monaco-editor .suggest-widget {\\r\\n\\twidth: 430px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget > .message,\\r\\n.monaco-editor .suggest-widget > .tree,\\r\\n.monaco-editor .suggest-widget > .details {\\r\\n\\twidth: 100%;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor.hc-black .suggest-widget > .message,\\r\\n.monaco-editor.hc-black .suggest-widget > .tree,\\r\\n.monaco-editor.hc-black .suggest-widget > .details {\\r\\n\\tborder-width: 2px;\\r\\n}\\r\\n\\r\\n/** Adjust width when docs are expanded to the side **/\\r\\n.monaco-editor .suggest-widget.docs-side {\\r\\n\\twidth: 660px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side > .tree,\\r\\n.monaco-editor .suggest-widget.docs-side > .details {\\r\\n\\twidth: 50%;\\r\\n\\tfloat: left;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side.list-right > .tree,\\r\\n.monaco-editor .suggest-widget.docs-side.list-right > .details {\\r\\n\\tfloat: right;\\r\\n}\\r\\n\\r\\n/* MarkupContent Layout */\\r\\n.monaco-editor .suggest-widget > .details ul {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n.monaco-editor .suggest-widget > .details ol {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget > .details p code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n/* Styles for Message element for when widget is loading or is empty */\\r\\n.monaco-editor .suggest-widget > .message {\\r\\n\\tpadding-left: 22px;\\r\\n}\\r\\n\\r\\n/** Styles for the list element **/\\r\\n.monaco-editor .suggest-widget > .tree {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n/** Styles for each row in the list element **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row {\\r\\n\\tdisplay: flex;\\r\\n\\t-mox-box-sizing: border-box;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tpadding-right: 10px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: 2px 2px;\\r\\n\\twhite-space: nowrap;\\r\\n\\tcursor: pointer;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents {\\r\\n\\tflex: 1;\\r\\n\\theight: 100%;\\r\\n\\toverflow: hidden;\\r\\n\\tpadding-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main {\\r\\n\\tdisplay: flex;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: pre;\\r\\n\\tjustify-content: space-between;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\\r\\n/** Status Bar **/\\r\\n\\r\\n.monaco-editor .suggest-widget > .suggest-status-bar {\\r\\n\\tvisibility: hidden;\\r\\n\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\r\\n\\tbox-sizing: border-box;\\r\\n\\r\\n\\tdisplay: flex;\\r\\n\\tflex-flow: row nowrap;\\r\\n\\tjustify-content: space-between;\\r\\n\\r\\n\\twidth: 100%;\\r\\n\\r\\n\\tfont-size: 80%;\\r\\n\\r\\n\\tborder-left-width: 1px;\\r\\n\\tborder-left-style: solid;\\r\\n\\tborder-right-width: 1px;\\r\\n\\tborder-right-style: solid;\\r\\n\\tborder-bottom-width: 1px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\r\\n\\tpadding: 0 8px 0 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.list-right.docs-side > .suggest-status-bar {\\r\\n\\tleft: auto;\\r\\n\\tright: 0;\\r\\n}\\r\\n.monaco-editor .suggest-widget.docs-side > .suggest-status-bar {\\r\\n\\twidth: 50%;\\r\\n}\\r\\n\\r\\n/** ReadMore Icon styles **/\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore::before {\\r\\n\\tcolor: inherit;\\r\\n\\topacity: 1;\\r\\n\\tfont-size: 14px;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 2px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close:hover,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore:hover {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n/** signature, qualifier, type/details opacity **/\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {\\r\\n\\topacity: 0.7;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label {\\r\\n\\tmargin-left: 4px;\\r\\n\\topacity: 0.4;\\r\\n\\tfont-size: 90%;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n\\tline-height: 17px;\\r\\n\\talign-self: center;\\r\\n}\\r\\n\\r\\n/** Type Info and icon next to the label in the focused completion item **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {\\r\\n\\tmargin-left: 0.8em;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label > .monaco-tokenized-source {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Details: if using CompletionItem#details, show on focus **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label,\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Details: if using CompletionItemLabel#details, always show **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .right > .details-label,\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label) > .contents > .main > .right > .details-label {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Ellipsis on hover **/\\r\\n.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label {\\r\\n\\twidth: calc(100% - 26px);\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left {\\r\\n\\tflex-shrink: 1;\\r\\n\\tflex-grow: 1;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .monaco-icon-label {\\r\\n\\tflex-shrink: 0;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .left > .monaco-icon-label {\\r\\n\\tmax-width: 100%;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .left > .monaco-icon-label {\\r\\n\\tflex-shrink: 1;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right {\\r\\n\\toverflow: hidden;\\r\\n\\tmargin-left: 16px;\\r\\n\\tflex-shrink: 0;\\r\\n\\tmax-width: 45%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tright: 10px;\\r\\n\\twidth: 18px;\\r\\n\\theight: 18px;\\r\\n\\tvisibility: hidden;\\r\\n}\\r\\n\\r\\n/** Do NOT display ReadMore when docs is side/below **/\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,\\r\\n.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n/** Focused item can show ReadMore, but can't when docs is side/below **/\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,\\r\\n.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover > .contents > .main > .right > .readMore {\\r\\n\\tvisibility: visible;\\r\\n}\\r\\n\\r\\n/** Styles for each row in the list **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated {\\r\\n\\topacity: 0.66;\\r\\n\\ttext-decoration: unset;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated > .monaco-icon-label-container > .monaco-icon-name-container {\\r\\n\\ttext-decoration: line-through;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label::before {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon {\\r\\n\\tdisplay: block;\\r\\n\\theight: 16px;\\r\\n\\twidth: 16px;\\r\\n\\tmargin-left: 2px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-size: 80%;\\r\\n\\tbackground-position: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,\\r\\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon::before {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan {\\r\\n\\tmargin: 0 0 0 0.3em;\\r\\n\\tborder: 0.1em solid #000;\\r\\n\\twidth: 0.7em;\\r\\n\\theight: 0.7em;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n/** Styles for the docs of the completion item in focus **/\\r\\n.monaco-editor .suggest-widget .details {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details.no-docs {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-below .details {\\r\\n\\tborder-top-width: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element {\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing: border-box;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .type {\\r\\n\\tflex: 2;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\topacity: 0.7;\\r\\n\\tword-break: break-all;\\r\\n\\tmargin: 0 24px 0 0;\\r\\n\\tpadding: 4px 0 12px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs {\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 4px 5px;\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs {\\r\\n\\tpadding: 0;\\r\\n\\twhite-space: initial;\\r\\n\\tmin-height: calc(1rem + 8px);\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div,\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > span:not(:empty) {\\r\\n\\tpadding: 4px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:first-child {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:last-child\\t {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs .code {\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs .codicon {\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > p:empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n\\r\\n/* replace/insert decorations */\\r\\n\\r\\n.monaco-editor .suggest-insert-unexpected {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggest.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F,kBAAkB;AAClB;CACC,WAAW;AACZ;;AAEA,qBAAqB;;AAErB;CACC,YAAY;AACb;;AAEA;;;CAGC,WAAW;CACX,mBAAmB;CACnB,iBAAiB;CACjB,sBAAsB;AACvB;;AAEA;;;CAGC,iBAAiB;AAClB;;AAEA,sDAAsD;AACtD;CACC,YAAY;AACb;;AAEA;;CAEC,UAAU;CACV,WAAW;AACZ;;AAEA;;CAEC,YAAY;AACb;;AAEA,yBAAyB;AACzB;CACC,kBAAkB;AACnB;AACA;CACC,kBAAkB;AACnB;;AAEA;CACC,yCAAyC;AAC1C;;AAEA,sEAAsE;AACtE;CACC,kBAAkB;AACnB;;AAEA,kCAAkC;AAClC;CACC,YAAY;AACb;;AAEA;CACC,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA,8CAA8C;;AAE9C;CACC,aAAa;CACb,2BAA2B;CAC3B,sBAAsB;CACtB,mBAAmB;CACnB,4BAA4B;CAC5B,4BAA4B;CAC5B,mBAAmB;CACnB,eAAe;CACf,kBAAkB;AACnB;;AAEA;CACC,OAAO;CACP,YAAY;CACZ,gBAAgB;CAChB,iBAAiB;AAClB;;AAEA;CACC,aAAa;CACb,gBAAgB;CAChB,uBAAuB;CACvB,gBAAgB;CAChB,8BAA8B;AAC/B;;AAEA;;CAEC,aAAa;AACd;;AAEA;CACC,iBAAiB;AAClB;;AAEA,iBAAiB;;AAEjB;CACC,kBAAkB;;CAElB,kBAAkB;CAClB,OAAO;;CAEP,sBAAsB;;CAEtB,aAAa;CACb,qBAAqB;CACrB,8BAA8B;;CAE9B,WAAW;;CAEX,cAAc;;CAEd,sBAAsB;CACtB,wBAAwB;CACxB,uBAAuB;CACvB,yBAAyB;CACzB,wBAAwB;CACxB,0BAA0B;;CAE1B,oBAAoB;AACrB;;AAEA;CACC,UAAU;CACV,QAAQ;AACT;AACA;CACC,UAAU;AACX;;AAEA,2BAA2B;;AAE3B;;CAEC,cAAc;CACd,UAAU;CACV,eAAe;CACf,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,QAAQ;CACR,UAAU;AACX;;AAEA;;CAEC,UAAU;AACX;;AAEA,iDAAiD;AACjD;;;CAGC,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,uBAAuB;AACxB;;AAEA;CACC,gBAAgB;CAChB,YAAY;CACZ,cAAc;CACd,uBAAuB;CACvB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA,0EAA0E;;AAE1E;CACC,kBAAkB;CAClB,gBAAgB;CAChB,uBAAuB;CACvB,mBAAmB;AACpB;;AAEA;CACC,eAAe;AAChB;;AAEA,8DAA8D;;AAE9D;;CAEC,aAAa;AACd;;AAEA;CACC,eAAe;AAChB;;AAEA,iEAAiE;;AAEjE;;CAEC,eAAe;AAChB;;AAEA,wBAAwB;AACxB;CACC,wBAAwB;AACzB;;AAEA;CACC,cAAc;CACd,YAAY;CACZ,gBAAgB;AACjB;AACA;CACC,cAAc;AACf;AACA;CACC,eAAe;AAChB;AACA;CACC,cAAc;AACf;AACA;CACC,gBAAgB;CAChB,iBAAiB;CACjB,cAAc;CACd,cAAc;AACf;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,WAAW;CACX,WAAW;CACX,YAAY;CACZ,kBAAkB;AACnB;;AAEA,sDAAsD;AACtD;;CAEC,wBAAwB;AACzB;;AAEA,iHAAiH;AACjH;CACC,aAAa;AACd;AACA,wEAAwE;AACxE;CACC,qBAAqB;AACtB;;AAEA;;CAEC,aAAa;AACd;;AAEA;CACC,mBAAmB;AACpB;;AAEA,sCAAsC;;AAEtC;CACC,aAAa;CACb,sBAAsB;AACvB;AACA;CACC,6BAA6B;AAC9B;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,cAAc;CACd,YAAY;CACZ,WAAW;CACX,gBAAgB;CAChB,4BAA4B;CAC5B,oBAAoB;CACpB,2BAA2B;AAC5B;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA;;CAEC,aAAa;AACd;;AAEA;CACC,mBAAmB;CACnB,wBAAwB;CACxB,YAAY;CACZ,aAAa;CACb,qBAAqB;AACtB;;AAEA,0DAA0D;AAC1D;CACC,aAAa;CACb,sBAAsB;CACtB,eAAe;AAChB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,OAAO;AACR;;AAEA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,OAAO;CACP,gBAAgB;CAChB,uBAAuB;CACvB,YAAY;CACZ,qBAAqB;CACrB,kBAAkB;CAClB,uBAAuB;AACxB;;AAEA;CACC,SAAS;CACT,gBAAgB;CAChB,qBAAqB;AACtB;;AAEA;CACC,UAAU;CACV,oBAAoB;CACpB,4BAA4B;AAC7B;;AAEA;;CAEC,gBAAgB;AACjB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;CACrB,qBAAqB;AACtB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,kBAAkB;CAClB,gBAAgB;AACjB;;;AAGA,+BAA+B;;AAE/B;CACC,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n/* Suggest widget*/\\r\\n.monaco-editor .suggest-widget {\\r\\n\\tz-index: 40;\\r\\n}\\r\\n\\r\\n/** Initial widths **/\\r\\n\\r\\n.monaco-editor .suggest-widget {\\r\\n\\twidth: 430px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget > .message,\\r\\n.monaco-editor .suggest-widget > .tree,\\r\\n.monaco-editor .suggest-widget > .details {\\r\\n\\twidth: 100%;\\r\\n\\tborder-style: solid;\\r\\n\\tborder-width: 1px;\\r\\n\\tbox-sizing: border-box;\\r\\n}\\r\\n\\r\\n.monaco-editor.hc-black .suggest-widget > .message,\\r\\n.monaco-editor.hc-black .suggest-widget > .tree,\\r\\n.monaco-editor.hc-black .suggest-widget > .details {\\r\\n\\tborder-width: 2px;\\r\\n}\\r\\n\\r\\n/** Adjust width when docs are expanded to the side **/\\r\\n.monaco-editor .suggest-widget.docs-side {\\r\\n\\twidth: 660px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side > .tree,\\r\\n.monaco-editor .suggest-widget.docs-side > .details {\\r\\n\\twidth: 50%;\\r\\n\\tfloat: left;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side.list-right > .tree,\\r\\n.monaco-editor .suggest-widget.docs-side.list-right > .details {\\r\\n\\tfloat: right;\\r\\n}\\r\\n\\r\\n/* MarkupContent Layout */\\r\\n.monaco-editor .suggest-widget > .details ul {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n.monaco-editor .suggest-widget > .details ol {\\r\\n\\tpadding-left: 20px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget > .details p code {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n/* Styles for Message element for when widget is loading or is empty */\\r\\n.monaco-editor .suggest-widget > .message {\\r\\n\\tpadding-left: 22px;\\r\\n}\\r\\n\\r\\n/** Styles for the list element **/\\r\\n.monaco-editor .suggest-widget > .tree {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list {\\r\\n\\tuser-select: none;\\r\\n\\t-webkit-user-select: none;\\r\\n\\t-ms-user-select: none;\\r\\n}\\r\\n\\r\\n/** Styles for each row in the list element **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row {\\r\\n\\tdisplay: flex;\\r\\n\\t-mox-box-sizing: border-box;\\r\\n\\tbox-sizing: border-box;\\r\\n\\tpadding-right: 10px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-position: 2px 2px;\\r\\n\\twhite-space: nowrap;\\r\\n\\tcursor: pointer;\\r\\n\\ttouch-action: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents {\\r\\n\\tflex: 1;\\r\\n\\theight: 100%;\\r\\n\\toverflow: hidden;\\r\\n\\tpadding-left: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main {\\r\\n\\tdisplay: flex;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: pre;\\r\\n\\tjustify-content: space-between;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right {\\r\\n\\tdisplay: flex;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget:not(.frozen) .monaco-highlighted-label .highlight {\\r\\n\\tfont-weight: bold;\\r\\n}\\r\\n\\r\\n/** Status Bar **/\\r\\n\\r\\n.monaco-editor .suggest-widget > .suggest-status-bar {\\r\\n\\tvisibility: hidden;\\r\\n\\r\\n\\tposition: absolute;\\r\\n\\tleft: 0;\\r\\n\\r\\n\\tbox-sizing: border-box;\\r\\n\\r\\n\\tdisplay: flex;\\r\\n\\tflex-flow: row nowrap;\\r\\n\\tjustify-content: space-between;\\r\\n\\r\\n\\twidth: 100%;\\r\\n\\r\\n\\tfont-size: 80%;\\r\\n\\r\\n\\tborder-left-width: 1px;\\r\\n\\tborder-left-style: solid;\\r\\n\\tborder-right-width: 1px;\\r\\n\\tborder-right-style: solid;\\r\\n\\tborder-bottom-width: 1px;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\r\\n\\tpadding: 0 8px 0 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.list-right.docs-side > .suggest-status-bar {\\r\\n\\tleft: auto;\\r\\n\\tright: 0;\\r\\n}\\r\\n.monaco-editor .suggest-widget.docs-side > .suggest-status-bar {\\r\\n\\twidth: 50%;\\r\\n}\\r\\n\\r\\n/** ReadMore Icon styles **/\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore::before {\\r\\n\\tcolor: inherit;\\r\\n\\topacity: 1;\\r\\n\\tfont-size: 14px;\\r\\n\\tcursor: pointer;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close {\\r\\n\\tposition: absolute;\\r\\n\\ttop: 2px;\\r\\n\\tright: 2px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .codicon-close:hover,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore:hover {\\r\\n\\topacity: 1;\\r\\n}\\r\\n\\r\\n/** signature, qualifier, type/details opacity **/\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label,\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {\\r\\n\\topacity: 0.7;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .signature-label {\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .qualifier-label {\\r\\n\\tmargin-left: 4px;\\r\\n\\topacity: 0.4;\\r\\n\\tfont-size: 90%;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\toverflow: hidden;\\r\\n\\tline-height: 17px;\\r\\n\\talign-self: center;\\r\\n}\\r\\n\\r\\n/** Type Info and icon next to the label in the focused completion item **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label {\\r\\n\\tmargin-left: 0.8em;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\twhite-space: nowrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label > .monaco-tokenized-source {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Details: if using CompletionItem#details, show on focus **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .details-label,\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused > .contents > .main > .right > .details-label {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Details: if using CompletionItemLabel#details, always show **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .right > .details-label,\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row.focused:not(.string-label) > .contents > .main > .right > .details-label {\\r\\n\\tdisplay: inline;\\r\\n}\\r\\n\\r\\n/** Ellipsis on hover **/\\r\\n.monaco-editor .suggest-widget:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label {\\r\\n\\twidth: calc(100% - 26px);\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left {\\r\\n\\tflex-shrink: 1;\\r\\n\\tflex-grow: 1;\\r\\n\\toverflow: hidden;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .left > .monaco-icon-label {\\r\\n\\tflex-shrink: 0;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:not(.string-label) > .contents > .main > .left > .monaco-icon-label {\\r\\n\\tmax-width: 100%;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .left > .monaco-icon-label {\\r\\n\\tflex-shrink: 1;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right {\\r\\n\\toverflow: hidden;\\r\\n\\tmargin-left: 16px;\\r\\n\\tflex-shrink: 0;\\r\\n\\tmax-width: 45%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: inline-block;\\r\\n\\tposition: absolute;\\r\\n\\tright: 10px;\\r\\n\\twidth: 18px;\\r\\n\\theight: 18px;\\r\\n\\tvisibility: hidden;\\r\\n}\\r\\n\\r\\n/** Do NOT display ReadMore when docs is side/below **/\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,\\r\\n.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none !important;\\r\\n}\\r\\n\\r\\n/** Do NOT display ReadMore when using plain CompletionItemLabel (details/documentation might not be resolved) **/\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.string-label > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n/** Focused item can show ReadMore, but can't when docs is side/below **/\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-side .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,\\r\\n.monaco-editor .suggest-widget.docs-below .monaco-list .monaco-list-row > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row:hover > .contents > .main > .right > .readMore {\\r\\n\\tvisibility: visible;\\r\\n}\\r\\n\\r\\n/** Styles for each row in the list **/\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated {\\r\\n\\topacity: 0.66;\\r\\n\\ttext-decoration: unset;\\r\\n}\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label.deprecated > .monaco-icon-label-container > .monaco-icon-name-container {\\r\\n\\ttext-decoration: line-through;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-icon-label::before {\\r\\n\\theight: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon {\\r\\n\\tdisplay: block;\\r\\n\\theight: 16px;\\r\\n\\twidth: 16px;\\r\\n\\tmargin-left: 2px;\\r\\n\\tbackground-repeat: no-repeat;\\r\\n\\tbackground-size: 80%;\\r\\n\\tbackground-position: center;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.hide {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .suggest-icon {\\r\\n\\tdisplay: flex;\\r\\n\\talign-items: center;\\r\\n\\tmargin-right: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .icon,\\r\\n.monaco-editor .suggest-widget.no-icons .monaco-list .monaco-list-row .suggest-icon::before {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .monaco-list .monaco-list-row .icon.customcolor .colorspan {\\r\\n\\tmargin: 0 0 0 0.3em;\\r\\n\\tborder: 0.1em solid #000;\\r\\n\\twidth: 0.7em;\\r\\n\\theight: 0.7em;\\r\\n\\tdisplay: inline-block;\\r\\n}\\r\\n\\r\\n/** Styles for the docs of the completion item in focus **/\\r\\n.monaco-editor .suggest-widget .details {\\r\\n\\tdisplay: flex;\\r\\n\\tflex-direction: column;\\r\\n\\tcursor: default;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details.no-docs {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.docs-below .details {\\r\\n\\tborder-top-width: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element {\\r\\n\\tflex: 1;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body {\\r\\n\\tposition: absolute;\\r\\n\\tbox-sizing: border-box;\\r\\n\\theight: 100%;\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .header > .type {\\r\\n\\tflex: 2;\\r\\n\\toverflow: hidden;\\r\\n\\ttext-overflow: ellipsis;\\r\\n\\topacity: 0.7;\\r\\n\\tword-break: break-all;\\r\\n\\tmargin: 0 24px 0 0;\\r\\n\\tpadding: 4px 0 12px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs {\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 4px 5px;\\r\\n\\twhite-space: pre-wrap;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs {\\r\\n\\tpadding: 0;\\r\\n\\twhite-space: initial;\\r\\n\\tmin-height: calc(1rem + 8px);\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div,\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > span:not(:empty) {\\r\\n\\tpadding: 4px 5px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:first-child {\\r\\n\\tmargin-top: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs > div > p:last-child\\t {\\r\\n\\tmargin-bottom: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs .code {\\r\\n\\twhite-space: pre-wrap;\\r\\n\\tword-wrap: break-word;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > .docs.markdown-docs .codicon {\\r\\n\\tvertical-align: sub;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details > .monaco-scrollable-element > .body > p:empty {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget .details code {\\r\\n\\tborder-radius: 3px;\\r\\n\\tpadding: 0 0.4em;\\r\\n}\\r\\n\\r\\n\\r\\n/* replace/insert decorations */\\r\\n\\r\\n.monaco-editor .suggest-insert-unexpected {\\r\\n\\tfont-style: italic;\\r\\n}\\r\\n\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar {\\r\\n\\tvisibility: visible;\\r\\n}\\r\\n.monaco-editor .suggest-widget.with-status-bar > .tree {\\r\\n\\tmargin-bottom: 18px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label {\\r\\n\\tmin-height: 18px;\\r\\n\\topacity: 0.5;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label::after {\\r\\n\\tcontent: ', ';\\r\\n\\tmargin-right: 0.3em;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,\\r\\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/suggest/media/suggestStatusBar.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,mBAAmB;AACpB;AACA;CACC,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,YAAY;CACZ,cAAc;AACf;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,aAAa;CACb,mBAAmB;AACpB;;AAEA;;CAEC,aAAa;AACd;;AAEA;CACC,WAAW;AACZ\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar {\\r\\n\\tvisibility: visible;\\r\\n}\\r\\n.monaco-editor .suggest-widget.with-status-bar > .tree {\\r\\n\\tmargin-bottom: 18px;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-label {\\r\\n\\tmin-height: 18px;\\r\\n\\topacity: 0.5;\\r\\n\\tcolor: inherit;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label {\\r\\n\\tmargin-right: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .suggest-status-bar .action-item:not(:last-of-type) .action-label::after {\\r\\n\\tcontent: ', ';\\r\\n\\tmargin-right: 0.3em;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row > .contents > .main > .right > .readMore,\\r\\n.monaco-editor .suggest-widget.with-status-bar .monaco-list .monaco-list-row.focused.string-label > .contents > .main > .right > .readMore {\\r\\n\\tdisplay: none;\\r\\n}\\r\\n\\r\\n.monaco-editor .suggest-widget.with-status-bar:not(.docs-side) .monaco-list .monaco-list-row:hover > .contents > .main > .right.can-expand-details > .details-label {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .zone-widget {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .zone-widget .zone-widget-container {\\r\\n\\tborder-top-style: solid;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tborder-top-width: 0;\\r\\n\\tborder-bottom-width: 0;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/contrib/zoneWidget/zoneWidget.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;AAC/F;CACC,kBAAkB;CAClB,WAAW;AACZ;;;AAGA;CACC,uBAAuB;CACvB,0BAA0B;CAC1B,mBAAmB;CACnB,sBAAsB;CACtB,kBAAkB;AACnB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n.monaco-editor .zone-widget {\\r\\n\\tposition: absolute;\\r\\n\\tz-index: 10;\\r\\n}\\r\\n\\r\\n\\r\\n.monaco-editor .zone-widget .zone-widget-container {\\r\\n\\tborder-top-style: solid;\\r\\n\\tborder-bottom-style: solid;\\r\\n\\tborder-top-width: 0;\\r\\n\\tborder-bottom-width: 0;\\r\\n\\tposition: relative;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .accessibilityHelpWidget {\\r\\n\\tpadding: 10px;\\r\\n\\tvertical-align: middle;\\r\\n\\toverflow: scroll;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/accessibilityHelp/accessibilityHelp.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,aAAa;CACb,sBAAsB;CACtB,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .accessibilityHelpWidget {\\r\\n\\tpadding: 10px;\\r\\n\\tvertical-align: middle;\\r\\n\\toverflow: scroll;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .iPadShowKeyboard {\\r\\n\\twidth: 58px;\\r\\n\\tmin-width: 0;\\r\\n\\theight: 36px;\\r\\n\\tmin-height: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tposition: absolute;\\r\\n\\tresize: none;\\r\\n\\toverflow: hidden;\\r\\n\\tbackground: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzY0IDQuMDEwNDJINC4wMDc3OUw0LjAwNzc5IDMyLjAyODZINDguMDM2NFY0LjAxMDQyWk00LjAwNzc5IDAuMDA3ODEyNUMxLjc5NzIxIDAuMDA3ODEyNSAwLjAwNTE4Nzk5IDEuNzk5ODQgMC4wMDUxODc5OSA0LjAxMDQyVjMyLjAyODZDMC4wMDUxODc5OSAzNC4yMzkyIDEuNzk3MjEgMzYuMDMxMiA0LjAwNzc5IDM2LjAzMTJINDguMDM2NEM1MC4yNDcgMzYuMDMxMiA1Mi4wMzkgMzQuMjM5MiA1Mi4wMzkgMzIuMDI4NlY0LjAxMDQyQzUyLjAzOSAxLjc5OTg0IDUwLjI0NyAwLjAwNzgxMjUgNDguMDM2NCAwLjAwNzgxMjVINC4wMDc3OVpNOC4wMTA0MiA4LjAxMzAySDEyLjAxM1YxMi4wMTU2SDguMDEwNDJWOC4wMTMwMlpNMjAuMDE4MiA4LjAxMzAySDE2LjAxNTZWMTIuMDE1NkgyMC4wMTgyVjguMDEzMDJaTTI0LjAyMDggOC4wMTMwMkgyOC4wMjM0VjEyLjAxNTZIMjQuMDIwOFY4LjAxMzAyWk0zNi4wMjg2IDguMDEzMDJIMzIuMDI2VjEyLjAxNTZIMzYuMDI4NlY4LjAxMzAyWk00MC4wMzEyIDguMDEzMDJINDQuMDMzOVYxMi4wMTU2SDQwLjAzMTJWOC4wMTMwMlpNMTYuMDE1NiAxNi4wMTgySDguMDEwNDJWMjAuMDIwOEgxNi4wMTU2VjE2LjAxODJaTTIwLjAxODIgMTYuMDE4MkgyNC4wMjA4VjIwLjAyMDhIMjAuMDE4MlYxNi4wMTgyWk0zMi4wMjYgMTYuMDE4MkgyOC4wMjM0VjIwLjAyMDhIMzIuMDI2VjE2LjAxODJaTTQ0LjAzMzkgMTYuMDE4MlYyMC4wMjA4SDM2LjAyODZWMTYuMDE4Mkg0NC4wMzM5Wk0xMi4wMTMgMjQuMDIzNEg4LjAxMDQyVjI4LjAyNkgxMi4wMTNWMjQuMDIzNFpNMTYuMDE1NiAyNC4wMjM0SDM2LjAyODZWMjguMDI2SDE2LjAxNTZWMjQuMDIzNFpNNDQuMDMzOSAyNC4wMjM0SDQwLjAzMTJWMjguMDI2SDQ0LjAzMzlWMjQuMDIzNFoiIGZpbGw9IiM0MjQyNDIiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMCI+DQo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=\\\") center center no-repeat;\\r\\n\\tborder: 4px solid #F6F6F6;\\r\\n\\tborder-radius: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark .iPadShowKeyboard {\\r\\n\\tbackground: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzY0IDQuMDEwNDJINC4wMDc3OUw0LjAwNzc5IDMyLjAyODZINDguMDM2NFY0LjAxMDQyWk00LjAwNzc5IDAuMDA3ODEyNUMxLjc5NzIxIDAuMDA3ODEyNSAwLjAwNTE4Nzk5IDEuNzk5ODQgMC4wMDUxODc5OSA0LjAxMDQyVjMyLjAyODZDMC4wMDUxODc5OSAzNC4yMzkyIDEuNzk3MjEgMzYuMDMxMiA0LjAwNzc5IDM2LjAzMTJINDguMDM2NEM1MC4yNDcgMzYuMDMxMiA1Mi4wMzkgMzQuMjM5MiA1Mi4wMzkgMzIuMDI4NlY0LjAxMDQyQzUyLjAzOSAxLjc5OTg0IDUwLjI0NyAwLjAwNzgxMjUgNDguMDM2NCAwLjAwNzgxMjVINC4wMDc3OVpNOC4wMTA0MiA4LjAxMzAySDEyLjAxM1YxMi4wMTU2SDguMDEwNDJWOC4wMTMwMlpNMjAuMDE4MiA4LjAxMzAySDE2LjAxNTZWMTIuMDE1NkgyMC4wMTgyVjguMDEzMDJaTTI0LjAyMDggOC4wMTMwMkgyOC4wMjM0VjEyLjAxNTZIMjQuMDIwOFY4LjAxMzAyWk0zNi4wMjg2IDguMDEzMDJIMzIuMDI2VjEyLjAxNTZIMzYuMDI4NlY4LjAxMzAyWk00MC4wMzEyIDguMDEzMDJINDQuMDMzOVYxMi4wMTU2SDQwLjAzMTJWOC4wMTMwMlpNMTYuMDE1NiAxNi4wMTgySDguMDEwNDJWMjAuMDIwOEgxNi4wMTU2VjE2LjAxODJaTTIwLjAxODIgMTYuMDE4MkgyNC4wMjA4VjIwLjAyMDhIMjAuMDE4MlYxNi4wMTgyWk0zMi4wMjYgMTYuMDE4MkgyOC4wMjM0VjIwLjAyMDhIMzIuMDI2VjE2LjAxODJaTTQ0LjAzMzkgMTYuMDE4MlYyMC4wMjA4SDM2LjAyODZWMTYuMDE4Mkg0NC4wMzM5Wk0xMi4wMTMgMjQuMDIzNEg4LjAxMDQyVjI4LjAyNkgxMi4wMTNWMjQuMDIzNFpNMTYuMDE1NiAyNC4wMjM0SDM2LjAyODZWMjguMDI2SDE2LjAxNTZWMjQuMDIzNFpNNDQuMDMzOSAyNC4wMjM0SDQwLjAzMTJWMjguMDI2SDQ0LjAzMzlWMjQuMDIzNFoiIGZpbGw9IiNDNUM1QzUiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMCI+DQo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=\\\") center center no-repeat;\\r\\n\\tborder: 4px solid #252526;\\r\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,YAAY;CACZ,YAAY;CACZ,aAAa;CACb,SAAS;CACT,UAAU;CACV,kBAAkB;CAClB,YAAY;CACZ,gBAAgB;CAChB,ioDAAioD;CACjoD,yBAAyB;CACzB,kBAAkB;AACnB;;AAEA;CACC,ioDAAioD;CACjoD,yBAAyB;AAC1B\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .iPadShowKeyboard {\\r\\n\\twidth: 58px;\\r\\n\\tmin-width: 0;\\r\\n\\theight: 36px;\\r\\n\\tmin-height: 0;\\r\\n\\tmargin: 0;\\r\\n\\tpadding: 0;\\r\\n\\tposition: absolute;\\r\\n\\tresize: none;\\r\\n\\toverflow: hidden;\\r\\n\\tbackground: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzY0IDQuMDEwNDJINC4wMDc3OUw0LjAwNzc5IDMyLjAyODZINDguMDM2NFY0LjAxMDQyWk00LjAwNzc5IDAuMDA3ODEyNUMxLjc5NzIxIDAuMDA3ODEyNSAwLjAwNTE4Nzk5IDEuNzk5ODQgMC4wMDUxODc5OSA0LjAxMDQyVjMyLjAyODZDMC4wMDUxODc5OSAzNC4yMzkyIDEuNzk3MjEgMzYuMDMxMiA0LjAwNzc5IDM2LjAzMTJINDguMDM2NEM1MC4yNDcgMzYuMDMxMiA1Mi4wMzkgMzQuMjM5MiA1Mi4wMzkgMzIuMDI4NlY0LjAxMDQyQzUyLjAzOSAxLjc5OTg0IDUwLjI0NyAwLjAwNzgxMjUgNDguMDM2NCAwLjAwNzgxMjVINC4wMDc3OVpNOC4wMTA0MiA4LjAxMzAySDEyLjAxM1YxMi4wMTU2SDguMDEwNDJWOC4wMTMwMlpNMjAuMDE4MiA4LjAxMzAySDE2LjAxNTZWMTIuMDE1NkgyMC4wMTgyVjguMDEzMDJaTTI0LjAyMDggOC4wMTMwMkgyOC4wMjM0VjEyLjAxNTZIMjQuMDIwOFY4LjAxMzAyWk0zNi4wMjg2IDguMDEzMDJIMzIuMDI2VjEyLjAxNTZIMzYuMDI4NlY4LjAxMzAyWk00MC4wMzEyIDguMDEzMDJINDQuMDMzOVYxMi4wMTU2SDQwLjAzMTJWOC4wMTMwMlpNMTYuMDE1NiAxNi4wMTgySDguMDEwNDJWMjAuMDIwOEgxNi4wMTU2VjE2LjAxODJaTTIwLjAxODIgMTYuMDE4MkgyNC4wMjA4VjIwLjAyMDhIMjAuMDE4MlYxNi4wMTgyWk0zMi4wMjYgMTYuMDE4MkgyOC4wMjM0VjIwLjAyMDhIMzIuMDI2VjE2LjAxODJaTTQ0LjAzMzkgMTYuMDE4MlYyMC4wMjA4SDM2LjAyODZWMTYuMDE4Mkg0NC4wMzM5Wk0xMi4wMTMgMjQuMDIzNEg4LjAxMDQyVjI4LjAyNkgxMi4wMTNWMjQuMDIzNFpNMTYuMDE1NiAyNC4wMjM0SDM2LjAyODZWMjguMDI2SDE2LjAxNTZWMjQuMDIzNFpNNDQuMDMzOSAyNC4wMjM0SDQwLjAzMTJWMjguMDI2SDQ0LjAzMzlWMjQuMDIzNFoiIGZpbGw9IiM0MjQyNDIiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMCI+DQo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=\\\") center center no-repeat;\\r\\n\\tborder: 4px solid #F6F6F6;\\r\\n\\tborder-radius: 4px;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark .iPadShowKeyboard {\\r\\n\\tbackground: url(\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIHZpZXdCb3g9IjAgMCA1MyAzNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC4wMzY0IDQuMDEwNDJINC4wMDc3OUw0LjAwNzc5IDMyLjAyODZINDguMDM2NFY0LjAxMDQyWk00LjAwNzc5IDAuMDA3ODEyNUMxLjc5NzIxIDAuMDA3ODEyNSAwLjAwNTE4Nzk5IDEuNzk5ODQgMC4wMDUxODc5OSA0LjAxMDQyVjMyLjAyODZDMC4wMDUxODc5OSAzNC4yMzkyIDEuNzk3MjEgMzYuMDMxMiA0LjAwNzc5IDM2LjAzMTJINDguMDM2NEM1MC4yNDcgMzYuMDMxMiA1Mi4wMzkgMzQuMjM5MiA1Mi4wMzkgMzIuMDI4NlY0LjAxMDQyQzUyLjAzOSAxLjc5OTg0IDUwLjI0NyAwLjAwNzgxMjUgNDguMDM2NCAwLjAwNzgxMjVINC4wMDc3OVpNOC4wMTA0MiA4LjAxMzAySDEyLjAxM1YxMi4wMTU2SDguMDEwNDJWOC4wMTMwMlpNMjAuMDE4MiA4LjAxMzAySDE2LjAxNTZWMTIuMDE1NkgyMC4wMTgyVjguMDEzMDJaTTI0LjAyMDggOC4wMTMwMkgyOC4wMjM0VjEyLjAxNTZIMjQuMDIwOFY4LjAxMzAyWk0zNi4wMjg2IDguMDEzMDJIMzIuMDI2VjEyLjAxNTZIMzYuMDI4NlY4LjAxMzAyWk00MC4wMzEyIDguMDEzMDJINDQuMDMzOVYxMi4wMTU2SDQwLjAzMTJWOC4wMTMwMlpNMTYuMDE1NiAxNi4wMTgySDguMDEwNDJWMjAuMDIwOEgxNi4wMTU2VjE2LjAxODJaTTIwLjAxODIgMTYuMDE4MkgyNC4wMjA4VjIwLjAyMDhIMjAuMDE4MlYxNi4wMTgyWk0zMi4wMjYgMTYuMDE4MkgyOC4wMjM0VjIwLjAyMDhIMzIuMDI2VjE2LjAxODJaTTQ0LjAzMzkgMTYuMDE4MlYyMC4wMjA4SDM2LjAyODZWMTYuMDE4Mkg0NC4wMzM5Wk0xMi4wMTMgMjQuMDIzNEg4LjAxMDQyVjI4LjAyNkgxMi4wMTNWMjQuMDIzNFpNMTYuMDE1NiAyNC4wMjM0SDM2LjAyODZWMjguMDI2SDE2LjAxNTZWMjQuMDIzNFpNNDQuMDMzOSAyNC4wMjM0SDQwLjAzMTJWMjguMDI2SDQ0LjAzMzlWMjQuMDIzNFoiIGZpbGw9IiNDNUM1QzUiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMCI+DQo8cmVjdCB3aWR0aD0iNTMiIGhlaWdodD0iMzYiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=\\\") center center no-repeat;\\r\\n\\tborder: 4px solid #252526;\\r\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget {\\r\\n\\tz-index: 50;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tpadding: 10px;\\r\\n}\\r\\n\\r\\n.tokens-inspect-separator {\\r\\n\\theight: 1px;\\r\\n\\tborder: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token-length {\\r\\n\\tfont-weight: normal;\\r\\n\\tfont-size: 60%;\\r\\n\\tfloat: right;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-metadata-table {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-metadata-value {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token-type {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/inspectTokens/inspectTokens.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,WAAW;CACX,iBAAiB;CACjB,yBAAyB;CACzB,qBAAqB;CACrB,aAAa;AACd;;AAEA;CACC,WAAW;CACX,SAAS;AACV;;AAEA;CACC,yCAAyC;AAC1C;;AAEA;CACC,mBAAmB;CACnB,cAAc;CACd,YAAY;AACb;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,yCAAyC;CACzC,iBAAiB;AAClB;;AAEA;CACC,yCAAyC;AAC1C\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget {\\r\\n\\tz-index: 50;\\r\\n\\tuser-select: text;\\r\\n\\t-webkit-user-select: text;\\r\\n\\t-ms-user-select: text;\\r\\n\\tpadding: 10px;\\r\\n}\\r\\n\\r\\n.tokens-inspect-separator {\\r\\n\\theight: 1px;\\r\\n\\tborder: 0;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token-length {\\r\\n\\tfont-weight: normal;\\r\\n\\tfont-size: 60%;\\r\\n\\tfloat: right;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-metadata-table {\\r\\n\\twidth: 100%;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-metadata-value {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n\\ttext-align: right;\\r\\n}\\r\\n\\r\\n.monaco-editor .tokens-inspect-widget .tm-token-type {\\r\\n\\tfont-family: var(--monaco-monospace-font);\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.quick-input-widget {\\r\\n\\tfont-size: 13px;\\r\\n}\\r\\n\\r\\n.quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #0066BF;\\r\\n}\\r\\n\\r\\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #0097fb;\\r\\n}\\r\\n\\r\\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #F38518;\\r\\n}\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInput.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,eAAe;AAChB;;AAEA;;CAEC,cAAc;AACf;;AAEA;;CAEC,cAAc;AACf;;AAEA;;CAEC,cAAc;AACf\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.quick-input-widget {\\r\\n\\tfont-size: 13px;\\r\\n}\\r\\n\\r\\n.quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #0066BF;\\r\\n}\\r\\n\\r\\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.vs-dark .quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #0097fb;\\r\\n}\\r\\n\\r\\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight,\\r\\n.hc-black .quick-input-widget .monaco-highlighted-label .highlight {\\r\\n\\tcolor: #F38518;\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\n/* Default standalone editor fonts */\\r\\n.monaco-editor {\\r\\n\\tfont-family: -apple-system, BlinkMacSystemFont, \\\"Segoe WPC\\\", \\\"Segoe UI\\\", \\\"HelveticaNeue-Light\\\", system-ui, \\\"Ubuntu\\\", \\\"Droid Sans\\\", sans-serif;\\r\\n\\t--monaco-monospace-font: \\\"SF Mono\\\", Monaco, Menlo, Consolas, \\\"Ubuntu Mono\\\", \\\"Liberation Mono\\\", \\\"DejaVu Sans Mono\\\", \\\"Courier New\\\", monospace;\\r\\n}\\r\\n\\r\\n.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label {\\r\\n\\tstroke-width: 1.2px;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\\r\\n.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\\r\\n\\tstroke-width: 1.2px;\\r\\n}\\r\\n\\r\\n.monaco-hover p {\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n/* The hc-black theme is already high contrast optimized */\\r\\n.monaco-editor.hc-black {\\r\\n\\t-ms-high-contrast-adjust: none;\\r\\n}\\r\\n/* In case the browser goes into high contrast mode and the editor is not configured with the hc-black theme */\\r\\n@media screen and (-ms-high-contrast:active) {\\r\\n\\r\\n\\t/* current line highlight */\\r\\n\\t.monaco-editor.vs .view-overlays .current-line,\\r\\n\\t.monaco-editor.vs-dark .view-overlays .current-line {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t\\tborder-left: 0;\\r\\n\\t\\tborder-right: 0;\\r\\n\\t}\\r\\n\\r\\n\\t/* view cursors */\\r\\n\\t.monaco-editor.vs .cursor,\\r\\n\\t.monaco-editor.vs-dark .cursor {\\r\\n\\t\\tbackground-color: windowtext !important;\\r\\n\\t}\\r\\n\\t/* dnd target */\\r\\n\\t.monaco-editor.vs .dnd-target,\\r\\n\\t.monaco-editor.vs-dark .dnd-target {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* selected text background */\\r\\n\\t.monaco-editor.vs .selected-text,\\r\\n\\t.monaco-editor.vs-dark .selected-text {\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* allow the text to have a transparent background. */\\r\\n\\t.monaco-editor.vs .view-line,\\r\\n\\t.monaco-editor.vs-dark .view-line {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* text color */\\r\\n\\t.monaco-editor.vs .view-line span,\\r\\n\\t.monaco-editor.vs-dark .view-line span {\\r\\n\\t\\tcolor: windowtext !important;\\r\\n\\t}\\r\\n\\t/* selected text color */\\r\\n\\t.monaco-editor.vs .view-line span.inline-selected-text,\\r\\n\\t.monaco-editor.vs-dark .view-line span.inline-selected-text {\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* allow decorations */\\r\\n\\t.monaco-editor.vs .view-overlays,\\r\\n\\t.monaco-editor.vs-dark .view-overlays {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* various decorations */\\r\\n\\t.monaco-editor.vs .selectionHighlight,\\r\\n\\t.monaco-editor.vs-dark .selectionHighlight,\\r\\n\\t.monaco-editor.vs .wordHighlight,\\r\\n\\t.monaco-editor.vs-dark .wordHighlight,\\r\\n\\t.monaco-editor.vs .wordHighlightStrong,\\r\\n\\t.monaco-editor.vs-dark .wordHighlightStrong,\\r\\n\\t.monaco-editor.vs .reference-decoration,\\r\\n\\t.monaco-editor.vs-dark .reference-decoration {\\r\\n\\t\\tborder: 2px dotted highlight !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .rangeHighlight,\\r\\n\\t.monaco-editor.vs-dark .rangeHighlight {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px dotted activeborder !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .bracket-match,\\r\\n\\t.monaco-editor.vs-dark .bracket-match {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* find widget */\\r\\n\\t.monaco-editor.vs .findMatch,\\r\\n\\t.monaco-editor.vs-dark .findMatch,\\r\\n\\t.monaco-editor.vs .currentFindMatch,\\r\\n\\t.monaco-editor.vs-dark .currentFindMatch {\\r\\n\\t\\tborder: 2px dotted activeborder !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .find-widget,\\r\\n\\t.monaco-editor.vs-dark .find-widget {\\r\\n\\t\\tborder: 1px solid windowtext;\\r\\n\\t}\\r\\n\\r\\n\\t/* list - used by suggest widget */\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tcolor: windowtext !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row.focused,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused {\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row:hover,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\r\\n\\t/* scrollbars */\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tbackground: background !important;\\r\\n\\t\\tborder: 1px solid windowtext;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\t\\tbackground: windowtext !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider:hover,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\t\\tbackground: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider.active,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\t\\tbackground: highlight !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* overview ruler */\\r\\n\\t.monaco-editor.vs .decorationsOverviewRuler,\\r\\n\\t.monaco-editor.vs-dark .decorationsOverviewRuler {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n\\r\\n\\t/* minimap */\\r\\n\\t.monaco-editor.vs .minimap,\\r\\n\\t.monaco-editor.vs-dark .minimap {\\r\\n\\t\\tdisplay: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* squiggles */\\r\\n\\t.monaco-editor.vs .squiggly-d-error,\\r\\n\\t.monaco-editor.vs-dark .squiggly-d-error {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder-bottom: 4px double #E47777;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-c-warning,\\r\\n\\t.monaco-editor.vs-dark .squiggly-c-warning {\\r\\n\\t\\tborder-bottom: 4px double #71B771;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-b-info,\\r\\n\\t.monaco-editor.vs-dark .squiggly-b-info {\\r\\n\\t\\tborder-bottom: 4px double #71B771;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-a-hint,\\r\\n\\t.monaco-editor.vs-dark .squiggly-a-hint {\\r\\n\\t\\tborder-bottom: 4px double #6c6c6c;\\r\\n\\t}\\r\\n\\r\\n\\t/* contextmenu */\\r\\n\\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\\r\\n\\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,\\r\\n\\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\r\\n\\t/* diff editor */\\r\\n\\t.monaco-diff-editor.vs .diffOverviewRuler,\\r\\n\\t.monaco-diff-editor.vs-dark .diffOverviewRuler {\\r\\n\\t\\tdisplay: none;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .line-insert,\\r\\n\\t.monaco-editor.vs-dark .line-insert,\\r\\n\\t.monaco-editor.vs .line-delete,\\r\\n\\t.monaco-editor.vs-dark .line-delete {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .char-insert,\\r\\n\\t.monaco-editor.vs-dark .char-insert,\\r\\n\\t.monaco-editor.vs .char-delete,\\r\\n\\t.monaco-editor.vs-dark .char-delete {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n/*.monaco-editor.vs [tabindex=\\\"0\\\"]:focus {\\r\\n\\toutline: 1px solid rgba(0, 122, 204, 0.4);\\r\\n\\toutline-offset: -1px;\\r\\n\\topacity: 1 !important;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark [tabindex=\\\"0\\\"]:focus {\\r\\n\\toutline: 1px solid rgba(14, 99, 156, 0.6);\\r\\n\\toutline-offset: -1px;\\r\\n\\topacity: 1 !important;\\r\\n}*/\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/editor/standalone/browser/standalone-tokens.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;;AAG/F,oCAAoC;AACpC;CACC,6IAA6I;CAC7I,2IAA2I;AAC5I;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,mBAAmB;AACpB;;AAEA;CACC,SAAS;AACV;;AAEA,0DAA0D;AAC1D;CACC,8BAA8B;AAC/B;AACA,8GAA8G;AAC9G;;CAEC,2BAA2B;CAC3B;;EAEC,mCAAmC;EACnC,cAAc;EACd,eAAe;CAChB;;CAEA,iBAAiB;CACjB;;EAEC,uCAAuC;CACxC;CACA,eAAe;CACf;;EAEC,mCAAmC;CACpC;;CAEA,6BAA6B;CAC7B;;EAEC,sCAAsC;CACvC;;CAEA,qDAAqD;CACrD;;EAEC,8BAA8B;CAC/B;;CAEA,eAAe;CACf;;EAEC,4BAA4B;CAC7B;CACA,wBAAwB;CACxB;;EAEC,+BAA+B;CAChC;;CAEA,sBAAsB;CACtB;;EAEC,8BAA8B;CAC/B;;CAEA,wBAAwB;CACxB;;;;;;;;EAQC,uCAAuC;EACvC,kCAAkC;EAClC,sBAAsB;CACvB;CACA;;EAEC,kCAAkC;EAClC,0CAA0C;EAC1C,sBAAsB;CACvB;CACA;;EAEC,mCAAmC;EACnC,kCAAkC;CACnC;;CAEA,gBAAgB;CAChB;;;;EAIC,0CAA0C;EAC1C,kCAAkC;EAClC,sBAAsB;CACvB;CACA;;EAEC,4BAA4B;CAC7B;;CAEA,kCAAkC;CAClC;;EAEC,8BAA8B;EAC9B,4BAA4B;CAC7B;CACA;;EAEC,+BAA+B;EAC/B,sCAAsC;CACvC;CACA;;EAEC,kCAAkC;EAClC,2BAA2B;EAC3B,sBAAsB;CACvB;;CAEA,eAAe;CACf;;EAEC,8BAA8B;EAC9B,iCAAiC;EACjC,4BAA4B;EAC5B,sBAAsB;CACvB;CACA;;EAEC,iCAAiC;CAClC;CACA;;EAEC,gCAAgC;CACjC;CACA;;EAEC,gCAAgC;CACjC;;CAEA,mBAAmB;CACnB;;EAEC,UAAU;CACX;;CAEA,YAAY;CACZ;;EAEC,aAAa;CACd;;CAEA,cAAc;CACd;;EAEC,kCAAkC;EAClC,iCAAiC;CAClC;CACA;;EAEC,iCAAiC;CAClC;CACA;;EAEC,iCAAiC;CAClC;CACA;;EAEC,iCAAiC;CAClC;;CAEA,gBAAgB;CAChB;;EAEC,8BAA8B;EAC9B,+BAA+B;EAC/B,sCAAsC;CACvC;CACA;;EAEC,8BAA8B;EAC9B,kCAAkC;EAClC,2BAA2B;EAC3B,sBAAsB;CACvB;;CAEA,gBAAgB;CAChB;;EAEC,aAAa;CACd;CACA;;;;EAIC,kCAAkC;EAClC,sCAAsC;EACtC,sBAAsB;CACvB;CACA;;;;EAIC,kCAAkC;CACnC;AACD;;AAEA;;;;;;;;;;EAUE\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n\\r\\n/* Default standalone editor fonts */\\r\\n.monaco-editor {\\r\\n\\tfont-family: -apple-system, BlinkMacSystemFont, \\\"Segoe WPC\\\", \\\"Segoe UI\\\", \\\"HelveticaNeue-Light\\\", system-ui, \\\"Ubuntu\\\", \\\"Droid Sans\\\", sans-serif;\\r\\n\\t--monaco-monospace-font: \\\"SF Mono\\\", Monaco, Menlo, Consolas, \\\"Ubuntu Mono\\\", \\\"Liberation Mono\\\", \\\"DejaVu Sans Mono\\\", \\\"Courier New\\\", monospace;\\r\\n}\\r\\n\\r\\n.monaco-menu .monaco-action-bar.vertical .action-item .action-menu-item:focus .action-label {\\r\\n\\tstroke-width: 1.2px;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\\r\\n.monaco-editor.hc-black .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\\r\\n\\tstroke-width: 1.2px;\\r\\n}\\r\\n\\r\\n.monaco-hover p {\\r\\n\\tmargin: 0;\\r\\n}\\r\\n\\r\\n/* The hc-black theme is already high contrast optimized */\\r\\n.monaco-editor.hc-black {\\r\\n\\t-ms-high-contrast-adjust: none;\\r\\n}\\r\\n/* In case the browser goes into high contrast mode and the editor is not configured with the hc-black theme */\\r\\n@media screen and (-ms-high-contrast:active) {\\r\\n\\r\\n\\t/* current line highlight */\\r\\n\\t.monaco-editor.vs .view-overlays .current-line,\\r\\n\\t.monaco-editor.vs-dark .view-overlays .current-line {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t\\tborder-left: 0;\\r\\n\\t\\tborder-right: 0;\\r\\n\\t}\\r\\n\\r\\n\\t/* view cursors */\\r\\n\\t.monaco-editor.vs .cursor,\\r\\n\\t.monaco-editor.vs-dark .cursor {\\r\\n\\t\\tbackground-color: windowtext !important;\\r\\n\\t}\\r\\n\\t/* dnd target */\\r\\n\\t.monaco-editor.vs .dnd-target,\\r\\n\\t.monaco-editor.vs-dark .dnd-target {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* selected text background */\\r\\n\\t.monaco-editor.vs .selected-text,\\r\\n\\t.monaco-editor.vs-dark .selected-text {\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* allow the text to have a transparent background. */\\r\\n\\t.monaco-editor.vs .view-line,\\r\\n\\t.monaco-editor.vs-dark .view-line {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* text color */\\r\\n\\t.monaco-editor.vs .view-line span,\\r\\n\\t.monaco-editor.vs-dark .view-line span {\\r\\n\\t\\tcolor: windowtext !important;\\r\\n\\t}\\r\\n\\t/* selected text color */\\r\\n\\t.monaco-editor.vs .view-line span.inline-selected-text,\\r\\n\\t.monaco-editor.vs-dark .view-line span.inline-selected-text {\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* allow decorations */\\r\\n\\t.monaco-editor.vs .view-overlays,\\r\\n\\t.monaco-editor.vs-dark .view-overlays {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* various decorations */\\r\\n\\t.monaco-editor.vs .selectionHighlight,\\r\\n\\t.monaco-editor.vs-dark .selectionHighlight,\\r\\n\\t.monaco-editor.vs .wordHighlight,\\r\\n\\t.monaco-editor.vs-dark .wordHighlight,\\r\\n\\t.monaco-editor.vs .wordHighlightStrong,\\r\\n\\t.monaco-editor.vs-dark .wordHighlightStrong,\\r\\n\\t.monaco-editor.vs .reference-decoration,\\r\\n\\t.monaco-editor.vs-dark .reference-decoration {\\r\\n\\t\\tborder: 2px dotted highlight !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .rangeHighlight,\\r\\n\\t.monaco-editor.vs-dark .rangeHighlight {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px dotted activeborder !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .bracket-match,\\r\\n\\t.monaco-editor.vs-dark .bracket-match {\\r\\n\\t\\tborder-color: windowtext !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* find widget */\\r\\n\\t.monaco-editor.vs .findMatch,\\r\\n\\t.monaco-editor.vs-dark .findMatch,\\r\\n\\t.monaco-editor.vs .currentFindMatch,\\r\\n\\t.monaco-editor.vs-dark .currentFindMatch {\\r\\n\\t\\tborder: 2px dotted activeborder !important;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .find-widget,\\r\\n\\t.monaco-editor.vs-dark .find-widget {\\r\\n\\t\\tborder: 1px solid windowtext;\\r\\n\\t}\\r\\n\\r\\n\\t/* list - used by suggest widget */\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tcolor: windowtext !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row.focused,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row.focused {\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-list .monaco-list-row:hover,\\r\\n\\t.monaco-editor.vs-dark .monaco-list .monaco-list-row:hover {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\r\\n\\t/* scrollbars */\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tbackground: background !important;\\r\\n\\t\\tborder: 1px solid windowtext;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider {\\r\\n\\t\\tbackground: windowtext !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider:hover,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider:hover {\\r\\n\\t\\tbackground: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-scrollable-element > .scrollbar > .slider.active,\\r\\n\\t.monaco-editor.vs-dark .monaco-scrollable-element > .scrollbar > .slider.active {\\r\\n\\t\\tbackground: highlight !important;\\r\\n\\t}\\r\\n\\r\\n\\t/* overview ruler */\\r\\n\\t.monaco-editor.vs .decorationsOverviewRuler,\\r\\n\\t.monaco-editor.vs-dark .decorationsOverviewRuler {\\r\\n\\t\\topacity: 0;\\r\\n\\t}\\r\\n\\r\\n\\t/* minimap */\\r\\n\\t.monaco-editor.vs .minimap,\\r\\n\\t.monaco-editor.vs-dark .minimap {\\r\\n\\t\\tdisplay: none;\\r\\n\\t}\\r\\n\\r\\n\\t/* squiggles */\\r\\n\\t.monaco-editor.vs .squiggly-d-error,\\r\\n\\t.monaco-editor.vs-dark .squiggly-d-error {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder-bottom: 4px double #E47777;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-c-warning,\\r\\n\\t.monaco-editor.vs-dark .squiggly-c-warning {\\r\\n\\t\\tborder-bottom: 4px double #71B771;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-b-info,\\r\\n\\t.monaco-editor.vs-dark .squiggly-b-info {\\r\\n\\t\\tborder-bottom: 4px double #71B771;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .squiggly-a-hint,\\r\\n\\t.monaco-editor.vs-dark .squiggly-a-hint {\\r\\n\\t\\tborder-bottom: 4px double #6c6c6c;\\r\\n\\t}\\r\\n\\r\\n\\t/* contextmenu */\\r\\n\\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label,\\r\\n\\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:focus .action-label {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tcolor: highlighttext !important;\\r\\n\\t\\tbackground-color: highlight !important;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label,\\r\\n\\t.monaco-editor.vs-dark .monaco-menu .monaco-action-bar.vertical .action-menu-item:hover .action-label {\\r\\n\\t\\t-ms-high-contrast-adjust: none;\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\r\\n\\t/* diff editor */\\r\\n\\t.monaco-diff-editor.vs .diffOverviewRuler,\\r\\n\\t.monaco-diff-editor.vs-dark .diffOverviewRuler {\\r\\n\\t\\tdisplay: none;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .line-insert,\\r\\n\\t.monaco-editor.vs-dark .line-insert,\\r\\n\\t.monaco-editor.vs .line-delete,\\r\\n\\t.monaco-editor.vs-dark .line-delete {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t\\tborder: 1px solid highlight !important;\\r\\n\\t\\tbox-sizing: border-box;\\r\\n\\t}\\r\\n\\t.monaco-editor.vs .char-insert,\\r\\n\\t.monaco-editor.vs-dark .char-insert,\\r\\n\\t.monaco-editor.vs .char-delete,\\r\\n\\t.monaco-editor.vs-dark .char-delete {\\r\\n\\t\\tbackground: transparent !important;\\r\\n\\t}\\r\\n}\\r\\n\\r\\n/*.monaco-editor.vs [tabindex=\\\"0\\\"]:focus {\\r\\n\\toutline: 1px solid rgba(0, 122, 204, 0.4);\\r\\n\\toutline-offset: -1px;\\r\\n\\topacity: 1 !important;\\r\\n}\\r\\n\\r\\n.monaco-editor.vs-dark [tabindex=\\\"0\\\"]:focus {\\r\\n\\toutline: 1px solid rgba(14, 99, 156, 0.6);\\r\\n\\toutline-offset: -1px;\\r\\n\\topacity: 1 !important;\\r\\n}*/\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.context-view .monaco-menu {\\r\\n\\tmin-width: 130px;\\r\\n}\\r\\n\\r\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/monaco-editor/esm/vs/platform/contextview/browser/contextMenuHandler.css\"],\"names\":[],\"mappings\":\"AAAA;;;+FAG+F;;AAE/F;CACC,gBAAgB;AACjB\",\"sourcesContent\":[\"/*---------------------------------------------------------------------------------------------\\r\\n * Copyright (c) Microsoft Corporation. All rights reserved.\\r\\n * Licensed under the MIT License. See License.txt in the project root for license information.\\r\\n *--------------------------------------------------------------------------------------------*/\\r\\n\\r\\n.context-view .monaco-menu {\\r\\n\\tmin-width: 130px;\\r\\n}\\r\\n\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#card.svelte-m2i2uf{border:1px solid lightgray;margin-bottom:16px}#title.svelte-m2i2uf{font-family:'Playfair Display', serif;font-weight:400;border-bottom:1px solid lightgray;font-size:1.25rem;background-color:#1e60ab;color:#eaebef}#content.svelte-m2i2uf{padding-top:8px}.padding.svelte-m2i2uf{padding:8px}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZC5zdmVsdGUiLCJzb3VyY2VzIjpbIkNhcmQuc3ZlbHRlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQ+XG4gIGV4cG9ydCBsZXQgdGl0bGUgPSAnJztcbiAgZXhwb3J0IGxldCBub1BhZGRpbmcgPSBmYWxzZTtcbiAgbGV0IGNvbnRlbnRDbGFzcyA9ICdwYWRkaW5nJztcbiAgaWYgKG5vUGFkZGluZykge1xuICAgIGNvbnRlbnRDbGFzcyA9ICcnO1xuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICAjY2FyZCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgbGlnaHRncmF5O1xuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIH1cbiAgI3RpdGxlIHtcbiAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGdyYXk7XG4gICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxZTYwYWI7XG4gICAgY29sb3I6ICNlYWViZWY7XG4gIH1cbiAgI2NvbnRlbnQge1xuICAgIHBhZGRpbmctdG9wOiA4cHg7XG4gIH1cbiAgLnBhZGRpbmcge1xuICAgIHBhZGRpbmc6IDhweDtcbiAgfVxuPC9zdHlsZT5cblxuPGRpdiBpZD1cImNhcmRcIj5cbiAgPGRpdiBpZD1cInRpdGxlXCIgY2xhc3M9XCJwYWRkaW5nXCI+e3RpdGxlfTwvZGl2PlxuICA8ZGl2IGlkPVwiY29udGVudFwiIGNsYXNzPXtjb250ZW50Q2xhc3N9PlxuICAgIDxzbG90IC8+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUUsS0FBSyxjQUFDLENBQUMsQUFDTCxNQUFNLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQzNCLGFBQWEsQ0FBRSxJQUFJLEFBQ3JCLENBQUMsQUFDRCxNQUFNLGNBQUMsQ0FBQyxBQUNOLFdBQVcsQ0FBRSxrQkFBa0IsQ0FBQyxDQUFDLEtBQUssQ0FDdEMsV0FBVyxDQUFFLEdBQUcsQ0FDaEIsYUFBYSxDQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUNsQyxTQUFTLENBQUUsT0FBTyxDQUNsQixnQkFBZ0IsQ0FBRSxPQUFPLENBQ3pCLEtBQUssQ0FBRSxPQUFPLEFBQ2hCLENBQUMsQUFDRCxRQUFRLGNBQUMsQ0FBQyxBQUNSLFdBQVcsQ0FBRSxHQUFHLEFBQ2xCLENBQUMsQUFDRCxRQUFRLGNBQUMsQ0FBQyxBQUNSLE9BQU8sQ0FBRSxHQUFHLEFBQ2QsQ0FBQyJ9*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Card.svelte\"],\"names\":[],\"mappings\":\"AAUE,oBAAO,0BACsB,CAC3B,kBAAmB,CACpB,qBACO,qCACgC,CACtC,eAAgB,CAChB,iCAAkC,CAClC,iBAAkB,CAClB,wBAAyB,CACzB,aAAc,CACf,uBACS,eACQ,CACjB,uBACS,WACI;AAzBhB,inDAAinD\",\"sourcesContent\":[\"<script>\\n export let title = '';\\n export let noPadding = false;\\n let contentClass = 'padding';\\n if (noPadding) {\\n contentClass = '';\\n }\\n</script>\\n\\n<style>\\n #card {\\n border: 1px solid lightgray;\\n margin-bottom: 16px;\\n }\\n #title {\\n font-family: 'Playfair Display', serif;\\n font-weight: 400;\\n border-bottom: 1px solid lightgray;\\n font-size: 1.25rem;\\n background-color: #1e60ab;\\n color: #eaebef;\\n }\\n #content {\\n padding-top: 8px;\\n }\\n .padding {\\n padding: 8px;\\n }\\n</style>\\n\\n<div id=\\\"card\\\">\\n <div id=\\\"title\\\" class=\\\"padding\\\">{title}</div>\\n <div id=\\\"content\\\" class={contentClass}>\\n <slot />\\n </div>\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#editor-conf.svelte-e1y9ss{width:100%;height:200px;max-height:300px;flex:1}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnLnN2ZWx0ZSIsInNvdXJjZXMiOlsiQ29uZmlnLnN2ZWx0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuICBpbXBvcnQgeyBjb2RlU3RvcmUsIHVwZGF0ZUNvbmZpZyB9IGZyb20gJy4uL2NvZGUtc3RvcmUuanMnO1xuICBpbXBvcnQgeyBjb25maWdFcnJvclN0b3JlIH0gZnJvbSAnLi4vZXJyb3Itc3RvcmUuanMnO1xuICBpbXBvcnQgeyBvbk1vdW50IH0gZnJvbSAnc3ZlbHRlJztcbiAgaW1wb3J0IEVycm9yIGZyb20gJy4vRXJyb3Iuc3ZlbHRlJztcbiAgaW1wb3J0IHsgZ2V0UmVzaXplSGFuZGxlciwgaW5pdEVkaXRvciB9IGZyb20gJy4vZWRpdG9yLXV0aWxzJztcbiAgaW1wb3J0IHsgd2F0Y2hSZXNpemUgfSBmcm9tICdzdmVsdGUtd2F0Y2gtcmVzaXplJztcbiAgaW1wb3J0ICogYXMgbW9uYWNvIGZyb20gJ21vbmFjby1lZGl0b3IvZXNtL3ZzL2VkaXRvci9lZGl0b3IuYXBpLmpzJztcblxuICBsZXQgZWRpdDtcblxuICBsZXQgcmVzaXplSGFuZGxlciA9ICgpID0+IHt9O1xuXG4gIGNvbnN0IGhhbmRsZUNvbmZVcGRhdGUgPSAoY29uZiwgdXBkYXRlRWRpdG9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coY29uZik7XG4gICAgaWYgKHVwZGF0ZUVkaXRvciAmJiBlZGl0KSB7XG4gICAgICBlZGl0LnNldFZhbHVlKEpTT04uc3RyaW5naWZ5KGNvbmYsIG51bGwsIDIpKTtcbiAgICB9XG4gICAgdXBkYXRlQ29uZmlnKGNvbmYsIGZhbHNlKTtcbiAgICBjb25maWdFcnJvclN0b3JlLnNldCh1bmRlZmluZWQpO1xuICB9O1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gY29kZVN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICBjb25zb2xlLmxvZyhzdGF0ZS5tZXJtYWlkLCBzdGF0ZS51cGRhdGVFZGl0b3IpO1xuICAgIGlmIChzdGF0ZS51cGRhdGVFZGl0b3IpIHtcbiAgICAgIGhhbmRsZUNvbmZVcGRhdGUoc3RhdGUubWVybWFpZCwgdHJ1ZSk7XG4gICAgfVxuICB9KTtcblxuICBvbk1vdW50KGFzeW5jICgpID0+IHtcbiAgICBjb25zb2xlLmxvZygnTW91bnRpbmcgY29uZmlnJyk7XG4gICAgY29uc3QgZWRpdG9yRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3ItY29uZicpO1xuICAgIGVkaXQgPSBtb25hY28uZWRpdG9yLmNyZWF0ZShlZGl0b3JFbGVtLCB7XG4gICAgICB2YWx1ZTogJycsXG4gICAgICB0aGVtZTogJ215Q29vbFRoZW1lJyxcbiAgICAgIGxhbmd1YWdlOiAnanNvbicsXG4gICAgfSk7XG4gICAgcmVzaXplSGFuZGxlciA9IGdldFJlc2l6ZUhhbmRsZXIoZWRpdCk7XG4gICAgZWRpdC5vbkRpZENoYW5nZU1vZGVsQ29udGVudChmdW5jdGlvbiAoZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29uZiA9IEpTT04ucGFyc2UoZWRpdC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgaGFuZGxlQ29uZlVwZGF0ZShjb25mLCBmYWxzZSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGluIHBhcnNlZCcsIGVycik7XG4gICAgICAgIGNvbmZpZ0Vycm9yU3RvcmUuc2V0KGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpbml0RWRpdG9yKG1vbmFjbyk7XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAgI2VkaXRvci1jb25mIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDIwMHB4O1xuICAgIG1heC1oZWlnaHQ6IDMwMHB4O1xuICAgIGZsZXg6IDE7XG4gIH1cbjwvc3R5bGU+XG5cbjxkaXYgaWQ9XCJlZGl0b3ItY29udGFpbmVyXCI+XG4gIDxkaXYgaWQ9XCJlZGl0b3ItY29uZlwiIHVzZTp3YXRjaFJlc2l6ZT17cmVzaXplSGFuZGxlcn0gLz5cbiAgPEVycm9yIGVycm9yU3RvcmU9e2NvbmZpZ0Vycm9yU3RvcmV9IC8+XG48L2Rpdj5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxREUsWUFBWSxjQUFDLENBQUMsQUFDWixLQUFLLENBQUUsSUFBSSxDQUNYLE1BQU0sQ0FBRSxLQUFLLENBQ2IsVUFBVSxDQUFFLEtBQUssQ0FDakIsSUFBSSxDQUFFLENBQUMsQUFDVCxDQUFDIn0=*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Config.svelte\"],\"names\":[],\"mappings\":\"AAqDE,2BAAc,UACD,CACX,YAAa,CACb,gBAAiB,CACjB,MAAO;AAxDX,yrFAAyrF\",\"sourcesContent\":[\"<script>\\n import { codeStore, updateConfig } from '../code-store.js';\\n import { configErrorStore } from '../error-store.js';\\n import { onMount } from 'svelte';\\n import Error from './Error.svelte';\\n import { getResizeHandler, initEditor } from './editor-utils';\\n import { watchResize } from 'svelte-watch-resize';\\n import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\\n\\n let edit;\\n\\n let resizeHandler = () => {};\\n\\n const handleConfUpdate = (conf, updateEditor) => {\\n console.log(conf);\\n if (updateEditor && edit) {\\n edit.setValue(JSON.stringify(conf, null, 2));\\n }\\n updateConfig(conf, false);\\n configErrorStore.set(undefined);\\n };\\n\\n const unsubscribe = codeStore.subscribe((state) => {\\n console.log(state.mermaid, state.updateEditor);\\n if (state.updateEditor) {\\n handleConfUpdate(state.mermaid, true);\\n }\\n });\\n\\n onMount(async () => {\\n console.log('Mounting config');\\n const editorElem = document.getElementById('editor-conf');\\n edit = monaco.editor.create(editorElem, {\\n value: '',\\n theme: 'myCoolTheme',\\n language: 'json',\\n });\\n resizeHandler = getResizeHandler(edit);\\n edit.onDidChangeModelContent(function (e) {\\n try {\\n const conf = JSON.parse(edit.getValue());\\n handleConfUpdate(conf, false);\\n } catch (err) {\\n console.log('Error in parsed', err);\\n configErrorStore.set(err);\\n }\\n });\\n\\n initEditor(monaco);\\n });\\n</script>\\n\\n<style>\\n #editor-conf {\\n width: 100%;\\n height: 200px;\\n max-height: 300px;\\n flex: 1;\\n }\\n</style>\\n\\n<div id=\\\"editor-container\\\">\\n <div id=\\\"editor-conf\\\" use:watchResize={resizeHandler} />\\n <Error errorStore={configErrorStore} />\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#editor.svelte-129q4vv{width:100%;height:400px;max-height:300px;flex:1}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdG9yLnN2ZWx0ZSIsInNvdXJjZXMiOlsiRWRpdG9yLnN2ZWx0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c2NyaXB0PlxuICBpbXBvcnQgeyBjb2RlU3RvcmUsIHVwZGF0ZUNvZGUgfSBmcm9tICcuLi9jb2RlLXN0b3JlLmpzJztcbiAgaW1wb3J0IHsgY29kZUVycm9yU3RvcmUgfSBmcm9tICcuLi9lcnJvci1zdG9yZS5qcyc7XG4gIGltcG9ydCB7IG9uTW91bnQgfSBmcm9tICdzdmVsdGUnO1xuICBpbXBvcnQgbWVybWFpZCBmcm9tICdAbWVybWFpZCc7XG4gIGltcG9ydCBFcnJvciBmcm9tICcuL0Vycm9yLnN2ZWx0ZSc7XG4gIGltcG9ydCB7IGdldFJlc2l6ZUhhbmRsZXIsIGluaXRFZGl0b3IgfSBmcm9tICcuL2VkaXRvci11dGlscyc7XG4gIGltcG9ydCAqIGFzIG1vbmFjbyBmcm9tICdtb25hY28tZWRpdG9yJztcbiAgaW1wb3J0IHsgd2F0Y2hSZXNpemUgfSBmcm9tICdzdmVsdGUtd2F0Y2gtcmVzaXplJztcblxuICBsZXQgZWRpdDtcblxuICBjb25zdCBkZWNBcnIgPSBbXTtcbiAgbGV0IGVkaXRvckVsZW0gPSBudWxsO1xuICBsZXQgcmVzaXplSGFuZGxlciA9ICgpID0+IHt9O1xuICBjb25zdCBoYW5kbGVDb2RlVXBkYXRlID0gKHVwZGF0ZWRDb2RlLCB1cGRhdGVFZGl0b3IpID0+IHtcbiAgICB0cnkge1xuICAgICAgbWVybWFpZC5wYXJzZSh1cGRhdGVkQ29kZSk7XG4gICAgICBpZiAoZWRpdCkge1xuICAgICAgICBpZiAodXBkYXRlRWRpdG9yKSB7XG4gICAgICAgICAgZWRpdC5zZXRWYWx1ZSh1cGRhdGVkQ29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgZGVjQXJyLmZvckVhY2goKGRlY29yKSA9PiB7XG4gICAgICAgICAgZWRpdC5kZWx0YURlY29yYXRpb25zKGRlY29yLCBbXSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdXBkYXRlQ29kZSh1cGRhdGVkQ29kZSwgZmFsc2UpO1xuICAgICAgY29kZUVycm9yU3RvcmUuc2V0KHVuZGVmaW5lZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29kZUVycm9yU3RvcmUuc2V0KCdTeW50YXggRXJyb3InKTtcbiAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiBwYXJzZWQnLCBlLmhhc2gpO1xuICAgICAgY29uc3QgbCA9IGUuaGFzaC5saW5lO1xuICAgICAgZGVjQXJyLnB1c2goXG4gICAgICAgIGVkaXQuZGVsdGFEZWNvcmF0aW9ucyhcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJhbmdlOiBuZXcgbW9uYWNvLlJhbmdlKFxuICAgICAgICAgICAgICAgIGUuaGFzaC5sb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgICBlLmhhc2gubG9jLmxhc3RfbGluZSxcbiAgICAgICAgICAgICAgICBlLmhhc2gubG9jLmZpcnN0X2NvbHVtbixcbiAgICAgICAgICAgICAgICBlLmhhc2gubG9jLmxhc3RfY29sdW1uXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIG9wdGlvbnM6IHsgaW5saW5lQ2xhc3NOYW1lOiAnbXlJbmxpbmVEZWNvcmF0aW9uJyB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVuc3Vic2NyaWJlID0gY29kZVN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICBpZiAoc3RhdGUudXBkYXRlRWRpdG9yKSB7XG4gICAgICBoYW5kbGVDb2RlVXBkYXRlKHN0YXRlLmNvZGUsIHRydWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgb25Nb3VudChhc3luYyAoKSA9PiB7XG4gICAgaW5pdEVkaXRvcihtb25hY28pO1xuICAgIGVkaXRvckVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gICAgZWRpdCA9IG1vbmFjby5lZGl0b3IuY3JlYXRlKGVkaXRvckVsZW0sIHtcbiAgICAgIHZhbHVlOiAnJyxcbiAgICAgIHRoZW1lOiAnbXlDb29sVGhlbWUnLFxuICAgICAgbGFuZ3VhZ2U6ICdtZXJtYWlkJyxcbiAgICB9KTtcbiAgICByZXNpemVIYW5kbGVyID0gZ2V0UmVzaXplSGFuZGxlcihlZGl0KTtcbiAgICBlZGl0Lm9uRGlkQ2hhbmdlTW9kZWxDb250ZW50KGZ1bmN0aW9uIChlKSB7XG4gICAgICBoYW5kbGVDb2RlVXBkYXRlKGVkaXQuZ2V0VmFsdWUoKSwgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaW5pdEVkaXRvcihtb25hY28pO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gICNlZGl0b3Ige1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNDAwcHg7XG4gICAgbWF4LWhlaWdodDogMzAwcHg7XG4gICAgZmxleDogMTtcbiAgfVxuPC9zdHlsZT5cblxuPGRpdiBpZD1cImVkaXRvci1jb250YWluZXJcIj5cbiAgPGRpdiBpZD1cImVkaXRvclwiIHVzZTp3YXRjaFJlc2l6ZT17cmVzaXplSGFuZGxlcn0gLz5cbiAgPEVycm9yIGVycm9yU3RvcmU9e2NvZGVFcnJvclN0b3JlfSAvPlxuPC9kaXY+XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMkVFLE9BQU8sZUFBQyxDQUFDLEFBQ1AsS0FBSyxDQUFFLElBQUksQ0FDWCxNQUFNLENBQUUsS0FBSyxDQUNiLFVBQVUsQ0FBRSxLQUFLLENBQ2pCLElBQUksQ0FBRSxDQUFDLEFBQ1QsQ0FBQyJ9*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Editor.svelte\"],\"names\":[],\"mappings\":\"AA2EE,uBAAS,UACI,CACX,YAAa,CACb,gBAAiB,CACjB,MAAO;AA9EX,q2GAAq2G\",\"sourcesContent\":[\"<script>\\n import { codeStore, updateCode } from '../code-store.js';\\n import { codeErrorStore } from '../error-store.js';\\n import { onMount } from 'svelte';\\n import mermaid from '@mermaid';\\n import Error from './Error.svelte';\\n import { getResizeHandler, initEditor } from './editor-utils';\\n import * as monaco from 'monaco-editor';\\n import { watchResize } from 'svelte-watch-resize';\\n\\n let edit;\\n\\n const decArr = [];\\n let editorElem = null;\\n let resizeHandler = () => {};\\n const handleCodeUpdate = (updatedCode, updateEditor) => {\\n try {\\n mermaid.parse(updatedCode);\\n if (edit) {\\n if (updateEditor) {\\n edit.setValue(updatedCode);\\n }\\n decArr.forEach((decor) => {\\n edit.deltaDecorations(decor, []);\\n });\\n }\\n updateCode(updatedCode, false);\\n codeErrorStore.set(undefined);\\n } catch (e) {\\n codeErrorStore.set('Syntax Error');\\n console.log('Error in parsed', e.hash);\\n const l = e.hash.line;\\n decArr.push(\\n edit.deltaDecorations(\\n [],\\n [\\n {\\n range: new monaco.Range(\\n e.hash.loc.first_line,\\n e.hash.loc.last_line,\\n e.hash.loc.first_column,\\n e.hash.loc.last_column\\n ),\\n options: { inlineClassName: 'myInlineDecoration' },\\n },\\n ]\\n )\\n );\\n }\\n };\\n\\n const unsubscribe = codeStore.subscribe((state) => {\\n if (state.updateEditor) {\\n handleCodeUpdate(state.code, true);\\n }\\n });\\n\\n onMount(async () => {\\n initEditor(monaco);\\n editorElem = document.getElementById('editor');\\n edit = monaco.editor.create(editorElem, {\\n value: '',\\n theme: 'myCoolTheme',\\n language: 'mermaid',\\n });\\n resizeHandler = getResizeHandler(edit);\\n edit.onDidChangeModelContent(function (e) {\\n handleCodeUpdate(edit.getValue(), false);\\n });\\n\\n initEditor(monaco);\\n });\\n</script>\\n\\n<style>\\n #editor {\\n width: 100%;\\n height: 400px;\\n max-height: 300px;\\n flex: 1;\\n }\\n</style>\\n\\n<div id=\\\"editor-container\\\">\\n <div id=\\\"editor\\\" use:watchResize={resizeHandler} />\\n <Error errorStore={codeErrorStore} />\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#error.svelte-104hor5{background:darkred;color:white;flex:1;padding:10px}.invisible.svelte-104hor5{display:none}.visible.svelte-104hor5{display:block}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3Iuc3ZlbHRlIiwic291cmNlcyI6WyJFcnJvci5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiPHNjcmlwdD5cbiAgZXhwb3J0IGxldCBjbGFzc2VzID0gJyc7XG4gIGV4cG9ydCBsZXQgZXJyb3JTdG9yZTtcbiAgbGV0IGVycm9yO1xuICBlcnJvclN0b3JlLnN1YnNjcmliZSgoX2Vycm9yKSA9PiB7XG4gICAgaWYgKF9lcnJvcikge1xuICAgICAgZXJyb3IgPSBfZXJyb3IudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gIH0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbiAgI2Vycm9yIHtcbiAgICBiYWNrZ3JvdW5kOiBkYXJrcmVkO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmc6IDEwcHg7XG4gIH1cbiAgLmludmlzaWJsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAudmlzaWJsZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbjwvc3R5bGU+XG5cbnsjaWYgZXJyb3J9XG4gIDxkaXYgaWQ9XCJlcnJvclwiIGNsYXNzPXtjbGFzc2VzfT57ZXJyb3J9PC9kaXY+XG57L2lmfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWNFLE1BQU0sZUFBQyxDQUFDLEFBQ04sVUFBVSxDQUFFLE9BQU8sQ0FDbkIsS0FBSyxDQUFFLEtBQUssQ0FDWixJQUFJLENBQUUsQ0FBQyxDQUNQLE9BQU8sQ0FBRSxJQUFJLEFBQ2YsQ0FBQyxBQUNELFVBQVUsZUFBQyxDQUFDLEFBQ1YsT0FBTyxDQUFFLElBQUksQUFDZixDQUFDLEFBQ0QsUUFBUSxlQUFDLENBQUMsQUFDUixPQUFPLENBQUUsS0FBSyxBQUNoQixDQUFDIn0=*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Error.svelte\"],\"names\":[],\"mappings\":\"AAcE,sBAAQ,kBACa,CACnB,WAAY,CACZ,MAAO,CACP,YAAa,CACd,0BACW,YACG,CACd,wBACS,aACM;AAvBlB,yoCAAyoC\",\"sourcesContent\":[\"<script>\\n export let classes = '';\\n export let errorStore;\\n let error;\\n errorStore.subscribe((_error) => {\\n if (_error) {\\n error = _error.toString();\\n } else {\\n error = false;\\n }\\n });\\n</script>\\n\\n<style>\\n #error {\\n background: darkred;\\n color: white;\\n flex: 1;\\n padding: 10px;\\n }\\n .invisible {\\n display: none;\\n }\\n .visible {\\n display: block;\\n }\\n</style>\\n\\n{#if error}\\n <div id=\\\"error\\\" class={classes}>{error}</div>\\n{/if}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#links.svelte-187ys3m{margin-bottom:1rem;padding-bottom:0.5rem;border-bottom:1px solid lightgray}#markdown.svelte-187ys3m{padding:7px;font-family:monospace;font-size:14px;width:95%;margin:1rem 0;border:1px solid lightgray}label[for='markdown'].svelte-187ys3m{cursor:pointer;margin:0 auto}.button-style.svelte-187ys3m{background-color:#a2d9e2;color:#33a2c4;border-radius:0.25rem;padding:0.5rem;border:1px solid #a2d9e2;margin:0.25rem}.button-style.svelte-187ys3m:hover{background-color:#fff;color:#33a2c4;border:1px solid #33a2c4}.button-style.svelte-187ys3m:focus{outline:none}.link-style.svelte-187ys3m{text-decoration:none;color:#33a2c4}#copy-section.svelte-187ys3m{padding-top:1rem;text-align:center}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlua3Muc3ZlbHRlIiwic291cmNlcyI6WyJMaW5rcy5zdmVsdGUiXSwic291cmNlc0NvbnRlbnQiOlsiPHNjcmlwdD5cbiAgaW1wb3J0IHsgQmFzZTY0IH0gZnJvbSAnanMtYmFzZTY0JztcbiAgaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuICBpbXBvcnQgeyBjb2RlU3RvcmUgfSBmcm9tICcuLi9jb2RlLXN0b3JlLmpzJztcblxuICBjb25zdCBnZXRCYXNlNjRTVkcgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpO1xuICAgIGNvbnN0IHN2ZyA9IGNvbnRhaW5lci5pbm5lckhUTUwucmVwbGFjZUFsbCgnPGJyPicsICc8YnIvPicpO1xuICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKHN2Zyk7XG4gIH07XG5cbiAgY29uc3QgZXhwb3J0SW1hZ2UgPSAoZXZlbnQsIGV4cG9ydGVyKSA9PiB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgY29uc3Qgc3ZnID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NvbnRhaW5lciBzdmcnKTtcbiAgICBjb25zdCBib3ggPSBzdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY2FudmFzLndpZHRoID0gYm94LndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBib3guaGVpZ2h0O1xuICAgIGlmIChpbWFnZW1vZGVzZWxlY3RlZCA9PT0gJ3dpZHRoJykge1xuICAgICAgY29uc3QgcmF0aW8gPSBib3guaGVpZ2h0IC8gYm94LndpZHRoO1xuICAgICAgY2FudmFzLndpZHRoID0gdXNlcmltYWdld2lkdGg7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gdXNlcmltYWdld2lkdGggKiByYXRpbztcbiAgICB9IGVsc2UgaWYgKGltYWdlbW9kZXNlbGVjdGVkID09PSAnaGVpZ2h0Jykge1xuICAgICAgY29uc3QgcmF0aW8gPSBib3gud2lkdGggLyBib3guaGVpZ2h0O1xuICAgICAgY2FudmFzLndpZHRoID0gdXNlcmltYWdlaGVpZ2h0ICogcmF0aW87XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gdXNlcmltYWdlaGVpZ2h0O1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgY29udGV4dC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcblxuICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgaW1hZ2Uub25sb2FkID0gZXhwb3J0ZXIoY2FudmFzLCBjb250ZXh0LCBpbWFnZSk7XG5cbiAgICBjb25zb2xlLmxvZygnU1ZHJywgZ2V0QmFzZTY0U1ZHKCkpO1xuICAgIGltYWdlLnNyYyA9IGBkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCR7Z2V0QmFzZTY0U1ZHKCl9YDtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIGNvbnN0IGRvd25sb2FkSW1hZ2UgPSAoY2FudmFzLCBjb250ZXh0LCBpbWFnZSkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgIGEuZG93bmxvYWQgPSBgbWVybWFpZC1kaWFncmFtLSR7bW9tZW50KCkuZm9ybWF0KCdZWVlZTU1EREhIbW1zcycpfS5wbmdgO1xuICAgICAgYS5ocmVmID0gY2FudmFzXG4gICAgICAgIC50b0RhdGFVUkwoJ2ltYWdlL3BuZycpXG4gICAgICAgIC5yZXBsYWNlKCdpbWFnZS9wbmcnLCAnaW1hZ2Uvb2N0ZXQtc3RyZWFtJyk7XG4gICAgICBhLmNsaWNrKCk7XG4gICAgfTtcbiAgfTtcblxuICBjb25zdCBpc0NsaXBib2FyZEF2YWlsYWJsZSA9ICgpID0+IHtcbiAgICByZXR1cm4gd2luZG93Lmhhc093blByb3BlcnR5KCdDbGlwYm9hcmRJdGVtJyk7XG4gIH07XG5cbiAgY29uc3QgY2xpcGJvYXJkQ29weSA9IChjYW52YXMsIGNvbnRleHQsIGltYWdlKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xuXG4gICAgICBjYW52YXMudG9CbG9iKChibG9iKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZShbXG4gICAgICAgICAgICBuZXcgQ2xpcGJvYXJkSXRlbSh7XG4gICAgICAgICAgICAgIFtibG9iLnR5cGVdOiBibG9iLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gIH07XG5cbiAgY29uc3Qgb25Db3B5Q2xpcGJvYXJkID0gKGV2ZW50KSA9PiB7XG4gICAgZXhwb3J0SW1hZ2UoZXZlbnQsIGNsaXBib2FyZENvcHkpO1xuICB9O1xuXG4gIGNvbnN0IG9uRG93bmxvYWRQTkcgPSAoZXZlbnQpID0+IHtcbiAgICBleHBvcnRJbWFnZShldmVudCwgZG93bmxvYWRJbWFnZSk7XG4gIH07XG5cbiAgY29uc3Qgb25Eb3dubG9hZFNWRyA9IChldmVudCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50LnRhcmdldCk7XG4gICAgZXZlbnQudGFyZ2V0LmhyZWYgPSBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke2dldEJhc2U2NFNWRygpfWA7XG4gICAgZXZlbnQudGFyZ2V0LmRvd25sb2FkID0gYG1lcm1haWQtZGlhZ3JhbS0ke21vbWVudCgpLmZvcm1hdChcbiAgICAgICdZWVlZTU1EREhIbW1zcydcbiAgICApfS5zdmdgO1xuICAgIGNvbnNvbGUubG9nKCdldmVudCcsIGV2ZW50KTtcbiAgfTtcblxuICBjb25zdCBvbkNvcHlNYXJrZG93biA9IChldmVudCkgPT4ge1xuICAgIGV2ZW50LnRhcmdldC5zZWxlY3QoKTtcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnQ29weScpO1xuICB9O1xuXG4gIGxldCB1cmw7XG4gIGxldCBiNjRDb2RlO1xuICBsZXQgaVVybDtcbiAgbGV0IHN2Z1VybDtcbiAgbGV0IG1kQ29kZTtcbiAgbGV0IGltYWdlbW9kZXNlbGVjdGVkID0gJ2F1dG8nO1xuICBsZXQgdXNlcmltYWdld2lkdGggPSAxOTIwO1xuICBsZXQgdXNlcmltYWdlaGVpZ2h0ID0gMTA4MDtcblxuICBjb25zdCB1bnN1YnNjcmliZSA9IGNvZGVTdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgYjY0Q29kZSA9IEJhc2U2NC5lbmNvZGVVUkkoSlNPTi5zdHJpbmdpZnkoc3RhdGUpKTtcbiAgICB1cmwgPSBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUuc3BsaXQoJyMnKVswXX0jL3ZpZXcvJHtiNjRDb2RlfWA7XG4gICAgaVVybCA9IGBodHRwczovL21lcm1haWQuaW5rL2ltZy8ke2I2NENvZGV9YDtcbiAgICBzdmdVcmwgPSBgaHR0cHM6Ly9tZXJtYWlkLmluay9zdmcvJHtiNjRDb2RlfWA7XG4gICAgbWRDb2RlID0gYFshW10oJHtpVXJsfSldKCR7d2luZG93LmxvY2F0aW9uLnByb3RvY29sfS8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0ke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0jL2VkaXQvJHtiNjRDb2RlfSlgO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gICNsaW5rcyB7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGdyYXk7XG4gIH1cbiAgI21hcmtkb3duIHtcbiAgICBwYWRkaW5nOiA3cHg7XG4gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgd2lkdGg6IDk1JTtcbiAgICBtYXJnaW46IDFyZW0gMDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCBsaWdodGdyYXk7XG4gIH1cbiAgbGFiZWxbZm9yPSdtYXJrZG93biddIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gIH1cbiAgLypcbiAgICBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XG4gICAgICAgIGxhYmVsW2Zvcj1cIm1hcmtkb3duXCJdIHtcbiAgICAgICAgICAgIGNvbG9yOiAjZDhkOGQ4O1xuICAgICAgICB9XG4gICAgfSAqL1xuICAuYnV0dG9uLXN0eWxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTJkOWUyO1xuICAgIGNvbG9yOiAjMzNhMmM0O1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNhMmQ5ZTI7XG4gICAgbWFyZ2luOiAwLjI1cmVtO1xuICB9XG4gIC5idXR0b24tc3R5bGU6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgY29sb3I6ICMzM2EyYzQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgIzMzYTJjNDtcbiAgfVxuICAuYnV0dG9uLXN0eWxlOmZvY3VzIHtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG4gIC5saW5rLXN0eWxlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgY29sb3I6ICMzM2EyYzQ7XG4gIH1cbiAgI2NvcHktc2VjdGlvbiB7XG4gICAgcGFkZGluZy10b3A6IDFyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG48L3N0eWxlPlxuXG48ZGl2IGlkPVwibGlua3NcIj5cbiAgeyNpZiBpc0NsaXBib2FyZEF2YWlsYWJsZSgpfVxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tc3R5bGVcIj5cbiAgICAgIDxhIGNsYXNzPVwibGluay1zdHlsZVwiIGhyZWY9e3VybH0gZG93bmxvYWQ9XCJcIiBvbjpjbGljaz17b25Db3B5Q2xpcGJvYXJkfT5cbiAgICAgICAgQ29weSBJbWFnZVxuICAgICAgPC9hPlxuICAgIDwvYnV0dG9uPlxuICB7L2lmfVxuICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLXN0eWxlXCI+XG4gICAgPGEgY2xhc3M9XCJsaW5rLXN0eWxlXCIgaHJlZj17dXJsfSBkb3dubG9hZD1cIlwiIG9uOmNsaWNrPXtvbkRvd25sb2FkUE5HfT5cbiAgICAgIERvd25sb2FkIFBOR1xuICAgIDwvYT5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gY2xhc3M9XCJidXR0b24tc3R5bGVcIj5cbiAgICA8YSBjbGFzcz1cImxpbmstc3R5bGVcIiBocmVmPXt1cmx9PkxpbmsgdG8gdmlldzwvYT5cbiAgPC9idXR0b24+XG4gIDxidXR0b24gY2xhc3M9XCJidXR0b24tc3R5bGVcIj5cbiAgICA8YSBjbGFzcz1cImxpbmstc3R5bGVcIiBocmVmPXt1cmx9IGRvd25sb2FkPVwiXCIgb246Y2xpY2s9e29uRG93bmxvYWRTVkd9PlxuICAgICAgRG93bmxvYWQgU1ZHXG4gICAgPC9hPlxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1zdHlsZVwiPlxuICAgIDxhIGNsYXNzPVwibGluay1zdHlsZVwiIGhyZWY9e2lVcmx9PkxpbmsgdG8gSW1hZ2U8L2E+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uLXN0eWxlXCI+XG4gICAgPGEgY2xhc3M9XCJsaW5rLXN0eWxlXCIgaHJlZj17c3ZnVXJsfT5MaW5rIHRvIFNWRzwvYT5cbiAgPC9idXR0b24+XG4gIChtYXJrZG93biBpcyBiYXNlNjQgZW5jb2RlZCBmb3IgdGhlc2UgdXJscylcbjwvZGl2PlxuPGRpdiBpZD1cImNvcHktc2VjdGlvblwiPlxuICA8bGFiZWwgZm9yPVwibWFya2Rvd25cIiBjbGFzcz1cImJ1dHRvbi1zdHlsZVwiPkNvcHkgTWFya2Rvd248L2xhYmVsPlxuICA8YnIgLz5cbiAgPGlucHV0IGlkPVwibWFya2Rvd25cIiB0eXBlPVwidGV4dFwiIHZhbHVlPXttZENvZGV9IG9uOmNsaWNrPXtvbkNvcHlNYXJrZG93bn0gLz5cbjwvZGl2PlxuXG5QTkcgc2l6ZTpcbjxiciAvPlxuPGlucHV0IHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwiYXV0b1wiIGlkPVwiYXV0b3NpemVcIiBiaW5kOmdyb3VwPXtpbWFnZW1vZGVzZWxlY3RlZH0gLz5cbjxsYWJlbCBmb3I9XCJhdXRvc2l6ZVwiPmF1dG88L2xhYmVsPjxiciAvPlxuPGlucHV0XG4gIHR5cGU9XCJyYWRpb1wiXG4gIHZhbHVlPVwid2lkdGhcIlxuICBpZD1cIndpZHRoLWFjdGl2ZVwiXG4gIGJpbmQ6Z3JvdXA9e2ltYWdlbW9kZXNlbGVjdGVkfSAvPlxuPGxhYmVsIGZvcj1cIndpZHRoXCI+d2lkdGg8L2xhYmVsPlxuPGlucHV0XG4gIGlkPVwid2lkdGhcIlxuICB0eXBlPVwibnVtYmVyXCJcbiAgbWluPVwiM1wiXG4gIG1heD1cIjEwMDAwXCJcbiAgYmluZDp2YWx1ZT17dXNlcmltYWdld2lkdGh9XG4gIGRpc2FibGVkPXtpbWFnZW1vZGVzZWxlY3RlZCAhPT0gJ3dpZHRoJ30gLz48YnIgLz5cbjxpbnB1dFxuICB0eXBlPVwicmFkaW9cIlxuICB2YWx1ZT1cImhlaWdodFwiXG4gIGlkPVwiaGVpZ2h0LWFjdGl2ZVwiXG4gIGJpbmQ6Z3JvdXA9e2ltYWdlbW9kZXNlbGVjdGVkfSAvPlxuPGxhYmVsIGZvcj1cImhlaWdodFwiPmhlaWdodDwvbGFiZWw+XG48aW5wdXRcbiAgaWQ9XCJoZWlnaHRcIlxuICB0eXBlPVwibnVtYmVyXCJcbiAgbWluPVwiM1wiXG4gIG1heD1cIjEwMDAwXCJcbiAgYmluZDp2YWx1ZT17dXNlcmltYWdlaGVpZ2h0fVxuICBkaXNhYmxlZD17aW1hZ2Vtb2Rlc2VsZWN0ZWQgIT09ICdoZWlnaHQnfSAvPjxiciAvPlxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1IRSxNQUFNLGVBQUMsQ0FBQyxBQUNOLGFBQWEsQ0FBRSxJQUFJLENBQ25CLGNBQWMsQ0FBRSxNQUFNLENBQ3RCLGFBQWEsQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQUFDcEMsQ0FBQyxBQUNELFNBQVMsZUFBQyxDQUFDLEFBQ1QsT0FBTyxDQUFFLEdBQUcsQ0FDWixXQUFXLENBQUUsU0FBUyxDQUN0QixTQUFTLENBQUUsSUFBSSxDQUNmLEtBQUssQ0FBRSxHQUFHLENBQ1YsTUFBTSxDQUFFLElBQUksQ0FBQyxDQUFDLENBQ2QsTUFBTSxDQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxBQUM3QixDQUFDLEFBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsZUFBQyxDQUFDLEFBQ3JCLE1BQU0sQ0FBRSxPQUFPLENBQ2YsTUFBTSxDQUFFLENBQUMsQ0FBQyxJQUFJLEFBQ2hCLENBQUMsQUFPRCxhQUFhLGVBQUMsQ0FBQyxBQUNiLGdCQUFnQixDQUFFLE9BQU8sQ0FDekIsS0FBSyxDQUFFLE9BQU8sQ0FDZCxhQUFhLENBQUUsT0FBTyxDQUN0QixPQUFPLENBQUUsTUFBTSxDQUNmLE1BQU0sQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDekIsTUFBTSxDQUFFLE9BQU8sQUFDakIsQ0FBQyxBQUNELDRCQUFhLE1BQU0sQUFBQyxDQUFDLEFBQ25CLGdCQUFnQixDQUFFLElBQUksQ0FDdEIsS0FBSyxDQUFFLE9BQU8sQ0FDZCxNQUFNLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEFBQzNCLENBQUMsQUFDRCw0QkFBYSxNQUFNLEFBQUMsQ0FBQyxBQUNuQixPQUFPLENBQUUsSUFBSSxBQUNmLENBQUMsQUFDRCxXQUFXLGVBQUMsQ0FBQyxBQUNYLGVBQWUsQ0FBRSxJQUFJLENBQ3JCLEtBQUssQ0FBRSxPQUFPLEFBQ2hCLENBQUMsQUFDRCxhQUFhLGVBQUMsQ0FBQyxBQUNiLFdBQVcsQ0FBRSxJQUFJLENBQ2pCLFVBQVUsQ0FBRSxNQUFNLEFBQ3BCLENBQUMifQ==*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Links.svelte\"],\"names\":[],\"mappings\":\"AAmHE,sBAAQ,kBACa,CACnB,qBAAsB,CACtB,iCAAkC,CACnC,yBACU,WACG,CACZ,qBAAsB,CACtB,cAAe,CACf,SAAU,CACV,aAAc,CACd,0BAA2B,CAC5B,qCACsB,cACN,CACf,aAAc,CACf,6BAOc,wBACY,CACzB,aAAc,CACd,qBAAsB,CACtB,cAAe,CACf,wBAAyB,CACzB,cAAe,CAChB,mCACoB,qBACG,CACtB,aAAc,CACd,wBAAyB,CAC1B,mCACoB,YACN,CACd,2BACY,oBACU,CACrB,aAAc,CACf,6BACc,gBACI,CACjB,iBAAkB;AA/JtB,qqTAAqqT\",\"sourcesContent\":[\"<script>\\n import { Base64 } from 'js-base64';\\n import moment from 'moment';\\n import { codeStore } from '../code-store.js';\\n\\n const getBase64SVG = () => {\\n const container = document.getElementById('container');\\n const svg = container.innerHTML.replaceAll('<br>', '<br/>');\\n return Base64.encode(svg);\\n };\\n\\n const exportImage = (event, exporter) => {\\n const canvas = document.createElement('canvas');\\n const svg = document.querySelector('#container svg');\\n const box = svg.getBoundingClientRect();\\n canvas.width = box.width;\\n canvas.height = box.height;\\n if (imagemodeselected === 'width') {\\n const ratio = box.height / box.width;\\n canvas.width = userimagewidth;\\n canvas.height = userimagewidth * ratio;\\n } else if (imagemodeselected === 'height') {\\n const ratio = box.width / box.height;\\n canvas.width = userimageheight * ratio;\\n canvas.height = userimageheight;\\n }\\n const context = canvas.getContext('2d');\\n context.fillStyle = 'white';\\n context.fillRect(0, 0, canvas.width, canvas.height);\\n\\n const image = new Image();\\n image.onload = exporter(canvas, context, image);\\n\\n console.log('SVG', getBase64SVG());\\n image.src = `data:image/svg+xml;base64,${getBase64SVG()}`;\\n event.stopPropagation();\\n event.preventDefault();\\n };\\n\\n const downloadImage = (canvas, context, image) => {\\n return () => {\\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\\n\\n const a = document.createElement('a');\\n a.download = `mermaid-diagram-${moment().format('YYYYMMDDHHmmss')}.png`;\\n a.href = canvas\\n .toDataURL('image/png')\\n .replace('image/png', 'image/octet-stream');\\n a.click();\\n };\\n };\\n\\n const isClipboardAvailable = () => {\\n return window.hasOwnProperty('ClipboardItem');\\n };\\n\\n const clipboardCopy = (canvas, context, image) => {\\n return () => {\\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\\n\\n canvas.toBlob((blob) => {\\n try {\\n navigator.clipboard.write([\\n new ClipboardItem({\\n [blob.type]: blob,\\n }),\\n ]);\\n } catch (error) {\\n console.error(error);\\n }\\n });\\n };\\n };\\n\\n const onCopyClipboard = (event) => {\\n exportImage(event, clipboardCopy);\\n };\\n\\n const onDownloadPNG = (event) => {\\n exportImage(event, downloadImage);\\n };\\n\\n const onDownloadSVG = (event) => {\\n console.log('event', event.target);\\n event.target.href = `data:image/svg+xml;base64,${getBase64SVG()}`;\\n event.target.download = `mermaid-diagram-${moment().format(\\n 'YYYYMMDDHHmmss'\\n )}.svg`;\\n console.log('event', event);\\n };\\n\\n const onCopyMarkdown = (event) => {\\n event.target.select();\\n document.execCommand('Copy');\\n };\\n\\n let url;\\n let b64Code;\\n let iUrl;\\n let svgUrl;\\n let mdCode;\\n let imagemodeselected = 'auto';\\n let userimagewidth = 1920;\\n let userimageheight = 1080;\\n\\n const unsubscribe = codeStore.subscribe((state) => {\\n b64Code = Base64.encodeURI(JSON.stringify(state));\\n url = `${window.location.pathname.split('#')[0]}#/view/${b64Code}`;\\n iUrl = `https://mermaid.ink/img/${b64Code}`;\\n svgUrl = `https://mermaid.ink/svg/${b64Code}`;\\n mdCode = `[![](${iUrl})](${window.location.protocol}//${window.location.host}${window.location.pathname}#/edit/${b64Code})`;\\n });\\n</script>\\n\\n<style>\\n #links {\\n margin-bottom: 1rem;\\n padding-bottom: 0.5rem;\\n border-bottom: 1px solid lightgray;\\n }\\n #markdown {\\n padding: 7px;\\n font-family: monospace;\\n font-size: 14px;\\n width: 95%;\\n margin: 1rem 0;\\n border: 1px solid lightgray;\\n }\\n label[for='markdown'] {\\n cursor: pointer;\\n margin: 0 auto;\\n }\\n /*\\n @media (prefers-color-scheme: dark) {\\n label[for=\\\"markdown\\\"] {\\n color: #d8d8d8;\\n }\\n } */\\n .button-style {\\n background-color: #a2d9e2;\\n color: #33a2c4;\\n border-radius: 0.25rem;\\n padding: 0.5rem;\\n border: 1px solid #a2d9e2;\\n margin: 0.25rem;\\n }\\n .button-style:hover {\\n background-color: #fff;\\n color: #33a2c4;\\n border: 1px solid #33a2c4;\\n }\\n .button-style:focus {\\n outline: none;\\n }\\n .link-style {\\n text-decoration: none;\\n color: #33a2c4;\\n }\\n #copy-section {\\n padding-top: 1rem;\\n text-align: center;\\n }\\n</style>\\n\\n<div id=\\\"links\\\">\\n {#if isClipboardAvailable()}\\n <button class=\\\"button-style\\\">\\n <a class=\\\"link-style\\\" href={url} download=\\\"\\\" on:click={onCopyClipboard}>\\n Copy Image\\n </a>\\n </button>\\n {/if}\\n <button class=\\\"button-style\\\">\\n <a class=\\\"link-style\\\" href={url} download=\\\"\\\" on:click={onDownloadPNG}>\\n Download PNG\\n </a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a class=\\\"link-style\\\" href={url}>Link to view</a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a class=\\\"link-style\\\" href={url} download=\\\"\\\" on:click={onDownloadSVG}>\\n Download SVG\\n </a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a class=\\\"link-style\\\" href={iUrl}>Link to Image</a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a class=\\\"link-style\\\" href={svgUrl}>Link to SVG</a>\\n </button>\\n (markdown is base64 encoded for these urls)\\n</div>\\n<div id=\\\"copy-section\\\">\\n <label for=\\\"markdown\\\" class=\\\"button-style\\\">Copy Markdown</label>\\n <br />\\n <input id=\\\"markdown\\\" type=\\\"text\\\" value={mdCode} on:click={onCopyMarkdown} />\\n</div>\\n\\nPNG size:\\n<br />\\n<input type=\\\"radio\\\" value=\\\"auto\\\" id=\\\"autosize\\\" bind:group={imagemodeselected} />\\n<label for=\\\"autosize\\\">auto</label><br />\\n<input\\n type=\\\"radio\\\"\\n value=\\\"width\\\"\\n id=\\\"width-active\\\"\\n bind:group={imagemodeselected} />\\n<label for=\\\"width\\\">width</label>\\n<input\\n id=\\\"width\\\"\\n type=\\\"number\\\"\\n min=\\\"3\\\"\\n max=\\\"10000\\\"\\n bind:value={userimagewidth}\\n disabled={imagemodeselected !== 'width'} /><br />\\n<input\\n type=\\\"radio\\\"\\n value=\\\"height\\\"\\n id=\\\"height-active\\\"\\n bind:group={imagemodeselected} />\\n<label for=\\\"height\\\">height</label>\\n<input\\n id=\\\"height\\\"\\n type=\\\"number\\\"\\n min=\\\"3\\\"\\n max=\\\"10000\\\"\\n bind:value={userimageheight}\\n disabled={imagemodeselected !== 'height'} /><br />\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#tag.svelte-1nm8e4l{height:auto;margin:0 8px 0 0;padding:0 7px;font-size:12px;line-height:20px;white-space:nowrap;border:1px solid #d9d9d9;border-radius:4px;cursor:default;font-size:smaller;color:#52c41a;background:#f6ffed;border-color:#b7eb8f;margin-left:8px}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnLnN2ZWx0ZSIsInNvdXJjZXMiOlsiVGFnLnN2ZWx0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XG4gICN0YWcge1xuICAgIGhlaWdodDogYXV0bztcbiAgICBtYXJnaW46IDAgOHB4IDAgMDtcbiAgICBwYWRkaW5nOiAwIDdweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgZm9udC1zaXplOiBzbWFsbGVyO1xuICAgIGNvbG9yOiAjNTJjNDFhO1xuICAgIGJhY2tncm91bmQ6ICNmNmZmZWQ7XG4gICAgYm9yZGVyLWNvbG9yOiAjYjdlYjhmO1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIH1cbjwvc3R5bGU+XG5cbjxkaXYgaWQ9XCJ0YWdcIj5cbiAgPHNsb3QgLz5cbjwvZGl2PlxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNFLElBQUksZUFBQyxDQUFDLEFBQ0osTUFBTSxDQUFFLElBQUksQ0FDWixNQUFNLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNqQixPQUFPLENBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDZCxTQUFTLENBQUUsSUFBSSxDQUNmLFdBQVcsQ0FBRSxJQUFJLENBQ2pCLFdBQVcsQ0FBRSxNQUFNLENBQ25CLE1BQU0sQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDekIsYUFBYSxDQUFFLEdBQUcsQ0FDbEIsTUFBTSxDQUFFLE9BQU8sQ0FDZixTQUFTLENBQUUsT0FBTyxDQUNsQixLQUFLLENBQUUsT0FBTyxDQUNkLFVBQVUsQ0FBRSxPQUFPLENBQ25CLFlBQVksQ0FBRSxPQUFPLENBQ3JCLFdBQVcsQ0FBRSxHQUFHLEFBQ2xCLENBQUMifQ==*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/Tag.svelte\"],\"names\":[],\"mappings\":\"AACE,oBAAM,WACQ,CACZ,gBAAiB,CACjB,aAAc,CACd,cAAe,CACf,gBAAiB,CACjB,kBAAmB,CACnB,wBAAyB,CACzB,iBAAkB,CAClB,cAAe,CACf,iBAAkB,CAClB,aAAc,CACd,kBAAmB,CACnB,oBAAqB,CACrB,eAAgB;AAdpB,6uCAA6uC\",\"sourcesContent\":[\"<style>\\n #tag {\\n height: auto;\\n margin: 0 8px 0 0;\\n padding: 0 7px;\\n font-size: 12px;\\n line-height: 20px;\\n white-space: nowrap;\\n border: 1px solid #d9d9d9;\\n border-radius: 4px;\\n cursor: default;\\n font-size: smaller;\\n color: #52c41a;\\n background: #f6ffed;\\n border-color: #b7eb8f;\\n margin-left: 8px;\\n }\\n</style>\\n\\n<div id=\\\"tag\\\">\\n <slot />\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#view.svelte-adxv1m{border:1px solor darkred;flex:1}#container.svelte-adxv1m{overflow-x:auto}.error.svelte-adxv1m{opacity:0.5}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlldy5zdmVsdGUiLCJzb3VyY2VzIjpbIlZpZXcuc3ZlbHRlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQ+XG4gIGltcG9ydCB7IGNvZGVTdG9yZSB9IGZyb20gJy4uL2NvZGUtc3RvcmUuanMnO1xuICBpbXBvcnQgeyBjb2RlRXJyb3JTdG9yZSwgY29uZmlnRXJyb3JTdG9yZSB9IGZyb20gJy4uL2Vycm9yLXN0b3JlLmpzJztcbiAgaW1wb3J0IHsgb25Nb3VudCB9IGZyb20gJ3N2ZWx0ZSc7XG4gIGltcG9ydCBtZXJtYWlkIGZyb20gJ0BtZXJtYWlkJztcblxuICBjb25zdCBkZXRlY3RUeXBlID0gKHRleHQpID0+IHtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9eXFxzKiUlLipcXG4vZywgJ1xcbicpO1xuICAgIGNvbnNvbGUuZGVidWcoJ0RldGVjdGluZyBkaWFncmFtIHR5cGUgYmFzZWQgb24gdGhlIHRleHQgJyArIHRleHQpO1xuICAgIGlmICh0ZXh0Lm1hdGNoKC9eXFxzKnNlcXVlbmNlRGlhZ3JhbS8pKSB7XG4gICAgICByZXR1cm4gJ3NlcXVlbmNlJztcbiAgICB9XG5cbiAgICBpZiAodGV4dC5tYXRjaCgvXlxccypnYW50dC8pKSB7XG4gICAgICByZXR1cm4gJ2dhbnR0JztcbiAgICB9XG5cbiAgICBpZiAodGV4dC5tYXRjaCgvXlxccypjbGFzc0RpYWdyYW0vKSkge1xuICAgICAgcmV0dXJuICdjbGFzcyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHQubWF0Y2goL15cXHMqc3RhdGVEaWFncmFtLykpIHtcbiAgICAgIHJldHVybiAnc3RhdGUnO1xuICAgIH1cblxuICAgIGlmICh0ZXh0Lm1hdGNoKC9eXFxzKmdpdEdyYXBoLykpIHtcbiAgICAgIHJldHVybiAnZ2l0JztcbiAgICB9XG4gICAgaWYgKHRleHQubWF0Y2goL15cXHMqZmxvd2NoYXJ0LykpIHtcbiAgICAgIHJldHVybiAnZmxvd2NoYXJ0JztcbiAgICB9XG5cbiAgICBpZiAodGV4dC5tYXRjaCgvXlxccyppbmZvLykpIHtcbiAgICAgIHJldHVybiAnaW5mbyc7XG4gICAgfVxuICAgIGlmICh0ZXh0Lm1hdGNoKC9eXFxzKnBpZS8pKSB7XG4gICAgICByZXR1cm4gJ3BpZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICdmbG93Y2hhcnQnO1xuICB9O1xuXG4gIC8vIG1hbnVhbCBkZWJvdW5jZVxuICBsZXQgdGltZW91dDtcbiAgY29uc3Qgc2F2ZVN0YXRpc3RjcyA9IChncmFwaFR5cGUpID0+IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgLy8gT25seSBzYXZlIHN0YXRpc3RjcyBhZnRlciBhIDUgc2VjIGRlbGF5XG4gICAgdGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc29sZS5sb2coJ2dhOicsICdzZW5kJywgJ2V2ZW50JywgJ3JlbmRlcicsIGdyYXBoVHlwZSwgZ3JhcGhUeXBlKTtcbiAgICAgIGdhKCdzZW5kJywgJ2V2ZW50JywgZ3JhcGhUeXBlLCAncmVuZGVyJywgJ3JlbmRlcicpO1xuICAgIH0sIDUwMDApO1xuICB9O1xuXG4gIGxldCBjb250YWluZXI7XG5cbiAgZXhwb3J0IGxldCBjb2RlID0gJyc7XG4gIGV4cG9ydCBsZXQgY29uZmlnQ2xhc3NlcyA9ICcnO1xuICBleHBvcnQgbGV0IGNvZGVDbGFzc2VzID0gJyc7XG5cbiAgb25Nb3VudChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBjb2RlU3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lciAmJiBzdGF0ZSkge1xuICAgICAgICAgIC8vIFJlcGxhY2luZyBzcGVjaWFsIGNoYXJhY3RlcnMgJzwnIGFuZCAnPicgd2l0aCBlbmNvZGVkICcmbHQ7JyBhbmQgJyZndDsnXG4gICAgICAgICAgY29kZSA9IHN0YXRlLmNvZGUucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcblxuICAgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBjb2RlO1xuICAgICAgICAgIHNhdmVTdGF0aXN0Y3MoZGV0ZWN0VHlwZShjb2RlKSk7XG4gICAgICAgICAgZGVsZXRlIGNvbnRhaW5lci5kYXRhc2V0LnByb2Nlc3NlZDtcbiAgICAgICAgICBtZXJtYWlkLmluaXRpYWxpemUoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUubWVybWFpZCkpO1xuICAgICAgICAgIG1lcm1haWQuaW5pdCh1bmRlZmluZWQsIGNvbnRhaW5lcik7XG4gICAgICAgICAgaWYgKGNvZGUpIG1lcm1haWQucmVuZGVyKCdncmFwaC1kaXYnLCBjb2RlLCBpbnNlcnRTdmcpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCd2aWV3IGZhaWwnLCBlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB1bnN1YnNjcmliZUVycm9yID0gY29kZUVycm9yU3RvcmUuc3Vic2NyaWJlKChfZXJyb3IpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgX2Vycm9yID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb2RlQ2xhc3NlcyA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29kZUNsYXNzZXMgPSAnZXJyb3InO1xuICAgICAgICBjb25zb2xlLmxvZygnY29kZSBlcnJvcjogJywgX2Vycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB1bnN1YnNjcmliZUNvbmZpZ0Vycm9yID0gY29uZmlnRXJyb3JTdG9yZS5zdWJzY3JpYmUoKF9lcnJvcikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBfZXJyb3IgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbmZpZ0NsYXNzZXMgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmZpZ0NsYXNzZXMgPSAnZXJyb3InO1xuICAgICAgICBjb25zb2xlLmxvZygnY29uZiBlcnJvcjogJywgX2Vycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgbGV0IGluc2VydFN2ZyA9IGZ1bmN0aW9uIChzdmdDb2RlLCBiaW5kRnVuY3Rpb25zKSB7fTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gICN2aWV3IHtcbiAgICBib3JkZXI6IDFweCBzb2xvciBkYXJrcmVkO1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgI2NvbnRhaW5lciB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgfVxuICAuZXJyb3Ige1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxuPC9zdHlsZT5cblxuPGRpdiBpZD1cInZpZXdcIiBjbGFzcz1cIntjb2RlQ2xhc3Nlc30ge2NvbmZpZ0NsYXNzZXN9XCI+XG4gIDxkaXYgaWQ9XCJjb250YWluZXJcIiBiaW5kOnRoaXM9e2NvbnRhaW5lcn0gLz5cbjwvZGl2PlxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1HRSxLQUFLLGNBQUMsQ0FBQyxBQUNMLE1BQU0sQ0FBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDekIsSUFBSSxDQUFFLENBQUMsQUFDVCxDQUFDLEFBQ0QsVUFBVSxjQUFDLENBQUMsQUFDVixVQUFVLENBQUUsSUFBSSxBQUNsQixDQUFDLEFBQ0QsTUFBTSxjQUFDLENBQUMsQUFDTixPQUFPLENBQUUsR0FBRyxBQUNkLENBQUMifQ==*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/View.svelte\"],\"names\":[],\"mappings\":\"AAmGE,oBAAO,wBACoB,CACzB,MAAO,CACR,yBACW,eACM,CACjB,qBACO,WACM;AA1GhB,y3IAAy3I\",\"sourcesContent\":[\"<script>\\n import { codeStore } from '../code-store.js';\\n import { codeErrorStore, configErrorStore } from '../error-store.js';\\n import { onMount } from 'svelte';\\n import mermaid from '@mermaid';\\n\\n const detectType = (text) => {\\n text = text.replace(/^\\\\s*%%.*\\\\n/g, '\\\\n');\\n console.debug('Detecting diagram type based on the text ' + text);\\n if (text.match(/^\\\\s*sequenceDiagram/)) {\\n return 'sequence';\\n }\\n\\n if (text.match(/^\\\\s*gantt/)) {\\n return 'gantt';\\n }\\n\\n if (text.match(/^\\\\s*classDiagram/)) {\\n return 'class';\\n }\\n\\n if (text.match(/^\\\\s*stateDiagram/)) {\\n return 'state';\\n }\\n\\n if (text.match(/^\\\\s*gitGraph/)) {\\n return 'git';\\n }\\n if (text.match(/^\\\\s*flowchart/)) {\\n return 'flowchart';\\n }\\n\\n if (text.match(/^\\\\s*info/)) {\\n return 'info';\\n }\\n if (text.match(/^\\\\s*pie/)) {\\n return 'pie';\\n }\\n\\n return 'flowchart';\\n };\\n\\n // manual debounce\\n let timeout;\\n const saveStatistcs = (graphType) => {\\n clearTimeout(timeout);\\n // Only save statistcs after a 5 sec delay\\n timeout = setTimeout(function () {\\n console.log('ga:', 'send', 'event', 'render', graphType, graphType);\\n ga('send', 'event', graphType, 'render', 'render');\\n }, 5000);\\n };\\n\\n let container;\\n\\n export let code = '';\\n export let configClasses = '';\\n export let codeClasses = '';\\n\\n onMount(async () => {\\n const unsubscribe = codeStore.subscribe((state) => {\\n try {\\n if (container && state) {\\n // Replacing special characters '<' and '>' with encoded '<' and '>'\\n code = state.code.replace(/</g, '<').replace(/>/g, '>');\\n\\n container.innerHTML = code;\\n saveStatistcs(detectType(code));\\n delete container.dataset.processed;\\n mermaid.initialize(Object.assign({}, state.mermaid));\\n mermaid.init(undefined, container);\\n if (code) mermaid.render('graph-div', code, insertSvg);\\n }\\n } catch (e) {\\n console.log('view fail', e);\\n }\\n });\\n const unsubscribeError = codeErrorStore.subscribe((_error) => {\\n if (typeof _error === 'undefined') {\\n codeClasses = '';\\n } else {\\n codeClasses = 'error';\\n console.log('code error: ', _error);\\n }\\n });\\n const unsubscribeConfigError = configErrorStore.subscribe((_error) => {\\n if (typeof _error === 'undefined') {\\n configClasses = '';\\n } else {\\n configClasses = 'error';\\n console.log('conf error: ', _error);\\n }\\n });\\n });\\n\\n let insertSvg = function (svgCode, bindFunctions) {};\\n</script>\\n\\n<style>\\n #view {\\n border: 1px solor darkred;\\n flex: 1;\\n }\\n #container {\\n overflow-x: auto;\\n }\\n .error {\\n opacity: 0.5;\\n }\\n</style>\\n\\n<div id=\\\"view\\\" class=\\\"{codeClasses} {configClasses}\\\">\\n <div id=\\\"container\\\" bind:this={container} />\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#body.svelte-mx8k4g{font-family:'Roboto', sans-serif;background-color:#fcfbfc}#editor-root.svelte-mx8k4g{display:flex;height:100%}#col1.svelte-mx8k4g{width:35%}#col2.svelte-mx8k4g{width:65%;padding-left:32px}#link-root.svelte-mx8k4g{display:flex;height:fit-content}#link-col1.svelte-mx8k4g{width:50%}#link-col2.svelte-mx8k4g{width:50%;padding-left:32px}#app-title.svelte-mx8k4g{font-family:'Playfair Display', serif;font-size:32px;font-weight:700;margin:0;color:#1e60ab;opacity:0.8}#title-container.svelte-mx8k4g{width:fit-content;margin:0 auto 8px}#power.svelte-mx8k4g{width:100%;display:flex;justify-content:flex-end;align-items:center;height:4rem}#sampleLoader.svelte-mx8k4g{padding-left:10px;border-bottom:1px solid lightgray}#historyLoaderSubTitle.svelte-mx8k4g{display:inline-block;color:#33a2c4;font-size:small;font-style:italic}.button-container.svelte-mx8k4g{display:flex;align-items:center;flex-direction:row;flex-wrap:wrap}.button-style.svelte-mx8k4g{background-color:#a2d9e2;color:#33a2c4;border-radius:0.25rem;padding:0.5rem;border:1px solid #a2d9e2;margin:0.25rem}.button-style.svelte-mx8k4g:hover{background-color:#fff;color:#33a2c4;border:1px solid #33a2c4}.button-style.svelte-mx8k4g:focus{outline:none}.link-style.svelte-mx8k4g{text-decoration:none;color:#33a2c4}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWRpdC5zdmVsdGUiLCJzb3VyY2VzIjpbIkVkaXQuc3ZlbHRlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQ+XG4gIGltcG9ydCB7IG9uTW91bnQgfSBmcm9tICdzdmVsdGUnO1xuICBpbXBvcnQgeyBjb2RlU3RvcmUsIHVwZGF0ZUNvZGUsIHVwZGF0ZUNvZGVTdG9yZSB9IGZyb20gJy4uL2NvZGUtc3RvcmUuanMnO1xuICBpbXBvcnQgRWRpdG9yIGZyb20gJy4uL2NvbXBvbmVudHMvRWRpdG9yLnN2ZWx0ZSc7XG4gIGltcG9ydCBDb25maWcgZnJvbSAnLi4vY29tcG9uZW50cy9Db25maWcuc3ZlbHRlJztcbiAgaW1wb3J0IFZpZXcgZnJvbSAnLi4vY29tcG9uZW50cy9WaWV3LnN2ZWx0ZSc7XG4gIGltcG9ydCBDYXJkIGZyb20gJy4uL2NvbXBvbmVudHMvQ2FyZC5zdmVsdGUnO1xuICBpbXBvcnQgVGFnIGZyb20gJy4uL2NvbXBvbmVudHMvVGFnLnN2ZWx0ZSc7XG4gIGltcG9ydCBMaW5rcyBmcm9tICcuLi9jb21wb25lbnRzL0xpbmtzLnN2ZWx0ZSc7XG4gIGltcG9ydCB7IGZyb21VcmwgfSBmcm9tICcuLi9jb2RlLXN0b3JlLmpzJztcbiAgaW1wb3J0IHBrZyBmcm9tICdAbWVybWFpZC9wYWNrYWdlLmpzb24nO1xuICBpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG4gIGV4cG9ydCBsZXQgbWVybWFpZFZlcnNpb24gPSBwa2cudmVyc2lvbjtcbiAgbGV0IGhpc3RvcnlMaXN0ID0gW107XG4gIG9uTW91bnQoYXN5bmMgKCkgPT4ge1xuICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3Jyk7XG4gICAgZ2EoJ3NlbmQnLCAnZXZlbnQnLCAndmVyc2lvbicsIG1lcm1haWRWZXJzaW9uLCBtZXJtYWlkVmVyc2lvbik7XG5cbiAgICBjb25zdCBoaXN0b3J5TGlzdEtleSA9ICdfbWVybWFpZF9oaXN0b3J5Xyc7XG4gICAgaGlzdG9yeUxpc3QgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKGhpc3RvcnlMaXN0S2V5KSB8fCAnW10nKTtcbiAgICBsZXQgaGlzQ29kZSA9XG4gICAgICBoaXN0b3J5TGlzdC5sZW5ndGggPiAwID8gaGlzdG9yeUxpc3RbaGlzdG9yeUxpc3QubGVuZ3RoIC0gMV0gOiBudWxsO1xuXG4gICAgaWYgKHBhcmFtcy5kYXRhKSB7XG4gICAgICBmcm9tVXJsKHBhcmFtcy5kYXRhKTtcbiAgICB9IGVsc2UgaWYgKGhpc0NvZGUpIHtcbiAgICAgIHVwZGF0ZUNvZGVTdG9yZSh7XG4gICAgICAgIGNvZGU6IGhpc0NvZGUuY29kZSxcbiAgICAgICAgbWVybWFpZDoge30sXG4gICAgICAgIHVwZGF0ZUVkaXRvcjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2FkU2FtcGxlRGlhZ3JhbSgnRmxvdyBDaGFydCcpO1xuICAgIH1cblxuICAgIGxldCBjb2RlID0gbnVsbDtcbiAgICBjb2RlU3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgY29kZSA9IChzdGF0ZSAmJiBzdGF0ZS5jb2RlKSB8fCBjb2RlO1xuICAgIH0pO1xuXG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgaWYgKGNvZGUgIT0gaGlzQ29kZSkge1xuICAgICAgICAvL3NhdmUgaGlzdG9yeVxuICAgICAgICBoaXN0b3J5TGlzdC51bnNoaWZ0KHtcbiAgICAgICAgICB0aW1lOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgY29kZTogKGhpc0NvZGUgPSBjb2RlKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChoaXN0b3J5TGlzdC5sZW5ndGggPiAxMCkge1xuICAgICAgICAgIGhpc3RvcnlMaXN0LnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGhpc3RvcnlMaXN0S2V5LCBKU09OLnN0cmluZ2lmeShoaXN0b3J5TGlzdCkpO1xuICAgICAgfVxuICAgICAgaGlzdG9yeUxpc3QgPSBoaXN0b3J5TGlzdDsgLy90cmlnZ2VyZWQgdXBkYXRlXG4gICAgfSwgMSAqIDYwICogMTAwMCk7XG4gIH0pO1xuXG4gIGV4cG9ydCBsZXQgcGFyYW1zID0ge307XG4gIGNvbnN0IHNhbXBsZXMgPSB7XG4gICAgJ0Zsb3cgQ2hhcnQnOiBgZ3JhcGggVERcbiAgICBBW0NocmlzdG1hc10gLS0+fEdldCBtb25leXwgQihHbyBzaG9wcGluZylcbiAgICBCIC0tPiBDe0xldCBtZSB0aGlua31cbiAgICBDIC0tPnxPbmV8IERbTGFwdG9wXVxuICAgIEMgLS0+fFR3b3wgRVtpUGhvbmVdXG4gICAgQyAtLT58VGhyZWV8IEZbZmE6ZmEtY2FyIENhcl1gLFxuICAgICdTZXF1ZW5jZSBEaWFncmFtJzogYHNlcXVlbmNlRGlhZ3JhbVxuICAgIEFsaWNlLT4+K0pvaG46IEhlbGxvIEpvaG4sIGhvdyBhcmUgeW91P1xuICAgIEFsaWNlLT4+K0pvaG46IEpvaG4sIGNhbiB5b3UgaGVhciBtZT9cbiAgICBKb2huLS0+Pi1BbGljZTogSGkgQWxpY2UsIEkgY2FuIGhlYXIgeW91IVxuICAgIEpvaG4tLT4+LUFsaWNlOiBJIGZlZWwgZ3JlYXQhXG4gICAgICAgICAgICBgLFxuICAgICdDbGFzcyBEaWFncmFtJzogYGNsYXNzRGlhZ3JhbVxuICAgIEFuaW1hbCA8fC0tIER1Y2tcbiAgICBBbmltYWwgPHwtLSBGaXNoXG4gICAgQW5pbWFsIDx8LS0gWmVicmFcbiAgICBBbmltYWwgOiAraW50IGFnZVxuICAgIEFuaW1hbCA6ICtTdHJpbmcgZ2VuZGVyXG4gICAgQW5pbWFsOiAraXNNYW1tYWwoKVxuICAgIEFuaW1hbDogK21hdGUoKVxuICAgIGNsYXNzIER1Y2t7XG4gICAgICArU3RyaW5nIGJlYWtDb2xvclxuICAgICAgK3N3aW0oKVxuICAgICAgK3F1YWNrKClcbiAgICB9XG4gICAgY2xhc3MgRmlzaHtcbiAgICAgIC1pbnQgc2l6ZUluRmVldFxuICAgICAgLWNhbkVhdCgpXG4gICAgfVxuICAgIGNsYXNzIFplYnJhe1xuICAgICAgK2Jvb2wgaXNfd2lsZFxuICAgICAgK3J1bigpXG4gICAgfVxuICAgICAgICAgICAgYCxcbiAgICAnU3RhdGUgRGlhZ3JhbSc6IGBzdGF0ZURpYWdyYW0tdjJcbiAgICBbKl0gLS0+IFN0aWxsXG4gICAgU3RpbGwgLS0+IFsqXVxuICAgIFN0aWxsIC0tPiBNb3ZpbmdcbiAgICBNb3ZpbmcgLS0+IFN0aWxsXG4gICAgTW92aW5nIC0tPiBDcmFzaFxuICAgIENyYXNoIC0tPiBbKl1cbiAgICAgICAgICAgIGAsXG4gICAgJ0dhbnR0IENoYXJ0JzogYGdhbnR0XG4gICAgdGl0bGUgQSBHYW50dCBEaWFncmFtXG4gICAgZGF0ZUZvcm1hdCAgWVlZWS1NTS1ERFxuICAgIHNlY3Rpb24gU2VjdGlvblxuICAgIEEgdGFzayAgICAgICAgICAgOmExLCAyMDE0LTAxLTAxLCAzMGRcbiAgICBBbm90aGVyIHRhc2sgICAgIDphZnRlciBhMSAgLCAyMGRcbiAgICBzZWN0aW9uIEFub3RoZXJcbiAgICBUYXNrIGluIHNlYyAgICAgIDoyMDE0LTAxLTEyICAsIDEyZFxuICAgIGFub3RoZXIgdGFzayAgICAgIDogMjRkXG4gICAgICAgICAgICBgLFxuICAgICdQaWUgQ2hhcnQnOiBgcGllIHRpdGxlIFBldHMgYWRvcHRlZCBieSB2b2x1bnRlZXJzXG4gICAgXCJEb2dzXCIgOiAzODZcbiAgICBcIkNhdHNcIiA6IDg1XG4gICAgXCJSYXRzXCIgOiAxNVxuICAgICAgICAgICAgYCxcbiAgICAnRVIgRGlhZ3JhbSc6IGBlckRpYWdyYW1cbiAgICAgICAgICBDVVNUT01FUiB9fC4ufHsgREVMSVZFUlktQUREUkVTUyA6IGhhc1xuICAgICAgICAgIENVU1RPTUVSIHx8LS1veyBPUkRFUiA6IHBsYWNlc1xuICAgICAgICAgIENVU1RPTUVSIHx8LS1veyBJTlZPSUNFIDogXCJsaWFibGUgZm9yXCJcbiAgICAgICAgICBERUxJVkVSWS1BRERSRVNTIHx8LS1veyBPUkRFUiA6IHJlY2VpdmVzXG4gICAgICAgICAgSU5WT0lDRSB8fC0tfHsgT1JERVIgOiBjb3ZlcnNcbiAgICAgICAgICBPUkRFUiB8fC0tfHsgT1JERVItSVRFTSA6IGluY2x1ZGVzXG4gICAgICAgICAgUFJPRFVDVC1DQVRFR09SWSB8fC0tfHsgUFJPRFVDVCA6IGNvbnRhaW5zXG4gICAgICAgICAgUFJPRFVDVCB8fC0tb3sgT1JERVItSVRFTSA6IFwib3JkZXJlZCBpblwiXG4gICAgICAgICAgICBgLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGxvYWRTYW1wbGVEaWFncmFtKGRpYWdyYW1UeXBlKSB7XG4gICAgdG9VcGRhdGVDb2RlU3RvcmUoc2FtcGxlc1tkaWFncmFtVHlwZV0pO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9VcGRhdGVDb2RlU3RvcmUoY29kZSkge1xuICAgIGlmICghY29kZSkgcmV0dXJuO1xuICAgIHVwZGF0ZUNvZGUoY29kZSwgdHJ1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiByZWxhdGl2ZVRpbWUodCkge1xuICAgIHJldHVybiBgJHttb21lbnQodCkuZnJvbU5vdygpfSAoJHtuZXcgRGF0ZSh0KS50b0xvY2FsZVN0cmluZygpfSlgO1xuICB9XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuICAjYm9keSB7XG4gICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmY2ZiZmM7XG4gIH1cbiAgI2VkaXRvci1yb290IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICAjY29sMSB7XG4gICAgd2lkdGg6IDM1JTtcbiAgfVxuICAjY29sMiB7XG4gICAgd2lkdGg6IDY1JTtcbiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gIH1cbiAgI2xpbmstcm9vdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICB9XG4gICNsaW5rLWNvbDEge1xuICAgIHdpZHRoOiA1MCU7XG4gIH1cbiAgI2xpbmstY29sMiB7XG4gICAgd2lkdGg6IDUwJTtcbiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gIH1cbiAgI2FwcC10aXRsZSB7XG4gICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7XG4gICAgZm9udC1zaXplOiAzMnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGNvbG9yOiAjMWU2MGFiO1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuICAjdGl0bGUtY29udGFpbmVyIHtcbiAgICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gICAgbWFyZ2luOiAwIGF1dG8gOHB4O1xuICB9XG4gICNwb3dlciB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiA0cmVtO1xuICB9XG4gICNzYW1wbGVMb2FkZXIge1xuICAgIHBhZGRpbmctbGVmdDogMTBweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRncmF5O1xuICB9XG4gICNoaXN0b3J5TG9hZGVyU3ViVGl0bGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBjb2xvcjogIzMzYTJjNDtcbiAgICBmb250LXNpemU6IHNtYWxsO1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgfVxuICAuYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG4gIC5idXR0b24tc3R5bGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNhMmQ5ZTI7XG4gICAgY29sb3I6ICMzM2EyYzQ7XG4gICAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2EyZDllMjtcbiAgICBtYXJnaW46IDAuMjVyZW07XG4gIH1cbiAgLmJ1dHRvbi1zdHlsZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICBjb2xvcjogIzMzYTJjNDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjMzNhMmM0O1xuICB9XG4gIC5idXR0b24tc3R5bGU6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cbiAgLmxpbmstc3R5bGUge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogIzMzYTJjNDtcbiAgfVxuPC9zdHlsZT5cblxuPGRpdiBpZD1cImJvZHlcIj5cbiAgPGRpdiBpZD1cInRpdGxlLWNvbnRhaW5lclwiPlxuICAgIDxoMSBpZD1cImFwcC10aXRsZVwiPk1lcm1haWQgTGl2ZSBFZGl0b3I8L2gxPlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cInNhbXBsZUxvYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8c3BhbiBpZD1cInNhbXBsZUxvYWRlclRpdGxlXCI+PHN0cm9uZz5EaWFncmFtIHByZXNldHM6PC9zdHJvbmc+PC9zcGFuPlxuICAgICAgeyNlYWNoIE9iamVjdC5rZXlzKHNhbXBsZXMpIGFzIGRpYWdyYW1UeXBlLCBpfVxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24tc3R5bGVcIlxuICAgICAgICAgIG9uOmNsaWNrPXsoZSkgPT4gbG9hZFNhbXBsZURpYWdyYW0oZGlhZ3JhbVR5cGUpfT5cbiAgICAgICAgICB7ZGlhZ3JhbVR5cGV9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgey9lYWNofVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cImVkaXRvci1yb290XCI+XG4gICAgPGRpdiBpZD1cImNvbDFcIj5cbiAgICAgIDxDYXJkIHRpdGxlPVwiQ29kZVwiIG5vUGFkZGluZz1cInRydWVcIj5cbiAgICAgICAgPEVkaXRvciBkYXRhPXtwYXJhbXMuZGF0YX0gLz5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxDYXJkIHRpdGxlPVwiTWVybWFpZCBDb25maWd1cmF0aW9uXCI+XG4gICAgICAgIDxDb25maWcgLz5cbiAgICAgIDwvQ2FyZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGlkPVwiY29sMlwiPlxuICAgICAgPENhcmQgdGl0bGU9XCJQcmV2aWV3XCI+XG4gICAgICAgIDxWaWV3IC8+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8ZGl2IGlkPVwibGluay1yb290XCI+XG4gICAgICAgIDxkaXYgaWQ9XCJsaW5rLWNvbDFcIj5cbiAgICAgICAgICA8Q2FyZCB0aXRsZT1cIkVkaXRpbmcgaGlzdG9yeVwiPlxuICAgICAgICAgICAgPHNwYW4gaWQ9XCJoaXN0b3J5TG9hZGVyU3ViVGl0bGVcIlxuICAgICAgICAgICAgICA+QXV0b21hdGljYWxseSBzYXZlcyBvbmNlIGV2ZXJ5IG1pbnV0ZSwgdXAgdG8gMTAgcmVjb3Jkcy48L3NwYW4+XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIDxkaXYgaWQ9XCJoaXN0b3J5TGlzdFwiIGNsYXNzPVwiYnV0dG9uLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICB7I2lmIGhpc3RvcnlMaXN0Lmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgeyNlYWNoIGhpc3RvcnlMaXN0IGFzIGl0ZW0sIGl9XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uLXN0eWxlXCJcbiAgICAgICAgICAgICAgICAgICAgb246Y2xpY2s9eyhlKSA9PiB0b1VwZGF0ZUNvZGVTdG9yZShpdGVtLmNvZGUpfT5cbiAgICAgICAgICAgICAgICAgICAge3JlbGF0aXZlVGltZShpdGVtLnRpbWUpfVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgey9lYWNofVxuICAgICAgICAgICAgICB7OmVsc2V9Tm8gcmVjb3Jkcy57L2lmfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICAgIDxDYXJkIHRpdGxlPVwiTGlua3NcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tc3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vbWVybWFpZC1qcy5naXRodWIuaW8vbWVybWFpZC8jL24wMGItZ2V0dGluZ1N0YXJ0ZWRcIlxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGluay1zdHlsZVwiPlxuICAgICAgICAgICAgICAgICAgTWVybWFpZCBEb2N1bWVudGF0aW9uXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1zdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL21lcm1haWQtanMvbWVybWFpZC9ibG9iL21hc3Rlci9kb2NzL2dldHRpbmctc3RhcnRlZC9UdXRvcmlhbHMubWRcIlxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGluay1zdHlsZVwiPlxuICAgICAgICAgICAgICAgICAgTGl2ZSBFZGl0b3IgVmlkZW8gVHV0b3JpYWxzXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1zdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL21lcm1haWQtanMvbWVybWFpZFwiXG4gICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsaW5rLXN0eWxlXCI+XG4gICAgICAgICAgICAgICAgICBNZXJtYWlkIG9uIEdpdEh1YlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24tc3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9tZXJtYWlkLWpzL21lcm1haWQtbGl2ZS1lZGl0b3JcIlxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGluay1zdHlsZVwiPlxuICAgICAgICAgICAgICAgICAgTGl2ZSBFZGl0b3Igb24gR2l0SHViXG4gICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbi1zdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL21lcm1haWQtanMvbWVybWFpZC1jbGlcIlxuICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGluay1zdHlsZVwiPlxuICAgICAgICAgICAgICAgICAgTWVybWFpZCBDTElcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cImxpbmstY29sMlwiPlxuICAgICAgICAgIDxDYXJkIHRpdGxlPVwiQWN0aW9uc1wiPlxuICAgICAgICAgICAgPExpbmtzIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cInBvd2VyXCI+XG4gICAgUG93ZXJlZCBieSBtZXJtYWlkXG4gICAgPFRhZyBjb2xvcj1cImdyZWVuXCI+e21lcm1haWRWZXJzaW9ufTwvVGFnPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThJRSxLQUFLLGNBQUMsQ0FBQyxBQUNMLFdBQVcsQ0FBRSxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQ2pDLGdCQUFnQixDQUFFLE9BQU8sQUFDM0IsQ0FBQyxBQUNELFlBQVksY0FBQyxDQUFDLEFBQ1osT0FBTyxDQUFFLElBQUksQ0FDYixNQUFNLENBQUUsSUFBSSxBQUNkLENBQUMsQUFDRCxLQUFLLGNBQUMsQ0FBQyxBQUNMLEtBQUssQ0FBRSxHQUFHLEFBQ1osQ0FBQyxBQUNELEtBQUssY0FBQyxDQUFDLEFBQ0wsS0FBSyxDQUFFLEdBQUcsQ0FDVixZQUFZLENBQUUsSUFBSSxBQUNwQixDQUFDLEFBQ0QsVUFBVSxjQUFDLENBQUMsQUFDVixPQUFPLENBQUUsSUFBSSxDQUNiLE1BQU0sQ0FBRSxXQUFXLEFBQ3JCLENBQUMsQUFDRCxVQUFVLGNBQUMsQ0FBQyxBQUNWLEtBQUssQ0FBRSxHQUFHLEFBQ1osQ0FBQyxBQUNELFVBQVUsY0FBQyxDQUFDLEFBQ1YsS0FBSyxDQUFFLEdBQUcsQ0FDVixZQUFZLENBQUUsSUFBSSxBQUNwQixDQUFDLEFBQ0QsVUFBVSxjQUFDLENBQUMsQUFDVixXQUFXLENBQUUsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQ3RDLFNBQVMsQ0FBRSxJQUFJLENBQ2YsV0FBVyxDQUFFLEdBQUcsQ0FDaEIsTUFBTSxDQUFFLENBQUMsQ0FDVCxLQUFLLENBQUUsT0FBTyxDQUNkLE9BQU8sQ0FBRSxHQUFHLEFBQ2QsQ0FBQyxBQUNELGdCQUFnQixjQUFDLENBQUMsQUFDaEIsS0FBSyxDQUFFLFdBQVcsQ0FDbEIsTUFBTSxDQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxBQUNwQixDQUFDLEFBQ0QsTUFBTSxjQUFDLENBQUMsQUFDTixLQUFLLENBQUUsSUFBSSxDQUNYLE9BQU8sQ0FBRSxJQUFJLENBQ2IsZUFBZSxDQUFFLFFBQVEsQ0FDekIsV0FBVyxDQUFFLE1BQU0sQ0FDbkIsTUFBTSxDQUFFLElBQUksQUFDZCxDQUFDLEFBQ0QsYUFBYSxjQUFDLENBQUMsQUFDYixZQUFZLENBQUUsSUFBSSxDQUNsQixhQUFhLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEFBQ3BDLENBQUMsQUFDRCxzQkFBc0IsY0FBQyxDQUFDLEFBQ3RCLE9BQU8sQ0FBRSxZQUFZLENBQ3JCLEtBQUssQ0FBRSxPQUFPLENBQ2QsU0FBUyxDQUFFLEtBQUssQ0FDaEIsVUFBVSxDQUFFLE1BQU0sQUFDcEIsQ0FBQyxBQUNELGlCQUFpQixjQUFDLENBQUMsQUFDakIsT0FBTyxDQUFFLElBQUksQ0FDYixXQUFXLENBQUUsTUFBTSxDQUNuQixjQUFjLENBQUUsR0FBRyxDQUNuQixTQUFTLENBQUUsSUFBSSxBQUNqQixDQUFDLEFBQ0QsYUFBYSxjQUFDLENBQUMsQUFDYixnQkFBZ0IsQ0FBRSxPQUFPLENBQ3pCLEtBQUssQ0FBRSxPQUFPLENBQ2QsYUFBYSxDQUFFLE9BQU8sQ0FDdEIsT0FBTyxDQUFFLE1BQU0sQ0FDZixNQUFNLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ3pCLE1BQU0sQ0FBRSxPQUFPLEFBQ2pCLENBQUMsQUFDRCwyQkFBYSxNQUFNLEFBQUMsQ0FBQyxBQUNuQixnQkFBZ0IsQ0FBRSxJQUFJLENBQ3RCLEtBQUssQ0FBRSxPQUFPLENBQ2QsTUFBTSxDQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxBQUMzQixDQUFDLEFBQ0QsMkJBQWEsTUFBTSxBQUFDLENBQUMsQUFDbkIsT0FBTyxDQUFFLElBQUksQUFDZixDQUFDLEFBQ0QsV0FBVyxjQUFDLENBQUMsQUFDWCxlQUFlLENBQUUsSUFBSSxDQUNyQixLQUFLLENBQUUsT0FBTyxBQUNoQixDQUFDIn0=*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/Edit.svelte\"],\"names\":[],\"mappings\":\"AA8IE,oBAAO,gCAC4B,CACjC,wBAAyB,CAC1B,2BACa,YACC,CACb,WAAY,CACb,oBACM,SACK,CACX,oBACM,SACK,CACV,iBAAkB,CACnB,yBACW,YACG,CACb,kBAAmB,CACpB,yBACW,SACA,CACX,yBACW,SACA,CACV,iBAAkB,CACnB,yBACW,qCAC4B,CACtC,cAAe,CACf,eAAgB,CAChB,QAAS,CACT,aAAc,CACd,WAAY,CACb,+BACiB,iBACE,CAClB,iBAAkB,CACnB,qBACO,UACK,CACX,YAAa,CACb,wBAAyB,CACzB,kBAAmB,CACnB,WAAY,CACb,4BACc,iBACK,CAClB,iCAAkC,CACnC,qCACuB,oBACD,CACrB,aAAc,CACd,eAAgB,CAChB,iBAAkB,CACnB,gCACkB,YACJ,CACb,kBAAmB,CACnB,kBAAmB,CACnB,cAAe,CAChB,4BACc,wBACY,CACzB,aAAc,CACd,qBAAsB,CACtB,cAAe,CACf,wBAAyB,CACzB,cAAe,CAChB,kCACoB,qBACG,CACtB,aAAc,CACd,wBAAyB,CAC1B,kCACoB,YACN,CACd,0BACY,oBACU,CACrB,aAAc;AA5NlB,ivcAAivc\",\"sourcesContent\":[\"<script>\\n import { onMount } from 'svelte';\\n import { codeStore, updateCode, updateCodeStore } from '../code-store.js';\\n import Editor from '../components/Editor.svelte';\\n import Config from '../components/Config.svelte';\\n import View from '../components/View.svelte';\\n import Card from '../components/Card.svelte';\\n import Tag from '../components/Tag.svelte';\\n import Links from '../components/Links.svelte';\\n import { fromUrl } from '../code-store.js';\\n import pkg from '@mermaid/package.json';\\n import moment from 'moment';\\n export let mermaidVersion = pkg.version;\\n let historyList = [];\\n onMount(async () => {\\n ga('send', 'pageview');\\n ga('send', 'event', 'version', mermaidVersion, mermaidVersion);\\n\\n const historyListKey = '_mermaid_history_';\\n historyList = JSON.parse(localStorage.getItem(historyListKey) || '[]');\\n let hisCode =\\n historyList.length > 0 ? historyList[historyList.length - 1] : null;\\n\\n if (params.data) {\\n fromUrl(params.data);\\n } else if (hisCode) {\\n updateCodeStore({\\n code: hisCode.code,\\n mermaid: {},\\n updateEditor: true,\\n });\\n } else {\\n loadSampleDiagram('Flow Chart');\\n }\\n\\n let code = null;\\n codeStore.subscribe((state) => {\\n code = (state && state.code) || code;\\n });\\n\\n setInterval(() => {\\n if (code != hisCode) {\\n //save history\\n historyList.unshift({\\n time: new Date().toISOString(),\\n code: (hisCode = code),\\n });\\n if (historyList.length > 10) {\\n historyList.pop();\\n }\\n localStorage.setItem(historyListKey, JSON.stringify(historyList));\\n }\\n historyList = historyList; //triggered update\\n }, 1 * 60 * 1000);\\n });\\n\\n export let params = {};\\n const samples = {\\n 'Flow Chart': `graph TD\\n A[Christmas] -->|Get money| B(Go shopping)\\n B --> C{Let me think}\\n C -->|One| D[Laptop]\\n C -->|Two| E[iPhone]\\n C -->|Three| F[fa:fa-car Car]`,\\n 'Sequence Diagram': `sequenceDiagram\\n Alice->>+John: Hello John, how are you?\\n Alice->>+John: John, can you hear me?\\n John-->>-Alice: Hi Alice, I can hear you!\\n John-->>-Alice: I feel great!\\n `,\\n 'Class Diagram': `classDiagram\\n Animal <|-- Duck\\n Animal <|-- Fish\\n Animal <|-- Zebra\\n Animal : +int age\\n Animal : +String gender\\n Animal: +isMammal()\\n Animal: +mate()\\n class Duck{\\n +String beakColor\\n +swim()\\n +quack()\\n }\\n class Fish{\\n -int sizeInFeet\\n -canEat()\\n }\\n class Zebra{\\n +bool is_wild\\n +run()\\n }\\n `,\\n 'State Diagram': `stateDiagram-v2\\n [*] --> Still\\n Still --> [*]\\n Still --> Moving\\n Moving --> Still\\n Moving --> Crash\\n Crash --> [*]\\n `,\\n 'Gantt Chart': `gantt\\n title A Gantt Diagram\\n dateFormat YYYY-MM-DD\\n section Section\\n A task :a1, 2014-01-01, 30d\\n Another task :after a1 , 20d\\n section Another\\n Task in sec :2014-01-12 , 12d\\n another task : 24d\\n `,\\n 'Pie Chart': `pie title Pets adopted by volunteers\\n \\\"Dogs\\\" : 386\\n \\\"Cats\\\" : 85\\n \\\"Rats\\\" : 15\\n `,\\n 'ER Diagram': `erDiagram\\n CUSTOMER }|..|{ DELIVERY-ADDRESS : has\\n CUSTOMER ||--o{ ORDER : places\\n CUSTOMER ||--o{ INVOICE : \\\"liable for\\\"\\n DELIVERY-ADDRESS ||--o{ ORDER : receives\\n INVOICE ||--|{ ORDER : covers\\n ORDER ||--|{ ORDER-ITEM : includes\\n PRODUCT-CATEGORY ||--|{ PRODUCT : contains\\n PRODUCT ||--o{ ORDER-ITEM : \\\"ordered in\\\"\\n `,\\n };\\n\\n function loadSampleDiagram(diagramType) {\\n toUpdateCodeStore(samples[diagramType]);\\n }\\n\\n function toUpdateCodeStore(code) {\\n if (!code) return;\\n updateCode(code, true);\\n }\\n\\n function relativeTime(t) {\\n return `${moment(t).fromNow()} (${new Date(t).toLocaleString()})`;\\n }\\n</script>\\n\\n<style>\\n #body {\\n font-family: 'Roboto', sans-serif;\\n background-color: #fcfbfc;\\n }\\n #editor-root {\\n display: flex;\\n height: 100%;\\n }\\n #col1 {\\n width: 35%;\\n }\\n #col2 {\\n width: 65%;\\n padding-left: 32px;\\n }\\n #link-root {\\n display: flex;\\n height: fit-content;\\n }\\n #link-col1 {\\n width: 50%;\\n }\\n #link-col2 {\\n width: 50%;\\n padding-left: 32px;\\n }\\n #app-title {\\n font-family: 'Playfair Display', serif;\\n font-size: 32px;\\n font-weight: 700;\\n margin: 0;\\n color: #1e60ab;\\n opacity: 0.8;\\n }\\n #title-container {\\n width: fit-content;\\n margin: 0 auto 8px;\\n }\\n #power {\\n width: 100%;\\n display: flex;\\n justify-content: flex-end;\\n align-items: center;\\n height: 4rem;\\n }\\n #sampleLoader {\\n padding-left: 10px;\\n border-bottom: 1px solid lightgray;\\n }\\n #historyLoaderSubTitle {\\n display: inline-block;\\n color: #33a2c4;\\n font-size: small;\\n font-style: italic;\\n }\\n .button-container {\\n display: flex;\\n align-items: center;\\n flex-direction: row;\\n flex-wrap: wrap;\\n }\\n .button-style {\\n background-color: #a2d9e2;\\n color: #33a2c4;\\n border-radius: 0.25rem;\\n padding: 0.5rem;\\n border: 1px solid #a2d9e2;\\n margin: 0.25rem;\\n }\\n .button-style:hover {\\n background-color: #fff;\\n color: #33a2c4;\\n border: 1px solid #33a2c4;\\n }\\n .button-style:focus {\\n outline: none;\\n }\\n .link-style {\\n text-decoration: none;\\n color: #33a2c4;\\n }\\n</style>\\n\\n<div id=\\\"body\\\">\\n <div id=\\\"title-container\\\">\\n <h1 id=\\\"app-title\\\">Mermaid Live Editor</h1>\\n </div>\\n <div id=\\\"sampleLoader\\\">\\n <div class=\\\"button-container\\\">\\n <span id=\\\"sampleLoaderTitle\\\"><strong>Diagram presets:</strong></span>\\n {#each Object.keys(samples) as diagramType, i}\\n <button\\n class=\\\"button-style\\\"\\n on:click={(e) => loadSampleDiagram(diagramType)}>\\n {diagramType}\\n </button>\\n {/each}\\n </div>\\n </div>\\n <div id=\\\"editor-root\\\">\\n <div id=\\\"col1\\\">\\n <Card title=\\\"Code\\\" noPadding=\\\"true\\\">\\n <Editor data={params.data} />\\n </Card>\\n <Card title=\\\"Mermaid Configuration\\\">\\n <Config />\\n </Card>\\n </div>\\n <div id=\\\"col2\\\">\\n <Card title=\\\"Preview\\\">\\n <View />\\n </Card>\\n <div id=\\\"link-root\\\">\\n <div id=\\\"link-col1\\\">\\n <Card title=\\\"Editing history\\\">\\n <span id=\\\"historyLoaderSubTitle\\\"\\n >Automatically saves once every minute, up to 10 records.</span>\\n <br />\\n <div id=\\\"historyList\\\" class=\\\"button-container\\\">\\n {#if historyList.length > 0}\\n {#each historyList as item, i}\\n <button\\n class=\\\"button-style\\\"\\n on:click={(e) => toUpdateCodeStore(item.code)}>\\n {relativeTime(item.time)}\\n </button>\\n {/each}\\n {:else}No records.{/if}\\n </div>\\n </Card>\\n <Card title=\\\"Links\\\">\\n <div class=\\\"button-container\\\">\\n <button class=\\\"button-style\\\">\\n <a\\n href=\\\"https://mermaid-js.github.io/mermaid/#/n00b-gettingStarted\\\"\\n target=\\\"_blank\\\"\\n class=\\\"link-style\\\">\\n Mermaid Documentation\\n </a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a\\n href=\\\"https://github.com/mermaid-js/mermaid/blob/master/docs/getting-started/Tutorials.md\\\"\\n target=\\\"_blank\\\"\\n class=\\\"link-style\\\">\\n Live Editor Video Tutorials\\n </a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a\\n href=\\\"https://github.com/mermaid-js/mermaid\\\"\\n target=\\\"_blank\\\"\\n class=\\\"link-style\\\">\\n Mermaid on GitHub\\n </a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a\\n href=\\\"https://github.com/mermaid-js/mermaid-live-editor\\\"\\n target=\\\"_blank\\\"\\n class=\\\"link-style\\\">\\n Live Editor on GitHub\\n </a>\\n </button>\\n <button class=\\\"button-style\\\">\\n <a\\n href=\\\"https://github.com/mermaid-js/mermaid-cli\\\"\\n target=\\\"_blank\\\"\\n class=\\\"link-style\\\">\\n Mermaid CLI\\n </a>\\n </button>\\n </div>\\n </Card>\\n </div>\\n <div id=\\\"link-col2\\\">\\n <Card title=\\\"Actions\\\">\\n <Links />\\n </Card>\\n </div>\\n </div>\\n </div>\\n </div>\\n <div id=\\\"power\\\">\\n Powered by mermaid\\n <Tag color=\\\"green\\\">{mermaidVersion}</Tag>\\n </div>\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"#view-page.svelte-clxwlp{display:flex;height:100%}\\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmlldy5zdmVsdGUiLCJzb3VyY2VzIjpbIlZpZXcuc3ZlbHRlIl0sInNvdXJjZXNDb250ZW50IjpbIjxzY3JpcHQ+XG4gIGltcG9ydCB7IG9uTW91bnQgfSBmcm9tICdzdmVsdGUnO1xuICBpbXBvcnQgVmlldyBmcm9tICcuLi9jb21wb25lbnRzL1ZpZXcuc3ZlbHRlJztcblxuICBvbk1vdW50KGFzeW5jICgpID0+IHtcbiAgICBnYSgnc2VuZCcsICdwYWdldmlldycpO1xuICB9KTtcbjwvc2NyaXB0PlxuXG48c3R5bGU+XG4gICN2aWV3LXBhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG48L3N0eWxlPlxuXG48ZGl2IGlkPVwidmlldy1wYWdlXCI+XG4gIDxWaWV3IC8+XG48L2Rpdj5cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVRSxVQUFVLGNBQUMsQ0FBQyxBQUNWLE9BQU8sQ0FBRSxJQUFJLENBQ2IsTUFBTSxDQUFFLElBQUksQUFDZCxDQUFDIn0=*/\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/routes/View.svelte\"],\"names\":[],\"mappings\":\"AAUE,yBAAY,YACG,CACb,WAAY;AAXhB,yrBAAyrB\",\"sourcesContent\":[\"<script>\\n import { onMount } from 'svelte';\\n import View from '../components/View.svelte';\\n\\n onMount(async () => {\\n ga('send', 'pageview');\\n });\\n</script>\\n\\n<style>\\n #view-page {\\n display: flex;\\n height: 100%;\\n }\\n</style>\\n\\n<div id=\\\"view-page\\\">\\n <View />\\n</div>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n}\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisect(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n}\n","export default function(x) {\n return x;\n}\n","export {default as bisect, bisectRight, bisectLeft} from \"./bisect\";\nexport {default as ascending} from \"./ascending\";\nexport {default as bisector} from \"./bisector\";\nexport {default as cross} from \"./cross\";\nexport {default as descending} from \"./descending\";\nexport {default as deviation} from \"./deviation\";\nexport {default as extent} from \"./extent\";\nexport {default as histogram} from \"./histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./threshold/scott\";\nexport {default as thresholdSturges} from \"./threshold/sturges\";\nexport {default as max} from \"./max\";\nexport {default as mean} from \"./mean\";\nexport {default as median} from \"./median\";\nexport {default as merge} from \"./merge\";\nexport {default as min} from \"./min\";\nexport {default as pairs} from \"./pairs\";\nexport {default as permute} from \"./permute\";\nexport {default as quantile} from \"./quantile\";\nexport {default as range} from \"./range\";\nexport {default as scan} from \"./scan\";\nexport {default as shuffle} from \"./shuffle\";\nexport {default as sum} from \"./sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks\";\nexport {default as transpose} from \"./transpose\";\nexport {default as variance} from \"./variance\";\nexport {default as zip} from \"./zip\";\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n","export default function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n}\n\nexport function pair(a, b) {\n return [a, b];\n}\n","export default function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n}\n","export default function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","export default function(x) {\n return x;\n}\n","export {\n axisTop,\n axisRight,\n axisBottom,\n axisLeft\n} from \"./axis\";\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.selection) {\n group\n .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n return (!clean && that.__brush.emitter) || new Emitter(that, args);\n }\n\n function Emitter(that, args) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\n return this;\n },\n brush: function() {\n this.emit(\"brush\");\n return this;\n },\n end: function() {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n return this;\n },\n emit: function(type) {\n customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function started() {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n state.selection = selection = [\n [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n ];\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(that);\n if (shifting && !lockX && !lockY) {\n if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n else lockX = true;\n }\n point = point1;\n moving = true;\n noevent();\n move();\n }\n\n function move() {\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush();\n }\n }\n\n function ended() {\n nopropagation();\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end();\n }\n\n function keydowned() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n\n function keyupped() {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent();\n }\n }\n\n function touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(target, type, selection) {\n this.target = target;\n this.type = type;\n this.selection = selection;\n}\n","export {\n default as brush,\n brushX,\n brushY,\n brushSelection\n} from \"./brush.js\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export var slice = Array.prototype.slice;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n return function(a, b) {\n return compare(\n a.source.value + a.target.value,\n b.source.value + b.target.value\n );\n };\n}\n\nexport default function() {\n var padAngle = 0,\n sortGroups = null,\n sortSubgroups = null,\n sortChords = null;\n\n function chord(matrix) {\n var n = matrix.length,\n groupSums = [],\n groupIndex = range(n),\n subgroupIndex = [],\n chords = [],\n groups = chords.groups = new Array(n),\n subgroups = new Array(n * n),\n k,\n x,\n x0,\n dx,\n i,\n j;\n\n // Compute the sum.\n k = 0, i = -1; while (++i < n) {\n x = 0, j = -1; while (++j < n) {\n x += matrix[i][j];\n }\n groupSums.push(x);\n subgroupIndex.push(range(n));\n k += x;\n }\n\n // Sort groups…\n if (sortGroups) groupIndex.sort(function(a, b) {\n return sortGroups(groupSums[a], groupSums[b]);\n });\n\n // Sort subgroups…\n if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n d.sort(function(a, b) {\n return sortSubgroups(matrix[i][a], matrix[i][b]);\n });\n });\n\n // Convert the sum to scaling factor for [0, 2pi].\n // TODO Allow start and end angle to be specified?\n // TODO Allow padding to be specified as percentage?\n k = max(0, tau - padAngle * n) / k;\n dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n x = 0, i = -1; while (++i < n) {\n x0 = x, j = -1; while (++j < n) {\n var di = groupIndex[i],\n dj = subgroupIndex[di][j],\n v = matrix[di][dj],\n a0 = x,\n a1 = x += v * k;\n subgroups[dj * n + di] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v\n };\n }\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di]\n };\n x += dx;\n }\n\n // Generate chords for each (non-empty) subgroup-subgroup link.\n i = -1; while (++i < n) {\n j = i - 1; while (++j < n) {\n var source = subgroups[j * n + i],\n target = subgroups[i * n + j];\n if (source.value || target.value) {\n chords.push(source.value < target.value\n ? {source: target, target: source}\n : {source: source, target: target});\n }\n }\n }\n\n return sortChords ? chords.sort(sortChords) : chords;\n }\n\n chord.padAngle = function(_) {\n return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n };\n\n chord.sortGroups = function(_) {\n return arguments.length ? (sortGroups = _, chord) : sortGroups;\n };\n\n chord.sortSubgroups = function(_) {\n return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n };\n\n chord.sortChords = function(_) {\n return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n };\n\n return chord;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export {default as chord} from \"./chord\";\nexport {default as ribbon} from \"./ribbon\";\n","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nexport default function() {\n var source = defaultSource,\n target = defaultTarget,\n radius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n argv = slice.call(arguments),\n s = source.apply(this, argv),\n t = target.apply(this, argv),\n sr = +radius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n sx0 = sr * cos(sa0),\n sy0 = sr * sin(sa0),\n tr = +radius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n context.moveTo(sx0, sy0);\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n context.quadraticCurveTo(0, 0, sx0, sy0);\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n ribbon.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n","export default function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n}\n","export {default as nest} from \"./nest\";\nexport {default as set} from \"./set\";\nexport {default as map} from \"./map\";\nexport {default as keys} from \"./keys\";\nexport {default as values} from \"./values\";\nexport {default as entries} from \"./entries\";\n","export default function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map, depth) {\n if (++depth > keys.length) return map;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map.entries();\n else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n}\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map, key, value) {\n map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nexport default set;\n","export default function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? new Rgb(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? new Rgb((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\nvar A = -0.14861,\n B = +1.78277,\n C = -0.29227,\n D = -0.90649,\n E = +1.97294,\n ED = E * D,\n EB = E * B,\n BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {deg2rad, rad2deg} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n Xn = 0.96422,\n Yn = 1,\n Zn = 0.82521,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) return hcl2lab(o);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = rgb2lrgb(o.r),\n g = rgb2lrgb(o.g),\n b = rgb2lrgb(o.b),\n y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n if (r === g && g === b) x = z = y; else {\n x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n }\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n x = Xn * lab2xyz(x);\n y = Yn * lab2xyz(y);\n z = Zn * lab2xyz(z);\n return new Rgb(\n lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return hcl2lab(this).rgb();\n }\n}));\n","export var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n return a - b;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var j = 0; j < m; ++j) {\n for (var i = 0, sr = 0; i < n + r; ++i) {\n if (i < n) {\n sr += source.data[i + j * n];\n }\n if (i >= r) {\n if (i >= w) {\n sr -= source.data[i - w + j * n];\n }\n target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n }\n }\n }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n var n = source.width,\n m = source.height,\n w = (r << 1) + 1;\n for (var i = 0; i < n; ++i) {\n for (var j = 0, sr = 0; j < m + r; ++j) {\n if (j < m) {\n sr += source.data[i + j * n];\n }\n if (j >= r) {\n if (j >= w) {\n sr -= source.data[i + (j - w) * n];\n }\n target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n }\n }\n }\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var domain = extent(values), start = domain[0], stop = domain[1];\n tz = tickStep(start, stop, tz);\n tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(function(value) {\n return contour(values, value);\n });\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n var polygons = [],\n holes = [];\n\n isorings(values, value, function(ring) {\n smooth(ring, values, value);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = values[0] >= value;\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[x + 1] >= value;\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = values[y * dx + dx] >= value;\n t2 = values[y * dx] >= value;\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = values[y * dx + x + 1] >= value;\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v0,\n v1 = values[yt * dx + xt];\n if (x > 0 && x < dx && xt === x) {\n v0 = values[yt * dx + xt - 1];\n point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n }\n if (y > 0 && y < dy && yt === y) {\n v0 = values[(yt - 1) * dx + xt];\n point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function density(data) {\n var values0 = new Float32Array(n * m),\n values1 = new Float32Array(n * m);\n\n data.forEach(function(d, i, data) {\n var xi = (+x(d, i, data) + o) >> k,\n yi = (+y(d, i, data) + o) >> k,\n wi = +weight(d, i, data);\n if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n values0[xi + yi * n] += wi;\n }\n });\n\n // TODO Optimize.\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n var tz = threshold(values0);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n var stop = max(values0);\n tz = tickStep(0, stop, tz);\n tz = range(0, Math.floor(stop / tz) * tz, tz);\n tz.shift();\n }\n\n return contours()\n .thresholds(tz)\n .size([n, m])\n (values0)\n .map(transform);\n }\n\n function transform(geometry) {\n geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n };\n\n return density;\n}\n","export {default as contours} from \"./contours\";\nexport {default as contourDensity} from \"./density\";\n","export default function() {}\n","var noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export {default as dispatch} from \"./dispatch.js\";\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n var filter = defaultFilter,\n container = defaultContainer,\n subject = defaultSubject,\n touchable = defaultTouchable,\n gestures = {},\n listeners = dispatch(\"start\", \"drag\", \"end\"),\n active = 0,\n mousedownx,\n mousedowny,\n mousemoving,\n touchending,\n clickDistance2 = 0;\n\n function drag(selection) {\n selection\n .on(\"mousedown.drag\", mousedowned)\n .filter(touchable)\n .on(\"touchstart.drag\", touchstarted)\n .on(\"touchmove.drag\", touchmoved)\n .on(\"touchend.drag touchcancel.drag\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n if (!gesture) return;\n select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n nodrag(event.view);\n nopropagation();\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\");\n }\n\n function mousemoved() {\n noevent();\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\");\n }\n\n function mouseupped() {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent();\n gestures.mouse(\"end\");\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.changedTouches,\n c = container.apply(this, arguments),\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n nopropagation();\n gesture(\"start\");\n }\n }\n }\n\n function touchmoved() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent();\n gesture(\"drag\");\n }\n }\n }\n\n function touchended() {\n var touches = event.changedTouches,\n n = touches.length, i, gesture;\n\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation();\n gesture(\"end\");\n }\n }\n }\n\n function beforestart(id, container, point, that, args) {\n var p = point(container, id), s, dx, dy,\n sublisteners = listeners.copy();\n\n if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n if ((event.subject = s = subject.apply(that, args)) == null) return false;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return true;\n })) return;\n\n return function gesture(type) {\n var p0 = p, n;\n switch (type) {\n case \"start\": gestures[id] = gesture, n = active++; break;\n case \"end\": delete gestures[id], --active; // nobreak\n case \"drag\": p = point(container, id), n = active; break;\n }\n customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n };\n }\n\n drag.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n };\n\n drag.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n };\n\n drag.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n };\n\n drag.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n };\n\n drag.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag : value;\n };\n\n drag.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n };\n\n return drag;\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n this.target = target;\n this.type = type;\n this.subject = subject;\n this.identifier = id;\n this.active = active;\n this.x = x;\n this.y = y;\n this.dx = dx;\n this.dy = dy;\n this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\n","export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export default function autoType(object) {\n for (var key in object) {\n var value = object[key].trim(), number, m;\n if (!value) value = null;\n else if (value === \"true\") value = true;\n else if (value === \"false\") value = false;\n else if (value === \"NaN\") value = NaN;\n else if (!isNaN(number = +value)) value = number;\n else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n value = new Date(value);\n }\n else continue;\n object[key] = value;\n }\n return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","var EOL = {},\n EOF = {},\n QUOTE = 34,\n NEWLINE = 10,\n RETURN = 13;\n\nfunction objectConverter(columns) {\n return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n var object = objectConverter(columns);\n return function(row, i) {\n return f(object(row), i, columns);\n };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n var columnSet = Object.create(null),\n columns = [];\n\n rows.forEach(function(row) {\n for (var column in row) {\n if (!(column in columnSet)) {\n columns.push(columnSet[column] = column);\n }\n }\n });\n\n return columns;\n}\n\nfunction pad(value, width) {\n var s = value + \"\", length = s.length;\n return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n return year < 0 ? \"-\" + pad(-year, 6)\n : year > 9999 ? \"+\" + pad(year, 6)\n : pad(year, 4);\n}\n\nfunction formatDate(date) {\n var hours = date.getUTCHours(),\n minutes = date.getUTCMinutes(),\n seconds = date.getUTCSeconds(),\n milliseconds = date.getUTCMilliseconds();\n return isNaN(date) ? \"Invalid Date\"\n : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n : \"\");\n}\n\nexport default function(delimiter) {\n var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n DELIMITER = delimiter.charCodeAt(0);\n\n function parse(text, f) {\n var convert, columns, rows = parseRows(text, function(row, i) {\n if (convert) return convert(row, i - 1);\n columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n });\n rows.columns = columns || [];\n return rows;\n }\n\n function parseRows(text, f) {\n var rows = [], // output rows\n N = text.length,\n I = 0, // current character index\n n = 0, // current line number\n t, // current token\n eof = N <= 0, // current token followed by EOF?\n eol = false; // current token followed by EOL?\n\n // Strip the trailing newline.\n if (text.charCodeAt(N - 1) === NEWLINE) --N;\n if (text.charCodeAt(N - 1) === RETURN) --N;\n\n function token() {\n if (eof) return EOF;\n if (eol) return eol = false, EOL;\n\n // Unescape quotes.\n var i, j = I, c;\n if (text.charCodeAt(j) === QUOTE) {\n while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n if ((i = I) >= N) eof = true;\n else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n }\n\n // Find next delimiter or newline.\n while (I < N) {\n if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n else if (c !== DELIMITER) continue;\n return text.slice(j, i);\n }\n\n // Return last token before EOF.\n return eof = true, text.slice(j, N);\n }\n\n while ((t = token()) !== EOF) {\n var row = [];\n while (t !== EOL && t !== EOF) row.push(t), t = token();\n if (f && (row = f(row, n++)) == null) continue;\n rows.push(row);\n }\n\n return rows;\n }\n\n function preformatBody(rows, columns) {\n return rows.map(function(row) {\n return columns.map(function(column) {\n return formatValue(row[column]);\n }).join(delimiter);\n });\n }\n\n function format(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n }\n\n function formatBody(rows, columns) {\n if (columns == null) columns = inferColumns(rows);\n return preformatBody(rows, columns).join(\"\\n\");\n }\n\n function formatRows(rows) {\n return rows.map(formatRow).join(\"\\n\");\n }\n\n function formatRow(row) {\n return row.map(formatValue).join(delimiter);\n }\n\n function formatValue(value) {\n return value == null ? \"\"\n : value instanceof Date ? formatDate(value)\n : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n : value;\n }\n\n return {\n parse: parse,\n parseRows: parseRows,\n format: format,\n formatBody: formatBody,\n formatRows: formatRows,\n formatRow: formatRow,\n formatValue: formatValue\n };\n}\n","export {default as dsvFormat} from \"./dsv.js\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue} from \"./csv.js\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue} from \"./tsv.js\";\nexport {default as autoType} from \"./autoType.js\";\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","export function expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export {\n linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n quadInOut as easeQuad,\n quadIn as easeQuadIn,\n quadOut as easeQuadOut,\n quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n cubicInOut as easeCubic,\n cubicIn as easeCubicIn,\n cubicOut as easeCubicOut,\n cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n polyInOut as easePoly,\n polyIn as easePolyIn,\n polyOut as easePolyOut,\n polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n sinInOut as easeSin,\n sinIn as easeSinIn,\n sinOut as easeSinOut,\n sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n expInOut as easeExp,\n expIn as easeExpIn,\n expOut as easeExpOut,\n expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n circleInOut as easeCircle,\n circleIn as easeCircleIn,\n circleOut as easeCircleOut,\n circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n bounceOut as easeBounce,\n bounceIn as easeBounceIn,\n bounceOut as easeBounceOut,\n bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n backInOut as easeBack,\n backIn as easeBackIn,\n backOut as easeBackOut,\n backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n elasticOut as easeElastic,\n elasticIn as easeElasticIn,\n elasticOut as easeElasticOut,\n elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n","export function linear(t) {\n return +t;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","function responseBlob(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.blob();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseArrayBuffer);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n return function(input, init, row) {\n if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n return text(input, init).then(function(response) {\n return parse(response, row);\n });\n };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n var format = dsvFormat(delimiter);\n return text(input, init).then(function(response) {\n return format.parse(response, row);\n });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n return new Promise(function(resolve, reject) {\n var image = new Image;\n for (var key in init) image[key] = init[key];\n image.onerror = reject;\n image.onload = function() { resolve(image); };\n image.src = input;\n });\n}\n","export {default as blob} from \"./blob\";\nexport {default as buffer} from \"./buffer\";\nexport {default as dsv, csv, tsv} from \"./dsv\";\nexport {default as image} from \"./image\";\nexport {default as json} from \"./json\";\nexport {default as text} from \"./text\";\nexport {default as xml, html, svg} from \"./xml\";\n","function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n","function responseText(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n return response.text();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseText);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n return function(input, init) {\n return text(input, init).then(function(text) {\n return (new DOMParser).parseFromString(text, type);\n });\n };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n var nodes;\n\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force() {\n var i,\n n = nodes.length,\n node,\n sx = 0,\n sy = 0;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], sx += node.x, sy += node.y;\n }\n\n for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n node = nodes[i], node.x -= sx, node.y -= sy;\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export {default as forceCenter} from \"./center\";\nexport {default as forceCollide} from \"./collide\";\nexport {default as forceLink} from \"./link\";\nexport {default as forceManyBody} from \"./manyBody\";\nexport {default as forceRadial} from \"./radial\";\nexport {default as forceSimulation} from \"./simulation\";\nexport {default as forceX} from \"./x\";\nexport {default as forceY} from \"./y\";\n","export default function() {\n return (Math.random() - 0.5) * 1e-6;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"missing: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle();\n y = target.y + target.vy - source.y - source.vy || jiggle();\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = map(nodes, id),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n var nodes,\n node,\n alpha,\n strength = constant(-30),\n strengths,\n distanceMin2 = 1,\n distanceMax2 = Infinity,\n theta2 = 0.81;\n\n function force(_) {\n var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n strengths = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n }\n\n function accumulate(quad) {\n var strength = 0, q, c, weight = 0, x, y, i;\n\n // For internal nodes, accumulate forces from child quadrants.\n if (quad.length) {\n for (x = y = i = 0; i < 4; ++i) {\n if ((q = quad[i]) && (c = Math.abs(q.value))) {\n strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n }\n }\n quad.x = x / weight;\n quad.y = y / weight;\n }\n\n // For leaf nodes, accumulate forces from coincident quadrants.\n else {\n q = quad;\n q.x = q.data.x;\n q.y = q.data.y;\n do strength += strengths[q.data.index];\n while (q = q.next);\n }\n\n quad.value = strength;\n }\n\n function apply(quad, x1, _, x2) {\n if (!quad.value) return true;\n\n var x = quad.x - node.x,\n y = quad.y - node.y,\n w = x2 - x1,\n l = x * x + y * y;\n\n // Apply the Barnes-Hut approximation if possible.\n // Limit forces for very close nodes; randomize direction if coincident.\n if (w * w / theta2 < l) {\n if (l < distanceMax2) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n node.vx += x * quad.value * alpha / l;\n node.vy += y * quad.value * alpha / l;\n }\n return true;\n }\n\n // Otherwise, process points directly.\n else if (quad.length || l >= distanceMax2) return;\n\n // Limit forces for very close nodes; randomize direction if coincident.\n if (quad.data !== node || quad.next) {\n if (x === 0) x = jiggle(), l += x * x;\n if (y === 0) y = jiggle(), l += y * y;\n if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n }\n\n do if (quad.data !== node) {\n w = strengths[quad.data.index] * alpha / l;\n node.vx += x * w;\n node.vy += y * w;\n } while (quad = quad.next);\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.distanceMin = function(_) {\n return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n };\n\n force.distanceMax = function(_) {\n return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n };\n\n force.theta = function(_) {\n return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n var nodes,\n strength = constant(0.1),\n strengths,\n radiuses;\n\n if (typeof radius !== \"function\") radius = constant(+radius);\n if (x == null) x = 0;\n if (y == null) y = 0;\n\n function force(alpha) {\n for (var i = 0, n = nodes.length; i < n; ++i) {\n var node = nodes[i],\n dx = node.x - x || 1e-6,\n dy = node.y - y || 1e-6,\n r = Math.sqrt(dx * dx + dy * dy),\n k = (radiuses[i] - r) * strengths[i] * alpha / r;\n node.vx += dx * k;\n node.vy += dy * k;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n radiuses = new Array(n);\n for (i = 0; i < n; ++i) {\n radiuses[i] = +radius(nodes[i], i, nodes);\n strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _, initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = +_, force) : x;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = +_, force) : y;\n };\n\n return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\");\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.each(function (force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"],\n minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n return x;\n}\n","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n return new Adder;\n}\n\nfunction Adder() {\n this.reset();\n}\n\nAdder.prototype = {\n constructor: Adder,\n reset: function() {\n this.s = // rounded value\n this.t = 0; // exact error\n },\n add: function(y) {\n add(temp, y, this.t);\n add(this, temp.s, this.s);\n if (this.s) this.t += temp.t;\n else this.s = temp.t;\n },\n valueOf: function() {\n return this.s;\n }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n var x = adder.s = a + b,\n bv = x - a,\n av = x - bv;\n adder.t = (a - av) + (b - bv);\n}\n","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n lambda2, // previous lambda-coordinate\n lambda00, phi00, // first point\n p0, // previous 3D point\n deltaSum = adder(),\n ranges,\n range;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: boundsLineStart,\n lineEnd: boundsLineEnd,\n polygonStart: function() {\n boundsStream.point = boundsRingPoint;\n boundsStream.lineStart = boundsRingStart;\n boundsStream.lineEnd = boundsRingEnd;\n deltaSum.reset();\n areaStream.polygonStart();\n },\n polygonEnd: function() {\n areaStream.polygonEnd();\n boundsStream.point = boundsPoint;\n boundsStream.lineStart = boundsLineStart;\n boundsStream.lineEnd = boundsLineEnd;\n if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n else if (deltaSum > epsilon) phi1 = 90;\n else if (deltaSum < -epsilon) phi0 = -90;\n range[0] = lambda0, range[1] = lambda1;\n },\n sphere: function() {\n lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n }\n};\n\nfunction boundsPoint(lambda, phi) {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n var p = cartesian([lambda * radians, phi * radians]);\n if (p0) {\n var normal = cartesianCross(p0, p),\n equatorial = [normal[1], -normal[0], 0],\n inflection = cartesianCross(equatorial, normal);\n cartesianNormalizeInPlace(inflection);\n inflection = spherical(inflection);\n var delta = lambda - lambda2,\n sign = delta > 0 ? 1 : -1,\n lambdai = inflection[0] * degrees * sign,\n phii,\n antimeridian = abs(delta) > 180;\n if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = inflection[1] * degrees;\n if (phii > phi1) phi1 = phii;\n } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n phii = -inflection[1] * degrees;\n if (phii < phi0) phi0 = phii;\n } else {\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n }\n if (antimeridian) {\n if (lambda < lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n } else {\n if (lambda1 >= lambda0) {\n if (lambda < lambda0) lambda0 = lambda;\n if (lambda > lambda1) lambda1 = lambda;\n } else {\n if (lambda > lambda2) {\n if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n } else {\n if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n }\n }\n }\n } else {\n ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n }\n if (phi < phi0) phi0 = phi;\n if (phi > phi1) phi1 = phi;\n p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n range[0] = lambda0, range[1] = lambda1;\n boundsStream.point = boundsPoint;\n p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n if (p0) {\n var delta = lambda - lambda2;\n deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n } else {\n lambda00 = lambda, phi00 = phi;\n }\n areaStream.point(lambda, phi);\n linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n boundsRingPoint(lambda00, phi00);\n areaStream.lineEnd();\n if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n range[0] = lambda0, range[1] = lambda1;\n p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n var i, n, a, b, merged, deltaMax, delta;\n\n phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n ranges = [];\n stream(feature, boundsStream);\n\n // First, sort ranges by their minimum longitudes.\n if (n = ranges.length) {\n ranges.sort(rangeCompare);\n\n // Then, merge any ranges that overlap.\n for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n b = ranges[i];\n if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n } else {\n merged.push(a = b);\n }\n }\n\n // Finally, find the largest gap between the merged ranges.\n // The final bounding box will be the inverse of this gap.\n for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n b = merged[i];\n if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n }\n }\n\n ranges = range = null;\n\n return lambda0 === Infinity || phi0 === Infinity\n ? [[NaN, NaN], [NaN, NaN]]\n : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n X0, Y0, Z0,\n X1, Y1, Z1,\n X2, Y2, Z2,\n lambda00, phi00, // first point\n x0, y0, z0; // previous point\n\nvar centroidStream = {\n sphere: noop,\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n ++W0;\n X0 += (x - X0) / W0;\n Y0 += (y - Y0) / W0;\n Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidStream.point = centroidLinePoint;\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n centroidRingPoint(lambda00, phi00);\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n centroidStream.point = centroidRingPoint;\n var cosPhi = cos(phi);\n x0 = cosPhi * cos(lambda);\n y0 = cosPhi * sin(lambda);\n z0 = sin(phi);\n centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var cosPhi = cos(phi),\n x = cosPhi * cos(lambda),\n y = cosPhi * sin(lambda),\n z = sin(phi),\n cx = y0 * z - z0 * y,\n cy = z0 * x - x0 * z,\n cz = x0 * y - y0 * x,\n m = sqrt(cx * cx + cy * cy + cz * cz),\n w = asin(m), // line weight = angle\n v = m && -w / m; // area weight multiplier\n X2 += v * cx;\n Y2 += v * cy;\n Z2 += v * cz;\n W1 += w;\n X1 += w * (x0 + (x0 = x));\n Y1 += w * (y0 + (y0 = y));\n Z1 += w * (z0 + (z0 = z));\n centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n W0 = W1 =\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n stream(object, centroidStream);\n\n var x = X2,\n y = Y2,\n z = Z2,\n m = x * x + y * y + z * z;\n\n // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n if (m < epsilon2) {\n x = X1, y = Y1, z = Z1;\n // If the feature has zero length, fall back to arithmetic mean of point vectors.\n if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n m = x * x + y * y + z * z;\n // If the feature still has an undefined ccentroid, then return.\n if (m < epsilon2) return [NaN, NaN];\n }\n\n return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(6),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y) {\n line.push([x, y]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 6 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n // Handle degeneracies.\n // TODO ignore if not clipping polygons.\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n point1[0] += epsilon;\n point1[1] += epsilon;\n v = visible(point1[0], point1[1]);\n }\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1]);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n var x0 = 0,\n y0 = 0,\n x1 = 960,\n y1 = 500,\n cache,\n cacheStream,\n clip;\n\n return clip = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n },\n extent: function(_) {\n return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n }\n };\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n","import pointEqual from \"../pointEqual.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n // If the first and last points of a segment are coincident, then treat as a\n // closed ring. TODO if all rings are closed, then the winding order of the\n // exterior ring should be checked.\n if (pointEqual(p0, p1)) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n","export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n","export default function(x) {\n return x;\n}\n","export {default as geoArea} from \"./area.js\";\nexport {default as geoBounds} from \"./bounds.js\";\nexport {default as geoCentroid} from \"./centroid.js\";\nexport {default as geoCircle} from \"./circle.js\";\nexport {default as geoClipAntimeridian} from \"./clip/antimeridian.js\";\nexport {default as geoClipCircle} from \"./clip/circle.js\";\nexport {default as geoClipExtent} from \"./clip/extent.js\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoClipRectangle} from \"./clip/rectangle.js\";\nexport {default as geoContains} from \"./contains.js\";\nexport {default as geoDistance} from \"./distance.js\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./graticule.js\";\nexport {default as geoInterpolate} from \"./interpolate.js\";\nexport {default as geoLength} from \"./length.js\";\nexport {default as geoPath} from \"./path/index.js\";\nexport {default as geoAlbers} from \"./projection/albers.js\";\nexport {default as geoAlbersUsa} from \"./projection/albersUsa.js\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./projection/azimuthalEqualArea.js\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./projection/azimuthalEquidistant.js\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./projection/conicConformal.js\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./projection/conicEqualArea.js\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./projection/conicEquidistant.js\";\nexport {default as geoEqualEarth, equalEarthRaw as geoEqualEarthRaw} from \"./projection/equalEarth.js\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./projection/equirectangular.js\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./projection/gnomonic.js\";\nexport {default as geoIdentity} from \"./projection/identity.js\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./projection/index.js\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./projection/mercator.js\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./projection/naturalEarth1.js\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./projection/orthographic.js\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./projection/stereographic.js\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./projection/transverseMercator.js\";\nexport {default as geoRotation} from \"./rotation.js\";\nexport {default as geoStream} from \"./stream.js\";\nexport {default as geoTransform} from \"./transform.js\";\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n var x0 = a[0] * radians,\n y0 = a[1] * radians,\n x1 = b[0] * radians,\n y1 = b[1] * radians,\n cy0 = cos(y0),\n sy0 = sin(y0),\n cy1 = cos(y1),\n sy1 = sin(y1),\n kx0 = cy0 * cos(x0),\n ky0 = cy0 * sin(x0),\n kx1 = cy1 * cos(x1),\n ky1 = cy1 * sin(x1),\n d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n k = sin(d);\n\n var interpolate = d ? function(t) {\n var B = sin(t *= d) / k,\n A = sin(d - t) / k,\n x = A * kx0 + B * kx1,\n y = A * ky0 + B * ky1,\n z = A * sy0 + B * sy1;\n return [\n atan2(y, x) * degrees,\n atan2(z, sqrt(x * x + y * y)) * degrees\n ];\n } : function() {\n return [x0 * degrees, y0 * degrees];\n };\n\n interpolate.distance = d;\n\n return interpolate;\n}\n","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum.reset();\n stream(object, lengthStream);\n return +lengthSum;\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n areaRingSum = adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum.reset();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum.reset();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n var pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n return path.projection(projection).context(context);\n}\n","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum.reset();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n this._string = [];\n}\n\nPathString.prototype = {\n _radius: 4.5,\n _circle: circle(4.5),\n pointRadius: function(_) {\n if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n return this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._string.push(\"Z\");\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._string.push(\"M\", x, \",\", y);\n this._point = 1;\n break;\n }\n case 1: {\n this._string.push(\"L\", x, \",\", y);\n break;\n }\n default: {\n if (this._circle == null) this._circle = circle(this._radius);\n this._string.push(\"M\", x, \",\", y, this._circle);\n break;\n }\n }\n },\n result: function() {\n if (this._string.length) {\n var result = this._string.join(\"\");\n this._string = [];\n return result;\n } else {\n return null;\n }\n }\n};\n\nfunction circle(radius) {\n return \"m0,\" + radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n + \"z\";\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n if (abs(point[0]) <= pi)\n return point[0];\n else\n return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n sum.reset();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point’s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n return conicEqualArea()\n .parallels([29.5, 45.5])\n .scale(1070)\n .translate([480, 250])\n .rotate([96, 0])\n .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n var n = streams.length;\n return {\n point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n var cache,\n cacheStream,\n lower48 = albers(), lower48Point,\n alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n function albersUsa(coordinates) {\n var x = coordinates[0], y = coordinates[1];\n return point = null,\n (lower48Point.point(x, y), point)\n || (alaskaPoint.point(x, y), point)\n || (hawaiiPoint.point(x, y), point);\n }\n\n albersUsa.invert = function(coordinates) {\n var k = lower48.scale(),\n t = lower48.translate(),\n x = (coordinates[0] - t[0]) / k,\n y = (coordinates[1] - t[1]) / k;\n return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n : lower48).invert(coordinates);\n };\n\n albersUsa.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n };\n\n albersUsa.precision = function(_) {\n if (!arguments.length) return lower48.precision();\n lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n return reset();\n };\n\n albersUsa.scale = function(_) {\n if (!arguments.length) return lower48.scale();\n lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n return albersUsa.translate(lower48.translate());\n };\n\n albersUsa.translate = function(_) {\n if (!arguments.length) return lower48.translate();\n var k = lower48.scale(), x = +_[0], y = +_[1];\n\n lower48Point = lower48\n .translate(_)\n .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n .stream(pointStream);\n\n alaskaPoint = alaska\n .translate([x - 0.307 * k, y + 0.201 * k])\n .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n hawaiiPoint = hawaii\n .translate([x - 0.205 * k, y + 0.212 * k])\n .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n .stream(pointStream);\n\n return reset();\n };\n\n albersUsa.fitExtent = function(extent, object) {\n return fitExtent(albersUsa, extent, object);\n };\n\n albersUsa.fitSize = function(size, object) {\n return fitSize(albersUsa, size, object);\n };\n\n albersUsa.fitWidth = function(width, object) {\n return fitWidth(albersUsa, width, object);\n };\n\n albersUsa.fitHeight = function(height, object) {\n return fitHeight(albersUsa, height, object);\n };\n\n function reset() {\n cache = cacheStream = null;\n return albersUsa;\n }\n\n return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n return function(x, y) {\n var cx = cos(x),\n cy = cos(y),\n k = scale(cx * cy);\n return [\n k * cy * sin(x),\n k * sin(y)\n ];\n }\n}\n\nexport function azimuthalInvert(angle) {\n return function(x, y) {\n var z = sqrt(x * x + y * y),\n c = angle(z),\n sc = sin(c),\n cc = cos(c);\n return [\n atan2(x * sc, z * cc),\n asin(z && y * sc / z)\n ];\n }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n return 2 * asin(z / 2);\n});\n\nexport default function() {\n return projection(azimuthalEqualAreaRaw)\n .scale(124.75)\n .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n return z;\n});\n\nexport default function() {\n return projection(azimuthalEquidistantRaw)\n .scale(79.4188)\n .clipAngle(180 - 1e-3);\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n var phi0 = 0,\n phi1 = pi / 3,\n m = projectionMutator(projectAt),\n p = m(phi0, phi1);\n\n p.parallels = function(_) {\n return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n };\n\n return p;\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n f = cy0 * pow(tany(y0), n) / n;\n\n if (!n) return mercatorRaw;\n\n function project(x, y) {\n if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n var r = f / pow(tany(y), n);\n return [r * sin(n * x), f - r * cos(n * x)];\n }\n\n project.invert = function(x, y) {\n var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicConformalRaw)\n .scale(109.5)\n .parallels([30, 30]);\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n // Are the parallels symmetrical around the Equator?\n if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n function project(x, y) {\n var r = sqrt(c - 2 * n * sin(y)) / n;\n return [r * sin(x *= n), r0 - r * cos(x)];\n }\n\n project.invert = function(x, y) {\n var r0y = r0 - y;\n return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEqualAreaRaw)\n .scale(155.424)\n .center([0, 33.6442]);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n var cy0 = cos(y0),\n n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n g = cy0 / n + y0;\n\n if (abs(n) < epsilon) return equirectangularRaw;\n\n function project(x, y) {\n var gy = g - y, nx = n * x;\n return [gy * sin(nx), g - gy * cos(nx)];\n }\n\n project.invert = function(x, y) {\n var gy = g - y;\n return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n };\n\n return project;\n}\n\nexport default function() {\n return conicProjection(conicEquidistantRaw)\n .scale(131.154)\n .center([0, 13.9389]);\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n var cosPhi0 = cos(phi0);\n\n function forward(lambda, phi) {\n return [lambda * cosPhi0, sin(phi) / cosPhi0];\n }\n\n forward.invert = function(x, y) {\n return [x / cosPhi0, asin(y * cosPhi0)];\n };\n\n return forward;\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n A2 = -0.081106,\n A3 = 0.000893,\n A4 = 0.003796,\n M = sqrt(3) / 2,\n iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n return [\n lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n if (abs(delta) < epsilon2) break;\n }\n return [\n M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n asin(sin(l) / M)\n ];\n};\n\nexport default function() {\n return projection(equalEarthRaw)\n .scale(177.158);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n return projection(equirectangularRaw)\n .scale(152.63);\n}\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n var cy = cos(y), k = cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n return projection(gnomonicRaw)\n .scale(144.049)\n .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n point: function(x, y) {\n this.stream.point(x * kx + tx, y * ky + ty);\n }\n });\n}\n\nexport default function() {\n var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n x0 = null, y0, x1, y1, // clip extent\n postclip = identity,\n cache,\n cacheStream,\n projection;\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return projection = {\n stream: function(stream) {\n return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n },\n postclip: function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n },\n clipExtent: function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n },\n scale: function(_) {\n return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n },\n translate: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n },\n reflectX: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n },\n reflectY: function(_) {\n return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n },\n fitExtent: function(extent, object) {\n return fitExtent(projection, extent, object);\n },\n fitSize: function(size, object) {\n return fitSize(projection, size, object);\n },\n fitWidth: function(width, object) {\n return fitWidth(projection, width, object);\n },\n fitHeight: function(height, object) {\n return fitHeight(projection, height, object);\n }\n };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n function transform(x, y) {\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k, (dy - y) / k];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n return mercatorProjection(mercatorRaw)\n .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n var m = projection(project),\n center = m.center,\n scale = m.scale,\n translate = m.translate,\n clipExtent = m.clipExtent,\n x0 = null, y0, x1, y1; // clip extent\n\n m.scale = function(_) {\n return arguments.length ? (scale(_), reclip()) : scale();\n };\n\n m.translate = function(_) {\n return arguments.length ? (translate(_), reclip()) : translate();\n };\n\n m.center = function(_) {\n return arguments.length ? (center(_), reclip()) : center();\n };\n\n m.clipExtent = function(_) {\n return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n function reclip() {\n var k = pi * scale(),\n t = m(rotation(m.rotate()).invert([0, 0]));\n return clipExtent(x0 == null\n ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n }\n\n return reclip();\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n return projection(orthographicRaw)\n .scale(249.5)\n .clipAngle(90 + epsilon);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n var cy = cos(y), k = 1 + cos(x) * cy;\n return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n return 2 * atan(z);\n});\n\nexport default function() {\n return projection(stereographicRaw)\n .scale(250)\n .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n var m = mercatorProjection(transverseMercatorRaw),\n center = m.center,\n rotate = m.rotate;\n\n m.center = function(_) {\n return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n };\n\n m.rotate = function(_) {\n return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n };\n\n return rotate([0, 0, 90])\n .scale(159.155);\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n","function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n","export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n var m = array.length,\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m];\n array[m] = array[i];\n array[i] = t;\n }\n\n return array;\n}\n","function defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n return x + c.x;\n}\n\nfunction maxY(children) {\n return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n var children;\n while (children = node.children) node = children[0];\n return node;\n}\n\nfunction leafRight(node) {\n var children;\n while (children = node.children) node = children[children.length - 1];\n return node;\n}\n\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = false;\n\n function cluster(root) {\n var previousNode,\n x = 0;\n\n // First walk, computing the initial x & y values.\n root.eachAfter(function(node) {\n var children = node.children;\n if (children) {\n node.x = meanX(children);\n node.y = maxY(children);\n } else {\n node.x = previousNode ? x += separation(node, previousNode) : 0;\n node.y = 0;\n previousNode = node;\n }\n });\n\n var left = leafLeft(root),\n right = leafRight(root),\n x0 = left.x - separation(left, right) / 2,\n x1 = right.x + separation(right, left) / 2;\n\n // Second walk, normalizing x & y to the desired size.\n return root.eachAfter(nodeSize ? function(node) {\n node.x = (node.x - root.x) * dx;\n node.y = (root.y - node.y) * dy;\n } : function(node) {\n node.x = (node.x - x0) / (x1 - x0) * dx;\n node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n });\n }\n\n cluster.separation = function(x) {\n return arguments.length ? (separation = x, cluster) : separation;\n };\n\n cluster.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n };\n\n cluster.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n };\n\n return cluster;\n}\n","export function constantZero() {\n return 0;\n}\n\nexport default function(x) {\n return function() {\n return x;\n };\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export {default as cluster} from \"./cluster.js\";\nexport {default as hierarchy} from \"./hierarchy/index.js\";\nexport {default as pack} from \"./pack/index.js\";\nexport {default as packSiblings} from \"./pack/siblings.js\";\nexport {default as packEnclose} from \"./pack/enclose.js\";\nexport {default as partition} from \"./partition.js\";\nexport {default as stratify} from \"./stratify.js\";\nexport {default as tree} from \"./tree.js\";\nexport {default as treemap} from \"./treemap/index.js\";\nexport {default as treemapBinary} from \"./treemap/binary.js\";\nexport {default as treemapDice} from \"./treemap/dice.js\";\nexport {default as treemapSlice} from \"./treemap/slice.js\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice.js\";\nexport {default as treemapSquarify} from \"./treemap/squarify.js\";\nexport {default as treemapResquarify} from \"./treemap/resquarify.js\";\n","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n while (i < n) {\n p = circles[i];\n if (e && enclosesWeak(e, p)) ++i;\n else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n }\n\n return e;\n}\n\nfunction extendBasis(B, p) {\n var i, j;\n\n if (enclosesWeakAll(p, B)) return [p];\n\n // If we get here then B must have at least one element.\n for (i = 0; i < B.length; ++i) {\n if (enclosesNot(p, B[i])\n && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n return [B[i], p];\n }\n }\n\n // If we get here then B must have at least two elements.\n for (i = 0; i < B.length - 1; ++i) {\n for (j = i + 1; j < B.length; ++j) {\n if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n && enclosesNot(encloseBasis2(B[i], p), B[j])\n && enclosesNot(encloseBasis2(B[j], p), B[i])\n && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n return [B[i], B[j], p];\n }\n }\n }\n\n // If we get here then something is very wrong.\n throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n for (var i = 0; i < B.length; ++i) {\n if (!enclosesWeak(a, B[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction encloseBasis(B) {\n switch (B.length) {\n case 1: return encloseBasis1(B[0]);\n case 2: return encloseBasis2(B[0], B[1]);\n case 3: return encloseBasis3(B[0], B[1], B[2]);\n }\n}\n\nfunction encloseBasis1(a) {\n return {\n x: a.x,\n y: a.y,\n r: a.r\n };\n}\n\nfunction encloseBasis2(a, b) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n l = Math.sqrt(x21 * x21 + y21 * y21);\n return {\n x: (x1 + x2 + x21 / l * r21) / 2,\n y: (y1 + y2 + y21 / l * r21) / 2,\n r: (l + r1 + r2) / 2\n };\n}\n\nfunction encloseBasis3(a, b, c) {\n var x1 = a.x, y1 = a.y, r1 = a.r,\n x2 = b.x, y2 = b.y, r2 = b.r,\n x3 = c.x, y3 = c.y, r3 = c.r,\n a2 = x1 - x2,\n a3 = x1 - x3,\n b2 = y1 - y2,\n b3 = y1 - y3,\n c2 = r2 - r1,\n c3 = r3 - r1,\n d1 = x1 * x1 + y1 * y1 - r1 * r1,\n d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n ab = a3 * b2 - a2 * b3,\n xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n xb = (b3 * c2 - b2 * c3) / ab,\n ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n yb = (a2 * c3 - a3 * c2) / ab,\n A = xb * xb + yb * yb - 1,\n B = 2 * (r1 + xa * xb + ya * yb),\n C = xa * xa + ya * ya - r1 * r1,\n r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n return {\n x: x1 + xa + xb * r,\n y: y1 + ya + yb * r,\n r: r\n };\n}\n","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n return Math.sqrt(d.value);\n}\n\nexport default function() {\n var radius = null,\n dx = 1,\n dy = 1,\n padding = constantZero;\n\n function pack(root) {\n root.x = dx / 2, root.y = dy / 2;\n if (radius) {\n root.eachBefore(radiusLeaf(radius))\n .eachAfter(packChildren(padding, 0.5))\n .eachBefore(translateChild(1));\n } else {\n root.eachBefore(radiusLeaf(defaultRadius))\n .eachAfter(packChildren(constantZero, 1))\n .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n }\n return root;\n }\n\n pack.radius = function(x) {\n return arguments.length ? (radius = optional(x), pack) : radius;\n };\n\n pack.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n };\n\n pack.padding = function(x) {\n return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n };\n\n return pack;\n}\n\nfunction radiusLeaf(radius) {\n return function(node) {\n if (!node.children) {\n node.r = Math.max(0, +radius(node) || 0);\n }\n };\n}\n\nfunction packChildren(padding, k) {\n return function(node) {\n if (children = node.children) {\n var children,\n i,\n n = children.length,\n r = padding(node) * k || 0,\n e;\n\n if (r) for (i = 0; i < n; ++i) children[i].r += r;\n e = packEnclose(children);\n if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n node.r = e + r;\n }\n };\n}\n\nfunction translateChild(k) {\n return function(node) {\n var parent = node.parent;\n node.r *= k;\n if (parent) {\n node.x = parent.x + k * node.x;\n node.y = parent.y + k * node.y;\n }\n };\n}\n","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n var dx = b.x - a.x, x, a2,\n dy = b.y - a.y, y, b2,\n d2 = dx * dx + dy * dy;\n if (d2) {\n a2 = a.r + c.r, a2 *= a2;\n b2 = b.r + c.r, b2 *= b2;\n if (a2 > b2) {\n x = (d2 + b2 - a2) / (2 * d2);\n y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n c.x = b.x - x * dx - y * dy;\n c.y = b.y - x * dy + y * dx;\n } else {\n x = (d2 + a2 - b2) / (2 * d2);\n y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n c.x = a.x + x * dx - y * dy;\n c.y = a.y + x * dy + y * dx;\n }\n } else {\n c.x = a.x + c.r;\n c.y = a.y;\n }\n}\n\nfunction intersects(a, b) {\n var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n var a = node._,\n b = node.next._,\n ab = a.r + b.r,\n dx = (a.x * b.r + b.x * a.r) / ab,\n dy = (a.y * b.r + b.y * a.r) / ab;\n return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n this._ = circle;\n this.next = null;\n this.previous = null;\n}\n\nexport function packEnclose(circles) {\n if (!(n = circles.length)) return 0;\n\n var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n // Place the first circle.\n a = circles[0], a.x = 0, a.y = 0;\n if (!(n > 1)) return a.r;\n\n // Place the second circle.\n b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n if (!(n > 2)) return a.r + b.r;\n\n // Place the third circle.\n place(b, a, c = circles[2]);\n\n // Initialize the front-chain using the first three circles a, b and c.\n a = new Node(a), b = new Node(b), c = new Node(c);\n a.next = c.previous = b;\n b.next = a.previous = c;\n c.next = b.previous = a;\n\n // Attempt to place each remaining circle…\n pack: for (i = 3; i < n; ++i) {\n place(a._, b._, c = circles[i]), c = new Node(c);\n\n // Find the closest intersecting circle on the front-chain, if any.\n // “Closeness” is determined by linear distance along the front-chain.\n // “Ahead” or “behind” is likewise determined by linear distance.\n j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n do {\n if (sj <= sk) {\n if (intersects(j._, c._)) {\n b = j, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sj += j._.r, j = j.next;\n } else {\n if (intersects(k._, c._)) {\n a = k, a.next = b, b.previous = a, --i;\n continue pack;\n }\n sk += k._.r, k = k.previous;\n }\n } while (j !== k.next);\n\n // Success! Insert the new circle c between a and b.\n c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n // Compute the new closest circle pair to the centroid.\n aa = score(a);\n while ((c = c.next) !== b) {\n if ((ca = score(c)) < aa) {\n a = c, aa = ca;\n }\n }\n b = a.next;\n }\n\n // Compute the enclosing circle of the front chain.\n a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n // Translate the circles to put the enclosing circle around the origin.\n for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n return c.r;\n}\n\nexport default function(circles) {\n packEnclose(circles);\n return circles;\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n var dx = 1,\n dy = 1,\n padding = 0,\n round = false;\n\n function partition(root) {\n var n = root.height + 1;\n root.x0 =\n root.y0 = padding;\n root.x1 = dx;\n root.y1 = dy / n;\n root.eachBefore(positionNode(dy, n));\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(dy, n) {\n return function(node) {\n if (node.children) {\n treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n }\n var x0 = node.x0,\n y0 = node.y0,\n x1 = node.x1 - padding,\n y1 = node.y1 - padding;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n };\n }\n\n partition.round = function(x) {\n return arguments.length ? (round = !!x, partition) : round;\n };\n\n partition.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n };\n\n partition.padding = function(x) {\n return arguments.length ? (padding = +x, partition) : padding;\n };\n\n return partition;\n}\n","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n preroot = {depth: -1},\n ambiguous = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId;\n\n function stratify(data) {\n var d,\n i,\n n = data.length,\n root,\n parent,\n node,\n nodes = new Array(n),\n nodeId,\n nodeKey,\n nodeByKey = {};\n\n for (i = 0; i < n; ++i) {\n d = data[i], node = nodes[i] = new Node(d);\n if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = keyPrefix + (node.id = nodeId);\n nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i], nodeId = parentId(data[i], i, data);\n if (nodeId == null || !(nodeId += \"\")) {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n } else {\n parent = nodeByKey[keyPrefix + nodeId];\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = required(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = required(x), stratify) : parentId;\n };\n\n return stratify;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n i, n = nodes.length,\n sum, sums = new Array(n + 1);\n\n for (sums[0] = sum = i = 0; i < n; ++i) {\n sums[i + 1] = sum += nodes[i].value;\n }\n\n partition(0, n, parent.value, x0, y0, x1, y1);\n\n function partition(i, j, value, x0, y0, x1, y1) {\n if (i >= j - 1) {\n var node = nodes[i];\n node.x0 = x0, node.y0 = y0;\n node.x1 = x1, node.y1 = y1;\n return;\n }\n\n var valueOffset = sums[i],\n valueTarget = (value / 2) + valueOffset,\n k = i + 1,\n hi = j - 1;\n\n while (k < hi) {\n var mid = k + hi >>> 1;\n if (sums[mid] < valueTarget) k = mid + 1;\n else hi = mid;\n }\n\n if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n var valueLeft = sums[k] - valueOffset,\n valueRight = value - valueLeft;\n\n if ((x1 - x0) > (y1 - y0)) {\n var xk = (x0 * valueRight + x1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, xk, y1);\n partition(k, j, valueRight, xk, y0, x1, y1);\n } else {\n var yk = (y0 * valueRight + y1 * valueLeft) / value;\n partition(i, k, valueLeft, x0, y0, x1, yk);\n partition(k, j, valueRight, x0, yk, x1, y1);\n }\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n var tile = squarify,\n round = false,\n dx = 1,\n dy = 1,\n paddingStack = [0],\n paddingInner = constantZero,\n paddingTop = constantZero,\n paddingRight = constantZero,\n paddingBottom = constantZero,\n paddingLeft = constantZero;\n\n function treemap(root) {\n root.x0 =\n root.y0 = 0;\n root.x1 = dx;\n root.y1 = dy;\n root.eachBefore(positionNode);\n paddingStack = [0];\n if (round) root.eachBefore(roundNode);\n return root;\n }\n\n function positionNode(node) {\n var p = paddingStack[node.depth],\n x0 = node.x0 + p,\n y0 = node.y0 + p,\n x1 = node.x1 - p,\n y1 = node.y1 - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n node.x0 = x0;\n node.y0 = y0;\n node.x1 = x1;\n node.y1 = y1;\n if (node.children) {\n p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n x0 += paddingLeft(node) - p;\n y0 += paddingTop(node) - p;\n x1 -= paddingRight(node) - p;\n y1 -= paddingBottom(node) - p;\n if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n tile(node, x0, y0, x1, y1);\n }\n }\n\n treemap.round = function(x) {\n return arguments.length ? (round = !!x, treemap) : round;\n };\n\n treemap.size = function(x) {\n return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n };\n\n treemap.tile = function(x) {\n return arguments.length ? (tile = required(x), treemap) : tile;\n };\n\n treemap.padding = function(x) {\n return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n };\n\n treemap.paddingInner = function(x) {\n return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n };\n\n treemap.paddingOuter = function(x) {\n return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n };\n\n treemap.paddingTop = function(x) {\n return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n };\n\n treemap.paddingRight = function(x) {\n return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n };\n\n treemap.paddingBottom = function(x) {\n return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n };\n\n treemap.paddingLeft = function(x) {\n return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n };\n\n return treemap;\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n function resquarify(parent, x0, y0, x1, y1) {\n if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n var rows,\n row,\n nodes,\n i,\n j = -1,\n n,\n m = rows.length,\n value = parent.value;\n\n while (++j < m) {\n row = rows[j], nodes = row.children;\n for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n value -= row.value;\n }\n } else {\n parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n rows.ratio = ratio;\n }\n }\n\n resquarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return resquarify;\n})(phi);\n","export default function(node) {\n node.x0 = Math.round(node.x0);\n node.y0 = Math.round(node.y0);\n node.x1 = Math.round(node.x1);\n node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix(start, end) {\n var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix.gamma = cubehelixGamma;\n\n return cubehelix;\n })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n return function(start, end) {\n var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n c = color(start.c, end.c),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n return function(start, end) {\n var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n s = color(start.s, end.s),\n l = color(start.l, end.l),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n var i = hue(+a, +b);\n return function(t) {\n var x = i(t);\n return x - 360 * Math.floor(x / 360);\n };\n}\n","export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n a = color(start.a, end.a),\n b = color(start.b, end.b),\n opacity = color(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","export default function piecewise(interpolate, values) {\n var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n while (i < n) I[i] = interpolate(v, v = values[++i]);\n return function(t) {\n var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n return I[i](t - i);\n };\n}\n","export default function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n cssRoot,\n cssView,\n svgNode;\n\nexport function parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","var rho = Math.SQRT2,\n rho2 = 2,\n rho4 = 4,\n epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000;\n\n return i;\n}\n","export {default as path} from \"./path.js\";\n","var pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n a,\n b = polygon[n - 1],\n area = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n area += a[1] * b[0] - a[0] * b[1];\n }\n\n return area / 2;\n}\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n x = 0,\n y = 0,\n a,\n b = polygon[n - 1],\n c,\n k = 0;\n\n while (++i < n) {\n a = b;\n b = polygon[i];\n k += c = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * c;\n y += (a[1] + b[1]) * c;\n }\n\n return k *= 3, [x / k, y / k];\n}\n","export default function(polygon, point) {\n var n = polygon.length,\n p = polygon[n - 1],\n x = point[0], y = point[1],\n x0 = p[0], y0 = p[1],\n x1, y1,\n inside = false;\n\n for (var i = 0; i < n; ++i) {\n p = polygon[i], x1 = p[0], y1 = p[1];\n if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n x0 = x1, y0 = y1;\n }\n\n return inside;\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n var n = points.length,\n indexes = [0, 1],\n size = 2;\n\n for (var i = 2; i < n; ++i) {\n while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n indexes[size++] = i;\n }\n\n return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n if ((n = points.length) < 3) return null;\n\n var i,\n n,\n sortedPoints = new Array(n),\n flippedPoints = new Array(n);\n\n for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n sortedPoints.sort(lexicographicOrder);\n for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n var upperIndexes = computeUpperHullIndexes(sortedPoints),\n lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n // Construct the hull polygon, removing possible duplicate endpoints.\n var skipLeft = lowerIndexes[0] === upperIndexes[0],\n skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n hull = [];\n\n // Add upper hull in right-to-l order.\n // Then add lower hull in left-to-right order.\n for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n return hull;\n}\n","export {default as polygonArea} from \"./area.js\";\nexport {default as polygonCentroid} from \"./centroid.js\";\nexport {default as polygonHull} from \"./hull.js\";\nexport {default as polygonContains} from \"./contains.js\";\nexport {default as polygonLength} from \"./length.js\";\n","export default function(polygon) {\n var i = -1,\n n = polygon.length,\n b = polygon[n - 1],\n xa,\n ya,\n xb = b[0],\n yb = b[1],\n perimeter = 0;\n\n while (++i < n) {\n xa = xb;\n ya = yb;\n b = polygon[i];\n xb = b[0];\n yb = b[1];\n xa -= xb;\n ya -= yb;\n perimeter += Math.sqrt(xa * xa + ya * ya);\n }\n\n return perimeter;\n}\n","export default function(d) {\n var x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n","export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don’t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n","export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n","export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can’t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn’t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n","export {default as quadtree} from \"./quadtree.js\";\n","export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n","export default function() {\n return this._root;\n}\n","export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n","export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n function randomBates(n) {\n var randomIrwinHall = irwinHall.source(source)(n);\n return function() {\n return randomIrwinHall() / n;\n };\n }\n\n randomBates.source = sourceRandomBates;\n\n return randomBates;\n})(defaultSource);\n","export default function() {\n return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n function randomExponential(lambda) {\n return function() {\n return -Math.log(1 - source()) / lambda;\n };\n }\n\n randomExponential.source = sourceRandomExponential;\n\n return randomExponential;\n})(defaultSource);\n","export {default as randomUniform} from \"./uniform\";\nexport {default as randomNormal} from \"./normal\";\nexport {default as randomLogNormal} from \"./logNormal\";\nexport {default as randomBates} from \"./bates\";\nexport {default as randomIrwinHall} from \"./irwinHall\";\nexport {default as randomExponential} from \"./exponential\";\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n function randomIrwinHall(n) {\n return function() {\n for (var sum = 0, i = 0; i < n; ++i) sum += source();\n return sum;\n };\n }\n\n randomIrwinHall.source = sourceRandomIrwinHall;\n\n return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n function randomLogNormal() {\n var randomNormal = normal.source(source).apply(this, arguments);\n return function() {\n return Math.exp(randomNormal());\n };\n }\n\n randomLogNormal.source = sourceRandomLogNormal;\n\n return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n function randomNormal(mu, sigma) {\n var x, r;\n mu = mu == null ? 0 : +mu;\n sigma = sigma == null ? 1 : +sigma;\n return function() {\n var y;\n\n // If available, use the second previously-generated uniform random.\n if (x != null) y = x, x = null;\n\n // Otherwise, generate a new x and y.\n else do {\n x = source() * 2 - 1;\n y = source() * 2 - 1;\n r = x * x + y * y;\n } while (!r || r > 1);\n\n return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n };\n }\n\n randomNormal.source = sourceRandomNormal;\n\n return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n function randomUniform(min, max) {\n min = min == null ? 0 : +min;\n max = max == null ? 1 : +max;\n if (arguments.length === 1) max = min, min = 0;\n else max -= min;\n return function() {\n return source() * max + min;\n };\n }\n\n randomUniform.source = sourceRandomUniform;\n\n return randomUniform;\n})(defaultSource);\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"d8b365f5f5f55ab4ac\",\n \"a6611adfc27d80cdc1018571\",\n \"a6611adfc27df5f5f580cdc1018571\",\n \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"af8dc3f7f7f77fbf7b\",\n \"7b3294c2a5cfa6dba0008837\",\n \"7b3294c2a5cff7f7f7a6dba0008837\",\n \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e9a3c9f7f7f7a1d76a\",\n \"d01c8bf1b6dab8e1864dac26\",\n \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"998ec3f7f7f7f1a340\",\n \"5e3c99b2abd2fdb863e66101\",\n \"5e3c99b2abd2f7f7f7fdb863e66101\",\n \"542788998ec3d8daebfee0b6f1a340b35806\",\n \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62f7f7f767a9cf\",\n \"ca0020f4a58292c5de0571b0\",\n \"ca0020f4a582f7f7f792c5de0571b0\",\n \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ef8a62ffffff999999\",\n \"ca0020f4a582bababa404040\",\n \"ca0020f4a582ffffffbababa404040\",\n \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91bfdb\",\n \"d7191cfdae61abd9e92c7bb6\",\n \"d7191cfdae61ffffbfabd9e92c7bb6\",\n \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf91cf60\",\n \"d7191cfdae61a6d96a1a9641\",\n \"d7191cfdae61ffffbfa6d96a1a9641\",\n \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fc8d59ffffbf99d594\",\n \"d7191cfdae61abdda42b83ba\",\n \"d7191cfdae61ffffbfabdda42b83ba\",\n \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","export {default as schemeCategory10} from \"./categorical/category10.js\";\nexport {default as schemeAccent} from \"./categorical/Accent.js\";\nexport {default as schemeDark2} from \"./categorical/Dark2.js\";\nexport {default as schemePaired} from \"./categorical/Paired.js\";\nexport {default as schemePastel1} from \"./categorical/Pastel1.js\";\nexport {default as schemePastel2} from \"./categorical/Pastel2.js\";\nexport {default as schemeSet1} from \"./categorical/Set1.js\";\nexport {default as schemeSet2} from \"./categorical/Set2.js\";\nexport {default as schemeSet3} from \"./categorical/Set3.js\";\nexport {default as schemeTableau10} from \"./categorical/Tableau10.js\";\nexport {default as interpolateBrBG, scheme as schemeBrBG} from \"./diverging/BrBG.js\";\nexport {default as interpolatePRGn, scheme as schemePRGn} from \"./diverging/PRGn.js\";\nexport {default as interpolatePiYG, scheme as schemePiYG} from \"./diverging/PiYG.js\";\nexport {default as interpolatePuOr, scheme as schemePuOr} from \"./diverging/PuOr.js\";\nexport {default as interpolateRdBu, scheme as schemeRdBu} from \"./diverging/RdBu.js\";\nexport {default as interpolateRdGy, scheme as schemeRdGy} from \"./diverging/RdGy.js\";\nexport {default as interpolateRdYlBu, scheme as schemeRdYlBu} from \"./diverging/RdYlBu.js\";\nexport {default as interpolateRdYlGn, scheme as schemeRdYlGn} from \"./diverging/RdYlGn.js\";\nexport {default as interpolateSpectral, scheme as schemeSpectral} from \"./diverging/Spectral.js\";\nexport {default as interpolateBuGn, scheme as schemeBuGn} from \"./sequential-multi/BuGn.js\";\nexport {default as interpolateBuPu, scheme as schemeBuPu} from \"./sequential-multi/BuPu.js\";\nexport {default as interpolateGnBu, scheme as schemeGnBu} from \"./sequential-multi/GnBu.js\";\nexport {default as interpolateOrRd, scheme as schemeOrRd} from \"./sequential-multi/OrRd.js\";\nexport {default as interpolatePuBuGn, scheme as schemePuBuGn} from \"./sequential-multi/PuBuGn.js\";\nexport {default as interpolatePuBu, scheme as schemePuBu} from \"./sequential-multi/PuBu.js\";\nexport {default as interpolatePuRd, scheme as schemePuRd} from \"./sequential-multi/PuRd.js\";\nexport {default as interpolateRdPu, scheme as schemeRdPu} from \"./sequential-multi/RdPu.js\";\nexport {default as interpolateYlGnBu, scheme as schemeYlGnBu} from \"./sequential-multi/YlGnBu.js\";\nexport {default as interpolateYlGn, scheme as schemeYlGn} from \"./sequential-multi/YlGn.js\";\nexport {default as interpolateYlOrBr, scheme as schemeYlOrBr} from \"./sequential-multi/YlOrBr.js\";\nexport {default as interpolateYlOrRd, scheme as schemeYlOrRd} from \"./sequential-multi/YlOrRd.js\";\nexport {default as interpolateBlues, scheme as schemeBlues} from \"./sequential-single/Blues.js\";\nexport {default as interpolateGreens, scheme as schemeGreens} from \"./sequential-single/Greens.js\";\nexport {default as interpolateGreys, scheme as schemeGreys} from \"./sequential-single/Greys.js\";\nexport {default as interpolatePurples, scheme as schemePurples} from \"./sequential-single/Purples.js\";\nexport {default as interpolateReds, scheme as schemeReds} from \"./sequential-single/Reds.js\";\nexport {default as interpolateOranges, scheme as schemeOranges} from \"./sequential-single/Oranges.js\";\nexport {default as interpolateCividis} from \"./sequential-multi/cividis.js\";\nexport {default as interpolateCubehelixDefault} from \"./sequential-multi/cubehelix.js\";\nexport {default as interpolateRainbow, warm as interpolateWarm, cool as interpolateCool} from \"./sequential-multi/rainbow.js\";\nexport {default as interpolateSinebow} from \"./sequential-multi/sinebow.js\";\nexport {default as interpolateTurbo} from \"./sequential-multi/turbo.js\";\nexport {default as interpolateViridis, magma as interpolateMagma, inferno as interpolateInferno, plasma as interpolatePlasma} from \"./sequential-multi/viridis.js\";\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5f999d8c92ca25f\",\n \"edf8fbb2e2e266c2a4238b45\",\n \"edf8fbb2e2e266c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0ecf49ebcda8856a7\",\n \"edf8fbb3cde38c96c688419d\",\n \"edf8fbb3cde38c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e0f3dba8ddb543a2ca\",\n \"f0f9e8bae4bc7bccc42b8cbe\",\n \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee8c8fdbb84e34a33\",\n \"fef0d9fdcc8afc8d59d7301f\",\n \"fef0d9fdcc8afc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece7f2a6bddb2b8cbe\",\n \"f1eef6bdc9e174a9cf0570b0\",\n \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ece2f0a6bddb1c9099\",\n \"f6eff7bdc9e167a9cf02818a\",\n \"f6eff7bdc9e167a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e7e1efc994c7dd1c77\",\n \"f1eef6d7b5d8df65b0ce1256\",\n \"f1eef6d7b5d8df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fde0ddfa9fb5c51b8a\",\n \"feebe2fbb4b9f768a1ae017e\",\n \"feebe2fbb4b9f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f7fcb9addd8e31a354\",\n \"ffffccc2e69978c679238443\",\n \"ffffccc2e69978c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67931a354006837\",\n \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"edf8b17fcdbb2c7fb8\",\n \"ffffcca1dab441b6c4225ea8\",\n \"ffffcca1dab441b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fff7bcfec44fd95f0e\",\n \"ffffd4fed98efe9929cc4c02\",\n \"ffffd4fed98efe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929d95f0e993404\",\n \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"ffeda0feb24cf03b20\",\n \"ffffb2fecc5cfd8d3ce31a1c\",\n \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n pi_1_3 = Math.PI / 3,\n pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n var x;\n t = (0.5 - t) * Math.PI;\n c.r = 255 * (x = Math.sin(t)) * x;\n c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n return c + \"\";\n}\n","export default function(t) {\n t = Math.max(0, Math.min(1, t));\n return \"rgb(\"\n + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"e5f5e0a1d99b31a354\",\n \"edf8e9bae4b374c476238b45\",\n \"edf8e9bae4b374c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee6cefdae6be6550d\",\n \"feeddefdbe85fd8d3cd94701\",\n \"feeddefdbe85fd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"efedf5bcbddc756bb1\",\n \"f2f0f7cbc9e29e9ac86a51a3\",\n \"f2f0f7cbc9e29e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range[1] < range[0],\n start = range[reverse - 0],\n stop = range[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), range)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n var a = domain[0], b = domain[domain.length - 1], t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = slice.call(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous(transform, untransform) {\n return transformer()(transform, untransform);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 0.5,\n x2 = 1,\n t0,\n t1,\n t2,\n k10,\n k21,\n interpolator = identity,\n transform,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n return scale;\n };\n}\n\nexport default function diverging() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, diverging());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n scale.copy = function() {\n return copy(scale, divergingLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, divergingPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n var unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return identity(domain).unknown(unknown);\n };\n\n domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n return linearish(scale);\n}\n","export {\n default as scaleBand,\n point as scalePoint\n} from \"./band\";\n\nexport {\n default as scaleIdentity\n} from \"./identity\";\n\nexport {\n default as scaleLinear\n} from \"./linear\";\n\nexport {\n default as scaleLog\n} from \"./log\";\n\nexport {\n default as scaleSymlog\n} from \"./symlog\";\n\nexport {\n default as scaleOrdinal,\n implicit as scaleImplicit\n} from \"./ordinal\";\n\nexport {\n default as scalePow,\n sqrt as scaleSqrt\n} from \"./pow\";\n\nexport {\n default as scaleQuantile\n} from \"./quantile\";\n\nexport {\n default as scaleQuantize\n} from \"./quantize\";\n\nexport {\n default as scaleThreshold\n} from \"./threshold\";\n\nexport {\n default as scaleTime\n} from \"./time\";\n\nexport {\n default as scaleUtc\n} from \"./utcTime\";\n\nexport {\n default as scaleSequential,\n sequentialLog as scaleSequentialLog,\n sequentialPow as scaleSequentialPow,\n sequentialSqrt as scaleSequentialSqrt,\n sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential\";\n\nexport {\n default as scaleSequentialQuantile\n} from \"./sequentialQuantile\";\n\nexport {\n default as scaleDiverging,\n divergingLog as scaleDivergingLog,\n divergingPow as scaleDivergingPow,\n divergingSqrt as scaleDivergingSqrt,\n divergingSymlog as scaleDivergingSymlog\n} from \"./diverging\";\n\nexport {\n default as tickFormat\n} from \"./tickFormat\";\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.interpolator(domain); break;\n default: this.interpolator(interpolator).domain(domain); break;\n }\n return this;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous(identity, identity);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n return Math.log(x);\n}\n\nfunction transformExp(x) {\n return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nexport function loggish(transform) {\n var scale = transform(transformLog, transformExp),\n domain = scale.domain,\n base = 10,\n logs,\n pows;\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) {\n logs = reflect(logs), pows = reflect(pows);\n transform(transformLogn, transformExpn);\n } else {\n transform(transformLog, transformExp);\n }\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n return scale;\n}\n\nexport default function log() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, log()).base(scale.base());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","export default function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","export default function(x) {\n return +x;\n}\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n var index = map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n return function(x) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n };\n}\n\nfunction transformSqrt(x) {\n return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n var scale = transform(identity, identity),\n exponent = 1;\n\n function rescale() {\n return exponent === 1 ? transform(identity, identity)\n : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n : transform(transformPow(exponent), transformPow(1 / exponent));\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, rescale()) : exponent;\n };\n\n return linearish(scale);\n}\n\nexport default function pow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, pow()).exponent(scale.exponent());\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n\nexport function sqrt() {\n return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range = [0, 1],\n unknown;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : scale;\n };\n\n scale.thresholds = function() {\n return domain.slice();\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(linearish(scale), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n var x0 = 0,\n x1 = 1,\n t0,\n t1,\n k10,\n transform,\n interpolator = identity,\n clamp = false,\n unknown;\n\n function scale(x) {\n return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n }\n\n scale.domain = function(_) {\n return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t) {\n transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n return scale;\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .interpolator(source.interpolator())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport default function sequential() {\n var scale = linearish(transformer()(identity));\n\n scale.copy = function() {\n return copy(scale, sequential());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n var scale = loggish(transformer()).domain([1, 10]);\n\n scale.copy = function() {\n return copy(scale, sequentialLog()).base(scale.base());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialSymlog()).constant(scale.constant());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n var scale = powish(transformer());\n\n scale.copy = function() {\n return copy(scale, sequentialPow()).exponent(scale.exponent());\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n var domain = [],\n interpolator = identity;\n\n function scale(x) {\n if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return scale;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequentialQuantile(interpolator).domain(domain);\n };\n\n return initInterpolator.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n return function(x) {\n return Math.sign(x) * Math.log1p(Math.abs(x / c));\n };\n}\n\nfunction transformSymexp(c) {\n return function(x) {\n return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n };\n}\n\nexport function symlogish(transform) {\n var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n scale.constant = function(_) {\n return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n };\n\n return linearish(scale);\n}\n\nexport default function symlog() {\n var scale = symlogish(transformer());\n\n scale.copy = function() {\n return copy(scale, symlog()).constant(scale.constant());\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n var domain = [0.5],\n range = [0, 1],\n unknown,\n n = 1;\n\n function scale(x) {\n return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n durationMinute = durationSecond * 60,\n durationHour = durationMinute * 60,\n durationDay = durationHour * 24,\n durationWeek = durationDay * 7,\n durationMonth = durationDay * 30,\n durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n var scale = continuous(identity, identity),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = Math.max(tickStep(start, stop, interval), 1);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n };\n\n return scale;\n}\n\nexport default function() {\n return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n","var nextId = 0;\n\nexport default function local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n}\n","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","export default function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n}\n","import creator from \"../creator\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nexport default function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","export default function() {\n return !this.node();\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nexport default selection;\n","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n}\n","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!(\"onmouseenter\" in element)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = event; // Events can be reentrant (e.g., focus).\n event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n var event0 = event;\n event1.sourceEvent = event;\n event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n event = event0;\n }\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n}\n","import {Selection} from \"./index\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {event} from \"./selection/on\";\n\nexport default function() {\n var current = event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x0 = pointX,\n x1 = null,\n y0 = constant(0),\n y1 = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nexport default (function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n})(0.85);\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n})(0.5);\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nexport default function(context) {\n return new LinearClosed(context);\n}\n","function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","function Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nexport default function(context) {\n return new Natural(context);\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export {default as arc} from \"./arc.js\";\nexport {default as area} from \"./area.js\";\nexport {default as line} from \"./line.js\";\nexport {default as pie} from \"./pie.js\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial.js\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial.js\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial.js\";\nexport {linkHorizontal, linkVertical, linkRadial} from \"./link/index.js\";\n\nexport {default as symbol, symbols} from \"./symbol.js\";\nexport {default as symbolCircle} from \"./symbol/circle.js\";\nexport {default as symbolCross} from \"./symbol/cross.js\";\nexport {default as symbolDiamond} from \"./symbol/diamond.js\";\nexport {default as symbolSquare} from \"./symbol/square.js\";\nexport {default as symbolStar} from \"./symbol/star.js\";\nexport {default as symbolTriangle} from \"./symbol/triangle.js\";\nexport {default as symbolWye} from \"./symbol/wye.js\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed.js\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen.js\";\nexport {default as curveBasis} from \"./curve/basis.js\";\nexport {default as curveBundle} from \"./curve/bundle.js\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed.js\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen.js\";\nexport {default as curveCardinal} from \"./curve/cardinal.js\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed.js\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen.js\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom.js\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed.js\";\nexport {default as curveLinear} from \"./curve/linear.js\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone.js\";\nexport {default as curveNatural} from \"./curve/natural.js\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step.js\";\n\nexport {default as stack} from \"./stack.js\";\nexport {default as stackOffsetExpand} from \"./offset/expand.js\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging.js\";\nexport {default as stackOffsetNone} from \"./offset/none.js\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette.js\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle.js\";\nexport {default as stackOrderAppearance} from \"./order/appearance.js\";\nexport {default as stackOrderAscending} from \"./order/ascending.js\";\nexport {default as stackOrderDescending} from \"./order/descending.js\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut.js\";\nexport {default as stackOrderNone} from \"./order/none.js\";\nexport {default as stackOrderReverse} from \"./order/reverse.js\";\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nexport default function() {\n return lineRadial(line().curve(curveRadialLinear));\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = path();\n curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n return link(curveVertical);\n}\n\nexport function linkRadial() {\n var l = link(curveRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","export default function() {}\n","export default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = 0, d[1] = dy;\n }\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n}\n","export default function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var peaks = series.map(peak);\n return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n var sums = series.map(sum);\n return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = appearance(series),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n}\n","export default function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n return none(series).reverse();\n}\n","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","export default function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nexport default function() {\n var keys = constant([]),\n order = orderNone,\n offset = offsetNone,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n };\n\n return stack;\n}\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nexport default function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n","import {pi, tau} from \"../math.js\";\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n","export default {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n","var tan30 = Math.sqrt(1 / 3),\n tan30_2 = tan30 * 2;\n\nexport default {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n","export default {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n kx = Math.sin(tau / 10) * kr,\n ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n","var c = -0.5,\n s = Math.sqrt(3) / 2,\n k = 1 / Math.sqrt(12),\n a = (k / 2 + 1) * 3;\n\nexport default {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","export {\n default as timeInterval\n} from \"./interval.js\";\n\nexport {\n default as timeMillisecond,\n milliseconds as timeMilliseconds,\n default as utcMillisecond,\n milliseconds as utcMilliseconds\n} from \"./millisecond.js\";\n\nexport {\n default as timeSecond,\n seconds as timeSeconds,\n default as utcSecond,\n seconds as utcSeconds\n} from \"./second.js\";\n\nexport {\n default as timeMinute,\n minutes as timeMinutes\n} from \"./minute.js\";\n\nexport {\n default as timeHour,\n hours as timeHours\n} from \"./hour.js\";\n\nexport {\n default as timeDay,\n days as timeDays\n} from \"./day.js\";\n\nexport {\n sunday as timeWeek,\n sundays as timeWeeks,\n sunday as timeSunday,\n sundays as timeSundays,\n monday as timeMonday,\n mondays as timeMondays,\n tuesday as timeTuesday,\n tuesdays as timeTuesdays,\n wednesday as timeWednesday,\n wednesdays as timeWednesdays,\n thursday as timeThursday,\n thursdays as timeThursdays,\n friday as timeFriday,\n fridays as timeFridays,\n saturday as timeSaturday,\n saturdays as timeSaturdays\n} from \"./week.js\";\n\nexport {\n default as timeMonth,\n months as timeMonths\n} from \"./month.js\";\n\nexport {\n default as timeYear,\n years as timeYears\n} from \"./year.js\";\n\nexport {\n default as utcMinute,\n utcMinutes as utcMinutes\n} from \"./utcMinute.js\";\n\nexport {\n default as utcHour,\n utcHours as utcHours\n} from \"./utcHour.js\";\n\nexport {\n default as utcDay,\n utcDays as utcDays\n} from \"./utcDay.js\";\n\nexport {\n utcSunday as utcWeek,\n utcSundays as utcWeeks,\n utcSunday as utcSunday,\n utcSundays as utcSundays,\n utcMonday as utcMonday,\n utcMondays as utcMondays,\n utcTuesday as utcTuesday,\n utcTuesdays as utcTuesdays,\n utcWednesday as utcWednesday,\n utcWednesdays as utcWednesdays,\n utcThursday as utcThursday,\n utcThursdays as utcThursdays,\n utcFriday as utcFriday,\n utcFridays as utcFridays,\n utcSaturday as utcSaturday,\n utcSaturdays as utcSaturdays\n} from \"./utcWeek.js\";\n\nexport {\n default as utcMonth,\n utcMonths as utcMonths\n} from \"./utcMonth.js\";\n\nexport {\n default as utcYear,\n utcYears as utcYears\n} from \"./utcYear.js\";\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","export {\n now,\n timer,\n timerFlush\n} from \"./timer.js\";\n\nexport {\n default as timeout\n} from \"./timeout.js\";\n\nexport {\n default as interval\n} from \"./interval.js\";\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n}\n","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = now(), defaultTiming;\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n });\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n RedBlackNode(this);\n this.edge =\n this.site =\n this.circle = null;\n}\n\nfunction createBeach(site) {\n var beach = beachPool.pop() || new Beach;\n beach.site = site;\n return beach;\n}\n\nfunction detachBeach(beach) {\n detachCircle(beach);\n beaches.remove(beach);\n beachPool.push(beach);\n RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n var circle = beach.circle,\n x = circle.x,\n y = circle.cy,\n vertex = [x, y],\n previous = beach.P,\n next = beach.N,\n disappearing = [beach];\n\n detachBeach(beach);\n\n var lArc = previous;\n while (lArc.circle\n && Math.abs(x - lArc.circle.x) < epsilon\n && Math.abs(y - lArc.circle.cy) < epsilon) {\n previous = lArc.P;\n disappearing.unshift(lArc);\n detachBeach(lArc);\n lArc = previous;\n }\n\n disappearing.unshift(lArc);\n detachCircle(lArc);\n\n var rArc = next;\n while (rArc.circle\n && Math.abs(x - rArc.circle.x) < epsilon\n && Math.abs(y - rArc.circle.cy) < epsilon) {\n next = rArc.N;\n disappearing.push(rArc);\n detachBeach(rArc);\n rArc = next;\n }\n\n disappearing.push(rArc);\n detachCircle(rArc);\n\n var nArcs = disappearing.length,\n iArc;\n for (iArc = 1; iArc < nArcs; ++iArc) {\n rArc = disappearing[iArc];\n lArc = disappearing[iArc - 1];\n setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n }\n\n lArc = disappearing[0];\n rArc = disappearing[nArcs - 1];\n rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n var x = site[0],\n directrix = site[1],\n lArc,\n rArc,\n dxl,\n dxr,\n node = beaches._;\n\n while (node) {\n dxl = leftBreakPoint(node, directrix) - x;\n if (dxl > epsilon) node = node.L; else {\n dxr = x - rightBreakPoint(node, directrix);\n if (dxr > epsilon) {\n if (!node.R) {\n lArc = node;\n break;\n }\n node = node.R;\n } else {\n if (dxl > -epsilon) {\n lArc = node.P;\n rArc = node;\n } else if (dxr > -epsilon) {\n lArc = node;\n rArc = node.N;\n } else {\n lArc = rArc = node;\n }\n break;\n }\n }\n }\n\n createCell(site);\n var newArc = createBeach(site);\n beaches.insert(lArc, newArc);\n\n if (!lArc && !rArc) return;\n\n if (lArc === rArc) {\n detachCircle(lArc);\n rArc = createBeach(lArc.site);\n beaches.insert(newArc, rArc);\n newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n attachCircle(lArc);\n attachCircle(rArc);\n return;\n }\n\n if (!rArc) { // && lArc\n newArc.edge = createEdge(lArc.site, newArc.site);\n return;\n }\n\n // else lArc !== rArc\n detachCircle(lArc);\n detachCircle(rArc);\n\n var lSite = lArc.site,\n ax = lSite[0],\n ay = lSite[1],\n bx = site[0] - ax,\n by = site[1] - ay,\n rSite = rArc.site,\n cx = rSite[0] - ax,\n cy = rSite[1] - ay,\n d = 2 * (bx * cy - by * cx),\n hb = bx * bx + by * by,\n hc = cx * cx + cy * cy,\n vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n newArc.edge = createEdge(lSite, site, null, vertex);\n rArc.edge = createEdge(site, rSite, null, vertex);\n attachCircle(lArc);\n attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n var site = arc.site,\n rfocx = site[0],\n rfocy = site[1],\n pby2 = rfocy - directrix;\n\n if (!pby2) return rfocx;\n\n var lArc = arc.P;\n if (!lArc) return -Infinity;\n\n site = lArc.site;\n var lfocx = site[0],\n lfocy = site[1],\n plby2 = lfocy - directrix;\n\n if (!plby2) return lfocx;\n\n var hl = lfocx - rfocx,\n aby2 = 1 / pby2 - 1 / plby2,\n b = hl / plby2;\n\n if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n var rArc = arc.N;\n if (rArc) return leftBreakPoint(rArc, directrix);\n var site = arc.site;\n return site[1] === directrix ? site[0] : Infinity;\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n return cells[site.index] = {\n site: site,\n halfedges: []\n };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n var site = cell.site,\n va = edge.left,\n vb = edge.right;\n if (site === vb) vb = va, va = site;\n if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n if (site === va) va = edge[1], vb = edge[0];\n else va = edge[0], vb = edge[1];\n return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n var index = new Array(m),\n array = new Array(m);\n for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n index.sort(function(i, j) { return array[j] - array[i]; });\n for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n for (j = 0; j < m; ++j) halfedges[j] = array[j];\n }\n }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n var nCells = cells.length,\n iCell,\n cell,\n site,\n iHalfedge,\n halfedges,\n nHalfedges,\n start,\n startX,\n startY,\n end,\n endX,\n endY,\n cover = true;\n\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n halfedges = cell.halfedges;\n iHalfedge = halfedges.length;\n\n // Remove any dangling clipped edges.\n while (iHalfedge--) {\n if (!edges[halfedges[iHalfedge]]) {\n halfedges.splice(iHalfedge, 1);\n }\n }\n\n // Insert any border edges as necessary.\n iHalfedge = 0, nHalfedges = halfedges.length;\n while (iHalfedge < nHalfedges) {\n end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n : null)) - 1);\n ++nHalfedges;\n }\n }\n\n if (nHalfedges) cover = false;\n }\n }\n\n // If there weren’t any edges, have the closest site cover the extent.\n // It doesn’t matter which corner of the extent we measure!\n if (cover) {\n var dx, dy, d2, dc = Infinity;\n\n for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n site = cell.site;\n dx = site[0] - x0;\n dy = site[1] - y0;\n d2 = dx * dx + dy * dy;\n if (d2 < dc) dc = d2, cover = cell;\n }\n }\n\n if (cover) {\n var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n cover.halfedges.push(\n edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n edges.push(createBorderEdge(site, v01, v11)) - 1,\n edges.push(createBorderEdge(site, v11, v10)) - 1,\n edges.push(createBorderEdge(site, v10, v00)) - 1\n );\n }\n }\n\n // Lastly delete any cells with no edges; these were entirely clipped.\n for (iCell = 0; iCell < nCells; ++iCell) {\n if (cell = cells[iCell]) {\n if (!cell.halfedges.length) {\n delete cells[iCell];\n }\n }\n }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n RedBlackNode(this);\n this.x =\n this.y =\n this.arc =\n this.site =\n this.cy = null;\n}\n\nexport function attachCircle(arc) {\n var lArc = arc.P,\n rArc = arc.N;\n\n if (!lArc || !rArc) return;\n\n var lSite = lArc.site,\n cSite = arc.site,\n rSite = rArc.site;\n\n if (lSite === rSite) return;\n\n var bx = cSite[0],\n by = cSite[1],\n ax = lSite[0] - bx,\n ay = lSite[1] - by,\n cx = rSite[0] - bx,\n cy = rSite[1] - by;\n\n var d = 2 * (ax * cy - ay * cx);\n if (d >= -epsilon2) return;\n\n var ha = ax * ax + ay * ay,\n hc = cx * cx + cy * cy,\n x = (cy * ha - ay * hc) / d,\n y = (ax * hc - cx * ha) / d;\n\n var circle = circlePool.pop() || new Circle;\n circle.arc = arc;\n circle.site = cSite;\n circle.x = x + bx;\n circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n arc.circle = circle;\n\n var before = null,\n node = circles._;\n\n while (node) {\n if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n if (node.L) node = node.L;\n else { before = node.P; break; }\n } else {\n if (node.R) node = node.R;\n else { before = node; break; }\n }\n }\n\n circles.insert(before, circle);\n if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n var circle = arc.circle;\n if (circle) {\n if (!circle.P) firstCircle = circle.N;\n circles.remove(circle);\n circlePool.push(circle);\n RedBlackNode(circle);\n arc.circle = null;\n }\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n return b[1] - a[1]\n || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n var site = sites.sort(lexicographic).pop(),\n x,\n y,\n circle;\n\n edges = [];\n cells = new Array(sites.length);\n beaches = new RedBlackTree;\n circles = new RedBlackTree;\n\n while (true) {\n circle = firstCircle;\n if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n if (site[0] !== x || site[1] !== y) {\n addBeach(site);\n x = site[0], y = site[1];\n }\n site = sites.pop();\n } else if (circle) {\n removeBeach(circle.arc);\n } else {\n break;\n }\n }\n\n sortCellHalfedges();\n\n if (extent) {\n var x0 = +extent[0][0],\n y0 = +extent[0][1],\n x1 = +extent[1][0],\n y1 = +extent[1][1];\n clipEdges(x0, y0, x1, y1);\n clipCells(x0, y0, x1, y1);\n }\n\n this.edges = edges;\n this.cells = cells;\n\n beaches =\n circles =\n edges =\n cells = null;\n}\n\nDiagram.prototype = {\n constructor: Diagram,\n\n polygons: function() {\n var edges = this.edges;\n\n return this.cells.map(function(cell) {\n var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n polygon.data = cell.site.data;\n return polygon;\n });\n },\n\n triangles: function() {\n var triangles = [],\n edges = this.edges;\n\n this.cells.forEach(function(cell, i) {\n if (!(m = (halfedges = cell.halfedges).length)) return;\n var site = cell.site,\n halfedges,\n j = -1,\n m,\n s0,\n e1 = edges[halfedges[m - 1]],\n s1 = e1.left === site ? e1.right : e1.left;\n\n while (++j < m) {\n s0 = s1;\n e1 = edges[halfedges[j]];\n s1 = e1.left === site ? e1.right : e1.left;\n if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n triangles.push([site.data, s0.data, s1.data]);\n }\n }\n });\n\n return triangles;\n },\n\n links: function() {\n return this.edges.filter(function(edge) {\n return edge.right;\n }).map(function(edge) {\n return {\n source: edge.left.data,\n target: edge.right.data\n };\n });\n },\n\n find: function(x, y, radius) {\n var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n // Use the previously-found cell, or start with an arbitrary one.\n while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n // Traverse the half-edges to find a closer cell, if any.\n do {\n cell = that.cells[i0 = i1], i1 = null;\n cell.halfedges.forEach(function(e) {\n var edge = that.edges[e], v = edge.left;\n if ((v === cell.site || !v) && !(v = edge.right)) return;\n var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n if (v2 < d2) d2 = v2, i1 = v.index;\n });\n } while (i1 !== null);\n\n that._found = i0;\n\n return radius == null || d2 <= radius * radius ? cell.site : null;\n }\n}\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n var edge = [null, null],\n index = edges.push(edge) - 1;\n edge.left = left;\n edge.right = right;\n if (v0) setEdgeEnd(edge, left, right, v0);\n if (v1) setEdgeEnd(edge, right, left, v1);\n cells[left.index].halfedges.push(index);\n cells[right.index].halfedges.push(index);\n return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n var edge = [v0, v1];\n edge.left = left;\n return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n if (!edge[0] && !edge[1]) {\n edge[0] = vertex;\n edge.left = left;\n edge.right = right;\n } else if (edge.left === right) {\n edge[1] = vertex;\n } else {\n edge[0] = vertex;\n }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n var a = edge[0],\n b = edge[1],\n ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n var v1 = edge[1];\n if (v1) return true;\n\n var v0 = edge[0],\n left = edge.left,\n right = edge.right,\n lx = left[0],\n ly = left[1],\n rx = right[0],\n ry = right[1],\n fx = (lx + rx) / 2,\n fy = (ly + ry) / 2,\n fm,\n fb;\n\n if (ry === ly) {\n if (fx < x0 || fx >= x1) return;\n if (lx > rx) {\n if (!v0) v0 = [fx, y0];\n else if (v0[1] >= y1) return;\n v1 = [fx, y1];\n } else {\n if (!v0) v0 = [fx, y1];\n else if (v0[1] < y0) return;\n v1 = [fx, y0];\n }\n } else {\n fm = (lx - rx) / (ry - ly);\n fb = fy - fm * fx;\n if (fm < -1 || fm > 1) {\n if (lx > rx) {\n if (!v0) v0 = [(y0 - fb) / fm, y0];\n else if (v0[1] >= y1) return;\n v1 = [(y1 - fb) / fm, y1];\n } else {\n if (!v0) v0 = [(y1 - fb) / fm, y1];\n else if (v0[1] < y0) return;\n v1 = [(y0 - fb) / fm, y0];\n }\n } else {\n if (ly < ry) {\n if (!v0) v0 = [x0, fm * x0 + fb];\n else if (v0[0] >= x1) return;\n v1 = [x1, fm * x1 + fb];\n } else {\n if (!v0) v0 = [x1, fm * x1 + fb];\n else if (v0[0] < x0) return;\n v1 = [x0, fm * x0 + fb];\n }\n }\n }\n\n edge[0] = v0;\n edge[1] = v1;\n return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n var i = edges.length,\n edge;\n\n while (i--) {\n if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n || !clipEdge(edge, x0, y0, x1, y1)\n || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n delete edges[i];\n }\n }\n}\n","function RedBlackTree() {\n this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n node.U = // parent node\n node.C = // color - true for red, false for black\n node.L = // left node\n node.R = // right node\n node.P = // previous node\n node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n constructor: RedBlackTree,\n\n insert: function(after, node) {\n var parent, grandpa, uncle;\n\n if (after) {\n node.P = after;\n node.N = after.N;\n if (after.N) after.N.P = node;\n after.N = node;\n if (after.R) {\n after = after.R;\n while (after.L) after = after.L;\n after.L = node;\n } else {\n after.R = node;\n }\n parent = after;\n } else if (this._) {\n after = RedBlackFirst(this._);\n node.P = null;\n node.N = after;\n after.P = after.L = node;\n parent = after;\n } else {\n node.P = node.N = null;\n this._ = node;\n parent = null;\n }\n node.L = node.R = null;\n node.U = parent;\n node.C = true;\n\n after = node;\n while (parent && parent.C) {\n grandpa = parent.U;\n if (parent === grandpa.L) {\n uncle = grandpa.R;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.R) {\n RedBlackRotateLeft(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateRight(this, grandpa);\n }\n } else {\n uncle = grandpa.L;\n if (uncle && uncle.C) {\n parent.C = uncle.C = false;\n grandpa.C = true;\n after = grandpa;\n } else {\n if (after === parent.L) {\n RedBlackRotateRight(this, parent);\n after = parent;\n parent = after.U;\n }\n parent.C = false;\n grandpa.C = true;\n RedBlackRotateLeft(this, grandpa);\n }\n }\n parent = after.U;\n }\n this._.C = false;\n },\n\n remove: function(node) {\n if (node.N) node.N.P = node.P;\n if (node.P) node.P.N = node.N;\n node.N = node.P = null;\n\n var parent = node.U,\n sibling,\n left = node.L,\n right = node.R,\n next,\n red;\n\n if (!left) next = right;\n else if (!right) next = left;\n else next = RedBlackFirst(right);\n\n if (parent) {\n if (parent.L === node) parent.L = next;\n else parent.R = next;\n } else {\n this._ = next;\n }\n\n if (left && right) {\n red = next.C;\n next.C = node.C;\n next.L = left;\n left.U = next;\n if (next !== right) {\n parent = next.U;\n next.U = node.U;\n node = next.R;\n parent.L = node;\n next.R = right;\n right.U = next;\n } else {\n next.U = parent;\n parent = next;\n node = next.R;\n }\n } else {\n red = node.C;\n node = next;\n }\n\n if (node) node.U = parent;\n if (red) return;\n if (node && node.C) { node.C = false; return; }\n\n do {\n if (node === this._) break;\n if (node === parent.L) {\n sibling = parent.R;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateLeft(this, parent);\n sibling = parent.R;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.R || !sibling.R.C) {\n sibling.L.C = false;\n sibling.C = true;\n RedBlackRotateRight(this, sibling);\n sibling = parent.R;\n }\n sibling.C = parent.C;\n parent.C = sibling.R.C = false;\n RedBlackRotateLeft(this, parent);\n node = this._;\n break;\n }\n } else {\n sibling = parent.L;\n if (sibling.C) {\n sibling.C = false;\n parent.C = true;\n RedBlackRotateRight(this, parent);\n sibling = parent.L;\n }\n if ((sibling.L && sibling.L.C)\n || (sibling.R && sibling.R.C)) {\n if (!sibling.L || !sibling.L.C) {\n sibling.R.C = false;\n sibling.C = true;\n RedBlackRotateLeft(this, sibling);\n sibling = parent.L;\n }\n sibling.C = parent.C;\n parent.C = sibling.L.C = false;\n RedBlackRotateRight(this, parent);\n node = this._;\n break;\n }\n }\n sibling.C = true;\n node = parent;\n parent = parent.U;\n } while (!node.C);\n\n if (node) node.C = false;\n }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n var p = node,\n q = node.R,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.R = q.L;\n if (p.R) p.R.U = p;\n q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n var p = node,\n q = node.L,\n parent = p.U;\n\n if (parent) {\n if (parent.L === p) parent.L = q;\n else parent.R = q;\n } else {\n tree._ = q;\n }\n\n q.U = parent;\n p.U = q;\n p.L = q.R;\n if (p.L) p.L.U = p;\n q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n while (node.L) node = node.L;\n return node;\n}\n\nexport default RedBlackTree;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export {default as voronoi} from \"./voronoi\";\n","export function x(d) {\n return d[0];\n}\n\nexport function y(d) {\n return d[1];\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n var x = pointX,\n y = pointY,\n extent = null;\n\n function voronoi(data) {\n return new Diagram(data.map(function(d, i) {\n var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n s.index = i;\n s.data = d;\n return s;\n }), extent);\n }\n\n voronoi.polygons = function(data) {\n return voronoi(data).polygons();\n };\n\n voronoi.links = function(data) {\n return voronoi(data).links();\n };\n\n voronoi.triangles = function(data) {\n return voronoi(data).triangles();\n };\n\n voronoi.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n };\n\n voronoi.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n };\n\n voronoi.extent = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n };\n\n voronoi.size = function(_) {\n return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n };\n\n return voronoi;\n}\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function ZoomEvent(target, type, transform) {\n this.target = target;\n this.type = type;\n this.transform = transform;\n}\n","export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity} from \"./transform.js\";\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n event.stopImmediatePropagation();\n}\n\nexport default function() {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled)\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p);\n };\n\n zoom.scaleTo = function(selection, k, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p);\n };\n\n zoom.translateBy = function(selection, x, y) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n });\n };\n\n zoom.translateTo = function(selection, x, y, p) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n }\n };\n\n function wheeled() {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, arguments),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = mouse(this);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent();\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned() {\n if (touchending || !filter.apply(this, arguments)) return;\n var g = gesture(this, arguments, true),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = mouse(this),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation();\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved() {\n noevent();\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped() {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent();\n g.end();\n }\n }\n\n function dblclicked() {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = mouse(this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n noevent();\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n else select(this).call(zoom.transform, t1);\n }\n\n function touchstarted() {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, arguments, event.changedTouches.length === n),\n started, i, t, p;\n\n nopropagation();\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent();\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n g.taps = 0;\n for (i = 0; i < n; ++i) {\n t = touches[i], p = touch(this, touches, t.identifier);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended() {\n if (!this.__zooming) return;\n var g = gesture(this, arguments),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation();\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n return zoom;\n}\n","export var name = \"d3\";\nexport var version = \"5.14.2\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n","/**\n * @license\n * Copyright (c) 2012-2013 Chris Pettitt\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n dagre: require(\"./lib/dagre\"),\n intersect: require(\"./lib/intersect\"),\n render: require(\"./lib/render\"),\n util: require(\"./lib/util\"),\n version: require(\"./lib/version\")\n};\n","var util = require(\"./util\");\n\nmodule.exports = {\n \"default\": normal,\n \"normal\": normal,\n \"vee\": vee,\n \"undirected\": undirected\n};\n\nfunction normal(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction vee(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 0 L 10 5 L 0 10 L 4 5 z\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n\nfunction undirected(parent, id, edge, type) {\n var marker = parent.append(\"marker\")\n .attr(\"id\", id)\n .attr(\"viewBox\", \"0 0 10 10\")\n .attr(\"refX\", 9)\n .attr(\"refY\", 5)\n .attr(\"markerUnits\", \"strokeWidth\")\n .attr(\"markerWidth\", 8)\n .attr(\"markerHeight\", 6)\n .attr(\"orient\", \"auto\");\n\n var path = marker.append(\"path\")\n .attr(\"d\", \"M 0 5 L 10 5\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", \"1,0\");\n util.applyStyle(path, edge[type + \"Style\"]);\n if (edge[type + \"Class\"]) {\n path.attr(\"class\", edge[type + \"Class\"]);\n }\n}\n","var util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar addLabel = require(\"./label/add-label\");\n\nmodule.exports = createClusters;\n\nfunction createClusters(selection, g) {\n var clusters = g.nodes().filter(function(v) { return util.isSubgraph(g, v); });\n var svgClusters = selection.selectAll(\"g.cluster\")\n .data(clusters, function(v) { return v; });\n\n svgClusters.selectAll(\"*\").remove();\n svgClusters.enter().append(\"g\")\n .attr(\"class\", \"cluster\")\n .attr(\"id\",function(v){\n var node = g.node(v);\n return node.id;\n })\n .style(\"opacity\", 0);\n \n svgClusters = selection.selectAll(\"g.cluster\");\n\n util.applyTransition(svgClusters, g)\n .style(\"opacity\", 1);\n\n svgClusters.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n d3.select(this).append(\"rect\");\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n addLabel(labelGroup, node, node.clusterLabelPos);\n });\n\n svgClusters.selectAll(\"rect\").each(function(c) {\n var node = g.node(c);\n var domCluster = d3.select(this);\n util.applyStyle(domCluster, node.style);\n });\n\n var exitSelection;\n\n if (svgClusters.exit) {\n exitSelection = svgClusters.exit();\n } else {\n exitSelection = svgClusters.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgClusters;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createEdgeLabels;\n\nfunction createEdgeLabels(selection, g) {\n var svgEdgeLabels = selection.selectAll(\"g.edgeLabel\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n svgEdgeLabels.exit().remove();\n svgEdgeLabels.enter().append(\"g\")\n .classed(\"edgeLabel\", true)\n .style(\"opacity\", 0);\n\n svgEdgeLabels = selection.selectAll(\"g.edgeLabel\");\n\n svgEdgeLabels.each(function(e) {\n var root = d3.select(this);\n root.select(\".label\").remove();\n var edge = g.edge(e);\n var label = addLabel(root, g.edge(e), 0, 0).classed(\"label\", true);\n var bbox = label.node().getBBox();\n\n if (edge.labelId) { label.attr(\"id\", edge.labelId); }\n if (!_.has(edge, \"width\")) { edge.width = bbox.width; }\n if (!_.has(edge, \"height\")) { edge.height = bbox.height; }\n });\n\n var exitSelection;\n\n if (svgEdgeLabels.exit) {\n exitSelection = svgEdgeLabels.exit();\n } else {\n exitSelection = svgEdgeLabels.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgEdgeLabels;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar intersectNode = require(\"./intersect/intersect-node\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nmodule.exports = createEdgePaths;\n\nfunction createEdgePaths(selection, g, arrows) {\n var previousPaths = selection.selectAll(\"g.edgePath\")\n .data(g.edges(), function(e) { return util.edgeToId(e); })\n .classed(\"update\", true);\n\n var newPaths = enter(previousPaths, g);\n exit(previousPaths, g);\n\n var svgPaths = previousPaths.merge !== undefined ? previousPaths.merge(newPaths) : previousPaths;\n util.applyTransition(svgPaths, g)\n .style(\"opacity\", 1);\n\n // Save DOM element in the path group, and set ID and class\n svgPaths.each(function(e) {\n var domEdge = d3.select(this);\n var edge = g.edge(e);\n edge.elem = this;\n\n if (edge.id) {\n domEdge.attr(\"id\", edge.id);\n }\n\n util.applyClass(domEdge, edge[\"class\"],\n (domEdge.classed(\"update\") ? \"update \" : \"\") + \"edgePath\");\n });\n\n svgPaths.selectAll(\"path.path\")\n .each(function(e) {\n var edge = g.edge(e);\n edge.arrowheadId = _.uniqueId(\"arrowhead\");\n\n var domEdge = d3.select(this)\n .attr(\"marker-end\", function() {\n return \"url(\" + makeFragmentRef(location.href, edge.arrowheadId) + \")\";\n })\n .style(\"fill\", \"none\");\n\n util.applyTransition(domEdge, g)\n .attr(\"d\", function(e) { return calcPoints(g, e); });\n\n util.applyStyle(domEdge, edge.style);\n });\n\n svgPaths.selectAll(\"defs *\").remove();\n svgPaths.selectAll(\"defs\")\n .each(function(e) {\n var edge = g.edge(e);\n var arrowhead = arrows[edge.arrowhead];\n arrowhead(d3.select(this), edge.arrowheadId, edge, \"arrowhead\");\n });\n\n return svgPaths;\n}\n\nfunction makeFragmentRef(url, fragmentId) {\n var baseUrl = url.split(\"#\")[0];\n return baseUrl + \"#\" + fragmentId;\n}\n\nfunction calcPoints(g, e) {\n var edge = g.edge(e);\n var tail = g.node(e.v);\n var head = g.node(e.w);\n var points = edge.points.slice(1, edge.points.length - 1);\n points.unshift(intersectNode(tail, points[0]));\n points.push(intersectNode(head, points[points.length - 1]));\n\n return createLine(edge, points);\n}\n\nfunction createLine(edge, points) {\n var line = (d3.line || d3.svg.line)()\n .x(function(d) { return d.x; })\n .y(function(d) { return d.y; });\n \n (line.curve || line.interpolate)(edge.curve);\n\n return line(points);\n}\n\nfunction getCoords(elem) {\n var bbox = elem.getBBox();\n var matrix = elem.ownerSVGElement.getScreenCTM()\n .inverse()\n .multiply(elem.getScreenCTM())\n .translate(bbox.width / 2, bbox.height / 2);\n return { x: matrix.e, y: matrix.f };\n}\n\nfunction enter(svgPaths, g) {\n var svgPathsEnter = svgPaths.enter().append(\"g\")\n .attr(\"class\", \"edgePath\")\n .style(\"opacity\", 0);\n svgPathsEnter.append(\"path\")\n .attr(\"class\", \"path\")\n .attr(\"d\", function(e) {\n var edge = g.edge(e);\n var sourceElem = g.node(e.v).elem;\n var points = _.range(edge.points.length).map(function() { return getCoords(sourceElem); });\n return createLine(edge, points);\n });\n svgPathsEnter.append(\"defs\");\n return svgPathsEnter;\n}\n\nfunction exit(svgPaths, g) {\n var svgPathExit = svgPaths.exit();\n util.applyTransition(svgPathExit, g)\n .style(\"opacity\", 0)\n .remove();\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar addLabel = require(\"./label/add-label\");\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = createNodes;\n\nfunction createNodes(selection, g, shapes) {\n var simpleNodes = g.nodes().filter(function(v) { return !util.isSubgraph(g, v); });\n var svgNodes = selection.selectAll(\"g.node\")\n .data(simpleNodes, function(v) { return v; })\n .classed(\"update\", true);\n\n svgNodes.exit().remove();\n\n svgNodes.enter().append(\"g\")\n .attr(\"class\", \"node\")\n .style(\"opacity\", 0);\n\n svgNodes = selection.selectAll(\"g.node\"); \n\n svgNodes.each(function(v) {\n var node = g.node(v);\n var thisGroup = d3.select(this);\n util.applyClass(thisGroup, node[\"class\"],\n (thisGroup.classed(\"update\") ? \"update \" : \"\") + \"node\");\n\n thisGroup.select(\"g.label\").remove();\n var labelGroup = thisGroup.append(\"g\").attr(\"class\", \"label\");\n var labelDom = addLabel(labelGroup, node);\n var shape = shapes[node.shape];\n var bbox = _.pick(labelDom.node().getBBox(), \"width\", \"height\");\n\n node.elem = this;\n\n if (node.id) { thisGroup.attr(\"id\", node.id); }\n if (node.labelId) { labelGroup.attr(\"id\", node.labelId); }\n\n if (_.has(node, \"width\")) { bbox.width = node.width; }\n if (_.has(node, \"height\")) { bbox.height = node.height; }\n\n bbox.width += node.paddingLeft + node.paddingRight;\n bbox.height += node.paddingTop + node.paddingBottom;\n labelGroup.attr(\"transform\", \"translate(\" +\n ((node.paddingLeft - node.paddingRight) / 2) + \",\" +\n ((node.paddingTop - node.paddingBottom) / 2) + \")\");\n\n var root = d3.select(this);\n root.select(\".label-container\").remove();\n var shapeSvg = shape(root, bbox, node).classed(\"label-container\", true);\n util.applyStyle(shapeSvg, node.style);\n\n var shapeBBox = shapeSvg.node().getBBox();\n node.width = shapeBBox.width;\n node.height = shapeBBox.height;\n });\n\n var exitSelection;\n\n if (svgNodes.exit) {\n exitSelection = svgNodes.exit();\n } else {\n exitSelection = svgNodes.selectAll(null); // empty selection\n }\n\n util.applyTransition(exitSelection, g)\n .style(\"opacity\", 0)\n .remove();\n\n return svgNodes;\n}\n","// Stub to get D3 either via NPM or from the global object\nvar d3;\n\nif (!d3) {\n if (typeof require === \"function\") {\n try {\n d3 = require(\"d3\");\n }\n catch (e) {\n // continue regardless of error\n }\n }\n}\n\nif (!d3) {\n d3 = window.d3;\n}\n\nmodule.exports = d3;\n","/* global window */\n\nvar dagre;\n\nif (typeof require === \"function\") {\n try {\n dagre = require(\"dagre\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!dagre) {\n dagre = window.dagre;\n}\n\nmodule.exports = dagre;\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","module.exports = {\n node: require(\"./intersect-node\"),\n circle: require(\"./intersect-circle\"),\n ellipse: require(\"./intersect-ellipse\"),\n polygon: require(\"./intersect-polygon\"),\n rect: require(\"./intersect-rect\")\n};\n","var intersectEllipse = require(\"./intersect-ellipse\");\n\nmodule.exports = intersectCircle;\n\nfunction intersectCircle(node, rx, point) {\n return intersectEllipse(node, rx, rx, point);\n}\n","module.exports = intersectEllipse;\n\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n\n var cx = node.x;\n var cy = node.y;\n\n var px = cx - point.x;\n var py = cy - point.y;\n\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n\n var dx = Math.abs(rx * ry * px / det);\n if (point.x < cx) {\n dx = -dx;\n }\n var dy = Math.abs(rx * ry * py / det);\n if (point.y < cy) {\n dy = -dy;\n }\n\n return {x: cx + dx, y: cy + dy};\n}\n\n","module.exports = intersectLine;\n\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n\n var a1, a2, b1, b2, c1, c2;\n var r1, r2 , r3, r4;\n var denom, offset, num;\n var x, y;\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = (p2.x * p1.y) - (p1.x * p2.y);\n\n // Compute r3 and r4.\n r3 = ((a1 * q1.x) + (b1 * q1.y) + c1);\n r4 = ((a1 * q2.x) + (b1 * q2.y) + c1);\n\n // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n if ((r3 !== 0) && (r4 !== 0) && sameSign(r3, r4)) {\n return /*DONT_INTERSECT*/;\n }\n\n // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = (q2.x * q1.y) - (q1.x * q2.y);\n\n // Compute r1 and r2\n r1 = (a2 * p1.x) + (b2 * p1.y) + c2;\n r2 = (a2 * p2.x) + (b2 * p2.y) + c2;\n\n // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n if ((r1 !== 0) && (r2 !== 0) && (sameSign(r1, r2))) {\n return /*DONT_INTERSECT*/;\n }\n\n // Line segments intersect: compute intersection point.\n denom = (a1 * b2) - (a2 * b1);\n if (denom === 0) {\n return /*COLLINEAR*/;\n }\n\n offset = Math.abs(denom / 2);\n\n // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n num = (b1 * c2) - (b2 * c1);\n x = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n num = (a2 * c1) - (a1 * c2);\n y = (num < 0) ? ((num - offset) / denom) : ((num + offset) / denom);\n\n return { x: x, y: y };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n","module.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n return node.intersect(point);\n}\n","/* eslint \"no-console\": off */\n\nvar intersectLine = require(\"./intersect-line\");\n\nmodule.exports = intersectPolygon;\n\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n\n var intersections = [];\n\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n polyPoints.forEach(function(entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = intersectLine(node, point,\n {x: left + p1.x, y: top + p1.y}, {x: left + p2.x, y: top + p2.y});\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n console.log(\"NO INTERSECTION FOUND, RETURN NODE CENTER\", node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function(p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n\n return (distp < distq) ? -1 : (distp === distq ? 0 : 1);\n });\n }\n return intersections[0];\n}\n","module.exports = intersectRect;\n\nfunction intersectRect(node, point) {\n var x = node.x;\n var y = node.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n\n return {x: x + sx, y: y + sy};\n}\n","var util = require(\"../util\");\n\nmodule.exports = addHtmlLabel;\n\nfunction addHtmlLabel(root, node) {\n var fo = root\n .append(\"foreignObject\")\n .attr(\"width\", \"100000\");\n\n var div = fo\n .append(\"xhtml:div\");\n div.attr(\"xmlns\", \"http://www.w3.org/1999/xhtml\");\n\n var label = node.label;\n switch(typeof label) {\n case \"function\":\n div.insert(label);\n break;\n case \"object\":\n // Currently we assume this is a DOM object.\n div.insert(function() { return label; });\n break;\n default: div.html(label);\n }\n\n util.applyStyle(div, node.labelStyle);\n div.style(\"display\", \"inline-block\");\n // Fix for firefox\n div.style(\"white-space\", \"nowrap\");\n\n var client = div.node().getBoundingClientRect();\n fo\n .attr(\"width\", client.width)\n .attr(\"height\", client.height); \n\n return fo;\n}\n","var addTextLabel = require(\"./add-text-label\");\nvar addHtmlLabel = require(\"./add-html-label\");\nvar addSVGLabel = require(\"./add-svg-label\");\n\nmodule.exports = addLabel;\n\nfunction addLabel(root, node, location) {\n var label = node.label;\n var labelSvg = root.append(\"g\");\n\n // Allow the label to be a string, a function that returns a DOM element, or\n // a DOM element itself.\n if (node.labelType === \"svg\") {\n addSVGLabel(labelSvg, node);\n } else if (typeof label !== \"string\" || node.labelType === \"html\") {\n addHtmlLabel(labelSvg, node);\n } else {\n addTextLabel(labelSvg, node);\n }\n\n var labelBBox = labelSvg.node().getBBox();\n var y;\n switch(location) {\n case \"top\":\n y = (-node.height / 2);\n break;\n case \"bottom\":\n y = (node.height / 2) - labelBBox.height;\n break;\n default:\n y = (-labelBBox.height / 2);\n }\n labelSvg.attr(\n \"transform\",\n \"translate(\" + (-labelBBox.width / 2) + \",\" + y + \")\");\n\n return labelSvg;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addSVGLabel;\n\nfunction addSVGLabel(root, node) {\n var domNode = root;\n\n domNode.node().appendChild(node.label);\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n","var util = require(\"../util\");\n\nmodule.exports = addTextLabel;\n\n/*\n * Attaches a text label to the specified root. Handles escape sequences.\n */\nfunction addTextLabel(root, node) {\n var domNode = root.append(\"text\");\n\n var lines = processEscapeSequences(node.label).split(\"\\n\");\n for (var i = 0; i < lines.length; i++) {\n domNode.append(\"tspan\")\n .attr(\"xml:space\", \"preserve\")\n .attr(\"dy\", \"1em\")\n .attr(\"x\", \"1\")\n .text(lines[i]);\n }\n\n util.applyStyle(domNode, node.labelStyle);\n\n return domNode;\n}\n\nfunction processEscapeSequences(text) {\n var newText = \"\";\n var escaped = false;\n var ch;\n for (var i = 0; i < text.length; ++i) {\n ch = text[i];\n if (escaped) {\n switch(ch) {\n case \"n\": newText += \"\\n\"; break;\n default: newText += ch;\n }\n escaped = false;\n } else if (ch === \"\\\\\") {\n escaped = true;\n } else {\n newText += ch;\n }\n }\n return newText;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n isFunction: require(\"lodash/isFunction\"),\n isPlainObject: require(\"lodash/isPlainObject\"),\n pick: require(\"lodash/pick\"),\n has: require(\"lodash/has\"),\n range: require(\"lodash/range\"),\n uniqueId: require(\"lodash/uniqueId\")\n };\n }\n catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionClusters;\n\nfunction positionClusters(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n\n util.applyTransition(created.selectAll(\"rect\"), g)\n .attr(\"width\", function(v) { return g.node(v).width; })\n .attr(\"height\", function(v) { return g.node(v).height; })\n .attr(\"x\", function(v) {\n var node = g.node(v);\n return -node.width / 2;\n })\n .attr(\"y\", function(v) {\n var node = g.node(v);\n return -node.height / 2;\n });\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\nvar _ = require(\"./lodash\");\n\nmodule.exports = positionEdgeLabels;\n\nfunction positionEdgeLabels(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(e) {\n var edge = g.edge(e);\n return _.has(edge, \"x\") ? \"translate(\" + edge.x + \",\" + edge.y + \")\" : \"\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","\"use strict\";\n\nvar util = require(\"./util\");\nvar d3 = require(\"./d3\");\n\nmodule.exports = positionNodes;\n\nfunction positionNodes(selection, g) {\n var created = selection.filter(function() { return !d3.select(this).classed(\"update\"); });\n\n function translate(v) {\n var node = g.node(v);\n return \"translate(\" + node.x + \",\" + node.y + \")\";\n }\n\n created.attr(\"transform\", translate);\n\n util.applyTransition(selection, g)\n .style(\"opacity\", 1)\n .attr(\"transform\", translate);\n}\n","var _ = require(\"./lodash\");\nvar d3 = require(\"./d3\");\nvar layout = require(\"./dagre\").layout;\n\nmodule.exports = render;\n\n// This design is based on http://bost.ocks.org/mike/chart/.\nfunction render() {\n var createNodes = require(\"./create-nodes\");\n var createClusters = require(\"./create-clusters\");\n var createEdgeLabels = require(\"./create-edge-labels\");\n var createEdgePaths = require(\"./create-edge-paths\");\n var positionNodes = require(\"./position-nodes\");\n var positionEdgeLabels = require(\"./position-edge-labels\");\n var positionClusters = require(\"./position-clusters\");\n var shapes = require(\"./shapes\");\n var arrows = require(\"./arrows\");\n\n var fn = function(svg, g) {\n preProcessGraph(g);\n\n var outputGroup = createOrSelectGroup(svg, \"output\");\n var clustersGroup = createOrSelectGroup(outputGroup, \"clusters\");\n var edgePathsGroup = createOrSelectGroup(outputGroup, \"edgePaths\");\n var edgeLabels = createEdgeLabels(createOrSelectGroup(outputGroup, \"edgeLabels\"), g);\n var nodes = createNodes(createOrSelectGroup(outputGroup, \"nodes\"), g, shapes);\n\n layout(g);\n\n positionNodes(nodes, g);\n positionEdgeLabels(edgeLabels, g);\n createEdgePaths(edgePathsGroup, g, arrows);\n\n var clusters = createClusters(clustersGroup, g);\n positionClusters(clusters, g);\n\n postProcessGraph(g);\n };\n\n fn.createNodes = function(value) {\n if (!arguments.length) return createNodes;\n createNodes = value;\n return fn;\n };\n\n fn.createClusters = function(value) {\n if (!arguments.length) return createClusters;\n createClusters = value;\n return fn;\n };\n\n fn.createEdgeLabels = function(value) {\n if (!arguments.length) return createEdgeLabels;\n createEdgeLabels = value;\n return fn;\n };\n\n fn.createEdgePaths = function(value) {\n if (!arguments.length) return createEdgePaths;\n createEdgePaths = value;\n return fn;\n };\n\n fn.shapes = function(value) {\n if (!arguments.length) return shapes;\n shapes = value;\n return fn;\n };\n\n fn.arrows = function(value) {\n if (!arguments.length) return arrows;\n arrows = value;\n return fn;\n };\n\n return fn;\n}\n\nvar NODE_DEFAULT_ATTRS = {\n paddingLeft: 10,\n paddingRight: 10,\n paddingTop: 10,\n paddingBottom: 10,\n rx: 0,\n ry: 0,\n shape: \"rect\"\n};\n\nvar EDGE_DEFAULT_ATTRS = {\n arrowhead: \"normal\",\n curve: d3.curveLinear\n};\n\nfunction preProcessGraph(g) {\n g.nodes().forEach(function(v) {\n var node = g.node(v);\n if (!_.has(node, \"label\") && !g.children(v).length) { node.label = v; }\n\n if (_.has(node, \"paddingX\")) {\n _.defaults(node, {\n paddingLeft: node.paddingX,\n paddingRight: node.paddingX\n });\n }\n\n if (_.has(node, \"paddingY\")) {\n _.defaults(node, {\n paddingTop: node.paddingY,\n paddingBottom: node.paddingY\n });\n }\n\n if (_.has(node, \"padding\")) {\n _.defaults(node, {\n paddingLeft: node.padding,\n paddingRight: node.padding,\n paddingTop: node.padding,\n paddingBottom: node.padding\n });\n }\n\n _.defaults(node, NODE_DEFAULT_ATTRS);\n\n _.each([\"paddingLeft\", \"paddingRight\", \"paddingTop\", \"paddingBottom\"], function(k) {\n node[k] = Number(node[k]);\n });\n\n // Save dimensions for restore during post-processing\n if (_.has(node, \"width\")) { node._prevWidth = node.width; }\n if (_.has(node, \"height\")) { node._prevHeight = node.height; }\n });\n\n g.edges().forEach(function(e) {\n var edge = g.edge(e);\n if (!_.has(edge, \"label\")) { edge.label = \"\"; }\n _.defaults(edge, EDGE_DEFAULT_ATTRS);\n });\n}\n\nfunction postProcessGraph(g) {\n _.each(g.nodes(), function(v) {\n var node = g.node(v);\n\n // Restore original dimensions\n if (_.has(node, \"_prevWidth\")) {\n node.width = node._prevWidth;\n } else {\n delete node.width;\n }\n\n if (_.has(node, \"_prevHeight\")) {\n node.height = node._prevHeight;\n } else {\n delete node.height;\n }\n\n delete node._prevWidth;\n delete node._prevHeight;\n });\n}\n\nfunction createOrSelectGroup(root, name) {\n var selection = root.select(\"g.\" + name);\n if (selection.empty()) {\n selection = root.append(\"g\").attr(\"class\", name);\n }\n return selection;\n}\n","\"use strict\";\n\nvar intersectRect = require(\"./intersect/intersect-rect\");\nvar intersectEllipse = require(\"./intersect/intersect-ellipse\");\nvar intersectCircle = require(\"./intersect/intersect-circle\");\nvar intersectPolygon = require(\"./intersect/intersect-polygon\");\n\nmodule.exports = {\n rect: rect,\n ellipse: ellipse,\n circle: circle,\n diamond: diamond\n};\n\nfunction rect(parent, bbox, node) {\n var shapeSvg = parent.insert(\"rect\", \":first-child\")\n .attr(\"rx\", node.rx)\n .attr(\"ry\", node.ry)\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"width\", bbox.width)\n .attr(\"height\", bbox.height);\n\n node.intersect = function(point) {\n return intersectRect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction ellipse(parent, bbox, node) {\n var rx = bbox.width / 2;\n var ry = bbox.height / 2;\n var shapeSvg = parent.insert(\"ellipse\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"rx\", rx)\n .attr(\"ry\", ry);\n\n node.intersect = function(point) {\n return intersectEllipse(node, rx, ry, point);\n };\n\n return shapeSvg;\n}\n\nfunction circle(parent, bbox, node) {\n var r = Math.max(bbox.width, bbox.height) / 2;\n var shapeSvg = parent.insert(\"circle\", \":first-child\")\n .attr(\"x\", -bbox.width / 2)\n .attr(\"y\", -bbox.height / 2)\n .attr(\"r\", r);\n\n node.intersect = function(point) {\n return intersectCircle(node, r, point);\n };\n\n return shapeSvg;\n}\n\n// Circumscribe an ellipse for the bounding box with a diamond shape. I derived\n// the function to calculate the diamond shape from:\n// http://mathforum.org/kb/message.jspa?messageID=3750236\nfunction diamond(parent, bbox, node) {\n var w = (bbox.width * Math.SQRT2) / 2;\n var h = (bbox.height * Math.SQRT2) / 2;\n var points = [\n { x: 0, y: -h },\n { x: -w, y: 0 },\n { x: 0, y: h },\n { x: w, y: 0 }\n ];\n var shapeSvg = parent.insert(\"polygon\", \":first-child\")\n .attr(\"points\", points.map(function(p) { return p.x + \",\" + p.y; }).join(\" \"));\n\n node.intersect = function(p) {\n return intersectPolygon(node, points, p);\n };\n\n return shapeSvg;\n}\n","var _ = require(\"./lodash\");\n\n// Public utility functions\nmodule.exports = {\n isSubgraph: isSubgraph,\n edgeToId: edgeToId,\n applyStyle: applyStyle,\n applyClass: applyClass,\n applyTransition: applyTransition\n};\n\n/*\n * Returns true if the specified node in the graph is a subgraph node. A\n * subgraph node is one that contains other nodes.\n */\nfunction isSubgraph(g, v) {\n return !!g.children(v).length;\n}\n\nfunction edgeToId(e) {\n return escapeId(e.v) + \":\" + escapeId(e.w) + \":\" + escapeId(e.name);\n}\n\nvar ID_DELIM = /:/g;\nfunction escapeId(str) {\n return str ? String(str).replace(ID_DELIM, \"\\\\:\") : \"\";\n}\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr(\"style\", styleFn);\n }\n}\n\nfunction applyClass(dom, classFn, otherClasses) {\n if (classFn) {\n dom\n .attr(\"class\", classFn)\n .attr(\"class\", otherClasses + \" \" + dom.attr(\"class\"));\n }\n}\n\nfunction applyTransition(selection, g) {\n var graph = g.graph();\n\n if (_.isPlainObject(graph)) {\n var transition = graph.transition;\n if (_.isFunction(transition)) {\n return transition(selection);\n }\n }\n\n return selection;\n}\n","module.exports = \"0.6.4\";\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [];\n var stack = {};\n var visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v);\n var node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop };\n var prev = sgNode[prop][rank - 1];\n var curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel;\n var entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [];\n var sentinel = this._sentinel;\n var curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\nvar List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [];\n var sources = buckets[buckets.length - 1];\n var sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge);\n var w = edge.w;\n var wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph();\n var maxIn = 0;\n var maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0;\n var weight = weightFn(e);\n var edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar acyclic = require(\"./acyclic\");\nvar normalize = require(\"./normalize\");\nvar rank = require(\"./rank\");\nvar normalizeRanks = require(\"./util\").normalizeRanks;\nvar parentDummyChains = require(\"./parent-dummy-chains\");\nvar removeEmptyRanks = require(\"./util\").removeEmptyRanks;\nvar nestingGraph = require(\"./nesting-graph\");\nvar addBorderSegments = require(\"./add-border-segments\");\nvar coordinateSystem = require(\"./coordinate-system\");\nvar order = require(\"./order\");\nvar position = require(\"./position\");\nvar util = require(\"./util\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = \n time(\" buildLayoutGraph\", function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v);\n var layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e);\n var layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"];\nvar graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" };\nvar graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"];\nvar nodeNumAttrs = [\"width\", \"height\"];\nvar nodeDefaults = { width: 0, height: 0 };\nvar edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"];\nvar edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n};\nvar edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true });\n var graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v);\n var w = g.node(e.w);\n var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY;\n var maxX = 0;\n var minY = Number.POSITIVE_INFINITY;\n var maxY = 0;\n var graphLabel = g.graph();\n var marginX = graphLabel.marginx || 0;\n var marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x;\n var y = attrs.y;\n var w = attrs.width;\n var h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n var nodeV = g.node(e.v);\n var nodeW = g.node(e.w);\n var p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v);\n var t = g.node(node.borderTop);\n var b = g.node(node.borderBottom);\n var l = g.node(_.last(node.borderLeft));\n var r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v);\n var x = selfNode.x + selfNode.width / 2;\n var y = selfNode.y;\n var dx = node.x - x;\n var dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\");\n var bottom = util.addBorderNode(g, \"_bb\");\n var label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child);\n var childTop = childNode.borderTop ? childNode.borderTop : child;\n var childBottom = childNode.borderBottom ? childNode.borderBottom : child;\n var thisWeight = childNode.borderTop ? weight : 2 * weight;\n var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v;\n var vRank = g.node(v).rank;\n var w = e.w;\n var wRank = g.node(w).rank;\n var name = e.name;\n var edgeLabel = g.edge(e);\n var labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var origLabel = node.edgeLabel;\n var w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar initOrder = require(\"./init-order\");\nvar crossCount = require(\"./cross-count\");\nvar sortSubgraph = require(\"./sort-subgraph\");\nvar buildLayerGraph = require(\"./build-layer-graph\");\nvar addSubgraphConstraints = require(\"./add-subgraph-constraints\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {};\n var simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n });\n var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; }));\n var layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v];\n var entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0;\n var weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\");\nvar barycenter = require(\"./barycenter\");\nvar resolveConflicts = require(\"./resolve-conflicts\");\nvar sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v);\n var node = g.node(v);\n var bl = node ? node.borderLeft : undefined;\n var br = node ? node.borderRight: undefined;\n var subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\");\nvar util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v);\n var edgeObj = node.edgeObj;\n var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w);\n var path = pathData.path;\n var lca = pathData.lca;\n var pathIdx = 0;\n var pathV = path[pathIdx];\n var ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [];\n var wPath = [];\n var low = Math.min(postorderNums[v].low, postorderNums[w].low);\n var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim);\n var parent;\n var lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {};\n var lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g);\n var conflicts = _.merge(\n findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {};\n var adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align, horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v);\n var wLabel = g.node(w);\n var sum = 0;\n var delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar util = require(\"../util\");\nvar positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g);\n var rankSep = g.graph().ranksep;\n var prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar Graph = require(\"../graphlib\").Graph;\nvar slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0];\n var size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\");\nvar longestPath = rankUtil.longestPath;\nvar feasibleTree = require(\"./feasible-tree\");\nvar networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\nvar feasibleTree = require(\"./feasible-tree\");\nvar slack = require(\"./util\").slack;\nvar initRank = require(\"./util\").longestPath;\nvar preorder = require(\"../graphlib\").alg.preorder;\nvar postorder = require(\"../graphlib\").alg.postorder;\nvar simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child);\n var parent = childLab.parent;\n // True if the child is on the tail end of the edge in the directed graph\n var childIsTail = true;\n // The graph's view of the tree edge we're inspecting\n var graphEdge = g.edge(child, parent);\n // The accumulated cut value for the edge between this node and its parent\n var cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim;\n var label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v;\n var w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v);\n var wLabel = t.node(w);\n var tailLabel = vLabel;\n var flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v;\n var w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; });\n var vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","/* eslint \"no-console\": off */\n\n\"use strict\";\n\nvar _ = require(\"./lodash\");\nvar Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 };\n var label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n var rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0;\n var nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.5\";\n","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","var _ = require(\"../lodash\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {};\n var cmpts = [];\n var cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [];\n var visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n","var dijkstra = require(\"./dijkstra\");\nvar _ = require(\"../lodash\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n","var _ = require(\"../lodash\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {};\n var pq = new PriorityQueue();\n var v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w;\n var wEntry = results[w];\n var weight = weightFn(edge);\n var distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n","var _ = require(\"../lodash\");\nvar tarjan = require(\"./tarjan\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {};\n var nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n","module.exports = {\n components: require(\"./components\"),\n dijkstra: require(\"./dijkstra\"),\n dijkstraAll: require(\"./dijkstra-all\"),\n findCycles: require(\"./find-cycles\"),\n floydWarshall: require(\"./floyd-warshall\"),\n isAcyclic: require(\"./is-acyclic\"),\n postorder: require(\"./postorder\"),\n preorder: require(\"./preorder\"),\n prim: require(\"./prim\"),\n tarjan: require(\"./tarjan\"),\n topsort: require(\"./topsort\")\n};\n","var topsort = require(\"./topsort\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n","var _ = require(\"../lodash\");\nvar Graph = require(\"../graph\");\nvar PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph();\n var parents = {};\n var pq = new PriorityQueue();\n var v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v;\n var pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0;\n var stack = [];\n var visited = {}; // node id -> { onStack, lowlink, index }\n var results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [];\n var w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {};\n var stack = {};\n var results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing","var _ = require(\"../lodash\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i;\n var r = l + 1;\n var largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\";\nvar GRAPH_NODE = \"\\x00\";\nvar EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this;\n var args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value;\n var valueSpecified = false;\n var arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n var edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: require(\"./graph\"),\n version: require(\"./version\")\n};\n","var _ = require(\"./lodash\");\nvar Graph = require(\"./graph\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v);\n var parent = g.parent(v);\n var node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e);\n var edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n clone: require(\"lodash/clone\"),\n constant: require(\"lodash/constant\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n has: require(\"lodash/has\"),\n isArray: require(\"lodash/isArray\"),\n isEmpty: require(\"lodash/isEmpty\"),\n isFunction: require(\"lodash/isFunction\"),\n isUndefined: require(\"lodash/isUndefined\"),\n keys: require(\"lodash/keys\"),\n map: require(\"lodash/map\"),\n reduce: require(\"lodash/reduce\"),\n size: require(\"lodash/size\"),\n transform: require(\"lodash/transform\"),\n union: require(\"lodash/union\"),\n values: require(\"lodash/values\")\n };\n } catch (e) {\n // continue regardless of error\n }\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","module.exports = '2.1.8';\n","/*\nCopyright (c) 2012-2014 Chris Pettitt\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\nmodule.exports = {\n graphlib: require(\"./lib/graphlib\"),\n\n layout: require(\"./lib/layout\"),\n debug: require(\"./lib/debug\"),\n util: {\n time: require(\"./lib/util\").time,\n notime: require(\"./lib/util\").notime\n },\n version: require(\"./lib/version\")\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\"),\n greedyFAS = require(\"./greedy-fas\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\nfunction run(g) {\n var fas = (g.graph().acyclicer === \"greedy\"\n ? greedyFAS(g, weightFn(g))\n : dfsFAS(g));\n _.forEach(fas, function(e) {\n var label = g.edge(e);\n g.removeEdge(e);\n label.forwardName = e.name;\n label.reversed = true;\n g.setEdge(e.w, e.v, label, _.uniqueId(\"rev\"));\n });\n\n function weightFn(g) {\n return function(e) {\n return g.edge(e).weight;\n };\n }\n}\n\nfunction dfsFAS(g) {\n var fas = [],\n stack = {},\n visited = {};\n\n function dfs(v) {\n if (_.has(visited, v)) {\n return;\n }\n visited[v] = true;\n stack[v] = true;\n _.forEach(g.outEdges(v), function(e) {\n if (_.has(stack, e.w)) {\n fas.push(e);\n } else {\n dfs(e.w);\n }\n });\n delete stack[v];\n }\n\n _.forEach(g.nodes(), dfs);\n return fas;\n}\n\nfunction undo(g) {\n _.forEach(g.edges(), function(e) {\n var label = g.edge(e);\n if (label.reversed) {\n g.removeEdge(e);\n\n var forwardName = label.forwardName;\n delete label.reversed;\n delete label.forwardName;\n g.setEdge(e.w, e.v, label, forwardName);\n }\n });\n}\n","var _ = require(\"./lodash\"),\n util = require(\"./util\");\n\nmodule.exports = addBorderSegments;\n\nfunction addBorderSegments(g) {\n function dfs(v) {\n var children = g.children(v),\n node = g.node(v);\n if (children.length) {\n _.forEach(children, dfs);\n }\n\n if (_.has(node, \"minRank\")) {\n node.borderLeft = [];\n node.borderRight = [];\n for (var rank = node.minRank, maxRank = node.maxRank + 1;\n rank < maxRank;\n ++rank) {\n addBorderNode(g, \"borderLeft\", \"_bl\", v, node, rank);\n addBorderNode(g, \"borderRight\", \"_br\", v, node, rank);\n }\n }\n }\n\n _.forEach(g.children(), dfs);\n}\n\nfunction addBorderNode(g, prop, prefix, sg, sgNode, rank) {\n var label = { width: 0, height: 0, rank: rank, borderType: prop },\n prev = sgNode[prop][rank - 1],\n curr = util.addDummyNode(g, \"border\", label, prefix);\n sgNode[prop][rank] = curr;\n g.setParent(curr, sg);\n if (prev) {\n g.setEdge(prev, curr, { weight: 1 });\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = {\n adjust: adjust,\n undo: undo\n};\n\nfunction adjust(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapWidthHeight(g);\n }\n}\n\nfunction undo(g) {\n var rankDir = g.graph().rankdir.toLowerCase();\n if (rankDir === \"bt\" || rankDir === \"rl\") {\n reverseY(g);\n }\n\n if (rankDir === \"lr\" || rankDir === \"rl\") {\n swapXY(g);\n swapWidthHeight(g);\n }\n}\n\nfunction swapWidthHeight(g) {\n _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); });\n _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); });\n}\n\nfunction swapWidthHeightOne(attrs) {\n var w = attrs.width;\n attrs.width = attrs.height;\n attrs.height = w;\n}\n\nfunction reverseY(g) {\n _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, reverseYOne);\n if (_.has(edge, \"y\")) {\n reverseYOne(edge);\n }\n });\n}\n\nfunction reverseYOne(attrs) {\n attrs.y = -attrs.y;\n}\n\nfunction swapXY(g) {\n _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, swapXYOne);\n if (_.has(edge, \"x\")) {\n swapXYOne(edge);\n }\n });\n}\n\nfunction swapXYOne(attrs) {\n var x = attrs.x;\n attrs.x = attrs.y;\n attrs.y = x;\n}\n","/*\n * Simple doubly linked list implementation derived from Cormen, et al.,\n * \"Introduction to Algorithms\".\n */\n\nmodule.exports = List;\n\nfunction List() {\n var sentinel = {};\n sentinel._next = sentinel._prev = sentinel;\n this._sentinel = sentinel;\n}\n\nList.prototype.dequeue = function() {\n var sentinel = this._sentinel,\n entry = sentinel._prev;\n if (entry !== sentinel) {\n unlink(entry);\n return entry;\n }\n};\n\nList.prototype.enqueue = function(entry) {\n var sentinel = this._sentinel;\n if (entry._prev && entry._next) {\n unlink(entry);\n }\n entry._next = sentinel._next;\n sentinel._next._prev = entry;\n sentinel._next = entry;\n entry._prev = sentinel;\n};\n\nList.prototype.toString = function() {\n var strs = [],\n sentinel = this._sentinel,\n curr = sentinel._prev;\n while (curr !== sentinel) {\n strs.push(JSON.stringify(curr, filterOutLinks));\n curr = curr._prev;\n }\n return \"[\" + strs.join(\", \") + \"]\";\n};\n\nfunction unlink(entry) {\n entry._prev._next = entry._next;\n entry._next._prev = entry._prev;\n delete entry._next;\n delete entry._prev;\n}\n\nfunction filterOutLinks(k, v) {\n if (k !== \"_next\" && k !== \"_prev\") {\n return v;\n }\n}\n","var _ = require(\"./lodash\"),\n util = require(\"./util\"),\n Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n debugOrdering: debugOrdering\n};\n\n/* istanbul ignore next */\nfunction debugOrdering(g) {\n var layerMatrix = util.buildLayerMatrix(g);\n\n var h = new Graph({ compound: true, multigraph: true }).setGraph({});\n\n _.forEach(g.nodes(), function(v) {\n h.setNode(v, { label: v });\n h.setParent(v, \"layer\" + g.node(v).rank);\n });\n\n _.forEach(g.edges(), function(e) {\n h.setEdge(e.v, e.w, {}, e.name);\n });\n\n _.forEach(layerMatrix, function(layer, i) {\n var layerV = \"layer\" + i;\n h.setNode(layerV, { rank: \"same\" });\n _.reduce(layer, function(u, v) {\n h.setEdge(u, v, { style: \"invis\" });\n return v;\n });\n });\n\n return h;\n}\n","/* global window */\n\nvar graphlib;\n\nif (typeof require === \"function\") {\n try {\n graphlib = require(\"graphlib\");\n } catch (e) {}\n}\n\nif (!graphlib) {\n graphlib = window.graphlib;\n}\n\nmodule.exports = graphlib;\n","var _ = require(\"./lodash\"),\n Graph = require(\"./graphlib\").Graph,\n List = require(\"./data/list\");\n\n/*\n * A greedy heuristic for finding a feedback arc set for a graph. A feedback\n * arc set is a set of edges that can be removed to make a graph acyclic.\n * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, \"A fast and\n * effective heuristic for the feedback arc set problem.\" This implementation\n * adjusts that from the paper to allow for weighted edges.\n */\nmodule.exports = greedyFAS;\n\nvar DEFAULT_WEIGHT_FN = _.constant(1);\n\nfunction greedyFAS(g, weightFn) {\n if (g.nodeCount() <= 1) {\n return [];\n }\n var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);\n var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);\n\n // Expand multi-edges\n return _.flatten(_.map(results, function(e) {\n return g.outEdges(e.v, e.w);\n }), true);\n}\n\nfunction doGreedyFAS(g, buckets, zeroIdx) {\n var results = [],\n sources = buckets[buckets.length - 1],\n sinks = buckets[0];\n\n var entry;\n while (g.nodeCount()) {\n while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }\n if (g.nodeCount()) {\n for (var i = buckets.length - 2; i > 0; --i) {\n entry = buckets[i].dequeue();\n if (entry) {\n results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));\n break;\n }\n }\n }\n }\n\n return results;\n}\n\nfunction removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {\n var results = collectPredecessors ? [] : undefined;\n\n _.forEach(g.inEdges(entry.v), function(edge) {\n var weight = g.edge(edge),\n uEntry = g.node(edge.v);\n\n if (collectPredecessors) {\n results.push({ v: edge.v, w: edge.w });\n }\n\n uEntry.out -= weight;\n assignBucket(buckets, zeroIdx, uEntry);\n });\n\n _.forEach(g.outEdges(entry.v), function(edge) {\n var weight = g.edge(edge),\n w = edge.w,\n wEntry = g.node(w);\n wEntry[\"in\"] -= weight;\n assignBucket(buckets, zeroIdx, wEntry);\n });\n\n g.removeNode(entry.v);\n\n return results;\n}\n\nfunction buildState(g, weightFn) {\n var fasGraph = new Graph(),\n maxIn = 0,\n maxOut = 0;\n\n _.forEach(g.nodes(), function(v) {\n fasGraph.setNode(v, { v: v, \"in\": 0, out: 0 });\n });\n\n // Aggregate weights on nodes, but also sum the weights across multi-edges\n // into a single edge for the fasGraph.\n _.forEach(g.edges(), function(e) {\n var prevWeight = fasGraph.edge(e.v, e.w) || 0,\n weight = weightFn(e),\n edgeWeight = prevWeight + weight;\n fasGraph.setEdge(e.v, e.w, edgeWeight);\n maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);\n maxIn = Math.max(maxIn, fasGraph.node(e.w)[\"in\"] += weight);\n });\n\n var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); });\n var zeroIdx = maxIn + 1;\n\n _.forEach(fasGraph.nodes(), function(v) {\n assignBucket(buckets, zeroIdx, fasGraph.node(v));\n });\n\n return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };\n}\n\nfunction assignBucket(buckets, zeroIdx, entry) {\n if (!entry.out) {\n buckets[0].enqueue(entry);\n } else if (!entry[\"in\"]) {\n buckets[buckets.length - 1].enqueue(entry);\n } else {\n buckets[entry.out - entry[\"in\"] + zeroIdx].enqueue(entry);\n }\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\"),\n acyclic = require(\"./acyclic\"),\n normalize = require(\"./normalize\"),\n rank = require(\"./rank\"),\n normalizeRanks = require(\"./util\").normalizeRanks,\n parentDummyChains = require(\"./parent-dummy-chains\"),\n removeEmptyRanks = require(\"./util\").removeEmptyRanks,\n nestingGraph = require(\"./nesting-graph\"),\n addBorderSegments = require(\"./add-border-segments\"),\n coordinateSystem = require(\"./coordinate-system\"),\n order = require(\"./order\"),\n position = require(\"./position\"),\n util = require(\"./util\"),\n Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = layout;\n\nfunction layout(g, opts) {\n var time = opts && opts.debugTiming ? util.time : util.notime;\n time(\"layout\", function() {\n var layoutGraph = time(\" buildLayoutGraph\",\n function() { return buildLayoutGraph(g); });\n time(\" runLayout\", function() { runLayout(layoutGraph, time); });\n time(\" updateInputGraph\", function() { updateInputGraph(g, layoutGraph); });\n });\n}\n\nfunction runLayout(g, time) {\n time(\" makeSpaceForEdgeLabels\", function() { makeSpaceForEdgeLabels(g); });\n time(\" removeSelfEdges\", function() { removeSelfEdges(g); });\n time(\" acyclic\", function() { acyclic.run(g); });\n time(\" nestingGraph.run\", function() { nestingGraph.run(g); });\n time(\" rank\", function() { rank(util.asNonCompoundGraph(g)); });\n time(\" injectEdgeLabelProxies\", function() { injectEdgeLabelProxies(g); });\n time(\" removeEmptyRanks\", function() { removeEmptyRanks(g); });\n time(\" nestingGraph.cleanup\", function() { nestingGraph.cleanup(g); });\n time(\" normalizeRanks\", function() { normalizeRanks(g); });\n time(\" assignRankMinMax\", function() { assignRankMinMax(g); });\n time(\" removeEdgeLabelProxies\", function() { removeEdgeLabelProxies(g); });\n time(\" normalize.run\", function() { normalize.run(g); });\n time(\" parentDummyChains\", function() { parentDummyChains(g); });\n time(\" addBorderSegments\", function() { addBorderSegments(g); });\n time(\" order\", function() { order(g); });\n time(\" insertSelfEdges\", function() { insertSelfEdges(g); });\n time(\" adjustCoordinateSystem\", function() { coordinateSystem.adjust(g); });\n time(\" position\", function() { position(g); });\n time(\" positionSelfEdges\", function() { positionSelfEdges(g); });\n time(\" removeBorderNodes\", function() { removeBorderNodes(g); });\n time(\" normalize.undo\", function() { normalize.undo(g); });\n time(\" fixupEdgeLabelCoords\", function() { fixupEdgeLabelCoords(g); });\n time(\" undoCoordinateSystem\", function() { coordinateSystem.undo(g); });\n time(\" translateGraph\", function() { translateGraph(g); });\n time(\" assignNodeIntersects\", function() { assignNodeIntersects(g); });\n time(\" reversePoints\", function() { reversePointsForReversedEdges(g); });\n time(\" acyclic.undo\", function() { acyclic.undo(g); });\n}\n\n/*\n * Copies final layout information from the layout graph back to the input\n * graph. This process only copies whitelisted attributes from the layout graph\n * to the input graph, so it serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction updateInputGraph(inputGraph, layoutGraph) {\n _.forEach(inputGraph.nodes(), function(v) {\n var inputLabel = inputGraph.node(v),\n layoutLabel = layoutGraph.node(v);\n\n if (inputLabel) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n\n if (layoutGraph.children(v).length) {\n inputLabel.width = layoutLabel.width;\n inputLabel.height = layoutLabel.height;\n }\n }\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var inputLabel = inputGraph.edge(e),\n layoutLabel = layoutGraph.edge(e);\n\n inputLabel.points = layoutLabel.points;\n if (_.has(layoutLabel, \"x\")) {\n inputLabel.x = layoutLabel.x;\n inputLabel.y = layoutLabel.y;\n }\n });\n\n inputGraph.graph().width = layoutGraph.graph().width;\n inputGraph.graph().height = layoutGraph.graph().height;\n}\n\nvar graphNumAttrs = [\"nodesep\", \"edgesep\", \"ranksep\", \"marginx\", \"marginy\"],\n graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: \"tb\" },\n graphAttrs = [\"acyclicer\", \"ranker\", \"rankdir\", \"align\"],\n nodeNumAttrs = [\"width\", \"height\"],\n nodeDefaults = { width: 0, height: 0 },\n edgeNumAttrs = [\"minlen\", \"weight\", \"width\", \"height\", \"labeloffset\"],\n edgeDefaults = {\n minlen: 1, weight: 1, width: 0, height: 0,\n labeloffset: 10, labelpos: \"r\"\n },\n edgeAttrs = [\"labelpos\"];\n\n/*\n * Constructs a new graph from the input graph, which can be used for layout.\n * This process copies only whitelisted attributes from the input graph to the\n * layout graph. Thus this function serves as a good place to determine what\n * attributes can influence layout.\n */\nfunction buildLayoutGraph(inputGraph) {\n var g = new Graph({ multigraph: true, compound: true }),\n graph = canonicalize(inputGraph.graph());\n\n g.setGraph(_.merge({},\n graphDefaults,\n selectNumberAttrs(graph, graphNumAttrs),\n _.pick(graph, graphAttrs)));\n\n _.forEach(inputGraph.nodes(), function(v) {\n var node = canonicalize(inputGraph.node(v));\n g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults));\n g.setParent(v, inputGraph.parent(v));\n });\n\n _.forEach(inputGraph.edges(), function(e) {\n var edge = canonicalize(inputGraph.edge(e));\n g.setEdge(e, _.merge({},\n edgeDefaults,\n selectNumberAttrs(edge, edgeNumAttrs),\n _.pick(edge, edgeAttrs)));\n });\n\n return g;\n}\n\n/*\n * This idea comes from the Gansner paper: to account for edge labels in our\n * layout we split each rank in half by doubling minlen and halving ranksep.\n * Then we can place labels at these mid-points between nodes.\n *\n * We also add some minimal padding to the width to push the label for the edge\n * away from the edge itself a bit.\n */\nfunction makeSpaceForEdgeLabels(g) {\n var graph = g.graph();\n graph.ranksep /= 2;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n edge.minlen *= 2;\n if (edge.labelpos.toLowerCase() !== \"c\") {\n if (graph.rankdir === \"TB\" || graph.rankdir === \"BT\") {\n edge.width += edge.labeloffset;\n } else {\n edge.height += edge.labeloffset;\n }\n }\n });\n}\n\n/*\n * Creates temporary dummy nodes that capture the rank in which each edge's\n * label is going to, if it has one of non-zero width and height. We do this\n * so that we can safely remove empty ranks while preserving balance for the\n * label's position.\n */\nfunction injectEdgeLabelProxies(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.width && edge.height) {\n var v = g.node(e.v),\n w = g.node(e.w),\n label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e };\n util.addDummyNode(g, \"edge-proxy\", label, \"_ep\");\n }\n });\n}\n\nfunction assignRankMinMax(g) {\n var maxRank = 0;\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.borderTop) {\n node.minRank = g.node(node.borderTop).rank;\n node.maxRank = g.node(node.borderBottom).rank;\n maxRank = _.max(maxRank, node.maxRank);\n }\n });\n g.graph().maxRank = maxRank;\n}\n\nfunction removeEdgeLabelProxies(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"edge-proxy\") {\n g.edge(node.e).labelRank = node.rank;\n g.removeNode(v);\n }\n });\n}\n\nfunction translateGraph(g) {\n var minX = Number.POSITIVE_INFINITY,\n maxX = 0,\n minY = Number.POSITIVE_INFINITY,\n maxY = 0,\n graphLabel = g.graph(),\n marginX = graphLabel.marginx || 0,\n marginY = graphLabel.marginy || 0;\n\n function getExtremes(attrs) {\n var x = attrs.x,\n y = attrs.y,\n w = attrs.width,\n h = attrs.height;\n minX = Math.min(minX, x - w / 2);\n maxX = Math.max(maxX, x + w / 2);\n minY = Math.min(minY, y - h / 2);\n maxY = Math.max(maxY, y + h / 2);\n }\n\n _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n getExtremes(edge);\n }\n });\n\n minX -= marginX;\n minY -= marginY;\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n node.x -= minX;\n node.y -= minY;\n });\n\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n _.forEach(edge.points, function(p) {\n p.x -= minX;\n p.y -= minY;\n });\n if (_.has(edge, \"x\")) { edge.x -= minX; }\n if (_.has(edge, \"y\")) { edge.y -= minY; }\n });\n\n graphLabel.width = maxX - minX + marginX;\n graphLabel.height = maxY - minY + marginY;\n}\n\nfunction assignNodeIntersects(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e),\n nodeV = g.node(e.v),\n nodeW = g.node(e.w),\n p1, p2;\n if (!edge.points) {\n edge.points = [];\n p1 = nodeW;\n p2 = nodeV;\n } else {\n p1 = edge.points[0];\n p2 = edge.points[edge.points.length - 1];\n }\n edge.points.unshift(util.intersectRect(nodeV, p1));\n edge.points.push(util.intersectRect(nodeW, p2));\n });\n}\n\nfunction fixupEdgeLabelCoords(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (_.has(edge, \"x\")) {\n if (edge.labelpos === \"l\" || edge.labelpos === \"r\") {\n edge.width -= edge.labeloffset;\n }\n switch (edge.labelpos) {\n case \"l\": edge.x -= edge.width / 2 + edge.labeloffset; break;\n case \"r\": edge.x += edge.width / 2 + edge.labeloffset; break;\n }\n }\n });\n}\n\nfunction reversePointsForReversedEdges(g) {\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.reversed) {\n edge.points.reverse();\n }\n });\n}\n\nfunction removeBorderNodes(g) {\n _.forEach(g.nodes(), function(v) {\n if (g.children(v).length) {\n var node = g.node(v),\n t = g.node(node.borderTop),\n b = g.node(node.borderBottom),\n l = g.node(_.last(node.borderLeft)),\n r = g.node(_.last(node.borderRight));\n\n node.width = Math.abs(r.x - l.x);\n node.height = Math.abs(b.y - t.y);\n node.x = l.x + node.width / 2;\n node.y = t.y + node.height / 2;\n }\n });\n\n _.forEach(g.nodes(), function(v) {\n if (g.node(v).dummy === \"border\") {\n g.removeNode(v);\n }\n });\n}\n\nfunction removeSelfEdges(g) {\n _.forEach(g.edges(), function(e) {\n if (e.v === e.w) {\n var node = g.node(e.v);\n if (!node.selfEdges) {\n node.selfEdges = [];\n }\n node.selfEdges.push({ e: e, label: g.edge(e) });\n g.removeEdge(e);\n }\n });\n}\n\nfunction insertSelfEdges(g) {\n var layers = util.buildLayerMatrix(g);\n _.forEach(layers, function(layer) {\n var orderShift = 0;\n _.forEach(layer, function(v, i) {\n var node = g.node(v);\n node.order = i + orderShift;\n _.forEach(node.selfEdges, function(selfEdge) {\n util.addDummyNode(g, \"selfedge\", {\n width: selfEdge.label.width,\n height: selfEdge.label.height,\n rank: node.rank,\n order: i + (++orderShift),\n e: selfEdge.e,\n label: selfEdge.label\n }, \"_se\");\n });\n delete node.selfEdges;\n });\n });\n}\n\nfunction positionSelfEdges(g) {\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (node.dummy === \"selfedge\") {\n var selfNode = g.node(node.e.v),\n x = selfNode.x + selfNode.width / 2,\n y = selfNode.y,\n dx = node.x - x,\n dy = selfNode.height / 2;\n g.setEdge(node.e, node.label);\n g.removeNode(v);\n node.label.points = [\n { x: x + 2 * dx / 3, y: y - dy },\n { x: x + 5 * dx / 6, y: y - dy },\n { x: x + dx , y: y },\n { x: x + 5 * dx / 6, y: y + dy },\n { x: x + 2 * dx / 3, y: y + dy }\n ];\n node.label.x = node.x;\n node.label.y = node.y;\n }\n });\n}\n\nfunction selectNumberAttrs(obj, attrs) {\n return _.mapValues(_.pick(obj, attrs), Number);\n}\n\nfunction canonicalize(attrs) {\n var newAttrs = {};\n _.forEach(attrs, function(v, k) {\n newAttrs[k.toLowerCase()] = v;\n });\n return newAttrs;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n cloneDeep: require(\"lodash/cloneDeep\"),\n constant: require(\"lodash/constant\"),\n defaults: require(\"lodash/defaults\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n find: require(\"lodash/find\"),\n flatten: require(\"lodash/flatten\"),\n forEach: require(\"lodash/forEach\"),\n forIn: require(\"lodash/forIn\"),\n has: require(\"lodash/has\"),\n isUndefined: require(\"lodash/isUndefined\"),\n last: require(\"lodash/last\"),\n map: require(\"lodash/map\"),\n mapValues: require(\"lodash/mapValues\"),\n max: require(\"lodash/max\"),\n merge: require(\"lodash/merge\"),\n min: require(\"lodash/min\"),\n minBy: require(\"lodash/minBy\"),\n now: require(\"lodash/now\"),\n pick: require(\"lodash/pick\"),\n range: require(\"lodash/range\"),\n reduce: require(\"lodash/reduce\"),\n sortBy: require(\"lodash/sortBy\"),\n uniqueId: require(\"lodash/uniqueId\"),\n values: require(\"lodash/values\"),\n zipObject: require(\"lodash/zipObject\"),\n };\n } catch (e) {}\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","var _ = require(\"./lodash\"),\n util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n cleanup: cleanup\n};\n\n/*\n * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs,\n * adds appropriate edges to ensure that all cluster nodes are placed between\n * these boundries, and ensures that the graph is connected.\n *\n * In addition we ensure, through the use of the minlen property, that nodes\n * and subgraph border nodes to not end up on the same rank.\n *\n * Preconditions:\n *\n * 1. Input graph is a DAG\n * 2. Nodes in the input graph has a minlen attribute\n *\n * Postconditions:\n *\n * 1. Input graph is connected.\n * 2. Dummy nodes are added for the tops and bottoms of subgraphs.\n * 3. The minlen attribute for nodes is adjusted to ensure nodes do not\n * get placed on the same rank as subgraph border nodes.\n *\n * The nesting graph idea comes from Sander, \"Layout of Compound Directed\n * Graphs.\"\n */\nfunction run(g) {\n var root = util.addDummyNode(g, \"root\", {}, \"_root\");\n var depths = treeDepths(g);\n var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array\n var nodeSep = 2 * height + 1;\n\n g.graph().nestingRoot = root;\n\n // Multiply minlen by nodeSep to align nodes on non-border ranks.\n _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; });\n\n // Calculate a weight that is sufficient to keep subgraphs vertically compact\n var weight = sumWeights(g) + 1;\n\n // Create border nodes and link them up\n _.forEach(g.children(), function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n });\n\n // Save the multiplier for node layers for later removal of empty border\n // layers.\n g.graph().nodeRankFactor = nodeSep;\n}\n\nfunction dfs(g, root, nodeSep, weight, height, depths, v) {\n var children = g.children(v);\n if (!children.length) {\n if (v !== root) {\n g.setEdge(root, v, { weight: 0, minlen: nodeSep });\n }\n return;\n }\n\n var top = util.addBorderNode(g, \"_bt\"),\n bottom = util.addBorderNode(g, \"_bb\"),\n label = g.node(v);\n\n g.setParent(top, v);\n label.borderTop = top;\n g.setParent(bottom, v);\n label.borderBottom = bottom;\n\n _.forEach(children, function(child) {\n dfs(g, root, nodeSep, weight, height, depths, child);\n\n var childNode = g.node(child),\n childTop = childNode.borderTop ? childNode.borderTop : child,\n childBottom = childNode.borderBottom ? childNode.borderBottom : child,\n thisWeight = childNode.borderTop ? weight : 2 * weight,\n minlen = childTop !== childBottom ? 1 : height - depths[v] + 1;\n\n g.setEdge(top, childTop, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n\n g.setEdge(childBottom, bottom, {\n weight: thisWeight,\n minlen: minlen,\n nestingEdge: true\n });\n });\n\n if (!g.parent(v)) {\n g.setEdge(root, top, { weight: 0, minlen: height + depths[v] });\n }\n}\n\nfunction treeDepths(g) {\n var depths = {};\n function dfs(v, depth) {\n var children = g.children(v);\n if (children && children.length) {\n _.forEach(children, function(child) {\n dfs(child, depth + 1);\n });\n }\n depths[v] = depth;\n }\n _.forEach(g.children(), function(v) { dfs(v, 1); });\n return depths;\n}\n\nfunction sumWeights(g) {\n return _.reduce(g.edges(), function(acc, e) {\n return acc + g.edge(e).weight;\n }, 0);\n}\n\nfunction cleanup(g) {\n var graphLabel = g.graph();\n g.removeNode(graphLabel.nestingRoot);\n delete graphLabel.nestingRoot;\n _.forEach(g.edges(), function(e) {\n var edge = g.edge(e);\n if (edge.nestingEdge) {\n g.removeEdge(e);\n }\n });\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\"),\n util = require(\"./util\");\n\nmodule.exports = {\n run: run,\n undo: undo\n};\n\n/*\n * Breaks any long edges in the graph into short segments that span 1 layer\n * each. This operation is undoable with the denormalize function.\n *\n * Pre-conditions:\n *\n * 1. The input graph is a DAG.\n * 2. Each node in the graph has a \"rank\" property.\n *\n * Post-condition:\n *\n * 1. All edges in the graph have a length of 1.\n * 2. Dummy nodes are added where edges have been split into segments.\n * 3. The graph is augmented with a \"dummyChains\" attribute which contains\n * the first dummy in each chain of dummy nodes produced.\n */\nfunction run(g) {\n g.graph().dummyChains = [];\n _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); });\n}\n\nfunction normalizeEdge(g, e) {\n var v = e.v,\n vRank = g.node(v).rank,\n w = e.w,\n wRank = g.node(w).rank,\n name = e.name,\n edgeLabel = g.edge(e),\n labelRank = edgeLabel.labelRank;\n\n if (wRank === vRank + 1) return;\n\n g.removeEdge(e);\n\n var dummy, attrs, i;\n for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) {\n edgeLabel.points = [];\n attrs = {\n width: 0, height: 0,\n edgeLabel: edgeLabel, edgeObj: e,\n rank: vRank\n };\n dummy = util.addDummyNode(g, \"edge\", attrs, \"_d\");\n if (vRank === labelRank) {\n attrs.width = edgeLabel.width;\n attrs.height = edgeLabel.height;\n attrs.dummy = \"edge-label\";\n attrs.labelpos = edgeLabel.labelpos;\n }\n g.setEdge(v, dummy, { weight: edgeLabel.weight }, name);\n if (i === 0) {\n g.graph().dummyChains.push(dummy);\n }\n v = dummy;\n }\n\n g.setEdge(v, w, { weight: edgeLabel.weight }, name);\n}\n\nfunction undo(g) {\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v),\n origLabel = node.edgeLabel,\n w;\n g.setEdge(node.edgeObj, origLabel);\n while (node.dummy) {\n w = g.successors(v)[0];\n g.removeNode(v);\n origLabel.points.push({ x: node.x, y: node.y });\n if (node.dummy === \"edge-label\") {\n origLabel.x = node.x;\n origLabel.y = node.y;\n origLabel.width = node.width;\n origLabel.height = node.height;\n }\n v = w;\n node = g.node(v);\n }\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = addSubgraphConstraints;\n\nfunction addSubgraphConstraints(g, cg, vs) {\n var prev = {},\n rootPrev;\n\n _.forEach(vs, function(v) {\n var child = g.parent(v),\n parent,\n prevChild;\n while (child) {\n parent = g.parent(child);\n if (parent) {\n prevChild = prev[parent];\n prev[parent] = child;\n } else {\n prevChild = rootPrev;\n rootPrev = child;\n }\n if (prevChild && prevChild !== child) {\n cg.setEdge(prevChild, child);\n return;\n }\n child = parent;\n }\n });\n\n /*\n function dfs(v) {\n var children = v ? g.children(v) : g.children();\n if (children.length) {\n var min = Number.POSITIVE_INFINITY,\n subgraphs = [];\n _.each(children, function(child) {\n var childMin = dfs(child);\n if (g.children(child).length) {\n subgraphs.push({ v: child, order: childMin });\n }\n min = Math.min(min, childMin);\n });\n _.reduce(_.sortBy(subgraphs, \"order\"), function(prev, curr) {\n cg.setEdge(prev.v, curr.v);\n return curr;\n });\n return min;\n }\n return g.node(v).order;\n }\n dfs(undefined);\n */\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = barycenter;\n\nfunction barycenter(g, movable) {\n return _.map(movable, function(v) {\n var inV = g.inEdges(v);\n if (!inV.length) {\n return { v: v };\n } else {\n var result = _.reduce(inV, function(acc, e) {\n var edge = g.edge(e),\n nodeU = g.node(e.v);\n return {\n sum: acc.sum + (edge.weight * nodeU.order),\n weight: acc.weight + edge.weight\n };\n }, { sum: 0, weight: 0 });\n\n return {\n v: v,\n barycenter: result.sum / result.weight,\n weight: result.weight\n };\n }\n });\n}\n\n","var _ = require(\"../lodash\"),\n Graph = require(\"../graphlib\").Graph;\n\nmodule.exports = buildLayerGraph;\n\n/*\n * Constructs a graph that can be used to sort a layer of nodes. The graph will\n * contain all base and subgraph nodes from the request layer in their original\n * hierarchy and any edges that are incident on these nodes and are of the type\n * requested by the \"relationship\" parameter.\n *\n * Nodes from the requested rank that do not have parents are assigned a root\n * node in the output graph, which is set in the root graph attribute. This\n * makes it easy to walk the hierarchy of movable nodes during ordering.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG\n * 2. Base nodes in the input graph have a rank attribute\n * 3. Subgraph nodes in the input graph has minRank and maxRank attributes\n * 4. Edges have an assigned weight\n *\n * Post-conditions:\n *\n * 1. Output graph has all nodes in the movable rank with preserved\n * hierarchy.\n * 2. Root nodes in the movable layer are made children of the node\n * indicated by the root attribute of the graph.\n * 3. Non-movable nodes incident on movable nodes, selected by the\n * relationship parameter, are included in the graph (without hierarchy).\n * 4. Edges incident on movable nodes, selected by the relationship\n * parameter, are added to the output graph.\n * 5. The weights for copied edges are aggregated as need, since the output\n * graph is not a multi-graph.\n */\nfunction buildLayerGraph(g, rank, relationship) {\n var root = createRootNode(g),\n result = new Graph({ compound: true }).setGraph({ root: root })\n .setDefaultNodeLabel(function(v) { return g.node(v); });\n\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n parent = g.parent(v);\n\n if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) {\n result.setNode(v);\n result.setParent(v, parent || root);\n\n // This assumes we have only short edges!\n _.forEach(g[relationship](v), function(e) {\n var u = e.v === v ? e.w : e.v,\n edge = result.edge(u, v),\n weight = !_.isUndefined(edge) ? edge.weight : 0;\n result.setEdge(u, v, { weight: g.edge(e).weight + weight });\n });\n\n if (_.has(node, \"minRank\")) {\n result.setNode(v, {\n borderLeft: node.borderLeft[rank],\n borderRight: node.borderRight[rank]\n });\n }\n }\n });\n\n return result;\n}\n\nfunction createRootNode(g) {\n var v;\n while (g.hasNode((v = _.uniqueId(\"_root\"))));\n return v;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = crossCount;\n\n/*\n * A function that takes a layering (an array of layers, each with an array of\n * ordererd nodes) and a graph and returns a weighted crossing count.\n *\n * Pre-conditions:\n *\n * 1. Input graph must be simple (not a multigraph), directed, and include\n * only simple edges.\n * 2. Edges in the input graph must have assigned weights.\n *\n * Post-conditions:\n *\n * 1. The graph and layering matrix are left unchanged.\n *\n * This algorithm is derived from Barth, et al., \"Bilayer Cross Counting.\"\n */\nfunction crossCount(g, layering) {\n var cc = 0;\n for (var i = 1; i < layering.length; ++i) {\n cc += twoLayerCrossCount(g, layering[i-1], layering[i]);\n }\n return cc;\n}\n\nfunction twoLayerCrossCount(g, northLayer, southLayer) {\n // Sort all of the edges between the north and south layers by their position\n // in the north layer and then the south. Map these edges to the position of\n // their head in the south layer.\n var southPos = _.zipObject(southLayer,\n _.map(southLayer, function (v, i) { return i; }));\n var southEntries = _.flatten(_.map(northLayer, function(v) {\n return _.sortBy(_.map(g.outEdges(v), function(e) {\n return { pos: southPos[e.w], weight: g.edge(e).weight };\n }), \"pos\");\n }), true);\n\n // Build the accumulator tree\n var firstIndex = 1;\n while (firstIndex < southLayer.length) firstIndex <<= 1;\n var treeSize = 2 * firstIndex - 1;\n firstIndex -= 1;\n var tree = _.map(new Array(treeSize), function() { return 0; });\n\n // Calculate the weighted crossings\n var cc = 0;\n _.forEach(southEntries.forEach(function(entry) {\n var index = entry.pos + firstIndex;\n tree[index] += entry.weight;\n var weightSum = 0;\n while (index > 0) {\n if (index % 2) {\n weightSum += tree[index + 1];\n }\n index = (index - 1) >> 1;\n tree[index] += entry.weight;\n }\n cc += entry.weight * weightSum;\n }));\n\n return cc;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\"),\n initOrder = require(\"./init-order\"),\n crossCount = require(\"./cross-count\"),\n sortSubgraph = require(\"./sort-subgraph\"),\n buildLayerGraph = require(\"./build-layer-graph\"),\n addSubgraphConstraints = require(\"./add-subgraph-constraints\"),\n Graph = require(\"../graphlib\").Graph,\n util = require(\"../util\");\n\nmodule.exports = order;\n\n/*\n * Applies heuristics to minimize edge crossings in the graph and sets the best\n * order solution as an order attribute on each node.\n *\n * Pre-conditions:\n *\n * 1. Graph must be DAG\n * 2. Graph nodes must be objects with a \"rank\" attribute\n * 3. Graph edges must have the \"weight\" attribute\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have an \"order\" attribute based on the results of the\n * algorithm.\n */\nfunction order(g) {\n var maxRank = util.maxRank(g),\n downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), \"inEdges\"),\n upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), \"outEdges\");\n\n var layering = initOrder(g);\n assignOrder(g, layering);\n\n var bestCC = Number.POSITIVE_INFINITY,\n best;\n\n for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) {\n sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2);\n\n layering = util.buildLayerMatrix(g);\n var cc = crossCount(g, layering);\n if (cc < bestCC) {\n lastBest = 0;\n best = _.cloneDeep(layering);\n bestCC = cc;\n }\n }\n\n assignOrder(g, best);\n}\n\nfunction buildLayerGraphs(g, ranks, relationship) {\n return _.map(ranks, function(rank) {\n return buildLayerGraph(g, rank, relationship);\n });\n}\n\nfunction sweepLayerGraphs(layerGraphs, biasRight) {\n var cg = new Graph();\n _.forEach(layerGraphs, function(lg) {\n var root = lg.graph().root;\n var sorted = sortSubgraph(lg, root, cg, biasRight);\n _.forEach(sorted.vs, function(v, i) {\n lg.node(v).order = i;\n });\n addSubgraphConstraints(lg, cg, sorted.vs);\n });\n}\n\nfunction assignOrder(g, layering) {\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, i) {\n g.node(v).order = i;\n });\n });\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = initOrder;\n\n/*\n * Assigns an initial order value for each node by performing a DFS search\n * starting from nodes in the first rank. Nodes are assigned an order in their\n * rank as they are first visited.\n *\n * This approach comes from Gansner, et al., \"A Technique for Drawing Directed\n * Graphs.\"\n *\n * Returns a layering matrix with an array per layer and each layer sorted by\n * the order of its nodes.\n */\nfunction initOrder(g) {\n var visited = {},\n simpleNodes = _.filter(g.nodes(), function(v) {\n return !g.children(v).length;\n }),\n maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; })),\n layers = _.map(_.range(maxRank + 1), function() { return []; });\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n var node = g.node(v);\n layers[node.rank].push(v);\n _.forEach(g.successors(v), dfs);\n }\n\n var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; });\n _.forEach(orderedVs, dfs);\n\n return layers;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = resolveConflicts;\n\n/*\n * Given a list of entries of the form {v, barycenter, weight} and a\n * constraint graph this function will resolve any conflicts between the\n * constraint graph and the barycenters for the entries. If the barycenters for\n * an entry would violate a constraint in the constraint graph then we coalesce\n * the nodes in the conflict into a new node that respects the contraint and\n * aggregates barycenter and weight information.\n *\n * This implementation is based on the description in Forster, \"A Fast and\n * Simple Hueristic for Constrained Two-Level Crossing Reduction,\" thought it\n * differs in some specific details.\n *\n * Pre-conditions:\n *\n * 1. Each entry has the form {v, barycenter, weight}, or if the node has\n * no barycenter, then {v}.\n *\n * Returns:\n *\n * A new list of entries of the form {vs, i, barycenter, weight}. The list\n * `vs` may either be a singleton or it may be an aggregation of nodes\n * ordered such that they do not violate constraints from the constraint\n * graph. The property `i` is the lowest original index of any of the\n * elements in `vs`.\n */\nfunction resolveConflicts(entries, cg) {\n var mappedEntries = {};\n _.forEach(entries, function(entry, i) {\n var tmp = mappedEntries[entry.v] = {\n indegree: 0,\n \"in\": [],\n out: [],\n vs: [entry.v],\n i: i\n };\n if (!_.isUndefined(entry.barycenter)) {\n tmp.barycenter = entry.barycenter;\n tmp.weight = entry.weight;\n }\n });\n\n _.forEach(cg.edges(), function(e) {\n var entryV = mappedEntries[e.v],\n entryW = mappedEntries[e.w];\n if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) {\n entryW.indegree++;\n entryV.out.push(mappedEntries[e.w]);\n }\n });\n\n var sourceSet = _.filter(mappedEntries, function(entry) {\n return !entry.indegree;\n });\n\n return doResolveConflicts(sourceSet);\n}\n\nfunction doResolveConflicts(sourceSet) {\n var entries = [];\n\n function handleIn(vEntry) {\n return function(uEntry) {\n if (uEntry.merged) {\n return;\n }\n if (_.isUndefined(uEntry.barycenter) ||\n _.isUndefined(vEntry.barycenter) ||\n uEntry.barycenter >= vEntry.barycenter) {\n mergeEntries(vEntry, uEntry);\n }\n };\n }\n\n function handleOut(vEntry) {\n return function(wEntry) {\n wEntry[\"in\"].push(vEntry);\n if (--wEntry.indegree === 0) {\n sourceSet.push(wEntry);\n }\n };\n }\n\n while (sourceSet.length) {\n var entry = sourceSet.pop();\n entries.push(entry);\n _.forEach(entry[\"in\"].reverse(), handleIn(entry));\n _.forEach(entry.out, handleOut(entry));\n }\n\n return _.map(_.filter(entries, function(entry) { return !entry.merged; }),\n function(entry) {\n return _.pick(entry, [\"vs\", \"i\", \"barycenter\", \"weight\"]);\n });\n\n}\n\nfunction mergeEntries(target, source) {\n var sum = 0,\n weight = 0;\n\n if (target.weight) {\n sum += target.barycenter * target.weight;\n weight += target.weight;\n }\n\n if (source.weight) {\n sum += source.barycenter * source.weight;\n weight += source.weight;\n }\n\n target.vs = source.vs.concat(target.vs);\n target.barycenter = sum / weight;\n target.weight = weight;\n target.i = Math.min(source.i, target.i);\n source.merged = true;\n}\n","var _ = require(\"../lodash\"),\n barycenter = require(\"./barycenter\"),\n resolveConflicts = require(\"./resolve-conflicts\"),\n sort = require(\"./sort\");\n\nmodule.exports = sortSubgraph;\n\nfunction sortSubgraph(g, v, cg, biasRight) {\n var movable = g.children(v),\n node = g.node(v),\n bl = node ? node.borderLeft : undefined,\n br = node ? node.borderRight: undefined,\n subgraphs = {};\n\n if (bl) {\n movable = _.filter(movable, function(w) {\n return w !== bl && w !== br;\n });\n }\n\n var barycenters = barycenter(g, movable);\n _.forEach(barycenters, function(entry) {\n if (g.children(entry.v).length) {\n var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight);\n subgraphs[entry.v] = subgraphResult;\n if (_.has(subgraphResult, \"barycenter\")) {\n mergeBarycenters(entry, subgraphResult);\n }\n }\n });\n\n var entries = resolveConflicts(barycenters, cg);\n expandSubgraphs(entries, subgraphs);\n\n var result = sort(entries, biasRight);\n\n if (bl) {\n result.vs = _.flatten([bl, result.vs, br], true);\n if (g.predecessors(bl).length) {\n var blPred = g.node(g.predecessors(bl)[0]),\n brPred = g.node(g.predecessors(br)[0]);\n if (!_.has(result, \"barycenter\")) {\n result.barycenter = 0;\n result.weight = 0;\n }\n result.barycenter = (result.barycenter * result.weight +\n blPred.order + brPred.order) / (result.weight + 2);\n result.weight += 2;\n }\n }\n\n return result;\n}\n\nfunction expandSubgraphs(entries, subgraphs) {\n _.forEach(entries, function(entry) {\n entry.vs = _.flatten(entry.vs.map(function(v) {\n if (subgraphs[v]) {\n return subgraphs[v].vs;\n }\n return v;\n }), true);\n });\n}\n\nfunction mergeBarycenters(target, other) {\n if (!_.isUndefined(target.barycenter)) {\n target.barycenter = (target.barycenter * target.weight +\n other.barycenter * other.weight) /\n (target.weight + other.weight);\n target.weight += other.weight;\n } else {\n target.barycenter = other.barycenter;\n target.weight = other.weight;\n }\n}\n","var _ = require(\"../lodash\"),\n util = require(\"../util\");\n\nmodule.exports = sort;\n\nfunction sort(entries, biasRight) {\n var parts = util.partition(entries, function(entry) {\n return _.has(entry, \"barycenter\");\n });\n var sortable = parts.lhs,\n unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }),\n vs = [],\n sum = 0,\n weight = 0,\n vsIndex = 0;\n\n sortable.sort(compareWithBias(!!biasRight));\n\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n\n _.forEach(sortable, function (entry) {\n vsIndex += entry.vs.length;\n vs.push(entry.vs);\n sum += entry.barycenter * entry.weight;\n weight += entry.weight;\n vsIndex = consumeUnsortable(vs, unsortable, vsIndex);\n });\n\n var result = { vs: _.flatten(vs, true) };\n if (weight) {\n result.barycenter = sum / weight;\n result.weight = weight;\n }\n return result;\n}\n\nfunction consumeUnsortable(vs, unsortable, index) {\n var last;\n while (unsortable.length && (last = _.last(unsortable)).i <= index) {\n unsortable.pop();\n vs.push(last.vs);\n index++;\n }\n return index;\n}\n\nfunction compareWithBias(bias) {\n return function(entryV, entryW) {\n if (entryV.barycenter < entryW.barycenter) {\n return -1;\n } else if (entryV.barycenter > entryW.barycenter) {\n return 1;\n }\n\n return !bias ? entryV.i - entryW.i : entryW.i - entryV.i;\n };\n}\n","var _ = require(\"./lodash\");\n\nmodule.exports = parentDummyChains;\n\nfunction parentDummyChains(g) {\n var postorderNums = postorder(g);\n\n _.forEach(g.graph().dummyChains, function(v) {\n var node = g.node(v),\n edgeObj = node.edgeObj,\n pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w),\n path = pathData.path,\n lca = pathData.lca,\n pathIdx = 0,\n pathV = path[pathIdx],\n ascending = true;\n\n while (v !== edgeObj.w) {\n node = g.node(v);\n\n if (ascending) {\n while ((pathV = path[pathIdx]) !== lca &&\n g.node(pathV).maxRank < node.rank) {\n pathIdx++;\n }\n\n if (pathV === lca) {\n ascending = false;\n }\n }\n\n if (!ascending) {\n while (pathIdx < path.length - 1 &&\n g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) {\n pathIdx++;\n }\n pathV = path[pathIdx];\n }\n\n g.setParent(v, pathV);\n v = g.successors(v)[0];\n }\n });\n}\n\n// Find a path from v to w through the lowest common ancestor (LCA). Return the\n// full path and the LCA.\nfunction findPath(g, postorderNums, v, w) {\n var vPath = [],\n wPath = [],\n low = Math.min(postorderNums[v].low, postorderNums[w].low),\n lim = Math.max(postorderNums[v].lim, postorderNums[w].lim),\n parent,\n lca;\n\n // Traverse up from v to find the LCA\n parent = v;\n do {\n parent = g.parent(parent);\n vPath.push(parent);\n } while (parent &&\n (postorderNums[parent].low > low || lim > postorderNums[parent].lim));\n lca = parent;\n\n // Traverse from w to LCA\n parent = w;\n while ((parent = g.parent(parent)) !== lca) {\n wPath.push(parent);\n }\n\n return { path: vPath.concat(wPath.reverse()), lca: lca };\n}\n\nfunction postorder(g) {\n var result = {},\n lim = 0;\n\n function dfs(v) {\n var low = lim;\n _.forEach(g.children(v), dfs);\n result[v] = { low: low, lim: lim++ };\n }\n _.forEach(g.children(), dfs);\n\n return result;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\"),\n Graph = require(\"../graphlib\").Graph,\n util = require(\"../util\");\n\n/*\n * This module provides coordinate assignment based on Brandes and Köpf, \"Fast\n * and Simple Horizontal Coordinate Assignment.\"\n */\n\nmodule.exports = {\n positionX: positionX,\n findType1Conflicts: findType1Conflicts,\n findType2Conflicts: findType2Conflicts,\n addConflict: addConflict,\n hasConflict: hasConflict,\n verticalAlignment: verticalAlignment,\n horizontalCompaction: horizontalCompaction,\n alignCoordinates: alignCoordinates,\n findSmallestWidthAlignment: findSmallestWidthAlignment,\n balance: balance\n};\n\n/*\n * Marks all edges in the graph with a type-1 conflict with the \"type1Conflict\"\n * property. A type-1 conflict is one where a non-inner segment crosses an\n * inner segment. An inner segment is an edge with both incident nodes marked\n * with the \"dummy\" property.\n *\n * This algorithm scans layer by layer, starting with the second, for type-1\n * conflicts between the current layer and the previous layer. For each layer\n * it scans the nodes from left to right until it reaches one that is incident\n * on an inner segment. It then scans predecessors to determine if they have\n * edges that cross that inner segment. At the end a final scan is done for all\n * nodes on the current rank to see if they cross the last visited inner\n * segment.\n *\n * This algorithm (safely) assumes that a dummy node will only be incident on a\n * single node in the layers being scanned.\n */\nfunction findType1Conflicts(g, layering) {\n var conflicts = {};\n\n function visitLayer(prevLayer, layer) {\n var\n // last visited node in the previous layer that is incident on an inner\n // segment.\n k0 = 0,\n // Tracks the last node in this layer scanned for crossings with a type-1\n // segment.\n scanPos = 0,\n prevLayerLength = prevLayer.length,\n lastNode = _.last(layer);\n\n _.forEach(layer, function(v, i) {\n var w = findOtherInnerSegmentNode(g, v),\n k1 = w ? g.node(w).order : prevLayerLength;\n\n if (w || v === lastNode) {\n _.forEach(layer.slice(scanPos, i +1), function(scanNode) {\n _.forEach(g.predecessors(scanNode), function(u) {\n var uLabel = g.node(u),\n uPos = uLabel.order;\n if ((uPos < k0 || k1 < uPos) &&\n !(uLabel.dummy && g.node(scanNode).dummy)) {\n addConflict(conflicts, u, scanNode);\n }\n });\n });\n scanPos = i + 1;\n k0 = k1;\n }\n });\n\n return layer;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findType2Conflicts(g, layering) {\n var conflicts = {};\n\n function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) {\n var v;\n _.forEach(_.range(southPos, southEnd), function(i) {\n v = south[i];\n if (g.node(v).dummy) {\n _.forEach(g.predecessors(v), function(u) {\n var uNode = g.node(u);\n if (uNode.dummy &&\n (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) {\n addConflict(conflicts, u, v);\n }\n });\n }\n });\n }\n\n\n function visitLayer(north, south) {\n var prevNorthPos = -1,\n nextNorthPos,\n southPos = 0;\n\n _.forEach(south, function(v, southLookahead) {\n if (g.node(v).dummy === \"border\") {\n var predecessors = g.predecessors(v);\n if (predecessors.length) {\n nextNorthPos = g.node(predecessors[0]).order;\n scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos);\n southPos = southLookahead;\n prevNorthPos = nextNorthPos;\n }\n }\n scan(south, southPos, south.length, nextNorthPos, north.length);\n });\n\n return south;\n }\n\n _.reduce(layering, visitLayer);\n return conflicts;\n}\n\nfunction findOtherInnerSegmentNode(g, v) {\n if (g.node(v).dummy) {\n return _.find(g.predecessors(v), function(u) {\n return g.node(u).dummy;\n });\n }\n}\n\nfunction addConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n\n var conflictsV = conflicts[v];\n if (!conflictsV) {\n conflicts[v] = conflictsV = {};\n }\n conflictsV[w] = true;\n}\n\nfunction hasConflict(conflicts, v, w) {\n if (v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return _.has(conflicts[v], w);\n}\n\n/*\n * Try to align nodes into vertical \"blocks\" where possible. This algorithm\n * attempts to align a node with one of its median neighbors. If the edge\n * connecting a neighbor is a type-1 conflict then we ignore that possibility.\n * If a previous node has already formed a block with a node after the node\n * we're trying to form a block with, we also ignore that possibility - our\n * blocks would be split in that scenario.\n */\nfunction verticalAlignment(g, layering, conflicts, neighborFn) {\n var root = {},\n align = {},\n pos = {};\n\n // We cache the position here based on the layering because the graph and\n // layering may be out of sync. The layering matrix is manipulated to\n // generate different extreme alignments.\n _.forEach(layering, function(layer) {\n _.forEach(layer, function(v, order) {\n root[v] = v;\n align[v] = v;\n pos[v] = order;\n });\n });\n\n _.forEach(layering, function(layer) {\n var prevIdx = -1;\n _.forEach(layer, function(v) {\n var ws = neighborFn(v);\n if (ws.length) {\n ws = _.sortBy(ws, function(w) { return pos[w]; });\n var mp = (ws.length - 1) / 2;\n for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) {\n var w = ws[i];\n if (align[v] === v &&\n prevIdx < pos[w] &&\n !hasConflict(conflicts, v, w)) {\n align[w] = v;\n align[v] = root[v] = root[w];\n prevIdx = pos[w];\n }\n }\n }\n });\n });\n\n return { root: root, align: align };\n}\n\nfunction horizontalCompaction(g, layering, root, align, reverseSep) {\n // This portion of the algorithm differs from BK due to a number of problems.\n // Instead of their algorithm we construct a new block graph and do two\n // sweeps. The first sweep places blocks with the smallest possible\n // coordinates. The second sweep removes unused space by moving blocks to the\n // greatest coordinates without violating separation.\n var xs = {},\n blockG = buildBlockGraph(g, layering, root, reverseSep),\n borderType = reverseSep ? \"borderLeft\" : \"borderRight\";\n\n function iterate(setXsFunc, nextNodesFunc) {\n var stack = blockG.nodes();\n var elem = stack.pop();\n var visited = {};\n while (elem) {\n if (visited[elem]) {\n setXsFunc(elem);\n } else {\n visited[elem] = true;\n stack.push(elem);\n stack = stack.concat(nextNodesFunc(elem));\n }\n\n elem = stack.pop();\n }\n }\n\n // First pass, assign smallest coordinates\n function pass1(elem) {\n xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) {\n return Math.max(acc, xs[e.v] + blockG.edge(e));\n }, 0);\n }\n\n // Second pass, assign greatest coordinates\n function pass2(elem) {\n var min = blockG.outEdges(elem).reduce(function(acc, e) {\n return Math.min(acc, xs[e.w] - blockG.edge(e));\n }, Number.POSITIVE_INFINITY);\n\n var node = g.node(elem);\n if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) {\n xs[elem] = Math.max(xs[elem], min);\n }\n }\n\n iterate(pass1, blockG.predecessors.bind(blockG));\n iterate(pass2, blockG.successors.bind(blockG));\n\n // Assign x coordinates to all nodes\n _.forEach(align, function(v) {\n xs[v] = xs[root[v]];\n });\n\n return xs;\n}\n\n\nfunction buildBlockGraph(g, layering, root, reverseSep) {\n var blockGraph = new Graph(),\n graphLabel = g.graph(),\n sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep);\n\n _.forEach(layering, function(layer) {\n var u;\n _.forEach(layer, function(v) {\n var vRoot = root[v];\n blockGraph.setNode(vRoot);\n if (u) {\n var uRoot = root[u],\n prevMax = blockGraph.edge(uRoot, vRoot);\n blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0));\n }\n u = v;\n });\n });\n\n return blockGraph;\n}\n\n/*\n * Returns the alignment that has the smallest width of the given alignments.\n */\nfunction findSmallestWidthAlignment(g, xss) {\n return _.minBy(_.values(xss), function (xs) {\n var max = Number.NEGATIVE_INFINITY;\n var min = Number.POSITIVE_INFINITY;\n\n _.forIn(xs, function (x, v) {\n var halfWidth = width(g, v) / 2;\n\n max = Math.max(x + halfWidth, max);\n min = Math.min(x - halfWidth, min);\n });\n\n return max - min;\n });\n}\n\n/*\n * Align the coordinates of each of the layout alignments such that\n * left-biased alignments have their minimum coordinate at the same point as\n * the minimum coordinate of the smallest width alignment and right-biased\n * alignments have their maximum coordinate at the same point as the maximum\n * coordinate of the smallest width alignment.\n */\nfunction alignCoordinates(xss, alignTo) {\n var alignToVals = _.values(alignTo),\n alignToMin = _.min(alignToVals),\n alignToMax = _.max(alignToVals);\n\n _.forEach([\"u\", \"d\"], function(vert) {\n _.forEach([\"l\", \"r\"], function(horiz) {\n var alignment = vert + horiz,\n xs = xss[alignment],\n delta;\n if (xs === alignTo) return;\n\n var xsVals = _.values(xs);\n delta = horiz === \"l\" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals);\n\n if (delta) {\n xss[alignment] = _.mapValues(xs, function(x) { return x + delta; });\n }\n });\n });\n}\n\nfunction balance(xss, align) {\n return _.mapValues(xss.ul, function(ignore, v) {\n if (align) {\n return xss[align.toLowerCase()][v];\n } else {\n var xs = _.sortBy(_.map(xss, v));\n return (xs[1] + xs[2]) / 2;\n }\n });\n}\n\nfunction positionX(g) {\n var layering = util.buildLayerMatrix(g),\n conflicts = _.merge(findType1Conflicts(g, layering),\n findType2Conflicts(g, layering));\n\n var xss = {},\n adjustedLayering;\n _.forEach([\"u\", \"d\"], function(vert) {\n adjustedLayering = vert === \"u\" ? layering : _.values(layering).reverse();\n _.forEach([\"l\", \"r\"], function(horiz) {\n if (horiz === \"r\") {\n adjustedLayering = _.map(adjustedLayering, function(inner) {\n return _.values(inner).reverse();\n });\n }\n\n var neighborFn = (vert === \"u\" ? g.predecessors : g.successors).bind(g);\n var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn);\n var xs = horizontalCompaction(g, adjustedLayering,\n align.root, align.align,\n horiz === \"r\");\n if (horiz === \"r\") {\n xs = _.mapValues(xs, function(x) { return -x; });\n }\n xss[vert + horiz] = xs;\n });\n });\n\n var smallestWidth = findSmallestWidthAlignment(g, xss);\n alignCoordinates(xss, smallestWidth);\n return balance(xss, g.graph().align);\n}\n\nfunction sep(nodeSep, edgeSep, reverseSep) {\n return function(g, v, w) {\n var vLabel = g.node(v),\n wLabel = g.node(w),\n sum = 0,\n delta;\n\n sum += vLabel.width / 2;\n if (_.has(vLabel, \"labelpos\")) {\n switch (vLabel.labelpos.toLowerCase()) {\n case \"l\": delta = -vLabel.width / 2; break;\n case \"r\": delta = vLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n sum += (vLabel.dummy ? edgeSep : nodeSep) / 2;\n sum += (wLabel.dummy ? edgeSep : nodeSep) / 2;\n\n sum += wLabel.width / 2;\n if (_.has(wLabel, \"labelpos\")) {\n switch (wLabel.labelpos.toLowerCase()) {\n case \"l\": delta = wLabel.width / 2; break;\n case \"r\": delta = -wLabel.width / 2; break;\n }\n }\n if (delta) {\n sum += reverseSep ? delta : -delta;\n }\n delta = 0;\n\n return sum;\n };\n}\n\nfunction width(g, v) {\n return g.node(v).width;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\"),\n util = require(\"../util\"),\n positionX = require(\"./bk\").positionX;\n\nmodule.exports = position;\n\nfunction position(g) {\n g = util.asNonCompoundGraph(g);\n\n positionY(g);\n _.forEach(positionX(g), function(x, v) {\n g.node(v).x = x;\n });\n}\n\nfunction positionY(g) {\n var layering = util.buildLayerMatrix(g),\n rankSep = g.graph().ranksep,\n prevY = 0;\n _.forEach(layering, function(layer) {\n var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; }));\n _.forEach(layer, function(v) {\n g.node(v).y = prevY + maxHeight / 2;\n });\n prevY += maxHeight + rankSep;\n });\n}\n\n","\"use strict\";\n\nvar _ = require(\"../lodash\"),\n Graph = require(\"../graphlib\").Graph,\n slack = require(\"./util\").slack;\n\nmodule.exports = feasibleTree;\n\n/*\n * Constructs a spanning tree with tight edges and adjusted the input node's\n * ranks to achieve this. A tight edge is one that is has a length that matches\n * its \"minlen\" attribute.\n *\n * The basic structure for this function is derived from Gansner, et al., \"A\n * Technique for Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a DAG.\n * 2. Graph must be connected.\n * 3. Graph must have at least one node.\n * 5. Graph nodes must have been previously assigned a \"rank\" property that\n * respects the \"minlen\" property of incident edges.\n * 6. Graph edges must have a \"minlen\" property.\n *\n * Post-conditions:\n *\n * - Graph nodes will have their rank adjusted to ensure that all edges are\n * tight.\n *\n * Returns a tree (undirected graph) that is constructed using only \"tight\"\n * edges.\n */\nfunction feasibleTree(g) {\n var t = new Graph({ directed: false });\n\n // Choose arbitrary node from which to start our tree\n var start = g.nodes()[0],\n size = g.nodeCount();\n t.setNode(start, {});\n\n var edge, delta;\n while (tightTree(t, g) < size) {\n edge = findMinSlackEdge(t, g);\n delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge);\n shiftRanks(t, g, delta);\n }\n\n return t;\n}\n\n/*\n * Finds a maximal tree of tight edges and returns the number of nodes in the\n * tree.\n */\nfunction tightTree(t, g) {\n function dfs(v) {\n _.forEach(g.nodeEdges(v), function(e) {\n var edgeV = e.v,\n w = (v === edgeV) ? e.w : edgeV;\n if (!t.hasNode(w) && !slack(g, e)) {\n t.setNode(w, {});\n t.setEdge(v, w, {});\n dfs(w);\n }\n });\n }\n\n _.forEach(t.nodes(), dfs);\n return t.nodeCount();\n}\n\n/*\n * Finds the edge with the smallest slack that is incident on tree and returns\n * it.\n */\nfunction findMinSlackEdge(t, g) {\n return _.minBy(g.edges(), function(e) {\n if (t.hasNode(e.v) !== t.hasNode(e.w)) {\n return slack(g, e);\n }\n });\n}\n\nfunction shiftRanks(t, g, delta) {\n _.forEach(t.nodes(), function(v) {\n g.node(v).rank += delta;\n });\n}\n","\"use strict\";\n\nvar rankUtil = require(\"./util\"),\n longestPath = rankUtil.longestPath,\n feasibleTree = require(\"./feasible-tree\"),\n networkSimplex = require(\"./network-simplex\");\n\nmodule.exports = rank;\n\n/*\n * Assigns a rank to each node in the input graph that respects the \"minlen\"\n * constraint specified on edges between nodes.\n *\n * This basic structure is derived from Gansner, et al., \"A Technique for\n * Drawing Directed Graphs.\"\n *\n * Pre-conditions:\n *\n * 1. Graph must be a connected DAG\n * 2. Graph nodes must be objects\n * 3. Graph edges must have \"weight\" and \"minlen\" attributes\n *\n * Post-conditions:\n *\n * 1. Graph nodes will have a \"rank\" attribute based on the results of the\n * algorithm. Ranks can start at any index (including negative), we'll\n * fix them up later.\n */\nfunction rank(g) {\n switch(g.graph().ranker) {\n case \"network-simplex\": networkSimplexRanker(g); break;\n case \"tight-tree\": tightTreeRanker(g); break;\n case \"longest-path\": longestPathRanker(g); break;\n default: networkSimplexRanker(g);\n }\n}\n\n// A fast and simple ranker, but results are far from optimal.\nvar longestPathRanker = longestPath;\n\nfunction tightTreeRanker(g) {\n longestPath(g);\n feasibleTree(g);\n}\n\nfunction networkSimplexRanker(g) {\n networkSimplex(g);\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\"),\n feasibleTree = require(\"./feasible-tree\"),\n slack = require(\"./util\").slack,\n initRank = require(\"./util\").longestPath,\n preorder = require(\"../graphlib\").alg.preorder,\n postorder = require(\"../graphlib\").alg.postorder,\n simplify = require(\"../util\").simplify;\n\nmodule.exports = networkSimplex;\n\n// Expose some internals for testing purposes\nnetworkSimplex.initLowLimValues = initLowLimValues;\nnetworkSimplex.initCutValues = initCutValues;\nnetworkSimplex.calcCutValue = calcCutValue;\nnetworkSimplex.leaveEdge = leaveEdge;\nnetworkSimplex.enterEdge = enterEdge;\nnetworkSimplex.exchangeEdges = exchangeEdges;\n\n/*\n * The network simplex algorithm assigns ranks to each node in the input graph\n * and iteratively improves the ranking to reduce the length of edges.\n *\n * Preconditions:\n *\n * 1. The input graph must be a DAG.\n * 2. All nodes in the graph must have an object value.\n * 3. All edges in the graph must have \"minlen\" and \"weight\" attributes.\n *\n * Postconditions:\n *\n * 1. All nodes in the graph will have an assigned \"rank\" attribute that has\n * been optimized by the network simplex algorithm. Ranks start at 0.\n *\n *\n * A rough sketch of the algorithm is as follows:\n *\n * 1. Assign initial ranks to each node. We use the longest path algorithm,\n * which assigns ranks to the lowest position possible. In general this\n * leads to very wide bottom ranks and unnecessarily long edges.\n * 2. Construct a feasible tight tree. A tight tree is one such that all\n * edges in the tree have no slack (difference between length of edge\n * and minlen for the edge). This by itself greatly improves the assigned\n * rankings by shorting edges.\n * 3. Iteratively find edges that have negative cut values. Generally a\n * negative cut value indicates that the edge could be removed and a new\n * tree edge could be added to produce a more compact graph.\n *\n * Much of the algorithms here are derived from Gansner, et al., \"A Technique\n * for Drawing Directed Graphs.\" The structure of the file roughly follows the\n * structure of the overall algorithm.\n */\nfunction networkSimplex(g) {\n g = simplify(g);\n initRank(g);\n var t = feasibleTree(g);\n initLowLimValues(t);\n initCutValues(t, g);\n\n var e, f;\n while ((e = leaveEdge(t))) {\n f = enterEdge(t, g, e);\n exchangeEdges(t, g, e, f);\n }\n}\n\n/*\n * Initializes cut values for all edges in the tree.\n */\nfunction initCutValues(t, g) {\n var vs = postorder(t, t.nodes());\n vs = vs.slice(0, vs.length - 1);\n _.forEach(vs, function(v) {\n assignCutValue(t, g, v);\n });\n}\n\nfunction assignCutValue(t, g, child) {\n var childLab = t.node(child),\n parent = childLab.parent;\n t.edge(child, parent).cutvalue = calcCutValue(t, g, child);\n}\n\n/*\n * Given the tight tree, its graph, and a child in the graph calculate and\n * return the cut value for the edge between the child and its parent.\n */\nfunction calcCutValue(t, g, child) {\n var childLab = t.node(child),\n parent = childLab.parent,\n // True if the child is on the tail end of the edge in the directed graph\n childIsTail = true,\n // The graph's view of the tree edge we're inspecting\n graphEdge = g.edge(child, parent),\n // The accumulated cut value for the edge between this node and its parent\n cutValue = 0;\n\n if (!graphEdge) {\n childIsTail = false;\n graphEdge = g.edge(parent, child);\n }\n\n cutValue = graphEdge.weight;\n\n _.forEach(g.nodeEdges(child), function(e) {\n var isOutEdge = e.v === child,\n other = isOutEdge ? e.w : e.v;\n\n if (other !== parent) {\n var pointsToHead = isOutEdge === childIsTail,\n otherWeight = g.edge(e).weight;\n\n cutValue += pointsToHead ? otherWeight : -otherWeight;\n if (isTreeEdge(t, child, other)) {\n var otherCutValue = t.edge(child, other).cutvalue;\n cutValue += pointsToHead ? -otherCutValue : otherCutValue;\n }\n }\n });\n\n return cutValue;\n}\n\nfunction initLowLimValues(tree, root) {\n if (arguments.length < 2) {\n root = tree.nodes()[0];\n }\n dfsAssignLowLim(tree, {}, 1, root);\n}\n\nfunction dfsAssignLowLim(tree, visited, nextLim, v, parent) {\n var low = nextLim,\n label = tree.node(v);\n\n visited[v] = true;\n _.forEach(tree.neighbors(v), function(w) {\n if (!_.has(visited, w)) {\n nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v);\n }\n });\n\n label.low = low;\n label.lim = nextLim++;\n if (parent) {\n label.parent = parent;\n } else {\n // TODO should be able to remove this when we incrementally update low lim\n delete label.parent;\n }\n\n return nextLim;\n}\n\nfunction leaveEdge(tree) {\n return _.find(tree.edges(), function(e) {\n return tree.edge(e).cutvalue < 0;\n });\n}\n\nfunction enterEdge(t, g, edge) {\n var v = edge.v,\n w = edge.w;\n\n // For the rest of this function we assume that v is the tail and w is the\n // head, so if we don't have this edge in the graph we should flip it to\n // match the correct orientation.\n if (!g.hasEdge(v, w)) {\n v = edge.w;\n w = edge.v;\n }\n\n var vLabel = t.node(v),\n wLabel = t.node(w),\n tailLabel = vLabel,\n flip = false;\n\n // If the root is in the tail of the edge then we need to flip the logic that\n // checks for the head and tail nodes in the candidates function below.\n if (vLabel.lim > wLabel.lim) {\n tailLabel = wLabel;\n flip = true;\n }\n\n var candidates = _.filter(g.edges(), function(edge) {\n return flip === isDescendant(t, t.node(edge.v), tailLabel) &&\n flip !== isDescendant(t, t.node(edge.w), tailLabel);\n });\n\n return _.minBy(candidates, function(edge) { return slack(g, edge); });\n}\n\nfunction exchangeEdges(t, g, e, f) {\n var v = e.v,\n w = e.w;\n t.removeEdge(v, w);\n t.setEdge(f.v, f.w, {});\n initLowLimValues(t);\n initCutValues(t, g);\n updateRanks(t, g);\n}\n\nfunction updateRanks(t, g) {\n var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; }),\n vs = preorder(t, root);\n vs = vs.slice(1);\n _.forEach(vs, function(v) {\n var parent = t.node(v).parent,\n edge = g.edge(v, parent),\n flipped = false;\n\n if (!edge) {\n edge = g.edge(parent, v);\n flipped = true;\n }\n\n g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen);\n });\n}\n\n/*\n * Returns true if the edge is in the tree.\n */\nfunction isTreeEdge(tree, u, v) {\n return tree.hasEdge(u, v);\n}\n\n/*\n * Returns true if the specified node is descendant of the root node per the\n * assigned low and lim attributes in the tree.\n */\nfunction isDescendant(tree, vLabel, rootLabel) {\n return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim;\n}\n","\"use strict\";\n\nvar _ = require(\"../lodash\");\n\nmodule.exports = {\n longestPath: longestPath,\n slack: slack\n};\n\n/*\n * Initializes ranks for the input graph using the longest path algorithm. This\n * algorithm scales well and is fast in practice, it yields rather poor\n * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom\n * ranks wide and leaving edges longer than necessary. However, due to its\n * speed, this algorithm is good for getting an initial ranking that can be fed\n * into other algorithms.\n *\n * This algorithm does not normalize layers because it will be used by other\n * algorithms in most cases. If using this algorithm directly, be sure to\n * run normalize at the end.\n *\n * Pre-conditions:\n *\n * 1. Input graph is a DAG.\n * 2. Input graph node labels can be assigned properties.\n *\n * Post-conditions:\n *\n * 1. Each node will be assign an (unnormalized) \"rank\" property.\n */\nfunction longestPath(g) {\n var visited = {};\n\n function dfs(v) {\n var label = g.node(v);\n if (_.has(visited, v)) {\n return label.rank;\n }\n visited[v] = true;\n\n var rank = _.min(_.map(g.outEdges(v), function(e) {\n return dfs(e.w) - g.edge(e).minlen;\n }));\n\n if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3\n rank === undefined || // return value of _.map([]) for Lodash 4\n rank === null) { // return value of _.map([null])\n rank = 0;\n }\n\n return (label.rank = rank);\n }\n\n _.forEach(g.sources(), dfs);\n}\n\n/*\n * Returns the amount of slack for the given edge. The slack is defined as the\n * difference between the length of the edge and its minimum length.\n */\nfunction slack(g, e) {\n return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen;\n}\n","\"use strict\";\n\nvar _ = require(\"./lodash\"),\n Graph = require(\"./graphlib\").Graph;\n\nmodule.exports = {\n addDummyNode: addDummyNode,\n simplify: simplify,\n asNonCompoundGraph: asNonCompoundGraph,\n successorWeights: successorWeights,\n predecessorWeights: predecessorWeights,\n intersectRect: intersectRect,\n buildLayerMatrix: buildLayerMatrix,\n normalizeRanks: normalizeRanks,\n removeEmptyRanks: removeEmptyRanks,\n addBorderNode: addBorderNode,\n maxRank: maxRank,\n partition: partition,\n time: time,\n notime: notime\n};\n\n/*\n * Adds a dummy node to the graph and return v.\n */\nfunction addDummyNode(g, type, attrs, name) {\n var v;\n do {\n v = _.uniqueId(name);\n } while (g.hasNode(v));\n\n attrs.dummy = type;\n g.setNode(v, attrs);\n return v;\n}\n\n/*\n * Returns a new graph with only simple edges. Handles aggregation of data\n * associated with multi-edges.\n */\nfunction simplify(g) {\n var simplified = new Graph().setGraph(g.graph());\n _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); });\n _.forEach(g.edges(), function(e) {\n var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 },\n label = g.edge(e);\n simplified.setEdge(e.v, e.w, {\n weight: simpleLabel.weight + label.weight,\n minlen: Math.max(simpleLabel.minlen, label.minlen)\n });\n });\n return simplified;\n}\n\nfunction asNonCompoundGraph(g) {\n var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph());\n _.forEach(g.nodes(), function(v) {\n if (!g.children(v).length) {\n simplified.setNode(v, g.node(v));\n }\n });\n _.forEach(g.edges(), function(e) {\n simplified.setEdge(e, g.edge(e));\n });\n return simplified;\n}\n\nfunction successorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var sucs = {};\n _.forEach(g.outEdges(v), function(e) {\n sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight;\n });\n return sucs;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\nfunction predecessorWeights(g) {\n var weightMap = _.map(g.nodes(), function(v) {\n var preds = {};\n _.forEach(g.inEdges(v), function(e) {\n preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight;\n });\n return preds;\n });\n return _.zipObject(g.nodes(), weightMap);\n}\n\n/*\n * Finds where a line starting at point ({x, y}) would intersect a rectangle\n * ({x, y, width, height}) if it were pointing at the rectangle's center.\n */\nfunction intersectRect(rect, point) {\n var x = rect.x;\n var y = rect.y;\n\n // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n var dx = point.x - x;\n var dy = point.y - y;\n var w = rect.width / 2;\n var h = rect.height / 2;\n\n if (!dx && !dy) {\n throw new Error(\"Not possible to find intersection inside of the rectangle\");\n }\n\n var sx, sy;\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n sx = h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n sx = w;\n sy = w * dy / dx;\n }\n\n return { x: x + sx, y: y + sy };\n}\n\n/*\n * Given a DAG with each node assigned \"rank\" and \"order\" properties, this\n * function will produce a matrix with the ids of each node.\n */\nfunction buildLayerMatrix(g) {\n var layering = _.map(_.range(maxRank(g) + 1), function() { return []; });\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v),\n rank = node.rank;\n if (!_.isUndefined(rank)) {\n layering[rank][node.order] = v;\n }\n });\n return layering;\n}\n\n/*\n * Adjusts the ranks for all nodes in the graph such that all nodes v have\n * rank(v) >= 0 and at least one node w has rank(w) = 0.\n */\nfunction normalizeRanks(g) {\n var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n _.forEach(g.nodes(), function(v) {\n var node = g.node(v);\n if (_.has(node, \"rank\")) {\n node.rank -= min;\n }\n });\n}\n\nfunction removeEmptyRanks(g) {\n // Ranks may not start at 0, so we need to offset them\n var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; }));\n\n var layers = [];\n _.forEach(g.nodes(), function(v) {\n var rank = g.node(v).rank - offset;\n if (!layers[rank]) {\n layers[rank] = [];\n }\n layers[rank].push(v);\n });\n\n var delta = 0,\n nodeRankFactor = g.graph().nodeRankFactor;\n _.forEach(layers, function(vs, i) {\n if (_.isUndefined(vs) && i % nodeRankFactor !== 0) {\n --delta;\n } else if (delta) {\n _.forEach(vs, function(v) { g.node(v).rank += delta; });\n }\n });\n}\n\nfunction addBorderNode(g, prefix, rank, order) {\n var node = {\n width: 0,\n height: 0\n };\n if (arguments.length >= 4) {\n node.rank = rank;\n node.order = order;\n }\n return addDummyNode(g, \"border\", node, prefix);\n}\n\nfunction maxRank(g) {\n return _.max(_.map(g.nodes(), function(v) {\n var rank = g.node(v).rank;\n if (!_.isUndefined(rank)) {\n return rank;\n }\n }));\n}\n\n/*\n * Partition a collection into two groups: `lhs` and `rhs`. If the supplied\n * function returns true for an entry it goes into `lhs`. Otherwise it goes\n * into `rhs.\n */\nfunction partition(collection, fn) {\n var result = { lhs: [], rhs: [] };\n _.forEach(collection, function(value) {\n if (fn(value)) {\n result.lhs.push(value);\n } else {\n result.rhs.push(value);\n }\n });\n return result;\n}\n\n/*\n * Returns a new function that wraps `fn` with a timer. The wrapper logs the\n * time it takes to execute the function.\n */\nfunction time(name, fn) {\n var start = _.now();\n try {\n return fn();\n } finally {\n console.log(name + \" time: \" + (_.now() - start) + \"ms\");\n }\n}\n\nfunction notime(name, fn) {\n return fn();\n}\n","module.exports = \"0.8.4\";\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n function isAnyIeVersion() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n if(!isAnyIeVersion()) {\n return false;\n }\n\n if(!version) {\n return true;\n }\n\n //Shamelessly stolen from https://gist.github.com/padolsey/527683\n var ieVersion = (function(){\n var undef,\n v = 3,\n div = document.createElement(\"div\"),\n all = div.getElementsByTagName(\"i\");\n\n do {\n div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n }\n while (all[0]);\n\n return v > 4 ? v : undef;\n }());\n\n return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n return !!window.opera;\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n for(var i = 0; i < collection.length; i++) {\n var result = callback(collection[i]);\n if(result) {\n return result;\n }\n }\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n\n if(!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n function listenerProxy() {\n listener(element);\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support object, but supports the resize event directly on elements.\n getState(element).object = {\n proxy: listenerProxy\n };\n element.attachEvent(\"onresize\", listenerProxy);\n } else {\n var object = getObject(element);\n\n if(!object) {\n throw new Error(\"Element is not detectable by this strategy.\");\n }\n\n object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n }\n }\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n var debug = options.debug;\n\n function injectObject(element, callback) {\n var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n var positionCheckPerformed = false;\n\n // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n var style = window.getComputedStyle(element);\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n getState(element).startSize = {\n width: width,\n height: height\n };\n\n function mutateDom() {\n function alterPositionStyles() {\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function onObjectLoad() {\n // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n if (!positionCheckPerformed) {\n alterPositionStyles();\n }\n\n /*jshint validthis: true */\n\n function getDocument(element, callback) {\n //Opera 12 seem to call the object.onload before the actual document has been created.\n //So if it is not present, poll it with an timeout until it is present.\n //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n if(!element.contentDocument) {\n var state = getState(element);\n if (state.checkForObjectDocumentTimeoutId) {\n window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n }\n state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n state.checkForObjectDocumentTimeoutId = 0;\n getDocument(element, callback);\n }, 100);\n\n return;\n }\n\n callback(element.contentDocument);\n }\n\n //Mutating the object element here seems to fire another load event.\n //Mutating the inner document of the object element is fine though.\n var objectElement = this;\n\n //Create the style element to be added to the object.\n getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n //Notify that the element is ready to be listened to.\n callback(element);\n });\n }\n\n // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n if (style.position !== \"\") {\n alterPositionStyles(style);\n positionCheckPerformed = true;\n }\n\n //Add an object element as a child to the target element that will be listened to for resize events.\n var object = document.createElement(\"object\");\n object.style.cssText = OBJECT_STYLE;\n object.tabIndex = -1;\n object.type = \"text/html\";\n object.setAttribute(\"aria-hidden\", \"true\");\n object.onload = onObjectLoad;\n\n //Safari: This must occur before adding the object to the DOM.\n //IE: Does not like that this happens before, even if it is also added after.\n if(!browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n\n if (!getState(element)) {\n // The element has been uninstalled before the actual loading happened.\n return;\n }\n\n element.appendChild(object);\n getState(element).object = object;\n\n //IE: This must occur after adding the object to the DOM.\n if(browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n }\n\n if(batchProcessor) {\n batchProcessor.add(mutateDom);\n } else {\n mutateDom();\n }\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support objects properly. Luckily they do support the resize event.\n //So do not inject the object and notify that the element is already ready to be listened to.\n //The event handler for the resize event is attached in the utils.addListener instead.\n callback(element);\n } else {\n injectObject(element, callback);\n }\n }\n\n /**\n * Returns the child object of the target element.\n * @private\n * @param {element} element The target element.\n * @returns The object element of the target.\n */\n function getObject(element) {\n return getState(element).object;\n }\n\n function uninstall(element) {\n if (!getState(element)) {\n return;\n }\n\n var object = getObject(element);\n\n if (!object) {\n return;\n }\n\n if (browserDetector.isIE(8)) {\n element.detachEvent(\"onresize\", object.proxy);\n } else {\n element.removeChild(object);\n }\n\n if (getState(element).checkForObjectDocumentTimeoutId) {\n window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n }\n\n delete getState(element).object;\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall\n };\n};\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n var hasState = options.stateHandler.hasState;\n var idHandler = options.idHandler;\n\n if (!batchProcessor) {\n throw new Error(\"Missing required dependency: batchProcessor\");\n }\n\n if (!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n //TODO: Could this perhaps be done at installation time?\n var scrollbarSizes = getScrollbarSizes();\n\n var styleId = \"erd_scroll_detection_scrollbar_style\";\n var detectionContainerClass = \"erd_scroll_detection_container\";\n\n function initDocument(targetDocument) {\n // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n }\n\n initDocument(window.document);\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n function getScrollbarSizes() {\n var width = 500;\n var height = 500;\n\n var child = document.createElement(\"div\");\n child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n var container = document.createElement(\"div\");\n container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n container.appendChild(child);\n\n document.body.insertBefore(container, document.body.firstChild);\n\n var widthSize = width - container.clientWidth;\n var heightSize = height - container.clientHeight;\n\n document.body.removeChild(container);\n\n return {\n width: widthSize,\n height: heightSize\n };\n }\n\n function injectScrollStyle(targetDocument, styleId, containerClass) {\n function injectStyle(style, method) {\n method = method || function (element) {\n targetDocument.head.appendChild(element);\n };\n\n var styleElement = targetDocument.createElement(\"style\");\n styleElement.innerHTML = style;\n styleElement.id = styleId;\n method(styleElement);\n return styleElement;\n }\n\n if (!targetDocument.getElementById(styleId)) {\n var containerAnimationClass = containerClass + \"_animation\";\n var containerAnimationActiveClass = containerClass + \"_animation_active\";\n var style = \"/* Created by the element-resize-detector library. */\\n\";\n style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n style += \"@-webkit-keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n style += \"@keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n injectStyle(style);\n }\n }\n\n function addAnimationClass(element) {\n element.className += \" \" + detectionContainerClass + \"_animation_active\";\n }\n\n function addEvent(el, name, cb) {\n if (el.addEventListener) {\n el.addEventListener(name, cb);\n } else if(el.attachEvent) {\n el.attachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n }\n }\n\n function removeEvent(el, name, cb) {\n if (el.removeEventListener) {\n el.removeEventListener(name, cb);\n } else if(el.detachEvent) {\n el.detachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n }\n }\n\n function getExpandElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n }\n\n function getShrinkElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n var listeners = getState(element).listeners;\n\n if (!listeners.push) {\n throw new Error(\"Cannot add listener to an element that is not detectable.\");\n }\n\n getState(element).listeners.push(listener);\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n\n function debug() {\n if (options.debug) {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(idHandler.get(element), \"Scroll: \");\n if (reporter.log.apply) {\n reporter.log.apply(null, args);\n } else {\n for (var i = 0; i < args.length; i++) {\n reporter.log(args[i]);\n }\n }\n }\n }\n\n function isDetached(element) {\n function isInDocument(element) {\n return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);\n }\n\n if (!isInDocument(element)) {\n return true;\n }\n\n // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n if (window.getComputedStyle(element) === null) {\n return true;\n }\n\n return false;\n }\n\n function isUnrendered(element) {\n // Check the absolute positioned container since the top level container is display: inline.\n var container = getState(element).container.childNodes[0];\n var style = window.getComputedStyle(container);\n return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n }\n\n function getStyle() {\n // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n var elementStyle = window.getComputedStyle(element);\n var style = {};\n style.position = elementStyle.position;\n style.width = element.offsetWidth;\n style.height = element.offsetHeight;\n style.top = elementStyle.top;\n style.right = elementStyle.right;\n style.bottom = elementStyle.bottom;\n style.left = elementStyle.left;\n style.widthCSS = elementStyle.width;\n style.heightCSS = elementStyle.height;\n return style;\n }\n\n function storeStartSize() {\n var style = getStyle();\n getState(element).startSize = {\n width: style.width,\n height: style.height\n };\n debug(\"Element start size\", getState(element).startSize);\n }\n\n function initListeners() {\n getState(element).listeners = [];\n }\n\n function storeStyle() {\n debug(\"storeStyle invoked.\");\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getStyle();\n getState(element).style = style;\n }\n\n function storeCurrentSize(element, width, height) {\n getState(element).lastWidth = width;\n getState(element).lastHeight = height;\n }\n\n function getExpandChildElement(element) {\n return getExpandElement(element).childNodes[0];\n }\n\n function getWidthOffset() {\n return 2 * scrollbarSizes.width + 1;\n }\n\n function getHeightOffset() {\n return 2 * scrollbarSizes.height + 1;\n }\n\n function getExpandWidth(width) {\n return width + 10 + getWidthOffset();\n }\n\n function getExpandHeight(height) {\n return height + 10 + getHeightOffset();\n }\n\n function getShrinkWidth(width) {\n return width * 2 + getWidthOffset();\n }\n\n function getShrinkHeight(height) {\n return height * 2 + getHeightOffset();\n }\n\n function positionScrollbars(element, width, height) {\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n var shrinkWidth = getShrinkWidth(width);\n var shrinkHeight = getShrinkHeight(height);\n expand.scrollLeft = expandWidth;\n expand.scrollTop = expandHeight;\n shrink.scrollLeft = shrinkWidth;\n shrink.scrollTop = shrinkHeight;\n }\n\n function injectContainerElement() {\n var container = getState(element).container;\n\n if (!container) {\n container = document.createElement(\"div\");\n container.className = detectionContainerClass;\n container.style.cssText = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n getState(element).container = container;\n addAnimationClass(container);\n element.appendChild(container);\n\n var onAnimationStart = function () {\n getState(element).onRendered && getState(element).onRendered();\n };\n\n addEvent(container, \"animationstart\", onAnimationStart);\n\n // Store the event handler here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onAnimationStart = onAnimationStart;\n }\n\n return container;\n }\n\n function injectScrollElements() {\n function alterPositionStyles() {\n var style = getState(element).style;\n\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style[property] = 0;\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function getLeftTopBottomRightCssText(left, top, bottom, right) {\n left = (!left ? \"0\" : (left + \"px\"));\n top = (!top ? \"0\" : (top + \"px\"));\n bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n right = (!right ? \"0\" : (right + \"px\"));\n\n return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n }\n\n debug(\"Injecting elements\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n alterPositionStyles();\n\n var rootContainer = getState(element).container;\n\n if (!rootContainer) {\n rootContainer = injectContainerElement();\n }\n\n // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n // the targeted element.\n // When the bug is resolved, \"containerContainer\" may be removed.\n\n // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n var scrollbarWidth = scrollbarSizes.width;\n var scrollbarHeight = scrollbarSizes.height;\n var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n var containerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n var expandStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var shrinkStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var expandChildStyle = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n var shrinkChildStyle = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n var containerContainer = document.createElement(\"div\");\n var container = document.createElement(\"div\");\n var expand = document.createElement(\"div\");\n var expandChild = document.createElement(\"div\");\n var shrink = document.createElement(\"div\");\n var shrinkChild = document.createElement(\"div\");\n\n // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n containerContainer.dir = \"ltr\";\n\n containerContainer.style.cssText = containerContainerStyle;\n containerContainer.className = detectionContainerClass;\n container.className = detectionContainerClass;\n container.style.cssText = containerStyle;\n expand.style.cssText = expandStyle;\n expandChild.style.cssText = expandChildStyle;\n shrink.style.cssText = shrinkStyle;\n shrinkChild.style.cssText = shrinkChildStyle;\n\n expand.appendChild(expandChild);\n shrink.appendChild(shrinkChild);\n container.appendChild(expand);\n container.appendChild(shrink);\n containerContainer.appendChild(container);\n rootContainer.appendChild(containerContainer);\n\n function onExpandScroll() {\n getState(element).onExpand && getState(element).onExpand();\n }\n\n function onShrinkScroll() {\n getState(element).onShrink && getState(element).onShrink();\n }\n\n addEvent(expand, \"scroll\", onExpandScroll);\n addEvent(shrink, \"scroll\", onShrinkScroll);\n\n // Store the event handlers here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onExpandScroll = onExpandScroll;\n getState(element).onShrinkScroll = onShrinkScroll;\n }\n\n function registerListenersAndPositionElements() {\n function updateChildSizes(element, width, height) {\n var expandChild = getExpandChildElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n }\n\n function updateDetectorElements(done) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n debug(\"Storing current size\", width, height);\n\n // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n // Otherwise the if-check in handleScroll is useless.\n storeCurrentSize(element, width, height);\n\n // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n batchProcessor.add(0, function performUpdateChildSizes() {\n if (!sizeChanged) {\n return;\n }\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n if (options.debug) {\n var w = element.offsetWidth;\n var h = element.offsetHeight;\n\n if (w !== width || h !== height) {\n reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n }\n }\n\n updateChildSizes(element, width, height);\n });\n\n batchProcessor.add(1, function updateScrollbars() {\n // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n // been restored to the original size, which will have changed the scrollbar positions.\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n positionScrollbars(element, width, height);\n });\n\n if (sizeChanged && done) {\n batchProcessor.add(2, function () {\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n done();\n });\n }\n }\n\n function areElementsInjected() {\n return !!getState(element).container;\n }\n\n function notifyListenersIfNeeded() {\n function isFirstNotify() {\n return getState(element).lastNotifiedWidth === undefined;\n }\n\n debug(\"notifyListenersIfNeeded invoked\");\n\n var state = getState(element);\n\n // Don't notify if the current size is the start size, and this is the first notification.\n if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n }\n\n // Don't notify if the size already has been notified.\n if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n return debug(\"Not notifying: Size already notified\");\n }\n\n\n debug(\"Current size not notified, notifying...\");\n state.lastNotifiedWidth = state.lastWidth;\n state.lastNotifiedHeight = state.lastHeight;\n forEach(getState(element).listeners, function (listener) {\n listener(element);\n });\n }\n\n function handleRender() {\n debug(\"startanimation triggered.\");\n\n if (isUnrendered(element)) {\n debug(\"Ignoring since element is still unrendered...\");\n return;\n }\n\n debug(\"Element rendered.\");\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n debug(\"Scrollbars out of sync. Updating detector elements...\");\n updateDetectorElements(notifyListenersIfNeeded);\n }\n }\n\n function handleScroll() {\n debug(\"Scroll detected.\");\n\n if (isUnrendered(element)) {\n // Element is still unrendered. Skip this scroll event.\n debug(\"Scroll event fired while unrendered. Ignoring...\");\n return;\n }\n\n updateDetectorElements(notifyListenersIfNeeded);\n }\n\n debug(\"registerListenersAndPositionElements invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n getState(element).onRendered = handleRender;\n getState(element).onExpand = handleScroll;\n getState(element).onShrink = handleScroll;\n\n var style = getState(element).style;\n updateChildSizes(element, style.width, style.height);\n }\n\n function finalizeDomMutation() {\n debug(\"finalizeDomMutation invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getState(element).style;\n storeCurrentSize(element, style.width, style.height);\n positionScrollbars(element, style.width, style.height);\n }\n\n function ready() {\n callback(element);\n }\n\n function install() {\n debug(\"Installing...\");\n initListeners();\n storeStartSize();\n\n batchProcessor.add(0, storeStyle);\n batchProcessor.add(1, injectScrollElements);\n batchProcessor.add(2, registerListenersAndPositionElements);\n batchProcessor.add(3, finalizeDomMutation);\n batchProcessor.add(4, ready);\n }\n\n debug(\"Making detectable...\");\n\n if (isDetached(element)) {\n debug(\"Element is detached\");\n\n injectContainerElement();\n\n debug(\"Waiting until element is attached...\");\n\n getState(element).onRendered = function () {\n debug(\"Element is now attached\");\n install();\n };\n } else {\n install();\n }\n }\n\n function uninstall(element) {\n var state = getState(element);\n\n if (!state) {\n // Uninstall has been called on a non-erd element.\n return;\n }\n\n // Uninstall may have been called in the following scenarios:\n // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n // So to be on the safe side, let's check for each thing before removing.\n\n // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n state.container && element.removeChild(state.container);\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n","\"use strict\";\n\nvar forEach = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker = require(\"./element-utils\");\nvar listenerHandlerMaker = require(\"./listener-handler\");\nvar idGeneratorMaker = require(\"./id-generator\");\nvar idHandlerMaker = require(\"./id-handler\");\nvar reporterMaker = require(\"./reporter\");\nvar browserDetector = require(\"./browser-detector\");\nvar batchProcessorMaker = require(\"batch-processor\");\nvar stateHandler = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n if (!Array.isArray(collection)) {\n var array = [];\n forEach(collection, function (obj) {\n array.push(obj);\n });\n return array;\n } else {\n return collection;\n }\n}\n\nfunction isElement(obj) {\n return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.\n Default is true. If true, the listener is guaranteed to be called when it has been added.\n If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n If not provided, a default id handler will be used.\n * @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.\n If not provided, a default id handler will be used.\n If set to false, then nothing will be reported.\n * @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n options = options || {};\n\n //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var idHandler;\n\n if (options.idHandler) {\n // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n idHandler = {\n get: function (element) { return options.idHandler.get(element, true); },\n set: options.idHandler.set\n };\n } else {\n var idGenerator = idGeneratorMaker();\n var defaultIdHandler = idHandlerMaker({\n idGenerator: idGenerator,\n stateHandler: stateHandler\n });\n idHandler = defaultIdHandler;\n }\n\n //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var reporter = options.reporter;\n\n if(!reporter) {\n //If options.reporter is false, then the reporter should be quiet.\n var quiet = reporter === false;\n reporter = reporterMaker(quiet);\n }\n\n //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n //Options to be used as default for the listenTo function.\n var globalOptions = {};\n globalOptions.callOnAdd = !!getOption(options, \"callOnAdd\", true);\n globalOptions.debug = !!getOption(options, \"debug\", false);\n\n var eventListenerHandler = listenerHandlerMaker(idHandler);\n var elementUtils = elementUtilsMaker({\n stateHandler: stateHandler\n });\n\n //The detection strategy to be used.\n var detectionStrategy;\n var desiredStrategy = getOption(options, \"strategy\", \"object\");\n var importantCssRules = getOption(options, \"important\", false);\n var strategyOptions = {\n reporter: reporter,\n batchProcessor: batchProcessor,\n stateHandler: stateHandler,\n idHandler: idHandler,\n important: importantCssRules\n };\n\n if(desiredStrategy === \"scroll\") {\n if (browserDetector.isLegacyOpera()) {\n reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n desiredStrategy = \"object\";\n } else if (browserDetector.isIE(9)) {\n reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n desiredStrategy = \"object\";\n }\n }\n\n if(desiredStrategy === \"scroll\") {\n detectionStrategy = scrollStrategyMaker(strategyOptions);\n } else if(desiredStrategy === \"object\") {\n detectionStrategy = objectStrategyMaker(strategyOptions);\n } else {\n throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n }\n\n //Calls can be made to listenTo with elements that are still being installed.\n //Also, same elements can occur in the elements list in the listenTo function.\n //With this map, the ready callbacks can be synchronized between the calls\n //so that the ready callback can always be called when an element is ready - even if\n //it wasn't installed from the function itself.\n var onReadyCallbacks = {};\n\n /**\n * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n * @public\n * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n * @param {function} listener The callback to be executed for each resize event for each element.\n */\n function listenTo(options, elements, listener) {\n function onResizeCallback(element) {\n var listeners = eventListenerHandler.get(element);\n forEach(listeners, function callListenerProxy(listener) {\n listener(element);\n });\n }\n\n function addListener(callOnAdd, element, listener) {\n eventListenerHandler.add(element, listener);\n\n if(callOnAdd) {\n listener(element);\n }\n }\n\n //Options object may be omitted.\n if(!listener) {\n listener = elements;\n elements = options;\n options = {};\n }\n\n if(!elements) {\n throw new Error(\"At least one element required.\");\n }\n\n if(!listener) {\n throw new Error(\"Listener required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n var elementsReady = 0;\n\n var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n var debug = getOption(options, \"debug\", globalOptions.debug);\n\n forEach(elements, function attachListenerToElement(element) {\n if (!stateHandler.getState(element)) {\n stateHandler.initState(element);\n idHandler.set(element);\n }\n\n var id = idHandler.get(element);\n\n debug && reporter.log(\"Attaching listener to element\", id, element);\n\n if(!elementUtils.isDetectable(element)) {\n debug && reporter.log(id, \"Not detectable.\");\n if(elementUtils.isBusy(element)) {\n debug && reporter.log(id, \"System busy making it detectable\");\n\n //The element is being prepared to be detectable. Do not make it detectable.\n //Just add the listener, because the element will soon be detectable.\n addListener(callOnAdd, element, listener);\n onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n onReadyCallbacks[id].push(function onReady() {\n elementsReady++;\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n return;\n }\n\n debug && reporter.log(id, \"Making detectable...\");\n //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n elementUtils.markBusy(element, true);\n return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n debug && reporter.log(id, \"onElementDetectable\");\n\n if (stateHandler.getState(element)) {\n elementUtils.markAsDetectable(element);\n elementUtils.markBusy(element, false);\n detectionStrategy.addListener(element, onResizeCallback);\n addListener(callOnAdd, element, listener);\n\n // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n // so that a resize event may be emitted.\n // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n // Also, check the state existance before since the element may have been uninstalled in the installation process.\n var state = stateHandler.getState(element);\n if (state && state.startSize) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (state.startSize.width !== width || state.startSize.height !== height) {\n onResizeCallback(element);\n }\n }\n\n if(onReadyCallbacks[id]) {\n forEach(onReadyCallbacks[id], function(callback) {\n callback();\n });\n }\n } else {\n // The element has been unisntalled before being detectable.\n debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n }\n\n delete onReadyCallbacks[id];\n\n elementsReady++;\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n }\n\n debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n //The element has been prepared to be detectable and is ready to be listened to.\n addListener(callOnAdd, element, listener);\n elementsReady++;\n });\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n }\n\n function uninstall(elements) {\n if(!elements) {\n return reporter.error(\"At least one element is required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n forEach(elements, function (element) {\n eventListenerHandler.removeAllListeners(element);\n detectionStrategy.uninstall(element);\n stateHandler.cleanState(element);\n });\n }\n\n function initDocument(targetDocument) {\n detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n }\n\n return {\n listenTo: listenTo,\n removeListener: eventListenerHandler.removeListener,\n removeAllListeners: eventListenerHandler.removeAllListeners,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","\"use strict\";\n\nmodule.exports = function(options) {\n var getState = options.stateHandler.getState;\n\n /**\n * Tells if the element has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is detectable or not.\n */\n function isDetectable(element) {\n var state = getState(element);\n return state && !!state.isDetectable;\n }\n\n /**\n * Marks the element that it has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to mark.\n */\n function markAsDetectable(element) {\n getState(element).isDetectable = true;\n }\n\n /**\n * Tells if the element is busy or not.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is busy or not.\n */\n function isBusy(element) {\n return !!getState(element).busy;\n }\n\n /**\n * Marks the object is busy and should not be made detectable.\n * @public\n * @param {element} element The element to mark.\n * @param {boolean} busy If the element is busy or not.\n */\n function markBusy(element, busy) {\n getState(element).busy = !!busy;\n }\n\n return {\n isDetectable: isDetectable,\n markAsDetectable: markAsDetectable,\n isBusy: isBusy,\n markBusy: markBusy\n };\n};\n","\"use strict\";\n\nmodule.exports = function() {\n var idCount = 1;\n\n /**\n * Generates a new unique id in the context.\n * @public\n * @returns {number} A unique id in the context.\n */\n function generate() {\n return idCount++;\n }\n\n return {\n generate: generate\n };\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n var idGenerator = options.idGenerator;\n var getState = options.stateHandler.getState;\n\n /**\n * Gets the resize detector id of the element.\n * @public\n * @param {element} element The target element to get the id of.\n * @returns {string|number|null} The id of the element. Null if it has no id.\n */\n function getId(element) {\n var state = getState(element);\n\n if (state && state.id !== undefined) {\n return state.id;\n }\n\n return null;\n }\n\n /**\n * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n * @public\n * @param {element} element The target element to set the id of.\n * @returns {string|number|null} The id of the element.\n */\n function setId(element) {\n var state = getState(element);\n\n if (!state) {\n throw new Error(\"setId required the element to have a resize detection state.\");\n }\n\n var id = idGenerator.generate();\n\n state.id = id;\n\n return id;\n }\n\n return {\n get: getId,\n set: setId\n };\n};\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n var eventListeners = {};\n\n /**\n * Gets all listeners for the given element.\n * @public\n * @param {element} element The element to get all listeners for.\n * @returns All listeners for the given element.\n */\n function getListeners(element) {\n var id = idHandler.get(element);\n\n if (id === undefined) {\n return [];\n }\n\n return eventListeners[id] || [];\n }\n\n /**\n * Stores the given listener for the given element. Will not actually add the listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The callback that the element has added.\n */\n function addListener(element, listener) {\n var id = idHandler.get(element);\n\n if(!eventListeners[id]) {\n eventListeners[id] = [];\n }\n\n eventListeners[id].push(listener);\n }\n\n function removeListener(element, listener) {\n var listeners = getListeners(element);\n for (var i = 0, len = listeners.length; i < len; ++i) {\n if (listeners[i] === listener) {\n listeners.splice(i, 1);\n break;\n }\n }\n }\n\n function removeAllListeners(element) {\n var listeners = getListeners(element);\n if (!listeners) { return; }\n listeners.length = 0;\n }\n\n return {\n get: getListeners,\n add: addListener,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners\n };\n};\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n function noop() {\n //Does nothing.\n }\n\n var reporter = {\n log: noop,\n warn: noop,\n error: noop\n };\n\n if(!quiet && window.console) {\n var attachFunction = function(reporter, name) {\n //The proxy is needed to be able to call the method with the console context,\n //since we cannot use bind.\n reporter[name] = function reporterProxy() {\n var f = console[name];\n if (f.apply) { //IE9 does not support console.log.apply :)\n f.apply(console, arguments);\n } else {\n for (var i = 0; i < arguments.length; i++) {\n f(arguments[i]);\n }\n }\n };\n };\n\n attachFunction(reporter, \"log\");\n attachFunction(reporter, \"warn\");\n attachFunction(reporter, \"error\");\n }\n\n return reporter;\n};","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n element[prop] = {};\n return getState(element);\n}\n\nfunction getState(element) {\n return element[prop];\n}\n\nfunction cleanState(element) {\n delete element[prop];\n}\n\nmodule.exports = {\n initState: initState,\n getState: getState,\n cleanState: cleanState\n};\n","/**\n * @see https://github.com/vuejs/vue/commit/a855dd0564a657a73b7249469490d39817f27cf7#diff-c0a2623ea5896a83e3b630f236b47b52\n * @see https://stackoverflow.com/a/13091266/4936667\n */\n\nvar decoder;\n\nexport default function decode(html) {\n decoder = decoder || document.createElement('div');\n // Escape HTML before decoding for HTML Entities\n html = escape(html).replace(/%26/g,'&').replace(/%23/g,'#').replace(/%3B/g,';');\n // decoding\n decoder.innerHTML = html;\n\n return unescape(decoder.textContent);\n}\n","export default __webpack_public_path__ + \"codicon.ttf\";","/**\n * Copyright (c) 2014, Chris Pettitt\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this\n * list of conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n * this list of conditions and the following disclaimer in the documentation\n * and/or other materials provided with the distribution.\n *\n * 3. Neither the name of the copyright holder nor the names of its contributors\n * may be used to endorse or promote products derived from this software without\n * specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar lib = require(\"./lib\");\n\nmodule.exports = {\n Graph: lib.Graph,\n json: require(\"./lib/json\"),\n alg: require(\"./lib/alg\"),\n version: lib.version\n};\n","var _ = require(\"../lodash\");\n\nmodule.exports = components;\n\nfunction components(g) {\n var visited = {},\n cmpts = [],\n cmpt;\n\n function dfs(v) {\n if (_.has(visited, v)) return;\n visited[v] = true;\n cmpt.push(v);\n _.each(g.successors(v), dfs);\n _.each(g.predecessors(v), dfs);\n }\n\n _.each(g.nodes(), function(v) {\n cmpt = [];\n dfs(v);\n if (cmpt.length) {\n cmpts.push(cmpt);\n }\n });\n\n return cmpts;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = dfs;\n\n/*\n * A helper that preforms a pre- or post-order traversal on the input graph\n * and returns the nodes in the order they were visited. If the graph is\n * undirected then this algorithm will navigate using neighbors. If the graph\n * is directed then this algorithm will navigate using successors.\n *\n * Order must be one of \"pre\" or \"post\".\n */\nfunction dfs(g, vs, order) {\n if (!_.isArray(vs)) {\n vs = [vs];\n }\n\n var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g);\n\n var acc = [],\n visited = {};\n _.each(vs, function(v) {\n if (!g.hasNode(v)) {\n throw new Error(\"Graph does not have node: \" + v);\n }\n\n doDfs(g, v, order === \"post\", visited, navigation, acc);\n });\n return acc;\n}\n\nfunction doDfs(g, v, postorder, visited, navigation, acc) {\n if (!_.has(visited, v)) {\n visited[v] = true;\n\n if (!postorder) { acc.push(v); }\n _.each(navigation(v), function(w) {\n doDfs(g, w, postorder, visited, navigation, acc);\n });\n if (postorder) { acc.push(v); }\n }\n}\n","var dijkstra = require(\"./dijkstra\"),\n _ = require(\"../lodash\");\n\nmodule.exports = dijkstraAll;\n\nfunction dijkstraAll(g, weightFunc, edgeFunc) {\n return _.transform(g.nodes(), function(acc, v) {\n acc[v] = dijkstra(g, v, weightFunc, edgeFunc);\n }, {});\n}\n","var _ = require(\"../lodash\"),\n PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = dijkstra;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction dijkstra(g, source, weightFn, edgeFn) {\n return runDijkstra(g, String(source),\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runDijkstra(g, source, weightFn, edgeFn) {\n var results = {},\n pq = new PriorityQueue(),\n v, vEntry;\n\n var updateNeighbors = function(edge) {\n var w = edge.v !== v ? edge.v : edge.w,\n wEntry = results[w],\n weight = weightFn(edge),\n distance = vEntry.distance + weight;\n\n if (weight < 0) {\n throw new Error(\"dijkstra does not allow negative edge weights. \" +\n \"Bad edge: \" + edge + \" Weight: \" + weight);\n }\n\n if (distance < wEntry.distance) {\n wEntry.distance = distance;\n wEntry.predecessor = v;\n pq.decrease(w, distance);\n }\n };\n\n g.nodes().forEach(function(v) {\n var distance = v === source ? 0 : Number.POSITIVE_INFINITY;\n results[v] = { distance: distance };\n pq.add(v, distance);\n });\n\n while (pq.size() > 0) {\n v = pq.removeMin();\n vEntry = results[v];\n if (vEntry.distance === Number.POSITIVE_INFINITY) {\n break;\n }\n\n edgeFn(v).forEach(updateNeighbors);\n }\n\n return results;\n}\n","var _ = require(\"../lodash\"),\n tarjan = require(\"./tarjan\");\n\nmodule.exports = findCycles;\n\nfunction findCycles(g) {\n return _.filter(tarjan(g), function(cmpt) {\n return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]));\n });\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = floydWarshall;\n\nvar DEFAULT_WEIGHT_FUNC = _.constant(1);\n\nfunction floydWarshall(g, weightFn, edgeFn) {\n return runFloydWarshall(g,\n weightFn || DEFAULT_WEIGHT_FUNC,\n edgeFn || function(v) { return g.outEdges(v); });\n}\n\nfunction runFloydWarshall(g, weightFn, edgeFn) {\n var results = {},\n nodes = g.nodes();\n\n nodes.forEach(function(v) {\n results[v] = {};\n results[v][v] = { distance: 0 };\n nodes.forEach(function(w) {\n if (v !== w) {\n results[v][w] = { distance: Number.POSITIVE_INFINITY };\n }\n });\n edgeFn(v).forEach(function(edge) {\n var w = edge.v === v ? edge.w : edge.v,\n d = weightFn(edge);\n results[v][w] = { distance: d, predecessor: v };\n });\n });\n\n nodes.forEach(function(k) {\n var rowK = results[k];\n nodes.forEach(function(i) {\n var rowI = results[i];\n nodes.forEach(function(j) {\n var ik = rowI[k];\n var kj = rowK[j];\n var ij = rowI[j];\n var altDistance = ik.distance + kj.distance;\n if (altDistance < ij.distance) {\n ij.distance = altDistance;\n ij.predecessor = kj.predecessor;\n }\n });\n });\n });\n\n return results;\n}\n","module.exports = {\n components: require(\"./components\"),\n dijkstra: require(\"./dijkstra\"),\n dijkstraAll: require(\"./dijkstra-all\"),\n findCycles: require(\"./find-cycles\"),\n floydWarshall: require(\"./floyd-warshall\"),\n isAcyclic: require(\"./is-acyclic\"),\n postorder: require(\"./postorder\"),\n preorder: require(\"./preorder\"),\n prim: require(\"./prim\"),\n tarjan: require(\"./tarjan\"),\n topsort: require(\"./topsort\")\n};\n","var topsort = require(\"./topsort\");\n\nmodule.exports = isAcyclic;\n\nfunction isAcyclic(g) {\n try {\n topsort(g);\n } catch (e) {\n if (e instanceof topsort.CycleException) {\n return false;\n }\n throw e;\n }\n return true;\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = postorder;\n\nfunction postorder(g, vs) {\n return dfs(g, vs, \"post\");\n}\n","var dfs = require(\"./dfs\");\n\nmodule.exports = preorder;\n\nfunction preorder(g, vs) {\n return dfs(g, vs, \"pre\");\n}\n","var _ = require(\"../lodash\"),\n Graph = require(\"../graph\"),\n PriorityQueue = require(\"../data/priority-queue\");\n\nmodule.exports = prim;\n\nfunction prim(g, weightFunc) {\n var result = new Graph(),\n parents = {},\n pq = new PriorityQueue(),\n v;\n\n function updateNeighbors(edge) {\n var w = edge.v === v ? edge.w : edge.v,\n pri = pq.priority(w);\n if (pri !== undefined) {\n var edgeWeight = weightFunc(edge);\n if (edgeWeight < pri) {\n parents[w] = v;\n pq.decrease(w, edgeWeight);\n }\n }\n }\n\n if (g.nodeCount() === 0) {\n return result;\n }\n\n _.each(g.nodes(), function(v) {\n pq.add(v, Number.POSITIVE_INFINITY);\n result.setNode(v);\n });\n\n // Start from an arbitrary node\n pq.decrease(g.nodes()[0], 0);\n\n var init = false;\n while (pq.size() > 0) {\n v = pq.removeMin();\n if (_.has(parents, v)) {\n result.setEdge(v, parents[v]);\n } else if (init) {\n throw new Error(\"Input graph is not connected: \" + g);\n } else {\n init = true;\n }\n\n g.nodeEdges(v).forEach(updateNeighbors);\n }\n\n return result;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = tarjan;\n\nfunction tarjan(g) {\n var index = 0,\n stack = [],\n visited = {}, // node id -> { onStack, lowlink, index }\n results = [];\n\n function dfs(v) {\n var entry = visited[v] = {\n onStack: true,\n lowlink: index,\n index: index++\n };\n stack.push(v);\n\n g.successors(v).forEach(function(w) {\n if (!_.has(visited, w)) {\n dfs(w);\n entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink);\n } else if (visited[w].onStack) {\n entry.lowlink = Math.min(entry.lowlink, visited[w].index);\n }\n });\n\n if (entry.lowlink === entry.index) {\n var cmpt = [],\n w;\n do {\n w = stack.pop();\n visited[w].onStack = false;\n cmpt.push(w);\n } while (v !== w);\n results.push(cmpt);\n }\n }\n\n g.nodes().forEach(function(v) {\n if (!_.has(visited, v)) {\n dfs(v);\n }\n });\n\n return results;\n}\n","var _ = require(\"../lodash\");\n\nmodule.exports = topsort;\ntopsort.CycleException = CycleException;\n\nfunction topsort(g) {\n var visited = {},\n stack = {},\n results = [];\n\n function visit(node) {\n if (_.has(stack, node)) {\n throw new CycleException();\n }\n\n if (!_.has(visited, node)) {\n stack[node] = true;\n visited[node] = true;\n _.each(g.predecessors(node), visit);\n delete stack[node];\n results.push(node);\n }\n }\n\n _.each(g.sinks(), visit);\n\n if (_.size(visited) !== g.nodeCount()) {\n throw new CycleException();\n }\n\n return results;\n}\n\nfunction CycleException() {}\nCycleException.prototype = new Error(); // must be an instance of Error to pass testing","var _ = require(\"../lodash\");\n\nmodule.exports = PriorityQueue;\n\n/**\n * A min-priority queue data structure. This algorithm is derived from Cormen,\n * et al., \"Introduction to Algorithms\". The basic idea of a min-priority\n * queue is that you can efficiently (in O(1) time) get the smallest key in\n * the queue. Adding and removing elements takes O(log n) time. A key can\n * have its priority decreased in O(log n) time.\n */\nfunction PriorityQueue() {\n this._arr = [];\n this._keyIndices = {};\n}\n\n/**\n * Returns the number of elements in the queue. Takes `O(1)` time.\n */\nPriorityQueue.prototype.size = function() {\n return this._arr.length;\n};\n\n/**\n * Returns the keys that are in the queue. Takes `O(n)` time.\n */\nPriorityQueue.prototype.keys = function() {\n return this._arr.map(function(x) { return x.key; });\n};\n\n/**\n * Returns `true` if **key** is in the queue and `false` if not.\n */\nPriorityQueue.prototype.has = function(key) {\n return _.has(this._keyIndices, key);\n};\n\n/**\n * Returns the priority for **key**. If **key** is not present in the queue\n * then this function returns `undefined`. Takes `O(1)` time.\n *\n * @param {Object} key\n */\nPriorityQueue.prototype.priority = function(key) {\n var index = this._keyIndices[key];\n if (index !== undefined) {\n return this._arr[index].priority;\n }\n};\n\n/**\n * Returns the key for the minimum element in this queue. If the queue is\n * empty this function throws an Error. Takes `O(1)` time.\n */\nPriorityQueue.prototype.min = function() {\n if (this.size() === 0) {\n throw new Error(\"Queue underflow\");\n }\n return this._arr[0].key;\n};\n\n/**\n * Inserts a new key into the priority queue. If the key already exists in\n * the queue this function returns `false`; otherwise it will return `true`.\n * Takes `O(n)` time.\n *\n * @param {Object} key the key to add\n * @param {Number} priority the initial priority for the key\n */\nPriorityQueue.prototype.add = function(key, priority) {\n var keyIndices = this._keyIndices;\n key = String(key);\n if (!_.has(keyIndices, key)) {\n var arr = this._arr;\n var index = arr.length;\n keyIndices[key] = index;\n arr.push({key: key, priority: priority});\n this._decrease(index);\n return true;\n }\n return false;\n};\n\n/**\n * Removes and returns the smallest key in the queue. Takes `O(log n)` time.\n */\nPriorityQueue.prototype.removeMin = function() {\n this._swap(0, this._arr.length - 1);\n var min = this._arr.pop();\n delete this._keyIndices[min.key];\n this._heapify(0);\n return min.key;\n};\n\n/**\n * Decreases the priority for **key** to **priority**. If the new priority is\n * greater than the previous priority, this function will throw an Error.\n *\n * @param {Object} key the key for which to raise priority\n * @param {Number} priority the new priority for the key\n */\nPriorityQueue.prototype.decrease = function(key, priority) {\n var index = this._keyIndices[key];\n if (priority > this._arr[index].priority) {\n throw new Error(\"New priority is greater than current priority. \" +\n \"Key: \" + key + \" Old: \" + this._arr[index].priority + \" New: \" + priority);\n }\n this._arr[index].priority = priority;\n this._decrease(index);\n};\n\nPriorityQueue.prototype._heapify = function(i) {\n var arr = this._arr;\n var l = 2 * i,\n r = l + 1,\n largest = i;\n if (l < arr.length) {\n largest = arr[l].priority < arr[largest].priority ? l : largest;\n if (r < arr.length) {\n largest = arr[r].priority < arr[largest].priority ? r : largest;\n }\n if (largest !== i) {\n this._swap(i, largest);\n this._heapify(largest);\n }\n }\n};\n\nPriorityQueue.prototype._decrease = function(index) {\n var arr = this._arr;\n var priority = arr[index].priority;\n var parent;\n while (index !== 0) {\n parent = index >> 1;\n if (arr[parent].priority < priority) {\n break;\n }\n this._swap(index, parent);\n index = parent;\n }\n};\n\nPriorityQueue.prototype._swap = function(i, j) {\n var arr = this._arr;\n var keyIndices = this._keyIndices;\n var origArrI = arr[i];\n var origArrJ = arr[j];\n arr[i] = origArrJ;\n arr[j] = origArrI;\n keyIndices[origArrJ.key] = i;\n keyIndices[origArrI.key] = j;\n};\n","\"use strict\";\n\nvar _ = require(\"./lodash\");\n\nmodule.exports = Graph;\n\nvar DEFAULT_EDGE_NAME = \"\\x00\",\n GRAPH_NODE = \"\\x00\",\n EDGE_KEY_DELIM = \"\\x01\";\n\n// Implementation notes:\n//\n// * Node id query functions should return string ids for the nodes\n// * Edge id query functions should return an \"edgeObj\", edge object, that is\n// composed of enough information to uniquely identify an edge: {v, w, name}.\n// * Internally we use an \"edgeId\", a stringified form of the edgeObj, to\n// reference edges. This is because we need a performant way to look these\n// edges up and, object properties, which have string keys, are the closest\n// we're going to get to a performant hashtable in JavaScript.\n\nfunction Graph(opts) {\n this._isDirected = _.has(opts, \"directed\") ? opts.directed : true;\n this._isMultigraph = _.has(opts, \"multigraph\") ? opts.multigraph : false;\n this._isCompound = _.has(opts, \"compound\") ? opts.compound : false;\n\n // Label for the graph itself\n this._label = undefined;\n\n // Defaults to be set when creating a new node\n this._defaultNodeLabelFn = _.constant(undefined);\n\n // Defaults to be set when creating a new edge\n this._defaultEdgeLabelFn = _.constant(undefined);\n\n // v -> label\n this._nodes = {};\n\n if (this._isCompound) {\n // v -> parent\n this._parent = {};\n\n // v -> children\n this._children = {};\n this._children[GRAPH_NODE] = {};\n }\n\n // v -> edgeObj\n this._in = {};\n\n // u -> v -> Number\n this._preds = {};\n\n // v -> edgeObj\n this._out = {};\n\n // v -> w -> Number\n this._sucs = {};\n\n // e -> edgeObj\n this._edgeObjs = {};\n\n // e -> label\n this._edgeLabels = {};\n}\n\n/* Number of nodes in the graph. Should only be changed by the implementation. */\nGraph.prototype._nodeCount = 0;\n\n/* Number of edges in the graph. Should only be changed by the implementation. */\nGraph.prototype._edgeCount = 0;\n\n\n/* === Graph functions ========= */\n\nGraph.prototype.isDirected = function() {\n return this._isDirected;\n};\n\nGraph.prototype.isMultigraph = function() {\n return this._isMultigraph;\n};\n\nGraph.prototype.isCompound = function() {\n return this._isCompound;\n};\n\nGraph.prototype.setGraph = function(label) {\n this._label = label;\n return this;\n};\n\nGraph.prototype.graph = function() {\n return this._label;\n};\n\n\n/* === Node functions ========== */\n\nGraph.prototype.setDefaultNodeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultNodeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.nodeCount = function() {\n return this._nodeCount;\n};\n\nGraph.prototype.nodes = function() {\n return _.keys(this._nodes);\n};\n\nGraph.prototype.sources = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._in[v]);\n });\n};\n\nGraph.prototype.sinks = function() {\n var self = this;\n return _.filter(this.nodes(), function(v) {\n return _.isEmpty(self._out[v]);\n });\n};\n\nGraph.prototype.setNodes = function(vs, value) {\n var args = arguments;\n var self = this;\n _.each(vs, function(v) {\n if (args.length > 1) {\n self.setNode(v, value);\n } else {\n self.setNode(v);\n }\n });\n return this;\n};\n\nGraph.prototype.setNode = function(v, value) {\n if (_.has(this._nodes, v)) {\n if (arguments.length > 1) {\n this._nodes[v] = value;\n }\n return this;\n }\n\n this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v);\n if (this._isCompound) {\n this._parent[v] = GRAPH_NODE;\n this._children[v] = {};\n this._children[GRAPH_NODE][v] = true;\n }\n this._in[v] = {};\n this._preds[v] = {};\n this._out[v] = {};\n this._sucs[v] = {};\n ++this._nodeCount;\n return this;\n};\n\nGraph.prototype.node = function(v) {\n return this._nodes[v];\n};\n\nGraph.prototype.hasNode = function(v) {\n return _.has(this._nodes, v);\n};\n\nGraph.prototype.removeNode = function(v) {\n var self = this;\n if (_.has(this._nodes, v)) {\n var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); };\n delete this._nodes[v];\n if (this._isCompound) {\n this._removeFromParentsChildList(v);\n delete this._parent[v];\n _.each(this.children(v), function(child) {\n self.setParent(child);\n });\n delete this._children[v];\n }\n _.each(_.keys(this._in[v]), removeEdge);\n delete this._in[v];\n delete this._preds[v];\n _.each(_.keys(this._out[v]), removeEdge);\n delete this._out[v];\n delete this._sucs[v];\n --this._nodeCount;\n }\n return this;\n};\n\nGraph.prototype.setParent = function(v, parent) {\n if (!this._isCompound) {\n throw new Error(\"Cannot set parent in a non-compound graph\");\n }\n\n if (_.isUndefined(parent)) {\n parent = GRAPH_NODE;\n } else {\n // Coerce parent to string\n parent += \"\";\n for (var ancestor = parent;\n !_.isUndefined(ancestor);\n ancestor = this.parent(ancestor)) {\n if (ancestor === v) {\n throw new Error(\"Setting \" + parent+ \" as parent of \" + v +\n \" would create a cycle\");\n }\n }\n\n this.setNode(parent);\n }\n\n this.setNode(v);\n this._removeFromParentsChildList(v);\n this._parent[v] = parent;\n this._children[parent][v] = true;\n return this;\n};\n\nGraph.prototype._removeFromParentsChildList = function(v) {\n delete this._children[this._parent[v]][v];\n};\n\nGraph.prototype.parent = function(v) {\n if (this._isCompound) {\n var parent = this._parent[v];\n if (parent !== GRAPH_NODE) {\n return parent;\n }\n }\n};\n\nGraph.prototype.children = function(v) {\n if (_.isUndefined(v)) {\n v = GRAPH_NODE;\n }\n\n if (this._isCompound) {\n var children = this._children[v];\n if (children) {\n return _.keys(children);\n }\n } else if (v === GRAPH_NODE) {\n return this.nodes();\n } else if (this.hasNode(v)) {\n return [];\n }\n};\n\nGraph.prototype.predecessors = function(v) {\n var predsV = this._preds[v];\n if (predsV) {\n return _.keys(predsV);\n }\n};\n\nGraph.prototype.successors = function(v) {\n var sucsV = this._sucs[v];\n if (sucsV) {\n return _.keys(sucsV);\n }\n};\n\nGraph.prototype.neighbors = function(v) {\n var preds = this.predecessors(v);\n if (preds) {\n return _.union(preds, this.successors(v));\n }\n};\n\nGraph.prototype.isLeaf = function (v) {\n var neighbors;\n if (this.isDirected()) {\n neighbors = this.successors(v);\n } else {\n neighbors = this.neighbors(v);\n }\n return neighbors.length === 0;\n};\n\nGraph.prototype.filterNodes = function(filter) {\n var copy = new this.constructor({\n directed: this._isDirected,\n multigraph: this._isMultigraph,\n compound: this._isCompound\n });\n\n copy.setGraph(this.graph());\n\n var self = this;\n _.each(this._nodes, function(value, v) {\n if (filter(v)) {\n copy.setNode(v, value);\n }\n });\n\n _.each(this._edgeObjs, function(e) {\n if (copy.hasNode(e.v) && copy.hasNode(e.w)) {\n copy.setEdge(e, self.edge(e));\n }\n });\n\n var parents = {};\n function findParent(v) {\n var parent = self.parent(v);\n if (parent === undefined || copy.hasNode(parent)) {\n parents[v] = parent;\n return parent;\n } else if (parent in parents) {\n return parents[parent];\n } else {\n return findParent(parent);\n }\n }\n\n if (this._isCompound) {\n _.each(copy.nodes(), function(v) {\n copy.setParent(v, findParent(v));\n });\n }\n\n return copy;\n};\n\n/* === Edge functions ========== */\n\nGraph.prototype.setDefaultEdgeLabel = function(newDefault) {\n if (!_.isFunction(newDefault)) {\n newDefault = _.constant(newDefault);\n }\n this._defaultEdgeLabelFn = newDefault;\n return this;\n};\n\nGraph.prototype.edgeCount = function() {\n return this._edgeCount;\n};\n\nGraph.prototype.edges = function() {\n return _.values(this._edgeObjs);\n};\n\nGraph.prototype.setPath = function(vs, value) {\n var self = this,\n args = arguments;\n _.reduce(vs, function(v, w) {\n if (args.length > 1) {\n self.setEdge(v, w, value);\n } else {\n self.setEdge(v, w);\n }\n return w;\n });\n return this;\n};\n\n/*\n * setEdge(v, w, [value, [name]])\n * setEdge({ v, w, [name] }, [value])\n */\nGraph.prototype.setEdge = function() {\n var v, w, name, value,\n valueSpecified = false,\n arg0 = arguments[0];\n\n if (typeof arg0 === \"object\" && arg0 !== null && \"v\" in arg0) {\n v = arg0.v;\n w = arg0.w;\n name = arg0.name;\n if (arguments.length === 2) {\n value = arguments[1];\n valueSpecified = true;\n }\n } else {\n v = arg0;\n w = arguments[1];\n name = arguments[3];\n if (arguments.length > 2) {\n value = arguments[2];\n valueSpecified = true;\n }\n }\n\n v = \"\" + v;\n w = \"\" + w;\n if (!_.isUndefined(name)) {\n name = \"\" + name;\n }\n\n var e = edgeArgsToId(this._isDirected, v, w, name);\n if (_.has(this._edgeLabels, e)) {\n if (valueSpecified) {\n this._edgeLabels[e] = value;\n }\n return this;\n }\n\n if (!_.isUndefined(name) && !this._isMultigraph) {\n throw new Error(\"Cannot set a named edge when isMultigraph = false\");\n }\n\n // It didn't exist, so we need to create it.\n // First ensure the nodes exist.\n this.setNode(v);\n this.setNode(w);\n\n this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name);\n\n var edgeObj = edgeArgsToObj(this._isDirected, v, w, name);\n // Ensure we add undirected edges in a consistent way.\n v = edgeObj.v;\n w = edgeObj.w;\n\n Object.freeze(edgeObj);\n this._edgeObjs[e] = edgeObj;\n incrementOrInitEntry(this._preds[w], v);\n incrementOrInitEntry(this._sucs[v], w);\n this._in[w][e] = edgeObj;\n this._out[v][e] = edgeObj;\n this._edgeCount++;\n return this;\n};\n\nGraph.prototype.edge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return this._edgeLabels[e];\n};\n\nGraph.prototype.hasEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name));\n return _.has(this._edgeLabels, e);\n};\n\nGraph.prototype.removeEdge = function(v, w, name) {\n var e = (arguments.length === 1\n ? edgeObjToId(this._isDirected, arguments[0])\n : edgeArgsToId(this._isDirected, v, w, name)),\n edge = this._edgeObjs[e];\n if (edge) {\n v = edge.v;\n w = edge.w;\n delete this._edgeLabels[e];\n delete this._edgeObjs[e];\n decrementOrRemoveEntry(this._preds[w], v);\n decrementOrRemoveEntry(this._sucs[v], w);\n delete this._in[w][e];\n delete this._out[v][e];\n this._edgeCount--;\n }\n return this;\n};\n\nGraph.prototype.inEdges = function(v, u) {\n var inV = this._in[v];\n if (inV) {\n var edges = _.values(inV);\n if (!u) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.v === u; });\n }\n};\n\nGraph.prototype.outEdges = function(v, w) {\n var outV = this._out[v];\n if (outV) {\n var edges = _.values(outV);\n if (!w) {\n return edges;\n }\n return _.filter(edges, function(edge) { return edge.w === w; });\n }\n};\n\nGraph.prototype.nodeEdges = function(v, w) {\n var inEdges = this.inEdges(v, w);\n if (inEdges) {\n return inEdges.concat(this.outEdges(v, w));\n }\n};\n\nfunction incrementOrInitEntry(map, k) {\n if (map[k]) {\n map[k]++;\n } else {\n map[k] = 1;\n }\n}\n\nfunction decrementOrRemoveEntry(map, k) {\n if (!--map[k]) { delete map[k]; }\n}\n\nfunction edgeArgsToId(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM +\n (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name);\n}\n\nfunction edgeArgsToObj(isDirected, v_, w_, name) {\n var v = \"\" + v_;\n var w = \"\" + w_;\n if (!isDirected && v > w) {\n var tmp = v;\n v = w;\n w = tmp;\n }\n var edgeObj = { v: v, w: w };\n if (name) {\n edgeObj.name = name;\n }\n return edgeObj;\n}\n\nfunction edgeObjToId(isDirected, edgeObj) {\n return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name);\n}\n","// Includes only the \"core\" of graphlib\nmodule.exports = {\n Graph: require(\"./graph\"),\n version: require(\"./version\")\n};\n","var _ = require(\"./lodash\"),\n Graph = require(\"./graph\");\n\nmodule.exports = {\n write: write,\n read: read\n};\n\nfunction write(g) {\n var json = {\n options: {\n directed: g.isDirected(),\n multigraph: g.isMultigraph(),\n compound: g.isCompound()\n },\n nodes: writeNodes(g),\n edges: writeEdges(g)\n };\n if (!_.isUndefined(g.graph())) {\n json.value = _.clone(g.graph());\n }\n return json;\n}\n\nfunction writeNodes(g) {\n return _.map(g.nodes(), function(v) {\n var nodeValue = g.node(v),\n parent = g.parent(v),\n node = { v: v };\n if (!_.isUndefined(nodeValue)) {\n node.value = nodeValue;\n }\n if (!_.isUndefined(parent)) {\n node.parent = parent;\n }\n return node;\n });\n}\n\nfunction writeEdges(g) {\n return _.map(g.edges(), function(e) {\n var edgeValue = g.edge(e),\n edge = { v: e.v, w: e.w };\n if (!_.isUndefined(e.name)) {\n edge.name = e.name;\n }\n if (!_.isUndefined(edgeValue)) {\n edge.value = edgeValue;\n }\n return edge;\n });\n}\n\nfunction read(json) {\n var g = new Graph(json.options).setGraph(json.value);\n _.each(json.nodes, function(entry) {\n g.setNode(entry.v, entry.value);\n if (entry.parent) {\n g.setParent(entry.v, entry.parent);\n }\n });\n _.each(json.edges, function(entry) {\n g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value);\n });\n return g;\n}\n","/* global window */\n\nvar lodash;\n\nif (typeof require === \"function\") {\n try {\n lodash = {\n clone: require(\"lodash/clone\"),\n constant: require(\"lodash/constant\"),\n each: require(\"lodash/each\"),\n filter: require(\"lodash/filter\"),\n has: require(\"lodash/has\"),\n isArray: require(\"lodash/isArray\"),\n isEmpty: require(\"lodash/isEmpty\"),\n isFunction: require(\"lodash/isFunction\"),\n isUndefined: require(\"lodash/isUndefined\"),\n keys: require(\"lodash/keys\"),\n map: require(\"lodash/map\"),\n reduce: require(\"lodash/reduce\"),\n size: require(\"lodash/size\"),\n transform: require(\"lodash/transform\"),\n union: require(\"lodash/union\"),\n values: require(\"lodash/values\")\n };\n } catch (e) {}\n}\n\nif (!lodash) {\n lodash = window._;\n}\n\nmodule.exports = lodash;\n","module.exports = '2.1.7';\n","/**\n * base64.ts\n *\n * Licensed under the BSD 3-Clause License.\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * References:\n * http://en.wikipedia.org/wiki/Base64\n *\n * @author Dan Kogai (https://github.com/dankogai)\n */\nconst version = '3.6.0';\n/**\n * @deprecated use lowercase `version`.\n */\nconst VERSION = version;\nconst _hasatob = typeof atob === 'function';\nconst _hasbtoa = typeof btoa === 'function';\nconst _hasBuffer = typeof Buffer === 'function';\nconst _TD = typeof TextDecoder === 'function' ? new TextDecoder() : undefined;\nconst _TE = typeof TextEncoder === 'function' ? new TextEncoder() : undefined;\nconst b64ch = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nconst b64chs = [...b64ch];\nconst b64tab = ((a) => {\n let tab = {};\n a.forEach((c, i) => tab[c] = i);\n return tab;\n})(b64chs);\nconst b64re = /^(?:[A-Za-z\\d+\\/]{4})*?(?:[A-Za-z\\d+\\/]{2}(?:==)?|[A-Za-z\\d+\\/]{3}=?)?$/;\nconst _fromCC = String.fromCharCode.bind(String);\nconst _U8Afrom = typeof Uint8Array.from === 'function'\n ? Uint8Array.from.bind(Uint8Array)\n : (it, fn = (x) => x) => new Uint8Array(Array.prototype.slice.call(it, 0).map(fn));\nconst _mkUriSafe = (src) => src\n .replace(/[+\\/]/g, (m0) => m0 == '+' ? '-' : '_')\n .replace(/=+$/m, '');\nconst _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\\+\\/]/g, '');\n/**\n * polyfill version of `btoa`\n */\nconst btoaPolyfill = (bin) => {\n // console.log('polyfilled');\n let u32, c0, c1, c2, asc = '';\n const pad = bin.length % 3;\n for (let i = 0; i < bin.length;) {\n if ((c0 = bin.charCodeAt(i++)) > 255 ||\n (c1 = bin.charCodeAt(i++)) > 255 ||\n (c2 = bin.charCodeAt(i++)) > 255)\n throw new TypeError('invalid character found');\n u32 = (c0 << 16) | (c1 << 8) | c2;\n asc += b64chs[u32 >> 18 & 63]\n + b64chs[u32 >> 12 & 63]\n + b64chs[u32 >> 6 & 63]\n + b64chs[u32 & 63];\n }\n return pad ? asc.slice(0, pad - 3) + \"===\".substring(pad) : asc;\n};\n/**\n * does what `window.btoa` of web browsers do.\n * @param {String} bin binary string\n * @returns {string} Base64-encoded string\n */\nconst _btoa = _hasbtoa ? (bin) => btoa(bin)\n : _hasBuffer ? (bin) => Buffer.from(bin, 'binary').toString('base64')\n : btoaPolyfill;\nconst _fromUint8Array = _hasBuffer\n ? (u8a) => Buffer.from(u8a).toString('base64')\n : (u8a) => {\n // cf. https://stackoverflow.com/questions/12710001/how-to-convert-uint8-array-to-base64-encoded-string/12713326#12713326\n const maxargs = 0x1000;\n let strs = [];\n for (let i = 0, l = u8a.length; i < l; i += maxargs) {\n strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));\n }\n return _btoa(strs.join(''));\n };\n/**\n * converts a Uint8Array to a Base64 string.\n * @param {boolean} [urlsafe] URL-and-filename-safe a la RFC4648 §5\n * @returns {string} Base64 string\n */\nconst fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const utob = (src: string) => unescape(encodeURIComponent(src));\n// reverting good old fationed regexp\nconst cb_utob = (c) => {\n if (c.length < 2) {\n var cc = c.charCodeAt(0);\n return cc < 0x80 ? c\n : cc < 0x800 ? (_fromCC(0xc0 | (cc >>> 6))\n + _fromCC(0x80 | (cc & 0x3f)))\n : (_fromCC(0xe0 | ((cc >>> 12) & 0x0f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n else {\n var cc = 0x10000\n + (c.charCodeAt(0) - 0xD800) * 0x400\n + (c.charCodeAt(1) - 0xDC00);\n return (_fromCC(0xf0 | ((cc >>> 18) & 0x07))\n + _fromCC(0x80 | ((cc >>> 12) & 0x3f))\n + _fromCC(0x80 | ((cc >>> 6) & 0x3f))\n + _fromCC(0x80 | (cc & 0x3f)));\n }\n};\nconst re_utob = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFFF]|[^\\x00-\\x7F]/g;\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-8 string\n * @returns {string} UTF-16 string\n */\nconst utob = (u) => u.replace(re_utob, cb_utob);\n//\nconst _encode = _hasBuffer\n ? (s) => Buffer.from(s, 'utf8').toString('base64')\n : _TE\n ? (s) => _fromUint8Array(_TE.encode(s))\n : (s) => _btoa(utob(s));\n/**\n * converts a UTF-8-encoded string to a Base64 string.\n * @param {boolean} [urlsafe] if `true` make the result URL-safe\n * @returns {string} Base64 string\n */\nconst encode = (src, urlsafe = false) => urlsafe\n ? _mkUriSafe(_encode(src))\n : _encode(src);\n/**\n * converts a UTF-8-encoded string to URL-safe Base64 RFC4648 §5.\n * @returns {string} Base64 string\n */\nconst encodeURI = (src) => encode(src, true);\n// This trick is found broken https://github.com/dankogai/js-base64/issues/130\n// const btou = (src: string) => decodeURIComponent(escape(src));\n// reverting good old fationed regexp\nconst re_btou = /[\\xC0-\\xDF][\\x80-\\xBF]|[\\xE0-\\xEF][\\x80-\\xBF]{2}|[\\xF0-\\xF7][\\x80-\\xBF]{3}/g;\nconst cb_btou = (cccc) => {\n switch (cccc.length) {\n case 4:\n var cp = ((0x07 & cccc.charCodeAt(0)) << 18)\n | ((0x3f & cccc.charCodeAt(1)) << 12)\n | ((0x3f & cccc.charCodeAt(2)) << 6)\n | (0x3f & cccc.charCodeAt(3)), offset = cp - 0x10000;\n return (_fromCC((offset >>> 10) + 0xD800)\n + _fromCC((offset & 0x3FF) + 0xDC00));\n case 3:\n return _fromCC(((0x0f & cccc.charCodeAt(0)) << 12)\n | ((0x3f & cccc.charCodeAt(1)) << 6)\n | (0x3f & cccc.charCodeAt(2)));\n default:\n return _fromCC(((0x1f & cccc.charCodeAt(0)) << 6)\n | (0x3f & cccc.charCodeAt(1)));\n }\n};\n/**\n * @deprecated should have been internal use only.\n * @param {string} src UTF-16 string\n * @returns {string} UTF-8 string\n */\nconst btou = (b) => b.replace(re_btou, cb_btou);\n/**\n * polyfill version of `atob`\n */\nconst atobPolyfill = (asc) => {\n // console.log('polyfilled');\n asc = asc.replace(/\\s+/g, '');\n if (!b64re.test(asc))\n throw new TypeError('malformed base64.');\n asc += '=='.slice(2 - (asc.length & 3));\n let u24, bin = '', r1, r2;\n for (let i = 0; i < asc.length;) {\n u24 = b64tab[asc.charAt(i++)] << 18\n | b64tab[asc.charAt(i++)] << 12\n | (r1 = b64tab[asc.charAt(i++)]) << 6\n | (r2 = b64tab[asc.charAt(i++)]);\n bin += r1 === 64 ? _fromCC(u24 >> 16 & 255)\n : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255)\n : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);\n }\n return bin;\n};\n/**\n * does what `window.atob` of web browsers do.\n * @param {String} asc Base64-encoded string\n * @returns {string} binary string\n */\nconst _atob = _hasatob ? (asc) => atob(_tidyB64(asc))\n : _hasBuffer ? (asc) => Buffer.from(asc, 'base64').toString('binary')\n : atobPolyfill;\n//\nconst _toUint8Array = _hasBuffer\n ? (a) => _U8Afrom(Buffer.from(a, 'base64'))\n : (a) => _U8Afrom(_atob(a), c => c.charCodeAt(0));\n/**\n * converts a Base64 string to a Uint8Array.\n */\nconst toUint8Array = (a) => _toUint8Array(_unURI(a));\n//\nconst _decode = _hasBuffer\n ? (a) => Buffer.from(a, 'base64').toString('utf8')\n : _TD\n ? (a) => _TD.decode(_toUint8Array(a))\n : (a) => btou(_atob(a));\nconst _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == '-' ? '+' : '/'));\n/**\n * converts a Base64 string to a UTF-8 string.\n * @param {String} src Base64 string. Both normal and URL-safe are supported\n * @returns {string} UTF-8 string\n */\nconst decode = (src) => _decode(_unURI(src));\n/**\n * check if a value is a valid Base64 string\n * @param {String} src a value to check\n */\nconst isValid = (src) => {\n if (typeof src !== 'string')\n return false;\n const s = src.replace(/\\s+/g, '').replace(/=+$/, '');\n return !/[^\\s0-9a-zA-Z\\+/]/.test(s) || !/[^\\s0-9a-zA-Z\\-_]/.test(s);\n};\n//\nconst _noEnum = (v) => {\n return {\n value: v, enumerable: false, writable: true, configurable: true\n };\n};\n/**\n * extend String.prototype with relevant methods\n */\nconst extendString = function () {\n const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));\n _add('fromBase64', function () { return decode(this); });\n _add('toBase64', function (urlsafe) { return encode(this, urlsafe); });\n _add('toBase64URI', function () { return encode(this, true); });\n _add('toBase64URL', function () { return encode(this, true); });\n _add('toUint8Array', function () { return toUint8Array(this); });\n};\n/**\n * extend Uint8Array.prototype with relevant methods\n */\nconst extendUint8Array = function () {\n const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));\n _add('toBase64', function (urlsafe) { return fromUint8Array(this, urlsafe); });\n _add('toBase64URI', function () { return fromUint8Array(this, true); });\n _add('toBase64URL', function () { return fromUint8Array(this, true); });\n};\n/**\n * extend Builtin prototypes with relevant methods\n */\nconst extendBuiltins = () => {\n extendString();\n extendUint8Array();\n};\nconst gBase64 = {\n version: version,\n VERSION: VERSION,\n atob: _atob,\n atobPolyfill: atobPolyfill,\n btoa: _btoa,\n btoaPolyfill: btoaPolyfill,\n fromBase64: decode,\n toBase64: encode,\n encode: encode,\n encodeURI: encodeURI,\n encodeURL: encodeURI,\n utob: utob,\n btou: btou,\n decode: decode,\n isValid: isValid,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array,\n extendString: extendString,\n extendUint8Array: extendUint8Array,\n extendBuiltins: extendBuiltins,\n};\n// makecjs:CUT //\nexport { version };\nexport { VERSION };\nexport { _atob as atob };\nexport { atobPolyfill };\nexport { _btoa as btoa };\nexport { btoaPolyfill };\nexport { decode as fromBase64 };\nexport { encode as toBase64 };\nexport { utob };\nexport { encode };\nexport { encodeURI };\nexport { encodeURI as encodeURL };\nexport { btou };\nexport { decode };\nexport { isValid };\nexport { fromUint8Array };\nexport { toUint8Array };\nexport { extendString };\nexport { extendUint8Array };\nexport { extendBuiltins };\n// and finally,\nexport { gBase64 as Base64 };\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar types_1 = require(\"../types\");\nvar type_1 = require(\"./type\");\n/* CHANNELS */\nvar Channels = /** @class */ (function () {\n /* CONSTRUCTOR */\n function Channels(data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type = new type_1.default();\n }\n /* API */\n Channels.prototype.set = function (data, color) {\n this.color = color;\n this.changed = false;\n this.data = data; //TSC\n this.type.type = types_1.TYPE.ALL;\n return this;\n };\n /* HELPERS */\n Channels.prototype._ensureHSL = function () {\n if (this.data.h === undefined)\n this.data.h = utils_1.default.channel.rgb2hsl(this.data, 'h');\n if (this.data.s === undefined)\n this.data.s = utils_1.default.channel.rgb2hsl(this.data, 's');\n if (this.data.l === undefined)\n this.data.l = utils_1.default.channel.rgb2hsl(this.data, 'l');\n };\n Channels.prototype._ensureRGB = function () {\n if (this.data.r === undefined)\n this.data.r = utils_1.default.channel.hsl2rgb(this.data, 'r');\n if (this.data.g === undefined)\n this.data.g = utils_1.default.channel.hsl2rgb(this.data, 'g');\n if (this.data.b === undefined)\n this.data.b = utils_1.default.channel.hsl2rgb(this.data, 'b');\n };\n Object.defineProperty(Channels.prototype, \"r\", {\n /* GETTERS */\n get: function () {\n if (!this.type.is(types_1.TYPE.HSL) && this.data.r !== undefined)\n return this.data.r;\n this._ensureHSL();\n return utils_1.default.channel.hsl2rgb(this.data, 'r');\n },\n /* SETTERS */\n set: function (r) {\n this.type.set(types_1.TYPE.RGB);\n this.changed = true;\n this.data.r = r;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"g\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.HSL) && this.data.g !== undefined)\n return this.data.g;\n this._ensureHSL();\n return utils_1.default.channel.hsl2rgb(this.data, 'g');\n },\n set: function (g) {\n this.type.set(types_1.TYPE.RGB);\n this.changed = true;\n this.data.g = g;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"b\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.HSL) && this.data.b !== undefined)\n return this.data.b;\n this._ensureHSL();\n return utils_1.default.channel.hsl2rgb(this.data, 'b');\n },\n set: function (b) {\n this.type.set(types_1.TYPE.RGB);\n this.changed = true;\n this.data.b = b;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"h\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.RGB) && this.data.h !== undefined)\n return this.data.h;\n this._ensureRGB();\n return utils_1.default.channel.rgb2hsl(this.data, 'h');\n },\n set: function (h) {\n this.type.set(types_1.TYPE.HSL);\n this.changed = true;\n this.data.h = h;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"s\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.RGB) && this.data.s !== undefined)\n return this.data.s;\n this._ensureRGB();\n return utils_1.default.channel.rgb2hsl(this.data, 's');\n },\n set: function (s) {\n this.type.set(types_1.TYPE.HSL);\n this.changed = true;\n this.data.s = s;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"l\", {\n get: function () {\n if (!this.type.is(types_1.TYPE.RGB) && this.data.l !== undefined)\n return this.data.l;\n this._ensureRGB();\n return utils_1.default.channel.rgb2hsl(this.data, 'l');\n },\n set: function (l) {\n this.type.set(types_1.TYPE.HSL);\n this.changed = true;\n this.data.l = l;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Channels.prototype, \"a\", {\n get: function () {\n return this.data.a;\n },\n set: function (a) {\n this.changed = true;\n this.data.a = a;\n },\n enumerable: true,\n configurable: true\n });\n return Channels;\n}());\n/* EXPORT */\nexports.default = Channels;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _1 = require(\".\");\n/* REUSABLE */\nvar channels = new _1.default({ r: 0, g: 0, b: 0, a: 0 }, 'transparent');\n/* EXPORT */\nexports.default = channels;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = require(\"../types\");\n/* TYPE */\nvar Type = /** @class */ (function () {\n function Type() {\n this.type = types_1.TYPE.ALL;\n }\n Type.prototype.get = function () {\n return this.type;\n };\n Type.prototype.set = function (type) {\n if (this.type && this.type !== type)\n throw new Error('Cannot change both RGB and HSL channels at the same time');\n this.type = type;\n };\n Type.prototype.reset = function () {\n this.type = types_1.TYPE.ALL;\n };\n Type.prototype.is = function (type) {\n return this.type === type;\n };\n return Type;\n}());\n/* EXPORT */\nexports.default = Type;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\nvar consts_1 = require(\"../consts\");\n/* HEX */\nvar Hex = {\n /* VARIABLES */\n re: /^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,\n /* API */\n parse: function (color) {\n if (color.charCodeAt(0) !== 35)\n return; // '#'\n var match = color.match(Hex.re);\n if (!match)\n return;\n var hex = match[1], dec = parseInt(hex, 16), length = hex.length, hasAlpha = length % 4 === 0, isFullLength = length > 4, multiplier = isFullLength ? 1 : 17, bits = isFullLength ? 8 : 4, bitsOffset = hasAlpha ? 0 : -1, mask = isFullLength ? 255 : 15;\n return reusable_1.default.set({\n r: ((dec >> (bits * (bitsOffset + 3))) & mask) * multiplier,\n g: ((dec >> (bits * (bitsOffset + 2))) & mask) * multiplier,\n b: ((dec >> (bits * (bitsOffset + 1))) & mask) * multiplier,\n a: hasAlpha ? (dec & mask) * multiplier / 255 : 1\n }, color);\n },\n stringify: function (channels) {\n if (channels.a < 1) { // #RRGGBBAA\n return \"#\" + consts_1.DEC2HEX[Math.round(channels.r)] + consts_1.DEC2HEX[Math.round(channels.g)] + consts_1.DEC2HEX[Math.round(channels.b)] + utils_1.default.unit.frac2hex(channels.a);\n }\n else { // #RRGGBB\n return \"#\" + consts_1.DEC2HEX[Math.round(channels.r)] + consts_1.DEC2HEX[Math.round(channels.g)] + consts_1.DEC2HEX[Math.round(channels.b)];\n }\n }\n};\n/* EXPORT */\nexports.default = Hex;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\n/* HSL */\nvar HSL = {\n /* VARIABLES */\n re: /^hsla?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(?:deg|grad|rad|turn)?)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?%)(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e-?\\d+)?(%)?))?\\s*?\\)$/i,\n hueRe: /^(.+?)(deg|grad|rad|turn)$/i,\n /* HELPERS */\n _hue2deg: function (hue) {\n var match = hue.match(HSL.hueRe);\n if (match) {\n var number = match[1], unit = match[2];\n switch (unit) {\n case 'grad': return utils_1.default.channel.clamp.h(parseFloat(number) * .9);\n case 'rad': return utils_1.default.channel.clamp.h(parseFloat(number) * 180 / Math.PI);\n case 'turn': return utils_1.default.channel.clamp.h(parseFloat(number) * 360);\n }\n }\n return utils_1.default.channel.clamp.h(parseFloat(hue));\n },\n /* API */\n parse: function (color) {\n var charCode = color.charCodeAt(0);\n if (charCode !== 104 && charCode !== 72)\n return; // 'h'/'H'\n var match = color.match(HSL.re);\n if (!match)\n return;\n var h = match[1], s = match[2], l = match[3], a = match[4], isAlphaPercentage = match[5];\n return reusable_1.default.set({\n h: HSL._hue2deg(h),\n s: utils_1.default.channel.clamp.s(parseFloat(s)),\n l: utils_1.default.channel.clamp.l(parseFloat(l)),\n a: a ? utils_1.default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: function (channels) {\n if (channels.a < 1) { // HSLA\n return \"hsla(\" + utils_1.default.lang.round(channels.h) + \", \" + utils_1.default.lang.round(channels.s) + \"%, \" + utils_1.default.lang.round(channels.l) + \"%, \" + channels.a + \")\";\n }\n else { // HSL\n return \"hsl(\" + utils_1.default.lang.round(channels.h) + \", \" + utils_1.default.lang.round(channels.s) + \"%, \" + utils_1.default.lang.round(channels.l) + \"%)\";\n }\n }\n};\n/* EXPORT */\nexports.default = HSL;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar types_1 = require(\"../types\");\nvar hex_1 = require(\"./hex\");\nvar keyword_1 = require(\"./keyword\");\nvar rgb_1 = require(\"./rgb\");\nvar hsl_1 = require(\"./hsl\");\n/* COLOR */\nvar Color = {\n /* VARIABLES */\n format: {\n keyword: keyword_1.default,\n hex: hex_1.default,\n rgb: rgb_1.default,\n rgba: rgb_1.default,\n hsl: hsl_1.default,\n hsla: hsl_1.default\n },\n /* API */\n parse: function (color) {\n if (typeof color !== 'string')\n return color;\n var channels = hex_1.default.parse(color) || rgb_1.default.parse(color) || hsl_1.default.parse(color) || keyword_1.default.parse(color); // Color providers ordered with performance in mind\n if (channels)\n return channels;\n throw new Error(\"Unsupported color format: \\\"\" + color + \"\\\"\");\n },\n stringify: function (channels) {\n // SASS returns a keyword if possible, but we avoid doing that as it's slower and doesn't really add any value\n if (!channels.changed && channels.color)\n return channels.color;\n if (channels.type.is(types_1.TYPE.HSL) || channels.data.r === undefined) {\n return hsl_1.default.stringify(channels);\n }\n else if (channels.a < 1 || !Number.isInteger(channels.r) || !Number.isInteger(channels.g) || !Number.isInteger(channels.b)) {\n return rgb_1.default.stringify(channels);\n }\n else {\n return hex_1.default.stringify(channels);\n }\n }\n};\n/* EXPORT */\nexports.default = Color;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar hex_1 = require(\"./hex\");\n/* KEYWORD */\nvar Keyword = {\n /* VARIABLES */\n colors: {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyanaqua: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n transparent: '#00000000',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n },\n /* API */\n parse: function (color) {\n color = color.toLowerCase();\n var hex = Keyword.colors[color];\n if (!hex)\n return;\n return hex_1.default.parse(hex);\n },\n stringify: function (channels) {\n var hex = hex_1.default.stringify(channels);\n for (var name_1 in Keyword.colors) {\n if (Keyword.colors[name_1] === hex)\n return name_1;\n }\n }\n};\n/* EXPORT */\nexports.default = Keyword;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\n/* RGB */\nvar RGB = {\n /* VARIABLES */\n re: /^rgba?\\(\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))\\s*?(?:,|\\s)\\s*?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?))(?:\\s*?(?:,|\\/)\\s*?\\+?(-?(?:\\d+(?:\\.\\d+)?|(?:\\.\\d+))(?:e\\d+)?(%?)))?\\s*?\\)$/i,\n /* API */\n parse: function (color) {\n var charCode = color.charCodeAt(0);\n if (charCode !== 114 && charCode !== 82)\n return; // 'r'/'R'\n var match = color.match(RGB.re);\n if (!match)\n return;\n var r = match[1], isRedPercentage = match[2], g = match[3], isGreenPercentage = match[4], b = match[5], isBluePercentage = match[6], a = match[7], isAlphaPercentage = match[8];\n return reusable_1.default.set({\n r: utils_1.default.channel.clamp.r(isRedPercentage ? parseFloat(r) * 2.55 : parseFloat(r)),\n g: utils_1.default.channel.clamp.g(isGreenPercentage ? parseFloat(g) * 2.55 : parseFloat(g)),\n b: utils_1.default.channel.clamp.b(isBluePercentage ? parseFloat(b) * 2.55 : parseFloat(b)),\n a: a ? utils_1.default.channel.clamp.a(isAlphaPercentage ? parseFloat(a) / 100 : parseFloat(a)) : 1\n }, color);\n },\n stringify: function (channels) {\n if (channels.a < 1) { // RGBA\n return \"rgba(\" + utils_1.default.lang.round(channels.r) + \", \" + utils_1.default.lang.round(channels.g) + \", \" + utils_1.default.lang.round(channels.b) + \", \" + utils_1.default.lang.round(channels.a) + \")\";\n }\n else { // RGB\n return \"rgb(\" + utils_1.default.lang.round(channels.r) + \", \" + utils_1.default.lang.round(channels.g) + \", \" + utils_1.default.lang.round(channels.b) + \")\";\n }\n }\n};\n/* EXPORT */\nexports.default = RGB;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\n/* CONSTS */\nvar DEC2HEX = {};\nexports.DEC2HEX = DEC2HEX;\nfor (var i = 0; i <= 255; i++)\n DEC2HEX[i] = utils_1.default.unit.dec2hex(i); // Populating dynamically, striking a balance between code size and performance\n","\"use strict\";\n/* EXPORT */\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./methods\"));\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar change_1 = require(\"./change\");\n/* ADJUST */\nfunction adjust(color, channels) {\n var ch = color_1.default.parse(color), changes = {};\n for (var c in channels) {\n if (!channels[c])\n continue;\n changes[c] = ch[c] + channels[c];\n }\n return change_1.default(color, changes);\n}\n/* EXPORT */\nexports.default = adjust;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* ADJUST CHANNEL */\nfunction adjustChannel(color, channel, amount) {\n var channels = color_1.default.parse(color), amountCurrent = channels[channel], amountNext = utils_1.default.channel.clamp[channel](amountCurrent + amount);\n if (amountCurrent !== amountNext)\n channels[channel] = amountNext;\n return color_1.default.stringify(channels);\n}\n/* EXPORT */\nexports.default = adjustChannel;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* ALPHA */\nfunction alpha(color) {\n return channel_1.default(color, 'a');\n}\n/* EXPORT */\nexports.default = alpha;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* BLUE */\nfunction blue(color) {\n return channel_1.default(color, 'b');\n}\n/* EXPORT */\nexports.default = blue;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* CHANGE */\nfunction change(color, channels) {\n var ch = color_1.default.parse(color);\n for (var c in channels) {\n ch[c] = utils_1.default.channel.clamp[c](channels[c]);\n }\n return color_1.default.stringify(ch);\n}\n/* EXPORT */\nexports.default = change;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* CHANNEL */\nfunction channel(color, channel) {\n return utils_1.default.lang.round(color_1.default.parse(color)[channel]);\n}\n/* EXPORT */\nexports.default = channel;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* COMPLEMENT */\nfunction complement(color) {\n return adjust_channel_1.default(color, 'h', 180);\n}\n/* EXPORT */\nexports.default = complement;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* DARKEN */\nfunction darken(color, amount) {\n return adjust_channel_1.default(color, 'l', -amount);\n}\n/* EXPORT */\nexports.default = darken;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* DESATURATE */\nfunction desaturate(color, amount) {\n return adjust_channel_1.default(color, 's', -amount);\n}\n/* EXPORT */\nexports.default = desaturate;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar change_1 = require(\"./change\");\n/* GRAYSCALE */\nfunction grayscale(color) {\n return change_1.default(color, { s: 0 });\n}\n/* EXPORT */\nexports.default = grayscale;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* GREEN */\nfunction green(color) {\n return channel_1.default(color, 'g');\n}\n/* EXPORT */\nexports.default = green;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\nvar color_1 = require(\"../color\");\n/* HSLA */\nfunction hsla(h, s, l, a) {\n if (a === void 0) { a = 1; }\n var channels = reusable_1.default.set({\n h: utils_1.default.channel.clamp.h(h),\n s: utils_1.default.channel.clamp.s(s),\n l: utils_1.default.channel.clamp.l(l),\n a: utils_1.default.channel.clamp.a(a)\n });\n return color_1.default.stringify(channels);\n}\n/* EXPORT */\nexports.default = hsla;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* HUE */\nfunction hue(color) {\n return channel_1.default(color, 'h');\n}\n/* EXPORT */\nexports.default = hue;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rgba_1 = require(\"./rgba\"); // Alias\nexports.hex = rgba_1.default;\nvar rgba_2 = require(\"./rgba\"); // Alias\nexports.rgb = rgba_2.default;\nvar rgba_3 = require(\"./rgba\");\nexports.rgba = rgba_3.default;\nvar hsla_1 = require(\"./hsla\"); // Alias\nexports.hsl = hsla_1.default;\nvar hsla_2 = require(\"./hsla\");\nexports.hsla = hsla_2.default;\nvar channel_1 = require(\"./channel\");\nexports.channel = channel_1.default;\nvar red_1 = require(\"./red\");\nexports.red = red_1.default;\nvar green_1 = require(\"./green\");\nexports.green = green_1.default;\nvar blue_1 = require(\"./blue\");\nexports.blue = blue_1.default;\nvar hue_1 = require(\"./hue\");\nexports.hue = hue_1.default;\nvar saturation_1 = require(\"./saturation\");\nexports.saturation = saturation_1.default;\nvar lightness_1 = require(\"./lightness\");\nexports.lightness = lightness_1.default;\nvar alpha_1 = require(\"./alpha\");\nexports.alpha = alpha_1.default;\nvar alpha_2 = require(\"./alpha\"); // Alias\nexports.opacity = alpha_2.default;\nvar luminance_1 = require(\"./luminance\");\nexports.luminance = luminance_1.default;\nvar is_dark_1 = require(\"./is_dark\");\nexports.isDark = is_dark_1.default;\nvar is_light_1 = require(\"./is_light\");\nexports.isLight = is_light_1.default;\nvar is_valid_1 = require(\"./is_valid\");\nexports.isValid = is_valid_1.default;\nvar saturate_1 = require(\"./saturate\");\nexports.saturate = saturate_1.default;\nvar desaturate_1 = require(\"./desaturate\");\nexports.desaturate = desaturate_1.default;\nvar lighten_1 = require(\"./lighten\");\nexports.lighten = lighten_1.default;\nvar darken_1 = require(\"./darken\");\nexports.darken = darken_1.default;\nvar opacify_1 = require(\"./opacify\");\nexports.opacify = opacify_1.default;\nvar opacify_2 = require(\"./opacify\"); // Alias\nexports.fadeIn = opacify_2.default;\nvar transparentize_1 = require(\"./transparentize\");\nexports.transparentize = transparentize_1.default;\nvar transparentize_2 = require(\"./transparentize\"); // Alias\nexports.fadeOut = transparentize_2.default;\nvar complement_1 = require(\"./complement\");\nexports.complement = complement_1.default;\nvar grayscale_1 = require(\"./grayscale\");\nexports.grayscale = grayscale_1.default;\nvar adjust_1 = require(\"./adjust\");\nexports.adjust = adjust_1.default;\nvar change_1 = require(\"./change\");\nexports.change = change_1.default;\nvar invert_1 = require(\"./invert\");\nexports.invert = invert_1.default;\nvar mix_1 = require(\"./mix\");\nexports.mix = mix_1.default;\nvar scale_1 = require(\"./scale\");\nexports.scale = scale_1.default;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar mix_1 = require(\"./mix\");\n/* INVERT */\nfunction invert(color, weight) {\n if (weight === void 0) { weight = 100; }\n var inverse = color_1.default.parse(color);\n inverse.r = 255 - inverse.r;\n inverse.g = 255 - inverse.g;\n inverse.b = 255 - inverse.b;\n return mix_1.default(inverse, color, weight);\n}\n/* EXPORT */\nexports.default = invert;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar is_light_1 = require(\"./is_light\");\n/* IS DARK */\nfunction isDark(color) {\n return !is_light_1.default(color);\n}\n/* EXPORT */\nexports.default = isDark;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar luminance_1 = require(\"./luminance\");\n/* IS LIGHT */\nfunction isLight(color) {\n return luminance_1.default(color) >= .5;\n}\n/* EXPORT */\nexports.default = isLight;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\n/* IS VALID */\nfunction isValid(color) {\n try {\n color_1.default.parse(color);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\n/* EXPORT */\nexports.default = isValid;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* LIGHTEN */\nfunction lighten(color, amount) {\n return adjust_channel_1.default(color, 'l', amount);\n}\n/* EXPORT */\nexports.default = lighten;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* LIGHTNESS */\nfunction lightness(color) {\n return channel_1.default(color, 'l');\n}\n/* EXPORT */\nexports.default = lightness;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\n/* LUMINANCE */\n//SOURCE: https://planetcalc.com/7779\nfunction luminance(color) {\n var _a = color_1.default.parse(color), r = _a.r, g = _a.g, b = _a.b, luminance = .2126 * utils_1.default.channel.toLinear(r) + .7152 * utils_1.default.channel.toLinear(g) + .0722 * utils_1.default.channel.toLinear(b);\n return utils_1.default.lang.round(luminance);\n}\n/* EXPORT */\nexports.default = luminance;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar rgba_1 = require(\"./rgba\");\n/* MIX */\n//SOURCE: https://github.com/sass/dart-sass/blob/7457d2e9e7e623d9844ffd037a070cf32d39c348/lib/src/functions/color.dart#L718-L756\nfunction mix(color1, color2, weight) {\n if (weight === void 0) { weight = 50; }\n var _a = color_1.default.parse(color1), r1 = _a.r, g1 = _a.g, b1 = _a.b, a1 = _a.a, _b = color_1.default.parse(color2), r2 = _b.r, g2 = _b.g, b2 = _b.b, a2 = _b.a, weightScale = weight / 100, weightNormalized = (weightScale * 2) - 1, alphaDelta = a1 - a2, weight1combined = ((weightNormalized * alphaDelta) === -1) ? weightNormalized : (weightNormalized + alphaDelta) / (1 + weightNormalized * alphaDelta), weight1 = (weight1combined + 1) / 2, weight2 = 1 - weight1, r = (r1 * weight1) + (r2 * weight2), g = (g1 * weight1) + (g2 * weight2), b = (b1 * weight1) + (b2 * weight2), a = (a1 * weightScale) + (a2 * (1 - weightScale));\n return rgba_1.default(r, g, b, a);\n}\n/* EXPORT */\nexports.default = mix;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* OPACIFY */\nfunction opacify(color, amount) {\n return adjust_channel_1.default(color, 'a', amount);\n}\n/* EXPORT */\nexports.default = opacify;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* RED */\nfunction red(color) {\n return channel_1.default(color, 'r');\n}\n/* EXPORT */\nexports.default = red;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar reusable_1 = require(\"../channels/reusable\");\nvar color_1 = require(\"../color\");\nvar change_1 = require(\"./change\");\nfunction rgba(r, g, b, a) {\n if (b === void 0) { b = 0; }\n if (a === void 0) { a = 1; }\n if (typeof r !== 'number')\n return change_1.default(r, { a: g });\n var channels = reusable_1.default.set({\n r: utils_1.default.channel.clamp.r(r),\n g: utils_1.default.channel.clamp.g(g),\n b: utils_1.default.channel.clamp.b(b),\n a: utils_1.default.channel.clamp.a(a)\n });\n return color_1.default.stringify(channels);\n}\n/* EXPORT */\nexports.default = rgba;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* SATURATE */\nfunction saturate(color, amount) {\n return adjust_channel_1.default(color, 's', amount);\n}\n/* EXPORT */\nexports.default = saturate;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\n/* SATURATION */\nfunction saturation(color) {\n return channel_1.default(color, 's');\n}\n/* EXPORT */\nexports.default = saturation;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"../utils\");\nvar color_1 = require(\"../color\");\nvar adjust_1 = require(\"./adjust\");\n/* SCALE */\nfunction scale(color, channels) {\n var ch = color_1.default.parse(color), adjustments = {}, delta = function (amount, weight, max) { return weight > 0 ? (max - amount) * weight / 100 : amount * weight / 100; };\n for (var c in channels) {\n adjustments[c] = delta(ch[c], channels[c], utils_1.default.channel.max[c]);\n }\n return adjust_1.default(color, adjustments);\n}\n/* EXPORT */\nexports.default = scale;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar adjust_channel_1 = require(\"./adjust_channel\");\n/* TRANSPARENTIZE */\nfunction transparentize(color, amount) {\n return adjust_channel_1.default(color, 'a', -amount);\n}\n/* EXPORT */\nexports.default = transparentize;\n","\"use strict\";\n/* ENUMS */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"ALL\"] = 0] = \"ALL\";\n TYPE[TYPE[\"RGB\"] = 1] = \"RGB\";\n TYPE[TYPE[\"HSL\"] = 2] = \"HSL\";\n})(TYPE || (TYPE = {}));\nexports.TYPE = TYPE;\n;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* CHANNEL */\nvar Channel = {\n /* CLAMP */\n min: {\n r: 0,\n g: 0,\n b: 0,\n s: 0,\n l: 0,\n a: 0\n },\n max: {\n r: 255,\n g: 255,\n b: 255,\n h: 360,\n s: 100,\n l: 100,\n a: 1\n },\n clamp: {\n r: function (r) { return r >= 255 ? 255 : (r < 0 ? 0 : r); },\n g: function (g) { return g >= 255 ? 255 : (g < 0 ? 0 : g); },\n b: function (b) { return b >= 255 ? 255 : (b < 0 ? 0 : b); },\n h: function (h) { return h % 360; },\n s: function (s) { return s >= 100 ? 100 : (s < 0 ? 0 : s); },\n l: function (l) { return l >= 100 ? 100 : (l < 0 ? 0 : l); },\n a: function (a) { return a >= 1 ? 1 : (a < 0 ? 0 : a); }\n },\n /* CONVERSION */\n //SOURCE: https://planetcalc.com/7779\n toLinear: function (c) {\n var n = c / 255;\n return c > .03928 ? Math.pow(((n + .055) / 1.055), 2.4) : n / 12.92;\n },\n //SOURCE: https://gist.github.com/mjackson/5311256\n hue2rgb: function (p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n },\n hsl2rgb: function (_a, channel) {\n var h = _a.h, s = _a.s, l = _a.l;\n if (s === 100)\n return l * 2.55; // Achromatic\n h /= 360;\n s /= 100;\n l /= 100;\n var q = (l < .5) ? l * (1 + s) : (l + s) - (l * s), p = 2 * l - q;\n switch (channel) {\n case 'r': return Channel.hue2rgb(p, q, h + 1 / 3) * 255;\n case 'g': return Channel.hue2rgb(p, q, h) * 255;\n case 'b': return Channel.hue2rgb(p, q, h - 1 / 3) * 255;\n }\n },\n rgb2hsl: function (_a, channel) {\n var r = _a.r, g = _a.g, b = _a.b;\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b), min = Math.min(r, g, b), l = (max + min) / 2;\n if (channel === 'l')\n return l * 100;\n if (max === min)\n return 0; // Achromatic\n var d = max - min, s = (l > .5) ? d / (2 - max - min) : d / (max + min);\n if (channel === 's')\n return s * 100;\n switch (max) {\n case r: return ((g - b) / d + (g < b ? 6 : 0)) * 60;\n case g: return ((b - r) / d + 2) * 60;\n case b: return ((r - g) / d + 4) * 60;\n default: return -1; //TSC: TypeScript is stupid and complains if there isn't this useless default statement\n }\n }\n};\n/* EXPORT */\nexports.default = Channel;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar channel_1 = require(\"./channel\");\nvar lang_1 = require(\"./lang\");\nvar unit_1 = require(\"./unit\");\n/* UTILS */\nvar Utils = {\n channel: channel_1.default,\n lang: lang_1.default,\n unit: unit_1.default\n};\n/* EXPORT */\nexports.default = Utils;\n","\"use strict\";\n/* LANG */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Lang = {\n round: function (number) {\n return Math.round(number * 10000000000) / 10000000000;\n }\n};\n/* EXPORT */\nexports.default = Lang;\n","\"use strict\";\n/* UNIT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Unit = {\n frac2hex: function (frac) {\n var hex = Math.round(frac * 255).toString(16);\n return hex.length > 1 ? hex : \"0\" + hex;\n },\n dec2hex: function (dec) {\n var hex = Math.round(dec).toString(16);\n return hex.length > 1 ? hex : \"0\" + hex;\n }\n};\n/* EXPORT */\nexports.default = Unit;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var isSymbol = require('./isSymbol');\n\n/**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\nfunction baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseExtremum;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\nfunction baseGt(value, other) {\n return value > other;\n}\n\nmodule.exports = baseGt;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\nfunction baseLt(value, other) {\n return value < other;\n}\n\nmodule.exports = baseLt;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseIteratee = require('./_baseIteratee'),\n isArrayLike = require('./isArrayLike'),\n keys = require('./keys');\n\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\nfunction createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiSize = require('./_asciiSize'),\n hasUnicode = require('./_hasUnicode'),\n unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n}\n\nmodule.exports = unicodeSize;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","module.exports = require('./forEach');\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","var createFind = require('./_createFind'),\n findIndex = require('./findIndex');\n\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\nvar find = createFind(findIndex);\n\nmodule.exports = find;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIteratee = require('./_baseIteratee'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var baseFor = require('./_baseFor'),\n castFunction = require('./_castFunction'),\n keysIn = require('./keysIn');\n\n/**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\nfunction forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, castFunction(iteratee), keysIn);\n}\n\nmodule.exports = forIn;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n\nmodule.exports = isUndefined;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","var baseExtremum = require('./_baseExtremum'),\n baseGt = require('./_baseGt'),\n identity = require('./identity');\n\n/**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\nfunction max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n}\n\nmodule.exports = max;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","var baseExtremum = require('./_baseExtremum'),\n baseLt = require('./_baseLt'),\n identity = require('./identity');\n\n/**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\nfunction min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n}\n\nmodule.exports = min;\n","var baseExtremum = require('./_baseExtremum'),\n baseIteratee = require('./_baseIteratee'),\n baseLt = require('./_baseLt');\n\n/**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\nfunction minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt)\n : undefined;\n}\n\nmodule.exports = minBy;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n stringSize = require('./_stringSize');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\nfunction size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n}\n\nmodule.exports = size;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","var baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n baseUniq = require('./_baseUniq'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"mermaid\"] = factory();\n\telse\n\t\troot[\"mermaid\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"./src/mermaid.js\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./node_modules/node-libs-browser/mock/empty.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/node-libs-browser/mock/empty.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/path-browserify/index.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/path-browserify/index.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/process/browser.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/process/browser.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/module.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/module.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n/***/ }),\n\n/***/ \"./package.json\":\n/*!**********************!*\\\n !*** ./package.json ***!\n \\**********************/\n/*! exports provided: name, version, description, main, keywords, scripts, repository, author, license, standard, dependencies, devDependencies, files, yarn-upgrade-all, sideEffects, husky, default */\n/***/ (function(module) {\n\nmodule.exports = JSON.parse(\"{\\\"name\\\":\\\"mermaid\\\",\\\"version\\\":\\\"8.9.3\\\",\\\"description\\\":\\\"Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.\\\",\\\"main\\\":\\\"dist/mermaid.core.js\\\",\\\"keywords\\\":[\\\"diagram\\\",\\\"markdown\\\",\\\"flowchart\\\",\\\"sequence diagram\\\",\\\"gantt\\\",\\\"class diagram\\\",\\\"git graph\\\"],\\\"scripts\\\":{\\\"build:development\\\":\\\"webpack --progress --colors\\\",\\\"build:production\\\":\\\"yarn build:development -p --config webpack.config.prod.babel.js\\\",\\\"build\\\":\\\"yarn build:development && yarn build:production\\\",\\\"postbuild\\\":\\\"documentation build src/mermaidAPI.js src/config.js src/defaultConfig.js --shallow -f md --markdown-toc false > docs/Setup.md\\\",\\\"build:watch\\\":\\\"yarn build --watch\\\",\\\"minify\\\":\\\"minify ./dist/mermaid.js > ./dist/mermaid.min.js\\\",\\\"release\\\":\\\"yarn build\\\",\\\"lint\\\":\\\"eslint src\\\",\\\"e2e:depr\\\":\\\"yarn lint && jest e2e --config e2e/jest.config.js\\\",\\\"cypress\\\":\\\"percy exec -- cypress run\\\",\\\"e2e\\\":\\\"start-server-and-test dev http://localhost:9000/ cypress\\\",\\\"e2e-upd\\\":\\\"yarn lint && jest e2e -u --config e2e/jest.config.js\\\",\\\"dev\\\":\\\"webpack-dev-server --config webpack.config.e2e.js\\\",\\\"test\\\":\\\"yarn lint && jest src/.*\\\",\\\"test:watch\\\":\\\"jest --watch src\\\",\\\"prepublishOnly\\\":\\\"yarn build && yarn test\\\",\\\"prepare\\\":\\\"yarn build\\\"},\\\"repository\\\":{\\\"type\\\":\\\"git\\\",\\\"url\\\":\\\"https://github.com/knsv/mermaid\\\"},\\\"author\\\":\\\"Knut Sveidqvist\\\",\\\"license\\\":\\\"MIT\\\",\\\"standard\\\":{\\\"ignore\\\":[\\\"**/parser/*.js\\\",\\\"dist/**/*.js\\\",\\\"cypress/**/*.js\\\"],\\\"globals\\\":[\\\"page\\\"]},\\\"dependencies\\\":{\\\"@braintree/sanitize-url\\\":\\\"^3.1.0\\\",\\\"d3\\\":\\\"^5.7.0\\\",\\\"dagre\\\":\\\"^0.8.4\\\",\\\"dagre-d3\\\":\\\"^0.6.4\\\",\\\"entity-decode\\\":\\\"^2.0.2\\\",\\\"graphlib\\\":\\\"^2.1.7\\\",\\\"he\\\":\\\"^1.2.0\\\",\\\"khroma\\\":\\\"^1.1.0\\\",\\\"minify\\\":\\\"^4.1.1\\\",\\\"moment-mini\\\":\\\"^2.22.1\\\",\\\"stylis\\\":\\\"^3.5.2\\\"},\\\"devDependencies\\\":{\\\"@babel/core\\\":\\\"^7.2.2\\\",\\\"@babel/preset-env\\\":\\\"^7.8.4\\\",\\\"@babel/register\\\":\\\"^7.0.0\\\",\\\"@percy/cypress\\\":\\\"*\\\",\\\"babel-core\\\":\\\"7.0.0-bridge.0\\\",\\\"babel-eslint\\\":\\\"^10.1.0\\\",\\\"babel-jest\\\":\\\"^24.9.0\\\",\\\"babel-loader\\\":\\\"^8.0.4\\\",\\\"coveralls\\\":\\\"^3.0.2\\\",\\\"css-loader\\\":\\\"^2.0.1\\\",\\\"css-to-string-loader\\\":\\\"^0.1.3\\\",\\\"cypress\\\":\\\"4.0.1\\\",\\\"documentation\\\":\\\"^12.0.1\\\",\\\"eslint\\\":\\\"^6.3.0\\\",\\\"eslint-config-prettier\\\":\\\"^6.3.0\\\",\\\"eslint-plugin-prettier\\\":\\\"^3.1.0\\\",\\\"husky\\\":\\\"^1.2.1\\\",\\\"identity-obj-proxy\\\":\\\"^3.0.0\\\",\\\"jest\\\":\\\"^24.9.0\\\",\\\"jison\\\":\\\"^0.4.18\\\",\\\"moment\\\":\\\"^2.23.0\\\",\\\"node-sass\\\":\\\"^5.0.0\\\",\\\"prettier\\\":\\\"^1.18.2\\\",\\\"puppeteer\\\":\\\"^1.17.0\\\",\\\"sass-loader\\\":\\\"^7.1.0\\\",\\\"start-server-and-test\\\":\\\"^1.10.6\\\",\\\"terser-webpack-plugin\\\":\\\"^2.2.2\\\",\\\"webpack\\\":\\\"^4.41.2\\\",\\\"webpack-bundle-analyzer\\\":\\\"^3.7.0\\\",\\\"webpack-cli\\\":\\\"^3.1.2\\\",\\\"webpack-dev-server\\\":\\\"^3.4.1\\\",\\\"webpack-node-externals\\\":\\\"^1.7.2\\\",\\\"yarn-upgrade-all\\\":\\\"^0.5.0\\\"},\\\"files\\\":[\\\"dist\\\"],\\\"yarn-upgrade-all\\\":{\\\"ignore\\\":[\\\"babel-core\\\"]},\\\"sideEffects\\\":[\\\"**/*.css\\\",\\\"**/*.scss\\\"],\\\"husky\\\":{\\\"hooks\\\":{\\\"pre-push\\\":\\\"yarn test\\\"}}}\");\n\n/***/ }),\n\n/***/ \"./src/config.js\":\n/*!***********************!*\\\n !*** ./src/config.js ***!\n \\***********************/\n/*! exports provided: defaultConfig, updateCurrentConfig, setSiteConfig, saveConfigFromInitilize, updateSiteConfig, getSiteConfig, setConfig, getConfig, sanitize, addDirective, reset */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultConfig\", function() { return defaultConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateCurrentConfig\", function() { return updateCurrentConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setSiteConfig\", function() { return setSiteConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveConfigFromInitilize\", function() { return saveConfigFromInitilize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateSiteConfig\", function() { return updateSiteConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSiteConfig\", function() { return getSiteConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConfig\", function() { return setConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getConfig\", function() { return getConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sanitize\", function() { return sanitize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addDirective\", function() { return addDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return reset; });\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/logger.js\");\n/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./themes */ \"./src/themes/index.js\");\n/* harmony import */ var _defaultConfig__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultConfig */ \"./src/defaultConfig.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n // debugger;\n\nvar defaultConfig = Object.freeze(_defaultConfig__WEBPACK_IMPORTED_MODULE_3__[\"default\"]);\nvar siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, defaultConfig);\nvar configFromInitialize;\nvar directives = [];\nvar currentConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, defaultConfig);\nvar updateCurrentConfig = function updateCurrentConfig(siteCfg, _directives) {\n // start with config beeing the siteConfig\n var cfg = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, siteCfg); // let sCfg = assignWithDepth(defaultConfig, siteConfigDelta);\n // Join directives\n\n var sumOfDirectives = {};\n\n for (var i = 0; i < _directives.length; i++) {\n var d = _directives[i];\n sanitize(d); // Apply the data from the directive where the the overrides the themeVaraibles\n\n sumOfDirectives = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])(sumOfDirectives, d);\n }\n\n cfg = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])(cfg, sumOfDirectives);\n\n if (sumOfDirectives.theme) {\n var tmpConfigFromInitialize = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, configFromInitialize);\n var themeVariables = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])(tmpConfigFromInitialize.themeVariables || {}, sumOfDirectives.themeVariables);\n cfg.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_2__[\"default\"][cfg.theme].getThemeVariables(themeVariables);\n }\n\n currentConfig = cfg;\n return cfg;\n};\n/**\n *## setSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request | Any Values, except ones in secure array|\n ***Notes:**\n *Sets the siteConfig. The siteConfig is a protected configuration for repeat use. Calls to reset() will reset\n *the currentConfig to siteConfig. Calls to reset(configApi.defaultConfig) will reset siteConfig and currentConfig\n *to the defaultConfig\n *Note: currentConfig is set in this function\n **Default value: At default, will mirror Global Config**\n * @param conf - the base currentConfig to use as siteConfig\n * @returns {*} - the siteConfig\n */\n\nvar setSiteConfig = function setSiteConfig(conf) {\n siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, defaultConfig);\n siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])(siteConfig, conf);\n\n if (conf.theme) {\n siteConfig.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_2__[\"default\"][conf.theme].getThemeVariables(conf.themeVariables);\n }\n\n currentConfig = updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\nvar saveConfigFromInitilize = function saveConfigFromInitilize(conf) {\n configFromInitialize = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, conf);\n};\nvar updateSiteConfig = function updateSiteConfig(conf) {\n siteConfig = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])(siteConfig, conf);\n updateCurrentConfig(siteConfig, directives);\n return siteConfig;\n};\n/**\n *## getSiteConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Returns the current siteConfig base configuration | Get Request | Returns Any Values in siteConfig|\n ***Notes**:\n *Returns **any** values in siteConfig.\n * @returns {*}\n */\n\nvar getSiteConfig = function getSiteConfig() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, siteConfig);\n};\n/**\n *## setConfig\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| setSiteConfig|Sets the siteConfig to desired values | Put Request| Any Values, except ones in secure array|\n ***Notes**:\n *Sets the currentConfig. The parameter conf is sanitized based on the siteConfig.secure keys. Any\n *values found in conf with key found in siteConfig.secure will be replaced with the corresponding\n *siteConfig value.\n * @param conf - the potential currentConfig\n * @returns {*} - the currentConfig merged with the sanitized conf\n */\n\nvar setConfig = function setConfig(conf) {\n // sanitize(conf);\n // Object.keys(conf).forEach(key => {\n // const manipulator = manipulators[key];\n // conf[key] = manipulator ? manipulator(conf[key]) : conf[key];\n // });\n Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])(currentConfig, conf);\n return getConfig();\n};\n/**\n * ## getConfig\n *| Function | Description | Type | Return Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| getConfig |Obtains the currentConfig | Get Request | Any Values from currentConfig|\n ***Notes**:\n *Returns **any** the currentConfig\n * @returns {*} - the currentConfig\n */\n\nvar getConfig = function getConfig() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"assignWithDepth\"])({}, currentConfig);\n};\n/**\n *## sanitize\n *| Function | Description | Type | Values |\n *| --------- | ------------------- | ------- | ------------------ |\n *| sanitize |Sets the siteConfig to desired values. | Put Request |None|\n *Ensures options parameter does not attempt to override siteConfig secure keys\n *Note: modifies options in-place\n * @param options - the potential setConfig parameter\n */\n\nvar sanitize = function sanitize(options) {\n // Checking that options are not in the list of excluded options\n Object.keys(siteConfig.secure).forEach(function (key) {\n if (typeof options[siteConfig.secure[key]] !== 'undefined') {\n // DO NOT attempt to print options[siteConfig.secure[key]] within `${}` as a malicious script\n // can exploit the logger's attempt to stringify the value and execute arbitrary code\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug(\"Denied attempt to modify a secure key \".concat(siteConfig.secure[key]), options[siteConfig.secure[key]]);\n delete options[siteConfig.secure[key]];\n }\n }); // Check that there no attempts of prototype pollution\n\n Object.keys(options).forEach(function (key) {\n if (key.indexOf('__') === 0) {\n delete options[key];\n }\n }); // Check that there no attempts of xss, there should be no tags at all in the directive\n // blocking data urls as base64 urls can contain svgs with inline script tags\n\n Object.keys(options).forEach(function (key) {\n if (typeof options[key] === 'string') {\n if (options[key].indexOf('<') > -1 || options[key].indexOf('>') > -1 || options[key].indexOf('url(data:') > -1) {\n delete options[key];\n }\n }\n\n if (_typeof(options[key]) === 'object') {\n sanitize(options[key]);\n }\n });\n};\nvar addDirective = function addDirective(directive) {\n if (directive.fontFamily) {\n if (!directive.themeVariables) {\n directive.themeVariables = {\n fontFamily: directive.fontFamily\n };\n } else {\n if (!directive.themeVariables.fontFamily) {\n directive.themeVariables = {\n fontFamily: directive.fontFamily\n };\n }\n }\n }\n\n directives.push(directive);\n updateCurrentConfig(siteConfig, directives);\n};\n/**\n *## reset\n *| Function | Description | Type | Required | Values |\n *| --------- | ------------------- | ------- | -------- | ------------------ |\n *| reset|Resets currentConfig to conf| Put Request | Required | None|\n *\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| conf| base set of values, which currentConfig coul be **reset** to.| Dictionary | Required | Any Values, with respect to the secure Array|\n *\n **Notes :\n (default: current siteConfig ) (optional, default `getSiteConfig()`)\n * @param conf the base currentConfig to reset to (default: current siteConfig ) (optional, default `getSiteConfig()`)\n */\n\nvar reset = function reset() {\n // Replace current config with siteConfig\n directives = [];\n updateCurrentConfig(siteConfig, directives);\n};\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/clusters.js\":\n/*!***************************************!*\\\n !*** ./src/dagre-wrapper/clusters.js ***!\n \\***************************************/\n/*! exports provided: insertCluster, getClusterTitleWidth, clear, positionCluster */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertCluster\", function() { return insertCluster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClusterTitleWidth\", function() { return getClusterTitleWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"positionCluster\", function() { return positionCluster; });\n/* harmony import */ var _intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect/intersect-rect */ \"./src/dagre-wrapper/intersect/intersect-rect.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createLabel */ \"./src/dagre-wrapper/createLabel.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ \"./src/config.js\");\n\n\n\n\n\n\nvar rect = function rect(parent, node) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].trace('Creating subgraph rect for ', node.id, node); // Add outer g element\n\n var shapeSvg = parent.insert('g').attr('class', 'cluster' + (node.class ? ' ' + node.class : '')).attr('id', node.id); // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child'); // Create the label and insert it after the rect\n\n var label = shapeSvg.insert('g').attr('class', 'cluster-label');\n var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node.labelText, node.labelStyle, undefined, true)); // Get the size of the label\n\n var bbox = text.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.htmlLabels) {\n var div = text.children[0];\n var dv = Object(d3__WEBPACK_IMPORTED_MODULE_3__[\"select\"])(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n var padding = 0 * node.padding;\n var halfPadding = padding / 2;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].trace('Data ', node, JSON.stringify(node)); // center the rect around its coordinate\n\n rect.attr('style', node.style).attr('rx', node.rx).attr('ry', node.ry).attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding).attr('width', node.width + padding).attr('height', node.height + padding); // Center the label\n\n label.attr('transform', 'translate(' + (node.x - bbox.width / 2) + ', ' + (node.y - node.height / 2 + node.padding / 3) + ')');\n var rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node, point);\n };\n\n return shapeSvg;\n};\n/**\n * Non visiable cluster where the note is group with its\n */\n\n\nvar noteGroup = function noteGroup(parent, node) {\n // Add outer g element\n var shapeSvg = parent.insert('g').attr('class', 'note-cluster').attr('id', node.id); // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child');\n var padding = 0 * node.padding;\n var halfPadding = padding / 2; // center the rect around its coordinate\n\n rect.attr('rx', node.rx).attr('ry', node.ry).attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding).attr('width', node.width + padding).attr('height', node.height + padding).attr('fill', 'none');\n var rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node, point);\n };\n\n return shapeSvg;\n};\n\nvar roundedWithTitle = function roundedWithTitle(parent, node) {\n // Add outer g element\n var shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id); // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child'); // Create the label and insert it after the rect\n\n var label = shapeSvg.insert('g').attr('class', 'cluster-label');\n var innerRect = shapeSvg.append('rect');\n var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node.labelText, node.labelStyle, undefined, true)); // Get the size of the label\n\n var bbox = text.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.htmlLabels) {\n var div = text.children[0];\n var dv = Object(d3__WEBPACK_IMPORTED_MODULE_3__[\"select\"])(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n bbox = text.getBBox();\n var padding = 0 * node.padding;\n var halfPadding = padding / 2; // center the rect around its coordinate\n\n rect.attr('class', 'outer').attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding).attr('width', node.width + padding).attr('height', node.height + padding);\n innerRect.attr('class', 'inner').attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2 - halfPadding + bbox.height - 1).attr('width', node.width + padding).attr('height', node.height + padding - bbox.height - 3); // Center the label\n\n label.attr('transform', 'translate(' + (node.x - bbox.width / 2) + ', ' + (node.y - node.height / 2 - node.padding / 3 + (Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.htmlLabels ? 5 : 3)) + ')');\n var rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node, point);\n };\n\n return shapeSvg;\n};\n\nvar divider = function divider(parent, node) {\n // Add outer g element\n var shapeSvg = parent.insert('g').attr('class', node.classes).attr('id', node.id); // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child');\n var padding = 0 * node.padding;\n var halfPadding = padding / 2; // center the rect around its coordinate\n\n rect.attr('class', 'divider').attr('x', node.x - node.width / 2 - halfPadding).attr('y', node.y - node.height / 2).attr('width', node.width + padding).attr('height', node.height + padding);\n var rectBox = rect.node().getBBox();\n node.width = rectBox.width;\n node.height = rectBox.height;\n\n node.intersect = function (point) {\n return Object(_intersect_intersect_rect__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node, point);\n };\n\n return shapeSvg;\n};\n\nvar shapes = {\n rect: rect,\n roundedWithTitle: roundedWithTitle,\n noteGroup: noteGroup,\n divider: divider\n};\nvar clusterElems = {};\nvar insertCluster = function insertCluster(elem, node) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].trace('Inserting cluster');\n var shape = node.shape || 'rect';\n clusterElems[node.id] = shapes[shape](elem, node);\n};\nvar getClusterTitleWidth = function getClusterTitleWidth(elem, node) {\n var label = Object(_createLabel__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(node.labelText, node.labelStyle, undefined, true);\n elem.node().appendChild(label);\n var width = label.getBBox().width;\n elem.node().removeChild(label);\n return width;\n};\nvar clear = function clear() {\n clusterElems = {};\n};\nvar positionCluster = function positionCluster(node) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Position cluster');\n var el = clusterElems[node.id];\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n};\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/createLabel.js\":\n/*!******************************************!*\\\n !*** ./src/dagre-wrapper/createLabel.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ \"./src/config.js\");\n\n // eslint-disable-line\n// let vertexNode;\n// if (getConfig().flowchart.htmlLabels) {\n// // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n// const node = {\n// label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, s => `<i class='${s.replace(':', ' ')}'></i>`)\n// };\n// vertexNode = addHtmlLabel(svg, node).node();\n// vertexNode.parentNode.removeChild(vertexNode);\n// } else {\n// const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n// svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n// const rows = vertexText.split(common.lineBreakRegex);\n// for (let j = 0; j < rows.length; j++) {\n// const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n// tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n// tspan.setAttribute('dy', '1em');\n// tspan.setAttribute('x', '1');\n// tspan.textContent = rows[j];\n// svgLabel.appendChild(tspan);\n// }\n// vertexNode = svgLabel;\n// }\n\n\n\nfunction applyStyle(dom, styleFn) {\n if (styleFn) {\n dom.attr('style', styleFn);\n }\n}\n\nfunction addHtmlLabel(node) {\n // var fo = root.append('foreignObject').attr('width', '100000');\n // var div = fo.append('xhtml:div');\n // div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n // var label = node.label;\n // switch (typeof label) {\n // case 'function':\n // div.insert(label);\n // break;\n // case 'object':\n // // Currently we assume this is a DOM object.\n // div.insert(function() {\n // return label;\n // });\n // break;\n // default:\n // div.html(label);\n // }\n // applyStyle(div, node.labelStyle);\n // div.style('display', 'inline-block');\n // // Fix for firefox\n // div.style('white-space', 'nowrap');\n // var client = div.node().getBoundingClientRect();\n // fo.attr('width', client.width).attr('height', client.height);\n var fo = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'));\n var div = fo.append('xhtml:div');\n var label = node.label;\n var labelClass = node.isNode ? 'nodeLabel' : 'edgeLabel';\n div.html('<span class=\"' + labelClass + '\" ' + (node.labelStyle ? 'style=\"' + node.labelStyle + '\"' : '') + '>' + label + '</span>');\n applyStyle(div, node.labelStyle);\n div.style('display', 'inline-block'); // Fix for firefox\n\n div.style('white-space', 'nowrap');\n div.attr('xmlns', 'http://www.w3.org/1999/xhtml');\n return fo.node();\n}\n\nvar createLabel = function createLabel(_vertexText, style, isTitle, isNode) {\n var vertexText = _vertexText || '';\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"])().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n vertexText = vertexText.replace(/\\\\n|\\n/g, '<br />');\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('vertexText' + vertexText);\n var node = {\n isNode: isNode,\n label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, function (s) {\n return \"<i class='\".concat(s.replace(':', ' '), \"'></i>\");\n }),\n labelStyle: style.replace('fill:', 'color:')\n };\n var vertexNode = addHtmlLabel(node); // vertexNode.parentNode.removeChild(vertexNode);\n\n return vertexNode;\n } else {\n var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', style.replace('color:', 'fill:'));\n var rows = [];\n\n if (typeof vertexText === 'string') {\n rows = vertexText.split(/\\\\n|\\n|<br\\s*\\/?>/gi);\n } else if (Array.isArray(vertexText)) {\n rows = vertexText;\n } else {\n rows = [];\n }\n\n for (var j = 0; j < rows.length; j++) {\n var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '0');\n\n if (isTitle) {\n tspan.setAttribute('class', 'title-row');\n } else {\n tspan.setAttribute('class', 'row');\n }\n\n tspan.textContent = rows[j].trim();\n svgLabel.appendChild(tspan);\n }\n\n return svgLabel;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createLabel);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/edges.js\":\n/*!************************************!*\\\n !*** ./src/dagre-wrapper/edges.js ***!\n \\************************************/\n/*! exports provided: clear, insertEdgeLabel, positionEdgeLabel, intersection, insertEdge */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertEdgeLabel\", function() { return insertEdgeLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"positionEdgeLabel\", function() { return positionEdgeLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return intersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertEdge\", function() { return insertEdge; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createLabel */ \"./src/dagre-wrapper/createLabel.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ \"./src/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils */ \"./src/utils.js\");\n // eslint-disable-line\n\n\n\n\n // import { calcLabelPosition } from '../utils';\n\nvar edgeLabels = {};\nvar terminalLabels = {};\nvar clear = function clear() {\n edgeLabels = {};\n terminalLabels = {};\n};\nvar insertEdgeLabel = function insertEdgeLabel(elem, edge) {\n // Create the actual text element\n var labelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(edge.label, edge.labelStyle); // Create outer g, edgeLabel, this will be positioned after graph layout\n\n var edgeLabel = elem.insert('g').attr('class', 'edgeLabel'); // Create inner g, label, this will be positioned now for centering the text\n\n var label = edgeLabel.insert('g').attr('class', 'label');\n label.node().appendChild(labelElement); // Center the label\n\n var bbox = labelElement.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var div = labelElement.children[0];\n var dv = Object(d3__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(labelElement);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')'); // Make element accessible by id for positioning\n\n edgeLabels[edge.id] = edgeLabel; // Update the abstract data of the edge with the new information about its width and height\n\n edge.width = bbox.width;\n edge.height = bbox.height;\n\n if (edge.startLabelLeft) {\n // Create the actual text element\n var startLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(edge.startLabelLeft, edge.labelStyle);\n var startEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n var inner = startEdgeLabelLeft.insert('g').attr('class', 'inner');\n inner.node().appendChild(startLabelElement);\n var slBox = startLabelElement.getBBox();\n inner.attr('transform', 'translate(' + -slBox.width / 2 + ', ' + -slBox.height / 2 + ')');\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n\n terminalLabels[edge.id].startLeft = startEdgeLabelLeft;\n }\n\n if (edge.startLabelRight) {\n // Create the actual text element\n var _startLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(edge.startLabelRight, edge.labelStyle);\n\n var startEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n\n var _inner = startEdgeLabelRight.insert('g').attr('class', 'inner');\n\n startEdgeLabelRight.node().appendChild(_startLabelElement);\n\n _inner.node().appendChild(_startLabelElement);\n\n var _slBox = _startLabelElement.getBBox();\n\n _inner.attr('transform', 'translate(' + -_slBox.width / 2 + ', ' + -_slBox.height / 2 + ')');\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n\n terminalLabels[edge.id].startRight = startEdgeLabelRight;\n }\n\n if (edge.endLabelLeft) {\n // Create the actual text element\n var endLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(edge.endLabelLeft, edge.labelStyle);\n var endEdgeLabelLeft = elem.insert('g').attr('class', 'edgeTerminals');\n\n var _inner2 = endEdgeLabelLeft.insert('g').attr('class', 'inner');\n\n _inner2.node().appendChild(endLabelElement);\n\n var _slBox2 = endLabelElement.getBBox();\n\n _inner2.attr('transform', 'translate(' + -_slBox2.width / 2 + ', ' + -_slBox2.height / 2 + ')');\n\n endEdgeLabelLeft.node().appendChild(endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n\n terminalLabels[edge.id].endLeft = endEdgeLabelLeft;\n }\n\n if (edge.endLabelRight) {\n // Create the actual text element\n var _endLabelElement = Object(_createLabel__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(edge.endLabelRight, edge.labelStyle);\n\n var endEdgeLabelRight = elem.insert('g').attr('class', 'edgeTerminals');\n\n var _inner3 = endEdgeLabelRight.insert('g').attr('class', 'inner');\n\n _inner3.node().appendChild(_endLabelElement);\n\n var _slBox3 = _endLabelElement.getBBox();\n\n _inner3.attr('transform', 'translate(' + -_slBox3.width / 2 + ', ' + -_slBox3.height / 2 + ')');\n\n endEdgeLabelRight.node().appendChild(_endLabelElement);\n\n if (!terminalLabels[edge.id]) {\n terminalLabels[edge.id] = {};\n }\n\n terminalLabels[edge.id].endRight = endEdgeLabelRight;\n }\n};\nvar positionEdgeLabel = function positionEdgeLabel(edge, paths) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Moving label', edge.id, edge.label, edgeLabels[edge.id]);\n var path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n\n if (edge.label) {\n var el = edgeLabels[edge.id];\n var x = edge.x;\n var y = edge.y;\n\n if (path) {\n // // debugger;\n var pos = _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].calcLabelPosition(path);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Moving label from (', x, ',', y, ') to (', pos.x, ',', pos.y, ')'); // x = pos.x;\n // y = pos.y;\n }\n\n el.attr('transform', 'translate(' + x + ', ' + y + ')');\n } //let path = paths.updatedPath ? paths.updatedPath : paths.originalPath;\n\n\n if (edge.startLabelLeft) {\n var _el = terminalLabels[edge.id].startLeft;\n var _x = edge.x;\n var _y = edge.y;\n\n if (path) {\n // debugger;\n var _pos = _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].calcTerminalLabelPosition(0, 'start_left', path);\n\n _x = _pos.x;\n _y = _pos.y;\n }\n\n _el.attr('transform', 'translate(' + _x + ', ' + _y + ')');\n }\n\n if (edge.startLabelRight) {\n var _el2 = terminalLabels[edge.id].startRight;\n var _x2 = edge.x;\n var _y2 = edge.y;\n\n if (path) {\n // debugger;\n var _pos2 = _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].calcTerminalLabelPosition(0, 'start_right', path);\n\n _x2 = _pos2.x;\n _y2 = _pos2.y;\n }\n\n _el2.attr('transform', 'translate(' + _x2 + ', ' + _y2 + ')');\n }\n\n if (edge.endLabelLeft) {\n var _el3 = terminalLabels[edge.id].endLeft;\n var _x3 = edge.x;\n var _y3 = edge.y;\n\n if (path) {\n // debugger;\n var _pos3 = _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].calcTerminalLabelPosition(0, 'end_left', path);\n\n _x3 = _pos3.x;\n _y3 = _pos3.y;\n }\n\n _el3.attr('transform', 'translate(' + _x3 + ', ' + _y3 + ')');\n }\n\n if (edge.endLabelRight) {\n var _el4 = terminalLabels[edge.id].endRight;\n var _x4 = edge.x;\n var _y4 = edge.y;\n\n if (path) {\n // debugger;\n var _pos4 = _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].calcTerminalLabelPosition(0, 'end_right', path);\n\n _x4 = _pos4.x;\n _y4 = _pos4.y;\n }\n\n _el4.attr('transform', 'translate(' + _x4 + ', ' + _y4 + ')');\n }\n}; // const getRelationType = function(type) {\n// switch (type) {\n// case stateDb.relationType.AGGREGATION:\n// return 'aggregation';\n// case stateDb.relationType.EXTENSION:\n// return 'extension';\n// case stateDb.relationType.COMPOSITION:\n// return 'composition';\n// case stateDb.relationType.DEPENDENCY:\n// return 'dependency';\n// }\n// };\n\nvar outsideNode = function outsideNode(node, point) {\n // log.warn('Checking bounds ', node, point);\n var x = node.x;\n var y = node.y;\n var dx = Math.abs(point.x - x);\n var dy = Math.abs(point.y - y);\n var w = node.width / 2;\n var h = node.height / 2;\n\n if (dx >= w || dy >= h) {\n return true;\n }\n\n return false;\n};\n\nvar intersection = function intersection(node, outsidePoint, insidePoint) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('intersection calc o:', outsidePoint, ' i:', insidePoint, node);\n var x = node.x;\n var y = node.y;\n var dx = Math.abs(x - insidePoint.x);\n var w = node.width / 2;\n var r = insidePoint.x < outsidePoint.x ? w - dx : w + dx;\n var h = node.height / 2;\n var edges = {\n x1: x - w,\n x2: x + w,\n y1: y - h,\n y2: y + h\n };\n\n if (outsidePoint.x === edges.x1 || outsidePoint.x === edges.x2 || outsidePoint.y === edges.y1 || outsidePoint.y === edges.y2) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('calc equals on edge');\n return outsidePoint;\n }\n\n var Q = Math.abs(outsidePoint.y - insidePoint.y);\n var R = Math.abs(outsidePoint.x - insidePoint.x); // log.warn();\n\n if (Math.abs(y - outsidePoint.y) * w > Math.abs(x - outsidePoint.x) * h) {\n // eslint-disable-line\n // Intersection is top or bottom of rect.\n // let q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n var q = insidePoint.y < outsidePoint.y ? outsidePoint.y - h - y : y - h - outsidePoint.y;\n r = R * q / Q;\n var res = {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x - r,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + Q - q : insidePoint.y - q\n };\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn(\"topp/bott calc, Q \".concat(Q, \", q \").concat(q, \", R \").concat(R, \", r \").concat(r), res);\n return res;\n } else {\n // Intersection onn sides of rect\n // q = (Q * r) / R;\n // q = 2;\n // r = (R * q) / Q;\n if (insidePoint.x < outsidePoint.x) {\n r = outsidePoint.x - w - x;\n } else {\n // r = outsidePoint.x - w - x;\n r = x - w - outsidePoint.x;\n }\n\n var _q = _q = Q * r / R;\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn(\"sides calc, Q \".concat(Q, \", q \").concat(_q, \", R \").concat(R, \", r \").concat(r), {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + _q : insidePoint.y - _q\n });\n return {\n x: insidePoint.x < outsidePoint.x ? insidePoint.x + R - r : insidePoint.x + dx - w,\n y: insidePoint.y < outsidePoint.y ? insidePoint.y + _q : insidePoint.y - _q\n };\n }\n}; //(edgePaths, e, edge, clusterDb, diagramtype, graph)\n\nvar insertEdge = function insertEdge(elem, e, edge, clusterDb, diagramType, graph) {\n var points = edge.points;\n var pointsHasChanged = false;\n var tail = graph.node(e.v);\n var head = graph.node(e.w);\n\n if (head.intersect && tail.intersect) {\n points = points.slice(1, edge.points.length - 1);\n points.unshift(tail.intersect(points[0]));\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Last point', points[points.length - 1], head, head.intersect(points[points.length - 1]));\n points.push(head.intersect(points[points.length - 1]));\n }\n\n if (edge.toCluster) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('edge', edge);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('to cluster', clusterDb[edge.toCluster]);\n points = [];\n var lastPointOutside;\n var isInside = false;\n edge.points.forEach(function (point) {\n var node = clusterDb[edge.toCluster].node;\n\n if (!outsideNode(node, point) && !isInside) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('inside', edge.toCluster, point, lastPointOutside); // First point inside the rect\n\n var inter = intersection(node, lastPointOutside, point);\n var pointPresent = false;\n points.forEach(function (p) {\n pointPresent = pointPresent || p.x === inter.x && p.y === inter.y;\n }); // if (!pointPresent) {\n\n if (!points.find(function (e) {\n return e.x === inter.x && e.y === inter.y;\n })) {\n points.push(inter);\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('no intersect', inter, points);\n }\n\n isInside = true;\n } else {\n if (!isInside) points.push(point);\n }\n\n lastPointOutside = point;\n });\n pointsHasChanged = true;\n }\n\n if (edge.fromCluster) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('edge', edge);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('from cluster', clusterDb[edge.fromCluster]);\n var updatedPoints = [];\n\n var _lastPointOutside;\n\n var _isInside = false;\n\n for (var i = points.length - 1; i >= 0; i--) {\n var point = points[i];\n var node = clusterDb[edge.fromCluster].node;\n\n if (!outsideNode(node, point) && !_isInside) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('inside', edge.fromCluster, point, node); // First point inside the rect\n\n var insterection = intersection(node, _lastPointOutside, point); // log.trace('intersect', intersection(node, lastPointOutside, point));\n\n updatedPoints.unshift(insterection); // points.push(insterection);\n\n _isInside = true;\n } else {\n // at the outside\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('Outside point', point);\n if (!_isInside) updatedPoints.unshift(point);\n }\n\n _lastPointOutside = point;\n }\n\n points = updatedPoints;\n pointsHasChanged = true;\n } // The data for our line\n\n\n var lineData = points.filter(function (p) {\n return !Number.isNaN(p.y);\n }); // This is the accessor function we talked about above\n\n var curve; // Currently only flowcharts get the curve from the settings, perhaps this should\n // be expanded to a common setting? Restricting it for now in order not to cause side-effects that\n // have not been thought through\n\n if (diagramType === 'graph' || diagramType === 'flowchart') {\n curve = edge.curve || d3__WEBPACK_IMPORTED_MODULE_2__[\"curveBasis\"];\n } else {\n curve = d3__WEBPACK_IMPORTED_MODULE_2__[\"curveBasis\"];\n }\n\n var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_2__[\"line\"])().x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }).curve(curve); // Contruct stroke classes based on properties\n\n var strokeClasses;\n\n switch (edge.thickness) {\n case 'normal':\n strokeClasses = 'edge-thickness-normal';\n break;\n\n case 'thick':\n strokeClasses = 'edge-thickness-thick';\n break;\n\n default:\n strokeClasses = '';\n }\n\n switch (edge.pattern) {\n case 'solid':\n strokeClasses += ' edge-pattern-solid';\n break;\n\n case 'dotted':\n strokeClasses += ' edge-pattern-dotted';\n break;\n\n case 'dashed':\n strokeClasses += ' edge-pattern-dashed';\n break;\n }\n\n var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', edge.id).attr('class', ' ' + strokeClasses + (edge.classes ? ' ' + edge.classes : '')).attr('style', edge.style); // DEBUG code, adds a red circle at each edge coordinate\n // edge.points.forEach(point => {\n // elem\n // .append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n\n var url = '';\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().state.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('arrowTypeStart', edge.arrowTypeStart);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('arrowTypeEnd', edge.arrowTypeEnd);\n\n switch (edge.arrowTypeStart) {\n case 'arrow_cross':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-crossStart' + ')');\n break;\n\n case 'arrow_point':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-pointStart' + ')');\n break;\n\n case 'arrow_barb':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-barbStart' + ')');\n break;\n\n case 'arrow_circle':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-circleStart' + ')');\n break;\n\n case 'aggregation':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-aggregationStart' + ')');\n break;\n\n case 'extension':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-extensionStart' + ')');\n break;\n\n case 'composition':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-compositionStart' + ')');\n break;\n\n case 'dependency':\n svgPath.attr('marker-start', 'url(' + url + '#' + diagramType + '-dependencyStart' + ')');\n break;\n\n default:\n }\n\n switch (edge.arrowTypeEnd) {\n case 'arrow_cross':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-crossEnd' + ')');\n break;\n\n case 'arrow_point':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-pointEnd' + ')');\n break;\n\n case 'arrow_barb':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-barbEnd' + ')');\n break;\n\n case 'arrow_circle':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-circleEnd' + ')');\n break;\n\n case 'aggregation':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-aggregationEnd' + ')');\n break;\n\n case 'extension':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-extensionEnd' + ')');\n break;\n\n case 'composition':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-compositionEnd' + ')');\n break;\n\n case 'dependency':\n svgPath.attr('marker-end', 'url(' + url + '#' + diagramType + '-dependencyEnd' + ')');\n break;\n\n default:\n }\n\n var paths = {};\n\n if (pointsHasChanged) {\n paths.updatedPath = points;\n }\n\n paths.originalPath = edge.points;\n return paths;\n};\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/index.js\":\n/*!************************************!*\\\n !*** ./src/dagre-wrapper/index.js ***!\n \\************************************/\n/*! exports provided: render */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre */ \"dagre\");\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _markers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./markers */ \"./src/dagre-wrapper/markers.js\");\n/* harmony import */ var _shapes_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shapes/util */ \"./src/dagre-wrapper/shapes/util.js\");\n/* harmony import */ var _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mermaid-graphlib */ \"./src/dagre-wrapper/mermaid-graphlib.js\");\n/* harmony import */ var _nodes__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./nodes */ \"./src/dagre-wrapper/nodes.js\");\n/* harmony import */ var _clusters__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./clusters */ \"./src/dagre-wrapper/clusters.js\");\n/* harmony import */ var _edges__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./edges */ \"./src/dagre-wrapper/edges.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n\n\n\n\n\n\n\n\n\n\nvar recursiveRender = function recursiveRender(_elem, graph, diagramtype, parentCluster) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Graph in recursive render: XXX', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph), parentCluster);\n var dir = graph.graph().rankdir;\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].warn('Dir in recursive render - dir:', dir);\n\n var elem = _elem.insert('g').attr('class', 'root'); // eslint-disable-line\n\n\n if (!graph.nodes()) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('No nodes found for', graph);\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Recursive render XXX', graph.nodes());\n }\n\n if (graph.edges().length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Recursive edges', graph.edge(graph.edges()[0]));\n }\n\n var clusters = elem.insert('g').attr('class', 'clusters'); // eslint-disable-line\n\n var edgePaths = elem.insert('g').attr('class', 'edgePaths');\n var edgeLabels = elem.insert('g').attr('class', 'edgeLabels');\n var nodes = elem.insert('g').attr('class', 'nodes'); // Insert nodes, this will insert them into the dom and each node will get a size. The size is updated\n // to the abstract node and is later used by dagre for the layout\n\n graph.nodes().forEach(function (v) {\n var node = graph.node(v);\n\n if (typeof parentCluster !== 'undefined') {\n var data = JSON.parse(JSON.stringify(parentCluster.clusterData)); // data.clusterPositioning = true;\n\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Setting data for cluster XXX (', v, ') ', data, parentCluster);\n graph.setNode(parentCluster.id, data);\n\n if (!graph.parent(v)) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].warn('Setting parent', v, parentCluster.id);\n graph.setParent(v, parentCluster.id, data);\n }\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('(Insert) Node XXX' + v + ': ' + JSON.stringify(graph.node(v)));\n\n if (node && node.clusterNode) {\n // const children = graph.children(v);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Cluster identified', v, node, graph.node(v));\n var newEl = recursiveRender(nodes, node.graph, diagramtype, graph.node(v));\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_3__[\"updateNodeBounds\"])(node, newEl);\n Object(_nodes__WEBPACK_IMPORTED_MODULE_5__[\"setNodeElem\"])(newEl, node);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].warn('Recursive render complete', newEl, node);\n } else {\n if (graph.children(v).length > 0) {\n // This is a cluster but not to be rendered recusively\n // Render as before\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Cluster - the non recursive path XXX', v, node.id, node, graph);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info(Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"findNonClusterChild\"])(node.id, graph));\n _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clusterDb\"][node.id] = {\n id: Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"findNonClusterChild\"])(node.id, graph),\n node: node\n }; // insertCluster(clusters, graph.node(v));\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Node - the non recursive path', v, node.id, node);\n Object(_nodes__WEBPACK_IMPORTED_MODULE_5__[\"insertNode\"])(nodes, graph.node(v), dir);\n }\n }\n }); // Insert labels, this will insert them into the dom so that the width can be calculated\n // Also figure out which edges point to/from clusters and adjust them accordingly\n // Edges from/to clusters really points to the first child in the cluster.\n // TODO: pick optimal child in the cluster to us as link anchor\n\n graph.edges().forEach(function (e) {\n var edge = graph.edge(e.v, e.w, e.name);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Edge ' + e.v + ' -> ' + e.w + ': ', e, ' ', JSON.stringify(graph.edge(e))); // Check if link is either from or to a cluster\n\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Fix', _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clusterDb\"], 'ids:', e.v, e.w, 'Translateing: ', _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clusterDb\"][e.v], _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clusterDb\"][e.w]);\n Object(_edges__WEBPACK_IMPORTED_MODULE_7__[\"insertEdgeLabel\"])(edgeLabels, edge);\n });\n graph.edges().forEach(function (e) {\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n });\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('#############################################');\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('### Layout ###');\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('#############################################');\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info(graph);\n dagre__WEBPACK_IMPORTED_MODULE_0___default.a.layout(graph);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Graph after layout:', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph)); // Move the nodes to the correct place\n\n Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"sortNodesByHierarchy\"])(graph).forEach(function (v) {\n var node = graph.node(v);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Position ' + v + ': ' + JSON.stringify(graph.node(v)));\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Position ' + v + ': (' + node.x, ',' + node.y, ') width: ', node.width, ' height: ', node.height);\n\n if (node && node.clusterNode) {\n // clusterDb[node.id].node = node;\n Object(_nodes__WEBPACK_IMPORTED_MODULE_5__[\"positionNode\"])(node);\n } else {\n // Non cluster node\n if (graph.children(v).length > 0) {\n // A cluster in the non-recurive way\n // positionCluster(node);\n Object(_clusters__WEBPACK_IMPORTED_MODULE_6__[\"insertCluster\"])(clusters, node);\n _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clusterDb\"][node.id].node = node;\n } else {\n Object(_nodes__WEBPACK_IMPORTED_MODULE_5__[\"positionNode\"])(node);\n }\n }\n }); // Move the edge labels to the correct place after layout\n\n graph.edges().forEach(function (e) {\n var edge = graph.edge(e);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].info('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(edge), edge);\n var paths = Object(_edges__WEBPACK_IMPORTED_MODULE_7__[\"insertEdge\"])(edgePaths, e, edge, _mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clusterDb\"], diagramtype, graph);\n Object(_edges__WEBPACK_IMPORTED_MODULE_7__[\"positionEdgeLabel\"])(edge, paths);\n });\n return elem;\n};\n\nvar render = function render(elem, graph, markers, diagramtype, id) {\n Object(_markers__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(elem, markers, diagramtype, id);\n Object(_nodes__WEBPACK_IMPORTED_MODULE_5__[\"clear\"])();\n Object(_edges__WEBPACK_IMPORTED_MODULE_7__[\"clear\"])();\n Object(_clusters__WEBPACK_IMPORTED_MODULE_6__[\"clear\"])();\n Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"clear\"])();\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].warn('Graph at first:', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));\n Object(_mermaid_graphlib__WEBPACK_IMPORTED_MODULE_4__[\"adjustClustersAndEdges\"])(graph);\n _logger__WEBPACK_IMPORTED_MODULE_8__[\"log\"].warn('Graph after:', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph)); // log.warn('Graph ever after:', graphlib.json.write(graph.node('A').graph));\n\n recursiveRender(elem, graph, diagramtype);\n}; // const shapeDefinitions = {};\n// export const addShape = ({ shapeType: fun }) => {\n// shapeDefinitions[shapeType] = fun;\n// };\n// const arrowDefinitions = {};\n// export const addArrow = ({ arrowType: fun }) => {\n// arrowDefinitions[arrowType] = fun;\n// };\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/index.js\":\n/*!**********************************************!*\\\n !*** ./src/dagre-wrapper/intersect/index.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _intersect_node_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-node.js */ \"./src/dagre-wrapper/intersect/intersect-node.js\");\n/* harmony import */ var _intersect_node_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_intersect_node_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _intersect_circle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./intersect-circle.js */ \"./src/dagre-wrapper/intersect/intersect-circle.js\");\n/* harmony import */ var _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./intersect-ellipse.js */ \"./src/dagre-wrapper/intersect/intersect-ellipse.js\");\n/* harmony import */ var _intersect_polygon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./intersect-polygon.js */ \"./src/dagre-wrapper/intersect/intersect-polygon.js\");\n/* harmony import */ var _intersect_rect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./intersect-rect.js */ \"./src/dagre-wrapper/intersect/intersect-rect.js\");\n/*\n * Borrowed with love from from dagrge-d3. Many thanks to cpettitt!\n */\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n node: _intersect_node_js__WEBPACK_IMPORTED_MODULE_0___default.a,\n circle: _intersect_circle_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n ellipse: _intersect_ellipse_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n polygon: _intersect_polygon_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n rect: _intersect_rect_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/intersect-circle.js\":\n/*!*********************************************************!*\\\n !*** ./src/dagre-wrapper/intersect/intersect-circle.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _intersect_ellipse__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-ellipse */ \"./src/dagre-wrapper/intersect/intersect-ellipse.js\");\n\n\nfunction intersectCircle(node, rx, point) {\n return Object(_intersect_ellipse__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node, rx, rx, point);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (intersectCircle);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/intersect-ellipse.js\":\n/*!**********************************************************!*\\\n !*** ./src/dagre-wrapper/intersect/intersect-ellipse.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction intersectEllipse(node, rx, ry, point) {\n // Formulae from: http://mathworld.wolfram.com/Ellipse-LineIntersection.html\n var cx = node.x;\n var cy = node.y;\n var px = cx - point.x;\n var py = cy - point.y;\n var det = Math.sqrt(rx * rx * py * py + ry * ry * px * px);\n var dx = Math.abs(rx * ry * px / det);\n\n if (point.x < cx) {\n dx = -dx;\n }\n\n var dy = Math.abs(rx * ry * py / det);\n\n if (point.y < cy) {\n dy = -dy;\n }\n\n return {\n x: cx + dx,\n y: cy + dy\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (intersectEllipse);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/intersect-line.js\":\n/*!*******************************************************!*\\\n !*** ./src/dagre-wrapper/intersect/intersect-line.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/*\n * Returns the point at which two lines, p and q, intersect or returns\n * undefined if they do not intersect.\n */\nfunction intersectLine(p1, p2, q1, q2) {\n // Algorithm from J. Avro, (ed.) Graphics Gems, No 2, Morgan Kaufmann, 1994,\n // p7 and p473.\n var a1, a2, b1, b2, c1, c2;\n var r1, r2, r3, r4;\n var denom, offset, num;\n var x, y; // Compute a1, b1, c1, where line joining points 1 and 2 is F(x,y) = a1 x +\n // b1 y + c1 = 0.\n\n a1 = p2.y - p1.y;\n b1 = p1.x - p2.x;\n c1 = p2.x * p1.y - p1.x * p2.y; // Compute r3 and r4.\n\n r3 = a1 * q1.x + b1 * q1.y + c1;\n r4 = a1 * q2.x + b1 * q2.y + c1; // Check signs of r3 and r4. If both point 3 and point 4 lie on\n // same side of line 1, the line segments do not intersect.\n\n if (r3 !== 0 && r4 !== 0 && sameSign(r3, r4)) {\n return;\n } // Compute a2, b2, c2 where line joining points 3 and 4 is G(x,y) = a2 x + b2 y + c2 = 0\n\n\n a2 = q2.y - q1.y;\n b2 = q1.x - q2.x;\n c2 = q2.x * q1.y - q1.x * q2.y; // Compute r1 and r2\n\n r1 = a2 * p1.x + b2 * p1.y + c2;\n r2 = a2 * p2.x + b2 * p2.y + c2; // Check signs of r1 and r2. If both point 1 and point 2 lie\n // on same side of second line segment, the line segments do\n // not intersect.\n\n if (r1 !== 0 && r2 !== 0 && sameSign(r1, r2)) {\n return;\n } // Line segments intersect: compute intersection point.\n\n\n denom = a1 * b2 - a2 * b1;\n\n if (denom === 0) {\n return;\n }\n\n offset = Math.abs(denom / 2); // The denom/2 is to get rounding instead of truncating. It\n // is added or subtracted to the numerator, depending upon the\n // sign of the numerator.\n\n num = b1 * c2 - b2 * c1;\n x = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n num = a2 * c1 - a1 * c2;\n y = num < 0 ? (num - offset) / denom : (num + offset) / denom;\n return {\n x: x,\n y: y\n };\n}\n\nfunction sameSign(r1, r2) {\n return r1 * r2 > 0;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (intersectLine);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/intersect-node.js\":\n/*!*******************************************************!*\\\n !*** ./src/dagre-wrapper/intersect/intersect-node.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = intersectNode;\n\nfunction intersectNode(node, point) {\n // console.info('Intersect Node');\n return node.intersect(point);\n}\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/intersect-polygon.js\":\n/*!**********************************************************!*\\\n !*** ./src/dagre-wrapper/intersect/intersect-polygon.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _intersect_line__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./intersect-line */ \"./src/dagre-wrapper/intersect/intersect-line.js\");\n/* eslint \"no-console\": off */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (intersectPolygon);\n/*\n * Returns the point ({x, y}) at which the point argument intersects with the\n * node argument assuming that it has the shape specified by polygon.\n */\n\nfunction intersectPolygon(node, polyPoints, point) {\n var x1 = node.x;\n var y1 = node.y;\n var intersections = [];\n var minX = Number.POSITIVE_INFINITY;\n var minY = Number.POSITIVE_INFINITY;\n\n if (typeof polyPoints.forEach === 'function') {\n polyPoints.forEach(function (entry) {\n minX = Math.min(minX, entry.x);\n minY = Math.min(minY, entry.y);\n });\n } else {\n minX = Math.min(minX, polyPoints.x);\n minY = Math.min(minY, polyPoints.y);\n }\n\n var left = x1 - node.width / 2 - minX;\n var top = y1 - node.height / 2 - minY;\n\n for (var i = 0; i < polyPoints.length; i++) {\n var p1 = polyPoints[i];\n var p2 = polyPoints[i < polyPoints.length - 1 ? i + 1 : 0];\n var intersect = Object(_intersect_line__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node, point, {\n x: left + p1.x,\n y: top + p1.y\n }, {\n x: left + p2.x,\n y: top + p2.y\n });\n\n if (intersect) {\n intersections.push(intersect);\n }\n }\n\n if (!intersections.length) {\n // console.log('NO INTERSECTION FOUND, RETURN NODE CENTER', node);\n return node;\n }\n\n if (intersections.length > 1) {\n // More intersections, find the one nearest to edge end point\n intersections.sort(function (p, q) {\n var pdx = p.x - point.x;\n var pdy = p.y - point.y;\n var distp = Math.sqrt(pdx * pdx + pdy * pdy);\n var qdx = q.x - point.x;\n var qdy = q.y - point.y;\n var distq = Math.sqrt(qdx * qdx + qdy * qdy);\n return distp < distq ? -1 : distp === distq ? 0 : 1;\n });\n }\n\n return intersections[0];\n}\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/intersect/intersect-rect.js\":\n/*!*******************************************************!*\\\n !*** ./src/dagre-wrapper/intersect/intersect-rect.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar intersectRect = function intersectRect(node, point) {\n var x = node.x;\n var y = node.y; // Rectangle intersection algorithm from:\n // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes\n\n var dx = point.x - x;\n var dy = point.y - y;\n var w = node.width / 2;\n var h = node.height / 2;\n var sx, sy;\n\n if (Math.abs(dy) * w > Math.abs(dx) * h) {\n // Intersection is top or bottom of rect.\n if (dy < 0) {\n h = -h;\n }\n\n sx = dy === 0 ? 0 : h * dx / dy;\n sy = h;\n } else {\n // Intersection is left or right of rect.\n if (dx < 0) {\n w = -w;\n }\n\n sx = w;\n sy = dx === 0 ? 0 : w * dy / dx;\n }\n\n return {\n x: x + sx,\n y: y + sy\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (intersectRect);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/markers.js\":\n/*!**************************************!*\\\n !*** ./src/dagre-wrapper/markers.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n // Only add the number of markers that the diagram needs\n\nvar insertMarkers = function insertMarkers(elem, markerArray, type, id) {\n markerArray.forEach(function (markerName) {\n markers[markerName](elem, type, id);\n });\n};\n\nvar extension = function extension(elem, type, id) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('Making markers for ', id);\n elem.append('defs').append('marker').attr('id', type + '-extensionStart').attr('class', 'marker extension ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 1,7 L18,13 V 1 Z');\n elem.append('defs').append('marker').attr('id', type + '-extensionEnd').attr('class', 'marker extension ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n};\n\nvar composition = function composition(elem, type) {\n elem.append('defs').append('marker').attr('id', type + '-compositionStart').attr('class', 'marker composition ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', type + '-compositionEnd').attr('class', 'marker composition ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\n\nvar aggregation = function aggregation(elem, type) {\n elem.append('defs').append('marker').attr('id', type + '-aggregationStart').attr('class', 'marker aggregation ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', type + '-aggregationEnd').attr('class', 'marker aggregation ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n};\n\nvar dependency = function dependency(elem, type) {\n elem.append('defs').append('marker').attr('id', type + '-dependencyStart').attr('class', 'marker dependency ' + type).attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', type + '-dependencyEnd').attr('class', 'marker dependency ' + type).attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\nvar point = function point(elem, type) {\n elem.append('marker').attr('id', type + '-pointEnd').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 12).attr('markerHeight', 12).attr('orient', 'auto').append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');\n elem.append('marker').attr('id', type + '-pointStart').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', 0).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 12).attr('markerHeight', 12).attr('orient', 'auto').append('path').attr('d', 'M 0 5 L 10 10 L 10 0 z').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');\n};\n\nvar circle = function circle(elem, type) {\n elem.append('marker').attr('id', type + '-circleEnd').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', 11).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('circle').attr('cx', '5').attr('cy', '5').attr('r', '5').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');\n elem.append('marker').attr('id', type + '-circleStart').attr('class', 'marker ' + type).attr('viewBox', '0 0 10 10').attr('refX', -1).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('circle').attr('cx', '5').attr('cy', '5').attr('r', '5').attr('class', 'arrowMarkerPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');\n};\n\nvar cross = function cross(elem, type) {\n elem.append('marker').attr('id', type + '-crossEnd').attr('class', 'marker cross ' + type).attr('viewBox', '0 0 11 11').attr('refX', 12).attr('refY', 5.2).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('path') // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9').attr('class', 'arrowMarkerPath').style('stroke-width', 2).style('stroke-dasharray', '1,0');\n elem.append('marker').attr('id', type + '-crossStart').attr('class', 'marker cross ' + type).attr('viewBox', '0 0 11 11').attr('refX', -1).attr('refY', 5.2).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 11).attr('markerHeight', 11).attr('orient', 'auto').append('path') // .attr('stroke', 'black')\n .attr('d', 'M 1,1 l 9,9 M 10,1 l -9,9').attr('class', 'arrowMarkerPath').style('stroke-width', 2).style('stroke-dasharray', '1,0');\n};\n\nvar barb = function barb(elem, type) {\n elem.append('defs').append('marker').attr('id', type + '-barbEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 14).attr('markerUnits', 'strokeWidth').attr('orient', 'auto').append('path').attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n}; // TODO rename the class diagram markers to something shape descriptive and semanitc free\n\n\nvar markers = {\n extension: extension,\n composition: composition,\n aggregation: aggregation,\n dependency: dependency,\n point: point,\n circle: circle,\n cross: cross,\n barb: barb\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (insertMarkers);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/mermaid-graphlib.js\":\n/*!***********************************************!*\\\n !*** ./src/dagre-wrapper/mermaid-graphlib.js ***!\n \\***********************************************/\n/*! exports provided: clusterDb, clear, extractDecendants, validate, findNonClusterChild, adjustClustersAndEdges, extractor, sortNodesByHierarchy */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clusterDb\", function() { return clusterDb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractDecendants\", function() { return extractDecendants; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validate\", function() { return validate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findNonClusterChild\", function() { return findNonClusterChild; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"adjustClustersAndEdges\", function() { return adjustClustersAndEdges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"extractor\", function() { return extractor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sortNodesByHierarchy\", function() { return sortNodesByHierarchy; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_1__);\n/**\n * Decorates with functions required by mermaids dagre-wrapper.\n */\n\n\nvar clusterDb = {};\nvar decendants = {};\nvar parents = {};\nvar clear = function clear() {\n decendants = {};\n parents = {};\n clusterDb = {};\n};\n\nvar isDecendant = function isDecendant(id, ancenstorId) {\n // if (id === ancenstorId) return true;\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('In isDecendant', ancenstorId, ' ', id, ' = ', decendants[ancenstorId].indexOf(id) >= 0);\n if (decendants[ancenstorId].indexOf(id) >= 0) return true;\n return false;\n};\n\nvar edgeInCluster = function edgeInCluster(edge, clusterId) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Decendants of ', clusterId, ' is ', decendants[clusterId]);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Edge is ', edge); // Edges to/from the cluster is not in the cluster, they are in the parent\n\n if (edge.v === clusterId) return false;\n if (edge.w === clusterId) return false;\n\n if (!decendants[clusterId]) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Tilt, ', clusterId, ',not in decendants');\n return false;\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Here ');\n if (decendants[clusterId].indexOf(edge.v) >= 0) return true;\n if (isDecendant(edge.v, clusterId)) return true;\n if (isDecendant(edge.w, clusterId)) return true;\n if (decendants[clusterId].indexOf(edge.w) >= 0) return true;\n return false;\n};\n\nvar copy = function copy(clusterId, graph, newGraph, rootId) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Copying children of ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n var nodes = graph.children(clusterId) || []; // Include cluster node if it is not the root\n\n if (clusterId !== rootId) {\n nodes.push(clusterId);\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Copying (nodes) clusterId', clusterId, 'nodes', nodes);\n nodes.forEach(function (node) {\n if (graph.children(node).length > 0) {\n copy(node, graph, newGraph, rootId);\n } else {\n var data = graph.node(node);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('cp ', node, ' to ', rootId, ' with parent ', clusterId); //,node, data, ' parent is ', clusterId);\n\n newGraph.setNode(node, data);\n\n if (rootId !== graph.parent(node)) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Setting parent', node, graph.parent(node));\n newGraph.setParent(node, graph.parent(node));\n }\n\n if (clusterId !== rootId && node !== clusterId) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Setting parent', node, clusterId);\n newGraph.setParent(node, clusterId);\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('In copy ', clusterId, 'root', rootId, 'data', graph.node(clusterId), rootId);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Not Setting parent for node=', node, 'cluster!==rootId', clusterId !== rootId, 'node!==clusterId', node !== clusterId);\n }\n\n var edges = graph.edges(node);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Copying Edges', edges);\n edges.forEach(function (edge) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Edge', edge);\n var data = graph.edge(edge.v, edge.w, edge.name);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Edge data', data, rootId);\n\n try {\n // Do not copy edges in and out of the root cluster, they belong to the parent graph\n if (edgeInCluster(edge, rootId)) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Copying as ', edge.v, edge.w, data, edge.name);\n newGraph.setEdge(edge.v, edge.w, data, edge.name);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('newGraph edges ', newGraph.edges(), newGraph.edge(newGraph.edges()[0]));\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Skipping copy of edge ', edge.v, '-->', edge.w, ' rootId: ', rootId, ' clusterId:', clusterId);\n }\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].error(e);\n }\n });\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Removing node', node);\n graph.removeNode(node);\n });\n};\n\nvar extractDecendants = function extractDecendants(id, graph) {\n // log.debug('Extracting ', id);\n var children = graph.children(id);\n var res = [].concat(children);\n\n for (var i = 0; i < children.length; i++) {\n parents[children[i]] = id;\n res = res.concat(extractDecendants(children[i], graph));\n }\n\n return res;\n};\n/**\n * Validates the graph, checking that all parent child relation points to existing nodes and that\n * edges between nodes also ia correct. When not correct the function logs the discrepancies.\n * @param {graphlib graph} g\n */\n\nvar validate = function validate(graph) {\n var edges = graph.edges();\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('Edges: ', edges);\n\n for (var i = 0; i < edges.length; i++) {\n if (graph.children(edges[i].v).length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('The node ', edges[i].v, ' is part of and edge even though it has children');\n return false;\n }\n\n if (graph.children(edges[i].w).length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('The node ', edges[i].w, ' is part of and edge even though it has children');\n return false;\n }\n }\n\n return true;\n};\n/**\n * Finds a child that is not a cluster. When faking a edge between a node and a cluster.\n * @param {Finds a } id\n * @param {*} graph\n */\n\nvar findNonClusterChild = function findNonClusterChild(id, graph) {\n // const node = graph.node(id);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('Searching', id); // const children = graph.children(id).reverse();\n\n var children = graph.children(id); //.reverse();\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('Searching children of id ', id, children);\n\n if (children.length < 1) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('This is a valid node', id);\n return id;\n }\n\n for (var i = 0; i < children.length; i++) {\n var _id = findNonClusterChild(children[i], graph);\n\n if (_id) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace('Found replacement for', id, ' => ', _id);\n return _id;\n }\n }\n};\n\nvar getAnchorId = function getAnchorId(id) {\n if (!clusterDb[id]) {\n return id;\n } // If the cluster has no external connections\n\n\n if (!clusterDb[id].externalConnections) {\n return id;\n } // Return the replacement node\n\n\n if (clusterDb[id]) {\n return clusterDb[id].id;\n }\n\n return id;\n};\n\nvar adjustClustersAndEdges = function adjustClustersAndEdges(graph, depth) {\n if (!graph || depth > 10) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Opting out, no graph ');\n return;\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Opting in, graph ');\n } // Go through the nodes and for each cluster found, save a replacment node, this can be used when\n // faking a link to a cluster\n\n\n graph.nodes().forEach(function (id) {\n var children = graph.children(id);\n\n if (children.length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Cluster identified', id, ' Replacement id in edges: ', findNonClusterChild(id, graph));\n decendants[id] = extractDecendants(id, graph);\n clusterDb[id] = {\n id: findNonClusterChild(id, graph),\n clusterData: graph.node(id)\n };\n }\n }); // Check incoming and outgoing edges for each cluster\n\n graph.nodes().forEach(function (id) {\n var children = graph.children(id);\n var edges = graph.edges();\n\n if (children.length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Cluster identified', id, decendants);\n edges.forEach(function (edge) {\n // log.debug('Edge, decendants: ', edge, decendants[id]);\n // Check if any edge leaves the cluster (not the actual cluster, thats a link from the box)\n if (edge.v !== id && edge.w !== id) {\n // Any edge where either the one of the nodes is decending to the cluster but not the other\n // if (decendants[id].indexOf(edge.v) < 0 && decendants[id].indexOf(edge.w) < 0) {\n var d1 = isDecendant(edge.v, id);\n var d2 = isDecendant(edge.w, id); // d1 xor d2 - if either d1 is true and d2 is false or the other way around\n\n if (d1 ^ d2) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Edge: ', edge, ' leaves cluster ', id);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Decendants of XXX ', id, ': ', decendants[id]);\n clusterDb[id].externalConnections = true;\n }\n }\n });\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Not a cluster ', id, decendants);\n }\n }); // For clusters with incoming and/or outgoing edges translate those edges to a real node\n // in the cluster inorder to fake the edge\n\n graph.edges().forEach(function (e) {\n var edge = graph.edge(e);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(e));\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n var v = e.v;\n var w = e.w; // Check if link is either from or to a cluster\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Fix XXX', clusterDb, 'ids:', e.v, e.w, 'Translateing: ', clusterDb[e.v], ' --- ', clusterDb[e.w]);\n\n if (clusterDb[e.v] || clusterDb[e.w]) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Fixing and trixing - removing XXX', e.v, e.w, e.name);\n v = getAnchorId(e.v);\n w = getAnchorId(e.w);\n graph.removeEdge(e.v, e.w, e.name);\n if (v !== e.v) edge.fromCluster = e.v;\n if (w !== e.w) edge.toCluster = e.w;\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Fix Replacing with XXX', v, w, e.name);\n graph.setEdge(v, w, edge, e.name);\n }\n });\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Adjusted Graph', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));\n extractor(graph, 0);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].trace(clusterDb); // Remove references to extracted cluster\n // graph.edges().forEach(edge => {\n // if (isDecendant(edge.v, clusterId) || isDecendant(edge.w, clusterId)) {\n // graph.removeEdge(edge);\n // }\n // });\n};\nvar extractor = function extractor(graph, depth) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('extractor - ', depth, graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph), graph.children('D'));\n\n if (depth > 10) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].error('Bailing out');\n return;\n } // For clusters without incoming and/or outgoing edges, create a new cluster-node\n // containing the nodes and edges in the custer in a new graph\n // for (let i = 0;)\n\n\n var nodes = graph.nodes();\n var hasChildren = false;\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n var children = graph.children(node);\n hasChildren = hasChildren || children.length > 0;\n }\n\n if (!hasChildren) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Done, no node has children', graph.nodes());\n return;\n } // const clusters = Object.keys(clusterDb);\n // clusters.forEach(clusterId => {\n\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Nodes = ', nodes, depth);\n\n for (var _i = 0; _i < nodes.length; _i++) {\n var _node = nodes[_i];\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Extracting node', _node, clusterDb, clusterDb[_node] && !clusterDb[_node].externalConnections, !graph.parent(_node), graph.node(_node), graph.children('D'), ' Depth ', depth); // Note that the node might have been removed after the Object.keys call so better check\n // that it still is in the game\n\n if (!clusterDb[_node]) {\n // Skip if the node is not a cluster\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Not a cluster', _node, depth); // break;\n } else if (!clusterDb[_node].externalConnections && // !graph.parent(node) &&\n graph.children(_node) && graph.children(_node).length > 0) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Cluster without external connections, without a parent and with children', _node, depth);\n var graphSettings = graph.graph();\n var clusterGraph = new graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: graphSettings.rankdir === 'TB' ? 'LR' : 'TB',\n // Todo: set proper spacing\n nodesep: 50,\n ranksep: 50,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function () {\n return {};\n });\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Old graph before copy', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));\n copy(_node, graph, clusterGraph, _node);\n graph.setNode(_node, {\n clusterNode: true,\n id: _node,\n clusterData: clusterDb[_node].clusterData,\n labelText: clusterDb[_node].labelText,\n graph: clusterGraph\n });\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('New graph after copy node: (', _node, ')', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(clusterGraph));\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Old graph after copy', graphlib__WEBPACK_IMPORTED_MODULE_1___default.a.json.write(graph));\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('Cluster ** ', _node, ' **not meeting the criteria !externalConnections:', !clusterDb[_node].externalConnections, ' no parent: ', !graph.parent(_node), ' children ', graph.children(_node) && graph.children(_node).length > 0, graph.children('D'), depth);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(clusterDb);\n }\n }\n\n nodes = graph.nodes();\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn('New list of nodes', nodes);\n\n for (var _i2 = 0; _i2 < nodes.length; _i2++) {\n var _node2 = nodes[_i2];\n var data = graph.node(_node2);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].warn(' Now next level', _node2, data);\n\n if (data.clusterNode) {\n extractor(data.graph, depth + 1);\n }\n }\n};\n\nvar sorter = function sorter(graph, nodes) {\n if (nodes.length === 0) return [];\n var result = Object.assign(nodes);\n nodes.forEach(function (node) {\n var children = graph.children(node);\n var sorted = sorter(graph, children);\n result = result.concat(sorted);\n });\n return result;\n};\n\nvar sortNodesByHierarchy = function sortNodesByHierarchy(graph) {\n return sorter(graph, graph.children());\n};\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/nodes.js\":\n/*!************************************!*\\\n !*** ./src/dagre-wrapper/nodes.js ***!\n \\************************************/\n/*! exports provided: insertNode, setNodeElem, clear, positionNode */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertNode\", function() { return insertNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setNodeElem\", function() { return setNodeElem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"positionNode\", function() { return positionNode; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../logger */ \"./src/logger.js\");\n/* harmony import */ var _shapes_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shapes/util */ \"./src/dagre-wrapper/shapes/util.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ \"./src/config.js\");\n/* harmony import */ var _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./intersect/index.js */ \"./src/dagre-wrapper/intersect/index.js\");\n/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createLabel */ \"./src/dagre-wrapper/createLabel.js\");\n/* harmony import */ var _shapes_note__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./shapes/note */ \"./src/dagre-wrapper/shapes/note.js\");\n/* harmony import */ var _diagrams_class_svgDraw__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../diagrams/class/svgDraw */ \"./src/diagrams/class/svgDraw.js\");\n\n // eslint-disable-line\n\n\n\n\n\n\n\n\nvar question = function question(parent, node) {\n var _labelHelper = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper.shapeSvg,\n bbox = _labelHelper.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var s = w + h;\n var points = [{\n x: s / 2,\n y: 0\n }, {\n x: s,\n y: -s / 2\n }, {\n x: s / 2,\n y: -s\n }, {\n x: 0,\n y: -s / 2\n }];\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Question main (Circle)');\n var questionElem = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, s, s, points);\n questionElem.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, questionElem);\n\n node.intersect = function (point) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].warn('Intersect called');\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar hexagon = function hexagon(parent, node) {\n var _labelHelper2 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper2.shapeSvg,\n bbox = _labelHelper2.bbox;\n\n var f = 4;\n var h = bbox.height + node.padding;\n var m = h / f;\n var w = bbox.width + 2 * m + node.padding;\n var points = [{\n x: m,\n y: 0\n }, {\n x: w - m,\n y: 0\n }, {\n x: w,\n y: -h / 2\n }, {\n x: w - m,\n y: -h\n }, {\n x: m,\n y: -h\n }, {\n x: 0,\n y: -h / 2\n }];\n var hex = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n hex.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, hex);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar rect_left_inv_arrow = function rect_left_inv_arrow(parent, node) {\n var _labelHelper3 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper3.shapeSvg,\n bbox = _labelHelper3.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: -h / 2,\n y: 0\n }, {\n x: w,\n y: 0\n }, {\n x: w,\n y: -h\n }, {\n x: -h / 2,\n y: -h\n }, {\n x: 0,\n y: -h / 2\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n node.width = w + h;\n node.height = h;\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar lean_right = function lean_right(parent, node) {\n var _labelHelper4 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper4.shapeSvg,\n bbox = _labelHelper4.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: -2 * h / 6,\n y: 0\n }, {\n x: w - h / 6,\n y: 0\n }, {\n x: w + 2 * h / 6,\n y: -h\n }, {\n x: h / 6,\n y: -h\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar lean_left = function lean_left(parent, node) {\n var _labelHelper5 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper5.shapeSvg,\n bbox = _labelHelper5.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: 2 * h / 6,\n y: 0\n }, {\n x: w + h / 6,\n y: 0\n }, {\n x: w - 2 * h / 6,\n y: -h\n }, {\n x: -h / 6,\n y: -h\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar trapezoid = function trapezoid(parent, node) {\n var _labelHelper6 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper6.shapeSvg,\n bbox = _labelHelper6.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: -2 * h / 6,\n y: 0\n }, {\n x: w + 2 * h / 6,\n y: 0\n }, {\n x: w - h / 6,\n y: -h\n }, {\n x: h / 6,\n y: -h\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar inv_trapezoid = function inv_trapezoid(parent, node) {\n var _labelHelper7 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper7.shapeSvg,\n bbox = _labelHelper7.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: h / 6,\n y: 0\n }, {\n x: w - h / 6,\n y: 0\n }, {\n x: w + 2 * h / 6,\n y: -h\n }, {\n x: -2 * h / 6,\n y: -h\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar rect_right_inv_arrow = function rect_right_inv_arrow(parent, node) {\n var _labelHelper8 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper8.shapeSvg,\n bbox = _labelHelper8.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: 0,\n y: 0\n }, {\n x: w + h / 2,\n y: 0\n }, {\n x: w,\n y: -h / 2\n }, {\n x: w + h / 2,\n y: -h\n }, {\n x: 0,\n y: -h\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar cylinder = function cylinder(parent, node) {\n var _labelHelper9 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper9.shapeSvg,\n bbox = _labelHelper9.bbox;\n\n var w = bbox.width + node.padding;\n var rx = w / 2;\n var ry = rx / (2.5 + w / 50);\n var h = bbox.height + ry + node.padding;\n var shape = 'M 0,' + ry + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 a ' + rx + ',' + ry + ' 0,0,0 ' + -w + ' 0 l 0,' + h + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 l 0,' + -h;\n var el = shapeSvg.attr('label-offset-y', ry).insert('path', ':first-child').attr('style', node.style).attr('d', shape).attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n var pos = _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].rect(node, point);\n var x = pos.x - node.x;\n\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n var y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n};\n\nvar rect = function rect(parent, node) {\n var _labelHelper10 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, 'node ' + node.classes, true),\n shapeSvg = _labelHelper10.shapeSvg,\n bbox = _labelHelper10.bbox,\n halfPadding = _labelHelper10.halfPadding;\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].trace('Classes = ', node.classes); // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child');\n rect.attr('class', 'basic label-container').attr('style', node.style).attr('rx', node.rx).attr('ry', node.ry).attr('x', -bbox.width / 2 - halfPadding).attr('y', -bbox.height / 2 - halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, rect);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].rect(node, point);\n };\n\n return shapeSvg;\n};\n\nvar rectWithTitle = function rectWithTitle(parent, node) {\n // const { shapeSvg, bbox, halfPadding } = labelHelper(parent, node, 'node ' + node.classes);\n var classes;\n\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n } // Add outer g element\n\n\n var shapeSvg = parent.insert('g').attr('class', classes).attr('id', node.domId || node.id); // Create the title label and insert it after the rect\n\n var rect = shapeSvg.insert('rect', ':first-child'); // const innerRect = shapeSvg.insert('rect');\n\n var innerLine = shapeSvg.insert('line');\n var label = shapeSvg.insert('g').attr('class', 'label');\n var text2 = node.labelText.flat();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Label text', text2[0]);\n var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(text2[0], node.labelStyle, true, true));\n var bbox;\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var div = text.children[0];\n var dv = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Text 2', text2);\n var textRows = text2.slice(1, text2.length);\n var titleBox = text.getBBox();\n var descr = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(textRows.join('<br/>'), node.labelStyle, true, true));\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var _div = descr.children[0];\n\n var _dv = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(descr);\n\n bbox = _div.getBoundingClientRect();\n\n _dv.attr('width', bbox.width);\n\n _dv.attr('height', bbox.height);\n } // bbox = label.getBBox();\n // log.info(descr);\n\n\n var halfPadding = node.padding / 2;\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(descr).attr('transform', 'translate( ' + ( // (titleBox.width - bbox.width) / 2 +\n bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) + ', ' + (titleBox.height + halfPadding + 5) + ')');\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(text).attr('transform', 'translate( ' + ( // (titleBox.width - bbox.width) / 2 +\n bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) + ', ' + 0 + ')'); // Get the size of the label\n // Bounding box for title and text\n\n bbox = label.node().getBBox(); // Center the label\n\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')');\n rect.attr('class', 'outer title-state').attr('x', -bbox.width / 2 - halfPadding).attr('y', -bbox.height / 2 - halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);\n innerLine.attr('class', 'divider').attr('x1', -bbox.width / 2 - halfPadding).attr('x2', bbox.width / 2 + halfPadding).attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding).attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, rect);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].rect(node, point);\n };\n\n return shapeSvg;\n};\n\nvar stadium = function stadium(parent, node) {\n var _labelHelper11 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper11.shapeSvg,\n bbox = _labelHelper11.bbox;\n\n var h = bbox.height + node.padding;\n var w = bbox.width + h / 4 + node.padding; // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child').attr('style', node.style).attr('rx', h / 2).attr('ry', h / 2).attr('x', -w / 2).attr('y', -h / 2).attr('width', w).attr('height', h);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, rect);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].rect(node, point);\n };\n\n return shapeSvg;\n};\n\nvar circle = function circle(parent, node) {\n var _labelHelper12 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper12.shapeSvg,\n bbox = _labelHelper12.bbox,\n halfPadding = _labelHelper12.halfPadding;\n\n var circle = shapeSvg.insert('circle', ':first-child'); // center the circle around its coordinate\n\n circle.attr('style', node.style).attr('rx', node.rx).attr('ry', node.ry).attr('r', bbox.width / 2 + halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Circle main');\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, circle);\n\n node.intersect = function (point) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Circle intersect', node, bbox.width / 2 + halfPadding, point);\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].circle(node, bbox.width / 2 + halfPadding, point);\n };\n\n return shapeSvg;\n};\n\nvar subroutine = function subroutine(parent, node) {\n var _labelHelper13 = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"labelHelper\"])(parent, node, undefined, true),\n shapeSvg = _labelHelper13.shapeSvg,\n bbox = _labelHelper13.bbox;\n\n var w = bbox.width + node.padding;\n var h = bbox.height + node.padding;\n var points = [{\n x: 0,\n y: 0\n }, {\n x: w,\n y: 0\n }, {\n x: w,\n y: -h\n }, {\n x: 0,\n y: -h\n }, {\n x: 0,\n y: 0\n }, {\n x: -8,\n y: 0\n }, {\n x: w + 8,\n y: 0\n }, {\n x: w + 8,\n y: -h\n }, {\n x: -8,\n y: -h\n }, {\n x: -8,\n y: 0\n }];\n var el = Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"insertPolygonShape\"])(shapeSvg, w, h, points);\n el.attr('style', node.style);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, el);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].polygon(node, points, point);\n };\n\n return shapeSvg;\n};\n\nvar start = function start(parent, node) {\n var shapeSvg = parent.insert('g').attr('class', 'node default').attr('id', node.domId || node.id);\n var circle = shapeSvg.insert('circle', ':first-child'); // center the circle around its coordinate\n\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, circle);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nvar forkJoin = function forkJoin(parent, node, dir) {\n var shapeSvg = parent.insert('g').attr('class', 'node default').attr('id', node.domId || node.id);\n var width = 70;\n var height = 10;\n\n if (dir === 'LR') {\n width = 10;\n height = 70;\n }\n\n var shape = shapeSvg.append('rect').style('stroke', 'black').style('fill', 'black').attr('x', -1 * width / 2).attr('y', -1 * height / 2).attr('width', width).attr('height', height).attr('class', 'fork-join');\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, shape);\n node.height = node.height + node.padding / 2;\n node.width = node.width + node.padding / 2;\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].rect(node, point);\n };\n\n return shapeSvg;\n};\n\nvar end = function end(parent, node) {\n var shapeSvg = parent.insert('g').attr('class', 'node default').attr('id', node.domId || node.id);\n var innerCircle = shapeSvg.insert('circle', ':first-child');\n var circle = shapeSvg.insert('circle', ':first-child');\n circle.attr('class', 'state-start').attr('r', 7).attr('width', 14).attr('height', 14);\n innerCircle.attr('class', 'state-end').attr('r', 5).attr('width', 10).attr('height', 10);\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, circle);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].circle(node, 7, point);\n };\n\n return shapeSvg;\n};\n\nvar class_box = function class_box(parent, node) {\n var halfPadding = node.padding / 2;\n var rowPadding = 4;\n var lineHeight = 8;\n var classes;\n\n if (!node.classes) {\n classes = 'node default';\n } else {\n classes = 'node ' + node.classes;\n } // Add outer g element\n\n\n var shapeSvg = parent.insert('g').attr('class', classes).attr('id', node.domId || node.id); // Create the title label and insert it after the rect\n\n var rect = shapeSvg.insert('rect', ':first-child');\n var topLine = shapeSvg.insert('line');\n var bottomLine = shapeSvg.insert('line');\n var maxWidth = 0;\n var maxHeight = rowPadding;\n var labelContainer = shapeSvg.insert('g').attr('class', 'label');\n var verticalPos = 0;\n var hasInterface = node.classData.annotations && node.classData.annotations[0]; // 1. Create the labels\n\n var interfaceLabelText = node.classData.annotations[0] ? '«' + node.classData.annotations[0] + '»' : '';\n var interfaceLabel = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(interfaceLabelText, node.labelStyle, true, true));\n var interfaceBBox = interfaceLabel.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var div = interfaceLabel.children[0];\n var dv = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(interfaceLabel);\n interfaceBBox = div.getBoundingClientRect();\n dv.attr('width', interfaceBBox.width);\n dv.attr('height', interfaceBBox.height);\n }\n\n if (node.classData.annotations[0]) {\n maxHeight += interfaceBBox.height + rowPadding;\n maxWidth += interfaceBBox.width;\n }\n\n var classTitleString = node.classData.id;\n\n if (node.classData.type !== undefined && node.classData.type !== '') {\n classTitleString += '<' + node.classData.type + '>';\n }\n\n var classTitleLabel = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(classTitleString, node.labelStyle, true, true));\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(classTitleLabel).attr('class', 'classTitle');\n var classTitleBBox = classTitleLabel.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var _div2 = classTitleLabel.children[0];\n\n var _dv2 = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(classTitleLabel);\n\n classTitleBBox = _div2.getBoundingClientRect();\n\n _dv2.attr('width', classTitleBBox.width);\n\n _dv2.attr('height', classTitleBBox.height);\n }\n\n maxHeight += classTitleBBox.height + rowPadding;\n\n if (classTitleBBox.width > maxWidth) {\n maxWidth = classTitleBBox.width;\n }\n\n var classAttributes = [];\n node.classData.members.forEach(function (str) {\n var parsedText = Object(_diagrams_class_svgDraw__WEBPACK_IMPORTED_MODULE_7__[\"parseMember\"])(str).displayText;\n var lbl = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(parsedText, node.labelStyle, true, true));\n var bbox = lbl.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var _div3 = lbl.children[0];\n\n var _dv3 = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(lbl);\n\n bbox = _div3.getBoundingClientRect();\n\n _dv3.attr('width', bbox.width);\n\n _dv3.attr('height', bbox.height);\n }\n\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n\n maxHeight += bbox.height + rowPadding;\n classAttributes.push(lbl);\n });\n maxHeight += lineHeight;\n var classMethods = [];\n node.classData.methods.forEach(function (str) {\n var parsedText = Object(_diagrams_class_svgDraw__WEBPACK_IMPORTED_MODULE_7__[\"parseMember\"])(str).displayText;\n var lbl = labelContainer.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(parsedText, node.labelStyle, true, true));\n var bbox = lbl.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"])().flowchart.htmlLabels) {\n var _div4 = lbl.children[0];\n\n var _dv4 = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(lbl);\n\n bbox = _div4.getBoundingClientRect();\n\n _dv4.attr('width', bbox.width);\n\n _dv4.attr('height', bbox.height);\n }\n\n if (bbox.width > maxWidth) {\n maxWidth = bbox.width;\n }\n\n maxHeight += bbox.height + rowPadding;\n classMethods.push(lbl);\n });\n maxHeight += lineHeight; // 2. Position the labels\n // position the interface label\n\n if (hasInterface) {\n var _diffX = (maxWidth - interfaceBBox.width) / 2;\n\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(interfaceLabel).attr('transform', 'translate( ' + (-1 * maxWidth / 2 + _diffX) + ', ' + -1 * maxHeight / 2 + ')');\n verticalPos = interfaceBBox.height + rowPadding;\n } // Positin the class title label\n\n\n var diffX = (maxWidth - classTitleBBox.width) / 2;\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(classTitleLabel).attr('transform', 'translate( ' + (-1 * maxWidth / 2 + diffX) + ', ' + (-1 * maxHeight / 2 + verticalPos) + ')');\n verticalPos += classTitleBBox.height + rowPadding;\n topLine.attr('class', 'divider').attr('x1', -maxWidth / 2 - halfPadding).attr('x2', maxWidth / 2 + halfPadding).attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classAttributes.forEach(function (lbl) {\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(lbl).attr('transform', 'translate( ' + -maxWidth / 2 + ', ' + (-1 * maxHeight / 2 + verticalPos + lineHeight / 2) + ')');\n verticalPos += classTitleBBox.height + rowPadding;\n });\n verticalPos += lineHeight;\n bottomLine.attr('class', 'divider').attr('x1', -maxWidth / 2 - halfPadding).attr('x2', maxWidth / 2 + halfPadding).attr('y1', -maxHeight / 2 - halfPadding + lineHeight + verticalPos).attr('y2', -maxHeight / 2 - halfPadding + lineHeight + verticalPos);\n verticalPos += lineHeight;\n classMethods.forEach(function (lbl) {\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(lbl).attr('transform', 'translate( ' + -maxWidth / 2 + ', ' + (-1 * maxHeight / 2 + verticalPos) + ')');\n verticalPos += classTitleBBox.height + rowPadding;\n }); //\n // let bbox;\n // if (getConfig().flowchart.htmlLabels) {\n // const div = interfaceLabel.children[0];\n // const dv = select(interfaceLabel);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // bbox = labelContainer.getBBox();\n // log.info('Text 2', text2);\n // const textRows = text2.slice(1, text2.length);\n // let titleBox = text.getBBox();\n // const descr = label\n // .node()\n // .appendChild(createLabel(textRows.join('<br/>'), node.labelStyle, true, true));\n // if (getConfig().flowchart.htmlLabels) {\n // const div = descr.children[0];\n // const dv = select(descr);\n // bbox = div.getBoundingClientRect();\n // dv.attr('width', bbox.width);\n // dv.attr('height', bbox.height);\n // }\n // // bbox = label.getBBox();\n // // log.info(descr);\n // select(descr).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width > titleBox.width ? 0 : (titleBox.width - bbox.width) / 2) +\n // ', ' +\n // (titleBox.height + halfPadding + 5) +\n // ')'\n // );\n // select(text).attr(\n // 'transform',\n // 'translate( ' +\n // // (titleBox.width - bbox.width) / 2 +\n // (bbox.width < titleBox.width ? 0 : -(titleBox.width - bbox.width) / 2) +\n // ', ' +\n // 0 +\n // ')'\n // );\n // // Get the size of the label\n // // Bounding box for title and text\n // bbox = label.node().getBBox();\n // // Center the label\n // label.attr(\n // 'transform',\n // 'translate(' + -bbox.width / 2 + ', ' + (-bbox.height / 2 - halfPadding + 3) + ')'\n // );\n\n rect.attr('class', 'outer title-state').attr('x', -maxWidth / 2 - halfPadding).attr('y', -(maxHeight / 2) - halfPadding).attr('width', maxWidth + node.padding).attr('height', maxHeight + node.padding); // innerLine\n // .attr('class', 'divider')\n // .attr('x1', -bbox.width / 2 - halfPadding)\n // .attr('x2', bbox.width / 2 + halfPadding)\n // .attr('y1', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding)\n // .attr('y2', -bbox.height / 2 - halfPadding + titleBox.height + halfPadding);\n\n Object(_shapes_util__WEBPACK_IMPORTED_MODULE_2__[\"updateNodeBounds\"])(node, rect);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"].rect(node, point);\n };\n\n return shapeSvg;\n};\n\nvar shapes = {\n question: question,\n rect: rect,\n rectWithTitle: rectWithTitle,\n circle: circle,\n stadium: stadium,\n hexagon: hexagon,\n rect_left_inv_arrow: rect_left_inv_arrow,\n lean_right: lean_right,\n lean_left: lean_left,\n trapezoid: trapezoid,\n inv_trapezoid: inv_trapezoid,\n rect_right_inv_arrow: rect_right_inv_arrow,\n cylinder: cylinder,\n start: start,\n end: end,\n note: _shapes_note__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n subroutine: subroutine,\n fork: forkJoin,\n join: forkJoin,\n class_box: class_box\n};\nvar nodeElems = {};\nvar insertNode = function insertNode(elem, node, dir) {\n var newEl;\n var el; // Add link when appropriate\n\n if (node.link) {\n newEl = elem.insert('svg:a').attr('xlink:href', node.link).attr('target', node.linkTarget || '_blank');\n el = shapes[node.shape](newEl, node, dir);\n } else {\n el = shapes[node.shape](elem, node, dir);\n newEl = el;\n }\n\n if (node.tooltip) {\n el.attr('title', node.tooltip);\n }\n\n if (node.class) {\n el.attr('class', 'node default ' + node.class);\n }\n\n nodeElems[node.id] = newEl;\n\n if (node.haveCallback) {\n nodeElems[node.id].attr('class', nodeElems[node.id].attr('class') + ' clickable');\n }\n};\nvar setNodeElem = function setNodeElem(elem, node) {\n nodeElems[node.id] = elem;\n};\nvar clear = function clear() {\n nodeElems = {};\n};\nvar positionNode = function positionNode(node) {\n var el = nodeElems[node.id];\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].trace('Transforming node', node, 'translate(' + (node.x - node.width / 2 - 5) + ', ' + (node.y - node.height / 2 - 5) + ')');\n var padding = 8;\n\n if (node.clusterNode) {\n el.attr('transform', 'translate(' + (node.x - node.width / 2 - padding) + ', ' + (node.y - node.height / 2 - padding) + ')');\n } else {\n el.attr('transform', 'translate(' + node.x + ', ' + node.y + ')');\n }\n};\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/shapes/note.js\":\n/*!******************************************!*\\\n !*** ./src/dagre-wrapper/shapes/note.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./src/dagre-wrapper/shapes/util.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _intersect_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../intersect/index.js */ \"./src/dagre-wrapper/intersect/index.js\");\n\n // eslint-disable-line\n\n\n\nvar note = function note(parent, node) {\n var _labelHelper = Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"labelHelper\"])(parent, node, 'node ' + node.classes, true),\n shapeSvg = _labelHelper.shapeSvg,\n bbox = _labelHelper.bbox,\n halfPadding = _labelHelper.halfPadding;\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Classes = ', node.classes); // add the rect\n\n var rect = shapeSvg.insert('rect', ':first-child');\n rect.attr('rx', node.rx).attr('ry', node.ry).attr('x', -bbox.width / 2 - halfPadding).attr('y', -bbox.height / 2 - halfPadding).attr('width', bbox.width + node.padding).attr('height', bbox.height + node.padding);\n Object(_util__WEBPACK_IMPORTED_MODULE_0__[\"updateNodeBounds\"])(node, rect);\n\n node.intersect = function (point) {\n return _intersect_index_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"].rect(node, point);\n };\n\n return shapeSvg;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (note);\n\n/***/ }),\n\n/***/ \"./src/dagre-wrapper/shapes/util.js\":\n/*!******************************************!*\\\n !*** ./src/dagre-wrapper/shapes/util.js ***!\n \\******************************************/\n/*! exports provided: labelHelper, updateNodeBounds, insertPolygonShape */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"labelHelper\", function() { return labelHelper; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateNodeBounds\", function() { return updateNodeBounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertPolygonShape\", function() { return insertPolygonShape; });\n/* harmony import */ var _createLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLabel */ \"./src/dagre-wrapper/createLabel.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar labelHelper = function labelHelper(parent, node, _classes, isNode) {\n var classes;\n\n if (!_classes) {\n classes = 'node default';\n } else {\n classes = _classes;\n } // Add outer g element\n\n\n var shapeSvg = parent.insert('g').attr('class', classes).attr('id', node.domId || node.id); // Create the label and insert it after the rect\n\n var label = shapeSvg.insert('g').attr('class', 'label').attr('style', node.labelStyle);\n var text = label.node().appendChild(Object(_createLabel__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(node.labelText, node.labelStyle, false, isNode)); // Get the size of the label\n\n var bbox = text.getBBox();\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_1__[\"getConfig\"])().flowchart.htmlLabels) {\n var div = text.children[0];\n var dv = Object(d3__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(text);\n bbox = div.getBoundingClientRect();\n dv.attr('width', bbox.width);\n dv.attr('height', bbox.height);\n }\n\n var halfPadding = node.padding / 2; // Center the label\n\n label.attr('transform', 'translate(' + -bbox.width / 2 + ', ' + -bbox.height / 2 + ')');\n return {\n shapeSvg: shapeSvg,\n bbox: bbox,\n halfPadding: halfPadding,\n label: label\n };\n};\nvar updateNodeBounds = function updateNodeBounds(node, element) {\n var bbox = element.node().getBBox();\n node.width = bbox.width;\n node.height = bbox.height;\n};\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {\n return d.x + ',' + d.y;\n }).join(' ')).attr('class', 'label-container').attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\n/***/ }),\n\n/***/ \"./src/defaultConfig.js\":\n/*!******************************!*\\\n !*** ./src/defaultConfig.js ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./themes */ \"./src/themes/index.js\");\n\n/**\n * **Configuration methods in Mermaid version 8.6.0 have been updated, to learn more[[click here](8.6.0_docs.md)].**\n *\n * ## **What follows are config instructions for older versions**\n *\n * These are the default options which can be overridden with the initialization call like so:\n *\n * **Example 1:**\n * <pre>\n * mermaid.initialize({\n * flowchart:{\n * htmlLabels: false\n * }\n * });\n * </pre>\n *\n * **Example 2:**\n * <pre>\n * <script>\n * var config = {\n * startOnLoad:true,\n * flowchart:{\n * useMaxWidth:true,\n * htmlLabels:true,\n * curve:'cardinal',\n * },\n *\n * securityLevel:'loose',\n * };\n * mermaid.initialize(config);\n * </script>\n * </pre>\n * A summary of all options and their defaults is found [here](#mermaidapi-configuration-defaults). A description of each option follows below.\n *\n * @name Configuration\n */\n\nvar config = {\n /**\n * theme , the CSS style sheet\n *\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | theme | Built in Themes | string | Optional | 'default', 'forest', 'dark', 'neutral', 'null'|\n *\n * **Notes:** To disable any pre-defined mermaid theme, use \"null\".\n *\n * <pre>\n * \"theme\": \"forest\",\n * \"themeCSS\": \".node rect { fill: red; }\"\n * </pre>\n */\n theme: 'default',\n themeVariables: _themes__WEBPACK_IMPORTED_MODULE_0__[\"default\"]['default'].getThemeVariables(),\n themeCSS: undefined,\n\n /* **maxTextSize** - The maximum allowed size of the users text diamgram */\n maxTextSize: 50000,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | fontFamily | specifies the font to be used in the rendered diagrams| string | Required | Any Posiable CSS FontFamily |\n *\n * **Notes:**\n * Default value: '\"trebuchet ms\", verdana, arial, sans-serif;'.\n */\n fontFamily: '\"trebuchet ms\", verdana, arial, sans-serif;',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | logLevel |This option decides the amount of logging to be used.| string \\| number | Required | 1, 2, 3, 4, 5 |\n *\n *\n * **Notes:**\n *\n * - debug: 1\n * - info: 2\n * - warn: 3\n * - error: 4\n * - fatal: 5 (default)\n */\n logLevel: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | securitylevel | Level of trust for parsed diagram|string | Required | 'strict', 'loose', 'antiscript' |\n *\n * **Notes**:\n *\n * - **strict**: (**default**) tags in text are encoded, click functionality is disabeled\n * - **loose**: tags in text are allowed, click functionality is enabled\n * - **antiscript**: html tags in text are allowed, (only script element is removed), click functionality is enabled\n */\n securityLevel: 'strict',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | startOnLoad | Dictates whether mermaind starts on Page load | boolean | Required | true, false |\n *\n * **Notes:** Default value: true\n */\n startOnLoad: true,\n\n /**\n * | Parameter | Description |Type | Required |Values|\n * | --- | --- | --- | --- | --- |\n * | arrowMarkerAbsolute | Controls whether or arrow markers in html code are absolute paths or anchors | boolean | Required | true, false |\n *\n *\n * **Notes**:\n *\n * This matters if you are using base tag settings.\n *\n * Default value: false\n */\n arrowMarkerAbsolute: false,\n\n /**\n * This option controls which currentConfig keys are considered _secure_ and can only be changed via\n * call to mermaidAPI.initialize. Calls to mermaidAPI.reinitialize cannot make changes to\n * the `secure` keys in the current currentConfig. This prevents malicious graph directives from\n * overriding a site's default security.\n * **Notes**:\n *\n * Default value: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize']\n */\n secure: ['secure', 'securityLevel', 'startOnLoad', 'maxTextSize'],\n\n /**\n * This option controls if the generated ids of nodes in the SVG are generated randomly or based on a seed.\n * If set to false, the IDs are generated based on the current date and thus are not deterministic. This is the default behaviour.\n *\n * **Notes**:\n *\n * This matters if your files are checked into sourcecontrol e.g. git and should not change unless content is changed.\n *\n * Default value: false\n */\n deterministicIds: false,\n\n /**\n * This option is the optional seed for deterministic ids. if set to undefined but deterministicIds is true, a simple number iterator is used.\n * You can set this attribute to base the seed on a static string.\n */\n deterministicIDSeed: undefined,\n\n /**\n * The object containing configurations specific for flowcharts\n */\n flowchart: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n *\n * Default value: 8\n */\n diagramPadding: 8,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | htmlLabels | Flag for setting whether or not a html tag should be used for rendering labels on the edges. | boolean| Required | true, false |\n *\n * **Notes:** Default value: true.\n */\n htmlLabels: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | nodeSpacing | Defines the spacing between nodes on the same level | Integer | Required | Any positive Number |\n *\n * **Notes:**\n *\n * Pertains to horizontal spacing for TB (top to bottom) or BT (bottom to top) graphs, and the vertical spacing for LR as well as RL graphs.**\n *\n * Default value: 50\n */\n nodeSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | rankSpacing | Defines the spacing between nodes on different levels | Integer | Required | Any Positive Number |\n *\n * **Notes**:\n *\n * pertains to vertical spacing for TB (top to bottom) or BT (bottom to top), and the horizontal spacing for LR as well as RL graphs.\n *\n * Default value 50\n */\n rankSpacing: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | curve | Defines how mermaid renders curves for flowcharts. | string | Required | 'basis', 'linear', 'cardinal'|\n *\n * **Notes:**\n *\n * Default Vaue: 'basis'\n */\n curve: 'basis',\n // Only used in new experimental rendering\n // represents the padding between the labels and the shape\n padding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n\n /**\n * The object containing configurations specific for sequence diagrams\n */\n sequence: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | activationWidth | Width of the activation rect | Integer | Required | Any Positive Value |\n *\n *\n * **Notes:** Default value :10\n */\n activationWidth: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n *| Parameter | Description | Type | Required | Values |\n *| --- | --- | --- | --- | --- |\n *| diagramMarginY | Margin to the over and under the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:** Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n actorMargin: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value|\n *\n * **Notes:**\n * Default value: 65\n */\n height: 65,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteMargin | margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageMargin | Space between messages | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageAlign | Multiline message alignment | string | Required | 'left', 'center', 'right' |\n *\n * **Notes:**\n * Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | mirrorActors | Mirror actors under diagram | boolean | Required | true, false |\n *\n * **Notes:**\n * Default value: true\n */\n mirrorActors: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n * When this flag is set to true, the height and width is set to 100% and is then scaling with the\n * available space. If set to false, the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | rightAngles | display curve arrows as right angles | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curve\n *\n * Default value: false\n */\n rightAngles: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | showSequenceNumbers | This will show the node numbers | boolean | Required | true, false |\n *\n * **Notes:**\n * Default value: false\n */\n showSequenceNumbers: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorFontSize| This sets the font size of the actor's description | Integer | Require | Any Positive Value |\n *\n ***Notes:**\n ***Default value 14**..\n */\n actorFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorFontFamily |This sets the font family of the actor's description | string | Required | Any Posiable CSS FontFamily |\n *\n * **Notes:**\n * Default value: \"'Open-Sans\", \"sans-serif\"'\n */\n actorFontFamily: '\"Open-Sans\", \"sans-serif\"',\n\n /**\n * This sets the font weight of the actor's description\n *\n * **Notes:**\n * Default value: 400.\n */\n actorFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteFontSize | This sets the font size of actor-attached notes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 14\n */\n noteFontSize: 14,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteFontFamily| This sets the font family of actor-attached notes. | string | Required | Any Posiable CSS FontFamily |\n *\n * **Notes:**\n * Default value: ''\"trebuchet ms\", verdana, arial, sans-serif'\n */\n noteFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the note's description\n *\n * **Notes:**\n * Default value: 400\n */\n noteFontWeight: 400,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteAlign | This sets the text alignment of actor-attached notes | string | required | 'left', 'center', 'right'|\n *\n * **Notes:**\n * Default value: 'center'\n */\n noteAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageFontSize | This sets the font size of actor messages | Integer | Required | Any Positive Number |\n *\n * **Notes:**\n * Default value: 16\n */\n messageFontSize: 16,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageFontFamily | This sets the font family of actor messages | string | Required | Any Posiable CSS FontFamily |\n *\n * **Notes:**\n * Default value: '\"trebuchet ms\", verdana, arial, sans-serif'\n */\n messageFontFamily: '\"trebuchet ms\", verdana, arial, sans-serif',\n\n /**\n * This sets the font weight of the message's description\n *\n * **Notes:**\n * Default value: 400.\n */\n messageFontWeight: 400,\n\n /**\n * This sets the auto-wrap state for the diagram\n *\n * **Notes:**\n * Default value: false.\n */\n wrap: false,\n\n /**\n * This sets the auto-wrap padding for the diagram (sides only)\n *\n * **Notes:**\n * Default value: 0.\n */\n wrapPadding: 10,\n\n /**\n * This sets the width of the loop-box (loop, alt, opt, par)\n *\n * **Notes:**\n * Default value: 50.\n */\n labelBoxWidth: 50,\n\n /**\n * This sets the height of the loop-box (loop, alt, opt, par)\n *\n * **Notes:**\n * Default value: 20.\n */\n labelBoxHeight: 20,\n messageFont: function messageFont() {\n return {\n fontFamily: this.messageFontFamily,\n fontSize: this.messageFontSize,\n fontWeight: this.messageFontWeight\n };\n },\n noteFont: function noteFont() {\n return {\n fontFamily: this.noteFontFamily,\n fontSize: this.noteFontSize,\n fontWeight: this.noteFontWeight\n };\n },\n actorFont: function actorFont() {\n return {\n fontFamily: this.actorFontFamily,\n fontSize: this.actorFontSize,\n fontWeight: this.actorFontWeight\n };\n }\n },\n\n /**\n * The object containing configurations specific for gantt diagrams\n */\n gantt: {\n /**\n * ### titleTopMargin\n *\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | titleTopMargin | Margin top for the text over the gantt diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 25\n */\n titleTopMargin: 25,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | barHeight | The height of the bars in the graph | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 20\n */\n barHeight: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | barGap | The margin between the different activities in the gantt diagram | Integer | Optional | Any Positive Value |\n *\n * **Notes:**\n * Default value: 4\n */\n barGap: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | topPadding | Margin between title and gantt diagram and between axis and gantt diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n topPadding: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | rightPadding | The space allocated for the section name to the right of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 75\n */\n rightPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | leftPadding | The space allocated for the section name to the left of the activities | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 75\n */\n leftPadding: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | gridLineStartPadding | Vertical starting position of the grid lines | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 35\n */\n gridLineStartPadding: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | fontSize | Font size | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 11\n */\n fontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | sectionFontSize | Font size for secions| Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 11\n */\n sectionFontSize: 11,\n\n /**\n * | Parameter | Description | Type | Required | Values|\n * | --- | --- | --- | --- | --- |\n * | numberSectionStyles | The number of alternating section styles | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n * Default value: 4\n */\n numberSectionStyles: 4,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | axisFormat | Datetime format of the axis | 3 | Required | Date in yy-mm-dd |\n *\n * **Notes:**\n *\n * This might need adjustment to match your locale and preferences\n *\n * Default value: '%Y-%m-%d'.\n */\n axisFormat: '%Y-%m-%d',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| topAxis | See notes | Boolean | 4 | True, False |\n *\n ***Notes:** when this flag is set date labels will be added to the\n top of the chart\n *\n ***Default value false**.\n */\n topAxis: false,\n useWidth: undefined\n },\n\n /**\n * The object containing configurations specific for journey diagrams\n */\n journey: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramMarginX | Margin to the right and left of the sequence diagram | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n diagramMarginX: 50,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramMarginY | Margin to the over and under the sequence diagram. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n diagramMarginY: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | actorMargin | Margin between actors | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 50\n */\n leftMargin: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | width | Width of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 150\n */\n width: 150,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | height | Height of actor boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 65\n */\n height: 50,\n\n /**\n *| Parameter | Description |Type | Required | Values|\n *| --- | --- | --- | --- | --- |\n *| boxMargin | Margin around loop boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n boxMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | boxTextMargin | Margin around the text in loop/alt/opt boxes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 5\n */\n boxTextMargin: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | noteMargin | Margin around notes | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Default value: 10\n */\n noteMargin: 10,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageMargin |Space between messages. | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * Space between messages.\n *\n * Default value: 35\n */\n messageMargin: 35,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | messageAlign | Multiline message alignment | 3 | 4 | 'left', 'center', 'right' |\n *\n * **Notes:**\n * Default value: 'center'\n */\n messageAlign: 'center',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | bottomMarginAdj | Prolongs the edge of the diagram downwards | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * Depending on css styling this might need adjustment.\n *\n * Default value: 1\n */\n bottomMarginAdj: 1,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | rightAngles | Curved Arrows become Right Angles | 3 | 4 | true, false |\n *\n * **Notes:**\n *\n * This will display arrows that start and begin at the same node as right angles, rather than a curves\n *\n * Default value: false\n */\n rightAngles: false,\n taskFontSize: 14,\n taskFontFamily: '\"Open-Sans\", \"sans-serif\"',\n taskMargin: 50,\n // width of activation box\n activationWidth: 10,\n // text placement as: tspan | fo | old only text as before\n textPlacement: 'fo',\n actorColours: ['#8FBC8F', '#7CFC00', '#00FFFF', '#20B2AA', '#B0E0E6', '#FFFFE0'],\n sectionFills: ['#191970', '#8B008B', '#4B0082', '#2F4F4F', '#800000', '#8B4513', '#00008B'],\n sectionColours: ['#fff']\n },\n class: {\n arrowMarkerAbsolute: false,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n git: {\n arrowMarkerAbsolute: false,\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n state: {\n dividerMargin: 10,\n sizeUnit: 5,\n padding: 8,\n textHeight: 10,\n titleShift: -15,\n noteMargin: 10,\n forkWidth: 70,\n forkHeight: 7,\n // Used\n miniPadding: 2,\n // Font size factor, this is used to guess the width of the edges labels before rendering by dagre\n // layout. This might need updating if/when switching font\n fontSizeFactor: 5.02,\n fontSize: 24,\n labelHeight: 16,\n edgeLengthFactor: '20',\n compositTitleSize: 35,\n radius: 5,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See notes | boolean | 4 | true, false |\n *\n * **Notes:**\n *\n * When this flag is set the height and width is set to 100% and is then scaling with the\n * available space if not the absolute space required is used.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n\n /**\n * The object containing configurations specific for entity relationship diagrams\n */\n er: {\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | diagramPadding | Amount of padding around the diagram as a whole | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n *\n * The amount of padding around the diagram as a whole so that embedded diagrams have margins, expressed in pixels\n *\n * Default value: 20\n */\n diagramPadding: 20,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | layoutDirection | Directional bias for layout of entities. | string | Required | \"TB\", \"BT\", \"LR\", \"RL\" |\n *\n * **Notes:**\n *\n * 'TB' for Top-Bottom, 'BT'for Bottom-Top, 'LR' for Left-Right, or 'RL' for Right to Left.\n *\n * T = top, B = bottom, L = left, and R = right.\n *\n * Default value: 'TB'\n */\n layoutDirection: 'TB',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | minEntityWidth | The mimimum width of an entity box | Integer | Required | Any Positive Value |\n *\n * **Notes:**\n * Expressed in pixels.\n * Default value: 100\n */\n minEntityWidth: 100,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | minEntityHeight| The minimum height of an entity box | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n * Expressed in pixels\n * Default value: 75\n */\n minEntityHeight: 75,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | entityPadding | Minimum internal padding betweentext in box and box borders | Integer | 4 | Any Positive Value |\n *\n * **Notes:**\n *\n * The minimum internal padding betweentext in an entity box and the enclosing box borders, expressed in pixels.\n *\n * Default value: 15\n */\n entityPadding: 15,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | stroke | Stroke color of box edges and lines | string | 4 | Any recognized color |\n *\n * **Notes:**\n * Default value: 'gray'\n */\n stroke: 'gray',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | fill | Fill color of entity boxes | string | 4 | Any recognized color |\n *\n * **Notes:**\n * Default value: 'honeydew'\n */\n fill: 'honeydew',\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | fontSize | Font Size in pixels | Integer | | Any Positive Value |\n *\n * **Notes:**\n *\n * Font size (expressed as an integer representing a number of pixels)\n * Default value: 12\n */\n fontSize: 12,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and\n * scaled based on available space. If set to false, the diagram reserves its\n * absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n\n /**\n * The object containing configurations specific for pie diagrams\n */\n pie: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and\n * scaled based on available space. If set to false, the diagram reserves its\n * absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true\n },\n\n /**\n * The object containing configurations specific for req diagrams\n */\n requirement: {\n useWidth: undefined,\n\n /**\n * | Parameter | Description | Type | Required | Values |\n * | --- | --- | --- | --- | --- |\n * | useMaxWidth | See Notes | boolean | Required | true, false |\n *\n * **Notes:**\n *\n * When this flag is set to true, the diagram width is locked to 100% and\n * scaled based on available space. If set to false, the diagram reserves its\n * absolute width.\n *\n * Default value: true\n */\n useMaxWidth: true,\n rect_fill: '#f9f9f9',\n text_color: '#333',\n rect_border_size: '0.5px',\n rect_border_color: '#bbb',\n rect_min_width: 200,\n rect_min_height: 200,\n fontSize: 14,\n rect_padding: 10,\n line_height: 20\n }\n};\nconfig.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\nconfig.git.arrowMarkerAbsolute = config.arrowMarkerAbsolute;\n/* harmony default export */ __webpack_exports__[\"default\"] = (config);\n\n/***/ }),\n\n/***/ \"./src/diagrams/class/classDb.js\":\n/*!***************************************!*\\\n !*** ./src/diagrams/class/classDb.js ***!\n \\***************************************/\n/*! exports provided: parseDirective, addClass, lookUpDomId, clear, getClass, getClasses, getRelations, addRelation, addAnnotation, addMember, addMembers, cleanupLabel, setCssClass, setLink, setClickEvent, bindFunctions, lineType, relationType, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClass\", function() { return addClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lookUpDomId\", function() { return lookUpDomId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClass\", function() { return getClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClasses\", function() { return getClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRelations\", function() { return getRelations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addRelation\", function() { return addRelation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addAnnotation\", function() { return addAnnotation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addMember\", function() { return addMember; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addMembers\", function() { return addMembers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cleanupLabel\", function() { return cleanupLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCssClass\", function() { return setCssClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLink\", function() { return setLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClickEvent\", function() { return setClickEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bindFunctions\", function() { return bindFunctions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineType\", function() { return lineType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"relationType\", function() { return relationType; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\n\n\n\n\nvar MERMAID_DOM_ID_PREFIX = 'classid-';\nvar relations = [];\nvar classes = {};\nvar classCounter = 0;\nvar funs = [];\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseDirective(this, statement, context, type);\n};\n\nvar splitClassNameAndType = function splitClassNameAndType(id) {\n var genericType = '';\n var className = id;\n\n if (id.indexOf('~') > 0) {\n var split = id.split('~');\n className = split[0];\n genericType = split[1];\n }\n\n return {\n className: className,\n type: genericType\n };\n};\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @public\n */\n\n\nvar addClass = function addClass(id) {\n var classId = splitClassNameAndType(id); // Only add class if not exists\n\n if (typeof classes[classId.className] !== 'undefined') return;\n classes[classId.className] = {\n id: classId.className,\n type: classId.type,\n cssClasses: [],\n methods: [],\n members: [],\n annotations: [],\n domId: MERMAID_DOM_ID_PREFIX + classId.className + '-' + classCounter\n };\n classCounter++;\n};\n/**\n * Function to lookup domId from id in the graph definition.\n * @param id\n * @public\n */\n\nvar lookUpDomId = function lookUpDomId(id) {\n var classKeys = Object.keys(classes);\n\n for (var i = 0; i < classKeys.length; i++) {\n if (classes[classKeys[i]].id === id) {\n return classes[classKeys[i]].domId;\n }\n }\n};\nvar clear = function clear() {\n relations = [];\n classes = {};\n funs = [];\n funs.push(setupToolTips);\n};\nvar getClass = function getClass(id) {\n return classes[id];\n};\nvar getClasses = function getClasses() {\n return classes;\n};\nvar getRelations = function getRelations() {\n return relations;\n};\nvar addRelation = function addRelation(relation) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Adding relation: ' + JSON.stringify(relation));\n addClass(relation.id1);\n addClass(relation.id2);\n relation.id1 = splitClassNameAndType(relation.id1).className;\n relation.id2 = splitClassNameAndType(relation.id2).className;\n relations.push(relation);\n};\n/**\n * Adds an annotation to the specified class\n * Annotations mark special properties of the given type (like 'interface' or 'service')\n * @param className The class name\n * @param annotation The name of the annotation without any brackets\n * @public\n */\n\nvar addAnnotation = function addAnnotation(className, annotation) {\n var validatedClassName = splitClassNameAndType(className).className;\n classes[validatedClassName].annotations.push(annotation);\n};\n/**\n * Adds a member to the specified class\n * @param className The class name\n * @param member The full name of the member.\n * If the member is enclosed in <<brackets>> it is treated as an annotation\n * If the member is ending with a closing bracket ) it is treated as a method\n * Otherwise the member will be treated as a normal property\n * @public\n */\n\nvar addMember = function addMember(className, member) {\n var validatedClassName = splitClassNameAndType(className).className;\n var theClass = classes[validatedClassName];\n\n if (typeof member === 'string') {\n // Member can contain white spaces, we trim them out\n var memberString = member.trim();\n\n if (memberString.startsWith('<<') && memberString.endsWith('>>')) {\n // Remove leading and trailing brackets\n theClass.annotations.push(memberString.substring(2, memberString.length - 2));\n } else if (memberString.indexOf(')') > 0) {\n theClass.methods.push(memberString);\n } else if (memberString) {\n theClass.members.push(memberString);\n }\n }\n};\nvar addMembers = function addMembers(className, members) {\n if (Array.isArray(members)) {\n members.reverse();\n members.forEach(function (member) {\n return addMember(className, member);\n });\n }\n};\nvar cleanupLabel = function cleanupLabel(label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(1).trim();\n } else {\n return label.trim();\n }\n};\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\n\nvar setCssClass = function setCssClass(ids, className) {\n ids.split(',').forEach(function (_id) {\n var id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof classes[id] !== 'undefined') {\n classes[id].cssClasses.push(className);\n }\n });\n};\n/**\n * Called by parser when a tooltip is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param tooltip Tooltip to add\n */\n\nvar setTooltip = function setTooltip(ids, tooltip) {\n var config = _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]();\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n classes[id].tooltip = _common_common__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sanitizeText(tooltip, config);\n }\n });\n};\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n * @param target Target of the link, _blank by default as originally defined in the svgDraw.js file\n */\n\n\nvar setLink = function setLink(ids, linkStr, target) {\n var config = _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]();\n ids.split(',').forEach(function (_id) {\n var id = _id;\n if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof classes[id] !== 'undefined') {\n classes[id].link = _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].formatUrl(linkStr, config);\n\n if (typeof target === 'string') {\n classes[id].linkTarget = target;\n } else {\n classes[id].linkTarget = '_blank';\n }\n }\n });\n setCssClass(ids, 'clickable');\n};\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\n\nvar setClickEvent = function setClickEvent(ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFunc(id, functionName, functionArgs);\n classes[id].haveCallback = true;\n });\n setCssClass(ids, 'clickable');\n};\n\nvar setClickFunc = function setClickFunc(domId, functionName, functionArgs) {\n var config = _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]();\n var id = domId;\n var elemId = lookUpDomId(id);\n\n if (config.securityLevel !== 'loose') {\n return;\n }\n\n if (typeof functionName === 'undefined') {\n return;\n }\n\n if (typeof classes[id] !== 'undefined') {\n var argList = [];\n\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n\n for (var i = 0; i < argList.length; i++) {\n var item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n\n /* This preserves all starting and ending whitespace inside */\n\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n\n argList[i] = item;\n }\n }\n /* if no arguments passed into callback, default to passing in id */\n\n\n if (argList.length === 0) {\n argList.push(elemId);\n }\n\n funs.push(function () {\n var elem = document.querySelector(\"[id=\\\"\".concat(elemId, \"\\\"]\"));\n\n if (elem !== null) {\n elem.addEventListener('click', function () {\n _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].runFunc.apply(_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"], [functionName].concat(_toConsumableArray(argList)));\n }, false);\n }\n });\n }\n};\n\nvar bindFunctions = function bindFunctions(element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\nvar lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nvar relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\n\nvar setupToolTips = function setupToolTips(element) {\n var tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('.mermaidTooltip');\n\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(element).select('svg');\n var nodes = svg.selectAll('g.node');\n nodes.on('mouseover', function () {\n var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(this);\n var title = el.attr('title'); // Dont try to draw a tooltip if no data is provided\n\n if (title === null) {\n return;\n }\n\n var rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem.html(el.attr('title')).style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px').style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n }).on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(this);\n el.classed('hover', false);\n });\n};\n\nfuns.push(setupToolTips);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]().class;\n },\n addClass: addClass,\n bindFunctions: bindFunctions,\n clear: clear,\n getClass: getClass,\n getClasses: getClasses,\n addAnnotation: addAnnotation,\n getRelations: getRelations,\n addRelation: addRelation,\n addMember: addMember,\n addMembers: addMembers,\n cleanupLabel: cleanupLabel,\n lineType: lineType,\n relationType: relationType,\n setClickEvent: setClickEvent,\n setCssClass: setCssClass,\n setLink: setLink,\n setTooltip: setTooltip,\n lookUpDomId: lookUpDomId\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/class/classRenderer-v2.js\":\n/*!************************************************!*\\\n !*** ./src/diagrams/class/classRenderer-v2.js ***!\n \\************************************************/\n/*! exports provided: addClasses, addRelations, setConf, drawOld, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClasses\", function() { return addClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addRelations\", function() { return addRelations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawOld\", function() { return drawOld; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ \"dagre\");\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _classDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./classDb */ \"./src/diagrams/class/classDb.js\");\n/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./parser/classDiagram */ \"./src/diagrams/class/parser/classDiagram.jison\");\n/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDraw */ \"./src/diagrams/class/svgDraw.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../dagre-wrapper/index.js */ \"./src/dagre-wrapper/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n\n\n\n\n\n\n\n\n // import addHtmlLabel from 'dagre-d3/lib/label/add-html-label.js';\n\n\n\n\n_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].yy = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nvar idCache = {};\nvar padding = 20;\nvar conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10\n};\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\n\nvar addClasses = function addClasses(classes, g) {\n // const svg = select(`[id=\"${svgId}\"]`);\n var keys = Object.keys(classes);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('keys:', keys);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info(classes); // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n\n keys.forEach(function (id) {\n var vertex = classes[id];\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n\n var cssClassStr = '';\n\n if (vertex.cssClasses.length > 0) {\n cssClassStr = cssClassStr + ' ' + vertex.cssClasses.join(' ');\n } // if (vertex.classes.length > 0) {\n // classStr = vertex.classes.join(' ');\n // }\n\n\n var styles = {\n labelStyle: ''\n }; //getStylesFromArray(vertex.styles);\n // Use vertex id as text in the box if no text is provided by the graph definition\n\n var vertexText = vertex.text !== undefined ? vertex.text : vertex.id; // We create a SVG label, either by delegating to addHtmlLabel or manually\n // let vertexNode;\n // if (getConfig().flowchart.htmlLabels) {\n // const node = {\n // label: vertexText.replace(\n // /fa[lrsb]?:fa-[\\w-]+/g,\n // s => `<i class='${s.replace(':', ' ')}'></i>`\n // )\n // };\n // vertexNode = addHtmlLabel(svg, node).node();\n // vertexNode.parentNode.removeChild(vertexNode);\n // } else {\n // const svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n // svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n // const rows = vertexText.split(common.lineBreakRegex);\n // for (let j = 0; j < rows.length; j++) {\n // const tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n // tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n // tspan.setAttribute('dy', '1em');\n // tspan.setAttribute('x', '1');\n // tspan.textContent = rows[j];\n // svgLabel.appendChild(tspan);\n // }\n // vertexNode = svgLabel;\n // }\n\n var radious = 0;\n var _shape = ''; // Set the shape based parameters\n\n switch (vertex.type) {\n case 'class':\n _shape = 'class_box';\n break;\n\n default:\n _shape = 'class_box';\n } // Add the node\n\n\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n classData: vertex,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n domId: vertex.domId,\n haveCallback: vertex.haveCallback,\n link: vertex.link,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: Object(_config__WEBPACK_IMPORTED_MODULE_7__[\"getConfig\"])().flowchart.padding\n });\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: cssClassStr,\n style: styles.style,\n id: vertex.id,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: Object(_config__WEBPACK_IMPORTED_MODULE_7__[\"getConfig\"])().flowchart.padding\n });\n });\n};\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\n\nvar addRelations = function addRelations(relations, g) {\n var cnt = 0;\n var defaultStyle;\n var defaultLabelStyle; // if (typeof relations.defaultStyle !== 'undefined') {\n // const defaultStyles = getStylesFromArray(relations.defaultStyle);\n // defaultStyle = defaultStyles.style;\n // defaultLabelStyle = defaultStyles.labelStyle;\n // }\n\n relations.forEach(function (edge) {\n cnt++;\n var edgeData = {}; //Set relationship style and line type\n\n edgeData.classes = 'relation';\n edgeData.pattern = edge.relation.lineType == 1 ? 'dashed' : 'solid';\n edgeData.id = 'id' + cnt; // Set link type for rendering\n\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info(edgeData, edge); //Set edge extra labels\n //edgeData.startLabelLeft = edge.relationTitle1;\n\n edgeData.startLabelRight = edge.relationTitle1 === 'none' ? '' : edge.relationTitle1;\n edgeData.endLabelLeft = edge.relationTitle2 === 'none' ? '' : edge.relationTitle2; //edgeData.endLabelRight = edge.relationTitle2;\n //Set relation arrow types\n\n edgeData.arrowTypeStart = getArrowMarker(edge.relation.type1);\n edgeData.arrowTypeEnd = getArrowMarker(edge.relation.type2);\n var style = '';\n var labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n style = 'fill:none';\n\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_0__[\"curveLinear\"]);\n } else if (typeof relations.defaultInterpolate !== 'undefined') {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(relations.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_0__[\"curveLinear\"]);\n } else {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(conf.curve, d3__WEBPACK_IMPORTED_MODULE_0__[\"curveLinear\"]);\n }\n\n edge.text = edge.title;\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_7__[\"getConfig\"])().flowchart.htmlLabels && false) {\n // eslint-disable-line\n edgeData.labelType = 'html';\n edgeData.label = '<span class=\"edgeLabel\">' + edge.text + '</span>';\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_10__[\"default\"].lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n } // Add the edge to the graph\n\n\n g.setEdge(edge.id1, edge.id2, edgeData, cnt);\n });\n}; // Todo optimize\n\nvar getGraphId = function getGraphId(label) {\n var keys = Object.keys(idCache);\n\n for (var i = 0; i < keys.length; i++) {\n if (idCache[keys[i]].label === label) {\n return keys[i];\n }\n }\n\n return undefined;\n};\n\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nvar drawOld = function drawOld(text, id) {\n idCache = {};\n _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].yy.clear();\n _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].parse(text);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Rendering diagram ' + text); // Fetch the default direction, use TD if none was found\n\n var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id='\".concat(id, \"']\")); // insertMarkers(diagram);\n // Layout graph, Create a new directed graph\n\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({\n multigraph: true\n }); // Set an object for the graph label\n\n g.setGraph({\n isMultiGraph: true\n }); // Default to assigning a new object as a label for each new edge.\n\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n var classes = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getClasses();\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('classes:');\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info(classes);\n var keys = Object.keys(classes);\n\n for (var i = 0; i < keys.length; i++) {\n var classDef = classes[keys[i]];\n var node = _svgDraw__WEBPACK_IMPORTED_MODULE_6__[\"default\"].drawClass(diagram, classDef, conf);\n idCache[node.id] = node; // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n\n g.setNode(node.id, node);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Org height: ' + node.height);\n }\n\n var relations = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getRelations();\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('relations:', relations);\n relations.forEach(function (relation) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation));\n g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), {\n relation: relation\n }, relation.title || 'DEFAULT');\n });\n dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + Object(_classDb__WEBPACK_IMPORTED_MODULE_4__[\"lookUpDomId\"])(v)).attr('transform', 'translate(' + (g.node(v).x - g.node(v).width / 2) + ',' + (g.node(v).y - g.node(v).height / 2) + ' )');\n }\n });\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n _svgDraw__WEBPACK_IMPORTED_MODULE_6__[\"default\"].drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n var svgBounds = diagram.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"configureSvgSize\"])(diagram, height, width, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n\n var vBox = \"\".concat(svgBounds.x - padding, \" \").concat(svgBounds.y - padding, \" \").concat(width, \" \").concat(height);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug(\"viewBox \".concat(vBox));\n diagram.attr('viewBox', vBox);\n};\nvar draw = function draw(text, id) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Drawing class');\n _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].clear(); // const parser = classDb.parser;\n // parser.yy = classDb;\n // Parse the graph definition\n // try {\n\n _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].parse(text); // } catch (err) {\n // log.debug('Parsing failed');\n // }\n // Fetch the default direction, use TD if none was found\n\n var dir = 'TD';\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_7__[\"getConfig\"])().flowchart;\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('config:', conf);\n var nodeSpacing = conf.nodeSpacing || 50;\n var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph\n\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function () {\n return {};\n }); // let subG;\n // const subGraphs = flowDb.getSubGraphs();\n // log.info('Subgraphs - ', subGraphs);\n // for (let i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n // log.info('Subgraph - ', subG);\n // flowDb.addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n // }\n // Fetch the verices/nodes and edges/links from the parsed graph definition\n\n var classes = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getClasses();\n var relations = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getRelations();\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info(relations); // let i = 0;\n // for (i = subGraphs.length - 1; i >= 0; i--) {\n // subG = subGraphs[i];\n // selectAll('cluster').append('text');\n // for (let j = 0; j < subG.nodes.length; j++) {\n // g.setParent(subG.nodes[j], subG.id);\n // }\n // }\n\n addClasses(classes, g, id);\n addRelations(relations, g); // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n // Set up an SVG group so that we can translate the final graph.\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\"));\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink'); // Run the renderer. This is what draws the final graph.\n\n var element = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + id + ' g');\n Object(_dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_8__[\"render\"])(element, g, ['aggregation', 'extension', 'composition', 'dependency'], 'classDiagram', id); // element.selectAll('g.node').attr('title', function() {\n // return flowDb.getTooltip(this.id);\n // });\n\n var padding = 8;\n var svgBounds = svg.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug(\"new ViewBox 0 0 \".concat(width, \" \").concat(height), \"translate(\".concat(padding - g._label.marginx, \", \").concat(padding - g._label.marginy, \")\"));\n Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"configureSvgSize\"])(svg, height, width, conf.useMaxWidth);\n svg.attr('viewBox', \"0 0 \".concat(width, \" \").concat(height));\n svg.select('g').attr('transform', \"translate(\".concat(padding - g._label.marginx, \", \").concat(padding - svgBounds.y, \")\")); // Index nodes\n // flowDb.indexNodes('subGraph' + i);\n // Add label rects for non html labels\n\n if (!conf.htmlLabels) {\n var labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n\n for (var k = 0; k < labels.length; k++) {\n var label = labels[k]; // Get dimensions of label\n\n var dim = label.getBBox();\n var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n rect.setAttribute('style', 'fill:#e8e8e8;');\n label.insertBefore(rect, label.firstChild);\n }\n } // If node has a link, wrap it in an anchor SVG object.\n // const keys = Object.keys(classes);\n // keys.forEach(function(key) {\n // const vertex = classes[key];\n // if (vertex.link) {\n // const node = select('#' + id + ' [id=\"' + key + '\"]');\n // if (node) {\n // const link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n // link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n // const linkNode = node.insert(function() {\n // return link;\n // }, ':first-child');\n // const shape = node.select('.label-container');\n // if (shape) {\n // linkNode.append(function() {\n // return shape.node();\n // });\n // }\n // const label = node.select('.label');\n // if (label) {\n // linkNode.append(function() {\n // return label.node();\n // });\n // }\n // }\n // }\n // });\n\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\nfunction getArrowMarker(type) {\n var marker;\n\n switch (type) {\n case 0:\n marker = 'aggregation';\n break;\n\n case 1:\n marker = 'extension';\n break;\n\n case 2:\n marker = 'composition';\n break;\n\n case 3:\n marker = 'dependency';\n break;\n\n default:\n marker = 'none';\n }\n\n return marker;\n}\n\n/***/ }),\n\n/***/ \"./src/diagrams/class/classRenderer.js\":\n/*!*********************************************!*\\\n !*** ./src/diagrams/class/classRenderer.js ***!\n \\*********************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ \"dagre\");\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _classDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./classDb */ \"./src/diagrams/class/classDb.js\");\n/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./parser/classDiagram */ \"./src/diagrams/class/parser/classDiagram.jison\");\n/* harmony import */ var _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./svgDraw */ \"./src/diagrams/class/svgDraw.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n\n\n_parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].yy = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\nvar idCache = {};\nvar padding = 20;\nvar conf = {\n dividerMargin: 10,\n padding: 5,\n textHeight: 10\n}; // Todo optimize\n\nvar getGraphId = function getGraphId(label) {\n var keys = Object.keys(idCache);\n\n for (var i = 0; i < keys.length; i++) {\n if (idCache[keys[i]].label === label) {\n return keys[i];\n }\n }\n\n return undefined;\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\n\nvar insertMarkers = function insertMarkers(elem) {\n elem.append('defs').append('marker').attr('id', 'extensionStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 1,7 L18,13 V 1 Z');\n elem.append('defs').append('marker').attr('id', 'extensionEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 1,1 V 13 L18,7 Z'); // this is actual shape for arrowhead\n\n elem.append('defs').append('marker').attr('id', 'compositionStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', 'compositionEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', 'aggregationStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', 'aggregationEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', 'dependencyStart').attr('class', 'extension').attr('refX', 0).attr('refY', 7).attr('markerWidth', 190).attr('markerHeight', 240).attr('orient', 'auto').append('path').attr('d', 'M 5,7 L9,13 L1,7 L9,1 Z');\n elem.append('defs').append('marker').attr('id', 'dependencyEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nvar draw = function draw(text, id) {\n idCache = {};\n _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].yy.clear();\n _parser_classDiagram__WEBPACK_IMPORTED_MODULE_5__[\"parser\"].parse(text);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Rendering diagram ' + text); // Fetch the default direction, use TD if none was found\n\n var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id='\".concat(id, \"']\"));\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n insertMarkers(diagram); // Layout graph, Create a new directed graph\n\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({\n multigraph: true\n }); // Set an object for the graph label\n\n g.setGraph({\n isMultiGraph: true\n }); // Default to assigning a new object as a label for each new edge.\n\n g.setDefaultEdgeLabel(function () {\n return {};\n });\n var classes = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getClasses();\n var keys = Object.keys(classes);\n\n for (var i = 0; i < keys.length; i++) {\n var classDef = classes[keys[i]];\n var node = _svgDraw__WEBPACK_IMPORTED_MODULE_6__[\"default\"].drawClass(diagram, classDef, conf);\n idCache[node.id] = node; // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n\n g.setNode(node.id, node);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Org height: ' + node.height);\n }\n\n var relations = _classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getRelations();\n relations.forEach(function (relation) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('tjoho' + getGraphId(relation.id1) + getGraphId(relation.id2) + JSON.stringify(relation));\n g.setEdge(getGraphId(relation.id1), getGraphId(relation.id2), {\n relation: relation\n }, relation.title || 'DEFAULT');\n });\n dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(g);\n g.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof g.node(v) !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Node ' + v + ': ' + JSON.stringify(g.node(v)));\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + Object(_classDb__WEBPACK_IMPORTED_MODULE_4__[\"lookUpDomId\"])(v)).attr('transform', 'translate(' + (g.node(v).x - g.node(v).width / 2) + ',' + (g.node(v).y - g.node(v).height / 2) + ' )');\n }\n });\n g.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof g.edge(e) !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(g.edge(e)));\n _svgDraw__WEBPACK_IMPORTED_MODULE_6__[\"default\"].drawEdge(diagram, g.edge(e), g.edge(e).relation, conf);\n }\n });\n var svgBounds = diagram.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"configureSvgSize\"])(diagram, height, width, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n\n var vBox = \"\".concat(svgBounds.x - padding, \" \").concat(svgBounds.y - padding, \" \").concat(width, \" \").concat(height);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug(\"viewBox \".concat(vBox));\n diagram.attr('viewBox', vBox);\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/class/parser/classDiagram.jison\":\n/*!******************************************************!*\\\n !*** ./src/diagrams/class/parser/classDiagram.jison ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,7],$V1=[1,6],$V2=[1,14],$V3=[1,25],$V4=[1,28],$V5=[1,26],$V6=[1,27],$V7=[1,29],$V8=[1,30],$V9=[1,31],$Va=[1,32],$Vb=[1,35],$Vc=[1,36],$Vd=[1,37],$Ve=[1,38],$Vf=[10,19],$Vg=[1,50],$Vh=[1,51],$Vi=[1,52],$Vj=[1,53],$Vk=[1,54],$Vl=[1,55],$Vm=[10,19,26,33,34,42,45,46,47,48,49,50,55,57],$Vn=[10,19,24,26,33,34,38,42,45,46,47,48,49,50,55,57,72,73,74,75],$Vo=[10,13,17,19],$Vp=[42,72,73,74,75],$Vq=[42,49,50,72,73,74,75],$Vr=[42,45,46,47,48,72,73,74,75],$Vs=[10,19,26],$Vt=[1,87];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"graphConfig\":6,\"openDirective\":7,\"typeDirective\":8,\"closeDirective\":9,\"NEWLINE\":10,\":\":11,\"argDirective\":12,\"open_directive\":13,\"type_directive\":14,\"arg_directive\":15,\"close_directive\":16,\"CLASS_DIAGRAM\":17,\"statements\":18,\"EOF\":19,\"statement\":20,\"className\":21,\"alphaNumToken\":22,\"classLiteralName\":23,\"GENERICTYPE\":24,\"relationStatement\":25,\"LABEL\":26,\"classStatement\":27,\"methodStatement\":28,\"annotationStatement\":29,\"clickStatement\":30,\"cssClassStatement\":31,\"CLASS\":32,\"STYLE_SEPARATOR\":33,\"STRUCT_START\":34,\"members\":35,\"STRUCT_STOP\":36,\"ANNOTATION_START\":37,\"ANNOTATION_END\":38,\"MEMBER\":39,\"SEPARATOR\":40,\"relation\":41,\"STR\":42,\"relationType\":43,\"lineType\":44,\"AGGREGATION\":45,\"EXTENSION\":46,\"COMPOSITION\":47,\"DEPENDENCY\":48,\"LINE\":49,\"DOTTED_LINE\":50,\"CALLBACK\":51,\"LINK\":52,\"LINK_TARGET\":53,\"CLICK\":54,\"CALLBACK_NAME\":55,\"CALLBACK_ARGS\":56,\"HREF\":57,\"CSSCLASS\":58,\"commentToken\":59,\"textToken\":60,\"graphCodeTokens\":61,\"textNoTagsToken\":62,\"TAGSTART\":63,\"TAGEND\":64,\"==\":65,\"--\":66,\"PCT\":67,\"DEFAULT\":68,\"SPACE\":69,\"MINUS\":70,\"keywords\":71,\"UNICODE_TEXT\":72,\"NUM\":73,\"ALPHA\":74,\"BQUOTE_STR\":75,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\"NEWLINE\",11:\":\",13:\"open_directive\",14:\"type_directive\",15:\"arg_directive\",16:\"close_directive\",17:\"CLASS_DIAGRAM\",19:\"EOF\",24:\"GENERICTYPE\",26:\"LABEL\",32:\"CLASS\",33:\"STYLE_SEPARATOR\",34:\"STRUCT_START\",36:\"STRUCT_STOP\",37:\"ANNOTATION_START\",38:\"ANNOTATION_END\",39:\"MEMBER\",40:\"SEPARATOR\",42:\"STR\",45:\"AGGREGATION\",46:\"EXTENSION\",47:\"COMPOSITION\",48:\"DEPENDENCY\",49:\"LINE\",50:\"DOTTED_LINE\",51:\"CALLBACK\",52:\"LINK\",53:\"LINK_TARGET\",54:\"CLICK\",55:\"CALLBACK_NAME\",56:\"CALLBACK_ARGS\",57:\"HREF\",58:\"CSSCLASS\",61:\"graphCodeTokens\",63:\"TAGSTART\",64:\"TAGEND\",65:\"==\",66:\"--\",67:\"PCT\",68:\"DEFAULT\",69:\"SPACE\",70:\"MINUS\",71:\"keywords\",72:\"UNICODE_TEXT\",73:\"NUM\",74:\"ALPHA\",75:\"BQUOTE_STR\"},\nproductions_: [0,[3,1],[3,2],[4,1],[5,4],[5,6],[7,1],[8,1],[12,1],[9,1],[6,4],[18,1],[18,2],[18,3],[21,1],[21,1],[21,2],[21,2],[21,2],[20,1],[20,2],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[27,2],[27,4],[27,5],[27,7],[29,4],[35,1],[35,2],[28,1],[28,2],[28,1],[28,1],[25,3],[25,4],[25,4],[25,5],[41,3],[41,2],[41,2],[41,1],[43,1],[43,1],[43,1],[43,1],[44,1],[44,1],[30,3],[30,4],[30,3],[30,4],[30,4],[30,5],[30,3],[30,4],[30,4],[30,5],[30,3],[30,4],[30,4],[30,5],[31,3],[59,1],[59,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[60,1],[62,1],[62,1],[62,1],[62,1],[22,1],[22,1],[22,1],[23,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 7:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 8:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 9:\n yy.parseDirective('}%%', 'close_directive', 'class'); \nbreak;\ncase 14: case 15:\n this.$=$$[$0]; \nbreak;\ncase 16:\n this.$=$$[$0-1]+$$[$0]; \nbreak;\ncase 17: case 18:\n this.$=$$[$0-1]+'~'+$$[$0]; \nbreak;\ncase 19:\n yy.addRelation($$[$0]); \nbreak;\ncase 20:\n $$[$0-1].title = yy.cleanupLabel($$[$0]); yy.addRelation($$[$0-1]); \nbreak;\ncase 27:\nyy.addClass($$[$0]);\nbreak;\ncase 28:\nyy.addClass($$[$0-2]);yy.setCssClass($$[$0-2], $$[$0]);\nbreak;\ncase 29:\n/*console.log($$[$0-3],JSON.stringify($$[$0-1]));*/yy.addClass($$[$0-3]);yy.addMembers($$[$0-3],$$[$0-1]);\nbreak;\ncase 30:\nyy.addClass($$[$0-5]);yy.setCssClass($$[$0-5], $$[$0-3]);yy.addMembers($$[$0-5],$$[$0-1]);\nbreak;\ncase 31:\n yy.addAnnotation($$[$0],$$[$0-2]); \nbreak;\ncase 32:\n this.$ = [$$[$0]]; \nbreak;\ncase 33:\n $$[$0].push($$[$0-1]);this.$=$$[$0];\nbreak;\ncase 34:\n/*console.log('Rel found',$$[$0]);*/\nbreak;\ncase 35:\nyy.addMember($$[$0-1],yy.cleanupLabel($$[$0]));\nbreak;\ncase 36:\n/*console.warn('Member',$$[$0]);*/\nbreak;\ncase 37:\n/*console.log('sep found',$$[$0]);*/\nbreak;\ncase 38:\n this.$ = {'id1':$$[$0-2],'id2':$$[$0], relation:$$[$0-1], relationTitle1:'none', relationTitle2:'none'}; \nbreak;\ncase 39:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-1], relationTitle1:$$[$0-2], relationTitle2:'none'}\nbreak;\ncase 40:\n this.$ = {id1:$$[$0-3], id2:$$[$0], relation:$$[$0-2], relationTitle1:'none', relationTitle2:$$[$0-1]}; \nbreak;\ncase 41:\n this.$ = {id1:$$[$0-4], id2:$$[$0], relation:$$[$0-2], relationTitle1:$$[$0-3], relationTitle2:$$[$0-1]} \nbreak;\ncase 42:\n this.$={type1:$$[$0-2],type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 43:\n this.$={type1:'none',type2:$$[$0],lineType:$$[$0-1]}; \nbreak;\ncase 44:\n this.$={type1:$$[$0-1],type2:'none',lineType:$$[$0]}; \nbreak;\ncase 45:\n this.$={type1:'none',type2:'none',lineType:$$[$0]}; \nbreak;\ncase 46:\n this.$=yy.relationType.AGGREGATION;\nbreak;\ncase 47:\n this.$=yy.relationType.EXTENSION;\nbreak;\ncase 48:\n this.$=yy.relationType.COMPOSITION;\nbreak;\ncase 49:\n this.$=yy.relationType.DEPENDENCY;\nbreak;\ncase 50:\nthis.$=yy.lineType.LINE;\nbreak;\ncase 51:\nthis.$=yy.lineType.DOTTED_LINE;\nbreak;\ncase 52: case 58:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 53: case 59:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 54: case 62:\nthis.$ = $$[$0-2];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 55:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1],$$[$0]);\nbreak;\ncase 56: case 64:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-2], $$[$0]);\nbreak;\ncase 57: case 65:\nthis.$ = $$[$0-4];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);yy.setTooltip($$[$0-3], $$[$0-1]);\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 61:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.setLink($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 66:\nyy.setCssClass($$[$0-1], $$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:4,7:5,13:$V0,17:$V1},{1:[3]},{1:[2,1]},{3:8,4:2,5:3,6:4,7:5,13:$V0,17:$V1},{1:[2,3]},{8:9,14:[1,10]},{10:[1,11]},{14:[2,6]},{1:[2,2]},{9:12,11:[1,13],16:$V2},o([11,16],[2,7]),{5:23,7:5,13:$V0,18:15,20:16,21:24,22:33,23:34,25:17,27:18,28:19,29:20,30:21,31:22,32:$V3,37:$V4,39:$V5,40:$V6,51:$V7,52:$V8,54:$V9,58:$Va,72:$Vb,73:$Vc,74:$Vd,75:$Ve},{10:[1,39]},{12:40,15:[1,41]},{10:[2,9]},{19:[1,42]},{10:[1,43],19:[2,11]},o($Vf,[2,19],{26:[1,44]}),o($Vf,[2,21]),o($Vf,[2,22]),o($Vf,[2,23]),o($Vf,[2,24]),o($Vf,[2,25]),o($Vf,[2,26]),o($Vf,[2,34],{41:45,43:48,44:49,26:[1,47],42:[1,46],45:$Vg,46:$Vh,47:$Vi,48:$Vj,49:$Vk,50:$Vl}),{21:56,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},o($Vf,[2,36]),o($Vf,[2,37]),{22:57,72:$Vb,73:$Vc,74:$Vd},{21:58,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},{21:59,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},{21:60,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},{42:[1,61]},o($Vm,[2,14],{22:33,23:34,21:62,24:[1,63],72:$Vb,73:$Vc,74:$Vd,75:$Ve}),o($Vm,[2,15],{24:[1,64]}),o($Vn,[2,80]),o($Vn,[2,81]),o($Vn,[2,82]),o([10,19,24,26,33,34,42,45,46,47,48,49,50,55,57],[2,83]),o($Vo,[2,4]),{9:65,16:$V2},{16:[2,8]},{1:[2,10]},{5:23,7:5,13:$V0,18:66,19:[2,12],20:16,21:24,22:33,23:34,25:17,27:18,28:19,29:20,30:21,31:22,32:$V3,37:$V4,39:$V5,40:$V6,51:$V7,52:$V8,54:$V9,58:$Va,72:$Vb,73:$Vc,74:$Vd,75:$Ve},o($Vf,[2,20]),{21:67,22:33,23:34,42:[1,68],72:$Vb,73:$Vc,74:$Vd,75:$Ve},{41:69,43:48,44:49,45:$Vg,46:$Vh,47:$Vi,48:$Vj,49:$Vk,50:$Vl},o($Vf,[2,35]),{44:70,49:$Vk,50:$Vl},o($Vp,[2,45],{43:71,45:$Vg,46:$Vh,47:$Vi,48:$Vj}),o($Vq,[2,46]),o($Vq,[2,47]),o($Vq,[2,48]),o($Vq,[2,49]),o($Vr,[2,50]),o($Vr,[2,51]),o($Vf,[2,27],{33:[1,72],34:[1,73]}),{38:[1,74]},{42:[1,75]},{42:[1,76]},{55:[1,77],57:[1,78]},{22:79,72:$Vb,73:$Vc,74:$Vd},o($Vm,[2,16]),o($Vm,[2,17]),o($Vm,[2,18]),{10:[1,80]},{19:[2,13]},o($Vs,[2,38]),{21:81,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},{21:82,22:33,23:34,42:[1,83],72:$Vb,73:$Vc,74:$Vd,75:$Ve},o($Vp,[2,44],{43:84,45:$Vg,46:$Vh,47:$Vi,48:$Vj}),o($Vp,[2,43]),{22:85,72:$Vb,73:$Vc,74:$Vd},{35:86,39:$Vt},{21:88,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},o($Vf,[2,52],{42:[1,89]}),o($Vf,[2,54],{42:[1,91],53:[1,90]}),o($Vf,[2,58],{42:[1,92],56:[1,93]}),o($Vf,[2,62],{42:[1,95],53:[1,94]}),o($Vf,[2,66]),o($Vo,[2,5]),o($Vs,[2,40]),o($Vs,[2,39]),{21:96,22:33,23:34,72:$Vb,73:$Vc,74:$Vd,75:$Ve},o($Vp,[2,42]),o($Vf,[2,28],{34:[1,97]}),{36:[1,98]},{35:99,36:[2,32],39:$Vt},o($Vf,[2,31]),o($Vf,[2,53]),o($Vf,[2,55]),o($Vf,[2,56],{53:[1,100]}),o($Vf,[2,59]),o($Vf,[2,60],{42:[1,101]}),o($Vf,[2,63]),o($Vf,[2,64],{53:[1,102]}),o($Vs,[2,41]),{35:103,39:$Vt},o($Vf,[2,29]),{36:[2,33]},o($Vf,[2,57]),o($Vf,[2,61]),o($Vf,[2,65]),{36:[1,104]},o($Vf,[2,30])],\ndefaultActions: {2:[2,1],4:[2,3],7:[2,6],8:[2,2],14:[2,9],41:[2,8],42:[2,10],66:[2,13],99:[2,33]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 13; \nbreak;\ncase 1: this.begin('type_directive'); return 14; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 11; \nbreak;\ncase 3: this.popState(); this.popState(); return 16; \nbreak;\ncase 4:return 15;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 10;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:return 17;\nbreak;\ncase 10:return 17;\nbreak;\ncase 11: this.begin(\"struct\"); /*console.log('Starting struct');*/ return 34;\nbreak;\ncase 12:return \"EOF_IN_STRUCT\";\nbreak;\ncase 13:return \"OPEN_IN_STRUCT\";\nbreak;\ncase 14: /*console.log('Ending struct');*/this.popState(); return 36;\nbreak;\ncase 15:/* nothing */\nbreak;\ncase 16: /*console.log('lex-member: ' + yy_.yytext);*/ return \"MEMBER\";\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 58;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 52;\nbreak;\ncase 21:return 54;\nbreak;\ncase 22:return 37;\nbreak;\ncase 23:return 38;\nbreak;\ncase 24:this.begin(\"generic\");\nbreak;\ncase 25:this.popState();\nbreak;\ncase 26:return \"GENERICTYPE\";\nbreak;\ncase 27:this.begin(\"string\");\nbreak;\ncase 28:this.popState();\nbreak;\ncase 29:return \"STR\";\nbreak;\ncase 30:this.begin(\"bqstring\");\nbreak;\ncase 31:this.popState();\nbreak;\ncase 32:return \"BQUOTE_STR\";\nbreak;\ncase 33:this.begin(\"href\");\nbreak;\ncase 34:this.popState();\nbreak;\ncase 35:return 57;\nbreak;\ncase 36:this.begin(\"callback_name\");\nbreak;\ncase 37:this.popState();\nbreak;\ncase 38:this.popState(); this.begin(\"callback_args\");\nbreak;\ncase 39:return 55;\nbreak;\ncase 40:this.popState();\nbreak;\ncase 41:return 56;\nbreak;\ncase 42:return 53;\nbreak;\ncase 43:return 53;\nbreak;\ncase 44:return 53;\nbreak;\ncase 45:return 53;\nbreak;\ncase 46:return 46;\nbreak;\ncase 47:return 46;\nbreak;\ncase 48:return 48;\nbreak;\ncase 49:return 48;\nbreak;\ncase 50:return 47;\nbreak;\ncase 51:return 45;\nbreak;\ncase 52:return 49;\nbreak;\ncase 53:return 50;\nbreak;\ncase 54:return 26;\nbreak;\ncase 55:return 33;\nbreak;\ncase 56:return 70;\nbreak;\ncase 57:return 'DOT';\nbreak;\ncase 58:return 'PLUS';\nbreak;\ncase 59:return 67;\nbreak;\ncase 60:return 'EQUALS';\nbreak;\ncase 61:return 'EQUALS';\nbreak;\ncase 62:return 74;\nbreak;\ncase 63:return 'PUNCTUATION';\nbreak;\ncase 64:return 73;\nbreak;\ncase 65:return 72;\nbreak;\ncase 66:return 69;\nbreak;\ncase 67:return 19;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)*[^\\n]*(\\r?\\n?)+)/,/^(?:%%[^\\n]*(\\r?\\n)*)/,/^(?:(\\r?\\n)+)/,/^(?:\\s+)/,/^(?:classDiagram-v2\\b)/,/^(?:classDiagram\\b)/,/^(?:[{])/,/^(?:$)/,/^(?:[{])/,/^(?:[}])/,/^(?:[\\n])/,/^(?:[^{}\\n]*)/,/^(?:class\\b)/,/^(?:cssClass\\b)/,/^(?:callback\\b)/,/^(?:link\\b)/,/^(?:click\\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:[~])/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:[`])/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:\\s*<\\|)/,/^(?:\\s*\\|>)/,/^(?:\\s*>)/,/^(?:\\s*<)/,/^(?:\\s*\\*)/,/^(?:\\s*o\\b)/,/^(?:--)/,/^(?:\\.\\.)/,/^(?::{1}[^:\\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\\.)/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\\w+)/,/^(?:[!\"#$%&'*+,-.`?\\\\/])/,/^(?:[0-9]+)/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callback_args\":{\"rules\":[40,41],\"inclusive\":false},\"callback_name\":{\"rules\":[37,38,39],\"inclusive\":false},\"href\":{\"rules\":[34,35],\"inclusive\":false},\"struct\":{\"rules\":[12,13,14,15,16],\"inclusive\":false},\"generic\":{\"rules\":[25,26],\"inclusive\":false},\"bqstring\":{\"rules\":[31,32],\"inclusive\":false},\"string\":{\"rules\":[28,29],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,17,18,19,20,21,22,23,24,27,30,33,36,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/class/styles.js\":\n/*!**************************************!*\\\n !*** ./src/diagrams/class/styles.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \"g.classGroup text {\\n fill: \".concat(options.nodeBorder, \";\\n fill: \").concat(options.classText, \";\\n stroke: none;\\n font-family: \").concat(options.fontFamily, \";\\n font-size: 10px;\\n\\n .title {\\n font-weight: bolder;\\n }\\n\\n}\\n\\n.classTitle {\\n font-weight: bolder;\\n}\\n.node rect,\\n .node circle,\\n .node ellipse,\\n .node polygon,\\n .node path {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n stroke-width: 1px;\\n }\\n\\n\\n.divider {\\n stroke: \").concat(options.nodeBorder, \";\\n stroke: 1;\\n}\\n\\ng.clickable {\\n cursor: pointer;\\n}\\n\\ng.classGroup rect {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n}\\n\\ng.classGroup line {\\n stroke: \").concat(options.nodeBorder, \";\\n stroke-width: 1;\\n}\\n\\n.classLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: \").concat(options.mainBkg, \";\\n opacity: 0.5;\\n}\\n\\n.classLabel .label {\\n fill: \").concat(options.nodeBorder, \";\\n font-size: 10px;\\n}\\n\\n.relation {\\n stroke: \").concat(options.lineColor, \";\\n stroke-width: 1;\\n fill: none;\\n}\\n\\n.dashed-line{\\n stroke-dasharray: 3;\\n}\\n\\n#compositionStart, .composition {\\n fill: \").concat(options.lineColor, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#compositionEnd, .composition {\\n fill: \").concat(options.lineColor, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#dependencyStart, .dependency {\\n fill: \").concat(options.lineColor, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#dependencyStart, .dependency {\\n fill: \").concat(options.lineColor, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#extensionStart, .extension {\\n fill: \").concat(options.lineColor, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#extensionEnd, .extension {\\n fill: \").concat(options.lineColor, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#aggregationStart, .aggregation {\\n fill: \").concat(options.mainBkg, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n#aggregationEnd, .aggregation {\\n fill: \").concat(options.mainBkg, \" !important;\\n stroke: \").concat(options.lineColor, \" !important;\\n stroke-width: 1;\\n}\\n\\n.edgeTerminals {\\n font-size: 11px;\\n}\\n\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/class/svgDraw.js\":\n/*!***************************************!*\\\n !*** ./src/diagrams/class/svgDraw.js ***!\n \\***************************************/\n/*! exports provided: drawEdge, drawClass, parseMember, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawEdge\", function() { return drawEdge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawClass\", function() { return drawClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseMember\", function() { return parseMember; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _classDb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./classDb */ \"./src/diagrams/class/classDb.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n\n\n\n\nvar edgeCount = 0;\nvar drawEdge = function drawEdge(elem, path, relation, conf) {\n var getRelationType = function getRelationType(type) {\n switch (type) {\n case _classDb__WEBPACK_IMPORTED_MODULE_1__[\"relationType\"].AGGREGATION:\n return 'aggregation';\n\n case _classDb__WEBPACK_IMPORTED_MODULE_1__[\"relationType\"].EXTENSION:\n return 'extension';\n\n case _classDb__WEBPACK_IMPORTED_MODULE_1__[\"relationType\"].COMPOSITION:\n return 'composition';\n\n case _classDb__WEBPACK_IMPORTED_MODULE_1__[\"relationType\"].DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter(function (p) {\n return !Number.isNaN(p.y);\n }); // The data for our line\n\n var lineData = path.points; // This is the accessor function we talked about above\n\n var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"line\"])().x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }).curve(d3__WEBPACK_IMPORTED_MODULE_0__[\"curveBasis\"]);\n var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', 'edge' + edgeCount).attr('class', 'relation');\n var url = '';\n\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n if (relation.relation.lineType == 1) {\n svgPath.attr('class', 'relation dashed-line');\n }\n\n if (relation.relation.type1 !== 'none') {\n svgPath.attr('marker-start', 'url(' + url + '#' + getRelationType(relation.relation.type1) + 'Start' + ')');\n }\n\n if (relation.relation.type2 !== 'none') {\n svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(relation.relation.type2) + 'End' + ')');\n }\n\n var x, y;\n var l = path.points.length; // Calculate Label position\n\n var labelPosition = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calcLabelPosition(path.points);\n x = labelPosition.x;\n y = labelPosition.y;\n var p1_card_x, p1_card_y;\n var p2_card_x, p2_card_y;\n\n if (l % 2 !== 0 && l > 1) {\n var cardinality_1_point = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calcCardinalityPosition(relation.relation.type1 !== 'none', path.points, path.points[0]);\n var cardinality_2_point = _utils__WEBPACK_IMPORTED_MODULE_2__[\"default\"].calcCardinalityPosition(relation.relation.type2 !== 'none', path.points, path.points[l - 1]);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('cardinality_1_point ' + JSON.stringify(cardinality_1_point));\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('cardinality_2_point ' + JSON.stringify(cardinality_2_point));\n p1_card_x = cardinality_1_point.x;\n p1_card_y = cardinality_1_point.y;\n p2_card_x = cardinality_2_point.x;\n p2_card_y = cardinality_2_point.y;\n }\n\n if (typeof relation.title !== 'undefined') {\n var g = elem.append('g').attr('class', 'classLabel');\n var label = g.append('text').attr('class', 'label').attr('x', x).attr('y', y).attr('fill', 'red').attr('text-anchor', 'middle').text(relation.title);\n window.label = label;\n var bounds = label.node().getBBox();\n g.insert('rect', ':first-child').attr('class', 'box').attr('x', bounds.x - conf.padding / 2).attr('y', bounds.y - conf.padding / 2).attr('width', bounds.width + conf.padding).attr('height', bounds.height + conf.padding);\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Rendering relation ' + JSON.stringify(relation));\n\n if (typeof relation.relationTitle1 !== 'undefined' && relation.relationTitle1 !== 'none') {\n var _g = elem.append('g').attr('class', 'cardinality');\n\n _g.append('text').attr('class', 'type1').attr('x', p1_card_x).attr('y', p1_card_y).attr('fill', 'black').attr('font-size', '6').text(relation.relationTitle1);\n }\n\n if (typeof relation.relationTitle2 !== 'undefined' && relation.relationTitle2 !== 'none') {\n var _g2 = elem.append('g').attr('class', 'cardinality');\n\n _g2.append('text').attr('class', 'type2').attr('x', p2_card_x).attr('y', p2_card_y).attr('fill', 'black').attr('font-size', '6').text(relation.relationTitle2);\n }\n\n edgeCount++;\n};\nvar drawClass = function drawClass(elem, classDef, conf) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('Rendering class ' + classDef);\n var id = classDef.id;\n var classInfo = {\n id: id,\n label: classDef.id,\n width: 0,\n height: 0\n }; // add class group\n\n var g = elem.append('g').attr('id', Object(_classDb__WEBPACK_IMPORTED_MODULE_1__[\"lookUpDomId\"])(id)).attr('class', 'classGroup'); // add title\n\n var title;\n\n if (classDef.link) {\n title = g.append('svg:a').attr('xlink:href', classDef.link).attr('target', classDef.linkTarget).append('text').attr('y', conf.textHeight + conf.padding).attr('x', 0);\n } else {\n title = g.append('text').attr('y', conf.textHeight + conf.padding).attr('x', 0);\n } // add annotations\n\n\n var isFirst = true;\n classDef.annotations.forEach(function (member) {\n var titleText2 = title.append('tspan').text('«' + member + '»');\n if (!isFirst) titleText2.attr('dy', conf.textHeight);\n isFirst = false;\n });\n var classTitleString = classDef.id;\n\n if (classDef.type !== undefined && classDef.type !== '') {\n classTitleString += '<' + classDef.type + '>';\n }\n\n var classTitle = title.append('tspan').text(classTitleString).attr('class', 'title'); // If class has annotations the title needs to have an offset of the text height\n\n if (!isFirst) classTitle.attr('dy', conf.textHeight);\n var titleHeight = title.node().getBBox().height;\n var membersLine = g.append('line') // text label for the x axis\n .attr('x1', 0).attr('y1', conf.padding + titleHeight + conf.dividerMargin / 2).attr('y2', conf.padding + titleHeight + conf.dividerMargin / 2);\n var members = g.append('text') // text label for the x axis\n .attr('x', conf.padding).attr('y', titleHeight + conf.dividerMargin + conf.textHeight).attr('fill', 'white').attr('class', 'classText');\n isFirst = true;\n classDef.members.forEach(function (member) {\n addTspan(members, member, isFirst, conf);\n isFirst = false;\n });\n var membersBox = members.node().getBBox();\n var methodsLine = g.append('line') // text label for the x axis\n .attr('x1', 0).attr('y1', conf.padding + titleHeight + conf.dividerMargin + membersBox.height).attr('y2', conf.padding + titleHeight + conf.dividerMargin + membersBox.height);\n var methods = g.append('text') // text label for the x axis\n .attr('x', conf.padding).attr('y', titleHeight + 2 * conf.dividerMargin + membersBox.height + conf.textHeight).attr('fill', 'white').attr('class', 'classText');\n isFirst = true;\n classDef.methods.forEach(function (method) {\n addTspan(methods, method, isFirst, conf);\n isFirst = false;\n });\n var classBox = g.node().getBBox();\n var cssClassStr = ' ';\n\n if (classDef.cssClasses.length > 0) {\n cssClassStr = cssClassStr + classDef.cssClasses.join(' ');\n }\n\n var rect = g.insert('rect', ':first-child').attr('x', 0).attr('y', 0).attr('width', classBox.width + 2 * conf.padding).attr('height', classBox.height + conf.padding + 0.5 * conf.dividerMargin).attr('class', cssClassStr);\n var rectWidth = rect.node().getBBox().width; // Center title\n // We subtract the width of each text element from the class box width and divide it by 2\n\n title.node().childNodes.forEach(function (x) {\n x.setAttribute('x', (rectWidth - x.getBBox().width) / 2);\n });\n\n if (classDef.tooltip) {\n title.insert('title').text(classDef.tooltip);\n }\n\n membersLine.attr('x2', rectWidth);\n methodsLine.attr('x2', rectWidth);\n classInfo.width = rectWidth;\n classInfo.height = classBox.height + conf.padding + 0.5 * conf.dividerMargin;\n return classInfo;\n};\nvar parseMember = function parseMember(text) {\n var fieldRegEx = /(\\+|-|~|#)?(\\w+)(~\\w+~|\\[\\])?\\s+(\\w+)/;\n var methodRegEx = /^([+|\\-|~|#])?(\\w+) *\\( *(.*)\\) *(\\*|\\$)? *(\\w*[~|[\\]]*\\s*\\w*~?)$/;\n var fieldMatch = text.match(fieldRegEx);\n var methodMatch = text.match(methodRegEx);\n\n if (fieldMatch && !methodMatch) {\n return buildFieldDisplay(fieldMatch);\n } else if (methodMatch) {\n return buildMethodDisplay(methodMatch);\n } else {\n return buildLegacyDisplay(text);\n }\n};\n\nvar buildFieldDisplay = function buildFieldDisplay(parsedText) {\n var displayText = '';\n\n try {\n var visibility = parsedText[1] ? parsedText[1].trim() : '';\n var fieldType = parsedText[2] ? parsedText[2].trim() : '';\n var genericType = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n var fieldName = parsedText[4] ? parsedText[4].trim() : '';\n displayText = visibility + fieldType + genericType + ' ' + fieldName;\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: ''\n };\n};\n\nvar buildMethodDisplay = function buildMethodDisplay(parsedText) {\n var cssStyle = '';\n var displayText = '';\n\n try {\n var visibility = parsedText[1] ? parsedText[1].trim() : '';\n var methodName = parsedText[2] ? parsedText[2].trim() : '';\n var parameters = parsedText[3] ? parseGenericTypes(parsedText[3].trim()) : '';\n var classifier = parsedText[4] ? parsedText[4].trim() : '';\n var returnType = parsedText[5] ? ' : ' + parseGenericTypes(parsedText[5]).trim() : '';\n displayText = visibility + methodName + '(' + parameters + ')' + returnType;\n cssStyle = parseClassifier(classifier);\n } catch (err) {\n displayText = parsedText;\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle\n };\n};\n\nvar buildLegacyDisplay = function buildLegacyDisplay(text) {\n // if for some reason we dont have any match, use old format to parse text\n var displayText = '';\n var cssStyle = '';\n var memberText = '';\n var returnType = '';\n var methodStart = text.indexOf('(');\n var methodEnd = text.indexOf(')');\n\n if (methodStart > 1 && methodEnd > methodStart && methodEnd <= text.length) {\n var visibility = '';\n var methodName = '';\n var firstChar = text.substring(0, 1);\n\n if (firstChar.match(/\\w/)) {\n methodName = text.substring(0, methodStart).trim();\n } else {\n if (firstChar.match(/\\+|-|~|#/)) {\n visibility = firstChar;\n }\n\n methodName = text.substring(1, methodStart).trim();\n }\n\n var parameters = text.substring(methodStart + 1, methodEnd);\n var classifier = text.substring(methodEnd + 1, 1);\n cssStyle = parseClassifier(classifier);\n displayText = visibility + methodName + '(' + parseGenericTypes(parameters.trim()) + ')';\n\n if (methodEnd < memberText.length) {\n returnType = text.substring(methodEnd + 2).trim();\n\n if (returnType !== '') {\n returnType = ' : ' + parseGenericTypes(returnType);\n }\n }\n } else {\n // finally - if all else fails, just send the text back as written (other than parsing for generic types)\n displayText = parseGenericTypes(text);\n }\n\n return {\n displayText: displayText,\n cssStyle: cssStyle\n };\n};\n\nvar addTspan = function addTspan(textEl, txt, isFirst, conf) {\n var member = parseMember(txt);\n var tSpan = textEl.append('tspan').attr('x', conf.padding).text(member.displayText);\n\n if (member.cssStyle !== '') {\n tSpan.attr('style', member.cssStyle);\n }\n\n if (!isFirst) {\n tSpan.attr('dy', conf.textHeight);\n }\n};\n\nvar parseGenericTypes = function parseGenericTypes(text) {\n var cleanedText = text;\n\n if (text.indexOf('~') != -1) {\n cleanedText = cleanedText.replace('~', '<');\n cleanedText = cleanedText.replace('~', '>');\n return parseGenericTypes(cleanedText);\n } else {\n return cleanedText;\n }\n};\n\nvar parseClassifier = function parseClassifier(classifier) {\n switch (classifier) {\n case '*':\n return 'font-style:italic;';\n\n case '$':\n return 'text-decoration:underline;';\n\n default:\n return '';\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawClass: drawClass,\n drawEdge: drawEdge,\n parseMember: parseMember\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/common/common.js\":\n/*!***************************************!*\\\n !*** ./src/diagrams/common/common.js ***!\n \\***************************************/\n/*! exports provided: getRows, removeScript, sanitizeText, lineBreakRegex, hasBreaks, splitBreaks, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRows\", function() { return getRows; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeScript\", function() { return removeScript; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"sanitizeText\", function() { return sanitizeText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineBreakRegex\", function() { return lineBreakRegex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasBreaks\", function() { return hasBreaks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitBreaks\", function() { return splitBreaks; });\nvar getRows = function getRows(s) {\n if (!s) return 1;\n var str = breakToPlaceholder(s);\n str = str.replace(/\\\\n/g, '#br#');\n return str.split('#br#');\n};\nvar removeScript = function removeScript(txt) {\n var rs = '';\n var idx = 0;\n\n while (idx >= 0) {\n idx = txt.indexOf('<script');\n\n if (idx >= 0) {\n rs += txt.substr(0, idx);\n txt = txt.substr(idx + 1);\n idx = txt.indexOf('</script>');\n\n if (idx >= 0) {\n idx += 9;\n txt = txt.substr(idx);\n }\n } else {\n rs += txt;\n idx = -1;\n break;\n }\n }\n\n return rs;\n};\nvar sanitizeText = function sanitizeText(text, config) {\n var txt = text;\n var htmlLabels = true;\n\n if (config.flowchart && (config.flowchart.htmlLabels === false || config.flowchart.htmlLabels === 'false')) {\n htmlLabels = false;\n }\n\n if (htmlLabels) {\n var level = config.securityLevel;\n\n if (level === 'antiscript') {\n txt = removeScript(txt);\n } else if (level !== 'loose') {\n // eslint-disable-line\n txt = breakToPlaceholder(txt);\n txt = txt.replace(/</g, '<').replace(/>/g, '>');\n txt = txt.replace(/=/g, '=');\n txt = placeholderToBreak(txt);\n }\n }\n\n return txt;\n};\nvar lineBreakRegex = /<br\\s*\\/?>/gi;\nvar hasBreaks = function hasBreaks(text) {\n return /<br\\s*[/]?>/gi.test(text);\n};\nvar splitBreaks = function splitBreaks(text) {\n return text.split(/<br\\s*[/]?>/gi);\n};\n\nvar breakToPlaceholder = function breakToPlaceholder(s) {\n return s.replace(lineBreakRegex, '#br#');\n};\n\nvar placeholderToBreak = function placeholderToBreak(s) {\n return s.replace(/#br#/g, '<br/>');\n};\n\nvar getUrl = function getUrl(useAbsolute) {\n var url = '';\n\n if (useAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n return url;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getRows: getRows,\n sanitizeText: sanitizeText,\n hasBreaks: hasBreaks,\n splitBreaks: splitBreaks,\n lineBreakRegex: lineBreakRegex,\n removeScript: removeScript,\n getUrl: getUrl\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/er/erDb.js\":\n/*!*********************************!*\\\n !*** ./src/diagrams/er/erDb.js ***!\n \\*********************************/\n/*! exports provided: parseDirective, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/**\n *\n */\n\n\n\nvar entities = {};\nvar relationships = [];\nvar title = '';\nvar Cardinality = {\n ZERO_OR_ONE: 'ZERO_OR_ONE',\n ZERO_OR_MORE: 'ZERO_OR_MORE',\n ONE_OR_MORE: 'ONE_OR_MORE',\n ONLY_ONE: 'ONLY_ONE'\n};\nvar Identification = {\n NON_IDENTIFYING: 'NON_IDENTIFYING',\n IDENTIFYING: 'IDENTIFYING'\n};\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parseDirective(this, statement, context, type);\n};\n\nvar addEntity = function addEntity(name) {\n if (typeof entities[name] === 'undefined') {\n entities[name] = {\n attributes: []\n };\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Added new entity :', name);\n }\n\n return entities[name];\n};\n\nvar getEntities = function getEntities() {\n return entities;\n};\n\nvar addAttributes = function addAttributes(entityName, attribs) {\n var entity = addEntity(entityName); // May do nothing (if entity has already been added)\n // Process attribs in reverse order due to effect of recursive construction (last attribute is first)\n\n var i;\n\n for (i = attribs.length - 1; i >= 0; i--) {\n entity.attributes.push(attribs[i]);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Added attribute ', attribs[i].attributeName);\n }\n};\n/**\n * Add a relationship\n * @param entA The first entity in the relationship\n * @param rolA The role played by the first entity in relation to the second\n * @param entB The second entity in the relationship\n * @param rSpec The details of the relationship between the two entities\n */\n\n\nvar addRelationship = function addRelationship(entA, rolA, entB, rSpec) {\n var rel = {\n entityA: entA,\n roleA: rolA,\n entityB: entB,\n relSpec: rSpec\n };\n relationships.push(rel);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Added new relationship :', rel);\n};\n\nvar getRelationships = function getRelationships() {\n return relationships;\n}; // Keep this - TODO: revisit...allow the diagram to have a title\n\n\nvar setTitle = function setTitle(txt) {\n title = txt;\n};\n\nvar getTitle = function getTitle() {\n return title;\n};\n\nvar clear = function clear() {\n entities = {};\n relationships = [];\n title = '';\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n Cardinality: Cardinality,\n Identification: Identification,\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]().er;\n },\n addEntity: addEntity,\n addAttributes: addAttributes,\n getEntities: getEntities,\n addRelationship: addRelationship,\n getRelationships: getRelationships,\n clear: clear,\n setTitle: setTitle,\n getTitle: getTitle\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/er/erMarkers.js\":\n/*!**************************************!*\\\n !*** ./src/diagrams/er/erMarkers.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar ERMarkers = {\n ONLY_ONE_START: 'ONLY_ONE_START',\n ONLY_ONE_END: 'ONLY_ONE_END',\n ZERO_OR_ONE_START: 'ZERO_OR_ONE_START',\n ZERO_OR_ONE_END: 'ZERO_OR_ONE_END',\n ONE_OR_MORE_START: 'ONE_OR_MORE_START',\n ONE_OR_MORE_END: 'ONE_OR_MORE_END',\n ZERO_OR_MORE_START: 'ZERO_OR_MORE_START',\n ZERO_OR_MORE_END: 'ZERO_OR_MORE_END'\n};\n/**\n * Put the markers into the svg DOM for later use with edge paths\n */\n\nvar insertMarkers = function insertMarkers(elem, conf) {\n var marker;\n elem.append('defs').append('marker').attr('id', ERMarkers.ONLY_ONE_START).attr('refX', 0).attr('refY', 9).attr('markerWidth', 18).attr('markerHeight', 18).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M9,0 L9,18 M15,0 L15,18');\n elem.append('defs').append('marker').attr('id', ERMarkers.ONLY_ONE_END).attr('refX', 18).attr('refY', 9).attr('markerWidth', 18).attr('markerHeight', 18).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M3,0 L3,18 M9,0 L9,18');\n marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_ONE_START).attr('refX', 0).attr('refY', 9).attr('markerWidth', 30).attr('markerHeight', 18).attr('orient', 'auto');\n marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 21).attr('cy', 9).attr('r', 6);\n marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M9,0 L9,18');\n marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_ONE_END).attr('refX', 30).attr('refY', 9).attr('markerWidth', 30).attr('markerHeight', 18).attr('orient', 'auto');\n marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 9).attr('cy', 9).attr('r', 6);\n marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M21,0 L21,18');\n elem.append('defs').append('marker').attr('id', ERMarkers.ONE_OR_MORE_START).attr('refX', 18).attr('refY', 18).attr('markerWidth', 45).attr('markerHeight', 36).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27');\n elem.append('defs').append('marker').attr('id', ERMarkers.ONE_OR_MORE_END).attr('refX', 27).attr('refY', 18).attr('markerWidth', 45).attr('markerHeight', 36).attr('orient', 'auto').append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18');\n marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_MORE_START).attr('refX', 18).attr('refY', 18).attr('markerWidth', 57).attr('markerHeight', 36).attr('orient', 'auto');\n marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 48).attr('cy', 18).attr('r', 6);\n marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M0,18 Q18,0 36,18 Q18,36 0,18');\n marker = elem.append('defs').append('marker').attr('id', ERMarkers.ZERO_OR_MORE_END).attr('refX', 39).attr('refY', 18).attr('markerWidth', 57).attr('markerHeight', 36).attr('orient', 'auto');\n marker.append('circle').attr('stroke', conf.stroke).attr('fill', 'white').attr('cx', 9).attr('cy', 18).attr('r', 6);\n marker.append('path').attr('stroke', conf.stroke).attr('fill', 'none').attr('d', 'M21,18 Q39,0 57,18 Q39,36 21,18');\n return;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ERMarkers: ERMarkers,\n insertMarkers: insertMarkers\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/er/erRenderer.js\":\n/*!***************************************!*\\\n !*** ./src/diagrams/er/erRenderer.js ***!\n \\***************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _erDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./erDb */ \"./src/diagrams/er/erDb.js\");\n/* harmony import */ var _parser_erDiagram__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/erDiagram */ \"./src/diagrams/er/parser/erDiagram.jison\");\n/* harmony import */ var _parser_erDiagram__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_erDiagram__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dagre */ \"dagre\");\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _erMarkers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./erMarkers */ \"./src/diagrams/er/erMarkers.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n\n\n\nvar conf = {};\n/**\n * Allows the top-level API module to inject config specific to this renderer,\n * storing it in the local conf object. Note that generic config still needs to be\n * retrieved using getConfig() imported from the config module\n */\n\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n\n for (var i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n/**\n * Draw attributes for an entity\n * @param groupNode the svg group node for the entity\n * @param entityTextNode the svg node for the entity label text\n * @param attributes an array of attributes defined for the entity (each attribute has a type and a name)\n * @return the bounding box of the entity, after attributes have been added\n */\n\nvar drawAttributes = function drawAttributes(groupNode, entityTextNode, attributes) {\n var heightPadding = conf.entityPadding / 3; // Padding internal to attribute boxes\n\n var widthPadding = conf.entityPadding / 3; // Ditto\n\n var attrFontSize = conf.fontSize * 0.85;\n var labelBBox = entityTextNode.node().getBBox();\n var attributeNodes = []; // Intermediate storage for attribute nodes created so that we can do a second pass\n\n var maxTypeWidth = 0;\n var maxNameWidth = 0;\n var cumulativeHeight = labelBBox.height + heightPadding * 2;\n var attrNum = 1;\n attributes.forEach(function (item) {\n var attrPrefix = \"\".concat(entityTextNode.node().id, \"-attr-\").concat(attrNum); // Add a text node for the attribute type\n\n var typeNode = groupNode.append('text').attr('class', 'er entityLabel').attr('id', \"\".concat(attrPrefix, \"-type\")).attr('x', 0).attr('y', 0).attr('dominant-baseline', 'middle').attr('text-anchor', 'left').attr('style', 'font-family: ' + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().fontFamily + '; font-size: ' + attrFontSize + 'px').text(item.attributeType); // Add a text node for the attribute name\n\n var nameNode = groupNode.append('text').attr('class', 'er entityLabel').attr('id', \"\".concat(attrPrefix, \"-name\")).attr('x', 0).attr('y', 0).attr('dominant-baseline', 'middle').attr('text-anchor', 'left').attr('style', 'font-family: ' + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().fontFamily + '; font-size: ' + attrFontSize + 'px').text(item.attributeName); // Keep a reference to the nodes so that we can iterate through them later\n\n attributeNodes.push({\n tn: typeNode,\n nn: nameNode\n });\n var typeBBox = typeNode.node().getBBox();\n var nameBBox = nameNode.node().getBBox();\n maxTypeWidth = Math.max(maxTypeWidth, typeBBox.width);\n maxNameWidth = Math.max(maxNameWidth, nameBBox.width);\n cumulativeHeight += Math.max(typeBBox.height, nameBBox.height) + heightPadding * 2;\n attrNum += 1;\n }); // Calculate the new bounding box of the overall entity, now that attributes have been added\n\n var bBox = {\n width: Math.max(conf.minEntityWidth, Math.max(labelBBox.width + conf.entityPadding * 2, maxTypeWidth + maxNameWidth + widthPadding * 4)),\n height: attributes.length > 0 ? cumulativeHeight : Math.max(conf.minEntityHeight, labelBBox.height + conf.entityPadding * 2)\n }; // There might be some spare width for padding out attributes if the entity name is very long\n\n var spareWidth = Math.max(0, bBox.width - (maxTypeWidth + maxNameWidth) - widthPadding * 4);\n\n if (attributes.length > 0) {\n // Position the entity label near the top of the entity bounding box\n entityTextNode.attr('transform', 'translate(' + bBox.width / 2 + ',' + (heightPadding + labelBBox.height / 2) + ')'); // Add rectangular boxes for the attribute types/names\n\n var heightOffset = labelBBox.height + heightPadding * 2; // Start at the bottom of the entity label\n\n var attribStyle = 'attributeBoxOdd'; // We will flip the style on alternate rows to achieve a banded effect\n\n attributeNodes.forEach(function (nodePair) {\n // Calculate the alignment y co-ordinate for the type/name of the attribute\n var alignY = heightOffset + heightPadding + Math.max(nodePair.tn.node().getBBox().height, nodePair.nn.node().getBBox().height) / 2; // Position the type of the attribute\n\n nodePair.tn.attr('transform', 'translate(' + widthPadding + ',' + alignY + ')'); // Insert a rectangle for the type\n\n var typeRect = groupNode.insert('rect', '#' + nodePair.tn.node().id).attr('class', \"er \".concat(attribStyle)).attr('fill', conf.fill).attr('fill-opacity', '100%').attr('stroke', conf.stroke).attr('x', 0).attr('y', heightOffset).attr('width', maxTypeWidth + widthPadding * 2 + spareWidth / 2).attr('height', nodePair.tn.node().getBBox().height + heightPadding * 2); // Position the name of the attribute\n\n nodePair.nn.attr('transform', 'translate(' + (parseFloat(typeRect.attr('width')) + widthPadding) + ',' + alignY + ')'); // Insert a rectangle for the name\n\n groupNode.insert('rect', '#' + nodePair.nn.node().id).attr('class', \"er \".concat(attribStyle)).attr('fill', conf.fill).attr('fill-opacity', '100%').attr('stroke', conf.stroke).attr('x', \"\".concat(typeRect.attr('x') + typeRect.attr('width'))) //.attr('x', maxTypeWidth + (widthPadding * 2))\n .attr('y', heightOffset).attr('width', maxNameWidth + widthPadding * 2 + spareWidth / 2).attr('height', nodePair.nn.node().getBBox().height + heightPadding * 2); // Increment the height offset to move to the next row\n\n heightOffset += Math.max(nodePair.tn.node().getBBox().height, nodePair.nn.node().getBBox().height) + heightPadding * 2; // Flip the attribute style for row banding\n\n attribStyle = attribStyle == 'attributeBoxOdd' ? 'attributeBoxEven' : 'attributeBoxOdd';\n });\n } else {\n // Ensure the entity box is a decent size without any attributes\n bBox.height = Math.max(conf.minEntityHeight, cumulativeHeight); // Position the entity label in the middle of the box\n\n entityTextNode.attr('transform', 'translate(' + bBox.width / 2 + ',' + bBox.height / 2 + ')');\n }\n\n return bBox;\n};\n/**\n * Use D3 to construct the svg elements for the entities\n * @param svgNode the svg node that contains the diagram\n * @param entities The entities to be drawn\n * @param graph The graph that contains the vertex and edge definitions post-layout\n * @return The first entity that was inserted\n */\n\n\nvar drawEntities = function drawEntities(svgNode, entities, graph) {\n var keys = Object.keys(entities);\n var firstOne;\n keys.forEach(function (id) {\n // Create a group for each entity\n var groupNode = svgNode.append('g').attr('id', id);\n firstOne = firstOne === undefined ? id : firstOne; // Label the entity - this is done first so that we can get the bounding box\n // which then determines the size of the rectangle\n\n var textId = 'entity-' + id;\n var textNode = groupNode.append('text').attr('class', 'er entityLabel').attr('id', textId).attr('x', 0).attr('y', 0).attr('dominant-baseline', 'middle').attr('text-anchor', 'middle').attr('style', 'font-family: ' + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().fontFamily + '; font-size: ' + conf.fontSize + 'px').text(id);\n\n var _drawAttributes = drawAttributes(groupNode, textNode, entities[id].attributes),\n entityWidth = _drawAttributes.width,\n entityHeight = _drawAttributes.height; // Draw the rectangle - insert it before the text so that the text is not obscured\n\n\n var rectNode = groupNode.insert('rect', '#' + textId).attr('class', 'er entityBox').attr('fill', conf.fill).attr('fill-opacity', '100%').attr('stroke', conf.stroke).attr('x', 0).attr('y', 0).attr('width', entityWidth).attr('height', entityHeight);\n var rectBBox = rectNode.node().getBBox(); // Add the entity to the graph\n\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id\n });\n });\n return firstOne;\n}; // drawEntities\n\n\nvar adjustEntities = function adjustEntities(svgNode, graph) {\n graph.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode.select('#' + v).attr('transform', 'translate(' + (graph.node(v).x - graph.node(v).width / 2) + ',' + (graph.node(v).y - graph.node(v).height / 2) + ' )');\n }\n });\n return;\n};\n\nvar getEdgeName = function getEdgeName(rel) {\n return (rel.entityA + rel.roleA + rel.entityB).replace(/\\s/g, '');\n};\n/**\n * Add each relationship to the graph\n * @param relationships the relationships to be added\n * @param g the graph\n * @return {Array} The array of relationships\n */\n\n\nvar addRelationships = function addRelationships(relationships, g) {\n relationships.forEach(function (r) {\n g.setEdge(r.entityA, r.entityB, {\n relationship: r\n }, getEdgeName(r));\n });\n return relationships;\n}; // addRelationships\n\n\nvar relCnt = 0;\n/**\n * Draw a relationship using edge information from the graph\n * @param svg the svg node\n * @param rel the relationship to draw in the svg\n * @param g the graph containing the edge information\n * @param insert the insertion point in the svg DOM (because relationships have markers that need to sit 'behind' opaque entity boxes)\n */\n\nvar drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g, insert) {\n relCnt++; // Find the edge relating to this relationship\n\n var edge = g.edge(rel.entityA, rel.entityB, getEdgeName(rel)); // Get a function that will generate the line path\n\n var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"line\"])().x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }).curve(d3__WEBPACK_IMPORTED_MODULE_1__[\"curveBasis\"]); // Insert the line at the right place\n\n var svgPath = svg.insert('path', '#' + insert).attr('class', 'er relationshipLine').attr('d', lineFunction(edge.points)).attr('stroke', conf.stroke).attr('fill', 'none'); // ...and with dashes if necessary\n\n if (rel.relSpec.relType === _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Identification.NON_IDENTIFYING) {\n svgPath.attr('stroke-dasharray', '8,8');\n } // TODO: Understand this better\n\n\n var url = '';\n\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n } // Decide which start and end markers it needs. It may be possible to be more concise here\n // by reversing a start marker to make an end marker...but this will do for now\n // Note that the 'A' entity's marker is at the end of the relationship and the 'B' entity's marker is at the start\n\n\n switch (rel.relSpec.cardA) {\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ZERO_OR_ONE_END + ')');\n break;\n\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ZERO_OR_MORE_END + ')');\n break;\n\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ONE_OR_MORE_END + ')');\n break;\n\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ONLY_ONE:\n svgPath.attr('marker-end', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ONLY_ONE_END + ')');\n break;\n }\n\n switch (rel.relSpec.cardB) {\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ZERO_OR_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ZERO_OR_ONE_START + ')');\n break;\n\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ZERO_OR_MORE:\n svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ZERO_OR_MORE_START + ')');\n break;\n\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ONE_OR_MORE:\n svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ONE_OR_MORE_START + ')');\n break;\n\n case _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].Cardinality.ONLY_ONE:\n svgPath.attr('marker-start', 'url(' + url + '#' + _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].ERMarkers.ONLY_ONE_START + ')');\n break;\n } // Now label the relationship\n // Find the half-way point\n\n\n var len = svgPath.node().getTotalLength();\n var labelPoint = svgPath.node().getPointAtLength(len * 0.5); // Append a text node containing the label\n\n var labelId = 'rel' + relCnt;\n var labelNode = svg.append('text').attr('class', 'er relationshipLabel').attr('id', labelId).attr('x', labelPoint.x).attr('y', labelPoint.y).attr('text-anchor', 'middle').attr('dominant-baseline', 'middle').attr('style', 'font-family: ' + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().fontFamily + '; font-size: ' + conf.fontSize + 'px').text(rel.roleA); // Figure out how big the opaque 'container' rectangle needs to be\n\n var labelBBox = labelNode.node().getBBox(); // Insert the opaque rectangle before the text label\n\n svg.insert('rect', '#' + labelId).attr('class', 'er relationshipLabelBox').attr('x', labelPoint.x - labelBBox.width / 2).attr('y', labelPoint.y - labelBBox.height / 2).attr('width', labelBBox.width).attr('height', labelBBox.height).attr('fill', 'white').attr('fill-opacity', '85%');\n return;\n};\n/**\n * Draw en E-R diagram in the tag with id: id based on the text definition of the diagram\n * @param text the text of the diagram\n * @param id the unique id of the DOM node that contains the diagram\n */\n\n\nvar draw = function draw(text, id) {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info('Drawing ER diagram');\n _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n var parser = _parser_erDiagram__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; // Parse the text to populate erDb\n\n try {\n parser.parse(text);\n } catch (err) {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].debug('Parsing failed');\n } // Get a reference to the svg node that contains the text\n\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(\"[id='\".concat(id, \"']\")); // Add cardinality marker definitions to the svg\n\n _erMarkers__WEBPACK_IMPORTED_MODULE_7__[\"default\"].insertMarkers(svg, conf); // Now we have to construct the diagram in a specific way:\n // ---\n // 1. Create all the entities in the svg node at 0,0, but with the correct dimensions (allowing for text content)\n // 2. Make sure they are all added to the graph\n // 3. Add all the edges (relationships) to the graph aswell\n // 4. Let dagre do its magic to layout the graph. This assigns:\n // - the centre co-ordinates for each node, bearing in mind the dimensions and edge relationships\n // - the path co-ordinates for each edge\n // But it has no impact on the svg child nodes - the diagram remains with every entity rooted at 0,0\n // 5. Now assign a transform to each entity in the svg node so that it gets drawn in the correct place, as determined by\n // its centre point, which is obtained from the graph, and it's width and height\n // 6. And finally, create all the edges in the svg node using information from the graph\n // ---\n // Create the graph\n\n var g; // TODO: Explore directed vs undirected graphs, and how the layout is affected\n // An E-R diagram could be said to be undirected, but there is merit in setting\n // the direction from parent to child in a one-to-many as this influences graphlib to\n // put the parent above the child (does it?), which is intuitive. Most relationships\n // in ER diagrams are one-to-many.\n\n g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({\n multigraph: true,\n directed: true,\n compound: false\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function () {\n return {};\n }); // Draw the entities (at 0,0), returning the first svg node that got\n // inserted - this represents the insertion point for relationship paths\n\n var firstEntity = drawEntities(svg, _erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getEntities(), g); // TODO: externalise the addition of entities to the graph - it's a bit 'buried' in the above\n // Add all the relationships to the graph\n\n var relationships = addRelationships(_erDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRelationships(), g);\n dagre__WEBPACK_IMPORTED_MODULE_4___default.a.layout(g); // Node and edge positions will be updated\n // Adjust the positions of the entities so that they adhere to the layout\n\n adjustEntities(svg, g); // Draw the relationships\n\n relationships.forEach(function (rel) {\n drawRelationshipFromLayout(svg, rel, g, firstEntity);\n });\n var padding = conf.diagramPadding;\n var svgBounds = svg.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n Object(_utils__WEBPACK_IMPORTED_MODULE_8__[\"configureSvgSize\"])(svg, height, width, conf.useMaxWidth);\n svg.attr('viewBox', \"\".concat(svgBounds.x - padding, \" \").concat(svgBounds.y - padding, \" \").concat(width, \" \").concat(height));\n}; // draw\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/er/parser/erDiagram.jison\":\n/*!************************************************!*\\\n !*** ./src/diagrams/er/parser/erDiagram.jison ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,23,37],$V3=[1,17],$V4=[1,20],$V5=[1,25],$V6=[1,26],$V7=[1,27],$V8=[1,28],$V9=[1,37],$Va=[23,34,35],$Vb=[4,6,9,11,23,37],$Vc=[30,31,32,33],$Vd=[22,27];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"ER_DIAGRAM\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"entityName\":17,\"relSpec\":18,\"role\":19,\"BLOCK_START\":20,\"attributes\":21,\"BLOCK_STOP\":22,\"ALPHANUM\":23,\"attribute\":24,\"attributeType\":25,\"attributeName\":26,\"ATTRIBUTE_WORD\":27,\"cardinality\":28,\"relType\":29,\"ZERO_OR_ONE\":30,\"ZERO_OR_MORE\":31,\"ONE_OR_MORE\":32,\"ONLY_ONE\":33,\"NON_IDENTIFYING\":34,\"IDENTIFYING\":35,\"WORD\":36,\"open_directive\":37,\"type_directive\":38,\"arg_directive\":39,\"close_directive\":40,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"ER_DIAGRAM\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",20:\"BLOCK_START\",22:\"BLOCK_STOP\",23:\"ALPHANUM\",27:\"ATTRIBUTE_WORD\",30:\"ZERO_OR_ONE\",31:\"ZERO_OR_MORE\",32:\"ONE_OR_MORE\",33:\"ONLY_ONE\",34:\"NON_IDENTIFYING\",35:\"IDENTIFYING\",36:\"WORD\",37:\"open_directive\",38:\"type_directive\",39:\"arg_directive\",40:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,5],[10,4],[10,3],[10,1],[17,1],[21,1],[21,2],[24,2],[25,1],[26,1],[18,3],[28,1],[28,1],[28,1],[28,1],[29,1],[29,1],[19,1],[19,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n /*console.log('finished parsing');*/ \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 12:\n\n yy.addEntity($$[$0-4]);\n yy.addEntity($$[$0-2]);\n yy.addRelationship($$[$0-4], $$[$0], $$[$0-2], $$[$0-3]);\n /*console.log($$[$0-4] + $$[$0-3] + $$[$0-2] + ':' + $$[$0]);*/\n \nbreak;\ncase 13:\n\n /* console.log('detected block'); */\n yy.addEntity($$[$0-3]);\n yy.addAttributes($$[$0-3], $$[$0-1]);\n /* console.log('handled block'); */\n \nbreak;\ncase 14:\n yy.addEntity($$[$0-2]); \nbreak;\ncase 15:\n yy.addEntity($$[$0]); \nbreak;\ncase 16:\n this.$ = $$[$0]; /*console.log('Entity: ' + $$[$0]);*/ \nbreak;\ncase 17:\n this.$ = [$$[$0]]; \nbreak;\ncase 18:\n $$[$0].push($$[$0-1]); this.$=$$[$0]; \nbreak;\ncase 19:\n this.$ = { attributeType: $$[$0-1], attributeName: $$[$0] }; \nbreak;\ncase 20: case 21:\n this.$=$$[$0]; \nbreak;\ncase 22:\n\n this.$ = { cardA: $$[$0], relType: $$[$0-1], cardB: $$[$0-2] };\n /*console.log('relSpec: ' + $$[$0] + $$[$0-1] + $$[$0-2]);*/\n \nbreak;\ncase 23:\n this.$ = yy.Cardinality.ZERO_OR_ONE; \nbreak;\ncase 24:\n this.$ = yy.Cardinality.ZERO_OR_MORE; \nbreak;\ncase 25:\n this.$ = yy.Cardinality.ONE_OR_MORE; \nbreak;\ncase 26:\n this.$ = yy.Cardinality.ONLY_ONE; \nbreak;\ncase 27:\n this.$ = yy.Identification.NON_IDENTIFYING; \nbreak;\ncase 28:\n this.$ = yy.Identification.IDENTIFYING; \nbreak;\ncase 29:\n this.$ = $$[$0].replace(/\"/g, ''); \nbreak;\ncase 30:\n this.$ = $$[$0]; \nbreak;\ncase 31:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 32:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 33:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 34:\n yy.parseDirective('}%%', 'close_directive', 'er'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,37:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,37:$V1},{13:8,38:[1,9]},{38:[2,31]},{6:[1,10],7:15,8:11,9:[1,12],10:13,11:[1,14],12:4,17:16,23:$V3,37:$V1},{1:[2,2]},{14:18,15:[1,19],40:$V4},o([15,40],[2,32]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:15,10:21,12:4,17:16,23:$V3,37:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,15],{18:22,28:24,20:[1,23],30:$V5,31:$V6,32:$V7,33:$V8}),o([6,9,11,15,20,23,30,31,32,33,37],[2,16]),{11:[1,29]},{16:30,39:[1,31]},{11:[2,34]},o($V2,[2,5]),{17:32,23:$V3},{21:33,22:[1,34],24:35,25:36,27:$V9},{29:38,34:[1,39],35:[1,40]},o($Va,[2,23]),o($Va,[2,24]),o($Va,[2,25]),o($Va,[2,26]),o($Vb,[2,9]),{14:41,40:$V4},{40:[2,33]},{15:[1,42]},{22:[1,43]},o($V2,[2,14]),{21:44,22:[2,17],24:35,25:36,27:$V9},{26:45,27:[1,46]},{27:[2,20]},{28:47,30:$V5,31:$V6,32:$V7,33:$V8},o($Vc,[2,27]),o($Vc,[2,28]),{11:[1,48]},{19:49,23:[1,51],36:[1,50]},o($V2,[2,13]),{22:[2,18]},o($Vd,[2,19]),o($Vd,[2,21]),{23:[2,22]},o($Vb,[2,10]),o($V2,[2,12]),o($V2,[2,29]),o($V2,[2,30])],\ndefaultActions: {5:[2,31],7:[2,2],20:[2,34],31:[2,33],37:[2,20],44:[2,18],47:[2,22]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 37; \nbreak;\ncase 1: this.begin('type_directive'); return 38; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 40; \nbreak;\ncase 4:return 39;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:return 9;\nbreak;\ncase 10:return 36;\nbreak;\ncase 11:return 4;\nbreak;\ncase 12: this.begin(\"block\"); return 20; \nbreak;\ncase 13:/* skip whitespace in block */\nbreak;\ncase 14: return 27; \nbreak;\ncase 15:/* nothing */\nbreak;\ncase 16: this.popState(); return 22; \nbreak;\ncase 17:return yy_.yytext[0];\nbreak;\ncase 18:return 30;\nbreak;\ncase 19:return 31;\nbreak;\ncase 20:return 32;\nbreak;\ncase 21:return 33;\nbreak;\ncase 22:return 30;\nbreak;\ncase 23:return 31;\nbreak;\ncase 24:return 32;\nbreak;\ncase 25:return 34;\nbreak;\ncase 26:return 35;\nbreak;\ncase 27:return 34;\nbreak;\ncase 28:return 34;\nbreak;\ncase 29:return 23;\nbreak;\ncase 30:return yy_.yytext[0];\nbreak;\ncase 31:return 6;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:[\\s]+)/i,/^(?:\"[^\"]*\")/i,/^(?:erDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\s+)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:[\\n]+)/i,/^(?:\\})/i,/^(?:.)/i,/^(?:\\|o\\b)/i,/^(?:\\}o\\b)/i,/^(?:\\}\\|)/i,/^(?:\\|\\|)/i,/^(?:o\\|)/i,/^(?:o\\{)/i,/^(?:\\|\\{)/i,/^(?:\\.\\.)/i,/^(?:--)/i,/^(?:\\.-)/i,/^(?:-\\.)/i,/^(?:[A-Za-z][A-Za-z0-9\\-_]*)/i,/^(?:.)/i,/^(?:$)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"block\":{\"rules\":[13,14,15,16,17],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,18,19,20,21,22,23,24,25,26,27,28,29,30,31],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/er/styles.js\":\n/*!***********************************!*\\\n !*** ./src/diagrams/er/styles.js ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \"\\n .entityBox {\\n fill: \".concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n }\\n\\n .attributeBoxOdd {\\n fill: #ffffff;\\n stroke: \").concat(options.nodeBorder, \";\\n }\\n\\n .attributeBoxEven {\\n fill: #f2f2f2;\\n stroke: \").concat(options.nodeBorder, \";\\n }\\n\\n .relationshipLabelBox {\\n fill: \").concat(options.tertiaryColor, \";\\n opacity: 0.7;\\n background-color: \").concat(options.tertiaryColor, \";\\n rect {\\n opacity: 0.5;\\n }\\n }\\n\\n .relationshipLine {\\n stroke: \").concat(options.lineColor, \";\\n }\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/flowchart/flowChartShapes.js\":\n/*!***************************************************!*\\\n !*** ./src/diagrams/flowchart/flowChartShapes.js ***!\n \\***************************************************/\n/*! exports provided: addToRender, addToRenderV2, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addToRender\", function() { return addToRender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addToRenderV2\", function() { return addToRenderV2; });\n/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dagre-d3 */ \"dagre-d3\");\n/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(dagre_d3__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction question(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var s = (w + h) * 0.9;\n var points = [{\n x: s / 2,\n y: 0\n }, {\n x: s,\n y: -s / 2\n }, {\n x: s / 2,\n y: -s\n }, {\n x: 0,\n y: -s / 2\n }];\n var shapeSvg = insertPolygonShape(parent, s, s, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction hexagon(parent, bbox, node) {\n var f = 4;\n var h = bbox.height;\n var m = h / f;\n var w = bbox.width + 2 * m;\n var points = [{\n x: m,\n y: 0\n }, {\n x: w - m,\n y: 0\n }, {\n x: w,\n y: -h / 2\n }, {\n x: w - m,\n y: -h\n }, {\n x: m,\n y: -h\n }, {\n x: 0,\n y: -h / 2\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction rect_left_inv_arrow(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: -h / 2,\n y: 0\n }, {\n x: w,\n y: 0\n }, {\n x: w,\n y: -h\n }, {\n x: -h / 2,\n y: -h\n }, {\n x: 0,\n y: -h / 2\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction lean_right(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: -2 * h / 6,\n y: 0\n }, {\n x: w - h / 6,\n y: 0\n }, {\n x: w + 2 * h / 6,\n y: -h\n }, {\n x: h / 6,\n y: -h\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction lean_left(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: 2 * h / 6,\n y: 0\n }, {\n x: w + h / 6,\n y: 0\n }, {\n x: w - 2 * h / 6,\n y: -h\n }, {\n x: -h / 6,\n y: -h\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction trapezoid(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: -2 * h / 6,\n y: 0\n }, {\n x: w + 2 * h / 6,\n y: 0\n }, {\n x: w - h / 6,\n y: -h\n }, {\n x: h / 6,\n y: -h\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction inv_trapezoid(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: h / 6,\n y: 0\n }, {\n x: w - h / 6,\n y: 0\n }, {\n x: w + 2 * h / 6,\n y: -h\n }, {\n x: -2 * h / 6,\n y: -h\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction rect_right_inv_arrow(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: 0,\n y: 0\n }, {\n x: w + h / 2,\n y: 0\n }, {\n x: w,\n y: -h / 2\n }, {\n x: w + h / 2,\n y: -h\n }, {\n x: 0,\n y: -h\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction stadium(parent, bbox, node) {\n var h = bbox.height;\n var w = bbox.width + h / 4;\n var shapeSvg = parent.insert('rect', ':first-child').attr('rx', h / 2).attr('ry', h / 2).attr('x', -w / 2).attr('y', -h / 2).attr('width', w).attr('height', h);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.rect(node, point);\n };\n\n return shapeSvg;\n}\n\nfunction subroutine(parent, bbox, node) {\n var w = bbox.width;\n var h = bbox.height;\n var points = [{\n x: 0,\n y: 0\n }, {\n x: w,\n y: 0\n }, {\n x: w,\n y: -h\n }, {\n x: 0,\n y: -h\n }, {\n x: 0,\n y: 0\n }, {\n x: -8,\n y: 0\n }, {\n x: w + 8,\n y: 0\n }, {\n x: w + 8,\n y: -h\n }, {\n x: -8,\n y: -h\n }, {\n x: -8,\n y: 0\n }];\n var shapeSvg = insertPolygonShape(parent, w, h, points);\n\n node.intersect = function (point) {\n return dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.polygon(node, points, point);\n };\n\n return shapeSvg;\n}\n\nfunction cylinder(parent, bbox, node) {\n var w = bbox.width;\n var rx = w / 2;\n var ry = rx / (2.5 + w / 50);\n var h = bbox.height + ry;\n var shape = 'M 0,' + ry + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 a ' + rx + ',' + ry + ' 0,0,0 ' + -w + ' 0 l 0,' + h + ' a ' + rx + ',' + ry + ' 0,0,0 ' + w + ' 0 l 0,' + -h;\n var shapeSvg = parent.attr('label-offset-y', ry).insert('path', ':first-child').attr('d', shape).attr('transform', 'translate(' + -w / 2 + ',' + -(h / 2 + ry) + ')');\n\n node.intersect = function (point) {\n var pos = dagre_d3__WEBPACK_IMPORTED_MODULE_0___default.a.intersect.rect(node, point);\n var x = pos.x - node.x;\n\n if (rx != 0 && (Math.abs(x) < node.width / 2 || Math.abs(x) == node.width / 2 && Math.abs(pos.y - node.y) > node.height / 2 - ry)) {\n // ellipsis equation: x*x / a*a + y*y / b*b = 1\n // solve for y to get adjustion value for pos.y\n var y = ry * ry * (1 - x * x / (rx * rx));\n if (y != 0) y = Math.sqrt(y);\n y = ry - y;\n if (point.y - node.y > 0) y = -y;\n pos.y += y;\n }\n\n return pos;\n };\n\n return shapeSvg;\n}\n\nfunction addToRender(render) {\n render.shapes().question = question;\n render.shapes().hexagon = hexagon;\n render.shapes().stadium = stadium;\n render.shapes().subroutine = subroutine;\n render.shapes().cylinder = cylinder; // Add custom shape for box with inverted arrow on left side\n\n render.shapes().rect_left_inv_arrow = rect_left_inv_arrow; // Add custom shape for box with inverted arrow on left side\n\n render.shapes().lean_right = lean_right; // Add custom shape for box with inverted arrow on left side\n\n render.shapes().lean_left = lean_left; // Add custom shape for box with inverted arrow on left side\n\n render.shapes().trapezoid = trapezoid; // Add custom shape for box with inverted arrow on left side\n\n render.shapes().inv_trapezoid = inv_trapezoid; // Add custom shape for box with inverted arrow on right side\n\n render.shapes().rect_right_inv_arrow = rect_right_inv_arrow;\n}\nfunction addToRenderV2(addShape) {\n addShape({\n question: question\n });\n addShape({\n hexagon: hexagon\n });\n addShape({\n stadium: stadium\n });\n addShape({\n subroutine: subroutine\n });\n addShape({\n cylinder: cylinder\n }); // Add custom shape for box with inverted arrow on left side\n\n addShape({\n rect_left_inv_arrow: rect_left_inv_arrow\n }); // Add custom shape for box with inverted arrow on left side\n\n addShape({\n lean_right: lean_right\n }); // Add custom shape for box with inverted arrow on left side\n\n addShape({\n lean_left: lean_left\n }); // Add custom shape for box with inverted arrow on left side\n\n addShape({\n trapezoid: trapezoid\n }); // Add custom shape for box with inverted arrow on left side\n\n addShape({\n inv_trapezoid: inv_trapezoid\n }); // Add custom shape for box with inverted arrow on right side\n\n addShape({\n rect_right_inv_arrow: rect_right_inv_arrow\n });\n}\n\nfunction insertPolygonShape(parent, w, h, points) {\n return parent.insert('polygon', ':first-child').attr('points', points.map(function (d) {\n return d.x + ',' + d.y;\n }).join(' ')).attr('transform', 'translate(' + -w / 2 + ',' + h / 2 + ')');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addToRender: addToRender,\n addToRenderV2: addToRenderV2\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/flowchart/flowDb.js\":\n/*!******************************************!*\\\n !*** ./src/diagrams/flowchart/flowDb.js ***!\n \\******************************************/\n/*! exports provided: parseDirective, lookUpDomId, addVertex, addSingleLink, addLink, updateLinkInterpolate, updateLink, addClass, setDirection, setClass, setLink, getTooltip, setClickEvent, bindFunctions, getDirection, getVertices, getEdges, getClasses, clear, setGen, defaultStyle, addSubGraph, getDepthFirstPos, indexNodes, getSubGraphs, firstGraph, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lookUpDomId\", function() { return lookUpDomId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addVertex\", function() { return addVertex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSingleLink\", function() { return addSingleLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLink\", function() { return addLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateLinkInterpolate\", function() { return updateLinkInterpolate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateLink\", function() { return updateLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addClass\", function() { return addClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDirection\", function() { return setDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClass\", function() { return setClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLink\", function() { return setLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTooltip\", function() { return getTooltip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClickEvent\", function() { return setClickEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bindFunctions\", function() { return bindFunctions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDirection\", function() { return getDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getVertices\", function() { return getVertices; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEdges\", function() { return getEdges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClasses\", function() { return getClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setGen\", function() { return setGen; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"defaultStyle\", function() { return defaultStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSubGraph\", function() { return addSubGraph; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDepthFirstPos\", function() { return getDepthFirstPos; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"indexNodes\", function() { return indexNodes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSubGraphs\", function() { return getSubGraphs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"firstGraph\", function() { return firstGraph; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\n\n\n\n\nvar MERMAID_DOM_ID_PREFIX = 'flowchart-';\nvar vertexCounter = 0;\nvar config = _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]();\nvar vertices = {};\nvar edges = [];\nvar classes = [];\nvar subGraphs = [];\nvar subGraphLookup = {};\nvar tooltips = {};\nvar subCount = 0;\nvar firstGraphFlag = true;\nvar direction;\nvar version; // As in graph\n// Functions to be run after graph rendering\n\nvar funs = [];\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_4__[\"default\"].parseDirective(this, statement, context, type);\n};\n/**\n * Function to lookup domId from id in the graph definition.\n * @param id\n * @public\n */\n\nvar lookUpDomId = function lookUpDomId(id) {\n var veritceKeys = Object.keys(vertices);\n\n for (var i = 0; i < veritceKeys.length; i++) {\n if (vertices[veritceKeys[i]].id === id) {\n return vertices[veritceKeys[i]].domId;\n }\n }\n\n return id;\n};\n/**\n * Function called by parser when a node definition has been found\n * @param id\n * @param text\n * @param type\n * @param style\n * @param classes\n */\n\nvar addVertex = function addVertex(_id, text, type, style, classes) {\n var txt;\n var id = _id;\n\n if (typeof id === 'undefined') {\n return;\n }\n\n if (id.trim().length === 0) {\n return;\n } // if (id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n\n if (typeof vertices[id] === 'undefined') {\n vertices[id] = {\n id: id,\n domId: MERMAID_DOM_ID_PREFIX + id + '-' + vertexCounter,\n styles: [],\n classes: []\n };\n }\n\n vertexCounter++;\n\n if (typeof text !== 'undefined') {\n config = _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]();\n txt = _common_common__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sanitizeText(text.trim(), config); // strip quotes if string starts and ends with a quote\n\n if (txt[0] === '\"' && txt[txt.length - 1] === '\"') {\n txt = txt.substring(1, txt.length - 1);\n }\n\n vertices[id].text = txt;\n } else {\n if (typeof vertices[id].text === 'undefined') {\n vertices[id].text = _id;\n }\n }\n\n if (typeof type !== 'undefined') {\n vertices[id].type = type;\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n vertices[id].styles.push(s);\n });\n }\n }\n\n if (typeof classes !== 'undefined') {\n if (classes !== null) {\n classes.forEach(function (s) {\n vertices[id].classes.push(s);\n });\n }\n }\n};\n/**\n * Function called by parser when a link/edge definition has been found\n * @param start\n * @param end\n * @param type\n * @param linktext\n */\n\nvar addSingleLink = function addSingleLink(_start, _end, type, linktext) {\n var start = _start;\n var end = _end; // if (start[0].match(/\\d/)) start = MERMAID_DOM_ID_PREFIX + start;\n // if (end[0].match(/\\d/)) end = MERMAID_DOM_ID_PREFIX + end;\n // log.info('Got edge...', start, end);\n\n var edge = {\n start: start,\n end: end,\n type: undefined,\n text: ''\n };\n linktext = type.text;\n\n if (typeof linktext !== 'undefined') {\n edge.text = _common_common__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sanitizeText(linktext.trim(), config); // strip quotes if string starts and exnds with a quote\n\n if (edge.text[0] === '\"' && edge.text[edge.text.length - 1] === '\"') {\n edge.text = edge.text.substring(1, edge.text.length - 1);\n }\n }\n\n if (typeof type !== 'undefined') {\n edge.type = type.type;\n edge.stroke = type.stroke;\n edge.length = type.length;\n }\n\n edges.push(edge);\n};\nvar addLink = function addLink(_start, _end, type, linktext) {\n var i, j;\n\n for (i = 0; i < _start.length; i++) {\n for (j = 0; j < _end.length; j++) {\n addSingleLink(_start[i], _end[j], type, linktext);\n }\n }\n};\n/**\n * Updates a link's line interpolation algorithm\n * @param pos\n * @param interpolate\n */\n\nvar updateLinkInterpolate = function updateLinkInterpolate(positions, interp) {\n positions.forEach(function (pos) {\n if (pos === 'default') {\n edges.defaultInterpolate = interp;\n } else {\n edges[pos].interpolate = interp;\n }\n });\n};\n/**\n * Updates a link with a style\n * @param pos\n * @param style\n */\n\nvar updateLink = function updateLink(positions, style) {\n positions.forEach(function (pos) {\n if (pos === 'default') {\n edges.defaultStyle = style;\n } else {\n if (_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].isSubstringInArray('fill', style) === -1) {\n style.push('fill:none');\n }\n\n edges[pos].style = style;\n }\n });\n};\nvar addClass = function addClass(id, style) {\n if (typeof classes[id] === 'undefined') {\n classes[id] = {\n id: id,\n styles: [],\n textStyles: []\n };\n }\n\n if (typeof style !== 'undefined') {\n if (style !== null) {\n style.forEach(function (s) {\n if (s.match('color')) {\n var newStyle1 = s.replace('fill', 'bgFill');\n var newStyle2 = newStyle1.replace('color', 'fill');\n classes[id].textStyles.push(newStyle2);\n }\n\n classes[id].styles.push(s);\n });\n }\n }\n};\n/**\n * Called by parser when a graph definition is found, stores the direction of the chart.\n * @param dir\n */\n\nvar setDirection = function setDirection(dir) {\n direction = dir;\n\n if (direction.match(/.*</)) {\n direction = 'RL';\n }\n\n if (direction.match(/.*\\^/)) {\n direction = 'BT';\n }\n\n if (direction.match(/.*>/)) {\n direction = 'LR';\n }\n\n if (direction.match(/.*v/)) {\n direction = 'TB';\n }\n};\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\n\nvar setClass = function setClass(ids, className) {\n ids.split(',').forEach(function (_id) {\n // let id = version === 'gen-2' ? lookUpDomId(_id) : _id;\n var id = _id; // if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].classes.push(className);\n }\n\n if (typeof subGraphLookup[id] !== 'undefined') {\n subGraphLookup[id].classes.push(className);\n }\n });\n};\n\nvar setTooltip = function setTooltip(ids, tooltip) {\n ids.split(',').forEach(function (id) {\n if (typeof tooltip !== 'undefined') {\n tooltips[version === 'gen-1' ? lookUpDomId(id) : id] = _common_common__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sanitizeText(tooltip, config);\n }\n });\n};\n\nvar setClickFun = function setClickFun(id, functionName, functionArgs) {\n var domId = lookUpDomId(id); // if (_id[0].match(/\\d/)) id = MERMAID_DOM_ID_PREFIX + id;\n\n if (_config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]().securityLevel !== 'loose') {\n return;\n }\n\n if (typeof functionName === 'undefined') {\n return;\n }\n\n var argList = [];\n\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n\n for (var i = 0; i < argList.length; i++) {\n var item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n\n /* This preserves all starting and ending whitespace inside */\n\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n\n argList[i] = item;\n }\n }\n /* if no arguments passed into callback, default to passing in id */\n\n\n if (argList.length === 0) {\n argList.push(id);\n }\n\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].haveCallback = true;\n funs.push(function () {\n var elem = document.querySelector(\"[id=\\\"\".concat(domId, \"\\\"]\"));\n\n if (elem !== null) {\n elem.addEventListener('click', function () {\n _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].runFunc.apply(_utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [functionName].concat(_toConsumableArray(argList)));\n }, false);\n }\n });\n }\n};\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\n\n\nvar setLink = function setLink(ids, linkStr, target) {\n ids.split(',').forEach(function (id) {\n if (typeof vertices[id] !== 'undefined') {\n vertices[id].link = _utils__WEBPACK_IMPORTED_MODULE_1__[\"default\"].formatUrl(linkStr, config);\n vertices[id].linkTarget = target;\n }\n });\n setClass(ids, 'clickable');\n};\nvar getTooltip = function getTooltip(id) {\n return tooltips[id];\n};\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param tooltip Tooltip for the clickable element\n */\n\nvar setClickEvent = function setClickEvent(ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\nvar bindFunctions = function bindFunctions(element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\nvar getDirection = function getDirection() {\n return direction.trim();\n};\n/**\n * Retrieval function for fetching the found nodes after parsing has completed.\n * @returns {{}|*|vertices}\n */\n\nvar getVertices = function getVertices() {\n return vertices;\n};\n/**\n * Retrieval function for fetching the found links after parsing has completed.\n * @returns {{}|*|edges}\n */\n\nvar getEdges = function getEdges() {\n return edges;\n};\n/**\n * Retrieval function for fetching the found class definitions after parsing has completed.\n * @returns {{}|*|classes}\n */\n\nvar getClasses = function getClasses() {\n return classes;\n};\n\nvar setupToolTips = function setupToolTips(element) {\n var tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('.mermaidTooltip');\n\n if ((tooltipElem._groups || tooltipElem)[0][0] === null) {\n tooltipElem = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('body').append('div').attr('class', 'mermaidTooltip').style('opacity', 0);\n }\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(element).select('svg');\n var nodes = svg.selectAll('g.node');\n nodes.on('mouseover', function () {\n var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(this);\n var title = el.attr('title'); // Dont try to draw a tooltip if no data is provided\n\n if (title === null) {\n return;\n }\n\n var rect = this.getBoundingClientRect();\n tooltipElem.transition().duration(200).style('opacity', '.9');\n tooltipElem.html(el.attr('title')).style('left', window.scrollX + rect.left + (rect.right - rect.left) / 2 + 'px').style('top', window.scrollY + rect.top - 14 + document.body.scrollTop + 'px');\n el.classed('hover', true);\n }).on('mouseout', function () {\n tooltipElem.transition().duration(500).style('opacity', 0);\n var el = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(this);\n el.classed('hover', false);\n });\n};\n\nfuns.push(setupToolTips);\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\n\nvar clear = function clear(ver) {\n vertices = {};\n classes = {};\n edges = [];\n funs = [];\n funs.push(setupToolTips);\n subGraphs = [];\n subGraphLookup = {};\n subCount = 0;\n tooltips = [];\n firstGraphFlag = true;\n version = ver || 'gen-1';\n};\nvar setGen = function setGen(ver) {\n version = ver || 'gen-1';\n};\n/**\n *\n * @returns {string}\n */\n\nvar defaultStyle = function defaultStyle() {\n return 'fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;';\n};\n/**\n * Clears the internal graph db so that a new graph can be parsed.\n */\n\nvar addSubGraph = function addSubGraph(_id, list, _title) {\n var id = _id.trim();\n\n var title = _title;\n\n if (_id === _title && _title.match(/\\s/)) {\n id = undefined;\n }\n\n function uniq(a) {\n var prims = {\n boolean: {},\n number: {},\n string: {}\n };\n var objs = [];\n return a.filter(function (item) {\n var type = _typeof(item);\n\n if (item.trim() === '') {\n return false;\n }\n\n if (type in prims) {\n return prims[type].hasOwnProperty(item) ? false : prims[type][item] = true; // eslint-disable-line\n } else {\n return objs.indexOf(item) >= 0 ? false : objs.push(item);\n }\n });\n }\n\n var nodeList = [];\n nodeList = uniq(nodeList.concat.apply(nodeList, list));\n\n if (version === 'gen-1') {\n _logger__WEBPACK_IMPORTED_MODULE_5__[\"log\"].warn('LOOKING UP');\n\n for (var i = 0; i < nodeList.length; i++) {\n nodeList[i] = lookUpDomId(nodeList[i]);\n }\n }\n\n id = id || 'subGraph' + subCount; // if (id[0].match(/\\d/)) id = lookUpDomId(id);\n\n title = title || '';\n title = _common_common__WEBPACK_IMPORTED_MODULE_3__[\"default\"].sanitizeText(title, config);\n subCount = subCount + 1;\n var subGraph = {\n id: id,\n nodes: nodeList,\n title: title.trim(),\n classes: []\n };\n _logger__WEBPACK_IMPORTED_MODULE_5__[\"log\"].info('Adding', subGraph.id, subGraph.nodes);\n /**\n * Deletes an id from all subgraphs\n */\n // const del = _id => {\n // subGraphs.forEach(sg => {\n // const pos = sg.nodes.indexOf(_id);\n // if (pos >= 0) {\n // sg.nodes.splice(pos, 1);\n // }\n // });\n // };\n // // Removes the members of this subgraph from any other subgraphs, a node only belong to one subgraph\n // subGraph.nodes.forEach(_id => del(_id));\n // Remove the members in the new subgraph if they already belong to another subgraph\n\n subGraph.nodes = makeUniq(subGraph, subGraphs).nodes;\n subGraphs.push(subGraph);\n subGraphLookup[id] = subGraph;\n return id;\n};\n\nvar getPosForId = function getPosForId(id) {\n for (var i = 0; i < subGraphs.length; i++) {\n if (subGraphs[i].id === id) {\n return i;\n }\n }\n\n return -1;\n};\n\nvar secCount = -1;\nvar posCrossRef = [];\n\nvar indexNodes2 = function indexNodes2(id, pos) {\n var nodes = subGraphs[pos].nodes;\n secCount = secCount + 1;\n\n if (secCount > 2000) {\n return;\n }\n\n posCrossRef[secCount] = pos; // Check if match\n\n if (subGraphs[pos].id === id) {\n return {\n result: true,\n count: 0\n };\n }\n\n var count = 0;\n var posCount = 1;\n\n while (count < nodes.length) {\n var childPos = getPosForId(nodes[count]); // Ignore regular nodes (pos will be -1)\n\n if (childPos >= 0) {\n var res = indexNodes2(id, childPos);\n\n if (res.result) {\n return {\n result: true,\n count: posCount + res.count\n };\n } else {\n posCount = posCount + res.count;\n }\n }\n\n count = count + 1;\n }\n\n return {\n result: false,\n count: posCount\n };\n};\n\nvar getDepthFirstPos = function getDepthFirstPos(pos) {\n return posCrossRef[pos];\n};\nvar indexNodes = function indexNodes() {\n secCount = -1;\n\n if (subGraphs.length > 0) {\n indexNodes2('none', subGraphs.length - 1, 0);\n }\n};\nvar getSubGraphs = function getSubGraphs() {\n return subGraphs;\n};\nvar firstGraph = function firstGraph() {\n if (firstGraphFlag) {\n firstGraphFlag = false;\n return true;\n }\n\n return false;\n};\n\nvar destructStartLink = function destructStartLink(_str) {\n var str = _str.trim();\n\n var type = 'arrow_open';\n\n switch (str[0]) {\n case '<':\n type = 'arrow_point';\n str = str.slice(1);\n break;\n\n case 'x':\n type = 'arrow_cross';\n str = str.slice(1);\n break;\n\n case 'o':\n type = 'arrow_circle';\n str = str.slice(1);\n break;\n }\n\n var stroke = 'normal';\n\n if (str.indexOf('=') !== -1) {\n stroke = 'thick';\n }\n\n if (str.indexOf('.') !== -1) {\n stroke = 'dotted';\n }\n\n return {\n type: type,\n stroke: stroke\n };\n};\n\nvar countChar = function countChar(char, str) {\n var length = str.length;\n var count = 0;\n\n for (var i = 0; i < length; ++i) {\n if (str[i] === char) {\n ++count;\n }\n }\n\n return count;\n};\n\nvar destructEndLink = function destructEndLink(_str) {\n var str = _str.trim();\n\n var line = str.slice(0, -1);\n var type = 'arrow_open';\n\n switch (str.slice(-1)) {\n case 'x':\n type = 'arrow_cross';\n\n if (str[0] === 'x') {\n type = 'double_' + type;\n line = line.slice(1);\n }\n\n break;\n\n case '>':\n type = 'arrow_point';\n\n if (str[0] === '<') {\n type = 'double_' + type;\n line = line.slice(1);\n }\n\n break;\n\n case 'o':\n type = 'arrow_circle';\n\n if (str[0] === 'o') {\n type = 'double_' + type;\n line = line.slice(1);\n }\n\n break;\n }\n\n var stroke = 'normal';\n var length = line.length - 1;\n\n if (line[0] === '=') {\n stroke = 'thick';\n }\n\n var dots = countChar('.', line);\n\n if (dots) {\n stroke = 'dotted';\n length = dots;\n }\n\n return {\n type: type,\n stroke: stroke,\n length: length\n };\n};\n\nvar destructLink = function destructLink(_str, _startStr) {\n var info = destructEndLink(_str);\n var startInfo;\n\n if (_startStr) {\n startInfo = destructStartLink(_startStr);\n\n if (startInfo.stroke !== info.stroke) {\n return {\n type: 'INVALID',\n stroke: 'INVALID'\n };\n }\n\n if (startInfo.type === 'arrow_open') {\n // -- xyz --> - take arrow type from ending\n startInfo.type = info.type;\n } else {\n // x-- xyz --> - not supported\n if (startInfo.type !== info.type) return {\n type: 'INVALID',\n stroke: 'INVALID'\n };\n startInfo.type = 'double_' + startInfo.type;\n }\n\n if (startInfo.type === 'double_arrow') {\n startInfo.type = 'double_arrow_point';\n }\n\n startInfo.length = info.length;\n return startInfo;\n }\n\n return info;\n}; // Todo optimizer this by caching existing nodes\n\n\nvar exists = function exists(allSgs, _id) {\n var res = false;\n allSgs.forEach(function (sg) {\n var pos = sg.nodes.indexOf(_id);\n\n if (pos >= 0) {\n res = true;\n }\n });\n return res;\n};\n/**\n * Deletes an id from all subgraphs\n */\n\n\nvar makeUniq = function makeUniq(sg, allSubgraphs) {\n var res = [];\n sg.nodes.forEach(function (_id, pos) {\n if (!exists(allSubgraphs, _id)) {\n res.push(sg.nodes[pos]);\n }\n });\n return {\n nodes: res\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n parseDirective: parseDirective,\n defaultConfig: function defaultConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_2__[\"defaultConfig\"].flowchart;\n },\n addVertex: addVertex,\n lookUpDomId: lookUpDomId,\n addLink: addLink,\n updateLinkInterpolate: updateLinkInterpolate,\n updateLink: updateLink,\n addClass: addClass,\n setDirection: setDirection,\n setClass: setClass,\n setTooltip: setTooltip,\n getTooltip: getTooltip,\n setClickEvent: setClickEvent,\n setLink: setLink,\n bindFunctions: bindFunctions,\n getDirection: getDirection,\n getVertices: getVertices,\n getEdges: getEdges,\n getClasses: getClasses,\n clear: clear,\n setGen: setGen,\n defaultStyle: defaultStyle,\n addSubGraph: addSubGraph,\n getDepthFirstPos: getDepthFirstPos,\n indexNodes: indexNodes,\n getSubGraphs: getSubGraphs,\n destructLink: destructLink,\n lex: {\n firstGraph: firstGraph\n },\n exists: exists,\n makeUniq: makeUniq\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/flowchart/flowRenderer-v2.js\":\n/*!***************************************************!*\\\n !*** ./src/diagrams/flowchart/flowRenderer-v2.js ***!\n \\***************************************************/\n/*! exports provided: setConf, addVertices, addEdges, getClasses, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addVertices\", function() { return addVertices; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEdges\", function() { return addEdges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClasses\", function() { return getClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _flowDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flowDb */ \"./src/diagrams/flowchart/flowDb.js\");\n/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/flow */ \"./src/diagrams/flowchart/parser/flow.jison\");\n/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_flow__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../dagre-wrapper/index.js */ \"./src/dagre-wrapper/index.js\");\n/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3/lib/label/add-html-label.js */ \"dagre-d3/lib/label/add-html-label.js\");\n/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n\n\n\n\nvar conf = {};\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n\n for (var i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n/**\n * Function that adds the vertices found during parsing to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\n\nvar addVertices = function addVertices(vert, g, svgId) {\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(\"[id=\\\"\".concat(svgId, \"\\\"]\"));\n var keys = Object.keys(vert); // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n\n keys.forEach(function (id) {\n var vertex = vert[id];\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n\n var classStr = 'default';\n\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(vertex.styles); // Use vertex id as text in the box if no text is provided by the graph definition\n\n var vertexText = vertex.text !== undefined ? vertex.text : vertex.id; // We create a SVG label, either by delegating to addHtmlLabel or manually\n\n var vertexNode;\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n var node = {\n label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, function (s) {\n return \"<i class='\".concat(s.replace(':', ' '), \"'></i>\");\n })\n };\n vertexNode = dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default()(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n var rows = vertexText.split(_common_common__WEBPACK_IMPORTED_MODULE_8__[\"default\"].lineBreakRegex);\n\n for (var j = 0; j < rows.length; j++) {\n var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n\n vertexNode = svgLabel;\n }\n\n var radious = 0;\n var _shape = ''; // Set the shape based parameters\n\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n\n case 'square':\n _shape = 'rect';\n break;\n\n case 'diamond':\n _shape = 'question';\n break;\n\n case 'hexagon':\n _shape = 'hexagon';\n break;\n\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n\n case 'lean_right':\n _shape = 'lean_right';\n break;\n\n case 'lean_left':\n _shape = 'lean_left';\n break;\n\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n\n case 'circle':\n _shape = 'circle';\n break;\n\n case 'ellipse':\n _shape = 'ellipse';\n break;\n\n case 'stadium':\n _shape = 'stadium';\n break;\n\n case 'subroutine':\n _shape = 'subroutine';\n break;\n\n case 'cylinder':\n _shape = 'cylinder';\n break;\n\n case 'group':\n _shape = 'rect';\n break;\n\n default:\n _shape = 'rect';\n } // Add the node\n\n\n g.setNode(vertex.id, {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n link: vertex.link,\n linkTarget: vertex.linkTarget,\n tooltip: _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getTooltip(vertex.id) || '',\n domId: _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(vertex.id),\n haveCallback: vertex.haveCallback,\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.padding\n });\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('setNode', {\n labelStyle: styles.labelStyle,\n shape: _shape,\n labelText: vertexText,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: vertex.id,\n domId: _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(vertex.id),\n width: vertex.type === 'group' ? 500 : undefined,\n type: vertex.type,\n padding: Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.padding\n });\n });\n};\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\n\nvar addEdges = function addEdges(edges, g) {\n var cnt = 0;\n var defaultStyle;\n var defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n var defaultStyles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function (edge) {\n cnt++; // Identify Link\n\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n var edgeData = {\n style: '',\n labelStyle: ''\n };\n edgeData.minlen = edge.length || 1; //edgeData.id = 'id' + cnt;\n // Set link type for rendering\n\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n } // Check of arrow types, placed here in order not to break old rendering\n\n\n edgeData.arrowTypeStart = 'arrow_open';\n edgeData.arrowTypeEnd = 'arrow_open';\n /* eslint-disable no-fallthrough */\n\n switch (edge.type) {\n case 'double_arrow_cross':\n edgeData.arrowTypeStart = 'arrow_cross';\n\n case 'arrow_cross':\n edgeData.arrowTypeEnd = 'arrow_cross';\n break;\n\n case 'double_arrow_point':\n edgeData.arrowTypeStart = 'arrow_point';\n\n case 'arrow_point':\n edgeData.arrowTypeEnd = 'arrow_point';\n break;\n\n case 'double_arrow_circle':\n edgeData.arrowTypeStart = 'arrow_circle';\n\n case 'arrow_circle':\n edgeData.arrowTypeEnd = 'arrow_circle';\n break;\n }\n\n var style = '';\n var labelStyle = '';\n\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none;';\n\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n\n edgeData.thickness = 'normal';\n edgeData.pattern = 'solid';\n break;\n\n case 'dotted':\n edgeData.thickness = 'normal';\n edgeData.pattern = 'dotted';\n edgeData.style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n\n case 'thick':\n edgeData.thickness = 'thick';\n edgeData.pattern = 'solid';\n edgeData.style = 'stroke-width: 3.5px;fill:none;';\n break;\n }\n\n if (typeof edge.style !== 'undefined') {\n var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n }\n\n edgeData.style = edgeData.style += style;\n edgeData.labelStyle = edgeData.labelStyle += labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]);\n } else {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(conf.curve, d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n } // if (getConfig().flowchart.htmlLabels && false) {\n // // eslint-disable-line\n // edgeData.labelType = 'html';\n // edgeData.label = `<span id=\"L-${linkId}\" class=\"edgeLabel L-${linkNameStart}' L-${linkNameEnd}\">${edge.text}</span>`;\n // } else {\n\n\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_8__[\"default\"].lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none;';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:'); // }\n\n edgeData.id = linkId;\n edgeData.classes = 'flowchart-link ' + linkNameStart + ' ' + linkNameEnd; // Add the edge to the graph\n\n g.setEdge(edge.start, edge.end, edgeData, cnt);\n });\n};\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\n\nvar getClasses = function getClasses(text) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Extracting classes');\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n\n try {\n // Parse the graph definition\n parser.parse(text);\n } catch (e) {\n return;\n }\n\n return _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getClasses();\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nvar draw = function draw(text, id) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Drawing flowchart');\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setGen('gen-2');\n var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; // Parse the graph definition\n // try {\n\n parser.parse(text); // } catch (err) {\n // log.debug('Parsing failed');\n // }\n // Fetch the default direction, use TD if none was found\n\n var dir = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDirection();\n\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart;\n var nodeSpacing = conf.nodeSpacing || 50;\n var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph\n\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function () {\n return {};\n });\n var subG;\n var subGraphs = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getSubGraphs();\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Subgraphs - ', subGraphs);\n\n for (var _i = subGraphs.length - 1; _i >= 0; _i--) {\n subG = subGraphs[_i];\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Subgraph - ', subG);\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n } // Fetch the verices/nodes and edges/links from the parsed graph definition\n\n\n var vert = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getVertices();\n var edges = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getEdges();\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info(edges);\n var i = 0;\n\n for (i = subGraphs.length - 1; i >= 0; i--) {\n // for (let i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"selectAll\"])('cluster').append('text');\n\n for (var j = 0; j < subG.nodes.length; j++) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Setting up subgraphs', subG.nodes[j], subG.id);\n g.setParent(subG.nodes[j], subG.id);\n }\n }\n\n addVertices(vert, g, id);\n addEdges(edges, g); // Add custom shapes\n // flowChartShapes.addToRenderV2(addShape);\n // Set up an SVG group so that we can translate the final graph.\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\"));\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink'); // Run the renderer. This is what draws the final graph.\n\n var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])('#' + id + ' g');\n Object(_dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__[\"render\"])(element, g, ['point', 'circle', 'cross'], 'flowchart', id);\n var padding = conf.diagramPadding;\n var svgBounds = svg.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].debug(\"new ViewBox 0 0 \".concat(width, \" \").concat(height), \"translate(\".concat(padding - g._label.marginx, \", \").concat(padding - g._label.marginy, \")\"));\n Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"configureSvgSize\"])(svg, height, width, conf.useMaxWidth);\n svg.attr('viewBox', \"0 0 \".concat(width, \" \").concat(height));\n svg.select('g').attr('transform', \"translate(\".concat(padding - g._label.marginx, \", \").concat(padding - svgBounds.y, \")\")); // Index nodes\n\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].indexNodes('subGraph' + i); // Add label rects for non html labels\n\n if (!conf.htmlLabels) {\n var labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n\n for (var k = 0; k < labels.length; k++) {\n var label = labels[k]; // Get dimensions of label\n\n var dim = label.getBBox();\n var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height); // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n } // If node has a link, wrap it in an anchor SVG object.\n\n\n var keys = Object.keys(vert);\n keys.forEach(function (key) {\n var vertex = vert[key];\n\n if (vertex.link) {\n var node = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])('#' + id + ' [id=\"' + key + '\"]');\n\n if (node) {\n var link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n if (vertex.linkTarget) {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);\n }\n\n var linkNode = node.insert(function () {\n return link;\n }, ':first-child');\n var shape = node.select('.label-container');\n\n if (shape) {\n linkNode.append(function () {\n return shape.node();\n });\n }\n\n var _label = node.select('.label');\n\n if (_label) {\n linkNode.append(function () {\n return _label.node();\n });\n }\n }\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n addVertices: addVertices,\n addEdges: addEdges,\n getClasses: getClasses,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/flowchart/flowRenderer.js\":\n/*!************************************************!*\\\n !*** ./src/diagrams/flowchart/flowRenderer.js ***!\n \\************************************************/\n/*! exports provided: setConf, addVertices, addEdges, getClasses, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addVertices\", function() { return addVertices; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEdges\", function() { return addEdges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClasses\", function() { return getClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _flowDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flowDb */ \"./src/diagrams/flowchart/flowDb.js\");\n/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/flow */ \"./src/diagrams/flowchart/parser/flow.jison\");\n/* harmony import */ var _parser_flow__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_flow__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! dagre-d3 */ \"dagre-d3\");\n/* harmony import */ var dagre_d3__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(dagre_d3__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! dagre-d3/lib/label/add-html-label.js */ \"dagre-d3/lib/label/add-html-label.js\");\n/* harmony import */ var dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _flowChartShapes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./flowChartShapes */ \"./src/diagrams/flowchart/flowChartShapes.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar conf = {};\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n\n for (var i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n/**\n * Function that adds the vertices found in the graph definition to the graph to be rendered.\n * @param vert Object containing the vertices.\n * @param g The graph that is to be drawn.\n */\n\nvar addVertices = function addVertices(vert, g, svgId) {\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(\"[id=\\\"\".concat(svgId, \"\\\"]\"));\n var keys = Object.keys(vert); // Iterate through each item in the vertex object (containing all the vertices found) in the graph definition\n\n keys.forEach(function (id) {\n var vertex = vert[id];\n /**\n * Variable for storing the classes for the vertex\n * @type {string}\n */\n\n var classStr = 'default';\n\n if (vertex.classes.length > 0) {\n classStr = vertex.classes.join(' ');\n }\n\n var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(vertex.styles); // Use vertex id as text in the box if no text is provided by the graph definition\n\n var vertexText = vertex.text !== undefined ? vertex.text : vertex.id; // We create a SVG label, either by delegating to addHtmlLabel or manually\n\n var vertexNode;\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.htmlLabels) {\n // TODO: addHtmlLabel accepts a labelStyle. Do we possibly have that?\n var node = {\n label: vertexText.replace(/fa[lrsb]?:fa-[\\w-]+/g, function (s) {\n return \"<i class='\".concat(s.replace(':', ' '), \"'></i>\");\n })\n };\n vertexNode = dagre_d3_lib_label_add_html_label_js__WEBPACK_IMPORTED_MODULE_6___default()(svg, node).node();\n vertexNode.parentNode.removeChild(vertexNode);\n } else {\n var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('style', styles.labelStyle.replace('color:', 'fill:'));\n var rows = vertexText.split(_common_common__WEBPACK_IMPORTED_MODULE_8__[\"default\"].lineBreakRegex);\n\n for (var j = 0; j < rows.length; j++) {\n var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n tspan.setAttribute('dy', '1em');\n tspan.setAttribute('x', '1');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n\n vertexNode = svgLabel;\n }\n\n var radious = 0;\n var _shape = ''; // Set the shape based parameters\n\n switch (vertex.type) {\n case 'round':\n radious = 5;\n _shape = 'rect';\n break;\n\n case 'square':\n _shape = 'rect';\n break;\n\n case 'diamond':\n _shape = 'question';\n break;\n\n case 'hexagon':\n _shape = 'hexagon';\n break;\n\n case 'odd':\n _shape = 'rect_left_inv_arrow';\n break;\n\n case 'lean_right':\n _shape = 'lean_right';\n break;\n\n case 'lean_left':\n _shape = 'lean_left';\n break;\n\n case 'trapezoid':\n _shape = 'trapezoid';\n break;\n\n case 'inv_trapezoid':\n _shape = 'inv_trapezoid';\n break;\n\n case 'odd_right':\n _shape = 'rect_left_inv_arrow';\n break;\n\n case 'circle':\n _shape = 'circle';\n break;\n\n case 'ellipse':\n _shape = 'ellipse';\n break;\n\n case 'stadium':\n _shape = 'stadium';\n break;\n\n case 'subroutine':\n _shape = 'subroutine';\n break;\n\n case 'cylinder':\n _shape = 'cylinder';\n break;\n\n case 'group':\n _shape = 'rect';\n break;\n\n default:\n _shape = 'rect';\n } // Add the node\n\n\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].warn('Adding node', vertex.id, vertex.domId);\n g.setNode(_flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(vertex.id), {\n labelType: 'svg',\n labelStyle: styles.labelStyle,\n shape: _shape,\n label: vertexNode,\n rx: radious,\n ry: radious,\n class: classStr,\n style: styles.style,\n id: _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(vertex.id)\n });\n });\n};\n/**\n * Add edges to graph based on parsed graph defninition\n * @param {Object} edges The edges to add to the graph\n * @param {Object} g The graph object\n */\n\nvar addEdges = function addEdges(edges, g) {\n var cnt = 0;\n var defaultStyle;\n var defaultLabelStyle;\n\n if (typeof edges.defaultStyle !== 'undefined') {\n var defaultStyles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(edges.defaultStyle);\n defaultStyle = defaultStyles.style;\n defaultLabelStyle = defaultStyles.labelStyle;\n }\n\n edges.forEach(function (edge) {\n cnt++; // Identify Link\n\n var linkId = 'L-' + edge.start + '-' + edge.end;\n var linkNameStart = 'LS-' + edge.start;\n var linkNameEnd = 'LE-' + edge.end;\n var edgeData = {}; // Set link type for rendering\n\n if (edge.type === 'arrow_open') {\n edgeData.arrowhead = 'none';\n } else {\n edgeData.arrowhead = 'normal';\n }\n\n var style = '';\n var labelStyle = '';\n\n if (typeof edge.style !== 'undefined') {\n var styles = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"getStylesFromArray\"])(edge.style);\n style = styles.style;\n labelStyle = styles.labelStyle;\n } else {\n switch (edge.stroke) {\n case 'normal':\n style = 'fill:none';\n\n if (typeof defaultStyle !== 'undefined') {\n style = defaultStyle;\n }\n\n if (typeof defaultLabelStyle !== 'undefined') {\n labelStyle = defaultLabelStyle;\n }\n\n break;\n\n case 'dotted':\n style = 'fill:none;stroke-width:2px;stroke-dasharray:3;';\n break;\n\n case 'thick':\n style = ' stroke-width: 3.5px;fill:none';\n break;\n }\n }\n\n edgeData.style = style;\n edgeData.labelStyle = labelStyle;\n\n if (typeof edge.interpolate !== 'undefined') {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(edge.interpolate, d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]);\n } else if (typeof edges.defaultInterpolate !== 'undefined') {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(edges.defaultInterpolate, d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]);\n } else {\n edgeData.curve = Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"interpolateToCurve\"])(conf.curve, d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"]);\n }\n\n if (typeof edge.text === 'undefined') {\n if (typeof edge.style !== 'undefined') {\n edgeData.arrowheadStyle = 'fill: #333';\n }\n } else {\n edgeData.arrowheadStyle = 'fill: #333';\n edgeData.labelpos = 'c';\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart.htmlLabels) {\n edgeData.labelType = 'html';\n edgeData.label = \"<span id=\\\"L-\".concat(linkId, \"\\\" class=\\\"edgeLabel L-\").concat(linkNameStart, \"' L-\").concat(linkNameEnd, \"\\\">\").concat(edge.text.replace(/fa[lrsb]?:fa-[\\w-]+/g, function (s) {\n return \"<i class='\".concat(s.replace(':', ' '), \"'></i>\");\n }), \"</span>\");\n } else {\n edgeData.labelType = 'text';\n edgeData.label = edge.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_8__[\"default\"].lineBreakRegex, '\\n');\n\n if (typeof edge.style === 'undefined') {\n edgeData.style = edgeData.style || 'stroke: #333; stroke-width: 1.5px;fill:none';\n }\n\n edgeData.labelStyle = edgeData.labelStyle.replace('color:', 'fill:');\n }\n }\n\n edgeData.id = linkId;\n edgeData.class = linkNameStart + ' ' + linkNameEnd;\n edgeData.minlen = edge.length || 1; // Add the edge to the graph\n\n g.setEdge(_flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(edge.start), _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(edge.end), edgeData, cnt);\n });\n};\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\n\nvar getClasses = function getClasses(text) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Extracting classes');\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n\n try {\n var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; // Parse the graph definition\n\n parser.parse(text);\n return _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getClasses();\n } catch (e) {\n return;\n }\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nvar draw = function draw(text, id) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].info('Drawing flowchart');\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setGen('gen-1');\n var parser = _parser_flow__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; // Parse the graph definition\n // try {\n\n parser.parse(text); // } catch (err) {\n // log.debug('Parsing failed');\n // }\n // Fetch the default direction, use TD if none was found\n\n var dir = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDirection();\n\n if (typeof dir === 'undefined') {\n dir = 'TD';\n }\n\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().flowchart;\n var nodeSpacing = conf.nodeSpacing || 50;\n var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph\n\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: dir,\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function () {\n return {};\n });\n var subG;\n var subGraphs = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getSubGraphs();\n\n for (var _i = subGraphs.length - 1; _i >= 0; _i--) {\n subG = subGraphs[_i];\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].addVertex(subG.id, subG.title, 'group', undefined, subG.classes);\n } // Fetch the verices/nodes and edges/links from the parsed graph definition\n\n\n var vert = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getVertices();\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].warn('Get vertices', vert);\n var edges = _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getEdges();\n var i = 0;\n\n for (i = subGraphs.length - 1; i >= 0; i--) {\n subG = subGraphs[i];\n Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"selectAll\"])('cluster').append('text');\n\n for (var j = 0; j < subG.nodes.length; j++) {\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].warn('Setting subgraph', subG.nodes[j], _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(subG.nodes[j]), _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(subG.id));\n g.setParent(_flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(subG.nodes[j]), _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(subG.id));\n }\n }\n\n addVertices(vert, g, id);\n addEdges(edges, g); // Create the renderer\n\n var Render = dagre_d3__WEBPACK_IMPORTED_MODULE_5___default.a.render;\n var render = new Render(); // Add custom shapes\n\n _flowChartShapes__WEBPACK_IMPORTED_MODULE_10__[\"default\"].addToRender(render); // Add our custom arrow - an empty arrowhead\n\n render.arrows().none = function normal(parent, id, edge, type) {\n var marker = parent.append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'strokeWidth').attr('markerWidth', 8).attr('markerHeight', 6).attr('orient', 'auto');\n var path = marker.append('path').attr('d', 'M 0 0 L 0 0 L 0 0 z');\n dagre_d3__WEBPACK_IMPORTED_MODULE_5___default.a.util.applyStyle(path, edge[type + 'Style']);\n }; // Override normal arrowhead defined in d3. Remove style & add class to allow css styling.\n\n\n render.arrows().normal = function normal(parent, id) {\n var marker = parent.append('marker').attr('id', id).attr('viewBox', '0 0 10 10').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'strokeWidth').attr('markerWidth', 8).attr('markerHeight', 6).attr('orient', 'auto');\n marker.append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z').attr('class', 'arrowheadPath').style('stroke-width', 1).style('stroke-dasharray', '1,0');\n }; // Set up an SVG group so that we can translate the final graph.\n\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\"));\n svg.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].warn(g); // Run the renderer. This is what draws the final graph.\n\n var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])('#' + id + ' g');\n render(element, g);\n element.selectAll('g.node').attr('title', function () {\n return _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getTooltip(this.id);\n });\n var padding = conf.diagramPadding;\n var svgBounds = svg.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"configureSvgSize\"])(svg, height, width, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n\n var vBox = \"\".concat(svgBounds.x - padding, \" \").concat(svgBounds.y - padding, \" \").concat(width, \" \").concat(height);\n _logger__WEBPACK_IMPORTED_MODULE_7__[\"log\"].debug(\"viewBox \".concat(vBox));\n svg.attr('viewBox', vBox); // Index nodes\n\n _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].indexNodes('subGraph' + i); // reposition labels\n\n for (i = 0; i < subGraphs.length; i++) {\n subG = subGraphs[i];\n\n if (subG.title !== 'undefined') {\n var clusterRects = document.querySelectorAll('#' + id + ' [id=\"' + _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(subG.id) + '\"] rect');\n var clusterEl = document.querySelectorAll('#' + id + ' [id=\"' + _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(subG.id) + '\"]');\n var xPos = clusterRects[0].x.baseVal.value;\n var yPos = clusterRects[0].y.baseVal.value;\n var _width = clusterRects[0].width.baseVal.value;\n var cluster = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(clusterEl[0]);\n var te = cluster.select('.label');\n te.attr('transform', \"translate(\".concat(xPos + _width / 2, \", \").concat(yPos + 14, \")\"));\n te.attr('id', id + 'Text');\n\n for (var _j = 0; _j < subG.classes.length; _j++) {\n clusterEl[0].classList.add(subG.classes[_j]);\n }\n }\n } // Add label rects for non html labels\n\n\n if (!conf.htmlLabels || true) {\n // eslint-disable-line\n var labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n\n for (var k = 0; k < labels.length; k++) {\n var label = labels[k]; // Get dimensions of label\n\n var dim = label.getBBox();\n var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height); // rect.setAttribute('style', 'fill:#e8e8e8;');\n\n label.insertBefore(rect, label.firstChild);\n }\n } // If node has a link, wrap it in an anchor SVG object.\n\n\n var keys = Object.keys(vert);\n keys.forEach(function (key) {\n var vertex = vert[key];\n\n if (vertex.link) {\n var node = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])('#' + id + ' [id=\"' + _flowDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lookUpDomId(key) + '\"]');\n\n if (node) {\n var link = document.createElementNS('http://www.w3.org/2000/svg', 'a');\n link.setAttributeNS('http://www.w3.org/2000/svg', 'class', vertex.classes.join(' '));\n link.setAttributeNS('http://www.w3.org/2000/svg', 'href', vertex.link);\n link.setAttributeNS('http://www.w3.org/2000/svg', 'rel', 'noopener');\n\n if (vertex.linkTarget) {\n link.setAttributeNS('http://www.w3.org/2000/svg', 'target', vertex.linkTarget);\n }\n\n var linkNode = node.insert(function () {\n return link;\n }, ':first-child');\n var shape = node.select('.label-container');\n\n if (shape) {\n linkNode.append(function () {\n return shape.node();\n });\n }\n\n var _label = node.select('.label');\n\n if (_label) {\n linkNode.append(function () {\n return _label.node();\n });\n }\n }\n }\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n addVertices: addVertices,\n addEdges: addEdges,\n getClasses: getClasses,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/flowchart/parser/flow.jison\":\n/*!**************************************************!*\\\n !*** ./src/diagrams/flowchart/parser/flow.jison ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,9],$V1=[1,7],$V2=[1,6],$V3=[1,8],$V4=[1,20,21,22,23,38,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$V5=[2,10],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,30],$Vb=[1,54],$Vc=[1,32],$Vd=[1,33],$Ve=[1,34],$Vf=[1,35],$Vg=[1,36],$Vh=[1,48],$Vi=[1,43],$Vj=[1,45],$Vk=[1,40],$Vl=[1,44],$Vm=[1,47],$Vn=[1,51],$Vo=[1,52],$Vp=[1,53],$Vq=[1,42],$Vr=[1,46],$Vs=[1,49],$Vt=[1,50],$Vu=[1,41],$Vv=[1,57],$Vw=[1,62],$Vx=[1,20,21,22,23,38,42,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$Vy=[1,66],$Vz=[1,65],$VA=[1,67],$VB=[20,21,23,69,70],$VC=[1,88],$VD=[1,93],$VE=[1,90],$VF=[1,95],$VG=[1,98],$VH=[1,96],$VI=[1,97],$VJ=[1,91],$VK=[1,103],$VL=[1,102],$VM=[1,92],$VN=[1,94],$VO=[1,99],$VP=[1,100],$VQ=[1,101],$VR=[1,104],$VS=[20,21,22,23,69,70],$VT=[20,21,22,23,47,69,70],$VU=[20,21,22,23,40,46,47,49,51,53,55,57,59,61,62,64,69,70,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$VV=[20,21,23],$VW=[20,21,23,46,69,70,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$VX=[1,12,20,21,22,23,24,38,42,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$VY=[46,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$VZ=[1,136],$V_=[1,144],$V$=[1,145],$V01=[1,146],$V11=[1,147],$V21=[1,131],$V31=[1,132],$V41=[1,128],$V51=[1,139],$V61=[1,140],$V71=[1,141],$V81=[1,142],$V91=[1,143],$Va1=[1,148],$Vb1=[1,149],$Vc1=[1,134],$Vd1=[1,137],$Ve1=[1,133],$Vf1=[1,130],$Vg1=[20,21,22,23,38,42,46,75,76,77,78,79,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$Vh1=[1,152],$Vi1=[20,21,22,23,26,46,80,94,95,98,99,100,102,103,109,110,111,112,113,114],$Vj1=[20,21,22,23,24,26,38,40,41,42,46,50,52,54,56,58,60,61,63,65,69,70,71,75,76,77,78,79,80,81,84,94,95,98,99,100,102,103,104,105,109,110,111,112,113,114],$Vk1=[12,21,22,24],$Vl1=[22,95],$Vm1=[1,233],$Vn1=[1,237],$Vo1=[1,234],$Vp1=[1,231],$Vq1=[1,228],$Vr1=[1,229],$Vs1=[1,230],$Vt1=[1,232],$Vu1=[1,235],$Vv1=[1,236],$Vw1=[1,238],$Vx1=[1,255],$Vy1=[20,21,23,95],$Vz1=[20,21,22,23,75,91,94,95,98,99,100,101,102,103,104];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"mermaidDoc\":4,\"directive\":5,\"openDirective\":6,\"typeDirective\":7,\"closeDirective\":8,\"separator\":9,\":\":10,\"argDirective\":11,\"open_directive\":12,\"type_directive\":13,\"arg_directive\":14,\"close_directive\":15,\"graphConfig\":16,\"document\":17,\"line\":18,\"statement\":19,\"SEMI\":20,\"NEWLINE\":21,\"SPACE\":22,\"EOF\":23,\"GRAPH\":24,\"NODIR\":25,\"DIR\":26,\"FirstStmtSeperator\":27,\"ending\":28,\"endToken\":29,\"spaceList\":30,\"spaceListNewline\":31,\"verticeStatement\":32,\"styleStatement\":33,\"linkStyleStatement\":34,\"classDefStatement\":35,\"classStatement\":36,\"clickStatement\":37,\"subgraph\":38,\"text\":39,\"SQS\":40,\"SQE\":41,\"end\":42,\"link\":43,\"node\":44,\"vertex\":45,\"AMP\":46,\"STYLE_SEPARATOR\":47,\"idString\":48,\"PS\":49,\"PE\":50,\"(-\":51,\"-)\":52,\"STADIUMSTART\":53,\"STADIUMEND\":54,\"SUBROUTINESTART\":55,\"SUBROUTINEEND\":56,\"CYLINDERSTART\":57,\"CYLINDEREND\":58,\"DIAMOND_START\":59,\"DIAMOND_STOP\":60,\"TAGEND\":61,\"TRAPSTART\":62,\"TRAPEND\":63,\"INVTRAPSTART\":64,\"INVTRAPEND\":65,\"linkStatement\":66,\"arrowText\":67,\"TESTSTR\":68,\"START_LINK\":69,\"LINK\":70,\"PIPE\":71,\"textToken\":72,\"STR\":73,\"keywords\":74,\"STYLE\":75,\"LINKSTYLE\":76,\"CLASSDEF\":77,\"CLASS\":78,\"CLICK\":79,\"DOWN\":80,\"UP\":81,\"textNoTags\":82,\"textNoTagsToken\":83,\"DEFAULT\":84,\"stylesOpt\":85,\"alphaNum\":86,\"CALLBACKNAME\":87,\"CALLBACKARGS\":88,\"HREF\":89,\"LINK_TARGET\":90,\"HEX\":91,\"numList\":92,\"INTERPOLATE\":93,\"NUM\":94,\"COMMA\":95,\"style\":96,\"styleComponent\":97,\"ALPHA\":98,\"COLON\":99,\"MINUS\":100,\"UNIT\":101,\"BRKT\":102,\"DOT\":103,\"PCT\":104,\"TAGSTART\":105,\"alphaNumToken\":106,\"idStringToken\":107,\"alphaNumStatement\":108,\"PUNCTUATION\":109,\"UNICODE_TEXT\":110,\"PLUS\":111,\"EQUALS\":112,\"MULT\":113,\"UNDERSCORE\":114,\"graphCodeTokens\":115,\"ARROW_CROSS\":116,\"ARROW_POINT\":117,\"ARROW_CIRCLE\":118,\"ARROW_OPEN\":119,\"QUOTE\":120,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",10:\":\",12:\"open_directive\",13:\"type_directive\",14:\"arg_directive\",15:\"close_directive\",20:\"SEMI\",21:\"NEWLINE\",22:\"SPACE\",23:\"EOF\",24:\"GRAPH\",25:\"NODIR\",26:\"DIR\",38:\"subgraph\",40:\"SQS\",41:\"SQE\",42:\"end\",46:\"AMP\",47:\"STYLE_SEPARATOR\",49:\"PS\",50:\"PE\",51:\"(-\",52:\"-)\",53:\"STADIUMSTART\",54:\"STADIUMEND\",55:\"SUBROUTINESTART\",56:\"SUBROUTINEEND\",57:\"CYLINDERSTART\",58:\"CYLINDEREND\",59:\"DIAMOND_START\",60:\"DIAMOND_STOP\",61:\"TAGEND\",62:\"TRAPSTART\",63:\"TRAPEND\",64:\"INVTRAPSTART\",65:\"INVTRAPEND\",68:\"TESTSTR\",69:\"START_LINK\",70:\"LINK\",71:\"PIPE\",73:\"STR\",75:\"STYLE\",76:\"LINKSTYLE\",77:\"CLASSDEF\",78:\"CLASS\",79:\"CLICK\",80:\"DOWN\",81:\"UP\",84:\"DEFAULT\",87:\"CALLBACKNAME\",88:\"CALLBACKARGS\",89:\"HREF\",90:\"LINK_TARGET\",91:\"HEX\",93:\"INTERPOLATE\",94:\"NUM\",95:\"COMMA\",98:\"ALPHA\",99:\"COLON\",100:\"MINUS\",101:\"UNIT\",102:\"BRKT\",103:\"DOT\",104:\"PCT\",105:\"TAGSTART\",109:\"PUNCTUATION\",110:\"UNICODE_TEXT\",111:\"PLUS\",112:\"EQUALS\",113:\"MULT\",114:\"UNDERSCORE\",116:\"ARROW_CROSS\",117:\"ARROW_POINT\",118:\"ARROW_CIRCLE\",119:\"ARROW_OPEN\",120:\"QUOTE\"},\nproductions_: [0,[3,1],[3,2],[5,4],[5,6],[6,1],[7,1],[11,1],[8,1],[4,2],[17,0],[17,2],[18,1],[18,1],[18,1],[18,1],[18,1],[16,2],[16,2],[16,2],[16,3],[28,2],[28,1],[29,1],[29,1],[29,1],[27,1],[27,1],[27,2],[31,2],[31,2],[31,1],[31,1],[30,2],[30,1],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,9],[19,6],[19,4],[9,1],[9,1],[9,1],[32,3],[32,4],[32,2],[32,1],[44,1],[44,5],[44,3],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[43,2],[43,3],[43,3],[43,1],[43,3],[66,1],[67,3],[39,1],[39,2],[39,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[74,1],[82,1],[82,2],[35,5],[35,5],[36,5],[37,2],[37,4],[37,3],[37,5],[37,2],[37,4],[37,4],[37,6],[37,2],[37,4],[37,2],[37,4],[37,4],[37,6],[33,5],[33,5],[34,5],[34,5],[34,9],[34,9],[34,7],[34,7],[92,1],[92,3],[85,1],[85,3],[96,1],[96,2],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[97,1],[72,1],[72,1],[72,1],[72,1],[72,1],[72,1],[83,1],[83,1],[83,1],[83,1],[48,1],[48,2],[86,1],[86,2],[108,1],[108,1],[108,1],[108,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[106,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1],[115,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'flowchart'); \nbreak;\ncase 10:\n this.$ = [];\nbreak;\ncase 11:\n\n\t if($$[$0] !== []){\n\t $$[$0-1].push($$[$0]);\n\t }\n\t this.$=$$[$0-1];\nbreak;\ncase 12: case 76: case 78: case 90: case 146: case 148: case 149:\nthis.$=$$[$0];\nbreak;\ncase 19:\n yy.setDirection('TB');this.$ = 'TB';\nbreak;\ncase 20:\n yy.setDirection($$[$0-1]);this.$ = $$[$0-1];\nbreak;\ncase 35:\n /* console.warn('finat vs', $$[$0-1].nodes); */ this.$=$$[$0-1].nodes\nbreak;\ncase 36: case 37: case 38: case 39: case 40:\nthis.$=[];\nbreak;\ncase 41:\nthis.$=yy.addSubGraph($$[$0-6],$$[$0-1],$$[$0-4]);\nbreak;\ncase 42:\nthis.$=yy.addSubGraph($$[$0-3],$$[$0-1],$$[$0-3]);\nbreak;\ncase 43:\nthis.$=yy.addSubGraph(undefined,$$[$0-1],undefined);\nbreak;\ncase 47:\n /* console.warn('vs',$$[$0-2].stmt,$$[$0]); */ yy.addLink($$[$0-2].stmt,$$[$0],$$[$0-1]); this.$ = { stmt: $$[$0], nodes: $$[$0].concat($$[$0-2].nodes) } \nbreak;\ncase 48:\n /* console.warn('vs',$$[$0-3].stmt,$$[$0-1]); */ yy.addLink($$[$0-3].stmt,$$[$0-1],$$[$0-2]); this.$ = { stmt: $$[$0-1], nodes: $$[$0-1].concat($$[$0-3].nodes) } \nbreak;\ncase 49:\n/*console.warn('noda', $$[$0-1]);*/ this.$ = {stmt: $$[$0-1], nodes:$$[$0-1] }\nbreak;\ncase 50:\n /*console.warn('noda', $$[$0]);*/ this.$ = {stmt: $$[$0], nodes:$$[$0] }\nbreak;\ncase 51:\n /* console.warn('nod', $$[$0]); */ this.$ = [$$[$0]];\nbreak;\ncase 52:\n this.$ = $$[$0-4].concat($$[$0]); /* console.warn('pip', $$[$0-4][0], $$[$0], this.$); */ \nbreak;\ncase 53:\nthis.$ = [$$[$0-2]];yy.setClass($$[$0-2],$$[$0])\nbreak;\ncase 54:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'square');\nbreak;\ncase 55:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'circle');\nbreak;\ncase 56:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'ellipse');\nbreak;\ncase 57:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'stadium');\nbreak;\ncase 58:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'subroutine');\nbreak;\ncase 59:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'cylinder');\nbreak;\ncase 60:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'round');\nbreak;\ncase 61:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'diamond');\nbreak;\ncase 62:\nthis.$ = $$[$0-5];yy.addVertex($$[$0-5],$$[$0-2],'hexagon');\nbreak;\ncase 63:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'odd');\nbreak;\ncase 64:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'trapezoid');\nbreak;\ncase 65:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'inv_trapezoid');\nbreak;\ncase 66:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_right');\nbreak;\ncase 67:\nthis.$ = $$[$0-3];yy.addVertex($$[$0-3],$$[$0-1],'lean_left');\nbreak;\ncase 68:\n /*console.warn('h: ', $$[$0]);*/this.$ = $$[$0];yy.addVertex($$[$0]);\nbreak;\ncase 69:\n$$[$0-1].text = $$[$0];this.$ = $$[$0-1];\nbreak;\ncase 70: case 71:\n$$[$0-2].text = $$[$0-1];this.$ = $$[$0-2];\nbreak;\ncase 72:\nthis.$ = $$[$0];\nbreak;\ncase 73:\nvar inf = yy.destructLink($$[$0], $$[$0-2]); this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length,\"text\":$$[$0-1]};\nbreak;\ncase 74:\nvar inf = yy.destructLink($$[$0]);this.$ = {\"type\":inf.type,\"stroke\":inf.stroke,\"length\":inf.length};\nbreak;\ncase 75:\nthis.$ = $$[$0-1];\nbreak;\ncase 77: case 91: case 147:\nthis.$=$$[$0-1]+''+$$[$0];\nbreak;\ncase 92: case 93:\nthis.$ = $$[$0-4];yy.addClass($$[$0-2],$$[$0]);\nbreak;\ncase 94:\nthis.$ = $$[$0-4];yy.setClass($$[$0-2], $$[$0]);\nbreak;\ncase 95: case 103:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0]);\nbreak;\ncase 96: case 104:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 97:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 98:\nthis.$ = $$[$0-4];yy.setClickEvent($$[$0-4], $$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-4], $$[$0]);\nbreak;\ncase 99: case 105:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 100: case 106:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2]);yy.setTooltip($$[$0-3], $$[$0]);\nbreak;\ncase 101: case 107:\nthis.$ = $$[$0-3];yy.setLink($$[$0-3], $$[$0-2], $$[$0]);\nbreak;\ncase 102: case 108:\nthis.$ = $$[$0-5];yy.setLink($$[$0-5], $$[$0-4], $$[$0]);yy.setTooltip($$[$0-5], $$[$0-2]);\nbreak;\ncase 109:\nthis.$ = $$[$0-4];yy.addVertex($$[$0-2],undefined,undefined,$$[$0]);\nbreak;\ncase 110: case 112:\nthis.$ = $$[$0-4];yy.updateLink($$[$0-2],$$[$0]);\nbreak;\ncase 111:\nthis.$ = $$[$0-4];yy.updateLink([$$[$0-2]],$$[$0]);\nbreak;\ncase 113:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate([$$[$0-6]],$$[$0-2]);yy.updateLink([$$[$0-6]],$$[$0]);\nbreak;\ncase 114:\nthis.$ = $$[$0-8];yy.updateLinkInterpolate($$[$0-6],$$[$0-2]);yy.updateLink($$[$0-6],$$[$0]);\nbreak;\ncase 115:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate([$$[$0-4]],$$[$0]);\nbreak;\ncase 116:\nthis.$ = $$[$0-6];yy.updateLinkInterpolate($$[$0-4],$$[$0]);\nbreak;\ncase 117: case 119:\nthis.$ = [$$[$0]]\nbreak;\ncase 118: case 120:\n$$[$0-2].push($$[$0]);this.$ = $$[$0-2];\nbreak;\ncase 122:\nthis.$ = $$[$0-1] + $$[$0];\nbreak;\ncase 144:\nthis.$=$$[$0]\nbreak;\ncase 145:\nthis.$=$$[$0-1]+''+$$[$0]\nbreak;\ncase 150:\nthis.$='v';\nbreak;\ncase 151:\nthis.$='-';\nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},{1:[3]},{1:[2,1]},{3:10,4:2,5:3,6:5,12:$V0,16:4,21:$V1,22:$V2,24:$V3},o($V4,$V5,{17:11}),{7:12,13:[1,13]},{16:14,21:$V1,22:$V2,24:$V3},{16:15,21:$V1,22:$V2,24:$V3},{25:[1,16],26:[1,17]},{13:[2,5]},{1:[2,2]},{1:[2,9],18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},{8:55,10:[1,56],15:$Vv},o([10,15],[2,6]),o($V4,[2,17]),o($V4,[2,18]),o($V4,[2,19]),{20:[1,59],21:[1,60],22:$Vw,27:58,30:61},o($Vx,[2,11]),o($Vx,[2,12]),o($Vx,[2,13]),o($Vx,[2,14]),o($Vx,[2,15]),o($Vx,[2,16]),{9:63,20:$Vy,21:$Vz,23:$VA,43:64,66:68,69:[1,69],70:[1,70]},{9:71,20:$Vy,21:$Vz,23:$VA},{9:72,20:$Vy,21:$Vz,23:$VA},{9:73,20:$Vy,21:$Vz,23:$VA},{9:74,20:$Vy,21:$Vz,23:$VA},{9:75,20:$Vy,21:$Vz,23:$VA},{9:77,20:$Vy,21:$Vz,22:[1,76],23:$VA},o($VB,[2,50],{30:78,22:$Vw}),{22:[1,79]},{22:[1,80]},{22:[1,81]},{22:[1,82]},{26:$VC,46:$VD,73:[1,86],80:$VE,86:85,87:[1,83],89:[1,84],94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VS,[2,51],{47:[1,105]}),o($VT,[2,68],{107:116,40:[1,106],46:$Vb,49:[1,107],51:[1,108],53:[1,109],55:[1,110],57:[1,111],59:[1,112],61:[1,113],62:[1,114],64:[1,115],80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu}),o($VU,[2,144]),o($VU,[2,165]),o($VU,[2,166]),o($VU,[2,167]),o($VU,[2,168]),o($VU,[2,169]),o($VU,[2,170]),o($VU,[2,171]),o($VU,[2,172]),o($VU,[2,173]),o($VU,[2,174]),o($VU,[2,175]),o($VU,[2,176]),o($VU,[2,177]),o($VU,[2,178]),o($VU,[2,179]),{9:117,20:$Vy,21:$Vz,23:$VA},{11:118,14:[1,119]},o($VV,[2,8]),o($V4,[2,20]),o($V4,[2,26]),o($V4,[2,27]),{21:[1,120]},o($VW,[2,34],{30:121,22:$Vw}),o($Vx,[2,35]),{44:122,45:37,46:$Vb,48:38,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},o($VX,[2,44]),o($VX,[2,45]),o($VX,[2,46]),o($VY,[2,72],{67:123,68:[1,124],71:[1,125]}),{22:$VZ,24:$V_,26:$V$,38:$V01,39:126,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o([46,68,71,80,94,95,98,99,100,102,103,109,110,111,112,113,114],[2,74]),o($Vx,[2,36]),o($Vx,[2,37]),o($Vx,[2,38]),o($Vx,[2,39]),o($Vx,[2,40]),{22:$VZ,24:$V_,26:$V$,38:$V01,39:150,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($Vg1,$V5,{17:151}),o($VB,[2,49],{46:$Vh1}),{26:$VC,46:$VD,80:$VE,86:153,91:[1,154],94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{84:[1,155],92:156,94:[1,157]},{26:$VC,46:$VD,80:$VE,84:[1,158],86:159,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{26:$VC,46:$VD,80:$VE,86:160,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VV,[2,95],{22:[1,161],88:[1,162]}),o($VV,[2,99],{22:[1,163]}),o($VV,[2,103],{106:89,108:165,22:[1,164],26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR}),o($VV,[2,105],{22:[1,166]}),o($Vi1,[2,146]),o($Vi1,[2,148]),o($Vi1,[2,149]),o($Vi1,[2,150]),o($Vi1,[2,151]),o($Vj1,[2,152]),o($Vj1,[2,153]),o($Vj1,[2,154]),o($Vj1,[2,155]),o($Vj1,[2,156]),o($Vj1,[2,157]),o($Vj1,[2,158]),o($Vj1,[2,159]),o($Vj1,[2,160]),o($Vj1,[2,161]),o($Vj1,[2,162]),o($Vj1,[2,163]),o($Vj1,[2,164]),{46:$Vb,48:167,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},{22:$VZ,24:$V_,26:$V$,38:$V01,39:168,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:170,42:$V11,46:$VD,49:[1,169],61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:171,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:172,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:173,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:174,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:175,42:$V11,46:$VD,59:[1,176],61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:177,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:178,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:179,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VU,[2,145]),o($Vk1,[2,3]),{8:180,15:$Vv},{15:[2,7]},o($V4,[2,28]),o($VW,[2,33]),o($VB,[2,47],{30:181,22:$Vw}),o($VY,[2,69],{22:[1,182]}),{22:[1,183]},{22:$VZ,24:$V_,26:$V$,38:$V01,39:184,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,61:$V21,69:$V31,70:[1,185],72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($Vj1,[2,76]),o($Vj1,[2,78]),o($Vj1,[2,134]),o($Vj1,[2,135]),o($Vj1,[2,136]),o($Vj1,[2,137]),o($Vj1,[2,138]),o($Vj1,[2,139]),o($Vj1,[2,140]),o($Vj1,[2,141]),o($Vj1,[2,142]),o($Vj1,[2,143]),o($Vj1,[2,79]),o($Vj1,[2,80]),o($Vj1,[2,81]),o($Vj1,[2,82]),o($Vj1,[2,83]),o($Vj1,[2,84]),o($Vj1,[2,85]),o($Vj1,[2,86]),o($Vj1,[2,87]),o($Vj1,[2,88]),o($Vj1,[2,89]),{9:188,20:$Vy,21:$Vz,22:$VZ,23:$VA,24:$V_,26:$V$,38:$V01,40:[1,187],42:$V11,46:$VD,61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,189],44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},{22:$Vw,30:190},{22:[1,191],26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:165,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:[1,192]},{22:[1,193]},{22:[1,194],95:[1,195]},o($Vl1,[2,117]),{22:[1,196]},{22:[1,197],26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:165,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:[1,198],26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:165,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{73:[1,199]},o($VV,[2,97],{22:[1,200]}),{73:[1,201],90:[1,202]},{73:[1,203]},o($Vi1,[2,147]),{73:[1,204],90:[1,205]},o($VS,[2,53],{107:116,46:$Vb,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu}),{22:$VZ,24:$V_,26:$V$,38:$V01,41:[1,206],42:$V11,46:$VD,61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:207,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,50:[1,208],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,52:[1,209],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,54:[1,210],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,56:[1,211],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,58:[1,212],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,60:[1,213],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,39:214,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,41:[1,215],42:$V11,46:$VD,61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,61:$V21,63:[1,216],65:[1,217],69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,61:$V21,63:[1,219],65:[1,218],69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{9:220,20:$Vy,21:$Vz,23:$VA},o($VB,[2,48],{46:$Vh1}),o($VY,[2,71]),o($VY,[2,70]),{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,61:$V21,69:$V31,71:[1,221],72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VY,[2,73]),o($Vj1,[2,77]),{22:$VZ,24:$V_,26:$V$,38:$V01,39:222,42:$V11,46:$VD,61:$V21,69:$V31,72:127,73:$V41,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($Vg1,$V5,{17:223}),o($Vx,[2,43]),{45:224,46:$Vb,48:38,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},{22:$Vm1,75:$Vn1,85:225,91:$Vo1,94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{22:$Vm1,75:$Vn1,85:239,91:$Vo1,94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{22:$Vm1,75:$Vn1,85:240,91:$Vo1,93:[1,241],94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{22:$Vm1,75:$Vn1,85:242,91:$Vo1,93:[1,243],94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{94:[1,244]},{22:$Vm1,75:$Vn1,85:245,91:$Vo1,94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{22:$Vm1,75:$Vn1,85:246,91:$Vo1,94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{26:$VC,46:$VD,80:$VE,86:247,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VV,[2,96]),{73:[1,248]},o($VV,[2,100],{22:[1,249]}),o($VV,[2,101]),o($VV,[2,104]),o($VV,[2,106],{22:[1,250]}),o($VV,[2,107]),o($VT,[2,54]),{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,50:[1,251],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VT,[2,60]),o($VT,[2,56]),o($VT,[2,57]),o($VT,[2,58]),o($VT,[2,59]),o($VT,[2,61]),{22:$VZ,24:$V_,26:$V$,38:$V01,42:$V11,46:$VD,60:[1,252],61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VT,[2,63]),o($VT,[2,64]),o($VT,[2,66]),o($VT,[2,65]),o($VT,[2,67]),o($Vk1,[2,4]),o([22,46,80,94,95,98,99,100,102,103,109,110,111,112,113,114],[2,75]),{22:$VZ,24:$V_,26:$V$,38:$V01,41:[1,253],42:$V11,46:$VD,61:$V21,69:$V31,72:186,74:138,75:$V51,76:$V61,77:$V71,78:$V81,79:$V91,80:$Va1,81:$Vb1,83:129,84:$Vc1,94:$VF,95:$VG,98:$VH,99:$VI,100:$Vd1,102:$VK,103:$VL,104:$Ve1,105:$Vf1,106:135,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,254],44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},o($VS,[2,52]),o($VV,[2,109],{95:$Vx1}),o($Vy1,[2,119],{97:256,22:$Vm1,75:$Vn1,91:$Vo1,94:$Vp1,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1}),o($Vz1,[2,121]),o($Vz1,[2,123]),o($Vz1,[2,124]),o($Vz1,[2,125]),o($Vz1,[2,126]),o($Vz1,[2,127]),o($Vz1,[2,128]),o($Vz1,[2,129]),o($Vz1,[2,130]),o($Vz1,[2,131]),o($Vz1,[2,132]),o($Vz1,[2,133]),o($VV,[2,110],{95:$Vx1}),o($VV,[2,111],{95:$Vx1}),{22:[1,257]},o($VV,[2,112],{95:$Vx1}),{22:[1,258]},o($Vl1,[2,118]),o($VV,[2,92],{95:$Vx1}),o($VV,[2,93],{95:$Vx1}),o($VV,[2,94],{106:89,108:165,26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR}),o($VV,[2,98]),{90:[1,259]},{90:[1,260]},{50:[1,261]},{60:[1,262]},{9:263,20:$Vy,21:$Vz,23:$VA},o($Vx,[2,42]),{22:$Vm1,75:$Vn1,91:$Vo1,94:$Vp1,96:264,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},o($Vz1,[2,122]),{26:$VC,46:$VD,80:$VE,86:265,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},{26:$VC,46:$VD,80:$VE,86:266,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,106:89,108:87,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR},o($VV,[2,102]),o($VV,[2,108]),o($VT,[2,55]),o($VT,[2,62]),o($Vg1,$V5,{17:267}),o($Vy1,[2,120],{97:256,22:$Vm1,75:$Vn1,91:$Vo1,94:$Vp1,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1}),o($VV,[2,115],{106:89,108:165,22:[1,268],26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR}),o($VV,[2,116],{106:89,108:165,22:[1,269],26:$VC,46:$VD,80:$VE,94:$VF,95:$VG,98:$VH,99:$VI,100:$VJ,102:$VK,103:$VL,109:$VM,110:$VN,111:$VO,112:$VP,113:$VQ,114:$VR}),{18:18,19:19,20:$V6,21:$V7,22:$V8,23:$V9,32:24,33:25,34:26,35:27,36:28,37:29,38:$Va,42:[1,270],44:31,45:37,46:$Vb,48:38,75:$Vc,76:$Vd,77:$Ve,78:$Vf,79:$Vg,80:$Vh,94:$Vi,95:$Vj,98:$Vk,99:$Vl,100:$Vm,102:$Vn,103:$Vo,107:39,109:$Vp,110:$Vq,111:$Vr,112:$Vs,113:$Vt,114:$Vu},{22:$Vm1,75:$Vn1,85:271,91:$Vo1,94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},{22:$Vm1,75:$Vn1,85:272,91:$Vo1,94:$Vp1,96:226,97:227,98:$Vq1,99:$Vr1,100:$Vs1,101:$Vt1,102:$Vu1,103:$Vv1,104:$Vw1},o($Vx,[2,41]),o($VV,[2,113],{95:$Vx1}),o($VV,[2,114],{95:$Vx1})],\ndefaultActions: {2:[2,1],9:[2,5],10:[2,2],119:[2,7]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 12; \nbreak;\ncase 1: this.begin('type_directive'); return 13; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 10; \nbreak;\ncase 3: this.popState(); this.popState(); return 15; \nbreak;\ncase 4:return 14;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:this.begin(\"string\");\nbreak;\ncase 8:this.popState();\nbreak;\ncase 9:return \"STR\";\nbreak;\ncase 10:return 75;\nbreak;\ncase 11:return 84;\nbreak;\ncase 12:return 76;\nbreak;\ncase 13:return 93;\nbreak;\ncase 14:return 77;\nbreak;\ncase 15:return 78;\nbreak;\ncase 16:this.begin(\"href\");\nbreak;\ncase 17:this.popState();\nbreak;\ncase 18:return 89;\nbreak;\ncase 19:this.begin(\"callbackname\");\nbreak;\ncase 20:this.popState();\nbreak;\ncase 21:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 22:return 87;\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24:return 88;\nbreak;\ncase 25:this.begin(\"click\");\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:return 79;\nbreak;\ncase 28:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 29:if(yy.lex.firstGraph()){this.begin(\"dir\");} return 24;\nbreak;\ncase 30:return 38;\nbreak;\ncase 31:return 42;\nbreak;\ncase 32:return 90;\nbreak;\ncase 33:return 90;\nbreak;\ncase 34:return 90;\nbreak;\ncase 35:return 90;\nbreak;\ncase 36: this.popState(); return 25; \nbreak;\ncase 37: this.popState(); return 26; \nbreak;\ncase 38: this.popState(); return 26; \nbreak;\ncase 39: this.popState(); return 26; \nbreak;\ncase 40: this.popState(); return 26; \nbreak;\ncase 41: this.popState(); return 26; \nbreak;\ncase 42: this.popState(); return 26; \nbreak;\ncase 43: this.popState(); return 26; \nbreak;\ncase 44: this.popState(); return 26; \nbreak;\ncase 45: this.popState(); return 26; \nbreak;\ncase 46: this.popState(); return 26; \nbreak;\ncase 47: return 94;\nbreak;\ncase 48:return 102;\nbreak;\ncase 49:return 47;\nbreak;\ncase 50:return 99;\nbreak;\ncase 51:return 46;\nbreak;\ncase 52:return 20;\nbreak;\ncase 53:return 95;\nbreak;\ncase 54:return 113;\nbreak;\ncase 55:return 70;\nbreak;\ncase 56:return 70;\nbreak;\ncase 57:return 70;\nbreak;\ncase 58:return 69;\nbreak;\ncase 59:return 69;\nbreak;\ncase 60:return 69;\nbreak;\ncase 61:return 51;\nbreak;\ncase 62:return 52;\nbreak;\ncase 63:return 53;\nbreak;\ncase 64:return 54;\nbreak;\ncase 65:return 55;\nbreak;\ncase 66:return 56;\nbreak;\ncase 67:return 57;\nbreak;\ncase 68:return 58;\nbreak;\ncase 69:return 100;\nbreak;\ncase 70:return 103;\nbreak;\ncase 71:return 114;\nbreak;\ncase 72:return 111;\nbreak;\ncase 73:return 104;\nbreak;\ncase 74:return 112;\nbreak;\ncase 75:return 112;\nbreak;\ncase 76:return 105;\nbreak;\ncase 77:return 61;\nbreak;\ncase 78:return 81;\nbreak;\ncase 79:return 'SEP';\nbreak;\ncase 80:return 80;\nbreak;\ncase 81:return 98;\nbreak;\ncase 82:return 63;\nbreak;\ncase 83:return 62;\nbreak;\ncase 84:return 65;\nbreak;\ncase 85:return 64;\nbreak;\ncase 86:return 109;\nbreak;\ncase 87:return 110;\nbreak;\ncase 88:return 71;\nbreak;\ncase 89:return 49;\nbreak;\ncase 90:return 50;\nbreak;\ncase 91:return 40;\nbreak;\ncase 92:return 41;\nbreak;\ncase 93:return 59\nbreak;\ncase 94:return 60\nbreak;\ncase 95:return 120;\nbreak;\ncase 96:return 21;\nbreak;\ncase 97:return 22;\nbreak;\ncase 98:return 23;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/,/^(?:((?:(?!\\}%%)[^:.])*))/,/^(?::)/,/^(?:\\}%%)/,/^(?:((?:(?!\\}%%).|\\n)*))/,/^(?:%%(?!\\{)[^\\n]*)/,/^(?:[^\\}]%%[^\\n]*)/,/^(?:[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:style\\b)/,/^(?:default\\b)/,/^(?:linkStyle\\b)/,/^(?:interpolate\\b)/,/^(?:classDef\\b)/,/^(?:class\\b)/,/^(?:href[\\s]+[\"])/,/^(?:[\"])/,/^(?:[^\"]*)/,/^(?:call[\\s]+)/,/^(?:\\([\\s]*\\))/,/^(?:\\()/,/^(?:[^(]*)/,/^(?:\\))/,/^(?:[^)]*)/,/^(?:click[\\s]+)/,/^(?:[\\s\\n])/,/^(?:[^\\s\\n]*)/,/^(?:graph\\b)/,/^(?:flowchart\\b)/,/^(?:subgraph\\b)/,/^(?:end\\b\\s*)/,/^(?:_self\\b)/,/^(?:_blank\\b)/,/^(?:_parent\\b)/,/^(?:_top\\b)/,/^(?:(\\r?\\n)*\\s*\\n)/,/^(?:\\s*LR\\b)/,/^(?:\\s*RL\\b)/,/^(?:\\s*TB\\b)/,/^(?:\\s*BT\\b)/,/^(?:\\s*TD\\b)/,/^(?:\\s*BR\\b)/,/^(?:\\s*<)/,/^(?:\\s*>)/,/^(?:\\s*\\^)/,/^(?:\\s*v\\b)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\\*)/,/^(?:\\s*[xo<]?--+[-xo>]\\s*)/,/^(?:\\s*[xo<]?==+[=xo>]\\s*)/,/^(?:\\s*[xo<]?-?\\.+-[xo>]?\\s*)/,/^(?:\\s*[xo<]?--\\s*)/,/^(?:\\s*[xo<]?==\\s*)/,/^(?:\\s*[xo<]?-\\.\\s*)/,/^(?:\\(-)/,/^(?:-\\))/,/^(?:\\(\\[)/,/^(?:\\]\\))/,/^(?:\\[\\[)/,/^(?:\\]\\])/,/^(?:\\[\\()/,/^(?:\\)\\])/,/^(?:-)/,/^(?:\\.)/,/^(?:[\\_])/,/^(?:\\+)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:<)/,/^(?:>)/,/^(?:\\^)/,/^(?:\\\\\\|)/,/^(?:v\\b)/,/^(?:[A-Za-z]+)/,/^(?:\\\\\\])/,/^(?:\\[\\/)/,/^(?:\\/\\])/,/^(?:\\[\\\\)/,/^(?:[!\"#$%&'*+,-.`?\\\\_/])/,/^(?:[\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]|[\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377]|[\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5]|[\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA]|[\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE]|[\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA]|[\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0]|[\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977]|[\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2]|[\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A]|[\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39]|[\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8]|[\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C]|[\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C]|[\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99]|[\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0]|[\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D]|[\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3]|[\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10]|[\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1]|[\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81]|[\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3]|[\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6]|[\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A]|[\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081]|[\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D]|[\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0]|[\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310]|[\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C]|[\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711]|[\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7]|[\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C]|[\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16]|[\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF]|[\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC]|[\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D]|[\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D]|[\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3]|[\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F]|[\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128]|[\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184]|[\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3]|[\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6]|[\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE]|[\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C]|[\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D]|[\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC]|[\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B]|[\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788]|[\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805]|[\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB]|[\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28]|[\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5]|[\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4]|[\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E]|[\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D]|[\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36]|[\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D]|[\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC]|[\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF]|[\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC])/,/^(?:\\|)/,/^(?:\\()/,/^(?:\\))/,/^(?:\\[)/,/^(?:\\])/,/^(?:\\{)/,/^(?:\\})/,/^(?:\")/,/^(?:(\\r?\\n)+)/,/^(?:\\s)/,/^(?:$)/],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[23,24],\"inclusive\":false},\"callbackname\":{\"rules\":[20,21,22],\"inclusive\":false},\"href\":{\"rules\":[17,18],\"inclusive\":false},\"click\":{\"rules\":[26,27],\"inclusive\":false},\"vertex\":{\"rules\":[],\"inclusive\":false},\"dir\":{\"rules\":[36,37,38,39,40,41,42,43,44,45,46],\"inclusive\":false},\"string\":{\"rules\":[8,9],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,10,11,12,13,14,15,16,19,25,28,29,30,31,32,33,34,35,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/flowchart/styles.js\":\n/*!******************************************!*\\\n !*** ./src/diagrams/flowchart/styles.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \".label {\\n font-family: \".concat(options.fontFamily, \";\\n color: \").concat(options.nodeTextColor || options.textColor, \";\\n }\\n .cluster-label text {\\n fill: \").concat(options.titleColor, \";\\n }\\n .cluster-label span {\\n color: \").concat(options.titleColor, \";\\n }\\n\\n .label text,span {\\n fill: \").concat(options.nodeTextColor || options.textColor, \";\\n color: \").concat(options.nodeTextColor || options.textColor, \";\\n }\\n\\n .node rect,\\n .node circle,\\n .node ellipse,\\n .node polygon,\\n .node path {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n stroke-width: 1px;\\n }\\n\\n .node .label {\\n text-align: center;\\n }\\n .node.clickable {\\n cursor: pointer;\\n }\\n\\n .arrowheadPath {\\n fill: \").concat(options.arrowheadColor, \";\\n }\\n\\n .edgePath .path {\\n stroke: \").concat(options.lineColor, \";\\n stroke-width: 1.5px;\\n }\\n\\n .flowchart-link {\\n stroke: \").concat(options.lineColor, \";\\n fill: none;\\n }\\n\\n .edgeLabel {\\n background-color: \").concat(options.edgeLabelBackground, \";\\n rect {\\n opacity: 0.5;\\n background-color: \").concat(options.edgeLabelBackground, \";\\n fill: \").concat(options.edgeLabelBackground, \";\\n }\\n text-align: center;\\n }\\n\\n .cluster rect {\\n fill: \").concat(options.clusterBkg, \";\\n stroke: \").concat(options.clusterBorder, \";\\n stroke-width: 1px;\\n }\\n\\n .cluster text {\\n fill: \").concat(options.titleColor, \";\\n }\\n\\n .cluster span {\\n color: \").concat(options.titleColor, \";\\n }\\n // .cluster div {\\n // color: \").concat(options.titleColor, \";\\n // }\\n\\n div.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: \").concat(options.fontFamily, \";\\n font-size: 12px;\\n background: \").concat(options.tertiaryColor, \";\\n border: 1px solid \").concat(options.border2, \";\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100;\\n }\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/gantt/ganttDb.js\":\n/*!***************************************!*\\\n !*** ./src/diagrams/gantt/ganttDb.js ***!\n \\***************************************/\n/*! exports provided: parseDirective, clear, setAxisFormat, getAxisFormat, setTodayMarker, getTodayMarker, setDateFormat, enableInclusiveEndDates, endDatesAreInclusive, enableTopAxis, topAxisEnabled, getDateFormat, setExcludes, getExcludes, setTitle, getTitle, addSection, getSections, getTasks, addTask, findTaskById, addTaskOrg, setLink, setClass, setClickEvent, bindFunctions, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAxisFormat\", function() { return setAxisFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAxisFormat\", function() { return getAxisFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTodayMarker\", function() { return setTodayMarker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTodayMarker\", function() { return getTodayMarker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDateFormat\", function() { return setDateFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableInclusiveEndDates\", function() { return enableInclusiveEndDates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"endDatesAreInclusive\", function() { return endDatesAreInclusive; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableTopAxis\", function() { return enableTopAxis; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"topAxisEnabled\", function() { return topAxisEnabled; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDateFormat\", function() { return getDateFormat; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setExcludes\", function() { return setExcludes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getExcludes\", function() { return getExcludes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTitle\", function() { return setTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTitle\", function() { return getTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSection\", function() { return addSection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSections\", function() { return getSections; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTasks\", function() { return getTasks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addTask\", function() { return addTask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findTaskById\", function() { return findTaskById; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addTaskOrg\", function() { return addTaskOrg; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLink\", function() { return setLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClass\", function() { return setClass; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClickEvent\", function() { return setClickEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bindFunctions\", function() { return bindFunctions; });\n/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-mini */ \"moment-mini\");\n/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_mini__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @braintree/sanitize-url */ \"@braintree/sanitize-url\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\n\n\n\n\nvar dateFormat = '';\nvar axisFormat = '';\nvar todayMarker = '';\nvar excludes = [];\nvar title = '';\nvar sections = [];\nvar tasks = [];\nvar currentSection = '';\nvar tags = ['active', 'done', 'crit', 'milestone'];\nvar funs = [];\nvar inclusiveEndDates = false;\nvar topAxis = false; // The serial order of the task in the script\n\nvar lastOrder = 0;\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_5__[\"default\"].parseDirective(this, statement, context, type);\n};\nvar clear = function clear() {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n title = '';\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n todayMarker = '';\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n};\nvar setAxisFormat = function setAxisFormat(txt) {\n axisFormat = txt;\n};\nvar getAxisFormat = function getAxisFormat() {\n return axisFormat;\n};\nvar setTodayMarker = function setTodayMarker(txt) {\n todayMarker = txt;\n};\nvar getTodayMarker = function getTodayMarker() {\n return todayMarker;\n};\nvar setDateFormat = function setDateFormat(txt) {\n dateFormat = txt;\n};\nvar enableInclusiveEndDates = function enableInclusiveEndDates() {\n inclusiveEndDates = true;\n};\nvar endDatesAreInclusive = function endDatesAreInclusive() {\n return inclusiveEndDates;\n};\nvar enableTopAxis = function enableTopAxis() {\n topAxis = true;\n};\nvar topAxisEnabled = function topAxisEnabled() {\n return topAxis;\n};\nvar getDateFormat = function getDateFormat() {\n return dateFormat;\n};\nvar setExcludes = function setExcludes(txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\nvar getExcludes = function getExcludes() {\n return excludes;\n};\nvar setTitle = function setTitle(txt) {\n title = txt;\n};\nvar getTitle = function getTitle() {\n return title;\n};\nvar addSection = function addSection(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nvar getSections = function getSections() {\n return sections;\n};\nvar getTasks = function getTasks() {\n var allItemsPricessed = compileTasks();\n var maxDepth = 10;\n var iterationCount = 0;\n\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n return tasks;\n};\n\nvar isInvalidDate = function isInvalidDate(date, dateFormat, excludes) {\n if (date.isoWeekday() >= 6 && excludes.indexOf('weekends') >= 0) {\n return true;\n }\n\n if (excludes.indexOf(date.format('dddd').toLowerCase()) >= 0) {\n return true;\n }\n\n return excludes.indexOf(date.format(dateFormat.trim())) >= 0;\n};\n\nvar checkTaskDates = function checkTaskDates(task, dateFormat, excludes) {\n if (!excludes.length || task.manualEndTime) return;\n var startTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(task.startTime, dateFormat, true);\n startTime.add(1, 'd');\n var endTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(task.endTime, dateFormat, true);\n var renderEndTime = fixTaskDates(startTime, endTime, dateFormat, excludes);\n task.endTime = endTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\nvar fixTaskDates = function fixTaskDates(startTime, endTime, dateFormat, excludes) {\n var invalid = false;\n var renderEndTime = null;\n\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n\n invalid = isInvalidDate(startTime, dateFormat, excludes);\n\n if (invalid) {\n endTime.add(1, 'd');\n }\n\n startTime.add(1, 'd');\n }\n\n return renderEndTime;\n};\n\nvar getStartDate = function getStartDate(prevTime, dateFormat, str) {\n str = str.trim(); // Test for after\n\n var re = /^after\\s+([\\d\\w- ]+)/;\n var afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n var latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function (id) {\n var task = findTaskById(id);\n\n if (typeof task !== 'undefined') {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n var dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n } // Check for actual date set\n\n\n var mDate = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(str, dateFormat.trim(), true);\n\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug('Invalid date:' + str);\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug('With date format:' + dateFormat.trim());\n } // Default date - now\n\n\n return new Date();\n};\n\nvar durationToDate = function durationToDate(durationStatement, relativeTime) {\n if (durationStatement !== null) {\n switch (durationStatement[2]) {\n case 's':\n relativeTime.add(durationStatement[1], 'seconds');\n break;\n\n case 'm':\n relativeTime.add(durationStatement[1], 'minutes');\n break;\n\n case 'h':\n relativeTime.add(durationStatement[1], 'hours');\n break;\n\n case 'd':\n relativeTime.add(durationStatement[1], 'days');\n break;\n\n case 'w':\n relativeTime.add(durationStatement[1], 'weeks');\n break;\n }\n } // Default date - now\n\n\n return relativeTime.toDate();\n};\n\nvar getEndDate = function getEndDate(prevTime, dateFormat, str, inclusive) {\n inclusive = inclusive || false;\n str = str.trim(); // Check for actual date\n\n var mDate = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(str, dateFormat.trim(), true);\n\n if (mDate.isValid()) {\n if (inclusive) {\n mDate.add(1, 'd');\n }\n\n return mDate.toDate();\n }\n\n return durationToDate(/^([\\d]+)([wdhms])/.exec(str.trim()), moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(prevTime));\n};\n\nvar taskCnt = 0;\n\nvar parseId = function parseId(idStr) {\n if (typeof idStr === 'undefined') {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n\n return idStr;\n}; // id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\n\nvar compileData = function compileData(prevTask, dataStr) {\n var ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n var data = ds.split(',');\n var task = {}; // Get tags like active, done, crit and milestone\n\n getTaskTags(data, task, tags);\n\n for (var i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n var endTimeData = '';\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes);\n }\n\n return task;\n};\n\nvar parseData = function parseData(prevTaskId, dataStr) {\n var ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n var data = ds.split(',');\n var task = {}; // Get tags like active, done, crit and milestone\n\n getTaskTags(data, task, tags);\n\n for (var i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId\n };\n task.endTime = {\n data: data[0]\n };\n break;\n\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0]\n };\n task.endTime = {\n data: data[1]\n };\n break;\n\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1]\n };\n task.endTime = {\n data: data[2]\n };\n break;\n\n default:\n }\n\n return task;\n};\n\nvar lastTask;\nvar lastTaskID;\nvar rawTasks = [];\nvar taskDb = {};\nvar addTask = function addTask(descr, data) {\n var rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: {\n data: data\n },\n task: descr,\n classes: []\n };\n var taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n lastOrder++;\n var pos = rawTasks.push(rawTask);\n lastTaskID = rawTask.id; // Store cross ref\n\n taskDb[rawTask.id] = pos - 1;\n};\nvar findTaskById = function findTaskById(id) {\n var pos = taskDb[id];\n return rawTasks[pos];\n};\nvar addTaskOrg = function addTaskOrg(descr, data) {\n var newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n var taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nvar compileTasks = function compileTasks() {\n var compileTask = function compileTask(pos) {\n var task = rawTasks[pos];\n var startTime = '';\n\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd':\n {\n var prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(rawTasks[pos].startTime, dateFormat, rawTasks[pos].raw.endTime.data, inclusiveEndDates);\n\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()(rawTasks[pos].raw.endTime.data, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n var allProcessed = true;\n\n for (var i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n\n return allProcessed;\n};\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n * @param ids Comma separated list of ids\n * @param linkStr URL to create a link for\n */\n\n\nvar setLink = function setLink(ids, _linkStr) {\n var linkStr = _linkStr;\n\n if (_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().securityLevel !== 'loose') {\n linkStr = Object(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_1__[\"sanitizeUrl\"])(_linkStr);\n }\n\n ids.split(',').forEach(function (id) {\n var rawTask = findTaskById(id);\n\n if (typeof rawTask !== 'undefined') {\n pushFun(id, function () {\n window.open(linkStr, '_self');\n });\n }\n });\n setClass(ids, 'clickable');\n};\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\n\nvar setClass = function setClass(ids, className) {\n ids.split(',').forEach(function (id) {\n var rawTask = findTaskById(id);\n\n if (typeof rawTask !== 'undefined') {\n rawTask.classes.push(className);\n }\n });\n};\n\nvar setClickFun = function setClickFun(id, functionName, functionArgs) {\n if (_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().securityLevel !== 'loose') {\n return;\n }\n\n if (typeof functionName === 'undefined') {\n return;\n }\n\n var argList = [];\n\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n\n for (var i = 0; i < argList.length; i++) {\n var item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n\n /* This preserves all starting and ending whitespace inside */\n\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n\n argList[i] = item;\n }\n }\n /* if no arguments passed into callback, default to passing in id */\n\n\n if (argList.length === 0) {\n argList.push(id);\n }\n\n var rawTask = findTaskById(id);\n\n if (typeof rawTask !== 'undefined') {\n pushFun(id, function () {\n _utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"].runFunc.apply(_utils__WEBPACK_IMPORTED_MODULE_4__[\"default\"], [functionName].concat(_toConsumableArray(argList)));\n });\n }\n};\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the task's assigned text\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\n\n\nvar pushFun = function pushFun(id, callbackFunction) {\n funs.push(function () {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n var elem = document.querySelector(\"[id=\\\"\".concat(id, \"\\\"]\"));\n\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n });\n funs.push(function () {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n var elem = document.querySelector(\"[id=\\\"\".concat(id, \"-text\\\"]\"));\n\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n });\n};\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\n\n\nvar setClickEvent = function setClickEvent(ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n * @param element\n */\n\nvar bindFunctions = function bindFunctions(element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().gantt;\n },\n clear: clear,\n setDateFormat: setDateFormat,\n getDateFormat: getDateFormat,\n enableInclusiveEndDates: enableInclusiveEndDates,\n endDatesAreInclusive: endDatesAreInclusive,\n enableTopAxis: enableTopAxis,\n topAxisEnabled: topAxisEnabled,\n setAxisFormat: setAxisFormat,\n getAxisFormat: getAxisFormat,\n setTodayMarker: setTodayMarker,\n getTodayMarker: getTodayMarker,\n setTitle: setTitle,\n getTitle: getTitle,\n addSection: addSection,\n getSections: getSections,\n getTasks: getTasks,\n addTask: addTask,\n findTaskById: findTaskById,\n addTaskOrg: addTaskOrg,\n setExcludes: setExcludes,\n getExcludes: getExcludes,\n setClickEvent: setClickEvent,\n setLink: setLink,\n bindFunctions: bindFunctions,\n durationToDate: durationToDate\n});\n\nfunction getTaskTags(data, task, tags) {\n var matchFound = true;\n\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n var pattern = '^\\\\s*' + t + '\\\\s*$';\n var regex = new RegExp(pattern);\n\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n\n/***/ }),\n\n/***/ \"./src/diagrams/gantt/ganttRenderer.js\":\n/*!*********************************************!*\\\n !*** ./src/diagrams/gantt/ganttRenderer.js ***!\n \\*********************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _parser_gantt__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser/gantt */ \"./src/diagrams/gantt/parser/gantt.jison\");\n/* harmony import */ var _parser_gantt__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _ganttDb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ganttDb */ \"./src/diagrams/gantt/ganttDb.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n_parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy = _ganttDb__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\nvar setConf = function setConf() {// const keys = Object.keys(cnf);\n // keys.forEach(function(key) {\n // conf[key] = cnf[key];\n // });\n};\nvar w;\nvar draw = function draw(text, id) {\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().gantt;\n _parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.clear();\n _parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].parse(text);\n var elem = document.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (typeof w === 'undefined') {\n w = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n w = conf.useWidth;\n }\n\n var taskArray = _parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getTasks(); // Set height based on number of tasks\n\n var h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding; // Set viewBox\n\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\")); // Set timescale\n\n var timeScale = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"scaleTime\"])().domain([Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"min\"])(taskArray, function (d) {\n return d.startTime;\n }), Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"max\"])(taskArray, function (d) {\n return d.endTime;\n })]).rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n var categories = [];\n\n for (var i = 0; i < taskArray.length; i++) {\n categories.push(taskArray[i].type);\n }\n\n var catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n function taskCompare(a, b) {\n var taskA = a.startTime;\n var taskB = b.startTime;\n var result = 0;\n\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n\n return result;\n } // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n\n\n taskArray.sort(taskCompare);\n makeGant(taskArray, w, h);\n Object(_utils__WEBPACK_IMPORTED_MODULE_5__[\"configureSvgSize\"])(svg, h, w, conf.useMaxWidth);\n svg.append('text').text(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getTitle()).attr('x', w / 2).attr('y', conf.titleTopMargin).attr('class', 'titleText');\n\n function makeGant(tasks, pageWidth, pageHeight) {\n var barHeight = conf.barHeight;\n var gap = barHeight + conf.barGap;\n var topPadding = conf.topPadding;\n var leftPadding = conf.leftPadding;\n var colorScale = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"scaleLinear\"])().domain([0, categories.length]).range(['#00B9FA', '#F95002']).interpolate(d3__WEBPACK_IMPORTED_MODULE_0__[\"interpolateHcl\"]);\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg.append('g').selectAll('rect').data(theArray).enter().append('rect').attr('x', 0).attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n }).attr('width', function () {\n return w - conf.rightPadding / 2;\n }).attr('height', theGap).attr('class', function (d) {\n for (var _i = 0; _i < categories.length; _i++) {\n if (d.type === categories[_i]) {\n return 'section section' + _i % conf.numberSectionStyles;\n }\n }\n\n return 'section section0';\n }); // Draw the rects representing the tasks\n\n var rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n rectangles.append('rect').attr('id', function (d) {\n return d.id;\n }).attr('rx', 3).attr('ry', 3).attr('x', function (d) {\n if (d.milestone) {\n return timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n\n return timeScale(d.startTime) + theSidePad;\n }).attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n }).attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n }).attr('height', theBarHeight).attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return (timeScale(d.startTime) + theSidePad + 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))).toString() + 'px ' + (i * theGap + theTopPad + 0.5 * theBarHeight).toString() + 'px';\n }).attr('class', function (d) {\n var res = 'task';\n var classStr = '';\n\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n var secNum = 0;\n\n for (var _i2 = 0; _i2 < categories.length; _i2++) {\n if (d.type === categories[_i2]) {\n secNum = _i2 % conf.numberSectionStyles;\n }\n }\n\n var taskClass = '';\n\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n taskClass += ' ' + classStr;\n return res + taskClass;\n }); // Append task labels\n\n rectangles.append('text').attr('id', function (d) {\n return d.id + '-text';\n }).text(function (d) {\n return d.task;\n }).attr('font-size', conf.fontSize).attr('x', function (d) {\n var startX = timeScale(d.startTime);\n var endX = timeScale(d.renderEndTime || d.endTime);\n\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n\n var textWidth = this.getBBox().width; // Check id text width > width of rectangle\n\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n }).attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n }).attr('text-height', theBarHeight).attr('class', function (d) {\n var startX = timeScale(d.startTime);\n var endX = timeScale(d.endTime);\n\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n\n var textWidth = this.getBBox().width;\n var classStr = '';\n\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n var secNum = 0;\n\n for (var _i3 = 0; _i3 < categories.length; _i3++) {\n if (d.type === categories[_i3]) {\n secNum = _i3 % conf.numberSectionStyles;\n }\n }\n\n var taskType = '';\n\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n } // Check id text width > width of rectangle\n\n\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return classStr + ' taskTextOutsideRight taskTextOutside' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n }\n\n function makeGrid(theSidePad, theTopPad, w, h) {\n var bottomXAxis = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"axisBottom\"])(timeScale).tickSize(-h + theTopPad + conf.gridLineStartPadding).tickFormat(Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n svg.append('g').attr('class', 'grid').attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')').call(bottomXAxis).selectAll('text').style('text-anchor', 'middle').attr('fill', '#000').attr('stroke', 'none').attr('font-size', 10).attr('dy', '1em');\n\n if (_ganttDb__WEBPACK_IMPORTED_MODULE_3__[\"default\"].topAxisEnabled() || conf.topAxis) {\n var topXAxis = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"axisTop\"])(timeScale).tickSize(-h + theTopPad + conf.gridLineStartPadding).tickFormat(Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"timeFormat\"])(_parser_gantt__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n svg.append('g').attr('class', 'grid').attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')').call(topXAxis).selectAll('text').style('text-anchor', 'middle').attr('fill', '#000').attr('stroke', 'none').attr('font-size', 10); // .attr('dy', '1em');\n }\n }\n\n function vertLabels(theGap, theTopPad) {\n var numOccurances = [];\n var prevGap = 0;\n\n for (var _i4 = 0; _i4 < categories.length; _i4++) {\n numOccurances[_i4] = [categories[_i4], getCount(categories[_i4], catsUnfiltered)];\n }\n\n svg.append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text').data(numOccurances).enter().append(function (d) {\n var rows = d[0].split(_common_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lineBreakRegex);\n var dy = -(rows.length - 1) / 2;\n var svgLabel = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (var j = 0; j < rows.length; j++) {\n var tspan = document.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) tspan.setAttribute('dy', '1em');\n tspan.textContent = rows[j];\n svgLabel.appendChild(tspan);\n }\n\n return svgLabel;\n }).attr('x', 10).attr('y', function (d, i) {\n if (i > 0) {\n for (var j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return d[1] * theGap / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return d[1] * theGap / 2 + theTopPad;\n }\n }).attr('font-size', conf.sectionFontSize).attr('font-size', conf.sectionFontSize).attr('class', function (d) {\n for (var _i5 = 0; _i5 < categories.length; _i5++) {\n if (d[0] === categories[_i5]) {\n return 'sectionTitle sectionTitle' + _i5 % conf.numberSectionStyles;\n }\n }\n\n return 'sectionTitle';\n });\n }\n\n function drawToday(theSidePad, theTopPad, w, h) {\n var todayMarker = _ganttDb__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getTodayMarker();\n\n if (todayMarker === 'off') {\n return;\n }\n\n var todayG = svg.append('g').attr('class', 'today');\n var today = new Date();\n var todayLine = todayG.append('line');\n todayLine.attr('x1', timeScale(today) + theSidePad).attr('x2', timeScale(today) + theSidePad).attr('y1', conf.titleTopMargin).attr('y2', h - conf.titleTopMargin).attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n } // from this stackexchange question: http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n\n\n function checkUnique(arr) {\n var hash = {};\n var result = [];\n\n for (var _i6 = 0, l = arr.length; _i6 < l; ++_i6) {\n if (!hash.hasOwnProperty(arr[_i6])) {\n // eslint-disable-line\n // it works with objects! in FF, at least\n hash[arr[_i6]] = true;\n result.push(arr[_i6]);\n }\n }\n\n return result;\n } // from this stackexchange question: http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n\n\n function getCounts(arr) {\n var i = arr.length; // const to loop over\n\n var obj = {}; // obj to store results\n\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n\n return obj;\n } // get specific from everything\n\n\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/gantt/parser/gantt.jison\":\n/*!***********************************************!*\\\n !*** ./src/diagrams/gantt/parser/gantt.jison ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[7,9,11,12,13,14,15,16,17,18,19,21,28,33],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,18],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,24],$Vc=[1,26],$Vd=[1,29],$Ve=[5,7,9,11,12,13,14,15,16,17,18,19,21,28,33];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"gantt\":5,\"document\":6,\"EOF\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NL\":11,\"dateFormat\":12,\"inclusiveEndDates\":13,\"topAxis\":14,\"axisFormat\":15,\"excludes\":16,\"todayMarker\":17,\"title\":18,\"section\":19,\"clickStatement\":20,\"taskTxt\":21,\"taskData\":22,\"openDirective\":23,\"typeDirective\":24,\"closeDirective\":25,\":\":26,\"argDirective\":27,\"click\":28,\"callbackname\":29,\"callbackargs\":30,\"href\":31,\"clickStatementDebug\":32,\"open_directive\":33,\"type_directive\":34,\"arg_directive\":35,\"close_directive\":36,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"gantt\",7:\"EOF\",9:\"SPACE\",11:\"NL\",12:\"dateFormat\",13:\"inclusiveEndDates\",14:\"topAxis\",15:\"axisFormat\",16:\"excludes\",17:\"todayMarker\",18:\"title\",19:\"section\",21:\"taskTxt\",22:\"taskData\",26:\":\",28:\"click\",29:\"callbackname\",30:\"callbackargs\",31:\"href\",33:\"open_directive\",34:\"type_directive\",35:\"arg_directive\",36:\"close_directive\"},\nproductions_: [0,[3,2],[3,3],[6,0],[6,2],[8,2],[8,1],[8,1],[8,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,1],[4,4],[4,6],[20,2],[20,3],[20,3],[20,4],[20,3],[20,4],[20,2],[32,2],[32,3],[32,3],[32,4],[32,3],[32,4],[32,2],[23,1],[24,1],[27,1],[25,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 2:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 9:\nyy.setDateFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 10:\nyy.enableInclusiveEndDates();this.$=$$[$0].substr(18);\nbreak;\ncase 11:\nyy.TopAxis();this.$=$$[$0].substr(8);\nbreak;\ncase 12:\nyy.setAxisFormat($$[$0].substr(11));this.$=$$[$0].substr(11);\nbreak;\ncase 13:\nyy.setExcludes($$[$0].substr(9));this.$=$$[$0].substr(9);\nbreak;\ncase 14:\nyy.setTodayMarker($$[$0].substr(12));this.$=$$[$0].substr(12);\nbreak;\ncase 15:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 16:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 18:\nyy.addTask($$[$0-1],$$[$0]);this.$='task';\nbreak;\ncase 22:\nthis.$ = $$[$0-1];yy.setClickEvent($$[$0-1], $$[$0], null);\nbreak;\ncase 23:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], $$[$0]);\nbreak;\ncase 24:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0-1], null);yy.setLink($$[$0-2],$$[$0]);\nbreak;\ncase 25:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-2], $$[$0-1]);yy.setLink($$[$0-3],$$[$0]);\nbreak;\ncase 26:\nthis.$ = $$[$0-2];yy.setClickEvent($$[$0-2], $$[$0], null);yy.setLink($$[$0-2],$$[$0-1]);\nbreak;\ncase 27:\nthis.$ = $$[$0-3];yy.setClickEvent($$[$0-3], $$[$0-1], $$[$0]);yy.setLink($$[$0-3],$$[$0-2]);\nbreak;\ncase 28:\nthis.$ = $$[$0-1];yy.setLink($$[$0-1], $$[$0]);\nbreak;\ncase 29: case 35:\nthis.$=$$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 30: case 31: case 33:\nthis.$=$$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 32: case 34:\nthis.$=$$[$0-3] + ' ' + $$[$0-2] + ' ' + $$[$0-1] + ' ' + $$[$0];\nbreak;\ncase 36:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 37:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 38:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 39:\n yy.parseDirective('}%%', 'close_directive', 'gantt'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,23:4,33:$V1},{1:[3]},{3:6,4:2,5:$V0,23:4,33:$V1},o($V2,[2,3],{6:7}),{24:8,34:[1,9]},{34:[2,36]},{1:[2,1]},{4:25,7:[1,10],8:11,9:[1,12],10:13,11:[1,14],12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:23,21:$Vb,23:4,28:$Vc,33:$V1},{25:27,26:[1,28],36:$Vd},o([26,36],[2,37]),o($V2,[2,8],{1:[2,2]}),o($V2,[2,4]),{4:25,10:30,12:$V3,13:$V4,14:$V5,15:$V6,16:$V7,17:$V8,18:$V9,19:$Va,20:23,21:$Vb,23:4,28:$Vc,33:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,9]),o($V2,[2,10]),o($V2,[2,11]),o($V2,[2,12]),o($V2,[2,13]),o($V2,[2,14]),o($V2,[2,15]),o($V2,[2,16]),o($V2,[2,17]),{22:[1,31]},o($V2,[2,19]),{29:[1,32],31:[1,33]},{11:[1,34]},{27:35,35:[1,36]},{11:[2,39]},o($V2,[2,5]),o($V2,[2,18]),o($V2,[2,22],{30:[1,37],31:[1,38]}),o($V2,[2,28],{29:[1,39]}),o($Ve,[2,20]),{25:40,36:$Vd},{36:[2,38]},o($V2,[2,23],{31:[1,41]}),o($V2,[2,24]),o($V2,[2,26],{30:[1,42]}),{11:[1,43]},o($V2,[2,25]),o($V2,[2,27]),o($Ve,[2,21])],\ndefaultActions: {5:[2,36],6:[2,1],29:[2,39],36:[2,38]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 33; \nbreak;\ncase 1: this.begin('type_directive'); return 34; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 26; \nbreak;\ncase 3: this.popState(); this.popState(); return 36; \nbreak;\ncase 4:return 35;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:/* do nothing */\nbreak;\ncase 8:return 11;\nbreak;\ncase 9:/* skip whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12:this.begin(\"href\");\nbreak;\ncase 13:this.popState();\nbreak;\ncase 14:return 31;\nbreak;\ncase 15:this.begin(\"callbackname\");\nbreak;\ncase 16:this.popState();\nbreak;\ncase 17:this.popState(); this.begin(\"callbackargs\");\nbreak;\ncase 18:return 29;\nbreak;\ncase 19:this.popState();\nbreak;\ncase 20:return 30;\nbreak;\ncase 21:this.begin(\"click\");\nbreak;\ncase 22:this.popState();\nbreak;\ncase 23:return 28;\nbreak;\ncase 24:return 5;\nbreak;\ncase 25:return 12;\nbreak;\ncase 26:return 13;\nbreak;\ncase 27:return 14;\nbreak;\ncase 28:return 15;\nbreak;\ncase 29:return 16;\nbreak;\ncase 30:return 17;\nbreak;\ncase 31:return 'date';\nbreak;\ncase 32:return 18;\nbreak;\ncase 33:return 19;\nbreak;\ncase 34:return 21;\nbreak;\ncase 35:return 22;\nbreak;\ncase 36:return 26;\nbreak;\ncase 37:return 7;\nbreak;\ncase 38:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)*[^\\n]*)/i,/^(?:[^\\}]%%*[^\\n]*)/i,/^(?:%%*[^\\n]*[\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:href[\\s]+[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:call[\\s]+)/i,/^(?:\\([\\s]*\\))/i,/^(?:\\()/i,/^(?:[^(]*)/i,/^(?:\\))/i,/^(?:[^)]*)/i,/^(?:click[\\s]+)/i,/^(?:[\\s\\n])/i,/^(?:[^\\s\\n]*)/i,/^(?:gantt\\b)/i,/^(?:dateFormat\\s[^#\\n;]+)/i,/^(?:inclusiveEndDates\\b)/i,/^(?:topAxis\\b)/i,/^(?:axisFormat\\s[^#\\n;]+)/i,/^(?:excludes\\s[^#\\n;]+)/i,/^(?:todayMarker\\s[^\\n;]+)/i,/^(?:\\d\\d\\d\\d-\\d\\d-\\d\\d\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"callbackargs\":{\"rules\":[19,20],\"inclusive\":false},\"callbackname\":{\"rules\":[16,17,18],\"inclusive\":false},\"href\":{\"rules\":[13,14],\"inclusive\":false},\"click\":{\"rules\":[22,23],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,15,21,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/gantt/styles.js\":\n/*!**************************************!*\\\n !*** ./src/diagrams/gantt/styles.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \"\\n .mermaid-main-font {\\n font-family: \\\"trebuchet ms\\\", verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n\\n .section {\\n stroke: none;\\n opacity: 0.2;\\n }\\n\\n .section0 {\\n fill: \".concat(options.sectionBkgColor, \";\\n }\\n\\n .section2 {\\n fill: \").concat(options.sectionBkgColor2, \";\\n }\\n\\n .section1,\\n .section3 {\\n fill: \").concat(options.altSectionBkgColor, \";\\n opacity: 0.2;\\n }\\n\\n .sectionTitle0 {\\n fill: \").concat(options.titleColor, \";\\n }\\n\\n .sectionTitle1 {\\n fill: \").concat(options.titleColor, \";\\n }\\n\\n .sectionTitle2 {\\n fill: \").concat(options.titleColor, \";\\n }\\n\\n .sectionTitle3 {\\n fill: \").concat(options.titleColor, \";\\n }\\n\\n .sectionTitle {\\n text-anchor: start;\\n // font-size: \").concat(options.ganttFontSize, \";\\n // text-height: 14px;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n\\n }\\n\\n\\n /* Grid and axis */\\n\\n .grid .tick {\\n stroke: \").concat(options.gridColor, \";\\n opacity: 0.8;\\n shape-rendering: crispEdges;\\n text {\\n font-family: \").concat(options.fontFamily, \";\\n fill: \").concat(options.textColor, \";\\n }\\n }\\n\\n .grid path {\\n stroke-width: 0;\\n }\\n\\n\\n /* Today line */\\n\\n .today {\\n fill: none;\\n stroke: \").concat(options.todayLineColor, \";\\n stroke-width: 2px;\\n }\\n\\n\\n /* Task styling */\\n\\n /* Default task */\\n\\n .task {\\n stroke-width: 2;\\n }\\n\\n .taskText {\\n text-anchor: middle;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n\\n // .taskText:not([font-size]) {\\n // font-size: \").concat(options.ganttFontSize, \";\\n // }\\n\\n .taskTextOutsideRight {\\n fill: \").concat(options.taskTextDarkColor, \";\\n text-anchor: start;\\n // font-size: \").concat(options.ganttFontSize, \";\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n\\n }\\n\\n .taskTextOutsideLeft {\\n fill: \").concat(options.taskTextDarkColor, \";\\n text-anchor: end;\\n // font-size: \").concat(options.ganttFontSize, \";\\n }\\n\\n /* Special case clickable */\\n .task.clickable {\\n cursor: pointer;\\n }\\n .taskText.clickable {\\n cursor: pointer;\\n fill: \").concat(options.taskTextClickableColor, \" !important;\\n font-weight: bold;\\n }\\n\\n .taskTextOutsideLeft.clickable {\\n cursor: pointer;\\n fill: \").concat(options.taskTextClickableColor, \" !important;\\n font-weight: bold;\\n }\\n\\n .taskTextOutsideRight.clickable {\\n cursor: pointer;\\n fill: \").concat(options.taskTextClickableColor, \" !important;\\n font-weight: bold;\\n }\\n\\n /* Specific task settings for the sections*/\\n\\n .taskText0,\\n .taskText1,\\n .taskText2,\\n .taskText3 {\\n fill: \").concat(options.taskTextColor, \";\\n }\\n\\n .task0,\\n .task1,\\n .task2,\\n .task3 {\\n fill: \").concat(options.taskBkgColor, \";\\n stroke: \").concat(options.taskBorderColor, \";\\n }\\n\\n .taskTextOutside0,\\n .taskTextOutside2\\n {\\n fill: \").concat(options.taskTextOutsideColor, \";\\n }\\n\\n .taskTextOutside1,\\n .taskTextOutside3 {\\n fill: \").concat(options.taskTextOutsideColor, \";\\n }\\n\\n\\n /* Active task */\\n\\n .active0,\\n .active1,\\n .active2,\\n .active3 {\\n fill: \").concat(options.activeTaskBkgColor, \";\\n stroke: \").concat(options.activeTaskBorderColor, \";\\n }\\n\\n .activeText0,\\n .activeText1,\\n .activeText2,\\n .activeText3 {\\n fill: \").concat(options.taskTextDarkColor, \" !important;\\n }\\n\\n\\n /* Completed task */\\n\\n .done0,\\n .done1,\\n .done2,\\n .done3 {\\n stroke: \").concat(options.doneTaskBorderColor, \";\\n fill: \").concat(options.doneTaskBkgColor, \";\\n stroke-width: 2;\\n }\\n\\n .doneText0,\\n .doneText1,\\n .doneText2,\\n .doneText3 {\\n fill: \").concat(options.taskTextDarkColor, \" !important;\\n }\\n\\n\\n /* Tasks on the critical line */\\n\\n .crit0,\\n .crit1,\\n .crit2,\\n .crit3 {\\n stroke: \").concat(options.critBorderColor, \";\\n fill: \").concat(options.critBkgColor, \";\\n stroke-width: 2;\\n }\\n\\n .activeCrit0,\\n .activeCrit1,\\n .activeCrit2,\\n .activeCrit3 {\\n stroke: \").concat(options.critBorderColor, \";\\n fill: \").concat(options.activeTaskBkgColor, \";\\n stroke-width: 2;\\n }\\n\\n .doneCrit0,\\n .doneCrit1,\\n .doneCrit2,\\n .doneCrit3 {\\n stroke: \").concat(options.critBorderColor, \";\\n fill: \").concat(options.doneTaskBkgColor, \";\\n stroke-width: 2;\\n cursor: pointer;\\n shape-rendering: crispEdges;\\n }\\n\\n .milestone {\\n transform: rotate(45deg) scale(0.8,0.8);\\n }\\n\\n .milestoneText {\\n font-style: italic;\\n }\\n .doneCritText0,\\n .doneCritText1,\\n .doneCritText2,\\n .doneCritText3 {\\n fill: \").concat(options.taskTextDarkColor, \" !important;\\n }\\n\\n .activeCritText0,\\n .activeCritText1,\\n .activeCritText2,\\n .activeCritText3 {\\n fill: \").concat(options.taskTextDarkColor, \" !important;\\n }\\n\\n .titleText {\\n text-anchor: middle;\\n font-size: 18px;\\n fill: \").concat(options.textColor, \" ;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/git/gitGraphAst.js\":\n/*!*****************************************!*\\\n !*** ./src/diagrams/git/gitGraphAst.js ***!\n \\*****************************************/\n/*! exports provided: setDirection, setOptions, getOptions, commit, branch, merge, checkout, reset, prettyPrint, clear, getBranchesAsObjArray, getBranches, getCommits, getCommitsArray, getCurrentBranch, getDirection, getHead, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDirection\", function() { return setDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setOptions\", function() { return setOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getOptions\", function() { return getOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"commit\", function() { return commit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"branch\", function() { return branch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return merge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkout\", function() { return checkout; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reset\", function() { return reset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"prettyPrint\", function() { return prettyPrint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBranchesAsObjArray\", function() { return getBranchesAsObjArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBranches\", function() { return getBranches; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCommits\", function() { return getCommits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCommitsArray\", function() { return getCommitsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentBranch\", function() { return getCurrentBranch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDirection\", function() { return getDirection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHead\", function() { return getHead; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\nvar commits = {};\nvar head = null;\nvar branches = {\n master: head\n};\nvar curBranch = 'master';\nvar direction = 'LR';\nvar seq = 0;\n\nfunction getId() {\n return Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"random\"])({\n length: 7\n });\n}\n\nfunction isfastforwardable(currentCommit, otherCommit) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Entering isfastforwardable:', currentCommit.id, otherCommit.id);\n\n while (currentCommit.seq <= otherCommit.seq && currentCommit !== otherCommit) {\n // only if other branch has more commits\n if (otherCommit.parent == null) break;\n\n if (Array.isArray(otherCommit.parent)) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('In merge commit:', otherCommit.parent);\n return isfastforwardable(currentCommit, commits[otherCommit.parent[0]]) || isfastforwardable(currentCommit, commits[otherCommit.parent[1]]);\n } else {\n otherCommit = commits[otherCommit.parent];\n }\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(currentCommit.id, otherCommit.id);\n return currentCommit.id === otherCommit.id;\n}\n\nfunction isReachableFrom(currentCommit, otherCommit) {\n var currentSeq = currentCommit.seq;\n var otherSeq = otherCommit.seq;\n if (currentSeq > otherSeq) return isfastforwardable(otherCommit, currentCommit);\n return false;\n}\n\nfunction uniqBy(list, fn) {\n var recordMap = Object.create(null);\n return list.reduce(function (out, item) {\n var key = fn(item);\n\n if (!recordMap[key]) {\n recordMap[key] = true;\n out.push(item);\n }\n\n return out;\n }, []);\n}\n\nvar setDirection = function setDirection(dir) {\n direction = dir;\n};\nvar options = {};\nvar setOptions = function setOptions(rawOptString) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('options str', rawOptString);\n rawOptString = rawOptString && rawOptString.trim();\n rawOptString = rawOptString || '{}';\n\n try {\n options = JSON.parse(rawOptString);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].error('error while parsing gitGraph options', e.message);\n }\n};\nvar getOptions = function getOptions() {\n return options;\n};\nvar commit = function commit(msg) {\n var commit = {\n id: getId(),\n message: msg,\n seq: seq++,\n parent: head == null ? null : head.id\n };\n head = commit;\n commits[commit.id] = commit;\n branches[curBranch] = commit.id;\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('in pushCommit ' + commit.id);\n};\nvar branch = function branch(name) {\n branches[name] = head != null ? head.id : null;\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('in createBranch');\n};\nvar merge = function merge(otherBranch) {\n var currentCommit = commits[branches[curBranch]];\n var otherCommit = commits[branches[otherBranch]];\n\n if (isReachableFrom(currentCommit, otherCommit)) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Already merged');\n return;\n }\n\n if (isfastforwardable(currentCommit, otherCommit)) {\n branches[curBranch] = branches[otherBranch];\n head = commits[branches[curBranch]];\n } else {\n // create merge commit\n var _commit = {\n id: getId(),\n message: 'merged branch ' + otherBranch + ' into ' + curBranch,\n seq: seq++,\n parent: [head == null ? null : head.id, branches[otherBranch]]\n };\n head = _commit;\n commits[_commit.id] = _commit;\n branches[curBranch] = _commit.id;\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(branches);\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('in mergeBranch');\n};\nvar checkout = function checkout(branch) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('in checkout');\n curBranch = branch;\n var id = branches[curBranch];\n head = commits[id];\n};\nvar reset = function reset(commitRef) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('in reset', commitRef);\n var ref = commitRef.split(':')[0];\n var parentCount = parseInt(commitRef.split(':')[1]);\n var commit = ref === 'HEAD' ? head : commits[branches[ref]];\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(commit, parentCount);\n\n while (parentCount > 0) {\n commit = commits[commit.parent];\n parentCount--;\n\n if (!commit) {\n var err = 'Critical error - unique parent commit not found during reset';\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].error(err);\n throw err;\n }\n }\n\n head = commit;\n branches[curBranch] = commit.id;\n};\n\nfunction upsert(arr, key, newval) {\n var index = arr.indexOf(key);\n\n if (index === -1) {\n arr.push(newval);\n } else {\n arr.splice(index, 1, newval);\n }\n}\n\nfunction prettyPrintCommitHistory(commitArr) {\n var commit = commitArr.reduce(function (out, commit) {\n if (out.seq > commit.seq) return out;\n return commit;\n }, commitArr[0]);\n var line = '';\n commitArr.forEach(function (c) {\n if (c === commit) {\n line += '\\t*';\n } else {\n line += '\\t|';\n }\n });\n var label = [line, commit.id, commit.seq];\n\n for (var _branch in branches) {\n if (branches[_branch] === commit.id) label.push(_branch);\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(label.join(' '));\n\n if (Array.isArray(commit.parent)) {\n var newCommit = commits[commit.parent[0]];\n upsert(commitArr, commit, newCommit);\n commitArr.push(commits[commit.parent[1]]);\n } else if (commit.parent == null) {\n return;\n } else {\n var nextCommit = commits[commit.parent];\n upsert(commitArr, commit, nextCommit);\n }\n\n commitArr = uniqBy(commitArr, function (c) {\n return c.id;\n });\n prettyPrintCommitHistory(commitArr);\n}\n\nvar prettyPrint = function prettyPrint() {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(commits);\n var node = getCommitsArray()[0];\n prettyPrintCommitHistory([node]);\n};\nvar clear = function clear() {\n commits = {};\n head = null;\n branches = {\n master: head\n };\n curBranch = 'master';\n seq = 0;\n};\nvar getBranchesAsObjArray = function getBranchesAsObjArray() {\n var branchArr = [];\n\n for (var _branch2 in branches) {\n branchArr.push({\n name: _branch2,\n commit: commits[branches[_branch2]]\n });\n }\n\n return branchArr;\n};\nvar getBranches = function getBranches() {\n return branches;\n};\nvar getCommits = function getCommits() {\n return commits;\n};\nvar getCommitsArray = function getCommitsArray() {\n var commitArr = Object.keys(commits).map(function (key) {\n return commits[key];\n });\n commitArr.forEach(function (o) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug(o.id);\n });\n commitArr.sort(function (a, b) {\n return b.seq - a.seq;\n });\n return commitArr;\n};\nvar getCurrentBranch = function getCurrentBranch() {\n return curBranch;\n};\nvar getDirection = function getDirection() {\n return direction;\n};\nvar getHead = function getHead() {\n return head;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setDirection: setDirection,\n setOptions: setOptions,\n getOptions: getOptions,\n commit: commit,\n branch: branch,\n merge: merge,\n checkout: checkout,\n reset: reset,\n prettyPrint: prettyPrint,\n clear: clear,\n getBranchesAsObjArray: getBranchesAsObjArray,\n getBranches: getBranches,\n getCommits: getCommits,\n getCommitsArray: getCommitsArray,\n getCurrentBranch: getCurrentBranch,\n getDirection: getDirection,\n getHead: getHead\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/git/gitGraphRenderer.js\":\n/*!**********************************************!*\\\n !*** ./src/diagrams/git/gitGraphRenderer.js ***!\n \\**********************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./gitGraphAst */ \"./src/diagrams/git/gitGraphAst.js\");\n/* harmony import */ var _parser_gitGraph__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/gitGraph */ \"./src/diagrams/git/parser/gitGraph.jison\");\n/* harmony import */ var _parser_gitGraph__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_parser_gitGraph__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\nvar allCommitsDict = {};\nvar branchNum;\nvar config = {\n nodeSpacing: 150,\n nodeFillColor: 'yellow',\n nodeStrokeWidth: 2,\n nodeStrokeColor: 'grey',\n lineStrokeWidth: 4,\n branchOffset: 50,\n lineColor: 'grey',\n leftMargin: 50,\n branchColors: ['#442f74', '#983351', '#609732', '#AA9A39'],\n nodeRadius: 10,\n nodeLabel: {\n width: 75,\n height: 100,\n x: -25,\n y: 0\n }\n};\nvar apiConfig = {};\nvar setConf = function setConf(c) {\n apiConfig = c;\n};\n\nfunction svgCreateDefs(svg) {\n svg.append('defs').append('g').attr('id', 'def-commit').append('circle').attr('r', config.nodeRadius).attr('cx', 0).attr('cy', 0);\n svg.select('#def-commit').append('foreignObject').attr('width', config.nodeLabel.width).attr('height', config.nodeLabel.height).attr('x', config.nodeLabel.x).attr('y', config.nodeLabel.y).attr('class', 'node-label').attr('requiredFeatures', 'http://www.w3.org/TR/SVG11/feature#Extensibility').append('p').html('');\n}\n\nfunction svgDrawLine(svg, points, colorIdx, interpolate) {\n var curve = Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"interpolateToCurve\"])(interpolate, d3__WEBPACK_IMPORTED_MODULE_0__[\"curveBasis\"]);\n var color = config.branchColors[colorIdx % config.branchColors.length];\n var lineGen = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"line\"])().x(function (d) {\n return Math.round(d.x);\n }).y(function (d) {\n return Math.round(d.y);\n }).curve(curve);\n svg.append('svg:path').attr('d', lineGen(points)).style('stroke', color).style('stroke-width', config.lineStrokeWidth).style('fill', 'none');\n} // Pass in the element and its pre-transform coords\n\n\nfunction getElementCoords(element, coords) {\n coords = coords || element.node().getBBox();\n var ctm = element.node().getCTM();\n var xn = ctm.e + coords.x * ctm.a;\n var yn = ctm.f + coords.y * ctm.d;\n return {\n left: xn,\n top: yn,\n width: coords.width,\n height: coords.height\n };\n}\n\nfunction svgDrawLineForCommits(svg, fromId, toId, direction, color) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('svgDrawLineForCommits: ', fromId, toId);\n var fromBbox = getElementCoords(svg.select('#node-' + fromId + ' circle'));\n var toBbox = getElementCoords(svg.select('#node-' + toId + ' circle'));\n\n switch (direction) {\n case 'LR':\n // (toBbox)\n // +--------\n // + (fromBbox)\n if (fromBbox.left - toBbox.left > config.nodeSpacing) {\n var lineStart = {\n x: fromBbox.left - config.nodeSpacing,\n y: toBbox.top + toBbox.height / 2\n };\n var lineEnd = {\n x: toBbox.left + toBbox.width,\n y: toBbox.top + toBbox.height / 2\n };\n svgDrawLine(svg, [lineStart, lineEnd], color, 'linear');\n svgDrawLine(svg, [{\n x: fromBbox.left,\n y: fromBbox.top + fromBbox.height / 2\n }, {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: fromBbox.top + fromBbox.height / 2\n }, {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: lineStart.y\n }, lineStart], color);\n } else {\n svgDrawLine(svg, [{\n x: fromBbox.left,\n y: fromBbox.top + fromBbox.height / 2\n }, {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: fromBbox.top + fromBbox.height / 2\n }, {\n x: fromBbox.left - config.nodeSpacing / 2,\n y: toBbox.top + toBbox.height / 2\n }, {\n x: toBbox.left + toBbox.width,\n y: toBbox.top + toBbox.height / 2\n }], color);\n }\n\n break;\n\n case 'BT':\n // + (fromBbox)\n // |\n // |\n // + (toBbox)\n if (toBbox.top - fromBbox.top > config.nodeSpacing) {\n var _lineStart = {\n x: toBbox.left + toBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing\n };\n var _lineEnd = {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top\n };\n svgDrawLine(svg, [_lineStart, _lineEnd], color, 'linear');\n svgDrawLine(svg, [{\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height\n }, {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height + config.nodeSpacing / 2\n }, {\n x: toBbox.left + toBbox.width / 2,\n y: _lineStart.y - config.nodeSpacing / 2\n }, _lineStart], color);\n } else {\n svgDrawLine(svg, [{\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + fromBbox.height\n }, {\n x: fromBbox.left + fromBbox.width / 2,\n y: fromBbox.top + config.nodeSpacing / 2\n }, {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top - config.nodeSpacing / 2\n }, {\n x: toBbox.left + toBbox.width / 2,\n y: toBbox.top\n }], color);\n }\n\n break;\n }\n}\n\nfunction cloneNode(svg, selector) {\n return svg.select(selector).node().cloneNode(true);\n}\n\nfunction renderCommitHistory(svg, commitid, branches, direction) {\n var commit;\n var numCommits = Object.keys(allCommitsDict).length;\n\n if (typeof commitid === 'string') {\n do {\n commit = allCommitsDict[commitid];\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('in renderCommitHistory', commit.id, commit.seq);\n\n if (svg.select('#node-' + commitid).size() > 0) {\n return;\n }\n\n svg.append(function () {\n return cloneNode(svg, '#def-commit');\n }).attr('class', 'commit').attr('id', function () {\n return 'node-' + commit.id;\n }).attr('transform', function () {\n switch (direction) {\n case 'LR':\n return 'translate(' + (commit.seq * config.nodeSpacing + config.leftMargin) + ', ' + branchNum * config.branchOffset + ')';\n\n case 'BT':\n return 'translate(' + (branchNum * config.branchOffset + config.leftMargin) + ', ' + (numCommits - commit.seq) * config.nodeSpacing + ')';\n }\n }).attr('fill', config.nodeFillColor).attr('stroke', config.nodeStrokeColor).attr('stroke-width', config.nodeStrokeWidth);\n var branch = void 0;\n\n for (var branchName in branches) {\n if (branches[branchName].commit === commit) {\n branch = branches[branchName];\n break;\n }\n }\n\n if (branch) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('found branch ', branch.name);\n svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'branch-label').text(branch.name + ', ');\n }\n\n svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'commit-id').text(commit.id);\n\n if (commit.message !== '' && direction === 'BT') {\n svg.select('#node-' + commit.id + ' p').append('xhtml:span').attr('class', 'commit-msg').text(', ' + commit.message);\n }\n\n commitid = commit.parent;\n } while (commitid && allCommitsDict[commitid]);\n }\n\n if (Array.isArray(commitid)) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('found merge commmit', commitid);\n renderCommitHistory(svg, commitid[0], branches, direction);\n branchNum++;\n renderCommitHistory(svg, commitid[1], branches, direction);\n branchNum--;\n }\n}\n\nfunction renderLines(svg, commit, direction, branchColor) {\n branchColor = branchColor || 0;\n\n while (commit.seq > 0 && !commit.lineDrawn) {\n if (typeof commit.parent === 'string') {\n svgDrawLineForCommits(svg, commit.id, commit.parent, direction, branchColor);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent];\n } else if (Array.isArray(commit.parent)) {\n svgDrawLineForCommits(svg, commit.id, commit.parent[0], direction, branchColor);\n svgDrawLineForCommits(svg, commit.id, commit.parent[1], direction, branchColor + 1);\n renderLines(svg, allCommitsDict[commit.parent[1]], direction, branchColor + 1);\n commit.lineDrawn = true;\n commit = allCommitsDict[commit.parent[0]];\n }\n }\n}\n\nvar draw = function draw(txt, id, ver) {\n try {\n var parser = _parser_gitGraph__WEBPACK_IMPORTED_MODULE_2___default.a.parser;\n parser.yy = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n parser.yy.clear();\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('in gitgraph renderer', txt + '\\n', 'id:', id, ver); // Parse the graph definition\n\n parser.parse(txt + '\\n');\n config = Object.assign(config, apiConfig, _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getOptions());\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('effective options', config);\n var direction = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getDirection();\n allCommitsDict = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCommits();\n var branches = _gitGraphAst__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getBranchesAsObjArray();\n\n if (direction === 'BT') {\n config.nodeLabel.x = branches.length * config.branchOffset;\n config.nodeLabel.width = '100%';\n config.nodeLabel.y = -1 * 2 * config.nodeRadius;\n }\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\"));\n svgCreateDefs(svg);\n branchNum = 1;\n\n for (var branch in branches) {\n var v = branches[branch];\n renderCommitHistory(svg, v.commit.id, branches, direction);\n renderLines(svg, v.commit, direction);\n branchNum++;\n }\n\n svg.attr('height', function () {\n if (direction === 'BT') return Object.keys(allCommitsDict).length * config.nodeSpacing;\n return (branches.length + 1) * config.branchOffset;\n });\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error('Error while rendering gitgraph');\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error(e.message);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/git/parser/gitGraph.jison\":\n/*!************************************************!*\\\n !*** ./src/diagrams/git/parser/gitGraph.jison ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[2,3],$V1=[1,7],$V2=[7,12,15,17,19,20,21],$V3=[7,11,12,15,17,19,20,21],$V4=[2,20],$V5=[1,32];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"GG\":4,\":\":5,\"document\":6,\"EOF\":7,\"DIR\":8,\"options\":9,\"body\":10,\"OPT\":11,\"NL\":12,\"line\":13,\"statement\":14,\"COMMIT\":15,\"commit_arg\":16,\"BRANCH\":17,\"ID\":18,\"CHECKOUT\":19,\"MERGE\":20,\"RESET\":21,\"reset_arg\":22,\"STR\":23,\"HEAD\":24,\"reset_parents\":25,\"CARET\":26,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"GG\",5:\":\",7:\"EOF\",8:\"DIR\",11:\"OPT\",12:\"NL\",15:\"COMMIT\",17:\"BRANCH\",18:\"ID\",19:\"CHECKOUT\",20:\"MERGE\",21:\"RESET\",23:\"STR\",24:\"HEAD\",26:\"CARET\"},\nproductions_: [0,[3,4],[3,5],[6,0],[6,2],[9,2],[9,1],[10,0],[10,2],[13,2],[13,1],[14,2],[14,2],[14,2],[14,2],[14,2],[16,0],[16,1],[22,2],[22,2],[25,0],[25,2]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 2:\nyy.setDirection($$[$0-3]); return $$[$0-1];\nbreak;\ncase 4:\n yy.setOptions($$[$0-1]); this.$ = $$[$0]\nbreak;\ncase 5:\n$$[$0-1] +=$$[$0]; this.$=$$[$0-1]\nbreak;\ncase 7:\nthis.$ = []\nbreak;\ncase 8:\n$$[$0-1].push($$[$0]); this.$=$$[$0-1];\nbreak;\ncase 9:\nthis.$ =$$[$0-1]\nbreak;\ncase 11:\nyy.commit($$[$0])\nbreak;\ncase 12:\nyy.branch($$[$0])\nbreak;\ncase 13:\nyy.checkout($$[$0])\nbreak;\ncase 14:\nyy.merge($$[$0])\nbreak;\ncase 15:\nyy.reset($$[$0])\nbreak;\ncase 16:\nthis.$ = \"\"\nbreak;\ncase 17:\nthis.$=$$[$0]\nbreak;\ncase 18:\nthis.$ = $$[$0-1]+ \":\" + $$[$0] \nbreak;\ncase 19:\nthis.$ = $$[$0-1]+ \":\" + yy.count; yy.count = 0\nbreak;\ncase 20:\nyy.count = 0\nbreak;\ncase 21:\n yy.count += 1 \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},{5:[1,3],8:[1,4]},{6:5,7:$V0,9:6,12:$V1},{5:[1,8]},{7:[1,9]},o($V2,[2,7],{10:10,11:[1,11]}),o($V3,[2,6]),{6:12,7:$V0,9:6,12:$V1},{1:[2,1]},{7:[2,4],12:[1,15],13:13,14:14,15:[1,16],17:[1,17],19:[1,18],20:[1,19],21:[1,20]},o($V3,[2,5]),{7:[1,21]},o($V2,[2,8]),{12:[1,22]},o($V2,[2,10]),{12:[2,16],16:23,23:[1,24]},{18:[1,25]},{18:[1,26]},{18:[1,27]},{18:[1,30],22:28,24:[1,29]},{1:[2,2]},o($V2,[2,9]),{12:[2,11]},{12:[2,17]},{12:[2,12]},{12:[2,13]},{12:[2,14]},{12:[2,15]},{12:$V4,25:31,26:$V5},{12:$V4,25:33,26:$V5},{12:[2,18]},{12:$V4,25:34,26:$V5},{12:[2,19]},{12:[2,21]}],\ndefaultActions: {9:[2,1],21:[2,2],23:[2,11],24:[2,17],25:[2,12],26:[2,13],27:[2,14],28:[2,15],31:[2,18],33:[2,19],34:[2,21]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 12;\nbreak;\ncase 1:/* skip all whitespace */\nbreak;\ncase 2:/* skip comments */\nbreak;\ncase 3:/* skip comments */\nbreak;\ncase 4:return 4;\nbreak;\ncase 5:return 15;\nbreak;\ncase 6:return 17;\nbreak;\ncase 7:return 20;\nbreak;\ncase 8:return 21;\nbreak;\ncase 9:return 19;\nbreak;\ncase 10:return 8;\nbreak;\ncase 11:return 8;\nbreak;\ncase 12:return 5;\nbreak;\ncase 13:return 26\nbreak;\ncase 14:this.begin(\"options\");\nbreak;\ncase 15:this.popState();\nbreak;\ncase 16:return 11;\nbreak;\ncase 17:this.begin(\"string\");\nbreak;\ncase 18:this.popState();\nbreak;\ncase 19:return 23;\nbreak;\ncase 20:return 18;\nbreak;\ncase 21:return 7;\nbreak;\n}\n},\nrules: [/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:gitGraph\\b)/i,/^(?:commit\\b)/i,/^(?:branch\\b)/i,/^(?:merge\\b)/i,/^(?:reset\\b)/i,/^(?:checkout\\b)/i,/^(?:LR\\b)/i,/^(?:BT\\b)/i,/^(?::)/i,/^(?:\\^)/i,/^(?:options\\r?\\n)/i,/^(?:end\\r?\\n)/i,/^(?:[^\\n]+\\r?\\n)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[a-zA-Z][-_\\.a-zA-Z0-9]*[-_a-zA-Z0-9])/i,/^(?:$)/i],\nconditions: {\"options\":{\"rules\":[15,16],\"inclusive\":false},\"string\":{\"rules\":[18,19],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,20,21],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/git/styles.js\":\n/*!************************************!*\\\n !*** ./src/diagrams/git/styles.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles() {\n return \"\\n .commit-id,\\n .commit-msg,\\n .branch-label {\\n fill: lightgrey;\\n color: lightgrey;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n }\\n\";\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/info/infoDb.js\":\n/*!*************************************!*\\\n !*** ./src/diagrams/info/infoDb.js ***!\n \\*************************************/\n/*! exports provided: setMessage, getMessage, setInfo, getInfo, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setMessage\", function() { return setMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMessage\", function() { return getMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setInfo\", function() { return setInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return getInfo; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/**\n * Created by knut on 15-01-14.\n */\n\nvar message = '';\nvar info = false;\nvar setMessage = function setMessage(txt) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Setting message to: ' + txt);\n message = txt;\n};\nvar getMessage = function getMessage() {\n return message;\n};\nvar setInfo = function setInfo(inf) {\n info = inf;\n};\nvar getInfo = function getInfo() {\n return info;\n}; // export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setMessage: setMessage,\n getMessage: getMessage,\n setInfo: setInfo,\n getInfo: getInfo // parseError\n\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/info/infoRenderer.js\":\n/*!*******************************************!*\\\n !*** ./src/diagrams/info/infoRenderer.js ***!\n \\*******************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _infoDb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./infoDb */ \"./src/diagrams/info/infoDb.js\");\n/* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/info */ \"./src/diagrams/info/parser/info.jison\");\n/* harmony import */ var _parser_info__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_parser_info__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/**\n * Created by knut on 14-12-11.\n */\n\n\n\n\nvar conf = {};\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nvar draw = function draw(txt, id, ver) {\n try {\n var parser = _parser_info__WEBPACK_IMPORTED_MODULE_2___default.a.parser;\n parser.yy = _infoDb__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Renering info diagram\\n' + txt); // Parse the graph definition\n\n parser.parse(txt);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Parsed info diagram'); // Fetch the default direction, use TD if none was found\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + id);\n var g = svg.append('g');\n g.append('text') // text label for the x axis\n .attr('x', 100).attr('y', 40).attr('class', 'version').attr('font-size', '32px').style('text-anchor', 'middle').text('v ' + ver);\n svg.attr('height', 100);\n svg.attr('width', 400); // svg.attr('viewBox', '0 0 300 150');\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error('Error while rendering info diagram');\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error(e.message);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/info/parser/info.jison\":\n/*!*********************************************!*\\\n !*** ./src/diagrams/info/parser/info.jison ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[6,9,10];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"info\":4,\"document\":5,\"EOF\":6,\"line\":7,\"statement\":8,\"NL\":9,\"showInfo\":10,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"info\",6:\"EOF\",9:\"NL\",10:\"showInfo\"},\nproductions_: [0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return yy; \nbreak;\ncase 4:\n \nbreak;\ncase 6:\n yy.setInfo(true); \nbreak;\n}\n},\ntable: [{3:1,4:[1,2]},{1:[3]},o($V0,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},o($V0,[2,3]),o($V0,[2,4]),o($V0,[2,5]),o($V0,[2,6])],\ndefaultActions: {4:[2,1]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\n\t// Pre-lexer code can go here\n\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:return 4 ;\nbreak;\ncase 1:return 9 ;\nbreak;\ncase 2:return 'space';\nbreak;\ncase 3:return 10;\nbreak;\ncase 4:return 6 ;\nbreak;\ncase 5:return 'TXT' ;\nbreak;\n}\n},\nrules: [/^(?:info\\b)/i,/^(?:[\\s\\n\\r]+)/i,/^(?:[\\s]+)/i,/^(?:showInfo\\b)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/info/styles.js\":\n/*!*************************************!*\\\n !*** ./src/diagrams/info/styles.js ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles() {\n return \"\";\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/pie/parser/pie.jison\":\n/*!*******************************************!*\\\n !*** ./src/diagrams/pie/parser/pie.jison ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,4],$V1=[1,5],$V2=[1,6],$V3=[1,7],$V4=[1,9],$V5=[1,10,12,19,20,21,22],$V6=[1,6,10,12,19,20,21,22],$V7=[19,20,21],$V8=[1,22],$V9=[6,19,20,21,22];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"eol\":4,\"directive\":5,\"PIE\":6,\"document\":7,\"line\":8,\"statement\":9,\"txt\":10,\"value\":11,\"title\":12,\"title_value\":13,\"openDirective\":14,\"typeDirective\":15,\"closeDirective\":16,\":\":17,\"argDirective\":18,\"NEWLINE\":19,\";\":20,\"EOF\":21,\"open_directive\":22,\"type_directive\":23,\"arg_directive\":24,\"close_directive\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",6:\"PIE\",10:\"txt\",11:\"value\",12:\"title\",13:\"title_value\",17:\":\",19:\"NEWLINE\",20:\";\",21:\"EOF\",22:\"open_directive\",23:\"type_directive\",24:\"arg_directive\",25:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,2],[9,1],[5,3],[5,5],[4,1],[4,1],[4,1],[14,1],[15,1],[18,1],[16,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 6:\n this.$ = $$[$0-1] \nbreak;\ncase 8:\n yy.addSection($$[$0-1],yy.cleanupValue($$[$0])); \nbreak;\ncase 9:\n this.$=$$[$0].trim();yy.setTitle(this.$); \nbreak;\ncase 16:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 17:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 18:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 19:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\n}\n},\ntable: [{3:1,4:2,5:3,6:$V0,14:8,19:$V1,20:$V2,21:$V3,22:$V4},{1:[3]},{3:10,4:2,5:3,6:$V0,14:8,19:$V1,20:$V2,21:$V3,22:$V4},{3:11,4:2,5:3,6:$V0,14:8,19:$V1,20:$V2,21:$V3,22:$V4},o($V5,[2,4],{7:12}),o($V6,[2,13]),o($V6,[2,14]),o($V6,[2,15]),{15:13,23:[1,14]},{23:[2,16]},{1:[2,1]},{1:[2,2]},o($V7,[2,7],{14:8,8:15,9:16,5:19,1:[2,3],10:[1,17],12:[1,18],22:$V4}),{16:20,17:[1,21],25:$V8},o([17,25],[2,17]),o($V5,[2,5]),{4:23,19:$V1,20:$V2,21:$V3},{11:[1,24]},{13:[1,25]},o($V7,[2,10]),o($V9,[2,11]),{18:26,24:[1,27]},o($V9,[2,19]),o($V5,[2,6]),o($V7,[2,8]),o($V7,[2,9]),{16:28,25:$V8},{25:[2,18]},o($V9,[2,12])],\ndefaultActions: {9:[2,16],10:[2,1],11:[2,2],27:[2,18]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 22; \nbreak;\ncase 1: this.begin('type_directive'); return 23; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 17; \nbreak;\ncase 3: this.popState(); this.popState(); return 25; \nbreak;\ncase 4:return 24;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ /*console.log('');*/ }\nbreak;\ncase 7:return 19;\nbreak;\ncase 8:/* do nothing */\nbreak;\ncase 9:/* ignore */\nbreak;\ncase 10: this.begin(\"title\");return 12; \nbreak;\ncase 11: this.popState(); return \"title_value\"; \nbreak;\ncase 12: this.begin(\"string\"); \nbreak;\ncase 13: this.popState(); \nbreak;\ncase 14: return \"txt\"; \nbreak;\ncase 15:return 6;\nbreak;\ncase 16:return \"value\";\nbreak;\ncase 17:return 21;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n\\r]+)/i,/^(?:%%[^\\n]*)/i,/^(?:[\\s]+)/i,/^(?:title\\b)/i,/^(?:(?!\\n||)*[^\\n]*)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:pie\\b)/i,/^(?::[\\s]*[\\d]+(?:\\.[\\d]+)?)/i,/^(?:$)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"title\":{\"rules\":[11],\"inclusive\":false},\"string\":{\"rules\":[13,14],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,12,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/pie/pieDb.js\":\n/*!***********************************!*\\\n !*** ./src/diagrams/pie/pieDb.js ***!\n \\***********************************/\n/*! exports provided: parseDirective, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/**\n *\n */\n\n\n\nvar sections = {};\nvar title = '';\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_1__[\"default\"].parseDirective(this, statement, context, type);\n};\n\nvar addSection = function addSection(id, value) {\n if (typeof sections[id] === 'undefined') {\n sections[id] = value;\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].debug('Added new section :', id);\n }\n};\n\nvar getSections = function getSections() {\n return sections;\n};\n\nvar setTitle = function setTitle(txt) {\n title = txt;\n};\n\nvar getTitle = function getTitle() {\n return title;\n};\n\nvar cleanupValue = function cleanupValue(value) {\n if (value.substring(0, 1) === ':') {\n value = value.substring(1).trim();\n return Number(value.trim());\n } else {\n return Number(value.trim());\n }\n};\n\nvar clear = function clear() {\n sections = {};\n title = '';\n}; // export const parseError = (err, hash) => {\n// global.mermaidAPI.parseError(err, hash)\n// }\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_2__[\"getConfig\"]().pie;\n },\n addSection: addSection,\n getSections: getSections,\n cleanupValue: cleanupValue,\n clear: clear,\n setTitle: setTitle,\n getTitle: getTitle // parseError\n\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/pie/pieRenderer.js\":\n/*!*****************************************!*\\\n !*** ./src/diagrams/pie/pieRenderer.js ***!\n \\*****************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _pieDb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pieDb */ \"./src/diagrams/pie/pieDb.js\");\n/* harmony import */ var _parser_pie__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/pie */ \"./src/diagrams/pie/parser/pie.jison\");\n/* harmony import */ var _parser_pie__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_parser_pie__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/**\n * Created by AshishJ on 11-09-2019.\n */\n\n\n\n\n\nvar conf = {};\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n/**\n * Draws a Pie Chart with the data given in text.\n * @param text\n * @param id\n */\n\nvar width;\nvar height = 450;\nvar draw = function draw(txt, id) {\n try {\n var parser = _parser_pie__WEBPACK_IMPORTED_MODULE_2___default.a.parser;\n parser.yy = _pieDb__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Rendering info diagram\\n' + txt); // Parse the Pie Chart definition\n\n parser.yy.clear();\n parser.parse(txt);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Parsed info diagram');\n var elem = document.getElementById(id);\n width = elem.parentElement.offsetWidth;\n\n if (typeof width === 'undefined') {\n width = 1200;\n }\n\n if (typeof conf.useWidth !== 'undefined') {\n width = conf.useWidth;\n }\n\n var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + id);\n Object(_utils__WEBPACK_IMPORTED_MODULE_4__[\"configureSvgSize\"])(diagram, height, width, conf.useMaxWidth); // Set viewBox\n\n elem.setAttribute('viewBox', '0 0 ' + width + ' ' + height); // Fetch the default direction, use TD if none was found\n\n var margin = 40;\n var legendRectSize = 18;\n var legendSpacing = 4;\n var radius = Math.min(width, height) / 2 - margin;\n var svg = diagram.append('g').attr('transform', 'translate(' + width / 2 + ',' + height / 2 + ')');\n var data = _pieDb__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getSections();\n var sum = 0;\n Object.keys(data).forEach(function (key) {\n sum += data[key];\n }); // Set the color scale\n\n var color = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"scaleOrdinal\"])().domain(data).range(d3__WEBPACK_IMPORTED_MODULE_0__[\"schemeSet2\"]); // Compute the position of each group on the pie:\n\n var pie = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"pie\"])().value(function (d) {\n return d.value;\n });\n var dataReady = pie(Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"entries\"])(data)); // Shape helper to build arcs:\n\n var arcGenerator = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"arc\"])().innerRadius(0).outerRadius(radius); // Build the pie chart: each part of the pie is a path that we build using the arc function.\n\n svg.selectAll('mySlices').data(dataReady).enter().append('path').attr('d', arcGenerator).attr('fill', function (d) {\n return color(d.data.key);\n }).attr('stroke', 'black').style('stroke-width', '2px').style('opacity', 0.7); // Now add the percentage.\n // Use the centroid method to get the best coordinates.\n\n svg.selectAll('mySlices').data(dataReady.filter(function (value) {\n return value.data.value !== 0;\n })).enter().append('text').text(function (d) {\n return (d.data.value / sum * 100).toFixed(0) + '%';\n }).attr('transform', function (d) {\n return 'translate(' + arcGenerator.centroid(d) + ')';\n }).style('text-anchor', 'middle').attr('class', 'slice').style('font-size', 17);\n svg.append('text').text(parser.yy.getTitle()).attr('x', 0).attr('y', -(height - 50) / 2).attr('class', 'pieTitleText'); // Add the legends/annotations for each section\n\n var legend = svg.selectAll('.legend').data(color.domain()).enter().append('g').attr('class', 'legend').attr('transform', function (d, i) {\n var height = legendRectSize + legendSpacing;\n var offset = height * color.domain().length / 2;\n var horz = 12 * legendRectSize;\n var vert = i * height - offset;\n return 'translate(' + horz + ',' + vert + ')';\n });\n legend.append('rect').attr('width', legendRectSize).attr('height', legendRectSize).style('fill', color).style('stroke', color);\n legend.append('text').attr('x', legendRectSize + legendSpacing).attr('y', legendRectSize - legendSpacing).text(function (d) {\n return d;\n });\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error('Error while rendering info diagram');\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error(e);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/pie/styles.js\":\n/*!************************************!*\\\n !*** ./src/diagrams/pie/styles.js ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \".pieTitleText {\\n text-anchor: middle;\\n font-size: 25px;\\n fill: \".concat(options.taskTextDarkColor, \";\\n font-family: \").concat(options.fontFamily, \";\\n }\\n .slice {\\n font-family: \").concat(options.fontFamily, \";\\n fill: \").concat(options.textColor, \";\\n // fill: white;\\n }\\n .legend text {\\n fill: \").concat(options.taskTextDarkColor, \";\\n font-family: \").concat(options.fontFamily, \";\\n font-size: 17px;\\n }\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/requirement/parser/requirementDiagram.jison\":\n/*!******************************************************************!*\\\n !*** ./src/diagrams/requirement/parser/requirementDiagram.jison ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,3],$V1=[1,5],$V2=[1,14],$V3=[2,9],$V4=[1,18],$V5=[1,19],$V6=[1,20],$V7=[1,21],$V8=[1,22],$V9=[1,23],$Va=[1,16],$Vb=[1,24],$Vc=[1,25],$Vd=[1,28],$Ve=[66,67],$Vf=[6,8,35,36,37,38,39,40,48,55,57,66,67],$Vg=[5,14],$Vh=[1,47],$Vi=[1,48],$Vj=[1,49],$Vk=[1,50],$Vl=[1,51],$Vm=[1,52],$Vn=[1,53],$Vo=[57,58],$Vp=[1,65],$Vq=[1,61],$Vr=[1,62],$Vs=[1,63],$Vt=[1,64],$Vu=[1,66],$Vv=[1,70],$Vw=[1,71],$Vx=[1,68],$Vy=[1,69],$Vz=[6,8,35,36,37,38,39,40,48,66,67];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"directive\":4,\"RD\":5,\"NEWLINE\":6,\"diagram\":7,\"EOF\":8,\"openDirective\":9,\"typeDirective\":10,\"closeDirective\":11,\":\":12,\"argDirective\":13,\"open_directive\":14,\"type_directive\":15,\"arg_directive\":16,\"close_directive\":17,\"requirementDef\":18,\"elementDef\":19,\"relationshipDef\":20,\"requirementType\":21,\"requirementName\":22,\"STRUCT_START\":23,\"requirementBody\":24,\"ID\":25,\"COLONSEP\":26,\"id\":27,\"TEXT\":28,\"text\":29,\"RISK\":30,\"riskLevel\":31,\"VERIFYMTHD\":32,\"verifyType\":33,\"STRUCT_STOP\":34,\"REQUIREMENT\":35,\"FUNCTIONAL_REQUIREMENT\":36,\"INTERFACE_REQUIREMENT\":37,\"PERFORMANCE_REQUIREMENT\":38,\"PHYSICAL_REQUIREMENT\":39,\"DESIGN_CONSTRAINT\":40,\"LOW_RISK\":41,\"MED_RISK\":42,\"HIGH_RISK\":43,\"VERIFY_ANALYSIS\":44,\"VERIFY_DEMONSTRATION\":45,\"VERIFY_INSPECTION\":46,\"VERIFY_TEST\":47,\"ELEMENT\":48,\"elementName\":49,\"elementBody\":50,\"TYPE\":51,\"type\":52,\"DOCREF\":53,\"ref\":54,\"END_ARROW_L\":55,\"relationship\":56,\"LINE\":57,\"END_ARROW_R\":58,\"CONTAINS\":59,\"COPIES\":60,\"DERIVES\":61,\"SATISFIES\":62,\"VERIFIES\":63,\"REFINES\":64,\"TRACES\":65,\"unqString\":66,\"qString\":67,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"RD\",6:\"NEWLINE\",8:\"EOF\",12:\":\",14:\"open_directive\",15:\"type_directive\",16:\"arg_directive\",17:\"close_directive\",23:\"STRUCT_START\",25:\"ID\",26:\"COLONSEP\",28:\"TEXT\",30:\"RISK\",32:\"VERIFYMTHD\",34:\"STRUCT_STOP\",35:\"REQUIREMENT\",36:\"FUNCTIONAL_REQUIREMENT\",37:\"INTERFACE_REQUIREMENT\",38:\"PERFORMANCE_REQUIREMENT\",39:\"PHYSICAL_REQUIREMENT\",40:\"DESIGN_CONSTRAINT\",41:\"LOW_RISK\",42:\"MED_RISK\",43:\"HIGH_RISK\",44:\"VERIFY_ANALYSIS\",45:\"VERIFY_DEMONSTRATION\",46:\"VERIFY_INSPECTION\",47:\"VERIFY_TEST\",48:\"ELEMENT\",51:\"TYPE\",53:\"DOCREF\",55:\"END_ARROW_L\",57:\"LINE\",58:\"END_ARROW_R\",59:\"CONTAINS\",60:\"COPIES\",61:\"DERIVES\",62:\"SATISFIES\",63:\"VERIFIES\",64:\"REFINES\",65:\"TRACES\",66:\"unqString\",67:\"qString\"},\nproductions_: [0,[3,2],[3,4],[4,3],[4,5],[9,1],[10,1],[13,1],[11,1],[7,0],[7,2],[7,2],[7,2],[7,2],[18,5],[24,5],[24,5],[24,5],[24,5],[24,2],[24,1],[21,1],[21,1],[21,1],[21,1],[21,1],[21,1],[31,1],[31,1],[31,1],[33,1],[33,1],[33,1],[33,1],[19,5],[50,5],[50,5],[50,2],[50,1],[20,5],[20,5],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[56,1],[22,1],[22,1],[27,1],[27,1],[29,1],[29,1],[49,1],[49,1],[52,1],[52,1],[54,1],[54,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 5:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 6:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 7:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 8:\n yy.parseDirective('}%%', 'close_directive', 'pie'); \nbreak;\ncase 9:\n this.$ = [] \nbreak;\ncase 14:\n yy.addRequirement($$[$0-3], $$[$0-4]) \nbreak;\ncase 15:\n yy.setNewReqId($$[$0-2]); \nbreak;\ncase 16:\n yy.setNewReqText($$[$0-2]); \nbreak;\ncase 17:\n yy.setNewReqRisk($$[$0-2]); \nbreak;\ncase 18:\n yy.setNewReqVerifyMethod($$[$0-2]); \nbreak;\ncase 21:\n this.$=yy.RequirementType.REQUIREMENT;\nbreak;\ncase 22:\n this.$=yy.RequirementType.FUNCTIONAL_REQUIREMENT;\nbreak;\ncase 23:\n this.$=yy.RequirementType.INTERFACE_REQUIREMENT;\nbreak;\ncase 24:\n this.$=yy.RequirementType.PERFORMANCE_REQUIREMENT;\nbreak;\ncase 25:\n this.$=yy.RequirementType.PHYSICAL_REQUIREMENT;\nbreak;\ncase 26:\n this.$=yy.RequirementType.DESIGN_CONSTRAINT;\nbreak;\ncase 27:\n this.$=yy.RiskLevel.LOW_RISK;\nbreak;\ncase 28:\n this.$=yy.RiskLevel.MED_RISK;\nbreak;\ncase 29:\n this.$=yy.RiskLevel.HIGH_RISK;\nbreak;\ncase 30:\n this.$=yy.VerifyType.VERIFY_ANALYSIS;\nbreak;\ncase 31:\n this.$=yy.VerifyType.VERIFY_DEMONSTRATION;\nbreak;\ncase 32:\n this.$=yy.VerifyType.VERIFY_INSPECTION;\nbreak;\ncase 33:\n this.$=yy.VerifyType.VERIFY_TEST;\nbreak;\ncase 34:\n yy.addElement($$[$0-3]) \nbreak;\ncase 35:\n yy.setNewElementType($$[$0-2]); \nbreak;\ncase 36:\n yy.setNewElementDocRef($$[$0-2]); \nbreak;\ncase 39:\n yy.addRelationship($$[$0-2], $$[$0], $$[$0-4]) \nbreak;\ncase 40:\n yy.addRelationship($$[$0-2], $$[$0-4], $$[$0]) \nbreak;\ncase 41:\n this.$=yy.Relationships.CONTAINS;\nbreak;\ncase 42:\n this.$=yy.Relationships.COPIES;\nbreak;\ncase 43:\n this.$=yy.Relationships.DERIVES;\nbreak;\ncase 44:\n this.$=yy.Relationships.SATISFIES;\nbreak;\ncase 45:\n this.$=yy.Relationships.VERIFIES;\nbreak;\ncase 46:\n this.$=yy.Relationships.REFINES;\nbreak;\ncase 47:\n this.$=yy.Relationships.TRACES;\nbreak;\n}\n},\ntable: [{3:1,4:2,5:$V0,9:4,14:$V1},{1:[3]},{3:6,4:2,5:$V0,9:4,14:$V1},{6:[1,7]},{10:8,15:[1,9]},{15:[2,5]},{1:[2,1]},{6:$V2,7:10,8:$V3,18:11,19:12,20:13,21:15,27:17,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{11:26,12:[1,27],17:$Vd},o([12,17],[2,6]),{8:[1,29]},{6:$V2,7:30,8:$V3,18:11,19:12,20:13,21:15,27:17,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{6:$V2,7:31,8:$V3,18:11,19:12,20:13,21:15,27:17,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{6:$V2,7:32,8:$V3,18:11,19:12,20:13,21:15,27:17,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{6:$V2,7:33,8:$V3,18:11,19:12,20:13,21:15,27:17,35:$V4,36:$V5,37:$V6,38:$V7,39:$V8,40:$V9,48:$Va,66:$Vb,67:$Vc},{22:34,66:[1,35],67:[1,36]},{49:37,66:[1,38],67:[1,39]},{55:[1,40],57:[1,41]},o($Ve,[2,21]),o($Ve,[2,22]),o($Ve,[2,23]),o($Ve,[2,24]),o($Ve,[2,25]),o($Ve,[2,26]),o($Vf,[2,50]),o($Vf,[2,51]),o($Vg,[2,3]),{13:42,16:[1,43]},o($Vg,[2,8]),{1:[2,2]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{23:[1,44]},{23:[2,48]},{23:[2,49]},{23:[1,45]},{23:[2,54]},{23:[2,55]},{56:46,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{56:54,59:$Vh,60:$Vi,61:$Vj,62:$Vk,63:$Vl,64:$Vm,65:$Vn},{11:55,17:$Vd},{17:[2,7]},{6:[1,56]},{6:[1,57]},{57:[1,58]},o($Vo,[2,41]),o($Vo,[2,42]),o($Vo,[2,43]),o($Vo,[2,44]),o($Vo,[2,45]),o($Vo,[2,46]),o($Vo,[2,47]),{58:[1,59]},o($Vg,[2,4]),{6:$Vp,24:60,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{6:$Vv,34:$Vw,50:67,51:$Vx,53:$Vy},{27:72,66:$Vb,67:$Vc},{27:73,66:$Vb,67:$Vc},o($Vz,[2,14]),{26:[1,74]},{26:[1,75]},{26:[1,76]},{26:[1,77]},{6:$Vp,24:78,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},o($Vz,[2,20]),o($Vz,[2,34]),{26:[1,79]},{26:[1,80]},{6:$Vv,34:$Vw,50:81,51:$Vx,53:$Vy},o($Vz,[2,38]),o($Vz,[2,39]),o($Vz,[2,40]),{27:82,66:$Vb,67:$Vc},{29:83,66:[1,84],67:[1,85]},{31:86,41:[1,87],42:[1,88],43:[1,89]},{33:90,44:[1,91],45:[1,92],46:[1,93],47:[1,94]},o($Vz,[2,19]),{52:95,66:[1,96],67:[1,97]},{54:98,66:[1,99],67:[1,100]},o($Vz,[2,37]),{6:[1,101]},{6:[1,102]},{6:[2,52]},{6:[2,53]},{6:[1,103]},{6:[2,27]},{6:[2,28]},{6:[2,29]},{6:[1,104]},{6:[2,30]},{6:[2,31]},{6:[2,32]},{6:[2,33]},{6:[1,105]},{6:[2,56]},{6:[2,57]},{6:[1,106]},{6:[2,58]},{6:[2,59]},{6:$Vp,24:107,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{6:$Vp,24:108,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{6:$Vp,24:109,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{6:$Vp,24:110,25:$Vq,28:$Vr,30:$Vs,32:$Vt,34:$Vu},{6:$Vv,34:$Vw,50:111,51:$Vx,53:$Vy},{6:$Vv,34:$Vw,50:112,51:$Vx,53:$Vy},o($Vz,[2,15]),o($Vz,[2,16]),o($Vz,[2,17]),o($Vz,[2,18]),o($Vz,[2,35]),o($Vz,[2,36])],\ndefaultActions: {5:[2,5],6:[2,1],29:[2,2],30:[2,10],31:[2,11],32:[2,12],33:[2,13],35:[2,48],36:[2,49],38:[2,54],39:[2,55],43:[2,7],84:[2,52],85:[2,53],87:[2,27],88:[2,28],89:[2,29],91:[2,30],92:[2,31],93:[2,32],94:[2,33],96:[2,56],97:[2,57],99:[2,58],100:[2,59]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 14; \nbreak;\ncase 1: this.begin('type_directive'); return 15; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 12; \nbreak;\ncase 3: this.popState(); this.popState(); return 17; \nbreak;\ncase 4:return 16;\nbreak;\ncase 5:return 6;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip comments */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:return 8;\nbreak;\ncase 10:return 5;\nbreak;\ncase 11:return 23;\nbreak;\ncase 12:return 34;\nbreak;\ncase 13:return 26;\nbreak;\ncase 14:return 25;\nbreak;\ncase 15:return 28;\nbreak;\ncase 16:return 30;\nbreak;\ncase 17:return 32;\nbreak;\ncase 18:return 35;\nbreak;\ncase 19:return 36;\nbreak;\ncase 20:return 37;\nbreak;\ncase 21:return 38;\nbreak;\ncase 22:return 39;\nbreak;\ncase 23:return 40;\nbreak;\ncase 24:return 41;\nbreak;\ncase 25:return 42;\nbreak;\ncase 26:return 43;\nbreak;\ncase 27:return 44;\nbreak;\ncase 28:return 45;\nbreak;\ncase 29:return 46;\nbreak;\ncase 30:return 47;\nbreak;\ncase 31:return 48;\nbreak;\ncase 32:return 59;\nbreak;\ncase 33:return 60;\nbreak;\ncase 34:return 61;\nbreak;\ncase 35:return 62;\nbreak;\ncase 36:return 63;\nbreak;\ncase 37:return 64;\nbreak;\ncase 38:return 65;\nbreak;\ncase 39:return 51;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 55;\nbreak;\ncase 42:return 58;\nbreak;\ncase 43:return 57;\nbreak;\ncase 44: this.begin(\"string\"); \nbreak;\ncase 45: this.popState(); \nbreak;\ncase 46: return \"qString\"; \nbreak;\ncase 47: yy_.yytext = yy_.yytext.trim(); return 66;\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:(\\r?\\n)+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\\b)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?::)/i,/^(?:id\\b)/i,/^(?:text\\b)/i,/^(?:risk\\b)/i,/^(?:verifyMethod\\b)/i,/^(?:requirement\\b)/i,/^(?:functionalRequirement\\b)/i,/^(?:interfaceRequirement\\b)/i,/^(?:performanceRequirement\\b)/i,/^(?:physicalRequirement\\b)/i,/^(?:designConstraint\\b)/i,/^(?:low\\b)/i,/^(?:medium\\b)/i,/^(?:high\\b)/i,/^(?:analysis\\b)/i,/^(?:demonstration\\b)/i,/^(?:inspection\\b)/i,/^(?:test\\b)/i,/^(?:element\\b)/i,/^(?:contains\\b)/i,/^(?:copies\\b)/i,/^(?:derives\\b)/i,/^(?:satisfies\\b)/i,/^(?:verifies\\b)/i,/^(?:refines\\b)/i,/^(?:traces\\b)/i,/^(?:type\\b)/i,/^(?:docref\\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:[\"])/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[\\w][^\\r\\n\\{\\<\\>\\-\\=]*)/i],\nconditions: {\"close_directive\":{\"rules\":[],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"unqString\":{\"rules\":[],\"inclusive\":false},\"token\":{\"rules\":[],\"inclusive\":false},\"string\":{\"rules\":[45,46],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,47],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/requirement/requirementDb.js\":\n/*!***************************************************!*\\\n !*** ./src/diagrams/requirement/requirementDb.js ***!\n \\***************************************************/\n/*! exports provided: parseDirective, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n\n\n\nvar relations = [];\nvar latestRequirement = {};\nvar requirements = {};\nvar latestElement = {};\nvar elements = {};\nvar RequirementType = {\n REQUIREMENT: 'Requirement',\n FUNCTIONAL_REQUIREMENT: 'Functional Requirement',\n INTERFACE_REQUIREMENT: 'Interface Requirement',\n PERFORMANCE_REQUIREMENT: 'Performance Requirement',\n PHYSICAL_REQUIREMENT: 'Physical Requirement',\n DESIGN_CONSTRAINT: 'Design Constraint'\n};\nvar RiskLevel = {\n LOW_RISK: 'Low',\n MED_RISK: 'Medium',\n HIGH_RISK: 'High'\n};\nvar VerifyType = {\n VERIFY_ANALYSIS: 'Analysis',\n VERIFY_DEMONSTRATION: 'Demonstration',\n VERIFY_INSPECTION: 'Inspection',\n VERIFY_TEST: 'Test'\n};\nvar Relationships = {\n CONTAINS: 'contains',\n COPIES: 'copies',\n DERIVES: 'derives',\n SATISFIES: 'satisfies',\n VERIFIES: 'verifies',\n REFINES: 'refines',\n TRACES: 'traces'\n};\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseDirective(this, statement, context, type);\n};\n\nvar addRequirement = function addRequirement(name, type) {\n if (typeof requirements[name] === 'undefined') {\n requirements[name] = {\n name: name,\n type: type,\n id: latestRequirement.id,\n text: latestRequirement.text,\n risk: latestRequirement.risk,\n verifyMethod: latestRequirement.verifyMethod\n };\n }\n\n latestRequirement = {};\n return requirements[name];\n};\n\nvar getRequirements = function getRequirements() {\n return requirements;\n};\n\nvar setNewReqId = function setNewReqId(id) {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.id = id;\n }\n};\n\nvar setNewReqText = function setNewReqText(text) {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.text = text;\n }\n};\n\nvar setNewReqRisk = function setNewReqRisk(risk) {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.risk = risk;\n }\n};\n\nvar setNewReqVerifyMethod = function setNewReqVerifyMethod(verifyMethod) {\n if (typeof latestRequirement != 'undefined') {\n latestRequirement.verifyMethod = verifyMethod;\n }\n};\n\nvar addElement = function addElement(name) {\n if (typeof elements[name] === 'undefined') {\n elements[name] = {\n name: name,\n type: latestElement.type,\n docRef: latestElement.docRef\n };\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].info('Added new requirement: ', name);\n }\n\n latestElement = {};\n return elements[name];\n};\n\nvar getElements = function getElements() {\n return elements;\n};\n\nvar setNewElementType = function setNewElementType(type) {\n if (typeof latestElement != 'undefined') {\n latestElement.type = type;\n }\n};\n\nvar setNewElementDocRef = function setNewElementDocRef(docRef) {\n if (typeof latestElement != 'undefined') {\n latestElement.docRef = docRef;\n }\n};\n\nvar addRelationship = function addRelationship(type, src, dst) {\n relations.push({\n type: type,\n src: src,\n dst: dst\n });\n};\n\nvar getRelationships = function getRelationships() {\n return relations;\n};\n\nvar clear = function clear() {\n relations = [];\n latestRequirement = {};\n requirements = {};\n latestElement = {};\n elements = {};\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n RequirementType: RequirementType,\n RiskLevel: RiskLevel,\n VerifyType: VerifyType,\n Relationships: Relationships,\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_0__[\"getConfig\"]().req;\n },\n addRequirement: addRequirement,\n getRequirements: getRequirements,\n setNewReqId: setNewReqId,\n setNewReqText: setNewReqText,\n setNewReqRisk: setNewReqRisk,\n setNewReqVerifyMethod: setNewReqVerifyMethod,\n addElement: addElement,\n getElements: getElements,\n setNewElementType: setNewElementType,\n setNewElementDocRef: setNewElementDocRef,\n addRelationship: addRelationship,\n getRelationships: getRelationships,\n clear: clear\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/requirement/requirementMarkers.js\":\n/*!********************************************************!*\\\n !*** ./src/diagrams/requirement/requirementMarkers.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar ReqMarkers = {\n CONTAINS: 'contains',\n ARROW: 'arrow'\n};\n\nvar insertLineEndings = function insertLineEndings(parentNode, conf) {\n var containsNode = parentNode.append('defs').append('marker').attr('id', ReqMarkers.CONTAINS + '_line_ending').attr('refX', 0).attr('refY', conf.line_height / 2).attr('markerWidth', conf.line_height).attr('markerHeight', conf.line_height).attr('orient', 'auto').append('g');\n containsNode.append('circle').attr('cx', conf.line_height / 2).attr('cy', conf.line_height / 2).attr('r', conf.line_height / 2).attr('stroke', conf.rect_border_color).attr('stroke-width', 1).attr('fill', 'none');\n containsNode.append('line').attr('x1', 0).attr('x2', conf.line_height).attr('y1', conf.line_height / 2).attr('y2', conf.line_height / 2).attr('stroke', conf.rect_border_color).attr('stroke-width', 1);\n containsNode.append('line').attr('y1', 0).attr('y2', conf.line_height).attr('x1', conf.line_height / 2).attr('x2', conf.line_height / 2).attr('stroke', conf.rect_border_color).attr('stroke-width', 1);\n parentNode.append('defs').append('marker').attr('id', ReqMarkers.ARROW + '_line_ending').attr('refX', conf.line_height).attr('refY', 0.5 * conf.line_height).attr('markerWidth', conf.line_height).attr('markerHeight', conf.line_height).attr('orient', 'auto').append('path').attr('d', \"M0,0 \\n L\".concat(conf.line_height, \",\").concat(conf.line_height / 2, \" \\n M\").concat(conf.line_height, \",\").concat(conf.line_height / 2, \" \\n L0,\").concat(conf.line_height)).attr('stroke-width', 1).attr('stroke', conf.rect_border_color);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n ReqMarkers: ReqMarkers,\n insertLineEndings: insertLineEndings\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/requirement/requirementRenderer.js\":\n/*!*********************************************************!*\\\n !*** ./src/diagrams/requirement/requirementRenderer.js ***!\n \\*********************************************************/\n/*! exports provided: setConf, drawReqs, drawElements, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawReqs\", function() { return drawReqs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawElements\", function() { return drawElements; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ \"dagre\");\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./parser/requirementDiagram */ \"./src/diagrams/requirement/parser/requirementDiagram.jison\");\n/* harmony import */ var _parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _requirementDb__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./requirementDb */ \"./src/diagrams/requirement/requirementDb.js\");\n/* harmony import */ var _requirementMarkers__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./requirementMarkers */ \"./src/diagrams/requirement/requirementMarkers.js\");\n\n\n\n\n\n\n\n\n\n\nvar conf = {};\nvar relCnt = 0;\nvar setConf = function setConf(cnf) {\n if (typeof cnf === 'undefined') {\n return;\n }\n\n var keys = Object.keys(cnf);\n\n for (var i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\n\nvar newRectNode = function newRectNode(parentNode, id) {\n return parentNode.insert('rect', '#' + id).attr('class', 'req reqBox').attr('fill', conf.rect_fill).attr('fill-opacity', '100%').attr('stroke', conf.rect_border_color).attr('stroke-size', conf.rect_border_size).attr('x', 0).attr('y', 0).attr('width', conf.rect_min_width + 'px').attr('height', conf.rect_min_height + 'px');\n};\n\nvar newTitleNode = function newTitleNode(parentNode, id, txts) {\n var x = conf.rect_min_width / 2;\n var title = parentNode.append('text').attr('class', 'req reqLabel reqTitle').attr('id', id).attr('x', x).attr('y', conf.rect_padding).attr('dominant-baseline', 'hanging').attr('style', 'font-family: ' + _config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().fontFamily + '; font-size: ' + conf.fontSize + 'px');\n var i = 0;\n txts.forEach(function (textStr) {\n if (i == 0) {\n title.append('tspan').attr('text-anchor', 'middle').attr('x', conf.rect_min_width / 2).attr('dy', 0).text(textStr);\n } else {\n title.append('tspan').attr('text-anchor', 'middle').attr('x', conf.rect_min_width / 2).attr('dy', conf.line_height * 0.75).text(textStr);\n }\n\n i++;\n });\n var yPadding = 1.5 * conf.rect_padding;\n var linePadding = i * conf.line_height * 0.75;\n var totalY = yPadding + linePadding;\n parentNode.append('line').attr('x1', '0').attr('x2', conf.rect_min_width).attr('y1', totalY).attr('y2', totalY).attr('style', \"stroke: \".concat(conf.rect_border_color, \"; stroke-width: 1\"));\n return {\n titleNode: title,\n y: totalY\n };\n};\n\nvar newBodyNode = function newBodyNode(parentNode, id, txts, yStart) {\n var body = parentNode.append('text').attr('class', 'req reqLabel').attr('id', id).attr('x', conf.rect_padding).attr('y', yStart).attr('dominant-baseline', 'hanging').attr('style', 'font-family: ' + _config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().fontFamily + '; font-size: ' + conf.fontSize + 'px');\n var currentRow = 0;\n var charLimit = 30;\n var wrappedTxts = [];\n txts.forEach(function (textStr) {\n var currentTextLen = textStr.length;\n\n while (currentTextLen > charLimit && currentRow < 3) {\n var firstPart = textStr.substring(0, charLimit);\n textStr = textStr.substring(charLimit, textStr.length);\n currentTextLen = textStr.length;\n wrappedTxts[wrappedTxts.length] = firstPart;\n currentRow++;\n }\n\n if (currentRow == 3) {\n var lastStr = wrappedTxts[wrappedTxts.length - 1];\n wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + '...';\n } else {\n wrappedTxts[wrappedTxts.length] = textStr;\n }\n\n currentRow = 0;\n });\n wrappedTxts.forEach(function (textStr) {\n body.append('tspan').attr('x', conf.rect_padding).attr('dy', conf.line_height).text(textStr);\n });\n return body;\n};\n\nvar addEdgeLabel = function addEdgeLabel(parentNode, svgPath, conf, txt) {\n // Find the half-way point\n var len = svgPath.node().getTotalLength();\n var labelPoint = svgPath.node().getPointAtLength(len * 0.5); // Append a text node containing the label\n\n var labelId = 'rel' + relCnt;\n relCnt++;\n var labelNode = parentNode.append('text').attr('class', 'er relationshipLabel').attr('id', labelId).attr('x', labelPoint.x).attr('y', labelPoint.y).attr('text-anchor', 'middle').attr('dominant-baseline', 'middle').attr('style', 'font-family: ' + conf.fontFamily + '; font-size: ' + conf.fontSize + 'px').text(txt); // Figure out how big the opaque 'container' rectangle needs to be\n\n var labelBBox = labelNode.node().getBBox(); // Insert the opaque rectangle before the text label\n\n parentNode.insert('rect', '#' + labelId).attr('class', 'req reqLabelBox').attr('x', labelPoint.x - labelBBox.width / 2).attr('y', labelPoint.y - labelBBox.height / 2).attr('width', labelBBox.width).attr('height', labelBBox.height).attr('fill', 'white').attr('fill-opacity', '85%');\n};\n\nvar drawRelationshipFromLayout = function drawRelationshipFromLayout(svg, rel, g, insert) {\n // Find the edge relating to this relationship\n var edge = g.edge(elementString(rel.src), elementString(rel.dst)); // Get a function that will generate the line path\n\n var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"line\"])().x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }); // Insert the line at the right place\n\n var svgPath = svg.insert('path', '#' + insert).attr('class', 'er relationshipLine').attr('d', lineFunction(edge.points)).attr('stroke', conf.rect_border_color).attr('fill', 'none');\n\n if (rel.type == _requirementDb__WEBPACK_IMPORTED_MODULE_8__[\"default\"].Relationships.CONTAINS) {\n svgPath.attr('marker-start', 'url(' + _common_common__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getUrl(conf.arrowMarkerAbsolute) + '#' + rel.type + '_line_ending' + ')');\n } else {\n svgPath.attr('stroke-dasharray', '10,7');\n svgPath.attr('marker-end', 'url(' + _common_common__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getUrl(conf.arrowMarkerAbsolute) + '#' + _requirementMarkers__WEBPACK_IMPORTED_MODULE_9__[\"default\"].ReqMarkers.ARROW + '_line_ending' + ')');\n }\n\n addEdgeLabel(svg, svgPath, conf, \"<<\".concat(rel.type, \">>\"));\n return;\n};\n\nvar drawReqs = function drawReqs(reqs, graph, svgNode) {\n Object.keys(reqs).forEach(function (reqName) {\n var req = reqs[reqName];\n reqName = elementString(reqName);\n console.log('reqName: ', reqName);\n _logger__WEBPACK_IMPORTED_MODULE_4__[\"log\"].info('Added new requirement: ', reqName);\n var groupNode = svgNode.append('g').attr('id', reqName);\n var textId = 'req-' + reqName;\n var rectNode = newRectNode(groupNode, textId);\n var nodes = [];\n var titleNodeInfo = newTitleNode(groupNode, reqName + '_title', [\"<<\".concat(req.type, \">>\"), \"\".concat(req.name)]);\n nodes.push(titleNodeInfo.titleNode);\n var bodyNode = newBodyNode(groupNode, reqName + '_body', [\"Id: \".concat(req.id), \"Text: \".concat(req.text), \"Risk: \".concat(req.risk), \"Verification: \".concat(req.verifyMethod)], titleNodeInfo.y);\n nodes.push(bodyNode);\n var rectBBox = rectNode.node().getBBox(); // Add the entity to the graph\n\n graph.setNode(reqName, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: reqName\n });\n });\n};\nvar drawElements = function drawElements(els, graph, svgNode) {\n Object.keys(els).forEach(function (elName) {\n var el = els[elName];\n var id = elementString(elName);\n var groupNode = svgNode.append('g').attr('id', id);\n var textId = 'element-' + id;\n var rectNode = newRectNode(groupNode, textId);\n var nodes = [];\n var titleNodeInfo = newTitleNode(groupNode, textId + '_title', [\"<<Element>>\", \"\".concat(elName)]);\n nodes.push(titleNodeInfo.titleNode);\n var bodyNode = newBodyNode(groupNode, textId + '_body', [\"Type: \".concat(el.type || 'Not Specified'), \"Doc Ref: \".concat(el.docref || 'None')], titleNodeInfo.y);\n nodes.push(bodyNode);\n var rectBBox = rectNode.node().getBBox(); // Add the entity to the graph\n\n graph.setNode(id, {\n width: rectBBox.width,\n height: rectBBox.height,\n shape: 'rect',\n id: id\n });\n });\n};\n\nvar addRelationships = function addRelationships(relationships, g) {\n relationships.forEach(function (r) {\n var src = elementString(r.src);\n var dst = elementString(r.dst);\n g.setEdge(src, dst, {\n relationship: r\n });\n });\n return relationships;\n};\n\nvar adjustEntities = function adjustEntities(svgNode, graph) {\n graph.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n svgNode.select('#' + v);\n svgNode.select('#' + v).attr('transform', 'translate(' + (graph.node(v).x - graph.node(v).width / 2) + ',' + (graph.node(v).y - graph.node(v).height / 2) + ' )');\n }\n });\n return;\n};\n\nvar elementString = function elementString(str) {\n return str.replace(/\\s/g, '').replace(/\\./g, '_');\n};\n\nvar draw = function draw(text, id) {\n _parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_7__[\"parser\"].yy = _requirementDb__WEBPACK_IMPORTED_MODULE_8__[\"default\"];\n _parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_7__[\"parser\"].parse(text);\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id='\".concat(id, \"']\"));\n _requirementMarkers__WEBPACK_IMPORTED_MODULE_9__[\"default\"].insertLineEndings(svg, conf);\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({\n multigraph: false,\n compound: false,\n directed: true\n }).setGraph({\n rankdir: conf.layoutDirection,\n marginx: 20,\n marginy: 20,\n nodesep: 100,\n edgesep: 100,\n ranksep: 100\n }).setDefaultEdgeLabel(function () {\n return {};\n });\n var requirements = _requirementDb__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getRequirements();\n var elements = _requirementDb__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getElements();\n var relationships = _requirementDb__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getRelationships();\n drawReqs(requirements, g, svg);\n drawElements(elements, g, svg);\n addRelationships(relationships, g);\n dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(g);\n adjustEntities(svg, g);\n relationships.forEach(function (rel) {\n drawRelationshipFromLayout(svg, rel, g, id);\n }); // svg.attr('height', '500px');\n\n var padding = conf.rect_padding;\n var svgBounds = svg.node().getBBox();\n var width = svgBounds.width + padding * 2;\n var height = svgBounds.height + padding * 2;\n Object(_utils__WEBPACK_IMPORTED_MODULE_5__[\"configureSvgSize\"])(svg, height, width, conf.useMaxWidth);\n svg.attr('viewBox', \"\".concat(svgBounds.x - padding, \" \").concat(svgBounds.y - padding, \" \").concat(width, \" \").concat(height));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/requirement/styles.js\":\n/*!********************************************!*\\\n !*** ./src/diagrams/requirement/styles.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles() {\n return \"\";\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/sequence/parser/sequenceDiagram.jison\":\n/*!************************************************************!*\\\n !*** ./src/diagrams/sequence/parser/sequenceDiagram.jison ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,18],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,24],$Vc=[1,25],$Vd=[1,26],$Ve=[1,27],$Vf=[1,28],$Vg=[1,29],$Vh=[1,32],$Vi=[1,33],$Vj=[1,36],$Vk=[1,4,5,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,58],$Vl=[1,44],$Vm=[4,5,16,21,22,23,25,27,28,29,30,31,33,37,48,58],$Vn=[4,5,16,21,22,23,25,27,28,29,30,31,33,36,37,48,58],$Vo=[4,5,16,21,22,23,25,27,28,29,30,31,33,35,37,48,58],$Vp=[46,47,48],$Vq=[1,4,5,7,16,21,22,23,25,27,28,29,30,31,33,35,36,37,48,58];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NEWLINE\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"openDirective\":11,\"typeDirective\":12,\"closeDirective\":13,\":\":14,\"argDirective\":15,\"participant\":16,\"actor\":17,\"AS\":18,\"restOfLine\":19,\"signal\":20,\"autonumber\":21,\"activate\":22,\"deactivate\":23,\"note_statement\":24,\"title\":25,\"text2\":26,\"loop\":27,\"end\":28,\"rect\":29,\"opt\":30,\"alt\":31,\"else_sections\":32,\"par\":33,\"par_sections\":34,\"and\":35,\"else\":36,\"note\":37,\"placement\":38,\"over\":39,\"actor_pair\":40,\"spaceList\":41,\",\":42,\"left_of\":43,\"right_of\":44,\"signaltype\":45,\"+\":46,\"-\":47,\"ACTOR\":48,\"SOLID_OPEN_ARROW\":49,\"DOTTED_OPEN_ARROW\":50,\"SOLID_ARROW\":51,\"DOTTED_ARROW\":52,\"SOLID_CROSS\":53,\"DOTTED_CROSS\":54,\"SOLID_POINT\":55,\"DOTTED_POINT\":56,\"TXT\":57,\"open_directive\":58,\"type_directive\":59,\"arg_directive\":60,\"close_directive\":61,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NEWLINE\",7:\"SD\",14:\":\",16:\"participant\",18:\"AS\",19:\"restOfLine\",21:\"autonumber\",22:\"activate\",23:\"deactivate\",25:\"title\",27:\"loop\",28:\"end\",29:\"rect\",30:\"opt\",31:\"alt\",33:\"par\",35:\"and\",36:\"else\",37:\"note\",39:\"over\",42:\",\",43:\"left_of\",44:\"right_of\",46:\"+\",47:\"-\",48:\"ACTOR\",49:\"SOLID_OPEN_ARROW\",50:\"DOTTED_OPEN_ARROW\",51:\"SOLID_ARROW\",52:\"DOTTED_ARROW\",53:\"SOLID_CROSS\",54:\"DOTTED_CROSS\",55:\"SOLID_POINT\",56:\"DOTTED_POINT\",57:\"TXT\",58:\"open_directive\",59:\"type_directive\",60:\"arg_directive\",61:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[6,4],[6,6],[10,5],[10,3],[10,2],[10,1],[10,3],[10,3],[10,2],[10,3],[10,4],[10,4],[10,4],[10,4],[10,4],[10,1],[34,1],[34,4],[32,1],[32,4],[24,4],[24,4],[41,2],[41,1],[40,3],[40,1],[38,1],[38,1],[20,5],[20,5],[20,4],[17,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[45,1],[26,1],[11,1],[12,1],[15,1],[13,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n yy.apply($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$=[]; \nbreak;\ncase 12:\n$$[$0-3].description=yy.parseMessage($$[$0-1]); this.$=$$[$0-3];\nbreak;\ncase 13:\nthis.$=$$[$0-1];\nbreak;\ncase 15:\nyy.enableSequenceNumbers()\nbreak;\ncase 16:\nthis.$={type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]};\nbreak;\ncase 17:\nthis.$={type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-1]};\nbreak;\ncase 19:\nthis.$=[{type:'setTitle', text:$$[$0-1]}]\nbreak;\ncase 20:\n\n\t\t$$[$0-1].unshift({type: 'loopStart', loopText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.LOOP_START});\n\t\t$$[$0-1].push({type: 'loopEnd', loopText:$$[$0-2], signalType: yy.LINETYPE.LOOP_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 21:\n\n\t\t$$[$0-1].unshift({type: 'rectStart', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_START });\n\t\t$$[$0-1].push({type: 'rectEnd', color:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.RECT_END });\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 22:\n\n\t\t$$[$0-1].unshift({type: 'optStart', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_START});\n\t\t$$[$0-1].push({type: 'optEnd', optText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.OPT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 23:\n\n\t\t// Alt start\n\t\t$$[$0-1].unshift({type: 'altStart', altText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.ALT_START});\n\t\t// Content in alt is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'altEnd', signalType: yy.LINETYPE.ALT_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 24:\n\n\t\t// Parallel start\n\t\t$$[$0-1].unshift({type: 'parStart', parText:yy.parseMessage($$[$0-2]), signalType: yy.LINETYPE.PAR_START});\n\t\t// Content in par is already in $$[$0-1]\n\t\t// End\n\t\t$$[$0-1].push({type: 'parEnd', signalType: yy.LINETYPE.PAR_END});\n\t\tthis.$=$$[$0-1];\nbreak;\ncase 27:\n this.$ = $$[$0-3].concat([{type: 'and', parText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.PAR_AND}, $$[$0]]); \nbreak;\ncase 29:\n this.$ = $$[$0-3].concat([{type: 'else', altText:yy.parseMessage($$[$0-1]), signalType: yy.LINETYPE.ALT_ELSE}, $$[$0]]); \nbreak;\ncase 30:\n\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:$$[$0-2], actor:$$[$0-1].actor, text:$$[$0]}];\nbreak;\ncase 31:\n\n\t\t// Coerce actor_pair into a [to, from, ...] array\n\t\t$$[$0-2] = [].concat($$[$0-1], $$[$0-1]).slice(0, 2);\n\t\t$$[$0-2][0] = $$[$0-2][0].actor;\n\t\t$$[$0-2][1] = $$[$0-2][1].actor;\n\t\tthis.$ = [$$[$0-1], {type:'addNote', placement:yy.PLACEMENT.OVER, actor:$$[$0-2].slice(0, 2), text:$$[$0]}];\nbreak;\ncase 34:\n this.$ = [$$[$0-2], $$[$0]]; \nbreak;\ncase 35:\n this.$ = $$[$0]; \nbreak;\ncase 36:\n this.$ = yy.PLACEMENT.LEFTOF; \nbreak;\ncase 37:\n this.$ = yy.PLACEMENT.RIGHTOF; \nbreak;\ncase 38:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeStart', signalType: yy.LINETYPE.ACTIVE_START, actor: $$[$0-1]}\n\t ]\nbreak;\ncase 39:\n this.$ = [$$[$0-4],$$[$0-1],{type: 'addMessage', from:$$[$0-4].actor, to:$$[$0-1].actor, signalType:$$[$0-3], msg:$$[$0]},\n\t {type: 'activeEnd', signalType: yy.LINETYPE.ACTIVE_END, actor: $$[$0-4]}\n\t ]\nbreak;\ncase 40:\n this.$ = [$$[$0-3],$$[$0-1],{type: 'addMessage', from:$$[$0-3].actor, to:$$[$0-1].actor, signalType:$$[$0-2], msg:$$[$0]}]\nbreak;\ncase 41:\nthis.$={type: 'addActor', actor:$$[$0]}\nbreak;\ncase 42:\n this.$ = yy.LINETYPE.SOLID_OPEN; \nbreak;\ncase 43:\n this.$ = yy.LINETYPE.DOTTED_OPEN; \nbreak;\ncase 44:\n this.$ = yy.LINETYPE.SOLID; \nbreak;\ncase 45:\n this.$ = yy.LINETYPE.DOTTED; \nbreak;\ncase 46:\n this.$ = yy.LINETYPE.SOLID_CROSS; \nbreak;\ncase 47:\n this.$ = yy.LINETYPE.DOTTED_CROSS; \nbreak;\ncase 48:\n this.$ = yy.LINETYPE.SOLID_POINT; \nbreak;\ncase 49:\n this.$ = yy.LINETYPE.DOTTED_POINT; \nbreak;\ncase 50:\nthis.$ = yy.parseMessage($$[$0].trim().substring(1)) \nbreak;\ncase 51:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 52:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 53:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 54:\n yy.parseDirective('}%%', 'close_directive', 'sequence'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,11:6,58:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,11:6,58:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,11:6,58:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,11:6,58:$V3},o([1,4,5,16,21,22,23,25,27,29,30,31,33,37,48,58],$V4,{8:11}),{12:12,59:[1,13]},{59:[2,51]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,58:$V3},{13:34,14:[1,35],61:$Vj},o([14,61],[2,52]),o($Vk,[2,6]),{6:30,10:37,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,58:$V3},o($Vk,[2,8]),o($Vk,[2,9]),{17:38,48:$Vi},{5:[1,39]},o($Vk,[2,15]),{17:40,48:$Vi},{17:41,48:$Vi},{5:[1,42]},{26:43,57:$Vl},{19:[1,45]},{19:[1,46]},{19:[1,47]},{19:[1,48]},{19:[1,49]},o($Vk,[2,25]),{45:50,49:[1,51],50:[1,52],51:[1,53],52:[1,54],53:[1,55],54:[1,56],55:[1,57],56:[1,58]},{38:59,39:[1,60],43:[1,61],44:[1,62]},o([5,18,42,49,50,51,52,53,54,55,56,57],[2,41]),{5:[1,63]},{15:64,60:[1,65]},{5:[2,54]},o($Vk,[2,7]),{5:[1,67],18:[1,66]},o($Vk,[2,14]),{5:[1,68]},{5:[1,69]},o($Vk,[2,18]),{5:[1,70]},{5:[2,50]},o($Vm,$V4,{8:71}),o($Vm,$V4,{8:72}),o($Vm,$V4,{8:73}),o($Vn,$V4,{32:74,8:75}),o($Vo,$V4,{34:76,8:77}),{17:80,46:[1,78],47:[1,79],48:$Vi},o($Vp,[2,42]),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,45]),o($Vp,[2,46]),o($Vp,[2,47]),o($Vp,[2,48]),o($Vp,[2,49]),{17:81,48:$Vi},{17:83,40:82,48:$Vi},{48:[2,36]},{48:[2,37]},o($Vq,[2,10]),{13:84,61:$Vj},{61:[2,53]},{19:[1,85]},o($Vk,[2,13]),o($Vk,[2,16]),o($Vk,[2,17]),o($Vk,[2,19]),{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,86],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,58:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,87],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,58:$V3},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[1,88],29:$Vd,30:$Ve,31:$Vf,33:$Vg,37:$Vh,48:$Vi,58:$V3},{28:[1,89]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,28],29:$Vd,30:$Ve,31:$Vf,33:$Vg,36:[1,90],37:$Vh,48:$Vi,58:$V3},{28:[1,91]},{4:$V5,5:$V6,6:30,9:14,10:16,11:6,16:$V7,17:31,20:19,21:$V8,22:$V9,23:$Va,24:23,25:$Vb,27:$Vc,28:[2,26],29:$Vd,30:$Ve,31:$Vf,33:$Vg,35:[1,92],37:$Vh,48:$Vi,58:$V3},{17:93,48:$Vi},{17:94,48:$Vi},{26:95,57:$Vl},{26:96,57:$Vl},{26:97,57:$Vl},{42:[1,98],57:[2,35]},{5:[1,99]},{5:[1,100]},o($Vk,[2,20]),o($Vk,[2,21]),o($Vk,[2,22]),o($Vk,[2,23]),{19:[1,101]},o($Vk,[2,24]),{19:[1,102]},{26:103,57:$Vl},{26:104,57:$Vl},{5:[2,40]},{5:[2,30]},{5:[2,31]},{17:105,48:$Vi},o($Vq,[2,11]),o($Vk,[2,12]),o($Vn,$V4,{8:75,32:106}),o($Vo,$V4,{8:77,34:107}),{5:[2,38]},{5:[2,39]},{57:[2,34]},{28:[2,29]},{28:[2,27]}],\ndefaultActions: {7:[2,51],8:[2,1],9:[2,2],10:[2,3],36:[2,54],44:[2,50],61:[2,36],62:[2,37],65:[2,53],95:[2,40],96:[2,30],97:[2,31],103:[2,38],104:[2,39],105:[2,34],106:[2,29],107:[2,27]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 58; \nbreak;\ncase 1: this.begin('type_directive'); return 59; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 14; \nbreak;\ncase 3: this.popState(); this.popState(); return 61; \nbreak;\ncase 4:return 60;\nbreak;\ncase 5:return 5;\nbreak;\ncase 6:/* skip all whitespace */\nbreak;\ncase 7:/* skip same-line whitespace */\nbreak;\ncase 8:/* skip comments */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11: this.begin('ID'); return 16; \nbreak;\ncase 12: yy_.yytext = yy_.yytext.trim(); this.begin('ALIAS'); return 48; \nbreak;\ncase 13: this.popState(); this.popState(); this.begin('LINE'); return 18; \nbreak;\ncase 14: this.popState(); this.popState(); return 5; \nbreak;\ncase 15: this.begin('LINE'); return 27; \nbreak;\ncase 16: this.begin('LINE'); return 29; \nbreak;\ncase 17: this.begin('LINE'); return 30; \nbreak;\ncase 18: this.begin('LINE'); return 31; \nbreak;\ncase 19: this.begin('LINE'); return 36; \nbreak;\ncase 20: this.begin('LINE'); return 33; \nbreak;\ncase 21: this.begin('LINE'); return 35; \nbreak;\ncase 22: this.popState(); return 19; \nbreak;\ncase 23:return 28;\nbreak;\ncase 24:return 43;\nbreak;\ncase 25:return 44;\nbreak;\ncase 26:return 39;\nbreak;\ncase 27:return 37;\nbreak;\ncase 28: this.begin('ID'); return 22; \nbreak;\ncase 29: this.begin('ID'); return 23; \nbreak;\ncase 30:return 25;\nbreak;\ncase 31:return 7;\nbreak;\ncase 32:return 21;\nbreak;\ncase 33:return 42;\nbreak;\ncase 34:return 5;\nbreak;\ncase 35: yy_.yytext = yy_.yytext.trim(); return 48; \nbreak;\ncase 36:return 51;\nbreak;\ncase 37:return 52;\nbreak;\ncase 38:return 49;\nbreak;\ncase 39:return 50;\nbreak;\ncase 40:return 53;\nbreak;\ncase 41:return 54;\nbreak;\ncase 42:return 55;\nbreak;\ncase 43:return 56;\nbreak;\ncase 44:return 57;\nbreak;\ncase 45:return 46;\nbreak;\ncase 46:return 47;\nbreak;\ncase 47:return 5;\nbreak;\ncase 48:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:participant\\b)/i,/^(?:[^\\->:\\n,;]+?(?=((?!\\n)\\s)+as(?!\\n)\\s|[#\\n;]|$))/i,/^(?:as\\b)/i,/^(?:(?:))/i,/^(?:loop\\b)/i,/^(?:rect\\b)/i,/^(?:opt\\b)/i,/^(?:alt\\b)/i,/^(?:else\\b)/i,/^(?:par\\b)/i,/^(?:and\\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\\n;]*)/i,/^(?:end\\b)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:over\\b)/i,/^(?:note\\b)/i,/^(?:activate\\b)/i,/^(?:deactivate\\b)/i,/^(?:title\\b)/i,/^(?:sequenceDiagram\\b)/i,/^(?:autonumber\\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\\+\\->:\\n,;]+((?!(-x|--x|-\\)|--\\)))[\\-]*[^\\+\\->:\\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\\)])/i,/^(?:--[\\)])/i,/^(?::(?:(?:no)?wrap)?[^#\\n;]+)/i,/^(?:\\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1,8],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,8],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,8],\"inclusive\":false},\"ID\":{\"rules\":[7,8,12],\"inclusive\":false},\"ALIAS\":{\"rules\":[7,8,13,14],\"inclusive\":false},\"LINE\":{\"rules\":[7,8,22],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,8,9,10,11,15,16,17,18,19,20,21,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/sequence/sequenceDb.js\":\n/*!*********************************************!*\\\n !*** ./src/diagrams/sequence/sequenceDb.js ***!\n \\*********************************************/\n/*! exports provided: parseDirective, addActor, addMessage, addSignal, getMessages, getActors, getActor, getActorKeys, getTitle, getTitleWrapped, enableSequenceNumbers, showSequenceNumbers, setWrap, autoWrap, clear, parseMessage, LINETYPE, ARROWTYPE, PLACEMENT, addNote, setTitle, apply, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addActor\", function() { return addActor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addMessage\", function() { return addMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSignal\", function() { return addSignal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMessages\", function() { return getMessages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActors\", function() { return getActors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActor\", function() { return getActor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getActorKeys\", function() { return getActorKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTitle\", function() { return getTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTitleWrapped\", function() { return getTitleWrapped; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableSequenceNumbers\", function() { return enableSequenceNumbers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showSequenceNumbers\", function() { return showSequenceNumbers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setWrap\", function() { return setWrap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"autoWrap\", function() { return autoWrap; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseMessage\", function() { return parseMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LINETYPE\", function() { return LINETYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ARROWTYPE\", function() { return ARROWTYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PLACEMENT\", function() { return PLACEMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addNote\", function() { return addNote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTitle\", function() { return setTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"apply\", function() { return apply; });\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n\n\n\nvar prevActor = undefined;\nvar actors = {};\nvar messages = [];\nvar notes = [];\nvar title = '';\nvar titleWrapped = false;\nvar sequenceNumbersEnabled = false;\nvar wrapEnabled = false;\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parseDirective(this, statement, context, type);\n};\nvar addActor = function addActor(id, name, description) {\n // Don't allow description nulling\n var old = actors[id];\n if (old && name === old.name && description == null) return; // Don't allow null descriptions, either\n\n if (description == null || description.text == null) {\n description = {\n text: name,\n wrap: null\n };\n }\n\n actors[id] = {\n name: name,\n description: description.text,\n wrap: description.wrap === undefined && autoWrap() || !!description.wrap,\n prevActor: prevActor\n };\n\n if (prevActor && actors[prevActor]) {\n actors[prevActor].nextActor = id;\n }\n\n prevActor = id;\n};\n\nvar activationCount = function activationCount(part) {\n var i;\n var count = 0;\n\n for (i = 0; i < messages.length; i++) {\n if (messages[i].type === LINETYPE.ACTIVE_START) {\n if (messages[i].from.actor === part) {\n count++;\n }\n }\n\n if (messages[i].type === LINETYPE.ACTIVE_END) {\n if (messages[i].from.actor === part) {\n count--;\n }\n }\n }\n\n return count;\n};\n\nvar addMessage = function addMessage(idFrom, idTo, message, answer) {\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === undefined && autoWrap() || !!message.wrap,\n answer: answer\n });\n};\nvar addSignal = function addSignal(idFrom, idTo) {\n var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n text: undefined,\n wrap: undefined\n };\n var messageType = arguments.length > 3 ? arguments[3] : undefined;\n\n if (messageType === LINETYPE.ACTIVE_END) {\n var cnt = activationCount(idFrom.actor);\n\n if (cnt < 1) {\n // Bail out as there is an activation signal from an inactive participant\n var error = new Error('Trying to inactivate an inactive participant (' + idFrom.actor + ')');\n error.hash = {\n text: '->>-',\n token: '->>-',\n line: '1',\n loc: {\n first_line: 1,\n last_line: 1,\n first_column: 1,\n last_column: 1\n },\n expected: [\"'ACTIVE_PARTICIPANT'\"]\n };\n throw error;\n }\n }\n\n messages.push({\n from: idFrom,\n to: idTo,\n message: message.text,\n wrap: message.wrap === undefined && autoWrap() || !!message.wrap,\n type: messageType\n });\n return true;\n};\nvar getMessages = function getMessages() {\n return messages;\n};\nvar getActors = function getActors() {\n return actors;\n};\nvar getActor = function getActor(id) {\n return actors[id];\n};\nvar getActorKeys = function getActorKeys() {\n return Object.keys(actors);\n};\nvar getTitle = function getTitle() {\n return title;\n};\nvar getTitleWrapped = function getTitleWrapped() {\n return titleWrapped;\n};\nvar enableSequenceNumbers = function enableSequenceNumbers() {\n sequenceNumbersEnabled = true;\n};\nvar showSequenceNumbers = function showSequenceNumbers() {\n return sequenceNumbersEnabled;\n};\nvar setWrap = function setWrap(wrapSetting) {\n wrapEnabled = wrapSetting;\n};\nvar autoWrap = function autoWrap() {\n return wrapEnabled;\n};\nvar clear = function clear() {\n actors = {};\n messages = [];\n};\nvar parseMessage = function parseMessage(str) {\n var _str = str.trim();\n\n var message = {\n text: _str.replace(/^[:]?(?:no)?wrap:/, '').trim(),\n wrap: _str.match(/^[:]?wrap:/) !== null ? true : _str.match(/^[:]?nowrap:/) !== null ? false : undefined\n };\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug('parseMessage:', message);\n return message;\n};\nvar LINETYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25\n};\nvar ARROWTYPE = {\n FILLED: 0,\n OPEN: 1\n};\nvar PLACEMENT = {\n LEFTOF: 0,\n RIGHTOF: 1,\n OVER: 2\n};\nvar addNote = function addNote(actor, placement, message) {\n var note = {\n actor: actor,\n placement: placement,\n message: message.text,\n wrap: message.wrap === undefined && autoWrap() || !!message.wrap\n }; // Coerce actor into a [to, from, ...] array\n\n var actors = [].concat(actor, actor);\n notes.push(note);\n messages.push({\n from: actors[0],\n to: actors[1],\n message: message.text,\n wrap: message.wrap === undefined && autoWrap() || !!message.wrap,\n type: LINETYPE.NOTE,\n placement: placement\n });\n};\nvar setTitle = function setTitle(titleWrap) {\n title = titleWrap.text;\n titleWrapped = titleWrap.wrap === undefined && autoWrap() || !!titleWrap.wrap;\n};\nvar apply = function apply(param) {\n if (param instanceof Array) {\n param.forEach(function (item) {\n apply(item);\n });\n } else {\n switch (param.type) {\n case 'addActor':\n addActor(param.actor, param.actor, param.description);\n break;\n\n case 'activeStart':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n\n case 'activeEnd':\n addSignal(param.actor, undefined, undefined, param.signalType);\n break;\n\n case 'addNote':\n addNote(param.actor, param.placement, param.text);\n break;\n\n case 'addMessage':\n addSignal(param.from, param.to, param.msg, param.signalType);\n break;\n\n case 'loopStart':\n addSignal(undefined, undefined, param.loopText, param.signalType);\n break;\n\n case 'loopEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n\n case 'rectStart':\n addSignal(undefined, undefined, param.color, param.signalType);\n break;\n\n case 'rectEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n\n case 'optStart':\n addSignal(undefined, undefined, param.optText, param.signalType);\n break;\n\n case 'optEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n\n case 'altStart':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n\n case 'else':\n addSignal(undefined, undefined, param.altText, param.signalType);\n break;\n\n case 'altEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n\n case 'setTitle':\n setTitle(param.text);\n break;\n\n case 'parStart':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n\n case 'and':\n addSignal(undefined, undefined, param.parText, param.signalType);\n break;\n\n case 'parEnd':\n addSignal(undefined, undefined, undefined, param.signalType);\n break;\n }\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n addActor: addActor,\n addMessage: addMessage,\n addSignal: addSignal,\n autoWrap: autoWrap,\n setWrap: setWrap,\n enableSequenceNumbers: enableSequenceNumbers,\n showSequenceNumbers: showSequenceNumbers,\n getMessages: getMessages,\n getActors: getActors,\n getActor: getActor,\n getActorKeys: getActorKeys,\n getTitle: getTitle,\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_1__[\"getConfig\"]().sequence;\n },\n getTitleWrapped: getTitleWrapped,\n clear: clear,\n parseMessage: parseMessage,\n LINETYPE: LINETYPE,\n ARROWTYPE: ARROWTYPE,\n PLACEMENT: PLACEMENT,\n addNote: addNote,\n setTitle: setTitle,\n apply: apply\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/sequence/sequenceRenderer.js\":\n/*!***************************************************!*\\\n !*** ./src/diagrams/sequence/sequenceRenderer.js ***!\n \\***************************************************/\n/*! exports provided: bounds, drawActors, setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounds\", function() { return bounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawActors\", function() { return drawActors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./svgDraw */ \"./src/diagrams/sequence/svgDraw.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/sequenceDiagram */ \"./src/diagrams/sequence/parser/sequenceDiagram.jison\");\n/* harmony import */ var _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _sequenceDb__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./sequenceDb */ \"./src/diagrams/sequence/sequenceDb.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n\n\n_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy = _sequenceDb__WEBPACK_IMPORTED_MODULE_5__[\"default\"];\nvar conf = {};\nvar bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n sequenceItems: [],\n activations: [],\n models: {\n getHeight: function getHeight() {\n return Math.max.apply(null, this.actors.length === 0 ? [0] : this.actors.map(function (actor) {\n return actor.height || 0;\n })) + (this.loops.length === 0 ? 0 : this.loops.map(function (it) {\n return it.height || 0;\n }).reduce(function (acc, h) {\n return acc + h;\n })) + (this.messages.length === 0 ? 0 : this.messages.map(function (it) {\n return it.height || 0;\n }).reduce(function (acc, h) {\n return acc + h;\n })) + (this.notes.length === 0 ? 0 : this.notes.map(function (it) {\n return it.height || 0;\n }).reduce(function (acc, h) {\n return acc + h;\n }));\n },\n clear: function clear() {\n this.actors = [];\n this.loops = [];\n this.messages = [];\n this.notes = [];\n },\n addActor: function addActor(actorModel) {\n this.actors.push(actorModel);\n },\n addLoop: function addLoop(loopModel) {\n this.loops.push(loopModel);\n },\n addMessage: function addMessage(msgModel) {\n this.messages.push(msgModel);\n },\n addNote: function addNote(noteModel) {\n this.notes.push(noteModel);\n },\n lastActor: function lastActor() {\n return this.actors[this.actors.length - 1];\n },\n lastLoop: function lastLoop() {\n return this.loops[this.loops.length - 1];\n },\n lastMessage: function lastMessage() {\n return this.messages[this.messages.length - 1];\n },\n lastNote: function lastNote() {\n return this.notes[this.notes.length - 1];\n },\n actors: [],\n loops: [],\n messages: [],\n notes: []\n },\n init: function init() {\n this.sequenceItems = [];\n this.activations = [];\n this.models.clear();\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n setConf(_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.getConfig());\n },\n updateVal: function updateVal(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function updateBounds(startx, starty, stopx, stopy) {\n var _self = this;\n\n var cnt = 0;\n\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++; // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n\n var n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n this.activations.forEach(updateFn('activation'));\n },\n insert: function insert(startx, starty, stopx, stopy) {\n var _startx = Math.min(startx, stopx);\n\n var _stopx = Math.max(startx, stopx);\n\n var _starty = Math.min(starty, stopy);\n\n var _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n newActivation: function newActivation(message, diagram, actors) {\n var actorRect = actors[message.from.actor];\n var stackedSize = actorActivations(message.from.actor).length || 0;\n var x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;\n this.activations.push({\n startx: x,\n starty: this.verticalPos + 2,\n stopx: x + conf.activationWidth,\n stopy: undefined,\n actor: message.from.actor,\n anchored: _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].anchorElement(diagram)\n });\n },\n endActivation: function endActivation(message) {\n // find most recent activation for given actor\n var lastActorActivationIdx = this.activations.map(function (activation) {\n return activation.actor;\n }).lastIndexOf(message.from.actor);\n return this.activations.splice(lastActorActivationIdx, 1)[0];\n },\n createLoop: function createLoop() {\n var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n message: undefined,\n wrap: false,\n width: undefined\n };\n var fill = arguments.length > 1 ? arguments[1] : undefined;\n return {\n startx: undefined,\n starty: this.verticalPos,\n stopx: undefined,\n stopy: undefined,\n title: title.message,\n wrap: title.wrap,\n width: title.width,\n height: 0,\n fill: fill\n };\n },\n newLoop: function newLoop() {\n var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n message: undefined,\n wrap: false,\n width: undefined\n };\n var fill = arguments.length > 1 ? arguments[1] : undefined;\n this.sequenceItems.push(this.createLoop(title, fill));\n },\n endLoop: function endLoop() {\n return this.sequenceItems.pop();\n },\n addSectionToLoop: function addSectionToLoop(message) {\n var loop = this.sequenceItems.pop();\n loop.sections = loop.sections || [];\n loop.sectionTitles = loop.sectionTitles || [];\n loop.sections.push({\n y: bounds.getVerticalPos(),\n height: 0\n });\n loop.sectionTitles.push(message);\n this.sequenceItems.push(loop);\n },\n bumpVerticalPos: function bumpVerticalPos(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function getVerticalPos() {\n return this.verticalPos;\n },\n getBounds: function getBounds() {\n return {\n bounds: this.data,\n models: this.models\n };\n }\n};\n/**\n * Draws an note in the diagram with the attached line\n * @param elem - The diagram to draw to.\n * @param noteModel:{x: number, y: number, message: string, width: number} - startx: x axis start position, verticalPos: y axis position, messsage: the message to be shown, width: Set this with a custom width to override the default configured width.\n */\n\nvar drawNote = function drawNote(elem, noteModel) {\n bounds.bumpVerticalPos(conf.boxMargin);\n noteModel.height = conf.boxMargin;\n noteModel.starty = bounds.getVerticalPos();\n var rect = _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getNoteRect();\n rect.x = noteModel.startx;\n rect.y = noteModel.starty;\n rect.width = noteModel.width || conf.width;\n rect.class = 'note';\n var g = elem.append('g');\n var rectElem = _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawRect(g, rect);\n var textObj = _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getTextObj();\n textObj.x = noteModel.startx;\n textObj.y = noteModel.starty;\n textObj.width = rect.width;\n textObj.dy = '1em';\n textObj.text = noteModel.message;\n textObj.class = 'noteText';\n textObj.fontFamily = conf.noteFontFamily;\n textObj.fontSize = conf.noteFontSize;\n textObj.fontWeight = conf.noteFontWeight;\n textObj.anchor = conf.noteAlign;\n textObj.textMargin = conf.noteMargin;\n textObj.valign = conf.noteAlign;\n var textElem = Object(_svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"drawText\"])(g, textObj);\n var textHeight = Math.round(textElem.map(function (te) {\n return (te._groups || te)[0][0].getBBox().height;\n }).reduce(function (acc, curr) {\n return acc + curr;\n }));\n rectElem.attr('height', textHeight + 2 * conf.noteMargin);\n noteModel.height += textHeight + 2 * conf.noteMargin;\n bounds.bumpVerticalPos(textHeight + 2 * conf.noteMargin);\n noteModel.stopy = noteModel.starty + textHeight + 2 * conf.noteMargin;\n noteModel.stopx = noteModel.startx + rect.width;\n bounds.insert(noteModel.startx, noteModel.starty, noteModel.stopx, noteModel.stopy);\n bounds.models.addNote(noteModel);\n};\n\nvar messageFont = function messageFont(cnf) {\n return {\n fontFamily: cnf.messageFontFamily,\n fontSize: cnf.messageFontSize,\n fontWeight: cnf.messageFontWeight\n };\n};\n\nvar noteFont = function noteFont(cnf) {\n return {\n fontFamily: cnf.noteFontFamily,\n fontSize: cnf.noteFontSize,\n fontWeight: cnf.noteFontWeight\n };\n};\n\nvar actorFont = function actorFont(cnf) {\n return {\n fontFamily: cnf.actorFontFamily,\n fontSize: cnf.actorFontSize,\n fontWeight: cnf.actorFontWeight\n };\n};\n/**\n * Draws a message\n * @param g - the parent of the message element\n * @param msgModel - the model containing fields describing a message\n */\n\n\nvar drawMessage = function drawMessage(g, msgModel) {\n bounds.bumpVerticalPos(10);\n var startx = msgModel.startx,\n stopx = msgModel.stopx,\n starty = msgModel.starty,\n message = msgModel.message,\n type = msgModel.type,\n sequenceIndex = msgModel.sequenceIndex;\n var lines = _common_common__WEBPACK_IMPORTED_MODULE_4__[\"default\"].splitBreaks(message).length;\n var textDims = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(message, messageFont(conf));\n var lineHeight = textDims.height / lines;\n msgModel.height += lineHeight;\n bounds.bumpVerticalPos(lineHeight);\n var textObj = _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getTextObj();\n textObj.x = startx;\n textObj.y = starty + 10;\n textObj.width = stopx - startx;\n textObj.class = 'messageText';\n textObj.dy = '1em';\n textObj.text = message;\n textObj.fontFamily = conf.messageFontFamily;\n textObj.fontSize = conf.messageFontSize;\n textObj.fontWeight = conf.messageFontWeight;\n textObj.anchor = conf.messageAlign;\n textObj.valign = conf.messageAlign;\n textObj.textMargin = conf.wrapPadding;\n textObj.tspan = false;\n Object(_svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"drawText\"])(g, textObj);\n var totalOffset = textDims.height - 10;\n var textWidth = textDims.width;\n var line, lineStarty;\n\n if (startx === stopx) {\n lineStarty = bounds.getVerticalPos() + totalOffset;\n\n if (conf.rightAngles) {\n line = g.append('path').attr('d', \"M \".concat(startx, \",\").concat(lineStarty, \" H \").concat(startx + Math.max(conf.width / 2, textWidth / 2), \" V \").concat(lineStarty + 25, \" H \").concat(startx));\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g.append('path').attr('d', 'M ' + startx + ',' + lineStarty + ' C ' + (startx + 60) + ',' + (lineStarty - 10) + ' ' + (startx + 60) + ',' + (lineStarty + 30) + ' ' + startx + ',' + (lineStarty + 20));\n }\n\n totalOffset += 30;\n var dx = Math.max(textWidth / 2, conf.width / 2);\n bounds.insert(startx - dx, bounds.getVerticalPos() - 10 + totalOffset, stopx + dx, bounds.getVerticalPos() + 30 + totalOffset);\n } else {\n totalOffset += conf.boxMargin;\n lineStarty = bounds.getVerticalPos() + totalOffset;\n line = g.append('line');\n line.attr('x1', startx);\n line.attr('y1', lineStarty);\n line.attr('x2', stopx);\n line.attr('y2', lineStarty);\n bounds.insert(startx, lineStarty - 10, stopx, lineStarty);\n } // Make an SVG Container\n // Draw the line\n\n\n if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_CROSS || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_POINT || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_OPEN) {\n line.style('stroke-dasharray', '3, 3');\n line.attr('class', 'messageLine1');\n } else {\n line.attr('class', 'messageLine0');\n }\n\n var url = '';\n\n if (conf.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n line.attr('stroke-width', 2);\n line.attr('stroke', 'none'); // handled by theme/css anyway\n\n line.style('fill', 'none'); // remove any fill colour\n\n if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED) {\n line.attr('marker-end', 'url(' + url + '#arrowhead)');\n }\n\n if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_POINT || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_POINT) {\n line.attr('marker-end', 'url(' + url + '#filled-head)');\n }\n\n if (type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_CROSS || type === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_CROSS) {\n line.attr('marker-end', 'url(' + url + '#crosshead)');\n } // add node number\n\n\n if (_sequenceDb__WEBPACK_IMPORTED_MODULE_5__[\"default\"].showSequenceNumbers() || conf.showSequenceNumbers) {\n line.attr('marker-start', 'url(' + url + '#sequencenumber)');\n g.append('text').attr('x', startx).attr('y', lineStarty + 4).attr('font-family', 'sans-serif').attr('font-size', '12px').attr('text-anchor', 'middle').attr('textLength', '16px').attr('class', 'sequenceNumber').text(sequenceIndex);\n }\n\n bounds.bumpVerticalPos(totalOffset);\n msgModel.height += totalOffset;\n msgModel.stopy = msgModel.starty + msgModel.height;\n bounds.insert(msgModel.fromBounds, msgModel.starty, msgModel.toBounds, msgModel.stopy);\n};\n\nvar drawActors = function drawActors(diagram, actors, actorKeys, verticalPos) {\n // Draw the actors\n var prevWidth = 0;\n var prevMargin = 0;\n\n for (var i = 0; i < actorKeys.length; i++) {\n var actor = actors[actorKeys[i]]; // Add some rendering data to the object\n\n actor.width = actor.width || conf.width;\n actor.height = Math.max(actor.height || conf.height, conf.height);\n actor.margin = actor.margin || conf.actorMargin;\n actor.x = prevWidth + prevMargin;\n actor.y = verticalPos; // Draw the box with the attached line\n\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawActor(diagram, actor, conf);\n bounds.insert(actor.x, verticalPos, actor.x + actor.width, actor.height);\n prevWidth += actor.width;\n prevMargin += actor.margin;\n bounds.models.addActor(actor);\n } // Add a margin between the actor boxes and the first arrow\n\n\n bounds.bumpVerticalPos(conf.height);\n};\nvar setConf = function setConf(cnf) {\n Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"assignWithDepth\"])(conf, cnf);\n\n if (cnf.fontFamily) {\n conf.actorFontFamily = conf.noteFontFamily = conf.messageFontFamily = cnf.fontFamily;\n }\n\n if (cnf.fontSize) {\n conf.actorFontSize = conf.noteFontSize = conf.messageFontSize = cnf.fontSize;\n }\n\n if (cnf.fontWeight) {\n conf.actorFontWeight = conf.noteFontWeight = conf.messageFontWeight = cnf.fontWeight;\n }\n};\n\nvar actorActivations = function actorActivations(actor) {\n return bounds.activations.filter(function (activation) {\n return activation.actor === actor;\n });\n};\n\nvar activationBounds = function activationBounds(actor, actors) {\n // handle multiple stacked activations for same actor\n var actorObj = actors[actor];\n var activations = actorActivations(actor);\n var left = activations.reduce(function (acc, activation) {\n return Math.min(acc, activation.startx);\n }, actorObj.x + actorObj.width / 2);\n var right = activations.reduce(function (acc, activation) {\n return Math.max(acc, activation.stopx);\n }, actorObj.x + actorObj.width / 2);\n return [left, right];\n};\n\nfunction adjustLoopHeightForWrap(loopWidths, msg, preMargin, postMargin, addLoopFn) {\n bounds.bumpVerticalPos(preMargin);\n var heightAdjust = postMargin;\n\n if (msg.id && msg.message && loopWidths[msg.id]) {\n var loopWidth = loopWidths[msg.id].width;\n var textConf = messageFont(conf);\n msg.message = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(\"[\".concat(msg.message, \"]\"), loopWidth - 2 * conf.wrapPadding, textConf);\n msg.width = loopWidth;\n msg.wrap = true; // const lines = common.splitBreaks(msg.message).length;\n\n var textDims = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(msg.message, textConf);\n var totalOffset = Math.max(textDims.height, conf.labelBoxHeight);\n heightAdjust = postMargin + totalOffset;\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug(\"\".concat(totalOffset, \" - \").concat(msg.message));\n }\n\n addLoopFn(msg);\n bounds.bumpVerticalPos(heightAdjust);\n}\n/**\n * Draws a sequenceDiagram in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\n\nvar draw = function draw(text, id) {\n conf = _config__WEBPACK_IMPORTED_MODULE_6__[\"getConfig\"]().sequence;\n _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.clear();\n _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.setWrap(conf.wrap);\n _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].parse(text + '\\n');\n bounds.init();\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug(\"C:\".concat(JSON.stringify(conf, null, 2)));\n var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\")); // Fetch data from the parsing\n\n var actors = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.getActors();\n var actorKeys = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.getActorKeys();\n var messages = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.getMessages();\n var title = _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.getTitle();\n var maxMessageWidthPerActor = getMaxMessageWidthPerActor(actors, messages);\n conf.height = calculateActorMargins(actors, maxMessageWidthPerActor);\n drawActors(diagram, actors, actorKeys, 0);\n var loopWidths = calculateLoopBounds(messages, actors, maxMessageWidthPerActor); // The arrow head definition is attached to the svg once\n\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].insertArrowHead(diagram);\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].insertArrowCrossHead(diagram);\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].insertArrowFilledHead(diagram);\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].insertSequenceNumber(diagram);\n\n function activeEnd(msg, verticalPos) {\n var activationData = bounds.endActivation(msg);\n\n if (activationData.starty + 18 > verticalPos) {\n activationData.starty = verticalPos - 6;\n verticalPos += 12;\n }\n\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawActivation(diagram, activationData, verticalPos, conf, actorActivations(msg.from.actor).length);\n bounds.insert(activationData.startx, verticalPos - 10, activationData.stopx, verticalPos);\n } // Draw the messages/signals\n\n\n var sequenceIndex = 1;\n messages.forEach(function (msg) {\n var loopModel, noteModel, msgModel;\n\n switch (msg.type) {\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.NOTE:\n noteModel = msg.noteModel;\n drawNote(diagram, noteModel);\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ACTIVE_START:\n bounds.newActivation(msg, diagram, actors);\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ACTIVE_END:\n activeEnd(msg, bounds.getVerticalPos());\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.LOOP_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {\n return bounds.newLoop(message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.LOOP_END:\n loopModel = bounds.endLoop();\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawLoop(diagram, loopModel, 'loop', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.RECT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin, function (message) {\n return bounds.newLoop(undefined, message.message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.RECT_END:\n loopModel = bounds.endLoop();\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawBackgroundRect(diagram, loopModel);\n bounds.models.addLoop(loopModel);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.OPT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {\n return bounds.newLoop(message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.OPT_END:\n loopModel = bounds.endLoop();\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawLoop(diagram, loopModel, 'opt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ALT_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {\n return bounds.newLoop(message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ALT_ELSE:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin + conf.boxTextMargin, conf.boxMargin, function (message) {\n return bounds.addSectionToLoop(message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ALT_END:\n loopModel = bounds.endLoop();\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawLoop(diagram, loopModel, 'alt', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.PAR_START:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin, conf.boxMargin + conf.boxTextMargin, function (message) {\n return bounds.newLoop(message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.PAR_AND:\n adjustLoopHeightForWrap(loopWidths, msg, conf.boxMargin + conf.boxTextMargin, conf.boxMargin, function (message) {\n return bounds.addSectionToLoop(message);\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.PAR_END:\n loopModel = bounds.endLoop();\n _svgDraw__WEBPACK_IMPORTED_MODULE_1__[\"default\"].drawLoop(diagram, loopModel, 'par', conf);\n bounds.bumpVerticalPos(loopModel.stopy - bounds.getVerticalPos());\n bounds.models.addLoop(loopModel);\n break;\n\n default:\n try {\n // lastMsg = msg\n msgModel = msg.msgModel;\n msgModel.starty = bounds.getVerticalPos();\n msgModel.sequenceIndex = sequenceIndex;\n drawMessage(diagram, msgModel);\n bounds.models.addMessage(msgModel);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].error('error while drawing message', e);\n }\n\n } // Increment sequence counter if msg.type is a line (and not another event like activation or note, etc)\n\n\n if ([_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_CROSS, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_CROSS, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_POINT, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_POINT].includes(msg.type)) {\n sequenceIndex++;\n }\n });\n\n if (conf.mirrorActors) {\n // Draw actors below diagram\n bounds.bumpVerticalPos(conf.boxMargin * 2);\n drawActors(diagram, actors, actorKeys, bounds.getVerticalPos());\n }\n\n var _bounds$getBounds = bounds.getBounds(),\n box = _bounds$getBounds.bounds; // Adjust line height of actor lines now that the height of the diagram is known\n\n\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug('For line height fix Querying: #' + id + ' .actor-line');\n var actorLines = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"selectAll\"])('#' + id + ' .actor-line');\n actorLines.attr('y2', box.stopy);\n var height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n\n if (conf.mirrorActors) {\n height = height - conf.boxMargin + conf.bottomMarginAdj;\n }\n\n var width = box.stopx - box.startx + 2 * conf.diagramMarginX;\n\n if (title) {\n diagram.append('text').text(title).attr('x', (box.stopx - box.startx) / 2 - 2 * conf.diagramMarginX).attr('y', -25);\n }\n\n Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"configureSvgSize\"])(diagram, height, width, conf.useMaxWidth);\n var extraVertForTitle = title ? 40 : 0;\n diagram.attr('viewBox', box.startx - conf.diagramMarginX + ' -' + (conf.diagramMarginY + extraVertForTitle) + ' ' + width + ' ' + (height + extraVertForTitle));\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug(\"models:\", bounds.models);\n};\n/**\n * Retrieves the max message width of each actor, supports signals (messages, loops)\n * and notes.\n *\n * It will enumerate each given message, and will determine its text width, in relation\n * to the actor it originates from, and destined to.\n *\n * @param actors - The actors map\n * @param messages - A list of message objects to iterate\n */\n\nvar getMaxMessageWidthPerActor = function getMaxMessageWidthPerActor(actors, messages) {\n var maxMessageWidthPerActor = {};\n messages.forEach(function (msg) {\n if (actors[msg.to] && actors[msg.from]) {\n var actor = actors[msg.to]; // If this is the first actor, and the message is left of it, no need to calculate the margin\n\n if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.LEFTOF && !actor.prevActor) {\n return;\n } // If this is the last actor, and the message is right of it, no need to calculate the margin\n\n\n if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.RIGHTOF && !actor.nextActor) {\n return;\n }\n\n var isNote = msg.placement !== undefined;\n var isMessage = !isNote;\n var textFont = isNote ? noteFont(conf) : messageFont(conf);\n var wrappedMessage = msg.wrap ? _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(msg.message, conf.width - 2 * conf.wrapPadding, textFont) : msg.message;\n var messageDimensions = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(wrappedMessage, textFont);\n var messageWidth = messageDimensions.width + 2 * conf.wrapPadding;\n /*\n * The following scenarios should be supported:\n *\n * - There's a message (non-note) between fromActor and toActor\n * - If fromActor is on the right and toActor is on the left, we should\n * define the toActor's margin\n * - If fromActor is on the left and toActor is on the right, we should\n * define the fromActor's margin\n * - There's a note, in which case fromActor == toActor\n * - If the note is to the left of the actor, we should define the previous actor\n * margin\n * - If the note is on the actor, we should define both the previous and next actor\n * margins, each being the half of the note size\n * - If the note is on the right of the actor, we should define the current actor\n * margin\n */\n\n if (isMessage && msg.from === actor.nextActor) {\n maxMessageWidthPerActor[msg.to] = Math.max(maxMessageWidthPerActor[msg.to] || 0, messageWidth);\n } else if (isMessage && msg.from === actor.prevActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth);\n } else if (isMessage && msg.from === msg.to) {\n maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth / 2);\n maxMessageWidthPerActor[msg.to] = Math.max(maxMessageWidthPerActor[msg.to] || 0, messageWidth / 2);\n } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.RIGHTOF) {\n maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth);\n } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.LEFTOF) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(maxMessageWidthPerActor[actor.prevActor] || 0, messageWidth);\n } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.OVER) {\n if (actor.prevActor) {\n maxMessageWidthPerActor[actor.prevActor] = Math.max(maxMessageWidthPerActor[actor.prevActor] || 0, messageWidth / 2);\n }\n\n if (actor.nextActor) {\n maxMessageWidthPerActor[msg.from] = Math.max(maxMessageWidthPerActor[msg.from] || 0, messageWidth / 2);\n }\n }\n }\n });\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug('maxMessageWidthPerActor:', maxMessageWidthPerActor);\n return maxMessageWidthPerActor;\n};\n/**\n * This will calculate the optimal margin for each given actor, for a given\n * actor->messageWidth map.\n *\n * An actor's margin is determined by the width of the actor, the width of the\n * largest message that originates from it, and the configured conf.actorMargin.\n *\n * @param actors - The actors map to calculate margins for\n * @param actorToMessageWidth - A map of actor key -> max message width it holds\n */\n\n\nvar calculateActorMargins = function calculateActorMargins(actors, actorToMessageWidth) {\n var maxHeight = 0;\n Object.keys(actors).forEach(function (prop) {\n var actor = actors[prop];\n\n if (actor.wrap) {\n actor.description = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(actor.description, conf.width - 2 * conf.wrapPadding, actorFont(conf));\n }\n\n var actDims = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(actor.description, actorFont(conf));\n actor.width = actor.wrap ? conf.width : Math.max(conf.width, actDims.width + 2 * conf.wrapPadding);\n actor.height = actor.wrap ? Math.max(actDims.height, conf.height) : conf.height;\n maxHeight = Math.max(maxHeight, actor.height);\n });\n\n for (var actorKey in actorToMessageWidth) {\n var actor = actors[actorKey];\n\n if (!actor) {\n continue;\n }\n\n var nextActor = actors[actor.nextActor]; // No need to space out an actor that doesn't have a next link\n\n if (!nextActor) {\n continue;\n }\n\n var messageWidth = actorToMessageWidth[actorKey];\n var actorWidth = messageWidth + conf.actorMargin - actor.width / 2 - nextActor.width / 2;\n actor.margin = Math.max(actorWidth, conf.actorMargin);\n }\n\n return Math.max(maxHeight, conf.height);\n};\n\nvar buildNoteModel = function buildNoteModel(msg, actors) {\n var startx = actors[msg.from].x;\n var stopx = actors[msg.to].x;\n var shouldWrap = msg.wrap && msg.message;\n var textDimensions = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(shouldWrap ? _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(msg.message, conf.width, noteFont(conf)) : msg.message, noteFont(conf));\n var noteModel = {\n width: shouldWrap ? conf.width : Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin),\n height: 0,\n startx: actors[msg.from].x,\n stopx: 0,\n starty: 0,\n stopy: 0,\n message: msg.message\n };\n\n if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.RIGHTOF) {\n noteModel.width = shouldWrap ? Math.max(conf.width, textDimensions.width) : Math.max(actors[msg.from].width / 2 + actors[msg.to].width / 2, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width + conf.actorMargin) / 2;\n } else if (msg.placement === _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.PLACEMENT.LEFTOF) {\n noteModel.width = shouldWrap ? Math.max(conf.width, textDimensions.width + 2 * conf.noteMargin) : Math.max(actors[msg.from].width / 2 + actors[msg.to].width / 2, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx - noteModel.width + (actors[msg.from].width - conf.actorMargin) / 2;\n } else if (msg.to === msg.from) {\n textDimensions = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(shouldWrap ? _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(msg.message, Math.max(conf.width, actors[msg.from].width), noteFont(conf)) : msg.message, noteFont(conf));\n noteModel.width = shouldWrap ? Math.max(conf.width, actors[msg.from].width) : Math.max(actors[msg.from].width, conf.width, textDimensions.width + 2 * conf.noteMargin);\n noteModel.startx = startx + (actors[msg.from].width - noteModel.width) / 2;\n } else {\n noteModel.width = Math.abs(startx + actors[msg.from].width / 2 - (stopx + actors[msg.to].width / 2)) + conf.actorMargin;\n noteModel.startx = startx < stopx ? startx + actors[msg.from].width / 2 - conf.actorMargin / 2 : stopx + actors[msg.to].width / 2 - conf.actorMargin / 2;\n }\n\n if (shouldWrap) {\n noteModel.message = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(msg.message, noteModel.width - 2 * conf.wrapPadding, noteFont(conf));\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug(\"NM:[\".concat(noteModel.startx, \",\").concat(noteModel.stopx, \",\").concat(noteModel.starty, \",\").concat(noteModel.stopy, \":\").concat(noteModel.width, \",\").concat(noteModel.height, \"=\").concat(msg.message, \"]\"));\n return noteModel;\n};\n\nvar buildMessageModel = function buildMessageModel(msg, actors) {\n var process = false;\n\n if ([_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_OPEN, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_CROSS, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_CROSS, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.SOLID_POINT, _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.DOTTED_POINT].includes(msg.type)) {\n process = true;\n }\n\n if (!process) {\n return {};\n }\n\n var fromBounds = activationBounds(msg.from, actors);\n var toBounds = activationBounds(msg.to, actors);\n var fromIdx = fromBounds[0] <= toBounds[0] ? 1 : 0;\n var toIdx = fromBounds[0] < toBounds[0] ? 0 : 1;\n var allBounds = fromBounds.concat(toBounds);\n var boundedWidth = Math.abs(toBounds[toIdx] - fromBounds[fromIdx]);\n\n if (msg.wrap && msg.message) {\n msg.message = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].wrapLabel(msg.message, Math.max(boundedWidth + 2 * conf.wrapPadding, conf.width), messageFont(conf));\n }\n\n var msgDims = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].calculateTextDimensions(msg.message, messageFont(conf));\n return {\n width: Math.max(msg.wrap ? 0 : msgDims.width + 2 * conf.wrapPadding, boundedWidth + 2 * conf.wrapPadding, conf.width),\n height: 0,\n startx: fromBounds[fromIdx],\n stopx: toBounds[toIdx],\n starty: 0,\n stopy: 0,\n message: msg.message,\n type: msg.type,\n wrap: msg.wrap,\n fromBounds: Math.min.apply(null, allBounds),\n toBounds: Math.max.apply(null, allBounds)\n };\n};\n\nvar calculateLoopBounds = function calculateLoopBounds(messages, actors) {\n var loops = {};\n var stack = [];\n var current, noteModel, msgModel;\n messages.forEach(function (msg) {\n msg.id = _utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"].random({\n length: 10\n });\n\n switch (msg.type) {\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.LOOP_START:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ALT_START:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.OPT_START:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.PAR_START:\n stack.push({\n id: msg.id,\n msg: msg.message,\n from: Number.MAX_SAFE_INTEGER,\n to: Number.MIN_SAFE_INTEGER,\n width: 0\n });\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ALT_ELSE:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.PAR_AND:\n if (msg.message) {\n current = stack.pop();\n loops[current.id] = current;\n loops[msg.id] = current;\n stack.push(current);\n }\n\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.LOOP_END:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ALT_END:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.OPT_END:\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.PAR_END:\n current = stack.pop();\n loops[current.id] = current;\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ACTIVE_START:\n {\n var actorRect = actors[msg.from ? msg.from.actor : msg.to.actor];\n var stackedSize = actorActivations(msg.from ? msg.from.actor : msg.to.actor).length;\n var x = actorRect.x + actorRect.width / 2 + (stackedSize - 1) * conf.activationWidth / 2;\n var toAdd = {\n startx: x,\n stopx: x + conf.activationWidth,\n actor: msg.from.actor,\n enabled: true\n };\n bounds.activations.push(toAdd);\n }\n break;\n\n case _parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_3__[\"parser\"].yy.LINETYPE.ACTIVE_END:\n {\n var lastActorActivationIdx = bounds.activations.map(function (a) {\n return a.actor;\n }).lastIndexOf(msg.from.actor);\n delete bounds.activations.splice(lastActorActivationIdx, 1)[0];\n }\n break;\n }\n\n var isNote = msg.placement !== undefined;\n\n if (isNote) {\n noteModel = buildNoteModel(msg, actors);\n msg.noteModel = noteModel;\n stack.forEach(function (stk) {\n current = stk;\n current.from = Math.min(current.from, noteModel.startx);\n current.to = Math.max(current.to, noteModel.startx + noteModel.width);\n current.width = Math.max(current.width, Math.abs(current.from - current.to)) - conf.labelBoxWidth;\n });\n } else {\n msgModel = buildMessageModel(msg, actors);\n msg.msgModel = msgModel;\n\n if (msgModel.startx && msgModel.stopx && stack.length > 0) {\n stack.forEach(function (stk) {\n current = stk;\n\n if (msgModel.startx === msgModel.stopx) {\n var from = actors[msg.from];\n var to = actors[msg.to];\n current.from = Math.min(from.x - msgModel.width / 2, from.x - from.width / 2, current.from);\n current.to = Math.max(to.x + msgModel.width / 2, to.x + from.width / 2, current.to);\n current.width = Math.max(current.width, Math.abs(current.to - current.from)) - conf.labelBoxWidth;\n } else {\n current.from = Math.min(msgModel.startx, current.from);\n current.to = Math.max(msgModel.stopx, current.to);\n current.width = Math.max(current.width, msgModel.width) - conf.labelBoxWidth;\n }\n });\n }\n }\n });\n bounds.activations = [];\n _logger__WEBPACK_IMPORTED_MODULE_2__[\"log\"].debug('Loop type widths:', loops);\n return loops;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n bounds: bounds,\n drawActors: drawActors,\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/sequence/styles.js\":\n/*!*****************************************!*\\\n !*** ./src/diagrams/sequence/styles.js ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \".actor {\\n stroke: \".concat(options.actorBorder, \";\\n fill: \").concat(options.actorBkg, \";\\n }\\n\\n text.actor > tspan {\\n fill: \").concat(options.actorTextColor, \";\\n stroke: none;\\n }\\n\\n .actor-line {\\n stroke: \").concat(options.actorLineColor, \";\\n }\\n\\n .messageLine0 {\\n stroke-width: 1.5;\\n stroke-dasharray: none;\\n stroke: \").concat(options.signalColor, \";\\n }\\n\\n .messageLine1 {\\n stroke-width: 1.5;\\n stroke-dasharray: 2, 2;\\n stroke: \").concat(options.signalColor, \";\\n }\\n\\n #arrowhead path {\\n fill: \").concat(options.signalColor, \";\\n stroke: \").concat(options.signalColor, \";\\n }\\n\\n .sequenceNumber {\\n fill: \").concat(options.sequenceNumberColor, \";\\n }\\n\\n #sequencenumber {\\n fill: \").concat(options.signalColor, \";\\n }\\n\\n #crosshead path {\\n fill: \").concat(options.signalColor, \";\\n stroke: \").concat(options.signalColor, \";\\n }\\n\\n .messageText {\\n fill: \").concat(options.signalTextColor, \";\\n stroke: \").concat(options.signalTextColor, \";\\n }\\n\\n .labelBox {\\n stroke: \").concat(options.labelBoxBorderColor, \";\\n fill: \").concat(options.labelBoxBkgColor, \";\\n }\\n\\n .labelText, .labelText > tspan {\\n fill: \").concat(options.labelTextColor, \";\\n stroke: none;\\n }\\n\\n .loopText, .loopText > tspan {\\n fill: \").concat(options.loopTextColor, \";\\n stroke: none;\\n }\\n\\n .loopLine {\\n stroke-width: 2px;\\n stroke-dasharray: 2, 2;\\n stroke: \").concat(options.labelBoxBorderColor, \";\\n fill: \").concat(options.labelBoxBorderColor, \";\\n }\\n\\n .note {\\n //stroke: #decc93;\\n stroke: \").concat(options.noteBorderColor, \";\\n fill: \").concat(options.noteBkgColor, \";\\n }\\n\\n .noteText, .noteText > tspan {\\n fill: \").concat(options.noteTextColor, \";\\n stroke: none;\\n }\\n\\n .activation0 {\\n fill: \").concat(options.activationBkgColor, \";\\n stroke: \").concat(options.activationBorderColor, \";\\n }\\n\\n .activation1 {\\n fill: \").concat(options.activationBkgColor, \";\\n stroke: \").concat(options.activationBorderColor, \";\\n }\\n\\n .activation2 {\\n fill: \").concat(options.activationBkgColor, \";\\n stroke: \").concat(options.activationBorderColor, \";\\n }\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/sequence/svgDraw.js\":\n/*!******************************************!*\\\n !*** ./src/diagrams/sequence/svgDraw.js ***!\n \\******************************************/\n/*! exports provided: drawRect, drawText, drawLabel, drawActor, anchorElement, drawActivation, drawLoop, drawBackgroundRect, insertArrowHead, insertArrowFilledHead, insertSequenceNumber, insertArrowCrossHead, getTextObj, getNoteRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawRect\", function() { return drawRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawText\", function() { return drawText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawLabel\", function() { return drawLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawActor\", function() { return drawActor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"anchorElement\", function() { return anchorElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawActivation\", function() { return drawActivation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawLoop\", function() { return drawLoop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawBackgroundRect\", function() { return drawBackgroundRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertArrowHead\", function() { return insertArrowHead; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertArrowFilledHead\", function() { return insertArrowFilledHead; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertSequenceNumber\", function() { return insertSequenceNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertArrowCrossHead\", function() { return insertArrowCrossHead; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextObj\", function() { return getTextObj; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNoteRect\", function() { return getNoteRect; });\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n\nvar drawRect = function drawRect(elem, rectData) {\n var rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\nvar drawText = function drawText(elem, textData) {\n var prevTextHeight = 0,\n textHeight = 0;\n var lines = textData.text.split(_common_common__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lineBreakRegex);\n var textElems = [];\n var dy = 0;\n\n var yfunc = function yfunc() {\n return textData.y;\n };\n\n if (typeof textData.valign !== 'undefined' && typeof textData.textMargin !== 'undefined' && textData.textMargin > 0) {\n switch (textData.valign) {\n case 'top':\n case 'start':\n yfunc = function yfunc() {\n return Math.round(textData.y + textData.textMargin);\n };\n\n break;\n\n case 'middle':\n case 'center':\n yfunc = function yfunc() {\n return Math.round(textData.y + (prevTextHeight + textHeight + textData.textMargin) / 2);\n };\n\n break;\n\n case 'bottom':\n case 'end':\n yfunc = function yfunc() {\n return Math.round(textData.y + (prevTextHeight + textHeight + 2 * textData.textMargin) - textData.textMargin);\n };\n\n break;\n }\n }\n\n if (typeof textData.anchor !== 'undefined' && typeof textData.textMargin !== 'undefined' && typeof textData.width !== 'undefined') {\n switch (textData.anchor) {\n case 'left':\n case 'start':\n textData.x = Math.round(textData.x + textData.textMargin);\n textData.anchor = 'start';\n textData.dominantBaseline = 'text-after-edge';\n textData.alignmentBaseline = 'middle';\n break;\n\n case 'middle':\n case 'center':\n textData.x = Math.round(textData.x + textData.width / 2);\n textData.anchor = 'middle';\n textData.dominantBaseline = 'middle';\n textData.alignmentBaseline = 'middle';\n break;\n\n case 'right':\n case 'end':\n textData.x = Math.round(textData.x + textData.width - textData.textMargin);\n textData.anchor = 'end';\n textData.dominantBaseline = 'text-before-edge';\n textData.alignmentBaseline = 'middle';\n break;\n }\n }\n\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n\n if (typeof textData.textMargin !== 'undefined' && textData.textMargin === 0 && typeof textData.fontSize !== 'undefined') {\n dy = i * textData.fontSize;\n }\n\n var textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', yfunc());\n\n if (typeof textData.anchor !== 'undefined') {\n textElem.attr('text-anchor', textData.anchor).attr('dominant-baseline', textData.dominantBaseline).attr('alignment-baseline', textData.alignmentBaseline);\n }\n\n if (typeof textData.fontFamily !== 'undefined') {\n textElem.style('font-family', textData.fontFamily);\n }\n\n if (typeof textData.fontSize !== 'undefined') {\n textElem.style('font-size', textData.fontSize);\n }\n\n if (typeof textData.fontWeight !== 'undefined') {\n textElem.style('font-weight', textData.fontWeight);\n }\n\n if (typeof textData.fill !== 'undefined') {\n textElem.attr('fill', textData.fill);\n }\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n if (typeof textData.dy !== 'undefined') {\n textElem.attr('dy', textData.dy);\n } else if (dy !== 0) {\n textElem.attr('dy', dy);\n }\n\n if (textData.tspan) {\n var span = textElem.append('tspan');\n span.attr('x', textData.x);\n\n if (typeof textData.fill !== 'undefined') {\n span.attr('fill', textData.fill);\n }\n\n span.text(line);\n } else {\n textElem.text(line);\n }\n\n if (typeof textData.valign !== 'undefined' && typeof textData.textMargin !== 'undefined' && textData.textMargin > 0) {\n textHeight += (textElem._groups || textElem)[0][0].getBBox().height;\n prevTextHeight = textHeight;\n }\n\n textElems.push(textElem);\n }\n\n return textElems;\n};\nvar drawLabel = function drawLabel(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height);\n }\n\n var polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, txtObject.width, txtObject.height, 7));\n polygon.attr('class', 'labelBox');\n txtObject.y = txtObject.y + txtObject.height / 2;\n drawText(elem, txtObject);\n return polygon;\n};\nvar actorCnt = -1;\n/**\n * Draws an actor in the diagram with the attached line\n * @param elem - The diagram we'll draw to.\n * @param actor - The actor to draw.\n * @param conf - drawText implementation discriminator object\n */\n\nvar drawActor = function drawActor(elem, actor, conf) {\n var center = actor.x + actor.width / 2;\n var g = elem.append('g');\n\n if (actor.y === 0) {\n actorCnt++;\n g.append('line').attr('id', 'actor' + actorCnt).attr('x1', center).attr('y1', 5).attr('x2', center).attr('y2', 2000).attr('class', 'actor-line').attr('stroke-width', '0.5px').attr('stroke', '#999');\n }\n\n var rect = getNoteRect();\n rect.x = actor.x;\n rect.y = actor.y;\n rect.fill = '#eaeaea';\n rect.width = actor.width;\n rect.height = actor.height;\n rect.class = 'actor';\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(actor.description, g, rect.x, rect.y, rect.width, rect.height, {\n class: 'actor'\n }, conf);\n};\nvar anchorElement = function anchorElement(elem) {\n return elem.append('g');\n};\n/**\n * Draws an activation in the diagram\n * @param elem - element to append activation rect.\n * @param bounds - activation box bounds.\n * @param verticalPos - precise y cooridnate of bottom activation box edge.\n * @param conf - sequence diagram config object.\n * @param actorActivations - number of activations on the actor.\n */\n\nvar drawActivation = function drawActivation(elem, bounds, verticalPos, conf, actorActivations) {\n var rect = getNoteRect();\n var g = bounds.anchored;\n rect.x = bounds.startx;\n rect.y = bounds.starty;\n rect.class = 'activation' + actorActivations % 3; // Will evaluate to 0, 1 or 2\n\n rect.width = bounds.stopx - bounds.startx;\n rect.height = verticalPos - bounds.starty;\n drawRect(g, rect);\n};\n/**\n * Draws a loop in the diagram\n * @param elem - elemenet to append the loop to.\n * @param loopModel - loopModel of the given loop.\n * @param labelText - Text within the loop.\n * @param conf - diagrom configuration\n */\n\nvar drawLoop = function drawLoop(elem, loopModel, labelText, conf) {\n var boxMargin = conf.boxMargin,\n boxTextMargin = conf.boxTextMargin,\n labelBoxHeight = conf.labelBoxHeight,\n labelBoxWidth = conf.labelBoxWidth,\n fontFamily = conf.messageFontFamily,\n fontSize = conf.messageFontSize,\n fontWeight = conf.messageFontWeight;\n var g = elem.append('g');\n\n var drawLoopLine = function drawLoopLine(startx, starty, stopx, stopy) {\n return g.append('line').attr('x1', startx).attr('y1', starty).attr('x2', stopx).attr('y2', stopy).attr('class', 'loopLine');\n };\n\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.stopx, loopModel.starty);\n drawLoopLine(loopModel.stopx, loopModel.starty, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.stopy, loopModel.stopx, loopModel.stopy);\n drawLoopLine(loopModel.startx, loopModel.starty, loopModel.startx, loopModel.stopy);\n\n if (typeof loopModel.sections !== 'undefined') {\n loopModel.sections.forEach(function (item) {\n drawLoopLine(loopModel.startx, item.y, loopModel.stopx, item.y).style('stroke-dasharray', '3, 3');\n });\n }\n\n var txt = getTextObj();\n txt.text = labelText;\n txt.x = loopModel.startx;\n txt.y = loopModel.starty;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.width = labelBoxWidth || 50;\n txt.height = labelBoxHeight || 20;\n txt.textMargin = boxTextMargin;\n txt.class = 'labelText';\n drawLabel(g, txt);\n txt = getTextObj();\n txt.text = loopModel.title;\n txt.x = loopModel.startx + labelBoxWidth / 2 + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.starty + boxMargin + boxTextMargin;\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.textMargin = boxTextMargin;\n txt.class = 'loopText';\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = true;\n var textElem = drawText(g, txt);\n\n if (typeof loopModel.sectionTitles !== 'undefined') {\n loopModel.sectionTitles.forEach(function (item, idx) {\n if (item.message) {\n txt.text = item.message;\n txt.x = loopModel.startx + (loopModel.stopx - loopModel.startx) / 2;\n txt.y = loopModel.sections[idx].y + boxMargin + boxTextMargin;\n txt.class = 'loopText';\n txt.anchor = 'middle';\n txt.valign = 'middle';\n txt.tspan = false;\n txt.fontFamily = fontFamily;\n txt.fontSize = fontSize;\n txt.fontWeight = fontWeight;\n txt.wrap = loopModel.wrap;\n textElem = drawText(g, txt);\n var sectionHeight = Math.round(textElem.map(function (te) {\n return (te._groups || te)[0][0].getBBox().height;\n }).reduce(function (acc, curr) {\n return acc + curr;\n }));\n loopModel.sections[idx].height += sectionHeight - (boxMargin + boxTextMargin);\n }\n });\n }\n\n loopModel.height = Math.round(loopModel.stopy - loopModel.starty);\n return g;\n};\n/**\n * Draws a background rectangle\n * @param elem diagram (reference for bounds)\n * @param bounds shape of the rectangle\n */\n\nvar drawBackgroundRect = function drawBackgroundRect(elem, bounds) {\n var rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nvar insertArrowHead = function insertArrowHead(elem) {\n elem.append('defs').append('marker').attr('id', 'arrowhead').attr('refX', 9).attr('refY', 5).attr('markerUnits', 'userSpaceOnUse').attr('markerWidth', 12).attr('markerHeight', 12).attr('orient', 'auto').append('path').attr('d', 'M 0 0 L 10 5 L 0 10 z'); // this is actual shape for arrowhead\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nvar insertArrowFilledHead = function insertArrowFilledHead(elem) {\n elem.append('defs').append('marker').attr('id', 'filled-head').attr('refX', 18).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 18,7 L9,13 L14,7 L9,1 Z');\n};\n/**\n * Setup node number. The result is appended to the svg.\n */\n\nvar insertSequenceNumber = function insertSequenceNumber(elem) {\n elem.append('defs').append('marker').attr('id', 'sequencenumber').attr('refX', 15).attr('refY', 15).attr('markerWidth', 60).attr('markerHeight', 40).attr('orient', 'auto').append('circle').attr('cx', 15).attr('cy', 15).attr('r', 6); // .style(\"fill\", '#f00');\n};\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nvar insertArrowCrossHead = function insertArrowCrossHead(elem) {\n var defs = elem.append('defs');\n var marker = defs.append('marker').attr('id', 'crosshead').attr('markerWidth', 15).attr('markerHeight', 8).attr('orient', 'auto').attr('refX', 16).attr('refY', 4); // The arrow\n\n marker.append('path').attr('fill', 'black').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 9,2 V 6 L16,4 Z'); // The cross\n\n marker.append('path').attr('fill', 'none').attr('stroke', '#000000').style('stroke-dasharray', '0, 0').attr('stroke-width', '1px').attr('d', 'M 0,1 L 6,7 M 6,1 L 0,7'); // this is actual shape for arrowhead\n};\nvar getTextObj = function getTextObj() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: undefined,\n style: '#666',\n width: undefined,\n height: undefined,\n textMargin: 0,\n rx: 0,\n ry: 0,\n tspan: true,\n valign: undefined\n };\n};\nvar getNoteRect = function getNoteRect() {\n return {\n x: 0,\n y: 0,\n fill: '#EDF2AE',\n stroke: '#666',\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nvar _drawTextCandidateFunc = function () {\n function byText(content, g, x, y, width, height, textAttrs) {\n var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('text-anchor', 'middle').text(content);\n\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf) {\n var actorFontSize = conf.actorFontSize,\n actorFontFamily = conf.actorFontFamily,\n actorFontWeight = conf.actorFontWeight;\n var lines = content.split(_common_common__WEBPACK_IMPORTED_MODULE_0__[\"default\"].lineBreakRegex);\n\n for (var i = 0; i < lines.length; i++) {\n var dy = i * actorFontSize - actorFontSize * (lines.length - 1) / 2;\n var text = g.append('text').attr('x', x + width / 2).attr('y', y).style('text-anchor', 'middle').style('font-size', actorFontSize).style('font-weight', actorFontWeight).style('font-family', actorFontFamily);\n text.append('tspan').attr('x', x + width / 2).attr('dy', dy).text(lines[i]);\n text.attr('y', y + height / 2.0).attr('dominant-baseline', 'central').attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n var s = g.append('switch');\n var f = s.append('foreignObject').attr('x', x).attr('y', y).attr('width', width).attr('height', height);\n var text = f.append('div').style('display', 'table').style('height', '100%').style('width', '100%');\n text.append('div').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle').text(content);\n byTspan(content, s, x, y, width, height, textAttrs, conf);\n\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (var key in fromTextAttrsDict) {\n if (fromTextAttrsDict.hasOwnProperty(key)) {\n // eslint-disable-line\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawRect: drawRect,\n drawText: drawText,\n drawLabel: drawLabel,\n drawActor: drawActor,\n anchorElement: anchorElement,\n drawActivation: drawActivation,\n drawLoop: drawLoop,\n drawBackgroundRect: drawBackgroundRect,\n insertArrowHead: insertArrowHead,\n insertArrowFilledHead: insertArrowFilledHead,\n insertSequenceNumber: insertSequenceNumber,\n insertArrowCrossHead: insertArrowCrossHead,\n getTextObj: getTextObj,\n getNoteRect: getNoteRect\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/id-cache.js\":\n/*!****************************************!*\\\n !*** ./src/diagrams/state/id-cache.js ***!\n \\****************************************/\n/*! exports provided: set, get, keys, size, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return get; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return keys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return size; });\nvar idCache = {};\nvar set = function set(key, val) {\n idCache[key] = val;\n};\nvar get = function get(k) {\n return idCache[k];\n};\nvar keys = function keys() {\n return Object.keys(idCache);\n};\nvar size = function size() {\n return keys().length;\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n get: get,\n set: set,\n keys: keys,\n size: size\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/parser/stateDiagram.jison\":\n/*!******************************************************!*\\\n !*** ./src/diagrams/state/parser/stateDiagram.jison ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,3],$V2=[1,5],$V3=[1,7],$V4=[2,5],$V5=[1,15],$V6=[1,17],$V7=[1,19],$V8=[1,20],$V9=[1,21],$Va=[1,22],$Vb=[1,28],$Vc=[1,23],$Vd=[1,24],$Ve=[1,25],$Vf=[1,26],$Vg=[1,29],$Vh=[1,32],$Vi=[1,4,5,14,15,17,19,20,22,23,24,25,26,36,39],$Vj=[1,4,5,12,13,14,15,17,19,20,22,23,24,25,26,36,39],$Vk=[1,4,5,7,14,15,17,19,20,22,23,24,25,26,36,39],$Vl=[4,5,14,15,17,19,20,22,23,24,25,26,36,39];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"SPACE\":4,\"NL\":5,\"directive\":6,\"SD\":7,\"document\":8,\"line\":9,\"statement\":10,\"idStatement\":11,\"DESCR\":12,\"-->\":13,\"HIDE_EMPTY\":14,\"scale\":15,\"WIDTH\":16,\"COMPOSIT_STATE\":17,\"STRUCT_START\":18,\"STRUCT_STOP\":19,\"STATE_DESCR\":20,\"AS\":21,\"ID\":22,\"FORK\":23,\"JOIN\":24,\"CONCURRENT\":25,\"note\":26,\"notePosition\":27,\"NOTE_TEXT\":28,\"openDirective\":29,\"typeDirective\":30,\"closeDirective\":31,\":\":32,\"argDirective\":33,\"eol\":34,\";\":35,\"EDGE_STATE\":36,\"left_of\":37,\"right_of\":38,\"open_directive\":39,\"type_directive\":40,\"arg_directive\":41,\"close_directive\":42,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"SPACE\",5:\"NL\",7:\"SD\",12:\"DESCR\",13:\"-->\",14:\"HIDE_EMPTY\",15:\"scale\",16:\"WIDTH\",17:\"COMPOSIT_STATE\",18:\"STRUCT_START\",19:\"STRUCT_STOP\",20:\"STATE_DESCR\",21:\"AS\",22:\"ID\",23:\"FORK\",24:\"JOIN\",25:\"CONCURRENT\",26:\"note\",28:\"NOTE_TEXT\",32:\":\",35:\";\",36:\"EDGE_STATE\",37:\"left_of\",38:\"right_of\",39:\"open_directive\",40:\"type_directive\",41:\"arg_directive\",42:\"close_directive\"},\nproductions_: [0,[3,2],[3,2],[3,2],[3,2],[8,0],[8,2],[9,2],[9,1],[9,1],[10,1],[10,2],[10,3],[10,4],[10,1],[10,2],[10,1],[10,4],[10,3],[10,6],[10,1],[10,1],[10,1],[10,4],[10,4],[10,1],[6,3],[6,5],[34,1],[34,1],[11,1],[11,1],[27,1],[27,1],[29,1],[30,1],[33,1],[31,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 4:\n /*console.warn('Root document', $$[$0]);*/ yy.setRootDoc($$[$0]);return $$[$0]; \nbreak;\ncase 5:\n this.$ = [] \nbreak;\ncase 6:\n\n if($$[$0]!='nl'){\n $$[$0-1].push($$[$0]);this.$ = $$[$0-1]\n }\n // console.warn('Got document',$$[$0-1], $$[$0]);\n \nbreak;\ncase 7: case 8:\n this.$ = $$[$0] \nbreak;\ncase 9:\n this.$='nl';\nbreak;\ncase 10:\n /*console.warn('got id and descr', $$[$0]);*/this.$={ stmt: 'state', id: $$[$0], type: 'default', description: ''};\nbreak;\ncase 11:\n /*console.warn('got id and descr', $$[$0-1], $$[$0].trim());*/this.$={ stmt: 'state', id: $$[$0-1], type: 'default', description: yy.trimColon($$[$0])};\nbreak;\ncase 12:\n\n /*console.warn('got id', $$[$0-2]);yy.addRelation($$[$0-2], $$[$0]);*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-2], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0] ,type: 'default', description: ''}};\n \nbreak;\ncase 13:\n\n /*yy.addRelation($$[$0-3], $$[$0-1], $$[$0].substr(1).trim());*/\n this.$={ stmt: 'relation', state1: { stmt: 'state', id: $$[$0-3], type: 'default', description: '' }, state2:{ stmt: 'state', id: $$[$0-1] ,type: 'default', description: ''}, description: $$[$0].substr(1).trim()};\n \nbreak;\ncase 17:\n\n\n /* console.warn('Adding document for state without id ', $$[$0-3]);*/\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: '', doc: $$[$0-1] }\n \nbreak;\ncase 18:\n\n var id=$$[$0];\n var description = $$[$0-2].trim();\n if($$[$0].match(':')){\n var parts = $$[$0].split(':');\n id=parts[0];\n description = [description, parts[1]];\n }\n this.$={stmt: 'state', id: id, type: 'default', description: description};\n\n \nbreak;\ncase 19:\n\n //console.warn('Adding document for state with id ', $$[$0-3], $$[$0-2]); yy.addDocument($$[$0-3]);\n this.$={ stmt: 'state', id: $$[$0-3], type: 'default', description: $$[$0-5], doc: $$[$0-1] }\n \nbreak;\ncase 20:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'fork' }\n \nbreak;\ncase 21:\n\n this.$={ stmt: 'state', id: $$[$0], type: 'join' }\n \nbreak;\ncase 22:\n\n this.$={ stmt: 'state', id: yy.getDividerId(), type: 'divider' }\n \nbreak;\ncase 23:\n\n /*console.warn('got NOTE, position: ', $$[$0-2].trim(), 'id = ', $$[$0-1].trim(), 'note: ', $$[$0]);*/\n this.$={ stmt: 'state', id: $$[$0-1].trim(), note:{position: $$[$0-2].trim(), text: $$[$0].trim()}};\n \nbreak;\ncase 30: case 31:\nthis.$=$$[$0];\nbreak;\ncase 34:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 35:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 36:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 37:\n yy.parseDirective('}%%', 'close_directive', 'state'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},{1:[3]},{3:8,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},{3:9,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},{3:10,4:$V0,5:$V1,6:4,7:$V2,29:6,39:$V3},o([1,4,5,14,15,17,20,22,23,24,25,26,36,39],$V4,{8:11}),{30:12,40:[1,13]},{40:[2,34]},{1:[2,1]},{1:[2,2]},{1:[2,3]},{1:[2,4],4:$V5,5:$V6,6:27,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},{31:30,32:[1,31],42:$Vh},o([32,42],[2,35]),o($Vi,[2,6]),{6:27,10:33,11:18,14:$V7,15:$V8,17:$V9,20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},o($Vi,[2,8]),o($Vi,[2,9]),o($Vi,[2,10],{12:[1,34],13:[1,35]}),o($Vi,[2,14]),{16:[1,36]},o($Vi,[2,16],{18:[1,37]}),{21:[1,38]},o($Vi,[2,20]),o($Vi,[2,21]),o($Vi,[2,22]),{27:39,28:[1,40],37:[1,41],38:[1,42]},o($Vi,[2,25]),o($Vj,[2,30]),o($Vj,[2,31]),o($Vk,[2,26]),{33:43,41:[1,44]},o($Vk,[2,37]),o($Vi,[2,7]),o($Vi,[2,11]),{11:45,22:$Vb,36:$Vg},o($Vi,[2,15]),o($Vl,$V4,{8:46}),{22:[1,47]},{22:[1,48]},{21:[1,49]},{22:[2,32]},{22:[2,33]},{31:50,42:$Vh},{42:[2,36]},o($Vi,[2,12],{12:[1,51]}),{4:$V5,5:$V6,6:27,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,52],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},o($Vi,[2,18],{18:[1,53]}),{28:[1,54]},{22:[1,55]},o($Vk,[2,27]),o($Vi,[2,13]),o($Vi,[2,17]),o($Vl,$V4,{8:56}),o($Vi,[2,23]),o($Vi,[2,24]),{4:$V5,5:$V6,6:27,9:14,10:16,11:18,14:$V7,15:$V8,17:$V9,19:[1,57],20:$Va,22:$Vb,23:$Vc,24:$Vd,25:$Ve,26:$Vf,29:6,36:$Vg,39:$V3},o($Vi,[2,19])],\ndefaultActions: {7:[2,34],8:[2,1],9:[2,2],10:[2,3],41:[2,32],42:[2,33],44:[2,36]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 39; \nbreak;\ncase 1: this.begin('type_directive'); return 40; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 32; \nbreak;\ncase 3: this.popState(); this.popState(); return 42; \nbreak;\ncase 4:return 41;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */{ console.log('Crap after close'); }\nbreak;\ncase 7:return 5;\nbreak;\ncase 8:/* skip all whitespace */\nbreak;\ncase 9:/* skip same-line whitespace */\nbreak;\ncase 10:/* skip comments */\nbreak;\ncase 11:/* skip comments */\nbreak;\ncase 12: this.pushState('SCALE'); /* console.log('Got scale', yy_.yytext);*/ return 15; \nbreak;\ncase 13:return 16;\nbreak;\ncase 14:this.popState();\nbreak;\ncase 15: this.pushState('STATE'); \nbreak;\ncase 16:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim(); /*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 17:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 18:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Fork: ',yy_.yytext);*/return 23;\nbreak;\ncase 19:this.popState();yy_.yytext=yy_.yytext.slice(0,-8).trim();/*console.warn('Fork Join: ',yy_.yytext);*/return 24;\nbreak;\ncase 20:this.begin(\"STATE_STRING\");\nbreak;\ncase 21:this.popState();this.pushState('STATE_ID');return \"AS\";\nbreak;\ncase 22:this.popState();/* console.log('STATE_ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 23:this.popState();\nbreak;\ncase 24: /*console.log('Long description:', yy_.yytext);*/return \"STATE_DESCR\";\nbreak;\ncase 25:/*console.log('COMPOSIT_STATE', yy_.yytext);*/return 17;\nbreak;\ncase 26:this.popState();\nbreak;\ncase 27:this.popState();this.pushState('struct'); /*console.log('begin struct', yy_.yytext);*/return 18;\nbreak;\ncase 28: /*console.log('Ending struct');*/ this.popState(); return 19;\nbreak;\ncase 29:/* nothing */\nbreak;\ncase 30: this.begin('NOTE'); return 26; \nbreak;\ncase 31: this.popState();this.pushState('NOTE_ID');return 37;\nbreak;\ncase 32: this.popState();this.pushState('NOTE_ID');return 38;\nbreak;\ncase 33: this.popState();this.pushState('FLOATING_NOTE');\nbreak;\ncase 34:this.popState();this.pushState('FLOATING_NOTE_ID');return \"AS\";\nbreak;\ncase 35:/**/\nbreak;\ncase 36: /*console.log('Floating note text: ', yy_.yytext);*/return \"NOTE_TEXT\";\nbreak;\ncase 37:this.popState();/*console.log('Floating note ID', yy_.yytext);*/return \"ID\";\nbreak;\ncase 38: this.popState();this.pushState('NOTE_TEXT');/*console.log('Got ID for note', yy_.yytext);*/return 22;\nbreak;\ncase 39: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.substr(2).trim();return 28;\nbreak;\ncase 40: this.popState();/*console.log('Got NOTE_TEXT for note',yy_.yytext);*/yy_.yytext = yy_.yytext.slice(0,-8).trim();return 28;\nbreak;\ncase 41: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 42: /*console.log('Got state diagram', yy_.yytext,'#');*/return 7; \nbreak;\ncase 43: /*console.log('HIDE_EMPTY', yy_.yytext,'#');*/return 14; \nbreak;\ncase 44: /*console.log('EDGE_STATE=',yy_.yytext);*/ return 36;\nbreak;\ncase 45: /*console.log('=>ID=',yy_.yytext);*/ return 22;\nbreak;\ncase 46: yy_.yytext = yy_.yytext.trim(); /*console.log('Descr = ', yy_.yytext);*/ return 12; \nbreak;\ncase 47:return 13;\nbreak;\ncase 48:return 25;\nbreak;\ncase 49:return 5;\nbreak;\ncase 50:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:[\\s]+)/i,/^(?:((?!\\n)\\s)+)/i,/^(?:#[^\\n]*)/i,/^(?:%[^\\n]*)/i,/^(?:scale\\s+)/i,/^(?:\\d+)/i,/^(?:\\s+width\\b)/i,/^(?:state\\s+)/i,/^(?:.*<<fork>>)/i,/^(?:.*<<join>>)/i,/^(?:.*\\[\\[fork\\]\\])/i,/^(?:.*\\[\\[join\\]\\])/i,/^(?:[\"])/i,/^(?:\\s*as\\s+)/i,/^(?:[^\\n\\{]*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n\\s\\{]+)/i,/^(?:\\n)/i,/^(?:\\{)/i,/^(?:\\})/i,/^(?:[\\n])/i,/^(?:note\\s+)/i,/^(?:left of\\b)/i,/^(?:right of\\b)/i,/^(?:\")/i,/^(?:\\s*as\\s*)/i,/^(?:[\"])/i,/^(?:[^\"]*)/i,/^(?:[^\\n]*)/i,/^(?:\\s*[^:\\n\\s\\-]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:[\\s\\S]*?end note\\b)/i,/^(?:stateDiagram\\s+)/i,/^(?:stateDiagram-v2\\s+)/i,/^(?:hide empty description\\b)/i,/^(?:\\[\\*\\])/i,/^(?:[^:\\n\\s\\-\\{]+)/i,/^(?:\\s*:[^:\\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"LINE\":{\"rules\":[9,10],\"inclusive\":false},\"close_directive\":{\"rules\":[9,10],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4,9,10],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3,9,10],\"inclusive\":false},\"open_directive\":{\"rules\":[1,9,10],\"inclusive\":false},\"struct\":{\"rules\":[9,10,15,28,29,30,44,45,46,47,48],\"inclusive\":false},\"FLOATING_NOTE_ID\":{\"rules\":[37],\"inclusive\":false},\"FLOATING_NOTE\":{\"rules\":[34,35,36],\"inclusive\":false},\"NOTE_TEXT\":{\"rules\":[39,40],\"inclusive\":false},\"NOTE_ID\":{\"rules\":[38],\"inclusive\":false},\"NOTE\":{\"rules\":[31,32,33],\"inclusive\":false},\"SCALE\":{\"rules\":[13,14],\"inclusive\":false},\"ALIAS\":{\"rules\":[],\"inclusive\":false},\"STATE_ID\":{\"rules\":[22],\"inclusive\":false},\"STATE_STRING\":{\"rules\":[23,24],\"inclusive\":false},\"FORK_STATE\":{\"rules\":[],\"inclusive\":false},\"STATE\":{\"rules\":[9,10,16,17,18,19,20,21,25,26,27],\"inclusive\":false},\"ID\":{\"rules\":[9,10],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,10,11,12,15,27,30,41,42,43,44,45,46,47,49,50],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/shapes.js\":\n/*!**************************************!*\\\n !*** ./src/diagrams/state/shapes.js ***!\n \\**************************************/\n/*! exports provided: drawStartState, drawDivider, drawSimpleState, drawDescrState, addTitleAndBox, drawText, drawNote, drawState, drawEdge */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawStartState\", function() { return drawStartState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawDivider\", function() { return drawDivider; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawSimpleState\", function() { return drawSimpleState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawDescrState\", function() { return drawDescrState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addTitleAndBox\", function() { return addTitleAndBox; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawText\", function() { return drawText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawNote\", function() { return drawNote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawState\", function() { return drawState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawEdge\", function() { return drawEdge; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _id_cache_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./id-cache.js */ \"./src/diagrams/state/id-cache.js\");\n/* harmony import */ var _stateDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stateDb */ \"./src/diagrams/state/stateDb.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n\n\n\n\n\n\n // let conf;\n\n/**\n * Draws a start state as a black circle\n */\n\nvar drawStartState = function drawStartState(g) {\n return g.append('circle') // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'start-state').attr('r', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit).attr('cx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit).attr('cy', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit);\n};\n/**\n * Draws a start state as a black circle\n */\n\nvar drawDivider = function drawDivider(g) {\n return g.append('line').style('stroke', 'grey').style('stroke-dasharray', '3').attr('x1', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight).attr('class', 'divider').attr('x2', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight * 2).attr('y1', 0).attr('y2', 0);\n};\n/**\n * Draws a an end state as a black circle\n */\n\nvar drawSimpleState = function drawSimpleState(g, stateDef) {\n var state = g.append('text').attr('x', 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('font-size', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.fontSize).attr('class', 'state-title').text(stateDef.id);\n var classBox = state.node().getBBox();\n g.insert('rect', ':first-child').attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('width', classBox.width + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('height', classBox.height + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.radius);\n return state;\n};\n/**\n * Draws a state with descriptions\n * @param {*} g\n * @param {*} stateDef\n */\n\nvar drawDescrState = function drawDescrState(g, stateDef) {\n var addTspan = function addTspan(textEl, txt, isFirst) {\n var tSpan = textEl.append('tspan').attr('x', 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).text(txt);\n\n if (!isFirst) {\n tSpan.attr('dy', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight);\n }\n };\n\n var title = g.append('text').attr('x', 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight + 1.3 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('font-size', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.fontSize).attr('class', 'state-title').text(stateDef.descriptions[0]);\n var titleBox = title.node().getBBox();\n var titleHeight = titleBox.height;\n var description = g.append('text') // text label for the x axis\n .attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y', titleHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding * 0.4 + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.dividerMargin + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight).attr('class', 'state-description');\n var isFirst = true;\n var isSecond = true;\n stateDef.descriptions.forEach(function (descr) {\n if (!isFirst) {\n addTspan(description, descr, isSecond);\n isSecond = false;\n }\n\n isFirst = false;\n });\n var descrLine = g.append('line') // text label for the x axis\n .attr('x1', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y1', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + titleHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.dividerMargin / 2).attr('y2', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + titleHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.dividerMargin / 2).attr('class', 'descr-divider');\n var descrBox = description.node().getBBox();\n var width = Math.max(descrBox.width, titleBox.width);\n descrLine.attr('x2', width + 3 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding); // const classBox = title.node().getBBox();\n\n g.insert('rect', ':first-child').attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('width', width + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('height', descrBox.height + titleHeight + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.radius);\n return g;\n};\n/**\n * Adds the creates a box around the existing content and adds a\n * panel for the id on top of the content.\n */\n\n/**\n * Function that creates an title row and a frame around a substate for a composit state diagram.\n * The function returns a new d3 svg object with updated width and height properties;\n * @param {*} g The d3 svg object for the substate to framed\n * @param {*} stateDef The info about the\n */\n\nvar addTitleAndBox = function addTitleAndBox(g, stateDef, altBkg) {\n var pad = Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding;\n var dblPad = 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding;\n var orgBox = g.node().getBBox();\n var orgWidth = orgBox.width;\n var orgX = orgBox.x;\n var title = g.append('text').attr('x', 0).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.titleShift).attr('font-size', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.fontSize).attr('class', 'state-title').text(stateDef.id);\n var titleBox = title.node().getBBox();\n var titleWidth = titleBox.width + dblPad;\n var width = Math.max(titleWidth, orgWidth); // + dblPad;\n\n if (width === orgWidth) {\n width = width + dblPad;\n }\n\n var startX; // const lineY = 1 - getConfig().state.textHeight;\n // const descrLine = g\n // .append('line') // text label for the x axis\n // .attr('x1', 0)\n // .attr('y1', lineY)\n // .attr('y2', lineY)\n // .attr('class', 'descr-divider');\n\n var graphBox = g.node().getBBox(); // descrLine.attr('x2', graphBox.width + getConfig().state.padding);\n\n if (stateDef.doc) {// cnsole.warn(\n // stateDef.id,\n // 'orgX: ',\n // orgX,\n // 'width: ',\n // width,\n // 'titleWidth: ',\n // titleWidth,\n // 'orgWidth: ',\n // orgWidth,\n // 'width',\n // width\n // );\n }\n\n startX = orgX - pad;\n\n if (titleWidth > orgWidth) {\n startX = (orgWidth - width) / 2 + pad;\n }\n\n if (Math.abs(orgX - graphBox.x) < pad) {\n if (titleWidth > orgWidth) {\n startX = orgX - (titleWidth - orgWidth) / 2;\n }\n }\n\n var lineY = 1 - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight; // White color\n\n g.insert('rect', ':first-child').attr('x', startX).attr('y', lineY).attr('class', altBkg ? 'alt-composit' : 'composit').attr('width', width).attr('height', graphBox.height + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.titleShift + 1).attr('rx', '0');\n title.attr('x', startX + pad);\n if (titleWidth <= orgWidth) title.attr('x', orgX + (width - dblPad) / 2 - titleWidth / 2 + pad); // Title background\n\n g.insert('rect', ':first-child').attr('x', startX).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.titleShift - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('width', width) // Just needs to be higher then the descr line, will be clipped by the white color box\n .attr('height', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight * 3).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.radius); // Full background\n\n g.insert('rect', ':first-child').attr('x', startX).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.titleShift - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('width', width).attr('height', graphBox.height + 3 + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.textHeight).attr('rx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.radius);\n return g;\n};\n\nvar drawEndState = function drawEndState(g) {\n g.append('circle') // .style('stroke', 'black')\n // .style('fill', 'white')\n .attr('class', 'end-state-outer').attr('r', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.miniPadding).attr('cx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.miniPadding).attr('cy', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.miniPadding);\n return g.append('circle') // .style('stroke', 'black')\n // .style('fill', 'black')\n .attr('class', 'end-state-inner').attr('r', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit).attr('cx', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit + 2).attr('cy', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.sizeUnit + 2);\n};\n\nvar drawForkJoinState = function drawForkJoinState(g, stateDef) {\n var width = Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.forkWidth;\n var height = Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.forkHeight;\n\n if (stateDef.parentId) {\n var tmp = width;\n width = height;\n height = tmp;\n }\n\n return g.append('rect').style('stroke', 'black').style('fill', 'black').attr('width', width).attr('height', height).attr('x', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding);\n};\n\nvar drawText = function drawText(elem, textData) {\n // Remove and ignore br:s\n var nText = textData.text.replace(_common_common__WEBPACK_IMPORTED_MODULE_4__[\"default\"].lineBreakRegex, ' ');\n var textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.attr('fill', textData.fill);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n var span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n return textElem;\n};\n\nvar _drawLongText = function _drawLongText(_text, x, y, g) {\n var textHeight = 0;\n var textElem = g.append('text');\n textElem.style('text-anchor', 'start');\n textElem.attr('class', 'noteText');\n\n var text = _text.replace(/\\r\\n/g, '<br/>');\n\n text = text.replace(/\\n/g, '<br/>');\n var lines = text.split(_common_common__WEBPACK_IMPORTED_MODULE_4__[\"default\"].lineBreakRegex);\n var tHeight = 1.25 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.noteMargin;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _line = _step.value;\n\n var txt = _line.trim();\n\n if (txt.length > 0) {\n var span = textElem.append('tspan');\n span.text(txt);\n\n if (tHeight === 0) {\n var textBounds = span.node().getBBox();\n tHeight += textBounds.height;\n }\n\n textHeight += tHeight;\n span.attr('x', x + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.noteMargin);\n span.attr('y', y + textHeight + 1.25 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.noteMargin);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return {\n textWidth: textElem.node().getBBox().width,\n textHeight: textHeight\n };\n};\n/**\n * Draws a note to the diagram\n * @param text - The text of the given note.\n * @param g - The element the note is attached to.\n */\n\n\nvar drawNote = function drawNote(text, g) {\n g.attr('class', 'state-note');\n var note = g.append('rect').attr('x', 0).attr('y', Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding);\n var rectElem = g.append('g');\n\n var _drawLongText2 = _drawLongText(text, 0, 0, rectElem),\n textWidth = _drawLongText2.textWidth,\n textHeight = _drawLongText2.textHeight;\n\n note.attr('height', textHeight + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.noteMargin);\n note.attr('width', textWidth + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.noteMargin * 2);\n return note;\n};\n/**\n * Starting point for drawing a state. The function finds out the specifics\n * about the state and renders with approprtiate function.\n * @param {*} elem\n * @param {*} stateDef\n */\n\nvar drawState = function drawState(elem, stateDef) {\n var id = stateDef.id;\n var stateInfo = {\n id: id,\n label: stateDef.id,\n width: 0,\n height: 0\n };\n var g = elem.append('g').attr('id', id).attr('class', 'stateGroup');\n if (stateDef.type === 'start') drawStartState(g);\n if (stateDef.type === 'end') drawEndState(g);\n if (stateDef.type === 'fork' || stateDef.type === 'join') drawForkJoinState(g, stateDef);\n if (stateDef.type === 'note') drawNote(stateDef.note.text, g);\n if (stateDef.type === 'divider') drawDivider(g);\n if (stateDef.type === 'default' && stateDef.descriptions.length === 0) drawSimpleState(g, stateDef);\n if (stateDef.type === 'default' && stateDef.descriptions.length > 0) drawDescrState(g, stateDef);\n var stateBox = g.node().getBBox();\n stateInfo.width = stateBox.width + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding;\n stateInfo.height = stateBox.height + 2 * Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding;\n _id_cache_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"].set(id, stateInfo); // stateCnt++;\n\n return stateInfo;\n};\nvar edgeCount = 0;\nvar drawEdge = function drawEdge(elem, path, relation) {\n var getRelationType = function getRelationType(type) {\n switch (type) {\n case _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].relationType.AGGREGATION:\n return 'aggregation';\n\n case _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].relationType.EXTENSION:\n return 'extension';\n\n case _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].relationType.COMPOSITION:\n return 'composition';\n\n case _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].relationType.DEPENDENCY:\n return 'dependency';\n }\n };\n\n path.points = path.points.filter(function (p) {\n return !Number.isNaN(p.y);\n }); // The data for our line\n\n var lineData = path.points; // This is the accessor function we talked about above\n\n var lineFunction = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"line\"])().x(function (d) {\n return d.x;\n }).y(function (d) {\n return d.y;\n }).curve(d3__WEBPACK_IMPORTED_MODULE_0__[\"curveBasis\"]);\n var svgPath = elem.append('path').attr('d', lineFunction(lineData)).attr('id', 'edge' + edgeCount).attr('class', 'transition');\n var url = '';\n\n if (Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.arrowMarkerAbsolute) {\n url = window.location.protocol + '//' + window.location.host + window.location.pathname + window.location.search;\n url = url.replace(/\\(/g, '\\\\(');\n url = url.replace(/\\)/g, '\\\\)');\n }\n\n svgPath.attr('marker-end', 'url(' + url + '#' + getRelationType(_stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].relationType.DEPENDENCY) + 'End' + ')');\n\n if (typeof relation.title !== 'undefined') {\n var label = elem.append('g').attr('class', 'stateLabel');\n\n var _utils$calcLabelPosit = _utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].calcLabelPosition(path.points),\n x = _utils$calcLabelPosit.x,\n y = _utils$calcLabelPosit.y;\n\n var rows = _common_common__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getRows(relation.title);\n var titleHeight = 0;\n var titleRows = [];\n var maxWidth = 0;\n var minX = 0;\n\n for (var i = 0; i <= rows.length; i++) {\n var title = label.append('text').attr('text-anchor', 'middle').text(rows[i]).attr('x', x).attr('y', y + titleHeight);\n var boundstmp = title.node().getBBox();\n maxWidth = Math.max(maxWidth, boundstmp.width);\n minX = Math.min(minX, boundstmp.x);\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info(boundstmp.x, x, y + titleHeight);\n\n if (titleHeight === 0) {\n var titleBox = title.node().getBBox();\n titleHeight = titleBox.height;\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info('Title height', titleHeight, y);\n }\n\n titleRows.push(title);\n }\n\n var boxHeight = titleHeight * rows.length;\n\n if (rows.length > 1) {\n var heightAdj = (rows.length - 1) * titleHeight * 0.5;\n titleRows.forEach(function (title, i) {\n return title.attr('y', y + i * titleHeight - heightAdj);\n });\n boxHeight = titleHeight * rows.length;\n }\n\n var bounds = label.node().getBBox();\n label.insert('rect', ':first-child').attr('class', 'box').attr('x', x - maxWidth / 2 - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding / 2).attr('y', y - boxHeight / 2 - Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding / 2 - 3.5).attr('width', maxWidth + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding).attr('height', boxHeight + Object(_config__WEBPACK_IMPORTED_MODULE_5__[\"getConfig\"])().state.padding);\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info(bounds); //label.attr('transform', '0 -' + (bounds.y / 2));\n // Debug points\n // path.points.forEach(point => {\n // g.append('circle')\n // .style('stroke', 'red')\n // .style('fill', 'red')\n // .attr('r', 1)\n // .attr('cx', point.x)\n // .attr('cy', point.y);\n // });\n // g.append('circle')\n // .style('stroke', 'blue')\n // .style('fill', 'blue')\n // .attr('r', 1)\n // .attr('cx', x)\n // .attr('cy', y);\n }\n\n edgeCount++;\n};\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/stateDb.js\":\n/*!***************************************!*\\\n !*** ./src/diagrams/state/stateDb.js ***!\n \\***************************************/\n/*! exports provided: parseDirective, addState, clear, getState, getStates, logDocuments, getRelations, addRelation, cleanupLabel, lineType, relationType, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addState\", function() { return addState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getState\", function() { return getState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStates\", function() { return getStates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"logDocuments\", function() { return logDocuments; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRelations\", function() { return getRelations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addRelation\", function() { return addRelation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cleanupLabel\", function() { return cleanupLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lineType\", function() { return lineType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"relationType\", function() { return relationType; });\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\nvar clone = function clone(o) {\n return JSON.parse(JSON.stringify(o));\n};\n\nvar rootDoc = [];\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parseDirective(this, statement, context, type);\n};\n\nvar setRootDoc = function setRootDoc(o) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Setting root doc', o); // rootDoc = { id: 'root', doc: o };\n\n rootDoc = o;\n};\n\nvar getRootDoc = function getRootDoc() {\n return rootDoc;\n};\n\nvar docTranslator = function docTranslator(parent, node, first) {\n if (node.stmt === 'relation') {\n docTranslator(parent, node.state1, true);\n docTranslator(parent, node.state2, false);\n } else {\n if (node.stmt === 'state') {\n if (node.id === '[*]') {\n node.id = first ? parent.id + '_start' : parent.id + '_end';\n node.start = first;\n }\n }\n\n if (node.doc) {\n var doc = []; // Check for concurrency\n\n var i = 0;\n var currentDoc = [];\n\n for (i = 0; i < node.doc.length; i++) {\n if (node.doc[i].type === 'divider') {\n // debugger;\n var newNode = clone(node.doc[i]);\n newNode.doc = clone(currentDoc);\n doc.push(newNode);\n currentDoc = [];\n } else {\n currentDoc.push(node.doc[i]);\n }\n } // If any divider was encountered\n\n\n if (doc.length > 0 && currentDoc.length > 0) {\n var _newNode = {\n stmt: 'state',\n id: Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"generateId\"])(),\n type: 'divider',\n doc: clone(currentDoc)\n };\n doc.push(clone(_newNode));\n node.doc = doc;\n }\n\n node.doc.forEach(function (docNode) {\n return docTranslator(node, docNode, true);\n });\n }\n }\n};\n\nvar getRootDocV2 = function getRootDocV2() {\n docTranslator({\n id: 'root'\n }, {\n id: 'root',\n doc: rootDoc\n }, true);\n return {\n id: 'root',\n doc: rootDoc\n };\n};\n\nvar extract = function extract(_doc) {\n // const res = { states: [], relations: [] };\n var doc;\n\n if (_doc.doc) {\n doc = _doc.doc;\n } else {\n doc = _doc;\n } // let doc = root.doc;\n // if (!doc) {\n // doc = root;\n // }\n\n\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info(doc);\n clear();\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Extract', doc);\n doc.forEach(function (item) {\n if (item.stmt === 'state') {\n addState(item.id, item.type, item.doc, item.description, item.note);\n }\n\n if (item.stmt === 'relation') {\n addRelation(item.state1.id, item.state2.id, item.description);\n }\n });\n};\n\nvar newDoc = function newDoc() {\n return {\n relations: [],\n states: {},\n documents: {}\n };\n};\n\nvar documents = {\n root: newDoc()\n};\nvar currentDocument = documents.root;\nvar startCnt = 0;\nvar endCnt = 0; // eslint-disable-line\n// let stateCnt = 0;\n\n/**\n * Function called by parser when a node definition has been found.\n * @param id\n * @param text\n * @param type\n * @param style\n */\n\nvar addState = function addState(id, type, doc, descr, note) {\n if (typeof currentDocument.states[id] === 'undefined') {\n currentDocument.states[id] = {\n id: id,\n descriptions: [],\n type: type,\n doc: doc,\n note: note\n };\n } else {\n if (!currentDocument.states[id].doc) {\n currentDocument.states[id].doc = doc;\n }\n\n if (!currentDocument.states[id].type) {\n currentDocument.states[id].type = type;\n }\n }\n\n if (descr) {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Adding state ', id, descr);\n if (typeof descr === 'string') addDescription(id, descr.trim());\n\n if (_typeof(descr) === 'object') {\n descr.forEach(function (des) {\n return addDescription(id, des.trim());\n });\n }\n }\n\n if (note) currentDocument.states[id].note = note;\n};\nvar clear = function clear() {\n documents = {\n root: newDoc()\n };\n currentDocument = documents.root;\n currentDocument = documents.root;\n startCnt = 0;\n endCnt = 0; // eslint-disable-line\n\n classes = [];\n};\nvar getState = function getState(id) {\n return currentDocument.states[id];\n};\nvar getStates = function getStates() {\n return currentDocument.states;\n};\nvar logDocuments = function logDocuments() {\n _logger__WEBPACK_IMPORTED_MODULE_0__[\"log\"].info('Documents = ', documents);\n};\nvar getRelations = function getRelations() {\n return currentDocument.relations;\n};\nvar addRelation = function addRelation(_id1, _id2, title) {\n var id1 = _id1;\n var id2 = _id2;\n var type1 = 'default';\n var type2 = 'default';\n\n if (_id1 === '[*]') {\n startCnt++;\n id1 = 'start' + startCnt;\n type1 = 'start';\n }\n\n if (_id2 === '[*]') {\n endCnt++;\n id2 = 'end' + startCnt;\n type2 = 'end';\n }\n\n addState(id1, type1);\n addState(id2, type2);\n currentDocument.relations.push({\n id1: id1,\n id2: id2,\n title: title\n });\n};\n\nvar addDescription = function addDescription(id, _descr) {\n var theState = currentDocument.states[id];\n var descr = _descr;\n\n if (descr[0] === ':') {\n descr = descr.substr(1).trim();\n }\n\n theState.descriptions.push(descr);\n};\n\nvar cleanupLabel = function cleanupLabel(label) {\n if (label.substring(0, 1) === ':') {\n return label.substr(2).trim();\n } else {\n return label.trim();\n }\n};\nvar lineType = {\n LINE: 0,\n DOTTED_LINE: 1\n};\nvar dividerCnt = 0;\n\nvar getDividerId = function getDividerId() {\n dividerCnt++;\n return 'divider-id-' + dividerCnt;\n};\n\nvar classes = [];\n\nvar getClasses = function getClasses() {\n return classes;\n};\n\nvar getDirection = function getDirection() {\n return 'TB';\n};\n\nvar relationType = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3\n};\n\nvar trimColon = function trimColon(str) {\n return str && str[0] === ':' ? str.substr(1).trim() : str.trim();\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().state;\n },\n addState: addState,\n clear: clear,\n getState: getState,\n getStates: getStates,\n getRelations: getRelations,\n getClasses: getClasses,\n getDirection: getDirection,\n addRelation: addRelation,\n getDividerId: getDividerId,\n // addDescription,\n cleanupLabel: cleanupLabel,\n lineType: lineType,\n relationType: relationType,\n logDocuments: logDocuments,\n getRootDoc: getRootDoc,\n setRootDoc: setRootDoc,\n getRootDocV2: getRootDocV2,\n extract: extract,\n trimColon: trimColon\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/stateRenderer-v2.js\":\n/*!************************************************!*\\\n !*** ./src/diagrams/state/stateRenderer-v2.js ***!\n \\************************************************/\n/*! exports provided: setConf, getClasses, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClasses\", function() { return getClasses; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _stateDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stateDb */ \"./src/diagrams/state/stateDb.js\");\n/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/stateDiagram */ \"./src/diagrams/state/parser/stateDiagram.jison\");\n/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../dagre-wrapper/index.js */ \"./src/dagre-wrapper/index.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n\n\nvar conf = {};\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n\n for (var i = 0; i < keys.length; i++) {\n conf[keys[i]] = cnf[keys[i]];\n }\n};\nvar nodeDb = {};\n/**\n * Returns the all the styles from classDef statements in the graph definition.\n * @returns {object} classDef styles\n */\n\nvar getClasses = function getClasses(text) {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].trace('Extracting classes');\n _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n var parser = _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; // Parse the graph definition\n\n parser.parse(text);\n return _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getClasses();\n};\n\nvar setupNode = function setupNode(g, parent, node, altFlag) {\n // Add the node\n if (node.id !== 'root') {\n var shape = 'rect';\n\n if (node.start === true) {\n shape = 'start';\n }\n\n if (node.start === false) {\n shape = 'end';\n }\n\n if (node.type !== 'default') {\n shape = node.type;\n }\n\n if (!nodeDb[node.id]) {\n nodeDb[node.id] = {\n id: node.id,\n shape: shape,\n description: node.id,\n classes: 'statediagram-state'\n };\n } // Build of the array of description strings accordinging\n\n\n if (node.description) {\n if (Array.isArray(nodeDb[node.id].description)) {\n // There already is an array of strings,add to it\n nodeDb[node.id].shape = 'rectWithTitle';\n nodeDb[node.id].description.push(node.description);\n } else {\n if (nodeDb[node.id].description.length > 0) {\n // if there is a description already transformit to an array\n nodeDb[node.id].shape = 'rectWithTitle';\n\n if (nodeDb[node.id].description === node.id) {\n // If the previous description was the is, remove it\n nodeDb[node.id].description = [node.description];\n } else {\n nodeDb[node.id].description = [nodeDb[node.id].description, node.description];\n }\n } else {\n nodeDb[node.id].shape = 'rect';\n nodeDb[node.id].description = node.description;\n }\n }\n } // Save data for description and group so that for instance a statement without description overwrites\n // one with description\n // group\n\n\n if (!nodeDb[node.id].type && node.doc) {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info('Setting cluser for ', node.id);\n nodeDb[node.id].type = 'group';\n nodeDb[node.id].shape = node.type === 'divider' ? 'divider' : 'roundedWithTitle';\n nodeDb[node.id].classes = nodeDb[node.id].classes + ' ' + (altFlag ? 'statediagram-cluster statediagram-cluster-alt' : 'statediagram-cluster');\n }\n\n var nodeData = {\n labelStyle: '',\n shape: nodeDb[node.id].shape,\n labelText: nodeDb[node.id].description,\n classes: nodeDb[node.id].classes,\n //classStr,\n style: '',\n //styles.style,\n id: node.id,\n domId: 'state-' + node.id + '-' + cnt,\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n\n };\n\n if (node.note) {\n // Todo: set random id\n var noteData = {\n labelStyle: '',\n shape: 'note',\n labelText: node.note.text,\n classes: 'statediagram-note',\n //classStr,\n style: '',\n //styles.style,\n id: node.id + '----note',\n domId: 'state-' + node.id + '----note-' + cnt,\n type: nodeDb[node.id].type,\n padding: 15 //getConfig().flowchart.padding\n\n };\n var groupData = {\n labelStyle: '',\n shape: 'noteGroup',\n labelText: node.note.text,\n classes: nodeDb[node.id].classes,\n //classStr,\n style: '',\n //styles.style,\n id: node.id + '----parent',\n domId: 'state-' + node.id + '----parent-' + cnt,\n type: 'group',\n padding: 0 //getConfig().flowchart.padding\n\n };\n cnt++;\n g.setNode(node.id + '----parent', groupData);\n g.setNode(noteData.id, noteData);\n g.setNode(node.id, nodeData);\n g.setParent(node.id, node.id + '----parent');\n g.setParent(noteData.id, node.id + '----parent');\n var from = node.id;\n var to = noteData.id;\n\n if (node.note.position === 'left of') {\n from = noteData.id;\n to = node.id;\n }\n\n g.setEdge(from, to, {\n arrowhead: 'none',\n arrowType: '',\n style: 'fill:none',\n labelStyle: '',\n classes: 'transition note-edge',\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal'\n });\n } else {\n g.setNode(node.id, nodeData);\n }\n }\n\n if (parent) {\n if (parent.id !== 'root') {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info('Setting node ', node.id, ' to be child of its parent ', parent.id);\n g.setParent(node.id, parent.id);\n }\n }\n\n if (node.doc) {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info('Adding nodes children ');\n setupDoc(g, node, node.doc, !altFlag);\n }\n};\n\nvar cnt = 0;\n\nvar setupDoc = function setupDoc(g, parent, doc, altFlag) {\n cnt = 0;\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].trace('items', doc);\n doc.forEach(function (item) {\n if (item.stmt === 'state' || item.stmt === 'default') {\n setupNode(g, parent, item, altFlag);\n } else if (item.stmt === 'relation') {\n setupNode(g, parent, item.state1, altFlag);\n setupNode(g, parent, item.state2, altFlag);\n var edgeData = {\n id: 'edge' + cnt,\n arrowhead: 'normal',\n arrowTypeEnd: 'arrow_barb',\n style: 'fill:none',\n labelStyle: '',\n label: item.description,\n arrowheadStyle: 'fill: #333',\n labelpos: 'c',\n labelType: 'text',\n thickness: 'normal',\n classes: 'transition'\n };\n var startId = item.state1.id;\n var endId = item.state2.id;\n g.setEdge(startId, endId, edgeData, cnt);\n cnt++;\n }\n });\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\n\nvar draw = function draw(text, id) {\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info('Drawing state diagram (v2)', id);\n _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].clear();\n nodeDb = {};\n var parser = _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_3___default.a.parser;\n parser.yy = _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; // Parse the graph definition\n\n parser.parse(text); // Fetch the default direction, use TD if none was found\n\n var dir = _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getDirection();\n\n if (typeof dir === 'undefined') {\n dir = 'LR';\n }\n\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().state;\n var nodeSpacing = conf.nodeSpacing || 50;\n var rankSpacing = conf.rankSpacing || 50; // Create the input mermaid.graph\n\n var g = new graphlib__WEBPACK_IMPORTED_MODULE_0___default.a.Graph({\n multigraph: true,\n compound: true\n }).setGraph({\n rankdir: 'TB',\n nodesep: nodeSpacing,\n ranksep: rankSpacing,\n marginx: 8,\n marginy: 8\n }).setDefaultEdgeLabel(function () {\n return {};\n });\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info(_stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRootDocV2());\n _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extract(_stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRootDocV2());\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].info(_stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRootDocV2());\n setupNode(g, undefined, _stateDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getRootDocV2(), true); // Set up an SVG group so that we can translate the final graph.\n\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\")); // Run the renderer. This is what draws the final graph.\n\n var element = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])('#' + id + ' g');\n Object(_dagre_wrapper_index_js__WEBPACK_IMPORTED_MODULE_5__[\"render\"])(element, g, ['barb'], 'statediagram', id);\n var padding = 8;\n var bounds = svg.node().getBBox();\n var width = bounds.width + padding * 2;\n var height = bounds.height + padding * 2; // Zoom in a bit\n\n svg.attr('class', 'statediagram');\n var svgBounds = svg.node().getBBox();\n Object(_utils__WEBPACK_IMPORTED_MODULE_7__[\"configureSvgSize\"])(svg, height, width * 1.75, conf.useMaxWidth); // Ensure the viewBox includes the whole svgBounds area with extra space for padding\n\n var vBox = \"\".concat(svgBounds.x - padding, \" \").concat(svgBounds.y - padding, \" \").concat(width, \" \").concat(height);\n _logger__WEBPACK_IMPORTED_MODULE_6__[\"log\"].debug(\"viewBox \".concat(vBox));\n svg.attr('viewBox', vBox); // Add label rects for non html labels\n\n if (!conf.htmlLabels) {\n var labels = document.querySelectorAll('[id=\"' + id + '\"] .edgeLabel .label');\n\n for (var k = 0; k < labels.length; k++) {\n var label = labels[k]; // Get dimensions of label\n\n var dim = label.getBBox();\n var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n rect.setAttribute('rx', 0);\n rect.setAttribute('ry', 0);\n rect.setAttribute('width', dim.width);\n rect.setAttribute('height', dim.height);\n label.insertBefore(rect, label.firstChild);\n }\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n getClasses: getClasses,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/stateRenderer.js\":\n/*!*********************************************!*\\\n !*** ./src/diagrams/state/stateRenderer.js ***!\n \\*********************************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dagre */ \"dagre\");\n/* harmony import */ var dagre__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(dagre__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! graphlib */ \"graphlib\");\n/* harmony import */ var graphlib__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(graphlib__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../logger */ \"./src/logger.js\");\n/* harmony import */ var _stateDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./stateDb */ \"./src/diagrams/state/stateDb.js\");\n/* harmony import */ var _common_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parser/stateDiagram */ \"./src/diagrams/state/parser/stateDiagram.jison\");\n/* harmony import */ var _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _shapes__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./shapes */ \"./src/diagrams/state/shapes.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n // import idCache from './id-cache';\n\n\n\n\n_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__[\"parser\"].yy = _stateDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; // TODO Move conf object to main conf in mermaidAPI\n\nvar conf;\nvar transformationLog = {};\nvar setConf = function setConf() {}; // Todo optimize\n\n/**\n * Setup arrow head and define the marker. The result is appended to the svg.\n */\n\nvar insertMarkers = function insertMarkers(elem) {\n elem.append('defs').append('marker').attr('id', 'dependencyEnd').attr('refX', 19).attr('refY', 7).attr('markerWidth', 20).attr('markerHeight', 28).attr('orient', 'auto').append('path').attr('d', 'M 19,7 L9,13 L14,7 L9,1 Z');\n};\n/**\n * Draws a flowchart in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\n\nvar draw = function draw(text, id) {\n conf = Object(_config__WEBPACK_IMPORTED_MODULE_8__[\"getConfig\"])().state;\n _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__[\"parser\"].yy.clear();\n _parser_stateDiagram__WEBPACK_IMPORTED_MODULE_6__[\"parser\"].parse(text);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Rendering diagram ' + text); // Fetch the default direction, use TD if none was found\n\n var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id='\".concat(id, \"']\"));\n insertMarkers(diagram); // Layout graph, Create a new directed graph\n\n var graph = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n rankdir: 'RL' // ranksep: '20'\n\n }); // Default to assigning a new object as a label for each new edge.\n\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n var rootDoc = _stateDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getRootDoc();\n renderDoc(rootDoc, diagram, undefined, false);\n var padding = conf.padding;\n var bounds = diagram.node().getBBox();\n var width = bounds.width + padding * 2;\n var height = bounds.height + padding * 2; // zoom in a bit\n\n var svgWidth = width * 1.75;\n Object(_utils__WEBPACK_IMPORTED_MODULE_9__[\"configureSvgSize\"])(diagram, height, svgWidth, conf.useMaxWidth);\n diagram.attr('viewBox', \"\".concat(bounds.x - conf.padding, \" \").concat(bounds.y - conf.padding, \" \") + width + ' ' + height);\n};\n\nvar getLabelWidth = function getLabelWidth(text) {\n return text ? text.length * conf.fontSizeFactor : 1;\n};\n\nvar renderDoc = function renderDoc(doc, diagram, parentId, altBkg) {\n // // Layout graph, Create a new directed graph\n var graph = new graphlib__WEBPACK_IMPORTED_MODULE_2___default.a.Graph({\n compound: true,\n multigraph: true\n });\n var i;\n var edgeFreeDoc = true;\n\n for (i = 0; i < doc.length; i++) {\n if (doc[i].stmt === 'relation') {\n edgeFreeDoc = false;\n break;\n }\n } // Set an object for the graph label\n\n\n if (parentId) graph.setGraph({\n rankdir: 'LR',\n multigraph: true,\n compound: true,\n // acyclicer: 'greedy',\n ranker: 'tight-tree',\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n isMultiGraph: true // ranksep: 5,\n // nodesep: 1\n\n });else {\n graph.setGraph({\n rankdir: 'TB',\n multigraph: true,\n compound: true,\n // isCompound: true,\n // acyclicer: 'greedy',\n // ranker: 'longest-path'\n ranksep: edgeFreeDoc ? 1 : conf.edgeLengthFactor,\n nodeSep: edgeFreeDoc ? 1 : 50,\n ranker: 'tight-tree',\n // ranker: 'network-simplex'\n isMultiGraph: true\n });\n } // Default to assigning a new object as a label for each new edge.\n\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n _stateDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].extract(doc);\n var states = _stateDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getStates();\n var relations = _stateDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getRelations();\n var keys = Object.keys(states);\n var first = true;\n\n for (var _i = 0; _i < keys.length; _i++) {\n var stateDef = states[keys[_i]];\n\n if (parentId) {\n stateDef.parentId = parentId;\n }\n\n var node = void 0;\n\n if (stateDef.doc) {\n var sub = diagram.append('g').attr('id', stateDef.id).attr('class', 'stateGroup');\n node = renderDoc(stateDef.doc, sub, stateDef.id, !altBkg);\n\n if (first) {\n // first = false;\n sub = Object(_shapes__WEBPACK_IMPORTED_MODULE_7__[\"addTitleAndBox\"])(sub, stateDef, altBkg);\n var boxBounds = sub.node().getBBox();\n node.width = boxBounds.width;\n node.height = boxBounds.height + conf.padding / 2;\n transformationLog[stateDef.id] = {\n y: conf.compositTitleSize\n };\n } else {\n // sub = addIdAndBox(sub, stateDef);\n var _boxBounds = sub.node().getBBox();\n\n node.width = _boxBounds.width;\n node.height = _boxBounds.height; // transformationLog[stateDef.id] = { y: conf.compositTitleSize };\n }\n } else {\n node = Object(_shapes__WEBPACK_IMPORTED_MODULE_7__[\"drawState\"])(diagram, stateDef, graph);\n }\n\n if (stateDef.note) {\n // Draw note note\n var noteDef = {\n descriptions: [],\n id: stateDef.id + '-note',\n note: stateDef.note,\n type: 'note'\n };\n var note = Object(_shapes__WEBPACK_IMPORTED_MODULE_7__[\"drawState\"])(diagram, noteDef, graph); // graph.setNode(node.id, node);\n\n if (stateDef.note.position === 'left of') {\n graph.setNode(node.id + '-note', note);\n graph.setNode(node.id, node);\n } else {\n graph.setNode(node.id, node);\n graph.setNode(node.id + '-note', note);\n } // graph.setNode(node.id);\n\n\n graph.setParent(node.id, node.id + '-group');\n graph.setParent(node.id + '-note', node.id + '-group');\n } else {\n // Add nodes to the graph. The first argument is the node id. The second is\n // metadata about the node. In this case we're going to add labels to each of\n // our nodes.\n graph.setNode(node.id, node);\n }\n }\n\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Count=', graph.nodeCount(), graph);\n var cnt = 0;\n relations.forEach(function (relation) {\n cnt++;\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Setting edge', relation);\n graph.setEdge(relation.id1, relation.id2, {\n relation: relation,\n width: getLabelWidth(relation.title),\n height: conf.labelHeight * _common_common__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getRows(relation.title).length,\n labelpos: 'c'\n }, 'id' + cnt);\n });\n dagre__WEBPACK_IMPORTED_MODULE_1___default.a.layout(graph);\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Graph after layout', graph.nodes());\n var svgElem = diagram.node();\n graph.nodes().forEach(function (v) {\n if (typeof v !== 'undefined' && typeof graph.node(v) !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].warn('Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + svgElem.id + ' #' + v).attr('transform', 'translate(' + (graph.node(v).x - graph.node(v).width / 2) + ',' + (graph.node(v).y + (transformationLog[v] ? transformationLog[v].y : 0) - graph.node(v).height / 2) + ' )');\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + svgElem.id + ' #' + v).attr('data-x-shift', graph.node(v).x - graph.node(v).width / 2);\n var dividers = document.querySelectorAll('#' + svgElem.id + ' #' + v + ' .divider');\n dividers.forEach(function (divider) {\n var parent = divider.parentElement;\n var pWidth = 0;\n var pShift = 0;\n\n if (parent) {\n if (parent.parentElement) pWidth = parent.parentElement.getBBox().width;\n pShift = parseInt(parent.getAttribute('data-x-shift'), 10);\n\n if (Number.isNaN(pShift)) {\n pShift = 0;\n }\n }\n\n divider.setAttribute('x1', 0 - pShift + 8);\n divider.setAttribute('x2', pWidth - pShift - 8);\n });\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('No Node ' + v + ': ' + JSON.stringify(graph.node(v)));\n }\n });\n var stateBox = svgElem.getBBox();\n graph.edges().forEach(function (e) {\n if (typeof e !== 'undefined' && typeof graph.edge(e) !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Edge ' + e.v + ' -> ' + e.w + ': ' + JSON.stringify(graph.edge(e)));\n Object(_shapes__WEBPACK_IMPORTED_MODULE_7__[\"drawEdge\"])(diagram, graph.edge(e), graph.edge(e).relation);\n }\n });\n stateBox = svgElem.getBBox();\n var stateInfo = {\n id: parentId ? parentId : 'root',\n label: parentId ? parentId : 'root',\n width: 0,\n height: 0\n };\n stateInfo.width = stateBox.width + 2 * conf.padding;\n stateInfo.height = stateBox.height + 2 * conf.padding;\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Doc rendered', stateInfo, graph);\n return stateInfo;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/state/styles.js\":\n/*!**************************************!*\\\n !*** ./src/diagrams/state/styles.js ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \"g.stateGroup text {\\n fill: \".concat(options.nodeBorder, \";\\n stroke: none;\\n font-size: 10px;\\n}\\ng.stateGroup text {\\n fill: \").concat(options.textColor, \";\\n stroke: none;\\n font-size: 10px;\\n\\n}\\ng.stateGroup .state-title {\\n font-weight: bolder;\\n fill: \").concat(options.labelColor, \";\\n}\\n\\ng.stateGroup rect {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n}\\n\\ng.stateGroup line {\\n stroke: \").concat(options.lineColor, \";\\n stroke-width: 1;\\n}\\n\\n.transition {\\n stroke: \").concat(options.lineColor, \";\\n stroke-width: 1;\\n fill: none;\\n}\\n\\n.stateGroup .composit {\\n fill: \").concat(options.background, \";\\n border-bottom: 1px\\n}\\n\\n.stateGroup .alt-composit {\\n fill: #e0e0e0;\\n border-bottom: 1px\\n}\\n\\n.state-note {\\n stroke: \").concat(options.noteBorderColor, \";\\n fill: \").concat(options.noteBkgColor, \";\\n\\n text {\\n fill: black;\\n stroke: none;\\n font-size: 10px;\\n }\\n}\\n\\n.stateLabel .box {\\n stroke: none;\\n stroke-width: 0;\\n fill: \").concat(options.mainBkg, \";\\n opacity: 0.5;\\n}\\n\\n.edgeLabel .label rect {\\n fill: \").concat(options.tertiaryColor, \";\\n opacity: 0.5;\\n}\\n.edgeLabel .label text {\\n fill: \").concat(options.tertiaryTextColor, \";\\n}\\n.label div .edgeLabel {\\n color: \").concat(options.tertiaryTextColor, \";\\n}\\n\\n.stateLabel text {\\n fill: \").concat(options.labelColor, \";\\n font-size: 10px;\\n font-weight: bold;\\n}\\n\\n.node circle.state-start {\\n fill: \").concat(options.lineColor, \";\\n stroke: black;\\n}\\n.node circle.state-end {\\n fill: \").concat(options.primaryBorderColor, \";\\n stroke: \").concat(options.background, \";\\n stroke-width: 1.5\\n}\\n.end-state-inner {\\n fill: \").concat(options.background, \";\\n // stroke: \").concat(options.background, \";\\n stroke-width: 1.5\\n}\\n\\n.node rect {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n stroke-width: 1px;\\n}\\n#statediagram-barbEnd {\\n fill: \").concat(options.lineColor, \";\\n}\\n\\n.statediagram-cluster rect {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n stroke-width: 1px;\\n}\\n\\n.cluster-label, .nodeLabel {\\n color: \").concat(options.textColor, \";\\n}\\n\\n.statediagram-cluster rect.outer {\\n rx: 5px;\\n ry: 5px;\\n}\\n.statediagram-state .divider {\\n stroke: \").concat(options.nodeBorder, \";\\n}\\n\\n.statediagram-state .title-state {\\n rx: 5px;\\n ry: 5px;\\n}\\n.statediagram-cluster.statediagram-cluster .inner {\\n fill: \").concat(options.background, \";\\n}\\n.statediagram-cluster.statediagram-cluster-alt .inner {\\n fill: #e0e0e0;\\n}\\n\\n.statediagram-cluster .inner {\\n rx:0;\\n ry:0;\\n}\\n\\n.statediagram-state rect.basic {\\n rx: 5px;\\n ry: 5px;\\n}\\n.statediagram-state rect.divider {\\n stroke-dasharray: 10,10;\\n fill: \").concat(options.altBackground ? options.altBackground : '#efefef', \";\\n}\\n\\n.note-edge {\\n stroke-dasharray: 5;\\n}\\n\\n.statediagram-note rect {\\n fill: \").concat(options.noteBkgColor, \";\\n stroke: \").concat(options.noteBorderColor, \";\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0;\\n}\\n.statediagram-note rect {\\n fill: \").concat(options.noteBkgColor, \";\\n stroke: \").concat(options.noteBorderColor, \";\\n stroke-width: 1px;\\n rx: 0;\\n ry: 0;\\n}\\n\\n.statediagram-note text {\\n fill: \").concat(options.noteTextColor, \";\\n}\\n\\n.statediagram-note .nodeLabel {\\n color: \").concat(options.noteTextColor, \";\\n}\\n\\n#dependencyStart, #dependencyEnd {\\n fill: \").concat(options.lineColor, \";\\n stroke: \").concat(options.lineColor, \";\\n stroke-width: 1;\\n}\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/user-journey/journeyDb.js\":\n/*!************************************************!*\\\n !*** ./src/diagrams/user-journey/journeyDb.js ***!\n \\************************************************/\n/*! exports provided: parseDirective, clear, setTitle, getTitle, addSection, getSections, getTasks, addTask, addTaskOrg, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseDirective\", function() { return parseDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clear\", function() { return clear; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTitle\", function() { return setTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTitle\", function() { return getTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addSection\", function() { return addSection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSections\", function() { return getSections; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTasks\", function() { return getTasks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addTask\", function() { return addTask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addTaskOrg\", function() { return addTaskOrg; });\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\nvar title = '';\nvar currentSection = '';\nvar sections = [];\nvar tasks = [];\nvar rawTasks = [];\nvar parseDirective = function parseDirective(statement, context, type) {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_0__[\"default\"].parseDirective(this, statement, context, type);\n};\nvar clear = function clear() {\n sections.length = 0;\n tasks.length = 0;\n currentSection = '';\n title = '';\n rawTasks.length = 0;\n};\nvar setTitle = function setTitle(txt) {\n title = txt;\n};\nvar getTitle = function getTitle() {\n return title;\n};\nvar addSection = function addSection(txt) {\n currentSection = txt;\n sections.push(txt);\n};\nvar getSections = function getSections() {\n return sections;\n};\nvar getTasks = function getTasks() {\n var allItemsProcessed = compileTasks();\n var maxDepth = 100;\n var iterationCount = 0;\n\n while (!allItemsProcessed && iterationCount < maxDepth) {\n allItemsProcessed = compileTasks();\n iterationCount++;\n }\n\n tasks.push.apply(tasks, rawTasks);\n return tasks;\n};\n\nvar updateActors = function updateActors() {\n var tempActors = [];\n tasks.forEach(function (task) {\n if (task.people) {\n tempActors.push.apply(tempActors, _toConsumableArray(task.people));\n }\n });\n var unique = new Set(tempActors);\n return _toConsumableArray(unique).sort();\n};\n\nvar addTask = function addTask(descr, taskData) {\n var pieces = taskData.substr(1).split(':');\n var score = 0;\n var peeps = [];\n\n if (pieces.length === 1) {\n score = Number(pieces[0]);\n peeps = [];\n } else {\n score = Number(pieces[0]);\n peeps = pieces[1].split(',');\n }\n\n var peopleList = peeps.map(function (s) {\n return s.trim();\n });\n var rawTask = {\n section: currentSection,\n type: currentSection,\n people: peopleList,\n task: descr,\n score: score\n };\n rawTasks.push(rawTask);\n};\nvar addTaskOrg = function addTaskOrg(descr) {\n var newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: []\n };\n tasks.push(newTask);\n};\n\nvar compileTasks = function compileTasks() {\n var compileTask = function compileTask(pos) {\n return rawTasks[pos].processed;\n };\n\n var allProcessed = true;\n\n for (var i = 0; i < rawTasks.length; i++) {\n compileTask(i);\n allProcessed = allProcessed && rawTasks[i].processed;\n }\n\n return allProcessed;\n};\n\nvar getActors = function getActors() {\n return updateActors();\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n parseDirective: parseDirective,\n getConfig: function getConfig() {\n return _config__WEBPACK_IMPORTED_MODULE_1__[\"getConfig\"]().journey;\n },\n clear: clear,\n setTitle: setTitle,\n getTitle: getTitle,\n addSection: addSection,\n getSections: getSections,\n getTasks: getTasks,\n addTask: addTask,\n addTaskOrg: addTaskOrg,\n getActors: getActors\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/user-journey/journeyRenderer.js\":\n/*!******************************************************!*\\\n !*** ./src/diagrams/user-journey/journeyRenderer.js ***!\n \\******************************************************/\n/*! exports provided: setConf, draw, bounds, drawTasks, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bounds\", function() { return bounds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawTasks\", function() { return drawTasks; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _parser_journey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser/journey */ \"./src/diagrams/user-journey/parser/journey.jison\");\n/* harmony import */ var _parser_journey__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_parser_journey__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _journeyDb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./journeyDb */ \"./src/diagrams/user-journey/journeyDb.js\");\n/* harmony import */ var _svgDraw__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./svgDraw */ \"./src/diagrams/user-journey/svgDraw.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils */ \"./src/utils.js\");\n\n\n\n\n\n\n_parser_journey__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy = _journeyDb__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\nvar actors = {};\n\nfunction drawActorLegend(diagram) {\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().journey; // Draw the actors\n\n var yPos = 60;\n Object.keys(actors).forEach(function (person) {\n var colour = actors[person];\n var circleData = {\n cx: 20,\n cy: yPos,\n r: 7,\n fill: colour,\n stroke: '#000'\n };\n _svgDraw__WEBPACK_IMPORTED_MODULE_3__[\"default\"].drawCircle(diagram, circleData);\n var labelData = {\n x: 40,\n y: yPos + 7,\n fill: '#666',\n text: person,\n textMargin: conf.boxTextMargin | 5\n };\n _svgDraw__WEBPACK_IMPORTED_MODULE_3__[\"default\"].drawText(diagram, labelData);\n yPos += 20;\n });\n}\n\nvar conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().journey;\nvar LEFT_MARGIN = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().journey.leftMargin;\nvar draw = function draw(text, id) {\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().journey;\n _parser_journey__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.clear();\n _parser_journey__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].parse(text + '\\n');\n bounds.init();\n var diagram = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + id);\n diagram.attr('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n _svgDraw__WEBPACK_IMPORTED_MODULE_3__[\"default\"].initGraphics(diagram);\n var tasks = _parser_journey__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getTasks();\n var title = _parser_journey__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getTitle();\n var actorNames = _parser_journey__WEBPACK_IMPORTED_MODULE_1__[\"parser\"].yy.getActors();\n\n for (var member in actors) {\n delete actors[member];\n }\n\n var actorPos = 0;\n actorNames.forEach(function (actorName) {\n actors[actorName] = conf.actorColours[actorPos % conf.actorColours.length];\n actorPos++;\n });\n drawActorLegend(diagram);\n bounds.insert(0, 0, LEFT_MARGIN, Object.keys(actors).length * 50);\n console.log(bounds);\n drawTasks(diagram, tasks, 0);\n var box = bounds.getBounds();\n\n if (title) {\n diagram.append('text').text(title).attr('x', LEFT_MARGIN).attr('font-size', '4ex').attr('font-weight', 'bold').attr('y', 25);\n }\n\n var height = box.stopy - box.starty + 2 * conf.diagramMarginY;\n var width = LEFT_MARGIN + box.stopx + 2 * conf.diagramMarginX;\n Object(_utils__WEBPACK_IMPORTED_MODULE_5__[\"configureSvgSize\"])(diagram, height, width, conf.useMaxWidth); // Draw activity line\n\n diagram.append('line').attr('x1', LEFT_MARGIN).attr('y1', conf.height * 4) // One section head + one task + margins\n .attr('x2', width - LEFT_MARGIN - 4) // Subtract stroke width so arrow point is retained\n .attr('y2', conf.height * 4).attr('stroke-width', 4).attr('stroke', 'black').attr('marker-end', 'url(#arrowhead)');\n var extraVertForTitle = title ? 70 : 0;\n diagram.attr('viewBox', \"\".concat(box.startx, \" -25 \").concat(width, \" \").concat(height + extraVertForTitle));\n diagram.attr('preserveAspectRatio', 'xMinYMin meet');\n diagram.attr('height', height + extraVertForTitle + 25);\n};\nvar bounds = {\n data: {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n },\n verticalPos: 0,\n sequenceItems: [],\n init: function init() {\n this.sequenceItems = [];\n this.data = {\n startx: undefined,\n stopx: undefined,\n starty: undefined,\n stopy: undefined\n };\n this.verticalPos = 0;\n },\n updateVal: function updateVal(obj, key, val, fun) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = val;\n } else {\n obj[key] = fun(val, obj[key]);\n }\n },\n updateBounds: function updateBounds(startx, starty, stopx, stopy) {\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().journey;\n\n var _self = this;\n\n var cnt = 0;\n\n function updateFn(type) {\n return function updateItemBounds(item) {\n cnt++; // The loop sequenceItems is a stack so the biggest margins in the beginning of the sequenceItems\n\n var n = _self.sequenceItems.length - cnt + 1;\n\n _self.updateVal(item, 'starty', starty - n * conf.boxMargin, Math.min);\n\n _self.updateVal(item, 'stopy', stopy + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'startx', startx - n * conf.boxMargin, Math.min);\n\n _self.updateVal(bounds.data, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n if (!(type === 'activation')) {\n _self.updateVal(item, 'startx', startx - n * conf.boxMargin, Math.min);\n\n _self.updateVal(item, 'stopx', stopx + n * conf.boxMargin, Math.max);\n\n _self.updateVal(bounds.data, 'starty', starty - n * conf.boxMargin, Math.min);\n\n _self.updateVal(bounds.data, 'stopy', stopy + n * conf.boxMargin, Math.max);\n }\n };\n }\n\n this.sequenceItems.forEach(updateFn());\n },\n insert: function insert(startx, starty, stopx, stopy) {\n var _startx = Math.min(startx, stopx);\n\n var _stopx = Math.max(startx, stopx);\n\n var _starty = Math.min(starty, stopy);\n\n var _stopy = Math.max(starty, stopy);\n\n this.updateVal(bounds.data, 'startx', _startx, Math.min);\n this.updateVal(bounds.data, 'starty', _starty, Math.min);\n this.updateVal(bounds.data, 'stopx', _stopx, Math.max);\n this.updateVal(bounds.data, 'stopy', _stopy, Math.max);\n this.updateBounds(_startx, _starty, _stopx, _stopy);\n },\n bumpVerticalPos: function bumpVerticalPos(bump) {\n this.verticalPos = this.verticalPos + bump;\n this.data.stopy = this.verticalPos;\n },\n getVerticalPos: function getVerticalPos() {\n return this.verticalPos;\n },\n getBounds: function getBounds() {\n return this.data;\n }\n};\nvar fills = conf.sectionFills;\nvar textColours = conf.sectionColours;\nvar drawTasks = function drawTasks(diagram, tasks, verticalPos) {\n var conf = Object(_config__WEBPACK_IMPORTED_MODULE_4__[\"getConfig\"])().journey;\n var lastSection = '';\n var sectionVHeight = conf.height * 2 + conf.diagramMarginY;\n var taskPos = verticalPos + sectionVHeight;\n var sectionNumber = 0;\n var fill = '#CCC';\n var colour = 'black';\n var num = 0; // Draw the tasks\n\n for (var i = 0; i < tasks.length; i++) {\n var task = tasks[i];\n\n if (lastSection !== task.section) {\n fill = fills[sectionNumber % fills.length];\n num = sectionNumber % fills.length;\n colour = textColours[sectionNumber % textColours.length];\n var section = {\n x: i * conf.taskMargin + i * conf.width + LEFT_MARGIN,\n y: 50,\n text: task.section,\n fill: fill,\n num: num,\n colour: colour\n };\n _svgDraw__WEBPACK_IMPORTED_MODULE_3__[\"default\"].drawSection(diagram, section, conf);\n lastSection = task.section;\n sectionNumber++;\n } // Collect the actors involved in the task\n\n\n var taskActors = task.people.reduce(function (acc, actorName) {\n if (actors[actorName]) {\n acc[actorName] = actors[actorName];\n }\n\n return acc;\n }, {}); // Add some rendering data to the object\n\n task.x = i * conf.taskMargin + i * conf.width + LEFT_MARGIN;\n task.y = taskPos;\n task.width = conf.diagramMarginX;\n task.height = conf.diagramMarginY;\n task.colour = colour;\n task.fill = fill;\n task.num = num;\n task.actors = taskActors; // Draw the box with the attached line\n\n _svgDraw__WEBPACK_IMPORTED_MODULE_3__[\"default\"].drawTask(diagram, task, conf);\n bounds.insert(task.x, task.y, task.x + task.width + conf.taskMargin, 300 + 5 * 30); // stopy is the length of the descenders.\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/diagrams/user-journey/parser/journey.jison\":\n/*!********************************************************!*\\\n !*** ./src/diagrams/user-journey/parser/journey.jison ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, module) {/* parser generated by jison 0.4.18 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,2],$V1=[1,5],$V2=[6,9,11,17,18,19,21],$V3=[1,15],$V4=[1,16],$V5=[1,17],$V6=[1,21],$V7=[4,6,9,11,17,18,19,21];\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"start\":3,\"journey\":4,\"document\":5,\"EOF\":6,\"directive\":7,\"line\":8,\"SPACE\":9,\"statement\":10,\"NEWLINE\":11,\"openDirective\":12,\"typeDirective\":13,\"closeDirective\":14,\":\":15,\"argDirective\":16,\"title\":17,\"section\":18,\"taskName\":19,\"taskData\":20,\"open_directive\":21,\"type_directive\":22,\"arg_directive\":23,\"close_directive\":24,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"journey\",6:\"EOF\",9:\"SPACE\",11:\"NEWLINE\",15:\":\",17:\"title\",18:\"section\",19:\"taskName\",20:\"taskData\",21:\"open_directive\",22:\"type_directive\",23:\"arg_directive\",24:\"close_directive\"},\nproductions_: [0,[3,3],[3,2],[5,0],[5,2],[8,2],[8,1],[8,1],[8,1],[7,4],[7,6],[10,1],[10,1],[10,2],[10,1],[12,1],[13,1],[16,1],[14,1]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n return $$[$0-1]; \nbreak;\ncase 3:\n this.$ = [] \nbreak;\ncase 4:\n$$[$0-1].push($$[$0]);this.$ = $$[$0-1]\nbreak;\ncase 5: case 6:\n this.$ = $$[$0] \nbreak;\ncase 7: case 8:\n this.$=[];\nbreak;\ncase 11:\nyy.setTitle($$[$0].substr(6));this.$=$$[$0].substr(6);\nbreak;\ncase 12:\nyy.addSection($$[$0].substr(8));this.$=$$[$0].substr(8);\nbreak;\ncase 13:\nyy.addTask($$[$0-1], $$[$0]);this.$='task';\nbreak;\ncase 15:\n yy.parseDirective('%%{', 'open_directive'); \nbreak;\ncase 16:\n yy.parseDirective($$[$0], 'type_directive'); \nbreak;\ncase 17:\n $$[$0] = $$[$0].trim().replace(/'/g, '\"'); yy.parseDirective($$[$0], 'arg_directive'); \nbreak;\ncase 18:\n yy.parseDirective('}%%', 'close_directive', 'journey'); \nbreak;\n}\n},\ntable: [{3:1,4:$V0,7:3,12:4,21:$V1},{1:[3]},o($V2,[2,3],{5:6}),{3:7,4:$V0,7:3,12:4,21:$V1},{13:8,22:[1,9]},{22:[2,15]},{6:[1,10],7:18,8:11,9:[1,12],10:13,11:[1,14],12:4,17:$V3,18:$V4,19:$V5,21:$V1},{1:[2,2]},{14:19,15:[1,20],24:$V6},o([15,24],[2,16]),o($V2,[2,8],{1:[2,1]}),o($V2,[2,4]),{7:18,10:22,12:4,17:$V3,18:$V4,19:$V5,21:$V1},o($V2,[2,6]),o($V2,[2,7]),o($V2,[2,11]),o($V2,[2,12]),{20:[1,23]},o($V2,[2,14]),{11:[1,24]},{16:25,23:[1,26]},{11:[2,18]},o($V2,[2,5]),o($V2,[2,13]),o($V7,[2,9]),{14:27,24:$V6},{24:[2,17]},{11:[1,28]},o($V7,[2,10])],\ndefaultActions: {5:[2,15],7:[2,2],21:[2,18],26:[2,17]},\nparseError: function parseError (str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n var error = new Error(str);\n error.hash = hash;\n throw error;\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n function lex() {\n var token;\n token = tstack.pop() || lexer.lex() || EOF;\n if (typeof token !== 'number') {\n if (token instanceof Array) {\n tstack = token;\n token = tstack.pop();\n }\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function(match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex () {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin (condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState () {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules () {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState (n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState (condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {\"case-insensitive\":true},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0: this.begin('open_directive'); return 21; \nbreak;\ncase 1: this.begin('type_directive'); return 22; \nbreak;\ncase 2: this.popState(); this.begin('arg_directive'); return 15; \nbreak;\ncase 3: this.popState(); this.popState(); return 24; \nbreak;\ncase 4:return 23;\nbreak;\ncase 5:/* skip comments */\nbreak;\ncase 6:/* skip comments */\nbreak;\ncase 7:return 11;\nbreak;\ncase 8:/* skip whitespace */\nbreak;\ncase 9:/* skip comments */\nbreak;\ncase 10:return 4;\nbreak;\ncase 11:return 17;\nbreak;\ncase 12:return 18;\nbreak;\ncase 13:return 19;\nbreak;\ncase 14:return 20;\nbreak;\ncase 15:return 15;\nbreak;\ncase 16:return 6;\nbreak;\ncase 17:return 'INVALID';\nbreak;\n}\n},\nrules: [/^(?:%%\\{)/i,/^(?:((?:(?!\\}%%)[^:.])*))/i,/^(?::)/i,/^(?:\\}%%)/i,/^(?:((?:(?!\\}%%).|\\n)*))/i,/^(?:%(?!\\{)[^\\n]*)/i,/^(?:[^\\}]%%[^\\n]*)/i,/^(?:[\\n]+)/i,/^(?:\\s+)/i,/^(?:#[^\\n]*)/i,/^(?:journey\\b)/i,/^(?:title\\s[^#\\n;]+)/i,/^(?:section\\s[^#:\\n;]+)/i,/^(?:[^#:\\n;]+)/i,/^(?::[^#\\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],\nconditions: {\"open_directive\":{\"rules\":[1],\"inclusive\":false},\"type_directive\":{\"rules\":[2,3],\"inclusive\":false},\"arg_directive\":{\"rules\":[3,4],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,5,6,7,8,9,10,11,12,13,14,15,16,17],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (true) {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\nexports.main = function commonjsMain (args) {\n if (!args[1]) {\n console.log('Usage: '+args[0]+' FILE');\n process.exit(1);\n }\n var source = __webpack_require__(/*! fs */ \"./node_modules/node-libs-browser/mock/empty.js\").readFileSync(__webpack_require__(/*! path */ \"./node_modules/path-browserify/index.js\").normalize(args[1]), \"utf8\");\n return exports.parser.parse(source);\n};\nif ( true && __webpack_require__.c[__webpack_require__.s] === module) {\n exports.main(process.argv.slice(1));\n}\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n/***/ }),\n\n/***/ \"./src/diagrams/user-journey/styles.js\":\n/*!*********************************************!*\\\n !*** ./src/diagrams/user-journey/styles.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getStyles = function getStyles(options) {\n return \".label {\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n color: \".concat(options.textColor, \";\\n }\\n .mouth {\\n stroke: #666;\\n }\\n\\n line {\\n stroke: \").concat(options.textColor, \"\\n }\\n\\n .legend {\\n fill: \").concat(options.textColor, \";\\n }\\n\\n .label text {\\n fill: #333;\\n }\\n .label {\\n color: \").concat(options.textColor, \"\\n }\\n\\n .face {\\n fill: #FFF8DC;\\n stroke: #999;\\n }\\n\\n .node rect,\\n .node circle,\\n .node ellipse,\\n .node polygon,\\n .node path {\\n fill: \").concat(options.mainBkg, \";\\n stroke: \").concat(options.nodeBorder, \";\\n stroke-width: 1px;\\n }\\n\\n .node .label {\\n text-align: center;\\n }\\n .node.clickable {\\n cursor: pointer;\\n }\\n\\n .arrowheadPath {\\n fill: \").concat(options.arrowheadColor, \";\\n }\\n\\n .edgePath .path {\\n stroke: \").concat(options.lineColor, \";\\n stroke-width: 1.5px;\\n }\\n\\n .flowchart-link {\\n stroke: \").concat(options.lineColor, \";\\n fill: none;\\n }\\n\\n .edgeLabel {\\n background-color: \").concat(options.edgeLabelBackground, \";\\n rect {\\n opacity: 0.5;\\n }\\n text-align: center;\\n }\\n\\n .cluster rect {\\n }\\n\\n .cluster text {\\n fill: \").concat(options.titleColor, \";\\n }\\n\\n div.mermaidTooltip {\\n position: absolute;\\n text-align: center;\\n max-width: 200px;\\n padding: 2px;\\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\\n font-family: var(--mermaid-font-family);\\n font-size: 12px;\\n background: \").concat(options.tertiaryColor, \";\\n border: 1px solid \").concat(options.border2, \";\\n border-radius: 2px;\\n pointer-events: none;\\n z-index: 100;\\n }\\n\\n .task-type-0, .section-type-0 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType0) : '', \";\\n }\\n .task-type-1, .section-type-1 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType1) : '', \";\\n }\\n .task-type-2, .section-type-2 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType2) : '', \";\\n }\\n .task-type-3, .section-type-3 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType3) : '', \";\\n }\\n .task-type-4, .section-type-4 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType4) : '', \";\\n }\\n .task-type-5, .section-type-5 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType5) : '', \";\\n }\\n .task-type-6, .section-type-6 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType6) : '', \";\\n }\\n .task-type-7, .section-type-7 {\\n \").concat(options.fillType0 ? \"fill: \".concat(options.fillType7) : '', \";\\n }\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/diagrams/user-journey/svgDraw.js\":\n/*!**********************************************!*\\\n !*** ./src/diagrams/user-journey/svgDraw.js ***!\n \\**********************************************/\n/*! exports provided: drawRect, drawFace, drawCircle, drawText, drawLabel, drawSection, drawTask, drawBackgroundRect, getTextObj, getNoteRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawRect\", function() { return drawRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawFace\", function() { return drawFace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawCircle\", function() { return drawCircle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawText\", function() { return drawText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawLabel\", function() { return drawLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawSection\", function() { return drawSection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawTask\", function() { return drawTask; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawBackgroundRect\", function() { return drawBackgroundRect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextObj\", function() { return getTextObj; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNoteRect\", function() { return getNoteRect; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n\nvar drawRect = function drawRect(elem, rectData) {\n var rectElem = elem.append('rect');\n rectElem.attr('x', rectData.x);\n rectElem.attr('y', rectData.y);\n rectElem.attr('fill', rectData.fill);\n rectElem.attr('stroke', rectData.stroke);\n rectElem.attr('width', rectData.width);\n rectElem.attr('height', rectData.height);\n rectElem.attr('rx', rectData.rx);\n rectElem.attr('ry', rectData.ry);\n\n if (typeof rectData.class !== 'undefined') {\n rectElem.attr('class', rectData.class);\n }\n\n return rectElem;\n};\nvar drawFace = function drawFace(element, faceData) {\n var radius = 15;\n var circleElement = element.append('circle').attr('cx', faceData.cx).attr('cy', faceData.cy).attr('class', 'face').attr('r', radius).attr('stroke-width', 2).attr('overflow', 'visible');\n var face = element.append('g'); //left eye\n\n face.append('circle').attr('cx', faceData.cx - radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666'); //right eye\n\n face.append('circle').attr('cx', faceData.cx + radius / 3).attr('cy', faceData.cy - radius / 3).attr('r', 1.5).attr('stroke-width', 2).attr('fill', '#666').attr('stroke', '#666');\n\n function smile(face) {\n var arc = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"arc\"])().startAngle(Math.PI / 2).endAngle(3 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth\n\n face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 2) + ')');\n }\n\n function sad(face) {\n var arc = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"arc\"])().startAngle(3 * Math.PI / 2).endAngle(5 * (Math.PI / 2)).innerRadius(radius / 2).outerRadius(radius / 2.2); //mouth\n\n face.append('path').attr('class', 'mouth').attr('d', arc).attr('transform', 'translate(' + faceData.cx + ',' + (faceData.cy + 7) + ')');\n }\n\n function ambivalent(face) {\n face.append('line').attr('class', 'mouth').attr('stroke', 2).attr('x1', faceData.cx - 5).attr('y1', faceData.cy + 7).attr('x2', faceData.cx + 5).attr('y2', faceData.cy + 7).attr('class', 'mouth').attr('stroke-width', '1px').attr('stroke', '#666');\n }\n\n if (faceData.score > 3) {\n smile(face);\n } else if (faceData.score < 3) {\n sad(face);\n } else {\n ambivalent(face);\n }\n\n return circleElement;\n};\nvar drawCircle = function drawCircle(element, circleData) {\n var circleElement = element.append('circle');\n circleElement.attr('cx', circleData.cx);\n circleElement.attr('cy', circleData.cy);\n circleElement.attr('fill', circleData.fill);\n circleElement.attr('stroke', circleData.stroke);\n circleElement.attr('r', circleData.r);\n\n if (typeof circleElement.class !== 'undefined') {\n circleElement.attr('class', circleElement.class);\n }\n\n if (typeof circleData.title !== 'undefined') {\n circleElement.append('title').text(circleData.title);\n }\n\n return circleElement;\n};\nvar drawText = function drawText(elem, textData) {\n // Remove and ignore br:s\n var nText = textData.text.replace(/<br\\s*\\/?>/gi, ' ');\n var textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.attr('class', 'legend');\n textElem.style('text-anchor', textData.anchor);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n var span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.text(nText);\n return textElem;\n};\nvar drawLabel = function drawLabel(elem, txtObject) {\n function genPoints(x, y, width, height, cut) {\n return x + ',' + y + ' ' + (x + width) + ',' + y + ' ' + (x + width) + ',' + (y + height - cut) + ' ' + (x + width - cut * 1.2) + ',' + (y + height) + ' ' + x + ',' + (y + height);\n }\n\n var polygon = elem.append('polygon');\n polygon.attr('points', genPoints(txtObject.x, txtObject.y, 50, 20, 7));\n polygon.attr('class', 'labelBox');\n txtObject.y = txtObject.y + txtObject.labelMargin;\n txtObject.x = txtObject.x + 0.5 * txtObject.labelMargin;\n drawText(elem, txtObject);\n};\nvar drawSection = function drawSection(elem, section, conf) {\n var g = elem.append('g');\n var rect = getNoteRect();\n rect.x = section.x;\n rect.y = section.y;\n rect.fill = section.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'journey-section section-type-' + section.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n\n _drawTextCandidateFunc(conf)(section.text, g, rect.x, rect.y, rect.width, rect.height, {\n class: 'journey-section section-type-' + section.num\n }, conf, section.colour);\n};\nvar taskCount = -1;\n/**\n * Draws an actor in the diagram with the attaced line\n * @param elem The HTML element\n * @param task The task to render\n * @param conf The global configuration\n */\n\nvar drawTask = function drawTask(elem, task, conf) {\n var center = task.x + conf.width / 2;\n var g = elem.append('g');\n taskCount++;\n var maxHeight = 300 + 5 * 30;\n g.append('line').attr('id', 'task' + taskCount).attr('x1', center).attr('y1', task.y).attr('x2', center).attr('y2', maxHeight).attr('class', 'task-line').attr('stroke-width', '1px').attr('stroke-dasharray', '4 2').attr('stroke', '#666');\n drawFace(g, {\n cx: center,\n cy: 300 + (5 - task.score) * 30,\n score: task.score\n });\n var rect = getNoteRect();\n rect.x = task.x;\n rect.y = task.y;\n rect.fill = task.fill;\n rect.width = conf.width;\n rect.height = conf.height;\n rect.class = 'task task-type-' + task.num;\n rect.rx = 3;\n rect.ry = 3;\n drawRect(g, rect);\n var xPos = task.x + 14;\n task.people.forEach(function (person) {\n var colour = task.actors[person];\n var circle = {\n cx: xPos,\n cy: task.y,\n r: 7,\n fill: colour,\n stroke: '#000',\n title: person\n };\n drawCircle(g, circle);\n xPos += 10;\n });\n\n _drawTextCandidateFunc(conf)(task.task, g, rect.x, rect.y, rect.width, rect.height, {\n class: 'task'\n }, conf, task.colour);\n};\n/**\n * Draws a background rectangle\n * @param elem The html element\n * @param bounds The bounds of the drawing\n */\n\nvar drawBackgroundRect = function drawBackgroundRect(elem, bounds) {\n var rectElem = drawRect(elem, {\n x: bounds.startx,\n y: bounds.starty,\n width: bounds.stopx - bounds.startx,\n height: bounds.stopy - bounds.starty,\n fill: bounds.fill,\n class: 'rect'\n });\n rectElem.lower();\n};\nvar getTextObj = function getTextObj() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n 'text-anchor': 'start',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0\n };\n};\nvar getNoteRect = function getNoteRect() {\n return {\n x: 0,\n y: 0,\n width: 100,\n anchor: 'start',\n height: 100,\n rx: 0,\n ry: 0\n };\n};\n\nvar _drawTextCandidateFunc = function () {\n function byText(content, g, x, y, width, height, textAttrs, colour) {\n var text = g.append('text').attr('x', x + width / 2).attr('y', y + height / 2 + 5).style('font-color', colour).style('text-anchor', 'middle').text(content);\n\n _setTextAttrs(text, textAttrs);\n }\n\n function byTspan(content, g, x, y, width, height, textAttrs, conf, colour) {\n var taskFontSize = conf.taskFontSize,\n taskFontFamily = conf.taskFontFamily;\n var lines = content.split(/<br\\s*\\/?>/gi);\n\n for (var i = 0; i < lines.length; i++) {\n var dy = i * taskFontSize - taskFontSize * (lines.length - 1) / 2;\n var text = g.append('text').attr('x', x + width / 2).attr('y', y).attr('fill', colour).style('text-anchor', 'middle').style('font-size', taskFontSize).style('font-family', taskFontFamily);\n text.append('tspan').attr('x', x + width / 2).attr('dy', dy).text(lines[i]);\n text.attr('y', y + height / 2.0).attr('dominant-baseline', 'central').attr('alignment-baseline', 'central');\n\n _setTextAttrs(text, textAttrs);\n }\n }\n\n function byFo(content, g, x, y, width, height, textAttrs, conf) {\n var body = g.append('switch');\n var f = body.append('foreignObject').attr('x', x).attr('y', y).attr('width', width).attr('height', height).attr('position', 'fixed');\n var text = f.append('div').style('display', 'table').style('height', '100%').style('width', '100%');\n text.append('div').attr('class', 'label').style('display', 'table-cell').style('text-align', 'center').style('vertical-align', 'middle') // .style('color', colour)\n .text(content);\n byTspan(content, body, x, y, width, height, textAttrs, conf);\n\n _setTextAttrs(text, textAttrs);\n }\n\n function _setTextAttrs(toText, fromTextAttrsDict) {\n for (var key in fromTextAttrsDict) {\n if (key in fromTextAttrsDict) {\n // eslint-disable-line\n // noinspection JSUnfilteredForInLoop\n toText.attr(key, fromTextAttrsDict[key]);\n }\n }\n }\n\n return function (conf) {\n return conf.textPlacement === 'fo' ? byFo : conf.textPlacement === 'old' ? byText : byTspan;\n };\n}();\n\nvar initGraphics = function initGraphics(graphics) {\n graphics.append('defs').append('marker').attr('id', 'arrowhead').attr('refX', 5).attr('refY', 2).attr('markerWidth', 6).attr('markerHeight', 4).attr('orient', 'auto').append('path').attr('d', 'M 0,0 V 4 L6,2 Z'); // this is actual shape for arrowhead\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n drawRect: drawRect,\n drawCircle: drawCircle,\n drawSection: drawSection,\n drawText: drawText,\n drawLabel: drawLabel,\n drawTask: drawTask,\n drawBackgroundRect: drawBackgroundRect,\n getTextObj: getTextObj,\n getNoteRect: getNoteRect,\n initGraphics: initGraphics\n});\n\n/***/ }),\n\n/***/ \"./src/errorRenderer.js\":\n/*!******************************!*\\\n !*** ./src/errorRenderer.js ***!\n \\******************************/\n/*! exports provided: setConf, draw, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setConf\", function() { return setConf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"draw\", function() { return draw; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/logger.js\");\n/**\n * Created by knut on 14-12-11.\n */\n\n\nvar conf = {};\nvar setConf = function setConf(cnf) {\n var keys = Object.keys(cnf);\n keys.forEach(function (key) {\n conf[key] = cnf[key];\n });\n};\n/**\n * Draws a an info picture in the tag with id: id based on the graph definition in text.\n * @param text\n * @param id\n */\n\nvar draw = function draw(id, ver) {\n try {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Renering svg for syntax error\\n');\n var svg = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#' + id);\n var g = svg.append('g');\n g.append('path').attr('class', 'error-icon').attr('d', 'm411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z');\n g.append('path').attr('class', 'error-icon').attr('d', 'm459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z');\n g.append('path').attr('class', 'error-icon').attr('d', 'm340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z');\n g.append('path').attr('class', 'error-icon').attr('d', 'm400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z');\n g.append('path').attr('class', 'error-icon').attr('d', 'm496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z');\n g.append('path').attr('class', 'error-icon').attr('d', 'm436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text').attr('x', 1240).attr('y', 250).attr('font-size', '150px').style('text-anchor', 'middle').text('Syntax error in graph');\n g.append('text') // text label for the x axis\n .attr('class', 'error-text').attr('x', 1050).attr('y', 400).attr('font-size', '100px').style('text-anchor', 'middle').text('mermaid version ' + ver);\n svg.attr('height', 100);\n svg.attr('width', 400);\n svg.attr('viewBox', '768 0 512 512');\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].error('Error while rendering info diagram');\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].error(e.message);\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setConf: setConf,\n draw: draw\n});\n\n/***/ }),\n\n/***/ \"./src/logger.js\":\n/*!***********************!*\\\n !*** ./src/logger.js ***!\n \\***********************/\n/*! exports provided: LEVELS, log, setLogLevel */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LEVELS\", function() { return LEVELS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"log\", function() { return log; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLogLevel\", function() { return setLogLevel; });\n/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment-mini */ \"moment-mini\");\n/* harmony import */ var moment_mini__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment_mini__WEBPACK_IMPORTED_MODULE_0__);\n\nvar LEVELS = {\n debug: 1,\n info: 2,\n warn: 3,\n error: 4,\n fatal: 5\n};\nvar log = {\n debug: function debug() {},\n info: function info() {},\n warn: function warn() {},\n error: function error() {},\n fatal: function fatal() {}\n};\nvar setLogLevel = function setLogLevel() {\n var level = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'fatal';\n\n if (isNaN(level)) {\n level = level.toLowerCase();\n\n if (LEVELS[level] !== undefined) {\n level = LEVELS[level];\n }\n }\n\n log.trace = function () {};\n\n log.debug = function () {};\n\n log.info = function () {};\n\n log.warn = function () {};\n\n log.error = function () {};\n\n log.fatal = function () {};\n\n if (level <= LEVELS.fatal) {\n log.fatal = console.error ? console.error.bind(console, format('FATAL'), 'color: orange') : console.log.bind(console, '\\x1b[35m', format('FATAL'));\n }\n\n if (level <= LEVELS.error) {\n log.error = console.error ? console.error.bind(console, format('ERROR'), 'color: orange') : console.log.bind(console, '\\x1b[31m', format('ERROR'));\n }\n\n if (level <= LEVELS.warn) {\n log.warn = console.warn ? console.warn.bind(console, format('WARN'), 'color: orange') : console.log.bind(console, \"\\x1B[33m\", format('WARN'));\n }\n\n if (level <= LEVELS.info) {\n log.info = console.info // ? console.info.bind(console, '\\x1b[34m', format('INFO'), 'color: blue')\n ? console.info.bind(console, format('INFO'), 'color: lightblue') : console.log.bind(console, '\\x1b[34m', format('INFO'));\n }\n\n if (level <= LEVELS.debug) {\n log.debug = console.debug ? console.debug.bind(console, format('DEBUG'), 'color: lightgreen') : console.log.bind(console, '\\x1b[32m', format('DEBUG'));\n }\n};\n\nvar format = function format(level) {\n var time = moment_mini__WEBPACK_IMPORTED_MODULE_0___default()().format('ss.SSS');\n return \"%c\".concat(time, \" : \").concat(level, \" : \");\n};\n\n/***/ }),\n\n/***/ \"./src/mermaid.js\":\n/*!************************!*\\\n !*** ./src/mermaid.js ***!\n \\************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var entity_decode_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! entity-decode/browser */ \"entity-decode/browser\");\n/* harmony import */ var entity_decode_browser__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(entity_decode_browser__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/logger.js\");\n/* harmony import */ var _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mermaidAPI */ \"./src/mermaidAPI.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\n/**\n * Web page integration module for the mermaid framework. It uses the mermaidAPI for mermaid functionality and to render\n * the diagrams to svg code.\n */\n// import { decode } from 'he';\n\n\n\n\n/**\n * ## init\n * Function that goes through the document to find the chart definitions in there and render them.\n *\n * The function tags the processed attributes with the attribute data-processed and ignores found elements with the\n * attribute already set. This way the init function can be triggered several times.\n *\n * Optionally, `init` can accept in the second argument one of the following:\n * - a DOM Node\n * - an array of DOM nodes (as would come from a jQuery selector)\n * - a W3C selector, a la `.mermaid`\n *\n * ```mermaid\n * graph LR;\n * a(Find elements)-->b{Processed}\n * b-->|Yes|c(Leave element)\n * b-->|No |d(Transform)\n * ```\n * Renders the mermaid diagrams\n * @param nodes a css selector or an array of nodes\n */\n\nvar init = function init() {\n var _this = this;\n\n var conf = _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getConfig(); // console.log('Starting rendering diagrams (init) - mermaid.init', conf);\n\n var nodes;\n\n if (arguments.length >= 2) {\n /*! sequence config was passed as #1 */\n if (typeof arguments[0] !== 'undefined') {\n mermaid.sequenceConfig = arguments[0];\n }\n\n nodes = arguments[1];\n } else {\n nodes = arguments[0];\n } // if last argument is a function this is the callback function\n\n\n var callback;\n\n if (typeof arguments[arguments.length - 1] === 'function') {\n callback = arguments[arguments.length - 1];\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Callback function found');\n } else {\n if (typeof conf.mermaid !== 'undefined') {\n if (typeof conf.mermaid.callback === 'function') {\n callback = conf.mermaid.callback;\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Callback function found');\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('No Callback function found');\n }\n }\n }\n\n nodes = nodes === undefined ? document.querySelectorAll('.mermaid') : typeof nodes === 'string' ? document.querySelectorAll(nodes) : nodes instanceof window.Node ? [nodes] : nodes; // Last case - sequence config was passed pick next\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Start On Load before: ' + mermaid.startOnLoad);\n\n if (typeof mermaid.startOnLoad !== 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Start On Load inner: ' + mermaid.startOnLoad);\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].updateSiteConfig({\n startOnLoad: mermaid.startOnLoad\n });\n }\n\n if (typeof mermaid.ganttConfig !== 'undefined') {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].updateSiteConfig({\n gantt: mermaid.ganttConfig\n });\n }\n\n var idGeneratior = new _utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].initIdGeneratior(conf.deterministicIds, conf.deterministicIDSeed);\n var txt;\n\n var _loop = function _loop(i) {\n var element = nodes[i];\n /*! Check if previously processed */\n\n if (!element.getAttribute('data-processed')) {\n element.setAttribute('data-processed', true);\n } else {\n return \"continue\";\n }\n\n var id = \"mermaid-\".concat(idGeneratior.next()); // Fetch the graph definition including tags\n\n txt = element.innerHTML; // transforms the html to pure text\n\n txt = entity_decode_browser__WEBPACK_IMPORTED_MODULE_0___default()(txt).trim().replace(/<br\\s*\\/?>/gi, '<br/>');\n var init = _utils__WEBPACK_IMPORTED_MODULE_3__[\"default\"].detectInit(txt);\n\n if (init) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('Detected early reinit: ', init);\n }\n\n try {\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].render(id, txt, function (svgCode, bindFunctions) {\n element.innerHTML = svgCode;\n\n if (typeof callback !== 'undefined') {\n callback(id);\n }\n\n if (bindFunctions) bindFunctions(element);\n }, element);\n } catch (e) {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].warn('Syntax Error rendering');\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].warn(e);\n\n if (_this.parseError) {\n _this.parseError(e);\n }\n }\n };\n\n for (var i = 0; i < nodes.length; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n};\n\nvar initialize = function initialize(config) {\n // mermaidAPI.reset();\n if (typeof config.mermaid !== 'undefined') {\n if (typeof config.mermaid.startOnLoad !== 'undefined') {\n mermaid.startOnLoad = config.mermaid.startOnLoad;\n }\n\n if (typeof config.mermaid.htmlLabels !== 'undefined') {\n mermaid.htmlLabels = config.mermaid.htmlLabels;\n }\n }\n\n _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].initialize(config); // mermaidAPI.reset();\n};\n/**\n * ##contentLoaded\n * Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and\n * calls init for rendering the mermaid diagrams on the page.\n */\n\n\nvar contentLoaded = function contentLoaded() {\n var config;\n\n if (mermaid.startOnLoad) {\n // No config found, do check API config\n config = _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getConfig();\n\n if (config.startOnLoad) {\n mermaid.init();\n }\n } else {\n if (typeof mermaid.startOnLoad === 'undefined') {\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"log\"].debug('In start, no config');\n config = _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getConfig();\n\n if (config.startOnLoad) {\n mermaid.init();\n }\n }\n }\n};\n\nif (typeof document !== 'undefined') {\n /*!\n * Wait for document loaded before starting the execution\n */\n window.addEventListener('load', function () {\n contentLoaded();\n }, false);\n}\n\nvar mermaid = {\n startOnLoad: true,\n htmlLabels: true,\n mermaidAPI: _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n parse: _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].parse,\n render: _mermaidAPI__WEBPACK_IMPORTED_MODULE_2__[\"default\"].render,\n init: init,\n initialize: initialize,\n contentLoaded: contentLoaded\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (mermaid);\n\n/***/ }),\n\n/***/ \"./src/mermaidAPI.js\":\n/*!***************************!*\\\n !*** ./src/mermaidAPI.js ***!\n \\***************************/\n/*! exports provided: encodeEntities, decodeEntities, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encodeEntities\", function() { return encodeEntities; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decodeEntities\", function() { return decodeEntities; });\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! stylis */ \"stylis\");\n/* harmony import */ var stylis__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(stylis__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../package.json */ \"./package.json\");\nvar _package_json__WEBPACK_IMPORTED_MODULE_2___namespace = /*#__PURE__*/__webpack_require__.t(/*! ../package.json */ \"./package.json\", 1);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./config */ \"./src/config.js\");\n/* harmony import */ var _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./diagrams/class/classDb */ \"./src/diagrams/class/classDb.js\");\n/* harmony import */ var _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./diagrams/class/classRenderer */ \"./src/diagrams/class/classRenderer.js\");\n/* harmony import */ var _diagrams_class_classRenderer_v2__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./diagrams/class/classRenderer-v2 */ \"./src/diagrams/class/classRenderer-v2.js\");\n/* harmony import */ var _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./diagrams/class/parser/classDiagram */ \"./src/diagrams/class/parser/classDiagram.jison\");\n/* harmony import */ var _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _diagrams_er_erDb__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./diagrams/er/erDb */ \"./src/diagrams/er/erDb.js\");\n/* harmony import */ var _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./diagrams/er/erRenderer */ \"./src/diagrams/er/erRenderer.js\");\n/* harmony import */ var _diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./diagrams/er/parser/erDiagram */ \"./src/diagrams/er/parser/erDiagram.jison\");\n/* harmony import */ var _diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./diagrams/flowchart/flowDb */ \"./src/diagrams/flowchart/flowDb.js\");\n/* harmony import */ var _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./diagrams/flowchart/flowRenderer */ \"./src/diagrams/flowchart/flowRenderer.js\");\n/* harmony import */ var _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./diagrams/flowchart/flowRenderer-v2 */ \"./src/diagrams/flowchart/flowRenderer-v2.js\");\n/* harmony import */ var _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./diagrams/flowchart/parser/flow */ \"./src/diagrams/flowchart/parser/flow.jison\");\n/* harmony import */ var _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _diagrams_gantt_ganttDb__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./diagrams/gantt/ganttDb */ \"./src/diagrams/gantt/ganttDb.js\");\n/* harmony import */ var _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./diagrams/gantt/ganttRenderer */ \"./src/diagrams/gantt/ganttRenderer.js\");\n/* harmony import */ var _diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./diagrams/gantt/parser/gantt */ \"./src/diagrams/gantt/parser/gantt.jison\");\n/* harmony import */ var _diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _diagrams_git_gitGraphAst__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./diagrams/git/gitGraphAst */ \"./src/diagrams/git/gitGraphAst.js\");\n/* harmony import */ var _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./diagrams/git/gitGraphRenderer */ \"./src/diagrams/git/gitGraphRenderer.js\");\n/* harmony import */ var _diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./diagrams/git/parser/gitGraph */ \"./src/diagrams/git/parser/gitGraph.jison\");\n/* harmony import */ var _diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _diagrams_info_infoDb__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./diagrams/info/infoDb */ \"./src/diagrams/info/infoDb.js\");\n/* harmony import */ var _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./diagrams/info/infoRenderer */ \"./src/diagrams/info/infoRenderer.js\");\n/* harmony import */ var _diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./diagrams/info/parser/info */ \"./src/diagrams/info/parser/info.jison\");\n/* harmony import */ var _diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var _diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./diagrams/pie/parser/pie */ \"./src/diagrams/pie/parser/pie.jison\");\n/* harmony import */ var _diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var _diagrams_pie_pieDb__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./diagrams/pie/pieDb */ \"./src/diagrams/pie/pieDb.js\");\n/* harmony import */ var _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./diagrams/pie/pieRenderer */ \"./src/diagrams/pie/pieRenderer.js\");\n/* harmony import */ var _diagrams_requirement_parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./diagrams/requirement/parser/requirementDiagram */ \"./src/diagrams/requirement/parser/requirementDiagram.jison\");\n/* harmony import */ var _diagrams_requirement_parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(_diagrams_requirement_parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony import */ var _diagrams_requirement_requirementDb__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./diagrams/requirement/requirementDb */ \"./src/diagrams/requirement/requirementDb.js\");\n/* harmony import */ var _diagrams_requirement_requirementRenderer__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./diagrams/requirement/requirementRenderer */ \"./src/diagrams/requirement/requirementRenderer.js\");\n/* harmony import */ var _diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./diagrams/sequence/parser/sequenceDiagram */ \"./src/diagrams/sequence/parser/sequenceDiagram.jison\");\n/* harmony import */ var _diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_30___default = /*#__PURE__*/__webpack_require__.n(_diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_30__);\n/* harmony import */ var _diagrams_sequence_sequenceDb__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./diagrams/sequence/sequenceDb */ \"./src/diagrams/sequence/sequenceDb.js\");\n/* harmony import */ var _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./diagrams/sequence/sequenceRenderer */ \"./src/diagrams/sequence/sequenceRenderer.js\");\n/* harmony import */ var _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./diagrams/state/parser/stateDiagram */ \"./src/diagrams/state/parser/stateDiagram.jison\");\n/* harmony import */ var _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_33___default = /*#__PURE__*/__webpack_require__.n(_diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_33__);\n/* harmony import */ var _diagrams_state_stateDb__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./diagrams/state/stateDb */ \"./src/diagrams/state/stateDb.js\");\n/* harmony import */ var _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./diagrams/state/stateRenderer */ \"./src/diagrams/state/stateRenderer.js\");\n/* harmony import */ var _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./diagrams/state/stateRenderer-v2 */ \"./src/diagrams/state/stateRenderer-v2.js\");\n/* harmony import */ var _diagrams_user_journey_journeyDb__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./diagrams/user-journey/journeyDb */ \"./src/diagrams/user-journey/journeyDb.js\");\n/* harmony import */ var _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./diagrams/user-journey/journeyRenderer */ \"./src/diagrams/user-journey/journeyRenderer.js\");\n/* harmony import */ var _diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./diagrams/user-journey/parser/journey */ \"./src/diagrams/user-journey/parser/journey.jison\");\n/* harmony import */ var _diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_39___default = /*#__PURE__*/__webpack_require__.n(_diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_39__);\n/* harmony import */ var _errorRenderer__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./errorRenderer */ \"./src/errorRenderer.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./logger */ \"./src/logger.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./styles */ \"./src/styles.js\");\n/* harmony import */ var _themes__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./themes */ \"./src/themes/index.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./utils */ \"./src/utils.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n *Edit this Page[![N|Solid](img/GitHub-Mark-32px.png)](https://github.com/mermaid-js/mermaid/blob/develop/src/mermaidAPI.js)\n *\n *This is the API to be used when optionally handling the integration with the web page, instead of using the default integration provided by mermaid.js.\n *\n *\n * The core of this api is the [**render**](Setup.md?id=render) function which, given a graph\n * definition as text, renders the graph/diagram and returns an svg element for the graph.\n *\n * It is is then up to the user of the API to make use of the svg, either insert it somewhere in the page or do something completely different.\n *\n * In addition to the render function, a number of behavioral configuration options are available.\n *\n * @name mermaidAPI\n */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n // import * as configApi from './config';\n// // , {\n// // setConfig,\n// // configApi.getConfig,\n// // configApi.updateSiteConfig,\n// // configApi.setSiteConfig,\n// // configApi.getSiteConfig,\n// // configApi.defaultConfig\n// // }\n\n\n\n\n\n\nfunction parse(text) {\n var graphInit = _utils__WEBPACK_IMPORTED_MODULE_44__[\"default\"].detectInit(text);\n\n if (graphInit) {\n reinitialize(graphInit);\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('reinit ', graphInit);\n }\n\n var graphType = _utils__WEBPACK_IMPORTED_MODULE_44__[\"default\"].detectType(text);\n var parser;\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('Type ' + graphType);\n\n switch (graphType) {\n case 'git':\n parser = _diagrams_git_parser_gitGraph__WEBPACK_IMPORTED_MODULE_20___default.a;\n parser.parser.yy = _diagrams_git_gitGraphAst__WEBPACK_IMPORTED_MODULE_18__[\"default\"];\n break;\n\n case 'flowchart':\n _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_11__[\"default\"].clear();\n parser = _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_14___default.a;\n parser.parser.yy = _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n break;\n\n case 'flowchart-v2':\n _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_11__[\"default\"].clear();\n parser = _diagrams_flowchart_parser_flow__WEBPACK_IMPORTED_MODULE_14___default.a;\n parser.parser.yy = _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_11__[\"default\"];\n break;\n\n case 'sequence':\n parser = _diagrams_sequence_parser_sequenceDiagram__WEBPACK_IMPORTED_MODULE_30___default.a;\n parser.parser.yy = _diagrams_sequence_sequenceDb__WEBPACK_IMPORTED_MODULE_31__[\"default\"];\n break;\n\n case 'gantt':\n parser = _diagrams_gantt_parser_gantt__WEBPACK_IMPORTED_MODULE_17___default.a;\n parser.parser.yy = _diagrams_gantt_ganttDb__WEBPACK_IMPORTED_MODULE_15__[\"default\"];\n break;\n\n case 'class':\n parser = _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_7___default.a;\n parser.parser.yy = _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n break;\n\n case 'classDiagram':\n parser = _diagrams_class_parser_classDiagram__WEBPACK_IMPORTED_MODULE_7___default.a;\n parser.parser.yy = _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n break;\n\n case 'state':\n parser = _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_33___default.a;\n parser.parser.yy = _diagrams_state_stateDb__WEBPACK_IMPORTED_MODULE_34__[\"default\"];\n break;\n\n case 'stateDiagram':\n parser = _diagrams_state_parser_stateDiagram__WEBPACK_IMPORTED_MODULE_33___default.a;\n parser.parser.yy = _diagrams_state_stateDb__WEBPACK_IMPORTED_MODULE_34__[\"default\"];\n break;\n\n case 'info':\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('info info info');\n parser = _diagrams_info_parser_info__WEBPACK_IMPORTED_MODULE_23___default.a;\n parser.parser.yy = _diagrams_info_infoDb__WEBPACK_IMPORTED_MODULE_21__[\"default\"];\n break;\n\n case 'pie':\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('pie');\n parser = _diagrams_pie_parser_pie__WEBPACK_IMPORTED_MODULE_24___default.a;\n parser.parser.yy = _diagrams_pie_pieDb__WEBPACK_IMPORTED_MODULE_25__[\"default\"];\n break;\n\n case 'er':\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('er');\n parser = _diagrams_er_parser_erDiagram__WEBPACK_IMPORTED_MODULE_10___default.a;\n parser.parser.yy = _diagrams_er_erDb__WEBPACK_IMPORTED_MODULE_8__[\"default\"];\n break;\n\n case 'journey':\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('Journey');\n parser = _diagrams_user_journey_parser_journey__WEBPACK_IMPORTED_MODULE_39___default.a;\n parser.parser.yy = _diagrams_user_journey_journeyDb__WEBPACK_IMPORTED_MODULE_37__[\"default\"];\n break;\n\n case 'requirement':\n case 'requirementDiagram':\n console.log('RequirementDiagram');\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('RequirementDiagram');\n parser = _diagrams_requirement_parser_requirementDiagram__WEBPACK_IMPORTED_MODULE_27___default.a;\n parser.parser.yy = _diagrams_requirement_requirementDb__WEBPACK_IMPORTED_MODULE_28__[\"default\"];\n break;\n }\n\n parser.parser.yy.graphType = graphType;\n\n parser.parser.yy.parseError = function (str, hash) {\n var error = {\n str: str,\n hash: hash\n };\n throw error;\n };\n\n parser.parse(text);\n return parser;\n}\n\nvar encodeEntities = function encodeEntities(text) {\n var txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, function (s) {\n var innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, function (s) {\n var innerTxt = s.substring(0, s.length - 1);\n return innerTxt;\n });\n txt = txt.replace(/#\\w+;/g, function (s) {\n var innerTxt = s.substring(1, s.length - 1);\n var isInt = /^\\+?\\d+$/.test(innerTxt);\n\n if (isInt) {\n return 'fl°°' + innerTxt + '¶ß';\n } else {\n return 'fl°' + innerTxt + '¶ß';\n }\n });\n return txt;\n};\nvar decodeEntities = function decodeEntities(text) {\n var txt = text;\n txt = txt.replace(/fl°°/g, function () {\n return '&#';\n });\n txt = txt.replace(/fl°/g, function () {\n return '&';\n });\n txt = txt.replace(/¶ß/g, function () {\n return ';';\n });\n return txt;\n};\n/**\n * Function that renders an svg with a graph from a chart definition. Usage example below.\n *\n * ```js\n * mermaidAPI.initialize({\n * startOnLoad:true\n * });\n * $(function(){\n * const graphDefinition = 'graph TB\\na-->b';\n * const cb = function(svgGraph){\n * console.log(svgGraph);\n * };\n * mermaidAPI.render('id1',graphDefinition,cb);\n * });\n *```\n * @param id the id of the element to be rendered\n * @param _txt the graph definition\n * @param cb callback which is called after rendering is finished with the svg code as inparam.\n * @param container selector to element in which a div with the graph temporarily will be inserted. In one is\n * provided a hidden div will be inserted in the body of the page instead. The element will be removed when rendering is\n * completed.\n */\n\nvar render = function render(id, _txt, cb, container) {\n _config__WEBPACK_IMPORTED_MODULE_3__[\"reset\"]();\n var txt = _txt;\n var graphInit = _utils__WEBPACK_IMPORTED_MODULE_44__[\"default\"].detectInit(txt);\n\n if (graphInit) {\n _config__WEBPACK_IMPORTED_MODULE_3__[\"addDirective\"](graphInit);\n } // else {\n // configApi.reset();\n // const siteConfig = configApi.getSiteConfig();\n // configApi.addDirective(siteConfig);\n // }\n // console.warn('Render fetching config');\n\n\n var cnf = _config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"](); // Check the maximum allowed text size\n\n if (_txt.length > cnf.maxTextSize) {\n txt = 'graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa';\n }\n\n if (typeof container !== 'undefined') {\n container.innerHTML = '';\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(container).append('div').attr('id', 'd' + id).attr('style', 'font-family: ' + cnf.fontFamily).append('svg').attr('id', id).attr('width', '100%').attr('xmlns', 'http://www.w3.org/2000/svg').append('g');\n } else {\n var existingSvg = document.getElementById(id);\n\n if (existingSvg) {\n existingSvg.remove();\n }\n\n var _element = document.querySelector('#' + 'd' + id);\n\n if (_element) {\n _element.remove();\n }\n\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('body').append('div').attr('id', 'd' + id).append('svg').attr('id', id).attr('width', '100%').attr('xmlns', 'http://www.w3.org/2000/svg').append('g');\n }\n\n window.txt = txt;\n txt = encodeEntities(txt);\n var element = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#d' + id).node();\n var graphType = _utils__WEBPACK_IMPORTED_MODULE_44__[\"default\"].detectType(txt); // insert inline style into svg\n\n var svg = element.firstChild;\n var firstChild = svg.firstChild;\n var userStyles = ''; // user provided theme CSS\n\n if (cnf.themeCSS !== undefined) {\n userStyles += \"\\n\".concat(cnf.themeCSS);\n } // user provided theme CSS\n\n\n if (cnf.fontFamily !== undefined) {\n userStyles += \"\\n:root { --mermaid-font-family: \".concat(cnf.fontFamily, \"}\");\n } // user provided theme CSS\n\n\n if (cnf.altFontFamily !== undefined) {\n userStyles += \"\\n:root { --mermaid-alt-font-family: \".concat(cnf.altFontFamily, \"}\");\n } // classDef\n\n\n if (graphType === 'flowchart' || graphType === 'flowchart-v2' || graphType === 'graph') {\n var classes = _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].getClasses(txt);\n\n for (var className in classes) {\n if (cnf.htmlLabels || cnf.flowchart.htmlLabels) {\n userStyles += \"\\n.\".concat(className, \" > * { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n userStyles += \"\\n.\".concat(className, \" span { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n } else {\n // console.log('classes[className].styles', classes[className].styles, cnf.htmlLabels);\n userStyles += \"\\n.\".concat(className, \" path { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n userStyles += \"\\n.\".concat(className, \" rect { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n userStyles += \"\\n.\".concat(className, \" polygon { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n userStyles += \"\\n.\".concat(className, \" ellipse { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n userStyles += \"\\n.\".concat(className, \" circle { \").concat(classes[className].styles.join(' !important; '), \" !important; }\");\n\n if (classes[className].textStyles) {\n userStyles += \"\\n.\".concat(className, \" tspan { \").concat(classes[className].textStyles.join(' !important; '), \" !important; }\");\n }\n }\n }\n } // log.warn(cnf.themeVariables);\n\n\n var stylis = new stylis__WEBPACK_IMPORTED_MODULE_1___default.a();\n var rules = stylis(\"#\".concat(id), Object(_styles__WEBPACK_IMPORTED_MODULE_42__[\"default\"])(graphType, userStyles, cnf.themeVariables));\n var style1 = document.createElement('style');\n style1.innerHTML = rules;\n svg.insertBefore(style1, firstChild); // Verify that the generated svgs are ok before removing this\n // const style2 = document.createElement('style');\n // const cs = window.getComputedStyle(svg);\n // style2.innerHTML = `#d${id} * {\n // color: ${cs.color};\n // // font: ${cs.font};\n // // font-family: Arial;\n // // font-size: 24px;\n // }`;\n // svg.insertBefore(style2, firstChild);\n\n try {\n switch (graphType) {\n case 'git':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_19__[\"default\"].setConf(cnf.git);\n _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_19__[\"default\"].draw(txt, id, false);\n break;\n\n case 'flowchart':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].setConf(cnf.flowchart);\n _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].draw(txt, id, false);\n break;\n\n case 'flowchart-v2':\n cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_13__[\"default\"].setConf(cnf.flowchart);\n _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_13__[\"default\"].draw(txt, id, false);\n break;\n\n case 'sequence':\n cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n\n if (cnf.sequenceDiagram) {\n // backwards compatibility\n _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_32__[\"default\"].setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));\n console.error('`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.');\n } else {\n _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_32__[\"default\"].setConf(cnf.sequence);\n }\n\n _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_32__[\"default\"].draw(txt, id);\n break;\n\n case 'gantt':\n cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_16__[\"default\"].setConf(cnf.gantt);\n _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_16__[\"default\"].draw(txt, id);\n break;\n\n case 'class':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setConf(cnf.class);\n _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_5__[\"default\"].draw(txt, id);\n break;\n\n case 'classDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_class_classRenderer_v2__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setConf(cnf.class);\n _diagrams_class_classRenderer_v2__WEBPACK_IMPORTED_MODULE_6__[\"default\"].draw(txt, id);\n break;\n\n case 'state':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_35__[\"default\"].setConf(cnf.state);\n _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_35__[\"default\"].draw(txt, id);\n break;\n\n case 'stateDiagram':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_36__[\"default\"].setConf(cnf.state);\n _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_36__[\"default\"].draw(txt, id);\n break;\n\n case 'info':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_22__[\"default\"].setConf(cnf.class);\n _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_22__[\"default\"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);\n break;\n\n case 'pie':\n cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;\n _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_26__[\"default\"].setConf(cnf.pie);\n _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_26__[\"default\"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);\n break;\n\n case 'er':\n _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setConf(cnf.er);\n _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_9__[\"default\"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);\n break;\n\n case 'journey':\n _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__[\"default\"].setConf(cnf.journey);\n _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__[\"default\"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);\n break;\n\n case 'requirement':\n _diagrams_requirement_requirementRenderer__WEBPACK_IMPORTED_MODULE_29__[\"default\"].setConf(cnf.requirement);\n _diagrams_requirement_requirementRenderer__WEBPACK_IMPORTED_MODULE_29__[\"default\"].draw(txt, id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);\n break;\n }\n } catch (e) {\n // errorRenderer.setConf(cnf.class);\n _errorRenderer__WEBPACK_IMPORTED_MODULE_40__[\"default\"].draw(id, _package_json__WEBPACK_IMPORTED_MODULE_2__.version);\n throw e;\n }\n\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])(\"[id=\\\"\".concat(id, \"\\\"]\")).selectAll('foreignobject > *').attr('xmlns', 'http://www.w3.org/1999/xhtml'); // if (cnf.arrowMarkerAbsolute) {\n // url =\n // window.location.protocol +\n // '//' +\n // window.location.host +\n // window.location.pathname +\n // window.location.search;\n // url = url.replace(/\\(/g, '\\\\(');\n // url = url.replace(/\\)/g, '\\\\)');\n // }\n // Fix for when the base tag is used\n\n var svgCode = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#d' + id).node().innerHTML;\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);\n\n if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {\n svgCode = svgCode.replace(/marker-end=\"url\\(.*?#/g, 'marker-end=\"url(#', 'g');\n }\n\n svgCode = decodeEntities(svgCode); // Fix for when the br tag is used\n\n svgCode = svgCode.replace(/<br>/g, '<br/>');\n\n if (typeof cb !== 'undefined') {\n switch (graphType) {\n case 'flowchart':\n case 'flowchart-v2':\n cb(svgCode, _diagrams_flowchart_flowDb__WEBPACK_IMPORTED_MODULE_11__[\"default\"].bindFunctions);\n break;\n\n case 'gantt':\n cb(svgCode, _diagrams_gantt_ganttDb__WEBPACK_IMPORTED_MODULE_15__[\"default\"].bindFunctions);\n break;\n\n case 'class':\n case 'classDiagram':\n cb(svgCode, _diagrams_class_classDb__WEBPACK_IMPORTED_MODULE_4__[\"default\"].bindFunctions);\n break;\n\n default:\n cb(svgCode);\n }\n } else {\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug('CB = undefined!');\n }\n\n var node = Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#d' + id).node();\n\n if (node !== null && typeof node.remove === 'function') {\n Object(d3__WEBPACK_IMPORTED_MODULE_0__[\"select\"])('#d' + id).node().remove();\n }\n\n return svgCode;\n};\n\nvar currentDirective = {};\n\nvar parseDirective = function parseDirective(p, statement, context, type) {\n try {\n if (statement !== undefined) {\n statement = statement.trim();\n\n switch (context) {\n case 'open_directive':\n currentDirective = {};\n break;\n\n case 'type_directive':\n currentDirective.type = statement.toLowerCase();\n break;\n\n case 'arg_directive':\n currentDirective.args = JSON.parse(statement);\n break;\n\n case 'close_directive':\n handleDirective(p, currentDirective, type);\n currentDirective = null;\n break;\n }\n }\n } catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].error(\"Error while rendering sequenceDiagram directive: \".concat(statement, \" jison context: \").concat(context));\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].error(error.message);\n }\n};\n\nvar handleDirective = function handleDirective(p, directive, type) {\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].debug(\"Directive type=\".concat(directive.type, \" with args:\"), directive.args);\n\n switch (directive.type) {\n case 'init':\n case 'initialize':\n {\n ['config'].forEach(function (prop) {\n if (typeof directive.args[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n\n directive.args[type] = directive.args[prop];\n delete directive.args[prop];\n }\n });\n reinitialize(directive.args);\n _config__WEBPACK_IMPORTED_MODULE_3__[\"addDirective\"](directive.args);\n break;\n }\n\n case 'wrap':\n case 'nowrap':\n if (p && p['setWrap']) {\n p.setWrap(directive.type === 'wrap');\n }\n\n break;\n\n default:\n _logger__WEBPACK_IMPORTED_MODULE_41__[\"log\"].warn(\"Unhandled directive: source: '%%{\".concat(directive.type, \": \").concat(JSON.stringify(directive.args ? directive.args : {}), \"}%%\"), directive);\n break;\n }\n};\n\nfunction updateRendererConfigs(conf) {\n _diagrams_git_gitGraphRenderer__WEBPACK_IMPORTED_MODULE_19__[\"default\"].setConf(conf.git);\n _diagrams_flowchart_flowRenderer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].setConf(conf.flowchart);\n _diagrams_flowchart_flowRenderer_v2__WEBPACK_IMPORTED_MODULE_13__[\"default\"].setConf(conf.flowchart);\n\n if (typeof conf['sequenceDiagram'] !== 'undefined') {\n _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_32__[\"default\"].setConf(Object(_utils__WEBPACK_IMPORTED_MODULE_44__[\"assignWithDepth\"])(conf.sequence, conf['sequenceDiagram']));\n }\n\n _diagrams_sequence_sequenceRenderer__WEBPACK_IMPORTED_MODULE_32__[\"default\"].setConf(conf.sequence);\n _diagrams_gantt_ganttRenderer__WEBPACK_IMPORTED_MODULE_16__[\"default\"].setConf(conf.gantt);\n _diagrams_class_classRenderer__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setConf(conf.class);\n _diagrams_state_stateRenderer__WEBPACK_IMPORTED_MODULE_35__[\"default\"].setConf(conf.state);\n _diagrams_state_stateRenderer_v2__WEBPACK_IMPORTED_MODULE_36__[\"default\"].setConf(conf.state);\n _diagrams_info_infoRenderer__WEBPACK_IMPORTED_MODULE_22__[\"default\"].setConf(conf.class);\n _diagrams_pie_pieRenderer__WEBPACK_IMPORTED_MODULE_26__[\"default\"].setConf(conf.class);\n _diagrams_er_erRenderer__WEBPACK_IMPORTED_MODULE_9__[\"default\"].setConf(conf.er);\n _diagrams_user_journey_journeyRenderer__WEBPACK_IMPORTED_MODULE_38__[\"default\"].setConf(conf.journey);\n _diagrams_requirement_requirementRenderer__WEBPACK_IMPORTED_MODULE_29__[\"default\"].setConf(conf.requirement);\n _errorRenderer__WEBPACK_IMPORTED_MODULE_40__[\"default\"].setConf(conf.class);\n}\n\nfunction reinitialize() {// `mermaidAPI.reinitialize: v${pkg.version}`,\n // JSON.stringify(options),\n // options.themeVariables.primaryColor;\n // // if (options.theme && theme[options.theme]) {\n // // options.themeVariables = theme[options.theme].getThemeVariables(options.themeVariables);\n // // }\n // // Set default options\n // const config =\n // typeof options === 'object' ? configApi.setConfig(options) : configApi.getSiteConfig();\n // updateRendererConfigs(config);\n // setLogLevel(config.logLevel);\n // log.debug('mermaidAPI.reinitialize: ', config);\n}\n\nfunction initialize(options) {\n // console.warn(`mermaidAPI.initialize: v${pkg.version} `, options);\n // Handle legacy location of font-family configuration\n if (options && options.fontFamily) {\n if (!options.themeVariables) {\n options.themeVariables = {\n fontFamily: options.fontFamily\n };\n } else {\n if (!options.themeVariables.fontFamily) {\n options.themeVariables = {\n fontFamily: options.fontFamily\n };\n }\n }\n } // Set default options\n\n\n _config__WEBPACK_IMPORTED_MODULE_3__[\"saveConfigFromInitilize\"](options);\n\n if (options && options.theme && _themes__WEBPACK_IMPORTED_MODULE_43__[\"default\"][options.theme]) {\n // Todo merge with user options\n options.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_43__[\"default\"][options.theme].getThemeVariables(options.themeVariables);\n } else {\n if (options) options.themeVariables = _themes__WEBPACK_IMPORTED_MODULE_43__[\"default\"].default.getThemeVariables(options.themeVariables);\n }\n\n var config = _typeof(options) === 'object' ? _config__WEBPACK_IMPORTED_MODULE_3__[\"setSiteConfig\"](options) : _config__WEBPACK_IMPORTED_MODULE_3__[\"getSiteConfig\"]();\n updateRendererConfigs(config);\n Object(_logger__WEBPACK_IMPORTED_MODULE_41__[\"setLogLevel\"])(config.logLevel); // log.debug('mermaidAPI.initialize: ', config);\n}\n\nvar mermaidAPI = Object.freeze({\n render: render,\n parse: parse,\n parseDirective: parseDirective,\n initialize: initialize,\n reinitialize: reinitialize,\n getConfig: _config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"],\n setConfig: _config__WEBPACK_IMPORTED_MODULE_3__[\"setConfig\"],\n getSiteConfig: _config__WEBPACK_IMPORTED_MODULE_3__[\"getSiteConfig\"],\n updateSiteConfig: _config__WEBPACK_IMPORTED_MODULE_3__[\"updateSiteConfig\"],\n reset: function reset() {\n // console.warn('reset');\n _config__WEBPACK_IMPORTED_MODULE_3__[\"reset\"](); // const siteConfig = configApi.getSiteConfig();\n // updateRendererConfigs(siteConfig);\n },\n globalReset: function globalReset() {\n _config__WEBPACK_IMPORTED_MODULE_3__[\"reset\"](_config__WEBPACK_IMPORTED_MODULE_3__[\"defaultConfig\"]);\n updateRendererConfigs(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]());\n },\n defaultConfig: _config__WEBPACK_IMPORTED_MODULE_3__[\"defaultConfig\"]\n});\nObject(_logger__WEBPACK_IMPORTED_MODULE_41__[\"setLogLevel\"])(_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]().logLevel);\n_config__WEBPACK_IMPORTED_MODULE_3__[\"reset\"](_config__WEBPACK_IMPORTED_MODULE_3__[\"getConfig\"]());\n/* harmony default export */ __webpack_exports__[\"default\"] = (mermaidAPI);\n/**\n * ## mermaidAPI configuration defaults\n *\n * ```html\n * <script>\n * var config = {\n * theme:'default',\n * logLevel:'fatal',\n * securityLevel:'strict',\n * startOnLoad:true,\n * arrowMarkerAbsolute:false,\n *\n * er:{\n * diagramPadding:20,\n * layoutDirection:'TB',\n * minEntityWidth:100,\n * minEntityHeight:75,\n * entityPadding:15,\n * stroke:'gray',\n * fill:'honeydew',\n * fontSize:12,\n * useMaxWidth:true,\n * },\n * flowchart:{\n * diagramPadding:8,\n * htmlLabels:true,\n * curve:'basis',\n * },\n * sequence:{\n * diagramMarginX:50,\n * diagramMarginY:10,\n * actorMargin:50,\n * width:150,\n * height:65,\n * boxMargin:10,\n * boxTextMargin:5,\n * noteMargin:10,\n * messageMargin:35,\n * messageAlign:'center',\n * mirrorActors:true,\n * bottomMarginAdj:1,\n * useMaxWidth:true,\n * rightAngles:false,\n * showSequenceNumbers:false,\n * },\n * gantt:{\n * titleTopMargin:25,\n * barHeight:20,\n * barGap:4,\n * topPadding:50,\n * leftPadding:75,\n * gridLineStartPadding:35,\n * fontSize:11,\n * fontFamily:'\"Open-Sans\", \"sans-serif\"',\n * numberSectionStyles:4,\n * axisFormat:'%Y-%m-%d',\n * topAxis:false,\n * }\n * };\n * mermaid.initialize(config);\n * </script>\n * ```\n */\n\n/***/ }),\n\n/***/ \"./src/styles.js\":\n/*!***********************!*\\\n !*** ./src/styles.js ***!\n \\***********************/\n/*! exports provided: calcThemeVariables, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calcThemeVariables\", function() { return calcThemeVariables; });\n/* harmony import */ var _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./diagrams/class/styles */ \"./src/diagrams/class/styles.js\");\n/* harmony import */ var _diagrams_er_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./diagrams/er/styles */ \"./src/diagrams/er/styles.js\");\n/* harmony import */ var _diagrams_flowchart_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./diagrams/flowchart/styles */ \"./src/diagrams/flowchart/styles.js\");\n/* harmony import */ var _diagrams_gantt_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./diagrams/gantt/styles */ \"./src/diagrams/gantt/styles.js\");\n/* harmony import */ var _diagrams_git_styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./diagrams/git/styles */ \"./src/diagrams/git/styles.js\");\n/* harmony import */ var _diagrams_info_styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./diagrams/info/styles */ \"./src/diagrams/info/styles.js\");\n/* harmony import */ var _diagrams_pie_styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./diagrams/pie/styles */ \"./src/diagrams/pie/styles.js\");\n/* harmony import */ var _diagrams_requirement_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./diagrams/requirement/styles */ \"./src/diagrams/requirement/styles.js\");\n/* harmony import */ var _diagrams_sequence_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./diagrams/sequence/styles */ \"./src/diagrams/sequence/styles.js\");\n/* harmony import */ var _diagrams_state_styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./diagrams/state/styles */ \"./src/diagrams/state/styles.js\");\n/* harmony import */ var _diagrams_user_journey_styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./diagrams/user-journey/styles */ \"./src/diagrams/user-journey/styles.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar themes = {\n flowchart: _diagrams_flowchart_styles__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n 'flowchart-v2': _diagrams_flowchart_styles__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n sequence: _diagrams_sequence_styles__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n gantt: _diagrams_gantt_styles__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n classDiagram: _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n 'classDiagram-v2': _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n class: _diagrams_class_styles__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stateDiagram: _diagrams_state_styles__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n state: _diagrams_state_styles__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n git: _diagrams_git_styles__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n info: _diagrams_info_styles__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n pie: _diagrams_pie_styles__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n er: _diagrams_er_styles__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n journey: _diagrams_user_journey_styles__WEBPACK_IMPORTED_MODULE_10__[\"default\"],\n requirement: _diagrams_requirement_styles__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n};\nvar calcThemeVariables = function calcThemeVariables(theme, userOverRides) {\n return theme.calcColors(userOverRides);\n};\n\nvar getStyles = function getStyles(type, userStyles, options) {\n //console.warn('options in styles: ', options);\n return \" {\\n font-family: \".concat(options.fontFamily, \";\\n font-size: \").concat(options.fontSize, \";\\n fill: \").concat(options.textColor, \"\\n }\\n\\n /* Classes common for multiple diagrams */\\n\\n .error-icon {\\n fill: \").concat(options.errorBkgColor, \";\\n }\\n .error-text {\\n fill: \").concat(options.errorTextColor, \";\\n stroke: \").concat(options.errorTextColor, \";\\n }\\n\\n .edge-thickness-normal {\\n stroke-width: 2px;\\n }\\n .edge-thickness-thick {\\n stroke-width: 3.5px\\n }\\n .edge-pattern-solid {\\n stroke-dasharray: 0;\\n }\\n\\n .edge-pattern-dashed{\\n stroke-dasharray: 3;\\n }\\n .edge-pattern-dotted {\\n stroke-dasharray: 2;\\n }\\n\\n .marker {\\n fill: \").concat(options.lineColor, \";\\n stroke: \").concat(options.lineColor, \";\\n }\\n .marker.cross {\\n stroke: \").concat(options.lineColor, \";\\n }\\n\\n svg {\\n font-family: \").concat(options.fontFamily, \";\\n font-size: \").concat(options.fontSize, \";\\n }\\n\\n \").concat(themes[type](options), \"\\n\\n \").concat(userStyles, \"\\n\\n \").concat(type, \" { fill: apa;}\\n\");\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStyles);\n\n/***/ }),\n\n/***/ \"./src/themes/index.js\":\n/*!*****************************!*\\\n !*** ./src/themes/index.js ***!\n \\*****************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _theme_base__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./theme-base */ \"./src/themes/theme-base.js\");\n/* harmony import */ var _theme_dark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-dark */ \"./src/themes/theme-dark.js\");\n/* harmony import */ var _theme_default__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./theme-default */ \"./src/themes/theme-default.js\");\n/* harmony import */ var _theme_forest__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./theme-forest */ \"./src/themes/theme-forest.js\");\n/* harmony import */ var _theme_neutral__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./theme-neutral */ \"./src/themes/theme-neutral.js\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n base: {\n getThemeVariables: _theme_base__WEBPACK_IMPORTED_MODULE_0__[\"getThemeVariables\"]\n },\n dark: {\n getThemeVariables: _theme_dark__WEBPACK_IMPORTED_MODULE_1__[\"getThemeVariables\"]\n },\n default: {\n getThemeVariables: _theme_default__WEBPACK_IMPORTED_MODULE_2__[\"getThemeVariables\"]\n },\n forest: {\n getThemeVariables: _theme_forest__WEBPACK_IMPORTED_MODULE_3__[\"getThemeVariables\"]\n },\n neutral: {\n getThemeVariables: _theme_neutral__WEBPACK_IMPORTED_MODULE_4__[\"getThemeVariables\"]\n }\n});\n\n/***/ }),\n\n/***/ \"./src/themes/theme-base.js\":\n/*!**********************************!*\\\n !*** ./src/themes/theme-base.js ***!\n \\**********************************/\n/*! exports provided: getThemeVariables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getThemeVariables\", function() { return getThemeVariables; });\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ \"khroma\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ \"./src/themes/theme-helpers.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar Theme =\n/*#__PURE__*/\nfunction () {\n function Theme() {\n _classCallCheck(this, Theme);\n\n /** # Base variables */\n\n /** * background - used to know what the background color is of the diagram. This is used for deducing colors for istance line color. Defaulr value is #f4f4f4. */\n this.background = '#f4f4f4';\n this.darkMode = false; // this.background = '#0c0c0c';\n // this.darkMode = true;\n\n this.primaryColor = '#fff4dd'; // this.background = '#0c0c0c';\n // this.primaryColor = '#1f1f00';\n\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = '#333'; // dark\n // this.primaryColor = '#034694';\n // this.primaryColor = '#f2ee7e';\n // this.primaryColor = '#9f33be';\n // this.primaryColor = '#f0fff0';\n // this.primaryColor = '#fa255e';\n // this.primaryColor = '#ECECFF';\n // this.secondaryColor = '#c39ea0';\n // this.tertiaryColor = '#f8e5e5';\n // this.secondaryColor = '#dfdfde';\n // this.tertiaryColor = '#CCCCFF';\n\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px'; // this.updateColors();\n }\n\n _createClass(Theme, [{\n key: \"updateColors\",\n value: function updateColors() {\n // The || is to make sure that if the variable has been defiend by a user override that value is to be used\n\n /* Main */\n this.primaryTextColor = this.primaryTextColor || (this.darkMode ? '#ddd' : '#333'); // invert(this.primaryColor);\n\n this.secondaryColor = this.secondaryColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -120\n });\n this.tertiaryColor = this.tertiaryColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 180,\n l: 5\n });\n this.primaryBorderColor = this.primaryBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = this.secondaryBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = this.tertiaryBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.tertiaryColor, this.darkMode);\n this.noteBorderColor = this.noteBorderColor || Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.noteBkgColor, this.darkMode);\n this.secondaryTextColor = this.secondaryTextColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.secondaryColor);\n this.tertiaryTextColor = this.tertiaryTextColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.tertiaryColor);\n this.lineColor = this.lineColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.textColor = this.textColor || this.primaryTextColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.nodeBkg || this.primaryColor;\n this.mainBkg = this.mainBkg || this.primaryColor;\n this.nodeBorder = this.nodeBorder || this.primaryBorderColor;\n this.clusterBkg = this.clusterBkg || this.tertiaryColor;\n this.clusterBorder = this.clusterBorder || this.tertiaryBorderColor;\n this.defaultLinkColor = this.defaultLinkColor || this.lineColor;\n this.titleColor = this.titleColor || this.tertiaryTextColor;\n this.edgeLabelBackground = this.edgeLabelBackground || (this.darkMode ? Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])(this.secondaryColor, 30) : this.secondaryColor);\n this.nodeTextColor = this.nodeTextColor || this.primaryTextColor;\n /* Sequence Diagram variables */\n // this.actorBorder = lighten(this.border1, 0.5);\n\n this.actorBorder = this.actorBorder || this.primaryBorderColor;\n this.actorBkg = this.actorBkg || this.mainBkg;\n this.actorTextColor = this.actorTextColor || this.primaryTextColor;\n this.actorLineColor = this.actorLineColor || 'grey';\n this.labelBoxBkgColor = this.labelBoxBkgColor || this.actorBkg;\n this.signalColor = this.signalColor || this.textColor;\n this.signalTextColor = this.signalTextColor || this.textColor;\n this.labelBoxBorderColor = this.labelBoxBorderColor || this.actorBorder;\n this.labelTextColor = this.labelTextColor || this.actorTextColor;\n this.loopTextColor = this.loopTextColor || this.actorTextColor;\n this.activationBorderColor = this.activationBorderColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])(this.secondaryColor, 10);\n this.activationBkgColor = this.activationBkgColor || this.secondaryColor;\n this.sequenceNumberColor = this.sequenceNumberColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.lineColor);\n /* Gantt chart variables */\n\n this.sectionBkgColor = this.sectionBkgColor || this.tertiaryColor;\n this.altSectionBkgColor = this.altSectionBkgColor || 'white';\n this.sectionBkgColor = this.sectionBkgColor || this.secondaryColor;\n this.sectionBkgColor2 = this.sectionBkgColor2 || this.primaryColor;\n this.taskBorderColor = this.taskBorderColor || this.primaryBorderColor;\n this.taskBkgColor = this.taskBkgColor || this.primaryColor;\n this.activeTaskBorderColor = this.activeTaskBorderColor || this.primaryColor;\n this.activeTaskBkgColor = this.activeTaskBkgColor || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.primaryColor, 23);\n this.gridColor = this.gridColor || 'lightgrey';\n this.doneTaskBkgColor = this.doneTaskBkgColor || 'lightgrey';\n this.doneTaskBorderColor = this.doneTaskBorderColor || 'grey';\n this.critBorderColor = this.critBorderColor || '#ff8888';\n this.critBkgColor = this.critBkgColor || 'red';\n this.todayLineColor = this.todayLineColor || 'red';\n this.taskTextColor = this.taskTextColor || this.textColor;\n this.taskTextOutsideColor = this.taskTextOutsideColor || this.textColor;\n this.taskTextLightColor = this.taskTextLightColor || this.textColor;\n this.taskTextColor = this.taskTextColor || this.primaryTextColor;\n this.taskTextDarkColor = this.taskTextDarkColor || this.textColor;\n this.taskTextClickableColor = this.taskTextClickableColor || '#003163';\n /* state colors */\n\n this.labelColor = this.labelColor || this.primaryTextColor;\n this.altBackground = this.altBackground || this.tertiaryColor;\n this.errorBkgColor = this.errorBkgColor || this.tertiaryColor;\n this.errorTextColor = this.errorTextColor || this.tertiaryTextColor;\n /* class */\n\n this.classText = this.classText || this.textColor;\n /* user-journey */\n\n this.fillType0 = this.fillType0 || this.primaryColor;\n this.fillType1 = this.fillType1 || this.secondaryColor;\n this.fillType2 = this.fillType2 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 64\n });\n this.fillType3 = this.fillType3 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 64\n });\n this.fillType4 = this.fillType4 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -64\n });\n this.fillType5 = this.fillType5 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: -64\n });\n this.fillType6 = this.fillType6 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 128\n });\n this.fillType7 = this.fillType7 || Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 128\n });\n }\n }, {\n key: \"calculate\",\n value: function calculate(overrides) {\n var _this = this;\n\n if (_typeof(overrides) !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n }); // Calculate colors form base colors\n\n this.updateColors(); // Copy values from overrides again in case of an override of derived value\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n });\n }\n }]);\n\n return Theme;\n}();\n\nvar getThemeVariables = function getThemeVariables(userOverrides) {\n var theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n\n/***/ }),\n\n/***/ \"./src/themes/theme-dark.js\":\n/*!**********************************!*\\\n !*** ./src/themes/theme-dark.js ***!\n \\**********************************/\n/*! exports provided: getThemeVariables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getThemeVariables\", function() { return getThemeVariables; });\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ \"khroma\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ \"./src/themes/theme-helpers.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar Theme =\n/*#__PURE__*/\nfunction () {\n function Theme() {\n _classCallCheck(this, Theme);\n\n this.background = '#333';\n this.primaryColor = '#1f2020';\n this.secondaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.primaryColor, 16);\n this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -160\n });\n this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.primaryColor);\n this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.secondaryColor);\n this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.tertiaryColor);\n this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.mainBkg = '#1f2020';\n this.secondBkg = 'calculated';\n this.mainContrastColor = 'lightgrey';\n this.darkTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])('#323D47'), 10);\n this.lineColor = 'calculated';\n this.border1 = '#81B1DB';\n this.border2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"rgba\"])(255, 255, 255, 0.25);\n this.arrowheadColor = 'calculated';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#181818';\n this.textColor = '#ccc';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#F9FFFE';\n this.edgeLabelBackground = 'calculated';\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = 'calculated';\n this.activationBkgColor = 'calculated';\n this.sequenceNumberColor = 'black';\n /* Gantt chart variables */\n\n this.sectionBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])('#EAE8D9', 30);\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = '#EAE8D9';\n this.taskBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"rgba\"])(255, 255, 255, 70);\n this.taskBkgColor = 'calculated';\n this.taskTextColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"rgba\"])(255, 255, 255, 50);\n this.activeTaskBkgColor = '#81B1DB';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#E83737';\n this.critBkgColor = '#E83737';\n this.taskTextDarkColor = 'calculated';\n this.todayLineColor = '#DB5757';\n /* state colors */\n\n this.labelColor = 'calculated';\n this.errorBkgColor = '#a44141';\n this.errorTextColor = '#ddd';\n }\n\n _createClass(Theme, [{\n key: \"updateColors\",\n value: function updateColors() {\n this.secondBkg = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.mainBkg, 16);\n this.lineColor = this.mainContrastColor;\n this.arrowheadColor = this.mainContrastColor;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.edgeLabelBackground = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.labelBackground, 25);\n /* Sequence Diagram variables */\n\n this.actorBorder = this.border1;\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.mainContrastColor;\n this.actorLineColor = this.mainContrastColor;\n this.signalColor = this.mainContrastColor;\n this.signalTextColor = this.mainContrastColor;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.mainContrastColor;\n this.loopTextColor = this.mainContrastColor;\n this.noteBorderColor = this.secondaryBorderColor;\n this.noteBkgColor = this.secondBkg;\n this.noteTextColor = this.secondaryTextColor;\n this.activationBorderColor = this.border1;\n this.activationBkgColor = this.secondBkg;\n /* Gantt chart variables */\n\n this.altSectionBkgColor = this.background;\n this.taskBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.mainBkg, 23);\n this.taskTextColor = this.darkTextColor;\n this.taskTextLightColor = this.mainContrastColor;\n this.taskTextOutsideColor = this.taskTextLightColor;\n this.gridColor = this.mainContrastColor;\n this.doneTaskBkgColor = this.mainContrastColor;\n this.taskTextDarkColor = this.darkTextColor;\n /* state colors */\n\n this.labelColor = this.textColor;\n this.altBackground = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.background, 20);\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 64\n });\n this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 64\n });\n this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -64\n });\n this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: -64\n });\n this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 128\n });\n this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 128\n });\n /* class */\n\n this.classText = this.primaryTextColor;\n }\n }, {\n key: \"calculate\",\n value: function calculate(overrides) {\n var _this = this;\n\n if (_typeof(overrides) !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n }); // Calculate colors form base colors\n\n this.updateColors(); // Copy values from overrides again in case of an override of derived value\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n });\n }\n }]);\n\n return Theme;\n}();\n\nvar getThemeVariables = function getThemeVariables(userOverrides) {\n var theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n\n/***/ }),\n\n/***/ \"./src/themes/theme-default.js\":\n/*!*************************************!*\\\n !*** ./src/themes/theme-default.js ***!\n \\*************************************/\n/*! exports provided: getThemeVariables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getThemeVariables\", function() { return getThemeVariables; });\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ \"khroma\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ \"./src/themes/theme-helpers.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar Theme =\n/*#__PURE__*/\nfunction () {\n function Theme() {\n _classCallCheck(this, Theme);\n\n /* Base variables */\n this.background = '#f4f4f4';\n this.primaryColor = '#ECECFF';\n this.secondaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 120\n });\n this.secondaryColor = '#ffffde';\n this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -160\n });\n this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.tertiaryColor, this.darkMode); // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.primaryColor);\n this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.secondaryColor);\n this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.tertiaryColor);\n this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.background = 'white';\n this.mainBkg = '#ECECFF';\n this.secondBkg = '#ffffde';\n this.lineColor = '#333333';\n this.border1 = '#9370DB';\n this.border2 = '#aaaa33';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.labelBackground = '#e8e8e8';\n this.textColor = '#333';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'calculated';\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'calculated';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'calculated';\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.taskTextClickableColor = 'calculated';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.todayLineColor = 'calculated';\n this.sectionBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"rgba\"])(102, 102, 255, 0.49);\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#fff400';\n this.taskBorderColor = '#534fbc';\n this.taskBkgColor = '#8a90dd';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = '#534fbc';\n this.activeTaskBkgColor = '#bfc7ff';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n /* state colors */\n\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n this.updateColors();\n }\n\n _createClass(Theme, [{\n key: \"updateColors\",\n value: function updateColors() {\n /* Flowchart variables */\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1; // border 1\n\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.textColor;\n this.edgeLabelBackground = this.labelBackground;\n /* Sequence Diagram variables */\n // this.actorBorder = lighten(this.border1, 0.5);\n\n this.actorBorder = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.signalColor = this.textColor;\n this.signalTextColor = this.textColor;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n /* Gantt chart variables */\n\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n /* state colors */\n\n /* class */\n\n this.classText = this.primaryTextColor;\n /* journey */\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 64\n });\n this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 64\n });\n this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -64\n });\n this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: -64\n });\n this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 128\n });\n this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 128\n });\n }\n }, {\n key: \"calculate\",\n value: function calculate(overrides) {\n var _this = this;\n\n if (_typeof(overrides) !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n }); // Calculate colors form base colors\n\n this.updateColors(); // Copy values from overrides again in case of an override of derived value\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n });\n }\n }]);\n\n return Theme;\n}();\n\nvar getThemeVariables = function getThemeVariables(userOverrides) {\n var theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n\n/***/ }),\n\n/***/ \"./src/themes/theme-forest.js\":\n/*!************************************!*\\\n !*** ./src/themes/theme-forest.js ***!\n \\************************************/\n/*! exports provided: getThemeVariables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getThemeVariables\", function() { return getThemeVariables; });\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ \"khroma\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ \"./src/themes/theme-helpers.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar Theme =\n/*#__PURE__*/\nfunction () {\n function Theme() {\n _classCallCheck(this, Theme);\n\n /* Base vales */\n this.background = '#f4f4f4';\n this.primaryColor = '#cde498';\n this.secondaryColor = '#cdffb2';\n this.background = 'white';\n this.mainBkg = '#cde498';\n this.secondBkg = '#cdffb2';\n this.lineColor = 'green';\n this.border1 = '#13540c';\n this.border2 = '#6eaa49';\n this.arrowheadColor = 'green';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])('#cde498', 10);\n this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.tertiaryColor, this.darkMode);\n this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.primaryColor);\n this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.secondaryColor);\n this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.primaryColor);\n this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = '#333';\n this.edgeLabelBackground = '#e8e8e8';\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'black';\n this.actorLineColor = 'grey';\n this.signalColor = '#333';\n this.signalTextColor = '#333';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = '#326932';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = '#fff5ad';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n /* Gantt chart variables */\n\n this.sectionBkgColor = '#6eaa49';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = '#6eaa49';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = '#487e3a';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'black';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'lightgrey';\n this.doneTaskBkgColor = 'lightgrey';\n this.doneTaskBorderColor = 'grey';\n this.critBorderColor = '#ff8888';\n this.critBkgColor = 'red';\n this.todayLineColor = 'red';\n /* state colors */\n\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n\n _createClass(Theme, [{\n key: \"updateColors\",\n value: function updateColors() {\n /* Flowchart variables */\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n /* Sequence Diagram variables */\n\n this.actorBorder = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])(this.mainBkg, 20);\n this.actorBkg = this.mainBkg;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelTextColor = this.actorTextColor;\n this.loopTextColor = this.actorTextColor;\n this.noteBorderColor = this.border2;\n this.noteTextColor = this.actorTextColor;\n /* Gantt chart variables */\n\n this.taskBorderColor = this.border1;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n /* state colors */\n\n /* class */\n\n this.classText = this.primaryTextColor;\n /* journey */\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 64\n });\n this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 64\n });\n this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -64\n });\n this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: -64\n });\n this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 128\n });\n this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 128\n });\n }\n }, {\n key: \"calculate\",\n value: function calculate(overrides) {\n var _this = this;\n\n if (_typeof(overrides) !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n }); // Calculate colors form base colors\n\n this.updateColors(); // Copy values from overrides again in case of an override of derived value\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n });\n }\n }]);\n\n return Theme;\n}();\n\nvar getThemeVariables = function getThemeVariables(userOverrides) {\n var theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n\n/***/ }),\n\n/***/ \"./src/themes/theme-helpers.js\":\n/*!*************************************!*\\\n !*** ./src/themes/theme-helpers.js ***!\n \\*************************************/\n/*! exports provided: mkBorder */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mkBorder\", function() { return mkBorder; });\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ \"khroma\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);\n\nvar mkBorder = function mkBorder(col, darkMode) {\n return darkMode ? Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(col, {\n s: -40,\n l: 10\n }) : Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(col, {\n s: -40,\n l: -10\n });\n};\n\n/***/ }),\n\n/***/ \"./src/themes/theme-neutral.js\":\n/*!*************************************!*\\\n !*** ./src/themes/theme-neutral.js ***!\n \\*************************************/\n/*! exports provided: getThemeVariables */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getThemeVariables\", function() { return getThemeVariables; });\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! khroma */ \"khroma\");\n/* harmony import */ var khroma__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(khroma__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _theme_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./theme-helpers */ \"./src/themes/theme-helpers.js\");\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n // const Color = require ( 'khroma/dist/color' ).default\n// Color.format.hex.stringify(Color.parse('hsl(210, 66.6666666667%, 95%)')); // => \"#EAF2FB\"\n\nvar Theme =\n/*#__PURE__*/\nfunction () {\n function Theme() {\n _classCallCheck(this, Theme);\n\n this.primaryColor = '#eee';\n this.contrast = '#707070';\n this.secondaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.contrast, 55);\n this.background = '#ffffff'; // this.secondaryColor = adjust(this.primaryColor, { h: 120 });\n\n this.tertiaryColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -160\n });\n this.primaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.primaryColor, this.darkMode);\n this.secondaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.secondaryColor, this.darkMode);\n this.tertiaryBorderColor = Object(_theme_helpers__WEBPACK_IMPORTED_MODULE_1__[\"mkBorder\"])(this.tertiaryColor, this.darkMode); // this.noteBorderColor = mkBorder(this.noteBkgColor, this.darkMode);\n\n this.primaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.primaryColor);\n this.secondaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.secondaryColor);\n this.tertiaryTextColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.tertiaryColor);\n this.lineColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.textColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"invert\"])(this.background);\n this.altBackground = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.contrast, 55);\n this.mainBkg = '#eee';\n this.secondBkg = 'calculated';\n this.lineColor = '#666';\n this.border1 = '#999';\n this.border2 = 'calculated';\n this.note = '#ffa';\n this.text = '#333';\n this.critical = '#d42';\n this.done = '#bbb';\n this.arrowheadColor = '#333333';\n this.fontFamily = '\"trebuchet ms\", verdana, arial, sans-serif';\n this.fontSize = '16px';\n /* Flowchart variables */\n\n this.nodeBkg = 'calculated';\n this.nodeBorder = 'calculated';\n this.clusterBkg = 'calculated';\n this.clusterBorder = 'calculated';\n this.defaultLinkColor = 'calculated';\n this.titleColor = 'calculated';\n this.edgeLabelBackground = 'white';\n /* Sequence Diagram variables */\n\n this.actorBorder = 'calculated';\n this.actorBkg = 'calculated';\n this.actorTextColor = 'calculated';\n this.actorLineColor = 'calculated';\n this.signalColor = 'calculated';\n this.signalTextColor = 'calculated';\n this.labelBoxBkgColor = 'calculated';\n this.labelBoxBorderColor = 'calculated';\n this.labelTextColor = 'calculated';\n this.loopTextColor = 'calculated';\n this.noteBorderColor = 'calculated';\n this.noteBkgColor = 'calculated';\n this.noteTextColor = 'calculated';\n this.activationBorderColor = '#666';\n this.activationBkgColor = '#f4f4f4';\n this.sequenceNumberColor = 'white';\n /* Gantt chart variables */\n\n this.sectionBkgColor = 'calculated';\n this.altSectionBkgColor = 'white';\n this.sectionBkgColor2 = 'calculated';\n this.taskBorderColor = 'calculated';\n this.taskBkgColor = 'calculated';\n this.taskTextLightColor = 'white';\n this.taskTextColor = 'calculated';\n this.taskTextDarkColor = 'calculated';\n this.taskTextOutsideColor = 'calculated';\n this.taskTextClickableColor = '#003163';\n this.activeTaskBorderColor = 'calculated';\n this.activeTaskBkgColor = 'calculated';\n this.gridColor = 'calculated';\n this.doneTaskBkgColor = 'calculated';\n this.doneTaskBorderColor = 'calculated';\n this.critBkgColor = 'calculated';\n this.critBorderColor = 'calculated';\n this.todayLineColor = 'calculated';\n /* state colors */\n\n this.labelColor = 'black';\n this.errorBkgColor = '#552222';\n this.errorTextColor = '#552222';\n }\n\n _createClass(Theme, [{\n key: \"updateColors\",\n value: function updateColors() {\n this.secondBkg = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.contrast, 55);\n this.border2 = this.contrast;\n /* Flowchart variables */\n\n this.nodeBkg = this.mainBkg;\n this.nodeBorder = this.border1;\n this.clusterBkg = this.secondBkg;\n this.clusterBorder = this.border2;\n this.defaultLinkColor = this.lineColor;\n this.titleColor = this.text;\n /* Sequence Diagram variables */\n\n this.actorBorder = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.border1, 23);\n this.actorBkg = this.mainBkg;\n this.actorTextColor = this.text;\n this.actorLineColor = this.lineColor;\n this.signalColor = this.text;\n this.signalTextColor = this.text;\n this.labelBoxBkgColor = this.actorBkg;\n this.labelBoxBorderColor = this.actorBorder;\n this.labelTextColor = this.text;\n this.loopTextColor = this.text;\n this.noteBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])(this.note, 60);\n this.noteBkgColor = this.note;\n this.noteTextColor = this.actorTextColor;\n /* Gantt chart variables */\n\n this.sectionBkgColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.contrast, 30);\n this.sectionBkgColor2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.contrast, 30);\n this.taskBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])(this.contrast, 10);\n this.taskBkgColor = this.contrast;\n this.taskTextColor = this.taskTextLightColor;\n this.taskTextDarkColor = this.text;\n this.taskTextOutsideColor = this.taskTextDarkColor;\n this.activeTaskBorderColor = this.taskBorderColor;\n this.activeTaskBkgColor = this.mainBkg;\n this.gridColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"lighten\"])(this.border1, 30);\n this.doneTaskBkgColor = this.done;\n this.doneTaskBorderColor = this.lineColor;\n this.critBkgColor = this.critical;\n this.critBorderColor = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"darken\"])(this.critBkgColor, 10);\n this.todayLineColor = this.critBkgColor;\n /* state colors */\n\n /* class */\n\n this.classText = this.primaryTextColor;\n /* journey */\n\n this.fillType0 = this.primaryColor;\n this.fillType1 = this.secondaryColor;\n this.fillType2 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 64\n });\n this.fillType3 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 64\n });\n this.fillType4 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: -64\n });\n this.fillType5 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: -64\n });\n this.fillType6 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.primaryColor, {\n h: 128\n });\n this.fillType7 = Object(khroma__WEBPACK_IMPORTED_MODULE_0__[\"adjust\"])(this.secondaryColor, {\n h: 128\n });\n }\n }, {\n key: \"calculate\",\n value: function calculate(overrides) {\n var _this = this;\n\n if (_typeof(overrides) !== 'object') {\n // Calculate colors form base colors\n this.updateColors();\n return;\n }\n\n var keys = Object.keys(overrides); // Copy values from overrides, this is mainly for base colors\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n }); // Calculate colors form base colors\n\n this.updateColors(); // Copy values from overrides again in case of an override of derived value\n\n keys.forEach(function (k) {\n _this[k] = overrides[k];\n });\n }\n }]);\n\n return Theme;\n}();\n\nvar getThemeVariables = function getThemeVariables(userOverrides) {\n var theme = new Theme();\n theme.calculate(userOverrides);\n return theme;\n};\n\n/***/ }),\n\n/***/ \"./src/utils.js\":\n/*!**********************!*\\\n !*** ./src/utils.js ***!\n \\**********************/\n/*! exports provided: detectInit, detectDirective, detectType, isSubstringInArray, interpolateToCurve, formatUrl, runFunc, getStylesFromArray, generateId, random, assignWithDepth, getTextObj, drawSimpleText, wrapLabel, calculateTextHeight, calculateTextWidth, calculateTextDimensions, calculateSvgSizeAttrs, configureSvgSize, initIdGeneratior, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectInit\", function() { return detectInit; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectDirective\", function() { return detectDirective; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"detectType\", function() { return detectType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isSubstringInArray\", function() { return isSubstringInArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateToCurve\", function() { return interpolateToCurve; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatUrl\", function() { return formatUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"runFunc\", function() { return runFunc; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStylesFromArray\", function() { return getStylesFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"generateId\", function() { return generateId; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return random; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"assignWithDepth\", function() { return assignWithDepth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTextObj\", function() { return getTextObj; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"drawSimpleText\", function() { return drawSimpleText; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"wrapLabel\", function() { return wrapLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateTextHeight\", function() { return calculateTextHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateTextWidth\", function() { return calculateTextWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateTextDimensions\", function() { return calculateTextDimensions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"calculateSvgSizeAttrs\", function() { return calculateSvgSizeAttrs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"configureSvgSize\", function() { return configureSvgSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"initIdGeneratior\", function() { return initIdGeneratior; });\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @braintree/sanitize-url */ \"@braintree/sanitize-url\");\n/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(d3__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _diagrams_common_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./diagrams/common/common */ \"./src/diagrams/common/common.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./logger */ \"./src/logger.js\");\nvar _this = undefined;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\n\n\n\n // import cryptoRandomString from 'crypto-random-string';\n// Effectively an enum of the supported curve types, accessible by name\n\nvar d3CurveTypes = {\n curveBasis: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveBasis\"],\n curveBasisClosed: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisClosed\"],\n curveBasisOpen: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveBasisOpen\"],\n curveLinear: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinear\"],\n curveLinearClosed: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveLinearClosed\"],\n curveMonotoneX: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneX\"],\n curveMonotoneY: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveMonotoneY\"],\n curveNatural: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveNatural\"],\n curveStep: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveStep\"],\n curveStepAfter: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveStepAfter\"],\n curveStepBefore: d3__WEBPACK_IMPORTED_MODULE_1__[\"curveStepBefore\"]\n};\nvar directive = /[%]{2}[{]\\s*(?:(?:(\\w+)\\s*:|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nvar directiveWithoutOpen = /\\s*(?:(?:(\\w+)(?=:):|(\\w+))\\s*(?:(?:(\\w+))|((?:(?![}][%]{2}).|\\r?\\n)*))?\\s*)(?:[}][%]{2})?/gi;\nvar anyComment = /\\s*%%.*\\n/gm;\n/**\n * @function detectInit\n * Detects the init config object from the text\n * ```mermaid\n * %%{init: {\"theme\": \"debug\", \"logLevel\": 1 }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n * or\n * ```mermaid\n * %%{initialize: {\"theme\": \"dark\", logLevel: \"debug\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {object} the json object representing the init passed to mermaid.initialize()\n */\n\nvar detectInit = function detectInit(text) {\n var inits = detectDirective(text, /(?:init\\b)|(?:initialize\\b)/);\n var results = {};\n\n if (Array.isArray(inits)) {\n var args = inits.map(function (init) {\n return init.args;\n });\n results = assignWithDepth(results, _toConsumableArray(args));\n } else {\n results = inits.args;\n }\n\n if (results) {\n var type = detectType(text);\n ['config'].forEach(function (prop) {\n if (typeof results[prop] !== 'undefined') {\n if (type === 'flowchart-v2') {\n type = 'flowchart';\n }\n\n results[type] = results[prop];\n delete results[prop];\n }\n });\n }\n\n return results;\n};\n/**\n * @function detectDirective\n * Detects the directive from the text. Text can be single line or multiline. If type is null or omitted\n * the first directive encountered in text will be returned\n * ```mermaid\n * graph LR\n * %%{somedirective}%%\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @param {string|RegExp} type The directive to return (default: null)\n * @returns {object | Array} An object or Array representing the directive(s): { type: string, args: object|null } matched by the input type\n * if a single directive was found, that directive object will be returned.\n */\n\nvar detectDirective = function detectDirective(text) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n try {\n var commentWithoutDirectives = new RegExp(\"[%]{2}(?![{]\".concat(directiveWithoutOpen.source, \")(?=[}][%]{2}).*\\n\"), 'ig');\n text = text.trim().replace(commentWithoutDirectives, '').replace(/'/gm, '\"');\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug(\"Detecting diagram directive\".concat(type !== null ? ' type:' + type : '', \" based on the text:\").concat(text));\n var match,\n result = [];\n\n while ((match = directive.exec(text)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (match.index === directive.lastIndex) {\n directive.lastIndex++;\n }\n\n if (match && !type || type && match[1] && match[1].match(type) || type && match[2] && match[2].match(type)) {\n var _type = match[1] ? match[1] : match[2];\n\n var args = match[3] ? match[3].trim() : match[4] ? JSON.parse(match[4].trim()) : null;\n result.push({\n type: _type,\n args: args\n });\n }\n }\n\n if (result.length === 0) {\n result.push({\n type: text,\n args: null\n });\n }\n\n return result.length === 1 ? result[0] : result;\n } catch (error) {\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].error(\"ERROR: \".concat(error.message, \" - Unable to parse directive\\n \").concat(type !== null ? ' type:' + type : '', \" based on the text:\").concat(text));\n return {\n type: null,\n args: null\n };\n }\n};\n/**\n * @function detectType\n * Detects the type of the graph text. Takes into consideration the possible existence of an %%init\n * directive\n * ```mermaid\n * %%{initialize: {\"startOnLoad\": true, logLevel: \"fatal\" }}%%\n * graph LR\n * a-->b\n * b-->c\n * c-->d\n * d-->e\n * e-->f\n * f-->g\n * g-->h\n * ```\n *\n * @param {string} text The text defining the graph\n * @returns {string} A graph definition key\n */\n\nvar detectType = function detectType(text) {\n text = text.replace(directive, '').replace(anyComment, '\\n');\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].debug('Detecting diagram type based on the text ' + text);\n\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n\n if (text.match(/^\\s*classDiagram-v2/)) {\n return 'classDiagram';\n }\n\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram-v2/)) {\n return 'stateDiagram';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart-v2';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n if (text.match(/^\\s*erDiagram/)) {\n return 'er';\n }\n\n if (text.match(/^\\s*journey/)) {\n return 'journey';\n }\n\n if (text.match(/^\\s*requirement/) || text.match(/^\\s*requirementDiagram/)) {\n return 'requirement';\n }\n\n return 'flowchart';\n};\n\nvar memoize = function memoize(fn, resolver) {\n var cache = {};\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var n = resolver ? resolver.apply(_this, args) : args[0];\n\n if (n in cache) {\n return cache[n];\n } else {\n var result = fn.apply(void 0, args);\n cache[n] = result;\n return result;\n }\n };\n};\n/**\n * @function isSubstringInArray\n * Detects whether a substring in present in a given array\n * @param {string} str The substring to detect\n * @param {array} arr The array to search\n * @returns {number} the array index containing the substring or -1 if not present\n **/\n\n\nvar isSubstringInArray = function isSubstringInArray(str, arr) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i].match(str)) return i;\n }\n\n return -1;\n};\nvar interpolateToCurve = function interpolateToCurve(interpolate, defaultCurve) {\n if (!interpolate) {\n return defaultCurve;\n }\n\n var curveName = \"curve\".concat(interpolate.charAt(0).toUpperCase() + interpolate.slice(1));\n return d3CurveTypes[curveName] || defaultCurve;\n};\nvar formatUrl = function formatUrl(linkStr, config) {\n var url = linkStr.trim();\n\n if (url) {\n if (config.securityLevel !== 'loose') {\n return Object(_braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_0__[\"sanitizeUrl\"])(url);\n }\n\n return url;\n }\n};\nvar runFunc = function runFunc(functionName) {\n var _obj;\n\n var arrPaths = functionName.split('.');\n var len = arrPaths.length - 1;\n var fnName = arrPaths[len];\n var obj = window;\n\n for (var i = 0; i < len; i++) {\n obj = obj[arrPaths[i]];\n if (!obj) return;\n }\n\n for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n params[_key2 - 1] = arguments[_key2];\n }\n\n (_obj = obj)[fnName].apply(_obj, params);\n};\n\nvar distance = function distance(p1, p2) {\n return p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;\n};\n\nvar traverseEdge = function traverseEdge(points) {\n var prevPoint;\n var totalDistance = 0;\n points.forEach(function (point) {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n }); // Traverse half of total distance along points\n\n var remainingDistance = totalDistance / 2;\n var center = undefined;\n prevPoint = undefined;\n points.forEach(function (point) {\n if (prevPoint && !center) {\n var vectorDistance = distance(point, prevPoint);\n\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n var distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = {\n x: point.x,\n y: point.y\n };\n\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n\n prevPoint = point;\n });\n return center;\n};\n\nvar calcLabelPosition = function calcLabelPosition(points) {\n return traverseEdge(points);\n};\n\nvar calcCardinalityPosition = function calcCardinalityPosition(isRelationTypePresent, points, initialPosition) {\n var prevPoint;\n var totalDistance = 0; // eslint-disable-line\n\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('our points', points);\n\n if (points[0] !== initialPosition) {\n points = points.reverse();\n }\n\n points.forEach(function (point) {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n }); // Traverse only 25 total distance along points to find cardinality point\n\n var distanceToCardinalityPoint = 25;\n var remainingDistance = distanceToCardinalityPoint;\n var center;\n prevPoint = undefined;\n points.forEach(function (point) {\n if (prevPoint && !center) {\n var vectorDistance = distance(point, prevPoint);\n\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n var distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = {\n x: point.x,\n y: point.y\n };\n\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n\n prevPoint = point;\n }); // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n\n var d = isRelationTypePresent ? 10 : 5; //Calculate Angle for x and y axis\n\n var angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n var cardinalityPosition = {\n x: 0,\n y: 0\n }; //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n return cardinalityPosition;\n};\n/**\n * position ['start_left', 'start_right', 'end_left', 'end_right']\n */\n\n\nvar calcTerminalLabelPosition = function calcTerminalLabelPosition(terminalMarkerSize, position, _points) {\n // Todo looking to faster cloning method\n var points = JSON.parse(JSON.stringify(_points));\n var prevPoint;\n var totalDistance = 0; // eslint-disable-line\n\n _logger__WEBPACK_IMPORTED_MODULE_3__[\"log\"].info('our points', points);\n\n if (position !== 'start_left' && position !== 'start_right') {\n points = points.reverse();\n }\n\n points.forEach(function (point) {\n totalDistance += distance(point, prevPoint);\n prevPoint = point;\n }); // Traverse only 25 total distance along points to find cardinality point\n\n var distanceToCardinalityPoint = 25;\n var remainingDistance = distanceToCardinalityPoint;\n var center;\n prevPoint = undefined;\n points.forEach(function (point) {\n if (prevPoint && !center) {\n var vectorDistance = distance(point, prevPoint);\n\n if (vectorDistance < remainingDistance) {\n remainingDistance -= vectorDistance;\n } else {\n // The point is remainingDistance from prevPoint in the vector between prevPoint and point\n // Calculate the coordinates\n var distanceRatio = remainingDistance / vectorDistance;\n if (distanceRatio <= 0) center = prevPoint;\n if (distanceRatio >= 1) center = {\n x: point.x,\n y: point.y\n };\n\n if (distanceRatio > 0 && distanceRatio < 1) {\n center = {\n x: (1 - distanceRatio) * prevPoint.x + distanceRatio * point.x,\n y: (1 - distanceRatio) * prevPoint.y + distanceRatio * point.y\n };\n }\n }\n }\n\n prevPoint = point;\n }); // if relation is present (Arrows will be added), change cardinality point off-set distance (d)\n\n var d = 10; //Calculate Angle for x and y axis\n\n var angle = Math.atan2(points[0].y - center.y, points[0].x - center.x);\n var cardinalityPosition = {\n x: 0,\n y: 0\n }; //Calculation cardinality position using angle, center point on the line/curve but pendicular and with offset-distance\n\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2;\n\n if (position === 'start_left') {\n cardinalityPosition.x = Math.sin(angle + Math.PI) * d + (points[0].x + center.x) / 2;\n cardinalityPosition.y = -Math.cos(angle + Math.PI) * d + (points[0].y + center.y) / 2;\n }\n\n if (position === 'end_right') {\n cardinalityPosition.x = Math.sin(angle - Math.PI) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle - Math.PI) * d + (points[0].y + center.y) / 2 - 5;\n }\n\n if (position === 'end_left') {\n cardinalityPosition.x = Math.sin(angle) * d + (points[0].x + center.x) / 2 - 5;\n cardinalityPosition.y = -Math.cos(angle) * d + (points[0].y + center.y) / 2 - 5;\n }\n\n return cardinalityPosition;\n};\n\nvar getStylesFromArray = function getStylesFromArray(arr) {\n var style = '';\n var labelStyle = '';\n\n for (var i = 0; i < arr.length; i++) {\n if (typeof arr[i] !== 'undefined') {\n // add text properties to label style definition\n if (arr[i].startsWith('color:') || arr[i].startsWith('text-align:')) {\n labelStyle = labelStyle + arr[i] + ';';\n } else {\n style = style + arr[i] + ';';\n }\n }\n }\n\n return {\n style: style,\n labelStyle: labelStyle\n };\n};\nvar cnt = 0;\nvar generateId = function generateId() {\n cnt++;\n return 'id-' + Math.random().toString(36).substr(2, 12) + '-' + cnt;\n};\n\nfunction makeid(length) {\n var result = '';\n var characters = '0123456789abcdef';\n var charactersLength = characters.length;\n\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n\n return result;\n}\n\nvar random = function random(options) {\n return makeid(options.length);\n};\n/**\n * @function assignWithDepth\n * Extends the functionality of {@link ObjectConstructor.assign} with the ability to merge arbitrary-depth objects\n * For each key in src with path `k` (recursively) performs an Object.assign(dst[`k`], src[`k`]) with\n * a slight change from the typical handling of undefined for dst[`k`]: instead of raising an error,\n * dst[`k`] is auto-initialized to {} and effectively merged with src[`k`]\n * <p>\n * Additionally, dissimilar types will not clobber unless the config.clobber parameter === true. Example:\n * ```\n * let config_0 = { foo: { bar: 'bar' }, bar: 'foo' };\n * let config_1 = { foo: 'foo', bar: 'bar' };\n * let result = assignWithDepth(config_0, config_1);\n * console.log(result);\n * //-> result: { foo: { bar: 'bar' }, bar: 'bar' }\n * ```\n * <p>\n * Traditional Object.assign would have clobbered foo in config_0 with foo in config_1.\n * <p>\n * If src is a destructured array of objects and dst is not an array, assignWithDepth will apply each element of src to dst\n * in order.\n * @param dst:any - the destination of the merge\n * @param src:any - the source object(s) to merge into destination\n * @param config:{ depth: number, clobber: boolean } - depth: depth to traverse within src and dst for merging -\n * clobber: should dissimilar types clobber (default: { depth: 2, clobber: false })\n * @returns {*}\n */\n\nvar assignWithDepth = function assignWithDepth(dst, src, config) {\n var _Object$assign = Object.assign({\n depth: 2,\n clobber: false\n }, config),\n depth = _Object$assign.depth,\n clobber = _Object$assign.clobber;\n\n if (Array.isArray(src) && !Array.isArray(dst)) {\n src.forEach(function (s) {\n return assignWithDepth(dst, s, config);\n });\n return dst;\n } else if (Array.isArray(src) && Array.isArray(dst)) {\n src.forEach(function (s) {\n if (dst.indexOf(s) === -1) {\n dst.push(s);\n }\n });\n return dst;\n }\n\n if (typeof dst === 'undefined' || depth <= 0) {\n if (dst !== undefined && dst !== null && _typeof(dst) === 'object' && _typeof(src) === 'object') {\n return Object.assign(dst, src);\n } else {\n return src;\n }\n }\n\n if (typeof src !== 'undefined' && _typeof(dst) === 'object' && _typeof(src) === 'object') {\n Object.keys(src).forEach(function (key) {\n if (_typeof(src[key]) === 'object' && (dst[key] === undefined || _typeof(dst[key]) === 'object')) {\n if (dst[key] === undefined) {\n dst[key] = Array.isArray(src[key]) ? [] : {};\n }\n\n dst[key] = assignWithDepth(dst[key], src[key], {\n depth: depth - 1,\n clobber: clobber\n });\n } else if (clobber || _typeof(dst[key]) !== 'object' && _typeof(src[key]) !== 'object') {\n dst[key] = src[key];\n }\n });\n }\n\n return dst;\n};\nvar getTextObj = function getTextObj() {\n return {\n x: 0,\n y: 0,\n fill: undefined,\n anchor: 'start',\n style: '#666',\n width: 100,\n height: 100,\n textMargin: 0,\n rx: 0,\n ry: 0,\n valign: undefined\n };\n};\nvar drawSimpleText = function drawSimpleText(elem, textData) {\n // Remove and ignore br:s\n var nText = textData.text.replace(_diagrams_common_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lineBreakRegex, ' ');\n var textElem = elem.append('text');\n textElem.attr('x', textData.x);\n textElem.attr('y', textData.y);\n textElem.style('text-anchor', textData.anchor);\n textElem.style('font-family', textData.fontFamily);\n textElem.style('font-size', textData.fontSize);\n textElem.style('font-weight', textData.fontWeight);\n textElem.attr('fill', textData.fill);\n\n if (typeof textData.class !== 'undefined') {\n textElem.attr('class', textData.class);\n }\n\n var span = textElem.append('tspan');\n span.attr('x', textData.x + textData.textMargin * 2);\n span.attr('fill', textData.fill);\n span.text(nText);\n return textElem;\n};\nvar wrapLabel = memoize(function (label, maxWidth, config) {\n if (!label) {\n return label;\n }\n\n config = Object.assign({\n fontSize: 12,\n fontWeight: 400,\n fontFamily: 'Arial',\n joinWith: '<br/>'\n }, config);\n\n if (_diagrams_common_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lineBreakRegex.test(label)) {\n return label;\n }\n\n var words = label.split(' ');\n var completedLines = [];\n var nextLine = '';\n words.forEach(function (word, index) {\n var wordLength = calculateTextWidth(\"\".concat(word, \" \"), config);\n var nextLineLength = calculateTextWidth(nextLine, config);\n\n if (wordLength > maxWidth) {\n var _breakString = breakString(word, maxWidth, '-', config),\n hyphenatedStrings = _breakString.hyphenatedStrings,\n remainingWord = _breakString.remainingWord;\n\n completedLines.push.apply(completedLines, [nextLine].concat(_toConsumableArray(hyphenatedStrings)));\n nextLine = remainingWord;\n } else if (nextLineLength + wordLength >= maxWidth) {\n completedLines.push(nextLine);\n nextLine = word;\n } else {\n nextLine = [nextLine, word].filter(Boolean).join(' ');\n }\n\n var currentWord = index + 1;\n var isLastWord = currentWord === words.length;\n\n if (isLastWord) {\n completedLines.push(nextLine);\n }\n });\n return completedLines.filter(function (line) {\n return line !== '';\n }).join(config.joinWith);\n}, function (label, maxWidth, config) {\n return \"\".concat(label, \"-\").concat(maxWidth, \"-\").concat(config.fontSize, \"-\").concat(config.fontWeight, \"-\").concat(config.fontFamily, \"-\").concat(config.joinWith);\n});\nvar breakString = memoize(function (word, maxWidth) {\n var hyphenCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '-';\n var config = arguments.length > 3 ? arguments[3] : undefined;\n config = Object.assign({\n fontSize: 12,\n fontWeight: 400,\n fontFamily: 'Arial',\n margin: 0\n }, config);\n var characters = word.split('');\n var lines = [];\n var currentLine = '';\n characters.forEach(function (character, index) {\n var nextLine = \"\".concat(currentLine).concat(character);\n var lineWidth = calculateTextWidth(nextLine, config);\n\n if (lineWidth >= maxWidth) {\n var currentCharacter = index + 1;\n var isLastLine = characters.length === currentCharacter;\n var hyphenatedNextLine = \"\".concat(nextLine).concat(hyphenCharacter);\n lines.push(isLastLine ? nextLine : hyphenatedNextLine);\n currentLine = '';\n } else {\n currentLine = nextLine;\n }\n });\n return {\n hyphenatedStrings: lines,\n remainingWord: currentLine\n };\n}, function (word, maxWidth) {\n var hyphenCharacter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '-';\n var config = arguments.length > 3 ? arguments[3] : undefined;\n return \"\".concat(word, \"-\").concat(maxWidth, \"-\").concat(hyphenCharacter, \"-\").concat(config.fontSize, \"-\").concat(config.fontWeight, \"-\").concat(config.fontFamily);\n});\n/**\n * This calculates the text's height, taking into account the wrap breaks and\n * both the statically configured height, width, and the length of the text (in pixels).\n *\n * If the wrapped text text has greater height, we extend the height, so it's\n * value won't overflow.\n *\n * @return - The height for the given text\n * @param text the text to measure\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\n\nvar calculateTextHeight = function calculateTextHeight(text, config) {\n config = Object.assign({\n fontSize: 12,\n fontWeight: 400,\n fontFamily: 'Arial',\n margin: 15\n }, config);\n return calculateTextDimensions(text, config).height;\n};\n/**\n * This calculates the width of the given text, font size and family.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, and fontWeight all impacting the resulting size\n */\n\nvar calculateTextWidth = function calculateTextWidth(text, config) {\n config = Object.assign({\n fontSize: 12,\n fontWeight: 400,\n fontFamily: 'Arial'\n }, config);\n return calculateTextDimensions(text, config).width;\n};\n/**\n * This calculates the dimensions of the given text, font size, font family, font weight, and margins.\n *\n * @return - The width for the given text\n * @param text - The text to calculate the width of\n * @param config - the config for fontSize, fontFamily, fontWeight, and margin all impacting the resulting size\n */\n\nvar calculateTextDimensions = memoize(function (text, config) {\n config = Object.assign({\n fontSize: 12,\n fontWeight: 400,\n fontFamily: 'Arial'\n }, config);\n var _config = config,\n fontSize = _config.fontSize,\n fontFamily = _config.fontFamily,\n fontWeight = _config.fontWeight;\n\n if (!text) {\n return {\n width: 0,\n height: 0\n };\n } // We can't really know if the user supplied font family will render on the user agent;\n // thus, we'll take the max width between the user supplied font family, and a default\n // of sans-serif.\n\n\n var fontFamilies = ['sans-serif', fontFamily];\n var lines = text.split(_diagrams_common_common__WEBPACK_IMPORTED_MODULE_2__[\"default\"].lineBreakRegex);\n var dims = [];\n var body = Object(d3__WEBPACK_IMPORTED_MODULE_1__[\"select\"])('body'); // We don't want to leak DOM elements - if a removal operation isn't available\n // for any reason, do not continue.\n\n if (!body.remove) {\n return {\n width: 0,\n height: 0,\n lineHeight: 0\n };\n }\n\n var g = body.append('svg');\n\n for (var _i = 0, _fontFamilies = fontFamilies; _i < _fontFamilies.length; _i++) {\n var _fontFamily = _fontFamilies[_i];\n var cheight = 0;\n var dim = {\n width: 0,\n height: 0,\n lineHeight: 0\n };\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var line = _step.value;\n var textObj = getTextObj();\n textObj.text = line;\n var textElem = drawSimpleText(g, textObj).style('font-size', fontSize).style('font-weight', fontWeight).style('font-family', _fontFamily);\n var bBox = (textElem._groups || textElem)[0][0].getBBox();\n dim.width = Math.round(Math.max(dim.width, bBox.width));\n cheight = Math.round(bBox.height);\n dim.height += cheight;\n dim.lineHeight = Math.round(Math.max(dim.lineHeight, cheight));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n dims.push(dim);\n }\n\n g.remove();\n var index = isNaN(dims[1].height) || isNaN(dims[1].width) || isNaN(dims[1].lineHeight) || dims[0].height > dims[1].height && dims[0].width > dims[1].width && dims[0].lineHeight > dims[1].lineHeight ? 0 : 1;\n return dims[index];\n}, function (text, config) {\n return \"\".concat(text, \"-\").concat(config.fontSize, \"-\").concat(config.fontWeight, \"-\").concat(config.fontFamily);\n});\n\nvar d3Attrs = function d3Attrs(d3Elem, attrs) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = attrs[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var attr = _step2.value;\n d3Elem.attr(attr[0], attr[1]);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n};\n\nvar calculateSvgSizeAttrs = function calculateSvgSizeAttrs(height, width, useMaxWidth) {\n var attrs = new Map();\n attrs.set('height', height);\n\n if (useMaxWidth) {\n attrs.set('width', '100%');\n attrs.set('style', \"max-width: \".concat(width, \"px;\"));\n } else {\n attrs.set('width', width);\n }\n\n return attrs;\n};\nvar configureSvgSize = function configureSvgSize(svgElem, height, width, useMaxWidth) {\n var attrs = calculateSvgSizeAttrs(height, width, useMaxWidth);\n d3Attrs(svgElem, attrs);\n};\nvar initIdGeneratior =\n/*#__PURE__*/\nfunction () {\n function iterator(deterministic, seed) {\n _classCallCheck(this, iterator);\n\n this.deterministic = deterministic;\n this.seed = seed;\n this.count = seed ? seed.length : 0;\n }\n\n _createClass(iterator, [{\n key: \"next\",\n value: function next() {\n if (!this.deterministic) return Date.now();\n return this.count++;\n }\n }]);\n\n return iterator;\n}();\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n assignWithDepth: assignWithDepth,\n wrapLabel: wrapLabel,\n calculateTextHeight: calculateTextHeight,\n calculateTextWidth: calculateTextWidth,\n calculateTextDimensions: calculateTextDimensions,\n calculateSvgSizeAttrs: calculateSvgSizeAttrs,\n configureSvgSize: configureSvgSize,\n detectInit: detectInit,\n detectDirective: detectDirective,\n detectType: detectType,\n isSubstringInArray: isSubstringInArray,\n interpolateToCurve: interpolateToCurve,\n calcLabelPosition: calcLabelPosition,\n calcCardinalityPosition: calcCardinalityPosition,\n calcTerminalLabelPosition: calcTerminalLabelPosition,\n formatUrl: formatUrl,\n getStylesFromArray: getStylesFromArray,\n generateId: generateId,\n random: random,\n memoize: memoize,\n runFunc: runFunc,\n initIdGeneratior: initIdGeneratior\n});\n\n/***/ }),\n\n/***/ \"@braintree/sanitize-url\":\n/*!******************************************!*\\\n !*** external \"@braintree/sanitize-url\" ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@braintree/sanitize-url\");\n\n/***/ }),\n\n/***/ \"d3\":\n/*!*********************!*\\\n !*** external \"d3\" ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"d3\");\n\n/***/ }),\n\n/***/ \"dagre\":\n/*!************************!*\\\n !*** external \"dagre\" ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"dagre\");\n\n/***/ }),\n\n/***/ \"dagre-d3\":\n/*!***************************!*\\\n !*** external \"dagre-d3\" ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"dagre-d3\");\n\n/***/ }),\n\n/***/ \"dagre-d3/lib/label/add-html-label.js\":\n/*!*******************************************************!*\\\n !*** external \"dagre-d3/lib/label/add-html-label.js\" ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"dagre-d3/lib/label/add-html-label.js\");\n\n/***/ }),\n\n/***/ \"entity-decode/browser\":\n/*!****************************************!*\\\n !*** external \"entity-decode/browser\" ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"entity-decode/browser\");\n\n/***/ }),\n\n/***/ \"graphlib\":\n/*!***************************!*\\\n !*** external \"graphlib\" ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"graphlib\");\n\n/***/ }),\n\n/***/ \"khroma\":\n/*!*************************!*\\\n !*** external \"khroma\" ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"khroma\");\n\n/***/ }),\n\n/***/ \"moment-mini\":\n/*!******************************!*\\\n !*** external \"moment-mini\" ***!\n \\******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"moment-mini\");\n\n/***/ }),\n\n/***/ \"stylis\":\n/*!*************************!*\\\n !*** external \"stylis\" ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"stylis\");\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=mermaid.core.js.map","var map = {\n\t\"./locale\": \"./node_modules/moment-mini/locale/locale.js\",\n\t\"./locale.js\": \"./node_modules/moment-mini/locale/locale.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment-mini/locale sync recursive ^\\\\.\\\\/.*$\";","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){\"use strict\";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||\"[object Array]\"===Object.prototype.toString.call(e)}function u(e){return null!=e&&\"[object Object]\"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return\"number\"==typeof e||\"[object Number]\"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||\"[object Date]\"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,\"toString\")&&(e.toString=t.toString),m(t,\"valueOf\")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e=\"\",\"object\"==typeof arguments[n]){for(var s in e+=\"\\n[\"+n+\"] \",arguments[0])e+=s+\": \"+arguments[0][s]+\", \";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+\"\\nArguments: \"+Array.prototype.slice.call(t).join(\"\")+\"\\n\"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||\"[object Function]\"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+\"s\"]=W[t]=e}function R(e){return\"string\"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=\"\"+Math.abs(e),i=t-s.length;return(0<=e?n?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;\"string\"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\\[[\\s\\S]/)?t.replace(/^\\[|\\]$/g,\"\"):t.replace(/\\\\/g,\"\");return function(e){var t,n=\"\";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\\d/,z=/\\d\\d/,$=/\\d{3}/,q=/\\d{4}/,J=/[+-]?\\d{6}/,B=/\\d\\d?/,Q=/\\d\\d\\d\\d?/,X=/\\d\\d\\d\\d\\d\\d?/,K=/\\d{1,3}/,ee=/\\d{1,4}/,te=/[+-]?\\d{1,6}/,ne=/\\d+/,se=/[+-]?\\d+/,ie=/Z|[+-]\\d\\d:?\\d\\d/gi,re=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,ae=/[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}var he={};function ce(e,n){var t,s=n;for(\"string\"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I(\"Y\",0,0,function(){var e=this.year();return e<=9999?\"\"+e:\"+\"+e}),I(0,[\"YY\",2],0,function(){return this.year()%100}),I(0,[\"YYYY\",4],0,\"year\"),I(0,[\"YYYYY\",5],0,\"year\"),I(0,[\"YYYYYY\",6,!0],0,\"year\"),H(\"year\",\"y\"),L(\"year\",1),ue(\"Y\",se),ue(\"YY\",B,z),ue(\"YYYY\",ee,q),ue(\"YYYYY\",te,J),ue(\"YYYYYY\",te,J),ce([\"YYYYY\",\"YYYYYY\"],me),ce(\"YYYY\",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce(\"YY\",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce(\"Y\",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te(\"FullYear\",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d[\"get\"+(e._isUTC?\"UTC\":\"\")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&(\"FullYear\"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+t](n,e.month(),Pe(n,e.month())):e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),I(\"MMM\",0,0,function(e){return this.localeData().monthsShort(this,e)}),I(\"MMMM\",0,0,function(e){return this.localeData().months(this,e)}),H(\"month\",\"M\"),L(\"month\",8),ue(\"M\",B),ue(\"MM\",B,z),ue(\"MMM\",function(e,t){return t.monthsShortRegex(e)}),ue(\"MMMM\",function(e,t){return t.monthsRegex(e)}),ce([\"M\",\"MM\"],function(e,t){t[_e]=k(e)-1}),ce([\"MMM\",\"MMMM\"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,He=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\");var Re=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\");function Ce(e,t){var n;if(!e.isValid())return e;if(\"string\"==typeof t)if(/^\\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d[\"set\"+(e._isUTC?\"UTC\":\"\")+\"Month\"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,\"Month\")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,\"\")),i.push(this.months(n,\"\")),r.push(this.months(n,\"\")),r.push(this.monthsShort(n,\"\"));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp(\"^(\"+r.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+i.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+s.join(\"|\")+\")\",\"i\")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return o<=0?a=De(r=e-1)+o:o>De(e)?(r=e+1,a=o-De(e)):(r=e,a=o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I(\"w\",[\"ww\",2],\"wo\",\"week\"),I(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),H(\"week\",\"w\"),H(\"isoWeek\",\"W\"),L(\"week\",5),L(\"isoWeek\",5),ue(\"w\",B),ue(\"ww\",B,z),ue(\"W\",B),ue(\"WW\",B,z),fe([\"w\",\"ww\",\"W\",\"WW\"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I(\"d\",0,\"do\",\"day\"),I(\"dd\",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I(\"ddd\",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I(\"dddd\",0,0,function(e){return this.localeData().weekdays(this,e)}),I(\"e\",0,0,\"weekday\"),I(\"E\",0,0,\"isoWeekday\"),H(\"day\",\"d\"),H(\"weekday\",\"e\"),H(\"isoWeekday\",\"E\"),L(\"day\",11),L(\"weekday\",11),L(\"isoWeekday\",11),ue(\"d\",B),ue(\"e\",B),ue(\"E\",B),ue(\"dd\",function(e,t){return t.weekdaysMinRegex(e)}),ue(\"ddd\",function(e,t){return t.weekdaysShortRegex(e)}),ue(\"dddd\",function(e,t){return t.weekdaysRegex(e)}),fe([\"dd\",\"ddd\",\"dddd\"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe([\"d\",\"e\",\"E\"],function(e,t,n,s){t[s]=k(e)});var je=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\");var Ze=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\");var ze=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,\"\"),i=this.weekdaysShort(n,\"\"),r=this.weekdays(n,\"\"),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp(\"^(\"+l.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+u.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+o.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+a.join(\"|\")+\")\",\"i\")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I(\"H\",[\"HH\",2],0,\"hour\"),I(\"h\",[\"hh\",2],0,Qe),I(\"k\",[\"kk\",2],0,function(){return this.hours()||24}),I(\"hmm\",0,0,function(){return\"\"+Qe.apply(this)+U(this.minutes(),2)}),I(\"hmmss\",0,0,function(){return\"\"+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I(\"Hmm\",0,0,function(){return\"\"+this.hours()+U(this.minutes(),2)}),I(\"Hmmss\",0,0,function(){return\"\"+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe(\"a\",!0),Xe(\"A\",!1),H(\"hour\",\"h\"),L(\"hour\",13),ue(\"a\",Ke),ue(\"A\",Ke),ue(\"H\",B),ue(\"h\",B),ue(\"k\",B),ue(\"HH\",B,z),ue(\"hh\",B,z),ue(\"kk\",B,z),ue(\"hmm\",Q),ue(\"hmmss\",X),ue(\"Hmm\",Q),ue(\"Hmmss\",X),ce([\"H\",\"HH\"],ge),ce([\"k\",\"kk\"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce([\"a\",\"A\"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce([\"h\",\"hh\"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce(\"hmm\",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce(\"hmmss\",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce(\"Hmm\",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce(\"Hmmss\",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te(\"Hours\",!0),nt={calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},longDateFormat:{LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},invalidDate:\"Invalid date\",ordinal:\"%d\",dayOfMonthOrdinalParse:/\\d{1,2}/,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\\.?m?\\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace(\"_\",\"-\"):e}function at(e){var t=null;if(!st[e]&&\"undefined\"!=typeof module&&module&&module.exports)try{t=et._abbr,require(\"./locale/\"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:\"undefined\"!=typeof console&&console.warn&&console.warn(\"Locale \"+e+\" not found. Did you forget to load it?\")),et._abbr}function ut(e,t){if(null!==t){var n,s=nt;if(t.abbr=e,null!=st[e])T(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}return delete st[e],null}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split(\"-\")).length,n=(n=rt(e[r+1]))?n.split(\"-\"):null;0<t;){if(s=at(i.slice(0,t).join(\"-\")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,mt=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,_t=/Z|[+-]\\d\\d(?::?\\d\\d)?/,yt=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],gt=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],pt=/^\\/?Date\\((\\-?\\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||\" \")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a=\"Z\"}e._f=i+(r||\"\")+(a||\"\"),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\\([^)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").trim());if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=\"\"+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&\"\"===r?v({nullInput:!0}):(\"string\"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):\"string\"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,\"d\"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(e){e._d=new Date(e._i+(e._useUTC?\" UTC\":\"\"))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t=\"+\";return e<0&&(e=-e,t=\"-\"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft(\"Z\",\":\"),Ft(\"ZZ\",\"\"),ue(\"Z\",re),ue(\"ZZ\",re),ce([\"Z\",\"ZZ\"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\\+\\-]|\\d\\d)/gi;function Ut(e,t){var n=(t||\"\").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+\"\").match(Lt)||[\"-\",0,0],i=60*s[1]+k(s[2]);return 0===i?0:\"+\"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\\-|\\+)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,It=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n=\"-\"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n=\"-\"===a[1]?-1:(a[1],1),r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:\"object\"==typeof r&&(\"from\"in r||\"to\"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,\"_locale\")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(\",\",\".\"));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,\"M\").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,\"M\"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,\"moment().\"+i+\"(period, number) is deprecated. Please use moment().\"+i+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),n=e,e=t,t=n),$t(this,At(e=\"string\"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,\"Month\")+a*n),r&&be(e,\"Date\",xe(e,\"Date\")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,\"add\"),Jt=zt(-1,\"subtract\");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,\"months\");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,\"months\")):(t-s)/(e.clone().add(n+1,\"months\")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",c.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var Xt=n(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,[\"gg\",2],0,function(){return this.weekYear()%100}),I(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),en(\"gggg\",\"weekYear\"),en(\"ggggg\",\"weekYear\"),en(\"GGGG\",\"isoWeekYear\"),en(\"GGGGG\",\"isoWeekYear\"),H(\"weekYear\",\"gg\"),H(\"isoWeekYear\",\"GG\"),L(\"weekYear\",1),L(\"isoWeekYear\",1),ue(\"G\",se),ue(\"g\",se),ue(\"GG\",B,z),ue(\"gg\",B,z),ue(\"GGGG\",ee,q),ue(\"gggg\",ee,q),ue(\"GGGGG\",te,J),ue(\"ggggg\",te,J),fe([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe([\"gg\",\"GG\"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I(\"Q\",0,\"Qo\",\"quarter\"),H(\"quarter\",\"Q\"),L(\"quarter\",7),ue(\"Q\",Z),ce(\"Q\",function(e,t){t[_e]=3*(k(e)-1)}),I(\"D\",[\"DD\",2],\"Do\",\"date\"),H(\"date\",\"D\"),L(\"date\",9),ue(\"D\",B),ue(\"DD\",B,z),ue(\"Do\",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce([\"D\",\"DD\"],ye),ce(\"Do\",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te(\"Date\",!0);I(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),H(\"dayOfYear\",\"DDD\"),L(\"dayOfYear\",4),ue(\"DDD\",K),ue(\"DDDD\",$),ce([\"DDD\",\"DDDD\"],function(e,t,n){n._dayOfYear=k(e)}),I(\"m\",[\"mm\",2],0,\"minute\"),H(\"minute\",\"m\"),L(\"minute\",14),ue(\"m\",B),ue(\"mm\",B,z),ce([\"m\",\"mm\"],pe);var sn=Te(\"Minutes\",!1);I(\"s\",[\"ss\",2],0,\"second\"),H(\"second\",\"s\"),L(\"second\",15),ue(\"s\",B),ue(\"ss\",B,z),ce([\"s\",\"ss\"],ve);var rn,an=Te(\"Seconds\",!1);for(I(\"S\",0,0,function(){return~~(this.millisecond()/100)}),I(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),I(0,[\"SSS\",3],0,\"millisecond\"),I(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),I(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),I(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),I(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),I(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),I(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),H(\"millisecond\",\"ms\"),L(\"millisecond\",16),ue(\"S\",K,Z),ue(\"SS\",K,z),ue(\"SSS\",K,$),rn=\"SSSS\";rn.length<=9;rn+=\"S\")ue(rn,ne);function on(e,t){t[we]=k(1e3*(\"0.\"+e))}for(rn=\"S\";rn.length<=9;rn+=\"S\")ce(rn,on);var un=Te(\"Milliseconds\",!1);I(\"z\",0,0,\"zoneAbbr\"),I(\"zz\",0,0,\"zoneName\");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf(\"day\"),i=c.calendarFormat(this,s)||\"sameElse\",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case\"year\":r=Bt(this,s)/12;break;case\"month\":r=Bt(this,s);break;case\"quarter\":r=Bt(this,s)/3;break;case\"second\":r=(this-s)/1e3;break;case\"minute\":r=(this-s)/6e4;break;case\"hour\":r=(this-s)/36e5;break;case\"day\":r=(this-s-i)/864e5;break;case\"week\":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||\"millisecond\"===e?this:(\"date\"===e&&(e=\"day\"),this.startOf(e).add(1,\"isoWeek\"===e?\"week\":e).subtract(1,\"ms\"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&(\"millisecond\"===(t=R(l(t)?\"millisecond\":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&(\"millisecond\"===(t=R(l(t)?\"millisecond\":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){return(\"(\"===(s=s||\"()\")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(\")\"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&(\"millisecond\"===(t=R(t||\"millisecond\"))?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if(\"object\"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}return\"week\"===e&&this.weekday(0),\"isoWeek\"===e&&this.isoWeekday(1),\"quarter\"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ\"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace(\"Z\",A(n,\"Z\")):A(n,t?\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\":\"YYYY-MM-DD[T]HH:mm:ss.SSSZ\")},ln.inspect=function(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var e=\"moment\",t=\"\";this.isLocal()||(e=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",t=\"Z\");var n=\"[\"+e+'(\"]',s=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",i=t+'[\")]';return this.format(n+s+\"-MM-DD[T]HH:mm:ss.SSS\"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),\"d\")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),\"d\")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e=\"string\"!=typeof t?t:isNaN(t)?\"number\"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,\"d\")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,\"d\")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=(n=e,s=this.localeData(),\"string\"==typeof n?s.weekdaysParse(n)%7||7:isNaN(n)?null:n);return this.day(this.day()%7?t:t-7)}return this.day()||7;var n,s},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==e?t:this.add(e-t,\"d\")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if(\"string\"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,\"m\"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?i:Gt(this)},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),\"m\")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?\"UTC\":\"\"},ln.zoneName=function(){return this._isUTC?\"Coordinated Universal Time\":\"\"},ln.dates=n(\"dates accessor is deprecated. Use date instead.\",nn),ln.months=n(\"months accessor is deprecated. Use month instead\",Fe),ln.years=n(\"years accessor is deprecated. Use year instead\",Oe),ln.zone=n(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",function(e,t){return null!=e?(\"string\"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||\"\",null!=t)return cn(e,t,n,\"month\");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,\"month\");return i}function mn(e,t,n,s){\"boolean\"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t=t||\"\";var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,\"day\");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,\"day\");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace(\"%d\",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?\"future\":\"past\"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this[\"_\"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?\"format\":\"standalone\"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?\"format\":\"standalone\"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,\"\").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,\"\").toLocaleLowerCase();return n?\"MMM\"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:\"MMM\"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp(\"^\"+this.months(i,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[s]=new RegExp(\"^\"+this.monthsShort(i,\"\").replace(\".\",\"\")+\"$\",\"i\")),n||this._monthsParse[s]||(r=\"^\"+this.months(i,\"\")+\"|^\"+this.monthsShort(i,\"\"),this._monthsParse[s]=new RegExp(r.replace(\".\",\"\"),\"i\")),n&&\"MMMM\"===t&&this._longMonthsParse[s].test(e))return s;if(n&&\"MMM\"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,\"_monthsRegex\")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,\"_monthsRegex\")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,\"_monthsRegex\")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,\"_monthsShortRegex\")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?\"format\":\"standalone\"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,\"\").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,\"\").toLocaleLowerCase();return n?\"dddd\"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:\"ddd\"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:\"dddd\"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:\"ddd\"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp(\"^\"+this.weekdays(i,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._shortWeekdaysParse[s]=new RegExp(\"^\"+this.weekdaysShort(i,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._minWeekdaysParse[s]=new RegExp(\"^\"+this.weekdaysMin(i,\"\").replace(\".\",\".?\")+\"$\",\"i\")),this._weekdaysParse[s]||(r=\"^\"+this.weekdays(i,\"\")+\"|^\"+this.weekdaysShort(i,\"\")+\"|^\"+this.weekdaysMin(i,\"\"),this._weekdaysParse[s]=new RegExp(r.replace(\".\",\"\"),\"i\")),n&&\"dddd\"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&\"ddd\"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&\"dd\"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,\"_weekdaysRegex\")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,\"_weekdaysRegex\")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,\"_weekdaysRegex\")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,\"_weekdaysRegex\")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return\"p\"===(e+\"\").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?\"pm\":\"PM\":n?\"am\":\"AM\"},ot(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?\"th\":1===t?\"st\":2===t?\"nd\":3===t?\"rd\":\"th\")}}),c.lang=n(\"moment.lang is deprecated. Use moment.locale instead.\",ot),c.langData=n(\"moment.langData is deprecated. Use moment.localeData instead.\",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn(\"ms\"),Sn=wn(\"s\"),Dn=wn(\"m\"),kn=wn(\"h\"),Yn=wn(\"d\"),On=wn(\"w\"),Tn=wn(\"M\"),xn=wn(\"y\");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn(\"milliseconds\"),Wn=bn(\"seconds\"),Hn=bn(\"minutes\"),Rn=bn(\"hours\"),Cn=bn(\"days\"),Fn=bn(\"months\"),Ln=bn(\"years\");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\\.?0+$/,\"\"):\"\",h=this.asSeconds();if(!h)return\"P0D\";var c=h<0?\"-\":\"\",f=Vn(this._months)!==Vn(h)?\"-\":\"\",m=Vn(this._days)!==Vn(h)?\"-\":\"\",_=Vn(this._milliseconds)!==Vn(h)?\"-\":\"\";return c+\"P\"+(r?f+r+\"Y\":\"\")+(a?f+a+\"M\":\"\")+(o?m+o+\"D\":\"\")+(u||l||d?\"T\":\"\")+(u?_+u+\"H\":\"\")+(l?_+l+\"M\":\"\")+(d?_+d+\"S\":\"\")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if(\"month\"===(e=R(e))||\"year\"===e)return t=this._days+s/864e5,n=this._months+pn(t),\"month\"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case\"week\":return t/7+s/6048e5;case\"day\":return t+s/864e5;case\"hour\":return 24*t+s/36e5;case\"minute\":return 1440*t+s/6e4;case\"second\":return 86400*t+s/1e3;case\"millisecond\":return Math.floor(864e5*t)+s;default:throw new Error(\"Unknown unit \"+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+\"s\"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as(\"s\")),a=Un(i.as(\"m\")),o=Un(i.as(\"h\")),u=Un(i.as(\"d\")),l=Un(i.as(\"M\")),d=Un(i.as(\"y\")),(h=r<=Nn.ss&&[\"s\",r]||r<Nn.s&&[\"ss\",r]||a<=1&&[\"m\"]||a<Nn.m&&[\"mm\",a]||o<=1&&[\"h\"]||o<Nn.h&&[\"hh\",o]||u<=1&&[\"d\"]||u<Nn.d&&[\"dd\",u]||l<=1&&[\"M\"]||l<Nn.M&&[\"MM\",l]||d<=1&&[\"y\"]||[\"yy\",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",En),In.lang=Xt,I(\"X\",0,0,\"unix\"),I(\"x\",0,0,\"valueOf\"),ue(\"x\",se),ue(\"X\",/[+-]?\\d+(\\.\\d{1,3})?/),ce(\"X\",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce(\"x\",function(e,t,n){n._d=new Date(k(e))}),c.version=\"2.22.1\",e=Tt,c.fn=ln,c.min=function(){return Pt(\"isBefore\",[].slice.call(arguments,0))},c.max=function(){return Pt(\"isAfter\",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,\"months\")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,\"weekdays\")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,\"monthsShort\")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,\"weekdaysMin\")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,\"weekdaysShort\")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:\"function\"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,\"s\"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,\"days\",!0);return n<-6?\"sameElse\":n<-1?\"lastWeek\":n<0?\"lastDay\":n<1?\"sameDay\":n<2?\"nextDay\":n<7?\"nextWeek\":\"sameElse\"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:\"YYYY-MM-DDTHH:mm\",DATETIME_LOCAL_SECONDS:\"YYYY-MM-DDTHH:mm:ss\",DATETIME_LOCAL_MS:\"YYYY-MM-DDTHH:mm:ss.SSS\",DATE:\"YYYY-MM-DD\",TIME:\"HH:mm\",TIME_SECONDS:\"HH:mm:ss\",TIME_MS:\"HH:mm:ss.SSS\",WEEK:\"YYYY-[W]WW\",MONTH:\"YYYY-MM\"},c});","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\n//! author : Stefan Crnjaković <stefan@hotmail.rs> : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","self[\"MonacoEnvironment\"] = (function (paths) {\n function stripTrailingSlash(str) {\n return str.replace(/\\/$/, '');\n }\n return {\n getWorkerUrl: function (moduleId, label) {\n var pathPrefix = typeof __webpack_public_path__ === 'string' ? __webpack_public_path__ : \"\";\n var result = (pathPrefix ? stripTrailingSlash(pathPrefix) + '/' : '') + paths[label];\n if (/^((http:)|(https:)|(file:)|(\\/\\/))/.test(result)) {\n var currentUrl = String(window.location);\n var currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length);\n if (result.substring(0, currentOrigin.length) !== currentOrigin) {\n var js = '/*' + label + '*/importScripts(\"' + result + '\");';\n var blob = new Blob([js], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n }\n }\n return result;\n }\n };\n })({\n \"editorWorkerService\": \"editor.worker.js\",\n \"json\": \"json.worker.js\"\n});\nrequire(\"./standalone/browser/accessibilityHelp/accessibilityHelp.js\");\nrequire(\"./contrib/anchorSelect/anchorSelect.js\");\nrequire(\"./contrib/bracketMatching/bracketMatching.js\");\nrequire(\"./contrib/caretOperations/caretOperations.js\");\nrequire(\"./contrib/clipboard/clipboard.js\");\nrequire(\"./contrib/codeAction/codeActionContributions.js\");\nrequire(\"./contrib/codelens/codelensController.js\");\nrequire(\"./contrib/colorPicker/colorDetector.js\");\nrequire(\"./contrib/comment/comment.js\");\nrequire(\"./contrib/contextmenu/contextmenu.js\");\nrequire(\"./browser/controller/coreCommands.js\");\nrequire(\"./contrib/cursorUndo/cursorUndo.js\");\nrequire(\"./contrib/dnd/dnd.js\");\nrequire(\"./contrib/find/findController.js\");\nrequire(\"./contrib/folding/folding.js\");\nrequire(\"./contrib/fontZoom/fontZoom.js\");\nrequire(\"./contrib/format/formatActions.js\");\nrequire(\"./contrib/gotoError/gotoError.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js\");\nrequire(\"./contrib/gotoSymbol/goToCommands.js\");\nrequire(\"./contrib/gotoSymbol/link/goToDefinitionAtPosition.js\");\nrequire(\"./contrib/hover/hover.js\");\nrequire(\"./standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js\");\nrequire(\"./contrib/inPlaceReplace/inPlaceReplace.js\");\nrequire(\"./contrib/indentation/indentation.js\");\nrequire(\"./standalone/browser/inspectTokens/inspectTokens.js\");\nrequire(\"./contrib/linesOperations/linesOperations.js\");\nrequire(\"./contrib/links/links.js\");\nrequire(\"./contrib/multicursor/multicursor.js\");\nrequire(\"./contrib/rename/onTypeRename.js\");\nrequire(\"./contrib/parameterHints/parameterHints.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneCommandsQuickAccess.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneHelpQuickAccess.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js\");\nrequire(\"./contrib/rename/rename.js\");\nrequire(\"./contrib/smartSelect/smartSelect.js\");\nrequire(\"./contrib/snippet/snippetController2.js\");\nrequire(\"./contrib/suggest/suggestController.js\");\nrequire(\"./standalone/browser/toggleHighContrast/toggleHighContrast.js\");\nrequire(\"./contrib/toggleTabFocusMode/toggleTabFocusMode.js\");\nrequire(\"./contrib/caretOperations/transpose.js\");\nrequire(\"./contrib/unusualLineTerminators/unusualLineTerminators.js\");\nrequire(\"./contrib/viewportSemanticTokens/viewportSemanticTokens.js\");\nrequire(\"./contrib/wordHighlighter/wordHighlighter.js\");\nrequire(\"./contrib/wordOperations/wordOperations.js\");\nrequire(\"./contrib/wordPartOperations/wordPartOperations.js\");\nmodule.exports = require(\"!!./editor.api.js\");\nrequire(\"../language/json/monaco.contribution.js\");","self[\"MonacoEnvironment\"] = (function (paths) {\n function stripTrailingSlash(str) {\n return str.replace(/\\/$/, '');\n }\n return {\n getWorkerUrl: function (moduleId, label) {\n var pathPrefix = typeof __webpack_public_path__ === 'string' ? __webpack_public_path__ : \"\";\n var result = (pathPrefix ? stripTrailingSlash(pathPrefix) + '/' : '') + paths[label];\n if (/^((http:)|(https:)|(file:)|(\\/\\/))/.test(result)) {\n var currentUrl = String(window.location);\n var currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length);\n if (result.substring(0, currentOrigin.length) !== currentOrigin) {\n var js = '/*' + label + '*/importScripts(\"' + result + '\");';\n var blob = new Blob([js], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n }\n }\n return result;\n }\n };\n })({\n \"editorWorkerService\": \"editor.worker.js\",\n \"json\": \"json.worker.js\"\n});\nrequire(\"./standalone/browser/accessibilityHelp/accessibilityHelp.js\");\nrequire(\"./contrib/anchorSelect/anchorSelect.js\");\nrequire(\"./contrib/bracketMatching/bracketMatching.js\");\nrequire(\"./contrib/caretOperations/caretOperations.js\");\nrequire(\"./contrib/clipboard/clipboard.js\");\nrequire(\"./contrib/codeAction/codeActionContributions.js\");\nrequire(\"./contrib/codelens/codelensController.js\");\nrequire(\"./contrib/colorPicker/colorDetector.js\");\nrequire(\"./contrib/comment/comment.js\");\nrequire(\"./contrib/contextmenu/contextmenu.js\");\nrequire(\"./browser/controller/coreCommands.js\");\nrequire(\"./contrib/cursorUndo/cursorUndo.js\");\nrequire(\"./contrib/dnd/dnd.js\");\nrequire(\"./contrib/find/findController.js\");\nrequire(\"./contrib/folding/folding.js\");\nrequire(\"./contrib/fontZoom/fontZoom.js\");\nrequire(\"./contrib/format/formatActions.js\");\nrequire(\"./contrib/gotoError/gotoError.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js\");\nrequire(\"./contrib/gotoSymbol/goToCommands.js\");\nrequire(\"./contrib/gotoSymbol/link/goToDefinitionAtPosition.js\");\nrequire(\"./contrib/hover/hover.js\");\nrequire(\"./standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js\");\nrequire(\"./contrib/inPlaceReplace/inPlaceReplace.js\");\nrequire(\"./contrib/indentation/indentation.js\");\nrequire(\"./standalone/browser/inspectTokens/inspectTokens.js\");\nrequire(\"./contrib/linesOperations/linesOperations.js\");\nrequire(\"./contrib/links/links.js\");\nrequire(\"./contrib/multicursor/multicursor.js\");\nrequire(\"./contrib/rename/onTypeRename.js\");\nrequire(\"./contrib/parameterHints/parameterHints.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneCommandsQuickAccess.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneHelpQuickAccess.js\");\nrequire(\"./standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js\");\nrequire(\"./contrib/rename/rename.js\");\nrequire(\"./contrib/smartSelect/smartSelect.js\");\nrequire(\"./contrib/snippet/snippetController2.js\");\nrequire(\"./contrib/suggest/suggestController.js\");\nrequire(\"./standalone/browser/toggleHighContrast/toggleHighContrast.js\");\nrequire(\"./contrib/toggleTabFocusMode/toggleTabFocusMode.js\");\nrequire(\"./contrib/caretOperations/transpose.js\");\nrequire(\"./contrib/unusualLineTerminators/unusualLineTerminators.js\");\nrequire(\"./contrib/viewportSemanticTokens/viewportSemanticTokens.js\");\nrequire(\"./contrib/wordHighlighter/wordHighlighter.js\");\nrequire(\"./contrib/wordOperations/wordOperations.js\");\nrequire(\"./contrib/wordPartOperations/wordPartOperations.js\");\nmodule.exports = require(\"!!./editor.main.js\");\nrequire(\"../language/json/monaco.contribution.js\");","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../common/event.js';\r\nclass WindowManager {\r\n constructor() {\r\n // --- Zoom Level\r\n this._zoomLevel = 0;\r\n this._lastZoomLevelChangeTime = 0;\r\n this._onDidChangeZoomLevel = new Emitter();\r\n this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;\r\n // --- Zoom Factor\r\n this._zoomFactor = 1;\r\n }\r\n getZoomLevel() {\r\n return this._zoomLevel;\r\n }\r\n getTimeSinceLastZoomLevelChanged() {\r\n return Date.now() - this._lastZoomLevelChangeTime;\r\n }\r\n getZoomFactor() {\r\n return this._zoomFactor;\r\n }\r\n // --- Pixel Ratio\r\n getPixelRatio() {\r\n let ctx = document.createElement('canvas').getContext('2d');\r\n let dpr = window.devicePixelRatio || 1;\r\n let bsr = ctx.webkitBackingStorePixelRatio ||\r\n ctx.mozBackingStorePixelRatio ||\r\n ctx.msBackingStorePixelRatio ||\r\n ctx.oBackingStorePixelRatio ||\r\n ctx.backingStorePixelRatio || 1;\r\n return dpr / bsr;\r\n }\r\n}\r\nWindowManager.INSTANCE = new WindowManager();\r\nexport function getZoomLevel() {\r\n return WindowManager.INSTANCE.getZoomLevel();\r\n}\r\n/** Returns the time (in ms) since the zoom level was changed */\r\nexport function getTimeSinceLastZoomLevelChanged() {\r\n return WindowManager.INSTANCE.getTimeSinceLastZoomLevelChanged();\r\n}\r\nexport function onDidChangeZoomLevel(callback) {\r\n return WindowManager.INSTANCE.onDidChangeZoomLevel(callback);\r\n}\r\n/** The zoom scale for an index, e.g. 1, 1.2, 1.4 */\r\nexport function getZoomFactor() {\r\n return WindowManager.INSTANCE.getZoomFactor();\r\n}\r\nexport function getPixelRatio() {\r\n return WindowManager.INSTANCE.getPixelRatio();\r\n}\r\nconst userAgent = navigator.userAgent;\r\nexport const isEdge = (userAgent.indexOf('Edge/') >= 0);\r\nexport const isFirefox = (userAgent.indexOf('Firefox') >= 0);\r\nexport const isWebKit = (userAgent.indexOf('AppleWebKit') >= 0);\r\nexport const isChrome = (userAgent.indexOf('Chrome') >= 0);\r\nexport const isSafari = (!isChrome && (userAgent.indexOf('Safari') >= 0));\r\nexport const isWebkitWebView = (!isChrome && !isSafari && isWebKit);\r\nexport const isIPad = (userAgent.indexOf('iPad') >= 0 || (isSafari && navigator.maxTouchPoints > 0));\r\nexport const isEdgeWebView = isEdge && (userAgent.indexOf('WebView/') >= 0);\r\nexport const isStandalone = (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport * as platform from '../common/platform.js';\r\n/**\r\n * Browser feature we can support in current platform, browser and environment.\r\n */\r\nexport const BrowserFeatures = {\r\n clipboard: {\r\n writeText: (platform.isNative\r\n || (document.queryCommandSupported && document.queryCommandSupported('copy'))\r\n || !!(navigator && navigator.clipboard && navigator.clipboard.writeText)),\r\n readText: (platform.isNative\r\n || !!(navigator && navigator.clipboard && navigator.clipboard.readText)),\r\n richText: (() => {\r\n if (browser.isEdge) {\r\n let index = navigator.userAgent.indexOf('Edge/');\r\n let version = parseInt(navigator.userAgent.substring(index + 5, navigator.userAgent.indexOf('.', index)), 10);\r\n if (!version || (version >= 12 && version <= 16)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n })()\r\n },\r\n keyboard: (() => {\r\n if (platform.isNative || browser.isStandalone) {\r\n return 0 /* Always */;\r\n }\r\n if (navigator.keyboard || browser.isSafari) {\r\n return 1 /* FullScreen */;\r\n }\r\n return 2 /* None */;\r\n })(),\r\n // 'ontouchstart' in window always evaluates to true with typescript's modern typings. This causes `window` to be\r\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\r\n touch: 'ontouchstart' in window || navigator.maxTouchPoints > 0 || window.navigator.msMaxTouchPoints > 0,\r\n pointerEvents: window.PointerEvent && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0 || navigator.maxTouchPoints > 0 || window.navigator.msMaxTouchPoints > 0)\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from './dom.js';\r\nimport { renderCodiconsRegex } from '../common/codicons.js';\r\nexport function renderCodiconsAsElement(text) {\r\n const elements = new Array();\r\n let match;\r\n let textStart = 0, textStop = 0;\r\n while ((match = renderCodiconsRegex.exec(text)) !== null) {\r\n textStop = match.index || 0;\r\n elements.push(text.substring(textStart, textStop));\r\n textStart = (match.index || 0) + match[0].length;\r\n const [, escaped, codicon, name, animation] = match;\r\n elements.push(escaped ? `$(${codicon})` : dom.$(`span.codicon.codicon-${name}${animation ? `.codicon-animation-${animation}` : ''}`));\r\n }\r\n if (textStart < text.length) {\r\n elements.push(text.substring(textStart));\r\n }\r\n return elements;\r\n}\r\n","// Common data transfers\r\nexport const DataTransfers = {\r\n /**\r\n * Application specific resource transfer type\r\n */\r\n RESOURCES: 'ResourceURLs',\r\n /**\r\n * Browser specific transfer type to download\r\n */\r\n DOWNLOAD_URL: 'DownloadURL',\r\n /**\r\n * Browser specific transfer type for files\r\n */\r\n FILES: 'Files',\r\n /**\r\n * Typically transfer type for copy/paste transfers.\r\n */\r\n TEXT: 'text/plain'\r\n};\r\nexport class DragAndDropData {\r\n constructor(data) {\r\n this.data = data;\r\n }\r\n update() {\r\n // noop\r\n }\r\n getData() {\r\n return this.data;\r\n }\r\n}\r\nexport const StaticDND = {\r\n CurrentDragAndDropData: undefined\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { domEvent } from './event.js';\r\nimport { StandardKeyboardEvent } from './keyboardEvent.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { TimeoutTimer } from '../common/async.js';\r\nimport { onUnexpectedError } from '../common/errors.js';\r\nimport { Emitter } from '../common/event.js';\r\nimport { Disposable, toDisposable } from '../common/lifecycle.js';\r\nimport * as platform from '../common/platform.js';\r\nimport { coalesce } from '../common/arrays.js';\r\nimport { Schemas, RemoteAuthorities } from '../common/network.js';\r\nimport { BrowserFeatures } from './canIUse.js';\r\nexport function clearNode(node) {\r\n while (node.firstChild) {\r\n node.removeChild(node.firstChild);\r\n }\r\n}\r\n/**\r\n * @deprecated use `node.remove()` instead\r\n */\r\nexport function removeNode(node) {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n}\r\nexport function isInDOM(node) {\r\n while (node) {\r\n if (node === document.body) {\r\n return true;\r\n }\r\n node = node.parentNode || node.host;\r\n }\r\n return false;\r\n}\r\nconst _classList = new class {\r\n hasClass(node, className) {\r\n return Boolean(className) && node.classList && node.classList.contains(className);\r\n }\r\n addClasses(node, ...classNames) {\r\n classNames.forEach(nameValue => nameValue.split(' ').forEach(name => this.addClass(node, name)));\r\n }\r\n addClass(node, className) {\r\n if (className && node.classList) {\r\n node.classList.add(className);\r\n }\r\n }\r\n removeClass(node, className) {\r\n if (className && node.classList) {\r\n node.classList.remove(className);\r\n }\r\n }\r\n removeClasses(node, ...classNames) {\r\n classNames.forEach(nameValue => nameValue.split(' ').forEach(name => this.removeClass(node, name)));\r\n }\r\n toggleClass(node, className, shouldHaveIt) {\r\n if (node.classList) {\r\n node.classList.toggle(className, shouldHaveIt);\r\n }\r\n }\r\n};\r\n/** @deprecated ES6 - use classList*/\r\nexport const hasClass = _classList.hasClass.bind(_classList);\r\n/** @deprecated ES6 - use classList*/\r\nexport const addClass = _classList.addClass.bind(_classList);\r\n/** @deprecated ES6 - use classList*/\r\nexport const addClasses = _classList.addClasses.bind(_classList);\r\n/** @deprecated ES6 - use classList*/\r\nexport const removeClass = _classList.removeClass.bind(_classList);\r\n/** @deprecated ES6 - use classList*/\r\nexport const removeClasses = _classList.removeClasses.bind(_classList);\r\n/** @deprecated ES6 - use classList*/\r\nexport const toggleClass = _classList.toggleClass.bind(_classList);\r\nclass DomListener {\r\n constructor(node, type, handler, options) {\r\n this._node = node;\r\n this._type = type;\r\n this._handler = handler;\r\n this._options = (options || false);\r\n this._node.addEventListener(this._type, this._handler, this._options);\r\n }\r\n dispose() {\r\n if (!this._handler) {\r\n // Already disposed\r\n return;\r\n }\r\n this._node.removeEventListener(this._type, this._handler, this._options);\r\n // Prevent leakers from holding on to the dom or handler func\r\n this._node = null;\r\n this._handler = null;\r\n }\r\n}\r\nexport function addDisposableListener(node, type, handler, useCaptureOrOptions) {\r\n return new DomListener(node, type, handler, useCaptureOrOptions);\r\n}\r\nfunction _wrapAsStandardMouseEvent(handler) {\r\n return function (e) {\r\n return handler(new StandardMouseEvent(e));\r\n };\r\n}\r\nfunction _wrapAsStandardKeyboardEvent(handler) {\r\n return function (e) {\r\n return handler(new StandardKeyboardEvent(e));\r\n };\r\n}\r\nexport let addStandardDisposableListener = function addStandardDisposableListener(node, type, handler, useCapture) {\r\n let wrapHandler = handler;\r\n if (type === 'click' || type === 'mousedown') {\r\n wrapHandler = _wrapAsStandardMouseEvent(handler);\r\n }\r\n else if (type === 'keydown' || type === 'keypress' || type === 'keyup') {\r\n wrapHandler = _wrapAsStandardKeyboardEvent(handler);\r\n }\r\n return addDisposableListener(node, type, wrapHandler, useCapture);\r\n};\r\nexport let addStandardDisposableGenericMouseDownListner = function addStandardDisposableListener(node, handler, useCapture) {\r\n let wrapHandler = _wrapAsStandardMouseEvent(handler);\r\n return addDisposableGenericMouseDownListner(node, wrapHandler, useCapture);\r\n};\r\nexport function addDisposableGenericMouseDownListner(node, handler, useCapture) {\r\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_DOWN : EventType.MOUSE_DOWN, handler, useCapture);\r\n}\r\nexport function addDisposableGenericMouseUpListner(node, handler, useCapture) {\r\n return addDisposableListener(node, platform.isIOS && BrowserFeatures.pointerEvents ? EventType.POINTER_UP : EventType.MOUSE_UP, handler, useCapture);\r\n}\r\nexport function addDisposableNonBubblingMouseOutListener(node, handler) {\r\n return addDisposableListener(node, 'mouseout', (e) => {\r\n // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements\r\n let toElement = (e.relatedTarget);\r\n while (toElement && toElement !== node) {\r\n toElement = toElement.parentNode;\r\n }\r\n if (toElement === node) {\r\n return;\r\n }\r\n handler(e);\r\n });\r\n}\r\nexport function addDisposableNonBubblingPointerOutListener(node, handler) {\r\n return addDisposableListener(node, 'pointerout', (e) => {\r\n // Mouse out bubbles, so this is an attempt to ignore faux mouse outs coming from children elements\r\n let toElement = (e.relatedTarget);\r\n while (toElement && toElement !== node) {\r\n toElement = toElement.parentNode;\r\n }\r\n if (toElement === node) {\r\n return;\r\n }\r\n handler(e);\r\n });\r\n}\r\nlet _animationFrame = null;\r\nfunction doRequestAnimationFrame(callback) {\r\n if (!_animationFrame) {\r\n const emulatedRequestAnimationFrame = (callback) => {\r\n return setTimeout(() => callback(new Date().getTime()), 0);\r\n };\r\n _animationFrame = (self.requestAnimationFrame\r\n || self.msRequestAnimationFrame\r\n || self.webkitRequestAnimationFrame\r\n || self.mozRequestAnimationFrame\r\n || self.oRequestAnimationFrame\r\n || emulatedRequestAnimationFrame);\r\n }\r\n return _animationFrame.call(self, callback);\r\n}\r\n/**\r\n * Schedule a callback to be run at the next animation frame.\r\n * This allows multiple parties to register callbacks that should run at the next animation frame.\r\n * If currently in an animation frame, `runner` will be executed immediately.\r\n * @return token that can be used to cancel the scheduled runner (only if `runner` was not executed immediately).\r\n */\r\nexport let runAtThisOrScheduleAtNextAnimationFrame;\r\n/**\r\n * Schedule a callback to be run at the next animation frame.\r\n * This allows multiple parties to register callbacks that should run at the next animation frame.\r\n * If currently in an animation frame, `runner` will be executed at the next animation frame.\r\n * @return token that can be used to cancel the scheduled runner.\r\n */\r\nexport let scheduleAtNextAnimationFrame;\r\nclass AnimationFrameQueueItem {\r\n constructor(runner, priority = 0) {\r\n this._runner = runner;\r\n this.priority = priority;\r\n this._canceled = false;\r\n }\r\n dispose() {\r\n this._canceled = true;\r\n }\r\n execute() {\r\n if (this._canceled) {\r\n return;\r\n }\r\n try {\r\n this._runner();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n // Sort by priority (largest to lowest)\r\n static sort(a, b) {\r\n return b.priority - a.priority;\r\n }\r\n}\r\n(function () {\r\n /**\r\n * The runners scheduled at the next animation frame\r\n */\r\n let NEXT_QUEUE = [];\r\n /**\r\n * The runners scheduled at the current animation frame\r\n */\r\n let CURRENT_QUEUE = null;\r\n /**\r\n * A flag to keep track if the native requestAnimationFrame was already called\r\n */\r\n let animFrameRequested = false;\r\n /**\r\n * A flag to indicate if currently handling a native requestAnimationFrame callback\r\n */\r\n let inAnimationFrameRunner = false;\r\n let animationFrameRunner = () => {\r\n animFrameRequested = false;\r\n CURRENT_QUEUE = NEXT_QUEUE;\r\n NEXT_QUEUE = [];\r\n inAnimationFrameRunner = true;\r\n while (CURRENT_QUEUE.length > 0) {\r\n CURRENT_QUEUE.sort(AnimationFrameQueueItem.sort);\r\n let top = CURRENT_QUEUE.shift();\r\n top.execute();\r\n }\r\n inAnimationFrameRunner = false;\r\n };\r\n scheduleAtNextAnimationFrame = (runner, priority = 0) => {\r\n let item = new AnimationFrameQueueItem(runner, priority);\r\n NEXT_QUEUE.push(item);\r\n if (!animFrameRequested) {\r\n animFrameRequested = true;\r\n doRequestAnimationFrame(animationFrameRunner);\r\n }\r\n return item;\r\n };\r\n runAtThisOrScheduleAtNextAnimationFrame = (runner, priority) => {\r\n if (inAnimationFrameRunner) {\r\n let item = new AnimationFrameQueueItem(runner, priority);\r\n CURRENT_QUEUE.push(item);\r\n return item;\r\n }\r\n else {\r\n return scheduleAtNextAnimationFrame(runner, priority);\r\n }\r\n };\r\n})();\r\nconst MINIMUM_TIME_MS = 16;\r\nconst DEFAULT_EVENT_MERGER = function (lastEvent, currentEvent) {\r\n return currentEvent;\r\n};\r\nclass TimeoutThrottledDomListener extends Disposable {\r\n constructor(node, type, handler, eventMerger = DEFAULT_EVENT_MERGER, minimumTimeMs = MINIMUM_TIME_MS) {\r\n super();\r\n let lastEvent = null;\r\n let lastHandlerTime = 0;\r\n let timeout = this._register(new TimeoutTimer());\r\n let invokeHandler = () => {\r\n lastHandlerTime = (new Date()).getTime();\r\n handler(lastEvent);\r\n lastEvent = null;\r\n };\r\n this._register(addDisposableListener(node, type, (e) => {\r\n lastEvent = eventMerger(lastEvent, e);\r\n let elapsedTime = (new Date()).getTime() - lastHandlerTime;\r\n if (elapsedTime >= minimumTimeMs) {\r\n timeout.cancel();\r\n invokeHandler();\r\n }\r\n else {\r\n timeout.setIfNotSet(invokeHandler, minimumTimeMs - elapsedTime);\r\n }\r\n }));\r\n }\r\n}\r\nexport function addDisposableThrottledListener(node, type, handler, eventMerger, minimumTimeMs) {\r\n return new TimeoutThrottledDomListener(node, type, handler, eventMerger, minimumTimeMs);\r\n}\r\nexport function getComputedStyle(el) {\r\n return document.defaultView.getComputedStyle(el, null);\r\n}\r\nexport function getClientArea(element) {\r\n // Try with DOM clientWidth / clientHeight\r\n if (element !== document.body) {\r\n return new Dimension(element.clientWidth, element.clientHeight);\r\n }\r\n // If visual view port exits and it's on mobile, it should be used instead of window innerWidth / innerHeight, or document.body.clientWidth / document.body.clientHeight\r\n if (platform.isIOS && window.visualViewport) {\r\n const width = window.visualViewport.width;\r\n const height = window.visualViewport.height - (browser.isStandalone\r\n // in PWA mode, the visual viewport always includes the safe-area-inset-bottom (which is for the home indicator)\r\n // even when you are using the onscreen monitor, the visual viewport will include the area between system statusbar and the onscreen keyboard\r\n // plus the area between onscreen keyboard and the bottom bezel, which is 20px on iOS.\r\n ? (20 + 4) // + 4px for body margin\r\n : 0);\r\n return new Dimension(width, height);\r\n }\r\n // Try innerWidth / innerHeight\r\n if (window.innerWidth && window.innerHeight) {\r\n return new Dimension(window.innerWidth, window.innerHeight);\r\n }\r\n // Try with document.body.clientWidth / document.body.clientHeight\r\n if (document.body && document.body.clientWidth && document.body.clientHeight) {\r\n return new Dimension(document.body.clientWidth, document.body.clientHeight);\r\n }\r\n // Try with document.documentElement.clientWidth / document.documentElement.clientHeight\r\n if (document.documentElement && document.documentElement.clientWidth && document.documentElement.clientHeight) {\r\n return new Dimension(document.documentElement.clientWidth, document.documentElement.clientHeight);\r\n }\r\n throw new Error('Unable to figure out browser width and height');\r\n}\r\nclass SizeUtils {\r\n // Adapted from WinJS\r\n // Converts a CSS positioning string for the specified element to pixels.\r\n static convertToPixels(element, value) {\r\n return parseFloat(value) || 0;\r\n }\r\n static getDimension(element, cssPropertyName, jsPropertyName) {\r\n let computedStyle = getComputedStyle(element);\r\n let value = '0';\r\n if (computedStyle) {\r\n if (computedStyle.getPropertyValue) {\r\n value = computedStyle.getPropertyValue(cssPropertyName);\r\n }\r\n else {\r\n // IE8\r\n value = computedStyle.getAttribute(jsPropertyName);\r\n }\r\n }\r\n return SizeUtils.convertToPixels(element, value);\r\n }\r\n static getBorderLeftWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-left-width', 'borderLeftWidth');\r\n }\r\n static getBorderRightWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-right-width', 'borderRightWidth');\r\n }\r\n static getBorderTopWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-top-width', 'borderTopWidth');\r\n }\r\n static getBorderBottomWidth(element) {\r\n return SizeUtils.getDimension(element, 'border-bottom-width', 'borderBottomWidth');\r\n }\r\n static getPaddingLeft(element) {\r\n return SizeUtils.getDimension(element, 'padding-left', 'paddingLeft');\r\n }\r\n static getPaddingRight(element) {\r\n return SizeUtils.getDimension(element, 'padding-right', 'paddingRight');\r\n }\r\n static getPaddingTop(element) {\r\n return SizeUtils.getDimension(element, 'padding-top', 'paddingTop');\r\n }\r\n static getPaddingBottom(element) {\r\n return SizeUtils.getDimension(element, 'padding-bottom', 'paddingBottom');\r\n }\r\n static getMarginLeft(element) {\r\n return SizeUtils.getDimension(element, 'margin-left', 'marginLeft');\r\n }\r\n static getMarginTop(element) {\r\n return SizeUtils.getDimension(element, 'margin-top', 'marginTop');\r\n }\r\n static getMarginRight(element) {\r\n return SizeUtils.getDimension(element, 'margin-right', 'marginRight');\r\n }\r\n static getMarginBottom(element) {\r\n return SizeUtils.getDimension(element, 'margin-bottom', 'marginBottom');\r\n }\r\n}\r\nexport class Dimension {\r\n constructor(width, height) {\r\n this.width = width;\r\n this.height = height;\r\n }\r\n}\r\nexport function getTopLeftOffset(element) {\r\n // Adapted from WinJS.Utilities.getPosition\r\n // and added borders to the mix\r\n let offsetParent = element.offsetParent;\r\n let top = element.offsetTop;\r\n let left = element.offsetLeft;\r\n while ((element = element.parentNode) !== null\r\n && element !== document.body\r\n && element !== document.documentElement) {\r\n top -= element.scrollTop;\r\n const c = isShadowRoot(element) ? null : getComputedStyle(element);\r\n if (c) {\r\n left -= c.direction !== 'rtl' ? element.scrollLeft : -element.scrollLeft;\r\n }\r\n if (element === offsetParent) {\r\n left += SizeUtils.getBorderLeftWidth(element);\r\n top += SizeUtils.getBorderTopWidth(element);\r\n top += element.offsetTop;\r\n left += element.offsetLeft;\r\n offsetParent = element.offsetParent;\r\n }\r\n }\r\n return {\r\n left: left,\r\n top: top\r\n };\r\n}\r\n/**\r\n * Returns the position of a dom node relative to the entire page.\r\n */\r\nexport function getDomNodePagePosition(domNode) {\r\n let bb = domNode.getBoundingClientRect();\r\n return {\r\n left: bb.left + StandardWindow.scrollX,\r\n top: bb.top + StandardWindow.scrollY,\r\n width: bb.width,\r\n height: bb.height\r\n };\r\n}\r\nexport const StandardWindow = new class {\r\n get scrollX() {\r\n if (typeof window.scrollX === 'number') {\r\n // modern browsers\r\n return window.scrollX;\r\n }\r\n else {\r\n return document.body.scrollLeft + document.documentElement.scrollLeft;\r\n }\r\n }\r\n get scrollY() {\r\n if (typeof window.scrollY === 'number') {\r\n // modern browsers\r\n return window.scrollY;\r\n }\r\n else {\r\n return document.body.scrollTop + document.documentElement.scrollTop;\r\n }\r\n }\r\n};\r\n// Adapted from WinJS\r\n// Gets the width of the element, including margins.\r\nexport function getTotalWidth(element) {\r\n let margin = SizeUtils.getMarginLeft(element) + SizeUtils.getMarginRight(element);\r\n return element.offsetWidth + margin;\r\n}\r\nexport function getContentWidth(element) {\r\n let border = SizeUtils.getBorderLeftWidth(element) + SizeUtils.getBorderRightWidth(element);\r\n let padding = SizeUtils.getPaddingLeft(element) + SizeUtils.getPaddingRight(element);\r\n return element.offsetWidth - border - padding;\r\n}\r\n// Adapted from WinJS\r\n// Gets the height of the content of the specified element. The content height does not include borders or padding.\r\nexport function getContentHeight(element) {\r\n let border = SizeUtils.getBorderTopWidth(element) + SizeUtils.getBorderBottomWidth(element);\r\n let padding = SizeUtils.getPaddingTop(element) + SizeUtils.getPaddingBottom(element);\r\n return element.offsetHeight - border - padding;\r\n}\r\n// Adapted from WinJS\r\n// Gets the height of the element, including its margins.\r\nexport function getTotalHeight(element) {\r\n let margin = SizeUtils.getMarginTop(element) + SizeUtils.getMarginBottom(element);\r\n return element.offsetHeight + margin;\r\n}\r\n// ----------------------------------------------------------------------------------------\r\nexport function isAncestor(testChild, testAncestor) {\r\n while (testChild) {\r\n if (testChild === testAncestor) {\r\n return true;\r\n }\r\n testChild = testChild.parentNode;\r\n }\r\n return false;\r\n}\r\nexport function findParentWithClass(node, clazz, stopAtClazzOrNode) {\r\n while (node && node.nodeType === node.ELEMENT_NODE) {\r\n if (hasClass(node, clazz)) {\r\n return node;\r\n }\r\n if (stopAtClazzOrNode) {\r\n if (typeof stopAtClazzOrNode === 'string') {\r\n if (hasClass(node, stopAtClazzOrNode)) {\r\n return null;\r\n }\r\n }\r\n else {\r\n if (node === stopAtClazzOrNode) {\r\n return null;\r\n }\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n}\r\nexport function hasParentWithClass(node, clazz, stopAtClazzOrNode) {\r\n return !!findParentWithClass(node, clazz, stopAtClazzOrNode);\r\n}\r\nexport function isShadowRoot(node) {\r\n return (node && !!node.host && !!node.mode);\r\n}\r\nexport function isInShadowDOM(domNode) {\r\n return !!getShadowRoot(domNode);\r\n}\r\nexport function getShadowRoot(domNode) {\r\n while (domNode.parentNode) {\r\n if (domNode === document.body) {\r\n // reached the body\r\n return null;\r\n }\r\n domNode = domNode.parentNode;\r\n }\r\n return isShadowRoot(domNode) ? domNode : null;\r\n}\r\nexport function getActiveElement() {\r\n let result = document.activeElement;\r\n while (result === null || result === void 0 ? void 0 : result.shadowRoot) {\r\n result = result.shadowRoot.activeElement;\r\n }\r\n return result;\r\n}\r\nexport function createStyleSheet(container = document.getElementsByTagName('head')[0]) {\r\n let style = document.createElement('style');\r\n style.type = 'text/css';\r\n style.media = 'screen';\r\n container.appendChild(style);\r\n return style;\r\n}\r\nlet _sharedStyleSheet = null;\r\nfunction getSharedStyleSheet() {\r\n if (!_sharedStyleSheet) {\r\n _sharedStyleSheet = createStyleSheet();\r\n }\r\n return _sharedStyleSheet;\r\n}\r\nfunction getDynamicStyleSheetRules(style) {\r\n if (style && style.sheet && style.sheet.rules) {\r\n // Chrome, IE\r\n return style.sheet.rules;\r\n }\r\n if (style && style.sheet && style.sheet.cssRules) {\r\n // FF\r\n return style.sheet.cssRules;\r\n }\r\n return [];\r\n}\r\nexport function createCSSRule(selector, cssText, style = getSharedStyleSheet()) {\r\n if (!style || !cssText) {\r\n return;\r\n }\r\n style.sheet.insertRule(selector + '{' + cssText + '}', 0);\r\n}\r\nexport function removeCSSRulesContainingSelector(ruleName, style = getSharedStyleSheet()) {\r\n if (!style) {\r\n return;\r\n }\r\n let rules = getDynamicStyleSheetRules(style);\r\n let toDelete = [];\r\n for (let i = 0; i < rules.length; i++) {\r\n let rule = rules[i];\r\n if (rule.selectorText.indexOf(ruleName) !== -1) {\r\n toDelete.push(i);\r\n }\r\n }\r\n for (let i = toDelete.length - 1; i >= 0; i--) {\r\n style.sheet.deleteRule(toDelete[i]);\r\n }\r\n}\r\nexport function isHTMLElement(o) {\r\n if (typeof HTMLElement === 'object') {\r\n return o instanceof HTMLElement;\r\n }\r\n return o && typeof o === 'object' && o.nodeType === 1 && typeof o.nodeName === 'string';\r\n}\r\nexport const EventType = {\r\n // Mouse\r\n CLICK: 'click',\r\n AUXCLICK: 'auxclick',\r\n DBLCLICK: 'dblclick',\r\n MOUSE_UP: 'mouseup',\r\n MOUSE_DOWN: 'mousedown',\r\n MOUSE_OVER: 'mouseover',\r\n MOUSE_MOVE: 'mousemove',\r\n MOUSE_OUT: 'mouseout',\r\n MOUSE_ENTER: 'mouseenter',\r\n MOUSE_LEAVE: 'mouseleave',\r\n MOUSE_WHEEL: browser.isEdge ? 'mousewheel' : 'wheel',\r\n POINTER_UP: 'pointerup',\r\n POINTER_DOWN: 'pointerdown',\r\n POINTER_MOVE: 'pointermove',\r\n CONTEXT_MENU: 'contextmenu',\r\n WHEEL: 'wheel',\r\n // Keyboard\r\n KEY_DOWN: 'keydown',\r\n KEY_PRESS: 'keypress',\r\n KEY_UP: 'keyup',\r\n // HTML Document\r\n LOAD: 'load',\r\n BEFORE_UNLOAD: 'beforeunload',\r\n UNLOAD: 'unload',\r\n ABORT: 'abort',\r\n ERROR: 'error',\r\n RESIZE: 'resize',\r\n SCROLL: 'scroll',\r\n FULLSCREEN_CHANGE: 'fullscreenchange',\r\n WK_FULLSCREEN_CHANGE: 'webkitfullscreenchange',\r\n // Form\r\n SELECT: 'select',\r\n CHANGE: 'change',\r\n SUBMIT: 'submit',\r\n RESET: 'reset',\r\n FOCUS: 'focus',\r\n FOCUS_IN: 'focusin',\r\n FOCUS_OUT: 'focusout',\r\n BLUR: 'blur',\r\n INPUT: 'input',\r\n // Local Storage\r\n STORAGE: 'storage',\r\n // Drag\r\n DRAG_START: 'dragstart',\r\n DRAG: 'drag',\r\n DRAG_ENTER: 'dragenter',\r\n DRAG_LEAVE: 'dragleave',\r\n DRAG_OVER: 'dragover',\r\n DROP: 'drop',\r\n DRAG_END: 'dragend',\r\n // Animation\r\n ANIMATION_START: browser.isWebKit ? 'webkitAnimationStart' : 'animationstart',\r\n ANIMATION_END: browser.isWebKit ? 'webkitAnimationEnd' : 'animationend',\r\n ANIMATION_ITERATION: browser.isWebKit ? 'webkitAnimationIteration' : 'animationiteration'\r\n};\r\nexport const EventHelper = {\r\n stop: function (e, cancelBubble) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n }\r\n else {\r\n // IE8\r\n e.returnValue = false;\r\n }\r\n if (cancelBubble) {\r\n if (e.stopPropagation) {\r\n e.stopPropagation();\r\n }\r\n else {\r\n // IE8\r\n e.cancelBubble = true;\r\n }\r\n }\r\n }\r\n};\r\nexport function saveParentsScrollTop(node) {\r\n let r = [];\r\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\r\n r[i] = node.scrollTop;\r\n node = node.parentNode;\r\n }\r\n return r;\r\n}\r\nexport function restoreParentsScrollTop(node, state) {\r\n for (let i = 0; node && node.nodeType === node.ELEMENT_NODE; i++) {\r\n if (node.scrollTop !== state[i]) {\r\n node.scrollTop = state[i];\r\n }\r\n node = node.parentNode;\r\n }\r\n}\r\nclass FocusTracker extends Disposable {\r\n constructor(element) {\r\n super();\r\n this._onDidFocus = this._register(new Emitter());\r\n this.onDidFocus = this._onDidFocus.event;\r\n this._onDidBlur = this._register(new Emitter());\r\n this.onDidBlur = this._onDidBlur.event;\r\n let hasFocus = isAncestor(document.activeElement, element);\r\n let loosingFocus = false;\r\n const onFocus = () => {\r\n loosingFocus = false;\r\n if (!hasFocus) {\r\n hasFocus = true;\r\n this._onDidFocus.fire();\r\n }\r\n };\r\n const onBlur = () => {\r\n if (hasFocus) {\r\n loosingFocus = true;\r\n window.setTimeout(() => {\r\n if (loosingFocus) {\r\n loosingFocus = false;\r\n hasFocus = false;\r\n this._onDidBlur.fire();\r\n }\r\n }, 0);\r\n }\r\n };\r\n this._refreshStateHandler = () => {\r\n let currentNodeHasFocus = isAncestor(document.activeElement, element);\r\n if (currentNodeHasFocus !== hasFocus) {\r\n if (hasFocus) {\r\n onBlur();\r\n }\r\n else {\r\n onFocus();\r\n }\r\n }\r\n };\r\n this._register(domEvent(element, EventType.FOCUS, true)(onFocus));\r\n this._register(domEvent(element, EventType.BLUR, true)(onBlur));\r\n }\r\n}\r\nexport function trackFocus(element) {\r\n return new FocusTracker(element);\r\n}\r\nexport function append(parent, ...children) {\r\n children.forEach(child => parent.appendChild(child));\r\n return children[children.length - 1];\r\n}\r\nconst SELECTOR_REGEX = /([\\w\\-]+)?(#([\\w\\-]+))?((\\.([\\w\\-]+))*)/;\r\nexport function reset(parent, ...children) {\r\n parent.innerText = '';\r\n coalesce(children)\r\n .forEach(child => {\r\n if (child instanceof Node) {\r\n parent.appendChild(child);\r\n }\r\n else {\r\n parent.appendChild(document.createTextNode(child));\r\n }\r\n });\r\n}\r\nexport var Namespace;\r\n(function (Namespace) {\r\n Namespace[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\r\n Namespace[\"SVG\"] = \"http://www.w3.org/2000/svg\";\r\n})(Namespace || (Namespace = {}));\r\nfunction _$(namespace, description, attrs, ...children) {\r\n let match = SELECTOR_REGEX.exec(description);\r\n if (!match) {\r\n throw new Error('Bad use of emmet');\r\n }\r\n attrs = Object.assign({}, (attrs || {}));\r\n let tagName = match[1] || 'div';\r\n let result;\r\n if (namespace !== Namespace.HTML) {\r\n result = document.createElementNS(namespace, tagName);\r\n }\r\n else {\r\n result = document.createElement(tagName);\r\n }\r\n if (match[3]) {\r\n result.id = match[3];\r\n }\r\n if (match[4]) {\r\n result.className = match[4].replace(/\\./g, ' ').trim();\r\n }\r\n Object.keys(attrs).forEach(name => {\r\n const value = attrs[name];\r\n if (typeof value === 'undefined') {\r\n return;\r\n }\r\n if (/^on\\w+$/.test(name)) {\r\n result[name] = value;\r\n }\r\n else if (name === 'selected') {\r\n if (value) {\r\n result.setAttribute(name, 'true');\r\n }\r\n }\r\n else {\r\n result.setAttribute(name, value);\r\n }\r\n });\r\n coalesce(children)\r\n .forEach(child => {\r\n if (child instanceof Node) {\r\n result.appendChild(child);\r\n }\r\n else {\r\n result.appendChild(document.createTextNode(child));\r\n }\r\n });\r\n return result;\r\n}\r\nexport function $(description, attrs, ...children) {\r\n return _$(Namespace.HTML, description, attrs, ...children);\r\n}\r\n$.SVG = function (description, attrs, ...children) {\r\n return _$(Namespace.SVG, description, attrs, ...children);\r\n};\r\nexport function show(...elements) {\r\n for (let element of elements) {\r\n element.style.display = '';\r\n element.removeAttribute('aria-hidden');\r\n }\r\n}\r\nexport function hide(...elements) {\r\n for (let element of elements) {\r\n element.style.display = 'none';\r\n element.setAttribute('aria-hidden', 'true');\r\n }\r\n}\r\nfunction findParentWithAttribute(node, attribute) {\r\n while (node && node.nodeType === node.ELEMENT_NODE) {\r\n if (node instanceof HTMLElement && node.hasAttribute(attribute)) {\r\n return node;\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n}\r\nexport function removeTabIndexAndUpdateFocus(node) {\r\n if (!node || !node.hasAttribute('tabIndex')) {\r\n return;\r\n }\r\n // If we are the currently focused element and tabIndex is removed,\r\n // standard DOM behavior is to move focus to the <body> element. We\r\n // typically never want that, rather put focus to the closest element\r\n // in the hierarchy of the parent DOM nodes.\r\n if (document.activeElement === node) {\r\n let parentFocusable = findParentWithAttribute(node.parentElement, 'tabIndex');\r\n if (parentFocusable) {\r\n parentFocusable.focus();\r\n }\r\n }\r\n node.removeAttribute('tabindex');\r\n}\r\nexport function getElementsByTagName(tag) {\r\n return Array.prototype.slice.call(document.getElementsByTagName(tag), 0);\r\n}\r\n/**\r\n * Find a value usable for a dom node size such that the likelihood that it would be\r\n * displayed with constant screen pixels size is as high as possible.\r\n *\r\n * e.g. We would desire for the cursors to be 2px (CSS px) wide. Under a devicePixelRatio\r\n * of 1.25, the cursor will be 2.5 screen pixels wide. Depending on how the dom node aligns/\"snaps\"\r\n * with the screen pixels, it will sometimes be rendered with 2 screen pixels, and sometimes with 3 screen pixels.\r\n */\r\nexport function computeScreenAwareSize(cssPx) {\r\n const screenPx = window.devicePixelRatio * cssPx;\r\n return Math.max(1, Math.floor(screenPx)) / window.devicePixelRatio;\r\n}\r\n/**\r\n * See https://github.com/Microsoft/monaco-editor/issues/601\r\n * To protect against malicious code in the linked site, particularly phishing attempts,\r\n * the window.opener should be set to null to prevent the linked site from having access\r\n * to change the location of the current page.\r\n * See https://mathiasbynens.github.io/rel-noopener/\r\n */\r\nexport function windowOpenNoOpener(url) {\r\n if (platform.isNative || browser.isEdgeWebView) {\r\n // In VSCode, window.open() always returns null...\r\n // The same is true for a WebView (see https://github.com/Microsoft/monaco-editor/issues/628)\r\n window.open(url);\r\n }\r\n else {\r\n let newTab = window.open();\r\n if (newTab) {\r\n newTab.opener = null;\r\n newTab.location.href = url;\r\n }\r\n }\r\n}\r\nexport function animate(fn) {\r\n const step = () => {\r\n fn();\r\n stepDisposable = scheduleAtNextAnimationFrame(step);\r\n };\r\n let stepDisposable = scheduleAtNextAnimationFrame(step);\r\n return toDisposable(() => stepDisposable.dispose());\r\n}\r\nRemoteAuthorities.setPreferredWebSchema(/^https:/.test(window.location.href) ? 'https' : 'http');\r\nexport function asDomUri(uri) {\r\n if (!uri) {\r\n return uri;\r\n }\r\n if (Schemas.vscodeRemote === uri.scheme) {\r\n return RemoteAuthorities.rewrite(uri);\r\n }\r\n return uri;\r\n}\r\n/**\r\n * returns url('...')\r\n */\r\nexport function asCSSUrl(uri) {\r\n if (!uri) {\r\n return `url('')`;\r\n }\r\n return `url('${asDomUri(uri).toString(true).replace(/'/g, '%27')}')`;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Event as BaseEvent, Emitter } from '../common/event.js';\r\nexport const domEvent = (element, type, useCapture) => {\r\n const fn = (e) => emitter.fire(e);\r\n const emitter = new Emitter({\r\n onFirstListenerAdd: () => {\r\n element.addEventListener(type, fn, useCapture);\r\n },\r\n onLastListenerRemove: () => {\r\n element.removeEventListener(type, fn, useCapture);\r\n }\r\n });\r\n return emitter.event;\r\n};\r\nexport function stop(event) {\r\n return BaseEvent.map(event, e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return e;\r\n });\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from './dom.js';\r\nexport class FastDomNode {\r\n constructor(domNode) {\r\n this.domNode = domNode;\r\n this._maxWidth = -1;\r\n this._width = -1;\r\n this._height = -1;\r\n this._top = -1;\r\n this._left = -1;\r\n this._bottom = -1;\r\n this._right = -1;\r\n this._fontFamily = '';\r\n this._fontWeight = '';\r\n this._fontSize = -1;\r\n this._fontFeatureSettings = '';\r\n this._lineHeight = -1;\r\n this._letterSpacing = -100;\r\n this._className = '';\r\n this._display = '';\r\n this._position = '';\r\n this._visibility = '';\r\n this._backgroundColor = '';\r\n this._layerHint = false;\r\n this._contain = 'none';\r\n this._boxShadow = '';\r\n }\r\n setMaxWidth(maxWidth) {\r\n if (this._maxWidth === maxWidth) {\r\n return;\r\n }\r\n this._maxWidth = maxWidth;\r\n this.domNode.style.maxWidth = this._maxWidth + 'px';\r\n }\r\n setWidth(width) {\r\n if (this._width === width) {\r\n return;\r\n }\r\n this._width = width;\r\n this.domNode.style.width = this._width + 'px';\r\n }\r\n setHeight(height) {\r\n if (this._height === height) {\r\n return;\r\n }\r\n this._height = height;\r\n this.domNode.style.height = this._height + 'px';\r\n }\r\n setTop(top) {\r\n if (this._top === top) {\r\n return;\r\n }\r\n this._top = top;\r\n this.domNode.style.top = this._top + 'px';\r\n }\r\n unsetTop() {\r\n if (this._top === -1) {\r\n return;\r\n }\r\n this._top = -1;\r\n this.domNode.style.top = '';\r\n }\r\n setLeft(left) {\r\n if (this._left === left) {\r\n return;\r\n }\r\n this._left = left;\r\n this.domNode.style.left = this._left + 'px';\r\n }\r\n setBottom(bottom) {\r\n if (this._bottom === bottom) {\r\n return;\r\n }\r\n this._bottom = bottom;\r\n this.domNode.style.bottom = this._bottom + 'px';\r\n }\r\n setRight(right) {\r\n if (this._right === right) {\r\n return;\r\n }\r\n this._right = right;\r\n this.domNode.style.right = this._right + 'px';\r\n }\r\n setFontFamily(fontFamily) {\r\n if (this._fontFamily === fontFamily) {\r\n return;\r\n }\r\n this._fontFamily = fontFamily;\r\n this.domNode.style.fontFamily = this._fontFamily;\r\n }\r\n setFontWeight(fontWeight) {\r\n if (this._fontWeight === fontWeight) {\r\n return;\r\n }\r\n this._fontWeight = fontWeight;\r\n this.domNode.style.fontWeight = this._fontWeight;\r\n }\r\n setFontSize(fontSize) {\r\n if (this._fontSize === fontSize) {\r\n return;\r\n }\r\n this._fontSize = fontSize;\r\n this.domNode.style.fontSize = this._fontSize + 'px';\r\n }\r\n setFontFeatureSettings(fontFeatureSettings) {\r\n if (this._fontFeatureSettings === fontFeatureSettings) {\r\n return;\r\n }\r\n this._fontFeatureSettings = fontFeatureSettings;\r\n this.domNode.style.fontFeatureSettings = this._fontFeatureSettings;\r\n }\r\n setLineHeight(lineHeight) {\r\n if (this._lineHeight === lineHeight) {\r\n return;\r\n }\r\n this._lineHeight = lineHeight;\r\n this.domNode.style.lineHeight = this._lineHeight + 'px';\r\n }\r\n setLetterSpacing(letterSpacing) {\r\n if (this._letterSpacing === letterSpacing) {\r\n return;\r\n }\r\n this._letterSpacing = letterSpacing;\r\n this.domNode.style.letterSpacing = this._letterSpacing + 'px';\r\n }\r\n setClassName(className) {\r\n if (this._className === className) {\r\n return;\r\n }\r\n this._className = className;\r\n this.domNode.className = this._className;\r\n }\r\n toggleClassName(className, shouldHaveIt) {\r\n dom.toggleClass(this.domNode, className, shouldHaveIt);\r\n this._className = this.domNode.className;\r\n }\r\n setDisplay(display) {\r\n if (this._display === display) {\r\n return;\r\n }\r\n this._display = display;\r\n this.domNode.style.display = this._display;\r\n }\r\n setPosition(position) {\r\n if (this._position === position) {\r\n return;\r\n }\r\n this._position = position;\r\n this.domNode.style.position = this._position;\r\n }\r\n setVisibility(visibility) {\r\n if (this._visibility === visibility) {\r\n return;\r\n }\r\n this._visibility = visibility;\r\n this.domNode.style.visibility = this._visibility;\r\n }\r\n setBackgroundColor(backgroundColor) {\r\n if (this._backgroundColor === backgroundColor) {\r\n return;\r\n }\r\n this._backgroundColor = backgroundColor;\r\n this.domNode.style.backgroundColor = this._backgroundColor;\r\n }\r\n setLayerHinting(layerHint) {\r\n if (this._layerHint === layerHint) {\r\n return;\r\n }\r\n this._layerHint = layerHint;\r\n this.domNode.style.transform = this._layerHint ? 'translate3d(0px, 0px, 0px)' : '';\r\n }\r\n setBoxShadow(boxShadow) {\r\n if (this._boxShadow === boxShadow) {\r\n return;\r\n }\r\n this._boxShadow = boxShadow;\r\n this.domNode.style.boxShadow = boxShadow;\r\n }\r\n setContain(contain) {\r\n if (this._contain === contain) {\r\n return;\r\n }\r\n this._contain = contain;\r\n this.domNode.style.contain = this._contain;\r\n }\r\n setAttribute(name, value) {\r\n this.domNode.setAttribute(name, value);\r\n }\r\n removeAttribute(name) {\r\n this.domNode.removeAttribute(name);\r\n }\r\n appendChild(child) {\r\n this.domNode.appendChild(child.domNode);\r\n }\r\n removeChild(child) {\r\n this.domNode.removeChild(child.domNode);\r\n }\r\n}\r\nexport function createFastDomNode(domNode) {\r\n return new FastDomNode(domNode);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as DOM from './dom.js';\r\nexport function renderText(text, options = {}) {\r\n const element = createElement(options);\r\n element.textContent = text;\r\n return element;\r\n}\r\nexport function renderFormattedText(formattedText, options = {}) {\r\n const element = createElement(options);\r\n _renderFormattedText(element, parseFormattedText(formattedText), options.actionHandler);\r\n return element;\r\n}\r\nexport function createElement(options) {\r\n const tagName = options.inline ? 'span' : 'div';\r\n const element = document.createElement(tagName);\r\n if (options.className) {\r\n element.className = options.className;\r\n }\r\n return element;\r\n}\r\nclass StringStream {\r\n constructor(source) {\r\n this.source = source;\r\n this.index = 0;\r\n }\r\n eos() {\r\n return this.index >= this.source.length;\r\n }\r\n next() {\r\n const next = this.peek();\r\n this.advance();\r\n return next;\r\n }\r\n peek() {\r\n return this.source[this.index];\r\n }\r\n advance() {\r\n this.index++;\r\n }\r\n}\r\nfunction _renderFormattedText(element, treeNode, actionHandler) {\r\n let child;\r\n if (treeNode.type === 2 /* Text */) {\r\n child = document.createTextNode(treeNode.content || '');\r\n }\r\n else if (treeNode.type === 3 /* Bold */) {\r\n child = document.createElement('b');\r\n }\r\n else if (treeNode.type === 4 /* Italics */) {\r\n child = document.createElement('i');\r\n }\r\n else if (treeNode.type === 5 /* Action */ && actionHandler) {\r\n const a = document.createElement('a');\r\n a.href = '#';\r\n actionHandler.disposeables.add(DOM.addStandardDisposableListener(a, 'click', (event) => {\r\n actionHandler.callback(String(treeNode.index), event);\r\n }));\r\n child = a;\r\n }\r\n else if (treeNode.type === 7 /* NewLine */) {\r\n child = document.createElement('br');\r\n }\r\n else if (treeNode.type === 1 /* Root */) {\r\n child = element;\r\n }\r\n if (child && element !== child) {\r\n element.appendChild(child);\r\n }\r\n if (child && Array.isArray(treeNode.children)) {\r\n treeNode.children.forEach((nodeChild) => {\r\n _renderFormattedText(child, nodeChild, actionHandler);\r\n });\r\n }\r\n}\r\nfunction parseFormattedText(content) {\r\n const root = {\r\n type: 1 /* Root */,\r\n children: []\r\n };\r\n let actionViewItemIndex = 0;\r\n let current = root;\r\n const stack = [];\r\n const stream = new StringStream(content);\r\n while (!stream.eos()) {\r\n let next = stream.next();\r\n const isEscapedFormatType = (next === '\\\\' && formatTagType(stream.peek()) !== 0 /* Invalid */);\r\n if (isEscapedFormatType) {\r\n next = stream.next(); // unread the backslash if it escapes a format tag type\r\n }\r\n if (!isEscapedFormatType && isFormatTag(next) && next === stream.peek()) {\r\n stream.advance();\r\n if (current.type === 2 /* Text */) {\r\n current = stack.pop();\r\n }\r\n const type = formatTagType(next);\r\n if (current.type === type || (current.type === 5 /* Action */ && type === 6 /* ActionClose */)) {\r\n current = stack.pop();\r\n }\r\n else {\r\n const newCurrent = {\r\n type: type,\r\n children: []\r\n };\r\n if (type === 5 /* Action */) {\r\n newCurrent.index = actionViewItemIndex;\r\n actionViewItemIndex++;\r\n }\r\n current.children.push(newCurrent);\r\n stack.push(current);\r\n current = newCurrent;\r\n }\r\n }\r\n else if (next === '\\n') {\r\n if (current.type === 2 /* Text */) {\r\n current = stack.pop();\r\n }\r\n current.children.push({\r\n type: 7 /* NewLine */\r\n });\r\n }\r\n else {\r\n if (current.type !== 2 /* Text */) {\r\n const textCurrent = {\r\n type: 2 /* Text */,\r\n content: next\r\n };\r\n current.children.push(textCurrent);\r\n stack.push(current);\r\n current = textCurrent;\r\n }\r\n else {\r\n current.content += next;\r\n }\r\n }\r\n }\r\n if (current.type === 2 /* Text */) {\r\n current = stack.pop();\r\n }\r\n if (stack.length) {\r\n // incorrectly formatted string literal\r\n }\r\n return root;\r\n}\r\nfunction isFormatTag(char) {\r\n return formatTagType(char) !== 0 /* Invalid */;\r\n}\r\nfunction formatTagType(char) {\r\n switch (char) {\r\n case '*':\r\n return 3 /* Bold */;\r\n case '_':\r\n return 4 /* Italics */;\r\n case '[':\r\n return 5 /* Action */;\r\n case ']':\r\n return 6 /* ActionClose */;\r\n default:\r\n return 0 /* Invalid */;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from './dom.js';\r\nimport * as platform from '../common/platform.js';\r\nimport { IframeUtils } from './iframe.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\nimport { DisposableStore } from '../common/lifecycle.js';\r\nimport { BrowserFeatures } from './canIUse.js';\r\nexport function standardMouseMoveMerger(lastEvent, currentEvent) {\r\n let ev = new StandardMouseEvent(currentEvent);\r\n ev.preventDefault();\r\n return {\r\n leftButton: ev.leftButton,\r\n buttons: ev.buttons,\r\n posx: ev.posx,\r\n posy: ev.posy\r\n };\r\n}\r\nexport class GlobalMouseMoveMonitor {\r\n constructor() {\r\n this._hooks = new DisposableStore();\r\n this._mouseMoveEventMerger = null;\r\n this._mouseMoveCallback = null;\r\n this._onStopCallback = null;\r\n }\r\n dispose() {\r\n this.stopMonitoring(false);\r\n this._hooks.dispose();\r\n }\r\n stopMonitoring(invokeStopCallback) {\r\n if (!this.isMonitoring()) {\r\n // Not monitoring\r\n return;\r\n }\r\n // Unhook\r\n this._hooks.clear();\r\n this._mouseMoveEventMerger = null;\r\n this._mouseMoveCallback = null;\r\n const onStopCallback = this._onStopCallback;\r\n this._onStopCallback = null;\r\n if (invokeStopCallback && onStopCallback) {\r\n onStopCallback();\r\n }\r\n }\r\n isMonitoring() {\r\n return !!this._mouseMoveEventMerger;\r\n }\r\n startMonitoring(initialElement, initialButtons, mouseMoveEventMerger, mouseMoveCallback, onStopCallback) {\r\n if (this.isMonitoring()) {\r\n // I am already hooked\r\n return;\r\n }\r\n this._mouseMoveEventMerger = mouseMoveEventMerger;\r\n this._mouseMoveCallback = mouseMoveCallback;\r\n this._onStopCallback = onStopCallback;\r\n const windowChain = IframeUtils.getSameOriginWindowChain();\r\n const mouseMove = platform.isIOS && BrowserFeatures.pointerEvents ? 'pointermove' : 'mousemove';\r\n const mouseUp = platform.isIOS && BrowserFeatures.pointerEvents ? 'pointerup' : 'mouseup';\r\n const listenTo = windowChain.map(element => element.window.document);\r\n const shadowRoot = dom.getShadowRoot(initialElement);\r\n if (shadowRoot) {\r\n listenTo.unshift(shadowRoot);\r\n }\r\n for (const element of listenTo) {\r\n this._hooks.add(dom.addDisposableThrottledListener(element, mouseMove, (data) => {\r\n if (data.buttons !== initialButtons) {\r\n // Buttons state has changed in the meantime\r\n this.stopMonitoring(true);\r\n return;\r\n }\r\n this._mouseMoveCallback(data);\r\n }, (lastEvent, currentEvent) => this._mouseMoveEventMerger(lastEvent, currentEvent)));\r\n this._hooks.add(dom.addDisposableListener(element, mouseUp, (e) => this.stopMonitoring(true)));\r\n }\r\n if (IframeUtils.hasDifferentOriginAncestor()) {\r\n let lastSameOriginAncestor = windowChain[windowChain.length - 1];\r\n // We might miss a mouse up if it happens outside the iframe\r\n // This one is for Chrome\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document, 'mouseout', (browserEvent) => {\r\n let e = new StandardMouseEvent(browserEvent);\r\n if (e.target.tagName.toLowerCase() === 'html') {\r\n this.stopMonitoring(true);\r\n }\r\n }));\r\n // This one is for FF\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document, 'mouseover', (browserEvent) => {\r\n let e = new StandardMouseEvent(browserEvent);\r\n if (e.target.tagName.toLowerCase() === 'html') {\r\n this.stopMonitoring(true);\r\n }\r\n }));\r\n // This one is for IE\r\n this._hooks.add(dom.addDisposableListener(lastSameOriginAncestor.window.document.body, 'mouseleave', (browserEvent) => {\r\n this.stopMonitoring(true);\r\n }));\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nlet hasDifferentOriginAncestorFlag = false;\r\nlet sameOriginWindowChainCache = null;\r\nfunction getParentWindowIfSameOrigin(w) {\r\n if (!w.parent || w.parent === w) {\r\n return null;\r\n }\r\n // Cannot really tell if we have access to the parent window unless we try to access something in it\r\n try {\r\n let location = w.location;\r\n let parentLocation = w.parent.location;\r\n if (location.origin !== 'null' && parentLocation.origin !== 'null') {\r\n if (location.protocol !== parentLocation.protocol || location.hostname !== parentLocation.hostname || location.port !== parentLocation.port) {\r\n hasDifferentOriginAncestorFlag = true;\r\n return null;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n hasDifferentOriginAncestorFlag = true;\r\n return null;\r\n }\r\n return w.parent;\r\n}\r\nexport class IframeUtils {\r\n /**\r\n * Returns a chain of embedded windows with the same origin (which can be accessed programmatically).\r\n * Having a chain of length 1 might mean that the current execution environment is running outside of an iframe or inside an iframe embedded in a window with a different origin.\r\n * To distinguish if at one point the current execution environment is running inside a window with a different origin, see hasDifferentOriginAncestor()\r\n */\r\n static getSameOriginWindowChain() {\r\n if (!sameOriginWindowChainCache) {\r\n sameOriginWindowChainCache = [];\r\n let w = window;\r\n let parent;\r\n do {\r\n parent = getParentWindowIfSameOrigin(w);\r\n if (parent) {\r\n sameOriginWindowChainCache.push({\r\n window: w,\r\n iframeElement: w.frameElement || null\r\n });\r\n }\r\n else {\r\n sameOriginWindowChainCache.push({\r\n window: w,\r\n iframeElement: null\r\n });\r\n }\r\n w = parent;\r\n } while (w);\r\n }\r\n return sameOriginWindowChainCache.slice(0);\r\n }\r\n /**\r\n * Returns true if the current execution environment is chained in a list of iframes which at one point ends in a window with a different origin.\r\n * Returns false if the current execution environment is not running inside an iframe or if the entire chain of iframes have the same origin.\r\n */\r\n static hasDifferentOriginAncestor() {\r\n if (!sameOriginWindowChainCache) {\r\n this.getSameOriginWindowChain();\r\n }\r\n return hasDifferentOriginAncestorFlag;\r\n }\r\n /**\r\n * Returns the position of `childWindow` relative to `ancestorWindow`\r\n */\r\n static getPositionOfChildWindowRelativeToAncestorWindow(childWindow, ancestorWindow) {\r\n if (!ancestorWindow || childWindow === ancestorWindow) {\r\n return {\r\n top: 0,\r\n left: 0\r\n };\r\n }\r\n let top = 0, left = 0;\r\n let windowChain = this.getSameOriginWindowChain();\r\n for (const windowChainEl of windowChain) {\r\n top += windowChainEl.window.scrollY;\r\n left += windowChainEl.window.scrollX;\r\n if (windowChainEl.window === ancestorWindow) {\r\n break;\r\n }\r\n if (!windowChainEl.iframeElement) {\r\n break;\r\n }\r\n let boundingRect = windowChainEl.iframeElement.getBoundingClientRect();\r\n top += boundingRect.top;\r\n left += boundingRect.left;\r\n }\r\n return {\r\n top: top,\r\n left: left\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { KeyCodeUtils, SimpleKeybinding } from '../common/keyCodes.js';\r\nimport * as platform from '../common/platform.js';\r\nlet KEY_CODE_MAP = new Array(230);\r\nlet INVERSE_KEY_CODE_MAP = new Array(112 /* MAX_VALUE */);\r\n(function () {\r\n for (let i = 0; i < INVERSE_KEY_CODE_MAP.length; i++) {\r\n INVERSE_KEY_CODE_MAP[i] = -1;\r\n }\r\n function define(code, keyCode) {\r\n KEY_CODE_MAP[code] = keyCode;\r\n INVERSE_KEY_CODE_MAP[keyCode] = code;\r\n }\r\n define(3, 7 /* PauseBreak */); // VK_CANCEL 0x03 Control-break processing\r\n define(8, 1 /* Backspace */);\r\n define(9, 2 /* Tab */);\r\n define(13, 3 /* Enter */);\r\n define(16, 4 /* Shift */);\r\n define(17, 5 /* Ctrl */);\r\n define(18, 6 /* Alt */);\r\n define(19, 7 /* PauseBreak */);\r\n define(20, 8 /* CapsLock */);\r\n define(27, 9 /* Escape */);\r\n define(32, 10 /* Space */);\r\n define(33, 11 /* PageUp */);\r\n define(34, 12 /* PageDown */);\r\n define(35, 13 /* End */);\r\n define(36, 14 /* Home */);\r\n define(37, 15 /* LeftArrow */);\r\n define(38, 16 /* UpArrow */);\r\n define(39, 17 /* RightArrow */);\r\n define(40, 18 /* DownArrow */);\r\n define(45, 19 /* Insert */);\r\n define(46, 20 /* Delete */);\r\n define(48, 21 /* KEY_0 */);\r\n define(49, 22 /* KEY_1 */);\r\n define(50, 23 /* KEY_2 */);\r\n define(51, 24 /* KEY_3 */);\r\n define(52, 25 /* KEY_4 */);\r\n define(53, 26 /* KEY_5 */);\r\n define(54, 27 /* KEY_6 */);\r\n define(55, 28 /* KEY_7 */);\r\n define(56, 29 /* KEY_8 */);\r\n define(57, 30 /* KEY_9 */);\r\n define(65, 31 /* KEY_A */);\r\n define(66, 32 /* KEY_B */);\r\n define(67, 33 /* KEY_C */);\r\n define(68, 34 /* KEY_D */);\r\n define(69, 35 /* KEY_E */);\r\n define(70, 36 /* KEY_F */);\r\n define(71, 37 /* KEY_G */);\r\n define(72, 38 /* KEY_H */);\r\n define(73, 39 /* KEY_I */);\r\n define(74, 40 /* KEY_J */);\r\n define(75, 41 /* KEY_K */);\r\n define(76, 42 /* KEY_L */);\r\n define(77, 43 /* KEY_M */);\r\n define(78, 44 /* KEY_N */);\r\n define(79, 45 /* KEY_O */);\r\n define(80, 46 /* KEY_P */);\r\n define(81, 47 /* KEY_Q */);\r\n define(82, 48 /* KEY_R */);\r\n define(83, 49 /* KEY_S */);\r\n define(84, 50 /* KEY_T */);\r\n define(85, 51 /* KEY_U */);\r\n define(86, 52 /* KEY_V */);\r\n define(87, 53 /* KEY_W */);\r\n define(88, 54 /* KEY_X */);\r\n define(89, 55 /* KEY_Y */);\r\n define(90, 56 /* KEY_Z */);\r\n define(93, 58 /* ContextMenu */);\r\n define(96, 93 /* NUMPAD_0 */);\r\n define(97, 94 /* NUMPAD_1 */);\r\n define(98, 95 /* NUMPAD_2 */);\r\n define(99, 96 /* NUMPAD_3 */);\r\n define(100, 97 /* NUMPAD_4 */);\r\n define(101, 98 /* NUMPAD_5 */);\r\n define(102, 99 /* NUMPAD_6 */);\r\n define(103, 100 /* NUMPAD_7 */);\r\n define(104, 101 /* NUMPAD_8 */);\r\n define(105, 102 /* NUMPAD_9 */);\r\n define(106, 103 /* NUMPAD_MULTIPLY */);\r\n define(107, 104 /* NUMPAD_ADD */);\r\n define(108, 105 /* NUMPAD_SEPARATOR */);\r\n define(109, 106 /* NUMPAD_SUBTRACT */);\r\n define(110, 107 /* NUMPAD_DECIMAL */);\r\n define(111, 108 /* NUMPAD_DIVIDE */);\r\n define(112, 59 /* F1 */);\r\n define(113, 60 /* F2 */);\r\n define(114, 61 /* F3 */);\r\n define(115, 62 /* F4 */);\r\n define(116, 63 /* F5 */);\r\n define(117, 64 /* F6 */);\r\n define(118, 65 /* F7 */);\r\n define(119, 66 /* F8 */);\r\n define(120, 67 /* F9 */);\r\n define(121, 68 /* F10 */);\r\n define(122, 69 /* F11 */);\r\n define(123, 70 /* F12 */);\r\n define(124, 71 /* F13 */);\r\n define(125, 72 /* F14 */);\r\n define(126, 73 /* F15 */);\r\n define(127, 74 /* F16 */);\r\n define(128, 75 /* F17 */);\r\n define(129, 76 /* F18 */);\r\n define(130, 77 /* F19 */);\r\n define(144, 78 /* NumLock */);\r\n define(145, 79 /* ScrollLock */);\r\n define(186, 80 /* US_SEMICOLON */);\r\n define(187, 81 /* US_EQUAL */);\r\n define(188, 82 /* US_COMMA */);\r\n define(189, 83 /* US_MINUS */);\r\n define(190, 84 /* US_DOT */);\r\n define(191, 85 /* US_SLASH */);\r\n define(192, 86 /* US_BACKTICK */);\r\n define(193, 110 /* ABNT_C1 */);\r\n define(194, 111 /* ABNT_C2 */);\r\n define(219, 87 /* US_OPEN_SQUARE_BRACKET */);\r\n define(220, 88 /* US_BACKSLASH */);\r\n define(221, 89 /* US_CLOSE_SQUARE_BRACKET */);\r\n define(222, 90 /* US_QUOTE */);\r\n define(223, 91 /* OEM_8 */);\r\n define(226, 92 /* OEM_102 */);\r\n /**\r\n * https://lists.w3.org/Archives/Public/www-dom/2010JulSep/att-0182/keyCode-spec.html\r\n * If an Input Method Editor is processing key input and the event is keydown, return 229.\r\n */\r\n define(229, 109 /* KEY_IN_COMPOSITION */);\r\n if (browser.isFirefox) {\r\n define(59, 80 /* US_SEMICOLON */);\r\n define(107, 81 /* US_EQUAL */);\r\n define(109, 83 /* US_MINUS */);\r\n if (platform.isMacintosh) {\r\n define(224, 57 /* Meta */);\r\n }\r\n }\r\n else if (browser.isWebKit) {\r\n define(91, 57 /* Meta */);\r\n if (platform.isMacintosh) {\r\n // the two meta keys in the Mac have different key codes (91 and 93)\r\n define(93, 57 /* Meta */);\r\n }\r\n else {\r\n define(92, 57 /* Meta */);\r\n }\r\n }\r\n})();\r\nfunction extractKeyCode(e) {\r\n if (e.charCode) {\r\n // \"keypress\" events mostly\r\n let char = String.fromCharCode(e.charCode).toUpperCase();\r\n return KeyCodeUtils.fromString(char);\r\n }\r\n return KEY_CODE_MAP[e.keyCode] || 0 /* Unknown */;\r\n}\r\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* WinCtrl */ : 2048 /* CtrlCmd */);\r\nconst altKeyMod = 512 /* Alt */;\r\nconst shiftKeyMod = 1024 /* Shift */;\r\nconst metaKeyMod = (platform.isMacintosh ? 2048 /* CtrlCmd */ : 256 /* WinCtrl */);\r\nexport class StandardKeyboardEvent {\r\n constructor(source) {\r\n this._standardKeyboardEventBrand = true;\r\n let e = source;\r\n this.browserEvent = e;\r\n this.target = e.target;\r\n this.ctrlKey = e.ctrlKey;\r\n this.shiftKey = e.shiftKey;\r\n this.altKey = e.altKey;\r\n this.metaKey = e.metaKey;\r\n this.keyCode = extractKeyCode(e);\r\n this.code = e.code;\r\n // console.info(e.type + \": keyCode: \" + e.keyCode + \", which: \" + e.which + \", charCode: \" + e.charCode + \", detail: \" + e.detail + \" ====> \" + this.keyCode + ' -- ' + KeyCode[this.keyCode]);\r\n this.ctrlKey = this.ctrlKey || this.keyCode === 5 /* Ctrl */;\r\n this.altKey = this.altKey || this.keyCode === 6 /* Alt */;\r\n this.shiftKey = this.shiftKey || this.keyCode === 4 /* Shift */;\r\n this.metaKey = this.metaKey || this.keyCode === 57 /* Meta */;\r\n this._asKeybinding = this._computeKeybinding();\r\n this._asRuntimeKeybinding = this._computeRuntimeKeybinding();\r\n // console.log(`code: ${e.code}, keyCode: ${e.keyCode}, key: ${e.key}`);\r\n }\r\n preventDefault() {\r\n if (this.browserEvent && this.browserEvent.preventDefault) {\r\n this.browserEvent.preventDefault();\r\n }\r\n }\r\n stopPropagation() {\r\n if (this.browserEvent && this.browserEvent.stopPropagation) {\r\n this.browserEvent.stopPropagation();\r\n }\r\n }\r\n toKeybinding() {\r\n return this._asRuntimeKeybinding;\r\n }\r\n equals(other) {\r\n return this._asKeybinding === other;\r\n }\r\n _computeKeybinding() {\r\n let key = 0 /* Unknown */;\r\n if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) {\r\n key = this.keyCode;\r\n }\r\n let result = 0;\r\n if (this.ctrlKey) {\r\n result |= ctrlKeyMod;\r\n }\r\n if (this.altKey) {\r\n result |= altKeyMod;\r\n }\r\n if (this.shiftKey) {\r\n result |= shiftKeyMod;\r\n }\r\n if (this.metaKey) {\r\n result |= metaKeyMod;\r\n }\r\n result |= key;\r\n return result;\r\n }\r\n _computeRuntimeKeybinding() {\r\n let key = 0 /* Unknown */;\r\n if (this.keyCode !== 5 /* Ctrl */ && this.keyCode !== 4 /* Shift */ && this.keyCode !== 6 /* Alt */ && this.keyCode !== 57 /* Meta */) {\r\n key = this.keyCode;\r\n }\r\n return new SimpleKeybinding(this.ctrlKey, this.shiftKey, this.altKey, this.metaKey, key);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as DOM from './dom.js';\r\nimport { createElement } from './formattedTextRenderer.js';\r\nimport { onUnexpectedError } from '../common/errors.js';\r\nimport { parseHrefAndDimensions, removeMarkdownEscapes } from '../common/htmlContent.js';\r\nimport { defaultGenerator } from '../common/idGenerator.js';\r\nimport * as marked from '../common/marked/marked.js';\r\nimport { insane } from '../common/insane/insane.js';\r\nimport { parse } from '../common/marshalling.js';\r\nimport { cloneAndChange } from '../common/objects.js';\r\nimport { escape } from '../common/strings.js';\r\nimport { URI } from '../common/uri.js';\r\nimport { Schemas } from '../common/network.js';\r\nimport { renderCodicons, markdownEscapeEscapedCodicons } from '../common/codicons.js';\r\nimport { resolvePath } from '../common/resources.js';\r\nimport { StandardMouseEvent } from './mouseEvent.js';\r\n/**\r\n * Create html nodes for the given content element.\r\n */\r\nexport function renderMarkdown(markdown, options = {}, markedOptions = {}) {\r\n var _a;\r\n const element = createElement(options);\r\n const _uriMassage = function (part) {\r\n let data;\r\n try {\r\n data = parse(decodeURIComponent(part));\r\n }\r\n catch (e) {\r\n // ignore\r\n }\r\n if (!data) {\r\n return part;\r\n }\r\n data = cloneAndChange(data, value => {\r\n if (markdown.uris && markdown.uris[value]) {\r\n return URI.revive(markdown.uris[value]);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n return encodeURIComponent(JSON.stringify(data));\r\n };\r\n const _href = function (href, isDomUri) {\r\n const data = markdown.uris && markdown.uris[href];\r\n if (!data) {\r\n return href; // no uri exists\r\n }\r\n let uri = URI.revive(data);\r\n if (URI.parse(href).toString() === uri.toString()) {\r\n return href; // no tranformation performed\r\n }\r\n if (isDomUri) {\r\n // this URI will end up as \"src\"-attribute of a dom node\r\n // and because of that special rewriting needs to be done\r\n // so that the URI uses a protocol that's understood by\r\n // browsers (like http or https)\r\n return DOM.asDomUri(uri).toString(true);\r\n }\r\n if (uri.query) {\r\n uri = uri.with({ query: _uriMassage(uri.query) });\r\n }\r\n return uri.toString();\r\n };\r\n // signal to code-block render that the\r\n // element has been created\r\n let signalInnerHTML;\r\n const withInnerHTML = new Promise(c => signalInnerHTML = c);\r\n const renderer = new marked.Renderer();\r\n renderer.image = (href, title, text) => {\r\n let dimensions = [];\r\n let attributes = [];\r\n if (href) {\r\n ({ href, dimensions } = parseHrefAndDimensions(href));\r\n href = _href(href, true);\r\n try {\r\n const hrefAsUri = URI.parse(href);\r\n if (options.baseUrl && hrefAsUri.scheme === Schemas.file) { // absolute or relative local path, or file: uri\r\n href = resolvePath(options.baseUrl, href).toString();\r\n }\r\n }\r\n catch (err) { }\r\n attributes.push(`src=\"${href}\"`);\r\n }\r\n if (text) {\r\n attributes.push(`alt=\"${text}\"`);\r\n }\r\n if (title) {\r\n attributes.push(`title=\"${title}\"`);\r\n }\r\n if (dimensions.length) {\r\n attributes = attributes.concat(dimensions);\r\n }\r\n return '<img ' + attributes.join(' ') + '>';\r\n };\r\n renderer.link = (href, title, text) => {\r\n // Remove markdown escapes. Workaround for https://github.com/chjj/marked/issues/829\r\n if (href === text) { // raw link case\r\n text = removeMarkdownEscapes(text);\r\n }\r\n href = _href(href, false);\r\n if (options.baseUrl) {\r\n const hasScheme = /^\\w[\\w\\d+.-]*:/.test(href);\r\n if (!hasScheme) {\r\n href = resolvePath(options.baseUrl, href).toString();\r\n }\r\n }\r\n title = removeMarkdownEscapes(title);\r\n href = removeMarkdownEscapes(href);\r\n if (!href\r\n || href.match(/^data:|javascript:/i)\r\n || (href.match(/^command:/i) && !markdown.isTrusted)\r\n || href.match(/^command:(\\/\\/\\/)?_workbench\\.downloadResource/i)) {\r\n // drop the link\r\n return text;\r\n }\r\n else {\r\n // HTML Encode href\r\n href = href.replace(/&/g, '&')\r\n .replace(/</g, '<')\r\n .replace(/>/g, '>')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''');\r\n return `<a href=\"#\" data-href=\"${href}\" title=\"${title || href}\">${text}</a>`;\r\n }\r\n };\r\n renderer.paragraph = (text) => {\r\n return `<p>${markdown.supportThemeIcons ? renderCodicons(text) : text}</p>`;\r\n };\r\n if (options.codeBlockRenderer) {\r\n renderer.code = (code, lang) => {\r\n const value = options.codeBlockRenderer(lang, code);\r\n // when code-block rendering is async we return sync\r\n // but update the node with the real result later.\r\n const id = defaultGenerator.nextId();\r\n const promise = Promise.all([value, withInnerHTML]).then(values => {\r\n const strValue = values[0];\r\n const span = element.querySelector(`div[data-code=\"${id}\"]`);\r\n if (span) {\r\n span.innerHTML = strValue;\r\n }\r\n }).catch(err => {\r\n // ignore\r\n });\r\n if (options.codeBlockRenderCallback) {\r\n promise.then(options.codeBlockRenderCallback);\r\n }\r\n return `<div class=\"code\" data-code=\"${id}\">${escape(code)}</div>`;\r\n };\r\n }\r\n const actionHandler = options.actionHandler;\r\n if (actionHandler) {\r\n [DOM.EventType.CLICK, DOM.EventType.AUXCLICK].forEach(event => {\r\n actionHandler.disposeables.add(DOM.addDisposableListener(element, event, (e) => {\r\n const mouseEvent = new StandardMouseEvent(e);\r\n if (!mouseEvent.leftButton && !mouseEvent.middleButton) {\r\n return;\r\n }\r\n let target = mouseEvent.target;\r\n if (target.tagName !== 'A') {\r\n target = target.parentElement;\r\n if (!target || target.tagName !== 'A') {\r\n return;\r\n }\r\n }\r\n try {\r\n const href = target.dataset['href'];\r\n if (href) {\r\n actionHandler.callback(href, mouseEvent);\r\n }\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n finally {\r\n mouseEvent.preventDefault();\r\n }\r\n }));\r\n });\r\n }\r\n // Use our own sanitizer so that we can let through only spans.\r\n // Otherwise, we'd be letting all html be rendered.\r\n // If we want to allow markdown permitted tags, then we can delete sanitizer and sanitize.\r\n markedOptions.sanitizer = (html) => {\r\n const match = markdown.isTrusted ? html.match(/^(<span[^<]+>)|(<\\/\\s*span>)$/) : undefined;\r\n return match ? html : '';\r\n };\r\n markedOptions.sanitize = true;\r\n markedOptions.renderer = renderer;\r\n const allowedSchemes = [Schemas.http, Schemas.https, Schemas.mailto, Schemas.data, Schemas.file, Schemas.vscodeRemote, Schemas.vscodeRemoteResource];\r\n if (markdown.isTrusted) {\r\n allowedSchemes.push(Schemas.command);\r\n }\r\n // values that are too long will freeze the UI\r\n let value = (_a = markdown.value) !== null && _a !== void 0 ? _a : '';\r\n if (value.length > 100000) {\r\n value = `${value.substr(0, 100000)}…`;\r\n }\r\n const renderedMarkdown = marked.parse(markdown.supportThemeIcons ? markdownEscapeEscapedCodicons(value) : value, markedOptions);\r\n function filter(token) {\r\n if (token.tag === 'span' && markdown.isTrusted && (Object.keys(token.attrs).length === 1)) {\r\n if (token.attrs['style']) {\r\n return !!token.attrs['style'].match(/^(color\\:#[0-9a-fA-F]+;)?(background-color\\:#[0-9a-fA-F]+;)?$/);\r\n }\r\n else if (token.attrs['class']) {\r\n // The class should match codicon rendering in src\\vs\\base\\common\\codicons.ts\r\n return !!token.attrs['class'].match(/^codicon codicon-[a-z\\-]+( codicon-animation-[a-z\\-]+)?$/);\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n element.innerHTML = insane(renderedMarkdown, {\r\n allowedSchemes,\r\n // allowedTags should included everything that markdown renders to.\r\n // Since we have our own sanitize function for marked, it's possible we missed some tag so let insane make sure.\r\n // HTML tags that can result from markdown are from reading https://spec.commonmark.org/0.29/\r\n // HTML table tags that can result from markdown are from https://github.github.com/gfm/#tables-extension-\r\n allowedTags: ['ul', 'li', 'p', 'code', 'blockquote', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'em', 'pre', 'table', 'thead', 'tbody', 'tr', 'th', 'td', 'div', 'del', 'a', 'strong', 'br', 'img', 'span'],\r\n allowedAttributes: {\r\n 'a': ['href', 'name', 'target', 'data-href'],\r\n 'img': ['src', 'title', 'alt', 'width', 'height'],\r\n 'div': ['class', 'data-code'],\r\n 'span': ['class', 'style'],\r\n // https://github.com/microsoft/vscode/issues/95937\r\n 'th': ['align'],\r\n 'td': ['align']\r\n },\r\n filter\r\n });\r\n signalInnerHTML();\r\n return element;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from './browser.js';\r\nimport { IframeUtils } from './iframe.js';\r\nimport * as platform from '../common/platform.js';\r\nexport class StandardMouseEvent {\r\n constructor(e) {\r\n this.timestamp = Date.now();\r\n this.browserEvent = e;\r\n this.leftButton = e.button === 0;\r\n this.middleButton = e.button === 1;\r\n this.rightButton = e.button === 2;\r\n this.buttons = e.buttons;\r\n this.target = e.target;\r\n this.detail = e.detail || 1;\r\n if (e.type === 'dblclick') {\r\n this.detail = 2;\r\n }\r\n this.ctrlKey = e.ctrlKey;\r\n this.shiftKey = e.shiftKey;\r\n this.altKey = e.altKey;\r\n this.metaKey = e.metaKey;\r\n if (typeof e.pageX === 'number') {\r\n this.posx = e.pageX;\r\n this.posy = e.pageY;\r\n }\r\n else {\r\n // Probably hit by MSGestureEvent\r\n this.posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\r\n this.posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\r\n }\r\n // Find the position of the iframe this code is executing in relative to the iframe where the event was captured.\r\n let iframeOffsets = IframeUtils.getPositionOfChildWindowRelativeToAncestorWindow(self, e.view);\r\n this.posx -= iframeOffsets.left;\r\n this.posy -= iframeOffsets.top;\r\n }\r\n preventDefault() {\r\n this.browserEvent.preventDefault();\r\n }\r\n stopPropagation() {\r\n this.browserEvent.stopPropagation();\r\n }\r\n}\r\nexport class StandardWheelEvent {\r\n constructor(e, deltaX = 0, deltaY = 0) {\r\n this.browserEvent = e || null;\r\n this.target = e ? (e.target || e.targetNode || e.srcElement) : null;\r\n this.deltaY = deltaY;\r\n this.deltaX = deltaX;\r\n if (e) {\r\n // Old (deprecated) wheel events\r\n let e1 = e;\r\n let e2 = e;\r\n // vertical delta scroll\r\n if (typeof e1.wheelDeltaY !== 'undefined') {\r\n this.deltaY = e1.wheelDeltaY / 120;\r\n }\r\n else if (typeof e2.VERTICAL_AXIS !== 'undefined' && e2.axis === e2.VERTICAL_AXIS) {\r\n this.deltaY = -e2.detail / 3;\r\n }\r\n else if (e.type === 'wheel') {\r\n // Modern wheel event\r\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\r\n const ev = e;\r\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\r\n // the deltas are expressed in lines\r\n if (browser.isFirefox && !platform.isMacintosh) {\r\n this.deltaY = -e.deltaY / 3;\r\n }\r\n else {\r\n this.deltaY = -e.deltaY;\r\n }\r\n }\r\n else {\r\n this.deltaY = -e.deltaY / 40;\r\n }\r\n }\r\n // horizontal delta scroll\r\n if (typeof e1.wheelDeltaX !== 'undefined') {\r\n if (browser.isSafari && platform.isWindows) {\r\n this.deltaX = -(e1.wheelDeltaX / 120);\r\n }\r\n else {\r\n this.deltaX = e1.wheelDeltaX / 120;\r\n }\r\n }\r\n else if (typeof e2.HORIZONTAL_AXIS !== 'undefined' && e2.axis === e2.HORIZONTAL_AXIS) {\r\n this.deltaX = -e.detail / 3;\r\n }\r\n else if (e.type === 'wheel') {\r\n // Modern wheel event\r\n // https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent\r\n const ev = e;\r\n if (ev.deltaMode === ev.DOM_DELTA_LINE) {\r\n // the deltas are expressed in lines\r\n if (browser.isFirefox && !platform.isMacintosh) {\r\n this.deltaX = -e.deltaX / 3;\r\n }\r\n else {\r\n this.deltaX = -e.deltaX;\r\n }\r\n }\r\n else {\r\n this.deltaX = -e.deltaX / 40;\r\n }\r\n }\r\n // Assume a vertical scroll if nothing else worked\r\n if (this.deltaY === 0 && this.deltaX === 0 && e.wheelDelta) {\r\n this.deltaY = e.wheelDelta / 120;\r\n }\r\n }\r\n }\r\n preventDefault() {\r\n if (this.browserEvent) {\r\n this.browserEvent.preventDefault();\r\n }\r\n }\r\n stopPropagation() {\r\n if (this.browserEvent) {\r\n this.browserEvent.stopPropagation();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport * as arrays from '../common/arrays.js';\r\nimport { Disposable } from '../common/lifecycle.js';\r\nimport * as DomUtils from './dom.js';\r\nimport { memoize } from '../common/decorators.js';\r\nexport var EventType;\r\n(function (EventType) {\r\n EventType.Tap = '-monaco-gesturetap';\r\n EventType.Change = '-monaco-gesturechange';\r\n EventType.Start = '-monaco-gesturestart';\r\n EventType.End = '-monaco-gesturesend';\r\n EventType.Contextmenu = '-monaco-gesturecontextmenu';\r\n})(EventType || (EventType = {}));\r\nexport class Gesture extends Disposable {\r\n constructor() {\r\n super();\r\n this.dispatched = false;\r\n this.activeTouches = {};\r\n this.handle = null;\r\n this.targets = [];\r\n this.ignoreTargets = [];\r\n this._lastSetTapCountTime = 0;\r\n this._register(DomUtils.addDisposableListener(document, 'touchstart', (e) => this.onTouchStart(e), { passive: false }));\r\n this._register(DomUtils.addDisposableListener(document, 'touchend', (e) => this.onTouchEnd(e)));\r\n this._register(DomUtils.addDisposableListener(document, 'touchmove', (e) => this.onTouchMove(e), { passive: false }));\r\n }\r\n static addTarget(element) {\r\n if (!Gesture.isTouchDevice()) {\r\n return Disposable.None;\r\n }\r\n if (!Gesture.INSTANCE) {\r\n Gesture.INSTANCE = new Gesture();\r\n }\r\n Gesture.INSTANCE.targets.push(element);\r\n return {\r\n dispose: () => {\r\n Gesture.INSTANCE.targets = Gesture.INSTANCE.targets.filter(t => t !== element);\r\n }\r\n };\r\n }\r\n static ignoreTarget(element) {\r\n if (!Gesture.isTouchDevice()) {\r\n return Disposable.None;\r\n }\r\n if (!Gesture.INSTANCE) {\r\n Gesture.INSTANCE = new Gesture();\r\n }\r\n Gesture.INSTANCE.ignoreTargets.push(element);\r\n return {\r\n dispose: () => {\r\n Gesture.INSTANCE.ignoreTargets = Gesture.INSTANCE.ignoreTargets.filter(t => t !== element);\r\n }\r\n };\r\n }\r\n static isTouchDevice() {\r\n // `'ontouchstart' in window` always evaluates to true with typescript's modern typings. This causes `window` to be\r\n // `never` later in `window.navigator`. That's why we need the explicit `window as Window` cast\r\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || window.navigator.msMaxTouchPoints > 0;\r\n }\r\n dispose() {\r\n if (this.handle) {\r\n this.handle.dispose();\r\n this.handle = null;\r\n }\r\n super.dispose();\r\n }\r\n onTouchStart(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n if (this.handle) {\r\n this.handle.dispose();\r\n this.handle = null;\r\n }\r\n for (let i = 0, len = e.targetTouches.length; i < len; i++) {\r\n let touch = e.targetTouches.item(i);\r\n this.activeTouches[touch.identifier] = {\r\n id: touch.identifier,\r\n initialTarget: touch.target,\r\n initialTimeStamp: timestamp,\r\n initialPageX: touch.pageX,\r\n initialPageY: touch.pageY,\r\n rollingTimestamps: [timestamp],\r\n rollingPageX: [touch.pageX],\r\n rollingPageY: [touch.pageY]\r\n };\r\n let evt = this.newGestureEvent(EventType.Start, touch.target);\r\n evt.pageX = touch.pageX;\r\n evt.pageY = touch.pageY;\r\n this.dispatchEvent(evt);\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n onTouchEnd(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n let activeTouchCount = Object.keys(this.activeTouches).length;\r\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\r\n let touch = e.changedTouches.item(i);\r\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\r\n console.warn('move of an UNKNOWN touch', touch);\r\n continue;\r\n }\r\n let data = this.activeTouches[touch.identifier], holdTime = Date.now() - data.initialTimeStamp;\r\n if (holdTime < Gesture.HOLD_DELAY\r\n && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30\r\n && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {\r\n let evt = this.newGestureEvent(EventType.Tap, data.initialTarget);\r\n evt.pageX = arrays.tail(data.rollingPageX);\r\n evt.pageY = arrays.tail(data.rollingPageY);\r\n this.dispatchEvent(evt);\r\n }\r\n else if (holdTime >= Gesture.HOLD_DELAY\r\n && Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30\r\n && Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {\r\n let evt = this.newGestureEvent(EventType.Contextmenu, data.initialTarget);\r\n evt.pageX = arrays.tail(data.rollingPageX);\r\n evt.pageY = arrays.tail(data.rollingPageY);\r\n this.dispatchEvent(evt);\r\n }\r\n else if (activeTouchCount === 1) {\r\n let finalX = arrays.tail(data.rollingPageX);\r\n let finalY = arrays.tail(data.rollingPageY);\r\n let deltaT = arrays.tail(data.rollingTimestamps) - data.rollingTimestamps[0];\r\n let deltaX = finalX - data.rollingPageX[0];\r\n let deltaY = finalY - data.rollingPageY[0];\r\n // We need to get all the dispatch targets on the start of the inertia event\r\n const dispatchTo = this.targets.filter(t => data.initialTarget instanceof Node && t.contains(data.initialTarget));\r\n this.inertia(dispatchTo, timestamp, // time now\r\n Math.abs(deltaX) / deltaT, // speed\r\n deltaX > 0 ? 1 : -1, // x direction\r\n finalX, // x now\r\n Math.abs(deltaY) / deltaT, // y speed\r\n deltaY > 0 ? 1 : -1, // y direction\r\n finalY // y now\r\n );\r\n }\r\n this.dispatchEvent(this.newGestureEvent(EventType.End, data.initialTarget));\r\n // forget about this touch\r\n delete this.activeTouches[touch.identifier];\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n newGestureEvent(type, initialTarget) {\r\n let event = document.createEvent('CustomEvent');\r\n event.initEvent(type, false, true);\r\n event.initialTarget = initialTarget;\r\n event.tapCount = 0;\r\n return event;\r\n }\r\n dispatchEvent(event) {\r\n if (event.type === EventType.Tap) {\r\n const currentTime = (new Date()).getTime();\r\n let setTapCount = 0;\r\n if (currentTime - this._lastSetTapCountTime > Gesture.CLEAR_TAP_COUNT_TIME) {\r\n setTapCount = 1;\r\n }\r\n else {\r\n setTapCount = 2;\r\n }\r\n this._lastSetTapCountTime = currentTime;\r\n event.tapCount = setTapCount;\r\n }\r\n else if (event.type === EventType.Change || event.type === EventType.Contextmenu) {\r\n // tap is canceled by scrolling or context menu\r\n this._lastSetTapCountTime = 0;\r\n }\r\n for (let i = 0; i < this.ignoreTargets.length; i++) {\r\n if (event.initialTarget instanceof Node && this.ignoreTargets[i].contains(event.initialTarget)) {\r\n return;\r\n }\r\n }\r\n this.targets.forEach(target => {\r\n if (event.initialTarget instanceof Node && target.contains(event.initialTarget)) {\r\n target.dispatchEvent(event);\r\n this.dispatched = true;\r\n }\r\n });\r\n }\r\n inertia(dispatchTo, t1, vX, dirX, x, vY, dirY, y) {\r\n this.handle = DomUtils.scheduleAtNextAnimationFrame(() => {\r\n let now = Date.now();\r\n // velocity: old speed + accel_over_time\r\n let deltaT = now - t1, delta_pos_x = 0, delta_pos_y = 0, stopped = true;\r\n vX += Gesture.SCROLL_FRICTION * deltaT;\r\n vY += Gesture.SCROLL_FRICTION * deltaT;\r\n if (vX > 0) {\r\n stopped = false;\r\n delta_pos_x = dirX * vX * deltaT;\r\n }\r\n if (vY > 0) {\r\n stopped = false;\r\n delta_pos_y = dirY * vY * deltaT;\r\n }\r\n // dispatch translation event\r\n let evt = this.newGestureEvent(EventType.Change);\r\n evt.translationX = delta_pos_x;\r\n evt.translationY = delta_pos_y;\r\n dispatchTo.forEach(d => d.dispatchEvent(evt));\r\n if (!stopped) {\r\n this.inertia(dispatchTo, now, vX, dirX, x + delta_pos_x, vY, dirY, y + delta_pos_y);\r\n }\r\n });\r\n }\r\n onTouchMove(e) {\r\n let timestamp = Date.now(); // use Date.now() because on FF e.timeStamp is not epoch based.\r\n for (let i = 0, len = e.changedTouches.length; i < len; i++) {\r\n let touch = e.changedTouches.item(i);\r\n if (!this.activeTouches.hasOwnProperty(String(touch.identifier))) {\r\n console.warn('end of an UNKNOWN touch', touch);\r\n continue;\r\n }\r\n let data = this.activeTouches[touch.identifier];\r\n let evt = this.newGestureEvent(EventType.Change, data.initialTarget);\r\n evt.translationX = touch.pageX - arrays.tail(data.rollingPageX);\r\n evt.translationY = touch.pageY - arrays.tail(data.rollingPageY);\r\n evt.pageX = touch.pageX;\r\n evt.pageY = touch.pageY;\r\n this.dispatchEvent(evt);\r\n // only keep a few data points, to average the final speed\r\n if (data.rollingPageX.length > 3) {\r\n data.rollingPageX.shift();\r\n data.rollingPageY.shift();\r\n data.rollingTimestamps.shift();\r\n }\r\n data.rollingPageX.push(touch.pageX);\r\n data.rollingPageY.push(touch.pageY);\r\n data.rollingTimestamps.push(timestamp);\r\n }\r\n if (this.dispatched) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.dispatched = false;\r\n }\r\n }\r\n}\r\nGesture.SCROLL_FRICTION = -0.005;\r\nGesture.HOLD_DELAY = 700;\r\nGesture.CLEAR_TAP_COUNT_TIME = 400; // ms\r\n__decorate([\r\n memoize\r\n], Gesture, \"isTouchDevice\", null);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './actionbar.css';\r\nimport * as platform from '../../../common/platform.js';\r\nimport * as nls from '../../../../nls.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Action, ActionRunner, Separator } from '../../../common/actions.js';\r\nimport * as DOM from '../../dom.js';\r\nimport * as types from '../../../common/types.js';\r\nimport { EventType, Gesture } from '../../touch.js';\r\nimport { DataTransfers } from '../../dnd.js';\r\nimport { isFirefox } from '../../browser.js';\r\nexport class BaseActionViewItem extends Disposable {\r\n constructor(context, action, options = {}) {\r\n super();\r\n this.options = options;\r\n this._context = context || this;\r\n this._action = action;\r\n if (action instanceof Action) {\r\n this._register(action.onDidChange(event => {\r\n if (!this.element) {\r\n // we have not been rendered yet, so there\r\n // is no point in updating the UI\r\n return;\r\n }\r\n this.handleActionChangeEvent(event);\r\n }));\r\n }\r\n }\r\n handleActionChangeEvent(event) {\r\n if (event.enabled !== undefined) {\r\n this.updateEnabled();\r\n }\r\n if (event.checked !== undefined) {\r\n this.updateChecked();\r\n }\r\n if (event.class !== undefined) {\r\n this.updateClass();\r\n }\r\n if (event.label !== undefined) {\r\n this.updateLabel();\r\n this.updateTooltip();\r\n }\r\n if (event.tooltip !== undefined) {\r\n this.updateTooltip();\r\n }\r\n }\r\n get actionRunner() {\r\n if (!this._actionRunner) {\r\n this._actionRunner = this._register(new ActionRunner());\r\n }\r\n return this._actionRunner;\r\n }\r\n set actionRunner(actionRunner) {\r\n this._actionRunner = actionRunner;\r\n }\r\n getAction() {\r\n return this._action;\r\n }\r\n isEnabled() {\r\n return this._action.enabled;\r\n }\r\n setActionContext(newContext) {\r\n this._context = newContext;\r\n }\r\n render(container) {\r\n const element = this.element = container;\r\n this._register(Gesture.addTarget(container));\r\n const enableDragging = this.options && this.options.draggable;\r\n if (enableDragging) {\r\n container.draggable = true;\r\n if (isFirefox) {\r\n // Firefox: requires to set a text data transfer to get going\r\n this._register(DOM.addDisposableListener(container, DOM.EventType.DRAG_START, e => { var _a; return (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.setData(DataTransfers.TEXT, this._action.label); }));\r\n }\r\n }\r\n this._register(DOM.addDisposableListener(element, EventType.Tap, e => this.onClick(e)));\r\n this._register(DOM.addDisposableListener(element, DOM.EventType.MOUSE_DOWN, e => {\r\n if (!enableDragging) {\r\n DOM.EventHelper.stop(e, true); // do not run when dragging is on because that would disable it\r\n }\r\n if (this._action.enabled && e.button === 0) {\r\n DOM.addClass(element, 'active');\r\n }\r\n }));\r\n if (platform.isMacintosh) {\r\n // macOS: allow to trigger the button when holding Ctrl+key and pressing the\r\n // main mouse button. This is for scenarios where e.g. some interaction forces\r\n // the Ctrl+key to be pressed and hold but the user still wants to interact\r\n // with the actions (for example quick access in quick navigation mode).\r\n this._register(DOM.addDisposableListener(element, DOM.EventType.CONTEXT_MENU, e => {\r\n if (e.button === 0 && e.ctrlKey === true) {\r\n this.onClick(e);\r\n }\r\n }));\r\n }\r\n this._register(DOM.addDisposableListener(element, DOM.EventType.CLICK, e => {\r\n DOM.EventHelper.stop(e, true);\r\n // menus do not use the click event\r\n if (!(this.options && this.options.isMenu)) {\r\n platform.setImmediate(() => this.onClick(e));\r\n }\r\n }));\r\n this._register(DOM.addDisposableListener(element, DOM.EventType.DBLCLICK, e => {\r\n DOM.EventHelper.stop(e, true);\r\n }));\r\n [DOM.EventType.MOUSE_UP, DOM.EventType.MOUSE_OUT].forEach(event => {\r\n this._register(DOM.addDisposableListener(element, event, e => {\r\n DOM.EventHelper.stop(e);\r\n DOM.removeClass(element, 'active');\r\n }));\r\n });\r\n }\r\n onClick(event) {\r\n var _a;\r\n DOM.EventHelper.stop(event, true);\r\n const context = types.isUndefinedOrNull(this._context) ? ((_a = this.options) === null || _a === void 0 ? void 0 : _a.useEventAsContext) ? event : undefined : this._context;\r\n this.actionRunner.run(this._action, context);\r\n }\r\n focus() {\r\n if (this.element) {\r\n this.element.focus();\r\n DOM.addClass(this.element, 'focused');\r\n }\r\n }\r\n blur() {\r\n if (this.element) {\r\n this.element.blur();\r\n DOM.removeClass(this.element, 'focused');\r\n }\r\n }\r\n updateEnabled() {\r\n // implement in subclass\r\n }\r\n updateLabel() {\r\n // implement in subclass\r\n }\r\n updateTooltip() {\r\n // implement in subclass\r\n }\r\n updateClass() {\r\n // implement in subclass\r\n }\r\n updateChecked() {\r\n // implement in subclass\r\n }\r\n dispose() {\r\n if (this.element) {\r\n DOM.removeNode(this.element);\r\n this.element = undefined;\r\n }\r\n super.dispose();\r\n }\r\n}\r\nexport class ActionViewItem extends BaseActionViewItem {\r\n constructor(context, action, options = {}) {\r\n super(context, action, options);\r\n this.options = options;\r\n this.options.icon = options.icon !== undefined ? options.icon : false;\r\n this.options.label = options.label !== undefined ? options.label : true;\r\n this.cssClass = '';\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (this.element) {\r\n this.label = DOM.append(this.element, DOM.$('a.action-label'));\r\n }\r\n if (this.label) {\r\n if (this._action.id === Separator.ID) {\r\n this.label.setAttribute('role', 'presentation'); // A separator is a presentation item\r\n }\r\n else {\r\n if (this.options.isMenu) {\r\n this.label.setAttribute('role', 'menuitem');\r\n }\r\n else {\r\n this.label.setAttribute('role', 'button');\r\n }\r\n }\r\n }\r\n if (this.options.label && this.options.keybinding && this.element) {\r\n DOM.append(this.element, DOM.$('span.keybinding')).textContent = this.options.keybinding;\r\n }\r\n this.updateClass();\r\n this.updateLabel();\r\n this.updateTooltip();\r\n this.updateEnabled();\r\n this.updateChecked();\r\n }\r\n focus() {\r\n super.focus();\r\n if (this.label) {\r\n this.label.focus();\r\n }\r\n }\r\n updateLabel() {\r\n if (this.options.label && this.label) {\r\n this.label.textContent = this.getAction().label;\r\n }\r\n }\r\n updateTooltip() {\r\n let title = null;\r\n if (this.getAction().tooltip) {\r\n title = this.getAction().tooltip;\r\n }\r\n else if (!this.options.label && this.getAction().label && this.options.icon) {\r\n title = this.getAction().label;\r\n if (this.options.keybinding) {\r\n title = nls.localize({ key: 'titleLabel', comment: ['action title', 'action keybinding'] }, \"{0} ({1})\", title, this.options.keybinding);\r\n }\r\n }\r\n if (title && this.label) {\r\n this.label.title = title;\r\n }\r\n }\r\n updateClass() {\r\n if (this.cssClass && this.label) {\r\n DOM.removeClasses(this.label, this.cssClass);\r\n }\r\n if (this.options.icon) {\r\n this.cssClass = this.getAction().class;\r\n if (this.label) {\r\n DOM.addClass(this.label, 'codicon');\r\n if (this.cssClass) {\r\n DOM.addClasses(this.label, this.cssClass);\r\n }\r\n }\r\n this.updateEnabled();\r\n }\r\n else {\r\n if (this.label) {\r\n DOM.removeClass(this.label, 'codicon');\r\n }\r\n }\r\n }\r\n updateEnabled() {\r\n if (this.getAction().enabled) {\r\n if (this.label) {\r\n this.label.removeAttribute('aria-disabled');\r\n DOM.removeClass(this.label, 'disabled');\r\n this.label.tabIndex = 0;\r\n }\r\n if (this.element) {\r\n DOM.removeClass(this.element, 'disabled');\r\n }\r\n }\r\n else {\r\n if (this.label) {\r\n this.label.setAttribute('aria-disabled', 'true');\r\n DOM.addClass(this.label, 'disabled');\r\n DOM.removeTabIndexAndUpdateFocus(this.label);\r\n }\r\n if (this.element) {\r\n DOM.addClass(this.element, 'disabled');\r\n }\r\n }\r\n }\r\n updateChecked() {\r\n if (this.label) {\r\n if (this.getAction().checked) {\r\n DOM.addClass(this.label, 'checked');\r\n }\r\n else {\r\n DOM.removeClass(this.label, 'checked');\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './actionbar.css';\r\nimport { Disposable, dispose } from '../../../common/lifecycle.js';\r\nimport { ActionRunner } from '../../../common/actions.js';\r\nimport * as DOM from '../../dom.js';\r\nimport * as types from '../../../common/types.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { ActionViewItem, BaseActionViewItem } from './actionViewItems.js';\r\nexport class ActionBar extends Disposable {\r\n constructor(container, options = {}) {\r\n var _a, _b, _c;\r\n super();\r\n this._onDidBlur = this._register(new Emitter());\r\n this.onDidBlur = this._onDidBlur.event;\r\n this._onDidCancel = this._register(new Emitter());\r\n this.onDidCancel = this._onDidCancel.event;\r\n this._onDidRun = this._register(new Emitter());\r\n this.onDidRun = this._onDidRun.event;\r\n this._onDidBeforeRun = this._register(new Emitter());\r\n this.onDidBeforeRun = this._onDidBeforeRun.event;\r\n this.options = options;\r\n this._context = (_a = options.context) !== null && _a !== void 0 ? _a : null;\r\n this._orientation = (_b = this.options.orientation) !== null && _b !== void 0 ? _b : 0 /* HORIZONTAL */;\r\n this._triggerKeys = (_c = this.options.triggerKeys) !== null && _c !== void 0 ? _c : {\r\n keys: [3 /* Enter */, 10 /* Space */],\r\n keyDown: false\r\n };\r\n if (this.options.actionRunner) {\r\n this._actionRunner = this.options.actionRunner;\r\n }\r\n else {\r\n this._actionRunner = new ActionRunner();\r\n this._register(this._actionRunner);\r\n }\r\n this._register(this._actionRunner.onDidRun(e => this._onDidRun.fire(e)));\r\n this._register(this._actionRunner.onDidBeforeRun(e => this._onDidBeforeRun.fire(e)));\r\n this.viewItems = [];\r\n this.focusedItem = undefined;\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = 'monaco-action-bar';\r\n if (options.animated !== false) {\r\n DOM.addClass(this.domNode, 'animated');\r\n }\r\n let previousKey;\r\n let nextKey;\r\n switch (this._orientation) {\r\n case 0 /* HORIZONTAL */:\r\n previousKey = 15 /* LeftArrow */;\r\n nextKey = 17 /* RightArrow */;\r\n break;\r\n case 1 /* HORIZONTAL_REVERSE */:\r\n previousKey = 17 /* RightArrow */;\r\n nextKey = 15 /* LeftArrow */;\r\n this.domNode.className += ' reverse';\r\n break;\r\n case 2 /* VERTICAL */:\r\n previousKey = 16 /* UpArrow */;\r\n nextKey = 18 /* DownArrow */;\r\n this.domNode.className += ' vertical';\r\n break;\r\n case 3 /* VERTICAL_REVERSE */:\r\n previousKey = 18 /* DownArrow */;\r\n nextKey = 16 /* UpArrow */;\r\n this.domNode.className += ' vertical reverse';\r\n break;\r\n }\r\n this._register(DOM.addDisposableListener(this.domNode, DOM.EventType.KEY_DOWN, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n let eventHandled = true;\r\n if (event.equals(previousKey)) {\r\n eventHandled = this.focusPrevious();\r\n }\r\n else if (event.equals(nextKey)) {\r\n eventHandled = this.focusNext();\r\n }\r\n else if (event.equals(9 /* Escape */)) {\r\n this._onDidCancel.fire();\r\n }\r\n else if (this.isTriggerKeyEvent(event)) {\r\n // Staying out of the else branch even if not triggered\r\n if (this._triggerKeys.keyDown) {\r\n this.doTrigger(event);\r\n }\r\n }\r\n else {\r\n eventHandled = false;\r\n }\r\n if (eventHandled) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }));\r\n this._register(DOM.addDisposableListener(this.domNode, DOM.EventType.KEY_UP, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n // Run action on Enter/Space\r\n if (this.isTriggerKeyEvent(event)) {\r\n if (!this._triggerKeys.keyDown) {\r\n this.doTrigger(event);\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n // Recompute focused item\r\n else if (event.equals(2 /* Tab */) || event.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n this.updateFocusedItem();\r\n }\r\n }));\r\n this.focusTracker = this._register(DOM.trackFocus(this.domNode));\r\n this._register(this.focusTracker.onDidBlur(() => {\r\n if (DOM.getActiveElement() === this.domNode || !DOM.isAncestor(DOM.getActiveElement(), this.domNode)) {\r\n this._onDidBlur.fire();\r\n this.focusedItem = undefined;\r\n }\r\n }));\r\n this._register(this.focusTracker.onDidFocus(() => this.updateFocusedItem()));\r\n this.actionsList = document.createElement('ul');\r\n this.actionsList.className = 'actions-container';\r\n this.actionsList.setAttribute('role', 'toolbar');\r\n if (this.options.ariaLabel) {\r\n this.actionsList.setAttribute('aria-label', this.options.ariaLabel);\r\n }\r\n this.domNode.appendChild(this.actionsList);\r\n container.appendChild(this.domNode);\r\n }\r\n isTriggerKeyEvent(event) {\r\n let ret = false;\r\n this._triggerKeys.keys.forEach(keyCode => {\r\n ret = ret || event.equals(keyCode);\r\n });\r\n return ret;\r\n }\r\n updateFocusedItem() {\r\n for (let i = 0; i < this.actionsList.children.length; i++) {\r\n const elem = this.actionsList.children[i];\r\n if (DOM.isAncestor(DOM.getActiveElement(), elem)) {\r\n this.focusedItem = i;\r\n break;\r\n }\r\n }\r\n }\r\n get context() {\r\n return this._context;\r\n }\r\n set context(context) {\r\n this._context = context;\r\n this.viewItems.forEach(i => i.setActionContext(context));\r\n }\r\n get actionRunner() {\r\n return this._actionRunner;\r\n }\r\n set actionRunner(actionRunner) {\r\n if (actionRunner) {\r\n this._actionRunner = actionRunner;\r\n this.viewItems.forEach(item => item.actionRunner = actionRunner);\r\n }\r\n }\r\n getContainer() {\r\n return this.domNode;\r\n }\r\n push(arg, options = {}) {\r\n const actions = Array.isArray(arg) ? arg : [arg];\r\n let index = types.isNumber(options.index) ? options.index : null;\r\n actions.forEach((action) => {\r\n const actionViewItemElement = document.createElement('li');\r\n actionViewItemElement.className = 'action-item';\r\n actionViewItemElement.setAttribute('role', 'presentation');\r\n // Prevent native context menu on actions\r\n if (!this.options.allowContextMenu) {\r\n this._register(DOM.addDisposableListener(actionViewItemElement, DOM.EventType.CONTEXT_MENU, (e) => {\r\n DOM.EventHelper.stop(e, true);\r\n }));\r\n }\r\n let item;\r\n if (this.options.actionViewItemProvider) {\r\n item = this.options.actionViewItemProvider(action);\r\n }\r\n if (!item) {\r\n item = new ActionViewItem(this.context, action, options);\r\n }\r\n item.actionRunner = this._actionRunner;\r\n item.setActionContext(this.context);\r\n item.render(actionViewItemElement);\r\n if (index === null || index < 0 || index >= this.actionsList.children.length) {\r\n this.actionsList.appendChild(actionViewItemElement);\r\n this.viewItems.push(item);\r\n }\r\n else {\r\n this.actionsList.insertBefore(actionViewItemElement, this.actionsList.children[index]);\r\n this.viewItems.splice(index, 0, item);\r\n index++;\r\n }\r\n });\r\n if (this.focusedItem) {\r\n // After a clear actions might be re-added to simply toggle some actions. We should preserve focus #97128\r\n this.focus(this.focusedItem);\r\n }\r\n }\r\n clear() {\r\n dispose(this.viewItems);\r\n this.viewItems = [];\r\n DOM.clearNode(this.actionsList);\r\n }\r\n focus(arg) {\r\n let selectFirst = false;\r\n let index = undefined;\r\n if (arg === undefined) {\r\n selectFirst = true;\r\n }\r\n else if (typeof arg === 'number') {\r\n index = arg;\r\n }\r\n else if (typeof arg === 'boolean') {\r\n selectFirst = arg;\r\n }\r\n if (selectFirst && typeof this.focusedItem === 'undefined') {\r\n // Focus the first enabled item\r\n this.focusedItem = -1;\r\n this.focusNext();\r\n }\r\n else {\r\n if (index !== undefined) {\r\n this.focusedItem = index;\r\n }\r\n this.updateFocus();\r\n }\r\n }\r\n focusNext() {\r\n if (typeof this.focusedItem === 'undefined') {\r\n this.focusedItem = this.viewItems.length - 1;\r\n }\r\n const startIndex = this.focusedItem;\r\n let item;\r\n do {\r\n if (this.options.preventLoopNavigation && this.focusedItem + 1 >= this.viewItems.length) {\r\n this.focusedItem = startIndex;\r\n return false;\r\n }\r\n this.focusedItem = (this.focusedItem + 1) % this.viewItems.length;\r\n item = this.viewItems[this.focusedItem];\r\n } while (this.focusedItem !== startIndex && !item.isEnabled());\r\n if (this.focusedItem === startIndex && !item.isEnabled()) {\r\n this.focusedItem = undefined;\r\n }\r\n this.updateFocus();\r\n return true;\r\n }\r\n focusPrevious() {\r\n if (typeof this.focusedItem === 'undefined') {\r\n this.focusedItem = 0;\r\n }\r\n const startIndex = this.focusedItem;\r\n let item;\r\n do {\r\n this.focusedItem = this.focusedItem - 1;\r\n if (this.focusedItem < 0) {\r\n if (this.options.preventLoopNavigation) {\r\n this.focusedItem = startIndex;\r\n return false;\r\n }\r\n this.focusedItem = this.viewItems.length - 1;\r\n }\r\n item = this.viewItems[this.focusedItem];\r\n } while (this.focusedItem !== startIndex && !item.isEnabled());\r\n if (this.focusedItem === startIndex && !item.isEnabled()) {\r\n this.focusedItem = undefined;\r\n }\r\n this.updateFocus(true);\r\n return true;\r\n }\r\n updateFocus(fromRight, preventScroll) {\r\n if (typeof this.focusedItem === 'undefined') {\r\n this.actionsList.focus({ preventScroll });\r\n }\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n const actionViewItem = item;\r\n if (i === this.focusedItem) {\r\n if (types.isFunction(actionViewItem.isEnabled)) {\r\n if (actionViewItem.isEnabled() && types.isFunction(actionViewItem.focus)) {\r\n actionViewItem.focus(fromRight);\r\n }\r\n else {\r\n this.actionsList.focus({ preventScroll });\r\n }\r\n }\r\n }\r\n else {\r\n if (types.isFunction(actionViewItem.blur)) {\r\n actionViewItem.blur();\r\n }\r\n }\r\n }\r\n }\r\n doTrigger(event) {\r\n if (typeof this.focusedItem === 'undefined') {\r\n return; //nothing to focus\r\n }\r\n // trigger action\r\n const actionViewItem = this.viewItems[this.focusedItem];\r\n if (actionViewItem instanceof BaseActionViewItem) {\r\n const context = (actionViewItem._context === null || actionViewItem._context === undefined) ? event : actionViewItem._context;\r\n this.run(actionViewItem._action, context);\r\n }\r\n }\r\n run(action, context) {\r\n return this._actionRunner.run(action, context);\r\n }\r\n dispose() {\r\n dispose(this.viewItems);\r\n this.viewItems = [];\r\n DOM.removeNode(this.getContainer());\r\n super.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './aria.css';\r\nimport { isMacintosh } from '../../../common/platform.js';\r\nimport * as dom from '../../dom.js';\r\n// Use a max length since we are inserting the whole msg in the DOM and that can cause browsers to freeze for long messages #94233\r\nconst MAX_MESSAGE_LENGTH = 20000;\r\nlet ariaContainer;\r\nlet alertContainer;\r\nlet alertContainer2;\r\nlet statusContainer;\r\nlet statusContainer2;\r\nexport function setARIAContainer(parent) {\r\n ariaContainer = document.createElement('div');\r\n ariaContainer.className = 'monaco-aria-container';\r\n const createAlertContainer = () => {\r\n const element = document.createElement('div');\r\n element.className = 'monaco-alert';\r\n element.setAttribute('role', 'alert');\r\n element.setAttribute('aria-atomic', 'true');\r\n ariaContainer.appendChild(element);\r\n return element;\r\n };\r\n alertContainer = createAlertContainer();\r\n alertContainer2 = createAlertContainer();\r\n const createStatusContainer = () => {\r\n const element = document.createElement('div');\r\n element.className = 'monaco-status';\r\n element.setAttribute('role', 'complementary');\r\n element.setAttribute('aria-live', 'polite');\r\n element.setAttribute('aria-atomic', 'true');\r\n ariaContainer.appendChild(element);\r\n return element;\r\n };\r\n statusContainer = createStatusContainer();\r\n statusContainer2 = createStatusContainer();\r\n parent.appendChild(ariaContainer);\r\n}\r\n/**\r\n * Given the provided message, will make sure that it is read as alert to screen readers.\r\n */\r\nexport function alert(msg) {\r\n if (!ariaContainer) {\r\n return;\r\n }\r\n // Use alternate containers such that duplicated messages get read out by screen readers #99466\r\n if (alertContainer.textContent !== msg) {\r\n dom.clearNode(alertContainer2);\r\n insertMessage(alertContainer, msg);\r\n }\r\n else {\r\n dom.clearNode(alertContainer);\r\n insertMessage(alertContainer2, msg);\r\n }\r\n}\r\n/**\r\n * Given the provided message, will make sure that it is read as status to screen readers.\r\n */\r\nexport function status(msg) {\r\n if (!ariaContainer) {\r\n return;\r\n }\r\n if (isMacintosh) {\r\n alert(msg); // VoiceOver does not seem to support status role\r\n }\r\n else {\r\n if (statusContainer.textContent !== msg) {\r\n dom.clearNode(statusContainer2);\r\n insertMessage(statusContainer, msg);\r\n }\r\n else {\r\n dom.clearNode(statusContainer);\r\n insertMessage(statusContainer2, msg);\r\n }\r\n }\r\n}\r\nfunction insertMessage(target, msg) {\r\n dom.clearNode(target);\r\n if (msg.length > MAX_MESSAGE_LENGTH) {\r\n msg = msg.substr(0, MAX_MESSAGE_LENGTH);\r\n }\r\n target.textContent = msg;\r\n // See https://www.paciellogroup.com/blog/2012/06/html5-accessibility-chops-aria-rolealert-browser-support/\r\n target.style.visibility = 'hidden';\r\n target.style.visibility = 'visible';\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './button.css';\r\nimport * as DOM from '../../dom.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Gesture, EventType } from '../../touch.js';\r\nimport { renderCodiconsAsElement } from '../../codicons.js';\r\nconst defaultOptions = {\r\n buttonBackground: Color.fromHex('#0E639C'),\r\n buttonHoverBackground: Color.fromHex('#006BB3'),\r\n buttonForeground: Color.white\r\n};\r\nexport class Button extends Disposable {\r\n constructor(container, options) {\r\n super();\r\n this._onDidClick = this._register(new Emitter());\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOptions, false);\r\n this.buttonForeground = this.options.buttonForeground;\r\n this.buttonBackground = this.options.buttonBackground;\r\n this.buttonHoverBackground = this.options.buttonHoverBackground;\r\n this.buttonSecondaryForeground = this.options.buttonSecondaryForeground;\r\n this.buttonSecondaryBackground = this.options.buttonSecondaryBackground;\r\n this.buttonSecondaryHoverBackground = this.options.buttonSecondaryHoverBackground;\r\n this.buttonBorder = this.options.buttonBorder;\r\n this._element = document.createElement('a');\r\n DOM.addClass(this._element, 'monaco-button');\r\n this._element.tabIndex = 0;\r\n this._element.setAttribute('role', 'button');\r\n container.appendChild(this._element);\r\n this._register(Gesture.addTarget(this._element));\r\n [DOM.EventType.CLICK, EventType.Tap].forEach(eventType => {\r\n this._register(DOM.addDisposableListener(this._element, eventType, e => {\r\n if (!this.enabled) {\r\n DOM.EventHelper.stop(e);\r\n return;\r\n }\r\n this._onDidClick.fire(e);\r\n }));\r\n });\r\n this._register(DOM.addDisposableListener(this._element, DOM.EventType.KEY_DOWN, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n let eventHandled = false;\r\n if (this.enabled && (event.equals(3 /* Enter */) || event.equals(10 /* Space */))) {\r\n this._onDidClick.fire(e);\r\n eventHandled = true;\r\n }\r\n else if (event.equals(9 /* Escape */)) {\r\n this._element.blur();\r\n eventHandled = true;\r\n }\r\n if (eventHandled) {\r\n DOM.EventHelper.stop(event, true);\r\n }\r\n }));\r\n this._register(DOM.addDisposableListener(this._element, DOM.EventType.MOUSE_OVER, e => {\r\n if (!DOM.hasClass(this._element, 'disabled')) {\r\n this.setHoverBackground();\r\n }\r\n }));\r\n this._register(DOM.addDisposableListener(this._element, DOM.EventType.MOUSE_OUT, e => {\r\n this.applyStyles(); // restore standard styles\r\n }));\r\n // Also set hover background when button is focused for feedback\r\n this.focusTracker = this._register(DOM.trackFocus(this._element));\r\n this._register(this.focusTracker.onDidFocus(() => this.setHoverBackground()));\r\n this._register(this.focusTracker.onDidBlur(() => this.applyStyles())); // restore standard styles\r\n this.applyStyles();\r\n }\r\n get onDidClick() { return this._onDidClick.event; }\r\n setHoverBackground() {\r\n let hoverBackground;\r\n if (this.options.secondary) {\r\n hoverBackground = this.buttonSecondaryHoverBackground ? this.buttonSecondaryHoverBackground.toString() : null;\r\n }\r\n else {\r\n hoverBackground = this.buttonHoverBackground ? this.buttonHoverBackground.toString() : null;\r\n }\r\n if (hoverBackground) {\r\n this._element.style.backgroundColor = hoverBackground;\r\n }\r\n }\r\n style(styles) {\r\n this.buttonForeground = styles.buttonForeground;\r\n this.buttonBackground = styles.buttonBackground;\r\n this.buttonHoverBackground = styles.buttonHoverBackground;\r\n this.buttonSecondaryForeground = styles.buttonSecondaryForeground;\r\n this.buttonSecondaryBackground = styles.buttonSecondaryBackground;\r\n this.buttonSecondaryHoverBackground = styles.buttonSecondaryHoverBackground;\r\n this.buttonBorder = styles.buttonBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this._element) {\r\n let background, foreground;\r\n if (this.options.secondary) {\r\n foreground = this.buttonSecondaryForeground ? this.buttonSecondaryForeground.toString() : '';\r\n background = this.buttonSecondaryBackground ? this.buttonSecondaryBackground.toString() : '';\r\n }\r\n else {\r\n foreground = this.buttonForeground ? this.buttonForeground.toString() : '';\r\n background = this.buttonBackground ? this.buttonBackground.toString() : '';\r\n }\r\n const border = this.buttonBorder ? this.buttonBorder.toString() : '';\r\n this._element.style.color = foreground;\r\n this._element.style.backgroundColor = background;\r\n this._element.style.borderWidth = border ? '1px' : '';\r\n this._element.style.borderStyle = border ? 'solid' : '';\r\n this._element.style.borderColor = border;\r\n }\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n set label(value) {\r\n if (!DOM.hasClass(this._element, 'monaco-text-button')) {\r\n DOM.addClass(this._element, 'monaco-text-button');\r\n }\r\n if (this.options.supportCodicons) {\r\n DOM.reset(this._element, ...renderCodiconsAsElement(value));\r\n }\r\n else {\r\n this._element.textContent = value;\r\n }\r\n if (typeof this.options.title === 'string') {\r\n this._element.title = this.options.title;\r\n }\r\n else if (this.options.title) {\r\n this._element.title = value;\r\n }\r\n }\r\n set enabled(value) {\r\n if (value) {\r\n DOM.removeClass(this._element, 'disabled');\r\n this._element.setAttribute('aria-disabled', String(false));\r\n this._element.tabIndex = 0;\r\n }\r\n else {\r\n DOM.addClass(this._element, 'disabled');\r\n this._element.setAttribute('aria-disabled', String(true));\r\n DOM.removeTabIndexAndUpdateFocus(this._element);\r\n }\r\n }\r\n get enabled() {\r\n return !DOM.hasClass(this._element, 'disabled');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './checkbox.css';\r\nimport * as DOM from '../../dom.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nconst defaultOpts = {\r\n inputActiveOptionBorder: Color.fromHex('#007ACC00'),\r\n inputActiveOptionForeground: Color.fromHex('#FFFFFF'),\r\n inputActiveOptionBackground: Color.fromHex('#0E639C50')\r\n};\r\nexport class Checkbox extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._onChange = this._register(new Emitter());\r\n this.onChange = this._onChange.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._opts = Object.assign(Object.assign({}, defaultOpts), opts);\r\n this._checked = this._opts.isChecked;\r\n const classes = ['monaco-custom-checkbox'];\r\n if (this._opts.icon) {\r\n classes.push(this._opts.icon.classNames);\r\n }\r\n else {\r\n classes.push('codicon'); // todo@aeschli: remove once codicon fully adopted\r\n }\r\n if (this._opts.actionClassName) {\r\n classes.push(this._opts.actionClassName);\r\n }\r\n classes.push(this._checked ? 'checked' : 'unchecked');\r\n this.domNode = document.createElement('div');\r\n this.domNode.title = this._opts.title;\r\n this.domNode.className = classes.join(' ');\r\n this.domNode.tabIndex = 0;\r\n this.domNode.setAttribute('role', 'checkbox');\r\n this.domNode.setAttribute('aria-checked', String(this._checked));\r\n this.domNode.setAttribute('aria-label', this._opts.title);\r\n this.applyStyles();\r\n this.onclick(this.domNode, (ev) => {\r\n this.checked = !this._checked;\r\n this._onChange.fire(false);\r\n ev.preventDefault();\r\n });\r\n this.ignoreGesture(this.domNode);\r\n this.onkeydown(this.domNode, (keyboardEvent) => {\r\n if (keyboardEvent.keyCode === 10 /* Space */ || keyboardEvent.keyCode === 3 /* Enter */) {\r\n this.checked = !this._checked;\r\n this._onChange.fire(true);\r\n keyboardEvent.preventDefault();\r\n return;\r\n }\r\n this._onKeyDown.fire(keyboardEvent);\r\n });\r\n }\r\n get enabled() {\r\n return this.domNode.getAttribute('aria-disabled') !== 'true';\r\n }\r\n focus() {\r\n this.domNode.focus();\r\n }\r\n get checked() {\r\n return this._checked;\r\n }\r\n set checked(newIsChecked) {\r\n this._checked = newIsChecked;\r\n this.domNode.setAttribute('aria-checked', String(this._checked));\r\n if (this._checked) {\r\n this.domNode.classList.add('checked');\r\n }\r\n else {\r\n this.domNode.classList.remove('checked');\r\n }\r\n this.applyStyles();\r\n }\r\n width() {\r\n return 2 /*marginleft*/ + 2 /*border*/ + 2 /*padding*/ + 16 /* icon width */;\r\n }\r\n style(styles) {\r\n if (styles.inputActiveOptionBorder) {\r\n this._opts.inputActiveOptionBorder = styles.inputActiveOptionBorder;\r\n }\r\n if (styles.inputActiveOptionForeground) {\r\n this._opts.inputActiveOptionForeground = styles.inputActiveOptionForeground;\r\n }\r\n if (styles.inputActiveOptionBackground) {\r\n this._opts.inputActiveOptionBackground = styles.inputActiveOptionBackground;\r\n }\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.domNode) {\r\n this.domNode.style.borderColor = this._checked && this._opts.inputActiveOptionBorder ? this._opts.inputActiveOptionBorder.toString() : 'transparent';\r\n this.domNode.style.color = this._checked && this._opts.inputActiveOptionForeground ? this._opts.inputActiveOptionForeground.toString() : 'inherit';\r\n this.domNode.style.backgroundColor = this._checked && this._opts.inputActiveOptionBackground ? this._opts.inputActiveOptionBackground.toString() : 'transparent';\r\n }\r\n }\r\n enable() {\r\n this.domNode.tabIndex = 0;\r\n this.domNode.setAttribute('aria-disabled', String(false));\r\n }\r\n disable() {\r\n DOM.removeTabIndexAndUpdateFocus(this.domNode);\r\n this.domNode.setAttribute('aria-disabled', String(true));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './codicon/codicon.css';\r\nimport './codicon/codicon-modifications.css';\r\nimport './codicon/codicon-animations.css';\r\nimport { Codicon, iconRegistry } from '../../../common/codicons.js';\r\nexport const CodiconStyles = new class {\r\n constructor() {\r\n this.onDidChange = iconRegistry.onDidRegister;\r\n }\r\n getCSS() {\r\n const rules = [];\r\n for (let c of iconRegistry.all) {\r\n rules.push(formatRule(c));\r\n }\r\n return rules.join('\\n');\r\n }\r\n};\r\nexport function formatRule(c) {\r\n let def = c.definition;\r\n while (def instanceof Codicon) {\r\n def = def.definition;\r\n }\r\n return `.codicon-${c.id}:before { content: '${def.character}'; }`;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './contextview.css';\r\nimport * as DOM from '../../dom.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { toDisposable, Disposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { Range } from '../../../common/range.js';\r\nimport { BrowserFeatures } from '../../canIUse.js';\r\n/**\r\n * Lays out a one dimensional view next to an anchor in a viewport.\r\n *\r\n * @returns The view offset within the viewport.\r\n */\r\nexport function layout(viewportSize, viewSize, anchor) {\r\n const anchorEnd = anchor.offset + anchor.size;\r\n if (anchor.position === 0 /* Before */) {\r\n if (viewSize <= viewportSize - anchorEnd) {\r\n return anchorEnd; // happy case, lay it out after the anchor\r\n }\r\n if (viewSize <= anchor.offset) {\r\n return anchor.offset - viewSize; // ok case, lay it out before the anchor\r\n }\r\n return Math.max(viewportSize - viewSize, 0); // sad case, lay it over the anchor\r\n }\r\n else {\r\n if (viewSize <= anchor.offset) {\r\n return anchor.offset - viewSize; // happy case, lay it out before the anchor\r\n }\r\n if (viewSize <= viewportSize - anchorEnd) {\r\n return anchorEnd; // ok case, lay it out after the anchor\r\n }\r\n return 0; // sad case, lay it over the anchor\r\n }\r\n}\r\nexport class ContextView extends Disposable {\r\n constructor(container, domPosition) {\r\n super();\r\n this.container = null;\r\n this.delegate = null;\r\n this.toDisposeOnClean = Disposable.None;\r\n this.toDisposeOnSetContainer = Disposable.None;\r\n this.shadowRoot = null;\r\n this.shadowRootHostElement = null;\r\n this.view = DOM.$('.context-view');\r\n this.useFixedPosition = false;\r\n this.useShadowDOM = false;\r\n DOM.hide(this.view);\r\n this.setContainer(container, domPosition);\r\n this._register(toDisposable(() => this.setContainer(null, 1 /* ABSOLUTE */)));\r\n }\r\n setContainer(container, domPosition) {\r\n if (this.container) {\r\n this.toDisposeOnSetContainer.dispose();\r\n if (this.shadowRoot) {\r\n this.shadowRoot.removeChild(this.view);\r\n this.shadowRoot = null;\r\n DOM.removeNode(this.shadowRootHostElement);\r\n this.shadowRootHostElement = null;\r\n }\r\n else {\r\n this.container.removeChild(this.view);\r\n }\r\n this.container = null;\r\n }\r\n if (container) {\r\n this.container = container;\r\n this.useFixedPosition = domPosition !== 1 /* ABSOLUTE */;\r\n this.useShadowDOM = domPosition === 3 /* FIXED_SHADOW */;\r\n if (this.useShadowDOM) {\r\n this.shadowRootHostElement = DOM.$('.shadow-root-host');\r\n this.container.appendChild(this.shadowRootHostElement);\r\n this.shadowRoot = this.shadowRootHostElement.attachShadow({ mode: 'open' });\r\n this.shadowRoot.innerHTML = `\n\t\t\t\t\t<style>\n\t\t\t\t\t\t${SHADOW_ROOT_CSS}\n\t\t\t\t\t</style>\n\t\t\t\t`;\r\n this.shadowRoot.appendChild(this.view);\r\n this.shadowRoot.appendChild(DOM.$('slot'));\r\n }\r\n else {\r\n this.container.appendChild(this.view);\r\n }\r\n const toDisposeOnSetContainer = new DisposableStore();\r\n ContextView.BUBBLE_UP_EVENTS.forEach(event => {\r\n toDisposeOnSetContainer.add(DOM.addStandardDisposableListener(this.container, event, (e) => {\r\n this.onDOMEvent(e, false);\r\n }));\r\n });\r\n ContextView.BUBBLE_DOWN_EVENTS.forEach(event => {\r\n toDisposeOnSetContainer.add(DOM.addStandardDisposableListener(this.container, event, (e) => {\r\n this.onDOMEvent(e, true);\r\n }, true));\r\n });\r\n this.toDisposeOnSetContainer = toDisposeOnSetContainer;\r\n }\r\n }\r\n show(delegate) {\r\n if (this.isVisible()) {\r\n this.hide();\r\n }\r\n // Show static box\r\n DOM.clearNode(this.view);\r\n this.view.className = 'context-view';\r\n this.view.style.top = '0px';\r\n this.view.style.left = '0px';\r\n this.view.style.zIndex = '2500';\r\n this.view.style.position = this.useFixedPosition ? 'fixed' : 'absolute';\r\n DOM.show(this.view);\r\n // Render content\r\n this.toDisposeOnClean = delegate.render(this.view) || Disposable.None;\r\n // Set active delegate\r\n this.delegate = delegate;\r\n // Layout\r\n this.doLayout();\r\n // Focus\r\n if (this.delegate.focus) {\r\n this.delegate.focus();\r\n }\r\n }\r\n getViewElement() {\r\n return this.view;\r\n }\r\n layout() {\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n if (this.delegate.canRelayout === false && !(platform.isIOS && BrowserFeatures.pointerEvents)) {\r\n this.hide();\r\n return;\r\n }\r\n if (this.delegate.layout) {\r\n this.delegate.layout();\r\n }\r\n this.doLayout();\r\n }\r\n doLayout() {\r\n // Check that we still have a delegate - this.delegate.layout may have hidden\r\n if (!this.isVisible()) {\r\n return;\r\n }\r\n // Get anchor\r\n let anchor = this.delegate.getAnchor();\r\n // Compute around\r\n let around;\r\n // Get the element's position and size (to anchor the view)\r\n if (DOM.isHTMLElement(anchor)) {\r\n let elementPosition = DOM.getDomNodePagePosition(anchor);\r\n around = {\r\n top: elementPosition.top,\r\n left: elementPosition.left,\r\n width: elementPosition.width,\r\n height: elementPosition.height\r\n };\r\n }\r\n else {\r\n around = {\r\n top: anchor.y,\r\n left: anchor.x,\r\n width: anchor.width || 1,\r\n height: anchor.height || 2\r\n };\r\n }\r\n const viewSizeWidth = DOM.getTotalWidth(this.view);\r\n const viewSizeHeight = DOM.getTotalHeight(this.view);\r\n const anchorPosition = this.delegate.anchorPosition || 0 /* BELOW */;\r\n const anchorAlignment = this.delegate.anchorAlignment || 0 /* LEFT */;\r\n const verticalAnchor = { offset: around.top - window.pageYOffset, size: around.height, position: anchorPosition === 0 /* BELOW */ ? 0 /* Before */ : 1 /* After */ };\r\n let horizontalAnchor;\r\n if (anchorAlignment === 0 /* LEFT */) {\r\n horizontalAnchor = { offset: around.left, size: 0, position: 0 /* Before */ };\r\n }\r\n else {\r\n horizontalAnchor = { offset: around.left + around.width, size: 0, position: 1 /* After */ };\r\n }\r\n const top = layout(window.innerHeight, viewSizeHeight, verticalAnchor) + window.pageYOffset;\r\n // if view intersects vertically with anchor, shift it horizontally\r\n if (Range.intersects({ start: top, end: top + viewSizeHeight }, { start: verticalAnchor.offset, end: verticalAnchor.offset + verticalAnchor.size })) {\r\n horizontalAnchor.size = around.width;\r\n if (anchorAlignment === 1 /* RIGHT */) {\r\n horizontalAnchor.offset = around.left;\r\n }\r\n }\r\n const left = layout(window.innerWidth, viewSizeWidth, horizontalAnchor);\r\n DOM.removeClasses(this.view, 'top', 'bottom', 'left', 'right');\r\n DOM.addClass(this.view, anchorPosition === 0 /* BELOW */ ? 'bottom' : 'top');\r\n DOM.addClass(this.view, anchorAlignment === 0 /* LEFT */ ? 'left' : 'right');\r\n DOM.toggleClass(this.view, 'fixed', this.useFixedPosition);\r\n const containerPosition = DOM.getDomNodePagePosition(this.container);\r\n this.view.style.top = `${top - (this.useFixedPosition ? DOM.getDomNodePagePosition(this.view).top : containerPosition.top)}px`;\r\n this.view.style.left = `${left - (this.useFixedPosition ? DOM.getDomNodePagePosition(this.view).left : containerPosition.left)}px`;\r\n this.view.style.width = 'initial';\r\n }\r\n hide(data) {\r\n const delegate = this.delegate;\r\n this.delegate = null;\r\n if (delegate === null || delegate === void 0 ? void 0 : delegate.onHide) {\r\n delegate.onHide(data);\r\n }\r\n this.toDisposeOnClean.dispose();\r\n DOM.hide(this.view);\r\n }\r\n isVisible() {\r\n return !!this.delegate;\r\n }\r\n onDOMEvent(e, onCapture) {\r\n if (this.delegate) {\r\n if (this.delegate.onDOMEvent) {\r\n this.delegate.onDOMEvent(e, document.activeElement);\r\n }\r\n else if (onCapture && !DOM.isAncestor(e.target, this.container)) {\r\n this.hide();\r\n }\r\n }\r\n }\r\n dispose() {\r\n this.hide();\r\n super.dispose();\r\n }\r\n}\r\nContextView.BUBBLE_UP_EVENTS = ['click', 'keydown', 'focus', 'blur'];\r\nContextView.BUBBLE_DOWN_EVENTS = ['click'];\r\nlet SHADOW_ROOT_CSS = /* css */ `\n\t:host {\n\t\tall: initial; /* 1st rule so subsequent properties are reset. */\n\t}\n\n\t@font-face {\n\t\tfont-family: \"codicon\";\n\t\tsrc: url(\"./codicon.ttf?5d4d76ab2ce5108968ad644d591a16a6\") format(\"truetype\");\n\t}\n\n\t.codicon[class*='codicon-'] {\n\t\tfont: normal normal normal 16px/1 codicon;\n\t\tdisplay: inline-block;\n\t\ttext-decoration: none;\n\t\ttext-rendering: auto;\n\t\ttext-align: center;\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tuser-select: none;\n\t\t-webkit-user-select: none;\n\t\t-ms-user-select: none;\n\t}\n\n\t:host {\n\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe WPC\", \"Segoe UI\", \"HelveticaNeue-Light\", system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif;\n\t}\n\n\t:host-context(.mac) { font-family: -apple-system, BlinkMacSystemFont, sans-serif; }\n\t:host-context(.mac:lang(zh-Hans)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang SC\", \"Hiragino Sans GB\", sans-serif; }\n\t:host-context(.mac:lang(zh-Hant)) { font-family: -apple-system, BlinkMacSystemFont, \"PingFang TC\", sans-serif; }\n\t:host-context(.mac:lang(ja)) { font-family: -apple-system, BlinkMacSystemFont, \"Hiragino Kaku Gothic Pro\", sans-serif; }\n\t:host-context(.mac:lang(ko)) { font-family: -apple-system, BlinkMacSystemFont, \"Nanum Gothic\", \"Apple SD Gothic Neo\", \"AppleGothic\", sans-serif; }\n\n\t:host-context(.windows) { font-family: \"Segoe WPC\", \"Segoe UI\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hans)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft YaHei\", sans-serif; }\n\t:host-context(.windows:lang(zh-Hant)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Microsoft Jhenghei\", sans-serif; }\n\t:host-context(.windows:lang(ja)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Yu Gothic UI\", \"Meiryo UI\", sans-serif; }\n\t:host-context(.windows:lang(ko)) { font-family: \"Segoe WPC\", \"Segoe UI\", \"Malgun Gothic\", \"Dotom\", sans-serif; }\n\n\t:host-context(.linux) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hans)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans SC\", \"Source Han Sans CN\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(zh-Hant)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans TC\", \"Source Han Sans TW\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ja)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans J\", \"Source Han Sans JP\", \"Source Han Sans\", sans-serif; }\n\t:host-context(.linux:lang(ko)) { font-family: system-ui, \"Ubuntu\", \"Droid Sans\", \"Source Han Sans K\", \"Source Han Sans JR\", \"Source Han Sans\", \"UnDotum\", \"FBaekmuk Gulim\", sans-serif; }\n`;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './countBadge.css';\r\nimport { $, append } from '../../dom.js';\r\nimport { format } from '../../../common/strings.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nconst defaultOpts = {\r\n badgeBackground: Color.fromHex('#4D4D4D'),\r\n badgeForeground: Color.fromHex('#FFFFFF')\r\n};\r\nexport class CountBadge {\r\n constructor(container, options) {\r\n this.count = 0;\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOpts, false);\r\n this.badgeBackground = this.options.badgeBackground;\r\n this.badgeForeground = this.options.badgeForeground;\r\n this.badgeBorder = this.options.badgeBorder;\r\n this.element = append(container, $('.monaco-count-badge'));\r\n this.countFormat = this.options.countFormat || '{0}';\r\n this.titleFormat = this.options.titleFormat || '';\r\n this.setCount(this.options.count || 0);\r\n }\r\n setCount(count) {\r\n this.count = count;\r\n this.render();\r\n }\r\n setTitleFormat(titleFormat) {\r\n this.titleFormat = titleFormat;\r\n this.render();\r\n }\r\n render() {\r\n this.element.textContent = format(this.countFormat, this.count);\r\n this.element.title = format(this.titleFormat, this.count);\r\n this.applyStyles();\r\n }\r\n style(styles) {\r\n this.badgeBackground = styles.badgeBackground;\r\n this.badgeForeground = styles.badgeForeground;\r\n this.badgeBorder = styles.badgeBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.element) {\r\n const background = this.badgeBackground ? this.badgeBackground.toString() : '';\r\n const foreground = this.badgeForeground ? this.badgeForeground.toString() : '';\r\n const border = this.badgeBorder ? this.badgeBorder.toString() : '';\r\n this.element.style.backgroundColor = background;\r\n this.element.style.color = foreground;\r\n this.element.style.borderWidth = border ? '1px' : '';\r\n this.element.style.borderStyle = border ? 'solid' : '';\r\n this.element.style.borderColor = border;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './dropdown.css';\r\nimport { Gesture, EventType as GestureEventType } from '../../touch.js';\r\nimport { ActionRunner } from '../../../common/actions.js';\r\nimport { EventHelper, EventType, removeClass, addClass, append, $, addDisposableListener } from '../../dom.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nexport class BaseDropdown extends ActionRunner {\r\n constructor(container, options) {\r\n super();\r\n this._onDidChangeVisibility = new Emitter();\r\n this.onDidChangeVisibility = this._onDidChangeVisibility.event;\r\n this._element = append(container, $('.monaco-dropdown'));\r\n this._label = append(this._element, $('.dropdown-label'));\r\n let labelRenderer = options.labelRenderer;\r\n if (!labelRenderer) {\r\n labelRenderer = (container) => {\r\n container.textContent = options.label || '';\r\n return null;\r\n };\r\n }\r\n for (const event of [EventType.CLICK, EventType.MOUSE_DOWN, GestureEventType.Tap]) {\r\n this._register(addDisposableListener(this.element, event, e => EventHelper.stop(e, true))); // prevent default click behaviour to trigger\r\n }\r\n for (const event of [EventType.MOUSE_DOWN, GestureEventType.Tap]) {\r\n this._register(addDisposableListener(this._label, event, e => {\r\n if (e instanceof MouseEvent && e.detail > 1) {\r\n return; // prevent multiple clicks to open multiple context menus (https://github.com/Microsoft/vscode/issues/41363)\r\n }\r\n if (this.visible) {\r\n this.hide();\r\n }\r\n else {\r\n this.show();\r\n }\r\n }));\r\n }\r\n this._register(addDisposableListener(this._label, EventType.KEY_UP, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n if (event.equals(3 /* Enter */) || event.equals(10 /* Space */)) {\r\n EventHelper.stop(e, true); // https://github.com/Microsoft/vscode/issues/57997\r\n if (this.visible) {\r\n this.hide();\r\n }\r\n else {\r\n this.show();\r\n }\r\n }\r\n }));\r\n const cleanupFn = labelRenderer(this._label);\r\n if (cleanupFn) {\r\n this._register(cleanupFn);\r\n }\r\n this._register(Gesture.addTarget(this._label));\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n show() {\r\n if (!this.visible) {\r\n this.visible = true;\r\n this._onDidChangeVisibility.fire(true);\r\n }\r\n }\r\n hide() {\r\n if (this.visible) {\r\n this.visible = false;\r\n this._onDidChangeVisibility.fire(false);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.hide();\r\n if (this.boxContainer) {\r\n this.boxContainer.remove();\r\n this.boxContainer = undefined;\r\n }\r\n if (this.contents) {\r\n this.contents.remove();\r\n this.contents = undefined;\r\n }\r\n if (this._label) {\r\n this._label.remove();\r\n this._label = undefined;\r\n }\r\n }\r\n}\r\nexport class DropdownMenu extends BaseDropdown {\r\n constructor(container, options) {\r\n super(container, options);\r\n this._actions = [];\r\n this._contextMenuProvider = options.contextMenuProvider;\r\n this.actions = options.actions || [];\r\n this.actionProvider = options.actionProvider;\r\n this.menuClassName = options.menuClassName || '';\r\n this.menuAsChild = !!options.menuAsChild;\r\n }\r\n set menuOptions(options) {\r\n this._menuOptions = options;\r\n }\r\n get menuOptions() {\r\n return this._menuOptions;\r\n }\r\n get actions() {\r\n if (this.actionProvider) {\r\n return this.actionProvider.getActions();\r\n }\r\n return this._actions;\r\n }\r\n set actions(actions) {\r\n this._actions = actions;\r\n }\r\n show() {\r\n super.show();\r\n addClass(this.element, 'active');\r\n this._contextMenuProvider.showContextMenu({\r\n getAnchor: () => this.element,\r\n getActions: () => this.actions,\r\n getActionsContext: () => this.menuOptions ? this.menuOptions.context : null,\r\n getActionViewItem: action => this.menuOptions && this.menuOptions.actionViewItemProvider ? this.menuOptions.actionViewItemProvider(action) : undefined,\r\n getKeyBinding: action => this.menuOptions && this.menuOptions.getKeyBinding ? this.menuOptions.getKeyBinding(action) : undefined,\r\n getMenuClassName: () => this.menuClassName,\r\n onHide: () => this.onHide(),\r\n actionRunner: this.menuOptions ? this.menuOptions.actionRunner : undefined,\r\n anchorAlignment: this.menuOptions ? this.menuOptions.anchorAlignment : 0 /* LEFT */,\r\n domForShadowRoot: this.menuAsChild ? this.element : undefined\r\n });\r\n }\r\n hide() {\r\n super.hide();\r\n }\r\n onHide() {\r\n this.hide();\r\n removeClass(this.element, 'active');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './dropdown.css';\r\nimport { append, $, addClasses } from '../../dom.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { BaseActionViewItem } from '../actionbar/actionViewItems.js';\r\nimport { DropdownMenu } from './dropdown.js';\r\nimport { asArray } from '../../../common/arrays.js';\r\nexport class DropdownMenuActionViewItem extends BaseActionViewItem {\r\n constructor(action, menuActionsOrProvider, contextMenuProvider, options = {}) {\r\n super(null, action, options);\r\n this.options = options;\r\n this._onDidChangeVisibility = this._register(new Emitter());\r\n this.menuActionsOrProvider = menuActionsOrProvider;\r\n this.contextMenuProvider = contextMenuProvider;\r\n if (this.options.actionRunner) {\r\n this.actionRunner = this.options.actionRunner;\r\n }\r\n }\r\n render(container) {\r\n const labelRenderer = (el) => {\r\n this.element = append(el, $('a.action-label'));\r\n const classNames = this.options.classNames ? asArray(this.options.classNames) : [];\r\n // todo@aeschli: remove codicon, should come through `this.options.classNames`\r\n if (!classNames.find(c => c === 'icon')) {\r\n classNames.push('codicon');\r\n }\r\n addClasses(this.element, ...classNames);\r\n this.element.tabIndex = 0;\r\n this.element.setAttribute('role', 'button');\r\n this.element.setAttribute('aria-haspopup', 'true');\r\n this.element.setAttribute('aria-expanded', 'false');\r\n this.element.title = this._action.label || '';\r\n return null;\r\n };\r\n const options = {\r\n contextMenuProvider: this.contextMenuProvider,\r\n labelRenderer: labelRenderer,\r\n menuAsChild: this.options.menuAsChild\r\n };\r\n // Render the DropdownMenu around a simple action to toggle it\r\n if (Array.isArray(this.menuActionsOrProvider)) {\r\n options.actions = this.menuActionsOrProvider;\r\n }\r\n else {\r\n options.actionProvider = this.menuActionsOrProvider;\r\n }\r\n this.dropdownMenu = this._register(new DropdownMenu(container, options));\r\n this._register(this.dropdownMenu.onDidChangeVisibility(visible => {\r\n var _a;\r\n (_a = this.element) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', `${visible}`);\r\n this._onDidChangeVisibility.fire(visible);\r\n }));\r\n this.dropdownMenu.menuOptions = {\r\n actionViewItemProvider: this.options.actionViewItemProvider,\r\n actionRunner: this.actionRunner,\r\n getKeyBinding: this.options.keybindingProvider,\r\n context: this._context\r\n };\r\n if (this.options.anchorAlignmentProvider) {\r\n const that = this;\r\n this.dropdownMenu.menuOptions = Object.assign(Object.assign({}, this.dropdownMenu.menuOptions), { get anchorAlignment() {\r\n return that.options.anchorAlignmentProvider();\r\n } });\r\n }\r\n }\r\n setActionContext(newContext) {\r\n super.setActionContext(newContext);\r\n if (this.dropdownMenu) {\r\n if (this.dropdownMenu.menuOptions) {\r\n this.dropdownMenu.menuOptions.context = newContext;\r\n }\r\n else {\r\n this.dropdownMenu.menuOptions = { context: newContext };\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './findInput.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport * as dom from '../../dom.js';\r\nimport { HistoryInputBox } from '../inputbox/inputBox.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { CaseSensitiveCheckbox, WholeWordsCheckbox, RegexCheckbox } from './findInputCheckboxes.js';\r\nconst NLS_DEFAULT_LABEL = nls.localize('defaultLabel', \"input\");\r\nexport class FindInput extends Widget {\r\n constructor(parent, contextViewProvider, _showOptionButtons, options) {\r\n super();\r\n this._showOptionButtons = _showOptionButtons;\r\n this.fixFocusOnOptionClickEnabled = true;\r\n this._onDidOptionChange = this._register(new Emitter());\r\n this.onDidOptionChange = this._onDidOptionChange.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onMouseDown = this._register(new Emitter());\r\n this.onMouseDown = this._onMouseDown.event;\r\n this._onInput = this._register(new Emitter());\r\n this._onKeyUp = this._register(new Emitter());\r\n this._onCaseSensitiveKeyDown = this._register(new Emitter());\r\n this.onCaseSensitiveKeyDown = this._onCaseSensitiveKeyDown.event;\r\n this._onRegexKeyDown = this._register(new Emitter());\r\n this.onRegexKeyDown = this._onRegexKeyDown.event;\r\n this._lastHighlightFindOptions = 0;\r\n this.contextViewProvider = contextViewProvider;\r\n this.placeholder = options.placeholder || '';\r\n this.validation = options.validation;\r\n this.label = options.label || NLS_DEFAULT_LABEL;\r\n this.inputActiveOptionBorder = options.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = options.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = options.inputActiveOptionBackground;\r\n this.inputBackground = options.inputBackground;\r\n this.inputForeground = options.inputForeground;\r\n this.inputBorder = options.inputBorder;\r\n this.inputValidationInfoBorder = options.inputValidationInfoBorder;\r\n this.inputValidationInfoBackground = options.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = options.inputValidationInfoForeground;\r\n this.inputValidationWarningBorder = options.inputValidationWarningBorder;\r\n this.inputValidationWarningBackground = options.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = options.inputValidationWarningForeground;\r\n this.inputValidationErrorBorder = options.inputValidationErrorBorder;\r\n this.inputValidationErrorBackground = options.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = options.inputValidationErrorForeground;\r\n const appendCaseSensitiveLabel = options.appendCaseSensitiveLabel || '';\r\n const appendWholeWordsLabel = options.appendWholeWordsLabel || '';\r\n const appendRegexLabel = options.appendRegexLabel || '';\r\n const history = options.history || [];\r\n const flexibleHeight = !!options.flexibleHeight;\r\n const flexibleWidth = !!options.flexibleWidth;\r\n const flexibleMaxHeight = options.flexibleMaxHeight;\r\n this.domNode = document.createElement('div');\r\n dom.addClass(this.domNode, 'monaco-findInput');\r\n this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, {\r\n placeholder: this.placeholder || '',\r\n ariaLabel: this.label || '',\r\n validationOptions: {\r\n validation: this.validation\r\n },\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder,\r\n history,\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight\r\n }));\r\n this.regex = this._register(new RegexCheckbox({\r\n appendTitle: appendRegexLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground\r\n }));\r\n this._register(this.regex.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this._register(this.regex.onKeyDown(e => {\r\n this._onRegexKeyDown.fire(e);\r\n }));\r\n this.wholeWords = this._register(new WholeWordsCheckbox({\r\n appendTitle: appendWholeWordsLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground\r\n }));\r\n this._register(this.wholeWords.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this.caseSensitive = this._register(new CaseSensitiveCheckbox({\r\n appendTitle: appendCaseSensitiveLabel,\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground\r\n }));\r\n this._register(this.caseSensitive.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this._register(this.caseSensitive.onKeyDown(e => {\r\n this._onCaseSensitiveKeyDown.fire(e);\r\n }));\r\n if (this._showOptionButtons) {\r\n this.inputBox.paddingRight = this.caseSensitive.width() + this.wholeWords.width() + this.regex.width();\r\n }\r\n // Arrow-Key support to navigate between options\r\n let indexes = [this.caseSensitive.domNode, this.wholeWords.domNode, this.regex.domNode];\r\n this.onkeydown(this.domNode, (event) => {\r\n if (event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(9 /* Escape */)) {\r\n let index = indexes.indexOf(document.activeElement);\r\n if (index >= 0) {\r\n let newIndex = -1;\r\n if (event.equals(17 /* RightArrow */)) {\r\n newIndex = (index + 1) % indexes.length;\r\n }\r\n else if (event.equals(15 /* LeftArrow */)) {\r\n if (index === 0) {\r\n newIndex = indexes.length - 1;\r\n }\r\n else {\r\n newIndex = index - 1;\r\n }\r\n }\r\n if (event.equals(9 /* Escape */)) {\r\n indexes[index].blur();\r\n }\r\n else if (newIndex >= 0) {\r\n indexes[newIndex].focus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n }\r\n }\r\n });\r\n let controls = document.createElement('div');\r\n controls.className = 'controls';\r\n controls.style.display = this._showOptionButtons ? 'block' : 'none';\r\n controls.appendChild(this.caseSensitive.domNode);\r\n controls.appendChild(this.wholeWords.domNode);\r\n controls.appendChild(this.regex.domNode);\r\n this.domNode.appendChild(controls);\r\n if (parent) {\r\n parent.appendChild(this.domNode);\r\n }\r\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\r\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\r\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\r\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\r\n }\r\n enable() {\r\n dom.removeClass(this.domNode, 'disabled');\r\n this.inputBox.enable();\r\n this.regex.enable();\r\n this.wholeWords.enable();\r\n this.caseSensitive.enable();\r\n }\r\n disable() {\r\n dom.addClass(this.domNode, 'disabled');\r\n this.inputBox.disable();\r\n this.regex.disable();\r\n this.wholeWords.disable();\r\n this.caseSensitive.disable();\r\n }\r\n setFocusInputOnOptionClick(value) {\r\n this.fixFocusOnOptionClickEnabled = value;\r\n }\r\n setEnabled(enabled) {\r\n if (enabled) {\r\n this.enable();\r\n }\r\n else {\r\n this.disable();\r\n }\r\n }\r\n getValue() {\r\n return this.inputBox.value;\r\n }\r\n setValue(value) {\r\n if (this.inputBox.value !== value) {\r\n this.inputBox.value = value;\r\n }\r\n }\r\n style(styles) {\r\n this.inputActiveOptionBorder = styles.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = styles.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = styles.inputActiveOptionBackground;\r\n this.inputBackground = styles.inputBackground;\r\n this.inputForeground = styles.inputForeground;\r\n this.inputBorder = styles.inputBorder;\r\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\r\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\r\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\r\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\r\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\r\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.domNode) {\r\n const checkBoxStyles = {\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground,\r\n };\r\n this.regex.style(checkBoxStyles);\r\n this.wholeWords.style(checkBoxStyles);\r\n this.caseSensitive.style(checkBoxStyles);\r\n const inputBoxStyles = {\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder\r\n };\r\n this.inputBox.style(inputBoxStyles);\r\n }\r\n }\r\n select() {\r\n this.inputBox.select();\r\n }\r\n focus() {\r\n this.inputBox.focus();\r\n }\r\n getCaseSensitive() {\r\n return this.caseSensitive.checked;\r\n }\r\n setCaseSensitive(value) {\r\n this.caseSensitive.checked = value;\r\n }\r\n getWholeWords() {\r\n return this.wholeWords.checked;\r\n }\r\n setWholeWords(value) {\r\n this.wholeWords.checked = value;\r\n }\r\n getRegex() {\r\n return this.regex.checked;\r\n }\r\n setRegex(value) {\r\n this.regex.checked = value;\r\n this.validate();\r\n }\r\n focusOnCaseSensitive() {\r\n this.caseSensitive.focus();\r\n }\r\n highlightFindOptions() {\r\n dom.removeClass(this.domNode, 'highlight-' + (this._lastHighlightFindOptions));\r\n this._lastHighlightFindOptions = 1 - this._lastHighlightFindOptions;\r\n dom.addClass(this.domNode, 'highlight-' + (this._lastHighlightFindOptions));\r\n }\r\n validate() {\r\n this.inputBox.validate();\r\n }\r\n clearMessage() {\r\n this.inputBox.hideMessage();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Checkbox } from '../checkbox/checkbox.js';\r\nimport * as nls from '../../../../nls.js';\r\nimport { Codicon } from '../../../common/codicons.js';\r\nconst NLS_CASE_SENSITIVE_CHECKBOX_LABEL = nls.localize('caseDescription', \"Match Case\");\r\nconst NLS_WHOLE_WORD_CHECKBOX_LABEL = nls.localize('wordsDescription', \"Match Whole Word\");\r\nconst NLS_REGEX_CHECKBOX_LABEL = nls.localize('regexDescription', \"Use Regular Expression\");\r\nexport class CaseSensitiveCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n icon: Codicon.caseSensitive,\r\n title: NLS_CASE_SENSITIVE_CHECKBOX_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\nexport class WholeWordsCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n icon: Codicon.wholeWord,\r\n title: NLS_WHOLE_WORD_CHECKBOX_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\nexport class RegexCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n icon: Codicon.regex,\r\n title: NLS_REGEX_CHECKBOX_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './findInput.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport * as dom from '../../dom.js';\r\nimport { HistoryInputBox } from '../inputbox/inputBox.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { Checkbox } from '../checkbox/checkbox.js';\r\nimport { Codicon } from '../../../common/codicons.js';\r\nconst NLS_DEFAULT_LABEL = nls.localize('defaultLabel', \"input\");\r\nconst NLS_PRESERVE_CASE_LABEL = nls.localize('label.preserveCaseCheckbox', \"Preserve Case\");\r\nexport class PreserveCaseCheckbox extends Checkbox {\r\n constructor(opts) {\r\n super({\r\n // TODO: does this need its own icon?\r\n icon: Codicon.preserveCase,\r\n title: NLS_PRESERVE_CASE_LABEL + opts.appendTitle,\r\n isChecked: opts.isChecked,\r\n inputActiveOptionBorder: opts.inputActiveOptionBorder,\r\n inputActiveOptionForeground: opts.inputActiveOptionForeground,\r\n inputActiveOptionBackground: opts.inputActiveOptionBackground\r\n });\r\n }\r\n}\r\nexport class ReplaceInput extends Widget {\r\n constructor(parent, contextViewProvider, _showOptionButtons, options) {\r\n super();\r\n this._showOptionButtons = _showOptionButtons;\r\n this.fixFocusOnOptionClickEnabled = true;\r\n this.cachedOptionsWidth = 0;\r\n this._onDidOptionChange = this._register(new Emitter());\r\n this.onDidOptionChange = this._onDidOptionChange.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onMouseDown = this._register(new Emitter());\r\n this._onInput = this._register(new Emitter());\r\n this._onKeyUp = this._register(new Emitter());\r\n this._onPreserveCaseKeyDown = this._register(new Emitter());\r\n this.onPreserveCaseKeyDown = this._onPreserveCaseKeyDown.event;\r\n this.contextViewProvider = contextViewProvider;\r\n this.placeholder = options.placeholder || '';\r\n this.validation = options.validation;\r\n this.label = options.label || NLS_DEFAULT_LABEL;\r\n this.inputActiveOptionBorder = options.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = options.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = options.inputActiveOptionBackground;\r\n this.inputBackground = options.inputBackground;\r\n this.inputForeground = options.inputForeground;\r\n this.inputBorder = options.inputBorder;\r\n this.inputValidationInfoBorder = options.inputValidationInfoBorder;\r\n this.inputValidationInfoBackground = options.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = options.inputValidationInfoForeground;\r\n this.inputValidationWarningBorder = options.inputValidationWarningBorder;\r\n this.inputValidationWarningBackground = options.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = options.inputValidationWarningForeground;\r\n this.inputValidationErrorBorder = options.inputValidationErrorBorder;\r\n this.inputValidationErrorBackground = options.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = options.inputValidationErrorForeground;\r\n const history = options.history || [];\r\n const flexibleHeight = !!options.flexibleHeight;\r\n const flexibleWidth = !!options.flexibleWidth;\r\n const flexibleMaxHeight = options.flexibleMaxHeight;\r\n this.domNode = document.createElement('div');\r\n dom.addClass(this.domNode, 'monaco-findInput');\r\n this.inputBox = this._register(new HistoryInputBox(this.domNode, this.contextViewProvider, {\r\n ariaLabel: this.label || '',\r\n placeholder: this.placeholder || '',\r\n validationOptions: {\r\n validation: this.validation\r\n },\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder,\r\n history,\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight\r\n }));\r\n this.preserveCase = this._register(new PreserveCaseCheckbox({\r\n appendTitle: '',\r\n isChecked: false,\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground,\r\n }));\r\n this._register(this.preserveCase.onChange(viaKeyboard => {\r\n this._onDidOptionChange.fire(viaKeyboard);\r\n if (!viaKeyboard && this.fixFocusOnOptionClickEnabled) {\r\n this.inputBox.focus();\r\n }\r\n this.validate();\r\n }));\r\n this._register(this.preserveCase.onKeyDown(e => {\r\n this._onPreserveCaseKeyDown.fire(e);\r\n }));\r\n if (this._showOptionButtons) {\r\n this.cachedOptionsWidth = this.preserveCase.width();\r\n }\r\n else {\r\n this.cachedOptionsWidth = 0;\r\n }\r\n // Arrow-Key support to navigate between options\r\n let indexes = [this.preserveCase.domNode];\r\n this.onkeydown(this.domNode, (event) => {\r\n if (event.equals(15 /* LeftArrow */) || event.equals(17 /* RightArrow */) || event.equals(9 /* Escape */)) {\r\n let index = indexes.indexOf(document.activeElement);\r\n if (index >= 0) {\r\n let newIndex = -1;\r\n if (event.equals(17 /* RightArrow */)) {\r\n newIndex = (index + 1) % indexes.length;\r\n }\r\n else if (event.equals(15 /* LeftArrow */)) {\r\n if (index === 0) {\r\n newIndex = indexes.length - 1;\r\n }\r\n else {\r\n newIndex = index - 1;\r\n }\r\n }\r\n if (event.equals(9 /* Escape */)) {\r\n indexes[index].blur();\r\n }\r\n else if (newIndex >= 0) {\r\n indexes[newIndex].focus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n }\r\n }\r\n });\r\n let controls = document.createElement('div');\r\n controls.className = 'controls';\r\n controls.style.display = this._showOptionButtons ? 'block' : 'none';\r\n controls.appendChild(this.preserveCase.domNode);\r\n this.domNode.appendChild(controls);\r\n if (parent) {\r\n parent.appendChild(this.domNode);\r\n }\r\n this.onkeydown(this.inputBox.inputElement, (e) => this._onKeyDown.fire(e));\r\n this.onkeyup(this.inputBox.inputElement, (e) => this._onKeyUp.fire(e));\r\n this.oninput(this.inputBox.inputElement, (e) => this._onInput.fire());\r\n this.onmousedown(this.inputBox.inputElement, (e) => this._onMouseDown.fire(e));\r\n }\r\n enable() {\r\n dom.removeClass(this.domNode, 'disabled');\r\n this.inputBox.enable();\r\n this.preserveCase.enable();\r\n }\r\n disable() {\r\n dom.addClass(this.domNode, 'disabled');\r\n this.inputBox.disable();\r\n this.preserveCase.disable();\r\n }\r\n setEnabled(enabled) {\r\n if (enabled) {\r\n this.enable();\r\n }\r\n else {\r\n this.disable();\r\n }\r\n }\r\n style(styles) {\r\n this.inputActiveOptionBorder = styles.inputActiveOptionBorder;\r\n this.inputActiveOptionForeground = styles.inputActiveOptionForeground;\r\n this.inputActiveOptionBackground = styles.inputActiveOptionBackground;\r\n this.inputBackground = styles.inputBackground;\r\n this.inputForeground = styles.inputForeground;\r\n this.inputBorder = styles.inputBorder;\r\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\r\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\r\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\r\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\r\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\r\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.domNode) {\r\n const checkBoxStyles = {\r\n inputActiveOptionBorder: this.inputActiveOptionBorder,\r\n inputActiveOptionForeground: this.inputActiveOptionForeground,\r\n inputActiveOptionBackground: this.inputActiveOptionBackground,\r\n };\r\n this.preserveCase.style(checkBoxStyles);\r\n const inputBoxStyles = {\r\n inputBackground: this.inputBackground,\r\n inputForeground: this.inputForeground,\r\n inputBorder: this.inputBorder,\r\n inputValidationInfoBackground: this.inputValidationInfoBackground,\r\n inputValidationInfoForeground: this.inputValidationInfoForeground,\r\n inputValidationInfoBorder: this.inputValidationInfoBorder,\r\n inputValidationWarningBackground: this.inputValidationWarningBackground,\r\n inputValidationWarningForeground: this.inputValidationWarningForeground,\r\n inputValidationWarningBorder: this.inputValidationWarningBorder,\r\n inputValidationErrorBackground: this.inputValidationErrorBackground,\r\n inputValidationErrorForeground: this.inputValidationErrorForeground,\r\n inputValidationErrorBorder: this.inputValidationErrorBorder\r\n };\r\n this.inputBox.style(inputBoxStyles);\r\n }\r\n }\r\n select() {\r\n this.inputBox.select();\r\n }\r\n focus() {\r\n this.inputBox.focus();\r\n }\r\n getPreserveCase() {\r\n return this.preserveCase.checked;\r\n }\r\n setPreserveCase(value) {\r\n this.preserveCase.checked = value;\r\n }\r\n focusOnPreserve() {\r\n this.preserveCase.focus();\r\n }\r\n validate() {\r\n if (this.inputBox) {\r\n this.inputBox.validate();\r\n }\r\n }\r\n set width(newWidth) {\r\n this.inputBox.paddingRight = this.cachedOptionsWidth;\r\n this.inputBox.width = newWidth;\r\n this.domNode.style.width = newWidth + 'px';\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as objects from '../../../common/objects.js';\r\nimport { renderCodicons } from '../../../common/codicons.js';\r\nimport { escape } from '../../../common/strings.js';\r\nexport class HighlightedLabel {\r\n constructor(container, supportCodicons) {\r\n this.supportCodicons = supportCodicons;\r\n this.text = '';\r\n this.title = '';\r\n this.highlights = [];\r\n this.didEverRender = false;\r\n this.domNode = document.createElement('span');\r\n this.domNode.className = 'monaco-highlighted-label';\r\n container.appendChild(this.domNode);\r\n }\r\n get element() {\r\n return this.domNode;\r\n }\r\n set(text, highlights = [], title = '', escapeNewLines) {\r\n if (!text) {\r\n text = '';\r\n }\r\n if (escapeNewLines) {\r\n // adjusts highlights inplace\r\n text = HighlightedLabel.escapeNewLines(text, highlights);\r\n }\r\n if (this.didEverRender && this.text === text && this.title === title && objects.equals(this.highlights, highlights)) {\r\n return;\r\n }\r\n if (!Array.isArray(highlights)) {\r\n highlights = [];\r\n }\r\n this.text = text;\r\n this.title = title;\r\n this.highlights = highlights;\r\n this.render();\r\n }\r\n render() {\r\n let htmlContent = '';\r\n let pos = 0;\r\n for (const highlight of this.highlights) {\r\n if (highlight.end === highlight.start) {\r\n continue;\r\n }\r\n if (pos < highlight.start) {\r\n htmlContent += '<span>';\r\n const substring = this.text.substring(pos, highlight.start);\r\n htmlContent += this.supportCodicons ? renderCodicons(escape(substring)) : escape(substring);\r\n htmlContent += '</span>';\r\n pos = highlight.end;\r\n }\r\n if (highlight.extraClasses) {\r\n htmlContent += `<span class=\"highlight ${highlight.extraClasses}\">`;\r\n }\r\n else {\r\n htmlContent += `<span class=\"highlight\">`;\r\n }\r\n const substring = this.text.substring(highlight.start, highlight.end);\r\n htmlContent += this.supportCodicons ? renderCodicons(escape(substring)) : escape(substring);\r\n htmlContent += '</span>';\r\n pos = highlight.end;\r\n }\r\n if (pos < this.text.length) {\r\n htmlContent += '<span>';\r\n const substring = this.text.substring(pos);\r\n htmlContent += this.supportCodicons ? renderCodicons(escape(substring)) : escape(substring);\r\n htmlContent += '</span>';\r\n }\r\n this.domNode.innerHTML = htmlContent;\r\n if (this.title) {\r\n this.domNode.title = this.title;\r\n }\r\n else {\r\n this.domNode.removeAttribute('title');\r\n }\r\n this.didEverRender = true;\r\n }\r\n static escapeNewLines(text, highlights) {\r\n let total = 0;\r\n let extra = 0;\r\n return text.replace(/\\r\\n|\\r|\\n/g, (match, offset) => {\r\n extra = match === '\\r\\n' ? -1 : 0;\r\n offset += total;\r\n for (const highlight of highlights) {\r\n if (highlight.end <= offset) {\r\n continue;\r\n }\r\n if (highlight.start >= offset) {\r\n highlight.start += extra;\r\n }\r\n if (highlight.end >= offset) {\r\n highlight.end += extra;\r\n }\r\n }\r\n total += extra;\r\n return '\\u23CE';\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './hover.css';\r\nimport * as dom from '../../dom.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { DomScrollableElement } from '../scrollbar/scrollableElement.js';\r\nconst $ = dom.$;\r\nexport class HoverWidget extends Disposable {\r\n constructor() {\r\n super();\r\n this.containerDomNode = document.createElement('div');\r\n this.containerDomNode.className = 'monaco-hover';\r\n this.containerDomNode.tabIndex = 0;\r\n this.containerDomNode.setAttribute('role', 'tooltip');\r\n this.contentsDomNode = document.createElement('div');\r\n this.contentsDomNode.className = 'monaco-hover-content';\r\n this._scrollbar = this._register(new DomScrollableElement(this.contentsDomNode, {}));\r\n this.containerDomNode.appendChild(this._scrollbar.getDomNode());\r\n }\r\n onContentsChanged() {\r\n this._scrollbar.scanDomNode();\r\n }\r\n}\r\nexport function renderHoverAction(parent, actionOptions, keybindingLabel) {\r\n const actionContainer = dom.append(parent, $('div.action-container'));\r\n const action = dom.append(actionContainer, $('a.action'));\r\n action.setAttribute('href', '#');\r\n action.setAttribute('role', 'button');\r\n if (actionOptions.iconClass) {\r\n dom.append(action, $(`span.icon.${actionOptions.iconClass}`));\r\n }\r\n const label = dom.append(action, $('span'));\r\n label.textContent = keybindingLabel ? `${actionOptions.label} (${keybindingLabel})` : actionOptions.label;\r\n return dom.addDisposableListener(actionContainer, dom.EventType.CLICK, e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n actionOptions.run(actionContainer);\r\n });\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './iconlabel.css';\r\nimport * as dom from '../../dom.js';\r\nimport { HighlightedLabel } from '../highlightedlabel/highlightedLabel.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Range } from '../../../common/range.js';\r\nimport { equals } from '../../../common/objects.js';\r\nclass FastLabelNode {\r\n constructor(_element) {\r\n this._element = _element;\r\n }\r\n get element() {\r\n return this._element;\r\n }\r\n set textContent(content) {\r\n if (this.disposed || content === this._textContent) {\r\n return;\r\n }\r\n this._textContent = content;\r\n this._element.textContent = content;\r\n }\r\n set className(className) {\r\n if (this.disposed || className === this._className) {\r\n return;\r\n }\r\n this._className = className;\r\n this._element.className = className;\r\n }\r\n set title(title) {\r\n if (this.disposed || title === this._title) {\r\n return;\r\n }\r\n this._title = title;\r\n if (this._title) {\r\n this._element.title = title;\r\n }\r\n else {\r\n this._element.removeAttribute('title');\r\n }\r\n }\r\n set empty(empty) {\r\n if (this.disposed || empty === this._empty) {\r\n return;\r\n }\r\n this._empty = empty;\r\n this._element.style.marginLeft = empty ? '0' : '';\r\n }\r\n dispose() {\r\n this.disposed = true;\r\n }\r\n}\r\nexport class IconLabel extends Disposable {\r\n constructor(container, options) {\r\n super();\r\n this.domNode = this._register(new FastLabelNode(dom.append(container, dom.$('.monaco-icon-label'))));\r\n const labelContainer = dom.append(this.domNode.element, dom.$('.monaco-icon-label-container'));\r\n const nameContainer = dom.append(labelContainer, dom.$('span.monaco-icon-name-container'));\r\n this.descriptionContainer = this._register(new FastLabelNode(dom.append(labelContainer, dom.$('span.monaco-icon-description-container'))));\r\n if (options === null || options === void 0 ? void 0 : options.supportHighlights) {\r\n this.nameNode = new LabelWithHighlights(nameContainer, !!options.supportCodicons);\r\n }\r\n else {\r\n this.nameNode = new Label(nameContainer);\r\n }\r\n if (options === null || options === void 0 ? void 0 : options.supportDescriptionHighlights) {\r\n this.descriptionNodeFactory = () => new HighlightedLabel(dom.append(this.descriptionContainer.element, dom.$('span.label-description')), !!options.supportCodicons);\r\n }\r\n else {\r\n this.descriptionNodeFactory = () => this._register(new FastLabelNode(dom.append(this.descriptionContainer.element, dom.$('span.label-description'))));\r\n }\r\n }\r\n setLabel(label, description, options) {\r\n const classes = ['monaco-icon-label'];\r\n if (options) {\r\n if (options.extraClasses) {\r\n classes.push(...options.extraClasses);\r\n }\r\n if (options.italic) {\r\n classes.push('italic');\r\n }\r\n if (options.strikethrough) {\r\n classes.push('strikethrough');\r\n }\r\n }\r\n this.domNode.className = classes.join(' ');\r\n this.domNode.title = (options === null || options === void 0 ? void 0 : options.title) || '';\r\n this.nameNode.setLabel(label, options);\r\n if (description || this.descriptionNode) {\r\n if (!this.descriptionNode) {\r\n this.descriptionNode = this.descriptionNodeFactory(); // description node is created lazily on demand\r\n }\r\n if (this.descriptionNode instanceof HighlightedLabel) {\r\n this.descriptionNode.set(description || '', options ? options.descriptionMatches : undefined);\r\n if (options === null || options === void 0 ? void 0 : options.descriptionTitle) {\r\n this.descriptionNode.element.title = options.descriptionTitle;\r\n }\r\n else {\r\n this.descriptionNode.element.removeAttribute('title');\r\n }\r\n }\r\n else {\r\n this.descriptionNode.textContent = description || '';\r\n this.descriptionNode.title = (options === null || options === void 0 ? void 0 : options.descriptionTitle) || '';\r\n this.descriptionNode.empty = !description;\r\n }\r\n }\r\n }\r\n}\r\nclass Label {\r\n constructor(container) {\r\n this.container = container;\r\n this.label = undefined;\r\n this.singleLabel = undefined;\r\n }\r\n setLabel(label, options) {\r\n if (this.label === label && equals(this.options, options)) {\r\n return;\r\n }\r\n this.label = label;\r\n this.options = options;\r\n if (typeof label === 'string') {\r\n if (!this.singleLabel) {\r\n this.container.innerText = '';\r\n dom.removeClass(this.container, 'multiple');\r\n this.singleLabel = dom.append(this.container, dom.$('a.label-name', { id: options === null || options === void 0 ? void 0 : options.domId }));\r\n }\r\n this.singleLabel.textContent = label;\r\n }\r\n else {\r\n this.container.innerText = '';\r\n dom.addClass(this.container, 'multiple');\r\n this.singleLabel = undefined;\r\n for (let i = 0; i < label.length; i++) {\r\n const l = label[i];\r\n const id = (options === null || options === void 0 ? void 0 : options.domId) && `${options === null || options === void 0 ? void 0 : options.domId}_${i}`;\r\n dom.append(this.container, dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' }, l));\r\n if (i < label.length - 1) {\r\n dom.append(this.container, dom.$('span.label-separator', undefined, (options === null || options === void 0 ? void 0 : options.separator) || '/'));\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction splitMatches(labels, separator, matches) {\r\n if (!matches) {\r\n return undefined;\r\n }\r\n let labelStart = 0;\r\n return labels.map(label => {\r\n const labelRange = { start: labelStart, end: labelStart + label.length };\r\n const result = matches\r\n .map(match => Range.intersect(labelRange, match))\r\n .filter(range => !Range.isEmpty(range))\r\n .map(({ start, end }) => ({ start: start - labelStart, end: end - labelStart }));\r\n labelStart = labelRange.end + separator.length;\r\n return result;\r\n });\r\n}\r\nclass LabelWithHighlights {\r\n constructor(container, supportCodicons) {\r\n this.container = container;\r\n this.supportCodicons = supportCodicons;\r\n this.label = undefined;\r\n this.singleLabel = undefined;\r\n }\r\n setLabel(label, options) {\r\n if (this.label === label && equals(this.options, options)) {\r\n return;\r\n }\r\n this.label = label;\r\n this.options = options;\r\n if (typeof label === 'string') {\r\n if (!this.singleLabel) {\r\n this.container.innerText = '';\r\n dom.removeClass(this.container, 'multiple');\r\n this.singleLabel = new HighlightedLabel(dom.append(this.container, dom.$('a.label-name', { id: options === null || options === void 0 ? void 0 : options.domId })), this.supportCodicons);\r\n }\r\n this.singleLabel.set(label, options === null || options === void 0 ? void 0 : options.matches, options === null || options === void 0 ? void 0 : options.title, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\r\n }\r\n else {\r\n this.container.innerText = '';\r\n dom.addClass(this.container, 'multiple');\r\n this.singleLabel = undefined;\r\n const separator = (options === null || options === void 0 ? void 0 : options.separator) || '/';\r\n const matches = splitMatches(label, separator, options === null || options === void 0 ? void 0 : options.matches);\r\n for (let i = 0; i < label.length; i++) {\r\n const l = label[i];\r\n const m = matches ? matches[i] : undefined;\r\n const id = (options === null || options === void 0 ? void 0 : options.domId) && `${options === null || options === void 0 ? void 0 : options.domId}_${i}`;\r\n const name = dom.$('a.label-name', { id, 'data-icon-label-count': label.length, 'data-icon-label-index': i, 'role': 'treeitem' });\r\n const highlightedLabel = new HighlightedLabel(dom.append(this.container, name), this.supportCodicons);\r\n highlightedLabel.set(l, m, options === null || options === void 0 ? void 0 : options.title, options === null || options === void 0 ? void 0 : options.labelEscapeNewLines);\r\n if (i < label.length - 1) {\r\n dom.append(name, dom.$('span.label-separator', undefined, separator));\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './inputBox.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport * as dom from '../../dom.js';\r\nimport { renderFormattedText, renderText } from '../../formattedTextRenderer.js';\r\nimport * as aria from '../aria/aria.js';\r\nimport { ActionBar } from '../actionbar/actionbar.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport { Widget } from '../widget.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { HistoryNavigator } from '../../../common/history.js';\r\nimport { ScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { domEvent } from '../../event.js';\r\nconst $ = dom.$;\r\nconst defaultOpts = {\r\n inputBackground: Color.fromHex('#3C3C3C'),\r\n inputForeground: Color.fromHex('#CCCCCC'),\r\n inputValidationInfoBorder: Color.fromHex('#55AAFF'),\r\n inputValidationInfoBackground: Color.fromHex('#063B49'),\r\n inputValidationWarningBorder: Color.fromHex('#B89500'),\r\n inputValidationWarningBackground: Color.fromHex('#352A05'),\r\n inputValidationErrorBorder: Color.fromHex('#BE1100'),\r\n inputValidationErrorBackground: Color.fromHex('#5A1D1D')\r\n};\r\nexport class InputBox extends Widget {\r\n constructor(container, contextViewProvider, options) {\r\n super();\r\n this.state = 'idle';\r\n this.maxHeight = Number.POSITIVE_INFINITY;\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidHeightChange = this._register(new Emitter());\r\n this.onDidHeightChange = this._onDidHeightChange.event;\r\n this.contextViewProvider = contextViewProvider;\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOpts, false);\r\n this.message = null;\r\n this.placeholder = this.options.placeholder || '';\r\n this.ariaLabel = this.options.ariaLabel || '';\r\n this.inputBackground = this.options.inputBackground;\r\n this.inputForeground = this.options.inputForeground;\r\n this.inputBorder = this.options.inputBorder;\r\n this.inputValidationInfoBorder = this.options.inputValidationInfoBorder;\r\n this.inputValidationInfoBackground = this.options.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = this.options.inputValidationInfoForeground;\r\n this.inputValidationWarningBorder = this.options.inputValidationWarningBorder;\r\n this.inputValidationWarningBackground = this.options.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = this.options.inputValidationWarningForeground;\r\n this.inputValidationErrorBorder = this.options.inputValidationErrorBorder;\r\n this.inputValidationErrorBackground = this.options.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = this.options.inputValidationErrorForeground;\r\n if (this.options.validationOptions) {\r\n this.validation = this.options.validationOptions.validation;\r\n }\r\n this.element = dom.append(container, $('.monaco-inputbox.idle'));\r\n let tagName = this.options.flexibleHeight ? 'textarea' : 'input';\r\n let wrapper = dom.append(this.element, $('.wrapper'));\r\n this.input = dom.append(wrapper, $(tagName + '.input.empty'));\r\n this.input.setAttribute('autocorrect', 'off');\r\n this.input.setAttribute('autocapitalize', 'off');\r\n this.input.setAttribute('spellcheck', 'false');\r\n this.onfocus(this.input, () => this.element.classList.add('synthetic-focus'));\r\n this.onblur(this.input, () => this.element.classList.remove('synthetic-focus'));\r\n if (this.options.flexibleHeight) {\r\n this.maxHeight = typeof this.options.flexibleMaxHeight === 'number' ? this.options.flexibleMaxHeight : Number.POSITIVE_INFINITY;\r\n this.mirror = dom.append(wrapper, $('div.mirror'));\r\n this.mirror.innerText = '\\u00a0';\r\n this.scrollableElement = new ScrollableElement(this.element, { vertical: 1 /* Auto */ });\r\n if (this.options.flexibleWidth) {\r\n this.input.setAttribute('wrap', 'off');\r\n this.mirror.style.whiteSpace = 'pre';\r\n this.mirror.style.wordWrap = 'initial';\r\n }\r\n dom.append(container, this.scrollableElement.getDomNode());\r\n this._register(this.scrollableElement);\r\n // from ScrollableElement to DOM\r\n this._register(this.scrollableElement.onScroll(e => this.input.scrollTop = e.scrollTop));\r\n const onSelectionChange = Event.filter(domEvent(document, 'selectionchange'), () => {\r\n const selection = document.getSelection();\r\n return (selection === null || selection === void 0 ? void 0 : selection.anchorNode) === wrapper;\r\n });\r\n // from DOM to ScrollableElement\r\n this._register(onSelectionChange(this.updateScrollDimensions, this));\r\n this._register(this.onDidHeightChange(this.updateScrollDimensions, this));\r\n }\r\n else {\r\n this.input.type = this.options.type || 'text';\r\n this.input.setAttribute('wrap', 'off');\r\n }\r\n if (this.ariaLabel) {\r\n this.input.setAttribute('aria-label', this.ariaLabel);\r\n }\r\n if (this.placeholder) {\r\n this.setPlaceHolder(this.placeholder);\r\n }\r\n this.oninput(this.input, () => this.onValueChange());\r\n this.onblur(this.input, () => this.onBlur());\r\n this.onfocus(this.input, () => this.onFocus());\r\n this.ignoreGesture(this.input);\r\n setTimeout(() => this.updateMirror(), 0);\r\n // Support actions\r\n if (this.options.actions) {\r\n this.actionbar = this._register(new ActionBar(this.element));\r\n this.actionbar.push(this.options.actions, { icon: true, label: false });\r\n }\r\n this.applyStyles();\r\n }\r\n onBlur() {\r\n this._hideMessage();\r\n }\r\n onFocus() {\r\n this._showMessage();\r\n }\r\n setPlaceHolder(placeHolder) {\r\n this.placeholder = placeHolder;\r\n this.input.setAttribute('placeholder', placeHolder);\r\n this.input.title = placeHolder;\r\n }\r\n setAriaLabel(label) {\r\n this.ariaLabel = label;\r\n if (label) {\r\n this.input.setAttribute('aria-label', this.ariaLabel);\r\n }\r\n else {\r\n this.input.removeAttribute('aria-label');\r\n }\r\n }\r\n getAriaLabel() {\r\n return this.ariaLabel;\r\n }\r\n get inputElement() {\r\n return this.input;\r\n }\r\n get value() {\r\n return this.input.value;\r\n }\r\n set value(newValue) {\r\n if (this.input.value !== newValue) {\r\n this.input.value = newValue;\r\n this.onValueChange();\r\n }\r\n }\r\n get height() {\r\n return typeof this.cachedHeight === 'number' ? this.cachedHeight : dom.getTotalHeight(this.element);\r\n }\r\n focus() {\r\n this.input.focus();\r\n }\r\n blur() {\r\n this.input.blur();\r\n }\r\n hasFocus() {\r\n return document.activeElement === this.input;\r\n }\r\n select(range = null) {\r\n this.input.select();\r\n if (range) {\r\n this.input.setSelectionRange(range.start, range.end);\r\n }\r\n }\r\n isSelectionAtEnd() {\r\n return this.input.selectionEnd === this.input.value.length && this.input.selectionStart === this.input.selectionEnd;\r\n }\r\n enable() {\r\n this.input.removeAttribute('disabled');\r\n }\r\n disable() {\r\n this.blur();\r\n this.input.disabled = true;\r\n this._hideMessage();\r\n }\r\n get width() {\r\n return dom.getTotalWidth(this.input);\r\n }\r\n set width(width) {\r\n if (this.options.flexibleHeight && this.options.flexibleWidth) {\r\n // textarea with horizontal scrolling\r\n let horizontalPadding = 0;\r\n if (this.mirror) {\r\n const paddingLeft = parseFloat(this.mirror.style.paddingLeft || '') || 0;\r\n const paddingRight = parseFloat(this.mirror.style.paddingRight || '') || 0;\r\n horizontalPadding = paddingLeft + paddingRight;\r\n }\r\n this.input.style.width = (width - horizontalPadding) + 'px';\r\n }\r\n else {\r\n this.input.style.width = width + 'px';\r\n }\r\n if (this.mirror) {\r\n this.mirror.style.width = width + 'px';\r\n }\r\n }\r\n set paddingRight(paddingRight) {\r\n if (this.options.flexibleHeight && this.options.flexibleWidth) {\r\n this.input.style.width = `calc(100% - ${paddingRight}px)`;\r\n }\r\n else {\r\n this.input.style.paddingRight = paddingRight + 'px';\r\n }\r\n if (this.mirror) {\r\n this.mirror.style.paddingRight = paddingRight + 'px';\r\n }\r\n }\r\n updateScrollDimensions() {\r\n if (typeof this.cachedContentHeight !== 'number' || typeof this.cachedHeight !== 'number' || !this.scrollableElement) {\r\n return;\r\n }\r\n const scrollHeight = this.cachedContentHeight;\r\n const height = this.cachedHeight;\r\n const scrollTop = this.input.scrollTop;\r\n this.scrollableElement.setScrollDimensions({ scrollHeight, height });\r\n this.scrollableElement.setScrollPosition({ scrollTop });\r\n }\r\n showMessage(message, force) {\r\n this.message = message;\r\n this.element.classList.remove('idle');\r\n this.element.classList.remove('info');\r\n this.element.classList.remove('warning');\r\n this.element.classList.remove('error');\r\n this.element.classList.add(this.classForType(message.type));\r\n const styles = this.stylesForType(this.message.type);\r\n this.element.style.border = styles.border ? `1px solid ${styles.border}` : '';\r\n if (this.hasFocus() || force) {\r\n this._showMessage();\r\n }\r\n }\r\n hideMessage() {\r\n this.message = null;\r\n this.element.classList.remove('info');\r\n this.element.classList.remove('warning');\r\n this.element.classList.remove('error');\r\n this.element.classList.add('idle');\r\n this._hideMessage();\r\n this.applyStyles();\r\n }\r\n validate() {\r\n let errorMsg = null;\r\n if (this.validation) {\r\n errorMsg = this.validation(this.value);\r\n if (errorMsg) {\r\n this.inputElement.setAttribute('aria-invalid', 'true');\r\n this.showMessage(errorMsg);\r\n }\r\n else if (this.inputElement.hasAttribute('aria-invalid')) {\r\n this.inputElement.removeAttribute('aria-invalid');\r\n this.hideMessage();\r\n }\r\n }\r\n return !errorMsg;\r\n }\r\n stylesForType(type) {\r\n switch (type) {\r\n case 1 /* INFO */: return { border: this.inputValidationInfoBorder, background: this.inputValidationInfoBackground, foreground: this.inputValidationInfoForeground };\r\n case 2 /* WARNING */: return { border: this.inputValidationWarningBorder, background: this.inputValidationWarningBackground, foreground: this.inputValidationWarningForeground };\r\n default: return { border: this.inputValidationErrorBorder, background: this.inputValidationErrorBackground, foreground: this.inputValidationErrorForeground };\r\n }\r\n }\r\n classForType(type) {\r\n switch (type) {\r\n case 1 /* INFO */: return 'info';\r\n case 2 /* WARNING */: return 'warning';\r\n default: return 'error';\r\n }\r\n }\r\n _showMessage() {\r\n if (!this.contextViewProvider || !this.message) {\r\n return;\r\n }\r\n let div;\r\n let layout = () => div.style.width = dom.getTotalWidth(this.element) + 'px';\r\n this.contextViewProvider.showContextView({\r\n getAnchor: () => this.element,\r\n anchorAlignment: 1 /* RIGHT */,\r\n render: (container) => {\r\n if (!this.message) {\r\n return null;\r\n }\r\n div = dom.append(container, $('.monaco-inputbox-container'));\r\n layout();\r\n const renderOptions = {\r\n inline: true,\r\n className: 'monaco-inputbox-message'\r\n };\r\n const spanElement = (this.message.formatContent\r\n ? renderFormattedText(this.message.content, renderOptions)\r\n : renderText(this.message.content, renderOptions));\r\n spanElement.classList.add(this.classForType(this.message.type));\r\n const styles = this.stylesForType(this.message.type);\r\n spanElement.style.backgroundColor = styles.background ? styles.background.toString() : '';\r\n spanElement.style.color = styles.foreground ? styles.foreground.toString() : '';\r\n spanElement.style.border = styles.border ? `1px solid ${styles.border}` : '';\r\n dom.append(div, spanElement);\r\n return null;\r\n },\r\n onHide: () => {\r\n this.state = 'closed';\r\n },\r\n layout: layout\r\n });\r\n // ARIA Support\r\n let alertText;\r\n if (this.message.type === 3 /* ERROR */) {\r\n alertText = nls.localize('alertErrorMessage', \"Error: {0}\", this.message.content);\r\n }\r\n else if (this.message.type === 2 /* WARNING */) {\r\n alertText = nls.localize('alertWarningMessage', \"Warning: {0}\", this.message.content);\r\n }\r\n else {\r\n alertText = nls.localize('alertInfoMessage', \"Info: {0}\", this.message.content);\r\n }\r\n aria.alert(alertText);\r\n this.state = 'open';\r\n }\r\n _hideMessage() {\r\n if (!this.contextViewProvider) {\r\n return;\r\n }\r\n if (this.state === 'open') {\r\n this.contextViewProvider.hideContextView();\r\n }\r\n this.state = 'idle';\r\n }\r\n onValueChange() {\r\n this._onDidChange.fire(this.value);\r\n this.validate();\r\n this.updateMirror();\r\n this.input.classList.toggle('empty', !this.value);\r\n if (this.state === 'open' && this.contextViewProvider) {\r\n this.contextViewProvider.layout();\r\n }\r\n }\r\n updateMirror() {\r\n if (!this.mirror) {\r\n return;\r\n }\r\n const value = this.value;\r\n const lastCharCode = value.charCodeAt(value.length - 1);\r\n const suffix = lastCharCode === 10 ? ' ' : '';\r\n const mirrorTextContent = value + suffix;\r\n if (mirrorTextContent) {\r\n this.mirror.textContent = value + suffix;\r\n }\r\n else {\r\n this.mirror.innerText = '\\u00a0';\r\n }\r\n this.layout();\r\n }\r\n style(styles) {\r\n this.inputBackground = styles.inputBackground;\r\n this.inputForeground = styles.inputForeground;\r\n this.inputBorder = styles.inputBorder;\r\n this.inputValidationInfoBackground = styles.inputValidationInfoBackground;\r\n this.inputValidationInfoForeground = styles.inputValidationInfoForeground;\r\n this.inputValidationInfoBorder = styles.inputValidationInfoBorder;\r\n this.inputValidationWarningBackground = styles.inputValidationWarningBackground;\r\n this.inputValidationWarningForeground = styles.inputValidationWarningForeground;\r\n this.inputValidationWarningBorder = styles.inputValidationWarningBorder;\r\n this.inputValidationErrorBackground = styles.inputValidationErrorBackground;\r\n this.inputValidationErrorForeground = styles.inputValidationErrorForeground;\r\n this.inputValidationErrorBorder = styles.inputValidationErrorBorder;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n const background = this.inputBackground ? this.inputBackground.toString() : '';\r\n const foreground = this.inputForeground ? this.inputForeground.toString() : '';\r\n const border = this.inputBorder ? this.inputBorder.toString() : '';\r\n this.element.style.backgroundColor = background;\r\n this.element.style.color = foreground;\r\n this.input.style.backgroundColor = 'inherit';\r\n this.input.style.color = foreground;\r\n this.element.style.borderWidth = border ? '1px' : '';\r\n this.element.style.borderStyle = border ? 'solid' : '';\r\n this.element.style.borderColor = border;\r\n }\r\n layout() {\r\n if (!this.mirror) {\r\n return;\r\n }\r\n const previousHeight = this.cachedContentHeight;\r\n this.cachedContentHeight = dom.getTotalHeight(this.mirror);\r\n if (previousHeight !== this.cachedContentHeight) {\r\n this.cachedHeight = Math.min(this.cachedContentHeight, this.maxHeight);\r\n this.input.style.height = this.cachedHeight + 'px';\r\n this._onDidHeightChange.fire(this.cachedContentHeight);\r\n }\r\n }\r\n insertAtCursor(text) {\r\n const inputElement = this.inputElement;\r\n const start = inputElement.selectionStart;\r\n const end = inputElement.selectionEnd;\r\n const content = inputElement.value;\r\n if (start !== null && end !== null) {\r\n this.value = content.substr(0, start) + text + content.substr(end);\r\n inputElement.setSelectionRange(start + 1, start + 1);\r\n this.layout();\r\n }\r\n }\r\n dispose() {\r\n this._hideMessage();\r\n this.message = null;\r\n if (this.actionbar) {\r\n this.actionbar.dispose();\r\n }\r\n super.dispose();\r\n }\r\n}\r\nexport class HistoryInputBox extends InputBox {\r\n constructor(container, contextViewProvider, options) {\r\n super(container, contextViewProvider, options);\r\n this.history = new HistoryNavigator(options.history, 100);\r\n }\r\n addToHistory() {\r\n if (this.value && this.value !== this.getCurrentValue()) {\r\n this.history.add(this.value);\r\n }\r\n }\r\n showNextValue() {\r\n if (!this.history.has(this.value)) {\r\n this.addToHistory();\r\n }\r\n let next = this.getNextValue();\r\n if (next) {\r\n next = next === this.value ? this.getNextValue() : next;\r\n }\r\n if (next) {\r\n this.value = next;\r\n aria.status(this.value);\r\n }\r\n }\r\n showPreviousValue() {\r\n if (!this.history.has(this.value)) {\r\n this.addToHistory();\r\n }\r\n let previous = this.getPreviousValue();\r\n if (previous) {\r\n previous = previous === this.value ? this.getPreviousValue() : previous;\r\n }\r\n if (previous) {\r\n this.value = previous;\r\n aria.status(this.value);\r\n }\r\n }\r\n getCurrentValue() {\r\n let currentValue = this.history.current();\r\n if (!currentValue) {\r\n currentValue = this.history.last();\r\n this.history.next();\r\n }\r\n return currentValue;\r\n }\r\n getPreviousValue() {\r\n return this.history.previous() || this.history.first();\r\n }\r\n getNextValue() {\r\n return this.history.next() || this.history.last();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './keybindingLabel.css';\r\nimport { equals } from '../../../common/objects.js';\r\nimport { UILabelProvider } from '../../../common/keybindingLabels.js';\r\nimport * as dom from '../../dom.js';\r\nimport { localize } from '../../../../nls.js';\r\nconst $ = dom.$;\r\nexport class KeybindingLabel {\r\n constructor(container, os, options) {\r\n this.os = os;\r\n this.options = options;\r\n this.domNode = dom.append(container, $('.monaco-keybinding'));\r\n this.didEverRender = false;\r\n container.appendChild(this.domNode);\r\n }\r\n set(keybinding, matches) {\r\n if (this.didEverRender && this.keybinding === keybinding && KeybindingLabel.areSame(this.matches, matches)) {\r\n return;\r\n }\r\n this.keybinding = keybinding;\r\n this.matches = matches;\r\n this.render();\r\n }\r\n render() {\r\n dom.clearNode(this.domNode);\r\n if (this.keybinding) {\r\n let [firstPart, chordPart] = this.keybinding.getParts();\r\n if (firstPart) {\r\n this.renderPart(this.domNode, firstPart, this.matches ? this.matches.firstPart : null);\r\n }\r\n if (chordPart) {\r\n dom.append(this.domNode, $('span.monaco-keybinding-key-chord-separator', undefined, ' '));\r\n this.renderPart(this.domNode, chordPart, this.matches ? this.matches.chordPart : null);\r\n }\r\n this.domNode.title = this.keybinding.getAriaLabel() || '';\r\n }\r\n else if (this.options && this.options.renderUnboundKeybindings) {\r\n this.renderUnbound(this.domNode);\r\n }\r\n this.didEverRender = true;\r\n }\r\n renderPart(parent, part, match) {\r\n const modifierLabels = UILabelProvider.modifierLabels[this.os];\r\n if (part.ctrlKey) {\r\n this.renderKey(parent, modifierLabels.ctrlKey, Boolean(match === null || match === void 0 ? void 0 : match.ctrlKey), modifierLabels.separator);\r\n }\r\n if (part.shiftKey) {\r\n this.renderKey(parent, modifierLabels.shiftKey, Boolean(match === null || match === void 0 ? void 0 : match.shiftKey), modifierLabels.separator);\r\n }\r\n if (part.altKey) {\r\n this.renderKey(parent, modifierLabels.altKey, Boolean(match === null || match === void 0 ? void 0 : match.altKey), modifierLabels.separator);\r\n }\r\n if (part.metaKey) {\r\n this.renderKey(parent, modifierLabels.metaKey, Boolean(match === null || match === void 0 ? void 0 : match.metaKey), modifierLabels.separator);\r\n }\r\n const keyLabel = part.keyLabel;\r\n if (keyLabel) {\r\n this.renderKey(parent, keyLabel, Boolean(match === null || match === void 0 ? void 0 : match.keyCode), '');\r\n }\r\n }\r\n renderKey(parent, label, highlight, separator) {\r\n dom.append(parent, $('span.monaco-keybinding-key' + (highlight ? '.highlight' : ''), undefined, label));\r\n if (separator) {\r\n dom.append(parent, $('span.monaco-keybinding-key-separator', undefined, separator));\r\n }\r\n }\r\n renderUnbound(parent) {\r\n dom.append(parent, $('span.monaco-keybinding-key', undefined, localize('unbound', \"Unbound\")));\r\n }\r\n static areSame(a, b) {\r\n if (a === b || (!a && !b)) {\r\n return true;\r\n }\r\n return !!a && !!b && equals(a.firstPart, b.firstPart) && equals(a.chordPart, b.chordPart);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ListError extends Error {\r\n constructor(user, message) {\r\n super(`ListError [${user}] ${message}`);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './list.css';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { range } from '../../../common/arrays.js';\r\nimport { List } from './listWidget.js';\r\nimport { Event } from '../../../common/event.js';\r\nimport { CancellationTokenSource } from '../../../common/cancellation.js';\r\nclass PagedRenderer {\r\n constructor(renderer, modelProvider) {\r\n this.renderer = renderer;\r\n this.modelProvider = modelProvider;\r\n }\r\n get templateId() { return this.renderer.templateId; }\r\n renderTemplate(container) {\r\n const data = this.renderer.renderTemplate(container);\r\n return { data, disposable: Disposable.None };\r\n }\r\n renderElement(index, _, data, height) {\r\n if (data.disposable) {\r\n data.disposable.dispose();\r\n }\r\n if (!data.data) {\r\n return;\r\n }\r\n const model = this.modelProvider();\r\n if (model.isResolved(index)) {\r\n return this.renderer.renderElement(model.get(index), index, data.data, height);\r\n }\r\n const cts = new CancellationTokenSource();\r\n const promise = model.resolve(index, cts.token);\r\n data.disposable = { dispose: () => cts.cancel() };\r\n this.renderer.renderPlaceholder(index, data.data);\r\n promise.then(entry => this.renderer.renderElement(entry, index, data.data, height));\r\n }\r\n disposeTemplate(data) {\r\n if (data.disposable) {\r\n data.disposable.dispose();\r\n data.disposable = undefined;\r\n }\r\n if (data.data) {\r\n this.renderer.disposeTemplate(data.data);\r\n data.data = undefined;\r\n }\r\n }\r\n}\r\nclass PagedAccessibilityProvider {\r\n constructor(modelProvider, accessibilityProvider) {\r\n this.modelProvider = modelProvider;\r\n this.accessibilityProvider = accessibilityProvider;\r\n }\r\n getWidgetAriaLabel() {\r\n return this.accessibilityProvider.getWidgetAriaLabel();\r\n }\r\n getAriaLabel(index) {\r\n const model = this.modelProvider();\r\n if (!model.isResolved(index)) {\r\n return null;\r\n }\r\n return this.accessibilityProvider.getAriaLabel(model.get(index));\r\n }\r\n}\r\nfunction fromPagedListOptions(modelProvider, options) {\r\n return Object.assign(Object.assign({}, options), { accessibilityProvider: options.accessibilityProvider && new PagedAccessibilityProvider(modelProvider, options.accessibilityProvider) });\r\n}\r\nexport class PagedList {\r\n constructor(user, container, virtualDelegate, renderers, options = {}) {\r\n const modelProvider = () => this.model;\r\n const pagedRenderers = renderers.map(r => new PagedRenderer(r, modelProvider));\r\n this.list = new List(user, container, virtualDelegate, pagedRenderers, fromPagedListOptions(modelProvider, options));\r\n }\r\n updateOptions(options) {\r\n this.list.updateOptions(options);\r\n }\r\n getHTMLElement() {\r\n return this.list.getHTMLElement();\r\n }\r\n get onDidFocus() {\r\n return this.list.onDidFocus;\r\n }\r\n get onDidDispose() {\r\n return this.list.onDidDispose;\r\n }\r\n get onMouseDblClick() {\r\n return Event.map(this.list.onMouseDblClick, ({ element, index, browserEvent }) => ({ element: element === undefined ? undefined : this._model.get(element), index, browserEvent }));\r\n }\r\n get onPointer() {\r\n return Event.map(this.list.onPointer, ({ element, index, browserEvent }) => ({ element: element === undefined ? undefined : this._model.get(element), index, browserEvent }));\r\n }\r\n get onDidChangeFocus() {\r\n return Event.map(this.list.onDidChangeFocus, ({ elements, indexes, browserEvent }) => ({ elements: elements.map(e => this._model.get(e)), indexes, browserEvent }));\r\n }\r\n get onDidChangeSelection() {\r\n return Event.map(this.list.onDidChangeSelection, ({ elements, indexes, browserEvent }) => ({ elements: elements.map(e => this._model.get(e)), indexes, browserEvent }));\r\n }\r\n get model() {\r\n return this._model;\r\n }\r\n set model(model) {\r\n this._model = model;\r\n this.list.splice(0, this.list.length, range(model.length));\r\n }\r\n getFocus() {\r\n return this.list.getFocus();\r\n }\r\n setSelection(indexes, browserEvent) {\r\n this.list.setSelection(indexes, browserEvent);\r\n }\r\n getSelection() {\r\n return this.list.getSelection();\r\n }\r\n style(styles) {\r\n this.list.style(styles);\r\n }\r\n dispose() {\r\n this.list.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { getOrDefault } from '../../../common/objects.js';\r\nimport { dispose, Disposable, toDisposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { Gesture, EventType as TouchEventType } from '../../touch.js';\r\nimport * as DOM from '../../dom.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport { domEvent } from '../../event.js';\r\nimport { SmoothScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { Scrollable } from '../../../common/scrollable.js';\r\nimport { RangeMap, shift } from './rangeMap.js';\r\nimport { RowCache } from './rowCache.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nimport { Range } from '../../../common/range.js';\r\nimport { equals, distinct } from '../../../common/arrays.js';\r\nimport { DataTransfers, StaticDND } from '../../dnd.js';\r\nimport { disposableTimeout, Delayer } from '../../../common/async.js';\r\nimport { isFirefox } from '../../browser.js';\r\nconst DefaultOptions = {\r\n useShadows: true,\r\n verticalScrollMode: 1 /* Auto */,\r\n setRowLineHeight: true,\r\n setRowHeight: true,\r\n supportDynamicHeights: false,\r\n dnd: {\r\n getDragElements(e) { return [e]; },\r\n getDragURI() { return null; },\r\n onDragStart() { },\r\n onDragOver() { return false; },\r\n drop() { }\r\n },\r\n horizontalScrolling: false,\r\n transformOptimization: true\r\n};\r\nexport class ElementsDragAndDropData {\r\n constructor(elements) {\r\n this.elements = elements;\r\n }\r\n update() { }\r\n getData() {\r\n return this.elements;\r\n }\r\n}\r\nexport class ExternalElementsDragAndDropData {\r\n constructor(elements) {\r\n this.elements = elements;\r\n }\r\n update() { }\r\n getData() {\r\n return this.elements;\r\n }\r\n}\r\nexport class NativeDragAndDropData {\r\n constructor() {\r\n this.types = [];\r\n this.files = [];\r\n }\r\n update(dataTransfer) {\r\n if (dataTransfer.types) {\r\n this.types.splice(0, this.types.length, ...dataTransfer.types);\r\n }\r\n if (dataTransfer.files) {\r\n this.files.splice(0, this.files.length);\r\n for (let i = 0; i < dataTransfer.files.length; i++) {\r\n const file = dataTransfer.files.item(i);\r\n if (file && (file.size || file.type)) {\r\n this.files.push(file);\r\n }\r\n }\r\n }\r\n }\r\n getData() {\r\n return {\r\n types: this.types,\r\n files: this.files\r\n };\r\n }\r\n}\r\nfunction equalsDragFeedback(f1, f2) {\r\n if (Array.isArray(f1) && Array.isArray(f2)) {\r\n return equals(f1, f2);\r\n }\r\n return f1 === f2;\r\n}\r\nclass ListViewAccessibilityProvider {\r\n constructor(accessibilityProvider) {\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getSetSize) {\r\n this.getSetSize = accessibilityProvider.getSetSize.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.getSetSize = (e, i, l) => l;\r\n }\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getPosInSet) {\r\n this.getPosInSet = accessibilityProvider.getPosInSet.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.getPosInSet = (e, i) => i + 1;\r\n }\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.getRole) {\r\n this.getRole = accessibilityProvider.getRole.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.getRole = _ => 'listitem';\r\n }\r\n if (accessibilityProvider === null || accessibilityProvider === void 0 ? void 0 : accessibilityProvider.isChecked) {\r\n this.isChecked = accessibilityProvider.isChecked.bind(accessibilityProvider);\r\n }\r\n else {\r\n this.isChecked = _ => undefined;\r\n }\r\n }\r\n}\r\nexport class ListView {\r\n constructor(container, virtualDelegate, renderers, options = DefaultOptions) {\r\n this.virtualDelegate = virtualDelegate;\r\n this.domId = `list_id_${++ListView.InstanceCount}`;\r\n this.renderers = new Map();\r\n this.renderWidth = 0;\r\n this._scrollHeight = 0;\r\n this.scrollableElementUpdateDisposable = null;\r\n this.scrollableElementWidthDelayer = new Delayer(50);\r\n this.splicing = false;\r\n this.dragOverAnimationStopDisposable = Disposable.None;\r\n this.dragOverMouseY = 0;\r\n this.canDrop = false;\r\n this.currentDragFeedbackDisposable = Disposable.None;\r\n this.onDragLeaveTimeout = Disposable.None;\r\n this.disposables = new DisposableStore();\r\n this._onDidChangeContentHeight = new Emitter();\r\n this._horizontalScrolling = false;\r\n if (options.horizontalScrolling && options.supportDynamicHeights) {\r\n throw new Error('Horizontal scrolling and dynamic heights not supported simultaneously');\r\n }\r\n this.items = [];\r\n this.itemId = 0;\r\n this.rangeMap = new RangeMap();\r\n for (const renderer of renderers) {\r\n this.renderers.set(renderer.templateId, renderer);\r\n }\r\n this.cache = this.disposables.add(new RowCache(this.renderers));\r\n this.lastRenderTop = 0;\r\n this.lastRenderHeight = 0;\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = 'monaco-list';\r\n DOM.addClass(this.domNode, this.domId);\r\n this.domNode.tabIndex = 0;\r\n DOM.toggleClass(this.domNode, 'mouse-support', typeof options.mouseSupport === 'boolean' ? options.mouseSupport : true);\r\n this._horizontalScrolling = getOrDefault(options, o => o.horizontalScrolling, DefaultOptions.horizontalScrolling);\r\n DOM.toggleClass(this.domNode, 'horizontal-scrolling', this._horizontalScrolling);\r\n this.additionalScrollHeight = typeof options.additionalScrollHeight === 'undefined' ? 0 : options.additionalScrollHeight;\r\n this.accessibilityProvider = new ListViewAccessibilityProvider(options.accessibilityProvider);\r\n this.rowsContainer = document.createElement('div');\r\n this.rowsContainer.className = 'monaco-list-rows';\r\n const transformOptimization = getOrDefault(options, o => o.transformOptimization, DefaultOptions.transformOptimization);\r\n if (transformOptimization) {\r\n this.rowsContainer.style.transform = 'translate3d(0px, 0px, 0px)';\r\n }\r\n this.disposables.add(Gesture.addTarget(this.rowsContainer));\r\n this.scrollable = new Scrollable(getOrDefault(options, o => o.smoothScrolling, false) ? 125 : 0, cb => DOM.scheduleAtNextAnimationFrame(cb));\r\n this.scrollableElement = this.disposables.add(new SmoothScrollableElement(this.rowsContainer, {\r\n alwaysConsumeMouseWheel: true,\r\n horizontal: 1 /* Auto */,\r\n vertical: getOrDefault(options, o => o.verticalScrollMode, DefaultOptions.verticalScrollMode),\r\n useShadows: getOrDefault(options, o => o.useShadows, DefaultOptions.useShadows),\r\n }, this.scrollable));\r\n this.domNode.appendChild(this.scrollableElement.getDomNode());\r\n container.appendChild(this.domNode);\r\n this.scrollableElement.onScroll(this.onScroll, this, this.disposables);\r\n domEvent(this.rowsContainer, TouchEventType.Change)(this.onTouchChange, this, this.disposables);\r\n // Prevent the monaco-scrollable-element from scrolling\r\n // https://github.com/Microsoft/vscode/issues/44181\r\n domEvent(this.scrollableElement.getDomNode(), 'scroll')(e => e.target.scrollTop = 0, null, this.disposables);\r\n Event.map(domEvent(this.domNode, 'dragover'), e => this.toDragEvent(e))(this.onDragOver, this, this.disposables);\r\n Event.map(domEvent(this.domNode, 'drop'), e => this.toDragEvent(e))(this.onDrop, this, this.disposables);\r\n domEvent(this.domNode, 'dragleave')(this.onDragLeave, this, this.disposables);\r\n domEvent(window, 'dragend')(this.onDragEnd, this, this.disposables);\r\n this.setRowLineHeight = getOrDefault(options, o => o.setRowLineHeight, DefaultOptions.setRowLineHeight);\r\n this.setRowHeight = getOrDefault(options, o => o.setRowHeight, DefaultOptions.setRowHeight);\r\n this.supportDynamicHeights = getOrDefault(options, o => o.supportDynamicHeights, DefaultOptions.supportDynamicHeights);\r\n this.dnd = getOrDefault(options, o => o.dnd, DefaultOptions.dnd);\r\n this.layout();\r\n }\r\n get contentHeight() { return this.rangeMap.size; }\r\n get horizontalScrolling() { return this._horizontalScrolling; }\r\n set horizontalScrolling(value) {\r\n if (value === this._horizontalScrolling) {\r\n return;\r\n }\r\n if (value && this.supportDynamicHeights) {\r\n throw new Error('Horizontal scrolling and dynamic heights not supported simultaneously');\r\n }\r\n this._horizontalScrolling = value;\r\n DOM.toggleClass(this.domNode, 'horizontal-scrolling', this._horizontalScrolling);\r\n if (this._horizontalScrolling) {\r\n for (const item of this.items) {\r\n this.measureItemWidth(item);\r\n }\r\n this.updateScrollWidth();\r\n this.scrollableElement.setScrollDimensions({ width: DOM.getContentWidth(this.domNode) });\r\n this.rowsContainer.style.width = `${Math.max(this.scrollWidth || 0, this.renderWidth)}px`;\r\n }\r\n else {\r\n this.scrollableElementWidthDelayer.cancel();\r\n this.scrollableElement.setScrollDimensions({ width: this.renderWidth, scrollWidth: this.renderWidth });\r\n this.rowsContainer.style.width = '';\r\n }\r\n }\r\n updateOptions(options) {\r\n if (options.additionalScrollHeight !== undefined) {\r\n this.additionalScrollHeight = options.additionalScrollHeight;\r\n }\r\n if (options.smoothScrolling !== undefined) {\r\n this.scrollable.setSmoothScrollDuration(options.smoothScrolling ? 125 : 0);\r\n }\r\n if (options.horizontalScrolling !== undefined) {\r\n this.horizontalScrolling = options.horizontalScrolling;\r\n }\r\n }\r\n splice(start, deleteCount, elements = []) {\r\n if (this.splicing) {\r\n throw new Error('Can\\'t run recursive splices.');\r\n }\r\n this.splicing = true;\r\n try {\r\n return this._splice(start, deleteCount, elements);\r\n }\r\n finally {\r\n this.splicing = false;\r\n this._onDidChangeContentHeight.fire(this.contentHeight);\r\n }\r\n }\r\n _splice(start, deleteCount, elements = []) {\r\n const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\r\n const deleteRange = { start, end: start + deleteCount };\r\n const removeRange = Range.intersect(previousRenderRange, deleteRange);\r\n for (let i = removeRange.start; i < removeRange.end; i++) {\r\n this.removeItemFromDOM(i);\r\n }\r\n const previousRestRange = { start: start + deleteCount, end: this.items.length };\r\n const previousRenderedRestRange = Range.intersect(previousRestRange, previousRenderRange);\r\n const previousUnrenderedRestRanges = Range.relativeComplement(previousRestRange, previousRenderRange);\r\n const inserted = elements.map(element => ({\r\n id: String(this.itemId++),\r\n element,\r\n templateId: this.virtualDelegate.getTemplateId(element),\r\n size: this.virtualDelegate.getHeight(element),\r\n width: undefined,\r\n hasDynamicHeight: !!this.virtualDelegate.hasDynamicHeight && this.virtualDelegate.hasDynamicHeight(element),\r\n lastDynamicHeightWidth: undefined,\r\n row: null,\r\n uri: undefined,\r\n dropTarget: false,\r\n dragStartDisposable: Disposable.None\r\n }));\r\n let deleted;\r\n // TODO@joao: improve this optimization to catch even more cases\r\n if (start === 0 && deleteCount >= this.items.length) {\r\n this.rangeMap = new RangeMap();\r\n this.rangeMap.splice(0, 0, inserted);\r\n this.items = inserted;\r\n deleted = [];\r\n }\r\n else {\r\n this.rangeMap.splice(start, deleteCount, inserted);\r\n deleted = this.items.splice(start, deleteCount, ...inserted);\r\n }\r\n const delta = elements.length - deleteCount;\r\n const renderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\r\n const renderedRestRange = shift(previousRenderedRestRange, delta);\r\n const updateRange = Range.intersect(renderRange, renderedRestRange);\r\n for (let i = updateRange.start; i < updateRange.end; i++) {\r\n this.updateItemInDOM(this.items[i], i);\r\n }\r\n const removeRanges = Range.relativeComplement(renderedRestRange, renderRange);\r\n for (const range of removeRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.removeItemFromDOM(i);\r\n }\r\n }\r\n const unrenderedRestRanges = previousUnrenderedRestRanges.map(r => shift(r, delta));\r\n const elementsRange = { start, end: start + elements.length };\r\n const insertRanges = [elementsRange, ...unrenderedRestRanges].map(r => Range.intersect(renderRange, r));\r\n const beforeElement = this.getNextToLastElement(insertRanges);\r\n for (const range of insertRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.insertItemInDOM(i, beforeElement);\r\n }\r\n }\r\n this.eventuallyUpdateScrollDimensions();\r\n if (this.supportDynamicHeights) {\r\n this._rerender(this.scrollTop, this.renderHeight);\r\n }\r\n return deleted.map(i => i.element);\r\n }\r\n eventuallyUpdateScrollDimensions() {\r\n this._scrollHeight = this.contentHeight;\r\n this.rowsContainer.style.height = `${this._scrollHeight}px`;\r\n if (!this.scrollableElementUpdateDisposable) {\r\n this.scrollableElementUpdateDisposable = DOM.scheduleAtNextAnimationFrame(() => {\r\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\r\n this.updateScrollWidth();\r\n this.scrollableElementUpdateDisposable = null;\r\n });\r\n }\r\n }\r\n eventuallyUpdateScrollWidth() {\r\n if (!this.horizontalScrolling) {\r\n this.scrollableElementWidthDelayer.cancel();\r\n return;\r\n }\r\n this.scrollableElementWidthDelayer.trigger(() => this.updateScrollWidth());\r\n }\r\n updateScrollWidth() {\r\n if (!this.horizontalScrolling) {\r\n return;\r\n }\r\n let scrollWidth = 0;\r\n for (const item of this.items) {\r\n if (typeof item.width !== 'undefined') {\r\n scrollWidth = Math.max(scrollWidth, item.width);\r\n }\r\n }\r\n this.scrollWidth = scrollWidth;\r\n this.scrollableElement.setScrollDimensions({ scrollWidth: scrollWidth === 0 ? 0 : (scrollWidth + 10) });\r\n }\r\n rerender() {\r\n if (!this.supportDynamicHeights) {\r\n return;\r\n }\r\n for (const item of this.items) {\r\n item.lastDynamicHeightWidth = undefined;\r\n }\r\n this._rerender(this.lastRenderTop, this.lastRenderHeight);\r\n }\r\n get length() {\r\n return this.items.length;\r\n }\r\n get renderHeight() {\r\n const scrollDimensions = this.scrollableElement.getScrollDimensions();\r\n return scrollDimensions.height;\r\n }\r\n element(index) {\r\n return this.items[index].element;\r\n }\r\n domElement(index) {\r\n const row = this.items[index].row;\r\n return row && row.domNode;\r\n }\r\n elementHeight(index) {\r\n return this.items[index].size;\r\n }\r\n elementTop(index) {\r\n return this.rangeMap.positionAt(index);\r\n }\r\n indexAt(position) {\r\n return this.rangeMap.indexAt(position);\r\n }\r\n indexAfter(position) {\r\n return this.rangeMap.indexAfter(position);\r\n }\r\n layout(height, width) {\r\n let scrollDimensions = {\r\n height: typeof height === 'number' ? height : DOM.getContentHeight(this.domNode)\r\n };\r\n if (this.scrollableElementUpdateDisposable) {\r\n this.scrollableElementUpdateDisposable.dispose();\r\n this.scrollableElementUpdateDisposable = null;\r\n scrollDimensions.scrollHeight = this.scrollHeight;\r\n }\r\n this.scrollableElement.setScrollDimensions(scrollDimensions);\r\n if (typeof width !== 'undefined') {\r\n this.renderWidth = width;\r\n if (this.supportDynamicHeights) {\r\n this._rerender(this.scrollTop, this.renderHeight);\r\n }\r\n if (this.horizontalScrolling) {\r\n this.scrollableElement.setScrollDimensions({\r\n width: typeof width === 'number' ? width : DOM.getContentWidth(this.domNode)\r\n });\r\n }\r\n }\r\n }\r\n // Render\r\n render(previousRenderRange, renderTop, renderHeight, renderLeft, scrollWidth, updateItemsInDOM = false) {\r\n const renderRange = this.getRenderRange(renderTop, renderHeight);\r\n const rangesToInsert = Range.relativeComplement(renderRange, previousRenderRange);\r\n const rangesToRemove = Range.relativeComplement(previousRenderRange, renderRange);\r\n const beforeElement = this.getNextToLastElement(rangesToInsert);\r\n if (updateItemsInDOM) {\r\n const rangesToUpdate = Range.intersect(previousRenderRange, renderRange);\r\n for (let i = rangesToUpdate.start; i < rangesToUpdate.end; i++) {\r\n this.updateItemInDOM(this.items[i], i);\r\n }\r\n }\r\n for (const range of rangesToInsert) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.insertItemInDOM(i, beforeElement);\r\n }\r\n }\r\n for (const range of rangesToRemove) {\r\n for (let i = range.start; i < range.end; i++) {\r\n this.removeItemFromDOM(i);\r\n }\r\n }\r\n if (renderLeft !== undefined) {\r\n this.rowsContainer.style.left = `-${renderLeft}px`;\r\n }\r\n this.rowsContainer.style.top = `-${renderTop}px`;\r\n if (this.horizontalScrolling && scrollWidth !== undefined) {\r\n this.rowsContainer.style.width = `${Math.max(scrollWidth, this.renderWidth)}px`;\r\n }\r\n this.lastRenderTop = renderTop;\r\n this.lastRenderHeight = renderHeight;\r\n }\r\n // DOM operations\r\n insertItemInDOM(index, beforeElement) {\r\n const item = this.items[index];\r\n if (!item.row) {\r\n item.row = this.cache.alloc(item.templateId);\r\n const role = this.accessibilityProvider.getRole(item.element) || 'listitem';\r\n item.row.domNode.setAttribute('role', role);\r\n const checked = this.accessibilityProvider.isChecked(item.element);\r\n if (typeof checked !== 'undefined') {\r\n item.row.domNode.setAttribute('aria-checked', String(!!checked));\r\n }\r\n }\r\n if (!item.row.domNode.parentElement) {\r\n if (beforeElement) {\r\n this.rowsContainer.insertBefore(item.row.domNode, beforeElement);\r\n }\r\n else {\r\n this.rowsContainer.appendChild(item.row.domNode);\r\n }\r\n }\r\n this.updateItemInDOM(item, index);\r\n const renderer = this.renderers.get(item.templateId);\r\n if (!renderer) {\r\n throw new Error(`No renderer found for template id ${item.templateId}`);\r\n }\r\n if (renderer) {\r\n renderer.renderElement(item.element, index, item.row.templateData, item.size);\r\n }\r\n const uri = this.dnd.getDragURI(item.element);\r\n item.dragStartDisposable.dispose();\r\n item.row.domNode.draggable = !!uri;\r\n if (uri) {\r\n const onDragStart = domEvent(item.row.domNode, 'dragstart');\r\n item.dragStartDisposable = onDragStart(event => this.onDragStart(item.element, uri, event));\r\n }\r\n if (this.horizontalScrolling) {\r\n this.measureItemWidth(item);\r\n this.eventuallyUpdateScrollWidth();\r\n }\r\n }\r\n measureItemWidth(item) {\r\n if (!item.row || !item.row.domNode) {\r\n return;\r\n }\r\n item.row.domNode.style.width = isFirefox ? '-moz-fit-content' : 'fit-content';\r\n item.width = DOM.getContentWidth(item.row.domNode);\r\n const style = window.getComputedStyle(item.row.domNode);\r\n if (style.paddingLeft) {\r\n item.width += parseFloat(style.paddingLeft);\r\n }\r\n if (style.paddingRight) {\r\n item.width += parseFloat(style.paddingRight);\r\n }\r\n item.row.domNode.style.width = '';\r\n }\r\n updateItemInDOM(item, index) {\r\n item.row.domNode.style.top = `${this.elementTop(index)}px`;\r\n if (this.setRowHeight) {\r\n item.row.domNode.style.height = `${item.size}px`;\r\n }\r\n if (this.setRowLineHeight) {\r\n item.row.domNode.style.lineHeight = `${item.size}px`;\r\n }\r\n item.row.domNode.setAttribute('data-index', `${index}`);\r\n item.row.domNode.setAttribute('data-last-element', index === this.length - 1 ? 'true' : 'false');\r\n item.row.domNode.setAttribute('aria-setsize', String(this.accessibilityProvider.getSetSize(item.element, index, this.length)));\r\n item.row.domNode.setAttribute('aria-posinset', String(this.accessibilityProvider.getPosInSet(item.element, index)));\r\n item.row.domNode.setAttribute('id', this.getElementDomId(index));\r\n DOM.toggleClass(item.row.domNode, 'drop-target', item.dropTarget);\r\n }\r\n removeItemFromDOM(index) {\r\n const item = this.items[index];\r\n item.dragStartDisposable.dispose();\r\n const renderer = this.renderers.get(item.templateId);\r\n if (item.row && renderer && renderer.disposeElement) {\r\n renderer.disposeElement(item.element, index, item.row.templateData, item.size);\r\n }\r\n this.cache.release(item.row);\r\n item.row = null;\r\n if (this.horizontalScrolling) {\r\n this.eventuallyUpdateScrollWidth();\r\n }\r\n }\r\n getScrollTop() {\r\n const scrollPosition = this.scrollableElement.getScrollPosition();\r\n return scrollPosition.scrollTop;\r\n }\r\n setScrollTop(scrollTop) {\r\n if (this.scrollableElementUpdateDisposable) {\r\n this.scrollableElementUpdateDisposable.dispose();\r\n this.scrollableElementUpdateDisposable = null;\r\n this.scrollableElement.setScrollDimensions({ scrollHeight: this.scrollHeight });\r\n }\r\n this.scrollableElement.setScrollPosition({ scrollTop });\r\n }\r\n get scrollTop() {\r\n return this.getScrollTop();\r\n }\r\n set scrollTop(scrollTop) {\r\n this.setScrollTop(scrollTop);\r\n }\r\n get scrollHeight() {\r\n return this._scrollHeight + (this.horizontalScrolling ? 10 : 0) + this.additionalScrollHeight;\r\n }\r\n // Events\r\n get onMouseClick() { return Event.map(domEvent(this.domNode, 'click'), e => this.toMouseEvent(e)); }\r\n get onMouseDblClick() { return Event.map(domEvent(this.domNode, 'dblclick'), e => this.toMouseEvent(e)); }\r\n get onMouseMiddleClick() { return Event.filter(Event.map(domEvent(this.domNode, 'auxclick'), e => this.toMouseEvent(e)), e => e.browserEvent.button === 1); }\r\n get onMouseDown() { return Event.map(domEvent(this.domNode, 'mousedown'), e => this.toMouseEvent(e)); }\r\n get onContextMenu() { return Event.map(domEvent(this.domNode, 'contextmenu'), e => this.toMouseEvent(e)); }\r\n get onTouchStart() { return Event.map(domEvent(this.domNode, 'touchstart'), e => this.toTouchEvent(e)); }\r\n get onTap() { return Event.map(domEvent(this.rowsContainer, TouchEventType.Tap), e => this.toGestureEvent(e)); }\r\n toMouseEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n toTouchEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n toGestureEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.initialTarget || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n toDragEvent(browserEvent) {\r\n const index = this.getItemIndexFromEventTarget(browserEvent.target || null);\r\n const item = typeof index === 'undefined' ? undefined : this.items[index];\r\n const element = item && item.element;\r\n return { browserEvent, index, element };\r\n }\r\n onScroll(e) {\r\n try {\r\n const previousRenderRange = this.getRenderRange(this.lastRenderTop, this.lastRenderHeight);\r\n this.render(previousRenderRange, e.scrollTop, e.height, e.scrollLeft, e.scrollWidth);\r\n if (this.supportDynamicHeights) {\r\n this._rerender(e.scrollTop, e.height);\r\n }\r\n }\r\n catch (err) {\r\n console.error('Got bad scroll event:', e);\r\n throw err;\r\n }\r\n }\r\n onTouchChange(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.scrollTop -= event.translationY;\r\n }\r\n // DND\r\n onDragStart(element, uri, event) {\r\n if (!event.dataTransfer) {\r\n return;\r\n }\r\n const elements = this.dnd.getDragElements(element);\r\n event.dataTransfer.effectAllowed = 'copyMove';\r\n event.dataTransfer.setData(DataTransfers.RESOURCES, JSON.stringify([uri]));\r\n if (event.dataTransfer.setDragImage) {\r\n let label;\r\n if (this.dnd.getDragLabel) {\r\n label = this.dnd.getDragLabel(elements, event);\r\n }\r\n if (typeof label === 'undefined') {\r\n label = String(elements.length);\r\n }\r\n const dragImage = DOM.$('.monaco-drag-image');\r\n dragImage.textContent = label;\r\n document.body.appendChild(dragImage);\r\n event.dataTransfer.setDragImage(dragImage, -10, -10);\r\n setTimeout(() => document.body.removeChild(dragImage), 0);\r\n }\r\n this.currentDragData = new ElementsDragAndDropData(elements);\r\n StaticDND.CurrentDragAndDropData = new ExternalElementsDragAndDropData(elements);\r\n if (this.dnd.onDragStart) {\r\n this.dnd.onDragStart(this.currentDragData, event);\r\n }\r\n }\r\n onDragOver(event) {\r\n event.browserEvent.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n this.onDragLeaveTimeout.dispose();\r\n if (StaticDND.CurrentDragAndDropData && StaticDND.CurrentDragAndDropData.getData() === 'vscode-ui') {\r\n return false;\r\n }\r\n this.setupDragAndDropScrollTopAnimation(event.browserEvent);\r\n if (!event.browserEvent.dataTransfer) {\r\n return false;\r\n }\r\n // Drag over from outside\r\n if (!this.currentDragData) {\r\n if (StaticDND.CurrentDragAndDropData) {\r\n // Drag over from another list\r\n this.currentDragData = StaticDND.CurrentDragAndDropData;\r\n }\r\n else {\r\n // Drag over from the desktop\r\n if (!event.browserEvent.dataTransfer.types) {\r\n return false;\r\n }\r\n this.currentDragData = new NativeDragAndDropData();\r\n }\r\n }\r\n const result = this.dnd.onDragOver(this.currentDragData, event.element, event.index, event.browserEvent);\r\n this.canDrop = typeof result === 'boolean' ? result : result.accept;\r\n if (!this.canDrop) {\r\n this.currentDragFeedback = undefined;\r\n this.currentDragFeedbackDisposable.dispose();\r\n return false;\r\n }\r\n event.browserEvent.dataTransfer.dropEffect = (typeof result !== 'boolean' && result.effect === 0 /* Copy */) ? 'copy' : 'move';\r\n let feedback;\r\n if (typeof result !== 'boolean' && result.feedback) {\r\n feedback = result.feedback;\r\n }\r\n else {\r\n if (typeof event.index === 'undefined') {\r\n feedback = [-1];\r\n }\r\n else {\r\n feedback = [event.index];\r\n }\r\n }\r\n // sanitize feedback list\r\n feedback = distinct(feedback).filter(i => i >= -1 && i < this.length).sort((a, b) => a - b);\r\n feedback = feedback[0] === -1 ? [-1] : feedback;\r\n if (equalsDragFeedback(this.currentDragFeedback, feedback)) {\r\n return true;\r\n }\r\n this.currentDragFeedback = feedback;\r\n this.currentDragFeedbackDisposable.dispose();\r\n if (feedback[0] === -1) { // entire list feedback\r\n DOM.addClass(this.domNode, 'drop-target');\r\n DOM.addClass(this.rowsContainer, 'drop-target');\r\n this.currentDragFeedbackDisposable = toDisposable(() => {\r\n DOM.removeClass(this.domNode, 'drop-target');\r\n DOM.removeClass(this.rowsContainer, 'drop-target');\r\n });\r\n }\r\n else {\r\n for (const index of feedback) {\r\n const item = this.items[index];\r\n item.dropTarget = true;\r\n if (item.row && item.row.domNode) {\r\n DOM.addClass(item.row.domNode, 'drop-target');\r\n }\r\n }\r\n this.currentDragFeedbackDisposable = toDisposable(() => {\r\n for (const index of feedback) {\r\n const item = this.items[index];\r\n item.dropTarget = false;\r\n if (item.row && item.row.domNode) {\r\n DOM.removeClass(item.row.domNode, 'drop-target');\r\n }\r\n }\r\n });\r\n }\r\n return true;\r\n }\r\n onDragLeave() {\r\n this.onDragLeaveTimeout.dispose();\r\n this.onDragLeaveTimeout = disposableTimeout(() => this.clearDragOverFeedback(), 100);\r\n }\r\n onDrop(event) {\r\n if (!this.canDrop) {\r\n return;\r\n }\r\n const dragData = this.currentDragData;\r\n this.teardownDragAndDropScrollTopAnimation();\r\n this.clearDragOverFeedback();\r\n this.currentDragData = undefined;\r\n StaticDND.CurrentDragAndDropData = undefined;\r\n if (!dragData || !event.browserEvent.dataTransfer) {\r\n return;\r\n }\r\n event.browserEvent.preventDefault();\r\n dragData.update(event.browserEvent.dataTransfer);\r\n this.dnd.drop(dragData, event.element, event.index, event.browserEvent);\r\n }\r\n onDragEnd(event) {\r\n this.canDrop = false;\r\n this.teardownDragAndDropScrollTopAnimation();\r\n this.clearDragOverFeedback();\r\n this.currentDragData = undefined;\r\n StaticDND.CurrentDragAndDropData = undefined;\r\n if (this.dnd.onDragEnd) {\r\n this.dnd.onDragEnd(event);\r\n }\r\n }\r\n clearDragOverFeedback() {\r\n this.currentDragFeedback = undefined;\r\n this.currentDragFeedbackDisposable.dispose();\r\n this.currentDragFeedbackDisposable = Disposable.None;\r\n }\r\n // DND scroll top animation\r\n setupDragAndDropScrollTopAnimation(event) {\r\n if (!this.dragOverAnimationDisposable) {\r\n const viewTop = DOM.getTopLeftOffset(this.domNode).top;\r\n this.dragOverAnimationDisposable = DOM.animate(this.animateDragAndDropScrollTop.bind(this, viewTop));\r\n }\r\n this.dragOverAnimationStopDisposable.dispose();\r\n this.dragOverAnimationStopDisposable = disposableTimeout(() => {\r\n if (this.dragOverAnimationDisposable) {\r\n this.dragOverAnimationDisposable.dispose();\r\n this.dragOverAnimationDisposable = undefined;\r\n }\r\n }, 1000);\r\n this.dragOverMouseY = event.pageY;\r\n }\r\n animateDragAndDropScrollTop(viewTop) {\r\n if (this.dragOverMouseY === undefined) {\r\n return;\r\n }\r\n const diff = this.dragOverMouseY - viewTop;\r\n const upperLimit = this.renderHeight - 35;\r\n if (diff < 35) {\r\n this.scrollTop += Math.max(-14, Math.floor(0.3 * (diff - 35)));\r\n }\r\n else if (diff > upperLimit) {\r\n this.scrollTop += Math.min(14, Math.floor(0.3 * (diff - upperLimit)));\r\n }\r\n }\r\n teardownDragAndDropScrollTopAnimation() {\r\n this.dragOverAnimationStopDisposable.dispose();\r\n if (this.dragOverAnimationDisposable) {\r\n this.dragOverAnimationDisposable.dispose();\r\n this.dragOverAnimationDisposable = undefined;\r\n }\r\n }\r\n // Util\r\n getItemIndexFromEventTarget(target) {\r\n const scrollableElement = this.scrollableElement.getDomNode();\r\n let element = target;\r\n while (element instanceof HTMLElement && element !== this.rowsContainer && scrollableElement.contains(element)) {\r\n const rawIndex = element.getAttribute('data-index');\r\n if (rawIndex) {\r\n const index = Number(rawIndex);\r\n if (!isNaN(index)) {\r\n return index;\r\n }\r\n }\r\n element = element.parentElement;\r\n }\r\n return undefined;\r\n }\r\n getRenderRange(renderTop, renderHeight) {\r\n return {\r\n start: this.rangeMap.indexAt(renderTop),\r\n end: this.rangeMap.indexAfter(renderTop + renderHeight - 1)\r\n };\r\n }\r\n /**\r\n * Given a stable rendered state, checks every rendered element whether it needs\r\n * to be probed for dynamic height. Adjusts scroll height and top if necessary.\r\n */\r\n _rerender(renderTop, renderHeight) {\r\n const previousRenderRange = this.getRenderRange(renderTop, renderHeight);\r\n // Let's remember the second element's position, this helps in scrolling up\r\n // and preserving a linear upwards scroll movement\r\n let anchorElementIndex;\r\n let anchorElementTopDelta;\r\n if (renderTop === this.elementTop(previousRenderRange.start)) {\r\n anchorElementIndex = previousRenderRange.start;\r\n anchorElementTopDelta = 0;\r\n }\r\n else if (previousRenderRange.end - previousRenderRange.start > 1) {\r\n anchorElementIndex = previousRenderRange.start + 1;\r\n anchorElementTopDelta = this.elementTop(anchorElementIndex) - renderTop;\r\n }\r\n let heightDiff = 0;\r\n while (true) {\r\n const renderRange = this.getRenderRange(renderTop, renderHeight);\r\n let didChange = false;\r\n for (let i = renderRange.start; i < renderRange.end; i++) {\r\n const diff = this.probeDynamicHeight(i);\r\n if (diff !== 0) {\r\n this.rangeMap.splice(i, 1, [this.items[i]]);\r\n }\r\n heightDiff += diff;\r\n didChange = didChange || diff !== 0;\r\n }\r\n if (!didChange) {\r\n if (heightDiff !== 0) {\r\n this.eventuallyUpdateScrollDimensions();\r\n }\r\n const unrenderRanges = Range.relativeComplement(previousRenderRange, renderRange);\r\n for (const range of unrenderRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n if (this.items[i].row) {\r\n this.removeItemFromDOM(i);\r\n }\r\n }\r\n }\r\n const renderRanges = Range.relativeComplement(renderRange, previousRenderRange);\r\n for (const range of renderRanges) {\r\n for (let i = range.start; i < range.end; i++) {\r\n const afterIndex = i + 1;\r\n const beforeRow = afterIndex < this.items.length ? this.items[afterIndex].row : null;\r\n const beforeElement = beforeRow ? beforeRow.domNode : null;\r\n this.insertItemInDOM(i, beforeElement);\r\n }\r\n }\r\n for (let i = renderRange.start; i < renderRange.end; i++) {\r\n if (this.items[i].row) {\r\n this.updateItemInDOM(this.items[i], i);\r\n }\r\n }\r\n if (typeof anchorElementIndex === 'number') {\r\n this.scrollTop = this.elementTop(anchorElementIndex) - anchorElementTopDelta;\r\n }\r\n this._onDidChangeContentHeight.fire(this.contentHeight);\r\n return;\r\n }\r\n }\r\n }\r\n probeDynamicHeight(index) {\r\n const item = this.items[index];\r\n if (!item.hasDynamicHeight || item.lastDynamicHeightWidth === this.renderWidth) {\r\n return 0;\r\n }\r\n if (!!this.virtualDelegate.hasDynamicHeight && !this.virtualDelegate.hasDynamicHeight(item.element)) {\r\n return 0;\r\n }\r\n const size = item.size;\r\n if (!this.setRowHeight && item.row && item.row.domNode) {\r\n let newSize = item.row.domNode.offsetHeight;\r\n item.size = newSize;\r\n item.lastDynamicHeightWidth = this.renderWidth;\r\n return newSize - size;\r\n }\r\n const row = this.cache.alloc(item.templateId);\r\n row.domNode.style.height = '';\r\n this.rowsContainer.appendChild(row.domNode);\r\n const renderer = this.renderers.get(item.templateId);\r\n if (renderer) {\r\n renderer.renderElement(item.element, index, row.templateData, undefined);\r\n if (renderer.disposeElement) {\r\n renderer.disposeElement(item.element, index, row.templateData, undefined);\r\n }\r\n }\r\n item.size = row.domNode.offsetHeight;\r\n if (this.virtualDelegate.setDynamicHeight) {\r\n this.virtualDelegate.setDynamicHeight(item.element, item.size);\r\n }\r\n item.lastDynamicHeightWidth = this.renderWidth;\r\n this.rowsContainer.removeChild(row.domNode);\r\n this.cache.release(row);\r\n return item.size - size;\r\n }\r\n getNextToLastElement(ranges) {\r\n const lastRange = ranges[ranges.length - 1];\r\n if (!lastRange) {\r\n return null;\r\n }\r\n const nextToLastItem = this.items[lastRange.end];\r\n if (!nextToLastItem) {\r\n return null;\r\n }\r\n if (!nextToLastItem.row) {\r\n return null;\r\n }\r\n return nextToLastItem.row.domNode;\r\n }\r\n getElementDomId(index) {\r\n return `${this.domId}_${index}`;\r\n }\r\n // Dispose\r\n dispose() {\r\n if (this.items) {\r\n for (const item of this.items) {\r\n if (item.row) {\r\n const renderer = this.renderers.get(item.row.templateId);\r\n if (renderer) {\r\n renderer.disposeTemplate(item.row.templateData);\r\n }\r\n }\r\n }\r\n this.items = [];\r\n }\r\n if (this.domNode && this.domNode.parentNode) {\r\n this.domNode.parentNode.removeChild(this.domNode);\r\n }\r\n dispose(this.disposables);\r\n }\r\n}\r\nListView.InstanceCount = 0;\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseClick\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseDblClick\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseMiddleClick\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onMouseDown\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onContextMenu\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onTouchStart\", null);\r\n__decorate([\r\n memoize\r\n], ListView.prototype, \"onTap\", null);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport './list.css';\r\nimport { dispose, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { isNumber } from '../../../common/types.js';\r\nimport { range, firstIndex, binarySearch } from '../../../common/arrays.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nimport * as DOM from '../../dom.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { Gesture } from '../../touch.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { Event, Emitter, EventBufferer } from '../../../common/event.js';\r\nimport { domEvent } from '../../event.js';\r\nimport { ListError } from './list.js';\r\nimport { ListView } from './listView.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { CombinedSpliceable } from './splice.js';\r\nimport { clamp } from '../../../common/numbers.js';\r\nimport { matchesPrefix } from '../../../common/filters.js';\r\nimport { alert } from '../aria/aria.js';\r\nclass TraitRenderer {\r\n constructor(trait) {\r\n this.trait = trait;\r\n this.renderedElements = [];\r\n }\r\n get templateId() {\r\n return `template:${this.trait.trait}`;\r\n }\r\n renderTemplate(container) {\r\n return container;\r\n }\r\n renderElement(element, index, templateData) {\r\n const renderedElementIndex = firstIndex(this.renderedElements, el => el.templateData === templateData);\r\n if (renderedElementIndex >= 0) {\r\n const rendered = this.renderedElements[renderedElementIndex];\r\n this.trait.unrender(templateData);\r\n rendered.index = index;\r\n }\r\n else {\r\n const rendered = { index, templateData };\r\n this.renderedElements.push(rendered);\r\n }\r\n this.trait.renderIndex(index, templateData);\r\n }\r\n splice(start, deleteCount, insertCount) {\r\n const rendered = [];\r\n for (const renderedElement of this.renderedElements) {\r\n if (renderedElement.index < start) {\r\n rendered.push(renderedElement);\r\n }\r\n else if (renderedElement.index >= start + deleteCount) {\r\n rendered.push({\r\n index: renderedElement.index + insertCount - deleteCount,\r\n templateData: renderedElement.templateData\r\n });\r\n }\r\n }\r\n this.renderedElements = rendered;\r\n }\r\n renderIndexes(indexes) {\r\n for (const { index, templateData } of this.renderedElements) {\r\n if (indexes.indexOf(index) > -1) {\r\n this.trait.renderIndex(index, templateData);\r\n }\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n const index = firstIndex(this.renderedElements, el => el.templateData === templateData);\r\n if (index < 0) {\r\n return;\r\n }\r\n this.renderedElements.splice(index, 1);\r\n }\r\n}\r\nclass Trait {\r\n constructor(_trait) {\r\n this._trait = _trait;\r\n this.indexes = [];\r\n this.sortedIndexes = [];\r\n this._onChange = new Emitter();\r\n this.onChange = this._onChange.event;\r\n }\r\n get trait() { return this._trait; }\r\n get renderer() {\r\n return new TraitRenderer(this);\r\n }\r\n splice(start, deleteCount, elements) {\r\n const diff = elements.length - deleteCount;\r\n const end = start + deleteCount;\r\n const indexes = [\r\n ...this.sortedIndexes.filter(i => i < start),\r\n ...elements.map((hasTrait, i) => hasTrait ? i + start : -1).filter(i => i !== -1),\r\n ...this.sortedIndexes.filter(i => i >= end).map(i => i + diff)\r\n ];\r\n this.renderer.splice(start, deleteCount, elements.length);\r\n this._set(indexes, indexes);\r\n }\r\n renderIndex(index, container) {\r\n DOM.toggleClass(container, this._trait, this.contains(index));\r\n }\r\n unrender(container) {\r\n DOM.removeClass(container, this._trait);\r\n }\r\n /**\r\n * Sets the indexes which should have this trait.\r\n *\r\n * @param indexes Indexes which should have this trait.\r\n * @return The old indexes which had this trait.\r\n */\r\n set(indexes, browserEvent) {\r\n return this._set(indexes, [...indexes].sort(numericSort), browserEvent);\r\n }\r\n _set(indexes, sortedIndexes, browserEvent) {\r\n const result = this.indexes;\r\n const sortedResult = this.sortedIndexes;\r\n this.indexes = indexes;\r\n this.sortedIndexes = sortedIndexes;\r\n const toRender = disjunction(sortedResult, indexes);\r\n this.renderer.renderIndexes(toRender);\r\n this._onChange.fire({ indexes, browserEvent });\r\n return result;\r\n }\r\n get() {\r\n return this.indexes;\r\n }\r\n contains(index) {\r\n return binarySearch(this.sortedIndexes, index, numericSort) >= 0;\r\n }\r\n dispose() {\r\n dispose(this._onChange);\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], Trait.prototype, \"renderer\", null);\r\nclass SelectionTrait extends Trait {\r\n constructor(setAriaSelected) {\r\n super('selected');\r\n this.setAriaSelected = setAriaSelected;\r\n }\r\n renderIndex(index, container) {\r\n super.renderIndex(index, container);\r\n if (this.setAriaSelected) {\r\n if (this.contains(index)) {\r\n container.setAttribute('aria-selected', 'true');\r\n }\r\n else {\r\n container.setAttribute('aria-selected', 'false');\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The TraitSpliceable is used as a util class to be able\r\n * to preserve traits across splice calls, given an identity\r\n * provider.\r\n */\r\nclass TraitSpliceable {\r\n constructor(trait, view, identityProvider) {\r\n this.trait = trait;\r\n this.view = view;\r\n this.identityProvider = identityProvider;\r\n }\r\n splice(start, deleteCount, elements) {\r\n if (!this.identityProvider) {\r\n return this.trait.splice(start, deleteCount, elements.map(() => false));\r\n }\r\n const pastElementsWithTrait = this.trait.get().map(i => this.identityProvider.getId(this.view.element(i)).toString());\r\n const elementsWithTrait = elements.map(e => pastElementsWithTrait.indexOf(this.identityProvider.getId(e).toString()) > -1);\r\n this.trait.splice(start, deleteCount, elementsWithTrait);\r\n }\r\n}\r\nexport function isInputElement(e) {\r\n return e.tagName === 'INPUT' || e.tagName === 'TEXTAREA';\r\n}\r\nexport function isMonacoEditor(e) {\r\n if (DOM.hasClass(e, 'monaco-editor')) {\r\n return true;\r\n }\r\n if (DOM.hasClass(e, 'monaco-list')) {\r\n return false;\r\n }\r\n if (!e.parentElement) {\r\n return false;\r\n }\r\n return isMonacoEditor(e.parentElement);\r\n}\r\nclass KeyboardController {\r\n constructor(list, view, options) {\r\n this.list = list;\r\n this.view = view;\r\n this.disposables = new DisposableStore();\r\n const multipleSelectionSupport = options.multipleSelectionSupport !== false;\r\n const onKeyDown = Event.chain(domEvent(view.domNode, 'keydown'))\r\n .filter(e => !isInputElement(e.target))\r\n .map(e => new StandardKeyboardEvent(e));\r\n onKeyDown.filter(e => e.keyCode === 3 /* Enter */).on(this.onEnter, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 16 /* UpArrow */).on(this.onUpArrow, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 18 /* DownArrow */).on(this.onDownArrow, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 11 /* PageUp */).on(this.onPageUpArrow, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 12 /* PageDown */).on(this.onPageDownArrow, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 9 /* Escape */).on(this.onEscape, this, this.disposables);\r\n if (multipleSelectionSupport) {\r\n onKeyDown.filter(e => (platform.isMacintosh ? e.metaKey : e.ctrlKey) && e.keyCode === 31 /* KEY_A */).on(this.onCtrlA, this, this.disposables);\r\n }\r\n }\r\n onEnter(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.setSelection(this.list.getFocus(), e.browserEvent);\r\n }\r\n onUpArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusPrevious(1, false, e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onDownArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusNext(1, false, e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onPageUpArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusPreviousPage(e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onPageDownArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.focusNextPage(e.browserEvent);\r\n this.list.reveal(this.list.getFocus()[0]);\r\n this.view.domNode.focus();\r\n }\r\n onCtrlA(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.setSelection(range(this.list.length), e.browserEvent);\r\n this.view.domNode.focus();\r\n }\r\n onEscape(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.list.setSelection([], e.browserEvent);\r\n this.view.domNode.focus();\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\nvar TypeLabelControllerState;\r\n(function (TypeLabelControllerState) {\r\n TypeLabelControllerState[TypeLabelControllerState[\"Idle\"] = 0] = \"Idle\";\r\n TypeLabelControllerState[TypeLabelControllerState[\"Typing\"] = 1] = \"Typing\";\r\n})(TypeLabelControllerState || (TypeLabelControllerState = {}));\r\nexport const DefaultKeyboardNavigationDelegate = new class {\r\n mightProducePrintableCharacter(event) {\r\n if (event.ctrlKey || event.metaKey || event.altKey) {\r\n return false;\r\n }\r\n return (event.keyCode >= 31 /* KEY_A */ && event.keyCode <= 56 /* KEY_Z */)\r\n || (event.keyCode >= 21 /* KEY_0 */ && event.keyCode <= 30 /* KEY_9 */)\r\n || (event.keyCode >= 93 /* NUMPAD_0 */ && event.keyCode <= 102 /* NUMPAD_9 */)\r\n || (event.keyCode >= 80 /* US_SEMICOLON */ && event.keyCode <= 90 /* US_QUOTE */);\r\n }\r\n};\r\nclass TypeLabelController {\r\n constructor(list, view, keyboardNavigationLabelProvider, delegate) {\r\n this.list = list;\r\n this.view = view;\r\n this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider;\r\n this.delegate = delegate;\r\n this.enabled = false;\r\n this.state = TypeLabelControllerState.Idle;\r\n this.automaticKeyboardNavigation = true;\r\n this.triggered = false;\r\n this.previouslyFocused = -1;\r\n this.enabledDisposables = new DisposableStore();\r\n this.disposables = new DisposableStore();\r\n this.updateOptions(list.options);\r\n }\r\n updateOptions(options) {\r\n const enableKeyboardNavigation = typeof options.enableKeyboardNavigation === 'undefined' ? true : !!options.enableKeyboardNavigation;\r\n if (enableKeyboardNavigation) {\r\n this.enable();\r\n }\r\n else {\r\n this.disable();\r\n }\r\n if (typeof options.automaticKeyboardNavigation !== 'undefined') {\r\n this.automaticKeyboardNavigation = options.automaticKeyboardNavigation;\r\n }\r\n }\r\n enable() {\r\n if (this.enabled) {\r\n return;\r\n }\r\n const onChar = Event.chain(domEvent(this.view.domNode, 'keydown'))\r\n .filter(e => !isInputElement(e.target))\r\n .filter(() => this.automaticKeyboardNavigation || this.triggered)\r\n .map(event => new StandardKeyboardEvent(event))\r\n .filter(e => this.delegate.mightProducePrintableCharacter(e))\r\n .forEach(e => { e.stopPropagation(); e.preventDefault(); })\r\n .map(event => event.browserEvent.key)\r\n .event;\r\n const onClear = Event.debounce(onChar, () => null, 800);\r\n const onInput = Event.reduce(Event.any(onChar, onClear), (r, i) => i === null ? null : ((r || '') + i));\r\n onInput(this.onInput, this, this.enabledDisposables);\r\n onClear(this.onClear, this, this.enabledDisposables);\r\n this.enabled = true;\r\n this.triggered = false;\r\n }\r\n disable() {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n this.enabledDisposables.clear();\r\n this.enabled = false;\r\n this.triggered = false;\r\n }\r\n onClear() {\r\n var _a;\r\n const focus = this.list.getFocus();\r\n if (focus.length > 0 && focus[0] === this.previouslyFocused) {\r\n // List: re-anounce element on typing end since typed keys will interupt aria label of focused element\r\n // Do not announce if there was a focus change at the end to prevent duplication https://github.com/microsoft/vscode/issues/95961\r\n const ariaLabel = (_a = this.list.options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getAriaLabel(this.list.element(focus[0]));\r\n if (ariaLabel) {\r\n alert(ariaLabel);\r\n }\r\n }\r\n this.previouslyFocused = -1;\r\n }\r\n onInput(word) {\r\n if (!word) {\r\n this.state = TypeLabelControllerState.Idle;\r\n this.triggered = false;\r\n return;\r\n }\r\n const focus = this.list.getFocus();\r\n const start = focus.length > 0 ? focus[0] : 0;\r\n const delta = this.state === TypeLabelControllerState.Idle ? 1 : 0;\r\n this.state = TypeLabelControllerState.Typing;\r\n for (let i = 0; i < this.list.length; i++) {\r\n const index = (start + i + delta) % this.list.length;\r\n const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(this.view.element(index));\r\n const labelStr = label && label.toString();\r\n if (typeof labelStr === 'undefined' || matchesPrefix(word, labelStr)) {\r\n this.previouslyFocused = start;\r\n this.list.setFocus([index]);\r\n this.list.reveal(index);\r\n return;\r\n }\r\n }\r\n }\r\n dispose() {\r\n this.disable();\r\n this.enabledDisposables.dispose();\r\n this.disposables.dispose();\r\n }\r\n}\r\nclass DOMFocusController {\r\n constructor(list, view) {\r\n this.list = list;\r\n this.view = view;\r\n this.disposables = new DisposableStore();\r\n const onKeyDown = Event.chain(domEvent(view.domNode, 'keydown'))\r\n .filter(e => !isInputElement(e.target))\r\n .map(e => new StandardKeyboardEvent(e));\r\n onKeyDown.filter(e => e.keyCode === 2 /* Tab */ && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey)\r\n .on(this.onTab, this, this.disposables);\r\n }\r\n onTab(e) {\r\n if (e.target !== this.view.domNode) {\r\n return;\r\n }\r\n const focus = this.list.getFocus();\r\n if (focus.length === 0) {\r\n return;\r\n }\r\n const focusedDomElement = this.view.domElement(focus[0]);\r\n if (!focusedDomElement) {\r\n return;\r\n }\r\n const tabIndexElement = focusedDomElement.querySelector('[tabIndex]');\r\n if (!tabIndexElement || !(tabIndexElement instanceof HTMLElement) || tabIndexElement.tabIndex === -1) {\r\n return;\r\n }\r\n const style = window.getComputedStyle(tabIndexElement);\r\n if (style.visibility === 'hidden' || style.display === 'none') {\r\n return;\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n tabIndexElement.focus();\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\nexport function isSelectionSingleChangeEvent(event) {\r\n return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;\r\n}\r\nexport function isSelectionRangeChangeEvent(event) {\r\n return event.browserEvent.shiftKey;\r\n}\r\nfunction isMouseRightClick(event) {\r\n return event instanceof MouseEvent && event.button === 2;\r\n}\r\nconst DefaultMultipleSelectionController = {\r\n isSelectionSingleChangeEvent,\r\n isSelectionRangeChangeEvent\r\n};\r\nexport class MouseController {\r\n constructor(list) {\r\n this.list = list;\r\n this.disposables = new DisposableStore();\r\n this._onPointer = new Emitter();\r\n this.onPointer = this._onPointer.event;\r\n this.multipleSelectionSupport = !(list.options.multipleSelectionSupport === false);\r\n if (this.multipleSelectionSupport) {\r\n this.multipleSelectionController = list.options.multipleSelectionController || DefaultMultipleSelectionController;\r\n }\r\n this.mouseSupport = typeof list.options.mouseSupport === 'undefined' || !!list.options.mouseSupport;\r\n if (this.mouseSupport) {\r\n list.onMouseDown(this.onMouseDown, this, this.disposables);\r\n list.onContextMenu(this.onContextMenu, this, this.disposables);\r\n list.onMouseDblClick(this.onDoubleClick, this, this.disposables);\r\n list.onTouchStart(this.onMouseDown, this, this.disposables);\r\n this.disposables.add(Gesture.addTarget(list.getHTMLElement()));\r\n }\r\n Event.any(list.onMouseClick, list.onMouseMiddleClick, list.onTap)(this.onViewPointer, this, this.disposables);\r\n }\r\n isSelectionSingleChangeEvent(event) {\r\n if (this.multipleSelectionController) {\r\n return this.multipleSelectionController.isSelectionSingleChangeEvent(event);\r\n }\r\n return platform.isMacintosh ? event.browserEvent.metaKey : event.browserEvent.ctrlKey;\r\n }\r\n isSelectionRangeChangeEvent(event) {\r\n if (this.multipleSelectionController) {\r\n return this.multipleSelectionController.isSelectionRangeChangeEvent(event);\r\n }\r\n return event.browserEvent.shiftKey;\r\n }\r\n isSelectionChangeEvent(event) {\r\n return this.isSelectionSingleChangeEvent(event) || this.isSelectionRangeChangeEvent(event);\r\n }\r\n onMouseDown(e) {\r\n if (isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n if (document.activeElement !== e.browserEvent.target) {\r\n this.list.domFocus();\r\n }\r\n }\r\n onContextMenu(e) {\r\n if (isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n const focus = typeof e.index === 'undefined' ? [] : [e.index];\r\n this.list.setFocus(focus, e.browserEvent);\r\n }\r\n onViewPointer(e) {\r\n if (!this.mouseSupport) {\r\n return;\r\n }\r\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n let reference = this.list.getFocus()[0];\r\n const selection = this.list.getSelection();\r\n reference = reference === undefined ? selection[0] : reference;\r\n const focus = e.index;\r\n if (typeof focus === 'undefined') {\r\n this.list.setFocus([], e.browserEvent);\r\n this.list.setSelection([], e.browserEvent);\r\n return;\r\n }\r\n if (this.multipleSelectionSupport && this.isSelectionRangeChangeEvent(e)) {\r\n return this.changeSelection(e, reference);\r\n }\r\n if (this.multipleSelectionSupport && this.isSelectionChangeEvent(e)) {\r\n return this.changeSelection(e, reference);\r\n }\r\n this.list.setFocus([focus], e.browserEvent);\r\n if (!isMouseRightClick(e.browserEvent)) {\r\n this.list.setSelection([focus], e.browserEvent);\r\n }\r\n this._onPointer.fire(e);\r\n }\r\n onDoubleClick(e) {\r\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n if (this.multipleSelectionSupport && this.isSelectionChangeEvent(e)) {\r\n return;\r\n }\r\n const focus = this.list.getFocus();\r\n this.list.setSelection(focus, e.browserEvent);\r\n }\r\n changeSelection(e, reference) {\r\n const focus = e.index;\r\n if (this.isSelectionRangeChangeEvent(e) && reference !== undefined) {\r\n const min = Math.min(reference, focus);\r\n const max = Math.max(reference, focus);\r\n const rangeSelection = range(min, max + 1);\r\n const selection = this.list.getSelection();\r\n const contiguousRange = getContiguousRangeContaining(disjunction(selection, [reference]), reference);\r\n if (contiguousRange.length === 0) {\r\n return;\r\n }\r\n const newSelection = disjunction(rangeSelection, relativeComplement(selection, contiguousRange));\r\n this.list.setSelection(newSelection, e.browserEvent);\r\n }\r\n else if (this.isSelectionSingleChangeEvent(e)) {\r\n const selection = this.list.getSelection();\r\n const newSelection = selection.filter(i => i !== focus);\r\n this.list.setFocus([focus]);\r\n if (selection.length === newSelection.length) {\r\n this.list.setSelection([...newSelection, focus], e.browserEvent);\r\n }\r\n else {\r\n this.list.setSelection(newSelection, e.browserEvent);\r\n }\r\n }\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\nexport class DefaultStyleController {\r\n constructor(styleElement, selectorSuffix) {\r\n this.styleElement = styleElement;\r\n this.selectorSuffix = selectorSuffix;\r\n }\r\n style(styles) {\r\n const suffix = this.selectorSuffix && `.${this.selectorSuffix}`;\r\n const content = [];\r\n if (styles.listBackground) {\r\n if (styles.listBackground.isOpaque()) {\r\n content.push(`.monaco-list${suffix} .monaco-list-rows { background: ${styles.listBackground}; }`);\r\n }\r\n else if (!platform.isMacintosh) { // subpixel AA doesn't exist in macOS\r\n console.warn(`List with id '${this.selectorSuffix}' was styled with a non-opaque background color. This will break sub-pixel antialiasing.`);\r\n }\r\n }\r\n if (styles.listFocusBackground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { background-color: ${styles.listFocusBackground}; }`);\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused:hover { background-color: ${styles.listFocusBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listFocusForeground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.focused { color: ${styles.listFocusForeground}; }`);\r\n }\r\n if (styles.listActiveSelectionBackground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { background-color: ${styles.listActiveSelectionBackground}; }`);\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected:hover { background-color: ${styles.listActiveSelectionBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listActiveSelectionForeground) {\r\n content.push(`.monaco-list${suffix}:focus .monaco-list-row.selected { color: ${styles.listActiveSelectionForeground}; }`);\r\n }\r\n if (styles.listFocusAndSelectionBackground) {\r\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.selected.focused { background-color: ${styles.listFocusAndSelectionBackground}; }\n\t\t\t`);\r\n }\r\n if (styles.listFocusAndSelectionForeground) {\r\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.selected.focused { color: ${styles.listFocusAndSelectionForeground}; }\n\t\t\t`);\r\n }\r\n if (styles.listInactiveFocusBackground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { background-color: ${styles.listInactiveFocusBackground}; }`);\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused:hover { background-color: ${styles.listInactiveFocusBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listInactiveSelectionBackground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { background-color: ${styles.listInactiveSelectionBackground}; }`);\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected:hover { background-color: ${styles.listInactiveSelectionBackground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (styles.listInactiveSelectionForeground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { color: ${styles.listInactiveSelectionForeground}; }`);\r\n }\r\n if (styles.listHoverBackground) {\r\n content.push(`.monaco-list${suffix}:not(.drop-target) .monaco-list-row:hover:not(.selected):not(.focused) { background-color: ${styles.listHoverBackground}; }`);\r\n }\r\n if (styles.listHoverForeground) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row:hover:not(.selected):not(.focused) { color: ${styles.listHoverForeground}; }`);\r\n }\r\n if (styles.listSelectionOutline) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.selected { outline: 1px dotted ${styles.listSelectionOutline}; outline-offset: -1px; }`);\r\n }\r\n if (styles.listFocusOutline) {\r\n content.push(`\n\t\t\t\t.monaco-drag-image,\n\t\t\t\t.monaco-list${suffix}:focus .monaco-list-row.focused { outline: 1px solid ${styles.listFocusOutline}; outline-offset: -1px; }\n\t\t\t`);\r\n }\r\n if (styles.listInactiveFocusOutline) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row.focused { outline: 1px dotted ${styles.listInactiveFocusOutline}; outline-offset: -1px; }`);\r\n }\r\n if (styles.listHoverOutline) {\r\n content.push(`.monaco-list${suffix} .monaco-list-row:hover { outline: 1px dashed ${styles.listHoverOutline}; outline-offset: -1px; }`);\r\n }\r\n if (styles.listDropBackground) {\r\n content.push(`\n\t\t\t\t.monaco-list${suffix}.drop-target,\n\t\t\t\t.monaco-list${suffix} .monaco-list-rows.drop-target,\n\t\t\t\t.monaco-list${suffix} .monaco-list-row.drop-target { background-color: ${styles.listDropBackground} !important; color: inherit !important; }\n\t\t\t`);\r\n }\r\n if (styles.listFilterWidgetBackground) {\r\n content.push(`.monaco-list-type-filter { background-color: ${styles.listFilterWidgetBackground} }`);\r\n }\r\n if (styles.listFilterWidgetOutline) {\r\n content.push(`.monaco-list-type-filter { border: 1px solid ${styles.listFilterWidgetOutline}; }`);\r\n }\r\n if (styles.listFilterWidgetNoMatchesOutline) {\r\n content.push(`.monaco-list-type-filter.no-matches { border: 1px solid ${styles.listFilterWidgetNoMatchesOutline}; }`);\r\n }\r\n if (styles.listMatchesShadow) {\r\n content.push(`.monaco-list-type-filter { box-shadow: 1px 1px 1px ${styles.listMatchesShadow}; }`);\r\n }\r\n const newStyles = content.join('\\n');\r\n if (newStyles !== this.styleElement.innerHTML) {\r\n this.styleElement.innerHTML = newStyles;\r\n }\r\n }\r\n}\r\nconst defaultStyles = {\r\n listFocusBackground: Color.fromHex('#7FB0D0'),\r\n listActiveSelectionBackground: Color.fromHex('#0E639C'),\r\n listActiveSelectionForeground: Color.fromHex('#FFFFFF'),\r\n listFocusAndSelectionBackground: Color.fromHex('#094771'),\r\n listFocusAndSelectionForeground: Color.fromHex('#FFFFFF'),\r\n listInactiveSelectionBackground: Color.fromHex('#3F3F46'),\r\n listHoverBackground: Color.fromHex('#2A2D2E'),\r\n listDropBackground: Color.fromHex('#383B3D'),\r\n treeIndentGuidesStroke: Color.fromHex('#a9a9a9')\r\n};\r\nconst DefaultOptions = {\r\n keyboardSupport: true,\r\n mouseSupport: true,\r\n multipleSelectionSupport: true,\r\n dnd: {\r\n getDragURI() { return null; },\r\n onDragStart() { },\r\n onDragOver() { return false; },\r\n drop() { }\r\n }\r\n};\r\n// TODO@Joao: move these utils into a SortedArray class\r\nfunction getContiguousRangeContaining(range, value) {\r\n const index = range.indexOf(value);\r\n if (index === -1) {\r\n return [];\r\n }\r\n const result = [];\r\n let i = index - 1;\r\n while (i >= 0 && range[i] === value - (index - i)) {\r\n result.push(range[i--]);\r\n }\r\n result.reverse();\r\n i = index;\r\n while (i < range.length && range[i] === value + (i - index)) {\r\n result.push(range[i++]);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Given two sorted collections of numbers, returns the intersection\r\n * between them (OR).\r\n */\r\nfunction disjunction(one, other) {\r\n const result = [];\r\n let i = 0, j = 0;\r\n while (i < one.length || j < other.length) {\r\n if (i >= one.length) {\r\n result.push(other[j++]);\r\n }\r\n else if (j >= other.length) {\r\n result.push(one[i++]);\r\n }\r\n else if (one[i] === other[j]) {\r\n result.push(one[i]);\r\n i++;\r\n j++;\r\n continue;\r\n }\r\n else if (one[i] < other[j]) {\r\n result.push(one[i++]);\r\n }\r\n else {\r\n result.push(other[j++]);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Given two sorted collections of numbers, returns the relative\r\n * complement between them (XOR).\r\n */\r\nfunction relativeComplement(one, other) {\r\n const result = [];\r\n let i = 0, j = 0;\r\n while (i < one.length || j < other.length) {\r\n if (i >= one.length) {\r\n result.push(other[j++]);\r\n }\r\n else if (j >= other.length) {\r\n result.push(one[i++]);\r\n }\r\n else if (one[i] === other[j]) {\r\n i++;\r\n j++;\r\n continue;\r\n }\r\n else if (one[i] < other[j]) {\r\n result.push(one[i++]);\r\n }\r\n else {\r\n j++;\r\n }\r\n }\r\n return result;\r\n}\r\nconst numericSort = (a, b) => a - b;\r\nclass PipelineRenderer {\r\n constructor(_templateId, renderers) {\r\n this._templateId = _templateId;\r\n this.renderers = renderers;\r\n }\r\n get templateId() {\r\n return this._templateId;\r\n }\r\n renderTemplate(container) {\r\n return this.renderers.map(r => r.renderTemplate(container));\r\n }\r\n renderElement(element, index, templateData, height) {\r\n let i = 0;\r\n for (const renderer of this.renderers) {\r\n renderer.renderElement(element, index, templateData[i++], height);\r\n }\r\n }\r\n disposeElement(element, index, templateData, height) {\r\n let i = 0;\r\n for (const renderer of this.renderers) {\r\n if (renderer.disposeElement) {\r\n renderer.disposeElement(element, index, templateData[i], height);\r\n }\r\n i += 1;\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n let i = 0;\r\n for (const renderer of this.renderers) {\r\n renderer.disposeTemplate(templateData[i++]);\r\n }\r\n }\r\n}\r\nclass AccessibiltyRenderer {\r\n constructor(accessibilityProvider) {\r\n this.accessibilityProvider = accessibilityProvider;\r\n this.templateId = 'a18n';\r\n }\r\n renderTemplate(container) {\r\n return container;\r\n }\r\n renderElement(element, index, container) {\r\n const ariaLabel = this.accessibilityProvider.getAriaLabel(element);\r\n if (ariaLabel) {\r\n container.setAttribute('aria-label', ariaLabel);\r\n }\r\n else {\r\n container.removeAttribute('aria-label');\r\n }\r\n const ariaLevel = this.accessibilityProvider.getAriaLevel && this.accessibilityProvider.getAriaLevel(element);\r\n if (typeof ariaLevel === 'number') {\r\n container.setAttribute('aria-level', `${ariaLevel}`);\r\n }\r\n else {\r\n container.removeAttribute('aria-level');\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n // noop\r\n }\r\n}\r\nclass ListViewDragAndDrop {\r\n constructor(list, dnd) {\r\n this.list = list;\r\n this.dnd = dnd;\r\n }\r\n getDragElements(element) {\r\n const selection = this.list.getSelectedElements();\r\n const elements = selection.indexOf(element) > -1 ? selection : [element];\r\n return elements;\r\n }\r\n getDragURI(element) {\r\n return this.dnd.getDragURI(element);\r\n }\r\n getDragLabel(elements, originalEvent) {\r\n if (this.dnd.getDragLabel) {\r\n return this.dnd.getDragLabel(elements, originalEvent);\r\n }\r\n return undefined;\r\n }\r\n onDragStart(data, originalEvent) {\r\n if (this.dnd.onDragStart) {\r\n this.dnd.onDragStart(data, originalEvent);\r\n }\r\n }\r\n onDragOver(data, targetElement, targetIndex, originalEvent) {\r\n return this.dnd.onDragOver(data, targetElement, targetIndex, originalEvent);\r\n }\r\n onDragEnd(originalEvent) {\r\n if (this.dnd.onDragEnd) {\r\n this.dnd.onDragEnd(originalEvent);\r\n }\r\n }\r\n drop(data, targetElement, targetIndex, originalEvent) {\r\n this.dnd.drop(data, targetElement, targetIndex, originalEvent);\r\n }\r\n}\r\nexport class List {\r\n constructor(user, container, virtualDelegate, renderers, _options = DefaultOptions) {\r\n var _a;\r\n this.user = user;\r\n this._options = _options;\r\n this.eventBufferer = new EventBufferer();\r\n this._ariaLabel = '';\r\n this.disposables = new DisposableStore();\r\n this.didJustPressContextMenuKey = false;\r\n this._onDidDispose = new Emitter();\r\n this.onDidDispose = this._onDidDispose.event;\r\n const role = this._options.accessibilityProvider && this._options.accessibilityProvider.getWidgetRole ? (_a = this._options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getWidgetRole() : 'list';\r\n this.selection = new SelectionTrait(role !== 'listbox');\r\n this.focus = new Trait('focused');\r\n mixin(_options, defaultStyles, false);\r\n const baseRenderers = [this.focus.renderer, this.selection.renderer];\r\n this.accessibilityProvider = _options.accessibilityProvider;\r\n if (this.accessibilityProvider) {\r\n baseRenderers.push(new AccessibiltyRenderer(this.accessibilityProvider));\r\n if (this.accessibilityProvider.onDidChangeActiveDescendant) {\r\n this.accessibilityProvider.onDidChangeActiveDescendant(this.onDidChangeActiveDescendant, this, this.disposables);\r\n }\r\n }\r\n renderers = renderers.map(r => new PipelineRenderer(r.templateId, [...baseRenderers, r]));\r\n const viewOptions = Object.assign(Object.assign({}, _options), { dnd: _options.dnd && new ListViewDragAndDrop(this, _options.dnd) });\r\n this.view = new ListView(container, virtualDelegate, renderers, viewOptions);\r\n this.view.domNode.setAttribute('role', role);\r\n if (_options.styleController) {\r\n this.styleController = _options.styleController(this.view.domId);\r\n }\r\n else {\r\n const styleElement = DOM.createStyleSheet(this.view.domNode);\r\n this.styleController = new DefaultStyleController(styleElement, this.view.domId);\r\n }\r\n this.spliceable = new CombinedSpliceable([\r\n new TraitSpliceable(this.focus, this.view, _options.identityProvider),\r\n new TraitSpliceable(this.selection, this.view, _options.identityProvider),\r\n this.view\r\n ]);\r\n this.disposables.add(this.focus);\r\n this.disposables.add(this.selection);\r\n this.disposables.add(this.view);\r\n this.disposables.add(this._onDidDispose);\r\n this.onDidFocus = Event.map(domEvent(this.view.domNode, 'focus', true), () => null);\r\n this.onDidBlur = Event.map(domEvent(this.view.domNode, 'blur', true), () => null);\r\n this.disposables.add(new DOMFocusController(this, this.view));\r\n if (typeof _options.keyboardSupport !== 'boolean' || _options.keyboardSupport) {\r\n const controller = new KeyboardController(this, this.view, _options);\r\n this.disposables.add(controller);\r\n }\r\n if (_options.keyboardNavigationLabelProvider) {\r\n const delegate = _options.keyboardNavigationDelegate || DefaultKeyboardNavigationDelegate;\r\n this.typeLabelController = new TypeLabelController(this, this.view, _options.keyboardNavigationLabelProvider, delegate);\r\n this.disposables.add(this.typeLabelController);\r\n }\r\n this.mouseController = this.createMouseController(_options);\r\n this.disposables.add(this.mouseController);\r\n this.onDidChangeFocus(this._onFocusChange, this, this.disposables);\r\n this.onDidChangeSelection(this._onSelectionChange, this, this.disposables);\r\n if (this.accessibilityProvider) {\r\n this.ariaLabel = this.accessibilityProvider.getWidgetAriaLabel();\r\n }\r\n if (_options.multipleSelectionSupport) {\r\n this.view.domNode.setAttribute('aria-multiselectable', 'true');\r\n }\r\n }\r\n get onDidChangeFocus() {\r\n return Event.map(this.eventBufferer.wrapEvent(this.focus.onChange), e => this.toListEvent(e));\r\n }\r\n get onDidChangeSelection() {\r\n return Event.map(this.eventBufferer.wrapEvent(this.selection.onChange), e => this.toListEvent(e));\r\n }\r\n get domId() { return this.view.domId; }\r\n get onMouseClick() { return this.view.onMouseClick; }\r\n get onMouseDblClick() { return this.view.onMouseDblClick; }\r\n get onMouseMiddleClick() { return this.view.onMouseMiddleClick; }\r\n get onPointer() { return this.mouseController.onPointer; }\r\n get onMouseDown() { return this.view.onMouseDown; }\r\n get onTouchStart() { return this.view.onTouchStart; }\r\n get onTap() { return this.view.onTap; }\r\n get onContextMenu() {\r\n const fromKeydown = Event.chain(domEvent(this.view.domNode, 'keydown'))\r\n .map(e => new StandardKeyboardEvent(e))\r\n .filter(e => this.didJustPressContextMenuKey = e.keyCode === 58 /* ContextMenu */ || (e.shiftKey && e.keyCode === 68 /* F10 */))\r\n .filter(e => { e.preventDefault(); e.stopPropagation(); return false; })\r\n .event;\r\n const fromKeyup = Event.chain(domEvent(this.view.domNode, 'keyup'))\r\n .filter(() => {\r\n const didJustPressContextMenuKey = this.didJustPressContextMenuKey;\r\n this.didJustPressContextMenuKey = false;\r\n return didJustPressContextMenuKey;\r\n })\r\n .filter(() => this.getFocus().length > 0 && !!this.view.domElement(this.getFocus()[0]))\r\n .map(browserEvent => {\r\n const index = this.getFocus()[0];\r\n const element = this.view.element(index);\r\n const anchor = this.view.domElement(index);\r\n return { index, element, anchor, browserEvent };\r\n })\r\n .event;\r\n const fromMouse = Event.chain(this.view.onContextMenu)\r\n .filter(() => !this.didJustPressContextMenuKey)\r\n .map(({ element, index, browserEvent }) => ({ element, index, anchor: { x: browserEvent.clientX + 1, y: browserEvent.clientY }, browserEvent }))\r\n .event;\r\n return Event.any(fromKeydown, fromKeyup, fromMouse);\r\n }\r\n get onKeyDown() { return domEvent(this.view.domNode, 'keydown'); }\r\n createMouseController(options) {\r\n return new MouseController(this);\r\n }\r\n updateOptions(optionsUpdate = {}) {\r\n this._options = Object.assign(Object.assign({}, this._options), optionsUpdate);\r\n if (this.typeLabelController) {\r\n this.typeLabelController.updateOptions(this._options);\r\n }\r\n this.view.updateOptions(optionsUpdate);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n splice(start, deleteCount, elements = []) {\r\n if (start < 0 || start > this.view.length) {\r\n throw new ListError(this.user, `Invalid start index: ${start}`);\r\n }\r\n if (deleteCount < 0) {\r\n throw new ListError(this.user, `Invalid delete count: ${deleteCount}`);\r\n }\r\n if (deleteCount === 0 && elements.length === 0) {\r\n return;\r\n }\r\n this.eventBufferer.bufferEvents(() => this.spliceable.splice(start, deleteCount, elements));\r\n }\r\n rerender() {\r\n this.view.rerender();\r\n }\r\n element(index) {\r\n return this.view.element(index);\r\n }\r\n get length() {\r\n return this.view.length;\r\n }\r\n get contentHeight() {\r\n return this.view.contentHeight;\r\n }\r\n get scrollTop() {\r\n return this.view.getScrollTop();\r\n }\r\n set scrollTop(scrollTop) {\r\n this.view.setScrollTop(scrollTop);\r\n }\r\n get ariaLabel() {\r\n return this._ariaLabel;\r\n }\r\n set ariaLabel(value) {\r\n this._ariaLabel = value;\r\n this.view.domNode.setAttribute('aria-label', value);\r\n }\r\n domFocus() {\r\n this.view.domNode.focus();\r\n }\r\n layout(height, width) {\r\n this.view.layout(height, width);\r\n }\r\n setSelection(indexes, browserEvent) {\r\n for (const index of indexes) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n }\r\n this.selection.set(indexes, browserEvent);\r\n }\r\n getSelection() {\r\n return this.selection.get();\r\n }\r\n getSelectedElements() {\r\n return this.getSelection().map(i => this.view.element(i));\r\n }\r\n setFocus(indexes, browserEvent) {\r\n for (const index of indexes) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n }\r\n this.focus.set(indexes, browserEvent);\r\n }\r\n focusNext(n = 1, loop = false, browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const focus = this.focus.get();\r\n const index = this.findNextIndex(focus.length > 0 ? focus[0] + n : 0, loop, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n focusPrevious(n = 1, loop = false, browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const focus = this.focus.get();\r\n const index = this.findPreviousIndex(focus.length > 0 ? focus[0] - n : 0, loop, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n focusNextPage(browserEvent, filter) {\r\n let lastPageIndex = this.view.indexAt(this.view.getScrollTop() + this.view.renderHeight);\r\n lastPageIndex = lastPageIndex === 0 ? 0 : lastPageIndex - 1;\r\n const lastPageElement = this.view.element(lastPageIndex);\r\n const currentlyFocusedElement = this.getFocusedElements()[0];\r\n if (currentlyFocusedElement !== lastPageElement) {\r\n const lastGoodPageIndex = this.findPreviousIndex(lastPageIndex, false, filter);\r\n if (lastGoodPageIndex > -1 && currentlyFocusedElement !== this.view.element(lastGoodPageIndex)) {\r\n this.setFocus([lastGoodPageIndex], browserEvent);\r\n }\r\n else {\r\n this.setFocus([lastPageIndex], browserEvent);\r\n }\r\n }\r\n else {\r\n const previousScrollTop = this.view.getScrollTop();\r\n this.view.setScrollTop(previousScrollTop + this.view.renderHeight - this.view.elementHeight(lastPageIndex));\r\n if (this.view.getScrollTop() !== previousScrollTop) {\r\n // Let the scroll event listener run\r\n setTimeout(() => this.focusNextPage(browserEvent, filter), 0);\r\n }\r\n }\r\n }\r\n focusPreviousPage(browserEvent, filter) {\r\n let firstPageIndex;\r\n const scrollTop = this.view.getScrollTop();\r\n if (scrollTop === 0) {\r\n firstPageIndex = this.view.indexAt(scrollTop);\r\n }\r\n else {\r\n firstPageIndex = this.view.indexAfter(scrollTop - 1);\r\n }\r\n const firstPageElement = this.view.element(firstPageIndex);\r\n const currentlyFocusedElement = this.getFocusedElements()[0];\r\n if (currentlyFocusedElement !== firstPageElement) {\r\n const firstGoodPageIndex = this.findNextIndex(firstPageIndex, false, filter);\r\n if (firstGoodPageIndex > -1 && currentlyFocusedElement !== this.view.element(firstGoodPageIndex)) {\r\n this.setFocus([firstGoodPageIndex], browserEvent);\r\n }\r\n else {\r\n this.setFocus([firstPageIndex], browserEvent);\r\n }\r\n }\r\n else {\r\n const previousScrollTop = scrollTop;\r\n this.view.setScrollTop(scrollTop - this.view.renderHeight);\r\n if (this.view.getScrollTop() !== previousScrollTop) {\r\n // Let the scroll event listener run\r\n setTimeout(() => this.focusPreviousPage(browserEvent, filter), 0);\r\n }\r\n }\r\n }\r\n focusLast(browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const index = this.findPreviousIndex(this.length - 1, false, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n focusFirst(browserEvent, filter) {\r\n this.focusNth(0, browserEvent, filter);\r\n }\r\n focusNth(n, browserEvent, filter) {\r\n if (this.length === 0) {\r\n return;\r\n }\r\n const index = this.findNextIndex(n, false, filter);\r\n if (index > -1) {\r\n this.setFocus([index], browserEvent);\r\n }\r\n }\r\n findNextIndex(index, loop = false, filter) {\r\n for (let i = 0; i < this.length; i++) {\r\n if (index >= this.length && !loop) {\r\n return -1;\r\n }\r\n index = index % this.length;\r\n if (!filter || filter(this.element(index))) {\r\n return index;\r\n }\r\n index++;\r\n }\r\n return -1;\r\n }\r\n findPreviousIndex(index, loop = false, filter) {\r\n for (let i = 0; i < this.length; i++) {\r\n if (index < 0 && !loop) {\r\n return -1;\r\n }\r\n index = (this.length + (index % this.length)) % this.length;\r\n if (!filter || filter(this.element(index))) {\r\n return index;\r\n }\r\n index--;\r\n }\r\n return -1;\r\n }\r\n getFocus() {\r\n return this.focus.get();\r\n }\r\n getFocusedElements() {\r\n return this.getFocus().map(i => this.view.element(i));\r\n }\r\n reveal(index, relativeTop) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n const scrollTop = this.view.getScrollTop();\r\n const elementTop = this.view.elementTop(index);\r\n const elementHeight = this.view.elementHeight(index);\r\n if (isNumber(relativeTop)) {\r\n // y = mx + b\r\n const m = elementHeight - this.view.renderHeight;\r\n this.view.setScrollTop(m * clamp(relativeTop, 0, 1) + elementTop);\r\n }\r\n else {\r\n const viewItemBottom = elementTop + elementHeight;\r\n const wrapperBottom = scrollTop + this.view.renderHeight;\r\n if (elementTop < scrollTop && viewItemBottom >= wrapperBottom) {\r\n // The element is already overflowing the viewport, no-op\r\n }\r\n else if (elementTop < scrollTop) {\r\n this.view.setScrollTop(elementTop);\r\n }\r\n else if (viewItemBottom >= wrapperBottom) {\r\n this.view.setScrollTop(viewItemBottom - this.view.renderHeight);\r\n }\r\n }\r\n }\r\n /**\r\n * Returns the relative position of an element rendered in the list.\r\n * Returns `null` if the element isn't *entirely* in the visible viewport.\r\n */\r\n getRelativeTop(index) {\r\n if (index < 0 || index >= this.length) {\r\n throw new ListError(this.user, `Invalid index ${index}`);\r\n }\r\n const scrollTop = this.view.getScrollTop();\r\n const elementTop = this.view.elementTop(index);\r\n const elementHeight = this.view.elementHeight(index);\r\n if (elementTop < scrollTop || elementTop + elementHeight > scrollTop + this.view.renderHeight) {\r\n return null;\r\n }\r\n // y = mx + b\r\n const m = elementHeight - this.view.renderHeight;\r\n return Math.abs((scrollTop - elementTop) / m);\r\n }\r\n getHTMLElement() {\r\n return this.view.domNode;\r\n }\r\n style(styles) {\r\n this.styleController.style(styles);\r\n }\r\n toListEvent({ indexes, browserEvent }) {\r\n return { indexes, elements: indexes.map(i => this.view.element(i)), browserEvent };\r\n }\r\n _onFocusChange() {\r\n const focus = this.focus.get();\r\n DOM.toggleClass(this.view.domNode, 'element-focused', focus.length > 0);\r\n this.onDidChangeActiveDescendant();\r\n }\r\n onDidChangeActiveDescendant() {\r\n var _a;\r\n const focus = this.focus.get();\r\n if (focus.length > 0) {\r\n let id;\r\n if ((_a = this.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.getActiveDescendantId) {\r\n id = this.accessibilityProvider.getActiveDescendantId(this.view.element(focus[0]));\r\n }\r\n this.view.domNode.setAttribute('aria-activedescendant', id || this.view.getElementDomId(focus[0]));\r\n }\r\n else {\r\n this.view.domNode.removeAttribute('aria-activedescendant');\r\n }\r\n }\r\n _onSelectionChange() {\r\n const selection = this.selection.get();\r\n DOM.toggleClass(this.view.domNode, 'selection-none', selection.length === 0);\r\n DOM.toggleClass(this.view.domNode, 'selection-single', selection.length === 1);\r\n DOM.toggleClass(this.view.domNode, 'selection-multiple', selection.length > 1);\r\n }\r\n dispose() {\r\n this._onDidDispose.fire();\r\n this.disposables.dispose();\r\n this._onDidDispose.dispose();\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onDidChangeFocus\", null);\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onDidChangeSelection\", null);\r\n__decorate([\r\n memoize\r\n], List.prototype, \"onContextMenu\", null);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../../common/range.js';\r\n/**\r\n * Returns the intersection between a ranged group and a range.\r\n * Returns `[]` if the intersection is empty.\r\n */\r\nexport function groupIntersect(range, groups) {\r\n const result = [];\r\n for (let r of groups) {\r\n if (range.start >= r.range.end) {\r\n continue;\r\n }\r\n if (range.end < r.range.start) {\r\n break;\r\n }\r\n const intersection = Range.intersect(range, r.range);\r\n if (Range.isEmpty(intersection)) {\r\n continue;\r\n }\r\n result.push({\r\n range: intersection,\r\n size: r.size\r\n });\r\n }\r\n return result;\r\n}\r\n/**\r\n * Shifts a range by that `much`.\r\n */\r\nexport function shift({ start, end }, much) {\r\n return { start: start + much, end: end + much };\r\n}\r\n/**\r\n * Consolidates a collection of ranged groups.\r\n *\r\n * Consolidation is the process of merging consecutive ranged groups\r\n * that share the same `size`.\r\n */\r\nexport function consolidate(groups) {\r\n const result = [];\r\n let previousGroup = null;\r\n for (let group of groups) {\r\n const start = group.range.start;\r\n const end = group.range.end;\r\n const size = group.size;\r\n if (previousGroup && size === previousGroup.size) {\r\n previousGroup.range.end = end;\r\n continue;\r\n }\r\n previousGroup = { range: { start, end }, size };\r\n result.push(previousGroup);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Concatenates several collections of ranged groups into a single\r\n * collection.\r\n */\r\nfunction concat(...groups) {\r\n return consolidate(groups.reduce((r, g) => r.concat(g), []));\r\n}\r\nexport class RangeMap {\r\n constructor() {\r\n this.groups = [];\r\n this._size = 0;\r\n }\r\n splice(index, deleteCount, items = []) {\r\n const diff = items.length - deleteCount;\r\n const before = groupIntersect({ start: 0, end: index }, this.groups);\r\n const after = groupIntersect({ start: index + deleteCount, end: Number.POSITIVE_INFINITY }, this.groups)\r\n .map(g => ({ range: shift(g.range, diff), size: g.size }));\r\n const middle = items.map((item, i) => ({\r\n range: { start: index + i, end: index + i + 1 },\r\n size: item.size\r\n }));\r\n this.groups = concat(before, middle, after);\r\n this._size = this.groups.reduce((t, g) => t + (g.size * (g.range.end - g.range.start)), 0);\r\n }\r\n /**\r\n * Returns the number of items in the range map.\r\n */\r\n get count() {\r\n const len = this.groups.length;\r\n if (!len) {\r\n return 0;\r\n }\r\n return this.groups[len - 1].range.end;\r\n }\r\n /**\r\n * Returns the sum of the sizes of all items in the range map.\r\n */\r\n get size() {\r\n return this._size;\r\n }\r\n /**\r\n * Returns the index of the item at the given position.\r\n */\r\n indexAt(position) {\r\n if (position < 0) {\r\n return -1;\r\n }\r\n let index = 0;\r\n let size = 0;\r\n for (let group of this.groups) {\r\n const count = group.range.end - group.range.start;\r\n const newSize = size + (count * group.size);\r\n if (position < newSize) {\r\n return index + Math.floor((position - size) / group.size);\r\n }\r\n index += count;\r\n size = newSize;\r\n }\r\n return index;\r\n }\r\n /**\r\n * Returns the index of the item right after the item at the\r\n * index of the given position.\r\n */\r\n indexAfter(position) {\r\n return Math.min(this.indexAt(position) + 1, this.count);\r\n }\r\n /**\r\n * Returns the start position of the item at the given index.\r\n */\r\n positionAt(index) {\r\n if (index < 0) {\r\n return -1;\r\n }\r\n let position = 0;\r\n let count = 0;\r\n for (let group of this.groups) {\r\n const groupCount = group.range.end - group.range.start;\r\n const newCount = count + groupCount;\r\n if (index < newCount) {\r\n return position + ((index - count) * group.size);\r\n }\r\n position += groupCount * group.size;\r\n count = newCount;\r\n }\r\n return -1;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { $, removeClass } from '../../dom.js';\r\nfunction removeFromParent(element) {\r\n try {\r\n if (element.parentElement) {\r\n element.parentElement.removeChild(element);\r\n }\r\n }\r\n catch (e) {\r\n // this will throw if this happens due to a blur event, nasty business\r\n }\r\n}\r\nexport class RowCache {\r\n constructor(renderers) {\r\n this.renderers = renderers;\r\n this.cache = new Map();\r\n }\r\n /**\r\n * Returns a row either by creating a new one or reusing\r\n * a previously released row which shares the same templateId.\r\n */\r\n alloc(templateId) {\r\n let result = this.getTemplateCache(templateId).pop();\r\n if (!result) {\r\n const domNode = $('.monaco-list-row');\r\n const renderer = this.getRenderer(templateId);\r\n const templateData = renderer.renderTemplate(domNode);\r\n result = { domNode, templateId, templateData };\r\n }\r\n return result;\r\n }\r\n /**\r\n * Releases the row for eventual reuse.\r\n */\r\n release(row) {\r\n if (!row) {\r\n return;\r\n }\r\n this.releaseRow(row);\r\n }\r\n releaseRow(row) {\r\n const { domNode, templateId } = row;\r\n if (domNode) {\r\n removeClass(domNode, 'scrolling');\r\n removeFromParent(domNode);\r\n }\r\n const cache = this.getTemplateCache(templateId);\r\n cache.push(row);\r\n }\r\n getTemplateCache(templateId) {\r\n let result = this.cache.get(templateId);\r\n if (!result) {\r\n result = [];\r\n this.cache.set(templateId, result);\r\n }\r\n return result;\r\n }\r\n dispose() {\r\n this.cache.forEach((cachedRows, templateId) => {\r\n for (const cachedRow of cachedRows) {\r\n const renderer = this.getRenderer(templateId);\r\n renderer.disposeTemplate(cachedRow.templateData);\r\n cachedRow.domNode = null;\r\n cachedRow.templateData = null;\r\n }\r\n });\r\n this.cache.clear();\r\n }\r\n getRenderer(templateId) {\r\n const renderer = this.renderers.get(templateId);\r\n if (!renderer) {\r\n throw new Error(`No renderer found for ${templateId}`);\r\n }\r\n return renderer;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class CombinedSpliceable {\r\n constructor(spliceables) {\r\n this.spliceables = spliceables;\r\n }\r\n splice(start, deleteCount, elements) {\r\n this.spliceables.forEach(s => s.splice(start, deleteCount, elements));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../../nls.js';\r\nimport * as strings from '../../../common/strings.js';\r\nimport { SubmenuAction, Separator } from '../../../common/actions.js';\r\nimport { ActionBar } from '../actionbar/actionbar.js';\r\nimport { addClass, EventType, EventHelper, removeTabIndexAndUpdateFocus, isAncestor, hasClass, addDisposableListener, removeClass, append, $, addClasses, removeClasses, clearNode, createStyleSheet, isInShadowDOM, getActiveElement } from '../../dom.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { RunOnceScheduler } from '../../../common/async.js';\r\nimport { DisposableStore } from '../../../common/lifecycle.js';\r\nimport { DomScrollableElement } from '../scrollbar/scrollableElement.js';\r\nimport { layout } from '../contextview/contextview.js';\r\nimport { isLinux, isMacintosh } from '../../../common/platform.js';\r\nimport { Codicon, registerIcon, stripCodicons } from '../../../common/codicons.js';\r\nimport { BaseActionViewItem, ActionViewItem } from '../actionbar/actionViewItems.js';\r\nimport { formatRule } from '../codicons/codiconStyles.js';\r\nimport { isFirefox } from '../../browser.js';\r\nimport { StandardMouseEvent } from '../../mouseEvent.js';\r\nexport const MENU_MNEMONIC_REGEX = /\\(&([^\\s&])\\)|(^|[^&])&([^\\s&])/;\r\nexport const MENU_ESCAPED_MNEMONIC_REGEX = /(&)?(&)([^\\s&])/g;\r\nconst menuSelectionIcon = registerIcon('menu-selection', Codicon.check);\r\nconst menuSubmenuIcon = registerIcon('menu-submenu', Codicon.chevronRight);\r\nexport var Direction;\r\n(function (Direction) {\r\n Direction[Direction[\"Right\"] = 0] = \"Right\";\r\n Direction[Direction[\"Left\"] = 1] = \"Left\";\r\n})(Direction || (Direction = {}));\r\nexport class Menu extends ActionBar {\r\n constructor(container, actions, options = {}) {\r\n addClass(container, 'monaco-menu-container');\r\n container.setAttribute('role', 'presentation');\r\n const menuElement = document.createElement('div');\r\n addClass(menuElement, 'monaco-menu');\r\n menuElement.setAttribute('role', 'presentation');\r\n super(menuElement, {\r\n orientation: 2 /* VERTICAL */,\r\n actionViewItemProvider: action => this.doGetActionViewItem(action, options, parentData),\r\n context: options.context,\r\n actionRunner: options.actionRunner,\r\n ariaLabel: options.ariaLabel,\r\n triggerKeys: { keys: [3 /* Enter */, ...(isMacintosh || isLinux ? [10 /* Space */] : [])], keyDown: true }\r\n });\r\n this.menuElement = menuElement;\r\n this.actionsList.setAttribute('role', 'menu');\r\n this.actionsList.tabIndex = 0;\r\n this.menuDisposables = this._register(new DisposableStore());\r\n this.initializeStyleSheet(container);\r\n addDisposableListener(menuElement, EventType.KEY_DOWN, (e) => {\r\n const event = new StandardKeyboardEvent(e);\r\n // Stop tab navigation of menus\r\n if (event.equals(2 /* Tab */)) {\r\n e.preventDefault();\r\n }\r\n });\r\n if (options.enableMnemonics) {\r\n this.menuDisposables.add(addDisposableListener(menuElement, EventType.KEY_DOWN, (e) => {\r\n const key = e.key.toLocaleLowerCase();\r\n if (this.mnemonics.has(key)) {\r\n EventHelper.stop(e, true);\r\n const actions = this.mnemonics.get(key);\r\n if (actions.length === 1) {\r\n if (actions[0] instanceof SubmenuMenuActionViewItem && actions[0].container) {\r\n this.focusItemByElement(actions[0].container);\r\n }\r\n actions[0].onClick(e);\r\n }\r\n if (actions.length > 1) {\r\n const action = actions.shift();\r\n if (action && action.container) {\r\n this.focusItemByElement(action.container);\r\n actions.push(action);\r\n }\r\n this.mnemonics.set(key, actions);\r\n }\r\n }\r\n }));\r\n }\r\n if (isLinux) {\r\n this._register(addDisposableListener(menuElement, EventType.KEY_DOWN, e => {\r\n const event = new StandardKeyboardEvent(e);\r\n if (event.equals(14 /* Home */) || event.equals(11 /* PageUp */)) {\r\n this.focusedItem = this.viewItems.length - 1;\r\n this.focusNext();\r\n EventHelper.stop(e, true);\r\n }\r\n else if (event.equals(13 /* End */) || event.equals(12 /* PageDown */)) {\r\n this.focusedItem = 0;\r\n this.focusPrevious();\r\n EventHelper.stop(e, true);\r\n }\r\n }));\r\n }\r\n this._register(addDisposableListener(this.domNode, EventType.MOUSE_OUT, e => {\r\n let relatedTarget = e.relatedTarget;\r\n if (!isAncestor(relatedTarget, this.domNode)) {\r\n this.focusedItem = undefined;\r\n this.updateFocus();\r\n e.stopPropagation();\r\n }\r\n }));\r\n this._register(addDisposableListener(this.actionsList, EventType.MOUSE_OVER, e => {\r\n let target = e.target;\r\n if (!target || !isAncestor(target, this.actionsList) || target === this.actionsList) {\r\n return;\r\n }\r\n while (target.parentElement !== this.actionsList && target.parentElement !== null) {\r\n target = target.parentElement;\r\n }\r\n if (hasClass(target, 'action-item')) {\r\n const lastFocusedItem = this.focusedItem;\r\n this.setFocusedItem(target);\r\n if (lastFocusedItem !== this.focusedItem) {\r\n this.updateFocus();\r\n }\r\n }\r\n }));\r\n let parentData = {\r\n parent: this\r\n };\r\n this.mnemonics = new Map();\r\n // Scroll Logic\r\n this.scrollableElement = this._register(new DomScrollableElement(menuElement, {\r\n alwaysConsumeMouseWheel: true,\r\n horizontal: 2 /* Hidden */,\r\n vertical: 3 /* Visible */,\r\n verticalScrollbarSize: 7,\r\n handleMouseWheel: true,\r\n useShadows: true\r\n }));\r\n const scrollElement = this.scrollableElement.getDomNode();\r\n scrollElement.style.position = '';\r\n this._register(addDisposableListener(scrollElement, EventType.MOUSE_UP, e => {\r\n // Absorb clicks in menu dead space https://github.com/Microsoft/vscode/issues/63575\r\n // We do this on the scroll element so the scroll bar doesn't dismiss the menu either\r\n e.preventDefault();\r\n }));\r\n menuElement.style.maxHeight = `${Math.max(10, window.innerHeight - container.getBoundingClientRect().top - 35)}px`;\r\n actions = actions.filter(a => {\r\n var _a;\r\n if ((_a = options.submenuIds) === null || _a === void 0 ? void 0 : _a.has(a.id)) {\r\n console.warn(`Found submenu cycle: ${a.id}`);\r\n return false;\r\n }\r\n return true;\r\n });\r\n this.push(actions, { icon: true, label: true, isMenu: true });\r\n container.appendChild(this.scrollableElement.getDomNode());\r\n this.scrollableElement.scanDomNode();\r\n this.viewItems.filter(item => !(item instanceof MenuSeparatorActionViewItem)).forEach((item, index, array) => {\r\n item.updatePositionInSet(index + 1, array.length);\r\n });\r\n }\r\n initializeStyleSheet(container) {\r\n if (isInShadowDOM(container)) {\r\n this.styleSheet = createStyleSheet(container);\r\n this.styleSheet.innerHTML = MENU_WIDGET_CSS;\r\n }\r\n else {\r\n if (!Menu.globalStyleSheet) {\r\n Menu.globalStyleSheet = createStyleSheet();\r\n Menu.globalStyleSheet.innerHTML = MENU_WIDGET_CSS;\r\n }\r\n this.styleSheet = Menu.globalStyleSheet;\r\n }\r\n }\r\n style(style) {\r\n const container = this.getContainer();\r\n const fgColor = style.foregroundColor ? `${style.foregroundColor}` : '';\r\n const bgColor = style.backgroundColor ? `${style.backgroundColor}` : '';\r\n const border = style.borderColor ? `1px solid ${style.borderColor}` : '';\r\n const shadow = style.shadowColor ? `0 2px 4px ${style.shadowColor}` : '';\r\n container.style.border = border;\r\n this.domNode.style.color = fgColor;\r\n this.domNode.style.backgroundColor = bgColor;\r\n container.style.boxShadow = shadow;\r\n if (this.viewItems) {\r\n this.viewItems.forEach(item => {\r\n if (item instanceof BaseMenuActionViewItem || item instanceof MenuSeparatorActionViewItem) {\r\n item.style(style);\r\n }\r\n });\r\n }\r\n }\r\n getContainer() {\r\n return this.scrollableElement.getDomNode();\r\n }\r\n get onScroll() {\r\n return this.scrollableElement.onScroll;\r\n }\r\n focusItemByElement(element) {\r\n const lastFocusedItem = this.focusedItem;\r\n this.setFocusedItem(element);\r\n if (lastFocusedItem !== this.focusedItem) {\r\n this.updateFocus();\r\n }\r\n }\r\n setFocusedItem(element) {\r\n for (let i = 0; i < this.actionsList.children.length; i++) {\r\n let elem = this.actionsList.children[i];\r\n if (element === elem) {\r\n this.focusedItem = i;\r\n break;\r\n }\r\n }\r\n }\r\n updateFocus(fromRight) {\r\n super.updateFocus(fromRight, true);\r\n if (typeof this.focusedItem !== 'undefined') {\r\n // Workaround for #80047 caused by an issue in chromium\r\n // https://bugs.chromium.org/p/chromium/issues/detail?id=414283\r\n // When that's fixed, just call this.scrollableElement.scanDomNode()\r\n this.scrollableElement.setScrollPosition({\r\n scrollTop: Math.round(this.menuElement.scrollTop)\r\n });\r\n }\r\n }\r\n doGetActionViewItem(action, options, parentData) {\r\n if (action instanceof Separator) {\r\n return new MenuSeparatorActionViewItem(options.context, action, { icon: true });\r\n }\r\n else if (action instanceof SubmenuAction) {\r\n const menuActionViewItem = new SubmenuMenuActionViewItem(action, action.actions, parentData, Object.assign(Object.assign({}, options), { submenuIds: new Set([...(options.submenuIds || []), action.id]) }));\r\n if (options.enableMnemonics) {\r\n const mnemonic = menuActionViewItem.getMnemonic();\r\n if (mnemonic && menuActionViewItem.isEnabled()) {\r\n let actionViewItems = [];\r\n if (this.mnemonics.has(mnemonic)) {\r\n actionViewItems = this.mnemonics.get(mnemonic);\r\n }\r\n actionViewItems.push(menuActionViewItem);\r\n this.mnemonics.set(mnemonic, actionViewItems);\r\n }\r\n }\r\n return menuActionViewItem;\r\n }\r\n else {\r\n const menuItemOptions = { enableMnemonics: options.enableMnemonics, useEventAsContext: options.useEventAsContext };\r\n if (options.getKeyBinding) {\r\n const keybinding = options.getKeyBinding(action);\r\n if (keybinding) {\r\n const keybindingLabel = keybinding.getLabel();\r\n if (keybindingLabel) {\r\n menuItemOptions.keybinding = keybindingLabel;\r\n }\r\n }\r\n }\r\n const menuActionViewItem = new BaseMenuActionViewItem(options.context, action, menuItemOptions);\r\n if (options.enableMnemonics) {\r\n const mnemonic = menuActionViewItem.getMnemonic();\r\n if (mnemonic && menuActionViewItem.isEnabled()) {\r\n let actionViewItems = [];\r\n if (this.mnemonics.has(mnemonic)) {\r\n actionViewItems = this.mnemonics.get(mnemonic);\r\n }\r\n actionViewItems.push(menuActionViewItem);\r\n this.mnemonics.set(mnemonic, actionViewItems);\r\n }\r\n }\r\n return menuActionViewItem;\r\n }\r\n }\r\n}\r\nclass BaseMenuActionViewItem extends BaseActionViewItem {\r\n constructor(ctx, action, options = {}) {\r\n options.isMenu = true;\r\n super(action, action, options);\r\n this.options = options;\r\n this.options.icon = options.icon !== undefined ? options.icon : false;\r\n this.options.label = options.label !== undefined ? options.label : true;\r\n this.cssClass = '';\r\n // Set mnemonic\r\n if (this.options.label && options.enableMnemonics) {\r\n let label = this.getAction().label;\r\n if (label) {\r\n let matches = MENU_MNEMONIC_REGEX.exec(label);\r\n if (matches) {\r\n this.mnemonic = (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase();\r\n }\r\n }\r\n }\r\n // Add mouse up listener later to avoid accidental clicks\r\n this.runOnceToEnableMouseUp = new RunOnceScheduler(() => {\r\n if (!this.element) {\r\n return;\r\n }\r\n this._register(addDisposableListener(this.element, EventType.MOUSE_UP, e => {\r\n // removed default prevention as it conflicts\r\n // with BaseActionViewItem #101537\r\n // add back if issues arise and link new issue\r\n EventHelper.stop(e, true);\r\n // See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Interact_with_the_clipboard\r\n // > Writing to the clipboard\r\n // > You can use the \"cut\" and \"copy\" commands without any special\r\n // permission if you are using them in a short-lived event handler\r\n // for a user action (for example, a click handler).\r\n // => to get the Copy and Paste context menu actions working on Firefox,\r\n // there should be no timeout here\r\n if (isFirefox) {\r\n const mouseEvent = new StandardMouseEvent(e);\r\n // Allowing right click to trigger the event causes the issue described below,\r\n // but since the solution below does not work in FF, we must disable right click\r\n if (mouseEvent.rightButton) {\r\n return;\r\n }\r\n this.onClick(e);\r\n }\r\n // In all other cases, set timout to allow context menu cancellation to trigger\r\n // otherwise the action will destroy the menu and a second context menu\r\n // will still trigger for right click.\r\n setTimeout(() => {\r\n this.onClick(e);\r\n }, 0);\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.CONTEXT_MENU, e => {\r\n EventHelper.stop(e, true);\r\n }));\r\n }, 100);\r\n this._register(this.runOnceToEnableMouseUp);\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (!this.element) {\r\n return;\r\n }\r\n this.container = container;\r\n this.item = append(this.element, $('a.action-menu-item'));\r\n if (this._action.id === Separator.ID) {\r\n // A separator is a presentation item\r\n this.item.setAttribute('role', 'presentation');\r\n }\r\n else {\r\n this.item.setAttribute('role', 'menuitem');\r\n if (this.mnemonic) {\r\n this.item.setAttribute('aria-keyshortcuts', `${this.mnemonic}`);\r\n }\r\n }\r\n this.check = append(this.item, $('span.menu-item-check' + menuSelectionIcon.cssSelector));\r\n this.check.setAttribute('role', 'none');\r\n this.label = append(this.item, $('span.action-label'));\r\n if (this.options.label && this.options.keybinding) {\r\n append(this.item, $('span.keybinding')).textContent = this.options.keybinding;\r\n }\r\n // Adds mouse up listener to actually run the action\r\n this.runOnceToEnableMouseUp.schedule();\r\n this.updateClass();\r\n this.updateLabel();\r\n this.updateTooltip();\r\n this.updateEnabled();\r\n this.updateChecked();\r\n }\r\n blur() {\r\n super.blur();\r\n this.applyStyle();\r\n }\r\n focus() {\r\n super.focus();\r\n if (this.item) {\r\n this.item.focus();\r\n }\r\n this.applyStyle();\r\n }\r\n updatePositionInSet(pos, setSize) {\r\n if (this.item) {\r\n this.item.setAttribute('aria-posinset', `${pos}`);\r\n this.item.setAttribute('aria-setsize', `${setSize}`);\r\n }\r\n }\r\n updateLabel() {\r\n if (!this.label) {\r\n return;\r\n }\r\n if (this.options.label) {\r\n clearNode(this.label);\r\n let label = stripCodicons(this.getAction().label);\r\n if (label) {\r\n const cleanLabel = cleanMnemonic(label);\r\n if (!this.options.enableMnemonics) {\r\n label = cleanLabel;\r\n }\r\n this.label.setAttribute('aria-label', cleanLabel.replace(/&&/g, '&'));\r\n const matches = MENU_MNEMONIC_REGEX.exec(label);\r\n if (matches) {\r\n label = strings.escape(label);\r\n // This is global, reset it\r\n MENU_ESCAPED_MNEMONIC_REGEX.lastIndex = 0;\r\n let escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\r\n // We can't use negative lookbehind so if we match our negative and skip\r\n while (escMatch && escMatch[1]) {\r\n escMatch = MENU_ESCAPED_MNEMONIC_REGEX.exec(label);\r\n }\r\n const replaceDoubleEscapes = (str) => str.replace(/&&/g, '&');\r\n if (escMatch) {\r\n this.label.append(strings.ltrim(replaceDoubleEscapes(label.substr(0, escMatch.index)), ' '), $('u', { 'aria-hidden': 'true' }, escMatch[3]), strings.rtrim(replaceDoubleEscapes(label.substr(escMatch.index + escMatch[0].length)), ' '));\r\n }\r\n else {\r\n this.label.innerText = replaceDoubleEscapes(label).trim();\r\n }\r\n if (this.item) {\r\n this.item.setAttribute('aria-keyshortcuts', (!!matches[1] ? matches[1] : matches[3]).toLocaleLowerCase());\r\n }\r\n }\r\n else {\r\n this.label.innerText = label.replace(/&&/g, '&').trim();\r\n }\r\n }\r\n }\r\n }\r\n updateTooltip() {\r\n let title = null;\r\n if (this.getAction().tooltip) {\r\n title = this.getAction().tooltip;\r\n }\r\n else if (!this.options.label && this.getAction().label && this.options.icon) {\r\n title = this.getAction().label;\r\n if (this.options.keybinding) {\r\n title = nls.localize({ key: 'titleLabel', comment: ['action title', 'action keybinding'] }, \"{0} ({1})\", title, this.options.keybinding);\r\n }\r\n }\r\n if (title && this.item) {\r\n this.item.title = title;\r\n }\r\n }\r\n updateClass() {\r\n if (this.cssClass && this.item) {\r\n removeClasses(this.item, this.cssClass);\r\n }\r\n if (this.options.icon && this.label) {\r\n this.cssClass = this.getAction().class || '';\r\n addClass(this.label, 'icon');\r\n if (this.cssClass) {\r\n addClasses(this.label, this.cssClass);\r\n }\r\n this.updateEnabled();\r\n }\r\n else if (this.label) {\r\n removeClass(this.label, 'icon');\r\n }\r\n }\r\n updateEnabled() {\r\n if (this.getAction().enabled) {\r\n if (this.element) {\r\n removeClass(this.element, 'disabled');\r\n }\r\n if (this.item) {\r\n removeClass(this.item, 'disabled');\r\n this.item.tabIndex = 0;\r\n }\r\n }\r\n else {\r\n if (this.element) {\r\n addClass(this.element, 'disabled');\r\n }\r\n if (this.item) {\r\n addClass(this.item, 'disabled');\r\n removeTabIndexAndUpdateFocus(this.item);\r\n }\r\n }\r\n }\r\n updateChecked() {\r\n if (!this.item) {\r\n return;\r\n }\r\n if (this.getAction().checked) {\r\n addClass(this.item, 'checked');\r\n this.item.setAttribute('role', 'menuitemcheckbox');\r\n this.item.setAttribute('aria-checked', 'true');\r\n }\r\n else {\r\n removeClass(this.item, 'checked');\r\n this.item.setAttribute('role', 'menuitem');\r\n this.item.setAttribute('aria-checked', 'false');\r\n }\r\n }\r\n getMnemonic() {\r\n return this.mnemonic;\r\n }\r\n applyStyle() {\r\n if (!this.menuStyle) {\r\n return;\r\n }\r\n const isSelected = this.element && hasClass(this.element, 'focused');\r\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\r\n const bgColor = isSelected && this.menuStyle.selectionBackgroundColor ? this.menuStyle.selectionBackgroundColor : undefined;\r\n const border = isSelected && this.menuStyle.selectionBorderColor ? `thin solid ${this.menuStyle.selectionBorderColor}` : '';\r\n if (this.item) {\r\n this.item.style.color = fgColor ? fgColor.toString() : '';\r\n this.item.style.backgroundColor = bgColor ? bgColor.toString() : '';\r\n }\r\n if (this.check) {\r\n this.check.style.color = fgColor ? fgColor.toString() : '';\r\n }\r\n if (this.container) {\r\n this.container.style.border = border;\r\n }\r\n }\r\n style(style) {\r\n this.menuStyle = style;\r\n this.applyStyle();\r\n }\r\n}\r\nclass SubmenuMenuActionViewItem extends BaseMenuActionViewItem {\r\n constructor(action, submenuActions, parentData, submenuOptions) {\r\n super(action, action, submenuOptions);\r\n this.submenuActions = submenuActions;\r\n this.parentData = parentData;\r\n this.submenuOptions = submenuOptions;\r\n this.mysubmenu = null;\r\n this.submenuDisposables = this._register(new DisposableStore());\r\n this.mouseOver = false;\r\n this.expandDirection = submenuOptions && submenuOptions.expandDirection !== undefined ? submenuOptions.expandDirection : Direction.Right;\r\n this.showScheduler = new RunOnceScheduler(() => {\r\n if (this.mouseOver) {\r\n this.cleanupExistingSubmenu(false);\r\n this.createSubmenu(false);\r\n }\r\n }, 250);\r\n this.hideScheduler = new RunOnceScheduler(() => {\r\n if (this.element && (!isAncestor(getActiveElement(), this.element) && this.parentData.submenu === this.mysubmenu)) {\r\n this.parentData.parent.focus(false);\r\n this.cleanupExistingSubmenu(true);\r\n }\r\n }, 750);\r\n }\r\n render(container) {\r\n super.render(container);\r\n if (!this.element) {\r\n return;\r\n }\r\n if (this.item) {\r\n addClass(this.item, 'monaco-submenu-item');\r\n this.item.setAttribute('aria-haspopup', 'true');\r\n this.updateAriaExpanded('false');\r\n this.submenuIndicator = append(this.item, $('span.submenu-indicator' + menuSubmenuIcon.cssSelector));\r\n this.submenuIndicator.setAttribute('aria-hidden', 'true');\r\n }\r\n this._register(addDisposableListener(this.element, EventType.KEY_UP, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (event.equals(17 /* RightArrow */) || event.equals(3 /* Enter */)) {\r\n EventHelper.stop(e, true);\r\n this.createSubmenu(true);\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (getActiveElement() === this.item) {\r\n if (event.equals(17 /* RightArrow */) || event.equals(3 /* Enter */)) {\r\n EventHelper.stop(e, true);\r\n }\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.MOUSE_OVER, e => {\r\n if (!this.mouseOver) {\r\n this.mouseOver = true;\r\n this.showScheduler.schedule();\r\n }\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.MOUSE_LEAVE, e => {\r\n this.mouseOver = false;\r\n }));\r\n this._register(addDisposableListener(this.element, EventType.FOCUS_OUT, e => {\r\n if (this.element && !isAncestor(getActiveElement(), this.element)) {\r\n this.hideScheduler.schedule();\r\n }\r\n }));\r\n this._register(this.parentData.parent.onScroll(() => {\r\n this.parentData.parent.focus(false);\r\n this.cleanupExistingSubmenu(false);\r\n }));\r\n }\r\n onClick(e) {\r\n // stop clicking from trying to run an action\r\n EventHelper.stop(e, true);\r\n this.cleanupExistingSubmenu(false);\r\n this.createSubmenu(true);\r\n }\r\n cleanupExistingSubmenu(force) {\r\n if (this.parentData.submenu && (force || (this.parentData.submenu !== this.mysubmenu))) {\r\n // disposal may throw if the submenu has already been removed\r\n try {\r\n this.parentData.submenu.dispose();\r\n }\r\n catch (_a) { }\r\n this.parentData.submenu = undefined;\r\n this.updateAriaExpanded('false');\r\n if (this.submenuContainer) {\r\n this.submenuDisposables.clear();\r\n this.submenuContainer = undefined;\r\n }\r\n }\r\n }\r\n calculateSubmenuMenuLayout(windowDimensions, submenu, entry, expandDirection) {\r\n const ret = { top: 0, left: 0 };\r\n // Start with horizontal\r\n ret.left = layout(windowDimensions.width, submenu.width, { position: expandDirection === Direction.Right ? 0 /* Before */ : 1 /* After */, offset: entry.left, size: entry.width });\r\n // We don't have enough room to layout the menu fully, so we are overlapping the menu\r\n if (ret.left >= entry.left && ret.left < entry.left + entry.width) {\r\n if (entry.left + 10 + submenu.width <= windowDimensions.width) {\r\n ret.left = entry.left + 10;\r\n }\r\n entry.top += 10;\r\n entry.height = 0;\r\n }\r\n // Now that we have a horizontal position, try layout vertically\r\n ret.top = layout(windowDimensions.height, submenu.height, { position: 0 /* Before */, offset: entry.top, size: 0 });\r\n // We didn't have enough room below, but we did above, so we shift down to align the menu\r\n if (ret.top + submenu.height === entry.top && ret.top + entry.height + submenu.height <= windowDimensions.height) {\r\n ret.top += entry.height;\r\n }\r\n return ret;\r\n }\r\n createSubmenu(selectFirstItem = true) {\r\n if (!this.element) {\r\n return;\r\n }\r\n if (!this.parentData.submenu) {\r\n this.updateAriaExpanded('true');\r\n this.submenuContainer = append(this.element, $('div.monaco-submenu'));\r\n addClasses(this.submenuContainer, 'menubar-menu-items-holder', 'context-view');\r\n // Set the top value of the menu container before construction\r\n // This allows the menu constructor to calculate the proper max height\r\n const computedStyles = getComputedStyle(this.parentData.parent.domNode);\r\n const paddingTop = parseFloat(computedStyles.paddingTop || '0') || 0;\r\n // this.submenuContainer.style.top = `${this.element.offsetTop - this.parentData.parent.scrollOffset - paddingTop}px`;\r\n this.submenuContainer.style.zIndex = '1';\r\n this.submenuContainer.style.position = 'fixed';\r\n this.submenuContainer.style.top = '0';\r\n this.submenuContainer.style.left = '0';\r\n this.parentData.submenu = new Menu(this.submenuContainer, this.submenuActions, this.submenuOptions);\r\n if (this.menuStyle) {\r\n this.parentData.submenu.style(this.menuStyle);\r\n }\r\n // layout submenu\r\n const entryBox = this.element.getBoundingClientRect();\r\n const entryBoxUpdated = {\r\n top: entryBox.top - paddingTop,\r\n left: entryBox.left,\r\n height: entryBox.height + 2 * paddingTop,\r\n width: entryBox.width\r\n };\r\n const viewBox = this.submenuContainer.getBoundingClientRect();\r\n const { top, left } = this.calculateSubmenuMenuLayout({ height: window.innerHeight, width: window.innerWidth }, viewBox, entryBoxUpdated, this.expandDirection);\r\n this.submenuContainer.style.left = `${left}px`;\r\n this.submenuContainer.style.top = `${top}px`;\r\n this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_UP, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (event.equals(15 /* LeftArrow */)) {\r\n EventHelper.stop(e, true);\r\n this.parentData.parent.focus();\r\n this.cleanupExistingSubmenu(true);\r\n }\r\n }));\r\n this.submenuDisposables.add(addDisposableListener(this.submenuContainer, EventType.KEY_DOWN, e => {\r\n let event = new StandardKeyboardEvent(e);\r\n if (event.equals(15 /* LeftArrow */)) {\r\n EventHelper.stop(e, true);\r\n }\r\n }));\r\n this.submenuDisposables.add(this.parentData.submenu.onDidCancel(() => {\r\n this.parentData.parent.focus();\r\n this.cleanupExistingSubmenu(true);\r\n }));\r\n this.parentData.submenu.focus(selectFirstItem);\r\n this.mysubmenu = this.parentData.submenu;\r\n }\r\n else {\r\n this.parentData.submenu.focus(false);\r\n }\r\n }\r\n updateAriaExpanded(value) {\r\n var _a;\r\n if (this.item) {\r\n (_a = this.item) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', value);\r\n }\r\n }\r\n applyStyle() {\r\n super.applyStyle();\r\n if (!this.menuStyle) {\r\n return;\r\n }\r\n const isSelected = this.element && hasClass(this.element, 'focused');\r\n const fgColor = isSelected && this.menuStyle.selectionForegroundColor ? this.menuStyle.selectionForegroundColor : this.menuStyle.foregroundColor;\r\n if (this.submenuIndicator) {\r\n this.submenuIndicator.style.color = fgColor ? `${fgColor}` : '';\r\n }\r\n if (this.parentData.submenu) {\r\n this.parentData.submenu.style(this.menuStyle);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.hideScheduler.dispose();\r\n if (this.mysubmenu) {\r\n this.mysubmenu.dispose();\r\n this.mysubmenu = null;\r\n }\r\n if (this.submenuContainer) {\r\n this.submenuContainer = undefined;\r\n }\r\n }\r\n}\r\nclass MenuSeparatorActionViewItem extends ActionViewItem {\r\n style(style) {\r\n if (this.label) {\r\n this.label.style.borderBottomColor = style.separatorColor ? `${style.separatorColor}` : '';\r\n }\r\n }\r\n}\r\nexport function cleanMnemonic(label) {\r\n const regex = MENU_MNEMONIC_REGEX;\r\n const matches = regex.exec(label);\r\n if (!matches) {\r\n return label;\r\n }\r\n const mnemonicInText = !matches[1];\r\n return label.replace(regex, mnemonicInText ? '$2$3' : '').trim();\r\n}\r\nlet MENU_WIDGET_CSS = `\n.monaco-menu {\n\tfont-size: 13px;\n\n}\n\n${formatRule(menuSelectionIcon)}\n${formatRule(menuSubmenuIcon)}\n\n.monaco-menu .monaco-action-bar {\n\ttext-align: right;\n\toverflow: hidden;\n\twhite-space: nowrap;\n}\n\n.monaco-menu .monaco-action-bar .actions-container {\n\tdisplay: flex;\n\tmargin: 0 auto;\n\tpadding: 0;\n\twidth: 100%;\n\tjustify-content: flex-end;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar.reverse .actions-container {\n\tflex-direction: row-reverse;\n}\n\n.monaco-menu .monaco-action-bar .action-item {\n\tcursor: pointer;\n\tdisplay: inline-block;\n\ttransition: transform 50ms ease;\n\tposition: relative; /* DO NOT REMOVE - this is the key to preventing the ghosting icon bug in Chrome 42 */\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled {\n\tcursor: default;\n}\n\n.monaco-menu .monaco-action-bar.animated .action-item.active {\n\ttransform: scale(1.272019649, 1.272019649); /* 1.272019649 = √φ */\n}\n\n.monaco-menu .monaco-action-bar .action-item .icon,\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: inline-block;\n}\n\n.monaco-menu .monaco-action-bar .action-item .codicon {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar .action-label {\n\tfont-size: 11px;\n\tmargin-right: 4px;\n}\n\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label,\n.monaco-menu .monaco-action-bar .action-item.disabled .action-label:hover {\n\topacity: 0.4;\n}\n\n/* Vertical actions */\n\n.monaco-menu .monaco-action-bar.vertical {\n\ttext-align: left;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tdisplay: block;\n\tborder-bottom: 1px solid #bbb;\n\tpadding-top: 1px;\n\tmargin-left: .8em;\n\tmargin-right: .8em;\n}\n\n.monaco-menu .secondary-actions .monaco-action-bar .action-label {\n\tmargin-left: 6px;\n}\n\n/* Action Items */\n.monaco-menu .monaco-action-bar .action-item.select-container {\n\toverflow: hidden; /* somehow the dropdown overflows its container, we prevent it here to not push */\n\tflex: 1;\n\tmax-width: 170px;\n\tmin-width: 60px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmargin-right: 10px;\n}\n\n.monaco-menu .monaco-action-bar.vertical {\n\tmargin-left: 0;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .actions-container {\n\tdisplay: block;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tpadding: 0;\n\ttransform: none;\n\tdisplay: flex;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.active {\n\ttransform: none;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\tflex: 1 1 auto;\n\tdisplay: flex;\n\theight: 2em;\n\talign-items: center;\n\tposition: relative;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label {\n\tflex: 1 1 auto;\n\ttext-decoration: none;\n\tpadding: 0 1em;\n\tbackground: none;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .keybinding,\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tdisplay: inline-block;\n\tflex: 2 1 auto;\n\tpadding: 0 1em;\n\ttext-align: right;\n\tfont-size: 12px;\n\tline-height: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon {\n\tfont-size: 16px !important;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator.codicon::before {\n\tmargin-left: auto;\n\tmargin-right: -20px;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .keybinding,\n.monaco-menu .monaco-action-bar.vertical .action-item.disabled .submenu-indicator {\n\topacity: 0.4;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator) {\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tmargin: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tposition: static;\n\toverflow: visible;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item .monaco-submenu {\n\tposition: absolute;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tpadding: 0.5em 0 0 0;\n\tmargin-bottom: 0.5em;\n\twidth: 100%;\n\theight: 0px !important;\n\tmargin-left: .8em !important;\n\tmargin-right: .8em !important;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator.text {\n\tpadding: 0.7em 1em 0.1em 1em;\n\tfont-weight: bold;\n\topacity: 1;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:hover {\n\tcolor: inherit;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tposition: absolute;\n\tvisibility: hidden;\n\twidth: 1em;\n\theight: 100%;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item.checked .menu-item-check {\n\tvisibility: visible;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n/* Context Menu */\n\n.context-view.monaco-menu-container {\n\toutline: 0;\n\tborder: none;\n\tanimation: fadeIn 0.083s linear;\n}\n\n.context-view.monaco-menu-container :focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical:focus,\n.context-view.monaco-menu-container .monaco-action-bar.vertical :focus {\n\toutline: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-item {\n\tborder: thin solid transparent; /* prevents jumping behaviour on hover or focus */\n}\n\n\n/* High Contrast Theming */\n:host-context(.hc-black) .context-view.monaco-menu-container {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-menu .monaco-action-bar.vertical .action-item.focused {\n\tbackground: none;\n}\n\n/* Vertical Action Bar Styles */\n\n.monaco-menu .monaco-action-bar.vertical {\n\tpadding: .5em 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-menu-item {\n\theight: 1.8em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label:not(.separator),\n.monaco-menu .monaco-action-bar.vertical .keybinding {\n\tfont-size: inherit;\n\tpadding: 0 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .menu-item-check {\n\tfont-size: inherit;\n\twidth: 2em;\n}\n\n.monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tfont-size: inherit;\n\tpadding: 0.2em 0 0 0;\n\tmargin-bottom: 0.2em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .action-label.separator {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\tfont-size: 60%;\n\tpadding: 0 1.8em;\n}\n\n:host-context(.linux) .monaco-menu .monaco-action-bar.vertical .submenu-indicator {\n\theight: 100%;\n\tmask-size: 10px 10px;\n\t-webkit-mask-size: 10px 10px;\n}\n\n.monaco-menu .action-item {\n\tcursor: default;\n}\n\n/* Arrows */\n.monaco-scrollable-element > .scrollbar > .scra {\n\tcursor: pointer;\n\tfont-size: 11px !important;\n}\n\n.monaco-scrollable-element > .visible {\n\topacity: 1;\n\n\t/* Background rule added for IE9 - to allow clicks on dom node */\n\tbackground:rgba(0,0,0,0);\n\n\ttransition: opacity 100ms linear;\n}\n.monaco-scrollable-element > .invisible {\n\topacity: 0;\n\tpointer-events: none;\n}\n.monaco-scrollable-element > .invisible.fade {\n\ttransition: opacity 800ms linear;\n}\n\n/* Scrollable Content Inset Shadow */\n.monaco-scrollable-element > .shadow {\n\tposition: absolute;\n\tdisplay: none;\n}\n.monaco-scrollable-element > .shadow.top {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 3px;\n\theight: 3px;\n\twidth: 100%;\n\tbox-shadow: #DDD 0 6px 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.left {\n\tdisplay: block;\n\ttop: 3px;\n\tleft: 0;\n\theight: 100%;\n\twidth: 3px;\n\tbox-shadow: #DDD 6px 0 6px -6px inset;\n}\n.monaco-scrollable-element > .shadow.top-left-corner {\n\tdisplay: block;\n\ttop: 0;\n\tleft: 0;\n\theight: 3px;\n\twidth: 3px;\n}\n.monaco-scrollable-element > .shadow.top.left {\n\tbox-shadow: #DDD 6px 6px 6px -6px inset;\n}\n\n/* ---------- Default Style ---------- */\n\n:host-context(.vs) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(100, 100, 100, .4);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(121, 121, 121, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider {\n\tbackground: rgba(111, 195, 223, .6);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(100, 100, 100, .7);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider:hover {\n\tbackground: rgba(111, 195, 223, .8);\n}\n\n.monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(0, 0, 0, .6);\n}\n:host-context(.vs-dark) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(191, 191, 191, .4);\n}\n:host-context(.hc-black) .monaco-scrollable-element > .scrollbar > .slider.active {\n\tbackground: rgba(111, 195, 223, 1);\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: #000 6px 0 6px -6px inset;\n}\n\n:host-context(.vs-dark) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: #000 6px 6px 6px -6px inset;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.left {\n\tbox-shadow: none;\n}\n\n:host-context(.hc-black) .monaco-scrollable-element .shadow.top.left {\n\tbox-shadow: none;\n}\n`;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './mouseCursor.css';\r\nexport const MOUSE_CURSOR_TEXT_CSS_CLASS_NAME = `monaco-mouse-cursor-text`;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './progressbar.css';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { mixin } from '../../../common/objects.js';\r\nimport { removeClasses, addClass, hasClass, addClasses, show } from '../../dom.js';\r\nimport { RunOnceScheduler } from '../../../common/async.js';\r\nconst css_done = 'done';\r\nconst css_active = 'active';\r\nconst css_infinite = 'infinite';\r\nconst css_discrete = 'discrete';\r\nconst css_progress_container = 'monaco-progress-container';\r\nconst css_progress_bit = 'progress-bit';\r\nconst defaultOpts = {\r\n progressBarBackground: Color.fromHex('#0E70C0')\r\n};\r\n/**\r\n * A progress bar with support for infinite or discrete progress.\r\n */\r\nexport class ProgressBar extends Disposable {\r\n constructor(container, options) {\r\n super();\r\n this.options = options || Object.create(null);\r\n mixin(this.options, defaultOpts, false);\r\n this.workedVal = 0;\r\n this.progressBarBackground = this.options.progressBarBackground;\r\n this._register(this.showDelayedScheduler = new RunOnceScheduler(() => show(this.element), 0));\r\n this.create(container);\r\n }\r\n create(container) {\r\n this.element = document.createElement('div');\r\n addClass(this.element, css_progress_container);\r\n container.appendChild(this.element);\r\n this.bit = document.createElement('div');\r\n addClass(this.bit, css_progress_bit);\r\n this.element.appendChild(this.bit);\r\n this.applyStyles();\r\n }\r\n off() {\r\n this.bit.style.width = 'inherit';\r\n this.bit.style.opacity = '1';\r\n removeClasses(this.element, css_active, css_infinite, css_discrete);\r\n this.workedVal = 0;\r\n this.totalWork = undefined;\r\n }\r\n /**\r\n * Stops the progressbar from showing any progress instantly without fading out.\r\n */\r\n stop() {\r\n return this.doDone(false);\r\n }\r\n doDone(delayed) {\r\n addClass(this.element, css_done);\r\n // let it grow to 100% width and hide afterwards\r\n if (!hasClass(this.element, css_infinite)) {\r\n this.bit.style.width = 'inherit';\r\n if (delayed) {\r\n setTimeout(() => this.off(), 200);\r\n }\r\n else {\r\n this.off();\r\n }\r\n }\r\n // let it fade out and hide afterwards\r\n else {\r\n this.bit.style.opacity = '0';\r\n if (delayed) {\r\n setTimeout(() => this.off(), 200);\r\n }\r\n else {\r\n this.off();\r\n }\r\n }\r\n return this;\r\n }\r\n /**\r\n * Use this mode to indicate progress that has no total number of work units.\r\n */\r\n infinite() {\r\n this.bit.style.width = '2%';\r\n this.bit.style.opacity = '1';\r\n removeClasses(this.element, css_discrete, css_done);\r\n addClasses(this.element, css_active, css_infinite);\r\n return this;\r\n }\r\n getContainer() {\r\n return this.element;\r\n }\r\n style(styles) {\r\n this.progressBarBackground = styles.progressBarBackground;\r\n this.applyStyles();\r\n }\r\n applyStyles() {\r\n if (this.bit) {\r\n const background = this.progressBarBackground ? this.progressBarBackground.toString() : '';\r\n this.bit.style.backgroundColor = background;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './sash.css';\r\nimport { dispose, Disposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { isMacintosh } from '../../../common/platform.js';\r\nimport * as types from '../../../common/types.js';\r\nimport { EventType, Gesture } from '../../touch.js';\r\nimport { StandardMouseEvent } from '../../mouseEvent.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { getElementsByTagName, EventHelper, createStyleSheet, addDisposableListener, append, $, addClass, removeClass, toggleClass } from '../../dom.js';\r\nimport { domEvent } from '../../event.js';\r\nconst DEBUG = false;\r\nlet globalSize = 4;\r\nconst onDidChangeGlobalSize = new Emitter();\r\nexport class Sash extends Disposable {\r\n constructor(container, layoutProvider, options) {\r\n super();\r\n this._state = 3 /* Enabled */;\r\n this._onDidEnablementChange = this._register(new Emitter());\r\n this.onDidEnablementChange = this._onDidEnablementChange.event;\r\n this._onDidStart = this._register(new Emitter());\r\n this.onDidStart = this._onDidStart.event;\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidReset = this._register(new Emitter());\r\n this.onDidReset = this._onDidReset.event;\r\n this._onDidEnd = this._register(new Emitter());\r\n this.onDidEnd = this._onDidEnd.event;\r\n this.linkedSash = undefined;\r\n this.orthogonalStartSashDisposables = this._register(new DisposableStore());\r\n this.orthogonalEndSashDisposables = this._register(new DisposableStore());\r\n this.el = append(container, $('.monaco-sash'));\r\n if (isMacintosh) {\r\n addClass(this.el, 'mac');\r\n }\r\n this._register(domEvent(this.el, 'mousedown')(this.onMouseDown, this));\r\n this._register(domEvent(this.el, 'dblclick')(this.onMouseDoubleClick, this));\r\n this._register(Gesture.addTarget(this.el));\r\n this._register(domEvent(this.el, EventType.Start)(this.onTouchStart, this));\r\n if (typeof options.size === 'number') {\r\n this.size = options.size;\r\n if (options.orientation === 0 /* VERTICAL */) {\r\n this.el.style.width = `${this.size}px`;\r\n }\r\n else {\r\n this.el.style.height = `${this.size}px`;\r\n }\r\n }\r\n else {\r\n this.size = globalSize;\r\n this._register(onDidChangeGlobalSize.event(size => {\r\n this.size = size;\r\n this.layout();\r\n }));\r\n }\r\n this.hidden = false;\r\n this.layoutProvider = layoutProvider;\r\n this.orthogonalStartSash = options.orthogonalStartSash;\r\n this.orthogonalEndSash = options.orthogonalEndSash;\r\n this.orientation = options.orientation || 0 /* VERTICAL */;\r\n if (this.orientation === 1 /* HORIZONTAL */) {\r\n addClass(this.el, 'horizontal');\r\n removeClass(this.el, 'vertical');\r\n }\r\n else {\r\n removeClass(this.el, 'horizontal');\r\n addClass(this.el, 'vertical');\r\n }\r\n toggleClass(this.el, 'debug', DEBUG);\r\n this.layout();\r\n }\r\n get state() { return this._state; }\r\n set state(state) {\r\n if (this._state === state) {\r\n return;\r\n }\r\n toggleClass(this.el, 'disabled', state === 0 /* Disabled */);\r\n toggleClass(this.el, 'minimum', state === 1 /* Minimum */);\r\n toggleClass(this.el, 'maximum', state === 2 /* Maximum */);\r\n this._state = state;\r\n this._onDidEnablementChange.fire(state);\r\n }\r\n get orthogonalStartSash() { return this._orthogonalStartSash; }\r\n set orthogonalStartSash(sash) {\r\n this.orthogonalStartSashDisposables.clear();\r\n if (sash) {\r\n this.orthogonalStartSashDisposables.add(sash.onDidEnablementChange(this.onOrthogonalStartSashEnablementChange, this));\r\n this.onOrthogonalStartSashEnablementChange(sash.state);\r\n }\r\n else {\r\n this.onOrthogonalStartSashEnablementChange(0 /* Disabled */);\r\n }\r\n this._orthogonalStartSash = sash;\r\n }\r\n get orthogonalEndSash() { return this._orthogonalEndSash; }\r\n set orthogonalEndSash(sash) {\r\n this.orthogonalEndSashDisposables.clear();\r\n if (sash) {\r\n this.orthogonalEndSashDisposables.add(sash.onDidEnablementChange(this.onOrthogonalEndSashEnablementChange, this));\r\n this.onOrthogonalEndSashEnablementChange(sash.state);\r\n }\r\n else {\r\n this.onOrthogonalEndSashEnablementChange(0 /* Disabled */);\r\n }\r\n this._orthogonalEndSash = sash;\r\n }\r\n onMouseDown(e) {\r\n EventHelper.stop(e, false);\r\n let isMultisashResize = false;\r\n if (!e.__orthogonalSashEvent) {\r\n const orthogonalSash = this.getOrthogonalSash(e);\r\n if (orthogonalSash) {\r\n isMultisashResize = true;\r\n e.__orthogonalSashEvent = true;\r\n orthogonalSash.onMouseDown(e);\r\n }\r\n }\r\n if (this.linkedSash && !e.__linkedSashEvent) {\r\n e.__linkedSashEvent = true;\r\n this.linkedSash.onMouseDown(e);\r\n }\r\n if (!this.state) {\r\n return;\r\n }\r\n // Select both iframes and webviews; internally Electron nests an iframe\r\n // in its <webview> component, but this isn't queryable.\r\n const iframes = [\r\n ...getElementsByTagName('iframe'),\r\n ...getElementsByTagName('webview'),\r\n ];\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'none'; // disable mouse events on iframes as long as we drag the sash\r\n }\r\n const mouseDownEvent = new StandardMouseEvent(e);\r\n const startX = mouseDownEvent.posx;\r\n const startY = mouseDownEvent.posy;\r\n const altKey = mouseDownEvent.altKey;\r\n const startEvent = { startX, currentX: startX, startY, currentY: startY, altKey };\r\n addClass(this.el, 'active');\r\n this._onDidStart.fire(startEvent);\r\n // fix https://github.com/Microsoft/vscode/issues/21675\r\n const style = createStyleSheet(this.el);\r\n const updateStyle = () => {\r\n let cursor = '';\r\n if (isMultisashResize) {\r\n cursor = 'all-scroll';\r\n }\r\n else if (this.orientation === 1 /* HORIZONTAL */) {\r\n if (this.state === 1 /* Minimum */) {\r\n cursor = 's-resize';\r\n }\r\n else if (this.state === 2 /* Maximum */) {\r\n cursor = 'n-resize';\r\n }\r\n else {\r\n cursor = isMacintosh ? 'row-resize' : 'ns-resize';\r\n }\r\n }\r\n else {\r\n if (this.state === 1 /* Minimum */) {\r\n cursor = 'e-resize';\r\n }\r\n else if (this.state === 2 /* Maximum */) {\r\n cursor = 'w-resize';\r\n }\r\n else {\r\n cursor = isMacintosh ? 'col-resize' : 'ew-resize';\r\n }\r\n }\r\n style.innerHTML = `* { cursor: ${cursor} !important; }`;\r\n };\r\n const disposables = new DisposableStore();\r\n updateStyle();\r\n if (!isMultisashResize) {\r\n this.onDidEnablementChange(updateStyle, null, disposables);\r\n }\r\n const onMouseMove = (e) => {\r\n EventHelper.stop(e, false);\r\n const mouseMoveEvent = new StandardMouseEvent(e);\r\n const event = { startX, currentX: mouseMoveEvent.posx, startY, currentY: mouseMoveEvent.posy, altKey };\r\n this._onDidChange.fire(event);\r\n };\r\n const onMouseUp = (e) => {\r\n EventHelper.stop(e, false);\r\n this.el.removeChild(style);\r\n removeClass(this.el, 'active');\r\n this._onDidEnd.fire();\r\n disposables.dispose();\r\n for (const iframe of iframes) {\r\n iframe.style.pointerEvents = 'auto';\r\n }\r\n };\r\n domEvent(window, 'mousemove')(onMouseMove, null, disposables);\r\n domEvent(window, 'mouseup')(onMouseUp, null, disposables);\r\n }\r\n onMouseDoubleClick(e) {\r\n const orthogonalSash = this.getOrthogonalSash(e);\r\n if (orthogonalSash) {\r\n orthogonalSash._onDidReset.fire();\r\n }\r\n if (this.linkedSash) {\r\n this.linkedSash._onDidReset.fire();\r\n }\r\n this._onDidReset.fire();\r\n }\r\n onTouchStart(event) {\r\n EventHelper.stop(event);\r\n const listeners = [];\r\n const startX = event.pageX;\r\n const startY = event.pageY;\r\n const altKey = event.altKey;\r\n this._onDidStart.fire({\r\n startX: startX,\r\n currentX: startX,\r\n startY: startY,\r\n currentY: startY,\r\n altKey\r\n });\r\n listeners.push(addDisposableListener(this.el, EventType.Change, (event) => {\r\n if (types.isNumber(event.pageX) && types.isNumber(event.pageY)) {\r\n this._onDidChange.fire({\r\n startX: startX,\r\n currentX: event.pageX,\r\n startY: startY,\r\n currentY: event.pageY,\r\n altKey\r\n });\r\n }\r\n }));\r\n listeners.push(addDisposableListener(this.el, EventType.End, (event) => {\r\n this._onDidEnd.fire();\r\n dispose(listeners);\r\n }));\r\n }\r\n layout() {\r\n if (this.orientation === 0 /* VERTICAL */) {\r\n const verticalProvider = this.layoutProvider;\r\n this.el.style.left = verticalProvider.getVerticalSashLeft(this) - (this.size / 2) + 'px';\r\n if (verticalProvider.getVerticalSashTop) {\r\n this.el.style.top = verticalProvider.getVerticalSashTop(this) + 'px';\r\n }\r\n if (verticalProvider.getVerticalSashHeight) {\r\n this.el.style.height = verticalProvider.getVerticalSashHeight(this) + 'px';\r\n }\r\n }\r\n else {\r\n const horizontalProvider = this.layoutProvider;\r\n this.el.style.top = horizontalProvider.getHorizontalSashTop(this) - (this.size / 2) + 'px';\r\n if (horizontalProvider.getHorizontalSashLeft) {\r\n this.el.style.left = horizontalProvider.getHorizontalSashLeft(this) + 'px';\r\n }\r\n if (horizontalProvider.getHorizontalSashWidth) {\r\n this.el.style.width = horizontalProvider.getHorizontalSashWidth(this) + 'px';\r\n }\r\n }\r\n }\r\n hide() {\r\n this.hidden = true;\r\n this.el.style.display = 'none';\r\n this.el.setAttribute('aria-hidden', 'true');\r\n }\r\n onOrthogonalStartSashEnablementChange(state) {\r\n toggleClass(this.el, 'orthogonal-start', state !== 0 /* Disabled */);\r\n }\r\n onOrthogonalEndSashEnablementChange(state) {\r\n toggleClass(this.el, 'orthogonal-end', state !== 0 /* Disabled */);\r\n }\r\n getOrthogonalSash(e) {\r\n if (this.orientation === 0 /* VERTICAL */) {\r\n if (e.offsetY <= this.size) {\r\n return this.orthogonalStartSash;\r\n }\r\n else if (e.offsetY >= this.el.clientHeight - this.size) {\r\n return this.orthogonalEndSash;\r\n }\r\n }\r\n else {\r\n if (e.offsetX <= this.size) {\r\n return this.orthogonalStartSash;\r\n }\r\n else if (e.offsetX >= this.el.clientWidth - this.size) {\r\n return this.orthogonalEndSash;\r\n }\r\n }\r\n return undefined;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.el.remove();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../dom.js';\r\nimport { createFastDomNode } from '../../fastDomNode.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../globalMouseMoveMonitor.js';\r\nimport { ScrollbarArrow } from './scrollbarArrow.js';\r\nimport { ScrollbarVisibilityController } from './scrollbarVisibilityController.js';\r\nimport { Widget } from '../widget.js';\r\nimport * as platform from '../../../common/platform.js';\r\n/**\r\n * The orthogonal distance to the slider at which dragging \"resets\". This implements \"snapping\"\r\n */\r\nconst MOUSE_DRAG_RESET_DISTANCE = 140;\r\nexport class AbstractScrollbar extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._lazyRender = opts.lazyRender;\r\n this._host = opts.host;\r\n this._scrollable = opts.scrollable;\r\n this._scrollbarState = opts.scrollbarState;\r\n this._visibilityController = this._register(new ScrollbarVisibilityController(opts.visibility, 'visible scrollbar ' + opts.extraScrollbarClassName, 'invisible scrollbar ' + opts.extraScrollbarClassName));\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._mouseMoveMonitor = this._register(new GlobalMouseMoveMonitor());\r\n this._shouldRender = true;\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setAttribute('role', 'presentation');\r\n this.domNode.setAttribute('aria-hidden', 'true');\r\n this._visibilityController.setDomNode(this.domNode);\r\n this.domNode.setPosition('absolute');\r\n this.onmousedown(this.domNode.domNode, (e) => this._domNodeMouseDown(e));\r\n }\r\n // ----------------- creation\r\n /**\r\n * Creates the dom node for an arrow & adds it to the container\r\n */\r\n _createArrow(opts) {\r\n let arrow = this._register(new ScrollbarArrow(opts));\r\n this.domNode.domNode.appendChild(arrow.bgDomNode);\r\n this.domNode.domNode.appendChild(arrow.domNode);\r\n }\r\n /**\r\n * Creates the slider dom node, adds it to the container & hooks up the events\r\n */\r\n _createSlider(top, left, width, height) {\r\n this.slider = createFastDomNode(document.createElement('div'));\r\n this.slider.setClassName('slider');\r\n this.slider.setPosition('absolute');\r\n this.slider.setTop(top);\r\n this.slider.setLeft(left);\r\n if (typeof width === 'number') {\r\n this.slider.setWidth(width);\r\n }\r\n if (typeof height === 'number') {\r\n this.slider.setHeight(height);\r\n }\r\n this.slider.setLayerHinting(true);\r\n this.slider.setContain('strict');\r\n this.domNode.domNode.appendChild(this.slider.domNode);\r\n this.onmousedown(this.slider.domNode, (e) => {\r\n if (e.leftButton) {\r\n e.preventDefault();\r\n this._sliderMouseDown(e, () => { });\r\n }\r\n });\r\n this.onclick(this.slider.domNode, e => {\r\n if (e.leftButton) {\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n // ----------------- Update state\r\n _onElementSize(visibleSize) {\r\n if (this._scrollbarState.setVisibleSize(visibleSize)) {\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n return this._shouldRender;\r\n }\r\n _onElementScrollSize(elementScrollSize) {\r\n if (this._scrollbarState.setScrollSize(elementScrollSize)) {\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n return this._shouldRender;\r\n }\r\n _onElementScrollPosition(elementScrollPosition) {\r\n if (this._scrollbarState.setScrollPosition(elementScrollPosition)) {\r\n this._visibilityController.setIsNeeded(this._scrollbarState.isNeeded());\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n return this._shouldRender;\r\n }\r\n // ----------------- rendering\r\n beginReveal() {\r\n this._visibilityController.setShouldBeVisible(true);\r\n }\r\n beginHide() {\r\n this._visibilityController.setShouldBeVisible(false);\r\n }\r\n render() {\r\n if (!this._shouldRender) {\r\n return;\r\n }\r\n this._shouldRender = false;\r\n this._renderDomNode(this._scrollbarState.getRectangleLargeSize(), this._scrollbarState.getRectangleSmallSize());\r\n this._updateSlider(this._scrollbarState.getSliderSize(), this._scrollbarState.getArrowSize() + this._scrollbarState.getSliderPosition());\r\n }\r\n // ----------------- DOM events\r\n _domNodeMouseDown(e) {\r\n if (e.target !== this.domNode.domNode) {\r\n return;\r\n }\r\n this._onMouseDown(e);\r\n }\r\n delegateMouseDown(e) {\r\n let domTop = this.domNode.domNode.getClientRects()[0].top;\r\n let sliderStart = domTop + this._scrollbarState.getSliderPosition();\r\n let sliderStop = domTop + this._scrollbarState.getSliderPosition() + this._scrollbarState.getSliderSize();\r\n let mousePos = this._sliderMousePosition(e);\r\n if (sliderStart <= mousePos && mousePos <= sliderStop) {\r\n // Act as if it was a mouse down on the slider\r\n if (e.leftButton) {\r\n e.preventDefault();\r\n this._sliderMouseDown(e, () => { });\r\n }\r\n }\r\n else {\r\n // Act as if it was a mouse down on the scrollbar\r\n this._onMouseDown(e);\r\n }\r\n }\r\n _onMouseDown(e) {\r\n let offsetX;\r\n let offsetY;\r\n if (e.target === this.domNode.domNode && typeof e.browserEvent.offsetX === 'number' && typeof e.browserEvent.offsetY === 'number') {\r\n offsetX = e.browserEvent.offsetX;\r\n offsetY = e.browserEvent.offsetY;\r\n }\r\n else {\r\n const domNodePosition = dom.getDomNodePagePosition(this.domNode.domNode);\r\n offsetX = e.posx - domNodePosition.left;\r\n offsetY = e.posy - domNodePosition.top;\r\n }\r\n this._setDesiredScrollPositionNow(this._scrollbarState.getDesiredScrollPositionFromOffset(this._mouseDownRelativePosition(offsetX, offsetY)));\r\n if (e.leftButton) {\r\n e.preventDefault();\r\n this._sliderMouseDown(e, () => { });\r\n }\r\n }\r\n _sliderMouseDown(e, onDragFinished) {\r\n const initialMousePosition = this._sliderMousePosition(e);\r\n const initialMouseOrthogonalPosition = this._sliderOrthogonalMousePosition(e);\r\n const initialScrollbarState = this._scrollbarState.clone();\r\n this.slider.toggleClassName('active', true);\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, (mouseMoveData) => {\r\n const mouseOrthogonalPosition = this._sliderOrthogonalMousePosition(mouseMoveData);\r\n const mouseOrthogonalDelta = Math.abs(mouseOrthogonalPosition - initialMouseOrthogonalPosition);\r\n if (platform.isWindows && mouseOrthogonalDelta > MOUSE_DRAG_RESET_DISTANCE) {\r\n // The mouse has wondered away from the scrollbar => reset dragging\r\n this._setDesiredScrollPositionNow(initialScrollbarState.getScrollPosition());\r\n return;\r\n }\r\n const mousePosition = this._sliderMousePosition(mouseMoveData);\r\n const mouseDelta = mousePosition - initialMousePosition;\r\n this._setDesiredScrollPositionNow(initialScrollbarState.getDesiredScrollPositionFromDelta(mouseDelta));\r\n }, () => {\r\n this.slider.toggleClassName('active', false);\r\n this._host.onDragEnd();\r\n onDragFinished();\r\n });\r\n this._host.onDragStart();\r\n }\r\n _setDesiredScrollPositionNow(_desiredScrollPosition) {\r\n let desiredScrollPosition = {};\r\n this.writeScrollPosition(desiredScrollPosition, _desiredScrollPosition);\r\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\r\n }\r\n updateScrollbarSize(scrollbarSize) {\r\n this._updateScrollbarSize(scrollbarSize);\r\n this._scrollbarState.setScrollbarSize(scrollbarSize);\r\n this._shouldRender = true;\r\n if (!this._lazyRender) {\r\n this.render();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardWheelEvent } from '../../mouseEvent.js';\r\nimport { AbstractScrollbar } from './abstractScrollbar.js';\r\nimport { ARROW_IMG_SIZE } from './scrollbarArrow.js';\r\nimport { ScrollbarState } from './scrollbarState.js';\r\nimport { Codicon, registerIcon } from '../../../common/codicons.js';\r\nconst scrollbarButtonLeftIcon = registerIcon('scrollbar-button-left', Codicon.triangleLeft);\r\nconst scrollbarButtonRightIcon = registerIcon('scrollbar-button-right', Codicon.triangleRight);\r\nexport class HorizontalScrollbar extends AbstractScrollbar {\r\n constructor(scrollable, options, host) {\r\n const scrollDimensions = scrollable.getScrollDimensions();\r\n const scrollPosition = scrollable.getCurrentScrollPosition();\r\n super({\r\n lazyRender: options.lazyRender,\r\n host: host,\r\n scrollbarState: new ScrollbarState((options.horizontalHasArrows ? options.arrowSize : 0), (options.horizontal === 2 /* Hidden */ ? 0 : options.horizontalScrollbarSize), (options.vertical === 2 /* Hidden */ ? 0 : options.verticalScrollbarSize), scrollDimensions.width, scrollDimensions.scrollWidth, scrollPosition.scrollLeft),\r\n visibility: options.horizontal,\r\n extraScrollbarClassName: 'horizontal',\r\n scrollable: scrollable\r\n });\r\n if (options.horizontalHasArrows) {\r\n let arrowDelta = (options.arrowSize - ARROW_IMG_SIZE) / 2;\r\n let scrollbarDelta = (options.horizontalScrollbarSize - ARROW_IMG_SIZE) / 2;\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonLeftIcon,\r\n top: scrollbarDelta,\r\n left: arrowDelta,\r\n bottom: undefined,\r\n right: undefined,\r\n bgWidth: options.arrowSize,\r\n bgHeight: options.horizontalScrollbarSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 1, 0)),\r\n });\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonRightIcon,\r\n top: scrollbarDelta,\r\n left: undefined,\r\n bottom: undefined,\r\n right: arrowDelta,\r\n bgWidth: options.arrowSize,\r\n bgHeight: options.horizontalScrollbarSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, -1, 0)),\r\n });\r\n }\r\n this._createSlider(Math.floor((options.horizontalScrollbarSize - options.horizontalSliderSize) / 2), 0, undefined, options.horizontalSliderSize);\r\n }\r\n _updateSlider(sliderSize, sliderPosition) {\r\n this.slider.setWidth(sliderSize);\r\n this.slider.setLeft(sliderPosition);\r\n }\r\n _renderDomNode(largeSize, smallSize) {\r\n this.domNode.setWidth(largeSize);\r\n this.domNode.setHeight(smallSize);\r\n this.domNode.setLeft(0);\r\n this.domNode.setBottom(0);\r\n }\r\n onDidScroll(e) {\r\n this._shouldRender = this._onElementScrollSize(e.scrollWidth) || this._shouldRender;\r\n this._shouldRender = this._onElementScrollPosition(e.scrollLeft) || this._shouldRender;\r\n this._shouldRender = this._onElementSize(e.width) || this._shouldRender;\r\n return this._shouldRender;\r\n }\r\n _mouseDownRelativePosition(offsetX, offsetY) {\r\n return offsetX;\r\n }\r\n _sliderMousePosition(e) {\r\n return e.posx;\r\n }\r\n _sliderOrthogonalMousePosition(e) {\r\n return e.posy;\r\n }\r\n _updateScrollbarSize(size) {\r\n this.slider.setHeight(size);\r\n }\r\n writeScrollPosition(target, scrollPosition) {\r\n target.scrollLeft = scrollPosition;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/scrollbars.css';\r\nimport * as dom from '../../dom.js';\r\nimport { createFastDomNode } from '../../fastDomNode.js';\r\nimport { StandardWheelEvent } from '../../mouseEvent.js';\r\nimport { HorizontalScrollbar } from './horizontalScrollbar.js';\r\nimport { VerticalScrollbar } from './verticalScrollbar.js';\r\nimport { Widget } from '../widget.js';\r\nimport { TimeoutTimer } from '../../../common/async.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { dispose } from '../../../common/lifecycle.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { Scrollable } from '../../../common/scrollable.js';\r\nimport { getZoomFactor } from '../../browser.js';\r\nconst HIDE_TIMEOUT = 500;\r\nconst SCROLL_WHEEL_SENSITIVITY = 50;\r\nconst SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED = true;\r\nclass MouseWheelClassifierItem {\r\n constructor(timestamp, deltaX, deltaY) {\r\n this.timestamp = timestamp;\r\n this.deltaX = deltaX;\r\n this.deltaY = deltaY;\r\n this.score = 0;\r\n }\r\n}\r\nexport class MouseWheelClassifier {\r\n constructor() {\r\n this._capacity = 5;\r\n this._memory = [];\r\n this._front = -1;\r\n this._rear = -1;\r\n }\r\n isPhysicalMouseWheel() {\r\n if (this._front === -1 && this._rear === -1) {\r\n // no elements\r\n return false;\r\n }\r\n // 0.5 * last + 0.25 * 2nd last + 0.125 * 3rd last + ...\r\n let remainingInfluence = 1;\r\n let score = 0;\r\n let iteration = 1;\r\n let index = this._rear;\r\n do {\r\n const influence = (index === this._front ? remainingInfluence : Math.pow(2, -iteration));\r\n remainingInfluence -= influence;\r\n score += this._memory[index].score * influence;\r\n if (index === this._front) {\r\n break;\r\n }\r\n index = (this._capacity + index - 1) % this._capacity;\r\n iteration++;\r\n } while (true);\r\n return (score <= 0.5);\r\n }\r\n accept(timestamp, deltaX, deltaY) {\r\n const item = new MouseWheelClassifierItem(timestamp, deltaX, deltaY);\r\n item.score = this._computeScore(item);\r\n if (this._front === -1 && this._rear === -1) {\r\n this._memory[0] = item;\r\n this._front = 0;\r\n this._rear = 0;\r\n }\r\n else {\r\n this._rear = (this._rear + 1) % this._capacity;\r\n if (this._rear === this._front) {\r\n // Drop oldest\r\n this._front = (this._front + 1) % this._capacity;\r\n }\r\n this._memory[this._rear] = item;\r\n }\r\n }\r\n /**\r\n * A score between 0 and 1 for `item`.\r\n * - a score towards 0 indicates that the source appears to be a physical mouse wheel\r\n * - a score towards 1 indicates that the source appears to be a touchpad or magic mouse, etc.\r\n */\r\n _computeScore(item) {\r\n if (Math.abs(item.deltaX) > 0 && Math.abs(item.deltaY) > 0) {\r\n // both axes exercised => definitely not a physical mouse wheel\r\n return 1;\r\n }\r\n let score = 0.5;\r\n const prev = (this._front === -1 && this._rear === -1 ? null : this._memory[this._rear]);\r\n if (prev) {\r\n // const deltaT = item.timestamp - prev.timestamp;\r\n // if (deltaT < 1000 / 30) {\r\n // \t// sooner than X times per second => indicator that this is not a physical mouse wheel\r\n // \tscore += 0.25;\r\n // }\r\n // if (item.deltaX === prev.deltaX && item.deltaY === prev.deltaY) {\r\n // \t// equal amplitude => indicator that this is a physical mouse wheel\r\n // \tscore -= 0.25;\r\n // }\r\n }\r\n if (!this._isAlmostInt(item.deltaX) || !this._isAlmostInt(item.deltaY)) {\r\n // non-integer deltas => indicator that this is not a physical mouse wheel\r\n score += 0.25;\r\n }\r\n return Math.min(Math.max(score, 0), 1);\r\n }\r\n _isAlmostInt(value) {\r\n const delta = Math.abs(Math.round(value) - value);\r\n return (delta < 0.01);\r\n }\r\n}\r\nMouseWheelClassifier.INSTANCE = new MouseWheelClassifier();\r\nexport class AbstractScrollableElement extends Widget {\r\n constructor(element, options, scrollable) {\r\n super();\r\n this._onScroll = this._register(new Emitter());\r\n this.onScroll = this._onScroll.event;\r\n this._onWillScroll = this._register(new Emitter());\r\n element.style.overflow = 'hidden';\r\n this._options = resolveOptions(options);\r\n this._scrollable = scrollable;\r\n this._register(this._scrollable.onScroll((e) => {\r\n this._onWillScroll.fire(e);\r\n this._onDidScroll(e);\r\n this._onScroll.fire(e);\r\n }));\r\n let scrollbarHost = {\r\n onMouseWheel: (mouseWheelEvent) => this._onMouseWheel(mouseWheelEvent),\r\n onDragStart: () => this._onDragStart(),\r\n onDragEnd: () => this._onDragEnd(),\r\n };\r\n this._verticalScrollbar = this._register(new VerticalScrollbar(this._scrollable, this._options, scrollbarHost));\r\n this._horizontalScrollbar = this._register(new HorizontalScrollbar(this._scrollable, this._options, scrollbarHost));\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.style.position = 'relative';\r\n this._domNode.style.overflow = 'hidden';\r\n this._domNode.appendChild(element);\r\n this._domNode.appendChild(this._horizontalScrollbar.domNode.domNode);\r\n this._domNode.appendChild(this._verticalScrollbar.domNode.domNode);\r\n if (this._options.useShadows) {\r\n this._leftShadowDomNode = createFastDomNode(document.createElement('div'));\r\n this._leftShadowDomNode.setClassName('shadow');\r\n this._domNode.appendChild(this._leftShadowDomNode.domNode);\r\n this._topShadowDomNode = createFastDomNode(document.createElement('div'));\r\n this._topShadowDomNode.setClassName('shadow');\r\n this._domNode.appendChild(this._topShadowDomNode.domNode);\r\n this._topLeftShadowDomNode = createFastDomNode(document.createElement('div'));\r\n this._topLeftShadowDomNode.setClassName('shadow top-left-corner');\r\n this._domNode.appendChild(this._topLeftShadowDomNode.domNode);\r\n }\r\n else {\r\n this._leftShadowDomNode = null;\r\n this._topShadowDomNode = null;\r\n this._topLeftShadowDomNode = null;\r\n }\r\n this._listenOnDomNode = this._options.listenOnDomNode || this._domNode;\r\n this._mouseWheelToDispose = [];\r\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\r\n this.onmouseover(this._listenOnDomNode, (e) => this._onMouseOver(e));\r\n this.onnonbubblingmouseout(this._listenOnDomNode, (e) => this._onMouseOut(e));\r\n this._hideTimeout = this._register(new TimeoutTimer());\r\n this._isDragging = false;\r\n this._mouseIsOver = false;\r\n this._shouldRender = true;\r\n this._revealOnScroll = true;\r\n }\r\n dispose() {\r\n this._mouseWheelToDispose = dispose(this._mouseWheelToDispose);\r\n super.dispose();\r\n }\r\n /**\r\n * Get the generated 'scrollable' dom node\r\n */\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getOverviewRulerLayoutInfo() {\r\n return {\r\n parent: this._domNode,\r\n insertBefore: this._verticalScrollbar.domNode.domNode,\r\n };\r\n }\r\n /**\r\n * Delegate a mouse down event to the vertical scrollbar.\r\n * This is to help with clicking somewhere else and having the scrollbar react.\r\n */\r\n delegateVerticalScrollbarMouseDown(browserEvent) {\r\n this._verticalScrollbar.delegateMouseDown(browserEvent);\r\n }\r\n getScrollDimensions() {\r\n return this._scrollable.getScrollDimensions();\r\n }\r\n setScrollDimensions(dimensions) {\r\n this._scrollable.setScrollDimensions(dimensions, false);\r\n }\r\n /**\r\n * Update the class name of the scrollable element.\r\n */\r\n updateClassName(newClassName) {\r\n this._options.className = newClassName;\r\n // Defaults are different on Macs\r\n if (platform.isMacintosh) {\r\n this._options.className += ' mac';\r\n }\r\n this._domNode.className = 'monaco-scrollable-element ' + this._options.className;\r\n }\r\n /**\r\n * Update configuration options for the scrollbar.\r\n * Really this is Editor.IEditorScrollbarOptions, but base shouldn't\r\n * depend on Editor.\r\n */\r\n updateOptions(newOptions) {\r\n if (typeof newOptions.handleMouseWheel !== 'undefined') {\r\n this._options.handleMouseWheel = newOptions.handleMouseWheel;\r\n this._setListeningToMouseWheel(this._options.handleMouseWheel);\r\n }\r\n if (typeof newOptions.mouseWheelScrollSensitivity !== 'undefined') {\r\n this._options.mouseWheelScrollSensitivity = newOptions.mouseWheelScrollSensitivity;\r\n }\r\n if (typeof newOptions.fastScrollSensitivity !== 'undefined') {\r\n this._options.fastScrollSensitivity = newOptions.fastScrollSensitivity;\r\n }\r\n if (typeof newOptions.scrollPredominantAxis !== 'undefined') {\r\n this._options.scrollPredominantAxis = newOptions.scrollPredominantAxis;\r\n }\r\n if (typeof newOptions.horizontalScrollbarSize !== 'undefined') {\r\n this._horizontalScrollbar.updateScrollbarSize(newOptions.horizontalScrollbarSize);\r\n }\r\n if (!this._options.lazyRender) {\r\n this._render();\r\n }\r\n }\r\n // -------------------- mouse wheel scrolling --------------------\r\n _setListeningToMouseWheel(shouldListen) {\r\n let isListening = (this._mouseWheelToDispose.length > 0);\r\n if (isListening === shouldListen) {\r\n // No change\r\n return;\r\n }\r\n // Stop listening (if necessary)\r\n this._mouseWheelToDispose = dispose(this._mouseWheelToDispose);\r\n // Start listening (if necessary)\r\n if (shouldListen) {\r\n let onMouseWheel = (browserEvent) => {\r\n this._onMouseWheel(new StandardWheelEvent(browserEvent));\r\n };\r\n this._mouseWheelToDispose.push(dom.addDisposableListener(this._listenOnDomNode, dom.EventType.MOUSE_WHEEL, onMouseWheel, { passive: false }));\r\n }\r\n }\r\n _onMouseWheel(e) {\r\n const classifier = MouseWheelClassifier.INSTANCE;\r\n if (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED) {\r\n const osZoomFactor = window.devicePixelRatio / getZoomFactor();\r\n if (platform.isWindows || platform.isLinux) {\r\n // On Windows and Linux, the incoming delta events are multiplied with the OS zoom factor.\r\n // The OS zoom factor can be reverse engineered by using the device pixel ratio and the configured zoom factor into account.\r\n classifier.accept(Date.now(), e.deltaX / osZoomFactor, e.deltaY / osZoomFactor);\r\n }\r\n else {\r\n classifier.accept(Date.now(), e.deltaX, e.deltaY);\r\n }\r\n }\r\n // console.log(`${Date.now()}, ${e.deltaY}, ${e.deltaX}`);\r\n if (e.deltaY || e.deltaX) {\r\n let deltaY = e.deltaY * this._options.mouseWheelScrollSensitivity;\r\n let deltaX = e.deltaX * this._options.mouseWheelScrollSensitivity;\r\n if (this._options.scrollPredominantAxis) {\r\n if (Math.abs(deltaY) >= Math.abs(deltaX)) {\r\n deltaX = 0;\r\n }\r\n else {\r\n deltaY = 0;\r\n }\r\n }\r\n if (this._options.flipAxes) {\r\n [deltaY, deltaX] = [deltaX, deltaY];\r\n }\r\n // Convert vertical scrolling to horizontal if shift is held, this\r\n // is handled at a higher level on Mac\r\n const shiftConvert = !platform.isMacintosh && e.browserEvent && e.browserEvent.shiftKey;\r\n if ((this._options.scrollYToX || shiftConvert) && !deltaX) {\r\n deltaX = deltaY;\r\n deltaY = 0;\r\n }\r\n if (e.browserEvent && e.browserEvent.altKey) {\r\n // fastScrolling\r\n deltaX = deltaX * this._options.fastScrollSensitivity;\r\n deltaY = deltaY * this._options.fastScrollSensitivity;\r\n }\r\n const futureScrollPosition = this._scrollable.getFutureScrollPosition();\r\n let desiredScrollPosition = {};\r\n if (deltaY) {\r\n const desiredScrollTop = futureScrollPosition.scrollTop - SCROLL_WHEEL_SENSITIVITY * deltaY;\r\n this._verticalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollTop);\r\n }\r\n if (deltaX) {\r\n const desiredScrollLeft = futureScrollPosition.scrollLeft - SCROLL_WHEEL_SENSITIVITY * deltaX;\r\n this._horizontalScrollbar.writeScrollPosition(desiredScrollPosition, desiredScrollLeft);\r\n }\r\n // Check that we are scrolling towards a location which is valid\r\n desiredScrollPosition = this._scrollable.validateScrollPosition(desiredScrollPosition);\r\n if (futureScrollPosition.scrollLeft !== desiredScrollPosition.scrollLeft || futureScrollPosition.scrollTop !== desiredScrollPosition.scrollTop) {\r\n const canPerformSmoothScroll = (SCROLL_WHEEL_SMOOTH_SCROLL_ENABLED\r\n && this._options.mouseWheelSmoothScroll\r\n && classifier.isPhysicalMouseWheel());\r\n if (canPerformSmoothScroll) {\r\n this._scrollable.setScrollPositionSmooth(desiredScrollPosition);\r\n }\r\n else {\r\n this._scrollable.setScrollPositionNow(desiredScrollPosition);\r\n }\r\n this._shouldRender = true;\r\n }\r\n }\r\n if (this._options.alwaysConsumeMouseWheel || this._shouldRender) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n _onDidScroll(e) {\r\n this._shouldRender = this._horizontalScrollbar.onDidScroll(e) || this._shouldRender;\r\n this._shouldRender = this._verticalScrollbar.onDidScroll(e) || this._shouldRender;\r\n if (this._options.useShadows) {\r\n this._shouldRender = true;\r\n }\r\n if (this._revealOnScroll) {\r\n this._reveal();\r\n }\r\n if (!this._options.lazyRender) {\r\n this._render();\r\n }\r\n }\r\n /**\r\n * Render / mutate the DOM now.\r\n * Should be used together with the ctor option `lazyRender`.\r\n */\r\n renderNow() {\r\n if (!this._options.lazyRender) {\r\n throw new Error('Please use `lazyRender` together with `renderNow`!');\r\n }\r\n this._render();\r\n }\r\n _render() {\r\n if (!this._shouldRender) {\r\n return;\r\n }\r\n this._shouldRender = false;\r\n this._horizontalScrollbar.render();\r\n this._verticalScrollbar.render();\r\n if (this._options.useShadows) {\r\n const scrollState = this._scrollable.getCurrentScrollPosition();\r\n let enableTop = scrollState.scrollTop > 0;\r\n let enableLeft = scrollState.scrollLeft > 0;\r\n this._leftShadowDomNode.setClassName('shadow' + (enableLeft ? ' left' : ''));\r\n this._topShadowDomNode.setClassName('shadow' + (enableTop ? ' top' : ''));\r\n this._topLeftShadowDomNode.setClassName('shadow top-left-corner' + (enableTop ? ' top' : '') + (enableLeft ? ' left' : ''));\r\n }\r\n }\r\n // -------------------- fade in / fade out --------------------\r\n _onDragStart() {\r\n this._isDragging = true;\r\n this._reveal();\r\n }\r\n _onDragEnd() {\r\n this._isDragging = false;\r\n this._hide();\r\n }\r\n _onMouseOut(e) {\r\n this._mouseIsOver = false;\r\n this._hide();\r\n }\r\n _onMouseOver(e) {\r\n this._mouseIsOver = true;\r\n this._reveal();\r\n }\r\n _reveal() {\r\n this._verticalScrollbar.beginReveal();\r\n this._horizontalScrollbar.beginReveal();\r\n this._scheduleHide();\r\n }\r\n _hide() {\r\n if (!this._mouseIsOver && !this._isDragging) {\r\n this._verticalScrollbar.beginHide();\r\n this._horizontalScrollbar.beginHide();\r\n }\r\n }\r\n _scheduleHide() {\r\n if (!this._mouseIsOver && !this._isDragging) {\r\n this._hideTimeout.cancelAndSet(() => this._hide(), HIDE_TIMEOUT);\r\n }\r\n }\r\n}\r\nexport class ScrollableElement extends AbstractScrollableElement {\r\n constructor(element, options) {\r\n options = options || {};\r\n options.mouseWheelSmoothScroll = false;\r\n const scrollable = new Scrollable(0, (callback) => dom.scheduleAtNextAnimationFrame(callback));\r\n super(element, options, scrollable);\r\n this._register(scrollable);\r\n }\r\n setScrollPosition(update) {\r\n this._scrollable.setScrollPositionNow(update);\r\n }\r\n}\r\nexport class SmoothScrollableElement extends AbstractScrollableElement {\r\n constructor(element, options, scrollable) {\r\n super(element, options, scrollable);\r\n }\r\n setScrollPosition(update) {\r\n this._scrollable.setScrollPositionNow(update);\r\n }\r\n getScrollPosition() {\r\n return this._scrollable.getCurrentScrollPosition();\r\n }\r\n}\r\nexport class DomScrollableElement extends ScrollableElement {\r\n constructor(element, options) {\r\n super(element, options);\r\n this._element = element;\r\n this.onScroll((e) => {\r\n if (e.scrollTopChanged) {\r\n this._element.scrollTop = e.scrollTop;\r\n }\r\n if (e.scrollLeftChanged) {\r\n this._element.scrollLeft = e.scrollLeft;\r\n }\r\n });\r\n this.scanDomNode();\r\n }\r\n scanDomNode() {\r\n // width, scrollLeft, scrollWidth, height, scrollTop, scrollHeight\r\n this.setScrollDimensions({\r\n width: this._element.clientWidth,\r\n scrollWidth: this._element.scrollWidth,\r\n height: this._element.clientHeight,\r\n scrollHeight: this._element.scrollHeight\r\n });\r\n this.setScrollPosition({\r\n scrollLeft: this._element.scrollLeft,\r\n scrollTop: this._element.scrollTop,\r\n });\r\n }\r\n}\r\nfunction resolveOptions(opts) {\r\n let result = {\r\n lazyRender: (typeof opts.lazyRender !== 'undefined' ? opts.lazyRender : false),\r\n className: (typeof opts.className !== 'undefined' ? opts.className : ''),\r\n useShadows: (typeof opts.useShadows !== 'undefined' ? opts.useShadows : true),\r\n handleMouseWheel: (typeof opts.handleMouseWheel !== 'undefined' ? opts.handleMouseWheel : true),\r\n flipAxes: (typeof opts.flipAxes !== 'undefined' ? opts.flipAxes : false),\r\n alwaysConsumeMouseWheel: (typeof opts.alwaysConsumeMouseWheel !== 'undefined' ? opts.alwaysConsumeMouseWheel : false),\r\n scrollYToX: (typeof opts.scrollYToX !== 'undefined' ? opts.scrollYToX : false),\r\n mouseWheelScrollSensitivity: (typeof opts.mouseWheelScrollSensitivity !== 'undefined' ? opts.mouseWheelScrollSensitivity : 1),\r\n fastScrollSensitivity: (typeof opts.fastScrollSensitivity !== 'undefined' ? opts.fastScrollSensitivity : 5),\r\n scrollPredominantAxis: (typeof opts.scrollPredominantAxis !== 'undefined' ? opts.scrollPredominantAxis : true),\r\n mouseWheelSmoothScroll: (typeof opts.mouseWheelSmoothScroll !== 'undefined' ? opts.mouseWheelSmoothScroll : true),\r\n arrowSize: (typeof opts.arrowSize !== 'undefined' ? opts.arrowSize : 11),\r\n listenOnDomNode: (typeof opts.listenOnDomNode !== 'undefined' ? opts.listenOnDomNode : null),\r\n horizontal: (typeof opts.horizontal !== 'undefined' ? opts.horizontal : 1 /* Auto */),\r\n horizontalScrollbarSize: (typeof opts.horizontalScrollbarSize !== 'undefined' ? opts.horizontalScrollbarSize : 10),\r\n horizontalSliderSize: (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : 0),\r\n horizontalHasArrows: (typeof opts.horizontalHasArrows !== 'undefined' ? opts.horizontalHasArrows : false),\r\n vertical: (typeof opts.vertical !== 'undefined' ? opts.vertical : 1 /* Auto */),\r\n verticalScrollbarSize: (typeof opts.verticalScrollbarSize !== 'undefined' ? opts.verticalScrollbarSize : 10),\r\n verticalHasArrows: (typeof opts.verticalHasArrows !== 'undefined' ? opts.verticalHasArrows : false),\r\n verticalSliderSize: (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : 0)\r\n };\r\n result.horizontalSliderSize = (typeof opts.horizontalSliderSize !== 'undefined' ? opts.horizontalSliderSize : result.horizontalScrollbarSize);\r\n result.verticalSliderSize = (typeof opts.verticalSliderSize !== 'undefined' ? opts.verticalSliderSize : result.verticalScrollbarSize);\r\n // Defaults are different on Macs\r\n if (platform.isMacintosh) {\r\n result.className += ' mac';\r\n }\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../globalMouseMoveMonitor.js';\r\nimport { Widget } from '../widget.js';\r\nimport { IntervalTimer, TimeoutTimer } from '../../../common/async.js';\r\nimport { addClasses } from '../../dom.js';\r\n/**\r\n * The arrow image size.\r\n */\r\nexport const ARROW_IMG_SIZE = 11;\r\nexport class ScrollbarArrow extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._onActivate = opts.onActivate;\r\n this.bgDomNode = document.createElement('div');\r\n this.bgDomNode.className = 'arrow-background';\r\n this.bgDomNode.style.position = 'absolute';\r\n this.bgDomNode.style.width = opts.bgWidth + 'px';\r\n this.bgDomNode.style.height = opts.bgHeight + 'px';\r\n if (typeof opts.top !== 'undefined') {\r\n this.bgDomNode.style.top = '0px';\r\n }\r\n if (typeof opts.left !== 'undefined') {\r\n this.bgDomNode.style.left = '0px';\r\n }\r\n if (typeof opts.bottom !== 'undefined') {\r\n this.bgDomNode.style.bottom = '0px';\r\n }\r\n if (typeof opts.right !== 'undefined') {\r\n this.bgDomNode.style.right = '0px';\r\n }\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = opts.className;\r\n addClasses(this.domNode, opts.icon.classNames);\r\n this.domNode.style.position = 'absolute';\r\n this.domNode.style.width = ARROW_IMG_SIZE + 'px';\r\n this.domNode.style.height = ARROW_IMG_SIZE + 'px';\r\n if (typeof opts.top !== 'undefined') {\r\n this.domNode.style.top = opts.top + 'px';\r\n }\r\n if (typeof opts.left !== 'undefined') {\r\n this.domNode.style.left = opts.left + 'px';\r\n }\r\n if (typeof opts.bottom !== 'undefined') {\r\n this.domNode.style.bottom = opts.bottom + 'px';\r\n }\r\n if (typeof opts.right !== 'undefined') {\r\n this.domNode.style.right = opts.right + 'px';\r\n }\r\n this._mouseMoveMonitor = this._register(new GlobalMouseMoveMonitor());\r\n this.onmousedown(this.bgDomNode, (e) => this._arrowMouseDown(e));\r\n this.onmousedown(this.domNode, (e) => this._arrowMouseDown(e));\r\n this._mousedownRepeatTimer = this._register(new IntervalTimer());\r\n this._mousedownScheduleRepeatTimer = this._register(new TimeoutTimer());\r\n }\r\n _arrowMouseDown(e) {\r\n let scheduleRepeater = () => {\r\n this._mousedownRepeatTimer.cancelAndSet(() => this._onActivate(), 1000 / 24);\r\n };\r\n this._onActivate();\r\n this._mousedownRepeatTimer.cancel();\r\n this._mousedownScheduleRepeatTimer.cancelAndSet(scheduleRepeater, 200);\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, (mouseMoveData) => {\r\n /* Intentional empty */\r\n }, () => {\r\n this._mousedownRepeatTimer.cancel();\r\n this._mousedownScheduleRepeatTimer.cancel();\r\n });\r\n e.preventDefault();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * The minimal size of the slider (such that it can still be clickable) -- it is artificially enlarged.\r\n */\r\nconst MINIMUM_SLIDER_SIZE = 20;\r\nexport class ScrollbarState {\r\n constructor(arrowSize, scrollbarSize, oppositeScrollbarSize, visibleSize, scrollSize, scrollPosition) {\r\n this._scrollbarSize = Math.round(scrollbarSize);\r\n this._oppositeScrollbarSize = Math.round(oppositeScrollbarSize);\r\n this._arrowSize = Math.round(arrowSize);\r\n this._visibleSize = visibleSize;\r\n this._scrollSize = scrollSize;\r\n this._scrollPosition = scrollPosition;\r\n this._computedAvailableSize = 0;\r\n this._computedIsNeeded = false;\r\n this._computedSliderSize = 0;\r\n this._computedSliderRatio = 0;\r\n this._computedSliderPosition = 0;\r\n this._refreshComputedValues();\r\n }\r\n clone() {\r\n return new ScrollbarState(this._arrowSize, this._scrollbarSize, this._oppositeScrollbarSize, this._visibleSize, this._scrollSize, this._scrollPosition);\r\n }\r\n setVisibleSize(visibleSize) {\r\n let iVisibleSize = Math.round(visibleSize);\r\n if (this._visibleSize !== iVisibleSize) {\r\n this._visibleSize = iVisibleSize;\r\n this._refreshComputedValues();\r\n return true;\r\n }\r\n return false;\r\n }\r\n setScrollSize(scrollSize) {\r\n let iScrollSize = Math.round(scrollSize);\r\n if (this._scrollSize !== iScrollSize) {\r\n this._scrollSize = iScrollSize;\r\n this._refreshComputedValues();\r\n return true;\r\n }\r\n return false;\r\n }\r\n setScrollPosition(scrollPosition) {\r\n let iScrollPosition = Math.round(scrollPosition);\r\n if (this._scrollPosition !== iScrollPosition) {\r\n this._scrollPosition = iScrollPosition;\r\n this._refreshComputedValues();\r\n return true;\r\n }\r\n return false;\r\n }\r\n setScrollbarSize(scrollbarSize) {\r\n this._scrollbarSize = scrollbarSize;\r\n }\r\n static _computeValues(oppositeScrollbarSize, arrowSize, visibleSize, scrollSize, scrollPosition) {\r\n const computedAvailableSize = Math.max(0, visibleSize - oppositeScrollbarSize);\r\n const computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * arrowSize);\r\n const computedIsNeeded = (scrollSize > 0 && scrollSize > visibleSize);\r\n if (!computedIsNeeded) {\r\n // There is no need for a slider\r\n return {\r\n computedAvailableSize: Math.round(computedAvailableSize),\r\n computedIsNeeded: computedIsNeeded,\r\n computedSliderSize: Math.round(computedRepresentableSize),\r\n computedSliderRatio: 0,\r\n computedSliderPosition: 0,\r\n };\r\n }\r\n // We must artificially increase the size of the slider if needed, since the slider would be too small to grab with the mouse otherwise\r\n const computedSliderSize = Math.round(Math.max(MINIMUM_SLIDER_SIZE, Math.floor(visibleSize * computedRepresentableSize / scrollSize)));\r\n // The slider can move from 0 to `computedRepresentableSize` - `computedSliderSize`\r\n // in the same way `scrollPosition` can move from 0 to `scrollSize` - `visibleSize`.\r\n const computedSliderRatio = (computedRepresentableSize - computedSliderSize) / (scrollSize - visibleSize);\r\n const computedSliderPosition = (scrollPosition * computedSliderRatio);\r\n return {\r\n computedAvailableSize: Math.round(computedAvailableSize),\r\n computedIsNeeded: computedIsNeeded,\r\n computedSliderSize: Math.round(computedSliderSize),\r\n computedSliderRatio: computedSliderRatio,\r\n computedSliderPosition: Math.round(computedSliderPosition),\r\n };\r\n }\r\n _refreshComputedValues() {\r\n const r = ScrollbarState._computeValues(this._oppositeScrollbarSize, this._arrowSize, this._visibleSize, this._scrollSize, this._scrollPosition);\r\n this._computedAvailableSize = r.computedAvailableSize;\r\n this._computedIsNeeded = r.computedIsNeeded;\r\n this._computedSliderSize = r.computedSliderSize;\r\n this._computedSliderRatio = r.computedSliderRatio;\r\n this._computedSliderPosition = r.computedSliderPosition;\r\n }\r\n getArrowSize() {\r\n return this._arrowSize;\r\n }\r\n getScrollPosition() {\r\n return this._scrollPosition;\r\n }\r\n getRectangleLargeSize() {\r\n return this._computedAvailableSize;\r\n }\r\n getRectangleSmallSize() {\r\n return this._scrollbarSize;\r\n }\r\n isNeeded() {\r\n return this._computedIsNeeded;\r\n }\r\n getSliderSize() {\r\n return this._computedSliderSize;\r\n }\r\n getSliderPosition() {\r\n return this._computedSliderPosition;\r\n }\r\n /**\r\n * Compute a desired `scrollPosition` such that `offset` ends up in the center of the slider.\r\n * `offset` is based on the same coordinate system as the `sliderPosition`.\r\n */\r\n getDesiredScrollPositionFromOffset(offset) {\r\n if (!this._computedIsNeeded) {\r\n // no need for a slider\r\n return 0;\r\n }\r\n let desiredSliderPosition = offset - this._arrowSize - this._computedSliderSize / 2;\r\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\r\n }\r\n /**\r\n * Compute a desired `scrollPosition` such that the slider moves by `delta`.\r\n */\r\n getDesiredScrollPositionFromDelta(delta) {\r\n if (!this._computedIsNeeded) {\r\n // no need for a slider\r\n return 0;\r\n }\r\n let desiredSliderPosition = this._computedSliderPosition + delta;\r\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TimeoutTimer } from '../../../common/async.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nexport class ScrollbarVisibilityController extends Disposable {\r\n constructor(visibility, visibleClassName, invisibleClassName) {\r\n super();\r\n this._visibility = visibility;\r\n this._visibleClassName = visibleClassName;\r\n this._invisibleClassName = invisibleClassName;\r\n this._domNode = null;\r\n this._isVisible = false;\r\n this._isNeeded = false;\r\n this._shouldBeVisible = false;\r\n this._revealTimer = this._register(new TimeoutTimer());\r\n }\r\n // ----------------- Hide / Reveal\r\n applyVisibilitySetting(shouldBeVisible) {\r\n if (this._visibility === 2 /* Hidden */) {\r\n return false;\r\n }\r\n if (this._visibility === 3 /* Visible */) {\r\n return true;\r\n }\r\n return shouldBeVisible;\r\n }\r\n setShouldBeVisible(rawShouldBeVisible) {\r\n let shouldBeVisible = this.applyVisibilitySetting(rawShouldBeVisible);\r\n if (this._shouldBeVisible !== shouldBeVisible) {\r\n this._shouldBeVisible = shouldBeVisible;\r\n this.ensureVisibility();\r\n }\r\n }\r\n setIsNeeded(isNeeded) {\r\n if (this._isNeeded !== isNeeded) {\r\n this._isNeeded = isNeeded;\r\n this.ensureVisibility();\r\n }\r\n }\r\n setDomNode(domNode) {\r\n this._domNode = domNode;\r\n this._domNode.setClassName(this._invisibleClassName);\r\n // Now that the flags & the dom node are in a consistent state, ensure the Hidden/Visible configuration\r\n this.setShouldBeVisible(false);\r\n }\r\n ensureVisibility() {\r\n if (!this._isNeeded) {\r\n // Nothing to be rendered\r\n this._hide(false);\r\n return;\r\n }\r\n if (this._shouldBeVisible) {\r\n this._reveal();\r\n }\r\n else {\r\n this._hide(true);\r\n }\r\n }\r\n _reveal() {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n // The CSS animation doesn't play otherwise\r\n this._revealTimer.setIfNotSet(() => {\r\n if (this._domNode) {\r\n this._domNode.setClassName(this._visibleClassName);\r\n }\r\n }, 0);\r\n }\r\n _hide(withFadeAway) {\r\n this._revealTimer.cancel();\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n if (this._domNode) {\r\n this._domNode.setClassName(this._invisibleClassName + (withFadeAway ? ' fade' : ''));\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardWheelEvent } from '../../mouseEvent.js';\r\nimport { AbstractScrollbar } from './abstractScrollbar.js';\r\nimport { ARROW_IMG_SIZE } from './scrollbarArrow.js';\r\nimport { ScrollbarState } from './scrollbarState.js';\r\nimport { Codicon, registerIcon } from '../../../common/codicons.js';\r\nconst scrollbarButtonUpIcon = registerIcon('scrollbar-button-up', Codicon.triangleUp);\r\nconst scrollbarButtonDownIcon = registerIcon('scrollbar-button-down', Codicon.triangleDown);\r\nexport class VerticalScrollbar extends AbstractScrollbar {\r\n constructor(scrollable, options, host) {\r\n const scrollDimensions = scrollable.getScrollDimensions();\r\n const scrollPosition = scrollable.getCurrentScrollPosition();\r\n super({\r\n lazyRender: options.lazyRender,\r\n host: host,\r\n scrollbarState: new ScrollbarState((options.verticalHasArrows ? options.arrowSize : 0), (options.vertical === 2 /* Hidden */ ? 0 : options.verticalScrollbarSize), \r\n // give priority to vertical scroll bar over horizontal and let it scroll all the way to the bottom\r\n 0, scrollDimensions.height, scrollDimensions.scrollHeight, scrollPosition.scrollTop),\r\n visibility: options.vertical,\r\n extraScrollbarClassName: 'vertical',\r\n scrollable: scrollable\r\n });\r\n if (options.verticalHasArrows) {\r\n let arrowDelta = (options.arrowSize - ARROW_IMG_SIZE) / 2;\r\n let scrollbarDelta = (options.verticalScrollbarSize - ARROW_IMG_SIZE) / 2;\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonUpIcon,\r\n top: arrowDelta,\r\n left: scrollbarDelta,\r\n bottom: undefined,\r\n right: undefined,\r\n bgWidth: options.verticalScrollbarSize,\r\n bgHeight: options.arrowSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, 1)),\r\n });\r\n this._createArrow({\r\n className: 'scra',\r\n icon: scrollbarButtonDownIcon,\r\n top: undefined,\r\n left: scrollbarDelta,\r\n bottom: arrowDelta,\r\n right: undefined,\r\n bgWidth: options.verticalScrollbarSize,\r\n bgHeight: options.arrowSize,\r\n onActivate: () => this._host.onMouseWheel(new StandardWheelEvent(null, 0, -1)),\r\n });\r\n }\r\n this._createSlider(0, Math.floor((options.verticalScrollbarSize - options.verticalSliderSize) / 2), options.verticalSliderSize, undefined);\r\n }\r\n _updateSlider(sliderSize, sliderPosition) {\r\n this.slider.setHeight(sliderSize);\r\n this.slider.setTop(sliderPosition);\r\n }\r\n _renderDomNode(largeSize, smallSize) {\r\n this.domNode.setWidth(smallSize);\r\n this.domNode.setHeight(largeSize);\r\n this.domNode.setRight(0);\r\n this.domNode.setTop(0);\r\n }\r\n onDidScroll(e) {\r\n this._shouldRender = this._onElementScrollSize(e.scrollHeight) || this._shouldRender;\r\n this._shouldRender = this._onElementScrollPosition(e.scrollTop) || this._shouldRender;\r\n this._shouldRender = this._onElementSize(e.height) || this._shouldRender;\r\n return this._shouldRender;\r\n }\r\n _mouseDownRelativePosition(offsetX, offsetY) {\r\n return offsetY;\r\n }\r\n _sliderMousePosition(e) {\r\n return e.posy;\r\n }\r\n _sliderOrthogonalMousePosition(e) {\r\n return e.posx;\r\n }\r\n _updateScrollbarSize(size) {\r\n this.slider.setWidth(size);\r\n }\r\n writeScrollPosition(target, scrollPosition) {\r\n target.scrollTop = scrollPosition;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './splitview.css';\r\nimport { toDisposable, Disposable, combinedDisposable } from '../../../common/lifecycle.js';\r\nimport { Event, Emitter } from '../../../common/event.js';\r\nimport * as types from '../../../common/types.js';\r\nimport * as dom from '../../dom.js';\r\nimport { clamp } from '../../../common/numbers.js';\r\nimport { range, firstIndex, pushToStart, pushToEnd } from '../../../common/arrays.js';\r\nimport { Sash } from '../sash/sash.js';\r\nimport { Color } from '../../../common/color.js';\r\nimport { domEvent } from '../../event.js';\r\nconst defaultStyles = {\r\n separatorBorder: Color.transparent\r\n};\r\nclass ViewItem {\r\n constructor(container, view, size, disposable) {\r\n this.container = container;\r\n this.view = view;\r\n this.disposable = disposable;\r\n this._cachedVisibleSize = undefined;\r\n if (typeof size === 'number') {\r\n this._size = size;\r\n this._cachedVisibleSize = undefined;\r\n dom.addClass(container, 'visible');\r\n }\r\n else {\r\n this._size = 0;\r\n this._cachedVisibleSize = size.cachedVisibleSize;\r\n }\r\n }\r\n set size(size) {\r\n this._size = size;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get visible() {\r\n return typeof this._cachedVisibleSize === 'undefined';\r\n }\r\n setVisible(visible, size) {\r\n if (visible === this.visible) {\r\n return;\r\n }\r\n if (visible) {\r\n this.size = clamp(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize);\r\n this._cachedVisibleSize = undefined;\r\n }\r\n else {\r\n this._cachedVisibleSize = typeof size === 'number' ? size : this.size;\r\n this.size = 0;\r\n }\r\n dom.toggleClass(this.container, 'visible', visible);\r\n if (this.view.setVisible) {\r\n this.view.setVisible(visible);\r\n }\r\n }\r\n get minimumSize() { return this.visible ? this.view.minimumSize : 0; }\r\n get viewMinimumSize() { return this.view.minimumSize; }\r\n get maximumSize() { return this.visible ? this.view.maximumSize : 0; }\r\n get viewMaximumSize() { return this.view.maximumSize; }\r\n get priority() { return this.view.priority; }\r\n get snap() { return !!this.view.snap; }\r\n set enabled(enabled) {\r\n this.container.style.pointerEvents = enabled ? '' : 'none';\r\n }\r\n layout(offset, layoutContext) {\r\n this.layoutContainer(offset);\r\n this.view.layout(this.size, offset, layoutContext);\r\n }\r\n dispose() {\r\n this.disposable.dispose();\r\n return this.view;\r\n }\r\n}\r\nclass VerticalViewItem extends ViewItem {\r\n layoutContainer(offset) {\r\n this.container.style.top = `${offset}px`;\r\n this.container.style.height = `${this.size}px`;\r\n }\r\n}\r\nclass HorizontalViewItem extends ViewItem {\r\n layoutContainer(offset) {\r\n this.container.style.left = `${offset}px`;\r\n this.container.style.width = `${this.size}px`;\r\n }\r\n}\r\nvar State;\r\n(function (State) {\r\n State[State[\"Idle\"] = 0] = \"Idle\";\r\n State[State[\"Busy\"] = 1] = \"Busy\";\r\n})(State || (State = {}));\r\nexport var Sizing;\r\n(function (Sizing) {\r\n Sizing.Distribute = { type: 'distribute' };\r\n function Split(index) { return { type: 'split', index }; }\r\n Sizing.Split = Split;\r\n function Invisible(cachedVisibleSize) { return { type: 'invisible', cachedVisibleSize }; }\r\n Sizing.Invisible = Invisible;\r\n})(Sizing || (Sizing = {}));\r\nexport class SplitView extends Disposable {\r\n constructor(container, options = {}) {\r\n super();\r\n this.size = 0;\r\n this.contentSize = 0;\r\n this.proportions = undefined;\r\n this.viewItems = [];\r\n this.sashItems = [];\r\n this.state = State.Idle;\r\n this._onDidSashChange = this._register(new Emitter());\r\n this.onDidSashChange = this._onDidSashChange.event;\r\n this._onDidSashReset = this._register(new Emitter());\r\n this._startSnappingEnabled = true;\r\n this._endSnappingEnabled = true;\r\n this.orientation = types.isUndefined(options.orientation) ? 0 /* VERTICAL */ : options.orientation;\r\n this.inverseAltBehavior = !!options.inverseAltBehavior;\r\n this.proportionalLayout = types.isUndefined(options.proportionalLayout) ? true : !!options.proportionalLayout;\r\n this.el = document.createElement('div');\r\n dom.addClass(this.el, 'monaco-split-view2');\r\n dom.addClass(this.el, this.orientation === 0 /* VERTICAL */ ? 'vertical' : 'horizontal');\r\n container.appendChild(this.el);\r\n this.sashContainer = dom.append(this.el, dom.$('.sash-container'));\r\n this.viewContainer = dom.append(this.el, dom.$('.split-view-container'));\r\n this.style(options.styles || defaultStyles);\r\n // We have an existing set of view, add them now\r\n if (options.descriptor) {\r\n this.size = options.descriptor.size;\r\n options.descriptor.views.forEach((viewDescriptor, index) => {\r\n const sizing = types.isUndefined(viewDescriptor.visible) || viewDescriptor.visible ? viewDescriptor.size : { type: 'invisible', cachedVisibleSize: viewDescriptor.size };\r\n const view = viewDescriptor.view;\r\n this.doAddView(view, sizing, index, true);\r\n });\r\n // Initialize content size and proportions for first layout\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.saveProportions();\r\n }\r\n }\r\n get orthogonalStartSash() { return this._orthogonalStartSash; }\r\n set orthogonalStartSash(sash) {\r\n for (const sashItem of this.sashItems) {\r\n sashItem.sash.orthogonalStartSash = sash;\r\n }\r\n this._orthogonalStartSash = sash;\r\n }\r\n get orthogonalEndSash() { return this._orthogonalEndSash; }\r\n set orthogonalEndSash(sash) {\r\n for (const sashItem of this.sashItems) {\r\n sashItem.sash.orthogonalEndSash = sash;\r\n }\r\n this._orthogonalEndSash = sash;\r\n }\r\n get startSnappingEnabled() { return this._startSnappingEnabled; }\r\n set startSnappingEnabled(startSnappingEnabled) {\r\n if (this._startSnappingEnabled === startSnappingEnabled) {\r\n return;\r\n }\r\n this._startSnappingEnabled = startSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n get endSnappingEnabled() { return this._endSnappingEnabled; }\r\n set endSnappingEnabled(endSnappingEnabled) {\r\n if (this._endSnappingEnabled === endSnappingEnabled) {\r\n return;\r\n }\r\n this._endSnappingEnabled = endSnappingEnabled;\r\n this.updateSashEnablement();\r\n }\r\n style(styles) {\r\n if (styles.separatorBorder.isTransparent()) {\r\n dom.removeClass(this.el, 'separator-border');\r\n this.el.style.removeProperty('--separator-border');\r\n }\r\n else {\r\n dom.addClass(this.el, 'separator-border');\r\n this.el.style.setProperty('--separator-border', styles.separatorBorder.toString());\r\n }\r\n }\r\n addView(view, size, index = this.viewItems.length, skipLayout) {\r\n this.doAddView(view, size, index, skipLayout);\r\n }\r\n layout(size, layoutContext) {\r\n const previousSize = Math.max(this.size, this.contentSize);\r\n this.size = size;\r\n this.layoutContext = layoutContext;\r\n if (!this.proportions) {\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* Low */);\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n this.resize(this.viewItems.length - 1, size - previousSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n else {\r\n for (let i = 0; i < this.viewItems.length; i++) {\r\n const item = this.viewItems[i];\r\n item.size = clamp(Math.round(this.proportions[i] * size), item.minimumSize, item.maximumSize);\r\n }\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n saveProportions() {\r\n if (this.proportionalLayout && this.contentSize > 0) {\r\n this.proportions = this.viewItems.map(i => i.size / this.contentSize);\r\n }\r\n }\r\n onSashStart({ sash, start, alt }) {\r\n for (const item of this.viewItems) {\r\n item.enabled = false;\r\n }\r\n const index = firstIndex(this.sashItems, item => item.sash === sash);\r\n // This way, we can press Alt while we resize a sash, macOS style!\r\n const disposable = combinedDisposable(domEvent(document.body, 'keydown')(e => resetSashDragState(this.sashDragState.current, e.altKey)), domEvent(document.body, 'keyup')(() => resetSashDragState(this.sashDragState.current, false)));\r\n const resetSashDragState = (start, alt) => {\r\n const sizes = this.viewItems.map(i => i.size);\r\n let minDelta = Number.NEGATIVE_INFINITY;\r\n let maxDelta = Number.POSITIVE_INFINITY;\r\n if (this.inverseAltBehavior) {\r\n alt = !alt;\r\n }\r\n if (alt) {\r\n // When we're using the last sash with Alt, we're resizing\r\n // the view to the left/up, instead of right/down as usual\r\n // Thus, we must do the inverse of the usual\r\n const isLastSash = index === this.sashItems.length - 1;\r\n if (isLastSash) {\r\n const viewItem = this.viewItems[index];\r\n minDelta = (viewItem.minimumSize - viewItem.size) / 2;\r\n maxDelta = (viewItem.maximumSize - viewItem.size) / 2;\r\n }\r\n else {\r\n const viewItem = this.viewItems[index + 1];\r\n minDelta = (viewItem.size - viewItem.maximumSize) / 2;\r\n maxDelta = (viewItem.size - viewItem.minimumSize) / 2;\r\n }\r\n }\r\n let snapBefore;\r\n let snapAfter;\r\n if (!alt) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].viewMaximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].viewMaximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number') {\r\n const viewItem = this.viewItems[snapBeforeIndex];\r\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\r\n snapBefore = {\r\n index: snapBeforeIndex,\r\n limitDelta: viewItem.visible ? minDelta - halfSize : minDelta + halfSize,\r\n size: viewItem.size\r\n };\r\n }\r\n if (typeof snapAfterIndex === 'number') {\r\n const viewItem = this.viewItems[snapAfterIndex];\r\n const halfSize = Math.floor(viewItem.viewMinimumSize / 2);\r\n snapAfter = {\r\n index: snapAfterIndex,\r\n limitDelta: viewItem.visible ? maxDelta + halfSize : maxDelta - halfSize,\r\n size: viewItem.size\r\n };\r\n }\r\n }\r\n this.sashDragState = { start, current: start, index, sizes, minDelta, maxDelta, alt, snapBefore, snapAfter, disposable };\r\n };\r\n resetSashDragState(start, alt);\r\n }\r\n onSashChange({ current }) {\r\n const { index, start, sizes, alt, minDelta, maxDelta, snapBefore, snapAfter } = this.sashDragState;\r\n this.sashDragState.current = current;\r\n const delta = current - start;\r\n const newDelta = this.resize(index, delta, sizes, undefined, undefined, minDelta, maxDelta, snapBefore, snapAfter);\r\n if (alt) {\r\n const isLastSash = index === this.sashItems.length - 1;\r\n const newSizes = this.viewItems.map(i => i.size);\r\n const viewItemIndex = isLastSash ? index : index + 1;\r\n const viewItem = this.viewItems[viewItemIndex];\r\n const newMinDelta = viewItem.size - viewItem.maximumSize;\r\n const newMaxDelta = viewItem.size - viewItem.minimumSize;\r\n const resizeIndex = isLastSash ? index - 1 : index + 1;\r\n this.resize(resizeIndex, -newDelta, newSizes, undefined, undefined, newMinDelta, newMaxDelta);\r\n }\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n onSashEnd(index) {\r\n this._onDidSashChange.fire(index);\r\n this.sashDragState.disposable.dispose();\r\n this.saveProportions();\r\n for (const item of this.viewItems) {\r\n item.enabled = true;\r\n }\r\n }\r\n onViewChange(item, size) {\r\n const index = this.viewItems.indexOf(item);\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n size = typeof size === 'number' ? size : item.size;\r\n size = clamp(size, item.minimumSize, item.maximumSize);\r\n if (this.inverseAltBehavior && index > 0) {\r\n // In this case, we want the view to grow or shrink both sides equally\r\n // so we just resize the \"left\" side by half and let `resize` do the clamping magic\r\n this.resize(index - 1, Math.floor((item.size - size) / 2));\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n }\r\n else {\r\n item.size = size;\r\n this.relayout([index], undefined);\r\n }\r\n }\r\n resizeView(index, size) {\r\n if (this.state !== State.Idle) {\r\n throw new Error('Cant modify splitview');\r\n }\r\n this.state = State.Busy;\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return;\r\n }\r\n const indexes = range(this.viewItems.length).filter(i => i !== index);\r\n const lowPriorityIndexes = [...indexes.filter(i => this.viewItems[i].priority === 1 /* Low */), index];\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n const item = this.viewItems[index];\r\n size = Math.round(size);\r\n size = clamp(size, item.minimumSize, Math.min(item.maximumSize, this.size));\r\n item.size = size;\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n this.state = State.Idle;\r\n }\r\n distributeViewSizes() {\r\n const flexibleViewItems = [];\r\n let flexibleSize = 0;\r\n for (const item of this.viewItems) {\r\n if (item.maximumSize - item.minimumSize > 0) {\r\n flexibleViewItems.push(item);\r\n flexibleSize += item.size;\r\n }\r\n }\r\n const size = Math.floor(flexibleSize / flexibleViewItems.length);\r\n for (const item of flexibleViewItems) {\r\n item.size = clamp(size, item.minimumSize, item.maximumSize);\r\n }\r\n const indexes = range(this.viewItems.length);\r\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* Low */);\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n this.relayout(lowPriorityIndexes, highPriorityIndexes);\r\n }\r\n getViewSize(index) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return -1;\r\n }\r\n return this.viewItems[index].size;\r\n }\r\n doAddView(view, size, index = this.viewItems.length, skipLayout) {\r\n if (this.state !== State.Idle) {\r\n throw new Error('Cant modify splitview');\r\n }\r\n this.state = State.Busy;\r\n // Add view\r\n const container = dom.$('.split-view-view');\r\n if (index === this.viewItems.length) {\r\n this.viewContainer.appendChild(container);\r\n }\r\n else {\r\n this.viewContainer.insertBefore(container, this.viewContainer.children.item(index));\r\n }\r\n const onChangeDisposable = view.onDidChange(size => this.onViewChange(item, size));\r\n const containerDisposable = toDisposable(() => this.viewContainer.removeChild(container));\r\n const disposable = combinedDisposable(onChangeDisposable, containerDisposable);\r\n let viewSize;\r\n if (typeof size === 'number') {\r\n viewSize = size;\r\n }\r\n else if (size.type === 'split') {\r\n viewSize = this.getViewSize(size.index) / 2;\r\n }\r\n else if (size.type === 'invisible') {\r\n viewSize = { cachedVisibleSize: size.cachedVisibleSize };\r\n }\r\n else {\r\n viewSize = view.minimumSize;\r\n }\r\n const item = this.orientation === 0 /* VERTICAL */\r\n ? new VerticalViewItem(container, view, viewSize, disposable)\r\n : new HorizontalViewItem(container, view, viewSize, disposable);\r\n this.viewItems.splice(index, 0, item);\r\n // Add sash\r\n if (this.viewItems.length > 1) {\r\n const sash = this.orientation === 0 /* VERTICAL */\r\n ? new Sash(this.sashContainer, { getHorizontalSashTop: (sash) => this.getSashPosition(sash) }, {\r\n orientation: 1 /* HORIZONTAL */,\r\n orthogonalStartSash: this.orthogonalStartSash,\r\n orthogonalEndSash: this.orthogonalEndSash\r\n })\r\n : new Sash(this.sashContainer, { getVerticalSashLeft: (sash) => this.getSashPosition(sash) }, {\r\n orientation: 0 /* VERTICAL */,\r\n orthogonalStartSash: this.orthogonalStartSash,\r\n orthogonalEndSash: this.orthogonalEndSash\r\n });\r\n const sashEventMapper = this.orientation === 0 /* VERTICAL */\r\n ? (e) => ({ sash, start: e.startY, current: e.currentY, alt: e.altKey })\r\n : (e) => ({ sash, start: e.startX, current: e.currentX, alt: e.altKey });\r\n const onStart = Event.map(sash.onDidStart, sashEventMapper);\r\n const onStartDisposable = onStart(this.onSashStart, this);\r\n const onChange = Event.map(sash.onDidChange, sashEventMapper);\r\n const onChangeDisposable = onChange(this.onSashChange, this);\r\n const onEnd = Event.map(sash.onDidEnd, () => firstIndex(this.sashItems, item => item.sash === sash));\r\n const onEndDisposable = onEnd(this.onSashEnd, this);\r\n const onDidResetDisposable = sash.onDidReset(() => {\r\n const index = firstIndex(this.sashItems, item => item.sash === sash);\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n if (typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible) {\r\n return;\r\n }\r\n if (typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible) {\r\n return;\r\n }\r\n this._onDidSashReset.fire(index);\r\n });\r\n const disposable = combinedDisposable(onStartDisposable, onChangeDisposable, onEndDisposable, onDidResetDisposable, sash);\r\n const sashItem = { sash, disposable };\r\n this.sashItems.splice(index - 1, 0, sashItem);\r\n }\r\n container.appendChild(view.element);\r\n let highPriorityIndexes;\r\n if (typeof size !== 'number' && size.type === 'split') {\r\n highPriorityIndexes = [size.index];\r\n }\r\n if (!skipLayout) {\r\n this.relayout([index], highPriorityIndexes);\r\n }\r\n this.state = State.Idle;\r\n if (!skipLayout && typeof size !== 'number' && size.type === 'distribute') {\r\n this.distributeViewSizes();\r\n }\r\n }\r\n relayout(lowPriorityIndexes, highPriorityIndexes) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n this.resize(this.viewItems.length - 1, this.size - contentSize, undefined, lowPriorityIndexes, highPriorityIndexes);\r\n this.distributeEmptySpace();\r\n this.layoutViews();\r\n this.saveProportions();\r\n }\r\n resize(index, delta, sizes = this.viewItems.map(i => i.size), lowPriorityIndexes, highPriorityIndexes, overloadMinDelta = Number.NEGATIVE_INFINITY, overloadMaxDelta = Number.POSITIVE_INFINITY, snapBefore, snapAfter) {\r\n if (index < 0 || index >= this.viewItems.length) {\r\n return 0;\r\n }\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n if (highPriorityIndexes) {\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(upIndexes, index);\r\n pushToStart(downIndexes, index);\r\n }\r\n }\r\n if (lowPriorityIndexes) {\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(upIndexes, index);\r\n pushToEnd(downIndexes, index);\r\n }\r\n }\r\n const upItems = upIndexes.map(i => this.viewItems[i]);\r\n const upSizes = upIndexes.map(i => sizes[i]);\r\n const downItems = downIndexes.map(i => this.viewItems[i]);\r\n const downSizes = downIndexes.map(i => sizes[i]);\r\n const minDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].minimumSize - sizes[i]), 0);\r\n const maxDeltaUp = upIndexes.reduce((r, i) => r + (this.viewItems[i].maximumSize - sizes[i]), 0);\r\n const maxDeltaDown = downIndexes.length === 0 ? Number.POSITIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].minimumSize), 0);\r\n const minDeltaDown = downIndexes.length === 0 ? Number.NEGATIVE_INFINITY : downIndexes.reduce((r, i) => r + (sizes[i] - this.viewItems[i].maximumSize), 0);\r\n const minDelta = Math.max(minDeltaUp, minDeltaDown, overloadMinDelta);\r\n const maxDelta = Math.min(maxDeltaDown, maxDeltaUp, overloadMaxDelta);\r\n let snapped = false;\r\n if (snapBefore) {\r\n const snapView = this.viewItems[snapBefore.index];\r\n const visible = delta >= snapBefore.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapBefore.size);\r\n }\r\n if (!snapped && snapAfter) {\r\n const snapView = this.viewItems[snapAfter.index];\r\n const visible = delta < snapAfter.limitDelta;\r\n snapped = visible !== snapView.visible;\r\n snapView.setVisible(visible, snapAfter.size);\r\n }\r\n if (snapped) {\r\n return this.resize(index, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);\r\n }\r\n delta = clamp(delta, minDelta, maxDelta);\r\n for (let i = 0, deltaUp = delta; i < upItems.length; i++) {\r\n const item = upItems[i];\r\n const size = clamp(upSizes[i] + deltaUp, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - upSizes[i];\r\n deltaUp -= viewDelta;\r\n item.size = size;\r\n }\r\n for (let i = 0, deltaDown = delta; i < downItems.length; i++) {\r\n const item = downItems[i];\r\n const size = clamp(downSizes[i] - deltaDown, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - downSizes[i];\r\n deltaDown += viewDelta;\r\n item.size = size;\r\n }\r\n return delta;\r\n }\r\n distributeEmptySpace(lowPriorityIndex) {\r\n const contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n let emptyDelta = this.size - contentSize;\r\n const indexes = range(this.viewItems.length - 1, -1);\r\n const lowPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 1 /* Low */);\r\n const highPriorityIndexes = indexes.filter(i => this.viewItems[i].priority === 2 /* High */);\r\n for (const index of highPriorityIndexes) {\r\n pushToStart(indexes, index);\r\n }\r\n for (const index of lowPriorityIndexes) {\r\n pushToEnd(indexes, index);\r\n }\r\n if (typeof lowPriorityIndex === 'number') {\r\n pushToEnd(indexes, lowPriorityIndex);\r\n }\r\n for (let i = 0; emptyDelta !== 0 && i < indexes.length; i++) {\r\n const item = this.viewItems[indexes[i]];\r\n const size = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);\r\n const viewDelta = size - item.size;\r\n emptyDelta -= viewDelta;\r\n item.size = size;\r\n }\r\n }\r\n layoutViews() {\r\n // Save new content size\r\n this.contentSize = this.viewItems.reduce((r, i) => r + i.size, 0);\r\n // Layout views\r\n let offset = 0;\r\n for (const viewItem of this.viewItems) {\r\n viewItem.layout(offset, this.layoutContext);\r\n offset += viewItem.size;\r\n }\r\n // Layout sashes\r\n this.sashItems.forEach(item => item.sash.layout());\r\n this.updateSashEnablement();\r\n }\r\n updateSashEnablement() {\r\n let previous = false;\r\n const collapsesDown = this.viewItems.map(i => previous = (i.size - i.minimumSize > 0) || previous);\r\n previous = false;\r\n const expandsDown = this.viewItems.map(i => previous = (i.maximumSize - i.size > 0) || previous);\r\n const reverseViews = [...this.viewItems].reverse();\r\n previous = false;\r\n const collapsesUp = reverseViews.map(i => previous = (i.size - i.minimumSize > 0) || previous).reverse();\r\n previous = false;\r\n const expandsUp = reverseViews.map(i => previous = (i.maximumSize - i.size > 0) || previous).reverse();\r\n let position = 0;\r\n for (let index = 0; index < this.sashItems.length; index++) {\r\n const { sash } = this.sashItems[index];\r\n const viewItem = this.viewItems[index];\r\n position += viewItem.size;\r\n const min = !(collapsesDown[index] && expandsUp[index + 1]);\r\n const max = !(expandsDown[index] && collapsesUp[index + 1]);\r\n if (min && max) {\r\n const upIndexes = range(index, -1);\r\n const downIndexes = range(index + 1, this.viewItems.length);\r\n const snapBeforeIndex = this.findFirstSnapIndex(upIndexes);\r\n const snapAfterIndex = this.findFirstSnapIndex(downIndexes);\r\n const snappedBefore = typeof snapBeforeIndex === 'number' && !this.viewItems[snapBeforeIndex].visible;\r\n const snappedAfter = typeof snapAfterIndex === 'number' && !this.viewItems[snapAfterIndex].visible;\r\n if (snappedBefore && collapsesUp[index] && (position > 0 || this.startSnappingEnabled)) {\r\n sash.state = 1 /* Minimum */;\r\n }\r\n else if (snappedAfter && collapsesDown[index] && (position < this.contentSize || this.endSnappingEnabled)) {\r\n sash.state = 2 /* Maximum */;\r\n }\r\n else {\r\n sash.state = 0 /* Disabled */;\r\n }\r\n }\r\n else if (min && !max) {\r\n sash.state = 1 /* Minimum */;\r\n }\r\n else if (!min && max) {\r\n sash.state = 2 /* Maximum */;\r\n }\r\n else {\r\n sash.state = 3 /* Enabled */;\r\n }\r\n }\r\n }\r\n getSashPosition(sash) {\r\n let position = 0;\r\n for (let i = 0; i < this.sashItems.length; i++) {\r\n position += this.viewItems[i].size;\r\n if (this.sashItems[i].sash === sash) {\r\n return position;\r\n }\r\n }\r\n return 0;\r\n }\r\n findFirstSnapIndex(indexes) {\r\n // visible views first\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (!viewItem.visible) {\r\n continue;\r\n }\r\n if (viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n // then, hidden views\r\n for (const index of indexes) {\r\n const viewItem = this.viewItems[index];\r\n if (viewItem.visible && viewItem.maximumSize - viewItem.minimumSize > 0) {\r\n return undefined;\r\n }\r\n if (!viewItem.visible && viewItem.snap) {\r\n return index;\r\n }\r\n }\r\n return undefined;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.viewItems.forEach(i => i.dispose());\r\n this.viewItems = [];\r\n this.sashItems.forEach(i => i.disposable.dispose());\r\n this.sashItems = [];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/tree.css';\r\nimport { dispose, Disposable, toDisposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { List, MouseController, DefaultKeyboardNavigationDelegate, isInputElement, isMonacoEditor } from '../list/listWidget.js';\r\nimport { append, $, toggleClass, getDomNodePagePosition, removeClass, addClass, hasClass, hasParentWithClass, createStyleSheet, clearNode, addClasses, removeClasses } from '../../dom.js';\r\nimport { Event, Relay, Emitter, EventBufferer } from '../../../common/event.js';\r\nimport { StandardKeyboardEvent } from '../../keyboardEvent.js';\r\nimport { TreeMouseEventTarget } from './tree.js';\r\nimport { StaticDND, DragAndDropData } from '../../dnd.js';\r\nimport { range, equals, distinctES6 } from '../../../common/arrays.js';\r\nimport { ElementsDragAndDropData } from '../list/listView.js';\r\nimport { domEvent } from '../../event.js';\r\nimport { fuzzyScore, FuzzyScore } from '../../../common/filters.js';\r\nimport { getVisibleState, isFilterResult } from './indexTreeModel.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { disposableTimeout } from '../../../common/async.js';\r\nimport { isMacintosh } from '../../../common/platform.js';\r\nimport { clamp } from '../../../common/numbers.js';\r\nimport { SetMap } from '../../../common/collections.js';\r\nimport { treeItemExpandedIcon, treeFilterOnTypeOnIcon, treeFilterOnTypeOffIcon, treeFilterClearIcon } from './treeIcons.js';\r\nclass TreeElementsDragAndDropData extends ElementsDragAndDropData {\r\n constructor(data) {\r\n super(data.elements.map(node => node.element));\r\n this.data = data;\r\n }\r\n}\r\nfunction asTreeDragAndDropData(data) {\r\n if (data instanceof ElementsDragAndDropData) {\r\n return new TreeElementsDragAndDropData(data);\r\n }\r\n return data;\r\n}\r\nclass TreeNodeListDragAndDrop {\r\n constructor(modelProvider, dnd) {\r\n this.modelProvider = modelProvider;\r\n this.dnd = dnd;\r\n this.autoExpandDisposable = Disposable.None;\r\n }\r\n getDragURI(node) {\r\n return this.dnd.getDragURI(node.element);\r\n }\r\n getDragLabel(nodes, originalEvent) {\r\n if (this.dnd.getDragLabel) {\r\n return this.dnd.getDragLabel(nodes.map(node => node.element), originalEvent);\r\n }\r\n return undefined;\r\n }\r\n onDragStart(data, originalEvent) {\r\n if (this.dnd.onDragStart) {\r\n this.dnd.onDragStart(asTreeDragAndDropData(data), originalEvent);\r\n }\r\n }\r\n onDragOver(data, targetNode, targetIndex, originalEvent, raw = true) {\r\n const result = this.dnd.onDragOver(asTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\r\n const didChangeAutoExpandNode = this.autoExpandNode !== targetNode;\r\n if (didChangeAutoExpandNode) {\r\n this.autoExpandDisposable.dispose();\r\n this.autoExpandNode = targetNode;\r\n }\r\n if (typeof targetNode === 'undefined') {\r\n return result;\r\n }\r\n if (didChangeAutoExpandNode && typeof result !== 'boolean' && result.autoExpand) {\r\n this.autoExpandDisposable = disposableTimeout(() => {\r\n const model = this.modelProvider();\r\n const ref = model.getNodeLocation(targetNode);\r\n if (model.isCollapsed(ref)) {\r\n model.setCollapsed(ref, false);\r\n }\r\n this.autoExpandNode = undefined;\r\n }, 500);\r\n }\r\n if (typeof result === 'boolean' || !result.accept || typeof result.bubble === 'undefined' || result.feedback) {\r\n if (!raw) {\r\n const accept = typeof result === 'boolean' ? result : result.accept;\r\n const effect = typeof result === 'boolean' ? undefined : result.effect;\r\n return { accept, effect, feedback: [targetIndex] };\r\n }\r\n return result;\r\n }\r\n if (result.bubble === 1 /* Up */) {\r\n const model = this.modelProvider();\r\n const ref = model.getNodeLocation(targetNode);\r\n const parentRef = model.getParentNodeLocation(ref);\r\n const parentNode = model.getNode(parentRef);\r\n const parentIndex = parentRef && model.getListIndex(parentRef);\r\n return this.onDragOver(data, parentNode, parentIndex, originalEvent, false);\r\n }\r\n const model = this.modelProvider();\r\n const ref = model.getNodeLocation(targetNode);\r\n const start = model.getListIndex(ref);\r\n const length = model.getListRenderCount(ref);\r\n return Object.assign(Object.assign({}, result), { feedback: range(start, start + length) });\r\n }\r\n drop(data, targetNode, targetIndex, originalEvent) {\r\n this.autoExpandDisposable.dispose();\r\n this.autoExpandNode = undefined;\r\n this.dnd.drop(asTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\r\n }\r\n onDragEnd(originalEvent) {\r\n if (this.dnd.onDragEnd) {\r\n this.dnd.onDragEnd(originalEvent);\r\n }\r\n }\r\n}\r\nfunction asListOptions(modelProvider, options) {\r\n return options && Object.assign(Object.assign({}, options), { identityProvider: options.identityProvider && {\r\n getId(el) {\r\n return options.identityProvider.getId(el.element);\r\n }\r\n }, dnd: options.dnd && new TreeNodeListDragAndDrop(modelProvider, options.dnd), multipleSelectionController: options.multipleSelectionController && {\r\n isSelectionSingleChangeEvent(e) {\r\n return options.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\r\n },\r\n isSelectionRangeChangeEvent(e) {\r\n return options.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\r\n }\r\n }, accessibilityProvider: options.accessibilityProvider && Object.assign(Object.assign({}, options.accessibilityProvider), { getSetSize(node) {\r\n const model = modelProvider();\r\n const ref = model.getNodeLocation(node);\r\n const parentRef = model.getParentNodeLocation(ref);\r\n const parentNode = model.getNode(parentRef);\r\n return parentNode.visibleChildrenCount;\r\n },\r\n getPosInSet(node) {\r\n return node.visibleChildIndex + 1;\r\n }, isChecked: options.accessibilityProvider && options.accessibilityProvider.isChecked ? (node) => {\r\n return options.accessibilityProvider.isChecked(node.element);\r\n } : undefined, getRole: options.accessibilityProvider && options.accessibilityProvider.getRole ? (node) => {\r\n return options.accessibilityProvider.getRole(node.element);\r\n } : () => 'treeitem', getAriaLabel(e) {\r\n return options.accessibilityProvider.getAriaLabel(e.element);\r\n },\r\n getWidgetAriaLabel() {\r\n return options.accessibilityProvider.getWidgetAriaLabel();\r\n }, getWidgetRole: options.accessibilityProvider && options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider.getWidgetRole() : () => 'tree', getAriaLevel(node) {\r\n return node.depth;\r\n }, getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {\r\n return options.accessibilityProvider.getActiveDescendantId(node.element);\r\n }) }), keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, options.keyboardNavigationLabelProvider), { getKeyboardNavigationLabel(node) {\r\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(node.element);\r\n } }), enableKeyboardNavigation: options.simpleKeyboardNavigation });\r\n}\r\nexport class ComposedTreeDelegate {\r\n constructor(delegate) {\r\n this.delegate = delegate;\r\n }\r\n getHeight(element) {\r\n return this.delegate.getHeight(element.element);\r\n }\r\n getTemplateId(element) {\r\n return this.delegate.getTemplateId(element.element);\r\n }\r\n hasDynamicHeight(element) {\r\n return !!this.delegate.hasDynamicHeight && this.delegate.hasDynamicHeight(element.element);\r\n }\r\n setDynamicHeight(element, height) {\r\n if (this.delegate.setDynamicHeight) {\r\n this.delegate.setDynamicHeight(element.element, height);\r\n }\r\n }\r\n}\r\nexport var RenderIndentGuides;\r\n(function (RenderIndentGuides) {\r\n RenderIndentGuides[\"None\"] = \"none\";\r\n RenderIndentGuides[\"OnHover\"] = \"onHover\";\r\n RenderIndentGuides[\"Always\"] = \"always\";\r\n})(RenderIndentGuides || (RenderIndentGuides = {}));\r\nclass EventCollection {\r\n constructor(onDidChange, _elements = []) {\r\n this._elements = _elements;\r\n this.onDidChange = Event.forEach(onDidChange, elements => this._elements = elements);\r\n }\r\n get elements() {\r\n return this._elements;\r\n }\r\n}\r\nclass TreeRenderer {\r\n constructor(renderer, modelProvider, onDidChangeCollapseState, activeNodes, options = {}) {\r\n this.renderer = renderer;\r\n this.modelProvider = modelProvider;\r\n this.activeNodes = activeNodes;\r\n this.renderedElements = new Map();\r\n this.renderedNodes = new Map();\r\n this.indent = TreeRenderer.DefaultIndent;\r\n this.hideTwistiesOfChildlessElements = false;\r\n this.shouldRenderIndentGuides = false;\r\n this.renderedIndentGuides = new SetMap();\r\n this.activeIndentNodes = new Set();\r\n this.indentGuidesDisposable = Disposable.None;\r\n this.disposables = new DisposableStore();\r\n this.templateId = renderer.templateId;\r\n this.updateOptions(options);\r\n Event.map(onDidChangeCollapseState, e => e.node)(this.onDidChangeNodeTwistieState, this, this.disposables);\r\n if (renderer.onDidChangeTwistieState) {\r\n renderer.onDidChangeTwistieState(this.onDidChangeTwistieState, this, this.disposables);\r\n }\r\n }\r\n updateOptions(options = {}) {\r\n if (typeof options.indent !== 'undefined') {\r\n this.indent = clamp(options.indent, 0, 40);\r\n }\r\n if (typeof options.renderIndentGuides !== 'undefined') {\r\n const shouldRenderIndentGuides = options.renderIndentGuides !== RenderIndentGuides.None;\r\n if (shouldRenderIndentGuides !== this.shouldRenderIndentGuides) {\r\n this.shouldRenderIndentGuides = shouldRenderIndentGuides;\r\n this.indentGuidesDisposable.dispose();\r\n if (shouldRenderIndentGuides) {\r\n const disposables = new DisposableStore();\r\n this.activeNodes.onDidChange(this._onDidChangeActiveNodes, this, disposables);\r\n this.indentGuidesDisposable = disposables;\r\n this._onDidChangeActiveNodes(this.activeNodes.elements);\r\n }\r\n }\r\n }\r\n if (typeof options.hideTwistiesOfChildlessElements !== 'undefined') {\r\n this.hideTwistiesOfChildlessElements = options.hideTwistiesOfChildlessElements;\r\n }\r\n }\r\n renderTemplate(container) {\r\n const el = append(container, $('.monaco-tl-row'));\r\n const indent = append(el, $('.monaco-tl-indent'));\r\n const twistie = append(el, $('.monaco-tl-twistie'));\r\n const contents = append(el, $('.monaco-tl-contents'));\r\n const templateData = this.renderer.renderTemplate(contents);\r\n return { container, indent, twistie, indentGuidesDisposable: Disposable.None, templateData };\r\n }\r\n renderElement(node, index, templateData, height) {\r\n if (typeof height === 'number') {\r\n this.renderedNodes.set(node, { templateData, height });\r\n this.renderedElements.set(node.element, node);\r\n }\r\n const indent = TreeRenderer.DefaultIndent + (node.depth - 1) * this.indent;\r\n templateData.twistie.style.paddingLeft = `${indent}px`;\r\n templateData.indent.style.width = `${indent + this.indent - 16}px`;\r\n this.renderTwistie(node, templateData);\r\n if (typeof height === 'number') {\r\n this.renderIndentGuides(node, templateData);\r\n }\r\n this.renderer.renderElement(node, index, templateData.templateData, height);\r\n }\r\n disposeElement(node, index, templateData, height) {\r\n templateData.indentGuidesDisposable.dispose();\r\n if (this.renderer.disposeElement) {\r\n this.renderer.disposeElement(node, index, templateData.templateData, height);\r\n }\r\n if (typeof height === 'number') {\r\n this.renderedNodes.delete(node);\r\n this.renderedElements.delete(node.element);\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n this.renderer.disposeTemplate(templateData.templateData);\r\n }\r\n onDidChangeTwistieState(element) {\r\n const node = this.renderedElements.get(element);\r\n if (!node) {\r\n return;\r\n }\r\n this.onDidChangeNodeTwistieState(node);\r\n }\r\n onDidChangeNodeTwistieState(node) {\r\n const data = this.renderedNodes.get(node);\r\n if (!data) {\r\n return;\r\n }\r\n this.renderTwistie(node, data.templateData);\r\n this._onDidChangeActiveNodes(this.activeNodes.elements);\r\n this.renderIndentGuides(node, data.templateData);\r\n }\r\n renderTwistie(node, templateData) {\r\n if (this.renderer.renderTwistie) {\r\n this.renderer.renderTwistie(node.element, templateData.twistie);\r\n }\r\n if (node.collapsible && (!this.hideTwistiesOfChildlessElements || node.visibleChildrenCount > 0)) {\r\n addClasses(templateData.twistie, treeItemExpandedIcon.classNames, 'collapsible');\r\n toggleClass(templateData.twistie, 'collapsed', node.collapsed);\r\n }\r\n else {\r\n removeClasses(templateData.twistie, treeItemExpandedIcon.classNames, 'collapsible', 'collapsed');\r\n }\r\n if (node.collapsible) {\r\n templateData.container.setAttribute('aria-expanded', String(!node.collapsed));\r\n }\r\n else {\r\n templateData.container.removeAttribute('aria-expanded');\r\n }\r\n }\r\n renderIndentGuides(target, templateData) {\r\n clearNode(templateData.indent);\r\n templateData.indentGuidesDisposable.dispose();\r\n if (!this.shouldRenderIndentGuides) {\r\n return;\r\n }\r\n const disposableStore = new DisposableStore();\r\n const model = this.modelProvider();\r\n let node = target;\r\n while (true) {\r\n const ref = model.getNodeLocation(node);\r\n const parentRef = model.getParentNodeLocation(ref);\r\n if (!parentRef) {\r\n break;\r\n }\r\n const parent = model.getNode(parentRef);\r\n const guide = $('.indent-guide', { style: `width: ${this.indent}px` });\r\n if (this.activeIndentNodes.has(parent)) {\r\n addClass(guide, 'active');\r\n }\r\n if (templateData.indent.childElementCount === 0) {\r\n templateData.indent.appendChild(guide);\r\n }\r\n else {\r\n templateData.indent.insertBefore(guide, templateData.indent.firstElementChild);\r\n }\r\n this.renderedIndentGuides.add(parent, guide);\r\n disposableStore.add(toDisposable(() => this.renderedIndentGuides.delete(parent, guide)));\r\n node = parent;\r\n }\r\n templateData.indentGuidesDisposable = disposableStore;\r\n }\r\n _onDidChangeActiveNodes(nodes) {\r\n if (!this.shouldRenderIndentGuides) {\r\n return;\r\n }\r\n const set = new Set();\r\n const model = this.modelProvider();\r\n nodes.forEach(node => {\r\n const ref = model.getNodeLocation(node);\r\n try {\r\n const parentRef = model.getParentNodeLocation(ref);\r\n if (node.collapsible && node.children.length > 0 && !node.collapsed) {\r\n set.add(node);\r\n }\r\n else if (parentRef) {\r\n set.add(model.getNode(parentRef));\r\n }\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n });\r\n this.activeIndentNodes.forEach(node => {\r\n if (!set.has(node)) {\r\n this.renderedIndentGuides.forEach(node, line => removeClass(line, 'active'));\r\n }\r\n });\r\n set.forEach(node => {\r\n if (!this.activeIndentNodes.has(node)) {\r\n this.renderedIndentGuides.forEach(node, line => addClass(line, 'active'));\r\n }\r\n });\r\n this.activeIndentNodes = set;\r\n }\r\n dispose() {\r\n this.renderedNodes.clear();\r\n this.renderedElements.clear();\r\n this.indentGuidesDisposable.dispose();\r\n dispose(this.disposables);\r\n }\r\n}\r\nTreeRenderer.DefaultIndent = 8;\r\nclass TypeFilter {\r\n constructor(tree, keyboardNavigationLabelProvider, _filter) {\r\n this.tree = tree;\r\n this.keyboardNavigationLabelProvider = keyboardNavigationLabelProvider;\r\n this._filter = _filter;\r\n this._totalCount = 0;\r\n this._matchCount = 0;\r\n this._pattern = '';\r\n this._lowercasePattern = '';\r\n this.disposables = new DisposableStore();\r\n tree.onWillRefilter(this.reset, this, this.disposables);\r\n }\r\n get totalCount() { return this._totalCount; }\r\n get matchCount() { return this._matchCount; }\r\n set pattern(pattern) {\r\n this._pattern = pattern;\r\n this._lowercasePattern = pattern.toLowerCase();\r\n }\r\n filter(element, parentVisibility) {\r\n if (this._filter) {\r\n const result = this._filter.filter(element, parentVisibility);\r\n if (this.tree.options.simpleKeyboardNavigation) {\r\n return result;\r\n }\r\n let visibility;\r\n if (typeof result === 'boolean') {\r\n visibility = result ? 1 /* Visible */ : 0 /* Hidden */;\r\n }\r\n else if (isFilterResult(result)) {\r\n visibility = getVisibleState(result.visibility);\r\n }\r\n else {\r\n visibility = result;\r\n }\r\n if (visibility === 0 /* Hidden */) {\r\n return false;\r\n }\r\n }\r\n this._totalCount++;\r\n if (this.tree.options.simpleKeyboardNavigation || !this._pattern) {\r\n this._matchCount++;\r\n return { data: FuzzyScore.Default, visibility: true };\r\n }\r\n const label = this.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(element);\r\n const labelStr = label && label.toString();\r\n if (typeof labelStr === 'undefined') {\r\n return { data: FuzzyScore.Default, visibility: true };\r\n }\r\n const score = fuzzyScore(this._pattern, this._lowercasePattern, 0, labelStr, labelStr.toLowerCase(), 0, true);\r\n if (!score) {\r\n if (this.tree.options.filterOnType) {\r\n return 2 /* Recurse */;\r\n }\r\n else {\r\n return { data: FuzzyScore.Default, visibility: true };\r\n }\r\n // DEMO: smarter filter ?\r\n // return parentVisibility === TreeVisibility.Visible ? true : TreeVisibility.Recurse;\r\n }\r\n this._matchCount++;\r\n return { data: score, visibility: true };\r\n }\r\n reset() {\r\n this._totalCount = 0;\r\n this._matchCount = 0;\r\n }\r\n dispose() {\r\n dispose(this.disposables);\r\n }\r\n}\r\nclass TypeFilterController {\r\n constructor(tree, model, view, filter, keyboardNavigationDelegate) {\r\n this.tree = tree;\r\n this.view = view;\r\n this.filter = filter;\r\n this.keyboardNavigationDelegate = keyboardNavigationDelegate;\r\n this._enabled = false;\r\n this._pattern = '';\r\n this._empty = false;\r\n this._onDidChangeEmptyState = new Emitter();\r\n this.positionClassName = 'ne';\r\n this.automaticKeyboardNavigation = true;\r\n this.triggered = false;\r\n this._onDidChangePattern = new Emitter();\r\n this.enabledDisposables = new DisposableStore();\r\n this.disposables = new DisposableStore();\r\n this.domNode = $(`.monaco-list-type-filter.${this.positionClassName}`);\r\n this.domNode.draggable = true;\r\n domEvent(this.domNode, 'dragstart')(this.onDragStart, this, this.disposables);\r\n this.messageDomNode = append(view.getHTMLElement(), $(`.monaco-list-type-filter-message`));\r\n this.labelDomNode = append(this.domNode, $('span.label'));\r\n const controls = append(this.domNode, $('.controls'));\r\n this._filterOnType = !!tree.options.filterOnType;\r\n this.filterOnTypeDomNode = append(controls, $('input.filter'));\r\n this.filterOnTypeDomNode.type = 'checkbox';\r\n this.filterOnTypeDomNode.checked = this._filterOnType;\r\n this.filterOnTypeDomNode.tabIndex = -1;\r\n this.updateFilterOnTypeTitleAndIcon();\r\n domEvent(this.filterOnTypeDomNode, 'input')(this.onDidChangeFilterOnType, this, this.disposables);\r\n this.clearDomNode = append(controls, $('button.clear' + treeFilterClearIcon.cssSelector));\r\n this.clearDomNode.tabIndex = -1;\r\n this.clearDomNode.title = localize('clear', \"Clear\");\r\n this.keyboardNavigationEventFilter = tree.options.keyboardNavigationEventFilter;\r\n model.onDidSplice(this.onDidSpliceModel, this, this.disposables);\r\n this.updateOptions(tree.options);\r\n }\r\n get enabled() { return this._enabled; }\r\n get pattern() { return this._pattern; }\r\n get filterOnType() { return this._filterOnType; }\r\n updateOptions(options) {\r\n if (options.simpleKeyboardNavigation) {\r\n this.disable();\r\n }\r\n else {\r\n this.enable();\r\n }\r\n if (typeof options.filterOnType !== 'undefined') {\r\n this._filterOnType = !!options.filterOnType;\r\n this.filterOnTypeDomNode.checked = this._filterOnType;\r\n }\r\n if (typeof options.automaticKeyboardNavigation !== 'undefined') {\r\n this.automaticKeyboardNavigation = options.automaticKeyboardNavigation;\r\n }\r\n this.tree.refilter();\r\n this.render();\r\n if (!this.automaticKeyboardNavigation) {\r\n this.onEventOrInput('');\r\n }\r\n }\r\n enable() {\r\n if (this._enabled) {\r\n return;\r\n }\r\n const onKeyDown = Event.chain(domEvent(this.view.getHTMLElement(), 'keydown'))\r\n .filter(e => !isInputElement(e.target) || e.target === this.filterOnTypeDomNode)\r\n .filter(e => e.key !== 'Dead' && !/^Media/.test(e.key))\r\n .map(e => new StandardKeyboardEvent(e))\r\n .filter(this.keyboardNavigationEventFilter || (() => true))\r\n .filter(() => this.automaticKeyboardNavigation || this.triggered)\r\n .filter(e => (this.keyboardNavigationDelegate.mightProducePrintableCharacter(e) && !(e.keyCode === 18 /* DownArrow */ || e.keyCode === 16 /* UpArrow */ || e.keyCode === 15 /* LeftArrow */ || e.keyCode === 17 /* RightArrow */)) || ((this.pattern.length > 0 || this.triggered) && ((e.keyCode === 9 /* Escape */ || e.keyCode === 1 /* Backspace */) && !e.altKey && !e.ctrlKey && !e.metaKey) || (e.keyCode === 1 /* Backspace */ && (isMacintosh ? (e.altKey && !e.metaKey) : e.ctrlKey) && !e.shiftKey)))\r\n .forEach(e => { e.stopPropagation(); e.preventDefault(); })\r\n .event;\r\n const onClear = domEvent(this.clearDomNode, 'click');\r\n Event.chain(Event.any(onKeyDown, onClear))\r\n .event(this.onEventOrInput, this, this.enabledDisposables);\r\n this.filter.pattern = '';\r\n this.tree.refilter();\r\n this.render();\r\n this._enabled = true;\r\n this.triggered = false;\r\n }\r\n disable() {\r\n if (!this._enabled) {\r\n return;\r\n }\r\n this.domNode.remove();\r\n this.enabledDisposables.clear();\r\n this.tree.refilter();\r\n this.render();\r\n this._enabled = false;\r\n this.triggered = false;\r\n }\r\n onEventOrInput(e) {\r\n if (typeof e === 'string') {\r\n this.onInput(e);\r\n }\r\n else if (e instanceof MouseEvent || e.keyCode === 9 /* Escape */ || (e.keyCode === 1 /* Backspace */ && (isMacintosh ? e.altKey : e.ctrlKey))) {\r\n this.onInput('');\r\n }\r\n else if (e.keyCode === 1 /* Backspace */) {\r\n this.onInput(this.pattern.length === 0 ? '' : this.pattern.substr(0, this.pattern.length - 1));\r\n }\r\n else {\r\n this.onInput(this.pattern + e.browserEvent.key);\r\n }\r\n }\r\n onInput(pattern) {\r\n const container = this.view.getHTMLElement();\r\n if (pattern && !this.domNode.parentElement) {\r\n container.append(this.domNode);\r\n }\r\n else if (!pattern && this.domNode.parentElement) {\r\n this.domNode.remove();\r\n this.tree.domFocus();\r\n }\r\n this._pattern = pattern;\r\n this._onDidChangePattern.fire(pattern);\r\n this.filter.pattern = pattern;\r\n this.tree.refilter();\r\n if (pattern) {\r\n this.tree.focusNext(0, true, undefined, node => !FuzzyScore.isDefault(node.filterData));\r\n }\r\n const focus = this.tree.getFocus();\r\n if (focus.length > 0) {\r\n const element = focus[0];\r\n if (this.tree.getRelativeTop(element) === null) {\r\n this.tree.reveal(element, 0.5);\r\n }\r\n }\r\n this.render();\r\n if (!pattern) {\r\n this.triggered = false;\r\n }\r\n }\r\n onDragStart() {\r\n const container = this.view.getHTMLElement();\r\n const { left } = getDomNodePagePosition(container);\r\n const containerWidth = container.clientWidth;\r\n const midContainerWidth = containerWidth / 2;\r\n const width = this.domNode.clientWidth;\r\n const disposables = new DisposableStore();\r\n let positionClassName = this.positionClassName;\r\n const updatePosition = () => {\r\n switch (positionClassName) {\r\n case 'nw':\r\n this.domNode.style.top = `4px`;\r\n this.domNode.style.left = `4px`;\r\n break;\r\n case 'ne':\r\n this.domNode.style.top = `4px`;\r\n this.domNode.style.left = `${containerWidth - width - 6}px`;\r\n break;\r\n }\r\n };\r\n const onDragOver = (event) => {\r\n event.preventDefault(); // needed so that the drop event fires (https://stackoverflow.com/questions/21339924/drop-event-not-firing-in-chrome)\r\n const x = event.screenX - left;\r\n if (event.dataTransfer) {\r\n event.dataTransfer.dropEffect = 'none';\r\n }\r\n if (x < midContainerWidth) {\r\n positionClassName = 'nw';\r\n }\r\n else {\r\n positionClassName = 'ne';\r\n }\r\n updatePosition();\r\n };\r\n const onDragEnd = () => {\r\n this.positionClassName = positionClassName;\r\n this.domNode.className = `monaco-list-type-filter ${this.positionClassName}`;\r\n this.domNode.style.top = '';\r\n this.domNode.style.left = '';\r\n dispose(disposables);\r\n };\r\n updatePosition();\r\n removeClass(this.domNode, positionClassName);\r\n addClass(this.domNode, 'dragging');\r\n disposables.add(toDisposable(() => removeClass(this.domNode, 'dragging')));\r\n domEvent(document, 'dragover')(onDragOver, null, disposables);\r\n domEvent(this.domNode, 'dragend')(onDragEnd, null, disposables);\r\n StaticDND.CurrentDragAndDropData = new DragAndDropData('vscode-ui');\r\n disposables.add(toDisposable(() => StaticDND.CurrentDragAndDropData = undefined));\r\n }\r\n onDidSpliceModel() {\r\n if (!this._enabled || this.pattern.length === 0) {\r\n return;\r\n }\r\n this.tree.refilter();\r\n this.render();\r\n }\r\n onDidChangeFilterOnType() {\r\n this.tree.updateOptions({ filterOnType: this.filterOnTypeDomNode.checked });\r\n this.tree.refilter();\r\n this.tree.domFocus();\r\n this.render();\r\n this.updateFilterOnTypeTitleAndIcon();\r\n }\r\n updateFilterOnTypeTitleAndIcon() {\r\n if (this.filterOnType) {\r\n removeClasses(this.filterOnTypeDomNode, treeFilterOnTypeOffIcon.classNames);\r\n addClasses(this.filterOnTypeDomNode, treeFilterOnTypeOnIcon.classNames);\r\n this.filterOnTypeDomNode.title = localize('disable filter on type', \"Disable Filter on Type\");\r\n }\r\n else {\r\n removeClasses(this.filterOnTypeDomNode, treeFilterOnTypeOnIcon.classNames);\r\n addClasses(this.filterOnTypeDomNode, treeFilterOnTypeOffIcon.classNames);\r\n this.filterOnTypeDomNode.title = localize('enable filter on type', \"Enable Filter on Type\");\r\n }\r\n }\r\n render() {\r\n const noMatches = this.filter.totalCount > 0 && this.filter.matchCount === 0;\r\n if (this.pattern && this.tree.options.filterOnType && noMatches) {\r\n this.messageDomNode.textContent = localize('empty', \"No elements found\");\r\n this._empty = true;\r\n }\r\n else {\r\n this.messageDomNode.innerText = '';\r\n this._empty = false;\r\n }\r\n toggleClass(this.domNode, 'no-matches', noMatches);\r\n this.domNode.title = localize('found', \"Matched {0} out of {1} elements\", this.filter.matchCount, this.filter.totalCount);\r\n this.labelDomNode.textContent = this.pattern.length > 16 ? '…' + this.pattern.substr(this.pattern.length - 16) : this.pattern;\r\n this._onDidChangeEmptyState.fire(this._empty);\r\n }\r\n shouldAllowFocus(node) {\r\n if (!this.enabled || !this.pattern || this.filterOnType) {\r\n return true;\r\n }\r\n if (this.filter.totalCount > 0 && this.filter.matchCount <= 1) {\r\n return true;\r\n }\r\n return !FuzzyScore.isDefault(node.filterData);\r\n }\r\n dispose() {\r\n if (this._enabled) {\r\n this.domNode.remove();\r\n this.enabledDisposables.dispose();\r\n this._enabled = false;\r\n this.triggered = false;\r\n }\r\n this._onDidChangePattern.dispose();\r\n dispose(this.disposables);\r\n }\r\n}\r\nfunction asTreeMouseEvent(event) {\r\n let target = TreeMouseEventTarget.Unknown;\r\n if (hasParentWithClass(event.browserEvent.target, 'monaco-tl-twistie', 'monaco-tl-row')) {\r\n target = TreeMouseEventTarget.Twistie;\r\n }\r\n else if (hasParentWithClass(event.browserEvent.target, 'monaco-tl-contents', 'monaco-tl-row')) {\r\n target = TreeMouseEventTarget.Element;\r\n }\r\n return {\r\n browserEvent: event.browserEvent,\r\n element: event.element ? event.element.element : null,\r\n target\r\n };\r\n}\r\nfunction dfs(node, fn) {\r\n fn(node);\r\n node.children.forEach(child => dfs(child, fn));\r\n}\r\n/**\r\n * The trait concept needs to exist at the tree level, because collapsed\r\n * tree nodes will not be known by the list.\r\n */\r\nclass Trait {\r\n constructor(identityProvider) {\r\n this.identityProvider = identityProvider;\r\n this.nodes = [];\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n }\r\n get nodeSet() {\r\n if (!this._nodeSet) {\r\n this._nodeSet = this.createNodeSet();\r\n }\r\n return this._nodeSet;\r\n }\r\n set(nodes, browserEvent) {\r\n if (equals(this.nodes, nodes)) {\r\n return;\r\n }\r\n this._set(nodes, false, browserEvent);\r\n }\r\n _set(nodes, silent, browserEvent) {\r\n this.nodes = [...nodes];\r\n this.elements = undefined;\r\n this._nodeSet = undefined;\r\n if (!silent) {\r\n const that = this;\r\n this._onDidChange.fire({ get elements() { return that.get(); }, browserEvent });\r\n }\r\n }\r\n get() {\r\n if (!this.elements) {\r\n this.elements = this.nodes.map(node => node.element);\r\n }\r\n return [...this.elements];\r\n }\r\n getNodes() {\r\n return this.nodes;\r\n }\r\n has(node) {\r\n return this.nodeSet.has(node);\r\n }\r\n onDidModelSplice({ insertedNodes, deletedNodes }) {\r\n if (!this.identityProvider) {\r\n const set = this.createNodeSet();\r\n const visit = (node) => set.delete(node);\r\n deletedNodes.forEach(node => dfs(node, visit));\r\n this.set([...set.values()]);\r\n return;\r\n }\r\n const deletedNodesIdSet = new Set();\r\n const deletedNodesVisitor = (node) => deletedNodesIdSet.add(this.identityProvider.getId(node.element).toString());\r\n deletedNodes.forEach(node => dfs(node, deletedNodesVisitor));\r\n const insertedNodesMap = new Map();\r\n const insertedNodesVisitor = (node) => insertedNodesMap.set(this.identityProvider.getId(node.element).toString(), node);\r\n insertedNodes.forEach(node => dfs(node, insertedNodesVisitor));\r\n const nodes = [];\r\n for (const node of this.nodes) {\r\n const id = this.identityProvider.getId(node.element).toString();\r\n const wasDeleted = deletedNodesIdSet.has(id);\r\n if (!wasDeleted) {\r\n nodes.push(node);\r\n }\r\n else {\r\n const insertedNode = insertedNodesMap.get(id);\r\n if (insertedNode) {\r\n nodes.push(insertedNode);\r\n }\r\n }\r\n }\r\n this._set(nodes, true);\r\n }\r\n createNodeSet() {\r\n const set = new Set();\r\n for (const node of this.nodes) {\r\n set.add(node);\r\n }\r\n return set;\r\n }\r\n}\r\nclass TreeNodeListMouseController extends MouseController {\r\n constructor(list, tree) {\r\n super(list);\r\n this.tree = tree;\r\n }\r\n onViewPointer(e) {\r\n if (isInputElement(e.browserEvent.target) || isMonacoEditor(e.browserEvent.target)) {\r\n return;\r\n }\r\n const node = e.element;\r\n if (!node) {\r\n return super.onViewPointer(e);\r\n }\r\n if (this.isSelectionRangeChangeEvent(e) || this.isSelectionSingleChangeEvent(e)) {\r\n return super.onViewPointer(e);\r\n }\r\n const target = e.browserEvent.target;\r\n const onTwistie = hasClass(target, 'monaco-tl-twistie')\r\n || (hasClass(target, 'monaco-icon-label') && hasClass(target, 'folder-icon') && e.browserEvent.offsetX < 16);\r\n let expandOnlyOnTwistieClick = false;\r\n if (typeof this.tree.expandOnlyOnTwistieClick === 'function') {\r\n expandOnlyOnTwistieClick = this.tree.expandOnlyOnTwistieClick(node.element);\r\n }\r\n else {\r\n expandOnlyOnTwistieClick = !!this.tree.expandOnlyOnTwistieClick;\r\n }\r\n if (expandOnlyOnTwistieClick && !onTwistie) {\r\n return super.onViewPointer(e);\r\n }\r\n if (this.tree.expandOnlyOnDoubleClick && e.browserEvent.detail !== 2 && !onTwistie) {\r\n return super.onViewPointer(e);\r\n }\r\n if (node.collapsible) {\r\n const model = this.tree.model; // internal\r\n const location = model.getNodeLocation(node);\r\n const recursive = e.browserEvent.altKey;\r\n model.setCollapsed(location, undefined, recursive);\r\n if (expandOnlyOnTwistieClick && onTwistie) {\r\n return;\r\n }\r\n }\r\n super.onViewPointer(e);\r\n }\r\n onDoubleClick(e) {\r\n const onTwistie = hasClass(e.browserEvent.target, 'monaco-tl-twistie');\r\n if (onTwistie) {\r\n return;\r\n }\r\n super.onDoubleClick(e);\r\n }\r\n}\r\n/**\r\n * We use this List subclass to restore selection and focus as nodes\r\n * get rendered in the list, possibly due to a node expand() call.\r\n */\r\nclass TreeNodeList extends List {\r\n constructor(user, container, virtualDelegate, renderers, focusTrait, selectionTrait, options) {\r\n super(user, container, virtualDelegate, renderers, options);\r\n this.focusTrait = focusTrait;\r\n this.selectionTrait = selectionTrait;\r\n }\r\n createMouseController(options) {\r\n return new TreeNodeListMouseController(this, options.tree);\r\n }\r\n splice(start, deleteCount, elements = []) {\r\n super.splice(start, deleteCount, elements);\r\n if (elements.length === 0) {\r\n return;\r\n }\r\n const additionalFocus = [];\r\n const additionalSelection = [];\r\n elements.forEach((node, index) => {\r\n if (this.focusTrait.has(node)) {\r\n additionalFocus.push(start + index);\r\n }\r\n if (this.selectionTrait.has(node)) {\r\n additionalSelection.push(start + index);\r\n }\r\n });\r\n if (additionalFocus.length > 0) {\r\n super.setFocus(distinctES6([...super.getFocus(), ...additionalFocus]));\r\n }\r\n if (additionalSelection.length > 0) {\r\n super.setSelection(distinctES6([...super.getSelection(), ...additionalSelection]));\r\n }\r\n }\r\n setFocus(indexes, browserEvent, fromAPI = false) {\r\n super.setFocus(indexes, browserEvent);\r\n if (!fromAPI) {\r\n this.focusTrait.set(indexes.map(i => this.element(i)), browserEvent);\r\n }\r\n }\r\n setSelection(indexes, browserEvent, fromAPI = false) {\r\n super.setSelection(indexes, browserEvent);\r\n if (!fromAPI) {\r\n this.selectionTrait.set(indexes.map(i => this.element(i)), browserEvent);\r\n }\r\n }\r\n}\r\nexport class AbstractTree {\r\n constructor(user, container, delegate, renderers, _options = {}) {\r\n this._options = _options;\r\n this.eventBufferer = new EventBufferer();\r\n this.disposables = new DisposableStore();\r\n this._onWillRefilter = new Emitter();\r\n this.onWillRefilter = this._onWillRefilter.event;\r\n this._onDidUpdateOptions = new Emitter();\r\n const treeDelegate = new ComposedTreeDelegate(delegate);\r\n const onDidChangeCollapseStateRelay = new Relay();\r\n const onDidChangeActiveNodes = new Relay();\r\n const activeNodes = new EventCollection(onDidChangeActiveNodes.event);\r\n this.renderers = renderers.map(r => new TreeRenderer(r, () => this.model, onDidChangeCollapseStateRelay.event, activeNodes, _options));\r\n for (let r of this.renderers) {\r\n this.disposables.add(r);\r\n }\r\n let filter;\r\n if (_options.keyboardNavigationLabelProvider) {\r\n filter = new TypeFilter(this, _options.keyboardNavigationLabelProvider, _options.filter);\r\n _options = Object.assign(Object.assign({}, _options), { filter: filter }); // TODO need typescript help here\r\n this.disposables.add(filter);\r\n }\r\n this.focus = new Trait(_options.identityProvider);\r\n this.selection = new Trait(_options.identityProvider);\r\n this.view = new TreeNodeList(user, container, treeDelegate, this.renderers, this.focus, this.selection, Object.assign(Object.assign({}, asListOptions(() => this.model, _options)), { tree: this }));\r\n this.model = this.createModel(user, this.view, _options);\r\n onDidChangeCollapseStateRelay.input = this.model.onDidChangeCollapseState;\r\n const onDidModelSplice = Event.forEach(this.model.onDidSplice, e => {\r\n this.eventBufferer.bufferEvents(() => {\r\n this.focus.onDidModelSplice(e);\r\n this.selection.onDidModelSplice(e);\r\n });\r\n });\r\n // Make sure the `forEach` always runs\r\n onDidModelSplice(() => null, null, this.disposables);\r\n // Active nodes can change when the model changes or when focus or selection change.\r\n // We debounce it with 0 delay since these events may fire in the same stack and we only\r\n // want to run this once. It also doesn't matter if it runs on the next tick since it's only\r\n // a nice to have UI feature.\r\n onDidChangeActiveNodes.input = Event.chain(Event.any(onDidModelSplice, this.focus.onDidChange, this.selection.onDidChange))\r\n .debounce(() => null, 0)\r\n .map(() => {\r\n const set = new Set();\r\n for (const node of this.focus.getNodes()) {\r\n set.add(node);\r\n }\r\n for (const node of this.selection.getNodes()) {\r\n set.add(node);\r\n }\r\n return [...set.values()];\r\n }).event;\r\n if (_options.keyboardSupport !== false) {\r\n const onKeyDown = Event.chain(this.view.onKeyDown)\r\n .filter(e => !isInputElement(e.target))\r\n .map(e => new StandardKeyboardEvent(e));\r\n onKeyDown.filter(e => e.keyCode === 15 /* LeftArrow */).on(this.onLeftArrow, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 17 /* RightArrow */).on(this.onRightArrow, this, this.disposables);\r\n onKeyDown.filter(e => e.keyCode === 10 /* Space */).on(this.onSpace, this, this.disposables);\r\n }\r\n if (_options.keyboardNavigationLabelProvider) {\r\n const delegate = _options.keyboardNavigationDelegate || DefaultKeyboardNavigationDelegate;\r\n this.typeFilterController = new TypeFilterController(this, this.model, this.view, filter, delegate);\r\n this.focusNavigationFilter = node => this.typeFilterController.shouldAllowFocus(node);\r\n this.disposables.add(this.typeFilterController);\r\n }\r\n this.styleElement = createStyleSheet(this.view.getHTMLElement());\r\n toggleClass(this.getHTMLElement(), 'always', this._options.renderIndentGuides === RenderIndentGuides.Always);\r\n }\r\n get onDidChangeFocus() { return this.eventBufferer.wrapEvent(this.focus.onDidChange); }\r\n get onDidChangeSelection() { return this.eventBufferer.wrapEvent(this.selection.onDidChange); }\r\n get onMouseDblClick() { return Event.map(this.view.onMouseDblClick, asTreeMouseEvent); }\r\n get onPointer() { return Event.map(this.view.onPointer, asTreeMouseEvent); }\r\n get onDidFocus() { return this.view.onDidFocus; }\r\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\r\n get expandOnlyOnDoubleClick() { var _a; return (_a = this._options.expandOnlyOnDoubleClick) !== null && _a !== void 0 ? _a : false; }\r\n get expandOnlyOnTwistieClick() { return typeof this._options.expandOnlyOnTwistieClick === 'undefined' ? false : this._options.expandOnlyOnTwistieClick; }\r\n get onDidDispose() { return this.view.onDidDispose; }\r\n updateOptions(optionsUpdate = {}) {\r\n this._options = Object.assign(Object.assign({}, this._options), optionsUpdate);\r\n for (const renderer of this.renderers) {\r\n renderer.updateOptions(optionsUpdate);\r\n }\r\n this.view.updateOptions({\r\n enableKeyboardNavigation: this._options.simpleKeyboardNavigation,\r\n automaticKeyboardNavigation: this._options.automaticKeyboardNavigation,\r\n smoothScrolling: this._options.smoothScrolling,\r\n horizontalScrolling: this._options.horizontalScrolling\r\n });\r\n if (this.typeFilterController) {\r\n this.typeFilterController.updateOptions(this._options);\r\n }\r\n this._onDidUpdateOptions.fire(this._options);\r\n toggleClass(this.getHTMLElement(), 'always', this._options.renderIndentGuides === RenderIndentGuides.Always);\r\n }\r\n get options() {\r\n return this._options;\r\n }\r\n // Widget\r\n getHTMLElement() {\r\n return this.view.getHTMLElement();\r\n }\r\n get scrollTop() {\r\n return this.view.scrollTop;\r\n }\r\n set scrollTop(scrollTop) {\r\n this.view.scrollTop = scrollTop;\r\n }\r\n domFocus() {\r\n this.view.domFocus();\r\n }\r\n layout(height, width) {\r\n this.view.layout(height, width);\r\n }\r\n style(styles) {\r\n const suffix = `.${this.view.domId}`;\r\n const content = [];\r\n if (styles.treeIndentGuidesStroke) {\r\n content.push(`.monaco-list${suffix}:hover .monaco-tl-indent > .indent-guide, .monaco-list${suffix}.always .monaco-tl-indent > .indent-guide { border-color: ${styles.treeIndentGuidesStroke.transparent(0.4)}; }`);\r\n content.push(`.monaco-list${suffix} .monaco-tl-indent > .indent-guide.active { border-color: ${styles.treeIndentGuidesStroke}; }`);\r\n }\r\n const newStyles = content.join('\\n');\r\n if (newStyles !== this.styleElement.innerHTML) {\r\n this.styleElement.innerHTML = newStyles;\r\n }\r\n this.view.style(styles);\r\n }\r\n collapse(location, recursive = false) {\r\n return this.model.setCollapsed(location, true, recursive);\r\n }\r\n expand(location, recursive = false) {\r\n return this.model.setCollapsed(location, false, recursive);\r\n }\r\n isCollapsible(location) {\r\n return this.model.isCollapsible(location);\r\n }\r\n setCollapsible(location, collapsible) {\r\n return this.model.setCollapsible(location, collapsible);\r\n }\r\n isCollapsed(location) {\r\n return this.model.isCollapsed(location);\r\n }\r\n refilter() {\r\n this._onWillRefilter.fire(undefined);\r\n this.model.refilter();\r\n }\r\n setSelection(elements, browserEvent) {\r\n const nodes = elements.map(e => this.model.getNode(e));\r\n this.selection.set(nodes, browserEvent);\r\n const indexes = elements.map(e => this.model.getListIndex(e)).filter(i => i > -1);\r\n this.view.setSelection(indexes, browserEvent, true);\r\n }\r\n getSelection() {\r\n return this.selection.get();\r\n }\r\n setFocus(elements, browserEvent) {\r\n const nodes = elements.map(e => this.model.getNode(e));\r\n this.focus.set(nodes, browserEvent);\r\n const indexes = elements.map(e => this.model.getListIndex(e)).filter(i => i > -1);\r\n this.view.setFocus(indexes, browserEvent, true);\r\n }\r\n focusNext(n = 1, loop = false, browserEvent, filter = this.focusNavigationFilter) {\r\n this.view.focusNext(n, loop, browserEvent, filter);\r\n }\r\n getFocus() {\r\n return this.focus.get();\r\n }\r\n reveal(location, relativeTop) {\r\n this.model.expandTo(location);\r\n const index = this.model.getListIndex(location);\r\n if (index === -1) {\r\n return;\r\n }\r\n this.view.reveal(index, relativeTop);\r\n }\r\n /**\r\n * Returns the relative position of an element rendered in the list.\r\n * Returns `null` if the element isn't *entirely* in the visible viewport.\r\n */\r\n getRelativeTop(location) {\r\n const index = this.model.getListIndex(location);\r\n if (index === -1) {\r\n return null;\r\n }\r\n return this.view.getRelativeTop(index);\r\n }\r\n // List\r\n onLeftArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const nodes = this.view.getFocusedElements();\r\n if (nodes.length === 0) {\r\n return;\r\n }\r\n const node = nodes[0];\r\n const location = this.model.getNodeLocation(node);\r\n const didChange = this.model.setCollapsed(location, true);\r\n if (!didChange) {\r\n const parentLocation = this.model.getParentNodeLocation(location);\r\n if (!parentLocation) {\r\n return;\r\n }\r\n const parentListIndex = this.model.getListIndex(parentLocation);\r\n this.view.reveal(parentListIndex);\r\n this.view.setFocus([parentListIndex]);\r\n }\r\n }\r\n onRightArrow(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const nodes = this.view.getFocusedElements();\r\n if (nodes.length === 0) {\r\n return;\r\n }\r\n const node = nodes[0];\r\n const location = this.model.getNodeLocation(node);\r\n const didChange = this.model.setCollapsed(location, false);\r\n if (!didChange) {\r\n if (!node.children.some(child => child.visible)) {\r\n return;\r\n }\r\n const [focusedIndex] = this.view.getFocus();\r\n const firstChildIndex = focusedIndex + 1;\r\n this.view.reveal(firstChildIndex);\r\n this.view.setFocus([firstChildIndex]);\r\n }\r\n }\r\n onSpace(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n const nodes = this.view.getFocusedElements();\r\n if (nodes.length === 0) {\r\n return;\r\n }\r\n const node = nodes[0];\r\n const location = this.model.getNodeLocation(node);\r\n const recursive = e.browserEvent.altKey;\r\n this.model.setCollapsed(location, undefined, recursive);\r\n }\r\n dispose() {\r\n dispose(this.disposables);\r\n this.view.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { ComposedTreeDelegate } from './abstractTree.js';\r\nimport { ObjectTree, CompressibleObjectTree } from './objectTree.js';\r\nimport { TreeError, WeakMapper } from './tree.js';\r\nimport { dispose, DisposableStore } from '../../../common/lifecycle.js';\r\nimport { Emitter, Event } from '../../../common/event.js';\r\nimport { timeout, createCancelablePromise } from '../../../common/async.js';\r\nimport { Iterable } from '../../../common/iterator.js';\r\nimport { ElementsDragAndDropData } from '../list/listView.js';\r\nimport { isPromiseCanceledError, onUnexpectedError } from '../../../common/errors.js';\r\nimport { removeClasses, addClasses } from '../../dom.js';\r\nimport { isFilterResult, getVisibleState } from './indexTreeModel.js';\r\nimport { treeItemLoadingIcon } from './treeIcons.js';\r\nfunction createAsyncDataTreeNode(props) {\r\n return Object.assign(Object.assign({}, props), { children: [], refreshPromise: undefined, stale: true, slow: false, collapsedByDefault: undefined });\r\n}\r\nfunction isAncestor(ancestor, descendant) {\r\n if (!descendant.parent) {\r\n return false;\r\n }\r\n else if (descendant.parent === ancestor) {\r\n return true;\r\n }\r\n else {\r\n return isAncestor(ancestor, descendant.parent);\r\n }\r\n}\r\nfunction intersects(node, other) {\r\n return node === other || isAncestor(node, other) || isAncestor(other, node);\r\n}\r\nclass AsyncDataTreeNodeWrapper {\r\n constructor(node) {\r\n this.node = node;\r\n }\r\n get element() { return this.node.element.element; }\r\n get children() { return this.node.children.map(node => new AsyncDataTreeNodeWrapper(node)); }\r\n get depth() { return this.node.depth; }\r\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\r\n get visibleChildIndex() { return this.node.visibleChildIndex; }\r\n get collapsible() { return this.node.collapsible; }\r\n get collapsed() { return this.node.collapsed; }\r\n get visible() { return this.node.visible; }\r\n get filterData() { return this.node.filterData; }\r\n}\r\nclass AsyncDataTreeRenderer {\r\n constructor(renderer, nodeMapper, onDidChangeTwistieState) {\r\n this.renderer = renderer;\r\n this.nodeMapper = nodeMapper;\r\n this.onDidChangeTwistieState = onDidChangeTwistieState;\r\n this.renderedNodes = new Map();\r\n this.templateId = renderer.templateId;\r\n }\r\n renderTemplate(container) {\r\n const templateData = this.renderer.renderTemplate(container);\r\n return { templateData };\r\n }\r\n renderElement(node, index, templateData, height) {\r\n this.renderer.renderElement(this.nodeMapper.map(node), index, templateData.templateData, height);\r\n }\r\n renderTwistie(element, twistieElement) {\r\n if (element.slow) {\r\n addClasses(twistieElement, treeItemLoadingIcon.classNames);\r\n }\r\n else {\r\n removeClasses(twistieElement, treeItemLoadingIcon.classNames);\r\n }\r\n return false;\r\n }\r\n disposeElement(node, index, templateData, height) {\r\n if (this.renderer.disposeElement) {\r\n this.renderer.disposeElement(this.nodeMapper.map(node), index, templateData.templateData, height);\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n this.renderer.disposeTemplate(templateData.templateData);\r\n }\r\n dispose() {\r\n this.renderedNodes.clear();\r\n }\r\n}\r\nfunction asTreeEvent(e) {\r\n return {\r\n browserEvent: e.browserEvent,\r\n elements: e.elements.map(e => e.element)\r\n };\r\n}\r\nfunction asTreeMouseEvent(e) {\r\n return {\r\n browserEvent: e.browserEvent,\r\n element: e.element && e.element.element,\r\n target: e.target\r\n };\r\n}\r\nclass AsyncDataTreeElementsDragAndDropData extends ElementsDragAndDropData {\r\n constructor(data) {\r\n super(data.elements.map(node => node.element));\r\n this.data = data;\r\n }\r\n}\r\nfunction asAsyncDataTreeDragAndDropData(data) {\r\n if (data instanceof ElementsDragAndDropData) {\r\n return new AsyncDataTreeElementsDragAndDropData(data);\r\n }\r\n return data;\r\n}\r\nclass AsyncDataTreeNodeListDragAndDrop {\r\n constructor(dnd) {\r\n this.dnd = dnd;\r\n }\r\n getDragURI(node) {\r\n return this.dnd.getDragURI(node.element);\r\n }\r\n getDragLabel(nodes, originalEvent) {\r\n if (this.dnd.getDragLabel) {\r\n return this.dnd.getDragLabel(nodes.map(node => node.element), originalEvent);\r\n }\r\n return undefined;\r\n }\r\n onDragStart(data, originalEvent) {\r\n if (this.dnd.onDragStart) {\r\n this.dnd.onDragStart(asAsyncDataTreeDragAndDropData(data), originalEvent);\r\n }\r\n }\r\n onDragOver(data, targetNode, targetIndex, originalEvent, raw = true) {\r\n return this.dnd.onDragOver(asAsyncDataTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\r\n }\r\n drop(data, targetNode, targetIndex, originalEvent) {\r\n this.dnd.drop(asAsyncDataTreeDragAndDropData(data), targetNode && targetNode.element, targetIndex, originalEvent);\r\n }\r\n onDragEnd(originalEvent) {\r\n if (this.dnd.onDragEnd) {\r\n this.dnd.onDragEnd(originalEvent);\r\n }\r\n }\r\n}\r\nfunction asObjectTreeOptions(options) {\r\n return options && Object.assign(Object.assign({}, options), { collapseByDefault: true, identityProvider: options.identityProvider && {\r\n getId(el) {\r\n return options.identityProvider.getId(el.element);\r\n }\r\n }, dnd: options.dnd && new AsyncDataTreeNodeListDragAndDrop(options.dnd), multipleSelectionController: options.multipleSelectionController && {\r\n isSelectionSingleChangeEvent(e) {\r\n return options.multipleSelectionController.isSelectionSingleChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\r\n },\r\n isSelectionRangeChangeEvent(e) {\r\n return options.multipleSelectionController.isSelectionRangeChangeEvent(Object.assign(Object.assign({}, e), { element: e.element }));\r\n }\r\n }, accessibilityProvider: options.accessibilityProvider && Object.assign(Object.assign({}, options.accessibilityProvider), { getPosInSet: undefined, getSetSize: undefined, getRole: options.accessibilityProvider.getRole ? (el) => {\r\n return options.accessibilityProvider.getRole(el.element);\r\n } : () => 'treeitem', isChecked: options.accessibilityProvider.isChecked ? (e) => {\r\n var _a;\r\n return !!((_a = options.accessibilityProvider) === null || _a === void 0 ? void 0 : _a.isChecked(e.element));\r\n } : undefined, getAriaLabel(e) {\r\n return options.accessibilityProvider.getAriaLabel(e.element);\r\n },\r\n getWidgetAriaLabel() {\r\n return options.accessibilityProvider.getWidgetAriaLabel();\r\n }, getWidgetRole: options.accessibilityProvider.getWidgetRole ? () => options.accessibilityProvider.getWidgetRole() : () => 'tree', getAriaLevel: options.accessibilityProvider.getAriaLevel && (node => {\r\n return options.accessibilityProvider.getAriaLevel(node.element);\r\n }), getActiveDescendantId: options.accessibilityProvider.getActiveDescendantId && (node => {\r\n return options.accessibilityProvider.getActiveDescendantId(node.element);\r\n }) }), filter: options.filter && {\r\n filter(e, parentVisibility) {\r\n return options.filter.filter(e.element, parentVisibility);\r\n }\r\n }, keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, options.keyboardNavigationLabelProvider), { getKeyboardNavigationLabel(e) {\r\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e.element);\r\n } }), sorter: undefined, expandOnlyOnTwistieClick: typeof options.expandOnlyOnTwistieClick === 'undefined' ? undefined : (typeof options.expandOnlyOnTwistieClick !== 'function' ? options.expandOnlyOnTwistieClick : (e => options.expandOnlyOnTwistieClick(e.element))), additionalScrollHeight: options.additionalScrollHeight });\r\n}\r\nfunction dfs(node, fn) {\r\n fn(node);\r\n node.children.forEach(child => dfs(child, fn));\r\n}\r\nexport class AsyncDataTree {\r\n constructor(user, container, delegate, renderers, dataSource, options = {}) {\r\n this.user = user;\r\n this.dataSource = dataSource;\r\n this.nodes = new Map();\r\n this.subTreeRefreshPromises = new Map();\r\n this.refreshPromises = new Map();\r\n this._onDidRender = new Emitter();\r\n this._onDidChangeNodeSlowState = new Emitter();\r\n this.nodeMapper = new WeakMapper(node => new AsyncDataTreeNodeWrapper(node));\r\n this.disposables = new DisposableStore();\r\n this.identityProvider = options.identityProvider;\r\n this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;\r\n this.sorter = options.sorter;\r\n this.collapseByDefault = options.collapseByDefault;\r\n this.tree = this.createTree(user, container, delegate, renderers, options);\r\n this.root = createAsyncDataTreeNode({\r\n element: undefined,\r\n parent: null,\r\n hasChildren: true\r\n });\r\n if (this.identityProvider) {\r\n this.root = Object.assign(Object.assign({}, this.root), { id: null });\r\n }\r\n this.nodes.set(null, this.root);\r\n this.tree.onDidChangeCollapseState(this._onDidChangeCollapseState, this, this.disposables);\r\n }\r\n get onDidChangeFocus() { return Event.map(this.tree.onDidChangeFocus, asTreeEvent); }\r\n get onDidChangeSelection() { return Event.map(this.tree.onDidChangeSelection, asTreeEvent); }\r\n get onMouseDblClick() { return Event.map(this.tree.onMouseDblClick, asTreeMouseEvent); }\r\n get onPointer() { return Event.map(this.tree.onPointer, asTreeMouseEvent); }\r\n get onDidFocus() { return this.tree.onDidFocus; }\r\n get onDidDispose() { return this.tree.onDidDispose; }\r\n createTree(user, container, delegate, renderers, options) {\r\n const objectTreeDelegate = new ComposedTreeDelegate(delegate);\r\n const objectTreeRenderers = renderers.map(r => new AsyncDataTreeRenderer(r, this.nodeMapper, this._onDidChangeNodeSlowState.event));\r\n const objectTreeOptions = asObjectTreeOptions(options) || {};\r\n return new ObjectTree(user, container, objectTreeDelegate, objectTreeRenderers, objectTreeOptions);\r\n }\r\n updateOptions(options = {}) {\r\n this.tree.updateOptions(options);\r\n }\r\n // Widget\r\n getHTMLElement() {\r\n return this.tree.getHTMLElement();\r\n }\r\n get scrollTop() {\r\n return this.tree.scrollTop;\r\n }\r\n set scrollTop(scrollTop) {\r\n this.tree.scrollTop = scrollTop;\r\n }\r\n domFocus() {\r\n this.tree.domFocus();\r\n }\r\n layout(height, width) {\r\n this.tree.layout(height, width);\r\n }\r\n style(styles) {\r\n this.tree.style(styles);\r\n }\r\n // Model\r\n getInput() {\r\n return this.root.element;\r\n }\r\n setInput(input, viewState) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.refreshPromises.forEach(promise => promise.cancel());\r\n this.refreshPromises.clear();\r\n this.root.element = input;\r\n const viewStateContext = viewState && { viewState, focus: [], selection: [] };\r\n yield this._updateChildren(input, true, false, viewStateContext);\r\n if (viewStateContext) {\r\n this.tree.setFocus(viewStateContext.focus);\r\n this.tree.setSelection(viewStateContext.selection);\r\n }\r\n if (viewState && typeof viewState.scrollTop === 'number') {\r\n this.scrollTop = viewState.scrollTop;\r\n }\r\n });\r\n }\r\n _updateChildren(element = this.root.element, recursive = true, rerender = false, viewStateContext) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof this.root.element === 'undefined') {\r\n throw new TreeError(this.user, 'Tree input not set');\r\n }\r\n if (this.root.refreshPromise) {\r\n yield this.root.refreshPromise;\r\n yield Event.toPromise(this._onDidRender.event);\r\n }\r\n const node = this.getDataNode(element);\r\n yield this.refreshAndRenderNode(node, recursive, viewStateContext);\r\n if (rerender) {\r\n try {\r\n this.tree.rerender(node);\r\n }\r\n catch (_a) {\r\n // missing nodes are fine, this could've resulted from\r\n // parallel refresh calls, removing `node` altogether\r\n }\r\n }\r\n });\r\n }\r\n // View\r\n rerender(element) {\r\n if (element === undefined || element === this.root.element) {\r\n this.tree.rerender();\r\n return;\r\n }\r\n const node = this.getDataNode(element);\r\n this.tree.rerender(node);\r\n }\r\n collapse(element, recursive = false) {\r\n const node = this.getDataNode(element);\r\n return this.tree.collapse(node === this.root ? null : node, recursive);\r\n }\r\n expand(element, recursive = false) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof this.root.element === 'undefined') {\r\n throw new TreeError(this.user, 'Tree input not set');\r\n }\r\n if (this.root.refreshPromise) {\r\n yield this.root.refreshPromise;\r\n yield Event.toPromise(this._onDidRender.event);\r\n }\r\n const node = this.getDataNode(element);\r\n if (this.tree.hasElement(node) && !this.tree.isCollapsible(node)) {\r\n return false;\r\n }\r\n if (node.refreshPromise) {\r\n yield this.root.refreshPromise;\r\n yield Event.toPromise(this._onDidRender.event);\r\n }\r\n if (node !== this.root && !node.refreshPromise && !this.tree.isCollapsed(node)) {\r\n return false;\r\n }\r\n const result = this.tree.expand(node === this.root ? null : node, recursive);\r\n if (node.refreshPromise) {\r\n yield this.root.refreshPromise;\r\n yield Event.toPromise(this._onDidRender.event);\r\n }\r\n return result;\r\n });\r\n }\r\n setSelection(elements, browserEvent) {\r\n const nodes = elements.map(e => this.getDataNode(e));\r\n this.tree.setSelection(nodes, browserEvent);\r\n }\r\n getSelection() {\r\n const nodes = this.tree.getSelection();\r\n return nodes.map(n => n.element);\r\n }\r\n setFocus(elements, browserEvent) {\r\n const nodes = elements.map(e => this.getDataNode(e));\r\n this.tree.setFocus(nodes, browserEvent);\r\n }\r\n getFocus() {\r\n const nodes = this.tree.getFocus();\r\n return nodes.map(n => n.element);\r\n }\r\n reveal(element, relativeTop) {\r\n this.tree.reveal(this.getDataNode(element), relativeTop);\r\n }\r\n // Implementation\r\n getDataNode(element) {\r\n const node = this.nodes.get((element === this.root.element ? null : element));\r\n if (!node) {\r\n throw new TreeError(this.user, `Data tree node not found: ${element}`);\r\n }\r\n return node;\r\n }\r\n refreshAndRenderNode(node, recursive, viewStateContext) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.refreshNode(node, recursive, viewStateContext);\r\n this.render(node, viewStateContext);\r\n });\r\n }\r\n refreshNode(node, recursive, viewStateContext) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let result;\r\n this.subTreeRefreshPromises.forEach((refreshPromise, refreshNode) => {\r\n if (!result && intersects(refreshNode, node)) {\r\n result = refreshPromise.then(() => this.refreshNode(node, recursive, viewStateContext));\r\n }\r\n });\r\n if (result) {\r\n return result;\r\n }\r\n return this.doRefreshSubTree(node, recursive, viewStateContext);\r\n });\r\n }\r\n doRefreshSubTree(node, recursive, viewStateContext) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let done;\r\n node.refreshPromise = new Promise(c => done = c);\r\n this.subTreeRefreshPromises.set(node, node.refreshPromise);\r\n node.refreshPromise.finally(() => {\r\n node.refreshPromise = undefined;\r\n this.subTreeRefreshPromises.delete(node);\r\n });\r\n try {\r\n const childrenToRefresh = yield this.doRefreshNode(node, recursive, viewStateContext);\r\n node.stale = false;\r\n yield Promise.all(childrenToRefresh.map(child => this.doRefreshSubTree(child, recursive, viewStateContext)));\r\n }\r\n finally {\r\n done();\r\n }\r\n });\r\n }\r\n doRefreshNode(node, recursive, viewStateContext) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n node.hasChildren = !!this.dataSource.hasChildren(node.element);\r\n let childrenPromise;\r\n if (!node.hasChildren) {\r\n childrenPromise = Promise.resolve(Iterable.empty());\r\n }\r\n else {\r\n const slowTimeout = timeout(800);\r\n slowTimeout.then(() => {\r\n node.slow = true;\r\n this._onDidChangeNodeSlowState.fire(node);\r\n }, _ => null);\r\n childrenPromise = this.doGetChildren(node)\r\n .finally(() => slowTimeout.cancel());\r\n }\r\n try {\r\n const children = yield childrenPromise;\r\n return this.setChildren(node, children, recursive, viewStateContext);\r\n }\r\n catch (err) {\r\n if (node !== this.root) {\r\n this.tree.collapse(node === this.root ? null : node);\r\n }\r\n if (isPromiseCanceledError(err)) {\r\n return [];\r\n }\r\n throw err;\r\n }\r\n finally {\r\n if (node.slow) {\r\n node.slow = false;\r\n this._onDidChangeNodeSlowState.fire(node);\r\n }\r\n }\r\n });\r\n }\r\n doGetChildren(node) {\r\n let result = this.refreshPromises.get(node);\r\n if (result) {\r\n return result;\r\n }\r\n result = createCancelablePromise(() => __awaiter(this, void 0, void 0, function* () {\r\n const children = yield this.dataSource.getChildren(node.element);\r\n return this.processChildren(children);\r\n }));\r\n this.refreshPromises.set(node, result);\r\n return result.finally(() => { this.refreshPromises.delete(node); });\r\n }\r\n _onDidChangeCollapseState({ node, deep }) {\r\n if (node.element === null) {\r\n return;\r\n }\r\n if (!node.collapsed && node.element.stale) {\r\n if (deep) {\r\n this.collapse(node.element.element);\r\n }\r\n else {\r\n this.refreshAndRenderNode(node.element, false)\r\n .catch(onUnexpectedError);\r\n }\r\n }\r\n }\r\n setChildren(node, childrenElementsIterable, recursive, viewStateContext) {\r\n const childrenElements = [...childrenElementsIterable];\r\n // perf: if the node was and still is a leaf, avoid all this hassle\r\n if (node.children.length === 0 && childrenElements.length === 0) {\r\n return [];\r\n }\r\n const nodesToForget = new Map();\r\n const childrenTreeNodesById = new Map();\r\n for (const child of node.children) {\r\n nodesToForget.set(child.element, child);\r\n if (this.identityProvider) {\r\n const collapsed = this.tree.isCollapsed(child);\r\n childrenTreeNodesById.set(child.id, { node: child, collapsed });\r\n }\r\n }\r\n const childrenToRefresh = [];\r\n const children = childrenElements.map(element => {\r\n const hasChildren = !!this.dataSource.hasChildren(element);\r\n if (!this.identityProvider) {\r\n const asyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, hasChildren });\r\n if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\r\n asyncDataTreeNode.collapsedByDefault = false;\r\n childrenToRefresh.push(asyncDataTreeNode);\r\n }\r\n return asyncDataTreeNode;\r\n }\r\n const id = this.identityProvider.getId(element).toString();\r\n const result = childrenTreeNodesById.get(id);\r\n if (result) {\r\n const asyncDataTreeNode = result.node;\r\n nodesToForget.delete(asyncDataTreeNode.element);\r\n this.nodes.delete(asyncDataTreeNode.element);\r\n this.nodes.set(element, asyncDataTreeNode);\r\n asyncDataTreeNode.element = element;\r\n asyncDataTreeNode.hasChildren = hasChildren;\r\n if (recursive) {\r\n if (result.collapsed) {\r\n asyncDataTreeNode.children.forEach(node => dfs(node, node => this.nodes.delete(node.element)));\r\n asyncDataTreeNode.children.splice(0, asyncDataTreeNode.children.length);\r\n asyncDataTreeNode.stale = true;\r\n }\r\n else {\r\n childrenToRefresh.push(asyncDataTreeNode);\r\n }\r\n }\r\n else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\r\n asyncDataTreeNode.collapsedByDefault = false;\r\n childrenToRefresh.push(asyncDataTreeNode);\r\n }\r\n return asyncDataTreeNode;\r\n }\r\n const childAsyncDataTreeNode = createAsyncDataTreeNode({ element, parent: node, id, hasChildren });\r\n if (viewStateContext && viewStateContext.viewState.focus && viewStateContext.viewState.focus.indexOf(id) > -1) {\r\n viewStateContext.focus.push(childAsyncDataTreeNode);\r\n }\r\n if (viewStateContext && viewStateContext.viewState.selection && viewStateContext.viewState.selection.indexOf(id) > -1) {\r\n viewStateContext.selection.push(childAsyncDataTreeNode);\r\n }\r\n if (viewStateContext && viewStateContext.viewState.expanded && viewStateContext.viewState.expanded.indexOf(id) > -1) {\r\n childrenToRefresh.push(childAsyncDataTreeNode);\r\n }\r\n else if (hasChildren && this.collapseByDefault && !this.collapseByDefault(element)) {\r\n childAsyncDataTreeNode.collapsedByDefault = false;\r\n childrenToRefresh.push(childAsyncDataTreeNode);\r\n }\r\n return childAsyncDataTreeNode;\r\n });\r\n for (const node of nodesToForget.values()) {\r\n dfs(node, node => this.nodes.delete(node.element));\r\n }\r\n for (const child of children) {\r\n this.nodes.set(child.element, child);\r\n }\r\n node.children.splice(0, node.children.length, ...children);\r\n // TODO@joao this doesn't take filter into account\r\n if (node !== this.root && this.autoExpandSingleChildren && children.length === 1 && childrenToRefresh.length === 0) {\r\n children[0].collapsedByDefault = false;\r\n childrenToRefresh.push(children[0]);\r\n }\r\n return childrenToRefresh;\r\n }\r\n render(node, viewStateContext) {\r\n const children = node.children.map(node => this.asTreeElement(node, viewStateContext));\r\n this.tree.setChildren(node === this.root ? null : node, children);\r\n if (node !== this.root) {\r\n this.tree.setCollapsible(node, node.hasChildren);\r\n }\r\n this._onDidRender.fire();\r\n }\r\n asTreeElement(node, viewStateContext) {\r\n if (node.stale) {\r\n return {\r\n element: node,\r\n collapsible: node.hasChildren,\r\n collapsed: true\r\n };\r\n }\r\n let collapsed;\r\n if (viewStateContext && viewStateContext.viewState.expanded && node.id && viewStateContext.viewState.expanded.indexOf(node.id) > -1) {\r\n collapsed = false;\r\n }\r\n else {\r\n collapsed = node.collapsedByDefault;\r\n }\r\n node.collapsedByDefault = undefined;\r\n return {\r\n element: node,\r\n children: node.hasChildren ? Iterable.map(node.children, child => this.asTreeElement(child, viewStateContext)) : [],\r\n collapsible: node.hasChildren,\r\n collapsed\r\n };\r\n }\r\n processChildren(children) {\r\n if (this.sorter) {\r\n children = [...children].sort(this.sorter.compare.bind(this.sorter));\r\n }\r\n return children;\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n}\r\nclass CompressibleAsyncDataTreeNodeWrapper {\r\n constructor(node) {\r\n this.node = node;\r\n }\r\n get element() {\r\n return {\r\n elements: this.node.element.elements.map(e => e.element),\r\n incompressible: this.node.element.incompressible\r\n };\r\n }\r\n get children() { return this.node.children.map(node => new CompressibleAsyncDataTreeNodeWrapper(node)); }\r\n get depth() { return this.node.depth; }\r\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\r\n get visibleChildIndex() { return this.node.visibleChildIndex; }\r\n get collapsible() { return this.node.collapsible; }\r\n get collapsed() { return this.node.collapsed; }\r\n get visible() { return this.node.visible; }\r\n get filterData() { return this.node.filterData; }\r\n}\r\nclass CompressibleAsyncDataTreeRenderer {\r\n constructor(renderer, nodeMapper, compressibleNodeMapperProvider, onDidChangeTwistieState) {\r\n this.renderer = renderer;\r\n this.nodeMapper = nodeMapper;\r\n this.compressibleNodeMapperProvider = compressibleNodeMapperProvider;\r\n this.onDidChangeTwistieState = onDidChangeTwistieState;\r\n this.renderedNodes = new Map();\r\n this.disposables = [];\r\n this.templateId = renderer.templateId;\r\n }\r\n renderTemplate(container) {\r\n const templateData = this.renderer.renderTemplate(container);\r\n return { templateData };\r\n }\r\n renderElement(node, index, templateData, height) {\r\n this.renderer.renderElement(this.nodeMapper.map(node), index, templateData.templateData, height);\r\n }\r\n renderCompressedElements(node, index, templateData, height) {\r\n this.renderer.renderCompressedElements(this.compressibleNodeMapperProvider().map(node), index, templateData.templateData, height);\r\n }\r\n renderTwistie(element, twistieElement) {\r\n if (element.slow) {\r\n addClasses(twistieElement, treeItemLoadingIcon.classNames);\r\n }\r\n else {\r\n removeClasses(twistieElement, treeItemLoadingIcon.classNames);\r\n }\r\n return false;\r\n }\r\n disposeElement(node, index, templateData, height) {\r\n if (this.renderer.disposeElement) {\r\n this.renderer.disposeElement(this.nodeMapper.map(node), index, templateData.templateData, height);\r\n }\r\n }\r\n disposeCompressedElements(node, index, templateData, height) {\r\n if (this.renderer.disposeCompressedElements) {\r\n this.renderer.disposeCompressedElements(this.compressibleNodeMapperProvider().map(node), index, templateData.templateData, height);\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n this.renderer.disposeTemplate(templateData.templateData);\r\n }\r\n dispose() {\r\n this.renderedNodes.clear();\r\n this.disposables = dispose(this.disposables);\r\n }\r\n}\r\nfunction asCompressibleObjectTreeOptions(options) {\r\n const objectTreeOptions = options && asObjectTreeOptions(options);\r\n return objectTreeOptions && Object.assign(Object.assign({}, objectTreeOptions), { keyboardNavigationLabelProvider: objectTreeOptions.keyboardNavigationLabelProvider && Object.assign(Object.assign({}, objectTreeOptions.keyboardNavigationLabelProvider), { getCompressedNodeKeyboardNavigationLabel(els) {\r\n return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(els.map(e => e.element));\r\n } }) });\r\n}\r\nexport class CompressibleAsyncDataTree extends AsyncDataTree {\r\n constructor(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, options = {}) {\r\n super(user, container, virtualDelegate, renderers, dataSource, options);\r\n this.compressionDelegate = compressionDelegate;\r\n this.compressibleNodeMapper = new WeakMapper(node => new CompressibleAsyncDataTreeNodeWrapper(node));\r\n this.filter = options.filter;\r\n }\r\n createTree(user, container, delegate, renderers, options) {\r\n const objectTreeDelegate = new ComposedTreeDelegate(delegate);\r\n const objectTreeRenderers = renderers.map(r => new CompressibleAsyncDataTreeRenderer(r, this.nodeMapper, () => this.compressibleNodeMapper, this._onDidChangeNodeSlowState.event));\r\n const objectTreeOptions = asCompressibleObjectTreeOptions(options) || {};\r\n return new CompressibleObjectTree(user, container, objectTreeDelegate, objectTreeRenderers, objectTreeOptions);\r\n }\r\n asTreeElement(node, viewStateContext) {\r\n return Object.assign({ incompressible: this.compressionDelegate.isIncompressible(node.element) }, super.asTreeElement(node, viewStateContext));\r\n }\r\n updateOptions(options = {}) {\r\n this.tree.updateOptions(options);\r\n }\r\n render(node, viewStateContext) {\r\n if (!this.identityProvider) {\r\n return super.render(node, viewStateContext);\r\n }\r\n // Preserve traits across compressions. Hacky but does the trick.\r\n // This is hard to fix properly since it requires rewriting the traits\r\n // across trees and lists. Let's just keep it this way for now.\r\n const getId = (element) => this.identityProvider.getId(element).toString();\r\n const getUncompressedIds = (nodes) => {\r\n const result = new Set();\r\n for (const node of nodes) {\r\n const compressedNode = this.tree.getCompressedTreeNode(node === this.root ? null : node);\r\n if (!compressedNode.element) {\r\n continue;\r\n }\r\n for (const node of compressedNode.element.elements) {\r\n result.add(getId(node.element));\r\n }\r\n }\r\n return result;\r\n };\r\n const oldSelection = getUncompressedIds(this.tree.getSelection());\r\n const oldFocus = getUncompressedIds(this.tree.getFocus());\r\n super.render(node, viewStateContext);\r\n const selection = this.getSelection();\r\n let didChangeSelection = false;\r\n const focus = this.getFocus();\r\n let didChangeFocus = false;\r\n const visit = (node) => {\r\n const compressedNode = node.element;\r\n if (compressedNode) {\r\n for (let i = 0; i < compressedNode.elements.length; i++) {\r\n const id = getId(compressedNode.elements[i].element);\r\n const element = compressedNode.elements[compressedNode.elements.length - 1].element;\r\n // github.com/microsoft/vscode/issues/85938\r\n if (oldSelection.has(id) && selection.indexOf(element) === -1) {\r\n selection.push(element);\r\n didChangeSelection = true;\r\n }\r\n if (oldFocus.has(id) && focus.indexOf(element) === -1) {\r\n focus.push(element);\r\n didChangeFocus = true;\r\n }\r\n }\r\n }\r\n node.children.forEach(visit);\r\n };\r\n visit(this.tree.getCompressedTreeNode(node === this.root ? null : node));\r\n if (didChangeSelection) {\r\n this.setSelection(selection);\r\n }\r\n if (didChangeFocus) {\r\n this.setFocus(focus);\r\n }\r\n }\r\n // For compressed async data trees, `TreeVisibility.Recurse` doesn't currently work\r\n // and we have to filter everything beforehand\r\n // Related to #85193 and #85835\r\n processChildren(children) {\r\n if (this.filter) {\r\n children = Iterable.filter(children, e => {\r\n const result = this.filter.filter(e, 1 /* Visible */);\r\n const visibility = getVisibility(result);\r\n if (visibility === 2 /* Recurse */) {\r\n throw new Error('Recursive tree visibility not supported in async data compressed trees');\r\n }\r\n return visibility === 1 /* Visible */;\r\n });\r\n }\r\n return super.processChildren(children);\r\n }\r\n}\r\nfunction getVisibility(filterResult) {\r\n if (typeof filterResult === 'boolean') {\r\n return filterResult ? 1 /* Visible */ : 0 /* Hidden */;\r\n }\r\n else if (isFilterResult(filterResult)) {\r\n return getVisibleState(filterResult.visibility);\r\n }\r\n else {\r\n return getVisibleState(filterResult);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Iterable } from '../../../common/iterator.js';\r\nimport { Event } from '../../../common/event.js';\r\nimport { TreeError, WeakMapper } from './tree.js';\r\nimport { ObjectTreeModel } from './objectTreeModel.js';\r\nfunction noCompress(element) {\r\n const elements = [element.element];\r\n const incompressible = element.incompressible || false;\r\n return {\r\n element: { elements, incompressible },\r\n children: Iterable.map(Iterable.from(element.children), noCompress),\r\n collapsible: element.collapsible,\r\n collapsed: element.collapsed\r\n };\r\n}\r\n// Exported only for test reasons, do not use directly\r\nexport function compress(element) {\r\n const elements = [element.element];\r\n const incompressible = element.incompressible || false;\r\n let childrenIterator;\r\n let children;\r\n while (true) {\r\n [children, childrenIterator] = Iterable.consume(Iterable.from(element.children), 2);\r\n if (children.length !== 1) {\r\n break;\r\n }\r\n element = children[0];\r\n if (element.incompressible) {\r\n break;\r\n }\r\n elements.push(element.element);\r\n }\r\n return {\r\n element: { elements, incompressible },\r\n children: Iterable.map(Iterable.concat(children, childrenIterator), compress),\r\n collapsible: element.collapsible,\r\n collapsed: element.collapsed\r\n };\r\n}\r\nfunction _decompress(element, index = 0) {\r\n let children;\r\n if (index < element.element.elements.length - 1) {\r\n children = [_decompress(element, index + 1)];\r\n }\r\n else {\r\n children = Iterable.map(Iterable.from(element.children), el => _decompress(el, 0));\r\n }\r\n if (index === 0 && element.element.incompressible) {\r\n return {\r\n element: element.element.elements[index],\r\n children,\r\n incompressible: true,\r\n collapsible: element.collapsible,\r\n collapsed: element.collapsed\r\n };\r\n }\r\n return {\r\n element: element.element.elements[index],\r\n children,\r\n collapsible: element.collapsible,\r\n collapsed: element.collapsed\r\n };\r\n}\r\n// Exported only for test reasons, do not use directly\r\nexport function decompress(element) {\r\n return _decompress(element, 0);\r\n}\r\nfunction splice(treeElement, element, children) {\r\n if (treeElement.element === element) {\r\n return Object.assign(Object.assign({}, treeElement), { children });\r\n }\r\n return Object.assign(Object.assign({}, treeElement), { children: Iterable.map(Iterable.from(treeElement.children), e => splice(e, element, children)) });\r\n}\r\n// Exported only for test reasons, do not use directly\r\nexport class CompressedObjectTreeModel {\r\n constructor(user, list, options = {}) {\r\n this.user = user;\r\n this.rootRef = null;\r\n this.nodes = new Map();\r\n this.model = new ObjectTreeModel(user, list, options);\r\n this.enabled = typeof options.compressionEnabled === 'undefined' ? true : options.compressionEnabled;\r\n }\r\n get onDidSplice() { return this.model.onDidSplice; }\r\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\r\n get onDidChangeRenderNodeCount() { return this.model.onDidChangeRenderNodeCount; }\r\n setChildren(element, children = Iterable.empty()) {\r\n if (element === null) {\r\n const compressedChildren = Iterable.map(children, this.enabled ? compress : noCompress);\r\n this._setChildren(null, compressedChildren);\r\n return;\r\n }\r\n const compressedNode = this.nodes.get(element);\r\n if (!compressedNode) {\r\n throw new Error('Unknown compressed tree node');\r\n }\r\n const node = this.model.getNode(compressedNode);\r\n const compressedParentNode = this.model.getParentNodeLocation(compressedNode);\r\n const parent = this.model.getNode(compressedParentNode);\r\n const decompressedElement = decompress(node);\r\n const splicedElement = splice(decompressedElement, element, children);\r\n const recompressedElement = (this.enabled ? compress : noCompress)(splicedElement);\r\n const parentChildren = parent.children\r\n .map(child => child === node ? recompressedElement : child);\r\n this._setChildren(parent.element, parentChildren);\r\n }\r\n setCompressionEnabled(enabled) {\r\n if (enabled === this.enabled) {\r\n return;\r\n }\r\n this.enabled = enabled;\r\n const root = this.model.getNode();\r\n const rootChildren = root.children;\r\n const decompressedRootChildren = Iterable.map(rootChildren, decompress);\r\n const recompressedRootChildren = Iterable.map(decompressedRootChildren, enabled ? compress : noCompress);\r\n this._setChildren(null, recompressedRootChildren);\r\n }\r\n _setChildren(node, children) {\r\n const insertedElements = new Set();\r\n const _onDidCreateNode = (node) => {\r\n for (const element of node.element.elements) {\r\n insertedElements.add(element);\r\n this.nodes.set(element, node.element);\r\n }\r\n };\r\n const _onDidDeleteNode = (node) => {\r\n for (const element of node.element.elements) {\r\n if (!insertedElements.has(element)) {\r\n this.nodes.delete(element);\r\n }\r\n }\r\n };\r\n this.model.setChildren(node, children, _onDidCreateNode, _onDidDeleteNode);\r\n }\r\n has(element) {\r\n return this.nodes.has(element);\r\n }\r\n getListIndex(location) {\r\n const node = this.getCompressedNode(location);\r\n return this.model.getListIndex(node);\r\n }\r\n getListRenderCount(location) {\r\n const node = this.getCompressedNode(location);\r\n return this.model.getListRenderCount(node);\r\n }\r\n getNode(location) {\r\n if (typeof location === 'undefined') {\r\n return this.model.getNode();\r\n }\r\n const node = this.getCompressedNode(location);\r\n return this.model.getNode(node);\r\n }\r\n // TODO: review this\r\n getNodeLocation(node) {\r\n const compressedNode = this.model.getNodeLocation(node);\r\n if (compressedNode === null) {\r\n return null;\r\n }\r\n return compressedNode.elements[compressedNode.elements.length - 1];\r\n }\r\n // TODO: review this\r\n getParentNodeLocation(location) {\r\n const compressedNode = this.getCompressedNode(location);\r\n const parentNode = this.model.getParentNodeLocation(compressedNode);\r\n if (parentNode === null) {\r\n return null;\r\n }\r\n return parentNode.elements[parentNode.elements.length - 1];\r\n }\r\n isCollapsible(location) {\r\n const compressedNode = this.getCompressedNode(location);\r\n return this.model.isCollapsible(compressedNode);\r\n }\r\n setCollapsible(location, collapsible) {\r\n const compressedNode = this.getCompressedNode(location);\r\n return this.model.setCollapsible(compressedNode, collapsible);\r\n }\r\n isCollapsed(location) {\r\n const compressedNode = this.getCompressedNode(location);\r\n return this.model.isCollapsed(compressedNode);\r\n }\r\n setCollapsed(location, collapsed, recursive) {\r\n const compressedNode = this.getCompressedNode(location);\r\n return this.model.setCollapsed(compressedNode, collapsed, recursive);\r\n }\r\n expandTo(location) {\r\n const compressedNode = this.getCompressedNode(location);\r\n this.model.expandTo(compressedNode);\r\n }\r\n rerender(location) {\r\n const compressedNode = this.getCompressedNode(location);\r\n this.model.rerender(compressedNode);\r\n }\r\n refilter() {\r\n this.model.refilter();\r\n }\r\n getCompressedNode(element) {\r\n if (element === null) {\r\n return null;\r\n }\r\n const node = this.nodes.get(element);\r\n if (!node) {\r\n throw new TreeError(this.user, `Tree element not found: ${element}`);\r\n }\r\n return node;\r\n }\r\n}\r\nexport const DefaultElementMapper = elements => elements[elements.length - 1];\r\nclass CompressedTreeNodeWrapper {\r\n constructor(unwrapper, node) {\r\n this.unwrapper = unwrapper;\r\n this.node = node;\r\n }\r\n get element() { return this.node.element === null ? null : this.unwrapper(this.node.element); }\r\n get children() { return this.node.children.map(node => new CompressedTreeNodeWrapper(this.unwrapper, node)); }\r\n get depth() { return this.node.depth; }\r\n get visibleChildrenCount() { return this.node.visibleChildrenCount; }\r\n get visibleChildIndex() { return this.node.visibleChildIndex; }\r\n get collapsible() { return this.node.collapsible; }\r\n get collapsed() { return this.node.collapsed; }\r\n get visible() { return this.node.visible; }\r\n get filterData() { return this.node.filterData; }\r\n}\r\nfunction mapList(nodeMapper, list) {\r\n return {\r\n splice(start, deleteCount, toInsert) {\r\n list.splice(start, deleteCount, toInsert.map(node => nodeMapper.map(node)));\r\n },\r\n updateElementHeight(index, height) {\r\n list.updateElementHeight(index, height);\r\n }\r\n };\r\n}\r\nfunction mapOptions(compressedNodeUnwrapper, options) {\r\n return Object.assign(Object.assign({}, options), { sorter: options.sorter && {\r\n compare(node, otherNode) {\r\n return options.sorter.compare(node.elements[0], otherNode.elements[0]);\r\n }\r\n }, identityProvider: options.identityProvider && {\r\n getId(node) {\r\n return options.identityProvider.getId(compressedNodeUnwrapper(node));\r\n }\r\n }, filter: options.filter && {\r\n filter(node, parentVisibility) {\r\n return options.filter.filter(compressedNodeUnwrapper(node), parentVisibility);\r\n }\r\n } });\r\n}\r\nexport class CompressibleObjectTreeModel {\r\n constructor(user, list, options = {}) {\r\n this.rootRef = null;\r\n this.elementMapper = options.elementMapper || DefaultElementMapper;\r\n const compressedNodeUnwrapper = node => this.elementMapper(node.elements);\r\n this.nodeMapper = new WeakMapper(node => new CompressedTreeNodeWrapper(compressedNodeUnwrapper, node));\r\n this.model = new CompressedObjectTreeModel(user, mapList(this.nodeMapper, list), mapOptions(compressedNodeUnwrapper, options));\r\n }\r\n get onDidSplice() {\r\n return Event.map(this.model.onDidSplice, ({ insertedNodes, deletedNodes }) => ({\r\n insertedNodes: insertedNodes.map(node => this.nodeMapper.map(node)),\r\n deletedNodes: deletedNodes.map(node => this.nodeMapper.map(node)),\r\n }));\r\n }\r\n get onDidChangeCollapseState() {\r\n return Event.map(this.model.onDidChangeCollapseState, ({ node, deep }) => ({\r\n node: this.nodeMapper.map(node),\r\n deep\r\n }));\r\n }\r\n get onDidChangeRenderNodeCount() {\r\n return Event.map(this.model.onDidChangeRenderNodeCount, node => this.nodeMapper.map(node));\r\n }\r\n setChildren(element, children = Iterable.empty()) {\r\n this.model.setChildren(element, children);\r\n }\r\n setCompressionEnabled(enabled) {\r\n this.model.setCompressionEnabled(enabled);\r\n }\r\n has(location) {\r\n return this.model.has(location);\r\n }\r\n getListIndex(location) {\r\n return this.model.getListIndex(location);\r\n }\r\n getListRenderCount(location) {\r\n return this.model.getListRenderCount(location);\r\n }\r\n getNode(location) {\r\n return this.nodeMapper.map(this.model.getNode(location));\r\n }\r\n getNodeLocation(node) {\r\n return node.element;\r\n }\r\n getParentNodeLocation(location) {\r\n return this.model.getParentNodeLocation(location);\r\n }\r\n isCollapsible(location) {\r\n return this.model.isCollapsible(location);\r\n }\r\n setCollapsible(location, collapsed) {\r\n return this.model.setCollapsible(location, collapsed);\r\n }\r\n isCollapsed(location) {\r\n return this.model.isCollapsed(location);\r\n }\r\n setCollapsed(location, collapsed, recursive) {\r\n return this.model.setCollapsed(location, collapsed, recursive);\r\n }\r\n expandTo(location) {\r\n return this.model.expandTo(location);\r\n }\r\n rerender(location) {\r\n return this.model.rerender(location);\r\n }\r\n refilter() {\r\n return this.model.refilter();\r\n }\r\n getCompressedTreeNode(location = null) {\r\n return this.model.getNode(location);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { AbstractTree } from './abstractTree.js';\r\nimport { ObjectTreeModel } from './objectTreeModel.js';\r\nexport class DataTree extends AbstractTree {\r\n constructor(user, container, delegate, renderers, dataSource, options = {}) {\r\n super(user, container, delegate, renderers, options);\r\n this.user = user;\r\n this.dataSource = dataSource;\r\n this.identityProvider = options.identityProvider;\r\n }\r\n createModel(user, view, options) {\r\n return new ObjectTreeModel(user, view, options);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TreeError } from './tree.js';\r\nimport { tail2 } from '../../../common/arrays.js';\r\nimport { Emitter, EventBufferer } from '../../../common/event.js';\r\nimport { Iterable } from '../../../common/iterator.js';\r\nexport function isFilterResult(obj) {\r\n return typeof obj === 'object' && 'visibility' in obj && 'data' in obj;\r\n}\r\nexport function getVisibleState(visibility) {\r\n switch (visibility) {\r\n case true: return 1 /* Visible */;\r\n case false: return 0 /* Hidden */;\r\n default: return visibility;\r\n }\r\n}\r\nfunction isCollapsibleStateUpdate(update) {\r\n return typeof update.collapsible === 'boolean';\r\n}\r\nexport class IndexTreeModel {\r\n constructor(user, list, rootElement, options = {}) {\r\n this.user = user;\r\n this.list = list;\r\n this.rootRef = [];\r\n this.eventBufferer = new EventBufferer();\r\n this._onDidChangeCollapseState = new Emitter();\r\n this.onDidChangeCollapseState = this.eventBufferer.wrapEvent(this._onDidChangeCollapseState.event);\r\n this._onDidChangeRenderNodeCount = new Emitter();\r\n this.onDidChangeRenderNodeCount = this.eventBufferer.wrapEvent(this._onDidChangeRenderNodeCount.event);\r\n this._onDidSplice = new Emitter();\r\n this.onDidSplice = this._onDidSplice.event;\r\n this.collapseByDefault = typeof options.collapseByDefault === 'undefined' ? false : options.collapseByDefault;\r\n this.filter = options.filter;\r\n this.autoExpandSingleChildren = typeof options.autoExpandSingleChildren === 'undefined' ? false : options.autoExpandSingleChildren;\r\n this.root = {\r\n parent: undefined,\r\n element: rootElement,\r\n children: [],\r\n depth: 0,\r\n visibleChildrenCount: 0,\r\n visibleChildIndex: -1,\r\n collapsible: false,\r\n collapsed: false,\r\n renderNodeCount: 0,\r\n visibility: 1 /* Visible */,\r\n visible: true,\r\n filterData: undefined\r\n };\r\n }\r\n splice(location, deleteCount, toInsert = Iterable.empty(), onDidCreateNode, onDidDeleteNode) {\r\n if (location.length === 0) {\r\n throw new TreeError(this.user, 'Invalid tree location');\r\n }\r\n const { parentNode, listIndex, revealed, visible } = this.getParentNodeWithListIndex(location);\r\n const treeListElementsToInsert = [];\r\n const nodesToInsertIterator = Iterable.map(toInsert, el => this.createTreeNode(el, parentNode, parentNode.visible ? 1 /* Visible */ : 0 /* Hidden */, revealed, treeListElementsToInsert, onDidCreateNode));\r\n const lastIndex = location[location.length - 1];\r\n // figure out what's the visible child start index right before the\r\n // splice point\r\n let visibleChildStartIndex = 0;\r\n for (let i = lastIndex; i >= 0 && i < parentNode.children.length; i--) {\r\n const child = parentNode.children[i];\r\n if (child.visible) {\r\n visibleChildStartIndex = child.visibleChildIndex;\r\n break;\r\n }\r\n }\r\n const nodesToInsert = [];\r\n let insertedVisibleChildrenCount = 0;\r\n let renderNodeCount = 0;\r\n for (const child of nodesToInsertIterator) {\r\n nodesToInsert.push(child);\r\n renderNodeCount += child.renderNodeCount;\r\n if (child.visible) {\r\n child.visibleChildIndex = visibleChildStartIndex + insertedVisibleChildrenCount++;\r\n }\r\n }\r\n const deletedNodes = parentNode.children.splice(lastIndex, deleteCount, ...nodesToInsert);\r\n // figure out what is the count of deleted visible children\r\n let deletedVisibleChildrenCount = 0;\r\n for (const child of deletedNodes) {\r\n if (child.visible) {\r\n deletedVisibleChildrenCount++;\r\n }\r\n }\r\n // and adjust for all visible children after the splice point\r\n if (deletedVisibleChildrenCount !== 0) {\r\n for (let i = lastIndex + nodesToInsert.length; i < parentNode.children.length; i++) {\r\n const child = parentNode.children[i];\r\n if (child.visible) {\r\n child.visibleChildIndex -= deletedVisibleChildrenCount;\r\n }\r\n }\r\n }\r\n // update parent's visible children count\r\n parentNode.visibleChildrenCount += insertedVisibleChildrenCount - deletedVisibleChildrenCount;\r\n if (revealed && visible) {\r\n const visibleDeleteCount = deletedNodes.reduce((r, node) => r + (node.visible ? node.renderNodeCount : 0), 0);\r\n this._updateAncestorsRenderNodeCount(parentNode, renderNodeCount - visibleDeleteCount);\r\n this.list.splice(listIndex, visibleDeleteCount, treeListElementsToInsert);\r\n }\r\n if (deletedNodes.length > 0 && onDidDeleteNode) {\r\n const visit = (node) => {\r\n onDidDeleteNode(node);\r\n node.children.forEach(visit);\r\n };\r\n deletedNodes.forEach(visit);\r\n }\r\n this._onDidSplice.fire({ insertedNodes: nodesToInsert, deletedNodes });\r\n let node = parentNode;\r\n while (node) {\r\n if (node.visibility === 2 /* Recurse */) {\r\n this.refilter();\r\n break;\r\n }\r\n node = node.parent;\r\n }\r\n }\r\n rerender(location) {\r\n if (location.length === 0) {\r\n throw new TreeError(this.user, 'Invalid tree location');\r\n }\r\n const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);\r\n if (node.visible && revealed) {\r\n this.list.splice(listIndex, 1, [node]);\r\n }\r\n }\r\n has(location) {\r\n return this.hasTreeNode(location);\r\n }\r\n getListIndex(location) {\r\n const { listIndex, visible, revealed } = this.getTreeNodeWithListIndex(location);\r\n return visible && revealed ? listIndex : -1;\r\n }\r\n getListRenderCount(location) {\r\n return this.getTreeNode(location).renderNodeCount;\r\n }\r\n isCollapsible(location) {\r\n return this.getTreeNode(location).collapsible;\r\n }\r\n setCollapsible(location, collapsible) {\r\n const node = this.getTreeNode(location);\r\n if (typeof collapsible === 'undefined') {\r\n collapsible = !node.collapsible;\r\n }\r\n const update = { collapsible };\r\n return this.eventBufferer.bufferEvents(() => this._setCollapseState(location, update));\r\n }\r\n isCollapsed(location) {\r\n return this.getTreeNode(location).collapsed;\r\n }\r\n setCollapsed(location, collapsed, recursive) {\r\n const node = this.getTreeNode(location);\r\n if (typeof collapsed === 'undefined') {\r\n collapsed = !node.collapsed;\r\n }\r\n const update = { collapsed, recursive: recursive || false };\r\n return this.eventBufferer.bufferEvents(() => this._setCollapseState(location, update));\r\n }\r\n _setCollapseState(location, update) {\r\n const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);\r\n const result = this._setListNodeCollapseState(node, listIndex, revealed, update);\r\n if (node !== this.root && this.autoExpandSingleChildren && result && !isCollapsibleStateUpdate(update) && node.collapsible && !node.collapsed && !update.recursive) {\r\n let onlyVisibleChildIndex = -1;\r\n for (let i = 0; i < node.children.length; i++) {\r\n const child = node.children[i];\r\n if (child.visible) {\r\n if (onlyVisibleChildIndex > -1) {\r\n onlyVisibleChildIndex = -1;\r\n break;\r\n }\r\n else {\r\n onlyVisibleChildIndex = i;\r\n }\r\n }\r\n }\r\n if (onlyVisibleChildIndex > -1) {\r\n this._setCollapseState([...location, onlyVisibleChildIndex], update);\r\n }\r\n }\r\n return result;\r\n }\r\n _setListNodeCollapseState(node, listIndex, revealed, update) {\r\n const result = this._setNodeCollapseState(node, update, false);\r\n if (!revealed || !node.visible || !result) {\r\n return result;\r\n }\r\n const previousRenderNodeCount = node.renderNodeCount;\r\n const toInsert = this.updateNodeAfterCollapseChange(node);\r\n const deleteCount = previousRenderNodeCount - (listIndex === -1 ? 0 : 1);\r\n this.list.splice(listIndex + 1, deleteCount, toInsert.slice(1));\r\n return result;\r\n }\r\n _setNodeCollapseState(node, update, deep) {\r\n let result;\r\n if (node === this.root) {\r\n result = false;\r\n }\r\n else {\r\n if (isCollapsibleStateUpdate(update)) {\r\n result = node.collapsible !== update.collapsible;\r\n node.collapsible = update.collapsible;\r\n }\r\n else if (!node.collapsible) {\r\n result = false;\r\n }\r\n else {\r\n result = node.collapsed !== update.collapsed;\r\n node.collapsed = update.collapsed;\r\n }\r\n if (result) {\r\n this._onDidChangeCollapseState.fire({ node, deep });\r\n }\r\n }\r\n if (!isCollapsibleStateUpdate(update) && update.recursive) {\r\n for (const child of node.children) {\r\n result = this._setNodeCollapseState(child, update, true) || result;\r\n }\r\n }\r\n return result;\r\n }\r\n expandTo(location) {\r\n this.eventBufferer.bufferEvents(() => {\r\n let node = this.getTreeNode(location);\r\n while (node.parent) {\r\n node = node.parent;\r\n location = location.slice(0, location.length - 1);\r\n if (node.collapsed) {\r\n this._setCollapseState(location, { collapsed: false, recursive: false });\r\n }\r\n }\r\n });\r\n }\r\n refilter() {\r\n const previousRenderNodeCount = this.root.renderNodeCount;\r\n const toInsert = this.updateNodeAfterFilterChange(this.root);\r\n this.list.splice(0, previousRenderNodeCount, toInsert);\r\n }\r\n createTreeNode(treeElement, parent, parentVisibility, revealed, treeListElements, onDidCreateNode) {\r\n const node = {\r\n parent,\r\n element: treeElement.element,\r\n children: [],\r\n depth: parent.depth + 1,\r\n visibleChildrenCount: 0,\r\n visibleChildIndex: -1,\r\n collapsible: typeof treeElement.collapsible === 'boolean' ? treeElement.collapsible : (typeof treeElement.collapsed !== 'undefined'),\r\n collapsed: typeof treeElement.collapsed === 'undefined' ? this.collapseByDefault : treeElement.collapsed,\r\n renderNodeCount: 1,\r\n visibility: 1 /* Visible */,\r\n visible: true,\r\n filterData: undefined\r\n };\r\n const visibility = this._filterNode(node, parentVisibility);\r\n node.visibility = visibility;\r\n if (revealed) {\r\n treeListElements.push(node);\r\n }\r\n const childElements = treeElement.children || Iterable.empty();\r\n const childRevealed = revealed && visibility !== 0 /* Hidden */ && !node.collapsed;\r\n const childNodes = Iterable.map(childElements, el => this.createTreeNode(el, node, visibility, childRevealed, treeListElements, onDidCreateNode));\r\n let visibleChildrenCount = 0;\r\n let renderNodeCount = 1;\r\n for (const child of childNodes) {\r\n node.children.push(child);\r\n renderNodeCount += child.renderNodeCount;\r\n if (child.visible) {\r\n child.visibleChildIndex = visibleChildrenCount++;\r\n }\r\n }\r\n node.collapsible = node.collapsible || node.children.length > 0;\r\n node.visibleChildrenCount = visibleChildrenCount;\r\n node.visible = visibility === 2 /* Recurse */ ? visibleChildrenCount > 0 : (visibility === 1 /* Visible */);\r\n if (!node.visible) {\r\n node.renderNodeCount = 0;\r\n if (revealed) {\r\n treeListElements.pop();\r\n }\r\n }\r\n else if (!node.collapsed) {\r\n node.renderNodeCount = renderNodeCount;\r\n }\r\n if (onDidCreateNode) {\r\n onDidCreateNode(node);\r\n }\r\n return node;\r\n }\r\n updateNodeAfterCollapseChange(node) {\r\n const previousRenderNodeCount = node.renderNodeCount;\r\n const result = [];\r\n this._updateNodeAfterCollapseChange(node, result);\r\n this._updateAncestorsRenderNodeCount(node.parent, result.length - previousRenderNodeCount);\r\n return result;\r\n }\r\n _updateNodeAfterCollapseChange(node, result) {\r\n if (node.visible === false) {\r\n return 0;\r\n }\r\n result.push(node);\r\n node.renderNodeCount = 1;\r\n if (!node.collapsed) {\r\n for (const child of node.children) {\r\n node.renderNodeCount += this._updateNodeAfterCollapseChange(child, result);\r\n }\r\n }\r\n this._onDidChangeRenderNodeCount.fire(node);\r\n return node.renderNodeCount;\r\n }\r\n updateNodeAfterFilterChange(node) {\r\n const previousRenderNodeCount = node.renderNodeCount;\r\n const result = [];\r\n this._updateNodeAfterFilterChange(node, node.visible ? 1 /* Visible */ : 0 /* Hidden */, result);\r\n this._updateAncestorsRenderNodeCount(node.parent, result.length - previousRenderNodeCount);\r\n return result;\r\n }\r\n _updateNodeAfterFilterChange(node, parentVisibility, result, revealed = true) {\r\n let visibility;\r\n if (node !== this.root) {\r\n visibility = this._filterNode(node, parentVisibility);\r\n if (visibility === 0 /* Hidden */) {\r\n node.visible = false;\r\n node.renderNodeCount = 0;\r\n return false;\r\n }\r\n if (revealed) {\r\n result.push(node);\r\n }\r\n }\r\n const resultStartLength = result.length;\r\n node.renderNodeCount = node === this.root ? 0 : 1;\r\n let hasVisibleDescendants = false;\r\n if (!node.collapsed || visibility !== 0 /* Hidden */) {\r\n let visibleChildIndex = 0;\r\n for (const child of node.children) {\r\n hasVisibleDescendants = this._updateNodeAfterFilterChange(child, visibility, result, revealed && !node.collapsed) || hasVisibleDescendants;\r\n if (child.visible) {\r\n child.visibleChildIndex = visibleChildIndex++;\r\n }\r\n }\r\n node.visibleChildrenCount = visibleChildIndex;\r\n }\r\n else {\r\n node.visibleChildrenCount = 0;\r\n }\r\n if (node !== this.root) {\r\n node.visible = visibility === 2 /* Recurse */ ? hasVisibleDescendants : (visibility === 1 /* Visible */);\r\n }\r\n if (!node.visible) {\r\n node.renderNodeCount = 0;\r\n if (revealed) {\r\n result.pop();\r\n }\r\n }\r\n else if (!node.collapsed) {\r\n node.renderNodeCount += result.length - resultStartLength;\r\n }\r\n this._onDidChangeRenderNodeCount.fire(node);\r\n return node.visible;\r\n }\r\n _updateAncestorsRenderNodeCount(node, diff) {\r\n if (diff === 0) {\r\n return;\r\n }\r\n while (node) {\r\n node.renderNodeCount += diff;\r\n this._onDidChangeRenderNodeCount.fire(node);\r\n node = node.parent;\r\n }\r\n }\r\n _filterNode(node, parentVisibility) {\r\n const result = this.filter ? this.filter.filter(node.element, parentVisibility) : 1 /* Visible */;\r\n if (typeof result === 'boolean') {\r\n node.filterData = undefined;\r\n return result ? 1 /* Visible */ : 0 /* Hidden */;\r\n }\r\n else if (isFilterResult(result)) {\r\n node.filterData = result.data;\r\n return getVisibleState(result.visibility);\r\n }\r\n else {\r\n node.filterData = undefined;\r\n return getVisibleState(result);\r\n }\r\n }\r\n // cheap\r\n hasTreeNode(location, node = this.root) {\r\n if (!location || location.length === 0) {\r\n return true;\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index > node.children.length) {\r\n return false;\r\n }\r\n return this.hasTreeNode(rest, node.children[index]);\r\n }\r\n // cheap\r\n getTreeNode(location, node = this.root) {\r\n if (!location || location.length === 0) {\r\n return node;\r\n }\r\n const [index, ...rest] = location;\r\n if (index < 0 || index > node.children.length) {\r\n throw new TreeError(this.user, 'Invalid tree location');\r\n }\r\n return this.getTreeNode(rest, node.children[index]);\r\n }\r\n // expensive\r\n getTreeNodeWithListIndex(location) {\r\n if (location.length === 0) {\r\n return { node: this.root, listIndex: -1, revealed: true, visible: false };\r\n }\r\n const { parentNode, listIndex, revealed, visible } = this.getParentNodeWithListIndex(location);\r\n const index = location[location.length - 1];\r\n if (index < 0 || index > parentNode.children.length) {\r\n throw new TreeError(this.user, 'Invalid tree location');\r\n }\r\n const node = parentNode.children[index];\r\n return { node, listIndex, revealed, visible: visible && node.visible };\r\n }\r\n getParentNodeWithListIndex(location, node = this.root, listIndex = 0, revealed = true, visible = true) {\r\n const [index, ...rest] = location;\r\n if (index < 0 || index > node.children.length) {\r\n throw new TreeError(this.user, 'Invalid tree location');\r\n }\r\n // TODO@joao perf!\r\n for (let i = 0; i < index; i++) {\r\n listIndex += node.children[i].renderNodeCount;\r\n }\r\n revealed = revealed && !node.collapsed;\r\n visible = visible && node.visible;\r\n if (rest.length === 0) {\r\n return { parentNode: node, listIndex, revealed, visible };\r\n }\r\n return this.getParentNodeWithListIndex(rest, node.children[index], listIndex + 1, revealed, visible);\r\n }\r\n getNode(location = []) {\r\n return this.getTreeNode(location);\r\n }\r\n // TODO@joao perf!\r\n getNodeLocation(node) {\r\n const location = [];\r\n let indexTreeNode = node; // typing woes\r\n while (indexTreeNode.parent) {\r\n location.push(indexTreeNode.parent.children.indexOf(indexTreeNode));\r\n indexTreeNode = indexTreeNode.parent;\r\n }\r\n return location.reverse();\r\n }\r\n getParentNodeLocation(location) {\r\n if (location.length === 0) {\r\n return undefined;\r\n }\r\n else if (location.length === 1) {\r\n return [];\r\n }\r\n else {\r\n return tail2(location)[0];\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Iterable } from '../../../common/iterator.js';\r\nimport { AbstractTree } from './abstractTree.js';\r\nimport { ObjectTreeModel } from './objectTreeModel.js';\r\nimport { CompressibleObjectTreeModel } from './compressedObjectTreeModel.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nexport class ObjectTree extends AbstractTree {\r\n constructor(user, container, delegate, renderers, options = {}) {\r\n super(user, container, delegate, renderers, options);\r\n }\r\n get onDidChangeCollapseState() { return this.model.onDidChangeCollapseState; }\r\n setChildren(element, children = Iterable.empty()) {\r\n this.model.setChildren(element, children);\r\n }\r\n rerender(element) {\r\n if (element === undefined) {\r\n this.view.rerender();\r\n return;\r\n }\r\n this.model.rerender(element);\r\n }\r\n hasElement(element) {\r\n return this.model.has(element);\r\n }\r\n createModel(user, view, options) {\r\n return new ObjectTreeModel(user, view, options);\r\n }\r\n}\r\nclass CompressibleRenderer {\r\n constructor(_compressedTreeNodeProvider, renderer) {\r\n this._compressedTreeNodeProvider = _compressedTreeNodeProvider;\r\n this.renderer = renderer;\r\n this.templateId = renderer.templateId;\r\n if (renderer.onDidChangeTwistieState) {\r\n this.onDidChangeTwistieState = renderer.onDidChangeTwistieState;\r\n }\r\n }\r\n get compressedTreeNodeProvider() {\r\n return this._compressedTreeNodeProvider();\r\n }\r\n renderTemplate(container) {\r\n const data = this.renderer.renderTemplate(container);\r\n return { compressedTreeNode: undefined, data };\r\n }\r\n renderElement(node, index, templateData, height) {\r\n const compressedTreeNode = this.compressedTreeNodeProvider.getCompressedTreeNode(node.element);\r\n if (compressedTreeNode.element.elements.length === 1) {\r\n templateData.compressedTreeNode = undefined;\r\n this.renderer.renderElement(node, index, templateData.data, height);\r\n }\r\n else {\r\n templateData.compressedTreeNode = compressedTreeNode;\r\n this.renderer.renderCompressedElements(compressedTreeNode, index, templateData.data, height);\r\n }\r\n }\r\n disposeElement(node, index, templateData, height) {\r\n if (templateData.compressedTreeNode) {\r\n if (this.renderer.disposeCompressedElements) {\r\n this.renderer.disposeCompressedElements(templateData.compressedTreeNode, index, templateData.data, height);\r\n }\r\n }\r\n else {\r\n if (this.renderer.disposeElement) {\r\n this.renderer.disposeElement(node, index, templateData.data, height);\r\n }\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n this.renderer.disposeTemplate(templateData.data);\r\n }\r\n renderTwistie(element, twistieElement) {\r\n if (this.renderer.renderTwistie) {\r\n this.renderer.renderTwistie(element, twistieElement);\r\n }\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], CompressibleRenderer.prototype, \"compressedTreeNodeProvider\", null);\r\nfunction asObjectTreeOptions(compressedTreeNodeProvider, options) {\r\n return options && Object.assign(Object.assign({}, options), { keyboardNavigationLabelProvider: options.keyboardNavigationLabelProvider && {\r\n getKeyboardNavigationLabel(e) {\r\n let compressedTreeNode;\r\n try {\r\n compressedTreeNode = compressedTreeNodeProvider().getCompressedTreeNode(e);\r\n }\r\n catch (_a) {\r\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);\r\n }\r\n if (compressedTreeNode.element.elements.length === 1) {\r\n return options.keyboardNavigationLabelProvider.getKeyboardNavigationLabel(e);\r\n }\r\n else {\r\n return options.keyboardNavigationLabelProvider.getCompressedNodeKeyboardNavigationLabel(compressedTreeNode.element.elements);\r\n }\r\n }\r\n } });\r\n}\r\nexport class CompressibleObjectTree extends ObjectTree {\r\n constructor(user, container, delegate, renderers, options = {}) {\r\n const compressedTreeNodeProvider = () => this;\r\n const compressibleRenderers = renderers.map(r => new CompressibleRenderer(compressedTreeNodeProvider, r));\r\n super(user, container, delegate, compressibleRenderers, asObjectTreeOptions(compressedTreeNodeProvider, options));\r\n }\r\n setChildren(element, children = Iterable.empty()) {\r\n this.model.setChildren(element, children);\r\n }\r\n createModel(user, view, options) {\r\n return new CompressibleObjectTreeModel(user, view, options);\r\n }\r\n updateOptions(optionsUpdate = {}) {\r\n super.updateOptions(optionsUpdate);\r\n if (typeof optionsUpdate.compressionEnabled !== 'undefined') {\r\n this.model.setCompressionEnabled(optionsUpdate.compressionEnabled);\r\n }\r\n }\r\n getCompressedTreeNode(element = null) {\r\n return this.model.getCompressedTreeNode(element);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Iterable } from '../../../common/iterator.js';\r\nimport { IndexTreeModel } from './indexTreeModel.js';\r\nimport { TreeError } from './tree.js';\r\nimport { mergeSort } from '../../../common/arrays.js';\r\nexport class ObjectTreeModel {\r\n constructor(user, list, options = {}) {\r\n this.user = user;\r\n this.rootRef = null;\r\n this.nodes = new Map();\r\n this.nodesByIdentity = new Map();\r\n this.model = new IndexTreeModel(user, list, null, options);\r\n this.onDidSplice = this.model.onDidSplice;\r\n this.onDidChangeCollapseState = this.model.onDidChangeCollapseState;\r\n this.onDidChangeRenderNodeCount = this.model.onDidChangeRenderNodeCount;\r\n if (options.sorter) {\r\n this.sorter = {\r\n compare(a, b) {\r\n return options.sorter.compare(a.element, b.element);\r\n }\r\n };\r\n }\r\n this.identityProvider = options.identityProvider;\r\n }\r\n setChildren(element, children = Iterable.empty(), onDidCreateNode, onDidDeleteNode) {\r\n const location = this.getElementLocation(element);\r\n this._setChildren(location, this.preserveCollapseState(children), onDidCreateNode, onDidDeleteNode);\r\n }\r\n _setChildren(location, children = Iterable.empty(), onDidCreateNode, onDidDeleteNode) {\r\n const insertedElements = new Set();\r\n const insertedElementIds = new Set();\r\n const _onDidCreateNode = (node) => {\r\n if (node.element === null) {\r\n return;\r\n }\r\n const tnode = node;\r\n insertedElements.add(tnode.element);\r\n this.nodes.set(tnode.element, tnode);\r\n if (this.identityProvider) {\r\n const id = this.identityProvider.getId(tnode.element).toString();\r\n insertedElementIds.add(id);\r\n this.nodesByIdentity.set(id, tnode);\r\n }\r\n if (onDidCreateNode) {\r\n onDidCreateNode(tnode);\r\n }\r\n };\r\n const _onDidDeleteNode = (node) => {\r\n if (node.element === null) {\r\n return;\r\n }\r\n const tnode = node;\r\n if (!insertedElements.has(tnode.element)) {\r\n this.nodes.delete(tnode.element);\r\n }\r\n if (this.identityProvider) {\r\n const id = this.identityProvider.getId(tnode.element).toString();\r\n if (!insertedElementIds.has(id)) {\r\n this.nodesByIdentity.delete(id);\r\n }\r\n }\r\n if (onDidDeleteNode) {\r\n onDidDeleteNode(tnode);\r\n }\r\n };\r\n this.model.splice([...location, 0], Number.MAX_VALUE, children, _onDidCreateNode, _onDidDeleteNode);\r\n }\r\n preserveCollapseState(elements = Iterable.empty()) {\r\n if (this.sorter) {\r\n elements = mergeSort([...elements], this.sorter.compare.bind(this.sorter));\r\n }\r\n return Iterable.map(elements, treeElement => {\r\n let node = this.nodes.get(treeElement.element);\r\n if (!node && this.identityProvider) {\r\n const id = this.identityProvider.getId(treeElement.element).toString();\r\n node = this.nodesByIdentity.get(id);\r\n }\r\n if (!node) {\r\n return Object.assign(Object.assign({}, treeElement), { children: this.preserveCollapseState(treeElement.children) });\r\n }\r\n const collapsible = typeof treeElement.collapsible === 'boolean' ? treeElement.collapsible : node.collapsible;\r\n const collapsed = typeof treeElement.collapsed !== 'undefined' ? treeElement.collapsed : node.collapsed;\r\n return Object.assign(Object.assign({}, treeElement), { collapsible,\r\n collapsed, children: this.preserveCollapseState(treeElement.children) });\r\n });\r\n }\r\n rerender(element) {\r\n const location = this.getElementLocation(element);\r\n this.model.rerender(location);\r\n }\r\n has(element) {\r\n return this.nodes.has(element);\r\n }\r\n getListIndex(element) {\r\n const location = this.getElementLocation(element);\r\n return this.model.getListIndex(location);\r\n }\r\n getListRenderCount(element) {\r\n const location = this.getElementLocation(element);\r\n return this.model.getListRenderCount(location);\r\n }\r\n isCollapsible(element) {\r\n const location = this.getElementLocation(element);\r\n return this.model.isCollapsible(location);\r\n }\r\n setCollapsible(element, collapsible) {\r\n const location = this.getElementLocation(element);\r\n return this.model.setCollapsible(location, collapsible);\r\n }\r\n isCollapsed(element) {\r\n const location = this.getElementLocation(element);\r\n return this.model.isCollapsed(location);\r\n }\r\n setCollapsed(element, collapsed, recursive) {\r\n const location = this.getElementLocation(element);\r\n return this.model.setCollapsed(location, collapsed, recursive);\r\n }\r\n expandTo(element) {\r\n const location = this.getElementLocation(element);\r\n this.model.expandTo(location);\r\n }\r\n refilter() {\r\n this.model.refilter();\r\n }\r\n getNode(element = null) {\r\n if (element === null) {\r\n return this.model.getNode(this.model.rootRef);\r\n }\r\n const node = this.nodes.get(element);\r\n if (!node) {\r\n throw new TreeError(this.user, `Tree element not found: ${element}`);\r\n }\r\n return node;\r\n }\r\n getNodeLocation(node) {\r\n return node.element;\r\n }\r\n getParentNodeLocation(element) {\r\n if (element === null) {\r\n throw new TreeError(this.user, `Invalid getParentNodeLocation call`);\r\n }\r\n const node = this.nodes.get(element);\r\n if (!node) {\r\n throw new TreeError(this.user, `Tree element not found: ${element}`);\r\n }\r\n const location = this.model.getNodeLocation(node);\r\n const parentLocation = this.model.getParentNodeLocation(location);\r\n const parent = this.model.getNode(parentLocation);\r\n return parent.element;\r\n }\r\n getElementLocation(element) {\r\n if (element === null) {\r\n return [];\r\n }\r\n const node = this.nodes.get(element);\r\n if (!node) {\r\n throw new TreeError(this.user, `Tree element not found: ${element}`);\r\n }\r\n return this.model.getNodeLocation(node);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var TreeMouseEventTarget;\r\n(function (TreeMouseEventTarget) {\r\n TreeMouseEventTarget[TreeMouseEventTarget[\"Unknown\"] = 0] = \"Unknown\";\r\n TreeMouseEventTarget[TreeMouseEventTarget[\"Twistie\"] = 1] = \"Twistie\";\r\n TreeMouseEventTarget[TreeMouseEventTarget[\"Element\"] = 2] = \"Element\";\r\n})(TreeMouseEventTarget || (TreeMouseEventTarget = {}));\r\nexport class TreeError extends Error {\r\n constructor(user, message) {\r\n super(`TreeError [${user}] ${message}`);\r\n }\r\n}\r\nexport class WeakMapper {\r\n constructor(fn) {\r\n this.fn = fn;\r\n this._map = new WeakMap();\r\n }\r\n map(key) {\r\n let result = this._map.get(key);\r\n if (!result) {\r\n result = this.fn(key);\r\n this._map.set(key, result);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Codicon, registerIcon } from '../../../common/codicons.js';\r\nexport const treeItemExpandedIcon = registerIcon('tree-item-expanded', Codicon.chevronDown); // collapsed is done with rotation\r\nexport const treeFilterOnTypeOnIcon = registerIcon('tree-filter-on-type-on', Codicon.listFilter);\r\nexport const treeFilterOnTypeOffIcon = registerIcon('tree-filter-on-type-off', Codicon.listSelection);\r\nexport const treeFilterClearIcon = registerIcon('tree-filter-clear', Codicon.close);\r\nexport const treeItemLoadingIcon = registerIcon('tree-item-loading', Codicon.loading);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../dom.js';\r\nimport { StandardKeyboardEvent } from '../keyboardEvent.js';\r\nimport { StandardMouseEvent } from '../mouseEvent.js';\r\nimport { Disposable } from '../../common/lifecycle.js';\r\nimport { Gesture } from '../touch.js';\r\nexport class Widget extends Disposable {\r\n onclick(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.CLICK, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onmousedown(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.MOUSE_DOWN, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onmouseover(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.MOUSE_OVER, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onnonbubblingmouseout(domNode, listener) {\r\n this._register(dom.addDisposableNonBubblingMouseOutListener(domNode, (e) => listener(new StandardMouseEvent(e))));\r\n }\r\n onkeydown(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e) => listener(new StandardKeyboardEvent(e))));\r\n }\r\n onkeyup(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_UP, (e) => listener(new StandardKeyboardEvent(e))));\r\n }\r\n oninput(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.INPUT, listener));\r\n }\r\n onblur(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.BLUR, listener));\r\n }\r\n onfocus(domNode, listener) {\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.FOCUS, listener));\r\n }\r\n ignoreGesture(domNode) {\r\n Gesture.ignoreTarget(domNode);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Disposable } from './lifecycle.js';\r\nimport { Emitter } from './event.js';\r\nexport class Action extends Disposable {\r\n constructor(id, label = '', cssClass = '', enabled = true, actionCallback) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._enabled = true;\r\n this._checked = false;\r\n this._id = id;\r\n this._label = label;\r\n this._cssClass = cssClass;\r\n this._enabled = enabled;\r\n this._actionCallback = actionCallback;\r\n }\r\n get id() {\r\n return this._id;\r\n }\r\n get label() {\r\n return this._label;\r\n }\r\n set label(value) {\r\n this._setLabel(value);\r\n }\r\n _setLabel(value) {\r\n if (this._label !== value) {\r\n this._label = value;\r\n this._onDidChange.fire({ label: value });\r\n }\r\n }\r\n get tooltip() {\r\n return this._tooltip || '';\r\n }\r\n set tooltip(value) {\r\n this._setTooltip(value);\r\n }\r\n _setTooltip(value) {\r\n if (this._tooltip !== value) {\r\n this._tooltip = value;\r\n this._onDidChange.fire({ tooltip: value });\r\n }\r\n }\r\n get class() {\r\n return this._cssClass;\r\n }\r\n set class(value) {\r\n this._setClass(value);\r\n }\r\n _setClass(value) {\r\n if (this._cssClass !== value) {\r\n this._cssClass = value;\r\n this._onDidChange.fire({ class: value });\r\n }\r\n }\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n set enabled(value) {\r\n this._setEnabled(value);\r\n }\r\n _setEnabled(value) {\r\n if (this._enabled !== value) {\r\n this._enabled = value;\r\n this._onDidChange.fire({ enabled: value });\r\n }\r\n }\r\n get checked() {\r\n return this._checked;\r\n }\r\n set checked(value) {\r\n this._setChecked(value);\r\n }\r\n _setChecked(value) {\r\n if (this._checked !== value) {\r\n this._checked = value;\r\n this._onDidChange.fire({ checked: value });\r\n }\r\n }\r\n run(event, _data) {\r\n if (this._actionCallback) {\r\n return this._actionCallback(event);\r\n }\r\n return Promise.resolve(true);\r\n }\r\n}\r\nexport class ActionRunner extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this._onDidBeforeRun = this._register(new Emitter());\r\n this.onDidBeforeRun = this._onDidBeforeRun.event;\r\n this._onDidRun = this._register(new Emitter());\r\n this.onDidRun = this._onDidRun.event;\r\n }\r\n run(action, context) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!action.enabled) {\r\n return Promise.resolve(null);\r\n }\r\n this._onDidBeforeRun.fire({ action: action });\r\n try {\r\n const result = yield this.runAction(action, context);\r\n this._onDidRun.fire({ action: action, result: result });\r\n }\r\n catch (error) {\r\n this._onDidRun.fire({ action: action, error: error });\r\n }\r\n });\r\n }\r\n runAction(action, context) {\r\n const res = context ? action.run(context) : action.run();\r\n return Promise.resolve(res);\r\n }\r\n}\r\nexport class Separator extends Action {\r\n constructor(label) {\r\n super(Separator.ID, label, label ? 'separator text' : 'separator');\r\n this.checked = false;\r\n this.enabled = false;\r\n }\r\n}\r\nSeparator.ID = 'vs.actions.separator';\r\nexport class SubmenuAction extends Action {\r\n constructor(id, label, _actions, cssClass) {\r\n super(id, label, cssClass, true);\r\n this._actions = _actions;\r\n }\r\n get actions() {\r\n return Array.isArray(this._actions) ? this._actions : this._actions();\r\n }\r\n}\r\n","/**\r\n * Returns the last element of an array.\r\n * @param array The array.\r\n * @param n Which element from the end (default is zero).\r\n */\r\nexport function tail(array, n = 0) {\r\n return array[array.length - (1 + n)];\r\n}\r\nexport function tail2(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function equals(one, other, itemEquals = (a, b) => a === b) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (!one || !other) {\r\n return false;\r\n }\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = one.length; i < len; i++) {\r\n if (!itemEquals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexport function binarySearch(array, key, comparator) {\r\n let low = 0, high = array.length - 1;\r\n while (low <= high) {\r\n const mid = ((low + high) / 2) | 0;\r\n const comp = comparator(array[mid], key);\r\n if (comp < 0) {\r\n low = mid + 1;\r\n }\r\n else if (comp > 0) {\r\n high = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -(low + 1);\r\n}\r\n/**\r\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\r\n * are located before all elements where p(x) is true.\r\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\r\n */\r\nexport function findFirstInSorted(array, p) {\r\n let low = 0, high = array.length;\r\n if (high === 0) {\r\n return 0; // no children\r\n }\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n if (p(array[mid])) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n}\r\n/**\r\n * Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort`\r\n * so only use this when actually needing stable sort.\r\n */\r\nexport function mergeSort(data, compare) {\r\n _sort(data, compare, 0, data.length - 1, []);\r\n return data;\r\n}\r\nfunction _merge(a, compare, lo, mid, hi, aux) {\r\n let leftIdx = lo, rightIdx = mid + 1;\r\n for (let i = lo; i <= hi; i++) {\r\n aux[i] = a[i];\r\n }\r\n for (let i = lo; i <= hi; i++) {\r\n if (leftIdx > mid) {\r\n // left side consumed\r\n a[i] = aux[rightIdx++];\r\n }\r\n else if (rightIdx > hi) {\r\n // right side consumed\r\n a[i] = aux[leftIdx++];\r\n }\r\n else if (compare(aux[rightIdx], aux[leftIdx]) < 0) {\r\n // right element is less -> comes first\r\n a[i] = aux[rightIdx++];\r\n }\r\n else {\r\n // left element comes first (less or equal)\r\n a[i] = aux[leftIdx++];\r\n }\r\n }\r\n}\r\nfunction _sort(a, compare, lo, hi, aux) {\r\n if (hi <= lo) {\r\n return;\r\n }\r\n const mid = lo + ((hi - lo) / 2) | 0;\r\n _sort(a, compare, lo, mid, aux);\r\n _sort(a, compare, mid + 1, hi, aux);\r\n if (compare(a[mid], a[mid + 1]) <= 0) {\r\n // left and right are sorted and if the last-left element is less\r\n // or equals than the first-right element there is nothing else\r\n // to do\r\n return;\r\n }\r\n _merge(a, compare, lo, mid, hi, aux);\r\n}\r\nexport function groupBy(data, compare) {\r\n const result = [];\r\n let currentGroup = undefined;\r\n for (const element of mergeSort(data.slice(0), compare)) {\r\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\r\n currentGroup = [element];\r\n result.push(currentGroup);\r\n }\r\n else {\r\n currentGroup.push(element);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @returns New array with all falsy values removed. The original array IS NOT modified.\r\n */\r\nexport function coalesce(array) {\r\n return array.filter(e => !!e);\r\n}\r\n/**\r\n * @returns false if the provided object is an array and not empty.\r\n */\r\nexport function isFalsyOrEmpty(obj) {\r\n return !Array.isArray(obj) || obj.length === 0;\r\n}\r\nexport function isNonEmptyArray(obj) {\r\n return Array.isArray(obj) && obj.length > 0;\r\n}\r\n/**\r\n * Removes duplicates from the given array. The optional keyFn allows to specify\r\n * how elements are checked for equalness by returning a unique string for each.\r\n */\r\nexport function distinct(array, keyFn) {\r\n if (!keyFn) {\r\n return array.filter((element, position) => {\r\n return array.indexOf(element) === position;\r\n });\r\n }\r\n const seen = Object.create(null);\r\n return array.filter((elem) => {\r\n const key = keyFn(elem);\r\n if (seen[key]) {\r\n return false;\r\n }\r\n seen[key] = true;\r\n return true;\r\n });\r\n}\r\nexport function distinctES6(array) {\r\n const seen = new Set();\r\n return array.filter(element => {\r\n if (seen.has(element)) {\r\n return false;\r\n }\r\n seen.add(element);\r\n return true;\r\n });\r\n}\r\n/**\r\n * @deprecated ES6: use `Array.findIndex`\r\n */\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function first(array, fn, notFoundValue = undefined) {\r\n const index = firstIndex(array, fn);\r\n return index < 0 ? notFoundValue : array[index];\r\n}\r\nexport function firstOrDefault(array, notFoundValue) {\r\n return array.length > 0 ? array[0] : notFoundValue;\r\n}\r\nexport function flatten(arr) {\r\n return [].concat(...arr);\r\n}\r\nexport function range(arg, to) {\r\n let from = typeof to === 'number' ? arg : 0;\r\n if (typeof to === 'number') {\r\n from = arg;\r\n }\r\n else {\r\n from = 0;\r\n to = arg;\r\n }\r\n const result = [];\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Insert `insertArr` inside `target` at `insertIndex`.\r\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\r\n */\r\nexport function arrayInsert(target, insertIndex, insertArr) {\r\n const before = target.slice(0, insertIndex);\r\n const after = target.slice(insertIndex);\r\n return before.concat(insertArr, after);\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function asArray(x) {\r\n return Array.isArray(x) ? x : [x];\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Throws an error with the provided message if the provided value does not evaluate to a true Javascript value.\r\n */\r\nexport function ok(value, message) {\r\n if (!value) {\r\n throw new Error(message ? `Assertion failed (${message})` : 'Assertion Failed');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationTokenSource } from './cancellation.js';\r\nimport * as errors from './errors.js';\r\nimport { toDisposable } from './lifecycle.js';\r\nexport function isThenable(obj) {\r\n return obj && typeof obj.then === 'function';\r\n}\r\nexport function createCancelablePromise(callback) {\r\n const source = new CancellationTokenSource();\r\n const thenable = callback(source.token);\r\n const promise = new Promise((resolve, reject) => {\r\n source.token.onCancellationRequested(() => {\r\n reject(errors.canceled());\r\n });\r\n Promise.resolve(thenable).then(value => {\r\n source.dispose();\r\n resolve(value);\r\n }, err => {\r\n source.dispose();\r\n reject(err);\r\n });\r\n });\r\n return new class {\r\n cancel() {\r\n source.cancel();\r\n }\r\n then(resolve, reject) {\r\n return promise.then(resolve, reject);\r\n }\r\n catch(reject) {\r\n return this.then(undefined, reject);\r\n }\r\n finally(onfinally) {\r\n return promise.finally(onfinally);\r\n }\r\n };\r\n}\r\nexport function raceCancellation(promise, token, defaultValue) {\r\n return Promise.race([promise, new Promise(resolve => token.onCancellationRequested(() => resolve(defaultValue)))]);\r\n}\r\n/**\r\n * A helper to delay execution of a task that is being requested often.\r\n *\r\n * Following the throttler, now imagine the mail man wants to optimize the number of\r\n * trips proactively. The trip itself can be long, so he decides not to make the trip\r\n * as soon as a letter is submitted. Instead he waits a while, in case more\r\n * letters are submitted. After said waiting period, if no letters were submitted, he\r\n * decides to make the trip. Imagine that N more letters were submitted after the first\r\n * one, all within a short period of time between each other. Even though N+1\r\n * submissions occurred, only 1 delivery was made.\r\n *\r\n * The delayer offers this behavior via the trigger() method, into which both the task\r\n * to be executed and the waiting period (delay) must be passed in as arguments. Following\r\n * the example:\r\n *\r\n * \t\tconst delayer = new Delayer(WAITING_PERIOD);\r\n * \t\tconst letters = [];\r\n *\r\n * \t\tfunction letterReceived(l) {\r\n * \t\t\tletters.push(l);\r\n * \t\t\tdelayer.trigger(() => { return makeTheTrip(); });\r\n * \t\t}\r\n */\r\nexport class Delayer {\r\n constructor(defaultDelay) {\r\n this.defaultDelay = defaultDelay;\r\n this.timeout = null;\r\n this.completionPromise = null;\r\n this.doResolve = null;\r\n this.doReject = null;\r\n this.task = null;\r\n }\r\n trigger(task, delay = this.defaultDelay) {\r\n this.task = task;\r\n this.cancelTimeout();\r\n if (!this.completionPromise) {\r\n this.completionPromise = new Promise((c, e) => {\r\n this.doResolve = c;\r\n this.doReject = e;\r\n }).then(() => {\r\n this.completionPromise = null;\r\n this.doResolve = null;\r\n if (this.task) {\r\n const task = this.task;\r\n this.task = null;\r\n return task();\r\n }\r\n return undefined;\r\n });\r\n }\r\n this.timeout = setTimeout(() => {\r\n this.timeout = null;\r\n if (this.doResolve) {\r\n this.doResolve(null);\r\n }\r\n }, delay);\r\n return this.completionPromise;\r\n }\r\n isTriggered() {\r\n return this.timeout !== null;\r\n }\r\n cancel() {\r\n this.cancelTimeout();\r\n if (this.completionPromise) {\r\n if (this.doReject) {\r\n this.doReject(errors.canceled());\r\n }\r\n this.completionPromise = null;\r\n }\r\n }\r\n cancelTimeout() {\r\n if (this.timeout !== null) {\r\n clearTimeout(this.timeout);\r\n this.timeout = null;\r\n }\r\n }\r\n dispose() {\r\n this.cancelTimeout();\r\n }\r\n}\r\nexport function timeout(millis, token) {\r\n if (!token) {\r\n return createCancelablePromise(token => timeout(millis, token));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const handle = setTimeout(resolve, millis);\r\n token.onCancellationRequested(() => {\r\n clearTimeout(handle);\r\n reject(errors.canceled());\r\n });\r\n });\r\n}\r\nexport function disposableTimeout(handler, timeout = 0) {\r\n const timer = setTimeout(handler, timeout);\r\n return toDisposable(() => clearTimeout(timer));\r\n}\r\nexport function first(promiseFactories, shouldStop = t => !!t, defaultValue = null) {\r\n let index = 0;\r\n const len = promiseFactories.length;\r\n const loop = () => {\r\n if (index >= len) {\r\n return Promise.resolve(defaultValue);\r\n }\r\n const factory = promiseFactories[index++];\r\n const promise = Promise.resolve(factory());\r\n return promise.then(result => {\r\n if (shouldStop(result)) {\r\n return Promise.resolve(result);\r\n }\r\n return loop();\r\n });\r\n };\r\n return loop();\r\n}\r\nexport class TimeoutTimer {\r\n constructor(runner, timeout) {\r\n this._token = -1;\r\n if (typeof runner === 'function' && typeof timeout === 'number') {\r\n this.setIfNotSet(runner, timeout);\r\n }\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n cancel() {\r\n if (this._token !== -1) {\r\n clearTimeout(this._token);\r\n this._token = -1;\r\n }\r\n }\r\n cancelAndSet(runner, timeout) {\r\n this.cancel();\r\n this._token = setTimeout(() => {\r\n this._token = -1;\r\n runner();\r\n }, timeout);\r\n }\r\n setIfNotSet(runner, timeout) {\r\n if (this._token !== -1) {\r\n // timer is already set\r\n return;\r\n }\r\n this._token = setTimeout(() => {\r\n this._token = -1;\r\n runner();\r\n }, timeout);\r\n }\r\n}\r\nexport class IntervalTimer {\r\n constructor() {\r\n this._token = -1;\r\n }\r\n dispose() {\r\n this.cancel();\r\n }\r\n cancel() {\r\n if (this._token !== -1) {\r\n clearInterval(this._token);\r\n this._token = -1;\r\n }\r\n }\r\n cancelAndSet(runner, interval) {\r\n this.cancel();\r\n this._token = setInterval(() => {\r\n runner();\r\n }, interval);\r\n }\r\n}\r\nexport class RunOnceScheduler {\r\n constructor(runner, timeout) {\r\n this.timeoutToken = -1;\r\n this.runner = runner;\r\n this.timeout = timeout;\r\n this.timeoutHandler = this.onTimeout.bind(this);\r\n }\r\n /**\r\n * Dispose RunOnceScheduler\r\n */\r\n dispose() {\r\n this.cancel();\r\n this.runner = null;\r\n }\r\n /**\r\n * Cancel current scheduled runner (if any).\r\n */\r\n cancel() {\r\n if (this.isScheduled()) {\r\n clearTimeout(this.timeoutToken);\r\n this.timeoutToken = -1;\r\n }\r\n }\r\n /**\r\n * Cancel previous runner (if any) & schedule a new runner.\r\n */\r\n schedule(delay = this.timeout) {\r\n this.cancel();\r\n this.timeoutToken = setTimeout(this.timeoutHandler, delay);\r\n }\r\n /**\r\n * Returns true if scheduled.\r\n */\r\n isScheduled() {\r\n return this.timeoutToken !== -1;\r\n }\r\n onTimeout() {\r\n this.timeoutToken = -1;\r\n if (this.runner) {\r\n this.doRun();\r\n }\r\n }\r\n doRun() {\r\n if (this.runner) {\r\n this.runner();\r\n }\r\n }\r\n}\r\n/**\r\n * Execute the callback the next time the browser is idle\r\n */\r\nexport let runWhenIdle;\r\n(function () {\r\n if (typeof requestIdleCallback !== 'function' || typeof cancelIdleCallback !== 'function') {\r\n const dummyIdle = Object.freeze({\r\n didTimeout: true,\r\n timeRemaining() { return 15; }\r\n });\r\n runWhenIdle = (runner) => {\r\n const handle = setTimeout(() => runner(dummyIdle));\r\n let disposed = false;\r\n return {\r\n dispose() {\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n clearTimeout(handle);\r\n }\r\n };\r\n };\r\n }\r\n else {\r\n runWhenIdle = (runner, timeout) => {\r\n const handle = requestIdleCallback(runner, typeof timeout === 'number' ? { timeout } : undefined);\r\n let disposed = false;\r\n return {\r\n dispose() {\r\n if (disposed) {\r\n return;\r\n }\r\n disposed = true;\r\n cancelIdleCallback(handle);\r\n }\r\n };\r\n };\r\n }\r\n})();\r\n/**\r\n * An implementation of the \"idle-until-urgent\"-strategy as introduced\r\n * here: https://philipwalton.com/articles/idle-until-urgent/\r\n */\r\nexport class IdleValue {\r\n constructor(executor) {\r\n this._didRun = false;\r\n this._executor = () => {\r\n try {\r\n this._value = executor();\r\n }\r\n catch (err) {\r\n this._error = err;\r\n }\r\n finally {\r\n this._didRun = true;\r\n }\r\n };\r\n this._handle = runWhenIdle(() => this._executor());\r\n }\r\n dispose() {\r\n this._handle.dispose();\r\n }\r\n get value() {\r\n if (!this._didRun) {\r\n this._handle.dispose();\r\n this._executor();\r\n }\r\n if (this._error) {\r\n throw this._error;\r\n }\r\n return this._value;\r\n }\r\n}\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nconst hasBuffer = (typeof Buffer !== 'undefined');\r\nconst hasTextDecoder = (typeof TextDecoder !== 'undefined');\r\nlet textDecoder;\r\nexport class VSBuffer {\r\n constructor(buffer) {\r\n this.buffer = buffer;\r\n this.byteLength = this.buffer.byteLength;\r\n }\r\n toString() {\r\n if (hasBuffer) {\r\n return this.buffer.toString();\r\n }\r\n else if (hasTextDecoder) {\r\n if (!textDecoder) {\r\n textDecoder = new TextDecoder();\r\n }\r\n return textDecoder.decode(this.buffer);\r\n }\r\n else {\r\n return strings.decodeUTF8(this.buffer);\r\n }\r\n }\r\n}\r\nexport function readUInt16LE(source, offset) {\r\n return (((source[offset + 0] << 0) >>> 0) |\r\n ((source[offset + 1] << 8) >>> 0));\r\n}\r\nexport function writeUInt16LE(destination, value, offset) {\r\n destination[offset + 0] = (value & 0b11111111);\r\n value = value >>> 8;\r\n destination[offset + 1] = (value & 0b11111111);\r\n}\r\nexport function readUInt32BE(source, offset) {\r\n return (source[offset] * Math.pow(2, 24)\r\n + source[offset + 1] * Math.pow(2, 16)\r\n + source[offset + 2] * Math.pow(2, 8)\r\n + source[offset + 3]);\r\n}\r\nexport function writeUInt32BE(destination, value, offset) {\r\n destination[offset + 3] = value;\r\n value = value >>> 8;\r\n destination[offset + 2] = value;\r\n value = value >>> 8;\r\n destination[offset + 1] = value;\r\n value = value >>> 8;\r\n destination[offset] = value;\r\n}\r\nexport function readUInt8(source, offset) {\r\n return source[offset];\r\n}\r\nexport function writeUInt8(destination, value, offset) {\r\n destination[offset] = value;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter, Event } from './event.js';\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n const handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nexport var CancellationToken;\r\n(function (CancellationToken) {\r\n function isCancellationToken(thing) {\r\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\r\n return true;\r\n }\r\n if (thing instanceof MutableToken) {\r\n return true;\r\n }\r\n if (!thing || typeof thing !== 'object') {\r\n return false;\r\n }\r\n return typeof thing.isCancellationRequested === 'boolean'\r\n && typeof thing.onCancellationRequested === 'function';\r\n }\r\n CancellationToken.isCancellationToken = isCancellationToken;\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: shortcutEvent\r\n });\r\n})(CancellationToken || (CancellationToken = {}));\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n this._emitter = null;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = null;\r\n }\r\n }\r\n}\r\nexport class CancellationTokenSource {\r\n constructor(parent) {\r\n this._token = undefined;\r\n this._parentListener = undefined;\r\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\r\n }\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually cancel\r\n this._token.cancel();\r\n }\r\n }\r\n dispose(cancel = false) {\r\n if (cancel) {\r\n this.cancel();\r\n }\r\n if (this._parentListener) {\r\n this._parentListener.dispose();\r\n }\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { matchesFuzzy } from './filters.js';\r\nimport { ltrim } from './strings.js';\r\nexport const codiconStartMarker = '$(';\r\nexport function parseCodicons(text) {\r\n const firstCodiconIndex = text.indexOf(codiconStartMarker);\r\n if (firstCodiconIndex === -1) {\r\n return { text }; // return early if the word does not include an codicon\r\n }\r\n return doParseCodicons(text, firstCodiconIndex);\r\n}\r\nfunction doParseCodicons(text, firstCodiconIndex) {\r\n const codiconOffsets = [];\r\n let textWithoutCodicons = '';\r\n function appendChars(chars) {\r\n if (chars) {\r\n textWithoutCodicons += chars;\r\n for (const _ of chars) {\r\n codiconOffsets.push(codiconsOffset); // make sure to fill in codicon offsets\r\n }\r\n }\r\n }\r\n let currentCodiconStart = -1;\r\n let currentCodiconValue = '';\r\n let codiconsOffset = 0;\r\n let char;\r\n let nextChar;\r\n let offset = firstCodiconIndex;\r\n const length = text.length;\r\n // Append all characters until the first codicon\r\n appendChars(text.substr(0, firstCodiconIndex));\r\n // example: $(file-symlink-file) my cool $(other-codicon) entry\r\n while (offset < length) {\r\n char = text[offset];\r\n nextChar = text[offset + 1];\r\n // beginning of codicon: some value $( <--\r\n if (char === codiconStartMarker[0] && nextChar === codiconStartMarker[1]) {\r\n currentCodiconStart = offset;\r\n // if we had a previous potential codicon value without\r\n // the closing ')', it was actually not an codicon and\r\n // so we have to add it to the actual value\r\n appendChars(currentCodiconValue);\r\n currentCodiconValue = codiconStartMarker;\r\n offset++; // jump over '('\r\n }\r\n // end of codicon: some value $(some-codicon) <--\r\n else if (char === ')' && currentCodiconStart !== -1) {\r\n const currentCodiconLength = offset - currentCodiconStart + 1; // +1 to include the closing ')'\r\n codiconsOffset += currentCodiconLength;\r\n currentCodiconStart = -1;\r\n currentCodiconValue = '';\r\n }\r\n // within codicon\r\n else if (currentCodiconStart !== -1) {\r\n // Make sure this is a real codicon name\r\n if (/^[a-z0-9\\-]$/i.test(char)) {\r\n currentCodiconValue += char;\r\n }\r\n else {\r\n // This is not a real codicon, treat it as text\r\n appendChars(currentCodiconValue);\r\n currentCodiconStart = -1;\r\n currentCodiconValue = '';\r\n }\r\n }\r\n // any value outside of codicons\r\n else {\r\n appendChars(char);\r\n }\r\n offset++;\r\n }\r\n // if we had a previous potential codicon value without\r\n // the closing ')', it was actually not an codicon and\r\n // so we have to add it to the actual value\r\n appendChars(currentCodiconValue);\r\n return { text: textWithoutCodicons, codiconOffsets };\r\n}\r\nexport function matchesFuzzyCodiconAware(query, target, enableSeparateSubstringMatching = false) {\r\n const { text, codiconOffsets } = target;\r\n // Return early if there are no codicon markers in the word to match against\r\n if (!codiconOffsets || codiconOffsets.length === 0) {\r\n return matchesFuzzy(query, text, enableSeparateSubstringMatching);\r\n }\r\n // Trim the word to match against because it could have leading\r\n // whitespace now if the word started with an codicon\r\n const wordToMatchAgainstWithoutCodiconsTrimmed = ltrim(text, ' ');\r\n const leadingWhitespaceOffset = text.length - wordToMatchAgainstWithoutCodiconsTrimmed.length;\r\n // match on value without codicons\r\n const matches = matchesFuzzy(query, wordToMatchAgainstWithoutCodiconsTrimmed, enableSeparateSubstringMatching);\r\n // Map matches back to offsets with codicons and trimming\r\n if (matches) {\r\n for (const match of matches) {\r\n const codiconOffset = codiconOffsets[match.start + leadingWhitespaceOffset] /* codicon offsets at index */ + leadingWhitespaceOffset /* overall leading whitespace offset */;\r\n match.start += codiconOffset;\r\n match.end += codiconOffset;\r\n }\r\n }\r\n return matches;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { codiconStartMarker } from './codicon.js';\r\nimport { Emitter } from './event.js';\r\nclass Registry {\r\n constructor() {\r\n this._icons = new Map();\r\n this._onDidRegister = new Emitter();\r\n }\r\n add(icon) {\r\n if (!this._icons.has(icon.id)) {\r\n this._icons.set(icon.id, icon);\r\n this._onDidRegister.fire(icon);\r\n }\r\n else {\r\n console.error(`Duplicate registration of codicon ${icon.id}`);\r\n }\r\n }\r\n get(id) {\r\n return this._icons.get(id);\r\n }\r\n get all() {\r\n return this._icons.values();\r\n }\r\n get onDidRegister() {\r\n return this._onDidRegister.event;\r\n }\r\n}\r\nconst _registry = new Registry();\r\nexport const iconRegistry = _registry;\r\nexport function registerIcon(id, def, description) {\r\n return new Codicon(id, def);\r\n}\r\nexport class Codicon {\r\n constructor(id, definition, description) {\r\n this.id = id;\r\n this.definition = definition;\r\n this.description = description;\r\n _registry.add(this);\r\n }\r\n get classNames() { return 'codicon codicon-' + this.id; }\r\n get cssSelector() { return '.codicon.codicon-' + this.id; }\r\n}\r\n(function (Codicon) {\r\n // built-in icons, with image name\r\n Codicon.add = new Codicon('add', { character: '\\\\ea60' });\r\n Codicon.plus = new Codicon('plus', { character: '\\\\ea60' });\r\n Codicon.gistNew = new Codicon('gist-new', { character: '\\\\ea60' });\r\n Codicon.repoCreate = new Codicon('repo-create', { character: '\\\\ea60' });\r\n Codicon.lightbulb = new Codicon('lightbulb', { character: '\\\\ea61' });\r\n Codicon.lightBulb = new Codicon('light-bulb', { character: '\\\\ea61' });\r\n Codicon.repo = new Codicon('repo', { character: '\\\\ea62' });\r\n Codicon.repoDelete = new Codicon('repo-delete', { character: '\\\\ea62' });\r\n Codicon.gistFork = new Codicon('gist-fork', { character: '\\\\ea63' });\r\n Codicon.repoForked = new Codicon('repo-forked', { character: '\\\\ea63' });\r\n Codicon.gitPullRequest = new Codicon('git-pull-request', { character: '\\\\ea64' });\r\n Codicon.gitPullRequestAbandoned = new Codicon('git-pull-request-abandoned', { character: '\\\\ea64' });\r\n Codicon.recordKeys = new Codicon('record-keys', { character: '\\\\ea65' });\r\n Codicon.keyboard = new Codicon('keyboard', { character: '\\\\ea65' });\r\n Codicon.tag = new Codicon('tag', { character: '\\\\ea66' });\r\n Codicon.tagAdd = new Codicon('tag-add', { character: '\\\\ea66' });\r\n Codicon.tagRemove = new Codicon('tag-remove', { character: '\\\\ea66' });\r\n Codicon.person = new Codicon('person', { character: '\\\\ea67' });\r\n Codicon.personAdd = new Codicon('person-add', { character: '\\\\ea67' });\r\n Codicon.personFollow = new Codicon('person-follow', { character: '\\\\ea67' });\r\n Codicon.personOutline = new Codicon('person-outline', { character: '\\\\ea67' });\r\n Codicon.personFilled = new Codicon('person-filled', { character: '\\\\ea67' });\r\n Codicon.gitBranch = new Codicon('git-branch', { character: '\\\\ea68' });\r\n Codicon.gitBranchCreate = new Codicon('git-branch-create', { character: '\\\\ea68' });\r\n Codicon.gitBranchDelete = new Codicon('git-branch-delete', { character: '\\\\ea68' });\r\n Codicon.sourceControl = new Codicon('source-control', { character: '\\\\ea68' });\r\n Codicon.mirror = new Codicon('mirror', { character: '\\\\ea69' });\r\n Codicon.mirrorPublic = new Codicon('mirror-public', { character: '\\\\ea69' });\r\n Codicon.star = new Codicon('star', { character: '\\\\ea6a' });\r\n Codicon.starAdd = new Codicon('star-add', { character: '\\\\ea6a' });\r\n Codicon.starDelete = new Codicon('star-delete', { character: '\\\\ea6a' });\r\n Codicon.starEmpty = new Codicon('star-empty', { character: '\\\\ea6a' });\r\n Codicon.comment = new Codicon('comment', { character: '\\\\ea6b' });\r\n Codicon.commentAdd = new Codicon('comment-add', { character: '\\\\ea6b' });\r\n Codicon.alert = new Codicon('alert', { character: '\\\\ea6c' });\r\n Codicon.warning = new Codicon('warning', { character: '\\\\ea6c' });\r\n Codicon.search = new Codicon('search', { character: '\\\\ea6d' });\r\n Codicon.searchSave = new Codicon('search-save', { character: '\\\\ea6d' });\r\n Codicon.logOut = new Codicon('log-out', { character: '\\\\ea6e' });\r\n Codicon.signOut = new Codicon('sign-out', { character: '\\\\ea6e' });\r\n Codicon.logIn = new Codicon('log-in', { character: '\\\\ea6f' });\r\n Codicon.signIn = new Codicon('sign-in', { character: '\\\\ea6f' });\r\n Codicon.eye = new Codicon('eye', { character: '\\\\ea70' });\r\n Codicon.eyeUnwatch = new Codicon('eye-unwatch', { character: '\\\\ea70' });\r\n Codicon.eyeWatch = new Codicon('eye-watch', { character: '\\\\ea70' });\r\n Codicon.circleFilled = new Codicon('circle-filled', { character: '\\\\ea71' });\r\n Codicon.primitiveDot = new Codicon('primitive-dot', { character: '\\\\ea71' });\r\n Codicon.closeDirty = new Codicon('close-dirty', { character: '\\\\ea71' });\r\n Codicon.debugBreakpoint = new Codicon('debug-breakpoint', { character: '\\\\ea71' });\r\n Codicon.debugBreakpointDisabled = new Codicon('debug-breakpoint-disabled', { character: '\\\\ea71' });\r\n Codicon.debugHint = new Codicon('debug-hint', { character: '\\\\ea71' });\r\n Codicon.primitiveSquare = new Codicon('primitive-square', { character: '\\\\ea72' });\r\n Codicon.edit = new Codicon('edit', { character: '\\\\ea73' });\r\n Codicon.pencil = new Codicon('pencil', { character: '\\\\ea73' });\r\n Codicon.info = new Codicon('info', { character: '\\\\ea74' });\r\n Codicon.issueOpened = new Codicon('issue-opened', { character: '\\\\ea74' });\r\n Codicon.gistPrivate = new Codicon('gist-private', { character: '\\\\ea75' });\r\n Codicon.gitForkPrivate = new Codicon('git-fork-private', { character: '\\\\ea75' });\r\n Codicon.lock = new Codicon('lock', { character: '\\\\ea75' });\r\n Codicon.mirrorPrivate = new Codicon('mirror-private', { character: '\\\\ea75' });\r\n Codicon.close = new Codicon('close', { character: '\\\\ea76' });\r\n Codicon.removeClose = new Codicon('remove-close', { character: '\\\\ea76' });\r\n Codicon.x = new Codicon('x', { character: '\\\\ea76' });\r\n Codicon.repoSync = new Codicon('repo-sync', { character: '\\\\ea77' });\r\n Codicon.sync = new Codicon('sync', { character: '\\\\ea77' });\r\n Codicon.clone = new Codicon('clone', { character: '\\\\ea78' });\r\n Codicon.desktopDownload = new Codicon('desktop-download', { character: '\\\\ea78' });\r\n Codicon.beaker = new Codicon('beaker', { character: '\\\\ea79' });\r\n Codicon.microscope = new Codicon('microscope', { character: '\\\\ea79' });\r\n Codicon.vm = new Codicon('vm', { character: '\\\\ea7a' });\r\n Codicon.deviceDesktop = new Codicon('device-desktop', { character: '\\\\ea7a' });\r\n Codicon.file = new Codicon('file', { character: '\\\\ea7b' });\r\n Codicon.fileText = new Codicon('file-text', { character: '\\\\ea7b' });\r\n Codicon.more = new Codicon('more', { character: '\\\\ea7c' });\r\n Codicon.ellipsis = new Codicon('ellipsis', { character: '\\\\ea7c' });\r\n Codicon.kebabHorizontal = new Codicon('kebab-horizontal', { character: '\\\\ea7c' });\r\n Codicon.mailReply = new Codicon('mail-reply', { character: '\\\\ea7d' });\r\n Codicon.reply = new Codicon('reply', { character: '\\\\ea7d' });\r\n Codicon.organization = new Codicon('organization', { character: '\\\\ea7e' });\r\n Codicon.organizationFilled = new Codicon('organization-filled', { character: '\\\\ea7e' });\r\n Codicon.organizationOutline = new Codicon('organization-outline', { character: '\\\\ea7e' });\r\n Codicon.newFile = new Codicon('new-file', { character: '\\\\ea7f' });\r\n Codicon.fileAdd = new Codicon('file-add', { character: '\\\\ea7f' });\r\n Codicon.newFolder = new Codicon('new-folder', { character: '\\\\ea80' });\r\n Codicon.fileDirectoryCreate = new Codicon('file-directory-create', { character: '\\\\ea80' });\r\n Codicon.trash = new Codicon('trash', { character: '\\\\ea81' });\r\n Codicon.trashcan = new Codicon('trashcan', { character: '\\\\ea81' });\r\n Codicon.history = new Codicon('history', { character: '\\\\ea82' });\r\n Codicon.clock = new Codicon('clock', { character: '\\\\ea82' });\r\n Codicon.folder = new Codicon('folder', { character: '\\\\ea83' });\r\n Codicon.fileDirectory = new Codicon('file-directory', { character: '\\\\ea83' });\r\n Codicon.symbolFolder = new Codicon('symbol-folder', { character: '\\\\ea83' });\r\n Codicon.logoGithub = new Codicon('logo-github', { character: '\\\\ea84' });\r\n Codicon.markGithub = new Codicon('mark-github', { character: '\\\\ea84' });\r\n Codicon.github = new Codicon('github', { character: '\\\\ea84' });\r\n Codicon.terminal = new Codicon('terminal', { character: '\\\\ea85' });\r\n Codicon.console = new Codicon('console', { character: '\\\\ea85' });\r\n Codicon.repl = new Codicon('repl', { character: '\\\\ea85' });\r\n Codicon.zap = new Codicon('zap', { character: '\\\\ea86' });\r\n Codicon.symbolEvent = new Codicon('symbol-event', { character: '\\\\ea86' });\r\n Codicon.error = new Codicon('error', { character: '\\\\ea87' });\r\n Codicon.stop = new Codicon('stop', { character: '\\\\ea87' });\r\n Codicon.variable = new Codicon('variable', { character: '\\\\ea88' });\r\n Codicon.symbolVariable = new Codicon('symbol-variable', { character: '\\\\ea88' });\r\n Codicon.array = new Codicon('array', { character: '\\\\ea8a' });\r\n Codicon.symbolArray = new Codicon('symbol-array', { character: '\\\\ea8a' });\r\n Codicon.symbolModule = new Codicon('symbol-module', { character: '\\\\ea8b' });\r\n Codicon.symbolPackage = new Codicon('symbol-package', { character: '\\\\ea8b' });\r\n Codicon.symbolNamespace = new Codicon('symbol-namespace', { character: '\\\\ea8b' });\r\n Codicon.symbolObject = new Codicon('symbol-object', { character: '\\\\ea8b' });\r\n Codicon.symbolMethod = new Codicon('symbol-method', { character: '\\\\ea8c' });\r\n Codicon.symbolFunction = new Codicon('symbol-function', { character: '\\\\ea8c' });\r\n Codicon.symbolConstructor = new Codicon('symbol-constructor', { character: '\\\\ea8c' });\r\n Codicon.symbolBoolean = new Codicon('symbol-boolean', { character: '\\\\ea8f' });\r\n Codicon.symbolNull = new Codicon('symbol-null', { character: '\\\\ea8f' });\r\n Codicon.symbolNumeric = new Codicon('symbol-numeric', { character: '\\\\ea90' });\r\n Codicon.symbolNumber = new Codicon('symbol-number', { character: '\\\\ea90' });\r\n Codicon.symbolStructure = new Codicon('symbol-structure', { character: '\\\\ea91' });\r\n Codicon.symbolStruct = new Codicon('symbol-struct', { character: '\\\\ea91' });\r\n Codicon.symbolParameter = new Codicon('symbol-parameter', { character: '\\\\ea92' });\r\n Codicon.symbolTypeParameter = new Codicon('symbol-type-parameter', { character: '\\\\ea92' });\r\n Codicon.symbolKey = new Codicon('symbol-key', { character: '\\\\ea93' });\r\n Codicon.symbolText = new Codicon('symbol-text', { character: '\\\\ea93' });\r\n Codicon.symbolReference = new Codicon('symbol-reference', { character: '\\\\ea94' });\r\n Codicon.goToFile = new Codicon('go-to-file', { character: '\\\\ea94' });\r\n Codicon.symbolEnum = new Codicon('symbol-enum', { character: '\\\\ea95' });\r\n Codicon.symbolValue = new Codicon('symbol-value', { character: '\\\\ea95' });\r\n Codicon.symbolRuler = new Codicon('symbol-ruler', { character: '\\\\ea96' });\r\n Codicon.symbolUnit = new Codicon('symbol-unit', { character: '\\\\ea96' });\r\n Codicon.activateBreakpoints = new Codicon('activate-breakpoints', { character: '\\\\ea97' });\r\n Codicon.archive = new Codicon('archive', { character: '\\\\ea98' });\r\n Codicon.arrowBoth = new Codicon('arrow-both', { character: '\\\\ea99' });\r\n Codicon.arrowDown = new Codicon('arrow-down', { character: '\\\\ea9a' });\r\n Codicon.arrowLeft = new Codicon('arrow-left', { character: '\\\\ea9b' });\r\n Codicon.arrowRight = new Codicon('arrow-right', { character: '\\\\ea9c' });\r\n Codicon.arrowSmallDown = new Codicon('arrow-small-down', { character: '\\\\ea9d' });\r\n Codicon.arrowSmallLeft = new Codicon('arrow-small-left', { character: '\\\\ea9e' });\r\n Codicon.arrowSmallRight = new Codicon('arrow-small-right', { character: '\\\\ea9f' });\r\n Codicon.arrowSmallUp = new Codicon('arrow-small-up', { character: '\\\\eaa0' });\r\n Codicon.arrowUp = new Codicon('arrow-up', { character: '\\\\eaa1' });\r\n Codicon.bell = new Codicon('bell', { character: '\\\\eaa2' });\r\n Codicon.bold = new Codicon('bold', { character: '\\\\eaa3' });\r\n Codicon.book = new Codicon('book', { character: '\\\\eaa4' });\r\n Codicon.bookmark = new Codicon('bookmark', { character: '\\\\eaa5' });\r\n Codicon.debugBreakpointConditionalUnverified = new Codicon('debug-breakpoint-conditional-unverified', { character: '\\\\eaa6' });\r\n Codicon.debugBreakpointConditional = new Codicon('debug-breakpoint-conditional', { character: '\\\\eaa7' });\r\n Codicon.debugBreakpointConditionalDisabled = new Codicon('debug-breakpoint-conditional-disabled', { character: '\\\\eaa7' });\r\n Codicon.debugBreakpointDataUnverified = new Codicon('debug-breakpoint-data-unverified', { character: '\\\\eaa8' });\r\n Codicon.debugBreakpointData = new Codicon('debug-breakpoint-data', { character: '\\\\eaa9' });\r\n Codicon.debugBreakpointDataDisabled = new Codicon('debug-breakpoint-data-disabled', { character: '\\\\eaa9' });\r\n Codicon.debugBreakpointLogUnverified = new Codicon('debug-breakpoint-log-unverified', { character: '\\\\eaaa' });\r\n Codicon.debugBreakpointLog = new Codicon('debug-breakpoint-log', { character: '\\\\eaab' });\r\n Codicon.debugBreakpointLogDisabled = new Codicon('debug-breakpoint-log-disabled', { character: '\\\\eaab' });\r\n Codicon.briefcase = new Codicon('briefcase', { character: '\\\\eaac' });\r\n Codicon.broadcast = new Codicon('broadcast', { character: '\\\\eaad' });\r\n Codicon.browser = new Codicon('browser', { character: '\\\\eaae' });\r\n Codicon.bug = new Codicon('bug', { character: '\\\\eaaf' });\r\n Codicon.calendar = new Codicon('calendar', { character: '\\\\eab0' });\r\n Codicon.caseSensitive = new Codicon('case-sensitive', { character: '\\\\eab1' });\r\n Codicon.check = new Codicon('check', { character: '\\\\eab2' });\r\n Codicon.checklist = new Codicon('checklist', { character: '\\\\eab3' });\r\n Codicon.chevronDown = new Codicon('chevron-down', { character: '\\\\eab4' });\r\n Codicon.chevronLeft = new Codicon('chevron-left', { character: '\\\\eab5' });\r\n Codicon.chevronRight = new Codicon('chevron-right', { character: '\\\\eab6' });\r\n Codicon.chevronUp = new Codicon('chevron-up', { character: '\\\\eab7' });\r\n Codicon.chromeClose = new Codicon('chrome-close', { character: '\\\\eab8' });\r\n Codicon.chromeMaximize = new Codicon('chrome-maximize', { character: '\\\\eab9' });\r\n Codicon.chromeMinimize = new Codicon('chrome-minimize', { character: '\\\\eaba' });\r\n Codicon.chromeRestore = new Codicon('chrome-restore', { character: '\\\\eabb' });\r\n Codicon.circleOutline = new Codicon('circle-outline', { character: '\\\\eabc' });\r\n Codicon.debugBreakpointUnverified = new Codicon('debug-breakpoint-unverified', { character: '\\\\eabc' });\r\n Codicon.circleSlash = new Codicon('circle-slash', { character: '\\\\eabd' });\r\n Codicon.circuitBoard = new Codicon('circuit-board', { character: '\\\\eabe' });\r\n Codicon.clearAll = new Codicon('clear-all', { character: '\\\\eabf' });\r\n Codicon.clippy = new Codicon('clippy', { character: '\\\\eac0' });\r\n Codicon.closeAll = new Codicon('close-all', { character: '\\\\eac1' });\r\n Codicon.cloudDownload = new Codicon('cloud-download', { character: '\\\\eac2' });\r\n Codicon.cloudUpload = new Codicon('cloud-upload', { character: '\\\\eac3' });\r\n Codicon.code = new Codicon('code', { character: '\\\\eac4' });\r\n Codicon.collapseAll = new Codicon('collapse-all', { character: '\\\\eac5' });\r\n Codicon.colorMode = new Codicon('color-mode', { character: '\\\\eac6' });\r\n Codicon.commentDiscussion = new Codicon('comment-discussion', { character: '\\\\eac7' });\r\n Codicon.compareChanges = new Codicon('compare-changes', { character: '\\\\eafd' });\r\n Codicon.creditCard = new Codicon('credit-card', { character: '\\\\eac9' });\r\n Codicon.dash = new Codicon('dash', { character: '\\\\eacc' });\r\n Codicon.dashboard = new Codicon('dashboard', { character: '\\\\eacd' });\r\n Codicon.database = new Codicon('database', { character: '\\\\eace' });\r\n Codicon.debugContinue = new Codicon('debug-continue', { character: '\\\\eacf' });\r\n Codicon.debugDisconnect = new Codicon('debug-disconnect', { character: '\\\\ead0' });\r\n Codicon.debugPause = new Codicon('debug-pause', { character: '\\\\ead1' });\r\n Codicon.debugRestart = new Codicon('debug-restart', { character: '\\\\ead2' });\r\n Codicon.debugStart = new Codicon('debug-start', { character: '\\\\ead3' });\r\n Codicon.debugStepInto = new Codicon('debug-step-into', { character: '\\\\ead4' });\r\n Codicon.debugStepOut = new Codicon('debug-step-out', { character: '\\\\ead5' });\r\n Codicon.debugStepOver = new Codicon('debug-step-over', { character: '\\\\ead6' });\r\n Codicon.debugStop = new Codicon('debug-stop', { character: '\\\\ead7' });\r\n Codicon.debug = new Codicon('debug', { character: '\\\\ead8' });\r\n Codicon.deviceCameraVideo = new Codicon('device-camera-video', { character: '\\\\ead9' });\r\n Codicon.deviceCamera = new Codicon('device-camera', { character: '\\\\eada' });\r\n Codicon.deviceMobile = new Codicon('device-mobile', { character: '\\\\eadb' });\r\n Codicon.diffAdded = new Codicon('diff-added', { character: '\\\\eadc' });\r\n Codicon.diffIgnored = new Codicon('diff-ignored', { character: '\\\\eadd' });\r\n Codicon.diffModified = new Codicon('diff-modified', { character: '\\\\eade' });\r\n Codicon.diffRemoved = new Codicon('diff-removed', { character: '\\\\eadf' });\r\n Codicon.diffRenamed = new Codicon('diff-renamed', { character: '\\\\eae0' });\r\n Codicon.diff = new Codicon('diff', { character: '\\\\eae1' });\r\n Codicon.discard = new Codicon('discard', { character: '\\\\eae2' });\r\n Codicon.editorLayout = new Codicon('editor-layout', { character: '\\\\eae3' });\r\n Codicon.emptyWindow = new Codicon('empty-window', { character: '\\\\eae4' });\r\n Codicon.exclude = new Codicon('exclude', { character: '\\\\eae5' });\r\n Codicon.extensions = new Codicon('extensions', { character: '\\\\eae6' });\r\n Codicon.eyeClosed = new Codicon('eye-closed', { character: '\\\\eae7' });\r\n Codicon.fileBinary = new Codicon('file-binary', { character: '\\\\eae8' });\r\n Codicon.fileCode = new Codicon('file-code', { character: '\\\\eae9' });\r\n Codicon.fileMedia = new Codicon('file-media', { character: '\\\\eaea' });\r\n Codicon.filePdf = new Codicon('file-pdf', { character: '\\\\eaeb' });\r\n Codicon.fileSubmodule = new Codicon('file-submodule', { character: '\\\\eaec' });\r\n Codicon.fileSymlinkDirectory = new Codicon('file-symlink-directory', { character: '\\\\eaed' });\r\n Codicon.fileSymlinkFile = new Codicon('file-symlink-file', { character: '\\\\eaee' });\r\n Codicon.fileZip = new Codicon('file-zip', { character: '\\\\eaef' });\r\n Codicon.files = new Codicon('files', { character: '\\\\eaf0' });\r\n Codicon.filter = new Codicon('filter', { character: '\\\\eaf1' });\r\n Codicon.flame = new Codicon('flame', { character: '\\\\eaf2' });\r\n Codicon.foldDown = new Codicon('fold-down', { character: '\\\\eaf3' });\r\n Codicon.foldUp = new Codicon('fold-up', { character: '\\\\eaf4' });\r\n Codicon.fold = new Codicon('fold', { character: '\\\\eaf5' });\r\n Codicon.folderActive = new Codicon('folder-active', { character: '\\\\eaf6' });\r\n Codicon.folderOpened = new Codicon('folder-opened', { character: '\\\\eaf7' });\r\n Codicon.gear = new Codicon('gear', { character: '\\\\eaf8' });\r\n Codicon.gift = new Codicon('gift', { character: '\\\\eaf9' });\r\n Codicon.gistSecret = new Codicon('gist-secret', { character: '\\\\eafa' });\r\n Codicon.gist = new Codicon('gist', { character: '\\\\eafb' });\r\n Codicon.gitCommit = new Codicon('git-commit', { character: '\\\\eafc' });\r\n Codicon.gitCompare = new Codicon('git-compare', { character: '\\\\eafd' });\r\n Codicon.gitMerge = new Codicon('git-merge', { character: '\\\\eafe' });\r\n Codicon.githubAction = new Codicon('github-action', { character: '\\\\eaff' });\r\n Codicon.githubAlt = new Codicon('github-alt', { character: '\\\\eb00' });\r\n Codicon.globe = new Codicon('globe', { character: '\\\\eb01' });\r\n Codicon.grabber = new Codicon('grabber', { character: '\\\\eb02' });\r\n Codicon.graph = new Codicon('graph', { character: '\\\\eb03' });\r\n Codicon.gripper = new Codicon('gripper', { character: '\\\\eb04' });\r\n Codicon.heart = new Codicon('heart', { character: '\\\\eb05' });\r\n Codicon.home = new Codicon('home', { character: '\\\\eb06' });\r\n Codicon.horizontalRule = new Codicon('horizontal-rule', { character: '\\\\eb07' });\r\n Codicon.hubot = new Codicon('hubot', { character: '\\\\eb08' });\r\n Codicon.inbox = new Codicon('inbox', { character: '\\\\eb09' });\r\n Codicon.issueClosed = new Codicon('issue-closed', { character: '\\\\eb0a' });\r\n Codicon.issueReopened = new Codicon('issue-reopened', { character: '\\\\eb0b' });\r\n Codicon.issues = new Codicon('issues', { character: '\\\\eb0c' });\r\n Codicon.italic = new Codicon('italic', { character: '\\\\eb0d' });\r\n Codicon.jersey = new Codicon('jersey', { character: '\\\\eb0e' });\r\n Codicon.json = new Codicon('json', { character: '\\\\eb0f' });\r\n Codicon.kebabVertical = new Codicon('kebab-vertical', { character: '\\\\eb10' });\r\n Codicon.key = new Codicon('key', { character: '\\\\eb11' });\r\n Codicon.law = new Codicon('law', { character: '\\\\eb12' });\r\n Codicon.lightbulbAutofix = new Codicon('lightbulb-autofix', { character: '\\\\eb13' });\r\n Codicon.linkExternal = new Codicon('link-external', { character: '\\\\eb14' });\r\n Codicon.link = new Codicon('link', { character: '\\\\eb15' });\r\n Codicon.listOrdered = new Codicon('list-ordered', { character: '\\\\eb16' });\r\n Codicon.listUnordered = new Codicon('list-unordered', { character: '\\\\eb17' });\r\n Codicon.liveShare = new Codicon('live-share', { character: '\\\\eb18' });\r\n Codicon.loading = new Codicon('loading', { character: '\\\\eb19' });\r\n Codicon.location = new Codicon('location', { character: '\\\\eb1a' });\r\n Codicon.mailRead = new Codicon('mail-read', { character: '\\\\eb1b' });\r\n Codicon.mail = new Codicon('mail', { character: '\\\\eb1c' });\r\n Codicon.markdown = new Codicon('markdown', { character: '\\\\eb1d' });\r\n Codicon.megaphone = new Codicon('megaphone', { character: '\\\\eb1e' });\r\n Codicon.mention = new Codicon('mention', { character: '\\\\eb1f' });\r\n Codicon.milestone = new Codicon('milestone', { character: '\\\\eb20' });\r\n Codicon.mortarBoard = new Codicon('mortar-board', { character: '\\\\eb21' });\r\n Codicon.move = new Codicon('move', { character: '\\\\eb22' });\r\n Codicon.multipleWindows = new Codicon('multiple-windows', { character: '\\\\eb23' });\r\n Codicon.mute = new Codicon('mute', { character: '\\\\eb24' });\r\n Codicon.noNewline = new Codicon('no-newline', { character: '\\\\eb25' });\r\n Codicon.note = new Codicon('note', { character: '\\\\eb26' });\r\n Codicon.octoface = new Codicon('octoface', { character: '\\\\eb27' });\r\n Codicon.openPreview = new Codicon('open-preview', { character: '\\\\eb28' });\r\n Codicon.package_ = new Codicon('package', { character: '\\\\eb29' });\r\n Codicon.paintcan = new Codicon('paintcan', { character: '\\\\eb2a' });\r\n Codicon.pin = new Codicon('pin', { character: '\\\\eb2b' });\r\n Codicon.play = new Codicon('play', { character: '\\\\eb2c' });\r\n Codicon.run = new Codicon('run', { character: '\\\\eb2c' });\r\n Codicon.plug = new Codicon('plug', { character: '\\\\eb2d' });\r\n Codicon.preserveCase = new Codicon('preserve-case', { character: '\\\\eb2e' });\r\n Codicon.preview = new Codicon('preview', { character: '\\\\eb2f' });\r\n Codicon.project = new Codicon('project', { character: '\\\\eb30' });\r\n Codicon.pulse = new Codicon('pulse', { character: '\\\\eb31' });\r\n Codicon.question = new Codicon('question', { character: '\\\\eb32' });\r\n Codicon.quote = new Codicon('quote', { character: '\\\\eb33' });\r\n Codicon.radioTower = new Codicon('radio-tower', { character: '\\\\eb34' });\r\n Codicon.reactions = new Codicon('reactions', { character: '\\\\eb35' });\r\n Codicon.references = new Codicon('references', { character: '\\\\eb36' });\r\n Codicon.refresh = new Codicon('refresh', { character: '\\\\eb37' });\r\n Codicon.regex = new Codicon('regex', { character: '\\\\eb38' });\r\n Codicon.remoteExplorer = new Codicon('remote-explorer', { character: '\\\\eb39' });\r\n Codicon.remote = new Codicon('remote', { character: '\\\\eb3a' });\r\n Codicon.remove = new Codicon('remove', { character: '\\\\eb3b' });\r\n Codicon.replaceAll = new Codicon('replace-all', { character: '\\\\eb3c' });\r\n Codicon.replace = new Codicon('replace', { character: '\\\\eb3d' });\r\n Codicon.repoClone = new Codicon('repo-clone', { character: '\\\\eb3e' });\r\n Codicon.repoForcePush = new Codicon('repo-force-push', { character: '\\\\eb3f' });\r\n Codicon.repoPull = new Codicon('repo-pull', { character: '\\\\eb40' });\r\n Codicon.repoPush = new Codicon('repo-push', { character: '\\\\eb41' });\r\n Codicon.report = new Codicon('report', { character: '\\\\eb42' });\r\n Codicon.requestChanges = new Codicon('request-changes', { character: '\\\\eb43' });\r\n Codicon.rocket = new Codicon('rocket', { character: '\\\\eb44' });\r\n Codicon.rootFolderOpened = new Codicon('root-folder-opened', { character: '\\\\eb45' });\r\n Codicon.rootFolder = new Codicon('root-folder', { character: '\\\\eb46' });\r\n Codicon.rss = new Codicon('rss', { character: '\\\\eb47' });\r\n Codicon.ruby = new Codicon('ruby', { character: '\\\\eb48' });\r\n Codicon.saveAll = new Codicon('save-all', { character: '\\\\eb49' });\r\n Codicon.saveAs = new Codicon('save-as', { character: '\\\\eb4a' });\r\n Codicon.save = new Codicon('save', { character: '\\\\eb4b' });\r\n Codicon.screenFull = new Codicon('screen-full', { character: '\\\\eb4c' });\r\n Codicon.screenNormal = new Codicon('screen-normal', { character: '\\\\eb4d' });\r\n Codicon.searchStop = new Codicon('search-stop', { character: '\\\\eb4e' });\r\n Codicon.server = new Codicon('server', { character: '\\\\eb50' });\r\n Codicon.settingsGear = new Codicon('settings-gear', { character: '\\\\eb51' });\r\n Codicon.settings = new Codicon('settings', { character: '\\\\eb52' });\r\n Codicon.shield = new Codicon('shield', { character: '\\\\eb53' });\r\n Codicon.smiley = new Codicon('smiley', { character: '\\\\eb54' });\r\n Codicon.sortPrecedence = new Codicon('sort-precedence', { character: '\\\\eb55' });\r\n Codicon.splitHorizontal = new Codicon('split-horizontal', { character: '\\\\eb56' });\r\n Codicon.splitVertical = new Codicon('split-vertical', { character: '\\\\eb57' });\r\n Codicon.squirrel = new Codicon('squirrel', { character: '\\\\eb58' });\r\n Codicon.starFull = new Codicon('star-full', { character: '\\\\eb59' });\r\n Codicon.starHalf = new Codicon('star-half', { character: '\\\\eb5a' });\r\n Codicon.symbolClass = new Codicon('symbol-class', { character: '\\\\eb5b' });\r\n Codicon.symbolColor = new Codicon('symbol-color', { character: '\\\\eb5c' });\r\n Codicon.symbolConstant = new Codicon('symbol-constant', { character: '\\\\eb5d' });\r\n Codicon.symbolEnumMember = new Codicon('symbol-enum-member', { character: '\\\\eb5e' });\r\n Codicon.symbolField = new Codicon('symbol-field', { character: '\\\\eb5f' });\r\n Codicon.symbolFile = new Codicon('symbol-file', { character: '\\\\eb60' });\r\n Codicon.symbolInterface = new Codicon('symbol-interface', { character: '\\\\eb61' });\r\n Codicon.symbolKeyword = new Codicon('symbol-keyword', { character: '\\\\eb62' });\r\n Codicon.symbolMisc = new Codicon('symbol-misc', { character: '\\\\eb63' });\r\n Codicon.symbolOperator = new Codicon('symbol-operator', { character: '\\\\eb64' });\r\n Codicon.symbolProperty = new Codicon('symbol-property', { character: '\\\\eb65' });\r\n Codicon.wrench = new Codicon('wrench', { character: '\\\\eb65' });\r\n Codicon.wrenchSubaction = new Codicon('wrench-subaction', { character: '\\\\eb65' });\r\n Codicon.symbolSnippet = new Codicon('symbol-snippet', { character: '\\\\eb66' });\r\n Codicon.tasklist = new Codicon('tasklist', { character: '\\\\eb67' });\r\n Codicon.telescope = new Codicon('telescope', { character: '\\\\eb68' });\r\n Codicon.textSize = new Codicon('text-size', { character: '\\\\eb69' });\r\n Codicon.threeBars = new Codicon('three-bars', { character: '\\\\eb6a' });\r\n Codicon.thumbsdown = new Codicon('thumbsdown', { character: '\\\\eb6b' });\r\n Codicon.thumbsup = new Codicon('thumbsup', { character: '\\\\eb6c' });\r\n Codicon.tools = new Codicon('tools', { character: '\\\\eb6d' });\r\n Codicon.triangleDown = new Codicon('triangle-down', { character: '\\\\eb6e' });\r\n Codicon.triangleLeft = new Codicon('triangle-left', { character: '\\\\eb6f' });\r\n Codicon.triangleRight = new Codicon('triangle-right', { character: '\\\\eb70' });\r\n Codicon.triangleUp = new Codicon('triangle-up', { character: '\\\\eb71' });\r\n Codicon.twitter = new Codicon('twitter', { character: '\\\\eb72' });\r\n Codicon.unfold = new Codicon('unfold', { character: '\\\\eb73' });\r\n Codicon.unlock = new Codicon('unlock', { character: '\\\\eb74' });\r\n Codicon.unmute = new Codicon('unmute', { character: '\\\\eb75' });\r\n Codicon.unverified = new Codicon('unverified', { character: '\\\\eb76' });\r\n Codicon.verified = new Codicon('verified', { character: '\\\\eb77' });\r\n Codicon.versions = new Codicon('versions', { character: '\\\\eb78' });\r\n Codicon.vmActive = new Codicon('vm-active', { character: '\\\\eb79' });\r\n Codicon.vmOutline = new Codicon('vm-outline', { character: '\\\\eb7a' });\r\n Codicon.vmRunning = new Codicon('vm-running', { character: '\\\\eb7b' });\r\n Codicon.watch = new Codicon('watch', { character: '\\\\eb7c' });\r\n Codicon.whitespace = new Codicon('whitespace', { character: '\\\\eb7d' });\r\n Codicon.wholeWord = new Codicon('whole-word', { character: '\\\\eb7e' });\r\n Codicon.window = new Codicon('window', { character: '\\\\eb7f' });\r\n Codicon.wordWrap = new Codicon('word-wrap', { character: '\\\\eb80' });\r\n Codicon.zoomIn = new Codicon('zoom-in', { character: '\\\\eb81' });\r\n Codicon.zoomOut = new Codicon('zoom-out', { character: '\\\\eb82' });\r\n Codicon.listFilter = new Codicon('list-filter', { character: '\\\\eb83' });\r\n Codicon.listFlat = new Codicon('list-flat', { character: '\\\\eb84' });\r\n Codicon.listSelection = new Codicon('list-selection', { character: '\\\\eb85' });\r\n Codicon.selection = new Codicon('selection', { character: '\\\\eb85' });\r\n Codicon.listTree = new Codicon('list-tree', { character: '\\\\eb86' });\r\n Codicon.debugBreakpointFunctionUnverified = new Codicon('debug-breakpoint-function-unverified', { character: '\\\\eb87' });\r\n Codicon.debugBreakpointFunction = new Codicon('debug-breakpoint-function', { character: '\\\\eb88' });\r\n Codicon.debugBreakpointFunctionDisabled = new Codicon('debug-breakpoint-function-disabled', { character: '\\\\eb88' });\r\n Codicon.debugStackframeActive = new Codicon('debug-stackframe-active', { character: '\\\\eb89' });\r\n Codicon.debugStackframeDot = new Codicon('debug-stackframe-dot', { character: '\\\\eb8a' });\r\n Codicon.debugStackframe = new Codicon('debug-stackframe', { character: '\\\\eb8b' });\r\n Codicon.debugStackframeFocused = new Codicon('debug-stackframe-focused', { character: '\\\\eb8b' });\r\n Codicon.debugBreakpointUnsupported = new Codicon('debug-breakpoint-unsupported', { character: '\\\\eb8c' });\r\n Codicon.symbolString = new Codicon('symbol-string', { character: '\\\\eb8d' });\r\n Codicon.debugReverseContinue = new Codicon('debug-reverse-continue', { character: '\\\\eb8e' });\r\n Codicon.debugStepBack = new Codicon('debug-step-back', { character: '\\\\eb8f' });\r\n Codicon.debugRestartFrame = new Codicon('debug-restart-frame', { character: '\\\\eb90' });\r\n Codicon.callIncoming = new Codicon('call-incoming', { character: '\\\\eb92' });\r\n Codicon.callOutgoing = new Codicon('call-outgoing', { character: '\\\\eb93' });\r\n Codicon.menu = new Codicon('menu', { character: '\\\\eb94' });\r\n Codicon.expandAll = new Codicon('expand-all', { character: '\\\\eb95' });\r\n Codicon.feedback = new Codicon('feedback', { character: '\\\\eb96' });\r\n Codicon.groupByRefType = new Codicon('group-by-ref-type', { character: '\\\\eb97' });\r\n Codicon.ungroupByRefType = new Codicon('ungroup-by-ref-type', { character: '\\\\eb98' });\r\n Codicon.account = new Codicon('account', { character: '\\\\eb99' });\r\n Codicon.bellDot = new Codicon('bell-dot', { character: '\\\\eb9a' });\r\n Codicon.debugConsole = new Codicon('debug-console', { character: '\\\\eb9b' });\r\n Codicon.library = new Codicon('library', { character: '\\\\eb9c' });\r\n Codicon.output = new Codicon('output', { character: '\\\\eb9d' });\r\n Codicon.runAll = new Codicon('run-all', { character: '\\\\eb9e' });\r\n Codicon.syncIgnored = new Codicon('sync-ignored', { character: '\\\\eb9f' });\r\n Codicon.pinned = new Codicon('pinned', { character: '\\\\eba0' });\r\n Codicon.githubInverted = new Codicon('github-inverted', { character: '\\\\eba1' });\r\n Codicon.debugAlt = new Codicon('debug-alt', { character: '\\\\eb91' });\r\n Codicon.serverProcess = new Codicon('server-process', { character: '\\\\eba2' });\r\n Codicon.serverEnvironment = new Codicon('server-environment', { character: '\\\\eba3' });\r\n Codicon.pass = new Codicon('pass', { character: '\\\\eba4' });\r\n Codicon.stopCircle = new Codicon('stop-circle', { character: '\\\\eba5' });\r\n Codicon.playCircle = new Codicon('play-circle', { character: '\\\\eba6' });\r\n Codicon.record = new Codicon('record', { character: '\\\\eba7' });\r\n Codicon.debugAltSmall = new Codicon('debug-alt-small', { character: '\\\\eba8' });\r\n Codicon.vmConnect = new Codicon('vm-connect', { character: '\\\\eba9' });\r\n Codicon.cloud = new Codicon('cloud', { character: '\\\\ebaa' });\r\n Codicon.merge = new Codicon('merge', { character: '\\\\ebab' });\r\n})(Codicon || (Codicon = {}));\r\nconst escapeCodiconsRegex = /(\\\\)?\\$\\([a-z0-9\\-]+?(?:~[a-z0-9\\-]*?)?\\)/gi;\r\nexport function escapeCodicons(text) {\r\n return text.replace(escapeCodiconsRegex, (match, escaped) => escaped ? match : `\\\\${match}`);\r\n}\r\nconst markdownEscapedCodiconsRegex = /\\\\\\$\\([a-z0-9\\-]+?(?:~[a-z0-9\\-]*?)?\\)/gi;\r\nexport function markdownEscapeEscapedCodicons(text) {\r\n // Need to add an extra \\ for escaping in markdown\r\n return text.replace(markdownEscapedCodiconsRegex, match => `\\\\${match}`);\r\n}\r\nexport const renderCodiconsRegex = /(\\\\)?\\$\\((([a-z0-9\\-]+?)(?:~([a-z0-9\\-]*?))?)\\)/gi;\r\n/**\r\n * @deprecated Use `renderCodiconsAsElement` instead\r\n */\r\nexport function renderCodicons(text) {\r\n return text.replace(renderCodiconsRegex, (_, escaped, codicon, name, animation) => {\r\n // If the class for codicons is changed, it should also be updated in src\\vs\\base\\browser\\markdownRenderer.ts\r\n return escaped\r\n ? `$(${codicon})`\r\n : `<span class=\"codicon codicon-${name}${animation ? ` codicon-animation-${animation}` : ''}\"></span>`;\r\n });\r\n}\r\nconst stripCodiconsRegex = /(\\s)?(\\\\)?\\$\\([a-z0-9\\-]+?(?:~[a-z0-9\\-]*?)?\\)(\\s)?/gi;\r\nexport function stripCodicons(text) {\r\n if (text.indexOf(codiconStartMarker) === -1) {\r\n return text;\r\n }\r\n return text.replace(stripCodiconsRegex, (match, preWhitespace, escaped, postWhitespace) => escaped ? match : preWhitespace || postWhitespace || '');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\n/**\r\n * Iterates over each entry in the provided dictionary. The iterator allows\r\n * to remove elements and will stop when the callback returns {{false}}.\r\n */\r\nexport function forEach(from, callback) {\r\n for (let key in from) {\r\n if (hasOwnProperty.call(from, key)) {\r\n const result = callback({ key: key, value: from[key] }, function () {\r\n delete from[key];\r\n });\r\n if (result === false) {\r\n return;\r\n }\r\n }\r\n }\r\n}\r\nexport class SetMap {\r\n constructor() {\r\n this.map = new Map();\r\n }\r\n add(key, value) {\r\n let values = this.map.get(key);\r\n if (!values) {\r\n values = new Set();\r\n this.map.set(key, values);\r\n }\r\n values.add(value);\r\n }\r\n delete(key, value) {\r\n const values = this.map.get(key);\r\n if (!values) {\r\n return;\r\n }\r\n values.delete(value);\r\n if (values.size === 0) {\r\n this.map.delete(key);\r\n }\r\n }\r\n forEach(key, fn) {\r\n const values = this.map.get(key);\r\n if (!values) {\r\n return;\r\n }\r\n values.forEach(fn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction roundFloat(number, decimalPoints) {\r\n const decimal = Math.pow(10, decimalPoints);\r\n return Math.round(number * decimal) / decimal;\r\n}\r\nexport class RGBA {\r\n constructor(r, g, b, a = 1) {\r\n this.r = Math.min(255, Math.max(0, r)) | 0;\r\n this.g = Math.min(255, Math.max(0, g)) | 0;\r\n this.b = Math.min(255, Math.max(0, b)) | 0;\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.r === b.r && a.g === b.g && a.b === b.b && a.a === b.a;\r\n }\r\n}\r\nexport class HSLA {\r\n constructor(h, s, l, a) {\r\n this.h = Math.max(Math.min(360, h), 0) | 0;\r\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\r\n this.l = roundFloat(Math.max(Math.min(1, l), 0), 3);\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.h === b.h && a.s === b.s && a.l === b.l && a.a === b.a;\r\n }\r\n /**\r\n * Converts an RGB color value to HSL. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes r, g, and b are contained in the set [0, 255] and\r\n * returns h in the set [0, 360], s, and l in the set [0, 1].\r\n */\r\n static fromRGBA(rgba) {\r\n const r = rgba.r / 255;\r\n const g = rgba.g / 255;\r\n const b = rgba.b / 255;\r\n const a = rgba.a;\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n let h = 0;\r\n let s = 0;\r\n const l = (min + max) / 2;\r\n const chroma = max - min;\r\n if (chroma > 0) {\r\n s = Math.min((l <= 0.5 ? chroma / (2 * l) : chroma / (2 - (2 * l))), 1);\r\n switch (max) {\r\n case r:\r\n h = (g - b) / chroma + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / chroma + 2;\r\n break;\r\n case b:\r\n h = (r - g) / chroma + 4;\r\n break;\r\n }\r\n h *= 60;\r\n h = Math.round(h);\r\n }\r\n return new HSLA(h, s, l, a);\r\n }\r\n static _hue2rgb(p, q, t) {\r\n if (t < 0) {\r\n t += 1;\r\n }\r\n if (t > 1) {\r\n t -= 1;\r\n }\r\n if (t < 1 / 6) {\r\n return p + (q - p) * 6 * t;\r\n }\r\n if (t < 1 / 2) {\r\n return q;\r\n }\r\n if (t < 2 / 3) {\r\n return p + (q - p) * (2 / 3 - t) * 6;\r\n }\r\n return p;\r\n }\r\n /**\r\n * Converts an HSL color value to RGB. Conversion formula\r\n * adapted from http://en.wikipedia.org/wiki/HSL_color_space.\r\n * Assumes h in the set [0, 360] s, and l are contained in the set [0, 1] and\r\n * returns r, g, and b in the set [0, 255].\r\n */\r\n static toRGBA(hsla) {\r\n const h = hsla.h / 360;\r\n const { s, l, a } = hsla;\r\n let r, g, b;\r\n if (s === 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n const p = 2 * l - q;\r\n r = HSLA._hue2rgb(p, q, h + 1 / 3);\r\n g = HSLA._hue2rgb(p, q, h);\r\n b = HSLA._hue2rgb(p, q, h - 1 / 3);\r\n }\r\n return new RGBA(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), a);\r\n }\r\n}\r\nexport class HSVA {\r\n constructor(h, s, v, a) {\r\n this.h = Math.max(Math.min(360, h), 0) | 0;\r\n this.s = roundFloat(Math.max(Math.min(1, s), 0), 3);\r\n this.v = roundFloat(Math.max(Math.min(1, v), 0), 3);\r\n this.a = roundFloat(Math.max(Math.min(1, a), 0), 3);\r\n }\r\n static equals(a, b) {\r\n return a.h === b.h && a.s === b.s && a.v === b.v && a.a === b.a;\r\n }\r\n // from http://www.rapidtables.com/convert/color/rgb-to-hsv.htm\r\n static fromRGBA(rgba) {\r\n const r = rgba.r / 255;\r\n const g = rgba.g / 255;\r\n const b = rgba.b / 255;\r\n const cmax = Math.max(r, g, b);\r\n const cmin = Math.min(r, g, b);\r\n const delta = cmax - cmin;\r\n const s = cmax === 0 ? 0 : (delta / cmax);\r\n let m;\r\n if (delta === 0) {\r\n m = 0;\r\n }\r\n else if (cmax === r) {\r\n m = ((((g - b) / delta) % 6) + 6) % 6;\r\n }\r\n else if (cmax === g) {\r\n m = ((b - r) / delta) + 2;\r\n }\r\n else {\r\n m = ((r - g) / delta) + 4;\r\n }\r\n return new HSVA(Math.round(m * 60), s, cmax, rgba.a);\r\n }\r\n // from http://www.rapidtables.com/convert/color/hsv-to-rgb.htm\r\n static toRGBA(hsva) {\r\n const { h, s, v, a } = hsva;\r\n const c = v * s;\r\n const x = c * (1 - Math.abs((h / 60) % 2 - 1));\r\n const m = v - c;\r\n let [r, g, b] = [0, 0, 0];\r\n if (h < 60) {\r\n r = c;\r\n g = x;\r\n }\r\n else if (h < 120) {\r\n r = x;\r\n g = c;\r\n }\r\n else if (h < 180) {\r\n g = c;\r\n b = x;\r\n }\r\n else if (h < 240) {\r\n g = x;\r\n b = c;\r\n }\r\n else if (h < 300) {\r\n r = x;\r\n b = c;\r\n }\r\n else if (h < 360) {\r\n r = c;\r\n b = x;\r\n }\r\n r = Math.round((r + m) * 255);\r\n g = Math.round((g + m) * 255);\r\n b = Math.round((b + m) * 255);\r\n return new RGBA(r, g, b, a);\r\n }\r\n}\r\nexport class Color {\r\n constructor(arg) {\r\n if (!arg) {\r\n throw new Error('Color needs a value');\r\n }\r\n else if (arg instanceof RGBA) {\r\n this.rgba = arg;\r\n }\r\n else if (arg instanceof HSLA) {\r\n this._hsla = arg;\r\n this.rgba = HSLA.toRGBA(arg);\r\n }\r\n else if (arg instanceof HSVA) {\r\n this._hsva = arg;\r\n this.rgba = HSVA.toRGBA(arg);\r\n }\r\n else {\r\n throw new Error('Invalid color ctor argument');\r\n }\r\n }\r\n static fromHex(hex) {\r\n return Color.Format.CSS.parseHex(hex) || Color.red;\r\n }\r\n get hsla() {\r\n if (this._hsla) {\r\n return this._hsla;\r\n }\r\n else {\r\n return HSLA.fromRGBA(this.rgba);\r\n }\r\n }\r\n get hsva() {\r\n if (this._hsva) {\r\n return this._hsva;\r\n }\r\n return HSVA.fromRGBA(this.rgba);\r\n }\r\n equals(other) {\r\n return !!other && RGBA.equals(this.rgba, other.rgba) && HSLA.equals(this.hsla, other.hsla) && HSVA.equals(this.hsva, other.hsva);\r\n }\r\n /**\r\n * http://www.w3.org/TR/WCAG20/#relativeluminancedef\r\n * Returns the number in the set [0, 1]. O => Darkest Black. 1 => Lightest white.\r\n */\r\n getRelativeLuminance() {\r\n const R = Color._relativeLuminanceForComponent(this.rgba.r);\r\n const G = Color._relativeLuminanceForComponent(this.rgba.g);\r\n const B = Color._relativeLuminanceForComponent(this.rgba.b);\r\n const luminance = 0.2126 * R + 0.7152 * G + 0.0722 * B;\r\n return roundFloat(luminance, 4);\r\n }\r\n static _relativeLuminanceForComponent(color) {\r\n const c = color / 255;\r\n return (c <= 0.03928) ? c / 12.92 : Math.pow(((c + 0.055) / 1.055), 2.4);\r\n }\r\n /**\r\n *\thttp://24ways.org/2010/calculating-color-contrast\r\n * Return 'true' if lighter color otherwise 'false'\r\n */\r\n isLighter() {\r\n const yiq = (this.rgba.r * 299 + this.rgba.g * 587 + this.rgba.b * 114) / 1000;\r\n return yiq >= 128;\r\n }\r\n isLighterThan(another) {\r\n const lum1 = this.getRelativeLuminance();\r\n const lum2 = another.getRelativeLuminance();\r\n return lum1 > lum2;\r\n }\r\n isDarkerThan(another) {\r\n const lum1 = this.getRelativeLuminance();\r\n const lum2 = another.getRelativeLuminance();\r\n return lum1 < lum2;\r\n }\r\n lighten(factor) {\r\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l + this.hsla.l * factor, this.hsla.a));\r\n }\r\n darken(factor) {\r\n return new Color(new HSLA(this.hsla.h, this.hsla.s, this.hsla.l - this.hsla.l * factor, this.hsla.a));\r\n }\r\n transparent(factor) {\r\n const { r, g, b, a } = this.rgba;\r\n return new Color(new RGBA(r, g, b, a * factor));\r\n }\r\n isTransparent() {\r\n return this.rgba.a === 0;\r\n }\r\n isOpaque() {\r\n return this.rgba.a === 1;\r\n }\r\n opposite() {\r\n return new Color(new RGBA(255 - this.rgba.r, 255 - this.rgba.g, 255 - this.rgba.b, this.rgba.a));\r\n }\r\n toString() {\r\n return '' + Color.Format.CSS.format(this);\r\n }\r\n static getLighterColor(of, relative, factor) {\r\n if (of.isLighterThan(relative)) {\r\n return of;\r\n }\r\n factor = factor ? factor : 0.5;\r\n const lum1 = of.getRelativeLuminance();\r\n const lum2 = relative.getRelativeLuminance();\r\n factor = factor * (lum2 - lum1) / lum2;\r\n return of.lighten(factor);\r\n }\r\n static getDarkerColor(of, relative, factor) {\r\n if (of.isDarkerThan(relative)) {\r\n return of;\r\n }\r\n factor = factor ? factor : 0.5;\r\n const lum1 = of.getRelativeLuminance();\r\n const lum2 = relative.getRelativeLuminance();\r\n factor = factor * (lum1 - lum2) / lum1;\r\n return of.darken(factor);\r\n }\r\n}\r\nColor.white = new Color(new RGBA(255, 255, 255, 1));\r\nColor.black = new Color(new RGBA(0, 0, 0, 1));\r\nColor.red = new Color(new RGBA(255, 0, 0, 1));\r\nColor.blue = new Color(new RGBA(0, 0, 255, 1));\r\nColor.cyan = new Color(new RGBA(0, 255, 255, 1));\r\nColor.lightgrey = new Color(new RGBA(211, 211, 211, 1));\r\nColor.transparent = new Color(new RGBA(0, 0, 0, 0));\r\n(function (Color) {\r\n let Format;\r\n (function (Format) {\r\n let CSS;\r\n (function (CSS) {\r\n function formatRGB(color) {\r\n if (color.rgba.a === 1) {\r\n return `rgb(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b})`;\r\n }\r\n return Color.Format.CSS.formatRGBA(color);\r\n }\r\n CSS.formatRGB = formatRGB;\r\n function formatRGBA(color) {\r\n return `rgba(${color.rgba.r}, ${color.rgba.g}, ${color.rgba.b}, ${+(color.rgba.a).toFixed(2)})`;\r\n }\r\n CSS.formatRGBA = formatRGBA;\r\n function formatHSL(color) {\r\n if (color.hsla.a === 1) {\r\n return `hsl(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%)`;\r\n }\r\n return Color.Format.CSS.formatHSLA(color);\r\n }\r\n CSS.formatHSL = formatHSL;\r\n function formatHSLA(color) {\r\n return `hsla(${color.hsla.h}, ${(color.hsla.s * 100).toFixed(2)}%, ${(color.hsla.l * 100).toFixed(2)}%, ${color.hsla.a.toFixed(2)})`;\r\n }\r\n CSS.formatHSLA = formatHSLA;\r\n function _toTwoDigitHex(n) {\r\n const r = n.toString(16);\r\n return r.length !== 2 ? '0' + r : r;\r\n }\r\n /**\r\n * Formats the color as #RRGGBB\r\n */\r\n function formatHex(color) {\r\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}`;\r\n }\r\n CSS.formatHex = formatHex;\r\n /**\r\n * Formats the color as #RRGGBBAA\r\n * If 'compact' is set, colors without transparancy will be printed as #RRGGBB\r\n */\r\n function formatHexA(color, compact = false) {\r\n if (compact && color.rgba.a === 1) {\r\n return Color.Format.CSS.formatHex(color);\r\n }\r\n return `#${_toTwoDigitHex(color.rgba.r)}${_toTwoDigitHex(color.rgba.g)}${_toTwoDigitHex(color.rgba.b)}${_toTwoDigitHex(Math.round(color.rgba.a * 255))}`;\r\n }\r\n CSS.formatHexA = formatHexA;\r\n /**\r\n * The default format will use HEX if opaque and RGBA otherwise.\r\n */\r\n function format(color) {\r\n if (color.isOpaque()) {\r\n return Color.Format.CSS.formatHex(color);\r\n }\r\n return Color.Format.CSS.formatRGBA(color);\r\n }\r\n CSS.format = format;\r\n /**\r\n * Converts an Hex color value to a Color.\r\n * returns r, g, and b are contained in the set [0, 255]\r\n * @param hex string (#RGB, #RGBA, #RRGGBB or #RRGGBBAA).\r\n */\r\n function parseHex(hex) {\r\n const length = hex.length;\r\n if (length === 0) {\r\n // Invalid color\r\n return null;\r\n }\r\n if (hex.charCodeAt(0) !== 35 /* Hash */) {\r\n // Does not begin with a #\r\n return null;\r\n }\r\n if (length === 7) {\r\n // #RRGGBB format\r\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\r\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\r\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\r\n return new Color(new RGBA(r, g, b, 1));\r\n }\r\n if (length === 9) {\r\n // #RRGGBBAA format\r\n const r = 16 * _parseHexDigit(hex.charCodeAt(1)) + _parseHexDigit(hex.charCodeAt(2));\r\n const g = 16 * _parseHexDigit(hex.charCodeAt(3)) + _parseHexDigit(hex.charCodeAt(4));\r\n const b = 16 * _parseHexDigit(hex.charCodeAt(5)) + _parseHexDigit(hex.charCodeAt(6));\r\n const a = 16 * _parseHexDigit(hex.charCodeAt(7)) + _parseHexDigit(hex.charCodeAt(8));\r\n return new Color(new RGBA(r, g, b, a / 255));\r\n }\r\n if (length === 4) {\r\n // #RGB format\r\n const r = _parseHexDigit(hex.charCodeAt(1));\r\n const g = _parseHexDigit(hex.charCodeAt(2));\r\n const b = _parseHexDigit(hex.charCodeAt(3));\r\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b));\r\n }\r\n if (length === 5) {\r\n // #RGBA format\r\n const r = _parseHexDigit(hex.charCodeAt(1));\r\n const g = _parseHexDigit(hex.charCodeAt(2));\r\n const b = _parseHexDigit(hex.charCodeAt(3));\r\n const a = _parseHexDigit(hex.charCodeAt(4));\r\n return new Color(new RGBA(16 * r + r, 16 * g + g, 16 * b + b, (16 * a + a) / 255));\r\n }\r\n // Invalid color\r\n return null;\r\n }\r\n CSS.parseHex = parseHex;\r\n function _parseHexDigit(charCode) {\r\n switch (charCode) {\r\n case 48 /* Digit0 */: return 0;\r\n case 49 /* Digit1 */: return 1;\r\n case 50 /* Digit2 */: return 2;\r\n case 51 /* Digit3 */: return 3;\r\n case 52 /* Digit4 */: return 4;\r\n case 53 /* Digit5 */: return 5;\r\n case 54 /* Digit6 */: return 6;\r\n case 55 /* Digit7 */: return 7;\r\n case 56 /* Digit8 */: return 8;\r\n case 57 /* Digit9 */: return 9;\r\n case 97 /* a */: return 10;\r\n case 65 /* A */: return 10;\r\n case 98 /* b */: return 11;\r\n case 66 /* B */: return 11;\r\n case 99 /* c */: return 12;\r\n case 67 /* C */: return 12;\r\n case 100 /* d */: return 13;\r\n case 68 /* D */: return 13;\r\n case 101 /* e */: return 14;\r\n case 69 /* E */: return 14;\r\n case 102 /* f */: return 15;\r\n case 70 /* F */: return 15;\r\n }\r\n return 0;\r\n }\r\n })(CSS = Format.CSS || (Format.CSS = {}));\r\n })(Format = Color.Format || (Color.Format = {}));\r\n})(Color || (Color = {}));\r\n","import { IdleValue } from './async.js';\r\n// When comparing large numbers of strings, such as in sorting large arrays, is better for\r\n// performance to create an Intl.Collator object and use the function provided by its compare\r\n// property than it is to use String.prototype.localeCompare()\r\n// A collator with numeric sorting enabled, and no sensitivity to case or to accents\r\nconst intlFileNameCollatorBaseNumeric = new IdleValue(() => {\r\n const collator = new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\r\n return {\r\n collator: collator,\r\n collatorIsNumeric: collator.resolvedOptions().numeric\r\n };\r\n}); /** Compares filenames without distinguishing the name from the extension. Disambiguates by unicode comparison. */\r\nexport function compareFileNames(one, other, caseSensitive = false) {\r\n const a = one || '';\r\n const b = other || '';\r\n const result = intlFileNameCollatorBaseNumeric.value.collator.compare(a, b);\r\n // Using the numeric option in the collator will\r\n // make compare(`foo1`, `foo01`) === 0. We must disambiguate.\r\n if (intlFileNameCollatorBaseNumeric.value.collatorIsNumeric && result === 0 && a !== b) {\r\n return a < b ? -1 : 1;\r\n }\r\n return result;\r\n}\r\nexport function compareAnything(one, other, lookFor) {\r\n const elementAName = one.toLowerCase();\r\n const elementBName = other.toLowerCase();\r\n // Sort prefix matches over non prefix matches\r\n const prefixCompare = compareByPrefix(one, other, lookFor);\r\n if (prefixCompare) {\r\n return prefixCompare;\r\n }\r\n // Sort suffix matches over non suffix matches\r\n const elementASuffixMatch = elementAName.endsWith(lookFor);\r\n const elementBSuffixMatch = elementBName.endsWith(lookFor);\r\n if (elementASuffixMatch !== elementBSuffixMatch) {\r\n return elementASuffixMatch ? -1 : 1;\r\n }\r\n // Understand file names\r\n const r = compareFileNames(elementAName, elementBName);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n // Compare by name\r\n return elementAName.localeCompare(elementBName);\r\n}\r\nexport function compareByPrefix(one, other, lookFor) {\r\n const elementAName = one.toLowerCase();\r\n const elementBName = other.toLowerCase();\r\n // Sort prefix matches over non prefix matches\r\n const elementAPrefixMatch = elementAName.startsWith(lookFor);\r\n const elementBPrefixMatch = elementBName.startsWith(lookFor);\r\n if (elementAPrefixMatch !== elementBPrefixMatch) {\r\n return elementAPrefixMatch ? -1 : 1;\r\n }\r\n // Same prefix: Sort shorter matches to the top to have those on top that match more precisely\r\n else if (elementAPrefixMatch && elementBPrefixMatch) {\r\n if (elementAName.length < elementBName.length) {\r\n return -1;\r\n }\r\n if (elementAName.length > elementBName.length) {\r\n return 1;\r\n }\r\n }\r\n return 0;\r\n}\r\n","let memoizeId = 0;\r\nexport function createMemoizer() {\r\n const memoizeKeyPrefix = `$memoize${memoizeId++}`;\r\n let self = undefined;\r\n const result = function memoize(target, key, descriptor) {\r\n let fnKey = null;\r\n let fn = null;\r\n if (typeof descriptor.value === 'function') {\r\n fnKey = 'value';\r\n fn = descriptor.value;\r\n if (fn.length !== 0) {\r\n console.warn('Memoize should only be used in functions with zero parameters');\r\n }\r\n }\r\n else if (typeof descriptor.get === 'function') {\r\n fnKey = 'get';\r\n fn = descriptor.get;\r\n }\r\n if (!fn) {\r\n throw new Error('not supported');\r\n }\r\n const memoizeKey = `${memoizeKeyPrefix}:${key}`;\r\n descriptor[fnKey] = function (...args) {\r\n self = this;\r\n if (!this.hasOwnProperty(memoizeKey)) {\r\n Object.defineProperty(this, memoizeKey, {\r\n configurable: true,\r\n enumerable: false,\r\n writable: true,\r\n value: fn.apply(this, args)\r\n });\r\n }\r\n return this[memoizeKey];\r\n };\r\n };\r\n result.clear = () => {\r\n if (typeof self === 'undefined') {\r\n return;\r\n }\r\n Object.getOwnPropertyNames(self).forEach(property => {\r\n if (property.indexOf(memoizeKeyPrefix) === 0) {\r\n delete self[property];\r\n }\r\n });\r\n };\r\n return result;\r\n}\r\nexport function memoize(target, key, descriptor) {\r\n return createMemoizer()(target, key, descriptor);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DiffChange } from './diffChange.js';\r\nimport { stringHash } from '../hash.js';\r\nexport class StringDiffSequence {\r\n constructor(source) {\r\n this.source = source;\r\n }\r\n getElements() {\r\n const source = this.source;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n return characters;\r\n }\r\n}\r\nexport function stringDiff(original, modified, pretty) {\r\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\r\n}\r\n//\r\n// The code below has been ported from a C# implementation in VS\r\n//\r\nexport class Debug {\r\n static Assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n }\r\n}\r\nexport class MyArray {\r\n /**\r\n * Copies a range of elements from an Array starting at the specified source index and pastes\r\n * them to another Array starting at the specified destination index. The length and the indexes\r\n * are specified as 64-bit integers.\r\n * sourceArray:\r\n *\t\tThe Array that contains the data to copy.\r\n * sourceIndex:\r\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\r\n * destinationArray:\r\n *\t\tThe Array that receives the data.\r\n * destinationIndex:\r\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\r\n * length:\r\n *\t\tA 64-bit integer that represents the number of elements to copy.\r\n */\r\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n}\r\n/**\r\n * A utility class which helps to create the set of DiffChanges from\r\n * a difference operation. This class accepts original DiffElements and\r\n * modified DiffElements that are involved in a particular change. The\r\n * MarktNextChange() method can be called to mark the separation between\r\n * distinct changes. At the end, the Changes property can be called to retrieve\r\n * the constructed changes.\r\n */\r\nclass DiffChangeHelper {\r\n /**\r\n * Constructs a new DiffChangeHelper for the given DiffSequences.\r\n */\r\n constructor() {\r\n this.m_changes = [];\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n }\r\n /**\r\n * Marks the beginning of the next change in the set of differences.\r\n */\r\n MarkNextChange() {\r\n // Only add to the list if there is something to add\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Add the new change to our list\r\n this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\r\n }\r\n // Reset for the next change\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n /**\r\n * Adds the original element at the given position to the elements\r\n * affected by the current change. The modified index gives context\r\n * to the change position with respect to the original sequence.\r\n * @param originalIndex The index of the original element to add.\r\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\r\n */\r\n AddOriginalElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_originalCount++;\r\n }\r\n /**\r\n * Adds the modified element at the given position to the elements\r\n * affected by the current change. The original index gives context\r\n * to the change position with respect to the modified sequence.\r\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\r\n * @param modifiedIndex The index of the modified element to add.\r\n */\r\n AddModifiedElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_modifiedCount++;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class.\r\n */\r\n getChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n return this.m_changes;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class in the reverse order\r\n */\r\n getReverseChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n this.m_changes.reverse();\r\n return this.m_changes;\r\n }\r\n}\r\n/**\r\n * An implementation of the difference algorithm described in\r\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\r\n */\r\nexport class LcsDiff {\r\n /**\r\n * Constructs the DiffFinder\r\n */\r\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\r\n this.ContinueProcessingPredicate = continueProcessingPredicate;\r\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\r\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\r\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\r\n this._originalStringElements = originalStringElements;\r\n this._originalElementsOrHash = originalElementsOrHash;\r\n this._modifiedStringElements = modifiedStringElements;\r\n this._modifiedElementsOrHash = modifiedElementsOrHash;\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n }\r\n static _isStringArray(arr) {\r\n return (arr.length > 0 && typeof arr[0] === 'string');\r\n }\r\n static _getElements(sequence) {\r\n const elements = sequence.getElements();\r\n if (LcsDiff._isStringArray(elements)) {\r\n const hashes = new Int32Array(elements.length);\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n hashes[i] = stringHash(elements[i], 0);\r\n }\r\n return [elements, hashes, true];\r\n }\r\n if (elements instanceof Int32Array) {\r\n return [[], elements, false];\r\n }\r\n return [[], new Int32Array(elements), false];\r\n }\r\n ElementsAreEqual(originalIndex, newIndex) {\r\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\r\n }\r\n OriginalElementsAreEqual(index1, index2) {\r\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\r\n }\r\n ModifiedElementsAreEqual(index1, index2) {\r\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\r\n }\r\n ComputeDiff(pretty) {\r\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\r\n }\r\n /**\r\n * Computes the differences between the original and modified input\r\n * sequences on the bounded range.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\r\n const quitEarlyArr = [false];\r\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\r\n if (pretty) {\r\n // We have to clean up the computed diff to be more intuitive\r\n // but it turns out this cannot be done correctly until the entire set\r\n // of diffs have been computed\r\n changes = this.PrettifyChanges(changes);\r\n }\r\n return {\r\n quitEarly: quitEarlyArr[0],\r\n changes: changes\r\n };\r\n }\r\n /**\r\n * Private helper method which computes the differences on the bounded range\r\n * recursively.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\r\n quitEarlyArr[0] = false;\r\n // Find the start of the differences\r\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\r\n originalStart++;\r\n modifiedStart++;\r\n }\r\n // Find the end of the differences\r\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\r\n originalEnd--;\r\n modifiedEnd--;\r\n }\r\n // In the special case where we either have all insertions or all deletions or the sequences are identical\r\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\r\n let changes;\r\n if (modifiedStart <= modifiedEnd) {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n // All insertions\r\n changes = [\r\n new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n else if (originalStart <= originalEnd) {\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // All deletions\r\n changes = [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\r\n ];\r\n }\r\n else {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // Identical sequences - No differences\r\n changes = [];\r\n }\r\n return changes;\r\n }\r\n // This problem can be solved using the Divide-And-Conquer technique.\r\n const midOriginalArr = [0];\r\n const midModifiedArr = [0];\r\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\r\n const midOriginal = midOriginalArr[0];\r\n const midModified = midModifiedArr[0];\r\n if (result !== null) {\r\n // Result is not-null when there was enough memory to compute the changes while\r\n // searching for the recursion point\r\n return result;\r\n }\r\n else if (!quitEarlyArr[0]) {\r\n // We can break the problem down recursively by finding the changes in the\r\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\r\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\r\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\r\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\r\n let rightChanges = [];\r\n if (!quitEarlyArr[0]) {\r\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\r\n }\r\n else {\r\n // We did't have time to finish the first half, so we don't have time to compute this half.\r\n // Consider the entire rest of the sequence different.\r\n rightChanges = [\r\n new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\r\n ];\r\n }\r\n return this.ConcatenateChanges(leftChanges, rightChanges);\r\n }\r\n // If we hit here, we quit early, and so can't return anything meaningful\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\r\n let forwardChanges = null;\r\n let reverseChanges = null;\r\n // First, walk backward through the forward diagonals history\r\n let changeHelper = new DiffChangeHelper();\r\n let diagonalMin = diagonalForwardStart;\r\n let diagonalMax = diagonalForwardEnd;\r\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\r\n let lastOriginalIndex = -1073741824 /* MIN_SAFE_SMALL_INTEGER */;\r\n let historyIndex = this.m_forwardHistory.length - 1;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalForwardBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n // Vertical line (the element is an insert)\r\n originalIndex = forwardPoints[diagonal + 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\r\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Horizontal line (the element is a deletion)\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex - 1;\r\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n forwardPoints = this.m_forwardHistory[historyIndex];\r\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = forwardPoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // Ironically, we get the forward changes as the reverse of the\r\n // order we added them since we technically added them backwards\r\n forwardChanges = changeHelper.getReverseChanges();\r\n if (quitEarlyArr[0]) {\r\n // TODO: Calculate a partial from the reverse diagonals.\r\n // For now, just assume everything after the midOriginal/midModified point is a diff\r\n let originalStartPoint = midOriginalArr[0] + 1;\r\n let modifiedStartPoint = midModifiedArr[0] + 1;\r\n if (forwardChanges !== null && forwardChanges.length > 0) {\r\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\r\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\r\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\r\n }\r\n reverseChanges = [\r\n new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\r\n ];\r\n }\r\n else {\r\n // Now walk backward through the reverse diagonals history\r\n changeHelper = new DiffChangeHelper();\r\n diagonalMin = diagonalReverseStart;\r\n diagonalMax = diagonalReverseEnd;\r\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\r\n lastOriginalIndex = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalReverseBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n // Horizontal line (the element is a deletion))\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex + 1;\r\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Vertical line (the element is an insertion)\r\n originalIndex = reversePoints[diagonal - 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n reversePoints = this.m_reverseHistory[historyIndex];\r\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = reversePoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // There are cases where the reverse history will find diffs that\r\n // are correct, but not intuitive, so we need shift them.\r\n reverseChanges = changeHelper.getChanges();\r\n }\r\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\r\n }\r\n /**\r\n * Given the range to compute the diff on, this method finds the point:\r\n * (midOriginal, midModified)\r\n * that exists in the middle of the LCS of the two sequences and\r\n * is the point at which the LCS problem may be broken down recursively.\r\n * This method will try to keep the LCS trace in memory. If the LCS recursion\r\n * point is calculated and the full trace is available in memory, then this method\r\n * will return the change list.\r\n * @param originalStart The start bound of the original sequence range\r\n * @param originalEnd The end bound of the original sequence range\r\n * @param modifiedStart The start bound of the modified sequence range\r\n * @param modifiedEnd The end bound of the modified sequence range\r\n * @param midOriginal The middle point of the original sequence range\r\n * @param midModified The middle point of the modified sequence range\r\n * @returns The diff changes, if available, otherwise null\r\n */\r\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\r\n let originalIndex = 0, modifiedIndex = 0;\r\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\r\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\r\n // To traverse the edit graph and produce the proper LCS, our actual\r\n // start position is just outside the given boundary\r\n originalStart--;\r\n modifiedStart--;\r\n // We set these up to make the compiler happy, but they will\r\n // be replaced before we return with the actual recursion point\r\n midOriginalArr[0] = 0;\r\n midModifiedArr[0] = 0;\r\n // Clear out the history\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\r\n // The integer value in the cell represents the originalIndex of the furthest\r\n // reaching point found so far that ends in that diagonal.\r\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\r\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\r\n const numDiagonals = maxDifferences + 1;\r\n const forwardPoints = new Int32Array(numDiagonals);\r\n const reversePoints = new Int32Array(numDiagonals);\r\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\r\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\r\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\r\n const diagonalReverseBase = (originalEnd - originalStart);\r\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalForwardBase)\r\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalReverseBase)\r\n const diagonalForwardOffset = (originalStart - modifiedStart);\r\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\r\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\r\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\r\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\r\n const delta = diagonalReverseBase - diagonalForwardBase;\r\n const deltaIsEven = (delta % 2 === 0);\r\n // Here we set up the start and end points as the furthest points found so far\r\n // in both the forward and reverse directions, respectively\r\n forwardPoints[diagonalForwardBase] = originalStart;\r\n reversePoints[diagonalReverseBase] = originalEnd;\r\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\r\n quitEarlyArr[0] = false;\r\n // A couple of points:\r\n // --With this method, we iterate on the number of differences between the two sequences.\r\n // The more differences there actually are, the longer this will take.\r\n // --Also, as the number of differences increases, we have to search on diagonals further\r\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\r\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\r\n // is even and odd diagonals only when numDifferences is odd.\r\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\r\n let furthestOriginalIndex = 0;\r\n let furthestModifiedIndex = 0;\r\n // Run the algorithm in the forward direction\r\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalStart, modifiedStart)\r\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n originalIndex = forwardPoints[diagonal + 1];\r\n }\r\n else {\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\r\n // Save the current originalIndex so we can test for false overlap in step 3\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // so long as the elements are equal.\r\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\r\n originalIndex++;\r\n modifiedIndex++;\r\n }\r\n forwardPoints[diagonal] = originalIndex;\r\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\r\n furthestOriginalIndex = originalIndex;\r\n furthestModifiedIndex = modifiedIndex;\r\n }\r\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\r\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\r\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\r\n // then check for overlap.\r\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\r\n if (originalIndex >= reversePoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Check to see if we should be quitting early, before moving on to the next iteration.\r\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\r\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\r\n // We can't finish, so skip ahead to generating a result from what we have.\r\n quitEarlyArr[0] = true;\r\n // Use the furthest distance we got in the forward direction.\r\n midOriginalArr[0] = furthestOriginalIndex;\r\n midModifiedArr[0] = furthestModifiedIndex;\r\n if (matchLengthOfLongest > 0 && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // Enough of the history is in memory to walk it backwards\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // We didn't actually remember enough of the history.\r\n //Since we are quiting the diff early, we need to shift back the originalStart and modified start\r\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\r\n originalStart++;\r\n modifiedStart++;\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n }\r\n // Run the algorithm in the reverse direction\r\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalEnd, modifiedEnd)\r\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n }\r\n else {\r\n originalIndex = reversePoints[diagonal - 1];\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\r\n // Save the current originalIndex so we can test for false overlap\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // as long as the elements are equal.\r\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\r\n originalIndex--;\r\n modifiedIndex--;\r\n }\r\n reversePoints[diagonal] = originalIndex;\r\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\r\n // and diagonal is in the range of forward diagonals computed for numDifferences\r\n // then check for overlap.\r\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\r\n if (originalIndex <= forwardPoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Save current vectors to history before the next iteration\r\n if (numDifferences <= 1447 /* MaxDifferencesHistory */) {\r\n // We are allocating space for one extra int, which we fill with\r\n // the index of the diagonal base index\r\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\r\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\r\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\r\n this.m_forwardHistory.push(temp);\r\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\r\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\r\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\r\n this.m_reverseHistory.push(temp);\r\n }\r\n }\r\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\r\n // NOTE: This part is a bit messy\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n /**\r\n * Shifts the given changes to provide a more intuitive diff.\r\n * While the first element in a diff matches the first element after the diff,\r\n * we shift the diff down.\r\n *\r\n * @param changes The list of changes to shift\r\n * @returns The shifted changes\r\n */\r\n PrettifyChanges(changes) {\r\n // Shift all the changes down first\r\n for (let i = 0; i < changes.length; i++) {\r\n const change = changes[i];\r\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\r\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n while (change.originalStart + change.originalLength < originalStop &&\r\n change.modifiedStart + change.modifiedLength < modifiedStop &&\r\n (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) &&\r\n (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\r\n change.originalStart++;\r\n change.modifiedStart++;\r\n }\r\n let mergedChangeArr = [null];\r\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\r\n changes[i] = mergedChangeArr[0];\r\n changes.splice(i + 1, 1);\r\n i--;\r\n continue;\r\n }\r\n }\r\n // Shift changes back up until we hit empty or whitespace-only lines\r\n for (let i = changes.length - 1; i >= 0; i--) {\r\n const change = changes[i];\r\n let originalStop = 0;\r\n let modifiedStop = 0;\r\n if (i > 0) {\r\n const prevChange = changes[i - 1];\r\n if (prevChange.originalLength > 0) {\r\n originalStop = prevChange.originalStart + prevChange.originalLength;\r\n }\r\n if (prevChange.modifiedLength > 0) {\r\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\r\n }\r\n }\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n let bestDelta = 0;\r\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\r\n for (let delta = 1;; delta++) {\r\n const originalStart = change.originalStart - delta;\r\n const modifiedStart = change.modifiedStart - delta;\r\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\r\n break;\r\n }\r\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\r\n break;\r\n }\r\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\r\n break;\r\n }\r\n const score = this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength);\r\n if (score > bestScore) {\r\n bestScore = score;\r\n bestDelta = delta;\r\n }\r\n }\r\n change.originalStart -= bestDelta;\r\n change.modifiedStart -= bestDelta;\r\n }\r\n return changes;\r\n }\r\n _OriginalIsBoundary(index) {\r\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\r\n }\r\n _OriginalRegionIsBoundary(originalStart, originalLength) {\r\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\r\n return true;\r\n }\r\n if (originalLength > 0) {\r\n const originalEnd = originalStart + originalLength;\r\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _ModifiedIsBoundary(index) {\r\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\r\n }\r\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\r\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\r\n return true;\r\n }\r\n if (modifiedLength > 0) {\r\n const modifiedEnd = modifiedStart + modifiedLength;\r\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\r\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\r\n return (originalScore + modifiedScore);\r\n }\r\n /**\r\n * Concatenates the two input DiffChange lists and returns the resulting\r\n * list.\r\n * @param The left changes\r\n * @param The right changes\r\n * @returns The concatenated list\r\n */\r\n ConcatenateChanges(left, right) {\r\n let mergedChangeArr = [];\r\n if (left.length === 0 || right.length === 0) {\r\n return (right.length > 0) ? right : left;\r\n }\r\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\r\n // Since we break the problem down recursively, it is possible that we\r\n // might recurse in the middle of a change thereby splitting it into\r\n // two changes. Here in the combining stage, we detect and fuse those\r\n // changes back together\r\n const result = new Array(left.length + right.length - 1);\r\n MyArray.Copy(left, 0, result, 0, left.length - 1);\r\n result[left.length - 1] = mergedChangeArr[0];\r\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\r\n return result;\r\n }\r\n else {\r\n const result = new Array(left.length + right.length);\r\n MyArray.Copy(left, 0, result, 0, left.length);\r\n MyArray.Copy(right, 0, result, left.length, right.length);\r\n return result;\r\n }\r\n }\r\n /**\r\n * Returns true if the two changes overlap and can be merged into a single\r\n * change\r\n * @param left The left change\r\n * @param right The right change\r\n * @param mergedChange The merged change if the two overlap, null otherwise\r\n * @returns True if the two changes overlap\r\n */\r\n ChangesOverlap(left, right, mergedChangeArr) {\r\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\r\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\r\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n const originalStart = left.originalStart;\r\n let originalLength = left.originalLength;\r\n const modifiedStart = left.modifiedStart;\r\n let modifiedLength = left.modifiedLength;\r\n if (left.originalStart + left.originalLength >= right.originalStart) {\r\n originalLength = right.originalStart + right.originalLength - left.originalStart;\r\n }\r\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\r\n }\r\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\r\n return true;\r\n }\r\n else {\r\n mergedChangeArr[0] = null;\r\n return false;\r\n }\r\n }\r\n /**\r\n * Helper method used to clip a diagonal index to the range of valid\r\n * diagonals. This also decides whether or not the diagonal index,\r\n * if it exceeds the boundary, should be clipped to the boundary or clipped\r\n * one inside the boundary depending on the Even/Odd status of the boundary\r\n * and numDifferences.\r\n * @param diagonal The index of the diagonal to clip.\r\n * @param numDifferences The current number of differences being iterated upon.\r\n * @param diagonalBaseIndex The base reference diagonal.\r\n * @param numDiagonals The total number of diagonals.\r\n * @returns The clipped diagonal index.\r\n */\r\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\r\n if (diagonal >= 0 && diagonal < numDiagonals) {\r\n // Nothing to clip, its in range\r\n return diagonal;\r\n }\r\n // diagonalsBelow: The number of diagonals below the reference diagonal\r\n // diagonalsAbove: The number of diagonals above the reference diagonal\r\n const diagonalsBelow = diagonalBaseIndex;\r\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\r\n const diffEven = (numDifferences % 2 === 0);\r\n if (diagonal < 0) {\r\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\r\n return (diffEven === lowerBoundEven) ? 0 : 1;\r\n }\r\n else {\r\n const upperBoundEven = (diagonalsAbove % 2 === 0);\r\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Represents information about a specific difference between two sequences.\r\n */\r\nexport class DiffChange {\r\n /**\r\n * Constructs a new DiffChange with the given sequence information\r\n * and content.\r\n */\r\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\r\n this.originalStart = originalStart;\r\n this.originalLength = originalLength;\r\n this.modifiedStart = modifiedStart;\r\n this.modifiedLength = modifiedLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the original sequence.\r\n */\r\n getOriginalEnd() {\r\n return this.originalStart + this.originalLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the modified sequence.\r\n */\r\n getModifiedEnd() {\r\n return this.modifiedStart + this.modifiedLength;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nimport * as types from './types.js';\r\nimport * as arrays from './arrays.js';\r\nfunction exceptionToErrorMessage(exception, verbose) {\r\n if (verbose && (exception.stack || exception.stacktrace)) {\r\n return nls.localize('stackTrace.format', \"{0}: {1}\", detectSystemErrorMessage(exception), stackToString(exception.stack) || stackToString(exception.stacktrace));\r\n }\r\n return detectSystemErrorMessage(exception);\r\n}\r\nfunction stackToString(stack) {\r\n if (Array.isArray(stack)) {\r\n return stack.join('\\n');\r\n }\r\n return stack;\r\n}\r\nfunction detectSystemErrorMessage(exception) {\r\n // See https://nodejs.org/api/errors.html#errors_class_system_error\r\n if (typeof exception.code === 'string' && typeof exception.errno === 'number' && typeof exception.syscall === 'string') {\r\n return nls.localize('nodeExceptionMessage', \"A system error occurred ({0})\", exception.message);\r\n }\r\n return exception.message || nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\r\n}\r\n/**\r\n * Tries to generate a human readable error message out of the error. If the verbose parameter\r\n * is set to true, the error message will include stacktrace details if provided.\r\n *\r\n * @returns A string containing the error message.\r\n */\r\nexport function toErrorMessage(error = null, verbose = false) {\r\n if (!error) {\r\n return nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\r\n }\r\n if (Array.isArray(error)) {\r\n const errors = arrays.coalesce(error);\r\n const msg = toErrorMessage(errors[0], verbose);\r\n if (errors.length > 1) {\r\n return nls.localize('error.moreErrors', \"{0} ({1} errors in total)\", msg, errors.length);\r\n }\r\n return msg;\r\n }\r\n if (types.isString(error)) {\r\n return error;\r\n }\r\n if (error.detail) {\r\n const detail = error.detail;\r\n if (detail.error) {\r\n return exceptionToErrorMessage(detail.error, verbose);\r\n }\r\n if (detail.exception) {\r\n return exceptionToErrorMessage(detail.exception, verbose);\r\n }\r\n }\r\n if (error.stack) {\r\n return exceptionToErrorMessage(error, verbose);\r\n }\r\n if (error.message) {\r\n return error.message;\r\n }\r\n return nls.localize('error.defaultMessage', \"An unknown error occurred. Please consult the log for more details.\");\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\r\nexport class ErrorHandler {\r\n constructor() {\r\n this.listeners = [];\r\n this.unexpectedErrorHandler = function (e) {\r\n setTimeout(() => {\r\n if (e.stack) {\r\n throw new Error(e.message + '\\n\\n' + e.stack);\r\n }\r\n throw e;\r\n }, 0);\r\n };\r\n }\r\n emit(e) {\r\n this.listeners.forEach((listener) => {\r\n listener(e);\r\n });\r\n }\r\n onUnexpectedError(e) {\r\n this.unexpectedErrorHandler(e);\r\n this.emit(e);\r\n }\r\n // For external errors, we don't want the listeners to be called\r\n onUnexpectedExternalError(e) {\r\n this.unexpectedErrorHandler(e);\r\n }\r\n}\r\nexport const errorHandler = new ErrorHandler();\r\nexport function onUnexpectedError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function onUnexpectedExternalError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedExternalError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function transformErrorForSerialization(error) {\r\n if (error instanceof Error) {\r\n let { name, message } = error;\r\n const stack = error.stacktrace || error.stack;\r\n return {\r\n $isError: true,\r\n name,\r\n message,\r\n stack\r\n };\r\n }\r\n // return as is\r\n return error;\r\n}\r\nconst canceledName = 'Canceled';\r\n/**\r\n * Checks if the given error is a promise in canceled state\r\n */\r\nexport function isPromiseCanceledError(error) {\r\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\r\n}\r\n/**\r\n * Returns an error that signals cancellation.\r\n */\r\nexport function canceled() {\r\n const error = new Error(canceledName);\r\n error.name = error.message;\r\n return error;\r\n}\r\nexport function illegalArgument(name) {\r\n if (name) {\r\n return new Error(`Illegal argument: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal argument');\r\n }\r\n}\r\nexport function illegalState(name) {\r\n if (name) {\r\n return new Error(`Illegal state: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal state');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from './errors.js';\r\nimport { Disposable, combinedDisposable, DisposableStore } from './lifecycle.js';\r\nimport { LinkedList } from './linkedList.js';\r\nexport var Event;\r\n(function (Event) {\r\n Event.None = () => Disposable.None;\r\n /**\r\n * Given an event, returns another event which only fires once.\r\n */\r\n function once(event) {\r\n return (listener, thisArgs = null, disposables) => {\r\n // we need this, in case the event fires during the listener call\r\n let didFire = false;\r\n let result;\r\n result = event(e => {\r\n if (didFire) {\r\n return;\r\n }\r\n else if (result) {\r\n result.dispose();\r\n }\r\n else {\r\n didFire = true;\r\n }\r\n return listener.call(thisArgs, e);\r\n }, null, disposables);\r\n if (didFire) {\r\n result.dispose();\r\n }\r\n return result;\r\n };\r\n }\r\n Event.once = once;\r\n /**\r\n * Given an event and a `map` function, returns another event which maps each element\r\n * through the mapping function.\r\n */\r\n function map(event, map) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables));\r\n }\r\n Event.map = map;\r\n /**\r\n * Given an event and an `each` function, returns another identical event and calls\r\n * the `each` function per each element.\r\n */\r\n function forEach(event, each) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables));\r\n }\r\n Event.forEach = forEach;\r\n function filter(event, filter) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables));\r\n }\r\n Event.filter = filter;\r\n /**\r\n * Given an event, returns the same event but typed as `Event<void>`.\r\n */\r\n function signal(event) {\r\n return event;\r\n }\r\n Event.signal = signal;\r\n function any(...events) {\r\n return (listener, thisArgs = null, disposables) => combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\r\n }\r\n Event.any = any;\r\n /**\r\n * Given an event and a `merge` function, returns another event which maps each element\r\n * and the cumulative result through the `merge` function. Similar to `map`, but with memory.\r\n */\r\n function reduce(event, merge, initial) {\r\n let output = initial;\r\n return map(event, e => {\r\n output = merge(output, e);\r\n return output;\r\n });\r\n }\r\n Event.reduce = reduce;\r\n /**\r\n * Given a chain of event processing functions (filter, map, etc), each\r\n * function will be invoked per event & per listener. Snapshotting an event\r\n * chain allows each function to be invoked just once per event.\r\n */\r\n function snapshot(event) {\r\n let listener;\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n listener = event(emitter.fire, emitter);\r\n },\r\n onLastListenerRemove() {\r\n listener.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.snapshot = snapshot;\r\n function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {\r\n let subscription;\r\n let output = undefined;\r\n let handle = undefined;\r\n let numDebouncedCalls = 0;\r\n const emitter = new Emitter({\r\n leakWarningThreshold,\r\n onFirstListenerAdd() {\r\n subscription = event(cur => {\r\n numDebouncedCalls++;\r\n output = merge(output, cur);\r\n if (leading && !handle) {\r\n emitter.fire(output);\r\n output = undefined;\r\n }\r\n clearTimeout(handle);\r\n handle = setTimeout(() => {\r\n const _output = output;\r\n output = undefined;\r\n handle = undefined;\r\n if (!leading || numDebouncedCalls > 1) {\r\n emitter.fire(_output);\r\n }\r\n numDebouncedCalls = 0;\r\n }, delay);\r\n });\r\n },\r\n onLastListenerRemove() {\r\n subscription.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.debounce = debounce;\r\n /**\r\n * Given an event, it returns another event which fires only once and as soon as\r\n * the input event emits. The event data is the number of millis it took for the\r\n * event to fire.\r\n */\r\n function stopwatch(event) {\r\n const start = new Date().getTime();\r\n return map(once(event), _ => new Date().getTime() - start);\r\n }\r\n Event.stopwatch = stopwatch;\r\n /**\r\n * Given an event, it returns another event which fires only when the event\r\n * element changes.\r\n */\r\n function latch(event) {\r\n let firstCall = true;\r\n let cache;\r\n return filter(event, value => {\r\n const shouldEmit = firstCall || value !== cache;\r\n firstCall = false;\r\n cache = value;\r\n return shouldEmit;\r\n });\r\n }\r\n Event.latch = latch;\r\n /**\r\n * Buffers the provided event until a first listener comes\r\n * along, at which point fire all the events at once and\r\n * pipe the event from then on.\r\n *\r\n * ```typescript\r\n * const emitter = new Emitter<number>();\r\n * const event = emitter.event;\r\n * const bufferedEvent = buffer(event);\r\n *\r\n * emitter.fire(1);\r\n * emitter.fire(2);\r\n * emitter.fire(3);\r\n * // nothing...\r\n *\r\n * const listener = bufferedEvent(num => console.log(num));\r\n * // 1, 2, 3\r\n *\r\n * emitter.fire(4);\r\n * // 4\r\n * ```\r\n */\r\n function buffer(event, nextTick = false, _buffer = []) {\r\n let buffer = _buffer.slice();\r\n let listener = event(e => {\r\n if (buffer) {\r\n buffer.push(e);\r\n }\r\n else {\r\n emitter.fire(e);\r\n }\r\n });\r\n const flush = () => {\r\n if (buffer) {\r\n buffer.forEach(e => emitter.fire(e));\r\n }\r\n buffer = null;\r\n };\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n if (!listener) {\r\n listener = event(e => emitter.fire(e));\r\n }\r\n },\r\n onFirstListenerDidAdd() {\r\n if (buffer) {\r\n if (nextTick) {\r\n setTimeout(flush);\r\n }\r\n else {\r\n flush();\r\n }\r\n }\r\n },\r\n onLastListenerRemove() {\r\n if (listener) {\r\n listener.dispose();\r\n }\r\n listener = null;\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.buffer = buffer;\r\n class ChainableEvent {\r\n constructor(event) {\r\n this.event = event;\r\n }\r\n map(fn) {\r\n return new ChainableEvent(map(this.event, fn));\r\n }\r\n forEach(fn) {\r\n return new ChainableEvent(forEach(this.event, fn));\r\n }\r\n filter(fn) {\r\n return new ChainableEvent(filter(this.event, fn));\r\n }\r\n reduce(merge, initial) {\r\n return new ChainableEvent(reduce(this.event, merge, initial));\r\n }\r\n latch() {\r\n return new ChainableEvent(latch(this.event));\r\n }\r\n debounce(merge, delay = 100, leading = false, leakWarningThreshold) {\r\n return new ChainableEvent(debounce(this.event, merge, delay, leading, leakWarningThreshold));\r\n }\r\n on(listener, thisArgs, disposables) {\r\n return this.event(listener, thisArgs, disposables);\r\n }\r\n once(listener, thisArgs, disposables) {\r\n return once(this.event)(listener, thisArgs, disposables);\r\n }\r\n }\r\n function chain(event) {\r\n return new ChainableEvent(event);\r\n }\r\n Event.chain = chain;\r\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\r\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\r\n function fromPromise(promise) {\r\n const emitter = new Emitter();\r\n let shouldEmit = false;\r\n promise\r\n .then(undefined, () => null)\r\n .then(() => {\r\n if (!shouldEmit) {\r\n setTimeout(() => emitter.fire(undefined), 0);\r\n }\r\n else {\r\n emitter.fire(undefined);\r\n }\r\n });\r\n shouldEmit = true;\r\n return emitter.event;\r\n }\r\n Event.fromPromise = fromPromise;\r\n function toPromise(event) {\r\n return new Promise(c => once(event)(c));\r\n }\r\n Event.toPromise = toPromise;\r\n})(Event || (Event = {}));\r\nlet _globalLeakWarningThreshold = -1;\r\nclass LeakageMonitor {\r\n constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {\r\n this.customThreshold = customThreshold;\r\n this.name = name;\r\n this._warnCountdown = 0;\r\n }\r\n dispose() {\r\n if (this._stacks) {\r\n this._stacks.clear();\r\n }\r\n }\r\n check(listenerCount) {\r\n let threshold = _globalLeakWarningThreshold;\r\n if (typeof this.customThreshold === 'number') {\r\n threshold = this.customThreshold;\r\n }\r\n if (threshold <= 0 || listenerCount < threshold) {\r\n return undefined;\r\n }\r\n if (!this._stacks) {\r\n this._stacks = new Map();\r\n }\r\n const stack = new Error().stack.split('\\n').slice(3).join('\\n');\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count + 1);\r\n this._warnCountdown -= 1;\r\n if (this._warnCountdown <= 0) {\r\n // only warn on first exceed and then every time the limit\r\n // is exceeded by 50% again\r\n this._warnCountdown = threshold * 0.5;\r\n // find most frequent listener and print warning\r\n let topStack;\r\n let topCount = 0;\r\n for (const [stack, count] of this._stacks) {\r\n if (!topStack || topCount < count) {\r\n topStack = stack;\r\n topCount = count;\r\n }\r\n }\r\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\r\n console.warn(topStack);\r\n }\r\n return () => {\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count - 1);\r\n };\r\n }\r\n}\r\n/**\r\n * The Emitter can be used to expose an Event to the public\r\n * to fire it from the insides.\r\n * Sample:\r\n class Document {\r\n\r\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\r\n\r\n public onDidChange = this._onDidChange.event;\r\n\r\n // getter-style\r\n // get onDidChange(): Event<(value:string)=>any> {\r\n // \treturn this._onDidChange.event;\r\n // }\r\n\r\n private _doIt() {\r\n //...\r\n this._onDidChange.fire(value);\r\n }\r\n }\r\n */\r\nexport class Emitter {\r\n constructor(options) {\r\n this._disposed = false;\r\n this._options = options;\r\n this._leakageMon = _globalLeakWarningThreshold > 0\r\n ? new LeakageMonitor(this._options && this._options.leakWarningThreshold)\r\n : undefined;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n if (!this._listeners) {\r\n this._listeners = new LinkedList();\r\n }\r\n const firstListener = this._listeners.isEmpty();\r\n if (firstListener && this._options && this._options.onFirstListenerAdd) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);\r\n if (firstListener && this._options && this._options.onFirstListenerDidAdd) {\r\n this._options.onFirstListenerDidAdd(this);\r\n }\r\n if (this._options && this._options.onListenerDidAdd) {\r\n this._options.onListenerDidAdd(this, listener, thisArgs);\r\n }\r\n // check and record this emitter for potential leakage\r\n let removeMonitor;\r\n if (this._leakageMon) {\r\n removeMonitor = this._leakageMon.check(this._listeners.size);\r\n }\r\n let result;\r\n result = {\r\n dispose: () => {\r\n if (removeMonitor) {\r\n removeMonitor();\r\n }\r\n result.dispose = Emitter._noop;\r\n if (!this._disposed) {\r\n remove();\r\n if (this._options && this._options.onLastListenerRemove) {\r\n const hasListeners = (this._listeners && !this._listeners.isEmpty());\r\n if (!hasListeners) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n if (disposables instanceof DisposableStore) {\r\n disposables.add(result);\r\n }\r\n else if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n if (this._listeners) {\r\n // put all [listener,event]-pairs into delivery queue\r\n // then emit all event. an inner/nested event might be\r\n // the driver of this\r\n if (!this._deliveryQueue) {\r\n this._deliveryQueue = new LinkedList();\r\n }\r\n for (let listener of this._listeners) {\r\n this._deliveryQueue.push([listener, event]);\r\n }\r\n while (this._deliveryQueue.size > 0) {\r\n const [listener, event] = this._deliveryQueue.shift();\r\n try {\r\n if (typeof listener === 'function') {\r\n listener.call(undefined, event);\r\n }\r\n else {\r\n listener[0].call(listener[1], event);\r\n }\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n }\r\n }\r\n dispose() {\r\n if (this._listeners) {\r\n this._listeners.clear();\r\n }\r\n if (this._deliveryQueue) {\r\n this._deliveryQueue.clear();\r\n }\r\n if (this._leakageMon) {\r\n this._leakageMon.dispose();\r\n }\r\n this._disposed = true;\r\n }\r\n}\r\nEmitter._noop = function () { };\r\nexport class PauseableEmitter extends Emitter {\r\n constructor(options) {\r\n super(options);\r\n this._isPaused = 0;\r\n this._eventQueue = new LinkedList();\r\n this._mergeFn = options && options.merge;\r\n }\r\n pause() {\r\n this._isPaused++;\r\n }\r\n resume() {\r\n if (this._isPaused !== 0 && --this._isPaused === 0) {\r\n if (this._mergeFn) {\r\n // use the merge function to create a single composite\r\n // event. make a copy in case firing pauses this emitter\r\n const events = this._eventQueue.toArray();\r\n this._eventQueue.clear();\r\n super.fire(this._mergeFn(events));\r\n }\r\n else {\r\n // no merging, fire each event individually and test\r\n // that this emitter isn't paused halfway through\r\n while (!this._isPaused && this._eventQueue.size !== 0) {\r\n super.fire(this._eventQueue.shift());\r\n }\r\n }\r\n }\r\n }\r\n fire(event) {\r\n if (this._listeners) {\r\n if (this._isPaused !== 0) {\r\n this._eventQueue.push(event);\r\n }\r\n else {\r\n super.fire(event);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The EventBufferer is useful in situations in which you want\r\n * to delay firing your events during some code.\r\n * You can wrap that code and be sure that the event will not\r\n * be fired during that wrap.\r\n *\r\n * ```\r\n * const emitter: Emitter;\r\n * const delayer = new EventDelayer();\r\n * const delayedEvent = delayer.wrapEvent(emitter.event);\r\n *\r\n * delayedEvent(console.log);\r\n *\r\n * delayer.bufferEvents(() => {\r\n * emitter.fire(); // event will not be fired yet\r\n * });\r\n *\r\n * // event will only be fired at this point\r\n * ```\r\n */\r\nexport class EventBufferer {\r\n constructor() {\r\n this.buffers = [];\r\n }\r\n wrapEvent(event) {\r\n return (listener, thisArgs, disposables) => {\r\n return event(i => {\r\n const buffer = this.buffers[this.buffers.length - 1];\r\n if (buffer) {\r\n buffer.push(() => listener.call(thisArgs, i));\r\n }\r\n else {\r\n listener.call(thisArgs, i);\r\n }\r\n }, undefined, disposables);\r\n };\r\n }\r\n bufferEvents(fn) {\r\n const buffer = [];\r\n this.buffers.push(buffer);\r\n const r = fn();\r\n this.buffers.pop();\r\n buffer.forEach(flush => flush());\r\n return r;\r\n }\r\n}\r\n/**\r\n * A Relay is an event forwarder which functions as a replugabble event pipe.\r\n * Once created, you can connect an input event to it and it will simply forward\r\n * events from that input event through its own `event` property. The `input`\r\n * can be changed at any point in time.\r\n */\r\nexport class Relay {\r\n constructor() {\r\n this.listening = false;\r\n this.inputEvent = Event.None;\r\n this.inputEventListener = Disposable.None;\r\n this.emitter = new Emitter({\r\n onFirstListenerDidAdd: () => {\r\n this.listening = true;\r\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\r\n },\r\n onLastListenerRemove: () => {\r\n this.listening = false;\r\n this.inputEventListener.dispose();\r\n }\r\n });\r\n this.event = this.emitter.event;\r\n }\r\n set input(event) {\r\n this.inputEvent = event;\r\n if (this.listening) {\r\n this.inputEventListener.dispose();\r\n this.inputEventListener = event(this.emitter.fire, this.emitter);\r\n }\r\n }\r\n dispose() {\r\n this.inputEventListener.dispose();\r\n this.emitter.dispose();\r\n }\r\n}\r\n","import { startsWithIgnoreCase } from './strings.js';\r\nimport { sep, posix } from './path.js';\r\n/**\r\n * Takes a Windows OS path and changes backward slashes to forward slashes.\r\n * This should only be done for OS paths from Windows (or user provided paths potentially from Windows).\r\n * Using it on a Linux or MaxOS path might change it.\r\n */\r\nexport function toSlashes(osPath) {\r\n return osPath.replace(/[\\\\/]/g, posix.sep);\r\n}\r\nexport function isEqualOrParent(path, candidate, ignoreCase, separator = sep) {\r\n if (path === candidate) {\r\n return true;\r\n }\r\n if (!path || !candidate) {\r\n return false;\r\n }\r\n if (candidate.length > path.length) {\r\n return false;\r\n }\r\n if (ignoreCase) {\r\n const beginsWith = startsWithIgnoreCase(path, candidate);\r\n if (!beginsWith) {\r\n return false;\r\n }\r\n if (candidate.length === path.length) {\r\n return true; // same path, different casing\r\n }\r\n let sepOffset = candidate.length;\r\n if (candidate.charAt(candidate.length - 1) === separator) {\r\n sepOffset--; // adjust the expected sep offset in case our candidate already ends in separator character\r\n }\r\n return path.charAt(sepOffset) === separator;\r\n }\r\n if (candidate.charAt(candidate.length - 1) !== separator) {\r\n candidate += separator;\r\n }\r\n return path.indexOf(candidate) === 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LRUCache } from './map.js';\r\nimport * as strings from './strings.js';\r\n// Combined filters\r\n/**\r\n * @returns A filter which combines the provided set\r\n * of filters with an or. The *first* filters that\r\n * matches defined the return value of the returned\r\n * filter.\r\n */\r\nexport function or(...filter) {\r\n return function (word, wordToMatchAgainst) {\r\n for (let i = 0, len = filter.length; i < len; i++) {\r\n const match = filter[i](word, wordToMatchAgainst);\r\n if (match) {\r\n return match;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\nexport const matchesPrefix = _matchesPrefix.bind(undefined, true);\r\nfunction _matchesPrefix(ignoreCase, word, wordToMatchAgainst) {\r\n if (!wordToMatchAgainst || wordToMatchAgainst.length < word.length) {\r\n return null;\r\n }\r\n let matches;\r\n if (ignoreCase) {\r\n matches = strings.startsWithIgnoreCase(wordToMatchAgainst, word);\r\n }\r\n else {\r\n matches = wordToMatchAgainst.indexOf(word) === 0;\r\n }\r\n if (!matches) {\r\n return null;\r\n }\r\n return word.length > 0 ? [{ start: 0, end: word.length }] : [];\r\n}\r\n// Contiguous Substring\r\nexport function matchesContiguousSubString(word, wordToMatchAgainst) {\r\n const index = wordToMatchAgainst.toLowerCase().indexOf(word.toLowerCase());\r\n if (index === -1) {\r\n return null;\r\n }\r\n return [{ start: index, end: index + word.length }];\r\n}\r\n// Substring\r\nexport function matchesSubString(word, wordToMatchAgainst) {\r\n return _matchesSubString(word.toLowerCase(), wordToMatchAgainst.toLowerCase(), 0, 0);\r\n}\r\nfunction _matchesSubString(word, wordToMatchAgainst, i, j) {\r\n if (i === word.length) {\r\n return [];\r\n }\r\n else if (j === wordToMatchAgainst.length) {\r\n return null;\r\n }\r\n else {\r\n if (word[i] === wordToMatchAgainst[j]) {\r\n let result = null;\r\n if (result = _matchesSubString(word, wordToMatchAgainst, i + 1, j + 1)) {\r\n return join({ start: j, end: j + 1 }, result);\r\n }\r\n return null;\r\n }\r\n return _matchesSubString(word, wordToMatchAgainst, i, j + 1);\r\n }\r\n}\r\n// CamelCase\r\nfunction isLower(code) {\r\n return 97 /* a */ <= code && code <= 122 /* z */;\r\n}\r\nexport function isUpper(code) {\r\n return 65 /* A */ <= code && code <= 90 /* Z */;\r\n}\r\nfunction isNumber(code) {\r\n return 48 /* Digit0 */ <= code && code <= 57 /* Digit9 */;\r\n}\r\nfunction isWhitespace(code) {\r\n return (code === 32 /* Space */\r\n || code === 9 /* Tab */\r\n || code === 10 /* LineFeed */\r\n || code === 13 /* CarriageReturn */);\r\n}\r\nconst wordSeparators = new Set();\r\n'`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?'\r\n .split('')\r\n .forEach(s => wordSeparators.add(s.charCodeAt(0)));\r\nfunction isWordSeparator(code) {\r\n return isWhitespace(code) || wordSeparators.has(code);\r\n}\r\nfunction charactersMatch(codeA, codeB) {\r\n return (codeA === codeB) || (isWordSeparator(codeA) && isWordSeparator(codeB));\r\n}\r\nfunction isAlphanumeric(code) {\r\n return isLower(code) || isUpper(code) || isNumber(code);\r\n}\r\nfunction join(head, tail) {\r\n if (tail.length === 0) {\r\n tail = [head];\r\n }\r\n else if (head.end === tail[0].start) {\r\n tail[0].start = head.start;\r\n }\r\n else {\r\n tail.unshift(head);\r\n }\r\n return tail;\r\n}\r\nfunction nextAnchor(camelCaseWord, start) {\r\n for (let i = start; i < camelCaseWord.length; i++) {\r\n const c = camelCaseWord.charCodeAt(i);\r\n if (isUpper(c) || isNumber(c) || (i > 0 && !isAlphanumeric(camelCaseWord.charCodeAt(i - 1)))) {\r\n return i;\r\n }\r\n }\r\n return camelCaseWord.length;\r\n}\r\nfunction _matchesCamelCase(word, camelCaseWord, i, j) {\r\n if (i === word.length) {\r\n return [];\r\n }\r\n else if (j === camelCaseWord.length) {\r\n return null;\r\n }\r\n else if (word[i] !== camelCaseWord[j].toLowerCase()) {\r\n return null;\r\n }\r\n else {\r\n let result = null;\r\n let nextUpperIndex = j + 1;\r\n result = _matchesCamelCase(word, camelCaseWord, i + 1, j + 1);\r\n while (!result && (nextUpperIndex = nextAnchor(camelCaseWord, nextUpperIndex)) < camelCaseWord.length) {\r\n result = _matchesCamelCase(word, camelCaseWord, i + 1, nextUpperIndex);\r\n nextUpperIndex++;\r\n }\r\n return result === null ? null : join({ start: j, end: j + 1 }, result);\r\n }\r\n}\r\n// Heuristic to avoid computing camel case matcher for words that don't\r\n// look like camelCaseWords.\r\nfunction analyzeCamelCaseWord(word) {\r\n let upper = 0, lower = 0, alpha = 0, numeric = 0, code = 0;\r\n for (let i = 0; i < word.length; i++) {\r\n code = word.charCodeAt(i);\r\n if (isUpper(code)) {\r\n upper++;\r\n }\r\n if (isLower(code)) {\r\n lower++;\r\n }\r\n if (isAlphanumeric(code)) {\r\n alpha++;\r\n }\r\n if (isNumber(code)) {\r\n numeric++;\r\n }\r\n }\r\n const upperPercent = upper / word.length;\r\n const lowerPercent = lower / word.length;\r\n const alphaPercent = alpha / word.length;\r\n const numericPercent = numeric / word.length;\r\n return { upperPercent, lowerPercent, alphaPercent, numericPercent };\r\n}\r\nfunction isUpperCaseWord(analysis) {\r\n const { upperPercent, lowerPercent } = analysis;\r\n return lowerPercent === 0 && upperPercent > 0.6;\r\n}\r\nfunction isCamelCaseWord(analysis) {\r\n const { upperPercent, lowerPercent, alphaPercent, numericPercent } = analysis;\r\n return lowerPercent > 0.2 && upperPercent < 0.8 && alphaPercent > 0.6 && numericPercent < 0.2;\r\n}\r\n// Heuristic to avoid computing camel case matcher for words that don't\r\n// look like camel case patterns.\r\nfunction isCamelCasePattern(word) {\r\n let upper = 0, lower = 0, code = 0, whitespace = 0;\r\n for (let i = 0; i < word.length; i++) {\r\n code = word.charCodeAt(i);\r\n if (isUpper(code)) {\r\n upper++;\r\n }\r\n if (isLower(code)) {\r\n lower++;\r\n }\r\n if (isWhitespace(code)) {\r\n whitespace++;\r\n }\r\n }\r\n if ((upper === 0 || lower === 0) && whitespace === 0) {\r\n return word.length <= 30;\r\n }\r\n else {\r\n return upper <= 5;\r\n }\r\n}\r\nexport function matchesCamelCase(word, camelCaseWord) {\r\n if (!camelCaseWord) {\r\n return null;\r\n }\r\n camelCaseWord = camelCaseWord.trim();\r\n if (camelCaseWord.length === 0) {\r\n return null;\r\n }\r\n if (!isCamelCasePattern(word)) {\r\n return null;\r\n }\r\n if (camelCaseWord.length > 60) {\r\n return null;\r\n }\r\n const analysis = analyzeCamelCaseWord(camelCaseWord);\r\n if (!isCamelCaseWord(analysis)) {\r\n if (!isUpperCaseWord(analysis)) {\r\n return null;\r\n }\r\n camelCaseWord = camelCaseWord.toLowerCase();\r\n }\r\n let result = null;\r\n let i = 0;\r\n word = word.toLowerCase();\r\n while (i < camelCaseWord.length && (result = _matchesCamelCase(word, camelCaseWord, 0, i)) === null) {\r\n i = nextAnchor(camelCaseWord, i + 1);\r\n }\r\n return result;\r\n}\r\n// Matches beginning of words supporting non-ASCII languages\r\n// If `contiguous` is true then matches word with beginnings of the words in the target. E.g. \"pul\" will match \"Git: Pull\"\r\n// Otherwise also matches sub string of the word with beginnings of the words in the target. E.g. \"gp\" or \"g p\" will match \"Git: Pull\"\r\n// Useful in cases where the target is words (e.g. command labels)\r\nexport function matchesWords(word, target, contiguous = false) {\r\n if (!target || target.length === 0) {\r\n return null;\r\n }\r\n let result = null;\r\n let i = 0;\r\n word = word.toLowerCase();\r\n target = target.toLowerCase();\r\n while (i < target.length && (result = _matchesWords(word, target, 0, i, contiguous)) === null) {\r\n i = nextWord(target, i + 1);\r\n }\r\n return result;\r\n}\r\nfunction _matchesWords(word, target, i, j, contiguous) {\r\n if (i === word.length) {\r\n return [];\r\n }\r\n else if (j === target.length) {\r\n return null;\r\n }\r\n else if (!charactersMatch(word.charCodeAt(i), target.charCodeAt(j))) {\r\n return null;\r\n }\r\n else {\r\n let result = null;\r\n let nextWordIndex = j + 1;\r\n result = _matchesWords(word, target, i + 1, j + 1, contiguous);\r\n if (!contiguous) {\r\n while (!result && (nextWordIndex = nextWord(target, nextWordIndex)) < target.length) {\r\n result = _matchesWords(word, target, i + 1, nextWordIndex, contiguous);\r\n nextWordIndex++;\r\n }\r\n }\r\n return result === null ? null : join({ start: j, end: j + 1 }, result);\r\n }\r\n}\r\nfunction nextWord(word, start) {\r\n for (let i = start; i < word.length; i++) {\r\n if (isWordSeparator(word.charCodeAt(i)) ||\r\n (i > 0 && isWordSeparator(word.charCodeAt(i - 1)))) {\r\n return i;\r\n }\r\n }\r\n return word.length;\r\n}\r\n// Fuzzy\r\nconst fuzzyContiguousFilter = or(matchesPrefix, matchesCamelCase, matchesContiguousSubString);\r\nconst fuzzySeparateFilter = or(matchesPrefix, matchesCamelCase, matchesSubString);\r\nconst fuzzyRegExpCache = new LRUCache(10000); // bounded to 10000 elements\r\nexport function matchesFuzzy(word, wordToMatchAgainst, enableSeparateSubstringMatching = false) {\r\n if (typeof word !== 'string' || typeof wordToMatchAgainst !== 'string') {\r\n return null; // return early for invalid input\r\n }\r\n // Form RegExp for wildcard matches\r\n let regexp = fuzzyRegExpCache.get(word);\r\n if (!regexp) {\r\n regexp = new RegExp(strings.convertSimple2RegExpPattern(word), 'i');\r\n fuzzyRegExpCache.set(word, regexp);\r\n }\r\n // RegExp Filter\r\n const match = regexp.exec(wordToMatchAgainst);\r\n if (match) {\r\n return [{ start: match.index, end: match.index + match[0].length }];\r\n }\r\n // Default Filter\r\n return enableSeparateSubstringMatching ? fuzzySeparateFilter(word, wordToMatchAgainst) : fuzzyContiguousFilter(word, wordToMatchAgainst);\r\n}\r\nexport function anyScore(pattern, lowPattern, _patternPos, word, lowWord, _wordPos) {\r\n const result = fuzzyScore(pattern, lowPattern, 0, word, lowWord, 0, true);\r\n if (result) {\r\n return result;\r\n }\r\n let matches = 0;\r\n let score = 0;\r\n let idx = _wordPos;\r\n for (let patternPos = 0; patternPos < lowPattern.length && patternPos < _maxLen; ++patternPos) {\r\n const wordPos = lowWord.indexOf(lowPattern.charAt(patternPos), idx);\r\n if (wordPos >= 0) {\r\n score += 1;\r\n matches += Math.pow(2, wordPos);\r\n idx = wordPos + 1;\r\n }\r\n else if (matches !== 0) {\r\n // once we have started matching things\r\n // we need to match the remaining pattern\r\n // characters\r\n break;\r\n }\r\n }\r\n return [score, matches, _wordPos];\r\n}\r\n//#region --- fuzzyScore ---\r\nexport function createMatches(score) {\r\n if (typeof score === 'undefined') {\r\n return [];\r\n }\r\n const matches = score[1].toString(2);\r\n const wordStart = score[2];\r\n const res = [];\r\n for (let pos = wordStart; pos < _maxLen; pos++) {\r\n if (matches[matches.length - (pos + 1)] === '1') {\r\n const last = res[res.length - 1];\r\n if (last && last.end === pos) {\r\n last.end = pos + 1;\r\n }\r\n else {\r\n res.push({ start: pos, end: pos + 1 });\r\n }\r\n }\r\n }\r\n return res;\r\n}\r\nconst _maxLen = 128;\r\nfunction initTable() {\r\n const table = [];\r\n const row = [0];\r\n for (let i = 1; i <= _maxLen; i++) {\r\n row.push(-i);\r\n }\r\n for (let i = 0; i <= _maxLen; i++) {\r\n const thisRow = row.slice(0);\r\n thisRow[0] = -i;\r\n table.push(thisRow);\r\n }\r\n return table;\r\n}\r\nconst _table = initTable();\r\nconst _scores = initTable();\r\nconst _arrows = initTable();\r\nconst _debug = false;\r\nfunction printTable(table, pattern, patternLen, word, wordLen) {\r\n function pad(s, n, pad = ' ') {\r\n while (s.length < n) {\r\n s = pad + s;\r\n }\r\n return s;\r\n }\r\n let ret = ` | |${word.split('').map(c => pad(c, 3)).join('|')}\\n`;\r\n for (let i = 0; i <= patternLen; i++) {\r\n if (i === 0) {\r\n ret += ' |';\r\n }\r\n else {\r\n ret += `${pattern[i - 1]}|`;\r\n }\r\n ret += table[i].slice(0, wordLen + 1).map(n => pad(n.toString(), 3)).join('|') + '\\n';\r\n }\r\n return ret;\r\n}\r\nfunction printTables(pattern, patternStart, word, wordStart) {\r\n pattern = pattern.substr(patternStart);\r\n word = word.substr(wordStart);\r\n console.log(printTable(_table, pattern, pattern.length, word, word.length));\r\n console.log(printTable(_arrows, pattern, pattern.length, word, word.length));\r\n console.log(printTable(_scores, pattern, pattern.length, word, word.length));\r\n}\r\nfunction isSeparatorAtPos(value, index) {\r\n if (index < 0 || index >= value.length) {\r\n return false;\r\n }\r\n const code = value.charCodeAt(index);\r\n switch (code) {\r\n case 95 /* Underline */:\r\n case 45 /* Dash */:\r\n case 46 /* Period */:\r\n case 32 /* Space */:\r\n case 47 /* Slash */:\r\n case 92 /* Backslash */:\r\n case 39 /* SingleQuote */:\r\n case 34 /* DoubleQuote */:\r\n case 58 /* Colon */:\r\n case 36 /* DollarSign */:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction isWhitespaceAtPos(value, index) {\r\n if (index < 0 || index >= value.length) {\r\n return false;\r\n }\r\n const code = value.charCodeAt(index);\r\n switch (code) {\r\n case 32 /* Space */:\r\n case 9 /* Tab */:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction isUpperCaseAtPos(pos, word, wordLow) {\r\n return word[pos] !== wordLow[pos];\r\n}\r\nexport function isPatternInWord(patternLow, patternPos, patternLen, wordLow, wordPos, wordLen) {\r\n while (patternPos < patternLen && wordPos < wordLen) {\r\n if (patternLow[patternPos] === wordLow[wordPos]) {\r\n patternPos += 1;\r\n }\r\n wordPos += 1;\r\n }\r\n return patternPos === patternLen; // pattern must be exhausted\r\n}\r\nexport var FuzzyScore;\r\n(function (FuzzyScore) {\r\n /**\r\n * No matches and value `-100`\r\n */\r\n FuzzyScore.Default = Object.freeze([-100, 0, 0]);\r\n function isDefault(score) {\r\n return !score || (score[0] === -100 && score[1] === 0 && score[2] === 0);\r\n }\r\n FuzzyScore.isDefault = isDefault;\r\n})(FuzzyScore || (FuzzyScore = {}));\r\nexport function fuzzyScore(pattern, patternLow, patternStart, word, wordLow, wordStart, firstMatchCanBeWeak) {\r\n const patternLen = pattern.length > _maxLen ? _maxLen : pattern.length;\r\n const wordLen = word.length > _maxLen ? _maxLen : word.length;\r\n if (patternStart >= patternLen || wordStart >= wordLen || (patternLen - patternStart) > (wordLen - wordStart)) {\r\n return undefined;\r\n }\r\n // Run a simple check if the characters of pattern occur\r\n // (in order) at all in word. If that isn't the case we\r\n // stop because no match will be possible\r\n if (!isPatternInWord(patternLow, patternStart, patternLen, wordLow, wordStart, wordLen)) {\r\n return undefined;\r\n }\r\n let row = 1;\r\n let column = 1;\r\n let patternPos = patternStart;\r\n let wordPos = wordStart;\r\n let hasStrongFirstMatch = false;\r\n // There will be a match, fill in tables\r\n for (row = 1, patternPos = patternStart; patternPos < patternLen; row++, patternPos++) {\r\n for (column = 1, wordPos = wordStart; wordPos < wordLen; column++, wordPos++) {\r\n const score = _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos);\r\n if (patternPos === patternStart && score > 1) {\r\n hasStrongFirstMatch = true;\r\n }\r\n _scores[row][column] = score;\r\n const diag = _table[row - 1][column - 1] + (score > 1 ? 1 : score);\r\n const top = _table[row - 1][column] + -1;\r\n const left = _table[row][column - 1] + -1;\r\n if (left >= top) {\r\n // left or diag\r\n if (left > diag) {\r\n _table[row][column] = left;\r\n _arrows[row][column] = 4 /* Left */;\r\n }\r\n else if (left === diag) {\r\n _table[row][column] = left;\r\n _arrows[row][column] = 4 /* Left */ | 2 /* Diag */;\r\n }\r\n else {\r\n _table[row][column] = diag;\r\n _arrows[row][column] = 2 /* Diag */;\r\n }\r\n }\r\n else {\r\n // top or diag\r\n if (top > diag) {\r\n _table[row][column] = top;\r\n _arrows[row][column] = 1 /* Top */;\r\n }\r\n else if (top === diag) {\r\n _table[row][column] = top;\r\n _arrows[row][column] = 1 /* Top */ | 2 /* Diag */;\r\n }\r\n else {\r\n _table[row][column] = diag;\r\n _arrows[row][column] = 2 /* Diag */;\r\n }\r\n }\r\n }\r\n }\r\n if (_debug) {\r\n printTables(pattern, patternStart, word, wordStart);\r\n }\r\n if (!hasStrongFirstMatch && !firstMatchCanBeWeak) {\r\n return undefined;\r\n }\r\n _matchesCount = 0;\r\n _topScore = -100;\r\n _wordStart = wordStart;\r\n _firstMatchCanBeWeak = firstMatchCanBeWeak;\r\n _findAllMatches2(row - 1, column - 1, patternLen === wordLen ? 1 : 0, 0, false);\r\n if (_matchesCount === 0) {\r\n return undefined;\r\n }\r\n return [_topScore, _topMatch2, wordStart];\r\n}\r\nfunction _doScore(pattern, patternLow, patternPos, patternStart, word, wordLow, wordPos) {\r\n if (patternLow[patternPos] !== wordLow[wordPos]) {\r\n return -1;\r\n }\r\n if (wordPos === (patternPos - patternStart)) {\r\n // common prefix: `foobar <-> foobaz`\r\n // ^^^^^\r\n if (pattern[patternPos] === word[wordPos]) {\r\n return 7;\r\n }\r\n else {\r\n return 5;\r\n }\r\n }\r\n else if (isUpperCaseAtPos(wordPos, word, wordLow) && (wordPos === 0 || !isUpperCaseAtPos(wordPos - 1, word, wordLow))) {\r\n // hitting upper-case: `foo <-> forOthers`\r\n // ^^ ^\r\n if (pattern[patternPos] === word[wordPos]) {\r\n return 7;\r\n }\r\n else {\r\n return 5;\r\n }\r\n }\r\n else if (isSeparatorAtPos(wordLow, wordPos) && (wordPos === 0 || !isSeparatorAtPos(wordLow, wordPos - 1))) {\r\n // hitting a separator: `. <-> foo.bar`\r\n // ^\r\n return 5;\r\n }\r\n else if (isSeparatorAtPos(wordLow, wordPos - 1) || isWhitespaceAtPos(wordLow, wordPos - 1)) {\r\n // post separator: `foo <-> bar_foo`\r\n // ^^^\r\n return 5;\r\n }\r\n else {\r\n return 1;\r\n }\r\n}\r\nlet _matchesCount = 0;\r\nlet _topMatch2 = 0;\r\nlet _topScore = 0;\r\nlet _wordStart = 0;\r\nlet _firstMatchCanBeWeak = false;\r\nfunction _findAllMatches2(row, column, total, matches, lastMatched) {\r\n if (_matchesCount >= 10 || total < -25) {\r\n // stop when having already 10 results, or\r\n // when a potential alignment as already 5 gaps\r\n return;\r\n }\r\n let simpleMatchCount = 0;\r\n while (row > 0 && column > 0) {\r\n const score = _scores[row][column];\r\n const arrow = _arrows[row][column];\r\n if (arrow === 4 /* Left */) {\r\n // left -> no match, skip a word character\r\n column -= 1;\r\n if (lastMatched) {\r\n total -= 5; // new gap penalty\r\n }\r\n else if (matches !== 0) {\r\n total -= 1; // gap penalty after first match\r\n }\r\n lastMatched = false;\r\n simpleMatchCount = 0;\r\n }\r\n else if (arrow & 2 /* Diag */) {\r\n if (arrow & 4 /* Left */) {\r\n // left\r\n _findAllMatches2(row, column - 1, matches !== 0 ? total - 1 : total, // gap penalty after first match\r\n matches, lastMatched);\r\n }\r\n // diag\r\n total += score;\r\n row -= 1;\r\n column -= 1;\r\n lastMatched = true;\r\n // match -> set a 1 at the word pos\r\n matches += Math.pow(2, (column + _wordStart));\r\n // count simple matches and boost a row of\r\n // simple matches when they yield in a\r\n // strong match.\r\n if (score === 1) {\r\n simpleMatchCount += 1;\r\n if (row === 0 && !_firstMatchCanBeWeak) {\r\n // when the first match is a weak\r\n // match we discard it\r\n return undefined;\r\n }\r\n }\r\n else {\r\n // boost\r\n total += 1 + (simpleMatchCount * (score - 1));\r\n simpleMatchCount = 0;\r\n }\r\n }\r\n else {\r\n return undefined;\r\n }\r\n }\r\n total -= column >= 3 ? 9 : column * 3; // late start penalty\r\n // dynamically keep track of the current top score\r\n // and insert the current best score at head, the rest at tail\r\n _matchesCount += 1;\r\n if (total > _topScore) {\r\n _topScore = total;\r\n _topMatch2 = matches;\r\n }\r\n}\r\n//#endregion\r\n//#region --- graceful ---\r\nexport function fuzzyScoreGracefulAggressive(pattern, lowPattern, patternPos, word, lowWord, wordPos, firstMatchCanBeWeak) {\r\n return fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, true, firstMatchCanBeWeak);\r\n}\r\nfunction fuzzyScoreWithPermutations(pattern, lowPattern, patternPos, word, lowWord, wordPos, aggressive, firstMatchCanBeWeak) {\r\n let top = fuzzyScore(pattern, lowPattern, patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\r\n if (top && !aggressive) {\r\n // when using the original pattern yield a result we`\r\n // return it unless we are aggressive and try to find\r\n // a better alignment, e.g. `cno` -> `^co^ns^ole` or `^c^o^nsole`.\r\n return top;\r\n }\r\n if (pattern.length >= 3) {\r\n // When the pattern is long enough then try a few (max 7)\r\n // permutations of the pattern to find a better match. The\r\n // permutations only swap neighbouring characters, e.g\r\n // `cnoso` becomes `conso`, `cnsoo`, `cnoos`.\r\n const tries = Math.min(7, pattern.length - 1);\r\n for (let movingPatternPos = patternPos + 1; movingPatternPos < tries; movingPatternPos++) {\r\n const newPattern = nextTypoPermutation(pattern, movingPatternPos);\r\n if (newPattern) {\r\n const candidate = fuzzyScore(newPattern, newPattern.toLowerCase(), patternPos, word, lowWord, wordPos, firstMatchCanBeWeak);\r\n if (candidate) {\r\n candidate[0] -= 3; // permutation penalty\r\n if (!top || candidate[0] > top[0]) {\r\n top = candidate;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return top;\r\n}\r\nfunction nextTypoPermutation(pattern, patternPos) {\r\n if (patternPos + 1 >= pattern.length) {\r\n return undefined;\r\n }\r\n const swap1 = pattern[patternPos];\r\n const swap2 = pattern[patternPos + 1];\r\n if (swap1 === swap2) {\r\n return undefined;\r\n }\r\n return pattern.slice(0, patternPos)\r\n + swap2\r\n + swap1\r\n + pattern.slice(patternPos + 2);\r\n}\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function once(fn) {\r\n const _this = this;\r\n let didCall = false;\r\n let result;\r\n return function () {\r\n if (didCall) {\r\n return result;\r\n }\r\n didCall = true;\r\n result = fn.apply(_this, arguments);\r\n return result;\r\n };\r\n}\r\n","import { fuzzyScore, createMatches as createFuzzyMatches } from './filters.js';\r\nimport { sep } from './path.js';\r\nimport { isWindows } from './platform.js';\r\nimport { stripWildcards } from './strings.js';\r\nconst NO_SCORE2 = [undefined, []];\r\nexport function scoreFuzzy2(target, query, patternStart = 0, wordStart = 0) {\r\n // Score: multiple inputs\r\n const preparedQuery = query;\r\n if (preparedQuery.values && preparedQuery.values.length > 1) {\r\n return doScoreFuzzy2Multiple(target, preparedQuery.values, patternStart, wordStart);\r\n }\r\n // Score: single input\r\n return doScoreFuzzy2Single(target, query, patternStart, wordStart);\r\n}\r\nfunction doScoreFuzzy2Multiple(target, query, patternStart, wordStart) {\r\n let totalScore = 0;\r\n const totalMatches = [];\r\n for (const queryPiece of query) {\r\n const [score, matches] = doScoreFuzzy2Single(target, queryPiece, patternStart, wordStart);\r\n if (typeof score !== 'number') {\r\n // if a single query value does not match, return with\r\n // no score entirely, we require all queries to match\r\n return NO_SCORE2;\r\n }\r\n totalScore += score;\r\n totalMatches.push(...matches);\r\n }\r\n // if we have a score, ensure that the positions are\r\n // sorted in ascending order and distinct\r\n return [totalScore, normalizeMatches(totalMatches)];\r\n}\r\nfunction doScoreFuzzy2Single(target, query, patternStart, wordStart) {\r\n const score = fuzzyScore(query.original, query.originalLowercase, patternStart, target, target.toLowerCase(), wordStart, true);\r\n if (!score) {\r\n return NO_SCORE2;\r\n }\r\n return [score[0], createFuzzyMatches(score)];\r\n}\r\nfunction normalizeMatches(matches) {\r\n // sort matches by start to be able to normalize\r\n const sortedMatches = matches.sort((matchA, matchB) => {\r\n return matchA.start - matchB.start;\r\n });\r\n // merge matches that overlap\r\n const normalizedMatches = [];\r\n let currentMatch = undefined;\r\n for (const match of sortedMatches) {\r\n // if we have no current match or the matches\r\n // do not overlap, we take it as is and remember\r\n // it for future merging\r\n if (!currentMatch || !matchOverlaps(currentMatch, match)) {\r\n currentMatch = match;\r\n normalizedMatches.push(match);\r\n }\r\n // otherwise we merge the matches\r\n else {\r\n currentMatch.start = Math.min(currentMatch.start, match.start);\r\n currentMatch.end = Math.max(currentMatch.end, match.end);\r\n }\r\n }\r\n return normalizedMatches;\r\n}\r\nfunction matchOverlaps(matchA, matchB) {\r\n if (matchA.end < matchB.start) {\r\n return false; // A ends before B starts\r\n }\r\n if (matchB.end < matchA.start) {\r\n return false; // B ends before A starts\r\n }\r\n return true;\r\n}\r\n/**\r\n * Helper function to prepare a search value for scoring by removing unwanted characters\r\n * and allowing to score on multiple pieces separated by whitespace character.\r\n */\r\nconst MULTIPLE_QUERY_VALUES_SEPARATOR = ' ';\r\nexport function prepareQuery(original) {\r\n if (typeof original !== 'string') {\r\n original = '';\r\n }\r\n const originalLowercase = original.toLowerCase();\r\n const { pathNormalized, normalized, normalizedLowercase } = normalizeQuery(original);\r\n const containsPathSeparator = pathNormalized.indexOf(sep) >= 0;\r\n let values = undefined;\r\n const originalSplit = original.split(MULTIPLE_QUERY_VALUES_SEPARATOR);\r\n if (originalSplit.length > 1) {\r\n for (const originalPiece of originalSplit) {\r\n const { pathNormalized: pathNormalizedPiece, normalized: normalizedPiece, normalizedLowercase: normalizedLowercasePiece } = normalizeQuery(originalPiece);\r\n if (normalizedPiece) {\r\n if (!values) {\r\n values = [];\r\n }\r\n values.push({\r\n original: originalPiece,\r\n originalLowercase: originalPiece.toLowerCase(),\r\n pathNormalized: pathNormalizedPiece,\r\n normalized: normalizedPiece,\r\n normalizedLowercase: normalizedLowercasePiece\r\n });\r\n }\r\n }\r\n }\r\n return { original, originalLowercase, pathNormalized, normalized, normalizedLowercase, values, containsPathSeparator };\r\n}\r\nfunction normalizeQuery(original) {\r\n let pathNormalized;\r\n if (isWindows) {\r\n pathNormalized = original.replace(/\\//g, sep); // Help Windows users to search for paths when using slash\r\n }\r\n else {\r\n pathNormalized = original.replace(/\\\\/g, sep); // Help macOS/Linux users to search for paths when using backslash\r\n }\r\n const normalized = stripWildcards(pathNormalized).replace(/\\s/g, '');\r\n return {\r\n pathNormalized,\r\n normalized,\r\n normalizedLowercase: normalized.toLowerCase()\r\n };\r\n}\r\nexport function pieceToQuery(arg1) {\r\n if (Array.isArray(arg1)) {\r\n return prepareQuery(arg1.map(piece => piece.original).join(MULTIPLE_QUERY_VALUES_SEPARATOR));\r\n }\r\n return prepareQuery(arg1.original);\r\n}\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from './arrays.js';\r\nimport * as strings from './strings.js';\r\nimport * as extpath from './extpath.js';\r\nimport * as paths from './path.js';\r\nimport { LRUCache } from './map.js';\r\nimport { isThenable } from './async.js';\r\nconst GLOBSTAR = '**';\r\nconst GLOB_SPLIT = '/';\r\nconst PATH_REGEX = '[/\\\\\\\\]'; // any slash or backslash\r\nconst NO_PATH_REGEX = '[^/\\\\\\\\]'; // any non-slash and non-backslash\r\nconst ALL_FORWARD_SLASHES = /\\//g;\r\nfunction starsToRegExp(starCount) {\r\n switch (starCount) {\r\n case 0:\r\n return '';\r\n case 1:\r\n return `${NO_PATH_REGEX}*?`; // 1 star matches any number of characters except path separator (/ and \\) - non greedy (?)\r\n default:\r\n // Matches: (Path Sep OR Path Val followed by Path Sep OR Path Sep followed by Path Val) 0-many times\r\n // Group is non capturing because we don't need to capture at all (?:...)\r\n // Overall we use non-greedy matching because it could be that we match too much\r\n return `(?:${PATH_REGEX}|${NO_PATH_REGEX}+${PATH_REGEX}|${PATH_REGEX}${NO_PATH_REGEX}+)*?`;\r\n }\r\n}\r\nexport function splitGlobAware(pattern, splitChar) {\r\n if (!pattern) {\r\n return [];\r\n }\r\n const segments = [];\r\n let inBraces = false;\r\n let inBrackets = false;\r\n let curVal = '';\r\n for (const char of pattern) {\r\n switch (char) {\r\n case splitChar:\r\n if (!inBraces && !inBrackets) {\r\n segments.push(curVal);\r\n curVal = '';\r\n continue;\r\n }\r\n break;\r\n case '{':\r\n inBraces = true;\r\n break;\r\n case '}':\r\n inBraces = false;\r\n break;\r\n case '[':\r\n inBrackets = true;\r\n break;\r\n case ']':\r\n inBrackets = false;\r\n break;\r\n }\r\n curVal += char;\r\n }\r\n // Tail\r\n if (curVal) {\r\n segments.push(curVal);\r\n }\r\n return segments;\r\n}\r\nfunction parseRegExp(pattern) {\r\n if (!pattern) {\r\n return '';\r\n }\r\n let regEx = '';\r\n // Split up into segments for each slash found\r\n const segments = splitGlobAware(pattern, GLOB_SPLIT);\r\n // Special case where we only have globstars\r\n if (segments.every(s => s === GLOBSTAR)) {\r\n regEx = '.*';\r\n }\r\n // Build regex over segments\r\n else {\r\n let previousSegmentWasGlobStar = false;\r\n segments.forEach((segment, index) => {\r\n // Globstar is special\r\n if (segment === GLOBSTAR) {\r\n // if we have more than one globstar after another, just ignore it\r\n if (!previousSegmentWasGlobStar) {\r\n regEx += starsToRegExp(2);\r\n previousSegmentWasGlobStar = true;\r\n }\r\n return;\r\n }\r\n // States\r\n let inBraces = false;\r\n let braceVal = '';\r\n let inBrackets = false;\r\n let bracketVal = '';\r\n for (const char of segment) {\r\n // Support brace expansion\r\n if (char !== '}' && inBraces) {\r\n braceVal += char;\r\n continue;\r\n }\r\n // Support brackets\r\n if (inBrackets && (char !== ']' || !bracketVal) /* ] is literally only allowed as first character in brackets to match it */) {\r\n let res;\r\n // range operator\r\n if (char === '-') {\r\n res = char;\r\n }\r\n // negation operator (only valid on first index in bracket)\r\n else if ((char === '^' || char === '!') && !bracketVal) {\r\n res = '^';\r\n }\r\n // glob split matching is not allowed within character ranges\r\n // see http://man7.org/linux/man-pages/man7/glob.7.html\r\n else if (char === GLOB_SPLIT) {\r\n res = '';\r\n }\r\n // anything else gets escaped\r\n else {\r\n res = strings.escapeRegExpCharacters(char);\r\n }\r\n bracketVal += res;\r\n continue;\r\n }\r\n switch (char) {\r\n case '{':\r\n inBraces = true;\r\n continue;\r\n case '[':\r\n inBrackets = true;\r\n continue;\r\n case '}':\r\n const choices = splitGlobAware(braceVal, ',');\r\n // Converts {foo,bar} => [foo|bar]\r\n const braceRegExp = `(?:${choices.map(c => parseRegExp(c)).join('|')})`;\r\n regEx += braceRegExp;\r\n inBraces = false;\r\n braceVal = '';\r\n break;\r\n case ']':\r\n regEx += ('[' + bracketVal + ']');\r\n inBrackets = false;\r\n bracketVal = '';\r\n break;\r\n case '?':\r\n regEx += NO_PATH_REGEX; // 1 ? matches any single character except path separator (/ and \\)\r\n continue;\r\n case '*':\r\n regEx += starsToRegExp(1);\r\n continue;\r\n default:\r\n regEx += strings.escapeRegExpCharacters(char);\r\n }\r\n }\r\n // Tail: Add the slash we had split on if there is more to come and the remaining pattern is not a globstar\r\n // For example if pattern: some/**/*.js we want the \"/\" after some to be included in the RegEx to prevent\r\n // a folder called \"something\" to match as well.\r\n // However, if pattern: some/**, we tolerate that we also match on \"something\" because our globstar behaviour\r\n // is to match 0-N segments.\r\n if (index < segments.length - 1 && (segments[index + 1] !== GLOBSTAR || index + 2 < segments.length)) {\r\n regEx += PATH_REGEX;\r\n }\r\n // reset state\r\n previousSegmentWasGlobStar = false;\r\n });\r\n }\r\n return regEx;\r\n}\r\n// regexes to check for trival glob patterns that just check for String#endsWith\r\nconst T1 = /^\\*\\*\\/\\*\\.[\\w\\.-]+$/; // **/*.something\r\nconst T2 = /^\\*\\*\\/([\\w\\.-]+)\\/?$/; // **/something\r\nconst T3 = /^{\\*\\*\\/[\\*\\.]?[\\w\\.-]+\\/?(,\\*\\*\\/[\\*\\.]?[\\w\\.-]+\\/?)*}$/; // {**/*.something,**/*.else} or {**/package.json,**/project.json}\r\nconst T3_2 = /^{\\*\\*\\/[\\*\\.]?[\\w\\.-]+(\\/(\\*\\*)?)?(,\\*\\*\\/[\\*\\.]?[\\w\\.-]+(\\/(\\*\\*)?)?)*}$/; // Like T3, with optional trailing /**\r\nconst T4 = /^\\*\\*((\\/[\\w\\.-]+)+)\\/?$/; // **/something/else\r\nconst T5 = /^([\\w\\.-]+(\\/[\\w\\.-]+)*)\\/?$/; // something/else\r\nconst CACHE = new LRUCache(10000); // bounded to 10000 elements\r\nconst FALSE = function () {\r\n return false;\r\n};\r\nconst NULL = function () {\r\n return null;\r\n};\r\nfunction parsePattern(arg1, options) {\r\n if (!arg1) {\r\n return NULL;\r\n }\r\n // Handle IRelativePattern\r\n let pattern;\r\n if (typeof arg1 !== 'string') {\r\n pattern = arg1.pattern;\r\n }\r\n else {\r\n pattern = arg1;\r\n }\r\n // Whitespace trimming\r\n pattern = pattern.trim();\r\n // Check cache\r\n const patternKey = `${pattern}_${!!options.trimForExclusions}`;\r\n let parsedPattern = CACHE.get(patternKey);\r\n if (parsedPattern) {\r\n return wrapRelativePattern(parsedPattern, arg1);\r\n }\r\n // Check for Trivias\r\n let match;\r\n if (T1.test(pattern)) { // common pattern: **/*.txt just need endsWith check\r\n const base = pattern.substr(4); // '**/*'.length === 4\r\n parsedPattern = function (path, basename) {\r\n return typeof path === 'string' && path.endsWith(base) ? pattern : null;\r\n };\r\n }\r\n else if (match = T2.exec(trimForExclusions(pattern, options))) { // common pattern: **/some.txt just need basename check\r\n parsedPattern = trivia2(match[1], pattern);\r\n }\r\n else if ((options.trimForExclusions ? T3_2 : T3).test(pattern)) { // repetition of common patterns (see above) {**/*.txt,**/*.png}\r\n parsedPattern = trivia3(pattern, options);\r\n }\r\n else if (match = T4.exec(trimForExclusions(pattern, options))) { // common pattern: **/something/else just need endsWith check\r\n parsedPattern = trivia4and5(match[1].substr(1), pattern, true);\r\n }\r\n else if (match = T5.exec(trimForExclusions(pattern, options))) { // common pattern: something/else just need equals check\r\n parsedPattern = trivia4and5(match[1], pattern, false);\r\n }\r\n // Otherwise convert to pattern\r\n else {\r\n parsedPattern = toRegExp(pattern);\r\n }\r\n // Cache\r\n CACHE.set(patternKey, parsedPattern);\r\n return wrapRelativePattern(parsedPattern, arg1);\r\n}\r\nfunction wrapRelativePattern(parsedPattern, arg2) {\r\n if (typeof arg2 === 'string') {\r\n return parsedPattern;\r\n }\r\n return function (path, basename) {\r\n if (!extpath.isEqualOrParent(path, arg2.base)) {\r\n return null;\r\n }\r\n return parsedPattern(paths.relative(arg2.base, path), basename);\r\n };\r\n}\r\nfunction trimForExclusions(pattern, options) {\r\n return options.trimForExclusions && pattern.endsWith('/**') ? pattern.substr(0, pattern.length - 2) : pattern; // dropping **, tailing / is dropped later\r\n}\r\n// common pattern: **/some.txt just need basename check\r\nfunction trivia2(base, originalPattern) {\r\n const slashBase = `/${base}`;\r\n const backslashBase = `\\\\${base}`;\r\n const parsedPattern = function (path, basename) {\r\n if (typeof path !== 'string') {\r\n return null;\r\n }\r\n if (basename) {\r\n return basename === base ? originalPattern : null;\r\n }\r\n return path === base || path.endsWith(slashBase) || path.endsWith(backslashBase) ? originalPattern : null;\r\n };\r\n const basenames = [base];\r\n parsedPattern.basenames = basenames;\r\n parsedPattern.patterns = [originalPattern];\r\n parsedPattern.allBasenames = basenames;\r\n return parsedPattern;\r\n}\r\n// repetition of common patterns (see above) {**/*.txt,**/*.png}\r\nfunction trivia3(pattern, options) {\r\n const parsedPatterns = aggregateBasenameMatches(pattern.slice(1, -1).split(',')\r\n .map(pattern => parsePattern(pattern, options))\r\n .filter(pattern => pattern !== NULL), pattern);\r\n const n = parsedPatterns.length;\r\n if (!n) {\r\n return NULL;\r\n }\r\n if (n === 1) {\r\n return parsedPatterns[0];\r\n }\r\n const parsedPattern = function (path, basename) {\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n if (parsedPatterns[i](path, basename)) {\r\n return pattern;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = arrays.first(parsedPatterns, pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n parsedPattern.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n parsedPattern.allPaths = allPaths;\r\n }\r\n return parsedPattern;\r\n}\r\n// common patterns: **/something/else just need endsWith check, something/else just needs and equals check\r\nfunction trivia4and5(path, pattern, matchPathEnds) {\r\n const nativePath = paths.sep !== paths.posix.sep ? path.replace(ALL_FORWARD_SLASHES, paths.sep) : path;\r\n const nativePathEnd = paths.sep + nativePath;\r\n const parsedPattern = matchPathEnds ? function (path, basename) {\r\n return typeof path === 'string' && (path === nativePath || path.endsWith(nativePathEnd)) ? pattern : null;\r\n } : function (path, basename) {\r\n return typeof path === 'string' && path === nativePath ? pattern : null;\r\n };\r\n parsedPattern.allPaths = [(matchPathEnds ? '*/' : './') + path];\r\n return parsedPattern;\r\n}\r\nfunction toRegExp(pattern) {\r\n try {\r\n const regExp = new RegExp(`^${parseRegExp(pattern)}$`);\r\n return function (path) {\r\n regExp.lastIndex = 0; // reset RegExp to its initial state to reuse it!\r\n return typeof path === 'string' && regExp.test(path) ? pattern : null;\r\n };\r\n }\r\n catch (error) {\r\n return NULL;\r\n }\r\n}\r\nexport function match(arg1, path, hasSibling) {\r\n if (!arg1 || typeof path !== 'string') {\r\n return false;\r\n }\r\n return parse(arg1)(path, undefined, hasSibling);\r\n}\r\nexport function parse(arg1, options = {}) {\r\n if (!arg1) {\r\n return FALSE;\r\n }\r\n // Glob with String\r\n if (typeof arg1 === 'string' || isRelativePattern(arg1)) {\r\n const parsedPattern = parsePattern(arg1, options);\r\n if (parsedPattern === NULL) {\r\n return FALSE;\r\n }\r\n const resultPattern = function (path, basename) {\r\n return !!parsedPattern(path, basename);\r\n };\r\n if (parsedPattern.allBasenames) {\r\n resultPattern.allBasenames = parsedPattern.allBasenames;\r\n }\r\n if (parsedPattern.allPaths) {\r\n resultPattern.allPaths = parsedPattern.allPaths;\r\n }\r\n return resultPattern;\r\n }\r\n // Glob with Expression\r\n return parsedExpression(arg1, options);\r\n}\r\nexport function isRelativePattern(obj) {\r\n const rp = obj;\r\n return rp && typeof rp.base === 'string' && typeof rp.pattern === 'string';\r\n}\r\nfunction parsedExpression(expression, options) {\r\n const parsedPatterns = aggregateBasenameMatches(Object.getOwnPropertyNames(expression)\r\n .map(pattern => parseExpressionPattern(pattern, expression[pattern], options))\r\n .filter(pattern => pattern !== NULL));\r\n const n = parsedPatterns.length;\r\n if (!n) {\r\n return NULL;\r\n }\r\n if (!parsedPatterns.some(parsedPattern => !!parsedPattern.requiresSiblings)) {\r\n if (n === 1) {\r\n return parsedPatterns[0];\r\n }\r\n const resultExpression = function (path, basename) {\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n // Pattern matches path\r\n const result = parsedPatterns[i](path, basename);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = arrays.first(parsedPatterns, pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n resultExpression.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n resultExpression.allPaths = allPaths;\r\n }\r\n return resultExpression;\r\n }\r\n const resultExpression = function (path, basename, hasSibling) {\r\n let name = undefined;\r\n for (let i = 0, n = parsedPatterns.length; i < n; i++) {\r\n // Pattern matches path\r\n const parsedPattern = parsedPatterns[i];\r\n if (parsedPattern.requiresSiblings && hasSibling) {\r\n if (!basename) {\r\n basename = paths.basename(path);\r\n }\r\n if (!name) {\r\n name = basename.substr(0, basename.length - paths.extname(path).length);\r\n }\r\n }\r\n const result = parsedPattern(path, basename, name, hasSibling);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return null;\r\n };\r\n const withBasenames = arrays.first(parsedPatterns, pattern => !!pattern.allBasenames);\r\n if (withBasenames) {\r\n resultExpression.allBasenames = withBasenames.allBasenames;\r\n }\r\n const allPaths = parsedPatterns.reduce((all, current) => current.allPaths ? all.concat(current.allPaths) : all, []);\r\n if (allPaths.length) {\r\n resultExpression.allPaths = allPaths;\r\n }\r\n return resultExpression;\r\n}\r\nfunction parseExpressionPattern(pattern, value, options) {\r\n if (value === false) {\r\n return NULL; // pattern is disabled\r\n }\r\n const parsedPattern = parsePattern(pattern, options);\r\n if (parsedPattern === NULL) {\r\n return NULL;\r\n }\r\n // Expression Pattern is <boolean>\r\n if (typeof value === 'boolean') {\r\n return parsedPattern;\r\n }\r\n // Expression Pattern is <SiblingClause>\r\n if (value) {\r\n const when = value.when;\r\n if (typeof when === 'string') {\r\n const result = (path, basename, name, hasSibling) => {\r\n if (!hasSibling || !parsedPattern(path, basename)) {\r\n return null;\r\n }\r\n const clausePattern = when.replace('$(basename)', name);\r\n const matched = hasSibling(clausePattern);\r\n return isThenable(matched) ?\r\n matched.then(m => m ? pattern : null) :\r\n matched ? pattern : null;\r\n };\r\n result.requiresSiblings = true;\r\n return result;\r\n }\r\n }\r\n // Expression is Anything\r\n return parsedPattern;\r\n}\r\nfunction aggregateBasenameMatches(parsedPatterns, result) {\r\n const basenamePatterns = parsedPatterns.filter(parsedPattern => !!parsedPattern.basenames);\r\n if (basenamePatterns.length < 2) {\r\n return parsedPatterns;\r\n }\r\n const basenames = basenamePatterns.reduce((all, current) => {\r\n const basenames = current.basenames;\r\n return basenames ? all.concat(basenames) : all;\r\n }, []);\r\n let patterns;\r\n if (result) {\r\n patterns = [];\r\n for (let i = 0, n = basenames.length; i < n; i++) {\r\n patterns.push(result);\r\n }\r\n }\r\n else {\r\n patterns = basenamePatterns.reduce((all, current) => {\r\n const patterns = current.patterns;\r\n return patterns ? all.concat(patterns) : all;\r\n }, []);\r\n }\r\n const aggregate = function (path, basename) {\r\n if (typeof path !== 'string') {\r\n return null;\r\n }\r\n if (!basename) {\r\n let i;\r\n for (i = path.length; i > 0; i--) {\r\n const ch = path.charCodeAt(i - 1);\r\n if (ch === 47 /* Slash */ || ch === 92 /* Backslash */) {\r\n break;\r\n }\r\n }\r\n basename = path.substr(i);\r\n }\r\n const index = basenames.indexOf(basename);\r\n return index !== -1 ? patterns[index] : null;\r\n };\r\n aggregate.basenames = basenames;\r\n aggregate.patterns = patterns;\r\n aggregate.allBasenames = basenames;\r\n const aggregatedPatterns = parsedPatterns.filter(parsedPattern => !parsedPattern.basenames);\r\n aggregatedPatterns.push(aggregate);\r\n return aggregatedPatterns;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\n/**\r\n * Return a hash value for an object.\r\n */\r\nexport function hash(obj) {\r\n return doHash(obj, 0);\r\n}\r\nexport function doHash(obj, hashVal) {\r\n switch (typeof obj) {\r\n case 'object':\r\n if (obj === null) {\r\n return numberHash(349, hashVal);\r\n }\r\n else if (Array.isArray(obj)) {\r\n return arrayHash(obj, hashVal);\r\n }\r\n return objectHash(obj, hashVal);\r\n case 'string':\r\n return stringHash(obj, hashVal);\r\n case 'boolean':\r\n return booleanHash(obj, hashVal);\r\n case 'number':\r\n return numberHash(obj, hashVal);\r\n case 'undefined':\r\n return numberHash(937, hashVal);\r\n default:\r\n return numberHash(617, hashVal);\r\n }\r\n}\r\nfunction numberHash(val, initialHashVal) {\r\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\r\n}\r\nfunction booleanHash(b, initialHashVal) {\r\n return numberHash(b ? 433 : 863, initialHashVal);\r\n}\r\nexport function stringHash(s, hashVal) {\r\n hashVal = numberHash(149417, hashVal);\r\n for (let i = 0, length = s.length; i < length; i++) {\r\n hashVal = numberHash(s.charCodeAt(i), hashVal);\r\n }\r\n return hashVal;\r\n}\r\nfunction arrayHash(arr, initialHashVal) {\r\n initialHashVal = numberHash(104579, initialHashVal);\r\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\r\n}\r\nfunction objectHash(obj, initialHashVal) {\r\n initialHashVal = numberHash(181387, initialHashVal);\r\n return Object.keys(obj).sort().reduce((hashVal, key) => {\r\n hashVal = stringHash(key, hashVal);\r\n return doHash(obj[key], hashVal);\r\n }, initialHashVal);\r\n}\r\nfunction leftRotate(value, bits, totalBits = 32) {\r\n // delta + bits = totalBits\r\n const delta = totalBits - bits;\r\n // All ones, expect `delta` zeros aligned to the right\r\n const mask = ~((1 << delta) - 1);\r\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\r\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\r\n}\r\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\r\n for (let i = 0; i < count; i++) {\r\n dest[index + i] = value;\r\n }\r\n}\r\nfunction leftPad(value, length, char = '0') {\r\n while (value.length < length) {\r\n value = char + value;\r\n }\r\n return value;\r\n}\r\nfunction toHexString(value, bitsize = 32) {\r\n return leftPad((value >>> 0).toString(16), bitsize / 4);\r\n}\r\n/**\r\n * A SHA1 implementation that works with strings and does not allocate.\r\n */\r\nexport class StringSHA1 {\r\n constructor() {\r\n this._h0 = 0x67452301;\r\n this._h1 = 0xEFCDAB89;\r\n this._h2 = 0x98BADCFE;\r\n this._h3 = 0x10325476;\r\n this._h4 = 0xC3D2E1F0;\r\n this._buff = new Uint8Array(64 /* BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\r\n this._buffDV = new DataView(this._buff.buffer);\r\n this._buffLen = 0;\r\n this._totalLen = 0;\r\n this._leftoverHighSurrogate = 0;\r\n this._finished = false;\r\n }\r\n update(str) {\r\n const strLen = str.length;\r\n if (strLen === 0) {\r\n return;\r\n }\r\n const buff = this._buff;\r\n let buffLen = this._buffLen;\r\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\r\n let charCode;\r\n let offset;\r\n if (leftoverHighSurrogate !== 0) {\r\n charCode = leftoverHighSurrogate;\r\n offset = -1;\r\n leftoverHighSurrogate = 0;\r\n }\r\n else {\r\n charCode = str.charCodeAt(0);\r\n offset = 0;\r\n }\r\n while (true) {\r\n let codePoint = charCode;\r\n if (strings.isHighSurrogate(charCode)) {\r\n if (offset + 1 < strLen) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (strings.isLowSurrogate(nextCharCode)) {\r\n offset++;\r\n codePoint = strings.computeCodePoint(charCode, nextCharCode);\r\n }\r\n else {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n }\r\n else {\r\n // last character is a surrogate pair\r\n leftoverHighSurrogate = charCode;\r\n break;\r\n }\r\n }\r\n else if (strings.isLowSurrogate(charCode)) {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n buffLen = this._push(buff, buffLen, codePoint);\r\n offset++;\r\n if (offset < strLen) {\r\n charCode = str.charCodeAt(offset);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this._buffLen = buffLen;\r\n this._leftoverHighSurrogate = leftoverHighSurrogate;\r\n }\r\n _push(buff, buffLen, codePoint) {\r\n if (codePoint < 0x0080) {\r\n buff[buffLen++] = codePoint;\r\n }\r\n else if (codePoint < 0x0800) {\r\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else if (codePoint < 0x10000) {\r\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else {\r\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n if (buffLen >= 64 /* BLOCK_SIZE */) {\r\n this._step();\r\n buffLen -= 64 /* BLOCK_SIZE */;\r\n this._totalLen += 64 /* BLOCK_SIZE */;\r\n // take last 3 in case of UTF8 overflow\r\n buff[0] = buff[64 /* BLOCK_SIZE */ + 0];\r\n buff[1] = buff[64 /* BLOCK_SIZE */ + 1];\r\n buff[2] = buff[64 /* BLOCK_SIZE */ + 2];\r\n }\r\n return buffLen;\r\n }\r\n digest() {\r\n if (!this._finished) {\r\n this._finished = true;\r\n if (this._leftoverHighSurrogate) {\r\n // illegal => unicode replacement character\r\n this._leftoverHighSurrogate = 0;\r\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */);\r\n }\r\n this._totalLen += this._buffLen;\r\n this._wrapUp();\r\n }\r\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\r\n }\r\n _wrapUp() {\r\n this._buff[this._buffLen++] = 0x80;\r\n fill(this._buff, this._buffLen);\r\n if (this._buffLen > 56) {\r\n this._step();\r\n fill(this._buff);\r\n }\r\n // this will fit because the mantissa can cover up to 52 bits\r\n const ml = 8 * this._totalLen;\r\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\r\n this._buffDV.setUint32(60, ml % 4294967296, false);\r\n this._step();\r\n }\r\n _step() {\r\n const bigBlock32 = StringSHA1._bigBlock32;\r\n const data = this._buffDV;\r\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\r\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\r\n }\r\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\r\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\r\n }\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f, k;\r\n let temp;\r\n for (let j = 0; j < 80; j++) {\r\n if (j < 20) {\r\n f = (b & c) | ((~b) & d);\r\n k = 0x5A827999;\r\n }\r\n else if (j < 40) {\r\n f = b ^ c ^ d;\r\n k = 0x6ED9EBA1;\r\n }\r\n else if (j < 60) {\r\n f = (b & c) | (b & d) | (c & d);\r\n k = 0x8F1BBCDC;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xCA62C1D6;\r\n }\r\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = leftRotate(b, 30);\r\n b = a;\r\n a = temp;\r\n }\r\n this._h0 = (this._h0 + a) & 0xffffffff;\r\n this._h1 = (this._h1 + b) & 0xffffffff;\r\n this._h2 = (this._h2 + c) & 0xffffffff;\r\n this._h3 = (this._h3 + d) & 0xffffffff;\r\n this._h4 = (this._h4 + e) & 0xffffffff;\r\n }\r\n}\r\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ArrayNavigator } from './navigator.js';\r\nexport class HistoryNavigator {\r\n constructor(history = [], limit = 10) {\r\n this._initialize(history);\r\n this._limit = limit;\r\n this._onChange();\r\n }\r\n add(t) {\r\n this._history.delete(t);\r\n this._history.add(t);\r\n this._onChange();\r\n }\r\n next() {\r\n if (this._currentPosition() !== this._elements.length - 1) {\r\n return this._navigator.next();\r\n }\r\n return null;\r\n }\r\n previous() {\r\n if (this._currentPosition() !== 0) {\r\n return this._navigator.previous();\r\n }\r\n return null;\r\n }\r\n current() {\r\n return this._navigator.current();\r\n }\r\n first() {\r\n return this._navigator.first();\r\n }\r\n last() {\r\n return this._navigator.last();\r\n }\r\n has(t) {\r\n return this._history.has(t);\r\n }\r\n _onChange() {\r\n this._reduceToLimit();\r\n const elements = this._elements;\r\n this._navigator = new ArrayNavigator(elements, 0, elements.length, elements.length);\r\n }\r\n _reduceToLimit() {\r\n const data = this._elements;\r\n if (data.length > this._limit) {\r\n this._initialize(data.slice(data.length - this._limit));\r\n }\r\n }\r\n _currentPosition() {\r\n const currentElement = this._navigator.current();\r\n if (!currentElement) {\r\n return -1;\r\n }\r\n return this._elements.indexOf(currentElement);\r\n }\r\n _initialize(history) {\r\n this._history = new Set();\r\n for (const entry of history) {\r\n this._history.add(entry);\r\n }\r\n }\r\n get _elements() {\r\n const elements = [];\r\n this._history.forEach(e => elements.push(e));\r\n return elements;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { equals } from './arrays.js';\r\nimport { escapeCodicons } from './codicons.js';\r\nimport { illegalArgument } from './errors.js';\r\nexport class MarkdownString {\r\n constructor(_value = '', isTrustedOrOptions = false) {\r\n var _a, _b;\r\n this._value = _value;\r\n if (typeof this._value !== 'string') {\r\n throw illegalArgument('value');\r\n }\r\n if (typeof isTrustedOrOptions === 'boolean') {\r\n this._isTrusted = isTrustedOrOptions;\r\n this._supportThemeIcons = false;\r\n }\r\n else {\r\n this._isTrusted = (_a = isTrustedOrOptions.isTrusted) !== null && _a !== void 0 ? _a : false;\r\n this._supportThemeIcons = (_b = isTrustedOrOptions.supportThemeIcons) !== null && _b !== void 0 ? _b : false;\r\n }\r\n }\r\n get value() { return this._value; }\r\n get isTrusted() { return this._isTrusted; }\r\n get supportThemeIcons() { return this._supportThemeIcons; }\r\n appendText(value) {\r\n // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\r\n this._value += (this._supportThemeIcons ? escapeCodicons(value) : value)\r\n .replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&')\r\n .replace(/\\n/g, '\\n\\n');\r\n return this;\r\n }\r\n appendMarkdown(value) {\r\n this._value += value;\r\n return this;\r\n }\r\n appendCodeblock(langId, code) {\r\n this._value += '\\n```';\r\n this._value += langId;\r\n this._value += '\\n';\r\n this._value += code;\r\n this._value += '\\n```\\n';\r\n return this;\r\n }\r\n}\r\nexport function isEmptyMarkdownString(oneOrMany) {\r\n if (isMarkdownString(oneOrMany)) {\r\n return !oneOrMany.value;\r\n }\r\n else if (Array.isArray(oneOrMany)) {\r\n return oneOrMany.every(isEmptyMarkdownString);\r\n }\r\n else {\r\n return true;\r\n }\r\n}\r\nexport function isMarkdownString(thing) {\r\n if (thing instanceof MarkdownString) {\r\n return true;\r\n }\r\n else if (thing && typeof thing === 'object') {\r\n return typeof thing.value === 'string'\r\n && (typeof thing.isTrusted === 'boolean' || thing.isTrusted === undefined)\r\n && (typeof thing.supportThemeIcons === 'boolean' || thing.supportThemeIcons === undefined);\r\n }\r\n return false;\r\n}\r\nexport function markedStringsEquals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n else if (!a || !b) {\r\n return false;\r\n }\r\n else if (Array.isArray(a) && Array.isArray(b)) {\r\n return equals(a, b, markdownStringEqual);\r\n }\r\n else if (isMarkdownString(a) && isMarkdownString(b)) {\r\n return markdownStringEqual(a, b);\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nfunction markdownStringEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n else if (!a || !b) {\r\n return false;\r\n }\r\n else {\r\n return a.value === b.value && a.isTrusted === b.isTrusted && a.supportThemeIcons === b.supportThemeIcons;\r\n }\r\n}\r\nexport function removeMarkdownEscapes(text) {\r\n if (!text) {\r\n return text;\r\n }\r\n return text.replace(/\\\\([\\\\`*_{}[\\]()#+\\-.!])/g, '$1');\r\n}\r\nexport function parseHrefAndDimensions(href) {\r\n const dimensions = [];\r\n const splitted = href.split('|').map(s => s.trim());\r\n href = splitted[0];\r\n const parameters = splitted[1];\r\n if (parameters) {\r\n const heightFromParams = /height=(\\d+)/.exec(parameters);\r\n const widthFromParams = /width=(\\d+)/.exec(parameters);\r\n const height = heightFromParams ? heightFromParams[1] : '';\r\n const width = widthFromParams ? widthFromParams[1] : '';\r\n const widthIsFinite = isFinite(parseInt(width));\r\n const heightIsFinite = isFinite(parseInt(height));\r\n if (widthIsFinite) {\r\n dimensions.push(`width=\"${width}\"`);\r\n }\r\n if (heightIsFinite) {\r\n dimensions.push(`height=\"${height}\"`);\r\n }\r\n }\r\n return { href, dimensions };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class IdGenerator {\r\n constructor(prefix) {\r\n this._prefix = prefix;\r\n this._lastId = 0;\r\n }\r\n nextId() {\r\n return this._prefix + (++this._lastId);\r\n }\r\n}\r\nexport const defaultGenerator = new IdGenerator('id#');\r\n","/*\nThe MIT License (MIT)\n\nCopyright © 2015 Nicolas Bevacqua\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nlet __insane_func;\n\n(function () { function r(e, n, t) { function o(i, f) { if (!n[i]) { if (!e[i]) { var c = \"function\" == typeof require && require; if (!f && c) return c(i, !0); if (u) return u(i, !0); var a = new Error(\"Cannot find module '\" + i + \"'\"); throw a.code = \"MODULE_NOT_FOUND\", a } var p = n[i] = { exports: {} }; e[i][0].call(p.exports, function (r) { var n = e[i][1][r]; return o(n || r) }, p, p.exports, r, e, n, t) } return n[i].exports } for (var u = \"function\" == typeof require && require, i = 0; i < t.length; i++)o(t[i]); return o } return r })()({\n\t1: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar toMap = require('./toMap');\n\t\tvar uris = ['background', 'base', 'cite', 'href', 'longdesc', 'src', 'usemap'];\n\n\t\tmodule.exports = {\n\t\t\turis: toMap(uris) // attributes that have an href and hence need to be sanitized\n\t\t};\n\n\t}, { \"./toMap\": 10 }], 2: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar defaults = {\n\t\t\tallowedAttributes: {\n\t\t\t\t'*': ['title', 'accesskey'],\n\t\t\t\ta: ['href', 'name', 'target', 'aria-label'],\n\t\t\t\tiframe: ['allowfullscreen', 'frameborder', 'src'],\n\t\t\t\timg: ['src', 'alt', 'title', 'aria-label']\n\t\t\t},\n\t\t\tallowedClasses: {},\n\t\t\tallowedSchemes: ['http', 'https', 'mailto'],\n\t\t\tallowedTags: [\n\t\t\t\t'a', 'abbr', 'article', 'b', 'blockquote', 'br', 'caption', 'code', 'del', 'details', 'div', 'em',\n\t\t\t\t'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'ins', 'kbd', 'li', 'main', 'mark',\n\t\t\t\t'ol', 'p', 'pre', 'section', 'span', 'strike', 'strong', 'sub', 'summary', 'sup', 'table',\n\t\t\t\t'tbody', 'td', 'th', 'thead', 'tr', 'u', 'ul'\n\t\t\t],\n\t\t\tfilter: null\n\t\t};\n\n\t\tmodule.exports = defaults;\n\n\t}, {}], 3: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar toMap = require('./toMap');\n\t\tvar voids = ['area', 'br', 'col', 'hr', 'img', 'wbr', 'input', 'base', 'basefont', 'link', 'meta'];\n\n\t\tmodule.exports = {\n\t\t\tvoids: toMap(voids)\n\t\t};\n\n\t}, { \"./toMap\": 10 }], 4: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar he = require('he');\n\t\tvar assign = require('assignment');\n\t\tvar parser = require('./parser');\n\t\tvar sanitizer = require('./sanitizer');\n\t\tvar defaults = require('./defaults');\n\n\t\tfunction insane(html, options, strict) {\n\t\t\tvar buffer = [];\n\t\t\tvar configuration = strict === true ? options : assign({}, defaults, options);\n\t\t\tvar handler = sanitizer(buffer, configuration);\n\n\t\t\tparser(html, handler);\n\n\t\t\treturn buffer.join('');\n\t\t}\n\n\t\tinsane.defaults = defaults;\n\t\tmodule.exports = insane;\n\t\t__insane_func = insane;\n\n\t}, { \"./defaults\": 2, \"./parser\": 7, \"./sanitizer\": 8, \"assignment\": 6, \"he\": 9 }], 5: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tmodule.exports = function lowercase(string) {\n\t\t\treturn typeof string === 'string' ? string.toLowerCase() : string;\n\t\t};\n\n\t}, {}], 6: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tfunction assignment(result) {\n\t\t\tvar stack = Array.prototype.slice.call(arguments, 1);\n\t\t\tvar item;\n\t\t\tvar key;\n\t\t\twhile (stack.length) {\n\t\t\t\titem = stack.shift();\n\t\t\t\tfor (key in item) {\n\t\t\t\t\tif (item.hasOwnProperty(key)) {\n\t\t\t\t\t\tif (Object.prototype.toString.call(result[key]) === '[object Object]') {\n\t\t\t\t\t\t\tresult[key] = assignment(result[key], item[key]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult[key] = item[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tmodule.exports = assignment;\n\n\t}, {}], 7: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar he = require('he');\n\t\tvar lowercase = require('./lowercase');\n\t\tvar attributes = require('./attributes');\n\t\tvar elements = require('./elements');\n\t\tvar rstart = /^<\\s*([\\w:-]+)((?:\\s+[\\w:-]+(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)\\s*>/;\n\t\tvar rend = /^<\\s*\\/\\s*([\\w:-]+)[^>]*>/;\n\t\tvar rattrs = /([\\w:-]+)(?:\\s*=\\s*(?:(?:\"((?:[^\"])*)\")|(?:'((?:[^'])*)')|([^>\\s]+)))?/g;\n\t\tvar rtag = /^</;\n\t\tvar rtagend = /^<\\s*\\//;\n\n\t\tfunction createStack() {\n\t\t\tvar stack = [];\n\t\t\tstack.lastItem = function lastItem() {\n\t\t\t\treturn stack[stack.length - 1];\n\t\t\t};\n\t\t\treturn stack;\n\t\t}\n\n\t\tfunction parser(html, handler) {\n\t\t\tvar stack = createStack();\n\t\t\tvar last = html;\n\t\t\tvar chars;\n\n\t\t\twhile (html) {\n\t\t\t\tparsePart();\n\t\t\t}\n\t\t\tparseEndTag(); // clean up any remaining tags\n\n\t\t\tfunction parsePart() {\n\t\t\t\tchars = true;\n\t\t\t\tparseTag();\n\n\t\t\t\tvar same = html === last;\n\t\t\t\tlast = html;\n\n\t\t\t\tif (same) { // discard, because it's invalid\n\t\t\t\t\thtml = '';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseTag() {\n\t\t\t\tif (html.substr(0, 4) === '<!--') { // comments\n\t\t\t\t\tparseComment();\n\t\t\t\t} else if (rtagend.test(html)) {\n\t\t\t\t\tparseEdge(rend, parseEndTag);\n\t\t\t\t} else if (rtag.test(html)) {\n\t\t\t\t\tparseEdge(rstart, parseStartTag);\n\t\t\t\t}\n\t\t\t\tparseTagDecode();\n\t\t\t}\n\n\t\t\tfunction parseEdge(regex, parser) {\n\t\t\t\tvar match = html.match(regex);\n\t\t\t\tif (match) {\n\t\t\t\t\thtml = html.substring(match[0].length);\n\t\t\t\t\tmatch[0].replace(regex, parser);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseComment() {\n\t\t\t\tvar index = html.indexOf('-->');\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tif (handler.comment) {\n\t\t\t\t\t\thandler.comment(html.substring(4, index));\n\t\t\t\t\t}\n\t\t\t\t\thtml = html.substring(index + 3);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseTagDecode() {\n\t\t\t\tif (!chars) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar text;\n\t\t\t\tvar index = html.indexOf('<');\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\ttext = html.substring(0, index);\n\t\t\t\t\thtml = html.substring(index);\n\t\t\t\t} else {\n\t\t\t\t\ttext = html;\n\t\t\t\t\thtml = '';\n\t\t\t\t}\n\t\t\t\tif (handler.chars) {\n\t\t\t\t\thandler.chars(text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseStartTag(tag, tagName, rest, unary) {\n\t\t\t\tvar attrs = {};\n\t\t\t\tvar low = lowercase(tagName);\n\t\t\t\tvar u = elements.voids[low] || !!unary;\n\n\t\t\t\trest.replace(rattrs, attrReplacer);\n\n\t\t\t\tif (!u) {\n\t\t\t\t\tstack.push(low);\n\t\t\t\t}\n\t\t\t\tif (handler.start) {\n\t\t\t\t\thandler.start(low, attrs, u);\n\t\t\t\t}\n\n\t\t\t\tfunction attrReplacer(match, name, doubleQuotedValue, singleQuotedValue, unquotedValue) {\n\t\t\t\t\tif (doubleQuotedValue === void 0 && singleQuotedValue === void 0 && unquotedValue === void 0) {\n\t\t\t\t\t\tattrs[name] = void 0; // attribute is like <button disabled></button>\n\t\t\t\t\t} else {\n\t\t\t\t\t\tattrs[name] = he.decode(doubleQuotedValue || singleQuotedValue || unquotedValue || '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction parseEndTag(tag, tagName) {\n\t\t\t\tvar i;\n\t\t\t\tvar pos = 0;\n\t\t\t\tvar low = lowercase(tagName);\n\t\t\t\tif (low) {\n\t\t\t\t\tfor (pos = stack.length - 1; pos >= 0; pos--) {\n\t\t\t\t\t\tif (stack[pos] === low) {\n\t\t\t\t\t\t\tbreak; // find the closest opened tag of the same type\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pos >= 0) {\n\t\t\t\t\tfor (i = stack.length - 1; i >= pos; i--) {\n\t\t\t\t\t\tif (handler.end) { // close all the open elements, up the stack\n\t\t\t\t\t\t\thandler.end(stack[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstack.length = pos;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tmodule.exports = parser;\n\n\t}, { \"./attributes\": 1, \"./elements\": 3, \"./lowercase\": 5, \"he\": 9 }], 8: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar he = require('he');\n\t\tvar lowercase = require('./lowercase');\n\t\tvar attributes = require('./attributes');\n\t\tvar elements = require('./elements');\n\n\t\tfunction sanitizer(buffer, options) {\n\t\t\tvar last;\n\t\t\tvar context;\n\t\t\tvar o = options || {};\n\n\t\t\treset();\n\n\t\t\treturn {\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tchars: chars\n\t\t\t};\n\n\t\t\tfunction out(value) {\n\t\t\t\tbuffer.push(value);\n\t\t\t}\n\n\t\t\tfunction start(tag, attrs, unary) {\n\t\t\t\tvar low = lowercase(tag);\n\n\t\t\t\tif (context.ignoring) {\n\t\t\t\t\tignore(low); return;\n\t\t\t\t}\n\t\t\t\tif ((o.allowedTags || []).indexOf(low) === -1) {\n\t\t\t\t\tignore(low); return;\n\t\t\t\t}\n\t\t\t\tif (o.filter && !o.filter({ tag: low, attrs: attrs })) {\n\t\t\t\t\tignore(low); return;\n\t\t\t\t}\n\n\t\t\t\tout('<');\n\t\t\t\tout(low);\n\t\t\t\tObject.keys(attrs).forEach(parse);\n\t\t\t\tout(unary ? '/>' : '>');\n\n\t\t\t\tfunction parse(key) {\n\t\t\t\t\tvar value = attrs[key];\n\t\t\t\t\tvar classesOk = (o.allowedClasses || {})[low] || [];\n\t\t\t\t\tvar attrsOk = (o.allowedAttributes || {})[low] || [];\n\t\t\t\t\tattrsOk = attrsOk.concat((o.allowedAttributes || {})['*'] || []);\n\t\t\t\t\tvar valid;\n\t\t\t\t\tvar lkey = lowercase(key);\n\t\t\t\t\tif (lkey === 'class' && attrsOk.indexOf(lkey) === -1) {\n\t\t\t\t\t\tvalue = value.split(' ').filter(isValidClass).join(' ').trim();\n\t\t\t\t\t\tvalid = value.length;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalid = attrsOk.indexOf(lkey) !== -1 && (attributes.uris[lkey] !== true || testUrl(value));\n\t\t\t\t\t}\n\t\t\t\t\tif (valid) {\n\t\t\t\t\t\tout(' ');\n\t\t\t\t\t\tout(key);\n\t\t\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\t\tout('=\"');\n\t\t\t\t\t\t\tout(he.encode(value));\n\t\t\t\t\t\t\tout('\"');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfunction isValidClass(className) {\n\t\t\t\t\t\treturn classesOk && classesOk.indexOf(className) !== -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction end(tag) {\n\t\t\t\tvar low = lowercase(tag);\n\t\t\t\tvar allowed = (o.allowedTags || []).indexOf(low) !== -1;\n\t\t\t\tif (allowed) {\n\t\t\t\t\tif (context.ignoring === false) {\n\t\t\t\t\t\tout('</');\n\t\t\t\t\t\tout(low);\n\t\t\t\t\t\tout('>');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tunignore(low);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunignore(low);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction testUrl(text) {\n\t\t\t\tvar start = text[0];\n\t\t\t\tif (start === '#' || start === '/') {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar colon = text.indexOf(':');\n\t\t\t\tif (colon === -1) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar questionmark = text.indexOf('?');\n\t\t\t\tif (questionmark !== -1 && colon > questionmark) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tvar hash = text.indexOf('#');\n\t\t\t\tif (hash !== -1 && colon > hash) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn o.allowedSchemes.some(matches);\n\n\t\t\t\tfunction matches(scheme) {\n\t\t\t\t\treturn text.indexOf(scheme + ':') === 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction chars(text) {\n\t\t\t\tif (context.ignoring === false) {\n\t\t\t\t\tout(o.transformText ? o.transformText(text) : text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction ignore(tag) {\n\t\t\t\tif (elements.voids[tag]) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (context.ignoring === false) {\n\t\t\t\t\tcontext = { ignoring: tag, depth: 1 };\n\t\t\t\t} else if (context.ignoring === tag) {\n\t\t\t\t\tcontext.depth++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction unignore(tag) {\n\t\t\t\tif (context.ignoring === tag) {\n\t\t\t\t\tif (--context.depth <= 0) {\n\t\t\t\t\t\treset();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction reset() {\n\t\t\t\tcontext = { ignoring: false, depth: 0 };\n\t\t\t}\n\t\t}\n\n\t\tmodule.exports = sanitizer;\n\n\t}, { \"./attributes\": 1, \"./elements\": 3, \"./lowercase\": 5, \"he\": 9 }], 9: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tvar escapes = {\n\t\t\t'&': '&',\n\t\t\t'<': '<',\n\t\t\t'>': '>',\n\t\t\t'\"': '"',\n\t\t\t\"'\": '''\n\t\t};\n\t\tvar unescapes = {\n\t\t\t'&': '&',\n\t\t\t'<': '<',\n\t\t\t'>': '>',\n\t\t\t'"': '\"',\n\t\t\t''': \"'\"\n\t\t};\n\t\tvar rescaped = /(&|<|>|"|')/g;\n\t\tvar runescaped = /[&<>\"']/g;\n\n\t\tfunction escapeHtmlChar(match) {\n\t\t\treturn escapes[match];\n\t\t}\n\t\tfunction unescapeHtmlChar(match) {\n\t\t\treturn unescapes[match];\n\t\t}\n\n\t\tfunction escapeHtml(text) {\n\t\t\treturn text == null ? '' : String(text).replace(runescaped, escapeHtmlChar);\n\t\t}\n\n\t\tfunction unescapeHtml(html) {\n\t\t\treturn html == null ? '' : String(html).replace(rescaped, unescapeHtmlChar);\n\t\t}\n\n\t\tescapeHtml.options = unescapeHtml.options = {};\n\n\t\tmodule.exports = {\n\t\t\tencode: escapeHtml,\n\t\t\tescape: escapeHtml,\n\t\t\tdecode: unescapeHtml,\n\t\t\tunescape: unescapeHtml,\n\t\t\tversion: '1.0.0-browser'\n\t\t};\n\n\t}, {}], 10: [function (require, module, exports) {\n\t\t'use strict';\n\n\t\tfunction toMap(list) {\n\t\t\treturn list.reduce(asKey, {});\n\t\t}\n\n\t\tfunction asKey(accumulator, item) {\n\t\t\taccumulator[item] = true;\n\t\t\treturn accumulator;\n\t\t}\n\n\t\tmodule.exports = toMap;\n\n\t}, {}]\n}, {}, [4]);\n\n// ESM-comment-begin\n// define(function() { return { insane: __insane_func }; });\n// ESM-comment-end\n\n// ESM-uncomment-begin\nexport var insane = __insane_func;\n// ESM-uncomment-end\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Iterable;\r\n(function (Iterable) {\r\n function is(thing) {\r\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\r\n }\r\n Iterable.is = is;\r\n const _empty = Object.freeze([]);\r\n function empty() {\r\n return _empty;\r\n }\r\n Iterable.empty = empty;\r\n function* single(element) {\r\n yield element;\r\n }\r\n Iterable.single = single;\r\n function from(iterable) {\r\n return iterable || _empty;\r\n }\r\n Iterable.from = from;\r\n function first(iterable) {\r\n return iterable[Symbol.iterator]().next().value;\r\n }\r\n Iterable.first = first;\r\n function some(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n Iterable.some = some;\r\n function* filter(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.filter = filter;\r\n function* map(iterable, fn) {\r\n for (const element of iterable) {\r\n yield fn(element);\r\n }\r\n }\r\n Iterable.map = map;\r\n function* concat(...iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concat = concat;\r\n /**\r\n * Consumes `atMost` elements from iterable and returns the consumed elements,\r\n * and an iterable for the rest of the elements.\r\n */\r\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\r\n const consumed = [];\r\n if (atMost === 0) {\r\n return [consumed, iterable];\r\n }\r\n const iterator = iterable[Symbol.iterator]();\r\n for (let i = 0; i < atMost; i++) {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return [consumed, Iterable.empty()];\r\n }\r\n consumed.push(next.value);\r\n }\r\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\r\n }\r\n Iterable.consume = consume;\r\n})(Iterable || (Iterable = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from './errors.js';\r\nclass KeyCodeStrMap {\r\n constructor() {\r\n this._keyCodeToStr = [];\r\n this._strToKeyCode = Object.create(null);\r\n }\r\n define(keyCode, str) {\r\n this._keyCodeToStr[keyCode] = str;\r\n this._strToKeyCode[str.toLowerCase()] = keyCode;\r\n }\r\n keyCodeToStr(keyCode) {\r\n return this._keyCodeToStr[keyCode];\r\n }\r\n strToKeyCode(str) {\r\n return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;\r\n }\r\n}\r\nconst uiMap = new KeyCodeStrMap();\r\nconst userSettingsUSMap = new KeyCodeStrMap();\r\nconst userSettingsGeneralMap = new KeyCodeStrMap();\r\n(function () {\r\n function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {\r\n uiMap.define(keyCode, uiLabel);\r\n userSettingsUSMap.define(keyCode, usUserSettingsLabel);\r\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);\r\n }\r\n define(0 /* Unknown */, 'unknown');\r\n define(1 /* Backspace */, 'Backspace');\r\n define(2 /* Tab */, 'Tab');\r\n define(3 /* Enter */, 'Enter');\r\n define(4 /* Shift */, 'Shift');\r\n define(5 /* Ctrl */, 'Ctrl');\r\n define(6 /* Alt */, 'Alt');\r\n define(7 /* PauseBreak */, 'PauseBreak');\r\n define(8 /* CapsLock */, 'CapsLock');\r\n define(9 /* Escape */, 'Escape');\r\n define(10 /* Space */, 'Space');\r\n define(11 /* PageUp */, 'PageUp');\r\n define(12 /* PageDown */, 'PageDown');\r\n define(13 /* End */, 'End');\r\n define(14 /* Home */, 'Home');\r\n define(15 /* LeftArrow */, 'LeftArrow', 'Left');\r\n define(16 /* UpArrow */, 'UpArrow', 'Up');\r\n define(17 /* RightArrow */, 'RightArrow', 'Right');\r\n define(18 /* DownArrow */, 'DownArrow', 'Down');\r\n define(19 /* Insert */, 'Insert');\r\n define(20 /* Delete */, 'Delete');\r\n define(21 /* KEY_0 */, '0');\r\n define(22 /* KEY_1 */, '1');\r\n define(23 /* KEY_2 */, '2');\r\n define(24 /* KEY_3 */, '3');\r\n define(25 /* KEY_4 */, '4');\r\n define(26 /* KEY_5 */, '5');\r\n define(27 /* KEY_6 */, '6');\r\n define(28 /* KEY_7 */, '7');\r\n define(29 /* KEY_8 */, '8');\r\n define(30 /* KEY_9 */, '9');\r\n define(31 /* KEY_A */, 'A');\r\n define(32 /* KEY_B */, 'B');\r\n define(33 /* KEY_C */, 'C');\r\n define(34 /* KEY_D */, 'D');\r\n define(35 /* KEY_E */, 'E');\r\n define(36 /* KEY_F */, 'F');\r\n define(37 /* KEY_G */, 'G');\r\n define(38 /* KEY_H */, 'H');\r\n define(39 /* KEY_I */, 'I');\r\n define(40 /* KEY_J */, 'J');\r\n define(41 /* KEY_K */, 'K');\r\n define(42 /* KEY_L */, 'L');\r\n define(43 /* KEY_M */, 'M');\r\n define(44 /* KEY_N */, 'N');\r\n define(45 /* KEY_O */, 'O');\r\n define(46 /* KEY_P */, 'P');\r\n define(47 /* KEY_Q */, 'Q');\r\n define(48 /* KEY_R */, 'R');\r\n define(49 /* KEY_S */, 'S');\r\n define(50 /* KEY_T */, 'T');\r\n define(51 /* KEY_U */, 'U');\r\n define(52 /* KEY_V */, 'V');\r\n define(53 /* KEY_W */, 'W');\r\n define(54 /* KEY_X */, 'X');\r\n define(55 /* KEY_Y */, 'Y');\r\n define(56 /* KEY_Z */, 'Z');\r\n define(57 /* Meta */, 'Meta');\r\n define(58 /* ContextMenu */, 'ContextMenu');\r\n define(59 /* F1 */, 'F1');\r\n define(60 /* F2 */, 'F2');\r\n define(61 /* F3 */, 'F3');\r\n define(62 /* F4 */, 'F4');\r\n define(63 /* F5 */, 'F5');\r\n define(64 /* F6 */, 'F6');\r\n define(65 /* F7 */, 'F7');\r\n define(66 /* F8 */, 'F8');\r\n define(67 /* F9 */, 'F9');\r\n define(68 /* F10 */, 'F10');\r\n define(69 /* F11 */, 'F11');\r\n define(70 /* F12 */, 'F12');\r\n define(71 /* F13 */, 'F13');\r\n define(72 /* F14 */, 'F14');\r\n define(73 /* F15 */, 'F15');\r\n define(74 /* F16 */, 'F16');\r\n define(75 /* F17 */, 'F17');\r\n define(76 /* F18 */, 'F18');\r\n define(77 /* F19 */, 'F19');\r\n define(78 /* NumLock */, 'NumLock');\r\n define(79 /* ScrollLock */, 'ScrollLock');\r\n define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');\r\n define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');\r\n define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');\r\n define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');\r\n define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');\r\n define(85 /* US_SLASH */, '/', '/', 'OEM_2');\r\n define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');\r\n define(110 /* ABNT_C1 */, 'ABNT_C1');\r\n define(111 /* ABNT_C2 */, 'ABNT_C2');\r\n define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');\r\n define(88 /* US_BACKSLASH */, '\\\\', '\\\\', 'OEM_5');\r\n define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');\r\n define(90 /* US_QUOTE */, '\\'', '\\'', 'OEM_7');\r\n define(91 /* OEM_8 */, 'OEM_8');\r\n define(92 /* OEM_102 */, 'OEM_102');\r\n define(93 /* NUMPAD_0 */, 'NumPad0');\r\n define(94 /* NUMPAD_1 */, 'NumPad1');\r\n define(95 /* NUMPAD_2 */, 'NumPad2');\r\n define(96 /* NUMPAD_3 */, 'NumPad3');\r\n define(97 /* NUMPAD_4 */, 'NumPad4');\r\n define(98 /* NUMPAD_5 */, 'NumPad5');\r\n define(99 /* NUMPAD_6 */, 'NumPad6');\r\n define(100 /* NUMPAD_7 */, 'NumPad7');\r\n define(101 /* NUMPAD_8 */, 'NumPad8');\r\n define(102 /* NUMPAD_9 */, 'NumPad9');\r\n define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');\r\n define(104 /* NUMPAD_ADD */, 'NumPad_Add');\r\n define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');\r\n define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');\r\n define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');\r\n define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');\r\n})();\r\nexport var KeyCodeUtils;\r\n(function (KeyCodeUtils) {\r\n function toString(keyCode) {\r\n return uiMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toString = toString;\r\n function fromString(key) {\r\n return uiMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromString = fromString;\r\n function toUserSettingsUS(keyCode) {\r\n return userSettingsUSMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\r\n function toUserSettingsGeneral(keyCode) {\r\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\r\n function fromUserSettings(key) {\r\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromUserSettings = fromUserSettings;\r\n})(KeyCodeUtils || (KeyCodeUtils = {}));\r\nexport function KeyChord(firstPart, secondPart) {\r\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\r\n return (firstPart | chordPart) >>> 0;\r\n}\r\nexport function createKeybinding(keybinding, OS) {\r\n if (keybinding === 0) {\r\n return null;\r\n }\r\n const firstPart = (keybinding & 0x0000FFFF) >>> 0;\r\n const chordPart = (keybinding & 0xFFFF0000) >>> 16;\r\n if (chordPart !== 0) {\r\n return new ChordKeybinding([\r\n createSimpleKeybinding(firstPart, OS),\r\n createSimpleKeybinding(chordPart, OS)\r\n ]);\r\n }\r\n return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);\r\n}\r\nexport function createSimpleKeybinding(keybinding, OS) {\r\n const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);\r\n const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);\r\n const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);\r\n const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);\r\n const altKey = (keybinding & 512 /* Alt */ ? true : false);\r\n const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);\r\n const keyCode = (keybinding & 255 /* KeyCode */);\r\n return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);\r\n}\r\nexport class SimpleKeybinding {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyCode = keyCode;\r\n }\r\n equals(other) {\r\n return (this.ctrlKey === other.ctrlKey\r\n && this.shiftKey === other.shiftKey\r\n && this.altKey === other.altKey\r\n && this.metaKey === other.metaKey\r\n && this.keyCode === other.keyCode);\r\n }\r\n isModifierKey() {\r\n return (this.keyCode === 0 /* Unknown */\r\n || this.keyCode === 5 /* Ctrl */\r\n || this.keyCode === 57 /* Meta */\r\n || this.keyCode === 6 /* Alt */\r\n || this.keyCode === 4 /* Shift */);\r\n }\r\n toChord() {\r\n return new ChordKeybinding([this]);\r\n }\r\n /**\r\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\r\n */\r\n isDuplicateModifierCase() {\r\n return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)\r\n || (this.shiftKey && this.keyCode === 4 /* Shift */)\r\n || (this.altKey && this.keyCode === 6 /* Alt */)\r\n || (this.metaKey && this.keyCode === 57 /* Meta */));\r\n }\r\n}\r\nexport class ChordKeybinding {\r\n constructor(parts) {\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this.parts = parts;\r\n }\r\n}\r\nexport class ResolvedKeybindingPart {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyLabel = kbLabel;\r\n this.keyAriaLabel = kbAriaLabel;\r\n }\r\n}\r\n/**\r\n * A resolved keybinding. Can be a simple keybinding or a chord keybinding.\r\n */\r\nexport class ResolvedKeybinding {\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nexport class ModifierLabelProvider {\r\n constructor(mac, windows, linux = windows) {\r\n this.modifierLabels = [null]; // index 0 will never me accessed.\r\n this.modifierLabels[2 /* Macintosh */] = mac;\r\n this.modifierLabels[1 /* Windows */] = windows;\r\n this.modifierLabels[3 /* Linux */] = linux;\r\n }\r\n toLabel(OS, parts, keyLabelProvider) {\r\n if (parts.length === 0) {\r\n return null;\r\n }\r\n const result = [];\r\n for (let i = 0, len = parts.length; i < len; i++) {\r\n const part = parts[i];\r\n const keyLabel = keyLabelProvider(part);\r\n if (keyLabel === null) {\r\n // this keybinding cannot be expressed...\r\n return null;\r\n }\r\n result[i] = _simpleAsString(part, keyLabel, this.modifierLabels[OS]);\r\n }\r\n return result.join(' ');\r\n }\r\n}\r\n/**\r\n * A label provider that prints modifiers in a suitable format for displaying in the UI.\r\n */\r\nexport const UILabelProvider = new ModifierLabelProvider({\r\n ctrlKey: '⌃',\r\n shiftKey: '⇧',\r\n altKey: '⌥',\r\n metaKey: '⌘',\r\n separator: '',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\r\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'windowsKey', comment: ['This is the short form for the Windows key on the keyboard'] }, \"Windows\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey', comment: ['This is the short form for the Control key on the keyboard'] }, \"Ctrl\"),\r\n shiftKey: nls.localize({ key: 'shiftKey', comment: ['This is the short form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey', comment: ['This is the short form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'superKey', comment: ['This is the short form for the Super key on the keyboard'] }, \"Super\"),\r\n separator: '+',\r\n});\r\n/**\r\n * A label provider that prints modifiers in a suitable format for ARIA.\r\n */\r\nexport const AriaLabelProvider = new ModifierLabelProvider({\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'cmdKey.long', comment: ['This is the long form for the Command key on the keyboard'] }, \"Command\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'windowsKey.long', comment: ['This is the long form for the Windows key on the keyboard'] }, \"Windows\"),\r\n separator: '+',\r\n}, {\r\n ctrlKey: nls.localize({ key: 'ctrlKey.long', comment: ['This is the long form for the Control key on the keyboard'] }, \"Control\"),\r\n shiftKey: nls.localize({ key: 'shiftKey.long', comment: ['This is the long form for the Shift key on the keyboard'] }, \"Shift\"),\r\n altKey: nls.localize({ key: 'altKey.long', comment: ['This is the long form for the Alt key on the keyboard'] }, \"Alt\"),\r\n metaKey: nls.localize({ key: 'superKey.long', comment: ['This is the long form for the Super key on the keyboard'] }, \"Super\"),\r\n separator: '+',\r\n});\r\nfunction _simpleAsString(modifiers, key, labels) {\r\n if (key === null) {\r\n return '';\r\n }\r\n const result = [];\r\n // translate modifier keys: Ctrl-Shift-Alt-Meta\r\n if (modifiers.ctrlKey) {\r\n result.push(labels.ctrlKey);\r\n }\r\n if (modifiers.shiftKey) {\r\n result.push(labels.shiftKey);\r\n }\r\n if (modifiers.altKey) {\r\n result.push(labels.altKey);\r\n }\r\n if (modifiers.metaKey) {\r\n result.push(labels.metaKey);\r\n }\r\n // the actual key\r\n if (key !== '') {\r\n result.push(key);\r\n }\r\n return result.join(labels.separator);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from './uri.js';\r\nimport { posix, normalize } from './path.js';\r\nimport { startsWithIgnoreCase, rtrim } from './strings.js';\r\nimport { Schemas } from './network.js';\r\nimport { isLinux, isWindows } from './platform.js';\r\nimport { isEqual, basename, relativePath } from './resources.js';\r\n/**\r\n * @deprecated use LabelService instead\r\n */\r\nexport function getPathLabel(resource, userHomeProvider, rootProvider) {\r\n if (typeof resource === 'string') {\r\n resource = URI.file(resource);\r\n }\r\n // return early if we can resolve a relative path label from the root\r\n if (rootProvider) {\r\n const baseResource = rootProvider.getWorkspaceFolder(resource);\r\n if (baseResource) {\r\n const hasMultipleRoots = rootProvider.getWorkspace().folders.length > 1;\r\n let pathLabel;\r\n if (isEqual(baseResource.uri, resource)) {\r\n pathLabel = ''; // no label if paths are identical\r\n }\r\n else {\r\n pathLabel = relativePath(baseResource.uri, resource);\r\n }\r\n if (hasMultipleRoots) {\r\n const rootName = baseResource.name ? baseResource.name : basename(baseResource.uri);\r\n pathLabel = pathLabel ? (rootName + ' • ' + pathLabel) : rootName; // always show root basename if there are multiple\r\n }\r\n return pathLabel;\r\n }\r\n }\r\n // return if the resource is neither file:// nor untitled:// and no baseResource was provided\r\n if (resource.scheme !== Schemas.file && resource.scheme !== Schemas.untitled) {\r\n return resource.with({ query: null, fragment: null }).toString(true);\r\n }\r\n // convert c:\\something => C:\\something\r\n if (hasDriveLetter(resource.fsPath)) {\r\n return normalize(normalizeDriveLetter(resource.fsPath));\r\n }\r\n // normalize and tildify (macOS, Linux only)\r\n let res = normalize(resource.fsPath);\r\n if (!isWindows && (userHomeProvider === null || userHomeProvider === void 0 ? void 0 : userHomeProvider.userHome)) {\r\n res = tildify(res, userHomeProvider.userHome.fsPath);\r\n }\r\n return res;\r\n}\r\nexport function getBaseLabel(resource) {\r\n if (!resource) {\r\n return undefined;\r\n }\r\n if (typeof resource === 'string') {\r\n resource = URI.file(resource);\r\n }\r\n const base = basename(resource) || (resource.scheme === Schemas.file ? resource.fsPath : resource.path) /* can be empty string if '/' is passed in */;\r\n // convert c: => C:\r\n if (hasDriveLetter(base)) {\r\n return normalizeDriveLetter(base);\r\n }\r\n return base;\r\n}\r\nfunction hasDriveLetter(path) {\r\n return !!(isWindows && path && path[1] === ':');\r\n}\r\nexport function normalizeDriveLetter(path) {\r\n if (hasDriveLetter(path)) {\r\n return path.charAt(0).toUpperCase() + path.slice(1);\r\n }\r\n return path;\r\n}\r\nlet normalizedUserHomeCached = Object.create(null);\r\nexport function tildify(path, userHome) {\r\n if (isWindows || !path || !userHome) {\r\n return path; // unsupported\r\n }\r\n // Keep a normalized user home path as cache to prevent accumulated string creation\r\n let normalizedUserHome = normalizedUserHomeCached.original === userHome ? normalizedUserHomeCached.normalized : undefined;\r\n if (!normalizedUserHome) {\r\n normalizedUserHome = `${rtrim(userHome, posix.sep)}${posix.sep}`;\r\n normalizedUserHomeCached = { original: userHome, normalized: normalizedUserHome };\r\n }\r\n // Linux: case sensitive, macOS: case insensitive\r\n if (isLinux ? path.startsWith(normalizedUserHome) : startsWithIgnoreCase(path, normalizedUserHome)) {\r\n path = `~/${path.substr(normalizedUserHome.length)}`;\r\n }\r\n return path;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Lazy {\r\n constructor(executor) {\r\n this.executor = executor;\r\n this._didRun = false;\r\n }\r\n /**\r\n * Get the wrapped value.\r\n *\r\n * This will force evaluation of the lazy value if it has not been resolved yet. Lazy values are only\r\n * resolved once. `getValue` will re-throw exceptions that are hit while resolving the value\r\n */\r\n getValue() {\r\n if (!this._didRun) {\r\n try {\r\n this._value = this.executor();\r\n }\r\n catch (err) {\r\n this._error = err;\r\n }\r\n finally {\r\n this._didRun = true;\r\n }\r\n }\r\n if (this._error) {\r\n throw this._error;\r\n }\r\n return this._value;\r\n }\r\n /**\r\n * Get the wrapped value without forcing evaluation.\r\n */\r\n get rawValue() { return this._value; }\r\n}\r\n","import { Iterable } from './iterator.js';\r\n/**\r\n * Enables logging of potentially leaked disposables.\r\n *\r\n * A disposable is considered leaked if it is not disposed or not registered as the child of\r\n * another disposable. This tracking is very simple an only works for classes that either\r\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\r\n */\r\nconst TRACK_DISPOSABLES = false;\r\nconst __is_disposable_tracked__ = '__is_disposable_tracked__';\r\nfunction markTracked(x) {\r\n if (!TRACK_DISPOSABLES) {\r\n return;\r\n }\r\n if (x && x !== Disposable.None) {\r\n try {\r\n x[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n}\r\nfunction trackDisposable(x) {\r\n if (!TRACK_DISPOSABLES) {\r\n return x;\r\n }\r\n const stack = new Error('Potentially leaked disposable').stack;\r\n setTimeout(() => {\r\n if (!x[__is_disposable_tracked__]) {\r\n console.log(stack);\r\n }\r\n }, 3000);\r\n return x;\r\n}\r\nexport class MultiDisposeError extends Error {\r\n constructor(errors) {\r\n super(`Encounter errors while disposing of store. Errors: [${errors.join(', ')}]`);\r\n this.errors = errors;\r\n }\r\n}\r\nexport function isDisposable(thing) {\r\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\r\n}\r\nexport function dispose(arg) {\r\n if (Iterable.is(arg)) {\r\n let errors = [];\r\n for (const d of arg) {\r\n if (d) {\r\n markTracked(d);\r\n try {\r\n d.dispose();\r\n }\r\n catch (e) {\r\n errors.push(e);\r\n }\r\n }\r\n }\r\n if (errors.length === 1) {\r\n throw errors[0];\r\n }\r\n else if (errors.length > 1) {\r\n throw new MultiDisposeError(errors);\r\n }\r\n return Array.isArray(arg) ? [] : arg;\r\n }\r\n else if (arg) {\r\n markTracked(arg);\r\n arg.dispose();\r\n return arg;\r\n }\r\n}\r\nexport function combinedDisposable(...disposables) {\r\n disposables.forEach(markTracked);\r\n return trackDisposable({ dispose: () => dispose(disposables) });\r\n}\r\nexport function toDisposable(fn) {\r\n const self = trackDisposable({\r\n dispose: () => {\r\n markTracked(self);\r\n fn();\r\n }\r\n });\r\n return self;\r\n}\r\nexport class DisposableStore {\r\n constructor() {\r\n this._toDispose = new Set();\r\n this._isDisposed = false;\r\n }\r\n /**\r\n * Dispose of all registered disposables and mark this object as disposed.\r\n *\r\n * Any future disposables added to this object will be disposed of on `add`.\r\n */\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n markTracked(this);\r\n this._isDisposed = true;\r\n this.clear();\r\n }\r\n /**\r\n * Dispose of all registered disposables but do not mark this object as disposed.\r\n */\r\n clear() {\r\n try {\r\n dispose(this._toDispose.values());\r\n }\r\n finally {\r\n this._toDispose.clear();\r\n }\r\n }\r\n add(t) {\r\n if (!t) {\r\n return t;\r\n }\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n markTracked(t);\r\n if (this._isDisposed) {\r\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\r\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\r\n }\r\n }\r\n else {\r\n this._toDispose.add(t);\r\n }\r\n return t;\r\n }\r\n}\r\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\r\nexport class Disposable {\r\n constructor() {\r\n this._store = new DisposableStore();\r\n trackDisposable(this);\r\n }\r\n dispose() {\r\n markTracked(this);\r\n this._store.dispose();\r\n }\r\n _register(t) {\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n return this._store.add(t);\r\n }\r\n}\r\nDisposable.None = Object.freeze({ dispose() { } });\r\n/**\r\n * Manages the lifecycle of a disposable value that may be changed.\r\n *\r\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\r\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\r\n */\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n get value() {\r\n return this._isDisposed ? undefined : this._value;\r\n }\r\n set value(value) {\r\n if (this._isDisposed || value === this._value) {\r\n return;\r\n }\r\n if (this._value) {\r\n this._value.dispose();\r\n }\r\n if (value) {\r\n markTracked(value);\r\n }\r\n this._value = value;\r\n }\r\n clear() {\r\n this.value = undefined;\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n markTracked(this);\r\n if (this._value) {\r\n this._value.dispose();\r\n }\r\n this._value = undefined;\r\n }\r\n}\r\nexport class ImmortalReference {\r\n constructor(object) {\r\n this.object = object;\r\n }\r\n dispose() { }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Node {\r\n constructor(element) {\r\n this.element = element;\r\n this.next = Node.Undefined;\r\n this.prev = Node.Undefined;\r\n }\r\n}\r\nNode.Undefined = new Node(undefined);\r\nexport class LinkedList {\r\n constructor() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n isEmpty() {\r\n return this._first === Node.Undefined;\r\n }\r\n clear() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n unshift(element) {\r\n return this._insert(element, false);\r\n }\r\n push(element) {\r\n return this._insert(element, true);\r\n }\r\n _insert(element, atTheEnd) {\r\n const newNode = new Node(element);\r\n if (this._first === Node.Undefined) {\r\n this._first = newNode;\r\n this._last = newNode;\r\n }\r\n else if (atTheEnd) {\r\n // push\r\n const oldLast = this._last;\r\n this._last = newNode;\r\n newNode.prev = oldLast;\r\n oldLast.next = newNode;\r\n }\r\n else {\r\n // unshift\r\n const oldFirst = this._first;\r\n this._first = newNode;\r\n newNode.next = oldFirst;\r\n oldFirst.prev = newNode;\r\n }\r\n this._size += 1;\r\n let didRemove = false;\r\n return () => {\r\n if (!didRemove) {\r\n didRemove = true;\r\n this._remove(newNode);\r\n }\r\n };\r\n }\r\n shift() {\r\n if (this._first === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._first.element;\r\n this._remove(this._first);\r\n return res;\r\n }\r\n }\r\n pop() {\r\n if (this._last === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._last.element;\r\n this._remove(this._last);\r\n return res;\r\n }\r\n }\r\n _remove(node) {\r\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\r\n // middle\r\n const anchor = node.prev;\r\n anchor.next = node.next;\r\n node.next.prev = anchor;\r\n }\r\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\r\n // only node\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n }\r\n else if (node.next === Node.Undefined) {\r\n // last\r\n this._last = this._last.prev;\r\n this._last.next = Node.Undefined;\r\n }\r\n else if (node.prev === Node.Undefined) {\r\n // first\r\n this._first = this._first.next;\r\n this._first.prev = Node.Undefined;\r\n }\r\n // done\r\n this._size -= 1;\r\n }\r\n *[Symbol.iterator]() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n yield node.element;\r\n node = node.next;\r\n }\r\n }\r\n toArray() {\r\n const result = [];\r\n for (let node = this._first; node !== Node.Undefined; node = node.next) {\r\n result.push(node.element);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from './uri.js';\r\nimport { compareSubstringIgnoreCase, compare, compareSubstring } from './strings.js';\r\nimport { Schemas } from './network.js';\r\nimport { isLinux } from './platform.js';\r\nexport class StringIterator {\r\n constructor() {\r\n this._value = '';\r\n this._pos = 0;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._pos = 0;\r\n return this;\r\n }\r\n next() {\r\n this._pos += 1;\r\n return this;\r\n }\r\n hasNext() {\r\n return this._pos < this._value.length - 1;\r\n }\r\n cmp(a) {\r\n const aCode = a.charCodeAt(0);\r\n const thisCode = this._value.charCodeAt(this._pos);\r\n return aCode - thisCode;\r\n }\r\n value() {\r\n return this._value[this._pos];\r\n }\r\n}\r\nexport class PathIterator {\r\n constructor(_splitOnBackslash = true, _caseSensitive = true) {\r\n this._splitOnBackslash = _splitOnBackslash;\r\n this._caseSensitive = _caseSensitive;\r\n }\r\n reset(key) {\r\n this._value = key.replace(/\\\\$|\\/$/, '');\r\n this._from = 0;\r\n this._to = 0;\r\n return this.next();\r\n }\r\n hasNext() {\r\n return this._to < this._value.length;\r\n }\r\n next() {\r\n // this._data = key.split(/[\\\\/]/).filter(s => !!s);\r\n this._from = this._to;\r\n let justSeps = true;\r\n for (; this._to < this._value.length; this._to++) {\r\n const ch = this._value.charCodeAt(this._to);\r\n if (ch === 47 /* Slash */ || this._splitOnBackslash && ch === 92 /* Backslash */) {\r\n if (justSeps) {\r\n this._from++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n else {\r\n justSeps = false;\r\n }\r\n }\r\n return this;\r\n }\r\n cmp(a) {\r\n return this._caseSensitive\r\n ? compareSubstring(a, this._value, 0, a.length, this._from, this._to)\r\n : compareSubstringIgnoreCase(a, this._value, 0, a.length, this._from, this._to);\r\n }\r\n value() {\r\n return this._value.substring(this._from, this._to);\r\n }\r\n}\r\nexport class UriIterator {\r\n constructor() {\r\n this._states = [];\r\n this._stateIdx = 0;\r\n }\r\n reset(key) {\r\n this._value = key;\r\n this._states = [];\r\n if (this._value.scheme) {\r\n this._states.push(1 /* Scheme */);\r\n }\r\n if (this._value.authority) {\r\n this._states.push(2 /* Authority */);\r\n }\r\n if (this._value.path) {\r\n //todo@jrieken the case-sensitive logic is copied form `resources.ts#hasToIgnoreCase`\r\n // which cannot be used because it depends on this\r\n const caseSensitive = key.scheme === Schemas.file && isLinux;\r\n this._pathIterator = new PathIterator(false, caseSensitive);\r\n this._pathIterator.reset(key.path);\r\n if (this._pathIterator.value()) {\r\n this._states.push(3 /* Path */);\r\n }\r\n }\r\n if (this._value.query) {\r\n this._states.push(4 /* Query */);\r\n }\r\n if (this._value.fragment) {\r\n this._states.push(5 /* Fragment */);\r\n }\r\n this._stateIdx = 0;\r\n return this;\r\n }\r\n next() {\r\n if (this._states[this._stateIdx] === 3 /* Path */ && this._pathIterator.hasNext()) {\r\n this._pathIterator.next();\r\n }\r\n else {\r\n this._stateIdx += 1;\r\n }\r\n return this;\r\n }\r\n hasNext() {\r\n return (this._states[this._stateIdx] === 3 /* Path */ && this._pathIterator.hasNext())\r\n || this._stateIdx < this._states.length - 1;\r\n }\r\n cmp(a) {\r\n if (this._states[this._stateIdx] === 1 /* Scheme */) {\r\n return compare(a, this._value.scheme);\r\n }\r\n else if (this._states[this._stateIdx] === 2 /* Authority */) {\r\n return compareSubstringIgnoreCase(a, this._value.authority);\r\n }\r\n else if (this._states[this._stateIdx] === 3 /* Path */) {\r\n return this._pathIterator.cmp(a);\r\n }\r\n else if (this._states[this._stateIdx] === 4 /* Query */) {\r\n return compare(a, this._value.query);\r\n }\r\n else if (this._states[this._stateIdx] === 5 /* Fragment */) {\r\n return compare(a, this._value.fragment);\r\n }\r\n throw new Error();\r\n }\r\n value() {\r\n if (this._states[this._stateIdx] === 1 /* Scheme */) {\r\n return this._value.scheme;\r\n }\r\n else if (this._states[this._stateIdx] === 2 /* Authority */) {\r\n return this._value.authority;\r\n }\r\n else if (this._states[this._stateIdx] === 3 /* Path */) {\r\n return this._pathIterator.value();\r\n }\r\n else if (this._states[this._stateIdx] === 4 /* Query */) {\r\n return this._value.query;\r\n }\r\n else if (this._states[this._stateIdx] === 5 /* Fragment */) {\r\n return this._value.fragment;\r\n }\r\n throw new Error();\r\n }\r\n}\r\nclass TernarySearchTreeNode {\r\n}\r\nexport class TernarySearchTree {\r\n constructor(segments) {\r\n this._iter = segments;\r\n }\r\n static forUris() {\r\n return new TernarySearchTree(new UriIterator());\r\n }\r\n static forStrings() {\r\n return new TernarySearchTree(new StringIterator());\r\n }\r\n clear() {\r\n this._root = undefined;\r\n }\r\n set(key, element) {\r\n const iter = this._iter.reset(key);\r\n let node;\r\n if (!this._root) {\r\n this._root = new TernarySearchTreeNode();\r\n this._root.segment = iter.value();\r\n }\r\n node = this._root;\r\n while (true) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n if (!node.left) {\r\n node.left = new TernarySearchTreeNode();\r\n node.left.segment = iter.value();\r\n }\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n if (!node.right) {\r\n node.right = new TernarySearchTreeNode();\r\n node.right.segment = iter.value();\r\n }\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n if (!node.mid) {\r\n node.mid = new TernarySearchTreeNode();\r\n node.mid.segment = iter.value();\r\n }\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n const oldElement = node.value;\r\n node.value = element;\r\n node.key = key;\r\n return oldElement;\r\n }\r\n get(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return node ? node.value : undefined;\r\n }\r\n findSubstr(key) {\r\n const iter = this._iter.reset(key);\r\n let node = this._root;\r\n let candidate = undefined;\r\n while (node) {\r\n const val = iter.cmp(node.segment);\r\n if (val > 0) {\r\n // left\r\n node = node.left;\r\n }\r\n else if (val < 0) {\r\n // right\r\n node = node.right;\r\n }\r\n else if (iter.hasNext()) {\r\n // mid\r\n iter.next();\r\n candidate = node.value || candidate;\r\n node = node.mid;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return node && node.value || candidate;\r\n }\r\n forEach(callback) {\r\n this._forEach(this._root, callback);\r\n }\r\n _forEach(node, callback) {\r\n if (node) {\r\n // left\r\n this._forEach(node.left, callback);\r\n // node\r\n if (node.value) {\r\n // callback(node.value, this._iter.join(parts));\r\n callback(node.value, node.key);\r\n }\r\n // mid\r\n this._forEach(node.mid, callback);\r\n // right\r\n this._forEach(node.right, callback);\r\n }\r\n }\r\n}\r\nexport class ResourceMap {\r\n constructor(mapOrKeyFn, toKey) {\r\n this[Symbol.toStringTag] = 'ResourceMap';\r\n if (mapOrKeyFn instanceof ResourceMap) {\r\n this.map = new Map(mapOrKeyFn.map);\r\n this.toKey = toKey !== null && toKey !== void 0 ? toKey : ResourceMap.defaultToKey;\r\n }\r\n else {\r\n this.map = new Map();\r\n this.toKey = mapOrKeyFn !== null && mapOrKeyFn !== void 0 ? mapOrKeyFn : ResourceMap.defaultToKey;\r\n }\r\n }\r\n set(resource, value) {\r\n this.map.set(this.toKey(resource), value);\r\n return this;\r\n }\r\n get(resource) {\r\n return this.map.get(this.toKey(resource));\r\n }\r\n has(resource) {\r\n return this.map.has(this.toKey(resource));\r\n }\r\n get size() {\r\n return this.map.size;\r\n }\r\n clear() {\r\n this.map.clear();\r\n }\r\n delete(resource) {\r\n return this.map.delete(this.toKey(resource));\r\n }\r\n forEach(clb, thisArg) {\r\n if (typeof thisArg !== 'undefined') {\r\n clb = clb.bind(thisArg);\r\n }\r\n for (let [index, value] of this.map) {\r\n clb(value, URI.parse(index), this);\r\n }\r\n }\r\n values() {\r\n return this.map.values();\r\n }\r\n *keys() {\r\n for (let key of this.map.keys()) {\r\n yield URI.parse(key);\r\n }\r\n }\r\n *entries() {\r\n for (let tuple of this.map.entries()) {\r\n yield [URI.parse(tuple[0]), tuple[1]];\r\n }\r\n }\r\n *[Symbol.iterator]() {\r\n for (let item of this.map) {\r\n yield [URI.parse(item[0]), item[1]];\r\n }\r\n }\r\n}\r\nResourceMap.defaultToKey = (resource) => resource.toString();\r\nexport class LinkedMap {\r\n constructor() {\r\n this[Symbol.toStringTag] = 'LinkedMap';\r\n this._map = new Map();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n this._state = 0;\r\n }\r\n clear() {\r\n this._map.clear();\r\n this._head = undefined;\r\n this._tail = undefined;\r\n this._size = 0;\r\n this._state++;\r\n }\r\n isEmpty() {\r\n return !this._head && !this._tail;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n get first() {\r\n var _a;\r\n return (_a = this._head) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n get last() {\r\n var _a;\r\n return (_a = this._tail) === null || _a === void 0 ? void 0 : _a.value;\r\n }\r\n has(key) {\r\n return this._map.has(key);\r\n }\r\n get(key, touch = 0 /* None */) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n if (touch !== 0 /* None */) {\r\n this.touch(item, touch);\r\n }\r\n return item.value;\r\n }\r\n set(key, value, touch = 0 /* None */) {\r\n let item = this._map.get(key);\r\n if (item) {\r\n item.value = value;\r\n if (touch !== 0 /* None */) {\r\n this.touch(item, touch);\r\n }\r\n }\r\n else {\r\n item = { key, value, next: undefined, previous: undefined };\r\n switch (touch) {\r\n case 0 /* None */:\r\n this.addItemLast(item);\r\n break;\r\n case 1 /* AsOld */:\r\n this.addItemFirst(item);\r\n break;\r\n case 2 /* AsNew */:\r\n this.addItemLast(item);\r\n break;\r\n default:\r\n this.addItemLast(item);\r\n break;\r\n }\r\n this._map.set(key, item);\r\n this._size++;\r\n }\r\n return this;\r\n }\r\n delete(key) {\r\n return !!this.remove(key);\r\n }\r\n remove(key) {\r\n const item = this._map.get(key);\r\n if (!item) {\r\n return undefined;\r\n }\r\n this._map.delete(key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n shift() {\r\n if (!this._head && !this._tail) {\r\n return undefined;\r\n }\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n const item = this._head;\r\n this._map.delete(item.key);\r\n this.removeItem(item);\r\n this._size--;\r\n return item.value;\r\n }\r\n forEach(callbackfn, thisArg) {\r\n const state = this._state;\r\n let current = this._head;\r\n while (current) {\r\n if (thisArg) {\r\n callbackfn.bind(thisArg)(current.value, current.key, this);\r\n }\r\n else {\r\n callbackfn(current.value, current.key, this);\r\n }\r\n if (this._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n current = current.next;\r\n }\r\n }\r\n keys() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: current.key, done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n values() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: current.value, done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n entries() {\r\n const map = this;\r\n const state = this._state;\r\n let current = this._head;\r\n const iterator = {\r\n [Symbol.iterator]() {\r\n return iterator;\r\n },\r\n next() {\r\n if (map._state !== state) {\r\n throw new Error(`LinkedMap got modified during iteration.`);\r\n }\r\n if (current) {\r\n const result = { value: [current.key, current.value], done: false };\r\n current = current.next;\r\n return result;\r\n }\r\n else {\r\n return { value: undefined, done: true };\r\n }\r\n }\r\n };\r\n return iterator;\r\n }\r\n [Symbol.iterator]() {\r\n return this.entries();\r\n }\r\n trimOld(newSize) {\r\n if (newSize >= this.size) {\r\n return;\r\n }\r\n if (newSize === 0) {\r\n this.clear();\r\n return;\r\n }\r\n let current = this._head;\r\n let currentSize = this.size;\r\n while (current && currentSize > newSize) {\r\n this._map.delete(current.key);\r\n current = current.next;\r\n currentSize--;\r\n }\r\n this._head = current;\r\n this._size = currentSize;\r\n if (current) {\r\n current.previous = undefined;\r\n }\r\n this._state++;\r\n }\r\n addItemFirst(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._tail = item;\r\n }\r\n else if (!this._head) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.next = this._head;\r\n this._head.previous = item;\r\n }\r\n this._head = item;\r\n this._state++;\r\n }\r\n addItemLast(item) {\r\n // First time Insert\r\n if (!this._head && !this._tail) {\r\n this._head = item;\r\n }\r\n else if (!this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n else {\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n }\r\n this._tail = item;\r\n this._state++;\r\n }\r\n removeItem(item) {\r\n if (item === this._head && item === this._tail) {\r\n this._head = undefined;\r\n this._tail = undefined;\r\n }\r\n else if (item === this._head) {\r\n // This can only happend if size === 1 which is handle\r\n // by the case above.\r\n if (!item.next) {\r\n throw new Error('Invalid list');\r\n }\r\n item.next.previous = undefined;\r\n this._head = item.next;\r\n }\r\n else if (item === this._tail) {\r\n // This can only happend if size === 1 which is handle\r\n // by the case above.\r\n if (!item.previous) {\r\n throw new Error('Invalid list');\r\n }\r\n item.previous.next = undefined;\r\n this._tail = item.previous;\r\n }\r\n else {\r\n const next = item.next;\r\n const previous = item.previous;\r\n if (!next || !previous) {\r\n throw new Error('Invalid list');\r\n }\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = undefined;\r\n this._state++;\r\n }\r\n touch(item, touch) {\r\n if (!this._head || !this._tail) {\r\n throw new Error('Invalid list');\r\n }\r\n if ((touch !== 1 /* AsOld */ && touch !== 2 /* AsNew */)) {\r\n return;\r\n }\r\n if (touch === 1 /* AsOld */) {\r\n if (item === this._head) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item\r\n if (item === this._tail) {\r\n // previous must be defined since item was not head but is tail\r\n // So there are more than on item in the map\r\n previous.next = undefined;\r\n this._tail = previous;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n // Insert the node at head\r\n item.previous = undefined;\r\n item.next = this._head;\r\n this._head.previous = item;\r\n this._head = item;\r\n this._state++;\r\n }\r\n else if (touch === 2 /* AsNew */) {\r\n if (item === this._tail) {\r\n return;\r\n }\r\n const next = item.next;\r\n const previous = item.previous;\r\n // Unlink the item.\r\n if (item === this._head) {\r\n // next must be defined since item was not tail but is head\r\n // So there are more than on item in the map\r\n next.previous = undefined;\r\n this._head = next;\r\n }\r\n else {\r\n // Both next and previous are not undefined since item was neither head nor tail.\r\n next.previous = previous;\r\n previous.next = next;\r\n }\r\n item.next = undefined;\r\n item.previous = this._tail;\r\n this._tail.next = item;\r\n this._tail = item;\r\n this._state++;\r\n }\r\n }\r\n toJSON() {\r\n const data = [];\r\n this.forEach((value, key) => {\r\n data.push([key, value]);\r\n });\r\n return data;\r\n }\r\n fromJSON(data) {\r\n this.clear();\r\n for (const [key, value] of data) {\r\n this.set(key, value);\r\n }\r\n }\r\n}\r\nexport class LRUCache extends LinkedMap {\r\n constructor(limit, ratio = 1) {\r\n super();\r\n this._limit = limit;\r\n this._ratio = Math.min(Math.max(0, ratio), 1);\r\n }\r\n get limit() {\r\n return this._limit;\r\n }\r\n set limit(limit) {\r\n this._limit = limit;\r\n this.checkTrim();\r\n }\r\n get(key, touch = 2 /* AsNew */) {\r\n return super.get(key, touch);\r\n }\r\n peek(key) {\r\n return super.get(key, 0 /* None */);\r\n }\r\n set(key, value) {\r\n super.set(key, value, 2 /* AsNew */);\r\n this.checkTrim();\r\n return this;\r\n }\r\n checkTrim() {\r\n if (this.size > this._limit) {\r\n this.trimOld(Math.round(this._limit * this._ratio));\r\n }\r\n }\r\n}\r\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2020, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.marked = factory());\n}(this, (function () { 'use strict';\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n it = o[Symbol.iterator]();\n return it.next.bind(it);\n }\n\n function createCommonjsModule(fn, module) {\n \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n }\n\n var defaults = createCommonjsModule(function (module) {\n function getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n }\n\n function changeDefaults(newDefaults) {\n module.exports.defaults = newDefaults;\n }\n\n module.exports = {\n defaults: getDefaults(),\n getDefaults: getDefaults,\n changeDefaults: changeDefaults\n };\n });\n var defaults_1 = defaults.defaults;\n var defaults_2 = defaults.getDefaults;\n var defaults_3 = defaults.changeDefaults;\n\n /**\n * Helpers\n */\n var escapeTest = /[&<>\"']/;\n var escapeReplace = /[&<>\"']/g;\n var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n var escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n var getEscapeReplacement = function getEscapeReplacement(ch) {\n return escapeReplacements[ch];\n };\n\n function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n }\n\n var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, function (_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n }\n\n return '';\n });\n }\n\n var caret = /(^|[^\\[])\\^/g;\n\n function edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n var obj = {\n replace: function replace(name, val) {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: function getRegex() {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n }\n\n var nonWordAndColonTest = /[^\\w:]/g;\n var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n function cleanUrl(sanitize, base, href) {\n if (sanitize) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();\n } catch (e) {\n return null;\n }\n\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n\n return href;\n }\n\n var baseUrls = {};\n var justDomain = /^[^:]+:\\/*[^/]*$/;\n var protocol = /^([^:]+:)[\\s\\S]*$/;\n var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n function resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n\n base = baseUrls[' ' + base];\n var relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n }\n\n var noopTest = {\n exec: function noopTest() {}\n };\n\n function merge(obj) {\n var i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n }\n\n function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n var escaped = false,\n curr = offset;\n\n while (--curr >= 0 && str[curr] === '\\\\') {\n escaped = !escaped;\n }\n\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n var i = 0;\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) {\n cells.push('');\n }\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n\n return cells;\n } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n // /c*$/ is vulnerable to REDOS.\n // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n function rtrim(str, c, invert) {\n var l = str.length;\n\n if (l === 0) {\n return '';\n } // Length of suffix matching the invert condition.\n\n\n var suffLen = 0; // Step left until we fail to match the invert condition.\n\n while (suffLen < l) {\n var currChar = str.charAt(l - suffLen - 1);\n\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n }\n\n function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n\n var l = str.length;\n var level = 0,\n i = 0;\n\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n\n if (level < 0) {\n return i;\n }\n }\n }\n\n return -1;\n }\n\n function checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n\t\t\t// VS CODE CHANGE\n\t\t\t// Disable logging about sanitize options. We already use insane after running the sanitizer\n\n // console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n }\n\n var helpers = {\n escape: escape,\n unescape: unescape,\n edit: edit,\n cleanUrl: cleanUrl,\n resolveUrl: resolveUrl,\n noopTest: noopTest,\n merge: merge,\n splitCells: splitCells,\n rtrim: rtrim,\n findClosingBracket: findClosingBracket,\n checkSanitizeDeprecation: checkSanitizeDeprecation\n };\n\n var defaults$1 = defaults.defaults;\n var rtrim$1 = helpers.rtrim,\n splitCells$1 = helpers.splitCells,\n _escape = helpers.escape,\n findClosingBracket$1 = helpers.findClosingBracket;\n\n function outputLink(cap, link, raw) {\n var href = link.href;\n var title = link.title ? _escape(link.title) : null;\n var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n return {\n type: 'link',\n raw: raw,\n href: href,\n title: title,\n text: text\n };\n } else {\n return {\n type: 'image',\n raw: raw,\n href: href,\n title: title,\n text: _escape(text)\n };\n }\n }\n\n function indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split('\\n').map(function (node) {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var indentInNode = matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join('\\n');\n }\n /**\n * Tokenizer\n */\n\n\n var Tokenizer_1 = /*#__PURE__*/function () {\n function Tokenizer(options) {\n this.options = options || defaults$1;\n }\n\n var _proto = Tokenizer.prototype;\n\n _proto.space = function space(src) {\n var cap = this.rules.block.newline.exec(src);\n\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n\n return {\n raw: '\\n'\n };\n }\n };\n\n _proto.code = function code(src, tokens) {\n var cap = this.rules.block.code.exec(src);\n\n if (cap) {\n var lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n if (lastToken && lastToken.type === 'paragraph') {\n return {\n raw: cap[0],\n text: cap[0].trimRight()\n };\n }\n\n var text = cap[0].replace(/^ {4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic ? rtrim$1(text, '\\n') : text\n };\n }\n };\n\n _proto.fences = function fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw: raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text: text\n };\n }\n };\n\n _proto.heading = function heading(src) {\n var cap = this.rules.block.heading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: cap[2]\n };\n }\n };\n\n _proto.nptable = function nptable(src) {\n var cap = this.rules.block.nptable.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells$1(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : [],\n raw: cap[0]\n };\n\n if (item.header.length === item.align.length) {\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells$1(item.cells[i], item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.hr = function hr(src) {\n var cap = this.rules.block.hr.exec(src);\n\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n };\n\n _proto.blockquote = function blockquote(src) {\n var cap = this.rules.block.blockquote.exec(src);\n\n if (cap) {\n var text = cap[0].replace(/^ *> ?/gm, '');\n return {\n type: 'blockquote',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.list = function list(src) {\n var cap = this.rules.block.list.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var bull = cap[2];\n var isordered = bull.length > 1;\n var isparen = bull[bull.length - 1] === ')';\n var list = {\n type: 'list',\n raw: raw,\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n }; // Get each top-level item.\n\n var itemMatch = cap[0].match(this.rules.block.item);\n var next = false,\n item,\n space,\n b,\n addBack,\n loose,\n istask,\n ischecked;\n var l = itemMatch.length;\n\n for (var i = 0; i < l; i++) {\n item = itemMatch[i];\n raw = item; // Remove the list item's bullet\n // so it is seen as the next token.\n\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+[.)]) */, ''); // Outdent whatever the\n // list item contains. Hacky.\n\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');\n } // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n\n\n if (i !== l - 1) {\n b = this.rules.block.bullet.exec(itemMatch[i + 1])[0];\n\n if (isordered ? b.length === 1 || !isparen && b[b.length - 1] === ')' : b.length > 1 || this.options.smartLists && b !== bull) {\n addBack = itemMatch.slice(i + 1).join('\\n');\n list.raw = list.raw.substring(0, list.raw.length - addBack.length);\n i = l - 1;\n }\n } // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n\n\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n if (loose) {\n list.loose = true;\n } // Check for task list items\n\n\n istask = /^\\[[ xX]\\] /.test(item);\n ischecked = undefined;\n\n if (istask) {\n ischecked = item[1] !== ' ';\n item = item.replace(/^\\[[ xX]\\] +/, '');\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: istask,\n checked: ischecked,\n loose: loose,\n text: item\n });\n }\n\n return list;\n }\n };\n\n _proto.html = function html(src) {\n var cap = this.rules.block.html.exec(src);\n\n if (cap) {\n return {\n type: this.options.sanitize ? 'paragraph' : 'html',\n raw: cap[0],\n pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.def = function def(src) {\n var cap = this.rules.block.def.exec(src);\n\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n tag: tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n };\n\n _proto.table = function table(src) {\n var cap = this.rules.block.table.exec(src);\n\n if (cap) {\n var item = {\n type: 'table',\n header: splitCells$1(cap[1].replace(/^ *| *\\| *$/g, '')),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n var l = item.align.length;\n var i;\n\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.cells.length;\n\n for (i = 0; i < l; i++) {\n item.cells[i] = splitCells$1(item.cells[i].replace(/^ *\\| *| *\\| *$/g, ''), item.header.length);\n }\n\n return item;\n }\n }\n };\n\n _proto.lheading = function lheading(src) {\n var cap = this.rules.block.lheading.exec(src);\n\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1]\n };\n }\n };\n\n _proto.paragraph = function paragraph(src) {\n var cap = this.rules.block.paragraph.exec(src);\n\n if (cap) {\n return {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1]\n };\n }\n };\n\n _proto.text = function text(src, tokens) {\n var cap = this.rules.block.text.exec(src);\n\n if (cap) {\n var lastToken = tokens[tokens.length - 1];\n\n if (lastToken && lastToken.type === 'text') {\n return {\n raw: cap[0],\n text: cap[0]\n };\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0]\n };\n }\n };\n\n _proto.escape = function escape(src) {\n var cap = this.rules.inline.escape.exec(src);\n\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: _escape(cap[1])\n };\n }\n };\n\n _proto.tag = function tag(src, inLink, inRawBlock) {\n var cap = this.rules.inline.tag.exec(src);\n\n if (cap) {\n if (!inLink && /^<a /i.test(cap[0])) {\n inLink = true;\n } else if (inLink && /^<\\/a>/i.test(cap[0])) {\n inLink = false;\n }\n\n if (!inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = true;\n } else if (inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize ? 'text' : 'html',\n raw: cap[0],\n inLink: inLink,\n inRawBlock: inRawBlock,\n text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n };\n }\n };\n\n _proto.link = function link(src) {\n var cap = this.rules.inline.link.exec(src);\n\n if (cap) {\n var lastParenIndex = findClosingBracket$1(cap[2], '()');\n\n if (lastParenIndex > -1) {\n var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n var linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n\n var href = cap[2];\n var title = '';\n\n if (this.options.pedantic) {\n var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n } else {\n title = '';\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim().replace(/^<([\\s\\S]*)>$/, '$1');\n var token = outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0]);\n return token;\n }\n };\n\n _proto.reflink = function reflink(src, links) {\n var cap;\n\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n\n if (!link || !link.href) {\n var text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text: text\n };\n }\n\n var token = outputLink(cap, link, cap[0]);\n return token;\n }\n };\n\n _proto.strong = function strong(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.strong.start.exec(src);\n\n if (match && (!match[1] || match[1] && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n maskedSrc = maskedSrc.slice(-1 * src.length);\n var endReg = match[0] === '**' ? this.rules.inline.strong.endAst : this.rules.inline.strong.endUnd;\n endReg.lastIndex = 0;\n var cap;\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n cap = this.rules.inline.strong.middle.exec(maskedSrc.slice(0, match.index + 3));\n\n if (cap) {\n return {\n type: 'strong',\n raw: src.slice(0, cap[0].length),\n text: src.slice(2, cap[0].length - 2)\n };\n }\n }\n }\n };\n\n _proto.em = function em(src, maskedSrc, prevChar) {\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var match = this.rules.inline.em.start.exec(src);\n\n if (match && (!match[1] || match[1] && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n maskedSrc = maskedSrc.slice(-1 * src.length);\n var endReg = match[0] === '*' ? this.rules.inline.em.endAst : this.rules.inline.em.endUnd;\n endReg.lastIndex = 0;\n var cap;\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n cap = this.rules.inline.em.middle.exec(maskedSrc.slice(0, match.index + 2));\n\n if (cap) {\n return {\n type: 'em',\n raw: src.slice(0, cap[0].length),\n text: src.slice(1, cap[0].length - 1)\n };\n }\n }\n }\n };\n\n _proto.codespan = function codespan(src) {\n var cap = this.rules.inline.code.exec(src);\n\n if (cap) {\n var text = cap[2].replace(/\\n/g, ' ');\n var hasNonSpaceChars = /[^ ]/.test(text);\n var hasSpaceCharsOnBothEnds = text.startsWith(' ') && text.endsWith(' ');\n\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n\n text = _escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text: text\n };\n }\n };\n\n _proto.br = function br(src) {\n var cap = this.rules.inline.br.exec(src);\n\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n };\n\n _proto.del = function del(src) {\n var cap = this.rules.inline.del.exec(src);\n\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[1]\n };\n }\n };\n\n _proto.autolink = function autolink(src, mangle) {\n var cap = this.rules.inline.autolink.exec(src);\n\n if (cap) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = _escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.url = function url(src, mangle) {\n var cap;\n\n if (cap = this.rules.inline.url.exec(src)) {\n var text, href;\n\n if (cap[2] === '@') {\n text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n var prevCapZero;\n\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n\n text = _escape(cap[0]);\n\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text: text,\n href: href,\n tokens: [{\n type: 'text',\n raw: text,\n text: text\n }]\n };\n }\n };\n\n _proto.inlineText = function inlineText(src, inRawBlock, smartypants) {\n var cap = this.rules.inline.text.exec(src);\n\n if (cap) {\n var text;\n\n if (inRawBlock) {\n text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n } else {\n text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n\n return {\n type: 'text',\n raw: cap[0],\n text: text\n };\n }\n };\n\n return Tokenizer;\n }();\n\n var noopTest$1 = helpers.noopTest,\n edit$1 = helpers.edit,\n merge$1 = helpers.merge;\n /**\n * Block-Level Grammar\n */\n\n var block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?:\\n+|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6}) +([^\\n]*?)(?: +#+)? *(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3})(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (6)\n + '|<(?!script|pre|style)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) open tag\n + '|</(?!script|pre|style)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:\\\\n{2,}|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n nptable: noopTest$1,\n table: noopTest$1,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html)[^\\n]+)*)/,\n text: /^[^\\n]+/\n };\n block._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n block._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n block.def = edit$1(block.def).replace('label', block._label).replace('title', block._title).getRegex();\n block.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n block.item = /^( *)(bull) ?[^\\n]*(?:\\n(?!\\1bull ?)[^\\n]*)*/;\n block.item = edit$1(block.item, 'gm').replace(/bull/g, block.bullet).getRegex();\n block.list = edit$1(block.list).replace(/bull/g, block.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block.def.source + ')').getRegex();\n block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n block._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\n block.html = edit$1(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n block.paragraph = edit$1(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n block.blockquote = edit$1(block.blockquote).replace('paragraph', block.paragraph).getRegex();\n /**\n * Normal Block Grammar\n */\n\n block.normal = merge$1({}, block);\n /**\n * GFM Block Grammar\n */\n\n block.gfm = merge$1({}, block.normal, {\n nptable: '^ *([^|\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' *([-:]+ *\\\\|[-| :]*)' // Align\n + '(?:\\\\n((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)',\n // Cells\n table: '^ *\\\\|(.+)\\\\n' // Header\n + ' *\\\\|?( *[-:]+[-| :]*)' // Align\n + '(?:\\\\n *((?:(?!\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n });\n block.gfm.nptable = edit$1(block.gfm.nptable).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n block.gfm.table = edit$1(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n /**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\n block.pedantic = merge$1({}, block.normal, {\n html: edit$1('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/,\n fences: noopTest$1,\n // fences not supported\n paragraph: edit$1(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n });\n /**\n * Inline-Level Grammar\n */\n\n var inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest$1,\n tag: '^comment' + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n strong: {\n start: /^(?:(\\*\\*(?=[*punctuation]))|\\*\\*)(?![\\s])|__/,\n // (1) returns if starts w/ punctuation\n middle: /^\\*\\*(?:(?:(?!overlapSkip)(?:[^*]|\\\\\\*)|overlapSkip)|\\*(?:(?!overlapSkip)(?:[^*]|\\\\\\*)|overlapSkip)*?\\*)+?\\*\\*$|^__(?![\\s])((?:(?:(?!overlapSkip)(?:[^_]|\\\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\\\_)|overlapSkip)*?_)+?)__$/,\n endAst: /[^punctuation\\s]\\*\\*(?!\\*)|[punctuation]\\*\\*(?!\\*)(?:(?=[punctuation\\s]|$))/,\n // last char can't be punct, or final * must also be followed by punct (or endline)\n endUnd: /[^\\s]__(?!_)(?:(?=[punctuation\\s])|$)/ // last char can't be a space, and final _ must preceed punct or \\s (or endline)\n\n },\n em: {\n start: /^(?:(\\*(?=[punctuation]))|\\*)(?![*\\s])|_/,\n // (1) returns if starts w/ punctuation\n middle: /^\\*(?:(?:(?!overlapSkip)(?:[^*]|\\\\\\*)|overlapSkip)|\\*(?:(?!overlapSkip)(?:[^*]|\\\\\\*)|overlapSkip)*?\\*)+?\\*$|^_(?![_\\s])(?:(?:(?!overlapSkip)(?:[^_]|\\\\_)|overlapSkip)|_(?:(?!overlapSkip)(?:[^_]|\\\\_)|overlapSkip)*?_)+?_$/,\n endAst: /[^punctuation\\s]\\*(?!\\*)|[punctuation]\\*(?!\\*)(?:(?=[punctuation\\s]|$))/,\n // last char can't be punct, or final * must also be followed by punct (or endline)\n endUnd: /[^\\s]_(?!_)(?:(?=[punctuation\\s])|$)/ // last char can't be a space, and final _ must preceed punct or \\s (or endline)\n\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest$1,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*]|\\b_|$)|[^ ](?= {2,}\\n))|(?= {2,}\\n))/,\n punctuation: /^([\\s*punctuation])/\n }; // list of punctuation marks from common mark spec\n // without * and _ to workaround cases with double emphasis\n\n inline._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\n inline.punctuation = edit$1(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>\n\n inline._blockSkip = '\\\\[[^\\\\]]*?\\\\]\\\\([^\\\\)]*?\\\\)|`[^`]*?`|<[^>]*?>';\n inline._overlapSkip = '__[^_]*?__|\\\\*\\\\*\\\\[^\\\\*\\\\]*?\\\\*\\\\*';\n inline._comment = edit$1(block._comment).replace('(?:-->|$)', '-->').getRegex();\n inline.em.start = edit$1(inline.em.start).replace(/punctuation/g, inline._punctuation).getRegex();\n inline.em.middle = edit$1(inline.em.middle).replace(/punctuation/g, inline._punctuation).replace(/overlapSkip/g, inline._overlapSkip).getRegex();\n inline.em.endAst = edit$1(inline.em.endAst, 'g').replace(/punctuation/g, inline._punctuation).getRegex();\n inline.em.endUnd = edit$1(inline.em.endUnd, 'g').replace(/punctuation/g, inline._punctuation).getRegex();\n inline.strong.start = edit$1(inline.strong.start).replace(/punctuation/g, inline._punctuation).getRegex();\n inline.strong.middle = edit$1(inline.strong.middle).replace(/punctuation/g, inline._punctuation).replace(/blockSkip/g, inline._blockSkip).getRegex();\n inline.strong.endAst = edit$1(inline.strong.endAst, 'g').replace(/punctuation/g, inline._punctuation).getRegex();\n inline.strong.endUnd = edit$1(inline.strong.endUnd, 'g').replace(/punctuation/g, inline._punctuation).getRegex();\n inline.blockSkip = edit$1(inline._blockSkip, 'g').getRegex();\n inline.overlapSkip = edit$1(inline._overlapSkip, 'g').getRegex();\n inline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n inline.autolink = edit$1(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();\n inline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n inline.tag = edit$1(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();\n inline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n inline._href = /<(?:\\\\[<>]?|[^\\s<>\\\\])*>|[^\\s\\x00-\\x1f]*/;\n inline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n inline.link = edit$1(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();\n inline.reflink = edit$1(inline.reflink).replace('label', inline._label).getRegex();\n inline.reflinkSearch = edit$1(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();\n /**\n * Normal Inline Grammar\n */\n\n inline.normal = merge$1({}, inline);\n /**\n * Pedantic Inline Grammar\n */\n\n inline.pedantic = merge$1({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit$1(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline._label).getRegex(),\n reflink: edit$1(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline._label).getRegex()\n });\n /**\n * GFM Inline Grammar\n */\n\n inline.gfm = merge$1({}, inline.normal, {\n escape: edit$1(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^~+(?=\\S)([\\s\\S]*?\\S)~+/,\n text: /^(`+|[^`])(?:[\\s\\S]*?(?:(?=[\\\\<!\\[`*~]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))|(?= {2,}\\n|[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@))/\n });\n inline.gfm.url = edit$1(inline.gfm.url, 'i').replace('email', inline.gfm._extended_email).getRegex();\n /**\n * GFM + Line Breaks Inline Grammar\n */\n\n inline.breaks = merge$1({}, inline.gfm, {\n br: edit$1(inline.br).replace('{2,}', '*').getRegex(),\n text: edit$1(inline.gfm.text).replace('\\\\b_', '\\\\b_| {2,}\\\\n').replace(/\\{2,\\}/g, '*').getRegex()\n });\n var rules = {\n block: block,\n inline: inline\n };\n\n var defaults$2 = defaults.defaults;\n var block$1 = rules.block,\n inline$1 = rules.inline;\n /**\n * smartypants text replacement\n */\n\n function smartypants(text) {\n return text // em-dashes\n .replace(/---/g, \"\\u2014\") // en-dashes\n .replace(/--/g, \"\\u2013\") // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\") // closing singles & apostrophes\n .replace(/'/g, \"\\u2019\") // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\") // closing doubles\n .replace(/\"/g, \"\\u201D\") // ellipses\n .replace(/\\.{3}/g, \"\\u2026\");\n }\n /**\n * mangle email addresses\n */\n\n\n function mangle(text) {\n var out = '',\n i,\n ch;\n var l = text.length;\n\n for (i = 0; i < l; i++) {\n ch = text.charCodeAt(i);\n\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n\n out += '&#' + ch + ';';\n }\n\n return out;\n }\n /**\n * Block Lexer\n */\n\n\n var Lexer_1 = /*#__PURE__*/function () {\n function Lexer(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults$2;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer_1();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n var rules = {\n block: block$1.normal,\n inline: inline$1.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block$1.pedantic;\n rules.inline = inline$1.pedantic;\n } else if (this.options.gfm) {\n rules.block = block$1.gfm;\n\n if (this.options.breaks) {\n rules.inline = inline$1.breaks;\n } else {\n rules.inline = inline$1.gfm;\n }\n }\n\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n\n\n /**\n * Static Lex Method\n */\n Lexer.lex = function lex(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Preprocessing\n */\n ;\n\n var _proto = Lexer.prototype;\n\n _proto.lex = function lex(src) {\n src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, ' ');\n this.blockTokens(src, this.tokens, true);\n this.inline(this.tokens);\n return this.tokens;\n }\n /**\n * Lexing\n */\n ;\n\n _proto.blockTokens = function blockTokens(src, tokens, top) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (top === void 0) {\n top = true;\n }\n\n src = src.replace(/^ +$/gm, '');\n var token, i, l, lastToken;\n\n while (src) {\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n }\n\n continue;\n } // code\n\n\n if (token = this.tokenizer.code(src, tokens)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n } else {\n lastToken = tokens[tokens.length - 1];\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n }\n\n continue;\n } // fences\n\n\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // heading\n\n\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // table no leading pipe (gfm)\n\n\n if (token = this.tokenizer.nptable(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // hr\n\n\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // blockquote\n\n\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.blockTokens(token.text, [], top);\n tokens.push(token);\n continue;\n } // list\n\n\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n l = token.items.length;\n\n for (i = 0; i < l; i++) {\n token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);\n }\n\n tokens.push(token);\n continue;\n } // html\n\n\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // def\n\n\n if (top && (token = this.tokenizer.def(src))) {\n src = src.substring(token.raw.length);\n\n if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n\n continue;\n } // table (gfm)\n\n\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // lheading\n\n\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // top-level paragraph\n\n\n if (top && (token = this.tokenizer.paragraph(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.text(src, tokens)) {\n src = src.substring(token.raw.length);\n\n if (token.type) {\n tokens.push(token);\n } else {\n lastToken = tokens[tokens.length - 1];\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n }\n\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _proto.inline = function inline(tokens) {\n var i, j, k, l2, row, token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'paragraph':\n case 'text':\n case 'heading':\n {\n token.tokens = [];\n this.inlineTokens(token.text, token.tokens);\n break;\n }\n\n case 'table':\n {\n token.tokens = {\n header: [],\n cells: []\n }; // header\n\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n token.tokens.header[j] = [];\n this.inlineTokens(token.header[j], token.tokens.header[j]);\n } // cells\n\n\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.cells[j];\n token.tokens.cells[j] = [];\n\n for (k = 0; k < row.length; k++) {\n token.tokens.cells[j][k] = [];\n this.inlineTokens(row[k], token.tokens.cells[j][k]);\n }\n }\n\n break;\n }\n\n case 'blockquote':\n {\n this.inline(token.tokens);\n break;\n }\n\n case 'list':\n {\n l2 = token.items.length;\n\n for (j = 0; j < l2; j++) {\n this.inline(token.items[j].tokens);\n }\n\n break;\n }\n }\n }\n\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n ;\n\n _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock, prevChar) {\n if (tokens === void 0) {\n tokens = [];\n }\n\n if (inLink === void 0) {\n inLink = false;\n }\n\n if (inRawBlock === void 0) {\n inRawBlock = false;\n }\n\n if (prevChar === void 0) {\n prevChar = '';\n }\n\n var token; // String with links masked to avoid interference with em and strong\n\n var maskedSrc = src;\n var match; // Mask out reflinks\n\n if (this.tokens.links) {\n var links = Object.keys(this.tokens.links);\n\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n } // Mask out other blocks\n\n\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n while (src) {\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // tag\n\n\n if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {\n src = src.substring(token.raw.length);\n inLink = token.inLink;\n inRawBlock = token.inRawBlock;\n tokens.push(token);\n continue;\n } // link\n\n\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // reflink, nolink\n\n\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n\n if (token.type === 'link') {\n token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);\n }\n\n tokens.push(token);\n continue;\n } // strong\n\n\n if (token = this.tokenizer.strong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // em\n\n\n if (token = this.tokenizer.em(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // code\n\n\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // br\n\n\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // del (gfm)\n\n\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);\n tokens.push(token);\n continue;\n } // autolink\n\n\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // url (gfm)\n\n\n if (!inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n } // text\n\n\n if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {\n src = src.substring(token.raw.length);\n prevChar = token.raw.slice(-1);\n tokens.push(token);\n continue;\n }\n\n if (src) {\n var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n };\n\n _createClass(Lexer, null, [{\n key: \"rules\",\n get: function get() {\n return {\n block: block$1,\n inline: inline$1\n };\n }\n }]);\n\n return Lexer;\n }();\n\n var defaults$3 = defaults.defaults;\n var cleanUrl$1 = helpers.cleanUrl,\n escape$1 = helpers.escape;\n /**\n * Renderer\n */\n\n var Renderer_1 = /*#__PURE__*/function () {\n function Renderer(options) {\n this.options = options || defaults$3;\n }\n\n var _proto = Renderer.prototype;\n\n _proto.code = function code(_code, infostring, escaped) {\n var lang = (infostring || '').match(/\\S*/)[0];\n\n if (this.options.highlight) {\n var out = this.options.highlight(_code, lang);\n\n if (out != null && out !== _code) {\n escaped = true;\n _code = out;\n }\n }\n\n if (!lang) {\n return '<pre><code>' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n }\n\n return '<pre><code class=\"' + this.options.langPrefix + escape$1(lang, true) + '\">' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n };\n\n _proto.blockquote = function blockquote(quote) {\n return '<blockquote>\\n' + quote + '</blockquote>\\n';\n };\n\n _proto.html = function html(_html) {\n return _html;\n };\n\n _proto.heading = function heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return '<h' + level + ' id=\"' + this.options.headerPrefix + slugger.slug(raw) + '\">' + text + '</h' + level + '>\\n';\n } // ignore IDs\n\n\n return '<h' + level + '>' + text + '</h' + level + '>\\n';\n };\n\n _proto.hr = function hr() {\n return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n };\n\n _proto.list = function list(body, ordered, start) {\n var type = ordered ? 'ol' : 'ul',\n startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n };\n\n _proto.listitem = function listitem(text) {\n return '<li>' + text + '</li>\\n';\n };\n\n _proto.checkbox = function checkbox(checked) {\n return '<input ' + (checked ? 'checked=\"\" ' : '') + 'disabled=\"\" type=\"checkbox\"' + (this.options.xhtml ? ' /' : '') + '> ';\n };\n\n _proto.paragraph = function paragraph(text) {\n return '<p>' + text + '</p>\\n';\n };\n\n _proto.table = function table(header, body) {\n if (body) body = '<tbody>' + body + '</tbody>';\n return '<table>\\n' + '<thead>\\n' + header + '</thead>\\n' + body + '</table>\\n';\n };\n\n _proto.tablerow = function tablerow(content) {\n return '<tr>\\n' + content + '</tr>\\n';\n };\n\n _proto.tablecell = function tablecell(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n return tag + content + '</' + type + '>\\n';\n } // span level renderer\n ;\n\n _proto.strong = function strong(text) {\n return '<strong>' + text + '</strong>';\n };\n\n _proto.em = function em(text) {\n return '<em>' + text + '</em>';\n };\n\n _proto.codespan = function codespan(text) {\n return '<code>' + text + '</code>';\n };\n\n _proto.br = function br() {\n return this.options.xhtml ? '<br/>' : '<br>';\n };\n\n _proto.del = function del(text) {\n return '<del>' + text + '</del>';\n };\n\n _proto.link = function link(href, title, text) {\n href = cleanUrl$1(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '<a href=\"' + escape$1(href) + '\"';\n\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n\n out += '>' + text + '</a>';\n return out;\n };\n\n _proto.image = function image(href, title, text) {\n href = cleanUrl$1(this.options.sanitize, this.options.baseUrl, href);\n\n if (href === null) {\n return text;\n }\n\n var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n\n out += this.options.xhtml ? '/>' : '>';\n return out;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n return Renderer;\n }();\n\n /**\n * TextRenderer\n * returns only the textual part of the token\n */\n var TextRenderer_1 = /*#__PURE__*/function () {\n function TextRenderer() {}\n\n var _proto = TextRenderer.prototype;\n\n // no need for block level renderers\n _proto.strong = function strong(text) {\n return text;\n };\n\n _proto.em = function em(text) {\n return text;\n };\n\n _proto.codespan = function codespan(text) {\n return text;\n };\n\n _proto.del = function del(text) {\n return text;\n };\n\n _proto.html = function html(text) {\n return text;\n };\n\n _proto.text = function text(_text) {\n return _text;\n };\n\n _proto.link = function link(href, title, text) {\n return '' + text;\n };\n\n _proto.image = function image(href, title, text) {\n return '' + text;\n };\n\n _proto.br = function br() {\n return '';\n };\n\n return TextRenderer;\n }();\n\n /**\n * Slugger generates header id\n */\n var Slugger_1 = /*#__PURE__*/function () {\n function Slugger() {\n this.seen = {};\n }\n\n var _proto = Slugger.prototype;\n\n _proto.serialize = function serialize(value) {\n return value.toLowerCase().trim() // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n }\n /**\n * Finds the next safe (unique) slug to use\n */\n ;\n\n _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n var slug = originalSlug;\n var occurenceAccumulator = 0;\n\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n\n return slug;\n }\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n ;\n\n _proto.slug = function slug(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n var slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n };\n\n return Slugger;\n }();\n\n var defaults$4 = defaults.defaults;\n var unescape$1 = helpers.unescape;\n /**\n * Parsing & Compiling\n */\n\n var Parser_1 = /*#__PURE__*/function () {\n function Parser(options) {\n this.options = options || defaults$4;\n this.options.renderer = this.options.renderer || new Renderer_1();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer_1();\n this.slugger = new Slugger_1();\n }\n /**\n * Static Parse Method\n */\n\n\n Parser.parse = function parse(tokens, options) {\n var parser = new Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Parse Loop\n */\n ;\n\n var _proto = Parser.prototype;\n\n _proto.parse = function parse(tokens, top) {\n if (top === void 0) {\n top = true;\n }\n\n var out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'space':\n {\n continue;\n }\n\n case 'hr':\n {\n out += this.renderer.hr();\n continue;\n }\n\n case 'heading':\n {\n out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape$1(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n continue;\n }\n\n case 'code':\n {\n out += this.renderer.code(token.text, token.lang, token.escaped);\n continue;\n }\n\n case 'table':\n {\n header = ''; // header\n\n cell = '';\n l2 = token.header.length;\n\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), {\n header: true,\n align: token.align[j]\n });\n }\n\n header += this.renderer.tablerow(cell);\n body = '';\n l2 = token.cells.length;\n\n for (j = 0; j < l2; j++) {\n row = token.tokens.cells[j];\n cell = '';\n l3 = row.length;\n\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k]), {\n header: false,\n align: token.align[k]\n });\n }\n\n body += this.renderer.tablerow(cell);\n }\n\n out += this.renderer.table(header, body);\n continue;\n }\n\n case 'blockquote':\n {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n\n case 'list':\n {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n body = '';\n\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n itemBody = '';\n\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'text') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n\n case 'html':\n {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n\n case 'paragraph':\n {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n\n case 'text':\n {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n ;\n\n _proto.parseInline = function parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n var out = '',\n i,\n token;\n var l = tokens.length;\n\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n switch (token.type) {\n case 'escape':\n {\n out += renderer.text(token.text);\n break;\n }\n\n case 'html':\n {\n out += renderer.html(token.text);\n break;\n }\n\n case 'link':\n {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'image':\n {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n\n case 'strong':\n {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'em':\n {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'codespan':\n {\n out += renderer.codespan(token.text);\n break;\n }\n\n case 'br':\n {\n out += renderer.br();\n break;\n }\n\n case 'del':\n {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n\n case 'text':\n {\n out += renderer.text(token.text);\n break;\n }\n\n default:\n {\n var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n };\n\n return Parser;\n }();\n\n var merge$2 = helpers.merge,\n checkSanitizeDeprecation$1 = helpers.checkSanitizeDeprecation,\n escape$2 = helpers.escape;\n var getDefaults = defaults.getDefaults,\n changeDefaults = defaults.changeDefaults,\n defaults$5 = defaults.defaults;\n /**\n * Marked\n */\n\n function marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge$2({}, marked.defaults, opt || {});\n checkSanitizeDeprecation$1(opt);\n\n if (callback) {\n var highlight = opt.highlight;\n var tokens;\n\n try {\n tokens = Lexer_1.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n var done = function done(err) {\n var out;\n\n if (!err) {\n try {\n out = Parser_1.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n return err ? callback(err) : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n if (!tokens.length) return done();\n var pending = 0;\n marked.walkTokens(tokens, function (token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(function () {\n highlight(token.text, token.lang, function (err, code) {\n if (err) {\n return done(err);\n }\n\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n var _tokens = Lexer_1.lex(src, opt);\n\n if (opt.walkTokens) {\n marked.walkTokens(_tokens, opt.walkTokens);\n }\n\n return Parser_1.parse(_tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n if (opt.silent) {\n return '<p>An error occurred:</p><pre>' + escape$2(e.message + '', true) + '</pre>';\n }\n\n throw e;\n }\n }\n /**\n * Options\n */\n\n\n marked.options = marked.setOptions = function (opt) {\n merge$2(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n };\n\n marked.getDefaults = getDefaults;\n marked.defaults = defaults$5;\n /**\n * Use Extension\n */\n\n marked.use = function (extension) {\n var opts = merge$2({}, extension);\n\n if (extension.renderer) {\n (function () {\n var renderer = marked.defaults.renderer || new Renderer_1();\n\n var _loop = function _loop(prop) {\n var prevRenderer = renderer[prop];\n\n renderer[prop] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var ret = extension.renderer[prop].apply(renderer, args);\n\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.renderer) {\n _loop(prop);\n }\n\n opts.renderer = renderer;\n })();\n }\n\n if (extension.tokenizer) {\n (function () {\n var tokenizer = marked.defaults.tokenizer || new Tokenizer_1();\n\n var _loop2 = function _loop2(prop) {\n var prevTokenizer = tokenizer[prop];\n\n tokenizer[prop] = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var ret = extension.tokenizer[prop].apply(tokenizer, args);\n\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n\n return ret;\n };\n };\n\n for (var prop in extension.tokenizer) {\n _loop2(prop);\n }\n\n opts.tokenizer = tokenizer;\n })();\n }\n\n if (extension.walkTokens) {\n var walkTokens = marked.defaults.walkTokens;\n\n opts.walkTokens = function (token) {\n extension.walkTokens(token);\n\n if (walkTokens) {\n walkTokens(token);\n }\n };\n }\n\n marked.setOptions(opts);\n };\n /**\n * Run callback for every token\n */\n\n\n marked.walkTokens = function (tokens, callback) {\n for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n var token = _step.value;\n callback(token);\n\n switch (token.type) {\n case 'table':\n {\n for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {\n var cell = _step2.value;\n marked.walkTokens(cell, callback);\n }\n\n for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _step3; !(_step3 = _iterator3()).done;) {\n var row = _step3.value;\n\n for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n var _cell = _step4.value;\n marked.walkTokens(_cell, callback);\n }\n }\n\n break;\n }\n\n case 'list':\n {\n marked.walkTokens(token.items, callback);\n break;\n }\n\n default:\n {\n if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n };\n /**\n * Expose\n */\n\n\n marked.Parser = Parser_1;\n marked.parser = Parser_1.parse;\n marked.Renderer = Renderer_1;\n marked.TextRenderer = TextRenderer_1;\n marked.Lexer = Lexer_1;\n marked.lexer = Lexer_1.lex;\n marked.Tokenizer = Tokenizer_1;\n marked.Slugger = Slugger_1;\n marked.parse = marked;\n var marked_1 = marked;\n\n return marked_1;\n\n})));\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { VSBuffer } from './buffer.js';\r\nimport { URI } from './uri.js';\r\nexport function parse(text) {\r\n let data = JSON.parse(text);\r\n data = revive(data);\r\n return data;\r\n}\r\nexport function revive(obj, depth = 0) {\r\n if (!obj || depth > 200) {\r\n return obj;\r\n }\r\n if (typeof obj === 'object') {\r\n switch (obj.$mid) {\r\n case 1: return URI.revive(obj);\r\n case 2: return new RegExp(obj.source, obj.flags);\r\n }\r\n if (obj instanceof VSBuffer\r\n || obj instanceof Uint8Array) {\r\n return obj;\r\n }\r\n if (Array.isArray(obj)) {\r\n for (let i = 0; i < obj.length; ++i) {\r\n obj[i] = revive(obj[i], depth + 1);\r\n }\r\n }\r\n else {\r\n // walk object\r\n for (const key in obj) {\r\n if (Object.hasOwnProperty.call(obj, key)) {\r\n obj[key] = revive(obj[key], depth + 1);\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { basename, posix } from './path.js';\r\nimport { startsWithUTF8BOM } from './strings.js';\r\nimport { match } from './glob.js';\r\nimport { Schemas } from './network.js';\r\nimport { DataUri } from './resources.js';\r\nexport const MIME_TEXT = 'text/plain';\r\nexport const MIME_UNKNOWN = 'application/unknown';\r\nlet registeredAssociations = [];\r\nlet nonUserRegisteredAssociations = [];\r\nlet userRegisteredAssociations = [];\r\n/**\r\n * Associate a text mime to the registry.\r\n */\r\nexport function registerTextMime(association, warnOnOverwrite = false) {\r\n // Register\r\n const associationItem = toTextMimeAssociationItem(association);\r\n registeredAssociations.push(associationItem);\r\n if (!associationItem.userConfigured) {\r\n nonUserRegisteredAssociations.push(associationItem);\r\n }\r\n else {\r\n userRegisteredAssociations.push(associationItem);\r\n }\r\n // Check for conflicts unless this is a user configured association\r\n if (warnOnOverwrite && !associationItem.userConfigured) {\r\n registeredAssociations.forEach(a => {\r\n if (a.mime === associationItem.mime || a.userConfigured) {\r\n return; // same mime or userConfigured is ok\r\n }\r\n if (associationItem.extension && a.extension === associationItem.extension) {\r\n console.warn(`Overwriting extension <<${associationItem.extension}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.filename && a.filename === associationItem.filename) {\r\n console.warn(`Overwriting filename <<${associationItem.filename}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.filepattern && a.filepattern === associationItem.filepattern) {\r\n console.warn(`Overwriting filepattern <<${associationItem.filepattern}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n if (associationItem.firstline && a.firstline === associationItem.firstline) {\r\n console.warn(`Overwriting firstline <<${associationItem.firstline}>> to now point to mime <<${associationItem.mime}>>`);\r\n }\r\n });\r\n }\r\n}\r\nfunction toTextMimeAssociationItem(association) {\r\n return {\r\n id: association.id,\r\n mime: association.mime,\r\n filename: association.filename,\r\n extension: association.extension,\r\n filepattern: association.filepattern,\r\n firstline: association.firstline,\r\n userConfigured: association.userConfigured,\r\n filenameLowercase: association.filename ? association.filename.toLowerCase() : undefined,\r\n extensionLowercase: association.extension ? association.extension.toLowerCase() : undefined,\r\n filepatternLowercase: association.filepattern ? association.filepattern.toLowerCase() : undefined,\r\n filepatternOnPath: association.filepattern ? association.filepattern.indexOf(posix.sep) >= 0 : false\r\n };\r\n}\r\n/**\r\n * Given a file, return the best matching mime type for it\r\n */\r\nexport function guessMimeTypes(resource, firstLine) {\r\n let path;\r\n if (resource) {\r\n switch (resource.scheme) {\r\n case Schemas.file:\r\n path = resource.fsPath;\r\n break;\r\n case Schemas.data:\r\n const metadata = DataUri.parseMetaData(resource);\r\n path = metadata.get(DataUri.META_DATA_LABEL);\r\n break;\r\n default:\r\n path = resource.path;\r\n }\r\n }\r\n if (!path) {\r\n return [MIME_UNKNOWN];\r\n }\r\n path = path.toLowerCase();\r\n const filename = basename(path);\r\n // 1.) User configured mappings have highest priority\r\n const configuredMime = guessMimeTypeByPath(path, filename, userRegisteredAssociations);\r\n if (configuredMime) {\r\n return [configuredMime, MIME_TEXT];\r\n }\r\n // 2.) Registered mappings have middle priority\r\n const registeredMime = guessMimeTypeByPath(path, filename, nonUserRegisteredAssociations);\r\n if (registeredMime) {\r\n return [registeredMime, MIME_TEXT];\r\n }\r\n // 3.) Firstline has lowest priority\r\n if (firstLine) {\r\n const firstlineMime = guessMimeTypeByFirstline(firstLine);\r\n if (firstlineMime) {\r\n return [firstlineMime, MIME_TEXT];\r\n }\r\n }\r\n return [MIME_UNKNOWN];\r\n}\r\nfunction guessMimeTypeByPath(path, filename, associations) {\r\n let filenameMatch = null;\r\n let patternMatch = null;\r\n let extensionMatch = null;\r\n // We want to prioritize associations based on the order they are registered so that the last registered\r\n // association wins over all other. This is for https://github.com/Microsoft/vscode/issues/20074\r\n for (let i = associations.length - 1; i >= 0; i--) {\r\n const association = associations[i];\r\n // First exact name match\r\n if (filename === association.filenameLowercase) {\r\n filenameMatch = association;\r\n break; // take it!\r\n }\r\n // Longest pattern match\r\n if (association.filepattern) {\r\n if (!patternMatch || association.filepattern.length > patternMatch.filepattern.length) {\r\n const target = association.filepatternOnPath ? path : filename; // match on full path if pattern contains path separator\r\n if (match(association.filepatternLowercase, target)) {\r\n patternMatch = association;\r\n }\r\n }\r\n }\r\n // Longest extension match\r\n if (association.extension) {\r\n if (!extensionMatch || association.extension.length > extensionMatch.extension.length) {\r\n if (filename.endsWith(association.extensionLowercase)) {\r\n extensionMatch = association;\r\n }\r\n }\r\n }\r\n }\r\n // 1.) Exact name match has second highest prio\r\n if (filenameMatch) {\r\n return filenameMatch.mime;\r\n }\r\n // 2.) Match on pattern\r\n if (patternMatch) {\r\n return patternMatch.mime;\r\n }\r\n // 3.) Match on extension comes next\r\n if (extensionMatch) {\r\n return extensionMatch.mime;\r\n }\r\n return null;\r\n}\r\nfunction guessMimeTypeByFirstline(firstLine) {\r\n if (startsWithUTF8BOM(firstLine)) {\r\n firstLine = firstLine.substr(1);\r\n }\r\n if (firstLine.length > 0) {\r\n // We want to prioritize associations based on the order they are registered so that the last registered\r\n // association wins over all other. This is for https://github.com/Microsoft/vscode/issues/20074\r\n for (let i = registeredAssociations.length - 1; i >= 0; i--) {\r\n const association = registeredAssociations[i];\r\n if (!association.firstline) {\r\n continue;\r\n }\r\n const matches = firstLine.match(association.firstline);\r\n if (matches && matches.length > 0) {\r\n return association.mime;\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ArrayNavigator {\r\n constructor(items, start = 0, end = items.length, index = start - 1) {\r\n this.items = items;\r\n this.start = start;\r\n this.end = end;\r\n this.index = index;\r\n }\r\n current() {\r\n if (this.index === this.start - 1 || this.index === this.end) {\r\n return null;\r\n }\r\n return this.items[this.index];\r\n }\r\n next() {\r\n this.index = Math.min(this.index + 1, this.end);\r\n return this.current();\r\n }\r\n previous() {\r\n this.index = Math.max(this.index - 1, this.start - 1);\r\n return this.current();\r\n }\r\n first() {\r\n this.index = this.start;\r\n return this.current();\r\n }\r\n last() {\r\n this.index = this.end - 1;\r\n return this.current();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from './uri.js';\r\nimport * as platform from './platform.js';\r\nexport var Schemas;\r\n(function (Schemas) {\r\n /**\r\n * A schema that is used for models that exist in memory\r\n * only and that have no correspondence on a server or such.\r\n */\r\n Schemas.inMemory = 'inmemory';\r\n /**\r\n * A schema that is used for setting files\r\n */\r\n Schemas.vscode = 'vscode';\r\n /**\r\n * A schema that is used for internal private files\r\n */\r\n Schemas.internal = 'private';\r\n /**\r\n * A walk-through document.\r\n */\r\n Schemas.walkThrough = 'walkThrough';\r\n /**\r\n * An embedded code snippet.\r\n */\r\n Schemas.walkThroughSnippet = 'walkThroughSnippet';\r\n Schemas.http = 'http';\r\n Schemas.https = 'https';\r\n Schemas.file = 'file';\r\n Schemas.mailto = 'mailto';\r\n Schemas.untitled = 'untitled';\r\n Schemas.data = 'data';\r\n Schemas.command = 'command';\r\n Schemas.vscodeRemote = 'vscode-remote';\r\n Schemas.vscodeRemoteResource = 'vscode-remote-resource';\r\n Schemas.userData = 'vscode-userdata';\r\n Schemas.vscodeCustomEditor = 'vscode-custom-editor';\r\n Schemas.vscodeNotebook = 'vscode-notebook';\r\n Schemas.vscodeNotebookCell = 'vscode-notebook-cell';\r\n Schemas.vscodeSettings = 'vscode-settings';\r\n Schemas.webviewPanel = 'webview-panel';\r\n /**\r\n * Scheme used for loading the wrapper html and script in webviews.\r\n */\r\n Schemas.vscodeWebview = 'vscode-webview';\r\n /**\r\n * Scheme used for loading resources inside of webviews.\r\n */\r\n Schemas.vscodeWebviewResource = 'vscode-webview-resource';\r\n /**\r\n * Scheme used for extension pages\r\n */\r\n Schemas.extension = 'extension';\r\n})(Schemas || (Schemas = {}));\r\nclass RemoteAuthoritiesImpl {\r\n constructor() {\r\n this._hosts = Object.create(null);\r\n this._ports = Object.create(null);\r\n this._connectionTokens = Object.create(null);\r\n this._preferredWebSchema = 'http';\r\n this._delegate = null;\r\n }\r\n setPreferredWebSchema(schema) {\r\n this._preferredWebSchema = schema;\r\n }\r\n rewrite(uri) {\r\n if (this._delegate) {\r\n return this._delegate(uri);\r\n }\r\n const authority = uri.authority;\r\n let host = this._hosts[authority];\r\n if (host && host.indexOf(':') !== -1) {\r\n host = `[${host}]`;\r\n }\r\n const port = this._ports[authority];\r\n const connectionToken = this._connectionTokens[authority];\r\n let query = `path=${encodeURIComponent(uri.path)}`;\r\n if (typeof connectionToken === 'string') {\r\n query += `&tkn=${encodeURIComponent(connectionToken)}`;\r\n }\r\n return URI.from({\r\n scheme: platform.isWeb ? this._preferredWebSchema : Schemas.vscodeRemoteResource,\r\n authority: `${host}:${port}`,\r\n path: `/vscode-remote-resource`,\r\n query\r\n });\r\n }\r\n}\r\nexport const RemoteAuthorities = new RemoteAuthoritiesImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function clamp(value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\nexport class MovingAverage {\r\n constructor() {\r\n this._n = 1;\r\n this._val = 0;\r\n }\r\n update(value) {\r\n this._val = this._val + (value - this._val) / this._n;\r\n this._n += 1;\r\n return this;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isObject, isUndefinedOrNull, isArray } from './types.js';\r\nexport function deepClone(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n if (obj instanceof RegExp) {\r\n // See https://github.com/Microsoft/TypeScript/issues/10990\r\n return obj;\r\n }\r\n const result = Array.isArray(obj) ? [] : {};\r\n Object.keys(obj).forEach((key) => {\r\n if (obj[key] && typeof obj[key] === 'object') {\r\n result[key] = deepClone(obj[key]);\r\n }\r\n else {\r\n result[key] = obj[key];\r\n }\r\n });\r\n return result;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n return obj;\r\n }\r\n const stack = [obj];\r\n while (stack.length > 0) {\r\n const obj = stack.shift();\r\n Object.freeze(obj);\r\n for (const key in obj) {\r\n if (_hasOwnProperty.call(obj, key)) {\r\n const prop = obj[key];\r\n if (typeof prop === 'object' && !Object.isFrozen(prop)) {\r\n stack.push(prop);\r\n }\r\n }\r\n }\r\n }\r\n return obj;\r\n}\r\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport function cloneAndChange(obj, changer) {\r\n return _cloneAndChange(obj, changer, new Set());\r\n}\r\nfunction _cloneAndChange(obj, changer, seen) {\r\n if (isUndefinedOrNull(obj)) {\r\n return obj;\r\n }\r\n const changed = changer(obj);\r\n if (typeof changed !== 'undefined') {\r\n return changed;\r\n }\r\n if (isArray(obj)) {\r\n const r1 = [];\r\n for (const e of obj) {\r\n r1.push(_cloneAndChange(e, changer, seen));\r\n }\r\n return r1;\r\n }\r\n if (isObject(obj)) {\r\n if (seen.has(obj)) {\r\n throw new Error('Cannot clone recursive data-structure');\r\n }\r\n seen.add(obj);\r\n const r2 = {};\r\n for (let i2 in obj) {\r\n if (_hasOwnProperty.call(obj, i2)) {\r\n r2[i2] = _cloneAndChange(obj[i2], changer, seen);\r\n }\r\n }\r\n seen.delete(obj);\r\n return r2;\r\n }\r\n return obj;\r\n}\r\n/**\r\n * Copies all properties of source into destination. The optional parameter \"overwrite\" allows to control\r\n * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite).\r\n */\r\nexport function mixin(destination, source, overwrite = true) {\r\n if (!isObject(destination)) {\r\n return source;\r\n }\r\n if (isObject(source)) {\r\n Object.keys(source).forEach(key => {\r\n if (key in destination) {\r\n if (overwrite) {\r\n if (isObject(destination[key]) && isObject(source[key])) {\r\n mixin(destination[key], source[key], overwrite);\r\n }\r\n else {\r\n destination[key] = source[key];\r\n }\r\n }\r\n }\r\n else {\r\n destination[key] = source[key];\r\n }\r\n });\r\n }\r\n return destination;\r\n}\r\nexport function assign(destination, ...sources) {\r\n sources.forEach(source => Object.keys(source).forEach(key => destination[key] = source[key]));\r\n return destination;\r\n}\r\nexport function equals(one, other) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (one === null || one === undefined || other === null || other === undefined) {\r\n return false;\r\n }\r\n if (typeof one !== typeof other) {\r\n return false;\r\n }\r\n if (typeof one !== 'object') {\r\n return false;\r\n }\r\n if ((Array.isArray(one)) !== (Array.isArray(other))) {\r\n return false;\r\n }\r\n let i;\r\n let key;\r\n if (Array.isArray(one)) {\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (i = 0; i < one.length; i++) {\r\n if (!equals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n }\r\n else {\r\n const oneKeys = [];\r\n for (key in one) {\r\n oneKeys.push(key);\r\n }\r\n oneKeys.sort();\r\n const otherKeys = [];\r\n for (key in other) {\r\n otherKeys.push(key);\r\n }\r\n otherKeys.sort();\r\n if (!equals(oneKeys, otherKeys)) {\r\n return false;\r\n }\r\n for (i = 0; i < oneKeys.length; i++) {\r\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function getOrDefault(obj, fn, defaultValue) {\r\n const result = fn(obj);\r\n return typeof result === 'undefined' ? defaultValue : result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\r\n// Copied from: https://github.com/nodejs/node/blob/v12.8.1/lib/path.js\r\n/**\r\n * Copyright Joyent, Inc. and other Node contributors.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a\r\n * copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to permit\r\n * persons to whom the Software is furnished to do so, subject to the\r\n * following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included\r\n * in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\nimport * as process from './process.js';\r\nconst CHAR_UPPERCASE_A = 65; /* A */\r\nconst CHAR_LOWERCASE_A = 97; /* a */\r\nconst CHAR_UPPERCASE_Z = 90; /* Z */\r\nconst CHAR_LOWERCASE_Z = 122; /* z */\r\nconst CHAR_DOT = 46; /* . */\r\nconst CHAR_FORWARD_SLASH = 47; /* / */\r\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\r\nconst CHAR_COLON = 58; /* : */\r\nconst CHAR_QUESTION_MARK = 63; /* ? */\r\nclass ErrorInvalidArgType extends Error {\r\n constructor(name, expected, actual) {\r\n // determiner: 'must be' or 'must not be'\r\n let determiner;\r\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\r\n determiner = 'must not be';\r\n expected = expected.replace(/^not /, '');\r\n }\r\n else {\r\n determiner = 'must be';\r\n }\r\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\r\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\r\n msg += `. Received type ${typeof actual}`;\r\n super(msg);\r\n this.code = 'ERR_INVALID_ARG_TYPE';\r\n }\r\n}\r\nfunction validateString(value, name) {\r\n if (typeof value !== 'string') {\r\n throw new ErrorInvalidArgType(name, 'string', value);\r\n }\r\n}\r\nfunction isPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\r\n}\r\nfunction isPosixPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH;\r\n}\r\nfunction isWindowsDeviceRoot(code) {\r\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\r\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\r\n}\r\n// Resolves . and .. elements in a path with directory names\r\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\r\n let res = '';\r\n let lastSegmentLength = 0;\r\n let lastSlash = -1;\r\n let dots = 0;\r\n let code = 0;\r\n for (let i = 0; i <= path.length; ++i) {\r\n if (i < path.length) {\r\n code = path.charCodeAt(i);\r\n }\r\n else if (isPathSeparator(code)) {\r\n break;\r\n }\r\n else {\r\n code = CHAR_FORWARD_SLASH;\r\n }\r\n if (isPathSeparator(code)) {\r\n if (lastSlash === i - 1 || dots === 1) {\r\n // NOOP\r\n }\r\n else if (dots === 2) {\r\n if (res.length < 2 || lastSegmentLength !== 2 ||\r\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\r\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\r\n if (res.length > 2) {\r\n const lastSlashIndex = res.lastIndexOf(separator);\r\n if (lastSlashIndex === -1) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n }\r\n else {\r\n res = res.slice(0, lastSlashIndex);\r\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n else if (res.length !== 0) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n }\r\n if (allowAboveRoot) {\r\n res += res.length > 0 ? `${separator}..` : '..';\r\n lastSegmentLength = 2;\r\n }\r\n }\r\n else {\r\n if (res.length > 0) {\r\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\r\n }\r\n else {\r\n res = path.slice(lastSlash + 1, i);\r\n }\r\n lastSegmentLength = i - lastSlash - 1;\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n }\r\n else if (code === CHAR_DOT && dots !== -1) {\r\n ++dots;\r\n }\r\n else {\r\n dots = -1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction _format(sep, pathObject) {\r\n if (pathObject === null || typeof pathObject !== 'object') {\r\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\r\n }\r\n const dir = pathObject.dir || pathObject.root;\r\n const base = pathObject.base ||\r\n `${pathObject.name || ''}${pathObject.ext || ''}`;\r\n if (!dir) {\r\n return base;\r\n }\r\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\r\n}\r\nexport const win32 = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedDevice = '';\r\n let resolvedTail = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1; i--) {\r\n let path;\r\n if (i >= 0) {\r\n path = pathSegments[i];\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n }\r\n else if (resolvedDevice.length === 0) {\r\n path = process.cwd();\r\n }\r\n else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive, or the process cwd if\r\n // the drive cwd is not available. We're sure the device is not\r\n // a UNC path at this points, because UNC paths are always absolute.\r\n path = process.env[`=${resolvedDevice}`] || process.cwd();\r\n // Verify that a cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (path === undefined ||\r\n path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\r\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n path = `${resolvedDevice}\\\\`;\r\n }\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let device = '';\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator\r\n rootEnd = 1;\r\n isAbsolute = true;\r\n }\r\n }\r\n else if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an\r\n // absolute path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len || j !== last) {\r\n // We matched a UNC root\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n if (device.length > 0) {\r\n if (resolvedDevice.length > 0) {\r\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n }\r\n else {\r\n resolvedDevice = device;\r\n }\r\n }\r\n if (resolvedAbsolute) {\r\n if (resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n else {\r\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\r\n resolvedAbsolute = isAbsolute;\r\n if (isAbsolute && resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n }\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n // Normalize the tail path\r\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\r\n return resolvedAbsolute ?\r\n `${resolvedDevice}\\\\${resolvedTail}` :\r\n `${resolvedDevice}${resolvedTail}` || '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = 0;\r\n let device;\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n // `path` contains just a single char, exit early to avoid\r\n // unnecessary work\r\n return isPosixPathSeparator(code) ? '\\\\' : path;\r\n }\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an absolute\r\n // path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n // Return the normalized version of the UNC root since there\r\n // is nothing left to process\r\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n let tail = rootEnd < len ?\r\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\r\n '';\r\n if (tail.length === 0 && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\r\n tail += '\\\\';\r\n }\r\n if (device === undefined) {\r\n return isAbsolute ? `\\\\${tail}` : tail;\r\n }\r\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const code = path.charCodeAt(0);\r\n return isPathSeparator(code) ||\r\n // Possible device root\r\n len > 2 &&\r\n isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isPathSeparator(path.charCodeAt(2));\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n let firstPart;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = firstPart = arg;\r\n }\r\n else {\r\n joined += `\\\\${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\r\n let needsReplace = true;\r\n let slashCount = 0;\r\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\r\n ++slashCount;\r\n const firstLen = firstPart.length;\r\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\r\n ++slashCount;\r\n if (firstLen > 2) {\r\n if (isPathSeparator(firstPart.charCodeAt(2))) {\r\n ++slashCount;\r\n }\r\n else {\r\n // We matched a UNC path in the first part\r\n needsReplace = false;\r\n }\r\n }\r\n }\r\n }\r\n if (needsReplace) {\r\n // Find any more consecutive slashes we need to replace\r\n while (slashCount < joined.length &&\r\n isPathSeparator(joined.charCodeAt(slashCount))) {\r\n slashCount++;\r\n }\r\n // Replace the slashes if needed\r\n if (slashCount >= 2) {\r\n joined = `\\\\${joined.slice(slashCount)}`;\r\n }\r\n }\r\n return win32.normalize(joined);\r\n },\r\n // It will solve the relative path from `from` to `to`, for instance:\r\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromOrig = win32.resolve(from);\r\n const toOrig = win32.resolve(to);\r\n if (fromOrig === toOrig) {\r\n return '';\r\n }\r\n from = fromOrig.toLowerCase();\r\n to = toOrig.toLowerCase();\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim any leading backslashes\r\n let fromStart = 0;\r\n while (fromStart < from.length &&\r\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\r\n fromStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let fromEnd = from.length;\r\n while (fromEnd - 1 > fromStart &&\r\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n fromEnd--;\r\n }\r\n const fromLen = fromEnd - fromStart;\r\n // Trim any leading backslashes\r\n let toStart = 0;\r\n while (toStart < to.length &&\r\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n toStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let toEnd = to.length;\r\n while (toEnd - 1 > toStart &&\r\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n toEnd--;\r\n }\r\n const toLen = toEnd - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = fromLen < toLen ? fromLen : toLen;\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_BACKWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n // We found a mismatch before the first common path separator was seen, so\r\n // return the original `to`.\r\n if (i !== length) {\r\n if (lastCommonSep === -1) {\r\n return toOrig;\r\n }\r\n }\r\n else {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\r\n return toOrig.slice(toStart + i + 1);\r\n }\r\n if (i === 2) {\r\n // We get here if `from` is the device root.\r\n // For example: from='C:\\\\'; to='C:\\\\foo'\r\n return toOrig.slice(toStart + i);\r\n }\r\n }\r\n if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 2) {\r\n // We get here if `to` is the device root.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\r\n lastCommonSep = 3;\r\n }\r\n }\r\n if (lastCommonSep === -1) {\r\n lastCommonSep = 0;\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to` and\r\n // `from`\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '\\\\..';\r\n }\r\n }\r\n toStart += lastCommonSep;\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts\r\n if (out.length > 0) {\r\n return `${out}${toOrig.slice(toStart, toEnd)}`;\r\n }\r\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n ++toStart;\r\n }\r\n return toOrig.slice(toStart, toEnd);\r\n },\r\n toNamespacedPath(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (typeof path !== 'string') {\r\n return path;\r\n }\r\n if (path.length === 0) {\r\n return '';\r\n }\r\n const resolvedPath = win32.resolve(path);\r\n if (resolvedPath.length <= 2) {\r\n return path;\r\n }\r\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\r\n // Possible UNC root\r\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\r\n const code = resolvedPath.charCodeAt(2);\r\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\r\n // Matched non-long UNC root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\r\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\r\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n // Matched device root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\${resolvedPath}`;\r\n }\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = -1;\r\n let offset = 0;\r\n const code = path.charCodeAt(0);\r\n if (len === 1) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work or a dot.\r\n return isPathSeparator(code) ? path : '.';\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = offset = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n return path;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n // Offset by 1 to include the separator after the UNC root to\r\n // treat it as a \"normal root\" on top of a (UNC) root\r\n rootEnd = offset = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n // Possible device root\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\r\n offset = rootEnd;\r\n }\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = len - 1; i >= offset; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n if (rootEnd === -1) {\r\n return '.';\r\n }\r\n end = rootEnd;\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n start = 2;\r\n }\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= start; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let start = 0;\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isWindowsDeviceRoot(path.charCodeAt(0))) {\r\n start = startPart = 2;\r\n }\r\n for (let i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '\\\\'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let code = path.charCodeAt(0);\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n ret.base = ret.name = path;\r\n return ret;\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n rootEnd = j;\r\n }\r\n else if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n rootEnd = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n if (len <= 2) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 2;\r\n if (isPathSeparator(path.charCodeAt(2))) {\r\n if (len === 3) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 3;\r\n }\r\n }\r\n if (rootEnd > 0) {\r\n ret.root = path.slice(0, rootEnd);\r\n }\r\n let startDot = -1;\r\n let startPart = rootEnd;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= rootEnd; --i) {\r\n code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(startPart, end);\r\n }\r\n else {\r\n ret.name = path.slice(startPart, startDot);\r\n ret.base = path.slice(startPart, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n // If the directory is the root, use the entire root as the `dir` including\r\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\r\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\r\n if (startPart > 0 && startPart !== rootEnd) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else {\r\n ret.dir = ret.root;\r\n }\r\n return ret;\r\n },\r\n sep: '\\\\',\r\n delimiter: ';',\r\n win32: null,\r\n posix: null\r\n};\r\nexport const posix = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedPath = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n const path = i >= 0 ? pathSegments[i] : process.cwd();\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n resolvedPath = `${path}/${resolvedPath}`;\r\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n }\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n // Normalize the path\r\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\r\n if (resolvedAbsolute) {\r\n return `/${resolvedPath}`;\r\n }\r\n return resolvedPath.length > 0 ? resolvedPath : '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\r\n // Normalize the path\r\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\r\n if (path.length === 0) {\r\n if (isAbsolute) {\r\n return '/';\r\n }\r\n return trailingSeparator ? './' : '.';\r\n }\r\n if (trailingSeparator) {\r\n path += '/';\r\n }\r\n return isAbsolute ? `/${path}` : path;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = arg;\r\n }\r\n else {\r\n joined += `/${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n return posix.normalize(joined);\r\n },\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim leading forward slashes.\r\n from = posix.resolve(from);\r\n to = posix.resolve(to);\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromStart = 1;\r\n const fromEnd = from.length;\r\n const fromLen = fromEnd - fromStart;\r\n const toStart = 1;\r\n const toLen = to.length - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = (fromLen < toLen ? fromLen : toLen);\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_FORWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n if (i === length) {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='/foo/bar'; to='/foo/bar/baz'\r\n return to.slice(toStart + i + 1);\r\n }\r\n if (i === 0) {\r\n // We get here if `from` is the root\r\n // For example: from='/'; to='/foo'\r\n return to.slice(toStart + i);\r\n }\r\n }\r\n else if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='/foo/bar/baz'; to='/foo/bar'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 0) {\r\n // We get here if `to` is the root.\r\n // For example: from='/foo/bar'; to='/'\r\n lastCommonSep = 0;\r\n }\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to`\r\n // and `from`.\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '/..';\r\n }\r\n }\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts.\r\n return `${out}${to.slice(toStart + lastCommonSep)}`;\r\n },\r\n toNamespacedPath(path) {\r\n // Non-op on posix systems\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = path.length - 1; i >= 1; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n return hasRoot ? '/' : '.';\r\n }\r\n if (hasRoot && end === 1) {\r\n return '//';\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= 0; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n for (let i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '/'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let start;\r\n if (isAbsolute) {\r\n ret.root = '/';\r\n start = 1;\r\n }\r\n else {\r\n start = 0;\r\n }\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(start, end);\r\n }\r\n else {\r\n ret.name = path.slice(start, startDot);\r\n ret.base = path.slice(start, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n if (startPart > 0) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else if (isAbsolute) {\r\n ret.dir = '/';\r\n }\r\n return ret;\r\n },\r\n sep: '/',\r\n delimiter: ':',\r\n win32: null,\r\n posix: null\r\n};\r\nposix.win32 = win32.win32 = win32;\r\nposix.posix = win32.posix = posix;\r\nexport const normalize = (process.platform === 'win32' ? win32.normalize : posix.normalize);\r\nexport const resolve = (process.platform === 'win32' ? win32.resolve : posix.resolve);\r\nexport const relative = (process.platform === 'win32' ? win32.relative : posix.relative);\r\nexport const dirname = (process.platform === 'win32' ? win32.dirname : posix.dirname);\r\nexport const basename = (process.platform === 'win32' ? win32.basename : posix.basename);\r\nexport const extname = (process.platform === 'win32' ? win32.extname : posix.extname);\r\nexport const sep = (process.platform === 'win32' ? win32.sep : posix.sep);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst LANGUAGE_DEFAULT = 'en';\r\nlet _isWindows = false;\r\nlet _isMacintosh = false;\r\nlet _isLinux = false;\r\nlet _isNative = false;\r\nlet _isWeb = false;\r\nlet _isIOS = false;\r\nlet _locale = undefined;\r\nlet _language = LANGUAGE_DEFAULT;\r\nlet _translationsConfigFile = undefined;\r\nlet _userAgent = undefined;\r\nconst isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer');\r\n// OS detection\r\nif (typeof navigator === 'object' && !isElectronRenderer) {\r\n _userAgent = navigator.userAgent;\r\n _isWindows = _userAgent.indexOf('Windows') >= 0;\r\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\r\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\r\n _isLinux = _userAgent.indexOf('Linux') >= 0;\r\n _isWeb = true;\r\n _locale = navigator.language;\r\n _language = _locale;\r\n}\r\nelse if (typeof process === 'object') {\r\n _isWindows = (process.platform === 'win32');\r\n _isMacintosh = (process.platform === 'darwin');\r\n _isLinux = (process.platform === 'linux');\r\n _locale = LANGUAGE_DEFAULT;\r\n _language = LANGUAGE_DEFAULT;\r\n const rawNlsConfig = process.env['VSCODE_NLS_CONFIG'];\r\n if (rawNlsConfig) {\r\n try {\r\n const nlsConfig = JSON.parse(rawNlsConfig);\r\n const resolved = nlsConfig.availableLanguages['*'];\r\n _locale = nlsConfig.locale;\r\n // VSCode's default language is 'en'\r\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\r\n _translationsConfigFile = nlsConfig._translationsConfigFile;\r\n }\r\n catch (e) {\r\n }\r\n }\r\n _isNative = true;\r\n}\r\nlet _platform = 0 /* Web */;\r\nif (_isMacintosh) {\r\n _platform = 1 /* Mac */;\r\n}\r\nelse if (_isWindows) {\r\n _platform = 3 /* Windows */;\r\n}\r\nelse if (_isLinux) {\r\n _platform = 2 /* Linux */;\r\n}\r\nexport const isWindows = _isWindows;\r\nexport const isMacintosh = _isMacintosh;\r\nexport const isLinux = _isLinux;\r\nexport const isNative = _isNative;\r\nexport const isWeb = _isWeb;\r\nexport const isIOS = _isIOS;\r\nconst _globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});\r\nexport const globals = _globals;\r\nexport const setImmediate = (function defineSetImmediate() {\r\n if (globals.setImmediate) {\r\n return globals.setImmediate.bind(globals);\r\n }\r\n if (typeof globals.postMessage === 'function' && !globals.importScripts) {\r\n let pending = [];\r\n globals.addEventListener('message', (e) => {\r\n if (e.data && e.data.vscodeSetImmediateId) {\r\n for (let i = 0, len = pending.length; i < len; i++) {\r\n const candidate = pending[i];\r\n if (candidate.id === e.data.vscodeSetImmediateId) {\r\n pending.splice(i, 1);\r\n candidate.callback();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n let lastId = 0;\r\n return (callback) => {\r\n const myId = ++lastId;\r\n pending.push({\r\n id: myId,\r\n callback: callback\r\n });\r\n globals.postMessage({ vscodeSetImmediateId: myId }, '*');\r\n };\r\n }\r\n if (typeof process !== 'undefined' && typeof process.nextTick === 'function') {\r\n return process.nextTick.bind(process);\r\n }\r\n const _promise = Promise.resolve();\r\n return (callback) => _promise.then(callback);\r\n})();\r\nexport const OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\r\nlet _isLittleEndian = true;\r\nlet _isLittleEndianComputed = false;\r\nexport function isLittleEndian() {\r\n if (!_isLittleEndianComputed) {\r\n _isLittleEndianComputed = true;\r\n const test = new Uint8Array(2);\r\n test[0] = 1;\r\n test[1] = 2;\r\n const view = new Uint16Array(test.buffer);\r\n _isLittleEndian = (view[0] === (2 << 8) + 1);\r\n }\r\n return _isLittleEndian;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows, isMacintosh, setImmediate } from './platform.js';\r\nconst safeProcess = (typeof process === 'undefined') ? {\r\n cwd() { return '/'; },\r\n env: Object.create(null),\r\n get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; },\r\n nextTick(callback) { return setImmediate(callback); }\r\n} : process;\r\nexport const cwd = safeProcess.cwd;\r\nexport const env = safeProcess.env;\r\nexport const platform = safeProcess.platform;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Range;\r\n(function (Range) {\r\n /**\r\n * Returns the intersection between two ranges as a range itself.\r\n * Returns `{ start: 0, end: 0 }` if the intersection is empty.\r\n */\r\n function intersect(one, other) {\r\n if (one.start >= other.end || other.start >= one.end) {\r\n return { start: 0, end: 0 };\r\n }\r\n const start = Math.max(one.start, other.start);\r\n const end = Math.min(one.end, other.end);\r\n if (end - start <= 0) {\r\n return { start: 0, end: 0 };\r\n }\r\n return { start, end };\r\n }\r\n Range.intersect = intersect;\r\n function isEmpty(range) {\r\n return range.end - range.start <= 0;\r\n }\r\n Range.isEmpty = isEmpty;\r\n function intersects(one, other) {\r\n return !isEmpty(intersect(one, other));\r\n }\r\n Range.intersects = intersects;\r\n function relativeComplement(one, other) {\r\n const result = [];\r\n const first = { start: one.start, end: Math.min(other.start, one.end) };\r\n const second = { start: Math.max(other.end, one.start), end: one.end };\r\n if (!isEmpty(first)) {\r\n result.push(first);\r\n }\r\n if (!isEmpty(second)) {\r\n result.push(second);\r\n }\r\n return result;\r\n }\r\n Range.relativeComplement = relativeComplement;\r\n})(Range || (Range = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as extpath from './extpath.js';\r\nimport * as paths from './path.js';\r\nimport { URI, uriToFsPath } from './uri.js';\r\nimport { equalsIgnoreCase, compare as strCompare } from './strings.js';\r\nimport { Schemas } from './network.js';\r\nimport { isWindows } from './platform.js';\r\nexport function originalFSPath(uri) {\r\n return uriToFsPath(uri, true);\r\n}\r\nexport class ExtUri {\r\n constructor(_ignorePathCasing) {\r\n this._ignorePathCasing = _ignorePathCasing;\r\n }\r\n compare(uri1, uri2, ignoreFragment = false) {\r\n if (uri1 === uri2) {\r\n return 0;\r\n }\r\n return strCompare(this.getComparisonKey(uri1, ignoreFragment), this.getComparisonKey(uri2, ignoreFragment));\r\n }\r\n isEqual(uri1, uri2, ignoreFragment = false) {\r\n if (uri1 === uri2) {\r\n return true;\r\n }\r\n if (!uri1 || !uri2) {\r\n return false;\r\n }\r\n return this.getComparisonKey(uri1, ignoreFragment) === this.getComparisonKey(uri2, ignoreFragment);\r\n }\r\n getComparisonKey(uri, ignoreFragment = false) {\r\n return uri.with({\r\n path: this._ignorePathCasing(uri) ? uri.path.toLowerCase() : undefined,\r\n fragment: ignoreFragment ? null : undefined\r\n }).toString();\r\n }\r\n // --- path math\r\n joinPath(resource, ...pathFragment) {\r\n return URI.joinPath(resource, ...pathFragment);\r\n }\r\n basenameOrAuthority(resource) {\r\n return basename(resource) || resource.authority;\r\n }\r\n basename(resource) {\r\n return paths.posix.basename(resource.path);\r\n }\r\n dirname(resource) {\r\n if (resource.path.length === 0) {\r\n return resource;\r\n }\r\n let dirname;\r\n if (resource.scheme === Schemas.file) {\r\n dirname = URI.file(paths.dirname(originalFSPath(resource))).path;\r\n }\r\n else {\r\n dirname = paths.posix.dirname(resource.path);\r\n if (resource.authority && dirname.length && dirname.charCodeAt(0) !== 47 /* Slash */) {\r\n console.error(`dirname(\"${resource.toString})) resulted in a relative path`);\r\n dirname = '/'; // If a URI contains an authority component, then the path component must either be empty or begin with a CharCode.Slash (\"/\") character\r\n }\r\n }\r\n return resource.with({\r\n path: dirname\r\n });\r\n }\r\n normalizePath(resource) {\r\n if (!resource.path.length) {\r\n return resource;\r\n }\r\n let normalizedPath;\r\n if (resource.scheme === Schemas.file) {\r\n normalizedPath = URI.file(paths.normalize(originalFSPath(resource))).path;\r\n }\r\n else {\r\n normalizedPath = paths.posix.normalize(resource.path);\r\n }\r\n return resource.with({\r\n path: normalizedPath\r\n });\r\n }\r\n relativePath(from, to) {\r\n if (from.scheme !== to.scheme || !isEqualAuthority(from.authority, to.authority)) {\r\n return undefined;\r\n }\r\n if (from.scheme === Schemas.file) {\r\n const relativePath = paths.relative(originalFSPath(from), originalFSPath(to));\r\n return isWindows ? extpath.toSlashes(relativePath) : relativePath;\r\n }\r\n let fromPath = from.path || '/', toPath = to.path || '/';\r\n if (this._ignorePathCasing(from)) {\r\n // make casing of fromPath match toPath\r\n let i = 0;\r\n for (const len = Math.min(fromPath.length, toPath.length); i < len; i++) {\r\n if (fromPath.charCodeAt(i) !== toPath.charCodeAt(i)) {\r\n if (fromPath.charAt(i).toLowerCase() !== toPath.charAt(i).toLowerCase()) {\r\n break;\r\n }\r\n }\r\n }\r\n fromPath = toPath.substr(0, i) + fromPath.substr(i);\r\n }\r\n return paths.posix.relative(fromPath, toPath);\r\n }\r\n resolvePath(base, path) {\r\n if (base.scheme === Schemas.file) {\r\n const newURI = URI.file(paths.resolve(originalFSPath(base), path));\r\n return base.with({\r\n authority: newURI.authority,\r\n path: newURI.path\r\n });\r\n }\r\n if (path.indexOf('/') === -1) { // no slashes? it's likely a Windows path\r\n path = extpath.toSlashes(path);\r\n if (/^[a-zA-Z]:(\\/|$)/.test(path)) { // starts with a drive letter\r\n path = '/' + path;\r\n }\r\n }\r\n return base.with({\r\n path: paths.posix.resolve(base.path, path)\r\n });\r\n }\r\n isEqualAuthority(a1, a2) {\r\n return a1 === a2 || equalsIgnoreCase(a1, a2);\r\n }\r\n}\r\n/**\r\n * Unbiased utility that takes uris \"as they are\". This means it can be interchanged with\r\n * uri#toString() usages. The following is true\r\n * ```\r\n * assertEqual(aUri.toString() === bUri.toString(), exturi.isEqual(aUri, bUri))\r\n * ```\r\n */\r\nexport const extUri = new ExtUri(() => false);\r\nexport const isEqual = extUri.isEqual.bind(extUri);\r\nexport const basenameOrAuthority = extUri.basenameOrAuthority.bind(extUri);\r\nexport const basename = extUri.basename.bind(extUri);\r\nexport const dirname = extUri.dirname.bind(extUri);\r\nexport const joinPath = extUri.joinPath.bind(extUri);\r\nexport const normalizePath = extUri.normalizePath.bind(extUri);\r\nexport const relativePath = extUri.relativePath.bind(extUri);\r\nexport const resolvePath = extUri.resolvePath.bind(extUri);\r\nexport const isEqualAuthority = extUri.isEqualAuthority.bind(extUri);\r\n/**\r\n * Data URI related helpers.\r\n */\r\nexport var DataUri;\r\n(function (DataUri) {\r\n DataUri.META_DATA_LABEL = 'label';\r\n DataUri.META_DATA_DESCRIPTION = 'description';\r\n DataUri.META_DATA_SIZE = 'size';\r\n DataUri.META_DATA_MIME = 'mime';\r\n function parseMetaData(dataUri) {\r\n const metadata = new Map();\r\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\r\n // the metadata is: size:2313;label:SomeLabel;description:SomeDescription\r\n const meta = dataUri.path.substring(dataUri.path.indexOf(';') + 1, dataUri.path.lastIndexOf(';'));\r\n meta.split(';').forEach(property => {\r\n const [key, value] = property.split(':');\r\n if (key && value) {\r\n metadata.set(key, value);\r\n }\r\n });\r\n // Given a URI of: data:image/png;size:2313;label:SomeLabel;description:SomeDescription;base64,77+9UE5...\r\n // the mime is: image/png\r\n const mime = dataUri.path.substring(0, dataUri.path.indexOf(';'));\r\n if (mime) {\r\n metadata.set(DataUri.META_DATA_MIME, mime);\r\n }\r\n return metadata;\r\n }\r\n DataUri.parseMetaData = parseMetaData;\r\n})(DataUri || (DataUri = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from './event.js';\r\nimport { Disposable } from './lifecycle.js';\r\nexport class ScrollState {\r\n constructor(width, scrollWidth, scrollLeft, height, scrollHeight, scrollTop) {\r\n width = width | 0;\r\n scrollWidth = scrollWidth | 0;\r\n scrollLeft = scrollLeft | 0;\r\n height = height | 0;\r\n scrollHeight = scrollHeight | 0;\r\n scrollTop = scrollTop | 0;\r\n this.rawScrollLeft = scrollLeft; // before validation\r\n this.rawScrollTop = scrollTop; // before validation\r\n if (width < 0) {\r\n width = 0;\r\n }\r\n if (scrollLeft + width > scrollWidth) {\r\n scrollLeft = scrollWidth - width;\r\n }\r\n if (scrollLeft < 0) {\r\n scrollLeft = 0;\r\n }\r\n if (height < 0) {\r\n height = 0;\r\n }\r\n if (scrollTop + height > scrollHeight) {\r\n scrollTop = scrollHeight - height;\r\n }\r\n if (scrollTop < 0) {\r\n scrollTop = 0;\r\n }\r\n this.width = width;\r\n this.scrollWidth = scrollWidth;\r\n this.scrollLeft = scrollLeft;\r\n this.height = height;\r\n this.scrollHeight = scrollHeight;\r\n this.scrollTop = scrollTop;\r\n }\r\n equals(other) {\r\n return (this.rawScrollLeft === other.rawScrollLeft\r\n && this.rawScrollTop === other.rawScrollTop\r\n && this.width === other.width\r\n && this.scrollWidth === other.scrollWidth\r\n && this.scrollLeft === other.scrollLeft\r\n && this.height === other.height\r\n && this.scrollHeight === other.scrollHeight\r\n && this.scrollTop === other.scrollTop);\r\n }\r\n withScrollDimensions(update, useRawScrollPositions) {\r\n return new ScrollState((typeof update.width !== 'undefined' ? update.width : this.width), (typeof update.scrollWidth !== 'undefined' ? update.scrollWidth : this.scrollWidth), useRawScrollPositions ? this.rawScrollLeft : this.scrollLeft, (typeof update.height !== 'undefined' ? update.height : this.height), (typeof update.scrollHeight !== 'undefined' ? update.scrollHeight : this.scrollHeight), useRawScrollPositions ? this.rawScrollTop : this.scrollTop);\r\n }\r\n withScrollPosition(update) {\r\n return new ScrollState(this.width, this.scrollWidth, (typeof update.scrollLeft !== 'undefined' ? update.scrollLeft : this.rawScrollLeft), this.height, this.scrollHeight, (typeof update.scrollTop !== 'undefined' ? update.scrollTop : this.rawScrollTop));\r\n }\r\n createScrollEvent(previous) {\r\n const widthChanged = (this.width !== previous.width);\r\n const scrollWidthChanged = (this.scrollWidth !== previous.scrollWidth);\r\n const scrollLeftChanged = (this.scrollLeft !== previous.scrollLeft);\r\n const heightChanged = (this.height !== previous.height);\r\n const scrollHeightChanged = (this.scrollHeight !== previous.scrollHeight);\r\n const scrollTopChanged = (this.scrollTop !== previous.scrollTop);\r\n return {\r\n oldWidth: previous.width,\r\n oldScrollWidth: previous.scrollWidth,\r\n oldScrollLeft: previous.scrollLeft,\r\n width: this.width,\r\n scrollWidth: this.scrollWidth,\r\n scrollLeft: this.scrollLeft,\r\n oldHeight: previous.height,\r\n oldScrollHeight: previous.scrollHeight,\r\n oldScrollTop: previous.scrollTop,\r\n height: this.height,\r\n scrollHeight: this.scrollHeight,\r\n scrollTop: this.scrollTop,\r\n widthChanged: widthChanged,\r\n scrollWidthChanged: scrollWidthChanged,\r\n scrollLeftChanged: scrollLeftChanged,\r\n heightChanged: heightChanged,\r\n scrollHeightChanged: scrollHeightChanged,\r\n scrollTopChanged: scrollTopChanged,\r\n };\r\n }\r\n}\r\nexport class Scrollable extends Disposable {\r\n constructor(smoothScrollDuration, scheduleAtNextAnimationFrame) {\r\n super();\r\n this._onScroll = this._register(new Emitter());\r\n this.onScroll = this._onScroll.event;\r\n this._smoothScrollDuration = smoothScrollDuration;\r\n this._scheduleAtNextAnimationFrame = scheduleAtNextAnimationFrame;\r\n this._state = new ScrollState(0, 0, 0, 0, 0, 0);\r\n this._smoothScrolling = null;\r\n }\r\n dispose() {\r\n if (this._smoothScrolling) {\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = null;\r\n }\r\n super.dispose();\r\n }\r\n setSmoothScrollDuration(smoothScrollDuration) {\r\n this._smoothScrollDuration = smoothScrollDuration;\r\n }\r\n validateScrollPosition(scrollPosition) {\r\n return this._state.withScrollPosition(scrollPosition);\r\n }\r\n getScrollDimensions() {\r\n return this._state;\r\n }\r\n setScrollDimensions(dimensions, useRawScrollPositions) {\r\n const newState = this._state.withScrollDimensions(dimensions, useRawScrollPositions);\r\n this._setState(newState);\r\n // Validate outstanding animated scroll position target\r\n if (this._smoothScrolling) {\r\n this._smoothScrolling.acceptScrollDimensions(this._state);\r\n }\r\n }\r\n /**\r\n * Returns the final scroll position that the instance will have once the smooth scroll animation concludes.\r\n * If no scroll animation is occurring, it will return the current scroll position instead.\r\n */\r\n getFutureScrollPosition() {\r\n if (this._smoothScrolling) {\r\n return this._smoothScrolling.to;\r\n }\r\n return this._state;\r\n }\r\n /**\r\n * Returns the current scroll position.\r\n * Note: This result might be an intermediate scroll position, as there might be an ongoing smooth scroll animation.\r\n */\r\n getCurrentScrollPosition() {\r\n return this._state;\r\n }\r\n setScrollPositionNow(update) {\r\n // no smooth scrolling requested\r\n const newState = this._state.withScrollPosition(update);\r\n // Terminate any outstanding smooth scrolling\r\n if (this._smoothScrolling) {\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = null;\r\n }\r\n this._setState(newState);\r\n }\r\n setScrollPositionSmooth(update) {\r\n if (this._smoothScrollDuration === 0) {\r\n // Smooth scrolling not supported.\r\n return this.setScrollPositionNow(update);\r\n }\r\n if (this._smoothScrolling) {\r\n // Combine our pending scrollLeft/scrollTop with incoming scrollLeft/scrollTop\r\n update = {\r\n scrollLeft: (typeof update.scrollLeft === 'undefined' ? this._smoothScrolling.to.scrollLeft : update.scrollLeft),\r\n scrollTop: (typeof update.scrollTop === 'undefined' ? this._smoothScrolling.to.scrollTop : update.scrollTop)\r\n };\r\n // Validate `update`\r\n const validTarget = this._state.withScrollPosition(update);\r\n if (this._smoothScrolling.to.scrollLeft === validTarget.scrollLeft && this._smoothScrolling.to.scrollTop === validTarget.scrollTop) {\r\n // No need to interrupt or extend the current animation since we're going to the same place\r\n return;\r\n }\r\n const newSmoothScrolling = this._smoothScrolling.combine(this._state, validTarget, this._smoothScrollDuration);\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = newSmoothScrolling;\r\n }\r\n else {\r\n // Validate `update`\r\n const validTarget = this._state.withScrollPosition(update);\r\n this._smoothScrolling = SmoothScrollingOperation.start(this._state, validTarget, this._smoothScrollDuration);\r\n }\r\n // Begin smooth scrolling animation\r\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\r\n if (!this._smoothScrolling) {\r\n return;\r\n }\r\n this._smoothScrolling.animationFrameDisposable = null;\r\n this._performSmoothScrolling();\r\n });\r\n }\r\n _performSmoothScrolling() {\r\n if (!this._smoothScrolling) {\r\n return;\r\n }\r\n const update = this._smoothScrolling.tick();\r\n const newState = this._state.withScrollPosition(update);\r\n this._setState(newState);\r\n if (!this._smoothScrolling) {\r\n // Looks like someone canceled the smooth scrolling\r\n // from the scroll event handler\r\n return;\r\n }\r\n if (update.isDone) {\r\n this._smoothScrolling.dispose();\r\n this._smoothScrolling = null;\r\n return;\r\n }\r\n // Continue smooth scrolling animation\r\n this._smoothScrolling.animationFrameDisposable = this._scheduleAtNextAnimationFrame(() => {\r\n if (!this._smoothScrolling) {\r\n return;\r\n }\r\n this._smoothScrolling.animationFrameDisposable = null;\r\n this._performSmoothScrolling();\r\n });\r\n }\r\n _setState(newState) {\r\n const oldState = this._state;\r\n if (oldState.equals(newState)) {\r\n // no change\r\n return;\r\n }\r\n this._state = newState;\r\n this._onScroll.fire(this._state.createScrollEvent(oldState));\r\n }\r\n}\r\nexport class SmoothScrollingUpdate {\r\n constructor(scrollLeft, scrollTop, isDone) {\r\n this.scrollLeft = scrollLeft;\r\n this.scrollTop = scrollTop;\r\n this.isDone = isDone;\r\n }\r\n}\r\nfunction createEaseOutCubic(from, to) {\r\n const delta = to - from;\r\n return function (completion) {\r\n return from + delta * easeOutCubic(completion);\r\n };\r\n}\r\nfunction createComposed(a, b, cut) {\r\n return function (completion) {\r\n if (completion < cut) {\r\n return a(completion / cut);\r\n }\r\n return b((completion - cut) / (1 - cut));\r\n };\r\n}\r\nexport class SmoothScrollingOperation {\r\n constructor(from, to, startTime, duration) {\r\n this.from = from;\r\n this.to = to;\r\n this.duration = duration;\r\n this._startTime = startTime;\r\n this.animationFrameDisposable = null;\r\n this._initAnimations();\r\n }\r\n _initAnimations() {\r\n this.scrollLeft = this._initAnimation(this.from.scrollLeft, this.to.scrollLeft, this.to.width);\r\n this.scrollTop = this._initAnimation(this.from.scrollTop, this.to.scrollTop, this.to.height);\r\n }\r\n _initAnimation(from, to, viewportSize) {\r\n const delta = Math.abs(from - to);\r\n if (delta > 2.5 * viewportSize) {\r\n let stop1, stop2;\r\n if (from < to) {\r\n // scroll to 75% of the viewportSize\r\n stop1 = from + 0.75 * viewportSize;\r\n stop2 = to - 0.75 * viewportSize;\r\n }\r\n else {\r\n stop1 = from - 0.75 * viewportSize;\r\n stop2 = to + 0.75 * viewportSize;\r\n }\r\n return createComposed(createEaseOutCubic(from, stop1), createEaseOutCubic(stop2, to), 0.33);\r\n }\r\n return createEaseOutCubic(from, to);\r\n }\r\n dispose() {\r\n if (this.animationFrameDisposable !== null) {\r\n this.animationFrameDisposable.dispose();\r\n this.animationFrameDisposable = null;\r\n }\r\n }\r\n acceptScrollDimensions(state) {\r\n this.to = state.withScrollPosition(this.to);\r\n this._initAnimations();\r\n }\r\n tick() {\r\n return this._tick(Date.now());\r\n }\r\n _tick(now) {\r\n const completion = (now - this._startTime) / this.duration;\r\n if (completion < 1) {\r\n const newScrollLeft = this.scrollLeft(completion);\r\n const newScrollTop = this.scrollTop(completion);\r\n return new SmoothScrollingUpdate(newScrollLeft, newScrollTop, false);\r\n }\r\n return new SmoothScrollingUpdate(this.to.scrollLeft, this.to.scrollTop, true);\r\n }\r\n combine(from, to, duration) {\r\n return SmoothScrollingOperation.start(from, to, duration);\r\n }\r\n static start(from, to, duration) {\r\n // +10 / -10 : pretend the animation already started for a quicker response to a scroll request\r\n duration = duration + 10;\r\n const startTime = Date.now() - 10;\r\n return new SmoothScrollingOperation(from, to, startTime, duration);\r\n }\r\n}\r\nfunction easeInCubic(t) {\r\n return Math.pow(t, 3);\r\n}\r\nfunction easeOutCubic(t) {\r\n return 1 - easeInCubic(1 - t);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nexport function buildReplaceStringWithCasePreserved(matches, pattern) {\r\n if (matches && (matches[0] !== '')) {\r\n const containsHyphens = validateSpecificSpecialCharacter(matches, pattern, '-');\r\n const containsUnderscores = validateSpecificSpecialCharacter(matches, pattern, '_');\r\n if (containsHyphens && !containsUnderscores) {\r\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '-');\r\n }\r\n else if (!containsHyphens && containsUnderscores) {\r\n return buildReplaceStringForSpecificSpecialCharacter(matches, pattern, '_');\r\n }\r\n if (matches[0].toUpperCase() === matches[0]) {\r\n return pattern.toUpperCase();\r\n }\r\n else if (matches[0].toLowerCase() === matches[0]) {\r\n return pattern.toLowerCase();\r\n }\r\n else if (strings.containsUppercaseCharacter(matches[0][0]) && pattern.length > 0) {\r\n return pattern[0].toUpperCase() + pattern.substr(1);\r\n }\r\n else {\r\n // we don't understand its pattern yet.\r\n return pattern;\r\n }\r\n }\r\n else {\r\n return pattern;\r\n }\r\n}\r\nfunction validateSpecificSpecialCharacter(matches, pattern, specialCharacter) {\r\n const doesContainSpecialCharacter = matches[0].indexOf(specialCharacter) !== -1 && pattern.indexOf(specialCharacter) !== -1;\r\n return doesContainSpecialCharacter && matches[0].split(specialCharacter).length === pattern.split(specialCharacter).length;\r\n}\r\nfunction buildReplaceStringForSpecificSpecialCharacter(matches, pattern, specialCharacter) {\r\n const splitPatternAtSpecialCharacter = pattern.split(specialCharacter);\r\n const splitMatchAtSpecialCharacter = matches[0].split(specialCharacter);\r\n let replaceString = '';\r\n splitPatternAtSpecialCharacter.forEach((splitValue, index) => {\r\n replaceString += buildReplaceStringWithCasePreserved([splitMatchAtSpecialCharacter[index]], splitValue) + specialCharacter;\r\n });\r\n return replaceString.slice(0, -1);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\nvar Severity;\r\n(function (Severity) {\r\n Severity[Severity[\"Ignore\"] = 0] = \"Ignore\";\r\n Severity[Severity[\"Info\"] = 1] = \"Info\";\r\n Severity[Severity[\"Warning\"] = 2] = \"Warning\";\r\n Severity[Severity[\"Error\"] = 3] = \"Error\";\r\n})(Severity || (Severity = {}));\r\n(function (Severity) {\r\n const _error = 'error';\r\n const _warning = 'warning';\r\n const _warn = 'warn';\r\n const _info = 'info';\r\n /**\r\n * Parses 'error', 'warning', 'warn', 'info' in call casings\r\n * and falls back to ignore.\r\n */\r\n function fromValue(value) {\r\n if (!value) {\r\n return Severity.Ignore;\r\n }\r\n if (strings.equalsIgnoreCase(_error, value)) {\r\n return Severity.Error;\r\n }\r\n if (strings.equalsIgnoreCase(_warning, value) || strings.equalsIgnoreCase(_warn, value)) {\r\n return Severity.Warning;\r\n }\r\n if (strings.equalsIgnoreCase(_info, value)) {\r\n return Severity.Info;\r\n }\r\n return Severity.Ignore;\r\n }\r\n Severity.fromValue = fromValue;\r\n})(Severity || (Severity = {}));\r\nexport default Severity;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { globals } from './platform.js';\r\nconst hasPerformanceNow = (globals.performance && typeof globals.performance.now === 'function');\r\nexport class StopWatch {\r\n constructor(highResolution) {\r\n this._highResolution = hasPerformanceNow && highResolution;\r\n this._startTime = this._now();\r\n this._stopTime = -1;\r\n }\r\n static create(highResolution = true) {\r\n return new StopWatch(highResolution);\r\n }\r\n stop() {\r\n this._stopTime = this._now();\r\n }\r\n elapsed() {\r\n if (this._stopTime !== -1) {\r\n return this._stopTime - this._startTime;\r\n }\r\n return this._now() - this._startTime;\r\n }\r\n _now() {\r\n return this._highResolution ? globals.performance.now() : new Date().getTime();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFalsyOrWhitespace(str) {\r\n if (!str || typeof str !== 'string') {\r\n return true;\r\n }\r\n return str.trim().length === 0;\r\n}\r\n/**\r\n * @deprecated ES6: use `String.padStart`\r\n */\r\nexport function pad(n, l, char = '0') {\r\n const str = '' + n;\r\n const r = [str];\r\n for (let i = str.length; i < l; i++) {\r\n r.push(char);\r\n }\r\n return r.reverse().join('');\r\n}\r\nconst _formatRegexp = /{(\\d+)}/g;\r\n/**\r\n * Helper to produce a string with a variable number of arguments. Insert variable segments\r\n * into the string using the {n} notation where N is the index of the argument following the string.\r\n * @param value string to which formatting is applied\r\n * @param args replacements for {n}-entries\r\n */\r\nexport function format(value, ...args) {\r\n if (args.length === 0) {\r\n return value;\r\n }\r\n return value.replace(_formatRegexp, function (match, group) {\r\n const idx = parseInt(group, 10);\r\n return isNaN(idx) || idx < 0 || idx >= args.length ?\r\n match :\r\n args[idx];\r\n });\r\n}\r\n/**\r\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\r\n * being used e.g. in HTMLElement.innerHTML.\r\n */\r\nexport function escape(html) {\r\n return html.replace(/[<>&]/g, function (match) {\r\n switch (match) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n default: return match;\r\n }\r\n });\r\n}\r\n/**\r\n * Escapes regular expression characters in a given string\r\n */\r\nexport function escapeRegExpCharacters(value) {\r\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning and end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim (default is a blank)\r\n */\r\nexport function trim(haystack, needle = ' ') {\r\n const trimmed = ltrim(haystack, needle);\r\n return rtrim(trimmed, needle);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function ltrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length;\r\n if (needleLen === 0 || haystack.length === 0) {\r\n return haystack;\r\n }\r\n let offset = 0;\r\n while (haystack.indexOf(needle, offset) === offset) {\r\n offset = offset + needleLen;\r\n }\r\n return haystack.substring(offset);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function rtrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length, haystackLen = haystack.length;\r\n if (needleLen === 0 || haystackLen === 0) {\r\n return haystack;\r\n }\r\n let offset = haystackLen, idx = -1;\r\n while (true) {\r\n idx = haystack.lastIndexOf(needle, offset - 1);\r\n if (idx === -1 || idx + needleLen !== offset) {\r\n break;\r\n }\r\n if (idx === 0) {\r\n return '';\r\n }\r\n offset = idx;\r\n }\r\n return haystack.substring(0, offset);\r\n}\r\nexport function convertSimple2RegExpPattern(pattern) {\r\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\r\n}\r\nexport function stripWildcards(pattern) {\r\n return pattern.replace(/\\*/g, '');\r\n}\r\n/**\r\n * @deprecated ES6: use `String.startsWith`\r\n */\r\nexport function startsWith(haystack, needle) {\r\n if (haystack.length < needle.length) {\r\n return false;\r\n }\r\n if (haystack === needle) {\r\n return true;\r\n }\r\n for (let i = 0; i < needle.length; i++) {\r\n if (haystack[i] !== needle[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * @deprecated ES6: use `String.endsWith`\r\n */\r\nexport function endsWith(haystack, needle) {\r\n const diff = haystack.length - needle.length;\r\n if (diff > 0) {\r\n return haystack.indexOf(needle, diff) === diff;\r\n }\r\n else if (diff === 0) {\r\n return haystack === needle;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nexport function createRegExp(searchString, isRegex, options = {}) {\r\n if (!searchString) {\r\n throw new Error('Cannot create regex from empty string');\r\n }\r\n if (!isRegex) {\r\n searchString = escapeRegExpCharacters(searchString);\r\n }\r\n if (options.wholeWord) {\r\n if (!/\\B/.test(searchString.charAt(0))) {\r\n searchString = '\\\\b' + searchString;\r\n }\r\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\r\n searchString = searchString + '\\\\b';\r\n }\r\n }\r\n let modifiers = '';\r\n if (options.global) {\r\n modifiers += 'g';\r\n }\r\n if (!options.matchCase) {\r\n modifiers += 'i';\r\n }\r\n if (options.multiline) {\r\n modifiers += 'm';\r\n }\r\n if (options.unicode) {\r\n modifiers += 'u';\r\n }\r\n return new RegExp(searchString, modifiers);\r\n}\r\nexport function regExpLeadsToEndlessLoop(regexp) {\r\n // Exit early if it's one of these special cases which are meant to match\r\n // against an empty string\r\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\r\n return false;\r\n }\r\n // We check against an empty string. If the regular expression doesn't advance\r\n // (e.g. ends in an endless loop) it will match an empty string.\r\n const match = regexp.exec('');\r\n return !!(match && regexp.lastIndex === 0);\r\n}\r\nexport function regExpFlags(regexp) {\r\n return (regexp.global ? 'g' : '')\r\n + (regexp.ignoreCase ? 'i' : '')\r\n + (regexp.multiline ? 'm' : '')\r\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\r\n}\r\n/**\r\n * Returns first index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function firstNonWhitespaceIndex(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Returns the leading whitespace of the string.\r\n * If the string contains only whitespaces, returns entire string\r\n */\r\nexport function getLeadingWhitespace(str, start = 0, end = str.length) {\r\n for (let i = start; i < end; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return str.substring(start, i);\r\n }\r\n }\r\n return str.substring(start, end);\r\n}\r\n/**\r\n * Returns last index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\r\n for (let i = startIndex; i >= 0; i--) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function compare(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nexport function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA < codeB) {\r\n return -1;\r\n }\r\n else if (codeA > codeB) {\r\n return 1;\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function compareIgnoreCase(a, b) {\r\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\r\n}\r\nexport function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA === codeB) {\r\n // equal\r\n continue;\r\n }\r\n const diff = codeA - codeB;\r\n if (diff === 32 && isUpperAsciiLetter(codeB)) { //codeB =[65-90] && codeA =[97-122]\r\n continue;\r\n }\r\n else if (diff === -32 && isUpperAsciiLetter(codeA)) { //codeB =[97-122] && codeA =[65-90]\r\n continue;\r\n }\r\n if (isLowerAsciiLetter(codeA) && isLowerAsciiLetter(codeB)) {\r\n //\r\n return diff;\r\n }\r\n else {\r\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function isLowerAsciiLetter(code) {\r\n return code >= 97 /* a */ && code <= 122 /* z */;\r\n}\r\nexport function isUpperAsciiLetter(code) {\r\n return code >= 65 /* A */ && code <= 90 /* Z */;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\r\n}\r\nexport function equalsIgnoreCase(a, b) {\r\n return a.length === b.length && doEqualsIgnoreCase(a, b);\r\n}\r\nfunction doEqualsIgnoreCase(a, b, stopAt = a.length) {\r\n for (let i = 0; i < stopAt; i++) {\r\n const codeA = a.charCodeAt(i);\r\n const codeB = b.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n // a-z A-Z\r\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\r\n const diff = Math.abs(codeA - codeB);\r\n if (diff !== 0 && diff !== 32) {\r\n return false;\r\n }\r\n }\r\n // Any other charcode\r\n else {\r\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function startsWithIgnoreCase(str, candidate) {\r\n const candidateLength = candidate.length;\r\n if (candidate.length > str.length) {\r\n return false;\r\n }\r\n return doEqualsIgnoreCase(str, candidate, candidateLength);\r\n}\r\n/**\r\n * @returns the length of the common prefix of the two strings.\r\n */\r\nexport function commonPrefixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * @returns the length of the common suffix of the two strings.\r\n */\r\nexport function commonSuffixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n const aLastIndex = a.length - 1;\r\n const bLastIndex = b.length - 1;\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isHighSurrogate(charCode) {\r\n return (0xD800 <= charCode && charCode <= 0xDBFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isLowSurrogate(charCode) {\r\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function computeCodePoint(highSurrogate, lowSurrogate) {\r\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\r\n}\r\n/**\r\n * get the code point that begins at offset `offset`\r\n */\r\nexport function getNextCodePoint(str, len, offset) {\r\n const charCode = str.charCodeAt(offset);\r\n if (isHighSurrogate(charCode) && offset + 1 < len) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (isLowSurrogate(nextCharCode)) {\r\n return computeCodePoint(charCode, nextCharCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\n/**\r\n * get the code point that ends right before offset `offset`\r\n */\r\nfunction getPrevCodePoint(str, offset) {\r\n const charCode = str.charCodeAt(offset - 1);\r\n if (isLowSurrogate(charCode) && offset > 1) {\r\n const prevCharCode = str.charCodeAt(offset - 2);\r\n if (isHighSurrogate(prevCharCode)) {\r\n return computeCodePoint(prevCharCode, charCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\nexport function nextCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const len = str.length;\r\n const initialCodePoint = getNextCodePoint(str, len, offset);\r\n offset += (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset < len) {\r\n const nextCodePoint = getNextCodePoint(str, len, offset);\r\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(nextCodePoint);\r\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n offset += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n return (offset - initialOffset);\r\n}\r\nexport function prevCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const initialCodePoint = getPrevCodePoint(str, offset);\r\n offset -= (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset > 0) {\r\n const prevCodePoint = getPrevCodePoint(str, offset);\r\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(prevCodePoint);\r\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\r\n break;\r\n }\r\n offset -= (prevCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = prevGraphemeBreakType;\r\n }\r\n return (initialOffset - offset);\r\n}\r\n/**\r\n * A manual decoding of a UTF8 string.\r\n * Use only in environments which do not offer native conversion methods!\r\n */\r\nexport function decodeUTF8(buffer) {\r\n // https://en.wikipedia.org/wiki/UTF-8\r\n const len = buffer.byteLength;\r\n const result = [];\r\n let offset = 0;\r\n while (offset < len) {\r\n const v0 = buffer[offset];\r\n let codePoint;\r\n if (v0 >= 0b11110000 && offset + 3 < len) {\r\n // 4 bytes\r\n codePoint = ((((buffer[offset++] & 0b00000111) << 18) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11100000 && offset + 2 < len) {\r\n // 3 bytes\r\n codePoint = ((((buffer[offset++] & 0b00001111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11000000 && offset + 1 < len) {\r\n // 2 bytes\r\n codePoint = ((((buffer[offset++] & 0b00011111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else {\r\n // 1 byte\r\n codePoint = buffer[offset++];\r\n }\r\n if ((codePoint >= 0 && codePoint <= 0xD7FF) || (codePoint >= 0xE000 && codePoint <= 0xFFFF)) {\r\n // Basic Multilingual Plane\r\n result.push(String.fromCharCode(codePoint));\r\n }\r\n else if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\r\n // Supplementary Planes\r\n const uPrime = codePoint - 0x10000;\r\n const w1 = 0xD800 + ((uPrime & 0b11111111110000000000) >>> 10);\r\n const w2 = 0xDC00 + ((uPrime & 0b00000000001111111111) >>> 0);\r\n result.push(String.fromCharCode(w1));\r\n result.push(String.fromCharCode(w2));\r\n }\r\n else {\r\n // illegal code point\r\n result.push(String.fromCharCode(0xFFFD));\r\n }\r\n }\r\n return result.join('');\r\n}\r\n/**\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-rtl-test.js\r\n */\r\nconst CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\r\n/**\r\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\r\n */\r\nexport function containsRTL(str) {\r\n return CONTAINS_RTL.test(str);\r\n}\r\n/**\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nconst CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD00-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE82\\uDE90-\\uDE95])/;\r\nexport function containsEmoji(str) {\r\n return CONTAINS_EMOJI.test(str);\r\n}\r\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\r\n/**\r\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\r\n */\r\nexport function isBasicASCII(str) {\r\n return IS_BASIC_ASCII.test(str);\r\n}\r\nexport const UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\r\n/**\r\n * Returns true if `str` contains unusual line terminators, like LS or PS\r\n */\r\nexport function containsUnusualLineTerminators(str) {\r\n return UNUSUAL_LINE_TERMINATORS.test(str);\r\n}\r\nexport function containsFullWidthCharacter(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n if (isFullWidthCharacter(str.charCodeAt(i))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isFullWidthCharacter(charCode) {\r\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\r\n // http://jrgraphix.net/research/unicode_blocks.php\r\n // 2E80 — 2EFF CJK Radicals Supplement\r\n // 2F00 — 2FDF Kangxi Radicals\r\n // 2FF0 — 2FFF Ideographic Description Characters\r\n // 3000 — 303F CJK Symbols and Punctuation\r\n // 3040 — 309F Hiragana\r\n // 30A0 — 30FF Katakana\r\n // 3100 — 312F Bopomofo\r\n // 3130 — 318F Hangul Compatibility Jamo\r\n // 3190 — 319F Kanbun\r\n // 31A0 — 31BF Bopomofo Extended\r\n // 31F0 — 31FF Katakana Phonetic Extensions\r\n // 3200 — 32FF Enclosed CJK Letters and Months\r\n // 3300 — 33FF CJK Compatibility\r\n // 3400 — 4DBF CJK Unified Ideographs Extension A\r\n // 4DC0 — 4DFF Yijing Hexagram Symbols\r\n // 4E00 — 9FFF CJK Unified Ideographs\r\n // A000 — A48F Yi Syllables\r\n // A490 — A4CF Yi Radicals\r\n // AC00 — D7AF Hangul Syllables\r\n // [IGNORE] D800 — DB7F High Surrogates\r\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\r\n // [IGNORE] DC00 — DFFF Low Surrogates\r\n // [IGNORE] E000 — F8FF Private Use Area\r\n // F900 — FAFF CJK Compatibility Ideographs\r\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\r\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\r\n // [IGNORE] FE00 — FE0F Variation Selectors\r\n // [IGNORE] FE20 — FE2F Combining Half Marks\r\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\r\n // [IGNORE] FE50 — FE6F Small Form Variants\r\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\r\n // FF00 — FFEF Halfwidth and Fullwidth Forms\r\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\r\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\r\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\r\n // [IGNORE] FFF0 — FFFF Specials\r\n charCode = +charCode; // @perf\r\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\r\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\r\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\r\n}\r\n/**\r\n * A fast function (therefore imprecise) to check if code points are emojis.\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nexport function isEmojiImprecise(x) {\r\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x >= 9728 && x <= 10175) || (x >= 127744 && x <= 128591)\r\n || (x >= 128640 && x <= 128764) || (x >= 128992 && x <= 129003) || (x >= 129280 && x <= 129535)\r\n || (x >= 129648 && x <= 129651) || (x >= 129656 && x <= 129666) || (x >= 129680 && x <= 129685));\r\n}\r\n// -- UTF-8 BOM\r\nexport const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\r\nexport function startsWithUTF8BOM(str) {\r\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\r\n}\r\nexport function containsUppercaseCharacter(target, ignoreEscapedChars = false) {\r\n if (!target) {\r\n return false;\r\n }\r\n if (ignoreEscapedChars) {\r\n target = target.replace(/\\\\./g, '');\r\n }\r\n return target.toLowerCase() !== target;\r\n}\r\n/**\r\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\r\n */\r\nexport function singleLetterHash(n) {\r\n const LETTERS_CNT = (90 /* Z */ - 65 /* A */ + 1);\r\n n = n % (2 * LETTERS_CNT);\r\n if (n < LETTERS_CNT) {\r\n return String.fromCharCode(97 /* a */ + n);\r\n }\r\n return String.fromCharCode(65 /* A */ + n - LETTERS_CNT);\r\n}\r\n//#region Unicode Grapheme Break\r\nexport function getGraphemeBreakType(codePoint) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n return graphemeBreakTree.getGraphemeBreakType(codePoint);\r\n}\r\nexport function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\r\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\r\n // !!! Let's make the common case a bit faster\r\n if (breakTypeA === 0 /* Other */) {\r\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\r\n return (breakTypeB !== 5 /* Extend */ && breakTypeB !== 7 /* SpacingMark */);\r\n }\r\n // Do not break between a CR and LF. Otherwise, break before and after controls.\r\n // GB3 CR × LF\r\n // GB4 (Control | CR | LF) ÷\r\n // GB5 ÷ (Control | CR | LF)\r\n if (breakTypeA === 2 /* CR */) {\r\n if (breakTypeB === 3 /* LF */) {\r\n return false; // GB3\r\n }\r\n }\r\n if (breakTypeA === 4 /* Control */ || breakTypeA === 2 /* CR */ || breakTypeA === 3 /* LF */) {\r\n return true; // GB4\r\n }\r\n if (breakTypeB === 4 /* Control */ || breakTypeB === 2 /* CR */ || breakTypeB === 3 /* LF */) {\r\n return true; // GB5\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6 L × (L | V | LV | LVT)\r\n // GB7 (LV | V) × (V | T)\r\n // GB8 (LVT | T) × T\r\n if (breakTypeA === 8 /* L */) {\r\n if (breakTypeB === 8 /* L */ || breakTypeB === 9 /* V */ || breakTypeB === 11 /* LV */ || breakTypeB === 12 /* LVT */) {\r\n return false; // GB6\r\n }\r\n }\r\n if (breakTypeA === 11 /* LV */ || breakTypeA === 9 /* V */) {\r\n if (breakTypeB === 9 /* V */ || breakTypeB === 10 /* T */) {\r\n return false; // GB7\r\n }\r\n }\r\n if (breakTypeA === 12 /* LVT */ || breakTypeA === 10 /* T */) {\r\n if (breakTypeB === 10 /* T */) {\r\n return false; // GB8\r\n }\r\n }\r\n // Do not break before extending characters or ZWJ.\r\n // GB9 × (Extend | ZWJ)\r\n if (breakTypeB === 5 /* Extend */ || breakTypeB === 13 /* ZWJ */) {\r\n return false; // GB9\r\n }\r\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a × SpacingMark\r\n // GB9b Prepend ×\r\n if (breakTypeB === 7 /* SpacingMark */) {\r\n return false; // GB9a\r\n }\r\n if (breakTypeA === 1 /* Prepend */) {\r\n return false; // GB9b\r\n }\r\n // Do not break within emoji modifier sequences or emoji zwj sequences.\r\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\r\n if (breakTypeA === 13 /* ZWJ */ && breakTypeB === 14 /* Extended_Pictographic */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB11\r\n }\r\n // GB12 sot (RI RI)* RI × RI\r\n // GB13 [^RI] (RI RI)* RI × RI\r\n if (breakTypeA === 6 /* Regional_Indicator */ && breakTypeB === 6 /* Regional_Indicator */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB12 & GB13\r\n }\r\n // GB999 Any ÷ Any\r\n return true;\r\n}\r\nclass GraphemeBreakTree {\r\n constructor() {\r\n this._data = getGraphemeBreakRawData();\r\n }\r\n static getInstance() {\r\n if (!GraphemeBreakTree._INSTANCE) {\r\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\r\n }\r\n return GraphemeBreakTree._INSTANCE;\r\n }\r\n getGraphemeBreakType(codePoint) {\r\n // !!! Let's make 7bit ASCII a bit faster: 0..31\r\n if (codePoint < 32) {\r\n if (codePoint === 10 /* LineFeed */) {\r\n return 3 /* LF */;\r\n }\r\n if (codePoint === 13 /* CarriageReturn */) {\r\n return 2 /* CR */;\r\n }\r\n return 4 /* Control */;\r\n }\r\n // !!! Let's make 7bit ASCII a bit faster: 32..126\r\n if (codePoint < 127) {\r\n return 0 /* Other */;\r\n }\r\n const data = this._data;\r\n const nodeCount = data.length / 3;\r\n let nodeIndex = 1;\r\n while (nodeIndex <= nodeCount) {\r\n if (codePoint < data[3 * nodeIndex]) {\r\n // go left\r\n nodeIndex = 2 * nodeIndex;\r\n }\r\n else if (codePoint > data[3 * nodeIndex + 1]) {\r\n // go right\r\n nodeIndex = 2 * nodeIndex + 1;\r\n }\r\n else {\r\n // hit\r\n return data[3 * nodeIndex + 2];\r\n }\r\n }\r\n return 0 /* Other */;\r\n }\r\n}\r\nGraphemeBreakTree._INSTANCE = null;\r\nfunction getGraphemeBreakRawData() {\r\n // generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-grapheme-break.js\r\n return JSON.parse('[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]');\r\n}\r\n//#endregion\r\n","/**\r\n * @returns whether the provided parameter is a JavaScript Array or not.\r\n */\r\nexport function isArray(array) {\r\n return Array.isArray(array);\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript String or not.\r\n */\r\nexport function isString(str) {\r\n return (typeof str === 'string');\r\n}\r\n/**\r\n *\r\n * @returns whether the provided parameter is of type `object` but **not**\r\n *\t`null`, an `array`, a `regexp`, nor a `date`.\r\n */\r\nexport function isObject(obj) {\r\n // The method can't do a type cast since there are type (like strings) which\r\n // are subclasses of any put not positvely matched by the function. Hence type\r\n // narrowing results in wrong results.\r\n return typeof obj === 'object'\r\n && obj !== null\r\n && !Array.isArray(obj)\r\n && !(obj instanceof RegExp)\r\n && !(obj instanceof Date);\r\n}\r\n/**\r\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\r\n * @returns whether the provided parameter is a JavaScript Number or not.\r\n */\r\nexport function isNumber(obj) {\r\n return (typeof obj === 'number' && !isNaN(obj));\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Boolean or not.\r\n */\r\nexport function isBoolean(obj) {\r\n return (obj === true || obj === false);\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined.\r\n */\r\nexport function isUndefined(obj) {\r\n return (typeof obj === 'undefined');\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined or null.\r\n */\r\nexport function isUndefinedOrNull(obj) {\r\n return (isUndefined(obj) || obj === null);\r\n}\r\nexport function assertType(condition, type) {\r\n if (!condition) {\r\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\r\n }\r\n}\r\n/**\r\n * Asserts that the argument passed in is neither undefined nor null.\r\n */\r\nexport function assertIsDefined(arg) {\r\n if (isUndefinedOrNull(arg)) {\r\n throw new Error('Assertion Failed: argument is undefined or null');\r\n }\r\n return arg;\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Function or not.\r\n */\r\nexport function isFunction(obj) {\r\n return (typeof obj === 'function');\r\n}\r\nexport function validateConstraints(args, constraints) {\r\n const len = Math.min(args.length, constraints.length);\r\n for (let i = 0; i < len; i++) {\r\n validateConstraint(args[i], constraints[i]);\r\n }\r\n}\r\nexport function validateConstraint(arg, constraint) {\r\n if (isString(constraint)) {\r\n if (typeof arg !== constraint) {\r\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\r\n }\r\n }\r\n else if (isFunction(constraint)) {\r\n try {\r\n if (arg instanceof constraint) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // ignore\r\n }\r\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\r\n return;\r\n }\r\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\r\n return;\r\n }\r\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\r\n }\r\n}\r\nexport function getAllPropertyNames(obj) {\r\n let res = [];\r\n let proto = Object.getPrototypeOf(obj);\r\n while (Object.prototype !== proto) {\r\n res = res.concat(Object.getOwnPropertyNames(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return res;\r\n}\r\nexport function getAllMethodNames(obj) {\r\n const methods = [];\r\n for (const prop of getAllPropertyNames(obj)) {\r\n if (typeof obj[prop] === 'function') {\r\n methods.push(prop);\r\n }\r\n }\r\n return methods;\r\n}\r\nexport function createProxyObject(methodNames, invoke) {\r\n const createProxyMethod = (method) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return invoke(method, args);\r\n };\r\n };\r\n let result = {};\r\n for (const methodName of methodNames) {\r\n result[methodName] = createProxyMethod(methodName);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Converts null to undefined, passes all other values through.\r\n */\r\nexport function withNullAsUndefined(x) {\r\n return x === null ? undefined : x;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function toUint8(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 255 /* MAX_UINT_8 */) {\r\n return 255 /* MAX_UINT_8 */;\r\n }\r\n return v | 0;\r\n}\r\nexport function toUint32(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 4294967295 /* MAX_UINT_32 */) {\r\n return 4294967295 /* MAX_UINT_32 */;\r\n }\r\n return v | 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport * as paths from './path.js';\r\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\r\nconst _singleSlashStart = /^\\//;\r\nconst _doubleSlashStart = /^\\/\\//;\r\nfunction _validateUri(ret, _strict) {\r\n // scheme, must be set\r\n if (!ret.scheme && _strict) {\r\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\r\n }\r\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\r\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\r\n throw new Error('[UriError]: Scheme contains illegal characters.');\r\n }\r\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\r\n // If a URI contains an authority component, then the path component\r\n // must either be empty or begin with a slash (\"/\") character. If a URI\r\n // does not contain an authority component, then the path cannot begin\r\n // with two slash characters (\"//\").\r\n if (ret.path) {\r\n if (ret.authority) {\r\n if (!_singleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\r\n }\r\n }\r\n else {\r\n if (_doubleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\r\n }\r\n }\r\n }\r\n}\r\n// for a while we allowed uris *without* schemes and this is the migration\r\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\r\n// back to the file-scheme. that should cause the least carnage and still be a\r\n// clear warning\r\nfunction _schemeFix(scheme, _strict) {\r\n if (!scheme && !_strict) {\r\n return 'file';\r\n }\r\n return scheme;\r\n}\r\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\r\nfunction _referenceResolution(scheme, path) {\r\n // the slash-character is our 'default base' as we don't\r\n // support constructing URIs relative to other URIs. This\r\n // also means that we alter and potentially break paths.\r\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\r\n switch (scheme) {\r\n case 'https':\r\n case 'http':\r\n case 'file':\r\n if (!path) {\r\n path = _slash;\r\n }\r\n else if (path[0] !== _slash) {\r\n path = _slash + path;\r\n }\r\n break;\r\n }\r\n return path;\r\n}\r\nconst _empty = '';\r\nconst _slash = '/';\r\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\r\n/**\r\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\r\n * This class is a simple parser which creates the basic component parts\r\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\r\n * and encoding.\r\n *\r\n * ```txt\r\n * foo://example.com:8042/over/there?name=ferret#nose\r\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\r\n * | | | | |\r\n * scheme authority path query fragment\r\n * | _____________________|__\r\n * / \\ / \\\r\n * urn:example:animal:ferret:nose\r\n * ```\r\n */\r\nexport class URI {\r\n /**\r\n * @internal\r\n */\r\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\r\n if (typeof schemeOrData === 'object') {\r\n this.scheme = schemeOrData.scheme || _empty;\r\n this.authority = schemeOrData.authority || _empty;\r\n this.path = schemeOrData.path || _empty;\r\n this.query = schemeOrData.query || _empty;\r\n this.fragment = schemeOrData.fragment || _empty;\r\n // no validation because it's this URI\r\n // that creates uri components.\r\n // _validateUri(this);\r\n }\r\n else {\r\n this.scheme = _schemeFix(schemeOrData, _strict);\r\n this.authority = authority || _empty;\r\n this.path = _referenceResolution(this.scheme, path || _empty);\r\n this.query = query || _empty;\r\n this.fragment = fragment || _empty;\r\n _validateUri(this, _strict);\r\n }\r\n }\r\n static isUri(thing) {\r\n if (thing instanceof URI) {\r\n return true;\r\n }\r\n if (!thing) {\r\n return false;\r\n }\r\n return typeof thing.authority === 'string'\r\n && typeof thing.fragment === 'string'\r\n && typeof thing.path === 'string'\r\n && typeof thing.query === 'string'\r\n && typeof thing.scheme === 'string'\r\n && typeof thing.fsPath === 'function'\r\n && typeof thing.with === 'function'\r\n && typeof thing.toString === 'function';\r\n }\r\n // ---- filesystem path -----------------------\r\n /**\r\n * Returns a string representing the corresponding file system path of this URI.\r\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\r\n * platform specific path separator.\r\n *\r\n * * Will *not* validate the path for invalid characters and semantics.\r\n * * Will *not* look at the scheme of this URI.\r\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\r\n *\r\n *\r\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\r\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\r\n *\r\n * ```ts\r\n const u = URI.parse('file://server/c$/folder/file.txt')\r\n u.authority === 'server'\r\n u.path === '/shares/c$/file.txt'\r\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\r\n ```\r\n *\r\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\r\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\r\n * with URIs that represent files on disk (`file` scheme).\r\n */\r\n get fsPath() {\r\n // if (this.scheme !== 'file') {\r\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\r\n // }\r\n return uriToFsPath(this, false);\r\n }\r\n // ---- modify to new -------------------------\r\n with(change) {\r\n if (!change) {\r\n return this;\r\n }\r\n let { scheme, authority, path, query, fragment } = change;\r\n if (scheme === undefined) {\r\n scheme = this.scheme;\r\n }\r\n else if (scheme === null) {\r\n scheme = _empty;\r\n }\r\n if (authority === undefined) {\r\n authority = this.authority;\r\n }\r\n else if (authority === null) {\r\n authority = _empty;\r\n }\r\n if (path === undefined) {\r\n path = this.path;\r\n }\r\n else if (path === null) {\r\n path = _empty;\r\n }\r\n if (query === undefined) {\r\n query = this.query;\r\n }\r\n else if (query === null) {\r\n query = _empty;\r\n }\r\n if (fragment === undefined) {\r\n fragment = this.fragment;\r\n }\r\n else if (fragment === null) {\r\n fragment = _empty;\r\n }\r\n if (scheme === this.scheme\r\n && authority === this.authority\r\n && path === this.path\r\n && query === this.query\r\n && fragment === this.fragment) {\r\n return this;\r\n }\r\n return new Uri(scheme, authority, path, query, fragment);\r\n }\r\n // ---- parse & validate ------------------------\r\n /**\r\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\r\n * `file:///usr/home`, or `scheme:with/path`.\r\n *\r\n * @param value A string which represents an URI (see `URI#toString`).\r\n */\r\n static parse(value, _strict = false) {\r\n const match = _regexp.exec(value);\r\n if (!match) {\r\n return new Uri(_empty, _empty, _empty, _empty, _empty);\r\n }\r\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\r\n }\r\n /**\r\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\r\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\r\n *\r\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\r\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\r\n * `URI.parse('file://' + path)` because the path might contain characters that are\r\n * interpreted (# and ?). See the following sample:\r\n * ```ts\r\n const good = URI.file('/coding/c#/project1');\r\n good.scheme === 'file';\r\n good.path === '/coding/c#/project1';\r\n good.fragment === '';\r\n const bad = URI.parse('file://' + '/coding/c#/project1');\r\n bad.scheme === 'file';\r\n bad.path === '/coding/c'; // path is now broken\r\n bad.fragment === '/project1';\r\n ```\r\n *\r\n * @param path A file system path (see `URI#fsPath`)\r\n */\r\n static file(path) {\r\n let authority = _empty;\r\n // normalize to fwd-slashes on windows,\r\n // on other systems bwd-slashes are valid\r\n // filename character, eg /f\\oo/ba\\r.txt\r\n if (isWindows) {\r\n path = path.replace(/\\\\/g, _slash);\r\n }\r\n // check for authority as used in UNC shares\r\n // or use the path as given\r\n if (path[0] === _slash && path[1] === _slash) {\r\n const idx = path.indexOf(_slash, 2);\r\n if (idx === -1) {\r\n authority = path.substring(2);\r\n path = _slash;\r\n }\r\n else {\r\n authority = path.substring(2, idx);\r\n path = path.substring(idx) || _slash;\r\n }\r\n }\r\n return new Uri('file', authority, path, _empty, _empty);\r\n }\r\n static from(components) {\r\n return new Uri(components.scheme, components.authority, components.path, components.query, components.fragment);\r\n }\r\n /**\r\n * Join a URI path with path fragments and normalizes the resulting path.\r\n *\r\n * @param uri The input URI.\r\n * @param pathFragment The path fragment to add to the URI path.\r\n * @returns The resulting URI.\r\n */\r\n static joinPath(uri, ...pathFragment) {\r\n if (!uri.path) {\r\n throw new Error(`[UriError]: cannot call joinPaths on URI without path`);\r\n }\r\n let newPath;\r\n if (isWindows && uri.scheme === 'file') {\r\n newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\r\n }\r\n else {\r\n newPath = paths.posix.join(uri.path, ...pathFragment);\r\n }\r\n return uri.with({ path: newPath });\r\n }\r\n // ---- printing/externalize ---------------------------\r\n /**\r\n * Creates a string representation for this URI. It's guaranteed that calling\r\n * `URI.parse` with the result of this function creates an URI which is equal\r\n * to this URI.\r\n *\r\n * * The result shall *not* be used for display purposes but for externalization or transport.\r\n * * The result will be encoded using the percentage encoding and encoding happens mostly\r\n * ignore the scheme-specific encoding rules.\r\n *\r\n * @param skipEncoding Do not encode the result, default is `false`\r\n */\r\n toString(skipEncoding = false) {\r\n return _asFormatted(this, skipEncoding);\r\n }\r\n toJSON() {\r\n return this;\r\n }\r\n static revive(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n else if (data instanceof URI) {\r\n return data;\r\n }\r\n else {\r\n const result = new Uri(data);\r\n result._formatted = data.external;\r\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\r\n return result;\r\n }\r\n }\r\n}\r\nconst _pathSepMarker = isWindows ? 1 : undefined;\r\n// This class exists so that URI is compatibile with vscode.Uri (API).\r\nclass Uri extends URI {\r\n constructor() {\r\n super(...arguments);\r\n this._formatted = null;\r\n this._fsPath = null;\r\n }\r\n get fsPath() {\r\n if (!this._fsPath) {\r\n this._fsPath = uriToFsPath(this, false);\r\n }\r\n return this._fsPath;\r\n }\r\n toString(skipEncoding = false) {\r\n if (!skipEncoding) {\r\n if (!this._formatted) {\r\n this._formatted = _asFormatted(this, false);\r\n }\r\n return this._formatted;\r\n }\r\n else {\r\n // we don't cache that\r\n return _asFormatted(this, true);\r\n }\r\n }\r\n toJSON() {\r\n const res = {\r\n $mid: 1\r\n };\r\n // cached state\r\n if (this._fsPath) {\r\n res.fsPath = this._fsPath;\r\n res._sep = _pathSepMarker;\r\n }\r\n if (this._formatted) {\r\n res.external = this._formatted;\r\n }\r\n // uri components\r\n if (this.path) {\r\n res.path = this.path;\r\n }\r\n if (this.scheme) {\r\n res.scheme = this.scheme;\r\n }\r\n if (this.authority) {\r\n res.authority = this.authority;\r\n }\r\n if (this.query) {\r\n res.query = this.query;\r\n }\r\n if (this.fragment) {\r\n res.fragment = this.fragment;\r\n }\r\n return res;\r\n }\r\n}\r\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\r\nconst encodeTable = {\r\n [58 /* Colon */]: '%3A',\r\n [47 /* Slash */]: '%2F',\r\n [63 /* QuestionMark */]: '%3F',\r\n [35 /* Hash */]: '%23',\r\n [91 /* OpenSquareBracket */]: '%5B',\r\n [93 /* CloseSquareBracket */]: '%5D',\r\n [64 /* AtSign */]: '%40',\r\n [33 /* ExclamationMark */]: '%21',\r\n [36 /* DollarSign */]: '%24',\r\n [38 /* Ampersand */]: '%26',\r\n [39 /* SingleQuote */]: '%27',\r\n [40 /* OpenParen */]: '%28',\r\n [41 /* CloseParen */]: '%29',\r\n [42 /* Asterisk */]: '%2A',\r\n [43 /* Plus */]: '%2B',\r\n [44 /* Comma */]: '%2C',\r\n [59 /* Semicolon */]: '%3B',\r\n [61 /* Equals */]: '%3D',\r\n [32 /* Space */]: '%20',\r\n};\r\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\r\n let res = undefined;\r\n let nativeEncodePos = -1;\r\n for (let pos = 0; pos < uriComponent.length; pos++) {\r\n const code = uriComponent.charCodeAt(pos);\r\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\r\n if ((code >= 97 /* a */ && code <= 122 /* z */)\r\n || (code >= 65 /* A */ && code <= 90 /* Z */)\r\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\r\n || code === 45 /* Dash */\r\n || code === 46 /* Period */\r\n || code === 95 /* Underline */\r\n || code === 126 /* Tilde */\r\n || (allowSlash && code === 47 /* Slash */)) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // check if we write into a new string (by default we try to return the param)\r\n if (res !== undefined) {\r\n res += uriComponent.charAt(pos);\r\n }\r\n }\r\n else {\r\n // encoding needed, we need to allocate a new string\r\n if (res === undefined) {\r\n res = uriComponent.substr(0, pos);\r\n }\r\n // check with default table first\r\n const escaped = encodeTable[code];\r\n if (escaped !== undefined) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // append escaped variant to result\r\n res += escaped;\r\n }\r\n else if (nativeEncodePos === -1) {\r\n // use native encode only when needed\r\n nativeEncodePos = pos;\r\n }\r\n }\r\n }\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\r\n }\r\n return res !== undefined ? res : uriComponent;\r\n}\r\nfunction encodeURIComponentMinimal(path) {\r\n let res = undefined;\r\n for (let pos = 0; pos < path.length; pos++) {\r\n const code = path.charCodeAt(pos);\r\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\r\n if (res === undefined) {\r\n res = path.substr(0, pos);\r\n }\r\n res += encodeTable[code];\r\n }\r\n else {\r\n if (res !== undefined) {\r\n res += path[pos];\r\n }\r\n }\r\n }\r\n return res !== undefined ? res : path;\r\n}\r\n/**\r\n * Compute `fsPath` for the given uri\r\n */\r\nexport function uriToFsPath(uri, keepDriveLetterCasing) {\r\n let value;\r\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\r\n // unc path: file://shares/c$/far/boo\r\n value = `//${uri.authority}${uri.path}`;\r\n }\r\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\r\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\r\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\r\n if (!keepDriveLetterCasing) {\r\n // windows drive letter: file:///c:/far/boo\r\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\r\n }\r\n else {\r\n value = uri.path.substr(1);\r\n }\r\n }\r\n else {\r\n // other path\r\n value = uri.path;\r\n }\r\n if (isWindows) {\r\n value = value.replace(/\\//g, '\\\\');\r\n }\r\n return value;\r\n}\r\n/**\r\n * Create the external version of a uri\r\n */\r\nfunction _asFormatted(uri, skipEncoding) {\r\n const encoder = !skipEncoding\r\n ? encodeURIComponentFast\r\n : encodeURIComponentMinimal;\r\n let res = '';\r\n let { scheme, authority, path, query, fragment } = uri;\r\n if (scheme) {\r\n res += scheme;\r\n res += ':';\r\n }\r\n if (authority || scheme === 'file') {\r\n res += _slash;\r\n res += _slash;\r\n }\r\n if (authority) {\r\n let idx = authority.indexOf('@');\r\n if (idx !== -1) {\r\n // <user>@<auth>\r\n const userinfo = authority.substr(0, idx);\r\n authority = authority.substr(idx + 1);\r\n idx = userinfo.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(userinfo, false);\r\n }\r\n else {\r\n // <user>:<pass>@<auth>\r\n res += encoder(userinfo.substr(0, idx), false);\r\n res += ':';\r\n res += encoder(userinfo.substr(idx + 1), false);\r\n }\r\n res += '@';\r\n }\r\n authority = authority.toLowerCase();\r\n idx = authority.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(authority, false);\r\n }\r\n else {\r\n // <auth>:<port>\r\n res += encoder(authority.substr(0, idx), false);\r\n res += authority.substr(idx);\r\n }\r\n }\r\n if (path) {\r\n // lower-case windows drive letters in /C:/fff or C:/fff\r\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\r\n const code = path.charCodeAt(1);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\r\n const code = path.charCodeAt(0);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n // encode the rest of the path\r\n res += encoder(path, true);\r\n }\r\n if (query) {\r\n res += '?';\r\n res += encoder(query, false);\r\n }\r\n if (fragment) {\r\n res += '#';\r\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\r\n }\r\n return res;\r\n}\r\n// --- decode\r\nfunction decodeURIComponentGraceful(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n }\r\n catch (_a) {\r\n if (str.length > 3) {\r\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n}\r\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\r\nfunction percentDecode(str) {\r\n if (!str.match(_rEncodedAsHex)) {\r\n return str;\r\n }\r\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { transformErrorForSerialization } from '../errors.js';\r\nimport { Disposable } from '../lifecycle.js';\r\nimport { isWeb } from '../platform.js';\r\nimport * as types from '../types.js';\r\nconst INITIALIZE = '$initialize';\r\nlet webWorkerWarningLogged = false;\r\nexport function logOnceWebWorkerWarning(err) {\r\n if (!isWeb) {\r\n // running tests\r\n return;\r\n }\r\n if (!webWorkerWarningLogged) {\r\n webWorkerWarningLogged = true;\r\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq');\r\n }\r\n console.warn(err.message);\r\n}\r\nclass SimpleWorkerProtocol {\r\n constructor(handler) {\r\n this._workerId = -1;\r\n this._handler = handler;\r\n this._lastSentReq = 0;\r\n this._pendingReplies = Object.create(null);\r\n }\r\n setWorkerId(workerId) {\r\n this._workerId = workerId;\r\n }\r\n sendMessage(method, args) {\r\n let req = String(++this._lastSentReq);\r\n return new Promise((resolve, reject) => {\r\n this._pendingReplies[req] = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n this._send({\r\n vsWorker: this._workerId,\r\n req: req,\r\n method: method,\r\n args: args\r\n });\r\n });\r\n }\r\n handleMessage(message) {\r\n if (!message || !message.vsWorker) {\r\n return;\r\n }\r\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\r\n return;\r\n }\r\n this._handleMessage(message);\r\n }\r\n _handleMessage(msg) {\r\n if (msg.seq) {\r\n let replyMessage = msg;\r\n if (!this._pendingReplies[replyMessage.seq]) {\r\n console.warn('Got reply to unknown seq');\r\n return;\r\n }\r\n let reply = this._pendingReplies[replyMessage.seq];\r\n delete this._pendingReplies[replyMessage.seq];\r\n if (replyMessage.err) {\r\n let err = replyMessage.err;\r\n if (replyMessage.err.$isError) {\r\n err = new Error();\r\n err.name = replyMessage.err.name;\r\n err.message = replyMessage.err.message;\r\n err.stack = replyMessage.err.stack;\r\n }\r\n reply.reject(err);\r\n return;\r\n }\r\n reply.resolve(replyMessage.res);\r\n return;\r\n }\r\n let requestMessage = msg;\r\n let req = requestMessage.req;\r\n let result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\r\n result.then((r) => {\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: r,\r\n err: undefined\r\n });\r\n }, (e) => {\r\n if (e.detail instanceof Error) {\r\n // Loading errors have a detail property that points to the actual error\r\n e.detail = transformErrorForSerialization(e.detail);\r\n }\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: undefined,\r\n err: transformErrorForSerialization(e)\r\n });\r\n });\r\n }\r\n _send(msg) {\r\n let transfer = [];\r\n if (msg.req) {\r\n const m = msg;\r\n for (let i = 0; i < m.args.length; i++) {\r\n if (m.args[i] instanceof ArrayBuffer) {\r\n transfer.push(m.args[i]);\r\n }\r\n }\r\n }\r\n else {\r\n const m = msg;\r\n if (m.res instanceof ArrayBuffer) {\r\n transfer.push(m.res);\r\n }\r\n }\r\n this._handler.sendMessage(msg, transfer);\r\n }\r\n}\r\n/**\r\n * Main thread side\r\n */\r\nexport class SimpleWorkerClient extends Disposable {\r\n constructor(workerFactory, moduleId, host) {\r\n super();\r\n let lazyProxyReject = null;\r\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\r\n this._protocol.handleMessage(msg);\r\n }, (err) => {\r\n // in Firefox, web workers fail lazily :(\r\n // we will reject the proxy\r\n if (lazyProxyReject) {\r\n lazyProxyReject(err);\r\n }\r\n }));\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n this._worker.postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => {\r\n if (typeof host[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\r\n }\r\n try {\r\n return Promise.resolve(host[method].apply(host, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n });\r\n this._protocol.setWorkerId(this._worker.getId());\r\n // Gather loader configuration\r\n let loaderConfiguration = null;\r\n if (typeof self.require !== 'undefined' && typeof self.require.getConfig === 'function') {\r\n // Get the configuration from the Monaco AMD Loader\r\n loaderConfiguration = self.require.getConfig();\r\n }\r\n else if (typeof self.requirejs !== 'undefined') {\r\n // Get the configuration from requirejs\r\n loaderConfiguration = self.requirejs.s.contexts._.config;\r\n }\r\n const hostMethods = types.getAllMethodNames(host);\r\n // Send initialize message\r\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\r\n this._worker.getId(),\r\n JSON.parse(JSON.stringify(loaderConfiguration)),\r\n moduleId,\r\n hostMethods,\r\n ]);\r\n // Create proxy to loaded code\r\n const proxyMethodRequest = (method, args) => {\r\n return this._request(method, args);\r\n };\r\n this._lazyProxy = new Promise((resolve, reject) => {\r\n lazyProxyReject = reject;\r\n this._onModuleLoaded.then((availableMethods) => {\r\n resolve(types.createProxyObject(availableMethods, proxyMethodRequest));\r\n }, (e) => {\r\n reject(e);\r\n this._onError('Worker failed to load ' + moduleId, e);\r\n });\r\n });\r\n }\r\n getProxyObject() {\r\n return this._lazyProxy;\r\n }\r\n _request(method, args) {\r\n return new Promise((resolve, reject) => {\r\n this._onModuleLoaded.then(() => {\r\n this._protocol.sendMessage(method, args).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n _onError(message, error) {\r\n console.error(message);\r\n console.info(error);\r\n }\r\n}\r\n/**\r\n * Worker side\r\n */\r\nexport class SimpleWorkerServer {\r\n constructor(postMessage, requestHandlerFactory) {\r\n this._requestHandlerFactory = requestHandlerFactory;\r\n this._requestHandler = null;\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => this._handleMessage(method, args)\r\n });\r\n }\r\n onmessage(msg) {\r\n this._protocol.handleMessage(msg);\r\n }\r\n _handleMessage(method, args) {\r\n if (method === INITIALIZE) {\r\n return this.initialize(args[0], args[1], args[2], args[3]);\r\n }\r\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\r\n this._protocol.setWorkerId(workerId);\r\n const proxyMethodRequest = (method, args) => {\r\n return this._protocol.sendMessage(method, args);\r\n };\r\n const hostProxy = types.createProxyObject(hostMethods, proxyMethodRequest);\r\n if (this._requestHandlerFactory) {\r\n // static request handler\r\n this._requestHandler = this._requestHandlerFactory(hostProxy);\r\n return Promise.resolve(types.getAllMethodNames(this._requestHandler));\r\n }\r\n if (loaderConfig) {\r\n // Remove 'baseUrl', handling it is beyond scope for now\r\n if (typeof loaderConfig.baseUrl !== 'undefined') {\r\n delete loaderConfig['baseUrl'];\r\n }\r\n if (typeof loaderConfig.paths !== 'undefined') {\r\n if (typeof loaderConfig.paths.vs !== 'undefined') {\r\n delete loaderConfig.paths['vs'];\r\n }\r\n }\r\n // Since this is in a web worker, enable catching errors\r\n loaderConfig.catchError = true;\r\n self.require.config(loaderConfig);\r\n }\r\n return new Promise((resolve, reject) => {\r\n // Use the global require to be sure to get the global config\r\n self.require([moduleId], (module) => {\r\n this._requestHandler = module.create(hostProxy);\r\n if (!this._requestHandler) {\r\n reject(new Error(`No RequestHandler!`));\r\n return;\r\n }\r\n resolve(types.getAllMethodNames(this._requestHandler));\r\n }, reject);\r\n });\r\n }\r\n}\r\n/**\r\n * Called on the worker side\r\n */\r\nexport function create(postMessage) {\r\n return new SimpleWorkerServer(postMessage, null);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './media/quickInput.css';\r\nimport { NO_KEY_MODS, ItemActivation } from '../common/quickInput.js';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { CancellationToken } from '../../../common/cancellation.js';\r\nimport { QuickInputList, QuickInputListFocus } from './quickInputList.js';\r\nimport { QuickInputBox } from './quickInputBox.js';\r\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { CountBadge } from '../../../browser/ui/countBadge/countBadge.js';\r\nimport { ProgressBar } from '../../../browser/ui/progressbar/progressbar.js';\r\nimport { Emitter } from '../../../common/event.js';\r\nimport { Button } from '../../../browser/ui/button/button.js';\r\nimport { dispose, Disposable, DisposableStore } from '../../../common/lifecycle.js';\r\nimport Severity from '../../../common/severity.js';\r\nimport { ActionBar } from '../../../browser/ui/actionbar/actionbar.js';\r\nimport { Action } from '../../../common/actions.js';\r\nimport { equals } from '../../../common/arrays.js';\r\nimport { TimeoutTimer } from '../../../common/async.js';\r\nimport { getIconClass } from './quickInputUtils.js';\r\nimport { registerIcon, Codicon } from '../../../common/codicons.js';\r\nconst $ = dom.$;\r\nconst backButtonIcon = registerIcon('quick-input-back', Codicon.arrowLeft);\r\nconst backButton = {\r\n iconClass: backButtonIcon.classNames,\r\n tooltip: localize('quickInput.back', \"Back\"),\r\n handle: -1 // TODO\r\n};\r\nclass QuickInput extends Disposable {\r\n constructor(ui) {\r\n super();\r\n this.ui = ui;\r\n this.visible = false;\r\n this._enabled = true;\r\n this._busy = false;\r\n this._ignoreFocusOut = false;\r\n this._buttons = [];\r\n this.buttonsUpdated = false;\r\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\r\n this.onDidHideEmitter = this._register(new Emitter());\r\n this.onDisposeEmitter = this._register(new Emitter());\r\n this.visibleDisposables = this._register(new DisposableStore());\r\n this.onDidHide = this.onDidHideEmitter.event;\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n set title(title) {\r\n this._title = title;\r\n this.update();\r\n }\r\n get description() {\r\n return this._description;\r\n }\r\n set description(description) {\r\n this._description = description;\r\n this.update();\r\n }\r\n get step() {\r\n return this._steps;\r\n }\r\n set step(step) {\r\n this._steps = step;\r\n this.update();\r\n }\r\n get totalSteps() {\r\n return this._totalSteps;\r\n }\r\n set totalSteps(totalSteps) {\r\n this._totalSteps = totalSteps;\r\n this.update();\r\n }\r\n get enabled() {\r\n return this._enabled;\r\n }\r\n set enabled(enabled) {\r\n this._enabled = enabled;\r\n this.update();\r\n }\r\n get contextKey() {\r\n return this._contextKey;\r\n }\r\n set contextKey(contextKey) {\r\n this._contextKey = contextKey;\r\n this.update();\r\n }\r\n get busy() {\r\n return this._busy;\r\n }\r\n set busy(busy) {\r\n this._busy = busy;\r\n this.update();\r\n }\r\n get ignoreFocusOut() {\r\n return this._ignoreFocusOut;\r\n }\r\n set ignoreFocusOut(ignoreFocusOut) {\r\n this._ignoreFocusOut = ignoreFocusOut;\r\n this.update();\r\n }\r\n get buttons() {\r\n return this._buttons;\r\n }\r\n set buttons(buttons) {\r\n this._buttons = buttons;\r\n this.buttonsUpdated = true;\r\n this.update();\r\n }\r\n show() {\r\n if (this.visible) {\r\n return;\r\n }\r\n this.visibleDisposables.add(this.ui.onDidTriggerButton(button => {\r\n if (this.buttons.indexOf(button) !== -1) {\r\n this.onDidTriggerButtonEmitter.fire(button);\r\n }\r\n }));\r\n this.ui.show(this);\r\n this.visible = true;\r\n this.update();\r\n }\r\n hide() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n this.ui.hide();\r\n }\r\n didHide() {\r\n this.visible = false;\r\n this.visibleDisposables.clear();\r\n this.onDidHideEmitter.fire();\r\n }\r\n update() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n const title = this.getTitle();\r\n if (title && this.ui.title.textContent !== title) {\r\n this.ui.title.textContent = title;\r\n }\r\n else if (!title && this.ui.title.innerHTML !== ' ') {\r\n this.ui.title.innerText = '\\u00a0;';\r\n }\r\n const description = this.getDescription();\r\n if (this.ui.description.textContent !== description) {\r\n this.ui.description.textContent = description;\r\n }\r\n if (this.busy && !this.busyDelay) {\r\n this.busyDelay = new TimeoutTimer();\r\n this.busyDelay.setIfNotSet(() => {\r\n if (this.visible) {\r\n this.ui.progressBar.infinite();\r\n }\r\n }, 800);\r\n }\r\n if (!this.busy && this.busyDelay) {\r\n this.ui.progressBar.stop();\r\n this.busyDelay.cancel();\r\n this.busyDelay = undefined;\r\n }\r\n if (this.buttonsUpdated) {\r\n this.buttonsUpdated = false;\r\n this.ui.leftActionBar.clear();\r\n const leftButtons = this.buttons.filter(button => button === backButton);\r\n this.ui.leftActionBar.push(leftButtons.map((button, index) => {\r\n const action = new Action(`id-${index}`, '', button.iconClass || getIconClass(button.iconPath), true, () => __awaiter(this, void 0, void 0, function* () {\r\n this.onDidTriggerButtonEmitter.fire(button);\r\n }));\r\n action.tooltip = button.tooltip || '';\r\n return action;\r\n }), { icon: true, label: false });\r\n this.ui.rightActionBar.clear();\r\n const rightButtons = this.buttons.filter(button => button !== backButton);\r\n this.ui.rightActionBar.push(rightButtons.map((button, index) => {\r\n const action = new Action(`id-${index}`, '', button.iconClass || getIconClass(button.iconPath), true, () => __awaiter(this, void 0, void 0, function* () {\r\n this.onDidTriggerButtonEmitter.fire(button);\r\n }));\r\n action.tooltip = button.tooltip || '';\r\n return action;\r\n }), { icon: true, label: false });\r\n }\r\n this.ui.ignoreFocusOut = this.ignoreFocusOut;\r\n this.ui.setEnabled(this.enabled);\r\n this.ui.setContextKey(this.contextKey);\r\n }\r\n getTitle() {\r\n if (this.title && this.step) {\r\n return `${this.title} (${this.getSteps()})`;\r\n }\r\n if (this.title) {\r\n return this.title;\r\n }\r\n if (this.step) {\r\n return this.getSteps();\r\n }\r\n return '';\r\n }\r\n getDescription() {\r\n return this.description || '';\r\n }\r\n getSteps() {\r\n if (this.step && this.totalSteps) {\r\n return localize('quickInput.steps', \"{0}/{1}\", this.step, this.totalSteps);\r\n }\r\n if (this.step) {\r\n return String(this.step);\r\n }\r\n return '';\r\n }\r\n showMessageDecoration(severity) {\r\n this.ui.inputBox.showDecoration(severity);\r\n if (severity === Severity.Error) {\r\n const styles = this.ui.inputBox.stylesForType(severity);\r\n this.ui.message.style.color = styles.foreground ? `${styles.foreground}` : '';\r\n this.ui.message.style.backgroundColor = styles.background ? `${styles.background}` : '';\r\n this.ui.message.style.border = styles.border ? `1px solid ${styles.border}` : '';\r\n this.ui.message.style.paddingBottom = '4px';\r\n }\r\n else {\r\n this.ui.message.style.color = '';\r\n this.ui.message.style.backgroundColor = '';\r\n this.ui.message.style.border = '';\r\n this.ui.message.style.paddingBottom = '';\r\n }\r\n }\r\n dispose() {\r\n this.hide();\r\n this.onDisposeEmitter.fire();\r\n super.dispose();\r\n }\r\n}\r\nclass QuickPick extends QuickInput {\r\n constructor() {\r\n super(...arguments);\r\n this._value = '';\r\n this.onDidChangeValueEmitter = this._register(new Emitter());\r\n this.onDidAcceptEmitter = this._register(new Emitter());\r\n this.onDidCustomEmitter = this._register(new Emitter());\r\n this._items = [];\r\n this.itemsUpdated = false;\r\n this._canSelectMany = false;\r\n this._canAcceptInBackground = false;\r\n this._matchOnDescription = false;\r\n this._matchOnDetail = false;\r\n this._matchOnLabel = true;\r\n this._sortByLabel = true;\r\n this._autoFocusOnList = true;\r\n this._itemActivation = this.ui.isScreenReaderOptimized() ? ItemActivation.NONE /* https://github.com/microsoft/vscode/issues/57501 */ : ItemActivation.FIRST;\r\n this._activeItems = [];\r\n this.activeItemsUpdated = false;\r\n this.activeItemsToConfirm = [];\r\n this.onDidChangeActiveEmitter = this._register(new Emitter());\r\n this._selectedItems = [];\r\n this.selectedItemsUpdated = false;\r\n this.selectedItemsToConfirm = [];\r\n this.onDidChangeSelectionEmitter = this._register(new Emitter());\r\n this.onDidTriggerItemButtonEmitter = this._register(new Emitter());\r\n this.valueSelectionUpdated = true;\r\n this._ok = 'default';\r\n this._customButton = false;\r\n this.filterValue = (value) => value;\r\n this.onDidChangeValue = this.onDidChangeValueEmitter.event;\r\n this.onDidAccept = this.onDidAcceptEmitter.event;\r\n this.onDidChangeActive = this.onDidChangeActiveEmitter.event;\r\n this.onDidChangeSelection = this.onDidChangeSelectionEmitter.event;\r\n this.onDidTriggerItemButton = this.onDidTriggerItemButtonEmitter.event;\r\n }\r\n get quickNavigate() {\r\n return this._quickNavigate;\r\n }\r\n set quickNavigate(quickNavigate) {\r\n this._quickNavigate = quickNavigate;\r\n this.update();\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n set value(value) {\r\n this._value = value || '';\r\n this.update();\r\n }\r\n set ariaLabel(ariaLabel) {\r\n this._ariaLabel = ariaLabel;\r\n this.update();\r\n }\r\n get ariaLabel() {\r\n return this._ariaLabel;\r\n }\r\n get placeholder() {\r\n return this._placeholder;\r\n }\r\n set placeholder(placeholder) {\r\n this._placeholder = placeholder;\r\n this.update();\r\n }\r\n get items() {\r\n return this._items;\r\n }\r\n set items(items) {\r\n this._items = items;\r\n this.itemsUpdated = true;\r\n this.update();\r\n }\r\n get canSelectMany() {\r\n return this._canSelectMany;\r\n }\r\n set canSelectMany(canSelectMany) {\r\n this._canSelectMany = canSelectMany;\r\n this.update();\r\n }\r\n get canAcceptInBackground() {\r\n return this._canAcceptInBackground;\r\n }\r\n set canAcceptInBackground(canAcceptInBackground) {\r\n this._canAcceptInBackground = canAcceptInBackground;\r\n }\r\n get matchOnDescription() {\r\n return this._matchOnDescription;\r\n }\r\n set matchOnDescription(matchOnDescription) {\r\n this._matchOnDescription = matchOnDescription;\r\n this.update();\r\n }\r\n get matchOnDetail() {\r\n return this._matchOnDetail;\r\n }\r\n set matchOnDetail(matchOnDetail) {\r\n this._matchOnDetail = matchOnDetail;\r\n this.update();\r\n }\r\n get matchOnLabel() {\r\n return this._matchOnLabel;\r\n }\r\n set matchOnLabel(matchOnLabel) {\r\n this._matchOnLabel = matchOnLabel;\r\n this.update();\r\n }\r\n get sortByLabel() {\r\n return this._sortByLabel;\r\n }\r\n set sortByLabel(sortByLabel) {\r\n this._sortByLabel = sortByLabel;\r\n this.update();\r\n }\r\n get autoFocusOnList() {\r\n return this._autoFocusOnList;\r\n }\r\n set autoFocusOnList(autoFocusOnList) {\r\n this._autoFocusOnList = autoFocusOnList;\r\n this.update();\r\n }\r\n get itemActivation() {\r\n return this._itemActivation;\r\n }\r\n set itemActivation(itemActivation) {\r\n this._itemActivation = itemActivation;\r\n }\r\n get activeItems() {\r\n return this._activeItems;\r\n }\r\n set activeItems(activeItems) {\r\n this._activeItems = activeItems;\r\n this.activeItemsUpdated = true;\r\n this.update();\r\n }\r\n get selectedItems() {\r\n return this._selectedItems;\r\n }\r\n set selectedItems(selectedItems) {\r\n this._selectedItems = selectedItems;\r\n this.selectedItemsUpdated = true;\r\n this.update();\r\n }\r\n get keyMods() {\r\n if (this._quickNavigate) {\r\n // Disable keyMods when quick navigate is enabled\r\n // because in this model the interaction is purely\r\n // keyboard driven and Ctrl/Alt are typically\r\n // pressed and hold during this interaction.\r\n return NO_KEY_MODS;\r\n }\r\n return this.ui.keyMods;\r\n }\r\n set valueSelection(valueSelection) {\r\n this._valueSelection = valueSelection;\r\n this.valueSelectionUpdated = true;\r\n this.update();\r\n }\r\n get validationMessage() {\r\n return this._validationMessage;\r\n }\r\n set validationMessage(validationMessage) {\r\n this._validationMessage = validationMessage;\r\n this.update();\r\n }\r\n get customButton() {\r\n return this._customButton;\r\n }\r\n set customButton(showCustomButton) {\r\n this._customButton = showCustomButton;\r\n this.update();\r\n }\r\n get customLabel() {\r\n return this._customButtonLabel;\r\n }\r\n set customLabel(label) {\r\n this._customButtonLabel = label;\r\n this.update();\r\n }\r\n get customHover() {\r\n return this._customButtonHover;\r\n }\r\n set customHover(hover) {\r\n this._customButtonHover = hover;\r\n this.update();\r\n }\r\n get ok() {\r\n return this._ok;\r\n }\r\n set ok(showOkButton) {\r\n this._ok = showOkButton;\r\n this.update();\r\n }\r\n get hideInput() {\r\n return !!this._hideInput;\r\n }\r\n set hideInput(hideInput) {\r\n this._hideInput = hideInput;\r\n this.update();\r\n }\r\n trySelectFirst() {\r\n if (this.autoFocusOnList) {\r\n if (!this.canSelectMany) {\r\n this.ui.list.focus(QuickInputListFocus.First);\r\n }\r\n }\r\n }\r\n show() {\r\n if (!this.visible) {\r\n this.visibleDisposables.add(this.ui.inputBox.onDidChange(value => {\r\n if (value === this.value) {\r\n return;\r\n }\r\n this._value = value;\r\n const didFilter = this.ui.list.filter(this.filterValue(this.ui.inputBox.value));\r\n if (didFilter) {\r\n this.trySelectFirst();\r\n }\r\n this.onDidChangeValueEmitter.fire(value);\r\n }));\r\n this.visibleDisposables.add(this.ui.inputBox.onMouseDown(event => {\r\n if (!this.autoFocusOnList) {\r\n this.ui.list.clearFocus();\r\n }\r\n }));\r\n this.visibleDisposables.add((this._hideInput ? this.ui.list : this.ui.inputBox).onKeyDown((event) => {\r\n switch (event.keyCode) {\r\n case 18 /* DownArrow */:\r\n this.ui.list.focus(QuickInputListFocus.Next);\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 16 /* UpArrow */:\r\n if (this.ui.list.getFocusedElements().length) {\r\n this.ui.list.focus(QuickInputListFocus.Previous);\r\n }\r\n else {\r\n this.ui.list.focus(QuickInputListFocus.Last);\r\n }\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 12 /* PageDown */:\r\n this.ui.list.focus(QuickInputListFocus.NextPage);\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 11 /* PageUp */:\r\n this.ui.list.focus(QuickInputListFocus.PreviousPage);\r\n if (this.canSelectMany) {\r\n this.ui.list.domFocus();\r\n }\r\n dom.EventHelper.stop(event, true);\r\n break;\r\n case 17 /* RightArrow */:\r\n if (!this._canAcceptInBackground) {\r\n return; // needs to be enabled\r\n }\r\n if (!this.ui.inputBox.isSelectionAtEnd()) {\r\n return; // ensure input box selection at end\r\n }\r\n if (this.activeItems[0]) {\r\n this._selectedItems = [this.activeItems[0]];\r\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\r\n this.onDidAcceptEmitter.fire({ inBackground: true });\r\n }\r\n break;\r\n case 14 /* Home */:\r\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {\r\n this.ui.list.focus(QuickInputListFocus.First);\r\n dom.EventHelper.stop(event, true);\r\n }\r\n break;\r\n case 13 /* End */:\r\n if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {\r\n this.ui.list.focus(QuickInputListFocus.Last);\r\n dom.EventHelper.stop(event, true);\r\n }\r\n break;\r\n }\r\n }));\r\n this.visibleDisposables.add(this.ui.onDidAccept(() => {\r\n if (!this.canSelectMany && this.activeItems[0]) {\r\n this._selectedItems = [this.activeItems[0]];\r\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\r\n }\r\n this.onDidAcceptEmitter.fire({ inBackground: false });\r\n }));\r\n this.visibleDisposables.add(this.ui.onDidCustom(() => {\r\n this.onDidCustomEmitter.fire();\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onDidChangeFocus(focusedItems => {\r\n if (this.activeItemsUpdated) {\r\n return; // Expect another event.\r\n }\r\n if (this.activeItemsToConfirm !== this._activeItems && equals(focusedItems, this._activeItems, (a, b) => a === b)) {\r\n return;\r\n }\r\n this._activeItems = focusedItems;\r\n this.onDidChangeActiveEmitter.fire(focusedItems);\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onDidChangeSelection(({ items: selectedItems, event }) => {\r\n if (this.canSelectMany) {\r\n if (selectedItems.length) {\r\n this.ui.list.setSelectedElements([]);\r\n }\r\n return;\r\n }\r\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(selectedItems, this._selectedItems, (a, b) => a === b)) {\r\n return;\r\n }\r\n this._selectedItems = selectedItems;\r\n this.onDidChangeSelectionEmitter.fire(selectedItems);\r\n if (selectedItems.length) {\r\n this.onDidAcceptEmitter.fire({ inBackground: event instanceof MouseEvent && event.button === 1 /* mouse middle click */ });\r\n }\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onChangedCheckedElements(checkedItems => {\r\n if (!this.canSelectMany) {\r\n return;\r\n }\r\n if (this.selectedItemsToConfirm !== this._selectedItems && equals(checkedItems, this._selectedItems, (a, b) => a === b)) {\r\n return;\r\n }\r\n this._selectedItems = checkedItems;\r\n this.onDidChangeSelectionEmitter.fire(checkedItems);\r\n }));\r\n this.visibleDisposables.add(this.ui.list.onButtonTriggered(event => this.onDidTriggerItemButtonEmitter.fire(event)));\r\n this.visibleDisposables.add(this.registerQuickNavigation());\r\n this.valueSelectionUpdated = true;\r\n }\r\n super.show(); // TODO: Why have show() bubble up while update() trickles down? (Could move setComboboxAccessibility() here.)\r\n }\r\n registerQuickNavigation() {\r\n return dom.addDisposableListener(this.ui.container, dom.EventType.KEY_UP, e => {\r\n if (this.canSelectMany || !this._quickNavigate) {\r\n return;\r\n }\r\n const keyboardEvent = new StandardKeyboardEvent(e);\r\n const keyCode = keyboardEvent.keyCode;\r\n // Select element when keys are pressed that signal it\r\n const quickNavKeys = this._quickNavigate.keybindings;\r\n const wasTriggerKeyPressed = quickNavKeys.some(k => {\r\n const [firstPart, chordPart] = k.getParts();\r\n if (chordPart) {\r\n return false;\r\n }\r\n if (firstPart.shiftKey && keyCode === 4 /* Shift */) {\r\n if (keyboardEvent.ctrlKey || keyboardEvent.altKey || keyboardEvent.metaKey) {\r\n return false; // this is an optimistic check for the shift key being used to navigate back in quick input\r\n }\r\n return true;\r\n }\r\n if (firstPart.altKey && keyCode === 6 /* Alt */) {\r\n return true;\r\n }\r\n if (firstPart.ctrlKey && keyCode === 5 /* Ctrl */) {\r\n return true;\r\n }\r\n if (firstPart.metaKey && keyCode === 57 /* Meta */) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (wasTriggerKeyPressed) {\r\n if (this.activeItems[0]) {\r\n this._selectedItems = [this.activeItems[0]];\r\n this.onDidChangeSelectionEmitter.fire(this.selectedItems);\r\n this.onDidAcceptEmitter.fire({ inBackground: false });\r\n }\r\n // Unset quick navigate after press. It is only valid once\r\n // and should not result in any behaviour change afterwards\r\n // if the picker remains open because there was no active item\r\n this._quickNavigate = undefined;\r\n }\r\n });\r\n }\r\n update() {\r\n if (!this.visible) {\r\n return;\r\n }\r\n let hideInput = false;\r\n let inputShownJustForScreenReader = false;\r\n if (!!this._hideInput && this._items.length > 0) {\r\n if (this.ui.isScreenReaderOptimized()) {\r\n // Always show input if screen reader attached https://github.com/microsoft/vscode/issues/94360\r\n inputShownJustForScreenReader = true;\r\n }\r\n else {\r\n hideInput = true;\r\n }\r\n }\r\n dom.toggleClass(this.ui.container, 'hidden-input', hideInput);\r\n const visibilities = {\r\n title: !!this.title || !!this.step || !!this.buttons.length,\r\n description: !!this.description,\r\n checkAll: this.canSelectMany,\r\n inputBox: !hideInput,\r\n progressBar: !hideInput,\r\n visibleCount: true,\r\n count: this.canSelectMany,\r\n ok: this.ok === 'default' ? this.canSelectMany : this.ok,\r\n list: true,\r\n message: !!this.validationMessage,\r\n customButton: this.customButton\r\n };\r\n this.ui.setVisibilities(visibilities);\r\n super.update();\r\n if (this.ui.inputBox.value !== this.value) {\r\n this.ui.inputBox.value = this.value;\r\n }\r\n if (this.valueSelectionUpdated) {\r\n this.valueSelectionUpdated = false;\r\n this.ui.inputBox.select(this._valueSelection && { start: this._valueSelection[0], end: this._valueSelection[1] });\r\n }\r\n if (this.ui.inputBox.placeholder !== (this.placeholder || '')) {\r\n this.ui.inputBox.placeholder = (this.placeholder || '');\r\n }\r\n if (inputShownJustForScreenReader) {\r\n this.ui.inputBox.ariaLabel = '';\r\n }\r\n else {\r\n const ariaLabel = this.ariaLabel || this.placeholder || QuickPick.DEFAULT_ARIA_LABEL;\r\n if (this.ui.inputBox.ariaLabel !== ariaLabel) {\r\n this.ui.inputBox.ariaLabel = ariaLabel;\r\n }\r\n }\r\n this.ui.list.matchOnDescription = this.matchOnDescription;\r\n this.ui.list.matchOnDetail = this.matchOnDetail;\r\n this.ui.list.matchOnLabel = this.matchOnLabel;\r\n this.ui.list.sortByLabel = this.sortByLabel;\r\n if (this.itemsUpdated) {\r\n this.itemsUpdated = false;\r\n this.ui.list.setElements(this.items);\r\n this.ui.list.filter(this.filterValue(this.ui.inputBox.value));\r\n this.ui.checkAll.checked = this.ui.list.getAllVisibleChecked();\r\n this.ui.visibleCount.setCount(this.ui.list.getVisibleCount());\r\n this.ui.count.setCount(this.ui.list.getCheckedCount());\r\n switch (this._itemActivation) {\r\n case ItemActivation.NONE:\r\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\r\n break;\r\n case ItemActivation.SECOND:\r\n this.ui.list.focus(QuickInputListFocus.Second);\r\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\r\n break;\r\n case ItemActivation.LAST:\r\n this.ui.list.focus(QuickInputListFocus.Last);\r\n this._itemActivation = ItemActivation.FIRST; // only valid once, then unset\r\n break;\r\n default:\r\n this.trySelectFirst();\r\n break;\r\n }\r\n }\r\n if (this.ui.container.classList.contains('show-checkboxes') !== !!this.canSelectMany) {\r\n if (this.canSelectMany) {\r\n this.ui.list.clearFocus();\r\n }\r\n else {\r\n this.trySelectFirst();\r\n }\r\n }\r\n if (this.activeItemsUpdated) {\r\n this.activeItemsUpdated = false;\r\n this.activeItemsToConfirm = this._activeItems;\r\n this.ui.list.setFocusedElements(this.activeItems);\r\n if (this.activeItemsToConfirm === this._activeItems) {\r\n this.activeItemsToConfirm = null;\r\n }\r\n }\r\n if (this.selectedItemsUpdated) {\r\n this.selectedItemsUpdated = false;\r\n this.selectedItemsToConfirm = this._selectedItems;\r\n if (this.canSelectMany) {\r\n this.ui.list.setCheckedElements(this.selectedItems);\r\n }\r\n else {\r\n this.ui.list.setSelectedElements(this.selectedItems);\r\n }\r\n if (this.selectedItemsToConfirm === this._selectedItems) {\r\n this.selectedItemsToConfirm = null;\r\n }\r\n }\r\n if (this.validationMessage) {\r\n this.ui.message.textContent = this.validationMessage;\r\n this.showMessageDecoration(Severity.Error);\r\n }\r\n else {\r\n this.ui.message.textContent = null;\r\n this.showMessageDecoration(Severity.Ignore);\r\n }\r\n this.ui.customButton.label = this.customLabel || '';\r\n this.ui.customButton.element.title = this.customHover || '';\r\n this.ui.setComboboxAccessibility(true);\r\n if (!visibilities.inputBox) {\r\n // we need to move focus into the tree to detect keybindings\r\n // properly when the input box is not visible (quick nav)\r\n this.ui.list.domFocus();\r\n }\r\n }\r\n}\r\nQuickPick.DEFAULT_ARIA_LABEL = localize('quickInputBox.ariaLabel', \"Type to narrow down results.\");\r\nexport class QuickInputController extends Disposable {\r\n constructor(options) {\r\n super();\r\n this.options = options;\r\n this.comboboxAccessibility = false;\r\n this.enabled = true;\r\n this.onDidAcceptEmitter = this._register(new Emitter());\r\n this.onDidCustomEmitter = this._register(new Emitter());\r\n this.onDidTriggerButtonEmitter = this._register(new Emitter());\r\n this.keyMods = { ctrlCmd: false, alt: false };\r\n this.controller = null;\r\n this.onShowEmitter = this._register(new Emitter());\r\n this.onShow = this.onShowEmitter.event;\r\n this.onHideEmitter = this._register(new Emitter());\r\n this.onHide = this.onHideEmitter.event;\r\n this.idPrefix = options.idPrefix;\r\n this.parentElement = options.container;\r\n this.styles = options.styles;\r\n this.registerKeyModsListeners();\r\n }\r\n registerKeyModsListeners() {\r\n const listener = (e) => {\r\n this.keyMods.ctrlCmd = e.ctrlKey || e.metaKey;\r\n this.keyMods.alt = e.altKey;\r\n };\r\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_DOWN, listener, true));\r\n this._register(dom.addDisposableListener(window, dom.EventType.KEY_UP, listener, true));\r\n this._register(dom.addDisposableListener(window, dom.EventType.MOUSE_DOWN, listener, true));\r\n }\r\n getUI() {\r\n if (this.ui) {\r\n return this.ui;\r\n }\r\n const container = dom.append(this.parentElement, $('.quick-input-widget.show-file-icons'));\r\n container.tabIndex = -1;\r\n container.style.display = 'none';\r\n const styleSheet = dom.createStyleSheet(container);\r\n const titleBar = dom.append(container, $('.quick-input-titlebar'));\r\n const leftActionBar = this._register(new ActionBar(titleBar));\r\n leftActionBar.domNode.classList.add('quick-input-left-action-bar');\r\n const title = dom.append(titleBar, $('.quick-input-title'));\r\n const rightActionBar = this._register(new ActionBar(titleBar));\r\n rightActionBar.domNode.classList.add('quick-input-right-action-bar');\r\n const description = dom.append(container, $('.quick-input-description'));\r\n const headerContainer = dom.append(container, $('.quick-input-header'));\r\n const checkAll = dom.append(headerContainer, $('input.quick-input-check-all'));\r\n checkAll.type = 'checkbox';\r\n this._register(dom.addStandardDisposableListener(checkAll, dom.EventType.CHANGE, e => {\r\n const checked = checkAll.checked;\r\n list.setAllVisibleChecked(checked);\r\n }));\r\n this._register(dom.addDisposableListener(checkAll, dom.EventType.CLICK, e => {\r\n if (e.x || e.y) { // Avoid 'click' triggered by 'space'...\r\n inputBox.setFocus();\r\n }\r\n }));\r\n const extraContainer = dom.append(headerContainer, $('.quick-input-and-message'));\r\n const filterContainer = dom.append(extraContainer, $('.quick-input-filter'));\r\n const inputBox = this._register(new QuickInputBox(filterContainer));\r\n inputBox.setAttribute('aria-describedby', `${this.idPrefix}message`);\r\n const visibleCountContainer = dom.append(filterContainer, $('.quick-input-visible-count'));\r\n visibleCountContainer.setAttribute('aria-live', 'polite');\r\n visibleCountContainer.setAttribute('aria-atomic', 'true');\r\n const visibleCount = new CountBadge(visibleCountContainer, { countFormat: localize({ key: 'quickInput.visibleCount', comment: ['This tells the user how many items are shown in a list of items to select from. The items can be anything. Currently not visible, but read by screen readers.'] }, \"{0} Results\") });\r\n const countContainer = dom.append(filterContainer, $('.quick-input-count'));\r\n countContainer.setAttribute('aria-live', 'polite');\r\n const count = new CountBadge(countContainer, { countFormat: localize({ key: 'quickInput.countSelected', comment: ['This tells the user how many items are selected in a list of items to select from. The items can be anything.'] }, \"{0} Selected\") });\r\n const okContainer = dom.append(headerContainer, $('.quick-input-action'));\r\n const ok = new Button(okContainer);\r\n ok.label = localize('ok', \"OK\");\r\n this._register(ok.onDidClick(e => {\r\n this.onDidAcceptEmitter.fire();\r\n }));\r\n const customButtonContainer = dom.append(headerContainer, $('.quick-input-action'));\r\n const customButton = new Button(customButtonContainer);\r\n customButton.label = localize('custom', \"Custom\");\r\n this._register(customButton.onDidClick(e => {\r\n this.onDidCustomEmitter.fire();\r\n }));\r\n const message = dom.append(extraContainer, $(`#${this.idPrefix}message.quick-input-message`));\r\n const progressBar = new ProgressBar(container);\r\n dom.addClass(progressBar.getContainer(), 'quick-input-progress');\r\n const list = this._register(new QuickInputList(container, this.idPrefix + 'list', this.options));\r\n this._register(list.onChangedAllVisibleChecked(checked => {\r\n checkAll.checked = checked;\r\n }));\r\n this._register(list.onChangedVisibleCount(c => {\r\n visibleCount.setCount(c);\r\n }));\r\n this._register(list.onChangedCheckedCount(c => {\r\n count.setCount(c);\r\n }));\r\n this._register(list.onLeave(() => {\r\n // Defer to avoid the input field reacting to the triggering key.\r\n setTimeout(() => {\r\n inputBox.setFocus();\r\n if (this.controller instanceof QuickPick && this.controller.canSelectMany) {\r\n list.clearFocus();\r\n }\r\n }, 0);\r\n }));\r\n this._register(list.onDidChangeFocus(() => {\r\n if (this.comboboxAccessibility) {\r\n this.getUI().inputBox.setAttribute('aria-activedescendant', this.getUI().list.getActiveDescendant() || '');\r\n }\r\n }));\r\n const focusTracker = dom.trackFocus(container);\r\n this._register(focusTracker);\r\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, e => {\r\n this.previousFocusElement = e.relatedTarget instanceof HTMLElement ? e.relatedTarget : undefined;\r\n }, true));\r\n this._register(focusTracker.onDidBlur(() => {\r\n if (!this.getUI().ignoreFocusOut && !this.options.ignoreFocusOut()) {\r\n this.hide();\r\n }\r\n this.previousFocusElement = undefined;\r\n }));\r\n this._register(dom.addDisposableListener(container, dom.EventType.FOCUS, (e) => {\r\n inputBox.setFocus();\r\n }));\r\n this._register(dom.addDisposableListener(container, dom.EventType.KEY_DOWN, (e) => {\r\n const event = new StandardKeyboardEvent(e);\r\n switch (event.keyCode) {\r\n case 3 /* Enter */:\r\n dom.EventHelper.stop(e, true);\r\n this.onDidAcceptEmitter.fire();\r\n break;\r\n case 9 /* Escape */:\r\n dom.EventHelper.stop(e, true);\r\n this.hide();\r\n break;\r\n case 2 /* Tab */:\r\n if (!event.altKey && !event.ctrlKey && !event.metaKey) {\r\n const selectors = ['.action-label.codicon'];\r\n if (container.classList.contains('show-checkboxes')) {\r\n selectors.push('input');\r\n }\r\n else {\r\n selectors.push('input[type=text]');\r\n }\r\n if (this.getUI().list.isDisplayed()) {\r\n selectors.push('.monaco-list');\r\n }\r\n const stops = container.querySelectorAll(selectors.join(', '));\r\n if (event.shiftKey && event.target === stops[0]) {\r\n dom.EventHelper.stop(e, true);\r\n stops[stops.length - 1].focus();\r\n }\r\n else if (!event.shiftKey && event.target === stops[stops.length - 1]) {\r\n dom.EventHelper.stop(e, true);\r\n stops[0].focus();\r\n }\r\n }\r\n break;\r\n }\r\n }));\r\n this.ui = {\r\n container,\r\n styleSheet,\r\n leftActionBar,\r\n titleBar,\r\n title,\r\n description,\r\n rightActionBar,\r\n checkAll,\r\n filterContainer,\r\n inputBox,\r\n visibleCountContainer,\r\n visibleCount,\r\n countContainer,\r\n count,\r\n okContainer,\r\n ok,\r\n message,\r\n customButtonContainer,\r\n customButton,\r\n progressBar,\r\n list,\r\n onDidAccept: this.onDidAcceptEmitter.event,\r\n onDidCustom: this.onDidCustomEmitter.event,\r\n onDidTriggerButton: this.onDidTriggerButtonEmitter.event,\r\n ignoreFocusOut: false,\r\n keyMods: this.keyMods,\r\n isScreenReaderOptimized: () => this.options.isScreenReaderOptimized(),\r\n show: controller => this.show(controller),\r\n hide: () => this.hide(),\r\n setVisibilities: visibilities => this.setVisibilities(visibilities),\r\n setComboboxAccessibility: enabled => this.setComboboxAccessibility(enabled),\r\n setEnabled: enabled => this.setEnabled(enabled),\r\n setContextKey: contextKey => this.options.setContextKey(contextKey),\r\n };\r\n this.updateStyles();\r\n return this.ui;\r\n }\r\n pick(picks, options = {}, token = CancellationToken.None) {\r\n return new Promise((doResolve, reject) => {\r\n let resolve = (result) => {\r\n resolve = doResolve;\r\n if (options.onKeyMods) {\r\n options.onKeyMods(input.keyMods);\r\n }\r\n doResolve(result);\r\n };\r\n if (token.isCancellationRequested) {\r\n resolve(undefined);\r\n return;\r\n }\r\n const input = this.createQuickPick();\r\n let activeItem;\r\n const disposables = [\r\n input,\r\n input.onDidAccept(() => {\r\n if (input.canSelectMany) {\r\n resolve(input.selectedItems.slice());\r\n input.hide();\r\n }\r\n else {\r\n const result = input.activeItems[0];\r\n if (result) {\r\n resolve(result);\r\n input.hide();\r\n }\r\n }\r\n }),\r\n input.onDidChangeActive(items => {\r\n const focused = items[0];\r\n if (focused && options.onDidFocus) {\r\n options.onDidFocus(focused);\r\n }\r\n }),\r\n input.onDidChangeSelection(items => {\r\n if (!input.canSelectMany) {\r\n const result = items[0];\r\n if (result) {\r\n resolve(result);\r\n input.hide();\r\n }\r\n }\r\n }),\r\n input.onDidTriggerItemButton(event => options.onDidTriggerItemButton && options.onDidTriggerItemButton(Object.assign(Object.assign({}, event), { removeItem: () => {\r\n const index = input.items.indexOf(event.item);\r\n if (index !== -1) {\r\n const items = input.items.slice();\r\n items.splice(index, 1);\r\n input.items = items;\r\n }\r\n } }))),\r\n input.onDidChangeValue(value => {\r\n if (activeItem && !value && (input.activeItems.length !== 1 || input.activeItems[0] !== activeItem)) {\r\n input.activeItems = [activeItem];\r\n }\r\n }),\r\n token.onCancellationRequested(() => {\r\n input.hide();\r\n }),\r\n input.onDidHide(() => {\r\n dispose(disposables);\r\n resolve(undefined);\r\n }),\r\n ];\r\n input.canSelectMany = !!options.canPickMany;\r\n input.placeholder = options.placeHolder;\r\n input.ignoreFocusOut = !!options.ignoreFocusLost;\r\n input.matchOnDescription = !!options.matchOnDescription;\r\n input.matchOnDetail = !!options.matchOnDetail;\r\n input.matchOnLabel = (options.matchOnLabel === undefined) || options.matchOnLabel; // default to true\r\n input.autoFocusOnList = (options.autoFocusOnList === undefined) || options.autoFocusOnList; // default to true\r\n input.quickNavigate = options.quickNavigate;\r\n input.contextKey = options.contextKey;\r\n input.busy = true;\r\n Promise.all([picks, options.activeItem])\r\n .then(([items, _activeItem]) => {\r\n activeItem = _activeItem;\r\n input.busy = false;\r\n input.items = items;\r\n if (input.canSelectMany) {\r\n input.selectedItems = items.filter(item => item.type !== 'separator' && item.picked);\r\n }\r\n if (activeItem) {\r\n input.activeItems = [activeItem];\r\n }\r\n });\r\n input.show();\r\n Promise.resolve(picks).then(undefined, err => {\r\n reject(err);\r\n input.hide();\r\n });\r\n });\r\n }\r\n createQuickPick() {\r\n const ui = this.getUI();\r\n return new QuickPick(ui);\r\n }\r\n show(controller) {\r\n const ui = this.getUI();\r\n this.onShowEmitter.fire();\r\n const oldController = this.controller;\r\n this.controller = controller;\r\n if (oldController) {\r\n oldController.didHide();\r\n }\r\n this.setEnabled(true);\r\n ui.leftActionBar.clear();\r\n ui.title.textContent = '';\r\n ui.description.textContent = '';\r\n ui.rightActionBar.clear();\r\n ui.checkAll.checked = false;\r\n // ui.inputBox.value = ''; Avoid triggering an event.\r\n ui.inputBox.placeholder = '';\r\n ui.inputBox.password = false;\r\n ui.inputBox.showDecoration(Severity.Ignore);\r\n ui.visibleCount.setCount(0);\r\n ui.count.setCount(0);\r\n ui.message.textContent = '';\r\n ui.progressBar.stop();\r\n ui.list.setElements([]);\r\n ui.list.matchOnDescription = false;\r\n ui.list.matchOnDetail = false;\r\n ui.list.matchOnLabel = true;\r\n ui.list.sortByLabel = true;\r\n ui.ignoreFocusOut = false;\r\n this.setComboboxAccessibility(false);\r\n ui.inputBox.ariaLabel = '';\r\n const backKeybindingLabel = this.options.backKeybindingLabel();\r\n backButton.tooltip = backKeybindingLabel ? localize('quickInput.backWithKeybinding', \"Back ({0})\", backKeybindingLabel) : localize('quickInput.back', \"Back\");\r\n ui.container.style.display = '';\r\n this.updateLayout();\r\n ui.inputBox.setFocus();\r\n }\r\n setVisibilities(visibilities) {\r\n const ui = this.getUI();\r\n ui.title.style.display = visibilities.title ? '' : 'none';\r\n ui.description.style.display = visibilities.description ? '' : 'none';\r\n ui.checkAll.style.display = visibilities.checkAll ? '' : 'none';\r\n ui.filterContainer.style.display = visibilities.inputBox ? '' : 'none';\r\n ui.visibleCountContainer.style.display = visibilities.visibleCount ? '' : 'none';\r\n ui.countContainer.style.display = visibilities.count ? '' : 'none';\r\n ui.okContainer.style.display = visibilities.ok ? '' : 'none';\r\n ui.customButtonContainer.style.display = visibilities.customButton ? '' : 'none';\r\n ui.message.style.display = visibilities.message ? '' : 'none';\r\n ui.progressBar.getContainer().style.display = visibilities.progressBar ? '' : 'none';\r\n ui.list.display(!!visibilities.list);\r\n ui.container.classList[visibilities.checkAll ? 'add' : 'remove']('show-checkboxes');\r\n this.updateLayout(); // TODO\r\n }\r\n setComboboxAccessibility(enabled) {\r\n if (enabled !== this.comboboxAccessibility) {\r\n const ui = this.getUI();\r\n this.comboboxAccessibility = enabled;\r\n if (this.comboboxAccessibility) {\r\n ui.inputBox.setAttribute('role', 'combobox');\r\n ui.inputBox.setAttribute('aria-haspopup', 'true');\r\n ui.inputBox.setAttribute('aria-autocomplete', 'list');\r\n ui.inputBox.setAttribute('aria-activedescendant', ui.list.getActiveDescendant() || '');\r\n }\r\n else {\r\n ui.inputBox.removeAttribute('role');\r\n ui.inputBox.removeAttribute('aria-haspopup');\r\n ui.inputBox.removeAttribute('aria-autocomplete');\r\n ui.inputBox.removeAttribute('aria-activedescendant');\r\n }\r\n }\r\n }\r\n setEnabled(enabled) {\r\n if (enabled !== this.enabled) {\r\n this.enabled = enabled;\r\n for (const item of this.getUI().leftActionBar.viewItems) {\r\n item.getAction().enabled = enabled;\r\n }\r\n for (const item of this.getUI().rightActionBar.viewItems) {\r\n item.getAction().enabled = enabled;\r\n }\r\n this.getUI().checkAll.disabled = !enabled;\r\n // this.getUI().inputBox.enabled = enabled; Avoid loosing focus.\r\n this.getUI().ok.enabled = enabled;\r\n this.getUI().list.enabled = enabled;\r\n }\r\n }\r\n hide() {\r\n var _a;\r\n const controller = this.controller;\r\n if (controller) {\r\n const focusChanged = !((_a = this.ui) === null || _a === void 0 ? void 0 : _a.container.contains(document.activeElement));\r\n this.controller = null;\r\n this.onHideEmitter.fire();\r\n this.getUI().container.style.display = 'none';\r\n if (!focusChanged) {\r\n if (this.previousFocusElement && this.previousFocusElement.offsetParent) {\r\n this.previousFocusElement.focus();\r\n this.previousFocusElement = undefined;\r\n }\r\n else {\r\n this.options.returnFocus();\r\n }\r\n }\r\n controller.didHide();\r\n }\r\n }\r\n layout(dimension, titleBarOffset) {\r\n this.dimension = dimension;\r\n this.titleBarOffset = titleBarOffset;\r\n this.updateLayout();\r\n }\r\n updateLayout() {\r\n if (this.ui) {\r\n this.ui.container.style.top = `${this.titleBarOffset}px`;\r\n const style = this.ui.container.style;\r\n const width = Math.min(this.dimension.width * 0.62 /* golden cut */, QuickInputController.MAX_WIDTH);\r\n style.width = width + 'px';\r\n style.marginLeft = '-' + (width / 2) + 'px';\r\n this.ui.inputBox.layout();\r\n this.ui.list.layout(this.dimension && this.dimension.height * 0.4);\r\n }\r\n }\r\n applyStyles(styles) {\r\n this.styles = styles;\r\n this.updateStyles();\r\n }\r\n updateStyles() {\r\n if (this.ui) {\r\n const { quickInputTitleBackground, quickInputBackground, quickInputForeground, contrastBorder, widgetShadow, } = this.styles.widget;\r\n this.ui.titleBar.style.backgroundColor = quickInputTitleBackground ? quickInputTitleBackground.toString() : '';\r\n this.ui.container.style.backgroundColor = quickInputBackground ? quickInputBackground.toString() : '';\r\n this.ui.container.style.color = quickInputForeground ? quickInputForeground.toString() : '';\r\n this.ui.container.style.border = contrastBorder ? `1px solid ${contrastBorder}` : '';\r\n this.ui.container.style.boxShadow = widgetShadow ? `0 5px 8px ${widgetShadow}` : '';\r\n this.ui.inputBox.style(this.styles.inputBox);\r\n this.ui.count.style(this.styles.countBadge);\r\n this.ui.ok.style(this.styles.button);\r\n this.ui.customButton.style(this.styles.button);\r\n this.ui.progressBar.style(this.styles.progressBar);\r\n this.ui.list.style(this.styles.list);\r\n const content = [];\r\n if (this.styles.list.listInactiveFocusForeground) {\r\n content.push(`.monaco-list .monaco-list-row.focused { color: ${this.styles.list.listInactiveFocusForeground}; }`);\r\n content.push(`.monaco-list .monaco-list-row.focused:hover { color: ${this.styles.list.listInactiveFocusForeground}; }`); // overwrite :hover style in this case!\r\n }\r\n if (this.styles.list.pickerGroupBorder) {\r\n content.push(`.quick-input-list .quick-input-list-entry { border-top-color: ${this.styles.list.pickerGroupBorder}; }`);\r\n }\r\n if (this.styles.list.pickerGroupForeground) {\r\n content.push(`.quick-input-list .quick-input-list-separator { color: ${this.styles.list.pickerGroupForeground}; }`);\r\n }\r\n const newStyles = content.join('\\n');\r\n if (newStyles !== this.ui.styleSheet.innerHTML) {\r\n this.ui.styleSheet.innerHTML = newStyles;\r\n }\r\n }\r\n }\r\n}\r\nQuickInputController.MAX_WIDTH = 600; // Max total width of quick input widget\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/quickInput.css';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { InputBox } from '../../../browser/ui/inputbox/inputBox.js';\r\nimport { Disposable } from '../../../common/lifecycle.js';\r\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\r\nimport Severity from '../../../common/severity.js';\r\nimport { StandardMouseEvent } from '../../../browser/mouseEvent.js';\r\nconst $ = dom.$;\r\nexport class QuickInputBox extends Disposable {\r\n constructor(parent) {\r\n super();\r\n this.parent = parent;\r\n this.onKeyDown = (handler) => {\r\n return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.KEY_DOWN, (e) => {\r\n handler(new StandardKeyboardEvent(e));\r\n });\r\n };\r\n this.onMouseDown = (handler) => {\r\n return dom.addDisposableListener(this.inputBox.inputElement, dom.EventType.MOUSE_DOWN, (e) => {\r\n handler(new StandardMouseEvent(e));\r\n });\r\n };\r\n this.onDidChange = (handler) => {\r\n return this.inputBox.onDidChange(handler);\r\n };\r\n this.container = dom.append(this.parent, $('.quick-input-box'));\r\n this.inputBox = this._register(new InputBox(this.container, undefined));\r\n }\r\n get value() {\r\n return this.inputBox.value;\r\n }\r\n set value(value) {\r\n this.inputBox.value = value;\r\n }\r\n select(range = null) {\r\n this.inputBox.select(range);\r\n }\r\n isSelectionAtEnd() {\r\n return this.inputBox.isSelectionAtEnd();\r\n }\r\n get placeholder() {\r\n return this.inputBox.inputElement.getAttribute('placeholder') || '';\r\n }\r\n set placeholder(placeholder) {\r\n this.inputBox.setPlaceHolder(placeholder);\r\n }\r\n get ariaLabel() {\r\n return this.inputBox.getAriaLabel();\r\n }\r\n set ariaLabel(ariaLabel) {\r\n this.inputBox.setAriaLabel(ariaLabel);\r\n }\r\n get password() {\r\n return this.inputBox.inputElement.type === 'password';\r\n }\r\n set password(password) {\r\n this.inputBox.inputElement.type = password ? 'password' : 'text';\r\n }\r\n setAttribute(name, value) {\r\n this.inputBox.inputElement.setAttribute(name, value);\r\n }\r\n removeAttribute(name) {\r\n this.inputBox.inputElement.removeAttribute(name);\r\n }\r\n showDecoration(decoration) {\r\n if (decoration === Severity.Ignore) {\r\n this.inputBox.hideMessage();\r\n }\r\n else {\r\n this.inputBox.showMessage({ type: decoration === Severity.Info ? 1 /* INFO */ : decoration === Severity.Warning ? 2 /* WARNING */ : 3 /* ERROR */, content: '' });\r\n }\r\n }\r\n stylesForType(decoration) {\r\n return this.inputBox.stylesForType(decoration === Severity.Info ? 1 /* INFO */ : decoration === Severity.Warning ? 2 /* WARNING */ : 3 /* ERROR */);\r\n }\r\n setFocus() {\r\n this.inputBox.focus();\r\n }\r\n layout() {\r\n this.inputBox.layout();\r\n }\r\n style(styles) {\r\n this.inputBox.style(styles);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport './media/quickInput.css';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { dispose } from '../../../common/lifecycle.js';\r\nimport { matchesFuzzyCodiconAware, parseCodicons } from '../../../common/codicon.js';\r\nimport { compareAnything } from '../../../common/comparers.js';\r\nimport { Emitter, Event } from '../../../common/event.js';\r\nimport { assign } from '../../../common/objects.js';\r\nimport { StandardKeyboardEvent } from '../../../browser/keyboardEvent.js';\r\nimport { IconLabel } from '../../../browser/ui/iconLabel/iconLabel.js';\r\nimport { HighlightedLabel } from '../../../browser/ui/highlightedlabel/highlightedLabel.js';\r\nimport { memoize } from '../../../common/decorators.js';\r\nimport { range } from '../../../common/arrays.js';\r\nimport * as platform from '../../../common/platform.js';\r\nimport { ActionBar } from '../../../browser/ui/actionbar/actionbar.js';\r\nimport { Action } from '../../../common/actions.js';\r\nimport { getIconClass } from './quickInputUtils.js';\r\nimport { withNullAsUndefined } from '../../../common/types.js';\r\nimport { KeybindingLabel } from '../../../browser/ui/keybindingLabel/keybindingLabel.js';\r\nimport { localize } from '../../../../nls.js';\r\nconst $ = dom.$;\r\nclass ListElement {\r\n constructor(init) {\r\n this.hidden = false;\r\n this._onChecked = new Emitter();\r\n this.onChecked = this._onChecked.event;\r\n assign(this, init);\r\n }\r\n get checked() {\r\n return !!this._checked;\r\n }\r\n set checked(value) {\r\n if (value !== this._checked) {\r\n this._checked = value;\r\n this._onChecked.fire(value);\r\n }\r\n }\r\n dispose() {\r\n this._onChecked.dispose();\r\n }\r\n}\r\nclass ListElementRenderer {\r\n get templateId() {\r\n return ListElementRenderer.ID;\r\n }\r\n renderTemplate(container) {\r\n const data = Object.create(null);\r\n data.toDisposeElement = [];\r\n data.toDisposeTemplate = [];\r\n data.entry = dom.append(container, $('.quick-input-list-entry'));\r\n // Checkbox\r\n const label = dom.append(data.entry, $('label.quick-input-list-label'));\r\n data.toDisposeTemplate.push(dom.addStandardDisposableListener(label, dom.EventType.CLICK, e => {\r\n if (!data.checkbox.offsetParent) { // If checkbox not visible:\r\n e.preventDefault(); // Prevent toggle of checkbox when it is immediately shown afterwards. #91740\r\n }\r\n }));\r\n data.checkbox = dom.append(label, $('input.quick-input-list-checkbox'));\r\n data.checkbox.type = 'checkbox';\r\n data.toDisposeTemplate.push(dom.addStandardDisposableListener(data.checkbox, dom.EventType.CHANGE, e => {\r\n data.element.checked = data.checkbox.checked;\r\n }));\r\n // Rows\r\n const rows = dom.append(label, $('.quick-input-list-rows'));\r\n const row1 = dom.append(rows, $('.quick-input-list-row'));\r\n const row2 = dom.append(rows, $('.quick-input-list-row'));\r\n // Label\r\n data.label = new IconLabel(row1, { supportHighlights: true, supportDescriptionHighlights: true, supportCodicons: true });\r\n // Keybinding\r\n const keybindingContainer = dom.append(row1, $('.quick-input-list-entry-keybinding'));\r\n data.keybinding = new KeybindingLabel(keybindingContainer, platform.OS);\r\n // Detail\r\n const detailContainer = dom.append(row2, $('.quick-input-list-label-meta'));\r\n data.detail = new HighlightedLabel(detailContainer, true);\r\n // Separator\r\n data.separator = dom.append(data.entry, $('.quick-input-list-separator'));\r\n // Actions\r\n data.actionBar = new ActionBar(data.entry);\r\n data.actionBar.domNode.classList.add('quick-input-list-entry-action-bar');\r\n data.toDisposeTemplate.push(data.actionBar);\r\n return data;\r\n }\r\n renderElement(element, index, data) {\r\n data.toDisposeElement = dispose(data.toDisposeElement);\r\n data.element = element;\r\n data.checkbox.checked = element.checked;\r\n data.toDisposeElement.push(element.onChecked(checked => data.checkbox.checked = checked));\r\n const { labelHighlights, descriptionHighlights, detailHighlights } = element;\r\n // Label\r\n const options = Object.create(null);\r\n options.matches = labelHighlights || [];\r\n options.descriptionTitle = element.saneDescription;\r\n options.descriptionMatches = descriptionHighlights || [];\r\n options.extraClasses = element.item.iconClasses;\r\n options.italic = element.item.italic;\r\n options.strikethrough = element.item.strikethrough;\r\n data.label.setLabel(element.saneLabel, element.saneDescription, options);\r\n // Keybinding\r\n data.keybinding.set(element.item.keybinding);\r\n // Meta\r\n data.detail.set(element.saneDetail, detailHighlights);\r\n // Separator\r\n if (element.separator && element.separator.label) {\r\n data.separator.textContent = element.separator.label;\r\n data.separator.style.display = '';\r\n }\r\n else {\r\n data.separator.style.display = 'none';\r\n }\r\n if (element.separator) {\r\n dom.addClass(data.entry, 'quick-input-list-separator-border');\r\n }\r\n else {\r\n dom.removeClass(data.entry, 'quick-input-list-separator-border');\r\n }\r\n // Actions\r\n data.actionBar.clear();\r\n const buttons = element.item.buttons;\r\n if (buttons && buttons.length) {\r\n data.actionBar.push(buttons.map((button, index) => {\r\n let cssClasses = button.iconClass || (button.iconPath ? getIconClass(button.iconPath) : undefined);\r\n if (button.alwaysVisible) {\r\n cssClasses = cssClasses ? `${cssClasses} always-visible` : 'always-visible';\r\n }\r\n const action = new Action(`id-${index}`, '', cssClasses, true, () => {\r\n element.fireButtonTriggered({\r\n button,\r\n item: element.item\r\n });\r\n return Promise.resolve();\r\n });\r\n action.tooltip = button.tooltip || '';\r\n return action;\r\n }), { icon: true, label: false });\r\n dom.addClass(data.entry, 'has-actions');\r\n }\r\n else {\r\n dom.removeClass(data.entry, 'has-actions');\r\n }\r\n }\r\n disposeElement(element, index, data) {\r\n data.toDisposeElement = dispose(data.toDisposeElement);\r\n }\r\n disposeTemplate(data) {\r\n data.toDisposeElement = dispose(data.toDisposeElement);\r\n data.toDisposeTemplate = dispose(data.toDisposeTemplate);\r\n }\r\n}\r\nListElementRenderer.ID = 'listelement';\r\nclass ListElementDelegate {\r\n getHeight(element) {\r\n return element.saneDetail ? 44 : 22;\r\n }\r\n getTemplateId(element) {\r\n return ListElementRenderer.ID;\r\n }\r\n}\r\nexport var QuickInputListFocus;\r\n(function (QuickInputListFocus) {\r\n QuickInputListFocus[QuickInputListFocus[\"First\"] = 1] = \"First\";\r\n QuickInputListFocus[QuickInputListFocus[\"Second\"] = 2] = \"Second\";\r\n QuickInputListFocus[QuickInputListFocus[\"Last\"] = 3] = \"Last\";\r\n QuickInputListFocus[QuickInputListFocus[\"Next\"] = 4] = \"Next\";\r\n QuickInputListFocus[QuickInputListFocus[\"Previous\"] = 5] = \"Previous\";\r\n QuickInputListFocus[QuickInputListFocus[\"NextPage\"] = 6] = \"NextPage\";\r\n QuickInputListFocus[QuickInputListFocus[\"PreviousPage\"] = 7] = \"PreviousPage\";\r\n})(QuickInputListFocus || (QuickInputListFocus = {}));\r\nexport class QuickInputList {\r\n constructor(parent, id, options) {\r\n this.parent = parent;\r\n this.inputElements = [];\r\n this.elements = [];\r\n this.elementsToIndexes = new Map();\r\n this.matchOnDescription = false;\r\n this.matchOnDetail = false;\r\n this.matchOnLabel = true;\r\n this.sortByLabel = true;\r\n this._onChangedAllVisibleChecked = new Emitter();\r\n this.onChangedAllVisibleChecked = this._onChangedAllVisibleChecked.event;\r\n this._onChangedCheckedCount = new Emitter();\r\n this.onChangedCheckedCount = this._onChangedCheckedCount.event;\r\n this._onChangedVisibleCount = new Emitter();\r\n this.onChangedVisibleCount = this._onChangedVisibleCount.event;\r\n this._onChangedCheckedElements = new Emitter();\r\n this.onChangedCheckedElements = this._onChangedCheckedElements.event;\r\n this._onButtonTriggered = new Emitter();\r\n this.onButtonTriggered = this._onButtonTriggered.event;\r\n this._onKeyDown = new Emitter();\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onLeave = new Emitter();\r\n this.onLeave = this._onLeave.event;\r\n this._fireCheckedEvents = true;\r\n this.elementDisposables = [];\r\n this.disposables = [];\r\n this.id = id;\r\n this.container = dom.append(this.parent, $('.quick-input-list'));\r\n const delegate = new ListElementDelegate();\r\n const accessibilityProvider = new QuickInputAccessibilityProvider();\r\n this.list = options.createList('QuickInput', this.container, delegate, [new ListElementRenderer()], {\r\n identityProvider: { getId: element => element.saneLabel },\r\n setRowLineHeight: false,\r\n multipleSelectionSupport: false,\r\n horizontalScrolling: false,\r\n accessibilityProvider\r\n });\r\n this.list.getHTMLElement().id = id;\r\n this.disposables.push(this.list);\r\n this.disposables.push(this.list.onKeyDown(e => {\r\n const event = new StandardKeyboardEvent(e);\r\n switch (event.keyCode) {\r\n case 10 /* Space */:\r\n this.toggleCheckbox();\r\n break;\r\n case 31 /* KEY_A */:\r\n if (platform.isMacintosh ? e.metaKey : e.ctrlKey) {\r\n this.list.setFocus(range(this.list.length));\r\n }\r\n break;\r\n case 16 /* UpArrow */:\r\n const focus1 = this.list.getFocus();\r\n if (focus1.length === 1 && focus1[0] === 0) {\r\n this._onLeave.fire();\r\n }\r\n break;\r\n case 18 /* DownArrow */:\r\n const focus2 = this.list.getFocus();\r\n if (focus2.length === 1 && focus2[0] === this.list.length - 1) {\r\n this._onLeave.fire();\r\n }\r\n break;\r\n }\r\n this._onKeyDown.fire(event);\r\n }));\r\n this.disposables.push(this.list.onMouseDown(e => {\r\n if (e.browserEvent.button !== 2) {\r\n // Works around / fixes #64350.\r\n e.browserEvent.preventDefault();\r\n }\r\n }));\r\n this.disposables.push(dom.addDisposableListener(this.container, dom.EventType.CLICK, e => {\r\n if (e.x || e.y) { // Avoid 'click' triggered by 'space' on checkbox.\r\n this._onLeave.fire();\r\n }\r\n }));\r\n this.disposables.push(this.list.onMouseMiddleClick(e => {\r\n this._onLeave.fire();\r\n }));\r\n this.disposables.push(this.list.onContextMenu(e => {\r\n if (typeof e.index === 'number') {\r\n e.browserEvent.preventDefault();\r\n // we want to treat a context menu event as\r\n // a gesture to open the item at the index\r\n // since we do not have any context menu\r\n // this enables for example macOS to Ctrl-\r\n // click on an item to open it.\r\n this.list.setSelection([e.index]);\r\n }\r\n }));\r\n this.disposables.push(this._onChangedAllVisibleChecked, this._onChangedCheckedCount, this._onChangedVisibleCount, this._onChangedCheckedElements, this._onButtonTriggered, this._onLeave, this._onKeyDown);\r\n }\r\n get onDidChangeFocus() {\r\n return Event.map(this.list.onDidChangeFocus, e => e.elements.map(e => e.item));\r\n }\r\n get onDidChangeSelection() {\r\n return Event.map(this.list.onDidChangeSelection, e => ({ items: e.elements.map(e => e.item), event: e.browserEvent }));\r\n }\r\n getAllVisibleChecked() {\r\n return this.allVisibleChecked(this.elements, false);\r\n }\r\n allVisibleChecked(elements, whenNoneVisible = true) {\r\n for (let i = 0, n = elements.length; i < n; i++) {\r\n const element = elements[i];\r\n if (!element.hidden) {\r\n if (!element.checked) {\r\n return false;\r\n }\r\n else {\r\n whenNoneVisible = true;\r\n }\r\n }\r\n }\r\n return whenNoneVisible;\r\n }\r\n getCheckedCount() {\r\n let count = 0;\r\n const elements = this.elements;\r\n for (let i = 0, n = elements.length; i < n; i++) {\r\n if (elements[i].checked) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n getVisibleCount() {\r\n let count = 0;\r\n const elements = this.elements;\r\n for (let i = 0, n = elements.length; i < n; i++) {\r\n if (!elements[i].hidden) {\r\n count++;\r\n }\r\n }\r\n return count;\r\n }\r\n setAllVisibleChecked(checked) {\r\n try {\r\n this._fireCheckedEvents = false;\r\n this.elements.forEach(element => {\r\n if (!element.hidden) {\r\n element.checked = checked;\r\n }\r\n });\r\n }\r\n finally {\r\n this._fireCheckedEvents = true;\r\n this.fireCheckedEvents();\r\n }\r\n }\r\n setElements(inputElements) {\r\n this.elementDisposables = dispose(this.elementDisposables);\r\n const fireButtonTriggered = (event) => this.fireButtonTriggered(event);\r\n this.inputElements = inputElements;\r\n this.elements = inputElements.reduce((result, item, index) => {\r\n var _a, _b, _c;\r\n if (item.type !== 'separator') {\r\n const previous = index && inputElements[index - 1];\r\n const saneLabel = item.label && item.label.replace(/\\r?\\n/g, ' ');\r\n const saneDescription = item.description && item.description.replace(/\\r?\\n/g, ' ');\r\n const saneDetail = item.detail && item.detail.replace(/\\r?\\n/g, ' ');\r\n const saneAriaLabel = item.ariaLabel || [saneLabel, saneDescription, saneDetail]\r\n .map(s => s && parseCodicons(s).text)\r\n .filter(s => !!s)\r\n .join(', ');\r\n result.push(new ListElement({\r\n index,\r\n item,\r\n saneLabel,\r\n saneAriaLabel,\r\n saneDescription,\r\n saneDetail,\r\n labelHighlights: (_a = item.highlights) === null || _a === void 0 ? void 0 : _a.label,\r\n descriptionHighlights: (_b = item.highlights) === null || _b === void 0 ? void 0 : _b.description,\r\n detailHighlights: (_c = item.highlights) === null || _c === void 0 ? void 0 : _c.detail,\r\n checked: false,\r\n separator: previous && previous.type === 'separator' ? previous : undefined,\r\n fireButtonTriggered\r\n }));\r\n }\r\n return result;\r\n }, []);\r\n this.elementDisposables.push(...this.elements);\r\n this.elementDisposables.push(...this.elements.map(element => element.onChecked(() => this.fireCheckedEvents())));\r\n this.elementsToIndexes = this.elements.reduce((map, element, index) => {\r\n map.set(element.item, index);\r\n return map;\r\n }, new Map());\r\n this.list.splice(0, this.list.length); // Clear focus and selection first, sending the events when the list is empty.\r\n this.list.splice(0, this.list.length, this.elements);\r\n this._onChangedVisibleCount.fire(this.elements.length);\r\n }\r\n getFocusedElements() {\r\n return this.list.getFocusedElements()\r\n .map(e => e.item);\r\n }\r\n setFocusedElements(items) {\r\n this.list.setFocus(items\r\n .filter(item => this.elementsToIndexes.has(item))\r\n .map(item => this.elementsToIndexes.get(item)));\r\n if (items.length > 0) {\r\n const focused = this.list.getFocus()[0];\r\n if (typeof focused === 'number') {\r\n this.list.reveal(focused);\r\n }\r\n }\r\n }\r\n getActiveDescendant() {\r\n return this.list.getHTMLElement().getAttribute('aria-activedescendant');\r\n }\r\n setSelectedElements(items) {\r\n this.list.setSelection(items\r\n .filter(item => this.elementsToIndexes.has(item))\r\n .map(item => this.elementsToIndexes.get(item)));\r\n }\r\n getCheckedElements() {\r\n return this.elements.filter(e => e.checked)\r\n .map(e => e.item);\r\n }\r\n setCheckedElements(items) {\r\n try {\r\n this._fireCheckedEvents = false;\r\n const checked = new Set();\r\n for (const item of items) {\r\n checked.add(item);\r\n }\r\n for (const element of this.elements) {\r\n element.checked = checked.has(element.item);\r\n }\r\n }\r\n finally {\r\n this._fireCheckedEvents = true;\r\n this.fireCheckedEvents();\r\n }\r\n }\r\n set enabled(value) {\r\n this.list.getHTMLElement().style.pointerEvents = value ? '' : 'none';\r\n }\r\n focus(what) {\r\n if (!this.list.length) {\r\n return;\r\n }\r\n if (what === QuickInputListFocus.Next && this.list.getFocus()[0] === this.list.length - 1) {\r\n what = QuickInputListFocus.First;\r\n }\r\n if (what === QuickInputListFocus.Previous && this.list.getFocus()[0] === 0) {\r\n what = QuickInputListFocus.Last;\r\n }\r\n if (what === QuickInputListFocus.Second && this.list.length < 2) {\r\n what = QuickInputListFocus.First;\r\n }\r\n switch (what) {\r\n case QuickInputListFocus.First:\r\n this.list.focusFirst();\r\n break;\r\n case QuickInputListFocus.Second:\r\n this.list.focusNth(1);\r\n break;\r\n case QuickInputListFocus.Last:\r\n this.list.focusLast();\r\n break;\r\n case QuickInputListFocus.Next:\r\n this.list.focusNext();\r\n break;\r\n case QuickInputListFocus.Previous:\r\n this.list.focusPrevious();\r\n break;\r\n case QuickInputListFocus.NextPage:\r\n this.list.focusNextPage();\r\n break;\r\n case QuickInputListFocus.PreviousPage:\r\n this.list.focusPreviousPage();\r\n break;\r\n }\r\n const focused = this.list.getFocus()[0];\r\n if (typeof focused === 'number') {\r\n this.list.reveal(focused);\r\n }\r\n }\r\n clearFocus() {\r\n this.list.setFocus([]);\r\n }\r\n domFocus() {\r\n this.list.domFocus();\r\n }\r\n layout(maxHeight) {\r\n this.list.getHTMLElement().style.maxHeight = maxHeight ? `calc(${Math.floor(maxHeight / 44) * 44}px)` : '';\r\n this.list.layout();\r\n }\r\n filter(query) {\r\n if (!(this.sortByLabel || this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\r\n this.list.layout();\r\n return false;\r\n }\r\n query = query.trim();\r\n // Reset filtering\r\n if (!query || !(this.matchOnLabel || this.matchOnDescription || this.matchOnDetail)) {\r\n this.elements.forEach(element => {\r\n element.labelHighlights = undefined;\r\n element.descriptionHighlights = undefined;\r\n element.detailHighlights = undefined;\r\n element.hidden = false;\r\n const previous = element.index && this.inputElements[element.index - 1];\r\n element.separator = previous && previous.type === 'separator' ? previous : undefined;\r\n });\r\n }\r\n // Filter by value (since we support codicons, use codicon aware fuzzy matching)\r\n else {\r\n this.elements.forEach(element => {\r\n const labelHighlights = this.matchOnLabel ? withNullAsUndefined(matchesFuzzyCodiconAware(query, parseCodicons(element.saneLabel))) : undefined;\r\n const descriptionHighlights = this.matchOnDescription ? withNullAsUndefined(matchesFuzzyCodiconAware(query, parseCodicons(element.saneDescription || ''))) : undefined;\r\n const detailHighlights = this.matchOnDetail ? withNullAsUndefined(matchesFuzzyCodiconAware(query, parseCodicons(element.saneDetail || ''))) : undefined;\r\n if (labelHighlights || descriptionHighlights || detailHighlights) {\r\n element.labelHighlights = labelHighlights;\r\n element.descriptionHighlights = descriptionHighlights;\r\n element.detailHighlights = detailHighlights;\r\n element.hidden = false;\r\n }\r\n else {\r\n element.labelHighlights = undefined;\r\n element.descriptionHighlights = undefined;\r\n element.detailHighlights = undefined;\r\n element.hidden = !element.item.alwaysShow;\r\n }\r\n element.separator = undefined;\r\n });\r\n }\r\n const shownElements = this.elements.filter(element => !element.hidden);\r\n // Sort by value\r\n if (this.sortByLabel && query) {\r\n const normalizedSearchValue = query.toLowerCase();\r\n shownElements.sort((a, b) => {\r\n return compareEntries(a, b, normalizedSearchValue);\r\n });\r\n }\r\n this.elementsToIndexes = shownElements.reduce((map, element, index) => {\r\n map.set(element.item, index);\r\n return map;\r\n }, new Map());\r\n this.list.splice(0, this.list.length, shownElements);\r\n this.list.setFocus([]);\r\n this.list.layout();\r\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\r\n this._onChangedVisibleCount.fire(shownElements.length);\r\n return true;\r\n }\r\n toggleCheckbox() {\r\n try {\r\n this._fireCheckedEvents = false;\r\n const elements = this.list.getFocusedElements();\r\n const allChecked = this.allVisibleChecked(elements);\r\n for (const element of elements) {\r\n element.checked = !allChecked;\r\n }\r\n }\r\n finally {\r\n this._fireCheckedEvents = true;\r\n this.fireCheckedEvents();\r\n }\r\n }\r\n display(display) {\r\n this.container.style.display = display ? '' : 'none';\r\n }\r\n isDisplayed() {\r\n return this.container.style.display !== 'none';\r\n }\r\n dispose() {\r\n this.elementDisposables = dispose(this.elementDisposables);\r\n this.disposables = dispose(this.disposables);\r\n }\r\n fireCheckedEvents() {\r\n if (this._fireCheckedEvents) {\r\n this._onChangedAllVisibleChecked.fire(this.getAllVisibleChecked());\r\n this._onChangedCheckedCount.fire(this.getCheckedCount());\r\n this._onChangedCheckedElements.fire(this.getCheckedElements());\r\n }\r\n }\r\n fireButtonTriggered(event) {\r\n this._onButtonTriggered.fire(event);\r\n }\r\n style(styles) {\r\n this.list.style(styles);\r\n }\r\n}\r\n__decorate([\r\n memoize\r\n], QuickInputList.prototype, \"onDidChangeFocus\", null);\r\n__decorate([\r\n memoize\r\n], QuickInputList.prototype, \"onDidChangeSelection\", null);\r\nfunction compareEntries(elementA, elementB, lookFor) {\r\n const labelHighlightsA = elementA.labelHighlights || [];\r\n const labelHighlightsB = elementB.labelHighlights || [];\r\n if (labelHighlightsA.length && !labelHighlightsB.length) {\r\n return -1;\r\n }\r\n if (!labelHighlightsA.length && labelHighlightsB.length) {\r\n return 1;\r\n }\r\n if (labelHighlightsA.length === 0 && labelHighlightsB.length === 0) {\r\n return 0;\r\n }\r\n return compareAnything(elementA.saneLabel, elementB.saneLabel, lookFor);\r\n}\r\nclass QuickInputAccessibilityProvider {\r\n getWidgetAriaLabel() {\r\n return localize('quickInput', \"Quick Input\");\r\n }\r\n getAriaLabel(element) {\r\n return element.saneAriaLabel;\r\n }\r\n getWidgetRole() {\r\n return 'listbox';\r\n }\r\n getRole() {\r\n return 'option';\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/quickInput.css';\r\nimport * as dom from '../../../browser/dom.js';\r\nimport { IdGenerator } from '../../../common/idGenerator.js';\r\nconst iconPathToClass = {};\r\nconst iconClassGenerator = new IdGenerator('quick-input-button-icon-');\r\nexport function getIconClass(iconPath) {\r\n if (!iconPath) {\r\n return undefined;\r\n }\r\n let iconClass;\r\n const key = iconPath.dark.toString();\r\n if (iconPathToClass[key]) {\r\n iconClass = iconPathToClass[key];\r\n }\r\n else {\r\n iconClass = iconClassGenerator.nextId();\r\n dom.createCSSRule(`.${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.light || iconPath.dark)}`);\r\n dom.createCSSRule(`.vs-dark .${iconClass}, .hc-black .${iconClass}`, `background-image: ${dom.asCSSUrl(iconPath.dark)}`);\r\n iconPathToClass[key] = iconClass;\r\n }\r\n return iconClass;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const NO_KEY_MODS = { ctrlCmd: false, alt: false };\r\nexport var ItemActivation;\r\n(function (ItemActivation) {\r\n ItemActivation[ItemActivation[\"NONE\"] = 0] = \"NONE\";\r\n ItemActivation[ItemActivation[\"FIRST\"] = 1] = \"FIRST\";\r\n ItemActivation[ItemActivation[\"SECOND\"] = 2] = \"SECOND\";\r\n ItemActivation[ItemActivation[\"LAST\"] = 3] = \"LAST\";\r\n})(ItemActivation || (ItemActivation = {}));\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { globals } from '../common/platform.js';\r\nimport { logOnceWebWorkerWarning } from '../common/worker/simpleWorker.js';\r\nfunction getWorker(workerId, label) {\r\n // Option for hosts to overwrite the worker script (used in the standalone editor)\r\n if (globals.MonacoEnvironment) {\r\n if (typeof globals.MonacoEnvironment.getWorker === 'function') {\r\n return globals.MonacoEnvironment.getWorker(workerId, label);\r\n }\r\n if (typeof globals.MonacoEnvironment.getWorkerUrl === 'function') {\r\n return new Worker(globals.MonacoEnvironment.getWorkerUrl(workerId, label));\r\n }\r\n }\r\n // ESM-comment-begin\r\n // \tif (typeof require === 'function') {\r\n // \t\t// check if the JS lives on a different origin\r\n // \t\tconst workerMain = require.toUrl('./' + workerId);\r\n // \t\tconst workerUrl = getWorkerBootstrapUrl(workerMain, label);\r\n // \t\treturn new Worker(workerUrl, { name: label });\r\n // \t}\r\n // ESM-comment-end\r\n throw new Error(`You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker`);\r\n}\r\n// ESM-comment-begin\r\n// export function getWorkerBootstrapUrl(scriptPath: string, label: string, forceDataUri: boolean = false): string {\r\n// \tif (forceDataUri || /^((http:)|(https:)|(file:))/.test(scriptPath)) {\r\n// \t\tconst currentUrl = String(window.location);\r\n// \t\tconst currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length);\r\n// \t\tif (forceDataUri || scriptPath.substring(0, currentOrigin.length) !== currentOrigin) {\r\n// \t\t\t// this is the cross-origin case\r\n// \t\t\t// i.e. the webpage is running at a different origin than where the scripts are loaded from\r\n// \t\t\tconst myPath = 'vs/base/worker/defaultWorkerFactory.js';\r\n// \t\t\tconst workerBaseUrl = require.toUrl(myPath).slice(0, -myPath.length);\r\n// \t\t\tconst js = `/*${label}*/self.MonacoEnvironment={baseUrl: '${workerBaseUrl}'};importScripts('${scriptPath}');/*${label}*/`;\r\n// \t\t\tif (forceDataUri) {\r\n// \t\t\t\tconst url = `data:text/javascript;charset=utf-8,${encodeURIComponent(js)}`;\r\n// \t\t\t\treturn url;\r\n// \t\t\t}\r\n// \t\t\tconst blob = new Blob([js], { type: 'application/javascript' });\r\n// \t\t\treturn URL.createObjectURL(blob);\r\n// \t\t}\r\n// \t}\r\n// \treturn scriptPath + '#' + label;\r\n// }\r\n// ESM-comment-end\r\nfunction isPromiseLike(obj) {\r\n if (typeof obj.then === 'function') {\r\n return true;\r\n }\r\n return false;\r\n}\r\n/**\r\n * A worker that uses HTML5 web workers so that is has\r\n * its own global scope and its own thread.\r\n */\r\nclass WebWorker {\r\n constructor(moduleId, id, label, onMessageCallback, onErrorCallback) {\r\n this.id = id;\r\n const workerOrPromise = getWorker('workerMain.js', label);\r\n if (isPromiseLike(workerOrPromise)) {\r\n this.worker = workerOrPromise;\r\n }\r\n else {\r\n this.worker = Promise.resolve(workerOrPromise);\r\n }\r\n this.postMessage(moduleId, []);\r\n this.worker.then((w) => {\r\n w.onmessage = function (ev) {\r\n onMessageCallback(ev.data);\r\n };\r\n w.onmessageerror = onErrorCallback;\r\n if (typeof w.addEventListener === 'function') {\r\n w.addEventListener('error', onErrorCallback);\r\n }\r\n });\r\n }\r\n getId() {\r\n return this.id;\r\n }\r\n postMessage(message, transfer) {\r\n if (this.worker) {\r\n this.worker.then(w => w.postMessage(message, transfer));\r\n }\r\n }\r\n dispose() {\r\n if (this.worker) {\r\n this.worker.then(w => w.terminate());\r\n }\r\n this.worker = null;\r\n }\r\n}\r\nexport class DefaultWorkerFactory {\r\n constructor(label) {\r\n this._label = label;\r\n this._webWorkerFailedBeforeError = false;\r\n }\r\n create(moduleId, onMessageCallback, onErrorCallback) {\r\n let workerId = (++DefaultWorkerFactory.LAST_WORKER_ID);\r\n if (this._webWorkerFailedBeforeError) {\r\n throw this._webWorkerFailedBeforeError;\r\n }\r\n return new WebWorker(moduleId, workerId, this._label || 'anonymous' + workerId, onMessageCallback, (err) => {\r\n logOnceWebWorkerWarning(err);\r\n this._webWorkerFailedBeforeError = err;\r\n onErrorCallback(err);\r\n });\r\n }\r\n}\r\nDefaultWorkerFactory.LAST_WORKER_ID = 0;\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { languages } from './fillers/monaco-editor-core.js';\nvar languageDefinitions = {};\nvar lazyLanguageLoaders = {};\nvar LazyLanguageLoader = /** @class */ (function () {\n function LazyLanguageLoader(languageId) {\n var _this = this;\n this._languageId = languageId;\n this._loadingTriggered = false;\n this._lazyLoadPromise = new Promise(function (resolve, reject) {\n _this._lazyLoadPromiseResolve = resolve;\n _this._lazyLoadPromiseReject = reject;\n });\n }\n LazyLanguageLoader.getOrCreate = function (languageId) {\n if (!lazyLanguageLoaders[languageId]) {\n lazyLanguageLoaders[languageId] = new LazyLanguageLoader(languageId);\n }\n return lazyLanguageLoaders[languageId];\n };\n LazyLanguageLoader.prototype.whenLoaded = function () {\n return this._lazyLoadPromise;\n };\n LazyLanguageLoader.prototype.load = function () {\n var _this = this;\n if (!this._loadingTriggered) {\n this._loadingTriggered = true;\n languageDefinitions[this._languageId].loader().then(function (mod) { return _this._lazyLoadPromiseResolve(mod); }, function (err) { return _this._lazyLoadPromiseReject(err); });\n }\n return this._lazyLoadPromise;\n };\n return LazyLanguageLoader;\n}());\nexport function loadLanguage(languageId) {\n return LazyLanguageLoader.getOrCreate(languageId).load();\n}\nexport function registerLanguage(def) {\n var languageId = def.id;\n languageDefinitions[languageId] = def;\n languages.register(def);\n var lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);\n languages.setMonarchTokensProvider(languageId, lazyLanguageLoader.whenLoaded().then(function (mod) { return mod.language; }));\n languages.onLanguage(languageId, function () {\n lazyLanguageLoader.load().then(function (mod) {\n languages.setLanguageConfiguration(languageId, mod.conf);\n });\n });\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'abap',\n extensions: ['.abap'],\n aliases: ['abap', 'ABAP'],\n loader: function () { return import('./abap.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'apex',\n extensions: ['.cls'],\n aliases: ['Apex', 'apex'],\n mimetypes: ['text/x-apex-source', 'text/x-apex'],\n loader: function () { return import('./apex.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'azcli',\n extensions: ['.azcli'],\n aliases: ['Azure CLI', 'azcli'],\n loader: function () { return import('./azcli.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'bat',\n extensions: ['.bat', '.cmd'],\n aliases: ['Batch', 'bat'],\n loader: function () { return import('./bat.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'cameligo',\n extensions: ['.mligo'],\n aliases: ['Cameligo'],\n loader: function () { return import('./cameligo.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'clojure',\n extensions: ['.clj', '.cljs', '.cljc', '.edn'],\n aliases: ['clojure', 'Clojure'],\n loader: function () { return import('./clojure.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'coffeescript',\n extensions: ['.coffee'],\n aliases: ['CoffeeScript', 'coffeescript', 'coffee'],\n mimetypes: ['text/x-coffeescript', 'text/coffeescript'],\n loader: function () { return import('./coffee.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'c',\n extensions: ['.c', '.h'],\n aliases: ['C', 'c'],\n loader: function () { return import('./cpp.js'); }\n});\nregisterLanguage({\n id: 'cpp',\n extensions: ['.cpp', '.cc', '.cxx', '.hpp', '.hh', '.hxx'],\n aliases: ['C++', 'Cpp', 'cpp'],\n loader: function () { return import('./cpp.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'csharp',\n extensions: ['.cs', '.csx', '.cake'],\n aliases: ['C#', 'csharp'],\n loader: function () { return import('./csharp.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'csp',\n extensions: [],\n aliases: ['CSP', 'csp'],\n loader: function () { return import('./csp.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'css',\n extensions: ['.css'],\n aliases: ['CSS', 'css'],\n mimetypes: ['text/css'],\n loader: function () { return import('./css.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'dart',\n extensions: ['.dart'],\n aliases: ['Dart', 'dart'],\n mimetypes: ['text/x-dart-source', 'text/x-dart'],\n loader: function () { return import('./dart.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'dockerfile',\n extensions: ['.dockerfile'],\n filenames: ['Dockerfile'],\n aliases: ['Dockerfile'],\n loader: function () { return import('./dockerfile.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport * from '../../editor/editor.api.js';\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'fsharp',\n extensions: ['.fs', '.fsi', '.ml', '.mli', '.fsx', '.fsscript'],\n aliases: ['F#', 'FSharp', 'fsharp'],\n loader: function () { return import('./fsharp.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'go',\n extensions: ['.go'],\n aliases: ['Go'],\n loader: function () { return import('./go.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'graphql',\n extensions: ['.graphql', '.gql'],\n aliases: ['GraphQL', 'graphql', 'gql'],\n mimetypes: ['application/graphql'],\n loader: function () { return import('./graphql.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'handlebars',\n extensions: ['.handlebars', '.hbs'],\n aliases: ['Handlebars', 'handlebars'],\n mimetypes: ['text/x-handlebars-template'],\n loader: function () { return import('./handlebars.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'hcl',\n extensions: ['.tf', '.tfvars', '.hcl'],\n aliases: ['Terraform', 'tf', 'HCL', 'hcl'],\n loader: function () { return import('./hcl.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'html',\n extensions: ['.html', '.htm', '.shtml', '.xhtml', '.mdoc', '.jsp', '.asp', '.aspx', '.jshtm'],\n aliases: ['HTML', 'htm', 'html', 'xhtml'],\n mimetypes: ['text/html', 'text/x-jshtm', 'text/template', 'text/ng-template'],\n loader: function () { return import('./html.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'ini',\n extensions: ['.ini', '.properties', '.gitconfig'],\n filenames: ['config', '.gitattributes', '.gitconfig', '.editorconfig'],\n aliases: ['Ini', 'ini'],\n loader: function () { return import('./ini.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'java',\n extensions: ['.java', '.jav'],\n aliases: ['Java', 'java'],\n mimetypes: ['text/x-java-source', 'text/x-java'],\n loader: function () { return import('./java.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'javascript',\n extensions: ['.js', '.es6', '.jsx', '.mjs'],\n firstLine: '^#!.*\\\\bnode',\n filenames: ['jakefile'],\n aliases: ['JavaScript', 'javascript', 'js'],\n mimetypes: ['text/javascript'],\n loader: function () { return import('./javascript.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'julia',\n extensions: ['.jl'],\n aliases: ['julia', 'Julia'],\n loader: function () { return import('./julia.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'kotlin',\n extensions: ['.kt'],\n aliases: ['Kotlin', 'kotlin'],\n mimetypes: ['text/x-kotlin-source', 'text/x-kotlin'],\n loader: function () { return import('./kotlin.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'less',\n extensions: ['.less'],\n aliases: ['Less', 'less'],\n mimetypes: ['text/x-less', 'text/less'],\n loader: function () { return import('./less.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'lexon',\n extensions: ['.lex'],\n aliases: ['Lexon'],\n loader: function () { return import('./lexon.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'lua',\n extensions: ['.lua'],\n aliases: ['Lua', 'lua'],\n loader: function () { return import('./lua.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'markdown',\n extensions: ['.md', '.markdown', '.mdown', '.mkdn', '.mkd', '.mdwn', '.mdtxt', '.mdtext'],\n aliases: ['Markdown', 'markdown'],\n loader: function () { return import('./markdown.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'mips',\n extensions: ['.s'],\n aliases: ['MIPS', 'MIPS-V'],\n mimetypes: ['text/x-mips', 'text/mips', 'text/plaintext'],\n loader: function () { return import('./mips.js'); }\n});\n","import '../editor/editor.api.js';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport './abap/abap.contribution.js';\nimport './apex/apex.contribution.js';\nimport './azcli/azcli.contribution.js';\nimport './bat/bat.contribution.js';\nimport './cameligo/cameligo.contribution.js';\nimport './clojure/clojure.contribution.js';\nimport './coffee/coffee.contribution.js';\nimport './cpp/cpp.contribution.js';\nimport './csharp/csharp.contribution.js';\nimport './csp/csp.contribution.js';\nimport './css/css.contribution.js';\nimport './dart/dart.contribution.js';\nimport './dockerfile/dockerfile.contribution.js';\nimport './fsharp/fsharp.contribution.js';\nimport './go/go.contribution.js';\nimport './graphql/graphql.contribution.js';\nimport './handlebars/handlebars.contribution.js';\nimport './hcl/hcl.contribution.js';\nimport './html/html.contribution.js';\nimport './ini/ini.contribution.js';\nimport './java/java.contribution.js';\nimport './javascript/javascript.contribution.js';\nimport './julia/julia.contribution.js';\nimport './kotlin/kotlin.contribution.js';\nimport './less/less.contribution.js';\nimport './lexon/lexon.contribution.js';\nimport './lua/lua.contribution.js';\nimport './markdown/markdown.contribution.js';\nimport './mips/mips.contribution.js';\nimport './msdax/msdax.contribution.js';\nimport './mysql/mysql.contribution.js';\nimport './objective-c/objective-c.contribution.js';\nimport './pascal/pascal.contribution.js';\nimport './pascaligo/pascaligo.contribution.js';\nimport './perl/perl.contribution.js';\nimport './pgsql/pgsql.contribution.js';\nimport './php/php.contribution.js';\nimport './postiats/postiats.contribution.js';\nimport './powerquery/powerquery.contribution.js';\nimport './powershell/powershell.contribution.js';\nimport './pug/pug.contribution.js';\nimport './python/python.contribution.js';\nimport './r/r.contribution.js';\nimport './razor/razor.contribution.js';\nimport './redis/redis.contribution.js';\nimport './redshift/redshift.contribution.js';\nimport './restructuredtext/restructuredtext.contribution.js';\nimport './ruby/ruby.contribution.js';\nimport './rust/rust.contribution.js';\nimport './sb/sb.contribution.js';\nimport './scala/scala.contribution.js';\nimport './scheme/scheme.contribution.js';\nimport './scss/scss.contribution.js';\nimport './shell/shell.contribution.js';\nimport './solidity/solidity.contribution.js';\nimport './sophia/sophia.contribution.js';\nimport './sql/sql.contribution.js';\nimport './st/st.contribution.js';\nimport './swift/swift.contribution.js';\nimport './systemverilog/systemverilog.contribution.js';\nimport './tcl/tcl.contribution.js';\nimport './twig/twig.contribution.js';\nimport './typescript/typescript.contribution.js';\nimport './vb/vb.contribution.js';\nimport './xml/xml.contribution.js';\nimport './yaml/yaml.contribution.js';\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'msdax',\n extensions: ['.dax', '.msdax'],\n aliases: ['DAX', 'MSDAX'],\n loader: function () { return import('./msdax.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'mysql',\n extensions: [],\n aliases: ['MySQL', 'mysql'],\n loader: function () { return import('./mysql.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'objective-c',\n extensions: ['.m'],\n aliases: ['Objective-C'],\n loader: function () { return import('./objective-c.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'pascal',\n extensions: ['.pas', '.p', '.pp'],\n aliases: ['Pascal', 'pas'],\n mimetypes: ['text/x-pascal-source', 'text/x-pascal'],\n loader: function () { return import('./pascal.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'pascaligo',\n extensions: ['.ligo'],\n aliases: ['Pascaligo', 'ligo'],\n loader: function () { return import('./pascaligo.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'perl',\n extensions: ['.pl'],\n aliases: ['Perl', 'pl'],\n loader: function () { return import('./perl.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'pgsql',\n extensions: [],\n aliases: ['PostgreSQL', 'postgres', 'pg', 'postgre'],\n loader: function () { return import('./pgsql.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'php',\n extensions: ['.php', '.php4', '.php5', '.phtml', '.ctp'],\n aliases: ['PHP', 'php'],\n mimetypes: ['application/x-php'],\n loader: function () { return import('./php.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'postiats',\n extensions: ['.dats', '.sats', '.hats'],\n aliases: ['ATS', 'ATS/Postiats'],\n loader: function () { return import('./postiats.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'powerquery',\n extensions: ['.pq', '.pqm'],\n aliases: ['PQ', 'M', 'Power Query', 'Power Query M'],\n loader: function () { return import('./powerquery.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'powershell',\n extensions: ['.ps1', '.psm1', '.psd1'],\n aliases: ['PowerShell', 'powershell', 'ps', 'ps1'],\n loader: function () { return import('./powershell.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'pug',\n extensions: ['.jade', '.pug'],\n aliases: ['Pug', 'Jade', 'jade'],\n loader: function () { return import('./pug.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'python',\n extensions: ['.py', '.rpy', '.pyw', '.cpy', '.gyp', '.gypi'],\n aliases: ['Python', 'py'],\n firstLine: '^#!/.*\\\\bpython[0-9.-]*\\\\b',\n loader: function () { return import('./python.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'r',\n extensions: ['.r', '.rhistory', '.rmd', '.rprofile', '.rt'],\n aliases: ['R', 'r'],\n loader: function () { return import('./r.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'razor',\n extensions: ['.cshtml'],\n aliases: ['Razor', 'razor'],\n mimetypes: ['text/x-cshtml'],\n loader: function () { return import('./razor.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'redis',\n extensions: ['.redis'],\n aliases: ['redis'],\n loader: function () { return import('./redis.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'redshift',\n extensions: [],\n aliases: ['Redshift', 'redshift'],\n loader: function () { return import('./redshift.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'restructuredtext',\n extensions: ['.rst'],\n aliases: ['reStructuredText', 'restructuredtext'],\n loader: function () { return import('./restructuredtext.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'ruby',\n extensions: ['.rb', '.rbx', '.rjs', '.gemspec', '.pp'],\n filenames: ['rakefile', 'Gemfile'],\n aliases: ['Ruby', 'rb'],\n loader: function () { return import('./ruby.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'rust',\n extensions: ['.rs', '.rlib'],\n aliases: ['Rust', 'rust'],\n loader: function () { return import('./rust.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'sb',\n extensions: ['.sb'],\n aliases: ['Small Basic', 'sb'],\n loader: function () { return import('./sb.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'scala',\n extensions: ['.scala', '.sc', '.sbt'],\n aliases: ['Scala', 'scala', 'SBT', 'Sbt', 'sbt', 'Dotty', 'dotty'],\n mimetypes: ['text/x-scala-source', 'text/x-scala', 'text/x-sbt', 'text/x-dotty'],\n loader: function () { return import('./scala.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'scheme',\n extensions: ['.scm', '.ss', '.sch', '.rkt'],\n aliases: ['scheme', 'Scheme'],\n loader: function () { return import('./scheme.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'scss',\n extensions: ['.scss'],\n aliases: ['Sass', 'sass', 'scss'],\n mimetypes: ['text/x-scss', 'text/scss'],\n loader: function () { return import('./scss.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'shell',\n extensions: ['.sh', '.bash'],\n aliases: ['Shell', 'sh'],\n loader: function () { return import('./shell.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'sol',\n extensions: ['.sol'],\n aliases: ['sol', 'solidity', 'Solidity'],\n loader: function () { return import('./solidity.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'aes',\n extensions: ['.aes'],\n aliases: ['aes', 'sophia', 'Sophia'],\n loader: function () { return import('./sophia.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'sql',\n extensions: ['.sql'],\n aliases: ['SQL'],\n loader: function () { return import('./sql.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'st',\n extensions: ['.st', '.iecst', '.iecplc', '.lc3lib'],\n aliases: ['StructuredText', 'scl', 'stl'],\n loader: function () { return import('./st.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'swift',\n aliases: ['Swift', 'swift'],\n extensions: ['.swift'],\n mimetypes: ['text/swift'],\n loader: function () { return import('./swift.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'systemverilog',\n extensions: ['.sv', '.svh'],\n aliases: ['SV', 'sv', 'SystemVerilog', 'systemverilog'],\n loader: function () { return import('./systemverilog.js'); }\n});\nregisterLanguage({\n id: 'verilog',\n extensions: ['.v', '.vh'],\n aliases: ['V', 'v', 'Verilog', 'verilog'],\n loader: function () { return import('./systemverilog.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'tcl',\n extensions: ['.tcl'],\n aliases: ['tcl', 'Tcl', 'tcltk', 'TclTk', 'tcl/tk', 'Tcl/Tk'],\n loader: function () { return import('./tcl.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'twig',\n extensions: ['.twig'],\n aliases: ['Twig', 'twig'],\n mimetypes: ['text/x-twig'],\n loader: function () { return import('./twig.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'typescript',\n extensions: ['.ts', '.tsx'],\n aliases: ['TypeScript', 'ts', 'typescript'],\n mimetypes: ['text/typescript'],\n loader: function () { return import('./typescript.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'vb',\n extensions: ['.vb'],\n aliases: ['Visual Basic', 'vb'],\n loader: function () { return import('./vb.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'xml',\n extensions: [\n '.xml',\n '.dtd',\n '.ascx',\n '.csproj',\n '.config',\n '.wxi',\n '.wxl',\n '.wxs',\n '.xaml',\n '.svg',\n '.svgz',\n '.opf',\n '.xsl'\n ],\n firstLine: '(\\\\<\\\\?xml.*)|(\\\\<svg)|(\\\\<\\\\!doctype\\\\s+svg)',\n aliases: ['XML', 'xml'],\n mimetypes: ['text/xml', 'application/xml', 'application/xaml+xml', 'application/xml-dtd'],\n loader: function () { return import('./xml.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { registerLanguage } from '../_.contribution.js';\nregisterLanguage({\n id: 'yaml',\n extensions: ['.yaml', '.yml'],\n aliases: ['YAML', 'yaml', 'YML', 'yml'],\n mimetypes: ['application/x-yaml'],\n loader: function () { return import('./yaml.js'); }\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class CharWidthRequest {\r\n constructor(chr, type) {\r\n this.chr = chr;\r\n this.type = type;\r\n this.width = 0;\r\n }\r\n fulfill(width) {\r\n this.width = width;\r\n }\r\n}\r\nclass DomCharWidthReader {\r\n constructor(bareFontInfo, requests) {\r\n this._bareFontInfo = bareFontInfo;\r\n this._requests = requests;\r\n this._container = null;\r\n this._testElements = null;\r\n }\r\n read() {\r\n // Create a test container with all these test elements\r\n this._createDomElements();\r\n // Add the container to the DOM\r\n document.body.appendChild(this._container);\r\n // Read character widths\r\n this._readFromDomElements();\r\n // Remove the container from the DOM\r\n document.body.removeChild(this._container);\r\n this._container = null;\r\n this._testElements = null;\r\n }\r\n _createDomElements() {\r\n const container = document.createElement('div');\r\n container.style.position = 'absolute';\r\n container.style.top = '-50000px';\r\n container.style.width = '50000px';\r\n const regularDomNode = document.createElement('div');\r\n regularDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();\r\n regularDomNode.style.fontWeight = this._bareFontInfo.fontWeight;\r\n regularDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';\r\n regularDomNode.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings;\r\n regularDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';\r\n regularDomNode.style.letterSpacing = this._bareFontInfo.letterSpacing + 'px';\r\n container.appendChild(regularDomNode);\r\n const boldDomNode = document.createElement('div');\r\n boldDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();\r\n boldDomNode.style.fontWeight = 'bold';\r\n boldDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';\r\n boldDomNode.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings;\r\n boldDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';\r\n boldDomNode.style.letterSpacing = this._bareFontInfo.letterSpacing + 'px';\r\n container.appendChild(boldDomNode);\r\n const italicDomNode = document.createElement('div');\r\n italicDomNode.style.fontFamily = this._bareFontInfo.getMassagedFontFamily();\r\n italicDomNode.style.fontWeight = this._bareFontInfo.fontWeight;\r\n italicDomNode.style.fontSize = this._bareFontInfo.fontSize + 'px';\r\n italicDomNode.style.fontFeatureSettings = this._bareFontInfo.fontFeatureSettings;\r\n italicDomNode.style.lineHeight = this._bareFontInfo.lineHeight + 'px';\r\n italicDomNode.style.letterSpacing = this._bareFontInfo.letterSpacing + 'px';\r\n italicDomNode.style.fontStyle = 'italic';\r\n container.appendChild(italicDomNode);\r\n const testElements = [];\r\n for (const request of this._requests) {\r\n let parent;\r\n if (request.type === 0 /* Regular */) {\r\n parent = regularDomNode;\r\n }\r\n if (request.type === 2 /* Bold */) {\r\n parent = boldDomNode;\r\n }\r\n if (request.type === 1 /* Italic */) {\r\n parent = italicDomNode;\r\n }\r\n parent.appendChild(document.createElement('br'));\r\n const testElement = document.createElement('span');\r\n DomCharWidthReader._render(testElement, request);\r\n parent.appendChild(testElement);\r\n testElements.push(testElement);\r\n }\r\n this._container = container;\r\n this._testElements = testElements;\r\n }\r\n static _render(testElement, request) {\r\n if (request.chr === ' ') {\r\n let htmlString = '\\u00a0';\r\n // Repeat character 256 (2^8) times\r\n for (let i = 0; i < 8; i++) {\r\n htmlString += htmlString;\r\n }\r\n testElement.innerText = htmlString;\r\n }\r\n else {\r\n let testString = request.chr;\r\n // Repeat character 256 (2^8) times\r\n for (let i = 0; i < 8; i++) {\r\n testString += testString;\r\n }\r\n testElement.textContent = testString;\r\n }\r\n }\r\n _readFromDomElements() {\r\n for (let i = 0, len = this._requests.length; i < len; i++) {\r\n const request = this._requests[i];\r\n const testElement = this._testElements[i];\r\n request.fulfill(testElement.offsetWidth / 256);\r\n }\r\n }\r\n}\r\nexport function readCharWidths(bareFontInfo, requests) {\r\n const reader = new DomCharWidthReader(bareFontInfo, requests);\r\n reader.read();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { CharWidthRequest, readCharWidths } from './charWidthReader.js';\r\nimport { ElementSizeObserver } from './elementSizeObserver.js';\r\nimport { CommonEditorConfiguration } from '../../common/config/commonEditorConfig.js';\r\nimport { EditorFontLigatures } from '../../common/config/editorOptions.js';\r\nimport { FontInfo } from '../../common/config/fontInfo.js';\r\nclass CSSBasedConfigurationCache {\r\n constructor() {\r\n this._keys = Object.create(null);\r\n this._values = Object.create(null);\r\n }\r\n has(item) {\r\n const itemId = item.getId();\r\n return !!this._values[itemId];\r\n }\r\n get(item) {\r\n const itemId = item.getId();\r\n return this._values[itemId];\r\n }\r\n put(item, value) {\r\n const itemId = item.getId();\r\n this._keys[itemId] = item;\r\n this._values[itemId] = value;\r\n }\r\n remove(item) {\r\n const itemId = item.getId();\r\n delete this._keys[itemId];\r\n delete this._values[itemId];\r\n }\r\n getValues() {\r\n return Object.keys(this._keys).map(id => this._values[id]);\r\n }\r\n}\r\nexport function clearAllFontInfos() {\r\n CSSBasedConfiguration.INSTANCE.clearCache();\r\n}\r\nclass CSSBasedConfiguration extends Disposable {\r\n constructor() {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._cache = new CSSBasedConfigurationCache();\r\n this._evictUntrustedReadingsTimeout = -1;\r\n }\r\n dispose() {\r\n if (this._evictUntrustedReadingsTimeout !== -1) {\r\n clearTimeout(this._evictUntrustedReadingsTimeout);\r\n this._evictUntrustedReadingsTimeout = -1;\r\n }\r\n super.dispose();\r\n }\r\n clearCache() {\r\n this._cache = new CSSBasedConfigurationCache();\r\n this._onDidChange.fire();\r\n }\r\n _writeToCache(item, value) {\r\n this._cache.put(item, value);\r\n if (!value.isTrusted && this._evictUntrustedReadingsTimeout === -1) {\r\n // Try reading again after some time\r\n this._evictUntrustedReadingsTimeout = setTimeout(() => {\r\n this._evictUntrustedReadingsTimeout = -1;\r\n this._evictUntrustedReadings();\r\n }, 5000);\r\n }\r\n }\r\n _evictUntrustedReadings() {\r\n const values = this._cache.getValues();\r\n let somethingRemoved = false;\r\n for (let i = 0, len = values.length; i < len; i++) {\r\n const item = values[i];\r\n if (!item.isTrusted) {\r\n somethingRemoved = true;\r\n this._cache.remove(item);\r\n }\r\n }\r\n if (somethingRemoved) {\r\n this._onDidChange.fire();\r\n }\r\n }\r\n readConfiguration(bareFontInfo) {\r\n if (!this._cache.has(bareFontInfo)) {\r\n let readConfig = CSSBasedConfiguration._actualReadConfiguration(bareFontInfo);\r\n if (readConfig.typicalHalfwidthCharacterWidth <= 2 || readConfig.typicalFullwidthCharacterWidth <= 2 || readConfig.spaceWidth <= 2 || readConfig.maxDigitWidth <= 2) {\r\n // Hey, it's Bug 14341 ... we couldn't read\r\n readConfig = new FontInfo({\r\n zoomLevel: browser.getZoomLevel(),\r\n fontFamily: readConfig.fontFamily,\r\n fontWeight: readConfig.fontWeight,\r\n fontSize: readConfig.fontSize,\r\n fontFeatureSettings: readConfig.fontFeatureSettings,\r\n lineHeight: readConfig.lineHeight,\r\n letterSpacing: readConfig.letterSpacing,\r\n isMonospace: readConfig.isMonospace,\r\n typicalHalfwidthCharacterWidth: Math.max(readConfig.typicalHalfwidthCharacterWidth, 5),\r\n typicalFullwidthCharacterWidth: Math.max(readConfig.typicalFullwidthCharacterWidth, 5),\r\n canUseHalfwidthRightwardsArrow: readConfig.canUseHalfwidthRightwardsArrow,\r\n spaceWidth: Math.max(readConfig.spaceWidth, 5),\r\n middotWidth: Math.max(readConfig.middotWidth, 5),\r\n wsmiddotWidth: Math.max(readConfig.wsmiddotWidth, 5),\r\n maxDigitWidth: Math.max(readConfig.maxDigitWidth, 5),\r\n }, false);\r\n }\r\n this._writeToCache(bareFontInfo, readConfig);\r\n }\r\n return this._cache.get(bareFontInfo);\r\n }\r\n static createRequest(chr, type, all, monospace) {\r\n const result = new CharWidthRequest(chr, type);\r\n all.push(result);\r\n if (monospace) {\r\n monospace.push(result);\r\n }\r\n return result;\r\n }\r\n static _actualReadConfiguration(bareFontInfo) {\r\n const all = [];\r\n const monospace = [];\r\n const typicalHalfwidthCharacter = this.createRequest('n', 0 /* Regular */, all, monospace);\r\n const typicalFullwidthCharacter = this.createRequest('\\uff4d', 0 /* Regular */, all, null);\r\n const space = this.createRequest(' ', 0 /* Regular */, all, monospace);\r\n const digit0 = this.createRequest('0', 0 /* Regular */, all, monospace);\r\n const digit1 = this.createRequest('1', 0 /* Regular */, all, monospace);\r\n const digit2 = this.createRequest('2', 0 /* Regular */, all, monospace);\r\n const digit3 = this.createRequest('3', 0 /* Regular */, all, monospace);\r\n const digit4 = this.createRequest('4', 0 /* Regular */, all, monospace);\r\n const digit5 = this.createRequest('5', 0 /* Regular */, all, monospace);\r\n const digit6 = this.createRequest('6', 0 /* Regular */, all, monospace);\r\n const digit7 = this.createRequest('7', 0 /* Regular */, all, monospace);\r\n const digit8 = this.createRequest('8', 0 /* Regular */, all, monospace);\r\n const digit9 = this.createRequest('9', 0 /* Regular */, all, monospace);\r\n // monospace test: used for whitespace rendering\r\n const rightwardsArrow = this.createRequest('→', 0 /* Regular */, all, monospace);\r\n const halfwidthRightwardsArrow = this.createRequest('→', 0 /* Regular */, all, null);\r\n // U+00B7 - MIDDLE DOT\r\n const middot = this.createRequest('·', 0 /* Regular */, all, monospace);\r\n // U+2E31 - WORD SEPARATOR MIDDLE DOT\r\n const wsmiddotWidth = this.createRequest(String.fromCharCode(0x2E31), 0 /* Regular */, all, null);\r\n // monospace test: some characters\r\n this.createRequest('|', 0 /* Regular */, all, monospace);\r\n this.createRequest('/', 0 /* Regular */, all, monospace);\r\n this.createRequest('-', 0 /* Regular */, all, monospace);\r\n this.createRequest('_', 0 /* Regular */, all, monospace);\r\n this.createRequest('i', 0 /* Regular */, all, monospace);\r\n this.createRequest('l', 0 /* Regular */, all, monospace);\r\n this.createRequest('m', 0 /* Regular */, all, monospace);\r\n // monospace italic test\r\n this.createRequest('|', 1 /* Italic */, all, monospace);\r\n this.createRequest('_', 1 /* Italic */, all, monospace);\r\n this.createRequest('i', 1 /* Italic */, all, monospace);\r\n this.createRequest('l', 1 /* Italic */, all, monospace);\r\n this.createRequest('m', 1 /* Italic */, all, monospace);\r\n this.createRequest('n', 1 /* Italic */, all, monospace);\r\n // monospace bold test\r\n this.createRequest('|', 2 /* Bold */, all, monospace);\r\n this.createRequest('_', 2 /* Bold */, all, monospace);\r\n this.createRequest('i', 2 /* Bold */, all, monospace);\r\n this.createRequest('l', 2 /* Bold */, all, monospace);\r\n this.createRequest('m', 2 /* Bold */, all, monospace);\r\n this.createRequest('n', 2 /* Bold */, all, monospace);\r\n readCharWidths(bareFontInfo, all);\r\n const maxDigitWidth = Math.max(digit0.width, digit1.width, digit2.width, digit3.width, digit4.width, digit5.width, digit6.width, digit7.width, digit8.width, digit9.width);\r\n let isMonospace = (bareFontInfo.fontFeatureSettings === EditorFontLigatures.OFF);\r\n const referenceWidth = monospace[0].width;\r\n for (let i = 1, len = monospace.length; isMonospace && i < len; i++) {\r\n const diff = referenceWidth - monospace[i].width;\r\n if (diff < -0.001 || diff > 0.001) {\r\n isMonospace = false;\r\n break;\r\n }\r\n }\r\n let canUseHalfwidthRightwardsArrow = true;\r\n if (isMonospace && halfwidthRightwardsArrow.width !== referenceWidth) {\r\n // using a halfwidth rightwards arrow would break monospace...\r\n canUseHalfwidthRightwardsArrow = false;\r\n }\r\n if (halfwidthRightwardsArrow.width > rightwardsArrow.width) {\r\n // using a halfwidth rightwards arrow would paint a larger arrow than a regular rightwards arrow\r\n canUseHalfwidthRightwardsArrow = false;\r\n }\r\n // let's trust the zoom level only 2s after it was changed.\r\n const canTrustBrowserZoomLevel = (browser.getTimeSinceLastZoomLevelChanged() > 2000);\r\n return new FontInfo({\r\n zoomLevel: browser.getZoomLevel(),\r\n fontFamily: bareFontInfo.fontFamily,\r\n fontWeight: bareFontInfo.fontWeight,\r\n fontSize: bareFontInfo.fontSize,\r\n fontFeatureSettings: bareFontInfo.fontFeatureSettings,\r\n lineHeight: bareFontInfo.lineHeight,\r\n letterSpacing: bareFontInfo.letterSpacing,\r\n isMonospace: isMonospace,\r\n typicalHalfwidthCharacterWidth: typicalHalfwidthCharacter.width,\r\n typicalFullwidthCharacterWidth: typicalFullwidthCharacter.width,\r\n canUseHalfwidthRightwardsArrow: canUseHalfwidthRightwardsArrow,\r\n spaceWidth: space.width,\r\n middotWidth: middot.width,\r\n wsmiddotWidth: wsmiddotWidth.width,\r\n maxDigitWidth: maxDigitWidth\r\n }, canTrustBrowserZoomLevel);\r\n }\r\n}\r\nCSSBasedConfiguration.INSTANCE = new CSSBasedConfiguration();\r\nexport class Configuration extends CommonEditorConfiguration {\r\n constructor(isSimpleWidget, options, referenceDomElement = null, accessibilityService) {\r\n super(isSimpleWidget, options);\r\n this.accessibilityService = accessibilityService;\r\n this._elementSizeObserver = this._register(new ElementSizeObserver(referenceDomElement, options.dimension, () => this._onReferenceDomElementSizeChanged()));\r\n this._register(CSSBasedConfiguration.INSTANCE.onDidChange(() => this._onCSSBasedConfigurationChanged()));\r\n if (this._validatedOptions.get(9 /* automaticLayout */)) {\r\n this._elementSizeObserver.startObserving();\r\n }\r\n this._register(browser.onDidChangeZoomLevel(_ => this._recomputeOptions()));\r\n this._register(this.accessibilityService.onDidChangeScreenReaderOptimized(() => this._recomputeOptions()));\r\n this._recomputeOptions();\r\n }\r\n static applyFontInfoSlow(domNode, fontInfo) {\r\n domNode.style.fontFamily = fontInfo.getMassagedFontFamily();\r\n domNode.style.fontWeight = fontInfo.fontWeight;\r\n domNode.style.fontSize = fontInfo.fontSize + 'px';\r\n domNode.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\r\n domNode.style.lineHeight = fontInfo.lineHeight + 'px';\r\n domNode.style.letterSpacing = fontInfo.letterSpacing + 'px';\r\n }\r\n static applyFontInfo(domNode, fontInfo) {\r\n domNode.setFontFamily(fontInfo.getMassagedFontFamily());\r\n domNode.setFontWeight(fontInfo.fontWeight);\r\n domNode.setFontSize(fontInfo.fontSize);\r\n domNode.setFontFeatureSettings(fontInfo.fontFeatureSettings);\r\n domNode.setLineHeight(fontInfo.lineHeight);\r\n domNode.setLetterSpacing(fontInfo.letterSpacing);\r\n }\r\n _onReferenceDomElementSizeChanged() {\r\n this._recomputeOptions();\r\n }\r\n _onCSSBasedConfigurationChanged() {\r\n this._recomputeOptions();\r\n }\r\n observeReferenceElement(dimension) {\r\n this._elementSizeObserver.observe(dimension);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _getExtraEditorClassName() {\r\n let extra = '';\r\n if (!browser.isSafari && !browser.isWebkitWebView) {\r\n // Use user-select: none in all browsers except Safari and native macOS WebView\r\n extra += 'no-user-select ';\r\n }\r\n if (platform.isMacintosh) {\r\n extra += 'mac ';\r\n }\r\n return extra;\r\n }\r\n _getEnvConfiguration() {\r\n return {\r\n extraEditorClassName: this._getExtraEditorClassName(),\r\n outerWidth: this._elementSizeObserver.getWidth(),\r\n outerHeight: this._elementSizeObserver.getHeight(),\r\n emptySelectionClipboard: browser.isWebKit || browser.isFirefox,\r\n pixelRatio: browser.getPixelRatio(),\r\n zoomLevel: browser.getZoomLevel(),\r\n accessibilitySupport: (this.accessibilityService.isScreenReaderOptimized()\r\n ? 2 /* Enabled */\r\n : this.accessibilityService.getAccessibilitySupport())\r\n };\r\n }\r\n readConfiguration(bareFontInfo) {\r\n return CSSBasedConfiguration.INSTANCE.readConfiguration(bareFontInfo);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class ElementSizeObserver extends Disposable {\r\n constructor(referenceDomElement, dimension, changeCallback) {\r\n super();\r\n this.referenceDomElement = referenceDomElement;\r\n this.changeCallback = changeCallback;\r\n this.width = -1;\r\n this.height = -1;\r\n this.resizeObserver = null;\r\n this.measureReferenceDomElementToken = -1;\r\n this.measureReferenceDomElement(false, dimension);\r\n }\r\n dispose() {\r\n this.stopObserving();\r\n super.dispose();\r\n }\r\n getWidth() {\r\n return this.width;\r\n }\r\n getHeight() {\r\n return this.height;\r\n }\r\n startObserving() {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n if (!this.resizeObserver && this.referenceDomElement) {\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n if (entries && entries[0] && entries[0].contentRect) {\r\n this.observe({ width: entries[0].contentRect.width, height: entries[0].contentRect.height });\r\n }\r\n else {\r\n this.observe();\r\n }\r\n });\r\n this.resizeObserver.observe(this.referenceDomElement);\r\n }\r\n }\r\n else {\r\n if (this.measureReferenceDomElementToken === -1) {\r\n // setInterval type defaults to NodeJS.Timeout instead of number, so specify it as a number\r\n this.measureReferenceDomElementToken = setInterval(() => this.observe(), 100);\r\n }\r\n }\r\n }\r\n stopObserving() {\r\n if (this.resizeObserver) {\r\n this.resizeObserver.disconnect();\r\n this.resizeObserver = null;\r\n }\r\n if (this.measureReferenceDomElementToken !== -1) {\r\n clearInterval(this.measureReferenceDomElementToken);\r\n this.measureReferenceDomElementToken = -1;\r\n }\r\n }\r\n observe(dimension) {\r\n this.measureReferenceDomElement(true, dimension);\r\n }\r\n measureReferenceDomElement(callChangeCallback, dimension) {\r\n let observedWidth = 0;\r\n let observedHeight = 0;\r\n if (dimension) {\r\n observedWidth = dimension.width;\r\n observedHeight = dimension.height;\r\n }\r\n else if (this.referenceDomElement) {\r\n observedWidth = this.referenceDomElement.clientWidth;\r\n observedHeight = this.referenceDomElement.clientHeight;\r\n }\r\n observedWidth = Math.max(5, observedWidth);\r\n observedHeight = Math.max(5, observedHeight);\r\n if (this.width !== observedWidth || this.height !== observedHeight) {\r\n this.width = observedWidth;\r\n this.height = observedHeight;\r\n if (callChangeCallback) {\r\n this.changeCallback();\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { Command, EditorCommand, registerEditorCommand, UndoCommand, RedoCommand, SelectAllCommand } from '../editorExtensions.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { ColumnSelection } from '../../common/controller/cursorColumnSelection.js';\r\nimport { CursorState } from '../../common/controller/cursorCommon.js';\r\nimport { DeleteOperations } from '../../common/controller/cursorDeleteOperations.js';\r\nimport { CursorMove as CursorMove_, CursorMoveCommands } from '../../common/controller/cursorMoveCommands.js';\r\nimport { TypeOperations } from '../../common/controller/cursorTypeOperations.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nconst CORE_WEIGHT = 0 /* EditorCore */;\r\nexport class CoreEditorCommand extends EditorCommand {\r\n runEditorCommand(accessor, editor, args) {\r\n const viewModel = editor._getViewModel();\r\n if (!viewModel) {\r\n // the editor has no view => has no cursors\r\n return;\r\n }\r\n this.runCoreEditorCommand(viewModel, args || {});\r\n }\r\n}\r\nexport var EditorScroll_;\r\n(function (EditorScroll_) {\r\n const isEditorScrollArgs = function (arg) {\r\n if (!types.isObject(arg)) {\r\n return false;\r\n }\r\n const scrollArg = arg;\r\n if (!types.isString(scrollArg.to)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(scrollArg.by) && !types.isString(scrollArg.by)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(scrollArg.value) && !types.isNumber(scrollArg.value)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(scrollArg.revealCursor) && !types.isBoolean(scrollArg.revealCursor)) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n EditorScroll_.description = {\r\n description: 'Scroll editor in the given direction',\r\n args: [\r\n {\r\n name: 'Editor scroll argument object',\r\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory direction value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'up', 'down'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'line', 'wrappedLine', 'page', 'halfPage'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'revealCursor': If 'true' reveals the cursor if it is outside view port.\n\t\t\t\t`,\r\n constraint: isEditorScrollArgs,\r\n schema: {\r\n 'type': 'object',\r\n 'required': ['to'],\r\n 'properties': {\r\n 'to': {\r\n 'type': 'string',\r\n 'enum': ['up', 'down']\r\n },\r\n 'by': {\r\n 'type': 'string',\r\n 'enum': ['line', 'wrappedLine', 'page', 'halfPage']\r\n },\r\n 'value': {\r\n 'type': 'number',\r\n 'default': 1\r\n },\r\n 'revealCursor': {\r\n 'type': 'boolean',\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n /**\r\n * Directions in the view for editor scroll command.\r\n */\r\n EditorScroll_.RawDirection = {\r\n Up: 'up',\r\n Down: 'down',\r\n };\r\n /**\r\n * Units for editor scroll 'by' argument\r\n */\r\n EditorScroll_.RawUnit = {\r\n Line: 'line',\r\n WrappedLine: 'wrappedLine',\r\n Page: 'page',\r\n HalfPage: 'halfPage'\r\n };\r\n function parse(args) {\r\n let direction;\r\n switch (args.to) {\r\n case EditorScroll_.RawDirection.Up:\r\n direction = 1 /* Up */;\r\n break;\r\n case EditorScroll_.RawDirection.Down:\r\n direction = 2 /* Down */;\r\n break;\r\n default:\r\n // Illegal arguments\r\n return null;\r\n }\r\n let unit;\r\n switch (args.by) {\r\n case EditorScroll_.RawUnit.Line:\r\n unit = 1 /* Line */;\r\n break;\r\n case EditorScroll_.RawUnit.WrappedLine:\r\n unit = 2 /* WrappedLine */;\r\n break;\r\n case EditorScroll_.RawUnit.Page:\r\n unit = 3 /* Page */;\r\n break;\r\n case EditorScroll_.RawUnit.HalfPage:\r\n unit = 4 /* HalfPage */;\r\n break;\r\n default:\r\n unit = 2 /* WrappedLine */;\r\n }\r\n const value = Math.floor(args.value || 1);\r\n const revealCursor = !!args.revealCursor;\r\n return {\r\n direction: direction,\r\n unit: unit,\r\n value: value,\r\n revealCursor: revealCursor,\r\n select: (!!args.select)\r\n };\r\n }\r\n EditorScroll_.parse = parse;\r\n})(EditorScroll_ || (EditorScroll_ = {}));\r\nexport var RevealLine_;\r\n(function (RevealLine_) {\r\n const isRevealLineArgs = function (arg) {\r\n if (!types.isObject(arg)) {\r\n return false;\r\n }\r\n const reveaLineArg = arg;\r\n if (!types.isNumber(reveaLineArg.lineNumber)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(reveaLineArg.at) && !types.isString(reveaLineArg.at)) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n RevealLine_.description = {\r\n description: 'Reveal the given line at the given logical position',\r\n args: [\r\n {\r\n name: 'Reveal line argument object',\r\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'lineNumber': A mandatory line number value.\n\t\t\t\t\t* 'at': Logical position at which line has to be revealed .\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'top', 'center', 'bottom'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t`,\r\n constraint: isRevealLineArgs,\r\n schema: {\r\n 'type': 'object',\r\n 'required': ['lineNumber'],\r\n 'properties': {\r\n 'lineNumber': {\r\n 'type': 'number',\r\n },\r\n 'at': {\r\n 'type': 'string',\r\n 'enum': ['top', 'center', 'bottom']\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n /**\r\n * Values for reveal line 'at' argument\r\n */\r\n RevealLine_.RawAtArgument = {\r\n Top: 'top',\r\n Center: 'center',\r\n Bottom: 'bottom'\r\n };\r\n})(RevealLine_ || (RevealLine_ = {}));\r\nclass EditorOrNativeTextInputCommand {\r\n constructor(target) {\r\n // 1. handle case when focus is in editor.\r\n target.addImplementation(10000, (accessor, args) => {\r\n // Only if editor text focus (i.e. not if editor has widget focus).\r\n const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (focusedEditor && focusedEditor.hasTextFocus()) {\r\n this.runEditorCommand(accessor, focusedEditor, args);\r\n return true;\r\n }\r\n return false;\r\n });\r\n // 2. handle case when focus is in some other `input` / `textarea`.\r\n target.addImplementation(1000, (accessor, args) => {\r\n // Only if focused on an element that allows for entering text\r\n const activeElement = document.activeElement;\r\n if (activeElement && ['input', 'textarea'].indexOf(activeElement.tagName.toLowerCase()) >= 0) {\r\n this.runDOMCommand();\r\n return true;\r\n }\r\n return false;\r\n });\r\n // 3. (default) handle case when focus is somewhere else.\r\n target.addImplementation(0, (accessor, args) => {\r\n // Redirecting to active editor\r\n const activeEditor = accessor.get(ICodeEditorService).getActiveCodeEditor();\r\n if (activeEditor) {\r\n activeEditor.focus();\r\n this.runEditorCommand(accessor, activeEditor, args);\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n}\r\nexport var CoreNavigationCommands;\r\n(function (CoreNavigationCommands) {\r\n class BaseMoveToCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, [\r\n CursorMoveCommands.moveTo(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position, args.viewPosition)\r\n ]);\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.MoveTo = registerEditorCommand(new BaseMoveToCommand({\r\n id: '_moveTo',\r\n inSelectionMode: false,\r\n precondition: undefined\r\n }));\r\n CoreNavigationCommands.MoveToSelect = registerEditorCommand(new BaseMoveToCommand({\r\n id: '_moveToSelect',\r\n inSelectionMode: true,\r\n precondition: undefined\r\n }));\r\n class ColumnSelectCommand extends CoreEditorCommand {\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n const result = this._getColumnSelectResult(viewModel, viewModel.getPrimaryCursorState(), viewModel.getCursorColumnSelectData(), args);\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, result.viewStates.map((viewState) => CursorState.fromViewState(viewState)));\r\n viewModel.setCursorColumnSelectData({\r\n isReal: true,\r\n fromViewLineNumber: result.fromLineNumber,\r\n fromViewVisualColumn: result.fromVisualColumn,\r\n toViewLineNumber: result.toLineNumber,\r\n toViewVisualColumn: result.toVisualColumn\r\n });\r\n if (result.reversed) {\r\n viewModel.revealTopMostCursor(args.source);\r\n }\r\n else {\r\n viewModel.revealBottomMostCursor(args.source);\r\n }\r\n }\r\n }\r\n CoreNavigationCommands.ColumnSelect = registerEditorCommand(new class extends ColumnSelectCommand {\r\n constructor() {\r\n super({\r\n id: 'columnSelect',\r\n precondition: undefined\r\n });\r\n }\r\n _getColumnSelectResult(viewModel, primary, prevColumnSelectData, args) {\r\n // validate `args`\r\n const validatedPosition = viewModel.model.validatePosition(args.position);\r\n const validatedViewPosition = viewModel.coordinatesConverter.validateViewPosition(new Position(args.viewPosition.lineNumber, args.viewPosition.column), validatedPosition);\r\n let fromViewLineNumber = args.doColumnSelect ? prevColumnSelectData.fromViewLineNumber : validatedViewPosition.lineNumber;\r\n let fromViewVisualColumn = args.doColumnSelect ? prevColumnSelectData.fromViewVisualColumn : args.mouseColumn - 1;\r\n return ColumnSelection.columnSelect(viewModel.cursorConfig, viewModel, fromViewLineNumber, fromViewVisualColumn, validatedViewPosition.lineNumber, args.mouseColumn - 1);\r\n }\r\n });\r\n CoreNavigationCommands.CursorColumnSelectLeft = registerEditorCommand(new class extends ColumnSelectCommand {\r\n constructor() {\r\n super({\r\n id: 'cursorColumnSelectLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 512 /* Alt */ | 15 /* LeftArrow */,\r\n linux: { primary: 0 }\r\n }\r\n });\r\n }\r\n _getColumnSelectResult(viewModel, primary, prevColumnSelectData, args) {\r\n return ColumnSelection.columnSelectLeft(viewModel.cursorConfig, viewModel, prevColumnSelectData);\r\n }\r\n });\r\n CoreNavigationCommands.CursorColumnSelectRight = registerEditorCommand(new class extends ColumnSelectCommand {\r\n constructor() {\r\n super({\r\n id: 'cursorColumnSelectRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 512 /* Alt */ | 17 /* RightArrow */,\r\n linux: { primary: 0 }\r\n }\r\n });\r\n }\r\n _getColumnSelectResult(viewModel, primary, prevColumnSelectData, args) {\r\n return ColumnSelection.columnSelectRight(viewModel.cursorConfig, viewModel, prevColumnSelectData);\r\n }\r\n });\r\n class ColumnSelectUpCommand extends ColumnSelectCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._isPaged = opts.isPaged;\r\n }\r\n _getColumnSelectResult(viewModel, primary, prevColumnSelectData, args) {\r\n return ColumnSelection.columnSelectUp(viewModel.cursorConfig, viewModel, prevColumnSelectData, this._isPaged);\r\n }\r\n }\r\n CoreNavigationCommands.CursorColumnSelectUp = registerEditorCommand(new ColumnSelectUpCommand({\r\n isPaged: false,\r\n id: 'cursorColumnSelectUp',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 512 /* Alt */ | 16 /* UpArrow */,\r\n linux: { primary: 0 }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorColumnSelectPageUp = registerEditorCommand(new ColumnSelectUpCommand({\r\n isPaged: true,\r\n id: 'cursorColumnSelectPageUp',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 512 /* Alt */ | 11 /* PageUp */,\r\n linux: { primary: 0 }\r\n }\r\n }));\r\n class ColumnSelectDownCommand extends ColumnSelectCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._isPaged = opts.isPaged;\r\n }\r\n _getColumnSelectResult(viewModel, primary, prevColumnSelectData, args) {\r\n return ColumnSelection.columnSelectDown(viewModel.cursorConfig, viewModel, prevColumnSelectData, this._isPaged);\r\n }\r\n }\r\n CoreNavigationCommands.CursorColumnSelectDown = registerEditorCommand(new ColumnSelectDownCommand({\r\n isPaged: false,\r\n id: 'cursorColumnSelectDown',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 512 /* Alt */ | 18 /* DownArrow */,\r\n linux: { primary: 0 }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorColumnSelectPageDown = registerEditorCommand(new ColumnSelectDownCommand({\r\n isPaged: true,\r\n id: 'cursorColumnSelectPageDown',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 512 /* Alt */ | 12 /* PageDown */,\r\n linux: { primary: 0 }\r\n }\r\n }));\r\n class CursorMoveImpl extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'cursorMove',\r\n precondition: undefined,\r\n description: CursorMove_.description\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n const parsed = CursorMove_.parse(args);\r\n if (!parsed) {\r\n // illegal arguments\r\n return;\r\n }\r\n this._runCursorMove(viewModel, args.source, parsed);\r\n }\r\n _runCursorMove(viewModel, source, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(source, 3 /* Explicit */, CursorMoveImpl._move(viewModel, viewModel.getCursorStates(), args));\r\n viewModel.revealPrimaryCursor(source, true);\r\n }\r\n static _move(viewModel, cursors, args) {\r\n const inSelectionMode = args.select;\r\n const value = args.value;\r\n switch (args.direction) {\r\n case 0 /* Left */:\r\n case 1 /* Right */:\r\n case 2 /* Up */:\r\n case 3 /* Down */:\r\n case 4 /* WrappedLineStart */:\r\n case 5 /* WrappedLineFirstNonWhitespaceCharacter */:\r\n case 6 /* WrappedLineColumnCenter */:\r\n case 7 /* WrappedLineEnd */:\r\n case 8 /* WrappedLineLastNonWhitespaceCharacter */:\r\n return CursorMoveCommands.simpleMove(viewModel, cursors, args.direction, inSelectionMode, value, args.unit);\r\n case 9 /* ViewPortTop */:\r\n case 11 /* ViewPortBottom */:\r\n case 10 /* ViewPortCenter */:\r\n case 12 /* ViewPortIfOutside */:\r\n return CursorMoveCommands.viewportMove(viewModel, cursors, args.direction, inSelectionMode, value);\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n CoreNavigationCommands.CursorMoveImpl = CursorMoveImpl;\r\n CoreNavigationCommands.CursorMove = registerEditorCommand(new CursorMoveImpl());\r\n class CursorMoveBasedCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._staticArgs = opts.args;\r\n }\r\n runCoreEditorCommand(viewModel, dynamicArgs) {\r\n let args = this._staticArgs;\r\n if (this._staticArgs.value === -1 /* PAGE_SIZE_MARKER */) {\r\n // -1 is a marker for page size\r\n args = {\r\n direction: this._staticArgs.direction,\r\n unit: this._staticArgs.unit,\r\n select: this._staticArgs.select,\r\n value: viewModel.cursorConfig.pageSize\r\n };\r\n }\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(dynamicArgs.source, 3 /* Explicit */, CursorMoveCommands.simpleMove(viewModel, viewModel.getCursorStates(), args.direction, args.select, args.value, args.unit));\r\n viewModel.revealPrimaryCursor(dynamicArgs.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.CursorLeft = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 0 /* Left */,\r\n unit: 0 /* None */,\r\n select: false,\r\n value: 1\r\n },\r\n id: 'cursorLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 15 /* LeftArrow */,\r\n mac: { primary: 15 /* LeftArrow */, secondary: [256 /* WinCtrl */ | 32 /* KEY_B */] }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorLeftSelect = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 0 /* Left */,\r\n unit: 0 /* None */,\r\n select: true,\r\n value: 1\r\n },\r\n id: 'cursorLeftSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 15 /* LeftArrow */\r\n }\r\n }));\r\n CoreNavigationCommands.CursorRight = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 1 /* Right */,\r\n unit: 0 /* None */,\r\n select: false,\r\n value: 1\r\n },\r\n id: 'cursorRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 17 /* RightArrow */,\r\n mac: { primary: 17 /* RightArrow */, secondary: [256 /* WinCtrl */ | 36 /* KEY_F */] }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorRightSelect = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 1 /* Right */,\r\n unit: 0 /* None */,\r\n select: true,\r\n value: 1\r\n },\r\n id: 'cursorRightSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 17 /* RightArrow */\r\n }\r\n }));\r\n CoreNavigationCommands.CursorUp = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 2 /* Up */,\r\n unit: 2 /* WrappedLine */,\r\n select: false,\r\n value: 1\r\n },\r\n id: 'cursorUp',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 16 /* UpArrow */,\r\n mac: { primary: 16 /* UpArrow */, secondary: [256 /* WinCtrl */ | 46 /* KEY_P */] }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorUpSelect = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 2 /* Up */,\r\n unit: 2 /* WrappedLine */,\r\n select: true,\r\n value: 1\r\n },\r\n id: 'cursorUpSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 16 /* UpArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 16 /* UpArrow */],\r\n mac: { primary: 1024 /* Shift */ | 16 /* UpArrow */ },\r\n linux: { primary: 1024 /* Shift */ | 16 /* UpArrow */ }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorPageUp = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 2 /* Up */,\r\n unit: 2 /* WrappedLine */,\r\n select: false,\r\n value: -1 /* PAGE_SIZE_MARKER */\r\n },\r\n id: 'cursorPageUp',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 11 /* PageUp */\r\n }\r\n }));\r\n CoreNavigationCommands.CursorPageUpSelect = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 2 /* Up */,\r\n unit: 2 /* WrappedLine */,\r\n select: true,\r\n value: -1 /* PAGE_SIZE_MARKER */\r\n },\r\n id: 'cursorPageUpSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 11 /* PageUp */\r\n }\r\n }));\r\n CoreNavigationCommands.CursorDown = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 3 /* Down */,\r\n unit: 2 /* WrappedLine */,\r\n select: false,\r\n value: 1\r\n },\r\n id: 'cursorDown',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 18 /* DownArrow */,\r\n mac: { primary: 18 /* DownArrow */, secondary: [256 /* WinCtrl */ | 44 /* KEY_N */] }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorDownSelect = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 3 /* Down */,\r\n unit: 2 /* WrappedLine */,\r\n select: true,\r\n value: 1\r\n },\r\n id: 'cursorDownSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 18 /* DownArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 18 /* DownArrow */],\r\n mac: { primary: 1024 /* Shift */ | 18 /* DownArrow */ },\r\n linux: { primary: 1024 /* Shift */ | 18 /* DownArrow */ }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorPageDown = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 3 /* Down */,\r\n unit: 2 /* WrappedLine */,\r\n select: false,\r\n value: -1 /* PAGE_SIZE_MARKER */\r\n },\r\n id: 'cursorPageDown',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 12 /* PageDown */\r\n }\r\n }));\r\n CoreNavigationCommands.CursorPageDownSelect = registerEditorCommand(new CursorMoveBasedCommand({\r\n args: {\r\n direction: 3 /* Down */,\r\n unit: 2 /* WrappedLine */,\r\n select: true,\r\n value: -1 /* PAGE_SIZE_MARKER */\r\n },\r\n id: 'cursorPageDownSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 12 /* PageDown */\r\n }\r\n }));\r\n CoreNavigationCommands.CreateCursor = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'createCursor',\r\n precondition: undefined\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n let newState;\r\n if (args.wholeLine) {\r\n newState = CursorMoveCommands.line(viewModel, viewModel.getPrimaryCursorState(), false, args.position, args.viewPosition);\r\n }\r\n else {\r\n newState = CursorMoveCommands.moveTo(viewModel, viewModel.getPrimaryCursorState(), false, args.position, args.viewPosition);\r\n }\r\n const states = viewModel.getCursorStates();\r\n // Check if we should remove a cursor (sort of like a toggle)\r\n if (states.length > 1) {\r\n const newModelPosition = (newState.modelState ? newState.modelState.position : null);\r\n const newViewPosition = (newState.viewState ? newState.viewState.position : null);\r\n for (let i = 0, len = states.length; i < len; i++) {\r\n const state = states[i];\r\n if (newModelPosition && !state.modelState.selection.containsPosition(newModelPosition)) {\r\n continue;\r\n }\r\n if (newViewPosition && !state.viewState.selection.containsPosition(newViewPosition)) {\r\n continue;\r\n }\r\n // => Remove the cursor\r\n states.splice(i, 1);\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, states);\r\n return;\r\n }\r\n }\r\n // => Add the new cursor\r\n states.push(newState);\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, states);\r\n }\r\n });\r\n CoreNavigationCommands.LastCursorMoveToSelect = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: '_lastCursorMoveToSelect',\r\n precondition: undefined\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n const lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\r\n const states = viewModel.getCursorStates();\r\n const newStates = states.slice(0);\r\n newStates[lastAddedCursorIndex] = CursorMoveCommands.moveTo(viewModel, states[lastAddedCursorIndex], true, args.position, args.viewPosition);\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, newStates);\r\n }\r\n });\r\n class HomeCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.moveToBeginningOfLine(viewModel, viewModel.getCursorStates(), this._inSelectionMode));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.CursorHome = registerEditorCommand(new HomeCommand({\r\n inSelectionMode: false,\r\n id: 'cursorHome',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 14 /* Home */,\r\n mac: { primary: 14 /* Home */, secondary: [2048 /* CtrlCmd */ | 15 /* LeftArrow */] }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorHomeSelect = registerEditorCommand(new HomeCommand({\r\n inSelectionMode: true,\r\n id: 'cursorHomeSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 14 /* Home */,\r\n mac: { primary: 1024 /* Shift */ | 14 /* Home */, secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 15 /* LeftArrow */] }\r\n }\r\n }));\r\n class LineStartCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, this._exec(viewModel.getCursorStates()));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n _exec(cursors) {\r\n const result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const lineNumber = cursor.modelState.position.lineNumber;\r\n result[i] = CursorState.fromModelState(cursor.modelState.move(this._inSelectionMode, lineNumber, 1, 0));\r\n }\r\n return result;\r\n }\r\n }\r\n CoreNavigationCommands.CursorLineStart = registerEditorCommand(new LineStartCommand({\r\n inSelectionMode: false,\r\n id: 'cursorLineStart',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 31 /* KEY_A */ }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorLineStartSelect = registerEditorCommand(new LineStartCommand({\r\n inSelectionMode: true,\r\n id: 'cursorLineStartSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 1024 /* Shift */ | 31 /* KEY_A */ }\r\n }\r\n }));\r\n class EndCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.moveToEndOfLine(viewModel, viewModel.getCursorStates(), this._inSelectionMode, args.sticky || false));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.CursorEnd = registerEditorCommand(new EndCommand({\r\n inSelectionMode: false,\r\n id: 'cursorEnd',\r\n precondition: undefined,\r\n kbOpts: {\r\n args: { sticky: false },\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 13 /* End */,\r\n mac: { primary: 13 /* End */, secondary: [2048 /* CtrlCmd */ | 17 /* RightArrow */] }\r\n },\r\n description: {\r\n description: `Go to End`,\r\n args: [{\r\n name: 'args',\r\n schema: {\r\n type: 'object',\r\n properties: {\r\n 'sticky': {\r\n description: nls.localize('stickydesc', \"Stick to the end even when going to longer lines\"),\r\n type: 'boolean',\r\n default: false\r\n }\r\n }\r\n }\r\n }]\r\n }\r\n }));\r\n CoreNavigationCommands.CursorEndSelect = registerEditorCommand(new EndCommand({\r\n inSelectionMode: true,\r\n id: 'cursorEndSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n args: { sticky: false },\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 13 /* End */,\r\n mac: { primary: 1024 /* Shift */ | 13 /* End */, secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 17 /* RightArrow */] }\r\n },\r\n description: {\r\n description: `Select to End`,\r\n args: [{\r\n name: 'args',\r\n schema: {\r\n type: 'object',\r\n properties: {\r\n 'sticky': {\r\n description: nls.localize('stickydesc', \"Stick to the end even when going to longer lines\"),\r\n type: 'boolean',\r\n default: false\r\n }\r\n }\r\n }\r\n }]\r\n }\r\n }));\r\n class LineEndCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, this._exec(viewModel, viewModel.getCursorStates()));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n _exec(viewModel, cursors) {\r\n const result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const lineNumber = cursor.modelState.position.lineNumber;\r\n const maxColumn = viewModel.model.getLineMaxColumn(lineNumber);\r\n result[i] = CursorState.fromModelState(cursor.modelState.move(this._inSelectionMode, lineNumber, maxColumn, 0));\r\n }\r\n return result;\r\n }\r\n }\r\n CoreNavigationCommands.CursorLineEnd = registerEditorCommand(new LineEndCommand({\r\n inSelectionMode: false,\r\n id: 'cursorLineEnd',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 35 /* KEY_E */ }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorLineEndSelect = registerEditorCommand(new LineEndCommand({\r\n inSelectionMode: true,\r\n id: 'cursorLineEndSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 1024 /* Shift */ | 35 /* KEY_E */ }\r\n }\r\n }));\r\n class TopCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.moveToBeginningOfBuffer(viewModel, viewModel.getCursorStates(), this._inSelectionMode));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.CursorTop = registerEditorCommand(new TopCommand({\r\n inSelectionMode: false,\r\n id: 'cursorTop',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 14 /* Home */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 16 /* UpArrow */ }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorTopSelect = registerEditorCommand(new TopCommand({\r\n inSelectionMode: true,\r\n id: 'cursorTopSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 14 /* Home */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 16 /* UpArrow */ }\r\n }\r\n }));\r\n class BottomCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.moveToEndOfBuffer(viewModel, viewModel.getCursorStates(), this._inSelectionMode));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.CursorBottom = registerEditorCommand(new BottomCommand({\r\n inSelectionMode: false,\r\n id: 'cursorBottom',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 13 /* End */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 18 /* DownArrow */ }\r\n }\r\n }));\r\n CoreNavigationCommands.CursorBottomSelect = registerEditorCommand(new BottomCommand({\r\n inSelectionMode: true,\r\n id: 'cursorBottomSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 13 /* End */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 18 /* DownArrow */ }\r\n }\r\n }));\r\n class EditorScrollImpl extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'editorScroll',\r\n precondition: undefined,\r\n description: EditorScroll_.description\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n const parsed = EditorScroll_.parse(args);\r\n if (!parsed) {\r\n // illegal arguments\r\n return;\r\n }\r\n this._runEditorScroll(viewModel, args.source, parsed);\r\n }\r\n _runEditorScroll(viewModel, source, args) {\r\n const desiredScrollTop = this._computeDesiredScrollTop(viewModel, args);\r\n if (args.revealCursor) {\r\n // must ensure cursor is in new visible range\r\n const desiredVisibleViewRange = viewModel.getCompletelyVisibleViewRangeAtScrollTop(desiredScrollTop);\r\n viewModel.setCursorStates(source, 3 /* Explicit */, [\r\n CursorMoveCommands.findPositionInViewportIfOutside(viewModel, viewModel.getPrimaryCursorState(), desiredVisibleViewRange, args.select)\r\n ]);\r\n }\r\n viewModel.setScrollTop(desiredScrollTop, 0 /* Smooth */);\r\n }\r\n _computeDesiredScrollTop(viewModel, args) {\r\n if (args.unit === 1 /* Line */) {\r\n // scrolling by model lines\r\n const visibleViewRange = viewModel.getCompletelyVisibleViewRange();\r\n const visibleModelRange = viewModel.coordinatesConverter.convertViewRangeToModelRange(visibleViewRange);\r\n let desiredTopModelLineNumber;\r\n if (args.direction === 1 /* Up */) {\r\n // must go x model lines up\r\n desiredTopModelLineNumber = Math.max(1, visibleModelRange.startLineNumber - args.value);\r\n }\r\n else {\r\n // must go x model lines down\r\n desiredTopModelLineNumber = Math.min(viewModel.model.getLineCount(), visibleModelRange.startLineNumber + args.value);\r\n }\r\n const viewPosition = viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position(desiredTopModelLineNumber, 1));\r\n return viewModel.getVerticalOffsetForLineNumber(viewPosition.lineNumber);\r\n }\r\n let noOfLines;\r\n if (args.unit === 3 /* Page */) {\r\n noOfLines = viewModel.cursorConfig.pageSize * args.value;\r\n }\r\n else if (args.unit === 4 /* HalfPage */) {\r\n noOfLines = Math.round(viewModel.cursorConfig.pageSize / 2) * args.value;\r\n }\r\n else {\r\n noOfLines = args.value;\r\n }\r\n const deltaLines = (args.direction === 1 /* Up */ ? -1 : 1) * noOfLines;\r\n return viewModel.getScrollTop() + deltaLines * viewModel.cursorConfig.lineHeight;\r\n }\r\n }\r\n CoreNavigationCommands.EditorScrollImpl = EditorScrollImpl;\r\n CoreNavigationCommands.EditorScroll = registerEditorCommand(new EditorScrollImpl());\r\n CoreNavigationCommands.ScrollLineUp = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'scrollLineUp',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 16 /* UpArrow */,\r\n mac: { primary: 256 /* WinCtrl */ | 11 /* PageUp */ }\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n CoreNavigationCommands.EditorScroll._runEditorScroll(viewModel, args.source, {\r\n direction: 1 /* Up */,\r\n unit: 2 /* WrappedLine */,\r\n value: 1,\r\n revealCursor: false,\r\n select: false\r\n });\r\n }\r\n });\r\n CoreNavigationCommands.ScrollPageUp = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'scrollPageUp',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 11 /* PageUp */,\r\n win: { primary: 512 /* Alt */ | 11 /* PageUp */ },\r\n linux: { primary: 512 /* Alt */ | 11 /* PageUp */ }\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n CoreNavigationCommands.EditorScroll._runEditorScroll(viewModel, args.source, {\r\n direction: 1 /* Up */,\r\n unit: 3 /* Page */,\r\n value: 1,\r\n revealCursor: false,\r\n select: false\r\n });\r\n }\r\n });\r\n CoreNavigationCommands.ScrollLineDown = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'scrollLineDown',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 18 /* DownArrow */,\r\n mac: { primary: 256 /* WinCtrl */ | 12 /* PageDown */ }\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n CoreNavigationCommands.EditorScroll._runEditorScroll(viewModel, args.source, {\r\n direction: 2 /* Down */,\r\n unit: 2 /* WrappedLine */,\r\n value: 1,\r\n revealCursor: false,\r\n select: false\r\n });\r\n }\r\n });\r\n CoreNavigationCommands.ScrollPageDown = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'scrollPageDown',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 12 /* PageDown */,\r\n win: { primary: 512 /* Alt */ | 12 /* PageDown */ },\r\n linux: { primary: 512 /* Alt */ | 12 /* PageDown */ }\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n CoreNavigationCommands.EditorScroll._runEditorScroll(viewModel, args.source, {\r\n direction: 2 /* Down */,\r\n unit: 3 /* Page */,\r\n value: 1,\r\n revealCursor: false,\r\n select: false\r\n });\r\n }\r\n });\r\n class WordCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, [\r\n CursorMoveCommands.word(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position)\r\n ]);\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n }\r\n CoreNavigationCommands.WordSelect = registerEditorCommand(new WordCommand({\r\n inSelectionMode: false,\r\n id: '_wordSelect',\r\n precondition: undefined\r\n }));\r\n CoreNavigationCommands.WordSelectDrag = registerEditorCommand(new WordCommand({\r\n inSelectionMode: true,\r\n id: '_wordSelectDrag',\r\n precondition: undefined\r\n }));\r\n CoreNavigationCommands.LastCursorWordSelect = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'lastCursorWordSelect',\r\n precondition: undefined\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n const lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\r\n const states = viewModel.getCursorStates();\r\n const newStates = states.slice(0);\r\n const lastAddedState = states[lastAddedCursorIndex];\r\n newStates[lastAddedCursorIndex] = CursorMoveCommands.word(viewModel, lastAddedState, lastAddedState.modelState.hasSelection(), args.position);\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, newStates);\r\n }\r\n });\r\n class LineCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, [\r\n CursorMoveCommands.line(viewModel, viewModel.getPrimaryCursorState(), this._inSelectionMode, args.position, args.viewPosition)\r\n ]);\r\n viewModel.revealPrimaryCursor(args.source, false);\r\n }\r\n }\r\n CoreNavigationCommands.LineSelect = registerEditorCommand(new LineCommand({\r\n inSelectionMode: false,\r\n id: '_lineSelect',\r\n precondition: undefined\r\n }));\r\n CoreNavigationCommands.LineSelectDrag = registerEditorCommand(new LineCommand({\r\n inSelectionMode: true,\r\n id: '_lineSelectDrag',\r\n precondition: undefined\r\n }));\r\n class LastCursorLineCommand extends CoreEditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n const lastAddedCursorIndex = viewModel.getLastAddedCursorIndex();\r\n const states = viewModel.getCursorStates();\r\n const newStates = states.slice(0);\r\n newStates[lastAddedCursorIndex] = CursorMoveCommands.line(viewModel, states[lastAddedCursorIndex], this._inSelectionMode, args.position, args.viewPosition);\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, newStates);\r\n }\r\n }\r\n CoreNavigationCommands.LastCursorLineSelect = registerEditorCommand(new LastCursorLineCommand({\r\n inSelectionMode: false,\r\n id: 'lastCursorLineSelect',\r\n precondition: undefined\r\n }));\r\n CoreNavigationCommands.LastCursorLineSelectDrag = registerEditorCommand(new LastCursorLineCommand({\r\n inSelectionMode: true,\r\n id: 'lastCursorLineSelectDrag',\r\n precondition: undefined\r\n }));\r\n CoreNavigationCommands.ExpandLineSelection = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'expandLineSelection',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 42 /* KEY_L */\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.expandLineSelection(viewModel, viewModel.getCursorStates()));\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n });\r\n CoreNavigationCommands.CancelSelection = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'cancelSelection',\r\n precondition: EditorContextKeys.hasNonEmptySelection,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, [\r\n CursorMoveCommands.cancelSelection(viewModel, viewModel.getPrimaryCursorState())\r\n ]);\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n });\r\n CoreNavigationCommands.RemoveSecondaryCursors = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'removeSecondaryCursors',\r\n precondition: EditorContextKeys.hasMultipleSelections,\r\n kbOpts: {\r\n weight: CORE_WEIGHT + 1,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, [\r\n viewModel.getPrimaryCursorState()\r\n ]);\r\n viewModel.revealPrimaryCursor(args.source, true);\r\n }\r\n });\r\n CoreNavigationCommands.RevealLine = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'revealLine',\r\n precondition: undefined,\r\n description: RevealLine_.description\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n const revealLineArg = args;\r\n let lineNumber = (revealLineArg.lineNumber || 0) + 1;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n }\r\n const lineCount = viewModel.model.getLineCount();\r\n if (lineNumber > lineCount) {\r\n lineNumber = lineCount;\r\n }\r\n const range = new Range(lineNumber, 1, lineNumber, viewModel.model.getLineMaxColumn(lineNumber));\r\n let revealAt = 0 /* Simple */;\r\n if (revealLineArg.at) {\r\n switch (revealLineArg.at) {\r\n case RevealLine_.RawAtArgument.Top:\r\n revealAt = 3 /* Top */;\r\n break;\r\n case RevealLine_.RawAtArgument.Center:\r\n revealAt = 1 /* Center */;\r\n break;\r\n case RevealLine_.RawAtArgument.Bottom:\r\n revealAt = 4 /* Bottom */;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n const viewRange = viewModel.coordinatesConverter.convertModelRangeToViewRange(range);\r\n viewModel.revealRange(args.source, false, viewRange, revealAt, 0 /* Smooth */);\r\n }\r\n });\r\n CoreNavigationCommands.SelectAll = new class extends EditorOrNativeTextInputCommand {\r\n constructor() {\r\n super(SelectAllCommand);\r\n }\r\n runDOMCommand() {\r\n document.execCommand('selectAll');\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n const viewModel = editor._getViewModel();\r\n if (!viewModel) {\r\n // the editor has no view => has no cursors\r\n return;\r\n }\r\n this.runCoreEditorCommand(viewModel, args);\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates('keyboard', 3 /* Explicit */, [\r\n CursorMoveCommands.selectAll(viewModel, viewModel.getPrimaryCursorState())\r\n ]);\r\n }\r\n }();\r\n CoreNavigationCommands.SetSelection = registerEditorCommand(new class extends CoreEditorCommand {\r\n constructor() {\r\n super({\r\n id: 'setSelection',\r\n precondition: undefined\r\n });\r\n }\r\n runCoreEditorCommand(viewModel, args) {\r\n viewModel.model.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, [\r\n CursorState.fromModelSelection(args.selection)\r\n ]);\r\n }\r\n });\r\n})(CoreNavigationCommands || (CoreNavigationCommands = {}));\r\nconst columnSelectionCondition = ContextKeyExpr.and(EditorContextKeys.textInputFocus, EditorContextKeys.columnSelection);\r\nfunction registerColumnSelection(id, keybinding) {\r\n KeybindingsRegistry.registerKeybindingRule({\r\n id: id,\r\n primary: keybinding,\r\n when: columnSelectionCondition,\r\n weight: CORE_WEIGHT + 1\r\n });\r\n}\r\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectLeft.id, 1024 /* Shift */ | 15 /* LeftArrow */);\r\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectRight.id, 1024 /* Shift */ | 17 /* RightArrow */);\r\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectUp.id, 1024 /* Shift */ | 16 /* UpArrow */);\r\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectPageUp.id, 1024 /* Shift */ | 11 /* PageUp */);\r\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectDown.id, 1024 /* Shift */ | 18 /* DownArrow */);\r\nregisterColumnSelection(CoreNavigationCommands.CursorColumnSelectPageDown.id, 1024 /* Shift */ | 12 /* PageDown */);\r\nfunction registerCommand(command) {\r\n command.register();\r\n return command;\r\n}\r\nexport var CoreEditingCommands;\r\n(function (CoreEditingCommands) {\r\n class CoreEditingCommand extends EditorCommand {\r\n runEditorCommand(accessor, editor, args) {\r\n const viewModel = editor._getViewModel();\r\n if (!viewModel) {\r\n // the editor has no view => has no cursors\r\n return;\r\n }\r\n this.runCoreEditingCommand(editor, viewModel, args || {});\r\n }\r\n }\r\n CoreEditingCommands.CoreEditingCommand = CoreEditingCommand;\r\n CoreEditingCommands.LineBreakInsert = registerEditorCommand(new class extends CoreEditingCommand {\r\n constructor() {\r\n super({\r\n id: 'lineBreakInsert',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 45 /* KEY_O */ }\r\n }\r\n });\r\n }\r\n runCoreEditingCommand(editor, viewModel, args) {\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, TypeOperations.lineBreakInsert(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\r\n }\r\n });\r\n CoreEditingCommands.Outdent = registerEditorCommand(new class extends CoreEditingCommand {\r\n constructor() {\r\n super({\r\n id: 'outdent',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.editorTextFocus, EditorContextKeys.tabDoesNotMoveFocus),\r\n primary: 1024 /* Shift */ | 2 /* Tab */\r\n }\r\n });\r\n }\r\n runCoreEditingCommand(editor, viewModel, args) {\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, TypeOperations.outdent(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\r\n editor.pushUndoStop();\r\n }\r\n });\r\n CoreEditingCommands.Tab = registerEditorCommand(new class extends CoreEditingCommand {\r\n constructor() {\r\n super({\r\n id: 'tab',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.editorTextFocus, EditorContextKeys.tabDoesNotMoveFocus),\r\n primary: 2 /* Tab */\r\n }\r\n });\r\n }\r\n runCoreEditingCommand(editor, viewModel, args) {\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, TypeOperations.tab(viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection)));\r\n editor.pushUndoStop();\r\n }\r\n });\r\n CoreEditingCommands.DeleteLeft = registerEditorCommand(new class extends CoreEditingCommand {\r\n constructor() {\r\n super({\r\n id: 'deleteLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1 /* Backspace */,\r\n secondary: [1024 /* Shift */ | 1 /* Backspace */],\r\n mac: { primary: 1 /* Backspace */, secondary: [1024 /* Shift */ | 1 /* Backspace */, 256 /* WinCtrl */ | 38 /* KEY_H */, 256 /* WinCtrl */ | 1 /* Backspace */] }\r\n }\r\n });\r\n }\r\n runCoreEditingCommand(editor, viewModel, args) {\r\n const [shouldPushStackElementBefore, commands] = DeleteOperations.deleteLeft(viewModel.getPrevEditOperationType(), viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection));\r\n if (shouldPushStackElementBefore) {\r\n editor.pushUndoStop();\r\n }\r\n editor.executeCommands(this.id, commands);\r\n viewModel.setPrevEditOperationType(2 /* DeletingLeft */);\r\n }\r\n });\r\n CoreEditingCommands.DeleteRight = registerEditorCommand(new class extends CoreEditingCommand {\r\n constructor() {\r\n super({\r\n id: 'deleteRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: CORE_WEIGHT,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 20 /* Delete */,\r\n mac: { primary: 20 /* Delete */, secondary: [256 /* WinCtrl */ | 34 /* KEY_D */, 256 /* WinCtrl */ | 20 /* Delete */] }\r\n }\r\n });\r\n }\r\n runCoreEditingCommand(editor, viewModel, args) {\r\n const [shouldPushStackElementBefore, commands] = DeleteOperations.deleteRight(viewModel.getPrevEditOperationType(), viewModel.cursorConfig, viewModel.model, viewModel.getCursorStates().map(s => s.modelState.selection));\r\n if (shouldPushStackElementBefore) {\r\n editor.pushUndoStop();\r\n }\r\n editor.executeCommands(this.id, commands);\r\n viewModel.setPrevEditOperationType(3 /* DeletingRight */);\r\n }\r\n });\r\n CoreEditingCommands.Undo = new class extends EditorOrNativeTextInputCommand {\r\n constructor() {\r\n super(UndoCommand);\r\n }\r\n runDOMCommand() {\r\n document.execCommand('undo');\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n if (!editor.hasModel() || editor.getOption(72 /* readOnly */) === true) {\r\n return;\r\n }\r\n editor.getModel().undo();\r\n }\r\n }();\r\n CoreEditingCommands.Redo = new class extends EditorOrNativeTextInputCommand {\r\n constructor() {\r\n super(RedoCommand);\r\n }\r\n runDOMCommand() {\r\n document.execCommand('redo');\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n if (!editor.hasModel() || editor.getOption(72 /* readOnly */) === true) {\r\n return;\r\n }\r\n editor.getModel().redo();\r\n }\r\n }();\r\n})(CoreEditingCommands || (CoreEditingCommands = {}));\r\n/**\r\n * A command that will invoke a command on the focused editor.\r\n */\r\nclass EditorHandlerCommand extends Command {\r\n constructor(id, handlerId, description) {\r\n super({\r\n id: id,\r\n precondition: undefined,\r\n description: description\r\n });\r\n this._handlerId = handlerId;\r\n }\r\n runCommand(accessor, args) {\r\n const editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (!editor) {\r\n return;\r\n }\r\n editor.trigger('keyboard', this._handlerId, args);\r\n }\r\n}\r\nfunction registerOverwritableCommand(handlerId, description) {\r\n registerCommand(new EditorHandlerCommand('default:' + handlerId, handlerId));\r\n registerCommand(new EditorHandlerCommand(handlerId, handlerId, description));\r\n}\r\nregisterOverwritableCommand(\"type\" /* Type */, {\r\n description: `Type`,\r\n args: [{\r\n name: 'args',\r\n schema: {\r\n 'type': 'object',\r\n 'required': ['text'],\r\n 'properties': {\r\n 'text': {\r\n 'type': 'string'\r\n }\r\n },\r\n }\r\n }]\r\n});\r\nregisterOverwritableCommand(\"replacePreviousChar\" /* ReplacePreviousChar */);\r\nregisterOverwritableCommand(\"compositionStart\" /* CompositionStart */);\r\nregisterOverwritableCommand(\"compositionEnd\" /* CompositionEnd */);\r\nregisterOverwritableCommand(\"paste\" /* Paste */);\r\nregisterOverwritableCommand(\"cut\" /* Cut */);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { StandardWheelEvent } from '../../../base/browser/mouseEvent.js';\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { HitTestContext, MouseTarget, MouseTargetFactory } from './mouseTarget.js';\r\nimport { ClientCoordinates, EditorMouseEventFactory, GlobalEditorMouseMoveMonitor, createEditorPagePosition } from '../editorDom.js';\r\nimport { EditorZoom } from '../../common/config/editorZoom.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { ViewEventHandler } from '../../common/viewModel/viewEventHandler.js';\r\n/**\r\n * Merges mouse events when mouse move events are throttled\r\n */\r\nexport function createMouseMoveEventMerger(mouseTargetFactory) {\r\n return function (lastEvent, currentEvent) {\r\n let targetIsWidget = false;\r\n if (mouseTargetFactory) {\r\n targetIsWidget = mouseTargetFactory.mouseTargetIsWidget(currentEvent);\r\n }\r\n if (!targetIsWidget) {\r\n currentEvent.preventDefault();\r\n }\r\n return currentEvent;\r\n };\r\n}\r\nexport class MouseHandler extends ViewEventHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super();\r\n this._context = context;\r\n this.viewController = viewController;\r\n this.viewHelper = viewHelper;\r\n this.mouseTargetFactory = new MouseTargetFactory(this._context, viewHelper);\r\n this._mouseDownOperation = this._register(new MouseDownOperation(this._context, this.viewController, this.viewHelper, (e, testEventTarget) => this._createMouseTarget(e, testEventTarget), (e) => this._getMouseColumn(e)));\r\n this.lastMouseLeaveTime = -1;\r\n const mouseEvents = new EditorMouseEventFactory(this.viewHelper.viewDomNode);\r\n this._register(mouseEvents.onContextMenu(this.viewHelper.viewDomNode, (e) => this._onContextMenu(e, true)));\r\n this._register(mouseEvents.onMouseMoveThrottled(this.viewHelper.viewDomNode, (e) => this._onMouseMove(e), createMouseMoveEventMerger(this.mouseTargetFactory), MouseHandler.MOUSE_MOVE_MINIMUM_TIME));\r\n this._register(mouseEvents.onMouseUp(this.viewHelper.viewDomNode, (e) => this._onMouseUp(e)));\r\n this._register(mouseEvents.onMouseLeave(this.viewHelper.viewDomNode, (e) => this._onMouseLeave(e)));\r\n this._register(mouseEvents.onMouseDown(this.viewHelper.viewDomNode, (e) => this._onMouseDown(e)));\r\n const onMouseWheel = (browserEvent) => {\r\n this.viewController.emitMouseWheel(browserEvent);\r\n if (!this._context.configuration.options.get(59 /* mouseWheelZoom */)) {\r\n return;\r\n }\r\n const e = new StandardWheelEvent(browserEvent);\r\n if (e.browserEvent.ctrlKey || e.browserEvent.metaKey) {\r\n const zoomLevel = EditorZoom.getZoomLevel();\r\n const delta = e.deltaY > 0 ? 1 : -1;\r\n EditorZoom.setZoomLevel(zoomLevel + delta);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n };\r\n this._register(dom.addDisposableListener(this.viewHelper.viewDomNode, dom.EventType.MOUSE_WHEEL, onMouseWheel, { capture: true, passive: false }));\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onCursorStateChanged(e) {\r\n this._mouseDownOperation.onCursorStateChanged(e);\r\n return false;\r\n }\r\n onFocusChanged(e) {\r\n return false;\r\n }\r\n onScrollChanged(e) {\r\n this._mouseDownOperation.onScrollChanged();\r\n return false;\r\n }\r\n // --- end event handlers\r\n getTargetAtClientPoint(clientX, clientY) {\r\n const clientPos = new ClientCoordinates(clientX, clientY);\r\n const pos = clientPos.toPageCoordinates();\r\n const editorPos = createEditorPagePosition(this.viewHelper.viewDomNode);\r\n if (pos.y < editorPos.y || pos.y > editorPos.y + editorPos.height || pos.x < editorPos.x || pos.x > editorPos.x + editorPos.width) {\r\n return null;\r\n }\r\n return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), editorPos, pos, null);\r\n }\r\n _createMouseTarget(e, testEventTarget) {\r\n return this.mouseTargetFactory.createMouseTarget(this.viewHelper.getLastRenderData(), e.editorPos, e.pos, testEventTarget ? e.target : null);\r\n }\r\n _getMouseColumn(e) {\r\n return this.mouseTargetFactory.getMouseColumn(e.editorPos, e.pos);\r\n }\r\n _onContextMenu(e, testEventTarget) {\r\n this.viewController.emitContextMenu({\r\n event: e,\r\n target: this._createMouseTarget(e, testEventTarget)\r\n });\r\n }\r\n _onMouseMove(e) {\r\n if (this._mouseDownOperation.isActive()) {\r\n // In selection/drag operation\r\n return;\r\n }\r\n const actualMouseMoveTime = e.timestamp;\r\n if (actualMouseMoveTime < this.lastMouseLeaveTime) {\r\n // Due to throttling, this event occurred before the mouse left the editor, therefore ignore it.\r\n return;\r\n }\r\n this.viewController.emitMouseMove({\r\n event: e,\r\n target: this._createMouseTarget(e, true)\r\n });\r\n }\r\n _onMouseLeave(e) {\r\n this.lastMouseLeaveTime = (new Date()).getTime();\r\n this.viewController.emitMouseLeave({\r\n event: e,\r\n target: null\r\n });\r\n }\r\n _onMouseUp(e) {\r\n this.viewController.emitMouseUp({\r\n event: e,\r\n target: this._createMouseTarget(e, true)\r\n });\r\n }\r\n _onMouseDown(e) {\r\n const t = this._createMouseTarget(e, true);\r\n const targetIsContent = (t.type === 6 /* CONTENT_TEXT */ || t.type === 7 /* CONTENT_EMPTY */);\r\n const targetIsGutter = (t.type === 2 /* GUTTER_GLYPH_MARGIN */ || t.type === 3 /* GUTTER_LINE_NUMBERS */ || t.type === 4 /* GUTTER_LINE_DECORATIONS */);\r\n const targetIsLineNumbers = (t.type === 3 /* GUTTER_LINE_NUMBERS */);\r\n const selectOnLineNumbers = this._context.configuration.options.get(90 /* selectOnLineNumbers */);\r\n const targetIsViewZone = (t.type === 8 /* CONTENT_VIEW_ZONE */ || t.type === 5 /* GUTTER_VIEW_ZONE */);\r\n const targetIsWidget = (t.type === 9 /* CONTENT_WIDGET */);\r\n let shouldHandle = e.leftButton || e.middleButton;\r\n if (platform.isMacintosh && e.leftButton && e.ctrlKey) {\r\n shouldHandle = false;\r\n }\r\n const focus = () => {\r\n e.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n };\r\n if (shouldHandle && (targetIsContent || (targetIsLineNumbers && selectOnLineNumbers))) {\r\n focus();\r\n this._mouseDownOperation.start(t.type, e);\r\n }\r\n else if (targetIsGutter) {\r\n // Do not steal focus\r\n e.preventDefault();\r\n }\r\n else if (targetIsViewZone) {\r\n const viewZoneData = t.detail;\r\n if (this.viewHelper.shouldSuppressMouseDownOnViewZone(viewZoneData.viewZoneId)) {\r\n focus();\r\n this._mouseDownOperation.start(t.type, e);\r\n e.preventDefault();\r\n }\r\n }\r\n else if (targetIsWidget && this.viewHelper.shouldSuppressMouseDownOnWidget(t.detail)) {\r\n focus();\r\n e.preventDefault();\r\n }\r\n this.viewController.emitMouseDown({\r\n event: e,\r\n target: t\r\n });\r\n }\r\n}\r\nMouseHandler.MOUSE_MOVE_MINIMUM_TIME = 100; // ms\r\nclass MouseDownOperation extends Disposable {\r\n constructor(context, viewController, viewHelper, createMouseTarget, getMouseColumn) {\r\n super();\r\n this._context = context;\r\n this._viewController = viewController;\r\n this._viewHelper = viewHelper;\r\n this._createMouseTarget = createMouseTarget;\r\n this._getMouseColumn = getMouseColumn;\r\n this._mouseMoveMonitor = this._register(new GlobalEditorMouseMoveMonitor(this._viewHelper.viewDomNode));\r\n this._onScrollTimeout = this._register(new TimeoutTimer());\r\n this._mouseState = new MouseDownState();\r\n this._currentSelection = new Selection(1, 1, 1, 1);\r\n this._isActive = false;\r\n this._lastMouseEvent = null;\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n isActive() {\r\n return this._isActive;\r\n }\r\n _onMouseDownThenMove(e) {\r\n this._lastMouseEvent = e;\r\n this._mouseState.setModifiers(e);\r\n const position = this._findMousePosition(e, true);\r\n if (!position) {\r\n // Ignoring because position is unknown\r\n return;\r\n }\r\n if (this._mouseState.isDragAndDrop) {\r\n this._viewController.emitMouseDrag({\r\n event: e,\r\n target: position\r\n });\r\n }\r\n else {\r\n this._dispatchMouse(position, true);\r\n }\r\n }\r\n start(targetType, e) {\r\n this._lastMouseEvent = e;\r\n this._mouseState.setStartedOnLineNumbers(targetType === 3 /* GUTTER_LINE_NUMBERS */);\r\n this._mouseState.setStartButtons(e);\r\n this._mouseState.setModifiers(e);\r\n const position = this._findMousePosition(e, true);\r\n if (!position || !position.position) {\r\n // Ignoring because position is unknown\r\n return;\r\n }\r\n this._mouseState.trySetCount(e.detail, position.position);\r\n // Overwrite the detail of the MouseEvent, as it will be sent out in an event and contributions might rely on it.\r\n e.detail = this._mouseState.count;\r\n const options = this._context.configuration.options;\r\n if (!options.get(72 /* readOnly */)\r\n && options.get(25 /* dragAndDrop */)\r\n && !options.get(13 /* columnSelection */)\r\n && !this._mouseState.altKey // we don't support multiple mouse\r\n && e.detail < 2 // only single click on a selection can work\r\n && !this._isActive // the mouse is not down yet\r\n && !this._currentSelection.isEmpty() // we don't drag single cursor\r\n && (position.type === 6 /* CONTENT_TEXT */) // single click on text\r\n && position.position && this._currentSelection.containsPosition(position.position) // single click on a selection\r\n ) {\r\n this._mouseState.isDragAndDrop = true;\r\n this._isActive = true;\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, createMouseMoveEventMerger(null), (e) => this._onMouseDownThenMove(e), () => {\r\n const position = this._findMousePosition(this._lastMouseEvent, true);\r\n this._viewController.emitMouseDrop({\r\n event: this._lastMouseEvent,\r\n target: (position ? this._createMouseTarget(this._lastMouseEvent, true) : null) // Ignoring because position is unknown, e.g., Content View Zone\r\n });\r\n this._stop();\r\n });\r\n return;\r\n }\r\n this._mouseState.isDragAndDrop = false;\r\n this._dispatchMouse(position, e.shiftKey);\r\n if (!this._isActive) {\r\n this._isActive = true;\r\n this._mouseMoveMonitor.startMonitoring(e.target, e.buttons, createMouseMoveEventMerger(null), (e) => this._onMouseDownThenMove(e), () => this._stop());\r\n }\r\n }\r\n _stop() {\r\n this._isActive = false;\r\n this._onScrollTimeout.cancel();\r\n }\r\n onScrollChanged() {\r\n if (!this._isActive) {\r\n return;\r\n }\r\n this._onScrollTimeout.setIfNotSet(() => {\r\n if (!this._lastMouseEvent) {\r\n return;\r\n }\r\n const position = this._findMousePosition(this._lastMouseEvent, false);\r\n if (!position) {\r\n // Ignoring because position is unknown\r\n return;\r\n }\r\n if (this._mouseState.isDragAndDrop) {\r\n // Ignoring because users are dragging the text\r\n return;\r\n }\r\n this._dispatchMouse(position, true);\r\n }, 10);\r\n }\r\n onCursorStateChanged(e) {\r\n this._currentSelection = e.selections[0];\r\n }\r\n _getPositionOutsideEditor(e) {\r\n const editorContent = e.editorPos;\r\n const model = this._context.model;\r\n const viewLayout = this._context.viewLayout;\r\n const mouseColumn = this._getMouseColumn(e);\r\n if (e.posy < editorContent.y) {\r\n const verticalOffset = Math.max(viewLayout.getCurrentScrollTop() - (editorContent.y - e.posy), 0);\r\n const viewZoneData = HitTestContext.getZoneAtCoord(this._context, verticalOffset);\r\n if (viewZoneData) {\r\n const newPosition = this._helpPositionJumpOverViewZone(viewZoneData);\r\n if (newPosition) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, newPosition);\r\n }\r\n }\r\n const aboveLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset);\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(aboveLineNumber, 1));\r\n }\r\n if (e.posy > editorContent.y + editorContent.height) {\r\n const verticalOffset = viewLayout.getCurrentScrollTop() + (e.posy - editorContent.y);\r\n const viewZoneData = HitTestContext.getZoneAtCoord(this._context, verticalOffset);\r\n if (viewZoneData) {\r\n const newPosition = this._helpPositionJumpOverViewZone(viewZoneData);\r\n if (newPosition) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, newPosition);\r\n }\r\n }\r\n const belowLineNumber = viewLayout.getLineNumberAtVerticalOffset(verticalOffset);\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(belowLineNumber, model.getLineMaxColumn(belowLineNumber)));\r\n }\r\n const possibleLineNumber = viewLayout.getLineNumberAtVerticalOffset(viewLayout.getCurrentScrollTop() + (e.posy - editorContent.y));\r\n if (e.posx < editorContent.x) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(possibleLineNumber, 1));\r\n }\r\n if (e.posx > editorContent.x + editorContent.width) {\r\n return new MouseTarget(null, 13 /* OUTSIDE_EDITOR */, mouseColumn, new Position(possibleLineNumber, model.getLineMaxColumn(possibleLineNumber)));\r\n }\r\n return null;\r\n }\r\n _findMousePosition(e, testEventTarget) {\r\n const positionOutsideEditor = this._getPositionOutsideEditor(e);\r\n if (positionOutsideEditor) {\r\n return positionOutsideEditor;\r\n }\r\n const t = this._createMouseTarget(e, testEventTarget);\r\n const hintedPosition = t.position;\r\n if (!hintedPosition) {\r\n return null;\r\n }\r\n if (t.type === 8 /* CONTENT_VIEW_ZONE */ || t.type === 5 /* GUTTER_VIEW_ZONE */) {\r\n const newPosition = this._helpPositionJumpOverViewZone(t.detail);\r\n if (newPosition) {\r\n return new MouseTarget(t.element, t.type, t.mouseColumn, newPosition, null, t.detail);\r\n }\r\n }\r\n return t;\r\n }\r\n _helpPositionJumpOverViewZone(viewZoneData) {\r\n // Force position on view zones to go above or below depending on where selection started from\r\n const selectionStart = new Position(this._currentSelection.selectionStartLineNumber, this._currentSelection.selectionStartColumn);\r\n const positionBefore = viewZoneData.positionBefore;\r\n const positionAfter = viewZoneData.positionAfter;\r\n if (positionBefore && positionAfter) {\r\n if (positionBefore.isBefore(selectionStart)) {\r\n return positionBefore;\r\n }\r\n else {\r\n return positionAfter;\r\n }\r\n }\r\n return null;\r\n }\r\n _dispatchMouse(position, inSelectionMode) {\r\n if (!position.position) {\r\n return;\r\n }\r\n this._viewController.dispatchMouse({\r\n position: position.position,\r\n mouseColumn: position.mouseColumn,\r\n startedOnLineNumbers: this._mouseState.startedOnLineNumbers,\r\n inSelectionMode: inSelectionMode,\r\n mouseDownCount: this._mouseState.count,\r\n altKey: this._mouseState.altKey,\r\n ctrlKey: this._mouseState.ctrlKey,\r\n metaKey: this._mouseState.metaKey,\r\n shiftKey: this._mouseState.shiftKey,\r\n leftButton: this._mouseState.leftButton,\r\n middleButton: this._mouseState.middleButton,\r\n });\r\n }\r\n}\r\nclass MouseDownState {\r\n constructor() {\r\n this._altKey = false;\r\n this._ctrlKey = false;\r\n this._metaKey = false;\r\n this._shiftKey = false;\r\n this._leftButton = false;\r\n this._middleButton = false;\r\n this._startedOnLineNumbers = false;\r\n this._lastMouseDownPosition = null;\r\n this._lastMouseDownPositionEqualCount = 0;\r\n this._lastMouseDownCount = 0;\r\n this._lastSetMouseDownCountTime = 0;\r\n this.isDragAndDrop = false;\r\n }\r\n get altKey() { return this._altKey; }\r\n get ctrlKey() { return this._ctrlKey; }\r\n get metaKey() { return this._metaKey; }\r\n get shiftKey() { return this._shiftKey; }\r\n get leftButton() { return this._leftButton; }\r\n get middleButton() { return this._middleButton; }\r\n get startedOnLineNumbers() { return this._startedOnLineNumbers; }\r\n get count() {\r\n return this._lastMouseDownCount;\r\n }\r\n setModifiers(source) {\r\n this._altKey = source.altKey;\r\n this._ctrlKey = source.ctrlKey;\r\n this._metaKey = source.metaKey;\r\n this._shiftKey = source.shiftKey;\r\n }\r\n setStartButtons(source) {\r\n this._leftButton = source.leftButton;\r\n this._middleButton = source.middleButton;\r\n }\r\n setStartedOnLineNumbers(startedOnLineNumbers) {\r\n this._startedOnLineNumbers = startedOnLineNumbers;\r\n }\r\n trySetCount(setMouseDownCount, newMouseDownPosition) {\r\n // a. Invalidate multiple clicking if too much time has passed (will be hit by IE because the detail field of mouse events contains garbage in IE10)\r\n const currentTime = (new Date()).getTime();\r\n if (currentTime - this._lastSetMouseDownCountTime > MouseDownState.CLEAR_MOUSE_DOWN_COUNT_TIME) {\r\n setMouseDownCount = 1;\r\n }\r\n this._lastSetMouseDownCountTime = currentTime;\r\n // b. Ensure that we don't jump from single click to triple click in one go (will be hit by IE because the detail field of mouse events contains garbage in IE10)\r\n if (setMouseDownCount > this._lastMouseDownCount + 1) {\r\n setMouseDownCount = this._lastMouseDownCount + 1;\r\n }\r\n // c. Invalidate multiple clicking if the logical position is different\r\n if (this._lastMouseDownPosition && this._lastMouseDownPosition.equals(newMouseDownPosition)) {\r\n this._lastMouseDownPositionEqualCount++;\r\n }\r\n else {\r\n this._lastMouseDownPositionEqualCount = 1;\r\n }\r\n this._lastMouseDownPosition = newMouseDownPosition;\r\n // Finally set the lastMouseDownCount\r\n this._lastMouseDownCount = Math.min(setMouseDownCount, this._lastMouseDownPositionEqualCount);\r\n }\r\n}\r\nMouseDownState.CLEAR_MOUSE_DOWN_COUNT_TIME = 400; // ms\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport { PageCoordinates } from '../editorDom.js';\r\nimport { PartFingerprints } from '../view/viewPart.js';\r\nimport { ViewLine } from '../viewParts/lines/viewLine.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range as EditorRange } from '../../common/core/range.js';\r\nimport { CursorColumns } from '../../common/controller/cursorCommon.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nexport class PointerHandlerLastRenderData {\r\n constructor(lastViewCursorsRenderData, lastTextareaPosition) {\r\n this.lastViewCursorsRenderData = lastViewCursorsRenderData;\r\n this.lastTextareaPosition = lastTextareaPosition;\r\n }\r\n}\r\nexport class MouseTarget {\r\n constructor(element, type, mouseColumn = 0, position = null, range = null, detail = null) {\r\n this.element = element;\r\n this.type = type;\r\n this.mouseColumn = mouseColumn;\r\n this.position = position;\r\n if (!range && position) {\r\n range = new EditorRange(position.lineNumber, position.column, position.lineNumber, position.column);\r\n }\r\n this.range = range;\r\n this.detail = detail;\r\n }\r\n static _typeToString(type) {\r\n if (type === 1 /* TEXTAREA */) {\r\n return 'TEXTAREA';\r\n }\r\n if (type === 2 /* GUTTER_GLYPH_MARGIN */) {\r\n return 'GUTTER_GLYPH_MARGIN';\r\n }\r\n if (type === 3 /* GUTTER_LINE_NUMBERS */) {\r\n return 'GUTTER_LINE_NUMBERS';\r\n }\r\n if (type === 4 /* GUTTER_LINE_DECORATIONS */) {\r\n return 'GUTTER_LINE_DECORATIONS';\r\n }\r\n if (type === 5 /* GUTTER_VIEW_ZONE */) {\r\n return 'GUTTER_VIEW_ZONE';\r\n }\r\n if (type === 6 /* CONTENT_TEXT */) {\r\n return 'CONTENT_TEXT';\r\n }\r\n if (type === 7 /* CONTENT_EMPTY */) {\r\n return 'CONTENT_EMPTY';\r\n }\r\n if (type === 8 /* CONTENT_VIEW_ZONE */) {\r\n return 'CONTENT_VIEW_ZONE';\r\n }\r\n if (type === 9 /* CONTENT_WIDGET */) {\r\n return 'CONTENT_WIDGET';\r\n }\r\n if (type === 10 /* OVERVIEW_RULER */) {\r\n return 'OVERVIEW_RULER';\r\n }\r\n if (type === 11 /* SCROLLBAR */) {\r\n return 'SCROLLBAR';\r\n }\r\n if (type === 12 /* OVERLAY_WIDGET */) {\r\n return 'OVERLAY_WIDGET';\r\n }\r\n return 'UNKNOWN';\r\n }\r\n static toString(target) {\r\n return this._typeToString(target.type) + ': ' + target.position + ' - ' + target.range + ' - ' + target.detail;\r\n }\r\n toString() {\r\n return MouseTarget.toString(this);\r\n }\r\n}\r\nclass ElementPath {\r\n static isTextArea(path) {\r\n return (path.length === 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 6 /* TextArea */);\r\n }\r\n static isChildOfViewLines(path) {\r\n return (path.length >= 4\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[3] === 7 /* ViewLines */);\r\n }\r\n static isStrictChildOfViewLines(path) {\r\n return (path.length > 4\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[3] === 7 /* ViewLines */);\r\n }\r\n static isChildOfScrollableElement(path) {\r\n return (path.length >= 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 5 /* ScrollableElement */);\r\n }\r\n static isChildOfMinimap(path) {\r\n return (path.length >= 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 8 /* Minimap */);\r\n }\r\n static isChildOfContentWidgets(path) {\r\n return (path.length >= 4\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[3] === 1 /* ContentWidgets */);\r\n }\r\n static isChildOfOverflowingContentWidgets(path) {\r\n return (path.length >= 1\r\n && path[0] === 2 /* OverflowingContentWidgets */);\r\n }\r\n static isChildOfOverlayWidgets(path) {\r\n return (path.length >= 2\r\n && path[0] === 3 /* OverflowGuard */\r\n && path[1] === 4 /* OverlayWidgets */);\r\n }\r\n}\r\nexport class HitTestContext {\r\n constructor(context, viewHelper, lastRenderData) {\r\n this.model = context.model;\r\n const options = context.configuration.options;\r\n this.layoutInfo = options.get(117 /* layoutInfo */);\r\n this.viewDomNode = viewHelper.viewDomNode;\r\n this.lineHeight = options.get(51 /* lineHeight */);\r\n this.typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n this.lastRenderData = lastRenderData;\r\n this._context = context;\r\n this._viewHelper = viewHelper;\r\n }\r\n getZoneAtCoord(mouseVerticalOffset) {\r\n return HitTestContext.getZoneAtCoord(this._context, mouseVerticalOffset);\r\n }\r\n static getZoneAtCoord(context, mouseVerticalOffset) {\r\n // The target is either a view zone or the empty space after the last view-line\r\n const viewZoneWhitespace = context.viewLayout.getWhitespaceAtVerticalOffset(mouseVerticalOffset);\r\n if (viewZoneWhitespace) {\r\n let viewZoneMiddle = viewZoneWhitespace.verticalOffset + viewZoneWhitespace.height / 2, lineCount = context.model.getLineCount(), positionBefore = null, position, positionAfter = null;\r\n if (viewZoneWhitespace.afterLineNumber !== lineCount) {\r\n // There are more lines after this view zone\r\n positionAfter = new Position(viewZoneWhitespace.afterLineNumber + 1, 1);\r\n }\r\n if (viewZoneWhitespace.afterLineNumber > 0) {\r\n // There are more lines above this view zone\r\n positionBefore = new Position(viewZoneWhitespace.afterLineNumber, context.model.getLineMaxColumn(viewZoneWhitespace.afterLineNumber));\r\n }\r\n if (positionAfter === null) {\r\n position = positionBefore;\r\n }\r\n else if (positionBefore === null) {\r\n position = positionAfter;\r\n }\r\n else if (mouseVerticalOffset < viewZoneMiddle) {\r\n position = positionBefore;\r\n }\r\n else {\r\n position = positionAfter;\r\n }\r\n return {\r\n viewZoneId: viewZoneWhitespace.id,\r\n afterLineNumber: viewZoneWhitespace.afterLineNumber,\r\n positionBefore: positionBefore,\r\n positionAfter: positionAfter,\r\n position: position\r\n };\r\n }\r\n return null;\r\n }\r\n getFullLineRangeAtCoord(mouseVerticalOffset) {\r\n if (this._context.viewLayout.isAfterLines(mouseVerticalOffset)) {\r\n // Below the last line\r\n const lineNumber = this._context.model.getLineCount();\r\n const maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);\r\n return {\r\n range: new EditorRange(lineNumber, maxLineColumn, lineNumber, maxLineColumn),\r\n isAfterLines: true\r\n };\r\n }\r\n const lineNumber = this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);\r\n const maxLineColumn = this._context.model.getLineMaxColumn(lineNumber);\r\n return {\r\n range: new EditorRange(lineNumber, 1, lineNumber, maxLineColumn),\r\n isAfterLines: false\r\n };\r\n }\r\n getLineNumberAtVerticalOffset(mouseVerticalOffset) {\r\n return this._context.viewLayout.getLineNumberAtVerticalOffset(mouseVerticalOffset);\r\n }\r\n isAfterLines(mouseVerticalOffset) {\r\n return this._context.viewLayout.isAfterLines(mouseVerticalOffset);\r\n }\r\n getVerticalOffsetForLineNumber(lineNumber) {\r\n return this._context.viewLayout.getVerticalOffsetForLineNumber(lineNumber);\r\n }\r\n findAttribute(element, attr) {\r\n return HitTestContext._findAttribute(element, attr, this._viewHelper.viewDomNode);\r\n }\r\n static _findAttribute(element, attr, stopAt) {\r\n while (element && element !== document.body) {\r\n if (element.hasAttribute && element.hasAttribute(attr)) {\r\n return element.getAttribute(attr);\r\n }\r\n if (element === stopAt) {\r\n return null;\r\n }\r\n element = element.parentNode;\r\n }\r\n return null;\r\n }\r\n getLineWidth(lineNumber) {\r\n return this._viewHelper.getLineWidth(lineNumber);\r\n }\r\n visibleRangeForPosition(lineNumber, column) {\r\n return this._viewHelper.visibleRangeForPosition(lineNumber, column);\r\n }\r\n getPositionFromDOMInfo(spanNode, offset) {\r\n return this._viewHelper.getPositionFromDOMInfo(spanNode, offset);\r\n }\r\n getCurrentScrollTop() {\r\n return this._context.viewLayout.getCurrentScrollTop();\r\n }\r\n getCurrentScrollLeft() {\r\n return this._context.viewLayout.getCurrentScrollLeft();\r\n }\r\n}\r\nclass BareHitTestRequest {\r\n constructor(ctx, editorPos, pos) {\r\n this.editorPos = editorPos;\r\n this.pos = pos;\r\n this.mouseVerticalOffset = Math.max(0, ctx.getCurrentScrollTop() + pos.y - editorPos.y);\r\n this.mouseContentHorizontalOffset = ctx.getCurrentScrollLeft() + pos.x - editorPos.x - ctx.layoutInfo.contentLeft;\r\n this.isInMarginArea = (pos.x - editorPos.x < ctx.layoutInfo.contentLeft && pos.x - editorPos.x >= ctx.layoutInfo.glyphMarginLeft);\r\n this.isInContentArea = !this.isInMarginArea;\r\n this.mouseColumn = Math.max(0, MouseTargetFactory._getMouseColumn(this.mouseContentHorizontalOffset, ctx.typicalHalfwidthCharacterWidth));\r\n }\r\n}\r\nclass HitTestRequest extends BareHitTestRequest {\r\n constructor(ctx, editorPos, pos, target) {\r\n super(ctx, editorPos, pos);\r\n this._ctx = ctx;\r\n if (target) {\r\n this.target = target;\r\n this.targetPath = PartFingerprints.collect(target, ctx.viewDomNode);\r\n }\r\n else {\r\n this.target = null;\r\n this.targetPath = new Uint8Array(0);\r\n }\r\n }\r\n toString() {\r\n return `pos(${this.pos.x},${this.pos.y}), editorPos(${this.editorPos.x},${this.editorPos.y}), mouseVerticalOffset: ${this.mouseVerticalOffset}, mouseContentHorizontalOffset: ${this.mouseContentHorizontalOffset}\\n\\ttarget: ${this.target ? this.target.outerHTML : null}`;\r\n }\r\n fulfill(type, position = null, range = null, detail = null) {\r\n let mouseColumn = this.mouseColumn;\r\n if (position && position.column < this._ctx.model.getLineMaxColumn(position.lineNumber)) {\r\n // Most likely, the line contains foreign decorations...\r\n mouseColumn = CursorColumns.visibleColumnFromColumn(this._ctx.model.getLineContent(position.lineNumber), position.column, this._ctx.model.getTextModelOptions().tabSize) + 1;\r\n }\r\n return new MouseTarget(this.target, type, mouseColumn, position, range, detail);\r\n }\r\n withTarget(target) {\r\n return new HitTestRequest(this._ctx, this.editorPos, this.pos, target);\r\n }\r\n}\r\nconst EMPTY_CONTENT_AFTER_LINES = { isAfterLines: true };\r\nfunction createEmptyContentDataInLines(horizontalDistanceToText) {\r\n return {\r\n isAfterLines: false,\r\n horizontalDistanceToText: horizontalDistanceToText\r\n };\r\n}\r\nexport class MouseTargetFactory {\r\n constructor(context, viewHelper) {\r\n this._context = context;\r\n this._viewHelper = viewHelper;\r\n }\r\n mouseTargetIsWidget(e) {\r\n const t = e.target;\r\n const path = PartFingerprints.collect(t, this._viewHelper.viewDomNode);\r\n // Is it a content widget?\r\n if (ElementPath.isChildOfContentWidgets(path) || ElementPath.isChildOfOverflowingContentWidgets(path)) {\r\n return true;\r\n }\r\n // Is it an overlay widget?\r\n if (ElementPath.isChildOfOverlayWidgets(path)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n createMouseTarget(lastRenderData, editorPos, pos, target) {\r\n const ctx = new HitTestContext(this._context, this._viewHelper, lastRenderData);\r\n const request = new HitTestRequest(ctx, editorPos, pos, target);\r\n try {\r\n const r = MouseTargetFactory._createMouseTarget(ctx, request, false);\r\n // console.log(r.toString());\r\n return r;\r\n }\r\n catch (err) {\r\n // console.log(err);\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n }\r\n static _createMouseTarget(ctx, request, domHitTestExecuted) {\r\n // console.log(`${domHitTestExecuted ? '=>' : ''}CAME IN REQUEST: ${request}`);\r\n // First ensure the request has a target\r\n if (request.target === null) {\r\n if (domHitTestExecuted) {\r\n // Still no target... and we have already executed hit test...\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n const hitTestResult = MouseTargetFactory._doHitTest(ctx, request);\r\n if (hitTestResult.position) {\r\n return MouseTargetFactory.createMouseTargetFromHitTestPosition(ctx, request, hitTestResult.position.lineNumber, hitTestResult.position.column);\r\n }\r\n return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);\r\n }\r\n // we know for a fact that request.target is not null\r\n const resolvedRequest = request;\r\n let result = null;\r\n result = result || MouseTargetFactory._hitTestContentWidget(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestOverlayWidget(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestMinimap(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestScrollbarSlider(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestViewZone(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestMargin(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestViewCursor(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestTextArea(ctx, resolvedRequest);\r\n result = result || MouseTargetFactory._hitTestViewLines(ctx, resolvedRequest, domHitTestExecuted);\r\n result = result || MouseTargetFactory._hitTestScrollbar(ctx, resolvedRequest);\r\n return (result || request.fulfill(0 /* UNKNOWN */));\r\n }\r\n static _hitTestContentWidget(ctx, request) {\r\n // Is it a content widget?\r\n if (ElementPath.isChildOfContentWidgets(request.targetPath) || ElementPath.isChildOfOverflowingContentWidgets(request.targetPath)) {\r\n const widgetId = ctx.findAttribute(request.target, 'widgetId');\r\n if (widgetId) {\r\n return request.fulfill(9 /* CONTENT_WIDGET */, null, null, widgetId);\r\n }\r\n else {\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestOverlayWidget(ctx, request) {\r\n // Is it an overlay widget?\r\n if (ElementPath.isChildOfOverlayWidgets(request.targetPath)) {\r\n const widgetId = ctx.findAttribute(request.target, 'widgetId');\r\n if (widgetId) {\r\n return request.fulfill(12 /* OVERLAY_WIDGET */, null, null, widgetId);\r\n }\r\n else {\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestViewCursor(ctx, request) {\r\n if (request.target) {\r\n // Check if we've hit a painted cursor\r\n const lastViewCursorsRenderData = ctx.lastRenderData.lastViewCursorsRenderData;\r\n for (const d of lastViewCursorsRenderData) {\r\n if (request.target === d.domNode) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, d.position);\r\n }\r\n }\r\n }\r\n if (request.isInContentArea) {\r\n // Edge has a bug when hit-testing the exact position of a cursor,\r\n // instead of returning the correct dom node, it returns the\r\n // first or last rendered view line dom node, therefore help it out\r\n // and first check if we are on top of a cursor\r\n const lastViewCursorsRenderData = ctx.lastRenderData.lastViewCursorsRenderData;\r\n const mouseContentHorizontalOffset = request.mouseContentHorizontalOffset;\r\n const mouseVerticalOffset = request.mouseVerticalOffset;\r\n for (const d of lastViewCursorsRenderData) {\r\n if (mouseContentHorizontalOffset < d.contentLeft) {\r\n // mouse position is to the left of the cursor\r\n continue;\r\n }\r\n if (mouseContentHorizontalOffset > d.contentLeft + d.width) {\r\n // mouse position is to the right of the cursor\r\n continue;\r\n }\r\n const cursorVerticalOffset = ctx.getVerticalOffsetForLineNumber(d.position.lineNumber);\r\n if (cursorVerticalOffset <= mouseVerticalOffset\r\n && mouseVerticalOffset <= cursorVerticalOffset + d.height) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, d.position);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestViewZone(ctx, request) {\r\n const viewZoneData = ctx.getZoneAtCoord(request.mouseVerticalOffset);\r\n if (viewZoneData) {\r\n const mouseTargetType = (request.isInContentArea ? 8 /* CONTENT_VIEW_ZONE */ : 5 /* GUTTER_VIEW_ZONE */);\r\n return request.fulfill(mouseTargetType, viewZoneData.position, null, viewZoneData);\r\n }\r\n return null;\r\n }\r\n static _hitTestTextArea(ctx, request) {\r\n // Is it the textarea?\r\n if (ElementPath.isTextArea(request.targetPath)) {\r\n if (ctx.lastRenderData.lastTextareaPosition) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, ctx.lastRenderData.lastTextareaPosition);\r\n }\r\n return request.fulfill(1 /* TEXTAREA */, ctx.lastRenderData.lastTextareaPosition);\r\n }\r\n return null;\r\n }\r\n static _hitTestMargin(ctx, request) {\r\n if (request.isInMarginArea) {\r\n const res = ctx.getFullLineRangeAtCoord(request.mouseVerticalOffset);\r\n const pos = res.range.getStartPosition();\r\n let offset = Math.abs(request.pos.x - request.editorPos.x);\r\n const detail = {\r\n isAfterLines: res.isAfterLines,\r\n glyphMarginLeft: ctx.layoutInfo.glyphMarginLeft,\r\n glyphMarginWidth: ctx.layoutInfo.glyphMarginWidth,\r\n lineNumbersWidth: ctx.layoutInfo.lineNumbersWidth,\r\n offsetX: offset\r\n };\r\n offset -= ctx.layoutInfo.glyphMarginLeft;\r\n if (offset <= ctx.layoutInfo.glyphMarginWidth) {\r\n // On the glyph margin\r\n return request.fulfill(2 /* GUTTER_GLYPH_MARGIN */, pos, res.range, detail);\r\n }\r\n offset -= ctx.layoutInfo.glyphMarginWidth;\r\n if (offset <= ctx.layoutInfo.lineNumbersWidth) {\r\n // On the line numbers\r\n return request.fulfill(3 /* GUTTER_LINE_NUMBERS */, pos, res.range, detail);\r\n }\r\n offset -= ctx.layoutInfo.lineNumbersWidth;\r\n // On the line decorations\r\n return request.fulfill(4 /* GUTTER_LINE_DECORATIONS */, pos, res.range, detail);\r\n }\r\n return null;\r\n }\r\n static _hitTestViewLines(ctx, request, domHitTestExecuted) {\r\n if (!ElementPath.isChildOfViewLines(request.targetPath)) {\r\n return null;\r\n }\r\n // Check if it is below any lines and any view zones\r\n if (ctx.isAfterLines(request.mouseVerticalOffset)) {\r\n // This most likely indicates it happened after the last view-line\r\n const lineCount = ctx.model.getLineCount();\r\n const maxLineColumn = ctx.model.getLineMaxColumn(lineCount);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, new Position(lineCount, maxLineColumn), undefined, EMPTY_CONTENT_AFTER_LINES);\r\n }\r\n if (domHitTestExecuted) {\r\n // Check if we are hitting a view-line (can happen in the case of inline decorations on empty lines)\r\n // See https://github.com/Microsoft/vscode/issues/46942\r\n if (ElementPath.isStrictChildOfViewLines(request.targetPath)) {\r\n const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n if (ctx.model.getLineLength(lineNumber) === 0) {\r\n const lineWidth = ctx.getLineWidth(lineNumber);\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, new Position(lineNumber, 1), undefined, detail);\r\n }\r\n const lineWidth = ctx.getLineWidth(lineNumber);\r\n if (request.mouseContentHorizontalOffset >= lineWidth) {\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n const pos = new Position(lineNumber, ctx.model.getLineMaxColumn(lineNumber));\r\n return request.fulfill(7 /* CONTENT_EMPTY */, pos, undefined, detail);\r\n }\r\n }\r\n // We have already executed hit test...\r\n return request.fulfill(0 /* UNKNOWN */);\r\n }\r\n const hitTestResult = MouseTargetFactory._doHitTest(ctx, request);\r\n if (hitTestResult.position) {\r\n return MouseTargetFactory.createMouseTargetFromHitTestPosition(ctx, request, hitTestResult.position.lineNumber, hitTestResult.position.column);\r\n }\r\n return this._createMouseTarget(ctx, request.withTarget(hitTestResult.hitTarget), true);\r\n }\r\n static _hitTestMinimap(ctx, request) {\r\n if (ElementPath.isChildOfMinimap(request.targetPath)) {\r\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);\r\n return request.fulfill(11 /* SCROLLBAR */, new Position(possibleLineNumber, maxColumn));\r\n }\r\n return null;\r\n }\r\n static _hitTestScrollbarSlider(ctx, request) {\r\n if (ElementPath.isChildOfScrollableElement(request.targetPath)) {\r\n if (request.target && request.target.nodeType === 1) {\r\n const className = request.target.className;\r\n if (className && /\\b(slider|scrollbar)\\b/.test(className)) {\r\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);\r\n return request.fulfill(11 /* SCROLLBAR */, new Position(possibleLineNumber, maxColumn));\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _hitTestScrollbar(ctx, request) {\r\n // Is it the overview ruler?\r\n // Is it a child of the scrollable element?\r\n if (ElementPath.isChildOfScrollableElement(request.targetPath)) {\r\n const possibleLineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const maxColumn = ctx.model.getLineMaxColumn(possibleLineNumber);\r\n return request.fulfill(11 /* SCROLLBAR */, new Position(possibleLineNumber, maxColumn));\r\n }\r\n return null;\r\n }\r\n getMouseColumn(editorPos, pos) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const mouseContentHorizontalOffset = this._context.viewLayout.getCurrentScrollLeft() + pos.x - editorPos.x - layoutInfo.contentLeft;\r\n return MouseTargetFactory._getMouseColumn(mouseContentHorizontalOffset, options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth);\r\n }\r\n static _getMouseColumn(mouseContentHorizontalOffset, typicalHalfwidthCharacterWidth) {\r\n if (mouseContentHorizontalOffset < 0) {\r\n return 1;\r\n }\r\n const chars = Math.round(mouseContentHorizontalOffset / typicalHalfwidthCharacterWidth);\r\n return (chars + 1);\r\n }\r\n static createMouseTargetFromHitTestPosition(ctx, request, lineNumber, column) {\r\n const pos = new Position(lineNumber, column);\r\n const lineWidth = ctx.getLineWidth(lineNumber);\r\n if (request.mouseContentHorizontalOffset > lineWidth) {\r\n if (browser.isEdge && pos.column === 1) {\r\n // See https://github.com/Microsoft/vscode/issues/10875\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, new Position(lineNumber, ctx.model.getLineMaxColumn(lineNumber)), undefined, detail);\r\n }\r\n const detail = createEmptyContentDataInLines(request.mouseContentHorizontalOffset - lineWidth);\r\n return request.fulfill(7 /* CONTENT_EMPTY */, pos, undefined, detail);\r\n }\r\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column);\r\n if (!visibleRange) {\r\n return request.fulfill(0 /* UNKNOWN */, pos);\r\n }\r\n const columnHorizontalOffset = visibleRange.left;\r\n if (request.mouseContentHorizontalOffset === columnHorizontalOffset) {\r\n return request.fulfill(6 /* CONTENT_TEXT */, pos);\r\n }\r\n const points = [];\r\n points.push({ offset: visibleRange.left, column: column });\r\n if (column > 1) {\r\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column - 1);\r\n if (visibleRange) {\r\n points.push({ offset: visibleRange.left, column: column - 1 });\r\n }\r\n }\r\n const lineMaxColumn = ctx.model.getLineMaxColumn(lineNumber);\r\n if (column < lineMaxColumn) {\r\n const visibleRange = ctx.visibleRangeForPosition(lineNumber, column + 1);\r\n if (visibleRange) {\r\n points.push({ offset: visibleRange.left, column: column + 1 });\r\n }\r\n }\r\n points.sort((a, b) => a.offset - b.offset);\r\n for (let i = 1; i < points.length; i++) {\r\n const prev = points[i - 1];\r\n const curr = points[i];\r\n if (prev.offset <= request.mouseContentHorizontalOffset && request.mouseContentHorizontalOffset <= curr.offset) {\r\n const rng = new EditorRange(lineNumber, prev.column, lineNumber, curr.column);\r\n return request.fulfill(6 /* CONTENT_TEXT */, pos, rng);\r\n }\r\n }\r\n return request.fulfill(6 /* CONTENT_TEXT */, pos);\r\n }\r\n /**\r\n * Most probably WebKit browsers and Edge\r\n */\r\n static _doHitTestWithCaretRangeFromPoint(ctx, request) {\r\n // In Chrome, especially on Linux it is possible to click between lines,\r\n // so try to adjust the `hity` below so that it lands in the center of a line\r\n const lineNumber = ctx.getLineNumberAtVerticalOffset(request.mouseVerticalOffset);\r\n const lineVerticalOffset = ctx.getVerticalOffsetForLineNumber(lineNumber);\r\n const lineCenteredVerticalOffset = lineVerticalOffset + Math.floor(ctx.lineHeight / 2);\r\n let adjustedPageY = request.pos.y + (lineCenteredVerticalOffset - request.mouseVerticalOffset);\r\n if (adjustedPageY <= request.editorPos.y) {\r\n adjustedPageY = request.editorPos.y + 1;\r\n }\r\n if (adjustedPageY >= request.editorPos.y + ctx.layoutInfo.height) {\r\n adjustedPageY = request.editorPos.y + ctx.layoutInfo.height - 1;\r\n }\r\n const adjustedPage = new PageCoordinates(request.pos.x, adjustedPageY);\r\n const r = this._actualDoHitTestWithCaretRangeFromPoint(ctx, adjustedPage.toClientCoordinates());\r\n if (r.position) {\r\n return r;\r\n }\r\n // Also try to hit test without the adjustment (for the edge cases that we are near the top or bottom)\r\n return this._actualDoHitTestWithCaretRangeFromPoint(ctx, request.pos.toClientCoordinates());\r\n }\r\n static _actualDoHitTestWithCaretRangeFromPoint(ctx, coords) {\r\n const shadowRoot = dom.getShadowRoot(ctx.viewDomNode);\r\n let range;\r\n if (shadowRoot) {\r\n if (typeof shadowRoot.caretRangeFromPoint === 'undefined') {\r\n range = shadowCaretRangeFromPoint(shadowRoot, coords.clientX, coords.clientY);\r\n }\r\n else {\r\n range = shadowRoot.caretRangeFromPoint(coords.clientX, coords.clientY);\r\n }\r\n }\r\n else {\r\n range = document.caretRangeFromPoint(coords.clientX, coords.clientY);\r\n }\r\n if (!range || !range.startContainer) {\r\n return {\r\n position: null,\r\n hitTarget: null\r\n };\r\n }\r\n // Chrome always hits a TEXT_NODE, while Edge sometimes hits a token span\r\n const startContainer = range.startContainer;\r\n let hitTarget = null;\r\n if (startContainer.nodeType === startContainer.TEXT_NODE) {\r\n // startContainer is expected to be the token text\r\n const parent1 = startContainer.parentNode; // expected to be the token span\r\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span\r\n const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div\r\n const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? parent3.className : null;\r\n if (parent3ClassName === ViewLine.CLASS_NAME) {\r\n const p = ctx.getPositionFromDOMInfo(parent1, range.startOffset);\r\n return {\r\n position: p,\r\n hitTarget: null\r\n };\r\n }\r\n else {\r\n hitTarget = startContainer.parentNode;\r\n }\r\n }\r\n else if (startContainer.nodeType === startContainer.ELEMENT_NODE) {\r\n // startContainer is expected to be the token span\r\n const parent1 = startContainer.parentNode; // expected to be the view line container span\r\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line div\r\n const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? parent2.className : null;\r\n if (parent2ClassName === ViewLine.CLASS_NAME) {\r\n const p = ctx.getPositionFromDOMInfo(startContainer, startContainer.textContent.length);\r\n return {\r\n position: p,\r\n hitTarget: null\r\n };\r\n }\r\n else {\r\n hitTarget = startContainer;\r\n }\r\n }\r\n return {\r\n position: null,\r\n hitTarget: hitTarget\r\n };\r\n }\r\n /**\r\n * Most probably Gecko\r\n */\r\n static _doHitTestWithCaretPositionFromPoint(ctx, coords) {\r\n const hitResult = document.caretPositionFromPoint(coords.clientX, coords.clientY);\r\n if (hitResult.offsetNode.nodeType === hitResult.offsetNode.TEXT_NODE) {\r\n // offsetNode is expected to be the token text\r\n const parent1 = hitResult.offsetNode.parentNode; // expected to be the token span\r\n const parent2 = parent1 ? parent1.parentNode : null; // expected to be the view line container span\r\n const parent3 = parent2 ? parent2.parentNode : null; // expected to be the view line div\r\n const parent3ClassName = parent3 && parent3.nodeType === parent3.ELEMENT_NODE ? parent3.className : null;\r\n if (parent3ClassName === ViewLine.CLASS_NAME) {\r\n const p = ctx.getPositionFromDOMInfo(hitResult.offsetNode.parentNode, hitResult.offset);\r\n return {\r\n position: p,\r\n hitTarget: null\r\n };\r\n }\r\n else {\r\n return {\r\n position: null,\r\n hitTarget: hitResult.offsetNode.parentNode\r\n };\r\n }\r\n }\r\n // For inline decorations, Gecko returns the `<span>` of the line and the offset is the `<span>` with the inline decoration\r\n if (hitResult.offsetNode.nodeType === hitResult.offsetNode.ELEMENT_NODE) {\r\n const parent1 = hitResult.offsetNode.parentNode; // expected to be the view line div\r\n const parent1ClassName = parent1 && parent1.nodeType === parent1.ELEMENT_NODE ? parent1.className : null;\r\n if (parent1ClassName === ViewLine.CLASS_NAME) {\r\n const tokenSpan = hitResult.offsetNode.childNodes[Math.min(hitResult.offset, hitResult.offsetNode.childNodes.length - 1)];\r\n if (tokenSpan) {\r\n const p = ctx.getPositionFromDOMInfo(tokenSpan, 0);\r\n return {\r\n position: p,\r\n hitTarget: null\r\n };\r\n }\r\n }\r\n }\r\n return {\r\n position: null,\r\n hitTarget: hitResult.offsetNode\r\n };\r\n }\r\n /**\r\n * Most probably IE\r\n */\r\n static _doHitTestWithMoveToPoint(ctx, coords) {\r\n let resultPosition = null;\r\n let resultHitTarget = null;\r\n const textRange = document.body.createTextRange();\r\n try {\r\n textRange.moveToPoint(coords.clientX, coords.clientY);\r\n }\r\n catch (err) {\r\n return {\r\n position: null,\r\n hitTarget: null\r\n };\r\n }\r\n textRange.collapse(true);\r\n // Now, let's do our best to figure out what we hit :)\r\n const parentElement = textRange ? textRange.parentElement() : null;\r\n const parent1 = parentElement ? parentElement.parentNode : null;\r\n const parent2 = parent1 ? parent1.parentNode : null;\r\n const parent2ClassName = parent2 && parent2.nodeType === parent2.ELEMENT_NODE ? parent2.className : '';\r\n if (parent2ClassName === ViewLine.CLASS_NAME) {\r\n const rangeToContainEntireSpan = textRange.duplicate();\r\n rangeToContainEntireSpan.moveToElementText(parentElement);\r\n rangeToContainEntireSpan.setEndPoint('EndToStart', textRange);\r\n resultPosition = ctx.getPositionFromDOMInfo(parentElement, rangeToContainEntireSpan.text.length);\r\n // Move range out of the span node, IE doesn't like having many ranges in\r\n // the same spot and will act badly for lines containing dashes ('-')\r\n rangeToContainEntireSpan.moveToElementText(ctx.viewDomNode);\r\n }\r\n else {\r\n // Looks like we've hit the hover or something foreign\r\n resultHitTarget = parentElement;\r\n }\r\n // Move range out of the span node, IE doesn't like having many ranges in\r\n // the same spot and will act badly for lines containing dashes ('-')\r\n textRange.moveToElementText(ctx.viewDomNode);\r\n return {\r\n position: resultPosition,\r\n hitTarget: resultHitTarget\r\n };\r\n }\r\n static _doHitTest(ctx, request) {\r\n // State of the art (18.10.2012):\r\n // The spec says browsers should support document.caretPositionFromPoint, but nobody implemented it (http://dev.w3.org/csswg/cssom-view/)\r\n // Gecko:\r\n // - they tried to implement it once, but failed: https://bugzilla.mozilla.org/show_bug.cgi?id=654352\r\n // - however, they do give out rangeParent/rangeOffset properties on mouse events\r\n // Webkit:\r\n // - they have implemented a previous version of the spec which was using document.caretRangeFromPoint\r\n // IE:\r\n // - they have a proprietary method on ranges, moveToPoint: https://msdn.microsoft.com/en-us/library/ie/ms536632(v=vs.85).aspx\r\n // 24.08.2016: Edge has added WebKit's document.caretRangeFromPoint, but it is quite buggy\r\n // - when hit testing the cursor it returns the first or the last line in the viewport\r\n // - it inconsistently hits text nodes or span nodes, while WebKit only hits text nodes\r\n // - when toggling render whitespace on, and hit testing in the empty content after a line, it always hits offset 0 of the first span of the line\r\n // Thank you browsers for making this so 'easy' :)\r\n if (typeof document.caretRangeFromPoint === 'function') {\r\n return this._doHitTestWithCaretRangeFromPoint(ctx, request);\r\n }\r\n else if (document.caretPositionFromPoint) {\r\n return this._doHitTestWithCaretPositionFromPoint(ctx, request.pos.toClientCoordinates());\r\n }\r\n else if (document.body.createTextRange) {\r\n return this._doHitTestWithMoveToPoint(ctx, request.pos.toClientCoordinates());\r\n }\r\n return {\r\n position: null,\r\n hitTarget: null\r\n };\r\n }\r\n}\r\nexport function shadowCaretRangeFromPoint(shadowRoot, x, y) {\r\n const range = document.createRange();\r\n // Get the element under the point\r\n let el = shadowRoot.elementFromPoint(x, y);\r\n if (el !== null) {\r\n // Get the last child of the element until its firstChild is a text node\r\n // This assumes that the pointer is on the right of the line, out of the tokens\r\n // and that we want to get the offset of the last token of the line\r\n while (el && el.firstChild && el.firstChild.nodeType !== el.firstChild.TEXT_NODE) {\r\n el = el.lastChild;\r\n }\r\n // Grab its rect\r\n const rect = el.getBoundingClientRect();\r\n // And its font\r\n const font = window.getComputedStyle(el, null).getPropertyValue('font');\r\n // And also its txt content\r\n const text = el.innerText;\r\n // Position the pixel cursor at the left of the element\r\n let pixelCursor = rect.left;\r\n let offset = 0;\r\n let step;\r\n // If the point is on the right of the box put the cursor after the last character\r\n if (x > rect.left + rect.width) {\r\n offset = text.length;\r\n }\r\n else {\r\n const charWidthReader = CharWidthReader.getInstance();\r\n // Goes through all the characters of the innerText, and checks if the x of the point\r\n // belongs to the character.\r\n for (let i = 0; i < text.length + 1; i++) {\r\n // The step is half the width of the character\r\n step = charWidthReader.getCharWidth(text.charAt(i), font) / 2;\r\n // Move to the center of the character\r\n pixelCursor += step;\r\n // If the x of the point is smaller that the position of the cursor, the point is over that character\r\n if (x < pixelCursor) {\r\n offset = i;\r\n break;\r\n }\r\n // Move between the current character and the next\r\n pixelCursor += step;\r\n }\r\n }\r\n // Creates a range with the text node of the element and set the offset found\r\n range.setStart(el.firstChild, offset);\r\n range.setEnd(el.firstChild, offset);\r\n }\r\n return range;\r\n}\r\nclass CharWidthReader {\r\n constructor() {\r\n this._cache = {};\r\n this._canvas = document.createElement('canvas');\r\n }\r\n static getInstance() {\r\n if (!CharWidthReader._INSTANCE) {\r\n CharWidthReader._INSTANCE = new CharWidthReader();\r\n }\r\n return CharWidthReader._INSTANCE;\r\n }\r\n getCharWidth(char, font) {\r\n const cacheKey = char + font;\r\n if (this._cache[cacheKey]) {\r\n return this._cache[cacheKey];\r\n }\r\n const context = this._canvas.getContext('2d');\r\n context.font = font;\r\n const metrics = context.measureText(char);\r\n const width = metrics.width;\r\n this._cache[cacheKey] = width;\r\n return width;\r\n }\r\n}\r\nCharWidthReader._INSTANCE = null;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { EventType, Gesture } from '../../../base/browser/touch.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { MouseHandler, createMouseMoveEventMerger } from './mouseHandler.js';\r\nimport { EditorMouseEvent, EditorPointerEventFactory } from '../editorDom.js';\r\nimport { BrowserFeatures } from '../../../base/browser/canIUse.js';\r\nfunction gestureChangeEventMerger(lastEvent, currentEvent) {\r\n const r = {\r\n translationY: currentEvent.translationY,\r\n translationX: currentEvent.translationX\r\n };\r\n if (lastEvent) {\r\n r.translationY += lastEvent.translationY;\r\n r.translationX += lastEvent.translationX;\r\n }\r\n return r;\r\n}\r\n/**\r\n * Basically Edge but should be modified to handle any pointerEnabled, even without support of MSGesture\r\n */\r\nclass StandardPointerHandler extends MouseHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super(context, viewController, viewHelper);\r\n this.viewHelper.linesContentDomNode.style.touchAction = 'none';\r\n // TODO@Alex -> this expects that the view is added in 100 ms, might not be the case\r\n // This handler should be added when the dom node is in the dom tree\r\n this._installGestureHandlerTimeout = window.setTimeout(() => {\r\n this._installGestureHandlerTimeout = -1;\r\n // TODO@Alex: replace the usage of MSGesture here with something that works across all browsers\r\n if (window.MSGesture) {\r\n const touchGesture = new MSGesture();\r\n const penGesture = new MSGesture();\r\n touchGesture.target = this.viewHelper.linesContentDomNode;\r\n penGesture.target = this.viewHelper.linesContentDomNode;\r\n this.viewHelper.linesContentDomNode.addEventListener('pointerdown', (e) => {\r\n const pointerType = e.pointerType;\r\n if (pointerType === 'mouse') {\r\n this._lastPointerType = 'mouse';\r\n return;\r\n }\r\n else if (pointerType === 'touch') {\r\n this._lastPointerType = 'touch';\r\n touchGesture.addPointer(e.pointerId);\r\n }\r\n else {\r\n this._lastPointerType = 'pen';\r\n penGesture.addPointer(e.pointerId);\r\n }\r\n });\r\n this._register(dom.addDisposableThrottledListener(this.viewHelper.linesContentDomNode, 'MSGestureChange', (e) => this._onGestureChange(e), gestureChangeEventMerger));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, 'MSGestureTap', (e) => this._onCaptureGestureTap(e), true));\r\n }\r\n }, 100);\r\n this._lastPointerType = 'mouse';\r\n }\r\n _onMouseDown(e) {\r\n if (this._lastPointerType === 'mouse') {\r\n super._onMouseDown(e);\r\n }\r\n }\r\n _onCaptureGestureTap(rawEvent) {\r\n const e = new EditorMouseEvent(rawEvent, this.viewHelper.viewDomNode);\r\n const t = this._createMouseTarget(e, false);\r\n if (t.position) {\r\n this.viewController.moveTo(t.position);\r\n }\r\n // IE does not want to focus when coming in from the browser's address bar\r\n if (e.browserEvent.fromElement) {\r\n e.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n }\r\n else {\r\n // TODO@Alex -> cancel this is focus is lost\r\n setTimeout(() => {\r\n this.viewHelper.focusTextArea();\r\n });\r\n }\r\n }\r\n _onGestureChange(e) {\r\n this._context.model.deltaScrollNow(-e.translationX, -e.translationY);\r\n }\r\n dispose() {\r\n window.clearTimeout(this._installGestureHandlerTimeout);\r\n super.dispose();\r\n }\r\n}\r\n/**\r\n * Currently only tested on iOS 13/ iPadOS.\r\n */\r\nexport class PointerEventHandler extends MouseHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super(context, viewController, viewHelper);\r\n this._register(Gesture.addTarget(this.viewHelper.linesContentDomNode));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Tap, (e) => this.onTap(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Change, (e) => this.onChange(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Contextmenu, (e) => this._onContextMenu(new EditorMouseEvent(e, this.viewHelper.viewDomNode), false)));\r\n this._lastPointerType = 'mouse';\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, 'pointerdown', (e) => {\r\n const pointerType = e.pointerType;\r\n if (pointerType === 'mouse') {\r\n this._lastPointerType = 'mouse';\r\n return;\r\n }\r\n else if (pointerType === 'touch') {\r\n this._lastPointerType = 'touch';\r\n }\r\n else {\r\n this._lastPointerType = 'pen';\r\n }\r\n }));\r\n // PonterEvents\r\n const pointerEvents = new EditorPointerEventFactory(this.viewHelper.viewDomNode);\r\n this._register(pointerEvents.onPointerMoveThrottled(this.viewHelper.viewDomNode, (e) => this._onMouseMove(e), createMouseMoveEventMerger(this.mouseTargetFactory), MouseHandler.MOUSE_MOVE_MINIMUM_TIME));\r\n this._register(pointerEvents.onPointerUp(this.viewHelper.viewDomNode, (e) => this._onMouseUp(e)));\r\n this._register(pointerEvents.onPointerLeave(this.viewHelper.viewDomNode, (e) => this._onMouseLeave(e)));\r\n this._register(pointerEvents.onPointerDown(this.viewHelper.viewDomNode, (e) => this._onMouseDown(e)));\r\n }\r\n onTap(event) {\r\n if (!event.initialTarget || !this.viewHelper.linesContentDomNode.contains(event.initialTarget)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n const target = this._createMouseTarget(new EditorMouseEvent(event, this.viewHelper.viewDomNode), false);\r\n if (target.position) {\r\n // this.viewController.moveTo(target.position);\r\n this.viewController.dispatchMouse({\r\n position: target.position,\r\n mouseColumn: target.position.column,\r\n startedOnLineNumbers: false,\r\n mouseDownCount: event.tapCount,\r\n inSelectionMode: false,\r\n altKey: false,\r\n ctrlKey: false,\r\n metaKey: false,\r\n shiftKey: false,\r\n leftButton: false,\r\n middleButton: false,\r\n });\r\n }\r\n }\r\n onChange(e) {\r\n if (this._lastPointerType === 'touch') {\r\n this._context.model.deltaScrollNow(-e.translationX, -e.translationY);\r\n }\r\n }\r\n _onMouseDown(e) {\r\n if (e.target && this.viewHelper.linesContentDomNode.contains(e.target) && this._lastPointerType === 'touch') {\r\n return;\r\n }\r\n super._onMouseDown(e);\r\n }\r\n}\r\nclass TouchHandler extends MouseHandler {\r\n constructor(context, viewController, viewHelper) {\r\n super(context, viewController, viewHelper);\r\n this._register(Gesture.addTarget(this.viewHelper.linesContentDomNode));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Tap, (e) => this.onTap(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Change, (e) => this.onChange(e)));\r\n this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Contextmenu, (e) => this._onContextMenu(new EditorMouseEvent(e, this.viewHelper.viewDomNode), false)));\r\n }\r\n onTap(event) {\r\n event.preventDefault();\r\n this.viewHelper.focusTextArea();\r\n const target = this._createMouseTarget(new EditorMouseEvent(event, this.viewHelper.viewDomNode), false);\r\n if (target.position) {\r\n this.viewController.moveTo(target.position);\r\n }\r\n }\r\n onChange(e) {\r\n this._context.model.deltaScrollNow(-e.translationX, -e.translationY);\r\n }\r\n}\r\nexport class PointerHandler extends Disposable {\r\n constructor(context, viewController, viewHelper) {\r\n super();\r\n if ((platform.isIOS && BrowserFeatures.pointerEvents)) {\r\n this.handler = this._register(new PointerEventHandler(context, viewController, viewHelper));\r\n }\r\n else if (window.TouchEvent) {\r\n this.handler = this._register(new TouchHandler(context, viewController, viewHelper));\r\n }\r\n else if (window.navigator.pointerEnabled || window.PointerEvent) {\r\n this.handler = this._register(new StandardPointerHandler(context, viewController, viewHelper));\r\n }\r\n else {\r\n this.handler = this._register(new MouseHandler(context, viewController, viewHelper));\r\n }\r\n }\r\n getTargetAtClientPoint(clientX, clientY) {\r\n return this.handler.getTargetAtClientPoint(clientX, clientY);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './textAreaHandler.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { CopyOptions, TextAreaInput } from './textAreaInput.js';\r\nimport { PagedScreenReaderStrategy, TextAreaState } from './textAreaState.js';\r\nimport { PartFingerprints, ViewPart } from '../view/viewPart.js';\r\nimport { LineNumbersOverlay } from '../viewParts/lineNumbers/lineNumbers.js';\r\nimport { Margin } from '../viewParts/margin/margin.js';\r\nimport { EditorOptions } from '../../common/config/editorOptions.js';\r\nimport { getMapForWordSeparators } from '../../common/controller/wordCharacterClassifier.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from '../../../base/browser/ui/mouseCursor/mouseCursor.js';\r\nclass VisibleTextAreaData {\r\n constructor(top, left, width) {\r\n this.top = top;\r\n this.left = left;\r\n this.width = width;\r\n }\r\n setWidth(width) {\r\n return new VisibleTextAreaData(this.top, this.left, width);\r\n }\r\n}\r\nconst canUseZeroSizeTextarea = (browser.isEdge || browser.isFirefox);\r\nexport class TextAreaHandler extends ViewPart {\r\n constructor(context, viewController, viewHelper) {\r\n super(context);\r\n // --- end view API\r\n this._primaryCursorPosition = new Position(1, 1);\r\n this._primaryCursorVisibleRange = null;\r\n this._viewController = viewController;\r\n this._viewHelper = viewHelper;\r\n this._scrollLeft = 0;\r\n this._scrollTop = 0;\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._setAccessibilityOptions(options);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._contentHeight = layoutInfo.height;\r\n this._fontInfo = options.get(36 /* fontInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._emptySelectionClipboard = options.get(26 /* emptySelectionClipboard */);\r\n this._copyWithSyntaxHighlighting = options.get(16 /* copyWithSyntaxHighlighting */);\r\n this._visibleTextArea = null;\r\n this._selections = [new Selection(1, 1, 1, 1)];\r\n this._modelSelections = [new Selection(1, 1, 1, 1)];\r\n this._lastRenderPosition = null;\r\n // Text Area (The focus will always be in the textarea when the cursor is blinking)\r\n this.textArea = createFastDomNode(document.createElement('textarea'));\r\n PartFingerprints.write(this.textArea, 6 /* TextArea */);\r\n this.textArea.setClassName(`inputarea ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`);\r\n this.textArea.setAttribute('wrap', 'off');\r\n this.textArea.setAttribute('autocorrect', 'off');\r\n this.textArea.setAttribute('autocapitalize', 'off');\r\n this.textArea.setAttribute('autocomplete', 'off');\r\n this.textArea.setAttribute('spellcheck', 'false');\r\n this.textArea.setAttribute('aria-label', this._getAriaLabel(options));\r\n this.textArea.setAttribute('tabindex', String(options.get(102 /* tabIndex */)));\r\n this.textArea.setAttribute('role', 'textbox');\r\n this.textArea.setAttribute('aria-roledescription', nls.localize('editor', \"editor\"));\r\n this.textArea.setAttribute('aria-multiline', 'true');\r\n this.textArea.setAttribute('aria-haspopup', 'false');\r\n this.textArea.setAttribute('aria-autocomplete', 'both');\r\n if (platform.isWeb && options.get(72 /* readOnly */)) {\r\n this.textArea.setAttribute('readonly', 'true');\r\n }\r\n this.textAreaCover = createFastDomNode(document.createElement('div'));\r\n this.textAreaCover.setPosition('absolute');\r\n const simpleModel = {\r\n getLineCount: () => {\r\n return this._context.model.getLineCount();\r\n },\r\n getLineMaxColumn: (lineNumber) => {\r\n return this._context.model.getLineMaxColumn(lineNumber);\r\n },\r\n getValueInRange: (range, eol) => {\r\n return this._context.model.getValueInRange(range, eol);\r\n }\r\n };\r\n const textAreaInputHost = {\r\n getDataToCopy: (generateHTML) => {\r\n const rawTextToCopy = this._context.model.getPlainTextToCopy(this._modelSelections, this._emptySelectionClipboard, platform.isWindows);\r\n const newLineCharacter = this._context.model.getEOL();\r\n const isFromEmptySelection = (this._emptySelectionClipboard && this._modelSelections.length === 1 && this._modelSelections[0].isEmpty());\r\n const multicursorText = (Array.isArray(rawTextToCopy) ? rawTextToCopy : null);\r\n const text = (Array.isArray(rawTextToCopy) ? rawTextToCopy.join(newLineCharacter) : rawTextToCopy);\r\n let html = undefined;\r\n let mode = null;\r\n if (generateHTML) {\r\n if (CopyOptions.forceCopyWithSyntaxHighlighting || (this._copyWithSyntaxHighlighting && text.length < 65536)) {\r\n const richText = this._context.model.getRichTextToCopy(this._modelSelections, this._emptySelectionClipboard);\r\n if (richText) {\r\n html = richText.html;\r\n mode = richText.mode;\r\n }\r\n }\r\n }\r\n return {\r\n isFromEmptySelection,\r\n multicursorText,\r\n text,\r\n html,\r\n mode\r\n };\r\n },\r\n getScreenReaderContent: (currentState) => {\r\n if (this._accessibilitySupport === 1 /* Disabled */) {\r\n // We know for a fact that a screen reader is not attached\r\n // On OSX, we write the character before the cursor to allow for \"long-press\" composition\r\n // Also on OSX, we write the word before the cursor to allow for the Accessibility Keyboard to give good hints\r\n if (platform.isMacintosh) {\r\n const selection = this._selections[0];\r\n if (selection.isEmpty()) {\r\n const position = selection.getStartPosition();\r\n let textBefore = this._getWordBeforePosition(position);\r\n if (textBefore.length === 0) {\r\n textBefore = this._getCharacterBeforePosition(position);\r\n }\r\n if (textBefore.length > 0) {\r\n return new TextAreaState(textBefore, textBefore.length, textBefore.length, position, position);\r\n }\r\n }\r\n }\r\n return TextAreaState.EMPTY;\r\n }\r\n return PagedScreenReaderStrategy.fromEditorSelection(currentState, simpleModel, this._selections[0], this._accessibilityPageSize, this._accessibilitySupport === 0 /* Unknown */);\r\n },\r\n deduceModelPosition: (viewAnchorPosition, deltaOffset, lineFeedCnt) => {\r\n return this._context.model.deduceModelPositionRelativeToViewPosition(viewAnchorPosition, deltaOffset, lineFeedCnt);\r\n }\r\n };\r\n this._textAreaInput = this._register(new TextAreaInput(textAreaInputHost, this.textArea));\r\n this._register(this._textAreaInput.onKeyDown((e) => {\r\n this._viewController.emitKeyDown(e);\r\n }));\r\n this._register(this._textAreaInput.onKeyUp((e) => {\r\n this._viewController.emitKeyUp(e);\r\n }));\r\n this._register(this._textAreaInput.onPaste((e) => {\r\n let pasteOnNewLine = false;\r\n let multicursorText = null;\r\n let mode = null;\r\n if (e.metadata) {\r\n pasteOnNewLine = (this._emptySelectionClipboard && !!e.metadata.isFromEmptySelection);\r\n multicursorText = (typeof e.metadata.multicursorText !== 'undefined' ? e.metadata.multicursorText : null);\r\n mode = e.metadata.mode;\r\n }\r\n this._viewController.paste(e.text, pasteOnNewLine, multicursorText, mode);\r\n }));\r\n this._register(this._textAreaInput.onCut(() => {\r\n this._viewController.cut();\r\n }));\r\n this._register(this._textAreaInput.onType((e) => {\r\n if (e.replaceCharCnt) {\r\n this._viewController.replacePreviousChar(e.text, e.replaceCharCnt);\r\n }\r\n else {\r\n this._viewController.type(e.text);\r\n }\r\n }));\r\n this._register(this._textAreaInput.onSelectionChangeRequest((modelSelection) => {\r\n this._viewController.setSelection(modelSelection);\r\n }));\r\n this._register(this._textAreaInput.onCompositionStart((e) => {\r\n const lineNumber = this._selections[0].startLineNumber;\r\n const column = this._selections[0].startColumn - (e.moveOneCharacterLeft ? 1 : 0);\r\n this._context.model.revealRange('keyboard', true, new Range(lineNumber, column, lineNumber, column), 0 /* Simple */, 1 /* Immediate */);\r\n // Find range pixel position\r\n const visibleRange = this._viewHelper.visibleRangeForPositionRelativeToEditor(lineNumber, column);\r\n if (visibleRange) {\r\n this._visibleTextArea = new VisibleTextAreaData(this._context.viewLayout.getVerticalOffsetForLineNumber(lineNumber), visibleRange.left, canUseZeroSizeTextarea ? 0 : 1);\r\n this._render();\r\n }\r\n // Show the textarea\r\n this.textArea.setClassName(`inputarea ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ime-input`);\r\n this._viewController.compositionStart();\r\n }));\r\n this._register(this._textAreaInput.onCompositionUpdate((e) => {\r\n if (browser.isEdge) {\r\n // Due to isEdgeOrIE (where the textarea was not cleared initially)\r\n // we cannot assume the text consists only of the composited text\r\n this._visibleTextArea = this._visibleTextArea.setWidth(0);\r\n }\r\n else {\r\n // adjust width by its size\r\n this._visibleTextArea = this._visibleTextArea.setWidth(measureText(e.data, this._fontInfo));\r\n }\r\n this._render();\r\n }));\r\n this._register(this._textAreaInput.onCompositionEnd(() => {\r\n this._visibleTextArea = null;\r\n this._render();\r\n this.textArea.setClassName(`inputarea ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`);\r\n this._viewController.compositionEnd();\r\n }));\r\n this._register(this._textAreaInput.onFocus(() => {\r\n this._context.model.setHasFocus(true);\r\n }));\r\n this._register(this._textAreaInput.onBlur(() => {\r\n this._context.model.setHasFocus(false);\r\n }));\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _getWordBeforePosition(position) {\r\n const lineContent = this._context.model.getLineContent(position.lineNumber);\r\n const wordSeparators = getMapForWordSeparators(this._context.configuration.options.get(105 /* wordSeparators */));\r\n let column = position.column;\r\n let distance = 0;\r\n while (column > 1) {\r\n const charCode = lineContent.charCodeAt(column - 2);\r\n const charClass = wordSeparators.get(charCode);\r\n if (charClass !== 0 /* Regular */ || distance > 50) {\r\n return lineContent.substring(column - 1, position.column - 1);\r\n }\r\n distance++;\r\n column--;\r\n }\r\n return lineContent.substring(0, position.column - 1);\r\n }\r\n _getCharacterBeforePosition(position) {\r\n if (position.column > 1) {\r\n const lineContent = this._context.model.getLineContent(position.lineNumber);\r\n const charBefore = lineContent.charAt(position.column - 2);\r\n if (!strings.isHighSurrogate(charBefore.charCodeAt(0))) {\r\n return charBefore;\r\n }\r\n }\r\n return '';\r\n }\r\n _getAriaLabel(options) {\r\n const accessibilitySupport = options.get(2 /* accessibilitySupport */);\r\n if (accessibilitySupport === 1 /* Disabled */) {\r\n return nls.localize('accessibilityOffAriaLabel', \"The editor is not accessible at this time. Press {0} for options.\", platform.isLinux ? 'Shift+Alt+F1' : 'Alt+F1');\r\n }\r\n return options.get(4 /* ariaLabel */);\r\n }\r\n _setAccessibilityOptions(options) {\r\n this._accessibilitySupport = options.get(2 /* accessibilitySupport */);\r\n const accessibilityPageSize = options.get(3 /* accessibilityPageSize */);\r\n if (this._accessibilitySupport === 2 /* Enabled */ && accessibilityPageSize === EditorOptions.accessibilityPageSize.defaultValue) {\r\n // If a screen reader is attached and the default value is not set we shuold automatically increase the page size to 100 for a better experience\r\n // If we put more than 100 lines the nvda can not handle this https://github.com/microsoft/vscode/issues/89717\r\n this._accessibilityPageSize = 100;\r\n }\r\n else {\r\n this._accessibilityPageSize = accessibilityPageSize;\r\n }\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._setAccessibilityOptions(options);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._contentHeight = layoutInfo.height;\r\n this._fontInfo = options.get(36 /* fontInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._emptySelectionClipboard = options.get(26 /* emptySelectionClipboard */);\r\n this._copyWithSyntaxHighlighting = options.get(16 /* copyWithSyntaxHighlighting */);\r\n this.textArea.setAttribute('aria-label', this._getAriaLabel(options));\r\n this.textArea.setAttribute('tabindex', String(options.get(102 /* tabIndex */)));\r\n if (platform.isWeb && e.hasChanged(72 /* readOnly */)) {\r\n if (options.get(72 /* readOnly */)) {\r\n this.textArea.setAttribute('readonly', 'true');\r\n }\r\n else {\r\n this.textArea.removeAttribute('readonly');\r\n }\r\n }\r\n if (e.hasChanged(2 /* accessibilitySupport */)) {\r\n this._textAreaInput.writeScreenReaderContent('strategy changed');\r\n }\r\n return true;\r\n }\r\n onCursorStateChanged(e) {\r\n this._selections = e.selections.slice(0);\r\n this._modelSelections = e.modelSelections.slice(0);\r\n this._textAreaInput.writeScreenReaderContent('selection changed');\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n // true for inline decorations that can end up relayouting text\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n this._scrollLeft = e.scrollLeft;\r\n this._scrollTop = e.scrollTop;\r\n return true;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n // --- begin view API\r\n isFocused() {\r\n return this._textAreaInput.isFocused();\r\n }\r\n focusTextArea() {\r\n this._textAreaInput.focusTextArea();\r\n }\r\n getLastRenderData() {\r\n return this._lastRenderPosition;\r\n }\r\n setAriaOptions(options) {\r\n if (options.activeDescendant) {\r\n this.textArea.setAttribute('aria-haspopup', 'true');\r\n this.textArea.setAttribute('aria-autocomplete', 'list');\r\n this.textArea.setAttribute('aria-activedescendant', options.activeDescendant);\r\n }\r\n else {\r\n this.textArea.setAttribute('aria-haspopup', 'false');\r\n this.textArea.setAttribute('aria-autocomplete', 'both');\r\n this.textArea.removeAttribute('aria-activedescendant');\r\n }\r\n if (options.role) {\r\n this.textArea.setAttribute('role', options.role);\r\n }\r\n }\r\n prepareRender(ctx) {\r\n this._primaryCursorPosition = new Position(this._selections[0].positionLineNumber, this._selections[0].positionColumn);\r\n this._primaryCursorVisibleRange = ctx.visibleRangeForPosition(this._primaryCursorPosition);\r\n }\r\n render(ctx) {\r\n this._textAreaInput.writeScreenReaderContent('render');\r\n this._render();\r\n }\r\n _render() {\r\n if (this._visibleTextArea) {\r\n // The text area is visible for composition reasons\r\n this._renderInsideEditor(null, this._visibleTextArea.top - this._scrollTop, this._contentLeft + this._visibleTextArea.left - this._scrollLeft, this._visibleTextArea.width, this._lineHeight);\r\n return;\r\n }\r\n if (!this._primaryCursorVisibleRange) {\r\n // The primary cursor is outside the viewport => place textarea to the top left\r\n this._renderAtTopLeft();\r\n return;\r\n }\r\n const left = this._contentLeft + this._primaryCursorVisibleRange.left - this._scrollLeft;\r\n if (left < this._contentLeft || left > this._contentLeft + this._contentWidth) {\r\n // cursor is outside the viewport\r\n this._renderAtTopLeft();\r\n return;\r\n }\r\n const top = this._context.viewLayout.getVerticalOffsetForLineNumber(this._selections[0].positionLineNumber) - this._scrollTop;\r\n if (top < 0 || top > this._contentHeight) {\r\n // cursor is outside the viewport\r\n this._renderAtTopLeft();\r\n return;\r\n }\r\n // The primary cursor is in the viewport (at least vertically) => place textarea on the cursor\r\n if (platform.isMacintosh) {\r\n // For the popup emoji input, we will make the text area as high as the line height\r\n // We will also make the fontSize and lineHeight the correct dimensions to help with the placement of these pickers\r\n this._renderInsideEditor(this._primaryCursorPosition, top, left, canUseZeroSizeTextarea ? 0 : 1, this._lineHeight);\r\n return;\r\n }\r\n this._renderInsideEditor(this._primaryCursorPosition, top, left, canUseZeroSizeTextarea ? 0 : 1, canUseZeroSizeTextarea ? 0 : 1);\r\n }\r\n _renderInsideEditor(renderedPosition, top, left, width, height) {\r\n this._lastRenderPosition = renderedPosition;\r\n const ta = this.textArea;\r\n const tac = this.textAreaCover;\r\n Configuration.applyFontInfo(ta, this._fontInfo);\r\n ta.setTop(top);\r\n ta.setLeft(left);\r\n ta.setWidth(width);\r\n ta.setHeight(height);\r\n tac.setTop(0);\r\n tac.setLeft(0);\r\n tac.setWidth(0);\r\n tac.setHeight(0);\r\n }\r\n _renderAtTopLeft() {\r\n this._lastRenderPosition = null;\r\n const ta = this.textArea;\r\n const tac = this.textAreaCover;\r\n Configuration.applyFontInfo(ta, this._fontInfo);\r\n ta.setTop(0);\r\n ta.setLeft(0);\r\n tac.setTop(0);\r\n tac.setLeft(0);\r\n if (canUseZeroSizeTextarea) {\r\n ta.setWidth(0);\r\n ta.setHeight(0);\r\n tac.setWidth(0);\r\n tac.setHeight(0);\r\n return;\r\n }\r\n // (in WebKit the textarea is 1px by 1px because it cannot handle input to a 0x0 textarea)\r\n // specifically, when doing Korean IME, setting the textarea to 0x0 breaks IME badly.\r\n ta.setWidth(1);\r\n ta.setHeight(1);\r\n tac.setWidth(1);\r\n tac.setHeight(1);\r\n const options = this._context.configuration.options;\r\n if (options.get(42 /* glyphMargin */)) {\r\n tac.setClassName('monaco-editor-background textAreaCover ' + Margin.OUTER_CLASS_NAME);\r\n }\r\n else {\r\n if (options.get(52 /* lineNumbers */).renderType !== 0 /* Off */) {\r\n tac.setClassName('monaco-editor-background textAreaCover ' + LineNumbersOverlay.CLASS_NAME);\r\n }\r\n else {\r\n tac.setClassName('monaco-editor-background textAreaCover');\r\n }\r\n }\r\n }\r\n}\r\nfunction measureText(text, fontInfo) {\r\n // adjust width by its size\r\n const canvasElem = document.createElement('canvas');\r\n const context = canvasElem.getContext('2d');\r\n context.font = createFontString(fontInfo);\r\n const metrics = context.measureText(text);\r\n if (browser.isFirefox) {\r\n return metrics.width + 2; // +2 for Japanese...\r\n }\r\n else {\r\n return metrics.width;\r\n }\r\n}\r\nfunction createFontString(bareFontInfo) {\r\n return doCreateFontString('normal', bareFontInfo.fontWeight, bareFontInfo.fontSize, bareFontInfo.lineHeight, bareFontInfo.fontFamily);\r\n}\r\nfunction doCreateFontString(fontStyle, fontWeight, fontSize, lineHeight, fontFamily) {\r\n // The full font syntax is:\r\n // style | variant | weight | stretch | size/line-height | fontFamily\r\n // (https://developer.mozilla.org/en-US/docs/Web/CSS/font)\r\n // But it appears Edge and IE11 cannot properly parse `stretch`.\r\n return `${fontStyle} normal ${fontWeight} ${fontSize}px / ${lineHeight}px ${fontFamily}`;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { TextAreaState } from './textAreaState.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { BrowserFeatures } from '../../../base/browser/canIUse.js';\r\nexport const CopyOptions = {\r\n forceCopyWithSyntaxHighlighting: false\r\n};\r\n/**\r\n * Every time we write to the clipboard, we record a bit of extra metadata here.\r\n * Every time we read from the cipboard, if the text matches our last written text,\r\n * we can fetch the previous metadata.\r\n */\r\nexport class InMemoryClipboardMetadataManager {\r\n constructor() {\r\n this._lastState = null;\r\n }\r\n set(lastCopiedValue, data) {\r\n this._lastState = { lastCopiedValue, data };\r\n }\r\n get(pastedText) {\r\n if (this._lastState && this._lastState.lastCopiedValue === pastedText) {\r\n // match!\r\n return this._lastState.data;\r\n }\r\n this._lastState = null;\r\n return null;\r\n }\r\n}\r\nInMemoryClipboardMetadataManager.INSTANCE = new InMemoryClipboardMetadataManager();\r\n/**\r\n * Writes screen reader content to the textarea and is able to analyze its input events to generate:\r\n * - onCut\r\n * - onPaste\r\n * - onType\r\n *\r\n * Composition events are generated for presentation purposes (composition input is reflected in onType).\r\n */\r\nexport class TextAreaInput extends Disposable {\r\n constructor(host, textArea) {\r\n super();\r\n this.textArea = textArea;\r\n this._onFocus = this._register(new Emitter());\r\n this.onFocus = this._onFocus.event;\r\n this._onBlur = this._register(new Emitter());\r\n this.onBlur = this._onBlur.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onKeyUp = this._register(new Emitter());\r\n this.onKeyUp = this._onKeyUp.event;\r\n this._onCut = this._register(new Emitter());\r\n this.onCut = this._onCut.event;\r\n this._onPaste = this._register(new Emitter());\r\n this.onPaste = this._onPaste.event;\r\n this._onType = this._register(new Emitter());\r\n this.onType = this._onType.event;\r\n this._onCompositionStart = this._register(new Emitter());\r\n this.onCompositionStart = this._onCompositionStart.event;\r\n this._onCompositionUpdate = this._register(new Emitter());\r\n this.onCompositionUpdate = this._onCompositionUpdate.event;\r\n this._onCompositionEnd = this._register(new Emitter());\r\n this.onCompositionEnd = this._onCompositionEnd.event;\r\n this._onSelectionChangeRequest = this._register(new Emitter());\r\n this.onSelectionChangeRequest = this._onSelectionChangeRequest.event;\r\n this._host = host;\r\n this._textArea = this._register(new TextAreaWrapper(textArea));\r\n this._asyncTriggerCut = this._register(new RunOnceScheduler(() => this._onCut.fire(), 0));\r\n this._textAreaState = TextAreaState.EMPTY;\r\n this._selectionChangeListener = null;\r\n this.writeScreenReaderContent('ctor');\r\n this._hasFocus = false;\r\n this._isDoingComposition = false;\r\n this._nextCommand = 0 /* Type */;\r\n let lastKeyDown = null;\r\n this._register(dom.addStandardDisposableListener(textArea.domNode, 'keydown', (e) => {\r\n if (e.keyCode === 109 /* KEY_IN_COMPOSITION */\r\n || (this._isDoingComposition && e.keyCode === 1 /* Backspace */)) {\r\n // Stop propagation for keyDown events if the IME is processing key input\r\n e.stopPropagation();\r\n }\r\n if (e.equals(9 /* Escape */)) {\r\n // Prevent default always for `Esc`, otherwise it will generate a keypress\r\n // See https://msdn.microsoft.com/en-us/library/ie/ms536939(v=vs.85).aspx\r\n e.preventDefault();\r\n }\r\n lastKeyDown = e;\r\n this._onKeyDown.fire(e);\r\n }));\r\n this._register(dom.addStandardDisposableListener(textArea.domNode, 'keyup', (e) => {\r\n this._onKeyUp.fire(e);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'compositionstart', (e) => {\r\n if (this._isDoingComposition) {\r\n return;\r\n }\r\n this._isDoingComposition = true;\r\n let moveOneCharacterLeft = false;\r\n if (platform.isMacintosh\r\n && lastKeyDown\r\n && lastKeyDown.equals(109 /* KEY_IN_COMPOSITION */)\r\n && this._textAreaState.selectionStart === this._textAreaState.selectionEnd\r\n && this._textAreaState.selectionStart > 0\r\n && this._textAreaState.value.substr(this._textAreaState.selectionStart - 1, 1) === e.data) {\r\n // Handling long press case on macOS + arrow key => pretend the character was selected\r\n if (lastKeyDown.code === 'ArrowRight' || lastKeyDown.code === 'ArrowLeft') {\r\n moveOneCharacterLeft = true;\r\n }\r\n }\r\n if (moveOneCharacterLeft) {\r\n this._textAreaState = new TextAreaState(this._textAreaState.value, this._textAreaState.selectionStart - 1, this._textAreaState.selectionEnd, this._textAreaState.selectionStartPosition ? new Position(this._textAreaState.selectionStartPosition.lineNumber, this._textAreaState.selectionStartPosition.column - 1) : null, this._textAreaState.selectionEndPosition);\r\n }\r\n else if (!browser.isEdge) {\r\n // In IE we cannot set .value when handling 'compositionstart' because the entire composition will get canceled.\r\n this._setAndWriteTextAreaState('compositionstart', TextAreaState.EMPTY);\r\n }\r\n this._onCompositionStart.fire({ moveOneCharacterLeft });\r\n }));\r\n /**\r\n * Deduce the typed input from a text area's value and the last observed state.\r\n */\r\n const deduceInputFromTextAreaValue = (couldBeEmojiInput) => {\r\n const oldState = this._textAreaState;\r\n const newState = TextAreaState.readFromTextArea(this._textArea);\r\n return [newState, TextAreaState.deduceInput(oldState, newState, couldBeEmojiInput)];\r\n };\r\n /**\r\n * Deduce the composition input from a string.\r\n */\r\n const deduceComposition = (text) => {\r\n const oldState = this._textAreaState;\r\n const newState = TextAreaState.selectedText(text);\r\n const typeInput = {\r\n text: newState.value,\r\n replaceCharCnt: oldState.selectionEnd - oldState.selectionStart\r\n };\r\n return [newState, typeInput];\r\n };\r\n const compositionDataInValid = (locale) => {\r\n // https://github.com/Microsoft/monaco-editor/issues/339\r\n // Multi-part Japanese compositions reset cursor in Edge/IE, Chinese and Korean IME don't have this issue.\r\n // The reason that we can't use this path for all CJK IME is IE and Edge behave differently when handling Korean IME,\r\n // which breaks this path of code.\r\n if (browser.isEdge && locale === 'ja') {\r\n return true;\r\n }\r\n return false;\r\n };\r\n this._register(dom.addDisposableListener(textArea.domNode, 'compositionupdate', (e) => {\r\n if (compositionDataInValid(e.locale)) {\r\n const [newState, typeInput] = deduceInputFromTextAreaValue(/*couldBeEmojiInput*/ false);\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n this._onCompositionUpdate.fire(e);\r\n return;\r\n }\r\n const [newState, typeInput] = deduceComposition(e.data || '');\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n this._onCompositionUpdate.fire(e);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'compositionend', (e) => {\r\n // https://github.com/microsoft/monaco-editor/issues/1663\r\n // On iOS 13.2, Chinese system IME randomly trigger an additional compositionend event with empty data\r\n if (!this._isDoingComposition) {\r\n return;\r\n }\r\n if (compositionDataInValid(e.locale)) {\r\n // https://github.com/Microsoft/monaco-editor/issues/339\r\n const [newState, typeInput] = deduceInputFromTextAreaValue(/*couldBeEmojiInput*/ false);\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n }\r\n else {\r\n const [newState, typeInput] = deduceComposition(e.data || '');\r\n this._textAreaState = newState;\r\n this._onType.fire(typeInput);\r\n }\r\n // Due to isEdgeOrIE (where the textarea was not cleared initially) and isChrome (the textarea is not updated correctly when composition ends)\r\n // we cannot assume the text at the end consists only of the composited text\r\n if (browser.isEdge || browser.isChrome) {\r\n this._textAreaState = TextAreaState.readFromTextArea(this._textArea);\r\n }\r\n if (!this._isDoingComposition) {\r\n return;\r\n }\r\n this._isDoingComposition = false;\r\n this._onCompositionEnd.fire();\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'input', () => {\r\n // Pretend here we touched the text area, as the `input` event will most likely\r\n // result in a `selectionchange` event which we want to ignore\r\n this._textArea.setIgnoreSelectionChangeTime('received input event');\r\n if (this._isDoingComposition) {\r\n return;\r\n }\r\n const [newState, typeInput] = deduceInputFromTextAreaValue(/*couldBeEmojiInput*/ platform.isMacintosh);\r\n if (typeInput.replaceCharCnt === 0 && typeInput.text.length === 1 && strings.isHighSurrogate(typeInput.text.charCodeAt(0))) {\r\n // Ignore invalid input but keep it around for next time\r\n return;\r\n }\r\n this._textAreaState = newState;\r\n if (this._nextCommand === 0 /* Type */) {\r\n if (typeInput.text !== '') {\r\n this._onType.fire(typeInput);\r\n }\r\n }\r\n else {\r\n if (typeInput.text !== '' || typeInput.replaceCharCnt !== 0) {\r\n this._firePaste(typeInput.text, null);\r\n }\r\n this._nextCommand = 0 /* Type */;\r\n }\r\n }));\r\n // --- Clipboard operations\r\n this._register(dom.addDisposableListener(textArea.domNode, 'cut', (e) => {\r\n // Pretend here we touched the text area, as the `cut` event will most likely\r\n // result in a `selectionchange` event which we want to ignore\r\n this._textArea.setIgnoreSelectionChangeTime('received cut event');\r\n this._ensureClipboardGetsEditorSelection(e);\r\n this._asyncTriggerCut.schedule();\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'copy', (e) => {\r\n this._ensureClipboardGetsEditorSelection(e);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'paste', (e) => {\r\n // Pretend here we touched the text area, as the `paste` event will most likely\r\n // result in a `selectionchange` event which we want to ignore\r\n this._textArea.setIgnoreSelectionChangeTime('received paste event');\r\n if (ClipboardEventUtils.canUseTextData(e)) {\r\n const [pastePlainText, metadata] = ClipboardEventUtils.getTextData(e);\r\n if (pastePlainText !== '') {\r\n this._firePaste(pastePlainText, metadata);\r\n }\r\n }\r\n else {\r\n if (this._textArea.getSelectionStart() !== this._textArea.getSelectionEnd()) {\r\n // Clean up the textarea, to get a clean paste\r\n this._setAndWriteTextAreaState('paste', TextAreaState.EMPTY);\r\n }\r\n this._nextCommand = 1 /* Paste */;\r\n }\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'focus', () => {\r\n this._setHasFocus(true);\r\n }));\r\n this._register(dom.addDisposableListener(textArea.domNode, 'blur', () => {\r\n this._setHasFocus(false);\r\n }));\r\n }\r\n _installSelectionChangeListener() {\r\n // See https://github.com/Microsoft/vscode/issues/27216 and https://github.com/microsoft/vscode/issues/98256\r\n // When using a Braille display, it is possible for users to reposition the\r\n // system caret. This is reflected in Chrome as a `selectionchange` event.\r\n //\r\n // The `selectionchange` event appears to be emitted under numerous other circumstances,\r\n // so it is quite a challenge to distinguish a `selectionchange` coming in from a user\r\n // using a Braille display from all the other cases.\r\n //\r\n // The problems with the `selectionchange` event are:\r\n // * the event is emitted when the textarea is focused programmatically -- textarea.focus()\r\n // * the event is emitted when the selection is changed in the textarea programmatically -- textarea.setSelectionRange(...)\r\n // * the event is emitted when the value of the textarea is changed programmatically -- textarea.value = '...'\r\n // * the event is emitted when tabbing into the textarea\r\n // * the event is emitted asynchronously (sometimes with a delay as high as a few tens of ms)\r\n // * the event sometimes comes in bursts for a single logical textarea operation\r\n // `selectionchange` events often come multiple times for a single logical change\r\n // so throttle multiple `selectionchange` events that burst in a short period of time.\r\n let previousSelectionChangeEventTime = 0;\r\n return dom.addDisposableListener(document, 'selectionchange', (e) => {\r\n if (!this._hasFocus) {\r\n return;\r\n }\r\n if (this._isDoingComposition) {\r\n return;\r\n }\r\n if (!browser.isChrome) {\r\n // Support only for Chrome until testing happens on other browsers\r\n return;\r\n }\r\n const now = Date.now();\r\n const delta1 = now - previousSelectionChangeEventTime;\r\n previousSelectionChangeEventTime = now;\r\n if (delta1 < 5) {\r\n // received another `selectionchange` event within 5ms of the previous `selectionchange` event\r\n // => ignore it\r\n return;\r\n }\r\n const delta2 = now - this._textArea.getIgnoreSelectionChangeTime();\r\n this._textArea.resetSelectionChangeTime();\r\n if (delta2 < 100) {\r\n // received a `selectionchange` event within 100ms since we touched the textarea\r\n // => ignore it, since we caused it\r\n return;\r\n }\r\n if (!this._textAreaState.selectionStartPosition || !this._textAreaState.selectionEndPosition) {\r\n // Cannot correlate a position in the textarea with a position in the editor...\r\n return;\r\n }\r\n const newValue = this._textArea.getValue();\r\n if (this._textAreaState.value !== newValue) {\r\n // Cannot correlate a position in the textarea with a position in the editor...\r\n return;\r\n }\r\n const newSelectionStart = this._textArea.getSelectionStart();\r\n const newSelectionEnd = this._textArea.getSelectionEnd();\r\n if (this._textAreaState.selectionStart === newSelectionStart && this._textAreaState.selectionEnd === newSelectionEnd) {\r\n // Nothing to do...\r\n return;\r\n }\r\n const _newSelectionStartPosition = this._textAreaState.deduceEditorPosition(newSelectionStart);\r\n const newSelectionStartPosition = this._host.deduceModelPosition(_newSelectionStartPosition[0], _newSelectionStartPosition[1], _newSelectionStartPosition[2]);\r\n const _newSelectionEndPosition = this._textAreaState.deduceEditorPosition(newSelectionEnd);\r\n const newSelectionEndPosition = this._host.deduceModelPosition(_newSelectionEndPosition[0], _newSelectionEndPosition[1], _newSelectionEndPosition[2]);\r\n const newSelection = new Selection(newSelectionStartPosition.lineNumber, newSelectionStartPosition.column, newSelectionEndPosition.lineNumber, newSelectionEndPosition.column);\r\n this._onSelectionChangeRequest.fire(newSelection);\r\n });\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this._selectionChangeListener) {\r\n this._selectionChangeListener.dispose();\r\n this._selectionChangeListener = null;\r\n }\r\n }\r\n focusTextArea() {\r\n // Setting this._hasFocus and writing the screen reader content\r\n // will result in a focus() and setSelectionRange() in the textarea\r\n this._setHasFocus(true);\r\n // If the editor is off DOM, focus cannot be really set, so let's double check that we have managed to set the focus\r\n this.refreshFocusState();\r\n }\r\n isFocused() {\r\n return this._hasFocus;\r\n }\r\n refreshFocusState() {\r\n const shadowRoot = dom.getShadowRoot(this.textArea.domNode);\r\n if (shadowRoot) {\r\n this._setHasFocus(shadowRoot.activeElement === this.textArea.domNode);\r\n }\r\n else if (dom.isInDOM(this.textArea.domNode)) {\r\n this._setHasFocus(document.activeElement === this.textArea.domNode);\r\n }\r\n else {\r\n this._setHasFocus(false);\r\n }\r\n }\r\n _setHasFocus(newHasFocus) {\r\n if (this._hasFocus === newHasFocus) {\r\n // no change\r\n return;\r\n }\r\n this._hasFocus = newHasFocus;\r\n if (this._selectionChangeListener) {\r\n this._selectionChangeListener.dispose();\r\n this._selectionChangeListener = null;\r\n }\r\n if (this._hasFocus) {\r\n this._selectionChangeListener = this._installSelectionChangeListener();\r\n }\r\n if (this._hasFocus) {\r\n if (browser.isEdge) {\r\n // Edge has a bug where setting the selection range while the focus event\r\n // is dispatching doesn't work. To reproduce, \"tab into\" the editor.\r\n this._setAndWriteTextAreaState('focusgain', TextAreaState.EMPTY);\r\n }\r\n else {\r\n this.writeScreenReaderContent('focusgain');\r\n }\r\n }\r\n if (this._hasFocus) {\r\n this._onFocus.fire();\r\n }\r\n else {\r\n this._onBlur.fire();\r\n }\r\n }\r\n _setAndWriteTextAreaState(reason, textAreaState) {\r\n if (!this._hasFocus) {\r\n textAreaState = textAreaState.collapseSelection();\r\n }\r\n textAreaState.writeToTextArea(reason, this._textArea, this._hasFocus);\r\n this._textAreaState = textAreaState;\r\n }\r\n writeScreenReaderContent(reason) {\r\n if (this._isDoingComposition) {\r\n // Do not write to the text area when doing composition\r\n return;\r\n }\r\n this._setAndWriteTextAreaState(reason, this._host.getScreenReaderContent(this._textAreaState));\r\n }\r\n _ensureClipboardGetsEditorSelection(e) {\r\n const dataToCopy = this._host.getDataToCopy(ClipboardEventUtils.canUseTextData(e) && BrowserFeatures.clipboard.richText);\r\n const storedMetadata = {\r\n version: 1,\r\n isFromEmptySelection: dataToCopy.isFromEmptySelection,\r\n multicursorText: dataToCopy.multicursorText,\r\n mode: dataToCopy.mode\r\n };\r\n InMemoryClipboardMetadataManager.INSTANCE.set(\r\n // When writing \"LINE\\r\\n\" to the clipboard and then pasting,\r\n // Firefox pastes \"LINE\\n\", so let's work around this quirk\r\n (browser.isFirefox ? dataToCopy.text.replace(/\\r\\n/g, '\\n') : dataToCopy.text), storedMetadata);\r\n if (!ClipboardEventUtils.canUseTextData(e)) {\r\n // Looks like an old browser. The strategy is to place the text\r\n // we'd like to be copied to the clipboard in the textarea and select it.\r\n this._setAndWriteTextAreaState('copy or cut', TextAreaState.selectedText(dataToCopy.text));\r\n return;\r\n }\r\n ClipboardEventUtils.setTextData(e, dataToCopy.text, dataToCopy.html, storedMetadata);\r\n }\r\n _firePaste(text, metadata) {\r\n if (!metadata) {\r\n // try the in-memory store\r\n metadata = InMemoryClipboardMetadataManager.INSTANCE.get(text);\r\n }\r\n this._onPaste.fire({\r\n text: text,\r\n metadata: metadata\r\n });\r\n }\r\n}\r\nclass ClipboardEventUtils {\r\n static canUseTextData(e) {\r\n if (e.clipboardData) {\r\n return true;\r\n }\r\n if (window.clipboardData) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n static getTextData(e) {\r\n if (e.clipboardData) {\r\n e.preventDefault();\r\n const text = e.clipboardData.getData('text/plain');\r\n let metadata = null;\r\n const rawmetadata = e.clipboardData.getData('vscode-editor-data');\r\n if (typeof rawmetadata === 'string') {\r\n try {\r\n metadata = JSON.parse(rawmetadata);\r\n if (metadata.version !== 1) {\r\n metadata = null;\r\n }\r\n }\r\n catch (err) {\r\n // no problem!\r\n }\r\n }\r\n return [text, metadata];\r\n }\r\n if (window.clipboardData) {\r\n e.preventDefault();\r\n const text = window.clipboardData.getData('Text');\r\n return [text, null];\r\n }\r\n throw new Error('ClipboardEventUtils.getTextData: Cannot use text data!');\r\n }\r\n static setTextData(e, text, html, metadata) {\r\n if (e.clipboardData) {\r\n e.clipboardData.setData('text/plain', text);\r\n if (typeof html === 'string') {\r\n e.clipboardData.setData('text/html', html);\r\n }\r\n e.clipboardData.setData('vscode-editor-data', JSON.stringify(metadata));\r\n e.preventDefault();\r\n return;\r\n }\r\n if (window.clipboardData) {\r\n window.clipboardData.setData('Text', text);\r\n e.preventDefault();\r\n return;\r\n }\r\n throw new Error('ClipboardEventUtils.setTextData: Cannot use text data!');\r\n }\r\n}\r\nclass TextAreaWrapper extends Disposable {\r\n constructor(_textArea) {\r\n super();\r\n this._actual = _textArea;\r\n this._ignoreSelectionChangeTime = 0;\r\n }\r\n setIgnoreSelectionChangeTime(reason) {\r\n this._ignoreSelectionChangeTime = Date.now();\r\n }\r\n getIgnoreSelectionChangeTime() {\r\n return this._ignoreSelectionChangeTime;\r\n }\r\n resetSelectionChangeTime() {\r\n this._ignoreSelectionChangeTime = 0;\r\n }\r\n getValue() {\r\n // console.log('current value: ' + this._textArea.value);\r\n return this._actual.domNode.value;\r\n }\r\n setValue(reason, value) {\r\n const textArea = this._actual.domNode;\r\n if (textArea.value === value) {\r\n // No change\r\n return;\r\n }\r\n // console.log('reason: ' + reason + ', current value: ' + textArea.value + ' => new value: ' + value);\r\n this.setIgnoreSelectionChangeTime('setValue');\r\n textArea.value = value;\r\n }\r\n getSelectionStart() {\r\n return this._actual.domNode.selectionStart;\r\n }\r\n getSelectionEnd() {\r\n return this._actual.domNode.selectionEnd;\r\n }\r\n setSelectionRange(reason, selectionStart, selectionEnd) {\r\n const textArea = this._actual.domNode;\r\n let activeElement = null;\r\n const shadowRoot = dom.getShadowRoot(textArea);\r\n if (shadowRoot) {\r\n activeElement = shadowRoot.activeElement;\r\n }\r\n else {\r\n activeElement = document.activeElement;\r\n }\r\n const currentIsFocused = (activeElement === textArea);\r\n const currentSelectionStart = textArea.selectionStart;\r\n const currentSelectionEnd = textArea.selectionEnd;\r\n if (currentIsFocused && currentSelectionStart === selectionStart && currentSelectionEnd === selectionEnd) {\r\n // No change\r\n // Firefox iframe bug https://github.com/Microsoft/monaco-editor/issues/643#issuecomment-367871377\r\n if (browser.isFirefox && window.parent !== window) {\r\n textArea.focus();\r\n }\r\n return;\r\n }\r\n // console.log('reason: ' + reason + ', setSelectionRange: ' + selectionStart + ' -> ' + selectionEnd);\r\n if (currentIsFocused) {\r\n // No need to focus, only need to change the selection range\r\n this.setIgnoreSelectionChangeTime('setSelectionRange');\r\n textArea.setSelectionRange(selectionStart, selectionEnd);\r\n if (browser.isFirefox && window.parent !== window) {\r\n textArea.focus();\r\n }\r\n return;\r\n }\r\n // If the focus is outside the textarea, browsers will try really hard to reveal the textarea.\r\n // Here, we try to undo the browser's desperate reveal.\r\n try {\r\n const scrollState = dom.saveParentsScrollTop(textArea);\r\n this.setIgnoreSelectionChangeTime('setSelectionRange');\r\n textArea.focus();\r\n textArea.setSelectionRange(selectionStart, selectionEnd);\r\n dom.restoreParentsScrollTop(textArea, scrollState);\r\n }\r\n catch (e) {\r\n // Sometimes IE throws when setting selection (e.g. textarea is off-DOM)\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nexport class TextAreaState {\r\n constructor(value, selectionStart, selectionEnd, selectionStartPosition, selectionEndPosition) {\r\n this.value = value;\r\n this.selectionStart = selectionStart;\r\n this.selectionEnd = selectionEnd;\r\n this.selectionStartPosition = selectionStartPosition;\r\n this.selectionEndPosition = selectionEndPosition;\r\n }\r\n toString() {\r\n return '[ <' + this.value + '>, selectionStart: ' + this.selectionStart + ', selectionEnd: ' + this.selectionEnd + ']';\r\n }\r\n static readFromTextArea(textArea) {\r\n return new TextAreaState(textArea.getValue(), textArea.getSelectionStart(), textArea.getSelectionEnd(), null, null);\r\n }\r\n collapseSelection() {\r\n return new TextAreaState(this.value, this.value.length, this.value.length, null, null);\r\n }\r\n writeToTextArea(reason, textArea, select) {\r\n // console.log(Date.now() + ': writeToTextArea ' + reason + ': ' + this.toString());\r\n textArea.setValue(reason, this.value);\r\n if (select) {\r\n textArea.setSelectionRange(reason, this.selectionStart, this.selectionEnd);\r\n }\r\n }\r\n deduceEditorPosition(offset) {\r\n if (offset <= this.selectionStart) {\r\n const str = this.value.substring(offset, this.selectionStart);\r\n return this._finishDeduceEditorPosition(this.selectionStartPosition, str, -1);\r\n }\r\n if (offset >= this.selectionEnd) {\r\n const str = this.value.substring(this.selectionEnd, offset);\r\n return this._finishDeduceEditorPosition(this.selectionEndPosition, str, 1);\r\n }\r\n const str1 = this.value.substring(this.selectionStart, offset);\r\n if (str1.indexOf(String.fromCharCode(8230)) === -1) {\r\n return this._finishDeduceEditorPosition(this.selectionStartPosition, str1, 1);\r\n }\r\n const str2 = this.value.substring(offset, this.selectionEnd);\r\n return this._finishDeduceEditorPosition(this.selectionEndPosition, str2, -1);\r\n }\r\n _finishDeduceEditorPosition(anchor, deltaText, signum) {\r\n let lineFeedCnt = 0;\r\n let lastLineFeedIndex = -1;\r\n while ((lastLineFeedIndex = deltaText.indexOf('\\n', lastLineFeedIndex + 1)) !== -1) {\r\n lineFeedCnt++;\r\n }\r\n return [anchor, signum * deltaText.length, lineFeedCnt];\r\n }\r\n static selectedText(text) {\r\n return new TextAreaState(text, 0, text.length, null, null);\r\n }\r\n static deduceInput(previousState, currentState, couldBeEmojiInput) {\r\n if (!previousState) {\r\n // This is the EMPTY state\r\n return {\r\n text: '',\r\n replaceCharCnt: 0\r\n };\r\n }\r\n // console.log('------------------------deduceInput');\r\n // console.log('PREVIOUS STATE: ' + previousState.toString());\r\n // console.log('CURRENT STATE: ' + currentState.toString());\r\n let previousValue = previousState.value;\r\n let previousSelectionStart = previousState.selectionStart;\r\n let previousSelectionEnd = previousState.selectionEnd;\r\n let currentValue = currentState.value;\r\n let currentSelectionStart = currentState.selectionStart;\r\n let currentSelectionEnd = currentState.selectionEnd;\r\n // Strip the previous suffix from the value (without interfering with the current selection)\r\n const previousSuffix = previousValue.substring(previousSelectionEnd);\r\n const currentSuffix = currentValue.substring(currentSelectionEnd);\r\n const suffixLength = strings.commonSuffixLength(previousSuffix, currentSuffix);\r\n currentValue = currentValue.substring(0, currentValue.length - suffixLength);\r\n previousValue = previousValue.substring(0, previousValue.length - suffixLength);\r\n const previousPrefix = previousValue.substring(0, previousSelectionStart);\r\n const currentPrefix = currentValue.substring(0, currentSelectionStart);\r\n const prefixLength = strings.commonPrefixLength(previousPrefix, currentPrefix);\r\n currentValue = currentValue.substring(prefixLength);\r\n previousValue = previousValue.substring(prefixLength);\r\n currentSelectionStart -= prefixLength;\r\n previousSelectionStart -= prefixLength;\r\n currentSelectionEnd -= prefixLength;\r\n previousSelectionEnd -= prefixLength;\r\n // console.log('AFTER DIFFING PREVIOUS STATE: <' + previousValue + '>, selectionStart: ' + previousSelectionStart + ', selectionEnd: ' + previousSelectionEnd);\r\n // console.log('AFTER DIFFING CURRENT STATE: <' + currentValue + '>, selectionStart: ' + currentSelectionStart + ', selectionEnd: ' + currentSelectionEnd);\r\n if (couldBeEmojiInput && currentSelectionStart === currentSelectionEnd && previousValue.length > 0) {\r\n // on OSX, emojis from the emoji picker are inserted at random locations\r\n // the only hints we can use is that the selection is immediately after the inserted emoji\r\n // and that none of the old text has been deleted\r\n let potentialEmojiInput = null;\r\n if (currentSelectionStart === currentValue.length) {\r\n // emoji potentially inserted \"somewhere\" after the previous selection => it should appear at the end of `currentValue`\r\n if (strings.startsWith(currentValue, previousValue)) {\r\n // only if all of the old text is accounted for\r\n potentialEmojiInput = currentValue.substring(previousValue.length);\r\n }\r\n }\r\n else {\r\n // emoji potentially inserted \"somewhere\" before the previous selection => it should appear at the start of `currentValue`\r\n if (strings.endsWith(currentValue, previousValue)) {\r\n // only if all of the old text is accounted for\r\n potentialEmojiInput = currentValue.substring(0, currentValue.length - previousValue.length);\r\n }\r\n }\r\n if (potentialEmojiInput !== null && potentialEmojiInput.length > 0) {\r\n // now we check that this is indeed an emoji\r\n // emojis can grow quite long, so a length check is of no help\r\n // e.g. 1F3F4 E0067 E0062 E0065 E006E E0067 E007F ; fully-qualified # 🏴󠁧󠁢󠁥󠁮󠁧󠁿 England\r\n // Oftentimes, emojis use Variation Selector-16 (U+FE0F), so that is a good hint\r\n // http://emojipedia.org/variation-selector-16/\r\n // > An invisible codepoint which specifies that the preceding character\r\n // > should be displayed with emoji presentation. Only required if the\r\n // > preceding character defaults to text presentation.\r\n if (/\\uFE0F/.test(potentialEmojiInput) || strings.containsEmoji(potentialEmojiInput)) {\r\n return {\r\n text: potentialEmojiInput,\r\n replaceCharCnt: 0\r\n };\r\n }\r\n }\r\n }\r\n if (currentSelectionStart === currentSelectionEnd) {\r\n // composition accept case (noticed in FF + Japanese)\r\n // [blahblah] => blahblah|\r\n if (previousValue === currentValue\r\n && previousSelectionStart === 0\r\n && previousSelectionEnd === previousValue.length\r\n && currentSelectionStart === currentValue.length\r\n && currentValue.indexOf('\\n') === -1) {\r\n if (strings.containsFullWidthCharacter(currentValue)) {\r\n return {\r\n text: '',\r\n replaceCharCnt: 0\r\n };\r\n }\r\n }\r\n // no current selection\r\n const replacePreviousCharacters = (previousPrefix.length - prefixLength);\r\n // console.log('REMOVE PREVIOUS: ' + (previousPrefix.length - prefixLength) + ' chars');\r\n return {\r\n text: currentValue,\r\n replaceCharCnt: replacePreviousCharacters\r\n };\r\n }\r\n // there is a current selection => composition case\r\n const replacePreviousCharacters = previousSelectionEnd - previousSelectionStart;\r\n return {\r\n text: currentValue,\r\n replaceCharCnt: replacePreviousCharacters\r\n };\r\n }\r\n}\r\nTextAreaState.EMPTY = new TextAreaState('', 0, 0, null, null);\r\nexport class PagedScreenReaderStrategy {\r\n static _getPageOfLine(lineNumber, linesPerPage) {\r\n return Math.floor((lineNumber - 1) / linesPerPage);\r\n }\r\n static _getRangeForPage(page, linesPerPage) {\r\n const offset = page * linesPerPage;\r\n const startLineNumber = offset + 1;\r\n const endLineNumber = offset + linesPerPage;\r\n return new Range(startLineNumber, 1, endLineNumber + 1, 1);\r\n }\r\n static fromEditorSelection(previousState, model, selection, linesPerPage, trimLongText) {\r\n const selectionStartPage = PagedScreenReaderStrategy._getPageOfLine(selection.startLineNumber, linesPerPage);\r\n const selectionStartPageRange = PagedScreenReaderStrategy._getRangeForPage(selectionStartPage, linesPerPage);\r\n const selectionEndPage = PagedScreenReaderStrategy._getPageOfLine(selection.endLineNumber, linesPerPage);\r\n const selectionEndPageRange = PagedScreenReaderStrategy._getRangeForPage(selectionEndPage, linesPerPage);\r\n const pretextRange = selectionStartPageRange.intersectRanges(new Range(1, 1, selection.startLineNumber, selection.startColumn));\r\n let pretext = model.getValueInRange(pretextRange, 1 /* LF */);\r\n const lastLine = model.getLineCount();\r\n const lastLineMaxColumn = model.getLineMaxColumn(lastLine);\r\n const posttextRange = selectionEndPageRange.intersectRanges(new Range(selection.endLineNumber, selection.endColumn, lastLine, lastLineMaxColumn));\r\n let posttext = model.getValueInRange(posttextRange, 1 /* LF */);\r\n let text;\r\n if (selectionStartPage === selectionEndPage || selectionStartPage + 1 === selectionEndPage) {\r\n // take full selection\r\n text = model.getValueInRange(selection, 1 /* LF */);\r\n }\r\n else {\r\n const selectionRange1 = selectionStartPageRange.intersectRanges(selection);\r\n const selectionRange2 = selectionEndPageRange.intersectRanges(selection);\r\n text = (model.getValueInRange(selectionRange1, 1 /* LF */)\r\n + String.fromCharCode(8230)\r\n + model.getValueInRange(selectionRange2, 1 /* LF */));\r\n }\r\n // Chromium handles very poorly text even of a few thousand chars\r\n // Cut text to avoid stalling the entire UI\r\n if (trimLongText) {\r\n const LIMIT_CHARS = 500;\r\n if (pretext.length > LIMIT_CHARS) {\r\n pretext = pretext.substring(pretext.length - LIMIT_CHARS, pretext.length);\r\n }\r\n if (posttext.length > LIMIT_CHARS) {\r\n posttext = posttext.substring(0, LIMIT_CHARS);\r\n }\r\n if (text.length > 2 * LIMIT_CHARS) {\r\n text = text.substring(0, LIMIT_CHARS) + String.fromCharCode(8230) + text.substring(text.length - LIMIT_CHARS, text.length);\r\n }\r\n }\r\n return new TextAreaState(pretext + text + posttext, pretext.length, pretext.length + text.length, new Position(selection.startLineNumber, selection.startColumn), new Position(selection.endLineNumber, selection.endColumn));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorKeybindingCancellationTokenSource } from './keybindingCancellation.js';\r\nexport class EditorState {\r\n constructor(editor, flags) {\r\n this.flags = flags;\r\n if ((this.flags & 1 /* Value */) !== 0) {\r\n const model = editor.getModel();\r\n this.modelVersionId = model ? strings.format('{0}#{1}', model.uri.toString(), model.getVersionId()) : null;\r\n }\r\n else {\r\n this.modelVersionId = null;\r\n }\r\n if ((this.flags & 4 /* Position */) !== 0) {\r\n this.position = editor.getPosition();\r\n }\r\n else {\r\n this.position = null;\r\n }\r\n if ((this.flags & 2 /* Selection */) !== 0) {\r\n this.selection = editor.getSelection();\r\n }\r\n else {\r\n this.selection = null;\r\n }\r\n if ((this.flags & 8 /* Scroll */) !== 0) {\r\n this.scrollLeft = editor.getScrollLeft();\r\n this.scrollTop = editor.getScrollTop();\r\n }\r\n else {\r\n this.scrollLeft = -1;\r\n this.scrollTop = -1;\r\n }\r\n }\r\n _equals(other) {\r\n if (!(other instanceof EditorState)) {\r\n return false;\r\n }\r\n const state = other;\r\n if (this.modelVersionId !== state.modelVersionId) {\r\n return false;\r\n }\r\n if (this.scrollLeft !== state.scrollLeft || this.scrollTop !== state.scrollTop) {\r\n return false;\r\n }\r\n if (!this.position && state.position || this.position && !state.position || this.position && state.position && !this.position.equals(state.position)) {\r\n return false;\r\n }\r\n if (!this.selection && state.selection || this.selection && !state.selection || this.selection && state.selection && !this.selection.equalsRange(state.selection)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n validate(editor) {\r\n return this._equals(new EditorState(editor, this.flags));\r\n }\r\n}\r\n/**\r\n * A cancellation token source that cancels when the editor changes as expressed\r\n * by the provided flags\r\n * @param range If provided, changes in position and selection within this range will not trigger cancellation\r\n */\r\nexport class EditorStateCancellationTokenSource extends EditorKeybindingCancellationTokenSource {\r\n constructor(editor, flags, range, parent) {\r\n super(editor, parent);\r\n this.editor = editor;\r\n this._listener = new DisposableStore();\r\n if (flags & 4 /* Position */) {\r\n this._listener.add(editor.onDidChangeCursorPosition(e => {\r\n if (!range || !Range.containsPosition(range, e.position)) {\r\n this.cancel();\r\n }\r\n }));\r\n }\r\n if (flags & 2 /* Selection */) {\r\n this._listener.add(editor.onDidChangeCursorSelection(e => {\r\n if (!range || !Range.containsRange(range, e.selection)) {\r\n this.cancel();\r\n }\r\n }));\r\n }\r\n if (flags & 8 /* Scroll */) {\r\n this._listener.add(editor.onDidScrollChange(_ => this.cancel()));\r\n }\r\n if (flags & 1 /* Value */) {\r\n this._listener.add(editor.onDidChangeModel(_ => this.cancel()));\r\n this._listener.add(editor.onDidChangeModelContent(_ => this.cancel()));\r\n }\r\n }\r\n dispose() {\r\n this._listener.dispose();\r\n super.dispose();\r\n }\r\n}\r\n/**\r\n * A cancellation token source that cancels when the provided model changes\r\n */\r\nexport class TextModelCancellationTokenSource extends CancellationTokenSource {\r\n constructor(model, parent) {\r\n super(parent);\r\n this._listener = model.onDidChangeContent(() => this.cancel());\r\n }\r\n dispose() {\r\n this._listener.dispose();\r\n super.dispose();\r\n }\r\n}\r\nexport class StableEditorScrollState {\r\n constructor(_visiblePosition, _visiblePositionScrollDelta, _cursorPosition) {\r\n this._visiblePosition = _visiblePosition;\r\n this._visiblePositionScrollDelta = _visiblePositionScrollDelta;\r\n this._cursorPosition = _cursorPosition;\r\n }\r\n static capture(editor) {\r\n let visiblePosition = null;\r\n let visiblePositionScrollDelta = 0;\r\n if (editor.getScrollTop() !== 0) {\r\n const visibleRanges = editor.getVisibleRanges();\r\n if (visibleRanges.length > 0) {\r\n visiblePosition = visibleRanges[0].getStartPosition();\r\n const visiblePositionScrollTop = editor.getTopForPosition(visiblePosition.lineNumber, visiblePosition.column);\r\n visiblePositionScrollDelta = editor.getScrollTop() - visiblePositionScrollTop;\r\n }\r\n }\r\n return new StableEditorScrollState(visiblePosition, visiblePositionScrollDelta, editor.getPosition());\r\n }\r\n restore(editor) {\r\n if (this._visiblePosition) {\r\n const visiblePositionScrollTop = editor.getTopForPosition(this._visiblePosition.lineNumber, this._visiblePosition.column);\r\n editor.setScrollTop(visiblePositionScrollTop + this._visiblePositionScrollDelta);\r\n }\r\n }\r\n restoreRelativeVerticalPositionOfCursor(editor) {\r\n const currentCursorPosition = editor.getPosition();\r\n if (!this._cursorPosition || !currentCursorPosition) {\r\n return;\r\n }\r\n const offset = editor.getTopForLineNumber(currentCursorPosition.lineNumber) - editor.getTopForLineNumber(this._cursorPosition.lineNumber);\r\n editor.setScrollTop(editor.getScrollTop() + offset);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorCommand, registerEditorCommand } from '../editorExtensions.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nconst IEditorCancellationTokens = createDecorator('IEditorCancelService');\r\nconst ctxCancellableOperation = new RawContextKey('cancellableOperation', false);\r\nregisterSingleton(IEditorCancellationTokens, class {\r\n constructor() {\r\n this._tokens = new WeakMap();\r\n }\r\n add(editor, cts) {\r\n let data = this._tokens.get(editor);\r\n if (!data) {\r\n data = editor.invokeWithinContext(accessor => {\r\n const key = ctxCancellableOperation.bindTo(accessor.get(IContextKeyService));\r\n const tokens = new LinkedList();\r\n return { key, tokens };\r\n });\r\n this._tokens.set(editor, data);\r\n }\r\n let removeFn;\r\n data.key.set(true);\r\n removeFn = data.tokens.push(cts);\r\n return () => {\r\n // remove w/o cancellation\r\n if (removeFn) {\r\n removeFn();\r\n data.key.set(!data.tokens.isEmpty());\r\n removeFn = undefined;\r\n }\r\n };\r\n }\r\n cancel(editor) {\r\n const data = this._tokens.get(editor);\r\n if (!data) {\r\n return;\r\n }\r\n // remove with cancellation\r\n const cts = data.tokens.pop();\r\n if (cts) {\r\n cts.cancel();\r\n data.key.set(!data.tokens.isEmpty());\r\n }\r\n }\r\n}, true);\r\nexport class EditorKeybindingCancellationTokenSource extends CancellationTokenSource {\r\n constructor(editor, parent) {\r\n super(parent);\r\n this.editor = editor;\r\n this._unregister = editor.invokeWithinContext(accessor => accessor.get(IEditorCancellationTokens).add(editor, this));\r\n }\r\n dispose() {\r\n this._unregister();\r\n super.dispose();\r\n }\r\n}\r\nregisterEditorCommand(new class extends EditorCommand {\r\n constructor() {\r\n super({\r\n id: 'editor.cancelOperation',\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */,\r\n primary: 9 /* Escape */\r\n },\r\n precondition: ctxCancellableOperation\r\n });\r\n }\r\n runEditorCommand(accessor, editor) {\r\n accessor.get(IEditorCancellationTokens).cancel(editor);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as editorCommon from '../common/editorCommon.js';\r\n/**\r\n *@internal\r\n */\r\nexport function isCodeEditor(thing) {\r\n if (thing && typeof thing.getEditorType === 'function') {\r\n return thing.getEditorType() === editorCommon.EditorType.ICodeEditor;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n *@internal\r\n */\r\nexport function isDiffEditor(thing) {\r\n if (thing && typeof thing.getEditorType === 'function') {\r\n return thing.getEditorType() === editorCommon.EditorType.IDiffEditor;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\n/**\r\n *@internal\r\n */\r\nexport function getCodeEditor(thing) {\r\n if (isCodeEditor(thing)) {\r\n return thing;\r\n }\r\n if (isDiffEditor(thing)) {\r\n return thing.getModifiedEditor();\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../base/browser/dom.js';\r\nimport { GlobalMouseMoveMonitor } from '../../base/browser/globalMouseMoveMonitor.js';\r\nimport { StandardMouseEvent } from '../../base/browser/mouseEvent.js';\r\nimport { Disposable } from '../../base/common/lifecycle.js';\r\n/**\r\n * Coordinates relative to the whole document (e.g. mouse event's pageX and pageY)\r\n */\r\nexport class PageCoordinates {\r\n constructor(x, y) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n toClientCoordinates() {\r\n return new ClientCoordinates(this.x - dom.StandardWindow.scrollX, this.y - dom.StandardWindow.scrollY);\r\n }\r\n}\r\n/**\r\n * Coordinates within the application's client area (i.e. origin is document's scroll position).\r\n *\r\n * For example, clicking in the top-left corner of the client area will\r\n * always result in a mouse event with a client.x value of 0, regardless\r\n * of whether the page is scrolled horizontally.\r\n */\r\nexport class ClientCoordinates {\r\n constructor(clientX, clientY) {\r\n this.clientX = clientX;\r\n this.clientY = clientY;\r\n }\r\n toPageCoordinates() {\r\n return new PageCoordinates(this.clientX + dom.StandardWindow.scrollX, this.clientY + dom.StandardWindow.scrollY);\r\n }\r\n}\r\n/**\r\n * The position of the editor in the page.\r\n */\r\nexport class EditorPagePosition {\r\n constructor(x, y, width, height) {\r\n this.x = x;\r\n this.y = y;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n}\r\nexport function createEditorPagePosition(editorViewDomNode) {\r\n const editorPos = dom.getDomNodePagePosition(editorViewDomNode);\r\n return new EditorPagePosition(editorPos.left, editorPos.top, editorPos.width, editorPos.height);\r\n}\r\nexport class EditorMouseEvent extends StandardMouseEvent {\r\n constructor(e, editorViewDomNode) {\r\n super(e);\r\n this.pos = new PageCoordinates(this.posx, this.posy);\r\n this.editorPos = createEditorPagePosition(editorViewDomNode);\r\n }\r\n}\r\nexport class EditorMouseEventFactory {\r\n constructor(editorViewDomNode) {\r\n this._editorViewDomNode = editorViewDomNode;\r\n }\r\n _create(e) {\r\n return new EditorMouseEvent(e, this._editorViewDomNode);\r\n }\r\n onContextMenu(target, callback) {\r\n return dom.addDisposableListener(target, 'contextmenu', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseUp(target, callback) {\r\n return dom.addDisposableListener(target, 'mouseup', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseDown(target, callback) {\r\n return dom.addDisposableListener(target, 'mousedown', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseLeave(target, callback) {\r\n return dom.addDisposableNonBubblingMouseOutListener(target, (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onMouseMoveThrottled(target, callback, merger, minimumTimeMs) {\r\n const myMerger = (lastEvent, currentEvent) => {\r\n return merger(lastEvent, this._create(currentEvent));\r\n };\r\n return dom.addDisposableThrottledListener(target, 'mousemove', callback, myMerger, minimumTimeMs);\r\n }\r\n}\r\nexport class EditorPointerEventFactory {\r\n constructor(editorViewDomNode) {\r\n this._editorViewDomNode = editorViewDomNode;\r\n }\r\n _create(e) {\r\n return new EditorMouseEvent(e, this._editorViewDomNode);\r\n }\r\n onPointerUp(target, callback) {\r\n return dom.addDisposableListener(target, 'pointerup', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onPointerDown(target, callback) {\r\n return dom.addDisposableListener(target, 'pointerdown', (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onPointerLeave(target, callback) {\r\n return dom.addDisposableNonBubblingPointerOutListener(target, (e) => {\r\n callback(this._create(e));\r\n });\r\n }\r\n onPointerMoveThrottled(target, callback, merger, minimumTimeMs) {\r\n const myMerger = (lastEvent, currentEvent) => {\r\n return merger(lastEvent, this._create(currentEvent));\r\n };\r\n return dom.addDisposableThrottledListener(target, 'pointermove', callback, myMerger, minimumTimeMs);\r\n }\r\n}\r\nexport class GlobalEditorMouseMoveMonitor extends Disposable {\r\n constructor(editorViewDomNode) {\r\n super();\r\n this._editorViewDomNode = editorViewDomNode;\r\n this._globalMouseMoveMonitor = this._register(new GlobalMouseMoveMonitor());\r\n this._keydownListener = null;\r\n }\r\n startMonitoring(initialElement, initialButtons, merger, mouseMoveCallback, onStopCallback) {\r\n // Add a <<capture>> keydown event listener that will cancel the monitoring\r\n // if something other than a modifier key is pressed\r\n this._keydownListener = dom.addStandardDisposableListener(document, 'keydown', (e) => {\r\n const kb = e.toKeybinding();\r\n if (kb.isModifierKey()) {\r\n // Allow modifier keys\r\n return;\r\n }\r\n this._globalMouseMoveMonitor.stopMonitoring(true);\r\n }, true);\r\n const myMerger = (lastEvent, currentEvent) => {\r\n return merger(lastEvent, new EditorMouseEvent(currentEvent, this._editorViewDomNode));\r\n };\r\n this._globalMouseMoveMonitor.startMonitoring(initialElement, initialButtons, myMerger, mouseMoveCallback, () => {\r\n this._keydownListener.dispose();\r\n onStopCallback();\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nimport { illegalArgument } from '../../base/common/errors.js';\r\nimport { URI } from '../../base/common/uri.js';\r\nimport { ICodeEditorService } from './services/codeEditorService.js';\r\nimport { Position } from '../common/core/position.js';\r\nimport { IModelService } from '../common/services/modelService.js';\r\nimport { ITextModelService } from '../common/services/resolverService.js';\r\nimport { MenuId, MenuRegistry } from '../../platform/actions/common/actions.js';\r\nimport { CommandsRegistry } from '../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../platform/contextkey/common/contextkey.js';\r\nimport { KeybindingsRegistry } from '../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { Registry } from '../../platform/registry/common/platform.js';\r\nimport { ITelemetryService } from '../../platform/telemetry/common/telemetry.js';\r\nimport { withNullAsUndefined, assertType } from '../../base/common/types.js';\r\nexport class Command {\r\n constructor(opts) {\r\n this.id = opts.id;\r\n this.precondition = opts.precondition;\r\n this._kbOpts = opts.kbOpts;\r\n this._menuOpts = opts.menuOpts;\r\n this._description = opts.description;\r\n }\r\n register() {\r\n if (Array.isArray(this._menuOpts)) {\r\n this._menuOpts.forEach(this._registerMenuItem, this);\r\n }\r\n else if (this._menuOpts) {\r\n this._registerMenuItem(this._menuOpts);\r\n }\r\n if (this._kbOpts) {\r\n let kbWhen = this._kbOpts.kbExpr;\r\n if (this.precondition) {\r\n if (kbWhen) {\r\n kbWhen = ContextKeyExpr.and(kbWhen, this.precondition);\r\n }\r\n else {\r\n kbWhen = this.precondition;\r\n }\r\n }\r\n KeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: this.id,\r\n handler: (accessor, args) => this.runCommand(accessor, args),\r\n weight: this._kbOpts.weight,\r\n args: this._kbOpts.args,\r\n when: kbWhen,\r\n primary: this._kbOpts.primary,\r\n secondary: this._kbOpts.secondary,\r\n win: this._kbOpts.win,\r\n linux: this._kbOpts.linux,\r\n mac: this._kbOpts.mac,\r\n description: this._description\r\n });\r\n }\r\n else {\r\n CommandsRegistry.registerCommand({\r\n id: this.id,\r\n handler: (accessor, args) => this.runCommand(accessor, args),\r\n description: this._description\r\n });\r\n }\r\n }\r\n _registerMenuItem(item) {\r\n MenuRegistry.appendMenuItem(item.menuId, {\r\n group: item.group,\r\n command: {\r\n id: this.id,\r\n title: item.title,\r\n icon: item.icon\r\n // precondition: this.precondition\r\n },\r\n when: item.when,\r\n order: item.order\r\n });\r\n }\r\n}\r\nexport class MultiCommand extends Command {\r\n constructor() {\r\n super(...arguments);\r\n this._implementations = [];\r\n }\r\n /**\r\n * A higher priority gets to be looked at first\r\n */\r\n addImplementation(priority, implementation) {\r\n this._implementations.push([priority, implementation]);\r\n this._implementations.sort((a, b) => b[0] - a[0]);\r\n return {\r\n dispose: () => {\r\n for (let i = 0; i < this._implementations.length; i++) {\r\n if (this._implementations[i][1] === implementation) {\r\n this._implementations.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n runCommand(accessor, args) {\r\n for (const impl of this._implementations) {\r\n if (impl[1](accessor, args)) {\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n//#endregion\r\n/**\r\n * A command that delegates to another command's implementation.\r\n *\r\n * This lets different commands be registered but share the same implementation\r\n */\r\nexport class ProxyCommand extends Command {\r\n constructor(command, opts) {\r\n super(opts);\r\n this.command = command;\r\n }\r\n runCommand(accessor, args) {\r\n return this.command.runCommand(accessor, args);\r\n }\r\n}\r\nexport class EditorCommand extends Command {\r\n /**\r\n * Create a command class that is bound to a certain editor contribution.\r\n */\r\n static bindToContribution(controllerGetter) {\r\n return class EditorControllerCommandImpl extends EditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._callback = opts.handler;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n const controller = controllerGetter(editor);\r\n if (controller) {\r\n this._callback(controllerGetter(editor), args);\r\n }\r\n }\r\n };\r\n }\r\n runCommand(accessor, args) {\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n // Find the editor with text focus or active\r\n const editor = codeEditorService.getFocusedCodeEditor() || codeEditorService.getActiveCodeEditor();\r\n if (!editor) {\r\n // well, at least we tried...\r\n return;\r\n }\r\n return editor.invokeWithinContext((editorAccessor) => {\r\n const kbService = editorAccessor.get(IContextKeyService);\r\n if (!kbService.contextMatchesRules(withNullAsUndefined(this.precondition))) {\r\n // precondition does not hold\r\n return;\r\n }\r\n return this.runEditorCommand(editorAccessor, editor, args);\r\n });\r\n }\r\n}\r\nexport class EditorAction extends EditorCommand {\r\n constructor(opts) {\r\n super(EditorAction.convertOptions(opts));\r\n this.label = opts.label;\r\n this.alias = opts.alias;\r\n }\r\n static convertOptions(opts) {\r\n let menuOpts;\r\n if (Array.isArray(opts.menuOpts)) {\r\n menuOpts = opts.menuOpts;\r\n }\r\n else if (opts.menuOpts) {\r\n menuOpts = [opts.menuOpts];\r\n }\r\n else {\r\n menuOpts = [];\r\n }\r\n function withDefaults(item) {\r\n if (!item.menuId) {\r\n item.menuId = MenuId.EditorContext;\r\n }\r\n if (!item.title) {\r\n item.title = opts.label;\r\n }\r\n item.when = ContextKeyExpr.and(opts.precondition, item.when);\r\n return item;\r\n }\r\n if (Array.isArray(opts.contextMenuOpts)) {\r\n menuOpts.push(...opts.contextMenuOpts.map(withDefaults));\r\n }\r\n else if (opts.contextMenuOpts) {\r\n menuOpts.push(withDefaults(opts.contextMenuOpts));\r\n }\r\n opts.menuOpts = menuOpts;\r\n return opts;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n this.reportTelemetry(accessor, editor);\r\n return this.run(accessor, editor, args || {});\r\n }\r\n reportTelemetry(accessor, editor) {\r\n accessor.get(ITelemetryService).publicLog2('editorActionInvoked', { name: this.label, id: this.id });\r\n }\r\n}\r\nexport class MultiEditorAction extends EditorAction {\r\n constructor(opts) {\r\n super(opts);\r\n this._implementations = [];\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n this.reportTelemetry(accessor, editor);\r\n for (const impl of this._implementations) {\r\n if (impl[1](accessor, args)) {\r\n return;\r\n }\r\n }\r\n return this.run(accessor, editor, args || {});\r\n }\r\n}\r\n//#endregion\r\n// --- Registration of commands and actions\r\nexport function registerLanguageCommand(id, handler) {\r\n CommandsRegistry.registerCommand(id, (accessor, args) => handler(accessor, args || {}));\r\n}\r\nexport function registerDefaultLanguageCommand(id, handler) {\r\n registerLanguageCommand(id, function (accessor, args) {\r\n const { resource, position } = args;\r\n if (!(resource instanceof URI)) {\r\n throw illegalArgument('resource');\r\n }\r\n if (!Position.isIPosition(position)) {\r\n throw illegalArgument('position');\r\n }\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (model) {\r\n const editorPosition = Position.lift(position);\r\n return handler(model, editorPosition, args);\r\n }\r\n return accessor.get(ITextModelService).createModelReference(resource).then(reference => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result = handler(reference.object.textEditorModel, Position.lift(position), args);\r\n resolve(result);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n }).finally(() => {\r\n reference.dispose();\r\n });\r\n });\r\n });\r\n}\r\nexport function registerModelAndPositionCommand(id, handler) {\r\n CommandsRegistry.registerCommand(id, function (accessor, ...args) {\r\n const [resource, position] = args;\r\n assertType(URI.isUri(resource));\r\n assertType(Position.isIPosition(position));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (model) {\r\n const editorPosition = Position.lift(position);\r\n return handler(model, editorPosition, ...args.slice(2));\r\n }\r\n return accessor.get(ITextModelService).createModelReference(resource).then(reference => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result = handler(reference.object.textEditorModel, Position.lift(position), args.slice(2));\r\n resolve(result);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n }).finally(() => {\r\n reference.dispose();\r\n });\r\n });\r\n });\r\n}\r\nexport function registerModelCommand(id, handler) {\r\n CommandsRegistry.registerCommand(id, function (accessor, ...args) {\r\n const [resource] = args;\r\n assertType(URI.isUri(resource));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (model) {\r\n return handler(model, ...args.slice(1));\r\n }\r\n return accessor.get(ITextModelService).createModelReference(resource).then(reference => {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const result = handler(reference.object.textEditorModel, args.slice(1));\r\n resolve(result);\r\n }\r\n catch (err) {\r\n reject(err);\r\n }\r\n }).finally(() => {\r\n reference.dispose();\r\n });\r\n });\r\n });\r\n}\r\nexport function registerEditorCommand(editorCommand) {\r\n EditorContributionRegistry.INSTANCE.registerEditorCommand(editorCommand);\r\n return editorCommand;\r\n}\r\nexport function registerEditorAction(ctor) {\r\n const action = new ctor();\r\n EditorContributionRegistry.INSTANCE.registerEditorAction(action);\r\n return action;\r\n}\r\nexport function registerMultiEditorAction(action) {\r\n EditorContributionRegistry.INSTANCE.registerEditorAction(action);\r\n return action;\r\n}\r\nexport function registerInstantiatedEditorAction(editorAction) {\r\n EditorContributionRegistry.INSTANCE.registerEditorAction(editorAction);\r\n}\r\nexport function registerEditorContribution(id, ctor) {\r\n EditorContributionRegistry.INSTANCE.registerEditorContribution(id, ctor);\r\n}\r\nexport var EditorExtensionsRegistry;\r\n(function (EditorExtensionsRegistry) {\r\n function getEditorCommand(commandId) {\r\n return EditorContributionRegistry.INSTANCE.getEditorCommand(commandId);\r\n }\r\n EditorExtensionsRegistry.getEditorCommand = getEditorCommand;\r\n function getEditorActions() {\r\n return EditorContributionRegistry.INSTANCE.getEditorActions();\r\n }\r\n EditorExtensionsRegistry.getEditorActions = getEditorActions;\r\n function getEditorContributions() {\r\n return EditorContributionRegistry.INSTANCE.getEditorContributions();\r\n }\r\n EditorExtensionsRegistry.getEditorContributions = getEditorContributions;\r\n function getSomeEditorContributions(ids) {\r\n return EditorContributionRegistry.INSTANCE.getEditorContributions().filter(c => ids.indexOf(c.id) >= 0);\r\n }\r\n EditorExtensionsRegistry.getSomeEditorContributions = getSomeEditorContributions;\r\n function getDiffEditorContributions() {\r\n return EditorContributionRegistry.INSTANCE.getDiffEditorContributions();\r\n }\r\n EditorExtensionsRegistry.getDiffEditorContributions = getDiffEditorContributions;\r\n})(EditorExtensionsRegistry || (EditorExtensionsRegistry = {}));\r\n// Editor extension points\r\nconst Extensions = {\r\n EditorCommonContributions: 'editor.contributions'\r\n};\r\nclass EditorContributionRegistry {\r\n constructor() {\r\n this.editorContributions = [];\r\n this.diffEditorContributions = [];\r\n this.editorActions = [];\r\n this.editorCommands = Object.create(null);\r\n }\r\n registerEditorContribution(id, ctor) {\r\n this.editorContributions.push({ id, ctor: ctor });\r\n }\r\n getEditorContributions() {\r\n return this.editorContributions.slice(0);\r\n }\r\n getDiffEditorContributions() {\r\n return this.diffEditorContributions.slice(0);\r\n }\r\n registerEditorAction(action) {\r\n action.register();\r\n this.editorActions.push(action);\r\n }\r\n getEditorActions() {\r\n return this.editorActions.slice(0);\r\n }\r\n registerEditorCommand(editorCommand) {\r\n editorCommand.register();\r\n this.editorCommands[editorCommand.id] = editorCommand;\r\n }\r\n getEditorCommand(commandId) {\r\n return (this.editorCommands[commandId] || null);\r\n }\r\n}\r\nEditorContributionRegistry.INSTANCE = new EditorContributionRegistry();\r\nRegistry.add(Extensions.EditorCommonContributions, EditorContributionRegistry.INSTANCE);\r\nfunction registerCommand(command) {\r\n command.register();\r\n return command;\r\n}\r\nexport const UndoCommand = registerCommand(new MultiCommand({\r\n id: 'undo',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: 0 /* EditorCore */,\r\n primary: 2048 /* CtrlCmd */ | 56 /* KEY_Z */\r\n },\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '1_do',\r\n title: nls.localize({ key: 'miUndo', comment: ['&& denotes a mnemonic'] }, \"&&Undo\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('undo', \"Undo\"),\r\n order: 1\r\n }]\r\n}));\r\nregisterCommand(new ProxyCommand(UndoCommand, { id: 'default:undo', precondition: undefined }));\r\nexport const RedoCommand = registerCommand(new MultiCommand({\r\n id: 'redo',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: 0 /* EditorCore */,\r\n primary: 2048 /* CtrlCmd */ | 55 /* KEY_Y */,\r\n secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 56 /* KEY_Z */],\r\n mac: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 56 /* KEY_Z */ }\r\n },\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '1_do',\r\n title: nls.localize({ key: 'miRedo', comment: ['&& denotes a mnemonic'] }, \"&&Redo\"),\r\n order: 2\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('redo', \"Redo\"),\r\n order: 1\r\n }]\r\n}));\r\nregisterCommand(new ProxyCommand(RedoCommand, { id: 'default:redo', precondition: undefined }));\r\nexport const SelectAllCommand = registerCommand(new MultiCommand({\r\n id: 'editor.action.selectAll',\r\n precondition: undefined,\r\n kbOpts: {\r\n weight: 0 /* EditorCore */,\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 31 /* KEY_A */\r\n },\r\n menuOpts: [{\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '1_basic',\r\n title: nls.localize({ key: 'miSelectAll', comment: ['&& denotes a mnemonic'] }, \"&&Select All\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('selectAll', \"Select All\"),\r\n order: 1\r\n }]\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class AbstractCodeEditorService extends Disposable {\r\n constructor() {\r\n super();\r\n this._onCodeEditorAdd = this._register(new Emitter());\r\n this.onCodeEditorAdd = this._onCodeEditorAdd.event;\r\n this._onCodeEditorRemove = this._register(new Emitter());\r\n this.onCodeEditorRemove = this._onCodeEditorRemove.event;\r\n this._onDiffEditorAdd = this._register(new Emitter());\r\n this._onDiffEditorRemove = this._register(new Emitter());\r\n this._modelProperties = new Map();\r\n this._codeEditors = Object.create(null);\r\n this._diffEditors = Object.create(null);\r\n }\r\n addCodeEditor(editor) {\r\n this._codeEditors[editor.getId()] = editor;\r\n this._onCodeEditorAdd.fire(editor);\r\n }\r\n removeCodeEditor(editor) {\r\n if (delete this._codeEditors[editor.getId()]) {\r\n this._onCodeEditorRemove.fire(editor);\r\n }\r\n }\r\n listCodeEditors() {\r\n return Object.keys(this._codeEditors).map(id => this._codeEditors[id]);\r\n }\r\n addDiffEditor(editor) {\r\n this._diffEditors[editor.getId()] = editor;\r\n this._onDiffEditorAdd.fire(editor);\r\n }\r\n removeDiffEditor(editor) {\r\n if (delete this._diffEditors[editor.getId()]) {\r\n this._onDiffEditorRemove.fire(editor);\r\n }\r\n }\r\n listDiffEditors() {\r\n return Object.keys(this._diffEditors).map(id => this._diffEditors[id]);\r\n }\r\n getFocusedCodeEditor() {\r\n let editorWithWidgetFocus = null;\r\n const editors = this.listCodeEditors();\r\n for (const editor of editors) {\r\n if (editor.hasTextFocus()) {\r\n // bingo!\r\n return editor;\r\n }\r\n if (editor.hasWidgetFocus()) {\r\n editorWithWidgetFocus = editor;\r\n }\r\n }\r\n return editorWithWidgetFocus;\r\n }\r\n setModelProperty(resource, key, value) {\r\n const key1 = resource.toString();\r\n let dest;\r\n if (this._modelProperties.has(key1)) {\r\n dest = this._modelProperties.get(key1);\r\n }\r\n else {\r\n dest = new Map();\r\n this._modelProperties.set(key1, dest);\r\n }\r\n dest.set(key, value);\r\n }\r\n getModelProperty(resource, key) {\r\n const key1 = resource.toString();\r\n if (this._modelProperties.has(key1)) {\r\n const innerMap = this._modelProperties.get(key1);\r\n return innerMap.get(key);\r\n }\r\n return undefined;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { isObject } from '../../../base/common/types.js';\r\nexport const IBulkEditService = createDecorator('IWorkspaceEditService');\r\nfunction isWorkspaceFileEdit(thing) {\r\n return isObject(thing) && (Boolean(thing.newUri) || Boolean(thing.oldUri));\r\n}\r\nfunction isWorkspaceTextEdit(thing) {\r\n return isObject(thing) && URI.isUri(thing.resource) && isObject(thing.edit);\r\n}\r\nexport class ResourceEdit {\r\n constructor(metadata) {\r\n this.metadata = metadata;\r\n }\r\n static convert(edit) {\r\n return edit.edits.map(edit => {\r\n if (isWorkspaceTextEdit(edit)) {\r\n return new ResourceTextEdit(edit.resource, edit.edit, edit.modelVersionId, edit.metadata);\r\n }\r\n if (isWorkspaceFileEdit(edit)) {\r\n return new ResourceFileEdit(edit.oldUri, edit.newUri, edit.options, edit.metadata);\r\n }\r\n throw new Error('Unsupported edit');\r\n });\r\n }\r\n}\r\nexport class ResourceTextEdit extends ResourceEdit {\r\n constructor(resource, textEdit, versionId, metadata) {\r\n super(metadata);\r\n this.resource = resource;\r\n this.textEdit = textEdit;\r\n this.versionId = versionId;\r\n this.metadata = metadata;\r\n }\r\n}\r\nexport class ResourceFileEdit extends ResourceEdit {\r\n constructor(oldResource, newResource, options, metadata) {\r\n super(metadata);\r\n this.oldResource = oldResource;\r\n this.newResource = newResource;\r\n this.options = options;\r\n this.metadata = metadata;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ICodeEditorService = createDecorator('codeEditorService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { AbstractCodeEditorService } from './abstractCodeEditorService.js';\r\nimport { isThemeColor } from '../../common/editorCommon.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nexport class RefCountedStyleSheet {\r\n constructor(parent, editorId, styleSheet) {\r\n this._parent = parent;\r\n this._editorId = editorId;\r\n this._styleSheet = styleSheet;\r\n this._refCount = 0;\r\n }\r\n ref() {\r\n this._refCount++;\r\n }\r\n unref() {\r\n var _a;\r\n this._refCount--;\r\n if (this._refCount === 0) {\r\n (_a = this._styleSheet.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(this._styleSheet);\r\n this._parent._removeEditorStyleSheets(this._editorId);\r\n }\r\n }\r\n insertRule(rule, index) {\r\n const sheet = this._styleSheet.sheet;\r\n sheet.insertRule(rule, index);\r\n }\r\n removeRulesContainingSelector(ruleName) {\r\n dom.removeCSSRulesContainingSelector(ruleName, this._styleSheet);\r\n }\r\n}\r\nexport class GlobalStyleSheet {\r\n constructor(styleSheet) {\r\n this._styleSheet = styleSheet;\r\n }\r\n ref() {\r\n }\r\n unref() {\r\n }\r\n insertRule(rule, index) {\r\n const sheet = this._styleSheet.sheet;\r\n sheet.insertRule(rule, index);\r\n }\r\n removeRulesContainingSelector(ruleName) {\r\n dom.removeCSSRulesContainingSelector(ruleName, this._styleSheet);\r\n }\r\n}\r\nlet CodeEditorServiceImpl = class CodeEditorServiceImpl extends AbstractCodeEditorService {\r\n constructor(themeService, styleSheet = null) {\r\n super();\r\n this._decorationOptionProviders = new Map();\r\n this._editorStyleSheets = new Map();\r\n this._globalStyleSheet = styleSheet ? styleSheet : null;\r\n this._themeService = themeService;\r\n }\r\n _getOrCreateGlobalStyleSheet() {\r\n if (!this._globalStyleSheet) {\r\n this._globalStyleSheet = new GlobalStyleSheet(dom.createStyleSheet());\r\n }\r\n return this._globalStyleSheet;\r\n }\r\n _getOrCreateStyleSheet(editor) {\r\n if (!editor) {\r\n return this._getOrCreateGlobalStyleSheet();\r\n }\r\n const domNode = editor.getContainerDomNode();\r\n if (!dom.isInShadowDOM(domNode)) {\r\n return this._getOrCreateGlobalStyleSheet();\r\n }\r\n const editorId = editor.getId();\r\n if (!this._editorStyleSheets.has(editorId)) {\r\n const refCountedStyleSheet = new RefCountedStyleSheet(this, editorId, dom.createStyleSheet(domNode));\r\n this._editorStyleSheets.set(editorId, refCountedStyleSheet);\r\n }\r\n return this._editorStyleSheets.get(editorId);\r\n }\r\n _removeEditorStyleSheets(editorId) {\r\n this._editorStyleSheets.delete(editorId);\r\n }\r\n registerDecorationType(key, options, parentTypeKey, editor) {\r\n let provider = this._decorationOptionProviders.get(key);\r\n if (!provider) {\r\n const styleSheet = this._getOrCreateStyleSheet(editor);\r\n const providerArgs = {\r\n styleSheet: styleSheet,\r\n key: key,\r\n parentTypeKey: parentTypeKey,\r\n options: options || Object.create(null)\r\n };\r\n if (!parentTypeKey) {\r\n provider = new DecorationTypeOptionsProvider(this._themeService, styleSheet, providerArgs);\r\n }\r\n else {\r\n provider = new DecorationSubTypeOptionsProvider(this._themeService, styleSheet, providerArgs);\r\n }\r\n this._decorationOptionProviders.set(key, provider);\r\n }\r\n provider.refCount++;\r\n }\r\n removeDecorationType(key) {\r\n const provider = this._decorationOptionProviders.get(key);\r\n if (provider) {\r\n provider.refCount--;\r\n if (provider.refCount <= 0) {\r\n this._decorationOptionProviders.delete(key);\r\n provider.dispose();\r\n this.listCodeEditors().forEach((ed) => ed.removeDecorations(key));\r\n }\r\n }\r\n }\r\n resolveDecorationOptions(decorationTypeKey, writable) {\r\n const provider = this._decorationOptionProviders.get(decorationTypeKey);\r\n if (!provider) {\r\n throw new Error('Unknown decoration type key: ' + decorationTypeKey);\r\n }\r\n return provider.getOptions(this, writable);\r\n }\r\n};\r\nCodeEditorServiceImpl = __decorate([\r\n __param(0, IThemeService)\r\n], CodeEditorServiceImpl);\r\nexport { CodeEditorServiceImpl };\r\nclass DecorationSubTypeOptionsProvider {\r\n constructor(themeService, styleSheet, providerArgs) {\r\n this._styleSheet = styleSheet;\r\n this._styleSheet.ref();\r\n this._parentTypeKey = providerArgs.parentTypeKey;\r\n this.refCount = 0;\r\n this._beforeContentRules = new DecorationCSSRules(3 /* BeforeContentClassName */, providerArgs, themeService);\r\n this._afterContentRules = new DecorationCSSRules(4 /* AfterContentClassName */, providerArgs, themeService);\r\n }\r\n getOptions(codeEditorService, writable) {\r\n const options = codeEditorService.resolveDecorationOptions(this._parentTypeKey, true);\r\n if (this._beforeContentRules) {\r\n options.beforeContentClassName = this._beforeContentRules.className;\r\n }\r\n if (this._afterContentRules) {\r\n options.afterContentClassName = this._afterContentRules.className;\r\n }\r\n return options;\r\n }\r\n dispose() {\r\n if (this._beforeContentRules) {\r\n this._beforeContentRules.dispose();\r\n this._beforeContentRules = null;\r\n }\r\n if (this._afterContentRules) {\r\n this._afterContentRules.dispose();\r\n this._afterContentRules = null;\r\n }\r\n this._styleSheet.unref();\r\n }\r\n}\r\nclass DecorationTypeOptionsProvider {\r\n constructor(themeService, styleSheet, providerArgs) {\r\n this._disposables = new DisposableStore();\r\n this._styleSheet = styleSheet;\r\n this._styleSheet.ref();\r\n this.refCount = 0;\r\n const createCSSRules = (type) => {\r\n const rules = new DecorationCSSRules(type, providerArgs, themeService);\r\n this._disposables.add(rules);\r\n if (rules.hasContent) {\r\n return rules.className;\r\n }\r\n return undefined;\r\n };\r\n const createInlineCSSRules = (type) => {\r\n const rules = new DecorationCSSRules(type, providerArgs, themeService);\r\n this._disposables.add(rules);\r\n if (rules.hasContent) {\r\n return { className: rules.className, hasLetterSpacing: rules.hasLetterSpacing };\r\n }\r\n return null;\r\n };\r\n this.className = createCSSRules(0 /* ClassName */);\r\n const inlineData = createInlineCSSRules(1 /* InlineClassName */);\r\n if (inlineData) {\r\n this.inlineClassName = inlineData.className;\r\n this.inlineClassNameAffectsLetterSpacing = inlineData.hasLetterSpacing;\r\n }\r\n this.beforeContentClassName = createCSSRules(3 /* BeforeContentClassName */);\r\n this.afterContentClassName = createCSSRules(4 /* AfterContentClassName */);\r\n this.glyphMarginClassName = createCSSRules(2 /* GlyphMarginClassName */);\r\n const options = providerArgs.options;\r\n this.isWholeLine = Boolean(options.isWholeLine);\r\n this.stickiness = options.rangeBehavior;\r\n const lightOverviewRulerColor = options.light && options.light.overviewRulerColor || options.overviewRulerColor;\r\n const darkOverviewRulerColor = options.dark && options.dark.overviewRulerColor || options.overviewRulerColor;\r\n if (typeof lightOverviewRulerColor !== 'undefined'\r\n || typeof darkOverviewRulerColor !== 'undefined') {\r\n this.overviewRuler = {\r\n color: lightOverviewRulerColor || darkOverviewRulerColor,\r\n darkColor: darkOverviewRulerColor || lightOverviewRulerColor,\r\n position: options.overviewRulerLane || OverviewRulerLane.Center\r\n };\r\n }\r\n }\r\n getOptions(codeEditorService, writable) {\r\n if (!writable) {\r\n return this;\r\n }\r\n return {\r\n inlineClassName: this.inlineClassName,\r\n beforeContentClassName: this.beforeContentClassName,\r\n afterContentClassName: this.afterContentClassName,\r\n className: this.className,\r\n glyphMarginClassName: this.glyphMarginClassName,\r\n isWholeLine: this.isWholeLine,\r\n overviewRuler: this.overviewRuler,\r\n stickiness: this.stickiness\r\n };\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._styleSheet.unref();\r\n }\r\n}\r\nconst _CSS_MAP = {\r\n color: 'color:{0} !important;',\r\n opacity: 'opacity:{0};',\r\n backgroundColor: 'background-color:{0};',\r\n outline: 'outline:{0};',\r\n outlineColor: 'outline-color:{0};',\r\n outlineStyle: 'outline-style:{0};',\r\n outlineWidth: 'outline-width:{0};',\r\n border: 'border:{0};',\r\n borderColor: 'border-color:{0};',\r\n borderRadius: 'border-radius:{0};',\r\n borderSpacing: 'border-spacing:{0};',\r\n borderStyle: 'border-style:{0};',\r\n borderWidth: 'border-width:{0};',\r\n fontStyle: 'font-style:{0};',\r\n fontWeight: 'font-weight:{0};',\r\n textDecoration: 'text-decoration:{0};',\r\n cursor: 'cursor:{0};',\r\n letterSpacing: 'letter-spacing:{0};',\r\n gutterIconPath: 'background:{0} center center no-repeat;',\r\n gutterIconSize: 'background-size:{0};',\r\n contentText: 'content:\\'{0}\\';',\r\n contentIconPath: 'content:{0};',\r\n margin: 'margin:{0};',\r\n width: 'width:{0};',\r\n height: 'height:{0};'\r\n};\r\nclass DecorationCSSRules {\r\n constructor(ruleType, providerArgs, themeService) {\r\n this._theme = themeService.getColorTheme();\r\n this._ruleType = ruleType;\r\n this._providerArgs = providerArgs;\r\n this._usesThemeColors = false;\r\n this._hasContent = false;\r\n this._hasLetterSpacing = false;\r\n let className = CSSNameHelper.getClassName(this._providerArgs.key, ruleType);\r\n if (this._providerArgs.parentTypeKey) {\r\n className = className + ' ' + CSSNameHelper.getClassName(this._providerArgs.parentTypeKey, ruleType);\r\n }\r\n this._className = className;\r\n this._unThemedSelector = CSSNameHelper.getSelector(this._providerArgs.key, this._providerArgs.parentTypeKey, ruleType);\r\n this._buildCSS();\r\n if (this._usesThemeColors) {\r\n this._themeListener = themeService.onDidColorThemeChange(theme => {\r\n this._theme = themeService.getColorTheme();\r\n this._removeCSS();\r\n this._buildCSS();\r\n });\r\n }\r\n else {\r\n this._themeListener = null;\r\n }\r\n }\r\n dispose() {\r\n if (this._hasContent) {\r\n this._removeCSS();\r\n this._hasContent = false;\r\n }\r\n if (this._themeListener) {\r\n this._themeListener.dispose();\r\n this._themeListener = null;\r\n }\r\n }\r\n get hasContent() {\r\n return this._hasContent;\r\n }\r\n get hasLetterSpacing() {\r\n return this._hasLetterSpacing;\r\n }\r\n get className() {\r\n return this._className;\r\n }\r\n _buildCSS() {\r\n const options = this._providerArgs.options;\r\n let unthemedCSS, lightCSS, darkCSS;\r\n switch (this._ruleType) {\r\n case 0 /* ClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationClassName(options);\r\n lightCSS = this.getCSSTextForModelDecorationClassName(options.light);\r\n darkCSS = this.getCSSTextForModelDecorationClassName(options.dark);\r\n break;\r\n case 1 /* InlineClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationInlineClassName(options);\r\n lightCSS = this.getCSSTextForModelDecorationInlineClassName(options.light);\r\n darkCSS = this.getCSSTextForModelDecorationInlineClassName(options.dark);\r\n break;\r\n case 2 /* GlyphMarginClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationGlyphMarginClassName(options);\r\n lightCSS = this.getCSSTextForModelDecorationGlyphMarginClassName(options.light);\r\n darkCSS = this.getCSSTextForModelDecorationGlyphMarginClassName(options.dark);\r\n break;\r\n case 3 /* BeforeContentClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationContentClassName(options.before);\r\n lightCSS = this.getCSSTextForModelDecorationContentClassName(options.light && options.light.before);\r\n darkCSS = this.getCSSTextForModelDecorationContentClassName(options.dark && options.dark.before);\r\n break;\r\n case 4 /* AfterContentClassName */:\r\n unthemedCSS = this.getCSSTextForModelDecorationContentClassName(options.after);\r\n lightCSS = this.getCSSTextForModelDecorationContentClassName(options.light && options.light.after);\r\n darkCSS = this.getCSSTextForModelDecorationContentClassName(options.dark && options.dark.after);\r\n break;\r\n default:\r\n throw new Error('Unknown rule type: ' + this._ruleType);\r\n }\r\n const sheet = this._providerArgs.styleSheet;\r\n let hasContent = false;\r\n if (unthemedCSS.length > 0) {\r\n sheet.insertRule(`${this._unThemedSelector} {${unthemedCSS}}`, 0);\r\n hasContent = true;\r\n }\r\n if (lightCSS.length > 0) {\r\n sheet.insertRule(`.vs${this._unThemedSelector} {${lightCSS}}`, 0);\r\n hasContent = true;\r\n }\r\n if (darkCSS.length > 0) {\r\n sheet.insertRule(`.vs-dark${this._unThemedSelector}, .hc-black${this._unThemedSelector} {${darkCSS}}`, 0);\r\n hasContent = true;\r\n }\r\n this._hasContent = hasContent;\r\n }\r\n _removeCSS() {\r\n this._providerArgs.styleSheet.removeRulesContainingSelector(this._unThemedSelector);\r\n }\r\n /**\r\n * Build the CSS for decorations styled via `className`.\r\n */\r\n getCSSTextForModelDecorationClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n this.collectCSSText(opts, ['backgroundColor'], cssTextArr);\r\n this.collectCSSText(opts, ['outline', 'outlineColor', 'outlineStyle', 'outlineWidth'], cssTextArr);\r\n this.collectBorderSettingsCSSText(opts, cssTextArr);\r\n return cssTextArr.join('');\r\n }\r\n /**\r\n * Build the CSS for decorations styled via `inlineClassName`.\r\n */\r\n getCSSTextForModelDecorationInlineClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'cursor', 'color', 'opacity', 'letterSpacing'], cssTextArr);\r\n if (opts.letterSpacing) {\r\n this._hasLetterSpacing = true;\r\n }\r\n return cssTextArr.join('');\r\n }\r\n /**\r\n * Build the CSS for decorations styled before or after content.\r\n */\r\n getCSSTextForModelDecorationContentClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n if (typeof opts !== 'undefined') {\r\n this.collectBorderSettingsCSSText(opts, cssTextArr);\r\n if (typeof opts.contentIconPath !== 'undefined') {\r\n cssTextArr.push(strings.format(_CSS_MAP.contentIconPath, dom.asCSSUrl(URI.revive(opts.contentIconPath))));\r\n }\r\n if (typeof opts.contentText === 'string') {\r\n const truncated = opts.contentText.match(/^.*$/m)[0]; // only take first line\r\n const escaped = truncated.replace(/['\\\\]/g, '\\\\$&');\r\n cssTextArr.push(strings.format(_CSS_MAP.contentText, escaped));\r\n }\r\n this.collectCSSText(opts, ['fontStyle', 'fontWeight', 'textDecoration', 'color', 'opacity', 'backgroundColor', 'margin'], cssTextArr);\r\n if (this.collectCSSText(opts, ['width', 'height'], cssTextArr)) {\r\n cssTextArr.push('display:inline-block;');\r\n }\r\n }\r\n return cssTextArr.join('');\r\n }\r\n /**\r\n * Build the CSS for decorations styled via `glpyhMarginClassName`.\r\n */\r\n getCSSTextForModelDecorationGlyphMarginClassName(opts) {\r\n if (!opts) {\r\n return '';\r\n }\r\n const cssTextArr = [];\r\n if (typeof opts.gutterIconPath !== 'undefined') {\r\n cssTextArr.push(strings.format(_CSS_MAP.gutterIconPath, dom.asCSSUrl(URI.revive(opts.gutterIconPath))));\r\n if (typeof opts.gutterIconSize !== 'undefined') {\r\n cssTextArr.push(strings.format(_CSS_MAP.gutterIconSize, opts.gutterIconSize));\r\n }\r\n }\r\n return cssTextArr.join('');\r\n }\r\n collectBorderSettingsCSSText(opts, cssTextArr) {\r\n if (this.collectCSSText(opts, ['border', 'borderColor', 'borderRadius', 'borderSpacing', 'borderStyle', 'borderWidth'], cssTextArr)) {\r\n cssTextArr.push(strings.format('box-sizing: border-box;'));\r\n return true;\r\n }\r\n return false;\r\n }\r\n collectCSSText(opts, properties, cssTextArr) {\r\n const lenBefore = cssTextArr.length;\r\n for (let property of properties) {\r\n const value = this.resolveValue(opts[property]);\r\n if (typeof value === 'string') {\r\n cssTextArr.push(strings.format(_CSS_MAP[property], value));\r\n }\r\n }\r\n return cssTextArr.length !== lenBefore;\r\n }\r\n resolveValue(value) {\r\n if (isThemeColor(value)) {\r\n this._usesThemeColors = true;\r\n const color = this._theme.getColor(value.id);\r\n if (color) {\r\n return color.toString();\r\n }\r\n return 'transparent';\r\n }\r\n return value;\r\n }\r\n}\r\nclass CSSNameHelper {\r\n static getClassName(key, type) {\r\n return 'ced-' + key + '-' + type;\r\n }\r\n static getSelector(key, parentKey, ruleType) {\r\n let selector = '.monaco-editor .' + this.getClassName(key, ruleType);\r\n if (parentKey) {\r\n selector = selector + '.' + this.getClassName(parentKey, ruleType);\r\n }\r\n if (ruleType === 3 /* BeforeContentClassName */) {\r\n selector += '::before';\r\n }\r\n else if (ruleType === 4 /* AfterContentClassName */) {\r\n selector += '::after';\r\n }\r\n return selector;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { parse } from '../../../base/common/marshalling.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { normalizePath } from '../../../base/common/resources.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { ICodeEditorService } from './codeEditorService.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { matchesScheme } from '../../../platform/opener/common/opener.js';\r\nimport { EditorOpenContext } from '../../../platform/editor/common/editor.js';\r\nlet CommandOpener = class CommandOpener {\r\n constructor(_commandService) {\r\n this._commandService = _commandService;\r\n }\r\n open(target) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!matchesScheme(target, Schemas.command)) {\r\n return false;\r\n }\r\n // run command or bail out if command isn't known\r\n if (typeof target === 'string') {\r\n target = URI.parse(target);\r\n }\r\n // execute as command\r\n let args = [];\r\n try {\r\n args = parse(decodeURIComponent(target.query));\r\n }\r\n catch (_a) {\r\n // ignore and retry\r\n try {\r\n args = parse(target.query);\r\n }\r\n catch (_b) {\r\n // ignore error\r\n }\r\n }\r\n if (!Array.isArray(args)) {\r\n args = [args];\r\n }\r\n yield this._commandService.executeCommand(target.path, ...args);\r\n return true;\r\n });\r\n }\r\n};\r\nCommandOpener = __decorate([\r\n __param(0, ICommandService)\r\n], CommandOpener);\r\nlet EditorOpener = class EditorOpener {\r\n constructor(_editorService) {\r\n this._editorService = _editorService;\r\n }\r\n open(target, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof target === 'string') {\r\n target = URI.parse(target);\r\n }\r\n let selection = undefined;\r\n const match = /^L?(\\d+)(?:,(\\d+))?/.exec(target.fragment);\r\n if (match) {\r\n // support file:///some/file.js#73,84\r\n // support file:///some/file.js#L73\r\n selection = {\r\n startLineNumber: parseInt(match[1]),\r\n startColumn: match[2] ? parseInt(match[2]) : 1\r\n };\r\n // remove fragment\r\n target = target.with({ fragment: '' });\r\n }\r\n if (target.scheme === Schemas.file) {\r\n target = normalizePath(target); // workaround for non-normalized paths (https://github.com/Microsoft/vscode/issues/12954)\r\n }\r\n yield this._editorService.openCodeEditor({ resource: target, options: { selection, context: (options === null || options === void 0 ? void 0 : options.fromUserGesture) ? EditorOpenContext.USER : EditorOpenContext.API } }, this._editorService.getFocusedCodeEditor(), options === null || options === void 0 ? void 0 : options.openToSide);\r\n return true;\r\n });\r\n }\r\n};\r\nEditorOpener = __decorate([\r\n __param(0, ICodeEditorService)\r\n], EditorOpener);\r\nlet OpenerService = class OpenerService {\r\n constructor(editorService, commandService) {\r\n this._openers = new LinkedList();\r\n this._validators = new LinkedList();\r\n this._resolvers = new LinkedList();\r\n // Default external opener is going through window.open()\r\n this._externalOpener = {\r\n openExternal: href => {\r\n // ensure to open HTTP/HTTPS links into new windows\r\n // to not trigger a navigation. Any other link is\r\n // safe to be set as HREF to prevent a blank window\r\n // from opening.\r\n if (matchesScheme(href, Schemas.http) || matchesScheme(href, Schemas.https)) {\r\n dom.windowOpenNoOpener(href);\r\n }\r\n else {\r\n window.location.href = href;\r\n }\r\n return Promise.resolve(true);\r\n }\r\n };\r\n // Default opener: maito, http(s), command, and catch-all-editors\r\n this._openers.push({\r\n open: (target, options) => __awaiter(this, void 0, void 0, function* () {\r\n if ((options === null || options === void 0 ? void 0 : options.openExternal) || matchesScheme(target, Schemas.mailto) || matchesScheme(target, Schemas.http) || matchesScheme(target, Schemas.https)) {\r\n // open externally\r\n yield this._doOpenExternal(target, options);\r\n return true;\r\n }\r\n return false;\r\n })\r\n });\r\n this._openers.push(new CommandOpener(commandService));\r\n this._openers.push(new EditorOpener(editorService));\r\n }\r\n open(target, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // check with contributed validators\r\n for (const validator of this._validators.toArray()) {\r\n if (!(yield validator.shouldOpen(target))) {\r\n return false;\r\n }\r\n }\r\n // check with contributed openers\r\n for (const opener of this._openers.toArray()) {\r\n const handled = yield opener.open(target, options);\r\n if (handled) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n resolveExternalUri(resource, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n for (const resolver of this._resolvers.toArray()) {\r\n const result = yield resolver.resolveExternalUri(resource, options);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n return { resolved: resource, dispose: () => { } };\r\n });\r\n }\r\n _doOpenExternal(resource, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n //todo@joh IExternalUriResolver should support `uri: URI | string`\r\n const uri = typeof resource === 'string' ? URI.parse(resource) : resource;\r\n const { resolved } = yield this.resolveExternalUri(uri, options);\r\n if (typeof resource === 'string' && uri.toString() === resolved.toString()) {\r\n // open the url-string AS IS\r\n return this._externalOpener.openExternal(resource);\r\n }\r\n else {\r\n // open URI using the toString(noEncode)+encodeURI-trick\r\n return this._externalOpener.openExternal(encodeURI(resolved.toString(true)));\r\n }\r\n });\r\n }\r\n dispose() {\r\n this._validators.clear();\r\n }\r\n};\r\nOpenerService = __decorate([\r\n __param(0, ICodeEditorService),\r\n __param(1, ICommandService)\r\n], OpenerService);\r\nexport { OpenerService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LineBreakData } from '../../common/viewModel/splitLinesCollection.js';\r\nimport { createStringBuilder } from '../../common/core/stringBuilder.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nexport class DOMLineBreaksComputerFactory {\r\n static create() {\r\n return new DOMLineBreaksComputerFactory();\r\n }\r\n constructor() {\r\n }\r\n createLineBreaksComputer(fontInfo, tabSize, wrappingColumn, wrappingIndent) {\r\n tabSize = tabSize | 0; //@perf\r\n wrappingColumn = +wrappingColumn; //@perf\r\n let requests = [];\r\n return {\r\n addRequest: (lineText, previousLineBreakData) => {\r\n requests.push(lineText);\r\n },\r\n finalize: () => {\r\n return createLineBreaks(requests, fontInfo, tabSize, wrappingColumn, wrappingIndent);\r\n }\r\n };\r\n }\r\n}\r\nfunction createLineBreaks(requests, fontInfo, tabSize, firstLineBreakColumn, wrappingIndent) {\r\n if (firstLineBreakColumn === -1) {\r\n const result = [];\r\n for (let i = 0, len = requests.length; i < len; i++) {\r\n result[i] = null;\r\n }\r\n return result;\r\n }\r\n const overallWidth = Math.round(firstLineBreakColumn * fontInfo.typicalHalfwidthCharacterWidth);\r\n // Cannot respect WrappingIndent.Indent and WrappingIndent.DeepIndent because that would require\r\n // two dom layouts, in order to first set the width of the first line, and then set the width of the wrapped lines\r\n if (wrappingIndent === 2 /* Indent */ || wrappingIndent === 3 /* DeepIndent */) {\r\n wrappingIndent = 1 /* Same */;\r\n }\r\n const containerDomNode = document.createElement('div');\r\n Configuration.applyFontInfoSlow(containerDomNode, fontInfo);\r\n const sb = createStringBuilder(10000);\r\n const firstNonWhitespaceIndices = [];\r\n const wrappedTextIndentLengths = [];\r\n const renderLineContents = [];\r\n const allCharOffsets = [];\r\n const allVisibleColumns = [];\r\n for (let i = 0; i < requests.length; i++) {\r\n const lineContent = requests[i];\r\n let firstNonWhitespaceIndex = 0;\r\n let wrappedTextIndentLength = 0;\r\n let width = overallWidth;\r\n if (wrappingIndent !== 0 /* None */) {\r\n firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\r\n if (firstNonWhitespaceIndex === -1) {\r\n // all whitespace line\r\n firstNonWhitespaceIndex = 0;\r\n }\r\n else {\r\n // Track existing indent\r\n for (let i = 0; i < firstNonWhitespaceIndex; i++) {\r\n const charWidth = (lineContent.charCodeAt(i) === 9 /* Tab */\r\n ? (tabSize - (wrappedTextIndentLength % tabSize))\r\n : 1);\r\n wrappedTextIndentLength += charWidth;\r\n }\r\n const indentWidth = Math.ceil(fontInfo.spaceWidth * wrappedTextIndentLength);\r\n // Force sticking to beginning of line if no character would fit except for the indentation\r\n if (indentWidth + fontInfo.typicalFullwidthCharacterWidth > overallWidth) {\r\n firstNonWhitespaceIndex = 0;\r\n wrappedTextIndentLength = 0;\r\n }\r\n else {\r\n width = overallWidth - indentWidth;\r\n }\r\n }\r\n }\r\n const renderLineContent = lineContent.substr(firstNonWhitespaceIndex);\r\n const tmp = renderLine(renderLineContent, wrappedTextIndentLength, tabSize, width, sb);\r\n firstNonWhitespaceIndices[i] = firstNonWhitespaceIndex;\r\n wrappedTextIndentLengths[i] = wrappedTextIndentLength;\r\n renderLineContents[i] = renderLineContent;\r\n allCharOffsets[i] = tmp[0];\r\n allVisibleColumns[i] = tmp[1];\r\n }\r\n containerDomNode.innerHTML = sb.build();\r\n containerDomNode.style.position = 'absolute';\r\n containerDomNode.style.top = '10000';\r\n containerDomNode.style.wordWrap = 'break-word';\r\n document.body.appendChild(containerDomNode);\r\n let range = document.createRange();\r\n const lineDomNodes = Array.prototype.slice.call(containerDomNode.children, 0);\r\n let result = [];\r\n for (let i = 0; i < requests.length; i++) {\r\n const lineDomNode = lineDomNodes[i];\r\n const breakOffsets = readLineBreaks(range, lineDomNode, renderLineContents[i], allCharOffsets[i]);\r\n if (breakOffsets === null) {\r\n result[i] = null;\r\n continue;\r\n }\r\n const firstNonWhitespaceIndex = firstNonWhitespaceIndices[i];\r\n const wrappedTextIndentLength = wrappedTextIndentLengths[i];\r\n const visibleColumns = allVisibleColumns[i];\r\n const breakOffsetsVisibleColumn = [];\r\n for (let j = 0, len = breakOffsets.length; j < len; j++) {\r\n breakOffsetsVisibleColumn[j] = visibleColumns[breakOffsets[j]];\r\n }\r\n if (firstNonWhitespaceIndex !== 0) {\r\n // All break offsets are relative to the renderLineContent, make them absolute again\r\n for (let j = 0, len = breakOffsets.length; j < len; j++) {\r\n breakOffsets[j] += firstNonWhitespaceIndex;\r\n }\r\n }\r\n result[i] = new LineBreakData(breakOffsets, breakOffsetsVisibleColumn, wrappedTextIndentLength);\r\n }\r\n document.body.removeChild(containerDomNode);\r\n return result;\r\n}\r\nfunction renderLine(lineContent, initialVisibleColumn, tabSize, width, sb) {\r\n sb.appendASCIIString('<div style=\"width:');\r\n sb.appendASCIIString(String(width));\r\n sb.appendASCIIString('px;\">');\r\n // if (containsRTL) {\r\n // \tsb.appendASCIIString('\" dir=\"ltr');\r\n // }\r\n const len = lineContent.length;\r\n let visibleColumn = initialVisibleColumn;\r\n let charOffset = 0;\r\n let charOffsets = [];\r\n let visibleColumns = [];\r\n let nextCharCode = (0 < len ? lineContent.charCodeAt(0) : 0 /* Null */);\r\n sb.appendASCIIString('<span>');\r\n for (let charIndex = 0; charIndex < len; charIndex++) {\r\n if (charIndex !== 0 && charIndex % 16384 /* SPAN_MODULO_LIMIT */ === 0) {\r\n sb.appendASCIIString('</span><span>');\r\n }\r\n charOffsets[charIndex] = charOffset;\r\n visibleColumns[charIndex] = visibleColumn;\r\n const charCode = nextCharCode;\r\n nextCharCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : 0 /* Null */);\r\n let producedCharacters = 1;\r\n let charWidth = 1;\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n producedCharacters = (tabSize - (visibleColumn % tabSize));\r\n charWidth = producedCharacters;\r\n for (let space = 1; space <= producedCharacters; space++) {\r\n if (space < producedCharacters) {\r\n sb.write1(0xA0); //  \r\n }\r\n else {\r\n sb.appendASCII(32 /* Space */);\r\n }\r\n }\r\n break;\r\n case 32 /* Space */:\r\n if (nextCharCode === 32 /* Space */) {\r\n sb.write1(0xA0); //  \r\n }\r\n else {\r\n sb.appendASCII(32 /* Space */);\r\n }\r\n break;\r\n case 60 /* LessThan */:\r\n sb.appendASCIIString('<');\r\n break;\r\n case 62 /* GreaterThan */:\r\n sb.appendASCIIString('>');\r\n break;\r\n case 38 /* Ampersand */:\r\n sb.appendASCIIString('&');\r\n break;\r\n case 0 /* Null */:\r\n sb.appendASCIIString('�');\r\n break;\r\n case 65279 /* UTF8_BOM */:\r\n case 8232 /* LINE_SEPARATOR */:\r\n case 8233 /* PARAGRAPH_SEPARATOR */:\r\n case 133 /* NEXT_LINE */:\r\n sb.write1(0xFFFD);\r\n break;\r\n default:\r\n if (strings.isFullWidthCharacter(charCode)) {\r\n charWidth++;\r\n }\r\n // if (renderControlCharacters && charCode < 32) {\r\n // \tsb.write1(9216 + charCode);\r\n // } else {\r\n sb.write1(charCode);\r\n // }\r\n }\r\n charOffset += producedCharacters;\r\n visibleColumn += charWidth;\r\n }\r\n sb.appendASCIIString('</span>');\r\n charOffsets[lineContent.length] = charOffset;\r\n visibleColumns[lineContent.length] = visibleColumn;\r\n sb.appendASCIIString('</div>');\r\n return [charOffsets, visibleColumns];\r\n}\r\nfunction readLineBreaks(range, lineDomNode, lineContent, charOffsets) {\r\n if (lineContent.length <= 1) {\r\n return null;\r\n }\r\n const spans = Array.prototype.slice.call(lineDomNode.children, 0);\r\n const breakOffsets = [];\r\n try {\r\n discoverBreaks(range, spans, charOffsets, 0, null, lineContent.length - 1, null, breakOffsets);\r\n }\r\n catch (err) {\r\n console.log(err);\r\n return null;\r\n }\r\n if (breakOffsets.length === 0) {\r\n return null;\r\n }\r\n breakOffsets.push(lineContent.length);\r\n return breakOffsets;\r\n}\r\nfunction discoverBreaks(range, spans, charOffsets, low, lowRects, high, highRects, result) {\r\n if (low === high) {\r\n return;\r\n }\r\n lowRects = lowRects || readClientRect(range, spans, charOffsets[low], charOffsets[low + 1]);\r\n highRects = highRects || readClientRect(range, spans, charOffsets[high], charOffsets[high + 1]);\r\n if (Math.abs(lowRects[0].top - highRects[0].top) <= 0.1) {\r\n // same line\r\n return;\r\n }\r\n // there is at least one line break between these two offsets\r\n if (low + 1 === high) {\r\n // the two characters are adjacent, so the line break must be exactly between them\r\n result.push(high);\r\n return;\r\n }\r\n const mid = low + ((high - low) / 2) | 0;\r\n const midRects = readClientRect(range, spans, charOffsets[mid], charOffsets[mid + 1]);\r\n discoverBreaks(range, spans, charOffsets, low, lowRects, mid, midRects, result);\r\n discoverBreaks(range, spans, charOffsets, mid, midRects, high, highRects, result);\r\n}\r\nfunction readClientRect(range, spans, startOffset, endOffset) {\r\n range.setStart(spans[(startOffset / 16384 /* SPAN_MODULO_LIMIT */) | 0].firstChild, startOffset % 16384 /* SPAN_MODULO_LIMIT */);\r\n range.setEnd(spans[(endOffset / 16384 /* SPAN_MODULO_LIMIT */) | 0].firstChild, endOffset % 16384 /* SPAN_MODULO_LIMIT */);\r\n return range.getClientRects();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ViewEventHandler } from '../../common/viewModel/viewEventHandler.js';\r\nexport class DynamicViewOverlay extends ViewEventHandler {\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CoreNavigationCommands } from '../controller/coreCommands.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nexport class ViewController {\r\n constructor(configuration, viewModel, userInputEvents, commandDelegate) {\r\n this.configuration = configuration;\r\n this.viewModel = viewModel;\r\n this.userInputEvents = userInputEvents;\r\n this.commandDelegate = commandDelegate;\r\n }\r\n paste(text, pasteOnNewLine, multicursorText, mode) {\r\n this.commandDelegate.paste(text, pasteOnNewLine, multicursorText, mode);\r\n }\r\n type(text) {\r\n this.commandDelegate.type(text);\r\n }\r\n replacePreviousChar(text, replaceCharCnt) {\r\n this.commandDelegate.replacePreviousChar(text, replaceCharCnt);\r\n }\r\n compositionStart() {\r\n this.commandDelegate.startComposition();\r\n }\r\n compositionEnd() {\r\n this.commandDelegate.endComposition();\r\n }\r\n cut() {\r\n this.commandDelegate.cut();\r\n }\r\n setSelection(modelSelection) {\r\n CoreNavigationCommands.SetSelection.runCoreEditorCommand(this.viewModel, {\r\n source: 'keyboard',\r\n selection: modelSelection\r\n });\r\n }\r\n _validateViewColumn(viewPosition) {\r\n const minColumn = this.viewModel.getLineMinColumn(viewPosition.lineNumber);\r\n if (viewPosition.column < minColumn) {\r\n return new Position(viewPosition.lineNumber, minColumn);\r\n }\r\n return viewPosition;\r\n }\r\n _hasMulticursorModifier(data) {\r\n switch (this.configuration.options.get(61 /* multiCursorModifier */)) {\r\n case 'altKey':\r\n return data.altKey;\r\n case 'ctrlKey':\r\n return data.ctrlKey;\r\n case 'metaKey':\r\n return data.metaKey;\r\n default:\r\n return false;\r\n }\r\n }\r\n _hasNonMulticursorModifier(data) {\r\n switch (this.configuration.options.get(61 /* multiCursorModifier */)) {\r\n case 'altKey':\r\n return data.ctrlKey || data.metaKey;\r\n case 'ctrlKey':\r\n return data.altKey || data.metaKey;\r\n case 'metaKey':\r\n return data.ctrlKey || data.altKey;\r\n default:\r\n return false;\r\n }\r\n }\r\n dispatchMouse(data) {\r\n const options = this.configuration.options;\r\n const selectionClipboardIsOn = (platform.isLinux && options.get(88 /* selectionClipboard */));\r\n const columnSelection = options.get(13 /* columnSelection */);\r\n if (data.middleButton && !selectionClipboardIsOn) {\r\n this._columnSelect(data.position, data.mouseColumn, data.inSelectionMode);\r\n }\r\n else if (data.startedOnLineNumbers) {\r\n // If the dragging started on the gutter, then have operations work on the entire line\r\n if (this._hasMulticursorModifier(data)) {\r\n if (data.inSelectionMode) {\r\n this._lastCursorLineSelect(data.position);\r\n }\r\n else {\r\n this._createCursor(data.position, true);\r\n }\r\n }\r\n else {\r\n if (data.inSelectionMode) {\r\n this._lineSelectDrag(data.position);\r\n }\r\n else {\r\n this._lineSelect(data.position);\r\n }\r\n }\r\n }\r\n else if (data.mouseDownCount >= 4) {\r\n this._selectAll();\r\n }\r\n else if (data.mouseDownCount === 3) {\r\n if (this._hasMulticursorModifier(data)) {\r\n if (data.inSelectionMode) {\r\n this._lastCursorLineSelectDrag(data.position);\r\n }\r\n else {\r\n this._lastCursorLineSelect(data.position);\r\n }\r\n }\r\n else {\r\n if (data.inSelectionMode) {\r\n this._lineSelectDrag(data.position);\r\n }\r\n else {\r\n this._lineSelect(data.position);\r\n }\r\n }\r\n }\r\n else if (data.mouseDownCount === 2) {\r\n if (this._hasMulticursorModifier(data)) {\r\n this._lastCursorWordSelect(data.position);\r\n }\r\n else {\r\n if (data.inSelectionMode) {\r\n this._wordSelectDrag(data.position);\r\n }\r\n else {\r\n this._wordSelect(data.position);\r\n }\r\n }\r\n }\r\n else {\r\n if (this._hasMulticursorModifier(data)) {\r\n if (!this._hasNonMulticursorModifier(data)) {\r\n if (data.shiftKey) {\r\n this._columnSelect(data.position, data.mouseColumn, true);\r\n }\r\n else {\r\n // Do multi-cursor operations only when purely alt is pressed\r\n if (data.inSelectionMode) {\r\n this._lastCursorMoveToSelect(data.position);\r\n }\r\n else {\r\n this._createCursor(data.position, false);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (data.inSelectionMode) {\r\n if (data.altKey) {\r\n this._columnSelect(data.position, data.mouseColumn, true);\r\n }\r\n else {\r\n if (columnSelection) {\r\n this._columnSelect(data.position, data.mouseColumn, true);\r\n }\r\n else {\r\n this._moveToSelect(data.position);\r\n }\r\n }\r\n }\r\n else {\r\n this.moveTo(data.position);\r\n }\r\n }\r\n }\r\n }\r\n _usualArgs(viewPosition) {\r\n viewPosition = this._validateViewColumn(viewPosition);\r\n return {\r\n source: 'mouse',\r\n position: this._convertViewToModelPosition(viewPosition),\r\n viewPosition: viewPosition\r\n };\r\n }\r\n moveTo(viewPosition) {\r\n CoreNavigationCommands.MoveTo.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _moveToSelect(viewPosition) {\r\n CoreNavigationCommands.MoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _columnSelect(viewPosition, mouseColumn, doColumnSelect) {\r\n viewPosition = this._validateViewColumn(viewPosition);\r\n CoreNavigationCommands.ColumnSelect.runCoreEditorCommand(this.viewModel, {\r\n source: 'mouse',\r\n position: this._convertViewToModelPosition(viewPosition),\r\n viewPosition: viewPosition,\r\n mouseColumn: mouseColumn,\r\n doColumnSelect: doColumnSelect\r\n });\r\n }\r\n _createCursor(viewPosition, wholeLine) {\r\n viewPosition = this._validateViewColumn(viewPosition);\r\n CoreNavigationCommands.CreateCursor.runCoreEditorCommand(this.viewModel, {\r\n source: 'mouse',\r\n position: this._convertViewToModelPosition(viewPosition),\r\n viewPosition: viewPosition,\r\n wholeLine: wholeLine\r\n });\r\n }\r\n _lastCursorMoveToSelect(viewPosition) {\r\n CoreNavigationCommands.LastCursorMoveToSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _wordSelect(viewPosition) {\r\n CoreNavigationCommands.WordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _wordSelectDrag(viewPosition) {\r\n CoreNavigationCommands.WordSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _lastCursorWordSelect(viewPosition) {\r\n CoreNavigationCommands.LastCursorWordSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _lineSelect(viewPosition) {\r\n CoreNavigationCommands.LineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _lineSelectDrag(viewPosition) {\r\n CoreNavigationCommands.LineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _lastCursorLineSelect(viewPosition) {\r\n CoreNavigationCommands.LastCursorLineSelect.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _lastCursorLineSelectDrag(viewPosition) {\r\n CoreNavigationCommands.LastCursorLineSelectDrag.runCoreEditorCommand(this.viewModel, this._usualArgs(viewPosition));\r\n }\r\n _selectAll() {\r\n CoreNavigationCommands.SelectAll.runCoreEditorCommand(this.viewModel, { source: 'mouse' });\r\n }\r\n // ----------------------\r\n _convertViewToModelPosition(viewPosition) {\r\n return this.viewModel.coordinatesConverter.convertViewPositionToModelPosition(viewPosition);\r\n }\r\n emitKeyDown(e) {\r\n this.userInputEvents.emitKeyDown(e);\r\n }\r\n emitKeyUp(e) {\r\n this.userInputEvents.emitKeyUp(e);\r\n }\r\n emitContextMenu(e) {\r\n this.userInputEvents.emitContextMenu(e);\r\n }\r\n emitMouseMove(e) {\r\n this.userInputEvents.emitMouseMove(e);\r\n }\r\n emitMouseLeave(e) {\r\n this.userInputEvents.emitMouseLeave(e);\r\n }\r\n emitMouseUp(e) {\r\n this.userInputEvents.emitMouseUp(e);\r\n }\r\n emitMouseDown(e) {\r\n this.userInputEvents.emitMouseDown(e);\r\n }\r\n emitMouseDrag(e) {\r\n this.userInputEvents.emitMouseDrag(e);\r\n }\r\n emitMouseDrop(e) {\r\n this.userInputEvents.emitMouseDrop(e);\r\n }\r\n emitMouseWheel(e) {\r\n this.userInputEvents.emitMouseWheel(e);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { PointerHandler } from '../controller/pointerHandler.js';\r\nimport { TextAreaHandler } from '../controller/textAreaHandler.js';\r\nimport { ViewController } from './viewController.js';\r\nimport { ViewUserInputEvents } from './viewUserInputEvents.js';\r\nimport { ContentViewOverlays, MarginViewOverlays } from './viewOverlays.js';\r\nimport { PartFingerprints } from './viewPart.js';\r\nimport { ViewContentWidgets } from '../viewParts/contentWidgets/contentWidgets.js';\r\nimport { CurrentLineHighlightOverlay, CurrentLineMarginHighlightOverlay } from '../viewParts/currentLineHighlight/currentLineHighlight.js';\r\nimport { DecorationsOverlay } from '../viewParts/decorations/decorations.js';\r\nimport { EditorScrollbar } from '../viewParts/editorScrollbar/editorScrollbar.js';\r\nimport { GlyphMarginOverlay } from '../viewParts/glyphMargin/glyphMargin.js';\r\nimport { IndentGuidesOverlay } from '../viewParts/indentGuides/indentGuides.js';\r\nimport { LineNumbersOverlay } from '../viewParts/lineNumbers/lineNumbers.js';\r\nimport { ViewLines } from '../viewParts/lines/viewLines.js';\r\nimport { LinesDecorationsOverlay } from '../viewParts/linesDecorations/linesDecorations.js';\r\nimport { Margin } from '../viewParts/margin/margin.js';\r\nimport { MarginViewLineDecorationsOverlay } from '../viewParts/marginDecorations/marginDecorations.js';\r\nimport { Minimap } from '../viewParts/minimap/minimap.js';\r\nimport { ViewOverlayWidgets } from '../viewParts/overlayWidgets/overlayWidgets.js';\r\nimport { DecorationsOverviewRuler } from '../viewParts/overviewRuler/decorationsOverviewRuler.js';\r\nimport { OverviewRuler } from '../viewParts/overviewRuler/overviewRuler.js';\r\nimport { Rulers } from '../viewParts/rulers/rulers.js';\r\nimport { ScrollDecorationViewPart } from '../viewParts/scrollDecoration/scrollDecoration.js';\r\nimport { SelectionsOverlay } from '../viewParts/selections/selections.js';\r\nimport { ViewCursors } from '../viewParts/viewCursors/viewCursors.js';\r\nimport { ViewZones } from '../viewParts/viewZones/viewZones.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { RenderingContext } from '../../common/view/renderingContext.js';\r\nimport { ViewContext } from '../../common/view/viewContext.js';\r\nimport { ViewportData } from '../../common/viewLayout/viewLinesViewportData.js';\r\nimport { ViewEventHandler } from '../../common/viewModel/viewEventHandler.js';\r\nimport { getThemeTypeSelector } from '../../../platform/theme/common/themeService.js';\r\nimport { PointerHandlerLastRenderData } from '../controller/mouseTarget.js';\r\nexport class View extends ViewEventHandler {\r\n constructor(commandDelegate, configuration, themeService, model, userInputEvents, overflowWidgetsDomNode) {\r\n super();\r\n this._selections = [new Selection(1, 1, 1, 1)];\r\n this._renderAnimationFrame = null;\r\n const viewController = new ViewController(configuration, model, userInputEvents, commandDelegate);\r\n // The view context is passed on to most classes (basically to reduce param. counts in ctors)\r\n this._context = new ViewContext(configuration, themeService.getColorTheme(), model);\r\n // Ensure the view is the first event handler in order to update the layout\r\n this._context.addEventHandler(this);\r\n this._register(themeService.onDidColorThemeChange(theme => {\r\n this._context.theme.update(theme);\r\n this._context.model.onDidColorThemeChange();\r\n this.render(true, false);\r\n }));\r\n this._viewParts = [];\r\n // Keyboard handler\r\n this._textAreaHandler = new TextAreaHandler(this._context, viewController, this._createTextAreaHandlerHelper());\r\n this._viewParts.push(this._textAreaHandler);\r\n // These two dom nodes must be constructed up front, since references are needed in the layout provider (scrolling & co.)\r\n this._linesContent = createFastDomNode(document.createElement('div'));\r\n this._linesContent.setClassName('lines-content' + ' monaco-editor-background');\r\n this._linesContent.setPosition('absolute');\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setClassName(this._getEditorClassName());\r\n // Set role 'code' for better screen reader support https://github.com/microsoft/vscode/issues/93438\r\n this.domNode.setAttribute('role', 'code');\r\n this._overflowGuardContainer = createFastDomNode(document.createElement('div'));\r\n PartFingerprints.write(this._overflowGuardContainer, 3 /* OverflowGuard */);\r\n this._overflowGuardContainer.setClassName('overflow-guard');\r\n this._scrollbar = new EditorScrollbar(this._context, this._linesContent, this.domNode, this._overflowGuardContainer);\r\n this._viewParts.push(this._scrollbar);\r\n // View Lines\r\n this._viewLines = new ViewLines(this._context, this._linesContent);\r\n // View Zones\r\n this._viewZones = new ViewZones(this._context);\r\n this._viewParts.push(this._viewZones);\r\n // Decorations overview ruler\r\n const decorationsOverviewRuler = new DecorationsOverviewRuler(this._context);\r\n this._viewParts.push(decorationsOverviewRuler);\r\n const scrollDecoration = new ScrollDecorationViewPart(this._context);\r\n this._viewParts.push(scrollDecoration);\r\n const contentViewOverlays = new ContentViewOverlays(this._context);\r\n this._viewParts.push(contentViewOverlays);\r\n contentViewOverlays.addDynamicOverlay(new CurrentLineHighlightOverlay(this._context));\r\n contentViewOverlays.addDynamicOverlay(new SelectionsOverlay(this._context));\r\n contentViewOverlays.addDynamicOverlay(new IndentGuidesOverlay(this._context));\r\n contentViewOverlays.addDynamicOverlay(new DecorationsOverlay(this._context));\r\n const marginViewOverlays = new MarginViewOverlays(this._context);\r\n this._viewParts.push(marginViewOverlays);\r\n marginViewOverlays.addDynamicOverlay(new CurrentLineMarginHighlightOverlay(this._context));\r\n marginViewOverlays.addDynamicOverlay(new GlyphMarginOverlay(this._context));\r\n marginViewOverlays.addDynamicOverlay(new MarginViewLineDecorationsOverlay(this._context));\r\n marginViewOverlays.addDynamicOverlay(new LinesDecorationsOverlay(this._context));\r\n marginViewOverlays.addDynamicOverlay(new LineNumbersOverlay(this._context));\r\n const margin = new Margin(this._context);\r\n margin.getDomNode().appendChild(this._viewZones.marginDomNode);\r\n margin.getDomNode().appendChild(marginViewOverlays.getDomNode());\r\n this._viewParts.push(margin);\r\n // Content widgets\r\n this._contentWidgets = new ViewContentWidgets(this._context, this.domNode);\r\n this._viewParts.push(this._contentWidgets);\r\n this._viewCursors = new ViewCursors(this._context);\r\n this._viewParts.push(this._viewCursors);\r\n // Overlay widgets\r\n this._overlayWidgets = new ViewOverlayWidgets(this._context);\r\n this._viewParts.push(this._overlayWidgets);\r\n const rulers = new Rulers(this._context);\r\n this._viewParts.push(rulers);\r\n const minimap = new Minimap(this._context);\r\n this._viewParts.push(minimap);\r\n // -------------- Wire dom nodes up\r\n if (decorationsOverviewRuler) {\r\n const overviewRulerData = this._scrollbar.getOverviewRulerLayoutInfo();\r\n overviewRulerData.parent.insertBefore(decorationsOverviewRuler.getDomNode(), overviewRulerData.insertBefore);\r\n }\r\n this._linesContent.appendChild(contentViewOverlays.getDomNode());\r\n this._linesContent.appendChild(rulers.domNode);\r\n this._linesContent.appendChild(this._viewZones.domNode);\r\n this._linesContent.appendChild(this._viewLines.getDomNode());\r\n this._linesContent.appendChild(this._contentWidgets.domNode);\r\n this._linesContent.appendChild(this._viewCursors.getDomNode());\r\n this._overflowGuardContainer.appendChild(margin.getDomNode());\r\n this._overflowGuardContainer.appendChild(this._scrollbar.getDomNode());\r\n this._overflowGuardContainer.appendChild(scrollDecoration.getDomNode());\r\n this._overflowGuardContainer.appendChild(this._textAreaHandler.textArea);\r\n this._overflowGuardContainer.appendChild(this._textAreaHandler.textAreaCover);\r\n this._overflowGuardContainer.appendChild(this._overlayWidgets.getDomNode());\r\n this._overflowGuardContainer.appendChild(minimap.getDomNode());\r\n this.domNode.appendChild(this._overflowGuardContainer);\r\n if (overflowWidgetsDomNode) {\r\n overflowWidgetsDomNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode.domNode);\r\n }\r\n else {\r\n this.domNode.appendChild(this._contentWidgets.overflowingContentWidgetsDomNode);\r\n }\r\n this._applyLayout();\r\n // Pointer handler\r\n this._pointerHandler = this._register(new PointerHandler(this._context, viewController, this._createPointerHandlerHelper()));\r\n }\r\n _flushAccumulatedAndRenderNow() {\r\n this._renderNow();\r\n }\r\n _createPointerHandlerHelper() {\r\n return {\r\n viewDomNode: this.domNode.domNode,\r\n linesContentDomNode: this._linesContent.domNode,\r\n focusTextArea: () => {\r\n this.focus();\r\n },\r\n getLastRenderData: () => {\r\n const lastViewCursorsRenderData = this._viewCursors.getLastRenderData() || [];\r\n const lastTextareaPosition = this._textAreaHandler.getLastRenderData();\r\n return new PointerHandlerLastRenderData(lastViewCursorsRenderData, lastTextareaPosition);\r\n },\r\n shouldSuppressMouseDownOnViewZone: (viewZoneId) => {\r\n return this._viewZones.shouldSuppressMouseDownOnViewZone(viewZoneId);\r\n },\r\n shouldSuppressMouseDownOnWidget: (widgetId) => {\r\n return this._contentWidgets.shouldSuppressMouseDownOnWidget(widgetId);\r\n },\r\n getPositionFromDOMInfo: (spanNode, offset) => {\r\n this._flushAccumulatedAndRenderNow();\r\n return this._viewLines.getPositionFromDOMInfo(spanNode, offset);\r\n },\r\n visibleRangeForPosition: (lineNumber, column) => {\r\n this._flushAccumulatedAndRenderNow();\r\n return this._viewLines.visibleRangeForPosition(new Position(lineNumber, column));\r\n },\r\n getLineWidth: (lineNumber) => {\r\n this._flushAccumulatedAndRenderNow();\r\n return this._viewLines.getLineWidth(lineNumber);\r\n }\r\n };\r\n }\r\n _createTextAreaHandlerHelper() {\r\n return {\r\n visibleRangeForPositionRelativeToEditor: (lineNumber, column) => {\r\n this._flushAccumulatedAndRenderNow();\r\n return this._viewLines.visibleRangeForPosition(new Position(lineNumber, column));\r\n }\r\n };\r\n }\r\n _applyLayout() {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this.domNode.setWidth(layoutInfo.width);\r\n this.domNode.setHeight(layoutInfo.height);\r\n this._overflowGuardContainer.setWidth(layoutInfo.width);\r\n this._overflowGuardContainer.setHeight(layoutInfo.height);\r\n this._linesContent.setWidth(1000000);\r\n this._linesContent.setHeight(1000000);\r\n }\r\n _getEditorClassName() {\r\n const focused = this._textAreaHandler.isFocused() ? ' focused' : '';\r\n return this._context.configuration.options.get(114 /* editorClassName */) + ' ' + getThemeTypeSelector(this._context.theme.type) + focused;\r\n }\r\n // --- begin event handlers\r\n handleEvents(events) {\r\n super.handleEvents(events);\r\n this._scheduleRender();\r\n }\r\n onConfigurationChanged(e) {\r\n this.domNode.setClassName(this._getEditorClassName());\r\n this._applyLayout();\r\n return false;\r\n }\r\n onCursorStateChanged(e) {\r\n this._selections = e.selections;\r\n return false;\r\n }\r\n onFocusChanged(e) {\r\n this.domNode.setClassName(this._getEditorClassName());\r\n return false;\r\n }\r\n onThemeChanged(e) {\r\n this.domNode.setClassName(this._getEditorClassName());\r\n return false;\r\n }\r\n // --- end event handlers\r\n dispose() {\r\n if (this._renderAnimationFrame !== null) {\r\n this._renderAnimationFrame.dispose();\r\n this._renderAnimationFrame = null;\r\n }\r\n this._contentWidgets.overflowingContentWidgetsDomNode.domNode.remove();\r\n this._context.removeEventHandler(this);\r\n this._viewLines.dispose();\r\n // Destroy view parts\r\n for (let i = 0, len = this._viewParts.length; i < len; i++) {\r\n this._viewParts[i].dispose();\r\n }\r\n super.dispose();\r\n }\r\n _scheduleRender() {\r\n if (this._renderAnimationFrame === null) {\r\n this._renderAnimationFrame = dom.runAtThisOrScheduleAtNextAnimationFrame(this._onRenderScheduled.bind(this), 100);\r\n }\r\n }\r\n _onRenderScheduled() {\r\n this._renderAnimationFrame = null;\r\n this._flushAccumulatedAndRenderNow();\r\n }\r\n _renderNow() {\r\n safeInvokeNoArg(() => this._actualRender());\r\n }\r\n _getViewPartsToRender() {\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = this._viewParts.length; i < len; i++) {\r\n const viewPart = this._viewParts[i];\r\n if (viewPart.shouldRender()) {\r\n result[resultLen++] = viewPart;\r\n }\r\n }\r\n return result;\r\n }\r\n _actualRender() {\r\n if (!dom.isInDOM(this.domNode.domNode)) {\r\n return;\r\n }\r\n let viewPartsToRender = this._getViewPartsToRender();\r\n if (!this._viewLines.shouldRender() && viewPartsToRender.length === 0) {\r\n // Nothing to render\r\n return;\r\n }\r\n const partialViewportData = this._context.viewLayout.getLinesViewportData();\r\n this._context.model.setViewport(partialViewportData.startLineNumber, partialViewportData.endLineNumber, partialViewportData.centeredLineNumber);\r\n const viewportData = new ViewportData(this._selections, partialViewportData, this._context.viewLayout.getWhitespaceViewportData(), this._context.model);\r\n if (this._contentWidgets.shouldRender()) {\r\n // Give the content widgets a chance to set their max width before a possible synchronous layout\r\n this._contentWidgets.onBeforeRender(viewportData);\r\n }\r\n if (this._viewLines.shouldRender()) {\r\n this._viewLines.renderText(viewportData);\r\n this._viewLines.onDidRender();\r\n // Rendering of viewLines might cause scroll events to occur, so collect view parts to render again\r\n viewPartsToRender = this._getViewPartsToRender();\r\n }\r\n const renderingContext = new RenderingContext(this._context.viewLayout, viewportData, this._viewLines);\r\n // Render the rest of the parts\r\n for (let i = 0, len = viewPartsToRender.length; i < len; i++) {\r\n const viewPart = viewPartsToRender[i];\r\n viewPart.prepareRender(renderingContext);\r\n }\r\n for (let i = 0, len = viewPartsToRender.length; i < len; i++) {\r\n const viewPart = viewPartsToRender[i];\r\n viewPart.render(renderingContext);\r\n viewPart.onDidRender();\r\n }\r\n }\r\n // --- BEGIN CodeEditor helpers\r\n delegateVerticalScrollbarMouseDown(browserEvent) {\r\n this._scrollbar.delegateVerticalScrollbarMouseDown(browserEvent);\r\n }\r\n restoreState(scrollPosition) {\r\n this._context.model.setScrollPosition({ scrollTop: scrollPosition.scrollTop }, 1 /* Immediate */);\r\n this._context.model.tokenizeViewport();\r\n this._renderNow();\r\n this._viewLines.updateLineWidths();\r\n this._context.model.setScrollPosition({ scrollLeft: scrollPosition.scrollLeft }, 1 /* Immediate */);\r\n }\r\n getOffsetForColumn(modelLineNumber, modelColumn) {\r\n const modelPosition = this._context.model.validateModelPosition({\r\n lineNumber: modelLineNumber,\r\n column: modelColumn\r\n });\r\n const viewPosition = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\r\n this._flushAccumulatedAndRenderNow();\r\n const visibleRange = this._viewLines.visibleRangeForPosition(new Position(viewPosition.lineNumber, viewPosition.column));\r\n if (!visibleRange) {\r\n return -1;\r\n }\r\n return visibleRange.left;\r\n }\r\n getTargetAtClientPoint(clientX, clientY) {\r\n const mouseTarget = this._pointerHandler.getTargetAtClientPoint(clientX, clientY);\r\n if (!mouseTarget) {\r\n return null;\r\n }\r\n return ViewUserInputEvents.convertViewToModelMouseTarget(mouseTarget, this._context.model.coordinatesConverter);\r\n }\r\n createOverviewRuler(cssClassName) {\r\n return new OverviewRuler(this._context, cssClassName);\r\n }\r\n change(callback) {\r\n this._viewZones.changeViewZones(callback);\r\n this._scheduleRender();\r\n }\r\n render(now, everything) {\r\n if (everything) {\r\n // Force everything to render...\r\n this._viewLines.forceShouldRender();\r\n for (let i = 0, len = this._viewParts.length; i < len; i++) {\r\n const viewPart = this._viewParts[i];\r\n viewPart.forceShouldRender();\r\n }\r\n }\r\n if (now) {\r\n this._flushAccumulatedAndRenderNow();\r\n }\r\n else {\r\n this._scheduleRender();\r\n }\r\n }\r\n focus() {\r\n this._textAreaHandler.focusTextArea();\r\n }\r\n isFocused() {\r\n return this._textAreaHandler.isFocused();\r\n }\r\n setAriaOptions(options) {\r\n this._textAreaHandler.setAriaOptions(options);\r\n }\r\n addContentWidget(widgetData) {\r\n this._contentWidgets.addWidget(widgetData.widget);\r\n this.layoutContentWidget(widgetData);\r\n this._scheduleRender();\r\n }\r\n layoutContentWidget(widgetData) {\r\n let newRange = widgetData.position ? widgetData.position.range || null : null;\r\n if (newRange === null) {\r\n const newPosition = widgetData.position ? widgetData.position.position : null;\r\n if (newPosition !== null) {\r\n newRange = new Range(newPosition.lineNumber, newPosition.column, newPosition.lineNumber, newPosition.column);\r\n }\r\n }\r\n const newPreference = widgetData.position ? widgetData.position.preference : null;\r\n this._contentWidgets.setWidgetPosition(widgetData.widget, newRange, newPreference);\r\n this._scheduleRender();\r\n }\r\n removeContentWidget(widgetData) {\r\n this._contentWidgets.removeWidget(widgetData.widget);\r\n this._scheduleRender();\r\n }\r\n addOverlayWidget(widgetData) {\r\n this._overlayWidgets.addWidget(widgetData.widget);\r\n this.layoutOverlayWidget(widgetData);\r\n this._scheduleRender();\r\n }\r\n layoutOverlayWidget(widgetData) {\r\n const newPreference = widgetData.position ? widgetData.position.preference : null;\r\n const shouldRender = this._overlayWidgets.setWidgetPosition(widgetData.widget, newPreference);\r\n if (shouldRender) {\r\n this._scheduleRender();\r\n }\r\n }\r\n removeOverlayWidget(widgetData) {\r\n this._overlayWidgets.removeWidget(widgetData.widget);\r\n this._scheduleRender();\r\n }\r\n}\r\nfunction safeInvokeNoArg(func) {\r\n try {\r\n return func();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { createStringBuilder } from '../../common/core/stringBuilder.js';\r\nexport class RenderedLinesCollection {\r\n constructor(createLine) {\r\n this._createLine = createLine;\r\n this._set(1, []);\r\n }\r\n flush() {\r\n this._set(1, []);\r\n }\r\n _set(rendLineNumberStart, lines) {\r\n this._lines = lines;\r\n this._rendLineNumberStart = rendLineNumberStart;\r\n }\r\n _get() {\r\n return {\r\n rendLineNumberStart: this._rendLineNumberStart,\r\n lines: this._lines\r\n };\r\n }\r\n /**\r\n * @returns Inclusive line number that is inside this collection\r\n */\r\n getStartLineNumber() {\r\n return this._rendLineNumberStart;\r\n }\r\n /**\r\n * @returns Inclusive line number that is inside this collection\r\n */\r\n getEndLineNumber() {\r\n return this._rendLineNumberStart + this._lines.length - 1;\r\n }\r\n getCount() {\r\n return this._lines.length;\r\n }\r\n getLine(lineNumber) {\r\n const lineIndex = lineNumber - this._rendLineNumberStart;\r\n if (lineIndex < 0 || lineIndex >= this._lines.length) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._lines[lineIndex];\r\n }\r\n /**\r\n * @returns Lines that were removed from this collection\r\n */\r\n onLinesDeleted(deleteFromLineNumber, deleteToLineNumber) {\r\n if (this.getCount() === 0) {\r\n // no lines\r\n return null;\r\n }\r\n const startLineNumber = this.getStartLineNumber();\r\n const endLineNumber = this.getEndLineNumber();\r\n if (deleteToLineNumber < startLineNumber) {\r\n // deleting above the viewport\r\n const deleteCnt = deleteToLineNumber - deleteFromLineNumber + 1;\r\n this._rendLineNumberStart -= deleteCnt;\r\n return null;\r\n }\r\n if (deleteFromLineNumber > endLineNumber) {\r\n // deleted below the viewport\r\n return null;\r\n }\r\n // Record what needs to be deleted\r\n let deleteStartIndex = 0;\r\n let deleteCount = 0;\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - this._rendLineNumberStart;\r\n if (deleteFromLineNumber <= lineNumber && lineNumber <= deleteToLineNumber) {\r\n // this is a line to be deleted\r\n if (deleteCount === 0) {\r\n // this is the first line to be deleted\r\n deleteStartIndex = lineIndex;\r\n deleteCount = 1;\r\n }\r\n else {\r\n deleteCount++;\r\n }\r\n }\r\n }\r\n // Adjust this._rendLineNumberStart for lines deleted above\r\n if (deleteFromLineNumber < startLineNumber) {\r\n // Something was deleted above\r\n let deleteAboveCount = 0;\r\n if (deleteToLineNumber < startLineNumber) {\r\n // the entire deleted lines are above\r\n deleteAboveCount = deleteToLineNumber - deleteFromLineNumber + 1;\r\n }\r\n else {\r\n deleteAboveCount = startLineNumber - deleteFromLineNumber;\r\n }\r\n this._rendLineNumberStart -= deleteAboveCount;\r\n }\r\n const deleted = this._lines.splice(deleteStartIndex, deleteCount);\r\n return deleted;\r\n }\r\n onLinesChanged(changeFromLineNumber, changeToLineNumber) {\r\n if (this.getCount() === 0) {\r\n // no lines\r\n return false;\r\n }\r\n const startLineNumber = this.getStartLineNumber();\r\n const endLineNumber = this.getEndLineNumber();\r\n let someoneNotified = false;\r\n for (let changedLineNumber = changeFromLineNumber; changedLineNumber <= changeToLineNumber; changedLineNumber++) {\r\n if (changedLineNumber >= startLineNumber && changedLineNumber <= endLineNumber) {\r\n // Notify the line\r\n this._lines[changedLineNumber - this._rendLineNumberStart].onContentChanged();\r\n someoneNotified = true;\r\n }\r\n }\r\n return someoneNotified;\r\n }\r\n onLinesInserted(insertFromLineNumber, insertToLineNumber) {\r\n if (this.getCount() === 0) {\r\n // no lines\r\n return null;\r\n }\r\n const insertCnt = insertToLineNumber - insertFromLineNumber + 1;\r\n const startLineNumber = this.getStartLineNumber();\r\n const endLineNumber = this.getEndLineNumber();\r\n if (insertFromLineNumber <= startLineNumber) {\r\n // inserting above the viewport\r\n this._rendLineNumberStart += insertCnt;\r\n return null;\r\n }\r\n if (insertFromLineNumber > endLineNumber) {\r\n // inserting below the viewport\r\n return null;\r\n }\r\n if (insertCnt + insertFromLineNumber > endLineNumber) {\r\n // insert inside the viewport in such a way that all remaining lines are pushed outside\r\n const deleted = this._lines.splice(insertFromLineNumber - this._rendLineNumberStart, endLineNumber - insertFromLineNumber + 1);\r\n return deleted;\r\n }\r\n // insert inside the viewport, push out some lines, but not all remaining lines\r\n const newLines = [];\r\n for (let i = 0; i < insertCnt; i++) {\r\n newLines[i] = this._createLine();\r\n }\r\n const insertIndex = insertFromLineNumber - this._rendLineNumberStart;\r\n const beforeLines = this._lines.slice(0, insertIndex);\r\n const afterLines = this._lines.slice(insertIndex, this._lines.length - insertCnt);\r\n const deletedLines = this._lines.slice(this._lines.length - insertCnt, this._lines.length);\r\n this._lines = beforeLines.concat(newLines).concat(afterLines);\r\n return deletedLines;\r\n }\r\n onTokensChanged(ranges) {\r\n if (this.getCount() === 0) {\r\n // no lines\r\n return false;\r\n }\r\n const startLineNumber = this.getStartLineNumber();\r\n const endLineNumber = this.getEndLineNumber();\r\n let notifiedSomeone = false;\r\n for (let i = 0, len = ranges.length; i < len; i++) {\r\n const rng = ranges[i];\r\n if (rng.toLineNumber < startLineNumber || rng.fromLineNumber > endLineNumber) {\r\n // range outside viewport\r\n continue;\r\n }\r\n const from = Math.max(startLineNumber, rng.fromLineNumber);\r\n const to = Math.min(endLineNumber, rng.toLineNumber);\r\n for (let lineNumber = from; lineNumber <= to; lineNumber++) {\r\n const lineIndex = lineNumber - this._rendLineNumberStart;\r\n this._lines[lineIndex].onTokensChanged();\r\n notifiedSomeone = true;\r\n }\r\n }\r\n return notifiedSomeone;\r\n }\r\n}\r\nexport class VisibleLinesCollection {\r\n constructor(host) {\r\n this._host = host;\r\n this.domNode = this._createDomNode();\r\n this._linesCollection = new RenderedLinesCollection(() => this._host.createVisibleLine());\r\n }\r\n _createDomNode() {\r\n const domNode = createFastDomNode(document.createElement('div'));\r\n domNode.setClassName('view-layer');\r\n domNode.setPosition('absolute');\r\n domNode.domNode.setAttribute('role', 'presentation');\r\n domNode.domNode.setAttribute('aria-hidden', 'true');\r\n return domNode;\r\n }\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n onFlushed(e) {\r\n this._linesCollection.flush();\r\n // No need to clear the dom node because a full .innerHTML will occur in ViewLayerRenderer._render\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return this._linesCollection.onLinesChanged(e.fromLineNumber, e.toLineNumber);\r\n }\r\n onLinesDeleted(e) {\r\n const deleted = this._linesCollection.onLinesDeleted(e.fromLineNumber, e.toLineNumber);\r\n if (deleted) {\r\n // Remove from DOM\r\n for (let i = 0, len = deleted.length; i < len; i++) {\r\n const lineDomNode = deleted[i].getDomNode();\r\n if (lineDomNode) {\r\n this.domNode.domNode.removeChild(lineDomNode);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n const deleted = this._linesCollection.onLinesInserted(e.fromLineNumber, e.toLineNumber);\r\n if (deleted) {\r\n // Remove from DOM\r\n for (let i = 0, len = deleted.length; i < len; i++) {\r\n const lineDomNode = deleted[i].getDomNode();\r\n if (lineDomNode) {\r\n this.domNode.domNode.removeChild(lineDomNode);\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged;\r\n }\r\n onTokensChanged(e) {\r\n return this._linesCollection.onTokensChanged(e.ranges);\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // ---- end view event handlers\r\n getStartLineNumber() {\r\n return this._linesCollection.getStartLineNumber();\r\n }\r\n getEndLineNumber() {\r\n return this._linesCollection.getEndLineNumber();\r\n }\r\n getVisibleLine(lineNumber) {\r\n return this._linesCollection.getLine(lineNumber);\r\n }\r\n renderLines(viewportData) {\r\n const inp = this._linesCollection._get();\r\n const renderer = new ViewLayerRenderer(this.domNode.domNode, this._host, viewportData);\r\n const ctx = {\r\n rendLineNumberStart: inp.rendLineNumberStart,\r\n lines: inp.lines,\r\n linesLength: inp.lines.length\r\n };\r\n // Decide if this render will do a single update (single large .innerHTML) or many updates (inserting/removing dom nodes)\r\n const resCtx = renderer.render(ctx, viewportData.startLineNumber, viewportData.endLineNumber, viewportData.relativeVerticalOffset);\r\n this._linesCollection._set(resCtx.rendLineNumberStart, resCtx.lines);\r\n }\r\n}\r\nclass ViewLayerRenderer {\r\n constructor(domNode, host, viewportData) {\r\n this.domNode = domNode;\r\n this.host = host;\r\n this.viewportData = viewportData;\r\n }\r\n render(inContext, startLineNumber, stopLineNumber, deltaTop) {\r\n const ctx = {\r\n rendLineNumberStart: inContext.rendLineNumberStart,\r\n lines: inContext.lines.slice(0),\r\n linesLength: inContext.linesLength\r\n };\r\n if ((ctx.rendLineNumberStart + ctx.linesLength - 1 < startLineNumber) || (stopLineNumber < ctx.rendLineNumberStart)) {\r\n // There is no overlap whatsoever\r\n ctx.rendLineNumberStart = startLineNumber;\r\n ctx.linesLength = stopLineNumber - startLineNumber + 1;\r\n ctx.lines = [];\r\n for (let x = startLineNumber; x <= stopLineNumber; x++) {\r\n ctx.lines[x - startLineNumber] = this.host.createVisibleLine();\r\n }\r\n this._finishRendering(ctx, true, deltaTop);\r\n return ctx;\r\n }\r\n // Update lines which will remain untouched\r\n this._renderUntouchedLines(ctx, Math.max(startLineNumber - ctx.rendLineNumberStart, 0), Math.min(stopLineNumber - ctx.rendLineNumberStart, ctx.linesLength - 1), deltaTop, startLineNumber);\r\n if (ctx.rendLineNumberStart > startLineNumber) {\r\n // Insert lines before\r\n const fromLineNumber = startLineNumber;\r\n const toLineNumber = Math.min(stopLineNumber, ctx.rendLineNumberStart - 1);\r\n if (fromLineNumber <= toLineNumber) {\r\n this._insertLinesBefore(ctx, fromLineNumber, toLineNumber, deltaTop, startLineNumber);\r\n ctx.linesLength += toLineNumber - fromLineNumber + 1;\r\n }\r\n }\r\n else if (ctx.rendLineNumberStart < startLineNumber) {\r\n // Remove lines before\r\n const removeCnt = Math.min(ctx.linesLength, startLineNumber - ctx.rendLineNumberStart);\r\n if (removeCnt > 0) {\r\n this._removeLinesBefore(ctx, removeCnt);\r\n ctx.linesLength -= removeCnt;\r\n }\r\n }\r\n ctx.rendLineNumberStart = startLineNumber;\r\n if (ctx.rendLineNumberStart + ctx.linesLength - 1 < stopLineNumber) {\r\n // Insert lines after\r\n const fromLineNumber = ctx.rendLineNumberStart + ctx.linesLength;\r\n const toLineNumber = stopLineNumber;\r\n if (fromLineNumber <= toLineNumber) {\r\n this._insertLinesAfter(ctx, fromLineNumber, toLineNumber, deltaTop, startLineNumber);\r\n ctx.linesLength += toLineNumber - fromLineNumber + 1;\r\n }\r\n }\r\n else if (ctx.rendLineNumberStart + ctx.linesLength - 1 > stopLineNumber) {\r\n // Remove lines after\r\n const fromLineNumber = Math.max(0, stopLineNumber - ctx.rendLineNumberStart + 1);\r\n const toLineNumber = ctx.linesLength - 1;\r\n const removeCnt = toLineNumber - fromLineNumber + 1;\r\n if (removeCnt > 0) {\r\n this._removeLinesAfter(ctx, removeCnt);\r\n ctx.linesLength -= removeCnt;\r\n }\r\n }\r\n this._finishRendering(ctx, false, deltaTop);\r\n return ctx;\r\n }\r\n _renderUntouchedLines(ctx, startIndex, endIndex, deltaTop, deltaLN) {\r\n const rendLineNumberStart = ctx.rendLineNumberStart;\r\n const lines = ctx.lines;\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n const lineNumber = rendLineNumberStart + i;\r\n lines[i].layoutLine(lineNumber, deltaTop[lineNumber - deltaLN]);\r\n }\r\n }\r\n _insertLinesBefore(ctx, fromLineNumber, toLineNumber, deltaTop, deltaLN) {\r\n const newLines = [];\r\n let newLinesLen = 0;\r\n for (let lineNumber = fromLineNumber; lineNumber <= toLineNumber; lineNumber++) {\r\n newLines[newLinesLen++] = this.host.createVisibleLine();\r\n }\r\n ctx.lines = newLines.concat(ctx.lines);\r\n }\r\n _removeLinesBefore(ctx, removeCount) {\r\n for (let i = 0; i < removeCount; i++) {\r\n const lineDomNode = ctx.lines[i].getDomNode();\r\n if (lineDomNode) {\r\n this.domNode.removeChild(lineDomNode);\r\n }\r\n }\r\n ctx.lines.splice(0, removeCount);\r\n }\r\n _insertLinesAfter(ctx, fromLineNumber, toLineNumber, deltaTop, deltaLN) {\r\n const newLines = [];\r\n let newLinesLen = 0;\r\n for (let lineNumber = fromLineNumber; lineNumber <= toLineNumber; lineNumber++) {\r\n newLines[newLinesLen++] = this.host.createVisibleLine();\r\n }\r\n ctx.lines = ctx.lines.concat(newLines);\r\n }\r\n _removeLinesAfter(ctx, removeCount) {\r\n const removeIndex = ctx.linesLength - removeCount;\r\n for (let i = 0; i < removeCount; i++) {\r\n const lineDomNode = ctx.lines[removeIndex + i].getDomNode();\r\n if (lineDomNode) {\r\n this.domNode.removeChild(lineDomNode);\r\n }\r\n }\r\n ctx.lines.splice(removeIndex, removeCount);\r\n }\r\n _finishRenderingNewLines(ctx, domNodeIsEmpty, newLinesHTML, wasNew) {\r\n const lastChild = this.domNode.lastChild;\r\n if (domNodeIsEmpty || !lastChild) {\r\n this.domNode.innerHTML = newLinesHTML;\r\n }\r\n else {\r\n lastChild.insertAdjacentHTML('afterend', newLinesHTML);\r\n }\r\n let currChild = this.domNode.lastChild;\r\n for (let i = ctx.linesLength - 1; i >= 0; i--) {\r\n const line = ctx.lines[i];\r\n if (wasNew[i]) {\r\n line.setDomNode(currChild);\r\n currChild = currChild.previousSibling;\r\n }\r\n }\r\n }\r\n _finishRenderingInvalidLines(ctx, invalidLinesHTML, wasInvalid) {\r\n const hugeDomNode = document.createElement('div');\r\n hugeDomNode.innerHTML = invalidLinesHTML;\r\n for (let i = 0; i < ctx.linesLength; i++) {\r\n const line = ctx.lines[i];\r\n if (wasInvalid[i]) {\r\n const source = hugeDomNode.firstChild;\r\n const lineDomNode = line.getDomNode();\r\n lineDomNode.parentNode.replaceChild(source, lineDomNode);\r\n line.setDomNode(source);\r\n }\r\n }\r\n }\r\n _finishRendering(ctx, domNodeIsEmpty, deltaTop) {\r\n const sb = ViewLayerRenderer._sb;\r\n const linesLength = ctx.linesLength;\r\n const lines = ctx.lines;\r\n const rendLineNumberStart = ctx.rendLineNumberStart;\r\n const wasNew = [];\r\n {\r\n sb.reset();\r\n let hadNewLine = false;\r\n for (let i = 0; i < linesLength; i++) {\r\n const line = lines[i];\r\n wasNew[i] = false;\r\n const lineDomNode = line.getDomNode();\r\n if (lineDomNode) {\r\n // line is not new\r\n continue;\r\n }\r\n const renderResult = line.renderLine(i + rendLineNumberStart, deltaTop[i], this.viewportData, sb);\r\n if (!renderResult) {\r\n // line does not need rendering\r\n continue;\r\n }\r\n wasNew[i] = true;\r\n hadNewLine = true;\r\n }\r\n if (hadNewLine) {\r\n this._finishRenderingNewLines(ctx, domNodeIsEmpty, sb.build(), wasNew);\r\n }\r\n }\r\n {\r\n sb.reset();\r\n let hadInvalidLine = false;\r\n const wasInvalid = [];\r\n for (let i = 0; i < linesLength; i++) {\r\n const line = lines[i];\r\n wasInvalid[i] = false;\r\n if (wasNew[i]) {\r\n // line was new\r\n continue;\r\n }\r\n const renderResult = line.renderLine(i + rendLineNumberStart, deltaTop[i], this.viewportData, sb);\r\n if (!renderResult) {\r\n // line does not need rendering\r\n continue;\r\n }\r\n wasInvalid[i] = true;\r\n hadInvalidLine = true;\r\n }\r\n if (hadInvalidLine) {\r\n this._finishRenderingInvalidLines(ctx, sb.build(), wasInvalid);\r\n }\r\n }\r\n }\r\n}\r\nViewLayerRenderer._sb = createStringBuilder(100000);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { VisibleLinesCollection } from './viewLayer.js';\r\nimport { ViewPart } from './viewPart.js';\r\nexport class ViewOverlays extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n this._visibleLines = new VisibleLinesCollection(this);\r\n this.domNode = this._visibleLines.domNode;\r\n this._dynamicOverlays = [];\r\n this._isFocused = false;\r\n this.domNode.setClassName('view-overlays');\r\n }\r\n shouldRender() {\r\n if (super.shouldRender()) {\r\n return true;\r\n }\r\n for (let i = 0, len = this._dynamicOverlays.length; i < len; i++) {\r\n const dynamicOverlay = this._dynamicOverlays[i];\r\n if (dynamicOverlay.shouldRender()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n dispose() {\r\n super.dispose();\r\n for (let i = 0, len = this._dynamicOverlays.length; i < len; i++) {\r\n const dynamicOverlay = this._dynamicOverlays[i];\r\n dynamicOverlay.dispose();\r\n }\r\n this._dynamicOverlays = [];\r\n }\r\n getDomNode() {\r\n return this.domNode;\r\n }\r\n // ---- begin IVisibleLinesHost\r\n createVisibleLine() {\r\n return new ViewOverlayLine(this._context.configuration, this._dynamicOverlays);\r\n }\r\n // ---- end IVisibleLinesHost\r\n addDynamicOverlay(overlay) {\r\n this._dynamicOverlays.push(overlay);\r\n }\r\n // ----- event handlers\r\n onConfigurationChanged(e) {\r\n this._visibleLines.onConfigurationChanged(e);\r\n const startLineNumber = this._visibleLines.getStartLineNumber();\r\n const endLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n const line = this._visibleLines.getVisibleLine(lineNumber);\r\n line.onConfigurationChanged(e);\r\n }\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return this._visibleLines.onFlushed(e);\r\n }\r\n onFocusChanged(e) {\r\n this._isFocused = e.isFocused;\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return this._visibleLines.onLinesChanged(e);\r\n }\r\n onLinesDeleted(e) {\r\n return this._visibleLines.onLinesDeleted(e);\r\n }\r\n onLinesInserted(e) {\r\n return this._visibleLines.onLinesInserted(e);\r\n }\r\n onScrollChanged(e) {\r\n return this._visibleLines.onScrollChanged(e) || true;\r\n }\r\n onTokensChanged(e) {\r\n return this._visibleLines.onTokensChanged(e);\r\n }\r\n onZonesChanged(e) {\r\n return this._visibleLines.onZonesChanged(e);\r\n }\r\n // ----- end event handlers\r\n prepareRender(ctx) {\r\n const toRender = this._dynamicOverlays.filter(overlay => overlay.shouldRender());\r\n for (let i = 0, len = toRender.length; i < len; i++) {\r\n const dynamicOverlay = toRender[i];\r\n dynamicOverlay.prepareRender(ctx);\r\n dynamicOverlay.onDidRender();\r\n }\r\n }\r\n render(ctx) {\r\n // Overwriting to bypass `shouldRender` flag\r\n this._viewOverlaysRender(ctx);\r\n this.domNode.toggleClassName('focused', this._isFocused);\r\n }\r\n _viewOverlaysRender(ctx) {\r\n this._visibleLines.renderLines(ctx.viewportData);\r\n }\r\n}\r\nexport class ViewOverlayLine {\r\n constructor(configuration, dynamicOverlays) {\r\n this._configuration = configuration;\r\n this._lineHeight = this._configuration.options.get(51 /* lineHeight */);\r\n this._dynamicOverlays = dynamicOverlays;\r\n this._domNode = null;\r\n this._renderedContent = null;\r\n }\r\n getDomNode() {\r\n if (!this._domNode) {\r\n return null;\r\n }\r\n return this._domNode.domNode;\r\n }\r\n setDomNode(domNode) {\r\n this._domNode = createFastDomNode(domNode);\r\n }\r\n onContentChanged() {\r\n // Nothing\r\n }\r\n onTokensChanged() {\r\n // Nothing\r\n }\r\n onConfigurationChanged(e) {\r\n this._lineHeight = this._configuration.options.get(51 /* lineHeight */);\r\n }\r\n renderLine(lineNumber, deltaTop, viewportData, sb) {\r\n let result = '';\r\n for (let i = 0, len = this._dynamicOverlays.length; i < len; i++) {\r\n const dynamicOverlay = this._dynamicOverlays[i];\r\n result += dynamicOverlay.render(viewportData.startLineNumber, lineNumber);\r\n }\r\n if (this._renderedContent === result) {\r\n // No rendering needed\r\n return false;\r\n }\r\n this._renderedContent = result;\r\n sb.appendASCIIString('<div style=\"position:absolute;top:');\r\n sb.appendASCIIString(String(deltaTop));\r\n sb.appendASCIIString('px;width:100%;height:');\r\n sb.appendASCIIString(String(this._lineHeight));\r\n sb.appendASCIIString('px;\">');\r\n sb.appendASCIIString(result);\r\n sb.appendASCIIString('</div>');\r\n return true;\r\n }\r\n layoutLine(lineNumber, deltaTop) {\r\n if (this._domNode) {\r\n this._domNode.setTop(deltaTop);\r\n this._domNode.setHeight(this._lineHeight);\r\n }\r\n }\r\n}\r\nexport class ContentViewOverlays extends ViewOverlays {\r\n constructor(context) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this.domNode.setHeight(0);\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._contentWidth = layoutInfo.contentWidth;\r\n return super.onConfigurationChanged(e) || true;\r\n }\r\n onScrollChanged(e) {\r\n return super.onScrollChanged(e) || e.scrollWidthChanged;\r\n }\r\n // --- end event handlers\r\n _viewOverlaysRender(ctx) {\r\n super._viewOverlaysRender(ctx);\r\n this.domNode.setWidth(Math.max(ctx.scrollWidth, this._contentWidth));\r\n }\r\n}\r\nexport class MarginViewOverlays extends ViewOverlays {\r\n constructor(context) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this.domNode.setClassName('margin-view-overlays');\r\n this.domNode.setWidth(1);\r\n Configuration.applyFontInfo(this.domNode, options.get(36 /* fontInfo */));\r\n }\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n Configuration.applyFontInfo(this.domNode, options.get(36 /* fontInfo */));\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n return super.onConfigurationChanged(e) || true;\r\n }\r\n onScrollChanged(e) {\r\n return super.onScrollChanged(e) || e.scrollHeightChanged;\r\n }\r\n _viewOverlaysRender(ctx) {\r\n super._viewOverlaysRender(ctx);\r\n const height = Math.min(ctx.scrollHeight, 1000000);\r\n this.domNode.setHeight(height);\r\n this.domNode.setWidth(this._contentLeft);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { FastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { ViewEventHandler } from '../../common/viewModel/viewEventHandler.js';\r\nexport class ViewPart extends ViewEventHandler {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n super.dispose();\r\n }\r\n}\r\nexport class PartFingerprints {\r\n static write(target, partId) {\r\n if (target instanceof FastDomNode) {\r\n target.setAttribute('data-mprt', String(partId));\r\n }\r\n else {\r\n target.setAttribute('data-mprt', String(partId));\r\n }\r\n }\r\n static read(target) {\r\n const r = target.getAttribute('data-mprt');\r\n if (r === null) {\r\n return 0 /* None */;\r\n }\r\n return parseInt(r, 10);\r\n }\r\n static collect(child, stopAt) {\r\n let result = [], resultLen = 0;\r\n while (child && child !== document.body) {\r\n if (child === stopAt) {\r\n break;\r\n }\r\n if (child.nodeType === child.ELEMENT_NODE) {\r\n result[resultLen++] = this.read(child);\r\n }\r\n child = child.parentElement;\r\n }\r\n const r = new Uint8Array(resultLen);\r\n for (let i = 0; i < resultLen; i++) {\r\n r[i] = result[resultLen - i - 1];\r\n }\r\n return r;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { MouseTarget } from '../controller/mouseTarget.js';\r\nexport class ViewUserInputEvents {\r\n constructor(coordinatesConverter) {\r\n this.onKeyDown = null;\r\n this.onKeyUp = null;\r\n this.onContextMenu = null;\r\n this.onMouseMove = null;\r\n this.onMouseLeave = null;\r\n this.onMouseDown = null;\r\n this.onMouseUp = null;\r\n this.onMouseDrag = null;\r\n this.onMouseDrop = null;\r\n this.onMouseWheel = null;\r\n this._coordinatesConverter = coordinatesConverter;\r\n }\r\n emitKeyDown(e) {\r\n if (this.onKeyDown) {\r\n this.onKeyDown(e);\r\n }\r\n }\r\n emitKeyUp(e) {\r\n if (this.onKeyUp) {\r\n this.onKeyUp(e);\r\n }\r\n }\r\n emitContextMenu(e) {\r\n if (this.onContextMenu) {\r\n this.onContextMenu(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseMove(e) {\r\n if (this.onMouseMove) {\r\n this.onMouseMove(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseLeave(e) {\r\n if (this.onMouseLeave) {\r\n this.onMouseLeave(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseDown(e) {\r\n if (this.onMouseDown) {\r\n this.onMouseDown(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseUp(e) {\r\n if (this.onMouseUp) {\r\n this.onMouseUp(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseDrag(e) {\r\n if (this.onMouseDrag) {\r\n this.onMouseDrag(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseDrop(e) {\r\n if (this.onMouseDrop) {\r\n this.onMouseDrop(this._convertViewToModelMouseEvent(e));\r\n }\r\n }\r\n emitMouseWheel(e) {\r\n if (this.onMouseWheel) {\r\n this.onMouseWheel(e);\r\n }\r\n }\r\n _convertViewToModelMouseEvent(e) {\r\n if (e.target) {\r\n return {\r\n event: e.event,\r\n target: this._convertViewToModelMouseTarget(e.target)\r\n };\r\n }\r\n return e;\r\n }\r\n _convertViewToModelMouseTarget(target) {\r\n return ViewUserInputEvents.convertViewToModelMouseTarget(target, this._coordinatesConverter);\r\n }\r\n static convertViewToModelMouseTarget(target, coordinatesConverter) {\r\n return new ExternalMouseTarget(target.element, target.type, target.mouseColumn, target.position ? coordinatesConverter.convertViewPositionToModelPosition(target.position) : null, target.range ? coordinatesConverter.convertViewRangeToModelRange(target.range) : null, target.detail);\r\n }\r\n}\r\nclass ExternalMouseTarget {\r\n constructor(element, type, mouseColumn, position, range, detail) {\r\n this.element = element;\r\n this.type = type;\r\n this.mouseColumn = mouseColumn;\r\n this.position = position;\r\n this.range = range;\r\n this.detail = detail;\r\n }\r\n toString() {\r\n return MouseTarget.toString(this);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\r\nclass Coordinate {\r\n constructor(top, left) {\r\n this.top = top;\r\n this.left = left;\r\n }\r\n}\r\nexport class ViewContentWidgets extends ViewPart {\r\n constructor(context, viewDomNode) {\r\n super(context);\r\n this._viewDomNode = viewDomNode;\r\n this._widgets = {};\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n PartFingerprints.write(this.domNode, 1 /* ContentWidgets */);\r\n this.domNode.setClassName('contentWidgets');\r\n this.domNode.setPosition('absolute');\r\n this.domNode.setTop(0);\r\n this.overflowingContentWidgetsDomNode = createFastDomNode(document.createElement('div'));\r\n PartFingerprints.write(this.overflowingContentWidgetsDomNode, 2 /* OverflowingContentWidgets */);\r\n this.overflowingContentWidgetsDomNode.setClassName('overflowingContentWidgets');\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._widgets = {};\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const keys = Object.keys(this._widgets);\r\n for (const widgetId of keys) {\r\n this._widgets[widgetId].onConfigurationChanged(e);\r\n }\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n // true for inline decorations that can end up relayouting text\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLineMappingChanged(e) {\r\n const keys = Object.keys(this._widgets);\r\n for (const widgetId of keys) {\r\n this._widgets[widgetId].onLineMappingChanged(e);\r\n }\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return true;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // ---- end view event handlers\r\n addWidget(_widget) {\r\n const myWidget = new Widget(this._context, this._viewDomNode, _widget);\r\n this._widgets[myWidget.id] = myWidget;\r\n if (myWidget.allowEditorOverflow) {\r\n this.overflowingContentWidgetsDomNode.appendChild(myWidget.domNode);\r\n }\r\n else {\r\n this.domNode.appendChild(myWidget.domNode);\r\n }\r\n this.setShouldRender();\r\n }\r\n setWidgetPosition(widget, range, preference) {\r\n const myWidget = this._widgets[widget.getId()];\r\n myWidget.setPosition(range, preference);\r\n this.setShouldRender();\r\n }\r\n removeWidget(widget) {\r\n const widgetId = widget.getId();\r\n if (this._widgets.hasOwnProperty(widgetId)) {\r\n const myWidget = this._widgets[widgetId];\r\n delete this._widgets[widgetId];\r\n const domNode = myWidget.domNode.domNode;\r\n domNode.parentNode.removeChild(domNode);\r\n domNode.removeAttribute('monaco-visible-content-widget');\r\n this.setShouldRender();\r\n }\r\n }\r\n shouldSuppressMouseDownOnWidget(widgetId) {\r\n if (this._widgets.hasOwnProperty(widgetId)) {\r\n return this._widgets[widgetId].suppressMouseDown;\r\n }\r\n return false;\r\n }\r\n onBeforeRender(viewportData) {\r\n const keys = Object.keys(this._widgets);\r\n for (const widgetId of keys) {\r\n this._widgets[widgetId].onBeforeRender(viewportData);\r\n }\r\n }\r\n prepareRender(ctx) {\r\n const keys = Object.keys(this._widgets);\r\n for (const widgetId of keys) {\r\n this._widgets[widgetId].prepareRender(ctx);\r\n }\r\n }\r\n render(ctx) {\r\n const keys = Object.keys(this._widgets);\r\n for (const widgetId of keys) {\r\n this._widgets[widgetId].render(ctx);\r\n }\r\n }\r\n}\r\nclass Widget {\r\n constructor(context, viewDomNode, actual) {\r\n this._context = context;\r\n this._viewDomNode = viewDomNode;\r\n this._actual = actual;\r\n this.domNode = createFastDomNode(this._actual.getDomNode());\r\n this.id = this._actual.getId();\r\n this.allowEditorOverflow = this._actual.allowEditorOverflow || false;\r\n this.suppressMouseDown = this._actual.suppressMouseDown || false;\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._fixedOverflowWidgets = options.get(30 /* fixedOverflowWidgets */);\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._range = null;\r\n this._viewRange = null;\r\n this._preference = [];\r\n this._cachedDomNodeClientWidth = -1;\r\n this._cachedDomNodeClientHeight = -1;\r\n this._maxWidth = this._getMaxWidth();\r\n this._isVisible = false;\r\n this._renderData = null;\r\n this.domNode.setPosition((this._fixedOverflowWidgets && this.allowEditorOverflow) ? 'fixed' : 'absolute');\r\n this.domNode.setVisibility('hidden');\r\n this.domNode.setAttribute('widgetId', this.id);\r\n this.domNode.setMaxWidth(this._maxWidth);\r\n }\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._maxWidth = this._getMaxWidth();\r\n }\r\n }\r\n onLineMappingChanged(e) {\r\n this._setPosition(this._range);\r\n }\r\n _setPosition(range) {\r\n this._range = range;\r\n this._viewRange = null;\r\n if (this._range) {\r\n // Do not trust that widgets give a valid position\r\n const validModelRange = this._context.model.validateModelRange(this._range);\r\n if (this._context.model.coordinatesConverter.modelPositionIsVisible(validModelRange.getStartPosition()) || this._context.model.coordinatesConverter.modelPositionIsVisible(validModelRange.getEndPosition())) {\r\n this._viewRange = this._context.model.coordinatesConverter.convertModelRangeToViewRange(validModelRange);\r\n }\r\n }\r\n }\r\n _getMaxWidth() {\r\n return (this.allowEditorOverflow\r\n ? window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth\r\n : this._contentWidth);\r\n }\r\n setPosition(range, preference) {\r\n this._setPosition(range);\r\n this._preference = preference;\r\n this._cachedDomNodeClientWidth = -1;\r\n this._cachedDomNodeClientHeight = -1;\r\n }\r\n _layoutBoxInViewport(topLeft, bottomLeft, width, height, ctx) {\r\n // Our visible box is split horizontally by the current line => 2 boxes\r\n // a) the box above the line\r\n const aboveLineTop = topLeft.top;\r\n const heightAboveLine = aboveLineTop;\r\n // b) the box under the line\r\n const underLineTop = bottomLeft.top + this._lineHeight;\r\n const heightUnderLine = ctx.viewportHeight - underLineTop;\r\n const aboveTop = aboveLineTop - height;\r\n const fitsAbove = (heightAboveLine >= height);\r\n const belowTop = underLineTop;\r\n const fitsBelow = (heightUnderLine >= height);\r\n // And its left\r\n let actualAboveLeft = topLeft.left;\r\n let actualBelowLeft = bottomLeft.left;\r\n if (actualAboveLeft + width > ctx.scrollLeft + ctx.viewportWidth) {\r\n actualAboveLeft = ctx.scrollLeft + ctx.viewportWidth - width;\r\n }\r\n if (actualBelowLeft + width > ctx.scrollLeft + ctx.viewportWidth) {\r\n actualBelowLeft = ctx.scrollLeft + ctx.viewportWidth - width;\r\n }\r\n if (actualAboveLeft < ctx.scrollLeft) {\r\n actualAboveLeft = ctx.scrollLeft;\r\n }\r\n if (actualBelowLeft < ctx.scrollLeft) {\r\n actualBelowLeft = ctx.scrollLeft;\r\n }\r\n return {\r\n fitsAbove: fitsAbove,\r\n aboveTop: aboveTop,\r\n aboveLeft: actualAboveLeft,\r\n fitsBelow: fitsBelow,\r\n belowTop: belowTop,\r\n belowLeft: actualBelowLeft,\r\n };\r\n }\r\n _layoutHorizontalSegmentInPage(windowSize, domNodePosition, left, width) {\r\n // Initially, the limits are defined as the dom node limits\r\n const MIN_LIMIT = Math.max(0, domNodePosition.left - width);\r\n const MAX_LIMIT = Math.min(domNodePosition.left + domNodePosition.width + width, windowSize.width);\r\n let absoluteLeft = domNodePosition.left + left - dom.StandardWindow.scrollX;\r\n if (absoluteLeft + width > MAX_LIMIT) {\r\n const delta = absoluteLeft - (MAX_LIMIT - width);\r\n absoluteLeft -= delta;\r\n left -= delta;\r\n }\r\n if (absoluteLeft < MIN_LIMIT) {\r\n const delta = absoluteLeft - MIN_LIMIT;\r\n absoluteLeft -= delta;\r\n left -= delta;\r\n }\r\n return [left, absoluteLeft];\r\n }\r\n _layoutBoxInPage(topLeft, bottomLeft, width, height, ctx) {\r\n const aboveTop = topLeft.top - height;\r\n const belowTop = bottomLeft.top + this._lineHeight;\r\n const domNodePosition = dom.getDomNodePagePosition(this._viewDomNode.domNode);\r\n const absoluteAboveTop = domNodePosition.top + aboveTop - dom.StandardWindow.scrollY;\r\n const absoluteBelowTop = domNodePosition.top + belowTop - dom.StandardWindow.scrollY;\r\n const windowSize = dom.getClientArea(document.body);\r\n const [aboveLeft, absoluteAboveLeft] = this._layoutHorizontalSegmentInPage(windowSize, domNodePosition, topLeft.left - ctx.scrollLeft + this._contentLeft, width);\r\n const [belowLeft, absoluteBelowLeft] = this._layoutHorizontalSegmentInPage(windowSize, domNodePosition, bottomLeft.left - ctx.scrollLeft + this._contentLeft, width);\r\n // Leave some clearance to the top/bottom\r\n const TOP_PADDING = 22;\r\n const BOTTOM_PADDING = 22;\r\n const fitsAbove = (absoluteAboveTop >= TOP_PADDING);\r\n const fitsBelow = (absoluteBelowTop + height <= windowSize.height - BOTTOM_PADDING);\r\n if (this._fixedOverflowWidgets) {\r\n return {\r\n fitsAbove,\r\n aboveTop: Math.max(absoluteAboveTop, TOP_PADDING),\r\n aboveLeft: absoluteAboveLeft,\r\n fitsBelow,\r\n belowTop: absoluteBelowTop,\r\n belowLeft: absoluteBelowLeft\r\n };\r\n }\r\n return {\r\n fitsAbove,\r\n aboveTop: aboveTop,\r\n aboveLeft,\r\n fitsBelow,\r\n belowTop,\r\n belowLeft\r\n };\r\n }\r\n _prepareRenderWidgetAtExactPositionOverflowing(topLeft) {\r\n return new Coordinate(topLeft.top, topLeft.left + this._contentLeft);\r\n }\r\n /**\r\n * Compute `this._topLeft`\r\n */\r\n _getTopAndBottomLeft(ctx) {\r\n if (!this._viewRange) {\r\n return [null, null];\r\n }\r\n const visibleRangesForRange = ctx.linesVisibleRangesForRange(this._viewRange, false);\r\n if (!visibleRangesForRange || visibleRangesForRange.length === 0) {\r\n return [null, null];\r\n }\r\n let firstLine = visibleRangesForRange[0];\r\n let lastLine = visibleRangesForRange[0];\r\n for (const visibleRangesForLine of visibleRangesForRange) {\r\n if (visibleRangesForLine.lineNumber < firstLine.lineNumber) {\r\n firstLine = visibleRangesForLine;\r\n }\r\n if (visibleRangesForLine.lineNumber > lastLine.lineNumber) {\r\n lastLine = visibleRangesForLine;\r\n }\r\n }\r\n let firstLineMinLeft = 1073741824 /* MAX_SAFE_SMALL_INTEGER */; //firstLine.Constants.MAX_SAFE_SMALL_INTEGER;\r\n for (const visibleRange of firstLine.ranges) {\r\n if (visibleRange.left < firstLineMinLeft) {\r\n firstLineMinLeft = visibleRange.left;\r\n }\r\n }\r\n let lastLineMinLeft = 1073741824 /* MAX_SAFE_SMALL_INTEGER */; //lastLine.Constants.MAX_SAFE_SMALL_INTEGER;\r\n for (const visibleRange of lastLine.ranges) {\r\n if (visibleRange.left < lastLineMinLeft) {\r\n lastLineMinLeft = visibleRange.left;\r\n }\r\n }\r\n const topForPosition = ctx.getVerticalOffsetForLineNumber(firstLine.lineNumber) - ctx.scrollTop;\r\n const topLeft = new Coordinate(topForPosition, firstLineMinLeft);\r\n const topForBottomLine = ctx.getVerticalOffsetForLineNumber(lastLine.lineNumber) - ctx.scrollTop;\r\n const bottomLeft = new Coordinate(topForBottomLine, lastLineMinLeft);\r\n return [topLeft, bottomLeft];\r\n }\r\n _prepareRenderWidget(ctx) {\r\n const [topLeft, bottomLeft] = this._getTopAndBottomLeft(ctx);\r\n if (!topLeft || !bottomLeft) {\r\n return null;\r\n }\r\n if (this._cachedDomNodeClientWidth === -1 || this._cachedDomNodeClientHeight === -1) {\r\n const domNode = this.domNode.domNode;\r\n this._cachedDomNodeClientWidth = domNode.clientWidth;\r\n this._cachedDomNodeClientHeight = domNode.clientHeight;\r\n }\r\n let placement;\r\n if (this.allowEditorOverflow) {\r\n placement = this._layoutBoxInPage(topLeft, bottomLeft, this._cachedDomNodeClientWidth, this._cachedDomNodeClientHeight, ctx);\r\n }\r\n else {\r\n placement = this._layoutBoxInViewport(topLeft, bottomLeft, this._cachedDomNodeClientWidth, this._cachedDomNodeClientHeight, ctx);\r\n }\r\n // Do two passes, first for perfect fit, second picks first option\r\n if (this._preference) {\r\n for (let pass = 1; pass <= 2; pass++) {\r\n for (const pref of this._preference) {\r\n // placement\r\n if (pref === 1 /* ABOVE */) {\r\n if (!placement) {\r\n // Widget outside of viewport\r\n return null;\r\n }\r\n if (pass === 2 || placement.fitsAbove) {\r\n return new Coordinate(placement.aboveTop, placement.aboveLeft);\r\n }\r\n }\r\n else if (pref === 2 /* BELOW */) {\r\n if (!placement) {\r\n // Widget outside of viewport\r\n return null;\r\n }\r\n if (pass === 2 || placement.fitsBelow) {\r\n return new Coordinate(placement.belowTop, placement.belowLeft);\r\n }\r\n }\r\n else {\r\n if (this.allowEditorOverflow) {\r\n return this._prepareRenderWidgetAtExactPositionOverflowing(topLeft);\r\n }\r\n else {\r\n return topLeft;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * On this first pass, we ensure that the content widget (if it is in the viewport) has the max width set correctly.\r\n */\r\n onBeforeRender(viewportData) {\r\n if (!this._viewRange || !this._preference) {\r\n return;\r\n }\r\n if (this._viewRange.endLineNumber < viewportData.startLineNumber || this._viewRange.startLineNumber > viewportData.endLineNumber) {\r\n // Outside of viewport\r\n return;\r\n }\r\n this.domNode.setMaxWidth(this._maxWidth);\r\n }\r\n prepareRender(ctx) {\r\n this._renderData = this._prepareRenderWidget(ctx);\r\n }\r\n render(ctx) {\r\n if (!this._renderData) {\r\n // This widget should be invisible\r\n if (this._isVisible) {\r\n this.domNode.removeAttribute('monaco-visible-content-widget');\r\n this._isVisible = false;\r\n this.domNode.setVisibility('hidden');\r\n }\r\n return;\r\n }\r\n // This widget should be visible\r\n if (this.allowEditorOverflow) {\r\n this.domNode.setTop(this._renderData.top);\r\n this.domNode.setLeft(this._renderData.left);\r\n }\r\n else {\r\n this.domNode.setTop(this._renderData.top + ctx.scrollTop - ctx.bigNumbersDelta);\r\n this.domNode.setLeft(this._renderData.left);\r\n }\r\n if (!this._isVisible) {\r\n this.domNode.setVisibility('inherit');\r\n this.domNode.setAttribute('monaco-visible-content-widget', 'true');\r\n this._isVisible = true;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './currentLineHighlight.css';\r\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\r\nimport { editorLineHighlight, editorLineHighlightBorder } from '../../../common/view/editorColorRegistry.js';\r\nimport * as arrays from '../../../../base/common/arrays.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nlet isRenderedUsingBorder = true;\r\nexport class AbstractLineHighlightOverlay extends DynamicViewOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._renderLineHighlight = options.get(77 /* renderLineHighlight */);\r\n this._renderLineHightlightOnlyWhenFocus = options.get(78 /* renderLineHighlightOnlyWhenFocus */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._selectionIsEmpty = true;\r\n this._focused = false;\r\n this._cursorLineNumbers = [];\r\n this._selections = [];\r\n this._renderData = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n super.dispose();\r\n }\r\n _readFromSelections() {\r\n let hasChanged = false;\r\n // Only render the first selection when using border\r\n const renderSelections = isRenderedUsingBorder ? this._selections.slice(0, 1) : this._selections;\r\n const cursorsLineNumbers = renderSelections.map(s => s.positionLineNumber);\r\n cursorsLineNumbers.sort((a, b) => a - b);\r\n if (!arrays.equals(this._cursorLineNumbers, cursorsLineNumbers)) {\r\n this._cursorLineNumbers = cursorsLineNumbers;\r\n hasChanged = true;\r\n }\r\n const selectionIsEmpty = renderSelections.every(s => s.isEmpty());\r\n if (this._selectionIsEmpty !== selectionIsEmpty) {\r\n this._selectionIsEmpty = selectionIsEmpty;\r\n hasChanged = true;\r\n }\r\n return hasChanged;\r\n }\r\n // --- begin event handlers\r\n onThemeChanged(e) {\r\n return this._readFromSelections();\r\n }\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._renderLineHighlight = options.get(77 /* renderLineHighlight */);\r\n this._renderLineHightlightOnlyWhenFocus = options.get(78 /* renderLineHighlightOnlyWhenFocus */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._contentWidth = layoutInfo.contentWidth;\r\n return true;\r\n }\r\n onCursorStateChanged(e) {\r\n this._selections = e.selections;\r\n return this._readFromSelections();\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollWidthChanged || e.scrollTopChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n onFocusChanged(e) {\r\n if (!this._renderLineHightlightOnlyWhenFocus) {\r\n return false;\r\n }\r\n this._focused = e.isFocused;\r\n return true;\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n if (!this._shouldRenderThis()) {\r\n this._renderData = null;\r\n return;\r\n }\r\n const renderedLine = this._renderOne(ctx);\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const len = this._cursorLineNumbers.length;\r\n let index = 0;\r\n const renderData = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n while (index < len && this._cursorLineNumbers[index] < lineNumber) {\r\n index++;\r\n }\r\n if (index < len && this._cursorLineNumbers[index] === lineNumber) {\r\n renderData[lineIndex] = renderedLine;\r\n }\r\n else {\r\n renderData[lineIndex] = '';\r\n }\r\n }\r\n this._renderData = renderData;\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderData) {\r\n return '';\r\n }\r\n const lineIndex = lineNumber - startLineNumber;\r\n if (lineIndex >= this._renderData.length) {\r\n return '';\r\n }\r\n return this._renderData[lineIndex];\r\n }\r\n}\r\nexport class CurrentLineHighlightOverlay extends AbstractLineHighlightOverlay {\r\n _renderOne(ctx) {\r\n const className = 'current-line' + (this._shouldRenderOther() ? ' current-line-both' : '');\r\n return `<div class=\"${className}\" style=\"width:${Math.max(ctx.scrollWidth, this._contentWidth)}px; height:${this._lineHeight}px;\"></div>`;\r\n }\r\n _shouldRenderThis() {\r\n return ((this._renderLineHighlight === 'line' || this._renderLineHighlight === 'all')\r\n && this._selectionIsEmpty\r\n && (!this._renderLineHightlightOnlyWhenFocus || this._focused));\r\n }\r\n _shouldRenderOther() {\r\n return ((this._renderLineHighlight === 'gutter' || this._renderLineHighlight === 'all')\r\n && (!this._renderLineHightlightOnlyWhenFocus || this._focused));\r\n }\r\n}\r\nexport class CurrentLineMarginHighlightOverlay extends AbstractLineHighlightOverlay {\r\n _renderOne(ctx) {\r\n const className = 'current-line current-line-margin' + (this._shouldRenderOther() ? ' current-line-margin-both' : '');\r\n return `<div class=\"${className}\" style=\"width:${this._contentLeft}px; height:${this._lineHeight}px;\"></div>`;\r\n }\r\n _shouldRenderThis() {\r\n return ((this._renderLineHighlight === 'gutter' || this._renderLineHighlight === 'all')\r\n && (!this._renderLineHightlightOnlyWhenFocus || this._focused));\r\n }\r\n _shouldRenderOther() {\r\n return ((this._renderLineHighlight === 'line' || this._renderLineHighlight === 'all')\r\n && this._selectionIsEmpty\r\n && (!this._renderLineHightlightOnlyWhenFocus || this._focused));\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n isRenderedUsingBorder = false;\r\n const lineHighlight = theme.getColor(editorLineHighlight);\r\n if (lineHighlight) {\r\n collector.addRule(`.monaco-editor .view-overlays .current-line { background-color: ${lineHighlight}; }`);\r\n collector.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { background-color: ${lineHighlight}; border: none; }`);\r\n }\r\n if (!lineHighlight || lineHighlight.isTransparent() || theme.defines(editorLineHighlightBorder)) {\r\n const lineHighlightBorder = theme.getColor(editorLineHighlightBorder);\r\n if (lineHighlightBorder) {\r\n isRenderedUsingBorder = true;\r\n collector.addRule(`.monaco-editor .view-overlays .current-line { border: 2px solid ${lineHighlightBorder}; }`);\r\n collector.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border: 2px solid ${lineHighlightBorder}; }`);\r\n if (theme.type === 'hc') {\r\n collector.addRule(`.monaco-editor .view-overlays .current-line { border-width: 1px; }`);\r\n collector.addRule(`.monaco-editor .margin-view-overlays .current-line-margin { border-width: 1px; }`);\r\n }\r\n }\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './decorations.css';\r\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { HorizontalRange } from '../../../common/view/renderingContext.js';\r\nexport class DecorationsOverlay extends DynamicViewOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged || e.scrollWidthChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n const _decorations = ctx.getDecorationsInViewport();\r\n // Keep only decorations with `className`\r\n let decorations = [], decorationsLen = 0;\r\n for (let i = 0, len = _decorations.length; i < len; i++) {\r\n const d = _decorations[i];\r\n if (d.options.className) {\r\n decorations[decorationsLen++] = d;\r\n }\r\n }\r\n // Sort decorations for consistent render output\r\n decorations = decorations.sort((a, b) => {\r\n if (a.options.zIndex < b.options.zIndex) {\r\n return -1;\r\n }\r\n if (a.options.zIndex > b.options.zIndex) {\r\n return 1;\r\n }\r\n const aClassName = a.options.className;\r\n const bClassName = b.options.className;\r\n if (aClassName < bClassName) {\r\n return -1;\r\n }\r\n if (aClassName > bClassName) {\r\n return 1;\r\n }\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n });\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n output[lineIndex] = '';\r\n }\r\n // Render first whole line decorations and then regular decorations\r\n this._renderWholeLineDecorations(ctx, decorations, output);\r\n this._renderNormalDecorations(ctx, decorations, output);\r\n this._renderResult = output;\r\n }\r\n _renderWholeLineDecorations(ctx, decorations, output) {\r\n const lineHeight = String(this._lineHeight);\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n for (let i = 0, lenI = decorations.length; i < lenI; i++) {\r\n const d = decorations[i];\r\n if (!d.options.isWholeLine) {\r\n continue;\r\n }\r\n const decorationOutput = ('<div class=\"cdr '\r\n + d.options.className\r\n + '\" style=\"left:0;width:100%;height:'\r\n + lineHeight\r\n + 'px;\"></div>');\r\n const startLineNumber = Math.max(d.range.startLineNumber, visibleStartLineNumber);\r\n const endLineNumber = Math.min(d.range.endLineNumber, visibleEndLineNumber);\r\n for (let j = startLineNumber; j <= endLineNumber; j++) {\r\n const lineIndex = j - visibleStartLineNumber;\r\n output[lineIndex] += decorationOutput;\r\n }\r\n }\r\n }\r\n _renderNormalDecorations(ctx, decorations, output) {\r\n const lineHeight = String(this._lineHeight);\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n let prevClassName = null;\r\n let prevShowIfCollapsed = false;\r\n let prevRange = null;\r\n for (let i = 0, lenI = decorations.length; i < lenI; i++) {\r\n const d = decorations[i];\r\n if (d.options.isWholeLine) {\r\n continue;\r\n }\r\n const className = d.options.className;\r\n const showIfCollapsed = Boolean(d.options.showIfCollapsed);\r\n let range = d.range;\r\n if (showIfCollapsed && range.endColumn === 1 && range.endLineNumber !== range.startLineNumber) {\r\n range = new Range(range.startLineNumber, range.startColumn, range.endLineNumber - 1, this._context.model.getLineMaxColumn(range.endLineNumber - 1));\r\n }\r\n if (prevClassName === className && prevShowIfCollapsed === showIfCollapsed && Range.areIntersectingOrTouching(prevRange, range)) {\r\n // merge into previous decoration\r\n prevRange = Range.plusRange(prevRange, range);\r\n continue;\r\n }\r\n // flush previous decoration\r\n if (prevClassName !== null) {\r\n this._renderNormalDecoration(ctx, prevRange, prevClassName, prevShowIfCollapsed, lineHeight, visibleStartLineNumber, output);\r\n }\r\n prevClassName = className;\r\n prevShowIfCollapsed = showIfCollapsed;\r\n prevRange = range;\r\n }\r\n if (prevClassName !== null) {\r\n this._renderNormalDecoration(ctx, prevRange, prevClassName, prevShowIfCollapsed, lineHeight, visibleStartLineNumber, output);\r\n }\r\n }\r\n _renderNormalDecoration(ctx, range, className, showIfCollapsed, lineHeight, visibleStartLineNumber, output) {\r\n const linesVisibleRanges = ctx.linesVisibleRangesForRange(range, /*TODO@Alex*/ className === 'findMatch');\r\n if (!linesVisibleRanges) {\r\n return;\r\n }\r\n for (let j = 0, lenJ = linesVisibleRanges.length; j < lenJ; j++) {\r\n const lineVisibleRanges = linesVisibleRanges[j];\r\n if (lineVisibleRanges.outsideRenderedLine) {\r\n continue;\r\n }\r\n const lineIndex = lineVisibleRanges.lineNumber - visibleStartLineNumber;\r\n if (showIfCollapsed && lineVisibleRanges.ranges.length === 1) {\r\n const singleVisibleRange = lineVisibleRanges.ranges[0];\r\n if (singleVisibleRange.width === 0) {\r\n // collapsed range case => make the decoration visible by faking its width\r\n lineVisibleRanges.ranges[0] = new HorizontalRange(singleVisibleRange.left, this._typicalHalfwidthCharacterWidth);\r\n }\r\n }\r\n for (let k = 0, lenK = lineVisibleRanges.ranges.length; k < lenK; k++) {\r\n const visibleRange = lineVisibleRanges.ranges[k];\r\n const decorationOutput = ('<div class=\"cdr '\r\n + className\r\n + '\" style=\"left:'\r\n + String(visibleRange.left)\r\n + 'px;width:'\r\n + String(visibleRange.width)\r\n + 'px;height:'\r\n + lineHeight\r\n + 'px;\"></div>');\r\n output[lineIndex] += decorationOutput;\r\n }\r\n }\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n const lineIndex = lineNumber - startLineNumber;\r\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\r\n return '';\r\n }\r\n return this._renderResult[lineIndex];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { SmoothScrollableElement } from '../../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\r\nimport { getThemeTypeSelector } from '../../../../platform/theme/common/themeService.js';\r\nexport class EditorScrollbar extends ViewPart {\r\n constructor(context, linesContent, viewDomNode, overflowGuardDomNode) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n const scrollbar = options.get(84 /* scrollbar */);\r\n const mouseWheelScrollSensitivity = options.get(58 /* mouseWheelScrollSensitivity */);\r\n const fastScrollSensitivity = options.get(28 /* fastScrollSensitivity */);\r\n const scrollPredominantAxis = options.get(87 /* scrollPredominantAxis */);\r\n const scrollbarOptions = {\r\n listenOnDomNode: viewDomNode.domNode,\r\n className: 'editor-scrollable' + ' ' + getThemeTypeSelector(context.theme.type),\r\n useShadows: false,\r\n lazyRender: true,\r\n vertical: scrollbar.vertical,\r\n horizontal: scrollbar.horizontal,\r\n verticalHasArrows: scrollbar.verticalHasArrows,\r\n horizontalHasArrows: scrollbar.horizontalHasArrows,\r\n verticalScrollbarSize: scrollbar.verticalScrollbarSize,\r\n verticalSliderSize: scrollbar.verticalSliderSize,\r\n horizontalScrollbarSize: scrollbar.horizontalScrollbarSize,\r\n horizontalSliderSize: scrollbar.horizontalSliderSize,\r\n handleMouseWheel: scrollbar.handleMouseWheel,\r\n alwaysConsumeMouseWheel: scrollbar.alwaysConsumeMouseWheel,\r\n arrowSize: scrollbar.arrowSize,\r\n mouseWheelScrollSensitivity: mouseWheelScrollSensitivity,\r\n fastScrollSensitivity: fastScrollSensitivity,\r\n scrollPredominantAxis: scrollPredominantAxis,\r\n };\r\n this.scrollbar = this._register(new SmoothScrollableElement(linesContent.domNode, scrollbarOptions, this._context.viewLayout.getScrollable()));\r\n PartFingerprints.write(this.scrollbar.getDomNode(), 5 /* ScrollableElement */);\r\n this.scrollbarDomNode = createFastDomNode(this.scrollbar.getDomNode());\r\n this.scrollbarDomNode.setPosition('absolute');\r\n this._setLayout();\r\n // When having a zone widget that calls .focus() on one of its dom elements,\r\n // the browser will try desperately to reveal that dom node, unexpectedly\r\n // changing the .scrollTop of this.linesContent\r\n const onBrowserDesperateReveal = (domNode, lookAtScrollTop, lookAtScrollLeft) => {\r\n const newScrollPosition = {};\r\n if (lookAtScrollTop) {\r\n const deltaTop = domNode.scrollTop;\r\n if (deltaTop) {\r\n newScrollPosition.scrollTop = this._context.viewLayout.getCurrentScrollTop() + deltaTop;\r\n domNode.scrollTop = 0;\r\n }\r\n }\r\n if (lookAtScrollLeft) {\r\n const deltaLeft = domNode.scrollLeft;\r\n if (deltaLeft) {\r\n newScrollPosition.scrollLeft = this._context.viewLayout.getCurrentScrollLeft() + deltaLeft;\r\n domNode.scrollLeft = 0;\r\n }\r\n }\r\n this._context.model.setScrollPosition(newScrollPosition, 1 /* Immediate */);\r\n };\r\n // I've seen this happen both on the view dom node & on the lines content dom node.\r\n this._register(dom.addDisposableListener(viewDomNode.domNode, 'scroll', (e) => onBrowserDesperateReveal(viewDomNode.domNode, true, true)));\r\n this._register(dom.addDisposableListener(linesContent.domNode, 'scroll', (e) => onBrowserDesperateReveal(linesContent.domNode, true, false)));\r\n this._register(dom.addDisposableListener(overflowGuardDomNode.domNode, 'scroll', (e) => onBrowserDesperateReveal(overflowGuardDomNode.domNode, true, false)));\r\n this._register(dom.addDisposableListener(this.scrollbarDomNode.domNode, 'scroll', (e) => onBrowserDesperateReveal(this.scrollbarDomNode.domNode, true, false)));\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _setLayout() {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this.scrollbarDomNode.setLeft(layoutInfo.contentLeft);\r\n const minimap = options.get(56 /* minimap */);\r\n const side = minimap.side;\r\n if (side === 'right') {\r\n this.scrollbarDomNode.setWidth(layoutInfo.contentWidth + layoutInfo.minimap.minimapWidth);\r\n }\r\n else {\r\n this.scrollbarDomNode.setWidth(layoutInfo.contentWidth);\r\n }\r\n this.scrollbarDomNode.setHeight(layoutInfo.height);\r\n }\r\n getOverviewRulerLayoutInfo() {\r\n return this.scrollbar.getOverviewRulerLayoutInfo();\r\n }\r\n getDomNode() {\r\n return this.scrollbarDomNode;\r\n }\r\n delegateVerticalScrollbarMouseDown(browserEvent) {\r\n this.scrollbar.delegateVerticalScrollbarMouseDown(browserEvent);\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n if (e.hasChanged(84 /* scrollbar */)\r\n || e.hasChanged(58 /* mouseWheelScrollSensitivity */)\r\n || e.hasChanged(28 /* fastScrollSensitivity */)) {\r\n const options = this._context.configuration.options;\r\n const scrollbar = options.get(84 /* scrollbar */);\r\n const mouseWheelScrollSensitivity = options.get(58 /* mouseWheelScrollSensitivity */);\r\n const fastScrollSensitivity = options.get(28 /* fastScrollSensitivity */);\r\n const scrollPredominantAxis = options.get(87 /* scrollPredominantAxis */);\r\n const newOpts = {\r\n handleMouseWheel: scrollbar.handleMouseWheel,\r\n mouseWheelScrollSensitivity: mouseWheelScrollSensitivity,\r\n fastScrollSensitivity: fastScrollSensitivity,\r\n scrollPredominantAxis: scrollPredominantAxis\r\n };\r\n this.scrollbar.updateOptions(newOpts);\r\n }\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n this._setLayout();\r\n }\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return true;\r\n }\r\n onThemeChanged(e) {\r\n this.scrollbar.updateClassName('editor-scrollable' + ' ' + getThemeTypeSelector(this._context.theme.type));\r\n return true;\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n // Nothing to do\r\n }\r\n render(ctx) {\r\n this.scrollbar.renderNow();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './glyphMargin.css';\r\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\r\nexport class DecorationToRender {\r\n constructor(startLineNumber, endLineNumber, className) {\r\n this.startLineNumber = +startLineNumber;\r\n this.endLineNumber = +endLineNumber;\r\n this.className = String(className);\r\n }\r\n}\r\nexport class DedupOverlay extends DynamicViewOverlay {\r\n _render(visibleStartLineNumber, visibleEndLineNumber, decorations) {\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n output[lineIndex] = [];\r\n }\r\n if (decorations.length === 0) {\r\n return output;\r\n }\r\n decorations.sort((a, b) => {\r\n if (a.className === b.className) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return (a.className < b.className ? -1 : 1);\r\n });\r\n let prevClassName = null;\r\n let prevEndLineIndex = 0;\r\n for (let i = 0, len = decorations.length; i < len; i++) {\r\n const d = decorations[i];\r\n const className = d.className;\r\n let startLineIndex = Math.max(d.startLineNumber, visibleStartLineNumber) - visibleStartLineNumber;\r\n const endLineIndex = Math.min(d.endLineNumber, visibleEndLineNumber) - visibleStartLineNumber;\r\n if (prevClassName === className) {\r\n startLineIndex = Math.max(prevEndLineIndex + 1, startLineIndex);\r\n prevEndLineIndex = Math.max(prevEndLineIndex, endLineIndex);\r\n }\r\n else {\r\n prevClassName = className;\r\n prevEndLineIndex = endLineIndex;\r\n }\r\n for (let i = startLineIndex; i <= prevEndLineIndex; i++) {\r\n output[i].push(prevClassName);\r\n }\r\n }\r\n return output;\r\n }\r\n}\r\nexport class GlyphMarginOverlay extends DedupOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._glyphMargin = options.get(42 /* glyphMargin */);\r\n this._glyphMarginLeft = layoutInfo.glyphMarginLeft;\r\n this._glyphMarginWidth = layoutInfo.glyphMarginWidth;\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._glyphMargin = options.get(42 /* glyphMargin */);\r\n this._glyphMarginLeft = layoutInfo.glyphMarginLeft;\r\n this._glyphMarginWidth = layoutInfo.glyphMarginWidth;\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n _getDecorations(ctx) {\r\n const decorations = ctx.getDecorationsInViewport();\r\n let r = [], rLen = 0;\r\n for (let i = 0, len = decorations.length; i < len; i++) {\r\n const d = decorations[i];\r\n const glyphMarginClassName = d.options.glyphMarginClassName;\r\n if (glyphMarginClassName) {\r\n r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.endLineNumber, glyphMarginClassName);\r\n }\r\n }\r\n return r;\r\n }\r\n prepareRender(ctx) {\r\n if (!this._glyphMargin) {\r\n this._renderResult = null;\r\n return;\r\n }\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));\r\n const lineHeight = this._lineHeight.toString();\r\n const left = this._glyphMarginLeft.toString();\r\n const width = this._glyphMarginWidth.toString();\r\n const common = '\" style=\"left:' + left + 'px;width:' + width + 'px' + ';height:' + lineHeight + 'px;\"></div>';\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n const classNames = toRender[lineIndex];\r\n if (classNames.length === 0) {\r\n output[lineIndex] = '';\r\n }\r\n else {\r\n output[lineIndex] = ('<div class=\"cgmr codicon '\r\n + classNames.join(' ')\r\n + common);\r\n }\r\n }\r\n this._renderResult = output;\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n const lineIndex = lineNumber - startLineNumber;\r\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\r\n return '';\r\n }\r\n return this._renderResult[lineIndex];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './indentGuides.css';\r\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { editorActiveIndentGuides, editorIndentGuides } from '../../../common/view/editorColorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nexport class IndentGuidesOverlay extends DynamicViewOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n this._primaryLineNumber = 0;\r\n const options = this._context.configuration.options;\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._spaceWidth = fontInfo.spaceWidth;\r\n this._enabled = options.get(75 /* renderIndentGuides */);\r\n this._activeIndentEnabled = options.get(45 /* highlightActiveIndentGuide */);\r\n this._maxIndentLeft = wrappingInfo.wrappingColumn === -1 ? -1 : (wrappingInfo.wrappingColumn * fontInfo.typicalHalfwidthCharacterWidth);\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._spaceWidth = fontInfo.spaceWidth;\r\n this._enabled = options.get(75 /* renderIndentGuides */);\r\n this._activeIndentEnabled = options.get(45 /* highlightActiveIndentGuide */);\r\n this._maxIndentLeft = wrappingInfo.wrappingColumn === -1 ? -1 : (wrappingInfo.wrappingColumn * fontInfo.typicalHalfwidthCharacterWidth);\r\n return true;\r\n }\r\n onCursorStateChanged(e) {\r\n const selection = e.selections[0];\r\n const newPrimaryLineNumber = selection.isEmpty() ? selection.positionLineNumber : 0;\r\n if (this._primaryLineNumber !== newPrimaryLineNumber) {\r\n this._primaryLineNumber = newPrimaryLineNumber;\r\n return true;\r\n }\r\n return false;\r\n }\r\n onDecorationsChanged(e) {\r\n // true for inline decorations\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged; // || e.scrollWidthChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n onLanguageConfigurationChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n if (!this._enabled) {\r\n this._renderResult = null;\r\n return;\r\n }\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const { indentSize } = this._context.model.getTextModelOptions();\r\n const indentWidth = indentSize * this._spaceWidth;\r\n const scrollWidth = ctx.scrollWidth;\r\n const lineHeight = this._lineHeight;\r\n const indents = this._context.model.getLinesIndentGuides(visibleStartLineNumber, visibleEndLineNumber);\r\n let activeIndentStartLineNumber = 0;\r\n let activeIndentEndLineNumber = 0;\r\n let activeIndentLevel = 0;\r\n if (this._activeIndentEnabled && this._primaryLineNumber) {\r\n const activeIndentInfo = this._context.model.getActiveIndentGuide(this._primaryLineNumber, visibleStartLineNumber, visibleEndLineNumber);\r\n activeIndentStartLineNumber = activeIndentInfo.startLineNumber;\r\n activeIndentEndLineNumber = activeIndentInfo.endLineNumber;\r\n activeIndentLevel = activeIndentInfo.indent;\r\n }\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const containsActiveIndentGuide = (activeIndentStartLineNumber <= lineNumber && lineNumber <= activeIndentEndLineNumber);\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n const indent = indents[lineIndex];\r\n let result = '';\r\n if (indent >= 1) {\r\n const leftMostVisiblePosition = ctx.visibleRangeForPosition(new Position(lineNumber, 1));\r\n let left = leftMostVisiblePosition ? leftMostVisiblePosition.left : 0;\r\n for (let i = 1; i <= indent; i++) {\r\n const className = (containsActiveIndentGuide && i === activeIndentLevel ? 'cigra' : 'cigr');\r\n result += `<div class=\"${className}\" style=\"left:${left}px;height:${lineHeight}px;width:${indentWidth}px\"></div>`;\r\n left += indentWidth;\r\n if (left > scrollWidth || (this._maxIndentLeft > 0 && left > this._maxIndentLeft)) {\r\n break;\r\n }\r\n }\r\n }\r\n output[lineIndex] = result;\r\n }\r\n this._renderResult = output;\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n const lineIndex = lineNumber - startLineNumber;\r\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\r\n return '';\r\n }\r\n return this._renderResult[lineIndex];\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const editorIndentGuidesColor = theme.getColor(editorIndentGuides);\r\n if (editorIndentGuidesColor) {\r\n collector.addRule(`.monaco-editor .lines-content .cigr { box-shadow: 1px 0 0 0 ${editorIndentGuidesColor} inset; }`);\r\n }\r\n const editorActiveIndentGuidesColor = theme.getColor(editorActiveIndentGuides) || editorIndentGuidesColor;\r\n if (editorActiveIndentGuidesColor) {\r\n collector.addRule(`.monaco-editor .lines-content .cigra { box-shadow: 1px 0 0 0 ${editorActiveIndentGuidesColor} inset; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './lineNumbers.css';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { editorActiveLineNumber, editorLineNumbers } from '../../../common/view/editorColorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nexport class LineNumbersOverlay extends DynamicViewOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n this._readConfig();\r\n this._lastCursorModelPosition = new Position(1, 1);\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n _readConfig() {\r\n const options = this._context.configuration.options;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n const lineNumbers = options.get(52 /* lineNumbers */);\r\n this._renderLineNumbers = lineNumbers.renderType;\r\n this._renderCustomLineNumbers = lineNumbers.renderFn;\r\n this._renderFinalNewline = options.get(76 /* renderFinalNewline */);\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineNumbersLeft = layoutInfo.lineNumbersLeft;\r\n this._lineNumbersWidth = layoutInfo.lineNumbersWidth;\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n this._readConfig();\r\n return true;\r\n }\r\n onCursorStateChanged(e) {\r\n const primaryViewPosition = e.selections[0].getPosition();\r\n this._lastCursorModelPosition = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(primaryViewPosition);\r\n if (this._renderLineNumbers === 2 /* Relative */ || this._renderLineNumbers === 3 /* Interval */) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n _getLineRenderLineNumber(viewLineNumber) {\r\n const modelPosition = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Position(viewLineNumber, 1));\r\n if (modelPosition.column !== 1) {\r\n return '';\r\n }\r\n const modelLineNumber = modelPosition.lineNumber;\r\n if (this._renderCustomLineNumbers) {\r\n return this._renderCustomLineNumbers(modelLineNumber);\r\n }\r\n if (this._renderLineNumbers === 2 /* Relative */) {\r\n const diff = Math.abs(this._lastCursorModelPosition.lineNumber - modelLineNumber);\r\n if (diff === 0) {\r\n return '<span class=\"relative-current-line-number\">' + modelLineNumber + '</span>';\r\n }\r\n return String(diff);\r\n }\r\n if (this._renderLineNumbers === 3 /* Interval */) {\r\n if (this._lastCursorModelPosition.lineNumber === modelLineNumber) {\r\n return String(modelLineNumber);\r\n }\r\n if (modelLineNumber % 10 === 0) {\r\n return String(modelLineNumber);\r\n }\r\n return '';\r\n }\r\n return String(modelLineNumber);\r\n }\r\n prepareRender(ctx) {\r\n if (this._renderLineNumbers === 0 /* Off */) {\r\n this._renderResult = null;\r\n return;\r\n }\r\n const lineHeightClassName = (platform.isLinux ? (this._lineHeight % 2 === 0 ? ' lh-even' : ' lh-odd') : '');\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const common = '<div class=\"' + LineNumbersOverlay.CLASS_NAME + lineHeightClassName + '\" style=\"left:' + this._lineNumbersLeft.toString() + 'px;width:' + this._lineNumbersWidth.toString() + 'px;\">';\r\n const lineCount = this._context.model.getLineCount();\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n if (!this._renderFinalNewline) {\r\n if (lineNumber === lineCount && this._context.model.getLineLength(lineNumber) === 0) {\r\n // Do not render last (empty) line\r\n output[lineIndex] = '';\r\n continue;\r\n }\r\n }\r\n const renderLineNumber = this._getLineRenderLineNumber(lineNumber);\r\n if (renderLineNumber) {\r\n output[lineIndex] = (common\r\n + renderLineNumber\r\n + '</div>');\r\n }\r\n else {\r\n output[lineIndex] = '';\r\n }\r\n }\r\n this._renderResult = output;\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n const lineIndex = lineNumber - startLineNumber;\r\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\r\n return '';\r\n }\r\n return this._renderResult[lineIndex];\r\n }\r\n}\r\nLineNumbersOverlay.CLASS_NAME = 'line-numbers';\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const lineNumbers = theme.getColor(editorLineNumbers);\r\n if (lineNumbers) {\r\n collector.addRule(`.monaco-editor .line-numbers { color: ${lineNumbers}; }`);\r\n }\r\n const activeLineNumber = theme.getColor(editorActiveLineNumber);\r\n if (activeLineNumber) {\r\n collector.addRule(`.monaco-editor .current-line ~ .line-numbers { color: ${activeLineNumber}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { HorizontalRange } from '../../../common/view/renderingContext.js';\r\nclass FloatHorizontalRange {\r\n constructor(left, width) {\r\n this.left = left;\r\n this.width = width;\r\n }\r\n toString() {\r\n return `[${this.left},${this.width}]`;\r\n }\r\n static compare(a, b) {\r\n return a.left - b.left;\r\n }\r\n}\r\nexport class RangeUtil {\r\n static _createRange() {\r\n if (!this._handyReadyRange) {\r\n this._handyReadyRange = document.createRange();\r\n }\r\n return this._handyReadyRange;\r\n }\r\n static _detachRange(range, endNode) {\r\n // Move range out of the span node, IE doesn't like having many ranges in\r\n // the same spot and will act badly for lines containing dashes ('-')\r\n range.selectNodeContents(endNode);\r\n }\r\n static _readClientRects(startElement, startOffset, endElement, endOffset, endNode) {\r\n const range = this._createRange();\r\n try {\r\n range.setStart(startElement, startOffset);\r\n range.setEnd(endElement, endOffset);\r\n return range.getClientRects();\r\n }\r\n catch (e) {\r\n // This is life ...\r\n return null;\r\n }\r\n finally {\r\n this._detachRange(range, endNode);\r\n }\r\n }\r\n static _mergeAdjacentRanges(ranges) {\r\n if (ranges.length === 1) {\r\n // There is nothing to merge\r\n return [new HorizontalRange(ranges[0].left, ranges[0].width)];\r\n }\r\n ranges.sort(FloatHorizontalRange.compare);\r\n let result = [], resultLen = 0;\r\n let prevLeft = ranges[0].left;\r\n let prevWidth = ranges[0].width;\r\n for (let i = 1, len = ranges.length; i < len; i++) {\r\n const range = ranges[i];\r\n const myLeft = range.left;\r\n const myWidth = range.width;\r\n if (prevLeft + prevWidth + 0.9 /* account for browser's rounding errors*/ >= myLeft) {\r\n prevWidth = Math.max(prevWidth, myLeft + myWidth - prevLeft);\r\n }\r\n else {\r\n result[resultLen++] = new HorizontalRange(prevLeft, prevWidth);\r\n prevLeft = myLeft;\r\n prevWidth = myWidth;\r\n }\r\n }\r\n result[resultLen++] = new HorizontalRange(prevLeft, prevWidth);\r\n return result;\r\n }\r\n static _createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft) {\r\n if (!clientRects || clientRects.length === 0) {\r\n return null;\r\n }\r\n // We go through FloatHorizontalRange because it has been observed in bi-di text\r\n // that the clientRects are not coming in sorted from the browser\r\n const result = [];\r\n for (let i = 0, len = clientRects.length; i < len; i++) {\r\n const clientRect = clientRects[i];\r\n result[i] = new FloatHorizontalRange(Math.max(0, clientRect.left - clientRectDeltaLeft), clientRect.width);\r\n }\r\n return this._mergeAdjacentRanges(result);\r\n }\r\n static readHorizontalRanges(domNode, startChildIndex, startOffset, endChildIndex, endOffset, clientRectDeltaLeft, endNode) {\r\n // Panic check\r\n const min = 0;\r\n const max = domNode.children.length - 1;\r\n if (min > max) {\r\n return null;\r\n }\r\n startChildIndex = Math.min(max, Math.max(min, startChildIndex));\r\n endChildIndex = Math.min(max, Math.max(min, endChildIndex));\r\n if (startChildIndex === endChildIndex && startOffset === endOffset && startOffset === 0) {\r\n // We must find the position at the beginning of a <span>\r\n // To cover cases of empty <span>s, aboid using a range and use the <span>'s bounding box\r\n const clientRects = domNode.children[startChildIndex].getClientRects();\r\n return this._createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft);\r\n }\r\n // If crossing over to a span only to select offset 0, then use the previous span's maximum offset\r\n // Chrome is buggy and doesn't handle 0 offsets well sometimes.\r\n if (startChildIndex !== endChildIndex) {\r\n if (endChildIndex > 0 && endOffset === 0) {\r\n endChildIndex--;\r\n endOffset = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n }\r\n let startElement = domNode.children[startChildIndex].firstChild;\r\n let endElement = domNode.children[endChildIndex].firstChild;\r\n if (!startElement || !endElement) {\r\n // When having an empty <span> (without any text content), try to move to the previous <span>\r\n if (!startElement && startOffset === 0 && startChildIndex > 0) {\r\n startElement = domNode.children[startChildIndex - 1].firstChild;\r\n startOffset = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n if (!endElement && endOffset === 0 && endChildIndex > 0) {\r\n endElement = domNode.children[endChildIndex - 1].firstChild;\r\n endOffset = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n }\r\n if (!startElement || !endElement) {\r\n return null;\r\n }\r\n startOffset = Math.min(startElement.textContent.length, Math.max(0, startOffset));\r\n endOffset = Math.min(endElement.textContent.length, Math.max(0, endOffset));\r\n const clientRects = this._readClientRects(startElement, startOffset, endElement, endOffset, endNode);\r\n return this._createHorizontalRangesFromClientRects(clientRects, clientRectDeltaLeft);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as browser from '../../../../base/browser/browser.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nimport { RangeUtil } from './rangeUtil.js';\r\nimport { HorizontalRange, VisibleRanges } from '../../../common/view/renderingContext.js';\r\nimport { LineDecoration } from '../../../common/viewLayout/lineDecorations.js';\r\nimport { CharacterMapping, RenderLineInput, renderViewLine, LineRange } from '../../../common/viewLayout/viewLineRenderer.js';\r\nimport { HIGH_CONTRAST } from '../../../../platform/theme/common/themeService.js';\r\nimport { EditorFontLigatures } from '../../../common/config/editorOptions.js';\r\nconst canUseFastRenderedViewLine = (function () {\r\n if (platform.isNative) {\r\n // In VSCode we know very well when the zoom level changes\r\n return true;\r\n }\r\n if (platform.isLinux || browser.isFirefox || browser.isSafari) {\r\n // On Linux, it appears that zooming affects char widths (in pixels), which is unexpected.\r\n // --\r\n // Even though we read character widths correctly, having read them at a specific zoom level\r\n // does not mean they are the same at the current zoom level.\r\n // --\r\n // This could be improved if we ever figure out how to get an event when browsers zoom,\r\n // but until then we have to stick with reading client rects.\r\n // --\r\n // The same has been observed with Firefox on Windows7\r\n // --\r\n // The same has been oversved with Safari\r\n return false;\r\n }\r\n return true;\r\n})();\r\nlet monospaceAssumptionsAreValid = true;\r\nconst alwaysRenderInlineSelection = (browser.isEdge);\r\nexport class DomReadingContext {\r\n constructor(domNode, endNode) {\r\n this._domNode = domNode;\r\n this._clientRectDeltaLeft = 0;\r\n this._clientRectDeltaLeftRead = false;\r\n this.endNode = endNode;\r\n }\r\n get clientRectDeltaLeft() {\r\n if (!this._clientRectDeltaLeftRead) {\r\n this._clientRectDeltaLeftRead = true;\r\n this._clientRectDeltaLeft = this._domNode.getBoundingClientRect().left;\r\n }\r\n return this._clientRectDeltaLeft;\r\n }\r\n}\r\nexport class ViewLineOptions {\r\n constructor(config, themeType) {\r\n this.themeType = themeType;\r\n const options = config.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n this.renderWhitespace = options.get(80 /* renderWhitespace */);\r\n this.renderControlCharacters = options.get(74 /* renderControlCharacters */);\r\n this.spaceWidth = fontInfo.spaceWidth;\r\n this.middotWidth = fontInfo.middotWidth;\r\n this.wsmiddotWidth = fontInfo.wsmiddotWidth;\r\n this.useMonospaceOptimizations = (fontInfo.isMonospace\r\n && !options.get(24 /* disableMonospaceOptimizations */));\r\n this.canUseHalfwidthRightwardsArrow = fontInfo.canUseHalfwidthRightwardsArrow;\r\n this.lineHeight = options.get(51 /* lineHeight */);\r\n this.stopRenderingLineAfter = options.get(95 /* stopRenderingLineAfter */);\r\n this.fontLigatures = options.get(37 /* fontLigatures */);\r\n }\r\n equals(other) {\r\n return (this.themeType === other.themeType\r\n && this.renderWhitespace === other.renderWhitespace\r\n && this.renderControlCharacters === other.renderControlCharacters\r\n && this.spaceWidth === other.spaceWidth\r\n && this.middotWidth === other.middotWidth\r\n && this.wsmiddotWidth === other.wsmiddotWidth\r\n && this.useMonospaceOptimizations === other.useMonospaceOptimizations\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.lineHeight === other.lineHeight\r\n && this.stopRenderingLineAfter === other.stopRenderingLineAfter\r\n && this.fontLigatures === other.fontLigatures);\r\n }\r\n}\r\nexport class ViewLine {\r\n constructor(options) {\r\n this._options = options;\r\n this._isMaybeInvalid = true;\r\n this._renderedViewLine = null;\r\n }\r\n // --- begin IVisibleLineData\r\n getDomNode() {\r\n if (this._renderedViewLine && this._renderedViewLine.domNode) {\r\n return this._renderedViewLine.domNode.domNode;\r\n }\r\n return null;\r\n }\r\n setDomNode(domNode) {\r\n if (this._renderedViewLine) {\r\n this._renderedViewLine.domNode = createFastDomNode(domNode);\r\n }\r\n else {\r\n throw new Error('I have no rendered view line to set the dom node to...');\r\n }\r\n }\r\n onContentChanged() {\r\n this._isMaybeInvalid = true;\r\n }\r\n onTokensChanged() {\r\n this._isMaybeInvalid = true;\r\n }\r\n onDecorationsChanged() {\r\n this._isMaybeInvalid = true;\r\n }\r\n onOptionsChanged(newOptions) {\r\n this._isMaybeInvalid = true;\r\n this._options = newOptions;\r\n }\r\n onSelectionChanged() {\r\n if (alwaysRenderInlineSelection || this._options.themeType === HIGH_CONTRAST || this._options.renderWhitespace === 'selection') {\r\n this._isMaybeInvalid = true;\r\n return true;\r\n }\r\n return false;\r\n }\r\n renderLine(lineNumber, deltaTop, viewportData, sb) {\r\n if (this._isMaybeInvalid === false) {\r\n // it appears that nothing relevant has changed\r\n return false;\r\n }\r\n this._isMaybeInvalid = false;\r\n const lineData = viewportData.getViewLineRenderingData(lineNumber);\r\n const options = this._options;\r\n const actualInlineDecorations = LineDecoration.filter(lineData.inlineDecorations, lineNumber, lineData.minColumn, lineData.maxColumn);\r\n // Only send selection information when needed for rendering whitespace\r\n let selectionsOnLine = null;\r\n if (alwaysRenderInlineSelection || options.themeType === HIGH_CONTRAST || this._options.renderWhitespace === 'selection') {\r\n const selections = viewportData.selections;\r\n for (const selection of selections) {\r\n if (selection.endLineNumber < lineNumber || selection.startLineNumber > lineNumber) {\r\n // Selection does not intersect line\r\n continue;\r\n }\r\n const startColumn = (selection.startLineNumber === lineNumber ? selection.startColumn : lineData.minColumn);\r\n const endColumn = (selection.endLineNumber === lineNumber ? selection.endColumn : lineData.maxColumn);\r\n if (startColumn < endColumn) {\r\n if (options.themeType === HIGH_CONTRAST || this._options.renderWhitespace !== 'selection') {\r\n actualInlineDecorations.push(new LineDecoration(startColumn, endColumn, 'inline-selected-text', 0 /* Regular */));\r\n }\r\n else {\r\n if (!selectionsOnLine) {\r\n selectionsOnLine = [];\r\n }\r\n selectionsOnLine.push(new LineRange(startColumn - 1, endColumn - 1));\r\n }\r\n }\r\n }\r\n }\r\n const renderLineInput = new RenderLineInput(options.useMonospaceOptimizations, options.canUseHalfwidthRightwardsArrow, lineData.content, lineData.continuesWithWrappedLine, lineData.isBasicASCII, lineData.containsRTL, lineData.minColumn - 1, lineData.tokens, actualInlineDecorations, lineData.tabSize, lineData.startVisibleColumn, options.spaceWidth, options.middotWidth, options.wsmiddotWidth, options.stopRenderingLineAfter, options.renderWhitespace, options.renderControlCharacters, options.fontLigatures !== EditorFontLigatures.OFF, selectionsOnLine);\r\n if (this._renderedViewLine && this._renderedViewLine.input.equals(renderLineInput)) {\r\n // no need to do anything, we have the same render input\r\n return false;\r\n }\r\n sb.appendASCIIString('<div style=\"top:');\r\n sb.appendASCIIString(String(deltaTop));\r\n sb.appendASCIIString('px;height:');\r\n sb.appendASCIIString(String(this._options.lineHeight));\r\n sb.appendASCIIString('px;\" class=\"');\r\n sb.appendASCIIString(ViewLine.CLASS_NAME);\r\n sb.appendASCIIString('\">');\r\n const output = renderViewLine(renderLineInput, sb);\r\n sb.appendASCIIString('</div>');\r\n let renderedViewLine = null;\r\n if (monospaceAssumptionsAreValid && canUseFastRenderedViewLine && lineData.isBasicASCII && options.useMonospaceOptimizations && output.containsForeignElements === 0 /* None */) {\r\n if (lineData.content.length < 300 && renderLineInput.lineTokens.getCount() < 100) {\r\n // Browser rounding errors have been observed in Chrome and IE, so using the fast\r\n // view line only for short lines. Please test before removing the length check...\r\n // ---\r\n // Another rounding error has been observed on Linux in VSCode, where <span> width\r\n // rounding errors add up to an observable large number...\r\n // ---\r\n // Also see another example of rounding errors on Windows in\r\n // https://github.com/Microsoft/vscode/issues/33178\r\n renderedViewLine = new FastRenderedViewLine(this._renderedViewLine ? this._renderedViewLine.domNode : null, renderLineInput, output.characterMapping);\r\n }\r\n }\r\n if (!renderedViewLine) {\r\n renderedViewLine = createRenderedLine(this._renderedViewLine ? this._renderedViewLine.domNode : null, renderLineInput, output.characterMapping, output.containsRTL, output.containsForeignElements);\r\n }\r\n this._renderedViewLine = renderedViewLine;\r\n return true;\r\n }\r\n layoutLine(lineNumber, deltaTop) {\r\n if (this._renderedViewLine && this._renderedViewLine.domNode) {\r\n this._renderedViewLine.domNode.setTop(deltaTop);\r\n this._renderedViewLine.domNode.setHeight(this._options.lineHeight);\r\n }\r\n }\r\n // --- end IVisibleLineData\r\n getWidth() {\r\n if (!this._renderedViewLine) {\r\n return 0;\r\n }\r\n return this._renderedViewLine.getWidth();\r\n }\r\n getWidthIsFast() {\r\n if (!this._renderedViewLine) {\r\n return true;\r\n }\r\n return this._renderedViewLine.getWidthIsFast();\r\n }\r\n needsMonospaceFontCheck() {\r\n if (!this._renderedViewLine) {\r\n return false;\r\n }\r\n return (this._renderedViewLine instanceof FastRenderedViewLine);\r\n }\r\n monospaceAssumptionsAreValid() {\r\n if (!this._renderedViewLine) {\r\n return monospaceAssumptionsAreValid;\r\n }\r\n if (this._renderedViewLine instanceof FastRenderedViewLine) {\r\n return this._renderedViewLine.monospaceAssumptionsAreValid();\r\n }\r\n return monospaceAssumptionsAreValid;\r\n }\r\n onMonospaceAssumptionsInvalidated() {\r\n if (this._renderedViewLine && this._renderedViewLine instanceof FastRenderedViewLine) {\r\n this._renderedViewLine = this._renderedViewLine.toSlowRenderedLine();\r\n }\r\n }\r\n getVisibleRangesForRange(startColumn, endColumn, context) {\r\n if (!this._renderedViewLine) {\r\n return null;\r\n }\r\n startColumn = startColumn | 0; // @perf\r\n endColumn = endColumn | 0; // @perf\r\n startColumn = Math.min(this._renderedViewLine.input.lineContent.length + 1, Math.max(1, startColumn));\r\n endColumn = Math.min(this._renderedViewLine.input.lineContent.length + 1, Math.max(1, endColumn));\r\n const stopRenderingLineAfter = this._renderedViewLine.input.stopRenderingLineAfter | 0; // @perf\r\n let outsideRenderedLine = false;\r\n if (stopRenderingLineAfter !== -1 && startColumn > stopRenderingLineAfter + 1 && endColumn > stopRenderingLineAfter + 1) {\r\n // This range is obviously not visible\r\n outsideRenderedLine = true;\r\n }\r\n if (stopRenderingLineAfter !== -1 && startColumn > stopRenderingLineAfter + 1) {\r\n startColumn = stopRenderingLineAfter + 1;\r\n }\r\n if (stopRenderingLineAfter !== -1 && endColumn > stopRenderingLineAfter + 1) {\r\n endColumn = stopRenderingLineAfter + 1;\r\n }\r\n const horizontalRanges = this._renderedViewLine.getVisibleRangesForRange(startColumn, endColumn, context);\r\n if (horizontalRanges && horizontalRanges.length > 0) {\r\n return new VisibleRanges(outsideRenderedLine, horizontalRanges);\r\n }\r\n return null;\r\n }\r\n getColumnOfNodeOffset(lineNumber, spanNode, offset) {\r\n if (!this._renderedViewLine) {\r\n return 1;\r\n }\r\n return this._renderedViewLine.getColumnOfNodeOffset(lineNumber, spanNode, offset);\r\n }\r\n}\r\nViewLine.CLASS_NAME = 'view-line';\r\n/**\r\n * A rendered line which is guaranteed to contain only regular ASCII and is rendered with a monospace font.\r\n */\r\nclass FastRenderedViewLine {\r\n constructor(domNode, renderLineInput, characterMapping) {\r\n this.domNode = domNode;\r\n this.input = renderLineInput;\r\n this._characterMapping = characterMapping;\r\n this._charWidth = renderLineInput.spaceWidth;\r\n }\r\n getWidth() {\r\n return this._getCharPosition(this._characterMapping.length);\r\n }\r\n getWidthIsFast() {\r\n return true;\r\n }\r\n monospaceAssumptionsAreValid() {\r\n if (!this.domNode) {\r\n return monospaceAssumptionsAreValid;\r\n }\r\n const expectedWidth = this.getWidth();\r\n const actualWidth = this.domNode.domNode.firstChild.offsetWidth;\r\n if (Math.abs(expectedWidth - actualWidth) >= 2) {\r\n // more than 2px off\r\n console.warn(`monospace assumptions have been violated, therefore disabling monospace optimizations!`);\r\n monospaceAssumptionsAreValid = false;\r\n }\r\n return monospaceAssumptionsAreValid;\r\n }\r\n toSlowRenderedLine() {\r\n return createRenderedLine(this.domNode, this.input, this._characterMapping, false, 0 /* None */);\r\n }\r\n getVisibleRangesForRange(startColumn, endColumn, context) {\r\n const startPosition = this._getCharPosition(startColumn);\r\n const endPosition = this._getCharPosition(endColumn);\r\n return [new HorizontalRange(startPosition, endPosition - startPosition)];\r\n }\r\n _getCharPosition(column) {\r\n const charOffset = this._characterMapping.getAbsoluteOffsets();\r\n if (charOffset.length === 0) {\r\n // No characters on this line\r\n return 0;\r\n }\r\n return Math.round(this._charWidth * charOffset[column - 1]);\r\n }\r\n getColumnOfNodeOffset(lineNumber, spanNode, offset) {\r\n const spanNodeTextContentLength = spanNode.textContent.length;\r\n let spanIndex = -1;\r\n while (spanNode) {\r\n spanNode = spanNode.previousSibling;\r\n spanIndex++;\r\n }\r\n const charOffset = this._characterMapping.partDataToCharOffset(spanIndex, spanNodeTextContentLength, offset);\r\n return charOffset + 1;\r\n }\r\n}\r\n/**\r\n * Every time we render a line, we save what we have rendered in an instance of this class.\r\n */\r\nclass RenderedViewLine {\r\n constructor(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements) {\r\n this.domNode = domNode;\r\n this.input = renderLineInput;\r\n this._characterMapping = characterMapping;\r\n this._isWhitespaceOnly = /^\\s*$/.test(renderLineInput.lineContent);\r\n this._containsForeignElements = containsForeignElements;\r\n this._cachedWidth = -1;\r\n this._pixelOffsetCache = null;\r\n if (!containsRTL || this._characterMapping.length === 0 /* the line is empty */) {\r\n this._pixelOffsetCache = new Int32Array(Math.max(2, this._characterMapping.length + 1));\r\n for (let column = 0, len = this._characterMapping.length; column <= len; column++) {\r\n this._pixelOffsetCache[column] = -1;\r\n }\r\n }\r\n }\r\n // --- Reading from the DOM methods\r\n _getReadingTarget(myDomNode) {\r\n return myDomNode.domNode.firstChild;\r\n }\r\n /**\r\n * Width of the line in pixels\r\n */\r\n getWidth() {\r\n if (!this.domNode) {\r\n return 0;\r\n }\r\n if (this._cachedWidth === -1) {\r\n this._cachedWidth = this._getReadingTarget(this.domNode).offsetWidth;\r\n }\r\n return this._cachedWidth;\r\n }\r\n getWidthIsFast() {\r\n if (this._cachedWidth === -1) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Visible ranges for a model range\r\n */\r\n getVisibleRangesForRange(startColumn, endColumn, context) {\r\n if (!this.domNode) {\r\n return null;\r\n }\r\n if (this._pixelOffsetCache !== null) {\r\n // the text is LTR\r\n const startOffset = this._readPixelOffset(this.domNode, startColumn, context);\r\n if (startOffset === -1) {\r\n return null;\r\n }\r\n const endOffset = this._readPixelOffset(this.domNode, endColumn, context);\r\n if (endOffset === -1) {\r\n return null;\r\n }\r\n return [new HorizontalRange(startOffset, endOffset - startOffset)];\r\n }\r\n return this._readVisibleRangesForRange(this.domNode, startColumn, endColumn, context);\r\n }\r\n _readVisibleRangesForRange(domNode, startColumn, endColumn, context) {\r\n if (startColumn === endColumn) {\r\n const pixelOffset = this._readPixelOffset(domNode, startColumn, context);\r\n if (pixelOffset === -1) {\r\n return null;\r\n }\r\n else {\r\n return [new HorizontalRange(pixelOffset, 0)];\r\n }\r\n }\r\n else {\r\n return this._readRawVisibleRangesForRange(domNode, startColumn, endColumn, context);\r\n }\r\n }\r\n _readPixelOffset(domNode, column, context) {\r\n if (this._characterMapping.length === 0) {\r\n // This line has no content\r\n if (this._containsForeignElements === 0 /* None */) {\r\n // We can assume the line is really empty\r\n return 0;\r\n }\r\n if (this._containsForeignElements === 2 /* After */) {\r\n // We have foreign elements after the (empty) line\r\n return 0;\r\n }\r\n if (this._containsForeignElements === 1 /* Before */) {\r\n // We have foreign elements before the (empty) line\r\n return this.getWidth();\r\n }\r\n // We have foreign elements before & after the (empty) line\r\n const readingTarget = this._getReadingTarget(domNode);\r\n if (readingTarget.firstChild) {\r\n return readingTarget.firstChild.offsetWidth;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (this._pixelOffsetCache !== null) {\r\n // the text is LTR\r\n const cachedPixelOffset = this._pixelOffsetCache[column];\r\n if (cachedPixelOffset !== -1) {\r\n return cachedPixelOffset;\r\n }\r\n const result = this._actualReadPixelOffset(domNode, column, context);\r\n this._pixelOffsetCache[column] = result;\r\n return result;\r\n }\r\n return this._actualReadPixelOffset(domNode, column, context);\r\n }\r\n _actualReadPixelOffset(domNode, column, context) {\r\n if (this._characterMapping.length === 0) {\r\n // This line has no content\r\n const r = RangeUtil.readHorizontalRanges(this._getReadingTarget(domNode), 0, 0, 0, 0, context.clientRectDeltaLeft, context.endNode);\r\n if (!r || r.length === 0) {\r\n return -1;\r\n }\r\n return r[0].left;\r\n }\r\n if (column === this._characterMapping.length && this._isWhitespaceOnly && this._containsForeignElements === 0 /* None */) {\r\n // This branch helps in the case of whitespace only lines which have a width set\r\n return this.getWidth();\r\n }\r\n const partData = this._characterMapping.charOffsetToPartData(column - 1);\r\n const partIndex = CharacterMapping.getPartIndex(partData);\r\n const charOffsetInPart = CharacterMapping.getCharIndex(partData);\r\n const r = RangeUtil.readHorizontalRanges(this._getReadingTarget(domNode), partIndex, charOffsetInPart, partIndex, charOffsetInPart, context.clientRectDeltaLeft, context.endNode);\r\n if (!r || r.length === 0) {\r\n return -1;\r\n }\r\n const result = r[0].left;\r\n if (this.input.isBasicASCII) {\r\n const charOffset = this._characterMapping.getAbsoluteOffsets();\r\n const expectedResult = Math.round(this.input.spaceWidth * charOffset[column - 1]);\r\n if (Math.abs(expectedResult - result) <= 1) {\r\n return expectedResult;\r\n }\r\n }\r\n return result;\r\n }\r\n _readRawVisibleRangesForRange(domNode, startColumn, endColumn, context) {\r\n if (startColumn === 1 && endColumn === this._characterMapping.length) {\r\n // This branch helps IE with bidi text & gives a performance boost to other browsers when reading visible ranges for an entire line\r\n return [new HorizontalRange(0, this.getWidth())];\r\n }\r\n const startPartData = this._characterMapping.charOffsetToPartData(startColumn - 1);\r\n const startPartIndex = CharacterMapping.getPartIndex(startPartData);\r\n const startCharOffsetInPart = CharacterMapping.getCharIndex(startPartData);\r\n const endPartData = this._characterMapping.charOffsetToPartData(endColumn - 1);\r\n const endPartIndex = CharacterMapping.getPartIndex(endPartData);\r\n const endCharOffsetInPart = CharacterMapping.getCharIndex(endPartData);\r\n return RangeUtil.readHorizontalRanges(this._getReadingTarget(domNode), startPartIndex, startCharOffsetInPart, endPartIndex, endCharOffsetInPart, context.clientRectDeltaLeft, context.endNode);\r\n }\r\n /**\r\n * Returns the column for the text found at a specific offset inside a rendered dom node\r\n */\r\n getColumnOfNodeOffset(lineNumber, spanNode, offset) {\r\n const spanNodeTextContentLength = spanNode.textContent.length;\r\n let spanIndex = -1;\r\n while (spanNode) {\r\n spanNode = spanNode.previousSibling;\r\n spanIndex++;\r\n }\r\n const charOffset = this._characterMapping.partDataToCharOffset(spanIndex, spanNodeTextContentLength, offset);\r\n return charOffset + 1;\r\n }\r\n}\r\nclass WebKitRenderedViewLine extends RenderedViewLine {\r\n _readVisibleRangesForRange(domNode, startColumn, endColumn, context) {\r\n const output = super._readVisibleRangesForRange(domNode, startColumn, endColumn, context);\r\n if (!output || output.length === 0 || startColumn === endColumn || (startColumn === 1 && endColumn === this._characterMapping.length)) {\r\n return output;\r\n }\r\n // WebKit is buggy and returns an expanded range (to contain words in some cases)\r\n // The last client rect is enlarged (I think)\r\n if (!this.input.containsRTL) {\r\n // This is an attempt to patch things up\r\n // Find position of last column\r\n const endPixelOffset = this._readPixelOffset(domNode, endColumn, context);\r\n if (endPixelOffset !== -1) {\r\n const lastRange = output[output.length - 1];\r\n if (lastRange.left < endPixelOffset) {\r\n // Trim down the width of the last visible range to not go after the last column's position\r\n lastRange.width = endPixelOffset - lastRange.left;\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n}\r\nconst createRenderedLine = (function () {\r\n if (browser.isWebKit) {\r\n return createWebKitRenderedLine;\r\n }\r\n return createNormalRenderedLine;\r\n})();\r\nfunction createWebKitRenderedLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements) {\r\n return new WebKitRenderedViewLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements);\r\n}\r\nfunction createNormalRenderedLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements) {\r\n return new RenderedViewLine(domNode, renderLineInput, characterMapping, containsRTL, containsForeignElements);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './viewLines.css';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nimport { RunOnceScheduler } from '../../../../base/common/async.js';\r\nimport { Configuration } from '../../config/configuration.js';\r\nimport { VisibleLinesCollection } from '../../view/viewLayer.js';\r\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\r\nimport { DomReadingContext, ViewLine, ViewLineOptions } from './viewLine.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { LineVisibleRanges, HorizontalPosition } from '../../../common/view/renderingContext.js';\r\nimport { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from '../../../../base/browser/ui/mouseCursor/mouseCursor.js';\r\nclass LastRenderedData {\r\n constructor() {\r\n this._currentVisibleRange = new Range(1, 1, 1, 1);\r\n }\r\n getCurrentVisibleRange() {\r\n return this._currentVisibleRange;\r\n }\r\n setCurrentVisibleRange(currentVisibleRange) {\r\n this._currentVisibleRange = currentVisibleRange;\r\n }\r\n}\r\nclass HorizontalRevealRangeRequest {\r\n constructor(lineNumber, startColumn, endColumn, startScrollTop, stopScrollTop, scrollType) {\r\n this.lineNumber = lineNumber;\r\n this.startColumn = startColumn;\r\n this.endColumn = endColumn;\r\n this.startScrollTop = startScrollTop;\r\n this.stopScrollTop = stopScrollTop;\r\n this.scrollType = scrollType;\r\n this.type = 'range';\r\n this.minLineNumber = lineNumber;\r\n this.maxLineNumber = lineNumber;\r\n }\r\n}\r\nclass HorizontalRevealSelectionsRequest {\r\n constructor(selections, startScrollTop, stopScrollTop, scrollType) {\r\n this.selections = selections;\r\n this.startScrollTop = startScrollTop;\r\n this.stopScrollTop = stopScrollTop;\r\n this.scrollType = scrollType;\r\n this.type = 'selections';\r\n let minLineNumber = selections[0].startLineNumber;\r\n let maxLineNumber = selections[0].endLineNumber;\r\n for (let i = 1, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n minLineNumber = Math.min(minLineNumber, selection.startLineNumber);\r\n maxLineNumber = Math.max(maxLineNumber, selection.endLineNumber);\r\n }\r\n this.minLineNumber = minLineNumber;\r\n this.maxLineNumber = maxLineNumber;\r\n }\r\n}\r\nexport class ViewLines extends ViewPart {\r\n constructor(context, linesContent) {\r\n super(context);\r\n this._linesContent = linesContent;\r\n this._textRangeRestingSpot = document.createElement('div');\r\n this._visibleLines = new VisibleLinesCollection(this);\r\n this.domNode = this._visibleLines.domNode;\r\n const conf = this._context.configuration;\r\n const options = this._context.configuration.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n this._isViewportWrapping = wrappingInfo.isViewportWrapping;\r\n this._revealHorizontalRightPadding = options.get(81 /* revealHorizontalRightPadding */);\r\n this._cursorSurroundingLines = options.get(20 /* cursorSurroundingLines */);\r\n this._cursorSurroundingLinesStyle = options.get(21 /* cursorSurroundingLinesStyle */);\r\n this._canUseLayerHinting = !options.get(23 /* disableLayerHinting */);\r\n this._viewLineOptions = new ViewLineOptions(conf, this._context.theme.type);\r\n PartFingerprints.write(this.domNode, 7 /* ViewLines */);\r\n this.domNode.setClassName(`view-lines ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`);\r\n Configuration.applyFontInfo(this.domNode, fontInfo);\r\n // --- width & height\r\n this._maxLineWidth = 0;\r\n this._asyncUpdateLineWidths = new RunOnceScheduler(() => {\r\n this._updateLineWidthsSlow();\r\n }, 200);\r\n this._asyncCheckMonospaceFontAssumptions = new RunOnceScheduler(() => {\r\n this._checkMonospaceFontAssumptions();\r\n }, 2000);\r\n this._lastRenderedData = new LastRenderedData();\r\n this._horizontalRevealRequest = null;\r\n }\r\n dispose() {\r\n this._asyncUpdateLineWidths.dispose();\r\n this._asyncCheckMonospaceFontAssumptions.dispose();\r\n super.dispose();\r\n }\r\n getDomNode() {\r\n return this.domNode;\r\n }\r\n // ---- begin IVisibleLinesHost\r\n createVisibleLine() {\r\n return new ViewLine(this._viewLineOptions);\r\n }\r\n // ---- end IVisibleLinesHost\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n this._visibleLines.onConfigurationChanged(e);\r\n if (e.hasChanged(118 /* wrappingInfo */)) {\r\n this._maxLineWidth = 0;\r\n }\r\n const options = this._context.configuration.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n this._isViewportWrapping = wrappingInfo.isViewportWrapping;\r\n this._revealHorizontalRightPadding = options.get(81 /* revealHorizontalRightPadding */);\r\n this._cursorSurroundingLines = options.get(20 /* cursorSurroundingLines */);\r\n this._cursorSurroundingLinesStyle = options.get(21 /* cursorSurroundingLinesStyle */);\r\n this._canUseLayerHinting = !options.get(23 /* disableLayerHinting */);\r\n Configuration.applyFontInfo(this.domNode, fontInfo);\r\n this._onOptionsMaybeChanged();\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n this._maxLineWidth = 0;\r\n }\r\n return true;\r\n }\r\n _onOptionsMaybeChanged() {\r\n const conf = this._context.configuration;\r\n const newViewLineOptions = new ViewLineOptions(conf, this._context.theme.type);\r\n if (!this._viewLineOptions.equals(newViewLineOptions)) {\r\n this._viewLineOptions = newViewLineOptions;\r\n const startLineNumber = this._visibleLines.getStartLineNumber();\r\n const endLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n const line = this._visibleLines.getVisibleLine(lineNumber);\r\n line.onOptionsChanged(this._viewLineOptions);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n onCursorStateChanged(e) {\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n let r = false;\r\n for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {\r\n r = this._visibleLines.getVisibleLine(lineNumber).onSelectionChanged() || r;\r\n }\r\n return r;\r\n }\r\n onDecorationsChanged(e) {\r\n if (true /*e.inlineDecorationsChanged*/) {\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {\r\n this._visibleLines.getVisibleLine(lineNumber).onDecorationsChanged();\r\n }\r\n }\r\n return true;\r\n }\r\n onFlushed(e) {\r\n const shouldRender = this._visibleLines.onFlushed(e);\r\n this._maxLineWidth = 0;\r\n return shouldRender;\r\n }\r\n onLinesChanged(e) {\r\n return this._visibleLines.onLinesChanged(e);\r\n }\r\n onLinesDeleted(e) {\r\n return this._visibleLines.onLinesDeleted(e);\r\n }\r\n onLinesInserted(e) {\r\n return this._visibleLines.onLinesInserted(e);\r\n }\r\n onRevealRangeRequest(e) {\r\n // Using the future viewport here in order to handle multiple\r\n // incoming reveal range requests that might all desire to be animated\r\n const desiredScrollTop = this._computeScrollTopToRevealRange(this._context.viewLayout.getFutureViewport(), e.source, e.range, e.selections, e.verticalType);\r\n if (desiredScrollTop === -1) {\r\n // marker to abort the reveal range request\r\n return false;\r\n }\r\n // validate the new desired scroll top\r\n let newScrollPosition = this._context.viewLayout.validateScrollPosition({ scrollTop: desiredScrollTop });\r\n if (e.revealHorizontal) {\r\n if (e.range && e.range.startLineNumber !== e.range.endLineNumber) {\r\n // Two or more lines? => scroll to base (That's how you see most of the two lines)\r\n newScrollPosition = {\r\n scrollTop: newScrollPosition.scrollTop,\r\n scrollLeft: 0\r\n };\r\n }\r\n else if (e.range) {\r\n // We don't necessarily know the horizontal offset of this range since the line might not be in the view...\r\n this._horizontalRevealRequest = new HorizontalRevealRangeRequest(e.range.startLineNumber, e.range.startColumn, e.range.endColumn, this._context.viewLayout.getCurrentScrollTop(), newScrollPosition.scrollTop, e.scrollType);\r\n }\r\n else if (e.selections && e.selections.length > 0) {\r\n this._horizontalRevealRequest = new HorizontalRevealSelectionsRequest(e.selections, this._context.viewLayout.getCurrentScrollTop(), newScrollPosition.scrollTop, e.scrollType);\r\n }\r\n }\r\n else {\r\n this._horizontalRevealRequest = null;\r\n }\r\n const scrollTopDelta = Math.abs(this._context.viewLayout.getCurrentScrollTop() - newScrollPosition.scrollTop);\r\n const scrollType = (scrollTopDelta <= this._lineHeight ? 1 /* Immediate */ : e.scrollType);\r\n this._context.model.setScrollPosition(newScrollPosition, scrollType);\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n if (this._horizontalRevealRequest && e.scrollLeftChanged) {\r\n // cancel any outstanding horizontal reveal request if someone else scrolls horizontally.\r\n this._horizontalRevealRequest = null;\r\n }\r\n if (this._horizontalRevealRequest && e.scrollTopChanged) {\r\n const min = Math.min(this._horizontalRevealRequest.startScrollTop, this._horizontalRevealRequest.stopScrollTop);\r\n const max = Math.max(this._horizontalRevealRequest.startScrollTop, this._horizontalRevealRequest.stopScrollTop);\r\n if (e.scrollTop < min || e.scrollTop > max) {\r\n // cancel any outstanding horizontal reveal request if someone else scrolls vertically.\r\n this._horizontalRevealRequest = null;\r\n }\r\n }\r\n this.domNode.setWidth(e.scrollWidth);\r\n return this._visibleLines.onScrollChanged(e) || true;\r\n }\r\n onTokensChanged(e) {\r\n return this._visibleLines.onTokensChanged(e);\r\n }\r\n onZonesChanged(e) {\r\n this._context.model.setMaxLineWidth(this._maxLineWidth);\r\n return this._visibleLines.onZonesChanged(e);\r\n }\r\n onThemeChanged(e) {\r\n return this._onOptionsMaybeChanged();\r\n }\r\n // ---- end view event handlers\r\n // ----------- HELPERS FOR OTHERS\r\n getPositionFromDOMInfo(spanNode, offset) {\r\n const viewLineDomNode = this._getViewLineDomNode(spanNode);\r\n if (viewLineDomNode === null) {\r\n // Couldn't find view line node\r\n return null;\r\n }\r\n const lineNumber = this._getLineNumberFor(viewLineDomNode);\r\n if (lineNumber === -1) {\r\n // Couldn't find view line node\r\n return null;\r\n }\r\n if (lineNumber < 1 || lineNumber > this._context.model.getLineCount()) {\r\n // lineNumber is outside range\r\n return null;\r\n }\r\n if (this._context.model.getLineMaxColumn(lineNumber) === 1) {\r\n // Line is empty\r\n return new Position(lineNumber, 1);\r\n }\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {\r\n // Couldn't find line\r\n return null;\r\n }\r\n let column = this._visibleLines.getVisibleLine(lineNumber).getColumnOfNodeOffset(lineNumber, spanNode, offset);\r\n const minColumn = this._context.model.getLineMinColumn(lineNumber);\r\n if (column < minColumn) {\r\n column = minColumn;\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n _getViewLineDomNode(node) {\r\n while (node && node.nodeType === 1) {\r\n if (node.className === ViewLine.CLASS_NAME) {\r\n return node;\r\n }\r\n node = node.parentElement;\r\n }\r\n return null;\r\n }\r\n /**\r\n * @returns the line number of this view line dom node.\r\n */\r\n _getLineNumberFor(domNode) {\r\n const startLineNumber = this._visibleLines.getStartLineNumber();\r\n const endLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n const line = this._visibleLines.getVisibleLine(lineNumber);\r\n if (domNode === line.getDomNode()) {\r\n return lineNumber;\r\n }\r\n }\r\n return -1;\r\n }\r\n getLineWidth(lineNumber) {\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {\r\n // Couldn't find line\r\n return -1;\r\n }\r\n return this._visibleLines.getVisibleLine(lineNumber).getWidth();\r\n }\r\n linesVisibleRangesForRange(_range, includeNewLines) {\r\n if (this.shouldRender()) {\r\n // Cannot read from the DOM because it is dirty\r\n // i.e. the model & the dom are out of sync, so I'd be reading something stale\r\n return null;\r\n }\r\n const originalEndLineNumber = _range.endLineNumber;\r\n const range = Range.intersectRanges(_range, this._lastRenderedData.getCurrentVisibleRange());\r\n if (!range) {\r\n return null;\r\n }\r\n let visibleRanges = [], visibleRangesLen = 0;\r\n const domReadingContext = new DomReadingContext(this.domNode.domNode, this._textRangeRestingSpot);\r\n let nextLineModelLineNumber = 0;\r\n if (includeNewLines) {\r\n nextLineModelLineNumber = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Position(range.startLineNumber, 1)).lineNumber;\r\n }\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = range.startLineNumber; lineNumber <= range.endLineNumber; lineNumber++) {\r\n if (lineNumber < rendStartLineNumber || lineNumber > rendEndLineNumber) {\r\n continue;\r\n }\r\n const startColumn = lineNumber === range.startLineNumber ? range.startColumn : 1;\r\n const endColumn = lineNumber === range.endLineNumber ? range.endColumn : this._context.model.getLineMaxColumn(lineNumber);\r\n const visibleRangesForLine = this._visibleLines.getVisibleLine(lineNumber).getVisibleRangesForRange(startColumn, endColumn, domReadingContext);\r\n if (!visibleRangesForLine) {\r\n continue;\r\n }\r\n if (includeNewLines && lineNumber < originalEndLineNumber) {\r\n const currentLineModelLineNumber = nextLineModelLineNumber;\r\n nextLineModelLineNumber = this._context.model.coordinatesConverter.convertViewPositionToModelPosition(new Position(lineNumber + 1, 1)).lineNumber;\r\n if (currentLineModelLineNumber !== nextLineModelLineNumber) {\r\n visibleRangesForLine.ranges[visibleRangesForLine.ranges.length - 1].width += this._typicalHalfwidthCharacterWidth;\r\n }\r\n }\r\n visibleRanges[visibleRangesLen++] = new LineVisibleRanges(visibleRangesForLine.outsideRenderedLine, lineNumber, visibleRangesForLine.ranges);\r\n }\r\n if (visibleRangesLen === 0) {\r\n return null;\r\n }\r\n return visibleRanges;\r\n }\r\n _visibleRangesForLineRange(lineNumber, startColumn, endColumn) {\r\n if (this.shouldRender()) {\r\n // Cannot read from the DOM because it is dirty\r\n // i.e. the model & the dom are out of sync, so I'd be reading something stale\r\n return null;\r\n }\r\n if (lineNumber < this._visibleLines.getStartLineNumber() || lineNumber > this._visibleLines.getEndLineNumber()) {\r\n return null;\r\n }\r\n return this._visibleLines.getVisibleLine(lineNumber).getVisibleRangesForRange(startColumn, endColumn, new DomReadingContext(this.domNode.domNode, this._textRangeRestingSpot));\r\n }\r\n visibleRangeForPosition(position) {\r\n const visibleRanges = this._visibleRangesForLineRange(position.lineNumber, position.column, position.column);\r\n if (!visibleRanges) {\r\n return null;\r\n }\r\n return new HorizontalPosition(visibleRanges.outsideRenderedLine, visibleRanges.ranges[0].left);\r\n }\r\n // --- implementation\r\n updateLineWidths() {\r\n this._updateLineWidths(false);\r\n }\r\n /**\r\n * Updates the max line width if it is fast to compute.\r\n * Returns true if all lines were taken into account.\r\n * Returns false if some lines need to be reevaluated (in a slow fashion).\r\n */\r\n _updateLineWidthsFast() {\r\n return this._updateLineWidths(true);\r\n }\r\n _updateLineWidthsSlow() {\r\n this._updateLineWidths(false);\r\n }\r\n _updateLineWidths(fast) {\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n let localMaxLineWidth = 1;\r\n let allWidthsComputed = true;\r\n for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {\r\n const visibleLine = this._visibleLines.getVisibleLine(lineNumber);\r\n if (fast && !visibleLine.getWidthIsFast()) {\r\n // Cannot compute width in a fast way for this line\r\n allWidthsComputed = false;\r\n continue;\r\n }\r\n localMaxLineWidth = Math.max(localMaxLineWidth, visibleLine.getWidth());\r\n }\r\n if (allWidthsComputed && rendStartLineNumber === 1 && rendEndLineNumber === this._context.model.getLineCount()) {\r\n // we know the max line width for all the lines\r\n this._maxLineWidth = 0;\r\n }\r\n this._ensureMaxLineWidth(localMaxLineWidth);\r\n return allWidthsComputed;\r\n }\r\n _checkMonospaceFontAssumptions() {\r\n // Problems with monospace assumptions are more apparent for longer lines,\r\n // as small rounding errors start to sum up, so we will select the longest\r\n // line for a closer inspection\r\n let longestLineNumber = -1;\r\n let longestWidth = -1;\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {\r\n const visibleLine = this._visibleLines.getVisibleLine(lineNumber);\r\n if (visibleLine.needsMonospaceFontCheck()) {\r\n const lineWidth = visibleLine.getWidth();\r\n if (lineWidth > longestWidth) {\r\n longestWidth = lineWidth;\r\n longestLineNumber = lineNumber;\r\n }\r\n }\r\n }\r\n if (longestLineNumber === -1) {\r\n return;\r\n }\r\n if (!this._visibleLines.getVisibleLine(longestLineNumber).monospaceAssumptionsAreValid()) {\r\n for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {\r\n const visibleLine = this._visibleLines.getVisibleLine(lineNumber);\r\n visibleLine.onMonospaceAssumptionsInvalidated();\r\n }\r\n }\r\n }\r\n prepareRender() {\r\n throw new Error('Not supported');\r\n }\r\n render() {\r\n throw new Error('Not supported');\r\n }\r\n renderText(viewportData) {\r\n // (1) render lines - ensures lines are in the DOM\r\n this._visibleLines.renderLines(viewportData);\r\n this._lastRenderedData.setCurrentVisibleRange(viewportData.visibleRange);\r\n this.domNode.setWidth(this._context.viewLayout.getScrollWidth());\r\n this.domNode.setHeight(Math.min(this._context.viewLayout.getScrollHeight(), 1000000));\r\n // (2) compute horizontal scroll position:\r\n // - this must happen after the lines are in the DOM since it might need a line that rendered just now\r\n // - it might change `scrollWidth` and `scrollLeft`\r\n if (this._horizontalRevealRequest) {\r\n const horizontalRevealRequest = this._horizontalRevealRequest;\r\n // Check that we have the line that contains the horizontal range in the viewport\r\n if (viewportData.startLineNumber <= horizontalRevealRequest.minLineNumber && horizontalRevealRequest.maxLineNumber <= viewportData.endLineNumber) {\r\n this._horizontalRevealRequest = null;\r\n // allow `visibleRangesForRange2` to work\r\n this.onDidRender();\r\n // compute new scroll position\r\n const newScrollLeft = this._computeScrollLeftToReveal(horizontalRevealRequest);\r\n if (newScrollLeft) {\r\n if (!this._isViewportWrapping) {\r\n // ensure `scrollWidth` is large enough\r\n this._ensureMaxLineWidth(newScrollLeft.maxHorizontalOffset);\r\n }\r\n // set `scrollLeft`\r\n this._context.model.setScrollPosition({\r\n scrollLeft: newScrollLeft.scrollLeft\r\n }, horizontalRevealRequest.scrollType);\r\n }\r\n }\r\n }\r\n // Update max line width (not so important, it is just so the horizontal scrollbar doesn't get too small)\r\n if (!this._updateLineWidthsFast()) {\r\n // Computing the width of some lines would be slow => delay it\r\n this._asyncUpdateLineWidths.schedule();\r\n }\r\n if (platform.isLinux && !this._asyncCheckMonospaceFontAssumptions.isScheduled()) {\r\n const rendStartLineNumber = this._visibleLines.getStartLineNumber();\r\n const rendEndLineNumber = this._visibleLines.getEndLineNumber();\r\n for (let lineNumber = rendStartLineNumber; lineNumber <= rendEndLineNumber; lineNumber++) {\r\n const visibleLine = this._visibleLines.getVisibleLine(lineNumber);\r\n if (visibleLine.needsMonospaceFontCheck()) {\r\n this._asyncCheckMonospaceFontAssumptions.schedule();\r\n break;\r\n }\r\n }\r\n }\r\n // (3) handle scrolling\r\n this._linesContent.setLayerHinting(this._canUseLayerHinting);\r\n this._linesContent.setContain('strict');\r\n const adjustedScrollTop = this._context.viewLayout.getCurrentScrollTop() - viewportData.bigNumbersDelta;\r\n this._linesContent.setTop(-adjustedScrollTop);\r\n this._linesContent.setLeft(-this._context.viewLayout.getCurrentScrollLeft());\r\n }\r\n // --- width\r\n _ensureMaxLineWidth(lineWidth) {\r\n const iLineWidth = Math.ceil(lineWidth);\r\n if (this._maxLineWidth < iLineWidth) {\r\n this._maxLineWidth = iLineWidth;\r\n this._context.model.setMaxLineWidth(this._maxLineWidth);\r\n }\r\n }\r\n _computeScrollTopToRevealRange(viewport, source, range, selections, verticalType) {\r\n const viewportStartY = viewport.top;\r\n const viewportHeight = viewport.height;\r\n const viewportEndY = viewportStartY + viewportHeight;\r\n let boxIsSingleRange;\r\n let boxStartY;\r\n let boxEndY;\r\n // Have a box that includes one extra line height (for the horizontal scrollbar)\r\n if (selections && selections.length > 0) {\r\n let minLineNumber = selections[0].startLineNumber;\r\n let maxLineNumber = selections[0].endLineNumber;\r\n for (let i = 1, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n minLineNumber = Math.min(minLineNumber, selection.startLineNumber);\r\n maxLineNumber = Math.max(maxLineNumber, selection.endLineNumber);\r\n }\r\n boxIsSingleRange = false;\r\n boxStartY = this._context.viewLayout.getVerticalOffsetForLineNumber(minLineNumber);\r\n boxEndY = this._context.viewLayout.getVerticalOffsetForLineNumber(maxLineNumber) + this._lineHeight;\r\n }\r\n else if (range) {\r\n boxIsSingleRange = true;\r\n boxStartY = this._context.viewLayout.getVerticalOffsetForLineNumber(range.startLineNumber);\r\n boxEndY = this._context.viewLayout.getVerticalOffsetForLineNumber(range.endLineNumber) + this._lineHeight;\r\n }\r\n else {\r\n return -1;\r\n }\r\n const shouldIgnoreScrollOff = source === 'mouse' && this._cursorSurroundingLinesStyle === 'default';\r\n if (!shouldIgnoreScrollOff) {\r\n const context = Math.min((viewportHeight / this._lineHeight) / 2, this._cursorSurroundingLines);\r\n boxStartY -= context * this._lineHeight;\r\n boxEndY += Math.max(0, (context - 1)) * this._lineHeight;\r\n }\r\n if (verticalType === 0 /* Simple */ || verticalType === 4 /* Bottom */) {\r\n // Reveal one line more when the last line would be covered by the scrollbar - arrow down case or revealing a line explicitly at bottom\r\n boxEndY += this._lineHeight;\r\n }\r\n let newScrollTop;\r\n if (boxEndY - boxStartY > viewportHeight) {\r\n // the box is larger than the viewport ... scroll to its top\r\n if (!boxIsSingleRange) {\r\n // do not reveal multiple cursors if there are more than fit the viewport\r\n return -1;\r\n }\r\n newScrollTop = boxStartY;\r\n }\r\n else if (verticalType === 5 /* NearTop */ || verticalType === 6 /* NearTopIfOutsideViewport */) {\r\n if (verticalType === 6 /* NearTopIfOutsideViewport */ && viewportStartY <= boxStartY && boxEndY <= viewportEndY) {\r\n // Box is already in the viewport... do nothing\r\n newScrollTop = viewportStartY;\r\n }\r\n else {\r\n // We want a gap that is 20% of the viewport, but with a minimum of 5 lines\r\n const desiredGapAbove = Math.max(5 * this._lineHeight, viewportHeight * 0.2);\r\n // Try to scroll just above the box with the desired gap\r\n const desiredScrollTop = boxStartY - desiredGapAbove;\r\n // But ensure that the box is not pushed out of viewport\r\n const minScrollTop = boxEndY - viewportHeight;\r\n newScrollTop = Math.max(minScrollTop, desiredScrollTop);\r\n }\r\n }\r\n else if (verticalType === 1 /* Center */ || verticalType === 2 /* CenterIfOutsideViewport */) {\r\n if (verticalType === 2 /* CenterIfOutsideViewport */ && viewportStartY <= boxStartY && boxEndY <= viewportEndY) {\r\n // Box is already in the viewport... do nothing\r\n newScrollTop = viewportStartY;\r\n }\r\n else {\r\n // Box is outside the viewport... center it\r\n const boxMiddleY = (boxStartY + boxEndY) / 2;\r\n newScrollTop = Math.max(0, boxMiddleY - viewportHeight / 2);\r\n }\r\n }\r\n else {\r\n newScrollTop = this._computeMinimumScrolling(viewportStartY, viewportEndY, boxStartY, boxEndY, verticalType === 3 /* Top */, verticalType === 4 /* Bottom */);\r\n }\r\n return newScrollTop;\r\n }\r\n _computeScrollLeftToReveal(horizontalRevealRequest) {\r\n const viewport = this._context.viewLayout.getCurrentViewport();\r\n const viewportStartX = viewport.left;\r\n const viewportEndX = viewportStartX + viewport.width;\r\n let boxStartX = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n let boxEndX = 0;\r\n if (horizontalRevealRequest.type === 'range') {\r\n const visibleRanges = this._visibleRangesForLineRange(horizontalRevealRequest.lineNumber, horizontalRevealRequest.startColumn, horizontalRevealRequest.endColumn);\r\n if (!visibleRanges) {\r\n return null;\r\n }\r\n for (const visibleRange of visibleRanges.ranges) {\r\n boxStartX = Math.min(boxStartX, visibleRange.left);\r\n boxEndX = Math.max(boxEndX, visibleRange.left + visibleRange.width);\r\n }\r\n }\r\n else {\r\n for (const selection of horizontalRevealRequest.selections) {\r\n if (selection.startLineNumber !== selection.endLineNumber) {\r\n return null;\r\n }\r\n const visibleRanges = this._visibleRangesForLineRange(selection.startLineNumber, selection.startColumn, selection.endColumn);\r\n if (!visibleRanges) {\r\n return null;\r\n }\r\n for (const visibleRange of visibleRanges.ranges) {\r\n boxStartX = Math.min(boxStartX, visibleRange.left);\r\n boxEndX = Math.max(boxEndX, visibleRange.left + visibleRange.width);\r\n }\r\n }\r\n }\r\n boxStartX = Math.max(0, boxStartX - ViewLines.HORIZONTAL_EXTRA_PX);\r\n boxEndX += this._revealHorizontalRightPadding;\r\n if (horizontalRevealRequest.type === 'selections' && boxEndX - boxStartX > viewport.width) {\r\n return null;\r\n }\r\n const newScrollLeft = this._computeMinimumScrolling(viewportStartX, viewportEndX, boxStartX, boxEndX);\r\n return {\r\n scrollLeft: newScrollLeft,\r\n maxHorizontalOffset: boxEndX\r\n };\r\n }\r\n _computeMinimumScrolling(viewportStart, viewportEnd, boxStart, boxEnd, revealAtStart, revealAtEnd) {\r\n viewportStart = viewportStart | 0;\r\n viewportEnd = viewportEnd | 0;\r\n boxStart = boxStart | 0;\r\n boxEnd = boxEnd | 0;\r\n revealAtStart = !!revealAtStart;\r\n revealAtEnd = !!revealAtEnd;\r\n const viewportLength = viewportEnd - viewportStart;\r\n const boxLength = boxEnd - boxStart;\r\n if (boxLength < viewportLength) {\r\n // The box would fit in the viewport\r\n if (revealAtStart) {\r\n return boxStart;\r\n }\r\n if (revealAtEnd) {\r\n return Math.max(0, boxEnd - viewportLength);\r\n }\r\n if (boxStart < viewportStart) {\r\n // The box is above the viewport\r\n return boxStart;\r\n }\r\n else if (boxEnd > viewportEnd) {\r\n // The box is below the viewport\r\n return Math.max(0, boxEnd - viewportLength);\r\n }\r\n }\r\n else {\r\n // The box would not fit in the viewport\r\n // Reveal the beginning of the box\r\n return boxStart;\r\n }\r\n return viewportStart;\r\n }\r\n}\r\n/**\r\n * Adds this amount of pixels to the right of lines (no-one wants to type near the edge of the viewport)\r\n */\r\nViewLines.HORIZONTAL_EXTRA_PX = 30;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './linesDecorations.css';\r\nimport { DecorationToRender, DedupOverlay } from '../glyphMargin/glyphMargin.js';\r\nexport class LinesDecorationsOverlay extends DedupOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._decorationsLeft = layoutInfo.decorationsLeft;\r\n this._decorationsWidth = layoutInfo.decorationsWidth;\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._decorationsLeft = layoutInfo.decorationsLeft;\r\n this._decorationsWidth = layoutInfo.decorationsWidth;\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n _getDecorations(ctx) {\r\n const decorations = ctx.getDecorationsInViewport();\r\n let r = [], rLen = 0;\r\n for (let i = 0, len = decorations.length; i < len; i++) {\r\n const d = decorations[i];\r\n const linesDecorationsClassName = d.options.linesDecorationsClassName;\r\n if (linesDecorationsClassName) {\r\n r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.endLineNumber, linesDecorationsClassName);\r\n }\r\n const firstLineDecorationClassName = d.options.firstLineDecorationClassName;\r\n if (firstLineDecorationClassName) {\r\n r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.startLineNumber, firstLineDecorationClassName);\r\n }\r\n }\r\n return r;\r\n }\r\n prepareRender(ctx) {\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));\r\n const left = this._decorationsLeft.toString();\r\n const width = this._decorationsWidth.toString();\r\n const common = '\" style=\"left:' + left + 'px;width:' + width + 'px;\"></div>';\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n const classNames = toRender[lineIndex];\r\n let lineOutput = '';\r\n for (let i = 0, len = classNames.length; i < len; i++) {\r\n lineOutput += '<div class=\"cldr ' + classNames[i] + common;\r\n }\r\n output[lineIndex] = lineOutput;\r\n }\r\n this._renderResult = output;\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n return this._renderResult[lineNumber - startLineNumber];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { ViewPart } from '../../view/viewPart.js';\r\nexport class Margin extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._canUseLayerHinting = !options.get(23 /* disableLayerHinting */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._glyphMarginLeft = layoutInfo.glyphMarginLeft;\r\n this._glyphMarginWidth = layoutInfo.glyphMarginWidth;\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n this._domNode.setClassName(Margin.OUTER_CLASS_NAME);\r\n this._domNode.setPosition('absolute');\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._glyphMarginBackgroundDomNode = createFastDomNode(document.createElement('div'));\r\n this._glyphMarginBackgroundDomNode.setClassName(Margin.CLASS_NAME);\r\n this._domNode.appendChild(this._glyphMarginBackgroundDomNode);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._canUseLayerHinting = !options.get(23 /* disableLayerHinting */);\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this._glyphMarginLeft = layoutInfo.glyphMarginLeft;\r\n this._glyphMarginWidth = layoutInfo.glyphMarginWidth;\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return super.onScrollChanged(e) || e.scrollTopChanged;\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n // Nothing to read\r\n }\r\n render(ctx) {\r\n this._domNode.setLayerHinting(this._canUseLayerHinting);\r\n this._domNode.setContain('strict');\r\n const adjustedScrollTop = ctx.scrollTop - ctx.bigNumbersDelta;\r\n this._domNode.setTop(-adjustedScrollTop);\r\n const height = Math.min(ctx.scrollHeight, 1000000);\r\n this._domNode.setHeight(height);\r\n this._domNode.setWidth(this._contentLeft);\r\n this._glyphMarginBackgroundDomNode.setLeft(this._glyphMarginLeft);\r\n this._glyphMarginBackgroundDomNode.setWidth(this._glyphMarginWidth);\r\n this._glyphMarginBackgroundDomNode.setHeight(height);\r\n }\r\n}\r\nMargin.CLASS_NAME = 'glyph-margin';\r\nMargin.OUTER_CLASS_NAME = 'margin';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './marginDecorations.css';\r\nimport { DecorationToRender, DedupOverlay } from '../glyphMargin/glyphMargin.js';\r\nexport class MarginViewLineDecorationsOverlay extends DedupOverlay {\r\n constructor(context) {\r\n super();\r\n this._context = context;\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n _getDecorations(ctx) {\r\n const decorations = ctx.getDecorationsInViewport();\r\n let r = [], rLen = 0;\r\n for (let i = 0, len = decorations.length; i < len; i++) {\r\n const d = decorations[i];\r\n const marginClassName = d.options.marginClassName;\r\n if (marginClassName) {\r\n r[rLen++] = new DecorationToRender(d.range.startLineNumber, d.range.endLineNumber, marginClassName);\r\n }\r\n }\r\n return r;\r\n }\r\n prepareRender(ctx) {\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n const toRender = this._render(visibleStartLineNumber, visibleEndLineNumber, this._getDecorations(ctx));\r\n const output = [];\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n const classNames = toRender[lineIndex];\r\n let lineOutput = '';\r\n for (let i = 0, len = classNames.length; i < len; i++) {\r\n lineOutput += '<div class=\"cmdr ' + classNames[i] + '\" style=\"\"></div>';\r\n }\r\n output[lineIndex] = lineOutput;\r\n }\r\n this._renderResult = output;\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n return this._renderResult[lineNumber - startLineNumber];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './minimap.css';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../../../base/browser/globalMouseMoveMonitor.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { RenderedLinesCollection } from '../../view/viewLayer.js';\r\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\r\nimport { MINIMAP_GUTTER_WIDTH, EditorLayoutInfoComputer } from '../../../common/config/editorOptions.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { RGBA8 } from '../../../common/core/rgba.js';\r\nimport { MinimapTokensColorTracker } from '../../../common/viewModel/minimapTokensColorTracker.js';\r\nimport { ViewModelDecoration } from '../../../common/viewModel/viewModel.js';\r\nimport { minimapSelection, scrollbarShadow, minimapBackground, minimapSliderBackground, minimapSliderHoverBackground, minimapSliderActiveBackground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport { Selection } from '../../../common/core/selection.js';\r\nimport { EventType, Gesture } from '../../../../base/browser/touch.js';\r\nimport { MinimapCharRendererFactory } from './minimapCharRendererFactory.js';\r\nimport { MinimapPosition } from '../../../common/model.js';\r\nimport { once } from '../../../../base/common/functional.js';\r\n/**\r\n * The orthogonal distance to the slider at which dragging \"resets\". This implements \"snapping\"\r\n */\r\nconst MOUSE_DRAG_RESET_DISTANCE = 140;\r\nconst GUTTER_DECORATION_WIDTH = 2;\r\nclass MinimapOptions {\r\n constructor(configuration, theme, tokensColorTracker) {\r\n const options = configuration.options;\r\n const pixelRatio = options.get(115 /* pixelRatio */);\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const minimapLayout = layoutInfo.minimap;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const minimapOpts = options.get(56 /* minimap */);\r\n this.renderMinimap = minimapLayout.renderMinimap;\r\n this.size = minimapOpts.size;\r\n this.minimapHeightIsEditorHeight = minimapLayout.minimapHeightIsEditorHeight;\r\n this.scrollBeyondLastLine = options.get(86 /* scrollBeyondLastLine */);\r\n this.showSlider = minimapOpts.showSlider;\r\n this.pixelRatio = pixelRatio;\r\n this.typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n this.lineHeight = options.get(51 /* lineHeight */);\r\n this.minimapLeft = minimapLayout.minimapLeft;\r\n this.minimapWidth = minimapLayout.minimapWidth;\r\n this.minimapHeight = layoutInfo.height;\r\n this.canvasInnerWidth = minimapLayout.minimapCanvasInnerWidth;\r\n this.canvasInnerHeight = minimapLayout.minimapCanvasInnerHeight;\r\n this.canvasOuterWidth = minimapLayout.minimapCanvasOuterWidth;\r\n this.canvasOuterHeight = minimapLayout.minimapCanvasOuterHeight;\r\n this.isSampling = minimapLayout.minimapIsSampling;\r\n this.editorHeight = layoutInfo.height;\r\n this.fontScale = minimapLayout.minimapScale;\r\n this.minimapLineHeight = minimapLayout.minimapLineHeight;\r\n this.minimapCharWidth = 1 /* BASE_CHAR_WIDTH */ * this.fontScale;\r\n this.charRenderer = once(() => MinimapCharRendererFactory.create(this.fontScale, fontInfo.fontFamily));\r\n this.backgroundColor = MinimapOptions._getMinimapBackground(theme, tokensColorTracker);\r\n }\r\n static _getMinimapBackground(theme, tokensColorTracker) {\r\n const themeColor = theme.getColor(minimapBackground);\r\n if (themeColor) {\r\n return new RGBA8(themeColor.rgba.r, themeColor.rgba.g, themeColor.rgba.b, themeColor.rgba.a);\r\n }\r\n return tokensColorTracker.getColor(2 /* DefaultBackground */);\r\n }\r\n equals(other) {\r\n return (this.renderMinimap === other.renderMinimap\r\n && this.size === other.size\r\n && this.minimapHeightIsEditorHeight === other.minimapHeightIsEditorHeight\r\n && this.scrollBeyondLastLine === other.scrollBeyondLastLine\r\n && this.showSlider === other.showSlider\r\n && this.pixelRatio === other.pixelRatio\r\n && this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\r\n && this.lineHeight === other.lineHeight\r\n && this.minimapLeft === other.minimapLeft\r\n && this.minimapWidth === other.minimapWidth\r\n && this.minimapHeight === other.minimapHeight\r\n && this.canvasInnerWidth === other.canvasInnerWidth\r\n && this.canvasInnerHeight === other.canvasInnerHeight\r\n && this.canvasOuterWidth === other.canvasOuterWidth\r\n && this.canvasOuterHeight === other.canvasOuterHeight\r\n && this.isSampling === other.isSampling\r\n && this.editorHeight === other.editorHeight\r\n && this.fontScale === other.fontScale\r\n && this.minimapLineHeight === other.minimapLineHeight\r\n && this.minimapCharWidth === other.minimapCharWidth\r\n && this.backgroundColor && this.backgroundColor.equals(other.backgroundColor));\r\n }\r\n}\r\nclass MinimapLayout {\r\n constructor(scrollTop, scrollHeight, sliderNeeded, computedSliderRatio, sliderTop, sliderHeight, startLineNumber, endLineNumber) {\r\n this.scrollTop = scrollTop;\r\n this.scrollHeight = scrollHeight;\r\n this.sliderNeeded = sliderNeeded;\r\n this._computedSliderRatio = computedSliderRatio;\r\n this.sliderTop = sliderTop;\r\n this.sliderHeight = sliderHeight;\r\n this.startLineNumber = startLineNumber;\r\n this.endLineNumber = endLineNumber;\r\n }\r\n /**\r\n * Compute a desired `scrollPosition` such that the slider moves by `delta`.\r\n */\r\n getDesiredScrollTopFromDelta(delta) {\r\n const desiredSliderPosition = this.sliderTop + delta;\r\n return Math.round(desiredSliderPosition / this._computedSliderRatio);\r\n }\r\n getDesiredScrollTopFromTouchLocation(pageY) {\r\n return Math.round((pageY - this.sliderHeight / 2) / this._computedSliderRatio);\r\n }\r\n static create(options, viewportStartLineNumber, viewportEndLineNumber, viewportHeight, viewportContainsWhitespaceGaps, lineCount, realLineCount, scrollTop, scrollHeight, previousLayout) {\r\n const pixelRatio = options.pixelRatio;\r\n const minimapLineHeight = options.minimapLineHeight;\r\n const minimapLinesFitting = Math.floor(options.canvasInnerHeight / minimapLineHeight);\r\n const lineHeight = options.lineHeight;\r\n if (options.minimapHeightIsEditorHeight) {\r\n const logicalScrollHeight = (realLineCount * options.lineHeight\r\n + (options.scrollBeyondLastLine ? viewportHeight - options.lineHeight : 0));\r\n const sliderHeight = Math.max(1, Math.floor(viewportHeight * viewportHeight / logicalScrollHeight));\r\n const maxMinimapSliderTop = Math.max(0, options.minimapHeight - sliderHeight);\r\n // The slider can move from 0 to `maxMinimapSliderTop`\r\n // in the same way `scrollTop` can move from 0 to `scrollHeight` - `viewportHeight`.\r\n const computedSliderRatio = (maxMinimapSliderTop) / (scrollHeight - viewportHeight);\r\n const sliderTop = (scrollTop * computedSliderRatio);\r\n const sliderNeeded = (maxMinimapSliderTop > 0);\r\n const maxLinesFitting = Math.floor(options.canvasInnerHeight / options.minimapLineHeight);\r\n return new MinimapLayout(scrollTop, scrollHeight, sliderNeeded, computedSliderRatio, sliderTop, sliderHeight, 1, Math.min(lineCount, maxLinesFitting));\r\n }\r\n // The visible line count in a viewport can change due to a number of reasons:\r\n // a) with the same viewport width, different scroll positions can result in partial lines being visible:\r\n // e.g. for a line height of 20, and a viewport height of 600\r\n // * scrollTop = 0 => visible lines are [1, 30]\r\n // * scrollTop = 10 => visible lines are [1, 31] (with lines 1 and 31 partially visible)\r\n // * scrollTop = 20 => visible lines are [2, 31]\r\n // b) whitespace gaps might make their way in the viewport (which results in a decrease in the visible line count)\r\n // c) we could be in the scroll beyond last line case (which also results in a decrease in the visible line count, down to possibly only one line being visible)\r\n // We must first establish a desirable slider height.\r\n let sliderHeight;\r\n if (viewportContainsWhitespaceGaps && viewportEndLineNumber !== lineCount) {\r\n // case b) from above: there are whitespace gaps in the viewport.\r\n // In this case, the height of the slider directly reflects the visible line count.\r\n const viewportLineCount = viewportEndLineNumber - viewportStartLineNumber + 1;\r\n sliderHeight = Math.floor(viewportLineCount * minimapLineHeight / pixelRatio);\r\n }\r\n else {\r\n // The slider has a stable height\r\n const expectedViewportLineCount = viewportHeight / lineHeight;\r\n sliderHeight = Math.floor(expectedViewportLineCount * minimapLineHeight / pixelRatio);\r\n }\r\n let maxMinimapSliderTop;\r\n if (options.scrollBeyondLastLine) {\r\n // The minimap slider, when dragged all the way down, will contain the last line at its top\r\n maxMinimapSliderTop = (lineCount - 1) * minimapLineHeight / pixelRatio;\r\n }\r\n else {\r\n // The minimap slider, when dragged all the way down, will contain the last line at its bottom\r\n maxMinimapSliderTop = Math.max(0, lineCount * minimapLineHeight / pixelRatio - sliderHeight);\r\n }\r\n maxMinimapSliderTop = Math.min(options.minimapHeight - sliderHeight, maxMinimapSliderTop);\r\n // The slider can move from 0 to `maxMinimapSliderTop`\r\n // in the same way `scrollTop` can move from 0 to `scrollHeight` - `viewportHeight`.\r\n const computedSliderRatio = (maxMinimapSliderTop) / (scrollHeight - viewportHeight);\r\n const sliderTop = (scrollTop * computedSliderRatio);\r\n let extraLinesAtTheBottom = 0;\r\n if (options.scrollBeyondLastLine) {\r\n const expectedViewportLineCount = viewportHeight / lineHeight;\r\n extraLinesAtTheBottom = expectedViewportLineCount - 1;\r\n }\r\n if (minimapLinesFitting >= lineCount + extraLinesAtTheBottom) {\r\n // All lines fit in the minimap\r\n const startLineNumber = 1;\r\n const endLineNumber = lineCount;\r\n const sliderNeeded = (maxMinimapSliderTop > 0);\r\n return new MinimapLayout(scrollTop, scrollHeight, sliderNeeded, computedSliderRatio, sliderTop, sliderHeight, startLineNumber, endLineNumber);\r\n }\r\n else {\r\n let startLineNumber = Math.max(1, Math.floor(viewportStartLineNumber - sliderTop * pixelRatio / minimapLineHeight));\r\n // Avoid flickering caused by a partial viewport start line\r\n // by being consistent w.r.t. the previous layout decision\r\n if (previousLayout && previousLayout.scrollHeight === scrollHeight) {\r\n if (previousLayout.scrollTop > scrollTop) {\r\n // Scrolling up => never increase `startLineNumber`\r\n startLineNumber = Math.min(startLineNumber, previousLayout.startLineNumber);\r\n }\r\n if (previousLayout.scrollTop < scrollTop) {\r\n // Scrolling down => never decrease `startLineNumber`\r\n startLineNumber = Math.max(startLineNumber, previousLayout.startLineNumber);\r\n }\r\n }\r\n const endLineNumber = Math.min(lineCount, startLineNumber + minimapLinesFitting - 1);\r\n return new MinimapLayout(scrollTop, scrollHeight, true, computedSliderRatio, sliderTop, sliderHeight, startLineNumber, endLineNumber);\r\n }\r\n }\r\n}\r\nclass MinimapLine {\r\n constructor(dy) {\r\n this.dy = dy;\r\n }\r\n onContentChanged() {\r\n this.dy = -1;\r\n }\r\n onTokensChanged() {\r\n this.dy = -1;\r\n }\r\n}\r\nMinimapLine.INVALID = new MinimapLine(-1);\r\nclass RenderData {\r\n constructor(renderedLayout, imageData, lines) {\r\n this.renderedLayout = renderedLayout;\r\n this._imageData = imageData;\r\n this._renderedLines = new RenderedLinesCollection(() => MinimapLine.INVALID);\r\n this._renderedLines._set(renderedLayout.startLineNumber, lines);\r\n }\r\n /**\r\n * Check if the current RenderData matches accurately the new desired layout and no painting is needed.\r\n */\r\n linesEquals(layout) {\r\n if (!this.scrollEquals(layout)) {\r\n return false;\r\n }\r\n const tmp = this._renderedLines._get();\r\n const lines = tmp.lines;\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n if (lines[i].dy === -1) {\r\n // This line is invalid\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Check if the current RenderData matches the new layout's scroll position\r\n */\r\n scrollEquals(layout) {\r\n return this.renderedLayout.startLineNumber === layout.startLineNumber\r\n && this.renderedLayout.endLineNumber === layout.endLineNumber;\r\n }\r\n _get() {\r\n const tmp = this._renderedLines._get();\r\n return {\r\n imageData: this._imageData,\r\n rendLineNumberStart: tmp.rendLineNumberStart,\r\n lines: tmp.lines\r\n };\r\n }\r\n onLinesChanged(changeFromLineNumber, changeToLineNumber) {\r\n return this._renderedLines.onLinesChanged(changeFromLineNumber, changeToLineNumber);\r\n }\r\n onLinesDeleted(deleteFromLineNumber, deleteToLineNumber) {\r\n this._renderedLines.onLinesDeleted(deleteFromLineNumber, deleteToLineNumber);\r\n }\r\n onLinesInserted(insertFromLineNumber, insertToLineNumber) {\r\n this._renderedLines.onLinesInserted(insertFromLineNumber, insertToLineNumber);\r\n }\r\n onTokensChanged(ranges) {\r\n return this._renderedLines.onTokensChanged(ranges);\r\n }\r\n}\r\n/**\r\n * Some sort of double buffering.\r\n *\r\n * Keeps two buffers around that will be rotated for painting.\r\n * Always gives a buffer that is filled with the background color.\r\n */\r\nclass MinimapBuffers {\r\n constructor(ctx, WIDTH, HEIGHT, background) {\r\n this._backgroundFillData = MinimapBuffers._createBackgroundFillData(WIDTH, HEIGHT, background);\r\n this._buffers = [\r\n ctx.createImageData(WIDTH, HEIGHT),\r\n ctx.createImageData(WIDTH, HEIGHT)\r\n ];\r\n this._lastUsedBuffer = 0;\r\n }\r\n getBuffer() {\r\n // rotate buffers\r\n this._lastUsedBuffer = 1 - this._lastUsedBuffer;\r\n const result = this._buffers[this._lastUsedBuffer];\r\n // fill with background color\r\n result.data.set(this._backgroundFillData);\r\n return result;\r\n }\r\n static _createBackgroundFillData(WIDTH, HEIGHT, background) {\r\n const backgroundR = background.r;\r\n const backgroundG = background.g;\r\n const backgroundB = background.b;\r\n const result = new Uint8ClampedArray(WIDTH * HEIGHT * 4);\r\n let offset = 0;\r\n for (let i = 0; i < HEIGHT; i++) {\r\n for (let j = 0; j < WIDTH; j++) {\r\n result[offset] = backgroundR;\r\n result[offset + 1] = backgroundG;\r\n result[offset + 2] = backgroundB;\r\n result[offset + 3] = 255;\r\n offset += 4;\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\nclass MinimapSamplingState {\r\n constructor(samplingRatio, minimapLines) {\r\n this.samplingRatio = samplingRatio;\r\n this.minimapLines = minimapLines;\r\n }\r\n static compute(options, viewLineCount, oldSamplingState) {\r\n if (options.renderMinimap === 0 /* None */ || !options.isSampling) {\r\n return [null, []];\r\n }\r\n // ratio is intentionally not part of the layout to avoid the layout changing all the time\r\n // so we need to recompute it again...\r\n const pixelRatio = options.pixelRatio;\r\n const lineHeight = options.lineHeight;\r\n const scrollBeyondLastLine = options.scrollBeyondLastLine;\r\n const { minimapLineCount } = EditorLayoutInfoComputer.computeContainedMinimapLineCount({\r\n viewLineCount: viewLineCount,\r\n scrollBeyondLastLine: scrollBeyondLastLine,\r\n height: options.editorHeight,\r\n lineHeight: lineHeight,\r\n pixelRatio: pixelRatio\r\n });\r\n const ratio = viewLineCount / minimapLineCount;\r\n const halfRatio = ratio / 2;\r\n if (!oldSamplingState || oldSamplingState.minimapLines.length === 0) {\r\n let result = [];\r\n result[0] = 1;\r\n if (minimapLineCount > 1) {\r\n for (let i = 0, lastIndex = minimapLineCount - 1; i < lastIndex; i++) {\r\n result[i] = Math.round(i * ratio + halfRatio);\r\n }\r\n result[minimapLineCount - 1] = viewLineCount;\r\n }\r\n return [new MinimapSamplingState(ratio, result), []];\r\n }\r\n const oldMinimapLines = oldSamplingState.minimapLines;\r\n const oldLength = oldMinimapLines.length;\r\n let result = [];\r\n let oldIndex = 0;\r\n let oldDeltaLineCount = 0;\r\n let minViewLineNumber = 1;\r\n const MAX_EVENT_COUNT = 10; // generate at most 10 events, if there are more than 10 changes, just flush all previous data\r\n let events = [];\r\n let lastEvent = null;\r\n for (let i = 0; i < minimapLineCount; i++) {\r\n const fromViewLineNumber = Math.max(minViewLineNumber, Math.round(i * ratio));\r\n const toViewLineNumber = Math.max(fromViewLineNumber, Math.round((i + 1) * ratio));\r\n while (oldIndex < oldLength && oldMinimapLines[oldIndex] < fromViewLineNumber) {\r\n if (events.length < MAX_EVENT_COUNT) {\r\n const oldMinimapLineNumber = oldIndex + 1 + oldDeltaLineCount;\r\n if (lastEvent && lastEvent.type === 'deleted' && lastEvent._oldIndex === oldIndex - 1) {\r\n lastEvent.deleteToLineNumber++;\r\n }\r\n else {\r\n lastEvent = { type: 'deleted', _oldIndex: oldIndex, deleteFromLineNumber: oldMinimapLineNumber, deleteToLineNumber: oldMinimapLineNumber };\r\n events.push(lastEvent);\r\n }\r\n oldDeltaLineCount--;\r\n }\r\n oldIndex++;\r\n }\r\n let selectedViewLineNumber;\r\n if (oldIndex < oldLength && oldMinimapLines[oldIndex] <= toViewLineNumber) {\r\n // reuse the old sampled line\r\n selectedViewLineNumber = oldMinimapLines[oldIndex];\r\n oldIndex++;\r\n }\r\n else {\r\n if (i === 0) {\r\n selectedViewLineNumber = 1;\r\n }\r\n else if (i + 1 === minimapLineCount) {\r\n selectedViewLineNumber = viewLineCount;\r\n }\r\n else {\r\n selectedViewLineNumber = Math.round(i * ratio + halfRatio);\r\n }\r\n if (events.length < MAX_EVENT_COUNT) {\r\n const oldMinimapLineNumber = oldIndex + 1 + oldDeltaLineCount;\r\n if (lastEvent && lastEvent.type === 'inserted' && lastEvent._i === i - 1) {\r\n lastEvent.insertToLineNumber++;\r\n }\r\n else {\r\n lastEvent = { type: 'inserted', _i: i, insertFromLineNumber: oldMinimapLineNumber, insertToLineNumber: oldMinimapLineNumber };\r\n events.push(lastEvent);\r\n }\r\n oldDeltaLineCount++;\r\n }\r\n }\r\n result[i] = selectedViewLineNumber;\r\n minViewLineNumber = selectedViewLineNumber;\r\n }\r\n if (events.length < MAX_EVENT_COUNT) {\r\n while (oldIndex < oldLength) {\r\n const oldMinimapLineNumber = oldIndex + 1 + oldDeltaLineCount;\r\n if (lastEvent && lastEvent.type === 'deleted' && lastEvent._oldIndex === oldIndex - 1) {\r\n lastEvent.deleteToLineNumber++;\r\n }\r\n else {\r\n lastEvent = { type: 'deleted', _oldIndex: oldIndex, deleteFromLineNumber: oldMinimapLineNumber, deleteToLineNumber: oldMinimapLineNumber };\r\n events.push(lastEvent);\r\n }\r\n oldDeltaLineCount--;\r\n oldIndex++;\r\n }\r\n }\r\n else {\r\n // too many events, just give up\r\n events = [{ type: 'flush' }];\r\n }\r\n return [new MinimapSamplingState(ratio, result), events];\r\n }\r\n modelLineToMinimapLine(lineNumber) {\r\n return Math.min(this.minimapLines.length, Math.max(1, Math.round(lineNumber / this.samplingRatio)));\r\n }\r\n /**\r\n * Will return null if the model line ranges are not intersecting with a sampled model line.\r\n */\r\n modelLineRangeToMinimapLineRange(fromLineNumber, toLineNumber) {\r\n let fromLineIndex = this.modelLineToMinimapLine(fromLineNumber) - 1;\r\n while (fromLineIndex > 0 && this.minimapLines[fromLineIndex - 1] >= fromLineNumber) {\r\n fromLineIndex--;\r\n }\r\n let toLineIndex = this.modelLineToMinimapLine(toLineNumber) - 1;\r\n while (toLineIndex + 1 < this.minimapLines.length && this.minimapLines[toLineIndex + 1] <= toLineNumber) {\r\n toLineIndex++;\r\n }\r\n if (fromLineIndex === toLineIndex) {\r\n const sampledLineNumber = this.minimapLines[fromLineIndex];\r\n if (sampledLineNumber < fromLineNumber || sampledLineNumber > toLineNumber) {\r\n // This line is not part of the sampled lines ==> nothing to do\r\n return null;\r\n }\r\n }\r\n return [fromLineIndex + 1, toLineIndex + 1];\r\n }\r\n /**\r\n * Will always return a range, even if it is not intersecting with a sampled model line.\r\n */\r\n decorationLineRangeToMinimapLineRange(startLineNumber, endLineNumber) {\r\n let minimapLineStart = this.modelLineToMinimapLine(startLineNumber);\r\n let minimapLineEnd = this.modelLineToMinimapLine(endLineNumber);\r\n if (startLineNumber !== endLineNumber && minimapLineEnd === minimapLineStart) {\r\n if (minimapLineEnd === this.minimapLines.length) {\r\n if (minimapLineStart > 1) {\r\n minimapLineStart--;\r\n }\r\n }\r\n else {\r\n minimapLineEnd++;\r\n }\r\n }\r\n return [minimapLineStart, minimapLineEnd];\r\n }\r\n onLinesDeleted(e) {\r\n // have the mapping be sticky\r\n const deletedLineCount = e.toLineNumber - e.fromLineNumber + 1;\r\n let changeStartIndex = this.minimapLines.length;\r\n let changeEndIndex = 0;\r\n for (let i = this.minimapLines.length - 1; i >= 0; i--) {\r\n if (this.minimapLines[i] < e.fromLineNumber) {\r\n break;\r\n }\r\n if (this.minimapLines[i] <= e.toLineNumber) {\r\n // this line got deleted => move to previous available\r\n this.minimapLines[i] = Math.max(1, e.fromLineNumber - 1);\r\n changeStartIndex = Math.min(changeStartIndex, i);\r\n changeEndIndex = Math.max(changeEndIndex, i);\r\n }\r\n else {\r\n this.minimapLines[i] -= deletedLineCount;\r\n }\r\n }\r\n return [changeStartIndex, changeEndIndex];\r\n }\r\n onLinesInserted(e) {\r\n // have the mapping be sticky\r\n const insertedLineCount = e.toLineNumber - e.fromLineNumber + 1;\r\n for (let i = this.minimapLines.length - 1; i >= 0; i--) {\r\n if (this.minimapLines[i] < e.fromLineNumber) {\r\n break;\r\n }\r\n this.minimapLines[i] += insertedLineCount;\r\n }\r\n }\r\n}\r\nexport class Minimap extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n this.tokensColorTracker = MinimapTokensColorTracker.getInstance();\r\n this._selections = [];\r\n this._minimapSelections = null;\r\n this.options = new MinimapOptions(this._context.configuration, this._context.theme, this.tokensColorTracker);\r\n const [samplingState,] = MinimapSamplingState.compute(this.options, this._context.model.getLineCount(), null);\r\n this._samplingState = samplingState;\r\n this._shouldCheckSampling = false;\r\n this._actual = new InnerMinimap(context.theme, this);\r\n }\r\n dispose() {\r\n this._actual.dispose();\r\n super.dispose();\r\n }\r\n getDomNode() {\r\n return this._actual.getDomNode();\r\n }\r\n _onOptionsMaybeChanged() {\r\n const opts = new MinimapOptions(this._context.configuration, this._context.theme, this.tokensColorTracker);\r\n if (this.options.equals(opts)) {\r\n return false;\r\n }\r\n this.options = opts;\r\n this._recreateLineSampling();\r\n this._actual.onDidChangeOptions();\r\n return true;\r\n }\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n return this._onOptionsMaybeChanged();\r\n }\r\n onCursorStateChanged(e) {\r\n this._selections = e.selections;\r\n this._minimapSelections = null;\r\n return this._actual.onSelectionChanged();\r\n }\r\n onDecorationsChanged(e) {\r\n if (e.affectsMinimap) {\r\n return this._actual.onDecorationsChanged();\r\n }\r\n return false;\r\n }\r\n onFlushed(e) {\r\n if (this._samplingState) {\r\n this._shouldCheckSampling = true;\r\n }\r\n return this._actual.onFlushed();\r\n }\r\n onLinesChanged(e) {\r\n if (this._samplingState) {\r\n const minimapLineRange = this._samplingState.modelLineRangeToMinimapLineRange(e.fromLineNumber, e.toLineNumber);\r\n if (minimapLineRange) {\r\n return this._actual.onLinesChanged(minimapLineRange[0], minimapLineRange[1]);\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return this._actual.onLinesChanged(e.fromLineNumber, e.toLineNumber);\r\n }\r\n }\r\n onLinesDeleted(e) {\r\n if (this._samplingState) {\r\n const [changeStartIndex, changeEndIndex] = this._samplingState.onLinesDeleted(e);\r\n if (changeStartIndex <= changeEndIndex) {\r\n this._actual.onLinesChanged(changeStartIndex + 1, changeEndIndex + 1);\r\n }\r\n this._shouldCheckSampling = true;\r\n return true;\r\n }\r\n else {\r\n return this._actual.onLinesDeleted(e.fromLineNumber, e.toLineNumber);\r\n }\r\n }\r\n onLinesInserted(e) {\r\n if (this._samplingState) {\r\n this._samplingState.onLinesInserted(e);\r\n this._shouldCheckSampling = true;\r\n return true;\r\n }\r\n else {\r\n return this._actual.onLinesInserted(e.fromLineNumber, e.toLineNumber);\r\n }\r\n }\r\n onScrollChanged(e) {\r\n return this._actual.onScrollChanged();\r\n }\r\n onThemeChanged(e) {\r\n this._context.model.invalidateMinimapColorCache();\r\n this._actual.onThemeChanged();\r\n this._onOptionsMaybeChanged();\r\n return true;\r\n }\r\n onTokensChanged(e) {\r\n if (this._samplingState) {\r\n let ranges = [];\r\n for (const range of e.ranges) {\r\n const minimapLineRange = this._samplingState.modelLineRangeToMinimapLineRange(range.fromLineNumber, range.toLineNumber);\r\n if (minimapLineRange) {\r\n ranges.push({ fromLineNumber: minimapLineRange[0], toLineNumber: minimapLineRange[1] });\r\n }\r\n }\r\n if (ranges.length) {\r\n return this._actual.onTokensChanged(ranges);\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return this._actual.onTokensChanged(e.ranges);\r\n }\r\n }\r\n onTokensColorsChanged(e) {\r\n return this._actual.onTokensColorsChanged();\r\n }\r\n onZonesChanged(e) {\r\n return this._actual.onZonesChanged();\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n if (this._shouldCheckSampling) {\r\n this._shouldCheckSampling = false;\r\n this._recreateLineSampling();\r\n }\r\n }\r\n render(ctx) {\r\n let viewportStartLineNumber = ctx.visibleRange.startLineNumber;\r\n let viewportEndLineNumber = ctx.visibleRange.endLineNumber;\r\n if (this._samplingState) {\r\n viewportStartLineNumber = this._samplingState.modelLineToMinimapLine(viewportStartLineNumber);\r\n viewportEndLineNumber = this._samplingState.modelLineToMinimapLine(viewportEndLineNumber);\r\n }\r\n const minimapCtx = {\r\n viewportContainsWhitespaceGaps: (ctx.viewportData.whitespaceViewportData.length > 0),\r\n scrollWidth: ctx.scrollWidth,\r\n scrollHeight: ctx.scrollHeight,\r\n viewportStartLineNumber: viewportStartLineNumber,\r\n viewportEndLineNumber: viewportEndLineNumber,\r\n scrollTop: ctx.scrollTop,\r\n scrollLeft: ctx.scrollLeft,\r\n viewportWidth: ctx.viewportWidth,\r\n viewportHeight: ctx.viewportHeight,\r\n };\r\n this._actual.render(minimapCtx);\r\n }\r\n //#region IMinimapModel\r\n _recreateLineSampling() {\r\n this._minimapSelections = null;\r\n const wasSampling = Boolean(this._samplingState);\r\n const [samplingState, events] = MinimapSamplingState.compute(this.options, this._context.model.getLineCount(), this._samplingState);\r\n this._samplingState = samplingState;\r\n if (wasSampling && this._samplingState) {\r\n // was sampling, is sampling\r\n for (const event of events) {\r\n switch (event.type) {\r\n case 'deleted':\r\n this._actual.onLinesDeleted(event.deleteFromLineNumber, event.deleteToLineNumber);\r\n break;\r\n case 'inserted':\r\n this._actual.onLinesInserted(event.insertFromLineNumber, event.insertToLineNumber);\r\n break;\r\n case 'flush':\r\n this._actual.onFlushed();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n getLineCount() {\r\n if (this._samplingState) {\r\n return this._samplingState.minimapLines.length;\r\n }\r\n return this._context.model.getLineCount();\r\n }\r\n getRealLineCount() {\r\n return this._context.model.getLineCount();\r\n }\r\n getLineContent(lineNumber) {\r\n if (this._samplingState) {\r\n return this._context.model.getLineContent(this._samplingState.minimapLines[lineNumber - 1]);\r\n }\r\n return this._context.model.getLineContent(lineNumber);\r\n }\r\n getMinimapLinesRenderingData(startLineNumber, endLineNumber, needed) {\r\n if (this._samplingState) {\r\n let result = [];\r\n for (let lineIndex = 0, lineCount = endLineNumber - startLineNumber + 1; lineIndex < lineCount; lineIndex++) {\r\n if (needed[lineIndex]) {\r\n result[lineIndex] = this._context.model.getViewLineData(this._samplingState.minimapLines[startLineNumber + lineIndex - 1]);\r\n }\r\n else {\r\n result[lineIndex] = null;\r\n }\r\n }\r\n return result;\r\n }\r\n return this._context.model.getMinimapLinesRenderingData(startLineNumber, endLineNumber, needed).data;\r\n }\r\n getSelections() {\r\n if (this._minimapSelections === null) {\r\n if (this._samplingState) {\r\n this._minimapSelections = [];\r\n for (const selection of this._selections) {\r\n const [minimapLineStart, minimapLineEnd] = this._samplingState.decorationLineRangeToMinimapLineRange(selection.startLineNumber, selection.endLineNumber);\r\n this._minimapSelections.push(new Selection(minimapLineStart, selection.startColumn, minimapLineEnd, selection.endColumn));\r\n }\r\n }\r\n else {\r\n this._minimapSelections = this._selections;\r\n }\r\n }\r\n return this._minimapSelections;\r\n }\r\n getMinimapDecorationsInViewport(startLineNumber, endLineNumber) {\r\n let visibleRange;\r\n if (this._samplingState) {\r\n const modelStartLineNumber = this._samplingState.minimapLines[startLineNumber - 1];\r\n const modelEndLineNumber = this._samplingState.minimapLines[endLineNumber - 1];\r\n visibleRange = new Range(modelStartLineNumber, 1, modelEndLineNumber, this._context.model.getLineMaxColumn(modelEndLineNumber));\r\n }\r\n else {\r\n visibleRange = new Range(startLineNumber, 1, endLineNumber, this._context.model.getLineMaxColumn(endLineNumber));\r\n }\r\n const decorations = this._context.model.getDecorationsInViewport(visibleRange);\r\n if (this._samplingState) {\r\n let result = [];\r\n for (const decoration of decorations) {\r\n if (!decoration.options.minimap) {\r\n continue;\r\n }\r\n const range = decoration.range;\r\n const minimapStartLineNumber = this._samplingState.modelLineToMinimapLine(range.startLineNumber);\r\n const minimapEndLineNumber = this._samplingState.modelLineToMinimapLine(range.endLineNumber);\r\n result.push(new ViewModelDecoration(new Range(minimapStartLineNumber, range.startColumn, minimapEndLineNumber, range.endColumn), decoration.options));\r\n }\r\n return result;\r\n }\r\n return decorations;\r\n }\r\n getOptions() {\r\n return this._context.model.getTextModelOptions();\r\n }\r\n revealLineNumber(lineNumber) {\r\n if (this._samplingState) {\r\n lineNumber = this._samplingState.minimapLines[lineNumber - 1];\r\n }\r\n this._context.model.revealRange('mouse', false, new Range(lineNumber, 1, lineNumber, 1), 1 /* Center */, 0 /* Smooth */);\r\n }\r\n setScrollTop(scrollTop) {\r\n this._context.model.setScrollPosition({\r\n scrollTop: scrollTop\r\n }, 1 /* Immediate */);\r\n }\r\n}\r\nclass InnerMinimap extends Disposable {\r\n constructor(theme, model) {\r\n super();\r\n this._renderDecorations = false;\r\n this._gestureInProgress = false;\r\n this._theme = theme;\r\n this._model = model;\r\n this._lastRenderData = null;\r\n this._buffers = null;\r\n this._selectionColor = this._theme.getColor(minimapSelection);\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n PartFingerprints.write(this._domNode, 8 /* Minimap */);\r\n this._domNode.setClassName(this._getMinimapDomNodeClassName());\r\n this._domNode.setPosition('absolute');\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._shadow = createFastDomNode(document.createElement('div'));\r\n this._shadow.setClassName('minimap-shadow-hidden');\r\n this._domNode.appendChild(this._shadow);\r\n this._canvas = createFastDomNode(document.createElement('canvas'));\r\n this._canvas.setPosition('absolute');\r\n this._canvas.setLeft(0);\r\n this._domNode.appendChild(this._canvas);\r\n this._decorationsCanvas = createFastDomNode(document.createElement('canvas'));\r\n this._decorationsCanvas.setPosition('absolute');\r\n this._decorationsCanvas.setClassName('minimap-decorations-layer');\r\n this._decorationsCanvas.setLeft(0);\r\n this._domNode.appendChild(this._decorationsCanvas);\r\n this._slider = createFastDomNode(document.createElement('div'));\r\n this._slider.setPosition('absolute');\r\n this._slider.setClassName('minimap-slider');\r\n this._slider.setLayerHinting(true);\r\n this._slider.setContain('strict');\r\n this._domNode.appendChild(this._slider);\r\n this._sliderHorizontal = createFastDomNode(document.createElement('div'));\r\n this._sliderHorizontal.setPosition('absolute');\r\n this._sliderHorizontal.setClassName('minimap-slider-horizontal');\r\n this._slider.appendChild(this._sliderHorizontal);\r\n this._applyLayout();\r\n this._mouseDownListener = dom.addStandardDisposableListener(this._domNode.domNode, 'mousedown', (e) => {\r\n e.preventDefault();\r\n const renderMinimap = this._model.options.renderMinimap;\r\n if (renderMinimap === 0 /* None */) {\r\n return;\r\n }\r\n if (!this._lastRenderData) {\r\n return;\r\n }\r\n if (this._model.options.size !== 'proportional') {\r\n if (e.leftButton && this._lastRenderData) {\r\n // pretend the click occured in the center of the slider\r\n const position = dom.getDomNodePagePosition(this._slider.domNode);\r\n const initialPosY = position.top + position.height / 2;\r\n this._startSliderDragging(e.buttons, e.posx, initialPosY, e.posy, this._lastRenderData.renderedLayout);\r\n }\r\n return;\r\n }\r\n const minimapLineHeight = this._model.options.minimapLineHeight;\r\n const internalOffsetY = (this._model.options.canvasInnerHeight / this._model.options.canvasOuterHeight) * e.browserEvent.offsetY;\r\n const lineIndex = Math.floor(internalOffsetY / minimapLineHeight);\r\n let lineNumber = lineIndex + this._lastRenderData.renderedLayout.startLineNumber;\r\n lineNumber = Math.min(lineNumber, this._model.getLineCount());\r\n this._model.revealLineNumber(lineNumber);\r\n });\r\n this._sliderMouseMoveMonitor = new GlobalMouseMoveMonitor();\r\n this._sliderMouseDownListener = dom.addStandardDisposableListener(this._slider.domNode, 'mousedown', (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.leftButton && this._lastRenderData) {\r\n this._startSliderDragging(e.buttons, e.posx, e.posy, e.posy, this._lastRenderData.renderedLayout);\r\n }\r\n });\r\n this._gestureDisposable = Gesture.addTarget(this._domNode.domNode);\r\n this._sliderTouchStartListener = dom.addDisposableListener(this._domNode.domNode, EventType.Start, (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this._lastRenderData) {\r\n this._slider.toggleClassName('active', true);\r\n this._gestureInProgress = true;\r\n this.scrollDueToTouchEvent(e);\r\n }\r\n }, { passive: false });\r\n this._sliderTouchMoveListener = dom.addDisposableListener(this._domNode.domNode, EventType.Change, (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (this._lastRenderData && this._gestureInProgress) {\r\n this.scrollDueToTouchEvent(e);\r\n }\r\n }, { passive: false });\r\n this._sliderTouchEndListener = dom.addStandardDisposableListener(this._domNode.domNode, EventType.End, (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._gestureInProgress = false;\r\n this._slider.toggleClassName('active', false);\r\n });\r\n }\r\n _startSliderDragging(initialButtons, initialPosX, initialPosY, posy, initialSliderState) {\r\n this._slider.toggleClassName('active', true);\r\n const handleMouseMove = (posy, posx) => {\r\n const mouseOrthogonalDelta = Math.abs(posx - initialPosX);\r\n if (platform.isWindows && mouseOrthogonalDelta > MOUSE_DRAG_RESET_DISTANCE) {\r\n // The mouse has wondered away from the scrollbar => reset dragging\r\n this._model.setScrollTop(initialSliderState.scrollTop);\r\n return;\r\n }\r\n const mouseDelta = posy - initialPosY;\r\n this._model.setScrollTop(initialSliderState.getDesiredScrollTopFromDelta(mouseDelta));\r\n };\r\n if (posy !== initialPosY) {\r\n handleMouseMove(posy, initialPosX);\r\n }\r\n this._sliderMouseMoveMonitor.startMonitoring(this._slider.domNode, initialButtons, standardMouseMoveMerger, (mouseMoveData) => handleMouseMove(mouseMoveData.posy, mouseMoveData.posx), () => {\r\n this._slider.toggleClassName('active', false);\r\n });\r\n }\r\n scrollDueToTouchEvent(touch) {\r\n const startY = this._domNode.domNode.getBoundingClientRect().top;\r\n const scrollTop = this._lastRenderData.renderedLayout.getDesiredScrollTopFromTouchLocation(touch.pageY - startY);\r\n this._model.setScrollTop(scrollTop);\r\n }\r\n dispose() {\r\n this._mouseDownListener.dispose();\r\n this._sliderMouseMoveMonitor.dispose();\r\n this._sliderMouseDownListener.dispose();\r\n this._gestureDisposable.dispose();\r\n this._sliderTouchStartListener.dispose();\r\n this._sliderTouchMoveListener.dispose();\r\n this._sliderTouchEndListener.dispose();\r\n super.dispose();\r\n }\r\n _getMinimapDomNodeClassName() {\r\n if (this._model.options.showSlider === 'always') {\r\n return 'minimap slider-always';\r\n }\r\n return 'minimap slider-mouseover';\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n _applyLayout() {\r\n this._domNode.setLeft(this._model.options.minimapLeft);\r\n this._domNode.setWidth(this._model.options.minimapWidth);\r\n this._domNode.setHeight(this._model.options.minimapHeight);\r\n this._shadow.setHeight(this._model.options.minimapHeight);\r\n this._canvas.setWidth(this._model.options.canvasOuterWidth);\r\n this._canvas.setHeight(this._model.options.canvasOuterHeight);\r\n this._canvas.domNode.width = this._model.options.canvasInnerWidth;\r\n this._canvas.domNode.height = this._model.options.canvasInnerHeight;\r\n this._decorationsCanvas.setWidth(this._model.options.canvasOuterWidth);\r\n this._decorationsCanvas.setHeight(this._model.options.canvasOuterHeight);\r\n this._decorationsCanvas.domNode.width = this._model.options.canvasInnerWidth;\r\n this._decorationsCanvas.domNode.height = this._model.options.canvasInnerHeight;\r\n this._slider.setWidth(this._model.options.minimapWidth);\r\n }\r\n _getBuffer() {\r\n if (!this._buffers) {\r\n if (this._model.options.canvasInnerWidth > 0 && this._model.options.canvasInnerHeight > 0) {\r\n this._buffers = new MinimapBuffers(this._canvas.domNode.getContext('2d'), this._model.options.canvasInnerWidth, this._model.options.canvasInnerHeight, this._model.options.backgroundColor);\r\n }\r\n }\r\n return this._buffers ? this._buffers.getBuffer() : null;\r\n }\r\n // ---- begin view event handlers\r\n onDidChangeOptions() {\r\n this._lastRenderData = null;\r\n this._buffers = null;\r\n this._applyLayout();\r\n this._domNode.setClassName(this._getMinimapDomNodeClassName());\r\n }\r\n onSelectionChanged() {\r\n this._renderDecorations = true;\r\n return true;\r\n }\r\n onDecorationsChanged() {\r\n this._renderDecorations = true;\r\n return true;\r\n }\r\n onFlushed() {\r\n this._lastRenderData = null;\r\n return true;\r\n }\r\n onLinesChanged(changeFromLineNumber, changeToLineNumber) {\r\n if (this._lastRenderData) {\r\n return this._lastRenderData.onLinesChanged(changeFromLineNumber, changeToLineNumber);\r\n }\r\n return false;\r\n }\r\n onLinesDeleted(deleteFromLineNumber, deleteToLineNumber) {\r\n if (this._lastRenderData) {\r\n this._lastRenderData.onLinesDeleted(deleteFromLineNumber, deleteToLineNumber);\r\n }\r\n return true;\r\n }\r\n onLinesInserted(insertFromLineNumber, insertToLineNumber) {\r\n if (this._lastRenderData) {\r\n this._lastRenderData.onLinesInserted(insertFromLineNumber, insertToLineNumber);\r\n }\r\n return true;\r\n }\r\n onScrollChanged() {\r\n this._renderDecorations = true;\r\n return true;\r\n }\r\n onThemeChanged() {\r\n this._selectionColor = this._theme.getColor(minimapSelection);\r\n this._renderDecorations = true;\r\n return true;\r\n }\r\n onTokensChanged(ranges) {\r\n if (this._lastRenderData) {\r\n return this._lastRenderData.onTokensChanged(ranges);\r\n }\r\n return false;\r\n }\r\n onTokensColorsChanged() {\r\n this._lastRenderData = null;\r\n this._buffers = null;\r\n return true;\r\n }\r\n onZonesChanged() {\r\n this._lastRenderData = null;\r\n return true;\r\n }\r\n // --- end event handlers\r\n render(renderingCtx) {\r\n const renderMinimap = this._model.options.renderMinimap;\r\n if (renderMinimap === 0 /* None */) {\r\n this._shadow.setClassName('minimap-shadow-hidden');\r\n this._sliderHorizontal.setWidth(0);\r\n this._sliderHorizontal.setHeight(0);\r\n return;\r\n }\r\n if (renderingCtx.scrollLeft + renderingCtx.viewportWidth >= renderingCtx.scrollWidth) {\r\n this._shadow.setClassName('minimap-shadow-hidden');\r\n }\r\n else {\r\n this._shadow.setClassName('minimap-shadow-visible');\r\n }\r\n const layout = MinimapLayout.create(this._model.options, renderingCtx.viewportStartLineNumber, renderingCtx.viewportEndLineNumber, renderingCtx.viewportHeight, renderingCtx.viewportContainsWhitespaceGaps, this._model.getLineCount(), this._model.getRealLineCount(), renderingCtx.scrollTop, renderingCtx.scrollHeight, this._lastRenderData ? this._lastRenderData.renderedLayout : null);\r\n this._slider.setDisplay(layout.sliderNeeded ? 'block' : 'none');\r\n this._slider.setTop(layout.sliderTop);\r\n this._slider.setHeight(layout.sliderHeight);\r\n // Compute horizontal slider coordinates\r\n const scrollLeftChars = renderingCtx.scrollLeft / this._model.options.typicalHalfwidthCharacterWidth;\r\n const horizontalSliderLeft = Math.min(this._model.options.minimapWidth, Math.round(scrollLeftChars * this._model.options.minimapCharWidth / this._model.options.pixelRatio));\r\n this._sliderHorizontal.setLeft(horizontalSliderLeft);\r\n this._sliderHorizontal.setWidth(this._model.options.minimapWidth - horizontalSliderLeft);\r\n this._sliderHorizontal.setTop(0);\r\n this._sliderHorizontal.setHeight(layout.sliderHeight);\r\n this.renderDecorations(layout);\r\n this._lastRenderData = this.renderLines(layout);\r\n }\r\n renderDecorations(layout) {\r\n if (this._renderDecorations) {\r\n this._renderDecorations = false;\r\n const selections = this._model.getSelections();\r\n const decorations = this._model.getMinimapDecorationsInViewport(layout.startLineNumber, layout.endLineNumber);\r\n const { canvasInnerWidth, canvasInnerHeight } = this._model.options;\r\n const lineHeight = this._model.options.minimapLineHeight;\r\n const characterWidth = this._model.options.minimapCharWidth;\r\n const tabSize = this._model.getOptions().tabSize;\r\n const canvasContext = this._decorationsCanvas.domNode.getContext('2d');\r\n canvasContext.clearRect(0, 0, canvasInnerWidth, canvasInnerHeight);\r\n const lineOffsetMap = new Map();\r\n for (let i = 0; i < selections.length; i++) {\r\n const selection = selections[i];\r\n for (let line = selection.startLineNumber; line <= selection.endLineNumber; line++) {\r\n this.renderDecorationOnLine(canvasContext, lineOffsetMap, selection, this._selectionColor, layout, line, lineHeight, lineHeight, tabSize, characterWidth);\r\n }\r\n }\r\n // Loop over decorations, ignoring those that don't have the minimap property set and rendering rectangles for each line the decoration spans\r\n for (let i = 0; i < decorations.length; i++) {\r\n const decoration = decorations[i];\r\n if (!decoration.options.minimap) {\r\n continue;\r\n }\r\n const decorationColor = decoration.options.minimap.getColor(this._theme);\r\n for (let line = decoration.range.startLineNumber; line <= decoration.range.endLineNumber; line++) {\r\n switch (decoration.options.minimap.position) {\r\n case MinimapPosition.Inline:\r\n this.renderDecorationOnLine(canvasContext, lineOffsetMap, decoration.range, decorationColor, layout, line, lineHeight, lineHeight, tabSize, characterWidth);\r\n continue;\r\n case MinimapPosition.Gutter:\r\n const y = (line - layout.startLineNumber) * lineHeight;\r\n const x = 2;\r\n this.renderDecoration(canvasContext, decorationColor, x, y, GUTTER_DECORATION_WIDTH, lineHeight);\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n renderDecorationOnLine(canvasContext, lineOffsetMap, decorationRange, decorationColor, layout, lineNumber, height, lineHeight, tabSize, charWidth) {\r\n const y = (lineNumber - layout.startLineNumber) * lineHeight;\r\n // Skip rendering the line if it's vertically outside our viewport\r\n if (y + height < 0 || y > this._model.options.canvasInnerHeight) {\r\n return;\r\n }\r\n // Cache line offset data so that it is only read once per line\r\n let lineIndexToXOffset = lineOffsetMap.get(lineNumber);\r\n const isFirstDecorationForLine = !lineIndexToXOffset;\r\n if (!lineIndexToXOffset) {\r\n const lineData = this._model.getLineContent(lineNumber);\r\n lineIndexToXOffset = [MINIMAP_GUTTER_WIDTH];\r\n for (let i = 1; i < lineData.length + 1; i++) {\r\n const charCode = lineData.charCodeAt(i - 1);\r\n const dx = charCode === 9 /* Tab */\r\n ? tabSize * charWidth\r\n : strings.isFullWidthCharacter(charCode)\r\n ? 2 * charWidth\r\n : charWidth;\r\n lineIndexToXOffset[i] = lineIndexToXOffset[i - 1] + dx;\r\n }\r\n lineOffsetMap.set(lineNumber, lineIndexToXOffset);\r\n }\r\n const { startColumn, endColumn, startLineNumber, endLineNumber } = decorationRange;\r\n const x = startLineNumber === lineNumber ? lineIndexToXOffset[startColumn - 1] : MINIMAP_GUTTER_WIDTH;\r\n const endColumnForLine = endLineNumber > lineNumber ? lineIndexToXOffset.length - 1 : endColumn - 1;\r\n if (endColumnForLine > 0) {\r\n // If the decoration starts at the last character of the column and spans over it, ensure it has a width\r\n const width = lineIndexToXOffset[endColumnForLine] - x || 2;\r\n this.renderDecoration(canvasContext, decorationColor, x, y, width, height);\r\n }\r\n if (isFirstDecorationForLine) {\r\n this.renderLineHighlight(canvasContext, decorationColor, y, height);\r\n }\r\n }\r\n renderLineHighlight(canvasContext, decorationColor, y, height) {\r\n canvasContext.fillStyle = decorationColor && decorationColor.transparent(0.5).toString() || '';\r\n canvasContext.fillRect(MINIMAP_GUTTER_WIDTH, y, canvasContext.canvas.width, height);\r\n }\r\n renderDecoration(canvasContext, decorationColor, x, y, width, height) {\r\n canvasContext.fillStyle = decorationColor && decorationColor.toString() || '';\r\n canvasContext.fillRect(x, y, width, height);\r\n }\r\n renderLines(layout) {\r\n const startLineNumber = layout.startLineNumber;\r\n const endLineNumber = layout.endLineNumber;\r\n const minimapLineHeight = this._model.options.minimapLineHeight;\r\n // Check if nothing changed w.r.t. lines from last frame\r\n if (this._lastRenderData && this._lastRenderData.linesEquals(layout)) {\r\n const _lastData = this._lastRenderData._get();\r\n // Nice!! Nothing changed from last frame\r\n return new RenderData(layout, _lastData.imageData, _lastData.lines);\r\n }\r\n // Oh well!! We need to repaint some lines...\r\n const imageData = this._getBuffer();\r\n if (!imageData) {\r\n // 0 width or 0 height canvas, nothing to do\r\n return null;\r\n }\r\n // Render untouched lines by using last rendered data.\r\n let [_dirtyY1, _dirtyY2, needed] = InnerMinimap._renderUntouchedLines(imageData, startLineNumber, endLineNumber, minimapLineHeight, this._lastRenderData);\r\n // Fetch rendering info from view model for rest of lines that need rendering.\r\n const lineInfo = this._model.getMinimapLinesRenderingData(startLineNumber, endLineNumber, needed);\r\n const tabSize = this._model.getOptions().tabSize;\r\n const background = this._model.options.backgroundColor;\r\n const tokensColorTracker = this._model.tokensColorTracker;\r\n const useLighterFont = tokensColorTracker.backgroundIsLight();\r\n const renderMinimap = this._model.options.renderMinimap;\r\n const charRenderer = this._model.options.charRenderer();\r\n const fontScale = this._model.options.fontScale;\r\n const minimapCharWidth = this._model.options.minimapCharWidth;\r\n const baseCharHeight = (renderMinimap === 1 /* Text */ ? 2 /* BASE_CHAR_HEIGHT */ : 2 /* BASE_CHAR_HEIGHT */ + 1);\r\n const renderMinimapLineHeight = baseCharHeight * fontScale;\r\n const innerLinePadding = (minimapLineHeight > renderMinimapLineHeight ? Math.floor((minimapLineHeight - renderMinimapLineHeight) / 2) : 0);\r\n // Render the rest of lines\r\n let dy = 0;\r\n const renderedLines = [];\r\n for (let lineIndex = 0, lineCount = endLineNumber - startLineNumber + 1; lineIndex < lineCount; lineIndex++) {\r\n if (needed[lineIndex]) {\r\n InnerMinimap._renderLine(imageData, background, useLighterFont, renderMinimap, minimapCharWidth, tokensColorTracker, charRenderer, dy, innerLinePadding, tabSize, lineInfo[lineIndex], fontScale, minimapLineHeight);\r\n }\r\n renderedLines[lineIndex] = new MinimapLine(dy);\r\n dy += minimapLineHeight;\r\n }\r\n const dirtyY1 = (_dirtyY1 === -1 ? 0 : _dirtyY1);\r\n const dirtyY2 = (_dirtyY2 === -1 ? imageData.height : _dirtyY2);\r\n const dirtyHeight = dirtyY2 - dirtyY1;\r\n // Finally, paint to the canvas\r\n const ctx = this._canvas.domNode.getContext('2d');\r\n ctx.putImageData(imageData, 0, 0, 0, dirtyY1, imageData.width, dirtyHeight);\r\n // Save rendered data for reuse on next frame if possible\r\n return new RenderData(layout, imageData, renderedLines);\r\n }\r\n static _renderUntouchedLines(target, startLineNumber, endLineNumber, minimapLineHeight, lastRenderData) {\r\n const needed = [];\r\n if (!lastRenderData) {\r\n for (let i = 0, len = endLineNumber - startLineNumber + 1; i < len; i++) {\r\n needed[i] = true;\r\n }\r\n return [-1, -1, needed];\r\n }\r\n const _lastData = lastRenderData._get();\r\n const lastTargetData = _lastData.imageData.data;\r\n const lastStartLineNumber = _lastData.rendLineNumberStart;\r\n const lastLines = _lastData.lines;\r\n const lastLinesLength = lastLines.length;\r\n const WIDTH = target.width;\r\n const targetData = target.data;\r\n const maxDestPixel = (endLineNumber - startLineNumber + 1) * minimapLineHeight * WIDTH * 4;\r\n let dirtyPixel1 = -1; // the pixel offset up to which all the data is equal to the prev frame\r\n let dirtyPixel2 = -1; // the pixel offset after which all the data is equal to the prev frame\r\n let copySourceStart = -1;\r\n let copySourceEnd = -1;\r\n let copyDestStart = -1;\r\n let copyDestEnd = -1;\r\n let dest_dy = 0;\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - startLineNumber;\r\n const lastLineIndex = lineNumber - lastStartLineNumber;\r\n const source_dy = (lastLineIndex >= 0 && lastLineIndex < lastLinesLength ? lastLines[lastLineIndex].dy : -1);\r\n if (source_dy === -1) {\r\n needed[lineIndex] = true;\r\n dest_dy += minimapLineHeight;\r\n continue;\r\n }\r\n const sourceStart = source_dy * WIDTH * 4;\r\n const sourceEnd = (source_dy + minimapLineHeight) * WIDTH * 4;\r\n const destStart = dest_dy * WIDTH * 4;\r\n const destEnd = (dest_dy + minimapLineHeight) * WIDTH * 4;\r\n if (copySourceEnd === sourceStart && copyDestEnd === destStart) {\r\n // contiguous zone => extend copy request\r\n copySourceEnd = sourceEnd;\r\n copyDestEnd = destEnd;\r\n }\r\n else {\r\n if (copySourceStart !== -1) {\r\n // flush existing copy request\r\n targetData.set(lastTargetData.subarray(copySourceStart, copySourceEnd), copyDestStart);\r\n if (dirtyPixel1 === -1 && copySourceStart === 0 && copySourceStart === copyDestStart) {\r\n dirtyPixel1 = copySourceEnd;\r\n }\r\n if (dirtyPixel2 === -1 && copySourceEnd === maxDestPixel && copySourceStart === copyDestStart) {\r\n dirtyPixel2 = copySourceStart;\r\n }\r\n }\r\n copySourceStart = sourceStart;\r\n copySourceEnd = sourceEnd;\r\n copyDestStart = destStart;\r\n copyDestEnd = destEnd;\r\n }\r\n needed[lineIndex] = false;\r\n dest_dy += minimapLineHeight;\r\n }\r\n if (copySourceStart !== -1) {\r\n // flush existing copy request\r\n targetData.set(lastTargetData.subarray(copySourceStart, copySourceEnd), copyDestStart);\r\n if (dirtyPixel1 === -1 && copySourceStart === 0 && copySourceStart === copyDestStart) {\r\n dirtyPixel1 = copySourceEnd;\r\n }\r\n if (dirtyPixel2 === -1 && copySourceEnd === maxDestPixel && copySourceStart === copyDestStart) {\r\n dirtyPixel2 = copySourceStart;\r\n }\r\n }\r\n const dirtyY1 = (dirtyPixel1 === -1 ? -1 : dirtyPixel1 / (WIDTH * 4));\r\n const dirtyY2 = (dirtyPixel2 === -1 ? -1 : dirtyPixel2 / (WIDTH * 4));\r\n return [dirtyY1, dirtyY2, needed];\r\n }\r\n static _renderLine(target, backgroundColor, useLighterFont, renderMinimap, charWidth, colorTracker, minimapCharRenderer, dy, innerLinePadding, tabSize, lineData, fontScale, minimapLineHeight) {\r\n const content = lineData.content;\r\n const tokens = lineData.tokens;\r\n const maxDx = target.width - charWidth;\r\n const force1pxHeight = (minimapLineHeight === 1);\r\n let dx = MINIMAP_GUTTER_WIDTH;\r\n let charIndex = 0;\r\n let tabsCharDelta = 0;\r\n for (let tokenIndex = 0, tokensLen = tokens.getCount(); tokenIndex < tokensLen; tokenIndex++) {\r\n const tokenEndIndex = tokens.getEndOffset(tokenIndex);\r\n const tokenColorId = tokens.getForeground(tokenIndex);\r\n const tokenColor = colorTracker.getColor(tokenColorId);\r\n for (; charIndex < tokenEndIndex; charIndex++) {\r\n if (dx > maxDx) {\r\n // hit edge of minimap\r\n return;\r\n }\r\n const charCode = content.charCodeAt(charIndex);\r\n if (charCode === 9 /* Tab */) {\r\n const insertSpacesCount = tabSize - (charIndex + tabsCharDelta) % tabSize;\r\n tabsCharDelta += insertSpacesCount - 1;\r\n // No need to render anything since tab is invisible\r\n dx += insertSpacesCount * charWidth;\r\n }\r\n else if (charCode === 32 /* Space */) {\r\n // No need to render anything since space is invisible\r\n dx += charWidth;\r\n }\r\n else {\r\n // Render twice for a full width character\r\n const count = strings.isFullWidthCharacter(charCode) ? 2 : 1;\r\n for (let i = 0; i < count; i++) {\r\n if (renderMinimap === 2 /* Blocks */) {\r\n minimapCharRenderer.blockRenderChar(target, dx, dy + innerLinePadding, tokenColor, backgroundColor, useLighterFont, force1pxHeight);\r\n }\r\n else { // RenderMinimap.Text\r\n minimapCharRenderer.renderChar(target, dx, dy + innerLinePadding, charCode, tokenColor, backgroundColor, fontScale, useLighterFont, force1pxHeight);\r\n }\r\n dx += charWidth;\r\n if (dx > maxDx) {\r\n // hit edge of minimap\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const minimapBackgroundValue = theme.getColor(minimapBackground);\r\n if (minimapBackgroundValue) {\r\n collector.addRule(`.monaco-editor .minimap > canvas { opacity: ${minimapBackgroundValue.rgba.a}; will-change: opacity; }`);\r\n }\r\n const sliderBackground = theme.getColor(minimapSliderBackground);\r\n if (sliderBackground) {\r\n collector.addRule(`.monaco-editor .minimap-slider .minimap-slider-horizontal { background: ${sliderBackground}; }`);\r\n }\r\n const sliderHoverBackground = theme.getColor(minimapSliderHoverBackground);\r\n if (sliderHoverBackground) {\r\n collector.addRule(`.monaco-editor .minimap-slider:hover .minimap-slider-horizontal { background: ${sliderHoverBackground}; }`);\r\n }\r\n const sliderActiveBackground = theme.getColor(minimapSliderActiveBackground);\r\n if (sliderActiveBackground) {\r\n collector.addRule(`.monaco-editor .minimap-slider.active .minimap-slider-horizontal { background: ${sliderActiveBackground}; }`);\r\n }\r\n const shadow = theme.getColor(scrollbarShadow);\r\n if (shadow) {\r\n collector.addRule(`.monaco-editor .minimap-shadow-visible { box-shadow: ${shadow} -6px 0 6px -6px inset; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getCharIndex } from './minimapCharSheet.js';\r\nimport { toUint8 } from '../../../../base/common/uint.js';\r\nexport class MinimapCharRenderer {\r\n constructor(charData, scale) {\r\n this.scale = scale;\r\n this.charDataNormal = MinimapCharRenderer.soften(charData, 12 / 15);\r\n this.charDataLight = MinimapCharRenderer.soften(charData, 50 / 60);\r\n }\r\n static soften(input, ratio) {\r\n let result = new Uint8ClampedArray(input.length);\r\n for (let i = 0, len = input.length; i < len; i++) {\r\n result[i] = toUint8(input[i] * ratio);\r\n }\r\n return result;\r\n }\r\n renderChar(target, dx, dy, chCode, color, backgroundColor, fontScale, useLighterFont, force1pxHeight) {\r\n const charWidth = 1 /* BASE_CHAR_WIDTH */ * this.scale;\r\n const charHeight = 2 /* BASE_CHAR_HEIGHT */ * this.scale;\r\n const renderHeight = (force1pxHeight ? 1 : charHeight);\r\n if (dx + charWidth > target.width || dy + renderHeight > target.height) {\r\n console.warn('bad render request outside image data');\r\n return;\r\n }\r\n const charData = useLighterFont ? this.charDataLight : this.charDataNormal;\r\n const charIndex = getCharIndex(chCode, fontScale);\r\n const destWidth = target.width * 4 /* RGBA_CHANNELS_CNT */;\r\n const backgroundR = backgroundColor.r;\r\n const backgroundG = backgroundColor.g;\r\n const backgroundB = backgroundColor.b;\r\n const deltaR = color.r - backgroundR;\r\n const deltaG = color.g - backgroundG;\r\n const deltaB = color.b - backgroundB;\r\n const dest = target.data;\r\n let sourceOffset = charIndex * charWidth * charHeight;\r\n let row = dy * destWidth + dx * 4 /* RGBA_CHANNELS_CNT */;\r\n for (let y = 0; y < renderHeight; y++) {\r\n let column = row;\r\n for (let x = 0; x < charWidth; x++) {\r\n const c = charData[sourceOffset++] / 255;\r\n dest[column++] = backgroundR + deltaR * c;\r\n dest[column++] = backgroundG + deltaG * c;\r\n dest[column++] = backgroundB + deltaB * c;\r\n column++;\r\n }\r\n row += destWidth;\r\n }\r\n }\r\n blockRenderChar(target, dx, dy, color, backgroundColor, useLighterFont, force1pxHeight) {\r\n const charWidth = 1 /* BASE_CHAR_WIDTH */ * this.scale;\r\n const charHeight = 2 /* BASE_CHAR_HEIGHT */ * this.scale;\r\n const renderHeight = (force1pxHeight ? 1 : charHeight);\r\n if (dx + charWidth > target.width || dy + renderHeight > target.height) {\r\n console.warn('bad render request outside image data');\r\n return;\r\n }\r\n const destWidth = target.width * 4 /* RGBA_CHANNELS_CNT */;\r\n const c = 0.5;\r\n const backgroundR = backgroundColor.r;\r\n const backgroundG = backgroundColor.g;\r\n const backgroundB = backgroundColor.b;\r\n const deltaR = color.r - backgroundR;\r\n const deltaG = color.g - backgroundG;\r\n const deltaB = color.b - backgroundB;\r\n const colorR = backgroundR + deltaR * c;\r\n const colorG = backgroundG + deltaG * c;\r\n const colorB = backgroundB + deltaB * c;\r\n const dest = target.data;\r\n let row = dy * destWidth + dx * 4 /* RGBA_CHANNELS_CNT */;\r\n for (let y = 0; y < renderHeight; y++) {\r\n let column = row;\r\n for (let x = 0; x < charWidth; x++) {\r\n dest[column++] = colorR;\r\n dest[column++] = colorG;\r\n dest[column++] = colorB;\r\n column++;\r\n }\r\n row += destWidth;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { MinimapCharRenderer } from './minimapCharRenderer.js';\r\nimport { allCharCodes } from './minimapCharSheet.js';\r\nimport { prebakedMiniMaps } from './minimapPreBaked.js';\r\nimport { toUint8 } from '../../../../base/common/uint.js';\r\n/**\r\n * Creates character renderers. It takes a 'scale' that determines how large\r\n * characters should be drawn. Using this, it draws data into a canvas and\r\n * then downsamples the characters as necessary for the current display.\r\n * This makes rendering more efficient, rather than drawing a full (tiny)\r\n * font, or downsampling in real-time.\r\n */\r\nexport class MinimapCharRendererFactory {\r\n /**\r\n * Creates a new character renderer factory with the given scale.\r\n */\r\n static create(scale, fontFamily) {\r\n // renderers are immutable. By default we'll 'create' a new minimap\r\n // character renderer whenever we switch editors, no need to do extra work.\r\n if (this.lastCreated && scale === this.lastCreated.scale && fontFamily === this.lastFontFamily) {\r\n return this.lastCreated;\r\n }\r\n let factory;\r\n if (prebakedMiniMaps[scale]) {\r\n factory = new MinimapCharRenderer(prebakedMiniMaps[scale](), scale);\r\n }\r\n else {\r\n factory = MinimapCharRendererFactory.createFromSampleData(MinimapCharRendererFactory.createSampleData(fontFamily).data, scale);\r\n }\r\n this.lastFontFamily = fontFamily;\r\n this.lastCreated = factory;\r\n return factory;\r\n }\r\n /**\r\n * Creates the font sample data, writing to a canvas.\r\n */\r\n static createSampleData(fontFamily) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n canvas.style.height = `${16 /* SAMPLED_CHAR_HEIGHT */}px`;\r\n canvas.height = 16 /* SAMPLED_CHAR_HEIGHT */;\r\n canvas.width = 96 /* CHAR_COUNT */ * 10 /* SAMPLED_CHAR_WIDTH */;\r\n canvas.style.width = 96 /* CHAR_COUNT */ * 10 /* SAMPLED_CHAR_WIDTH */ + 'px';\r\n ctx.fillStyle = '#ffffff';\r\n ctx.font = `bold ${16 /* SAMPLED_CHAR_HEIGHT */}px ${fontFamily}`;\r\n ctx.textBaseline = 'middle';\r\n let x = 0;\r\n for (const code of allCharCodes) {\r\n ctx.fillText(String.fromCharCode(code), x, 16 /* SAMPLED_CHAR_HEIGHT */ / 2);\r\n x += 10 /* SAMPLED_CHAR_WIDTH */;\r\n }\r\n return ctx.getImageData(0, 0, 96 /* CHAR_COUNT */ * 10 /* SAMPLED_CHAR_WIDTH */, 16 /* SAMPLED_CHAR_HEIGHT */);\r\n }\r\n /**\r\n * Creates a character renderer from the canvas sample data.\r\n */\r\n static createFromSampleData(source, scale) {\r\n const expectedLength = 16 /* SAMPLED_CHAR_HEIGHT */ * 10 /* SAMPLED_CHAR_WIDTH */ * 4 /* RGBA_CHANNELS_CNT */ * 96 /* CHAR_COUNT */;\r\n if (source.length !== expectedLength) {\r\n throw new Error('Unexpected source in MinimapCharRenderer');\r\n }\r\n let charData = MinimapCharRendererFactory._downsample(source, scale);\r\n return new MinimapCharRenderer(charData, scale);\r\n }\r\n static _downsampleChar(source, sourceOffset, dest, destOffset, scale) {\r\n const width = 1 /* BASE_CHAR_WIDTH */ * scale;\r\n const height = 2 /* BASE_CHAR_HEIGHT */ * scale;\r\n let targetIndex = destOffset;\r\n let brightest = 0;\r\n // This is essentially an ad-hoc rescaling algorithm. Standard approaches\r\n // like bicubic interpolation are awesome for scaling between image sizes,\r\n // but don't work so well when scaling to very small pixel values, we end\r\n // up with blurry, indistinct forms.\r\n //\r\n // The approach taken here is simply mapping each source pixel to the target\r\n // pixels, and taking the weighted values for all pixels in each, and then\r\n // averaging them out. Finally we apply an intensity boost in _downsample,\r\n // since when scaling to the smallest pixel sizes there's more black space\r\n // which causes characters to be much less distinct.\r\n for (let y = 0; y < height; y++) {\r\n // 1. For this destination pixel, get the source pixels we're sampling\r\n // from (x1, y1) to the next pixel (x2, y2)\r\n const sourceY1 = (y / height) * 16 /* SAMPLED_CHAR_HEIGHT */;\r\n const sourceY2 = ((y + 1) / height) * 16 /* SAMPLED_CHAR_HEIGHT */;\r\n for (let x = 0; x < width; x++) {\r\n const sourceX1 = (x / width) * 10 /* SAMPLED_CHAR_WIDTH */;\r\n const sourceX2 = ((x + 1) / width) * 10 /* SAMPLED_CHAR_WIDTH */;\r\n // 2. Sample all of them, summing them up and weighting them. Similar\r\n // to bilinear interpolation.\r\n let value = 0;\r\n let samples = 0;\r\n for (let sy = sourceY1; sy < sourceY2; sy++) {\r\n const sourceRow = sourceOffset + Math.floor(sy) * 3840 /* RGBA_SAMPLED_ROW_WIDTH */;\r\n const yBalance = 1 - (sy - Math.floor(sy));\r\n for (let sx = sourceX1; sx < sourceX2; sx++) {\r\n const xBalance = 1 - (sx - Math.floor(sx));\r\n const sourceIndex = sourceRow + Math.floor(sx) * 4 /* RGBA_CHANNELS_CNT */;\r\n const weight = xBalance * yBalance;\r\n samples += weight;\r\n value += ((source[sourceIndex] * source[sourceIndex + 3]) / 255) * weight;\r\n }\r\n }\r\n const final = value / samples;\r\n brightest = Math.max(brightest, final);\r\n dest[targetIndex++] = toUint8(final);\r\n }\r\n }\r\n return brightest;\r\n }\r\n static _downsample(data, scale) {\r\n const pixelsPerCharacter = 2 /* BASE_CHAR_HEIGHT */ * scale * 1 /* BASE_CHAR_WIDTH */ * scale;\r\n const resultLen = pixelsPerCharacter * 96 /* CHAR_COUNT */;\r\n const result = new Uint8ClampedArray(resultLen);\r\n let resultOffset = 0;\r\n let sourceOffset = 0;\r\n let brightest = 0;\r\n for (let charIndex = 0; charIndex < 96 /* CHAR_COUNT */; charIndex++) {\r\n brightest = Math.max(brightest, this._downsampleChar(data, sourceOffset, result, resultOffset, scale));\r\n resultOffset += pixelsPerCharacter;\r\n sourceOffset += 10 /* SAMPLED_CHAR_WIDTH */ * 4 /* RGBA_CHANNELS_CNT */;\r\n }\r\n if (brightest > 0) {\r\n const adjust = 255 / brightest;\r\n for (let i = 0; i < resultLen; i++) {\r\n result[i] *= adjust;\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const allCharCodes = (() => {\r\n const v = [];\r\n for (let i = 32 /* START_CH_CODE */; i <= 126 /* END_CH_CODE */; i++) {\r\n v.push(i);\r\n }\r\n v.push(65533 /* UNKNOWN_CODE */);\r\n return v;\r\n})();\r\nexport const getCharIndex = (chCode, fontScale) => {\r\n chCode -= 32 /* START_CH_CODE */;\r\n if (chCode < 0 || chCode > 96 /* CHAR_COUNT */) {\r\n if (fontScale <= 2) {\r\n // for smaller scales, we can get away with using any ASCII character...\r\n return (chCode + 96 /* CHAR_COUNT */) % 96 /* CHAR_COUNT */;\r\n }\r\n return 96 /* CHAR_COUNT */ - 1; // unknown symbol\r\n }\r\n return chCode;\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { once } from '../../../../base/common/functional.js';\r\nconst charTable = {\r\n '0': 0,\r\n '1': 1,\r\n '2': 2,\r\n '3': 3,\r\n '4': 4,\r\n '5': 5,\r\n '6': 6,\r\n '7': 7,\r\n '8': 8,\r\n '9': 9,\r\n A: 10,\r\n B: 11,\r\n C: 12,\r\n D: 13,\r\n E: 14,\r\n F: 15\r\n};\r\nconst decodeData = (str) => {\r\n const output = new Uint8ClampedArray(str.length / 2);\r\n for (let i = 0; i < str.length; i += 2) {\r\n output[i >> 1] = (charTable[str[i]] << 4) | (charTable[str[i + 1]] & 0xF);\r\n }\r\n return output;\r\n};\r\n/*\r\nconst encodeData = (data: Uint8ClampedArray, length: string) => {\r\n const chars = '0123456789ABCDEF';\r\n let output = '';\r\n for (let i = 0; i < data.length; i++) {\r\n output += chars[data[i] >> 4] + chars[data[i] & 0xf];\r\n }\r\n return output;\r\n};\r\n*/\r\n/**\r\n * Map of minimap scales to prebaked sample data at those scales. We don't\r\n * sample much larger data, because then font family becomes visible, which\r\n * is use-configurable.\r\n */\r\nexport const prebakedMiniMaps = {\r\n 1: once(() => decodeData('0000511D6300CF609C709645A78432005642574171487021003C451900274D35D762755E8B629C5BA856AF57BA649530C167D1512A272A3F6038604460398526BCA2A968DB6F8957C768BE5FBE2FB467CF5D8D5B795DC7625B5DFF50DE64C466DB2FC47CD860A65E9A2EB96CB54CE06DA763AB2EA26860524D3763536601005116008177A8705E53AB738E6A982F88BAA35B5F5B626D9C636B449B737E5B7B678598869A662F6B5B8542706C704C80736A607578685B70594A49715A4522E792')),\r\n 2: once(() => decodeData('000000000000000055394F383D2800008B8B1F210002000081B1CBCBCC820000847AAF6B9AAF2119BE08B8881AD60000A44FD07DCCF107015338130C00000000385972265F390B406E2437634B4B48031B12B8A0847000001E15B29A402F0000000000004B33460B00007A752C2A0000000000004D3900000084394B82013400ABA5CFC7AD9C0302A45A3E5A98AB000089A43382D97900008BA54AA087A70A0248A6A7AE6DBE0000BF6F94987EA40A01A06DCFA7A7A9030496C32F77891D0000A99FB1A0AFA80603B29AB9CA75930D010C0948354D3900000C0948354F37460D0028BE673D8400000000AF9D7B6E00002B007AA8933400007AA642675C2700007984CFB9C3985B768772A8A6B7B20000CAAECAAFC4B700009F94A6009F840009D09F9BA4CA9C0000CC8FC76DC87F0000C991C472A2000000A894A48CA7B501079BA2C9C69BA20000B19A5D3FA89000005CA6009DA2960901B0A7F0669FB200009D009E00B7890000DAD0F5D092820000D294D4C48BD10000B5A7A4A3B1A50402CAB6CBA6A2000000B5A7A4A3B1A8044FCDADD19D9CB00000B7778F7B8AAE0803C9AB5D3F5D3F00009EA09EA0BAB006039EA0989A8C7900009B9EF4D6B7C00000A9A7816CACA80000ABAC84705D3F000096DA635CDC8C00006F486F266F263D4784006124097B00374F6D2D6D2D6D4A3A95872322000000030000000000008D8939130000000000002E22A5C9CBC70600AB25C0B5C9B400061A2DB04CA67001082AA6BEBEBFC606002321DACBC19E03087AA08B6768380000282FBAC0B8CA7A88AD25BBA5A29900004C396C5894A6000040485A6E356E9442A32CD17EADA70000B4237923628600003E2DE9C1D7B500002F25BBA5A2990000231DB6AFB4A804023025C0B5CAB588062B2CBDBEC0C706882435A75CA20000002326BD6A82A908048B4B9A5A668000002423A09CB4BB060025259C9D8A7900001C1FCAB2C7C700002A2A9387ABA200002626A4A47D6E9D14333163A0C87500004B6F9C2D643A257049364936493647358A34438355497F1A0000A24C1D590000D38DFFBDD4CD3126'))\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './overlayWidgets.css';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { PartFingerprints, ViewPart } from '../../view/viewPart.js';\r\nexport class ViewOverlayWidgets extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._widgets = {};\r\n this._verticalScrollbarWidth = layoutInfo.verticalScrollbarWidth;\r\n this._minimapWidth = layoutInfo.minimap.minimapWidth;\r\n this._horizontalScrollbarHeight = layoutInfo.horizontalScrollbarHeight;\r\n this._editorHeight = layoutInfo.height;\r\n this._editorWidth = layoutInfo.width;\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n PartFingerprints.write(this._domNode, 4 /* OverlayWidgets */);\r\n this._domNode.setClassName('overlayWidgets');\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._widgets = {};\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._verticalScrollbarWidth = layoutInfo.verticalScrollbarWidth;\r\n this._minimapWidth = layoutInfo.minimap.minimapWidth;\r\n this._horizontalScrollbarHeight = layoutInfo.horizontalScrollbarHeight;\r\n this._editorHeight = layoutInfo.height;\r\n this._editorWidth = layoutInfo.width;\r\n return true;\r\n }\r\n // ---- end view event handlers\r\n addWidget(widget) {\r\n const domNode = createFastDomNode(widget.getDomNode());\r\n this._widgets[widget.getId()] = {\r\n widget: widget,\r\n preference: null,\r\n domNode: domNode\r\n };\r\n // This is sync because a widget wants to be in the dom\r\n domNode.setPosition('absolute');\r\n domNode.setAttribute('widgetId', widget.getId());\r\n this._domNode.appendChild(domNode);\r\n this.setShouldRender();\r\n }\r\n setWidgetPosition(widget, preference) {\r\n const widgetData = this._widgets[widget.getId()];\r\n if (widgetData.preference === preference) {\r\n return false;\r\n }\r\n widgetData.preference = preference;\r\n this.setShouldRender();\r\n return true;\r\n }\r\n removeWidget(widget) {\r\n const widgetId = widget.getId();\r\n if (this._widgets.hasOwnProperty(widgetId)) {\r\n const widgetData = this._widgets[widgetId];\r\n const domNode = widgetData.domNode.domNode;\r\n delete this._widgets[widgetId];\r\n domNode.parentNode.removeChild(domNode);\r\n this.setShouldRender();\r\n }\r\n }\r\n _renderWidget(widgetData) {\r\n const domNode = widgetData.domNode;\r\n if (widgetData.preference === null) {\r\n domNode.unsetTop();\r\n return;\r\n }\r\n if (widgetData.preference === 0 /* TOP_RIGHT_CORNER */) {\r\n domNode.setTop(0);\r\n domNode.setRight((2 * this._verticalScrollbarWidth) + this._minimapWidth);\r\n }\r\n else if (widgetData.preference === 1 /* BOTTOM_RIGHT_CORNER */) {\r\n const widgetHeight = domNode.domNode.clientHeight;\r\n domNode.setTop((this._editorHeight - widgetHeight - 2 * this._horizontalScrollbarHeight));\r\n domNode.setRight((2 * this._verticalScrollbarWidth) + this._minimapWidth);\r\n }\r\n else if (widgetData.preference === 2 /* TOP_CENTER */) {\r\n domNode.setTop(0);\r\n domNode.domNode.style.right = '50%';\r\n }\r\n }\r\n prepareRender(ctx) {\r\n // Nothing to read\r\n }\r\n render(ctx) {\r\n this._domNode.setWidth(this._editorWidth);\r\n const keys = Object.keys(this._widgets);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const widgetId = keys[i];\r\n this._renderWidget(this._widgets[widgetId]);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { Color } from '../../../../base/common/color.js';\r\nimport { ViewPart } from '../../view/viewPart.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { TokenizationRegistry } from '../../../common/modes.js';\r\nimport { editorCursorForeground, editorOverviewRulerBorder, editorOverviewRulerBackground } from '../../../common/view/editorColorRegistry.js';\r\nclass Settings {\r\n constructor(config, theme) {\r\n const options = config.options;\r\n this.lineHeight = options.get(51 /* lineHeight */);\r\n this.pixelRatio = options.get(115 /* pixelRatio */);\r\n this.overviewRulerLanes = options.get(65 /* overviewRulerLanes */);\r\n this.renderBorder = options.get(64 /* overviewRulerBorder */);\r\n const borderColor = theme.getColor(editorOverviewRulerBorder);\r\n this.borderColor = borderColor ? borderColor.toString() : null;\r\n this.hideCursor = options.get(44 /* hideCursorInOverviewRuler */);\r\n const cursorColor = theme.getColor(editorCursorForeground);\r\n this.cursorColor = cursorColor ? cursorColor.transparent(0.7).toString() : null;\r\n this.themeType = theme.type;\r\n const minimapOpts = options.get(56 /* minimap */);\r\n const minimapEnabled = minimapOpts.enabled;\r\n const minimapSide = minimapOpts.side;\r\n const backgroundColor = minimapEnabled\r\n ? theme.getColor(editorOverviewRulerBackground) || TokenizationRegistry.getDefaultBackground()\r\n : null;\r\n if (backgroundColor === null || minimapSide === 'left') {\r\n this.backgroundColor = null;\r\n }\r\n else {\r\n this.backgroundColor = Color.Format.CSS.formatHex(backgroundColor);\r\n }\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const position = layoutInfo.overviewRuler;\r\n this.top = position.top;\r\n this.right = position.right;\r\n this.domWidth = position.width;\r\n this.domHeight = position.height;\r\n if (this.overviewRulerLanes === 0) {\r\n // overview ruler is off\r\n this.canvasWidth = 0;\r\n this.canvasHeight = 0;\r\n }\r\n else {\r\n this.canvasWidth = (this.domWidth * this.pixelRatio) | 0;\r\n this.canvasHeight = (this.domHeight * this.pixelRatio) | 0;\r\n }\r\n const [x, w] = this._initLanes(1, this.canvasWidth, this.overviewRulerLanes);\r\n this.x = x;\r\n this.w = w;\r\n }\r\n _initLanes(canvasLeftOffset, canvasWidth, laneCount) {\r\n const remainingWidth = canvasWidth - canvasLeftOffset;\r\n if (laneCount >= 3) {\r\n const leftWidth = Math.floor(remainingWidth / 3);\r\n const rightWidth = Math.floor(remainingWidth / 3);\r\n const centerWidth = remainingWidth - leftWidth - rightWidth;\r\n const leftOffset = canvasLeftOffset;\r\n const centerOffset = leftOffset + leftWidth;\r\n const rightOffset = leftOffset + leftWidth + centerWidth;\r\n return [\r\n [\r\n 0,\r\n leftOffset,\r\n centerOffset,\r\n leftOffset,\r\n rightOffset,\r\n leftOffset,\r\n centerOffset,\r\n leftOffset,\r\n ], [\r\n 0,\r\n leftWidth,\r\n centerWidth,\r\n leftWidth + centerWidth,\r\n rightWidth,\r\n leftWidth + centerWidth + rightWidth,\r\n centerWidth + rightWidth,\r\n leftWidth + centerWidth + rightWidth,\r\n ]\r\n ];\r\n }\r\n else if (laneCount === 2) {\r\n const leftWidth = Math.floor(remainingWidth / 2);\r\n const rightWidth = remainingWidth - leftWidth;\r\n const leftOffset = canvasLeftOffset;\r\n const rightOffset = leftOffset + leftWidth;\r\n return [\r\n [\r\n 0,\r\n leftOffset,\r\n leftOffset,\r\n leftOffset,\r\n rightOffset,\r\n leftOffset,\r\n leftOffset,\r\n leftOffset,\r\n ], [\r\n 0,\r\n leftWidth,\r\n leftWidth,\r\n leftWidth,\r\n rightWidth,\r\n leftWidth + rightWidth,\r\n leftWidth + rightWidth,\r\n leftWidth + rightWidth,\r\n ]\r\n ];\r\n }\r\n else {\r\n const offset = canvasLeftOffset;\r\n const width = remainingWidth;\r\n return [\r\n [\r\n 0,\r\n offset,\r\n offset,\r\n offset,\r\n offset,\r\n offset,\r\n offset,\r\n offset,\r\n ], [\r\n 0,\r\n width,\r\n width,\r\n width,\r\n width,\r\n width,\r\n width,\r\n width,\r\n ]\r\n ];\r\n }\r\n }\r\n equals(other) {\r\n return (this.lineHeight === other.lineHeight\r\n && this.pixelRatio === other.pixelRatio\r\n && this.overviewRulerLanes === other.overviewRulerLanes\r\n && this.renderBorder === other.renderBorder\r\n && this.borderColor === other.borderColor\r\n && this.hideCursor === other.hideCursor\r\n && this.cursorColor === other.cursorColor\r\n && this.themeType === other.themeType\r\n && this.backgroundColor === other.backgroundColor\r\n && this.top === other.top\r\n && this.right === other.right\r\n && this.domWidth === other.domWidth\r\n && this.domHeight === other.domHeight\r\n && this.canvasWidth === other.canvasWidth\r\n && this.canvasHeight === other.canvasHeight);\r\n }\r\n}\r\nexport class DecorationsOverviewRuler extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n this._domNode = createFastDomNode(document.createElement('canvas'));\r\n this._domNode.setClassName('decorationsOverviewRuler');\r\n this._domNode.setPosition('absolute');\r\n this._domNode.setLayerHinting(true);\r\n this._domNode.setContain('strict');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._updateSettings(false);\r\n this._tokensColorTrackerListener = TokenizationRegistry.onDidChange((e) => {\r\n if (e.changedColorMap) {\r\n this._updateSettings(true);\r\n }\r\n });\r\n this._cursorPositions = [];\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._tokensColorTrackerListener.dispose();\r\n }\r\n _updateSettings(renderNow) {\r\n const newSettings = new Settings(this._context.configuration, this._context.theme);\r\n if (this._settings && this._settings.equals(newSettings)) {\r\n // nothing to do\r\n return false;\r\n }\r\n this._settings = newSettings;\r\n this._domNode.setTop(this._settings.top);\r\n this._domNode.setRight(this._settings.right);\r\n this._domNode.setWidth(this._settings.domWidth);\r\n this._domNode.setHeight(this._settings.domHeight);\r\n this._domNode.domNode.width = this._settings.canvasWidth;\r\n this._domNode.domNode.height = this._settings.canvasHeight;\r\n if (renderNow) {\r\n this._render();\r\n }\r\n return true;\r\n }\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n return this._updateSettings(false);\r\n }\r\n onCursorStateChanged(e) {\r\n this._cursorPositions = [];\r\n for (let i = 0, len = e.selections.length; i < len; i++) {\r\n this._cursorPositions[i] = e.selections[i].getPosition();\r\n }\r\n this._cursorPositions.sort(Position.compare);\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n if (e.affectsOverviewRuler) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollHeightChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n onThemeChanged(e) {\r\n // invalidate color cache\r\n this._context.model.invalidateOverviewRulerColorCache();\r\n return this._updateSettings(false);\r\n }\r\n // ---- end view event handlers\r\n getDomNode() {\r\n return this._domNode.domNode;\r\n }\r\n prepareRender(ctx) {\r\n // Nothing to read\r\n }\r\n render(editorCtx) {\r\n this._render();\r\n }\r\n _render() {\r\n if (this._settings.overviewRulerLanes === 0) {\r\n // overview ruler is off\r\n this._domNode.setBackgroundColor(this._settings.backgroundColor ? this._settings.backgroundColor : '');\r\n return;\r\n }\r\n const canvasWidth = this._settings.canvasWidth;\r\n const canvasHeight = this._settings.canvasHeight;\r\n const lineHeight = this._settings.lineHeight;\r\n const viewLayout = this._context.viewLayout;\r\n const outerHeight = this._context.viewLayout.getScrollHeight();\r\n const heightRatio = canvasHeight / outerHeight;\r\n const decorations = this._context.model.getAllOverviewRulerDecorations(this._context.theme);\r\n const minDecorationHeight = (6 /* MIN_DECORATION_HEIGHT */ * this._settings.pixelRatio) | 0;\r\n const halfMinDecorationHeight = (minDecorationHeight / 2) | 0;\r\n const canvasCtx = this._domNode.domNode.getContext('2d');\r\n if (this._settings.backgroundColor === null) {\r\n canvasCtx.clearRect(0, 0, canvasWidth, canvasHeight);\r\n }\r\n else {\r\n canvasCtx.fillStyle = this._settings.backgroundColor;\r\n canvasCtx.fillRect(0, 0, canvasWidth, canvasHeight);\r\n }\r\n const x = this._settings.x;\r\n const w = this._settings.w;\r\n // Avoid flickering by always rendering the colors in the same order\r\n // colors that don't use transparency will be sorted last (they start with #)\r\n const colors = Object.keys(decorations);\r\n colors.sort();\r\n for (let cIndex = 0, cLen = colors.length; cIndex < cLen; cIndex++) {\r\n const color = colors[cIndex];\r\n const colorDecorations = decorations[color];\r\n canvasCtx.fillStyle = color;\r\n let prevLane = 0;\r\n let prevY1 = 0;\r\n let prevY2 = 0;\r\n for (let i = 0, len = colorDecorations.length; i < len; i++) {\r\n const lane = colorDecorations[3 * i];\r\n const startLineNumber = colorDecorations[3 * i + 1];\r\n const endLineNumber = colorDecorations[3 * i + 2];\r\n let y1 = (viewLayout.getVerticalOffsetForLineNumber(startLineNumber) * heightRatio) | 0;\r\n let y2 = ((viewLayout.getVerticalOffsetForLineNumber(endLineNumber) + lineHeight) * heightRatio) | 0;\r\n const height = y2 - y1;\r\n if (height < minDecorationHeight) {\r\n let yCenter = ((y1 + y2) / 2) | 0;\r\n if (yCenter < halfMinDecorationHeight) {\r\n yCenter = halfMinDecorationHeight;\r\n }\r\n else if (yCenter + halfMinDecorationHeight > canvasHeight) {\r\n yCenter = canvasHeight - halfMinDecorationHeight;\r\n }\r\n y1 = yCenter - halfMinDecorationHeight;\r\n y2 = yCenter + halfMinDecorationHeight;\r\n }\r\n if (y1 > prevY2 + 1 || lane !== prevLane) {\r\n // flush prev\r\n if (i !== 0) {\r\n canvasCtx.fillRect(x[prevLane], prevY1, w[prevLane], prevY2 - prevY1);\r\n }\r\n prevLane = lane;\r\n prevY1 = y1;\r\n prevY2 = y2;\r\n }\r\n else {\r\n // merge into prev\r\n if (y2 > prevY2) {\r\n prevY2 = y2;\r\n }\r\n }\r\n }\r\n canvasCtx.fillRect(x[prevLane], prevY1, w[prevLane], prevY2 - prevY1);\r\n }\r\n // Draw cursors\r\n if (!this._settings.hideCursor && this._settings.cursorColor) {\r\n const cursorHeight = (2 * this._settings.pixelRatio) | 0;\r\n const halfCursorHeight = (cursorHeight / 2) | 0;\r\n const cursorX = this._settings.x[7 /* Full */];\r\n const cursorW = this._settings.w[7 /* Full */];\r\n canvasCtx.fillStyle = this._settings.cursorColor;\r\n let prevY1 = -100;\r\n let prevY2 = -100;\r\n for (let i = 0, len = this._cursorPositions.length; i < len; i++) {\r\n const cursor = this._cursorPositions[i];\r\n let yCenter = (viewLayout.getVerticalOffsetForLineNumber(cursor.lineNumber) * heightRatio) | 0;\r\n if (yCenter < halfCursorHeight) {\r\n yCenter = halfCursorHeight;\r\n }\r\n else if (yCenter + halfCursorHeight > canvasHeight) {\r\n yCenter = canvasHeight - halfCursorHeight;\r\n }\r\n const y1 = yCenter - halfCursorHeight;\r\n const y2 = y1 + cursorHeight;\r\n if (y1 > prevY2 + 1) {\r\n // flush prev\r\n if (i !== 0) {\r\n canvasCtx.fillRect(cursorX, prevY1, cursorW, prevY2 - prevY1);\r\n }\r\n prevY1 = y1;\r\n prevY2 = y2;\r\n }\r\n else {\r\n // merge into prev\r\n if (y2 > prevY2) {\r\n prevY2 = y2;\r\n }\r\n }\r\n }\r\n canvasCtx.fillRect(cursorX, prevY1, cursorW, prevY2 - prevY1);\r\n }\r\n if (this._settings.renderBorder && this._settings.borderColor && this._settings.overviewRulerLanes > 0) {\r\n canvasCtx.beginPath();\r\n canvasCtx.lineWidth = 1;\r\n canvasCtx.strokeStyle = this._settings.borderColor;\r\n canvasCtx.moveTo(0, 0);\r\n canvasCtx.lineTo(0, canvasHeight);\r\n canvasCtx.stroke();\r\n canvasCtx.moveTo(0, 0);\r\n canvasCtx.lineTo(canvasWidth, 0);\r\n canvasCtx.stroke();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { OverviewZoneManager } from '../../../common/view/overviewZoneManager.js';\r\nimport { ViewEventHandler } from '../../../common/viewModel/viewEventHandler.js';\r\nexport class OverviewRuler extends ViewEventHandler {\r\n constructor(context, cssClassName) {\r\n super();\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n this._domNode = createFastDomNode(document.createElement('canvas'));\r\n this._domNode.setClassName(cssClassName);\r\n this._domNode.setPosition('absolute');\r\n this._domNode.setLayerHinting(true);\r\n this._domNode.setContain('strict');\r\n this._zoneManager = new OverviewZoneManager((lineNumber) => this._context.viewLayout.getVerticalOffsetForLineNumber(lineNumber));\r\n this._zoneManager.setDOMWidth(0);\r\n this._zoneManager.setDOMHeight(0);\r\n this._zoneManager.setOuterHeight(this._context.viewLayout.getScrollHeight());\r\n this._zoneManager.setLineHeight(options.get(51 /* lineHeight */));\r\n this._zoneManager.setPixelRatio(options.get(115 /* pixelRatio */));\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n super.dispose();\r\n }\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n if (e.hasChanged(51 /* lineHeight */)) {\r\n this._zoneManager.setLineHeight(options.get(51 /* lineHeight */));\r\n this._render();\r\n }\r\n if (e.hasChanged(115 /* pixelRatio */)) {\r\n this._zoneManager.setPixelRatio(options.get(115 /* pixelRatio */));\r\n this._domNode.setWidth(this._zoneManager.getDOMWidth());\r\n this._domNode.setHeight(this._zoneManager.getDOMHeight());\r\n this._domNode.domNode.width = this._zoneManager.getCanvasWidth();\r\n this._domNode.domNode.height = this._zoneManager.getCanvasHeight();\r\n this._render();\r\n }\r\n return true;\r\n }\r\n onFlushed(e) {\r\n this._render();\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n if (e.scrollHeightChanged) {\r\n this._zoneManager.setOuterHeight(e.scrollHeight);\r\n this._render();\r\n }\r\n return true;\r\n }\r\n onZonesChanged(e) {\r\n this._render();\r\n return true;\r\n }\r\n // ---- end view event handlers\r\n getDomNode() {\r\n return this._domNode.domNode;\r\n }\r\n setLayout(position) {\r\n this._domNode.setTop(position.top);\r\n this._domNode.setRight(position.right);\r\n let hasChanged = false;\r\n hasChanged = this._zoneManager.setDOMWidth(position.width) || hasChanged;\r\n hasChanged = this._zoneManager.setDOMHeight(position.height) || hasChanged;\r\n if (hasChanged) {\r\n this._domNode.setWidth(this._zoneManager.getDOMWidth());\r\n this._domNode.setHeight(this._zoneManager.getDOMHeight());\r\n this._domNode.domNode.width = this._zoneManager.getCanvasWidth();\r\n this._domNode.domNode.height = this._zoneManager.getCanvasHeight();\r\n this._render();\r\n }\r\n }\r\n setZones(zones) {\r\n this._zoneManager.setZones(zones);\r\n this._render();\r\n }\r\n _render() {\r\n if (this._zoneManager.getOuterHeight() === 0) {\r\n return false;\r\n }\r\n const width = this._zoneManager.getCanvasWidth();\r\n const height = this._zoneManager.getCanvasHeight();\r\n const colorZones = this._zoneManager.resolveColorZones();\r\n const id2Color = this._zoneManager.getId2Color();\r\n const ctx = this._domNode.domNode.getContext('2d');\r\n ctx.clearRect(0, 0, width, height);\r\n if (colorZones.length > 0) {\r\n this._renderOneLane(ctx, colorZones, id2Color, width);\r\n }\r\n return true;\r\n }\r\n _renderOneLane(ctx, colorZones, id2Color, width) {\r\n let currentColorId = 0;\r\n let currentFrom = 0;\r\n let currentTo = 0;\r\n for (const zone of colorZones) {\r\n const zoneColorId = zone.colorId;\r\n const zoneFrom = zone.from;\r\n const zoneTo = zone.to;\r\n if (zoneColorId !== currentColorId) {\r\n ctx.fillRect(0, currentFrom, width, currentTo - currentFrom);\r\n currentColorId = zoneColorId;\r\n ctx.fillStyle = id2Color[currentColorId];\r\n currentFrom = zoneFrom;\r\n currentTo = zoneTo;\r\n }\r\n else {\r\n if (currentTo >= zoneFrom) {\r\n currentTo = Math.max(currentTo, zoneTo);\r\n }\r\n else {\r\n ctx.fillRect(0, currentFrom, width, currentTo - currentFrom);\r\n currentFrom = zoneFrom;\r\n currentTo = zoneTo;\r\n }\r\n }\r\n }\r\n ctx.fillRect(0, currentFrom, width, currentTo - currentFrom);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './rulers.css';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { ViewPart } from '../../view/viewPart.js';\r\nimport { editorRuler } from '../../../common/view/editorColorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nexport class Rulers extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setAttribute('role', 'presentation');\r\n this.domNode.setAttribute('aria-hidden', 'true');\r\n this.domNode.setClassName('view-rulers');\r\n this._renderedRulers = [];\r\n const options = this._context.configuration.options;\r\n this._rulers = options.get(83 /* rulers */);\r\n this._typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n this._rulers = options.get(83 /* rulers */);\r\n this._typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollHeightChanged;\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n // Nothing to read\r\n }\r\n _ensureRulersCount() {\r\n const currentCount = this._renderedRulers.length;\r\n const desiredCount = this._rulers.length;\r\n if (currentCount === desiredCount) {\r\n // Nothing to do\r\n return;\r\n }\r\n if (currentCount < desiredCount) {\r\n const { tabSize } = this._context.model.getTextModelOptions();\r\n const rulerWidth = tabSize;\r\n let addCount = desiredCount - currentCount;\r\n while (addCount > 0) {\r\n const node = createFastDomNode(document.createElement('div'));\r\n node.setClassName('view-ruler');\r\n node.setWidth(rulerWidth);\r\n this.domNode.appendChild(node);\r\n this._renderedRulers.push(node);\r\n addCount--;\r\n }\r\n return;\r\n }\r\n let removeCount = currentCount - desiredCount;\r\n while (removeCount > 0) {\r\n const node = this._renderedRulers.pop();\r\n this.domNode.removeChild(node);\r\n removeCount--;\r\n }\r\n }\r\n render(ctx) {\r\n this._ensureRulersCount();\r\n for (let i = 0, len = this._rulers.length; i < len; i++) {\r\n const node = this._renderedRulers[i];\r\n const ruler = this._rulers[i];\r\n node.setBoxShadow(ruler.color ? `1px 0 0 0 ${ruler.color} inset` : ``);\r\n node.setHeight(Math.min(ctx.scrollHeight, 1000000));\r\n node.setLeft(ruler.column * this._typicalHalfwidthCharacterWidth);\r\n }\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const rulerColor = theme.getColor(editorRuler);\r\n if (rulerColor) {\r\n collector.addRule(`.monaco-editor .view-ruler { box-shadow: 1px 0 0 0 ${rulerColor} inset; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './scrollDecoration.css';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { ViewPart } from '../../view/viewPart.js';\r\nimport { scrollbarShadow } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nexport class ScrollDecorationViewPart extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n this._scrollTop = 0;\r\n this._width = 0;\r\n this._updateWidth();\r\n this._shouldShow = false;\r\n const options = this._context.configuration.options;\r\n const scrollbar = options.get(84 /* scrollbar */);\r\n this._useShadows = scrollbar.useShadows;\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _updateShouldShow() {\r\n const newShouldShow = (this._useShadows && this._scrollTop > 0);\r\n if (this._shouldShow !== newShouldShow) {\r\n this._shouldShow = newShouldShow;\r\n return true;\r\n }\r\n return false;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n _updateWidth() {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n if (layoutInfo.minimap.renderMinimap === 0 || (layoutInfo.minimap.minimapWidth > 0 && layoutInfo.minimap.minimapLeft === 0)) {\r\n this._width = layoutInfo.width;\r\n }\r\n else {\r\n this._width = layoutInfo.width - layoutInfo.minimap.minimapWidth - layoutInfo.verticalScrollbarWidth;\r\n }\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const scrollbar = options.get(84 /* scrollbar */);\r\n this._useShadows = scrollbar.useShadows;\r\n this._updateWidth();\r\n this._updateShouldShow();\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n this._scrollTop = e.scrollTop;\r\n return this._updateShouldShow();\r\n }\r\n // --- end event handlers\r\n prepareRender(ctx) {\r\n // Nothing to read\r\n }\r\n render(ctx) {\r\n this._domNode.setWidth(this._width);\r\n this._domNode.setClassName(this._shouldShow ? 'scroll-decoration' : '');\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const shadow = theme.getColor(scrollbarShadow);\r\n if (shadow) {\r\n collector.addRule(`.monaco-editor .scroll-decoration { box-shadow: ${shadow} 0 6px 6px -6px inset; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './selections.css';\r\nimport * as browser from '../../../../base/browser/browser.js';\r\nimport { DynamicViewOverlay } from '../../view/dynamicViewOverlay.js';\r\nimport { editorInactiveSelection, editorSelectionBackground, editorSelectionForeground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nclass HorizontalRangeWithStyle {\r\n constructor(other) {\r\n this.left = other.left;\r\n this.width = other.width;\r\n this.startStyle = null;\r\n this.endStyle = null;\r\n }\r\n}\r\nclass LineVisibleRangesWithStyle {\r\n constructor(lineNumber, ranges) {\r\n this.lineNumber = lineNumber;\r\n this.ranges = ranges;\r\n }\r\n}\r\nfunction toStyledRange(item) {\r\n return new HorizontalRangeWithStyle(item);\r\n}\r\nfunction toStyled(item) {\r\n return new LineVisibleRangesWithStyle(item.lineNumber, item.ranges.map(toStyledRange));\r\n}\r\n// TODO@Alex: Remove this once IE11 fixes Bug #524217\r\n// The problem in IE11 is that it does some sort of auto-zooming to accomodate for displays with different pixel density.\r\n// Unfortunately, this auto-zooming is buggy around dealing with rounded borders\r\nconst isIEWithZoomingIssuesNearRoundedBorders = browser.isEdge;\r\nexport class SelectionsOverlay extends DynamicViewOverlay {\r\n constructor(context) {\r\n super();\r\n this._previousFrameVisibleRangesWithStyle = [];\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._roundedSelection = options.get(82 /* roundedSelection */);\r\n this._typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n this._selections = [];\r\n this._renderResult = null;\r\n this._context.addEventHandler(this);\r\n }\r\n dispose() {\r\n this._context.removeEventHandler(this);\r\n this._renderResult = null;\r\n super.dispose();\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._roundedSelection = options.get(82 /* roundedSelection */);\r\n this._typicalHalfwidthCharacterWidth = options.get(36 /* fontInfo */).typicalHalfwidthCharacterWidth;\r\n return true;\r\n }\r\n onCursorStateChanged(e) {\r\n this._selections = e.selections.slice(0);\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n // true for inline decorations that can end up relayouting text\r\n return true; //e.inlineDecorationsChanged;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n _visibleRangesHaveGaps(linesVisibleRanges) {\r\n for (let i = 0, len = linesVisibleRanges.length; i < len; i++) {\r\n const lineVisibleRanges = linesVisibleRanges[i];\r\n if (lineVisibleRanges.ranges.length > 1) {\r\n // There are two ranges on the same line\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _enrichVisibleRangesWithStyle(viewport, linesVisibleRanges, previousFrame) {\r\n const epsilon = this._typicalHalfwidthCharacterWidth / 4;\r\n let previousFrameTop = null;\r\n let previousFrameBottom = null;\r\n if (previousFrame && previousFrame.length > 0 && linesVisibleRanges.length > 0) {\r\n const topLineNumber = linesVisibleRanges[0].lineNumber;\r\n if (topLineNumber === viewport.startLineNumber) {\r\n for (let i = 0; !previousFrameTop && i < previousFrame.length; i++) {\r\n if (previousFrame[i].lineNumber === topLineNumber) {\r\n previousFrameTop = previousFrame[i].ranges[0];\r\n }\r\n }\r\n }\r\n const bottomLineNumber = linesVisibleRanges[linesVisibleRanges.length - 1].lineNumber;\r\n if (bottomLineNumber === viewport.endLineNumber) {\r\n for (let i = previousFrame.length - 1; !previousFrameBottom && i >= 0; i--) {\r\n if (previousFrame[i].lineNumber === bottomLineNumber) {\r\n previousFrameBottom = previousFrame[i].ranges[0];\r\n }\r\n }\r\n }\r\n if (previousFrameTop && !previousFrameTop.startStyle) {\r\n previousFrameTop = null;\r\n }\r\n if (previousFrameBottom && !previousFrameBottom.startStyle) {\r\n previousFrameBottom = null;\r\n }\r\n }\r\n for (let i = 0, len = linesVisibleRanges.length; i < len; i++) {\r\n // We know for a fact that there is precisely one range on each line\r\n const curLineRange = linesVisibleRanges[i].ranges[0];\r\n const curLeft = curLineRange.left;\r\n const curRight = curLineRange.left + curLineRange.width;\r\n const startStyle = {\r\n top: 0 /* EXTERN */,\r\n bottom: 0 /* EXTERN */\r\n };\r\n const endStyle = {\r\n top: 0 /* EXTERN */,\r\n bottom: 0 /* EXTERN */\r\n };\r\n if (i > 0) {\r\n // Look above\r\n const prevLeft = linesVisibleRanges[i - 1].ranges[0].left;\r\n const prevRight = linesVisibleRanges[i - 1].ranges[0].left + linesVisibleRanges[i - 1].ranges[0].width;\r\n if (abs(curLeft - prevLeft) < epsilon) {\r\n startStyle.top = 2 /* FLAT */;\r\n }\r\n else if (curLeft > prevLeft) {\r\n startStyle.top = 1 /* INTERN */;\r\n }\r\n if (abs(curRight - prevRight) < epsilon) {\r\n endStyle.top = 2 /* FLAT */;\r\n }\r\n else if (prevLeft < curRight && curRight < prevRight) {\r\n endStyle.top = 1 /* INTERN */;\r\n }\r\n }\r\n else if (previousFrameTop) {\r\n // Accept some hiccups near the viewport edges to save on repaints\r\n startStyle.top = previousFrameTop.startStyle.top;\r\n endStyle.top = previousFrameTop.endStyle.top;\r\n }\r\n if (i + 1 < len) {\r\n // Look below\r\n const nextLeft = linesVisibleRanges[i + 1].ranges[0].left;\r\n const nextRight = linesVisibleRanges[i + 1].ranges[0].left + linesVisibleRanges[i + 1].ranges[0].width;\r\n if (abs(curLeft - nextLeft) < epsilon) {\r\n startStyle.bottom = 2 /* FLAT */;\r\n }\r\n else if (nextLeft < curLeft && curLeft < nextRight) {\r\n startStyle.bottom = 1 /* INTERN */;\r\n }\r\n if (abs(curRight - nextRight) < epsilon) {\r\n endStyle.bottom = 2 /* FLAT */;\r\n }\r\n else if (curRight < nextRight) {\r\n endStyle.bottom = 1 /* INTERN */;\r\n }\r\n }\r\n else if (previousFrameBottom) {\r\n // Accept some hiccups near the viewport edges to save on repaints\r\n startStyle.bottom = previousFrameBottom.startStyle.bottom;\r\n endStyle.bottom = previousFrameBottom.endStyle.bottom;\r\n }\r\n curLineRange.startStyle = startStyle;\r\n curLineRange.endStyle = endStyle;\r\n }\r\n }\r\n _getVisibleRangesWithStyle(selection, ctx, previousFrame) {\r\n const _linesVisibleRanges = ctx.linesVisibleRangesForRange(selection, true) || [];\r\n const linesVisibleRanges = _linesVisibleRanges.map(toStyled);\r\n const visibleRangesHaveGaps = this._visibleRangesHaveGaps(linesVisibleRanges);\r\n if (!isIEWithZoomingIssuesNearRoundedBorders && !visibleRangesHaveGaps && this._roundedSelection) {\r\n this._enrichVisibleRangesWithStyle(ctx.visibleRange, linesVisibleRanges, previousFrame);\r\n }\r\n // The visible ranges are sorted TOP-BOTTOM and LEFT-RIGHT\r\n return linesVisibleRanges;\r\n }\r\n _createSelectionPiece(top, height, className, left, width) {\r\n return ('<div class=\"cslr '\r\n + className\r\n + '\" style=\"top:'\r\n + top.toString()\r\n + 'px;left:'\r\n + left.toString()\r\n + 'px;width:'\r\n + width.toString()\r\n + 'px;height:'\r\n + height\r\n + 'px;\"></div>');\r\n }\r\n _actualRenderOneSelection(output2, visibleStartLineNumber, hasMultipleSelections, visibleRanges) {\r\n if (visibleRanges.length === 0) {\r\n return;\r\n }\r\n const visibleRangesHaveStyle = !!visibleRanges[0].ranges[0].startStyle;\r\n const fullLineHeight = (this._lineHeight).toString();\r\n const reducedLineHeight = (this._lineHeight - 1).toString();\r\n const firstLineNumber = visibleRanges[0].lineNumber;\r\n const lastLineNumber = visibleRanges[visibleRanges.length - 1].lineNumber;\r\n for (let i = 0, len = visibleRanges.length; i < len; i++) {\r\n const lineVisibleRanges = visibleRanges[i];\r\n const lineNumber = lineVisibleRanges.lineNumber;\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n const lineHeight = hasMultipleSelections ? (lineNumber === lastLineNumber || lineNumber === firstLineNumber ? reducedLineHeight : fullLineHeight) : fullLineHeight;\r\n const top = hasMultipleSelections ? (lineNumber === firstLineNumber ? 1 : 0) : 0;\r\n let innerCornerOutput = '';\r\n let restOfSelectionOutput = '';\r\n for (let j = 0, lenJ = lineVisibleRanges.ranges.length; j < lenJ; j++) {\r\n const visibleRange = lineVisibleRanges.ranges[j];\r\n if (visibleRangesHaveStyle) {\r\n const startStyle = visibleRange.startStyle;\r\n const endStyle = visibleRange.endStyle;\r\n if (startStyle.top === 1 /* INTERN */ || startStyle.bottom === 1 /* INTERN */) {\r\n // Reverse rounded corner to the left\r\n // First comes the selection (blue layer)\r\n innerCornerOutput += this._createSelectionPiece(top, lineHeight, SelectionsOverlay.SELECTION_CLASS_NAME, visibleRange.left - SelectionsOverlay.ROUNDED_PIECE_WIDTH, SelectionsOverlay.ROUNDED_PIECE_WIDTH);\r\n // Second comes the background (white layer) with inverse border radius\r\n let className = SelectionsOverlay.EDITOR_BACKGROUND_CLASS_NAME;\r\n if (startStyle.top === 1 /* INTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_TOP_RIGHT;\r\n }\r\n if (startStyle.bottom === 1 /* INTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_BOTTOM_RIGHT;\r\n }\r\n innerCornerOutput += this._createSelectionPiece(top, lineHeight, className, visibleRange.left - SelectionsOverlay.ROUNDED_PIECE_WIDTH, SelectionsOverlay.ROUNDED_PIECE_WIDTH);\r\n }\r\n if (endStyle.top === 1 /* INTERN */ || endStyle.bottom === 1 /* INTERN */) {\r\n // Reverse rounded corner to the right\r\n // First comes the selection (blue layer)\r\n innerCornerOutput += this._createSelectionPiece(top, lineHeight, SelectionsOverlay.SELECTION_CLASS_NAME, visibleRange.left + visibleRange.width, SelectionsOverlay.ROUNDED_PIECE_WIDTH);\r\n // Second comes the background (white layer) with inverse border radius\r\n let className = SelectionsOverlay.EDITOR_BACKGROUND_CLASS_NAME;\r\n if (endStyle.top === 1 /* INTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_TOP_LEFT;\r\n }\r\n if (endStyle.bottom === 1 /* INTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_BOTTOM_LEFT;\r\n }\r\n innerCornerOutput += this._createSelectionPiece(top, lineHeight, className, visibleRange.left + visibleRange.width, SelectionsOverlay.ROUNDED_PIECE_WIDTH);\r\n }\r\n }\r\n let className = SelectionsOverlay.SELECTION_CLASS_NAME;\r\n if (visibleRangesHaveStyle) {\r\n const startStyle = visibleRange.startStyle;\r\n const endStyle = visibleRange.endStyle;\r\n if (startStyle.top === 0 /* EXTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_TOP_LEFT;\r\n }\r\n if (startStyle.bottom === 0 /* EXTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_BOTTOM_LEFT;\r\n }\r\n if (endStyle.top === 0 /* EXTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_TOP_RIGHT;\r\n }\r\n if (endStyle.bottom === 0 /* EXTERN */) {\r\n className += ' ' + SelectionsOverlay.SELECTION_BOTTOM_RIGHT;\r\n }\r\n }\r\n restOfSelectionOutput += this._createSelectionPiece(top, lineHeight, className, visibleRange.left, visibleRange.width);\r\n }\r\n output2[lineIndex][0] += innerCornerOutput;\r\n output2[lineIndex][1] += restOfSelectionOutput;\r\n }\r\n }\r\n prepareRender(ctx) {\r\n // Build HTML for inner corners separate from HTML for the rest of selections,\r\n // as the inner corner HTML can interfere with that of other selections.\r\n // In final render, make sure to place the inner corner HTML before the rest of selection HTML. See issue #77777.\r\n const output = [];\r\n const visibleStartLineNumber = ctx.visibleRange.startLineNumber;\r\n const visibleEndLineNumber = ctx.visibleRange.endLineNumber;\r\n for (let lineNumber = visibleStartLineNumber; lineNumber <= visibleEndLineNumber; lineNumber++) {\r\n const lineIndex = lineNumber - visibleStartLineNumber;\r\n output[lineIndex] = ['', ''];\r\n }\r\n const thisFrameVisibleRangesWithStyle = [];\r\n for (let i = 0, len = this._selections.length; i < len; i++) {\r\n const selection = this._selections[i];\r\n if (selection.isEmpty()) {\r\n thisFrameVisibleRangesWithStyle[i] = null;\r\n continue;\r\n }\r\n const visibleRangesWithStyle = this._getVisibleRangesWithStyle(selection, ctx, this._previousFrameVisibleRangesWithStyle[i]);\r\n thisFrameVisibleRangesWithStyle[i] = visibleRangesWithStyle;\r\n this._actualRenderOneSelection(output, visibleStartLineNumber, this._selections.length > 1, visibleRangesWithStyle);\r\n }\r\n this._previousFrameVisibleRangesWithStyle = thisFrameVisibleRangesWithStyle;\r\n this._renderResult = output.map(([internalCorners, restOfSelection]) => internalCorners + restOfSelection);\r\n }\r\n render(startLineNumber, lineNumber) {\r\n if (!this._renderResult) {\r\n return '';\r\n }\r\n const lineIndex = lineNumber - startLineNumber;\r\n if (lineIndex < 0 || lineIndex >= this._renderResult.length) {\r\n return '';\r\n }\r\n return this._renderResult[lineIndex];\r\n }\r\n}\r\nSelectionsOverlay.SELECTION_CLASS_NAME = 'selected-text';\r\nSelectionsOverlay.SELECTION_TOP_LEFT = 'top-left-radius';\r\nSelectionsOverlay.SELECTION_BOTTOM_LEFT = 'bottom-left-radius';\r\nSelectionsOverlay.SELECTION_TOP_RIGHT = 'top-right-radius';\r\nSelectionsOverlay.SELECTION_BOTTOM_RIGHT = 'bottom-right-radius';\r\nSelectionsOverlay.EDITOR_BACKGROUND_CLASS_NAME = 'monaco-editor-background';\r\nSelectionsOverlay.ROUNDED_PIECE_WIDTH = 10;\r\nregisterThemingParticipant((theme, collector) => {\r\n const editorSelectionColor = theme.getColor(editorSelectionBackground);\r\n if (editorSelectionColor) {\r\n collector.addRule(`.monaco-editor .focused .selected-text { background-color: ${editorSelectionColor}; }`);\r\n }\r\n const editorInactiveSelectionColor = theme.getColor(editorInactiveSelection);\r\n if (editorInactiveSelectionColor) {\r\n collector.addRule(`.monaco-editor .selected-text { background-color: ${editorInactiveSelectionColor}; }`);\r\n }\r\n const editorSelectionForegroundColor = theme.getColor(editorSelectionForeground);\r\n if (editorSelectionForegroundColor && !editorSelectionForegroundColor.isTransparent()) {\r\n collector.addRule(`.monaco-editor .view-line span.inline-selected-text { color: ${editorSelectionForegroundColor}; }`);\r\n }\r\n});\r\nfunction abs(n) {\r\n return n < 0 ? -n : n;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { Configuration } from '../../config/configuration.js';\r\nimport { TextEditorCursorStyle } from '../../../common/config/editorOptions.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from '../../../../base/browser/ui/mouseCursor/mouseCursor.js';\r\nclass ViewCursorRenderData {\r\n constructor(top, left, width, height, textContent, textContentClassName) {\r\n this.top = top;\r\n this.left = left;\r\n this.width = width;\r\n this.height = height;\r\n this.textContent = textContent;\r\n this.textContentClassName = textContentClassName;\r\n }\r\n}\r\nexport class ViewCursor {\r\n constructor(context) {\r\n this._context = context;\r\n const options = this._context.configuration.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n this._cursorStyle = options.get(19 /* cursorStyle */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n this._lineCursorWidth = Math.min(options.get(22 /* cursorWidth */), this._typicalHalfwidthCharacterWidth);\r\n this._isVisible = true;\r\n // Create the dom node\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n this._domNode.setClassName(`cursor ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`);\r\n this._domNode.setHeight(this._lineHeight);\r\n this._domNode.setTop(0);\r\n this._domNode.setLeft(0);\r\n Configuration.applyFontInfo(this._domNode, fontInfo);\r\n this._domNode.setDisplay('none');\r\n this._position = new Position(1, 1);\r\n this._lastRenderedContent = '';\r\n this._renderData = null;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return this._position;\r\n }\r\n show() {\r\n if (!this._isVisible) {\r\n this._domNode.setVisibility('inherit');\r\n this._isVisible = true;\r\n }\r\n }\r\n hide() {\r\n if (this._isVisible) {\r\n this._domNode.setVisibility('hidden');\r\n this._isVisible = false;\r\n }\r\n }\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n this._cursorStyle = options.get(19 /* cursorStyle */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n this._lineCursorWidth = Math.min(options.get(22 /* cursorWidth */), this._typicalHalfwidthCharacterWidth);\r\n Configuration.applyFontInfo(this._domNode, fontInfo);\r\n return true;\r\n }\r\n onCursorPositionChanged(position) {\r\n this._position = position;\r\n return true;\r\n }\r\n _prepareRender(ctx) {\r\n let textContent = '';\r\n if (this._cursorStyle === TextEditorCursorStyle.Line || this._cursorStyle === TextEditorCursorStyle.LineThin) {\r\n const visibleRange = ctx.visibleRangeForPosition(this._position);\r\n if (!visibleRange || visibleRange.outsideRenderedLine) {\r\n // Outside viewport\r\n return null;\r\n }\r\n let width;\r\n if (this._cursorStyle === TextEditorCursorStyle.Line) {\r\n width = dom.computeScreenAwareSize(this._lineCursorWidth > 0 ? this._lineCursorWidth : 2);\r\n if (width > 2) {\r\n const lineContent = this._context.model.getLineContent(this._position.lineNumber);\r\n const nextCharLength = strings.nextCharLength(lineContent, this._position.column - 1);\r\n textContent = lineContent.substr(this._position.column - 1, nextCharLength);\r\n }\r\n }\r\n else {\r\n width = dom.computeScreenAwareSize(1);\r\n }\r\n let left = visibleRange.left;\r\n if (width >= 2 && left >= 1) {\r\n // try to center cursor\r\n left -= 1;\r\n }\r\n const top = ctx.getVerticalOffsetForLineNumber(this._position.lineNumber) - ctx.bigNumbersDelta;\r\n return new ViewCursorRenderData(top, left, width, this._lineHeight, textContent, '');\r\n }\r\n const lineContent = this._context.model.getLineContent(this._position.lineNumber);\r\n const nextCharLength = strings.nextCharLength(lineContent, this._position.column - 1);\r\n const visibleRangeForCharacter = ctx.linesVisibleRangesForRange(new Range(this._position.lineNumber, this._position.column, this._position.lineNumber, this._position.column + nextCharLength), false);\r\n if (!visibleRangeForCharacter || visibleRangeForCharacter.length === 0) {\r\n // Outside viewport\r\n return null;\r\n }\r\n const firstVisibleRangeForCharacter = visibleRangeForCharacter[0];\r\n if (firstVisibleRangeForCharacter.outsideRenderedLine || firstVisibleRangeForCharacter.ranges.length === 0) {\r\n // Outside viewport\r\n return null;\r\n }\r\n const range = firstVisibleRangeForCharacter.ranges[0];\r\n const width = range.width < 1 ? this._typicalHalfwidthCharacterWidth : range.width;\r\n let textContentClassName = '';\r\n if (this._cursorStyle === TextEditorCursorStyle.Block) {\r\n const lineData = this._context.model.getViewLineData(this._position.lineNumber);\r\n textContent = lineContent.substr(this._position.column - 1, nextCharLength);\r\n const tokenIndex = lineData.tokens.findTokenIndexAtOffset(this._position.column - 1);\r\n textContentClassName = lineData.tokens.getClassName(tokenIndex);\r\n }\r\n let top = ctx.getVerticalOffsetForLineNumber(this._position.lineNumber) - ctx.bigNumbersDelta;\r\n let height = this._lineHeight;\r\n // Underline might interfere with clicking\r\n if (this._cursorStyle === TextEditorCursorStyle.Underline || this._cursorStyle === TextEditorCursorStyle.UnderlineThin) {\r\n top += this._lineHeight - 2;\r\n height = 2;\r\n }\r\n return new ViewCursorRenderData(top, range.left, width, height, textContent, textContentClassName);\r\n }\r\n prepareRender(ctx) {\r\n this._renderData = this._prepareRender(ctx);\r\n }\r\n render(ctx) {\r\n if (!this._renderData) {\r\n this._domNode.setDisplay('none');\r\n return null;\r\n }\r\n if (this._lastRenderedContent !== this._renderData.textContent) {\r\n this._lastRenderedContent = this._renderData.textContent;\r\n this._domNode.domNode.textContent = this._lastRenderedContent;\r\n }\r\n this._domNode.setClassName(`cursor ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME} ${this._renderData.textContentClassName}`);\r\n this._domNode.setDisplay('block');\r\n this._domNode.setTop(this._renderData.top);\r\n this._domNode.setLeft(this._renderData.left);\r\n this._domNode.setWidth(this._renderData.width);\r\n this._domNode.setLineHeight(this._renderData.height);\r\n this._domNode.setHeight(this._renderData.height);\r\n return {\r\n domNode: this._domNode.domNode,\r\n position: this._position,\r\n contentLeft: this._renderData.left,\r\n height: this._renderData.height,\r\n width: 2\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './viewCursors.css';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { IntervalTimer, TimeoutTimer } from '../../../../base/common/async.js';\r\nimport { ViewPart } from '../../view/viewPart.js';\r\nimport { ViewCursor } from './viewCursor.js';\r\nimport { TextEditorCursorStyle } from '../../../common/config/editorOptions.js';\r\nimport { editorCursorBackground, editorCursorForeground } from '../../../common/view/editorColorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nexport class ViewCursors extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n this._readOnly = options.get(72 /* readOnly */);\r\n this._cursorBlinking = options.get(17 /* cursorBlinking */);\r\n this._cursorStyle = options.get(19 /* cursorStyle */);\r\n this._cursorSmoothCaretAnimation = options.get(18 /* cursorSmoothCaretAnimation */);\r\n this._selectionIsEmpty = true;\r\n this._isVisible = false;\r\n this._primaryCursor = new ViewCursor(this._context);\r\n this._secondaryCursors = [];\r\n this._renderData = [];\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._updateDomClassName();\r\n this._domNode.appendChild(this._primaryCursor.getDomNode());\r\n this._startCursorBlinkAnimation = new TimeoutTimer();\r\n this._cursorFlatBlinkInterval = new IntervalTimer();\r\n this._blinkingEnabled = false;\r\n this._editorHasFocus = false;\r\n this._updateBlinking();\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._startCursorBlinkAnimation.dispose();\r\n this._cursorFlatBlinkInterval.dispose();\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n this._readOnly = options.get(72 /* readOnly */);\r\n this._cursorBlinking = options.get(17 /* cursorBlinking */);\r\n this._cursorStyle = options.get(19 /* cursorStyle */);\r\n this._cursorSmoothCaretAnimation = options.get(18 /* cursorSmoothCaretAnimation */);\r\n this._updateBlinking();\r\n this._updateDomClassName();\r\n this._primaryCursor.onConfigurationChanged(e);\r\n for (let i = 0, len = this._secondaryCursors.length; i < len; i++) {\r\n this._secondaryCursors[i].onConfigurationChanged(e);\r\n }\r\n return true;\r\n }\r\n _onCursorPositionChanged(position, secondaryPositions) {\r\n this._primaryCursor.onCursorPositionChanged(position);\r\n this._updateBlinking();\r\n if (this._secondaryCursors.length < secondaryPositions.length) {\r\n // Create new cursors\r\n const addCnt = secondaryPositions.length - this._secondaryCursors.length;\r\n for (let i = 0; i < addCnt; i++) {\r\n const newCursor = new ViewCursor(this._context);\r\n this._domNode.domNode.insertBefore(newCursor.getDomNode().domNode, this._primaryCursor.getDomNode().domNode.nextSibling);\r\n this._secondaryCursors.push(newCursor);\r\n }\r\n }\r\n else if (this._secondaryCursors.length > secondaryPositions.length) {\r\n // Remove some cursors\r\n const removeCnt = this._secondaryCursors.length - secondaryPositions.length;\r\n for (let i = 0; i < removeCnt; i++) {\r\n this._domNode.removeChild(this._secondaryCursors[0].getDomNode());\r\n this._secondaryCursors.splice(0, 1);\r\n }\r\n }\r\n for (let i = 0; i < secondaryPositions.length; i++) {\r\n this._secondaryCursors[i].onCursorPositionChanged(secondaryPositions[i]);\r\n }\r\n }\r\n onCursorStateChanged(e) {\r\n const positions = [];\r\n for (let i = 0, len = e.selections.length; i < len; i++) {\r\n positions[i] = e.selections[i].getPosition();\r\n }\r\n this._onCursorPositionChanged(positions[0], positions.slice(1));\r\n const selectionIsEmpty = e.selections[0].isEmpty();\r\n if (this._selectionIsEmpty !== selectionIsEmpty) {\r\n this._selectionIsEmpty = selectionIsEmpty;\r\n this._updateDomClassName();\r\n }\r\n return true;\r\n }\r\n onDecorationsChanged(e) {\r\n // true for inline decorations that can end up relayouting text\r\n return true;\r\n }\r\n onFlushed(e) {\r\n return true;\r\n }\r\n onFocusChanged(e) {\r\n this._editorHasFocus = e.isFocused;\r\n this._updateBlinking();\r\n return false;\r\n }\r\n onLinesChanged(e) {\r\n return true;\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return true;\r\n }\r\n onTokensChanged(e) {\r\n const shouldRender = (position) => {\r\n for (let i = 0, len = e.ranges.length; i < len; i++) {\r\n if (e.ranges[i].fromLineNumber <= position.lineNumber && position.lineNumber <= e.ranges[i].toLineNumber) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n if (shouldRender(this._primaryCursor.getPosition())) {\r\n return true;\r\n }\r\n for (const secondaryCursor of this._secondaryCursors) {\r\n if (shouldRender(secondaryCursor.getPosition())) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n // --- end event handlers\r\n // ---- blinking logic\r\n _getCursorBlinking() {\r\n if (!this._editorHasFocus) {\r\n return 0 /* Hidden */;\r\n }\r\n if (this._readOnly) {\r\n return 5 /* Solid */;\r\n }\r\n return this._cursorBlinking;\r\n }\r\n _updateBlinking() {\r\n this._startCursorBlinkAnimation.cancel();\r\n this._cursorFlatBlinkInterval.cancel();\r\n const blinkingStyle = this._getCursorBlinking();\r\n // hidden and solid are special as they involve no animations\r\n const isHidden = (blinkingStyle === 0 /* Hidden */);\r\n const isSolid = (blinkingStyle === 5 /* Solid */);\r\n if (isHidden) {\r\n this._hide();\r\n }\r\n else {\r\n this._show();\r\n }\r\n this._blinkingEnabled = false;\r\n this._updateDomClassName();\r\n if (!isHidden && !isSolid) {\r\n if (blinkingStyle === 1 /* Blink */) {\r\n // flat blinking is handled by JavaScript to save battery life due to Chromium step timing issue https://bugs.chromium.org/p/chromium/issues/detail?id=361587\r\n this._cursorFlatBlinkInterval.cancelAndSet(() => {\r\n if (this._isVisible) {\r\n this._hide();\r\n }\r\n else {\r\n this._show();\r\n }\r\n }, ViewCursors.BLINK_INTERVAL);\r\n }\r\n else {\r\n this._startCursorBlinkAnimation.setIfNotSet(() => {\r\n this._blinkingEnabled = true;\r\n this._updateDomClassName();\r\n }, ViewCursors.BLINK_INTERVAL);\r\n }\r\n }\r\n }\r\n // --- end blinking logic\r\n _updateDomClassName() {\r\n this._domNode.setClassName(this._getClassName());\r\n }\r\n _getClassName() {\r\n let result = 'cursors-layer';\r\n if (!this._selectionIsEmpty) {\r\n result += ' has-selection';\r\n }\r\n switch (this._cursorStyle) {\r\n case TextEditorCursorStyle.Line:\r\n result += ' cursor-line-style';\r\n break;\r\n case TextEditorCursorStyle.Block:\r\n result += ' cursor-block-style';\r\n break;\r\n case TextEditorCursorStyle.Underline:\r\n result += ' cursor-underline-style';\r\n break;\r\n case TextEditorCursorStyle.LineThin:\r\n result += ' cursor-line-thin-style';\r\n break;\r\n case TextEditorCursorStyle.BlockOutline:\r\n result += ' cursor-block-outline-style';\r\n break;\r\n case TextEditorCursorStyle.UnderlineThin:\r\n result += ' cursor-underline-thin-style';\r\n break;\r\n default:\r\n result += ' cursor-line-style';\r\n }\r\n if (this._blinkingEnabled) {\r\n switch (this._getCursorBlinking()) {\r\n case 1 /* Blink */:\r\n result += ' cursor-blink';\r\n break;\r\n case 2 /* Smooth */:\r\n result += ' cursor-smooth';\r\n break;\r\n case 3 /* Phase */:\r\n result += ' cursor-phase';\r\n break;\r\n case 4 /* Expand */:\r\n result += ' cursor-expand';\r\n break;\r\n case 5 /* Solid */:\r\n result += ' cursor-solid';\r\n break;\r\n default:\r\n result += ' cursor-solid';\r\n }\r\n }\r\n else {\r\n result += ' cursor-solid';\r\n }\r\n if (this._cursorSmoothCaretAnimation) {\r\n result += ' cursor-smooth-caret-animation';\r\n }\r\n return result;\r\n }\r\n _show() {\r\n this._primaryCursor.show();\r\n for (let i = 0, len = this._secondaryCursors.length; i < len; i++) {\r\n this._secondaryCursors[i].show();\r\n }\r\n this._isVisible = true;\r\n }\r\n _hide() {\r\n this._primaryCursor.hide();\r\n for (let i = 0, len = this._secondaryCursors.length; i < len; i++) {\r\n this._secondaryCursors[i].hide();\r\n }\r\n this._isVisible = false;\r\n }\r\n // ---- IViewPart implementation\r\n prepareRender(ctx) {\r\n this._primaryCursor.prepareRender(ctx);\r\n for (let i = 0, len = this._secondaryCursors.length; i < len; i++) {\r\n this._secondaryCursors[i].prepareRender(ctx);\r\n }\r\n }\r\n render(ctx) {\r\n let renderData = [], renderDataLen = 0;\r\n const primaryRenderData = this._primaryCursor.render(ctx);\r\n if (primaryRenderData) {\r\n renderData[renderDataLen++] = primaryRenderData;\r\n }\r\n for (let i = 0, len = this._secondaryCursors.length; i < len; i++) {\r\n const secondaryRenderData = this._secondaryCursors[i].render(ctx);\r\n if (secondaryRenderData) {\r\n renderData[renderDataLen++] = secondaryRenderData;\r\n }\r\n }\r\n this._renderData = renderData;\r\n }\r\n getLastRenderData() {\r\n return this._renderData;\r\n }\r\n}\r\nViewCursors.BLINK_INTERVAL = 500;\r\nregisterThemingParticipant((theme, collector) => {\r\n const caret = theme.getColor(editorCursorForeground);\r\n if (caret) {\r\n let caretBackground = theme.getColor(editorCursorBackground);\r\n if (!caretBackground) {\r\n caretBackground = caret.opposite();\r\n }\r\n collector.addRule(`.monaco-editor .cursors-layer .cursor { background-color: ${caret}; border-color: ${caret}; color: ${caretBackground}; }`);\r\n if (theme.type === 'hc') {\r\n collector.addRule(`.monaco-editor .cursors-layer.has-selection .cursor { border-left: 1px solid ${caretBackground}; border-right: 1px solid ${caretBackground}; }`);\r\n }\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport { ViewPart } from '../../view/viewPart.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nconst invalidFunc = () => { throw new Error(`Invalid change accessor`); };\r\nexport class ViewZones extends ViewPart {\r\n constructor(context) {\r\n super(context);\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._contentLeft = layoutInfo.contentLeft;\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setClassName('view-zones');\r\n this.domNode.setPosition('absolute');\r\n this.domNode.setAttribute('role', 'presentation');\r\n this.domNode.setAttribute('aria-hidden', 'true');\r\n this.marginDomNode = createFastDomNode(document.createElement('div'));\r\n this.marginDomNode.setClassName('margin-view-zones');\r\n this.marginDomNode.setPosition('absolute');\r\n this.marginDomNode.setAttribute('role', 'presentation');\r\n this.marginDomNode.setAttribute('aria-hidden', 'true');\r\n this._zones = {};\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._zones = {};\r\n }\r\n // ---- begin view event handlers\r\n _recomputeWhitespacesProps() {\r\n const whitespaces = this._context.viewLayout.getWhitespaces();\r\n const oldWhitespaces = new Map();\r\n for (const whitespace of whitespaces) {\r\n oldWhitespaces.set(whitespace.id, whitespace);\r\n }\r\n let hadAChange = false;\r\n this._context.model.changeWhitespace((whitespaceAccessor) => {\r\n const keys = Object.keys(this._zones);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const id = keys[i];\r\n const zone = this._zones[id];\r\n const props = this._computeWhitespaceProps(zone.delegate);\r\n const oldWhitespace = oldWhitespaces.get(id);\r\n if (oldWhitespace && (oldWhitespace.afterLineNumber !== props.afterViewLineNumber || oldWhitespace.height !== props.heightInPx)) {\r\n whitespaceAccessor.changeOneWhitespace(id, props.afterViewLineNumber, props.heightInPx);\r\n this._safeCallOnComputedHeight(zone.delegate, props.heightInPx);\r\n hadAChange = true;\r\n }\r\n }\r\n });\r\n return hadAChange;\r\n }\r\n onConfigurationChanged(e) {\r\n const options = this._context.configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._lineHeight = options.get(51 /* lineHeight */);\r\n this._contentWidth = layoutInfo.contentWidth;\r\n this._contentLeft = layoutInfo.contentLeft;\r\n if (e.hasChanged(51 /* lineHeight */)) {\r\n this._recomputeWhitespacesProps();\r\n }\r\n return true;\r\n }\r\n onLineMappingChanged(e) {\r\n return this._recomputeWhitespacesProps();\r\n }\r\n onLinesDeleted(e) {\r\n return true;\r\n }\r\n onScrollChanged(e) {\r\n return e.scrollTopChanged || e.scrollWidthChanged;\r\n }\r\n onZonesChanged(e) {\r\n return true;\r\n }\r\n onLinesInserted(e) {\r\n return true;\r\n }\r\n // ---- end view event handlers\r\n _getZoneOrdinal(zone) {\r\n if (typeof zone.afterColumn !== 'undefined') {\r\n return zone.afterColumn;\r\n }\r\n return 10000;\r\n }\r\n _computeWhitespaceProps(zone) {\r\n if (zone.afterLineNumber === 0) {\r\n return {\r\n afterViewLineNumber: 0,\r\n heightInPx: this._heightInPixels(zone),\r\n minWidthInPx: this._minWidthInPixels(zone)\r\n };\r\n }\r\n let zoneAfterModelPosition;\r\n if (typeof zone.afterColumn !== 'undefined') {\r\n zoneAfterModelPosition = this._context.model.validateModelPosition({\r\n lineNumber: zone.afterLineNumber,\r\n column: zone.afterColumn\r\n });\r\n }\r\n else {\r\n const validAfterLineNumber = this._context.model.validateModelPosition({\r\n lineNumber: zone.afterLineNumber,\r\n column: 1\r\n }).lineNumber;\r\n zoneAfterModelPosition = new Position(validAfterLineNumber, this._context.model.getModelLineMaxColumn(validAfterLineNumber));\r\n }\r\n let zoneBeforeModelPosition;\r\n if (zoneAfterModelPosition.column === this._context.model.getModelLineMaxColumn(zoneAfterModelPosition.lineNumber)) {\r\n zoneBeforeModelPosition = this._context.model.validateModelPosition({\r\n lineNumber: zoneAfterModelPosition.lineNumber + 1,\r\n column: 1\r\n });\r\n }\r\n else {\r\n zoneBeforeModelPosition = this._context.model.validateModelPosition({\r\n lineNumber: zoneAfterModelPosition.lineNumber,\r\n column: zoneAfterModelPosition.column + 1\r\n });\r\n }\r\n const viewPosition = this._context.model.coordinatesConverter.convertModelPositionToViewPosition(zoneAfterModelPosition);\r\n const isVisible = this._context.model.coordinatesConverter.modelPositionIsVisible(zoneBeforeModelPosition);\r\n return {\r\n afterViewLineNumber: viewPosition.lineNumber,\r\n heightInPx: (isVisible ? this._heightInPixels(zone) : 0),\r\n minWidthInPx: this._minWidthInPixels(zone)\r\n };\r\n }\r\n changeViewZones(callback) {\r\n let zonesHaveChanged = false;\r\n this._context.model.changeWhitespace((whitespaceAccessor) => {\r\n const changeAccessor = {\r\n addZone: (zone) => {\r\n zonesHaveChanged = true;\r\n return this._addZone(whitespaceAccessor, zone);\r\n },\r\n removeZone: (id) => {\r\n if (!id) {\r\n return;\r\n }\r\n zonesHaveChanged = this._removeZone(whitespaceAccessor, id) || zonesHaveChanged;\r\n },\r\n layoutZone: (id) => {\r\n if (!id) {\r\n return;\r\n }\r\n zonesHaveChanged = this._layoutZone(whitespaceAccessor, id) || zonesHaveChanged;\r\n }\r\n };\r\n safeInvoke1Arg(callback, changeAccessor);\r\n // Invalidate changeAccessor\r\n changeAccessor.addZone = invalidFunc;\r\n changeAccessor.removeZone = invalidFunc;\r\n changeAccessor.layoutZone = invalidFunc;\r\n });\r\n return zonesHaveChanged;\r\n }\r\n _addZone(whitespaceAccessor, zone) {\r\n const props = this._computeWhitespaceProps(zone);\r\n const whitespaceId = whitespaceAccessor.insertWhitespace(props.afterViewLineNumber, this._getZoneOrdinal(zone), props.heightInPx, props.minWidthInPx);\r\n const myZone = {\r\n whitespaceId: whitespaceId,\r\n delegate: zone,\r\n isVisible: false,\r\n domNode: createFastDomNode(zone.domNode),\r\n marginDomNode: zone.marginDomNode ? createFastDomNode(zone.marginDomNode) : null\r\n };\r\n this._safeCallOnComputedHeight(myZone.delegate, props.heightInPx);\r\n myZone.domNode.setPosition('absolute');\r\n myZone.domNode.domNode.style.width = '100%';\r\n myZone.domNode.setDisplay('none');\r\n myZone.domNode.setAttribute('monaco-view-zone', myZone.whitespaceId);\r\n this.domNode.appendChild(myZone.domNode);\r\n if (myZone.marginDomNode) {\r\n myZone.marginDomNode.setPosition('absolute');\r\n myZone.marginDomNode.domNode.style.width = '100%';\r\n myZone.marginDomNode.setDisplay('none');\r\n myZone.marginDomNode.setAttribute('monaco-view-zone', myZone.whitespaceId);\r\n this.marginDomNode.appendChild(myZone.marginDomNode);\r\n }\r\n this._zones[myZone.whitespaceId] = myZone;\r\n this.setShouldRender();\r\n return myZone.whitespaceId;\r\n }\r\n _removeZone(whitespaceAccessor, id) {\r\n if (this._zones.hasOwnProperty(id)) {\r\n const zone = this._zones[id];\r\n delete this._zones[id];\r\n whitespaceAccessor.removeWhitespace(zone.whitespaceId);\r\n zone.domNode.removeAttribute('monaco-visible-view-zone');\r\n zone.domNode.removeAttribute('monaco-view-zone');\r\n zone.domNode.domNode.parentNode.removeChild(zone.domNode.domNode);\r\n if (zone.marginDomNode) {\r\n zone.marginDomNode.removeAttribute('monaco-visible-view-zone');\r\n zone.marginDomNode.removeAttribute('monaco-view-zone');\r\n zone.marginDomNode.domNode.parentNode.removeChild(zone.marginDomNode.domNode);\r\n }\r\n this.setShouldRender();\r\n return true;\r\n }\r\n return false;\r\n }\r\n _layoutZone(whitespaceAccessor, id) {\r\n if (this._zones.hasOwnProperty(id)) {\r\n const zone = this._zones[id];\r\n const props = this._computeWhitespaceProps(zone.delegate);\r\n // const newOrdinal = this._getZoneOrdinal(zone.delegate);\r\n whitespaceAccessor.changeOneWhitespace(zone.whitespaceId, props.afterViewLineNumber, props.heightInPx);\r\n // TODO@Alex: change `newOrdinal` too\r\n this._safeCallOnComputedHeight(zone.delegate, props.heightInPx);\r\n this.setShouldRender();\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldSuppressMouseDownOnViewZone(id) {\r\n if (this._zones.hasOwnProperty(id)) {\r\n const zone = this._zones[id];\r\n return Boolean(zone.delegate.suppressMouseDown);\r\n }\r\n return false;\r\n }\r\n _heightInPixels(zone) {\r\n if (typeof zone.heightInPx === 'number') {\r\n return zone.heightInPx;\r\n }\r\n if (typeof zone.heightInLines === 'number') {\r\n return this._lineHeight * zone.heightInLines;\r\n }\r\n return this._lineHeight;\r\n }\r\n _minWidthInPixels(zone) {\r\n if (typeof zone.minWidthInPx === 'number') {\r\n return zone.minWidthInPx;\r\n }\r\n return 0;\r\n }\r\n _safeCallOnComputedHeight(zone, height) {\r\n if (typeof zone.onComputedHeight === 'function') {\r\n try {\r\n zone.onComputedHeight(height);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n }\r\n _safeCallOnDomNodeTop(zone, top) {\r\n if (typeof zone.onDomNodeTop === 'function') {\r\n try {\r\n zone.onDomNodeTop(top);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n }\r\n prepareRender(ctx) {\r\n // Nothing to read\r\n }\r\n render(ctx) {\r\n const visibleWhitespaces = ctx.viewportData.whitespaceViewportData;\r\n const visibleZones = {};\r\n let hasVisibleZone = false;\r\n for (let i = 0, len = visibleWhitespaces.length; i < len; i++) {\r\n visibleZones[visibleWhitespaces[i].id] = visibleWhitespaces[i];\r\n hasVisibleZone = true;\r\n }\r\n const keys = Object.keys(this._zones);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const id = keys[i];\r\n const zone = this._zones[id];\r\n let newTop = 0;\r\n let newHeight = 0;\r\n let newDisplay = 'none';\r\n if (visibleZones.hasOwnProperty(id)) {\r\n newTop = visibleZones[id].verticalOffset - ctx.bigNumbersDelta;\r\n newHeight = visibleZones[id].height;\r\n newDisplay = 'block';\r\n // zone is visible\r\n if (!zone.isVisible) {\r\n zone.domNode.setAttribute('monaco-visible-view-zone', 'true');\r\n zone.isVisible = true;\r\n }\r\n this._safeCallOnDomNodeTop(zone.delegate, ctx.getScrolledTopFromAbsoluteTop(visibleZones[id].verticalOffset));\r\n }\r\n else {\r\n if (zone.isVisible) {\r\n zone.domNode.removeAttribute('monaco-visible-view-zone');\r\n zone.isVisible = false;\r\n }\r\n this._safeCallOnDomNodeTop(zone.delegate, ctx.getScrolledTopFromAbsoluteTop(-1000000));\r\n }\r\n zone.domNode.setTop(newTop);\r\n zone.domNode.setHeight(newHeight);\r\n zone.domNode.setDisplay(newDisplay);\r\n if (zone.marginDomNode) {\r\n zone.marginDomNode.setTop(newTop);\r\n zone.marginDomNode.setHeight(newHeight);\r\n zone.marginDomNode.setDisplay(newDisplay);\r\n }\r\n }\r\n if (hasVisibleZone) {\r\n this.domNode.setWidth(Math.max(ctx.scrollWidth, this._contentWidth));\r\n this.marginDomNode.setWidth(this._contentLeft);\r\n }\r\n }\r\n}\r\nfunction safeInvoke1Arg(func, arg1) {\r\n try {\r\n return func(arg1);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './media/editor.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, dispose } from '../../../base/common/lifecycle.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { EditorExtensionsRegistry } from '../editorExtensions.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { View } from '../view/viewImpl.js';\r\nimport { ViewUserInputEvents } from '../view/viewUserInputEvents.js';\r\nimport { filterValidationDecorations } from '../../common/config/editorOptions.js';\r\nimport { Cursor } from '../../common/controller/cursor.js';\r\nimport { CursorColumns } from '../../common/controller/cursorCommon.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { InternalEditorAction } from '../../common/editorAction.js';\r\nimport * as editorCommon from '../../common/editorCommon.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { editorUnnecessaryCodeBorder, editorUnnecessaryCodeOpacity } from '../../common/view/editorColorRegistry.js';\r\nimport { editorErrorBorder, editorErrorForeground, editorHintBorder, editorHintForeground, editorInfoBorder, editorInfoForeground, editorWarningBorder, editorWarningForeground, editorForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { ViewModel } from '../../common/viewModel/viewModelImpl.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { withNullAsUndefined } from '../../../base/common/types.js';\r\nimport { MonospaceLineBreaksComputerFactory } from '../../common/viewModel/monospaceLineBreaksComputer.js';\r\nimport { DOMLineBreaksComputerFactory } from '../view/domLineBreaksComputer.js';\r\nimport { WordOperations } from '../../common/controller/cursorWordOperations.js';\r\nlet EDITOR_ID = 0;\r\nclass ModelData {\r\n constructor(model, viewModel, view, hasRealView, listenersToRemove) {\r\n this.model = model;\r\n this.viewModel = viewModel;\r\n this.view = view;\r\n this.hasRealView = hasRealView;\r\n this.listenersToRemove = listenersToRemove;\r\n }\r\n dispose() {\r\n dispose(this.listenersToRemove);\r\n this.model.onBeforeDetached();\r\n if (this.hasRealView) {\r\n this.view.dispose();\r\n }\r\n this.viewModel.dispose();\r\n }\r\n}\r\nlet CodeEditorWidget = class CodeEditorWidget extends Disposable {\r\n constructor(domElement, options, codeEditorWidgetOptions, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService) {\r\n super();\r\n //#region Eventing\r\n this._onDidDispose = this._register(new Emitter());\r\n this.onDidDispose = this._onDidDispose.event;\r\n this._onDidChangeModelContent = this._register(new Emitter());\r\n this.onDidChangeModelContent = this._onDidChangeModelContent.event;\r\n this._onDidChangeModelLanguage = this._register(new Emitter());\r\n this.onDidChangeModelLanguage = this._onDidChangeModelLanguage.event;\r\n this._onDidChangeModelLanguageConfiguration = this._register(new Emitter());\r\n this.onDidChangeModelLanguageConfiguration = this._onDidChangeModelLanguageConfiguration.event;\r\n this._onDidChangeModelOptions = this._register(new Emitter());\r\n this.onDidChangeModelOptions = this._onDidChangeModelOptions.event;\r\n this._onDidChangeModelDecorations = this._register(new Emitter());\r\n this.onDidChangeModelDecorations = this._onDidChangeModelDecorations.event;\r\n this._onDidChangeConfiguration = this._register(new Emitter());\r\n this.onDidChangeConfiguration = this._onDidChangeConfiguration.event;\r\n this._onDidChangeModel = this._register(new Emitter());\r\n this.onDidChangeModel = this._onDidChangeModel.event;\r\n this._onDidChangeCursorPosition = this._register(new Emitter());\r\n this.onDidChangeCursorPosition = this._onDidChangeCursorPosition.event;\r\n this._onDidChangeCursorSelection = this._register(new Emitter());\r\n this.onDidChangeCursorSelection = this._onDidChangeCursorSelection.event;\r\n this._onDidAttemptReadOnlyEdit = this._register(new Emitter());\r\n this.onDidAttemptReadOnlyEdit = this._onDidAttemptReadOnlyEdit.event;\r\n this._onDidLayoutChange = this._register(new Emitter());\r\n this.onDidLayoutChange = this._onDidLayoutChange.event;\r\n this._editorTextFocus = this._register(new BooleanEventEmitter());\r\n this.onDidFocusEditorText = this._editorTextFocus.onDidChangeToTrue;\r\n this.onDidBlurEditorText = this._editorTextFocus.onDidChangeToFalse;\r\n this._editorWidgetFocus = this._register(new BooleanEventEmitter());\r\n this.onDidFocusEditorWidget = this._editorWidgetFocus.onDidChangeToTrue;\r\n this.onDidBlurEditorWidget = this._editorWidgetFocus.onDidChangeToFalse;\r\n this._onWillType = this._register(new Emitter());\r\n this.onWillType = this._onWillType.event;\r\n this._onDidType = this._register(new Emitter());\r\n this.onDidType = this._onDidType.event;\r\n this._onDidCompositionStart = this._register(new Emitter());\r\n this.onDidCompositionStart = this._onDidCompositionStart.event;\r\n this._onDidCompositionEnd = this._register(new Emitter());\r\n this.onDidCompositionEnd = this._onDidCompositionEnd.event;\r\n this._onDidPaste = this._register(new Emitter());\r\n this.onDidPaste = this._onDidPaste.event;\r\n this._onMouseUp = this._register(new Emitter());\r\n this.onMouseUp = this._onMouseUp.event;\r\n this._onMouseDown = this._register(new Emitter());\r\n this.onMouseDown = this._onMouseDown.event;\r\n this._onMouseDrag = this._register(new Emitter());\r\n this.onMouseDrag = this._onMouseDrag.event;\r\n this._onMouseDrop = this._register(new Emitter());\r\n this.onMouseDrop = this._onMouseDrop.event;\r\n this._onContextMenu = this._register(new Emitter());\r\n this.onContextMenu = this._onContextMenu.event;\r\n this._onMouseMove = this._register(new Emitter());\r\n this.onMouseMove = this._onMouseMove.event;\r\n this._onMouseLeave = this._register(new Emitter());\r\n this.onMouseLeave = this._onMouseLeave.event;\r\n this._onMouseWheel = this._register(new Emitter());\r\n this.onMouseWheel = this._onMouseWheel.event;\r\n this._onKeyUp = this._register(new Emitter());\r\n this.onKeyUp = this._onKeyUp.event;\r\n this._onKeyDown = this._register(new Emitter());\r\n this.onKeyDown = this._onKeyDown.event;\r\n this._onDidContentSizeChange = this._register(new Emitter());\r\n this.onDidContentSizeChange = this._onDidContentSizeChange.event;\r\n this._onDidScrollChange = this._register(new Emitter());\r\n this.onDidScrollChange = this._onDidScrollChange.event;\r\n this._onDidChangeViewZones = this._register(new Emitter());\r\n this.onDidChangeViewZones = this._onDidChangeViewZones.event;\r\n options = options || {};\r\n this._domElement = domElement;\r\n this._overflowWidgetsDomNode = options.overflowWidgetsDomNode;\r\n this._id = (++EDITOR_ID);\r\n this._decorationTypeKeysToIds = {};\r\n this._decorationTypeSubtypes = {};\r\n this.isSimpleWidget = codeEditorWidgetOptions.isSimpleWidget || false;\r\n this._telemetryData = codeEditorWidgetOptions.telemetryData;\r\n this._configuration = this._register(this._createConfiguration(options, accessibilityService));\r\n this._register(this._configuration.onDidChange((e) => {\r\n this._onDidChangeConfiguration.fire(e);\r\n const options = this._configuration.options;\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this._onDidLayoutChange.fire(layoutInfo);\r\n }\r\n }));\r\n this._contextKeyService = this._register(contextKeyService.createScoped(this._domElement));\r\n this._notificationService = notificationService;\r\n this._codeEditorService = codeEditorService;\r\n this._commandService = commandService;\r\n this._themeService = themeService;\r\n this._register(new EditorContextKeysManager(this, this._contextKeyService));\r\n this._register(new EditorModeContext(this, this._contextKeyService));\r\n this._instantiationService = instantiationService.createChild(new ServiceCollection([IContextKeyService, this._contextKeyService]));\r\n this._modelData = null;\r\n this._contributions = {};\r\n this._actions = {};\r\n this._focusTracker = new CodeEditorWidgetFocusTracker(domElement);\r\n this._focusTracker.onChange(() => {\r\n this._editorWidgetFocus.setValue(this._focusTracker.hasFocus());\r\n });\r\n this._contentWidgets = {};\r\n this._overlayWidgets = {};\r\n let contributions;\r\n if (Array.isArray(codeEditorWidgetOptions.contributions)) {\r\n contributions = codeEditorWidgetOptions.contributions;\r\n }\r\n else {\r\n contributions = EditorExtensionsRegistry.getEditorContributions();\r\n }\r\n for (const desc of contributions) {\r\n try {\r\n const contribution = this._instantiationService.createInstance(desc.ctor, this);\r\n this._contributions[desc.id] = contribution;\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n }\r\n EditorExtensionsRegistry.getEditorActions().forEach((action) => {\r\n const internalAction = new InternalEditorAction(action.id, action.label, action.alias, withNullAsUndefined(action.precondition), () => {\r\n return this._instantiationService.invokeFunction((accessor) => {\r\n return Promise.resolve(action.runEditorCommand(accessor, this, null));\r\n });\r\n }, this._contextKeyService);\r\n this._actions[internalAction.id] = internalAction;\r\n });\r\n this._codeEditorService.addCodeEditor(this);\r\n }\r\n _createConfiguration(options, accessibilityService) {\r\n return new Configuration(this.isSimpleWidget, options, this._domElement, accessibilityService);\r\n }\r\n getId() {\r\n return this.getEditorType() + ':' + this._id;\r\n }\r\n getEditorType() {\r\n return editorCommon.EditorType.ICodeEditor;\r\n }\r\n dispose() {\r\n this._codeEditorService.removeCodeEditor(this);\r\n this._focusTracker.dispose();\r\n const keys = Object.keys(this._contributions);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const contributionId = keys[i];\r\n this._contributions[contributionId].dispose();\r\n }\r\n this._removeDecorationTypes();\r\n this._postDetachModelCleanup(this._detachModel());\r\n this._onDidDispose.fire();\r\n super.dispose();\r\n }\r\n invokeWithinContext(fn) {\r\n return this._instantiationService.invokeFunction(fn);\r\n }\r\n updateOptions(newOptions) {\r\n this._configuration.updateOptions(newOptions);\r\n }\r\n getOptions() {\r\n return this._configuration.options;\r\n }\r\n getOption(id) {\r\n return this._configuration.options.get(id);\r\n }\r\n getRawOptions() {\r\n return this._configuration.getRawOptions();\r\n }\r\n getOverflowWidgetsDomNode() {\r\n return this._overflowWidgetsDomNode;\r\n }\r\n getConfiguredWordAtPosition(position) {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return WordOperations.getWordAtPosition(this._modelData.model, this._configuration.options.get(105 /* wordSeparators */), position);\r\n }\r\n getValue(options = null) {\r\n if (!this._modelData) {\r\n return '';\r\n }\r\n const preserveBOM = (options && options.preserveBOM) ? true : false;\r\n let eolPreference = 0 /* TextDefined */;\r\n if (options && options.lineEnding && options.lineEnding === '\\n') {\r\n eolPreference = 1 /* LF */;\r\n }\r\n else if (options && options.lineEnding && options.lineEnding === '\\r\\n') {\r\n eolPreference = 2 /* CRLF */;\r\n }\r\n return this._modelData.model.getValue(eolPreference, preserveBOM);\r\n }\r\n setValue(newValue) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.model.setValue(newValue);\r\n }\r\n getModel() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return this._modelData.model;\r\n }\r\n setModel(_model = null) {\r\n const model = _model;\r\n if (this._modelData === null && model === null) {\r\n // Current model is the new model\r\n return;\r\n }\r\n if (this._modelData && this._modelData.model === model) {\r\n // Current model is the new model\r\n return;\r\n }\r\n const hasTextFocus = this.hasTextFocus();\r\n const detachedModel = this._detachModel();\r\n this._attachModel(model);\r\n if (hasTextFocus && this.hasModel()) {\r\n this.focus();\r\n }\r\n const e = {\r\n oldModelUrl: detachedModel ? detachedModel.uri : null,\r\n newModelUrl: model ? model.uri : null\r\n };\r\n this._removeDecorationTypes();\r\n this._onDidChangeModel.fire(e);\r\n this._postDetachModelCleanup(detachedModel);\r\n }\r\n _removeDecorationTypes() {\r\n this._decorationTypeKeysToIds = {};\r\n if (this._decorationTypeSubtypes) {\r\n for (let decorationType in this._decorationTypeSubtypes) {\r\n const subTypes = this._decorationTypeSubtypes[decorationType];\r\n for (let subType in subTypes) {\r\n this._removeDecorationType(decorationType + '-' + subType);\r\n }\r\n }\r\n this._decorationTypeSubtypes = {};\r\n }\r\n }\r\n getVisibleRanges() {\r\n if (!this._modelData) {\r\n return [];\r\n }\r\n return this._modelData.viewModel.getVisibleRanges();\r\n }\r\n getVisibleRangesPlusViewportAboveBelow() {\r\n if (!this._modelData) {\r\n return [];\r\n }\r\n return this._modelData.viewModel.getVisibleRangesPlusViewportAboveBelow();\r\n }\r\n getWhitespaces() {\r\n if (!this._modelData) {\r\n return [];\r\n }\r\n return this._modelData.viewModel.viewLayout.getWhitespaces();\r\n }\r\n static _getVerticalOffsetForPosition(modelData, modelLineNumber, modelColumn) {\r\n const modelPosition = modelData.model.validatePosition({\r\n lineNumber: modelLineNumber,\r\n column: modelColumn\r\n });\r\n const viewPosition = modelData.viewModel.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\r\n return modelData.viewModel.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber);\r\n }\r\n getTopForLineNumber(lineNumber) {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, 1);\r\n }\r\n getTopForPosition(lineNumber, column) {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, lineNumber, column);\r\n }\r\n setHiddenAreas(ranges) {\r\n if (this._modelData) {\r\n this._modelData.viewModel.setHiddenAreas(ranges.map(r => Range.lift(r)));\r\n }\r\n }\r\n getVisibleColumnFromPosition(rawPosition) {\r\n if (!this._modelData) {\r\n return rawPosition.column;\r\n }\r\n const position = this._modelData.model.validatePosition(rawPosition);\r\n const tabSize = this._modelData.model.getOptions().tabSize;\r\n return CursorColumns.visibleColumnFromColumn(this._modelData.model.getLineContent(position.lineNumber), position.column, tabSize) + 1;\r\n }\r\n getPosition() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return this._modelData.viewModel.getPosition();\r\n }\r\n setPosition(position) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._modelData.viewModel.setSelections('api', [{\r\n selectionStartLineNumber: position.lineNumber,\r\n selectionStartColumn: position.column,\r\n positionLineNumber: position.lineNumber,\r\n positionColumn: position.column\r\n }]);\r\n }\r\n _sendRevealRange(modelRange, verticalType, revealHorizontal, scrollType) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n if (!Range.isIRange(modelRange)) {\r\n throw new Error('Invalid arguments');\r\n }\r\n const validatedModelRange = this._modelData.model.validateRange(modelRange);\r\n const viewRange = this._modelData.viewModel.coordinatesConverter.convertModelRangeToViewRange(validatedModelRange);\r\n this._modelData.viewModel.revealRange('api', revealHorizontal, viewRange, verticalType, scrollType);\r\n }\r\n revealLine(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLine(lineNumber, 0 /* Simple */, scrollType);\r\n }\r\n revealLineInCenter(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLine(lineNumber, 1 /* Center */, scrollType);\r\n }\r\n revealLineInCenterIfOutsideViewport(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLine(lineNumber, 2 /* CenterIfOutsideViewport */, scrollType);\r\n }\r\n revealLineNearTop(lineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLine(lineNumber, 5 /* NearTop */, scrollType);\r\n }\r\n _revealLine(lineNumber, revealType, scrollType) {\r\n if (typeof lineNumber !== 'number') {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._sendRevealRange(new Range(lineNumber, 1, lineNumber, 1), revealType, false, scrollType);\r\n }\r\n revealPosition(position, scrollType = 0 /* Smooth */) {\r\n this._revealPosition(position, 0 /* Simple */, true, scrollType);\r\n }\r\n revealPositionInCenter(position, scrollType = 0 /* Smooth */) {\r\n this._revealPosition(position, 1 /* Center */, true, scrollType);\r\n }\r\n revealPositionInCenterIfOutsideViewport(position, scrollType = 0 /* Smooth */) {\r\n this._revealPosition(position, 2 /* CenterIfOutsideViewport */, true, scrollType);\r\n }\r\n revealPositionNearTop(position, scrollType = 0 /* Smooth */) {\r\n this._revealPosition(position, 5 /* NearTop */, true, scrollType);\r\n }\r\n _revealPosition(position, verticalType, revealHorizontal, scrollType) {\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._sendRevealRange(new Range(position.lineNumber, position.column, position.lineNumber, position.column), verticalType, revealHorizontal, scrollType);\r\n }\r\n getSelection() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return this._modelData.viewModel.getSelection();\r\n }\r\n getSelections() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return this._modelData.viewModel.getSelections();\r\n }\r\n setSelection(something) {\r\n const isSelection = Selection.isISelection(something);\r\n const isRange = Range.isIRange(something);\r\n if (!isSelection && !isRange) {\r\n throw new Error('Invalid arguments');\r\n }\r\n if (isSelection) {\r\n this._setSelectionImpl(something);\r\n }\r\n else if (isRange) {\r\n // act as if it was an IRange\r\n const selection = {\r\n selectionStartLineNumber: something.startLineNumber,\r\n selectionStartColumn: something.startColumn,\r\n positionLineNumber: something.endLineNumber,\r\n positionColumn: something.endColumn\r\n };\r\n this._setSelectionImpl(selection);\r\n }\r\n }\r\n _setSelectionImpl(sel) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n const selection = new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\r\n this._modelData.viewModel.setSelections('api', [selection]);\r\n }\r\n revealLines(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLines(startLineNumber, endLineNumber, 0 /* Simple */, scrollType);\r\n }\r\n revealLinesInCenter(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLines(startLineNumber, endLineNumber, 1 /* Center */, scrollType);\r\n }\r\n revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLines(startLineNumber, endLineNumber, 2 /* CenterIfOutsideViewport */, scrollType);\r\n }\r\n revealLinesNearTop(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this._revealLines(startLineNumber, endLineNumber, 5 /* NearTop */, scrollType);\r\n }\r\n _revealLines(startLineNumber, endLineNumber, verticalType, scrollType) {\r\n if (typeof startLineNumber !== 'number' || typeof endLineNumber !== 'number') {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._sendRevealRange(new Range(startLineNumber, 1, endLineNumber, 1), verticalType, false, scrollType);\r\n }\r\n revealRange(range, scrollType = 0 /* Smooth */, revealVerticalInCenter = false, revealHorizontal = true) {\r\n this._revealRange(range, revealVerticalInCenter ? 1 /* Center */ : 0 /* Simple */, revealHorizontal, scrollType);\r\n }\r\n revealRangeInCenter(range, scrollType = 0 /* Smooth */) {\r\n this._revealRange(range, 1 /* Center */, true, scrollType);\r\n }\r\n revealRangeInCenterIfOutsideViewport(range, scrollType = 0 /* Smooth */) {\r\n this._revealRange(range, 2 /* CenterIfOutsideViewport */, true, scrollType);\r\n }\r\n revealRangeNearTop(range, scrollType = 0 /* Smooth */) {\r\n this._revealRange(range, 5 /* NearTop */, true, scrollType);\r\n }\r\n revealRangeNearTopIfOutsideViewport(range, scrollType = 0 /* Smooth */) {\r\n this._revealRange(range, 6 /* NearTopIfOutsideViewport */, true, scrollType);\r\n }\r\n revealRangeAtTop(range, scrollType = 0 /* Smooth */) {\r\n this._revealRange(range, 3 /* Top */, true, scrollType);\r\n }\r\n _revealRange(range, verticalType, revealHorizontal, scrollType) {\r\n if (!Range.isIRange(range)) {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._sendRevealRange(Range.lift(range), verticalType, revealHorizontal, scrollType);\r\n }\r\n setSelections(ranges, source = 'api') {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n if (!ranges || ranges.length === 0) {\r\n throw new Error('Invalid arguments');\r\n }\r\n for (let i = 0, len = ranges.length; i < len; i++) {\r\n if (!Selection.isISelection(ranges[i])) {\r\n throw new Error('Invalid arguments');\r\n }\r\n }\r\n this._modelData.viewModel.setSelections(source, ranges);\r\n }\r\n getContentWidth() {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return this._modelData.viewModel.viewLayout.getContentWidth();\r\n }\r\n getScrollWidth() {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return this._modelData.viewModel.viewLayout.getScrollWidth();\r\n }\r\n getScrollLeft() {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return this._modelData.viewModel.viewLayout.getCurrentScrollLeft();\r\n }\r\n getContentHeight() {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return this._modelData.viewModel.viewLayout.getContentHeight();\r\n }\r\n getScrollHeight() {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return this._modelData.viewModel.viewLayout.getScrollHeight();\r\n }\r\n getScrollTop() {\r\n if (!this._modelData) {\r\n return -1;\r\n }\r\n return this._modelData.viewModel.viewLayout.getCurrentScrollTop();\r\n }\r\n setScrollLeft(newScrollLeft, scrollType = 1 /* Immediate */) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n if (typeof newScrollLeft !== 'number') {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._modelData.viewModel.setScrollPosition({\r\n scrollLeft: newScrollLeft\r\n }, scrollType);\r\n }\r\n setScrollTop(newScrollTop, scrollType = 1 /* Immediate */) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n if (typeof newScrollTop !== 'number') {\r\n throw new Error('Invalid arguments');\r\n }\r\n this._modelData.viewModel.setScrollPosition({\r\n scrollTop: newScrollTop\r\n }, scrollType);\r\n }\r\n setScrollPosition(position, scrollType = 1 /* Immediate */) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.setScrollPosition(position, scrollType);\r\n }\r\n saveViewState() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n const contributionsState = {};\r\n const keys = Object.keys(this._contributions);\r\n for (const id of keys) {\r\n const contribution = this._contributions[id];\r\n if (typeof contribution.saveViewState === 'function') {\r\n contributionsState[id] = contribution.saveViewState();\r\n }\r\n }\r\n const cursorState = this._modelData.viewModel.saveCursorState();\r\n const viewState = this._modelData.viewModel.saveState();\r\n return {\r\n cursorState: cursorState,\r\n viewState: viewState,\r\n contributionsState: contributionsState\r\n };\r\n }\r\n restoreViewState(s) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return;\r\n }\r\n const codeEditorState = s;\r\n if (codeEditorState && codeEditorState.cursorState && codeEditorState.viewState) {\r\n const cursorState = codeEditorState.cursorState;\r\n if (Array.isArray(cursorState)) {\r\n this._modelData.viewModel.restoreCursorState(cursorState);\r\n }\r\n else {\r\n // Backwards compatibility\r\n this._modelData.viewModel.restoreCursorState([cursorState]);\r\n }\r\n const contributionsState = codeEditorState.contributionsState || {};\r\n const keys = Object.keys(this._contributions);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const id = keys[i];\r\n const contribution = this._contributions[id];\r\n if (typeof contribution.restoreViewState === 'function') {\r\n contribution.restoreViewState(contributionsState[id]);\r\n }\r\n }\r\n const reducedState = this._modelData.viewModel.reduceRestoreState(codeEditorState.viewState);\r\n this._modelData.view.restoreState(reducedState);\r\n }\r\n }\r\n getContribution(id) {\r\n return (this._contributions[id] || null);\r\n }\r\n getActions() {\r\n const result = [];\r\n const keys = Object.keys(this._actions);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const id = keys[i];\r\n result.push(this._actions[id]);\r\n }\r\n return result;\r\n }\r\n getSupportedActions() {\r\n let result = this.getActions();\r\n result = result.filter(action => action.isSupported());\r\n return result;\r\n }\r\n getAction(id) {\r\n return this._actions[id] || null;\r\n }\r\n trigger(source, handlerId, payload) {\r\n payload = payload || {};\r\n switch (handlerId) {\r\n case \"compositionStart\" /* CompositionStart */:\r\n this._startComposition();\r\n return;\r\n case \"compositionEnd\" /* CompositionEnd */:\r\n this._endComposition(source);\r\n return;\r\n case \"type\" /* Type */: {\r\n const args = payload;\r\n this._type(source, args.text || '');\r\n return;\r\n }\r\n case \"replacePreviousChar\" /* ReplacePreviousChar */: {\r\n const args = payload;\r\n this._replacePreviousChar(source, args.text || '', args.replaceCharCnt || 0);\r\n return;\r\n }\r\n case \"paste\" /* Paste */: {\r\n const args = payload;\r\n this._paste(source, args.text || '', args.pasteOnNewLine || false, args.multicursorText || null, args.mode || null);\r\n return;\r\n }\r\n case \"cut\" /* Cut */:\r\n this._cut(source);\r\n return;\r\n }\r\n const action = this.getAction(handlerId);\r\n if (action) {\r\n Promise.resolve(action.run()).then(undefined, onUnexpectedError);\r\n return;\r\n }\r\n if (!this._modelData) {\r\n return;\r\n }\r\n if (this._triggerEditorCommand(source, handlerId, payload)) {\r\n return;\r\n }\r\n }\r\n _startComposition() {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.startComposition();\r\n this._onDidCompositionStart.fire();\r\n }\r\n _endComposition(source) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.endComposition(source);\r\n this._onDidCompositionEnd.fire();\r\n }\r\n _type(source, text) {\r\n if (!this._modelData || text.length === 0) {\r\n return;\r\n }\r\n if (source === 'keyboard') {\r\n this._onWillType.fire(text);\r\n }\r\n this._modelData.viewModel.type(text, source);\r\n if (source === 'keyboard') {\r\n this._onDidType.fire(text);\r\n }\r\n }\r\n _replacePreviousChar(source, text, replaceCharCnt) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.replacePreviousChar(text, replaceCharCnt, source);\r\n }\r\n _paste(source, text, pasteOnNewLine, multicursorText, mode) {\r\n if (!this._modelData || text.length === 0) {\r\n return;\r\n }\r\n const startPosition = this._modelData.viewModel.getSelection().getStartPosition();\r\n this._modelData.viewModel.paste(text, pasteOnNewLine, multicursorText, source);\r\n const endPosition = this._modelData.viewModel.getSelection().getStartPosition();\r\n if (source === 'keyboard') {\r\n this._onDidPaste.fire({\r\n range: new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column),\r\n mode: mode\r\n });\r\n }\r\n }\r\n _cut(source) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.cut(source);\r\n }\r\n _triggerEditorCommand(source, handlerId, payload) {\r\n const command = EditorExtensionsRegistry.getEditorCommand(handlerId);\r\n if (command) {\r\n payload = payload || {};\r\n payload.source = source;\r\n this._instantiationService.invokeFunction((accessor) => {\r\n Promise.resolve(command.runEditorCommand(accessor, this, payload)).then(undefined, onUnexpectedError);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n _getViewModel() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return this._modelData.viewModel;\r\n }\r\n pushUndoStop() {\r\n if (!this._modelData) {\r\n return false;\r\n }\r\n if (this._configuration.options.get(72 /* readOnly */)) {\r\n // read only editor => sorry!\r\n return false;\r\n }\r\n this._modelData.model.pushStackElement();\r\n return true;\r\n }\r\n executeEdits(source, edits, endCursorState) {\r\n if (!this._modelData) {\r\n return false;\r\n }\r\n if (this._configuration.options.get(72 /* readOnly */)) {\r\n // read only editor => sorry!\r\n return false;\r\n }\r\n let cursorStateComputer;\r\n if (!endCursorState) {\r\n cursorStateComputer = () => null;\r\n }\r\n else if (Array.isArray(endCursorState)) {\r\n cursorStateComputer = () => endCursorState;\r\n }\r\n else {\r\n cursorStateComputer = endCursorState;\r\n }\r\n this._modelData.viewModel.executeEdits(source, edits, cursorStateComputer);\r\n return true;\r\n }\r\n executeCommand(source, command) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.executeCommand(command, source);\r\n }\r\n executeCommands(source, commands) {\r\n if (!this._modelData) {\r\n return;\r\n }\r\n this._modelData.viewModel.executeCommands(commands, source);\r\n }\r\n changeDecorations(callback) {\r\n if (!this._modelData) {\r\n // callback will not be called\r\n return null;\r\n }\r\n return this._modelData.model.changeDecorations(callback, this._id);\r\n }\r\n getLineDecorations(lineNumber) {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n return this._modelData.model.getLineDecorations(lineNumber, this._id, filterValidationDecorations(this._configuration.options));\r\n }\r\n deltaDecorations(oldDecorations, newDecorations) {\r\n if (!this._modelData) {\r\n return [];\r\n }\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n return oldDecorations;\r\n }\r\n return this._modelData.model.deltaDecorations(oldDecorations, newDecorations, this._id);\r\n }\r\n removeDecorations(decorationTypeKey) {\r\n // remove decorations for type and sub type\r\n const oldDecorationsIds = this._decorationTypeKeysToIds[decorationTypeKey];\r\n if (oldDecorationsIds) {\r\n this.deltaDecorations(oldDecorationsIds, []);\r\n }\r\n if (this._decorationTypeKeysToIds.hasOwnProperty(decorationTypeKey)) {\r\n delete this._decorationTypeKeysToIds[decorationTypeKey];\r\n }\r\n if (this._decorationTypeSubtypes.hasOwnProperty(decorationTypeKey)) {\r\n delete this._decorationTypeSubtypes[decorationTypeKey];\r\n }\r\n }\r\n getLayoutInfo() {\r\n const options = this._configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n return layoutInfo;\r\n }\r\n createOverviewRuler(cssClassName) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return null;\r\n }\r\n return this._modelData.view.createOverviewRuler(cssClassName);\r\n }\r\n getContainerDomNode() {\r\n return this._domElement;\r\n }\r\n getDomNode() {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return null;\r\n }\r\n return this._modelData.view.domNode.domNode;\r\n }\r\n delegateVerticalScrollbarMouseDown(browserEvent) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return;\r\n }\r\n this._modelData.view.delegateVerticalScrollbarMouseDown(browserEvent);\r\n }\r\n layout(dimension) {\r\n this._configuration.observeReferenceElement(dimension);\r\n this.render();\r\n }\r\n focus() {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return;\r\n }\r\n this._modelData.view.focus();\r\n }\r\n hasTextFocus() {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return false;\r\n }\r\n return this._modelData.view.isFocused();\r\n }\r\n hasWidgetFocus() {\r\n return this._focusTracker && this._focusTracker.hasFocus();\r\n }\r\n addContentWidget(widget) {\r\n const widgetData = {\r\n widget: widget,\r\n position: widget.getPosition()\r\n };\r\n if (this._contentWidgets.hasOwnProperty(widget.getId())) {\r\n console.warn('Overwriting a content widget with the same id.');\r\n }\r\n this._contentWidgets[widget.getId()] = widgetData;\r\n if (this._modelData && this._modelData.hasRealView) {\r\n this._modelData.view.addContentWidget(widgetData);\r\n }\r\n }\r\n layoutContentWidget(widget) {\r\n const widgetId = widget.getId();\r\n if (this._contentWidgets.hasOwnProperty(widgetId)) {\r\n const widgetData = this._contentWidgets[widgetId];\r\n widgetData.position = widget.getPosition();\r\n if (this._modelData && this._modelData.hasRealView) {\r\n this._modelData.view.layoutContentWidget(widgetData);\r\n }\r\n }\r\n }\r\n removeContentWidget(widget) {\r\n const widgetId = widget.getId();\r\n if (this._contentWidgets.hasOwnProperty(widgetId)) {\r\n const widgetData = this._contentWidgets[widgetId];\r\n delete this._contentWidgets[widgetId];\r\n if (this._modelData && this._modelData.hasRealView) {\r\n this._modelData.view.removeContentWidget(widgetData);\r\n }\r\n }\r\n }\r\n addOverlayWidget(widget) {\r\n const widgetData = {\r\n widget: widget,\r\n position: widget.getPosition()\r\n };\r\n if (this._overlayWidgets.hasOwnProperty(widget.getId())) {\r\n console.warn('Overwriting an overlay widget with the same id.');\r\n }\r\n this._overlayWidgets[widget.getId()] = widgetData;\r\n if (this._modelData && this._modelData.hasRealView) {\r\n this._modelData.view.addOverlayWidget(widgetData);\r\n }\r\n }\r\n layoutOverlayWidget(widget) {\r\n const widgetId = widget.getId();\r\n if (this._overlayWidgets.hasOwnProperty(widgetId)) {\r\n const widgetData = this._overlayWidgets[widgetId];\r\n widgetData.position = widget.getPosition();\r\n if (this._modelData && this._modelData.hasRealView) {\r\n this._modelData.view.layoutOverlayWidget(widgetData);\r\n }\r\n }\r\n }\r\n removeOverlayWidget(widget) {\r\n const widgetId = widget.getId();\r\n if (this._overlayWidgets.hasOwnProperty(widgetId)) {\r\n const widgetData = this._overlayWidgets[widgetId];\r\n delete this._overlayWidgets[widgetId];\r\n if (this._modelData && this._modelData.hasRealView) {\r\n this._modelData.view.removeOverlayWidget(widgetData);\r\n }\r\n }\r\n }\r\n changeViewZones(callback) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return;\r\n }\r\n this._modelData.view.change(callback);\r\n }\r\n getTargetAtClientPoint(clientX, clientY) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return null;\r\n }\r\n return this._modelData.view.getTargetAtClientPoint(clientX, clientY);\r\n }\r\n getScrolledVisiblePosition(rawPosition) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return null;\r\n }\r\n const position = this._modelData.model.validatePosition(rawPosition);\r\n const options = this._configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const top = CodeEditorWidget._getVerticalOffsetForPosition(this._modelData, position.lineNumber, position.column) - this.getScrollTop();\r\n const left = this._modelData.view.getOffsetForColumn(position.lineNumber, position.column) + layoutInfo.glyphMarginWidth + layoutInfo.lineNumbersWidth + layoutInfo.decorationsWidth - this.getScrollLeft();\r\n return {\r\n top: top,\r\n left: left,\r\n height: options.get(51 /* lineHeight */)\r\n };\r\n }\r\n getOffsetForColumn(lineNumber, column) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return -1;\r\n }\r\n return this._modelData.view.getOffsetForColumn(lineNumber, column);\r\n }\r\n render(forceRedraw = false) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return;\r\n }\r\n this._modelData.view.render(true, forceRedraw);\r\n }\r\n setAriaOptions(options) {\r\n if (!this._modelData || !this._modelData.hasRealView) {\r\n return;\r\n }\r\n this._modelData.view.setAriaOptions(options);\r\n }\r\n applyFontInfo(target) {\r\n Configuration.applyFontInfoSlow(target, this._configuration.options.get(36 /* fontInfo */));\r\n }\r\n _attachModel(model) {\r\n if (!model) {\r\n this._modelData = null;\r\n return;\r\n }\r\n const listenersToRemove = [];\r\n this._domElement.setAttribute('data-mode-id', model.getLanguageIdentifier().language);\r\n this._configuration.setIsDominatedByLongLines(model.isDominatedByLongLines());\r\n this._configuration.setMaxLineNumber(model.getLineCount());\r\n model.onBeforeAttached();\r\n const viewModel = new ViewModel(this._id, this._configuration, model, DOMLineBreaksComputerFactory.create(), MonospaceLineBreaksComputerFactory.create(this._configuration.options), (callback) => dom.scheduleAtNextAnimationFrame(callback));\r\n listenersToRemove.push(model.onDidChangeDecorations((e) => this._onDidChangeModelDecorations.fire(e)));\r\n listenersToRemove.push(model.onDidChangeLanguage((e) => {\r\n this._domElement.setAttribute('data-mode-id', model.getLanguageIdentifier().language);\r\n this._onDidChangeModelLanguage.fire(e);\r\n }));\r\n listenersToRemove.push(model.onDidChangeLanguageConfiguration((e) => this._onDidChangeModelLanguageConfiguration.fire(e)));\r\n listenersToRemove.push(model.onDidChangeContent((e) => this._onDidChangeModelContent.fire(e)));\r\n listenersToRemove.push(model.onDidChangeOptions((e) => this._onDidChangeModelOptions.fire(e)));\r\n // Someone might destroy the model from under the editor, so prevent any exceptions by setting a null model\r\n listenersToRemove.push(model.onWillDispose(() => this.setModel(null)));\r\n listenersToRemove.push(viewModel.onEvent((e) => {\r\n switch (e.kind) {\r\n case 0 /* ContentSizeChanged */:\r\n this._onDidContentSizeChange.fire(e);\r\n break;\r\n case 1 /* FocusChanged */:\r\n this._editorTextFocus.setValue(e.hasFocus);\r\n break;\r\n case 2 /* ScrollChanged */:\r\n this._onDidScrollChange.fire(e);\r\n break;\r\n case 3 /* ViewZonesChanged */:\r\n this._onDidChangeViewZones.fire();\r\n break;\r\n case 4 /* ReadOnlyEditAttempt */:\r\n this._onDidAttemptReadOnlyEdit.fire();\r\n break;\r\n case 5 /* CursorStateChanged */: {\r\n if (e.reachedMaxCursorCount) {\r\n this._notificationService.warn(nls.localize('cursors.maximum', \"The number of cursors has been limited to {0}.\", Cursor.MAX_CURSOR_COUNT));\r\n }\r\n const positions = [];\r\n for (let i = 0, len = e.selections.length; i < len; i++) {\r\n positions[i] = e.selections[i].getPosition();\r\n }\r\n const e1 = {\r\n position: positions[0],\r\n secondaryPositions: positions.slice(1),\r\n reason: e.reason,\r\n source: e.source\r\n };\r\n this._onDidChangeCursorPosition.fire(e1);\r\n const e2 = {\r\n selection: e.selections[0],\r\n secondarySelections: e.selections.slice(1),\r\n modelVersionId: e.modelVersionId,\r\n oldSelections: e.oldSelections,\r\n oldModelVersionId: e.oldModelVersionId,\r\n source: e.source,\r\n reason: e.reason\r\n };\r\n this._onDidChangeCursorSelection.fire(e2);\r\n break;\r\n }\r\n }\r\n }));\r\n const [view, hasRealView] = this._createView(viewModel);\r\n if (hasRealView) {\r\n this._domElement.appendChild(view.domNode.domNode);\r\n let keys = Object.keys(this._contentWidgets);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const widgetId = keys[i];\r\n view.addContentWidget(this._contentWidgets[widgetId]);\r\n }\r\n keys = Object.keys(this._overlayWidgets);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const widgetId = keys[i];\r\n view.addOverlayWidget(this._overlayWidgets[widgetId]);\r\n }\r\n view.render(false, true);\r\n view.domNode.domNode.setAttribute('data-uri', model.uri.toString());\r\n }\r\n this._modelData = new ModelData(model, viewModel, view, hasRealView, listenersToRemove);\r\n }\r\n _createView(viewModel) {\r\n let commandDelegate;\r\n if (this.isSimpleWidget) {\r\n commandDelegate = {\r\n paste: (text, pasteOnNewLine, multicursorText, mode) => {\r\n this._paste('keyboard', text, pasteOnNewLine, multicursorText, mode);\r\n },\r\n type: (text) => {\r\n this._type('keyboard', text);\r\n },\r\n replacePreviousChar: (text, replaceCharCnt) => {\r\n this._replacePreviousChar('keyboard', text, replaceCharCnt);\r\n },\r\n startComposition: () => {\r\n this._startComposition();\r\n },\r\n endComposition: () => {\r\n this._endComposition('keyboard');\r\n },\r\n cut: () => {\r\n this._cut('keyboard');\r\n }\r\n };\r\n }\r\n else {\r\n commandDelegate = {\r\n paste: (text, pasteOnNewLine, multicursorText, mode) => {\r\n const payload = { text, pasteOnNewLine, multicursorText, mode };\r\n this._commandService.executeCommand(\"paste\" /* Paste */, payload);\r\n },\r\n type: (text) => {\r\n const payload = { text };\r\n this._commandService.executeCommand(\"type\" /* Type */, payload);\r\n },\r\n replacePreviousChar: (text, replaceCharCnt) => {\r\n const payload = { text, replaceCharCnt };\r\n this._commandService.executeCommand(\"replacePreviousChar\" /* ReplacePreviousChar */, payload);\r\n },\r\n startComposition: () => {\r\n this._commandService.executeCommand(\"compositionStart\" /* CompositionStart */, {});\r\n },\r\n endComposition: () => {\r\n this._commandService.executeCommand(\"compositionEnd\" /* CompositionEnd */, {});\r\n },\r\n cut: () => {\r\n this._commandService.executeCommand(\"cut\" /* Cut */, {});\r\n }\r\n };\r\n }\r\n const viewUserInputEvents = new ViewUserInputEvents(viewModel.coordinatesConverter);\r\n viewUserInputEvents.onKeyDown = (e) => this._onKeyDown.fire(e);\r\n viewUserInputEvents.onKeyUp = (e) => this._onKeyUp.fire(e);\r\n viewUserInputEvents.onContextMenu = (e) => this._onContextMenu.fire(e);\r\n viewUserInputEvents.onMouseMove = (e) => this._onMouseMove.fire(e);\r\n viewUserInputEvents.onMouseLeave = (e) => this._onMouseLeave.fire(e);\r\n viewUserInputEvents.onMouseDown = (e) => this._onMouseDown.fire(e);\r\n viewUserInputEvents.onMouseUp = (e) => this._onMouseUp.fire(e);\r\n viewUserInputEvents.onMouseDrag = (e) => this._onMouseDrag.fire(e);\r\n viewUserInputEvents.onMouseDrop = (e) => this._onMouseDrop.fire(e);\r\n viewUserInputEvents.onMouseWheel = (e) => this._onMouseWheel.fire(e);\r\n const view = new View(commandDelegate, this._configuration, this._themeService, viewModel, viewUserInputEvents, this._overflowWidgetsDomNode);\r\n return [view, true];\r\n }\r\n _postDetachModelCleanup(detachedModel) {\r\n if (detachedModel) {\r\n detachedModel.removeAllDecorationsWithOwnerId(this._id);\r\n }\r\n }\r\n _detachModel() {\r\n if (!this._modelData) {\r\n return null;\r\n }\r\n const model = this._modelData.model;\r\n const removeDomNode = this._modelData.hasRealView ? this._modelData.view.domNode.domNode : null;\r\n this._modelData.dispose();\r\n this._modelData = null;\r\n this._domElement.removeAttribute('data-mode-id');\r\n if (removeDomNode && this._domElement.contains(removeDomNode)) {\r\n this._domElement.removeChild(removeDomNode);\r\n }\r\n return model;\r\n }\r\n _removeDecorationType(key) {\r\n this._codeEditorService.removeDecorationType(key);\r\n }\r\n hasModel() {\r\n return (this._modelData !== null);\r\n }\r\n};\r\nCodeEditorWidget = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, ICodeEditorService),\r\n __param(5, ICommandService),\r\n __param(6, IContextKeyService),\r\n __param(7, IThemeService),\r\n __param(8, INotificationService),\r\n __param(9, IAccessibilityService)\r\n], CodeEditorWidget);\r\nexport { CodeEditorWidget };\r\nexport class BooleanEventEmitter extends Disposable {\r\n constructor() {\r\n super();\r\n this._onDidChangeToTrue = this._register(new Emitter());\r\n this.onDidChangeToTrue = this._onDidChangeToTrue.event;\r\n this._onDidChangeToFalse = this._register(new Emitter());\r\n this.onDidChangeToFalse = this._onDidChangeToFalse.event;\r\n this._value = 0 /* NotSet */;\r\n }\r\n setValue(_value) {\r\n const value = (_value ? 2 /* True */ : 1 /* False */);\r\n if (this._value === value) {\r\n return;\r\n }\r\n this._value = value;\r\n if (this._value === 2 /* True */) {\r\n this._onDidChangeToTrue.fire();\r\n }\r\n else if (this._value === 1 /* False */) {\r\n this._onDidChangeToFalse.fire();\r\n }\r\n }\r\n}\r\nclass EditorContextKeysManager extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this._editor = editor;\r\n contextKeyService.createKey('editorId', editor.getId());\r\n this._editorSimpleInput = EditorContextKeys.editorSimpleInput.bindTo(contextKeyService);\r\n this._editorFocus = EditorContextKeys.focus.bindTo(contextKeyService);\r\n this._textInputFocus = EditorContextKeys.textInputFocus.bindTo(contextKeyService);\r\n this._editorTextFocus = EditorContextKeys.editorTextFocus.bindTo(contextKeyService);\r\n this._editorTabMovesFocus = EditorContextKeys.tabMovesFocus.bindTo(contextKeyService);\r\n this._editorReadonly = EditorContextKeys.readOnly.bindTo(contextKeyService);\r\n this._editorColumnSelection = EditorContextKeys.columnSelection.bindTo(contextKeyService);\r\n this._hasMultipleSelections = EditorContextKeys.hasMultipleSelections.bindTo(contextKeyService);\r\n this._hasNonEmptySelection = EditorContextKeys.hasNonEmptySelection.bindTo(contextKeyService);\r\n this._canUndo = EditorContextKeys.canUndo.bindTo(contextKeyService);\r\n this._canRedo = EditorContextKeys.canRedo.bindTo(contextKeyService);\r\n this._register(this._editor.onDidChangeConfiguration(() => this._updateFromConfig()));\r\n this._register(this._editor.onDidChangeCursorSelection(() => this._updateFromSelection()));\r\n this._register(this._editor.onDidFocusEditorWidget(() => this._updateFromFocus()));\r\n this._register(this._editor.onDidBlurEditorWidget(() => this._updateFromFocus()));\r\n this._register(this._editor.onDidFocusEditorText(() => this._updateFromFocus()));\r\n this._register(this._editor.onDidBlurEditorText(() => this._updateFromFocus()));\r\n this._register(this._editor.onDidChangeModel(() => this._updateFromModel()));\r\n this._register(this._editor.onDidChangeConfiguration(() => this._updateFromModel()));\r\n this._updateFromConfig();\r\n this._updateFromSelection();\r\n this._updateFromFocus();\r\n this._updateFromModel();\r\n this._editorSimpleInput.set(this._editor.isSimpleWidget);\r\n }\r\n _updateFromConfig() {\r\n const options = this._editor.getOptions();\r\n this._editorTabMovesFocus.set(options.get(116 /* tabFocusMode */));\r\n this._editorReadonly.set(options.get(72 /* readOnly */));\r\n this._editorColumnSelection.set(options.get(13 /* columnSelection */));\r\n }\r\n _updateFromSelection() {\r\n const selections = this._editor.getSelections();\r\n if (!selections) {\r\n this._hasMultipleSelections.reset();\r\n this._hasNonEmptySelection.reset();\r\n }\r\n else {\r\n this._hasMultipleSelections.set(selections.length > 1);\r\n this._hasNonEmptySelection.set(selections.some(s => !s.isEmpty()));\r\n }\r\n }\r\n _updateFromFocus() {\r\n this._editorFocus.set(this._editor.hasWidgetFocus() && !this._editor.isSimpleWidget);\r\n this._editorTextFocus.set(this._editor.hasTextFocus() && !this._editor.isSimpleWidget);\r\n this._textInputFocus.set(this._editor.hasTextFocus());\r\n }\r\n _updateFromModel() {\r\n const model = this._editor.getModel();\r\n this._canUndo.set(Boolean(model && model.canUndo()));\r\n this._canRedo.set(Boolean(model && model.canRedo()));\r\n }\r\n}\r\nexport class EditorModeContext extends Disposable {\r\n constructor(_editor, _contextKeyService) {\r\n super();\r\n this._editor = _editor;\r\n this._contextKeyService = _contextKeyService;\r\n this._langId = EditorContextKeys.languageId.bindTo(_contextKeyService);\r\n this._hasCompletionItemProvider = EditorContextKeys.hasCompletionItemProvider.bindTo(_contextKeyService);\r\n this._hasCodeActionsProvider = EditorContextKeys.hasCodeActionsProvider.bindTo(_contextKeyService);\r\n this._hasCodeLensProvider = EditorContextKeys.hasCodeLensProvider.bindTo(_contextKeyService);\r\n this._hasDefinitionProvider = EditorContextKeys.hasDefinitionProvider.bindTo(_contextKeyService);\r\n this._hasDeclarationProvider = EditorContextKeys.hasDeclarationProvider.bindTo(_contextKeyService);\r\n this._hasImplementationProvider = EditorContextKeys.hasImplementationProvider.bindTo(_contextKeyService);\r\n this._hasTypeDefinitionProvider = EditorContextKeys.hasTypeDefinitionProvider.bindTo(_contextKeyService);\r\n this._hasHoverProvider = EditorContextKeys.hasHoverProvider.bindTo(_contextKeyService);\r\n this._hasDocumentHighlightProvider = EditorContextKeys.hasDocumentHighlightProvider.bindTo(_contextKeyService);\r\n this._hasDocumentSymbolProvider = EditorContextKeys.hasDocumentSymbolProvider.bindTo(_contextKeyService);\r\n this._hasReferenceProvider = EditorContextKeys.hasReferenceProvider.bindTo(_contextKeyService);\r\n this._hasRenameProvider = EditorContextKeys.hasRenameProvider.bindTo(_contextKeyService);\r\n this._hasSignatureHelpProvider = EditorContextKeys.hasSignatureHelpProvider.bindTo(_contextKeyService);\r\n this._hasDocumentFormattingProvider = EditorContextKeys.hasDocumentFormattingProvider.bindTo(_contextKeyService);\r\n this._hasDocumentSelectionFormattingProvider = EditorContextKeys.hasDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\r\n this._hasMultipleDocumentFormattingProvider = EditorContextKeys.hasMultipleDocumentFormattingProvider.bindTo(_contextKeyService);\r\n this._hasMultipleDocumentSelectionFormattingProvider = EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider.bindTo(_contextKeyService);\r\n this._isInWalkThrough = EditorContextKeys.isInWalkThroughSnippet.bindTo(_contextKeyService);\r\n const update = () => this._update();\r\n // update when model/mode changes\r\n this._register(_editor.onDidChangeModel(update));\r\n this._register(_editor.onDidChangeModelLanguage(update));\r\n // update when registries change\r\n this._register(modes.CompletionProviderRegistry.onDidChange(update));\r\n this._register(modes.CodeActionProviderRegistry.onDidChange(update));\r\n this._register(modes.CodeLensProviderRegistry.onDidChange(update));\r\n this._register(modes.DefinitionProviderRegistry.onDidChange(update));\r\n this._register(modes.DeclarationProviderRegistry.onDidChange(update));\r\n this._register(modes.ImplementationProviderRegistry.onDidChange(update));\r\n this._register(modes.TypeDefinitionProviderRegistry.onDidChange(update));\r\n this._register(modes.HoverProviderRegistry.onDidChange(update));\r\n this._register(modes.DocumentHighlightProviderRegistry.onDidChange(update));\r\n this._register(modes.DocumentSymbolProviderRegistry.onDidChange(update));\r\n this._register(modes.ReferenceProviderRegistry.onDidChange(update));\r\n this._register(modes.RenameProviderRegistry.onDidChange(update));\r\n this._register(modes.DocumentFormattingEditProviderRegistry.onDidChange(update));\r\n this._register(modes.DocumentRangeFormattingEditProviderRegistry.onDidChange(update));\r\n this._register(modes.SignatureHelpProviderRegistry.onDidChange(update));\r\n update();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n reset() {\r\n this._contextKeyService.bufferChangeEvents(() => {\r\n this._langId.reset();\r\n this._hasCompletionItemProvider.reset();\r\n this._hasCodeActionsProvider.reset();\r\n this._hasCodeLensProvider.reset();\r\n this._hasDefinitionProvider.reset();\r\n this._hasDeclarationProvider.reset();\r\n this._hasImplementationProvider.reset();\r\n this._hasTypeDefinitionProvider.reset();\r\n this._hasHoverProvider.reset();\r\n this._hasDocumentHighlightProvider.reset();\r\n this._hasDocumentSymbolProvider.reset();\r\n this._hasReferenceProvider.reset();\r\n this._hasRenameProvider.reset();\r\n this._hasDocumentFormattingProvider.reset();\r\n this._hasDocumentSelectionFormattingProvider.reset();\r\n this._hasSignatureHelpProvider.reset();\r\n this._isInWalkThrough.reset();\r\n });\r\n }\r\n _update() {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n this.reset();\r\n return;\r\n }\r\n this._contextKeyService.bufferChangeEvents(() => {\r\n this._langId.set(model.getLanguageIdentifier().language);\r\n this._hasCompletionItemProvider.set(modes.CompletionProviderRegistry.has(model));\r\n this._hasCodeActionsProvider.set(modes.CodeActionProviderRegistry.has(model));\r\n this._hasCodeLensProvider.set(modes.CodeLensProviderRegistry.has(model));\r\n this._hasDefinitionProvider.set(modes.DefinitionProviderRegistry.has(model));\r\n this._hasDeclarationProvider.set(modes.DeclarationProviderRegistry.has(model));\r\n this._hasImplementationProvider.set(modes.ImplementationProviderRegistry.has(model));\r\n this._hasTypeDefinitionProvider.set(modes.TypeDefinitionProviderRegistry.has(model));\r\n this._hasHoverProvider.set(modes.HoverProviderRegistry.has(model));\r\n this._hasDocumentHighlightProvider.set(modes.DocumentHighlightProviderRegistry.has(model));\r\n this._hasDocumentSymbolProvider.set(modes.DocumentSymbolProviderRegistry.has(model));\r\n this._hasReferenceProvider.set(modes.ReferenceProviderRegistry.has(model));\r\n this._hasRenameProvider.set(modes.RenameProviderRegistry.has(model));\r\n this._hasSignatureHelpProvider.set(modes.SignatureHelpProviderRegistry.has(model));\r\n this._hasDocumentFormattingProvider.set(modes.DocumentFormattingEditProviderRegistry.has(model) || modes.DocumentRangeFormattingEditProviderRegistry.has(model));\r\n this._hasDocumentSelectionFormattingProvider.set(modes.DocumentRangeFormattingEditProviderRegistry.has(model));\r\n this._hasMultipleDocumentFormattingProvider.set(modes.DocumentFormattingEditProviderRegistry.all(model).length + modes.DocumentRangeFormattingEditProviderRegistry.all(model).length > 1);\r\n this._hasMultipleDocumentSelectionFormattingProvider.set(modes.DocumentRangeFormattingEditProviderRegistry.all(model).length > 1);\r\n this._isInWalkThrough.set(model.uri.scheme === Schemas.walkThroughSnippet);\r\n });\r\n }\r\n}\r\nclass CodeEditorWidgetFocusTracker extends Disposable {\r\n constructor(domElement) {\r\n super();\r\n this._onChange = this._register(new Emitter());\r\n this.onChange = this._onChange.event;\r\n this._hasFocus = false;\r\n this._domFocusTracker = this._register(dom.trackFocus(domElement));\r\n this._register(this._domFocusTracker.onDidFocus(() => {\r\n this._hasFocus = true;\r\n this._onChange.fire(undefined);\r\n }));\r\n this._register(this._domFocusTracker.onDidBlur(() => {\r\n this._hasFocus = false;\r\n this._onChange.fire(undefined);\r\n }));\r\n }\r\n hasFocus() {\r\n return this._hasFocus;\r\n }\r\n}\r\nconst squigglyStart = encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 3' enable-background='new 0 0 6 3' height='3' width='6'><g fill='`);\r\nconst squigglyEnd = encodeURIComponent(`'><polygon points='5.5,0 2.5,3 1.1,3 4.1,0'/><polygon points='4,0 6,2 6,0.6 5.4,0'/><polygon points='0,2 1,3 2.4,3 0,0.6'/></g></svg>`);\r\nfunction getSquigglySVGData(color) {\r\n return squigglyStart + encodeURIComponent(color.toString()) + squigglyEnd;\r\n}\r\nconst dotdotdotStart = encodeURIComponent(`<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"3\" width=\"12\"><g fill=\"`);\r\nconst dotdotdotEnd = encodeURIComponent(`\"><circle cx=\"1\" cy=\"1\" r=\"1\"/><circle cx=\"5\" cy=\"1\" r=\"1\"/><circle cx=\"9\" cy=\"1\" r=\"1\"/></g></svg>`);\r\nfunction getDotDotDotSVGData(color) {\r\n return dotdotdotStart + encodeURIComponent(color.toString()) + dotdotdotEnd;\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const errorBorderColor = theme.getColor(editorErrorBorder);\r\n if (errorBorderColor) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-error\" /* EditorErrorDecoration */} { border-bottom: 4px double ${errorBorderColor}; }`);\r\n }\r\n const errorForeground = theme.getColor(editorErrorForeground);\r\n if (errorForeground) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-error\" /* EditorErrorDecoration */} { background: url(\"data:image/svg+xml,${getSquigglySVGData(errorForeground)}\") repeat-x bottom left; }`);\r\n }\r\n const warningBorderColor = theme.getColor(editorWarningBorder);\r\n if (warningBorderColor) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-warning\" /* EditorWarningDecoration */} { border-bottom: 4px double ${warningBorderColor}; }`);\r\n }\r\n const warningForeground = theme.getColor(editorWarningForeground);\r\n if (warningForeground) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-warning\" /* EditorWarningDecoration */} { background: url(\"data:image/svg+xml,${getSquigglySVGData(warningForeground)}\") repeat-x bottom left; }`);\r\n }\r\n const infoBorderColor = theme.getColor(editorInfoBorder);\r\n if (infoBorderColor) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-info\" /* EditorInfoDecoration */} { border-bottom: 4px double ${infoBorderColor}; }`);\r\n }\r\n const infoForeground = theme.getColor(editorInfoForeground);\r\n if (infoForeground) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-info\" /* EditorInfoDecoration */} { background: url(\"data:image/svg+xml,${getSquigglySVGData(infoForeground)}\") repeat-x bottom left; }`);\r\n }\r\n const hintBorderColor = theme.getColor(editorHintBorder);\r\n if (hintBorderColor) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-hint\" /* EditorHintDecoration */} { border-bottom: 2px dotted ${hintBorderColor}; }`);\r\n }\r\n const hintForeground = theme.getColor(editorHintForeground);\r\n if (hintForeground) {\r\n collector.addRule(`.monaco-editor .${\"squiggly-hint\" /* EditorHintDecoration */} { background: url(\"data:image/svg+xml,${getDotDotDotSVGData(hintForeground)}\") no-repeat bottom left; }`);\r\n }\r\n const unnecessaryForeground = theme.getColor(editorUnnecessaryCodeOpacity);\r\n if (unnecessaryForeground) {\r\n collector.addRule(`.monaco-editor.showUnused .${\"squiggly-inline-unnecessary\" /* EditorUnnecessaryInlineDecoration */} { opacity: ${unnecessaryForeground.rgba.a}; }`);\r\n }\r\n const unnecessaryBorder = theme.getColor(editorUnnecessaryCodeBorder);\r\n if (unnecessaryBorder) {\r\n collector.addRule(`.monaco-editor.showUnused .${\"squiggly-unnecessary\" /* EditorUnnecessaryDecoration */} { border-bottom: 2px dashed ${unnecessaryBorder}; }`);\r\n }\r\n const deprecatedForeground = theme.getColor(editorForeground) || 'inherit';\r\n collector.addRule(`.monaco-editor.showDeprecated .${\"squiggly-inline-deprecated\" /* EditorDeprecatedInlineDecoration */} { text-decoration: line-through; text-decoration-color: ${deprecatedForeground}}`);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './media/diffEditor.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { StableEditorScrollState } from '../core/editorState.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { CodeEditorWidget } from './codeEditorWidget.js';\r\nimport { DiffReview } from './diffReview.js';\r\nimport { EditorOptions, EditorFontLigatures } from '../../common/config/editorOptions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { createStringBuilder } from '../../common/core/stringBuilder.js';\r\nimport * as editorCommon from '../../common/editorCommon.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { OverviewRulerZone } from '../../common/view/overviewZoneManager.js';\r\nimport { LineDecoration } from '../../common/viewLayout/lineDecorations.js';\r\nimport { RenderLineInput, renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { InlineDecoration, ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { defaultInsertColor, defaultRemoveColor, diffBorder, diffInserted, diffInsertedOutline, diffRemoved, diffRemovedOutline, scrollbarShadow, scrollbarSliderBackground, scrollbarSliderHoverBackground, scrollbarSliderActiveBackground, diffDiagonalFill } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, getThemeTypeSelector, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { InlineDiffMargin } from './inlineDiffMargin.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { EditorExtensionsRegistry } from '../editorExtensions.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { ElementSizeObserver } from '../config/elementSizeObserver.js';\r\nimport { Codicon, registerIcon } from '../../../base/common/codicons.js';\r\nimport { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from '../../../base/browser/ui/mouseCursor/mouseCursor.js';\r\nclass VisualEditorState {\r\n constructor(_contextMenuService, _clipboardService) {\r\n this._contextMenuService = _contextMenuService;\r\n this._clipboardService = _clipboardService;\r\n this._zones = [];\r\n this.inlineDiffMargins = [];\r\n this._zonesMap = {};\r\n this._decorations = [];\r\n }\r\n getForeignViewZones(allViewZones) {\r\n return allViewZones.filter((z) => !this._zonesMap[String(z.id)]);\r\n }\r\n clean(editor) {\r\n // (1) View zones\r\n if (this._zones.length > 0) {\r\n editor.changeViewZones((viewChangeAccessor) => {\r\n for (let i = 0, length = this._zones.length; i < length; i++) {\r\n viewChangeAccessor.removeZone(this._zones[i]);\r\n }\r\n });\r\n }\r\n this._zones = [];\r\n this._zonesMap = {};\r\n // (2) Model decorations\r\n this._decorations = editor.deltaDecorations(this._decorations, []);\r\n }\r\n apply(editor, overviewRuler, newDecorations, restoreScrollState) {\r\n const scrollState = restoreScrollState ? StableEditorScrollState.capture(editor) : null;\r\n // view zones\r\n editor.changeViewZones((viewChangeAccessor) => {\r\n for (let i = 0, length = this._zones.length; i < length; i++) {\r\n viewChangeAccessor.removeZone(this._zones[i]);\r\n }\r\n for (let i = 0, length = this.inlineDiffMargins.length; i < length; i++) {\r\n this.inlineDiffMargins[i].dispose();\r\n }\r\n this._zones = [];\r\n this._zonesMap = {};\r\n this.inlineDiffMargins = [];\r\n for (let i = 0, length = newDecorations.zones.length; i < length; i++) {\r\n const viewZone = newDecorations.zones[i];\r\n viewZone.suppressMouseDown = true;\r\n let zoneId = viewChangeAccessor.addZone(viewZone);\r\n this._zones.push(zoneId);\r\n this._zonesMap[String(zoneId)] = true;\r\n if (newDecorations.zones[i].diff && viewZone.marginDomNode) {\r\n viewZone.suppressMouseDown = false;\r\n this.inlineDiffMargins.push(new InlineDiffMargin(zoneId, viewZone.marginDomNode, editor, newDecorations.zones[i].diff, this._contextMenuService, this._clipboardService));\r\n }\r\n }\r\n });\r\n if (scrollState) {\r\n scrollState.restore(editor);\r\n }\r\n // decorations\r\n this._decorations = editor.deltaDecorations(this._decorations, newDecorations.decorations);\r\n // overview ruler\r\n if (overviewRuler) {\r\n overviewRuler.setZones(newDecorations.overviewZones);\r\n }\r\n }\r\n}\r\nlet DIFF_EDITOR_ID = 0;\r\nconst diffInsertIcon = registerIcon('diff-insert', Codicon.add);\r\nconst diffRemoveIcon = registerIcon('diff-remove', Codicon.remove);\r\nlet DiffEditorWidget = class DiffEditorWidget extends Disposable {\r\n constructor(domElement, options, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, _editorProgressService) {\r\n super();\r\n this._editorProgressService = _editorProgressService;\r\n this._onDidDispose = this._register(new Emitter());\r\n this.onDidDispose = this._onDidDispose.event;\r\n this._onDidUpdateDiff = this._register(new Emitter());\r\n this.onDidUpdateDiff = this._onDidUpdateDiff.event;\r\n this._onDidContentSizeChange = this._register(new Emitter());\r\n this._lastOriginalWarning = null;\r\n this._lastModifiedWarning = null;\r\n this._editorWorkerService = editorWorkerService;\r\n this._codeEditorService = codeEditorService;\r\n this._contextKeyService = this._register(contextKeyService.createScoped(domElement));\r\n this._contextKeyService.createKey('isInDiffEditor', true);\r\n this._themeService = themeService;\r\n this._notificationService = notificationService;\r\n this.id = (++DIFF_EDITOR_ID);\r\n this._state = 0 /* Idle */;\r\n this._updatingDiffProgress = null;\r\n this._domElement = domElement;\r\n options = options || {};\r\n // renderSideBySide\r\n this._renderSideBySide = true;\r\n if (typeof options.renderSideBySide !== 'undefined') {\r\n this._renderSideBySide = options.renderSideBySide;\r\n }\r\n // maxComputationTime\r\n this._maxComputationTime = 5000;\r\n if (typeof options.maxComputationTime !== 'undefined') {\r\n this._maxComputationTime = options.maxComputationTime;\r\n }\r\n // ignoreTrimWhitespace\r\n this._ignoreTrimWhitespace = true;\r\n if (typeof options.ignoreTrimWhitespace !== 'undefined') {\r\n this._ignoreTrimWhitespace = options.ignoreTrimWhitespace;\r\n }\r\n // renderIndicators\r\n this._renderIndicators = true;\r\n if (typeof options.renderIndicators !== 'undefined') {\r\n this._renderIndicators = options.renderIndicators;\r\n }\r\n this._originalIsEditable = false;\r\n if (typeof options.originalEditable !== 'undefined') {\r\n this._originalIsEditable = Boolean(options.originalEditable);\r\n }\r\n this._originalCodeLens = false;\r\n if (typeof options.originalCodeLens !== 'undefined') {\r\n this._originalCodeLens = Boolean(options.originalCodeLens);\r\n }\r\n this._modifiedCodeLens = false;\r\n if (typeof options.modifiedCodeLens !== 'undefined') {\r\n this._modifiedCodeLens = Boolean(options.modifiedCodeLens);\r\n }\r\n this._updateDecorationsRunner = this._register(new RunOnceScheduler(() => this._updateDecorations(), 0));\r\n this._containerDomElement = document.createElement('div');\r\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._renderSideBySide);\r\n this._containerDomElement.style.position = 'relative';\r\n this._containerDomElement.style.height = '100%';\r\n this._domElement.appendChild(this._containerDomElement);\r\n this._overviewViewportDomElement = createFastDomNode(document.createElement('div'));\r\n this._overviewViewportDomElement.setClassName('diffViewport');\r\n this._overviewViewportDomElement.setPosition('absolute');\r\n this._overviewDomElement = document.createElement('div');\r\n this._overviewDomElement.className = 'diffOverview';\r\n this._overviewDomElement.style.position = 'absolute';\r\n this._overviewDomElement.appendChild(this._overviewViewportDomElement.domNode);\r\n this._register(dom.addStandardDisposableListener(this._overviewDomElement, 'mousedown', (e) => {\r\n this.modifiedEditor.delegateVerticalScrollbarMouseDown(e);\r\n }));\r\n this._containerDomElement.appendChild(this._overviewDomElement);\r\n // Create left side\r\n this._originalDomNode = document.createElement('div');\r\n this._originalDomNode.className = 'editor original';\r\n this._originalDomNode.style.position = 'absolute';\r\n this._originalDomNode.style.height = '100%';\r\n this._containerDomElement.appendChild(this._originalDomNode);\r\n // Create right side\r\n this._modifiedDomNode = document.createElement('div');\r\n this._modifiedDomNode.className = 'editor modified';\r\n this._modifiedDomNode.style.position = 'absolute';\r\n this._modifiedDomNode.style.height = '100%';\r\n this._containerDomElement.appendChild(this._modifiedDomNode);\r\n this._beginUpdateDecorationsTimeout = -1;\r\n this._currentlyChangingViewZones = false;\r\n this._diffComputationToken = 0;\r\n this._originalEditorState = new VisualEditorState(contextMenuService, clipboardService);\r\n this._modifiedEditorState = new VisualEditorState(contextMenuService, clipboardService);\r\n this._isVisible = true;\r\n this._isHandlingScrollEvent = false;\r\n this._elementSizeObserver = this._register(new ElementSizeObserver(this._containerDomElement, undefined, () => this._onDidContainerSizeChanged()));\r\n if (options.automaticLayout) {\r\n this._elementSizeObserver.startObserving();\r\n }\r\n this._diffComputationResult = null;\r\n const leftContextKeyService = this._contextKeyService.createScoped();\r\n const leftServices = new ServiceCollection();\r\n leftServices.set(IContextKeyService, leftContextKeyService);\r\n const leftScopedInstantiationService = instantiationService.createChild(leftServices);\r\n const rightContextKeyService = this._contextKeyService.createScoped();\r\n const rightServices = new ServiceCollection();\r\n rightServices.set(IContextKeyService, rightContextKeyService);\r\n const rightScopedInstantiationService = instantiationService.createChild(rightServices);\r\n this.originalEditor = this._createLeftHandSideEditor(options, leftScopedInstantiationService, leftContextKeyService);\r\n this.modifiedEditor = this._createRightHandSideEditor(options, rightScopedInstantiationService, rightContextKeyService);\r\n this._originalOverviewRuler = null;\r\n this._modifiedOverviewRuler = null;\r\n this._reviewPane = new DiffReview(this);\r\n this._containerDomElement.appendChild(this._reviewPane.domNode.domNode);\r\n this._containerDomElement.appendChild(this._reviewPane.shadow.domNode);\r\n this._containerDomElement.appendChild(this._reviewPane.actionBarContainer.domNode);\r\n // enableSplitViewResizing\r\n this._enableSplitViewResizing = true;\r\n if (typeof options.enableSplitViewResizing !== 'undefined') {\r\n this._enableSplitViewResizing = options.enableSplitViewResizing;\r\n }\r\n if (this._renderSideBySide) {\r\n this._setStrategy(new DiffEditorWidgetSideBySide(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n else {\r\n this._setStrategy(new DiffEditorWidgetInline(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n this._register(themeService.onDidColorThemeChange(t => {\r\n if (this._strategy && this._strategy.applyColors(t)) {\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._renderSideBySide);\r\n }));\r\n const contributions = EditorExtensionsRegistry.getDiffEditorContributions();\r\n for (const desc of contributions) {\r\n try {\r\n this._register(instantiationService.createInstance(desc.ctor, this));\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n }\r\n this._codeEditorService.addDiffEditor(this);\r\n }\r\n _setState(newState) {\r\n if (this._state === newState) {\r\n return;\r\n }\r\n this._state = newState;\r\n if (this._updatingDiffProgress) {\r\n this._updatingDiffProgress.done();\r\n this._updatingDiffProgress = null;\r\n }\r\n if (this._state === 1 /* ComputingDiff */) {\r\n this._updatingDiffProgress = this._editorProgressService.show(true, 1000);\r\n }\r\n }\r\n diffReviewNext() {\r\n this._reviewPane.next();\r\n }\r\n diffReviewPrev() {\r\n this._reviewPane.prev();\r\n }\r\n static _getClassName(theme, renderSideBySide) {\r\n let result = 'monaco-diff-editor monaco-editor-background ';\r\n if (renderSideBySide) {\r\n result += 'side-by-side ';\r\n }\r\n result += getThemeTypeSelector(theme.type);\r\n return result;\r\n }\r\n _recreateOverviewRulers() {\r\n if (this._originalOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode());\r\n this._originalOverviewRuler.dispose();\r\n }\r\n if (this.originalEditor.hasModel()) {\r\n this._originalOverviewRuler = this.originalEditor.createOverviewRuler('original diffOverviewRuler');\r\n this._overviewDomElement.appendChild(this._originalOverviewRuler.getDomNode());\r\n }\r\n if (this._modifiedOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode());\r\n this._modifiedOverviewRuler.dispose();\r\n }\r\n if (this.modifiedEditor.hasModel()) {\r\n this._modifiedOverviewRuler = this.modifiedEditor.createOverviewRuler('modified diffOverviewRuler');\r\n this._overviewDomElement.appendChild(this._modifiedOverviewRuler.getDomNode());\r\n }\r\n this._layoutOverviewRulers();\r\n }\r\n _createLeftHandSideEditor(options, instantiationService, contextKeyService) {\r\n const editor = this._createInnerEditor(instantiationService, this._originalDomNode, this._adjustOptionsForLeftHandSide(options, this._originalIsEditable, this._originalCodeLens));\r\n this._register(editor.onDidScrollChange((e) => {\r\n if (this._isHandlingScrollEvent) {\r\n return;\r\n }\r\n if (!e.scrollTopChanged && !e.scrollLeftChanged && !e.scrollHeightChanged) {\r\n return;\r\n }\r\n this._isHandlingScrollEvent = true;\r\n this.modifiedEditor.setScrollPosition({\r\n scrollLeft: e.scrollLeft,\r\n scrollTop: e.scrollTop\r\n });\r\n this._isHandlingScrollEvent = false;\r\n this._layoutOverviewViewport();\r\n }));\r\n this._register(editor.onDidChangeViewZones(() => {\r\n this._onViewZonesChanged();\r\n }));\r\n this._register(editor.onDidChangeModelContent(() => {\r\n if (this._isVisible) {\r\n this._beginUpdateDecorationsSoon();\r\n }\r\n }));\r\n const isInDiffLeftEditorKey = contextKeyService.createKey('isInDiffLeftEditor', undefined);\r\n this._register(editor.onDidFocusEditorWidget(() => isInDiffLeftEditorKey.set(true)));\r\n this._register(editor.onDidBlurEditorWidget(() => isInDiffLeftEditorKey.set(false)));\r\n this._register(editor.onDidContentSizeChange(e => {\r\n const width = this.originalEditor.getContentWidth() + this.modifiedEditor.getContentWidth() + DiffEditorWidget.ONE_OVERVIEW_WIDTH;\r\n const height = Math.max(this.modifiedEditor.getContentHeight(), this.originalEditor.getContentHeight());\r\n this._onDidContentSizeChange.fire({\r\n contentHeight: height,\r\n contentWidth: width,\r\n contentHeightChanged: e.contentHeightChanged,\r\n contentWidthChanged: e.contentWidthChanged\r\n });\r\n }));\r\n return editor;\r\n }\r\n _createRightHandSideEditor(options, instantiationService, contextKeyService) {\r\n const editor = this._createInnerEditor(instantiationService, this._modifiedDomNode, this._adjustOptionsForRightHandSide(options, this._modifiedCodeLens));\r\n this._register(editor.onDidScrollChange((e) => {\r\n if (this._isHandlingScrollEvent) {\r\n return;\r\n }\r\n if (!e.scrollTopChanged && !e.scrollLeftChanged && !e.scrollHeightChanged) {\r\n return;\r\n }\r\n this._isHandlingScrollEvent = true;\r\n this.originalEditor.setScrollPosition({\r\n scrollLeft: e.scrollLeft,\r\n scrollTop: e.scrollTop\r\n });\r\n this._isHandlingScrollEvent = false;\r\n this._layoutOverviewViewport();\r\n }));\r\n this._register(editor.onDidChangeViewZones(() => {\r\n this._onViewZonesChanged();\r\n }));\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(36 /* fontInfo */) && editor.getModel()) {\r\n this._onViewZonesChanged();\r\n }\r\n }));\r\n this._register(editor.onDidChangeModelContent(() => {\r\n if (this._isVisible) {\r\n this._beginUpdateDecorationsSoon();\r\n }\r\n }));\r\n this._register(editor.onDidChangeModelOptions((e) => {\r\n if (e.tabSize) {\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n }));\r\n const isInDiffRightEditorKey = contextKeyService.createKey('isInDiffRightEditor', undefined);\r\n this._register(editor.onDidFocusEditorWidget(() => isInDiffRightEditorKey.set(true)));\r\n this._register(editor.onDidBlurEditorWidget(() => isInDiffRightEditorKey.set(false)));\r\n this._register(editor.onDidContentSizeChange(e => {\r\n const width = this.originalEditor.getContentWidth() + this.modifiedEditor.getContentWidth() + DiffEditorWidget.ONE_OVERVIEW_WIDTH;\r\n const height = Math.max(this.modifiedEditor.getContentHeight(), this.originalEditor.getContentHeight());\r\n this._onDidContentSizeChange.fire({\r\n contentHeight: height,\r\n contentWidth: width,\r\n contentHeightChanged: e.contentHeightChanged,\r\n contentWidthChanged: e.contentWidthChanged\r\n });\r\n }));\r\n return editor;\r\n }\r\n _createInnerEditor(instantiationService, container, options) {\r\n return instantiationService.createInstance(CodeEditorWidget, container, options, {});\r\n }\r\n dispose() {\r\n this._codeEditorService.removeDiffEditor(this);\r\n if (this._beginUpdateDecorationsTimeout !== -1) {\r\n window.clearTimeout(this._beginUpdateDecorationsTimeout);\r\n this._beginUpdateDecorationsTimeout = -1;\r\n }\r\n this._cleanViewZonesAndDecorations();\r\n if (this._originalOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._originalOverviewRuler.getDomNode());\r\n this._originalOverviewRuler.dispose();\r\n }\r\n if (this._modifiedOverviewRuler) {\r\n this._overviewDomElement.removeChild(this._modifiedOverviewRuler.getDomNode());\r\n this._modifiedOverviewRuler.dispose();\r\n }\r\n this._overviewDomElement.removeChild(this._overviewViewportDomElement.domNode);\r\n this._containerDomElement.removeChild(this._overviewDomElement);\r\n this._containerDomElement.removeChild(this._originalDomNode);\r\n this.originalEditor.dispose();\r\n this._containerDomElement.removeChild(this._modifiedDomNode);\r\n this.modifiedEditor.dispose();\r\n this._strategy.dispose();\r\n this._containerDomElement.removeChild(this._reviewPane.domNode.domNode);\r\n this._containerDomElement.removeChild(this._reviewPane.shadow.domNode);\r\n this._containerDomElement.removeChild(this._reviewPane.actionBarContainer.domNode);\r\n this._reviewPane.dispose();\r\n this._domElement.removeChild(this._containerDomElement);\r\n this._onDidDispose.fire();\r\n super.dispose();\r\n }\r\n //------------ begin IDiffEditor methods\r\n getId() {\r\n return this.getEditorType() + ':' + this.id;\r\n }\r\n getEditorType() {\r\n return editorCommon.EditorType.IDiffEditor;\r\n }\r\n getLineChanges() {\r\n if (!this._diffComputationResult) {\r\n return null;\r\n }\r\n return this._diffComputationResult.changes;\r\n }\r\n getOriginalEditor() {\r\n return this.originalEditor;\r\n }\r\n getModifiedEditor() {\r\n return this.modifiedEditor;\r\n }\r\n updateOptions(newOptions) {\r\n // Handle side by side\r\n let renderSideBySideChanged = false;\r\n if (typeof newOptions.renderSideBySide !== 'undefined') {\r\n if (this._renderSideBySide !== newOptions.renderSideBySide) {\r\n this._renderSideBySide = newOptions.renderSideBySide;\r\n renderSideBySideChanged = true;\r\n }\r\n }\r\n if (typeof newOptions.maxComputationTime !== 'undefined') {\r\n this._maxComputationTime = newOptions.maxComputationTime;\r\n if (this._isVisible) {\r\n this._beginUpdateDecorationsSoon();\r\n }\r\n }\r\n let beginUpdateDecorations = false;\r\n if (typeof newOptions.ignoreTrimWhitespace !== 'undefined') {\r\n if (this._ignoreTrimWhitespace !== newOptions.ignoreTrimWhitespace) {\r\n this._ignoreTrimWhitespace = newOptions.ignoreTrimWhitespace;\r\n // Begin comparing\r\n beginUpdateDecorations = true;\r\n }\r\n }\r\n if (typeof newOptions.renderIndicators !== 'undefined') {\r\n if (this._renderIndicators !== newOptions.renderIndicators) {\r\n this._renderIndicators = newOptions.renderIndicators;\r\n beginUpdateDecorations = true;\r\n }\r\n }\r\n if (beginUpdateDecorations) {\r\n this._beginUpdateDecorations();\r\n }\r\n if (typeof newOptions.originalEditable !== 'undefined') {\r\n this._originalIsEditable = Boolean(newOptions.originalEditable);\r\n }\r\n if (typeof newOptions.originalCodeLens !== 'undefined') {\r\n this._originalCodeLens = Boolean(newOptions.originalCodeLens);\r\n }\r\n if (typeof newOptions.modifiedCodeLens !== 'undefined') {\r\n this._modifiedCodeLens = Boolean(newOptions.modifiedCodeLens);\r\n }\r\n this.modifiedEditor.updateOptions(this._adjustOptionsForRightHandSide(newOptions, this._modifiedCodeLens));\r\n this.originalEditor.updateOptions(this._adjustOptionsForLeftHandSide(newOptions, this._originalIsEditable, this._originalCodeLens));\r\n // enableSplitViewResizing\r\n if (typeof newOptions.enableSplitViewResizing !== 'undefined') {\r\n this._enableSplitViewResizing = newOptions.enableSplitViewResizing;\r\n }\r\n this._strategy.setEnableSplitViewResizing(this._enableSplitViewResizing);\r\n // renderSideBySide\r\n if (renderSideBySideChanged) {\r\n if (this._renderSideBySide) {\r\n this._setStrategy(new DiffEditorWidgetSideBySide(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n else {\r\n this._setStrategy(new DiffEditorWidgetInline(this._createDataSource(), this._enableSplitViewResizing));\r\n }\r\n // Update class name\r\n this._containerDomElement.className = DiffEditorWidget._getClassName(this._themeService.getColorTheme(), this._renderSideBySide);\r\n }\r\n }\r\n getModel() {\r\n return {\r\n original: this.originalEditor.getModel(),\r\n modified: this.modifiedEditor.getModel()\r\n };\r\n }\r\n setModel(model) {\r\n // Guard us against partial null model\r\n if (model && (!model.original || !model.modified)) {\r\n throw new Error(!model.original ? 'DiffEditorWidget.setModel: Original model is null' : 'DiffEditorWidget.setModel: Modified model is null');\r\n }\r\n // Remove all view zones & decorations\r\n this._cleanViewZonesAndDecorations();\r\n // Update code editor models\r\n this.originalEditor.setModel(model ? model.original : null);\r\n this.modifiedEditor.setModel(model ? model.modified : null);\r\n this._updateDecorationsRunner.cancel();\r\n // this.originalEditor.onDidChangeModelOptions\r\n if (model) {\r\n this.originalEditor.setScrollTop(0);\r\n this.modifiedEditor.setScrollTop(0);\r\n }\r\n // Disable any diff computations that will come in\r\n this._diffComputationResult = null;\r\n this._diffComputationToken++;\r\n this._setState(0 /* Idle */);\r\n if (model) {\r\n this._recreateOverviewRulers();\r\n // Begin comparing\r\n this._beginUpdateDecorations();\r\n }\r\n this._layoutOverviewViewport();\r\n }\r\n getDomNode() {\r\n return this._domElement;\r\n }\r\n getVisibleColumnFromPosition(position) {\r\n return this.modifiedEditor.getVisibleColumnFromPosition(position);\r\n }\r\n getPosition() {\r\n return this.modifiedEditor.getPosition();\r\n }\r\n setPosition(position) {\r\n this.modifiedEditor.setPosition(position);\r\n }\r\n revealLine(lineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLine(lineNumber, scrollType);\r\n }\r\n revealLineInCenter(lineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLineInCenter(lineNumber, scrollType);\r\n }\r\n revealLineInCenterIfOutsideViewport(lineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLineInCenterIfOutsideViewport(lineNumber, scrollType);\r\n }\r\n revealLineNearTop(lineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLineNearTop(lineNumber, scrollType);\r\n }\r\n revealPosition(position, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealPosition(position, scrollType);\r\n }\r\n revealPositionInCenter(position, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealPositionInCenter(position, scrollType);\r\n }\r\n revealPositionInCenterIfOutsideViewport(position, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealPositionInCenterIfOutsideViewport(position, scrollType);\r\n }\r\n revealPositionNearTop(position, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealPositionNearTop(position, scrollType);\r\n }\r\n getSelection() {\r\n return this.modifiedEditor.getSelection();\r\n }\r\n getSelections() {\r\n return this.modifiedEditor.getSelections();\r\n }\r\n setSelection(something) {\r\n this.modifiedEditor.setSelection(something);\r\n }\r\n setSelections(ranges) {\r\n this.modifiedEditor.setSelections(ranges);\r\n }\r\n revealLines(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLines(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealLinesInCenter(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLinesInCenter(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLinesInCenterIfOutsideViewport(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealLinesNearTop(startLineNumber, endLineNumber, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealLinesNearTop(startLineNumber, endLineNumber, scrollType);\r\n }\r\n revealRange(range, scrollType = 0 /* Smooth */, revealVerticalInCenter = false, revealHorizontal = true) {\r\n this.modifiedEditor.revealRange(range, scrollType, revealVerticalInCenter, revealHorizontal);\r\n }\r\n revealRangeInCenter(range, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealRangeInCenter(range, scrollType);\r\n }\r\n revealRangeInCenterIfOutsideViewport(range, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealRangeInCenterIfOutsideViewport(range, scrollType);\r\n }\r\n revealRangeNearTop(range, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealRangeNearTop(range, scrollType);\r\n }\r\n revealRangeNearTopIfOutsideViewport(range, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealRangeNearTopIfOutsideViewport(range, scrollType);\r\n }\r\n revealRangeAtTop(range, scrollType = 0 /* Smooth */) {\r\n this.modifiedEditor.revealRangeAtTop(range, scrollType);\r\n }\r\n getSupportedActions() {\r\n return this.modifiedEditor.getSupportedActions();\r\n }\r\n saveViewState() {\r\n let originalViewState = this.originalEditor.saveViewState();\r\n let modifiedViewState = this.modifiedEditor.saveViewState();\r\n return {\r\n original: originalViewState,\r\n modified: modifiedViewState\r\n };\r\n }\r\n restoreViewState(s) {\r\n if (s.original && s.modified) {\r\n let diffEditorState = s;\r\n this.originalEditor.restoreViewState(diffEditorState.original);\r\n this.modifiedEditor.restoreViewState(diffEditorState.modified);\r\n }\r\n }\r\n layout(dimension) {\r\n this._elementSizeObserver.observe(dimension);\r\n }\r\n focus() {\r\n this.modifiedEditor.focus();\r\n }\r\n hasTextFocus() {\r\n return this.originalEditor.hasTextFocus() || this.modifiedEditor.hasTextFocus();\r\n }\r\n trigger(source, handlerId, payload) {\r\n this.modifiedEditor.trigger(source, handlerId, payload);\r\n }\r\n changeDecorations(callback) {\r\n return this.modifiedEditor.changeDecorations(callback);\r\n }\r\n //------------ end IDiffEditor methods\r\n //------------ begin layouting methods\r\n _onDidContainerSizeChanged() {\r\n this._doLayout();\r\n }\r\n _getReviewHeight() {\r\n return this._reviewPane.isVisible() ? this._elementSizeObserver.getHeight() : 0;\r\n }\r\n _layoutOverviewRulers() {\r\n if (!this._originalOverviewRuler || !this._modifiedOverviewRuler) {\r\n return;\r\n }\r\n const height = this._elementSizeObserver.getHeight();\r\n const reviewHeight = this._getReviewHeight();\r\n let freeSpace = DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH - 2 * DiffEditorWidget.ONE_OVERVIEW_WIDTH;\r\n let layoutInfo = this.modifiedEditor.getLayoutInfo();\r\n if (layoutInfo) {\r\n this._originalOverviewRuler.setLayout({\r\n top: 0,\r\n width: DiffEditorWidget.ONE_OVERVIEW_WIDTH,\r\n right: freeSpace + DiffEditorWidget.ONE_OVERVIEW_WIDTH,\r\n height: (height - reviewHeight)\r\n });\r\n this._modifiedOverviewRuler.setLayout({\r\n top: 0,\r\n right: 0,\r\n width: DiffEditorWidget.ONE_OVERVIEW_WIDTH,\r\n height: (height - reviewHeight)\r\n });\r\n }\r\n }\r\n //------------ end layouting methods\r\n _onViewZonesChanged() {\r\n if (this._currentlyChangingViewZones) {\r\n return;\r\n }\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n _beginUpdateDecorationsSoon() {\r\n // Clear previous timeout if necessary\r\n if (this._beginUpdateDecorationsTimeout !== -1) {\r\n window.clearTimeout(this._beginUpdateDecorationsTimeout);\r\n this._beginUpdateDecorationsTimeout = -1;\r\n }\r\n this._beginUpdateDecorationsTimeout = window.setTimeout(() => this._beginUpdateDecorations(), DiffEditorWidget.UPDATE_DIFF_DECORATIONS_DELAY);\r\n }\r\n static _equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (!a || !b) {\r\n return false;\r\n }\r\n return (a.toString() === b.toString());\r\n }\r\n _beginUpdateDecorations() {\r\n this._beginUpdateDecorationsTimeout = -1;\r\n const currentOriginalModel = this.originalEditor.getModel();\r\n const currentModifiedModel = this.modifiedEditor.getModel();\r\n if (!currentOriginalModel || !currentModifiedModel) {\r\n return;\r\n }\r\n // Prevent old diff requests to come if a new request has been initiated\r\n // The best method would be to call cancel on the Promise, but this is not\r\n // yet supported, so using tokens for now.\r\n this._diffComputationToken++;\r\n let currentToken = this._diffComputationToken;\r\n this._setState(1 /* ComputingDiff */);\r\n if (!this._editorWorkerService.canComputeDiff(currentOriginalModel.uri, currentModifiedModel.uri)) {\r\n if (!DiffEditorWidget._equals(currentOriginalModel.uri, this._lastOriginalWarning)\r\n || !DiffEditorWidget._equals(currentModifiedModel.uri, this._lastModifiedWarning)) {\r\n this._lastOriginalWarning = currentOriginalModel.uri;\r\n this._lastModifiedWarning = currentModifiedModel.uri;\r\n this._notificationService.warn(nls.localize(\"diff.tooLarge\", \"Cannot compare files because one file is too large.\"));\r\n }\r\n return;\r\n }\r\n this._editorWorkerService.computeDiff(currentOriginalModel.uri, currentModifiedModel.uri, this._ignoreTrimWhitespace, this._maxComputationTime).then((result) => {\r\n if (currentToken === this._diffComputationToken\r\n && currentOriginalModel === this.originalEditor.getModel()\r\n && currentModifiedModel === this.modifiedEditor.getModel()) {\r\n this._setState(2 /* DiffComputed */);\r\n this._diffComputationResult = result;\r\n this._updateDecorationsRunner.schedule();\r\n this._onDidUpdateDiff.fire();\r\n }\r\n }, (error) => {\r\n if (currentToken === this._diffComputationToken\r\n && currentOriginalModel === this.originalEditor.getModel()\r\n && currentModifiedModel === this.modifiedEditor.getModel()) {\r\n this._setState(2 /* DiffComputed */);\r\n this._diffComputationResult = null;\r\n this._updateDecorationsRunner.schedule();\r\n }\r\n });\r\n }\r\n _cleanViewZonesAndDecorations() {\r\n this._originalEditorState.clean(this.originalEditor);\r\n this._modifiedEditorState.clean(this.modifiedEditor);\r\n }\r\n _updateDecorations() {\r\n if (!this.originalEditor.getModel() || !this.modifiedEditor.getModel() || !this._originalOverviewRuler || !this._modifiedOverviewRuler) {\r\n return;\r\n }\r\n const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []);\r\n let foreignOriginal = this._originalEditorState.getForeignViewZones(this.originalEditor.getWhitespaces());\r\n let foreignModified = this._modifiedEditorState.getForeignViewZones(this.modifiedEditor.getWhitespaces());\r\n let diffDecorations = this._strategy.getEditorsDiffDecorations(lineChanges, this._ignoreTrimWhitespace, this._renderIndicators, foreignOriginal, foreignModified, this.originalEditor, this.modifiedEditor);\r\n try {\r\n this._currentlyChangingViewZones = true;\r\n this._originalEditorState.apply(this.originalEditor, this._originalOverviewRuler, diffDecorations.original, false);\r\n this._modifiedEditorState.apply(this.modifiedEditor, this._modifiedOverviewRuler, diffDecorations.modified, true);\r\n }\r\n finally {\r\n this._currentlyChangingViewZones = false;\r\n }\r\n }\r\n _adjustOptionsForSubEditor(options) {\r\n let clonedOptions = objects.deepClone(options || {});\r\n clonedOptions.inDiffEditor = true;\r\n clonedOptions.wordWrap = 'off';\r\n clonedOptions.wordWrapMinified = false;\r\n clonedOptions.automaticLayout = false;\r\n clonedOptions.scrollbar = clonedOptions.scrollbar || {};\r\n clonedOptions.scrollbar.vertical = 'visible';\r\n clonedOptions.folding = false;\r\n clonedOptions.codeLens = false;\r\n clonedOptions.fixedOverflowWidgets = true;\r\n clonedOptions.overflowWidgetsDomNode = options.overflowWidgetsDomNode;\r\n // clonedOptions.lineDecorationsWidth = '2ch';\r\n if (!clonedOptions.minimap) {\r\n clonedOptions.minimap = {};\r\n }\r\n clonedOptions.minimap.enabled = false;\r\n return clonedOptions;\r\n }\r\n _adjustOptionsForLeftHandSide(options, isEditable, isCodeLensEnabled) {\r\n let result = this._adjustOptionsForSubEditor(options);\r\n if (isCodeLensEnabled) {\r\n result.codeLens = true;\r\n }\r\n result.readOnly = !isEditable;\r\n result.extraEditorClassName = 'original-in-monaco-diff-editor';\r\n return result;\r\n }\r\n _adjustOptionsForRightHandSide(options, isCodeLensEnabled) {\r\n let result = this._adjustOptionsForSubEditor(options);\r\n if (isCodeLensEnabled) {\r\n result.codeLens = true;\r\n }\r\n result.revealHorizontalRightPadding = EditorOptions.revealHorizontalRightPadding.defaultValue + DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH;\r\n result.scrollbar.verticalHasArrows = false;\r\n result.extraEditorClassName = 'modified-in-monaco-diff-editor';\r\n return result;\r\n }\r\n doLayout() {\r\n this._elementSizeObserver.observe();\r\n this._doLayout();\r\n }\r\n _doLayout() {\r\n const width = this._elementSizeObserver.getWidth();\r\n const height = this._elementSizeObserver.getHeight();\r\n const reviewHeight = this._getReviewHeight();\r\n let splitPoint = this._strategy.layout();\r\n this._originalDomNode.style.width = splitPoint + 'px';\r\n this._originalDomNode.style.left = '0px';\r\n this._modifiedDomNode.style.width = (width - splitPoint) + 'px';\r\n this._modifiedDomNode.style.left = splitPoint + 'px';\r\n this._overviewDomElement.style.top = '0px';\r\n this._overviewDomElement.style.height = (height - reviewHeight) + 'px';\r\n this._overviewDomElement.style.width = DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH + 'px';\r\n this._overviewDomElement.style.left = (width - DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH) + 'px';\r\n this._overviewViewportDomElement.setWidth(DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH);\r\n this._overviewViewportDomElement.setHeight(30);\r\n this.originalEditor.layout({ width: splitPoint, height: (height - reviewHeight) });\r\n this.modifiedEditor.layout({ width: width - splitPoint - DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH, height: (height - reviewHeight) });\r\n if (this._originalOverviewRuler || this._modifiedOverviewRuler) {\r\n this._layoutOverviewRulers();\r\n }\r\n this._reviewPane.layout(height - reviewHeight, width, reviewHeight);\r\n this._layoutOverviewViewport();\r\n }\r\n _layoutOverviewViewport() {\r\n let layout = this._computeOverviewViewport();\r\n if (!layout) {\r\n this._overviewViewportDomElement.setTop(0);\r\n this._overviewViewportDomElement.setHeight(0);\r\n }\r\n else {\r\n this._overviewViewportDomElement.setTop(layout.top);\r\n this._overviewViewportDomElement.setHeight(layout.height);\r\n }\r\n }\r\n _computeOverviewViewport() {\r\n let layoutInfo = this.modifiedEditor.getLayoutInfo();\r\n if (!layoutInfo) {\r\n return null;\r\n }\r\n let scrollTop = this.modifiedEditor.getScrollTop();\r\n let scrollHeight = this.modifiedEditor.getScrollHeight();\r\n let computedAvailableSize = Math.max(0, layoutInfo.height);\r\n let computedRepresentableSize = Math.max(0, computedAvailableSize - 2 * 0);\r\n let computedRatio = scrollHeight > 0 ? (computedRepresentableSize / scrollHeight) : 0;\r\n let computedSliderSize = Math.max(0, Math.floor(layoutInfo.height * computedRatio));\r\n let computedSliderPosition = Math.floor(scrollTop * computedRatio);\r\n return {\r\n height: computedSliderSize,\r\n top: computedSliderPosition\r\n };\r\n }\r\n _createDataSource() {\r\n return {\r\n getWidth: () => {\r\n return this._elementSizeObserver.getWidth();\r\n },\r\n getHeight: () => {\r\n return (this._elementSizeObserver.getHeight() - this._getReviewHeight());\r\n },\r\n getContainerDomNode: () => {\r\n return this._containerDomElement;\r\n },\r\n relayoutEditors: () => {\r\n this._doLayout();\r\n },\r\n getOriginalEditor: () => {\r\n return this.originalEditor;\r\n },\r\n getModifiedEditor: () => {\r\n return this.modifiedEditor;\r\n }\r\n };\r\n }\r\n _setStrategy(newStrategy) {\r\n if (this._strategy) {\r\n this._strategy.dispose();\r\n }\r\n this._strategy = newStrategy;\r\n newStrategy.applyColors(this._themeService.getColorTheme());\r\n if (this._diffComputationResult) {\r\n this._updateDecorations();\r\n }\r\n // Just do a layout, the strategy might need it\r\n this._doLayout();\r\n }\r\n _getLineChangeAtOrBeforeLineNumber(lineNumber, startLineNumberExtractor) {\r\n const lineChanges = (this._diffComputationResult ? this._diffComputationResult.changes : []);\r\n if (lineChanges.length === 0 || lineNumber < startLineNumberExtractor(lineChanges[0])) {\r\n // There are no changes or `lineNumber` is before the first change\r\n return null;\r\n }\r\n let min = 0, max = lineChanges.length - 1;\r\n while (min < max) {\r\n let mid = Math.floor((min + max) / 2);\r\n let midStart = startLineNumberExtractor(lineChanges[mid]);\r\n let midEnd = (mid + 1 <= max ? startLineNumberExtractor(lineChanges[mid + 1]) : 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n if (lineNumber < midStart) {\r\n max = mid - 1;\r\n }\r\n else if (lineNumber >= midEnd) {\r\n min = mid + 1;\r\n }\r\n else {\r\n // HIT!\r\n min = mid;\r\n max = mid;\r\n }\r\n }\r\n return lineChanges[min];\r\n }\r\n _getEquivalentLineForOriginalLineNumber(lineNumber) {\r\n let lineChange = this._getLineChangeAtOrBeforeLineNumber(lineNumber, (lineChange) => lineChange.originalStartLineNumber);\r\n if (!lineChange) {\r\n return lineNumber;\r\n }\r\n let originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\r\n let modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\r\n let lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\r\n let lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\r\n let delta = lineNumber - originalEquivalentLineNumber;\r\n if (delta <= lineChangeOriginalLength) {\r\n return modifiedEquivalentLineNumber + Math.min(delta, lineChangeModifiedLength);\r\n }\r\n return modifiedEquivalentLineNumber + lineChangeModifiedLength - lineChangeOriginalLength + delta;\r\n }\r\n _getEquivalentLineForModifiedLineNumber(lineNumber) {\r\n let lineChange = this._getLineChangeAtOrBeforeLineNumber(lineNumber, (lineChange) => lineChange.modifiedStartLineNumber);\r\n if (!lineChange) {\r\n return lineNumber;\r\n }\r\n let originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\r\n let modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\r\n let lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\r\n let lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\r\n let delta = lineNumber - modifiedEquivalentLineNumber;\r\n if (delta <= lineChangeModifiedLength) {\r\n return originalEquivalentLineNumber + Math.min(delta, lineChangeOriginalLength);\r\n }\r\n return originalEquivalentLineNumber + lineChangeOriginalLength - lineChangeModifiedLength + delta;\r\n }\r\n getDiffLineInformationForOriginal(lineNumber) {\r\n if (!this._diffComputationResult) {\r\n // Cannot answer that which I don't know\r\n return null;\r\n }\r\n return {\r\n equivalentLineNumber: this._getEquivalentLineForOriginalLineNumber(lineNumber)\r\n };\r\n }\r\n getDiffLineInformationForModified(lineNumber) {\r\n if (!this._diffComputationResult) {\r\n // Cannot answer that which I don't know\r\n return null;\r\n }\r\n return {\r\n equivalentLineNumber: this._getEquivalentLineForModifiedLineNumber(lineNumber)\r\n };\r\n }\r\n};\r\nDiffEditorWidget.ONE_OVERVIEW_WIDTH = 15;\r\nDiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH = 30;\r\nDiffEditorWidget.UPDATE_DIFF_DECORATIONS_DELAY = 200; // ms\r\nDiffEditorWidget = __decorate([\r\n __param(2, IClipboardService),\r\n __param(3, IEditorWorkerService),\r\n __param(4, IContextKeyService),\r\n __param(5, IInstantiationService),\r\n __param(6, ICodeEditorService),\r\n __param(7, IThemeService),\r\n __param(8, INotificationService),\r\n __param(9, IContextMenuService),\r\n __param(10, IEditorProgressService)\r\n], DiffEditorWidget);\r\nexport { DiffEditorWidget };\r\nclass DiffEditorWidgetStyle extends Disposable {\r\n constructor(dataSource) {\r\n super();\r\n this._dataSource = dataSource;\r\n this._insertColor = null;\r\n this._removeColor = null;\r\n }\r\n applyColors(theme) {\r\n let newInsertColor = (theme.getColor(diffInserted) || defaultInsertColor).transparent(2);\r\n let newRemoveColor = (theme.getColor(diffRemoved) || defaultRemoveColor).transparent(2);\r\n let hasChanges = !newInsertColor.equals(this._insertColor) || !newRemoveColor.equals(this._removeColor);\r\n this._insertColor = newInsertColor;\r\n this._removeColor = newRemoveColor;\r\n return hasChanges;\r\n }\r\n getEditorsDiffDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalWhitespaces, modifiedWhitespaces, originalEditor, modifiedEditor) {\r\n // Get view zones\r\n modifiedWhitespaces = modifiedWhitespaces.sort((a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n });\r\n originalWhitespaces = originalWhitespaces.sort((a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n });\r\n let zones = this._getViewZones(lineChanges, originalWhitespaces, modifiedWhitespaces, originalEditor, modifiedEditor, renderIndicators);\r\n // Get decorations & overview ruler zones\r\n let originalDecorations = this._getOriginalEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalEditor, modifiedEditor);\r\n let modifiedDecorations = this._getModifiedEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalEditor, modifiedEditor);\r\n return {\r\n original: {\r\n decorations: originalDecorations.decorations,\r\n overviewZones: originalDecorations.overviewZones,\r\n zones: zones.original\r\n },\r\n modified: {\r\n decorations: modifiedDecorations.decorations,\r\n overviewZones: modifiedDecorations.overviewZones,\r\n zones: zones.modified\r\n }\r\n };\r\n }\r\n}\r\nclass ForeignViewZonesIterator {\r\n constructor(source) {\r\n this._source = source;\r\n this._index = -1;\r\n this.current = null;\r\n this.advance();\r\n }\r\n advance() {\r\n this._index++;\r\n if (this._index < this._source.length) {\r\n this.current = this._source[this._index];\r\n }\r\n else {\r\n this.current = null;\r\n }\r\n }\r\n}\r\nclass ViewZonesComputer {\r\n constructor(lineChanges, originalForeignVZ, originalLineHeight, modifiedForeignVZ, modifiedLineHeight) {\r\n this.lineChanges = lineChanges;\r\n this.originalForeignVZ = originalForeignVZ;\r\n this.originalLineHeight = originalLineHeight;\r\n this.modifiedForeignVZ = modifiedForeignVZ;\r\n this.modifiedLineHeight = modifiedLineHeight;\r\n }\r\n getViewZones() {\r\n let result = {\r\n original: [],\r\n modified: []\r\n };\r\n let lineChangeModifiedLength = 0;\r\n let lineChangeOriginalLength = 0;\r\n let originalEquivalentLineNumber = 0;\r\n let modifiedEquivalentLineNumber = 0;\r\n let originalEndEquivalentLineNumber = 0;\r\n let modifiedEndEquivalentLineNumber = 0;\r\n let sortMyViewZones = (a, b) => {\r\n return a.afterLineNumber - b.afterLineNumber;\r\n };\r\n let addAndCombineIfPossible = (destination, item) => {\r\n if (item.domNode === null && destination.length > 0) {\r\n let lastItem = destination[destination.length - 1];\r\n if (lastItem.afterLineNumber === item.afterLineNumber && lastItem.domNode === null) {\r\n lastItem.heightInLines += item.heightInLines;\r\n return;\r\n }\r\n }\r\n destination.push(item);\r\n };\r\n let modifiedForeignVZ = new ForeignViewZonesIterator(this.modifiedForeignVZ);\r\n let originalForeignVZ = new ForeignViewZonesIterator(this.originalForeignVZ);\r\n // In order to include foreign view zones after the last line change, the for loop will iterate once more after the end of the `lineChanges` array\r\n for (let i = 0, length = this.lineChanges.length; i <= length; i++) {\r\n let lineChange = (i < length ? this.lineChanges[i] : null);\r\n if (lineChange !== null) {\r\n originalEquivalentLineNumber = lineChange.originalStartLineNumber + (lineChange.originalEndLineNumber > 0 ? -1 : 0);\r\n modifiedEquivalentLineNumber = lineChange.modifiedStartLineNumber + (lineChange.modifiedEndLineNumber > 0 ? -1 : 0);\r\n lineChangeOriginalLength = (lineChange.originalEndLineNumber > 0 ? (lineChange.originalEndLineNumber - lineChange.originalStartLineNumber + 1) : 0);\r\n lineChangeModifiedLength = (lineChange.modifiedEndLineNumber > 0 ? (lineChange.modifiedEndLineNumber - lineChange.modifiedStartLineNumber + 1) : 0);\r\n originalEndEquivalentLineNumber = Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber);\r\n modifiedEndEquivalentLineNumber = Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber);\r\n }\r\n else {\r\n // Increase to very large value to get the producing tests of foreign view zones running\r\n originalEquivalentLineNumber += 10000000 + lineChangeOriginalLength;\r\n modifiedEquivalentLineNumber += 10000000 + lineChangeModifiedLength;\r\n originalEndEquivalentLineNumber = originalEquivalentLineNumber;\r\n modifiedEndEquivalentLineNumber = modifiedEquivalentLineNumber;\r\n }\r\n // Each step produces view zones, and after producing them, we try to cancel them out, to avoid empty-empty view zone cases\r\n let stepOriginal = [];\r\n let stepModified = [];\r\n // ---------------------------- PRODUCE VIEW ZONES\r\n // [PRODUCE] View zone(s) in original-side due to foreign view zone(s) in modified-side\r\n while (modifiedForeignVZ.current && modifiedForeignVZ.current.afterLineNumber <= modifiedEndEquivalentLineNumber) {\r\n let viewZoneLineNumber;\r\n if (modifiedForeignVZ.current.afterLineNumber <= modifiedEquivalentLineNumber) {\r\n viewZoneLineNumber = originalEquivalentLineNumber - modifiedEquivalentLineNumber + modifiedForeignVZ.current.afterLineNumber;\r\n }\r\n else {\r\n viewZoneLineNumber = originalEndEquivalentLineNumber;\r\n }\r\n let marginDomNode = null;\r\n if (lineChange && lineChange.modifiedStartLineNumber <= modifiedForeignVZ.current.afterLineNumber && modifiedForeignVZ.current.afterLineNumber <= lineChange.modifiedEndLineNumber) {\r\n marginDomNode = this._createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion();\r\n }\r\n stepOriginal.push({\r\n afterLineNumber: viewZoneLineNumber,\r\n heightInLines: modifiedForeignVZ.current.height / this.modifiedLineHeight,\r\n domNode: null,\r\n marginDomNode: marginDomNode\r\n });\r\n modifiedForeignVZ.advance();\r\n }\r\n // [PRODUCE] View zone(s) in modified-side due to foreign view zone(s) in original-side\r\n while (originalForeignVZ.current && originalForeignVZ.current.afterLineNumber <= originalEndEquivalentLineNumber) {\r\n let viewZoneLineNumber;\r\n if (originalForeignVZ.current.afterLineNumber <= originalEquivalentLineNumber) {\r\n viewZoneLineNumber = modifiedEquivalentLineNumber - originalEquivalentLineNumber + originalForeignVZ.current.afterLineNumber;\r\n }\r\n else {\r\n viewZoneLineNumber = modifiedEndEquivalentLineNumber;\r\n }\r\n stepModified.push({\r\n afterLineNumber: viewZoneLineNumber,\r\n heightInLines: originalForeignVZ.current.height / this.originalLineHeight,\r\n domNode: null\r\n });\r\n originalForeignVZ.advance();\r\n }\r\n if (lineChange !== null && isChangeOrInsert(lineChange)) {\r\n let r = this._produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength);\r\n if (r) {\r\n stepOriginal.push(r);\r\n }\r\n }\r\n if (lineChange !== null && isChangeOrDelete(lineChange)) {\r\n let r = this._produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength);\r\n if (r) {\r\n stepModified.push(r);\r\n }\r\n }\r\n // ---------------------------- END PRODUCE VIEW ZONES\r\n // ---------------------------- EMIT MINIMAL VIEW ZONES\r\n // [CANCEL & EMIT] Try to cancel view zones out\r\n let stepOriginalIndex = 0;\r\n let stepModifiedIndex = 0;\r\n stepOriginal = stepOriginal.sort(sortMyViewZones);\r\n stepModified = stepModified.sort(sortMyViewZones);\r\n while (stepOriginalIndex < stepOriginal.length && stepModifiedIndex < stepModified.length) {\r\n let original = stepOriginal[stepOriginalIndex];\r\n let modified = stepModified[stepModifiedIndex];\r\n let originalDelta = original.afterLineNumber - originalEquivalentLineNumber;\r\n let modifiedDelta = modified.afterLineNumber - modifiedEquivalentLineNumber;\r\n if (originalDelta < modifiedDelta) {\r\n addAndCombineIfPossible(result.original, original);\r\n stepOriginalIndex++;\r\n }\r\n else if (modifiedDelta < originalDelta) {\r\n addAndCombineIfPossible(result.modified, modified);\r\n stepModifiedIndex++;\r\n }\r\n else if (original.shouldNotShrink) {\r\n addAndCombineIfPossible(result.original, original);\r\n stepOriginalIndex++;\r\n }\r\n else if (modified.shouldNotShrink) {\r\n addAndCombineIfPossible(result.modified, modified);\r\n stepModifiedIndex++;\r\n }\r\n else {\r\n if (original.heightInLines >= modified.heightInLines) {\r\n // modified view zone gets removed\r\n original.heightInLines -= modified.heightInLines;\r\n stepModifiedIndex++;\r\n }\r\n else {\r\n // original view zone gets removed\r\n modified.heightInLines -= original.heightInLines;\r\n stepOriginalIndex++;\r\n }\r\n }\r\n }\r\n // [EMIT] Remaining original view zones\r\n while (stepOriginalIndex < stepOriginal.length) {\r\n addAndCombineIfPossible(result.original, stepOriginal[stepOriginalIndex]);\r\n stepOriginalIndex++;\r\n }\r\n // [EMIT] Remaining modified view zones\r\n while (stepModifiedIndex < stepModified.length) {\r\n addAndCombineIfPossible(result.modified, stepModified[stepModifiedIndex]);\r\n stepModifiedIndex++;\r\n }\r\n // ---------------------------- END EMIT MINIMAL VIEW ZONES\r\n }\r\n return {\r\n original: ViewZonesComputer._ensureDomNodes(result.original),\r\n modified: ViewZonesComputer._ensureDomNodes(result.modified),\r\n };\r\n }\r\n static _ensureDomNodes(zones) {\r\n return zones.map((z) => {\r\n if (!z.domNode) {\r\n z.domNode = createFakeLinesDiv();\r\n }\r\n return z;\r\n });\r\n }\r\n}\r\nexport function createDecoration(startLineNumber, startColumn, endLineNumber, endColumn, options) {\r\n return {\r\n range: new Range(startLineNumber, startColumn, endLineNumber, endColumn),\r\n options: options\r\n };\r\n}\r\nexport const DECORATIONS = {\r\n charDelete: ModelDecorationOptions.register({\r\n className: 'char-delete'\r\n }),\r\n charDeleteWholeLine: ModelDecorationOptions.register({\r\n className: 'char-delete',\r\n isWholeLine: true\r\n }),\r\n charInsert: ModelDecorationOptions.register({\r\n className: 'char-insert'\r\n }),\r\n charInsertWholeLine: ModelDecorationOptions.register({\r\n className: 'char-insert',\r\n isWholeLine: true\r\n }),\r\n lineInsert: ModelDecorationOptions.register({\r\n className: 'line-insert',\r\n marginClassName: 'line-insert',\r\n isWholeLine: true\r\n }),\r\n lineInsertWithSign: ModelDecorationOptions.register({\r\n className: 'line-insert',\r\n linesDecorationsClassName: 'insert-sign ' + diffInsertIcon.classNames,\r\n marginClassName: 'line-insert',\r\n isWholeLine: true\r\n }),\r\n lineDelete: ModelDecorationOptions.register({\r\n className: 'line-delete',\r\n marginClassName: 'line-delete',\r\n isWholeLine: true\r\n }),\r\n lineDeleteWithSign: ModelDecorationOptions.register({\r\n className: 'line-delete',\r\n linesDecorationsClassName: 'delete-sign ' + diffRemoveIcon.classNames,\r\n marginClassName: 'line-delete',\r\n isWholeLine: true\r\n }),\r\n lineDeleteMargin: ModelDecorationOptions.register({\r\n marginClassName: 'line-delete',\r\n })\r\n};\r\nexport class DiffEditorWidgetSideBySide extends DiffEditorWidgetStyle {\r\n constructor(dataSource, enableSplitViewResizing) {\r\n super(dataSource);\r\n this._disableSash = (enableSplitViewResizing === false);\r\n this._sashRatio = null;\r\n this._sashPosition = null;\r\n this._startSashPosition = null;\r\n this._sash = this._register(new Sash(this._dataSource.getContainerDomNode(), this, { orientation: 0 /* VERTICAL */ }));\r\n if (this._disableSash) {\r\n this._sash.state = 0 /* Disabled */;\r\n }\r\n this._sash.onDidStart(() => this.onSashDragStart());\r\n this._sash.onDidChange((e) => this.onSashDrag(e));\r\n this._sash.onDidEnd(() => this.onSashDragEnd());\r\n this._sash.onDidReset(() => this.onSashReset());\r\n }\r\n setEnableSplitViewResizing(enableSplitViewResizing) {\r\n let newDisableSash = (enableSplitViewResizing === false);\r\n if (this._disableSash !== newDisableSash) {\r\n this._disableSash = newDisableSash;\r\n this._sash.state = this._disableSash ? 0 /* Disabled */ : 3 /* Enabled */;\r\n }\r\n }\r\n layout(sashRatio = this._sashRatio) {\r\n let w = this._dataSource.getWidth();\r\n let contentWidth = w - DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH;\r\n let sashPosition = Math.floor((sashRatio || 0.5) * contentWidth);\r\n let midPoint = Math.floor(0.5 * contentWidth);\r\n sashPosition = this._disableSash ? midPoint : sashPosition || midPoint;\r\n if (contentWidth > DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH * 2) {\r\n if (sashPosition < DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH) {\r\n sashPosition = DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH;\r\n }\r\n if (sashPosition > contentWidth - DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH) {\r\n sashPosition = contentWidth - DiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH;\r\n }\r\n }\r\n else {\r\n sashPosition = midPoint;\r\n }\r\n if (this._sashPosition !== sashPosition) {\r\n this._sashPosition = sashPosition;\r\n this._sash.layout();\r\n }\r\n return this._sashPosition;\r\n }\r\n onSashDragStart() {\r\n this._startSashPosition = this._sashPosition;\r\n }\r\n onSashDrag(e) {\r\n let w = this._dataSource.getWidth();\r\n let contentWidth = w - DiffEditorWidget.ENTIRE_DIFF_OVERVIEW_WIDTH;\r\n let sashPosition = this.layout((this._startSashPosition + (e.currentX - e.startX)) / contentWidth);\r\n this._sashRatio = sashPosition / contentWidth;\r\n this._dataSource.relayoutEditors();\r\n }\r\n onSashDragEnd() {\r\n this._sash.layout();\r\n }\r\n onSashReset() {\r\n this._sashRatio = 0.5;\r\n this._dataSource.relayoutEditors();\r\n this._sash.layout();\r\n }\r\n getVerticalSashTop(sash) {\r\n return 0;\r\n }\r\n getVerticalSashLeft(sash) {\r\n return this._sashPosition;\r\n }\r\n getVerticalSashHeight(sash) {\r\n return this._dataSource.getHeight();\r\n }\r\n _getViewZones(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor) {\r\n let c = new SideBySideViewZonesComputer(lineChanges, originalForeignVZ, originalEditor.getOption(51 /* lineHeight */), modifiedForeignVZ, modifiedEditor.getOption(51 /* lineHeight */));\r\n return c.getViewZones();\r\n }\r\n _getOriginalEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalEditor, modifiedEditor) {\r\n const overviewZoneColor = String(this._removeColor);\r\n let result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n let originalModel = originalEditor.getModel();\r\n for (let i = 0, length = lineChanges.length; i < length; i++) {\r\n let lineChange = lineChanges[i];\r\n if (isChangeOrDelete(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: (renderIndicators ? DECORATIONS.lineDeleteWithSign : DECORATIONS.lineDelete)\r\n });\r\n if (!isChangeOrInsert(lineChange) || !lineChange.charChanges) {\r\n result.decorations.push(createDecoration(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charDeleteWholeLine));\r\n }\r\n result.overviewZones.push(new OverviewRulerZone(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber, overviewZoneColor));\r\n if (lineChange.charChanges) {\r\n for (let j = 0, lengthJ = lineChange.charChanges.length; j < lengthJ; j++) {\r\n let charChange = lineChange.charChanges[j];\r\n if (isChangeOrDelete(charChange)) {\r\n if (ignoreTrimWhitespace) {\r\n for (let lineNumber = charChange.originalStartLineNumber; lineNumber <= charChange.originalEndLineNumber; lineNumber++) {\r\n let startColumn;\r\n let endColumn;\r\n if (lineNumber === charChange.originalStartLineNumber) {\r\n startColumn = charChange.originalStartColumn;\r\n }\r\n else {\r\n startColumn = originalModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n if (lineNumber === charChange.originalEndLineNumber) {\r\n endColumn = charChange.originalEndColumn;\r\n }\r\n else {\r\n endColumn = originalModel.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charDelete));\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn, DECORATIONS.charDelete));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n _getModifiedEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalEditor, modifiedEditor) {\r\n const overviewZoneColor = String(this._insertColor);\r\n let result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n let modifiedModel = modifiedEditor.getModel();\r\n for (let i = 0, length = lineChanges.length; i < length; i++) {\r\n let lineChange = lineChanges[i];\r\n if (isChangeOrInsert(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: (renderIndicators ? DECORATIONS.lineInsertWithSign : DECORATIONS.lineInsert)\r\n });\r\n if (!isChangeOrDelete(lineChange) || !lineChange.charChanges) {\r\n result.decorations.push(createDecoration(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charInsertWholeLine));\r\n }\r\n result.overviewZones.push(new OverviewRulerZone(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber, overviewZoneColor));\r\n if (lineChange.charChanges) {\r\n for (let j = 0, lengthJ = lineChange.charChanges.length; j < lengthJ; j++) {\r\n let charChange = lineChange.charChanges[j];\r\n if (isChangeOrInsert(charChange)) {\r\n if (ignoreTrimWhitespace) {\r\n for (let lineNumber = charChange.modifiedStartLineNumber; lineNumber <= charChange.modifiedEndLineNumber; lineNumber++) {\r\n let startColumn;\r\n let endColumn;\r\n if (lineNumber === charChange.modifiedStartLineNumber) {\r\n startColumn = charChange.modifiedStartColumn;\r\n }\r\n else {\r\n startColumn = modifiedModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n if (lineNumber === charChange.modifiedEndLineNumber) {\r\n endColumn = charChange.modifiedEndColumn;\r\n }\r\n else {\r\n endColumn = modifiedModel.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\nDiffEditorWidgetSideBySide.MINIMUM_EDITOR_WIDTH = 100;\r\nclass SideBySideViewZonesComputer extends ViewZonesComputer {\r\n constructor(lineChanges, originalForeignVZ, originalLineHeight, modifiedForeignVZ, modifiedLineHeight) {\r\n super(lineChanges, originalForeignVZ, originalLineHeight, modifiedForeignVZ, modifiedLineHeight);\r\n }\r\n _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {\r\n return null;\r\n }\r\n _produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n if (lineChangeModifiedLength > lineChangeOriginalLength) {\r\n return {\r\n afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber),\r\n heightInLines: (lineChangeModifiedLength - lineChangeOriginalLength),\r\n domNode: null\r\n };\r\n }\r\n return null;\r\n }\r\n _produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n if (lineChangeOriginalLength > lineChangeModifiedLength) {\r\n return {\r\n afterLineNumber: Math.max(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber),\r\n heightInLines: (lineChangeOriginalLength - lineChangeModifiedLength),\r\n domNode: null\r\n };\r\n }\r\n return null;\r\n }\r\n}\r\nclass DiffEditorWidgetInline extends DiffEditorWidgetStyle {\r\n constructor(dataSource, enableSplitViewResizing) {\r\n super(dataSource);\r\n this.decorationsLeft = dataSource.getOriginalEditor().getLayoutInfo().decorationsLeft;\r\n this._register(dataSource.getOriginalEditor().onDidLayoutChange((layoutInfo) => {\r\n if (this.decorationsLeft !== layoutInfo.decorationsLeft) {\r\n this.decorationsLeft = layoutInfo.decorationsLeft;\r\n dataSource.relayoutEditors();\r\n }\r\n }));\r\n }\r\n setEnableSplitViewResizing(enableSplitViewResizing) {\r\n // Nothing to do..\r\n }\r\n _getViewZones(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators) {\r\n let computer = new InlineViewZonesComputer(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators);\r\n return computer.getViewZones();\r\n }\r\n _getOriginalEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalEditor, modifiedEditor) {\r\n const overviewZoneColor = String(this._removeColor);\r\n let result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n for (let i = 0, length = lineChanges.length; i < length; i++) {\r\n let lineChange = lineChanges[i];\r\n // Add overview zones in the overview ruler\r\n if (isChangeOrDelete(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.originalStartLineNumber, 1, lineChange.originalEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: DECORATIONS.lineDeleteMargin\r\n });\r\n result.overviewZones.push(new OverviewRulerZone(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber, overviewZoneColor));\r\n }\r\n }\r\n return result;\r\n }\r\n _getModifiedEditorDecorations(lineChanges, ignoreTrimWhitespace, renderIndicators, originalEditor, modifiedEditor) {\r\n const overviewZoneColor = String(this._insertColor);\r\n let result = {\r\n decorations: [],\r\n overviewZones: []\r\n };\r\n let modifiedModel = modifiedEditor.getModel();\r\n for (let i = 0, length = lineChanges.length; i < length; i++) {\r\n let lineChange = lineChanges[i];\r\n // Add decorations & overview zones\r\n if (isChangeOrInsert(lineChange)) {\r\n result.decorations.push({\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */),\r\n options: (renderIndicators ? DECORATIONS.lineInsertWithSign : DECORATIONS.lineInsert)\r\n });\r\n result.overviewZones.push(new OverviewRulerZone(lineChange.modifiedStartLineNumber, lineChange.modifiedEndLineNumber, overviewZoneColor));\r\n if (lineChange.charChanges) {\r\n for (let j = 0, lengthJ = lineChange.charChanges.length; j < lengthJ; j++) {\r\n let charChange = lineChange.charChanges[j];\r\n if (isChangeOrInsert(charChange)) {\r\n if (ignoreTrimWhitespace) {\r\n for (let lineNumber = charChange.modifiedStartLineNumber; lineNumber <= charChange.modifiedEndLineNumber; lineNumber++) {\r\n let startColumn;\r\n let endColumn;\r\n if (lineNumber === charChange.modifiedStartLineNumber) {\r\n startColumn = charChange.modifiedStartColumn;\r\n }\r\n else {\r\n startColumn = modifiedModel.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n if (lineNumber === charChange.modifiedEndLineNumber) {\r\n endColumn = charChange.modifiedEndColumn;\r\n }\r\n else {\r\n endColumn = modifiedModel.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n result.decorations.push(createDecoration(lineNumber, startColumn, lineNumber, endColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn, DECORATIONS.charInsert));\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n result.decorations.push(createDecoration(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedEndLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, DECORATIONS.charInsertWholeLine));\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n layout() {\r\n // An editor should not be smaller than 5px\r\n return Math.max(5, this.decorationsLeft);\r\n }\r\n}\r\nclass InlineViewZonesComputer extends ViewZonesComputer {\r\n constructor(lineChanges, originalForeignVZ, modifiedForeignVZ, originalEditor, modifiedEditor, renderIndicators) {\r\n super(lineChanges, originalForeignVZ, originalEditor.getOption(51 /* lineHeight */), modifiedForeignVZ, modifiedEditor.getOption(51 /* lineHeight */));\r\n this.originalModel = originalEditor.getModel();\r\n this.modifiedEditorOptions = modifiedEditor.getOptions();\r\n this.modifiedEditorTabSize = modifiedEditor.getModel().getOptions().tabSize;\r\n this.renderIndicators = renderIndicators;\r\n }\r\n _createOriginalMarginDomNodeForModifiedForeignViewZoneInAddedRegion() {\r\n let result = document.createElement('div');\r\n result.className = 'inline-added-margin-view-zone';\r\n return result;\r\n }\r\n _produceOriginalFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n let marginDomNode = document.createElement('div');\r\n marginDomNode.className = 'inline-added-margin-view-zone';\r\n return {\r\n afterLineNumber: Math.max(lineChange.originalStartLineNumber, lineChange.originalEndLineNumber),\r\n heightInLines: lineChangeModifiedLength,\r\n domNode: document.createElement('div'),\r\n marginDomNode: marginDomNode\r\n };\r\n }\r\n _produceModifiedFromDiff(lineChange, lineChangeOriginalLength, lineChangeModifiedLength) {\r\n let decorations = [];\r\n if (lineChange.charChanges) {\r\n for (let j = 0, lengthJ = lineChange.charChanges.length; j < lengthJ; j++) {\r\n let charChange = lineChange.charChanges[j];\r\n if (isChangeOrDelete(charChange)) {\r\n decorations.push(new InlineDecoration(new Range(charChange.originalStartLineNumber, charChange.originalStartColumn, charChange.originalEndLineNumber, charChange.originalEndColumn), 'char-delete', 0 /* Regular */));\r\n }\r\n }\r\n }\r\n let sb = createStringBuilder(10000);\r\n let marginHTML = [];\r\n const layoutInfo = this.modifiedEditorOptions.get(117 /* layoutInfo */);\r\n const fontInfo = this.modifiedEditorOptions.get(36 /* fontInfo */);\r\n const lineDecorationsWidth = layoutInfo.decorationsWidth;\r\n let lineHeight = this.modifiedEditorOptions.get(51 /* lineHeight */);\r\n const typicalHalfwidthCharacterWidth = fontInfo.typicalHalfwidthCharacterWidth;\r\n let maxCharsPerLine = 0;\r\n const originalContent = [];\r\n for (let lineNumber = lineChange.originalStartLineNumber; lineNumber <= lineChange.originalEndLineNumber; lineNumber++) {\r\n maxCharsPerLine = Math.max(maxCharsPerLine, this._renderOriginalLine(lineNumber - lineChange.originalStartLineNumber, this.originalModel, this.modifiedEditorOptions, this.modifiedEditorTabSize, lineNumber, decorations, sb));\r\n originalContent.push(this.originalModel.getLineContent(lineNumber));\r\n if (this.renderIndicators) {\r\n let index = lineNumber - lineChange.originalStartLineNumber;\r\n marginHTML = marginHTML.concat([\r\n `<div class=\"delete-sign ${diffRemoveIcon.classNames}\" style=\"position:absolute;top:${index * lineHeight}px;width:${lineDecorationsWidth}px;height:${lineHeight}px;right:0;\"></div>`\r\n ]);\r\n }\r\n }\r\n maxCharsPerLine += this.modifiedEditorOptions.get(85 /* scrollBeyondLastColumn */);\r\n let domNode = document.createElement('div');\r\n domNode.className = `view-lines line-delete ${MOUSE_CURSOR_TEXT_CSS_CLASS_NAME}`;\r\n domNode.innerHTML = sb.build();\r\n Configuration.applyFontInfoSlow(domNode, fontInfo);\r\n let marginDomNode = document.createElement('div');\r\n marginDomNode.className = 'inline-deleted-margin-view-zone';\r\n marginDomNode.innerHTML = marginHTML.join('');\r\n Configuration.applyFontInfoSlow(marginDomNode, fontInfo);\r\n return {\r\n shouldNotShrink: true,\r\n afterLineNumber: (lineChange.modifiedEndLineNumber === 0 ? lineChange.modifiedStartLineNumber : lineChange.modifiedStartLineNumber - 1),\r\n heightInLines: lineChangeOriginalLength,\r\n minWidthInPx: (maxCharsPerLine * typicalHalfwidthCharacterWidth),\r\n domNode: domNode,\r\n marginDomNode: marginDomNode,\r\n diff: {\r\n originalStartLineNumber: lineChange.originalStartLineNumber,\r\n originalEndLineNumber: lineChange.originalEndLineNumber,\r\n modifiedStartLineNumber: lineChange.modifiedStartLineNumber,\r\n modifiedEndLineNumber: lineChange.modifiedEndLineNumber,\r\n originalContent: originalContent\r\n }\r\n };\r\n }\r\n _renderOriginalLine(count, originalModel, options, tabSize, lineNumber, decorations, sb) {\r\n const lineTokens = originalModel.getLineTokens(lineNumber);\r\n const lineContent = lineTokens.getLineContent();\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const actualDecorations = LineDecoration.filter(decorations, lineNumber, 1, lineContent.length + 1);\r\n sb.appendASCIIString('<div class=\"view-line');\r\n if (decorations.length === 0) {\r\n // No char changes\r\n sb.appendASCIIString(' char-delete');\r\n }\r\n sb.appendASCIIString('\" style=\"top:');\r\n sb.appendASCIIString(String(count * options.get(51 /* lineHeight */)));\r\n sb.appendASCIIString('px;width:1000000px;\">');\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, originalModel.mightContainNonBasicASCII());\r\n const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, originalModel.mightContainRTL());\r\n const output = renderViewLine(new RenderLineInput((fontInfo.isMonospace && !options.get(24 /* disableMonospaceOptimizations */)), fontInfo.canUseHalfwidthRightwardsArrow, lineContent, false, isBasicASCII, containsRTL, 0, lineTokens, actualDecorations, tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, options.get(95 /* stopRenderingLineAfter */), options.get(80 /* renderWhitespace */), options.get(74 /* renderControlCharacters */), options.get(37 /* fontLigatures */) !== EditorFontLigatures.OFF, null // Send no selections, original line cannot be selected\r\n ), sb);\r\n sb.appendASCIIString('</div>');\r\n const absoluteOffsets = output.characterMapping.getAbsoluteOffsets();\r\n return absoluteOffsets.length > 0 ? absoluteOffsets[absoluteOffsets.length - 1] : 0;\r\n }\r\n}\r\nexport function isChangeOrInsert(lineChange) {\r\n return lineChange.modifiedEndLineNumber > 0;\r\n}\r\nexport function isChangeOrDelete(lineChange) {\r\n return lineChange.originalEndLineNumber > 0;\r\n}\r\nfunction createFakeLinesDiv() {\r\n let r = document.createElement('div');\r\n r.className = 'diagonal-fill';\r\n return r;\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const added = theme.getColor(diffInserted);\r\n if (added) {\r\n collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { background-color: ${added}; }`);\r\n collector.addRule(`.monaco-diff-editor .line-insert, .monaco-diff-editor .char-insert { background-color: ${added}; }`);\r\n collector.addRule(`.monaco-editor .inline-added-margin-view-zone { background-color: ${added}; }`);\r\n }\r\n const removed = theme.getColor(diffRemoved);\r\n if (removed) {\r\n collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { background-color: ${removed}; }`);\r\n collector.addRule(`.monaco-diff-editor .line-delete, .monaco-diff-editor .char-delete { background-color: ${removed}; }`);\r\n collector.addRule(`.monaco-editor .inline-deleted-margin-view-zone { background-color: ${removed}; }`);\r\n }\r\n const addedOutline = theme.getColor(diffInsertedOutline);\r\n if (addedOutline) {\r\n collector.addRule(`.monaco-editor .line-insert, .monaco-editor .char-insert { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${addedOutline}; }`);\r\n }\r\n const removedOutline = theme.getColor(diffRemovedOutline);\r\n if (removedOutline) {\r\n collector.addRule(`.monaco-editor .line-delete, .monaco-editor .char-delete { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${removedOutline}; }`);\r\n }\r\n const shadow = theme.getColor(scrollbarShadow);\r\n if (shadow) {\r\n collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { box-shadow: -6px 0 5px -5px ${shadow}; }`);\r\n }\r\n const border = theme.getColor(diffBorder);\r\n if (border) {\r\n collector.addRule(`.monaco-diff-editor.side-by-side .editor.modified { border-left: 1px solid ${border}; }`);\r\n }\r\n const scrollbarSliderBackgroundColor = theme.getColor(scrollbarSliderBackground);\r\n if (scrollbarSliderBackgroundColor) {\r\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport {\n\t\t\t\tbackground: ${scrollbarSliderBackgroundColor};\n\t\t\t}\n\t\t`);\r\n }\r\n const scrollbarSliderHoverBackgroundColor = theme.getColor(scrollbarSliderHoverBackground);\r\n if (scrollbarSliderHoverBackgroundColor) {\r\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:hover {\n\t\t\t\tbackground: ${scrollbarSliderHoverBackgroundColor};\n\t\t\t}\n\t\t`);\r\n }\r\n const scrollbarSliderActiveBackgroundColor = theme.getColor(scrollbarSliderActiveBackground);\r\n if (scrollbarSliderActiveBackgroundColor) {\r\n collector.addRule(`\n\t\t\t.monaco-diff-editor .diffViewport:active {\n\t\t\t\tbackground: ${scrollbarSliderActiveBackgroundColor};\n\t\t\t}\n\t\t`);\r\n }\r\n const diffDiagonalFillColor = theme.getColor(diffDiagonalFill);\r\n collector.addRule(`\n\t.monaco-editor .diagonal-fill {\n\t\tbackground-image: linear-gradient(\n\t\t\t-45deg,\n\t\t\t${diffDiagonalFillColor} 12.5%,\n\t\t\t#0000 12.5%, #0000 50%,\n\t\t\t${diffDiagonalFillColor} 50%, ${diffDiagonalFillColor} 62.5%,\n\t\t\t#0000 62.5%, #0000 100%\n\t\t);\n\t\tbackground-size: 8px 8px;\n\t}\n\t`);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as assert from '../../../base/common/assert.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { Range } from '../../common/core/range.js';\r\nconst defaultOptions = {\r\n followsCaret: true,\r\n ignoreCharChanges: true,\r\n alwaysRevealFirst: true\r\n};\r\n/**\r\n * Create a new diff navigator for the provided diff editor.\r\n */\r\nexport class DiffNavigator extends Disposable {\r\n constructor(editor, options = {}) {\r\n super();\r\n this._onDidUpdate = this._register(new Emitter());\r\n this._editor = editor;\r\n this._options = objects.mixin(options, defaultOptions, false);\r\n this.disposed = false;\r\n this.nextIdx = -1;\r\n this.ranges = [];\r\n this.ignoreSelectionChange = false;\r\n this.revealFirst = Boolean(this._options.alwaysRevealFirst);\r\n // hook up to diff editor for diff, disposal, and caret move\r\n this._register(this._editor.onDidDispose(() => this.dispose()));\r\n this._register(this._editor.onDidUpdateDiff(() => this._onDiffUpdated()));\r\n if (this._options.followsCaret) {\r\n this._register(this._editor.getModifiedEditor().onDidChangeCursorPosition((e) => {\r\n if (this.ignoreSelectionChange) {\r\n return;\r\n }\r\n this.nextIdx = -1;\r\n }));\r\n }\r\n if (this._options.alwaysRevealFirst) {\r\n this._register(this._editor.getModifiedEditor().onDidChangeModel((e) => {\r\n this.revealFirst = true;\r\n }));\r\n }\r\n // init things\r\n this._init();\r\n }\r\n _init() {\r\n let changes = this._editor.getLineChanges();\r\n if (!changes) {\r\n return;\r\n }\r\n }\r\n _onDiffUpdated() {\r\n this._init();\r\n this._compute(this._editor.getLineChanges());\r\n if (this.revealFirst) {\r\n // Only reveal first on first non-null changes\r\n if (this._editor.getLineChanges() !== null) {\r\n this.revealFirst = false;\r\n this.nextIdx = -1;\r\n this.next(1 /* Immediate */);\r\n }\r\n }\r\n }\r\n _compute(lineChanges) {\r\n // new ranges\r\n this.ranges = [];\r\n if (lineChanges) {\r\n // create ranges from changes\r\n lineChanges.forEach((lineChange) => {\r\n if (!this._options.ignoreCharChanges && lineChange.charChanges) {\r\n lineChange.charChanges.forEach((charChange) => {\r\n this.ranges.push({\r\n rhs: true,\r\n range: new Range(charChange.modifiedStartLineNumber, charChange.modifiedStartColumn, charChange.modifiedEndLineNumber, charChange.modifiedEndColumn)\r\n });\r\n });\r\n }\r\n else {\r\n this.ranges.push({\r\n rhs: true,\r\n range: new Range(lineChange.modifiedStartLineNumber, 1, lineChange.modifiedStartLineNumber, 1)\r\n });\r\n }\r\n });\r\n }\r\n // sort\r\n this.ranges.sort((left, right) => {\r\n if (left.range.getStartPosition().isBeforeOrEqual(right.range.getStartPosition())) {\r\n return -1;\r\n }\r\n else if (right.range.getStartPosition().isBeforeOrEqual(left.range.getStartPosition())) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n this._onDidUpdate.fire(this);\r\n }\r\n _initIdx(fwd) {\r\n let found = false;\r\n let position = this._editor.getPosition();\r\n if (!position) {\r\n this.nextIdx = 0;\r\n return;\r\n }\r\n for (let i = 0, len = this.ranges.length; i < len && !found; i++) {\r\n let range = this.ranges[i].range;\r\n if (position.isBeforeOrEqual(range.getStartPosition())) {\r\n this.nextIdx = i + (fwd ? 0 : -1);\r\n found = true;\r\n }\r\n }\r\n if (!found) {\r\n // after the last change\r\n this.nextIdx = fwd ? 0 : this.ranges.length - 1;\r\n }\r\n if (this.nextIdx < 0) {\r\n this.nextIdx = this.ranges.length - 1;\r\n }\r\n }\r\n _move(fwd, scrollType) {\r\n assert.ok(!this.disposed, 'Illegal State - diff navigator has been disposed');\r\n if (!this.canNavigate()) {\r\n return;\r\n }\r\n if (this.nextIdx === -1) {\r\n this._initIdx(fwd);\r\n }\r\n else if (fwd) {\r\n this.nextIdx += 1;\r\n if (this.nextIdx >= this.ranges.length) {\r\n this.nextIdx = 0;\r\n }\r\n }\r\n else {\r\n this.nextIdx -= 1;\r\n if (this.nextIdx < 0) {\r\n this.nextIdx = this.ranges.length - 1;\r\n }\r\n }\r\n let info = this.ranges[this.nextIdx];\r\n this.ignoreSelectionChange = true;\r\n try {\r\n let pos = info.range.getStartPosition();\r\n this._editor.setPosition(pos);\r\n this._editor.revealPositionInCenter(pos, scrollType);\r\n }\r\n finally {\r\n this.ignoreSelectionChange = false;\r\n }\r\n }\r\n canNavigate() {\r\n return this.ranges && this.ranges.length > 0;\r\n }\r\n next(scrollType = 0 /* Smooth */) {\r\n this._move(true, scrollType);\r\n }\r\n previous(scrollType = 0 /* Smooth */) {\r\n this._move(false, scrollType);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.ranges = [];\r\n this.disposed = true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './media/diffReview.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../base/browser/fastDomNode.js';\r\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\r\nimport { DomScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { Action } from '../../../base/common/actions.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Configuration } from '../config/configuration.js';\r\nimport { EditorAction, registerEditorAction } from '../editorExtensions.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { EditorFontLigatures } from '../../common/config/editorOptions.js';\r\nimport { LineTokens } from '../../common/core/lineTokens.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { editorLineNumbers } from '../../common/view/editorColorRegistry.js';\r\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { scrollbarShadow } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { registerIcon, Codicon } from '../../../base/common/codicons.js';\r\nconst DIFF_LINES_PADDING = 3;\r\nclass DiffEntry {\r\n constructor(originalLineStart, originalLineEnd, modifiedLineStart, modifiedLineEnd) {\r\n this.originalLineStart = originalLineStart;\r\n this.originalLineEnd = originalLineEnd;\r\n this.modifiedLineStart = modifiedLineStart;\r\n this.modifiedLineEnd = modifiedLineEnd;\r\n }\r\n getType() {\r\n if (this.originalLineStart === 0) {\r\n return 1 /* Insert */;\r\n }\r\n if (this.modifiedLineStart === 0) {\r\n return 2 /* Delete */;\r\n }\r\n return 0 /* Equal */;\r\n }\r\n}\r\nclass Diff {\r\n constructor(entries) {\r\n this.entries = entries;\r\n }\r\n}\r\nconst diffReviewInsertIcon = registerIcon('diff-review-insert', Codicon.add);\r\nconst diffReviewRemoveIcon = registerIcon('diff-review-remove', Codicon.remove);\r\nconst diffReviewCloseIcon = registerIcon('diff-review-close', Codicon.close);\r\nexport class DiffReview extends Disposable {\r\n constructor(diffEditor) {\r\n super();\r\n this._width = 0;\r\n this._diffEditor = diffEditor;\r\n this._isVisible = false;\r\n this.shadow = createFastDomNode(document.createElement('div'));\r\n this.shadow.setClassName('diff-review-shadow');\r\n this.actionBarContainer = createFastDomNode(document.createElement('div'));\r\n this.actionBarContainer.setClassName('diff-review-actions');\r\n this._actionBar = this._register(new ActionBar(this.actionBarContainer.domNode));\r\n this._actionBar.push(new Action('diffreview.close', nls.localize('label.close', \"Close\"), 'close-diff-review ' + diffReviewCloseIcon.classNames, true, () => {\r\n this.hide();\r\n return Promise.resolve(null);\r\n }), { label: false, icon: true });\r\n this.domNode = createFastDomNode(document.createElement('div'));\r\n this.domNode.setClassName('diff-review monaco-editor-background');\r\n this._content = createFastDomNode(document.createElement('div'));\r\n this._content.setClassName('diff-review-content');\r\n this._content.setAttribute('role', 'code');\r\n this.scrollbar = this._register(new DomScrollableElement(this._content.domNode, {}));\r\n this.domNode.domNode.appendChild(this.scrollbar.getDomNode());\r\n this._register(diffEditor.onDidUpdateDiff(() => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._diffs = this._compute();\r\n this._render();\r\n }));\r\n this._register(diffEditor.getModifiedEditor().onDidChangeCursorPosition(() => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._render();\r\n }));\r\n this._register(dom.addStandardDisposableListener(this.domNode.domNode, 'click', (e) => {\r\n e.preventDefault();\r\n let row = dom.findParentWithClass(e.target, 'diff-review-row');\r\n if (row) {\r\n this._goToRow(row);\r\n }\r\n }));\r\n this._register(dom.addStandardDisposableListener(this.domNode.domNode, 'keydown', (e) => {\r\n if (e.equals(18 /* DownArrow */)\r\n || e.equals(2048 /* CtrlCmd */ | 18 /* DownArrow */)\r\n || e.equals(512 /* Alt */ | 18 /* DownArrow */)) {\r\n e.preventDefault();\r\n this._goToRow(this._getNextRow());\r\n }\r\n if (e.equals(16 /* UpArrow */)\r\n || e.equals(2048 /* CtrlCmd */ | 16 /* UpArrow */)\r\n || e.equals(512 /* Alt */ | 16 /* UpArrow */)) {\r\n e.preventDefault();\r\n this._goToRow(this._getPrevRow());\r\n }\r\n if (e.equals(9 /* Escape */)\r\n || e.equals(2048 /* CtrlCmd */ | 9 /* Escape */)\r\n || e.equals(512 /* Alt */ | 9 /* Escape */)\r\n || e.equals(1024 /* Shift */ | 9 /* Escape */)) {\r\n e.preventDefault();\r\n this.hide();\r\n }\r\n if (e.equals(10 /* Space */)\r\n || e.equals(3 /* Enter */)) {\r\n e.preventDefault();\r\n this.accept();\r\n }\r\n }));\r\n this._diffs = [];\r\n this._currentDiff = null;\r\n }\r\n prev() {\r\n let index = 0;\r\n if (!this._isVisible) {\r\n this._diffs = this._compute();\r\n }\r\n if (this._isVisible) {\r\n let currentIndex = -1;\r\n for (let i = 0, len = this._diffs.length; i < len; i++) {\r\n if (this._diffs[i] === this._currentDiff) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n index = (this._diffs.length + currentIndex - 1);\r\n }\r\n else {\r\n index = this._findDiffIndex(this._diffEditor.getPosition());\r\n }\r\n if (this._diffs.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n index = index % this._diffs.length;\r\n const entries = this._diffs[index].entries;\r\n this._diffEditor.setPosition(new Position(entries[0].modifiedLineStart, 1));\r\n this._diffEditor.setSelection({ startColumn: 1, startLineNumber: entries[0].modifiedLineStart, endColumn: 1073741824 /* MAX_SAFE_SMALL_INTEGER */, endLineNumber: entries[entries.length - 1].modifiedLineEnd });\r\n this._isVisible = true;\r\n this._diffEditor.doLayout();\r\n this._render();\r\n this._goToRow(this._getNextRow());\r\n }\r\n next() {\r\n let index = 0;\r\n if (!this._isVisible) {\r\n this._diffs = this._compute();\r\n }\r\n if (this._isVisible) {\r\n let currentIndex = -1;\r\n for (let i = 0, len = this._diffs.length; i < len; i++) {\r\n if (this._diffs[i] === this._currentDiff) {\r\n currentIndex = i;\r\n break;\r\n }\r\n }\r\n index = (currentIndex + 1);\r\n }\r\n else {\r\n index = this._findDiffIndex(this._diffEditor.getPosition());\r\n }\r\n if (this._diffs.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n index = index % this._diffs.length;\r\n const entries = this._diffs[index].entries;\r\n this._diffEditor.setPosition(new Position(entries[0].modifiedLineStart, 1));\r\n this._diffEditor.setSelection({ startColumn: 1, startLineNumber: entries[0].modifiedLineStart, endColumn: 1073741824 /* MAX_SAFE_SMALL_INTEGER */, endLineNumber: entries[entries.length - 1].modifiedLineEnd });\r\n this._isVisible = true;\r\n this._diffEditor.doLayout();\r\n this._render();\r\n this._goToRow(this._getNextRow());\r\n }\r\n accept() {\r\n let jumpToLineNumber = -1;\r\n let current = this._getCurrentFocusedRow();\r\n if (current) {\r\n let lineNumber = parseInt(current.getAttribute('data-line'), 10);\r\n if (!isNaN(lineNumber)) {\r\n jumpToLineNumber = lineNumber;\r\n }\r\n }\r\n this.hide();\r\n if (jumpToLineNumber !== -1) {\r\n this._diffEditor.setPosition(new Position(jumpToLineNumber, 1));\r\n this._diffEditor.revealPosition(new Position(jumpToLineNumber, 1), 1 /* Immediate */);\r\n }\r\n }\r\n hide() {\r\n this._isVisible = false;\r\n this._diffEditor.updateOptions({ readOnly: false });\r\n this._diffEditor.focus();\r\n this._diffEditor.doLayout();\r\n this._render();\r\n }\r\n _getPrevRow() {\r\n let current = this._getCurrentFocusedRow();\r\n if (!current) {\r\n return this._getFirstRow();\r\n }\r\n if (current.previousElementSibling) {\r\n return current.previousElementSibling;\r\n }\r\n return current;\r\n }\r\n _getNextRow() {\r\n let current = this._getCurrentFocusedRow();\r\n if (!current) {\r\n return this._getFirstRow();\r\n }\r\n if (current.nextElementSibling) {\r\n return current.nextElementSibling;\r\n }\r\n return current;\r\n }\r\n _getFirstRow() {\r\n return this.domNode.domNode.querySelector('.diff-review-row');\r\n }\r\n _getCurrentFocusedRow() {\r\n let result = document.activeElement;\r\n if (result && /diff-review-row/.test(result.className)) {\r\n return result;\r\n }\r\n return null;\r\n }\r\n _goToRow(row) {\r\n let prev = this._getCurrentFocusedRow();\r\n row.tabIndex = 0;\r\n row.focus();\r\n if (prev && prev !== row) {\r\n prev.tabIndex = -1;\r\n }\r\n this.scrollbar.scanDomNode();\r\n }\r\n isVisible() {\r\n return this._isVisible;\r\n }\r\n layout(top, width, height) {\r\n this._width = width;\r\n this.shadow.setTop(top - 6);\r\n this.shadow.setWidth(width);\r\n this.shadow.setHeight(this._isVisible ? 6 : 0);\r\n this.domNode.setTop(top);\r\n this.domNode.setWidth(width);\r\n this.domNode.setHeight(height);\r\n this._content.setHeight(height);\r\n this._content.setWidth(width);\r\n if (this._isVisible) {\r\n this.actionBarContainer.setAttribute('aria-hidden', 'false');\r\n this.actionBarContainer.setDisplay('block');\r\n }\r\n else {\r\n this.actionBarContainer.setAttribute('aria-hidden', 'true');\r\n this.actionBarContainer.setDisplay('none');\r\n }\r\n }\r\n _compute() {\r\n const lineChanges = this._diffEditor.getLineChanges();\r\n if (!lineChanges || lineChanges.length === 0) {\r\n return [];\r\n }\r\n const originalModel = this._diffEditor.getOriginalEditor().getModel();\r\n const modifiedModel = this._diffEditor.getModifiedEditor().getModel();\r\n if (!originalModel || !modifiedModel) {\r\n return [];\r\n }\r\n return DiffReview._mergeAdjacent(lineChanges, originalModel.getLineCount(), modifiedModel.getLineCount());\r\n }\r\n static _mergeAdjacent(lineChanges, originalLineCount, modifiedLineCount) {\r\n if (!lineChanges || lineChanges.length === 0) {\r\n return [];\r\n }\r\n let diffs = [], diffsLength = 0;\r\n for (let i = 0, len = lineChanges.length; i < len; i++) {\r\n const lineChange = lineChanges[i];\r\n const originalStart = lineChange.originalStartLineNumber;\r\n const originalEnd = lineChange.originalEndLineNumber;\r\n const modifiedStart = lineChange.modifiedStartLineNumber;\r\n const modifiedEnd = lineChange.modifiedEndLineNumber;\r\n let r = [], rLength = 0;\r\n // Emit before anchors\r\n {\r\n const originalEqualAbove = (originalEnd === 0 ? originalStart : originalStart - 1);\r\n const modifiedEqualAbove = (modifiedEnd === 0 ? modifiedStart : modifiedStart - 1);\r\n // Make sure we don't step into the previous diff\r\n let minOriginal = 1;\r\n let minModified = 1;\r\n if (i > 0) {\r\n const prevLineChange = lineChanges[i - 1];\r\n if (prevLineChange.originalEndLineNumber === 0) {\r\n minOriginal = prevLineChange.originalStartLineNumber + 1;\r\n }\r\n else {\r\n minOriginal = prevLineChange.originalEndLineNumber + 1;\r\n }\r\n if (prevLineChange.modifiedEndLineNumber === 0) {\r\n minModified = prevLineChange.modifiedStartLineNumber + 1;\r\n }\r\n else {\r\n minModified = prevLineChange.modifiedEndLineNumber + 1;\r\n }\r\n }\r\n let fromOriginal = originalEqualAbove - DIFF_LINES_PADDING + 1;\r\n let fromModified = modifiedEqualAbove - DIFF_LINES_PADDING + 1;\r\n if (fromOriginal < minOriginal) {\r\n const delta = minOriginal - fromOriginal;\r\n fromOriginal = fromOriginal + delta;\r\n fromModified = fromModified + delta;\r\n }\r\n if (fromModified < minModified) {\r\n const delta = minModified - fromModified;\r\n fromOriginal = fromOriginal + delta;\r\n fromModified = fromModified + delta;\r\n }\r\n r[rLength++] = new DiffEntry(fromOriginal, originalEqualAbove, fromModified, modifiedEqualAbove);\r\n }\r\n // Emit deleted lines\r\n {\r\n if (originalEnd !== 0) {\r\n r[rLength++] = new DiffEntry(originalStart, originalEnd, 0, 0);\r\n }\r\n }\r\n // Emit inserted lines\r\n {\r\n if (modifiedEnd !== 0) {\r\n r[rLength++] = new DiffEntry(0, 0, modifiedStart, modifiedEnd);\r\n }\r\n }\r\n // Emit after anchors\r\n {\r\n const originalEqualBelow = (originalEnd === 0 ? originalStart + 1 : originalEnd + 1);\r\n const modifiedEqualBelow = (modifiedEnd === 0 ? modifiedStart + 1 : modifiedEnd + 1);\r\n // Make sure we don't step into the next diff\r\n let maxOriginal = originalLineCount;\r\n let maxModified = modifiedLineCount;\r\n if (i + 1 < len) {\r\n const nextLineChange = lineChanges[i + 1];\r\n if (nextLineChange.originalEndLineNumber === 0) {\r\n maxOriginal = nextLineChange.originalStartLineNumber;\r\n }\r\n else {\r\n maxOriginal = nextLineChange.originalStartLineNumber - 1;\r\n }\r\n if (nextLineChange.modifiedEndLineNumber === 0) {\r\n maxModified = nextLineChange.modifiedStartLineNumber;\r\n }\r\n else {\r\n maxModified = nextLineChange.modifiedStartLineNumber - 1;\r\n }\r\n }\r\n let toOriginal = originalEqualBelow + DIFF_LINES_PADDING - 1;\r\n let toModified = modifiedEqualBelow + DIFF_LINES_PADDING - 1;\r\n if (toOriginal > maxOriginal) {\r\n const delta = maxOriginal - toOriginal;\r\n toOriginal = toOriginal + delta;\r\n toModified = toModified + delta;\r\n }\r\n if (toModified > maxModified) {\r\n const delta = maxModified - toModified;\r\n toOriginal = toOriginal + delta;\r\n toModified = toModified + delta;\r\n }\r\n r[rLength++] = new DiffEntry(originalEqualBelow, toOriginal, modifiedEqualBelow, toModified);\r\n }\r\n diffs[diffsLength++] = new Diff(r);\r\n }\r\n // Merge adjacent diffs\r\n let curr = diffs[0].entries;\r\n let r = [], rLength = 0;\r\n for (let i = 1, len = diffs.length; i < len; i++) {\r\n const thisDiff = diffs[i].entries;\r\n const currLast = curr[curr.length - 1];\r\n const thisFirst = thisDiff[0];\r\n if (currLast.getType() === 0 /* Equal */\r\n && thisFirst.getType() === 0 /* Equal */\r\n && thisFirst.originalLineStart <= currLast.originalLineEnd) {\r\n // We are dealing with equal lines that overlap\r\n curr[curr.length - 1] = new DiffEntry(currLast.originalLineStart, thisFirst.originalLineEnd, currLast.modifiedLineStart, thisFirst.modifiedLineEnd);\r\n curr = curr.concat(thisDiff.slice(1));\r\n continue;\r\n }\r\n r[rLength++] = new Diff(curr);\r\n curr = thisDiff;\r\n }\r\n r[rLength++] = new Diff(curr);\r\n return r;\r\n }\r\n _findDiffIndex(pos) {\r\n const lineNumber = pos.lineNumber;\r\n for (let i = 0, len = this._diffs.length; i < len; i++) {\r\n const diff = this._diffs[i].entries;\r\n const lastModifiedLine = diff[diff.length - 1].modifiedLineEnd;\r\n if (lineNumber <= lastModifiedLine) {\r\n return i;\r\n }\r\n }\r\n return 0;\r\n }\r\n _render() {\r\n const originalOptions = this._diffEditor.getOriginalEditor().getOptions();\r\n const modifiedOptions = this._diffEditor.getModifiedEditor().getOptions();\r\n const originalModel = this._diffEditor.getOriginalEditor().getModel();\r\n const modifiedModel = this._diffEditor.getModifiedEditor().getModel();\r\n const originalModelOpts = originalModel.getOptions();\r\n const modifiedModelOpts = modifiedModel.getOptions();\r\n if (!this._isVisible || !originalModel || !modifiedModel) {\r\n dom.clearNode(this._content.domNode);\r\n this._currentDiff = null;\r\n this.scrollbar.scanDomNode();\r\n return;\r\n }\r\n this._diffEditor.updateOptions({ readOnly: true });\r\n const diffIndex = this._findDiffIndex(this._diffEditor.getPosition());\r\n if (this._diffs[diffIndex] === this._currentDiff) {\r\n return;\r\n }\r\n this._currentDiff = this._diffs[diffIndex];\r\n const diffs = this._diffs[diffIndex].entries;\r\n let container = document.createElement('div');\r\n container.className = 'diff-review-table';\r\n container.setAttribute('role', 'list');\r\n container.setAttribute('aria-label', 'Difference review. Use \"Stage | Unstage | Revert Selected Ranges\" commands');\r\n Configuration.applyFontInfoSlow(container, modifiedOptions.get(36 /* fontInfo */));\r\n let minOriginalLine = 0;\r\n let maxOriginalLine = 0;\r\n let minModifiedLine = 0;\r\n let maxModifiedLine = 0;\r\n for (let i = 0, len = diffs.length; i < len; i++) {\r\n const diffEntry = diffs[i];\r\n const originalLineStart = diffEntry.originalLineStart;\r\n const originalLineEnd = diffEntry.originalLineEnd;\r\n const modifiedLineStart = diffEntry.modifiedLineStart;\r\n const modifiedLineEnd = diffEntry.modifiedLineEnd;\r\n if (originalLineStart !== 0 && ((minOriginalLine === 0 || originalLineStart < minOriginalLine))) {\r\n minOriginalLine = originalLineStart;\r\n }\r\n if (originalLineEnd !== 0 && ((maxOriginalLine === 0 || originalLineEnd > maxOriginalLine))) {\r\n maxOriginalLine = originalLineEnd;\r\n }\r\n if (modifiedLineStart !== 0 && ((minModifiedLine === 0 || modifiedLineStart < minModifiedLine))) {\r\n minModifiedLine = modifiedLineStart;\r\n }\r\n if (modifiedLineEnd !== 0 && ((maxModifiedLine === 0 || modifiedLineEnd > maxModifiedLine))) {\r\n maxModifiedLine = modifiedLineEnd;\r\n }\r\n }\r\n let header = document.createElement('div');\r\n header.className = 'diff-review-row';\r\n let cell = document.createElement('div');\r\n cell.className = 'diff-review-cell diff-review-summary';\r\n const originalChangedLinesCnt = maxOriginalLine - minOriginalLine + 1;\r\n const modifiedChangedLinesCnt = maxModifiedLine - minModifiedLine + 1;\r\n cell.appendChild(document.createTextNode(`${diffIndex + 1}/${this._diffs.length}: @@ -${minOriginalLine},${originalChangedLinesCnt} +${minModifiedLine},${modifiedChangedLinesCnt} @@`));\r\n header.setAttribute('data-line', String(minModifiedLine));\r\n const getAriaLines = (lines) => {\r\n if (lines === 0) {\r\n return nls.localize('no_lines_changed', \"no lines changed\");\r\n }\r\n else if (lines === 1) {\r\n return nls.localize('one_line_changed', \"1 line changed\");\r\n }\r\n else {\r\n return nls.localize('more_lines_changed', \"{0} lines changed\", lines);\r\n }\r\n };\r\n const originalChangedLinesCntAria = getAriaLines(originalChangedLinesCnt);\r\n const modifiedChangedLinesCntAria = getAriaLines(modifiedChangedLinesCnt);\r\n header.setAttribute('aria-label', nls.localize({\r\n key: 'header',\r\n comment: [\r\n 'This is the ARIA label for a git diff header.',\r\n 'A git diff header looks like this: @@ -154,12 +159,39 @@.',\r\n 'That encodes that at original line 154 (which is now line 159), 12 lines were removed/changed with 39 lines.',\r\n 'Variables 0 and 1 refer to the diff index out of total number of diffs.',\r\n 'Variables 2 and 4 will be numbers (a line number).',\r\n 'Variables 3 and 5 will be \"no lines changed\", \"1 line changed\" or \"X lines changed\", localized separately.'\r\n ]\r\n }, \"Difference {0} of {1}: original line {2}, {3}, modified line {4}, {5}\", (diffIndex + 1), this._diffs.length, minOriginalLine, originalChangedLinesCntAria, minModifiedLine, modifiedChangedLinesCntAria));\r\n header.appendChild(cell);\r\n // @@ -504,7 +517,7 @@\r\n header.setAttribute('role', 'listitem');\r\n container.appendChild(header);\r\n const lineHeight = modifiedOptions.get(51 /* lineHeight */);\r\n let modLine = minModifiedLine;\r\n for (let i = 0, len = diffs.length; i < len; i++) {\r\n const diffEntry = diffs[i];\r\n DiffReview._renderSection(container, diffEntry, modLine, lineHeight, this._width, originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts);\r\n if (diffEntry.modifiedLineStart !== 0) {\r\n modLine = diffEntry.modifiedLineEnd;\r\n }\r\n }\r\n dom.clearNode(this._content.domNode);\r\n this._content.domNode.appendChild(container);\r\n this.scrollbar.scanDomNode();\r\n }\r\n static _renderSection(dest, diffEntry, modLine, lineHeight, width, originalOptions, originalModel, originalModelOpts, modifiedOptions, modifiedModel, modifiedModelOpts) {\r\n const type = diffEntry.getType();\r\n let rowClassName = 'diff-review-row';\r\n let lineNumbersExtraClassName = '';\r\n const spacerClassName = 'diff-review-spacer';\r\n let spacerIcon = null;\r\n switch (type) {\r\n case 1 /* Insert */:\r\n rowClassName = 'diff-review-row line-insert';\r\n lineNumbersExtraClassName = ' char-insert';\r\n spacerIcon = diffReviewInsertIcon;\r\n break;\r\n case 2 /* Delete */:\r\n rowClassName = 'diff-review-row line-delete';\r\n lineNumbersExtraClassName = ' char-delete';\r\n spacerIcon = diffReviewRemoveIcon;\r\n break;\r\n }\r\n const originalLineStart = diffEntry.originalLineStart;\r\n const originalLineEnd = diffEntry.originalLineEnd;\r\n const modifiedLineStart = diffEntry.modifiedLineStart;\r\n const modifiedLineEnd = diffEntry.modifiedLineEnd;\r\n const cnt = Math.max(modifiedLineEnd - modifiedLineStart, originalLineEnd - originalLineStart);\r\n const originalLayoutInfo = originalOptions.get(117 /* layoutInfo */);\r\n const originalLineNumbersWidth = originalLayoutInfo.glyphMarginWidth + originalLayoutInfo.lineNumbersWidth;\r\n const modifiedLayoutInfo = modifiedOptions.get(117 /* layoutInfo */);\r\n const modifiedLineNumbersWidth = 10 + modifiedLayoutInfo.glyphMarginWidth + modifiedLayoutInfo.lineNumbersWidth;\r\n for (let i = 0; i <= cnt; i++) {\r\n const originalLine = (originalLineStart === 0 ? 0 : originalLineStart + i);\r\n const modifiedLine = (modifiedLineStart === 0 ? 0 : modifiedLineStart + i);\r\n const row = document.createElement('div');\r\n row.style.minWidth = width + 'px';\r\n row.className = rowClassName;\r\n row.setAttribute('role', 'listitem');\r\n if (modifiedLine !== 0) {\r\n modLine = modifiedLine;\r\n }\r\n row.setAttribute('data-line', String(modLine));\r\n let cell = document.createElement('div');\r\n cell.className = 'diff-review-cell';\r\n cell.style.height = `${lineHeight}px`;\r\n row.appendChild(cell);\r\n const originalLineNumber = document.createElement('span');\r\n originalLineNumber.style.width = (originalLineNumbersWidth + 'px');\r\n originalLineNumber.style.minWidth = (originalLineNumbersWidth + 'px');\r\n originalLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\r\n if (originalLine !== 0) {\r\n originalLineNumber.appendChild(document.createTextNode(String(originalLine)));\r\n }\r\n else {\r\n originalLineNumber.innerText = '\\u00a0';\r\n }\r\n cell.appendChild(originalLineNumber);\r\n const modifiedLineNumber = document.createElement('span');\r\n modifiedLineNumber.style.width = (modifiedLineNumbersWidth + 'px');\r\n modifiedLineNumber.style.minWidth = (modifiedLineNumbersWidth + 'px');\r\n modifiedLineNumber.style.paddingRight = '10px';\r\n modifiedLineNumber.className = 'diff-review-line-number' + lineNumbersExtraClassName;\r\n if (modifiedLine !== 0) {\r\n modifiedLineNumber.appendChild(document.createTextNode(String(modifiedLine)));\r\n }\r\n else {\r\n modifiedLineNumber.innerText = '\\u00a0';\r\n }\r\n cell.appendChild(modifiedLineNumber);\r\n const spacer = document.createElement('span');\r\n spacer.className = spacerClassName;\r\n if (spacerIcon) {\r\n const spacerCodicon = document.createElement('span');\r\n spacerCodicon.className = spacerIcon.classNames;\r\n spacerCodicon.innerText = '\\u00a0\\u00a0';\r\n spacer.appendChild(spacerCodicon);\r\n }\r\n else {\r\n spacer.innerText = '\\u00a0\\u00a0';\r\n }\r\n cell.appendChild(spacer);\r\n let lineContent;\r\n if (modifiedLine !== 0) {\r\n cell.insertAdjacentHTML('beforeend', this._renderLine(modifiedModel, modifiedOptions, modifiedModelOpts.tabSize, modifiedLine));\r\n lineContent = modifiedModel.getLineContent(modifiedLine);\r\n }\r\n else {\r\n cell.insertAdjacentHTML('beforeend', this._renderLine(originalModel, originalOptions, originalModelOpts.tabSize, originalLine));\r\n lineContent = originalModel.getLineContent(originalLine);\r\n }\r\n if (lineContent.length === 0) {\r\n lineContent = nls.localize('blankLine', \"blank\");\r\n }\r\n let ariaLabel = '';\r\n switch (type) {\r\n case 0 /* Equal */:\r\n if (originalLine === modifiedLine) {\r\n ariaLabel = nls.localize({ key: 'unchangedLine', comment: ['The placholders are contents of the line and should not be translated.'] }, \"{0} unchanged line {1}\", lineContent, originalLine);\r\n }\r\n else {\r\n ariaLabel = nls.localize('equalLine', \"{0} original line {1} modified line {2}\", lineContent, originalLine, modifiedLine);\r\n }\r\n break;\r\n case 1 /* Insert */:\r\n ariaLabel = nls.localize('insertLine', \"+ {0} modified line {1}\", lineContent, modifiedLine);\r\n break;\r\n case 2 /* Delete */:\r\n ariaLabel = nls.localize('deleteLine', \"- {0} original line {1}\", lineContent, originalLine);\r\n break;\r\n }\r\n row.setAttribute('aria-label', ariaLabel);\r\n dest.appendChild(row);\r\n }\r\n }\r\n static _renderLine(model, options, tabSize, lineNumber) {\r\n const lineContent = model.getLineContent(lineNumber);\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const defaultMetadata = ((0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = lineContent.length;\r\n tokens[1] = defaultMetadata;\r\n const lineTokens = new LineTokens(tokens, lineContent);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(lineContent, model.mightContainNonBasicASCII());\r\n const containsRTL = ViewLineRenderingData.containsRTL(lineContent, isBasicASCII, model.mightContainRTL());\r\n const r = renderViewLine(new RenderLineInput((fontInfo.isMonospace && !options.get(24 /* disableMonospaceOptimizations */)), fontInfo.canUseHalfwidthRightwardsArrow, lineContent, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, fontInfo.spaceWidth, fontInfo.middotWidth, fontInfo.wsmiddotWidth, options.get(95 /* stopRenderingLineAfter */), options.get(80 /* renderWhitespace */), options.get(74 /* renderControlCharacters */), options.get(37 /* fontLigatures */) !== EditorFontLigatures.OFF, null));\r\n return r.html;\r\n }\r\n}\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const lineNumbers = theme.getColor(editorLineNumbers);\r\n if (lineNumbers) {\r\n collector.addRule(`.monaco-diff-editor .diff-review-line-number { color: ${lineNumbers}; }`);\r\n }\r\n const shadow = theme.getColor(scrollbarShadow);\r\n if (shadow) {\r\n collector.addRule(`.monaco-diff-editor .diff-review-shadow { box-shadow: ${shadow} 0 -6px 6px -6px inset; }`);\r\n }\r\n});\r\nclass DiffReviewNext extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.diffReview.next',\r\n label: nls.localize('editor.action.diffReview.next', \"Go to Next Difference\"),\r\n alias: 'Go to Next Difference',\r\n precondition: ContextKeyExpr.has('isInDiffEditor'),\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const diffEditor = findFocusedDiffEditor(accessor);\r\n if (diffEditor) {\r\n diffEditor.diffReviewNext();\r\n }\r\n }\r\n}\r\nclass DiffReviewPrev extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.diffReview.prev',\r\n label: nls.localize('editor.action.diffReview.prev', \"Go to Previous Difference\"),\r\n alias: 'Go to Previous Difference',\r\n precondition: ContextKeyExpr.has('isInDiffEditor'),\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 1024 /* Shift */ | 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const diffEditor = findFocusedDiffEditor(accessor);\r\n if (diffEditor) {\r\n diffEditor.diffReviewPrev();\r\n }\r\n }\r\n}\r\nfunction findFocusedDiffEditor(accessor) {\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n const diffEditors = codeEditorService.listDiffEditors();\r\n const activeCodeEditor = codeEditorService.getActiveCodeEditor();\r\n if (!activeCodeEditor) {\r\n return null;\r\n }\r\n for (let i = 0, len = diffEditors.length; i < len; i++) {\r\n const diffEditor = diffEditors[i];\r\n if (diffEditor.getModifiedEditor().getId() === activeCodeEditor.getId() || diffEditor.getOriginalEditor().getId() === activeCodeEditor.getId()) {\r\n return diffEditor;\r\n }\r\n }\r\n return null;\r\n}\r\nregisterEditorAction(DiffReviewNext);\r\nregisterEditorAction(DiffReviewPrev);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { ICodeEditorService } from '../services/codeEditorService.js';\r\nimport { CodeEditorWidget } from './codeEditorWidget.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nlet EmbeddedCodeEditorWidget = class EmbeddedCodeEditorWidget extends CodeEditorWidget {\r\n constructor(domElement, options, parentEditor, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService) {\r\n super(domElement, Object.assign(Object.assign({}, parentEditor.getRawOptions()), { overflowWidgetsDomNode: parentEditor.getOverflowWidgetsDomNode() }), {}, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService);\r\n this._parentEditor = parentEditor;\r\n this._overwriteOptions = options;\r\n // Overwrite parent's options\r\n super.updateOptions(this._overwriteOptions);\r\n this._register(parentEditor.onDidChangeConfiguration((e) => this._onParentConfigurationChanged(e)));\r\n }\r\n getParentEditor() {\r\n return this._parentEditor;\r\n }\r\n _onParentConfigurationChanged(e) {\r\n super.updateOptions(this._parentEditor.getRawOptions());\r\n super.updateOptions(this._overwriteOptions);\r\n }\r\n updateOptions(newOptions) {\r\n objects.mixin(this._overwriteOptions, newOptions, true);\r\n super.updateOptions(this._overwriteOptions);\r\n }\r\n};\r\nEmbeddedCodeEditorWidget = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, ICodeEditorService),\r\n __param(5, ICommandService),\r\n __param(6, IContextKeyService),\r\n __param(7, IThemeService),\r\n __param(8, INotificationService),\r\n __param(9, IAccessibilityService)\r\n], EmbeddedCodeEditorWidget);\r\nexport { EmbeddedCodeEditorWidget };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Action } from '../../../base/common/actions.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport class InlineDiffMargin extends Disposable {\r\n constructor(_viewZoneId, _marginDomNode, editor, diff, _contextMenuService, _clipboardService) {\r\n super();\r\n this._viewZoneId = _viewZoneId;\r\n this._marginDomNode = _marginDomNode;\r\n this.editor = editor;\r\n this.diff = diff;\r\n this._contextMenuService = _contextMenuService;\r\n this._clipboardService = _clipboardService;\r\n this._visibility = false;\r\n // make sure the diff margin shows above overlay.\r\n this._marginDomNode.style.zIndex = '10';\r\n this._diffActions = document.createElement('div');\r\n this._diffActions.className = Codicon.lightBulb.classNames + ' lightbulb-glyph';\r\n this._diffActions.style.position = 'absolute';\r\n const lineHeight = editor.getOption(51 /* lineHeight */);\r\n const lineFeed = editor.getModel().getEOL();\r\n this._diffActions.style.right = '0px';\r\n this._diffActions.style.visibility = 'hidden';\r\n this._diffActions.style.height = `${lineHeight}px`;\r\n this._diffActions.style.lineHeight = `${lineHeight}px`;\r\n this._marginDomNode.appendChild(this._diffActions);\r\n const actions = [];\r\n // default action\r\n actions.push(new Action('diff.clipboard.copyDeletedContent', diff.originalEndLineNumber > diff.modifiedStartLineNumber\r\n ? nls.localize('diff.clipboard.copyDeletedLinesContent.label', \"Copy deleted lines\")\r\n : nls.localize('diff.clipboard.copyDeletedLinesContent.single.label', \"Copy deleted line\"), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\r\n yield this._clipboardService.writeText(diff.originalContent.join(lineFeed) + lineFeed);\r\n })));\r\n let currentLineNumberOffset = 0;\r\n let copyLineAction = undefined;\r\n if (diff.originalEndLineNumber > diff.modifiedStartLineNumber) {\r\n copyLineAction = new Action('diff.clipboard.copyDeletedLineContent', nls.localize('diff.clipboard.copyDeletedLineContent.label', \"Copy deleted line ({0})\", diff.originalStartLineNumber), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\r\n yield this._clipboardService.writeText(diff.originalContent[currentLineNumberOffset]);\r\n }));\r\n actions.push(copyLineAction);\r\n }\r\n const readOnly = editor.getOption(72 /* readOnly */);\r\n if (!readOnly) {\r\n actions.push(new Action('diff.inline.revertChange', nls.localize('diff.inline.revertChange.label', \"Revert this change\"), undefined, true, () => __awaiter(this, void 0, void 0, function* () {\r\n if (diff.modifiedEndLineNumber === 0) {\r\n // deletion only\r\n const column = editor.getModel().getLineMaxColumn(diff.modifiedStartLineNumber);\r\n editor.executeEdits('diffEditor', [\r\n {\r\n range: new Range(diff.modifiedStartLineNumber, column, diff.modifiedStartLineNumber, column),\r\n text: lineFeed + diff.originalContent.join(lineFeed)\r\n }\r\n ]);\r\n }\r\n else {\r\n const column = editor.getModel().getLineMaxColumn(diff.modifiedEndLineNumber);\r\n editor.executeEdits('diffEditor', [\r\n {\r\n range: new Range(diff.modifiedStartLineNumber, 1, diff.modifiedEndLineNumber, column),\r\n text: diff.originalContent.join(lineFeed)\r\n }\r\n ]);\r\n }\r\n })));\r\n }\r\n const showContextMenu = (x, y) => {\r\n this._contextMenuService.showContextMenu({\r\n getAnchor: () => {\r\n return {\r\n x,\r\n y\r\n };\r\n },\r\n getActions: () => {\r\n if (copyLineAction) {\r\n copyLineAction.label = nls.localize('diff.clipboard.copyDeletedLineContent.label', \"Copy deleted line ({0})\", diff.originalStartLineNumber + currentLineNumberOffset);\r\n }\r\n return actions;\r\n },\r\n autoSelectFirstItem: true\r\n });\r\n };\r\n this._register(dom.addStandardDisposableListener(this._diffActions, 'mousedown', e => {\r\n const { top, height } = dom.getDomNodePagePosition(this._diffActions);\r\n let pad = Math.floor(lineHeight / 3);\r\n e.preventDefault();\r\n showContextMenu(e.posx, top + height + pad);\r\n }));\r\n this._register(editor.onMouseMove((e) => {\r\n if (e.target.type === 8 /* CONTENT_VIEW_ZONE */ || e.target.type === 5 /* GUTTER_VIEW_ZONE */) {\r\n const viewZoneId = e.target.detail.viewZoneId;\r\n if (viewZoneId === this._viewZoneId) {\r\n this.visibility = true;\r\n currentLineNumberOffset = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, lineHeight);\r\n }\r\n else {\r\n this.visibility = false;\r\n }\r\n }\r\n else {\r\n this.visibility = false;\r\n }\r\n }));\r\n this._register(editor.onMouseDown((e) => {\r\n if (!e.event.rightButton) {\r\n return;\r\n }\r\n if (e.target.type === 8 /* CONTENT_VIEW_ZONE */ || e.target.type === 5 /* GUTTER_VIEW_ZONE */) {\r\n const viewZoneId = e.target.detail.viewZoneId;\r\n if (viewZoneId === this._viewZoneId) {\r\n e.event.preventDefault();\r\n currentLineNumberOffset = this._updateLightBulbPosition(this._marginDomNode, e.event.browserEvent.y, lineHeight);\r\n showContextMenu(e.event.posx, e.event.posy + lineHeight);\r\n }\r\n }\r\n }));\r\n }\r\n get visibility() {\r\n return this._visibility;\r\n }\r\n set visibility(_visibility) {\r\n if (this._visibility !== _visibility) {\r\n this._visibility = _visibility;\r\n if (_visibility) {\r\n this._diffActions.style.visibility = 'visible';\r\n }\r\n else {\r\n this._diffActions.style.visibility = 'hidden';\r\n }\r\n }\r\n }\r\n _updateLightBulbPosition(marginDomNode, y, lineHeight) {\r\n const { top } = dom.getDomNodePagePosition(marginDomNode);\r\n const offset = y - top;\r\n const lineNumberOffset = Math.floor(offset / lineHeight);\r\n const newTop = lineNumberOffset * lineHeight;\r\n this._diffActions.style.top = `${newTop}px`;\r\n return lineNumberOffset;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Selection } from '../core/selection.js';\r\nexport class ReplaceCommand {\r\n constructor(range, text, insertsAutoWhitespace = false) {\r\n this._range = range;\r\n this._text = text;\r\n this.insertsAutoWhitespace = insertsAutoWhitespace;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(this._range, this._text);\r\n }\r\n computeCursorState(model, helper) {\r\n let inverseEditOperations = helper.getInverseEditOperations();\r\n let srcRange = inverseEditOperations[0].range;\r\n return new Selection(srcRange.endLineNumber, srcRange.endColumn, srcRange.endLineNumber, srcRange.endColumn);\r\n }\r\n}\r\nexport class ReplaceCommandThatSelectsText {\r\n constructor(range, text) {\r\n this._range = range;\r\n this._text = text;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(this._range, this._text);\r\n }\r\n computeCursorState(model, helper) {\r\n const inverseEditOperations = helper.getInverseEditOperations();\r\n const srcRange = inverseEditOperations[0].range;\r\n return new Selection(srcRange.startLineNumber, srcRange.startColumn, srcRange.endLineNumber, srcRange.endColumn);\r\n }\r\n}\r\nexport class ReplaceCommandWithoutChangingPosition {\r\n constructor(range, text, insertsAutoWhitespace = false) {\r\n this._range = range;\r\n this._text = text;\r\n this.insertsAutoWhitespace = insertsAutoWhitespace;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(this._range, this._text);\r\n }\r\n computeCursorState(model, helper) {\r\n let inverseEditOperations = helper.getInverseEditOperations();\r\n let srcRange = inverseEditOperations[0].range;\r\n return new Selection(srcRange.startLineNumber, srcRange.startColumn, srcRange.startLineNumber, srcRange.startColumn);\r\n }\r\n}\r\nexport class ReplaceCommandWithOffsetCursorState {\r\n constructor(range, text, lineNumberDeltaOffset, columnDeltaOffset, insertsAutoWhitespace = false) {\r\n this._range = range;\r\n this._text = text;\r\n this._columnDeltaOffset = columnDeltaOffset;\r\n this._lineNumberDeltaOffset = lineNumberDeltaOffset;\r\n this.insertsAutoWhitespace = insertsAutoWhitespace;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(this._range, this._text);\r\n }\r\n computeCursorState(model, helper) {\r\n let inverseEditOperations = helper.getInverseEditOperations();\r\n let srcRange = inverseEditOperations[0].range;\r\n return new Selection(srcRange.endLineNumber + this._lineNumberDeltaOffset, srcRange.endColumn + this._columnDeltaOffset, srcRange.endLineNumber + this._lineNumberDeltaOffset, srcRange.endColumn + this._columnDeltaOffset);\r\n }\r\n}\r\nexport class ReplaceCommandThatPreservesSelection {\r\n constructor(editRange, text, initialSelection, forceMoveMarkers = false) {\r\n this._range = editRange;\r\n this._text = text;\r\n this._initialSelection = initialSelection;\r\n this._forceMoveMarkers = forceMoveMarkers;\r\n this._selectionId = null;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(this._range, this._text, this._forceMoveMarkers);\r\n this._selectionId = builder.trackSelection(this._initialSelection);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this._selectionId);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { CursorColumns } from '../controller/cursorCommon.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nconst repeatCache = Object.create(null);\r\nexport function cachedStringRepeat(str, count) {\r\n if (!repeatCache[str]) {\r\n repeatCache[str] = ['', str];\r\n }\r\n const cache = repeatCache[str];\r\n for (let i = cache.length; i <= count; i++) {\r\n cache[i] = cache[i - 1] + str;\r\n }\r\n return cache[count];\r\n}\r\nexport class ShiftCommand {\r\n constructor(range, opts) {\r\n this._opts = opts;\r\n this._selection = range;\r\n this._selectionId = null;\r\n this._useLastEditRangeForCursorEndPosition = false;\r\n this._selectionStartColumnStaysPut = false;\r\n }\r\n static unshiftIndent(line, column, tabSize, indentSize, insertSpaces) {\r\n // Determine the visible column where the content starts\r\n const contentStartVisibleColumn = CursorColumns.visibleColumnFromColumn(line, column, tabSize);\r\n if (insertSpaces) {\r\n const indent = cachedStringRepeat(' ', indentSize);\r\n const desiredTabStop = CursorColumns.prevIndentTabStop(contentStartVisibleColumn, indentSize);\r\n const indentCount = desiredTabStop / indentSize; // will be an integer\r\n return cachedStringRepeat(indent, indentCount);\r\n }\r\n else {\r\n const indent = '\\t';\r\n const desiredTabStop = CursorColumns.prevRenderTabStop(contentStartVisibleColumn, tabSize);\r\n const indentCount = desiredTabStop / tabSize; // will be an integer\r\n return cachedStringRepeat(indent, indentCount);\r\n }\r\n }\r\n static shiftIndent(line, column, tabSize, indentSize, insertSpaces) {\r\n // Determine the visible column where the content starts\r\n const contentStartVisibleColumn = CursorColumns.visibleColumnFromColumn(line, column, tabSize);\r\n if (insertSpaces) {\r\n const indent = cachedStringRepeat(' ', indentSize);\r\n const desiredTabStop = CursorColumns.nextIndentTabStop(contentStartVisibleColumn, indentSize);\r\n const indentCount = desiredTabStop / indentSize; // will be an integer\r\n return cachedStringRepeat(indent, indentCount);\r\n }\r\n else {\r\n const indent = '\\t';\r\n const desiredTabStop = CursorColumns.nextRenderTabStop(contentStartVisibleColumn, tabSize);\r\n const indentCount = desiredTabStop / tabSize; // will be an integer\r\n return cachedStringRepeat(indent, indentCount);\r\n }\r\n }\r\n _addEditOperation(builder, range, text) {\r\n if (this._useLastEditRangeForCursorEndPosition) {\r\n builder.addTrackedEditOperation(range, text);\r\n }\r\n else {\r\n builder.addEditOperation(range, text);\r\n }\r\n }\r\n getEditOperations(model, builder) {\r\n const startLine = this._selection.startLineNumber;\r\n let endLine = this._selection.endLineNumber;\r\n if (this._selection.endColumn === 1 && startLine !== endLine) {\r\n endLine = endLine - 1;\r\n }\r\n const { tabSize, indentSize, insertSpaces } = this._opts;\r\n const shouldIndentEmptyLines = (startLine === endLine);\r\n if (this._opts.useTabStops) {\r\n // if indenting or outdenting on a whitespace only line\r\n if (this._selection.isEmpty()) {\r\n if (/^\\s*$/.test(model.getLineContent(startLine))) {\r\n this._useLastEditRangeForCursorEndPosition = true;\r\n }\r\n }\r\n // keep track of previous line's \"miss-alignment\"\r\n let previousLineExtraSpaces = 0, extraSpaces = 0;\r\n for (let lineNumber = startLine; lineNumber <= endLine; lineNumber++, previousLineExtraSpaces = extraSpaces) {\r\n extraSpaces = 0;\r\n let lineText = model.getLineContent(lineNumber);\r\n let indentationEndIndex = strings.firstNonWhitespaceIndex(lineText);\r\n if (this._opts.isUnshift && (lineText.length === 0 || indentationEndIndex === 0)) {\r\n // empty line or line with no leading whitespace => nothing to do\r\n continue;\r\n }\r\n if (!shouldIndentEmptyLines && !this._opts.isUnshift && lineText.length === 0) {\r\n // do not indent empty lines => nothing to do\r\n continue;\r\n }\r\n if (indentationEndIndex === -1) {\r\n // the entire line is whitespace\r\n indentationEndIndex = lineText.length;\r\n }\r\n if (lineNumber > 1) {\r\n let contentStartVisibleColumn = CursorColumns.visibleColumnFromColumn(lineText, indentationEndIndex + 1, tabSize);\r\n if (contentStartVisibleColumn % indentSize !== 0) {\r\n // The current line is \"miss-aligned\", so let's see if this is expected...\r\n // This can only happen when it has trailing commas in the indent\r\n if (model.isCheapToTokenize(lineNumber - 1)) {\r\n let enterAction = LanguageConfigurationRegistry.getEnterAction(this._opts.autoIndent, model, new Range(lineNumber - 1, model.getLineMaxColumn(lineNumber - 1), lineNumber - 1, model.getLineMaxColumn(lineNumber - 1)));\r\n if (enterAction) {\r\n extraSpaces = previousLineExtraSpaces;\r\n if (enterAction.appendText) {\r\n for (let j = 0, lenJ = enterAction.appendText.length; j < lenJ && extraSpaces < indentSize; j++) {\r\n if (enterAction.appendText.charCodeAt(j) === 32 /* Space */) {\r\n extraSpaces++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n if (enterAction.removeText) {\r\n extraSpaces = Math.max(0, extraSpaces - enterAction.removeText);\r\n }\r\n // Act as if `prefixSpaces` is not part of the indentation\r\n for (let j = 0; j < extraSpaces; j++) {\r\n if (indentationEndIndex === 0 || lineText.charCodeAt(indentationEndIndex - 1) !== 32 /* Space */) {\r\n break;\r\n }\r\n indentationEndIndex--;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (this._opts.isUnshift && indentationEndIndex === 0) {\r\n // line with no leading whitespace => nothing to do\r\n continue;\r\n }\r\n let desiredIndent;\r\n if (this._opts.isUnshift) {\r\n desiredIndent = ShiftCommand.unshiftIndent(lineText, indentationEndIndex + 1, tabSize, indentSize, insertSpaces);\r\n }\r\n else {\r\n desiredIndent = ShiftCommand.shiftIndent(lineText, indentationEndIndex + 1, tabSize, indentSize, insertSpaces);\r\n }\r\n this._addEditOperation(builder, new Range(lineNumber, 1, lineNumber, indentationEndIndex + 1), desiredIndent);\r\n if (lineNumber === startLine && !this._selection.isEmpty()) {\r\n // Force the startColumn to stay put because we're inserting after it\r\n this._selectionStartColumnStaysPut = (this._selection.startColumn <= indentationEndIndex + 1);\r\n }\r\n }\r\n }\r\n else {\r\n // if indenting or outdenting on a whitespace only line\r\n if (!this._opts.isUnshift && this._selection.isEmpty() && model.getLineLength(startLine) === 0) {\r\n this._useLastEditRangeForCursorEndPosition = true;\r\n }\r\n const oneIndent = (insertSpaces ? cachedStringRepeat(' ', indentSize) : '\\t');\r\n for (let lineNumber = startLine; lineNumber <= endLine; lineNumber++) {\r\n const lineText = model.getLineContent(lineNumber);\r\n let indentationEndIndex = strings.firstNonWhitespaceIndex(lineText);\r\n if (this._opts.isUnshift && (lineText.length === 0 || indentationEndIndex === 0)) {\r\n // empty line or line with no leading whitespace => nothing to do\r\n continue;\r\n }\r\n if (!shouldIndentEmptyLines && !this._opts.isUnshift && lineText.length === 0) {\r\n // do not indent empty lines => nothing to do\r\n continue;\r\n }\r\n if (indentationEndIndex === -1) {\r\n // the entire line is whitespace\r\n indentationEndIndex = lineText.length;\r\n }\r\n if (this._opts.isUnshift && indentationEndIndex === 0) {\r\n // line with no leading whitespace => nothing to do\r\n continue;\r\n }\r\n if (this._opts.isUnshift) {\r\n indentationEndIndex = Math.min(indentationEndIndex, indentSize);\r\n for (let i = 0; i < indentationEndIndex; i++) {\r\n const chr = lineText.charCodeAt(i);\r\n if (chr === 9 /* Tab */) {\r\n indentationEndIndex = i + 1;\r\n break;\r\n }\r\n }\r\n this._addEditOperation(builder, new Range(lineNumber, 1, lineNumber, indentationEndIndex + 1), '');\r\n }\r\n else {\r\n this._addEditOperation(builder, new Range(lineNumber, 1, lineNumber, 1), oneIndent);\r\n if (lineNumber === startLine && !this._selection.isEmpty()) {\r\n // Force the startColumn to stay put because we're inserting after it\r\n this._selectionStartColumnStaysPut = (this._selection.startColumn === 1);\r\n }\r\n }\r\n }\r\n }\r\n this._selectionId = builder.trackSelection(this._selection);\r\n }\r\n computeCursorState(model, helper) {\r\n if (this._useLastEditRangeForCursorEndPosition) {\r\n let lastOp = helper.getInverseEditOperations()[0];\r\n return new Selection(lastOp.range.endLineNumber, lastOp.range.endColumn, lastOp.range.endLineNumber, lastOp.range.endColumn);\r\n }\r\n const result = helper.getTrackedSelection(this._selectionId);\r\n if (this._selectionStartColumnStaysPut) {\r\n // The selection start should not move\r\n let initialStartColumn = this._selection.startColumn;\r\n let resultStartColumn = result.startColumn;\r\n if (resultStartColumn <= initialStartColumn) {\r\n return result;\r\n }\r\n if (result.getDirection() === 0 /* LTR */) {\r\n return new Selection(result.startLineNumber, initialStartColumn, result.endLineNumber, result.endColumn);\r\n }\r\n return new Selection(result.endLineNumber, result.endColumn, result.startLineNumber, initialStartColumn);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nexport class SurroundSelectionCommand {\r\n constructor(range, charBeforeSelection, charAfterSelection) {\r\n this._range = range;\r\n this._charBeforeSelection = charBeforeSelection;\r\n this._charAfterSelection = charAfterSelection;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(new Range(this._range.startLineNumber, this._range.startColumn, this._range.startLineNumber, this._range.startColumn), this._charBeforeSelection);\r\n builder.addTrackedEditOperation(new Range(this._range.endLineNumber, this._range.endColumn, this._range.endLineNumber, this._range.endColumn), this._charAfterSelection);\r\n }\r\n computeCursorState(model, helper) {\r\n let inverseEditOperations = helper.getInverseEditOperations();\r\n let firstOperationRange = inverseEditOperations[0].range;\r\n let secondOperationRange = inverseEditOperations[1].range;\r\n return new Selection(firstOperationRange.endLineNumber, firstOperationRange.endColumn, secondOperationRange.endLineNumber, secondOperationRange.endColumn - this._charAfterSelection.length);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { EditOperation } from '../core/editOperation.js';\r\nimport { Range } from '../core/range.js';\r\nexport class TrimTrailingWhitespaceCommand {\r\n constructor(selection, cursors) {\r\n this._selection = selection;\r\n this._cursors = cursors;\r\n this._selectionId = null;\r\n }\r\n getEditOperations(model, builder) {\r\n let ops = trimTrailingWhitespace(model, this._cursors);\r\n for (let i = 0, len = ops.length; i < len; i++) {\r\n let op = ops[i];\r\n builder.addEditOperation(op.range, op.text);\r\n }\r\n this._selectionId = builder.trackSelection(this._selection);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this._selectionId);\r\n }\r\n}\r\n/**\r\n * Generate commands for trimming trailing whitespace on a model and ignore lines on which cursors are sitting.\r\n */\r\nexport function trimTrailingWhitespace(model, cursors) {\r\n // Sort cursors ascending\r\n cursors.sort((a, b) => {\r\n if (a.lineNumber === b.lineNumber) {\r\n return a.column - b.column;\r\n }\r\n return a.lineNumber - b.lineNumber;\r\n });\r\n // Reduce multiple cursors on the same line and only keep the last one on the line\r\n for (let i = cursors.length - 2; i >= 0; i--) {\r\n if (cursors[i].lineNumber === cursors[i + 1].lineNumber) {\r\n // Remove cursor at `i`\r\n cursors.splice(i, 1);\r\n }\r\n }\r\n let r = [];\r\n let rLen = 0;\r\n let cursorIndex = 0;\r\n let cursorLen = cursors.length;\r\n for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\r\n let lineContent = model.getLineContent(lineNumber);\r\n let maxLineColumn = lineContent.length + 1;\r\n let minEditColumn = 0;\r\n if (cursorIndex < cursorLen && cursors[cursorIndex].lineNumber === lineNumber) {\r\n minEditColumn = cursors[cursorIndex].column;\r\n cursorIndex++;\r\n if (minEditColumn === maxLineColumn) {\r\n // The cursor is at the end of the line => no edits for sure on this line\r\n continue;\r\n }\r\n }\r\n if (lineContent.length === 0) {\r\n continue;\r\n }\r\n let lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\r\n let fromColumn = 0;\r\n if (lastNonWhitespaceIndex === -1) {\r\n // Entire line is whitespace\r\n fromColumn = 1;\r\n }\r\n else if (lastNonWhitespaceIndex !== lineContent.length - 1) {\r\n // There is trailing whitespace\r\n fromColumn = lastNonWhitespaceIndex + 2;\r\n }\r\n else {\r\n // There is no trailing whitespace\r\n continue;\r\n }\r\n fromColumn = Math.max(minEditColumn, fromColumn);\r\n r[rLen++] = EditOperation.delete(new Range(lineNumber, fromColumn, lineNumber, maxLineColumn));\r\n }\r\n return r;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { editorOptionsRegistry, ValidatedEditorOptions, ConfigurationChangedEvent, EDITOR_MODEL_DEFAULTS, ComputeOptionsMemory } from './editorOptions.js';\r\nimport { EditorZoom } from './editorZoom.js';\r\nimport { BareFontInfo } from './fontInfo.js';\r\nimport { Extensions } from '../../../platform/configuration/common/configurationRegistry.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nimport { forEach } from '../../../base/common/collections.js';\r\nexport const TabFocus = new class {\r\n constructor() {\r\n this._tabFocus = false;\r\n this._onDidChangeTabFocus = new Emitter();\r\n this.onDidChangeTabFocus = this._onDidChangeTabFocus.event;\r\n }\r\n getTabFocusMode() {\r\n return this._tabFocus;\r\n }\r\n setTabFocusMode(tabFocusMode) {\r\n if (this._tabFocus === tabFocusMode) {\r\n return;\r\n }\r\n this._tabFocus = tabFocusMode;\r\n this._onDidChangeTabFocus.fire(this._tabFocus);\r\n }\r\n};\r\nconst hasOwnProperty = Object.hasOwnProperty;\r\nexport class ComputedEditorOptions {\r\n constructor() {\r\n this._values = [];\r\n }\r\n _read(id) {\r\n return this._values[id];\r\n }\r\n get(id) {\r\n return this._values[id];\r\n }\r\n _write(id, value) {\r\n this._values[id] = value;\r\n }\r\n}\r\nclass RawEditorOptions {\r\n constructor() {\r\n this._values = [];\r\n }\r\n _read(id) {\r\n return this._values[id];\r\n }\r\n _write(id, value) {\r\n this._values[id] = value;\r\n }\r\n}\r\nclass EditorConfiguration2 {\r\n static readOptions(_options) {\r\n const options = _options;\r\n const result = new RawEditorOptions();\r\n for (const editorOption of editorOptionsRegistry) {\r\n const value = (editorOption.name === '_never_' ? undefined : options[editorOption.name]);\r\n result._write(editorOption.id, value);\r\n }\r\n return result;\r\n }\r\n static validateOptions(options) {\r\n const result = new ValidatedEditorOptions();\r\n for (const editorOption of editorOptionsRegistry) {\r\n result._write(editorOption.id, editorOption.validate(options._read(editorOption.id)));\r\n }\r\n return result;\r\n }\r\n static computeOptions(options, env) {\r\n const result = new ComputedEditorOptions();\r\n for (const editorOption of editorOptionsRegistry) {\r\n result._write(editorOption.id, editorOption.compute(env, result, options._read(editorOption.id)));\r\n }\r\n return result;\r\n }\r\n static _deepEquals(a, b) {\r\n if (typeof a !== 'object' || typeof b !== 'object') {\r\n return (a === b);\r\n }\r\n if (Array.isArray(a) || Array.isArray(b)) {\r\n return (Array.isArray(a) && Array.isArray(b) ? arrays.equals(a, b) : false);\r\n }\r\n for (let key in a) {\r\n if (!EditorConfiguration2._deepEquals(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static checkEquals(a, b) {\r\n const result = [];\r\n let somethingChanged = false;\r\n for (const editorOption of editorOptionsRegistry) {\r\n const changed = !EditorConfiguration2._deepEquals(a._read(editorOption.id), b._read(editorOption.id));\r\n result[editorOption.id] = changed;\r\n if (changed) {\r\n somethingChanged = true;\r\n }\r\n }\r\n return (somethingChanged ? new ConfigurationChangedEvent(result) : null);\r\n }\r\n}\r\n/**\r\n * Compatibility with old options\r\n */\r\nfunction migrateOptions(options) {\r\n const wordWrap = options.wordWrap;\r\n if (wordWrap === true) {\r\n options.wordWrap = 'on';\r\n }\r\n else if (wordWrap === false) {\r\n options.wordWrap = 'off';\r\n }\r\n const lineNumbers = options.lineNumbers;\r\n if (lineNumbers === true) {\r\n options.lineNumbers = 'on';\r\n }\r\n else if (lineNumbers === false) {\r\n options.lineNumbers = 'off';\r\n }\r\n const autoClosingBrackets = options.autoClosingBrackets;\r\n if (autoClosingBrackets === false) {\r\n options.autoClosingBrackets = 'never';\r\n options.autoClosingQuotes = 'never';\r\n options.autoSurround = 'never';\r\n }\r\n const cursorBlinking = options.cursorBlinking;\r\n if (cursorBlinking === 'visible') {\r\n options.cursorBlinking = 'solid';\r\n }\r\n const renderWhitespace = options.renderWhitespace;\r\n if (renderWhitespace === true) {\r\n options.renderWhitespace = 'boundary';\r\n }\r\n else if (renderWhitespace === false) {\r\n options.renderWhitespace = 'none';\r\n }\r\n const renderLineHighlight = options.renderLineHighlight;\r\n if (renderLineHighlight === true) {\r\n options.renderLineHighlight = 'line';\r\n }\r\n else if (renderLineHighlight === false) {\r\n options.renderLineHighlight = 'none';\r\n }\r\n const acceptSuggestionOnEnter = options.acceptSuggestionOnEnter;\r\n if (acceptSuggestionOnEnter === true) {\r\n options.acceptSuggestionOnEnter = 'on';\r\n }\r\n else if (acceptSuggestionOnEnter === false) {\r\n options.acceptSuggestionOnEnter = 'off';\r\n }\r\n const tabCompletion = options.tabCompletion;\r\n if (tabCompletion === false) {\r\n options.tabCompletion = 'off';\r\n }\r\n else if (tabCompletion === true) {\r\n options.tabCompletion = 'onlySnippets';\r\n }\r\n const suggest = options.suggest;\r\n if (suggest && typeof suggest.filteredTypes === 'object' && suggest.filteredTypes) {\r\n const mapping = {};\r\n mapping['method'] = 'showMethods';\r\n mapping['function'] = 'showFunctions';\r\n mapping['constructor'] = 'showConstructors';\r\n mapping['field'] = 'showFields';\r\n mapping['variable'] = 'showVariables';\r\n mapping['class'] = 'showClasses';\r\n mapping['struct'] = 'showStructs';\r\n mapping['interface'] = 'showInterfaces';\r\n mapping['module'] = 'showModules';\r\n mapping['property'] = 'showProperties';\r\n mapping['event'] = 'showEvents';\r\n mapping['operator'] = 'showOperators';\r\n mapping['unit'] = 'showUnits';\r\n mapping['value'] = 'showValues';\r\n mapping['constant'] = 'showConstants';\r\n mapping['enum'] = 'showEnums';\r\n mapping['enumMember'] = 'showEnumMembers';\r\n mapping['keyword'] = 'showKeywords';\r\n mapping['text'] = 'showWords';\r\n mapping['color'] = 'showColors';\r\n mapping['file'] = 'showFiles';\r\n mapping['reference'] = 'showReferences';\r\n mapping['folder'] = 'showFolders';\r\n mapping['typeParameter'] = 'showTypeParameters';\r\n mapping['snippet'] = 'showSnippets';\r\n forEach(mapping, entry => {\r\n const value = suggest.filteredTypes[entry.key];\r\n if (value === false) {\r\n suggest[entry.value] = value;\r\n }\r\n });\r\n // delete (<any>suggest).filteredTypes;\r\n }\r\n const hover = options.hover;\r\n if (hover === true) {\r\n options.hover = {\r\n enabled: true\r\n };\r\n }\r\n else if (hover === false) {\r\n options.hover = {\r\n enabled: false\r\n };\r\n }\r\n const parameterHints = options.parameterHints;\r\n if (parameterHints === true) {\r\n options.parameterHints = {\r\n enabled: true\r\n };\r\n }\r\n else if (parameterHints === false) {\r\n options.parameterHints = {\r\n enabled: false\r\n };\r\n }\r\n const autoIndent = options.autoIndent;\r\n if (autoIndent === true) {\r\n options.autoIndent = 'full';\r\n }\r\n else if (autoIndent === false) {\r\n options.autoIndent = 'advanced';\r\n }\r\n const matchBrackets = options.matchBrackets;\r\n if (matchBrackets === true) {\r\n options.matchBrackets = 'always';\r\n }\r\n else if (matchBrackets === false) {\r\n options.matchBrackets = 'never';\r\n }\r\n}\r\nfunction deepCloneAndMigrateOptions(_options) {\r\n const options = objects.deepClone(_options);\r\n migrateOptions(options);\r\n return options;\r\n}\r\nexport class CommonEditorConfiguration extends Disposable {\r\n constructor(isSimpleWidget, _options) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._onDidChangeFast = this._register(new Emitter());\r\n this.onDidChangeFast = this._onDidChangeFast.event;\r\n this.isSimpleWidget = isSimpleWidget;\r\n this._isDominatedByLongLines = false;\r\n this._computeOptionsMemory = new ComputeOptionsMemory();\r\n this._viewLineCount = 1;\r\n this._lineNumbersDigitCount = 1;\r\n this._rawOptions = deepCloneAndMigrateOptions(_options);\r\n this._readOptions = EditorConfiguration2.readOptions(this._rawOptions);\r\n this._validatedOptions = EditorConfiguration2.validateOptions(this._readOptions);\r\n this._register(EditorZoom.onDidChangeZoomLevel(_ => this._recomputeOptions()));\r\n this._register(TabFocus.onDidChangeTabFocus(_ => this._recomputeOptions()));\r\n }\r\n observeReferenceElement(dimension) {\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _recomputeOptions() {\r\n const oldOptions = this.options;\r\n const newOptions = this._computeInternalOptions();\r\n if (!oldOptions) {\r\n this.options = newOptions;\r\n }\r\n else {\r\n const changeEvent = EditorConfiguration2.checkEquals(oldOptions, newOptions);\r\n if (changeEvent === null) {\r\n // nothing changed!\r\n return;\r\n }\r\n this.options = newOptions;\r\n this._onDidChangeFast.fire(changeEvent);\r\n this._onDidChange.fire(changeEvent);\r\n }\r\n }\r\n getRawOptions() {\r\n return this._rawOptions;\r\n }\r\n _computeInternalOptions() {\r\n const partialEnv = this._getEnvConfiguration();\r\n const bareFontInfo = BareFontInfo.createFromValidatedSettings(this._validatedOptions, partialEnv.zoomLevel, this.isSimpleWidget);\r\n const env = {\r\n memory: this._computeOptionsMemory,\r\n outerWidth: partialEnv.outerWidth,\r\n outerHeight: partialEnv.outerHeight,\r\n fontInfo: this.readConfiguration(bareFontInfo),\r\n extraEditorClassName: partialEnv.extraEditorClassName,\r\n isDominatedByLongLines: this._isDominatedByLongLines,\r\n viewLineCount: this._viewLineCount,\r\n lineNumbersDigitCount: this._lineNumbersDigitCount,\r\n emptySelectionClipboard: partialEnv.emptySelectionClipboard,\r\n pixelRatio: partialEnv.pixelRatio,\r\n tabFocusMode: TabFocus.getTabFocusMode(),\r\n accessibilitySupport: partialEnv.accessibilitySupport\r\n };\r\n return EditorConfiguration2.computeOptions(this._validatedOptions, env);\r\n }\r\n static _subsetEquals(base, subset) {\r\n for (const key in subset) {\r\n if (hasOwnProperty.call(subset, key)) {\r\n const subsetValue = subset[key];\r\n const baseValue = base[key];\r\n if (baseValue === subsetValue) {\r\n continue;\r\n }\r\n if (Array.isArray(baseValue) && Array.isArray(subsetValue)) {\r\n if (!arrays.equals(baseValue, subsetValue)) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n if (baseValue && typeof baseValue === 'object' && subsetValue && typeof subsetValue === 'object') {\r\n if (!this._subsetEquals(baseValue, subsetValue)) {\r\n return false;\r\n }\r\n continue;\r\n }\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n updateOptions(_newOptions) {\r\n if (typeof _newOptions === 'undefined') {\r\n return;\r\n }\r\n const newOptions = deepCloneAndMigrateOptions(_newOptions);\r\n if (CommonEditorConfiguration._subsetEquals(this._rawOptions, newOptions)) {\r\n return;\r\n }\r\n this._rawOptions = objects.mixin(this._rawOptions, newOptions || {});\r\n this._readOptions = EditorConfiguration2.readOptions(this._rawOptions);\r\n this._validatedOptions = EditorConfiguration2.validateOptions(this._readOptions);\r\n this._recomputeOptions();\r\n }\r\n setIsDominatedByLongLines(isDominatedByLongLines) {\r\n this._isDominatedByLongLines = isDominatedByLongLines;\r\n this._recomputeOptions();\r\n }\r\n setMaxLineNumber(maxLineNumber) {\r\n const lineNumbersDigitCount = CommonEditorConfiguration._digitCount(maxLineNumber);\r\n if (this._lineNumbersDigitCount === lineNumbersDigitCount) {\r\n return;\r\n }\r\n this._lineNumbersDigitCount = lineNumbersDigitCount;\r\n this._recomputeOptions();\r\n }\r\n setViewLineCount(viewLineCount) {\r\n if (this._viewLineCount === viewLineCount) {\r\n return;\r\n }\r\n this._viewLineCount = viewLineCount;\r\n this._recomputeOptions();\r\n }\r\n static _digitCount(n) {\r\n let r = 0;\r\n while (n) {\r\n n = Math.floor(n / 10);\r\n r++;\r\n }\r\n return r ? r : 1;\r\n }\r\n}\r\nexport const editorConfigurationBaseNode = Object.freeze({\r\n id: 'editor',\r\n order: 5,\r\n type: 'object',\r\n title: nls.localize('editorConfigurationTitle', \"Editor\"),\r\n scope: 5 /* LANGUAGE_OVERRIDABLE */,\r\n});\r\nconst configurationRegistry = Registry.as(Extensions.Configuration);\r\nconst editorConfiguration = Object.assign(Object.assign({}, editorConfigurationBaseNode), { properties: {\r\n 'editor.tabSize': {\r\n type: 'number',\r\n default: EDITOR_MODEL_DEFAULTS.tabSize,\r\n minimum: 1,\r\n markdownDescription: nls.localize('tabSize', \"The number of spaces a tab is equal to. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.\")\r\n },\r\n // 'editor.indentSize': {\r\n // \t'anyOf': [\r\n // \t\t{\r\n // \t\t\ttype: 'string',\r\n // \t\t\tenum: ['tabSize']\r\n // \t\t},\r\n // \t\t{\r\n // \t\t\ttype: 'number',\r\n // \t\t\tminimum: 1\r\n // \t\t}\r\n // \t],\r\n // \tdefault: 'tabSize',\r\n // \tmarkdownDescription: nls.localize('indentSize', \"The number of spaces used for indentation or 'tabSize' to use the value from `#editor.tabSize#`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.\")\r\n // },\r\n 'editor.insertSpaces': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.insertSpaces,\r\n markdownDescription: nls.localize('insertSpaces', \"Insert spaces when pressing `Tab`. This setting is overridden based on the file contents when `#editor.detectIndentation#` is on.\")\r\n },\r\n 'editor.detectIndentation': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.detectIndentation,\r\n markdownDescription: nls.localize('detectIndentation', \"Controls whether `#editor.tabSize#` and `#editor.insertSpaces#` will be automatically detected when a file is opened based on the file contents.\")\r\n },\r\n 'editor.trimAutoWhitespace': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,\r\n description: nls.localize('trimAutoWhitespace', \"Remove trailing auto inserted whitespace.\")\r\n },\r\n 'editor.largeFileOptimizations': {\r\n type: 'boolean',\r\n default: EDITOR_MODEL_DEFAULTS.largeFileOptimizations,\r\n description: nls.localize('largeFileOptimizations', \"Special handling for large files to disable certain memory intensive features.\")\r\n },\r\n 'editor.wordBasedSuggestions': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('wordBasedSuggestions', \"Controls whether completions should be computed based on words in the document.\")\r\n },\r\n 'editor.semanticHighlighting.enabled': {\r\n enum: [true, false, 'configuredByTheme'],\r\n enumDescriptions: [\r\n nls.localize('semanticHighlighting.true', 'Semantic highlighting enabled for all color themes.'),\r\n nls.localize('semanticHighlighting.false', 'Semantic highlighting disabled for all color themes.'),\r\n nls.localize('semanticHighlighting.configuredByTheme', 'Semantic highlighting is configured by the current color theme\\'s `semanticHighlighting` setting.')\r\n ],\r\n default: 'configuredByTheme',\r\n description: nls.localize('semanticHighlighting.enabled', \"Controls whether the semanticHighlighting is shown for the languages that support it.\")\r\n },\r\n 'editor.stablePeek': {\r\n type: 'boolean',\r\n default: false,\r\n markdownDescription: nls.localize('stablePeek', \"Keep peek editors open even when double clicking their content or when hitting `Escape`.\")\r\n },\r\n 'editor.maxTokenizationLineLength': {\r\n type: 'integer',\r\n default: 20000,\r\n description: nls.localize('maxTokenizationLineLength', \"Lines above this length will not be tokenized for performance reasons\")\r\n },\r\n 'diffEditor.maxComputationTime': {\r\n type: 'number',\r\n default: 5000,\r\n description: nls.localize('maxComputationTime', \"Timeout in milliseconds after which diff computation is cancelled. Use 0 for no timeout.\")\r\n },\r\n 'diffEditor.renderSideBySide': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('sideBySide', \"Controls whether the diff editor shows the diff side by side or inline.\")\r\n },\r\n 'diffEditor.ignoreTrimWhitespace': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('ignoreTrimWhitespace', \"When enabled, the diff editor ignores changes in leading or trailing whitespace.\")\r\n },\r\n 'diffEditor.renderIndicators': {\r\n type: 'boolean',\r\n default: true,\r\n description: nls.localize('renderIndicators', \"Controls whether the diff editor shows +/- indicators for added/removed changes.\")\r\n },\r\n 'diffEditor.codeLens': {\r\n type: 'boolean',\r\n default: false,\r\n description: nls.localize('codeLens', \"Controls whether the editor shows CodeLens.\")\r\n }\r\n } });\r\nfunction isConfigurationPropertySchema(x) {\r\n return (typeof x.type !== 'undefined' || typeof x.anyOf !== 'undefined');\r\n}\r\n// Add properties from the Editor Option Registry\r\nfor (const editorOption of editorOptionsRegistry) {\r\n const schema = editorOption.schema;\r\n if (typeof schema !== 'undefined') {\r\n if (isConfigurationPropertySchema(schema)) {\r\n // This is a single schema contribution\r\n editorConfiguration.properties[`editor.${editorOption.name}`] = schema;\r\n }\r\n else {\r\n for (let key in schema) {\r\n if (hasOwnProperty.call(schema, key)) {\r\n editorConfiguration.properties[key] = schema[key];\r\n }\r\n }\r\n }\r\n }\r\n}\r\nlet cachedEditorConfigurationKeys = null;\r\nfunction getEditorConfigurationKeys() {\r\n if (cachedEditorConfigurationKeys === null) {\r\n cachedEditorConfigurationKeys = Object.create(null);\r\n Object.keys(editorConfiguration.properties).forEach((prop) => {\r\n cachedEditorConfigurationKeys[prop] = true;\r\n });\r\n }\r\n return cachedEditorConfigurationKeys;\r\n}\r\nexport function isEditorConfigurationKey(key) {\r\n const editorConfigurationKeys = getEditorConfigurationKeys();\r\n return (editorConfigurationKeys[`editor.${key}`] || false);\r\n}\r\nexport function isDiffEditorConfigurationKey(key) {\r\n const editorConfigurationKeys = getEditorConfigurationKeys();\r\n return (editorConfigurationKeys[`diffEditor.${key}`] || false);\r\n}\r\nconfigurationRegistry.registerConfiguration(editorConfiguration);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { USUAL_WORD_SEPARATORS } from '../model/wordHelper.js';\r\n/**\r\n * @internal\r\n * The width of the minimap gutter, in pixels.\r\n */\r\nexport const MINIMAP_GUTTER_WIDTH = 8;\r\n//#endregion\r\n/**\r\n * An event describing that the configuration of the editor has changed.\r\n */\r\nexport class ConfigurationChangedEvent {\r\n /**\r\n * @internal\r\n */\r\n constructor(values) {\r\n this._values = values;\r\n }\r\n hasChanged(id) {\r\n return this._values[id];\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ValidatedEditorOptions {\r\n constructor() {\r\n this._values = [];\r\n }\r\n _read(option) {\r\n return this._values[option];\r\n }\r\n get(id) {\r\n return this._values[id];\r\n }\r\n _write(option, value) {\r\n this._values[option] = value;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ComputeOptionsMemory {\r\n constructor() {\r\n this.stableMinimapLayoutInput = null;\r\n this.stableFitMaxMinimapScale = 0;\r\n this.stableFitRemainingWidth = 0;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass BaseEditorOption {\r\n constructor(id, name, defaultValue, schema) {\r\n this.id = id;\r\n this.name = name;\r\n this.defaultValue = defaultValue;\r\n this.schema = schema;\r\n }\r\n compute(env, options, value) {\r\n return value;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass ComputedEditorOption {\r\n constructor(id, deps = null) {\r\n this.schema = undefined;\r\n this.id = id;\r\n this.name = '_never_';\r\n this.defaultValue = undefined;\r\n this.deps = deps;\r\n }\r\n validate(input) {\r\n return this.defaultValue;\r\n }\r\n}\r\nclass SimpleEditorOption {\r\n constructor(id, name, defaultValue, schema) {\r\n this.id = id;\r\n this.name = name;\r\n this.defaultValue = defaultValue;\r\n this.schema = schema;\r\n }\r\n validate(input) {\r\n if (typeof input === 'undefined') {\r\n return this.defaultValue;\r\n }\r\n return input;\r\n }\r\n compute(env, options, value) {\r\n return value;\r\n }\r\n}\r\nclass EditorBooleanOption extends SimpleEditorOption {\r\n static boolean(value, defaultValue) {\r\n if (typeof value === 'undefined') {\r\n return defaultValue;\r\n }\r\n if (value === 'false') {\r\n // treat the string 'false' as false\r\n return false;\r\n }\r\n return Boolean(value);\r\n }\r\n constructor(id, name, defaultValue, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'boolean';\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n }\r\n validate(input) {\r\n return EditorBooleanOption.boolean(input, this.defaultValue);\r\n }\r\n}\r\nclass EditorIntOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, minimum, maximum, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'integer';\r\n schema.default = defaultValue;\r\n schema.minimum = minimum;\r\n schema.maximum = maximum;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this.minimum = minimum;\r\n this.maximum = maximum;\r\n }\r\n static clampedInt(value, defaultValue, minimum, maximum) {\r\n if (typeof value === 'undefined') {\r\n return defaultValue;\r\n }\r\n let r = parseInt(value, 10);\r\n if (isNaN(r)) {\r\n return defaultValue;\r\n }\r\n r = Math.max(minimum, r);\r\n r = Math.min(maximum, r);\r\n return r | 0;\r\n }\r\n validate(input) {\r\n return EditorIntOption.clampedInt(input, this.defaultValue, this.minimum, this.maximum);\r\n }\r\n}\r\nclass EditorFloatOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, validationFn, schema) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'number';\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this.validationFn = validationFn;\r\n }\r\n static clamp(n, min, max) {\r\n if (n < min) {\r\n return min;\r\n }\r\n if (n > max) {\r\n return max;\r\n }\r\n return n;\r\n }\r\n static float(value, defaultValue) {\r\n if (typeof value === 'number') {\r\n return value;\r\n }\r\n if (typeof value === 'undefined') {\r\n return defaultValue;\r\n }\r\n const r = parseFloat(value);\r\n return (isNaN(r) ? defaultValue : r);\r\n }\r\n validate(input) {\r\n return this.validationFn(EditorFloatOption.float(input, this.defaultValue));\r\n }\r\n}\r\nclass EditorStringOption extends SimpleEditorOption {\r\n static string(value, defaultValue) {\r\n if (typeof value !== 'string') {\r\n return defaultValue;\r\n }\r\n return value;\r\n }\r\n constructor(id, name, defaultValue, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'string';\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n }\r\n validate(input) {\r\n return EditorStringOption.string(input, this.defaultValue);\r\n }\r\n}\r\nclass EditorStringEnumOption extends SimpleEditorOption {\r\n constructor(id, name, defaultValue, allowedValues, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'string';\r\n schema.enum = allowedValues;\r\n schema.default = defaultValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this._allowedValues = allowedValues;\r\n }\r\n static stringSet(value, defaultValue, allowedValues) {\r\n if (typeof value !== 'string') {\r\n return defaultValue;\r\n }\r\n if (allowedValues.indexOf(value) === -1) {\r\n return defaultValue;\r\n }\r\n return value;\r\n }\r\n validate(input) {\r\n return EditorStringEnumOption.stringSet(input, this.defaultValue, this._allowedValues);\r\n }\r\n}\r\nclass EditorEnumOption extends BaseEditorOption {\r\n constructor(id, name, defaultValue, defaultStringValue, allowedValues, convert, schema = undefined) {\r\n if (typeof schema !== 'undefined') {\r\n schema.type = 'string';\r\n schema.enum = allowedValues;\r\n schema.default = defaultStringValue;\r\n }\r\n super(id, name, defaultValue, schema);\r\n this._allowedValues = allowedValues;\r\n this._convert = convert;\r\n }\r\n validate(input) {\r\n if (typeof input !== 'string') {\r\n return this.defaultValue;\r\n }\r\n if (this._allowedValues.indexOf(input) === -1) {\r\n return this.defaultValue;\r\n }\r\n return this._convert(input);\r\n }\r\n}\r\n//#endregion\r\n//#region autoIndent\r\nfunction _autoIndentFromString(autoIndent) {\r\n switch (autoIndent) {\r\n case 'none': return 0 /* None */;\r\n case 'keep': return 1 /* Keep */;\r\n case 'brackets': return 2 /* Brackets */;\r\n case 'advanced': return 3 /* Advanced */;\r\n case 'full': return 4 /* Full */;\r\n }\r\n}\r\n//#endregion\r\n//#region accessibilitySupport\r\nclass EditorAccessibilitySupport extends BaseEditorOption {\r\n constructor() {\r\n super(2 /* accessibilitySupport */, 'accessibilitySupport', 0 /* Unknown */, {\r\n type: 'string',\r\n enum: ['auto', 'on', 'off'],\r\n enumDescriptions: [\r\n nls.localize('accessibilitySupport.auto', \"The editor will use platform APIs to detect when a Screen Reader is attached.\"),\r\n nls.localize('accessibilitySupport.on', \"The editor will be permanently optimized for usage with a Screen Reader.\"),\r\n nls.localize('accessibilitySupport.off', \"The editor will never be optimized for usage with a Screen Reader.\"),\r\n ],\r\n default: 'auto',\r\n description: nls.localize('accessibilitySupport', \"Controls whether the editor should run in a mode where it is optimized for screen readers.\")\r\n });\r\n }\r\n validate(input) {\r\n switch (input) {\r\n case 'auto': return 0 /* Unknown */;\r\n case 'off': return 1 /* Disabled */;\r\n case 'on': return 2 /* Enabled */;\r\n }\r\n return this.defaultValue;\r\n }\r\n compute(env, options, value) {\r\n if (value === 0 /* Unknown */) {\r\n // The editor reads the `accessibilitySupport` from the environment\r\n return env.accessibilitySupport;\r\n }\r\n return value;\r\n }\r\n}\r\nclass EditorComments extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n insertSpace: true,\r\n ignoreEmptyLines: true,\r\n };\r\n super(14 /* comments */, 'comments', defaults, {\r\n 'editor.comments.insertSpace': {\r\n type: 'boolean',\r\n default: defaults.insertSpace,\r\n description: nls.localize('comments.insertSpace', \"Controls whether a space character is inserted when commenting.\")\r\n },\r\n 'editor.comments.ignoreEmptyLines': {\r\n type: 'boolean',\r\n default: defaults.ignoreEmptyLines,\r\n description: nls.localize('comments.ignoreEmptyLines', 'Controls if empty lines should be ignored with toggle, add or remove actions for line comments.')\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n insertSpace: EditorBooleanOption.boolean(input.insertSpace, this.defaultValue.insertSpace),\r\n ignoreEmptyLines: EditorBooleanOption.boolean(input.ignoreEmptyLines, this.defaultValue.ignoreEmptyLines),\r\n };\r\n }\r\n}\r\nfunction _cursorBlinkingStyleFromString(cursorBlinkingStyle) {\r\n switch (cursorBlinkingStyle) {\r\n case 'blink': return 1 /* Blink */;\r\n case 'smooth': return 2 /* Smooth */;\r\n case 'phase': return 3 /* Phase */;\r\n case 'expand': return 4 /* Expand */;\r\n case 'solid': return 5 /* Solid */;\r\n }\r\n}\r\n//#endregion\r\n//#region cursorStyle\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\nfunction _cursorStyleFromString(cursorStyle) {\r\n switch (cursorStyle) {\r\n case 'line': return TextEditorCursorStyle.Line;\r\n case 'block': return TextEditorCursorStyle.Block;\r\n case 'underline': return TextEditorCursorStyle.Underline;\r\n case 'line-thin': return TextEditorCursorStyle.LineThin;\r\n case 'block-outline': return TextEditorCursorStyle.BlockOutline;\r\n case 'underline-thin': return TextEditorCursorStyle.UnderlineThin;\r\n }\r\n}\r\n//#endregion\r\n//#region editorClassName\r\nclass EditorClassName extends ComputedEditorOption {\r\n constructor() {\r\n super(114 /* editorClassName */, [57 /* mouseStyle */, 27 /* extraEditorClassName */]);\r\n }\r\n compute(env, options, _) {\r\n const classNames = ['monaco-editor'];\r\n if (options.get(27 /* extraEditorClassName */)) {\r\n classNames.push(options.get(27 /* extraEditorClassName */));\r\n }\r\n if (env.extraEditorClassName) {\r\n classNames.push(env.extraEditorClassName);\r\n }\r\n if (options.get(57 /* mouseStyle */) === 'default') {\r\n classNames.push('mouse-default');\r\n }\r\n else if (options.get(57 /* mouseStyle */) === 'copy') {\r\n classNames.push('mouse-copy');\r\n }\r\n if (options.get(92 /* showUnused */)) {\r\n classNames.push('showUnused');\r\n }\r\n if (options.get(113 /* showDeprecated */)) {\r\n classNames.push('showDeprecated');\r\n }\r\n return classNames.join(' ');\r\n }\r\n}\r\n//#endregion\r\n//#region emptySelectionClipboard\r\nclass EditorEmptySelectionClipboard extends EditorBooleanOption {\r\n constructor() {\r\n super(26 /* emptySelectionClipboard */, 'emptySelectionClipboard', true, { description: nls.localize('emptySelectionClipboard', \"Controls whether copying without a selection copies the current line.\") });\r\n }\r\n compute(env, options, value) {\r\n return value && env.emptySelectionClipboard;\r\n }\r\n}\r\nclass EditorFind extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n cursorMoveOnType: true,\r\n seedSearchStringFromSelection: true,\r\n autoFindInSelection: 'never',\r\n globalFindClipboard: false,\r\n addExtraSpaceOnTop: true,\r\n loop: true\r\n };\r\n super(29 /* find */, 'find', defaults, {\r\n 'editor.find.cursorMoveOnType': {\r\n type: 'boolean',\r\n default: defaults.cursorMoveOnType,\r\n description: nls.localize('find.cursorMoveOnType', \"Controls whether the cursor should jump to find matches while typing.\")\r\n },\r\n 'editor.find.seedSearchStringFromSelection': {\r\n type: 'boolean',\r\n default: defaults.seedSearchStringFromSelection,\r\n description: nls.localize('find.seedSearchStringFromSelection', \"Controls whether the search string in the Find Widget is seeded from the editor selection.\")\r\n },\r\n 'editor.find.autoFindInSelection': {\r\n type: 'string',\r\n enum: ['never', 'always', 'multiline'],\r\n default: defaults.autoFindInSelection,\r\n enumDescriptions: [\r\n nls.localize('editor.find.autoFindInSelection.never', 'Never turn on Find in selection automatically (default)'),\r\n nls.localize('editor.find.autoFindInSelection.always', 'Always turn on Find in selection automatically'),\r\n nls.localize('editor.find.autoFindInSelection.multiline', 'Turn on Find in selection automatically when multiple lines of content are selected.')\r\n ],\r\n description: nls.localize('find.autoFindInSelection', \"Controls the condition for turning on find in selection automatically.\")\r\n },\r\n 'editor.find.globalFindClipboard': {\r\n type: 'boolean',\r\n default: defaults.globalFindClipboard,\r\n description: nls.localize('find.globalFindClipboard', \"Controls whether the Find Widget should read or modify the shared find clipboard on macOS.\"),\r\n included: platform.isMacintosh\r\n },\r\n 'editor.find.addExtraSpaceOnTop': {\r\n type: 'boolean',\r\n default: defaults.addExtraSpaceOnTop,\r\n description: nls.localize('find.addExtraSpaceOnTop', \"Controls whether the Find Widget should add extra lines on top of the editor. When true, you can scroll beyond the first line when the Find Widget is visible.\")\r\n },\r\n 'editor.find.loop': {\r\n type: 'boolean',\r\n default: defaults.loop,\r\n description: nls.localize('find.loop', \"Controls whether the search automatically restarts from the beginning (or the end) when no further matches can be found.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n cursorMoveOnType: EditorBooleanOption.boolean(input.cursorMoveOnType, this.defaultValue.cursorMoveOnType),\r\n seedSearchStringFromSelection: EditorBooleanOption.boolean(input.seedSearchStringFromSelection, this.defaultValue.seedSearchStringFromSelection),\r\n autoFindInSelection: typeof _input.autoFindInSelection === 'boolean'\r\n ? (_input.autoFindInSelection ? 'always' : 'never')\r\n : EditorStringEnumOption.stringSet(input.autoFindInSelection, this.defaultValue.autoFindInSelection, ['never', 'always', 'multiline']),\r\n globalFindClipboard: EditorBooleanOption.boolean(input.globalFindClipboard, this.defaultValue.globalFindClipboard),\r\n addExtraSpaceOnTop: EditorBooleanOption.boolean(input.addExtraSpaceOnTop, this.defaultValue.addExtraSpaceOnTop),\r\n loop: EditorBooleanOption.boolean(input.loop, this.defaultValue.loop),\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region fontLigatures\r\n/**\r\n * @internal\r\n */\r\nexport class EditorFontLigatures extends BaseEditorOption {\r\n constructor() {\r\n super(37 /* fontLigatures */, 'fontLigatures', EditorFontLigatures.OFF, {\r\n anyOf: [\r\n {\r\n type: 'boolean',\r\n description: nls.localize('fontLigatures', \"Enables/Disables font ligatures.\"),\r\n },\r\n {\r\n type: 'string',\r\n description: nls.localize('fontFeatureSettings', \"Explicit font-feature-settings.\")\r\n }\r\n ],\r\n description: nls.localize('fontLigaturesGeneral', \"Configures font ligatures or font features.\"),\r\n default: false\r\n });\r\n }\r\n validate(input) {\r\n if (typeof input === 'undefined') {\r\n return this.defaultValue;\r\n }\r\n if (typeof input === 'string') {\r\n if (input === 'false') {\r\n return EditorFontLigatures.OFF;\r\n }\r\n if (input === 'true') {\r\n return EditorFontLigatures.ON;\r\n }\r\n return input;\r\n }\r\n if (Boolean(input)) {\r\n return EditorFontLigatures.ON;\r\n }\r\n return EditorFontLigatures.OFF;\r\n }\r\n}\r\nEditorFontLigatures.OFF = '\"liga\" off, \"calt\" off';\r\nEditorFontLigatures.ON = '\"liga\" on, \"calt\" on';\r\n//#endregion\r\n//#region fontInfo\r\nclass EditorFontInfo extends ComputedEditorOption {\r\n constructor() {\r\n super(36 /* fontInfo */);\r\n }\r\n compute(env, options, _) {\r\n return env.fontInfo;\r\n }\r\n}\r\n//#endregion\r\n//#region fontSize\r\nclass EditorFontSize extends SimpleEditorOption {\r\n constructor() {\r\n super(38 /* fontSize */, 'fontSize', EDITOR_FONT_DEFAULTS.fontSize, {\r\n type: 'number',\r\n minimum: 6,\r\n maximum: 100,\r\n default: EDITOR_FONT_DEFAULTS.fontSize,\r\n description: nls.localize('fontSize', \"Controls the font size in pixels.\")\r\n });\r\n }\r\n validate(input) {\r\n let r = EditorFloatOption.float(input, this.defaultValue);\r\n if (r === 0) {\r\n return EDITOR_FONT_DEFAULTS.fontSize;\r\n }\r\n return EditorFloatOption.clamp(r, 6, 100);\r\n }\r\n compute(env, options, value) {\r\n // The final fontSize respects the editor zoom level.\r\n // So take the result from env.fontInfo\r\n return env.fontInfo.fontSize;\r\n }\r\n}\r\n//#endregion\r\n//#region fontWeight\r\nclass EditorFontWeight extends BaseEditorOption {\r\n constructor() {\r\n super(39 /* fontWeight */, 'fontWeight', EDITOR_FONT_DEFAULTS.fontWeight, {\r\n anyOf: [\r\n {\r\n type: 'number',\r\n minimum: EditorFontWeight.MINIMUM_VALUE,\r\n maximum: EditorFontWeight.MAXIMUM_VALUE,\r\n errorMessage: nls.localize('fontWeightErrorMessage', \"Only \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000 are allowed.\")\r\n },\r\n {\r\n type: 'string',\r\n pattern: '^(normal|bold|1000|[1-9][0-9]{0,2})$'\r\n },\r\n {\r\n enum: EditorFontWeight.SUGGESTION_VALUES\r\n }\r\n ],\r\n default: EDITOR_FONT_DEFAULTS.fontWeight,\r\n description: nls.localize('fontWeight', \"Controls the font weight. Accepts \\\"normal\\\" and \\\"bold\\\" keywords or numbers between 1 and 1000.\")\r\n });\r\n }\r\n validate(input) {\r\n if (input === 'normal' || input === 'bold') {\r\n return input;\r\n }\r\n return String(EditorIntOption.clampedInt(input, EDITOR_FONT_DEFAULTS.fontWeight, EditorFontWeight.MINIMUM_VALUE, EditorFontWeight.MAXIMUM_VALUE));\r\n }\r\n}\r\nEditorFontWeight.SUGGESTION_VALUES = ['normal', 'bold', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\r\nEditorFontWeight.MINIMUM_VALUE = 1;\r\nEditorFontWeight.MAXIMUM_VALUE = 1000;\r\nclass EditorGoToLocation extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n multiple: 'peek',\r\n multipleDefinitions: 'peek',\r\n multipleTypeDefinitions: 'peek',\r\n multipleDeclarations: 'peek',\r\n multipleImplementations: 'peek',\r\n multipleReferences: 'peek',\r\n alternativeDefinitionCommand: 'editor.action.goToReferences',\r\n alternativeTypeDefinitionCommand: 'editor.action.goToReferences',\r\n alternativeDeclarationCommand: 'editor.action.goToReferences',\r\n alternativeImplementationCommand: '',\r\n alternativeReferenceCommand: '',\r\n };\r\n const jsonSubset = {\r\n type: 'string',\r\n enum: ['peek', 'gotoAndPeek', 'goto'],\r\n default: defaults.multiple,\r\n enumDescriptions: [\r\n nls.localize('editor.gotoLocation.multiple.peek', 'Show peek view of the results (default)'),\r\n nls.localize('editor.gotoLocation.multiple.gotoAndPeek', 'Go to the primary result and show a peek view'),\r\n nls.localize('editor.gotoLocation.multiple.goto', 'Go to the primary result and enable peek-less navigation to others')\r\n ]\r\n };\r\n super(43 /* gotoLocation */, 'gotoLocation', defaults, {\r\n 'editor.gotoLocation.multiple': {\r\n deprecationMessage: nls.localize('editor.gotoLocation.multiple.deprecated', \"This setting is deprecated, please use separate settings like 'editor.editor.gotoLocation.multipleDefinitions' or 'editor.editor.gotoLocation.multipleImplementations' instead.\"),\r\n },\r\n 'editor.gotoLocation.multipleDefinitions': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleDefinitions', \"Controls the behavior the 'Go to Definition'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleTypeDefinitions': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleTypeDefinitions', \"Controls the behavior the 'Go to Type Definition'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleDeclarations': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleDeclarations', \"Controls the behavior the 'Go to Declaration'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleImplementations': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleImplemenattions', \"Controls the behavior the 'Go to Implementations'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.multipleReferences': Object.assign({ description: nls.localize('editor.editor.gotoLocation.multipleReferences', \"Controls the behavior the 'Go to References'-command when multiple target locations exist.\") }, jsonSubset),\r\n 'editor.gotoLocation.alternativeDefinitionCommand': {\r\n type: 'string',\r\n default: defaults.alternativeDefinitionCommand,\r\n description: nls.localize('alternativeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Definition' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeTypeDefinitionCommand': {\r\n type: 'string',\r\n default: defaults.alternativeTypeDefinitionCommand,\r\n description: nls.localize('alternativeTypeDefinitionCommand', \"Alternative command id that is being executed when the result of 'Go to Type Definition' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeDeclarationCommand': {\r\n type: 'string',\r\n default: defaults.alternativeDeclarationCommand,\r\n description: nls.localize('alternativeDeclarationCommand', \"Alternative command id that is being executed when the result of 'Go to Declaration' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeImplementationCommand': {\r\n type: 'string',\r\n default: defaults.alternativeImplementationCommand,\r\n description: nls.localize('alternativeImplementationCommand', \"Alternative command id that is being executed when the result of 'Go to Implementation' is the current location.\")\r\n },\r\n 'editor.gotoLocation.alternativeReferenceCommand': {\r\n type: 'string',\r\n default: defaults.alternativeReferenceCommand,\r\n description: nls.localize('alternativeReferenceCommand', \"Alternative command id that is being executed when the result of 'Go to Reference' is the current location.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n var _a, _b, _c, _d, _e;\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n multiple: EditorStringEnumOption.stringSet(input.multiple, this.defaultValue.multiple, ['peek', 'gotoAndPeek', 'goto']),\r\n multipleDefinitions: (_a = input.multipleDefinitions) !== null && _a !== void 0 ? _a : EditorStringEnumOption.stringSet(input.multipleDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleTypeDefinitions: (_b = input.multipleTypeDefinitions) !== null && _b !== void 0 ? _b : EditorStringEnumOption.stringSet(input.multipleTypeDefinitions, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleDeclarations: (_c = input.multipleDeclarations) !== null && _c !== void 0 ? _c : EditorStringEnumOption.stringSet(input.multipleDeclarations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleImplementations: (_d = input.multipleImplementations) !== null && _d !== void 0 ? _d : EditorStringEnumOption.stringSet(input.multipleImplementations, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n multipleReferences: (_e = input.multipleReferences) !== null && _e !== void 0 ? _e : EditorStringEnumOption.stringSet(input.multipleReferences, 'peek', ['peek', 'gotoAndPeek', 'goto']),\r\n alternativeDefinitionCommand: EditorStringOption.string(input.alternativeDefinitionCommand, this.defaultValue.alternativeDefinitionCommand),\r\n alternativeTypeDefinitionCommand: EditorStringOption.string(input.alternativeTypeDefinitionCommand, this.defaultValue.alternativeTypeDefinitionCommand),\r\n alternativeDeclarationCommand: EditorStringOption.string(input.alternativeDeclarationCommand, this.defaultValue.alternativeDeclarationCommand),\r\n alternativeImplementationCommand: EditorStringOption.string(input.alternativeImplementationCommand, this.defaultValue.alternativeImplementationCommand),\r\n alternativeReferenceCommand: EditorStringOption.string(input.alternativeReferenceCommand, this.defaultValue.alternativeReferenceCommand),\r\n };\r\n }\r\n}\r\nclass EditorHover extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: true,\r\n delay: 300,\r\n sticky: true\r\n };\r\n super(46 /* hover */, 'hover', defaults, {\r\n 'editor.hover.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('hover.enabled', \"Controls whether the hover is shown.\")\r\n },\r\n 'editor.hover.delay': {\r\n type: 'number',\r\n default: defaults.delay,\r\n description: nls.localize('hover.delay', \"Controls the delay in milliseconds after which the hover is shown.\")\r\n },\r\n 'editor.hover.sticky': {\r\n type: 'boolean',\r\n default: defaults.sticky,\r\n description: nls.localize('hover.sticky', \"Controls whether the hover should remain visible when mouse is moved over it.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: EditorBooleanOption.boolean(input.enabled, this.defaultValue.enabled),\r\n delay: EditorIntOption.clampedInt(input.delay, this.defaultValue.delay, 0, 10000),\r\n sticky: EditorBooleanOption.boolean(input.sticky, this.defaultValue.sticky)\r\n };\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorLayoutInfoComputer extends ComputedEditorOption {\r\n constructor() {\r\n super(117 /* layoutInfo */, [\r\n 42 /* glyphMargin */, 50 /* lineDecorationsWidth */, 31 /* folding */,\r\n 56 /* minimap */, 84 /* scrollbar */, 52 /* lineNumbers */,\r\n 53 /* lineNumbersMinChars */, 86 /* scrollBeyondLastLine */,\r\n 106 /* wordWrap */, 109 /* wordWrapColumn */, 110 /* wordWrapMinified */,\r\n 2 /* accessibilitySupport */\r\n ]);\r\n }\r\n compute(env, options, _) {\r\n return EditorLayoutInfoComputer.computeLayout(options, {\r\n memory: env.memory,\r\n outerWidth: env.outerWidth,\r\n outerHeight: env.outerHeight,\r\n isDominatedByLongLines: env.isDominatedByLongLines,\r\n lineHeight: env.fontInfo.lineHeight,\r\n viewLineCount: env.viewLineCount,\r\n lineNumbersDigitCount: env.lineNumbersDigitCount,\r\n typicalHalfwidthCharacterWidth: env.fontInfo.typicalHalfwidthCharacterWidth,\r\n maxDigitWidth: env.fontInfo.maxDigitWidth,\r\n pixelRatio: env.pixelRatio\r\n });\r\n }\r\n static computeContainedMinimapLineCount(input) {\r\n const typicalViewportLineCount = input.height / input.lineHeight;\r\n const extraLinesBeyondLastLine = input.scrollBeyondLastLine ? (typicalViewportLineCount - 1) : 0;\r\n const desiredRatio = (input.viewLineCount + extraLinesBeyondLastLine) / (input.pixelRatio * input.height);\r\n const minimapLineCount = Math.floor(input.viewLineCount / desiredRatio);\r\n return { typicalViewportLineCount, extraLinesBeyondLastLine, desiredRatio, minimapLineCount };\r\n }\r\n static _computeMinimapLayout(input, memory) {\r\n const outerWidth = input.outerWidth;\r\n const outerHeight = input.outerHeight;\r\n const pixelRatio = input.pixelRatio;\r\n if (!input.minimap.enabled) {\r\n return {\r\n renderMinimap: 0 /* None */,\r\n minimapLeft: 0,\r\n minimapWidth: 0,\r\n minimapHeightIsEditorHeight: false,\r\n minimapIsSampling: false,\r\n minimapScale: 1,\r\n minimapLineHeight: 1,\r\n minimapCanvasInnerWidth: 0,\r\n minimapCanvasInnerHeight: Math.floor(pixelRatio * outerHeight),\r\n minimapCanvasOuterWidth: 0,\r\n minimapCanvasOuterHeight: outerHeight,\r\n };\r\n }\r\n // Can use memory if only the `viewLineCount` and `remainingWidth` have changed\r\n const stableMinimapLayoutInput = memory.stableMinimapLayoutInput;\r\n const couldUseMemory = (stableMinimapLayoutInput\r\n // && input.outerWidth === lastMinimapLayoutInput.outerWidth !!! INTENTIONAL OMITTED\r\n && input.outerHeight === stableMinimapLayoutInput.outerHeight\r\n && input.lineHeight === stableMinimapLayoutInput.lineHeight\r\n && input.typicalHalfwidthCharacterWidth === stableMinimapLayoutInput.typicalHalfwidthCharacterWidth\r\n && input.pixelRatio === stableMinimapLayoutInput.pixelRatio\r\n && input.scrollBeyondLastLine === stableMinimapLayoutInput.scrollBeyondLastLine\r\n && input.minimap.enabled === stableMinimapLayoutInput.minimap.enabled\r\n && input.minimap.side === stableMinimapLayoutInput.minimap.side\r\n && input.minimap.size === stableMinimapLayoutInput.minimap.size\r\n && input.minimap.showSlider === stableMinimapLayoutInput.minimap.showSlider\r\n && input.minimap.renderCharacters === stableMinimapLayoutInput.minimap.renderCharacters\r\n && input.minimap.maxColumn === stableMinimapLayoutInput.minimap.maxColumn\r\n && input.minimap.scale === stableMinimapLayoutInput.minimap.scale\r\n && input.verticalScrollbarWidth === stableMinimapLayoutInput.verticalScrollbarWidth\r\n // && input.viewLineCount === lastMinimapLayoutInput.viewLineCount !!! INTENTIONAL OMITTED\r\n // && input.remainingWidth === lastMinimapLayoutInput.remainingWidth !!! INTENTIONAL OMITTED\r\n && input.isViewportWrapping === stableMinimapLayoutInput.isViewportWrapping);\r\n const lineHeight = input.lineHeight;\r\n const typicalHalfwidthCharacterWidth = input.typicalHalfwidthCharacterWidth;\r\n const scrollBeyondLastLine = input.scrollBeyondLastLine;\r\n const minimapRenderCharacters = input.minimap.renderCharacters;\r\n let minimapScale = (pixelRatio >= 2 ? Math.round(input.minimap.scale * 2) : input.minimap.scale);\r\n const minimapMaxColumn = input.minimap.maxColumn;\r\n const minimapSize = input.minimap.size;\r\n const minimapSide = input.minimap.side;\r\n const verticalScrollbarWidth = input.verticalScrollbarWidth;\r\n const viewLineCount = input.viewLineCount;\r\n const remainingWidth = input.remainingWidth;\r\n const isViewportWrapping = input.isViewportWrapping;\r\n const baseCharHeight = minimapRenderCharacters ? 2 : 3;\r\n let minimapCanvasInnerHeight = Math.floor(pixelRatio * outerHeight);\r\n const minimapCanvasOuterHeight = minimapCanvasInnerHeight / pixelRatio;\r\n let minimapHeightIsEditorHeight = false;\r\n let minimapIsSampling = false;\r\n let minimapLineHeight = baseCharHeight * minimapScale;\r\n let minimapCharWidth = minimapScale / pixelRatio;\r\n let minimapWidthMultiplier = 1;\r\n if (minimapSize === 'fill' || minimapSize === 'fit') {\r\n const { typicalViewportLineCount, extraLinesBeyondLastLine, desiredRatio, minimapLineCount } = EditorLayoutInfoComputer.computeContainedMinimapLineCount({\r\n viewLineCount: viewLineCount,\r\n scrollBeyondLastLine: scrollBeyondLastLine,\r\n height: outerHeight,\r\n lineHeight: lineHeight,\r\n pixelRatio: pixelRatio\r\n });\r\n // ratio is intentionally not part of the layout to avoid the layout changing all the time\r\n // when doing sampling\r\n const ratio = viewLineCount / minimapLineCount;\r\n if (ratio > 1) {\r\n minimapHeightIsEditorHeight = true;\r\n minimapIsSampling = true;\r\n minimapScale = 1;\r\n minimapLineHeight = 1;\r\n minimapCharWidth = minimapScale / pixelRatio;\r\n }\r\n else {\r\n let fitBecomesFill = false;\r\n let maxMinimapScale = minimapScale + 1;\r\n if (minimapSize === 'fit') {\r\n const effectiveMinimapHeight = Math.ceil((viewLineCount + extraLinesBeyondLastLine) * minimapLineHeight);\r\n if (isViewportWrapping && couldUseMemory && remainingWidth <= memory.stableFitRemainingWidth) {\r\n // There is a loop when using `fit` and viewport wrapping:\r\n // - view line count impacts minimap layout\r\n // - minimap layout impacts viewport width\r\n // - viewport width impacts view line count\r\n // To break the loop, once we go to a smaller minimap scale, we try to stick with it.\r\n fitBecomesFill = true;\r\n maxMinimapScale = memory.stableFitMaxMinimapScale;\r\n }\r\n else {\r\n fitBecomesFill = (effectiveMinimapHeight > minimapCanvasInnerHeight);\r\n if (isViewportWrapping && fitBecomesFill) {\r\n // remember for next time\r\n memory.stableMinimapLayoutInput = input;\r\n memory.stableFitRemainingWidth = remainingWidth;\r\n }\r\n else {\r\n memory.stableMinimapLayoutInput = null;\r\n memory.stableFitRemainingWidth = 0;\r\n }\r\n }\r\n }\r\n if (minimapSize === 'fill' || fitBecomesFill) {\r\n minimapHeightIsEditorHeight = true;\r\n const configuredMinimapScale = minimapScale;\r\n minimapLineHeight = Math.min(lineHeight * pixelRatio, Math.max(1, Math.floor(1 / desiredRatio)));\r\n minimapScale = Math.min(maxMinimapScale, Math.max(1, Math.floor(minimapLineHeight / baseCharHeight)));\r\n if (minimapScale > configuredMinimapScale) {\r\n minimapWidthMultiplier = Math.min(2, minimapScale / configuredMinimapScale);\r\n }\r\n minimapCharWidth = minimapScale / pixelRatio / minimapWidthMultiplier;\r\n minimapCanvasInnerHeight = Math.ceil((Math.max(typicalViewportLineCount, viewLineCount + extraLinesBeyondLastLine)) * minimapLineHeight);\r\n if (isViewportWrapping && fitBecomesFill) {\r\n memory.stableFitMaxMinimapScale = minimapScale;\r\n }\r\n }\r\n }\r\n }\r\n // Given:\r\n // (leaving 2px for the cursor to have space after the last character)\r\n // viewportColumn = (contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth\r\n // minimapWidth = viewportColumn * minimapCharWidth\r\n // contentWidth = remainingWidth - minimapWidth\r\n // What are good values for contentWidth and minimapWidth ?\r\n // minimapWidth = ((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth) * minimapCharWidth\r\n // typicalHalfwidthCharacterWidth * minimapWidth = (contentWidth - verticalScrollbarWidth - 2) * minimapCharWidth\r\n // typicalHalfwidthCharacterWidth * minimapWidth = (remainingWidth - minimapWidth - verticalScrollbarWidth - 2) * minimapCharWidth\r\n // (typicalHalfwidthCharacterWidth + minimapCharWidth) * minimapWidth = (remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth\r\n // minimapWidth = ((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth)\r\n const minimapMaxWidth = Math.floor(minimapMaxColumn * minimapCharWidth);\r\n const minimapWidth = Math.min(minimapMaxWidth, Math.max(0, Math.floor(((remainingWidth - verticalScrollbarWidth - 2) * minimapCharWidth) / (typicalHalfwidthCharacterWidth + minimapCharWidth))) + MINIMAP_GUTTER_WIDTH);\r\n let minimapCanvasInnerWidth = Math.floor(pixelRatio * minimapWidth);\r\n const minimapCanvasOuterWidth = minimapCanvasInnerWidth / pixelRatio;\r\n minimapCanvasInnerWidth = Math.floor(minimapCanvasInnerWidth * minimapWidthMultiplier);\r\n const renderMinimap = (minimapRenderCharacters ? 1 /* Text */ : 2 /* Blocks */);\r\n const minimapLeft = (minimapSide === 'left' ? 0 : (outerWidth - minimapWidth - verticalScrollbarWidth));\r\n return {\r\n renderMinimap,\r\n minimapLeft,\r\n minimapWidth,\r\n minimapHeightIsEditorHeight,\r\n minimapIsSampling,\r\n minimapScale,\r\n minimapLineHeight,\r\n minimapCanvasInnerWidth,\r\n minimapCanvasInnerHeight,\r\n minimapCanvasOuterWidth,\r\n minimapCanvasOuterHeight,\r\n };\r\n }\r\n static computeLayout(options, env) {\r\n const outerWidth = env.outerWidth | 0;\r\n const outerHeight = env.outerHeight | 0;\r\n const lineHeight = env.lineHeight | 0;\r\n const lineNumbersDigitCount = env.lineNumbersDigitCount | 0;\r\n const typicalHalfwidthCharacterWidth = env.typicalHalfwidthCharacterWidth;\r\n const maxDigitWidth = env.maxDigitWidth;\r\n const pixelRatio = env.pixelRatio;\r\n const viewLineCount = env.viewLineCount;\r\n const wordWrap = options.get(106 /* wordWrap */);\r\n const wordWrapColumn = options.get(109 /* wordWrapColumn */);\r\n const wordWrapMinified = options.get(110 /* wordWrapMinified */);\r\n const accessibilitySupport = options.get(2 /* accessibilitySupport */);\r\n const isDominatedByLongLines = env.isDominatedByLongLines;\r\n const showGlyphMargin = options.get(42 /* glyphMargin */);\r\n const showLineNumbers = (options.get(52 /* lineNumbers */).renderType !== 0 /* Off */);\r\n const lineNumbersMinChars = options.get(53 /* lineNumbersMinChars */);\r\n const scrollBeyondLastLine = options.get(86 /* scrollBeyondLastLine */);\r\n const minimap = options.get(56 /* minimap */);\r\n const scrollbar = options.get(84 /* scrollbar */);\r\n const verticalScrollbarWidth = scrollbar.verticalScrollbarSize;\r\n const verticalScrollbarHasArrows = scrollbar.verticalHasArrows;\r\n const scrollbarArrowSize = scrollbar.arrowSize;\r\n const horizontalScrollbarHeight = scrollbar.horizontalScrollbarSize;\r\n const rawLineDecorationsWidth = options.get(50 /* lineDecorationsWidth */);\r\n const folding = options.get(31 /* folding */);\r\n let lineDecorationsWidth;\r\n if (typeof rawLineDecorationsWidth === 'string' && /^\\d+(\\.\\d+)?ch$/.test(rawLineDecorationsWidth)) {\r\n const multiple = parseFloat(rawLineDecorationsWidth.substr(0, rawLineDecorationsWidth.length - 2));\r\n lineDecorationsWidth = EditorIntOption.clampedInt(multiple * typicalHalfwidthCharacterWidth, 0, 0, 1000);\r\n }\r\n else {\r\n lineDecorationsWidth = EditorIntOption.clampedInt(rawLineDecorationsWidth, 0, 0, 1000);\r\n }\r\n if (folding) {\r\n lineDecorationsWidth += 16;\r\n }\r\n let lineNumbersWidth = 0;\r\n if (showLineNumbers) {\r\n const digitCount = Math.max(lineNumbersDigitCount, lineNumbersMinChars);\r\n lineNumbersWidth = Math.round(digitCount * maxDigitWidth);\r\n }\r\n let glyphMarginWidth = 0;\r\n if (showGlyphMargin) {\r\n glyphMarginWidth = lineHeight;\r\n }\r\n let glyphMarginLeft = 0;\r\n let lineNumbersLeft = glyphMarginLeft + glyphMarginWidth;\r\n let decorationsLeft = lineNumbersLeft + lineNumbersWidth;\r\n let contentLeft = decorationsLeft + lineDecorationsWidth;\r\n const remainingWidth = outerWidth - glyphMarginWidth - lineNumbersWidth - lineDecorationsWidth;\r\n let isWordWrapMinified = false;\r\n let isViewportWrapping = false;\r\n let wrappingColumn = -1;\r\n if (accessibilitySupport !== 2 /* Enabled */) {\r\n // See https://github.com/Microsoft/vscode/issues/27766\r\n // Never enable wrapping when a screen reader is attached\r\n // because arrow down etc. will not move the cursor in the way\r\n // a screen reader expects.\r\n if (wordWrapMinified && isDominatedByLongLines) {\r\n // Force viewport width wrapping if model is dominated by long lines\r\n isWordWrapMinified = true;\r\n isViewportWrapping = true;\r\n }\r\n else if (wordWrap === 'on' || wordWrap === 'bounded') {\r\n isViewportWrapping = true;\r\n }\r\n else if (wordWrap === 'wordWrapColumn') {\r\n wrappingColumn = wordWrapColumn;\r\n }\r\n }\r\n const minimapLayout = EditorLayoutInfoComputer._computeMinimapLayout({\r\n outerWidth: outerWidth,\r\n outerHeight: outerHeight,\r\n lineHeight: lineHeight,\r\n typicalHalfwidthCharacterWidth: typicalHalfwidthCharacterWidth,\r\n pixelRatio: pixelRatio,\r\n scrollBeyondLastLine: scrollBeyondLastLine,\r\n minimap: minimap,\r\n verticalScrollbarWidth: verticalScrollbarWidth,\r\n viewLineCount: viewLineCount,\r\n remainingWidth: remainingWidth,\r\n isViewportWrapping: isViewportWrapping,\r\n }, env.memory || new ComputeOptionsMemory());\r\n if (minimapLayout.renderMinimap !== 0 /* None */ && minimapLayout.minimapLeft === 0) {\r\n // the minimap is rendered to the left, so move everything to the right\r\n glyphMarginLeft += minimapLayout.minimapWidth;\r\n lineNumbersLeft += minimapLayout.minimapWidth;\r\n decorationsLeft += minimapLayout.minimapWidth;\r\n contentLeft += minimapLayout.minimapWidth;\r\n }\r\n const contentWidth = remainingWidth - minimapLayout.minimapWidth;\r\n // (leaving 2px for the cursor to have space after the last character)\r\n const viewportColumn = Math.max(1, Math.floor((contentWidth - verticalScrollbarWidth - 2) / typicalHalfwidthCharacterWidth));\r\n const verticalArrowSize = (verticalScrollbarHasArrows ? scrollbarArrowSize : 0);\r\n if (isViewportWrapping) {\r\n // compute the actual wrappingColumn\r\n wrappingColumn = Math.max(1, viewportColumn);\r\n if (wordWrap === 'bounded') {\r\n wrappingColumn = Math.min(wrappingColumn, wordWrapColumn);\r\n }\r\n }\r\n return {\r\n width: outerWidth,\r\n height: outerHeight,\r\n glyphMarginLeft: glyphMarginLeft,\r\n glyphMarginWidth: glyphMarginWidth,\r\n lineNumbersLeft: lineNumbersLeft,\r\n lineNumbersWidth: lineNumbersWidth,\r\n decorationsLeft: decorationsLeft,\r\n decorationsWidth: lineDecorationsWidth,\r\n contentLeft: contentLeft,\r\n contentWidth: contentWidth,\r\n minimap: minimapLayout,\r\n viewportColumn: viewportColumn,\r\n isWordWrapMinified: isWordWrapMinified,\r\n isViewportWrapping: isViewportWrapping,\r\n wrappingColumn: wrappingColumn,\r\n verticalScrollbarWidth: verticalScrollbarWidth,\r\n horizontalScrollbarHeight: horizontalScrollbarHeight,\r\n overviewRuler: {\r\n top: verticalArrowSize,\r\n width: verticalScrollbarWidth,\r\n height: (outerHeight - 2 * verticalArrowSize),\r\n right: 0\r\n }\r\n };\r\n }\r\n}\r\nclass EditorLightbulb extends BaseEditorOption {\r\n constructor() {\r\n const defaults = { enabled: true };\r\n super(49 /* lightbulb */, 'lightbulb', defaults, {\r\n 'editor.lightbulb.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('codeActions', \"Enables the code action lightbulb in the editor.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: EditorBooleanOption.boolean(input.enabled, this.defaultValue.enabled)\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region lineHeight\r\nclass EditorLineHeight extends EditorIntOption {\r\n constructor() {\r\n super(51 /* lineHeight */, 'lineHeight', EDITOR_FONT_DEFAULTS.lineHeight, 0, 150, { description: nls.localize('lineHeight', \"Controls the line height. Use 0 to compute the line height from the font size.\") });\r\n }\r\n compute(env, options, value) {\r\n // The lineHeight is computed from the fontSize if it is 0.\r\n // Moreover, the final lineHeight respects the editor zoom level.\r\n // So take the result from env.fontInfo\r\n return env.fontInfo.lineHeight;\r\n }\r\n}\r\nclass EditorMinimap extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: true,\r\n size: 'proportional',\r\n side: 'right',\r\n showSlider: 'mouseover',\r\n renderCharacters: true,\r\n maxColumn: 120,\r\n scale: 1,\r\n };\r\n super(56 /* minimap */, 'minimap', defaults, {\r\n 'editor.minimap.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('minimap.enabled', \"Controls whether the minimap is shown.\")\r\n },\r\n 'editor.minimap.size': {\r\n type: 'string',\r\n enum: ['proportional', 'fill', 'fit'],\r\n enumDescriptions: [\r\n nls.localize('minimap.size.proportional', \"The minimap has the same size as the editor contents (and might scroll).\"),\r\n nls.localize('minimap.size.fill', \"The minimap will stretch or shrink as necessary to fill the height of the editor (no scrolling).\"),\r\n nls.localize('minimap.size.fit', \"The minimap will shrink as necessary to never be larger than the editor (no scrolling).\"),\r\n ],\r\n default: defaults.size,\r\n description: nls.localize('minimap.size', \"Controls the size of the minimap.\")\r\n },\r\n 'editor.minimap.side': {\r\n type: 'string',\r\n enum: ['left', 'right'],\r\n default: defaults.side,\r\n description: nls.localize('minimap.side', \"Controls the side where to render the minimap.\")\r\n },\r\n 'editor.minimap.showSlider': {\r\n type: 'string',\r\n enum: ['always', 'mouseover'],\r\n default: defaults.showSlider,\r\n description: nls.localize('minimap.showSlider', \"Controls when the minimap slider is shown.\")\r\n },\r\n 'editor.minimap.scale': {\r\n type: 'number',\r\n default: defaults.scale,\r\n minimum: 1,\r\n maximum: 3,\r\n enum: [1, 2, 3],\r\n description: nls.localize('minimap.scale', \"Scale of content drawn in the minimap: 1, 2 or 3.\")\r\n },\r\n 'editor.minimap.renderCharacters': {\r\n type: 'boolean',\r\n default: defaults.renderCharacters,\r\n description: nls.localize('minimap.renderCharacters', \"Render the actual characters on a line as opposed to color blocks.\")\r\n },\r\n 'editor.minimap.maxColumn': {\r\n type: 'number',\r\n default: defaults.maxColumn,\r\n description: nls.localize('minimap.maxColumn', \"Limit the width of the minimap to render at most a certain number of columns.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: EditorBooleanOption.boolean(input.enabled, this.defaultValue.enabled),\r\n size: EditorStringEnumOption.stringSet(input.size, this.defaultValue.size, ['proportional', 'fill', 'fit']),\r\n side: EditorStringEnumOption.stringSet(input.side, this.defaultValue.side, ['right', 'left']),\r\n showSlider: EditorStringEnumOption.stringSet(input.showSlider, this.defaultValue.showSlider, ['always', 'mouseover']),\r\n renderCharacters: EditorBooleanOption.boolean(input.renderCharacters, this.defaultValue.renderCharacters),\r\n scale: EditorIntOption.clampedInt(input.scale, 1, 1, 3),\r\n maxColumn: EditorIntOption.clampedInt(input.maxColumn, this.defaultValue.maxColumn, 1, 10000),\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region multiCursorModifier\r\nfunction _multiCursorModifierFromString(multiCursorModifier) {\r\n if (multiCursorModifier === 'ctrlCmd') {\r\n return (platform.isMacintosh ? 'metaKey' : 'ctrlKey');\r\n }\r\n return 'altKey';\r\n}\r\nclass EditorPadding extends BaseEditorOption {\r\n constructor() {\r\n super(66 /* padding */, 'padding', { top: 0, bottom: 0 }, {\r\n 'editor.padding.top': {\r\n type: 'number',\r\n default: 0,\r\n minimum: 0,\r\n maximum: 1000,\r\n description: nls.localize('padding.top', \"Controls the amount of space between the top edge of the editor and the first line.\")\r\n },\r\n 'editor.padding.bottom': {\r\n type: 'number',\r\n default: 0,\r\n minimum: 0,\r\n maximum: 1000,\r\n description: nls.localize('padding.bottom', \"Controls the amount of space between the bottom edge of the editor and the last line.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n top: EditorIntOption.clampedInt(input.top, 0, 0, 1000),\r\n bottom: EditorIntOption.clampedInt(input.bottom, 0, 0, 1000)\r\n };\r\n }\r\n}\r\nclass EditorParameterHints extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n enabled: true,\r\n cycle: false\r\n };\r\n super(67 /* parameterHints */, 'parameterHints', defaults, {\r\n 'editor.parameterHints.enabled': {\r\n type: 'boolean',\r\n default: defaults.enabled,\r\n description: nls.localize('parameterHints.enabled', \"Enables a pop-up that shows parameter documentation and type information as you type.\")\r\n },\r\n 'editor.parameterHints.cycle': {\r\n type: 'boolean',\r\n default: defaults.cycle,\r\n description: nls.localize('parameterHints.cycle', \"Controls whether the parameter hints menu cycles or closes when reaching the end of the list.\")\r\n },\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n enabled: EditorBooleanOption.boolean(input.enabled, this.defaultValue.enabled),\r\n cycle: EditorBooleanOption.boolean(input.cycle, this.defaultValue.cycle)\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region pixelRatio\r\nclass EditorPixelRatio extends ComputedEditorOption {\r\n constructor() {\r\n super(115 /* pixelRatio */);\r\n }\r\n compute(env, options, _) {\r\n return env.pixelRatio;\r\n }\r\n}\r\nclass EditorQuickSuggestions extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n other: true,\r\n comments: false,\r\n strings: false\r\n };\r\n super(70 /* quickSuggestions */, 'quickSuggestions', defaults, {\r\n anyOf: [\r\n {\r\n type: 'boolean',\r\n },\r\n {\r\n type: 'object',\r\n properties: {\r\n strings: {\r\n type: 'boolean',\r\n default: defaults.strings,\r\n description: nls.localize('quickSuggestions.strings', \"Enable quick suggestions inside strings.\")\r\n },\r\n comments: {\r\n type: 'boolean',\r\n default: defaults.comments,\r\n description: nls.localize('quickSuggestions.comments', \"Enable quick suggestions inside comments.\")\r\n },\r\n other: {\r\n type: 'boolean',\r\n default: defaults.other,\r\n description: nls.localize('quickSuggestions.other', \"Enable quick suggestions outside of strings and comments.\")\r\n },\r\n }\r\n }\r\n ],\r\n default: defaults,\r\n description: nls.localize('quickSuggestions', \"Controls whether suggestions should automatically show up while typing.\")\r\n });\r\n this.defaultValue = defaults;\r\n }\r\n validate(_input) {\r\n if (typeof _input === 'boolean') {\r\n return _input;\r\n }\r\n if (_input && typeof _input === 'object') {\r\n const input = _input;\r\n const opts = {\r\n other: EditorBooleanOption.boolean(input.other, this.defaultValue.other),\r\n comments: EditorBooleanOption.boolean(input.comments, this.defaultValue.comments),\r\n strings: EditorBooleanOption.boolean(input.strings, this.defaultValue.strings),\r\n };\r\n if (opts.other && opts.comments && opts.strings) {\r\n return true; // all on\r\n }\r\n else if (!opts.other && !opts.comments && !opts.strings) {\r\n return false; // all off\r\n }\r\n else {\r\n return opts;\r\n }\r\n }\r\n return this.defaultValue;\r\n }\r\n}\r\nclass EditorRenderLineNumbersOption extends BaseEditorOption {\r\n constructor() {\r\n super(52 /* lineNumbers */, 'lineNumbers', { renderType: 1 /* On */, renderFn: null }, {\r\n type: 'string',\r\n enum: ['off', 'on', 'relative', 'interval'],\r\n enumDescriptions: [\r\n nls.localize('lineNumbers.off', \"Line numbers are not rendered.\"),\r\n nls.localize('lineNumbers.on', \"Line numbers are rendered as absolute number.\"),\r\n nls.localize('lineNumbers.relative', \"Line numbers are rendered as distance in lines to cursor position.\"),\r\n nls.localize('lineNumbers.interval', \"Line numbers are rendered every 10 lines.\")\r\n ],\r\n default: 'on',\r\n description: nls.localize('lineNumbers', \"Controls the display of line numbers.\")\r\n });\r\n }\r\n validate(lineNumbers) {\r\n let renderType = this.defaultValue.renderType;\r\n let renderFn = this.defaultValue.renderFn;\r\n if (typeof lineNumbers !== 'undefined') {\r\n if (typeof lineNumbers === 'function') {\r\n renderType = 4 /* Custom */;\r\n renderFn = lineNumbers;\r\n }\r\n else if (lineNumbers === 'interval') {\r\n renderType = 3 /* Interval */;\r\n }\r\n else if (lineNumbers === 'relative') {\r\n renderType = 2 /* Relative */;\r\n }\r\n else if (lineNumbers === 'on') {\r\n renderType = 1 /* On */;\r\n }\r\n else {\r\n renderType = 0 /* Off */;\r\n }\r\n }\r\n return {\r\n renderType,\r\n renderFn\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region renderValidationDecorations\r\n/**\r\n * @internal\r\n */\r\nexport function filterValidationDecorations(options) {\r\n const renderValidationDecorations = options.get(79 /* renderValidationDecorations */);\r\n if (renderValidationDecorations === 'editable') {\r\n return options.get(72 /* readOnly */);\r\n }\r\n return renderValidationDecorations === 'on' ? false : true;\r\n}\r\nclass EditorRulers extends BaseEditorOption {\r\n constructor() {\r\n const defaults = [];\r\n const columnSchema = { type: 'number', description: nls.localize('rulers.size', \"Number of monospace characters at which this editor ruler will render.\") };\r\n super(83 /* rulers */, 'rulers', defaults, {\r\n type: 'array',\r\n items: {\r\n anyOf: [\r\n columnSchema,\r\n {\r\n type: [\r\n 'object'\r\n ],\r\n properties: {\r\n column: columnSchema,\r\n color: {\r\n type: 'string',\r\n description: nls.localize('rulers.color', \"Color of this editor ruler.\"),\r\n format: 'color-hex'\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n default: defaults,\r\n description: nls.localize('rulers', \"Render vertical rulers after a certain number of monospace characters. Use multiple values for multiple rulers. No rulers are drawn if array is empty.\")\r\n });\r\n }\r\n validate(input) {\r\n if (Array.isArray(input)) {\r\n let rulers = [];\r\n for (let _element of input) {\r\n if (typeof _element === 'number') {\r\n rulers.push({\r\n column: EditorIntOption.clampedInt(_element, 0, 0, 10000),\r\n color: null\r\n });\r\n }\r\n else if (_element && typeof _element === 'object') {\r\n const element = _element;\r\n rulers.push({\r\n column: EditorIntOption.clampedInt(element.column, 0, 0, 10000),\r\n color: element.color\r\n });\r\n }\r\n }\r\n rulers.sort((a, b) => a.column - b.column);\r\n return rulers;\r\n }\r\n return this.defaultValue;\r\n }\r\n}\r\nfunction _scrollbarVisibilityFromString(visibility, defaultValue) {\r\n if (typeof visibility !== 'string') {\r\n return defaultValue;\r\n }\r\n switch (visibility) {\r\n case 'hidden': return 2 /* Hidden */;\r\n case 'visible': return 3 /* Visible */;\r\n default: return 1 /* Auto */;\r\n }\r\n}\r\nclass EditorScrollbar extends BaseEditorOption {\r\n constructor() {\r\n super(84 /* scrollbar */, 'scrollbar', {\r\n vertical: 1 /* Auto */,\r\n horizontal: 1 /* Auto */,\r\n arrowSize: 11,\r\n useShadows: true,\r\n verticalHasArrows: false,\r\n horizontalHasArrows: false,\r\n horizontalScrollbarSize: 12,\r\n horizontalSliderSize: 12,\r\n verticalScrollbarSize: 14,\r\n verticalSliderSize: 14,\r\n handleMouseWheel: true,\r\n alwaysConsumeMouseWheel: true\r\n });\r\n }\r\n validate(_input) {\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n const horizontalScrollbarSize = EditorIntOption.clampedInt(input.horizontalScrollbarSize, this.defaultValue.horizontalScrollbarSize, 0, 1000);\r\n const verticalScrollbarSize = EditorIntOption.clampedInt(input.verticalScrollbarSize, this.defaultValue.verticalScrollbarSize, 0, 1000);\r\n return {\r\n arrowSize: EditorIntOption.clampedInt(input.arrowSize, this.defaultValue.arrowSize, 0, 1000),\r\n vertical: _scrollbarVisibilityFromString(input.vertical, this.defaultValue.vertical),\r\n horizontal: _scrollbarVisibilityFromString(input.horizontal, this.defaultValue.horizontal),\r\n useShadows: EditorBooleanOption.boolean(input.useShadows, this.defaultValue.useShadows),\r\n verticalHasArrows: EditorBooleanOption.boolean(input.verticalHasArrows, this.defaultValue.verticalHasArrows),\r\n horizontalHasArrows: EditorBooleanOption.boolean(input.horizontalHasArrows, this.defaultValue.horizontalHasArrows),\r\n handleMouseWheel: EditorBooleanOption.boolean(input.handleMouseWheel, this.defaultValue.handleMouseWheel),\r\n alwaysConsumeMouseWheel: EditorBooleanOption.boolean(input.alwaysConsumeMouseWheel, this.defaultValue.alwaysConsumeMouseWheel),\r\n horizontalScrollbarSize: horizontalScrollbarSize,\r\n horizontalSliderSize: EditorIntOption.clampedInt(input.horizontalSliderSize, horizontalScrollbarSize, 0, 1000),\r\n verticalScrollbarSize: verticalScrollbarSize,\r\n verticalSliderSize: EditorIntOption.clampedInt(input.verticalSliderSize, verticalScrollbarSize, 0, 1000),\r\n };\r\n }\r\n}\r\nclass EditorSuggest extends BaseEditorOption {\r\n constructor() {\r\n const defaults = {\r\n insertMode: 'insert',\r\n filterGraceful: true,\r\n snippetsPreventQuickSuggestions: true,\r\n localityBonus: false,\r\n shareSuggestSelections: false,\r\n showIcons: true,\r\n maxVisibleSuggestions: 12,\r\n showMethods: true,\r\n showFunctions: true,\r\n showConstructors: true,\r\n showFields: true,\r\n showVariables: true,\r\n showClasses: true,\r\n showStructs: true,\r\n showInterfaces: true,\r\n showModules: true,\r\n showProperties: true,\r\n showEvents: true,\r\n showOperators: true,\r\n showUnits: true,\r\n showValues: true,\r\n showConstants: true,\r\n showEnums: true,\r\n showEnumMembers: true,\r\n showKeywords: true,\r\n showWords: true,\r\n showColors: true,\r\n showFiles: true,\r\n showReferences: true,\r\n showFolders: true,\r\n showTypeParameters: true,\r\n showSnippets: true,\r\n showUsers: true,\r\n showIssues: true,\r\n statusBar: {\r\n visible: false\r\n }\r\n };\r\n super(96 /* suggest */, 'suggest', defaults, {\r\n 'editor.suggest.insertMode': {\r\n type: 'string',\r\n enum: ['insert', 'replace'],\r\n enumDescriptions: [\r\n nls.localize('suggest.insertMode.insert', \"Insert suggestion without overwriting text right of the cursor.\"),\r\n nls.localize('suggest.insertMode.replace', \"Insert suggestion and overwrite text right of the cursor.\"),\r\n ],\r\n default: defaults.insertMode,\r\n description: nls.localize('suggest.insertMode', \"Controls whether words are overwritten when accepting completions. Note that this depends on extensions opting into this feature.\")\r\n },\r\n 'editor.suggest.filterGraceful': {\r\n type: 'boolean',\r\n default: defaults.filterGraceful,\r\n description: nls.localize('suggest.filterGraceful', \"Controls whether filtering and sorting suggestions accounts for small typos.\")\r\n },\r\n 'editor.suggest.localityBonus': {\r\n type: 'boolean',\r\n default: defaults.localityBonus,\r\n description: nls.localize('suggest.localityBonus', \"Controls whether sorting favours words that appear close to the cursor.\")\r\n },\r\n 'editor.suggest.shareSuggestSelections': {\r\n type: 'boolean',\r\n default: defaults.shareSuggestSelections,\r\n markdownDescription: nls.localize('suggest.shareSuggestSelections', \"Controls whether remembered suggestion selections are shared between multiple workspaces and windows (needs `#editor.suggestSelection#`).\")\r\n },\r\n 'editor.suggest.snippetsPreventQuickSuggestions': {\r\n type: 'boolean',\r\n default: defaults.snippetsPreventQuickSuggestions,\r\n description: nls.localize('suggest.snippetsPreventQuickSuggestions', \"Controls whether an active snippet prevents quick suggestions.\")\r\n },\r\n 'editor.suggest.showIcons': {\r\n type: 'boolean',\r\n default: defaults.showIcons,\r\n description: nls.localize('suggest.showIcons', \"Controls whether to show or hide icons in suggestions.\")\r\n },\r\n 'editor.suggest.maxVisibleSuggestions': {\r\n type: 'number',\r\n default: defaults.maxVisibleSuggestions,\r\n minimum: 1,\r\n maximum: 15,\r\n description: nls.localize('suggest.maxVisibleSuggestions', \"Controls how many suggestions IntelliSense will show before showing a scrollbar (maximum 15).\")\r\n },\r\n 'editor.suggest.filteredTypes': {\r\n type: 'object',\r\n deprecationMessage: nls.localize('deprecated', \"This setting is deprecated, please use separate settings like 'editor.suggest.showKeywords' or 'editor.suggest.showSnippets' instead.\")\r\n },\r\n 'editor.suggest.showMethods': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showMethods', \"When enabled IntelliSense shows `method`-suggestions.\")\r\n },\r\n 'editor.suggest.showFunctions': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFunctions', \"When enabled IntelliSense shows `function`-suggestions.\")\r\n },\r\n 'editor.suggest.showConstructors': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showConstructors', \"When enabled IntelliSense shows `constructor`-suggestions.\")\r\n },\r\n 'editor.suggest.showFields': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFields', \"When enabled IntelliSense shows `field`-suggestions.\")\r\n },\r\n 'editor.suggest.showVariables': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showVariables', \"When enabled IntelliSense shows `variable`-suggestions.\")\r\n },\r\n 'editor.suggest.showClasses': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showClasss', \"When enabled IntelliSense shows `class`-suggestions.\")\r\n },\r\n 'editor.suggest.showStructs': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showStructs', \"When enabled IntelliSense shows `struct`-suggestions.\")\r\n },\r\n 'editor.suggest.showInterfaces': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showInterfaces', \"When enabled IntelliSense shows `interface`-suggestions.\")\r\n },\r\n 'editor.suggest.showModules': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showModules', \"When enabled IntelliSense shows `module`-suggestions.\")\r\n },\r\n 'editor.suggest.showProperties': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showPropertys', \"When enabled IntelliSense shows `property`-suggestions.\")\r\n },\r\n 'editor.suggest.showEvents': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showEvents', \"When enabled IntelliSense shows `event`-suggestions.\")\r\n },\r\n 'editor.suggest.showOperators': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showOperators', \"When enabled IntelliSense shows `operator`-suggestions.\")\r\n },\r\n 'editor.suggest.showUnits': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showUnits', \"When enabled IntelliSense shows `unit`-suggestions.\")\r\n },\r\n 'editor.suggest.showValues': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showValues', \"When enabled IntelliSense shows `value`-suggestions.\")\r\n },\r\n 'editor.suggest.showConstants': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showConstants', \"When enabled IntelliSense shows `constant`-suggestions.\")\r\n },\r\n 'editor.suggest.showEnums': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showEnums', \"When enabled IntelliSense shows `enum`-suggestions.\")\r\n },\r\n 'editor.suggest.showEnumMembers': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showEnumMembers', \"When enabled IntelliSense shows `enumMember`-suggestions.\")\r\n },\r\n 'editor.suggest.showKeywords': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showKeywords', \"When enabled IntelliSense shows `keyword`-suggestions.\")\r\n },\r\n 'editor.suggest.showWords': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showTexts', \"When enabled IntelliSense shows `text`-suggestions.\")\r\n },\r\n 'editor.suggest.showColors': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showColors', \"When enabled IntelliSense shows `color`-suggestions.\")\r\n },\r\n 'editor.suggest.showFiles': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFiles', \"When enabled IntelliSense shows `file`-suggestions.\")\r\n },\r\n 'editor.suggest.showReferences': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showReferences', \"When enabled IntelliSense shows `reference`-suggestions.\")\r\n },\r\n 'editor.suggest.showCustomcolors': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showCustomcolors', \"When enabled IntelliSense shows `customcolor`-suggestions.\")\r\n },\r\n 'editor.suggest.showFolders': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showFolders', \"When enabled IntelliSense shows `folder`-suggestions.\")\r\n },\r\n 'editor.suggest.showTypeParameters': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showTypeParameters', \"When enabled IntelliSense shows `typeParameter`-suggestions.\")\r\n },\r\n 'editor.suggest.showSnippets': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showSnippets', \"When enabled IntelliSense shows `snippet`-suggestions.\")\r\n },\r\n 'editor.suggest.showUsers': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showUsers', \"When enabled IntelliSense shows `user`-suggestions.\")\r\n },\r\n 'editor.suggest.showIssues': {\r\n type: 'boolean',\r\n default: true,\r\n markdownDescription: nls.localize('editor.suggest.showIssues', \"When enabled IntelliSense shows `issues`-suggestions.\")\r\n },\r\n 'editor.suggest.statusBar.visible': {\r\n type: 'boolean',\r\n default: false,\r\n markdownDescription: nls.localize('editor.suggest.statusBar.visible', \"Controls the visibility of the status bar at the bottom of the suggest widget.\")\r\n }\r\n });\r\n }\r\n validate(_input) {\r\n var _a;\r\n if (!_input || typeof _input !== 'object') {\r\n return this.defaultValue;\r\n }\r\n const input = _input;\r\n return {\r\n insertMode: EditorStringEnumOption.stringSet(input.insertMode, this.defaultValue.insertMode, ['insert', 'replace']),\r\n filterGraceful: EditorBooleanOption.boolean(input.filterGraceful, this.defaultValue.filterGraceful),\r\n snippetsPreventQuickSuggestions: EditorBooleanOption.boolean(input.snippetsPreventQuickSuggestions, this.defaultValue.filterGraceful),\r\n localityBonus: EditorBooleanOption.boolean(input.localityBonus, this.defaultValue.localityBonus),\r\n shareSuggestSelections: EditorBooleanOption.boolean(input.shareSuggestSelections, this.defaultValue.shareSuggestSelections),\r\n showIcons: EditorBooleanOption.boolean(input.showIcons, this.defaultValue.showIcons),\r\n maxVisibleSuggestions: EditorIntOption.clampedInt(input.maxVisibleSuggestions, this.defaultValue.maxVisibleSuggestions, 1, 15),\r\n showMethods: EditorBooleanOption.boolean(input.showMethods, this.defaultValue.showMethods),\r\n showFunctions: EditorBooleanOption.boolean(input.showFunctions, this.defaultValue.showFunctions),\r\n showConstructors: EditorBooleanOption.boolean(input.showConstructors, this.defaultValue.showConstructors),\r\n showFields: EditorBooleanOption.boolean(input.showFields, this.defaultValue.showFields),\r\n showVariables: EditorBooleanOption.boolean(input.showVariables, this.defaultValue.showVariables),\r\n showClasses: EditorBooleanOption.boolean(input.showClasses, this.defaultValue.showClasses),\r\n showStructs: EditorBooleanOption.boolean(input.showStructs, this.defaultValue.showStructs),\r\n showInterfaces: EditorBooleanOption.boolean(input.showInterfaces, this.defaultValue.showInterfaces),\r\n showModules: EditorBooleanOption.boolean(input.showModules, this.defaultValue.showModules),\r\n showProperties: EditorBooleanOption.boolean(input.showProperties, this.defaultValue.showProperties),\r\n showEvents: EditorBooleanOption.boolean(input.showEvents, this.defaultValue.showEvents),\r\n showOperators: EditorBooleanOption.boolean(input.showOperators, this.defaultValue.showOperators),\r\n showUnits: EditorBooleanOption.boolean(input.showUnits, this.defaultValue.showUnits),\r\n showValues: EditorBooleanOption.boolean(input.showValues, this.defaultValue.showValues),\r\n showConstants: EditorBooleanOption.boolean(input.showConstants, this.defaultValue.showConstants),\r\n showEnums: EditorBooleanOption.boolean(input.showEnums, this.defaultValue.showEnums),\r\n showEnumMembers: EditorBooleanOption.boolean(input.showEnumMembers, this.defaultValue.showEnumMembers),\r\n showKeywords: EditorBooleanOption.boolean(input.showKeywords, this.defaultValue.showKeywords),\r\n showWords: EditorBooleanOption.boolean(input.showWords, this.defaultValue.showWords),\r\n showColors: EditorBooleanOption.boolean(input.showColors, this.defaultValue.showColors),\r\n showFiles: EditorBooleanOption.boolean(input.showFiles, this.defaultValue.showFiles),\r\n showReferences: EditorBooleanOption.boolean(input.showReferences, this.defaultValue.showReferences),\r\n showFolders: EditorBooleanOption.boolean(input.showFolders, this.defaultValue.showFolders),\r\n showTypeParameters: EditorBooleanOption.boolean(input.showTypeParameters, this.defaultValue.showTypeParameters),\r\n showSnippets: EditorBooleanOption.boolean(input.showSnippets, this.defaultValue.showSnippets),\r\n showUsers: EditorBooleanOption.boolean(input.showUsers, this.defaultValue.showUsers),\r\n showIssues: EditorBooleanOption.boolean(input.showIssues, this.defaultValue.showIssues),\r\n statusBar: {\r\n visible: EditorBooleanOption.boolean((_a = input.statusBar) === null || _a === void 0 ? void 0 : _a.visible, !!this.defaultValue.statusBar.visible)\r\n }\r\n };\r\n }\r\n}\r\n//#endregion\r\n//#region tabFocusMode\r\nclass EditorTabFocusMode extends ComputedEditorOption {\r\n constructor() {\r\n super(116 /* tabFocusMode */, [72 /* readOnly */]);\r\n }\r\n compute(env, options, _) {\r\n const readOnly = options.get(72 /* readOnly */);\r\n return (readOnly ? true : env.tabFocusMode);\r\n }\r\n}\r\nfunction _wrappingIndentFromString(wrappingIndent) {\r\n switch (wrappingIndent) {\r\n case 'none': return 0 /* None */;\r\n case 'same': return 1 /* Same */;\r\n case 'indent': return 2 /* Indent */;\r\n case 'deepIndent': return 3 /* DeepIndent */;\r\n }\r\n}\r\nclass EditorWrappingInfoComputer extends ComputedEditorOption {\r\n constructor() {\r\n super(118 /* wrappingInfo */, [117 /* layoutInfo */]);\r\n }\r\n compute(env, options, _) {\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n return {\r\n isDominatedByLongLines: env.isDominatedByLongLines,\r\n isWordWrapMinified: layoutInfo.isWordWrapMinified,\r\n isViewportWrapping: layoutInfo.isViewportWrapping,\r\n wrappingColumn: layoutInfo.wrappingColumn,\r\n };\r\n }\r\n}\r\n//#endregion\r\nconst DEFAULT_WINDOWS_FONT_FAMILY = 'Consolas, \\'Courier New\\', monospace';\r\nconst DEFAULT_MAC_FONT_FAMILY = 'Menlo, Monaco, \\'Courier New\\', monospace';\r\nconst DEFAULT_LINUX_FONT_FAMILY = '\\'Droid Sans Mono\\', \\'monospace\\', monospace, \\'Droid Sans Fallback\\'';\r\n/**\r\n * @internal\r\n */\r\nexport const EDITOR_FONT_DEFAULTS = {\r\n fontFamily: (platform.isMacintosh ? DEFAULT_MAC_FONT_FAMILY : (platform.isLinux ? DEFAULT_LINUX_FONT_FAMILY : DEFAULT_WINDOWS_FONT_FAMILY)),\r\n fontWeight: 'normal',\r\n fontSize: (platform.isMacintosh ? 12 : 14),\r\n lineHeight: 0,\r\n letterSpacing: 0,\r\n};\r\n/**\r\n * @internal\r\n */\r\nexport const EDITOR_MODEL_DEFAULTS = {\r\n tabSize: 4,\r\n indentSize: 4,\r\n insertSpaces: true,\r\n detectIndentation: true,\r\n trimAutoWhitespace: true,\r\n largeFileOptimizations: true\r\n};\r\n/**\r\n * @internal\r\n */\r\nexport const editorOptionsRegistry = [];\r\nfunction register(option) {\r\n editorOptionsRegistry[option.id] = option;\r\n return option;\r\n}\r\n/**\r\n * WORKAROUND: TS emits \"any\" for complex editor options values (anything except string, bool, enum, etc. ends up being \"any\")\r\n * @monacodtsreplace\r\n * /accessibilitySupport, any/accessibilitySupport, AccessibilitySupport/\r\n * /comments, any/comments, EditorCommentsOptions/\r\n * /find, any/find, EditorFindOptions/\r\n * /fontInfo, any/fontInfo, FontInfo/\r\n * /gotoLocation, any/gotoLocation, GoToLocationOptions/\r\n * /hover, any/hover, EditorHoverOptions/\r\n * /lightbulb, any/lightbulb, EditorLightbulbOptions/\r\n * /minimap, any/minimap, EditorMinimapOptions/\r\n * /parameterHints, any/parameterHints, InternalParameterHintOptions/\r\n * /quickSuggestions, any/quickSuggestions, ValidQuickSuggestionsOptions/\r\n * /suggest, any/suggest, InternalSuggestOptions/\r\n */\r\nexport const EditorOptions = {\r\n acceptSuggestionOnCommitCharacter: register(new EditorBooleanOption(0 /* acceptSuggestionOnCommitCharacter */, 'acceptSuggestionOnCommitCharacter', true, { markdownDescription: nls.localize('acceptSuggestionOnCommitCharacter', \"Controls whether suggestions should be accepted on commit characters. For example, in JavaScript, the semi-colon (`;`) can be a commit character that accepts a suggestion and types that character.\") })),\r\n acceptSuggestionOnEnter: register(new EditorStringEnumOption(1 /* acceptSuggestionOnEnter */, 'acceptSuggestionOnEnter', 'on', ['on', 'smart', 'off'], {\r\n markdownEnumDescriptions: [\r\n '',\r\n nls.localize('acceptSuggestionOnEnterSmart', \"Only accept a suggestion with `Enter` when it makes a textual change.\"),\r\n ''\r\n ],\r\n markdownDescription: nls.localize('acceptSuggestionOnEnter', \"Controls whether suggestions should be accepted on `Enter`, in addition to `Tab`. Helps to avoid ambiguity between inserting new lines or accepting suggestions.\")\r\n })),\r\n accessibilitySupport: register(new EditorAccessibilitySupport()),\r\n accessibilityPageSize: register(new EditorIntOption(3 /* accessibilityPageSize */, 'accessibilityPageSize', 10, 1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('accessibilityPageSize', \"Controls the number of lines in the editor that can be read out by a screen reader. Warning: this has a performance implication for numbers larger than the default.\") })),\r\n ariaLabel: register(new EditorStringOption(4 /* ariaLabel */, 'ariaLabel', nls.localize('editorViewAccessibleLabel', \"Editor content\"))),\r\n autoClosingBrackets: register(new EditorStringEnumOption(5 /* autoClosingBrackets */, 'autoClosingBrackets', 'languageDefined', ['always', 'languageDefined', 'beforeWhitespace', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingBrackets.languageDefined', \"Use language configurations to determine when to autoclose brackets.\"),\r\n nls.localize('editor.autoClosingBrackets.beforeWhitespace', \"Autoclose brackets only when the cursor is to the left of whitespace.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingBrackets', \"Controls whether the editor should automatically close brackets after the user adds an opening bracket.\")\r\n })),\r\n autoClosingOvertype: register(new EditorStringEnumOption(6 /* autoClosingOvertype */, 'autoClosingOvertype', 'auto', ['always', 'auto', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingOvertype.auto', \"Type over closing quotes or brackets only if they were automatically inserted.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingOvertype', \"Controls whether the editor should type over closing quotes or brackets.\")\r\n })),\r\n autoClosingQuotes: register(new EditorStringEnumOption(7 /* autoClosingQuotes */, 'autoClosingQuotes', 'languageDefined', ['always', 'languageDefined', 'beforeWhitespace', 'never'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('editor.autoClosingQuotes.languageDefined', \"Use language configurations to determine when to autoclose quotes.\"),\r\n nls.localize('editor.autoClosingQuotes.beforeWhitespace', \"Autoclose quotes only when the cursor is to the left of whitespace.\"),\r\n '',\r\n ],\r\n description: nls.localize('autoClosingQuotes', \"Controls whether the editor should automatically close quotes after the user adds an opening quote.\")\r\n })),\r\n autoIndent: register(new EditorEnumOption(8 /* autoIndent */, 'autoIndent', 4 /* Full */, 'full', ['none', 'keep', 'brackets', 'advanced', 'full'], _autoIndentFromString, {\r\n enumDescriptions: [\r\n nls.localize('editor.autoIndent.none', \"The editor will not insert indentation automatically.\"),\r\n nls.localize('editor.autoIndent.keep', \"The editor will keep the current line's indentation.\"),\r\n nls.localize('editor.autoIndent.brackets', \"The editor will keep the current line's indentation and honor language defined brackets.\"),\r\n nls.localize('editor.autoIndent.advanced', \"The editor will keep the current line's indentation, honor language defined brackets and invoke special onEnterRules defined by languages.\"),\r\n nls.localize('editor.autoIndent.full', \"The editor will keep the current line's indentation, honor language defined brackets, invoke special onEnterRules defined by languages, and honor indentationRules defined by languages.\"),\r\n ],\r\n description: nls.localize('autoIndent', \"Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.\")\r\n })),\r\n automaticLayout: register(new EditorBooleanOption(9 /* automaticLayout */, 'automaticLayout', false)),\r\n autoSurround: register(new EditorStringEnumOption(10 /* autoSurround */, 'autoSurround', 'languageDefined', ['languageDefined', 'quotes', 'brackets', 'never'], {\r\n enumDescriptions: [\r\n nls.localize('editor.autoSurround.languageDefined', \"Use language configurations to determine when to automatically surround selections.\"),\r\n nls.localize('editor.autoSurround.quotes', \"Surround with quotes but not brackets.\"),\r\n nls.localize('editor.autoSurround.brackets', \"Surround with brackets but not quotes.\"),\r\n ''\r\n ],\r\n description: nls.localize('autoSurround', \"Controls whether the editor should automatically surround selections.\")\r\n })),\r\n codeLens: register(new EditorBooleanOption(11 /* codeLens */, 'codeLens', true, { description: nls.localize('codeLens', \"Controls whether the editor shows CodeLens.\") })),\r\n colorDecorators: register(new EditorBooleanOption(12 /* colorDecorators */, 'colorDecorators', true, { description: nls.localize('colorDecorators', \"Controls whether the editor should render the inline color decorators and color picker.\") })),\r\n columnSelection: register(new EditorBooleanOption(13 /* columnSelection */, 'columnSelection', false, { description: nls.localize('columnSelection', \"Enable that the selection with the mouse and keys is doing column selection.\") })),\r\n comments: register(new EditorComments()),\r\n contextmenu: register(new EditorBooleanOption(15 /* contextmenu */, 'contextmenu', true)),\r\n copyWithSyntaxHighlighting: register(new EditorBooleanOption(16 /* copyWithSyntaxHighlighting */, 'copyWithSyntaxHighlighting', true, { description: nls.localize('copyWithSyntaxHighlighting', \"Controls whether syntax highlighting should be copied into the clipboard.\") })),\r\n cursorBlinking: register(new EditorEnumOption(17 /* cursorBlinking */, 'cursorBlinking', 1 /* Blink */, 'blink', ['blink', 'smooth', 'phase', 'expand', 'solid'], _cursorBlinkingStyleFromString, { description: nls.localize('cursorBlinking', \"Control the cursor animation style.\") })),\r\n cursorSmoothCaretAnimation: register(new EditorBooleanOption(18 /* cursorSmoothCaretAnimation */, 'cursorSmoothCaretAnimation', false, { description: nls.localize('cursorSmoothCaretAnimation', \"Controls whether the smooth caret animation should be enabled.\") })),\r\n cursorStyle: register(new EditorEnumOption(19 /* cursorStyle */, 'cursorStyle', TextEditorCursorStyle.Line, 'line', ['line', 'block', 'underline', 'line-thin', 'block-outline', 'underline-thin'], _cursorStyleFromString, { description: nls.localize('cursorStyle', \"Controls the cursor style.\") })),\r\n cursorSurroundingLines: register(new EditorIntOption(20 /* cursorSurroundingLines */, 'cursorSurroundingLines', 0, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('cursorSurroundingLines', \"Controls the minimal number of visible leading and trailing lines surrounding the cursor. Known as 'scrollOff' or `scrollOffset` in some other editors.\") })),\r\n cursorSurroundingLinesStyle: register(new EditorStringEnumOption(21 /* cursorSurroundingLinesStyle */, 'cursorSurroundingLinesStyle', 'default', ['default', 'all'], {\r\n enumDescriptions: [\r\n nls.localize('cursorSurroundingLinesStyle.default', \"`cursorSurroundingLines` is enforced only when triggered via the keyboard or API.\"),\r\n nls.localize('cursorSurroundingLinesStyle.all', \"`cursorSurroundingLines` is enforced always.\")\r\n ],\r\n description: nls.localize('cursorSurroundingLinesStyle', \"Controls when `cursorSurroundingLines` should be enforced.\")\r\n })),\r\n cursorWidth: register(new EditorIntOption(22 /* cursorWidth */, 'cursorWidth', 0, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { markdownDescription: nls.localize('cursorWidth', \"Controls the width of the cursor when `#editor.cursorStyle#` is set to `line`.\") })),\r\n disableLayerHinting: register(new EditorBooleanOption(23 /* disableLayerHinting */, 'disableLayerHinting', false)),\r\n disableMonospaceOptimizations: register(new EditorBooleanOption(24 /* disableMonospaceOptimizations */, 'disableMonospaceOptimizations', false)),\r\n dragAndDrop: register(new EditorBooleanOption(25 /* dragAndDrop */, 'dragAndDrop', true, { description: nls.localize('dragAndDrop', \"Controls whether the editor should allow moving selections via drag and drop.\") })),\r\n emptySelectionClipboard: register(new EditorEmptySelectionClipboard()),\r\n extraEditorClassName: register(new EditorStringOption(27 /* extraEditorClassName */, 'extraEditorClassName', '')),\r\n fastScrollSensitivity: register(new EditorFloatOption(28 /* fastScrollSensitivity */, 'fastScrollSensitivity', 5, x => (x <= 0 ? 5 : x), { markdownDescription: nls.localize('fastScrollSensitivity', \"Scrolling speed multiplier when pressing `Alt`.\") })),\r\n find: register(new EditorFind()),\r\n fixedOverflowWidgets: register(new EditorBooleanOption(30 /* fixedOverflowWidgets */, 'fixedOverflowWidgets', false)),\r\n folding: register(new EditorBooleanOption(31 /* folding */, 'folding', true, { description: nls.localize('folding', \"Controls whether the editor has code folding enabled.\") })),\r\n foldingStrategy: register(new EditorStringEnumOption(32 /* foldingStrategy */, 'foldingStrategy', 'auto', ['auto', 'indentation'], {\r\n enumDescriptions: [\r\n nls.localize('foldingStrategy.auto', \"Use a language-specific folding strategy if available, else the indentation-based one.\"),\r\n nls.localize('foldingStrategy.indentation', \"Use the indentation-based folding strategy.\"),\r\n ],\r\n description: nls.localize('foldingStrategy', \"Controls the strategy for computing folding ranges.\")\r\n })),\r\n foldingHighlight: register(new EditorBooleanOption(33 /* foldingHighlight */, 'foldingHighlight', true, { description: nls.localize('foldingHighlight', \"Controls whether the editor should highlight folded ranges.\") })),\r\n unfoldOnClickAfterEndOfLine: register(new EditorBooleanOption(34 /* unfoldOnClickAfterEndOfLine */, 'unfoldOnClickAfterEndOfLine', false, { description: nls.localize('unfoldOnClickAfterEndOfLine', \"Controls whether clicking on the empty content after a folded line will unfold the line.\") })),\r\n fontFamily: register(new EditorStringOption(35 /* fontFamily */, 'fontFamily', EDITOR_FONT_DEFAULTS.fontFamily, { description: nls.localize('fontFamily', \"Controls the font family.\") })),\r\n fontInfo: register(new EditorFontInfo()),\r\n fontLigatures2: register(new EditorFontLigatures()),\r\n fontSize: register(new EditorFontSize()),\r\n fontWeight: register(new EditorFontWeight()),\r\n formatOnPaste: register(new EditorBooleanOption(40 /* formatOnPaste */, 'formatOnPaste', false, { description: nls.localize('formatOnPaste', \"Controls whether the editor should automatically format the pasted content. A formatter must be available and the formatter should be able to format a range in a document.\") })),\r\n formatOnType: register(new EditorBooleanOption(41 /* formatOnType */, 'formatOnType', false, { description: nls.localize('formatOnType', \"Controls whether the editor should automatically format the line after typing.\") })),\r\n glyphMargin: register(new EditorBooleanOption(42 /* glyphMargin */, 'glyphMargin', true, { description: nls.localize('glyphMargin', \"Controls whether the editor should render the vertical glyph margin. Glyph margin is mostly used for debugging.\") })),\r\n gotoLocation: register(new EditorGoToLocation()),\r\n hideCursorInOverviewRuler: register(new EditorBooleanOption(44 /* hideCursorInOverviewRuler */, 'hideCursorInOverviewRuler', false, { description: nls.localize('hideCursorInOverviewRuler', \"Controls whether the cursor should be hidden in the overview ruler.\") })),\r\n highlightActiveIndentGuide: register(new EditorBooleanOption(45 /* highlightActiveIndentGuide */, 'highlightActiveIndentGuide', true, { description: nls.localize('highlightActiveIndentGuide', \"Controls whether the editor should highlight the active indent guide.\") })),\r\n hover: register(new EditorHover()),\r\n inDiffEditor: register(new EditorBooleanOption(47 /* inDiffEditor */, 'inDiffEditor', false)),\r\n letterSpacing: register(new EditorFloatOption(48 /* letterSpacing */, 'letterSpacing', EDITOR_FONT_DEFAULTS.letterSpacing, x => EditorFloatOption.clamp(x, -5, 20), { description: nls.localize('letterSpacing', \"Controls the letter spacing in pixels.\") })),\r\n lightbulb: register(new EditorLightbulb()),\r\n lineDecorationsWidth: register(new SimpleEditorOption(50 /* lineDecorationsWidth */, 'lineDecorationsWidth', 10)),\r\n lineHeight: register(new EditorLineHeight()),\r\n lineNumbers: register(new EditorRenderLineNumbersOption()),\r\n lineNumbersMinChars: register(new EditorIntOption(53 /* lineNumbersMinChars */, 'lineNumbersMinChars', 5, 1, 300)),\r\n links: register(new EditorBooleanOption(54 /* links */, 'links', true, { description: nls.localize('links', \"Controls whether the editor should detect links and make them clickable.\") })),\r\n matchBrackets: register(new EditorStringEnumOption(55 /* matchBrackets */, 'matchBrackets', 'always', ['always', 'near', 'never'], { description: nls.localize('matchBrackets', \"Highlight matching brackets.\") })),\r\n minimap: register(new EditorMinimap()),\r\n mouseStyle: register(new EditorStringEnumOption(57 /* mouseStyle */, 'mouseStyle', 'text', ['text', 'default', 'copy'])),\r\n mouseWheelScrollSensitivity: register(new EditorFloatOption(58 /* mouseWheelScrollSensitivity */, 'mouseWheelScrollSensitivity', 1, x => (x === 0 ? 1 : x), { markdownDescription: nls.localize('mouseWheelScrollSensitivity', \"A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.\") })),\r\n mouseWheelZoom: register(new EditorBooleanOption(59 /* mouseWheelZoom */, 'mouseWheelZoom', false, { markdownDescription: nls.localize('mouseWheelZoom', \"Zoom the font of the editor when using mouse wheel and holding `Ctrl`.\") })),\r\n multiCursorMergeOverlapping: register(new EditorBooleanOption(60 /* multiCursorMergeOverlapping */, 'multiCursorMergeOverlapping', true, { description: nls.localize('multiCursorMergeOverlapping', \"Merge multiple cursors when they are overlapping.\") })),\r\n multiCursorModifier: register(new EditorEnumOption(61 /* multiCursorModifier */, 'multiCursorModifier', 'altKey', 'alt', ['ctrlCmd', 'alt'], _multiCursorModifierFromString, {\r\n markdownEnumDescriptions: [\r\n nls.localize('multiCursorModifier.ctrlCmd', \"Maps to `Control` on Windows and Linux and to `Command` on macOS.\"),\r\n nls.localize('multiCursorModifier.alt', \"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\")\r\n ],\r\n markdownDescription: nls.localize({\r\n key: 'multiCursorModifier',\r\n comment: [\r\n '- `ctrlCmd` refers to a value the setting can take and should not be localized.',\r\n '- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized.'\r\n ]\r\n }, \"The modifier to be used to add multiple cursors with the mouse. The Go To Definition and Open Link mouse gestures will adapt such that they do not conflict with the multicursor modifier. [Read more](https://code.visualstudio.com/docs/editor/codebasics#_multicursor-modifier).\")\r\n })),\r\n multiCursorPaste: register(new EditorStringEnumOption(62 /* multiCursorPaste */, 'multiCursorPaste', 'spread', ['spread', 'full'], {\r\n markdownEnumDescriptions: [\r\n nls.localize('multiCursorPaste.spread', \"Each cursor pastes a single line of the text.\"),\r\n nls.localize('multiCursorPaste.full', \"Each cursor pastes the full text.\")\r\n ],\r\n markdownDescription: nls.localize('multiCursorPaste', \"Controls pasting when the line count of the pasted text matches the cursor count.\")\r\n })),\r\n occurrencesHighlight: register(new EditorBooleanOption(63 /* occurrencesHighlight */, 'occurrencesHighlight', true, { description: nls.localize('occurrencesHighlight', \"Controls whether the editor should highlight semantic symbol occurrences.\") })),\r\n overviewRulerBorder: register(new EditorBooleanOption(64 /* overviewRulerBorder */, 'overviewRulerBorder', true, { description: nls.localize('overviewRulerBorder', \"Controls whether a border should be drawn around the overview ruler.\") })),\r\n overviewRulerLanes: register(new EditorIntOption(65 /* overviewRulerLanes */, 'overviewRulerLanes', 3, 0, 3)),\r\n padding: register(new EditorPadding()),\r\n parameterHints: register(new EditorParameterHints()),\r\n peekWidgetDefaultFocus: register(new EditorStringEnumOption(68 /* peekWidgetDefaultFocus */, 'peekWidgetDefaultFocus', 'tree', ['tree', 'editor'], {\r\n enumDescriptions: [\r\n nls.localize('peekWidgetDefaultFocus.tree', \"Focus the tree when opening peek\"),\r\n nls.localize('peekWidgetDefaultFocus.editor', \"Focus the editor when opening peek\")\r\n ],\r\n description: nls.localize('peekWidgetDefaultFocus', \"Controls whether to focus the inline editor or the tree in the peek widget.\")\r\n })),\r\n definitionLinkOpensInPeek: register(new EditorBooleanOption(69 /* definitionLinkOpensInPeek */, 'definitionLinkOpensInPeek', false, { description: nls.localize('definitionLinkOpensInPeek', \"Controls whether the Go to Definition mouse gesture always opens the peek widget.\") })),\r\n quickSuggestions: register(new EditorQuickSuggestions()),\r\n quickSuggestionsDelay: register(new EditorIntOption(71 /* quickSuggestionsDelay */, 'quickSuggestionsDelay', 10, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('quickSuggestionsDelay', \"Controls the delay in milliseconds after which quick suggestions will show up.\") })),\r\n readOnly: register(new EditorBooleanOption(72 /* readOnly */, 'readOnly', false)),\r\n renameOnType: register(new EditorBooleanOption(73 /* renameOnType */, 'renameOnType', false, { description: nls.localize('renameOnType', \"Controls whether the editor auto renames on type.\") })),\r\n renderControlCharacters: register(new EditorBooleanOption(74 /* renderControlCharacters */, 'renderControlCharacters', false, { description: nls.localize('renderControlCharacters', \"Controls whether the editor should render control characters.\") })),\r\n renderIndentGuides: register(new EditorBooleanOption(75 /* renderIndentGuides */, 'renderIndentGuides', true, { description: nls.localize('renderIndentGuides', \"Controls whether the editor should render indent guides.\") })),\r\n renderFinalNewline: register(new EditorBooleanOption(76 /* renderFinalNewline */, 'renderFinalNewline', true, { description: nls.localize('renderFinalNewline', \"Render last line number when the file ends with a newline.\") })),\r\n renderLineHighlight: register(new EditorStringEnumOption(77 /* renderLineHighlight */, 'renderLineHighlight', 'line', ['none', 'gutter', 'line', 'all'], {\r\n enumDescriptions: [\r\n '',\r\n '',\r\n '',\r\n nls.localize('renderLineHighlight.all', \"Highlights both the gutter and the current line.\"),\r\n ],\r\n description: nls.localize('renderLineHighlight', \"Controls how the editor should render the current line highlight.\")\r\n })),\r\n renderLineHighlightOnlyWhenFocus: register(new EditorBooleanOption(78 /* renderLineHighlightOnlyWhenFocus */, 'renderLineHighlightOnlyWhenFocus', false, { description: nls.localize('renderLineHighlightOnlyWhenFocus', \"Controls if the editor should render the current line highlight only when the editor is focused\") })),\r\n renderValidationDecorations: register(new EditorStringEnumOption(79 /* renderValidationDecorations */, 'renderValidationDecorations', 'editable', ['editable', 'on', 'off'])),\r\n renderWhitespace: register(new EditorStringEnumOption(80 /* renderWhitespace */, 'renderWhitespace', 'selection', ['none', 'boundary', 'selection', 'trailing', 'all'], {\r\n enumDescriptions: [\r\n '',\r\n nls.localize('renderWhitespace.boundary', \"Render whitespace characters except for single spaces between words.\"),\r\n nls.localize('renderWhitespace.selection', \"Render whitespace characters only on selected text.\"),\r\n nls.localize('renderWhitespace.trailing', \"Render only trailing whitespace characters\"),\r\n ''\r\n ],\r\n description: nls.localize('renderWhitespace', \"Controls how the editor should render whitespace characters.\")\r\n })),\r\n revealHorizontalRightPadding: register(new EditorIntOption(81 /* revealHorizontalRightPadding */, 'revealHorizontalRightPadding', 30, 0, 1000)),\r\n roundedSelection: register(new EditorBooleanOption(82 /* roundedSelection */, 'roundedSelection', true, { description: nls.localize('roundedSelection', \"Controls whether selections should have rounded corners.\") })),\r\n rulers: register(new EditorRulers()),\r\n scrollbar: register(new EditorScrollbar()),\r\n scrollBeyondLastColumn: register(new EditorIntOption(85 /* scrollBeyondLastColumn */, 'scrollBeyondLastColumn', 5, 0, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, { description: nls.localize('scrollBeyondLastColumn', \"Controls the number of extra characters beyond which the editor will scroll horizontally.\") })),\r\n scrollBeyondLastLine: register(new EditorBooleanOption(86 /* scrollBeyondLastLine */, 'scrollBeyondLastLine', true, { description: nls.localize('scrollBeyondLastLine', \"Controls whether the editor will scroll beyond the last line.\") })),\r\n scrollPredominantAxis: register(new EditorBooleanOption(87 /* scrollPredominantAxis */, 'scrollPredominantAxis', true, { description: nls.localize('scrollPredominantAxis', \"Scroll only along the predominant axis when scrolling both vertically and horizontally at the same time. Prevents horizontal drift when scrolling vertically on a trackpad.\") })),\r\n selectionClipboard: register(new EditorBooleanOption(88 /* selectionClipboard */, 'selectionClipboard', true, {\r\n description: nls.localize('selectionClipboard', \"Controls whether the Linux primary clipboard should be supported.\"),\r\n included: platform.isLinux\r\n })),\r\n selectionHighlight: register(new EditorBooleanOption(89 /* selectionHighlight */, 'selectionHighlight', true, { description: nls.localize('selectionHighlight', \"Controls whether the editor should highlight matches similar to the selection.\") })),\r\n selectOnLineNumbers: register(new EditorBooleanOption(90 /* selectOnLineNumbers */, 'selectOnLineNumbers', true)),\r\n showFoldingControls: register(new EditorStringEnumOption(91 /* showFoldingControls */, 'showFoldingControls', 'mouseover', ['always', 'mouseover'], {\r\n enumDescriptions: [\r\n nls.localize('showFoldingControls.always', \"Always show the folding controls.\"),\r\n nls.localize('showFoldingControls.mouseover', \"Only show the folding controls when the mouse is over the gutter.\"),\r\n ],\r\n description: nls.localize('showFoldingControls', \"Controls when the folding controls on the gutter are shown.\")\r\n })),\r\n showUnused: register(new EditorBooleanOption(92 /* showUnused */, 'showUnused', true, { description: nls.localize('showUnused', \"Controls fading out of unused code.\") })),\r\n showDeprecated: register(new EditorBooleanOption(113 /* showDeprecated */, 'showDeprecated', true, { description: nls.localize('showDeprecated', \"Controls strikethrough deprecated variables.\") })),\r\n snippetSuggestions: register(new EditorStringEnumOption(93 /* snippetSuggestions */, 'snippetSuggestions', 'inline', ['top', 'bottom', 'inline', 'none'], {\r\n enumDescriptions: [\r\n nls.localize('snippetSuggestions.top', \"Show snippet suggestions on top of other suggestions.\"),\r\n nls.localize('snippetSuggestions.bottom', \"Show snippet suggestions below other suggestions.\"),\r\n nls.localize('snippetSuggestions.inline', \"Show snippets suggestions with other suggestions.\"),\r\n nls.localize('snippetSuggestions.none', \"Do not show snippet suggestions.\"),\r\n ],\r\n description: nls.localize('snippetSuggestions', \"Controls whether snippets are shown with other suggestions and how they are sorted.\")\r\n })),\r\n smoothScrolling: register(new EditorBooleanOption(94 /* smoothScrolling */, 'smoothScrolling', false, { description: nls.localize('smoothScrolling', \"Controls whether the editor will scroll using an animation.\") })),\r\n stopRenderingLineAfter: register(new EditorIntOption(95 /* stopRenderingLineAfter */, 'stopRenderingLineAfter', 10000, -1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */)),\r\n suggest: register(new EditorSuggest()),\r\n suggestFontSize: register(new EditorIntOption(97 /* suggestFontSize */, 'suggestFontSize', 0, 0, 1000, { markdownDescription: nls.localize('suggestFontSize', \"Font size for the suggest widget. When set to `0`, the value of `#editor.fontSize#` is used.\") })),\r\n suggestLineHeight: register(new EditorIntOption(98 /* suggestLineHeight */, 'suggestLineHeight', 0, 0, 1000, { markdownDescription: nls.localize('suggestLineHeight', \"Line height for the suggest widget. When set to `0`, the value of `#editor.lineHeight#` is used.\") })),\r\n suggestOnTriggerCharacters: register(new EditorBooleanOption(99 /* suggestOnTriggerCharacters */, 'suggestOnTriggerCharacters', true, { description: nls.localize('suggestOnTriggerCharacters', \"Controls whether suggestions should automatically show up when typing trigger characters.\") })),\r\n suggestSelection: register(new EditorStringEnumOption(100 /* suggestSelection */, 'suggestSelection', 'recentlyUsed', ['first', 'recentlyUsed', 'recentlyUsedByPrefix'], {\r\n markdownEnumDescriptions: [\r\n nls.localize('suggestSelection.first', \"Always select the first suggestion.\"),\r\n nls.localize('suggestSelection.recentlyUsed', \"Select recent suggestions unless further typing selects one, e.g. `console.| -> console.log` because `log` has been completed recently.\"),\r\n nls.localize('suggestSelection.recentlyUsedByPrefix', \"Select suggestions based on previous prefixes that have completed those suggestions, e.g. `co -> console` and `con -> const`.\"),\r\n ],\r\n description: nls.localize('suggestSelection', \"Controls how suggestions are pre-selected when showing the suggest list.\")\r\n })),\r\n tabCompletion: register(new EditorStringEnumOption(101 /* tabCompletion */, 'tabCompletion', 'off', ['on', 'off', 'onlySnippets'], {\r\n enumDescriptions: [\r\n nls.localize('tabCompletion.on', \"Tab complete will insert the best matching suggestion when pressing tab.\"),\r\n nls.localize('tabCompletion.off', \"Disable tab completions.\"),\r\n nls.localize('tabCompletion.onlySnippets', \"Tab complete snippets when their prefix match. Works best when 'quickSuggestions' aren't enabled.\"),\r\n ],\r\n description: nls.localize('tabCompletion', \"Enables tab completions.\")\r\n })),\r\n tabIndex: register(new EditorIntOption(102 /* tabIndex */, 'tabIndex', 0, -1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */)),\r\n unusualLineTerminators: register(new EditorStringEnumOption(103 /* unusualLineTerminators */, 'unusualLineTerminators', 'prompt', ['off', 'prompt', 'auto'], {\r\n enumDescriptions: [\r\n nls.localize('unusualLineTerminators.off', \"Unusual line terminators are ignored.\"),\r\n nls.localize('unusualLineTerminators.prompt', \"Unusual line terminators prompt to be removed.\"),\r\n nls.localize('unusualLineTerminators.auto', \"Unusual line terminators are automatically removed.\"),\r\n ],\r\n description: nls.localize('unusualLineTerminators', \"Remove unusual line terminators that might cause problems.\")\r\n })),\r\n useTabStops: register(new EditorBooleanOption(104 /* useTabStops */, 'useTabStops', true, { description: nls.localize('useTabStops', \"Inserting and deleting whitespace follows tab stops.\") })),\r\n wordSeparators: register(new EditorStringOption(105 /* wordSeparators */, 'wordSeparators', USUAL_WORD_SEPARATORS, { description: nls.localize('wordSeparators', \"Characters that will be used as word separators when doing word related navigations or operations.\") })),\r\n wordWrap: register(new EditorStringEnumOption(106 /* wordWrap */, 'wordWrap', 'off', ['off', 'on', 'wordWrapColumn', 'bounded'], {\r\n markdownEnumDescriptions: [\r\n nls.localize('wordWrap.off', \"Lines will never wrap.\"),\r\n nls.localize('wordWrap.on', \"Lines will wrap at the viewport width.\"),\r\n nls.localize({\r\n key: 'wordWrap.wordWrapColumn',\r\n comment: [\r\n '- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\r\n ]\r\n }, \"Lines will wrap at `#editor.wordWrapColumn#`.\"),\r\n nls.localize({\r\n key: 'wordWrap.bounded',\r\n comment: [\r\n '- viewport means the edge of the visible window size.',\r\n '- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\r\n ]\r\n }, \"Lines will wrap at the minimum of viewport and `#editor.wordWrapColumn#`.\"),\r\n ],\r\n description: nls.localize({\r\n key: 'wordWrap',\r\n comment: [\r\n '- \\'off\\', \\'on\\', \\'wordWrapColumn\\' and \\'bounded\\' refer to values the setting can take and should not be localized.',\r\n '- `editor.wordWrapColumn` refers to a different setting and should not be localized.'\r\n ]\r\n }, \"Controls how lines should wrap.\")\r\n })),\r\n wordWrapBreakAfterCharacters: register(new EditorStringOption(107 /* wordWrapBreakAfterCharacters */, 'wordWrapBreakAfterCharacters', ' \\t})]?|/&.,;¢°′″‰℃、。。、¢,.:;?!%・・ゝゞヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻ァィゥェォャュョッー”〉》」』】〕)]}」')),\r\n wordWrapBreakBeforeCharacters: register(new EditorStringOption(108 /* wordWrapBreakBeforeCharacters */, 'wordWrapBreakBeforeCharacters', '([{‘“〈《「『【〔([{「£¥$£¥++')),\r\n wordWrapColumn: register(new EditorIntOption(109 /* wordWrapColumn */, 'wordWrapColumn', 80, 1, 1073741824 /* MAX_SAFE_SMALL_INTEGER */, {\r\n markdownDescription: nls.localize({\r\n key: 'wordWrapColumn',\r\n comment: [\r\n '- `editor.wordWrap` refers to a different setting and should not be localized.',\r\n '- \\'wordWrapColumn\\' and \\'bounded\\' refer to values the different setting can take and should not be localized.'\r\n ]\r\n }, \"Controls the wrapping column of the editor when `#editor.wordWrap#` is `wordWrapColumn` or `bounded`.\")\r\n })),\r\n wordWrapMinified: register(new EditorBooleanOption(110 /* wordWrapMinified */, 'wordWrapMinified', true)),\r\n wrappingIndent: register(new EditorEnumOption(111 /* wrappingIndent */, 'wrappingIndent', 1 /* Same */, 'same', ['none', 'same', 'indent', 'deepIndent'], _wrappingIndentFromString, {\r\n enumDescriptions: [\r\n nls.localize('wrappingIndent.none', \"No indentation. Wrapped lines begin at column 1.\"),\r\n nls.localize('wrappingIndent.same', \"Wrapped lines get the same indentation as the parent.\"),\r\n nls.localize('wrappingIndent.indent', \"Wrapped lines get +1 indentation toward the parent.\"),\r\n nls.localize('wrappingIndent.deepIndent', \"Wrapped lines get +2 indentation toward the parent.\"),\r\n ],\r\n description: nls.localize('wrappingIndent', \"Controls the indentation of wrapped lines.\"),\r\n })),\r\n wrappingStrategy: register(new EditorStringEnumOption(112 /* wrappingStrategy */, 'wrappingStrategy', 'simple', ['simple', 'advanced'], {\r\n enumDescriptions: [\r\n nls.localize('wrappingStrategy.simple', \"Assumes that all characters are of the same width. This is a fast algorithm that works correctly for monospace fonts and certain scripts (like Latin characters) where glyphs are of equal width.\"),\r\n nls.localize('wrappingStrategy.advanced', \"Delegates wrapping points computation to the browser. This is a slow algorithm, that might cause freezes for large files, but it works correctly in all cases.\")\r\n ],\r\n description: nls.localize('wrappingStrategy', \"Controls the algorithm that computes wrapping points.\")\r\n })),\r\n // Leave these at the end (because they have dependencies!)\r\n editorClassName: register(new EditorClassName()),\r\n pixelRatio: register(new EditorPixelRatio()),\r\n tabFocusMode: register(new EditorTabFocusMode()),\r\n layoutInfo: register(new EditorLayoutInfoComputer()),\r\n wrappingInfo: register(new EditorWrappingInfoComputer())\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const EditorZoom = new class {\r\n constructor() {\r\n this._zoomLevel = 0;\r\n this._onDidChangeZoomLevel = new Emitter();\r\n this.onDidChangeZoomLevel = this._onDidChangeZoomLevel.event;\r\n }\r\n getZoomLevel() {\r\n return this._zoomLevel;\r\n }\r\n setZoomLevel(zoomLevel) {\r\n zoomLevel = Math.min(Math.max(-5, zoomLevel), 20);\r\n if (this._zoomLevel === zoomLevel) {\r\n return;\r\n }\r\n this._zoomLevel = zoomLevel;\r\n this._onDidChangeZoomLevel.fire(this._zoomLevel);\r\n }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { EditorZoom } from './editorZoom.js';\r\n/**\r\n * Determined from empirical observations.\r\n * @internal\r\n */\r\nconst GOLDEN_LINE_HEIGHT_RATIO = platform.isMacintosh ? 1.5 : 1.35;\r\n/**\r\n * @internal\r\n */\r\nconst MINIMUM_LINE_HEIGHT = 8;\r\nexport class BareFontInfo {\r\n /**\r\n * @internal\r\n */\r\n constructor(opts) {\r\n this.zoomLevel = opts.zoomLevel;\r\n this.fontFamily = String(opts.fontFamily);\r\n this.fontWeight = String(opts.fontWeight);\r\n this.fontSize = opts.fontSize;\r\n this.fontFeatureSettings = opts.fontFeatureSettings;\r\n this.lineHeight = opts.lineHeight | 0;\r\n this.letterSpacing = opts.letterSpacing;\r\n }\r\n /**\r\n * @internal\r\n */\r\n static createFromValidatedSettings(options, zoomLevel, ignoreEditorZoom) {\r\n const fontFamily = options.get(35 /* fontFamily */);\r\n const fontWeight = options.get(39 /* fontWeight */);\r\n const fontSize = options.get(38 /* fontSize */);\r\n const fontFeatureSettings = options.get(37 /* fontLigatures */);\r\n const lineHeight = options.get(51 /* lineHeight */);\r\n const letterSpacing = options.get(48 /* letterSpacing */);\r\n return BareFontInfo._create(fontFamily, fontWeight, fontSize, fontFeatureSettings, lineHeight, letterSpacing, zoomLevel, ignoreEditorZoom);\r\n }\r\n /**\r\n * @internal\r\n */\r\n static _create(fontFamily, fontWeight, fontSize, fontFeatureSettings, lineHeight, letterSpacing, zoomLevel, ignoreEditorZoom) {\r\n if (lineHeight === 0) {\r\n lineHeight = Math.round(GOLDEN_LINE_HEIGHT_RATIO * fontSize);\r\n }\r\n else if (lineHeight < MINIMUM_LINE_HEIGHT) {\r\n lineHeight = MINIMUM_LINE_HEIGHT;\r\n }\r\n const editorZoomLevelMultiplier = 1 + (ignoreEditorZoom ? 0 : EditorZoom.getZoomLevel() * 0.1);\r\n fontSize *= editorZoomLevelMultiplier;\r\n lineHeight *= editorZoomLevelMultiplier;\r\n return new BareFontInfo({\r\n zoomLevel: zoomLevel,\r\n fontFamily: fontFamily,\r\n fontWeight: fontWeight,\r\n fontSize: fontSize,\r\n fontFeatureSettings: fontFeatureSettings,\r\n lineHeight: lineHeight,\r\n letterSpacing: letterSpacing\r\n });\r\n }\r\n /**\r\n * @internal\r\n */\r\n getId() {\r\n return this.zoomLevel + '-' + this.fontFamily + '-' + this.fontWeight + '-' + this.fontSize + '-' + this.fontFeatureSettings + '-' + this.lineHeight + '-' + this.letterSpacing;\r\n }\r\n /**\r\n * @internal\r\n */\r\n getMassagedFontFamily() {\r\n if (/[,\"']/.test(this.fontFamily)) {\r\n // Looks like the font family might be already escaped\r\n return this.fontFamily;\r\n }\r\n if (/[+ ]/.test(this.fontFamily)) {\r\n // Wrap a font family using + or <space> with quotes\r\n return `\"${this.fontFamily}\"`;\r\n }\r\n return this.fontFamily;\r\n }\r\n}\r\nexport class FontInfo extends BareFontInfo {\r\n /**\r\n * @internal\r\n */\r\n constructor(opts, isTrusted) {\r\n super(opts);\r\n this.isTrusted = isTrusted;\r\n this.isMonospace = opts.isMonospace;\r\n this.typicalHalfwidthCharacterWidth = opts.typicalHalfwidthCharacterWidth;\r\n this.typicalFullwidthCharacterWidth = opts.typicalFullwidthCharacterWidth;\r\n this.canUseHalfwidthRightwardsArrow = opts.canUseHalfwidthRightwardsArrow;\r\n this.spaceWidth = opts.spaceWidth;\r\n this.middotWidth = opts.middotWidth;\r\n this.wsmiddotWidth = opts.wsmiddotWidth;\r\n this.maxDigitWidth = opts.maxDigitWidth;\r\n }\r\n /**\r\n * @internal\r\n */\r\n equals(other) {\r\n return (this.fontFamily === other.fontFamily\r\n && this.fontWeight === other.fontWeight\r\n && this.fontSize === other.fontSize\r\n && this.fontFeatureSettings === other.fontFeatureSettings\r\n && this.lineHeight === other.lineHeight\r\n && this.letterSpacing === other.letterSpacing\r\n && this.typicalHalfwidthCharacterWidth === other.typicalHalfwidthCharacterWidth\r\n && this.typicalFullwidthCharacterWidth === other.typicalFullwidthCharacterWidth\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.spaceWidth === other.spaceWidth\r\n && this.middotWidth === other.middotWidth\r\n && this.wsmiddotWidth === other.wsmiddotWidth\r\n && this.maxDigitWidth === other.maxDigitWidth);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { CursorCollection } from './cursorCollection.js';\r\nimport { CursorColumns, CursorContext, CursorState, EditOperationResult } from './cursorCommon.js';\r\nimport { DeleteOperations } from './cursorDeleteOperations.js';\r\nimport { TypeOperations, TypeWithAutoClosingCommand } from './cursorTypeOperations.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { ViewCursorStateChangedEvent, ViewRevealRangeRequestEvent } from '../view/viewEvents.js';\r\nimport { dispose, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { CursorStateChangedEvent } from '../viewModel/viewModelEventDispatcher.js';\r\n/**\r\n * A snapshot of the cursor and the model state\r\n */\r\nexport class CursorModelState {\r\n constructor(model, cursor) {\r\n this.modelVersionId = model.getVersionId();\r\n this.cursorState = cursor.getCursorStates();\r\n }\r\n equals(other) {\r\n if (!other) {\r\n return false;\r\n }\r\n if (this.modelVersionId !== other.modelVersionId) {\r\n return false;\r\n }\r\n if (this.cursorState.length !== other.cursorState.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = this.cursorState.length; i < len; i++) {\r\n if (!this.cursorState[i].equals(other.cursorState[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\nclass AutoClosedAction {\r\n constructor(model, autoClosedCharactersDecorations, autoClosedEnclosingDecorations) {\r\n this._model = model;\r\n this._autoClosedCharactersDecorations = autoClosedCharactersDecorations;\r\n this._autoClosedEnclosingDecorations = autoClosedEnclosingDecorations;\r\n }\r\n static getAllAutoClosedCharacters(autoClosedActions) {\r\n let autoClosedCharacters = [];\r\n for (const autoClosedAction of autoClosedActions) {\r\n autoClosedCharacters = autoClosedCharacters.concat(autoClosedAction.getAutoClosedCharactersRanges());\r\n }\r\n return autoClosedCharacters;\r\n }\r\n dispose() {\r\n this._autoClosedCharactersDecorations = this._model.deltaDecorations(this._autoClosedCharactersDecorations, []);\r\n this._autoClosedEnclosingDecorations = this._model.deltaDecorations(this._autoClosedEnclosingDecorations, []);\r\n }\r\n getAutoClosedCharactersRanges() {\r\n let result = [];\r\n for (let i = 0; i < this._autoClosedCharactersDecorations.length; i++) {\r\n const decorationRange = this._model.getDecorationRange(this._autoClosedCharactersDecorations[i]);\r\n if (decorationRange) {\r\n result.push(decorationRange);\r\n }\r\n }\r\n return result;\r\n }\r\n isValid(selections) {\r\n let enclosingRanges = [];\r\n for (let i = 0; i < this._autoClosedEnclosingDecorations.length; i++) {\r\n const decorationRange = this._model.getDecorationRange(this._autoClosedEnclosingDecorations[i]);\r\n if (decorationRange) {\r\n enclosingRanges.push(decorationRange);\r\n if (decorationRange.startLineNumber !== decorationRange.endLineNumber) {\r\n // Stop tracking if the range becomes multiline...\r\n return false;\r\n }\r\n }\r\n }\r\n enclosingRanges.sort(Range.compareRangesUsingStarts);\r\n selections.sort(Range.compareRangesUsingStarts);\r\n for (let i = 0; i < selections.length; i++) {\r\n if (i >= enclosingRanges.length) {\r\n return false;\r\n }\r\n if (!enclosingRanges[i].strictContainsRange(selections[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\nexport class Cursor extends Disposable {\r\n constructor(model, viewModel, coordinatesConverter, cursorConfig) {\r\n super();\r\n this._model = model;\r\n this._knownModelVersionId = this._model.getVersionId();\r\n this._viewModel = viewModel;\r\n this._coordinatesConverter = coordinatesConverter;\r\n this.context = new CursorContext(this._model, this._coordinatesConverter, cursorConfig);\r\n this._cursors = new CursorCollection(this.context);\r\n this._hasFocus = false;\r\n this._isHandling = false;\r\n this._isDoingComposition = false;\r\n this._selectionsWhenCompositionStarted = null;\r\n this._columnSelectData = null;\r\n this._autoClosedActions = [];\r\n this._prevEditOperationType = 0 /* Other */;\r\n }\r\n dispose() {\r\n this._cursors.dispose();\r\n this._autoClosedActions = dispose(this._autoClosedActions);\r\n super.dispose();\r\n }\r\n updateConfiguration(cursorConfig) {\r\n this.context = new CursorContext(this._model, this._coordinatesConverter, cursorConfig);\r\n this._cursors.updateContext(this.context);\r\n }\r\n onLineMappingChanged(eventsCollector) {\r\n if (this._knownModelVersionId !== this._model.getVersionId()) {\r\n // There are model change events that I didn't yet receive.\r\n //\r\n // This can happen when editing the model, and the view model receives the change events first,\r\n // and the view model emits line mapping changed events, all before the cursor gets a chance to\r\n // recover from markers.\r\n //\r\n // The model change listener above will be called soon and we'll ensure a valid cursor state there.\r\n return;\r\n }\r\n // Ensure valid state\r\n this.setStates(eventsCollector, 'viewModel', 0 /* NotSet */, this.getCursorStates());\r\n }\r\n setHasFocus(hasFocus) {\r\n this._hasFocus = hasFocus;\r\n }\r\n _validateAutoClosedActions() {\r\n if (this._autoClosedActions.length > 0) {\r\n let selections = this._cursors.getSelections();\r\n for (let i = 0; i < this._autoClosedActions.length; i++) {\r\n const autoClosedAction = this._autoClosedActions[i];\r\n if (!autoClosedAction.isValid(selections)) {\r\n autoClosedAction.dispose();\r\n this._autoClosedActions.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n }\r\n }\r\n // ------ some getters/setters\r\n getPrimaryCursorState() {\r\n return this._cursors.getPrimaryCursor();\r\n }\r\n getLastAddedCursorIndex() {\r\n return this._cursors.getLastAddedCursorIndex();\r\n }\r\n getCursorStates() {\r\n return this._cursors.getAll();\r\n }\r\n setStates(eventsCollector, source, reason, states) {\r\n let reachedMaxCursorCount = false;\r\n if (states !== null && states.length > Cursor.MAX_CURSOR_COUNT) {\r\n states = states.slice(0, Cursor.MAX_CURSOR_COUNT);\r\n reachedMaxCursorCount = true;\r\n }\r\n const oldState = new CursorModelState(this._model, this);\r\n this._cursors.setStates(states);\r\n this._cursors.normalize();\r\n this._columnSelectData = null;\r\n this._validateAutoClosedActions();\r\n return this._emitStateChangedIfNecessary(eventsCollector, source, reason, oldState, reachedMaxCursorCount);\r\n }\r\n setCursorColumnSelectData(columnSelectData) {\r\n this._columnSelectData = columnSelectData;\r\n }\r\n revealPrimary(eventsCollector, source, revealHorizontal, scrollType) {\r\n const viewPositions = this._cursors.getViewPositions();\r\n if (viewPositions.length > 1) {\r\n this._emitCursorRevealRange(eventsCollector, source, null, this._cursors.getViewSelections(), 0 /* Simple */, revealHorizontal, scrollType);\r\n return;\r\n }\r\n else {\r\n const viewPosition = viewPositions[0];\r\n const viewRange = new Range(viewPosition.lineNumber, viewPosition.column, viewPosition.lineNumber, viewPosition.column);\r\n this._emitCursorRevealRange(eventsCollector, source, viewRange, null, 0 /* Simple */, revealHorizontal, scrollType);\r\n }\r\n }\r\n _revealPrimaryCursor(eventsCollector, source, verticalType, revealHorizontal, scrollType) {\r\n const viewPositions = this._cursors.getViewPositions();\r\n if (viewPositions.length > 1) {\r\n this._emitCursorRevealRange(eventsCollector, source, null, this._cursors.getViewSelections(), verticalType, revealHorizontal, scrollType);\r\n }\r\n else {\r\n const viewPosition = viewPositions[0];\r\n const viewRange = new Range(viewPosition.lineNumber, viewPosition.column, viewPosition.lineNumber, viewPosition.column);\r\n this._emitCursorRevealRange(eventsCollector, source, viewRange, null, verticalType, revealHorizontal, scrollType);\r\n }\r\n }\r\n _emitCursorRevealRange(eventsCollector, source, viewRange, viewSelections, verticalType, revealHorizontal, scrollType) {\r\n eventsCollector.emitViewEvent(new ViewRevealRangeRequestEvent(source, viewRange, viewSelections, verticalType, revealHorizontal, scrollType));\r\n }\r\n saveState() {\r\n let result = [];\r\n const selections = this._cursors.getSelections();\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n result.push({\r\n inSelectionMode: !selection.isEmpty(),\r\n selectionStart: {\r\n lineNumber: selection.selectionStartLineNumber,\r\n column: selection.selectionStartColumn,\r\n },\r\n position: {\r\n lineNumber: selection.positionLineNumber,\r\n column: selection.positionColumn,\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n restoreState(eventsCollector, states) {\r\n let desiredSelections = [];\r\n for (let i = 0, len = states.length; i < len; i++) {\r\n const state = states[i];\r\n let positionLineNumber = 1;\r\n let positionColumn = 1;\r\n // Avoid missing properties on the literal\r\n if (state.position && state.position.lineNumber) {\r\n positionLineNumber = state.position.lineNumber;\r\n }\r\n if (state.position && state.position.column) {\r\n positionColumn = state.position.column;\r\n }\r\n let selectionStartLineNumber = positionLineNumber;\r\n let selectionStartColumn = positionColumn;\r\n // Avoid missing properties on the literal\r\n if (state.selectionStart && state.selectionStart.lineNumber) {\r\n selectionStartLineNumber = state.selectionStart.lineNumber;\r\n }\r\n if (state.selectionStart && state.selectionStart.column) {\r\n selectionStartColumn = state.selectionStart.column;\r\n }\r\n desiredSelections.push({\r\n selectionStartLineNumber: selectionStartLineNumber,\r\n selectionStartColumn: selectionStartColumn,\r\n positionLineNumber: positionLineNumber,\r\n positionColumn: positionColumn\r\n });\r\n }\r\n this.setStates(eventsCollector, 'restoreState', 0 /* NotSet */, CursorState.fromModelSelections(desiredSelections));\r\n this.revealPrimary(eventsCollector, 'restoreState', true, 1 /* Immediate */);\r\n }\r\n onModelContentChanged(eventsCollector, e) {\r\n this._knownModelVersionId = e.versionId;\r\n if (this._isHandling) {\r\n return;\r\n }\r\n const hadFlushEvent = e.containsEvent(1 /* Flush */);\r\n this._prevEditOperationType = 0 /* Other */;\r\n if (hadFlushEvent) {\r\n // a model.setValue() was called\r\n this._cursors.dispose();\r\n this._cursors = new CursorCollection(this.context);\r\n this._validateAutoClosedActions();\r\n this._emitStateChangedIfNecessary(eventsCollector, 'model', 1 /* ContentFlush */, null, false);\r\n }\r\n else {\r\n if (this._hasFocus && e.resultingSelection && e.resultingSelection.length > 0) {\r\n const cursorState = CursorState.fromModelSelections(e.resultingSelection);\r\n if (this.setStates(eventsCollector, 'modelChange', e.isUndoing ? 5 /* Undo */ : e.isRedoing ? 6 /* Redo */ : 2 /* RecoverFromMarkers */, cursorState)) {\r\n this._revealPrimaryCursor(eventsCollector, 'modelChange', 0 /* Simple */, true, 0 /* Smooth */);\r\n }\r\n }\r\n else {\r\n const selectionsFromMarkers = this._cursors.readSelectionFromMarkers();\r\n this.setStates(eventsCollector, 'modelChange', 2 /* RecoverFromMarkers */, CursorState.fromModelSelections(selectionsFromMarkers));\r\n }\r\n }\r\n }\r\n getSelection() {\r\n return this._cursors.getPrimaryCursor().modelState.selection;\r\n }\r\n getTopMostViewPosition() {\r\n return this._cursors.getTopMostViewPosition();\r\n }\r\n getBottomMostViewPosition() {\r\n return this._cursors.getBottomMostViewPosition();\r\n }\r\n getCursorColumnSelectData() {\r\n if (this._columnSelectData) {\r\n return this._columnSelectData;\r\n }\r\n const primaryCursor = this._cursors.getPrimaryCursor();\r\n const viewSelectionStart = primaryCursor.viewState.selectionStart.getStartPosition();\r\n const viewPosition = primaryCursor.viewState.position;\r\n return {\r\n isReal: false,\r\n fromViewLineNumber: viewSelectionStart.lineNumber,\r\n fromViewVisualColumn: CursorColumns.visibleColumnFromColumn2(this.context.cursorConfig, this._viewModel, viewSelectionStart),\r\n toViewLineNumber: viewPosition.lineNumber,\r\n toViewVisualColumn: CursorColumns.visibleColumnFromColumn2(this.context.cursorConfig, this._viewModel, viewPosition),\r\n };\r\n }\r\n getSelections() {\r\n return this._cursors.getSelections();\r\n }\r\n setSelections(eventsCollector, source, selections) {\r\n this.setStates(eventsCollector, source, 0 /* NotSet */, CursorState.fromModelSelections(selections));\r\n }\r\n getPrevEditOperationType() {\r\n return this._prevEditOperationType;\r\n }\r\n setPrevEditOperationType(type) {\r\n this._prevEditOperationType = type;\r\n }\r\n // ------ auxiliary handling logic\r\n _pushAutoClosedAction(autoClosedCharactersRanges, autoClosedEnclosingRanges) {\r\n let autoClosedCharactersDeltaDecorations = [];\r\n let autoClosedEnclosingDeltaDecorations = [];\r\n for (let i = 0, len = autoClosedCharactersRanges.length; i < len; i++) {\r\n autoClosedCharactersDeltaDecorations.push({\r\n range: autoClosedCharactersRanges[i],\r\n options: {\r\n inlineClassName: 'auto-closed-character',\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */\r\n }\r\n });\r\n autoClosedEnclosingDeltaDecorations.push({\r\n range: autoClosedEnclosingRanges[i],\r\n options: {\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */\r\n }\r\n });\r\n }\r\n const autoClosedCharactersDecorations = this._model.deltaDecorations([], autoClosedCharactersDeltaDecorations);\r\n const autoClosedEnclosingDecorations = this._model.deltaDecorations([], autoClosedEnclosingDeltaDecorations);\r\n this._autoClosedActions.push(new AutoClosedAction(this._model, autoClosedCharactersDecorations, autoClosedEnclosingDecorations));\r\n }\r\n _executeEditOperation(opResult) {\r\n if (!opResult) {\r\n // Nothing to execute\r\n return;\r\n }\r\n if (opResult.shouldPushStackElementBefore) {\r\n this._model.pushStackElement();\r\n }\r\n const result = CommandExecutor.executeCommands(this._model, this._cursors.getSelections(), opResult.commands);\r\n if (result) {\r\n // The commands were applied correctly\r\n this._interpretCommandResult(result);\r\n // Check for auto-closing closed characters\r\n let autoClosedCharactersRanges = [];\r\n let autoClosedEnclosingRanges = [];\r\n for (let i = 0; i < opResult.commands.length; i++) {\r\n const command = opResult.commands[i];\r\n if (command instanceof TypeWithAutoClosingCommand && command.enclosingRange && command.closeCharacterRange) {\r\n autoClosedCharactersRanges.push(command.closeCharacterRange);\r\n autoClosedEnclosingRanges.push(command.enclosingRange);\r\n }\r\n }\r\n if (autoClosedCharactersRanges.length > 0) {\r\n this._pushAutoClosedAction(autoClosedCharactersRanges, autoClosedEnclosingRanges);\r\n }\r\n this._prevEditOperationType = opResult.type;\r\n }\r\n if (opResult.shouldPushStackElementAfter) {\r\n this._model.pushStackElement();\r\n }\r\n }\r\n _interpretCommandResult(cursorState) {\r\n if (!cursorState || cursorState.length === 0) {\r\n cursorState = this._cursors.readSelectionFromMarkers();\r\n }\r\n this._columnSelectData = null;\r\n this._cursors.setSelections(cursorState);\r\n this._cursors.normalize();\r\n }\r\n // -----------------------------------------------------------------------------------------------------------\r\n // ----- emitting events\r\n _emitStateChangedIfNecessary(eventsCollector, source, reason, oldState, reachedMaxCursorCount) {\r\n const newState = new CursorModelState(this._model, this);\r\n if (newState.equals(oldState)) {\r\n return false;\r\n }\r\n const selections = this._cursors.getSelections();\r\n const viewSelections = this._cursors.getViewSelections();\r\n // Let the view get the event first.\r\n eventsCollector.emitViewEvent(new ViewCursorStateChangedEvent(viewSelections, selections));\r\n // Only after the view has been notified, let the rest of the world know...\r\n if (!oldState\r\n || oldState.cursorState.length !== newState.cursorState.length\r\n || newState.cursorState.some((newCursorState, i) => !newCursorState.modelState.equals(oldState.cursorState[i].modelState))) {\r\n const oldSelections = oldState ? oldState.cursorState.map(s => s.modelState.selection) : null;\r\n const oldModelVersionId = oldState ? oldState.modelVersionId : 0;\r\n eventsCollector.emitOutgoingEvent(new CursorStateChangedEvent(oldSelections, selections, oldModelVersionId, newState.modelVersionId, source || 'keyboard', reason, reachedMaxCursorCount));\r\n }\r\n return true;\r\n }\r\n // -----------------------------------------------------------------------------------------------------------\r\n // ----- handlers beyond this point\r\n _findAutoClosingPairs(edits) {\r\n if (!edits.length) {\r\n return null;\r\n }\r\n let indices = [];\r\n for (let i = 0, len = edits.length; i < len; i++) {\r\n const edit = edits[i];\r\n if (!edit.text || edit.text.indexOf('\\n') >= 0) {\r\n return null;\r\n }\r\n const m = edit.text.match(/([)\\]}>'\"`])([^)\\]}>'\"`]*)$/);\r\n if (!m) {\r\n return null;\r\n }\r\n const closeChar = m[1];\r\n const autoClosingPairsCandidates = this.context.cursorConfig.autoClosingPairsClose2.get(closeChar);\r\n if (!autoClosingPairsCandidates || autoClosingPairsCandidates.length !== 1) {\r\n return null;\r\n }\r\n const openChar = autoClosingPairsCandidates[0].open;\r\n const closeCharIndex = edit.text.length - m[2].length - 1;\r\n const openCharIndex = edit.text.lastIndexOf(openChar, closeCharIndex - 1);\r\n if (openCharIndex === -1) {\r\n return null;\r\n }\r\n indices.push([openCharIndex, closeCharIndex]);\r\n }\r\n return indices;\r\n }\r\n executeEdits(eventsCollector, source, edits, cursorStateComputer) {\r\n let autoClosingIndices = null;\r\n if (source === 'snippet') {\r\n autoClosingIndices = this._findAutoClosingPairs(edits);\r\n }\r\n if (autoClosingIndices) {\r\n edits[0]._isTracked = true;\r\n }\r\n let autoClosedCharactersRanges = [];\r\n let autoClosedEnclosingRanges = [];\r\n const selections = this._model.pushEditOperations(this.getSelections(), edits, (undoEdits) => {\r\n if (autoClosingIndices) {\r\n for (let i = 0, len = autoClosingIndices.length; i < len; i++) {\r\n const [openCharInnerIndex, closeCharInnerIndex] = autoClosingIndices[i];\r\n const undoEdit = undoEdits[i];\r\n const lineNumber = undoEdit.range.startLineNumber;\r\n const openCharIndex = undoEdit.range.startColumn - 1 + openCharInnerIndex;\r\n const closeCharIndex = undoEdit.range.startColumn - 1 + closeCharInnerIndex;\r\n autoClosedCharactersRanges.push(new Range(lineNumber, closeCharIndex + 1, lineNumber, closeCharIndex + 2));\r\n autoClosedEnclosingRanges.push(new Range(lineNumber, openCharIndex + 1, lineNumber, closeCharIndex + 2));\r\n }\r\n }\r\n const selections = cursorStateComputer(undoEdits);\r\n if (selections) {\r\n // Don't recover the selection from markers because\r\n // we know what it should be.\r\n this._isHandling = true;\r\n }\r\n return selections;\r\n });\r\n if (selections) {\r\n this._isHandling = false;\r\n this.setSelections(eventsCollector, source, selections);\r\n }\r\n if (autoClosedCharactersRanges.length > 0) {\r\n this._pushAutoClosedAction(autoClosedCharactersRanges, autoClosedEnclosingRanges);\r\n }\r\n }\r\n _executeEdit(callback, eventsCollector, source, cursorChangeReason = 0 /* NotSet */) {\r\n if (this.context.cursorConfig.readOnly) {\r\n // we cannot edit when read only...\r\n return;\r\n }\r\n const oldState = new CursorModelState(this._model, this);\r\n this._cursors.stopTrackingSelections();\r\n this._isHandling = true;\r\n try {\r\n this._cursors.ensureValidState();\r\n callback();\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n this._isHandling = false;\r\n this._cursors.startTrackingSelections();\r\n this._validateAutoClosedActions();\r\n if (this._emitStateChangedIfNecessary(eventsCollector, source, cursorChangeReason, oldState, false)) {\r\n this._revealPrimaryCursor(eventsCollector, source, 0 /* Simple */, true, 0 /* Smooth */);\r\n }\r\n }\r\n setIsDoingComposition(isDoingComposition) {\r\n this._isDoingComposition = isDoingComposition;\r\n }\r\n startComposition(eventsCollector) {\r\n this._selectionsWhenCompositionStarted = this.getSelections().slice(0);\r\n }\r\n endComposition(eventsCollector, source) {\r\n this._executeEdit(() => {\r\n if (source === 'keyboard') {\r\n // composition finishes, let's check if we need to auto complete if necessary.\r\n const autoClosedCharacters = AutoClosedAction.getAllAutoClosedCharacters(this._autoClosedActions);\r\n this._executeEditOperation(TypeOperations.compositionEndWithInterceptors(this._prevEditOperationType, this.context.cursorConfig, this._model, this._selectionsWhenCompositionStarted, this.getSelections(), autoClosedCharacters));\r\n this._selectionsWhenCompositionStarted = null;\r\n }\r\n }, eventsCollector, source);\r\n }\r\n type(eventsCollector, text, source) {\r\n this._executeEdit(() => {\r\n if (source === 'keyboard') {\r\n // If this event is coming straight from the keyboard, look for electric characters and enter\r\n const len = text.length;\r\n let offset = 0;\r\n while (offset < len) {\r\n const charLength = strings.nextCharLength(text, offset);\r\n const chr = text.substr(offset, charLength);\r\n // Here we must interpret each typed character individually\r\n const autoClosedCharacters = AutoClosedAction.getAllAutoClosedCharacters(this._autoClosedActions);\r\n this._executeEditOperation(TypeOperations.typeWithInterceptors(this._isDoingComposition, this._prevEditOperationType, this.context.cursorConfig, this._model, this.getSelections(), autoClosedCharacters, chr));\r\n offset += charLength;\r\n }\r\n }\r\n else {\r\n this._executeEditOperation(TypeOperations.typeWithoutInterceptors(this._prevEditOperationType, this.context.cursorConfig, this._model, this.getSelections(), text));\r\n }\r\n }, eventsCollector, source);\r\n }\r\n replacePreviousChar(eventsCollector, text, replaceCharCnt, source) {\r\n this._executeEdit(() => {\r\n this._executeEditOperation(TypeOperations.replacePreviousChar(this._prevEditOperationType, this.context.cursorConfig, this._model, this.getSelections(), text, replaceCharCnt));\r\n }, eventsCollector, source);\r\n }\r\n paste(eventsCollector, text, pasteOnNewLine, multicursorText, source) {\r\n this._executeEdit(() => {\r\n this._executeEditOperation(TypeOperations.paste(this.context.cursorConfig, this._model, this.getSelections(), text, pasteOnNewLine, multicursorText || []));\r\n }, eventsCollector, source, 4 /* Paste */);\r\n }\r\n cut(eventsCollector, source) {\r\n this._executeEdit(() => {\r\n this._executeEditOperation(DeleteOperations.cut(this.context.cursorConfig, this._model, this.getSelections()));\r\n }, eventsCollector, source);\r\n }\r\n executeCommand(eventsCollector, command, source) {\r\n this._executeEdit(() => {\r\n this._cursors.killSecondaryCursors();\r\n this._executeEditOperation(new EditOperationResult(0 /* Other */, [command], {\r\n shouldPushStackElementBefore: false,\r\n shouldPushStackElementAfter: false\r\n }));\r\n }, eventsCollector, source);\r\n }\r\n executeCommands(eventsCollector, commands, source) {\r\n this._executeEdit(() => {\r\n this._executeEditOperation(new EditOperationResult(0 /* Other */, commands, {\r\n shouldPushStackElementBefore: false,\r\n shouldPushStackElementAfter: false\r\n }));\r\n }, eventsCollector, source);\r\n }\r\n}\r\nCursor.MAX_CURSOR_COUNT = 10000;\r\nclass CommandExecutor {\r\n static executeCommands(model, selectionsBefore, commands) {\r\n const ctx = {\r\n model: model,\r\n selectionsBefore: selectionsBefore,\r\n trackedRanges: [],\r\n trackedRangesDirection: []\r\n };\r\n const result = this._innerExecuteCommands(ctx, commands);\r\n for (let i = 0, len = ctx.trackedRanges.length; i < len; i++) {\r\n ctx.model._setTrackedRange(ctx.trackedRanges[i], null, 0 /* AlwaysGrowsWhenTypingAtEdges */);\r\n }\r\n return result;\r\n }\r\n static _innerExecuteCommands(ctx, commands) {\r\n if (this._arrayIsEmpty(commands)) {\r\n return null;\r\n }\r\n const commandsData = this._getEditOperations(ctx, commands);\r\n if (commandsData.operations.length === 0) {\r\n return null;\r\n }\r\n const rawOperations = commandsData.operations;\r\n const loserCursorsMap = this._getLoserCursorMap(rawOperations);\r\n if (loserCursorsMap.hasOwnProperty('0')) {\r\n // These commands are very messed up\r\n console.warn('Ignoring commands');\r\n return null;\r\n }\r\n // Remove operations belonging to losing cursors\r\n let filteredOperations = [];\r\n for (let i = 0, len = rawOperations.length; i < len; i++) {\r\n if (!loserCursorsMap.hasOwnProperty(rawOperations[i].identifier.major.toString())) {\r\n filteredOperations.push(rawOperations[i]);\r\n }\r\n }\r\n // TODO@Alex: find a better way to do this.\r\n // give the hint that edit operations are tracked to the model\r\n if (commandsData.hadTrackedEditOperation && filteredOperations.length > 0) {\r\n filteredOperations[0]._isTracked = true;\r\n }\r\n let selectionsAfter = ctx.model.pushEditOperations(ctx.selectionsBefore, filteredOperations, (inverseEditOperations) => {\r\n let groupedInverseEditOperations = [];\r\n for (let i = 0; i < ctx.selectionsBefore.length; i++) {\r\n groupedInverseEditOperations[i] = [];\r\n }\r\n for (const op of inverseEditOperations) {\r\n if (!op.identifier) {\r\n // perhaps auto whitespace trim edits\r\n continue;\r\n }\r\n groupedInverseEditOperations[op.identifier.major].push(op);\r\n }\r\n const minorBasedSorter = (a, b) => {\r\n return a.identifier.minor - b.identifier.minor;\r\n };\r\n let cursorSelections = [];\r\n for (let i = 0; i < ctx.selectionsBefore.length; i++) {\r\n if (groupedInverseEditOperations[i].length > 0) {\r\n groupedInverseEditOperations[i].sort(minorBasedSorter);\r\n cursorSelections[i] = commands[i].computeCursorState(ctx.model, {\r\n getInverseEditOperations: () => {\r\n return groupedInverseEditOperations[i];\r\n },\r\n getTrackedSelection: (id) => {\r\n const idx = parseInt(id, 10);\r\n const range = ctx.model._getTrackedRange(ctx.trackedRanges[idx]);\r\n if (ctx.trackedRangesDirection[idx] === 0 /* LTR */) {\r\n return new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n return new Selection(range.endLineNumber, range.endColumn, range.startLineNumber, range.startColumn);\r\n }\r\n });\r\n }\r\n else {\r\n cursorSelections[i] = ctx.selectionsBefore[i];\r\n }\r\n }\r\n return cursorSelections;\r\n });\r\n if (!selectionsAfter) {\r\n selectionsAfter = ctx.selectionsBefore;\r\n }\r\n // Extract losing cursors\r\n let losingCursors = [];\r\n for (let losingCursorIndex in loserCursorsMap) {\r\n if (loserCursorsMap.hasOwnProperty(losingCursorIndex)) {\r\n losingCursors.push(parseInt(losingCursorIndex, 10));\r\n }\r\n }\r\n // Sort losing cursors descending\r\n losingCursors.sort((a, b) => {\r\n return b - a;\r\n });\r\n // Remove losing cursors\r\n for (const losingCursor of losingCursors) {\r\n selectionsAfter.splice(losingCursor, 1);\r\n }\r\n return selectionsAfter;\r\n }\r\n static _arrayIsEmpty(commands) {\r\n for (let i = 0, len = commands.length; i < len; i++) {\r\n if (commands[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static _getEditOperations(ctx, commands) {\r\n let operations = [];\r\n let hadTrackedEditOperation = false;\r\n for (let i = 0, len = commands.length; i < len; i++) {\r\n const command = commands[i];\r\n if (command) {\r\n const r = this._getEditOperationsFromCommand(ctx, i, command);\r\n operations = operations.concat(r.operations);\r\n hadTrackedEditOperation = hadTrackedEditOperation || r.hadTrackedEditOperation;\r\n }\r\n }\r\n return {\r\n operations: operations,\r\n hadTrackedEditOperation: hadTrackedEditOperation\r\n };\r\n }\r\n static _getEditOperationsFromCommand(ctx, majorIdentifier, command) {\r\n // This method acts as a transaction, if the command fails\r\n // everything it has done is ignored\r\n let operations = [];\r\n let operationMinor = 0;\r\n const addEditOperation = (range, text, forceMoveMarkers = false) => {\r\n if (Range.isEmpty(range) && text === '') {\r\n // This command wants to add a no-op => no thank you\r\n return;\r\n }\r\n operations.push({\r\n identifier: {\r\n major: majorIdentifier,\r\n minor: operationMinor++\r\n },\r\n range: range,\r\n text: text,\r\n forceMoveMarkers: forceMoveMarkers,\r\n isAutoWhitespaceEdit: command.insertsAutoWhitespace\r\n });\r\n };\r\n let hadTrackedEditOperation = false;\r\n const addTrackedEditOperation = (selection, text, forceMoveMarkers) => {\r\n hadTrackedEditOperation = true;\r\n addEditOperation(selection, text, forceMoveMarkers);\r\n };\r\n const trackSelection = (_selection, trackPreviousOnEmpty) => {\r\n const selection = Selection.liftSelection(_selection);\r\n let stickiness;\r\n if (selection.isEmpty()) {\r\n if (typeof trackPreviousOnEmpty === 'boolean') {\r\n if (trackPreviousOnEmpty) {\r\n stickiness = 2 /* GrowsOnlyWhenTypingBefore */;\r\n }\r\n else {\r\n stickiness = 3 /* GrowsOnlyWhenTypingAfter */;\r\n }\r\n }\r\n else {\r\n // Try to lock it with surrounding text\r\n const maxLineColumn = ctx.model.getLineMaxColumn(selection.startLineNumber);\r\n if (selection.startColumn === maxLineColumn) {\r\n stickiness = 2 /* GrowsOnlyWhenTypingBefore */;\r\n }\r\n else {\r\n stickiness = 3 /* GrowsOnlyWhenTypingAfter */;\r\n }\r\n }\r\n }\r\n else {\r\n stickiness = 1 /* NeverGrowsWhenTypingAtEdges */;\r\n }\r\n const l = ctx.trackedRanges.length;\r\n const id = ctx.model._setTrackedRange(null, selection, stickiness);\r\n ctx.trackedRanges[l] = id;\r\n ctx.trackedRangesDirection[l] = selection.getDirection();\r\n return l.toString();\r\n };\r\n const editOperationBuilder = {\r\n addEditOperation: addEditOperation,\r\n addTrackedEditOperation: addTrackedEditOperation,\r\n trackSelection: trackSelection\r\n };\r\n try {\r\n command.getEditOperations(ctx.model, editOperationBuilder);\r\n }\r\n catch (e) {\r\n // TODO@Alex use notification service if this should be user facing\r\n // e.friendlyMessage = nls.localize('corrupt.commands', \"Unexpected exception while executing command.\");\r\n onUnexpectedError(e);\r\n return {\r\n operations: [],\r\n hadTrackedEditOperation: false\r\n };\r\n }\r\n return {\r\n operations: operations,\r\n hadTrackedEditOperation: hadTrackedEditOperation\r\n };\r\n }\r\n static _getLoserCursorMap(operations) {\r\n // This is destructive on the array\r\n operations = operations.slice(0);\r\n // Sort operations with last one first\r\n operations.sort((a, b) => {\r\n // Note the minus!\r\n return -(Range.compareRangesUsingEnds(a.range, b.range));\r\n });\r\n // Operations can not overlap!\r\n let loserCursorsMap = {};\r\n for (let i = 1; i < operations.length; i++) {\r\n const previousOp = operations[i - 1];\r\n const currentOp = operations[i];\r\n if (Range.getStartPosition(previousOp.range).isBefore(Range.getEndPosition(currentOp.range))) {\r\n let loserMajor;\r\n if (previousOp.identifier.major > currentOp.identifier.major) {\r\n // previousOp loses the battle\r\n loserMajor = previousOp.identifier.major;\r\n }\r\n else {\r\n loserMajor = currentOp.identifier.major;\r\n }\r\n loserCursorsMap[loserMajor.toString()] = true;\r\n for (let j = 0; j < operations.length; j++) {\r\n if (operations[j].identifier.major === loserMajor) {\r\n operations.splice(j, 1);\r\n if (j < i) {\r\n i--;\r\n }\r\n j--;\r\n }\r\n }\r\n if (i > 0) {\r\n i--;\r\n }\r\n }\r\n }\r\n return loserCursorsMap;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CursorState } from './cursorCommon.js';\r\nimport { OneCursor } from './oneCursor.js';\r\nimport { Selection } from '../core/selection.js';\r\nexport class CursorCollection {\r\n constructor(context) {\r\n this.context = context;\r\n this.primaryCursor = new OneCursor(context);\r\n this.secondaryCursors = [];\r\n this.lastAddedCursorIndex = 0;\r\n }\r\n dispose() {\r\n this.primaryCursor.dispose(this.context);\r\n this.killSecondaryCursors();\r\n }\r\n startTrackingSelections() {\r\n this.primaryCursor.startTrackingSelection(this.context);\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n this.secondaryCursors[i].startTrackingSelection(this.context);\r\n }\r\n }\r\n stopTrackingSelections() {\r\n this.primaryCursor.stopTrackingSelection(this.context);\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n this.secondaryCursors[i].stopTrackingSelection(this.context);\r\n }\r\n }\r\n updateContext(context) {\r\n this.context = context;\r\n }\r\n ensureValidState() {\r\n this.primaryCursor.ensureValidState(this.context);\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n this.secondaryCursors[i].ensureValidState(this.context);\r\n }\r\n }\r\n readSelectionFromMarkers() {\r\n let result = [];\r\n result[0] = this.primaryCursor.readSelectionFromMarkers(this.context);\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n result[i + 1] = this.secondaryCursors[i].readSelectionFromMarkers(this.context);\r\n }\r\n return result;\r\n }\r\n getAll() {\r\n let result = [];\r\n result[0] = this.primaryCursor.asCursorState();\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n result[i + 1] = this.secondaryCursors[i].asCursorState();\r\n }\r\n return result;\r\n }\r\n getViewPositions() {\r\n let result = [];\r\n result[0] = this.primaryCursor.viewState.position;\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n result[i + 1] = this.secondaryCursors[i].viewState.position;\r\n }\r\n return result;\r\n }\r\n getTopMostViewPosition() {\r\n let result = this.primaryCursor.viewState.position;\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n const viewPosition = this.secondaryCursors[i].viewState.position;\r\n if (viewPosition.isBefore(result)) {\r\n result = viewPosition;\r\n }\r\n }\r\n return result;\r\n }\r\n getBottomMostViewPosition() {\r\n let result = this.primaryCursor.viewState.position;\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n const viewPosition = this.secondaryCursors[i].viewState.position;\r\n if (result.isBeforeOrEqual(viewPosition)) {\r\n result = viewPosition;\r\n }\r\n }\r\n return result;\r\n }\r\n getSelections() {\r\n let result = [];\r\n result[0] = this.primaryCursor.modelState.selection;\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n result[i + 1] = this.secondaryCursors[i].modelState.selection;\r\n }\r\n return result;\r\n }\r\n getViewSelections() {\r\n let result = [];\r\n result[0] = this.primaryCursor.viewState.selection;\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n result[i + 1] = this.secondaryCursors[i].viewState.selection;\r\n }\r\n return result;\r\n }\r\n setSelections(selections) {\r\n this.setStates(CursorState.fromModelSelections(selections));\r\n }\r\n getPrimaryCursor() {\r\n return this.primaryCursor.asCursorState();\r\n }\r\n setStates(states) {\r\n if (states === null) {\r\n return;\r\n }\r\n this.primaryCursor.setState(this.context, states[0].modelState, states[0].viewState);\r\n this._setSecondaryStates(states.slice(1));\r\n }\r\n /**\r\n * Creates or disposes secondary cursors as necessary to match the number of `secondarySelections`.\r\n */\r\n _setSecondaryStates(secondaryStates) {\r\n const secondaryCursorsLength = this.secondaryCursors.length;\r\n const secondaryStatesLength = secondaryStates.length;\r\n if (secondaryCursorsLength < secondaryStatesLength) {\r\n let createCnt = secondaryStatesLength - secondaryCursorsLength;\r\n for (let i = 0; i < createCnt; i++) {\r\n this._addSecondaryCursor();\r\n }\r\n }\r\n else if (secondaryCursorsLength > secondaryStatesLength) {\r\n let removeCnt = secondaryCursorsLength - secondaryStatesLength;\r\n for (let i = 0; i < removeCnt; i++) {\r\n this._removeSecondaryCursor(this.secondaryCursors.length - 1);\r\n }\r\n }\r\n for (let i = 0; i < secondaryStatesLength; i++) {\r\n this.secondaryCursors[i].setState(this.context, secondaryStates[i].modelState, secondaryStates[i].viewState);\r\n }\r\n }\r\n killSecondaryCursors() {\r\n this._setSecondaryStates([]);\r\n }\r\n _addSecondaryCursor() {\r\n this.secondaryCursors.push(new OneCursor(this.context));\r\n this.lastAddedCursorIndex = this.secondaryCursors.length;\r\n }\r\n getLastAddedCursorIndex() {\r\n if (this.secondaryCursors.length === 0 || this.lastAddedCursorIndex === 0) {\r\n return 0;\r\n }\r\n return this.lastAddedCursorIndex;\r\n }\r\n _removeSecondaryCursor(removeIndex) {\r\n if (this.lastAddedCursorIndex >= removeIndex + 1) {\r\n this.lastAddedCursorIndex--;\r\n }\r\n this.secondaryCursors[removeIndex].dispose(this.context);\r\n this.secondaryCursors.splice(removeIndex, 1);\r\n }\r\n _getAll() {\r\n let result = [];\r\n result[0] = this.primaryCursor;\r\n for (let i = 0, len = this.secondaryCursors.length; i < len; i++) {\r\n result[i + 1] = this.secondaryCursors[i];\r\n }\r\n return result;\r\n }\r\n normalize() {\r\n if (this.secondaryCursors.length === 0) {\r\n return;\r\n }\r\n let cursors = this._getAll();\r\n let sortedCursors = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n sortedCursors.push({\r\n index: i,\r\n selection: cursors[i].modelState.selection,\r\n });\r\n }\r\n sortedCursors.sort((a, b) => {\r\n if (a.selection.startLineNumber === b.selection.startLineNumber) {\r\n return a.selection.startColumn - b.selection.startColumn;\r\n }\r\n return a.selection.startLineNumber - b.selection.startLineNumber;\r\n });\r\n for (let sortedCursorIndex = 0; sortedCursorIndex < sortedCursors.length - 1; sortedCursorIndex++) {\r\n const current = sortedCursors[sortedCursorIndex];\r\n const next = sortedCursors[sortedCursorIndex + 1];\r\n const currentSelection = current.selection;\r\n const nextSelection = next.selection;\r\n if (!this.context.cursorConfig.multiCursorMergeOverlapping) {\r\n continue;\r\n }\r\n let shouldMergeCursors;\r\n if (nextSelection.isEmpty() || currentSelection.isEmpty()) {\r\n // Merge touching cursors if one of them is collapsed\r\n shouldMergeCursors = nextSelection.getStartPosition().isBeforeOrEqual(currentSelection.getEndPosition());\r\n }\r\n else {\r\n // Merge only overlapping cursors (i.e. allow touching ranges)\r\n shouldMergeCursors = nextSelection.getStartPosition().isBefore(currentSelection.getEndPosition());\r\n }\r\n if (shouldMergeCursors) {\r\n const winnerSortedCursorIndex = current.index < next.index ? sortedCursorIndex : sortedCursorIndex + 1;\r\n const looserSortedCursorIndex = current.index < next.index ? sortedCursorIndex + 1 : sortedCursorIndex;\r\n const looserIndex = sortedCursors[looserSortedCursorIndex].index;\r\n const winnerIndex = sortedCursors[winnerSortedCursorIndex].index;\r\n const looserSelection = sortedCursors[looserSortedCursorIndex].selection;\r\n const winnerSelection = sortedCursors[winnerSortedCursorIndex].selection;\r\n if (!looserSelection.equalsSelection(winnerSelection)) {\r\n const resultingRange = looserSelection.plusRange(winnerSelection);\r\n const looserSelectionIsLTR = (looserSelection.selectionStartLineNumber === looserSelection.startLineNumber && looserSelection.selectionStartColumn === looserSelection.startColumn);\r\n const winnerSelectionIsLTR = (winnerSelection.selectionStartLineNumber === winnerSelection.startLineNumber && winnerSelection.selectionStartColumn === winnerSelection.startColumn);\r\n // Give more importance to the last added cursor (think Ctrl-dragging + hitting another cursor)\r\n let resultingSelectionIsLTR;\r\n if (looserIndex === this.lastAddedCursorIndex) {\r\n resultingSelectionIsLTR = looserSelectionIsLTR;\r\n this.lastAddedCursorIndex = winnerIndex;\r\n }\r\n else {\r\n // Winner takes it all\r\n resultingSelectionIsLTR = winnerSelectionIsLTR;\r\n }\r\n let resultingSelection;\r\n if (resultingSelectionIsLTR) {\r\n resultingSelection = new Selection(resultingRange.startLineNumber, resultingRange.startColumn, resultingRange.endLineNumber, resultingRange.endColumn);\r\n }\r\n else {\r\n resultingSelection = new Selection(resultingRange.endLineNumber, resultingRange.endColumn, resultingRange.startLineNumber, resultingRange.startColumn);\r\n }\r\n sortedCursors[winnerSortedCursorIndex].selection = resultingSelection;\r\n const resultingState = CursorState.fromModelSelection(resultingSelection);\r\n cursors[winnerIndex].setState(this.context, resultingState.modelState, resultingState.viewState);\r\n }\r\n for (const sortedCursor of sortedCursors) {\r\n if (sortedCursor.index > looserIndex) {\r\n sortedCursor.index--;\r\n }\r\n }\r\n cursors.splice(looserIndex, 1);\r\n sortedCursors.splice(looserSortedCursorIndex, 1);\r\n this._removeSecondaryCursor(looserIndex - 1);\r\n sortedCursorIndex--;\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CursorColumns, SingleCursorState } from './cursorCommon.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nexport class ColumnSelection {\r\n static columnSelect(config, model, fromLineNumber, fromVisibleColumn, toLineNumber, toVisibleColumn) {\r\n let lineCount = Math.abs(toLineNumber - fromLineNumber) + 1;\r\n let reversed = (fromLineNumber > toLineNumber);\r\n let isRTL = (fromVisibleColumn > toVisibleColumn);\r\n let isLTR = (fromVisibleColumn < toVisibleColumn);\r\n let result = [];\r\n // console.log(`fromVisibleColumn: ${fromVisibleColumn}, toVisibleColumn: ${toVisibleColumn}`);\r\n for (let i = 0; i < lineCount; i++) {\r\n let lineNumber = fromLineNumber + (reversed ? -i : i);\r\n let startColumn = CursorColumns.columnFromVisibleColumn2(config, model, lineNumber, fromVisibleColumn);\r\n let endColumn = CursorColumns.columnFromVisibleColumn2(config, model, lineNumber, toVisibleColumn);\r\n let visibleStartColumn = CursorColumns.visibleColumnFromColumn2(config, model, new Position(lineNumber, startColumn));\r\n let visibleEndColumn = CursorColumns.visibleColumnFromColumn2(config, model, new Position(lineNumber, endColumn));\r\n // console.log(`lineNumber: ${lineNumber}: visibleStartColumn: ${visibleStartColumn}, visibleEndColumn: ${visibleEndColumn}`);\r\n if (isLTR) {\r\n if (visibleStartColumn > toVisibleColumn) {\r\n continue;\r\n }\r\n if (visibleEndColumn < fromVisibleColumn) {\r\n continue;\r\n }\r\n }\r\n if (isRTL) {\r\n if (visibleEndColumn > fromVisibleColumn) {\r\n continue;\r\n }\r\n if (visibleStartColumn < toVisibleColumn) {\r\n continue;\r\n }\r\n }\r\n result.push(new SingleCursorState(new Range(lineNumber, startColumn, lineNumber, startColumn), 0, new Position(lineNumber, endColumn), 0));\r\n }\r\n if (result.length === 0) {\r\n // We are after all the lines, so add cursor at the end of each line\r\n for (let i = 0; i < lineCount; i++) {\r\n const lineNumber = fromLineNumber + (reversed ? -i : i);\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n result.push(new SingleCursorState(new Range(lineNumber, maxColumn, lineNumber, maxColumn), 0, new Position(lineNumber, maxColumn), 0));\r\n }\r\n }\r\n return {\r\n viewStates: result,\r\n reversed: reversed,\r\n fromLineNumber: fromLineNumber,\r\n fromVisualColumn: fromVisibleColumn,\r\n toLineNumber: toLineNumber,\r\n toVisualColumn: toVisibleColumn\r\n };\r\n }\r\n static columnSelectLeft(config, model, prevColumnSelectData) {\r\n let toViewVisualColumn = prevColumnSelectData.toViewVisualColumn;\r\n if (toViewVisualColumn > 1) {\r\n toViewVisualColumn--;\r\n }\r\n return ColumnSelection.columnSelect(config, model, prevColumnSelectData.fromViewLineNumber, prevColumnSelectData.fromViewVisualColumn, prevColumnSelectData.toViewLineNumber, toViewVisualColumn);\r\n }\r\n static columnSelectRight(config, model, prevColumnSelectData) {\r\n let maxVisualViewColumn = 0;\r\n const minViewLineNumber = Math.min(prevColumnSelectData.fromViewLineNumber, prevColumnSelectData.toViewLineNumber);\r\n const maxViewLineNumber = Math.max(prevColumnSelectData.fromViewLineNumber, prevColumnSelectData.toViewLineNumber);\r\n for (let lineNumber = minViewLineNumber; lineNumber <= maxViewLineNumber; lineNumber++) {\r\n const lineMaxViewColumn = model.getLineMaxColumn(lineNumber);\r\n const lineMaxVisualViewColumn = CursorColumns.visibleColumnFromColumn2(config, model, new Position(lineNumber, lineMaxViewColumn));\r\n maxVisualViewColumn = Math.max(maxVisualViewColumn, lineMaxVisualViewColumn);\r\n }\r\n let toViewVisualColumn = prevColumnSelectData.toViewVisualColumn;\r\n if (toViewVisualColumn < maxVisualViewColumn) {\r\n toViewVisualColumn++;\r\n }\r\n return this.columnSelect(config, model, prevColumnSelectData.fromViewLineNumber, prevColumnSelectData.fromViewVisualColumn, prevColumnSelectData.toViewLineNumber, toViewVisualColumn);\r\n }\r\n static columnSelectUp(config, model, prevColumnSelectData, isPaged) {\r\n const linesCount = isPaged ? config.pageSize : 1;\r\n const toViewLineNumber = Math.max(1, prevColumnSelectData.toViewLineNumber - linesCount);\r\n return this.columnSelect(config, model, prevColumnSelectData.fromViewLineNumber, prevColumnSelectData.fromViewVisualColumn, toViewLineNumber, prevColumnSelectData.toViewVisualColumn);\r\n }\r\n static columnSelectDown(config, model, prevColumnSelectData, isPaged) {\r\n const linesCount = isPaged ? config.pageSize : 1;\r\n const toViewLineNumber = Math.min(model.getLineCount(), prevColumnSelectData.toViewLineNumber + linesCount);\r\n return this.columnSelect(config, model, prevColumnSelectData.fromViewLineNumber, prevColumnSelectData.fromViewVisualColumn, toViewLineNumber, prevColumnSelectData.toViewVisualColumn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { TextModel } from '../model/textModel.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nconst autoCloseAlways = () => true;\r\nconst autoCloseNever = () => false;\r\nconst autoCloseBeforeWhitespace = (chr) => (chr === ' ' || chr === '\\t');\r\nfunction appendEntry(target, key, value) {\r\n if (target.has(key)) {\r\n target.get(key).push(value);\r\n }\r\n else {\r\n target.set(key, [value]);\r\n }\r\n}\r\nexport class CursorConfiguration {\r\n constructor(languageIdentifier, modelOptions, configuration) {\r\n this._languageIdentifier = languageIdentifier;\r\n const options = configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n this.readOnly = options.get(72 /* readOnly */);\r\n this.tabSize = modelOptions.tabSize;\r\n this.indentSize = modelOptions.indentSize;\r\n this.insertSpaces = modelOptions.insertSpaces;\r\n this.lineHeight = options.get(51 /* lineHeight */);\r\n this.pageSize = Math.max(1, Math.floor(layoutInfo.height / this.lineHeight) - 2);\r\n this.useTabStops = options.get(104 /* useTabStops */);\r\n this.wordSeparators = options.get(105 /* wordSeparators */);\r\n this.emptySelectionClipboard = options.get(26 /* emptySelectionClipboard */);\r\n this.copyWithSyntaxHighlighting = options.get(16 /* copyWithSyntaxHighlighting */);\r\n this.multiCursorMergeOverlapping = options.get(60 /* multiCursorMergeOverlapping */);\r\n this.multiCursorPaste = options.get(62 /* multiCursorPaste */);\r\n this.autoClosingBrackets = options.get(5 /* autoClosingBrackets */);\r\n this.autoClosingQuotes = options.get(7 /* autoClosingQuotes */);\r\n this.autoClosingOvertype = options.get(6 /* autoClosingOvertype */);\r\n this.autoSurround = options.get(10 /* autoSurround */);\r\n this.autoIndent = options.get(8 /* autoIndent */);\r\n this.autoClosingPairsOpen2 = new Map();\r\n this.autoClosingPairsClose2 = new Map();\r\n this.surroundingPairs = {};\r\n this._electricChars = null;\r\n this.shouldAutoCloseBefore = {\r\n quote: CursorConfiguration._getShouldAutoClose(languageIdentifier, this.autoClosingQuotes),\r\n bracket: CursorConfiguration._getShouldAutoClose(languageIdentifier, this.autoClosingBrackets)\r\n };\r\n let autoClosingPairs = CursorConfiguration._getAutoClosingPairs(languageIdentifier);\r\n if (autoClosingPairs) {\r\n for (const pair of autoClosingPairs) {\r\n appendEntry(this.autoClosingPairsOpen2, pair.open.charAt(pair.open.length - 1), pair);\r\n if (pair.close.length === 1) {\r\n appendEntry(this.autoClosingPairsClose2, pair.close, pair);\r\n }\r\n }\r\n }\r\n let surroundingPairs = CursorConfiguration._getSurroundingPairs(languageIdentifier);\r\n if (surroundingPairs) {\r\n for (const pair of surroundingPairs) {\r\n this.surroundingPairs[pair.open] = pair.close;\r\n }\r\n }\r\n }\r\n static shouldRecreate(e) {\r\n return (e.hasChanged(117 /* layoutInfo */)\r\n || e.hasChanged(105 /* wordSeparators */)\r\n || e.hasChanged(26 /* emptySelectionClipboard */)\r\n || e.hasChanged(60 /* multiCursorMergeOverlapping */)\r\n || e.hasChanged(62 /* multiCursorPaste */)\r\n || e.hasChanged(5 /* autoClosingBrackets */)\r\n || e.hasChanged(7 /* autoClosingQuotes */)\r\n || e.hasChanged(6 /* autoClosingOvertype */)\r\n || e.hasChanged(10 /* autoSurround */)\r\n || e.hasChanged(104 /* useTabStops */)\r\n || e.hasChanged(51 /* lineHeight */)\r\n || e.hasChanged(72 /* readOnly */));\r\n }\r\n get electricChars() {\r\n if (!this._electricChars) {\r\n this._electricChars = {};\r\n let electricChars = CursorConfiguration._getElectricCharacters(this._languageIdentifier);\r\n if (electricChars) {\r\n for (const char of electricChars) {\r\n this._electricChars[char] = true;\r\n }\r\n }\r\n }\r\n return this._electricChars;\r\n }\r\n normalizeIndentation(str) {\r\n return TextModel.normalizeIndentation(str, this.indentSize, this.insertSpaces);\r\n }\r\n static _getElectricCharacters(languageIdentifier) {\r\n try {\r\n return LanguageConfigurationRegistry.getElectricCharacters(languageIdentifier.id);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n static _getAutoClosingPairs(languageIdentifier) {\r\n try {\r\n return LanguageConfigurationRegistry.getAutoClosingPairs(languageIdentifier.id);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n static _getShouldAutoClose(languageIdentifier, autoCloseConfig) {\r\n switch (autoCloseConfig) {\r\n case 'beforeWhitespace':\r\n return autoCloseBeforeWhitespace;\r\n case 'languageDefined':\r\n return CursorConfiguration._getLanguageDefinedShouldAutoClose(languageIdentifier);\r\n case 'always':\r\n return autoCloseAlways;\r\n case 'never':\r\n return autoCloseNever;\r\n }\r\n }\r\n static _getLanguageDefinedShouldAutoClose(languageIdentifier) {\r\n try {\r\n const autoCloseBeforeSet = LanguageConfigurationRegistry.getAutoCloseBeforeSet(languageIdentifier.id);\r\n return c => autoCloseBeforeSet.indexOf(c) !== -1;\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return autoCloseNever;\r\n }\r\n }\r\n static _getSurroundingPairs(languageIdentifier) {\r\n try {\r\n return LanguageConfigurationRegistry.getSurroundingPairs(languageIdentifier.id);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n}\r\n/**\r\n * Represents the cursor state on either the model or on the view model.\r\n */\r\nexport class SingleCursorState {\r\n constructor(selectionStart, selectionStartLeftoverVisibleColumns, position, leftoverVisibleColumns) {\r\n this.selectionStart = selectionStart;\r\n this.selectionStartLeftoverVisibleColumns = selectionStartLeftoverVisibleColumns;\r\n this.position = position;\r\n this.leftoverVisibleColumns = leftoverVisibleColumns;\r\n this.selection = SingleCursorState._computeSelection(this.selectionStart, this.position);\r\n }\r\n equals(other) {\r\n return (this.selectionStartLeftoverVisibleColumns === other.selectionStartLeftoverVisibleColumns\r\n && this.leftoverVisibleColumns === other.leftoverVisibleColumns\r\n && this.position.equals(other.position)\r\n && this.selectionStart.equalsRange(other.selectionStart));\r\n }\r\n hasSelection() {\r\n return (!this.selection.isEmpty() || !this.selectionStart.isEmpty());\r\n }\r\n move(inSelectionMode, lineNumber, column, leftoverVisibleColumns) {\r\n if (inSelectionMode) {\r\n // move just position\r\n return new SingleCursorState(this.selectionStart, this.selectionStartLeftoverVisibleColumns, new Position(lineNumber, column), leftoverVisibleColumns);\r\n }\r\n else {\r\n // move everything\r\n return new SingleCursorState(new Range(lineNumber, column, lineNumber, column), leftoverVisibleColumns, new Position(lineNumber, column), leftoverVisibleColumns);\r\n }\r\n }\r\n static _computeSelection(selectionStart, position) {\r\n let startLineNumber, startColumn, endLineNumber, endColumn;\r\n if (selectionStart.isEmpty()) {\r\n startLineNumber = selectionStart.startLineNumber;\r\n startColumn = selectionStart.startColumn;\r\n endLineNumber = position.lineNumber;\r\n endColumn = position.column;\r\n }\r\n else {\r\n if (position.isBeforeOrEqual(selectionStart.getStartPosition())) {\r\n startLineNumber = selectionStart.endLineNumber;\r\n startColumn = selectionStart.endColumn;\r\n endLineNumber = position.lineNumber;\r\n endColumn = position.column;\r\n }\r\n else {\r\n startLineNumber = selectionStart.startLineNumber;\r\n startColumn = selectionStart.startColumn;\r\n endLineNumber = position.lineNumber;\r\n endColumn = position.column;\r\n }\r\n }\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n}\r\nexport class CursorContext {\r\n constructor(model, coordinatesConverter, cursorConfig) {\r\n this.model = model;\r\n this.coordinatesConverter = coordinatesConverter;\r\n this.cursorConfig = cursorConfig;\r\n }\r\n}\r\nexport class PartialModelCursorState {\r\n constructor(modelState) {\r\n this.modelState = modelState;\r\n this.viewState = null;\r\n }\r\n}\r\nexport class PartialViewCursorState {\r\n constructor(viewState) {\r\n this.modelState = null;\r\n this.viewState = viewState;\r\n }\r\n}\r\nexport class CursorState {\r\n constructor(modelState, viewState) {\r\n this.modelState = modelState;\r\n this.viewState = viewState;\r\n }\r\n static fromModelState(modelState) {\r\n return new PartialModelCursorState(modelState);\r\n }\r\n static fromViewState(viewState) {\r\n return new PartialViewCursorState(viewState);\r\n }\r\n static fromModelSelection(modelSelection) {\r\n const selectionStartLineNumber = modelSelection.selectionStartLineNumber;\r\n const selectionStartColumn = modelSelection.selectionStartColumn;\r\n const positionLineNumber = modelSelection.positionLineNumber;\r\n const positionColumn = modelSelection.positionColumn;\r\n const modelState = new SingleCursorState(new Range(selectionStartLineNumber, selectionStartColumn, selectionStartLineNumber, selectionStartColumn), 0, new Position(positionLineNumber, positionColumn), 0);\r\n return CursorState.fromModelState(modelState);\r\n }\r\n static fromModelSelections(modelSelections) {\r\n let states = [];\r\n for (let i = 0, len = modelSelections.length; i < len; i++) {\r\n states[i] = this.fromModelSelection(modelSelections[i]);\r\n }\r\n return states;\r\n }\r\n equals(other) {\r\n return (this.viewState.equals(other.viewState) && this.modelState.equals(other.modelState));\r\n }\r\n}\r\nexport class EditOperationResult {\r\n constructor(type, commands, opts) {\r\n this.type = type;\r\n this.commands = commands;\r\n this.shouldPushStackElementBefore = opts.shouldPushStackElementBefore;\r\n this.shouldPushStackElementAfter = opts.shouldPushStackElementAfter;\r\n }\r\n}\r\n/**\r\n * Common operations that work and make sense both on the model and on the view model.\r\n */\r\nexport class CursorColumns {\r\n static visibleColumnFromColumn(lineContent, column, tabSize) {\r\n const lineContentLength = lineContent.length;\r\n const endOffset = column - 1 < lineContentLength ? column - 1 : lineContentLength;\r\n let result = 0;\r\n let i = 0;\r\n while (i < endOffset) {\r\n const codePoint = strings.getNextCodePoint(lineContent, endOffset, i);\r\n i += (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n if (codePoint === 9 /* Tab */) {\r\n result = CursorColumns.nextRenderTabStop(result, tabSize);\r\n }\r\n else {\r\n let graphemeBreakType = strings.getGraphemeBreakType(codePoint);\r\n while (i < endOffset) {\r\n const nextCodePoint = strings.getNextCodePoint(lineContent, endOffset, i);\r\n const nextGraphemeBreakType = strings.getGraphemeBreakType(nextCodePoint);\r\n if (strings.breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n i += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {\r\n result = result + 2;\r\n }\r\n else {\r\n result = result + 1;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n static visibleColumnFromColumn2(config, model, position) {\r\n return this.visibleColumnFromColumn(model.getLineContent(position.lineNumber), position.column, config.tabSize);\r\n }\r\n static columnFromVisibleColumn(lineContent, visibleColumn, tabSize) {\r\n if (visibleColumn <= 0) {\r\n return 1;\r\n }\r\n const lineLength = lineContent.length;\r\n let beforeVisibleColumn = 0;\r\n let beforeColumn = 1;\r\n let i = 0;\r\n while (i < lineLength) {\r\n const codePoint = strings.getNextCodePoint(lineContent, lineLength, i);\r\n i += (codePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let afterVisibleColumn;\r\n if (codePoint === 9 /* Tab */) {\r\n afterVisibleColumn = CursorColumns.nextRenderTabStop(beforeVisibleColumn, tabSize);\r\n }\r\n else {\r\n let graphemeBreakType = strings.getGraphemeBreakType(codePoint);\r\n while (i < lineLength) {\r\n const nextCodePoint = strings.getNextCodePoint(lineContent, lineLength, i);\r\n const nextGraphemeBreakType = strings.getGraphemeBreakType(nextCodePoint);\r\n if (strings.breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n i += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n if (strings.isFullWidthCharacter(codePoint) || strings.isEmojiImprecise(codePoint)) {\r\n afterVisibleColumn = beforeVisibleColumn + 2;\r\n }\r\n else {\r\n afterVisibleColumn = beforeVisibleColumn + 1;\r\n }\r\n }\r\n const afterColumn = i + 1;\r\n if (afterVisibleColumn >= visibleColumn) {\r\n const beforeDelta = visibleColumn - beforeVisibleColumn;\r\n const afterDelta = afterVisibleColumn - visibleColumn;\r\n if (afterDelta < beforeDelta) {\r\n return afterColumn;\r\n }\r\n else {\r\n return beforeColumn;\r\n }\r\n }\r\n beforeVisibleColumn = afterVisibleColumn;\r\n beforeColumn = afterColumn;\r\n }\r\n // walked the entire string\r\n return lineLength + 1;\r\n }\r\n static columnFromVisibleColumn2(config, model, lineNumber, visibleColumn) {\r\n let result = this.columnFromVisibleColumn(model.getLineContent(lineNumber), visibleColumn, config.tabSize);\r\n let minColumn = model.getLineMinColumn(lineNumber);\r\n if (result < minColumn) {\r\n return minColumn;\r\n }\r\n let maxColumn = model.getLineMaxColumn(lineNumber);\r\n if (result > maxColumn) {\r\n return maxColumn;\r\n }\r\n return result;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as oposed to the regular 1-based columns)\r\n */\r\n static nextRenderTabStop(visibleColumn, tabSize) {\r\n return visibleColumn + tabSize - visibleColumn % tabSize;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as oposed to the regular 1-based columns)\r\n */\r\n static nextIndentTabStop(visibleColumn, indentSize) {\r\n return visibleColumn + indentSize - visibleColumn % indentSize;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as oposed to the regular 1-based columns)\r\n */\r\n static prevRenderTabStop(column, tabSize) {\r\n return column - 1 - (column - 1) % tabSize;\r\n }\r\n /**\r\n * ATTENTION: This works with 0-based columns (as oposed to the regular 1-based columns)\r\n */\r\n static prevIndentTabStop(column, indentSize) {\r\n return column - 1 - (column - 1) % indentSize;\r\n }\r\n}\r\nexport function isQuote(ch) {\r\n return (ch === '\\'' || ch === '\"' || ch === '`');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { ReplaceCommand } from '../commands/replaceCommand.js';\r\nimport { CursorColumns, EditOperationResult, isQuote } from './cursorCommon.js';\r\nimport { MoveOperations } from './cursorMoveOperations.js';\r\nimport { Range } from '../core/range.js';\r\nexport class DeleteOperations {\r\n static deleteRight(prevEditOperationType, config, model, selections) {\r\n let commands = [];\r\n let shouldPushStackElementBefore = (prevEditOperationType !== 3 /* DeletingRight */);\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n let deleteSelection = selection;\r\n if (deleteSelection.isEmpty()) {\r\n let position = selection.getPosition();\r\n let rightOfPosition = MoveOperations.right(config, model, position.lineNumber, position.column);\r\n deleteSelection = new Range(rightOfPosition.lineNumber, rightOfPosition.column, position.lineNumber, position.column);\r\n }\r\n if (deleteSelection.isEmpty()) {\r\n // Probably at end of file => ignore\r\n commands[i] = null;\r\n continue;\r\n }\r\n if (deleteSelection.startLineNumber !== deleteSelection.endLineNumber) {\r\n shouldPushStackElementBefore = true;\r\n }\r\n commands[i] = new ReplaceCommand(deleteSelection, '');\r\n }\r\n return [shouldPushStackElementBefore, commands];\r\n }\r\n static _isAutoClosingPairDelete(config, model, selections) {\r\n if (config.autoClosingBrackets === 'never' && config.autoClosingQuotes === 'never') {\r\n return false;\r\n }\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n const position = selection.getPosition();\r\n if (!selection.isEmpty()) {\r\n return false;\r\n }\r\n const lineText = model.getLineContent(position.lineNumber);\r\n const character = lineText[position.column - 2];\r\n const autoClosingPairCandidates = config.autoClosingPairsOpen2.get(character);\r\n if (!autoClosingPairCandidates) {\r\n return false;\r\n }\r\n if (isQuote(character)) {\r\n if (config.autoClosingQuotes === 'never') {\r\n return false;\r\n }\r\n }\r\n else {\r\n if (config.autoClosingBrackets === 'never') {\r\n return false;\r\n }\r\n }\r\n const afterCharacter = lineText[position.column - 1];\r\n let foundAutoClosingPair = false;\r\n for (const autoClosingPairCandidate of autoClosingPairCandidates) {\r\n if (autoClosingPairCandidate.open === character && autoClosingPairCandidate.close === afterCharacter) {\r\n foundAutoClosingPair = true;\r\n }\r\n }\r\n if (!foundAutoClosingPair) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static _runAutoClosingPairDelete(config, model, selections) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const position = selections[i].getPosition();\r\n const deleteSelection = new Range(position.lineNumber, position.column - 1, position.lineNumber, position.column + 1);\r\n commands[i] = new ReplaceCommand(deleteSelection, '');\r\n }\r\n return [true, commands];\r\n }\r\n static deleteLeft(prevEditOperationType, config, model, selections) {\r\n if (this._isAutoClosingPairDelete(config, model, selections)) {\r\n return this._runAutoClosingPairDelete(config, model, selections);\r\n }\r\n let commands = [];\r\n let shouldPushStackElementBefore = (prevEditOperationType !== 2 /* DeletingLeft */);\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n let deleteSelection = selection;\r\n if (deleteSelection.isEmpty()) {\r\n let position = selection.getPosition();\r\n if (config.useTabStops && position.column > 1) {\r\n let lineContent = model.getLineContent(position.lineNumber);\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\r\n let lastIndentationColumn = (firstNonWhitespaceIndex === -1\r\n ? /* entire string is whitespace */ lineContent.length + 1\r\n : firstNonWhitespaceIndex + 1);\r\n if (position.column <= lastIndentationColumn) {\r\n let fromVisibleColumn = CursorColumns.visibleColumnFromColumn2(config, model, position);\r\n let toVisibleColumn = CursorColumns.prevIndentTabStop(fromVisibleColumn, config.indentSize);\r\n let toColumn = CursorColumns.columnFromVisibleColumn2(config, model, position.lineNumber, toVisibleColumn);\r\n deleteSelection = new Range(position.lineNumber, toColumn, position.lineNumber, position.column);\r\n }\r\n else {\r\n deleteSelection = new Range(position.lineNumber, position.column - 1, position.lineNumber, position.column);\r\n }\r\n }\r\n else {\r\n let leftOfPosition = MoveOperations.left(config, model, position.lineNumber, position.column);\r\n deleteSelection = new Range(leftOfPosition.lineNumber, leftOfPosition.column, position.lineNumber, position.column);\r\n }\r\n }\r\n if (deleteSelection.isEmpty()) {\r\n // Probably at beginning of file => ignore\r\n commands[i] = null;\r\n continue;\r\n }\r\n if (deleteSelection.startLineNumber !== deleteSelection.endLineNumber) {\r\n shouldPushStackElementBefore = true;\r\n }\r\n commands[i] = new ReplaceCommand(deleteSelection, '');\r\n }\r\n return [shouldPushStackElementBefore, commands];\r\n }\r\n static cut(config, model, selections) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n if (selection.isEmpty()) {\r\n if (config.emptySelectionClipboard) {\r\n // This is a full line cut\r\n let position = selection.getPosition();\r\n let startLineNumber, startColumn, endLineNumber, endColumn;\r\n if (position.lineNumber < model.getLineCount()) {\r\n // Cutting a line in the middle of the model\r\n startLineNumber = position.lineNumber;\r\n startColumn = 1;\r\n endLineNumber = position.lineNumber + 1;\r\n endColumn = 1;\r\n }\r\n else if (position.lineNumber > 1) {\r\n // Cutting the last line & there are more than 1 lines in the model\r\n startLineNumber = position.lineNumber - 1;\r\n startColumn = model.getLineMaxColumn(position.lineNumber - 1);\r\n endLineNumber = position.lineNumber;\r\n endColumn = model.getLineMaxColumn(position.lineNumber);\r\n }\r\n else {\r\n // Cutting the single line that the model contains\r\n startLineNumber = position.lineNumber;\r\n startColumn = 1;\r\n endLineNumber = position.lineNumber;\r\n endColumn = model.getLineMaxColumn(position.lineNumber);\r\n }\r\n let deleteSelection = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n if (!deleteSelection.isEmpty()) {\r\n commands[i] = new ReplaceCommand(deleteSelection, '');\r\n }\r\n else {\r\n commands[i] = null;\r\n }\r\n }\r\n else {\r\n // Cannot cut empty selection\r\n commands[i] = null;\r\n }\r\n }\r\n else {\r\n commands[i] = new ReplaceCommand(selection, '');\r\n }\r\n }\r\n return new EditOperationResult(0 /* Other */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: true\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as types from '../../../base/common/types.js';\r\nimport { CursorState, SingleCursorState } from './cursorCommon.js';\r\nimport { MoveOperations } from './cursorMoveOperations.js';\r\nimport { WordOperations } from './cursorWordOperations.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nexport class CursorMoveCommands {\r\n static addCursorDown(viewModel, cursors, useLogicalLine) {\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState);\r\n if (useLogicalLine) {\r\n result[resultLen++] = CursorState.fromModelState(MoveOperations.translateDown(viewModel.cursorConfig, viewModel.model, cursor.modelState));\r\n }\r\n else {\r\n result[resultLen++] = CursorState.fromViewState(MoveOperations.translateDown(viewModel.cursorConfig, viewModel, cursor.viewState));\r\n }\r\n }\r\n return result;\r\n }\r\n static addCursorUp(viewModel, cursors, useLogicalLine) {\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[resultLen++] = new CursorState(cursor.modelState, cursor.viewState);\r\n if (useLogicalLine) {\r\n result[resultLen++] = CursorState.fromModelState(MoveOperations.translateUp(viewModel.cursorConfig, viewModel.model, cursor.modelState));\r\n }\r\n else {\r\n result[resultLen++] = CursorState.fromViewState(MoveOperations.translateUp(viewModel.cursorConfig, viewModel, cursor.viewState));\r\n }\r\n }\r\n return result;\r\n }\r\n static moveToBeginningOfLine(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = this._moveToLineStart(viewModel, cursor, inSelectionMode);\r\n }\r\n return result;\r\n }\r\n static _moveToLineStart(viewModel, cursor, inSelectionMode) {\r\n const currentViewStateColumn = cursor.viewState.position.column;\r\n const currentModelStateColumn = cursor.modelState.position.column;\r\n const isFirstLineOfWrappedLine = currentViewStateColumn === currentModelStateColumn;\r\n const currentViewStatelineNumber = cursor.viewState.position.lineNumber;\r\n const firstNonBlankColumn = viewModel.getLineFirstNonWhitespaceColumn(currentViewStatelineNumber);\r\n const isBeginningOfViewLine = currentViewStateColumn === firstNonBlankColumn;\r\n if (!isFirstLineOfWrappedLine && !isBeginningOfViewLine) {\r\n return this._moveToLineStartByView(viewModel, cursor, inSelectionMode);\r\n }\r\n else {\r\n return this._moveToLineStartByModel(viewModel, cursor, inSelectionMode);\r\n }\r\n }\r\n static _moveToLineStartByView(viewModel, cursor, inSelectionMode) {\r\n return CursorState.fromViewState(MoveOperations.moveToBeginningOfLine(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode));\r\n }\r\n static _moveToLineStartByModel(viewModel, cursor, inSelectionMode) {\r\n return CursorState.fromModelState(MoveOperations.moveToBeginningOfLine(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode));\r\n }\r\n static moveToEndOfLine(viewModel, cursors, inSelectionMode, sticky) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = this._moveToLineEnd(viewModel, cursor, inSelectionMode, sticky);\r\n }\r\n return result;\r\n }\r\n static _moveToLineEnd(viewModel, cursor, inSelectionMode, sticky) {\r\n const viewStatePosition = cursor.viewState.position;\r\n const viewModelMaxColumn = viewModel.getLineMaxColumn(viewStatePosition.lineNumber);\r\n const isEndOfViewLine = viewStatePosition.column === viewModelMaxColumn;\r\n const modelStatePosition = cursor.modelState.position;\r\n const modelMaxColumn = viewModel.model.getLineMaxColumn(modelStatePosition.lineNumber);\r\n const isEndLineOfWrappedLine = viewModelMaxColumn - viewStatePosition.column === modelMaxColumn - modelStatePosition.column;\r\n if (isEndOfViewLine || isEndLineOfWrappedLine) {\r\n return this._moveToLineEndByModel(viewModel, cursor, inSelectionMode, sticky);\r\n }\r\n else {\r\n return this._moveToLineEndByView(viewModel, cursor, inSelectionMode, sticky);\r\n }\r\n }\r\n static _moveToLineEndByView(viewModel, cursor, inSelectionMode, sticky) {\r\n return CursorState.fromViewState(MoveOperations.moveToEndOfLine(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, sticky));\r\n }\r\n static _moveToLineEndByModel(viewModel, cursor, inSelectionMode, sticky) {\r\n return CursorState.fromModelState(MoveOperations.moveToEndOfLine(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode, sticky));\r\n }\r\n static expandLineSelection(viewModel, cursors) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const startLineNumber = cursor.modelState.selection.startLineNumber;\r\n const lineCount = viewModel.model.getLineCount();\r\n let endLineNumber = cursor.modelState.selection.endLineNumber;\r\n let endColumn;\r\n if (endLineNumber === lineCount) {\r\n endColumn = viewModel.model.getLineMaxColumn(lineCount);\r\n }\r\n else {\r\n endLineNumber++;\r\n endColumn = 1;\r\n }\r\n result[i] = CursorState.fromModelState(new SingleCursorState(new Range(startLineNumber, 1, startLineNumber, 1), 0, new Position(endLineNumber, endColumn), 0));\r\n }\r\n return result;\r\n }\r\n static moveToBeginningOfBuffer(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = CursorState.fromModelState(MoveOperations.moveToBeginningOfBuffer(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode));\r\n }\r\n return result;\r\n }\r\n static moveToEndOfBuffer(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = CursorState.fromModelState(MoveOperations.moveToEndOfBuffer(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode));\r\n }\r\n return result;\r\n }\r\n static selectAll(viewModel, cursor) {\r\n const lineCount = viewModel.model.getLineCount();\r\n const maxColumn = viewModel.model.getLineMaxColumn(lineCount);\r\n return CursorState.fromModelState(new SingleCursorState(new Range(1, 1, 1, 1), 0, new Position(lineCount, maxColumn), 0));\r\n }\r\n static line(viewModel, cursor, inSelectionMode, _position, _viewPosition) {\r\n const position = viewModel.model.validatePosition(_position);\r\n const viewPosition = (_viewPosition\r\n ? viewModel.coordinatesConverter.validateViewPosition(new Position(_viewPosition.lineNumber, _viewPosition.column), position)\r\n : viewModel.coordinatesConverter.convertModelPositionToViewPosition(position));\r\n if (!inSelectionMode || !cursor.modelState.hasSelection()) {\r\n // Entering line selection for the first time\r\n const lineCount = viewModel.model.getLineCount();\r\n let selectToLineNumber = position.lineNumber + 1;\r\n let selectToColumn = 1;\r\n if (selectToLineNumber > lineCount) {\r\n selectToLineNumber = lineCount;\r\n selectToColumn = viewModel.model.getLineMaxColumn(selectToLineNumber);\r\n }\r\n return CursorState.fromModelState(new SingleCursorState(new Range(position.lineNumber, 1, selectToLineNumber, selectToColumn), 0, new Position(selectToLineNumber, selectToColumn), 0));\r\n }\r\n // Continuing line selection\r\n const enteringLineNumber = cursor.modelState.selectionStart.getStartPosition().lineNumber;\r\n if (position.lineNumber < enteringLineNumber) {\r\n return CursorState.fromViewState(cursor.viewState.move(cursor.modelState.hasSelection(), viewPosition.lineNumber, 1, 0));\r\n }\r\n else if (position.lineNumber > enteringLineNumber) {\r\n const lineCount = viewModel.getLineCount();\r\n let selectToViewLineNumber = viewPosition.lineNumber + 1;\r\n let selectToViewColumn = 1;\r\n if (selectToViewLineNumber > lineCount) {\r\n selectToViewLineNumber = lineCount;\r\n selectToViewColumn = viewModel.getLineMaxColumn(selectToViewLineNumber);\r\n }\r\n return CursorState.fromViewState(cursor.viewState.move(cursor.modelState.hasSelection(), selectToViewLineNumber, selectToViewColumn, 0));\r\n }\r\n else {\r\n const endPositionOfSelectionStart = cursor.modelState.selectionStart.getEndPosition();\r\n return CursorState.fromModelState(cursor.modelState.move(cursor.modelState.hasSelection(), endPositionOfSelectionStart.lineNumber, endPositionOfSelectionStart.column, 0));\r\n }\r\n }\r\n static word(viewModel, cursor, inSelectionMode, _position) {\r\n const position = viewModel.model.validatePosition(_position);\r\n return CursorState.fromModelState(WordOperations.word(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode, position));\r\n }\r\n static cancelSelection(viewModel, cursor) {\r\n if (!cursor.modelState.hasSelection()) {\r\n return new CursorState(cursor.modelState, cursor.viewState);\r\n }\r\n const lineNumber = cursor.viewState.position.lineNumber;\r\n const column = cursor.viewState.position.column;\r\n return CursorState.fromViewState(new SingleCursorState(new Range(lineNumber, column, lineNumber, column), 0, new Position(lineNumber, column), 0));\r\n }\r\n static moveTo(viewModel, cursor, inSelectionMode, _position, _viewPosition) {\r\n const position = viewModel.model.validatePosition(_position);\r\n const viewPosition = (_viewPosition\r\n ? viewModel.coordinatesConverter.validateViewPosition(new Position(_viewPosition.lineNumber, _viewPosition.column), position)\r\n : viewModel.coordinatesConverter.convertModelPositionToViewPosition(position));\r\n return CursorState.fromViewState(cursor.viewState.move(inSelectionMode, viewPosition.lineNumber, viewPosition.column, 0));\r\n }\r\n static simpleMove(viewModel, cursors, direction, inSelectionMode, value, unit) {\r\n switch (direction) {\r\n case 0 /* Left */: {\r\n if (unit === 4 /* HalfLine */) {\r\n // Move left by half the current line length\r\n return this._moveHalfLineLeft(viewModel, cursors, inSelectionMode);\r\n }\r\n else {\r\n // Move left by `moveParams.value` columns\r\n return this._moveLeft(viewModel, cursors, inSelectionMode, value);\r\n }\r\n }\r\n case 1 /* Right */: {\r\n if (unit === 4 /* HalfLine */) {\r\n // Move right by half the current line length\r\n return this._moveHalfLineRight(viewModel, cursors, inSelectionMode);\r\n }\r\n else {\r\n // Move right by `moveParams.value` columns\r\n return this._moveRight(viewModel, cursors, inSelectionMode, value);\r\n }\r\n }\r\n case 2 /* Up */: {\r\n if (unit === 2 /* WrappedLine */) {\r\n // Move up by view lines\r\n return this._moveUpByViewLines(viewModel, cursors, inSelectionMode, value);\r\n }\r\n else {\r\n // Move up by model lines\r\n return this._moveUpByModelLines(viewModel, cursors, inSelectionMode, value);\r\n }\r\n }\r\n case 3 /* Down */: {\r\n if (unit === 2 /* WrappedLine */) {\r\n // Move down by view lines\r\n return this._moveDownByViewLines(viewModel, cursors, inSelectionMode, value);\r\n }\r\n else {\r\n // Move down by model lines\r\n return this._moveDownByModelLines(viewModel, cursors, inSelectionMode, value);\r\n }\r\n }\r\n case 4 /* WrappedLineStart */: {\r\n // Move to the beginning of the current view line\r\n return this._moveToViewMinColumn(viewModel, cursors, inSelectionMode);\r\n }\r\n case 5 /* WrappedLineFirstNonWhitespaceCharacter */: {\r\n // Move to the first non-whitespace column of the current view line\r\n return this._moveToViewFirstNonWhitespaceColumn(viewModel, cursors, inSelectionMode);\r\n }\r\n case 6 /* WrappedLineColumnCenter */: {\r\n // Move to the \"center\" of the current view line\r\n return this._moveToViewCenterColumn(viewModel, cursors, inSelectionMode);\r\n }\r\n case 7 /* WrappedLineEnd */: {\r\n // Move to the end of the current view line\r\n return this._moveToViewMaxColumn(viewModel, cursors, inSelectionMode);\r\n }\r\n case 8 /* WrappedLineLastNonWhitespaceCharacter */: {\r\n // Move to the last non-whitespace column of the current view line\r\n return this._moveToViewLastNonWhitespaceColumn(viewModel, cursors, inSelectionMode);\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n static viewportMove(viewModel, cursors, direction, inSelectionMode, value) {\r\n const visibleViewRange = viewModel.getCompletelyVisibleViewRange();\r\n const visibleModelRange = viewModel.coordinatesConverter.convertViewRangeToModelRange(visibleViewRange);\r\n switch (direction) {\r\n case 9 /* ViewPortTop */: {\r\n // Move to the nth line start in the viewport (from the top)\r\n const modelLineNumber = this._firstLineNumberInRange(viewModel.model, visibleModelRange, value);\r\n const modelColumn = viewModel.model.getLineFirstNonWhitespaceColumn(modelLineNumber);\r\n return [this._moveToModelPosition(viewModel, cursors[0], inSelectionMode, modelLineNumber, modelColumn)];\r\n }\r\n case 11 /* ViewPortBottom */: {\r\n // Move to the nth line start in the viewport (from the bottom)\r\n const modelLineNumber = this._lastLineNumberInRange(viewModel.model, visibleModelRange, value);\r\n const modelColumn = viewModel.model.getLineFirstNonWhitespaceColumn(modelLineNumber);\r\n return [this._moveToModelPosition(viewModel, cursors[0], inSelectionMode, modelLineNumber, modelColumn)];\r\n }\r\n case 10 /* ViewPortCenter */: {\r\n // Move to the line start in the viewport center\r\n const modelLineNumber = Math.round((visibleModelRange.startLineNumber + visibleModelRange.endLineNumber) / 2);\r\n const modelColumn = viewModel.model.getLineFirstNonWhitespaceColumn(modelLineNumber);\r\n return [this._moveToModelPosition(viewModel, cursors[0], inSelectionMode, modelLineNumber, modelColumn)];\r\n }\r\n case 12 /* ViewPortIfOutside */: {\r\n // Move to a position inside the viewport\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = this.findPositionInViewportIfOutside(viewModel, cursor, visibleViewRange, inSelectionMode);\r\n }\r\n return result;\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n static findPositionInViewportIfOutside(viewModel, cursor, visibleViewRange, inSelectionMode) {\r\n let viewLineNumber = cursor.viewState.position.lineNumber;\r\n if (visibleViewRange.startLineNumber <= viewLineNumber && viewLineNumber <= visibleViewRange.endLineNumber - 1) {\r\n // Nothing to do, cursor is in viewport\r\n return new CursorState(cursor.modelState, cursor.viewState);\r\n }\r\n else {\r\n if (viewLineNumber > visibleViewRange.endLineNumber - 1) {\r\n viewLineNumber = visibleViewRange.endLineNumber - 1;\r\n }\r\n if (viewLineNumber < visibleViewRange.startLineNumber) {\r\n viewLineNumber = visibleViewRange.startLineNumber;\r\n }\r\n const viewColumn = viewModel.getLineFirstNonWhitespaceColumn(viewLineNumber);\r\n return this._moveToViewPosition(viewModel, cursor, inSelectionMode, viewLineNumber, viewColumn);\r\n }\r\n }\r\n /**\r\n * Find the nth line start included in the range (from the start).\r\n */\r\n static _firstLineNumberInRange(model, range, count) {\r\n let startLineNumber = range.startLineNumber;\r\n if (range.startColumn !== model.getLineMinColumn(startLineNumber)) {\r\n // Move on to the second line if the first line start is not included in the range\r\n startLineNumber++;\r\n }\r\n return Math.min(range.endLineNumber, startLineNumber + count - 1);\r\n }\r\n /**\r\n * Find the nth line start included in the range (from the end).\r\n */\r\n static _lastLineNumberInRange(model, range, count) {\r\n let startLineNumber = range.startLineNumber;\r\n if (range.startColumn !== model.getLineMinColumn(startLineNumber)) {\r\n // Move on to the second line if the first line start is not included in the range\r\n startLineNumber++;\r\n }\r\n return Math.max(startLineNumber, range.endLineNumber - count + 1);\r\n }\r\n static _moveLeft(viewModel, cursors, inSelectionMode, noOfColumns) {\r\n const hasMultipleCursors = (cursors.length > 1);\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const skipWrappingPointStop = hasMultipleCursors || !cursor.viewState.hasSelection();\r\n let newViewState = MoveOperations.moveLeft(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, noOfColumns);\r\n if (skipWrappingPointStop && noOfColumns === 1 && newViewState.position.lineNumber !== cursor.viewState.position.lineNumber) {\r\n // moved over to the previous view line\r\n const newViewModelPosition = viewModel.coordinatesConverter.convertViewPositionToModelPosition(newViewState.position);\r\n if (newViewModelPosition.lineNumber === cursor.modelState.position.lineNumber) {\r\n // stayed on the same model line => pass wrapping point where 2 view positions map to a single model position\r\n newViewState = MoveOperations.moveLeft(viewModel.cursorConfig, viewModel, newViewState, inSelectionMode, 1);\r\n }\r\n }\r\n result[i] = CursorState.fromViewState(newViewState);\r\n }\r\n return result;\r\n }\r\n static _moveHalfLineLeft(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const halfLine = Math.round(viewModel.getLineContent(viewLineNumber).length / 2);\r\n result[i] = CursorState.fromViewState(MoveOperations.moveLeft(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, halfLine));\r\n }\r\n return result;\r\n }\r\n static _moveRight(viewModel, cursors, inSelectionMode, noOfColumns) {\r\n const hasMultipleCursors = (cursors.length > 1);\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const skipWrappingPointStop = hasMultipleCursors || !cursor.viewState.hasSelection();\r\n let newViewState = MoveOperations.moveRight(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, noOfColumns);\r\n if (skipWrappingPointStop && noOfColumns === 1 && newViewState.position.lineNumber !== cursor.viewState.position.lineNumber) {\r\n // moved over to the next view line\r\n const newViewModelPosition = viewModel.coordinatesConverter.convertViewPositionToModelPosition(newViewState.position);\r\n if (newViewModelPosition.lineNumber === cursor.modelState.position.lineNumber) {\r\n // stayed on the same model line => pass wrapping point where 2 view positions map to a single model position\r\n newViewState = MoveOperations.moveRight(viewModel.cursorConfig, viewModel, newViewState, inSelectionMode, 1);\r\n }\r\n }\r\n result[i] = CursorState.fromViewState(newViewState);\r\n }\r\n return result;\r\n }\r\n static _moveHalfLineRight(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const halfLine = Math.round(viewModel.getLineContent(viewLineNumber).length / 2);\r\n result[i] = CursorState.fromViewState(MoveOperations.moveRight(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, halfLine));\r\n }\r\n return result;\r\n }\r\n static _moveDownByViewLines(viewModel, cursors, inSelectionMode, linesCount) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = CursorState.fromViewState(MoveOperations.moveDown(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, linesCount));\r\n }\r\n return result;\r\n }\r\n static _moveDownByModelLines(viewModel, cursors, inSelectionMode, linesCount) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = CursorState.fromModelState(MoveOperations.moveDown(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode, linesCount));\r\n }\r\n return result;\r\n }\r\n static _moveUpByViewLines(viewModel, cursors, inSelectionMode, linesCount) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = CursorState.fromViewState(MoveOperations.moveUp(viewModel.cursorConfig, viewModel, cursor.viewState, inSelectionMode, linesCount));\r\n }\r\n return result;\r\n }\r\n static _moveUpByModelLines(viewModel, cursors, inSelectionMode, linesCount) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n result[i] = CursorState.fromModelState(MoveOperations.moveUp(viewModel.cursorConfig, viewModel.model, cursor.modelState, inSelectionMode, linesCount));\r\n }\r\n return result;\r\n }\r\n static _moveToViewPosition(viewModel, cursor, inSelectionMode, toViewLineNumber, toViewColumn) {\r\n return CursorState.fromViewState(cursor.viewState.move(inSelectionMode, toViewLineNumber, toViewColumn, 0));\r\n }\r\n static _moveToModelPosition(viewModel, cursor, inSelectionMode, toModelLineNumber, toModelColumn) {\r\n return CursorState.fromModelState(cursor.modelState.move(inSelectionMode, toModelLineNumber, toModelColumn, 0));\r\n }\r\n static _moveToViewMinColumn(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const viewColumn = viewModel.getLineMinColumn(viewLineNumber);\r\n result[i] = this._moveToViewPosition(viewModel, cursor, inSelectionMode, viewLineNumber, viewColumn);\r\n }\r\n return result;\r\n }\r\n static _moveToViewFirstNonWhitespaceColumn(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const viewColumn = viewModel.getLineFirstNonWhitespaceColumn(viewLineNumber);\r\n result[i] = this._moveToViewPosition(viewModel, cursor, inSelectionMode, viewLineNumber, viewColumn);\r\n }\r\n return result;\r\n }\r\n static _moveToViewCenterColumn(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const viewColumn = Math.round((viewModel.getLineMaxColumn(viewLineNumber) + viewModel.getLineMinColumn(viewLineNumber)) / 2);\r\n result[i] = this._moveToViewPosition(viewModel, cursor, inSelectionMode, viewLineNumber, viewColumn);\r\n }\r\n return result;\r\n }\r\n static _moveToViewMaxColumn(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const viewColumn = viewModel.getLineMaxColumn(viewLineNumber);\r\n result[i] = this._moveToViewPosition(viewModel, cursor, inSelectionMode, viewLineNumber, viewColumn);\r\n }\r\n return result;\r\n }\r\n static _moveToViewLastNonWhitespaceColumn(viewModel, cursors, inSelectionMode) {\r\n let result = [];\r\n for (let i = 0, len = cursors.length; i < len; i++) {\r\n const cursor = cursors[i];\r\n const viewLineNumber = cursor.viewState.position.lineNumber;\r\n const viewColumn = viewModel.getLineLastNonWhitespaceColumn(viewLineNumber);\r\n result[i] = this._moveToViewPosition(viewModel, cursor, inSelectionMode, viewLineNumber, viewColumn);\r\n }\r\n return result;\r\n }\r\n}\r\nexport var CursorMove;\r\n(function (CursorMove) {\r\n const isCursorMoveArgs = function (arg) {\r\n if (!types.isObject(arg)) {\r\n return false;\r\n }\r\n let cursorMoveArg = arg;\r\n if (!types.isString(cursorMoveArg.to)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(cursorMoveArg.select) && !types.isBoolean(cursorMoveArg.select)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(cursorMoveArg.by) && !types.isString(cursorMoveArg.by)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(cursorMoveArg.value) && !types.isNumber(cursorMoveArg.value)) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n CursorMove.description = {\r\n description: 'Move cursor to a logical position in the view',\r\n args: [\r\n {\r\n name: 'Cursor move argument object',\r\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t* 'to': A mandatory logical position value providing where to move the cursor.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'left', 'right', 'up', 'down'\n\t\t\t\t\t\t'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter'\n\t\t\t\t\t\t'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter'\n\t\t\t\t\t\t'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'by': Unit to move. Default is computed based on 'to' value.\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t\t'line', 'wrappedLine', 'character', 'halfLine'\n\t\t\t\t\t\t\\`\\`\\`\n\t\t\t\t\t* 'value': Number of units to move. Default is '1'.\n\t\t\t\t\t* 'select': If 'true' makes the selection. Default is 'false'.\n\t\t\t\t`,\r\n constraint: isCursorMoveArgs,\r\n schema: {\r\n 'type': 'object',\r\n 'required': ['to'],\r\n 'properties': {\r\n 'to': {\r\n 'type': 'string',\r\n 'enum': ['left', 'right', 'up', 'down', 'wrappedLineStart', 'wrappedLineEnd', 'wrappedLineColumnCenter', 'wrappedLineFirstNonWhitespaceCharacter', 'wrappedLineLastNonWhitespaceCharacter', 'viewPortTop', 'viewPortCenter', 'viewPortBottom', 'viewPortIfOutside']\r\n },\r\n 'by': {\r\n 'type': 'string',\r\n 'enum': ['line', 'wrappedLine', 'character', 'halfLine']\r\n },\r\n 'value': {\r\n 'type': 'number',\r\n 'default': 1\r\n },\r\n 'select': {\r\n 'type': 'boolean',\r\n 'default': false\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n /**\r\n * Positions in the view for cursor move command.\r\n */\r\n CursorMove.RawDirection = {\r\n Left: 'left',\r\n Right: 'right',\r\n Up: 'up',\r\n Down: 'down',\r\n WrappedLineStart: 'wrappedLineStart',\r\n WrappedLineFirstNonWhitespaceCharacter: 'wrappedLineFirstNonWhitespaceCharacter',\r\n WrappedLineColumnCenter: 'wrappedLineColumnCenter',\r\n WrappedLineEnd: 'wrappedLineEnd',\r\n WrappedLineLastNonWhitespaceCharacter: 'wrappedLineLastNonWhitespaceCharacter',\r\n ViewPortTop: 'viewPortTop',\r\n ViewPortCenter: 'viewPortCenter',\r\n ViewPortBottom: 'viewPortBottom',\r\n ViewPortIfOutside: 'viewPortIfOutside'\r\n };\r\n /**\r\n * Units for Cursor move 'by' argument\r\n */\r\n CursorMove.RawUnit = {\r\n Line: 'line',\r\n WrappedLine: 'wrappedLine',\r\n Character: 'character',\r\n HalfLine: 'halfLine'\r\n };\r\n function parse(args) {\r\n if (!args.to) {\r\n // illegal arguments\r\n return null;\r\n }\r\n let direction;\r\n switch (args.to) {\r\n case CursorMove.RawDirection.Left:\r\n direction = 0 /* Left */;\r\n break;\r\n case CursorMove.RawDirection.Right:\r\n direction = 1 /* Right */;\r\n break;\r\n case CursorMove.RawDirection.Up:\r\n direction = 2 /* Up */;\r\n break;\r\n case CursorMove.RawDirection.Down:\r\n direction = 3 /* Down */;\r\n break;\r\n case CursorMove.RawDirection.WrappedLineStart:\r\n direction = 4 /* WrappedLineStart */;\r\n break;\r\n case CursorMove.RawDirection.WrappedLineFirstNonWhitespaceCharacter:\r\n direction = 5 /* WrappedLineFirstNonWhitespaceCharacter */;\r\n break;\r\n case CursorMove.RawDirection.WrappedLineColumnCenter:\r\n direction = 6 /* WrappedLineColumnCenter */;\r\n break;\r\n case CursorMove.RawDirection.WrappedLineEnd:\r\n direction = 7 /* WrappedLineEnd */;\r\n break;\r\n case CursorMove.RawDirection.WrappedLineLastNonWhitespaceCharacter:\r\n direction = 8 /* WrappedLineLastNonWhitespaceCharacter */;\r\n break;\r\n case CursorMove.RawDirection.ViewPortTop:\r\n direction = 9 /* ViewPortTop */;\r\n break;\r\n case CursorMove.RawDirection.ViewPortBottom:\r\n direction = 11 /* ViewPortBottom */;\r\n break;\r\n case CursorMove.RawDirection.ViewPortCenter:\r\n direction = 10 /* ViewPortCenter */;\r\n break;\r\n case CursorMove.RawDirection.ViewPortIfOutside:\r\n direction = 12 /* ViewPortIfOutside */;\r\n break;\r\n default:\r\n // illegal arguments\r\n return null;\r\n }\r\n let unit = 0 /* None */;\r\n switch (args.by) {\r\n case CursorMove.RawUnit.Line:\r\n unit = 1 /* Line */;\r\n break;\r\n case CursorMove.RawUnit.WrappedLine:\r\n unit = 2 /* WrappedLine */;\r\n break;\r\n case CursorMove.RawUnit.Character:\r\n unit = 3 /* Character */;\r\n break;\r\n case CursorMove.RawUnit.HalfLine:\r\n unit = 4 /* HalfLine */;\r\n break;\r\n }\r\n return {\r\n direction: direction,\r\n unit: unit,\r\n select: (!!args.select),\r\n value: (args.value || 1)\r\n };\r\n }\r\n CursorMove.parse = parse;\r\n})(CursorMove || (CursorMove = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CursorColumns, SingleCursorState } from './cursorCommon.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nexport class CursorPosition {\r\n constructor(lineNumber, column, leftoverVisibleColumns) {\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n this.leftoverVisibleColumns = leftoverVisibleColumns;\r\n }\r\n}\r\nexport class MoveOperations {\r\n static leftPosition(model, lineNumber, column) {\r\n if (column > model.getLineMinColumn(lineNumber)) {\r\n column = column - strings.prevCharLength(model.getLineContent(lineNumber), column - 1);\r\n }\r\n else if (lineNumber > 1) {\r\n lineNumber = lineNumber - 1;\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n static left(config, model, lineNumber, column) {\r\n const pos = MoveOperations.leftPosition(model, lineNumber, column);\r\n return new CursorPosition(pos.lineNumber, pos.column, 0);\r\n }\r\n static moveLeft(config, model, cursor, inSelectionMode, noOfColumns) {\r\n let lineNumber, column;\r\n if (cursor.hasSelection() && !inSelectionMode) {\r\n // If we are in selection mode, move left without selection cancels selection and puts cursor at the beginning of the selection\r\n lineNumber = cursor.selection.startLineNumber;\r\n column = cursor.selection.startColumn;\r\n }\r\n else {\r\n let r = MoveOperations.left(config, model, cursor.position.lineNumber, cursor.position.column - (noOfColumns - 1));\r\n lineNumber = r.lineNumber;\r\n column = r.column;\r\n }\r\n return cursor.move(inSelectionMode, lineNumber, column, 0);\r\n }\r\n static rightPosition(model, lineNumber, column) {\r\n if (column < model.getLineMaxColumn(lineNumber)) {\r\n column = column + strings.nextCharLength(model.getLineContent(lineNumber), column - 1);\r\n }\r\n else if (lineNumber < model.getLineCount()) {\r\n lineNumber = lineNumber + 1;\r\n column = model.getLineMinColumn(lineNumber);\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n static right(config, model, lineNumber, column) {\r\n const pos = MoveOperations.rightPosition(model, lineNumber, column);\r\n return new CursorPosition(pos.lineNumber, pos.column, 0);\r\n }\r\n static moveRight(config, model, cursor, inSelectionMode, noOfColumns) {\r\n let lineNumber, column;\r\n if (cursor.hasSelection() && !inSelectionMode) {\r\n // If we are in selection mode, move right without selection cancels selection and puts cursor at the end of the selection\r\n lineNumber = cursor.selection.endLineNumber;\r\n column = cursor.selection.endColumn;\r\n }\r\n else {\r\n let r = MoveOperations.right(config, model, cursor.position.lineNumber, cursor.position.column + (noOfColumns - 1));\r\n lineNumber = r.lineNumber;\r\n column = r.column;\r\n }\r\n return cursor.move(inSelectionMode, lineNumber, column, 0);\r\n }\r\n static down(config, model, lineNumber, column, leftoverVisibleColumns, count, allowMoveOnLastLine) {\r\n const currentVisibleColumn = CursorColumns.visibleColumnFromColumn(model.getLineContent(lineNumber), column, config.tabSize) + leftoverVisibleColumns;\r\n const lineCount = model.getLineCount();\r\n const wasOnLastPosition = (lineNumber === lineCount && column === model.getLineMaxColumn(lineNumber));\r\n lineNumber = lineNumber + count;\r\n if (lineNumber > lineCount) {\r\n lineNumber = lineCount;\r\n if (allowMoveOnLastLine) {\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n else {\r\n column = Math.min(model.getLineMaxColumn(lineNumber), column);\r\n }\r\n }\r\n else {\r\n column = CursorColumns.columnFromVisibleColumn2(config, model, lineNumber, currentVisibleColumn);\r\n }\r\n if (wasOnLastPosition) {\r\n leftoverVisibleColumns = 0;\r\n }\r\n else {\r\n leftoverVisibleColumns = currentVisibleColumn - CursorColumns.visibleColumnFromColumn(model.getLineContent(lineNumber), column, config.tabSize);\r\n }\r\n return new CursorPosition(lineNumber, column, leftoverVisibleColumns);\r\n }\r\n static moveDown(config, model, cursor, inSelectionMode, linesCount) {\r\n let lineNumber, column;\r\n if (cursor.hasSelection() && !inSelectionMode) {\r\n // If we are in selection mode, move down acts relative to the end of selection\r\n lineNumber = cursor.selection.endLineNumber;\r\n column = cursor.selection.endColumn;\r\n }\r\n else {\r\n lineNumber = cursor.position.lineNumber;\r\n column = cursor.position.column;\r\n }\r\n let r = MoveOperations.down(config, model, lineNumber, column, cursor.leftoverVisibleColumns, linesCount, true);\r\n return cursor.move(inSelectionMode, r.lineNumber, r.column, r.leftoverVisibleColumns);\r\n }\r\n static translateDown(config, model, cursor) {\r\n let selection = cursor.selection;\r\n let selectionStart = MoveOperations.down(config, model, selection.selectionStartLineNumber, selection.selectionStartColumn, cursor.selectionStartLeftoverVisibleColumns, 1, false);\r\n let position = MoveOperations.down(config, model, selection.positionLineNumber, selection.positionColumn, cursor.leftoverVisibleColumns, 1, false);\r\n return new SingleCursorState(new Range(selectionStart.lineNumber, selectionStart.column, selectionStart.lineNumber, selectionStart.column), selectionStart.leftoverVisibleColumns, new Position(position.lineNumber, position.column), position.leftoverVisibleColumns);\r\n }\r\n static up(config, model, lineNumber, column, leftoverVisibleColumns, count, allowMoveOnFirstLine) {\r\n const currentVisibleColumn = CursorColumns.visibleColumnFromColumn(model.getLineContent(lineNumber), column, config.tabSize) + leftoverVisibleColumns;\r\n const wasOnFirstPosition = (lineNumber === 1 && column === 1);\r\n lineNumber = lineNumber - count;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n if (allowMoveOnFirstLine) {\r\n column = model.getLineMinColumn(lineNumber);\r\n }\r\n else {\r\n column = Math.min(model.getLineMaxColumn(lineNumber), column);\r\n }\r\n }\r\n else {\r\n column = CursorColumns.columnFromVisibleColumn2(config, model, lineNumber, currentVisibleColumn);\r\n }\r\n if (wasOnFirstPosition) {\r\n leftoverVisibleColumns = 0;\r\n }\r\n else {\r\n leftoverVisibleColumns = currentVisibleColumn - CursorColumns.visibleColumnFromColumn(model.getLineContent(lineNumber), column, config.tabSize);\r\n }\r\n return new CursorPosition(lineNumber, column, leftoverVisibleColumns);\r\n }\r\n static moveUp(config, model, cursor, inSelectionMode, linesCount) {\r\n let lineNumber, column;\r\n if (cursor.hasSelection() && !inSelectionMode) {\r\n // If we are in selection mode, move up acts relative to the beginning of selection\r\n lineNumber = cursor.selection.startLineNumber;\r\n column = cursor.selection.startColumn;\r\n }\r\n else {\r\n lineNumber = cursor.position.lineNumber;\r\n column = cursor.position.column;\r\n }\r\n let r = MoveOperations.up(config, model, lineNumber, column, cursor.leftoverVisibleColumns, linesCount, true);\r\n return cursor.move(inSelectionMode, r.lineNumber, r.column, r.leftoverVisibleColumns);\r\n }\r\n static translateUp(config, model, cursor) {\r\n let selection = cursor.selection;\r\n let selectionStart = MoveOperations.up(config, model, selection.selectionStartLineNumber, selection.selectionStartColumn, cursor.selectionStartLeftoverVisibleColumns, 1, false);\r\n let position = MoveOperations.up(config, model, selection.positionLineNumber, selection.positionColumn, cursor.leftoverVisibleColumns, 1, false);\r\n return new SingleCursorState(new Range(selectionStart.lineNumber, selectionStart.column, selectionStart.lineNumber, selectionStart.column), selectionStart.leftoverVisibleColumns, new Position(position.lineNumber, position.column), position.leftoverVisibleColumns);\r\n }\r\n static moveToBeginningOfLine(config, model, cursor, inSelectionMode) {\r\n let lineNumber = cursor.position.lineNumber;\r\n let minColumn = model.getLineMinColumn(lineNumber);\r\n let firstNonBlankColumn = model.getLineFirstNonWhitespaceColumn(lineNumber) || minColumn;\r\n let column;\r\n let relevantColumnNumber = cursor.position.column;\r\n if (relevantColumnNumber === firstNonBlankColumn) {\r\n column = minColumn;\r\n }\r\n else {\r\n column = firstNonBlankColumn;\r\n }\r\n return cursor.move(inSelectionMode, lineNumber, column, 0);\r\n }\r\n static moveToEndOfLine(config, model, cursor, inSelectionMode, sticky) {\r\n let lineNumber = cursor.position.lineNumber;\r\n let maxColumn = model.getLineMaxColumn(lineNumber);\r\n return cursor.move(inSelectionMode, lineNumber, maxColumn, sticky ? 1073741824 /* MAX_SAFE_SMALL_INTEGER */ - maxColumn : 0);\r\n }\r\n static moveToBeginningOfBuffer(config, model, cursor, inSelectionMode) {\r\n return cursor.move(inSelectionMode, 1, 1, 0);\r\n }\r\n static moveToEndOfBuffer(config, model, cursor, inSelectionMode) {\r\n let lastLineNumber = model.getLineCount();\r\n let lastColumn = model.getLineMaxColumn(lastLineNumber);\r\n return cursor.move(inSelectionMode, lastLineNumber, lastColumn, 0);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { ReplaceCommand, ReplaceCommandWithOffsetCursorState, ReplaceCommandWithoutChangingPosition, ReplaceCommandThatPreservesSelection } from '../commands/replaceCommand.js';\r\nimport { ShiftCommand } from '../commands/shiftCommand.js';\r\nimport { SurroundSelectionCommand } from '../commands/surroundSelectionCommand.js';\r\nimport { CursorColumns, EditOperationResult, isQuote } from './cursorCommon.js';\r\nimport { getMapForWordSeparators } from './wordCharacterClassifier.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { IndentAction } from '../modes/languageConfiguration.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nexport class TypeOperations {\r\n static indent(config, model, selections) {\r\n if (model === null || selections === null) {\r\n return [];\r\n }\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = new ShiftCommand(selections[i], {\r\n isUnshift: false,\r\n tabSize: config.tabSize,\r\n indentSize: config.indentSize,\r\n insertSpaces: config.insertSpaces,\r\n useTabStops: config.useTabStops,\r\n autoIndent: config.autoIndent\r\n });\r\n }\r\n return commands;\r\n }\r\n static outdent(config, model, selections) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = new ShiftCommand(selections[i], {\r\n isUnshift: true,\r\n tabSize: config.tabSize,\r\n indentSize: config.indentSize,\r\n insertSpaces: config.insertSpaces,\r\n useTabStops: config.useTabStops,\r\n autoIndent: config.autoIndent\r\n });\r\n }\r\n return commands;\r\n }\r\n static shiftIndent(config, indentation, count) {\r\n count = count || 1;\r\n return ShiftCommand.shiftIndent(indentation, indentation.length + count, config.tabSize, config.indentSize, config.insertSpaces);\r\n }\r\n static unshiftIndent(config, indentation, count) {\r\n count = count || 1;\r\n return ShiftCommand.unshiftIndent(indentation, indentation.length + count, config.tabSize, config.indentSize, config.insertSpaces);\r\n }\r\n static _distributedPaste(config, model, selections, text) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = new ReplaceCommand(selections[i], text[i]);\r\n }\r\n return new EditOperationResult(0 /* Other */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: true\r\n });\r\n }\r\n static _simplePaste(config, model, selections, text, pasteOnNewLine) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n let position = selection.getPosition();\r\n if (pasteOnNewLine && !selection.isEmpty()) {\r\n pasteOnNewLine = false;\r\n }\r\n if (pasteOnNewLine && text.indexOf('\\n') !== text.length - 1) {\r\n pasteOnNewLine = false;\r\n }\r\n if (pasteOnNewLine) {\r\n // Paste entire line at the beginning of line\r\n let typeSelection = new Range(position.lineNumber, 1, position.lineNumber, 1);\r\n commands[i] = new ReplaceCommandThatPreservesSelection(typeSelection, text, selection, true);\r\n }\r\n else {\r\n commands[i] = new ReplaceCommand(selection, text);\r\n }\r\n }\r\n return new EditOperationResult(0 /* Other */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: true\r\n });\r\n }\r\n static _distributePasteToCursors(config, selections, text, pasteOnNewLine, multicursorText) {\r\n if (pasteOnNewLine) {\r\n return null;\r\n }\r\n if (selections.length === 1) {\r\n return null;\r\n }\r\n if (multicursorText && multicursorText.length === selections.length) {\r\n return multicursorText;\r\n }\r\n if (config.multiCursorPaste === 'spread') {\r\n // Try to spread the pasted text in case the line count matches the cursor count\r\n // Remove trailing \\n if present\r\n if (text.charCodeAt(text.length - 1) === 10 /* LineFeed */) {\r\n text = text.substr(0, text.length - 1);\r\n }\r\n // Remove trailing \\r if present\r\n if (text.charCodeAt(text.length - 1) === 13 /* CarriageReturn */) {\r\n text = text.substr(0, text.length - 1);\r\n }\r\n let lines = text.split(/\\r\\n|\\r|\\n/);\r\n if (lines.length === selections.length) {\r\n return lines;\r\n }\r\n }\r\n return null;\r\n }\r\n static paste(config, model, selections, text, pasteOnNewLine, multicursorText) {\r\n const distributedPaste = this._distributePasteToCursors(config, selections, text, pasteOnNewLine, multicursorText);\r\n if (distributedPaste) {\r\n selections = selections.sort(Range.compareRangesUsingStarts);\r\n return this._distributedPaste(config, model, selections, distributedPaste);\r\n }\r\n else {\r\n return this._simplePaste(config, model, selections, text, pasteOnNewLine);\r\n }\r\n }\r\n static _goodIndentForLine(config, model, lineNumber) {\r\n let action = null;\r\n let indentation = '';\r\n const expectedIndentAction = LanguageConfigurationRegistry.getInheritIndentForLine(config.autoIndent, model, lineNumber, false);\r\n if (expectedIndentAction) {\r\n action = expectedIndentAction.action;\r\n indentation = expectedIndentAction.indentation;\r\n }\r\n else if (lineNumber > 1) {\r\n let lastLineNumber;\r\n for (lastLineNumber = lineNumber - 1; lastLineNumber >= 1; lastLineNumber--) {\r\n const lineText = model.getLineContent(lastLineNumber);\r\n const nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineText);\r\n if (nonWhitespaceIdx >= 0) {\r\n break;\r\n }\r\n }\r\n if (lastLineNumber < 1) {\r\n // No previous line with content found\r\n return null;\r\n }\r\n const maxColumn = model.getLineMaxColumn(lastLineNumber);\r\n const expectedEnterAction = LanguageConfigurationRegistry.getEnterAction(config.autoIndent, model, new Range(lastLineNumber, maxColumn, lastLineNumber, maxColumn));\r\n if (expectedEnterAction) {\r\n indentation = expectedEnterAction.indentation + expectedEnterAction.appendText;\r\n }\r\n }\r\n if (action) {\r\n if (action === IndentAction.Indent) {\r\n indentation = TypeOperations.shiftIndent(config, indentation);\r\n }\r\n if (action === IndentAction.Outdent) {\r\n indentation = TypeOperations.unshiftIndent(config, indentation);\r\n }\r\n indentation = config.normalizeIndentation(indentation);\r\n }\r\n if (!indentation) {\r\n return null;\r\n }\r\n return indentation;\r\n }\r\n static _replaceJumpToNextIndent(config, model, selection, insertsAutoWhitespace) {\r\n let typeText = '';\r\n let position = selection.getStartPosition();\r\n if (config.insertSpaces) {\r\n let visibleColumnFromColumn = CursorColumns.visibleColumnFromColumn2(config, model, position);\r\n let indentSize = config.indentSize;\r\n let spacesCnt = indentSize - (visibleColumnFromColumn % indentSize);\r\n for (let i = 0; i < spacesCnt; i++) {\r\n typeText += ' ';\r\n }\r\n }\r\n else {\r\n typeText = '\\t';\r\n }\r\n return new ReplaceCommand(selection, typeText, insertsAutoWhitespace);\r\n }\r\n static tab(config, model, selections) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n if (selection.isEmpty()) {\r\n let lineText = model.getLineContent(selection.startLineNumber);\r\n if (/^\\s*$/.test(lineText) && model.isCheapToTokenize(selection.startLineNumber)) {\r\n let goodIndent = this._goodIndentForLine(config, model, selection.startLineNumber);\r\n goodIndent = goodIndent || '\\t';\r\n let possibleTypeText = config.normalizeIndentation(goodIndent);\r\n if (!strings.startsWith(lineText, possibleTypeText)) {\r\n commands[i] = new ReplaceCommand(new Range(selection.startLineNumber, 1, selection.startLineNumber, lineText.length + 1), possibleTypeText, true);\r\n continue;\r\n }\r\n }\r\n commands[i] = this._replaceJumpToNextIndent(config, model, selection, true);\r\n }\r\n else {\r\n if (selection.startLineNumber === selection.endLineNumber) {\r\n let lineMaxColumn = model.getLineMaxColumn(selection.startLineNumber);\r\n if (selection.startColumn !== 1 || selection.endColumn !== lineMaxColumn) {\r\n // This is a single line selection that is not the entire line\r\n commands[i] = this._replaceJumpToNextIndent(config, model, selection, false);\r\n continue;\r\n }\r\n }\r\n commands[i] = new ShiftCommand(selection, {\r\n isUnshift: false,\r\n tabSize: config.tabSize,\r\n indentSize: config.indentSize,\r\n insertSpaces: config.insertSpaces,\r\n useTabStops: config.useTabStops,\r\n autoIndent: config.autoIndent\r\n });\r\n }\r\n }\r\n return commands;\r\n }\r\n static replacePreviousChar(prevEditOperationType, config, model, selections, txt, replaceCharCnt) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n if (!selection.isEmpty()) {\r\n // looks like https://github.com/Microsoft/vscode/issues/2773\r\n // where a cursor operation occurred before a canceled composition\r\n // => ignore composition\r\n commands[i] = null;\r\n continue;\r\n }\r\n const pos = selection.getPosition();\r\n const startColumn = Math.max(1, pos.column - replaceCharCnt);\r\n const range = new Range(pos.lineNumber, startColumn, pos.lineNumber, pos.column);\r\n const oldText = model.getValueInRange(range);\r\n if (oldText === txt) {\r\n // => ignore composition that doesn't do anything\r\n commands[i] = null;\r\n continue;\r\n }\r\n commands[i] = new ReplaceCommand(range, txt);\r\n }\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: (prevEditOperationType !== 1 /* Typing */),\r\n shouldPushStackElementAfter: false\r\n });\r\n }\r\n static _typeCommand(range, text, keepPosition) {\r\n if (keepPosition) {\r\n return new ReplaceCommandWithoutChangingPosition(range, text, true);\r\n }\r\n else {\r\n return new ReplaceCommand(range, text, true);\r\n }\r\n }\r\n static _enter(config, model, keepPosition, range) {\r\n if (config.autoIndent === 0 /* None */) {\r\n return TypeOperations._typeCommand(range, '\\n', keepPosition);\r\n }\r\n if (!model.isCheapToTokenize(range.getStartPosition().lineNumber) || config.autoIndent === 1 /* Keep */) {\r\n let lineText = model.getLineContent(range.startLineNumber);\r\n let indentation = strings.getLeadingWhitespace(lineText).substring(0, range.startColumn - 1);\r\n return TypeOperations._typeCommand(range, '\\n' + config.normalizeIndentation(indentation), keepPosition);\r\n }\r\n const r = LanguageConfigurationRegistry.getEnterAction(config.autoIndent, model, range);\r\n if (r) {\r\n if (r.indentAction === IndentAction.None) {\r\n // Nothing special\r\n return TypeOperations._typeCommand(range, '\\n' + config.normalizeIndentation(r.indentation + r.appendText), keepPosition);\r\n }\r\n else if (r.indentAction === IndentAction.Indent) {\r\n // Indent once\r\n return TypeOperations._typeCommand(range, '\\n' + config.normalizeIndentation(r.indentation + r.appendText), keepPosition);\r\n }\r\n else if (r.indentAction === IndentAction.IndentOutdent) {\r\n // Ultra special\r\n const normalIndent = config.normalizeIndentation(r.indentation);\r\n const increasedIndent = config.normalizeIndentation(r.indentation + r.appendText);\r\n const typeText = '\\n' + increasedIndent + '\\n' + normalIndent;\r\n if (keepPosition) {\r\n return new ReplaceCommandWithoutChangingPosition(range, typeText, true);\r\n }\r\n else {\r\n return new ReplaceCommandWithOffsetCursorState(range, typeText, -1, increasedIndent.length - normalIndent.length, true);\r\n }\r\n }\r\n else if (r.indentAction === IndentAction.Outdent) {\r\n const actualIndentation = TypeOperations.unshiftIndent(config, r.indentation);\r\n return TypeOperations._typeCommand(range, '\\n' + config.normalizeIndentation(actualIndentation + r.appendText), keepPosition);\r\n }\r\n }\r\n const lineText = model.getLineContent(range.startLineNumber);\r\n const indentation = strings.getLeadingWhitespace(lineText).substring(0, range.startColumn - 1);\r\n if (config.autoIndent >= 4 /* Full */) {\r\n const ir = LanguageConfigurationRegistry.getIndentForEnter(config.autoIndent, model, range, {\r\n unshiftIndent: (indent) => {\r\n return TypeOperations.unshiftIndent(config, indent);\r\n },\r\n shiftIndent: (indent) => {\r\n return TypeOperations.shiftIndent(config, indent);\r\n },\r\n normalizeIndentation: (indent) => {\r\n return config.normalizeIndentation(indent);\r\n }\r\n });\r\n if (ir) {\r\n let oldEndViewColumn = CursorColumns.visibleColumnFromColumn2(config, model, range.getEndPosition());\r\n const oldEndColumn = range.endColumn;\r\n let beforeText = '\\n';\r\n if (indentation !== config.normalizeIndentation(ir.beforeEnter)) {\r\n beforeText = config.normalizeIndentation(ir.beforeEnter) + lineText.substring(indentation.length, range.startColumn - 1) + '\\n';\r\n range = new Range(range.startLineNumber, 1, range.endLineNumber, range.endColumn);\r\n }\r\n const newLineContent = model.getLineContent(range.endLineNumber);\r\n const firstNonWhitespace = strings.firstNonWhitespaceIndex(newLineContent);\r\n if (firstNonWhitespace >= 0) {\r\n range = range.setEndPosition(range.endLineNumber, Math.max(range.endColumn, firstNonWhitespace + 1));\r\n }\r\n else {\r\n range = range.setEndPosition(range.endLineNumber, model.getLineMaxColumn(range.endLineNumber));\r\n }\r\n if (keepPosition) {\r\n return new ReplaceCommandWithoutChangingPosition(range, beforeText + config.normalizeIndentation(ir.afterEnter), true);\r\n }\r\n else {\r\n let offset = 0;\r\n if (oldEndColumn <= firstNonWhitespace + 1) {\r\n if (!config.insertSpaces) {\r\n oldEndViewColumn = Math.ceil(oldEndViewColumn / config.indentSize);\r\n }\r\n offset = Math.min(oldEndViewColumn + 1 - config.normalizeIndentation(ir.afterEnter).length - 1, 0);\r\n }\r\n return new ReplaceCommandWithOffsetCursorState(range, beforeText + config.normalizeIndentation(ir.afterEnter), 0, offset, true);\r\n }\r\n }\r\n }\r\n return TypeOperations._typeCommand(range, '\\n' + config.normalizeIndentation(indentation), keepPosition);\r\n }\r\n static _isAutoIndentType(config, model, selections) {\r\n if (config.autoIndent < 4 /* Full */) {\r\n return false;\r\n }\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n if (!model.isCheapToTokenize(selections[i].getEndPosition().lineNumber)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static _runAutoIndentType(config, model, range, ch) {\r\n const currentIndentation = LanguageConfigurationRegistry.getIndentationAtPosition(model, range.startLineNumber, range.startColumn);\r\n const actualIndentation = LanguageConfigurationRegistry.getIndentActionForType(config.autoIndent, model, range, ch, {\r\n shiftIndent: (indentation) => {\r\n return TypeOperations.shiftIndent(config, indentation);\r\n },\r\n unshiftIndent: (indentation) => {\r\n return TypeOperations.unshiftIndent(config, indentation);\r\n },\r\n });\r\n if (actualIndentation === null) {\r\n return null;\r\n }\r\n if (actualIndentation !== config.normalizeIndentation(currentIndentation)) {\r\n const firstNonWhitespace = model.getLineFirstNonWhitespaceColumn(range.startLineNumber);\r\n if (firstNonWhitespace === 0) {\r\n return TypeOperations._typeCommand(new Range(range.startLineNumber, 0, range.endLineNumber, range.endColumn), config.normalizeIndentation(actualIndentation) + ch, false);\r\n }\r\n else {\r\n return TypeOperations._typeCommand(new Range(range.startLineNumber, 0, range.endLineNumber, range.endColumn), config.normalizeIndentation(actualIndentation) +\r\n model.getLineContent(range.startLineNumber).substring(firstNonWhitespace - 1, range.startColumn - 1) + ch, false);\r\n }\r\n }\r\n return null;\r\n }\r\n static _isAutoClosingOvertype(config, model, selections, autoClosedCharacters, ch) {\r\n if (config.autoClosingOvertype === 'never') {\r\n return false;\r\n }\r\n if (!config.autoClosingPairsClose2.has(ch)) {\r\n return false;\r\n }\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n if (!selection.isEmpty()) {\r\n return false;\r\n }\r\n const position = selection.getPosition();\r\n const lineText = model.getLineContent(position.lineNumber);\r\n const afterCharacter = lineText.charAt(position.column - 1);\r\n if (afterCharacter !== ch) {\r\n return false;\r\n }\r\n // Do not over-type quotes after a backslash\r\n const chIsQuote = isQuote(ch);\r\n const beforeCharacter = position.column > 2 ? lineText.charCodeAt(position.column - 2) : 0 /* Null */;\r\n if (beforeCharacter === 92 /* Backslash */ && chIsQuote) {\r\n return false;\r\n }\r\n // Must over-type a closing character typed by the editor\r\n if (config.autoClosingOvertype === 'auto') {\r\n let found = false;\r\n for (let j = 0, lenJ = autoClosedCharacters.length; j < lenJ; j++) {\r\n const autoClosedCharacter = autoClosedCharacters[j];\r\n if (position.lineNumber === autoClosedCharacter.startLineNumber && position.column === autoClosedCharacter.startColumn) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n static _runAutoClosingOvertype(prevEditOperationType, config, model, selections, ch) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n const position = selection.getPosition();\r\n const typeSelection = new Range(position.lineNumber, position.column, position.lineNumber, position.column + 1);\r\n commands[i] = new ReplaceCommand(typeSelection, ch);\r\n }\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: (prevEditOperationType !== 1 /* Typing */),\r\n shouldPushStackElementAfter: false\r\n });\r\n }\r\n static _autoClosingPairIsSymmetric(autoClosingPair) {\r\n const { open, close } = autoClosingPair;\r\n return (open.indexOf(close) >= 0 || close.indexOf(open) >= 0);\r\n }\r\n static _isBeforeClosingBrace(config, autoClosingPair, characterAfter) {\r\n const otherAutoClosingPairs = config.autoClosingPairsClose2.get(characterAfter);\r\n if (!otherAutoClosingPairs) {\r\n return false;\r\n }\r\n const thisBraceIsSymmetric = TypeOperations._autoClosingPairIsSymmetric(autoClosingPair);\r\n for (const otherAutoClosingPair of otherAutoClosingPairs) {\r\n const otherBraceIsSymmetric = TypeOperations._autoClosingPairIsSymmetric(otherAutoClosingPair);\r\n if (!thisBraceIsSymmetric && otherBraceIsSymmetric) {\r\n continue;\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n static _findAutoClosingPairOpen(config, model, positions, ch) {\r\n const autoClosingPairCandidates = config.autoClosingPairsOpen2.get(ch);\r\n if (!autoClosingPairCandidates) {\r\n return null;\r\n }\r\n // Determine which auto-closing pair it is\r\n let autoClosingPair = null;\r\n for (const autoClosingPairCandidate of autoClosingPairCandidates) {\r\n if (autoClosingPair === null || autoClosingPairCandidate.open.length > autoClosingPair.open.length) {\r\n let candidateIsMatch = true;\r\n for (const position of positions) {\r\n const relevantText = model.getValueInRange(new Range(position.lineNumber, position.column - autoClosingPairCandidate.open.length + 1, position.lineNumber, position.column));\r\n if (relevantText + ch !== autoClosingPairCandidate.open) {\r\n candidateIsMatch = false;\r\n break;\r\n }\r\n }\r\n if (candidateIsMatch) {\r\n autoClosingPair = autoClosingPairCandidate;\r\n }\r\n }\r\n }\r\n return autoClosingPair;\r\n }\r\n static _isAutoClosingOpenCharType(config, model, selections, ch, insertOpenCharacter) {\r\n const chIsQuote = isQuote(ch);\r\n const autoCloseConfig = chIsQuote ? config.autoClosingQuotes : config.autoClosingBrackets;\r\n if (autoCloseConfig === 'never') {\r\n return null;\r\n }\r\n const autoClosingPair = this._findAutoClosingPairOpen(config, model, selections.map(s => s.getPosition()), ch);\r\n if (!autoClosingPair) {\r\n return null;\r\n }\r\n const shouldAutoCloseBefore = chIsQuote ? config.shouldAutoCloseBefore.quote : config.shouldAutoCloseBefore.bracket;\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n if (!selection.isEmpty()) {\r\n return null;\r\n }\r\n const position = selection.getPosition();\r\n const lineText = model.getLineContent(position.lineNumber);\r\n // Only consider auto closing the pair if a space follows or if another autoclosed pair follows\r\n if (lineText.length > position.column - 1) {\r\n const characterAfter = lineText.charAt(position.column - 1);\r\n const isBeforeCloseBrace = TypeOperations._isBeforeClosingBrace(config, autoClosingPair, characterAfter);\r\n if (!isBeforeCloseBrace && !shouldAutoCloseBefore(characterAfter)) {\r\n return null;\r\n }\r\n }\r\n if (!model.isCheapToTokenize(position.lineNumber)) {\r\n // Do not force tokenization\r\n return null;\r\n }\r\n // Do not auto-close ' or \" after a word character\r\n if (autoClosingPair.open.length === 1 && chIsQuote && autoCloseConfig !== 'always') {\r\n const wordSeparators = getMapForWordSeparators(config.wordSeparators);\r\n if (insertOpenCharacter && position.column > 1 && wordSeparators.get(lineText.charCodeAt(position.column - 2)) === 0 /* Regular */) {\r\n return null;\r\n }\r\n if (!insertOpenCharacter && position.column > 2 && wordSeparators.get(lineText.charCodeAt(position.column - 3)) === 0 /* Regular */) {\r\n return null;\r\n }\r\n }\r\n model.forceTokenization(position.lineNumber);\r\n const lineTokens = model.getLineTokens(position.lineNumber);\r\n let shouldAutoClosePair = false;\r\n try {\r\n shouldAutoClosePair = LanguageConfigurationRegistry.shouldAutoClosePair(autoClosingPair, lineTokens, insertOpenCharacter ? position.column : position.column - 1);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n if (!shouldAutoClosePair) {\r\n return null;\r\n }\r\n }\r\n return autoClosingPair;\r\n }\r\n static _runAutoClosingOpenCharType(prevEditOperationType, config, model, selections, ch, insertOpenCharacter, autoClosingPair) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n commands[i] = new TypeWithAutoClosingCommand(selection, ch, insertOpenCharacter, autoClosingPair.close);\r\n }\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: false\r\n });\r\n }\r\n static _shouldSurroundChar(config, ch) {\r\n if (isQuote(ch)) {\r\n return (config.autoSurround === 'quotes' || config.autoSurround === 'languageDefined');\r\n }\r\n else {\r\n // Character is a bracket\r\n return (config.autoSurround === 'brackets' || config.autoSurround === 'languageDefined');\r\n }\r\n }\r\n static _isSurroundSelectionType(config, model, selections, ch) {\r\n if (!TypeOperations._shouldSurroundChar(config, ch) || !config.surroundingPairs.hasOwnProperty(ch)) {\r\n return false;\r\n }\r\n const isTypingAQuoteCharacter = isQuote(ch);\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n if (selection.isEmpty()) {\r\n return false;\r\n }\r\n let selectionContainsOnlyWhitespace = true;\r\n for (let lineNumber = selection.startLineNumber; lineNumber <= selection.endLineNumber; lineNumber++) {\r\n const lineText = model.getLineContent(lineNumber);\r\n const startIndex = (lineNumber === selection.startLineNumber ? selection.startColumn - 1 : 0);\r\n const endIndex = (lineNumber === selection.endLineNumber ? selection.endColumn - 1 : lineText.length);\r\n const selectedText = lineText.substring(startIndex, endIndex);\r\n if (/[^ \\t]/.test(selectedText)) {\r\n // this selected text contains something other than whitespace\r\n selectionContainsOnlyWhitespace = false;\r\n break;\r\n }\r\n }\r\n if (selectionContainsOnlyWhitespace) {\r\n return false;\r\n }\r\n if (isTypingAQuoteCharacter && selection.startLineNumber === selection.endLineNumber && selection.startColumn + 1 === selection.endColumn) {\r\n const selectionText = model.getValueInRange(selection);\r\n if (isQuote(selectionText)) {\r\n // Typing a quote character on top of another quote character\r\n // => disable surround selection type\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n static _runSurroundSelectionType(prevEditOperationType, config, model, selections, ch) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const selection = selections[i];\r\n const closeCharacter = config.surroundingPairs[ch];\r\n commands[i] = new SurroundSelectionCommand(selection, ch, closeCharacter);\r\n }\r\n return new EditOperationResult(0 /* Other */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: true\r\n });\r\n }\r\n static _isTypeInterceptorElectricChar(config, model, selections) {\r\n if (selections.length === 1 && model.isCheapToTokenize(selections[0].getEndPosition().lineNumber)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n static _typeInterceptorElectricChar(prevEditOperationType, config, model, selection, ch) {\r\n if (!config.electricChars.hasOwnProperty(ch) || !selection.isEmpty()) {\r\n return null;\r\n }\r\n let position = selection.getPosition();\r\n model.forceTokenization(position.lineNumber);\r\n let lineTokens = model.getLineTokens(position.lineNumber);\r\n let electricAction;\r\n try {\r\n electricAction = LanguageConfigurationRegistry.onElectricCharacter(ch, lineTokens, position.column);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n if (!electricAction) {\r\n return null;\r\n }\r\n if (electricAction.matchOpenBracket) {\r\n let endColumn = (lineTokens.getLineContent() + ch).lastIndexOf(electricAction.matchOpenBracket) + 1;\r\n let match = model.findMatchingBracketUp(electricAction.matchOpenBracket, {\r\n lineNumber: position.lineNumber,\r\n column: endColumn\r\n });\r\n if (match) {\r\n if (match.startLineNumber === position.lineNumber) {\r\n // matched something on the same line => no change in indentation\r\n return null;\r\n }\r\n let matchLine = model.getLineContent(match.startLineNumber);\r\n let matchLineIndentation = strings.getLeadingWhitespace(matchLine);\r\n let newIndentation = config.normalizeIndentation(matchLineIndentation);\r\n let lineText = model.getLineContent(position.lineNumber);\r\n let lineFirstNonBlankColumn = model.getLineFirstNonWhitespaceColumn(position.lineNumber) || position.column;\r\n let prefix = lineText.substring(lineFirstNonBlankColumn - 1, position.column - 1);\r\n let typeText = newIndentation + prefix + ch;\r\n let typeSelection = new Range(position.lineNumber, 1, position.lineNumber, position.column);\r\n const command = new ReplaceCommand(typeSelection, typeText);\r\n return new EditOperationResult(1 /* Typing */, [command], {\r\n shouldPushStackElementBefore: false,\r\n shouldPushStackElementAfter: true\r\n });\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * This is very similar with typing, but the character is already in the text buffer!\r\n */\r\n static compositionEndWithInterceptors(prevEditOperationType, config, model, selectionsWhenCompositionStarted, selections, autoClosedCharacters) {\r\n if (!selectionsWhenCompositionStarted || Selection.selectionsArrEqual(selectionsWhenCompositionStarted, selections)) {\r\n // no content was typed\r\n return null;\r\n }\r\n let ch = null;\r\n // extract last typed character\r\n for (const selection of selections) {\r\n if (!selection.isEmpty()) {\r\n return null;\r\n }\r\n const position = selection.getPosition();\r\n const currentChar = model.getValueInRange(new Range(position.lineNumber, position.column - 1, position.lineNumber, position.column));\r\n if (ch === null) {\r\n ch = currentChar;\r\n }\r\n else if (ch !== currentChar) {\r\n return null;\r\n }\r\n }\r\n if (!ch) {\r\n return null;\r\n }\r\n if (this._isAutoClosingOvertype(config, model, selections, autoClosedCharacters, ch)) {\r\n // Unfortunately, the close character is at this point \"doubled\", so we need to delete it...\r\n const commands = selections.map(s => new ReplaceCommand(new Range(s.positionLineNumber, s.positionColumn, s.positionLineNumber, s.positionColumn + 1), '', false));\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: false\r\n });\r\n }\r\n const autoClosingPairOpenCharType = this._isAutoClosingOpenCharType(config, model, selections, ch, false);\r\n if (autoClosingPairOpenCharType) {\r\n return this._runAutoClosingOpenCharType(prevEditOperationType, config, model, selections, ch, false, autoClosingPairOpenCharType);\r\n }\r\n return null;\r\n }\r\n static typeWithInterceptors(isDoingComposition, prevEditOperationType, config, model, selections, autoClosedCharacters, ch) {\r\n if (!isDoingComposition && ch === '\\n') {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = TypeOperations._enter(config, model, false, selections[i]);\r\n }\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: false,\r\n });\r\n }\r\n if (!isDoingComposition && this._isAutoIndentType(config, model, selections)) {\r\n let commands = [];\r\n let autoIndentFails = false;\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = this._runAutoIndentType(config, model, selections[i], ch);\r\n if (!commands[i]) {\r\n autoIndentFails = true;\r\n break;\r\n }\r\n }\r\n if (!autoIndentFails) {\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: true,\r\n shouldPushStackElementAfter: false,\r\n });\r\n }\r\n }\r\n if (!isDoingComposition && this._isAutoClosingOvertype(config, model, selections, autoClosedCharacters, ch)) {\r\n return this._runAutoClosingOvertype(prevEditOperationType, config, model, selections, ch);\r\n }\r\n if (!isDoingComposition) {\r\n const autoClosingPairOpenCharType = this._isAutoClosingOpenCharType(config, model, selections, ch, true);\r\n if (autoClosingPairOpenCharType) {\r\n return this._runAutoClosingOpenCharType(prevEditOperationType, config, model, selections, ch, true, autoClosingPairOpenCharType);\r\n }\r\n }\r\n if (this._isSurroundSelectionType(config, model, selections, ch)) {\r\n return this._runSurroundSelectionType(prevEditOperationType, config, model, selections, ch);\r\n }\r\n // Electric characters make sense only when dealing with a single cursor,\r\n // as multiple cursors typing brackets for example would interfer with bracket matching\r\n if (!isDoingComposition && this._isTypeInterceptorElectricChar(config, model, selections)) {\r\n const r = this._typeInterceptorElectricChar(prevEditOperationType, config, model, selections[0], ch);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n // A simple character type\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = new ReplaceCommand(selections[i], ch);\r\n }\r\n let shouldPushStackElementBefore = (prevEditOperationType !== 1 /* Typing */);\r\n if (ch === ' ') {\r\n shouldPushStackElementBefore = true;\r\n }\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: shouldPushStackElementBefore,\r\n shouldPushStackElementAfter: false\r\n });\r\n }\r\n static typeWithoutInterceptors(prevEditOperationType, config, model, selections, str) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = new ReplaceCommand(selections[i], str);\r\n }\r\n return new EditOperationResult(1 /* Typing */, commands, {\r\n shouldPushStackElementBefore: (prevEditOperationType !== 1 /* Typing */),\r\n shouldPushStackElementAfter: false\r\n });\r\n }\r\n static lineInsertBefore(config, model, selections) {\r\n if (model === null || selections === null) {\r\n return [];\r\n }\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let lineNumber = selections[i].positionLineNumber;\r\n if (lineNumber === 1) {\r\n commands[i] = new ReplaceCommandWithoutChangingPosition(new Range(1, 1, 1, 1), '\\n');\r\n }\r\n else {\r\n lineNumber--;\r\n let column = model.getLineMaxColumn(lineNumber);\r\n commands[i] = this._enter(config, model, false, new Range(lineNumber, column, lineNumber, column));\r\n }\r\n }\r\n return commands;\r\n }\r\n static lineInsertAfter(config, model, selections) {\r\n if (model === null || selections === null) {\r\n return [];\r\n }\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n const lineNumber = selections[i].positionLineNumber;\r\n let column = model.getLineMaxColumn(lineNumber);\r\n commands[i] = this._enter(config, model, false, new Range(lineNumber, column, lineNumber, column));\r\n }\r\n return commands;\r\n }\r\n static lineBreakInsert(config, model, selections) {\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = this._enter(config, model, true, selections[i]);\r\n }\r\n return commands;\r\n }\r\n}\r\nexport class TypeWithAutoClosingCommand extends ReplaceCommandWithOffsetCursorState {\r\n constructor(selection, openCharacter, insertOpenCharacter, closeCharacter) {\r\n super(selection, (insertOpenCharacter ? openCharacter : '') + closeCharacter, 0, -closeCharacter.length);\r\n this._openCharacter = openCharacter;\r\n this._closeCharacter = closeCharacter;\r\n this.closeCharacterRange = null;\r\n this.enclosingRange = null;\r\n }\r\n computeCursorState(model, helper) {\r\n let inverseEditOperations = helper.getInverseEditOperations();\r\n let range = inverseEditOperations[0].range;\r\n this.closeCharacterRange = new Range(range.startLineNumber, range.endColumn - this._closeCharacter.length, range.endLineNumber, range.endColumn);\r\n this.enclosingRange = new Range(range.startLineNumber, range.endColumn - this._openCharacter.length - this._closeCharacter.length, range.endLineNumber, range.endColumn);\r\n return super.computeCursorState(model, helper);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { SingleCursorState } from './cursorCommon.js';\r\nimport { getMapForWordSeparators } from './wordCharacterClassifier.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nexport class WordOperations {\r\n static _createWord(lineContent, wordType, nextCharClass, start, end) {\r\n // console.log('WORD ==> ' + start + ' => ' + end + ':::: <<<' + lineContent.substring(start, end) + '>>>');\r\n return { start: start, end: end, wordType: wordType, nextCharClass: nextCharClass };\r\n }\r\n static _findPreviousWordOnLine(wordSeparators, model, position) {\r\n let lineContent = model.getLineContent(position.lineNumber);\r\n return this._doFindPreviousWordOnLine(lineContent, wordSeparators, position);\r\n }\r\n static _doFindPreviousWordOnLine(lineContent, wordSeparators, position) {\r\n let wordType = 0 /* None */;\r\n for (let chIndex = position.column - 2; chIndex >= 0; chIndex--) {\r\n let chCode = lineContent.charCodeAt(chIndex);\r\n let chClass = wordSeparators.get(chCode);\r\n if (chClass === 0 /* Regular */) {\r\n if (wordType === 2 /* Separator */) {\r\n return this._createWord(lineContent, wordType, chClass, chIndex + 1, this._findEndOfWord(lineContent, wordSeparators, wordType, chIndex + 1));\r\n }\r\n wordType = 1 /* Regular */;\r\n }\r\n else if (chClass === 2 /* WordSeparator */) {\r\n if (wordType === 1 /* Regular */) {\r\n return this._createWord(lineContent, wordType, chClass, chIndex + 1, this._findEndOfWord(lineContent, wordSeparators, wordType, chIndex + 1));\r\n }\r\n wordType = 2 /* Separator */;\r\n }\r\n else if (chClass === 1 /* Whitespace */) {\r\n if (wordType !== 0 /* None */) {\r\n return this._createWord(lineContent, wordType, chClass, chIndex + 1, this._findEndOfWord(lineContent, wordSeparators, wordType, chIndex + 1));\r\n }\r\n }\r\n }\r\n if (wordType !== 0 /* None */) {\r\n return this._createWord(lineContent, wordType, 1 /* Whitespace */, 0, this._findEndOfWord(lineContent, wordSeparators, wordType, 0));\r\n }\r\n return null;\r\n }\r\n static _findEndOfWord(lineContent, wordSeparators, wordType, startIndex) {\r\n let len = lineContent.length;\r\n for (let chIndex = startIndex; chIndex < len; chIndex++) {\r\n let chCode = lineContent.charCodeAt(chIndex);\r\n let chClass = wordSeparators.get(chCode);\r\n if (chClass === 1 /* Whitespace */) {\r\n return chIndex;\r\n }\r\n if (wordType === 1 /* Regular */ && chClass === 2 /* WordSeparator */) {\r\n return chIndex;\r\n }\r\n if (wordType === 2 /* Separator */ && chClass === 0 /* Regular */) {\r\n return chIndex;\r\n }\r\n }\r\n return len;\r\n }\r\n static _findNextWordOnLine(wordSeparators, model, position) {\r\n let lineContent = model.getLineContent(position.lineNumber);\r\n return this._doFindNextWordOnLine(lineContent, wordSeparators, position);\r\n }\r\n static _doFindNextWordOnLine(lineContent, wordSeparators, position) {\r\n let wordType = 0 /* None */;\r\n let len = lineContent.length;\r\n for (let chIndex = position.column - 1; chIndex < len; chIndex++) {\r\n let chCode = lineContent.charCodeAt(chIndex);\r\n let chClass = wordSeparators.get(chCode);\r\n if (chClass === 0 /* Regular */) {\r\n if (wordType === 2 /* Separator */) {\r\n return this._createWord(lineContent, wordType, chClass, this._findStartOfWord(lineContent, wordSeparators, wordType, chIndex - 1), chIndex);\r\n }\r\n wordType = 1 /* Regular */;\r\n }\r\n else if (chClass === 2 /* WordSeparator */) {\r\n if (wordType === 1 /* Regular */) {\r\n return this._createWord(lineContent, wordType, chClass, this._findStartOfWord(lineContent, wordSeparators, wordType, chIndex - 1), chIndex);\r\n }\r\n wordType = 2 /* Separator */;\r\n }\r\n else if (chClass === 1 /* Whitespace */) {\r\n if (wordType !== 0 /* None */) {\r\n return this._createWord(lineContent, wordType, chClass, this._findStartOfWord(lineContent, wordSeparators, wordType, chIndex - 1), chIndex);\r\n }\r\n }\r\n }\r\n if (wordType !== 0 /* None */) {\r\n return this._createWord(lineContent, wordType, 1 /* Whitespace */, this._findStartOfWord(lineContent, wordSeparators, wordType, len - 1), len);\r\n }\r\n return null;\r\n }\r\n static _findStartOfWord(lineContent, wordSeparators, wordType, startIndex) {\r\n for (let chIndex = startIndex; chIndex >= 0; chIndex--) {\r\n let chCode = lineContent.charCodeAt(chIndex);\r\n let chClass = wordSeparators.get(chCode);\r\n if (chClass === 1 /* Whitespace */) {\r\n return chIndex + 1;\r\n }\r\n if (wordType === 1 /* Regular */ && chClass === 2 /* WordSeparator */) {\r\n return chIndex + 1;\r\n }\r\n if (wordType === 2 /* Separator */ && chClass === 0 /* Regular */) {\r\n return chIndex + 1;\r\n }\r\n }\r\n return 0;\r\n }\r\n static moveWordLeft(wordSeparators, model, position, wordNavigationType) {\r\n let lineNumber = position.lineNumber;\r\n let column = position.column;\r\n if (column === 1) {\r\n if (lineNumber > 1) {\r\n lineNumber = lineNumber - 1;\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n let prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, column));\r\n if (wordNavigationType === 0 /* WordStart */) {\r\n return new Position(lineNumber, prevWordOnLine ? prevWordOnLine.start + 1 : 1);\r\n }\r\n if (wordNavigationType === 1 /* WordStartFast */) {\r\n if (prevWordOnLine\r\n && prevWordOnLine.wordType === 2 /* Separator */\r\n && prevWordOnLine.end - prevWordOnLine.start === 1\r\n && prevWordOnLine.nextCharClass === 0 /* Regular */) {\r\n // Skip over a word made up of one single separator and followed by a regular character\r\n prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, prevWordOnLine.start + 1));\r\n }\r\n return new Position(lineNumber, prevWordOnLine ? prevWordOnLine.start + 1 : 1);\r\n }\r\n if (wordNavigationType === 3 /* WordAccessibility */) {\r\n while (prevWordOnLine\r\n && prevWordOnLine.wordType === 2 /* Separator */) {\r\n // Skip over words made up of only separators\r\n prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, prevWordOnLine.start + 1));\r\n }\r\n return new Position(lineNumber, prevWordOnLine ? prevWordOnLine.start + 1 : 1);\r\n }\r\n // We are stopping at the ending of words\r\n if (prevWordOnLine && column <= prevWordOnLine.end + 1) {\r\n prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, prevWordOnLine.start + 1));\r\n }\r\n return new Position(lineNumber, prevWordOnLine ? prevWordOnLine.end + 1 : 1);\r\n }\r\n static _moveWordPartLeft(model, position) {\r\n const lineNumber = position.lineNumber;\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n if (position.column === 1) {\r\n return (lineNumber > 1 ? new Position(lineNumber - 1, model.getLineMaxColumn(lineNumber - 1)) : position);\r\n }\r\n const lineContent = model.getLineContent(lineNumber);\r\n for (let column = position.column - 1; column > 1; column--) {\r\n const left = lineContent.charCodeAt(column - 2);\r\n const right = lineContent.charCodeAt(column - 1);\r\n if (left === 95 /* Underline */ && right !== 95 /* Underline */) {\r\n // snake_case_variables\r\n return new Position(lineNumber, column);\r\n }\r\n if (strings.isLowerAsciiLetter(left) && strings.isUpperAsciiLetter(right)) {\r\n // camelCaseVariables\r\n return new Position(lineNumber, column);\r\n }\r\n if (strings.isUpperAsciiLetter(left) && strings.isUpperAsciiLetter(right)) {\r\n // thisIsACamelCaseWithOneLetterWords\r\n if (column + 1 < maxColumn) {\r\n const rightRight = lineContent.charCodeAt(column);\r\n if (strings.isLowerAsciiLetter(rightRight)) {\r\n return new Position(lineNumber, column);\r\n }\r\n }\r\n }\r\n }\r\n return new Position(lineNumber, 1);\r\n }\r\n static moveWordRight(wordSeparators, model, position, wordNavigationType) {\r\n let lineNumber = position.lineNumber;\r\n let column = position.column;\r\n let movedDown = false;\r\n if (column === model.getLineMaxColumn(lineNumber)) {\r\n if (lineNumber < model.getLineCount()) {\r\n movedDown = true;\r\n lineNumber = lineNumber + 1;\r\n column = 1;\r\n }\r\n }\r\n let nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, column));\r\n if (wordNavigationType === 2 /* WordEnd */) {\r\n if (nextWordOnLine && nextWordOnLine.wordType === 2 /* Separator */) {\r\n if (nextWordOnLine.end - nextWordOnLine.start === 1 && nextWordOnLine.nextCharClass === 0 /* Regular */) {\r\n // Skip over a word made up of one single separator and followed by a regular character\r\n nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, nextWordOnLine.end + 1));\r\n }\r\n }\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.end + 1;\r\n }\r\n else {\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n else if (wordNavigationType === 3 /* WordAccessibility */) {\r\n if (movedDown) {\r\n // If we move to the next line, pretend that the cursor is right before the first character.\r\n // This is needed when the first word starts right at the first character - and in order not to miss it,\r\n // we need to start before.\r\n column = 0;\r\n }\r\n while (nextWordOnLine\r\n && (nextWordOnLine.wordType === 2 /* Separator */\r\n || nextWordOnLine.start + 1 <= column)) {\r\n // Skip over a word made up of one single separator\r\n // Also skip over word if it begins before current cursor position to ascertain we're moving forward at least 1 character.\r\n nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, nextWordOnLine.end + 1));\r\n }\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.start + 1;\r\n }\r\n else {\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n else {\r\n if (nextWordOnLine && !movedDown && column >= nextWordOnLine.start + 1) {\r\n nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, nextWordOnLine.end + 1));\r\n }\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.start + 1;\r\n }\r\n else {\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n static _moveWordPartRight(model, position) {\r\n const lineNumber = position.lineNumber;\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n if (position.column === maxColumn) {\r\n return (lineNumber < model.getLineCount() ? new Position(lineNumber + 1, 1) : position);\r\n }\r\n const lineContent = model.getLineContent(lineNumber);\r\n for (let column = position.column + 1; column < maxColumn; column++) {\r\n const left = lineContent.charCodeAt(column - 2);\r\n const right = lineContent.charCodeAt(column - 1);\r\n if (left !== 95 /* Underline */ && right === 95 /* Underline */) {\r\n // snake_case_variables\r\n return new Position(lineNumber, column);\r\n }\r\n if (strings.isLowerAsciiLetter(left) && strings.isUpperAsciiLetter(right)) {\r\n // camelCaseVariables\r\n return new Position(lineNumber, column);\r\n }\r\n if (strings.isUpperAsciiLetter(left) && strings.isUpperAsciiLetter(right)) {\r\n // thisIsACamelCaseWithOneLetterWords\r\n if (column + 1 < maxColumn) {\r\n const rightRight = lineContent.charCodeAt(column);\r\n if (strings.isLowerAsciiLetter(rightRight)) {\r\n return new Position(lineNumber, column);\r\n }\r\n }\r\n }\r\n }\r\n return new Position(lineNumber, maxColumn);\r\n }\r\n static _deleteWordLeftWhitespace(model, position) {\r\n const lineContent = model.getLineContent(position.lineNumber);\r\n const startIndex = position.column - 2;\r\n const lastNonWhitespace = strings.lastNonWhitespaceIndex(lineContent, startIndex);\r\n if (lastNonWhitespace + 1 < startIndex) {\r\n return new Range(position.lineNumber, lastNonWhitespace + 2, position.lineNumber, position.column);\r\n }\r\n return null;\r\n }\r\n static deleteWordLeft(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType) {\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n const position = new Position(selection.positionLineNumber, selection.positionColumn);\r\n let lineNumber = position.lineNumber;\r\n let column = position.column;\r\n if (lineNumber === 1 && column === 1) {\r\n // Ignore deleting at beginning of file\r\n return null;\r\n }\r\n if (whitespaceHeuristics) {\r\n let r = this._deleteWordLeftWhitespace(model, position);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n let prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, position);\r\n if (wordNavigationType === 0 /* WordStart */) {\r\n if (prevWordOnLine) {\r\n column = prevWordOnLine.start + 1;\r\n }\r\n else {\r\n if (column > 1) {\r\n column = 1;\r\n }\r\n else {\r\n lineNumber--;\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n }\r\n else {\r\n if (prevWordOnLine && column <= prevWordOnLine.end + 1) {\r\n prevWordOnLine = WordOperations._findPreviousWordOnLine(wordSeparators, model, new Position(lineNumber, prevWordOnLine.start + 1));\r\n }\r\n if (prevWordOnLine) {\r\n column = prevWordOnLine.end + 1;\r\n }\r\n else {\r\n if (column > 1) {\r\n column = 1;\r\n }\r\n else {\r\n lineNumber--;\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n }\r\n return new Range(lineNumber, column, position.lineNumber, position.column);\r\n }\r\n static _deleteWordPartLeft(model, selection) {\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n const pos = selection.getPosition();\r\n const toPosition = WordOperations._moveWordPartLeft(model, pos);\r\n return new Range(pos.lineNumber, pos.column, toPosition.lineNumber, toPosition.column);\r\n }\r\n static _findFirstNonWhitespaceChar(str, startIndex) {\r\n let len = str.length;\r\n for (let chIndex = startIndex; chIndex < len; chIndex++) {\r\n let ch = str.charAt(chIndex);\r\n if (ch !== ' ' && ch !== '\\t') {\r\n return chIndex;\r\n }\r\n }\r\n return len;\r\n }\r\n static _deleteWordRightWhitespace(model, position) {\r\n const lineContent = model.getLineContent(position.lineNumber);\r\n const startIndex = position.column - 1;\r\n const firstNonWhitespace = this._findFirstNonWhitespaceChar(lineContent, startIndex);\r\n if (startIndex + 1 < firstNonWhitespace) {\r\n // bingo\r\n return new Range(position.lineNumber, position.column, position.lineNumber, firstNonWhitespace + 1);\r\n }\r\n return null;\r\n }\r\n static deleteWordRight(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType) {\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n const position = new Position(selection.positionLineNumber, selection.positionColumn);\r\n let lineNumber = position.lineNumber;\r\n let column = position.column;\r\n const lineCount = model.getLineCount();\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n if (lineNumber === lineCount && column === maxColumn) {\r\n // Ignore deleting at end of file\r\n return null;\r\n }\r\n if (whitespaceHeuristics) {\r\n let r = this._deleteWordRightWhitespace(model, position);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n let nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, position);\r\n if (wordNavigationType === 2 /* WordEnd */) {\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.end + 1;\r\n }\r\n else {\r\n if (column < maxColumn || lineNumber === lineCount) {\r\n column = maxColumn;\r\n }\r\n else {\r\n lineNumber++;\r\n nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, 1));\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.start + 1;\r\n }\r\n else {\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n if (nextWordOnLine && column >= nextWordOnLine.start + 1) {\r\n nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, nextWordOnLine.end + 1));\r\n }\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.start + 1;\r\n }\r\n else {\r\n if (column < maxColumn || lineNumber === lineCount) {\r\n column = maxColumn;\r\n }\r\n else {\r\n lineNumber++;\r\n nextWordOnLine = WordOperations._findNextWordOnLine(wordSeparators, model, new Position(lineNumber, 1));\r\n if (nextWordOnLine) {\r\n column = nextWordOnLine.start + 1;\r\n }\r\n else {\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n }\r\n }\r\n }\r\n return new Range(lineNumber, column, position.lineNumber, position.column);\r\n }\r\n static _deleteWordPartRight(model, selection) {\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n const pos = selection.getPosition();\r\n const toPosition = WordOperations._moveWordPartRight(model, pos);\r\n return new Range(pos.lineNumber, pos.column, toPosition.lineNumber, toPosition.column);\r\n }\r\n static _createWordAtPosition(model, lineNumber, word) {\r\n const range = new Range(lineNumber, word.start + 1, lineNumber, word.end + 1);\r\n return {\r\n word: model.getValueInRange(range),\r\n startColumn: range.startColumn,\r\n endColumn: range.endColumn\r\n };\r\n }\r\n static getWordAtPosition(model, _wordSeparators, position) {\r\n const wordSeparators = getMapForWordSeparators(_wordSeparators);\r\n const prevWord = WordOperations._findPreviousWordOnLine(wordSeparators, model, position);\r\n if (prevWord && prevWord.wordType === 1 /* Regular */ && prevWord.start <= position.column - 1 && position.column - 1 <= prevWord.end) {\r\n return WordOperations._createWordAtPosition(model, position.lineNumber, prevWord);\r\n }\r\n const nextWord = WordOperations._findNextWordOnLine(wordSeparators, model, position);\r\n if (nextWord && nextWord.wordType === 1 /* Regular */ && nextWord.start <= position.column - 1 && position.column - 1 <= nextWord.end) {\r\n return WordOperations._createWordAtPosition(model, position.lineNumber, nextWord);\r\n }\r\n return null;\r\n }\r\n static word(config, model, cursor, inSelectionMode, position) {\r\n const wordSeparators = getMapForWordSeparators(config.wordSeparators);\r\n let prevWord = WordOperations._findPreviousWordOnLine(wordSeparators, model, position);\r\n let nextWord = WordOperations._findNextWordOnLine(wordSeparators, model, position);\r\n if (!inSelectionMode) {\r\n // Entering word selection for the first time\r\n let startColumn;\r\n let endColumn;\r\n if (prevWord && prevWord.wordType === 1 /* Regular */ && prevWord.start <= position.column - 1 && position.column - 1 <= prevWord.end) {\r\n // isTouchingPrevWord\r\n startColumn = prevWord.start + 1;\r\n endColumn = prevWord.end + 1;\r\n }\r\n else if (nextWord && nextWord.wordType === 1 /* Regular */ && nextWord.start <= position.column - 1 && position.column - 1 <= nextWord.end) {\r\n // isTouchingNextWord\r\n startColumn = nextWord.start + 1;\r\n endColumn = nextWord.end + 1;\r\n }\r\n else {\r\n if (prevWord) {\r\n startColumn = prevWord.end + 1;\r\n }\r\n else {\r\n startColumn = 1;\r\n }\r\n if (nextWord) {\r\n endColumn = nextWord.start + 1;\r\n }\r\n else {\r\n endColumn = model.getLineMaxColumn(position.lineNumber);\r\n }\r\n }\r\n return new SingleCursorState(new Range(position.lineNumber, startColumn, position.lineNumber, endColumn), 0, new Position(position.lineNumber, endColumn), 0);\r\n }\r\n let startColumn;\r\n let endColumn;\r\n if (prevWord && prevWord.wordType === 1 /* Regular */ && prevWord.start < position.column - 1 && position.column - 1 < prevWord.end) {\r\n // isInsidePrevWord\r\n startColumn = prevWord.start + 1;\r\n endColumn = prevWord.end + 1;\r\n }\r\n else if (nextWord && nextWord.wordType === 1 /* Regular */ && nextWord.start < position.column - 1 && position.column - 1 < nextWord.end) {\r\n // isInsideNextWord\r\n startColumn = nextWord.start + 1;\r\n endColumn = nextWord.end + 1;\r\n }\r\n else {\r\n startColumn = position.column;\r\n endColumn = position.column;\r\n }\r\n let lineNumber = position.lineNumber;\r\n let column;\r\n if (cursor.selectionStart.containsPosition(position)) {\r\n column = cursor.selectionStart.endColumn;\r\n }\r\n else if (position.isBeforeOrEqual(cursor.selectionStart.getStartPosition())) {\r\n column = startColumn;\r\n let possiblePosition = new Position(lineNumber, column);\r\n if (cursor.selectionStart.containsPosition(possiblePosition)) {\r\n column = cursor.selectionStart.endColumn;\r\n }\r\n }\r\n else {\r\n column = endColumn;\r\n let possiblePosition = new Position(lineNumber, column);\r\n if (cursor.selectionStart.containsPosition(possiblePosition)) {\r\n column = cursor.selectionStart.startColumn;\r\n }\r\n }\r\n return cursor.move(true, lineNumber, column, 0);\r\n }\r\n}\r\nexport class WordPartOperations extends WordOperations {\r\n static deleteWordPartLeft(wordSeparators, model, selection, whitespaceHeuristics) {\r\n const candidates = enforceDefined([\r\n WordOperations.deleteWordLeft(wordSeparators, model, selection, whitespaceHeuristics, 0 /* WordStart */),\r\n WordOperations.deleteWordLeft(wordSeparators, model, selection, whitespaceHeuristics, 2 /* WordEnd */),\r\n WordOperations._deleteWordPartLeft(model, selection)\r\n ]);\r\n candidates.sort(Range.compareRangesUsingEnds);\r\n return candidates[2];\r\n }\r\n static deleteWordPartRight(wordSeparators, model, selection, whitespaceHeuristics) {\r\n const candidates = enforceDefined([\r\n WordOperations.deleteWordRight(wordSeparators, model, selection, whitespaceHeuristics, 0 /* WordStart */),\r\n WordOperations.deleteWordRight(wordSeparators, model, selection, whitespaceHeuristics, 2 /* WordEnd */),\r\n WordOperations._deleteWordPartRight(model, selection)\r\n ]);\r\n candidates.sort(Range.compareRangesUsingStarts);\r\n return candidates[0];\r\n }\r\n static moveWordPartLeft(wordSeparators, model, position) {\r\n const candidates = enforceDefined([\r\n WordOperations.moveWordLeft(wordSeparators, model, position, 0 /* WordStart */),\r\n WordOperations.moveWordLeft(wordSeparators, model, position, 2 /* WordEnd */),\r\n WordOperations._moveWordPartLeft(model, position)\r\n ]);\r\n candidates.sort(Position.compare);\r\n return candidates[2];\r\n }\r\n static moveWordPartRight(wordSeparators, model, position) {\r\n const candidates = enforceDefined([\r\n WordOperations.moveWordRight(wordSeparators, model, position, 0 /* WordStart */),\r\n WordOperations.moveWordRight(wordSeparators, model, position, 2 /* WordEnd */),\r\n WordOperations._moveWordPartRight(model, position)\r\n ]);\r\n candidates.sort(Position.compare);\r\n return candidates[0];\r\n }\r\n}\r\nfunction enforceDefined(arr) {\r\n return arr.filter(el => Boolean(el));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CursorState, SingleCursorState } from './cursorCommon.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nexport class OneCursor {\r\n constructor(context) {\r\n this._selTrackedRange = null;\r\n this._trackSelection = true;\r\n this._setState(context, new SingleCursorState(new Range(1, 1, 1, 1), 0, new Position(1, 1), 0), new SingleCursorState(new Range(1, 1, 1, 1), 0, new Position(1, 1), 0));\r\n }\r\n dispose(context) {\r\n this._removeTrackedRange(context);\r\n }\r\n startTrackingSelection(context) {\r\n this._trackSelection = true;\r\n this._updateTrackedRange(context);\r\n }\r\n stopTrackingSelection(context) {\r\n this._trackSelection = false;\r\n this._removeTrackedRange(context);\r\n }\r\n _updateTrackedRange(context) {\r\n if (!this._trackSelection) {\r\n // don't track the selection\r\n return;\r\n }\r\n this._selTrackedRange = context.model._setTrackedRange(this._selTrackedRange, this.modelState.selection, 0 /* AlwaysGrowsWhenTypingAtEdges */);\r\n }\r\n _removeTrackedRange(context) {\r\n this._selTrackedRange = context.model._setTrackedRange(this._selTrackedRange, null, 0 /* AlwaysGrowsWhenTypingAtEdges */);\r\n }\r\n asCursorState() {\r\n return new CursorState(this.modelState, this.viewState);\r\n }\r\n readSelectionFromMarkers(context) {\r\n const range = context.model._getTrackedRange(this._selTrackedRange);\r\n if (this.modelState.selection.getDirection() === 0 /* LTR */) {\r\n return new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n return new Selection(range.endLineNumber, range.endColumn, range.startLineNumber, range.startColumn);\r\n }\r\n ensureValidState(context) {\r\n this._setState(context, this.modelState, this.viewState);\r\n }\r\n setState(context, modelState, viewState) {\r\n this._setState(context, modelState, viewState);\r\n }\r\n _setState(context, modelState, viewState) {\r\n if (!modelState) {\r\n if (!viewState) {\r\n return;\r\n }\r\n // We only have the view state => compute the model state\r\n const selectionStart = context.model.validateRange(context.coordinatesConverter.convertViewRangeToModelRange(viewState.selectionStart));\r\n const position = context.model.validatePosition(context.coordinatesConverter.convertViewPositionToModelPosition(viewState.position));\r\n modelState = new SingleCursorState(selectionStart, viewState.selectionStartLeftoverVisibleColumns, position, viewState.leftoverVisibleColumns);\r\n }\r\n else {\r\n // Validate new model state\r\n const selectionStart = context.model.validateRange(modelState.selectionStart);\r\n const selectionStartLeftoverVisibleColumns = modelState.selectionStart.equalsRange(selectionStart) ? modelState.selectionStartLeftoverVisibleColumns : 0;\r\n const position = context.model.validatePosition(modelState.position);\r\n const leftoverVisibleColumns = modelState.position.equals(position) ? modelState.leftoverVisibleColumns : 0;\r\n modelState = new SingleCursorState(selectionStart, selectionStartLeftoverVisibleColumns, position, leftoverVisibleColumns);\r\n }\r\n if (!viewState) {\r\n // We only have the model state => compute the view state\r\n const viewSelectionStart1 = context.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelState.selectionStart.startLineNumber, modelState.selectionStart.startColumn));\r\n const viewSelectionStart2 = context.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelState.selectionStart.endLineNumber, modelState.selectionStart.endColumn));\r\n const viewSelectionStart = new Range(viewSelectionStart1.lineNumber, viewSelectionStart1.column, viewSelectionStart2.lineNumber, viewSelectionStart2.column);\r\n const viewPosition = context.coordinatesConverter.convertModelPositionToViewPosition(modelState.position);\r\n viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns);\r\n }\r\n else {\r\n // Validate new view state\r\n const viewSelectionStart = context.coordinatesConverter.validateViewRange(viewState.selectionStart, modelState.selectionStart);\r\n const viewPosition = context.coordinatesConverter.validateViewPosition(viewState.position, modelState.position);\r\n viewState = new SingleCursorState(viewSelectionStart, modelState.selectionStartLeftoverVisibleColumns, viewPosition, modelState.leftoverVisibleColumns);\r\n }\r\n this.modelState = modelState;\r\n this.viewState = viewState;\r\n this._updateTrackedRange(context);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class WordCharacterClassifier extends CharacterClassifier {\r\n constructor(wordSeparators) {\r\n super(0 /* Regular */);\r\n for (let i = 0, len = wordSeparators.length; i < len; i++) {\r\n this.set(wordSeparators.charCodeAt(i), 2 /* WordSeparator */);\r\n }\r\n this.set(32 /* Space */, 1 /* Whitespace */);\r\n this.set(9 /* Tab */, 1 /* Whitespace */);\r\n }\r\n}\r\nfunction once(computeFn) {\r\n let cache = {}; // TODO@Alex unbounded cache\r\n return (input) => {\r\n if (!cache.hasOwnProperty(input)) {\r\n cache[input] = computeFn(input);\r\n }\r\n return cache[input];\r\n };\r\n}\r\nexport const getMapForWordSeparators = once((input) => new WordCharacterClassifier(input));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint8 } from '../../../base/common/uint.js';\r\n/**\r\n * A fast character classifier that uses a compact array for ASCII values.\r\n */\r\nexport class CharacterClassifier {\r\n constructor(_defaultValue) {\r\n let defaultValue = toUint8(_defaultValue);\r\n this._defaultValue = defaultValue;\r\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\r\n this._map = new Map();\r\n }\r\n static _createAsciiMap(defaultValue) {\r\n let asciiMap = new Uint8Array(256);\r\n for (let i = 0; i < 256; i++) {\r\n asciiMap[i] = defaultValue;\r\n }\r\n return asciiMap;\r\n }\r\n set(charCode, _value) {\r\n let value = toUint8(_value);\r\n if (charCode >= 0 && charCode < 256) {\r\n this._asciiMap[charCode] = value;\r\n }\r\n else {\r\n this._map.set(charCode, value);\r\n }\r\n }\r\n get(charCode) {\r\n if (charCode >= 0 && charCode < 256) {\r\n return this._asciiMap[charCode];\r\n }\r\n else {\r\n return (this._map.get(charCode) || this._defaultValue);\r\n }\r\n }\r\n}\r\nexport class CharacterSet {\r\n constructor() {\r\n this._actual = new CharacterClassifier(0 /* False */);\r\n }\r\n add(charCode) {\r\n this._actual.set(charCode, 1 /* True */);\r\n }\r\n has(charCode) {\r\n return (this._actual.get(charCode) === 1 /* True */);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from './range.js';\r\nexport class EditOperation {\r\n static insert(position, text) {\r\n return {\r\n range: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\r\n text: text,\r\n forceMoveMarkers: true\r\n };\r\n }\r\n static delete(range) {\r\n return {\r\n range: range,\r\n text: null\r\n };\r\n }\r\n static replace(range, text) {\r\n return {\r\n range: range,\r\n text: text\r\n };\r\n }\r\n static replaceMove(range, text) {\r\n return {\r\n range: range,\r\n text: text,\r\n forceMoveMarkers: true\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TokenMetadata } from '../modes.js';\r\nexport class LineTokens {\r\n constructor(tokens, text) {\r\n this._tokens = tokens;\r\n this._tokensCount = (this._tokens.length >>> 1);\r\n this._text = text;\r\n }\r\n equals(other) {\r\n if (other instanceof LineTokens) {\r\n return this.slicedEquals(other, 0, this._tokensCount);\r\n }\r\n return false;\r\n }\r\n slicedEquals(other, sliceFromTokenIndex, sliceTokenCount) {\r\n if (this._text !== other._text) {\r\n return false;\r\n }\r\n if (this._tokensCount !== other._tokensCount) {\r\n return false;\r\n }\r\n const from = (sliceFromTokenIndex << 1);\r\n const to = from + (sliceTokenCount << 1);\r\n for (let i = from; i < to; i++) {\r\n if (this._tokens[i] !== other._tokens[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n getLineContent() {\r\n return this._text;\r\n }\r\n getCount() {\r\n return this._tokensCount;\r\n }\r\n getStartOffset(tokenIndex) {\r\n if (tokenIndex > 0) {\r\n return this._tokens[(tokenIndex - 1) << 1];\r\n }\r\n return 0;\r\n }\r\n getMetadata(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return metadata;\r\n }\r\n getLanguageId(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getLanguageId(metadata);\r\n }\r\n getStandardTokenType(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getTokenType(metadata);\r\n }\r\n getForeground(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getForeground(metadata);\r\n }\r\n getClassName(tokenIndex) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getClassNameFromMetadata(metadata);\r\n }\r\n getInlineStyle(tokenIndex, colorMap) {\r\n const metadata = this._tokens[(tokenIndex << 1) + 1];\r\n return TokenMetadata.getInlineStyleFromMetadata(metadata, colorMap);\r\n }\r\n getEndOffset(tokenIndex) {\r\n return this._tokens[tokenIndex << 1];\r\n }\r\n /**\r\n * Find the token containing offset `offset`.\r\n * @param offset The search offset\r\n * @return The index of the token containing the offset.\r\n */\r\n findTokenIndexAtOffset(offset) {\r\n return LineTokens.findIndexInTokensArray(this._tokens, offset);\r\n }\r\n inflate() {\r\n return this;\r\n }\r\n sliceAndInflate(startOffset, endOffset, deltaOffset) {\r\n return new SlicedLineTokens(this, startOffset, endOffset, deltaOffset);\r\n }\r\n static convertToEndOffset(tokens, lineTextLength) {\r\n const tokenCount = (tokens.length >>> 1);\r\n const lastTokenIndex = tokenCount - 1;\r\n for (let tokenIndex = 0; tokenIndex < lastTokenIndex; tokenIndex++) {\r\n tokens[tokenIndex << 1] = tokens[(tokenIndex + 1) << 1];\r\n }\r\n tokens[lastTokenIndex << 1] = lineTextLength;\r\n }\r\n static findIndexInTokensArray(tokens, desiredIndex) {\r\n if (tokens.length <= 2) {\r\n return 0;\r\n }\r\n let low = 0;\r\n let high = (tokens.length >>> 1) - 1;\r\n while (low < high) {\r\n const mid = low + Math.floor((high - low) / 2);\r\n const endOffset = tokens[(mid << 1)];\r\n if (endOffset === desiredIndex) {\r\n return mid + 1;\r\n }\r\n else if (endOffset < desiredIndex) {\r\n low = mid + 1;\r\n }\r\n else if (endOffset > desiredIndex) {\r\n high = mid;\r\n }\r\n }\r\n return low;\r\n }\r\n}\r\nexport class SlicedLineTokens {\r\n constructor(source, startOffset, endOffset, deltaOffset) {\r\n this._source = source;\r\n this._startOffset = startOffset;\r\n this._endOffset = endOffset;\r\n this._deltaOffset = deltaOffset;\r\n this._firstTokenIndex = source.findTokenIndexAtOffset(startOffset);\r\n this._tokensCount = 0;\r\n for (let i = this._firstTokenIndex, len = source.getCount(); i < len; i++) {\r\n const tokenStartOffset = source.getStartOffset(i);\r\n if (tokenStartOffset >= endOffset) {\r\n break;\r\n }\r\n this._tokensCount++;\r\n }\r\n }\r\n equals(other) {\r\n if (other instanceof SlicedLineTokens) {\r\n return (this._startOffset === other._startOffset\r\n && this._endOffset === other._endOffset\r\n && this._deltaOffset === other._deltaOffset\r\n && this._source.slicedEquals(other._source, this._firstTokenIndex, this._tokensCount));\r\n }\r\n return false;\r\n }\r\n getCount() {\r\n return this._tokensCount;\r\n }\r\n getForeground(tokenIndex) {\r\n return this._source.getForeground(this._firstTokenIndex + tokenIndex);\r\n }\r\n getEndOffset(tokenIndex) {\r\n const tokenEndOffset = this._source.getEndOffset(this._firstTokenIndex + tokenIndex);\r\n return Math.min(this._endOffset, tokenEndOffset) - this._startOffset + this._deltaOffset;\r\n }\r\n getClassName(tokenIndex) {\r\n return this._source.getClassName(this._firstTokenIndex + tokenIndex);\r\n }\r\n getInlineStyle(tokenIndex, colorMap) {\r\n return this._source.getInlineStyle(this._firstTokenIndex + tokenIndex, colorMap);\r\n }\r\n findTokenIndexAtOffset(offset) {\r\n return this._source.findTokenIndexAtOffset(offset + this._startOffset - this._deltaOffset) - this._firstTokenIndex;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * A position in the editor.\r\n */\r\nexport class Position {\r\n constructor(lineNumber, column) {\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n }\r\n /**\r\n * Create a new position from this position.\r\n *\r\n * @param newLineNumber new line number\r\n * @param newColumn new column\r\n */\r\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\r\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\r\n return this;\r\n }\r\n else {\r\n return new Position(newLineNumber, newColumn);\r\n }\r\n }\r\n /**\r\n * Derive a new position from this position.\r\n *\r\n * @param deltaLineNumber line number delta\r\n * @param deltaColumn column delta\r\n */\r\n delta(deltaLineNumber = 0, deltaColumn = 0) {\r\n return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn);\r\n }\r\n /**\r\n * Test if this position equals other position\r\n */\r\n equals(other) {\r\n return Position.equals(this, other);\r\n }\r\n /**\r\n * Test if position `a` equals position `b`\r\n */\r\n static equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n return (!!a &&\r\n !!b &&\r\n a.lineNumber === b.lineNumber &&\r\n a.column === b.column);\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n isBefore(other) {\r\n return Position.isBefore(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n static isBefore(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column < b.column;\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n isBeforeOrEqual(other) {\r\n return Position.isBeforeOrEqual(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n static isBeforeOrEqual(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column <= b.column;\r\n }\r\n /**\r\n * A function that compares positions, useful for sorting\r\n */\r\n static compare(a, b) {\r\n let aLineNumber = a.lineNumber | 0;\r\n let bLineNumber = b.lineNumber | 0;\r\n if (aLineNumber === bLineNumber) {\r\n let aColumn = a.column | 0;\r\n let bColumn = b.column | 0;\r\n return aColumn - bColumn;\r\n }\r\n return aLineNumber - bLineNumber;\r\n }\r\n /**\r\n * Clone this position.\r\n */\r\n clone() {\r\n return new Position(this.lineNumber, this.column);\r\n }\r\n /**\r\n * Convert to a human-readable representation.\r\n */\r\n toString() {\r\n return '(' + this.lineNumber + ',' + this.column + ')';\r\n }\r\n // ---\r\n /**\r\n * Create a `Position` from an `IPosition`.\r\n */\r\n static lift(pos) {\r\n return new Position(pos.lineNumber, pos.column);\r\n }\r\n /**\r\n * Test if `obj` is an `IPosition`.\r\n */\r\n static isIPosition(obj) {\r\n return (obj\r\n && (typeof obj.lineNumber === 'number')\r\n && (typeof obj.column === 'number'));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\n/**\r\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\r\n */\r\nexport class Range {\r\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\r\n if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) {\r\n this.startLineNumber = endLineNumber;\r\n this.startColumn = endColumn;\r\n this.endLineNumber = startLineNumber;\r\n this.endColumn = startColumn;\r\n }\r\n else {\r\n this.startLineNumber = startLineNumber;\r\n this.startColumn = startColumn;\r\n this.endLineNumber = endLineNumber;\r\n this.endColumn = endColumn;\r\n }\r\n }\r\n /**\r\n * Test if this range is empty.\r\n */\r\n isEmpty() {\r\n return Range.isEmpty(this);\r\n }\r\n /**\r\n * Test if `range` is empty.\r\n */\r\n static isEmpty(range) {\r\n return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn);\r\n }\r\n /**\r\n * Test if position is in this range. If the position is at the edges, will return true.\r\n */\r\n containsPosition(position) {\r\n return Range.containsPosition(this, position);\r\n }\r\n /**\r\n * Test if `position` is in `range`. If the position is at the edges, will return true.\r\n */\r\n static containsPosition(range, position) {\r\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if range is in this range. If the range is equal to this range, will return true.\r\n */\r\n containsRange(range) {\r\n return Range.containsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\r\n */\r\n static containsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\r\n */\r\n strictContainsRange(range) {\r\n return Range.strictContainsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is strinctly in `range` (must start after, and end before). If the ranges are equal, will return false.\r\n */\r\n static strictContainsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n plusRange(range) {\r\n return Range.plusRange(this, range);\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n static plusRange(a, b) {\r\n let startLineNumber;\r\n let startColumn;\r\n let endLineNumber;\r\n let endColumn;\r\n if (b.startLineNumber < a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = b.startColumn;\r\n }\r\n else if (b.startLineNumber === a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = Math.min(b.startColumn, a.startColumn);\r\n }\r\n else {\r\n startLineNumber = a.startLineNumber;\r\n startColumn = a.startColumn;\r\n }\r\n if (b.endLineNumber > a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = b.endColumn;\r\n }\r\n else if (b.endLineNumber === a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = Math.max(b.endColumn, a.endColumn);\r\n }\r\n else {\r\n endLineNumber = a.endLineNumber;\r\n endColumn = a.endColumn;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n intersectRanges(range) {\r\n return Range.intersectRanges(this, range);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n static intersectRanges(a, b) {\r\n let resultStartLineNumber = a.startLineNumber;\r\n let resultStartColumn = a.startColumn;\r\n let resultEndLineNumber = a.endLineNumber;\r\n let resultEndColumn = a.endColumn;\r\n let otherStartLineNumber = b.startLineNumber;\r\n let otherStartColumn = b.startColumn;\r\n let otherEndLineNumber = b.endLineNumber;\r\n let otherEndColumn = b.endColumn;\r\n if (resultStartLineNumber < otherStartLineNumber) {\r\n resultStartLineNumber = otherStartLineNumber;\r\n resultStartColumn = otherStartColumn;\r\n }\r\n else if (resultStartLineNumber === otherStartLineNumber) {\r\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\r\n }\r\n if (resultEndLineNumber > otherEndLineNumber) {\r\n resultEndLineNumber = otherEndLineNumber;\r\n resultEndColumn = otherEndColumn;\r\n }\r\n else if (resultEndLineNumber === otherEndLineNumber) {\r\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\r\n }\r\n // Check if selection is now empty\r\n if (resultStartLineNumber > resultEndLineNumber) {\r\n return null;\r\n }\r\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) {\r\n return null;\r\n }\r\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\r\n }\r\n /**\r\n * Test if this range equals other.\r\n */\r\n equalsRange(other) {\r\n return Range.equalsRange(this, other);\r\n }\r\n /**\r\n * Test if range `a` equals `b`.\r\n */\r\n static equalsRange(a, b) {\r\n return (!!a &&\r\n !!b &&\r\n a.startLineNumber === b.startLineNumber &&\r\n a.startColumn === b.startColumn &&\r\n a.endLineNumber === b.endLineNumber &&\r\n a.endColumn === b.endColumn);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n getEndPosition() {\r\n return Range.getEndPosition(this);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n static getEndPosition(range) {\r\n return new Position(range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n getStartPosition() {\r\n return Range.getStartPosition(this);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n static getStartPosition(range) {\r\n return new Position(range.startLineNumber, range.startColumn);\r\n }\r\n /**\r\n * Transform to a user presentable string representation.\r\n */\r\n toString() {\r\n return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']';\r\n }\r\n /**\r\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n collapseToStart() {\r\n return Range.collapseToStart(this);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n static collapseToStart(range) {\r\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\r\n }\r\n // ---\r\n static fromPositions(start, end = start) {\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n static lift(range) {\r\n if (!range) {\r\n return null;\r\n }\r\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Test if `obj` is an `IRange`.\r\n */\r\n static isIRange(obj) {\r\n return (obj\r\n && (typeof obj.startLineNumber === 'number')\r\n && (typeof obj.startColumn === 'number')\r\n && (typeof obj.endLineNumber === 'number')\r\n && (typeof obj.endColumn === 'number'));\r\n }\r\n /**\r\n * Test if the two ranges are touching in any way.\r\n */\r\n static areIntersectingOrTouching(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\r\n */\r\n static areIntersecting(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the startPosition and then on the endPosition\r\n */\r\n static compareRangesUsingStarts(a, b) {\r\n if (a && b) {\r\n const aStartLineNumber = a.startLineNumber | 0;\r\n const bStartLineNumber = b.startLineNumber | 0;\r\n if (aStartLineNumber === bStartLineNumber) {\r\n const aStartColumn = a.startColumn | 0;\r\n const bStartColumn = b.startColumn | 0;\r\n if (aStartColumn === bStartColumn) {\r\n const aEndLineNumber = a.endLineNumber | 0;\r\n const bEndLineNumber = b.endLineNumber | 0;\r\n if (aEndLineNumber === bEndLineNumber) {\r\n const aEndColumn = a.endColumn | 0;\r\n const bEndColumn = b.endColumn | 0;\r\n return aEndColumn - bEndColumn;\r\n }\r\n return aEndLineNumber - bEndLineNumber;\r\n }\r\n return aStartColumn - bStartColumn;\r\n }\r\n return aStartLineNumber - bStartLineNumber;\r\n }\r\n const aExists = (a ? 1 : 0);\r\n const bExists = (b ? 1 : 0);\r\n return aExists - bExists;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the endPosition and then on the startPosition\r\n */\r\n static compareRangesUsingEnds(a, b) {\r\n if (a.endLineNumber === b.endLineNumber) {\r\n if (a.endColumn === b.endColumn) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.endColumn - b.endColumn;\r\n }\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n /**\r\n * Test if the range spans multiple lines.\r\n */\r\n static spansMultipleLines(range) {\r\n return range.endLineNumber > range.startLineNumber;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * A very VM friendly rgba datastructure.\r\n * Please don't touch unless you take a look at the IR.\r\n */\r\nexport class RGBA8 {\r\n constructor(r, g, b, a) {\r\n this.r = RGBA8._clamp(r);\r\n this.g = RGBA8._clamp(g);\r\n this.b = RGBA8._clamp(b);\r\n this.a = RGBA8._clamp(a);\r\n }\r\n equals(other) {\r\n return (this.r === other.r\r\n && this.g === other.g\r\n && this.b === other.b\r\n && this.a === other.a);\r\n }\r\n static _clamp(c) {\r\n if (c < 0) {\r\n return 0;\r\n }\r\n if (c > 255) {\r\n return 255;\r\n }\r\n return c | 0;\r\n }\r\n}\r\nRGBA8.Empty = new RGBA8(0, 0, 0, 0);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\nimport { Range } from './range.js';\r\n/**\r\n * A selection in the editor.\r\n * The selection is a range that has an orientation.\r\n */\r\nexport class Selection extends Range {\r\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\r\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\r\n this.selectionStartLineNumber = selectionStartLineNumber;\r\n this.selectionStartColumn = selectionStartColumn;\r\n this.positionLineNumber = positionLineNumber;\r\n this.positionColumn = positionColumn;\r\n }\r\n /**\r\n * Transform to a human-readable representation.\r\n */\r\n toString() {\r\n return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']';\r\n }\r\n /**\r\n * Test if equals other selection.\r\n */\r\n equalsSelection(other) {\r\n return (Selection.selectionsEqual(this, other));\r\n }\r\n /**\r\n * Test if the two selections are equal.\r\n */\r\n static selectionsEqual(a, b) {\r\n return (a.selectionStartLineNumber === b.selectionStartLineNumber &&\r\n a.selectionStartColumn === b.selectionStartColumn &&\r\n a.positionLineNumber === b.positionLineNumber &&\r\n a.positionColumn === b.positionColumn);\r\n }\r\n /**\r\n * Get directions (LTR or RTL).\r\n */\r\n getDirection() {\r\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) {\r\n return 0 /* LTR */;\r\n }\r\n return 1 /* RTL */;\r\n }\r\n /**\r\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\r\n }\r\n /**\r\n * Get the position at `positionLineNumber` and `positionColumn`.\r\n */\r\n getPosition() {\r\n return new Position(this.positionLineNumber, this.positionColumn);\r\n }\r\n /**\r\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\r\n }\r\n // ----\r\n /**\r\n * Create a `Selection` from one or two positions\r\n */\r\n static fromPositions(start, end = start) {\r\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n /**\r\n * Create a `Selection` from an `ISelection`.\r\n */\r\n static liftSelection(sel) {\r\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\r\n }\r\n /**\r\n * `a` equals `b`.\r\n */\r\n static selectionsArrEqual(a, b) {\r\n if (a && !b || !a && b) {\r\n return false;\r\n }\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (!this.selectionsEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `obj` is an `ISelection`.\r\n */\r\n static isISelection(obj) {\r\n return (obj\r\n && (typeof obj.selectionStartLineNumber === 'number')\r\n && (typeof obj.selectionStartColumn === 'number')\r\n && (typeof obj.positionLineNumber === 'number')\r\n && (typeof obj.positionColumn === 'number'));\r\n }\r\n /**\r\n * Create with a direction.\r\n */\r\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\r\n if (direction === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as buffer from '../../../base/common/buffer.js';\r\nlet _platformTextDecoder;\r\nexport function getPlatformTextDecoder() {\r\n if (!_platformTextDecoder) {\r\n _platformTextDecoder = new TextDecoder(platform.isLittleEndian() ? 'UTF-16LE' : 'UTF-16BE');\r\n }\r\n return _platformTextDecoder;\r\n}\r\nexport const hasTextDecoder = (typeof TextDecoder !== 'undefined');\r\nexport let createStringBuilder;\r\nexport let decodeUTF16LE;\r\nif (hasTextDecoder) {\r\n createStringBuilder = (capacity) => new StringBuilder(capacity);\r\n decodeUTF16LE = standardDecodeUTF16LE;\r\n}\r\nelse {\r\n createStringBuilder = (capacity) => new CompatStringBuilder();\r\n decodeUTF16LE = compatDecodeUTF16LE;\r\n}\r\nfunction standardDecodeUTF16LE(source, offset, len) {\r\n const view = new Uint16Array(source.buffer, offset, len);\r\n return getPlatformTextDecoder().decode(view);\r\n}\r\nfunction compatDecodeUTF16LE(source, offset, len) {\r\n let result = [];\r\n let resultLen = 0;\r\n for (let i = 0; i < len; i++) {\r\n const charCode = buffer.readUInt16LE(source, offset);\r\n offset += 2;\r\n result[resultLen++] = String.fromCharCode(charCode);\r\n }\r\n return result.join('');\r\n}\r\nclass StringBuilder {\r\n constructor(capacity) {\r\n this._capacity = capacity | 0;\r\n this._buffer = new Uint16Array(this._capacity);\r\n this._completedStrings = null;\r\n this._bufferLength = 0;\r\n }\r\n reset() {\r\n this._completedStrings = null;\r\n this._bufferLength = 0;\r\n }\r\n build() {\r\n if (this._completedStrings !== null) {\r\n this._flushBuffer();\r\n return this._completedStrings.join('');\r\n }\r\n return this._buildBuffer();\r\n }\r\n _buildBuffer() {\r\n if (this._bufferLength === 0) {\r\n return '';\r\n }\r\n const view = new Uint16Array(this._buffer.buffer, 0, this._bufferLength);\r\n return getPlatformTextDecoder().decode(view);\r\n }\r\n _flushBuffer() {\r\n const bufferString = this._buildBuffer();\r\n this._bufferLength = 0;\r\n if (this._completedStrings === null) {\r\n this._completedStrings = [bufferString];\r\n }\r\n else {\r\n this._completedStrings[this._completedStrings.length] = bufferString;\r\n }\r\n }\r\n write1(charCode) {\r\n const remainingSpace = this._capacity - this._bufferLength;\r\n if (remainingSpace <= 1) {\r\n if (remainingSpace === 0 || strings.isHighSurrogate(charCode)) {\r\n this._flushBuffer();\r\n }\r\n }\r\n this._buffer[this._bufferLength++] = charCode;\r\n }\r\n appendASCII(charCode) {\r\n if (this._bufferLength === this._capacity) {\r\n // buffer is full\r\n this._flushBuffer();\r\n }\r\n this._buffer[this._bufferLength++] = charCode;\r\n }\r\n appendASCIIString(str) {\r\n const strLen = str.length;\r\n if (this._bufferLength + strLen >= this._capacity) {\r\n // This string does not fit in the remaining buffer space\r\n this._flushBuffer();\r\n this._completedStrings[this._completedStrings.length] = str;\r\n return;\r\n }\r\n for (let i = 0; i < strLen; i++) {\r\n this._buffer[this._bufferLength++] = str.charCodeAt(i);\r\n }\r\n }\r\n}\r\nclass CompatStringBuilder {\r\n constructor() {\r\n this._pieces = [];\r\n this._piecesLen = 0;\r\n }\r\n reset() {\r\n this._pieces = [];\r\n this._piecesLen = 0;\r\n }\r\n build() {\r\n return this._pieces.join('');\r\n }\r\n write1(charCode) {\r\n this._pieces[this._piecesLen++] = String.fromCharCode(charCode);\r\n }\r\n appendASCII(charCode) {\r\n this._pieces[this._piecesLen++] = String.fromCharCode(charCode);\r\n }\r\n appendASCIIString(str) {\r\n this._pieces[this._piecesLen++] = str;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Token {\r\n constructor(offset, type, language) {\r\n this.offset = offset | 0; // @perf\r\n this.type = type;\r\n this.language = language;\r\n }\r\n toString() {\r\n return '(' + this.offset + ', ' + this.type + ')';\r\n }\r\n}\r\nexport class TokenizationResult {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\nexport class TokenizationResult2 {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\r\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\r\n const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\r\n return diffAlgo.ComputeDiff(pretty);\r\n}\r\nclass LineSequence {\r\n constructor(lines) {\r\n const startColumns = [];\r\n const endColumns = [];\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\r\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\r\n }\r\n this.lines = lines;\r\n this._startColumns = startColumns;\r\n this._endColumns = endColumns;\r\n }\r\n getElements() {\r\n const elements = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\r\n }\r\n return elements;\r\n }\r\n getStartLineNumber(i) {\r\n return i + 1;\r\n }\r\n getEndLineNumber(i) {\r\n return i + 1;\r\n }\r\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\r\n const charCodes = [];\r\n const lineNumbers = [];\r\n const columns = [];\r\n let len = 0;\r\n for (let index = startIndex; index <= endIndex; index++) {\r\n const lineContent = this.lines[index];\r\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\r\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\r\n for (let col = startColumn; col < endColumn; col++) {\r\n charCodes[len] = lineContent.charCodeAt(col - 1);\r\n lineNumbers[len] = index + 1;\r\n columns[len] = col;\r\n len++;\r\n }\r\n }\r\n return new CharSequence(charCodes, lineNumbers, columns);\r\n }\r\n}\r\nclass CharSequence {\r\n constructor(charCodes, lineNumbers, columns) {\r\n this._charCodes = charCodes;\r\n this._lineNumbers = lineNumbers;\r\n this._columns = columns;\r\n }\r\n getElements() {\r\n return this._charCodes;\r\n }\r\n getStartLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getStartColumn(i) {\r\n return this._columns[i];\r\n }\r\n getEndLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getEndColumn(i) {\r\n return this._columns[i] + 1;\r\n }\r\n}\r\nclass CharChange {\r\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalStartColumn = originalStartColumn;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.originalEndColumn = originalEndColumn;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedStartColumn = modifiedStartColumn;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.modifiedEndColumn = modifiedEndColumn;\r\n }\r\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\r\n let originalStartLineNumber;\r\n let originalStartColumn;\r\n let originalEndLineNumber;\r\n let originalEndColumn;\r\n let modifiedStartLineNumber;\r\n let modifiedStartColumn;\r\n let modifiedEndLineNumber;\r\n let modifiedEndColumn;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = 0;\r\n originalStartColumn = 0;\r\n originalEndLineNumber = 0;\r\n originalEndColumn = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\r\n originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\r\n originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = 0;\r\n modifiedStartColumn = 0;\r\n modifiedEndLineNumber = 0;\r\n modifiedEndColumn = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\r\n }\r\n}\r\nfunction postProcessCharChanges(rawChanges) {\r\n if (rawChanges.length <= 1) {\r\n return rawChanges;\r\n }\r\n const result = [rawChanges[0]];\r\n let prevChange = result[0];\r\n for (let i = 1, len = rawChanges.length; i < len; i++) {\r\n const currChange = rawChanges[i];\r\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\r\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\r\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\r\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\r\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\r\n // Merge the current change into the previous one\r\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\r\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\r\n }\r\n else {\r\n // Add the current change\r\n result.push(currChange);\r\n prevChange = currChange;\r\n }\r\n }\r\n return result;\r\n}\r\nclass LineChange {\r\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.charChanges = charChanges;\r\n }\r\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\r\n let originalStartLineNumber;\r\n let originalEndLineNumber;\r\n let modifiedStartLineNumber;\r\n let modifiedEndLineNumber;\r\n let charChanges = undefined;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\r\n originalEndLineNumber = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\r\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\r\n modifiedEndLineNumber = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\r\n // Compute character changes for diff chunks of at most 20 lines...\r\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\r\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\r\n if (shouldPostProcessCharChanges) {\r\n rawChanges = postProcessCharChanges(rawChanges);\r\n }\r\n charChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\r\n }\r\n }\r\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\r\n }\r\n}\r\nexport class DiffComputer {\r\n constructor(originalLines, modifiedLines, opts) {\r\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\r\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\r\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\r\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\r\n this.originalLines = originalLines;\r\n this.modifiedLines = modifiedLines;\r\n this.original = new LineSequence(originalLines);\r\n this.modified = new LineSequence(modifiedLines);\r\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\r\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\r\n }\r\n computeDiff() {\r\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\r\n // empty original => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: 1,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: this.modified.lines.length,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n // empty modified => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: this.original.lines.length,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: 1,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\r\n const rawChanges = diffResult.changes;\r\n const quitEarly = diffResult.quitEarly;\r\n // The diff is always computed with ignoring trim whitespace\r\n // This ensures we get the prettiest diff\r\n if (this.shouldIgnoreTrimWhitespace) {\r\n const lineChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: lineChanges\r\n };\r\n }\r\n // Need to post-process and introduce changes where the trim whitespace is different\r\n // Note that we are looping starting at -1 to also cover the lines before the first change\r\n const result = [];\r\n let originalLineIndex = 0;\r\n let modifiedLineIndex = 0;\r\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\r\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\r\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\r\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\r\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\r\n const originalLine = this.originalLines[originalLineIndex];\r\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\r\n if (originalLine !== modifiedLine) {\r\n // These lines differ only in trim whitespace\r\n // Check the leading whitespace\r\n {\r\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\r\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\r\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\r\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\r\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalStartColumn--;\r\n modifiedStartColumn--;\r\n }\r\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\r\n }\r\n }\r\n // Check the trailing whitespace\r\n {\r\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\r\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\r\n const originalMaxColumn = originalLine.length + 1;\r\n const modifiedMaxColumn = modifiedLine.length + 1;\r\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\r\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\r\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalEndColumn++;\r\n modifiedEndColumn++;\r\n }\r\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\r\n }\r\n }\r\n }\r\n originalLineIndex++;\r\n modifiedLineIndex++;\r\n }\r\n if (nextChange) {\r\n // Emit the actual change\r\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n originalLineIndex += nextChange.originalLength;\r\n modifiedLineIndex += nextChange.modifiedLength;\r\n }\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: result\r\n };\r\n }\r\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\r\n // Merged into previous\r\n return;\r\n }\r\n let charChanges = undefined;\r\n if (this.shouldComputeCharChanges) {\r\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\r\n }\r\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\r\n }\r\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n const len = result.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const prevChange = result[len - 1];\r\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\r\n // Don't merge with inserts/deletes\r\n return false;\r\n }\r\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\r\n prevChange.originalEndLineNumber = originalLineNumber;\r\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\r\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\r\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction getFirstNonBlankColumn(txt, defaultValue) {\r\n const r = strings.firstNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 1;\r\n}\r\nfunction getLastNonBlankColumn(txt, defaultValue) {\r\n const r = strings.lastNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 2;\r\n}\r\nfunction createContinueProcessingPredicate(maximumRuntime) {\r\n if (maximumRuntime === 0) {\r\n return () => true;\r\n }\r\n const startTime = Date.now();\r\n return () => {\r\n return Date.now() - startTime < maximumRuntime;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class InternalEditorAction {\r\n constructor(id, label, alias, precondition, run, contextKeyService) {\r\n this.id = id;\r\n this.label = label;\r\n this.alias = alias;\r\n this._precondition = precondition;\r\n this._run = run;\r\n this._contextKeyService = contextKeyService;\r\n }\r\n isSupported() {\r\n return this._contextKeyService.contextMatchesRules(this._precondition);\r\n }\r\n run() {\r\n if (!this.isSupported()) {\r\n return Promise.resolve(undefined);\r\n }\r\n return this._run();\r\n }\r\n}\r\n","/**\r\n * @internal\r\n */\r\nexport function isThemeColor(o) {\r\n return o && typeof o.id === 'string';\r\n}\r\n/**\r\n * The type of the `IEditor`.\r\n */\r\nexport const EditorType = {\r\n ICodeEditor: 'vs.editor.ICodeEditor',\r\n IDiffEditor: 'vs.editor.IDiffEditor'\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RawContextKey } from '../../platform/contextkey/common/contextkey.js';\r\nexport var EditorContextKeys;\r\n(function (EditorContextKeys) {\r\n EditorContextKeys.editorSimpleInput = new RawContextKey('editorSimpleInput', false);\r\n /**\r\n * A context key that is set when the editor's text has focus (cursor is blinking).\r\n * Is false when focus is in simple editor widgets (repl input, scm commit input).\r\n */\r\n EditorContextKeys.editorTextFocus = new RawContextKey('editorTextFocus', false);\r\n /**\r\n * A context key that is set when the editor's text or an editor's widget has focus.\r\n */\r\n EditorContextKeys.focus = new RawContextKey('editorFocus', false);\r\n /**\r\n * A context key that is set when any editor input has focus (regular editor, repl input...).\r\n */\r\n EditorContextKeys.textInputFocus = new RawContextKey('textInputFocus', false);\r\n EditorContextKeys.readOnly = new RawContextKey('editorReadonly', false);\r\n EditorContextKeys.columnSelection = new RawContextKey('editorColumnSelection', false);\r\n EditorContextKeys.writable = EditorContextKeys.readOnly.toNegated();\r\n EditorContextKeys.hasNonEmptySelection = new RawContextKey('editorHasSelection', false);\r\n EditorContextKeys.hasOnlyEmptySelection = EditorContextKeys.hasNonEmptySelection.toNegated();\r\n EditorContextKeys.hasMultipleSelections = new RawContextKey('editorHasMultipleSelections', false);\r\n EditorContextKeys.hasSingleSelection = EditorContextKeys.hasMultipleSelections.toNegated();\r\n EditorContextKeys.tabMovesFocus = new RawContextKey('editorTabMovesFocus', false);\r\n EditorContextKeys.tabDoesNotMoveFocus = EditorContextKeys.tabMovesFocus.toNegated();\r\n EditorContextKeys.isInWalkThroughSnippet = new RawContextKey('isInEmbeddedEditor', false);\r\n EditorContextKeys.canUndo = new RawContextKey('canUndo', false);\r\n EditorContextKeys.canRedo = new RawContextKey('canRedo', false);\r\n EditorContextKeys.hoverVisible = new RawContextKey('editorHoverVisible', false);\r\n /**\r\n * A context key that is set when an editor is part of a larger editor, like notebooks or\r\n * (future) a diff editor\r\n */\r\n EditorContextKeys.inCompositeEditor = new RawContextKey('inCompositeEditor', undefined);\r\n EditorContextKeys.notInCompositeEditor = EditorContextKeys.inCompositeEditor.toNegated();\r\n // -- mode context keys\r\n EditorContextKeys.languageId = new RawContextKey('editorLangId', '');\r\n EditorContextKeys.hasCompletionItemProvider = new RawContextKey('editorHasCompletionItemProvider', false);\r\n EditorContextKeys.hasCodeActionsProvider = new RawContextKey('editorHasCodeActionsProvider', false);\r\n EditorContextKeys.hasCodeLensProvider = new RawContextKey('editorHasCodeLensProvider', false);\r\n EditorContextKeys.hasDefinitionProvider = new RawContextKey('editorHasDefinitionProvider', false);\r\n EditorContextKeys.hasDeclarationProvider = new RawContextKey('editorHasDeclarationProvider', false);\r\n EditorContextKeys.hasImplementationProvider = new RawContextKey('editorHasImplementationProvider', false);\r\n EditorContextKeys.hasTypeDefinitionProvider = new RawContextKey('editorHasTypeDefinitionProvider', false);\r\n EditorContextKeys.hasHoverProvider = new RawContextKey('editorHasHoverProvider', false);\r\n EditorContextKeys.hasDocumentHighlightProvider = new RawContextKey('editorHasDocumentHighlightProvider', false);\r\n EditorContextKeys.hasDocumentSymbolProvider = new RawContextKey('editorHasDocumentSymbolProvider', false);\r\n EditorContextKeys.hasReferenceProvider = new RawContextKey('editorHasReferenceProvider', false);\r\n EditorContextKeys.hasRenameProvider = new RawContextKey('editorHasRenameProvider', false);\r\n EditorContextKeys.hasSignatureHelpProvider = new RawContextKey('editorHasSignatureHelpProvider', false);\r\n // -- mode context keys: formatting\r\n EditorContextKeys.hasDocumentFormattingProvider = new RawContextKey('editorHasDocumentFormattingProvider', false);\r\n EditorContextKeys.hasDocumentSelectionFormattingProvider = new RawContextKey('editorHasDocumentSelectionFormattingProvider', false);\r\n EditorContextKeys.hasMultipleDocumentFormattingProvider = new RawContextKey('editorHasMultipleDocumentFormattingProvider', false);\r\n EditorContextKeys.hasMultipleDocumentSelectionFormattingProvider = new RawContextKey('editorHasMultipleDocumentSelectionFormattingProvider', false);\r\n})(EditorContextKeys || (EditorContextKeys = {}));\r\n","/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\nexport class TextModelResolvedOptions {\r\n /**\r\n * @internal\r\n */\r\n constructor(src) {\r\n this.tabSize = Math.max(1, src.tabSize | 0);\r\n this.indentSize = src.tabSize | 0;\r\n this.insertSpaces = Boolean(src.insertSpaces);\r\n this.defaultEOL = src.defaultEOL | 0;\r\n this.trimAutoWhitespace = Boolean(src.trimAutoWhitespace);\r\n }\r\n /**\r\n * @internal\r\n */\r\n equals(other) {\r\n return (this.tabSize === other.tabSize\r\n && this.indentSize === other.indentSize\r\n && this.insertSpaces === other.insertSpaces\r\n && this.defaultEOL === other.defaultEOL\r\n && this.trimAutoWhitespace === other.trimAutoWhitespace);\r\n }\r\n /**\r\n * @internal\r\n */\r\n createChangeEvent(newOpts) {\r\n return {\r\n tabSize: this.tabSize !== newOpts.tabSize,\r\n indentSize: this.indentSize !== newOpts.indentSize,\r\n insertSpaces: this.insertSpaces !== newOpts.insertSpaces,\r\n trimAutoWhitespace: this.trimAutoWhitespace !== newOpts.trimAutoWhitespace,\r\n };\r\n }\r\n}\r\nexport class FindMatch {\r\n /**\r\n * @internal\r\n */\r\n constructor(range, matches) {\r\n this.range = range;\r\n this.matches = matches;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ValidAnnotatedEditOperation {\r\n constructor(identifier, range, text, forceMoveMarkers, isAutoWhitespaceEdit, _isTracked) {\r\n this.identifier = identifier;\r\n this.range = range;\r\n this.text = text;\r\n this.forceMoveMarkers = forceMoveMarkers;\r\n this.isAutoWhitespaceEdit = isAutoWhitespaceEdit;\r\n this._isTracked = _isTracked;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class ApplyEditsResult {\r\n constructor(reverseEdits, changes, trimAutoWhitespaceLineNumbers) {\r\n this.reverseEdits = reverseEdits;\r\n this.changes = changes;\r\n this.trimAutoWhitespaceLineNumbers = trimAutoWhitespaceLineNumbers;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { TextChange, compressConsecutiveTextChanges } from './textChange.js';\r\nimport * as buffer from '../../../base/common/buffer.js';\r\nfunction uriGetComparisonKey(resource) {\r\n return resource.toString();\r\n}\r\nclass SingleModelEditStackData {\r\n constructor(beforeVersionId, afterVersionId, beforeEOL, afterEOL, beforeCursorState, afterCursorState, changes) {\r\n this.beforeVersionId = beforeVersionId;\r\n this.afterVersionId = afterVersionId;\r\n this.beforeEOL = beforeEOL;\r\n this.afterEOL = afterEOL;\r\n this.beforeCursorState = beforeCursorState;\r\n this.afterCursorState = afterCursorState;\r\n this.changes = changes;\r\n }\r\n static create(model, beforeCursorState) {\r\n const alternativeVersionId = model.getAlternativeVersionId();\r\n const eol = getModelEOL(model);\r\n return new SingleModelEditStackData(alternativeVersionId, alternativeVersionId, eol, eol, beforeCursorState, beforeCursorState, []);\r\n }\r\n append(model, textChanges, afterEOL, afterVersionId, afterCursorState) {\r\n if (textChanges.length > 0) {\r\n this.changes = compressConsecutiveTextChanges(this.changes, textChanges);\r\n }\r\n this.afterEOL = afterEOL;\r\n this.afterVersionId = afterVersionId;\r\n this.afterCursorState = afterCursorState;\r\n }\r\n static _writeSelectionsSize(selections) {\r\n return 4 + 4 * 4 * (selections ? selections.length : 0);\r\n }\r\n static _writeSelections(b, selections, offset) {\r\n buffer.writeUInt32BE(b, (selections ? selections.length : 0), offset);\r\n offset += 4;\r\n if (selections) {\r\n for (const selection of selections) {\r\n buffer.writeUInt32BE(b, selection.selectionStartLineNumber, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, selection.selectionStartColumn, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, selection.positionLineNumber, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, selection.positionColumn, offset);\r\n offset += 4;\r\n }\r\n }\r\n return offset;\r\n }\r\n static _readSelections(b, offset, dest) {\r\n const count = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n for (let i = 0; i < count; i++) {\r\n const selectionStartLineNumber = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const selectionStartColumn = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const positionLineNumber = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const positionColumn = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n dest.push(new Selection(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn));\r\n }\r\n return offset;\r\n }\r\n serialize() {\r\n let necessarySize = (+4 // beforeVersionId\r\n + 4 // afterVersionId\r\n + 1 // beforeEOL\r\n + 1 // afterEOL\r\n + SingleModelEditStackData._writeSelectionsSize(this.beforeCursorState)\r\n + SingleModelEditStackData._writeSelectionsSize(this.afterCursorState)\r\n + 4 // change count\r\n );\r\n for (const change of this.changes) {\r\n necessarySize += change.writeSize();\r\n }\r\n const b = new Uint8Array(necessarySize);\r\n let offset = 0;\r\n buffer.writeUInt32BE(b, this.beforeVersionId, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, this.afterVersionId, offset);\r\n offset += 4;\r\n buffer.writeUInt8(b, this.beforeEOL, offset);\r\n offset += 1;\r\n buffer.writeUInt8(b, this.afterEOL, offset);\r\n offset += 1;\r\n offset = SingleModelEditStackData._writeSelections(b, this.beforeCursorState, offset);\r\n offset = SingleModelEditStackData._writeSelections(b, this.afterCursorState, offset);\r\n buffer.writeUInt32BE(b, this.changes.length, offset);\r\n offset += 4;\r\n for (const change of this.changes) {\r\n offset = change.write(b, offset);\r\n }\r\n return b.buffer;\r\n }\r\n static deserialize(source) {\r\n const b = new Uint8Array(source);\r\n let offset = 0;\r\n const beforeVersionId = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const afterVersionId = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const beforeEOL = buffer.readUInt8(b, offset);\r\n offset += 1;\r\n const afterEOL = buffer.readUInt8(b, offset);\r\n offset += 1;\r\n const beforeCursorState = [];\r\n offset = SingleModelEditStackData._readSelections(b, offset, beforeCursorState);\r\n const afterCursorState = [];\r\n offset = SingleModelEditStackData._readSelections(b, offset, afterCursorState);\r\n const changeCount = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const changes = [];\r\n for (let i = 0; i < changeCount; i++) {\r\n offset = TextChange.read(b, offset, changes);\r\n }\r\n return new SingleModelEditStackData(beforeVersionId, afterVersionId, beforeEOL, afterEOL, beforeCursorState, afterCursorState, changes);\r\n }\r\n}\r\nexport class SingleModelEditStackElement {\r\n constructor(model, beforeCursorState) {\r\n this.model = model;\r\n this._data = SingleModelEditStackData.create(model, beforeCursorState);\r\n }\r\n get type() {\r\n return 0 /* Resource */;\r\n }\r\n get resource() {\r\n if (URI.isUri(this.model)) {\r\n return this.model;\r\n }\r\n return this.model.uri;\r\n }\r\n get label() {\r\n return nls.localize('edit', \"Typing\");\r\n }\r\n toString() {\r\n const data = (this._data instanceof SingleModelEditStackData ? this._data : SingleModelEditStackData.deserialize(this._data));\r\n return data.changes.map(change => change.toString()).join(', ');\r\n }\r\n matchesResource(resource) {\r\n const uri = (URI.isUri(this.model) ? this.model : this.model.uri);\r\n return (uri.toString() === resource.toString());\r\n }\r\n setModel(model) {\r\n this.model = model;\r\n }\r\n canAppend(model) {\r\n return (this.model === model && this._data instanceof SingleModelEditStackData);\r\n }\r\n append(model, textChanges, afterEOL, afterVersionId, afterCursorState) {\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data.append(model, textChanges, afterEOL, afterVersionId, afterCursorState);\r\n }\r\n }\r\n close() {\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n }\r\n undo() {\r\n if (URI.isUri(this.model)) {\r\n // don't have a model\r\n throw new Error(`Invalid SingleModelEditStackElement`);\r\n }\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n const data = SingleModelEditStackData.deserialize(this._data);\r\n this.model._applyUndo(data.changes, data.beforeEOL, data.beforeVersionId, data.beforeCursorState);\r\n }\r\n redo() {\r\n if (URI.isUri(this.model)) {\r\n // don't have a model\r\n throw new Error(`Invalid SingleModelEditStackElement`);\r\n }\r\n if (this._data instanceof SingleModelEditStackData) {\r\n this._data = this._data.serialize();\r\n }\r\n const data = SingleModelEditStackData.deserialize(this._data);\r\n this.model._applyRedo(data.changes, data.afterEOL, data.afterVersionId, data.afterCursorState);\r\n }\r\n}\r\nexport class MultiModelEditStackElement {\r\n constructor(label, editStackElements) {\r\n this.type = 1 /* Workspace */;\r\n this.label = label;\r\n this._isOpen = true;\r\n this._editStackElementsArr = editStackElements.slice(0);\r\n this._editStackElementsMap = new Map();\r\n for (const editStackElement of this._editStackElementsArr) {\r\n const key = uriGetComparisonKey(editStackElement.resource);\r\n this._editStackElementsMap.set(key, editStackElement);\r\n }\r\n this._delegate = null;\r\n }\r\n get resources() {\r\n return this._editStackElementsArr.map(editStackElement => editStackElement.resource);\r\n }\r\n prepareUndoRedo() {\r\n if (this._delegate) {\r\n return this._delegate.prepareUndoRedo(this);\r\n }\r\n }\r\n matchesResource(resource) {\r\n const key = uriGetComparisonKey(resource);\r\n return (this._editStackElementsMap.has(key));\r\n }\r\n setModel(model) {\r\n const key = uriGetComparisonKey(URI.isUri(model) ? model : model.uri);\r\n if (this._editStackElementsMap.has(key)) {\r\n this._editStackElementsMap.get(key).setModel(model);\r\n }\r\n }\r\n canAppend(model) {\r\n if (!this._isOpen) {\r\n return false;\r\n }\r\n const key = uriGetComparisonKey(model.uri);\r\n if (this._editStackElementsMap.has(key)) {\r\n const editStackElement = this._editStackElementsMap.get(key);\r\n return editStackElement.canAppend(model);\r\n }\r\n return false;\r\n }\r\n append(model, textChanges, afterEOL, afterVersionId, afterCursorState) {\r\n const key = uriGetComparisonKey(model.uri);\r\n const editStackElement = this._editStackElementsMap.get(key);\r\n editStackElement.append(model, textChanges, afterEOL, afterVersionId, afterCursorState);\r\n }\r\n close() {\r\n this._isOpen = false;\r\n }\r\n undo() {\r\n this._isOpen = false;\r\n for (const editStackElement of this._editStackElementsArr) {\r\n editStackElement.undo();\r\n }\r\n }\r\n redo() {\r\n for (const editStackElement of this._editStackElementsArr) {\r\n editStackElement.redo();\r\n }\r\n }\r\n split() {\r\n return this._editStackElementsArr;\r\n }\r\n}\r\nfunction getModelEOL(model) {\r\n const eol = model.getEOL();\r\n if (eol === '\\n') {\r\n return 0 /* LF */;\r\n }\r\n else {\r\n return 1 /* CRLF */;\r\n }\r\n}\r\nexport function isEditStackElement(element) {\r\n if (!element) {\r\n return false;\r\n }\r\n return ((element instanceof SingleModelEditStackElement) || (element instanceof MultiModelEditStackElement));\r\n}\r\nexport class EditStack {\r\n constructor(model, undoRedoService) {\r\n this._model = model;\r\n this._undoRedoService = undoRedoService;\r\n }\r\n pushStackElement() {\r\n const lastElement = this._undoRedoService.getLastElement(this._model.uri);\r\n if (isEditStackElement(lastElement)) {\r\n lastElement.close();\r\n }\r\n }\r\n clear() {\r\n this._undoRedoService.removeElements(this._model.uri);\r\n }\r\n _getOrCreateEditStackElement(beforeCursorState) {\r\n const lastElement = this._undoRedoService.getLastElement(this._model.uri);\r\n if (isEditStackElement(lastElement) && lastElement.canAppend(this._model)) {\r\n return lastElement;\r\n }\r\n const newElement = new SingleModelEditStackElement(this._model, beforeCursorState);\r\n this._undoRedoService.pushElement(newElement);\r\n return newElement;\r\n }\r\n pushEOL(eol) {\r\n const editStackElement = this._getOrCreateEditStackElement(null);\r\n this._model.setEOL(eol);\r\n editStackElement.append(this._model, [], getModelEOL(this._model), this._model.getAlternativeVersionId(), null);\r\n }\r\n pushEditOperation(beforeCursorState, editOperations, cursorStateComputer) {\r\n const editStackElement = this._getOrCreateEditStackElement(beforeCursorState);\r\n const inverseEditOperations = this._model.applyEdits(editOperations, true);\r\n const afterCursorState = EditStack._computeCursorState(cursorStateComputer, inverseEditOperations);\r\n const textChanges = inverseEditOperations.map((op, index) => ({ index: index, textChange: op.textChange }));\r\n textChanges.sort((a, b) => {\r\n if (a.textChange.oldPosition === b.textChange.oldPosition) {\r\n return a.index - b.index;\r\n }\r\n return a.textChange.oldPosition - b.textChange.oldPosition;\r\n });\r\n editStackElement.append(this._model, textChanges.map(op => op.textChange), getModelEOL(this._model), this._model.getAlternativeVersionId(), afterCursorState);\r\n return afterCursorState;\r\n }\r\n static _computeCursorState(cursorStateComputer, inverseEditOperations) {\r\n try {\r\n return cursorStateComputer ? cursorStateComputer(inverseEditOperations) : null;\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return null;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass SpacesDiffResult {\r\n constructor() {\r\n this.spacesDiff = 0;\r\n this.looksLikeAlignment = false;\r\n }\r\n}\r\n/**\r\n * Compute the diff in spaces between two line's indentation.\r\n */\r\nfunction spacesDiff(a, aLength, b, bLength, result) {\r\n result.spacesDiff = 0;\r\n result.looksLikeAlignment = false;\r\n // This can go both ways (e.g.):\r\n // - a: \"\\t\"\r\n // - b: \"\\t \"\r\n // => This should count 1 tab and 4 spaces\r\n let i;\r\n for (i = 0; i < aLength && i < bLength; i++) {\r\n let aCharCode = a.charCodeAt(i);\r\n let bCharCode = b.charCodeAt(i);\r\n if (aCharCode !== bCharCode) {\r\n break;\r\n }\r\n }\r\n let aSpacesCnt = 0, aTabsCount = 0;\r\n for (let j = i; j < aLength; j++) {\r\n let aCharCode = a.charCodeAt(j);\r\n if (aCharCode === 32 /* Space */) {\r\n aSpacesCnt++;\r\n }\r\n else {\r\n aTabsCount++;\r\n }\r\n }\r\n let bSpacesCnt = 0, bTabsCount = 0;\r\n for (let j = i; j < bLength; j++) {\r\n let bCharCode = b.charCodeAt(j);\r\n if (bCharCode === 32 /* Space */) {\r\n bSpacesCnt++;\r\n }\r\n else {\r\n bTabsCount++;\r\n }\r\n }\r\n if (aSpacesCnt > 0 && aTabsCount > 0) {\r\n return;\r\n }\r\n if (bSpacesCnt > 0 && bTabsCount > 0) {\r\n return;\r\n }\r\n let tabsDiff = Math.abs(aTabsCount - bTabsCount);\r\n let spacesDiff = Math.abs(aSpacesCnt - bSpacesCnt);\r\n if (tabsDiff === 0) {\r\n // check if the indentation difference might be caused by alignment reasons\r\n // sometime folks like to align their code, but this should not be used as a hint\r\n result.spacesDiff = spacesDiff;\r\n if (spacesDiff > 0 && 0 <= bSpacesCnt - 1 && bSpacesCnt - 1 < a.length && bSpacesCnt < b.length) {\r\n if (b.charCodeAt(bSpacesCnt) !== 32 /* Space */ && a.charCodeAt(bSpacesCnt - 1) === 32 /* Space */) {\r\n if (a.charCodeAt(a.length - 1) === 44 /* Comma */) {\r\n // This looks like an alignment desire: e.g.\r\n // const a = b + c,\r\n // d = b - c;\r\n result.looksLikeAlignment = true;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n if (spacesDiff % tabsDiff === 0) {\r\n result.spacesDiff = spacesDiff / tabsDiff;\r\n return;\r\n }\r\n}\r\nexport function guessIndentation(source, defaultTabSize, defaultInsertSpaces) {\r\n // Look at most at the first 10k lines\r\n const linesCount = Math.min(source.getLineCount(), 10000);\r\n let linesIndentedWithTabsCount = 0; // number of lines that contain at least one tab in indentation\r\n let linesIndentedWithSpacesCount = 0; // number of lines that contain only spaces in indentation\r\n let previousLineText = ''; // content of latest line that contained non-whitespace chars\r\n let previousLineIndentation = 0; // index at which latest line contained the first non-whitespace char\r\n const ALLOWED_TAB_SIZE_GUESSES = [2, 4, 6, 8, 3, 5, 7]; // prefer even guesses for `tabSize`, limit to [2, 8].\r\n const MAX_ALLOWED_TAB_SIZE_GUESS = 8; // max(ALLOWED_TAB_SIZE_GUESSES) = 8\r\n let spacesDiffCount = [0, 0, 0, 0, 0, 0, 0, 0, 0]; // `tabSize` scores\r\n let tmp = new SpacesDiffResult();\r\n for (let lineNumber = 1; lineNumber <= linesCount; lineNumber++) {\r\n let currentLineLength = source.getLineLength(lineNumber);\r\n let currentLineText = source.getLineContent(lineNumber);\r\n // if the text buffer is chunk based, so long lines are cons-string, v8 will flattern the string when we check charCode.\r\n // checking charCode on chunks directly is cheaper.\r\n const useCurrentLineText = (currentLineLength <= 65536);\r\n let currentLineHasContent = false; // does `currentLineText` contain non-whitespace chars\r\n let currentLineIndentation = 0; // index at which `currentLineText` contains the first non-whitespace char\r\n let currentLineSpacesCount = 0; // count of spaces found in `currentLineText` indentation\r\n let currentLineTabsCount = 0; // count of tabs found in `currentLineText` indentation\r\n for (let j = 0, lenJ = currentLineLength; j < lenJ; j++) {\r\n let charCode = (useCurrentLineText ? currentLineText.charCodeAt(j) : source.getLineCharCode(lineNumber, j));\r\n if (charCode === 9 /* Tab */) {\r\n currentLineTabsCount++;\r\n }\r\n else if (charCode === 32 /* Space */) {\r\n currentLineSpacesCount++;\r\n }\r\n else {\r\n // Hit non whitespace character on this line\r\n currentLineHasContent = true;\r\n currentLineIndentation = j;\r\n break;\r\n }\r\n }\r\n // Ignore empty or only whitespace lines\r\n if (!currentLineHasContent) {\r\n continue;\r\n }\r\n if (currentLineTabsCount > 0) {\r\n linesIndentedWithTabsCount++;\r\n }\r\n else if (currentLineSpacesCount > 1) {\r\n linesIndentedWithSpacesCount++;\r\n }\r\n spacesDiff(previousLineText, previousLineIndentation, currentLineText, currentLineIndentation, tmp);\r\n if (tmp.looksLikeAlignment) {\r\n // if defaultInsertSpaces === true && the spaces count == tabSize, we may want to count it as valid indentation\r\n //\r\n // - item1\r\n // - item2\r\n //\r\n // otherwise skip this line entirely\r\n //\r\n // const a = 1,\r\n // b = 2;\r\n if (!(defaultInsertSpaces && defaultTabSize === tmp.spacesDiff)) {\r\n continue;\r\n }\r\n }\r\n let currentSpacesDiff = tmp.spacesDiff;\r\n if (currentSpacesDiff <= MAX_ALLOWED_TAB_SIZE_GUESS) {\r\n spacesDiffCount[currentSpacesDiff]++;\r\n }\r\n previousLineText = currentLineText;\r\n previousLineIndentation = currentLineIndentation;\r\n }\r\n let insertSpaces = defaultInsertSpaces;\r\n if (linesIndentedWithTabsCount !== linesIndentedWithSpacesCount) {\r\n insertSpaces = (linesIndentedWithTabsCount < linesIndentedWithSpacesCount);\r\n }\r\n let tabSize = defaultTabSize;\r\n // Guess tabSize only if inserting spaces...\r\n if (insertSpaces) {\r\n let tabSizeScore = (insertSpaces ? 0 : 0.1 * linesCount);\r\n // console.log(\"score threshold: \" + tabSizeScore);\r\n ALLOWED_TAB_SIZE_GUESSES.forEach((possibleTabSize) => {\r\n let possibleTabSizeScore = spacesDiffCount[possibleTabSize];\r\n if (possibleTabSizeScore > tabSizeScore) {\r\n tabSizeScore = possibleTabSizeScore;\r\n tabSize = possibleTabSize;\r\n }\r\n });\r\n // Let a tabSize of 2 win even if it is not the maximum\r\n // (only in case 4 was guessed)\r\n if (tabSize === 4 && spacesDiffCount[4] > 0 && spacesDiffCount[2] > 0 && spacesDiffCount[2] >= spacesDiffCount[4] / 2) {\r\n tabSize = 2;\r\n }\r\n }\r\n // console.log('--------------------------');\r\n // console.log('linesIndentedWithTabsCount: ' + linesIndentedWithTabsCount + ', linesIndentedWithSpacesCount: ' + linesIndentedWithSpacesCount);\r\n // console.log('spacesDiffCount: ' + spacesDiffCount);\r\n // console.log('tabSize: ' + tabSize + ', tabSizeScore: ' + tabSizeScore);\r\n return {\r\n insertSpaces: insertSpaces,\r\n tabSize: tabSize\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function getNodeColor(node) {\r\n return ((node.metadata & 1 /* ColorMask */) >>> 0 /* ColorOffset */);\r\n}\r\nfunction setNodeColor(node, color) {\r\n node.metadata = ((node.metadata & 254 /* ColorMaskInverse */) | (color << 0 /* ColorOffset */));\r\n}\r\nfunction getNodeIsVisited(node) {\r\n return ((node.metadata & 2 /* IsVisitedMask */) >>> 1 /* IsVisitedOffset */) === 1;\r\n}\r\nfunction setNodeIsVisited(node, value) {\r\n node.metadata = ((node.metadata & 253 /* IsVisitedMaskInverse */) | ((value ? 1 : 0) << 1 /* IsVisitedOffset */));\r\n}\r\nfunction getNodeIsForValidation(node) {\r\n return ((node.metadata & 4 /* IsForValidationMask */) >>> 2 /* IsForValidationOffset */) === 1;\r\n}\r\nfunction setNodeIsForValidation(node, value) {\r\n node.metadata = ((node.metadata & 251 /* IsForValidationMaskInverse */) | ((value ? 1 : 0) << 2 /* IsForValidationOffset */));\r\n}\r\nexport function getNodeIsInOverviewRuler(node) {\r\n return ((node.metadata & 8 /* IsInOverviewRulerMask */) >>> 3 /* IsInOverviewRulerOffset */) === 1;\r\n}\r\nfunction setNodeIsInOverviewRuler(node, value) {\r\n node.metadata = ((node.metadata & 247 /* IsInOverviewRulerMaskInverse */) | ((value ? 1 : 0) << 3 /* IsInOverviewRulerOffset */));\r\n}\r\nfunction getNodeStickiness(node) {\r\n return ((node.metadata & 48 /* StickinessMask */) >>> 4 /* StickinessOffset */);\r\n}\r\nfunction _setNodeStickiness(node, stickiness) {\r\n node.metadata = ((node.metadata & 207 /* StickinessMaskInverse */) | (stickiness << 4 /* StickinessOffset */));\r\n}\r\nfunction getCollapseOnReplaceEdit(node) {\r\n return ((node.metadata & 64 /* CollapseOnReplaceEditMask */) >>> 6 /* CollapseOnReplaceEditOffset */) === 1;\r\n}\r\nfunction setCollapseOnReplaceEdit(node, value) {\r\n node.metadata = ((node.metadata & 191 /* CollapseOnReplaceEditMaskInverse */) | ((value ? 1 : 0) << 6 /* CollapseOnReplaceEditOffset */));\r\n}\r\nexport class IntervalNode {\r\n constructor(id, start, end) {\r\n this.metadata = 0;\r\n this.parent = this;\r\n this.left = this;\r\n this.right = this;\r\n setNodeColor(this, 1 /* Red */);\r\n this.start = start;\r\n this.end = end;\r\n // FORCE_OVERFLOWING_TEST: this.delta = start;\r\n this.delta = 0;\r\n this.maxEnd = end;\r\n this.id = id;\r\n this.ownerId = 0;\r\n this.options = null;\r\n setNodeIsForValidation(this, false);\r\n _setNodeStickiness(this, 1 /* NeverGrowsWhenTypingAtEdges */);\r\n setNodeIsInOverviewRuler(this, false);\r\n setCollapseOnReplaceEdit(this, false);\r\n this.cachedVersionId = 0;\r\n this.cachedAbsoluteStart = start;\r\n this.cachedAbsoluteEnd = end;\r\n this.range = null;\r\n setNodeIsVisited(this, false);\r\n }\r\n reset(versionId, start, end, range) {\r\n this.start = start;\r\n this.end = end;\r\n this.maxEnd = end;\r\n this.cachedVersionId = versionId;\r\n this.cachedAbsoluteStart = start;\r\n this.cachedAbsoluteEnd = end;\r\n this.range = range;\r\n }\r\n setOptions(options) {\r\n this.options = options;\r\n let className = this.options.className;\r\n setNodeIsForValidation(this, (className === \"squiggly-error\" /* EditorErrorDecoration */\r\n || className === \"squiggly-warning\" /* EditorWarningDecoration */\r\n || className === \"squiggly-info\" /* EditorInfoDecoration */));\r\n _setNodeStickiness(this, this.options.stickiness);\r\n setNodeIsInOverviewRuler(this, (this.options.overviewRuler && this.options.overviewRuler.color) ? true : false);\r\n setCollapseOnReplaceEdit(this, this.options.collapseOnReplaceEdit);\r\n }\r\n setCachedOffsets(absoluteStart, absoluteEnd, cachedVersionId) {\r\n if (this.cachedVersionId !== cachedVersionId) {\r\n this.range = null;\r\n }\r\n this.cachedVersionId = cachedVersionId;\r\n this.cachedAbsoluteStart = absoluteStart;\r\n this.cachedAbsoluteEnd = absoluteEnd;\r\n }\r\n detach() {\r\n this.parent = null;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n}\r\nexport const SENTINEL = new IntervalNode(null, 0, 0);\r\nSENTINEL.parent = SENTINEL;\r\nSENTINEL.left = SENTINEL;\r\nSENTINEL.right = SENTINEL;\r\nsetNodeColor(SENTINEL, 0 /* Black */);\r\nexport class IntervalTree {\r\n constructor() {\r\n this.root = SENTINEL;\r\n this.requestNormalizeDelta = false;\r\n }\r\n intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n if (this.root === SENTINEL) {\r\n return [];\r\n }\r\n return intervalSearch(this, start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n search(filterOwnerId, filterOutValidation, cachedVersionId) {\r\n if (this.root === SENTINEL) {\r\n return [];\r\n }\r\n return search(this, filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n /**\r\n * Will not set `cachedAbsoluteStart` nor `cachedAbsoluteEnd` on the returned nodes!\r\n */\r\n collectNodesFromOwner(ownerId) {\r\n return collectNodesFromOwner(this, ownerId);\r\n }\r\n /**\r\n * Will not set `cachedAbsoluteStart` nor `cachedAbsoluteEnd` on the returned nodes!\r\n */\r\n collectNodesPostOrder() {\r\n return collectNodesPostOrder(this);\r\n }\r\n insert(node) {\r\n rbTreeInsert(this, node);\r\n this._normalizeDeltaIfNecessary();\r\n }\r\n delete(node) {\r\n rbTreeDelete(this, node);\r\n this._normalizeDeltaIfNecessary();\r\n }\r\n resolveNode(node, cachedVersionId) {\r\n const initialNode = node;\r\n let delta = 0;\r\n while (node !== this.root) {\r\n if (node === node.parent.right) {\r\n delta += node.parent.delta;\r\n }\r\n node = node.parent;\r\n }\r\n const nodeStart = initialNode.start + delta;\r\n const nodeEnd = initialNode.end + delta;\r\n initialNode.setCachedOffsets(nodeStart, nodeEnd, cachedVersionId);\r\n }\r\n acceptReplace(offset, length, textLength, forceMoveMarkers) {\r\n // Our strategy is to remove all directly impacted nodes, and then add them back to the tree.\r\n // (1) collect all nodes that are intersecting this edit as nodes of interest\r\n const nodesOfInterest = searchForEditing(this, offset, offset + length);\r\n // (2) remove all nodes that are intersecting this edit\r\n for (let i = 0, len = nodesOfInterest.length; i < len; i++) {\r\n const node = nodesOfInterest[i];\r\n rbTreeDelete(this, node);\r\n }\r\n this._normalizeDeltaIfNecessary();\r\n // (3) edit all tree nodes except the nodes of interest\r\n noOverlapReplace(this, offset, offset + length, textLength);\r\n this._normalizeDeltaIfNecessary();\r\n // (4) edit the nodes of interest and insert them back in the tree\r\n for (let i = 0, len = nodesOfInterest.length; i < len; i++) {\r\n const node = nodesOfInterest[i];\r\n node.start = node.cachedAbsoluteStart;\r\n node.end = node.cachedAbsoluteEnd;\r\n nodeAcceptEdit(node, offset, (offset + length), textLength, forceMoveMarkers);\r\n node.maxEnd = node.end;\r\n rbTreeInsert(this, node);\r\n }\r\n this._normalizeDeltaIfNecessary();\r\n }\r\n _normalizeDeltaIfNecessary() {\r\n if (!this.requestNormalizeDelta) {\r\n return;\r\n }\r\n this.requestNormalizeDelta = false;\r\n normalizeDelta(this);\r\n }\r\n}\r\n//#region Delta Normalization\r\nfunction normalizeDelta(T) {\r\n let node = T.root;\r\n let delta = 0;\r\n while (node !== SENTINEL) {\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n // handle current node\r\n node.start = delta + node.start;\r\n node.end = delta + node.end;\r\n node.delta = 0;\r\n recomputeMaxEnd(node);\r\n setNodeIsVisited(node, true);\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n }\r\n setNodeIsVisited(T.root, false);\r\n}\r\nfunction adjustMarkerBeforeColumn(markerOffset, markerStickToPreviousCharacter, checkOffset, moveSemantics) {\r\n if (markerOffset < checkOffset) {\r\n return true;\r\n }\r\n if (markerOffset > checkOffset) {\r\n return false;\r\n }\r\n if (moveSemantics === 1 /* ForceMove */) {\r\n return false;\r\n }\r\n if (moveSemantics === 2 /* ForceStay */) {\r\n return true;\r\n }\r\n return markerStickToPreviousCharacter;\r\n}\r\n/**\r\n * This is a lot more complicated than strictly necessary to maintain the same behaviour\r\n * as when decorations were implemented using two markers.\r\n */\r\nexport function nodeAcceptEdit(node, start, end, textLength, forceMoveMarkers) {\r\n const nodeStickiness = getNodeStickiness(node);\r\n const startStickToPreviousCharacter = (nodeStickiness === 0 /* AlwaysGrowsWhenTypingAtEdges */\r\n || nodeStickiness === 2 /* GrowsOnlyWhenTypingBefore */);\r\n const endStickToPreviousCharacter = (nodeStickiness === 1 /* NeverGrowsWhenTypingAtEdges */\r\n || nodeStickiness === 2 /* GrowsOnlyWhenTypingBefore */);\r\n const deletingCnt = (end - start);\r\n const insertingCnt = textLength;\r\n const commonLength = Math.min(deletingCnt, insertingCnt);\r\n const nodeStart = node.start;\r\n let startDone = false;\r\n const nodeEnd = node.end;\r\n let endDone = false;\r\n if (start <= nodeStart && nodeEnd <= end && getCollapseOnReplaceEdit(node)) {\r\n // This edit encompasses the entire decoration range\r\n // and the decoration has asked to become collapsed\r\n node.start = start;\r\n startDone = true;\r\n node.end = start;\r\n endDone = true;\r\n }\r\n {\r\n const moveSemantics = forceMoveMarkers ? 1 /* ForceMove */ : (deletingCnt > 0 ? 2 /* ForceStay */ : 0 /* MarkerDefined */);\r\n if (!startDone && adjustMarkerBeforeColumn(nodeStart, startStickToPreviousCharacter, start, moveSemantics)) {\r\n startDone = true;\r\n }\r\n if (!endDone && adjustMarkerBeforeColumn(nodeEnd, endStickToPreviousCharacter, start, moveSemantics)) {\r\n endDone = true;\r\n }\r\n }\r\n if (commonLength > 0 && !forceMoveMarkers) {\r\n const moveSemantics = (deletingCnt > insertingCnt ? 2 /* ForceStay */ : 0 /* MarkerDefined */);\r\n if (!startDone && adjustMarkerBeforeColumn(nodeStart, startStickToPreviousCharacter, start + commonLength, moveSemantics)) {\r\n startDone = true;\r\n }\r\n if (!endDone && adjustMarkerBeforeColumn(nodeEnd, endStickToPreviousCharacter, start + commonLength, moveSemantics)) {\r\n endDone = true;\r\n }\r\n }\r\n {\r\n const moveSemantics = forceMoveMarkers ? 1 /* ForceMove */ : 0 /* MarkerDefined */;\r\n if (!startDone && adjustMarkerBeforeColumn(nodeStart, startStickToPreviousCharacter, end, moveSemantics)) {\r\n node.start = start + insertingCnt;\r\n startDone = true;\r\n }\r\n if (!endDone && adjustMarkerBeforeColumn(nodeEnd, endStickToPreviousCharacter, end, moveSemantics)) {\r\n node.end = start + insertingCnt;\r\n endDone = true;\r\n }\r\n }\r\n // Finish\r\n const deltaColumn = (insertingCnt - deletingCnt);\r\n if (!startDone) {\r\n node.start = Math.max(0, nodeStart + deltaColumn);\r\n }\r\n if (!endDone) {\r\n node.end = Math.max(0, nodeEnd + deltaColumn);\r\n }\r\n if (node.start > node.end) {\r\n node.end = node.start;\r\n }\r\n}\r\nfunction searchForEditing(T, start, end) {\r\n // https://en.wikipedia.org/wiki/Interval_tree#Augmented_tree\r\n // Now, it is known that two intervals A and B overlap only when both\r\n // A.low <= B.high and A.high >= B.low. When searching the trees for\r\n // nodes overlapping with a given interval, you can immediately skip:\r\n // a) all nodes to the right of nodes whose low value is past the end of the given interval.\r\n // b) all nodes that have their maximum 'high' value below the start of the given interval.\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeMaxEnd = 0;\r\n let nodeStart = 0;\r\n let nodeEnd = 0;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n continue;\r\n }\r\n if (!getNodeIsVisited(node.left)) {\r\n // first time seeing this node\r\n nodeMaxEnd = delta + node.maxEnd;\r\n if (nodeMaxEnd < start) {\r\n // cover case b) from above\r\n // there is no need to search this node or its children\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n if (node.left !== SENTINEL) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n if (nodeStart > end) {\r\n // cover case a) from above\r\n // there is no need to search this node or its right subtree\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n nodeEnd = delta + node.end;\r\n if (nodeEnd >= start) {\r\n node.setCachedOffsets(nodeStart, nodeEnd, 0);\r\n result[resultLen++] = node;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction noOverlapReplace(T, start, end, textLength) {\r\n // https://en.wikipedia.org/wiki/Interval_tree#Augmented_tree\r\n // Now, it is known that two intervals A and B overlap only when both\r\n // A.low <= B.high and A.high >= B.low. When searching the trees for\r\n // nodes overlapping with a given interval, you can immediately skip:\r\n // a) all nodes to the right of nodes whose low value is past the end of the given interval.\r\n // b) all nodes that have their maximum 'high' value below the start of the given interval.\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeMaxEnd = 0;\r\n let nodeStart = 0;\r\n const editDelta = (textLength - (end - start));\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n recomputeMaxEnd(node);\r\n node = node.parent;\r\n continue;\r\n }\r\n if (!getNodeIsVisited(node.left)) {\r\n // first time seeing this node\r\n nodeMaxEnd = delta + node.maxEnd;\r\n if (nodeMaxEnd < start) {\r\n // cover case b) from above\r\n // there is no need to search this node or its children\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n if (node.left !== SENTINEL) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n if (nodeStart > end) {\r\n node.start += editDelta;\r\n node.end += editDelta;\r\n node.delta += editDelta;\r\n if (node.delta < -1073741824 /* MIN_SAFE_DELTA */ || node.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n // cover case a) from above\r\n // there is no need to search this node or its right subtree\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n}\r\n//#endregion\r\n//#region Searching\r\nfunction collectNodesFromOwner(T, ownerId) {\r\n let node = T.root;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n node = node.parent;\r\n continue;\r\n }\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n // handle current node\r\n if (node.ownerId === ownerId) {\r\n result[resultLen++] = node;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction collectNodesPostOrder(T) {\r\n let node = T.root;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n node = node.parent;\r\n continue;\r\n }\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n node = node.right;\r\n continue;\r\n }\r\n // handle current node\r\n result[resultLen++] = node;\r\n setNodeIsVisited(node, true);\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction search(T, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeStart = 0;\r\n let nodeEnd = 0;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n continue;\r\n }\r\n if (node.left !== SENTINEL && !getNodeIsVisited(node.left)) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n nodeEnd = delta + node.end;\r\n node.setCachedOffsets(nodeStart, nodeEnd, cachedVersionId);\r\n let include = true;\r\n if (filterOwnerId && node.ownerId && node.ownerId !== filterOwnerId) {\r\n include = false;\r\n }\r\n if (filterOutValidation && getNodeIsForValidation(node)) {\r\n include = false;\r\n }\r\n if (include) {\r\n result[resultLen++] = node;\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\nfunction intervalSearch(T, intervalStart, intervalEnd, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n // https://en.wikipedia.org/wiki/Interval_tree#Augmented_tree\r\n // Now, it is known that two intervals A and B overlap only when both\r\n // A.low <= B.high and A.high >= B.low. When searching the trees for\r\n // nodes overlapping with a given interval, you can immediately skip:\r\n // a) all nodes to the right of nodes whose low value is past the end of the given interval.\r\n // b) all nodes that have their maximum 'high' value below the start of the given interval.\r\n let node = T.root;\r\n let delta = 0;\r\n let nodeMaxEnd = 0;\r\n let nodeStart = 0;\r\n let nodeEnd = 0;\r\n let result = [];\r\n let resultLen = 0;\r\n while (node !== SENTINEL) {\r\n if (getNodeIsVisited(node)) {\r\n // going up from this node\r\n setNodeIsVisited(node.left, false);\r\n setNodeIsVisited(node.right, false);\r\n if (node === node.parent.right) {\r\n delta -= node.parent.delta;\r\n }\r\n node = node.parent;\r\n continue;\r\n }\r\n if (!getNodeIsVisited(node.left)) {\r\n // first time seeing this node\r\n nodeMaxEnd = delta + node.maxEnd;\r\n if (nodeMaxEnd < intervalStart) {\r\n // cover case b) from above\r\n // there is no need to search this node or its children\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n if (node.left !== SENTINEL) {\r\n // go left\r\n node = node.left;\r\n continue;\r\n }\r\n }\r\n // handle current node\r\n nodeStart = delta + node.start;\r\n if (nodeStart > intervalEnd) {\r\n // cover case a) from above\r\n // there is no need to search this node or its right subtree\r\n setNodeIsVisited(node, true);\r\n continue;\r\n }\r\n nodeEnd = delta + node.end;\r\n if (nodeEnd >= intervalStart) {\r\n // There is overlap\r\n node.setCachedOffsets(nodeStart, nodeEnd, cachedVersionId);\r\n let include = true;\r\n if (filterOwnerId && node.ownerId && node.ownerId !== filterOwnerId) {\r\n include = false;\r\n }\r\n if (filterOutValidation && getNodeIsForValidation(node)) {\r\n include = false;\r\n }\r\n if (include) {\r\n result[resultLen++] = node;\r\n }\r\n }\r\n setNodeIsVisited(node, true);\r\n if (node.right !== SENTINEL && !getNodeIsVisited(node.right)) {\r\n // go right\r\n delta += node.delta;\r\n node = node.right;\r\n continue;\r\n }\r\n }\r\n setNodeIsVisited(T.root, false);\r\n return result;\r\n}\r\n//#endregion\r\n//#region Insertion\r\nfunction rbTreeInsert(T, newNode) {\r\n if (T.root === SENTINEL) {\r\n newNode.parent = SENTINEL;\r\n newNode.left = SENTINEL;\r\n newNode.right = SENTINEL;\r\n setNodeColor(newNode, 0 /* Black */);\r\n T.root = newNode;\r\n return T.root;\r\n }\r\n treeInsert(T, newNode);\r\n recomputeMaxEndWalkToRoot(newNode.parent);\r\n // repair tree\r\n let x = newNode;\r\n while (x !== T.root && getNodeColor(x.parent) === 1 /* Red */) {\r\n if (x.parent === x.parent.parent.left) {\r\n const y = x.parent.parent.right;\r\n if (getNodeColor(y) === 1 /* Red */) {\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(y, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.right) {\r\n x = x.parent;\r\n leftRotate(T, x);\r\n }\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n rightRotate(T, x.parent.parent);\r\n }\r\n }\r\n else {\r\n const y = x.parent.parent.left;\r\n if (getNodeColor(y) === 1 /* Red */) {\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(y, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.left) {\r\n x = x.parent;\r\n rightRotate(T, x);\r\n }\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(x.parent.parent, 1 /* Red */);\r\n leftRotate(T, x.parent.parent);\r\n }\r\n }\r\n }\r\n setNodeColor(T.root, 0 /* Black */);\r\n return newNode;\r\n}\r\nfunction treeInsert(T, z) {\r\n let delta = 0;\r\n let x = T.root;\r\n const zAbsoluteStart = z.start;\r\n const zAbsoluteEnd = z.end;\r\n while (true) {\r\n const cmp = intervalCompare(zAbsoluteStart, zAbsoluteEnd, x.start + delta, x.end + delta);\r\n if (cmp < 0) {\r\n // this node should be inserted to the left\r\n // => it is not affected by the node's delta\r\n if (x.left === SENTINEL) {\r\n z.start -= delta;\r\n z.end -= delta;\r\n z.maxEnd -= delta;\r\n x.left = z;\r\n break;\r\n }\r\n else {\r\n x = x.left;\r\n }\r\n }\r\n else {\r\n // this node should be inserted to the right\r\n // => it is not affected by the node's delta\r\n if (x.right === SENTINEL) {\r\n z.start -= (delta + x.delta);\r\n z.end -= (delta + x.delta);\r\n z.maxEnd -= (delta + x.delta);\r\n x.right = z;\r\n break;\r\n }\r\n else {\r\n delta += x.delta;\r\n x = x.right;\r\n }\r\n }\r\n }\r\n z.parent = x;\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n setNodeColor(z, 1 /* Red */);\r\n}\r\n//#endregion\r\n//#region Deletion\r\nfunction rbTreeDelete(T, z) {\r\n let x;\r\n let y;\r\n // RB-DELETE except we don't swap z and y in case c)\r\n // i.e. we always delete what's pointed at by z.\r\n if (z.left === SENTINEL) {\r\n x = z.right;\r\n y = z;\r\n // x's delta is no longer influenced by z's delta\r\n x.delta += z.delta;\r\n if (x.delta < -1073741824 /* MIN_SAFE_DELTA */ || x.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n x.start += z.delta;\r\n x.end += z.delta;\r\n }\r\n else if (z.right === SENTINEL) {\r\n x = z.left;\r\n y = z;\r\n }\r\n else {\r\n y = leftest(z.right);\r\n x = y.right;\r\n // y's delta is no longer influenced by z's delta,\r\n // but we don't want to walk the entire right-hand-side subtree of x.\r\n // we therefore maintain z's delta in y, and adjust only x\r\n x.start += y.delta;\r\n x.end += y.delta;\r\n x.delta += y.delta;\r\n if (x.delta < -1073741824 /* MIN_SAFE_DELTA */ || x.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n y.start += z.delta;\r\n y.end += z.delta;\r\n y.delta = z.delta;\r\n if (y.delta < -1073741824 /* MIN_SAFE_DELTA */ || y.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n }\r\n if (y === T.root) {\r\n T.root = x;\r\n setNodeColor(x, 0 /* Black */);\r\n z.detach();\r\n resetSentinel();\r\n recomputeMaxEnd(x);\r\n T.root.parent = SENTINEL;\r\n return;\r\n }\r\n let yWasRed = (getNodeColor(y) === 1 /* Red */);\r\n if (y === y.parent.left) {\r\n y.parent.left = x;\r\n }\r\n else {\r\n y.parent.right = x;\r\n }\r\n if (y === z) {\r\n x.parent = y.parent;\r\n }\r\n else {\r\n if (y.parent === z) {\r\n x.parent = y;\r\n }\r\n else {\r\n x.parent = y.parent;\r\n }\r\n y.left = z.left;\r\n y.right = z.right;\r\n y.parent = z.parent;\r\n setNodeColor(y, getNodeColor(z));\r\n if (z === T.root) {\r\n T.root = y;\r\n }\r\n else {\r\n if (z === z.parent.left) {\r\n z.parent.left = y;\r\n }\r\n else {\r\n z.parent.right = y;\r\n }\r\n }\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = y;\r\n }\r\n if (y.right !== SENTINEL) {\r\n y.right.parent = y;\r\n }\r\n }\r\n z.detach();\r\n if (yWasRed) {\r\n recomputeMaxEndWalkToRoot(x.parent);\r\n if (y !== z) {\r\n recomputeMaxEndWalkToRoot(y);\r\n recomputeMaxEndWalkToRoot(y.parent);\r\n }\r\n resetSentinel();\r\n return;\r\n }\r\n recomputeMaxEndWalkToRoot(x);\r\n recomputeMaxEndWalkToRoot(x.parent);\r\n if (y !== z) {\r\n recomputeMaxEndWalkToRoot(y);\r\n recomputeMaxEndWalkToRoot(y.parent);\r\n }\r\n // RB-DELETE-FIXUP\r\n let w;\r\n while (x !== T.root && getNodeColor(x) === 0 /* Black */) {\r\n if (x === x.parent.left) {\r\n w = x.parent.right;\r\n if (getNodeColor(w) === 1 /* Red */) {\r\n setNodeColor(w, 0 /* Black */);\r\n setNodeColor(x.parent, 1 /* Red */);\r\n leftRotate(T, x.parent);\r\n w = x.parent.right;\r\n }\r\n if (getNodeColor(w.left) === 0 /* Black */ && getNodeColor(w.right) === 0 /* Black */) {\r\n setNodeColor(w, 1 /* Red */);\r\n x = x.parent;\r\n }\r\n else {\r\n if (getNodeColor(w.right) === 0 /* Black */) {\r\n setNodeColor(w.left, 0 /* Black */);\r\n setNodeColor(w, 1 /* Red */);\r\n rightRotate(T, w);\r\n w = x.parent.right;\r\n }\r\n setNodeColor(w, getNodeColor(x.parent));\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(w.right, 0 /* Black */);\r\n leftRotate(T, x.parent);\r\n x = T.root;\r\n }\r\n }\r\n else {\r\n w = x.parent.left;\r\n if (getNodeColor(w) === 1 /* Red */) {\r\n setNodeColor(w, 0 /* Black */);\r\n setNodeColor(x.parent, 1 /* Red */);\r\n rightRotate(T, x.parent);\r\n w = x.parent.left;\r\n }\r\n if (getNodeColor(w.left) === 0 /* Black */ && getNodeColor(w.right) === 0 /* Black */) {\r\n setNodeColor(w, 1 /* Red */);\r\n x = x.parent;\r\n }\r\n else {\r\n if (getNodeColor(w.left) === 0 /* Black */) {\r\n setNodeColor(w.right, 0 /* Black */);\r\n setNodeColor(w, 1 /* Red */);\r\n leftRotate(T, w);\r\n w = x.parent.left;\r\n }\r\n setNodeColor(w, getNodeColor(x.parent));\r\n setNodeColor(x.parent, 0 /* Black */);\r\n setNodeColor(w.left, 0 /* Black */);\r\n rightRotate(T, x.parent);\r\n x = T.root;\r\n }\r\n }\r\n }\r\n setNodeColor(x, 0 /* Black */);\r\n resetSentinel();\r\n}\r\nfunction leftest(node) {\r\n while (node.left !== SENTINEL) {\r\n node = node.left;\r\n }\r\n return node;\r\n}\r\nfunction resetSentinel() {\r\n SENTINEL.parent = SENTINEL;\r\n SENTINEL.delta = 0; // optional\r\n SENTINEL.start = 0; // optional\r\n SENTINEL.end = 0; // optional\r\n}\r\n//#endregion\r\n//#region Rotations\r\nfunction leftRotate(T, x) {\r\n const y = x.right; // set y.\r\n y.delta += x.delta; // y's delta is no longer influenced by x's delta\r\n if (y.delta < -1073741824 /* MIN_SAFE_DELTA */ || y.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n y.start += x.delta;\r\n y.end += x.delta;\r\n x.right = y.left; // turn y's left subtree into x's right subtree.\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = x;\r\n }\r\n y.parent = x.parent; // link x's parent to y.\r\n if (x.parent === SENTINEL) {\r\n T.root = y;\r\n }\r\n else if (x === x.parent.left) {\r\n x.parent.left = y;\r\n }\r\n else {\r\n x.parent.right = y;\r\n }\r\n y.left = x; // put x on y's left.\r\n x.parent = y;\r\n recomputeMaxEnd(x);\r\n recomputeMaxEnd(y);\r\n}\r\nfunction rightRotate(T, y) {\r\n const x = y.left;\r\n y.delta -= x.delta;\r\n if (y.delta < -1073741824 /* MIN_SAFE_DELTA */ || y.delta > 1073741824 /* MAX_SAFE_DELTA */) {\r\n T.requestNormalizeDelta = true;\r\n }\r\n y.start -= x.delta;\r\n y.end -= x.delta;\r\n y.left = x.right;\r\n if (x.right !== SENTINEL) {\r\n x.right.parent = y;\r\n }\r\n x.parent = y.parent;\r\n if (y.parent === SENTINEL) {\r\n T.root = x;\r\n }\r\n else if (y === y.parent.right) {\r\n y.parent.right = x;\r\n }\r\n else {\r\n y.parent.left = x;\r\n }\r\n x.right = y;\r\n y.parent = x;\r\n recomputeMaxEnd(y);\r\n recomputeMaxEnd(x);\r\n}\r\n//#endregion\r\n//#region max end computation\r\nfunction computeMaxEnd(node) {\r\n let maxEnd = node.end;\r\n if (node.left !== SENTINEL) {\r\n const leftMaxEnd = node.left.maxEnd;\r\n if (leftMaxEnd > maxEnd) {\r\n maxEnd = leftMaxEnd;\r\n }\r\n }\r\n if (node.right !== SENTINEL) {\r\n const rightMaxEnd = node.right.maxEnd + node.delta;\r\n if (rightMaxEnd > maxEnd) {\r\n maxEnd = rightMaxEnd;\r\n }\r\n }\r\n return maxEnd;\r\n}\r\nexport function recomputeMaxEnd(node) {\r\n node.maxEnd = computeMaxEnd(node);\r\n}\r\nfunction recomputeMaxEndWalkToRoot(node) {\r\n while (node !== SENTINEL) {\r\n const maxEnd = computeMaxEnd(node);\r\n if (node.maxEnd === maxEnd) {\r\n // no need to go further\r\n return;\r\n }\r\n node.maxEnd = maxEnd;\r\n node = node.parent;\r\n }\r\n}\r\n//#endregion\r\n//#region utils\r\nexport function intervalCompare(aStart, aEnd, bStart, bEnd) {\r\n if (aStart === bStart) {\r\n return aEnd - bEnd;\r\n }\r\n return aStart - bStart;\r\n}\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from '../core/position.js';\r\nimport { PrefixSumComputer } from '../viewModel/prefixSumComputer.js';\r\nexport class MirrorTextModel {\r\n constructor(uri, lines, eol, versionId) {\r\n this._uri = uri;\r\n this._lines = lines;\r\n this._eol = eol;\r\n this._versionId = versionId;\r\n this._lineStarts = null;\r\n this._cachedTextValue = null;\r\n }\r\n dispose() {\r\n this._lines.length = 0;\r\n }\r\n getText() {\r\n if (this._cachedTextValue === null) {\r\n this._cachedTextValue = this._lines.join(this._eol);\r\n }\r\n return this._cachedTextValue;\r\n }\r\n onEvents(e) {\r\n if (e.eol && e.eol !== this._eol) {\r\n this._eol = e.eol;\r\n this._lineStarts = null;\r\n }\r\n // Update my lines\r\n const changes = e.changes;\r\n for (const change of changes) {\r\n this._acceptDeleteRange(change.range);\r\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\r\n }\r\n this._versionId = e.versionId;\r\n this._cachedTextValue = null;\r\n }\r\n _ensureLineStarts() {\r\n if (!this._lineStarts) {\r\n const eolLength = this._eol.length;\r\n const linesLength = this._lines.length;\r\n const lineStartValues = new Uint32Array(linesLength);\r\n for (let i = 0; i < linesLength; i++) {\r\n lineStartValues[i] = this._lines[i].length + eolLength;\r\n }\r\n this._lineStarts = new PrefixSumComputer(lineStartValues);\r\n }\r\n }\r\n /**\r\n * All changes to a line's text go through this method\r\n */\r\n _setLineText(lineIndex, newValue) {\r\n this._lines[lineIndex] = newValue;\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.changeValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\r\n }\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n // Delete text on the affected line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\r\n return;\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\r\n // Delete middle lines\r\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n }\r\n _acceptInsertText(position, insertText) {\r\n if (insertText.length === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n let insertLines = insertText.split(/\\r\\n|\\r|\\n/);\r\n if (insertLines.length === 1) {\r\n // Inserting text on one line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]\r\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\r\n return;\r\n }\r\n // Append overflowing text from first line to the end of text to insert\r\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\r\n // Delete overflowing text from first line and insert text on first line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]);\r\n // Insert new lines & store lengths\r\n let newLengths = new Uint32Array(insertLines.length - 1);\r\n for (let i = 1; i < insertLines.length; i++) {\r\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\r\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\r\n }\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.insertValues(position.lineNumber, newLengths);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from '../../core/position.js';\r\nimport { Range } from '../../core/range.js';\r\nimport { FindMatch } from '../../model.js';\r\nimport { SENTINEL, TreeNode, fixInsert, leftest, rbDelete, righttest, updateTreeMetadata } from './rbTreeBase.js';\r\nimport { Searcher, createFindMatch, isValidMatch } from '../textModelSearch.js';\r\n// const lfRegex = new RegExp(/\\r\\n|\\r|\\n/g);\r\nexport const AverageBufferSize = 65535;\r\nexport function createUintArray(arr) {\r\n let r;\r\n if (arr[arr.length - 1] < 65536) {\r\n r = new Uint16Array(arr.length);\r\n }\r\n else {\r\n r = new Uint32Array(arr.length);\r\n }\r\n r.set(arr, 0);\r\n return r;\r\n}\r\nexport class LineStarts {\r\n constructor(lineStarts, cr, lf, crlf, isBasicASCII) {\r\n this.lineStarts = lineStarts;\r\n this.cr = cr;\r\n this.lf = lf;\r\n this.crlf = crlf;\r\n this.isBasicASCII = isBasicASCII;\r\n }\r\n}\r\nexport function createLineStartsFast(str, readonly = true) {\r\n let r = [0], rLength = 1;\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chr = str.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (i + 1 < len && str.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n r[rLength++] = i + 2;\r\n i++; // skip \\n\r\n }\r\n else {\r\n // \\r... case\r\n r[rLength++] = i + 1;\r\n }\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n r[rLength++] = i + 1;\r\n }\r\n }\r\n if (readonly) {\r\n return createUintArray(r);\r\n }\r\n else {\r\n return r;\r\n }\r\n}\r\nexport function createLineStarts(r, str) {\r\n r.length = 0;\r\n r[0] = 0;\r\n let rLength = 1;\r\n let cr = 0, lf = 0, crlf = 0;\r\n let isBasicASCII = true;\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chr = str.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (i + 1 < len && str.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n crlf++;\r\n r[rLength++] = i + 2;\r\n i++; // skip \\n\r\n }\r\n else {\r\n cr++;\r\n // \\r... case\r\n r[rLength++] = i + 1;\r\n }\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n lf++;\r\n r[rLength++] = i + 1;\r\n }\r\n else {\r\n if (isBasicASCII) {\r\n if (chr !== 9 /* Tab */ && (chr < 32 || chr > 126)) {\r\n isBasicASCII = false;\r\n }\r\n }\r\n }\r\n }\r\n const result = new LineStarts(createUintArray(r), cr, lf, crlf, isBasicASCII);\r\n r.length = 0;\r\n return result;\r\n}\r\nexport class Piece {\r\n constructor(bufferIndex, start, end, lineFeedCnt, length) {\r\n this.bufferIndex = bufferIndex;\r\n this.start = start;\r\n this.end = end;\r\n this.lineFeedCnt = lineFeedCnt;\r\n this.length = length;\r\n }\r\n}\r\nexport class StringBuffer {\r\n constructor(buffer, lineStarts) {\r\n this.buffer = buffer;\r\n this.lineStarts = lineStarts;\r\n }\r\n}\r\n/**\r\n * Readonly snapshot for piece tree.\r\n * In a real multiple thread environment, to make snapshot reading always work correctly, we need to\r\n * 1. Make TreeNode.piece immutable, then reading and writing can run in parallel.\r\n * 2. TreeNode/Buffers normalization should not happen during snapshot reading.\r\n */\r\nclass PieceTreeSnapshot {\r\n constructor(tree, BOM) {\r\n this._pieces = [];\r\n this._tree = tree;\r\n this._BOM = BOM;\r\n this._index = 0;\r\n if (tree.root !== SENTINEL) {\r\n tree.iterate(tree.root, node => {\r\n if (node !== SENTINEL) {\r\n this._pieces.push(node.piece);\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n read() {\r\n if (this._pieces.length === 0) {\r\n if (this._index === 0) {\r\n this._index++;\r\n return this._BOM;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n if (this._index > this._pieces.length - 1) {\r\n return null;\r\n }\r\n if (this._index === 0) {\r\n return this._BOM + this._tree.getPieceContent(this._pieces[this._index++]);\r\n }\r\n return this._tree.getPieceContent(this._pieces[this._index++]);\r\n }\r\n}\r\nclass PieceTreeSearchCache {\r\n constructor(limit) {\r\n this._limit = limit;\r\n this._cache = [];\r\n }\r\n get(offset) {\r\n for (let i = this._cache.length - 1; i >= 0; i--) {\r\n let nodePos = this._cache[i];\r\n if (nodePos.nodeStartOffset <= offset && nodePos.nodeStartOffset + nodePos.node.piece.length >= offset) {\r\n return nodePos;\r\n }\r\n }\r\n return null;\r\n }\r\n get2(lineNumber) {\r\n for (let i = this._cache.length - 1; i >= 0; i--) {\r\n let nodePos = this._cache[i];\r\n if (nodePos.nodeStartLineNumber && nodePos.nodeStartLineNumber < lineNumber && nodePos.nodeStartLineNumber + nodePos.node.piece.lineFeedCnt >= lineNumber) {\r\n return nodePos;\r\n }\r\n }\r\n return null;\r\n }\r\n set(nodePosition) {\r\n if (this._cache.length >= this._limit) {\r\n this._cache.shift();\r\n }\r\n this._cache.push(nodePosition);\r\n }\r\n validate(offset) {\r\n let hasInvalidVal = false;\r\n let tmp = this._cache;\r\n for (let i = 0; i < tmp.length; i++) {\r\n let nodePos = tmp[i];\r\n if (nodePos.node.parent === null || nodePos.nodeStartOffset >= offset) {\r\n tmp[i] = null;\r\n hasInvalidVal = true;\r\n continue;\r\n }\r\n }\r\n if (hasInvalidVal) {\r\n let newArr = [];\r\n for (const entry of tmp) {\r\n if (entry !== null) {\r\n newArr.push(entry);\r\n }\r\n }\r\n this._cache = newArr;\r\n }\r\n }\r\n}\r\nexport class PieceTreeBase {\r\n constructor(chunks, eol, eolNormalized) {\r\n this.create(chunks, eol, eolNormalized);\r\n }\r\n create(chunks, eol, eolNormalized) {\r\n this._buffers = [\r\n new StringBuffer('', [0])\r\n ];\r\n this._lastChangeBufferPos = { line: 0, column: 0 };\r\n this.root = SENTINEL;\r\n this._lineCnt = 1;\r\n this._length = 0;\r\n this._EOL = eol;\r\n this._EOLLength = eol.length;\r\n this._EOLNormalized = eolNormalized;\r\n let lastNode = null;\r\n for (let i = 0, len = chunks.length; i < len; i++) {\r\n if (chunks[i].buffer.length > 0) {\r\n if (!chunks[i].lineStarts) {\r\n chunks[i].lineStarts = createLineStartsFast(chunks[i].buffer);\r\n }\r\n let piece = new Piece(i + 1, { line: 0, column: 0 }, { line: chunks[i].lineStarts.length - 1, column: chunks[i].buffer.length - chunks[i].lineStarts[chunks[i].lineStarts.length - 1] }, chunks[i].lineStarts.length - 1, chunks[i].buffer.length);\r\n this._buffers.push(chunks[i]);\r\n lastNode = this.rbInsertRight(lastNode, piece);\r\n }\r\n }\r\n this._searchCache = new PieceTreeSearchCache(1);\r\n this._lastVisitedLine = { lineNumber: 0, value: '' };\r\n this.computeBufferMetadata();\r\n }\r\n normalizeEOL(eol) {\r\n let averageBufferSize = AverageBufferSize;\r\n let min = averageBufferSize - Math.floor(averageBufferSize / 3);\r\n let max = min * 2;\r\n let tempChunk = '';\r\n let tempChunkLen = 0;\r\n let chunks = [];\r\n this.iterate(this.root, node => {\r\n let str = this.getNodeContent(node);\r\n let len = str.length;\r\n if (tempChunkLen <= min || tempChunkLen + len < max) {\r\n tempChunk += str;\r\n tempChunkLen += len;\r\n return true;\r\n }\r\n // flush anyways\r\n let text = tempChunk.replace(/\\r\\n|\\r|\\n/g, eol);\r\n chunks.push(new StringBuffer(text, createLineStartsFast(text)));\r\n tempChunk = str;\r\n tempChunkLen = len;\r\n return true;\r\n });\r\n if (tempChunkLen > 0) {\r\n let text = tempChunk.replace(/\\r\\n|\\r|\\n/g, eol);\r\n chunks.push(new StringBuffer(text, createLineStartsFast(text)));\r\n }\r\n this.create(chunks, eol, true);\r\n }\r\n // #region Buffer API\r\n getEOL() {\r\n return this._EOL;\r\n }\r\n setEOL(newEOL) {\r\n this._EOL = newEOL;\r\n this._EOLLength = this._EOL.length;\r\n this.normalizeEOL(newEOL);\r\n }\r\n createSnapshot(BOM) {\r\n return new PieceTreeSnapshot(this, BOM);\r\n }\r\n getOffsetAt(lineNumber, column) {\r\n let leftLen = 0; // inorder\r\n let x = this.root;\r\n while (x !== SENTINEL) {\r\n if (x.left !== SENTINEL && x.lf_left + 1 >= lineNumber) {\r\n x = x.left;\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt + 1 >= lineNumber) {\r\n leftLen += x.size_left;\r\n // lineNumber >= 2\r\n let accumualtedValInCurrentIndex = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n return leftLen += accumualtedValInCurrentIndex + column - 1;\r\n }\r\n else {\r\n lineNumber -= x.lf_left + x.piece.lineFeedCnt;\r\n leftLen += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n return leftLen;\r\n }\r\n getPositionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n let x = this.root;\r\n let lfCnt = 0;\r\n let originalOffset = offset;\r\n while (x !== SENTINEL) {\r\n if (x.size_left !== 0 && x.size_left >= offset) {\r\n x = x.left;\r\n }\r\n else if (x.size_left + x.piece.length >= offset) {\r\n let out = this.getIndexOf(x, offset - x.size_left);\r\n lfCnt += x.lf_left + out.index;\r\n if (out.index === 0) {\r\n let lineStartOffset = this.getOffsetAt(lfCnt + 1, 1);\r\n let column = originalOffset - lineStartOffset;\r\n return new Position(lfCnt + 1, column + 1);\r\n }\r\n return new Position(lfCnt + 1, out.remainder + 1);\r\n }\r\n else {\r\n offset -= x.size_left + x.piece.length;\r\n lfCnt += x.lf_left + x.piece.lineFeedCnt;\r\n if (x.right === SENTINEL) {\r\n // last node\r\n let lineStartOffset = this.getOffsetAt(lfCnt + 1, 1);\r\n let column = originalOffset - offset - lineStartOffset;\r\n return new Position(lfCnt + 1, column + 1);\r\n }\r\n else {\r\n x = x.right;\r\n }\r\n }\r\n }\r\n return new Position(1, 1);\r\n }\r\n getValueInRange(range, eol) {\r\n if (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn) {\r\n return '';\r\n }\r\n let startPosition = this.nodeAt2(range.startLineNumber, range.startColumn);\r\n let endPosition = this.nodeAt2(range.endLineNumber, range.endColumn);\r\n let value = this.getValueInRange2(startPosition, endPosition);\r\n if (eol) {\r\n if (eol !== this._EOL || !this._EOLNormalized) {\r\n return value.replace(/\\r\\n|\\r|\\n/g, eol);\r\n }\r\n if (eol === this.getEOL() && this._EOLNormalized) {\r\n if (eol === '\\r\\n') {\r\n }\r\n return value;\r\n }\r\n return value.replace(/\\r\\n|\\r|\\n/g, eol);\r\n }\r\n return value;\r\n }\r\n getValueInRange2(startPosition, endPosition) {\r\n if (startPosition.node === endPosition.node) {\r\n let node = startPosition.node;\r\n let buffer = this._buffers[node.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(node.piece.bufferIndex, node.piece.start);\r\n return buffer.substring(startOffset + startPosition.remainder, startOffset + endPosition.remainder);\r\n }\r\n let x = startPosition.node;\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n let ret = buffer.substring(startOffset + startPosition.remainder, startOffset + x.piece.length);\r\n x = x.next();\r\n while (x !== SENTINEL) {\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n if (x === endPosition.node) {\r\n ret += buffer.substring(startOffset, startOffset + endPosition.remainder);\r\n break;\r\n }\r\n else {\r\n ret += buffer.substr(startOffset, x.piece.length);\r\n }\r\n x = x.next();\r\n }\r\n return ret;\r\n }\r\n getLinesContent() {\r\n let lines = [];\r\n let linesLength = 0;\r\n let currentLine = '';\r\n let danglingCR = false;\r\n this.iterate(this.root, node => {\r\n if (node === SENTINEL) {\r\n return true;\r\n }\r\n const piece = node.piece;\r\n let pieceLength = piece.length;\r\n if (pieceLength === 0) {\r\n return true;\r\n }\r\n const buffer = this._buffers[piece.bufferIndex].buffer;\r\n const lineStarts = this._buffers[piece.bufferIndex].lineStarts;\r\n const pieceStartLine = piece.start.line;\r\n const pieceEndLine = piece.end.line;\r\n let pieceStartOffset = lineStarts[pieceStartLine] + piece.start.column;\r\n if (danglingCR) {\r\n if (buffer.charCodeAt(pieceStartOffset) === 10 /* LineFeed */) {\r\n // pretend the \\n was in the previous piece..\r\n pieceStartOffset++;\r\n pieceLength--;\r\n }\r\n lines[linesLength++] = currentLine;\r\n currentLine = '';\r\n danglingCR = false;\r\n if (pieceLength === 0) {\r\n return true;\r\n }\r\n }\r\n if (pieceStartLine === pieceEndLine) {\r\n // this piece has no new lines\r\n if (!this._EOLNormalized && buffer.charCodeAt(pieceStartOffset + pieceLength - 1) === 13 /* CarriageReturn */) {\r\n danglingCR = true;\r\n currentLine += buffer.substr(pieceStartOffset, pieceLength - 1);\r\n }\r\n else {\r\n currentLine += buffer.substr(pieceStartOffset, pieceLength);\r\n }\r\n return true;\r\n }\r\n // add the text before the first line start in this piece\r\n currentLine += (this._EOLNormalized\r\n ? buffer.substring(pieceStartOffset, Math.max(pieceStartOffset, lineStarts[pieceStartLine + 1] - this._EOLLength))\r\n : buffer.substring(pieceStartOffset, lineStarts[pieceStartLine + 1]).replace(/(\\r\\n|\\r|\\n)$/, ''));\r\n lines[linesLength++] = currentLine;\r\n for (let line = pieceStartLine + 1; line < pieceEndLine; line++) {\r\n currentLine = (this._EOLNormalized\r\n ? buffer.substring(lineStarts[line], lineStarts[line + 1] - this._EOLLength)\r\n : buffer.substring(lineStarts[line], lineStarts[line + 1]).replace(/(\\r\\n|\\r|\\n)$/, ''));\r\n lines[linesLength++] = currentLine;\r\n }\r\n if (!this._EOLNormalized && buffer.charCodeAt(lineStarts[pieceEndLine] + piece.end.column - 1) === 13 /* CarriageReturn */) {\r\n danglingCR = true;\r\n if (piece.end.column === 0) {\r\n // The last line ended with a \\r, let's undo the push, it will be pushed by next iteration\r\n linesLength--;\r\n }\r\n else {\r\n currentLine = buffer.substr(lineStarts[pieceEndLine], piece.end.column - 1);\r\n }\r\n }\r\n else {\r\n currentLine = buffer.substr(lineStarts[pieceEndLine], piece.end.column);\r\n }\r\n return true;\r\n });\r\n if (danglingCR) {\r\n lines[linesLength++] = currentLine;\r\n currentLine = '';\r\n }\r\n lines[linesLength++] = currentLine;\r\n return lines;\r\n }\r\n getLength() {\r\n return this._length;\r\n }\r\n getLineCount() {\r\n return this._lineCnt;\r\n }\r\n getLineContent(lineNumber) {\r\n if (this._lastVisitedLine.lineNumber === lineNumber) {\r\n return this._lastVisitedLine.value;\r\n }\r\n this._lastVisitedLine.lineNumber = lineNumber;\r\n if (lineNumber === this._lineCnt) {\r\n this._lastVisitedLine.value = this.getLineRawContent(lineNumber);\r\n }\r\n else if (this._EOLNormalized) {\r\n this._lastVisitedLine.value = this.getLineRawContent(lineNumber, this._EOLLength);\r\n }\r\n else {\r\n this._lastVisitedLine.value = this.getLineRawContent(lineNumber).replace(/(\\r\\n|\\r|\\n)$/, '');\r\n }\r\n return this._lastVisitedLine.value;\r\n }\r\n _getCharCode(nodePos) {\r\n if (nodePos.remainder === nodePos.node.piece.length) {\r\n // the char we want to fetch is at the head of next node.\r\n let matchingNode = nodePos.node.next();\r\n if (!matchingNode) {\r\n return 0;\r\n }\r\n let buffer = this._buffers[matchingNode.piece.bufferIndex];\r\n let startOffset = this.offsetInBuffer(matchingNode.piece.bufferIndex, matchingNode.piece.start);\r\n return buffer.buffer.charCodeAt(startOffset);\r\n }\r\n else {\r\n let buffer = this._buffers[nodePos.node.piece.bufferIndex];\r\n let startOffset = this.offsetInBuffer(nodePos.node.piece.bufferIndex, nodePos.node.piece.start);\r\n let targetOffset = startOffset + nodePos.remainder;\r\n return buffer.buffer.charCodeAt(targetOffset);\r\n }\r\n }\r\n getLineCharCode(lineNumber, index) {\r\n let nodePos = this.nodeAt2(lineNumber, index + 1);\r\n return this._getCharCode(nodePos);\r\n }\r\n getLineLength(lineNumber) {\r\n if (lineNumber === this.getLineCount()) {\r\n let startOffset = this.getOffsetAt(lineNumber, 1);\r\n return this.getLength() - startOffset;\r\n }\r\n return this.getOffsetAt(lineNumber + 1, 1) - this.getOffsetAt(lineNumber, 1) - this._EOLLength;\r\n }\r\n findMatchesInNode(node, searcher, startLineNumber, startColumn, startCursor, endCursor, searchData, captureMatches, limitResultCount, resultLen, result) {\r\n let buffer = this._buffers[node.piece.bufferIndex];\r\n let startOffsetInBuffer = this.offsetInBuffer(node.piece.bufferIndex, node.piece.start);\r\n let start = this.offsetInBuffer(node.piece.bufferIndex, startCursor);\r\n let end = this.offsetInBuffer(node.piece.bufferIndex, endCursor);\r\n let m;\r\n // Reset regex to search from the beginning\r\n let ret = { line: 0, column: 0 };\r\n let searchText;\r\n let offsetInBuffer;\r\n if (searcher._wordSeparators) {\r\n searchText = buffer.buffer.substring(start, end);\r\n offsetInBuffer = (offset) => offset + start;\r\n searcher.reset(0);\r\n }\r\n else {\r\n searchText = buffer.buffer;\r\n offsetInBuffer = (offset) => offset;\r\n searcher.reset(start);\r\n }\r\n do {\r\n m = searcher.next(searchText);\r\n if (m) {\r\n if (offsetInBuffer(m.index) >= end) {\r\n return resultLen;\r\n }\r\n this.positionInBuffer(node, offsetInBuffer(m.index) - startOffsetInBuffer, ret);\r\n let lineFeedCnt = this.getLineFeedCnt(node.piece.bufferIndex, startCursor, ret);\r\n let retStartColumn = ret.line === startCursor.line ? ret.column - startCursor.column + startColumn : ret.column + 1;\r\n let retEndColumn = retStartColumn + m[0].length;\r\n result[resultLen++] = createFindMatch(new Range(startLineNumber + lineFeedCnt, retStartColumn, startLineNumber + lineFeedCnt, retEndColumn), m, captureMatches);\r\n if (offsetInBuffer(m.index) + m[0].length >= end) {\r\n return resultLen;\r\n }\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n const result = [];\r\n let resultLen = 0;\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n let startPosition = this.nodeAt2(searchRange.startLineNumber, searchRange.startColumn);\r\n if (startPosition === null) {\r\n return [];\r\n }\r\n let endPosition = this.nodeAt2(searchRange.endLineNumber, searchRange.endColumn);\r\n if (endPosition === null) {\r\n return [];\r\n }\r\n let start = this.positionInBuffer(startPosition.node, startPosition.remainder);\r\n let end = this.positionInBuffer(endPosition.node, endPosition.remainder);\r\n if (startPosition.node === endPosition.node) {\r\n this.findMatchesInNode(startPosition.node, searcher, searchRange.startLineNumber, searchRange.startColumn, start, end, searchData, captureMatches, limitResultCount, resultLen, result);\r\n return result;\r\n }\r\n let startLineNumber = searchRange.startLineNumber;\r\n let currentNode = startPosition.node;\r\n while (currentNode !== endPosition.node) {\r\n let lineBreakCnt = this.getLineFeedCnt(currentNode.piece.bufferIndex, start, currentNode.piece.end);\r\n if (lineBreakCnt >= 1) {\r\n // last line break position\r\n let lineStarts = this._buffers[currentNode.piece.bufferIndex].lineStarts;\r\n let startOffsetInBuffer = this.offsetInBuffer(currentNode.piece.bufferIndex, currentNode.piece.start);\r\n let nextLineStartOffset = lineStarts[start.line + lineBreakCnt];\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn : 1;\r\n resultLen = this.findMatchesInNode(currentNode, searcher, startLineNumber, startColumn, start, this.positionInBuffer(currentNode, nextLineStartOffset - startOffsetInBuffer), searchData, captureMatches, limitResultCount, resultLen, result);\r\n if (resultLen >= limitResultCount) {\r\n return result;\r\n }\r\n startLineNumber += lineBreakCnt;\r\n }\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn - 1 : 0;\r\n // search for the remaining content\r\n if (startLineNumber === searchRange.endLineNumber) {\r\n const text = this.getLineContent(startLineNumber).substring(startColumn, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, searcher, text, searchRange.endLineNumber, startColumn, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n resultLen = this._findMatchesInLine(searchData, searcher, this.getLineContent(startLineNumber).substr(startColumn), startLineNumber, startColumn, resultLen, result, captureMatches, limitResultCount);\r\n if (resultLen >= limitResultCount) {\r\n return result;\r\n }\r\n startLineNumber++;\r\n startPosition = this.nodeAt2(startLineNumber, 1);\r\n currentNode = startPosition.node;\r\n start = this.positionInBuffer(startPosition.node, startPosition.remainder);\r\n }\r\n if (startLineNumber === searchRange.endLineNumber) {\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn - 1 : 0;\r\n const text = this.getLineContent(startLineNumber).substring(startColumn, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, searcher, text, searchRange.endLineNumber, startColumn, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n let startColumn = startLineNumber === searchRange.startLineNumber ? searchRange.startColumn : 1;\r\n resultLen = this.findMatchesInNode(endPosition.node, searcher, startLineNumber, startColumn, start, end, searchData, captureMatches, limitResultCount, resultLen, result);\r\n return result;\r\n }\r\n _findMatchesInLine(searchData, searcher, text, lineNumber, deltaOffset, resultLen, result, captureMatches, limitResultCount) {\r\n const wordSeparators = searchData.wordSeparators;\r\n if (!captureMatches && searchData.simpleSearch) {\r\n const searchString = searchData.simpleSearch;\r\n const searchStringLen = searchString.length;\r\n const textLength = text.length;\r\n let lastMatchIndex = -searchStringLen;\r\n while ((lastMatchIndex = text.indexOf(searchString, lastMatchIndex + searchStringLen)) !== -1) {\r\n if (!wordSeparators || isValidMatch(wordSeparators, text, textLength, lastMatchIndex, searchStringLen)) {\r\n result[resultLen++] = new FindMatch(new Range(lineNumber, lastMatchIndex + 1 + deltaOffset, lineNumber, lastMatchIndex + 1 + searchStringLen + deltaOffset), null);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n }\r\n return resultLen;\r\n }\r\n let m;\r\n // Reset regex to search from the beginning\r\n searcher.reset(0);\r\n do {\r\n m = searcher.next(text);\r\n if (m) {\r\n result[resultLen++] = createFindMatch(new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset), m, captureMatches);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n // #endregion\r\n // #region Piece Table\r\n insert(offset, value, eolNormalized = false) {\r\n this._EOLNormalized = this._EOLNormalized && eolNormalized;\r\n this._lastVisitedLine.lineNumber = 0;\r\n this._lastVisitedLine.value = '';\r\n if (this.root !== SENTINEL) {\r\n let { node, remainder, nodeStartOffset } = this.nodeAt(offset);\r\n let piece = node.piece;\r\n let bufferIndex = piece.bufferIndex;\r\n let insertPosInBuffer = this.positionInBuffer(node, remainder);\r\n if (node.piece.bufferIndex === 0 &&\r\n piece.end.line === this._lastChangeBufferPos.line &&\r\n piece.end.column === this._lastChangeBufferPos.column &&\r\n (nodeStartOffset + piece.length === offset) &&\r\n value.length < AverageBufferSize) {\r\n // changed buffer\r\n this.appendToNode(node, value);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n if (nodeStartOffset === offset) {\r\n this.insertContentToNodeLeft(value, node);\r\n this._searchCache.validate(offset);\r\n }\r\n else if (nodeStartOffset + node.piece.length > offset) {\r\n // we are inserting into the middle of a node.\r\n let nodesToDel = [];\r\n let newRightPiece = new Piece(piece.bufferIndex, insertPosInBuffer, piece.end, this.getLineFeedCnt(piece.bufferIndex, insertPosInBuffer, piece.end), this.offsetInBuffer(bufferIndex, piece.end) - this.offsetInBuffer(bufferIndex, insertPosInBuffer));\r\n if (this.shouldCheckCRLF() && this.endWithCR(value)) {\r\n let headOfRight = this.nodeCharCodeAt(node, remainder);\r\n if (headOfRight === 10 /** \\n */) {\r\n let newStart = { line: newRightPiece.start.line + 1, column: 0 };\r\n newRightPiece = new Piece(newRightPiece.bufferIndex, newStart, newRightPiece.end, this.getLineFeedCnt(newRightPiece.bufferIndex, newStart, newRightPiece.end), newRightPiece.length - 1);\r\n value += '\\n';\r\n }\r\n }\r\n // reuse node for content before insertion point.\r\n if (this.shouldCheckCRLF() && this.startWithLF(value)) {\r\n let tailOfLeft = this.nodeCharCodeAt(node, remainder - 1);\r\n if (tailOfLeft === 13 /** \\r */) {\r\n let previousPos = this.positionInBuffer(node, remainder - 1);\r\n this.deleteNodeTail(node, previousPos);\r\n value = '\\r' + value;\r\n if (node.piece.length === 0) {\r\n nodesToDel.push(node);\r\n }\r\n }\r\n else {\r\n this.deleteNodeTail(node, insertPosInBuffer);\r\n }\r\n }\r\n else {\r\n this.deleteNodeTail(node, insertPosInBuffer);\r\n }\r\n let newPieces = this.createNewPieces(value);\r\n if (newRightPiece.length > 0) {\r\n this.rbInsertRight(node, newRightPiece);\r\n }\r\n let tmpNode = node;\r\n for (let k = 0; k < newPieces.length; k++) {\r\n tmpNode = this.rbInsertRight(tmpNode, newPieces[k]);\r\n }\r\n this.deleteNodes(nodesToDel);\r\n }\r\n else {\r\n this.insertContentToNodeRight(value, node);\r\n }\r\n }\r\n else {\r\n // insert new node\r\n let pieces = this.createNewPieces(value);\r\n let node = this.rbInsertLeft(null, pieces[0]);\r\n for (let k = 1; k < pieces.length; k++) {\r\n node = this.rbInsertRight(node, pieces[k]);\r\n }\r\n }\r\n // todo, this is too brutal. Total line feed count should be updated the same way as lf_left.\r\n this.computeBufferMetadata();\r\n }\r\n delete(offset, cnt) {\r\n this._lastVisitedLine.lineNumber = 0;\r\n this._lastVisitedLine.value = '';\r\n if (cnt <= 0 || this.root === SENTINEL) {\r\n return;\r\n }\r\n let startPosition = this.nodeAt(offset);\r\n let endPosition = this.nodeAt(offset + cnt);\r\n let startNode = startPosition.node;\r\n let endNode = endPosition.node;\r\n if (startNode === endNode) {\r\n let startSplitPosInBuffer = this.positionInBuffer(startNode, startPosition.remainder);\r\n let endSplitPosInBuffer = this.positionInBuffer(startNode, endPosition.remainder);\r\n if (startPosition.nodeStartOffset === offset) {\r\n if (cnt === startNode.piece.length) { // delete node\r\n let next = startNode.next();\r\n rbDelete(this, startNode);\r\n this.validateCRLFWithPrevNode(next);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n this.deleteNodeHead(startNode, endSplitPosInBuffer);\r\n this._searchCache.validate(offset);\r\n this.validateCRLFWithPrevNode(startNode);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n if (startPosition.nodeStartOffset + startNode.piece.length === offset + cnt) {\r\n this.deleteNodeTail(startNode, startSplitPosInBuffer);\r\n this.validateCRLFWithNextNode(startNode);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n // delete content in the middle, this node will be splitted to nodes\r\n this.shrinkNode(startNode, startSplitPosInBuffer, endSplitPosInBuffer);\r\n this.computeBufferMetadata();\r\n return;\r\n }\r\n let nodesToDel = [];\r\n let startSplitPosInBuffer = this.positionInBuffer(startNode, startPosition.remainder);\r\n this.deleteNodeTail(startNode, startSplitPosInBuffer);\r\n this._searchCache.validate(offset);\r\n if (startNode.piece.length === 0) {\r\n nodesToDel.push(startNode);\r\n }\r\n // update last touched node\r\n let endSplitPosInBuffer = this.positionInBuffer(endNode, endPosition.remainder);\r\n this.deleteNodeHead(endNode, endSplitPosInBuffer);\r\n if (endNode.piece.length === 0) {\r\n nodesToDel.push(endNode);\r\n }\r\n // delete nodes in between\r\n let secondNode = startNode.next();\r\n for (let node = secondNode; node !== SENTINEL && node !== endNode; node = node.next()) {\r\n nodesToDel.push(node);\r\n }\r\n let prev = startNode.piece.length === 0 ? startNode.prev() : startNode;\r\n this.deleteNodes(nodesToDel);\r\n this.validateCRLFWithNextNode(prev);\r\n this.computeBufferMetadata();\r\n }\r\n insertContentToNodeLeft(value, node) {\r\n // we are inserting content to the beginning of node\r\n let nodesToDel = [];\r\n if (this.shouldCheckCRLF() && this.endWithCR(value) && this.startWithLF(node)) {\r\n // move `\\n` to new node.\r\n let piece = node.piece;\r\n let newStart = { line: piece.start.line + 1, column: 0 };\r\n let nPiece = new Piece(piece.bufferIndex, newStart, piece.end, this.getLineFeedCnt(piece.bufferIndex, newStart, piece.end), piece.length - 1);\r\n node.piece = nPiece;\r\n value += '\\n';\r\n updateTreeMetadata(this, node, -1, -1);\r\n if (node.piece.length === 0) {\r\n nodesToDel.push(node);\r\n }\r\n }\r\n let newPieces = this.createNewPieces(value);\r\n let newNode = this.rbInsertLeft(node, newPieces[newPieces.length - 1]);\r\n for (let k = newPieces.length - 2; k >= 0; k--) {\r\n newNode = this.rbInsertLeft(newNode, newPieces[k]);\r\n }\r\n this.validateCRLFWithPrevNode(newNode);\r\n this.deleteNodes(nodesToDel);\r\n }\r\n insertContentToNodeRight(value, node) {\r\n // we are inserting to the right of this node.\r\n if (this.adjustCarriageReturnFromNext(value, node)) {\r\n // move \\n to the new node.\r\n value += '\\n';\r\n }\r\n let newPieces = this.createNewPieces(value);\r\n let newNode = this.rbInsertRight(node, newPieces[0]);\r\n let tmpNode = newNode;\r\n for (let k = 1; k < newPieces.length; k++) {\r\n tmpNode = this.rbInsertRight(tmpNode, newPieces[k]);\r\n }\r\n this.validateCRLFWithPrevNode(newNode);\r\n }\r\n positionInBuffer(node, remainder, ret) {\r\n let piece = node.piece;\r\n let bufferIndex = node.piece.bufferIndex;\r\n let lineStarts = this._buffers[bufferIndex].lineStarts;\r\n let startOffset = lineStarts[piece.start.line] + piece.start.column;\r\n let offset = startOffset + remainder;\r\n // binary search offset between startOffset and endOffset\r\n let low = piece.start.line;\r\n let high = piece.end.line;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStart = lineStarts[mid];\r\n if (mid === high) {\r\n break;\r\n }\r\n midStop = lineStarts[mid + 1];\r\n if (offset < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (offset >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (ret) {\r\n ret.line = mid;\r\n ret.column = offset - midStart;\r\n return null;\r\n }\r\n return {\r\n line: mid,\r\n column: offset - midStart\r\n };\r\n }\r\n getLineFeedCnt(bufferIndex, start, end) {\r\n // we don't need to worry about start: abc\\r|\\n, or abc|\\r, or abc|\\n, or abc|\\r\\n doesn't change the fact that, there is one line break after start.\r\n // now let's take care of end: abc\\r|\\n, if end is in between \\r and \\n, we need to add line feed count by 1\r\n if (end.column === 0) {\r\n return end.line - start.line;\r\n }\r\n let lineStarts = this._buffers[bufferIndex].lineStarts;\r\n if (end.line === lineStarts.length - 1) { // it means, there is no \\n after end, otherwise, there will be one more lineStart.\r\n return end.line - start.line;\r\n }\r\n let nextLineStartOffset = lineStarts[end.line + 1];\r\n let endOffset = lineStarts[end.line] + end.column;\r\n if (nextLineStartOffset > endOffset + 1) { // there are more than 1 character after end, which means it can't be \\n\r\n return end.line - start.line;\r\n }\r\n // endOffset + 1 === nextLineStartOffset\r\n // character at endOffset is \\n, so we check the character before first\r\n // if character at endOffset is \\r, end.column is 0 and we can't get here.\r\n let previousCharOffset = endOffset - 1; // end.column > 0 so it's okay.\r\n let buffer = this._buffers[bufferIndex].buffer;\r\n if (buffer.charCodeAt(previousCharOffset) === 13) {\r\n return end.line - start.line + 1;\r\n }\r\n else {\r\n return end.line - start.line;\r\n }\r\n }\r\n offsetInBuffer(bufferIndex, cursor) {\r\n let lineStarts = this._buffers[bufferIndex].lineStarts;\r\n return lineStarts[cursor.line] + cursor.column;\r\n }\r\n deleteNodes(nodes) {\r\n for (let i = 0; i < nodes.length; i++) {\r\n rbDelete(this, nodes[i]);\r\n }\r\n }\r\n createNewPieces(text) {\r\n if (text.length > AverageBufferSize) {\r\n // the content is large, operations like substring, charCode becomes slow\r\n // so here we split it into smaller chunks, just like what we did for CR/LF normalization\r\n let newPieces = [];\r\n while (text.length > AverageBufferSize) {\r\n const lastChar = text.charCodeAt(AverageBufferSize - 1);\r\n let splitText;\r\n if (lastChar === 13 /* CarriageReturn */ || (lastChar >= 0xD800 && lastChar <= 0xDBFF)) {\r\n // last character is \\r or a high surrogate => keep it back\r\n splitText = text.substring(0, AverageBufferSize - 1);\r\n text = text.substring(AverageBufferSize - 1);\r\n }\r\n else {\r\n splitText = text.substring(0, AverageBufferSize);\r\n text = text.substring(AverageBufferSize);\r\n }\r\n let lineStarts = createLineStartsFast(splitText);\r\n newPieces.push(new Piece(this._buffers.length, /* buffer index */ { line: 0, column: 0 }, { line: lineStarts.length - 1, column: splitText.length - lineStarts[lineStarts.length - 1] }, lineStarts.length - 1, splitText.length));\r\n this._buffers.push(new StringBuffer(splitText, lineStarts));\r\n }\r\n let lineStarts = createLineStartsFast(text);\r\n newPieces.push(new Piece(this._buffers.length, /* buffer index */ { line: 0, column: 0 }, { line: lineStarts.length - 1, column: text.length - lineStarts[lineStarts.length - 1] }, lineStarts.length - 1, text.length));\r\n this._buffers.push(new StringBuffer(text, lineStarts));\r\n return newPieces;\r\n }\r\n let startOffset = this._buffers[0].buffer.length;\r\n const lineStarts = createLineStartsFast(text, false);\r\n let start = this._lastChangeBufferPos;\r\n if (this._buffers[0].lineStarts[this._buffers[0].lineStarts.length - 1] === startOffset\r\n && startOffset !== 0\r\n && this.startWithLF(text)\r\n && this.endWithCR(this._buffers[0].buffer) // todo, we can check this._lastChangeBufferPos's column as it's the last one\r\n ) {\r\n this._lastChangeBufferPos = { line: this._lastChangeBufferPos.line, column: this._lastChangeBufferPos.column + 1 };\r\n start = this._lastChangeBufferPos;\r\n for (let i = 0; i < lineStarts.length; i++) {\r\n lineStarts[i] += startOffset + 1;\r\n }\r\n this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(lineStarts.slice(1));\r\n this._buffers[0].buffer += '_' + text;\r\n startOffset += 1;\r\n }\r\n else {\r\n if (startOffset !== 0) {\r\n for (let i = 0; i < lineStarts.length; i++) {\r\n lineStarts[i] += startOffset;\r\n }\r\n }\r\n this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(lineStarts.slice(1));\r\n this._buffers[0].buffer += text;\r\n }\r\n const endOffset = this._buffers[0].buffer.length;\r\n let endIndex = this._buffers[0].lineStarts.length - 1;\r\n let endColumn = endOffset - this._buffers[0].lineStarts[endIndex];\r\n let endPos = { line: endIndex, column: endColumn };\r\n let newPiece = new Piece(0, /** todo@peng */ start, endPos, this.getLineFeedCnt(0, start, endPos), endOffset - startOffset);\r\n this._lastChangeBufferPos = endPos;\r\n return [newPiece];\r\n }\r\n getLineRawContent(lineNumber, endOffset = 0) {\r\n let x = this.root;\r\n let ret = '';\r\n let cache = this._searchCache.get2(lineNumber);\r\n if (cache) {\r\n x = cache.node;\r\n let prevAccumulatedValue = this.getAccumulatedValue(x, lineNumber - cache.nodeStartLineNumber - 1);\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n if (cache.nodeStartLineNumber + x.piece.lineFeedCnt === lineNumber) {\r\n ret = buffer.substring(startOffset + prevAccumulatedValue, startOffset + x.piece.length);\r\n }\r\n else {\r\n let accumulatedValue = this.getAccumulatedValue(x, lineNumber - cache.nodeStartLineNumber);\r\n return buffer.substring(startOffset + prevAccumulatedValue, startOffset + accumulatedValue - endOffset);\r\n }\r\n }\r\n else {\r\n let nodeStartOffset = 0;\r\n const originalLineNumber = lineNumber;\r\n while (x !== SENTINEL) {\r\n if (x.left !== SENTINEL && x.lf_left >= lineNumber - 1) {\r\n x = x.left;\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt > lineNumber - 1) {\r\n let prevAccumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n let accumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 1);\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n nodeStartOffset += x.size_left;\r\n this._searchCache.set({\r\n node: x,\r\n nodeStartOffset,\r\n nodeStartLineNumber: originalLineNumber - (lineNumber - 1 - x.lf_left)\r\n });\r\n return buffer.substring(startOffset + prevAccumulatedValue, startOffset + accumulatedValue - endOffset);\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt === lineNumber - 1) {\r\n let prevAccumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n ret = buffer.substring(startOffset + prevAccumulatedValue, startOffset + x.piece.length);\r\n break;\r\n }\r\n else {\r\n lineNumber -= x.lf_left + x.piece.lineFeedCnt;\r\n nodeStartOffset += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n }\r\n // search in order, to find the node contains end column\r\n x = x.next();\r\n while (x !== SENTINEL) {\r\n let buffer = this._buffers[x.piece.bufferIndex].buffer;\r\n if (x.piece.lineFeedCnt > 0) {\r\n let accumulatedValue = this.getAccumulatedValue(x, 0);\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n ret += buffer.substring(startOffset, startOffset + accumulatedValue - endOffset);\r\n return ret;\r\n }\r\n else {\r\n let startOffset = this.offsetInBuffer(x.piece.bufferIndex, x.piece.start);\r\n ret += buffer.substr(startOffset, x.piece.length);\r\n }\r\n x = x.next();\r\n }\r\n return ret;\r\n }\r\n computeBufferMetadata() {\r\n let x = this.root;\r\n let lfCnt = 1;\r\n let len = 0;\r\n while (x !== SENTINEL) {\r\n lfCnt += x.lf_left + x.piece.lineFeedCnt;\r\n len += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n this._lineCnt = lfCnt;\r\n this._length = len;\r\n this._searchCache.validate(this._length);\r\n }\r\n // #region node operations\r\n getIndexOf(node, accumulatedValue) {\r\n let piece = node.piece;\r\n let pos = this.positionInBuffer(node, accumulatedValue);\r\n let lineCnt = pos.line - piece.start.line;\r\n if (this.offsetInBuffer(piece.bufferIndex, piece.end) - this.offsetInBuffer(piece.bufferIndex, piece.start) === accumulatedValue) {\r\n // we are checking the end of this node, so a CRLF check is necessary.\r\n let realLineCnt = this.getLineFeedCnt(node.piece.bufferIndex, piece.start, pos);\r\n if (realLineCnt !== lineCnt) {\r\n // aha yes, CRLF\r\n return { index: realLineCnt, remainder: 0 };\r\n }\r\n }\r\n return { index: lineCnt, remainder: pos.column };\r\n }\r\n getAccumulatedValue(node, index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n let piece = node.piece;\r\n let lineStarts = this._buffers[piece.bufferIndex].lineStarts;\r\n let expectedLineStartIndex = piece.start.line + index + 1;\r\n if (expectedLineStartIndex > piece.end.line) {\r\n return lineStarts[piece.end.line] + piece.end.column - lineStarts[piece.start.line] - piece.start.column;\r\n }\r\n else {\r\n return lineStarts[expectedLineStartIndex] - lineStarts[piece.start.line] - piece.start.column;\r\n }\r\n }\r\n deleteNodeTail(node, pos) {\r\n const piece = node.piece;\r\n const originalLFCnt = piece.lineFeedCnt;\r\n const originalEndOffset = this.offsetInBuffer(piece.bufferIndex, piece.end);\r\n const newEnd = pos;\r\n const newEndOffset = this.offsetInBuffer(piece.bufferIndex, newEnd);\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, piece.start, newEnd);\r\n const lf_delta = newLineFeedCnt - originalLFCnt;\r\n const size_delta = newEndOffset - originalEndOffset;\r\n const newLength = piece.length + size_delta;\r\n node.piece = new Piece(piece.bufferIndex, piece.start, newEnd, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, node, size_delta, lf_delta);\r\n }\r\n deleteNodeHead(node, pos) {\r\n const piece = node.piece;\r\n const originalLFCnt = piece.lineFeedCnt;\r\n const originalStartOffset = this.offsetInBuffer(piece.bufferIndex, piece.start);\r\n const newStart = pos;\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, newStart, piece.end);\r\n const newStartOffset = this.offsetInBuffer(piece.bufferIndex, newStart);\r\n const lf_delta = newLineFeedCnt - originalLFCnt;\r\n const size_delta = originalStartOffset - newStartOffset;\r\n const newLength = piece.length + size_delta;\r\n node.piece = new Piece(piece.bufferIndex, newStart, piece.end, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, node, size_delta, lf_delta);\r\n }\r\n shrinkNode(node, start, end) {\r\n const piece = node.piece;\r\n const originalStartPos = piece.start;\r\n const originalEndPos = piece.end;\r\n // old piece, originalStartPos, start\r\n const oldLength = piece.length;\r\n const oldLFCnt = piece.lineFeedCnt;\r\n const newEnd = start;\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, piece.start, newEnd);\r\n const newLength = this.offsetInBuffer(piece.bufferIndex, start) - this.offsetInBuffer(piece.bufferIndex, originalStartPos);\r\n node.piece = new Piece(piece.bufferIndex, piece.start, newEnd, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, node, newLength - oldLength, newLineFeedCnt - oldLFCnt);\r\n // new right piece, end, originalEndPos\r\n let newPiece = new Piece(piece.bufferIndex, end, originalEndPos, this.getLineFeedCnt(piece.bufferIndex, end, originalEndPos), this.offsetInBuffer(piece.bufferIndex, originalEndPos) - this.offsetInBuffer(piece.bufferIndex, end));\r\n let newNode = this.rbInsertRight(node, newPiece);\r\n this.validateCRLFWithPrevNode(newNode);\r\n }\r\n appendToNode(node, value) {\r\n if (this.adjustCarriageReturnFromNext(value, node)) {\r\n value += '\\n';\r\n }\r\n const hitCRLF = this.shouldCheckCRLF() && this.startWithLF(value) && this.endWithCR(node);\r\n const startOffset = this._buffers[0].buffer.length;\r\n this._buffers[0].buffer += value;\r\n const lineStarts = createLineStartsFast(value, false);\r\n for (let i = 0; i < lineStarts.length; i++) {\r\n lineStarts[i] += startOffset;\r\n }\r\n if (hitCRLF) {\r\n let prevStartOffset = this._buffers[0].lineStarts[this._buffers[0].lineStarts.length - 2];\r\n this._buffers[0].lineStarts.pop();\r\n // _lastChangeBufferPos is already wrong\r\n this._lastChangeBufferPos = { line: this._lastChangeBufferPos.line - 1, column: startOffset - prevStartOffset };\r\n }\r\n this._buffers[0].lineStarts = this._buffers[0].lineStarts.concat(lineStarts.slice(1));\r\n const endIndex = this._buffers[0].lineStarts.length - 1;\r\n const endColumn = this._buffers[0].buffer.length - this._buffers[0].lineStarts[endIndex];\r\n const newEnd = { line: endIndex, column: endColumn };\r\n const newLength = node.piece.length + value.length;\r\n const oldLineFeedCnt = node.piece.lineFeedCnt;\r\n const newLineFeedCnt = this.getLineFeedCnt(0, node.piece.start, newEnd);\r\n const lf_delta = newLineFeedCnt - oldLineFeedCnt;\r\n node.piece = new Piece(node.piece.bufferIndex, node.piece.start, newEnd, newLineFeedCnt, newLength);\r\n this._lastChangeBufferPos = newEnd;\r\n updateTreeMetadata(this, node, value.length, lf_delta);\r\n }\r\n nodeAt(offset) {\r\n let x = this.root;\r\n let cache = this._searchCache.get(offset);\r\n if (cache) {\r\n return {\r\n node: cache.node,\r\n nodeStartOffset: cache.nodeStartOffset,\r\n remainder: offset - cache.nodeStartOffset\r\n };\r\n }\r\n let nodeStartOffset = 0;\r\n while (x !== SENTINEL) {\r\n if (x.size_left > offset) {\r\n x = x.left;\r\n }\r\n else if (x.size_left + x.piece.length >= offset) {\r\n nodeStartOffset += x.size_left;\r\n let ret = {\r\n node: x,\r\n remainder: offset - x.size_left,\r\n nodeStartOffset\r\n };\r\n this._searchCache.set(ret);\r\n return ret;\r\n }\r\n else {\r\n offset -= x.size_left + x.piece.length;\r\n nodeStartOffset += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n return null;\r\n }\r\n nodeAt2(lineNumber, column) {\r\n let x = this.root;\r\n let nodeStartOffset = 0;\r\n while (x !== SENTINEL) {\r\n if (x.left !== SENTINEL && x.lf_left >= lineNumber - 1) {\r\n x = x.left;\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt > lineNumber - 1) {\r\n let prevAccumualtedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n let accumulatedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 1);\r\n nodeStartOffset += x.size_left;\r\n return {\r\n node: x,\r\n remainder: Math.min(prevAccumualtedValue + column - 1, accumulatedValue),\r\n nodeStartOffset\r\n };\r\n }\r\n else if (x.lf_left + x.piece.lineFeedCnt === lineNumber - 1) {\r\n let prevAccumualtedValue = this.getAccumulatedValue(x, lineNumber - x.lf_left - 2);\r\n if (prevAccumualtedValue + column - 1 <= x.piece.length) {\r\n return {\r\n node: x,\r\n remainder: prevAccumualtedValue + column - 1,\r\n nodeStartOffset\r\n };\r\n }\r\n else {\r\n column -= x.piece.length - prevAccumualtedValue;\r\n break;\r\n }\r\n }\r\n else {\r\n lineNumber -= x.lf_left + x.piece.lineFeedCnt;\r\n nodeStartOffset += x.size_left + x.piece.length;\r\n x = x.right;\r\n }\r\n }\r\n // search in order, to find the node contains position.column\r\n x = x.next();\r\n while (x !== SENTINEL) {\r\n if (x.piece.lineFeedCnt > 0) {\r\n let accumulatedValue = this.getAccumulatedValue(x, 0);\r\n let nodeStartOffset = this.offsetOfNode(x);\r\n return {\r\n node: x,\r\n remainder: Math.min(column - 1, accumulatedValue),\r\n nodeStartOffset\r\n };\r\n }\r\n else {\r\n if (x.piece.length >= column - 1) {\r\n let nodeStartOffset = this.offsetOfNode(x);\r\n return {\r\n node: x,\r\n remainder: column - 1,\r\n nodeStartOffset\r\n };\r\n }\r\n else {\r\n column -= x.piece.length;\r\n }\r\n }\r\n x = x.next();\r\n }\r\n return null;\r\n }\r\n nodeCharCodeAt(node, offset) {\r\n if (node.piece.lineFeedCnt < 1) {\r\n return -1;\r\n }\r\n let buffer = this._buffers[node.piece.bufferIndex];\r\n let newOffset = this.offsetInBuffer(node.piece.bufferIndex, node.piece.start) + offset;\r\n return buffer.buffer.charCodeAt(newOffset);\r\n }\r\n offsetOfNode(node) {\r\n if (!node) {\r\n return 0;\r\n }\r\n let pos = node.size_left;\r\n while (node !== this.root) {\r\n if (node.parent.right === node) {\r\n pos += node.parent.size_left + node.parent.piece.length;\r\n }\r\n node = node.parent;\r\n }\r\n return pos;\r\n }\r\n // #endregion\r\n // #region CRLF\r\n shouldCheckCRLF() {\r\n return !(this._EOLNormalized && this._EOL === '\\n');\r\n }\r\n startWithLF(val) {\r\n if (typeof val === 'string') {\r\n return val.charCodeAt(0) === 10;\r\n }\r\n if (val === SENTINEL || val.piece.lineFeedCnt === 0) {\r\n return false;\r\n }\r\n let piece = val.piece;\r\n let lineStarts = this._buffers[piece.bufferIndex].lineStarts;\r\n let line = piece.start.line;\r\n let startOffset = lineStarts[line] + piece.start.column;\r\n if (line === lineStarts.length - 1) {\r\n // last line, so there is no line feed at the end of this line\r\n return false;\r\n }\r\n let nextLineOffset = lineStarts[line + 1];\r\n if (nextLineOffset > startOffset + 1) {\r\n return false;\r\n }\r\n return this._buffers[piece.bufferIndex].buffer.charCodeAt(startOffset) === 10;\r\n }\r\n endWithCR(val) {\r\n if (typeof val === 'string') {\r\n return val.charCodeAt(val.length - 1) === 13;\r\n }\r\n if (val === SENTINEL || val.piece.lineFeedCnt === 0) {\r\n return false;\r\n }\r\n return this.nodeCharCodeAt(val, val.piece.length - 1) === 13;\r\n }\r\n validateCRLFWithPrevNode(nextNode) {\r\n if (this.shouldCheckCRLF() && this.startWithLF(nextNode)) {\r\n let node = nextNode.prev();\r\n if (this.endWithCR(node)) {\r\n this.fixCRLF(node, nextNode);\r\n }\r\n }\r\n }\r\n validateCRLFWithNextNode(node) {\r\n if (this.shouldCheckCRLF() && this.endWithCR(node)) {\r\n let nextNode = node.next();\r\n if (this.startWithLF(nextNode)) {\r\n this.fixCRLF(node, nextNode);\r\n }\r\n }\r\n }\r\n fixCRLF(prev, next) {\r\n let nodesToDel = [];\r\n // update node\r\n let lineStarts = this._buffers[prev.piece.bufferIndex].lineStarts;\r\n let newEnd;\r\n if (prev.piece.end.column === 0) {\r\n // it means, last line ends with \\r, not \\r\\n\r\n newEnd = { line: prev.piece.end.line - 1, column: lineStarts[prev.piece.end.line] - lineStarts[prev.piece.end.line - 1] - 1 };\r\n }\r\n else {\r\n // \\r\\n\r\n newEnd = { line: prev.piece.end.line, column: prev.piece.end.column - 1 };\r\n }\r\n const prevNewLength = prev.piece.length - 1;\r\n const prevNewLFCnt = prev.piece.lineFeedCnt - 1;\r\n prev.piece = new Piece(prev.piece.bufferIndex, prev.piece.start, newEnd, prevNewLFCnt, prevNewLength);\r\n updateTreeMetadata(this, prev, -1, -1);\r\n if (prev.piece.length === 0) {\r\n nodesToDel.push(prev);\r\n }\r\n // update nextNode\r\n let newStart = { line: next.piece.start.line + 1, column: 0 };\r\n const newLength = next.piece.length - 1;\r\n const newLineFeedCnt = this.getLineFeedCnt(next.piece.bufferIndex, newStart, next.piece.end);\r\n next.piece = new Piece(next.piece.bufferIndex, newStart, next.piece.end, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, next, -1, -1);\r\n if (next.piece.length === 0) {\r\n nodesToDel.push(next);\r\n }\r\n // create new piece which contains \\r\\n\r\n let pieces = this.createNewPieces('\\r\\n');\r\n this.rbInsertRight(prev, pieces[0]);\r\n // delete empty nodes\r\n for (let i = 0; i < nodesToDel.length; i++) {\r\n rbDelete(this, nodesToDel[i]);\r\n }\r\n }\r\n adjustCarriageReturnFromNext(value, node) {\r\n if (this.shouldCheckCRLF() && this.endWithCR(value)) {\r\n let nextNode = node.next();\r\n if (this.startWithLF(nextNode)) {\r\n // move `\\n` forward\r\n value += '\\n';\r\n if (nextNode.piece.length === 1) {\r\n rbDelete(this, nextNode);\r\n }\r\n else {\r\n const piece = nextNode.piece;\r\n const newStart = { line: piece.start.line + 1, column: 0 };\r\n const newLength = piece.length - 1;\r\n const newLineFeedCnt = this.getLineFeedCnt(piece.bufferIndex, newStart, piece.end);\r\n nextNode.piece = new Piece(piece.bufferIndex, newStart, piece.end, newLineFeedCnt, newLength);\r\n updateTreeMetadata(this, nextNode, -1, -1);\r\n }\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n // #endregion\r\n // #endregion\r\n // #region Tree operations\r\n iterate(node, callback) {\r\n if (node === SENTINEL) {\r\n return callback(SENTINEL);\r\n }\r\n let leftRet = this.iterate(node.left, callback);\r\n if (!leftRet) {\r\n return leftRet;\r\n }\r\n return callback(node) && this.iterate(node.right, callback);\r\n }\r\n getNodeContent(node) {\r\n if (node === SENTINEL) {\r\n return '';\r\n }\r\n let buffer = this._buffers[node.piece.bufferIndex];\r\n let currentContent;\r\n let piece = node.piece;\r\n let startOffset = this.offsetInBuffer(piece.bufferIndex, piece.start);\r\n let endOffset = this.offsetInBuffer(piece.bufferIndex, piece.end);\r\n currentContent = buffer.buffer.substring(startOffset, endOffset);\r\n return currentContent;\r\n }\r\n getPieceContent(piece) {\r\n let buffer = this._buffers[piece.bufferIndex];\r\n let startOffset = this.offsetInBuffer(piece.bufferIndex, piece.start);\r\n let endOffset = this.offsetInBuffer(piece.bufferIndex, piece.end);\r\n let currentContent = buffer.buffer.substring(startOffset, endOffset);\r\n return currentContent;\r\n }\r\n /**\r\n * node node\r\n * / \\ / \\\r\n * a b <---- a b\r\n * /\r\n * z\r\n */\r\n rbInsertRight(node, p) {\r\n let z = new TreeNode(p, 1 /* Red */);\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n z.parent = SENTINEL;\r\n z.size_left = 0;\r\n z.lf_left = 0;\r\n let x = this.root;\r\n if (x === SENTINEL) {\r\n this.root = z;\r\n z.color = 0 /* Black */;\r\n }\r\n else if (node.right === SENTINEL) {\r\n node.right = z;\r\n z.parent = node;\r\n }\r\n else {\r\n let nextNode = leftest(node.right);\r\n nextNode.left = z;\r\n z.parent = nextNode;\r\n }\r\n fixInsert(this, z);\r\n return z;\r\n }\r\n /**\r\n * node node\r\n * / \\ / \\\r\n * a b ----> a b\r\n * \\\r\n * z\r\n */\r\n rbInsertLeft(node, p) {\r\n let z = new TreeNode(p, 1 /* Red */);\r\n z.left = SENTINEL;\r\n z.right = SENTINEL;\r\n z.parent = SENTINEL;\r\n z.size_left = 0;\r\n z.lf_left = 0;\r\n if (this.root === SENTINEL) {\r\n this.root = z;\r\n z.color = 0 /* Black */;\r\n }\r\n else if (node.left === SENTINEL) {\r\n node.left = z;\r\n z.parent = node;\r\n }\r\n else {\r\n let prevNode = righttest(node.left); // a\r\n prevNode.right = z;\r\n z.parent = prevNode;\r\n }\r\n fixInsert(this, z);\r\n return z;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../../base/common/event.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { Range } from '../../core/range.js';\r\nimport { ApplyEditsResult } from '../../model.js';\r\nimport { PieceTreeBase } from './pieceTreeBase.js';\r\nimport { countEOL } from '../tokensStore.js';\r\nimport { TextChange } from '../textChange.js';\r\nexport class PieceTreeTextBuffer {\r\n constructor(chunks, BOM, eol, containsRTL, containsUnusualLineTerminators, isBasicASCII, eolNormalized) {\r\n this._onDidChangeContent = new Emitter();\r\n this._BOM = BOM;\r\n this._mightContainNonBasicASCII = !isBasicASCII;\r\n this._mightContainRTL = containsRTL;\r\n this._mightContainUnusualLineTerminators = containsUnusualLineTerminators;\r\n this._pieceTree = new PieceTreeBase(chunks, eol, eolNormalized);\r\n }\r\n dispose() {\r\n this._onDidChangeContent.dispose();\r\n }\r\n mightContainRTL() {\r\n return this._mightContainRTL;\r\n }\r\n mightContainUnusualLineTerminators() {\r\n return this._mightContainUnusualLineTerminators;\r\n }\r\n resetMightContainUnusualLineTerminators() {\r\n this._mightContainUnusualLineTerminators = false;\r\n }\r\n mightContainNonBasicASCII() {\r\n return this._mightContainNonBasicASCII;\r\n }\r\n getBOM() {\r\n return this._BOM;\r\n }\r\n getEOL() {\r\n return this._pieceTree.getEOL();\r\n }\r\n createSnapshot(preserveBOM) {\r\n return this._pieceTree.createSnapshot(preserveBOM ? this._BOM : '');\r\n }\r\n getOffsetAt(lineNumber, column) {\r\n return this._pieceTree.getOffsetAt(lineNumber, column);\r\n }\r\n getPositionAt(offset) {\r\n return this._pieceTree.getPositionAt(offset);\r\n }\r\n getRangeAt(start, length) {\r\n let end = start + length;\r\n const startPosition = this.getPositionAt(start);\r\n const endPosition = this.getPositionAt(end);\r\n return new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column);\r\n }\r\n getValueInRange(range, eol = 0 /* TextDefined */) {\r\n if (range.isEmpty()) {\r\n return '';\r\n }\r\n const lineEnding = this._getEndOfLine(eol);\r\n return this._pieceTree.getValueInRange(range, lineEnding);\r\n }\r\n getValueLengthInRange(range, eol = 0 /* TextDefined */) {\r\n if (range.isEmpty()) {\r\n return 0;\r\n }\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return (range.endColumn - range.startColumn);\r\n }\r\n let startOffset = this.getOffsetAt(range.startLineNumber, range.startColumn);\r\n let endOffset = this.getOffsetAt(range.endLineNumber, range.endColumn);\r\n return endOffset - startOffset;\r\n }\r\n getCharacterCountInRange(range, eol = 0 /* TextDefined */) {\r\n if (this._mightContainNonBasicASCII) {\r\n // we must count by iterating\r\n let result = 0;\r\n const fromLineNumber = range.startLineNumber;\r\n const toLineNumber = range.endLineNumber;\r\n for (let lineNumber = fromLineNumber; lineNumber <= toLineNumber; lineNumber++) {\r\n const lineContent = this.getLineContent(lineNumber);\r\n const fromOffset = (lineNumber === fromLineNumber ? range.startColumn - 1 : 0);\r\n const toOffset = (lineNumber === toLineNumber ? range.endColumn - 1 : lineContent.length);\r\n for (let offset = fromOffset; offset < toOffset; offset++) {\r\n if (strings.isHighSurrogate(lineContent.charCodeAt(offset))) {\r\n result = result + 1;\r\n offset = offset + 1;\r\n }\r\n else {\r\n result = result + 1;\r\n }\r\n }\r\n }\r\n result += this._getEndOfLine(eol).length * (toLineNumber - fromLineNumber);\r\n return result;\r\n }\r\n return this.getValueLengthInRange(range, eol);\r\n }\r\n getLength() {\r\n return this._pieceTree.getLength();\r\n }\r\n getLineCount() {\r\n return this._pieceTree.getLineCount();\r\n }\r\n getLinesContent() {\r\n return this._pieceTree.getLinesContent();\r\n }\r\n getLineContent(lineNumber) {\r\n return this._pieceTree.getLineContent(lineNumber);\r\n }\r\n getLineCharCode(lineNumber, index) {\r\n return this._pieceTree.getLineCharCode(lineNumber, index);\r\n }\r\n getLineLength(lineNumber) {\r\n return this._pieceTree.getLineLength(lineNumber);\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n const result = strings.firstNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 1;\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n const result = strings.lastNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 2;\r\n }\r\n _getEndOfLine(eol) {\r\n switch (eol) {\r\n case 1 /* LF */:\r\n return '\\n';\r\n case 2 /* CRLF */:\r\n return '\\r\\n';\r\n case 0 /* TextDefined */:\r\n return this.getEOL();\r\n default:\r\n throw new Error('Unknown EOL preference');\r\n }\r\n }\r\n setEOL(newEOL) {\r\n this._pieceTree.setEOL(newEOL);\r\n }\r\n applyEdits(rawOperations, recordTrimAutoWhitespace, computeUndoEdits) {\r\n let mightContainRTL = this._mightContainRTL;\r\n let mightContainUnusualLineTerminators = this._mightContainUnusualLineTerminators;\r\n let mightContainNonBasicASCII = this._mightContainNonBasicASCII;\r\n let canReduceOperations = true;\r\n let operations = [];\r\n for (let i = 0; i < rawOperations.length; i++) {\r\n let op = rawOperations[i];\r\n if (canReduceOperations && op._isTracked) {\r\n canReduceOperations = false;\r\n }\r\n let validatedRange = op.range;\r\n if (op.text) {\r\n let textMightContainNonBasicASCII = true;\r\n if (!mightContainNonBasicASCII) {\r\n textMightContainNonBasicASCII = !strings.isBasicASCII(op.text);\r\n mightContainNonBasicASCII = textMightContainNonBasicASCII;\r\n }\r\n if (!mightContainRTL && textMightContainNonBasicASCII) {\r\n // check if the new inserted text contains RTL\r\n mightContainRTL = strings.containsRTL(op.text);\r\n }\r\n if (!mightContainUnusualLineTerminators && textMightContainNonBasicASCII) {\r\n // check if the new inserted text contains unusual line terminators\r\n mightContainUnusualLineTerminators = strings.containsUnusualLineTerminators(op.text);\r\n }\r\n }\r\n let validText = '';\r\n let eolCount = 0;\r\n let firstLineLength = 0;\r\n let lastLineLength = 0;\r\n if (op.text) {\r\n let strEOL;\r\n [eolCount, firstLineLength, lastLineLength, strEOL] = countEOL(op.text);\r\n const bufferEOL = this.getEOL();\r\n const expectedStrEOL = (bufferEOL === '\\r\\n' ? 2 /* CRLF */ : 1 /* LF */);\r\n if (strEOL === 0 /* Unknown */ || strEOL === expectedStrEOL) {\r\n validText = op.text;\r\n }\r\n else {\r\n validText = op.text.replace(/\\r\\n|\\r|\\n/g, bufferEOL);\r\n }\r\n }\r\n operations[i] = {\r\n sortIndex: i,\r\n identifier: op.identifier || null,\r\n range: validatedRange,\r\n rangeOffset: this.getOffsetAt(validatedRange.startLineNumber, validatedRange.startColumn),\r\n rangeLength: this.getValueLengthInRange(validatedRange),\r\n text: validText,\r\n eolCount: eolCount,\r\n firstLineLength: firstLineLength,\r\n lastLineLength: lastLineLength,\r\n forceMoveMarkers: Boolean(op.forceMoveMarkers),\r\n isAutoWhitespaceEdit: op.isAutoWhitespaceEdit || false\r\n };\r\n }\r\n // Sort operations ascending\r\n operations.sort(PieceTreeTextBuffer._sortOpsAscending);\r\n let hasTouchingRanges = false;\r\n for (let i = 0, count = operations.length - 1; i < count; i++) {\r\n let rangeEnd = operations[i].range.getEndPosition();\r\n let nextRangeStart = operations[i + 1].range.getStartPosition();\r\n if (nextRangeStart.isBeforeOrEqual(rangeEnd)) {\r\n if (nextRangeStart.isBefore(rangeEnd)) {\r\n // overlapping ranges\r\n throw new Error('Overlapping ranges are not allowed!');\r\n }\r\n hasTouchingRanges = true;\r\n }\r\n }\r\n if (canReduceOperations) {\r\n operations = this._reduceOperations(operations);\r\n }\r\n // Delta encode operations\r\n let reverseRanges = (computeUndoEdits || recordTrimAutoWhitespace ? PieceTreeTextBuffer._getInverseEditRanges(operations) : []);\r\n let newTrimAutoWhitespaceCandidates = [];\r\n if (recordTrimAutoWhitespace) {\r\n for (let i = 0; i < operations.length; i++) {\r\n let op = operations[i];\r\n let reverseRange = reverseRanges[i];\r\n if (op.isAutoWhitespaceEdit && op.range.isEmpty()) {\r\n // Record already the future line numbers that might be auto whitespace removal candidates on next edit\r\n for (let lineNumber = reverseRange.startLineNumber; lineNumber <= reverseRange.endLineNumber; lineNumber++) {\r\n let currentLineContent = '';\r\n if (lineNumber === reverseRange.startLineNumber) {\r\n currentLineContent = this.getLineContent(op.range.startLineNumber);\r\n if (strings.firstNonWhitespaceIndex(currentLineContent) !== -1) {\r\n continue;\r\n }\r\n }\r\n newTrimAutoWhitespaceCandidates.push({ lineNumber: lineNumber, oldContent: currentLineContent });\r\n }\r\n }\r\n }\r\n }\r\n let reverseOperations = null;\r\n if (computeUndoEdits) {\r\n let reverseRangeDeltaOffset = 0;\r\n reverseOperations = [];\r\n for (let i = 0; i < operations.length; i++) {\r\n const op = operations[i];\r\n const reverseRange = reverseRanges[i];\r\n const bufferText = this.getValueInRange(op.range);\r\n const reverseRangeOffset = op.rangeOffset + reverseRangeDeltaOffset;\r\n reverseRangeDeltaOffset += (op.text.length - bufferText.length);\r\n reverseOperations[i] = {\r\n sortIndex: op.sortIndex,\r\n identifier: op.identifier,\r\n range: reverseRange,\r\n text: bufferText,\r\n textChange: new TextChange(op.rangeOffset, bufferText, reverseRangeOffset, op.text)\r\n };\r\n }\r\n // Can only sort reverse operations when the order is not significant\r\n if (!hasTouchingRanges) {\r\n reverseOperations.sort((a, b) => a.sortIndex - b.sortIndex);\r\n }\r\n }\r\n this._mightContainRTL = mightContainRTL;\r\n this._mightContainUnusualLineTerminators = mightContainUnusualLineTerminators;\r\n this._mightContainNonBasicASCII = mightContainNonBasicASCII;\r\n const contentChanges = this._doApplyEdits(operations);\r\n let trimAutoWhitespaceLineNumbers = null;\r\n if (recordTrimAutoWhitespace && newTrimAutoWhitespaceCandidates.length > 0) {\r\n // sort line numbers auto whitespace removal candidates for next edit descending\r\n newTrimAutoWhitespaceCandidates.sort((a, b) => b.lineNumber - a.lineNumber);\r\n trimAutoWhitespaceLineNumbers = [];\r\n for (let i = 0, len = newTrimAutoWhitespaceCandidates.length; i < len; i++) {\r\n let lineNumber = newTrimAutoWhitespaceCandidates[i].lineNumber;\r\n if (i > 0 && newTrimAutoWhitespaceCandidates[i - 1].lineNumber === lineNumber) {\r\n // Do not have the same line number twice\r\n continue;\r\n }\r\n let prevContent = newTrimAutoWhitespaceCandidates[i].oldContent;\r\n let lineContent = this.getLineContent(lineNumber);\r\n if (lineContent.length === 0 || lineContent === prevContent || strings.firstNonWhitespaceIndex(lineContent) !== -1) {\r\n continue;\r\n }\r\n trimAutoWhitespaceLineNumbers.push(lineNumber);\r\n }\r\n }\r\n this._onDidChangeContent.fire();\r\n return new ApplyEditsResult(reverseOperations, contentChanges, trimAutoWhitespaceLineNumbers);\r\n }\r\n /**\r\n * Transform operations such that they represent the same logic edit,\r\n * but that they also do not cause OOM crashes.\r\n */\r\n _reduceOperations(operations) {\r\n if (operations.length < 1000) {\r\n // We know from empirical testing that a thousand edits work fine regardless of their shape.\r\n return operations;\r\n }\r\n // At one point, due to how events are emitted and how each operation is handled,\r\n // some operations can trigger a high amount of temporary string allocations,\r\n // that will immediately get edited again.\r\n // e.g. a formatter inserting ridiculous ammounts of \\n on a model with a single line\r\n // Therefore, the strategy is to collapse all the operations into a huge single edit operation\r\n return [this._toSingleEditOperation(operations)];\r\n }\r\n _toSingleEditOperation(operations) {\r\n let forceMoveMarkers = false;\r\n const firstEditRange = operations[0].range;\r\n const lastEditRange = operations[operations.length - 1].range;\r\n const entireEditRange = new Range(firstEditRange.startLineNumber, firstEditRange.startColumn, lastEditRange.endLineNumber, lastEditRange.endColumn);\r\n let lastEndLineNumber = firstEditRange.startLineNumber;\r\n let lastEndColumn = firstEditRange.startColumn;\r\n const result = [];\r\n for (let i = 0, len = operations.length; i < len; i++) {\r\n const operation = operations[i];\r\n const range = operation.range;\r\n forceMoveMarkers = forceMoveMarkers || operation.forceMoveMarkers;\r\n // (1) -- Push old text\r\n result.push(this.getValueInRange(new Range(lastEndLineNumber, lastEndColumn, range.startLineNumber, range.startColumn)));\r\n // (2) -- Push new text\r\n if (operation.text.length > 0) {\r\n result.push(operation.text);\r\n }\r\n lastEndLineNumber = range.endLineNumber;\r\n lastEndColumn = range.endColumn;\r\n }\r\n const text = result.join('');\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(text);\r\n return {\r\n sortIndex: 0,\r\n identifier: operations[0].identifier,\r\n range: entireEditRange,\r\n rangeOffset: this.getOffsetAt(entireEditRange.startLineNumber, entireEditRange.startColumn),\r\n rangeLength: this.getValueLengthInRange(entireEditRange, 0 /* TextDefined */),\r\n text: text,\r\n eolCount: eolCount,\r\n firstLineLength: firstLineLength,\r\n lastLineLength: lastLineLength,\r\n forceMoveMarkers: forceMoveMarkers,\r\n isAutoWhitespaceEdit: false\r\n };\r\n }\r\n _doApplyEdits(operations) {\r\n operations.sort(PieceTreeTextBuffer._sortOpsDescending);\r\n let contentChanges = [];\r\n // operations are from bottom to top\r\n for (let i = 0; i < operations.length; i++) {\r\n let op = operations[i];\r\n const startLineNumber = op.range.startLineNumber;\r\n const startColumn = op.range.startColumn;\r\n const endLineNumber = op.range.endLineNumber;\r\n const endColumn = op.range.endColumn;\r\n if (startLineNumber === endLineNumber && startColumn === endColumn && op.text.length === 0) {\r\n // no-op\r\n continue;\r\n }\r\n if (op.text) {\r\n // replacement\r\n this._pieceTree.delete(op.rangeOffset, op.rangeLength);\r\n this._pieceTree.insert(op.rangeOffset, op.text, true);\r\n }\r\n else {\r\n // deletion\r\n this._pieceTree.delete(op.rangeOffset, op.rangeLength);\r\n }\r\n const contentChangeRange = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n contentChanges.push({\r\n range: contentChangeRange,\r\n rangeLength: op.rangeLength,\r\n text: op.text,\r\n rangeOffset: op.rangeOffset,\r\n forceMoveMarkers: op.forceMoveMarkers\r\n });\r\n }\r\n return contentChanges;\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n return this._pieceTree.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n /**\r\n * Assumes `operations` are validated and sorted ascending\r\n */\r\n static _getInverseEditRanges(operations) {\r\n let result = [];\r\n let prevOpEndLineNumber = 0;\r\n let prevOpEndColumn = 0;\r\n let prevOp = null;\r\n for (let i = 0, len = operations.length; i < len; i++) {\r\n let op = operations[i];\r\n let startLineNumber;\r\n let startColumn;\r\n if (prevOp) {\r\n if (prevOp.range.endLineNumber === op.range.startLineNumber) {\r\n startLineNumber = prevOpEndLineNumber;\r\n startColumn = prevOpEndColumn + (op.range.startColumn - prevOp.range.endColumn);\r\n }\r\n else {\r\n startLineNumber = prevOpEndLineNumber + (op.range.startLineNumber - prevOp.range.endLineNumber);\r\n startColumn = op.range.startColumn;\r\n }\r\n }\r\n else {\r\n startLineNumber = op.range.startLineNumber;\r\n startColumn = op.range.startColumn;\r\n }\r\n let resultRange;\r\n if (op.text.length > 0) {\r\n // the operation inserts something\r\n const lineCount = op.eolCount + 1;\r\n if (lineCount === 1) {\r\n // single line insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber, startColumn + op.firstLineLength);\r\n }\r\n else {\r\n // multi line insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber + lineCount - 1, op.lastLineLength + 1);\r\n }\r\n }\r\n else {\r\n // There is nothing to insert\r\n resultRange = new Range(startLineNumber, startColumn, startLineNumber, startColumn);\r\n }\r\n prevOpEndLineNumber = resultRange.endLineNumber;\r\n prevOpEndColumn = resultRange.endColumn;\r\n result.push(resultRange);\r\n prevOp = op;\r\n }\r\n return result;\r\n }\r\n static _sortOpsAscending(a, b) {\r\n let r = Range.compareRangesUsingEnds(a.range, b.range);\r\n if (r === 0) {\r\n return a.sortIndex - b.sortIndex;\r\n }\r\n return r;\r\n }\r\n static _sortOpsDescending(a, b) {\r\n let r = Range.compareRangesUsingEnds(a.range, b.range);\r\n if (r === 0) {\r\n return b.sortIndex - a.sortIndex;\r\n }\r\n return -r;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { StringBuffer, createLineStarts, createLineStartsFast } from './pieceTreeBase.js';\r\nimport { PieceTreeTextBuffer } from './pieceTreeTextBuffer.js';\r\nexport class PieceTreeTextBufferFactory {\r\n constructor(_chunks, _bom, _cr, _lf, _crlf, _containsRTL, _containsUnusualLineTerminators, _isBasicASCII, _normalizeEOL) {\r\n this._chunks = _chunks;\r\n this._bom = _bom;\r\n this._cr = _cr;\r\n this._lf = _lf;\r\n this._crlf = _crlf;\r\n this._containsRTL = _containsRTL;\r\n this._containsUnusualLineTerminators = _containsUnusualLineTerminators;\r\n this._isBasicASCII = _isBasicASCII;\r\n this._normalizeEOL = _normalizeEOL;\r\n }\r\n _getEOL(defaultEOL) {\r\n const totalEOLCount = this._cr + this._lf + this._crlf;\r\n const totalCRCount = this._cr + this._crlf;\r\n if (totalEOLCount === 0) {\r\n // This is an empty file or a file with precisely one line\r\n return (defaultEOL === 1 /* LF */ ? '\\n' : '\\r\\n');\r\n }\r\n if (totalCRCount > totalEOLCount / 2) {\r\n // More than half of the file contains \\r\\n ending lines\r\n return '\\r\\n';\r\n }\r\n // At least one line more ends in \\n\r\n return '\\n';\r\n }\r\n create(defaultEOL) {\r\n const eol = this._getEOL(defaultEOL);\r\n let chunks = this._chunks;\r\n if (this._normalizeEOL &&\r\n ((eol === '\\r\\n' && (this._cr > 0 || this._lf > 0))\r\n || (eol === '\\n' && (this._cr > 0 || this._crlf > 0)))) {\r\n // Normalize pieces\r\n for (let i = 0, len = chunks.length; i < len; i++) {\r\n let str = chunks[i].buffer.replace(/\\r\\n|\\r|\\n/g, eol);\r\n let newLineStart = createLineStartsFast(str);\r\n chunks[i] = new StringBuffer(str, newLineStart);\r\n }\r\n }\r\n return new PieceTreeTextBuffer(chunks, this._bom, eol, this._containsRTL, this._containsUnusualLineTerminators, this._isBasicASCII, this._normalizeEOL);\r\n }\r\n}\r\nexport class PieceTreeTextBufferBuilder {\r\n constructor() {\r\n this.chunks = [];\r\n this.BOM = '';\r\n this._hasPreviousChar = false;\r\n this._previousChar = 0;\r\n this._tmpLineStarts = [];\r\n this.cr = 0;\r\n this.lf = 0;\r\n this.crlf = 0;\r\n this.containsRTL = false;\r\n this.containsUnusualLineTerminators = false;\r\n this.isBasicASCII = true;\r\n }\r\n acceptChunk(chunk) {\r\n if (chunk.length === 0) {\r\n return;\r\n }\r\n if (this.chunks.length === 0) {\r\n if (strings.startsWithUTF8BOM(chunk)) {\r\n this.BOM = strings.UTF8_BOM_CHARACTER;\r\n chunk = chunk.substr(1);\r\n }\r\n }\r\n const lastChar = chunk.charCodeAt(chunk.length - 1);\r\n if (lastChar === 13 /* CarriageReturn */ || (lastChar >= 0xD800 && lastChar <= 0xDBFF)) {\r\n // last character is \\r or a high surrogate => keep it back\r\n this._acceptChunk1(chunk.substr(0, chunk.length - 1), false);\r\n this._hasPreviousChar = true;\r\n this._previousChar = lastChar;\r\n }\r\n else {\r\n this._acceptChunk1(chunk, false);\r\n this._hasPreviousChar = false;\r\n this._previousChar = lastChar;\r\n }\r\n }\r\n _acceptChunk1(chunk, allowEmptyStrings) {\r\n if (!allowEmptyStrings && chunk.length === 0) {\r\n // Nothing to do\r\n return;\r\n }\r\n if (this._hasPreviousChar) {\r\n this._acceptChunk2(String.fromCharCode(this._previousChar) + chunk);\r\n }\r\n else {\r\n this._acceptChunk2(chunk);\r\n }\r\n }\r\n _acceptChunk2(chunk) {\r\n const lineStarts = createLineStarts(this._tmpLineStarts, chunk);\r\n this.chunks.push(new StringBuffer(chunk, lineStarts.lineStarts));\r\n this.cr += lineStarts.cr;\r\n this.lf += lineStarts.lf;\r\n this.crlf += lineStarts.crlf;\r\n if (this.isBasicASCII) {\r\n this.isBasicASCII = lineStarts.isBasicASCII;\r\n }\r\n if (!this.isBasicASCII && !this.containsRTL) {\r\n // No need to check if it is basic ASCII\r\n this.containsRTL = strings.containsRTL(chunk);\r\n }\r\n if (!this.isBasicASCII && !this.containsUnusualLineTerminators) {\r\n // No need to check if it is basic ASCII\r\n this.containsUnusualLineTerminators = strings.containsUnusualLineTerminators(chunk);\r\n }\r\n }\r\n finish(normalizeEOL = true) {\r\n this._finish();\r\n return new PieceTreeTextBufferFactory(this.chunks, this.BOM, this.cr, this.lf, this.crlf, this.containsRTL, this.containsUnusualLineTerminators, this.isBasicASCII, normalizeEOL);\r\n }\r\n _finish() {\r\n if (this.chunks.length === 0) {\r\n this._acceptChunk1('', true);\r\n }\r\n if (this._hasPreviousChar) {\r\n this._hasPreviousChar = false;\r\n // recreate last chunk\r\n let lastChunk = this.chunks[this.chunks.length - 1];\r\n lastChunk.buffer += String.fromCharCode(this._previousChar);\r\n let newLineStarts = createLineStartsFast(lastChunk.buffer);\r\n lastChunk.lineStarts = newLineStarts;\r\n if (this._previousChar === 13 /* CarriageReturn */) {\r\n this.cr++;\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class TreeNode {\r\n constructor(piece, color) {\r\n this.piece = piece;\r\n this.color = color;\r\n this.size_left = 0;\r\n this.lf_left = 0;\r\n this.parent = this;\r\n this.left = this;\r\n this.right = this;\r\n }\r\n next() {\r\n if (this.right !== SENTINEL) {\r\n return leftest(this.right);\r\n }\r\n let node = this;\r\n while (node.parent !== SENTINEL) {\r\n if (node.parent.left === node) {\r\n break;\r\n }\r\n node = node.parent;\r\n }\r\n if (node.parent === SENTINEL) {\r\n return SENTINEL;\r\n }\r\n else {\r\n return node.parent;\r\n }\r\n }\r\n prev() {\r\n if (this.left !== SENTINEL) {\r\n return righttest(this.left);\r\n }\r\n let node = this;\r\n while (node.parent !== SENTINEL) {\r\n if (node.parent.right === node) {\r\n break;\r\n }\r\n node = node.parent;\r\n }\r\n if (node.parent === SENTINEL) {\r\n return SENTINEL;\r\n }\r\n else {\r\n return node.parent;\r\n }\r\n }\r\n detach() {\r\n this.parent = null;\r\n this.left = null;\r\n this.right = null;\r\n }\r\n}\r\nexport const SENTINEL = new TreeNode(null, 0 /* Black */);\r\nSENTINEL.parent = SENTINEL;\r\nSENTINEL.left = SENTINEL;\r\nSENTINEL.right = SENTINEL;\r\nSENTINEL.color = 0 /* Black */;\r\nexport function leftest(node) {\r\n while (node.left !== SENTINEL) {\r\n node = node.left;\r\n }\r\n return node;\r\n}\r\nexport function righttest(node) {\r\n while (node.right !== SENTINEL) {\r\n node = node.right;\r\n }\r\n return node;\r\n}\r\nexport function calculateSize(node) {\r\n if (node === SENTINEL) {\r\n return 0;\r\n }\r\n return node.size_left + node.piece.length + calculateSize(node.right);\r\n}\r\nexport function calculateLF(node) {\r\n if (node === SENTINEL) {\r\n return 0;\r\n }\r\n return node.lf_left + node.piece.lineFeedCnt + calculateLF(node.right);\r\n}\r\nexport function resetSentinel() {\r\n SENTINEL.parent = SENTINEL;\r\n}\r\nexport function leftRotate(tree, x) {\r\n let y = x.right;\r\n // fix size_left\r\n y.size_left += x.size_left + (x.piece ? x.piece.length : 0);\r\n y.lf_left += x.lf_left + (x.piece ? x.piece.lineFeedCnt : 0);\r\n x.right = y.left;\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = x;\r\n }\r\n y.parent = x.parent;\r\n if (x.parent === SENTINEL) {\r\n tree.root = y;\r\n }\r\n else if (x.parent.left === x) {\r\n x.parent.left = y;\r\n }\r\n else {\r\n x.parent.right = y;\r\n }\r\n y.left = x;\r\n x.parent = y;\r\n}\r\nexport function rightRotate(tree, y) {\r\n let x = y.left;\r\n y.left = x.right;\r\n if (x.right !== SENTINEL) {\r\n x.right.parent = y;\r\n }\r\n x.parent = y.parent;\r\n // fix size_left\r\n y.size_left -= x.size_left + (x.piece ? x.piece.length : 0);\r\n y.lf_left -= x.lf_left + (x.piece ? x.piece.lineFeedCnt : 0);\r\n if (y.parent === SENTINEL) {\r\n tree.root = x;\r\n }\r\n else if (y === y.parent.right) {\r\n y.parent.right = x;\r\n }\r\n else {\r\n y.parent.left = x;\r\n }\r\n x.right = y;\r\n y.parent = x;\r\n}\r\nexport function rbDelete(tree, z) {\r\n let x;\r\n let y;\r\n if (z.left === SENTINEL) {\r\n y = z;\r\n x = y.right;\r\n }\r\n else if (z.right === SENTINEL) {\r\n y = z;\r\n x = y.left;\r\n }\r\n else {\r\n y = leftest(z.right);\r\n x = y.right;\r\n }\r\n if (y === tree.root) {\r\n tree.root = x;\r\n // if x is null, we are removing the only node\r\n x.color = 0 /* Black */;\r\n z.detach();\r\n resetSentinel();\r\n tree.root.parent = SENTINEL;\r\n return;\r\n }\r\n let yWasRed = (y.color === 1 /* Red */);\r\n if (y === y.parent.left) {\r\n y.parent.left = x;\r\n }\r\n else {\r\n y.parent.right = x;\r\n }\r\n if (y === z) {\r\n x.parent = y.parent;\r\n recomputeTreeMetadata(tree, x);\r\n }\r\n else {\r\n if (y.parent === z) {\r\n x.parent = y;\r\n }\r\n else {\r\n x.parent = y.parent;\r\n }\r\n // as we make changes to x's hierarchy, update size_left of subtree first\r\n recomputeTreeMetadata(tree, x);\r\n y.left = z.left;\r\n y.right = z.right;\r\n y.parent = z.parent;\r\n y.color = z.color;\r\n if (z === tree.root) {\r\n tree.root = y;\r\n }\r\n else {\r\n if (z === z.parent.left) {\r\n z.parent.left = y;\r\n }\r\n else {\r\n z.parent.right = y;\r\n }\r\n }\r\n if (y.left !== SENTINEL) {\r\n y.left.parent = y;\r\n }\r\n if (y.right !== SENTINEL) {\r\n y.right.parent = y;\r\n }\r\n // update metadata\r\n // we replace z with y, so in this sub tree, the length change is z.item.length\r\n y.size_left = z.size_left;\r\n y.lf_left = z.lf_left;\r\n recomputeTreeMetadata(tree, y);\r\n }\r\n z.detach();\r\n if (x.parent.left === x) {\r\n let newSizeLeft = calculateSize(x);\r\n let newLFLeft = calculateLF(x);\r\n if (newSizeLeft !== x.parent.size_left || newLFLeft !== x.parent.lf_left) {\r\n let delta = newSizeLeft - x.parent.size_left;\r\n let lf_delta = newLFLeft - x.parent.lf_left;\r\n x.parent.size_left = newSizeLeft;\r\n x.parent.lf_left = newLFLeft;\r\n updateTreeMetadata(tree, x.parent, delta, lf_delta);\r\n }\r\n }\r\n recomputeTreeMetadata(tree, x.parent);\r\n if (yWasRed) {\r\n resetSentinel();\r\n return;\r\n }\r\n // RB-DELETE-FIXUP\r\n let w;\r\n while (x !== tree.root && x.color === 0 /* Black */) {\r\n if (x === x.parent.left) {\r\n w = x.parent.right;\r\n if (w.color === 1 /* Red */) {\r\n w.color = 0 /* Black */;\r\n x.parent.color = 1 /* Red */;\r\n leftRotate(tree, x.parent);\r\n w = x.parent.right;\r\n }\r\n if (w.left.color === 0 /* Black */ && w.right.color === 0 /* Black */) {\r\n w.color = 1 /* Red */;\r\n x = x.parent;\r\n }\r\n else {\r\n if (w.right.color === 0 /* Black */) {\r\n w.left.color = 0 /* Black */;\r\n w.color = 1 /* Red */;\r\n rightRotate(tree, w);\r\n w = x.parent.right;\r\n }\r\n w.color = x.parent.color;\r\n x.parent.color = 0 /* Black */;\r\n w.right.color = 0 /* Black */;\r\n leftRotate(tree, x.parent);\r\n x = tree.root;\r\n }\r\n }\r\n else {\r\n w = x.parent.left;\r\n if (w.color === 1 /* Red */) {\r\n w.color = 0 /* Black */;\r\n x.parent.color = 1 /* Red */;\r\n rightRotate(tree, x.parent);\r\n w = x.parent.left;\r\n }\r\n if (w.left.color === 0 /* Black */ && w.right.color === 0 /* Black */) {\r\n w.color = 1 /* Red */;\r\n x = x.parent;\r\n }\r\n else {\r\n if (w.left.color === 0 /* Black */) {\r\n w.right.color = 0 /* Black */;\r\n w.color = 1 /* Red */;\r\n leftRotate(tree, w);\r\n w = x.parent.left;\r\n }\r\n w.color = x.parent.color;\r\n x.parent.color = 0 /* Black */;\r\n w.left.color = 0 /* Black */;\r\n rightRotate(tree, x.parent);\r\n x = tree.root;\r\n }\r\n }\r\n }\r\n x.color = 0 /* Black */;\r\n resetSentinel();\r\n}\r\nexport function fixInsert(tree, x) {\r\n recomputeTreeMetadata(tree, x);\r\n while (x !== tree.root && x.parent.color === 1 /* Red */) {\r\n if (x.parent === x.parent.parent.left) {\r\n const y = x.parent.parent.right;\r\n if (y.color === 1 /* Red */) {\r\n x.parent.color = 0 /* Black */;\r\n y.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.right) {\r\n x = x.parent;\r\n leftRotate(tree, x);\r\n }\r\n x.parent.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n rightRotate(tree, x.parent.parent);\r\n }\r\n }\r\n else {\r\n const y = x.parent.parent.left;\r\n if (y.color === 1 /* Red */) {\r\n x.parent.color = 0 /* Black */;\r\n y.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n x = x.parent.parent;\r\n }\r\n else {\r\n if (x === x.parent.left) {\r\n x = x.parent;\r\n rightRotate(tree, x);\r\n }\r\n x.parent.color = 0 /* Black */;\r\n x.parent.parent.color = 1 /* Red */;\r\n leftRotate(tree, x.parent.parent);\r\n }\r\n }\r\n }\r\n tree.root.color = 0 /* Black */;\r\n}\r\nexport function updateTreeMetadata(tree, x, delta, lineFeedCntDelta) {\r\n // node length change or line feed count change\r\n while (x !== tree.root && x !== SENTINEL) {\r\n if (x.parent.left === x) {\r\n x.parent.size_left += delta;\r\n x.parent.lf_left += lineFeedCntDelta;\r\n }\r\n x = x.parent;\r\n }\r\n}\r\nexport function recomputeTreeMetadata(tree, x) {\r\n let delta = 0;\r\n let lf_delta = 0;\r\n if (x === tree.root) {\r\n return;\r\n }\r\n if (delta === 0) {\r\n // go upwards till the node whose left subtree is changed.\r\n while (x !== tree.root && x === x.parent.right) {\r\n x = x.parent;\r\n }\r\n if (x === tree.root) {\r\n // well, it means we add a node to the end (inorder)\r\n return;\r\n }\r\n // x is the node whose right subtree is changed.\r\n x = x.parent;\r\n delta = calculateSize(x.left) - x.size_left;\r\n lf_delta = calculateLF(x.left) - x.lf_left;\r\n x.size_left += delta;\r\n x.lf_left += lf_delta;\r\n }\r\n // go upwards till root. O(logN)\r\n while (x !== tree.root && (delta !== 0 || lf_delta !== 0)) {\r\n if (x.parent.left === x) {\r\n x.parent.size_left += delta;\r\n x.parent.lf_left += lf_delta;\r\n }\r\n x = x.parent;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as buffer from '../../../base/common/buffer.js';\r\nimport { decodeUTF16LE } from '../core/stringBuilder.js';\r\nexport class TextChange {\r\n constructor(oldPosition, oldText, newPosition, newText) {\r\n this.oldPosition = oldPosition;\r\n this.oldText = oldText;\r\n this.newPosition = newPosition;\r\n this.newText = newText;\r\n }\r\n get oldLength() {\r\n return this.oldText.length;\r\n }\r\n get oldEnd() {\r\n return this.oldPosition + this.oldText.length;\r\n }\r\n get newLength() {\r\n return this.newText.length;\r\n }\r\n get newEnd() {\r\n return this.newPosition + this.newText.length;\r\n }\r\n toString() {\r\n if (this.oldText.length === 0) {\r\n return `(insert@${this.oldPosition} \"${this.newText}\")`;\r\n }\r\n if (this.newText.length === 0) {\r\n return `(delete@${this.oldPosition} \"${this.oldText}\")`;\r\n }\r\n return `(replace@${this.oldPosition} \"${this.oldText}\" with \"${this.newText}\")`;\r\n }\r\n static _writeStringSize(str) {\r\n return (4 + 2 * str.length);\r\n }\r\n static _writeString(b, str, offset) {\r\n const len = str.length;\r\n buffer.writeUInt32BE(b, len, offset);\r\n offset += 4;\r\n for (let i = 0; i < len; i++) {\r\n buffer.writeUInt16LE(b, str.charCodeAt(i), offset);\r\n offset += 2;\r\n }\r\n return offset;\r\n }\r\n static _readString(b, offset) {\r\n const len = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n return decodeUTF16LE(b, offset, len);\r\n }\r\n writeSize() {\r\n return (+4 // oldPosition\r\n + 4 // newPosition\r\n + TextChange._writeStringSize(this.oldText)\r\n + TextChange._writeStringSize(this.newText));\r\n }\r\n write(b, offset) {\r\n buffer.writeUInt32BE(b, this.oldPosition, offset);\r\n offset += 4;\r\n buffer.writeUInt32BE(b, this.newPosition, offset);\r\n offset += 4;\r\n offset = TextChange._writeString(b, this.oldText, offset);\r\n offset = TextChange._writeString(b, this.newText, offset);\r\n return offset;\r\n }\r\n static read(b, offset, dest) {\r\n const oldPosition = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const newPosition = buffer.readUInt32BE(b, offset);\r\n offset += 4;\r\n const oldText = TextChange._readString(b, offset);\r\n offset += TextChange._writeStringSize(oldText);\r\n const newText = TextChange._readString(b, offset);\r\n offset += TextChange._writeStringSize(newText);\r\n dest.push(new TextChange(oldPosition, oldText, newPosition, newText));\r\n return offset;\r\n }\r\n}\r\nexport function compressConsecutiveTextChanges(prevEdits, currEdits) {\r\n if (prevEdits === null || prevEdits.length === 0) {\r\n return currEdits;\r\n }\r\n const compressor = new TextChangeCompressor(prevEdits, currEdits);\r\n return compressor.compress();\r\n}\r\nclass TextChangeCompressor {\r\n constructor(prevEdits, currEdits) {\r\n this._prevEdits = prevEdits;\r\n this._currEdits = currEdits;\r\n this._result = [];\r\n this._resultLen = 0;\r\n this._prevLen = this._prevEdits.length;\r\n this._prevDeltaOffset = 0;\r\n this._currLen = this._currEdits.length;\r\n this._currDeltaOffset = 0;\r\n }\r\n compress() {\r\n let prevIndex = 0;\r\n let currIndex = 0;\r\n let prevEdit = this._getPrev(prevIndex);\r\n let currEdit = this._getCurr(currIndex);\r\n while (prevIndex < this._prevLen || currIndex < this._currLen) {\r\n if (prevEdit === null) {\r\n this._acceptCurr(currEdit);\r\n currEdit = this._getCurr(++currIndex);\r\n continue;\r\n }\r\n if (currEdit === null) {\r\n this._acceptPrev(prevEdit);\r\n prevEdit = this._getPrev(++prevIndex);\r\n continue;\r\n }\r\n if (currEdit.oldEnd <= prevEdit.newPosition) {\r\n this._acceptCurr(currEdit);\r\n currEdit = this._getCurr(++currIndex);\r\n continue;\r\n }\r\n if (prevEdit.newEnd <= currEdit.oldPosition) {\r\n this._acceptPrev(prevEdit);\r\n prevEdit = this._getPrev(++prevIndex);\r\n continue;\r\n }\r\n if (currEdit.oldPosition < prevEdit.newPosition) {\r\n const [e1, e2] = TextChangeCompressor._splitCurr(currEdit, prevEdit.newPosition - currEdit.oldPosition);\r\n this._acceptCurr(e1);\r\n currEdit = e2;\r\n continue;\r\n }\r\n if (prevEdit.newPosition < currEdit.oldPosition) {\r\n const [e1, e2] = TextChangeCompressor._splitPrev(prevEdit, currEdit.oldPosition - prevEdit.newPosition);\r\n this._acceptPrev(e1);\r\n prevEdit = e2;\r\n continue;\r\n }\r\n // At this point, currEdit.oldPosition === prevEdit.newPosition\r\n let mergePrev;\r\n let mergeCurr;\r\n if (currEdit.oldEnd === prevEdit.newEnd) {\r\n mergePrev = prevEdit;\r\n mergeCurr = currEdit;\r\n prevEdit = this._getPrev(++prevIndex);\r\n currEdit = this._getCurr(++currIndex);\r\n }\r\n else if (currEdit.oldEnd < prevEdit.newEnd) {\r\n const [e1, e2] = TextChangeCompressor._splitPrev(prevEdit, currEdit.oldLength);\r\n mergePrev = e1;\r\n mergeCurr = currEdit;\r\n prevEdit = e2;\r\n currEdit = this._getCurr(++currIndex);\r\n }\r\n else {\r\n const [e1, e2] = TextChangeCompressor._splitCurr(currEdit, prevEdit.newLength);\r\n mergePrev = prevEdit;\r\n mergeCurr = e1;\r\n prevEdit = this._getPrev(++prevIndex);\r\n currEdit = e2;\r\n }\r\n this._result[this._resultLen++] = new TextChange(mergePrev.oldPosition, mergePrev.oldText, mergeCurr.newPosition, mergeCurr.newText);\r\n this._prevDeltaOffset += mergePrev.newLength - mergePrev.oldLength;\r\n this._currDeltaOffset += mergeCurr.newLength - mergeCurr.oldLength;\r\n }\r\n const merged = TextChangeCompressor._merge(this._result);\r\n const cleaned = TextChangeCompressor._removeNoOps(merged);\r\n return cleaned;\r\n }\r\n _acceptCurr(currEdit) {\r\n this._result[this._resultLen++] = TextChangeCompressor._rebaseCurr(this._prevDeltaOffset, currEdit);\r\n this._currDeltaOffset += currEdit.newLength - currEdit.oldLength;\r\n }\r\n _getCurr(currIndex) {\r\n return (currIndex < this._currLen ? this._currEdits[currIndex] : null);\r\n }\r\n _acceptPrev(prevEdit) {\r\n this._result[this._resultLen++] = TextChangeCompressor._rebasePrev(this._currDeltaOffset, prevEdit);\r\n this._prevDeltaOffset += prevEdit.newLength - prevEdit.oldLength;\r\n }\r\n _getPrev(prevIndex) {\r\n return (prevIndex < this._prevLen ? this._prevEdits[prevIndex] : null);\r\n }\r\n static _rebaseCurr(prevDeltaOffset, currEdit) {\r\n return new TextChange(currEdit.oldPosition - prevDeltaOffset, currEdit.oldText, currEdit.newPosition, currEdit.newText);\r\n }\r\n static _rebasePrev(currDeltaOffset, prevEdit) {\r\n return new TextChange(prevEdit.oldPosition, prevEdit.oldText, prevEdit.newPosition + currDeltaOffset, prevEdit.newText);\r\n }\r\n static _splitPrev(edit, offset) {\r\n const preText = edit.newText.substr(0, offset);\r\n const postText = edit.newText.substr(offset);\r\n return [\r\n new TextChange(edit.oldPosition, edit.oldText, edit.newPosition, preText),\r\n new TextChange(edit.oldEnd, '', edit.newPosition + offset, postText)\r\n ];\r\n }\r\n static _splitCurr(edit, offset) {\r\n const preText = edit.oldText.substr(0, offset);\r\n const postText = edit.oldText.substr(offset);\r\n return [\r\n new TextChange(edit.oldPosition, preText, edit.newPosition, edit.newText),\r\n new TextChange(edit.oldPosition + offset, postText, edit.newEnd, '')\r\n ];\r\n }\r\n static _merge(edits) {\r\n if (edits.length === 0) {\r\n return edits;\r\n }\r\n let result = [], resultLen = 0;\r\n let prev = edits[0];\r\n for (let i = 1; i < edits.length; i++) {\r\n const curr = edits[i];\r\n if (prev.oldEnd === curr.oldPosition) {\r\n // Merge into `prev`\r\n prev = new TextChange(prev.oldPosition, prev.oldText + curr.oldText, prev.newPosition, prev.newText + curr.newText);\r\n }\r\n else {\r\n result[resultLen++] = prev;\r\n prev = curr;\r\n }\r\n }\r\n result[resultLen++] = prev;\r\n return result;\r\n }\r\n static _removeNoOps(edits) {\r\n if (edits.length === 0) {\r\n return edits;\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0; i < edits.length; i++) {\r\n const edit = edits[i];\r\n if (edit.oldText === edit.newText) {\r\n continue;\r\n }\r\n result[resultLen++] = edit;\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { EDITOR_MODEL_DEFAULTS } from '../config/editorOptions.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport * as model from '../model.js';\r\nimport { EditStack } from './editStack.js';\r\nimport { guessIndentation } from './indentationGuesser.js';\r\nimport { IntervalNode, IntervalTree, getNodeIsInOverviewRuler, recomputeMaxEnd } from './intervalTree.js';\r\nimport { PieceTreeTextBufferBuilder } from './pieceTreeTextBuffer/pieceTreeTextBufferBuilder.js';\r\nimport { InternalModelContentChangeEvent, ModelRawContentChangedEvent, ModelRawEOLChanged, ModelRawFlush, ModelRawLineChanged, ModelRawLinesDeleted, ModelRawLinesInserted } from './textModelEvents.js';\r\nimport { SearchParams, TextModelSearch } from './textModelSearch.js';\r\nimport { TextModelTokenization } from './textModelTokens.js';\r\nimport { getWordAtText } from './wordHelper.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER } from '../modes/nullMode.js';\r\nimport { ignoreBracketsInToken } from '../modes/supports.js';\r\nimport { BracketsUtils } from '../modes/supports/richEditBrackets.js';\r\nimport { TokensStore, countEOL, TokensStore2 } from './tokensStore.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nfunction createTextBufferBuilder() {\r\n return new PieceTreeTextBufferBuilder();\r\n}\r\nexport function createTextBufferFactory(text) {\r\n const builder = createTextBufferBuilder();\r\n builder.acceptChunk(text);\r\n return builder.finish();\r\n}\r\nexport function createTextBuffer(value, defaultEOL) {\r\n const factory = (typeof value === 'string' ? createTextBufferFactory(value) : value);\r\n return factory.create(defaultEOL);\r\n}\r\nlet MODEL_ID = 0;\r\nconst LIMIT_FIND_COUNT = 999;\r\nexport const LONG_LINE_BOUNDARY = 10000;\r\nclass TextModelSnapshot {\r\n constructor(source) {\r\n this._source = source;\r\n this._eos = false;\r\n }\r\n read() {\r\n if (this._eos) {\r\n return null;\r\n }\r\n let result = [], resultCnt = 0, resultLength = 0;\r\n do {\r\n let tmp = this._source.read();\r\n if (tmp === null) {\r\n // end-of-stream\r\n this._eos = true;\r\n if (resultCnt === 0) {\r\n return null;\r\n }\r\n else {\r\n return result.join('');\r\n }\r\n }\r\n if (tmp.length > 0) {\r\n result[resultCnt++] = tmp;\r\n resultLength += tmp.length;\r\n }\r\n if (resultLength >= 64 * 1024) {\r\n return result.join('');\r\n }\r\n } while (true);\r\n }\r\n}\r\nconst invalidFunc = () => { throw new Error(`Invalid change accessor`); };\r\nclass BracketSearchCanceled {\r\n constructor() {\r\n this._searchCanceledBrand = undefined;\r\n }\r\n}\r\nBracketSearchCanceled.INSTANCE = new BracketSearchCanceled();\r\nfunction stripBracketSearchCanceled(result) {\r\n if (result instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n return result;\r\n}\r\nexport class TextModel extends Disposable {\r\n //#endregion\r\n constructor(source, creationOptions, languageIdentifier, associatedResource = null, undoRedoService) {\r\n super();\r\n //#region Events\r\n this._onWillDispose = this._register(new Emitter());\r\n this.onWillDispose = this._onWillDispose.event;\r\n this._onDidChangeDecorations = this._register(new DidChangeDecorationsEmitter());\r\n this.onDidChangeDecorations = this._onDidChangeDecorations.event;\r\n this._onDidChangeLanguage = this._register(new Emitter());\r\n this.onDidChangeLanguage = this._onDidChangeLanguage.event;\r\n this._onDidChangeLanguageConfiguration = this._register(new Emitter());\r\n this.onDidChangeLanguageConfiguration = this._onDidChangeLanguageConfiguration.event;\r\n this._onDidChangeTokens = this._register(new Emitter());\r\n this.onDidChangeTokens = this._onDidChangeTokens.event;\r\n this._onDidChangeOptions = this._register(new Emitter());\r\n this.onDidChangeOptions = this._onDidChangeOptions.event;\r\n this._onDidChangeAttached = this._register(new Emitter());\r\n this.onDidChangeAttached = this._onDidChangeAttached.event;\r\n this._eventEmitter = this._register(new DidChangeContentEmitter());\r\n // Generate a new unique model id\r\n MODEL_ID++;\r\n this.id = '$model' + MODEL_ID;\r\n this.isForSimpleWidget = creationOptions.isForSimpleWidget;\r\n if (typeof associatedResource === 'undefined' || associatedResource === null) {\r\n this._associatedResource = URI.parse('inmemory://model/' + MODEL_ID);\r\n }\r\n else {\r\n this._associatedResource = associatedResource;\r\n }\r\n this._undoRedoService = undoRedoService;\r\n this._attachedEditorCount = 0;\r\n this._buffer = createTextBuffer(source, creationOptions.defaultEOL);\r\n this._options = TextModel.resolveOptions(this._buffer, creationOptions);\r\n const bufferLineCount = this._buffer.getLineCount();\r\n const bufferTextLength = this._buffer.getValueLengthInRange(new Range(1, 1, bufferLineCount, this._buffer.getLineLength(bufferLineCount) + 1), 0 /* TextDefined */);\r\n // !!! Make a decision in the ctor and permanently respect this decision !!!\r\n // If a model is too large at construction time, it will never get tokenized,\r\n // under no circumstances.\r\n if (creationOptions.largeFileOptimizations) {\r\n this._isTooLargeForTokenization = ((bufferTextLength > TextModel.LARGE_FILE_SIZE_THRESHOLD)\r\n || (bufferLineCount > TextModel.LARGE_FILE_LINE_COUNT_THRESHOLD));\r\n }\r\n else {\r\n this._isTooLargeForTokenization = false;\r\n }\r\n this._isTooLargeForSyncing = (bufferTextLength > TextModel.MODEL_SYNC_LIMIT);\r\n this._versionId = 1;\r\n this._alternativeVersionId = 1;\r\n this._initialUndoRedoSnapshot = null;\r\n this._isDisposed = false;\r\n this._isDisposing = false;\r\n this._languageIdentifier = languageIdentifier || NULL_LANGUAGE_IDENTIFIER;\r\n this._languageRegistryListener = LanguageConfigurationRegistry.onDidChange((e) => {\r\n if (e.languageIdentifier.id === this._languageIdentifier.id) {\r\n this._onDidChangeLanguageConfiguration.fire({});\r\n }\r\n });\r\n this._instanceId = strings.singleLetterHash(MODEL_ID);\r\n this._lastDecorationId = 0;\r\n this._decorations = Object.create(null);\r\n this._decorationsTree = new DecorationsTrees();\r\n this._commandManager = new EditStack(this, undoRedoService);\r\n this._isUndoing = false;\r\n this._isRedoing = false;\r\n this._trimAutoWhitespaceLines = null;\r\n this._tokens = new TokensStore();\r\n this._tokens2 = new TokensStore2();\r\n this._tokenization = new TextModelTokenization(this);\r\n }\r\n static resolveOptions(textBuffer, options) {\r\n if (options.detectIndentation) {\r\n const guessedIndentation = guessIndentation(textBuffer, options.tabSize, options.insertSpaces);\r\n return new model.TextModelResolvedOptions({\r\n tabSize: guessedIndentation.tabSize,\r\n indentSize: guessedIndentation.tabSize,\r\n insertSpaces: guessedIndentation.insertSpaces,\r\n trimAutoWhitespace: options.trimAutoWhitespace,\r\n defaultEOL: options.defaultEOL\r\n });\r\n }\r\n return new model.TextModelResolvedOptions({\r\n tabSize: options.tabSize,\r\n indentSize: options.indentSize,\r\n insertSpaces: options.insertSpaces,\r\n trimAutoWhitespace: options.trimAutoWhitespace,\r\n defaultEOL: options.defaultEOL\r\n });\r\n }\r\n onDidChangeRawContentFast(listener) {\r\n return this._eventEmitter.fastEvent((e) => listener(e.rawContentChangedEvent));\r\n }\r\n onDidChangeContentFast(listener) {\r\n return this._eventEmitter.fastEvent((e) => listener(e.contentChangedEvent));\r\n }\r\n onDidChangeContent(listener) {\r\n return this._eventEmitter.slowEvent((e) => listener(e.contentChangedEvent));\r\n }\r\n dispose() {\r\n this._isDisposing = true;\r\n this._onWillDispose.fire();\r\n this._languageRegistryListener.dispose();\r\n this._tokenization.dispose();\r\n this._isDisposed = true;\r\n super.dispose();\r\n this._isDisposing = false;\r\n }\r\n _assertNotDisposed() {\r\n if (this._isDisposed) {\r\n throw new Error('Model is disposed!');\r\n }\r\n }\r\n _emitContentChangedEvent(rawChange, change) {\r\n if (this._isDisposing) {\r\n // Do not confuse listeners by emitting any event after disposing\r\n return;\r\n }\r\n this._eventEmitter.fire(new InternalModelContentChangeEvent(rawChange, change));\r\n }\r\n setValue(value) {\r\n this._assertNotDisposed();\r\n if (value === null) {\r\n // There's nothing to do\r\n return;\r\n }\r\n const textBuffer = createTextBuffer(value, this._options.defaultEOL);\r\n this.setValueFromTextBuffer(textBuffer);\r\n }\r\n _createContentChanged2(range, rangeOffset, rangeLength, text, isUndoing, isRedoing, isFlush) {\r\n return {\r\n changes: [{\r\n range: range,\r\n rangeOffset: rangeOffset,\r\n rangeLength: rangeLength,\r\n text: text,\r\n }],\r\n eol: this._buffer.getEOL(),\r\n versionId: this.getVersionId(),\r\n isUndoing: isUndoing,\r\n isRedoing: isRedoing,\r\n isFlush: isFlush\r\n };\r\n }\r\n setValueFromTextBuffer(textBuffer) {\r\n this._assertNotDisposed();\r\n if (textBuffer === null) {\r\n // There's nothing to do\r\n return;\r\n }\r\n const oldFullModelRange = this.getFullModelRange();\r\n const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange);\r\n const endLineNumber = this.getLineCount();\r\n const endColumn = this.getLineMaxColumn(endLineNumber);\r\n this._buffer = textBuffer;\r\n this._increaseVersionId();\r\n // Flush all tokens\r\n this._tokens.flush();\r\n this._tokens2.flush();\r\n // Destroy all my decorations\r\n this._decorations = Object.create(null);\r\n this._decorationsTree = new DecorationsTrees();\r\n // Destroy my edit history and settings\r\n this._commandManager.clear();\r\n this._trimAutoWhitespaceLines = null;\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent([\r\n new ModelRawFlush()\r\n ], this._versionId, false, false), this._createContentChanged2(new Range(1, 1, endLineNumber, endColumn), 0, oldModelValueLength, this.getValue(), false, false, true));\r\n }\r\n setEOL(eol) {\r\n this._assertNotDisposed();\r\n const newEOL = (eol === 1 /* CRLF */ ? '\\r\\n' : '\\n');\r\n if (this._buffer.getEOL() === newEOL) {\r\n // Nothing to do\r\n return;\r\n }\r\n const oldFullModelRange = this.getFullModelRange();\r\n const oldModelValueLength = this.getValueLengthInRange(oldFullModelRange);\r\n const endLineNumber = this.getLineCount();\r\n const endColumn = this.getLineMaxColumn(endLineNumber);\r\n this._onBeforeEOLChange();\r\n this._buffer.setEOL(newEOL);\r\n this._increaseVersionId();\r\n this._onAfterEOLChange();\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent([\r\n new ModelRawEOLChanged()\r\n ], this._versionId, false, false), this._createContentChanged2(new Range(1, 1, endLineNumber, endColumn), 0, oldModelValueLength, this.getValue(), false, false, false));\r\n }\r\n _onBeforeEOLChange() {\r\n // Ensure all decorations get their `range` set.\r\n const versionId = this.getVersionId();\r\n const allDecorations = this._decorationsTree.search(0, false, false, versionId);\r\n this._ensureNodesHaveRanges(allDecorations);\r\n }\r\n _onAfterEOLChange() {\r\n // Transform back `range` to offsets\r\n const versionId = this.getVersionId();\r\n const allDecorations = this._decorationsTree.collectNodesPostOrder();\r\n for (let i = 0, len = allDecorations.length; i < len; i++) {\r\n const node = allDecorations[i];\r\n const delta = node.cachedAbsoluteStart - node.start;\r\n const startOffset = this._buffer.getOffsetAt(node.range.startLineNumber, node.range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(node.range.endLineNumber, node.range.endColumn);\r\n node.cachedAbsoluteStart = startOffset;\r\n node.cachedAbsoluteEnd = endOffset;\r\n node.cachedVersionId = versionId;\r\n node.start = startOffset - delta;\r\n node.end = endOffset - delta;\r\n recomputeMaxEnd(node);\r\n }\r\n }\r\n onBeforeAttached() {\r\n this._attachedEditorCount++;\r\n if (this._attachedEditorCount === 1) {\r\n this._onDidChangeAttached.fire(undefined);\r\n }\r\n }\r\n onBeforeDetached() {\r\n this._attachedEditorCount--;\r\n if (this._attachedEditorCount === 0) {\r\n this._onDidChangeAttached.fire(undefined);\r\n }\r\n }\r\n isAttachedToEditor() {\r\n return this._attachedEditorCount > 0;\r\n }\r\n getAttachedEditorCount() {\r\n return this._attachedEditorCount;\r\n }\r\n isTooLargeForSyncing() {\r\n return this._isTooLargeForSyncing;\r\n }\r\n isTooLargeForTokenization() {\r\n return this._isTooLargeForTokenization;\r\n }\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n isDominatedByLongLines() {\r\n this._assertNotDisposed();\r\n if (this.isTooLargeForTokenization()) {\r\n // Cannot word wrap huge files anyways, so it doesn't really matter\r\n return false;\r\n }\r\n let smallLineCharCount = 0;\r\n let longLineCharCount = 0;\r\n const lineCount = this._buffer.getLineCount();\r\n for (let lineNumber = 1; lineNumber <= lineCount; lineNumber++) {\r\n const lineLength = this._buffer.getLineLength(lineNumber);\r\n if (lineLength >= LONG_LINE_BOUNDARY) {\r\n longLineCharCount += lineLength;\r\n }\r\n else {\r\n smallLineCharCount += lineLength;\r\n }\r\n }\r\n return (longLineCharCount > smallLineCharCount);\r\n }\r\n get uri() {\r\n return this._associatedResource;\r\n }\r\n //#region Options\r\n getOptions() {\r\n this._assertNotDisposed();\r\n return this._options;\r\n }\r\n getFormattingOptions() {\r\n return {\r\n tabSize: this._options.indentSize,\r\n insertSpaces: this._options.insertSpaces\r\n };\r\n }\r\n updateOptions(_newOpts) {\r\n this._assertNotDisposed();\r\n let tabSize = (typeof _newOpts.tabSize !== 'undefined') ? _newOpts.tabSize : this._options.tabSize;\r\n let indentSize = (typeof _newOpts.indentSize !== 'undefined') ? _newOpts.indentSize : this._options.indentSize;\r\n let insertSpaces = (typeof _newOpts.insertSpaces !== 'undefined') ? _newOpts.insertSpaces : this._options.insertSpaces;\r\n let trimAutoWhitespace = (typeof _newOpts.trimAutoWhitespace !== 'undefined') ? _newOpts.trimAutoWhitespace : this._options.trimAutoWhitespace;\r\n let newOpts = new model.TextModelResolvedOptions({\r\n tabSize: tabSize,\r\n indentSize: indentSize,\r\n insertSpaces: insertSpaces,\r\n defaultEOL: this._options.defaultEOL,\r\n trimAutoWhitespace: trimAutoWhitespace\r\n });\r\n if (this._options.equals(newOpts)) {\r\n return;\r\n }\r\n let e = this._options.createChangeEvent(newOpts);\r\n this._options = newOpts;\r\n this._onDidChangeOptions.fire(e);\r\n }\r\n detectIndentation(defaultInsertSpaces, defaultTabSize) {\r\n this._assertNotDisposed();\r\n let guessedIndentation = guessIndentation(this._buffer, defaultTabSize, defaultInsertSpaces);\r\n this.updateOptions({\r\n insertSpaces: guessedIndentation.insertSpaces,\r\n tabSize: guessedIndentation.tabSize,\r\n indentSize: guessedIndentation.tabSize,\r\n });\r\n }\r\n static _normalizeIndentationFromWhitespace(str, indentSize, insertSpaces) {\r\n let spacesCnt = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n if (str.charAt(i) === '\\t') {\r\n spacesCnt += indentSize;\r\n }\r\n else {\r\n spacesCnt++;\r\n }\r\n }\r\n let result = '';\r\n if (!insertSpaces) {\r\n let tabsCnt = Math.floor(spacesCnt / indentSize);\r\n spacesCnt = spacesCnt % indentSize;\r\n for (let i = 0; i < tabsCnt; i++) {\r\n result += '\\t';\r\n }\r\n }\r\n for (let i = 0; i < spacesCnt; i++) {\r\n result += ' ';\r\n }\r\n return result;\r\n }\r\n static normalizeIndentation(str, indentSize, insertSpaces) {\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(str);\r\n if (firstNonWhitespaceIndex === -1) {\r\n firstNonWhitespaceIndex = str.length;\r\n }\r\n return TextModel._normalizeIndentationFromWhitespace(str.substring(0, firstNonWhitespaceIndex), indentSize, insertSpaces) + str.substring(firstNonWhitespaceIndex);\r\n }\r\n normalizeIndentation(str) {\r\n this._assertNotDisposed();\r\n return TextModel.normalizeIndentation(str, this._options.indentSize, this._options.insertSpaces);\r\n }\r\n //#endregion\r\n //#region Reading\r\n getVersionId() {\r\n this._assertNotDisposed();\r\n return this._versionId;\r\n }\r\n mightContainRTL() {\r\n return this._buffer.mightContainRTL();\r\n }\r\n mightContainUnusualLineTerminators() {\r\n return this._buffer.mightContainUnusualLineTerminators();\r\n }\r\n removeUnusualLineTerminators(selections = null) {\r\n const matches = this.findMatches(strings.UNUSUAL_LINE_TERMINATORS.source, false, true, false, null, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n this._buffer.resetMightContainUnusualLineTerminators();\r\n this.pushEditOperations(selections, matches.map(m => ({ range: m.range, text: null })), () => null);\r\n }\r\n mightContainNonBasicASCII() {\r\n return this._buffer.mightContainNonBasicASCII();\r\n }\r\n getAlternativeVersionId() {\r\n this._assertNotDisposed();\r\n return this._alternativeVersionId;\r\n }\r\n getOffsetAt(rawPosition) {\r\n this._assertNotDisposed();\r\n let position = this._validatePosition(rawPosition.lineNumber, rawPosition.column, 0 /* Relaxed */);\r\n return this._buffer.getOffsetAt(position.lineNumber, position.column);\r\n }\r\n getPositionAt(rawOffset) {\r\n this._assertNotDisposed();\r\n let offset = (Math.min(this._buffer.getLength(), Math.max(0, rawOffset)));\r\n return this._buffer.getPositionAt(offset);\r\n }\r\n _increaseVersionId() {\r\n this._versionId = this._versionId + 1;\r\n this._alternativeVersionId = this._versionId;\r\n }\r\n _overwriteVersionId(versionId) {\r\n this._versionId = versionId;\r\n }\r\n _overwriteAlternativeVersionId(newAlternativeVersionId) {\r\n this._alternativeVersionId = newAlternativeVersionId;\r\n }\r\n _overwriteInitialUndoRedoSnapshot(newInitialUndoRedoSnapshot) {\r\n this._initialUndoRedoSnapshot = newInitialUndoRedoSnapshot;\r\n }\r\n getValue(eol, preserveBOM = false) {\r\n this._assertNotDisposed();\r\n const fullModelRange = this.getFullModelRange();\r\n const fullModelValue = this.getValueInRange(fullModelRange, eol);\r\n if (preserveBOM) {\r\n return this._buffer.getBOM() + fullModelValue;\r\n }\r\n return fullModelValue;\r\n }\r\n createSnapshot(preserveBOM = false) {\r\n return new TextModelSnapshot(this._buffer.createSnapshot(preserveBOM));\r\n }\r\n getValueLength(eol, preserveBOM = false) {\r\n this._assertNotDisposed();\r\n const fullModelRange = this.getFullModelRange();\r\n const fullModelValue = this.getValueLengthInRange(fullModelRange, eol);\r\n if (preserveBOM) {\r\n return this._buffer.getBOM().length + fullModelValue;\r\n }\r\n return fullModelValue;\r\n }\r\n getValueInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getValueInRange(this.validateRange(rawRange), eol);\r\n }\r\n getValueLengthInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getValueLengthInRange(this.validateRange(rawRange), eol);\r\n }\r\n getCharacterCountInRange(rawRange, eol = 0 /* TextDefined */) {\r\n this._assertNotDisposed();\r\n return this._buffer.getCharacterCountInRange(this.validateRange(rawRange), eol);\r\n }\r\n getLineCount() {\r\n this._assertNotDisposed();\r\n return this._buffer.getLineCount();\r\n }\r\n getLineContent(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineContent(lineNumber);\r\n }\r\n getLineLength(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLength(lineNumber);\r\n }\r\n getLinesContent() {\r\n this._assertNotDisposed();\r\n return this._buffer.getLinesContent();\r\n }\r\n getEOL() {\r\n this._assertNotDisposed();\r\n return this._buffer.getEOL();\r\n }\r\n getLineMinColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n return 1;\r\n }\r\n getLineMaxColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLength(lineNumber) + 1;\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineFirstNonWhitespaceColumn(lineNumber);\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n this._assertNotDisposed();\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._buffer.getLineLastNonWhitespaceColumn(lineNumber);\r\n }\r\n /**\r\n * Validates `range` is within buffer bounds, but allows it to sit in between surrogate pairs, etc.\r\n * Will try to not allocate if possible.\r\n */\r\n _validateRangeRelaxedNoAllocations(range) {\r\n const linesCount = this._buffer.getLineCount();\r\n const initialStartLineNumber = range.startLineNumber;\r\n const initialStartColumn = range.startColumn;\r\n let startLineNumber;\r\n let startColumn;\r\n if (initialStartLineNumber < 1) {\r\n startLineNumber = 1;\r\n startColumn = 1;\r\n }\r\n else if (initialStartLineNumber > linesCount) {\r\n startLineNumber = linesCount;\r\n startColumn = this.getLineMaxColumn(startLineNumber);\r\n }\r\n else {\r\n startLineNumber = initialStartLineNumber | 0;\r\n if (initialStartColumn <= 1) {\r\n startColumn = 1;\r\n }\r\n else {\r\n const maxColumn = this.getLineMaxColumn(startLineNumber);\r\n if (initialStartColumn >= maxColumn) {\r\n startColumn = maxColumn;\r\n }\r\n else {\r\n startColumn = initialStartColumn | 0;\r\n }\r\n }\r\n }\r\n const initialEndLineNumber = range.endLineNumber;\r\n const initialEndColumn = range.endColumn;\r\n let endLineNumber;\r\n let endColumn;\r\n if (initialEndLineNumber < 1) {\r\n endLineNumber = 1;\r\n endColumn = 1;\r\n }\r\n else if (initialEndLineNumber > linesCount) {\r\n endLineNumber = linesCount;\r\n endColumn = this.getLineMaxColumn(endLineNumber);\r\n }\r\n else {\r\n endLineNumber = initialEndLineNumber | 0;\r\n if (initialEndColumn <= 1) {\r\n endColumn = 1;\r\n }\r\n else {\r\n const maxColumn = this.getLineMaxColumn(endLineNumber);\r\n if (initialEndColumn >= maxColumn) {\r\n endColumn = maxColumn;\r\n }\r\n else {\r\n endColumn = initialEndColumn | 0;\r\n }\r\n }\r\n }\r\n if (initialStartLineNumber === startLineNumber\r\n && initialStartColumn === startColumn\r\n && initialEndLineNumber === endLineNumber\r\n && initialEndColumn === endColumn\r\n && range instanceof Range\r\n && !(range instanceof Selection)) {\r\n return range;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n _isValidPosition(lineNumber, column, validationType) {\r\n if (typeof lineNumber !== 'number' || typeof column !== 'number') {\r\n return false;\r\n }\r\n if (isNaN(lineNumber) || isNaN(column)) {\r\n return false;\r\n }\r\n if (lineNumber < 1 || column < 1) {\r\n return false;\r\n }\r\n if ((lineNumber | 0) !== lineNumber || (column | 0) !== column) {\r\n return false;\r\n }\r\n const lineCount = this._buffer.getLineCount();\r\n if (lineNumber > lineCount) {\r\n return false;\r\n }\r\n if (column === 1) {\r\n return true;\r\n }\r\n const maxColumn = this.getLineMaxColumn(lineNumber);\r\n if (column > maxColumn) {\r\n return false;\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n // !!At this point, column > 1\r\n const charCodeBefore = this._buffer.getLineCharCode(lineNumber, column - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n _validatePosition(_lineNumber, _column, validationType) {\r\n const lineNumber = Math.floor((typeof _lineNumber === 'number' && !isNaN(_lineNumber)) ? _lineNumber : 1);\r\n const column = Math.floor((typeof _column === 'number' && !isNaN(_column)) ? _column : 1);\r\n const lineCount = this._buffer.getLineCount();\r\n if (lineNumber < 1) {\r\n return new Position(1, 1);\r\n }\r\n if (lineNumber > lineCount) {\r\n return new Position(lineCount, this.getLineMaxColumn(lineCount));\r\n }\r\n if (column <= 1) {\r\n return new Position(lineNumber, 1);\r\n }\r\n const maxColumn = this.getLineMaxColumn(lineNumber);\r\n if (column >= maxColumn) {\r\n return new Position(lineNumber, maxColumn);\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n // If the position would end up in the middle of a high-low surrogate pair,\r\n // we move it to before the pair\r\n // !!At this point, column > 1\r\n const charCodeBefore = this._buffer.getLineCharCode(lineNumber, column - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n return new Position(lineNumber, column - 1);\r\n }\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n validatePosition(position) {\r\n const validationType = 1 /* SurrogatePairs */;\r\n this._assertNotDisposed();\r\n // Avoid object allocation and cover most likely case\r\n if (position instanceof Position) {\r\n if (this._isValidPosition(position.lineNumber, position.column, validationType)) {\r\n return position;\r\n }\r\n }\r\n return this._validatePosition(position.lineNumber, position.column, validationType);\r\n }\r\n _isValidRange(range, validationType) {\r\n const startLineNumber = range.startLineNumber;\r\n const startColumn = range.startColumn;\r\n const endLineNumber = range.endLineNumber;\r\n const endColumn = range.endColumn;\r\n if (!this._isValidPosition(startLineNumber, startColumn, 0 /* Relaxed */)) {\r\n return false;\r\n }\r\n if (!this._isValidPosition(endLineNumber, endColumn, 0 /* Relaxed */)) {\r\n return false;\r\n }\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);\r\n const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);\r\n const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);\r\n const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);\r\n if (!startInsideSurrogatePair && !endInsideSurrogatePair) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n validateRange(_range) {\r\n const validationType = 1 /* SurrogatePairs */;\r\n this._assertNotDisposed();\r\n // Avoid object allocation and cover most likely case\r\n if ((_range instanceof Range) && !(_range instanceof Selection)) {\r\n if (this._isValidRange(_range, validationType)) {\r\n return _range;\r\n }\r\n }\r\n const start = this._validatePosition(_range.startLineNumber, _range.startColumn, 0 /* Relaxed */);\r\n const end = this._validatePosition(_range.endLineNumber, _range.endColumn, 0 /* Relaxed */);\r\n const startLineNumber = start.lineNumber;\r\n const startColumn = start.column;\r\n const endLineNumber = end.lineNumber;\r\n const endColumn = end.column;\r\n if (validationType === 1 /* SurrogatePairs */) {\r\n const charCodeBeforeStart = (startColumn > 1 ? this._buffer.getLineCharCode(startLineNumber, startColumn - 2) : 0);\r\n const charCodeBeforeEnd = (endColumn > 1 && endColumn <= this._buffer.getLineLength(endLineNumber) ? this._buffer.getLineCharCode(endLineNumber, endColumn - 2) : 0);\r\n const startInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeStart);\r\n const endInsideSurrogatePair = strings.isHighSurrogate(charCodeBeforeEnd);\r\n if (!startInsideSurrogatePair && !endInsideSurrogatePair) {\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n if (startLineNumber === endLineNumber && startColumn === endColumn) {\r\n // do not expand a collapsed range, simply move it to a valid location\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn - 1);\r\n }\r\n if (startInsideSurrogatePair && endInsideSurrogatePair) {\r\n // expand range at both ends\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn + 1);\r\n }\r\n if (startInsideSurrogatePair) {\r\n // only expand range at the start\r\n return new Range(startLineNumber, startColumn - 1, endLineNumber, endColumn);\r\n }\r\n // only expand range at the end\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn + 1);\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n modifyPosition(rawPosition, offset) {\r\n this._assertNotDisposed();\r\n let candidate = this.getOffsetAt(rawPosition) + offset;\r\n return this.getPositionAt(Math.min(this._buffer.getLength(), Math.max(0, candidate)));\r\n }\r\n getFullModelRange() {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n return new Range(1, 1, lineCount, this.getLineMaxColumn(lineCount));\r\n }\r\n findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount) {\r\n return this._buffer.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n findMatches(searchString, rawSearchScope, isRegex, matchCase, wordSeparators, captureMatches, limitResultCount = LIMIT_FIND_COUNT) {\r\n this._assertNotDisposed();\r\n let searchRanges = null;\r\n if (rawSearchScope !== null) {\r\n if (!Array.isArray(rawSearchScope)) {\r\n rawSearchScope = [rawSearchScope];\r\n }\r\n if (rawSearchScope.every((searchScope) => Range.isIRange(searchScope))) {\r\n searchRanges = rawSearchScope.map((searchScope) => this.validateRange(searchScope));\r\n }\r\n }\r\n if (searchRanges === null) {\r\n searchRanges = [this.getFullModelRange()];\r\n }\r\n searchRanges = searchRanges.sort((d1, d2) => d1.startLineNumber - d2.startLineNumber || d1.startColumn - d2.startColumn);\r\n const uniqueSearchRanges = [];\r\n uniqueSearchRanges.push(searchRanges.reduce((prev, curr) => {\r\n if (Range.areIntersecting(prev, curr)) {\r\n return prev.plusRange(curr);\r\n }\r\n uniqueSearchRanges.push(prev);\r\n return curr;\r\n }));\r\n let matchMapper;\r\n if (!isRegex && searchString.indexOf('\\n') < 0) {\r\n // not regex, not multi line\r\n const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return [];\r\n }\r\n matchMapper = (searchRange) => this.findMatchesLineByLine(searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n else {\r\n matchMapper = (searchRange) => TextModelSearch.findMatches(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchRange, captureMatches, limitResultCount);\r\n }\r\n return uniqueSearchRanges.map(matchMapper).reduce((arr, matches) => arr.concat(matches), []);\r\n }\r\n findNextMatch(searchString, rawSearchStart, isRegex, matchCase, wordSeparators, captureMatches) {\r\n this._assertNotDisposed();\r\n const searchStart = this.validatePosition(rawSearchStart);\r\n if (!isRegex && searchString.indexOf('\\n') < 0) {\r\n const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const lineCount = this.getLineCount();\r\n let searchRange = new Range(searchStart.lineNumber, searchStart.column, lineCount, this.getLineMaxColumn(lineCount));\r\n let ret = this.findMatchesLineByLine(searchRange, searchData, captureMatches, 1);\r\n TextModelSearch.findNextMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n if (ret.length > 0) {\r\n return ret[0];\r\n }\r\n searchRange = new Range(1, 1, searchStart.lineNumber, this.getLineMaxColumn(searchStart.lineNumber));\r\n ret = this.findMatchesLineByLine(searchRange, searchData, captureMatches, 1);\r\n if (ret.length > 0) {\r\n return ret[0];\r\n }\r\n return null;\r\n }\r\n return TextModelSearch.findNextMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n }\r\n findPreviousMatch(searchString, rawSearchStart, isRegex, matchCase, wordSeparators, captureMatches) {\r\n this._assertNotDisposed();\r\n const searchStart = this.validatePosition(rawSearchStart);\r\n return TextModelSearch.findPreviousMatch(this, new SearchParams(searchString, isRegex, matchCase, wordSeparators), searchStart, captureMatches);\r\n }\r\n //#endregion\r\n //#region Editing\r\n pushStackElement() {\r\n this._commandManager.pushStackElement();\r\n }\r\n pushEOL(eol) {\r\n const currentEOL = (this.getEOL() === '\\n' ? 0 /* LF */ : 1 /* CRLF */);\r\n if (currentEOL === eol) {\r\n return;\r\n }\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n if (this._initialUndoRedoSnapshot === null) {\r\n this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri);\r\n }\r\n this._commandManager.pushEOL(eol);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _validateEditOperation(rawOperation) {\r\n if (rawOperation instanceof model.ValidAnnotatedEditOperation) {\r\n return rawOperation;\r\n }\r\n return new model.ValidAnnotatedEditOperation(rawOperation.identifier || null, this.validateRange(rawOperation.range), rawOperation.text, rawOperation.forceMoveMarkers || false, rawOperation.isAutoWhitespaceEdit || false, rawOperation._isTracked || false);\r\n }\r\n _validateEditOperations(rawOperations) {\r\n const result = [];\r\n for (let i = 0, len = rawOperations.length; i < len; i++) {\r\n result[i] = this._validateEditOperation(rawOperations[i]);\r\n }\r\n return result;\r\n }\r\n pushEditOperations(beforeCursorState, editOperations, cursorStateComputer) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n return this._pushEditOperations(beforeCursorState, this._validateEditOperations(editOperations), cursorStateComputer);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _pushEditOperations(beforeCursorState, editOperations, cursorStateComputer) {\r\n if (this._options.trimAutoWhitespace && this._trimAutoWhitespaceLines) {\r\n // Go through each saved line number and insert a trim whitespace edit\r\n // if it is safe to do so (no conflicts with other edits).\r\n let incomingEdits = editOperations.map((op) => {\r\n return {\r\n range: this.validateRange(op.range),\r\n text: op.text\r\n };\r\n });\r\n // Sometimes, auto-formatters change ranges automatically which can cause undesired auto whitespace trimming near the cursor\r\n // We'll use the following heuristic: if the edits occur near the cursor, then it's ok to trim auto whitespace\r\n let editsAreNearCursors = true;\r\n if (beforeCursorState) {\r\n for (let i = 0, len = beforeCursorState.length; i < len; i++) {\r\n let sel = beforeCursorState[i];\r\n let foundEditNearSel = false;\r\n for (let j = 0, lenJ = incomingEdits.length; j < lenJ; j++) {\r\n let editRange = incomingEdits[j].range;\r\n let selIsAbove = editRange.startLineNumber > sel.endLineNumber;\r\n let selIsBelow = sel.startLineNumber > editRange.endLineNumber;\r\n if (!selIsAbove && !selIsBelow) {\r\n foundEditNearSel = true;\r\n break;\r\n }\r\n }\r\n if (!foundEditNearSel) {\r\n editsAreNearCursors = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (editsAreNearCursors) {\r\n for (let i = 0, len = this._trimAutoWhitespaceLines.length; i < len; i++) {\r\n let trimLineNumber = this._trimAutoWhitespaceLines[i];\r\n let maxLineColumn = this.getLineMaxColumn(trimLineNumber);\r\n let allowTrimLine = true;\r\n for (let j = 0, lenJ = incomingEdits.length; j < lenJ; j++) {\r\n let editRange = incomingEdits[j].range;\r\n let editText = incomingEdits[j].text;\r\n if (trimLineNumber < editRange.startLineNumber || trimLineNumber > editRange.endLineNumber) {\r\n // `trimLine` is completely outside this edit\r\n continue;\r\n }\r\n // At this point:\r\n // editRange.startLineNumber <= trimLine <= editRange.endLineNumber\r\n if (trimLineNumber === editRange.startLineNumber && editRange.startColumn === maxLineColumn\r\n && editRange.isEmpty() && editText && editText.length > 0 && editText.charAt(0) === '\\n') {\r\n // This edit inserts a new line (and maybe other text) after `trimLine`\r\n continue;\r\n }\r\n if (trimLineNumber === editRange.startLineNumber && editRange.startColumn === 1\r\n && editRange.isEmpty() && editText && editText.length > 0 && editText.charAt(editText.length - 1) === '\\n') {\r\n // This edit inserts a new line (and maybe other text) before `trimLine`\r\n continue;\r\n }\r\n // Looks like we can't trim this line as it would interfere with an incoming edit\r\n allowTrimLine = false;\r\n break;\r\n }\r\n if (allowTrimLine) {\r\n const trimRange = new Range(trimLineNumber, 1, trimLineNumber, maxLineColumn);\r\n editOperations.push(new model.ValidAnnotatedEditOperation(null, trimRange, null, false, false, false));\r\n }\r\n }\r\n }\r\n this._trimAutoWhitespaceLines = null;\r\n }\r\n if (this._initialUndoRedoSnapshot === null) {\r\n this._initialUndoRedoSnapshot = this._undoRedoService.createSnapshot(this.uri);\r\n }\r\n return this._commandManager.pushEditOperation(beforeCursorState, editOperations, cursorStateComputer);\r\n }\r\n _applyUndo(changes, eol, resultingAlternativeVersionId, resultingSelection) {\r\n const edits = changes.map((change) => {\r\n const rangeStart = this.getPositionAt(change.newPosition);\r\n const rangeEnd = this.getPositionAt(change.newEnd);\r\n return {\r\n range: new Range(rangeStart.lineNumber, rangeStart.column, rangeEnd.lineNumber, rangeEnd.column),\r\n text: change.oldText\r\n };\r\n });\r\n this._applyUndoRedoEdits(edits, eol, true, false, resultingAlternativeVersionId, resultingSelection);\r\n }\r\n _applyRedo(changes, eol, resultingAlternativeVersionId, resultingSelection) {\r\n const edits = changes.map((change) => {\r\n const rangeStart = this.getPositionAt(change.oldPosition);\r\n const rangeEnd = this.getPositionAt(change.oldEnd);\r\n return {\r\n range: new Range(rangeStart.lineNumber, rangeStart.column, rangeEnd.lineNumber, rangeEnd.column),\r\n text: change.newText\r\n };\r\n });\r\n this._applyUndoRedoEdits(edits, eol, false, true, resultingAlternativeVersionId, resultingSelection);\r\n }\r\n _applyUndoRedoEdits(edits, eol, isUndoing, isRedoing, resultingAlternativeVersionId, resultingSelection) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n this._isUndoing = isUndoing;\r\n this._isRedoing = isRedoing;\r\n this.applyEdits(edits, false);\r\n this.setEOL(eol);\r\n this._overwriteAlternativeVersionId(resultingAlternativeVersionId);\r\n }\r\n finally {\r\n this._isUndoing = false;\r\n this._isRedoing = false;\r\n this._eventEmitter.endDeferredEmit(resultingSelection);\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n applyEdits(rawOperations, computeUndoEdits = false) {\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n this._eventEmitter.beginDeferredEmit();\r\n const operations = this._validateEditOperations(rawOperations);\r\n return this._doApplyEdits(operations, computeUndoEdits);\r\n }\r\n finally {\r\n this._eventEmitter.endDeferredEmit();\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _doApplyEdits(rawOperations, computeUndoEdits) {\r\n const oldLineCount = this._buffer.getLineCount();\r\n const result = this._buffer.applyEdits(rawOperations, this._options.trimAutoWhitespace, computeUndoEdits);\r\n const newLineCount = this._buffer.getLineCount();\r\n const contentChanges = result.changes;\r\n this._trimAutoWhitespaceLines = result.trimAutoWhitespaceLineNumbers;\r\n if (contentChanges.length !== 0) {\r\n let rawContentChanges = [];\r\n let lineCount = oldLineCount;\r\n for (let i = 0, len = contentChanges.length; i < len; i++) {\r\n const change = contentChanges[i];\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(change.text);\r\n this._tokens.acceptEdit(change.range, eolCount, firstLineLength);\r\n this._tokens2.acceptEdit(change.range, eolCount, firstLineLength, lastLineLength, change.text.length > 0 ? change.text.charCodeAt(0) : 0 /* Null */);\r\n this._onDidChangeDecorations.fire();\r\n this._decorationsTree.acceptReplace(change.rangeOffset, change.rangeLength, change.text.length, change.forceMoveMarkers);\r\n const startLineNumber = change.range.startLineNumber;\r\n const endLineNumber = change.range.endLineNumber;\r\n const deletingLinesCnt = endLineNumber - startLineNumber;\r\n const insertingLinesCnt = eolCount;\r\n const editingLinesCnt = Math.min(deletingLinesCnt, insertingLinesCnt);\r\n const changeLineCountDelta = (insertingLinesCnt - deletingLinesCnt);\r\n for (let j = editingLinesCnt; j >= 0; j--) {\r\n const editLineNumber = startLineNumber + j;\r\n const currentEditLineNumber = newLineCount - lineCount - changeLineCountDelta + editLineNumber;\r\n rawContentChanges.push(new ModelRawLineChanged(editLineNumber, this.getLineContent(currentEditLineNumber)));\r\n }\r\n if (editingLinesCnt < deletingLinesCnt) {\r\n // Must delete some lines\r\n const spliceStartLineNumber = startLineNumber + editingLinesCnt;\r\n rawContentChanges.push(new ModelRawLinesDeleted(spliceStartLineNumber + 1, endLineNumber));\r\n }\r\n if (editingLinesCnt < insertingLinesCnt) {\r\n // Must insert some lines\r\n const spliceLineNumber = startLineNumber + editingLinesCnt;\r\n const cnt = insertingLinesCnt - editingLinesCnt;\r\n const fromLineNumber = newLineCount - lineCount - cnt + spliceLineNumber + 1;\r\n let newLines = [];\r\n for (let i = 0; i < cnt; i++) {\r\n let lineNumber = fromLineNumber + i;\r\n newLines[lineNumber - fromLineNumber] = this.getLineContent(lineNumber);\r\n }\r\n rawContentChanges.push(new ModelRawLinesInserted(spliceLineNumber + 1, startLineNumber + insertingLinesCnt, newLines));\r\n }\r\n lineCount += changeLineCountDelta;\r\n }\r\n this._increaseVersionId();\r\n this._emitContentChangedEvent(new ModelRawContentChangedEvent(rawContentChanges, this.getVersionId(), this._isUndoing, this._isRedoing), {\r\n changes: contentChanges,\r\n eol: this._buffer.getEOL(),\r\n versionId: this.getVersionId(),\r\n isUndoing: this._isUndoing,\r\n isRedoing: this._isRedoing,\r\n isFlush: false\r\n });\r\n }\r\n return (result.reverseEdits === null ? undefined : result.reverseEdits);\r\n }\r\n undo() {\r\n this._undoRedoService.undo(this.uri);\r\n }\r\n canUndo() {\r\n return this._undoRedoService.canUndo(this.uri);\r\n }\r\n redo() {\r\n this._undoRedoService.redo(this.uri);\r\n }\r\n canRedo() {\r\n return this._undoRedoService.canRedo(this.uri);\r\n }\r\n //#endregion\r\n //#region Decorations\r\n changeDecorations(callback, ownerId = 0) {\r\n this._assertNotDisposed();\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n return this._changeDecorations(ownerId, callback);\r\n }\r\n finally {\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _changeDecorations(ownerId, callback) {\r\n let changeAccessor = {\r\n addDecoration: (range, options) => {\r\n return this._deltaDecorationsImpl(ownerId, [], [{ range: range, options: options }])[0];\r\n },\r\n changeDecoration: (id, newRange) => {\r\n this._changeDecorationImpl(id, newRange);\r\n },\r\n changeDecorationOptions: (id, options) => {\r\n this._changeDecorationOptionsImpl(id, _normalizeOptions(options));\r\n },\r\n removeDecoration: (id) => {\r\n this._deltaDecorationsImpl(ownerId, [id], []);\r\n },\r\n deltaDecorations: (oldDecorations, newDecorations) => {\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n // nothing to do\r\n return [];\r\n }\r\n return this._deltaDecorationsImpl(ownerId, oldDecorations, newDecorations);\r\n }\r\n };\r\n let result = null;\r\n try {\r\n result = callback(changeAccessor);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n // Invalidate change accessor\r\n changeAccessor.addDecoration = invalidFunc;\r\n changeAccessor.changeDecoration = invalidFunc;\r\n changeAccessor.changeDecorationOptions = invalidFunc;\r\n changeAccessor.removeDecoration = invalidFunc;\r\n changeAccessor.deltaDecorations = invalidFunc;\r\n return result;\r\n }\r\n deltaDecorations(oldDecorations, newDecorations, ownerId = 0) {\r\n this._assertNotDisposed();\r\n if (!oldDecorations) {\r\n oldDecorations = [];\r\n }\r\n if (oldDecorations.length === 0 && newDecorations.length === 0) {\r\n // nothing to do\r\n return [];\r\n }\r\n try {\r\n this._onDidChangeDecorations.beginDeferredEmit();\r\n return this._deltaDecorationsImpl(ownerId, oldDecorations, newDecorations);\r\n }\r\n finally {\r\n this._onDidChangeDecorations.endDeferredEmit();\r\n }\r\n }\r\n _getTrackedRange(id) {\r\n return this.getDecorationRange(id);\r\n }\r\n _setTrackedRange(id, newRange, newStickiness) {\r\n const node = (id ? this._decorations[id] : null);\r\n if (!node) {\r\n if (!newRange) {\r\n // node doesn't exist, the request is to delete => nothing to do\r\n return null;\r\n }\r\n // node doesn't exist, the request is to set => add the tracked range\r\n return this._deltaDecorationsImpl(0, [], [{ range: newRange, options: TRACKED_RANGE_OPTIONS[newStickiness] }])[0];\r\n }\r\n if (!newRange) {\r\n // node exists, the request is to delete => delete node\r\n this._decorationsTree.delete(node);\r\n delete this._decorations[node.id];\r\n return null;\r\n }\r\n // node exists, the request is to set => change the tracked range and its options\r\n const range = this._validateRangeRelaxedNoAllocations(newRange);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n this._decorationsTree.delete(node);\r\n node.reset(this.getVersionId(), startOffset, endOffset, range);\r\n node.setOptions(TRACKED_RANGE_OPTIONS[newStickiness]);\r\n this._decorationsTree.insert(node);\r\n return node.id;\r\n }\r\n removeAllDecorationsWithOwnerId(ownerId) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n const nodes = this._decorationsTree.collectNodesFromOwner(ownerId);\r\n for (let i = 0, len = nodes.length; i < len; i++) {\r\n const node = nodes[i];\r\n this._decorationsTree.delete(node);\r\n delete this._decorations[node.id];\r\n }\r\n }\r\n getDecorationOptions(decorationId) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return null;\r\n }\r\n return node.options;\r\n }\r\n getDecorationRange(decorationId) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return null;\r\n }\r\n const versionId = this.getVersionId();\r\n if (node.cachedVersionId !== versionId) {\r\n this._decorationsTree.resolveNode(node, versionId);\r\n }\r\n if (node.range === null) {\r\n node.range = this._getRangeAt(node.cachedAbsoluteStart, node.cachedAbsoluteEnd);\r\n }\r\n return node.range;\r\n }\r\n getLineDecorations(lineNumber, ownerId = 0, filterOutValidation = false) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n return [];\r\n }\r\n return this.getLinesDecorations(lineNumber, lineNumber, ownerId, filterOutValidation);\r\n }\r\n getLinesDecorations(_startLineNumber, _endLineNumber, ownerId = 0, filterOutValidation = false) {\r\n let lineCount = this.getLineCount();\r\n let startLineNumber = Math.min(lineCount, Math.max(1, _startLineNumber));\r\n let endLineNumber = Math.min(lineCount, Math.max(1, _endLineNumber));\r\n let endColumn = this.getLineMaxColumn(endLineNumber);\r\n return this._getDecorationsInRange(new Range(startLineNumber, 1, endLineNumber, endColumn), ownerId, filterOutValidation);\r\n }\r\n getDecorationsInRange(range, ownerId = 0, filterOutValidation = false) {\r\n let validatedRange = this.validateRange(range);\r\n return this._getDecorationsInRange(validatedRange, ownerId, filterOutValidation);\r\n }\r\n getOverviewRulerDecorations(ownerId = 0, filterOutValidation = false) {\r\n const versionId = this.getVersionId();\r\n const result = this._decorationsTree.search(ownerId, filterOutValidation, true, versionId);\r\n return this._ensureNodesHaveRanges(result);\r\n }\r\n getAllDecorations(ownerId = 0, filterOutValidation = false) {\r\n const versionId = this.getVersionId();\r\n const result = this._decorationsTree.search(ownerId, filterOutValidation, false, versionId);\r\n return this._ensureNodesHaveRanges(result);\r\n }\r\n _getDecorationsInRange(filterRange, filterOwnerId, filterOutValidation) {\r\n const startOffset = this._buffer.getOffsetAt(filterRange.startLineNumber, filterRange.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(filterRange.endLineNumber, filterRange.endColumn);\r\n const versionId = this.getVersionId();\r\n const result = this._decorationsTree.intervalSearch(startOffset, endOffset, filterOwnerId, filterOutValidation, versionId);\r\n return this._ensureNodesHaveRanges(result);\r\n }\r\n _ensureNodesHaveRanges(nodes) {\r\n for (let i = 0, len = nodes.length; i < len; i++) {\r\n const node = nodes[i];\r\n if (node.range === null) {\r\n node.range = this._getRangeAt(node.cachedAbsoluteStart, node.cachedAbsoluteEnd);\r\n }\r\n }\r\n return nodes;\r\n }\r\n _getRangeAt(start, end) {\r\n return this._buffer.getRangeAt(start, end - start);\r\n }\r\n _changeDecorationImpl(decorationId, _range) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return;\r\n }\r\n const range = this._validateRangeRelaxedNoAllocations(_range);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n this._decorationsTree.delete(node);\r\n node.reset(this.getVersionId(), startOffset, endOffset, range);\r\n this._decorationsTree.insert(node);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n }\r\n _changeDecorationOptionsImpl(decorationId, options) {\r\n const node = this._decorations[decorationId];\r\n if (!node) {\r\n return;\r\n }\r\n const nodeWasInOverviewRuler = (node.options.overviewRuler && node.options.overviewRuler.color ? true : false);\r\n const nodeIsInOverviewRuler = (options.overviewRuler && options.overviewRuler.color ? true : false);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n this._onDidChangeDecorations.checkAffectedAndFire(options);\r\n if (nodeWasInOverviewRuler !== nodeIsInOverviewRuler) {\r\n // Delete + Insert due to an overview ruler status change\r\n this._decorationsTree.delete(node);\r\n node.setOptions(options);\r\n this._decorationsTree.insert(node);\r\n }\r\n else {\r\n node.setOptions(options);\r\n }\r\n }\r\n _deltaDecorationsImpl(ownerId, oldDecorationsIds, newDecorations) {\r\n const versionId = this.getVersionId();\r\n const oldDecorationsLen = oldDecorationsIds.length;\r\n let oldDecorationIndex = 0;\r\n const newDecorationsLen = newDecorations.length;\r\n let newDecorationIndex = 0;\r\n let result = new Array(newDecorationsLen);\r\n while (oldDecorationIndex < oldDecorationsLen || newDecorationIndex < newDecorationsLen) {\r\n let node = null;\r\n if (oldDecorationIndex < oldDecorationsLen) {\r\n // (1) get ourselves an old node\r\n do {\r\n node = this._decorations[oldDecorationsIds[oldDecorationIndex++]];\r\n } while (!node && oldDecorationIndex < oldDecorationsLen);\r\n // (2) remove the node from the tree (if it exists)\r\n if (node) {\r\n this._decorationsTree.delete(node);\r\n this._onDidChangeDecorations.checkAffectedAndFire(node.options);\r\n }\r\n }\r\n if (newDecorationIndex < newDecorationsLen) {\r\n // (3) create a new node if necessary\r\n if (!node) {\r\n const internalDecorationId = (++this._lastDecorationId);\r\n const decorationId = `${this._instanceId};${internalDecorationId}`;\r\n node = new IntervalNode(decorationId, 0, 0);\r\n this._decorations[decorationId] = node;\r\n }\r\n // (4) initialize node\r\n const newDecoration = newDecorations[newDecorationIndex];\r\n const range = this._validateRangeRelaxedNoAllocations(newDecoration.range);\r\n const options = _normalizeOptions(newDecoration.options);\r\n const startOffset = this._buffer.getOffsetAt(range.startLineNumber, range.startColumn);\r\n const endOffset = this._buffer.getOffsetAt(range.endLineNumber, range.endColumn);\r\n node.ownerId = ownerId;\r\n node.reset(versionId, startOffset, endOffset, range);\r\n node.setOptions(options);\r\n this._onDidChangeDecorations.checkAffectedAndFire(options);\r\n this._decorationsTree.insert(node);\r\n result[newDecorationIndex] = node.id;\r\n newDecorationIndex++;\r\n }\r\n else {\r\n if (node) {\r\n delete this._decorations[node.id];\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n setTokens(tokens) {\r\n if (tokens.length === 0) {\r\n return;\r\n }\r\n let ranges = [];\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const element = tokens[i];\r\n let minChangedLineNumber = 0;\r\n let maxChangedLineNumber = 0;\r\n let hasChange = false;\r\n for (let j = 0, lenJ = element.tokens.length; j < lenJ; j++) {\r\n const lineNumber = element.startLineNumber + j;\r\n if (hasChange) {\r\n this._tokens.setTokens(this._languageIdentifier.id, lineNumber - 1, this._buffer.getLineLength(lineNumber), element.tokens[j], false);\r\n maxChangedLineNumber = lineNumber;\r\n }\r\n else {\r\n const lineHasChange = this._tokens.setTokens(this._languageIdentifier.id, lineNumber - 1, this._buffer.getLineLength(lineNumber), element.tokens[j], true);\r\n if (lineHasChange) {\r\n hasChange = true;\r\n minChangedLineNumber = lineNumber;\r\n maxChangedLineNumber = lineNumber;\r\n }\r\n }\r\n }\r\n if (hasChange) {\r\n ranges.push({ fromLineNumber: minChangedLineNumber, toLineNumber: maxChangedLineNumber });\r\n }\r\n }\r\n if (ranges.length > 0) {\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: false,\r\n ranges: ranges\r\n });\r\n }\r\n }\r\n setSemanticTokens(tokens, isComplete) {\r\n this._tokens2.set(tokens, isComplete);\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: tokens !== null,\r\n ranges: [{ fromLineNumber: 1, toLineNumber: this.getLineCount() }]\r\n });\r\n }\r\n hasSemanticTokens() {\r\n return this._tokens2.isComplete();\r\n }\r\n setPartialSemanticTokens(range, tokens) {\r\n if (this.hasSemanticTokens()) {\r\n return;\r\n }\r\n const changedRange = this._tokens2.setPartial(range, tokens);\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: false,\r\n semanticTokensApplied: true,\r\n ranges: [{ fromLineNumber: changedRange.startLineNumber, toLineNumber: changedRange.endLineNumber }]\r\n });\r\n }\r\n tokenizeViewport(startLineNumber, endLineNumber) {\r\n startLineNumber = Math.max(1, startLineNumber);\r\n endLineNumber = Math.min(this._buffer.getLineCount(), endLineNumber);\r\n this._tokenization.tokenizeViewport(startLineNumber, endLineNumber);\r\n }\r\n clearTokens() {\r\n this._tokens.flush();\r\n this._emitModelTokensChangedEvent({\r\n tokenizationSupportChanged: true,\r\n semanticTokensApplied: false,\r\n ranges: [{\r\n fromLineNumber: 1,\r\n toLineNumber: this._buffer.getLineCount()\r\n }]\r\n });\r\n }\r\n _emitModelTokensChangedEvent(e) {\r\n if (!this._isDisposing) {\r\n this._onDidChangeTokens.fire(e);\r\n }\r\n }\r\n resetTokenization() {\r\n this._tokenization.reset();\r\n }\r\n forceTokenization(lineNumber) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n this._tokenization.forceTokenization(lineNumber);\r\n }\r\n isCheapToTokenize(lineNumber) {\r\n return this._tokenization.isCheapToTokenize(lineNumber);\r\n }\r\n tokenizeIfCheap(lineNumber) {\r\n if (this.isCheapToTokenize(lineNumber)) {\r\n this.forceTokenization(lineNumber);\r\n }\r\n }\r\n getLineTokens(lineNumber) {\r\n if (lineNumber < 1 || lineNumber > this.getLineCount()) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n return this._getLineTokens(lineNumber);\r\n }\r\n _getLineTokens(lineNumber) {\r\n const lineText = this.getLineContent(lineNumber);\r\n const syntacticTokens = this._tokens.getTokens(this._languageIdentifier.id, lineNumber - 1, lineText);\r\n return this._tokens2.addSemanticTokens(lineNumber, syntacticTokens);\r\n }\r\n getLanguageIdentifier() {\r\n return this._languageIdentifier;\r\n }\r\n getModeId() {\r\n return this._languageIdentifier.language;\r\n }\r\n setMode(languageIdentifier) {\r\n if (this._languageIdentifier.id === languageIdentifier.id) {\r\n // There's nothing to do\r\n return;\r\n }\r\n let e = {\r\n oldLanguage: this._languageIdentifier.language,\r\n newLanguage: languageIdentifier.language\r\n };\r\n this._languageIdentifier = languageIdentifier;\r\n this._onDidChangeLanguage.fire(e);\r\n this._onDidChangeLanguageConfiguration.fire({});\r\n }\r\n getLanguageIdAtPosition(lineNumber, column) {\r\n const position = this.validatePosition(new Position(lineNumber, column));\r\n const lineTokens = this.getLineTokens(position.lineNumber);\r\n return lineTokens.getLanguageId(lineTokens.findTokenIndexAtOffset(position.column - 1));\r\n }\r\n // Having tokens allows implementing additional helper methods\r\n getWordAtPosition(_position) {\r\n this._assertNotDisposed();\r\n const position = this.validatePosition(_position);\r\n const lineContent = this.getLineContent(position.lineNumber);\r\n const lineTokens = this._getLineTokens(position.lineNumber);\r\n const tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n // (1). First try checking right biased word\r\n const [rbStartOffset, rbEndOffset] = TextModel._findLanguageBoundaries(lineTokens, tokenIndex);\r\n const rightBiasedWord = getWordAtText(position.column, LanguageConfigurationRegistry.getWordDefinition(lineTokens.getLanguageId(tokenIndex)), lineContent.substring(rbStartOffset, rbEndOffset), rbStartOffset);\r\n // Make sure the result touches the original passed in position\r\n if (rightBiasedWord && rightBiasedWord.startColumn <= _position.column && _position.column <= rightBiasedWord.endColumn) {\r\n return rightBiasedWord;\r\n }\r\n // (2). Else, if we were at a language boundary, check the left biased word\r\n if (tokenIndex > 0 && rbStartOffset === position.column - 1) {\r\n // edge case, where `position` sits between two tokens belonging to two different languages\r\n const [lbStartOffset, lbEndOffset] = TextModel._findLanguageBoundaries(lineTokens, tokenIndex - 1);\r\n const leftBiasedWord = getWordAtText(position.column, LanguageConfigurationRegistry.getWordDefinition(lineTokens.getLanguageId(tokenIndex - 1)), lineContent.substring(lbStartOffset, lbEndOffset), lbStartOffset);\r\n // Make sure the result touches the original passed in position\r\n if (leftBiasedWord && leftBiasedWord.startColumn <= _position.column && _position.column <= leftBiasedWord.endColumn) {\r\n return leftBiasedWord;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findLanguageBoundaries(lineTokens, tokenIndex) {\r\n const languageId = lineTokens.getLanguageId(tokenIndex);\r\n // go left until a different language is hit\r\n let startOffset = 0;\r\n for (let i = tokenIndex; i >= 0 && lineTokens.getLanguageId(i) === languageId; i--) {\r\n startOffset = lineTokens.getStartOffset(i);\r\n }\r\n // go right until a different language is hit\r\n let endOffset = lineTokens.getLineContent().length;\r\n for (let i = tokenIndex, tokenCount = lineTokens.getCount(); i < tokenCount && lineTokens.getLanguageId(i) === languageId; i++) {\r\n endOffset = lineTokens.getEndOffset(i);\r\n }\r\n return [startOffset, endOffset];\r\n }\r\n getWordUntilPosition(position) {\r\n const wordAtPosition = this.getWordAtPosition(position);\r\n if (!wordAtPosition) {\r\n return {\r\n word: '',\r\n startColumn: position.column,\r\n endColumn: position.column\r\n };\r\n }\r\n return {\r\n word: wordAtPosition.word.substr(0, position.column - wordAtPosition.startColumn),\r\n startColumn: wordAtPosition.startColumn,\r\n endColumn: position.column\r\n };\r\n }\r\n findMatchingBracketUp(_bracket, _position) {\r\n let bracket = _bracket.toLowerCase();\r\n let position = this.validatePosition(_position);\r\n let lineTokens = this._getLineTokens(position.lineNumber);\r\n let languageId = lineTokens.getLanguageId(lineTokens.findTokenIndexAtOffset(position.column - 1));\r\n let bracketsSupport = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n if (!bracketsSupport) {\r\n return null;\r\n }\r\n let data = bracketsSupport.textIsBracket[bracket];\r\n if (!data) {\r\n return null;\r\n }\r\n return stripBracketSearchCanceled(this._findMatchingBracketUp(data, position, null));\r\n }\r\n matchBracket(position) {\r\n return this._matchBracket(this.validatePosition(position));\r\n }\r\n _matchBracket(position) {\r\n const lineNumber = position.lineNumber;\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n const tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n if (tokenIndex < 0) {\r\n return null;\r\n }\r\n const currentModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(lineTokens.getLanguageId(tokenIndex));\r\n // check that the token is not to be ignored\r\n if (currentModeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex))) {\r\n // limit search to not go before `maxBracketLength`\r\n let searchStartOffset = Math.max(0, position.column - 1 - currentModeBrackets.maxBracketLength);\r\n for (let i = tokenIndex - 1; i >= 0; i--) {\r\n const tokenEndOffset = lineTokens.getEndOffset(i);\r\n if (tokenEndOffset <= searchStartOffset) {\r\n break;\r\n }\r\n if (ignoreBracketsInToken(lineTokens.getStandardTokenType(i))) {\r\n searchStartOffset = tokenEndOffset;\r\n }\r\n }\r\n // limit search to not go after `maxBracketLength`\r\n const searchEndOffset = Math.min(lineText.length, position.column - 1 + currentModeBrackets.maxBracketLength);\r\n // it might be the case that [currentTokenStart -> currentTokenEnd] contains multiple brackets\r\n // `bestResult` will contain the most right-side result\r\n let bestResult = null;\r\n while (true) {\r\n const foundBracket = BracketsUtils.findNextBracketInRange(currentModeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!foundBracket) {\r\n // there are no more brackets in this text\r\n break;\r\n }\r\n // check that we didn't hit a bracket too far away from position\r\n if (foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {\r\n const foundBracketText = lineText.substring(foundBracket.startColumn - 1, foundBracket.endColumn - 1).toLowerCase();\r\n const r = this._matchFoundBracket(foundBracket, currentModeBrackets.textIsBracket[foundBracketText], currentModeBrackets.textIsOpenBracket[foundBracketText], null);\r\n if (r) {\r\n if (r instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n bestResult = r;\r\n }\r\n }\r\n searchStartOffset = foundBracket.endColumn - 1;\r\n }\r\n if (bestResult) {\r\n return bestResult;\r\n }\r\n }\r\n // If position is in between two tokens, try also looking in the previous token\r\n if (tokenIndex > 0 && lineTokens.getStartOffset(tokenIndex) === position.column - 1) {\r\n const prevTokenIndex = tokenIndex - 1;\r\n const prevModeBrackets = LanguageConfigurationRegistry.getBracketsSupport(lineTokens.getLanguageId(prevTokenIndex));\r\n // check that previous token is not to be ignored\r\n if (prevModeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(prevTokenIndex))) {\r\n // limit search in case previous token is very large, there's no need to go beyond `maxBracketLength`\r\n const searchStartOffset = Math.max(0, position.column - 1 - prevModeBrackets.maxBracketLength);\r\n let searchEndOffset = Math.min(lineText.length, position.column - 1 + prevModeBrackets.maxBracketLength);\r\n for (let i = prevTokenIndex + 1; i < tokenCount; i++) {\r\n const tokenStartOffset = lineTokens.getStartOffset(i);\r\n if (tokenStartOffset >= searchEndOffset) {\r\n break;\r\n }\r\n if (ignoreBracketsInToken(lineTokens.getStandardTokenType(i))) {\r\n searchEndOffset = tokenStartOffset;\r\n }\r\n }\r\n const foundBracket = BracketsUtils.findPrevBracketInRange(prevModeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n // check that we didn't hit a bracket too far away from position\r\n if (foundBracket && foundBracket.startColumn <= position.column && position.column <= foundBracket.endColumn) {\r\n const foundBracketText = lineText.substring(foundBracket.startColumn - 1, foundBracket.endColumn - 1).toLowerCase();\r\n const r = this._matchFoundBracket(foundBracket, prevModeBrackets.textIsBracket[foundBracketText], prevModeBrackets.textIsOpenBracket[foundBracketText], null);\r\n if (r) {\r\n if (r instanceof BracketSearchCanceled) {\r\n return null;\r\n }\r\n return r;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _matchFoundBracket(foundBracket, data, isOpen, continueSearchPredicate) {\r\n if (!data) {\r\n return null;\r\n }\r\n const matched = (isOpen\r\n ? this._findMatchingBracketDown(data, foundBracket.getEndPosition(), continueSearchPredicate)\r\n : this._findMatchingBracketUp(data, foundBracket.getStartPosition(), continueSearchPredicate));\r\n if (!matched) {\r\n return null;\r\n }\r\n if (matched instanceof BracketSearchCanceled) {\r\n return matched;\r\n }\r\n return [foundBracket, matched];\r\n }\r\n _findMatchingBracketUp(bracket, position, continueSearchPredicate) {\r\n // console.log('_findMatchingBracketUp: ', 'bracket: ', JSON.stringify(bracket), 'startPosition: ', String(position));\r\n const languageId = bracket.languageIdentifier.id;\r\n const reversedBracketRegex = bracket.reversedRegex;\r\n let count = -1;\r\n let totalCallCount = 0;\r\n const searchPrevMatchingBracketInRange = (lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n if (bracket.isOpen(hitText)) {\r\n count++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n count--;\r\n }\r\n if (count === 0) {\r\n return r;\r\n }\r\n searchEndOffset = r.startColumn - 1;\r\n }\r\n return null;\r\n };\r\n for (let lineNumber = position.lineNumber; lineNumber >= 1; lineNumber--) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = tokenCount - 1;\r\n let searchStartOffset = lineText.length;\r\n let searchEndOffset = lineText.length;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex >= 0; tokenIndex--) {\r\n const searchInToken = (lineTokens.getLanguageId(tokenIndex) === languageId && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchStartOffset\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchPrevMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchPrevMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _findMatchingBracketDown(bracket, position, continueSearchPredicate) {\r\n // console.log('_findMatchingBracketDown: ', 'bracket: ', JSON.stringify(bracket), 'startPosition: ', String(position));\r\n const languageId = bracket.languageIdentifier.id;\r\n const bracketRegex = bracket.forwardRegex;\r\n let count = 1;\r\n let totalCallCount = 0;\r\n const searchNextMatchingBracketInRange = (lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findNextBracketInRange(bracketRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n if (bracket.isOpen(hitText)) {\r\n count++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n count--;\r\n }\r\n if (count === 0) {\r\n return r;\r\n }\r\n searchStartOffset = r.endColumn - 1;\r\n }\r\n return null;\r\n };\r\n const lineCount = this.getLineCount();\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const searchInToken = (lineTokens.getLanguageId(tokenIndex) === languageId && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchNextMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchNextMatchingBracketInRange(lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findPrevBracket(_position) {\r\n const position = this.validatePosition(_position);\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber >= 1; lineNumber--) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = tokenCount - 1;\r\n let searchStartOffset = lineText.length;\r\n let searchEndOffset = lineText.length;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex >= 0; tokenIndex--) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchStartOffset\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findPrevBracketInRange(modeBrackets.reversedRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findNextBracket(_position) {\r\n const position = this.validatePosition(_position);\r\n const lineCount = this.getLineCount();\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return this._toFoundBracket(modeBrackets, r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n findEnclosingBrackets(_position, maxDuration) {\r\n let continueSearchPredicate;\r\n if (typeof maxDuration === 'undefined') {\r\n continueSearchPredicate = null;\r\n }\r\n else {\r\n const startTime = Date.now();\r\n continueSearchPredicate = () => {\r\n return (Date.now() - startTime <= maxDuration);\r\n };\r\n }\r\n const position = this.validatePosition(_position);\r\n const lineCount = this.getLineCount();\r\n const savedCounts = new Map();\r\n let counts = [];\r\n const resetCounts = (languageId, modeBrackets) => {\r\n if (!savedCounts.has(languageId)) {\r\n let tmp = [];\r\n for (let i = 0, len = modeBrackets ? modeBrackets.brackets.length : 0; i < len; i++) {\r\n tmp[i] = 0;\r\n }\r\n savedCounts.set(languageId, tmp);\r\n }\r\n counts = savedCounts.get(languageId);\r\n };\r\n let totalCallCount = 0;\r\n const searchInRange = (modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset) => {\r\n while (true) {\r\n if (continueSearchPredicate && (++totalCallCount) % 100 === 0 && !continueSearchPredicate()) {\r\n return BracketSearchCanceled.INSTANCE;\r\n }\r\n const r = BracketsUtils.findNextBracketInRange(modeBrackets.forwardRegex, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (!r) {\r\n break;\r\n }\r\n const hitText = lineText.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n const bracket = modeBrackets.textIsBracket[hitText];\r\n if (bracket) {\r\n if (bracket.isOpen(hitText)) {\r\n counts[bracket.index]++;\r\n }\r\n else if (bracket.isClose(hitText)) {\r\n counts[bracket.index]--;\r\n }\r\n if (counts[bracket.index] === -1) {\r\n return this._matchFoundBracket(r, bracket, false, continueSearchPredicate);\r\n }\r\n }\r\n searchStartOffset = r.endColumn - 1;\r\n }\r\n return null;\r\n };\r\n let languageId = -1;\r\n let modeBrackets = null;\r\n for (let lineNumber = position.lineNumber; lineNumber <= lineCount; lineNumber++) {\r\n const lineTokens = this._getLineTokens(lineNumber);\r\n const tokenCount = lineTokens.getCount();\r\n const lineText = this._buffer.getLineContent(lineNumber);\r\n let tokenIndex = 0;\r\n let searchStartOffset = 0;\r\n let searchEndOffset = 0;\r\n if (lineNumber === position.lineNumber) {\r\n tokenIndex = lineTokens.findTokenIndexAtOffset(position.column - 1);\r\n searchStartOffset = position.column - 1;\r\n searchEndOffset = position.column - 1;\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n resetCounts(languageId, modeBrackets);\r\n }\r\n }\r\n let prevSearchInToken = true;\r\n for (; tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenLanguageId = lineTokens.getLanguageId(tokenIndex);\r\n if (languageId !== tokenLanguageId) {\r\n // language id change!\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n prevSearchInToken = false;\r\n }\r\n languageId = tokenLanguageId;\r\n modeBrackets = LanguageConfigurationRegistry.getBracketsSupport(languageId);\r\n resetCounts(languageId, modeBrackets);\r\n }\r\n const searchInToken = (!!modeBrackets && !ignoreBracketsInToken(lineTokens.getStandardTokenType(tokenIndex)));\r\n if (searchInToken) {\r\n // this token should be searched\r\n if (prevSearchInToken) {\r\n // the previous token should be searched, simply extend searchEndOffset\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n else {\r\n // the previous token should not be searched\r\n searchStartOffset = lineTokens.getStartOffset(tokenIndex);\r\n searchEndOffset = lineTokens.getEndOffset(tokenIndex);\r\n }\r\n }\r\n else {\r\n // this token should not be searched\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n }\r\n }\r\n prevSearchInToken = searchInToken;\r\n }\r\n if (modeBrackets && prevSearchInToken && searchStartOffset !== searchEndOffset) {\r\n const r = searchInRange(modeBrackets, lineNumber, lineText, searchStartOffset, searchEndOffset);\r\n if (r) {\r\n return stripBracketSearchCanceled(r);\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n _toFoundBracket(modeBrackets, r) {\r\n if (!r) {\r\n return null;\r\n }\r\n let text = this.getValueInRange(r);\r\n text = text.toLowerCase();\r\n let data = modeBrackets.textIsBracket[text];\r\n if (!data) {\r\n return null;\r\n }\r\n return {\r\n range: r,\r\n open: data.open,\r\n close: data.close,\r\n isOpen: modeBrackets.textIsOpenBracket[text]\r\n };\r\n }\r\n /**\r\n * Returns:\r\n * - -1 => the line consists of whitespace\r\n * - otherwise => the indent level is returned value\r\n */\r\n static computeIndentLevel(line, tabSize) {\r\n let indent = 0;\r\n let i = 0;\r\n let len = line.length;\r\n while (i < len) {\r\n let chCode = line.charCodeAt(i);\r\n if (chCode === 32 /* Space */) {\r\n indent++;\r\n }\r\n else if (chCode === 9 /* Tab */) {\r\n indent = indent - indent % tabSize + tabSize;\r\n }\r\n else {\r\n break;\r\n }\r\n i++;\r\n }\r\n if (i === len) {\r\n return -1; // line only consists of whitespace\r\n }\r\n return indent;\r\n }\r\n _computeIndentLevel(lineIndex) {\r\n return TextModel.computeIndentLevel(this._buffer.getLineContent(lineIndex + 1), this._options.tabSize);\r\n }\r\n getActiveIndentGuide(lineNumber, minLineNumber, maxLineNumber) {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n if (lineNumber < 1 || lineNumber > lineCount) {\r\n throw new Error('Illegal value for lineNumber');\r\n }\r\n const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id);\r\n const offSide = Boolean(foldingRules && foldingRules.offSide);\r\n let up_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let up_aboveContentLineIndent = -1;\r\n let up_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let up_belowContentLineIndent = -1;\r\n const up_resolveIndents = (lineNumber) => {\r\n if (up_aboveContentLineIndex !== -1 && (up_aboveContentLineIndex === -2 || up_aboveContentLineIndex > lineNumber - 1)) {\r\n up_aboveContentLineIndex = -1;\r\n up_aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n up_aboveContentLineIndex = lineIndex;\r\n up_aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (up_belowContentLineIndex === -2) {\r\n up_belowContentLineIndex = -1;\r\n up_belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n up_belowContentLineIndex = lineIndex;\r\n up_belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n let down_aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let down_aboveContentLineIndent = -1;\r\n let down_belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let down_belowContentLineIndent = -1;\r\n const down_resolveIndents = (lineNumber) => {\r\n if (down_aboveContentLineIndex === -2) {\r\n down_aboveContentLineIndex = -1;\r\n down_aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n down_aboveContentLineIndex = lineIndex;\r\n down_aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (down_belowContentLineIndex !== -1 && (down_belowContentLineIndex === -2 || down_belowContentLineIndex < lineNumber - 1)) {\r\n down_belowContentLineIndex = -1;\r\n down_belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n down_belowContentLineIndex = lineIndex;\r\n down_belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n let startLineNumber = 0;\r\n let goUp = true;\r\n let endLineNumber = 0;\r\n let goDown = true;\r\n let indent = 0;\r\n let initialIndent = 0;\r\n for (let distance = 0; goUp || goDown; distance++) {\r\n const upLineNumber = lineNumber - distance;\r\n const downLineNumber = lineNumber + distance;\r\n if (distance > 1 && (upLineNumber < 1 || upLineNumber < minLineNumber)) {\r\n goUp = false;\r\n }\r\n if (distance > 1 && (downLineNumber > lineCount || downLineNumber > maxLineNumber)) {\r\n goDown = false;\r\n }\r\n if (distance > 50000) {\r\n // stop processing\r\n goUp = false;\r\n goDown = false;\r\n }\r\n let upLineIndentLevel = -1;\r\n if (goUp) {\r\n // compute indent level going up\r\n const currentIndent = this._computeIndentLevel(upLineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n up_belowContentLineIndex = upLineNumber - 1;\r\n up_belowContentLineIndent = currentIndent;\r\n upLineIndentLevel = Math.ceil(currentIndent / this._options.indentSize);\r\n }\r\n else {\r\n up_resolveIndents(upLineNumber);\r\n upLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, up_aboveContentLineIndent, up_belowContentLineIndent);\r\n }\r\n }\r\n let downLineIndentLevel = -1;\r\n if (goDown) {\r\n // compute indent level going down\r\n const currentIndent = this._computeIndentLevel(downLineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n down_aboveContentLineIndex = downLineNumber - 1;\r\n down_aboveContentLineIndent = currentIndent;\r\n downLineIndentLevel = Math.ceil(currentIndent / this._options.indentSize);\r\n }\r\n else {\r\n down_resolveIndents(downLineNumber);\r\n downLineIndentLevel = this._getIndentLevelForWhitespaceLine(offSide, down_aboveContentLineIndent, down_belowContentLineIndent);\r\n }\r\n }\r\n if (distance === 0) {\r\n initialIndent = upLineIndentLevel;\r\n continue;\r\n }\r\n if (distance === 1) {\r\n if (downLineNumber <= lineCount && downLineIndentLevel >= 0 && initialIndent + 1 === downLineIndentLevel) {\r\n // This is the beginning of a scope, we have special handling here, since we want the\r\n // child scope indent to be active, not the parent scope\r\n goUp = false;\r\n startLineNumber = downLineNumber;\r\n endLineNumber = downLineNumber;\r\n indent = downLineIndentLevel;\r\n continue;\r\n }\r\n if (upLineNumber >= 1 && upLineIndentLevel >= 0 && upLineIndentLevel - 1 === initialIndent) {\r\n // This is the end of a scope, just like above\r\n goDown = false;\r\n startLineNumber = upLineNumber;\r\n endLineNumber = upLineNumber;\r\n indent = upLineIndentLevel;\r\n continue;\r\n }\r\n startLineNumber = lineNumber;\r\n endLineNumber = lineNumber;\r\n indent = initialIndent;\r\n if (indent === 0) {\r\n // No need to continue\r\n return { startLineNumber, endLineNumber, indent };\r\n }\r\n }\r\n if (goUp) {\r\n if (upLineIndentLevel >= indent) {\r\n startLineNumber = upLineNumber;\r\n }\r\n else {\r\n goUp = false;\r\n }\r\n }\r\n if (goDown) {\r\n if (downLineIndentLevel >= indent) {\r\n endLineNumber = downLineNumber;\r\n }\r\n else {\r\n goDown = false;\r\n }\r\n }\r\n }\r\n return { startLineNumber, endLineNumber, indent };\r\n }\r\n getLinesIndentGuides(startLineNumber, endLineNumber) {\r\n this._assertNotDisposed();\r\n const lineCount = this.getLineCount();\r\n if (startLineNumber < 1 || startLineNumber > lineCount) {\r\n throw new Error('Illegal value for startLineNumber');\r\n }\r\n if (endLineNumber < 1 || endLineNumber > lineCount) {\r\n throw new Error('Illegal value for endLineNumber');\r\n }\r\n const foldingRules = LanguageConfigurationRegistry.getFoldingRules(this._languageIdentifier.id);\r\n const offSide = Boolean(foldingRules && foldingRules.offSide);\r\n let result = new Array(endLineNumber - startLineNumber + 1);\r\n let aboveContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let aboveContentLineIndent = -1;\r\n let belowContentLineIndex = -2; /* -2 is a marker for not having computed it */\r\n let belowContentLineIndent = -1;\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let resultIndex = lineNumber - startLineNumber;\r\n const currentIndent = this._computeIndentLevel(lineNumber - 1);\r\n if (currentIndent >= 0) {\r\n // This line has content (besides whitespace)\r\n // Use the line's indent\r\n aboveContentLineIndex = lineNumber - 1;\r\n aboveContentLineIndent = currentIndent;\r\n result[resultIndex] = Math.ceil(currentIndent / this._options.indentSize);\r\n continue;\r\n }\r\n if (aboveContentLineIndex === -2) {\r\n aboveContentLineIndex = -1;\r\n aboveContentLineIndent = -1;\r\n // must find previous line with content\r\n for (let lineIndex = lineNumber - 2; lineIndex >= 0; lineIndex--) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n aboveContentLineIndex = lineIndex;\r\n aboveContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n if (belowContentLineIndex !== -1 && (belowContentLineIndex === -2 || belowContentLineIndex < lineNumber - 1)) {\r\n belowContentLineIndex = -1;\r\n belowContentLineIndent = -1;\r\n // must find next line with content\r\n for (let lineIndex = lineNumber; lineIndex < lineCount; lineIndex++) {\r\n let indent = this._computeIndentLevel(lineIndex);\r\n if (indent >= 0) {\r\n belowContentLineIndex = lineIndex;\r\n belowContentLineIndent = indent;\r\n break;\r\n }\r\n }\r\n }\r\n result[resultIndex] = this._getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent);\r\n }\r\n return result;\r\n }\r\n _getIndentLevelForWhitespaceLine(offSide, aboveContentLineIndent, belowContentLineIndent) {\r\n if (aboveContentLineIndent === -1 || belowContentLineIndent === -1) {\r\n // At the top or bottom of the file\r\n return 0;\r\n }\r\n else if (aboveContentLineIndent < belowContentLineIndent) {\r\n // we are inside the region above\r\n return (1 + Math.floor(aboveContentLineIndent / this._options.indentSize));\r\n }\r\n else if (aboveContentLineIndent === belowContentLineIndent) {\r\n // we are in between two regions\r\n return Math.ceil(belowContentLineIndent / this._options.indentSize);\r\n }\r\n else {\r\n if (offSide) {\r\n // same level as region below\r\n return Math.ceil(belowContentLineIndent / this._options.indentSize);\r\n }\r\n else {\r\n // we are inside the region that ends below\r\n return (1 + Math.floor(belowContentLineIndent / this._options.indentSize));\r\n }\r\n }\r\n }\r\n}\r\nTextModel.MODEL_SYNC_LIMIT = 50 * 1024 * 1024; // 50 MB\r\nTextModel.LARGE_FILE_SIZE_THRESHOLD = 20 * 1024 * 1024; // 20 MB;\r\nTextModel.LARGE_FILE_LINE_COUNT_THRESHOLD = 300 * 1000; // 300K lines\r\nTextModel.DEFAULT_CREATION_OPTIONS = {\r\n isForSimpleWidget: false,\r\n tabSize: EDITOR_MODEL_DEFAULTS.tabSize,\r\n indentSize: EDITOR_MODEL_DEFAULTS.indentSize,\r\n insertSpaces: EDITOR_MODEL_DEFAULTS.insertSpaces,\r\n detectIndentation: false,\r\n defaultEOL: 1 /* LF */,\r\n trimAutoWhitespace: EDITOR_MODEL_DEFAULTS.trimAutoWhitespace,\r\n largeFileOptimizations: EDITOR_MODEL_DEFAULTS.largeFileOptimizations,\r\n};\r\n//#region Decorations\r\nclass DecorationsTrees {\r\n constructor() {\r\n this._decorationsTree0 = new IntervalTree();\r\n this._decorationsTree1 = new IntervalTree();\r\n }\r\n intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId) {\r\n const r0 = this._decorationsTree0.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r1 = this._decorationsTree1.intervalSearch(start, end, filterOwnerId, filterOutValidation, cachedVersionId);\r\n return r0.concat(r1);\r\n }\r\n search(filterOwnerId, filterOutValidation, overviewRulerOnly, cachedVersionId) {\r\n if (overviewRulerOnly) {\r\n return this._decorationsTree1.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n }\r\n else {\r\n const r0 = this._decorationsTree0.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n const r1 = this._decorationsTree1.search(filterOwnerId, filterOutValidation, cachedVersionId);\r\n return r0.concat(r1);\r\n }\r\n }\r\n collectNodesFromOwner(ownerId) {\r\n const r0 = this._decorationsTree0.collectNodesFromOwner(ownerId);\r\n const r1 = this._decorationsTree1.collectNodesFromOwner(ownerId);\r\n return r0.concat(r1);\r\n }\r\n collectNodesPostOrder() {\r\n const r0 = this._decorationsTree0.collectNodesPostOrder();\r\n const r1 = this._decorationsTree1.collectNodesPostOrder();\r\n return r0.concat(r1);\r\n }\r\n insert(node) {\r\n if (getNodeIsInOverviewRuler(node)) {\r\n this._decorationsTree1.insert(node);\r\n }\r\n else {\r\n this._decorationsTree0.insert(node);\r\n }\r\n }\r\n delete(node) {\r\n if (getNodeIsInOverviewRuler(node)) {\r\n this._decorationsTree1.delete(node);\r\n }\r\n else {\r\n this._decorationsTree0.delete(node);\r\n }\r\n }\r\n resolveNode(node, cachedVersionId) {\r\n if (getNodeIsInOverviewRuler(node)) {\r\n this._decorationsTree1.resolveNode(node, cachedVersionId);\r\n }\r\n else {\r\n this._decorationsTree0.resolveNode(node, cachedVersionId);\r\n }\r\n }\r\n acceptReplace(offset, length, textLength, forceMoveMarkers) {\r\n this._decorationsTree0.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n this._decorationsTree1.acceptReplace(offset, length, textLength, forceMoveMarkers);\r\n }\r\n}\r\nfunction cleanClassName(className) {\r\n return className.replace(/[^a-z0-9\\-_]/gi, ' ');\r\n}\r\nclass DecorationOptions {\r\n constructor(options) {\r\n this.color = options.color || '';\r\n this.darkColor = options.darkColor || '';\r\n }\r\n}\r\nexport class ModelDecorationOverviewRulerOptions extends DecorationOptions {\r\n constructor(options) {\r\n super(options);\r\n this._resolvedColor = null;\r\n this.position = (typeof options.position === 'number' ? options.position : model.OverviewRulerLane.Center);\r\n }\r\n getColor(theme) {\r\n if (!this._resolvedColor) {\r\n if (theme.type !== 'light' && this.darkColor) {\r\n this._resolvedColor = this._resolveColor(this.darkColor, theme);\r\n }\r\n else {\r\n this._resolvedColor = this._resolveColor(this.color, theme);\r\n }\r\n }\r\n return this._resolvedColor;\r\n }\r\n invalidateCachedColor() {\r\n this._resolvedColor = null;\r\n }\r\n _resolveColor(color, theme) {\r\n if (typeof color === 'string') {\r\n return color;\r\n }\r\n let c = color ? theme.getColor(color.id) : null;\r\n if (!c) {\r\n return '';\r\n }\r\n return c.toString();\r\n }\r\n}\r\nexport class ModelDecorationMinimapOptions extends DecorationOptions {\r\n constructor(options) {\r\n super(options);\r\n this.position = options.position;\r\n }\r\n getColor(theme) {\r\n if (!this._resolvedColor) {\r\n if (theme.type !== 'light' && this.darkColor) {\r\n this._resolvedColor = this._resolveColor(this.darkColor, theme);\r\n }\r\n else {\r\n this._resolvedColor = this._resolveColor(this.color, theme);\r\n }\r\n }\r\n return this._resolvedColor;\r\n }\r\n invalidateCachedColor() {\r\n this._resolvedColor = undefined;\r\n }\r\n _resolveColor(color, theme) {\r\n if (typeof color === 'string') {\r\n return Color.fromHex(color);\r\n }\r\n return theme.getColor(color.id);\r\n }\r\n}\r\nexport class ModelDecorationOptions {\r\n constructor(options) {\r\n this.stickiness = options.stickiness || 0 /* AlwaysGrowsWhenTypingAtEdges */;\r\n this.zIndex = options.zIndex || 0;\r\n this.className = options.className ? cleanClassName(options.className) : null;\r\n this.hoverMessage = options.hoverMessage || null;\r\n this.glyphMarginHoverMessage = options.glyphMarginHoverMessage || null;\r\n this.isWholeLine = options.isWholeLine || false;\r\n this.showIfCollapsed = options.showIfCollapsed || false;\r\n this.collapseOnReplaceEdit = options.collapseOnReplaceEdit || false;\r\n this.overviewRuler = options.overviewRuler ? new ModelDecorationOverviewRulerOptions(options.overviewRuler) : null;\r\n this.minimap = options.minimap ? new ModelDecorationMinimapOptions(options.minimap) : null;\r\n this.glyphMarginClassName = options.glyphMarginClassName ? cleanClassName(options.glyphMarginClassName) : null;\r\n this.linesDecorationsClassName = options.linesDecorationsClassName ? cleanClassName(options.linesDecorationsClassName) : null;\r\n this.firstLineDecorationClassName = options.firstLineDecorationClassName ? cleanClassName(options.firstLineDecorationClassName) : null;\r\n this.marginClassName = options.marginClassName ? cleanClassName(options.marginClassName) : null;\r\n this.inlineClassName = options.inlineClassName ? cleanClassName(options.inlineClassName) : null;\r\n this.inlineClassNameAffectsLetterSpacing = options.inlineClassNameAffectsLetterSpacing || false;\r\n this.beforeContentClassName = options.beforeContentClassName ? cleanClassName(options.beforeContentClassName) : null;\r\n this.afterContentClassName = options.afterContentClassName ? cleanClassName(options.afterContentClassName) : null;\r\n }\r\n static register(options) {\r\n return new ModelDecorationOptions(options);\r\n }\r\n static createDynamic(options) {\r\n return new ModelDecorationOptions(options);\r\n }\r\n}\r\nModelDecorationOptions.EMPTY = ModelDecorationOptions.register({});\r\n/**\r\n * The order carefully matches the values of the enum.\r\n */\r\nconst TRACKED_RANGE_OPTIONS = [\r\n ModelDecorationOptions.register({ stickiness: 0 /* AlwaysGrowsWhenTypingAtEdges */ }),\r\n ModelDecorationOptions.register({ stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ }),\r\n ModelDecorationOptions.register({ stickiness: 2 /* GrowsOnlyWhenTypingBefore */ }),\r\n ModelDecorationOptions.register({ stickiness: 3 /* GrowsOnlyWhenTypingAfter */ }),\r\n];\r\nfunction _normalizeOptions(options) {\r\n if (options instanceof ModelDecorationOptions) {\r\n return options;\r\n }\r\n return ModelDecorationOptions.createDynamic(options);\r\n}\r\nexport class DidChangeDecorationsEmitter extends Disposable {\r\n constructor() {\r\n super();\r\n this._actual = this._register(new Emitter());\r\n this.event = this._actual.event;\r\n this._deferredCnt = 0;\r\n this._shouldFire = false;\r\n this._affectsMinimap = false;\r\n this._affectsOverviewRuler = false;\r\n }\r\n beginDeferredEmit() {\r\n this._deferredCnt++;\r\n }\r\n endDeferredEmit() {\r\n this._deferredCnt--;\r\n if (this._deferredCnt === 0) {\r\n if (this._shouldFire) {\r\n const event = {\r\n affectsMinimap: this._affectsMinimap,\r\n affectsOverviewRuler: this._affectsOverviewRuler,\r\n };\r\n this._shouldFire = false;\r\n this._affectsMinimap = false;\r\n this._affectsOverviewRuler = false;\r\n this._actual.fire(event);\r\n }\r\n }\r\n }\r\n checkAffectedAndFire(options) {\r\n if (!this._affectsMinimap) {\r\n this._affectsMinimap = options.minimap && options.minimap.position ? true : false;\r\n }\r\n if (!this._affectsOverviewRuler) {\r\n this._affectsOverviewRuler = options.overviewRuler && options.overviewRuler.color ? true : false;\r\n }\r\n this._shouldFire = true;\r\n }\r\n fire() {\r\n this._affectsMinimap = true;\r\n this._affectsOverviewRuler = true;\r\n this._shouldFire = true;\r\n }\r\n}\r\n//#endregion\r\nexport class DidChangeContentEmitter extends Disposable {\r\n constructor() {\r\n super();\r\n /**\r\n * Both `fastEvent` and `slowEvent` work the same way and contain the same events, but first we invoke `fastEvent` and then `slowEvent`.\r\n */\r\n this._fastEmitter = this._register(new Emitter());\r\n this.fastEvent = this._fastEmitter.event;\r\n this._slowEmitter = this._register(new Emitter());\r\n this.slowEvent = this._slowEmitter.event;\r\n this._deferredCnt = 0;\r\n this._deferredEvent = null;\r\n }\r\n beginDeferredEmit() {\r\n this._deferredCnt++;\r\n }\r\n endDeferredEmit(resultingSelection = null) {\r\n this._deferredCnt--;\r\n if (this._deferredCnt === 0) {\r\n if (this._deferredEvent !== null) {\r\n this._deferredEvent.rawContentChangedEvent.resultingSelection = resultingSelection;\r\n const e = this._deferredEvent;\r\n this._deferredEvent = null;\r\n this._fastEmitter.fire(e);\r\n this._slowEmitter.fire(e);\r\n }\r\n }\r\n }\r\n fire(e) {\r\n if (this._deferredCnt > 0) {\r\n if (this._deferredEvent) {\r\n this._deferredEvent = this._deferredEvent.merge(e);\r\n }\r\n else {\r\n this._deferredEvent = e;\r\n }\r\n return;\r\n }\r\n this._fastEmitter.fire(e);\r\n this._slowEmitter.fire(e);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * An event describing that a model has been reset to a new value.\r\n * @internal\r\n */\r\nexport class ModelRawFlush {\r\n constructor() {\r\n this.changeType = 1 /* Flush */;\r\n }\r\n}\r\n/**\r\n * An event describing that a line has changed in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLineChanged {\r\n constructor(lineNumber, detail) {\r\n this.changeType = 2 /* LineChanged */;\r\n this.lineNumber = lineNumber;\r\n this.detail = detail;\r\n }\r\n}\r\n/**\r\n * An event describing that line(s) have been deleted in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLinesDeleted {\r\n constructor(fromLineNumber, toLineNumber) {\r\n this.changeType = 3 /* LinesDeleted */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n }\r\n}\r\n/**\r\n * An event describing that line(s) have been inserted in a model.\r\n * @internal\r\n */\r\nexport class ModelRawLinesInserted {\r\n constructor(fromLineNumber, toLineNumber, detail) {\r\n this.changeType = 4 /* LinesInserted */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n this.detail = detail;\r\n }\r\n}\r\n/**\r\n * An event describing that a model has had its EOL changed.\r\n * @internal\r\n */\r\nexport class ModelRawEOLChanged {\r\n constructor() {\r\n this.changeType = 5 /* EOLChanged */;\r\n }\r\n}\r\n/**\r\n * An event describing a change in the text of a model.\r\n * @internal\r\n */\r\nexport class ModelRawContentChangedEvent {\r\n constructor(changes, versionId, isUndoing, isRedoing) {\r\n this.changes = changes;\r\n this.versionId = versionId;\r\n this.isUndoing = isUndoing;\r\n this.isRedoing = isRedoing;\r\n this.resultingSelection = null;\r\n }\r\n containsEvent(type) {\r\n for (let i = 0, len = this.changes.length; i < len; i++) {\r\n const change = this.changes[i];\r\n if (change.changeType === type) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n static merge(a, b) {\r\n const changes = [].concat(a.changes).concat(b.changes);\r\n const versionId = b.versionId;\r\n const isUndoing = (a.isUndoing || b.isUndoing);\r\n const isRedoing = (a.isRedoing || b.isRedoing);\r\n return new ModelRawContentChangedEvent(changes, versionId, isUndoing, isRedoing);\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class InternalModelContentChangeEvent {\r\n constructor(rawContentChangedEvent, contentChangedEvent) {\r\n this.rawContentChangedEvent = rawContentChangedEvent;\r\n this.contentChangedEvent = contentChangedEvent;\r\n }\r\n merge(other) {\r\n const rawContentChangedEvent = ModelRawContentChangedEvent.merge(this.rawContentChangedEvent, other.rawContentChangedEvent);\r\n const contentChangedEvent = InternalModelContentChangeEvent._mergeChangeEvents(this.contentChangedEvent, other.contentChangedEvent);\r\n return new InternalModelContentChangeEvent(rawContentChangedEvent, contentChangedEvent);\r\n }\r\n static _mergeChangeEvents(a, b) {\r\n const changes = [].concat(a.changes).concat(b.changes);\r\n const eol = b.eol;\r\n const versionId = b.versionId;\r\n const isUndoing = (a.isUndoing || b.isUndoing);\r\n const isRedoing = (a.isRedoing || b.isRedoing);\r\n const isFlush = (a.isFlush || b.isFlush);\r\n return {\r\n changes: changes,\r\n eol: eol,\r\n versionId: versionId,\r\n isUndoing: isUndoing,\r\n isRedoing: isRedoing,\r\n isFlush: isFlush\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { getMapForWordSeparators } from '../controller/wordCharacterClassifier.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { FindMatch } from '../model.js';\r\nconst LIMIT_FIND_COUNT = 999;\r\nexport class SearchParams {\r\n constructor(searchString, isRegex, matchCase, wordSeparators) {\r\n this.searchString = searchString;\r\n this.isRegex = isRegex;\r\n this.matchCase = matchCase;\r\n this.wordSeparators = wordSeparators;\r\n }\r\n parseSearchRequest() {\r\n if (this.searchString === '') {\r\n return null;\r\n }\r\n // Try to create a RegExp out of the params\r\n let multiline;\r\n if (this.isRegex) {\r\n multiline = isMultilineRegexSource(this.searchString);\r\n }\r\n else {\r\n multiline = (this.searchString.indexOf('\\n') >= 0);\r\n }\r\n let regex = null;\r\n try {\r\n regex = strings.createRegExp(this.searchString, this.isRegex, {\r\n matchCase: this.matchCase,\r\n wholeWord: false,\r\n multiline: multiline,\r\n global: true,\r\n unicode: true\r\n });\r\n }\r\n catch (err) {\r\n return null;\r\n }\r\n if (!regex) {\r\n return null;\r\n }\r\n let canUseSimpleSearch = (!this.isRegex && !multiline);\r\n if (canUseSimpleSearch && this.searchString.toLowerCase() !== this.searchString.toUpperCase()) {\r\n // casing might make a difference\r\n canUseSimpleSearch = this.matchCase;\r\n }\r\n return new SearchData(regex, this.wordSeparators ? getMapForWordSeparators(this.wordSeparators) : null, canUseSimpleSearch ? this.searchString : null);\r\n }\r\n}\r\nexport function isMultilineRegexSource(searchString) {\r\n if (!searchString || searchString.length === 0) {\r\n return false;\r\n }\r\n for (let i = 0, len = searchString.length; i < len; i++) {\r\n const chCode = searchString.charCodeAt(i);\r\n if (chCode === 92 /* Backslash */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a \\\r\n break;\r\n }\r\n const nextChCode = searchString.charCodeAt(i);\r\n if (nextChCode === 110 /* n */ || nextChCode === 114 /* r */ || nextChCode === 87 /* W */ || nextChCode === 119 /* w */) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nexport class SearchData {\r\n constructor(regex, wordSeparators, simpleSearch) {\r\n this.regex = regex;\r\n this.wordSeparators = wordSeparators;\r\n this.simpleSearch = simpleSearch;\r\n }\r\n}\r\nexport function createFindMatch(range, rawMatches, captureMatches) {\r\n if (!captureMatches) {\r\n return new FindMatch(range, null);\r\n }\r\n let matches = [];\r\n for (let i = 0, len = rawMatches.length; i < len; i++) {\r\n matches[i] = rawMatches[i];\r\n }\r\n return new FindMatch(range, matches);\r\n}\r\nclass LineFeedCounter {\r\n constructor(text) {\r\n let lineFeedsOffsets = [];\r\n let lineFeedsOffsetsLen = 0;\r\n for (let i = 0, textLen = text.length; i < textLen; i++) {\r\n if (text.charCodeAt(i) === 10 /* LineFeed */) {\r\n lineFeedsOffsets[lineFeedsOffsetsLen++] = i;\r\n }\r\n }\r\n this._lineFeedsOffsets = lineFeedsOffsets;\r\n }\r\n findLineFeedCountBeforeOffset(offset) {\r\n const lineFeedsOffsets = this._lineFeedsOffsets;\r\n let min = 0;\r\n let max = lineFeedsOffsets.length - 1;\r\n if (max === -1) {\r\n // no line feeds\r\n return 0;\r\n }\r\n if (offset <= lineFeedsOffsets[0]) {\r\n // before first line feed\r\n return 0;\r\n }\r\n while (min < max) {\r\n const mid = min + ((max - min) / 2 >> 0);\r\n if (lineFeedsOffsets[mid] >= offset) {\r\n max = mid - 1;\r\n }\r\n else {\r\n if (lineFeedsOffsets[mid + 1] >= offset) {\r\n // bingo!\r\n min = mid;\r\n max = mid;\r\n }\r\n else {\r\n min = mid + 1;\r\n }\r\n }\r\n }\r\n return min + 1;\r\n }\r\n}\r\nexport class TextModelSearch {\r\n static findMatches(model, searchParams, searchRange, captureMatches, limitResultCount) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return [];\r\n }\r\n if (searchData.regex.multiline) {\r\n return this._doFindMatchesMultiline(model, searchRange, new Searcher(searchData.wordSeparators, searchData.regex), captureMatches, limitResultCount);\r\n }\r\n return this._doFindMatchesLineByLine(model, searchRange, searchData, captureMatches, limitResultCount);\r\n }\r\n /**\r\n * Multiline search always executes on the lines concatenated with \\n.\r\n * We must therefore compensate for the count of \\n in case the model is CRLF\r\n */\r\n static _getMultilineMatchRange(model, deltaOffset, text, lfCounter, matchIndex, match0) {\r\n let startOffset;\r\n let lineFeedCountBeforeMatch = 0;\r\n if (lfCounter) {\r\n lineFeedCountBeforeMatch = lfCounter.findLineFeedCountBeforeOffset(matchIndex);\r\n startOffset = deltaOffset + matchIndex + lineFeedCountBeforeMatch /* add as many \\r as there were \\n */;\r\n }\r\n else {\r\n startOffset = deltaOffset + matchIndex;\r\n }\r\n let endOffset;\r\n if (lfCounter) {\r\n let lineFeedCountBeforeEndOfMatch = lfCounter.findLineFeedCountBeforeOffset(matchIndex + match0.length);\r\n let lineFeedCountInMatch = lineFeedCountBeforeEndOfMatch - lineFeedCountBeforeMatch;\r\n endOffset = startOffset + match0.length + lineFeedCountInMatch /* add as many \\r as there were \\n */;\r\n }\r\n else {\r\n endOffset = startOffset + match0.length;\r\n }\r\n const startPosition = model.getPositionAt(startOffset);\r\n const endPosition = model.getPositionAt(endOffset);\r\n return new Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column);\r\n }\r\n static _doFindMatchesMultiline(model, searchRange, searcher, captureMatches, limitResultCount) {\r\n const deltaOffset = model.getOffsetAt(searchRange.getStartPosition());\r\n // We always execute multiline search over the lines joined with \\n\r\n // This makes it that \\n will match the EOL for both CRLF and LF models\r\n // We compensate for offset errors in `_getMultilineMatchRange`\r\n const text = model.getValueInRange(searchRange, 1 /* LF */);\r\n const lfCounter = (model.getEOL() === '\\r\\n' ? new LineFeedCounter(text) : null);\r\n const result = [];\r\n let counter = 0;\r\n let m;\r\n searcher.reset(0);\r\n while ((m = searcher.next(text))) {\r\n result[counter++] = createFindMatch(this._getMultilineMatchRange(model, deltaOffset, text, lfCounter, m.index, m[0]), m, captureMatches);\r\n if (counter >= limitResultCount) {\r\n return result;\r\n }\r\n }\r\n return result;\r\n }\r\n static _doFindMatchesLineByLine(model, searchRange, searchData, captureMatches, limitResultCount) {\r\n const result = [];\r\n let resultLen = 0;\r\n // Early case for a search range that starts & stops on the same line number\r\n if (searchRange.startLineNumber === searchRange.endLineNumber) {\r\n const text = model.getLineContent(searchRange.startLineNumber).substring(searchRange.startColumn - 1, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.startLineNumber, searchRange.startColumn - 1, resultLen, result, captureMatches, limitResultCount);\r\n return result;\r\n }\r\n // Collect results from first line\r\n const text = model.getLineContent(searchRange.startLineNumber).substring(searchRange.startColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.startLineNumber, searchRange.startColumn - 1, resultLen, result, captureMatches, limitResultCount);\r\n // Collect results from middle lines\r\n for (let lineNumber = searchRange.startLineNumber + 1; lineNumber < searchRange.endLineNumber && resultLen < limitResultCount; lineNumber++) {\r\n resultLen = this._findMatchesInLine(searchData, model.getLineContent(lineNumber), lineNumber, 0, resultLen, result, captureMatches, limitResultCount);\r\n }\r\n // Collect results from last line\r\n if (resultLen < limitResultCount) {\r\n const text = model.getLineContent(searchRange.endLineNumber).substring(0, searchRange.endColumn - 1);\r\n resultLen = this._findMatchesInLine(searchData, text, searchRange.endLineNumber, 0, resultLen, result, captureMatches, limitResultCount);\r\n }\r\n return result;\r\n }\r\n static _findMatchesInLine(searchData, text, lineNumber, deltaOffset, resultLen, result, captureMatches, limitResultCount) {\r\n const wordSeparators = searchData.wordSeparators;\r\n if (!captureMatches && searchData.simpleSearch) {\r\n const searchString = searchData.simpleSearch;\r\n const searchStringLen = searchString.length;\r\n const textLength = text.length;\r\n let lastMatchIndex = -searchStringLen;\r\n while ((lastMatchIndex = text.indexOf(searchString, lastMatchIndex + searchStringLen)) !== -1) {\r\n if (!wordSeparators || isValidMatch(wordSeparators, text, textLength, lastMatchIndex, searchStringLen)) {\r\n result[resultLen++] = new FindMatch(new Range(lineNumber, lastMatchIndex + 1 + deltaOffset, lineNumber, lastMatchIndex + 1 + searchStringLen + deltaOffset), null);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n }\r\n return resultLen;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n let m;\r\n // Reset regex to search from the beginning\r\n searcher.reset(0);\r\n do {\r\n m = searcher.next(text);\r\n if (m) {\r\n result[resultLen++] = createFindMatch(new Range(lineNumber, m.index + 1 + deltaOffset, lineNumber, m.index + 1 + m[0].length + deltaOffset), m, captureMatches);\r\n if (resultLen >= limitResultCount) {\r\n return resultLen;\r\n }\r\n }\r\n } while (m);\r\n return resultLen;\r\n }\r\n static findNextMatch(model, searchParams, searchStart, captureMatches) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n if (searchData.regex.multiline) {\r\n return this._doFindNextMatchMultiline(model, searchStart, searcher, captureMatches);\r\n }\r\n return this._doFindNextMatchLineByLine(model, searchStart, searcher, captureMatches);\r\n }\r\n static _doFindNextMatchMultiline(model, searchStart, searcher, captureMatches) {\r\n const searchTextStart = new Position(searchStart.lineNumber, 1);\r\n const deltaOffset = model.getOffsetAt(searchTextStart);\r\n const lineCount = model.getLineCount();\r\n // We always execute multiline search over the lines joined with \\n\r\n // This makes it that \\n will match the EOL for both CRLF and LF models\r\n // We compensate for offset errors in `_getMultilineMatchRange`\r\n const text = model.getValueInRange(new Range(searchTextStart.lineNumber, searchTextStart.column, lineCount, model.getLineMaxColumn(lineCount)), 1 /* LF */);\r\n const lfCounter = (model.getEOL() === '\\r\\n' ? new LineFeedCounter(text) : null);\r\n searcher.reset(searchStart.column - 1);\r\n let m = searcher.next(text);\r\n if (m) {\r\n return createFindMatch(this._getMultilineMatchRange(model, deltaOffset, text, lfCounter, m.index, m[0]), m, captureMatches);\r\n }\r\n if (searchStart.lineNumber !== 1 || searchStart.column !== 1) {\r\n // Try again from the top\r\n return this._doFindNextMatchMultiline(model, new Position(1, 1), searcher, captureMatches);\r\n }\r\n return null;\r\n }\r\n static _doFindNextMatchLineByLine(model, searchStart, searcher, captureMatches) {\r\n const lineCount = model.getLineCount();\r\n const startLineNumber = searchStart.lineNumber;\r\n // Look in first line\r\n const text = model.getLineContent(startLineNumber);\r\n const r = this._findFirstMatchInLine(searcher, text, startLineNumber, searchStart.column, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n for (let i = 1; i <= lineCount; i++) {\r\n const lineIndex = (startLineNumber + i - 1) % lineCount;\r\n const text = model.getLineContent(lineIndex + 1);\r\n const r = this._findFirstMatchInLine(searcher, text, lineIndex + 1, 1, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findFirstMatchInLine(searcher, text, lineNumber, fromColumn, captureMatches) {\r\n // Set regex to search from column\r\n searcher.reset(fromColumn - 1);\r\n const m = searcher.next(text);\r\n if (m) {\r\n return createFindMatch(new Range(lineNumber, m.index + 1, lineNumber, m.index + 1 + m[0].length), m, captureMatches);\r\n }\r\n return null;\r\n }\r\n static findPreviousMatch(model, searchParams, searchStart, captureMatches) {\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return null;\r\n }\r\n const searcher = new Searcher(searchData.wordSeparators, searchData.regex);\r\n if (searchData.regex.multiline) {\r\n return this._doFindPreviousMatchMultiline(model, searchStart, searcher, captureMatches);\r\n }\r\n return this._doFindPreviousMatchLineByLine(model, searchStart, searcher, captureMatches);\r\n }\r\n static _doFindPreviousMatchMultiline(model, searchStart, searcher, captureMatches) {\r\n const matches = this._doFindMatchesMultiline(model, new Range(1, 1, searchStart.lineNumber, searchStart.column), searcher, captureMatches, 10 * LIMIT_FIND_COUNT);\r\n if (matches.length > 0) {\r\n return matches[matches.length - 1];\r\n }\r\n const lineCount = model.getLineCount();\r\n if (searchStart.lineNumber !== lineCount || searchStart.column !== model.getLineMaxColumn(lineCount)) {\r\n // Try again with all content\r\n return this._doFindPreviousMatchMultiline(model, new Position(lineCount, model.getLineMaxColumn(lineCount)), searcher, captureMatches);\r\n }\r\n return null;\r\n }\r\n static _doFindPreviousMatchLineByLine(model, searchStart, searcher, captureMatches) {\r\n const lineCount = model.getLineCount();\r\n const startLineNumber = searchStart.lineNumber;\r\n // Look in first line\r\n const text = model.getLineContent(startLineNumber).substring(0, searchStart.column - 1);\r\n const r = this._findLastMatchInLine(searcher, text, startLineNumber, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n for (let i = 1; i <= lineCount; i++) {\r\n const lineIndex = (lineCount + startLineNumber - i - 1) % lineCount;\r\n const text = model.getLineContent(lineIndex + 1);\r\n const r = this._findLastMatchInLine(searcher, text, lineIndex + 1, captureMatches);\r\n if (r) {\r\n return r;\r\n }\r\n }\r\n return null;\r\n }\r\n static _findLastMatchInLine(searcher, text, lineNumber, captureMatches) {\r\n let bestResult = null;\r\n let m;\r\n searcher.reset(0);\r\n while ((m = searcher.next(text))) {\r\n bestResult = createFindMatch(new Range(lineNumber, m.index + 1, lineNumber, m.index + 1 + m[0].length), m, captureMatches);\r\n }\r\n return bestResult;\r\n }\r\n}\r\nfunction leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n if (matchStartIndex === 0) {\r\n // Match starts at start of string\r\n return true;\r\n }\r\n const charBefore = text.charCodeAt(matchStartIndex - 1);\r\n if (wordSeparators.get(charBefore) !== 0 /* Regular */) {\r\n // The character before the match is a word separator\r\n return true;\r\n }\r\n if (charBefore === 13 /* CarriageReturn */ || charBefore === 10 /* LineFeed */) {\r\n // The character before the match is line break or carriage return.\r\n return true;\r\n }\r\n if (matchLength > 0) {\r\n const firstCharInMatch = text.charCodeAt(matchStartIndex);\r\n if (wordSeparators.get(firstCharInMatch) !== 0 /* Regular */) {\r\n // The first character inside the match is a word separator\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n if (matchStartIndex + matchLength === textLength) {\r\n // Match ends at end of string\r\n return true;\r\n }\r\n const charAfter = text.charCodeAt(matchStartIndex + matchLength);\r\n if (wordSeparators.get(charAfter) !== 0 /* Regular */) {\r\n // The character after the match is a word separator\r\n return true;\r\n }\r\n if (charAfter === 13 /* CarriageReturn */ || charAfter === 10 /* LineFeed */) {\r\n // The character after the match is line break or carriage return.\r\n return true;\r\n }\r\n if (matchLength > 0) {\r\n const lastCharInMatch = text.charCodeAt(matchStartIndex + matchLength - 1);\r\n if (wordSeparators.get(lastCharInMatch) !== 0 /* Regular */) {\r\n // The last character in the match is a word separator\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isValidMatch(wordSeparators, text, textLength, matchStartIndex, matchLength) {\r\n return (leftIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength)\r\n && rightIsWordBounday(wordSeparators, text, textLength, matchStartIndex, matchLength));\r\n}\r\nexport class Searcher {\r\n constructor(wordSeparators, searchRegex) {\r\n this._wordSeparators = wordSeparators;\r\n this._searchRegex = searchRegex;\r\n this._prevMatchStartIndex = -1;\r\n this._prevMatchLength = 0;\r\n }\r\n reset(lastIndex) {\r\n this._searchRegex.lastIndex = lastIndex;\r\n this._prevMatchStartIndex = -1;\r\n this._prevMatchLength = 0;\r\n }\r\n next(text) {\r\n const textLength = text.length;\r\n let m;\r\n do {\r\n if (this._prevMatchStartIndex + this._prevMatchLength === textLength) {\r\n // Reached the end of the line\r\n return null;\r\n }\r\n m = this._searchRegex.exec(text);\r\n if (!m) {\r\n return null;\r\n }\r\n const matchStartIndex = m.index;\r\n const matchLength = m[0].length;\r\n if (matchStartIndex === this._prevMatchStartIndex && matchLength === this._prevMatchLength) {\r\n if (matchLength === 0) {\r\n // the search result is an empty string and won't advance `regex.lastIndex`, so `regex.exec` will stuck here\r\n // we attempt to recover from that by advancing by two if surrogate pair found and by one otherwise\r\n if (strings.getNextCodePoint(text, textLength, this._searchRegex.lastIndex) > 0xFFFF) {\r\n this._searchRegex.lastIndex += 2;\r\n }\r\n else {\r\n this._searchRegex.lastIndex += 1;\r\n }\r\n continue;\r\n }\r\n // Exit early if the regex matches the same range twice\r\n return null;\r\n }\r\n this._prevMatchStartIndex = matchStartIndex;\r\n this._prevMatchLength = matchLength;\r\n if (!this._wordSeparators || isValidMatch(this._wordSeparators, text, textLength, matchStartIndex, matchLength)) {\r\n return m;\r\n }\r\n } while (m);\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { Position } from '../core/position.js';\r\nimport { TokenizationRegistry } from '../modes.js';\r\nimport { nullTokenize2 } from '../modes/nullMode.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { MultilineTokensBuilder, countEOL } from './tokensStore.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nexport class TokenizationStateStore {\r\n constructor() {\r\n this._beginState = [];\r\n this._valid = [];\r\n this._len = 0;\r\n this._invalidLineStartIndex = 0;\r\n }\r\n _reset(initialState) {\r\n this._beginState = [];\r\n this._valid = [];\r\n this._len = 0;\r\n this._invalidLineStartIndex = 0;\r\n if (initialState) {\r\n this._setBeginState(0, initialState);\r\n }\r\n }\r\n flush(initialState) {\r\n this._reset(initialState);\r\n }\r\n get invalidLineStartIndex() {\r\n return this._invalidLineStartIndex;\r\n }\r\n _invalidateLine(lineIndex) {\r\n if (lineIndex < this._len) {\r\n this._valid[lineIndex] = false;\r\n }\r\n if (lineIndex < this._invalidLineStartIndex) {\r\n this._invalidLineStartIndex = lineIndex;\r\n }\r\n }\r\n _isValid(lineIndex) {\r\n if (lineIndex < this._len) {\r\n return this._valid[lineIndex];\r\n }\r\n return false;\r\n }\r\n getBeginState(lineIndex) {\r\n if (lineIndex < this._len) {\r\n return this._beginState[lineIndex];\r\n }\r\n return null;\r\n }\r\n _ensureLine(lineIndex) {\r\n while (lineIndex >= this._len) {\r\n this._beginState[this._len] = null;\r\n this._valid[this._len] = false;\r\n this._len++;\r\n }\r\n }\r\n _deleteLines(start, deleteCount) {\r\n if (deleteCount === 0) {\r\n return;\r\n }\r\n if (start + deleteCount > this._len) {\r\n deleteCount = this._len - start;\r\n }\r\n this._beginState.splice(start, deleteCount);\r\n this._valid.splice(start, deleteCount);\r\n this._len -= deleteCount;\r\n }\r\n _insertLines(insertIndex, insertCount) {\r\n if (insertCount === 0) {\r\n return;\r\n }\r\n let beginState = [];\r\n let valid = [];\r\n for (let i = 0; i < insertCount; i++) {\r\n beginState[i] = null;\r\n valid[i] = false;\r\n }\r\n this._beginState = arrays.arrayInsert(this._beginState, insertIndex, beginState);\r\n this._valid = arrays.arrayInsert(this._valid, insertIndex, valid);\r\n this._len += insertCount;\r\n }\r\n _setValid(lineIndex, valid) {\r\n this._ensureLine(lineIndex);\r\n this._valid[lineIndex] = valid;\r\n }\r\n _setBeginState(lineIndex, beginState) {\r\n this._ensureLine(lineIndex);\r\n this._beginState[lineIndex] = beginState;\r\n }\r\n setEndState(linesLength, lineIndex, endState) {\r\n this._setValid(lineIndex, true);\r\n this._invalidLineStartIndex = lineIndex + 1;\r\n // Check if this was the last line\r\n if (lineIndex === linesLength - 1) {\r\n return;\r\n }\r\n // Check if the end state has changed\r\n const previousEndState = this.getBeginState(lineIndex + 1);\r\n if (previousEndState === null || !endState.equals(previousEndState)) {\r\n this._setBeginState(lineIndex + 1, endState);\r\n this._invalidateLine(lineIndex + 1);\r\n return;\r\n }\r\n // Perhaps we can skip tokenizing some lines...\r\n let i = lineIndex + 1;\r\n while (i < linesLength) {\r\n if (!this._isValid(i)) {\r\n break;\r\n }\r\n i++;\r\n }\r\n this._invalidLineStartIndex = i;\r\n }\r\n setFakeTokens(lineIndex) {\r\n this._setValid(lineIndex, false);\r\n }\r\n //#region Editing\r\n applyEdits(range, eolCount) {\r\n const deletingLinesCnt = range.endLineNumber - range.startLineNumber;\r\n const insertingLinesCnt = eolCount;\r\n const editingLinesCnt = Math.min(deletingLinesCnt, insertingLinesCnt);\r\n for (let j = editingLinesCnt; j >= 0; j--) {\r\n this._invalidateLine(range.startLineNumber + j - 1);\r\n }\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount);\r\n }\r\n _acceptDeleteRange(range) {\r\n const firstLineIndex = range.startLineNumber - 1;\r\n if (firstLineIndex >= this._len) {\r\n return;\r\n }\r\n this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n _acceptInsertText(position, eolCount) {\r\n const lineIndex = position.lineNumber - 1;\r\n if (lineIndex >= this._len) {\r\n return;\r\n }\r\n this._insertLines(position.lineNumber, eolCount);\r\n }\r\n}\r\nexport class TextModelTokenization extends Disposable {\r\n constructor(textModel) {\r\n super();\r\n this._isDisposed = false;\r\n this._textModel = textModel;\r\n this._tokenizationStateStore = new TokenizationStateStore();\r\n this._tokenizationSupport = null;\r\n this._register(TokenizationRegistry.onDidChange((e) => {\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n if (e.changedLanguages.indexOf(languageIdentifier.language) === -1) {\r\n return;\r\n }\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }));\r\n this._register(this._textModel.onDidChangeRawContentFast((e) => {\r\n if (e.containsEvent(1 /* Flush */)) {\r\n this._resetTokenizationState();\r\n return;\r\n }\r\n }));\r\n this._register(this._textModel.onDidChangeContentFast((e) => {\r\n for (let i = 0, len = e.changes.length; i < len; i++) {\r\n const change = e.changes[i];\r\n const [eolCount] = countEOL(change.text);\r\n this._tokenizationStateStore.applyEdits(change.range, eolCount);\r\n }\r\n this._beginBackgroundTokenization();\r\n }));\r\n this._register(this._textModel.onDidChangeAttached(() => {\r\n this._beginBackgroundTokenization();\r\n }));\r\n this._register(this._textModel.onDidChangeLanguage(() => {\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }));\r\n this._resetTokenizationState();\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n super.dispose();\r\n }\r\n _resetTokenizationState() {\r\n const [tokenizationSupport, initialState] = initializeTokenization(this._textModel);\r\n this._tokenizationSupport = tokenizationSupport;\r\n this._tokenizationStateStore.flush(initialState);\r\n this._beginBackgroundTokenization();\r\n }\r\n _beginBackgroundTokenization() {\r\n if (this._textModel.isAttachedToEditor() && this._hasLinesToTokenize()) {\r\n platform.setImmediate(() => {\r\n if (this._isDisposed) {\r\n // disposed in the meantime\r\n return;\r\n }\r\n this._revalidateTokensNow();\r\n });\r\n }\r\n }\r\n _revalidateTokensNow(toLineNumber = this._textModel.getLineCount()) {\r\n const MAX_ALLOWED_TIME = 1;\r\n const builder = new MultilineTokensBuilder();\r\n const sw = StopWatch.create(false);\r\n while (this._hasLinesToTokenize()) {\r\n if (sw.elapsed() > MAX_ALLOWED_TIME) {\r\n // Stop if MAX_ALLOWED_TIME is reached\r\n break;\r\n }\r\n const tokenizedLineNumber = this._tokenizeOneInvalidLine(builder);\r\n if (tokenizedLineNumber >= toLineNumber) {\r\n break;\r\n }\r\n }\r\n this._beginBackgroundTokenization();\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n tokenizeViewport(startLineNumber, endLineNumber) {\r\n const builder = new MultilineTokensBuilder();\r\n this._tokenizeViewport(builder, startLineNumber, endLineNumber);\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n reset() {\r\n this._resetTokenizationState();\r\n this._textModel.clearTokens();\r\n }\r\n forceTokenization(lineNumber) {\r\n const builder = new MultilineTokensBuilder();\r\n this._updateTokensUntilLine(builder, lineNumber);\r\n this._textModel.setTokens(builder.tokens);\r\n }\r\n isCheapToTokenize(lineNumber) {\r\n if (!this._tokenizationSupport) {\r\n return true;\r\n }\r\n const firstInvalidLineNumber = this._tokenizationStateStore.invalidLineStartIndex + 1;\r\n if (lineNumber > firstInvalidLineNumber) {\r\n return false;\r\n }\r\n if (lineNumber < firstInvalidLineNumber) {\r\n return true;\r\n }\r\n if (this._textModel.getLineLength(lineNumber) < 2048 /* CHEAP_TOKENIZATION_LENGTH_LIMIT */) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n _hasLinesToTokenize() {\r\n if (!this._tokenizationSupport) {\r\n return false;\r\n }\r\n return (this._tokenizationStateStore.invalidLineStartIndex < this._textModel.getLineCount());\r\n }\r\n _tokenizeOneInvalidLine(builder) {\r\n if (!this._hasLinesToTokenize()) {\r\n return this._textModel.getLineCount() + 1;\r\n }\r\n const lineNumber = this._tokenizationStateStore.invalidLineStartIndex + 1;\r\n this._updateTokensUntilLine(builder, lineNumber);\r\n return lineNumber;\r\n }\r\n _updateTokensUntilLine(builder, lineNumber) {\r\n if (!this._tokenizationSupport) {\r\n return;\r\n }\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n const linesLength = this._textModel.getLineCount();\r\n const endLineIndex = lineNumber - 1;\r\n // Validate all states up to and including endLineIndex\r\n for (let lineIndex = this._tokenizationStateStore.invalidLineStartIndex; lineIndex <= endLineIndex; lineIndex++) {\r\n const text = this._textModel.getLineContent(lineIndex + 1);\r\n const lineStartState = this._tokenizationStateStore.getBeginState(lineIndex);\r\n const r = safeTokenize(languageIdentifier, this._tokenizationSupport, text, lineStartState);\r\n builder.add(lineIndex + 1, r.tokens);\r\n this._tokenizationStateStore.setEndState(linesLength, lineIndex, r.endState);\r\n lineIndex = this._tokenizationStateStore.invalidLineStartIndex - 1; // -1 because the outer loop increments it\r\n }\r\n }\r\n _tokenizeViewport(builder, startLineNumber, endLineNumber) {\r\n if (!this._tokenizationSupport) {\r\n // nothing to do\r\n return;\r\n }\r\n if (endLineNumber <= this._tokenizationStateStore.invalidLineStartIndex) {\r\n // nothing to do\r\n return;\r\n }\r\n if (startLineNumber <= this._tokenizationStateStore.invalidLineStartIndex) {\r\n // tokenization has reached the viewport start...\r\n this._updateTokensUntilLine(builder, endLineNumber);\r\n return;\r\n }\r\n let nonWhitespaceColumn = this._textModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n let fakeLines = [];\r\n let initialState = null;\r\n for (let i = startLineNumber - 1; nonWhitespaceColumn > 0 && i >= 1; i--) {\r\n let newNonWhitespaceIndex = this._textModel.getLineFirstNonWhitespaceColumn(i);\r\n if (newNonWhitespaceIndex === 0) {\r\n continue;\r\n }\r\n if (newNonWhitespaceIndex < nonWhitespaceColumn) {\r\n initialState = this._tokenizationStateStore.getBeginState(i - 1);\r\n if (initialState) {\r\n break;\r\n }\r\n fakeLines.push(this._textModel.getLineContent(i));\r\n nonWhitespaceColumn = newNonWhitespaceIndex;\r\n }\r\n }\r\n if (!initialState) {\r\n initialState = this._tokenizationSupport.getInitialState();\r\n }\r\n const languageIdentifier = this._textModel.getLanguageIdentifier();\r\n let state = initialState;\r\n for (let i = fakeLines.length - 1; i >= 0; i--) {\r\n let r = safeTokenize(languageIdentifier, this._tokenizationSupport, fakeLines[i], state);\r\n state = r.endState;\r\n }\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let text = this._textModel.getLineContent(lineNumber);\r\n let r = safeTokenize(languageIdentifier, this._tokenizationSupport, text, state);\r\n builder.add(lineNumber, r.tokens);\r\n this._tokenizationStateStore.setFakeTokens(lineNumber - 1);\r\n state = r.endState;\r\n }\r\n }\r\n}\r\nfunction initializeTokenization(textModel) {\r\n const languageIdentifier = textModel.getLanguageIdentifier();\r\n let tokenizationSupport = (textModel.isTooLargeForTokenization()\r\n ? null\r\n : TokenizationRegistry.get(languageIdentifier.language));\r\n let initialState = null;\r\n if (tokenizationSupport) {\r\n try {\r\n initialState = tokenizationSupport.getInitialState();\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n tokenizationSupport = null;\r\n }\r\n }\r\n return [tokenizationSupport, initialState];\r\n}\r\nfunction safeTokenize(languageIdentifier, tokenizationSupport, text, state) {\r\n let r = null;\r\n if (tokenizationSupport) {\r\n try {\r\n r = tokenizationSupport.tokenize2(text, state.clone(), 0);\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n if (!r) {\r\n r = nullTokenize2(languageIdentifier.id, text, state, 0);\r\n }\r\n LineTokens.convertToEndOffset(r.tokens, text.length);\r\n return r;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { TokenMetadata } from '../modes.js';\r\nexport function countEOL(text) {\r\n let eolCount = 0;\r\n let firstLineLength = 0;\r\n let lastLineStart = 0;\r\n let eol = 0 /* Unknown */;\r\n for (let i = 0, len = text.length; i < len; i++) {\r\n const chr = text.charCodeAt(i);\r\n if (chr === 13 /* CarriageReturn */) {\r\n if (eolCount === 0) {\r\n firstLineLength = i;\r\n }\r\n eolCount++;\r\n if (i + 1 < len && text.charCodeAt(i + 1) === 10 /* LineFeed */) {\r\n // \\r\\n... case\r\n eol |= 2 /* CRLF */;\r\n i++; // skip \\n\r\n }\r\n else {\r\n // \\r... case\r\n eol |= 3 /* Invalid */;\r\n }\r\n lastLineStart = i + 1;\r\n }\r\n else if (chr === 10 /* LineFeed */) {\r\n // \\n... case\r\n eol |= 1 /* LF */;\r\n if (eolCount === 0) {\r\n firstLineLength = i;\r\n }\r\n eolCount++;\r\n lastLineStart = i + 1;\r\n }\r\n }\r\n if (eolCount === 0) {\r\n firstLineLength = text.length;\r\n }\r\n return [eolCount, firstLineLength, text.length - lastLineStart, eol];\r\n}\r\nfunction getDefaultMetadata(topLevelLanguageId) {\r\n return ((topLevelLanguageId << 0 /* LANGUAGEID_OFFSET */)\r\n | (0 /* Other */ << 8 /* TOKEN_TYPE_OFFSET */)\r\n | (0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n}\r\nconst EMPTY_LINE_TOKENS = (new Uint32Array(0)).buffer;\r\nexport class MultilineTokensBuilder {\r\n constructor() {\r\n this.tokens = [];\r\n }\r\n add(lineNumber, lineTokens) {\r\n if (this.tokens.length > 0) {\r\n const last = this.tokens[this.tokens.length - 1];\r\n const lastLineNumber = last.startLineNumber + last.tokens.length - 1;\r\n if (lastLineNumber + 1 === lineNumber) {\r\n // append\r\n last.tokens.push(lineTokens);\r\n return;\r\n }\r\n }\r\n this.tokens.push(new MultilineTokens(lineNumber, [lineTokens]));\r\n }\r\n}\r\nexport class SparseEncodedTokens {\r\n constructor(tokens) {\r\n this._tokens = tokens;\r\n this._tokenCount = tokens.length / 4;\r\n }\r\n toString(startLineNumber) {\r\n let pieces = [];\r\n for (let i = 0; i < this._tokenCount; i++) {\r\n pieces.push(`(${this._getDeltaLine(i) + startLineNumber},${this._getStartCharacter(i)}-${this._getEndCharacter(i)})`);\r\n }\r\n return `[${pieces.join(',')}]`;\r\n }\r\n getMaxDeltaLine() {\r\n const tokenCount = this._getTokenCount();\r\n if (tokenCount === 0) {\r\n return -1;\r\n }\r\n return this._getDeltaLine(tokenCount - 1);\r\n }\r\n getRange() {\r\n const tokenCount = this._getTokenCount();\r\n if (tokenCount === 0) {\r\n return null;\r\n }\r\n const startChar = this._getStartCharacter(0);\r\n const maxDeltaLine = this._getDeltaLine(tokenCount - 1);\r\n const endChar = this._getEndCharacter(tokenCount - 1);\r\n return new Range(0, startChar + 1, maxDeltaLine, endChar + 1);\r\n }\r\n _getTokenCount() {\r\n return this._tokenCount;\r\n }\r\n _getDeltaLine(tokenIndex) {\r\n return this._tokens[4 * tokenIndex];\r\n }\r\n _getStartCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 1];\r\n }\r\n _getEndCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 2];\r\n }\r\n isEmpty() {\r\n return (this._getTokenCount() === 0);\r\n }\r\n getLineTokens(deltaLine) {\r\n let low = 0;\r\n let high = this._getTokenCount() - 1;\r\n while (low < high) {\r\n const mid = low + Math.floor((high - low) / 2);\r\n const midDeltaLine = this._getDeltaLine(mid);\r\n if (midDeltaLine < deltaLine) {\r\n low = mid + 1;\r\n }\r\n else if (midDeltaLine > deltaLine) {\r\n high = mid - 1;\r\n }\r\n else {\r\n let min = mid;\r\n while (min > low && this._getDeltaLine(min - 1) === deltaLine) {\r\n min--;\r\n }\r\n let max = mid;\r\n while (max < high && this._getDeltaLine(max + 1) === deltaLine) {\r\n max++;\r\n }\r\n return new LineTokens2(this._tokens.subarray(4 * min, 4 * max + 4));\r\n }\r\n }\r\n if (this._getDeltaLine(low) === deltaLine) {\r\n return new LineTokens2(this._tokens.subarray(4 * low, 4 * low + 4));\r\n }\r\n return null;\r\n }\r\n clear() {\r\n this._tokenCount = 0;\r\n }\r\n removeTokens(startDeltaLine, startChar, endDeltaLine, endChar) {\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n let newTokenCount = 0;\r\n let hasDeletedTokens = false;\r\n let firstDeltaLine = 0;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n const tokenDeltaLine = tokens[srcOffset];\r\n const tokenStartCharacter = tokens[srcOffset + 1];\r\n const tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if ((tokenDeltaLine > startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter >= startChar))\r\n && (tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter <= endChar))) {\r\n hasDeletedTokens = true;\r\n }\r\n else {\r\n if (newTokenCount === 0) {\r\n firstDeltaLine = tokenDeltaLine;\r\n }\r\n if (hasDeletedTokens) {\r\n // must move the token to the left\r\n const destOffset = 4 * newTokenCount;\r\n tokens[destOffset] = tokenDeltaLine - firstDeltaLine;\r\n tokens[destOffset + 1] = tokenStartCharacter;\r\n tokens[destOffset + 2] = tokenEndCharacter;\r\n tokens[destOffset + 3] = tokenMetadata;\r\n }\r\n newTokenCount++;\r\n }\r\n }\r\n this._tokenCount = newTokenCount;\r\n return firstDeltaLine;\r\n }\r\n split(startDeltaLine, startChar, endDeltaLine, endChar) {\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n let aTokens = [];\r\n let bTokens = [];\r\n let destTokens = aTokens;\r\n let destOffset = 0;\r\n let destFirstDeltaLine = 0;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n const tokenDeltaLine = tokens[srcOffset];\r\n const tokenStartCharacter = tokens[srcOffset + 1];\r\n const tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if ((tokenDeltaLine > startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter >= startChar))) {\r\n if ((tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter <= endChar))) {\r\n // this token is touching the range\r\n continue;\r\n }\r\n else {\r\n // this token is after the range\r\n if (destTokens !== bTokens) {\r\n // this token is the first token after the range\r\n destTokens = bTokens;\r\n destOffset = 0;\r\n destFirstDeltaLine = tokenDeltaLine;\r\n }\r\n }\r\n }\r\n destTokens[destOffset++] = tokenDeltaLine - destFirstDeltaLine;\r\n destTokens[destOffset++] = tokenStartCharacter;\r\n destTokens[destOffset++] = tokenEndCharacter;\r\n destTokens[destOffset++] = tokenMetadata;\r\n }\r\n return [new SparseEncodedTokens(new Uint32Array(aTokens)), new SparseEncodedTokens(new Uint32Array(bTokens)), destFirstDeltaLine];\r\n }\r\n acceptDeleteRange(horizontalShiftForFirstLineTokens, startDeltaLine, startCharacter, endDeltaLine, endCharacter) {\r\n // This is a bit complex, here are the cases I used to think about this:\r\n //\r\n // 1. The token starts before the deletion range\r\n // 1a. The token is completely before the deletion range\r\n // -----------\r\n // xxxxxxxxxxx\r\n // 1b. The token starts before, the deletion range ends after the token\r\n // -----------\r\n // xxxxxxxxxxx\r\n // 1c. The token starts before, the deletion range ends precisely with the token\r\n // ---------------\r\n // xxxxxxxx\r\n // 1d. The token starts before, the deletion range is inside the token\r\n // ---------------\r\n // xxxxx\r\n //\r\n // 2. The token starts at the same position with the deletion range\r\n // 2a. The token starts at the same position, and ends inside the deletion range\r\n // -------\r\n // xxxxxxxxxxx\r\n // 2b. The token starts at the same position, and ends at the same position as the deletion range\r\n // ----------\r\n // xxxxxxxxxx\r\n // 2c. The token starts at the same position, and ends after the deletion range\r\n // -------------\r\n // xxxxxxx\r\n //\r\n // 3. The token starts inside the deletion range\r\n // 3a. The token is inside the deletion range\r\n // -------\r\n // xxxxxxxxxxxxx\r\n // 3b. The token starts inside the deletion range, and ends at the same position as the deletion range\r\n // ----------\r\n // xxxxxxxxxxxxx\r\n // 3c. The token starts inside the deletion range, and ends after the deletion range\r\n // ------------\r\n // xxxxxxxxxxx\r\n //\r\n // 4. The token starts after the deletion range\r\n // -----------\r\n // xxxxxxxx\r\n //\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n const deletedLineCount = (endDeltaLine - startDeltaLine);\r\n let newTokenCount = 0;\r\n let hasDeletedTokens = false;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const srcOffset = 4 * i;\r\n let tokenDeltaLine = tokens[srcOffset];\r\n let tokenStartCharacter = tokens[srcOffset + 1];\r\n let tokenEndCharacter = tokens[srcOffset + 2];\r\n const tokenMetadata = tokens[srcOffset + 3];\r\n if (tokenDeltaLine < startDeltaLine || (tokenDeltaLine === startDeltaLine && tokenEndCharacter <= startCharacter)) {\r\n // 1a. The token is completely before the deletion range\r\n // => nothing to do\r\n newTokenCount++;\r\n continue;\r\n }\r\n else if (tokenDeltaLine === startDeltaLine && tokenStartCharacter < startCharacter) {\r\n // 1b, 1c, 1d\r\n // => the token survives, but it needs to shrink\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 1d. The token starts before, the deletion range is inside the token\r\n // => the token shrinks by the deletion character count\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n // 1b. The token starts before, the deletion range ends after the token\r\n // 1c. The token starts before, the deletion range ends precisely with the token\r\n // => the token shrinks its ending to the deletion start\r\n tokenEndCharacter = startCharacter;\r\n }\r\n }\r\n else if (tokenDeltaLine === startDeltaLine && tokenStartCharacter === startCharacter) {\r\n // 2a, 2b, 2c\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 2c. The token starts at the same position, and ends after the deletion range\r\n // => the token shrinks by the deletion character count\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n // 2a. The token starts at the same position, and ends inside the deletion range\r\n // 2b. The token starts at the same position, and ends at the same position as the deletion range\r\n // => the token is deleted\r\n hasDeletedTokens = true;\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine < endDeltaLine || (tokenDeltaLine === endDeltaLine && tokenStartCharacter < endCharacter)) {\r\n // 3a, 3b, 3c\r\n if (tokenDeltaLine === endDeltaLine && tokenEndCharacter > endCharacter) {\r\n // 3c. The token starts inside the deletion range, and ends after the deletion range\r\n // => the token moves left and shrinks\r\n if (tokenDeltaLine === startDeltaLine) {\r\n // the deletion started on the same line as the token\r\n // => the token moves left and shrinks\r\n tokenStartCharacter = startCharacter;\r\n tokenEndCharacter = tokenStartCharacter + (tokenEndCharacter - endCharacter);\r\n }\r\n else {\r\n // the deletion started on a line above the token\r\n // => the token moves to the beginning of the line\r\n tokenStartCharacter = 0;\r\n tokenEndCharacter = tokenStartCharacter + (tokenEndCharacter - endCharacter);\r\n }\r\n }\r\n else {\r\n // 3a. The token is inside the deletion range\r\n // 3b. The token starts inside the deletion range, and ends at the same position as the deletion range\r\n // => the token is deleted\r\n hasDeletedTokens = true;\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine > endDeltaLine) {\r\n // 4. (partial) The token starts after the deletion range, on a line below...\r\n if (deletedLineCount === 0 && !hasDeletedTokens) {\r\n // early stop, there is no need to walk all the tokens and do nothing...\r\n newTokenCount = tokenCount;\r\n break;\r\n }\r\n tokenDeltaLine -= deletedLineCount;\r\n }\r\n else if (tokenDeltaLine === endDeltaLine && tokenStartCharacter >= endCharacter) {\r\n // 4. (continued) The token starts after the deletion range, on the last line where a deletion occurs\r\n if (horizontalShiftForFirstLineTokens && tokenDeltaLine === 0) {\r\n tokenStartCharacter += horizontalShiftForFirstLineTokens;\r\n tokenEndCharacter += horizontalShiftForFirstLineTokens;\r\n }\r\n tokenDeltaLine -= deletedLineCount;\r\n tokenStartCharacter -= (endCharacter - startCharacter);\r\n tokenEndCharacter -= (endCharacter - startCharacter);\r\n }\r\n else {\r\n throw new Error(`Not possible!`);\r\n }\r\n const destOffset = 4 * newTokenCount;\r\n tokens[destOffset] = tokenDeltaLine;\r\n tokens[destOffset + 1] = tokenStartCharacter;\r\n tokens[destOffset + 2] = tokenEndCharacter;\r\n tokens[destOffset + 3] = tokenMetadata;\r\n newTokenCount++;\r\n }\r\n this._tokenCount = newTokenCount;\r\n }\r\n acceptInsertText(deltaLine, character, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n // Here are the cases I used to think about this:\r\n //\r\n // 1. The token is completely before the insertion point\r\n // ----------- |\r\n // 2. The token ends precisely at the insertion point\r\n // -----------|\r\n // 3. The token contains the insertion point\r\n // -----|------\r\n // 4. The token starts precisely at the insertion point\r\n // |-----------\r\n // 5. The token is completely after the insertion point\r\n // | -----------\r\n //\r\n const isInsertingPreciselyOneWordCharacter = (eolCount === 0\r\n && firstLineLength === 1\r\n && ((firstCharCode >= 48 /* Digit0 */ && firstCharCode <= 57 /* Digit9 */)\r\n || (firstCharCode >= 65 /* A */ && firstCharCode <= 90 /* Z */)\r\n || (firstCharCode >= 97 /* a */ && firstCharCode <= 122 /* z */)));\r\n const tokens = this._tokens;\r\n const tokenCount = this._tokenCount;\r\n for (let i = 0; i < tokenCount; i++) {\r\n const offset = 4 * i;\r\n let tokenDeltaLine = tokens[offset];\r\n let tokenStartCharacter = tokens[offset + 1];\r\n let tokenEndCharacter = tokens[offset + 2];\r\n if (tokenDeltaLine < deltaLine || (tokenDeltaLine === deltaLine && tokenEndCharacter < character)) {\r\n // 1. The token is completely before the insertion point\r\n // => nothing to do\r\n continue;\r\n }\r\n else if (tokenDeltaLine === deltaLine && tokenEndCharacter === character) {\r\n // 2. The token ends precisely at the insertion point\r\n // => expand the end character only if inserting precisely one character that is a word character\r\n if (isInsertingPreciselyOneWordCharacter) {\r\n tokenEndCharacter += 1;\r\n }\r\n else {\r\n continue;\r\n }\r\n }\r\n else if (tokenDeltaLine === deltaLine && tokenStartCharacter < character && character < tokenEndCharacter) {\r\n // 3. The token contains the insertion point\r\n if (eolCount === 0) {\r\n // => just expand the end character\r\n tokenEndCharacter += firstLineLength;\r\n }\r\n else {\r\n // => cut off the token\r\n tokenEndCharacter = character;\r\n }\r\n }\r\n else {\r\n // 4. or 5.\r\n if (tokenDeltaLine === deltaLine && tokenStartCharacter === character) {\r\n // 4. The token starts precisely at the insertion point\r\n // => grow the token (by keeping its start constant) only if inserting precisely one character that is a word character\r\n // => otherwise behave as in case 5.\r\n if (isInsertingPreciselyOneWordCharacter) {\r\n continue;\r\n }\r\n }\r\n // => the token must move and keep its size constant\r\n if (tokenDeltaLine === deltaLine) {\r\n tokenDeltaLine += eolCount;\r\n // this token is on the line where the insertion is taking place\r\n if (eolCount === 0) {\r\n tokenStartCharacter += firstLineLength;\r\n tokenEndCharacter += firstLineLength;\r\n }\r\n else {\r\n const tokenLength = tokenEndCharacter - tokenStartCharacter;\r\n tokenStartCharacter = lastLineLength + (tokenStartCharacter - character);\r\n tokenEndCharacter = tokenStartCharacter + tokenLength;\r\n }\r\n }\r\n else {\r\n tokenDeltaLine += eolCount;\r\n }\r\n }\r\n tokens[offset] = tokenDeltaLine;\r\n tokens[offset + 1] = tokenStartCharacter;\r\n tokens[offset + 2] = tokenEndCharacter;\r\n }\r\n }\r\n}\r\nexport class LineTokens2 {\r\n constructor(tokens) {\r\n this._tokens = tokens;\r\n }\r\n getCount() {\r\n return this._tokens.length / 4;\r\n }\r\n getStartCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 1];\r\n }\r\n getEndCharacter(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 2];\r\n }\r\n getMetadata(tokenIndex) {\r\n return this._tokens[4 * tokenIndex + 3];\r\n }\r\n}\r\nexport class MultilineTokens2 {\r\n constructor(startLineNumber, tokens) {\r\n this.startLineNumber = startLineNumber;\r\n this.tokens = tokens;\r\n this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine();\r\n }\r\n toString() {\r\n return this.tokens.toString(this.startLineNumber);\r\n }\r\n _updateEndLineNumber() {\r\n this.endLineNumber = this.startLineNumber + this.tokens.getMaxDeltaLine();\r\n }\r\n isEmpty() {\r\n return this.tokens.isEmpty();\r\n }\r\n getLineTokens(lineNumber) {\r\n if (this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber) {\r\n return this.tokens.getLineTokens(lineNumber - this.startLineNumber);\r\n }\r\n return null;\r\n }\r\n getRange() {\r\n const deltaRange = this.tokens.getRange();\r\n if (!deltaRange) {\r\n return deltaRange;\r\n }\r\n return new Range(this.startLineNumber + deltaRange.startLineNumber, deltaRange.startColumn, this.startLineNumber + deltaRange.endLineNumber, deltaRange.endColumn);\r\n }\r\n removeTokens(range) {\r\n const startLineIndex = range.startLineNumber - this.startLineNumber;\r\n const endLineIndex = range.endLineNumber - this.startLineNumber;\r\n this.startLineNumber += this.tokens.removeTokens(startLineIndex, range.startColumn - 1, endLineIndex, range.endColumn - 1);\r\n this._updateEndLineNumber();\r\n }\r\n split(range) {\r\n // split tokens to two:\r\n // a) all the tokens before `range`\r\n // b) all the tokens after `range`\r\n const startLineIndex = range.startLineNumber - this.startLineNumber;\r\n const endLineIndex = range.endLineNumber - this.startLineNumber;\r\n const [a, b, bDeltaLine] = this.tokens.split(startLineIndex, range.startColumn - 1, endLineIndex, range.endColumn - 1);\r\n return [new MultilineTokens2(this.startLineNumber, a), new MultilineTokens2(this.startLineNumber + bDeltaLine, b)];\r\n }\r\n applyEdit(range, text) {\r\n const [eolCount, firstLineLength, lastLineLength] = countEOL(text);\r\n this.acceptEdit(range, eolCount, firstLineLength, lastLineLength, text.length > 0 ? text.charCodeAt(0) : 0 /* Null */);\r\n }\r\n acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n this._updateEndLineNumber();\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n const firstLineIndex = range.startLineNumber - this.startLineNumber;\r\n const lastLineIndex = range.endLineNumber - this.startLineNumber;\r\n if (lastLineIndex < 0) {\r\n // this deletion occurs entirely before this block, so we only need to adjust line numbers\r\n const deletedLinesCount = lastLineIndex - firstLineIndex;\r\n this.startLineNumber -= deletedLinesCount;\r\n return;\r\n }\r\n const tokenMaxDeltaLine = this.tokens.getMaxDeltaLine();\r\n if (firstLineIndex >= tokenMaxDeltaLine + 1) {\r\n // this deletion occurs entirely after this block, so there is nothing to do\r\n return;\r\n }\r\n if (firstLineIndex < 0 && lastLineIndex >= tokenMaxDeltaLine + 1) {\r\n // this deletion completely encompasses this block\r\n this.startLineNumber = 0;\r\n this.tokens.clear();\r\n return;\r\n }\r\n if (firstLineIndex < 0) {\r\n const deletedBefore = -firstLineIndex;\r\n this.startLineNumber -= deletedBefore;\r\n this.tokens.acceptDeleteRange(range.startColumn - 1, 0, 0, lastLineIndex, range.endColumn - 1);\r\n }\r\n else {\r\n this.tokens.acceptDeleteRange(0, firstLineIndex, range.startColumn - 1, lastLineIndex, range.endColumn - 1);\r\n }\r\n }\r\n _acceptInsertText(position, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n if (eolCount === 0 && firstLineLength === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n const lineIndex = position.lineNumber - this.startLineNumber;\r\n if (lineIndex < 0) {\r\n // this insertion occurs before this block, so we only need to adjust line numbers\r\n this.startLineNumber += eolCount;\r\n return;\r\n }\r\n const tokenMaxDeltaLine = this.tokens.getMaxDeltaLine();\r\n if (lineIndex >= tokenMaxDeltaLine + 1) {\r\n // this insertion occurs after this block, so there is nothing to do\r\n return;\r\n }\r\n this.tokens.acceptInsertText(lineIndex, position.column - 1, eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n }\r\n}\r\nexport class MultilineTokens {\r\n constructor(startLineNumber, tokens) {\r\n this.startLineNumber = startLineNumber;\r\n this.tokens = tokens;\r\n }\r\n}\r\nfunction toUint32Array(arr) {\r\n if (arr instanceof Uint32Array) {\r\n return arr;\r\n }\r\n else {\r\n return new Uint32Array(arr);\r\n }\r\n}\r\nexport class TokensStore2 {\r\n constructor() {\r\n this._pieces = [];\r\n this._isComplete = false;\r\n }\r\n flush() {\r\n this._pieces = [];\r\n this._isComplete = false;\r\n }\r\n set(pieces, isComplete) {\r\n this._pieces = pieces || [];\r\n this._isComplete = isComplete;\r\n }\r\n setPartial(_range, pieces) {\r\n // console.log(`setPartial ${_range} ${pieces.map(p => p.toString()).join(', ')}`);\r\n let range = _range;\r\n if (pieces.length > 0) {\r\n const _firstRange = pieces[0].getRange();\r\n const _lastRange = pieces[pieces.length - 1].getRange();\r\n if (!_firstRange || !_lastRange) {\r\n return _range;\r\n }\r\n range = _range.plusRange(_firstRange).plusRange(_lastRange);\r\n }\r\n let insertPosition = null;\r\n for (let i = 0, len = this._pieces.length; i < len; i++) {\r\n const piece = this._pieces[i];\r\n if (piece.endLineNumber < range.startLineNumber) {\r\n // this piece is before the range\r\n continue;\r\n }\r\n if (piece.startLineNumber > range.endLineNumber) {\r\n // this piece is after the range, so mark the spot before this piece\r\n // as a good insertion position and stop looping\r\n insertPosition = insertPosition || { index: i };\r\n break;\r\n }\r\n // this piece might intersect with the range\r\n piece.removeTokens(range);\r\n if (piece.isEmpty()) {\r\n // remove the piece if it became empty\r\n this._pieces.splice(i, 1);\r\n i--;\r\n len--;\r\n continue;\r\n }\r\n if (piece.endLineNumber < range.startLineNumber) {\r\n // after removal, this piece is before the range\r\n continue;\r\n }\r\n if (piece.startLineNumber > range.endLineNumber) {\r\n // after removal, this piece is after the range\r\n insertPosition = insertPosition || { index: i };\r\n continue;\r\n }\r\n // after removal, this piece contains the range\r\n const [a, b] = piece.split(range);\r\n if (a.isEmpty()) {\r\n // this piece is actually after the range\r\n insertPosition = insertPosition || { index: i };\r\n continue;\r\n }\r\n if (b.isEmpty()) {\r\n // this piece is actually before the range\r\n continue;\r\n }\r\n this._pieces.splice(i, 1, a, b);\r\n i++;\r\n len++;\r\n insertPosition = insertPosition || { index: i };\r\n }\r\n insertPosition = insertPosition || { index: this._pieces.length };\r\n if (pieces.length > 0) {\r\n this._pieces = arrays.arrayInsert(this._pieces, insertPosition.index, pieces);\r\n }\r\n // console.log(`I HAVE ${this._pieces.length} pieces`);\r\n // console.log(`${this._pieces.map(p => p.toString()).join('\\n')}`);\r\n return range;\r\n }\r\n isComplete() {\r\n return this._isComplete;\r\n }\r\n addSemanticTokens(lineNumber, aTokens) {\r\n const pieces = this._pieces;\r\n if (pieces.length === 0) {\r\n return aTokens;\r\n }\r\n const pieceIndex = TokensStore2._findFirstPieceWithLine(pieces, lineNumber);\r\n const bTokens = pieces[pieceIndex].getLineTokens(lineNumber);\r\n if (!bTokens) {\r\n return aTokens;\r\n }\r\n const aLen = aTokens.getCount();\r\n const bLen = bTokens.getCount();\r\n let aIndex = 0;\r\n let result = [], resultLen = 0;\r\n let lastEndOffset = 0;\r\n const emitToken = (endOffset, metadata) => {\r\n if (endOffset === lastEndOffset) {\r\n return;\r\n }\r\n lastEndOffset = endOffset;\r\n result[resultLen++] = endOffset;\r\n result[resultLen++] = metadata;\r\n };\r\n for (let bIndex = 0; bIndex < bLen; bIndex++) {\r\n const bStartCharacter = bTokens.getStartCharacter(bIndex);\r\n const bEndCharacter = bTokens.getEndCharacter(bIndex);\r\n const bMetadata = bTokens.getMetadata(bIndex);\r\n const bMask = (((bMetadata & 1 /* SEMANTIC_USE_ITALIC */) ? 2048 /* ITALIC_MASK */ : 0)\r\n | ((bMetadata & 2 /* SEMANTIC_USE_BOLD */) ? 4096 /* BOLD_MASK */ : 0)\r\n | ((bMetadata & 4 /* SEMANTIC_USE_UNDERLINE */) ? 8192 /* UNDERLINE_MASK */ : 0)\r\n | ((bMetadata & 8 /* SEMANTIC_USE_FOREGROUND */) ? 8372224 /* FOREGROUND_MASK */ : 0)\r\n | ((bMetadata & 16 /* SEMANTIC_USE_BACKGROUND */) ? 4286578688 /* BACKGROUND_MASK */ : 0)) >>> 0;\r\n const aMask = (~bMask) >>> 0;\r\n // push any token from `a` that is before `b`\r\n while (aIndex < aLen && aTokens.getEndOffset(aIndex) <= bStartCharacter) {\r\n emitToken(aTokens.getEndOffset(aIndex), aTokens.getMetadata(aIndex));\r\n aIndex++;\r\n }\r\n // push the token from `a` if it intersects the token from `b`\r\n if (aIndex < aLen && aTokens.getStartOffset(aIndex) < bStartCharacter) {\r\n emitToken(bStartCharacter, aTokens.getMetadata(aIndex));\r\n }\r\n // skip any tokens from `a` that are contained inside `b`\r\n while (aIndex < aLen && aTokens.getEndOffset(aIndex) < bEndCharacter) {\r\n emitToken(aTokens.getEndOffset(aIndex), (aTokens.getMetadata(aIndex) & aMask) | (bMetadata & bMask));\r\n aIndex++;\r\n }\r\n if (aIndex < aLen) {\r\n emitToken(bEndCharacter, (aTokens.getMetadata(aIndex) & aMask) | (bMetadata & bMask));\r\n if (aTokens.getEndOffset(aIndex) === bEndCharacter) {\r\n // `a` ends exactly at the same spot as `b`!\r\n aIndex++;\r\n }\r\n }\r\n else {\r\n const aMergeIndex = Math.min(Math.max(0, aIndex - 1), aLen - 1);\r\n // push the token from `b`\r\n emitToken(bEndCharacter, (aTokens.getMetadata(aMergeIndex) & aMask) | (bMetadata & bMask));\r\n }\r\n }\r\n // push the remaining tokens from `a`\r\n while (aIndex < aLen) {\r\n emitToken(aTokens.getEndOffset(aIndex), aTokens.getMetadata(aIndex));\r\n aIndex++;\r\n }\r\n return new LineTokens(new Uint32Array(result), aTokens.getLineContent());\r\n }\r\n static _findFirstPieceWithLine(pieces, lineNumber) {\r\n let low = 0;\r\n let high = pieces.length - 1;\r\n while (low < high) {\r\n let mid = low + Math.floor((high - low) / 2);\r\n if (pieces[mid].endLineNumber < lineNumber) {\r\n low = mid + 1;\r\n }\r\n else if (pieces[mid].startLineNumber > lineNumber) {\r\n high = mid - 1;\r\n }\r\n else {\r\n while (mid > low && pieces[mid - 1].startLineNumber <= lineNumber && lineNumber <= pieces[mid - 1].endLineNumber) {\r\n mid--;\r\n }\r\n return mid;\r\n }\r\n }\r\n return low;\r\n }\r\n //#region Editing\r\n acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode) {\r\n for (const piece of this._pieces) {\r\n piece.acceptEdit(range, eolCount, firstLineLength, lastLineLength, firstCharCode);\r\n }\r\n }\r\n}\r\nexport class TokensStore {\r\n constructor() {\r\n this._lineTokens = [];\r\n this._len = 0;\r\n }\r\n flush() {\r\n this._lineTokens = [];\r\n this._len = 0;\r\n }\r\n getTokens(topLevelLanguageId, lineIndex, lineText) {\r\n let rawLineTokens = null;\r\n if (lineIndex < this._len) {\r\n rawLineTokens = this._lineTokens[lineIndex];\r\n }\r\n if (rawLineTokens !== null && rawLineTokens !== EMPTY_LINE_TOKENS) {\r\n return new LineTokens(toUint32Array(rawLineTokens), lineText);\r\n }\r\n let lineTokens = new Uint32Array(2);\r\n lineTokens[0] = lineText.length;\r\n lineTokens[1] = getDefaultMetadata(topLevelLanguageId);\r\n return new LineTokens(lineTokens, lineText);\r\n }\r\n static _massageTokens(topLevelLanguageId, lineTextLength, _tokens) {\r\n const tokens = _tokens ? toUint32Array(_tokens) : null;\r\n if (lineTextLength === 0) {\r\n let hasDifferentLanguageId = false;\r\n if (tokens && tokens.length > 1) {\r\n hasDifferentLanguageId = (TokenMetadata.getLanguageId(tokens[1]) !== topLevelLanguageId);\r\n }\r\n if (!hasDifferentLanguageId) {\r\n return EMPTY_LINE_TOKENS;\r\n }\r\n }\r\n if (!tokens || tokens.length === 0) {\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = lineTextLength;\r\n tokens[1] = getDefaultMetadata(topLevelLanguageId);\r\n return tokens.buffer;\r\n }\r\n // Ensure the last token covers the end of the text\r\n tokens[tokens.length - 2] = lineTextLength;\r\n if (tokens.byteOffset === 0 && tokens.byteLength === tokens.buffer.byteLength) {\r\n // Store directly the ArrayBuffer pointer to save an object\r\n return tokens.buffer;\r\n }\r\n return tokens;\r\n }\r\n _ensureLine(lineIndex) {\r\n while (lineIndex >= this._len) {\r\n this._lineTokens[this._len] = null;\r\n this._len++;\r\n }\r\n }\r\n _deleteLines(start, deleteCount) {\r\n if (deleteCount === 0) {\r\n return;\r\n }\r\n if (start + deleteCount > this._len) {\r\n deleteCount = this._len - start;\r\n }\r\n this._lineTokens.splice(start, deleteCount);\r\n this._len -= deleteCount;\r\n }\r\n _insertLines(insertIndex, insertCount) {\r\n if (insertCount === 0) {\r\n return;\r\n }\r\n let lineTokens = [];\r\n for (let i = 0; i < insertCount; i++) {\r\n lineTokens[i] = null;\r\n }\r\n this._lineTokens = arrays.arrayInsert(this._lineTokens, insertIndex, lineTokens);\r\n this._len += insertCount;\r\n }\r\n setTokens(topLevelLanguageId, lineIndex, lineTextLength, _tokens, checkEquality) {\r\n const tokens = TokensStore._massageTokens(topLevelLanguageId, lineTextLength, _tokens);\r\n this._ensureLine(lineIndex);\r\n const oldTokens = this._lineTokens[lineIndex];\r\n this._lineTokens[lineIndex] = tokens;\r\n if (checkEquality) {\r\n return !TokensStore._equals(oldTokens, tokens);\r\n }\r\n return false;\r\n }\r\n static _equals(_a, _b) {\r\n if (!_a || !_b) {\r\n return !_a && !_b;\r\n }\r\n const a = toUint32Array(_a);\r\n const b = toUint32Array(_b);\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (a[i] !== b[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n //#region Editing\r\n acceptEdit(range, eolCount, firstLineLength) {\r\n this._acceptDeleteRange(range);\r\n this._acceptInsertText(new Position(range.startLineNumber, range.startColumn), eolCount, firstLineLength);\r\n }\r\n _acceptDeleteRange(range) {\r\n const firstLineIndex = range.startLineNumber - 1;\r\n if (firstLineIndex >= this._len) {\r\n return;\r\n }\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n this._lineTokens[firstLineIndex] = TokensStore._delete(this._lineTokens[firstLineIndex], range.startColumn - 1, range.endColumn - 1);\r\n return;\r\n }\r\n this._lineTokens[firstLineIndex] = TokensStore._deleteEnding(this._lineTokens[firstLineIndex], range.startColumn - 1);\r\n const lastLineIndex = range.endLineNumber - 1;\r\n let lastLineTokens = null;\r\n if (lastLineIndex < this._len) {\r\n lastLineTokens = TokensStore._deleteBeginning(this._lineTokens[lastLineIndex], range.endColumn - 1);\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._lineTokens[firstLineIndex] = TokensStore._append(this._lineTokens[firstLineIndex], lastLineTokens);\r\n // Delete middle lines\r\n this._deleteLines(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n _acceptInsertText(position, eolCount, firstLineLength) {\r\n if (eolCount === 0 && firstLineLength === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n const lineIndex = position.lineNumber - 1;\r\n if (lineIndex >= this._len) {\r\n return;\r\n }\r\n if (eolCount === 0) {\r\n // Inserting text on one line\r\n this._lineTokens[lineIndex] = TokensStore._insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);\r\n return;\r\n }\r\n this._lineTokens[lineIndex] = TokensStore._deleteEnding(this._lineTokens[lineIndex], position.column - 1);\r\n this._lineTokens[lineIndex] = TokensStore._insert(this._lineTokens[lineIndex], position.column - 1, firstLineLength);\r\n this._insertLines(position.lineNumber, eolCount);\r\n }\r\n static _deleteBeginning(lineTokens, toChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n return TokensStore._delete(lineTokens, 0, toChIndex);\r\n }\r\n static _deleteEnding(lineTokens, fromChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const lineTextLength = tokens[tokens.length - 2];\r\n return TokensStore._delete(lineTokens, fromChIndex, lineTextLength);\r\n }\r\n static _delete(lineTokens, fromChIndex, toChIndex) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS || fromChIndex === toChIndex) {\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const tokensCount = (tokens.length >>> 1);\r\n // special case: deleting everything\r\n if (fromChIndex === 0 && tokens[tokens.length - 2] === toChIndex) {\r\n return EMPTY_LINE_TOKENS;\r\n }\r\n const fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, fromChIndex);\r\n const fromTokenStartOffset = (fromTokenIndex > 0 ? tokens[(fromTokenIndex - 1) << 1] : 0);\r\n const fromTokenEndOffset = tokens[fromTokenIndex << 1];\r\n if (toChIndex < fromTokenEndOffset) {\r\n // the delete range is inside a single token\r\n const delta = (toChIndex - fromChIndex);\r\n for (let i = fromTokenIndex; i < tokensCount; i++) {\r\n tokens[i << 1] -= delta;\r\n }\r\n return lineTokens;\r\n }\r\n let dest;\r\n let lastEnd;\r\n if (fromTokenStartOffset !== fromChIndex) {\r\n tokens[fromTokenIndex << 1] = fromChIndex;\r\n dest = ((fromTokenIndex + 1) << 1);\r\n lastEnd = fromChIndex;\r\n }\r\n else {\r\n dest = (fromTokenIndex << 1);\r\n lastEnd = fromTokenStartOffset;\r\n }\r\n const delta = (toChIndex - fromChIndex);\r\n for (let tokenIndex = fromTokenIndex + 1; tokenIndex < tokensCount; tokenIndex++) {\r\n const tokenEndOffset = tokens[tokenIndex << 1] - delta;\r\n if (tokenEndOffset > lastEnd) {\r\n tokens[dest++] = tokenEndOffset;\r\n tokens[dest++] = tokens[(tokenIndex << 1) + 1];\r\n lastEnd = tokenEndOffset;\r\n }\r\n }\r\n if (dest === tokens.length) {\r\n // nothing to trim\r\n return lineTokens;\r\n }\r\n let tmp = new Uint32Array(dest);\r\n tmp.set(tokens.subarray(0, dest), 0);\r\n return tmp.buffer;\r\n }\r\n static _append(lineTokens, _otherTokens) {\r\n if (_otherTokens === EMPTY_LINE_TOKENS) {\r\n return lineTokens;\r\n }\r\n if (lineTokens === EMPTY_LINE_TOKENS) {\r\n return _otherTokens;\r\n }\r\n if (lineTokens === null) {\r\n return lineTokens;\r\n }\r\n if (_otherTokens === null) {\r\n // cannot determine combined line length...\r\n return null;\r\n }\r\n const myTokens = toUint32Array(lineTokens);\r\n const otherTokens = toUint32Array(_otherTokens);\r\n const otherTokensCount = (otherTokens.length >>> 1);\r\n let result = new Uint32Array(myTokens.length + otherTokens.length);\r\n result.set(myTokens, 0);\r\n let dest = myTokens.length;\r\n const delta = myTokens[myTokens.length - 2];\r\n for (let i = 0; i < otherTokensCount; i++) {\r\n result[dest++] = otherTokens[(i << 1)] + delta;\r\n result[dest++] = otherTokens[(i << 1) + 1];\r\n }\r\n return result.buffer;\r\n }\r\n static _insert(lineTokens, chIndex, textLength) {\r\n if (lineTokens === null || lineTokens === EMPTY_LINE_TOKENS) {\r\n // nothing to do\r\n return lineTokens;\r\n }\r\n const tokens = toUint32Array(lineTokens);\r\n const tokensCount = (tokens.length >>> 1);\r\n let fromTokenIndex = LineTokens.findIndexInTokensArray(tokens, chIndex);\r\n if (fromTokenIndex > 0) {\r\n const fromTokenStartOffset = tokens[(fromTokenIndex - 1) << 1];\r\n if (fromTokenStartOffset === chIndex) {\r\n fromTokenIndex--;\r\n }\r\n }\r\n for (let tokenIndex = fromTokenIndex; tokenIndex < tokensCount; tokenIndex++) {\r\n tokens[tokenIndex << 1] += textLength;\r\n }\r\n return lineTokens;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\r\n/**\r\n * Create a word definition regular expression based on default word separators.\r\n * Optionally provide allowed separators that should be included in words.\r\n *\r\n * The default would look like this:\r\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\r\n */\r\nfunction createWordRegExp(allowInWords = '') {\r\n let source = '(-?\\\\d*\\\\.\\\\d\\\\w*)|([^';\r\n for (const sep of USUAL_WORD_SEPARATORS) {\r\n if (allowInWords.indexOf(sep) >= 0) {\r\n continue;\r\n }\r\n source += '\\\\' + sep;\r\n }\r\n source += '\\\\s]+)';\r\n return new RegExp(source, 'g');\r\n}\r\n// catches numbers (including floating numbers) in the first group, and alphanum in the second\r\nexport const DEFAULT_WORD_REGEXP = createWordRegExp();\r\nexport function ensureValidWordDefinition(wordDefinition) {\r\n let result = DEFAULT_WORD_REGEXP;\r\n if (wordDefinition && (wordDefinition instanceof RegExp)) {\r\n if (!wordDefinition.global) {\r\n let flags = 'g';\r\n if (wordDefinition.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (wordDefinition.multiline) {\r\n flags += 'm';\r\n }\r\n if (wordDefinition.unicode) {\r\n flags += 'u';\r\n }\r\n result = new RegExp(wordDefinition.source, flags);\r\n }\r\n else {\r\n result = wordDefinition;\r\n }\r\n }\r\n result.lastIndex = 0;\r\n return result;\r\n}\r\nconst _defaultConfig = {\r\n maxLen: 1000,\r\n windowSize: 15,\r\n timeBudget: 150\r\n};\r\nexport function getWordAtText(column, wordDefinition, text, textOffset, config = _defaultConfig) {\r\n if (text.length > config.maxLen) {\r\n // don't throw strings that long at the regexp\r\n // but use a sub-string in which a word must occur\r\n let start = column - config.maxLen / 2;\r\n if (start < 0) {\r\n textOffset += column;\r\n start = 0;\r\n }\r\n else {\r\n textOffset += start;\r\n }\r\n text = text.substring(start, column + config.maxLen / 2);\r\n return getWordAtText(column, wordDefinition, text, textOffset, config);\r\n }\r\n const t1 = Date.now();\r\n const pos = column - 1 - textOffset;\r\n let prevRegexIndex = -1;\r\n let match = null;\r\n for (let i = 1;; i++) {\r\n // check time budget\r\n if (Date.now() - t1 >= config.timeBudget) {\r\n // break;\r\n }\r\n // reset the index at which the regexp should start matching, also know where it\r\n // should stop so that subsequent search don't repeat previous searches\r\n const regexIndex = pos - config.windowSize * i;\r\n wordDefinition.lastIndex = Math.max(0, regexIndex);\r\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\r\n if (!thisMatch && match) {\r\n // stop: we have something\r\n break;\r\n }\r\n match = thisMatch;\r\n // stop: searched at start\r\n if (regexIndex <= 0) {\r\n break;\r\n }\r\n prevRegexIndex = regexIndex;\r\n }\r\n if (match) {\r\n let result = {\r\n word: match[0],\r\n startColumn: textOffset + 1 + match.index,\r\n endColumn: textOffset + 1 + match.index + match[0].length\r\n };\r\n wordDefinition.lastIndex = 0;\r\n return result;\r\n }\r\n return null;\r\n}\r\nfunction _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\r\n let match;\r\n while (match = wordDefinition.exec(text)) {\r\n const matchIndex = match.index || 0;\r\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) {\r\n return match;\r\n }\r\n else if (stopPos > 0 && matchIndex > stopPos) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from '../../base/common/uri.js';\r\nimport { Range } from './core/range.js';\r\nimport { LanguageFeatureRegistry } from './modes/languageFeatureRegistry.js';\r\nimport { TokenizationRegistryImpl } from './modes/tokenizationRegistry.js';\r\nimport { iconRegistry, Codicon } from '../../base/common/codicons.js';\r\n/**\r\n * @internal\r\n */\r\nexport class LanguageIdentifier {\r\n constructor(language, id) {\r\n this.language = language;\r\n this.id = id;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class TokenMetadata {\r\n static getLanguageId(metadata) {\r\n return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\r\n }\r\n static getTokenType(metadata) {\r\n return (metadata & 1792 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\r\n }\r\n static getFontStyle(metadata) {\r\n return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\r\n }\r\n static getForeground(metadata) {\r\n return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 14 /* FOREGROUND_OFFSET */;\r\n }\r\n static getBackground(metadata) {\r\n return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 23 /* BACKGROUND_OFFSET */;\r\n }\r\n static getClassNameFromMetadata(metadata) {\r\n let foreground = this.getForeground(metadata);\r\n let className = 'mtk' + foreground;\r\n let fontStyle = this.getFontStyle(metadata);\r\n if (fontStyle & 1 /* Italic */) {\r\n className += ' mtki';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n className += ' mtkb';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n className += ' mtku';\r\n }\r\n return className;\r\n }\r\n static getInlineStyleFromMetadata(metadata, colorMap) {\r\n const foreground = this.getForeground(metadata);\r\n const fontStyle = this.getFontStyle(metadata);\r\n let result = `color: ${colorMap[foreground]};`;\r\n if (fontStyle & 1 /* Italic */) {\r\n result += 'font-style: italic;';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n result += 'font-weight: bold;';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n result += 'text-decoration: underline;';\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport const completionKindToCssClass = (function () {\r\n let data = Object.create(null);\r\n data[0 /* Method */] = 'symbol-method';\r\n data[1 /* Function */] = 'symbol-function';\r\n data[2 /* Constructor */] = 'symbol-constructor';\r\n data[3 /* Field */] = 'symbol-field';\r\n data[4 /* Variable */] = 'symbol-variable';\r\n data[5 /* Class */] = 'symbol-class';\r\n data[6 /* Struct */] = 'symbol-struct';\r\n data[7 /* Interface */] = 'symbol-interface';\r\n data[8 /* Module */] = 'symbol-module';\r\n data[9 /* Property */] = 'symbol-property';\r\n data[10 /* Event */] = 'symbol-event';\r\n data[11 /* Operator */] = 'symbol-operator';\r\n data[12 /* Unit */] = 'symbol-unit';\r\n data[13 /* Value */] = 'symbol-value';\r\n data[14 /* Constant */] = 'symbol-constant';\r\n data[15 /* Enum */] = 'symbol-enum';\r\n data[16 /* EnumMember */] = 'symbol-enum-member';\r\n data[17 /* Keyword */] = 'symbol-keyword';\r\n data[27 /* Snippet */] = 'symbol-snippet';\r\n data[18 /* Text */] = 'symbol-text';\r\n data[19 /* Color */] = 'symbol-color';\r\n data[20 /* File */] = 'symbol-file';\r\n data[21 /* Reference */] = 'symbol-reference';\r\n data[22 /* Customcolor */] = 'symbol-customcolor';\r\n data[23 /* Folder */] = 'symbol-folder';\r\n data[24 /* TypeParameter */] = 'symbol-type-parameter';\r\n data[25 /* User */] = 'account';\r\n data[26 /* Issue */] = 'issues';\r\n return function (kind) {\r\n const name = data[kind];\r\n let codicon = name && iconRegistry.get(name);\r\n if (!codicon) {\r\n console.info('No codicon found for CompletionItemKind ' + kind);\r\n codicon = Codicon.symbolProperty;\r\n }\r\n return codicon.classNames;\r\n };\r\n})();\r\n/**\r\n * @internal\r\n */\r\nexport let completionKindFromString = (function () {\r\n let data = Object.create(null);\r\n data['method'] = 0 /* Method */;\r\n data['function'] = 1 /* Function */;\r\n data['constructor'] = 2 /* Constructor */;\r\n data['field'] = 3 /* Field */;\r\n data['variable'] = 4 /* Variable */;\r\n data['class'] = 5 /* Class */;\r\n data['struct'] = 6 /* Struct */;\r\n data['interface'] = 7 /* Interface */;\r\n data['module'] = 8 /* Module */;\r\n data['property'] = 9 /* Property */;\r\n data['event'] = 10 /* Event */;\r\n data['operator'] = 11 /* Operator */;\r\n data['unit'] = 12 /* Unit */;\r\n data['value'] = 13 /* Value */;\r\n data['constant'] = 14 /* Constant */;\r\n data['enum'] = 15 /* Enum */;\r\n data['enum-member'] = 16 /* EnumMember */;\r\n data['enumMember'] = 16 /* EnumMember */;\r\n data['keyword'] = 17 /* Keyword */;\r\n data['snippet'] = 27 /* Snippet */;\r\n data['text'] = 18 /* Text */;\r\n data['color'] = 19 /* Color */;\r\n data['file'] = 20 /* File */;\r\n data['reference'] = 21 /* Reference */;\r\n data['customcolor'] = 22 /* Customcolor */;\r\n data['folder'] = 23 /* Folder */;\r\n data['type-parameter'] = 24 /* TypeParameter */;\r\n data['typeParameter'] = 24 /* TypeParameter */;\r\n data['account'] = 25 /* User */;\r\n data['issue'] = 26 /* Issue */;\r\n return function (value, strict) {\r\n let res = data[value];\r\n if (typeof res === 'undefined' && !strict) {\r\n res = 9 /* Property */;\r\n }\r\n return res;\r\n };\r\n})();\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * @internal\r\n */\r\nexport function isLocationLink(thing) {\r\n return thing\r\n && URI.isUri(thing.uri)\r\n && Range.isIRange(thing.range)\r\n && (Range.isIRange(thing.originSelectionRange) || Range.isIRange(thing.targetSelectionRange));\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport var SymbolKinds;\r\n(function (SymbolKinds) {\r\n const byName = new Map();\r\n byName.set('file', 0 /* File */);\r\n byName.set('module', 1 /* Module */);\r\n byName.set('namespace', 2 /* Namespace */);\r\n byName.set('package', 3 /* Package */);\r\n byName.set('class', 4 /* Class */);\r\n byName.set('method', 5 /* Method */);\r\n byName.set('property', 6 /* Property */);\r\n byName.set('field', 7 /* Field */);\r\n byName.set('constructor', 8 /* Constructor */);\r\n byName.set('enum', 9 /* Enum */);\r\n byName.set('interface', 10 /* Interface */);\r\n byName.set('function', 11 /* Function */);\r\n byName.set('variable', 12 /* Variable */);\r\n byName.set('constant', 13 /* Constant */);\r\n byName.set('string', 14 /* String */);\r\n byName.set('number', 15 /* Number */);\r\n byName.set('boolean', 16 /* Boolean */);\r\n byName.set('array', 17 /* Array */);\r\n byName.set('object', 18 /* Object */);\r\n byName.set('key', 19 /* Key */);\r\n byName.set('null', 20 /* Null */);\r\n byName.set('enum-member', 21 /* EnumMember */);\r\n byName.set('struct', 22 /* Struct */);\r\n byName.set('event', 23 /* Event */);\r\n byName.set('operator', 24 /* Operator */);\r\n byName.set('type-parameter', 25 /* TypeParameter */);\r\n const byKind = new Map();\r\n byKind.set(0 /* File */, 'file');\r\n byKind.set(1 /* Module */, 'module');\r\n byKind.set(2 /* Namespace */, 'namespace');\r\n byKind.set(3 /* Package */, 'package');\r\n byKind.set(4 /* Class */, 'class');\r\n byKind.set(5 /* Method */, 'method');\r\n byKind.set(6 /* Property */, 'property');\r\n byKind.set(7 /* Field */, 'field');\r\n byKind.set(8 /* Constructor */, 'constructor');\r\n byKind.set(9 /* Enum */, 'enum');\r\n byKind.set(10 /* Interface */, 'interface');\r\n byKind.set(11 /* Function */, 'function');\r\n byKind.set(12 /* Variable */, 'variable');\r\n byKind.set(13 /* Constant */, 'constant');\r\n byKind.set(14 /* String */, 'string');\r\n byKind.set(15 /* Number */, 'number');\r\n byKind.set(16 /* Boolean */, 'boolean');\r\n byKind.set(17 /* Array */, 'array');\r\n byKind.set(18 /* Object */, 'object');\r\n byKind.set(19 /* Key */, 'key');\r\n byKind.set(20 /* Null */, 'null');\r\n byKind.set(21 /* EnumMember */, 'enum-member');\r\n byKind.set(22 /* Struct */, 'struct');\r\n byKind.set(23 /* Event */, 'event');\r\n byKind.set(24 /* Operator */, 'operator');\r\n byKind.set(25 /* TypeParameter */, 'type-parameter');\r\n /**\r\n * @internal\r\n */\r\n function fromString(value) {\r\n return byName.get(value);\r\n }\r\n SymbolKinds.fromString = fromString;\r\n /**\r\n * @internal\r\n */\r\n function toString(kind) {\r\n return byKind.get(kind);\r\n }\r\n SymbolKinds.toString = toString;\r\n /**\r\n * @internal\r\n */\r\n function toCssClassName(kind, inline) {\r\n const symbolName = byKind.get(kind);\r\n let codicon = symbolName && iconRegistry.get('symbol-' + symbolName);\r\n if (!codicon) {\r\n console.info('No codicon found for SymbolKind ' + kind);\r\n codicon = Codicon.symbolProperty;\r\n }\r\n return `${inline ? 'inline' : 'block'} ${codicon.classNames}`;\r\n }\r\n SymbolKinds.toCssClassName = toCssClassName;\r\n})(SymbolKinds || (SymbolKinds = {}));\r\nexport class FoldingRangeKind {\r\n /**\r\n * Creates a new [FoldingRangeKind](#FoldingRangeKind).\r\n *\r\n * @param value of the kind.\r\n */\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n}\r\n/**\r\n * Kind for folding range representing a comment. The value of the kind is 'comment'.\r\n */\r\nFoldingRangeKind.Comment = new FoldingRangeKind('comment');\r\n/**\r\n * Kind for folding range representing a import. The value of the kind is 'imports'.\r\n */\r\nFoldingRangeKind.Imports = new FoldingRangeKind('imports');\r\n/**\r\n * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).\r\n * The value of the kind is 'region'.\r\n */\r\nFoldingRangeKind.Region = new FoldingRangeKind('region');\r\n// --- feature registries ------\r\n/**\r\n * @internal\r\n */\r\nexport const ReferenceProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const RenameProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CompletionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const SignatureHelpProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const HoverProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentSymbolProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentHighlightProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const OnTypeRenameProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DefinitionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DeclarationProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const ImplementationProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const TypeDefinitionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CodeLensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const CodeActionProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentRangeFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const OnTypeFormattingEditProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const LinkProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const ColorProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const SelectionRangeRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const FoldingRangeProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentSemanticTokensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const DocumentRangeSemanticTokensProviderRegistry = new LanguageFeatureRegistry();\r\n/**\r\n * @internal\r\n */\r\nexport const TokenizationRegistry = new TokenizationRegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class FrankensteinMode {\r\n constructor(languageIdentifier) {\r\n this._languageIdentifier = languageIdentifier;\r\n }\r\n getId() {\r\n return this._languageIdentifier.language;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\n/**\r\n * @internal\r\n */\r\nexport class StandardAutoClosingPairConditional {\r\n constructor(source) {\r\n this.open = source.open;\r\n this.close = source.close;\r\n // initially allowed in all tokens\r\n this._standardTokenMask = 0;\r\n if (Array.isArray(source.notIn)) {\r\n for (let i = 0, len = source.notIn.length; i < len; i++) {\r\n const notIn = source.notIn[i];\r\n switch (notIn) {\r\n case 'string':\r\n this._standardTokenMask |= 2 /* String */;\r\n break;\r\n case 'comment':\r\n this._standardTokenMask |= 1 /* Comment */;\r\n break;\r\n case 'regex':\r\n this._standardTokenMask |= 4 /* RegEx */;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n isOK(standardToken) {\r\n return (this._standardTokenMask & standardToken) === 0;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { DEFAULT_WORD_REGEXP, ensureValidWordDefinition } from '../model/wordHelper.js';\r\nimport { IndentAction } from './languageConfiguration.js';\r\nimport { createScopedLineTokens } from './supports.js';\r\nimport { CharacterPairSupport } from './supports/characterPair.js';\r\nimport { BracketElectricCharacterSupport } from './supports/electricCharacter.js';\r\nimport { IndentRulesSupport } from './supports/indentRules.js';\r\nimport { OnEnterSupport } from './supports/onEnter.js';\r\nimport { RichEditBrackets } from './supports/richEditBrackets.js';\r\nexport class RichEditSupport {\r\n constructor(languageIdentifier, previous, rawConf) {\r\n this._languageIdentifier = languageIdentifier;\r\n this._brackets = null;\r\n this._electricCharacter = null;\r\n let prev = null;\r\n if (previous) {\r\n prev = previous._conf;\r\n }\r\n this._conf = RichEditSupport._mergeConf(prev, rawConf);\r\n this._onEnterSupport = (this._conf.brackets || this._conf.indentationRules || this._conf.onEnterRules ? new OnEnterSupport(this._conf) : null);\r\n this.comments = RichEditSupport._handleComments(this._conf);\r\n this.characterPair = new CharacterPairSupport(this._conf);\r\n this.wordDefinition = this._conf.wordPattern || DEFAULT_WORD_REGEXP;\r\n this.indentationRules = this._conf.indentationRules;\r\n if (this._conf.indentationRules) {\r\n this.indentRulesSupport = new IndentRulesSupport(this._conf.indentationRules);\r\n }\r\n else {\r\n this.indentRulesSupport = null;\r\n }\r\n this.foldingRules = this._conf.folding || {};\r\n }\r\n get brackets() {\r\n if (!this._brackets && this._conf.brackets) {\r\n this._brackets = new RichEditBrackets(this._languageIdentifier, this._conf.brackets);\r\n }\r\n return this._brackets;\r\n }\r\n get electricCharacter() {\r\n if (!this._electricCharacter) {\r\n this._electricCharacter = new BracketElectricCharacterSupport(this.brackets);\r\n }\r\n return this._electricCharacter;\r\n }\r\n onEnter(autoIndent, oneLineAboveText, beforeEnterText, afterEnterText) {\r\n if (!this._onEnterSupport) {\r\n return null;\r\n }\r\n return this._onEnterSupport.onEnter(autoIndent, oneLineAboveText, beforeEnterText, afterEnterText);\r\n }\r\n static _mergeConf(prev, current) {\r\n return {\r\n comments: (prev ? current.comments || prev.comments : current.comments),\r\n brackets: (prev ? current.brackets || prev.brackets : current.brackets),\r\n wordPattern: (prev ? current.wordPattern || prev.wordPattern : current.wordPattern),\r\n indentationRules: (prev ? current.indentationRules || prev.indentationRules : current.indentationRules),\r\n onEnterRules: (prev ? current.onEnterRules || prev.onEnterRules : current.onEnterRules),\r\n autoClosingPairs: (prev ? current.autoClosingPairs || prev.autoClosingPairs : current.autoClosingPairs),\r\n surroundingPairs: (prev ? current.surroundingPairs || prev.surroundingPairs : current.surroundingPairs),\r\n autoCloseBefore: (prev ? current.autoCloseBefore || prev.autoCloseBefore : current.autoCloseBefore),\r\n folding: (prev ? current.folding || prev.folding : current.folding),\r\n __electricCharacterSupport: (prev ? current.__electricCharacterSupport || prev.__electricCharacterSupport : current.__electricCharacterSupport),\r\n };\r\n }\r\n static _handleComments(conf) {\r\n let commentRule = conf.comments;\r\n if (!commentRule) {\r\n return null;\r\n }\r\n // comment configuration\r\n let comments = {};\r\n if (commentRule.lineComment) {\r\n comments.lineCommentToken = commentRule.lineComment;\r\n }\r\n if (commentRule.blockComment) {\r\n let [blockStart, blockEnd] = commentRule.blockComment;\r\n comments.blockCommentStartToken = blockStart;\r\n comments.blockCommentEndToken = blockEnd;\r\n }\r\n return comments;\r\n }\r\n}\r\nexport class LanguageConfigurationChangeEvent {\r\n constructor(languageIdentifier) {\r\n this.languageIdentifier = languageIdentifier;\r\n }\r\n}\r\nexport class LanguageConfigurationRegistryImpl {\r\n constructor() {\r\n this._entries = new Map();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n }\r\n register(languageIdentifier, configuration) {\r\n let previous = this._getRichEditSupport(languageIdentifier.id);\r\n let current = new RichEditSupport(languageIdentifier, previous, configuration);\r\n this._entries.set(languageIdentifier.id, current);\r\n this._onDidChange.fire(new LanguageConfigurationChangeEvent(languageIdentifier));\r\n return toDisposable(() => {\r\n if (this._entries.get(languageIdentifier.id) === current) {\r\n this._entries.set(languageIdentifier.id, previous);\r\n this._onDidChange.fire(new LanguageConfigurationChangeEvent(languageIdentifier));\r\n }\r\n });\r\n }\r\n _getRichEditSupport(languageId) {\r\n return this._entries.get(languageId);\r\n }\r\n getIndentationRules(languageId) {\r\n const value = this._entries.get(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.indentationRules || null;\r\n }\r\n // begin electricCharacter\r\n _getElectricCharacterSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.electricCharacter || null;\r\n }\r\n getElectricCharacters(languageId) {\r\n let electricCharacterSupport = this._getElectricCharacterSupport(languageId);\r\n if (!electricCharacterSupport) {\r\n return [];\r\n }\r\n return electricCharacterSupport.getElectricCharacters();\r\n }\r\n /**\r\n * Should return opening bracket type to match indentation with\r\n */\r\n onElectricCharacter(character, context, column) {\r\n let scopedLineTokens = createScopedLineTokens(context, column - 1);\r\n let electricCharacterSupport = this._getElectricCharacterSupport(scopedLineTokens.languageId);\r\n if (!electricCharacterSupport) {\r\n return null;\r\n }\r\n return electricCharacterSupport.onElectricCharacter(character, scopedLineTokens, column - scopedLineTokens.firstCharOffset);\r\n }\r\n // end electricCharacter\r\n getComments(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.comments || null;\r\n }\r\n // begin characterPair\r\n _getCharacterPairSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.characterPair || null;\r\n }\r\n getAutoClosingPairs(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return [];\r\n }\r\n return characterPairSupport.getAutoClosingPairs();\r\n }\r\n getAutoCloseBeforeSet(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return CharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED;\r\n }\r\n return characterPairSupport.getAutoCloseBeforeSet();\r\n }\r\n getSurroundingPairs(languageId) {\r\n let characterPairSupport = this._getCharacterPairSupport(languageId);\r\n if (!characterPairSupport) {\r\n return [];\r\n }\r\n return characterPairSupport.getSurroundingPairs();\r\n }\r\n shouldAutoClosePair(autoClosingPair, context, column) {\r\n const scopedLineTokens = createScopedLineTokens(context, column - 1);\r\n return CharacterPairSupport.shouldAutoClosePair(autoClosingPair, scopedLineTokens, column - scopedLineTokens.firstCharOffset);\r\n }\r\n // end characterPair\r\n getWordDefinition(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return ensureValidWordDefinition(null);\r\n }\r\n return ensureValidWordDefinition(value.wordDefinition || null);\r\n }\r\n getFoldingRules(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return {};\r\n }\r\n return value.foldingRules;\r\n }\r\n // begin Indent Rules\r\n getIndentRulesSupport(languageId) {\r\n let value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.indentRulesSupport || null;\r\n }\r\n /**\r\n * Get nearest preceiding line which doesn't match unIndentPattern or contains all whitespace.\r\n * Result:\r\n * -1: run into the boundary of embedded languages\r\n * 0: every line above are invalid\r\n * else: nearest preceding line of the same language\r\n */\r\n getPrecedingValidLine(model, lineNumber, indentRulesSupport) {\r\n let languageID = model.getLanguageIdAtPosition(lineNumber, 0);\r\n if (lineNumber > 1) {\r\n let lastLineNumber;\r\n let resultLineNumber = -1;\r\n for (lastLineNumber = lineNumber - 1; lastLineNumber >= 1; lastLineNumber--) {\r\n if (model.getLanguageIdAtPosition(lastLineNumber, 0) !== languageID) {\r\n return resultLineNumber;\r\n }\r\n let text = model.getLineContent(lastLineNumber);\r\n if (indentRulesSupport.shouldIgnore(text) || /^\\s+$/.test(text) || text === '') {\r\n resultLineNumber = lastLineNumber;\r\n continue;\r\n }\r\n return lastLineNumber;\r\n }\r\n }\r\n return -1;\r\n }\r\n /**\r\n * Get inherited indentation from above lines.\r\n * 1. Find the nearest preceding line which doesn't match unIndentedLinePattern.\r\n * 2. If this line matches indentNextLinePattern or increaseIndentPattern, it means that the indent level of `lineNumber` should be 1 greater than this line.\r\n * 3. If this line doesn't match any indent rules\r\n * a. check whether the line above it matches indentNextLinePattern\r\n * b. If not, the indent level of this line is the result\r\n * c. If so, it means the indent of this line is *temporary*, go upward utill we find a line whose indent is not temporary (the same workflow a -> b -> c).\r\n * 4. Otherwise, we fail to get an inherited indent from aboves. Return null and we should not touch the indent of `lineNumber`\r\n *\r\n * This function only return the inherited indent based on above lines, it doesn't check whether current line should decrease or not.\r\n */\r\n getInheritIndentForLine(autoIndent, model, lineNumber, honorIntentialIndent = true) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(model.getLanguageIdentifier().id);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n if (lineNumber <= 1) {\r\n return {\r\n indentation: '',\r\n action: null\r\n };\r\n }\r\n const precedingUnIgnoredLine = this.getPrecedingValidLine(model, lineNumber, indentRulesSupport);\r\n if (precedingUnIgnoredLine < 0) {\r\n return null;\r\n }\r\n else if (precedingUnIgnoredLine < 1) {\r\n return {\r\n indentation: '',\r\n action: null\r\n };\r\n }\r\n const precedingUnIgnoredLineContent = model.getLineContent(precedingUnIgnoredLine);\r\n if (indentRulesSupport.shouldIncrease(precedingUnIgnoredLineContent) || indentRulesSupport.shouldIndentNextLine(precedingUnIgnoredLineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(precedingUnIgnoredLineContent),\r\n action: IndentAction.Indent,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else if (indentRulesSupport.shouldDecrease(precedingUnIgnoredLineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(precedingUnIgnoredLineContent),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else {\r\n // precedingUnIgnoredLine can not be ignored.\r\n // it doesn't increase indent of following lines\r\n // it doesn't increase just next line\r\n // so current line is not affect by precedingUnIgnoredLine\r\n // and then we should get a correct inheritted indentation from above lines\r\n if (precedingUnIgnoredLine === 1) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(precedingUnIgnoredLine)),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n const previousLine = precedingUnIgnoredLine - 1;\r\n const previousLineIndentMetadata = indentRulesSupport.getIndentMetadata(model.getLineContent(previousLine));\r\n if (!(previousLineIndentMetadata & (1 /* INCREASE_MASK */ | 2 /* DECREASE_MASK */)) &&\r\n (previousLineIndentMetadata & 4 /* INDENT_NEXTLINE_MASK */)) {\r\n let stopLine = 0;\r\n for (let i = previousLine - 1; i > 0; i--) {\r\n if (indentRulesSupport.shouldIndentNextLine(model.getLineContent(i))) {\r\n continue;\r\n }\r\n stopLine = i;\r\n break;\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(stopLine + 1)),\r\n action: null,\r\n line: stopLine + 1\r\n };\r\n }\r\n if (honorIntentialIndent) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(precedingUnIgnoredLine)),\r\n action: null,\r\n line: precedingUnIgnoredLine\r\n };\r\n }\r\n else {\r\n // search from precedingUnIgnoredLine until we find one whose indent is not temporary\r\n for (let i = precedingUnIgnoredLine; i > 0; i--) {\r\n const lineContent = model.getLineContent(i);\r\n if (indentRulesSupport.shouldIncrease(lineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(lineContent),\r\n action: IndentAction.Indent,\r\n line: i\r\n };\r\n }\r\n else if (indentRulesSupport.shouldIndentNextLine(lineContent)) {\r\n let stopLine = 0;\r\n for (let j = i - 1; j > 0; j--) {\r\n if (indentRulesSupport.shouldIndentNextLine(model.getLineContent(i))) {\r\n continue;\r\n }\r\n stopLine = j;\r\n break;\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(stopLine + 1)),\r\n action: null,\r\n line: stopLine + 1\r\n };\r\n }\r\n else if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n return {\r\n indentation: strings.getLeadingWhitespace(lineContent),\r\n action: null,\r\n line: i\r\n };\r\n }\r\n }\r\n return {\r\n indentation: strings.getLeadingWhitespace(model.getLineContent(1)),\r\n action: null,\r\n line: 1\r\n };\r\n }\r\n }\r\n }\r\n getGoodIndentForLine(autoIndent, virtualModel, languageId, lineNumber, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const richEditSupport = this._getRichEditSupport(languageId);\r\n if (!richEditSupport) {\r\n return null;\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const indent = this.getInheritIndentForLine(autoIndent, virtualModel, lineNumber);\r\n const lineContent = virtualModel.getLineContent(lineNumber);\r\n if (indent) {\r\n const inheritLine = indent.line;\r\n if (inheritLine !== undefined) {\r\n const enterResult = richEditSupport.onEnter(autoIndent, '', virtualModel.getLineContent(inheritLine), '');\r\n if (enterResult) {\r\n let indentation = strings.getLeadingWhitespace(virtualModel.getLineContent(inheritLine));\r\n if (enterResult.removeText) {\r\n indentation = indentation.substring(0, indentation.length - enterResult.removeText);\r\n }\r\n if ((enterResult.indentAction === IndentAction.Indent) ||\r\n (enterResult.indentAction === IndentAction.IndentOutdent)) {\r\n indentation = indentConverter.shiftIndent(indentation);\r\n }\r\n else if (enterResult.indentAction === IndentAction.Outdent) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n if (enterResult.appendText) {\r\n indentation += enterResult.appendText;\r\n }\r\n return strings.getLeadingWhitespace(indentation);\r\n }\r\n }\r\n if (indentRulesSupport.shouldDecrease(lineContent)) {\r\n if (indent.action === IndentAction.Indent) {\r\n return indent.indentation;\r\n }\r\n else {\r\n return indentConverter.unshiftIndent(indent.indentation);\r\n }\r\n }\r\n else {\r\n if (indent.action === IndentAction.Indent) {\r\n return indentConverter.shiftIndent(indent.indentation);\r\n }\r\n else {\r\n return indent.indentation;\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n getIndentForEnter(autoIndent, model, range, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n model.forceTokenization(range.startLineNumber);\r\n const lineTokens = model.getLineTokens(range.startLineNumber);\r\n const scopedLineTokens = createScopedLineTokens(lineTokens, range.startColumn - 1);\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n let embeddedLanguage = false;\r\n let beforeEnterText;\r\n if (scopedLineTokens.firstCharOffset > 0 && lineTokens.getLanguageId(0) !== scopedLineTokens.languageId) {\r\n // we are in the embeded language content\r\n embeddedLanguage = true; // if embeddedLanguage is true, then we don't touch the indentation of current line\r\n beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n beforeEnterText = lineTokens.getLineContent().substring(0, range.startColumn - 1);\r\n }\r\n let afterEnterText;\r\n if (range.isEmpty()) {\r\n afterEnterText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterEnterText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n const indentRulesSupport = this.getIndentRulesSupport(scopedLineTokens.languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const beforeEnterResult = beforeEnterText;\r\n const beforeEnterIndent = strings.getLeadingWhitespace(beforeEnterText);\r\n const virtualModel = {\r\n getLineTokens: (lineNumber) => {\r\n return model.getLineTokens(lineNumber);\r\n },\r\n getLanguageIdentifier: () => {\r\n return model.getLanguageIdentifier();\r\n },\r\n getLanguageIdAtPosition: (lineNumber, column) => {\r\n return model.getLanguageIdAtPosition(lineNumber, column);\r\n },\r\n getLineContent: (lineNumber) => {\r\n if (lineNumber === range.startLineNumber) {\r\n return beforeEnterResult;\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n }\r\n };\r\n const currentLineIndent = strings.getLeadingWhitespace(lineTokens.getLineContent());\r\n const afterEnterAction = this.getInheritIndentForLine(autoIndent, virtualModel, range.startLineNumber + 1);\r\n if (!afterEnterAction) {\r\n const beforeEnter = embeddedLanguage ? currentLineIndent : beforeEnterIndent;\r\n return {\r\n beforeEnter: beforeEnter,\r\n afterEnter: beforeEnter\r\n };\r\n }\r\n let afterEnterIndent = embeddedLanguage ? currentLineIndent : afterEnterAction.indentation;\r\n if (afterEnterAction.action === IndentAction.Indent) {\r\n afterEnterIndent = indentConverter.shiftIndent(afterEnterIndent);\r\n }\r\n if (indentRulesSupport.shouldDecrease(afterEnterText)) {\r\n afterEnterIndent = indentConverter.unshiftIndent(afterEnterIndent);\r\n }\r\n return {\r\n beforeEnter: embeddedLanguage ? currentLineIndent : beforeEnterIndent,\r\n afterEnter: afterEnterIndent\r\n };\r\n }\r\n /**\r\n * We should always allow intentional indentation. It means, if users change the indentation of `lineNumber` and the content of\r\n * this line doesn't match decreaseIndentPattern, we should not adjust the indentation.\r\n */\r\n getIndentActionForType(autoIndent, model, range, ch, indentConverter) {\r\n if (autoIndent < 4 /* Full */) {\r\n return null;\r\n }\r\n const scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);\r\n const indentRulesSupport = this.getIndentRulesSupport(scopedLineTokens.languageId);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n const beforeTypeText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n // selection support\r\n let afterTypeText;\r\n if (range.isEmpty()) {\r\n afterTypeText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterTypeText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n // If previous content already matches decreaseIndentPattern, it means indentation of this line should already be adjusted\r\n // Users might change the indentation by purpose and we should honor that instead of readjusting.\r\n if (!indentRulesSupport.shouldDecrease(beforeTypeText + afterTypeText) && indentRulesSupport.shouldDecrease(beforeTypeText + ch + afterTypeText)) {\r\n // after typing `ch`, the content matches decreaseIndentPattern, we should adjust the indent to a good manner.\r\n // 1. Get inherited indent action\r\n const r = this.getInheritIndentForLine(autoIndent, model, range.startLineNumber, false);\r\n if (!r) {\r\n return null;\r\n }\r\n let indentation = r.indentation;\r\n if (r.action !== IndentAction.Indent) {\r\n indentation = indentConverter.unshiftIndent(indentation);\r\n }\r\n return indentation;\r\n }\r\n return null;\r\n }\r\n getIndentMetadata(model, lineNumber) {\r\n const indentRulesSupport = this.getIndentRulesSupport(model.getLanguageIdentifier().id);\r\n if (!indentRulesSupport) {\r\n return null;\r\n }\r\n if (lineNumber < 1 || lineNumber > model.getLineCount()) {\r\n return null;\r\n }\r\n return indentRulesSupport.getIndentMetadata(model.getLineContent(lineNumber));\r\n }\r\n // end Indent Rules\r\n // begin onEnter\r\n getEnterAction(autoIndent, model, range) {\r\n const scopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber, range.startColumn);\r\n const richEditSupport = this._getRichEditSupport(scopedLineTokens.languageId);\r\n if (!richEditSupport) {\r\n return null;\r\n }\r\n const scopedLineText = scopedLineTokens.getLineContent();\r\n const beforeEnterText = scopedLineText.substr(0, range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n // selection support\r\n let afterEnterText;\r\n if (range.isEmpty()) {\r\n afterEnterText = scopedLineText.substr(range.startColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n else {\r\n const endScopedLineTokens = this.getScopedLineTokens(model, range.endLineNumber, range.endColumn);\r\n afterEnterText = endScopedLineTokens.getLineContent().substr(range.endColumn - 1 - scopedLineTokens.firstCharOffset);\r\n }\r\n let oneLineAboveText = '';\r\n if (range.startLineNumber > 1 && scopedLineTokens.firstCharOffset === 0) {\r\n // This is not the first line and the entire line belongs to this mode\r\n const oneLineAboveScopedLineTokens = this.getScopedLineTokens(model, range.startLineNumber - 1);\r\n if (oneLineAboveScopedLineTokens.languageId === scopedLineTokens.languageId) {\r\n // The line above ends with text belonging to the same mode\r\n oneLineAboveText = oneLineAboveScopedLineTokens.getLineContent();\r\n }\r\n }\r\n const enterResult = richEditSupport.onEnter(autoIndent, oneLineAboveText, beforeEnterText, afterEnterText);\r\n if (!enterResult) {\r\n return null;\r\n }\r\n const indentAction = enterResult.indentAction;\r\n let appendText = enterResult.appendText;\r\n const removeText = enterResult.removeText || 0;\r\n // Here we add `\\t` to appendText first because enterAction is leveraging appendText and removeText to change indentation.\r\n if (!appendText) {\r\n if ((indentAction === IndentAction.Indent) ||\r\n (indentAction === IndentAction.IndentOutdent)) {\r\n appendText = '\\t';\r\n }\r\n else {\r\n appendText = '';\r\n }\r\n }\r\n let indentation = this.getIndentationAtPosition(model, range.startLineNumber, range.startColumn);\r\n if (removeText) {\r\n indentation = indentation.substring(0, indentation.length - removeText);\r\n }\r\n return {\r\n indentAction: indentAction,\r\n appendText: appendText,\r\n removeText: removeText,\r\n indentation: indentation\r\n };\r\n }\r\n getIndentationAtPosition(model, lineNumber, column) {\r\n const lineText = model.getLineContent(lineNumber);\r\n let indentation = strings.getLeadingWhitespace(lineText);\r\n if (indentation.length > column - 1) {\r\n indentation = indentation.substring(0, column - 1);\r\n }\r\n return indentation;\r\n }\r\n getScopedLineTokens(model, lineNumber, columnNumber) {\r\n model.forceTokenization(lineNumber);\r\n const lineTokens = model.getLineTokens(lineNumber);\r\n const column = (typeof columnNumber === 'undefined' ? model.getLineMaxColumn(lineNumber) - 1 : columnNumber - 1);\r\n return createScopedLineTokens(lineTokens, column);\r\n }\r\n // end onEnter\r\n getBracketsSupport(languageId) {\r\n const value = this._getRichEditSupport(languageId);\r\n if (!value) {\r\n return null;\r\n }\r\n return value.brackets || null;\r\n }\r\n}\r\nexport const LanguageConfigurationRegistry = new LanguageConfigurationRegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { score } from './languageSelector.js';\r\nimport { shouldSynchronizeModel } from '../services/modelService.js';\r\nfunction isExclusive(selector) {\r\n if (typeof selector === 'string') {\r\n return false;\r\n }\r\n else if (Array.isArray(selector)) {\r\n return selector.every(isExclusive);\r\n }\r\n else {\r\n return !!selector.exclusive;\r\n }\r\n}\r\nexport class LanguageFeatureRegistry {\r\n constructor() {\r\n this._clock = 0;\r\n this._entries = [];\r\n this._onDidChange = new Emitter();\r\n }\r\n get onDidChange() {\r\n return this._onDidChange.event;\r\n }\r\n register(selector, provider) {\r\n let entry = {\r\n selector,\r\n provider,\r\n _score: -1,\r\n _time: this._clock++\r\n };\r\n this._entries.push(entry);\r\n this._lastCandidate = undefined;\r\n this._onDidChange.fire(this._entries.length);\r\n return toDisposable(() => {\r\n if (entry) {\r\n let idx = this._entries.indexOf(entry);\r\n if (idx >= 0) {\r\n this._entries.splice(idx, 1);\r\n this._lastCandidate = undefined;\r\n this._onDidChange.fire(this._entries.length);\r\n entry = undefined;\r\n }\r\n }\r\n });\r\n }\r\n has(model) {\r\n return this.all(model).length > 0;\r\n }\r\n all(model) {\r\n if (!model) {\r\n return [];\r\n }\r\n this._updateScores(model);\r\n const result = [];\r\n // from registry\r\n for (let entry of this._entries) {\r\n if (entry._score > 0) {\r\n result.push(entry.provider);\r\n }\r\n }\r\n return result;\r\n }\r\n ordered(model) {\r\n const result = [];\r\n this._orderedForEach(model, entry => result.push(entry.provider));\r\n return result;\r\n }\r\n orderedGroups(model) {\r\n const result = [];\r\n let lastBucket;\r\n let lastBucketScore;\r\n this._orderedForEach(model, entry => {\r\n if (lastBucket && lastBucketScore === entry._score) {\r\n lastBucket.push(entry.provider);\r\n }\r\n else {\r\n lastBucketScore = entry._score;\r\n lastBucket = [entry.provider];\r\n result.push(lastBucket);\r\n }\r\n });\r\n return result;\r\n }\r\n _orderedForEach(model, callback) {\r\n if (!model) {\r\n return;\r\n }\r\n this._updateScores(model);\r\n for (const entry of this._entries) {\r\n if (entry._score > 0) {\r\n callback(entry);\r\n }\r\n }\r\n }\r\n _updateScores(model) {\r\n let candidate = {\r\n uri: model.uri.toString(),\r\n language: model.getLanguageIdentifier().language\r\n };\r\n if (this._lastCandidate\r\n && this._lastCandidate.language === candidate.language\r\n && this._lastCandidate.uri === candidate.uri) {\r\n // nothing has changed\r\n return;\r\n }\r\n this._lastCandidate = candidate;\r\n for (let entry of this._entries) {\r\n entry._score = score(entry.selector, model.uri, model.getLanguageIdentifier().language, shouldSynchronizeModel(model));\r\n if (isExclusive(entry.selector) && entry._score > 0) {\r\n // support for one exclusive selector that overwrites\r\n // any other selector\r\n for (let entry of this._entries) {\r\n entry._score = 0;\r\n }\r\n entry._score = 1000;\r\n break;\r\n }\r\n }\r\n // needs sorting\r\n this._entries.sort(LanguageFeatureRegistry._compareByScoreAndTime);\r\n }\r\n static _compareByScoreAndTime(a, b) {\r\n if (a._score < b._score) {\r\n return 1;\r\n }\r\n else if (a._score > b._score) {\r\n return -1;\r\n }\r\n else if (a._time < b._time) {\r\n return 1;\r\n }\r\n else if (a._time > b._time) {\r\n return -1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { match as matchGlobPattern } from '../../../base/common/glob.js';\r\nimport { normalize } from '../../../base/common/path.js';\r\nexport function score(selector, candidateUri, candidateLanguage, candidateIsSynchronized) {\r\n if (Array.isArray(selector)) {\r\n // array -> take max individual value\r\n let ret = 0;\r\n for (const filter of selector) {\r\n const value = score(filter, candidateUri, candidateLanguage, candidateIsSynchronized);\r\n if (value === 10) {\r\n return value; // already at the highest\r\n }\r\n if (value > ret) {\r\n ret = value;\r\n }\r\n }\r\n return ret;\r\n }\r\n else if (typeof selector === 'string') {\r\n if (!candidateIsSynchronized) {\r\n return 0;\r\n }\r\n // short-hand notion, desugars to\r\n // 'fooLang' -> { language: 'fooLang'}\r\n // '*' -> { language: '*' }\r\n if (selector === '*') {\r\n return 5;\r\n }\r\n else if (selector === candidateLanguage) {\r\n return 10;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n else if (selector) {\r\n // filter -> select accordingly, use defaults for scheme\r\n const { language, pattern, scheme, hasAccessToAllModels } = selector;\r\n if (!candidateIsSynchronized && !hasAccessToAllModels) {\r\n return 0;\r\n }\r\n let ret = 0;\r\n if (scheme) {\r\n if (scheme === candidateUri.scheme) {\r\n ret = 10;\r\n }\r\n else if (scheme === '*') {\r\n ret = 5;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (language) {\r\n if (language === candidateLanguage) {\r\n ret = 10;\r\n }\r\n else if (language === '*') {\r\n ret = Math.max(ret, 5);\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n if (pattern) {\r\n let normalizedPattern;\r\n if (typeof pattern === 'string') {\r\n normalizedPattern = pattern;\r\n }\r\n else {\r\n // Since this pattern has a `base` property, we need\r\n // to normalize this path first before passing it on\r\n // because we will compare it against `Uri.fsPath`\r\n // which uses platform specific separators.\r\n // Refs: https://github.com/microsoft/vscode/issues/99938\r\n normalizedPattern = Object.assign(Object.assign({}, pattern), { base: normalize(pattern.base) });\r\n }\r\n if (normalizedPattern === candidateUri.fsPath || matchGlobPattern(normalizedPattern, candidateUri.fsPath)) {\r\n ret = 10;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n return ret;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class Uint8Matrix {\r\n constructor(rows, cols, defaultValue) {\r\n const data = new Uint8Array(rows * cols);\r\n for (let i = 0, len = rows * cols; i < len; i++) {\r\n data[i] = defaultValue;\r\n }\r\n this._data = data;\r\n this.rows = rows;\r\n this.cols = cols;\r\n }\r\n get(row, col) {\r\n return this._data[row * this.cols + col];\r\n }\r\n set(row, col, value) {\r\n this._data[row * this.cols + col] = value;\r\n }\r\n}\r\nexport class StateMachine {\r\n constructor(edges) {\r\n let maxCharCode = 0;\r\n let maxState = 0 /* Invalid */;\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n if (chCode > maxCharCode) {\r\n maxCharCode = chCode;\r\n }\r\n if (from > maxState) {\r\n maxState = from;\r\n }\r\n if (to > maxState) {\r\n maxState = to;\r\n }\r\n }\r\n maxCharCode++;\r\n maxState++;\r\n let states = new Uint8Matrix(maxState, maxCharCode, 0 /* Invalid */);\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n states.set(from, chCode, to);\r\n }\r\n this._states = states;\r\n this._maxCharCode = maxCharCode;\r\n }\r\n nextState(currentState, chCode) {\r\n if (chCode < 0 || chCode >= this._maxCharCode) {\r\n return 0 /* Invalid */;\r\n }\r\n return this._states.get(currentState, chCode);\r\n }\r\n}\r\n// State machine for http:// or https:// or file://\r\nlet _stateMachine = null;\r\nfunction getStateMachine() {\r\n if (_stateMachine === null) {\r\n _stateMachine = new StateMachine([\r\n [1 /* Start */, 104 /* h */, 2 /* H */],\r\n [1 /* Start */, 72 /* H */, 2 /* H */],\r\n [1 /* Start */, 102 /* f */, 6 /* F */],\r\n [1 /* Start */, 70 /* F */, 6 /* F */],\r\n [2 /* H */, 116 /* t */, 3 /* HT */],\r\n [2 /* H */, 84 /* T */, 3 /* HT */],\r\n [3 /* HT */, 116 /* t */, 4 /* HTT */],\r\n [3 /* HT */, 84 /* T */, 4 /* HTT */],\r\n [4 /* HTT */, 112 /* p */, 5 /* HTTP */],\r\n [4 /* HTT */, 80 /* P */, 5 /* HTTP */],\r\n [5 /* HTTP */, 115 /* s */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 83 /* S */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 58 /* Colon */, 10 /* AfterColon */],\r\n [6 /* F */, 105 /* i */, 7 /* FI */],\r\n [6 /* F */, 73 /* I */, 7 /* FI */],\r\n [7 /* FI */, 108 /* l */, 8 /* FIL */],\r\n [7 /* FI */, 76 /* L */, 8 /* FIL */],\r\n [8 /* FIL */, 101 /* e */, 9 /* BeforeColon */],\r\n [8 /* FIL */, 69 /* E */, 9 /* BeforeColon */],\r\n [9 /* BeforeColon */, 58 /* Colon */, 10 /* AfterColon */],\r\n [10 /* AfterColon */, 47 /* Slash */, 11 /* AlmostThere */],\r\n [11 /* AlmostThere */, 47 /* Slash */, 12 /* End */],\r\n ]);\r\n }\r\n return _stateMachine;\r\n}\r\nlet _classifier = null;\r\nfunction getClassifier() {\r\n if (_classifier === null) {\r\n _classifier = new CharacterClassifier(0 /* None */);\r\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…';\r\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\r\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* ForceTermination */);\r\n }\r\n const CANNOT_END_WITH_CHARACTERS = '.,;';\r\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\r\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CannotEndIn */);\r\n }\r\n }\r\n return _classifier;\r\n}\r\nexport class LinkComputer {\r\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\r\n // Do not allow to end link in certain characters...\r\n let lastIncludedCharIndex = linkEndIndex - 1;\r\n do {\r\n const chCode = line.charCodeAt(lastIncludedCharIndex);\r\n const chClass = classifier.get(chCode);\r\n if (chClass !== 2 /* CannotEndIn */) {\r\n break;\r\n }\r\n lastIncludedCharIndex--;\r\n } while (lastIncludedCharIndex > linkBeginIndex);\r\n // Handle links enclosed in parens, square brackets and curlys.\r\n if (linkBeginIndex > 0) {\r\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\r\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\r\n if ((charCodeBeforeLink === 40 /* OpenParen */ && lastCharCodeInLink === 41 /* CloseParen */)\r\n || (charCodeBeforeLink === 91 /* OpenSquareBracket */ && lastCharCodeInLink === 93 /* CloseSquareBracket */)\r\n || (charCodeBeforeLink === 123 /* OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CloseCurlyBrace */)) {\r\n // Do not end in ) if ( is before the link start\r\n // Do not end in ] if [ is before the link start\r\n // Do not end in } if { is before the link start\r\n lastIncludedCharIndex--;\r\n }\r\n }\r\n return {\r\n range: {\r\n startLineNumber: lineNumber,\r\n startColumn: linkBeginIndex + 1,\r\n endLineNumber: lineNumber,\r\n endColumn: lastIncludedCharIndex + 2\r\n },\r\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\r\n };\r\n }\r\n static computeLinks(model, stateMachine = getStateMachine()) {\r\n const classifier = getClassifier();\r\n let result = [];\r\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\r\n const line = model.getLineContent(i);\r\n const len = line.length;\r\n let j = 0;\r\n let linkBeginIndex = 0;\r\n let linkBeginChCode = 0;\r\n let state = 1 /* Start */;\r\n let hasOpenParens = false;\r\n let hasOpenSquareBracket = false;\r\n let inSquareBrackets = false;\r\n let hasOpenCurlyBracket = false;\r\n while (j < len) {\r\n let resetStateMachine = false;\r\n const chCode = line.charCodeAt(j);\r\n if (state === 13 /* Accept */) {\r\n let chClass;\r\n switch (chCode) {\r\n case 40 /* OpenParen */:\r\n hasOpenParens = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 41 /* CloseParen */:\r\n chClass = (hasOpenParens ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 91 /* OpenSquareBracket */:\r\n inSquareBrackets = true;\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 93 /* CloseSquareBracket */:\r\n inSquareBrackets = false;\r\n chClass = (hasOpenSquareBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 123 /* OpenCurlyBrace */:\r\n hasOpenCurlyBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 125 /* CloseCurlyBrace */:\r\n chClass = (hasOpenCurlyBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link began with a different one */\r\n case 39 /* SingleQuote */:\r\n chClass = (linkBeginChCode === 34 /* DoubleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 34 /* DoubleQuote */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 96 /* BackTick */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 34 /* DoubleQuote */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 42 /* Asterisk */:\r\n // `*` terminates a link if the link began with `*`\r\n chClass = (linkBeginChCode === 42 /* Asterisk */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 124 /* Pipe */:\r\n // `|` terminates a link if the link began with `|`\r\n chClass = (linkBeginChCode === 124 /* Pipe */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 32 /* Space */:\r\n // ` ` allow space in between [ and ]\r\n chClass = (inSquareBrackets ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n default:\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\r\n resetStateMachine = true;\r\n }\r\n }\r\n else if (state === 12 /* End */) {\r\n let chClass;\r\n if (chCode === 91 /* OpenSquareBracket */) {\r\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n }\r\n else {\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n resetStateMachine = true;\r\n }\r\n else {\r\n state = 13 /* Accept */;\r\n }\r\n }\r\n else {\r\n state = stateMachine.nextState(state, chCode);\r\n if (state === 0 /* Invalid */) {\r\n resetStateMachine = true;\r\n }\r\n }\r\n if (resetStateMachine) {\r\n state = 1 /* Start */;\r\n hasOpenParens = false;\r\n hasOpenSquareBracket = false;\r\n hasOpenCurlyBracket = false;\r\n // Record where the link started\r\n linkBeginIndex = j + 1;\r\n linkBeginChCode = chCode;\r\n }\r\n j++;\r\n }\r\n if (state === 13 /* Accept */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Returns an array of all links contains in the provided\r\n * document. *Note* that this operation is computational\r\n * expensive and should not run in the UI thread.\r\n */\r\nexport function computeLinks(model) {\r\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\r\n // Unknown caller!\r\n return [];\r\n }\r\n return LinkComputer.computeLinks(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nimport { LanguageConfigurationRegistry } from './languageConfigurationRegistry.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\n// Define extension point ids\r\nexport const Extensions = {\r\n ModesRegistry: 'editor.modesRegistry'\r\n};\r\nexport class EditorModesRegistry {\r\n constructor() {\r\n this._onDidChangeLanguages = new Emitter();\r\n this.onDidChangeLanguages = this._onDidChangeLanguages.event;\r\n this._languages = [];\r\n this._dynamicLanguages = [];\r\n }\r\n // --- languages\r\n registerLanguage(def) {\r\n this._languages.push(def);\r\n this._onDidChangeLanguages.fire(undefined);\r\n return {\r\n dispose: () => {\r\n for (let i = 0, len = this._languages.length; i < len; i++) {\r\n if (this._languages[i] === def) {\r\n this._languages.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLanguages() {\r\n return [].concat(this._languages).concat(this._dynamicLanguages);\r\n }\r\n}\r\nexport const ModesRegistry = new EditorModesRegistry();\r\nRegistry.add(Extensions.ModesRegistry, ModesRegistry);\r\nexport const PLAINTEXT_MODE_ID = 'plaintext';\r\nexport const PLAINTEXT_LANGUAGE_IDENTIFIER = new LanguageIdentifier(PLAINTEXT_MODE_ID, 1 /* PlainText */);\r\nModesRegistry.registerLanguage({\r\n id: PLAINTEXT_MODE_ID,\r\n extensions: ['.txt'],\r\n aliases: [nls.localize('plainText.alias', \"Plain Text\"), 'text'],\r\n mimetypes: ['text/plain']\r\n});\r\nLanguageConfigurationRegistry.register(PLAINTEXT_LANGUAGE_IDENTIFIER, {\r\n brackets: [\r\n ['(', ')'],\r\n ['[', ']'],\r\n ['{', '}'],\r\n ],\r\n surroundingPairs: [\r\n { open: '{', close: '}' },\r\n { open: '[', close: ']' },\r\n { open: '(', close: ')' },\r\n { open: '<', close: '>' },\r\n { open: '\\\"', close: '\\\"' },\r\n { open: '\\'', close: '\\'' },\r\n { open: '`', close: '`' },\r\n ],\r\n folding: {\r\n offSide: true\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../core/token.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nclass NullStateImpl {\r\n clone() {\r\n return this;\r\n }\r\n equals(other) {\r\n return (this === other);\r\n }\r\n}\r\nexport const NULL_STATE = new NullStateImpl();\r\nexport const NULL_MODE_ID = 'vs.editor.nullMode';\r\nexport const NULL_LANGUAGE_IDENTIFIER = new LanguageIdentifier(NULL_MODE_ID, 0 /* Null */);\r\nexport function nullTokenize(modeId, buffer, state, deltaOffset) {\r\n return new TokenizationResult([new Token(deltaOffset, '', modeId)], state);\r\n}\r\nexport function nullTokenize2(languageId, buffer, state, deltaOffset) {\r\n let tokens = new Uint32Array(2);\r\n tokens[0] = deltaOffset;\r\n tokens[1] = ((languageId << 0 /* LANGUAGEID_OFFSET */)\r\n | (0 /* Other */ << 8 /* TOKEN_TYPE_OFFSET */)\r\n | (0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n return new TokenizationResult2(tokens, state === null ? NULL_STATE : state);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function createScopedLineTokens(context, offset) {\r\n let tokenCount = context.getCount();\r\n let tokenIndex = context.findTokenIndexAtOffset(offset);\r\n let desiredLanguageId = context.getLanguageId(tokenIndex);\r\n let lastTokenIndex = tokenIndex;\r\n while (lastTokenIndex + 1 < tokenCount && context.getLanguageId(lastTokenIndex + 1) === desiredLanguageId) {\r\n lastTokenIndex++;\r\n }\r\n let firstTokenIndex = tokenIndex;\r\n while (firstTokenIndex > 0 && context.getLanguageId(firstTokenIndex - 1) === desiredLanguageId) {\r\n firstTokenIndex--;\r\n }\r\n return new ScopedLineTokens(context, desiredLanguageId, firstTokenIndex, lastTokenIndex + 1, context.getStartOffset(firstTokenIndex), context.getEndOffset(lastTokenIndex));\r\n}\r\nexport class ScopedLineTokens {\r\n constructor(actual, languageId, firstTokenIndex, lastTokenIndex, firstCharOffset, lastCharOffset) {\r\n this._actual = actual;\r\n this.languageId = languageId;\r\n this._firstTokenIndex = firstTokenIndex;\r\n this._lastTokenIndex = lastTokenIndex;\r\n this.firstCharOffset = firstCharOffset;\r\n this._lastCharOffset = lastCharOffset;\r\n }\r\n getLineContent() {\r\n const actualLineContent = this._actual.getLineContent();\r\n return actualLineContent.substring(this.firstCharOffset, this._lastCharOffset);\r\n }\r\n getActualLineContentBefore(offset) {\r\n const actualLineContent = this._actual.getLineContent();\r\n return actualLineContent.substring(0, this.firstCharOffset + offset);\r\n }\r\n getTokenCount() {\r\n return this._lastTokenIndex - this._firstTokenIndex;\r\n }\r\n findTokenIndexAtOffset(offset) {\r\n return this._actual.findTokenIndexAtOffset(offset + this.firstCharOffset) - this._firstTokenIndex;\r\n }\r\n getStandardTokenType(tokenIndex) {\r\n return this._actual.getStandardTokenType(tokenIndex + this._firstTokenIndex);\r\n }\r\n}\r\nexport function ignoreBracketsInToken(standardTokenType) {\r\n return (standardTokenType & 7 /* value */) !== 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { StandardAutoClosingPairConditional } from '../languageConfiguration.js';\r\nexport class CharacterPairSupport {\r\n constructor(config) {\r\n if (config.autoClosingPairs) {\r\n this._autoClosingPairs = config.autoClosingPairs.map(el => new StandardAutoClosingPairConditional(el));\r\n }\r\n else if (config.brackets) {\r\n this._autoClosingPairs = config.brackets.map(b => new StandardAutoClosingPairConditional({ open: b[0], close: b[1] }));\r\n }\r\n else {\r\n this._autoClosingPairs = [];\r\n }\r\n if (config.__electricCharacterSupport && config.__electricCharacterSupport.docComment) {\r\n const docComment = config.__electricCharacterSupport.docComment;\r\n // IDocComment is legacy, only partially supported\r\n this._autoClosingPairs.push(new StandardAutoClosingPairConditional({ open: docComment.open, close: docComment.close || '' }));\r\n }\r\n this._autoCloseBefore = typeof config.autoCloseBefore === 'string' ? config.autoCloseBefore : CharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED;\r\n this._surroundingPairs = config.surroundingPairs || this._autoClosingPairs;\r\n }\r\n getAutoClosingPairs() {\r\n return this._autoClosingPairs;\r\n }\r\n getAutoCloseBeforeSet() {\r\n return this._autoCloseBefore;\r\n }\r\n static shouldAutoClosePair(autoClosingPair, context, column) {\r\n // Always complete on empty line\r\n if (context.getTokenCount() === 0) {\r\n return true;\r\n }\r\n const tokenIndex = context.findTokenIndexAtOffset(column - 2);\r\n const standardTokenType = context.getStandardTokenType(tokenIndex);\r\n return autoClosingPair.isOK(standardTokenType);\r\n }\r\n getSurroundingPairs() {\r\n return this._surroundingPairs;\r\n }\r\n}\r\nCharacterPairSupport.DEFAULT_AUTOCLOSE_BEFORE_LANGUAGE_DEFINED = ';:.,=}])> \\n\\t';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ignoreBracketsInToken } from '../supports.js';\r\nimport { BracketsUtils } from './richEditBrackets.js';\r\nexport class BracketElectricCharacterSupport {\r\n constructor(richEditBrackets) {\r\n this._richEditBrackets = richEditBrackets;\r\n }\r\n getElectricCharacters() {\r\n let result = [];\r\n if (this._richEditBrackets) {\r\n for (const bracket of this._richEditBrackets.brackets) {\r\n for (const close of bracket.close) {\r\n const lastChar = close.charAt(close.length - 1);\r\n result.push(lastChar);\r\n }\r\n }\r\n }\r\n // Filter duplicate entries\r\n result = result.filter((item, pos, array) => {\r\n return array.indexOf(item) === pos;\r\n });\r\n return result;\r\n }\r\n onElectricCharacter(character, context, column) {\r\n if (!this._richEditBrackets || this._richEditBrackets.brackets.length === 0) {\r\n return null;\r\n }\r\n const tokenIndex = context.findTokenIndexAtOffset(column - 1);\r\n if (ignoreBracketsInToken(context.getStandardTokenType(tokenIndex))) {\r\n return null;\r\n }\r\n const reversedBracketRegex = this._richEditBrackets.reversedRegex;\r\n const text = context.getLineContent().substring(0, column - 1) + character;\r\n const r = BracketsUtils.findPrevBracketInRange(reversedBracketRegex, 1, text, 0, text.length);\r\n if (!r) {\r\n return null;\r\n }\r\n const bracketText = text.substring(r.startColumn - 1, r.endColumn - 1).toLowerCase();\r\n const isOpen = this._richEditBrackets.textIsOpenBracket[bracketText];\r\n if (isOpen) {\r\n return null;\r\n }\r\n const textBeforeBracket = context.getActualLineContentBefore(r.startColumn - 1);\r\n if (!/^\\s*$/.test(textBeforeBracket)) {\r\n // There is other text on the line before the bracket\r\n return null;\r\n }\r\n return {\r\n matchOpenBracket: bracketText\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class IndentRulesSupport {\r\n constructor(indentationRules) {\r\n this._indentationRules = indentationRules;\r\n }\r\n shouldIncrease(text) {\r\n if (this._indentationRules) {\r\n if (this._indentationRules.increaseIndentPattern && this._indentationRules.increaseIndentPattern.test(text)) {\r\n return true;\r\n }\r\n // if (this._indentationRules.indentNextLinePattern && this._indentationRules.indentNextLinePattern.test(text)) {\r\n // \treturn true;\r\n // }\r\n }\r\n return false;\r\n }\r\n shouldDecrease(text) {\r\n if (this._indentationRules && this._indentationRules.decreaseIndentPattern && this._indentationRules.decreaseIndentPattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldIndentNextLine(text) {\r\n if (this._indentationRules && this._indentationRules.indentNextLinePattern && this._indentationRules.indentNextLinePattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n shouldIgnore(text) {\r\n // the text matches `unIndentedLinePattern`\r\n if (this._indentationRules && this._indentationRules.unIndentedLinePattern && this._indentationRules.unIndentedLinePattern.test(text)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getIndentMetadata(text) {\r\n let ret = 0;\r\n if (this.shouldIncrease(text)) {\r\n ret += 1 /* INCREASE_MASK */;\r\n }\r\n if (this.shouldDecrease(text)) {\r\n ret += 2 /* DECREASE_MASK */;\r\n }\r\n if (this.shouldIndentNextLine(text)) {\r\n ret += 4 /* INDENT_NEXTLINE_MASK */;\r\n }\r\n if (this.shouldIgnore(text)) {\r\n ret += 8 /* UNINDENT_MASK */;\r\n }\r\n return ret;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class BasicInplaceReplace {\r\n constructor() {\r\n this._defaultValueSet = [\r\n ['true', 'false'],\r\n ['True', 'False'],\r\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\r\n ['public', 'protected', 'private'],\r\n ];\r\n }\r\n navigateValueSet(range1, text1, range2, text2, up) {\r\n if (range1 && text1) {\r\n let result = this.doNavigateValueSet(text1, up);\r\n if (result) {\r\n return {\r\n range: range1,\r\n value: result\r\n };\r\n }\r\n }\r\n if (range2 && text2) {\r\n let result = this.doNavigateValueSet(text2, up);\r\n if (result) {\r\n return {\r\n range: range2,\r\n value: result\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n doNavigateValueSet(text, up) {\r\n let numberResult = this.numberReplace(text, up);\r\n if (numberResult !== null) {\r\n return numberResult;\r\n }\r\n return this.textReplace(text, up);\r\n }\r\n numberReplace(value, up) {\r\n let precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\r\n let n1 = Number(value);\r\n let n2 = parseFloat(value);\r\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\r\n if (n1 === 0 && !up) {\r\n return null; // don't do negative\r\n //\t\t\t} else if(n1 === 9 && up) {\r\n //\t\t\t\treturn null; // don't insert 10 into a number\r\n }\r\n else {\r\n n1 = Math.floor(n1 * precision);\r\n n1 += up ? precision : -precision;\r\n return String(n1 / precision);\r\n }\r\n }\r\n return null;\r\n }\r\n textReplace(value, up) {\r\n return this.valueSetsReplace(this._defaultValueSet, value, up);\r\n }\r\n valueSetsReplace(valueSets, value, up) {\r\n let result = null;\r\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\r\n result = this.valueSetReplace(valueSets[i], value, up);\r\n }\r\n return result;\r\n }\r\n valueSetReplace(valueSet, value, up) {\r\n let idx = valueSet.indexOf(value);\r\n if (idx >= 0) {\r\n idx += up ? +1 : -1;\r\n if (idx < 0) {\r\n idx = valueSet.length - 1;\r\n }\r\n else {\r\n idx %= valueSet.length;\r\n }\r\n return valueSet[idx];\r\n }\r\n return null;\r\n }\r\n}\r\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { IndentAction } from '../languageConfiguration.js';\r\nexport class OnEnterSupport {\r\n constructor(opts) {\r\n opts = opts || {};\r\n opts.brackets = opts.brackets || [\r\n ['(', ')'],\r\n ['{', '}'],\r\n ['[', ']']\r\n ];\r\n this._brackets = [];\r\n opts.brackets.forEach((bracket) => {\r\n const openRegExp = OnEnterSupport._createOpenBracketRegExp(bracket[0]);\r\n const closeRegExp = OnEnterSupport._createCloseBracketRegExp(bracket[1]);\r\n if (openRegExp && closeRegExp) {\r\n this._brackets.push({\r\n open: bracket[0],\r\n openRegExp: openRegExp,\r\n close: bracket[1],\r\n closeRegExp: closeRegExp,\r\n });\r\n }\r\n });\r\n this._regExpRules = opts.onEnterRules || [];\r\n }\r\n onEnter(autoIndent, oneLineAboveText, beforeEnterText, afterEnterText) {\r\n // (1): `regExpRules`\r\n if (autoIndent >= 3 /* Advanced */) {\r\n for (let i = 0, len = this._regExpRules.length; i < len; i++) {\r\n let rule = this._regExpRules[i];\r\n const regResult = [{\r\n reg: rule.beforeText,\r\n text: beforeEnterText\r\n }, {\r\n reg: rule.afterText,\r\n text: afterEnterText\r\n }, {\r\n reg: rule.oneLineAboveText,\r\n text: oneLineAboveText\r\n }].every((obj) => {\r\n return obj.reg ? obj.reg.test(obj.text) : true;\r\n });\r\n if (regResult) {\r\n return rule.action;\r\n }\r\n }\r\n }\r\n // (2): Special indent-outdent\r\n if (autoIndent >= 2 /* Brackets */) {\r\n if (beforeEnterText.length > 0 && afterEnterText.length > 0) {\r\n for (let i = 0, len = this._brackets.length; i < len; i++) {\r\n let bracket = this._brackets[i];\r\n if (bracket.openRegExp.test(beforeEnterText) && bracket.closeRegExp.test(afterEnterText)) {\r\n return { indentAction: IndentAction.IndentOutdent };\r\n }\r\n }\r\n }\r\n }\r\n // (4): Open bracket based logic\r\n if (autoIndent >= 2 /* Brackets */) {\r\n if (beforeEnterText.length > 0) {\r\n for (let i = 0, len = this._brackets.length; i < len; i++) {\r\n let bracket = this._brackets[i];\r\n if (bracket.openRegExp.test(beforeEnterText)) {\r\n return { indentAction: IndentAction.Indent };\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n static _createOpenBracketRegExp(bracket) {\r\n let str = strings.escapeRegExpCharacters(bracket);\r\n if (!/\\B/.test(str.charAt(0))) {\r\n str = '\\\\b' + str;\r\n }\r\n str += '\\\\s*$';\r\n return OnEnterSupport._safeRegExp(str);\r\n }\r\n static _createCloseBracketRegExp(bracket) {\r\n let str = strings.escapeRegExpCharacters(bracket);\r\n if (!/\\B/.test(str.charAt(str.length - 1))) {\r\n str = str + '\\\\b';\r\n }\r\n str = '^\\\\s*' + str;\r\n return OnEnterSupport._safeRegExp(str);\r\n }\r\n static _safeRegExp(def) {\r\n try {\r\n return new RegExp(def);\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n return null;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport * as stringBuilder from '../../core/stringBuilder.js';\r\nimport { Range } from '../../core/range.js';\r\nexport class RichEditBracket {\r\n constructor(languageIdentifier, index, open, close, forwardRegex, reversedRegex) {\r\n this.languageIdentifier = languageIdentifier;\r\n this.index = index;\r\n this.open = open;\r\n this.close = close;\r\n this.forwardRegex = forwardRegex;\r\n this.reversedRegex = reversedRegex;\r\n this._openSet = RichEditBracket._toSet(this.open);\r\n this._closeSet = RichEditBracket._toSet(this.close);\r\n }\r\n isOpen(text) {\r\n return this._openSet.has(text);\r\n }\r\n isClose(text) {\r\n return this._closeSet.has(text);\r\n }\r\n static _toSet(arr) {\r\n const result = new Set();\r\n for (const element of arr) {\r\n result.add(element);\r\n }\r\n return result;\r\n }\r\n}\r\nfunction groupFuzzyBrackets(brackets) {\r\n const N = brackets.length;\r\n brackets = brackets.map(b => [b[0].toLowerCase(), b[1].toLowerCase()]);\r\n const group = [];\r\n for (let i = 0; i < N; i++) {\r\n group[i] = i;\r\n }\r\n const areOverlapping = (a, b) => {\r\n const [aOpen, aClose] = a;\r\n const [bOpen, bClose] = b;\r\n return (aOpen === bOpen || aOpen === bClose || aClose === bOpen || aClose === bClose);\r\n };\r\n const mergeGroups = (g1, g2) => {\r\n const newG = Math.min(g1, g2);\r\n const oldG = Math.max(g1, g2);\r\n for (let i = 0; i < N; i++) {\r\n if (group[i] === oldG) {\r\n group[i] = newG;\r\n }\r\n }\r\n };\r\n // group together brackets that have the same open or the same close sequence\r\n for (let i = 0; i < N; i++) {\r\n const a = brackets[i];\r\n for (let j = i + 1; j < N; j++) {\r\n const b = brackets[j];\r\n if (areOverlapping(a, b)) {\r\n mergeGroups(group[i], group[j]);\r\n }\r\n }\r\n }\r\n const result = [];\r\n for (let g = 0; g < N; g++) {\r\n let currentOpen = [];\r\n let currentClose = [];\r\n for (let i = 0; i < N; i++) {\r\n if (group[i] === g) {\r\n const [open, close] = brackets[i];\r\n currentOpen.push(open);\r\n currentClose.push(close);\r\n }\r\n }\r\n if (currentOpen.length > 0) {\r\n result.push({\r\n open: currentOpen,\r\n close: currentClose\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\nexport class RichEditBrackets {\r\n constructor(languageIdentifier, _brackets) {\r\n const brackets = groupFuzzyBrackets(_brackets);\r\n this.brackets = brackets.map((b, index) => {\r\n return new RichEditBracket(languageIdentifier, index, b.open, b.close, getRegexForBracketPair(b.open, b.close, brackets, index), getReversedRegexForBracketPair(b.open, b.close, brackets, index));\r\n });\r\n this.forwardRegex = getRegexForBrackets(this.brackets);\r\n this.reversedRegex = getReversedRegexForBrackets(this.brackets);\r\n this.textIsBracket = {};\r\n this.textIsOpenBracket = {};\r\n this.maxBracketLength = 0;\r\n for (const bracket of this.brackets) {\r\n for (const open of bracket.open) {\r\n this.textIsBracket[open] = bracket;\r\n this.textIsOpenBracket[open] = true;\r\n this.maxBracketLength = Math.max(this.maxBracketLength, open.length);\r\n }\r\n for (const close of bracket.close) {\r\n this.textIsBracket[close] = bracket;\r\n this.textIsOpenBracket[close] = false;\r\n this.maxBracketLength = Math.max(this.maxBracketLength, close.length);\r\n }\r\n }\r\n }\r\n}\r\nfunction collectSuperstrings(str, brackets, currentIndex, dest) {\r\n for (let i = 0, len = brackets.length; i < len; i++) {\r\n if (i === currentIndex) {\r\n continue;\r\n }\r\n const bracket = brackets[i];\r\n for (const open of bracket.open) {\r\n if (open.indexOf(str) >= 0) {\r\n dest.push(open);\r\n }\r\n }\r\n for (const close of bracket.close) {\r\n if (close.indexOf(str) >= 0) {\r\n dest.push(close);\r\n }\r\n }\r\n }\r\n}\r\nfunction lengthcmp(a, b) {\r\n return a.length - b.length;\r\n}\r\nfunction unique(arr) {\r\n if (arr.length <= 1) {\r\n return arr;\r\n }\r\n const result = [];\r\n const seen = new Set();\r\n for (const element of arr) {\r\n if (seen.has(element)) {\r\n continue;\r\n }\r\n result.push(element);\r\n seen.add(element);\r\n }\r\n return result;\r\n}\r\nfunction getRegexForBracketPair(open, close, brackets, currentIndex) {\r\n // search in all brackets for other brackets that are a superstring of these brackets\r\n let pieces = [];\r\n pieces = pieces.concat(open);\r\n pieces = pieces.concat(close);\r\n for (let i = 0, len = pieces.length; i < len; i++) {\r\n collectSuperstrings(pieces[i], brackets, currentIndex, pieces);\r\n }\r\n pieces = unique(pieces);\r\n pieces.sort(lengthcmp);\r\n pieces.reverse();\r\n return createBracketOrRegExp(pieces);\r\n}\r\nfunction getReversedRegexForBracketPair(open, close, brackets, currentIndex) {\r\n // search in all brackets for other brackets that are a superstring of these brackets\r\n let pieces = [];\r\n pieces = pieces.concat(open);\r\n pieces = pieces.concat(close);\r\n for (let i = 0, len = pieces.length; i < len; i++) {\r\n collectSuperstrings(pieces[i], brackets, currentIndex, pieces);\r\n }\r\n pieces = unique(pieces);\r\n pieces.sort(lengthcmp);\r\n pieces.reverse();\r\n return createBracketOrRegExp(pieces.map(toReversedString));\r\n}\r\nfunction getRegexForBrackets(brackets) {\r\n let pieces = [];\r\n for (const bracket of brackets) {\r\n for (const open of bracket.open) {\r\n pieces.push(open);\r\n }\r\n for (const close of bracket.close) {\r\n pieces.push(close);\r\n }\r\n }\r\n pieces = unique(pieces);\r\n return createBracketOrRegExp(pieces);\r\n}\r\nfunction getReversedRegexForBrackets(brackets) {\r\n let pieces = [];\r\n for (const bracket of brackets) {\r\n for (const open of bracket.open) {\r\n pieces.push(open);\r\n }\r\n for (const close of bracket.close) {\r\n pieces.push(close);\r\n }\r\n }\r\n pieces = unique(pieces);\r\n return createBracketOrRegExp(pieces.map(toReversedString));\r\n}\r\nfunction prepareBracketForRegExp(str) {\r\n // This bracket pair uses letters like e.g. \"begin\" - \"end\"\r\n const insertWordBoundaries = (/^[\\w ]+$/.test(str));\r\n str = strings.escapeRegExpCharacters(str);\r\n return (insertWordBoundaries ? `\\\\b${str}\\\\b` : str);\r\n}\r\nfunction createBracketOrRegExp(pieces) {\r\n let regexStr = `(${pieces.map(prepareBracketForRegExp).join(')|(')})`;\r\n return strings.createRegExp(regexStr, true);\r\n}\r\nconst toReversedString = (function () {\r\n function reverse(str) {\r\n if (stringBuilder.hasTextDecoder) {\r\n // create a Uint16Array and then use a TextDecoder to create a string\r\n const arr = new Uint16Array(str.length);\r\n let offset = 0;\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n arr[offset++] = str.charCodeAt(i);\r\n }\r\n return stringBuilder.getPlatformTextDecoder().decode(arr);\r\n }\r\n else {\r\n let result = [], resultLen = 0;\r\n for (let i = str.length - 1; i >= 0; i--) {\r\n result[resultLen++] = str.charAt(i);\r\n }\r\n return result.join('');\r\n }\r\n }\r\n let lastInput = null;\r\n let lastOutput = null;\r\n return function toReversedString(str) {\r\n if (lastInput !== str) {\r\n lastInput = str;\r\n lastOutput = reverse(lastInput);\r\n }\r\n return lastOutput;\r\n };\r\n})();\r\nexport class BracketsUtils {\r\n static _findPrevBracketInText(reversedBracketRegex, lineNumber, reversedText, offset) {\r\n let m = reversedText.match(reversedBracketRegex);\r\n if (!m) {\r\n return null;\r\n }\r\n let matchOffset = reversedText.length - (m.index || 0);\r\n let matchLength = m[0].length;\r\n let absoluteMatchOffset = offset + matchOffset;\r\n return new Range(lineNumber, absoluteMatchOffset - matchLength + 1, lineNumber, absoluteMatchOffset + 1);\r\n }\r\n static findPrevBracketInRange(reversedBracketRegex, lineNumber, lineText, startOffset, endOffset) {\r\n // Because JS does not support backwards regex search, we search forwards in a reversed string with a reversed regex ;)\r\n const reversedLineText = toReversedString(lineText);\r\n const reversedSubstr = reversedLineText.substring(lineText.length - endOffset, lineText.length - startOffset);\r\n return this._findPrevBracketInText(reversedBracketRegex, lineNumber, reversedSubstr, startOffset);\r\n }\r\n static findNextBracketInText(bracketRegex, lineNumber, text, offset) {\r\n let m = text.match(bracketRegex);\r\n if (!m) {\r\n return null;\r\n }\r\n let matchOffset = m.index || 0;\r\n let matchLength = m[0].length;\r\n if (matchLength === 0) {\r\n return null;\r\n }\r\n let absoluteMatchOffset = offset + matchOffset;\r\n return new Range(lineNumber, absoluteMatchOffset + 1, lineNumber, absoluteMatchOffset + 1 + matchLength);\r\n }\r\n static findNextBracketInRange(bracketRegex, lineNumber, lineText, startOffset, endOffset) {\r\n const substr = lineText.substring(startOffset, endOffset);\r\n return this.findNextBracketInText(bracketRegex, lineNumber, substr, startOffset);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Color } from '../../../../base/common/color.js';\r\nexport class ParsedTokenThemeRule {\r\n constructor(token, index, fontStyle, foreground, background) {\r\n this.token = token;\r\n this.index = index;\r\n this.fontStyle = fontStyle;\r\n this.foreground = foreground;\r\n this.background = background;\r\n }\r\n}\r\n/**\r\n * Parse a raw theme into rules.\r\n */\r\nexport function parseTokenTheme(source) {\r\n if (!source || !Array.isArray(source)) {\r\n return [];\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n let entry = source[i];\r\n let fontStyle = -1 /* NotSet */;\r\n if (typeof entry.fontStyle === 'string') {\r\n fontStyle = 0 /* None */;\r\n let segments = entry.fontStyle.split(' ');\r\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\r\n let segment = segments[j];\r\n switch (segment) {\r\n case 'italic':\r\n fontStyle = fontStyle | 1 /* Italic */;\r\n break;\r\n case 'bold':\r\n fontStyle = fontStyle | 2 /* Bold */;\r\n break;\r\n case 'underline':\r\n fontStyle = fontStyle | 4 /* Underline */;\r\n break;\r\n }\r\n }\r\n }\r\n let foreground = null;\r\n if (typeof entry.foreground === 'string') {\r\n foreground = entry.foreground;\r\n }\r\n let background = null;\r\n if (typeof entry.background === 'string') {\r\n background = entry.background;\r\n }\r\n result[resultLen++] = new ParsedTokenThemeRule(entry.token || '', i, fontStyle, foreground, background);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Resolve rules (i.e. inheritance).\r\n */\r\nfunction resolveParsedTokenThemeRules(parsedThemeRules, customTokenColors) {\r\n // Sort rules lexicographically, and then by index if necessary\r\n parsedThemeRules.sort((a, b) => {\r\n let r = strcmp(a.token, b.token);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n return a.index - b.index;\r\n });\r\n // Determine defaults\r\n let defaultFontStyle = 0 /* None */;\r\n let defaultForeground = '000000';\r\n let defaultBackground = 'ffffff';\r\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].token === '') {\r\n let incomingDefaults = parsedThemeRules.shift();\r\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\r\n defaultFontStyle = incomingDefaults.fontStyle;\r\n }\r\n if (incomingDefaults.foreground !== null) {\r\n defaultForeground = incomingDefaults.foreground;\r\n }\r\n if (incomingDefaults.background !== null) {\r\n defaultBackground = incomingDefaults.background;\r\n }\r\n }\r\n let colorMap = new ColorMap();\r\n // start with token colors from custom token themes\r\n for (let color of customTokenColors) {\r\n colorMap.getId(color);\r\n }\r\n let foregroundColorId = colorMap.getId(defaultForeground);\r\n let backgroundColorId = colorMap.getId(defaultBackground);\r\n let defaults = new ThemeTrieElementRule(defaultFontStyle, foregroundColorId, backgroundColorId);\r\n let root = new ThemeTrieElement(defaults);\r\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\r\n let rule = parsedThemeRules[i];\r\n root.insert(rule.token, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\r\n }\r\n return new TokenTheme(colorMap, root);\r\n}\r\nconst colorRegExp = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/;\r\nexport class ColorMap {\r\n constructor() {\r\n this._lastColorId = 0;\r\n this._id2color = [];\r\n this._color2id = new Map();\r\n }\r\n getId(color) {\r\n if (color === null) {\r\n return 0;\r\n }\r\n const match = color.match(colorRegExp);\r\n if (!match) {\r\n throw new Error('Illegal value for token color: ' + color);\r\n }\r\n color = match[1].toUpperCase();\r\n let value = this._color2id.get(color);\r\n if (value) {\r\n return value;\r\n }\r\n value = ++this._lastColorId;\r\n this._color2id.set(color, value);\r\n this._id2color[value] = Color.fromHex('#' + color);\r\n return value;\r\n }\r\n getColorMap() {\r\n return this._id2color.slice(0);\r\n }\r\n}\r\nexport class TokenTheme {\r\n constructor(colorMap, root) {\r\n this._colorMap = colorMap;\r\n this._root = root;\r\n this._cache = new Map();\r\n }\r\n static createFromRawTokenTheme(source, customTokenColors) {\r\n return this.createFromParsedTokenTheme(parseTokenTheme(source), customTokenColors);\r\n }\r\n static createFromParsedTokenTheme(source, customTokenColors) {\r\n return resolveParsedTokenThemeRules(source, customTokenColors);\r\n }\r\n getColorMap() {\r\n return this._colorMap.getColorMap();\r\n }\r\n _match(token) {\r\n return this._root.match(token);\r\n }\r\n match(languageId, token) {\r\n // The cache contains the metadata without the language bits set.\r\n let result = this._cache.get(token);\r\n if (typeof result === 'undefined') {\r\n let rule = this._match(token);\r\n let standardToken = toStandardTokenType(token);\r\n result = (rule.metadata\r\n | (standardToken << 8 /* TOKEN_TYPE_OFFSET */)) >>> 0;\r\n this._cache.set(token, result);\r\n }\r\n return (result\r\n | (languageId << 0 /* LANGUAGEID_OFFSET */)) >>> 0;\r\n }\r\n}\r\nconst STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|regexp)\\b/;\r\nexport function toStandardTokenType(tokenType) {\r\n let m = tokenType.match(STANDARD_TOKEN_TYPE_REGEXP);\r\n if (!m) {\r\n return 0 /* Other */;\r\n }\r\n switch (m[1]) {\r\n case 'comment':\r\n return 1 /* Comment */;\r\n case 'string':\r\n return 2 /* String */;\r\n case 'regex':\r\n return 4 /* RegEx */;\r\n case 'regexp':\r\n return 4 /* RegEx */;\r\n }\r\n throw new Error('Unexpected match for standard token type!');\r\n}\r\nexport function strcmp(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n if (a > b) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport class ThemeTrieElementRule {\r\n constructor(fontStyle, foreground, background) {\r\n this._fontStyle = fontStyle;\r\n this._foreground = foreground;\r\n this._background = background;\r\n this.metadata = ((this._fontStyle << 11 /* FONT_STYLE_OFFSET */)\r\n | (this._foreground << 14 /* FOREGROUND_OFFSET */)\r\n | (this._background << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n }\r\n clone() {\r\n return new ThemeTrieElementRule(this._fontStyle, this._foreground, this._background);\r\n }\r\n acceptOverwrite(fontStyle, foreground, background) {\r\n if (fontStyle !== -1 /* NotSet */) {\r\n this._fontStyle = fontStyle;\r\n }\r\n if (foreground !== 0 /* None */) {\r\n this._foreground = foreground;\r\n }\r\n if (background !== 0 /* None */) {\r\n this._background = background;\r\n }\r\n this.metadata = ((this._fontStyle << 11 /* FONT_STYLE_OFFSET */)\r\n | (this._foreground << 14 /* FOREGROUND_OFFSET */)\r\n | (this._background << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n }\r\n}\r\nexport class ThemeTrieElement {\r\n constructor(mainRule) {\r\n this._mainRule = mainRule;\r\n this._children = new Map();\r\n }\r\n match(token) {\r\n if (token === '') {\r\n return this._mainRule;\r\n }\r\n let dotIndex = token.indexOf('.');\r\n let head;\r\n let tail;\r\n if (dotIndex === -1) {\r\n head = token;\r\n tail = '';\r\n }\r\n else {\r\n head = token.substring(0, dotIndex);\r\n tail = token.substring(dotIndex + 1);\r\n }\r\n let child = this._children.get(head);\r\n if (typeof child !== 'undefined') {\r\n return child.match(tail);\r\n }\r\n return this._mainRule;\r\n }\r\n insert(token, fontStyle, foreground, background) {\r\n if (token === '') {\r\n // Merge into the main rule\r\n this._mainRule.acceptOverwrite(fontStyle, foreground, background);\r\n return;\r\n }\r\n let dotIndex = token.indexOf('.');\r\n let head;\r\n let tail;\r\n if (dotIndex === -1) {\r\n head = token;\r\n tail = '';\r\n }\r\n else {\r\n head = token.substring(0, dotIndex);\r\n tail = token.substring(dotIndex + 1);\r\n }\r\n let child = this._children.get(head);\r\n if (typeof child === 'undefined') {\r\n child = new ThemeTrieElement(this._mainRule.clone());\r\n this._children.set(head, child);\r\n }\r\n child.insert(tail, fontStyle, foreground, background);\r\n }\r\n}\r\nexport function generateTokensCSSForColorMap(colorMap) {\r\n let rules = [];\r\n for (let i = 1, len = colorMap.length; i < len; i++) {\r\n let color = colorMap[i];\r\n rules[i] = `.mtk${i} { color: ${color}; }`;\r\n }\r\n rules.push('.mtki { font-style: italic; }');\r\n rules.push('.mtkb { font-weight: bold; }');\r\n rules.push('.mtku { text-decoration: underline; text-underline-position: under; }');\r\n return rules.join('\\n');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LineTokens } from '../core/lineTokens.js';\r\nimport { NULL_STATE, nullTokenize2 } from './nullMode.js';\r\nconst fallback = {\r\n getInitialState: () => NULL_STATE,\r\n tokenize2: (buffer, state, deltaOffset) => nullTokenize2(0 /* Null */, buffer, state, deltaOffset)\r\n};\r\nexport function tokenizeToString(text, tokenizationSupport = fallback) {\r\n return _tokenizeToString(text, tokenizationSupport || fallback);\r\n}\r\nexport function tokenizeLineToHTML(text, viewLineTokens, colorMap, startOffset, endOffset, tabSize, useNbsp) {\r\n let result = `<div>`;\r\n let charIndex = startOffset;\r\n let tabsCharDelta = 0;\r\n for (let tokenIndex = 0, tokenCount = viewLineTokens.getCount(); tokenIndex < tokenCount; tokenIndex++) {\r\n const tokenEndIndex = viewLineTokens.getEndOffset(tokenIndex);\r\n if (tokenEndIndex <= startOffset) {\r\n continue;\r\n }\r\n let partContent = '';\r\n for (; charIndex < tokenEndIndex && charIndex < endOffset; charIndex++) {\r\n const charCode = text.charCodeAt(charIndex);\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n let insertSpacesCount = tabSize - (charIndex + tabsCharDelta) % tabSize;\r\n tabsCharDelta += insertSpacesCount - 1;\r\n while (insertSpacesCount > 0) {\r\n partContent += useNbsp ? ' ' : ' ';\r\n insertSpacesCount--;\r\n }\r\n break;\r\n case 60 /* LessThan */:\r\n partContent += '<';\r\n break;\r\n case 62 /* GreaterThan */:\r\n partContent += '>';\r\n break;\r\n case 38 /* Ampersand */:\r\n partContent += '&';\r\n break;\r\n case 0 /* Null */:\r\n partContent += '�';\r\n break;\r\n case 65279 /* UTF8_BOM */:\r\n case 8232 /* LINE_SEPARATOR */:\r\n case 8233 /* PARAGRAPH_SEPARATOR */:\r\n case 133 /* NEXT_LINE */:\r\n partContent += '\\ufffd';\r\n break;\r\n case 13 /* CarriageReturn */:\r\n // zero width space, because carriage return would introduce a line break\r\n partContent += '​';\r\n break;\r\n case 32 /* Space */:\r\n partContent += useNbsp ? ' ' : ' ';\r\n break;\r\n default:\r\n partContent += String.fromCharCode(charCode);\r\n }\r\n }\r\n result += `<span style=\"${viewLineTokens.getInlineStyle(tokenIndex, colorMap)}\">${partContent}</span>`;\r\n if (tokenEndIndex > endOffset || charIndex >= endOffset) {\r\n break;\r\n }\r\n }\r\n result += `</div>`;\r\n return result;\r\n}\r\nfunction _tokenizeToString(text, tokenizationSupport) {\r\n let result = `<div class=\"monaco-tokenized-source\">`;\r\n let lines = text.split(/\\r\\n|\\r|\\n/);\r\n let currentState = tokenizationSupport.getInitialState();\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n let line = lines[i];\r\n if (i > 0) {\r\n result += `<br/>`;\r\n }\r\n let tokenizationResult = tokenizationSupport.tokenize2(line, currentState, 0);\r\n LineTokens.convertToEndOffset(tokenizationResult.tokens, line.length);\r\n let lineTokens = new LineTokens(tokenizationResult.tokens, line);\r\n let viewLineTokens = lineTokens.inflate();\r\n let startOffset = 0;\r\n for (let j = 0, lenJ = viewLineTokens.getCount(); j < lenJ; j++) {\r\n const type = viewLineTokens.getClassName(j);\r\n const endIndex = viewLineTokens.getEndOffset(j);\r\n result += `<span class=\"${type}\">${strings.escape(line.substring(startOffset, endIndex))}</span>`;\r\n startOffset = endIndex;\r\n }\r\n currentState = tokenizationResult.endState;\r\n }\r\n result += `</div>`;\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nexport class TokenizationRegistryImpl {\r\n constructor() {\r\n this._map = new Map();\r\n this._promises = new Map();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._colorMap = null;\r\n }\r\n fire(languages) {\r\n this._onDidChange.fire({\r\n changedLanguages: languages,\r\n changedColorMap: false\r\n });\r\n }\r\n register(language, support) {\r\n this._map.set(language, support);\r\n this.fire([language]);\r\n return toDisposable(() => {\r\n if (this._map.get(language) !== support) {\r\n return;\r\n }\r\n this._map.delete(language);\r\n this.fire([language]);\r\n });\r\n }\r\n registerPromise(language, supportPromise) {\r\n let registration = null;\r\n let isDisposed = false;\r\n this._promises.set(language, supportPromise.then(support => {\r\n this._promises.delete(language);\r\n if (isDisposed || !support) {\r\n return;\r\n }\r\n registration = this.register(language, support);\r\n }));\r\n return toDisposable(() => {\r\n isDisposed = true;\r\n if (registration) {\r\n registration.dispose();\r\n }\r\n });\r\n }\r\n getPromise(language) {\r\n const support = this.get(language);\r\n if (support) {\r\n return Promise.resolve(support);\r\n }\r\n const promise = this._promises.get(language);\r\n if (promise) {\r\n return promise.then(_ => this.get(language));\r\n }\r\n return null;\r\n }\r\n get(language) {\r\n return (this._map.get(language) || null);\r\n }\r\n setColorMap(colorMap) {\r\n this._colorMap = colorMap;\r\n this._onDidChange.fire({\r\n changedLanguages: Array.from(this._map.keys()),\r\n changedColorMap: true\r\n });\r\n }\r\n getColorMap() {\r\n return this._colorMap;\r\n }\r\n getDefaultBackground() {\r\n if (this._colorMap && this._colorMap.length > 2 /* DefaultBackground */) {\r\n return this._colorMap[2 /* DefaultBackground */];\r\n }\r\n return null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { mergeSort } from '../../../base/common/arrays.js';\r\nimport { stringDiff } from '../../../base/common/diff/diff.js';\r\nimport { globals } from '../../../base/common/platform.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { DiffComputer } from '../diff/diffComputer.js';\r\nimport { MirrorTextModel as BaseMirrorModel } from '../model/mirrorTextModel.js';\r\nimport { ensureValidWordDefinition, getWordAtText } from '../model/wordHelper.js';\r\nimport { computeLinks } from '../modes/linkComputer.js';\r\nimport { BasicInplaceReplace } from '../modes/supports/inplaceReplaceSupport.js';\r\nimport { createMonacoBaseAPI } from '../standalone/standaloneBase.js';\r\nimport * as types from '../../../base/common/types.js';\r\n/**\r\n * @internal\r\n */\r\nclass MirrorModel extends BaseMirrorModel {\r\n get uri() {\r\n return this._uri;\r\n }\r\n get version() {\r\n return this._versionId;\r\n }\r\n get eol() {\r\n return this._eol;\r\n }\r\n getValue() {\r\n return this.getText();\r\n }\r\n getLinesContent() {\r\n return this._lines.slice(0);\r\n }\r\n getLineCount() {\r\n return this._lines.length;\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines[lineNumber - 1];\r\n }\r\n getWordAtPosition(position, wordDefinition) {\r\n let wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\r\n if (wordAtText) {\r\n return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\r\n }\r\n return null;\r\n }\r\n words(wordDefinition) {\r\n const lines = this._lines;\r\n const wordenize = this._wordenize.bind(this);\r\n let lineNumber = 0;\r\n let lineText = '';\r\n let wordRangesIdx = 0;\r\n let wordRanges = [];\r\n return {\r\n *[Symbol.iterator]() {\r\n while (true) {\r\n if (wordRangesIdx < wordRanges.length) {\r\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\r\n wordRangesIdx += 1;\r\n yield value;\r\n }\r\n else {\r\n if (lineNumber < lines.length) {\r\n lineText = lines[lineNumber];\r\n wordRanges = wordenize(lineText, wordDefinition);\r\n wordRangesIdx = 0;\r\n lineNumber += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLineWords(lineNumber, wordDefinition) {\r\n let content = this._lines[lineNumber - 1];\r\n let ranges = this._wordenize(content, wordDefinition);\r\n let words = [];\r\n for (const range of ranges) {\r\n words.push({\r\n word: content.substring(range.start, range.end),\r\n startColumn: range.start + 1,\r\n endColumn: range.end + 1\r\n });\r\n }\r\n return words;\r\n }\r\n _wordenize(content, wordDefinition) {\r\n const result = [];\r\n let match;\r\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\r\n while (match = wordDefinition.exec(content)) {\r\n if (match[0].length === 0) {\r\n // it did match the empty string\r\n break;\r\n }\r\n result.push({ start: match.index, end: match.index + match[0].length });\r\n }\r\n return result;\r\n }\r\n getValueInRange(range) {\r\n range = this._validateRange(range);\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\r\n }\r\n let lineEnding = this._eol;\r\n let startLineIndex = range.startLineNumber - 1;\r\n let endLineIndex = range.endLineNumber - 1;\r\n let resultLines = [];\r\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\r\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\r\n resultLines.push(this._lines[i]);\r\n }\r\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\r\n return resultLines.join(lineEnding);\r\n }\r\n offsetAt(position) {\r\n position = this._validatePosition(position);\r\n this._ensureLineStarts();\r\n return this._lineStarts.getAccumulatedValue(position.lineNumber - 2) + (position.column - 1);\r\n }\r\n positionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n this._ensureLineStarts();\r\n let out = this._lineStarts.getIndexOf(offset);\r\n let lineLength = this._lines[out.index].length;\r\n // Ensure we return a valid position\r\n return {\r\n lineNumber: 1 + out.index,\r\n column: 1 + Math.min(out.remainder, lineLength)\r\n };\r\n }\r\n _validateRange(range) {\r\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\r\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\r\n if (start.lineNumber !== range.startLineNumber\r\n || start.column !== range.startColumn\r\n || end.lineNumber !== range.endLineNumber\r\n || end.column !== range.endColumn) {\r\n return {\r\n startLineNumber: start.lineNumber,\r\n startColumn: start.column,\r\n endLineNumber: end.lineNumber,\r\n endColumn: end.column\r\n };\r\n }\r\n return range;\r\n }\r\n _validatePosition(position) {\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('bad position');\r\n }\r\n let { lineNumber, column } = position;\r\n let hasChanged = false;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (lineNumber > this._lines.length) {\r\n lineNumber = this._lines.length;\r\n column = this._lines[lineNumber - 1].length + 1;\r\n hasChanged = true;\r\n }\r\n else {\r\n let maxCharacter = this._lines[lineNumber - 1].length + 1;\r\n if (column < 1) {\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (column > maxCharacter) {\r\n column = maxCharacter;\r\n hasChanged = true;\r\n }\r\n }\r\n if (!hasChanged) {\r\n return position;\r\n }\r\n else {\r\n return { lineNumber, column };\r\n }\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorSimpleWorker {\r\n constructor(host, foreignModuleFactory) {\r\n this._host = host;\r\n this._models = Object.create(null);\r\n this._foreignModuleFactory = foreignModuleFactory;\r\n this._foreignModule = null;\r\n }\r\n dispose() {\r\n this._models = Object.create(null);\r\n }\r\n _getModel(uri) {\r\n return this._models[uri];\r\n }\r\n _getModels() {\r\n let all = [];\r\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\r\n return all;\r\n }\r\n acceptNewModel(data) {\r\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\r\n }\r\n acceptModelChanged(strURL, e) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n let model = this._models[strURL];\r\n model.onEvents(e);\r\n }\r\n acceptRemovedModel(strURL) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n delete this._models[strURL];\r\n }\r\n // ---- BEGIN diff --------------------------------------------------------------------------\r\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const original = this._getModel(originalUrl);\r\n const modified = this._getModel(modifiedUrl);\r\n if (!original || !modified) {\r\n return null;\r\n }\r\n const originalLines = original.getLinesContent();\r\n const modifiedLines = modified.getLinesContent();\r\n const diffComputer = new DiffComputer(originalLines, modifiedLines, {\r\n shouldComputeCharChanges: true,\r\n shouldPostProcessCharChanges: true,\r\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\r\n shouldMakePrettyDiff: true,\r\n maxComputationTime: maxComputationTime\r\n });\r\n const diffResult = diffComputer.computeDiff();\r\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(original, modified));\r\n return {\r\n quitEarly: diffResult.quitEarly,\r\n identical: identical,\r\n changes: diffResult.changes\r\n };\r\n });\r\n }\r\n _modelsAreIdentical(original, modified) {\r\n const originalLineCount = original.getLineCount();\r\n const modifiedLineCount = modified.getLineCount();\r\n if (originalLineCount !== modifiedLineCount) {\r\n return false;\r\n }\r\n for (let line = 1; line <= originalLineCount; line++) {\r\n const originalLine = original.getLineContent(line);\r\n const modifiedLine = modified.getLineContent(line);\r\n if (originalLine !== modifiedLine) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n computeMoreMinimalEdits(modelUrl, edits) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return edits;\r\n }\r\n const result = [];\r\n let lastEol = undefined;\r\n edits = mergeSort(edits, (a, b) => {\r\n if (a.range && b.range) {\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n // eol only changes should go to the end\r\n let aRng = a.range ? 0 : 1;\r\n let bRng = b.range ? 0 : 1;\r\n return aRng - bRng;\r\n });\r\n for (let { range, text, eol } of edits) {\r\n if (typeof eol === 'number') {\r\n lastEol = eol;\r\n }\r\n if (Range.isEmpty(range) && !text) {\r\n // empty change\r\n continue;\r\n }\r\n const original = model.getValueInRange(range);\r\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\r\n if (original === text) {\r\n // noop\r\n continue;\r\n }\r\n // make sure diff won't take too long\r\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\r\n result.push({ range, text });\r\n continue;\r\n }\r\n // compute diff between original and edit.text\r\n const changes = stringDiff(original, text, false);\r\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\r\n for (const change of changes) {\r\n const start = model.positionAt(editOffset + change.originalStart);\r\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\r\n const newEdit = {\r\n text: text.substr(change.modifiedStart, change.modifiedLength),\r\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\r\n };\r\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\r\n result.push(newEdit);\r\n }\r\n }\r\n }\r\n if (typeof lastEol === 'number') {\r\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\r\n }\r\n return result;\r\n });\r\n }\r\n // ---- END minimal edits ---------------------------------------------------------------\r\n computeLinks(modelUrl) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n return computeLinks(model);\r\n });\r\n }\r\n textualSuggest(modelUrl, position, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n const words = [];\r\n const seen = new Set();\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const wordAt = model.getWordAtPosition(position, wordDefRegExp);\r\n if (wordAt) {\r\n seen.add(model.getValueInRange(wordAt));\r\n }\r\n for (let word of model.words(wordDefRegExp)) {\r\n if (seen.has(word)) {\r\n continue;\r\n }\r\n seen.add(word);\r\n if (!isNaN(Number(word))) {\r\n continue;\r\n }\r\n words.push(word);\r\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\r\n break;\r\n }\r\n }\r\n return words;\r\n });\r\n }\r\n // ---- END suggest --------------------------------------------------------------------------\r\n //#region -- word ranges --\r\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return Object.create(null);\r\n }\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const result = Object.create(null);\r\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\r\n let words = model.getLineWords(line, wordDefRegExp);\r\n for (const word of words) {\r\n if (!isNaN(Number(word.word))) {\r\n continue;\r\n }\r\n let array = result[word.word];\r\n if (!array) {\r\n array = [];\r\n result[word.word] = array;\r\n }\r\n array.push({\r\n startLineNumber: line,\r\n startColumn: word.startColumn,\r\n endLineNumber: line,\r\n endColumn: word.endColumn\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n //#endregion\r\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n if (range.startColumn === range.endColumn) {\r\n range = {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: range.startColumn,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: range.endColumn + 1\r\n };\r\n }\r\n let selectionText = model.getValueInRange(range);\r\n let wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\r\n if (!wordRange) {\r\n return null;\r\n }\r\n let word = model.getValueInRange(wordRange);\r\n let result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\r\n return result;\r\n });\r\n }\r\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\r\n loadForeignModule(moduleId, createData, foreignHostMethods) {\r\n const proxyMethodRequest = (method, args) => {\r\n return this._host.fhr(method, args);\r\n };\r\n const foreignHost = types.createProxyObject(foreignHostMethods, proxyMethodRequest);\r\n let ctx = {\r\n host: foreignHost,\r\n getMirrorModels: () => {\r\n return this._getModels();\r\n }\r\n };\r\n if (this._foreignModuleFactory) {\r\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\r\n // static foreing module\r\n return Promise.resolve(types.getAllMethodNames(this._foreignModule));\r\n }\r\n // ESM-comment-begin\r\n // \t\treturn new Promise<any>((resolve, reject) => {\r\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\r\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\r\n // \r\n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\r\n // \r\n // \t\t\t}, reject);\r\n // \t\t});\r\n // ESM-comment-end\r\n // ESM-uncomment-begin\r\n return Promise.reject(new Error(`Unexpected usage`));\r\n // ESM-uncomment-end\r\n }\r\n // foreign method request\r\n fmr(method, args) {\r\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n// ---- END diff --------------------------------------------------------------------------\r\n// ---- BEGIN minimal edits ---------------------------------------------------------------\r\nEditorSimpleWorker._diffLimit = 100000;\r\n// ---- BEGIN suggest --------------------------------------------------------------------------\r\nEditorSimpleWorker._suggestionsLimit = 10000;\r\n/**\r\n * Called on the worker side\r\n * @internal\r\n */\r\nexport function create(host) {\r\n return new EditorSimpleWorker(host, null);\r\n}\r\nif (typeof importScripts === 'function') {\r\n // Running in a web worker\r\n globals.monaco = createMonacoBaseAPI();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ID_EDITOR_WORKER_SERVICE = 'editorWorkerService';\r\nexport const IEditorWorkerService = createDecorator(ID_EDITOR_WORKER_SERVICE);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { IntervalTimer } from '../../../base/common/async.js';\r\nimport { Disposable, dispose, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { SimpleWorkerClient, logOnceWebWorkerWarning } from '../../../base/common/worker/simpleWorker.js';\r\nimport { DefaultWorkerFactory } from '../../../base/worker/defaultWorkerFactory.js';\r\nimport { Range } from '../core/range.js';\r\nimport * as modes from '../modes.js';\r\nimport { LanguageConfigurationRegistry } from '../modes/languageConfigurationRegistry.js';\r\nimport { EditorSimpleWorker } from './editorSimpleWorker.js';\r\nimport { IModelService } from './modelService.js';\r\nimport { ITextResourceConfigurationService } from './textResourceConfigurationService.js';\r\nimport { regExpFlags } from '../../../base/common/strings.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { canceled } from '../../../base/common/errors.js';\r\n/**\r\n * Stop syncing a model to the worker if it was not needed for 1 min.\r\n */\r\nconst STOP_SYNC_MODEL_DELTA_TIME_MS = 60 * 1000;\r\n/**\r\n * Stop the worker if it was not needed for 5 min.\r\n */\r\nconst STOP_WORKER_DELTA_TIME_MS = 5 * 60 * 1000;\r\nfunction canSyncModel(modelService, resource) {\r\n let model = modelService.getModel(resource);\r\n if (!model) {\r\n return false;\r\n }\r\n if (model.isTooLargeForSyncing()) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nlet EditorWorkerServiceImpl = class EditorWorkerServiceImpl extends Disposable {\r\n constructor(modelService, configurationService, logService) {\r\n super();\r\n this._modelService = modelService;\r\n this._workerManager = this._register(new WorkerManager(this._modelService));\r\n this._logService = logService;\r\n // register default link-provider and default completions-provider\r\n this._register(modes.LinkProviderRegistry.register('*', {\r\n provideLinks: (model, token) => {\r\n if (!canSyncModel(this._modelService, model.uri)) {\r\n return Promise.resolve({ links: [] }); // File too large\r\n }\r\n return this._workerManager.withWorker().then(client => client.computeLinks(model.uri)).then(links => {\r\n return links && { links };\r\n });\r\n }\r\n }));\r\n this._register(modes.CompletionProviderRegistry.register('*', new WordBasedCompletionItemProvider(this._workerManager, configurationService, this._modelService)));\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n canComputeDiff(original, modified) {\r\n return (canSyncModel(this._modelService, original) && canSyncModel(this._modelService, modified));\r\n }\r\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\r\n return this._workerManager.withWorker().then(client => client.computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime));\r\n }\r\n computeMoreMinimalEdits(resource, edits) {\r\n if (isNonEmptyArray(edits)) {\r\n if (!canSyncModel(this._modelService, resource)) {\r\n return Promise.resolve(edits); // File too large\r\n }\r\n const sw = StopWatch.create(true);\r\n const result = this._workerManager.withWorker().then(client => client.computeMoreMinimalEdits(resource, edits));\r\n result.finally(() => this._logService.trace('FORMAT#computeMoreMinimalEdits', resource.toString(true), sw.elapsed()));\r\n return result;\r\n }\r\n else {\r\n return Promise.resolve(undefined);\r\n }\r\n }\r\n canNavigateValueSet(resource) {\r\n return (canSyncModel(this._modelService, resource));\r\n }\r\n navigateValueSet(resource, range, up) {\r\n return this._workerManager.withWorker().then(client => client.navigateValueSet(resource, range, up));\r\n }\r\n canComputeWordRanges(resource) {\r\n return canSyncModel(this._modelService, resource);\r\n }\r\n computeWordRanges(resource, range) {\r\n return this._workerManager.withWorker().then(client => client.computeWordRanges(resource, range));\r\n }\r\n};\r\nEditorWorkerServiceImpl = __decorate([\r\n __param(0, IModelService),\r\n __param(1, ITextResourceConfigurationService),\r\n __param(2, ILogService)\r\n], EditorWorkerServiceImpl);\r\nexport { EditorWorkerServiceImpl };\r\nclass WordBasedCompletionItemProvider {\r\n constructor(workerManager, configurationService, modelService) {\r\n this._debugDisplayName = 'wordbasedCompletions';\r\n this._workerManager = workerManager;\r\n this._configurationService = configurationService;\r\n this._modelService = modelService;\r\n }\r\n provideCompletionItems(model, position) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { wordBasedSuggestions } = this._configurationService.getValue(model.uri, position, 'editor');\r\n if (!wordBasedSuggestions) {\r\n return undefined;\r\n }\r\n if (!canSyncModel(this._modelService, model.uri)) {\r\n return undefined; // File too large\r\n }\r\n const word = model.getWordAtPosition(position);\r\n const replace = !word ? Range.fromPositions(position) : new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n const insert = replace.setEndPosition(position.lineNumber, position.column);\r\n const client = yield this._workerManager.withWorker();\r\n const words = yield client.textualSuggest(model.uri, position);\r\n if (!words) {\r\n return undefined;\r\n }\r\n return {\r\n suggestions: words.map((word) => {\r\n return {\r\n kind: 18 /* Text */,\r\n label: word,\r\n insertText: word,\r\n range: { insert, replace }\r\n };\r\n })\r\n };\r\n });\r\n }\r\n}\r\nclass WorkerManager extends Disposable {\r\n constructor(modelService) {\r\n super();\r\n this._modelService = modelService;\r\n this._editorWorkerClient = null;\r\n this._lastWorkerUsedTime = (new Date()).getTime();\r\n let stopWorkerInterval = this._register(new IntervalTimer());\r\n stopWorkerInterval.cancelAndSet(() => this._checkStopIdleWorker(), Math.round(STOP_WORKER_DELTA_TIME_MS / 2));\r\n this._register(this._modelService.onModelRemoved(_ => this._checkStopEmptyWorker()));\r\n }\r\n dispose() {\r\n if (this._editorWorkerClient) {\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n super.dispose();\r\n }\r\n /**\r\n * Check if the model service has no more models and stop the worker if that is the case.\r\n */\r\n _checkStopEmptyWorker() {\r\n if (!this._editorWorkerClient) {\r\n return;\r\n }\r\n let models = this._modelService.getModels();\r\n if (models.length === 0) {\r\n // There are no more models => nothing possible for me to do\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n }\r\n /**\r\n * Check if the worker has been idle for a while and then stop it.\r\n */\r\n _checkStopIdleWorker() {\r\n if (!this._editorWorkerClient) {\r\n return;\r\n }\r\n let timeSinceLastWorkerUsedTime = (new Date()).getTime() - this._lastWorkerUsedTime;\r\n if (timeSinceLastWorkerUsedTime > STOP_WORKER_DELTA_TIME_MS) {\r\n this._editorWorkerClient.dispose();\r\n this._editorWorkerClient = null;\r\n }\r\n }\r\n withWorker() {\r\n this._lastWorkerUsedTime = (new Date()).getTime();\r\n if (!this._editorWorkerClient) {\r\n this._editorWorkerClient = new EditorWorkerClient(this._modelService, false, 'editorWorkerService');\r\n }\r\n return Promise.resolve(this._editorWorkerClient);\r\n }\r\n}\r\nclass EditorModelManager extends Disposable {\r\n constructor(proxy, modelService, keepIdleModels) {\r\n super();\r\n this._syncedModels = Object.create(null);\r\n this._syncedModelsLastUsedTime = Object.create(null);\r\n this._proxy = proxy;\r\n this._modelService = modelService;\r\n if (!keepIdleModels) {\r\n let timer = new IntervalTimer();\r\n timer.cancelAndSet(() => this._checkStopModelSync(), Math.round(STOP_SYNC_MODEL_DELTA_TIME_MS / 2));\r\n this._register(timer);\r\n }\r\n }\r\n dispose() {\r\n for (let modelUrl in this._syncedModels) {\r\n dispose(this._syncedModels[modelUrl]);\r\n }\r\n this._syncedModels = Object.create(null);\r\n this._syncedModelsLastUsedTime = Object.create(null);\r\n super.dispose();\r\n }\r\n ensureSyncedResources(resources) {\r\n for (const resource of resources) {\r\n let resourceStr = resource.toString();\r\n if (!this._syncedModels[resourceStr]) {\r\n this._beginModelSync(resource);\r\n }\r\n if (this._syncedModels[resourceStr]) {\r\n this._syncedModelsLastUsedTime[resourceStr] = (new Date()).getTime();\r\n }\r\n }\r\n }\r\n _checkStopModelSync() {\r\n let currentTime = (new Date()).getTime();\r\n let toRemove = [];\r\n for (let modelUrl in this._syncedModelsLastUsedTime) {\r\n let elapsedTime = currentTime - this._syncedModelsLastUsedTime[modelUrl];\r\n if (elapsedTime > STOP_SYNC_MODEL_DELTA_TIME_MS) {\r\n toRemove.push(modelUrl);\r\n }\r\n }\r\n for (const e of toRemove) {\r\n this._stopModelSync(e);\r\n }\r\n }\r\n _beginModelSync(resource) {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return;\r\n }\r\n if (model.isTooLargeForSyncing()) {\r\n return;\r\n }\r\n let modelUrl = resource.toString();\r\n this._proxy.acceptNewModel({\r\n url: model.uri.toString(),\r\n lines: model.getLinesContent(),\r\n EOL: model.getEOL(),\r\n versionId: model.getVersionId()\r\n });\r\n const toDispose = new DisposableStore();\r\n toDispose.add(model.onDidChangeContent((e) => {\r\n this._proxy.acceptModelChanged(modelUrl.toString(), e);\r\n }));\r\n toDispose.add(model.onWillDispose(() => {\r\n this._stopModelSync(modelUrl);\r\n }));\r\n toDispose.add(toDisposable(() => {\r\n this._proxy.acceptRemovedModel(modelUrl);\r\n }));\r\n this._syncedModels[modelUrl] = toDispose;\r\n }\r\n _stopModelSync(modelUrl) {\r\n let toDispose = this._syncedModels[modelUrl];\r\n delete this._syncedModels[modelUrl];\r\n delete this._syncedModelsLastUsedTime[modelUrl];\r\n dispose(toDispose);\r\n }\r\n}\r\nclass SynchronousWorkerClient {\r\n constructor(instance) {\r\n this._instance = instance;\r\n this._proxyObj = Promise.resolve(this._instance);\r\n }\r\n dispose() {\r\n this._instance.dispose();\r\n }\r\n getProxyObject() {\r\n return this._proxyObj;\r\n }\r\n}\r\nexport class EditorWorkerHost {\r\n constructor(workerClient) {\r\n this._workerClient = workerClient;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n return this._workerClient.fhr(method, args);\r\n }\r\n}\r\nexport class EditorWorkerClient extends Disposable {\r\n constructor(modelService, keepIdleModels, label) {\r\n super();\r\n this._disposed = false;\r\n this._modelService = modelService;\r\n this._keepIdleModels = keepIdleModels;\r\n this._workerFactory = new DefaultWorkerFactory(label);\r\n this._worker = null;\r\n this._modelManager = null;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n throw new Error(`Not implemented!`);\r\n }\r\n _getOrCreateWorker() {\r\n if (!this._worker) {\r\n try {\r\n this._worker = this._register(new SimpleWorkerClient(this._workerFactory, 'vs/editor/common/services/editorSimpleWorker', new EditorWorkerHost(this)));\r\n }\r\n catch (err) {\r\n logOnceWebWorkerWarning(err);\r\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\r\n }\r\n }\r\n return this._worker;\r\n }\r\n _getProxy() {\r\n return this._getOrCreateWorker().getProxyObject().then(undefined, (err) => {\r\n logOnceWebWorkerWarning(err);\r\n this._worker = new SynchronousWorkerClient(new EditorSimpleWorker(new EditorWorkerHost(this), null));\r\n return this._getOrCreateWorker().getProxyObject();\r\n });\r\n }\r\n _getOrCreateModelManager(proxy) {\r\n if (!this._modelManager) {\r\n this._modelManager = this._register(new EditorModelManager(proxy, this._modelService, this._keepIdleModels));\r\n }\r\n return this._modelManager;\r\n }\r\n _withSyncedResources(resources) {\r\n if (this._disposed) {\r\n return Promise.reject(canceled());\r\n }\r\n return this._getProxy().then((proxy) => {\r\n this._getOrCreateModelManager(proxy).ensureSyncedResources(resources);\r\n return proxy;\r\n });\r\n }\r\n computeDiff(original, modified, ignoreTrimWhitespace, maxComputationTime) {\r\n return this._withSyncedResources([original, modified]).then(proxy => {\r\n return proxy.computeDiff(original.toString(), modified.toString(), ignoreTrimWhitespace, maxComputationTime);\r\n });\r\n }\r\n computeMoreMinimalEdits(resource, edits) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n return proxy.computeMoreMinimalEdits(resource.toString(), edits);\r\n });\r\n }\r\n computeLinks(resource) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n return proxy.computeLinks(resource.toString());\r\n });\r\n }\r\n textualSuggest(resource, position) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.textualSuggest(resource.toString(), position, wordDef, wordDefFlags);\r\n });\r\n }\r\n computeWordRanges(resource, range) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return Promise.resolve(null);\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.computeWordRanges(resource.toString(), range, wordDef, wordDefFlags);\r\n });\r\n }\r\n navigateValueSet(resource, range, up) {\r\n return this._withSyncedResources([resource]).then(proxy => {\r\n let model = this._modelService.getModel(resource);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n let wordDef = wordDefRegExp.source;\r\n let wordDefFlags = regExpFlags(wordDefRegExp);\r\n return proxy.navigateValueSet(resource.toString(), range, up, wordDef, wordDefFlags);\r\n });\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._disposed = true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { DataUri, basenameOrAuthority } from '../../../base/common/resources.js';\r\nimport { PLAINTEXT_MODE_ID } from '../modes/modesRegistry.js';\r\nimport { FileKind } from '../../../platform/files/common/files.js';\r\nexport function getIconClasses(modelService, modeService, resource, fileKind) {\r\n // we always set these base classes even if we do not have a path\r\n const classes = fileKind === FileKind.ROOT_FOLDER ? ['rootfolder-icon'] : fileKind === FileKind.FOLDER ? ['folder-icon'] : ['file-icon'];\r\n if (resource) {\r\n // Get the path and name of the resource. For data-URIs, we need to parse specially\r\n let name;\r\n if (resource.scheme === Schemas.data) {\r\n const metadata = DataUri.parseMetaData(resource);\r\n name = metadata.get(DataUri.META_DATA_LABEL);\r\n }\r\n else {\r\n name = cssEscape(basenameOrAuthority(resource).toLowerCase());\r\n }\r\n // Folders\r\n if (fileKind === FileKind.FOLDER) {\r\n classes.push(`${name}-name-folder-icon`);\r\n }\r\n // Files\r\n else {\r\n // Name & Extension(s)\r\n if (name) {\r\n classes.push(`${name}-name-file-icon`);\r\n const dotSegments = name.split('.');\r\n for (let i = 1; i < dotSegments.length; i++) {\r\n classes.push(`${dotSegments.slice(i).join('.')}-ext-file-icon`); // add each combination of all found extensions if more than one\r\n }\r\n classes.push(`ext-file-icon`); // extra segment to increase file-ext score\r\n }\r\n // Detected Mode\r\n const detectedModeId = detectModeId(modelService, modeService, resource);\r\n if (detectedModeId) {\r\n classes.push(`${cssEscape(detectedModeId)}-lang-file-icon`);\r\n }\r\n }\r\n }\r\n return classes;\r\n}\r\nexport function detectModeId(modelService, modeService, resource) {\r\n if (!resource) {\r\n return null; // we need a resource at least\r\n }\r\n let modeId = null;\r\n // Data URI: check for encoded metadata\r\n if (resource.scheme === Schemas.data) {\r\n const metadata = DataUri.parseMetaData(resource);\r\n const mime = metadata.get(DataUri.META_DATA_MIME);\r\n if (mime) {\r\n modeId = modeService.getModeId(mime);\r\n }\r\n }\r\n // Any other URI: check for model if existing\r\n else {\r\n const model = modelService.getModel(resource);\r\n if (model) {\r\n modeId = model.getModeId();\r\n }\r\n }\r\n // only take if the mode is specific (aka no just plain text)\r\n if (modeId && modeId !== PLAINTEXT_MODE_ID) {\r\n return modeId;\r\n }\r\n // otherwise fallback to path based detection\r\n return modeService.getModeIdByFilepathOrFirstLine(resource);\r\n}\r\nexport function cssEscape(val) {\r\n return val.replace(/\\s/g, '\\\\$&'); // make sure to not introduce CSS classes from files that contain whitespace\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as mime from '../../../base/common/mime.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LanguageIdentifier } from '../modes.js';\r\nimport { ModesRegistry } from '../modes/modesRegistry.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER, NULL_MODE_ID } from '../modes/nullMode.js';\r\nimport { Extensions } from '../../../platform/configuration/common/configurationRegistry.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport class LanguagesRegistry extends Disposable {\r\n constructor(useModesRegistry = true, warnOnOverwrite = false) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._warnOnOverwrite = warnOnOverwrite;\r\n this._nextLanguageId2 = 1;\r\n this._languageIdToLanguage = [];\r\n this._languageToLanguageId = Object.create(null);\r\n this._languages = {};\r\n this._mimeTypesMap = {};\r\n this._nameMap = {};\r\n this._lowercaseNameMap = {};\r\n if (useModesRegistry) {\r\n this._initializeFromRegistry();\r\n this._register(ModesRegistry.onDidChangeLanguages((m) => this._initializeFromRegistry()));\r\n }\r\n }\r\n _initializeFromRegistry() {\r\n this._languages = {};\r\n this._mimeTypesMap = {};\r\n this._nameMap = {};\r\n this._lowercaseNameMap = {};\r\n const desc = ModesRegistry.getLanguages();\r\n this._registerLanguages(desc);\r\n }\r\n _registerLanguages(desc) {\r\n for (const d of desc) {\r\n this._registerLanguage(d);\r\n }\r\n // Rebuild fast path maps\r\n this._mimeTypesMap = {};\r\n this._nameMap = {};\r\n this._lowercaseNameMap = {};\r\n Object.keys(this._languages).forEach((langId) => {\r\n let language = this._languages[langId];\r\n if (language.name) {\r\n this._nameMap[language.name] = language.identifier;\r\n }\r\n language.aliases.forEach((alias) => {\r\n this._lowercaseNameMap[alias.toLowerCase()] = language.identifier;\r\n });\r\n language.mimetypes.forEach((mimetype) => {\r\n this._mimeTypesMap[mimetype] = language.identifier;\r\n });\r\n });\r\n Registry.as(Extensions.Configuration).registerOverrideIdentifiers(ModesRegistry.getLanguages().map(language => language.id));\r\n this._onDidChange.fire();\r\n }\r\n _getLanguageId(language) {\r\n if (this._languageToLanguageId[language]) {\r\n return this._languageToLanguageId[language];\r\n }\r\n const languageId = this._nextLanguageId2++;\r\n this._languageIdToLanguage[languageId] = language;\r\n this._languageToLanguageId[language] = languageId;\r\n return languageId;\r\n }\r\n _registerLanguage(lang) {\r\n const langId = lang.id;\r\n let resolvedLanguage;\r\n if (hasOwnProperty.call(this._languages, langId)) {\r\n resolvedLanguage = this._languages[langId];\r\n }\r\n else {\r\n const languageId = this._getLanguageId(langId);\r\n resolvedLanguage = {\r\n identifier: new LanguageIdentifier(langId, languageId),\r\n name: null,\r\n mimetypes: [],\r\n aliases: [],\r\n extensions: [],\r\n filenames: [],\r\n configurationFiles: []\r\n };\r\n this._languages[langId] = resolvedLanguage;\r\n }\r\n this._mergeLanguage(resolvedLanguage, lang);\r\n }\r\n _mergeLanguage(resolvedLanguage, lang) {\r\n const langId = lang.id;\r\n let primaryMime = null;\r\n if (Array.isArray(lang.mimetypes) && lang.mimetypes.length > 0) {\r\n resolvedLanguage.mimetypes.push(...lang.mimetypes);\r\n primaryMime = lang.mimetypes[0];\r\n }\r\n if (!primaryMime) {\r\n primaryMime = `text/x-${langId}`;\r\n resolvedLanguage.mimetypes.push(primaryMime);\r\n }\r\n if (Array.isArray(lang.extensions)) {\r\n if (lang.configuration) {\r\n // insert first as this appears to be the 'primary' language definition\r\n resolvedLanguage.extensions = lang.extensions.concat(resolvedLanguage.extensions);\r\n }\r\n else {\r\n resolvedLanguage.extensions = resolvedLanguage.extensions.concat(lang.extensions);\r\n }\r\n for (let extension of lang.extensions) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, extension: extension }, this._warnOnOverwrite);\r\n }\r\n }\r\n if (Array.isArray(lang.filenames)) {\r\n for (let filename of lang.filenames) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, filename: filename }, this._warnOnOverwrite);\r\n resolvedLanguage.filenames.push(filename);\r\n }\r\n }\r\n if (Array.isArray(lang.filenamePatterns)) {\r\n for (let filenamePattern of lang.filenamePatterns) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, filepattern: filenamePattern }, this._warnOnOverwrite);\r\n }\r\n }\r\n if (typeof lang.firstLine === 'string' && lang.firstLine.length > 0) {\r\n let firstLineRegexStr = lang.firstLine;\r\n if (firstLineRegexStr.charAt(0) !== '^') {\r\n firstLineRegexStr = '^' + firstLineRegexStr;\r\n }\r\n try {\r\n let firstLineRegex = new RegExp(firstLineRegexStr);\r\n if (!strings.regExpLeadsToEndlessLoop(firstLineRegex)) {\r\n mime.registerTextMime({ id: langId, mime: primaryMime, firstline: firstLineRegex }, this._warnOnOverwrite);\r\n }\r\n }\r\n catch (err) {\r\n // Most likely, the regex was bad\r\n onUnexpectedError(err);\r\n }\r\n }\r\n resolvedLanguage.aliases.push(langId);\r\n let langAliases = null;\r\n if (typeof lang.aliases !== 'undefined' && Array.isArray(lang.aliases)) {\r\n if (lang.aliases.length === 0) {\r\n // signal that this language should not get a name\r\n langAliases = [null];\r\n }\r\n else {\r\n langAliases = lang.aliases;\r\n }\r\n }\r\n if (langAliases !== null) {\r\n for (const langAlias of langAliases) {\r\n if (!langAlias || langAlias.length === 0) {\r\n continue;\r\n }\r\n resolvedLanguage.aliases.push(langAlias);\r\n }\r\n }\r\n let containsAliases = (langAliases !== null && langAliases.length > 0);\r\n if (containsAliases && langAliases[0] === null) {\r\n // signal that this language should not get a name\r\n }\r\n else {\r\n let bestName = (containsAliases ? langAliases[0] : null) || langId;\r\n if (containsAliases || !resolvedLanguage.name) {\r\n resolvedLanguage.name = bestName;\r\n }\r\n }\r\n if (lang.configuration) {\r\n resolvedLanguage.configurationFiles.push(lang.configuration);\r\n }\r\n }\r\n isRegisteredMode(mimetypeOrModeId) {\r\n // Is this a known mime type ?\r\n if (hasOwnProperty.call(this._mimeTypesMap, mimetypeOrModeId)) {\r\n return true;\r\n }\r\n // Is this a known mode id ?\r\n return hasOwnProperty.call(this._languages, mimetypeOrModeId);\r\n }\r\n getModeIdForLanguageNameLowercase(languageNameLower) {\r\n if (!hasOwnProperty.call(this._lowercaseNameMap, languageNameLower)) {\r\n return null;\r\n }\r\n return this._lowercaseNameMap[languageNameLower].language;\r\n }\r\n extractModeIds(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n if (!commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n return [];\r\n }\r\n return (commaSeparatedMimetypesOrCommaSeparatedIds.\r\n split(',').\r\n map((mimeTypeOrId) => mimeTypeOrId.trim()).\r\n map((mimeTypeOrId) => {\r\n if (hasOwnProperty.call(this._mimeTypesMap, mimeTypeOrId)) {\r\n return this._mimeTypesMap[mimeTypeOrId].language;\r\n }\r\n return mimeTypeOrId;\r\n }).\r\n filter((modeId) => {\r\n return hasOwnProperty.call(this._languages, modeId);\r\n }));\r\n }\r\n getLanguageIdentifier(_modeId) {\r\n if (_modeId === NULL_MODE_ID || _modeId === 0 /* Null */) {\r\n return NULL_LANGUAGE_IDENTIFIER;\r\n }\r\n let modeId;\r\n if (typeof _modeId === 'string') {\r\n modeId = _modeId;\r\n }\r\n else {\r\n modeId = this._languageIdToLanguage[_modeId];\r\n if (!modeId) {\r\n return null;\r\n }\r\n }\r\n if (!hasOwnProperty.call(this._languages, modeId)) {\r\n return null;\r\n }\r\n return this._languages[modeId].identifier;\r\n }\r\n getModeIdsFromFilepathOrFirstLine(resource, firstLine) {\r\n if (!resource && !firstLine) {\r\n return [];\r\n }\r\n let mimeTypes = mime.guessMimeTypes(resource, firstLine);\r\n return this.extractModeIds(mimeTypes.join(','));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IMarkerService, MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { OverviewRulerLane, MinimapPosition } from '../model.js';\r\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { overviewRulerWarning, overviewRulerInfo, overviewRulerError } from '../view/editorColorRegistry.js';\r\nimport { IModelService } from './modelService.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { minimapWarning, minimapError } from '../../../platform/theme/common/colorRegistry.js';\r\nfunction MODEL_ID(resource) {\r\n return resource.toString();\r\n}\r\nclass MarkerDecorations extends Disposable {\r\n constructor(model) {\r\n super();\r\n this.model = model;\r\n this._markersData = new Map();\r\n this._register(toDisposable(() => {\r\n this.model.deltaDecorations([...this._markersData.keys()], []);\r\n this._markersData.clear();\r\n }));\r\n }\r\n update(markers, newDecorations) {\r\n const oldIds = [...this._markersData.keys()];\r\n this._markersData.clear();\r\n const ids = this.model.deltaDecorations(oldIds, newDecorations);\r\n for (let index = 0; index < ids.length; index++) {\r\n this._markersData.set(ids[index], markers[index]);\r\n }\r\n return oldIds.length !== 0 || ids.length !== 0;\r\n }\r\n getMarker(decoration) {\r\n return this._markersData.get(decoration.id);\r\n }\r\n}\r\nlet MarkerDecorationsService = class MarkerDecorationsService extends Disposable {\r\n constructor(modelService, _markerService) {\r\n super();\r\n this._markerService = _markerService;\r\n this._onDidChangeMarker = this._register(new Emitter());\r\n this._markerDecorations = new Map();\r\n modelService.getModels().forEach(model => this._onModelAdded(model));\r\n this._register(modelService.onModelAdded(this._onModelAdded, this));\r\n this._register(modelService.onModelRemoved(this._onModelRemoved, this));\r\n this._register(this._markerService.onMarkerChanged(this._handleMarkerChange, this));\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._markerDecorations.forEach(value => value.dispose());\r\n this._markerDecorations.clear();\r\n }\r\n getMarker(model, decoration) {\r\n const markerDecorations = this._markerDecorations.get(MODEL_ID(model.uri));\r\n return markerDecorations ? (markerDecorations.getMarker(decoration) || null) : null;\r\n }\r\n _handleMarkerChange(changedResources) {\r\n changedResources.forEach((resource) => {\r\n const markerDecorations = this._markerDecorations.get(MODEL_ID(resource));\r\n if (markerDecorations) {\r\n this._updateDecorations(markerDecorations);\r\n }\r\n });\r\n }\r\n _onModelAdded(model) {\r\n const markerDecorations = new MarkerDecorations(model);\r\n this._markerDecorations.set(MODEL_ID(model.uri), markerDecorations);\r\n this._updateDecorations(markerDecorations);\r\n }\r\n _onModelRemoved(model) {\r\n const markerDecorations = this._markerDecorations.get(MODEL_ID(model.uri));\r\n if (markerDecorations) {\r\n markerDecorations.dispose();\r\n this._markerDecorations.delete(MODEL_ID(model.uri));\r\n }\r\n // clean up markers for internal, transient models\r\n if (model.uri.scheme === Schemas.inMemory\r\n || model.uri.scheme === Schemas.internal\r\n || model.uri.scheme === Schemas.vscode) {\r\n if (this._markerService) {\r\n this._markerService.read({ resource: model.uri }).map(marker => marker.owner).forEach(owner => this._markerService.remove(owner, [model.uri]));\r\n }\r\n }\r\n }\r\n _updateDecorations(markerDecorations) {\r\n // Limit to the first 500 errors/warnings\r\n const markers = this._markerService.read({ resource: markerDecorations.model.uri, take: 500 });\r\n let newModelDecorations = markers.map((marker) => {\r\n return {\r\n range: this._createDecorationRange(markerDecorations.model, marker),\r\n options: this._createDecorationOption(marker)\r\n };\r\n });\r\n if (markerDecorations.update(markers, newModelDecorations)) {\r\n this._onDidChangeMarker.fire(markerDecorations.model);\r\n }\r\n }\r\n _createDecorationRange(model, rawMarker) {\r\n let ret = Range.lift(rawMarker);\r\n if (rawMarker.severity === MarkerSeverity.Hint && !this._hasMarkerTag(rawMarker, 1 /* Unnecessary */) && !this._hasMarkerTag(rawMarker, 2 /* Deprecated */)) {\r\n // * never render hints on multiple lines\r\n // * make enough space for three dots\r\n ret = ret.setEndPosition(ret.startLineNumber, ret.startColumn + 2);\r\n }\r\n ret = model.validateRange(ret);\r\n if (ret.isEmpty()) {\r\n let word = model.getWordAtPosition(ret.getStartPosition());\r\n if (word) {\r\n ret = new Range(ret.startLineNumber, word.startColumn, ret.endLineNumber, word.endColumn);\r\n }\r\n else {\r\n let maxColumn = model.getLineLastNonWhitespaceColumn(ret.startLineNumber) ||\r\n model.getLineMaxColumn(ret.startLineNumber);\r\n if (maxColumn === 1) {\r\n // empty line\r\n // console.warn('marker on empty line:', marker);\r\n }\r\n else if (ret.endColumn >= maxColumn) {\r\n // behind eol\r\n ret = new Range(ret.startLineNumber, maxColumn - 1, ret.endLineNumber, maxColumn);\r\n }\r\n else {\r\n // extend marker to width = 1\r\n ret = new Range(ret.startLineNumber, ret.startColumn, ret.endLineNumber, ret.endColumn + 1);\r\n }\r\n }\r\n }\r\n else if (rawMarker.endColumn === Number.MAX_VALUE && rawMarker.startColumn === 1 && ret.startLineNumber === ret.endLineNumber) {\r\n let minColumn = model.getLineFirstNonWhitespaceColumn(rawMarker.startLineNumber);\r\n if (minColumn < ret.endColumn) {\r\n ret = new Range(ret.startLineNumber, minColumn, ret.endLineNumber, ret.endColumn);\r\n rawMarker.startColumn = minColumn;\r\n }\r\n }\r\n return ret;\r\n }\r\n _createDecorationOption(marker) {\r\n let className;\r\n let color = undefined;\r\n let zIndex;\r\n let inlineClassName = undefined;\r\n let minimap;\r\n switch (marker.severity) {\r\n case MarkerSeverity.Hint:\r\n if (this._hasMarkerTag(marker, 2 /* Deprecated */)) {\r\n className = undefined;\r\n }\r\n else if (this._hasMarkerTag(marker, 1 /* Unnecessary */)) {\r\n className = \"squiggly-unnecessary\" /* EditorUnnecessaryDecoration */;\r\n }\r\n else {\r\n className = \"squiggly-hint\" /* EditorHintDecoration */;\r\n }\r\n zIndex = 0;\r\n break;\r\n case MarkerSeverity.Warning:\r\n className = \"squiggly-warning\" /* EditorWarningDecoration */;\r\n color = themeColorFromId(overviewRulerWarning);\r\n zIndex = 20;\r\n minimap = {\r\n color: themeColorFromId(minimapWarning),\r\n position: MinimapPosition.Inline\r\n };\r\n break;\r\n case MarkerSeverity.Info:\r\n className = \"squiggly-info\" /* EditorInfoDecoration */;\r\n color = themeColorFromId(overviewRulerInfo);\r\n zIndex = 10;\r\n break;\r\n case MarkerSeverity.Error:\r\n default:\r\n className = \"squiggly-error\" /* EditorErrorDecoration */;\r\n color = themeColorFromId(overviewRulerError);\r\n zIndex = 30;\r\n minimap = {\r\n color: themeColorFromId(minimapError),\r\n position: MinimapPosition.Inline\r\n };\r\n break;\r\n }\r\n if (marker.tags) {\r\n if (marker.tags.indexOf(1 /* Unnecessary */) !== -1) {\r\n inlineClassName = \"squiggly-inline-unnecessary\" /* EditorUnnecessaryInlineDecoration */;\r\n }\r\n if (marker.tags.indexOf(2 /* Deprecated */) !== -1) {\r\n inlineClassName = \"squiggly-inline-deprecated\" /* EditorDeprecatedInlineDecoration */;\r\n }\r\n }\r\n return {\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className,\r\n showIfCollapsed: true,\r\n overviewRuler: {\r\n color,\r\n position: OverviewRulerLane.Right\r\n },\r\n minimap,\r\n zIndex,\r\n inlineClassName,\r\n };\r\n }\r\n _hasMarkerTag(marker, tag) {\r\n if (marker.tags) {\r\n return marker.tags.indexOf(tag) >= 0;\r\n }\r\n return false;\r\n }\r\n};\r\nMarkerDecorationsService = __decorate([\r\n __param(0, IModelService),\r\n __param(1, IMarkerService)\r\n], MarkerDecorationsService);\r\nexport { MarkerDecorationsService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IMarkerDecorationsService = createDecorator('markerDecorationsService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IModeService = createDecorator('modeService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { FrankensteinMode } from '../modes/abstractMode.js';\r\nimport { NULL_LANGUAGE_IDENTIFIER } from '../modes/nullMode.js';\r\nimport { LanguagesRegistry } from './languagesRegistry.js';\r\nimport { firstOrDefault } from '../../../base/common/arrays.js';\r\nclass LanguageSelection extends Disposable {\r\n constructor(onLanguagesMaybeChanged, selector) {\r\n super();\r\n this._onDidChange = this._register(new Emitter());\r\n this.onDidChange = this._onDidChange.event;\r\n this._selector = selector;\r\n this.languageIdentifier = this._selector();\r\n this._register(onLanguagesMaybeChanged(() => this._evaluate()));\r\n }\r\n _evaluate() {\r\n let languageIdentifier = this._selector();\r\n if (languageIdentifier.id === this.languageIdentifier.id) {\r\n // no change\r\n return;\r\n }\r\n this.languageIdentifier = languageIdentifier;\r\n this._onDidChange.fire(this.languageIdentifier);\r\n }\r\n}\r\nexport class ModeServiceImpl {\r\n constructor(warnOnOverwrite = false) {\r\n this._onDidCreateMode = new Emitter();\r\n this.onDidCreateMode = this._onDidCreateMode.event;\r\n this._onLanguagesMaybeChanged = new Emitter();\r\n this.onLanguagesMaybeChanged = this._onLanguagesMaybeChanged.event;\r\n this._instantiatedModes = {};\r\n this._registry = new LanguagesRegistry(true, warnOnOverwrite);\r\n this._registry.onDidChange(() => this._onLanguagesMaybeChanged.fire());\r\n }\r\n isRegisteredMode(mimetypeOrModeId) {\r\n return this._registry.isRegisteredMode(mimetypeOrModeId);\r\n }\r\n getModeIdForLanguageName(alias) {\r\n return this._registry.getModeIdForLanguageNameLowercase(alias);\r\n }\r\n getModeIdByFilepathOrFirstLine(resource, firstLine) {\r\n const modeIds = this._registry.getModeIdsFromFilepathOrFirstLine(resource, firstLine);\r\n return firstOrDefault(modeIds, null);\r\n }\r\n getModeId(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n const modeIds = this._registry.extractModeIds(commaSeparatedMimetypesOrCommaSeparatedIds);\r\n return firstOrDefault(modeIds, null);\r\n }\r\n getLanguageIdentifier(modeId) {\r\n return this._registry.getLanguageIdentifier(modeId);\r\n }\r\n // --- instantiation\r\n create(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n return new LanguageSelection(this.onLanguagesMaybeChanged, () => {\r\n const modeId = this.getModeId(commaSeparatedMimetypesOrCommaSeparatedIds);\r\n return this._createModeAndGetLanguageIdentifier(modeId);\r\n });\r\n }\r\n createByFilepathOrFirstLine(resource, firstLine) {\r\n return new LanguageSelection(this.onLanguagesMaybeChanged, () => {\r\n const modeId = this.getModeIdByFilepathOrFirstLine(resource, firstLine);\r\n return this._createModeAndGetLanguageIdentifier(modeId);\r\n });\r\n }\r\n _createModeAndGetLanguageIdentifier(modeId) {\r\n // Fall back to plain text if no mode was found\r\n const languageIdentifier = this.getLanguageIdentifier(modeId || 'plaintext') || NULL_LANGUAGE_IDENTIFIER;\r\n this._getOrCreateMode(languageIdentifier.language);\r\n return languageIdentifier;\r\n }\r\n triggerMode(commaSeparatedMimetypesOrCommaSeparatedIds) {\r\n const modeId = this.getModeId(commaSeparatedMimetypesOrCommaSeparatedIds);\r\n // Fall back to plain text if no mode was found\r\n this._getOrCreateMode(modeId || 'plaintext');\r\n }\r\n _getOrCreateMode(modeId) {\r\n if (!this._instantiatedModes.hasOwnProperty(modeId)) {\r\n let languageIdentifier = this.getLanguageIdentifier(modeId) || NULL_LANGUAGE_IDENTIFIER;\r\n this._instantiatedModes[modeId] = new FrankensteinMode(languageIdentifier);\r\n this._onDidCreateMode.fire(this._instantiatedModes[modeId]);\r\n }\r\n return this._instantiatedModes[modeId];\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IModelService = createDecorator('modelService');\r\nexport function shouldSynchronizeModel(model) {\r\n return (!model.isTooLargeForSyncing() && !model.isForSimpleWidget);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, DisposableStore, dispose } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as errors from '../../../base/common/errors.js';\r\nimport { EDITOR_MODEL_DEFAULTS } from '../config/editorOptions.js';\r\nimport { TextModel } from '../model/textModel.js';\r\nimport { DocumentSemanticTokensProviderRegistry } from '../modes.js';\r\nimport { PLAINTEXT_LANGUAGE_IDENTIFIER } from '../modes/modesRegistry.js';\r\nimport { ITextResourcePropertiesService } from './textResourceConfigurationService.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { IUndoRedoService } from '../../../platform/undoRedo/common/undoRedo.js';\r\nimport { StringSHA1 } from '../../../base/common/hash.js';\r\nimport { isEditStackElement } from '../model/editStack.js';\r\nimport { SemanticTokensProviderStyling, toMultilineTokens2 } from './semanticTokensProviderStyling.js';\r\nfunction MODEL_ID(resource) {\r\n return resource.toString();\r\n}\r\nfunction computeModelSha1(model) {\r\n // compute the sha1\r\n const shaComputer = new StringSHA1();\r\n const snapshot = model.createSnapshot();\r\n let text;\r\n while ((text = snapshot.read())) {\r\n shaComputer.update(text);\r\n }\r\n return shaComputer.digest();\r\n}\r\nclass ModelData {\r\n constructor(model, onWillDispose, onDidChangeLanguage) {\r\n this._modelEventListeners = new DisposableStore();\r\n this.model = model;\r\n this._languageSelection = null;\r\n this._languageSelectionListener = null;\r\n this._modelEventListeners.add(model.onWillDispose(() => onWillDispose(model)));\r\n this._modelEventListeners.add(model.onDidChangeLanguage((e) => onDidChangeLanguage(model, e)));\r\n }\r\n _disposeLanguageSelection() {\r\n if (this._languageSelectionListener) {\r\n this._languageSelectionListener.dispose();\r\n this._languageSelectionListener = null;\r\n }\r\n if (this._languageSelection) {\r\n this._languageSelection.dispose();\r\n this._languageSelection = null;\r\n }\r\n }\r\n dispose() {\r\n this._modelEventListeners.dispose();\r\n this._disposeLanguageSelection();\r\n }\r\n setLanguage(languageSelection) {\r\n this._disposeLanguageSelection();\r\n this._languageSelection = languageSelection;\r\n this._languageSelectionListener = this._languageSelection.onDidChange(() => this.model.setMode(languageSelection.languageIdentifier));\r\n this.model.setMode(languageSelection.languageIdentifier);\r\n }\r\n}\r\nconst DEFAULT_EOL = (platform.isLinux || platform.isMacintosh) ? 1 /* LF */ : 2 /* CRLF */;\r\nclass DisposedModelInfo {\r\n constructor(uri, initialUndoRedoSnapshot, time, sharesUndoRedoStack, heapSize, sha1, versionId, alternativeVersionId) {\r\n this.uri = uri;\r\n this.initialUndoRedoSnapshot = initialUndoRedoSnapshot;\r\n this.time = time;\r\n this.sharesUndoRedoStack = sharesUndoRedoStack;\r\n this.heapSize = heapSize;\r\n this.sha1 = sha1;\r\n this.versionId = versionId;\r\n this.alternativeVersionId = alternativeVersionId;\r\n }\r\n}\r\nlet ModelServiceImpl = class ModelServiceImpl extends Disposable {\r\n constructor(_configurationService, _resourcePropertiesService, _themeService, _logService, _undoRedoService) {\r\n super();\r\n this._configurationService = _configurationService;\r\n this._resourcePropertiesService = _resourcePropertiesService;\r\n this._themeService = _themeService;\r\n this._logService = _logService;\r\n this._undoRedoService = _undoRedoService;\r\n this._onModelAdded = this._register(new Emitter());\r\n this.onModelAdded = this._onModelAdded.event;\r\n this._onModelRemoved = this._register(new Emitter());\r\n this.onModelRemoved = this._onModelRemoved.event;\r\n this._onModelModeChanged = this._register(new Emitter());\r\n this.onModelModeChanged = this._onModelModeChanged.event;\r\n this._modelCreationOptionsByLanguageAndResource = Object.create(null);\r\n this._models = {};\r\n this._disposedModels = new Map();\r\n this._disposedModelsHeapSize = 0;\r\n this._semanticStyling = this._register(new SemanticStyling(this._themeService, this._logService));\r\n this._register(this._configurationService.onDidChangeConfiguration(() => this._updateModelOptions()));\r\n this._updateModelOptions();\r\n this._register(new SemanticColoringFeature(this, this._themeService, this._configurationService, this._semanticStyling));\r\n }\r\n static _readModelOptions(config, isForSimpleWidget) {\r\n let tabSize = EDITOR_MODEL_DEFAULTS.tabSize;\r\n if (config.editor && typeof config.editor.tabSize !== 'undefined') {\r\n const parsedTabSize = parseInt(config.editor.tabSize, 10);\r\n if (!isNaN(parsedTabSize)) {\r\n tabSize = parsedTabSize;\r\n }\r\n if (tabSize < 1) {\r\n tabSize = 1;\r\n }\r\n }\r\n let indentSize = tabSize;\r\n if (config.editor && typeof config.editor.indentSize !== 'undefined' && config.editor.indentSize !== 'tabSize') {\r\n const parsedIndentSize = parseInt(config.editor.indentSize, 10);\r\n if (!isNaN(parsedIndentSize)) {\r\n indentSize = parsedIndentSize;\r\n }\r\n if (indentSize < 1) {\r\n indentSize = 1;\r\n }\r\n }\r\n let insertSpaces = EDITOR_MODEL_DEFAULTS.insertSpaces;\r\n if (config.editor && typeof config.editor.insertSpaces !== 'undefined') {\r\n insertSpaces = (config.editor.insertSpaces === 'false' ? false : Boolean(config.editor.insertSpaces));\r\n }\r\n let newDefaultEOL = DEFAULT_EOL;\r\n const eol = config.eol;\r\n if (eol === '\\r\\n') {\r\n newDefaultEOL = 2 /* CRLF */;\r\n }\r\n else if (eol === '\\n') {\r\n newDefaultEOL = 1 /* LF */;\r\n }\r\n let trimAutoWhitespace = EDITOR_MODEL_DEFAULTS.trimAutoWhitespace;\r\n if (config.editor && typeof config.editor.trimAutoWhitespace !== 'undefined') {\r\n trimAutoWhitespace = (config.editor.trimAutoWhitespace === 'false' ? false : Boolean(config.editor.trimAutoWhitespace));\r\n }\r\n let detectIndentation = EDITOR_MODEL_DEFAULTS.detectIndentation;\r\n if (config.editor && typeof config.editor.detectIndentation !== 'undefined') {\r\n detectIndentation = (config.editor.detectIndentation === 'false' ? false : Boolean(config.editor.detectIndentation));\r\n }\r\n let largeFileOptimizations = EDITOR_MODEL_DEFAULTS.largeFileOptimizations;\r\n if (config.editor && typeof config.editor.largeFileOptimizations !== 'undefined') {\r\n largeFileOptimizations = (config.editor.largeFileOptimizations === 'false' ? false : Boolean(config.editor.largeFileOptimizations));\r\n }\r\n return {\r\n isForSimpleWidget: isForSimpleWidget,\r\n tabSize: tabSize,\r\n indentSize: indentSize,\r\n insertSpaces: insertSpaces,\r\n detectIndentation: detectIndentation,\r\n defaultEOL: newDefaultEOL,\r\n trimAutoWhitespace: trimAutoWhitespace,\r\n largeFileOptimizations: largeFileOptimizations\r\n };\r\n }\r\n _getEOL(resource, language) {\r\n if (resource) {\r\n return this._resourcePropertiesService.getEOL(resource, language);\r\n }\r\n const eol = this._configurationService.getValue('files.eol', { overrideIdentifier: language });\r\n if (eol && eol !== 'auto') {\r\n return eol;\r\n }\r\n return platform.OS === 3 /* Linux */ || platform.OS === 2 /* Macintosh */ ? '\\n' : '\\r\\n';\r\n }\r\n getCreationOptions(language, resource, isForSimpleWidget) {\r\n let creationOptions = this._modelCreationOptionsByLanguageAndResource[language + resource];\r\n if (!creationOptions) {\r\n const editor = this._configurationService.getValue('editor', { overrideIdentifier: language, resource });\r\n const eol = this._getEOL(resource, language);\r\n creationOptions = ModelServiceImpl._readModelOptions({ editor, eol }, isForSimpleWidget);\r\n this._modelCreationOptionsByLanguageAndResource[language + resource] = creationOptions;\r\n }\r\n return creationOptions;\r\n }\r\n _updateModelOptions() {\r\n const oldOptionsByLanguageAndResource = this._modelCreationOptionsByLanguageAndResource;\r\n this._modelCreationOptionsByLanguageAndResource = Object.create(null);\r\n // Update options on all models\r\n const keys = Object.keys(this._models);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const modelId = keys[i];\r\n const modelData = this._models[modelId];\r\n const language = modelData.model.getLanguageIdentifier().language;\r\n const uri = modelData.model.uri;\r\n const oldOptions = oldOptionsByLanguageAndResource[language + uri];\r\n const newOptions = this.getCreationOptions(language, uri, modelData.model.isForSimpleWidget);\r\n ModelServiceImpl._setModelOptionsForModel(modelData.model, newOptions, oldOptions);\r\n }\r\n }\r\n static _setModelOptionsForModel(model, newOptions, currentOptions) {\r\n if (currentOptions && currentOptions.defaultEOL !== newOptions.defaultEOL && model.getLineCount() === 1) {\r\n model.setEOL(newOptions.defaultEOL === 1 /* LF */ ? 0 /* LF */ : 1 /* CRLF */);\r\n }\r\n if (currentOptions\r\n && (currentOptions.detectIndentation === newOptions.detectIndentation)\r\n && (currentOptions.insertSpaces === newOptions.insertSpaces)\r\n && (currentOptions.tabSize === newOptions.tabSize)\r\n && (currentOptions.indentSize === newOptions.indentSize)\r\n && (currentOptions.trimAutoWhitespace === newOptions.trimAutoWhitespace)) {\r\n // Same indent opts, no need to touch the model\r\n return;\r\n }\r\n if (newOptions.detectIndentation) {\r\n model.detectIndentation(newOptions.insertSpaces, newOptions.tabSize);\r\n model.updateOptions({\r\n trimAutoWhitespace: newOptions.trimAutoWhitespace\r\n });\r\n }\r\n else {\r\n model.updateOptions({\r\n insertSpaces: newOptions.insertSpaces,\r\n tabSize: newOptions.tabSize,\r\n indentSize: newOptions.indentSize,\r\n trimAutoWhitespace: newOptions.trimAutoWhitespace\r\n });\r\n }\r\n }\r\n _removeDisposedModel(resource) {\r\n const disposedModelData = this._disposedModels.get(MODEL_ID(resource));\r\n if (disposedModelData) {\r\n this._disposedModelsHeapSize -= disposedModelData.heapSize;\r\n }\r\n this._disposedModels.delete(MODEL_ID(resource));\r\n return disposedModelData;\r\n }\r\n _createModelData(value, languageIdentifier, resource, isForSimpleWidget) {\r\n // create & save the model\r\n const options = this.getCreationOptions(languageIdentifier.language, resource, isForSimpleWidget);\r\n const model = new TextModel(value, options, languageIdentifier, resource, this._undoRedoService);\r\n if (resource && this._disposedModels.has(MODEL_ID(resource))) {\r\n const disposedModelData = this._removeDisposedModel(resource);\r\n const elements = this._undoRedoService.getElements(resource);\r\n const sha1IsEqual = (computeModelSha1(model) === disposedModelData.sha1);\r\n if (sha1IsEqual || disposedModelData.sharesUndoRedoStack) {\r\n for (const element of elements.past) {\r\n if (isEditStackElement(element) && element.matchesResource(resource)) {\r\n element.setModel(model);\r\n }\r\n }\r\n for (const element of elements.future) {\r\n if (isEditStackElement(element) && element.matchesResource(resource)) {\r\n element.setModel(model);\r\n }\r\n }\r\n this._undoRedoService.setElementsValidFlag(resource, true, (element) => (isEditStackElement(element) && element.matchesResource(resource)));\r\n if (sha1IsEqual) {\r\n model._overwriteVersionId(disposedModelData.versionId);\r\n model._overwriteAlternativeVersionId(disposedModelData.alternativeVersionId);\r\n model._overwriteInitialUndoRedoSnapshot(disposedModelData.initialUndoRedoSnapshot);\r\n }\r\n }\r\n else {\r\n if (disposedModelData.initialUndoRedoSnapshot !== null) {\r\n this._undoRedoService.restoreSnapshot(disposedModelData.initialUndoRedoSnapshot);\r\n }\r\n }\r\n }\r\n const modelId = MODEL_ID(model.uri);\r\n if (this._models[modelId]) {\r\n // There already exists a model with this id => this is a programmer error\r\n throw new Error('ModelService: Cannot add model because it already exists!');\r\n }\r\n const modelData = new ModelData(model, (model) => this._onWillDispose(model), (model, e) => this._onDidChangeLanguage(model, e));\r\n this._models[modelId] = modelData;\r\n return modelData;\r\n }\r\n createModel(value, languageSelection, resource, isForSimpleWidget = false) {\r\n let modelData;\r\n if (languageSelection) {\r\n modelData = this._createModelData(value, languageSelection.languageIdentifier, resource, isForSimpleWidget);\r\n this.setMode(modelData.model, languageSelection);\r\n }\r\n else {\r\n modelData = this._createModelData(value, PLAINTEXT_LANGUAGE_IDENTIFIER, resource, isForSimpleWidget);\r\n }\r\n this._onModelAdded.fire(modelData.model);\r\n return modelData.model;\r\n }\r\n setMode(model, languageSelection) {\r\n if (!languageSelection) {\r\n return;\r\n }\r\n const modelData = this._models[MODEL_ID(model.uri)];\r\n if (!modelData) {\r\n return;\r\n }\r\n modelData.setLanguage(languageSelection);\r\n }\r\n getModels() {\r\n const ret = [];\r\n const keys = Object.keys(this._models);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n const modelId = keys[i];\r\n ret.push(this._models[modelId].model);\r\n }\r\n return ret;\r\n }\r\n getModel(resource) {\r\n const modelId = MODEL_ID(resource);\r\n const modelData = this._models[modelId];\r\n if (!modelData) {\r\n return null;\r\n }\r\n return modelData.model;\r\n }\r\n getSemanticTokensProviderStyling(provider) {\r\n return this._semanticStyling.get(provider);\r\n }\r\n // --- end IModelService\r\n _onWillDispose(model) {\r\n const modelId = MODEL_ID(model.uri);\r\n const modelData = this._models[modelId];\r\n delete this._models[modelId];\r\n modelData.dispose();\r\n // clean up cache\r\n delete this._modelCreationOptionsByLanguageAndResource[model.getLanguageIdentifier().language + model.uri];\r\n this._onModelRemoved.fire(model);\r\n }\r\n _onDidChangeLanguage(model, e) {\r\n const oldModeId = e.oldLanguage;\r\n const newModeId = model.getLanguageIdentifier().language;\r\n const oldOptions = this.getCreationOptions(oldModeId, model.uri, model.isForSimpleWidget);\r\n const newOptions = this.getCreationOptions(newModeId, model.uri, model.isForSimpleWidget);\r\n ModelServiceImpl._setModelOptionsForModel(model, newOptions, oldOptions);\r\n this._onModelModeChanged.fire({ model, oldModeId });\r\n }\r\n};\r\nModelServiceImpl = __decorate([\r\n __param(0, IConfigurationService),\r\n __param(1, ITextResourcePropertiesService),\r\n __param(2, IThemeService),\r\n __param(3, ILogService),\r\n __param(4, IUndoRedoService)\r\n], ModelServiceImpl);\r\nexport { ModelServiceImpl };\r\nexport const SEMANTIC_HIGHLIGHTING_SETTING_ID = 'editor.semanticHighlighting';\r\nexport function isSemanticColoringEnabled(model, themeService, configurationService) {\r\n var _a;\r\n const setting = (_a = configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID, { overrideIdentifier: model.getLanguageIdentifier().language, resource: model.uri })) === null || _a === void 0 ? void 0 : _a.enabled;\r\n if (typeof setting === 'boolean') {\r\n return setting;\r\n }\r\n return themeService.getColorTheme().semanticHighlighting;\r\n}\r\nclass SemanticColoringFeature extends Disposable {\r\n constructor(modelService, themeService, configurationService, semanticStyling) {\r\n super();\r\n this._watchers = Object.create(null);\r\n this._semanticStyling = semanticStyling;\r\n const register = (model) => {\r\n this._watchers[model.uri.toString()] = new ModelSemanticColoring(model, themeService, this._semanticStyling);\r\n };\r\n const deregister = (model, modelSemanticColoring) => {\r\n modelSemanticColoring.dispose();\r\n delete this._watchers[model.uri.toString()];\r\n };\r\n const handleSettingOrThemeChange = () => {\r\n for (let model of modelService.getModels()) {\r\n const curr = this._watchers[model.uri.toString()];\r\n if (isSemanticColoringEnabled(model, themeService, configurationService)) {\r\n if (!curr) {\r\n register(model);\r\n }\r\n }\r\n else {\r\n if (curr) {\r\n deregister(model, curr);\r\n }\r\n }\r\n }\r\n };\r\n this._register(modelService.onModelAdded((model) => {\r\n if (isSemanticColoringEnabled(model, themeService, configurationService)) {\r\n register(model);\r\n }\r\n }));\r\n this._register(modelService.onModelRemoved((model) => {\r\n const curr = this._watchers[model.uri.toString()];\r\n if (curr) {\r\n deregister(model, curr);\r\n }\r\n }));\r\n this._register(configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\r\n handleSettingOrThemeChange();\r\n }\r\n }));\r\n this._register(themeService.onDidColorThemeChange(handleSettingOrThemeChange));\r\n }\r\n}\r\nclass SemanticStyling extends Disposable {\r\n constructor(_themeService, _logService) {\r\n super();\r\n this._themeService = _themeService;\r\n this._logService = _logService;\r\n this._caches = new WeakMap();\r\n this._register(this._themeService.onDidColorThemeChange(() => {\r\n this._caches = new WeakMap();\r\n }));\r\n }\r\n get(provider) {\r\n if (!this._caches.has(provider)) {\r\n this._caches.set(provider, new SemanticTokensProviderStyling(provider.getLegend(), this._themeService, this._logService));\r\n }\r\n return this._caches.get(provider);\r\n }\r\n}\r\nclass SemanticTokensResponse {\r\n constructor(_provider, resultId, data) {\r\n this._provider = _provider;\r\n this.resultId = resultId;\r\n this.data = data;\r\n }\r\n dispose() {\r\n this._provider.releaseDocumentSemanticTokens(this.resultId);\r\n }\r\n}\r\nclass ModelSemanticColoring extends Disposable {\r\n constructor(model, themeService, stylingProvider) {\r\n super();\r\n this._isDisposed = false;\r\n this._model = model;\r\n this._semanticStyling = stylingProvider;\r\n this._fetchDocumentSemanticTokens = this._register(new RunOnceScheduler(() => this._fetchDocumentSemanticTokensNow(), 300));\r\n this._currentDocumentResponse = null;\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n this._documentProvidersChangeListeners = [];\r\n this._register(this._model.onDidChangeContent(() => {\r\n if (!this._fetchDocumentSemanticTokens.isScheduled()) {\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }\r\n }));\r\n const bindDocumentChangeListeners = () => {\r\n dispose(this._documentProvidersChangeListeners);\r\n this._documentProvidersChangeListeners = [];\r\n for (const provider of DocumentSemanticTokensProviderRegistry.all(model)) {\r\n if (typeof provider.onDidChange === 'function') {\r\n this._documentProvidersChangeListeners.push(provider.onDidChange(() => this._fetchDocumentSemanticTokens.schedule(0)));\r\n }\r\n }\r\n };\r\n bindDocumentChangeListeners();\r\n this._register(DocumentSemanticTokensProviderRegistry.onDidChange(() => {\r\n bindDocumentChangeListeners();\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }));\r\n this._register(themeService.onDidColorThemeChange(_ => {\r\n // clear out existing tokens\r\n this._setDocumentSemanticTokens(null, null, null, []);\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }));\r\n this._fetchDocumentSemanticTokens.schedule(0);\r\n }\r\n dispose() {\r\n if (this._currentDocumentResponse) {\r\n this._currentDocumentResponse.dispose();\r\n this._currentDocumentResponse = null;\r\n }\r\n if (this._currentDocumentRequestCancellationTokenSource) {\r\n this._currentDocumentRequestCancellationTokenSource.cancel();\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n }\r\n this._setDocumentSemanticTokens(null, null, null, []);\r\n this._isDisposed = true;\r\n super.dispose();\r\n }\r\n _fetchDocumentSemanticTokensNow() {\r\n if (this._currentDocumentRequestCancellationTokenSource) {\r\n // there is already a request running, let it finish...\r\n return;\r\n }\r\n const provider = this._getSemanticColoringProvider();\r\n if (!provider) {\r\n return;\r\n }\r\n this._currentDocumentRequestCancellationTokenSource = new CancellationTokenSource();\r\n const pendingChanges = [];\r\n const contentChangeListener = this._model.onDidChangeContent((e) => {\r\n pendingChanges.push(e);\r\n });\r\n const styling = this._semanticStyling.get(provider);\r\n const lastResultId = this._currentDocumentResponse ? this._currentDocumentResponse.resultId || null : null;\r\n const request = Promise.resolve(provider.provideDocumentSemanticTokens(this._model, lastResultId, this._currentDocumentRequestCancellationTokenSource.token));\r\n request.then((res) => {\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n contentChangeListener.dispose();\r\n this._setDocumentSemanticTokens(provider, res || null, styling, pendingChanges);\r\n }, (err) => {\r\n if (!err || typeof err.message !== 'string' || err.message.indexOf('busy') === -1) {\r\n errors.onUnexpectedError(err);\r\n }\r\n // Semantic tokens eats up all errors and considers errors to mean that the result is temporarily not available\r\n // The API does not have a special error kind to express this...\r\n this._currentDocumentRequestCancellationTokenSource = null;\r\n contentChangeListener.dispose();\r\n if (pendingChanges.length > 0) {\r\n // More changes occurred while the request was running\r\n if (!this._fetchDocumentSemanticTokens.isScheduled()) {\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }\r\n }\r\n });\r\n }\r\n static _isSemanticTokens(v) {\r\n return v && !!(v.data);\r\n }\r\n static _isSemanticTokensEdits(v) {\r\n return v && Array.isArray(v.edits);\r\n }\r\n static _copy(src, srcOffset, dest, destOffset, length) {\r\n for (let i = 0; i < length; i++) {\r\n dest[destOffset + i] = src[srcOffset + i];\r\n }\r\n }\r\n _setDocumentSemanticTokens(provider, tokens, styling, pendingChanges) {\r\n const currentResponse = this._currentDocumentResponse;\r\n if (this._currentDocumentResponse) {\r\n this._currentDocumentResponse.dispose();\r\n this._currentDocumentResponse = null;\r\n }\r\n if (this._isDisposed) {\r\n // disposed!\r\n if (provider && tokens) {\r\n provider.releaseDocumentSemanticTokens(tokens.resultId);\r\n }\r\n return;\r\n }\r\n if (!provider || !styling) {\r\n this._model.setSemanticTokens(null, false);\r\n return;\r\n }\r\n if (!tokens) {\r\n this._model.setSemanticTokens(null, true);\r\n return;\r\n }\r\n if (ModelSemanticColoring._isSemanticTokensEdits(tokens)) {\r\n if (!currentResponse) {\r\n // not possible!\r\n this._model.setSemanticTokens(null, true);\r\n return;\r\n }\r\n if (tokens.edits.length === 0) {\r\n // nothing to do!\r\n tokens = {\r\n resultId: tokens.resultId,\r\n data: currentResponse.data\r\n };\r\n }\r\n else {\r\n let deltaLength = 0;\r\n for (const edit of tokens.edits) {\r\n deltaLength += (edit.data ? edit.data.length : 0) - edit.deleteCount;\r\n }\r\n const srcData = currentResponse.data;\r\n const destData = new Uint32Array(srcData.length + deltaLength);\r\n let srcLastStart = srcData.length;\r\n let destLastStart = destData.length;\r\n for (let i = tokens.edits.length - 1; i >= 0; i--) {\r\n const edit = tokens.edits[i];\r\n const copyCount = srcLastStart - (edit.start + edit.deleteCount);\r\n if (copyCount > 0) {\r\n ModelSemanticColoring._copy(srcData, srcLastStart - copyCount, destData, destLastStart - copyCount, copyCount);\r\n destLastStart -= copyCount;\r\n }\r\n if (edit.data) {\r\n ModelSemanticColoring._copy(edit.data, 0, destData, destLastStart - edit.data.length, edit.data.length);\r\n destLastStart -= edit.data.length;\r\n }\r\n srcLastStart = edit.start;\r\n }\r\n if (srcLastStart > 0) {\r\n ModelSemanticColoring._copy(srcData, 0, destData, 0, srcLastStart);\r\n }\r\n tokens = {\r\n resultId: tokens.resultId,\r\n data: destData\r\n };\r\n }\r\n }\r\n if (ModelSemanticColoring._isSemanticTokens(tokens)) {\r\n this._currentDocumentResponse = new SemanticTokensResponse(provider, tokens.resultId, tokens.data);\r\n const result = toMultilineTokens2(tokens, styling, this._model.getLanguageIdentifier());\r\n // Adjust incoming semantic tokens\r\n if (pendingChanges.length > 0) {\r\n // More changes occurred while the request was running\r\n // We need to:\r\n // 1. Adjust incoming semantic tokens\r\n // 2. Request them again\r\n for (const change of pendingChanges) {\r\n for (const area of result) {\r\n for (const singleChange of change.changes) {\r\n area.applyEdit(singleChange.range, singleChange.text);\r\n }\r\n }\r\n }\r\n if (!this._fetchDocumentSemanticTokens.isScheduled()) {\r\n this._fetchDocumentSemanticTokens.schedule();\r\n }\r\n }\r\n this._model.setSemanticTokens(result, true);\r\n return;\r\n }\r\n this._model.setSemanticTokens(null, true);\r\n }\r\n _getSemanticColoringProvider() {\r\n const result = DocumentSemanticTokensProviderRegistry.ordered(this._model);\r\n return (result.length > 0 ? result[0] : null);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ITextModelService = createDecorator('textModelService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TokenMetadata } from '../modes.js';\r\nimport { LogLevel } from '../../../platform/log/common/log.js';\r\nimport { MultilineTokens2, SparseEncodedTokens } from '../model/tokensStore.js';\r\nexport class SemanticTokensProviderStyling {\r\n constructor(_legend, _themeService, _logService) {\r\n this._legend = _legend;\r\n this._themeService = _themeService;\r\n this._logService = _logService;\r\n this._hashTable = new HashTable();\r\n }\r\n getMetadata(tokenTypeIndex, tokenModifierSet, languageId) {\r\n const entry = this._hashTable.get(tokenTypeIndex, tokenModifierSet, languageId.id);\r\n let metadata;\r\n if (entry) {\r\n metadata = entry.metadata;\r\n if (this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling [CACHED] ${tokenTypeIndex} / ${tokenModifierSet}: foreground ${TokenMetadata.getForeground(metadata)}, fontStyle ${TokenMetadata.getFontStyle(metadata).toString(2)}`);\r\n }\r\n }\r\n else {\r\n let tokenType = this._legend.tokenTypes[tokenTypeIndex];\r\n const tokenModifiers = [];\r\n if (tokenType) {\r\n let modifierSet = tokenModifierSet;\r\n for (let modifierIndex = 0; modifierSet > 0 && modifierIndex < this._legend.tokenModifiers.length; modifierIndex++) {\r\n if (modifierSet & 1) {\r\n tokenModifiers.push(this._legend.tokenModifiers[modifierIndex]);\r\n }\r\n modifierSet = modifierSet >> 1;\r\n }\r\n if (modifierSet > 0 && this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling: unknown token modifier index: ${tokenModifierSet.toString(2)} for legend: ${JSON.stringify(this._legend.tokenModifiers)}`);\r\n tokenModifiers.push('not-in-legend');\r\n }\r\n const tokenStyle = this._themeService.getColorTheme().getTokenStyleMetadata(tokenType, tokenModifiers, languageId.language);\r\n if (typeof tokenStyle === 'undefined') {\r\n metadata = 2147483647 /* NO_STYLING */;\r\n }\r\n else {\r\n metadata = 0;\r\n if (typeof tokenStyle.italic !== 'undefined') {\r\n const italicBit = (tokenStyle.italic ? 1 /* Italic */ : 0) << 11 /* FONT_STYLE_OFFSET */;\r\n metadata |= italicBit | 1 /* SEMANTIC_USE_ITALIC */;\r\n }\r\n if (typeof tokenStyle.bold !== 'undefined') {\r\n const boldBit = (tokenStyle.bold ? 2 /* Bold */ : 0) << 11 /* FONT_STYLE_OFFSET */;\r\n metadata |= boldBit | 2 /* SEMANTIC_USE_BOLD */;\r\n }\r\n if (typeof tokenStyle.underline !== 'undefined') {\r\n const underlineBit = (tokenStyle.underline ? 4 /* Underline */ : 0) << 11 /* FONT_STYLE_OFFSET */;\r\n metadata |= underlineBit | 4 /* SEMANTIC_USE_UNDERLINE */;\r\n }\r\n if (tokenStyle.foreground) {\r\n const foregroundBits = (tokenStyle.foreground) << 14 /* FOREGROUND_OFFSET */;\r\n metadata |= foregroundBits | 8 /* SEMANTIC_USE_FOREGROUND */;\r\n }\r\n if (metadata === 0) {\r\n // Nothing!\r\n metadata = 2147483647 /* NO_STYLING */;\r\n }\r\n }\r\n }\r\n else {\r\n if (this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling: unknown token type index: ${tokenTypeIndex} for legend: ${JSON.stringify(this._legend.tokenTypes)}`);\r\n }\r\n metadata = 2147483647 /* NO_STYLING */;\r\n tokenType = 'not-in-legend';\r\n }\r\n this._hashTable.add(tokenTypeIndex, tokenModifierSet, languageId.id, metadata);\r\n if (this._logService.getLevel() === LogLevel.Trace) {\r\n this._logService.trace(`SemanticTokensProviderStyling ${tokenTypeIndex} (${tokenType}) / ${tokenModifierSet} (${tokenModifiers.join(' ')}): foreground ${TokenMetadata.getForeground(metadata)}, fontStyle ${TokenMetadata.getFontStyle(metadata).toString(2)}`);\r\n }\r\n }\r\n return metadata;\r\n }\r\n}\r\nexport function toMultilineTokens2(tokens, styling, languageId) {\r\n const srcData = tokens.data;\r\n const tokenCount = (tokens.data.length / 5) | 0;\r\n const tokensPerArea = Math.max(Math.ceil(tokenCount / 1024 /* DesiredMaxAreas */), 400 /* DesiredTokensPerArea */);\r\n const result = [];\r\n let tokenIndex = 0;\r\n let lastLineNumber = 1;\r\n let lastStartCharacter = 0;\r\n while (tokenIndex < tokenCount) {\r\n const tokenStartIndex = tokenIndex;\r\n let tokenEndIndex = Math.min(tokenStartIndex + tokensPerArea, tokenCount);\r\n // Keep tokens on the same line in the same area...\r\n if (tokenEndIndex < tokenCount) {\r\n let smallTokenEndIndex = tokenEndIndex;\r\n while (smallTokenEndIndex - 1 > tokenStartIndex && srcData[5 * smallTokenEndIndex] === 0) {\r\n smallTokenEndIndex--;\r\n }\r\n if (smallTokenEndIndex - 1 === tokenStartIndex) {\r\n // there are so many tokens on this line that our area would be empty, we must now go right\r\n let bigTokenEndIndex = tokenEndIndex;\r\n while (bigTokenEndIndex + 1 < tokenCount && srcData[5 * bigTokenEndIndex] === 0) {\r\n bigTokenEndIndex++;\r\n }\r\n tokenEndIndex = bigTokenEndIndex;\r\n }\r\n else {\r\n tokenEndIndex = smallTokenEndIndex;\r\n }\r\n }\r\n let destData = new Uint32Array((tokenEndIndex - tokenStartIndex) * 4);\r\n let destOffset = 0;\r\n let areaLine = 0;\r\n while (tokenIndex < tokenEndIndex) {\r\n const srcOffset = 5 * tokenIndex;\r\n const deltaLine = srcData[srcOffset];\r\n const deltaCharacter = srcData[srcOffset + 1];\r\n const lineNumber = lastLineNumber + deltaLine;\r\n const startCharacter = (deltaLine === 0 ? lastStartCharacter + deltaCharacter : deltaCharacter);\r\n const length = srcData[srcOffset + 2];\r\n const tokenTypeIndex = srcData[srcOffset + 3];\r\n const tokenModifierSet = srcData[srcOffset + 4];\r\n const metadata = styling.getMetadata(tokenTypeIndex, tokenModifierSet, languageId);\r\n if (metadata !== 2147483647 /* NO_STYLING */) {\r\n if (areaLine === 0) {\r\n areaLine = lineNumber;\r\n }\r\n destData[destOffset] = lineNumber - areaLine;\r\n destData[destOffset + 1] = startCharacter;\r\n destData[destOffset + 2] = startCharacter + length;\r\n destData[destOffset + 3] = metadata;\r\n destOffset += 4;\r\n }\r\n lastLineNumber = lineNumber;\r\n lastStartCharacter = startCharacter;\r\n tokenIndex++;\r\n }\r\n if (destOffset !== destData.length) {\r\n destData = destData.subarray(0, destOffset);\r\n }\r\n const tokens = new MultilineTokens2(areaLine, new SparseEncodedTokens(destData));\r\n result.push(tokens);\r\n }\r\n return result;\r\n}\r\nclass HashTableEntry {\r\n constructor(tokenTypeIndex, tokenModifierSet, languageId, metadata) {\r\n this.tokenTypeIndex = tokenTypeIndex;\r\n this.tokenModifierSet = tokenModifierSet;\r\n this.languageId = languageId;\r\n this.metadata = metadata;\r\n this.next = null;\r\n }\r\n}\r\nclass HashTable {\r\n constructor() {\r\n this._elementsCount = 0;\r\n this._currentLengthIndex = 0;\r\n this._currentLength = HashTable._SIZES[this._currentLengthIndex];\r\n this._growCount = Math.round(this._currentLengthIndex + 1 < HashTable._SIZES.length ? 2 / 3 * this._currentLength : 0);\r\n this._elements = [];\r\n HashTable._nullOutEntries(this._elements, this._currentLength);\r\n }\r\n static _nullOutEntries(entries, length) {\r\n for (let i = 0; i < length; i++) {\r\n entries[i] = null;\r\n }\r\n }\r\n _hash2(n1, n2) {\r\n return (((n1 << 5) - n1) + n2) | 0; // n1 * 31 + n2, keep as int32\r\n }\r\n _hashFunc(tokenTypeIndex, tokenModifierSet, languageId) {\r\n return this._hash2(this._hash2(tokenTypeIndex, tokenModifierSet), languageId) % this._currentLength;\r\n }\r\n get(tokenTypeIndex, tokenModifierSet, languageId) {\r\n const hash = this._hashFunc(tokenTypeIndex, tokenModifierSet, languageId);\r\n let p = this._elements[hash];\r\n while (p) {\r\n if (p.tokenTypeIndex === tokenTypeIndex && p.tokenModifierSet === tokenModifierSet && p.languageId === languageId) {\r\n return p;\r\n }\r\n p = p.next;\r\n }\r\n return null;\r\n }\r\n add(tokenTypeIndex, tokenModifierSet, languageId, metadata) {\r\n this._elementsCount++;\r\n if (this._growCount !== 0 && this._elementsCount >= this._growCount) {\r\n // expand!\r\n const oldElements = this._elements;\r\n this._currentLengthIndex++;\r\n this._currentLength = HashTable._SIZES[this._currentLengthIndex];\r\n this._growCount = Math.round(this._currentLengthIndex + 1 < HashTable._SIZES.length ? 2 / 3 * this._currentLength : 0);\r\n this._elements = [];\r\n HashTable._nullOutEntries(this._elements, this._currentLength);\r\n for (const first of oldElements) {\r\n let p = first;\r\n while (p) {\r\n const oldNext = p.next;\r\n p.next = null;\r\n this._add(p);\r\n p = oldNext;\r\n }\r\n }\r\n }\r\n this._add(new HashTableEntry(tokenTypeIndex, tokenModifierSet, languageId, metadata));\r\n }\r\n _add(element) {\r\n const hash = this._hashFunc(element.tokenTypeIndex, element.tokenModifierSet, element.languageId);\r\n element.next = this._elements[hash];\r\n this._elements[hash] = element;\r\n }\r\n}\r\nHashTable._SIZES = [3, 7, 13, 31, 61, 127, 251, 509, 1021, 2039, 4093, 8191, 16381, 32749, 65521, 131071, 262139, 524287, 1048573, 2097143];\r\n","import { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const ITextResourceConfigurationService = createDecorator('textResourceConfigurationService');\r\nexport const ITextResourcePropertiesService = createDecorator('textResourcePropertiesService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorWorkerClient } from './editorWorkerServiceImpl.js';\r\nimport * as types from '../../../base/common/types.js';\r\n/**\r\n * Create a new web worker that has model syncing capabilities built in.\r\n * Specify an AMD module to load that will `create` an object that will be proxied.\r\n */\r\nexport function createWebWorker(modelService, opts) {\r\n return new MonacoWebWorkerImpl(modelService, opts);\r\n}\r\nclass MonacoWebWorkerImpl extends EditorWorkerClient {\r\n constructor(modelService, opts) {\r\n super(modelService, opts.keepIdleModels || false, opts.label);\r\n this._foreignModuleId = opts.moduleId;\r\n this._foreignModuleCreateData = opts.createData || null;\r\n this._foreignModuleHost = opts.host || null;\r\n this._foreignProxy = null;\r\n }\r\n // foreign host request\r\n fhr(method, args) {\r\n if (!this._foreignModuleHost || typeof this._foreignModuleHost[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' or missing main thread foreign host.'));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModuleHost[method].apply(this._foreignModuleHost, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n _getForeignProxy() {\r\n if (!this._foreignProxy) {\r\n this._foreignProxy = this._getProxy().then((proxy) => {\r\n const foreignHostMethods = this._foreignModuleHost ? types.getAllMethodNames(this._foreignModuleHost) : [];\r\n return proxy.loadForeignModule(this._foreignModuleId, this._foreignModuleCreateData, foreignHostMethods).then((foreignMethods) => {\r\n this._foreignModuleCreateData = null;\r\n const proxyMethodRequest = (method, args) => {\r\n return proxy.fmr(method, args);\r\n };\r\n const createProxyMethod = (method, proxyMethodRequest) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return proxyMethodRequest(method, args);\r\n };\r\n };\r\n let foreignProxy = {};\r\n for (const foreignMethod of foreignMethods) {\r\n foreignProxy[foreignMethod] = createProxyMethod(foreignMethod, proxyMethodRequest);\r\n }\r\n return foreignProxy;\r\n });\r\n });\r\n }\r\n return this._foreignProxy;\r\n }\r\n getProxy() {\r\n return this._getForeignProxy();\r\n }\r\n withSyncedResources(resources) {\r\n return this._withSyncedResources(resources).then(_ => this.getProxy());\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { Token } from '../core/token.js';\r\nimport * as standaloneEnums from './standaloneEnums.js';\r\nexport class KeyMod {\r\n static chord(firstPart, secondPart) {\r\n return KeyChord(firstPart, secondPart);\r\n }\r\n}\r\nKeyMod.CtrlCmd = 2048 /* CtrlCmd */;\r\nKeyMod.Shift = 1024 /* Shift */;\r\nKeyMod.Alt = 512 /* Alt */;\r\nKeyMod.WinCtrl = 256 /* WinCtrl */;\r\nexport function createMonacoBaseAPI() {\r\n return {\r\n editor: undefined,\r\n languages: undefined,\r\n CancellationTokenSource: CancellationTokenSource,\r\n Emitter: Emitter,\r\n KeyCode: standaloneEnums.KeyCode,\r\n KeyMod: KeyMod,\r\n Position: Position,\r\n Range: Range,\r\n Selection: Selection,\r\n SelectionDirection: standaloneEnums.SelectionDirection,\r\n MarkerSeverity: standaloneEnums.MarkerSeverity,\r\n MarkerTag: standaloneEnums.MarkerTag,\r\n Uri: URI,\r\n Token: Token\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.\r\nexport var AccessibilitySupport;\r\n(function (AccessibilitySupport) {\r\n /**\r\n * This should be the browser case where it is not known if a screen reader is attached or no.\r\n */\r\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\r\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\r\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\r\n})(AccessibilitySupport || (AccessibilitySupport = {}));\r\nexport var CompletionItemInsertTextRule;\r\n(function (CompletionItemInsertTextRule) {\r\n /**\r\n * Adjust whitespace/indentation of multiline insert texts to\r\n * match the current line indentation.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\r\n /**\r\n * `insertText` is a snippet.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\r\n})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\r\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\r\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\r\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\r\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\r\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\r\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\r\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\r\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\r\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\r\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\r\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\r\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\r\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\r\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\r\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\r\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\r\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\r\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\r\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\r\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\r\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\r\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\r\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\r\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\r\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\r\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\r\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 27] = \"Snippet\";\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * How a suggest provider was triggered.\r\n */\r\nexport var CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\r\n})(CompletionTriggerKind || (CompletionTriggerKind = {}));\r\n/**\r\n * A positioning preference for rendering content widgets.\r\n */\r\nexport var ContentWidgetPositionPreference;\r\n(function (ContentWidgetPositionPreference) {\r\n /**\r\n * Place the content widget exactly at a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\r\n /**\r\n * Place the content widget above a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\r\n /**\r\n * Place the content widget below a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\r\n})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\r\n/**\r\n * Describes the reason the cursor has changed its position.\r\n */\r\nexport var CursorChangeReason;\r\n(function (CursorChangeReason) {\r\n /**\r\n * Unknown or not set.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\r\n /**\r\n * A `model.setValue()` was called.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\r\n /**\r\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\r\n /**\r\n * There was an explicit user gesture.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\r\n /**\r\n * There was a Paste.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\r\n /**\r\n * There was an Undo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\r\n /**\r\n * There was a Redo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\r\n})(CursorChangeReason || (CursorChangeReason = {}));\r\n/**\r\n * The default end of line to use when instantiating models.\r\n */\r\nexport var DefaultEndOfLine;\r\n(function (DefaultEndOfLine) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\r\n})(DefaultEndOfLine || (DefaultEndOfLine = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * Configuration options for auto indentation in the editor\r\n */\r\nexport var EditorAutoIndentStrategy;\r\n(function (EditorAutoIndentStrategy) {\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\r\n})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\r\nexport var EditorOption;\r\n(function (EditorOption) {\r\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\r\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\r\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\r\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\r\n EditorOption[EditorOption[\"ariaLabel\"] = 4] = \"ariaLabel\";\r\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 5] = \"autoClosingBrackets\";\r\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 6] = \"autoClosingOvertype\";\r\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 7] = \"autoClosingQuotes\";\r\n EditorOption[EditorOption[\"autoIndent\"] = 8] = \"autoIndent\";\r\n EditorOption[EditorOption[\"automaticLayout\"] = 9] = \"automaticLayout\";\r\n EditorOption[EditorOption[\"autoSurround\"] = 10] = \"autoSurround\";\r\n EditorOption[EditorOption[\"codeLens\"] = 11] = \"codeLens\";\r\n EditorOption[EditorOption[\"colorDecorators\"] = 12] = \"colorDecorators\";\r\n EditorOption[EditorOption[\"columnSelection\"] = 13] = \"columnSelection\";\r\n EditorOption[EditorOption[\"comments\"] = 14] = \"comments\";\r\n EditorOption[EditorOption[\"contextmenu\"] = 15] = \"contextmenu\";\r\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 16] = \"copyWithSyntaxHighlighting\";\r\n EditorOption[EditorOption[\"cursorBlinking\"] = 17] = \"cursorBlinking\";\r\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 18] = \"cursorSmoothCaretAnimation\";\r\n EditorOption[EditorOption[\"cursorStyle\"] = 19] = \"cursorStyle\";\r\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 20] = \"cursorSurroundingLines\";\r\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 21] = \"cursorSurroundingLinesStyle\";\r\n EditorOption[EditorOption[\"cursorWidth\"] = 22] = \"cursorWidth\";\r\n EditorOption[EditorOption[\"disableLayerHinting\"] = 23] = \"disableLayerHinting\";\r\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 24] = \"disableMonospaceOptimizations\";\r\n EditorOption[EditorOption[\"dragAndDrop\"] = 25] = \"dragAndDrop\";\r\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 26] = \"emptySelectionClipboard\";\r\n EditorOption[EditorOption[\"extraEditorClassName\"] = 27] = \"extraEditorClassName\";\r\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 28] = \"fastScrollSensitivity\";\r\n EditorOption[EditorOption[\"find\"] = 29] = \"find\";\r\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 30] = \"fixedOverflowWidgets\";\r\n EditorOption[EditorOption[\"folding\"] = 31] = \"folding\";\r\n EditorOption[EditorOption[\"foldingStrategy\"] = 32] = \"foldingStrategy\";\r\n EditorOption[EditorOption[\"foldingHighlight\"] = 33] = \"foldingHighlight\";\r\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 34] = \"unfoldOnClickAfterEndOfLine\";\r\n EditorOption[EditorOption[\"fontFamily\"] = 35] = \"fontFamily\";\r\n EditorOption[EditorOption[\"fontInfo\"] = 36] = \"fontInfo\";\r\n EditorOption[EditorOption[\"fontLigatures\"] = 37] = \"fontLigatures\";\r\n EditorOption[EditorOption[\"fontSize\"] = 38] = \"fontSize\";\r\n EditorOption[EditorOption[\"fontWeight\"] = 39] = \"fontWeight\";\r\n EditorOption[EditorOption[\"formatOnPaste\"] = 40] = \"formatOnPaste\";\r\n EditorOption[EditorOption[\"formatOnType\"] = 41] = \"formatOnType\";\r\n EditorOption[EditorOption[\"glyphMargin\"] = 42] = \"glyphMargin\";\r\n EditorOption[EditorOption[\"gotoLocation\"] = 43] = \"gotoLocation\";\r\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 44] = \"hideCursorInOverviewRuler\";\r\n EditorOption[EditorOption[\"highlightActiveIndentGuide\"] = 45] = \"highlightActiveIndentGuide\";\r\n EditorOption[EditorOption[\"hover\"] = 46] = \"hover\";\r\n EditorOption[EditorOption[\"inDiffEditor\"] = 47] = \"inDiffEditor\";\r\n EditorOption[EditorOption[\"letterSpacing\"] = 48] = \"letterSpacing\";\r\n EditorOption[EditorOption[\"lightbulb\"] = 49] = \"lightbulb\";\r\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 50] = \"lineDecorationsWidth\";\r\n EditorOption[EditorOption[\"lineHeight\"] = 51] = \"lineHeight\";\r\n EditorOption[EditorOption[\"lineNumbers\"] = 52] = \"lineNumbers\";\r\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 53] = \"lineNumbersMinChars\";\r\n EditorOption[EditorOption[\"links\"] = 54] = \"links\";\r\n EditorOption[EditorOption[\"matchBrackets\"] = 55] = \"matchBrackets\";\r\n EditorOption[EditorOption[\"minimap\"] = 56] = \"minimap\";\r\n EditorOption[EditorOption[\"mouseStyle\"] = 57] = \"mouseStyle\";\r\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 58] = \"mouseWheelScrollSensitivity\";\r\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 59] = \"mouseWheelZoom\";\r\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 60] = \"multiCursorMergeOverlapping\";\r\n EditorOption[EditorOption[\"multiCursorModifier\"] = 61] = \"multiCursorModifier\";\r\n EditorOption[EditorOption[\"multiCursorPaste\"] = 62] = \"multiCursorPaste\";\r\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 63] = \"occurrencesHighlight\";\r\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 64] = \"overviewRulerBorder\";\r\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 65] = \"overviewRulerLanes\";\r\n EditorOption[EditorOption[\"padding\"] = 66] = \"padding\";\r\n EditorOption[EditorOption[\"parameterHints\"] = 67] = \"parameterHints\";\r\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 68] = \"peekWidgetDefaultFocus\";\r\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 69] = \"definitionLinkOpensInPeek\";\r\n EditorOption[EditorOption[\"quickSuggestions\"] = 70] = \"quickSuggestions\";\r\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 71] = \"quickSuggestionsDelay\";\r\n EditorOption[EditorOption[\"readOnly\"] = 72] = \"readOnly\";\r\n EditorOption[EditorOption[\"renameOnType\"] = 73] = \"renameOnType\";\r\n EditorOption[EditorOption[\"renderControlCharacters\"] = 74] = \"renderControlCharacters\";\r\n EditorOption[EditorOption[\"renderIndentGuides\"] = 75] = \"renderIndentGuides\";\r\n EditorOption[EditorOption[\"renderFinalNewline\"] = 76] = \"renderFinalNewline\";\r\n EditorOption[EditorOption[\"renderLineHighlight\"] = 77] = \"renderLineHighlight\";\r\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 78] = \"renderLineHighlightOnlyWhenFocus\";\r\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 79] = \"renderValidationDecorations\";\r\n EditorOption[EditorOption[\"renderWhitespace\"] = 80] = \"renderWhitespace\";\r\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 81] = \"revealHorizontalRightPadding\";\r\n EditorOption[EditorOption[\"roundedSelection\"] = 82] = \"roundedSelection\";\r\n EditorOption[EditorOption[\"rulers\"] = 83] = \"rulers\";\r\n EditorOption[EditorOption[\"scrollbar\"] = 84] = \"scrollbar\";\r\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 85] = \"scrollBeyondLastColumn\";\r\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 86] = \"scrollBeyondLastLine\";\r\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 87] = \"scrollPredominantAxis\";\r\n EditorOption[EditorOption[\"selectionClipboard\"] = 88] = \"selectionClipboard\";\r\n EditorOption[EditorOption[\"selectionHighlight\"] = 89] = \"selectionHighlight\";\r\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 90] = \"selectOnLineNumbers\";\r\n EditorOption[EditorOption[\"showFoldingControls\"] = 91] = \"showFoldingControls\";\r\n EditorOption[EditorOption[\"showUnused\"] = 92] = \"showUnused\";\r\n EditorOption[EditorOption[\"snippetSuggestions\"] = 93] = \"snippetSuggestions\";\r\n EditorOption[EditorOption[\"smoothScrolling\"] = 94] = \"smoothScrolling\";\r\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 95] = \"stopRenderingLineAfter\";\r\n EditorOption[EditorOption[\"suggest\"] = 96] = \"suggest\";\r\n EditorOption[EditorOption[\"suggestFontSize\"] = 97] = \"suggestFontSize\";\r\n EditorOption[EditorOption[\"suggestLineHeight\"] = 98] = \"suggestLineHeight\";\r\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 99] = \"suggestOnTriggerCharacters\";\r\n EditorOption[EditorOption[\"suggestSelection\"] = 100] = \"suggestSelection\";\r\n EditorOption[EditorOption[\"tabCompletion\"] = 101] = \"tabCompletion\";\r\n EditorOption[EditorOption[\"tabIndex\"] = 102] = \"tabIndex\";\r\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 103] = \"unusualLineTerminators\";\r\n EditorOption[EditorOption[\"useTabStops\"] = 104] = \"useTabStops\";\r\n EditorOption[EditorOption[\"wordSeparators\"] = 105] = \"wordSeparators\";\r\n EditorOption[EditorOption[\"wordWrap\"] = 106] = \"wordWrap\";\r\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 107] = \"wordWrapBreakAfterCharacters\";\r\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 108] = \"wordWrapBreakBeforeCharacters\";\r\n EditorOption[EditorOption[\"wordWrapColumn\"] = 109] = \"wordWrapColumn\";\r\n EditorOption[EditorOption[\"wordWrapMinified\"] = 110] = \"wordWrapMinified\";\r\n EditorOption[EditorOption[\"wrappingIndent\"] = 111] = \"wrappingIndent\";\r\n EditorOption[EditorOption[\"wrappingStrategy\"] = 112] = \"wrappingStrategy\";\r\n EditorOption[EditorOption[\"showDeprecated\"] = 113] = \"showDeprecated\";\r\n EditorOption[EditorOption[\"editorClassName\"] = 114] = \"editorClassName\";\r\n EditorOption[EditorOption[\"pixelRatio\"] = 115] = \"pixelRatio\";\r\n EditorOption[EditorOption[\"tabFocusMode\"] = 116] = \"tabFocusMode\";\r\n EditorOption[EditorOption[\"layoutInfo\"] = 117] = \"layoutInfo\";\r\n EditorOption[EditorOption[\"wrappingInfo\"] = 118] = \"wrappingInfo\";\r\n})(EditorOption || (EditorOption = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLinePreference;\r\n(function (EndOfLinePreference) {\r\n /**\r\n * Use the end of line character identified in the text buffer.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\r\n})(EndOfLinePreference || (EndOfLinePreference = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLineSequence;\r\n(function (EndOfLineSequence) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\r\n})(EndOfLineSequence || (EndOfLineSequence = {}));\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\n/**\r\n * Virtual Key Codes, the value does not hold any inherent meaning.\r\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\r\n * But these are \"more general\", as they should work across browsers & OS`s.\r\n */\r\nexport var KeyCode;\r\n(function (KeyCode) {\r\n /**\r\n * Placed first to cover the 0 value of the enum.\r\n */\r\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\r\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\r\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\r\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\r\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\r\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\r\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\r\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\r\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\r\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\r\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\r\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\r\n KeyCode[KeyCode[\"KEY_0\"] = 21] = \"KEY_0\";\r\n KeyCode[KeyCode[\"KEY_1\"] = 22] = \"KEY_1\";\r\n KeyCode[KeyCode[\"KEY_2\"] = 23] = \"KEY_2\";\r\n KeyCode[KeyCode[\"KEY_3\"] = 24] = \"KEY_3\";\r\n KeyCode[KeyCode[\"KEY_4\"] = 25] = \"KEY_4\";\r\n KeyCode[KeyCode[\"KEY_5\"] = 26] = \"KEY_5\";\r\n KeyCode[KeyCode[\"KEY_6\"] = 27] = \"KEY_6\";\r\n KeyCode[KeyCode[\"KEY_7\"] = 28] = \"KEY_7\";\r\n KeyCode[KeyCode[\"KEY_8\"] = 29] = \"KEY_8\";\r\n KeyCode[KeyCode[\"KEY_9\"] = 30] = \"KEY_9\";\r\n KeyCode[KeyCode[\"KEY_A\"] = 31] = \"KEY_A\";\r\n KeyCode[KeyCode[\"KEY_B\"] = 32] = \"KEY_B\";\r\n KeyCode[KeyCode[\"KEY_C\"] = 33] = \"KEY_C\";\r\n KeyCode[KeyCode[\"KEY_D\"] = 34] = \"KEY_D\";\r\n KeyCode[KeyCode[\"KEY_E\"] = 35] = \"KEY_E\";\r\n KeyCode[KeyCode[\"KEY_F\"] = 36] = \"KEY_F\";\r\n KeyCode[KeyCode[\"KEY_G\"] = 37] = \"KEY_G\";\r\n KeyCode[KeyCode[\"KEY_H\"] = 38] = \"KEY_H\";\r\n KeyCode[KeyCode[\"KEY_I\"] = 39] = \"KEY_I\";\r\n KeyCode[KeyCode[\"KEY_J\"] = 40] = \"KEY_J\";\r\n KeyCode[KeyCode[\"KEY_K\"] = 41] = \"KEY_K\";\r\n KeyCode[KeyCode[\"KEY_L\"] = 42] = \"KEY_L\";\r\n KeyCode[KeyCode[\"KEY_M\"] = 43] = \"KEY_M\";\r\n KeyCode[KeyCode[\"KEY_N\"] = 44] = \"KEY_N\";\r\n KeyCode[KeyCode[\"KEY_O\"] = 45] = \"KEY_O\";\r\n KeyCode[KeyCode[\"KEY_P\"] = 46] = \"KEY_P\";\r\n KeyCode[KeyCode[\"KEY_Q\"] = 47] = \"KEY_Q\";\r\n KeyCode[KeyCode[\"KEY_R\"] = 48] = \"KEY_R\";\r\n KeyCode[KeyCode[\"KEY_S\"] = 49] = \"KEY_S\";\r\n KeyCode[KeyCode[\"KEY_T\"] = 50] = \"KEY_T\";\r\n KeyCode[KeyCode[\"KEY_U\"] = 51] = \"KEY_U\";\r\n KeyCode[KeyCode[\"KEY_V\"] = 52] = \"KEY_V\";\r\n KeyCode[KeyCode[\"KEY_W\"] = 53] = \"KEY_W\";\r\n KeyCode[KeyCode[\"KEY_X\"] = 54] = \"KEY_X\";\r\n KeyCode[KeyCode[\"KEY_Y\"] = 55] = \"KEY_Y\";\r\n KeyCode[KeyCode[\"KEY_Z\"] = 56] = \"KEY_Z\";\r\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\r\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\r\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\r\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\r\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\r\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\r\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\r\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\r\n KeyCode[KeyCode[\"NumLock\"] = 78] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 79] = \"ScrollLock\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ';:' key\r\n */\r\n KeyCode[KeyCode[\"US_SEMICOLON\"] = 80] = \"US_SEMICOLON\";\r\n /**\r\n * For any country/region, the '+' key\r\n * For the US standard keyboard, the '=+' key\r\n */\r\n KeyCode[KeyCode[\"US_EQUAL\"] = 81] = \"US_EQUAL\";\r\n /**\r\n * For any country/region, the ',' key\r\n * For the US standard keyboard, the ',<' key\r\n */\r\n KeyCode[KeyCode[\"US_COMMA\"] = 82] = \"US_COMMA\";\r\n /**\r\n * For any country/region, the '-' key\r\n * For the US standard keyboard, the '-_' key\r\n */\r\n KeyCode[KeyCode[\"US_MINUS\"] = 83] = \"US_MINUS\";\r\n /**\r\n * For any country/region, the '.' key\r\n * For the US standard keyboard, the '.>' key\r\n */\r\n KeyCode[KeyCode[\"US_DOT\"] = 84] = \"US_DOT\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '/?' key\r\n */\r\n KeyCode[KeyCode[\"US_SLASH\"] = 85] = \"US_SLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '`~' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKTICK\"] = 86] = \"US_BACKTICK\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '[{' key\r\n */\r\n KeyCode[KeyCode[\"US_OPEN_SQUARE_BRACKET\"] = 87] = \"US_OPEN_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '\\|' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKSLASH\"] = 88] = \"US_BACKSLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ']}' key\r\n */\r\n KeyCode[KeyCode[\"US_CLOSE_SQUARE_BRACKET\"] = 89] = \"US_CLOSE_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ''\"' key\r\n */\r\n KeyCode[KeyCode[\"US_QUOTE\"] = 90] = \"US_QUOTE\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_8\"] = 91] = \"OEM_8\";\r\n /**\r\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_102\"] = 92] = \"OEM_102\";\r\n KeyCode[KeyCode[\"NUMPAD_0\"] = 93] = \"NUMPAD_0\";\r\n KeyCode[KeyCode[\"NUMPAD_1\"] = 94] = \"NUMPAD_1\";\r\n KeyCode[KeyCode[\"NUMPAD_2\"] = 95] = \"NUMPAD_2\";\r\n KeyCode[KeyCode[\"NUMPAD_3\"] = 96] = \"NUMPAD_3\";\r\n KeyCode[KeyCode[\"NUMPAD_4\"] = 97] = \"NUMPAD_4\";\r\n KeyCode[KeyCode[\"NUMPAD_5\"] = 98] = \"NUMPAD_5\";\r\n KeyCode[KeyCode[\"NUMPAD_6\"] = 99] = \"NUMPAD_6\";\r\n KeyCode[KeyCode[\"NUMPAD_7\"] = 100] = \"NUMPAD_7\";\r\n KeyCode[KeyCode[\"NUMPAD_8\"] = 101] = \"NUMPAD_8\";\r\n KeyCode[KeyCode[\"NUMPAD_9\"] = 102] = \"NUMPAD_9\";\r\n KeyCode[KeyCode[\"NUMPAD_MULTIPLY\"] = 103] = \"NUMPAD_MULTIPLY\";\r\n KeyCode[KeyCode[\"NUMPAD_ADD\"] = 104] = \"NUMPAD_ADD\";\r\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 105] = \"NUMPAD_SEPARATOR\";\r\n KeyCode[KeyCode[\"NUMPAD_SUBTRACT\"] = 106] = \"NUMPAD_SUBTRACT\";\r\n KeyCode[KeyCode[\"NUMPAD_DECIMAL\"] = 107] = \"NUMPAD_DECIMAL\";\r\n KeyCode[KeyCode[\"NUMPAD_DIVIDE\"] = 108] = \"NUMPAD_DIVIDE\";\r\n /**\r\n * Cover all key codes when IME is processing input.\r\n */\r\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 109] = \"KEY_IN_COMPOSITION\";\r\n KeyCode[KeyCode[\"ABNT_C1\"] = 110] = \"ABNT_C1\";\r\n KeyCode[KeyCode[\"ABNT_C2\"] = 111] = \"ABNT_C2\";\r\n /**\r\n * Placed last to cover the length of the enum.\r\n * Please do not depend on this value!\r\n */\r\n KeyCode[KeyCode[\"MAX_VALUE\"] = 112] = \"MAX_VALUE\";\r\n})(KeyCode || (KeyCode = {}));\r\nexport var MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nexport var MarkerTag;\r\n(function (MarkerTag) {\r\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\r\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\r\n})(MarkerTag || (MarkerTag = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\n/**\r\n * Type of hit element with the mouse in the editor.\r\n */\r\nexport var MouseTargetType;\r\n(function (MouseTargetType) {\r\n /**\r\n * Mouse is on top of an unknown element.\r\n */\r\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n /**\r\n * Mouse is on top of the textarea used for input.\r\n */\r\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\r\n /**\r\n * Mouse is on top of the glyph margin\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\r\n /**\r\n * Mouse is on top of the line numbers\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\r\n /**\r\n * Mouse is on top of the line decorations\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\r\n /**\r\n * Mouse is on top of the whitespace left in the gutter by a view zone.\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of text in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\r\n /**\r\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\r\n /**\r\n * Mouse is on top of a view zone in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of a content widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\r\n /**\r\n * Mouse is on top of the decorations overview ruler.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\r\n /**\r\n * Mouse is on top of a scrollbar.\r\n */\r\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\r\n /**\r\n * Mouse is on top of an overlay widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\r\n /**\r\n * Mouse is outside of the editor.\r\n */\r\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\r\n})(MouseTargetType || (MouseTargetType = {}));\r\n/**\r\n * A positioning preference for rendering overlay widgets.\r\n */\r\nexport var OverlayWidgetPositionPreference;\r\n(function (OverlayWidgetPositionPreference) {\r\n /**\r\n * Position the overlay widget in the top right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the bottom right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the top center\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\r\n})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\r\n/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\nexport var RenderLineNumbersType;\r\n(function (RenderLineNumbersType) {\r\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\r\n})(RenderLineNumbersType || (RenderLineNumbersType = {}));\r\nexport var RenderMinimap;\r\n(function (RenderMinimap) {\r\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\r\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\r\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\r\n})(RenderMinimap || (RenderMinimap = {}));\r\nexport var ScrollType;\r\n(function (ScrollType) {\r\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\r\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\r\n})(ScrollType || (ScrollType = {}));\r\nexport var ScrollbarVisibility;\r\n(function (ScrollbarVisibility) {\r\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\r\n})(ScrollbarVisibility || (ScrollbarVisibility = {}));\r\n/**\r\n * The direction of a selection.\r\n */\r\nexport var SelectionDirection;\r\n(function (SelectionDirection) {\r\n /**\r\n * The selection starts above where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\r\n /**\r\n * The selection starts below where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\r\n})(SelectionDirection || (SelectionDirection = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\r\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\r\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\r\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\r\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\r\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\r\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\r\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\r\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\r\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\r\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\r\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\r\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\r\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\r\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\r\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\r\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\r\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\r\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\r\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\r\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\r\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\r\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\r\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\r\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\r\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\r\n})(SymbolKind || (SymbolKind = {}));\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(SymbolTag || (SymbolTag = {}));\r\n/**\r\n * The kind of animation in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorBlinkingStyle;\r\n(function (TextEditorCursorBlinkingStyle) {\r\n /**\r\n * Hidden\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\r\n /**\r\n * Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\r\n /**\r\n * Blinking with smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\r\n /**\r\n * Blinking with prolonged filled state and smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\r\n /**\r\n * Expand collapse animation on the y axis\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\r\n /**\r\n * No-Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\r\n})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\n/**\r\n * Describes the behavior of decorations when typing/editing near their edges.\r\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\r\n */\r\nexport var TrackedRangeStickiness;\r\n(function (TrackedRangeStickiness) {\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\r\n})(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\r\n/**\r\n * Describes how to indent wrapped lines.\r\n */\r\nexport var WrappingIndent;\r\n(function (WrappingIndent) {\r\n /**\r\n * No indentation => wrapped lines begin at column 1.\r\n */\r\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\r\n /**\r\n * Same => wrapped lines get the same indentation as the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\r\n /**\r\n * Indent => wrapped lines get +1 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\r\n /**\r\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\r\n})(WrappingIndent || (WrappingIndent = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../nls.js';\r\nexport var AccessibilityHelpNLS;\r\n(function (AccessibilityHelpNLS) {\r\n AccessibilityHelpNLS.noSelection = nls.localize(\"noSelection\", \"No selection\");\r\n AccessibilityHelpNLS.singleSelectionRange = nls.localize(\"singleSelectionRange\", \"Line {0}, Column {1} ({2} selected)\");\r\n AccessibilityHelpNLS.singleSelection = nls.localize(\"singleSelection\", \"Line {0}, Column {1}\");\r\n AccessibilityHelpNLS.multiSelectionRange = nls.localize(\"multiSelectionRange\", \"{0} selections ({1} characters selected)\");\r\n AccessibilityHelpNLS.multiSelection = nls.localize(\"multiSelection\", \"{0} selections\");\r\n AccessibilityHelpNLS.emergencyConfOn = nls.localize(\"emergencyConfOn\", \"Now changing the setting `accessibilitySupport` to 'on'.\");\r\n AccessibilityHelpNLS.openingDocs = nls.localize(\"openingDocs\", \"Now opening the Editor Accessibility documentation page.\");\r\n AccessibilityHelpNLS.readonlyDiffEditor = nls.localize(\"readonlyDiffEditor\", \" in a read-only pane of a diff editor.\");\r\n AccessibilityHelpNLS.editableDiffEditor = nls.localize(\"editableDiffEditor\", \" in a pane of a diff editor.\");\r\n AccessibilityHelpNLS.readonlyEditor = nls.localize(\"readonlyEditor\", \" in a read-only code editor\");\r\n AccessibilityHelpNLS.editableEditor = nls.localize(\"editableEditor\", \" in a code editor\");\r\n AccessibilityHelpNLS.changeConfigToOnMac = nls.localize(\"changeConfigToOnMac\", \"To configure the editor to be optimized for usage with a Screen Reader press Command+E now.\");\r\n AccessibilityHelpNLS.changeConfigToOnWinLinux = nls.localize(\"changeConfigToOnWinLinux\", \"To configure the editor to be optimized for usage with a Screen Reader press Control+E now.\");\r\n AccessibilityHelpNLS.auto_on = nls.localize(\"auto_on\", \"The editor is configured to be optimized for usage with a Screen Reader.\");\r\n AccessibilityHelpNLS.auto_off = nls.localize(\"auto_off\", \"The editor is configured to never be optimized for usage with a Screen Reader, which is not the case at this time.\");\r\n AccessibilityHelpNLS.tabFocusModeOnMsg = nls.localize(\"tabFocusModeOnMsg\", \"Pressing Tab in the current editor will move focus to the next focusable element. Toggle this behavior by pressing {0}.\");\r\n AccessibilityHelpNLS.tabFocusModeOnMsgNoKb = nls.localize(\"tabFocusModeOnMsgNoKb\", \"Pressing Tab in the current editor will move focus to the next focusable element. The command {0} is currently not triggerable by a keybinding.\");\r\n AccessibilityHelpNLS.tabFocusModeOffMsg = nls.localize(\"tabFocusModeOffMsg\", \"Pressing Tab in the current editor will insert the tab character. Toggle this behavior by pressing {0}.\");\r\n AccessibilityHelpNLS.tabFocusModeOffMsgNoKb = nls.localize(\"tabFocusModeOffMsgNoKb\", \"Pressing Tab in the current editor will insert the tab character. The command {0} is currently not triggerable by a keybinding.\");\r\n AccessibilityHelpNLS.openDocMac = nls.localize(\"openDocMac\", \"Press Command+H now to open a browser window with more information related to editor accessibility.\");\r\n AccessibilityHelpNLS.openDocWinLinux = nls.localize(\"openDocWinLinux\", \"Press Control+H now to open a browser window with more information related to editor accessibility.\");\r\n AccessibilityHelpNLS.outroMsg = nls.localize(\"outroMsg\", \"You can dismiss this tooltip and return to the editor by pressing Escape or Shift+Escape.\");\r\n AccessibilityHelpNLS.showAccessibilityHelpAction = nls.localize(\"showAccessibilityHelpAction\", \"Show Accessibility Help\");\r\n})(AccessibilityHelpNLS || (AccessibilityHelpNLS = {}));\r\nexport var InspectTokensNLS;\r\n(function (InspectTokensNLS) {\r\n InspectTokensNLS.inspectTokensAction = nls.localize('inspectTokens', \"Developer: Inspect Tokens\");\r\n})(InspectTokensNLS || (InspectTokensNLS = {}));\r\nexport var GoToLineNLS;\r\n(function (GoToLineNLS) {\r\n GoToLineNLS.gotoLineActionLabel = nls.localize('gotoLineActionLabel', \"Go to Line/Column...\");\r\n})(GoToLineNLS || (GoToLineNLS = {}));\r\nexport var QuickHelpNLS;\r\n(function (QuickHelpNLS) {\r\n QuickHelpNLS.helpQuickAccessActionLabel = nls.localize('helpQuickAccess', \"Show all Quick Access Providers\");\r\n})(QuickHelpNLS || (QuickHelpNLS = {}));\r\nexport var QuickCommandNLS;\r\n(function (QuickCommandNLS) {\r\n QuickCommandNLS.quickCommandActionLabel = nls.localize('quickCommandActionLabel', \"Command Palette\");\r\n QuickCommandNLS.quickCommandHelp = nls.localize('quickCommandActionHelp', \"Show And Run Commands\");\r\n})(QuickCommandNLS || (QuickCommandNLS = {}));\r\nexport var QuickOutlineNLS;\r\n(function (QuickOutlineNLS) {\r\n QuickOutlineNLS.quickOutlineActionLabel = nls.localize('quickOutlineActionLabel', \"Go to Symbol...\");\r\n QuickOutlineNLS.quickOutlineByCategoryActionLabel = nls.localize('quickOutlineByCategoryActionLabel', \"Go to Symbol by Category...\");\r\n})(QuickOutlineNLS || (QuickOutlineNLS = {}));\r\nexport var StandaloneCodeEditorNLS;\r\n(function (StandaloneCodeEditorNLS) {\r\n StandaloneCodeEditorNLS.editorViewAccessibleLabel = nls.localize('editorViewAccessibleLabel', \"Editor content\");\r\n StandaloneCodeEditorNLS.accessibilityHelpMessage = nls.localize('accessibilityHelpMessage', \"Press Alt+F1 for Accessibility Options.\");\r\n})(StandaloneCodeEditorNLS || (StandaloneCodeEditorNLS = {}));\r\nexport var ToggleHighContrastNLS;\r\n(function (ToggleHighContrastNLS) {\r\n ToggleHighContrastNLS.toggleHighContrast = nls.localize('toggleHighContrast', \"Toggle High Contrast Theme\");\r\n})(ToggleHighContrastNLS || (ToggleHighContrastNLS = {}));\r\nexport var SimpleServicesNLS;\r\n(function (SimpleServicesNLS) {\r\n SimpleServicesNLS.bulkEditServiceSummary = nls.localize('bulkEditServiceSummary', \"Made {0} edits in {1} files\");\r\n})(SimpleServicesNLS || (SimpleServicesNLS = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { activeContrastBorder, editorBackground, editorForeground, registerColor, editorWarningForeground, editorInfoForeground, editorWarningBorder, editorInfoBorder, contrastBorder, editorFindMatchHighlight } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\n/**\r\n * Definition of the editor colors\r\n */\r\nexport const editorLineHighlight = registerColor('editor.lineHighlightBackground', { dark: null, light: null, hc: null }, nls.localize('lineHighlight', 'Background color for the highlight of line at the cursor position.'));\r\nexport const editorLineHighlightBorder = registerColor('editor.lineHighlightBorder', { dark: '#282828', light: '#eeeeee', hc: '#f38518' }, nls.localize('lineHighlightBorderBox', 'Background color for the border around the line at the cursor position.'));\r\nexport const editorRangeHighlight = registerColor('editor.rangeHighlightBackground', { dark: '#ffffff0b', light: '#fdff0033', hc: null }, nls.localize('rangeHighlight', 'Background color of highlighted ranges, like by quick open and find features. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const editorRangeHighlightBorder = registerColor('editor.rangeHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('rangeHighlightBorder', 'Background color of the border around highlighted ranges.'), true);\r\nexport const editorSymbolHighlight = registerColor('editor.symbolHighlightBackground', { dark: editorFindMatchHighlight, light: editorFindMatchHighlight, hc: null }, nls.localize('symbolHighlight', 'Background color of highlighted symbol, like for go to definition or go next/previous symbol. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const editorSymbolHighlightBorder = registerColor('editor.symbolHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('symbolHighlightBorder', 'Background color of the border around highlighted symbols.'), true);\r\nexport const editorCursorForeground = registerColor('editorCursor.foreground', { dark: '#AEAFAD', light: Color.black, hc: Color.white }, nls.localize('caret', 'Color of the editor cursor.'));\r\nexport const editorCursorBackground = registerColor('editorCursor.background', null, nls.localize('editorCursorBackground', 'The background color of the editor cursor. Allows customizing the color of a character overlapped by a block cursor.'));\r\nexport const editorWhitespaces = registerColor('editorWhitespace.foreground', { dark: '#e3e4e229', light: '#33333333', hc: '#e3e4e229' }, nls.localize('editorWhitespaces', 'Color of whitespace characters in the editor.'));\r\nexport const editorIndentGuides = registerColor('editorIndentGuide.background', { dark: editorWhitespaces, light: editorWhitespaces, hc: editorWhitespaces }, nls.localize('editorIndentGuides', 'Color of the editor indentation guides.'));\r\nexport const editorActiveIndentGuides = registerColor('editorIndentGuide.activeBackground', { dark: editorWhitespaces, light: editorWhitespaces, hc: editorWhitespaces }, nls.localize('editorActiveIndentGuide', 'Color of the active editor indentation guides.'));\r\nexport const editorLineNumbers = registerColor('editorLineNumber.foreground', { dark: '#858585', light: '#237893', hc: Color.white }, nls.localize('editorLineNumbers', 'Color of editor line numbers.'));\r\nconst deprecatedEditorActiveLineNumber = registerColor('editorActiveLineNumber.foreground', { dark: '#c6c6c6', light: '#0B216F', hc: activeContrastBorder }, nls.localize('editorActiveLineNumber', 'Color of editor active line number'), false, nls.localize('deprecatedEditorActiveLineNumber', 'Id is deprecated. Use \\'editorLineNumber.activeForeground\\' instead.'));\r\nexport const editorActiveLineNumber = registerColor('editorLineNumber.activeForeground', { dark: deprecatedEditorActiveLineNumber, light: deprecatedEditorActiveLineNumber, hc: deprecatedEditorActiveLineNumber }, nls.localize('editorActiveLineNumber', 'Color of editor active line number'));\r\nexport const editorRuler = registerColor('editorRuler.foreground', { dark: '#5A5A5A', light: Color.lightgrey, hc: Color.white }, nls.localize('editorRuler', 'Color of the editor rulers.'));\r\nexport const editorCodeLensForeground = registerColor('editorCodeLens.foreground', { dark: '#999999', light: '#999999', hc: '#999999' }, nls.localize('editorCodeLensForeground', 'Foreground color of editor CodeLens'));\r\nexport const editorBracketMatchBackground = registerColor('editorBracketMatch.background', { dark: '#0064001a', light: '#0064001a', hc: '#0064001a' }, nls.localize('editorBracketMatchBackground', 'Background color behind matching brackets'));\r\nexport const editorBracketMatchBorder = registerColor('editorBracketMatch.border', { dark: '#888', light: '#B9B9B9', hc: contrastBorder }, nls.localize('editorBracketMatchBorder', 'Color for matching brackets boxes'));\r\nexport const editorOverviewRulerBorder = registerColor('editorOverviewRuler.border', { dark: '#7f7f7f4d', light: '#7f7f7f4d', hc: '#7f7f7f4d' }, nls.localize('editorOverviewRulerBorder', 'Color of the overview ruler border.'));\r\nexport const editorOverviewRulerBackground = registerColor('editorOverviewRuler.background', null, nls.localize('editorOverviewRulerBackground', 'Background color of the editor overview ruler. Only used when the minimap is enabled and placed on the right side of the editor.'));\r\nexport const editorGutter = registerColor('editorGutter.background', { dark: editorBackground, light: editorBackground, hc: editorBackground }, nls.localize('editorGutter', 'Background color of the editor gutter. The gutter contains the glyph margins and the line numbers.'));\r\nexport const editorUnnecessaryCodeBorder = registerColor('editorUnnecessaryCode.border', { dark: null, light: null, hc: Color.fromHex('#fff').transparent(0.8) }, nls.localize('unnecessaryCodeBorder', 'Border color of unnecessary (unused) source code in the editor.'));\r\nexport const editorUnnecessaryCodeOpacity = registerColor('editorUnnecessaryCode.opacity', { dark: Color.fromHex('#000a'), light: Color.fromHex('#0007'), hc: null }, nls.localize('unnecessaryCodeOpacity', 'Opacity of unnecessary (unused) source code in the editor. For example, \"#000000c0\" will render the code with 75% opacity. For high contrast themes, use the \\'editorUnnecessaryCode.border\\' theme color to underline unnecessary code instead of fading it out.'));\r\nconst rulerRangeDefault = new Color(new RGBA(0, 122, 204, 0.6));\r\nexport const overviewRulerRangeHighlight = registerColor('editorOverviewRuler.rangeHighlightForeground', { dark: rulerRangeDefault, light: rulerRangeDefault, hc: rulerRangeDefault }, nls.localize('overviewRulerRangeHighlight', 'Overview ruler marker color for range highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const overviewRulerError = registerColor('editorOverviewRuler.errorForeground', { dark: new Color(new RGBA(255, 18, 18, 0.7)), light: new Color(new RGBA(255, 18, 18, 0.7)), hc: new Color(new RGBA(255, 50, 50, 1)) }, nls.localize('overviewRuleError', 'Overview ruler marker color for errors.'));\r\nexport const overviewRulerWarning = registerColor('editorOverviewRuler.warningForeground', { dark: editorWarningForeground, light: editorWarningForeground, hc: editorWarningBorder }, nls.localize('overviewRuleWarning', 'Overview ruler marker color for warnings.'));\r\nexport const overviewRulerInfo = registerColor('editorOverviewRuler.infoForeground', { dark: editorInfoForeground, light: editorInfoForeground, hc: editorInfoBorder }, nls.localize('overviewRuleInfo', 'Overview ruler marker color for infos.'));\r\n// contains all color rules that used to defined in editor/browser/widget/editor.css\r\nregisterThemingParticipant((theme, collector) => {\r\n const background = theme.getColor(editorBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor, .monaco-editor-background, .monaco-editor .inputarea.ime-input { background-color: ${background}; }`);\r\n }\r\n const foreground = theme.getColor(editorForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor, .monaco-editor .inputarea.ime-input { color: ${foreground}; }`);\r\n }\r\n const gutter = theme.getColor(editorGutter);\r\n if (gutter) {\r\n collector.addRule(`.monaco-editor .margin { background-color: ${gutter}; }`);\r\n }\r\n const rangeHighlight = theme.getColor(editorRangeHighlight);\r\n if (rangeHighlight) {\r\n collector.addRule(`.monaco-editor .rangeHighlight { background-color: ${rangeHighlight}; }`);\r\n }\r\n const rangeHighlightBorder = theme.getColor(editorRangeHighlightBorder);\r\n if (rangeHighlightBorder) {\r\n collector.addRule(`.monaco-editor .rangeHighlight { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${rangeHighlightBorder}; }`);\r\n }\r\n const symbolHighlight = theme.getColor(editorSymbolHighlight);\r\n if (symbolHighlight) {\r\n collector.addRule(`.monaco-editor .symbolHighlight { background-color: ${symbolHighlight}; }`);\r\n }\r\n const symbolHighlightBorder = theme.getColor(editorSymbolHighlightBorder);\r\n if (symbolHighlightBorder) {\r\n collector.addRule(`.monaco-editor .symbolHighlight { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${symbolHighlightBorder}; }`);\r\n }\r\n const invisibles = theme.getColor(editorWhitespaces);\r\n if (invisibles) {\r\n collector.addRule(`.monaco-editor .mtkw { color: ${invisibles} !important; }`);\r\n collector.addRule(`.monaco-editor .mtkz { color: ${invisibles} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ColorZone {\r\n constructor(from, to, colorId) {\r\n this.from = from | 0;\r\n this.to = to | 0;\r\n this.colorId = colorId | 0;\r\n }\r\n static compare(a, b) {\r\n if (a.colorId === b.colorId) {\r\n if (a.from === b.from) {\r\n return a.to - b.to;\r\n }\r\n return a.from - b.from;\r\n }\r\n return a.colorId - b.colorId;\r\n }\r\n}\r\n/**\r\n * A zone in the overview ruler\r\n */\r\nexport class OverviewRulerZone {\r\n constructor(startLineNumber, endLineNumber, color) {\r\n this.startLineNumber = startLineNumber;\r\n this.endLineNumber = endLineNumber;\r\n this.color = color;\r\n this._colorZone = null;\r\n }\r\n static compare(a, b) {\r\n if (a.color === b.color) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.color < b.color ? -1 : 1;\r\n }\r\n setColorZone(colorZone) {\r\n this._colorZone = colorZone;\r\n }\r\n getColorZones() {\r\n return this._colorZone;\r\n }\r\n}\r\nexport class OverviewZoneManager {\r\n constructor(getVerticalOffsetForLine) {\r\n this._getVerticalOffsetForLine = getVerticalOffsetForLine;\r\n this._zones = [];\r\n this._colorZonesInvalid = false;\r\n this._lineHeight = 0;\r\n this._domWidth = 0;\r\n this._domHeight = 0;\r\n this._outerHeight = 0;\r\n this._pixelRatio = 1;\r\n this._lastAssignedId = 0;\r\n this._color2Id = Object.create(null);\r\n this._id2Color = [];\r\n }\r\n getId2Color() {\r\n return this._id2Color;\r\n }\r\n setZones(newZones) {\r\n this._zones = newZones;\r\n this._zones.sort(OverviewRulerZone.compare);\r\n }\r\n setLineHeight(lineHeight) {\r\n if (this._lineHeight === lineHeight) {\r\n return false;\r\n }\r\n this._lineHeight = lineHeight;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n setPixelRatio(pixelRatio) {\r\n this._pixelRatio = pixelRatio;\r\n this._colorZonesInvalid = true;\r\n }\r\n getDOMWidth() {\r\n return this._domWidth;\r\n }\r\n getCanvasWidth() {\r\n return this._domWidth * this._pixelRatio;\r\n }\r\n setDOMWidth(width) {\r\n if (this._domWidth === width) {\r\n return false;\r\n }\r\n this._domWidth = width;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n getDOMHeight() {\r\n return this._domHeight;\r\n }\r\n getCanvasHeight() {\r\n return this._domHeight * this._pixelRatio;\r\n }\r\n setDOMHeight(height) {\r\n if (this._domHeight === height) {\r\n return false;\r\n }\r\n this._domHeight = height;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n getOuterHeight() {\r\n return this._outerHeight;\r\n }\r\n setOuterHeight(outerHeight) {\r\n if (this._outerHeight === outerHeight) {\r\n return false;\r\n }\r\n this._outerHeight = outerHeight;\r\n this._colorZonesInvalid = true;\r\n return true;\r\n }\r\n resolveColorZones() {\r\n const colorZonesInvalid = this._colorZonesInvalid;\r\n const lineHeight = Math.floor(this._lineHeight); // @perf\r\n const totalHeight = Math.floor(this.getCanvasHeight()); // @perf\r\n const outerHeight = Math.floor(this._outerHeight); // @perf\r\n const heightRatio = totalHeight / outerHeight;\r\n const halfMinimumHeight = Math.floor(4 /* MINIMUM_HEIGHT */ * this._pixelRatio / 2);\r\n let allColorZones = [];\r\n for (let i = 0, len = this._zones.length; i < len; i++) {\r\n const zone = this._zones[i];\r\n if (!colorZonesInvalid) {\r\n const colorZone = zone.getColorZones();\r\n if (colorZone) {\r\n allColorZones.push(colorZone);\r\n continue;\r\n }\r\n }\r\n const y1 = Math.floor(heightRatio * (this._getVerticalOffsetForLine(zone.startLineNumber)));\r\n const y2 = Math.floor(heightRatio * (this._getVerticalOffsetForLine(zone.endLineNumber) + lineHeight));\r\n let ycenter = Math.floor((y1 + y2) / 2);\r\n let halfHeight = (y2 - ycenter);\r\n if (halfHeight < halfMinimumHeight) {\r\n halfHeight = halfMinimumHeight;\r\n }\r\n if (ycenter - halfHeight < 0) {\r\n ycenter = halfHeight;\r\n }\r\n if (ycenter + halfHeight > totalHeight) {\r\n ycenter = totalHeight - halfHeight;\r\n }\r\n const color = zone.color;\r\n let colorId = this._color2Id[color];\r\n if (!colorId) {\r\n colorId = (++this._lastAssignedId);\r\n this._color2Id[color] = colorId;\r\n this._id2Color[colorId] = color;\r\n }\r\n const colorZone = new ColorZone(ycenter - halfHeight, ycenter + halfHeight, colorId);\r\n zone.setColorZone(colorZone);\r\n allColorZones.push(colorZone);\r\n }\r\n this._colorZonesInvalid = false;\r\n allColorZones.sort(ColorZone.compare);\r\n return allColorZones;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class RestrictedRenderingContext {\r\n constructor(viewLayout, viewportData) {\r\n this._viewLayout = viewLayout;\r\n this.viewportData = viewportData;\r\n this.scrollWidth = this._viewLayout.getScrollWidth();\r\n this.scrollHeight = this._viewLayout.getScrollHeight();\r\n this.visibleRange = this.viewportData.visibleRange;\r\n this.bigNumbersDelta = this.viewportData.bigNumbersDelta;\r\n const vInfo = this._viewLayout.getCurrentViewport();\r\n this.scrollTop = vInfo.top;\r\n this.scrollLeft = vInfo.left;\r\n this.viewportWidth = vInfo.width;\r\n this.viewportHeight = vInfo.height;\r\n }\r\n getScrolledTopFromAbsoluteTop(absoluteTop) {\r\n return absoluteTop - this.scrollTop;\r\n }\r\n getVerticalOffsetForLineNumber(lineNumber) {\r\n return this._viewLayout.getVerticalOffsetForLineNumber(lineNumber);\r\n }\r\n getDecorationsInViewport() {\r\n return this.viewportData.getDecorationsInViewport();\r\n }\r\n}\r\nexport class RenderingContext extends RestrictedRenderingContext {\r\n constructor(viewLayout, viewportData, viewLines) {\r\n super(viewLayout, viewportData);\r\n this._viewLines = viewLines;\r\n }\r\n linesVisibleRangesForRange(range, includeNewLines) {\r\n return this._viewLines.linesVisibleRangesForRange(range, includeNewLines);\r\n }\r\n visibleRangeForPosition(position) {\r\n return this._viewLines.visibleRangeForPosition(position);\r\n }\r\n}\r\nexport class LineVisibleRanges {\r\n constructor(outsideRenderedLine, lineNumber, ranges) {\r\n this.outsideRenderedLine = outsideRenderedLine;\r\n this.lineNumber = lineNumber;\r\n this.ranges = ranges;\r\n }\r\n}\r\nexport class HorizontalRange {\r\n constructor(left, width) {\r\n this.left = Math.round(left);\r\n this.width = Math.round(width);\r\n }\r\n toString() {\r\n return `[${this.left},${this.width}]`;\r\n }\r\n}\r\nexport class HorizontalPosition {\r\n constructor(outsideRenderedLine, left) {\r\n this.outsideRenderedLine = outsideRenderedLine;\r\n this.left = Math.round(left);\r\n }\r\n}\r\nexport class VisibleRanges {\r\n constructor(outsideRenderedLine, ranges) {\r\n this.outsideRenderedLine = outsideRenderedLine;\r\n this.ranges = ranges;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class EditorTheme {\r\n constructor(theme) {\r\n this._theme = theme;\r\n }\r\n get type() {\r\n return this._theme.type;\r\n }\r\n update(theme) {\r\n this._theme = theme;\r\n }\r\n getColor(color) {\r\n return this._theme.getColor(color);\r\n }\r\n}\r\nexport class ViewContext {\r\n constructor(configuration, theme, model) {\r\n this.configuration = configuration;\r\n this.theme = new EditorTheme(theme);\r\n this.model = model;\r\n this.viewLayout = model.viewLayout;\r\n }\r\n addEventHandler(eventHandler) {\r\n this.model.addViewEventHandler(eventHandler);\r\n }\r\n removeEventHandler(eventHandler) {\r\n this.model.removeViewEventHandler(eventHandler);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ViewConfigurationChangedEvent {\r\n constructor(source) {\r\n this.type = 0 /* ViewConfigurationChanged */;\r\n this._source = source;\r\n }\r\n hasChanged(id) {\r\n return this._source.hasChanged(id);\r\n }\r\n}\r\nexport class ViewCursorStateChangedEvent {\r\n constructor(selections, modelSelections) {\r\n this.type = 1 /* ViewCursorStateChanged */;\r\n this.selections = selections;\r\n this.modelSelections = modelSelections;\r\n }\r\n}\r\nexport class ViewDecorationsChangedEvent {\r\n constructor(source) {\r\n this.type = 2 /* ViewDecorationsChanged */;\r\n if (source) {\r\n this.affectsMinimap = source.affectsMinimap;\r\n this.affectsOverviewRuler = source.affectsOverviewRuler;\r\n }\r\n else {\r\n this.affectsMinimap = true;\r\n this.affectsOverviewRuler = true;\r\n }\r\n }\r\n}\r\nexport class ViewFlushedEvent {\r\n constructor() {\r\n this.type = 3 /* ViewFlushed */;\r\n // Nothing to do\r\n }\r\n}\r\nexport class ViewFocusChangedEvent {\r\n constructor(isFocused) {\r\n this.type = 4 /* ViewFocusChanged */;\r\n this.isFocused = isFocused;\r\n }\r\n}\r\nexport class ViewLanguageConfigurationEvent {\r\n constructor() {\r\n this.type = 5 /* ViewLanguageConfigurationChanged */;\r\n }\r\n}\r\nexport class ViewLineMappingChangedEvent {\r\n constructor() {\r\n this.type = 6 /* ViewLineMappingChanged */;\r\n // Nothing to do\r\n }\r\n}\r\nexport class ViewLinesChangedEvent {\r\n constructor(fromLineNumber, toLineNumber) {\r\n this.type = 7 /* ViewLinesChanged */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n }\r\n}\r\nexport class ViewLinesDeletedEvent {\r\n constructor(fromLineNumber, toLineNumber) {\r\n this.type = 8 /* ViewLinesDeleted */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n }\r\n}\r\nexport class ViewLinesInsertedEvent {\r\n constructor(fromLineNumber, toLineNumber) {\r\n this.type = 9 /* ViewLinesInserted */;\r\n this.fromLineNumber = fromLineNumber;\r\n this.toLineNumber = toLineNumber;\r\n }\r\n}\r\nexport class ViewRevealRangeRequestEvent {\r\n constructor(source, range, selections, verticalType, revealHorizontal, scrollType) {\r\n this.type = 10 /* ViewRevealRangeRequest */;\r\n this.source = source;\r\n this.range = range;\r\n this.selections = selections;\r\n this.verticalType = verticalType;\r\n this.revealHorizontal = revealHorizontal;\r\n this.scrollType = scrollType;\r\n }\r\n}\r\nexport class ViewScrollChangedEvent {\r\n constructor(source) {\r\n this.type = 11 /* ViewScrollChanged */;\r\n this.scrollWidth = source.scrollWidth;\r\n this.scrollLeft = source.scrollLeft;\r\n this.scrollHeight = source.scrollHeight;\r\n this.scrollTop = source.scrollTop;\r\n this.scrollWidthChanged = source.scrollWidthChanged;\r\n this.scrollLeftChanged = source.scrollLeftChanged;\r\n this.scrollHeightChanged = source.scrollHeightChanged;\r\n this.scrollTopChanged = source.scrollTopChanged;\r\n }\r\n}\r\nexport class ViewThemeChangedEvent {\r\n constructor() {\r\n this.type = 12 /* ViewThemeChanged */;\r\n }\r\n}\r\nexport class ViewTokensChangedEvent {\r\n constructor(ranges) {\r\n this.type = 13 /* ViewTokensChanged */;\r\n this.ranges = ranges;\r\n }\r\n}\r\nexport class ViewTokensColorsChangedEvent {\r\n constructor() {\r\n this.type = 14 /* ViewTokensColorsChanged */;\r\n // Nothing to do\r\n }\r\n}\r\nexport class ViewZonesChangedEvent {\r\n constructor() {\r\n this.type = 15 /* ViewZonesChanged */;\r\n // Nothing to do\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nexport class LineDecoration {\r\n constructor(startColumn, endColumn, className, type) {\r\n this.startColumn = startColumn;\r\n this.endColumn = endColumn;\r\n this.className = className;\r\n this.type = type;\r\n }\r\n static _equals(a, b) {\r\n return (a.startColumn === b.startColumn\r\n && a.endColumn === b.endColumn\r\n && a.className === b.className\r\n && a.type === b.type);\r\n }\r\n static equalsArr(a, b) {\r\n const aLen = a.length;\r\n const bLen = b.length;\r\n if (aLen !== bLen) {\r\n return false;\r\n }\r\n for (let i = 0; i < aLen; i++) {\r\n if (!LineDecoration._equals(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static filter(lineDecorations, lineNumber, minLineColumn, maxLineColumn) {\r\n if (lineDecorations.length === 0) {\r\n return [];\r\n }\r\n let result = [], resultLen = 0;\r\n for (let i = 0, len = lineDecorations.length; i < len; i++) {\r\n const d = lineDecorations[i];\r\n const range = d.range;\r\n if (range.endLineNumber < lineNumber || range.startLineNumber > lineNumber) {\r\n // Ignore decorations that sit outside this line\r\n continue;\r\n }\r\n if (range.isEmpty() && (d.type === 0 /* Regular */ || d.type === 3 /* RegularAffectingLetterSpacing */)) {\r\n // Ignore empty range decorations\r\n continue;\r\n }\r\n const startColumn = (range.startLineNumber === lineNumber ? range.startColumn : minLineColumn);\r\n const endColumn = (range.endLineNumber === lineNumber ? range.endColumn : maxLineColumn);\r\n result[resultLen++] = new LineDecoration(startColumn, endColumn, d.inlineClassName, d.type);\r\n }\r\n return result;\r\n }\r\n static _typeCompare(a, b) {\r\n const ORDER = [2, 0, 1, 3];\r\n return ORDER[a] - ORDER[b];\r\n }\r\n static compare(a, b) {\r\n if (a.startColumn === b.startColumn) {\r\n if (a.endColumn === b.endColumn) {\r\n const typeCmp = LineDecoration._typeCompare(a.type, b.type);\r\n if (typeCmp === 0) {\r\n if (a.className < b.className) {\r\n return -1;\r\n }\r\n if (a.className > b.className) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n return typeCmp;\r\n }\r\n return a.endColumn - b.endColumn;\r\n }\r\n return a.startColumn - b.startColumn;\r\n }\r\n}\r\nexport class DecorationSegment {\r\n constructor(startOffset, endOffset, className, metadata) {\r\n this.startOffset = startOffset;\r\n this.endOffset = endOffset;\r\n this.className = className;\r\n this.metadata = metadata;\r\n }\r\n}\r\nclass Stack {\r\n constructor() {\r\n this.stopOffsets = [];\r\n this.classNames = [];\r\n this.metadata = [];\r\n this.count = 0;\r\n }\r\n static _metadata(metadata) {\r\n let result = 0;\r\n for (let i = 0, len = metadata.length; i < len; i++) {\r\n result |= metadata[i];\r\n }\r\n return result;\r\n }\r\n consumeLowerThan(maxStopOffset, nextStartOffset, result) {\r\n while (this.count > 0 && this.stopOffsets[0] < maxStopOffset) {\r\n let i = 0;\r\n // Take all equal stopping offsets\r\n while (i + 1 < this.count && this.stopOffsets[i] === this.stopOffsets[i + 1]) {\r\n i++;\r\n }\r\n // Basically we are consuming the first i + 1 elements of the stack\r\n result.push(new DecorationSegment(nextStartOffset, this.stopOffsets[i], this.classNames.join(' '), Stack._metadata(this.metadata)));\r\n nextStartOffset = this.stopOffsets[i] + 1;\r\n // Consume them\r\n this.stopOffsets.splice(0, i + 1);\r\n this.classNames.splice(0, i + 1);\r\n this.metadata.splice(0, i + 1);\r\n this.count -= (i + 1);\r\n }\r\n if (this.count > 0 && nextStartOffset < maxStopOffset) {\r\n result.push(new DecorationSegment(nextStartOffset, maxStopOffset - 1, this.classNames.join(' '), Stack._metadata(this.metadata)));\r\n nextStartOffset = maxStopOffset;\r\n }\r\n return nextStartOffset;\r\n }\r\n insert(stopOffset, className, metadata) {\r\n if (this.count === 0 || this.stopOffsets[this.count - 1] <= stopOffset) {\r\n // Insert at the end\r\n this.stopOffsets.push(stopOffset);\r\n this.classNames.push(className);\r\n this.metadata.push(metadata);\r\n }\r\n else {\r\n // Find the insertion position for `stopOffset`\r\n for (let i = 0; i < this.count; i++) {\r\n if (this.stopOffsets[i] >= stopOffset) {\r\n this.stopOffsets.splice(i, 0, stopOffset);\r\n this.classNames.splice(i, 0, className);\r\n this.metadata.splice(i, 0, metadata);\r\n break;\r\n }\r\n }\r\n }\r\n this.count++;\r\n return;\r\n }\r\n}\r\nexport class LineDecorationsNormalizer {\r\n /**\r\n * Normalize line decorations. Overlapping decorations will generate multiple segments\r\n */\r\n static normalize(lineContent, lineDecorations) {\r\n if (lineDecorations.length === 0) {\r\n return [];\r\n }\r\n let result = [];\r\n const stack = new Stack();\r\n let nextStartOffset = 0;\r\n for (let i = 0, len = lineDecorations.length; i < len; i++) {\r\n const d = lineDecorations[i];\r\n let startColumn = d.startColumn;\r\n let endColumn = d.endColumn;\r\n const className = d.className;\r\n const metadata = (d.type === 1 /* Before */\r\n ? 2 /* PSEUDO_BEFORE */\r\n : d.type === 2 /* After */\r\n ? 4 /* PSEUDO_AFTER */\r\n : 0);\r\n // If the position would end up in the middle of a high-low surrogate pair, we move it to before the pair\r\n if (startColumn > 1) {\r\n const charCodeBefore = lineContent.charCodeAt(startColumn - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n startColumn--;\r\n }\r\n }\r\n if (endColumn > 1) {\r\n const charCodeBefore = lineContent.charCodeAt(endColumn - 2);\r\n if (strings.isHighSurrogate(charCodeBefore)) {\r\n endColumn--;\r\n }\r\n }\r\n const currentStartOffset = startColumn - 1;\r\n const currentEndOffset = endColumn - 2;\r\n nextStartOffset = stack.consumeLowerThan(currentStartOffset, nextStartOffset, result);\r\n if (stack.count === 0) {\r\n nextStartOffset = currentStartOffset;\r\n }\r\n stack.insert(currentEndOffset, className, metadata);\r\n }\r\n stack.consumeLowerThan(1073741824 /* MAX_SAFE_SMALL_INTEGER */, nextStartOffset, result);\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nclass PendingChanges {\r\n constructor() {\r\n this._hasPending = false;\r\n this._inserts = [];\r\n this._changes = [];\r\n this._removes = [];\r\n }\r\n insert(x) {\r\n this._hasPending = true;\r\n this._inserts.push(x);\r\n }\r\n change(x) {\r\n this._hasPending = true;\r\n this._changes.push(x);\r\n }\r\n remove(x) {\r\n this._hasPending = true;\r\n this._removes.push(x);\r\n }\r\n mustCommit() {\r\n return this._hasPending;\r\n }\r\n commit(linesLayout) {\r\n if (!this._hasPending) {\r\n return;\r\n }\r\n const inserts = this._inserts;\r\n const changes = this._changes;\r\n const removes = this._removes;\r\n this._hasPending = false;\r\n this._inserts = [];\r\n this._changes = [];\r\n this._removes = [];\r\n linesLayout._commitPendingChanges(inserts, changes, removes);\r\n }\r\n}\r\nexport class EditorWhitespace {\r\n constructor(id, afterLineNumber, ordinal, height, minWidth) {\r\n this.id = id;\r\n this.afterLineNumber = afterLineNumber;\r\n this.ordinal = ordinal;\r\n this.height = height;\r\n this.minWidth = minWidth;\r\n this.prefixSum = 0;\r\n }\r\n}\r\n/**\r\n * Layouting of objects that take vertical space (by having a height) and push down other objects.\r\n *\r\n * These objects are basically either text (lines) or spaces between those lines (whitespaces).\r\n * This provides commodity operations for working with lines that contain whitespace that pushes lines lower (vertically).\r\n */\r\nexport class LinesLayout {\r\n constructor(lineCount, lineHeight, paddingTop, paddingBottom) {\r\n this._instanceId = strings.singleLetterHash(++LinesLayout.INSTANCE_COUNT);\r\n this._pendingChanges = new PendingChanges();\r\n this._lastWhitespaceId = 0;\r\n this._arr = [];\r\n this._prefixSumValidIndex = -1;\r\n this._minWidth = -1; /* marker for not being computed */\r\n this._lineCount = lineCount;\r\n this._lineHeight = lineHeight;\r\n this._paddingTop = paddingTop;\r\n this._paddingBottom = paddingBottom;\r\n }\r\n /**\r\n * Find the insertion index for a new value inside a sorted array of values.\r\n * If the value is already present in the sorted array, the insertion index will be after the already existing value.\r\n */\r\n static findInsertionIndex(arr, afterLineNumber, ordinal) {\r\n let low = 0;\r\n let high = arr.length;\r\n while (low < high) {\r\n const mid = ((low + high) >>> 1);\r\n if (afterLineNumber === arr[mid].afterLineNumber) {\r\n if (ordinal < arr[mid].ordinal) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n else if (afterLineNumber < arr[mid].afterLineNumber) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n }\r\n /**\r\n * Change the height of a line in pixels.\r\n */\r\n setLineHeight(lineHeight) {\r\n this._checkPendingChanges();\r\n this._lineHeight = lineHeight;\r\n }\r\n /**\r\n * Changes the padding used to calculate vertical offsets.\r\n */\r\n setPadding(paddingTop, paddingBottom) {\r\n this._paddingTop = paddingTop;\r\n this._paddingBottom = paddingBottom;\r\n }\r\n /**\r\n * Set the number of lines.\r\n *\r\n * @param lineCount New number of lines.\r\n */\r\n onFlushed(lineCount) {\r\n this._checkPendingChanges();\r\n this._lineCount = lineCount;\r\n }\r\n changeWhitespace(callback) {\r\n let hadAChange = false;\r\n try {\r\n const accessor = {\r\n insertWhitespace: (afterLineNumber, ordinal, heightInPx, minWidth) => {\r\n hadAChange = true;\r\n afterLineNumber = afterLineNumber | 0;\r\n ordinal = ordinal | 0;\r\n heightInPx = heightInPx | 0;\r\n minWidth = minWidth | 0;\r\n const id = this._instanceId + (++this._lastWhitespaceId);\r\n this._pendingChanges.insert(new EditorWhitespace(id, afterLineNumber, ordinal, heightInPx, minWidth));\r\n return id;\r\n },\r\n changeOneWhitespace: (id, newAfterLineNumber, newHeight) => {\r\n hadAChange = true;\r\n newAfterLineNumber = newAfterLineNumber | 0;\r\n newHeight = newHeight | 0;\r\n this._pendingChanges.change({ id, newAfterLineNumber, newHeight });\r\n },\r\n removeWhitespace: (id) => {\r\n hadAChange = true;\r\n this._pendingChanges.remove({ id });\r\n }\r\n };\r\n callback(accessor);\r\n }\r\n finally {\r\n this._pendingChanges.commit(this);\r\n }\r\n return hadAChange;\r\n }\r\n _commitPendingChanges(inserts, changes, removes) {\r\n if (inserts.length > 0 || removes.length > 0) {\r\n this._minWidth = -1; /* marker for not being computed */\r\n }\r\n if (inserts.length + changes.length + removes.length <= 1) {\r\n // when only one thing happened, handle it \"delicately\"\r\n for (const insert of inserts) {\r\n this._insertWhitespace(insert);\r\n }\r\n for (const change of changes) {\r\n this._changeOneWhitespace(change.id, change.newAfterLineNumber, change.newHeight);\r\n }\r\n for (const remove of removes) {\r\n const index = this._findWhitespaceIndex(remove.id);\r\n if (index === -1) {\r\n continue;\r\n }\r\n this._removeWhitespace(index);\r\n }\r\n return;\r\n }\r\n // simply rebuild the entire datastructure\r\n const toRemove = new Set();\r\n for (const remove of removes) {\r\n toRemove.add(remove.id);\r\n }\r\n const toChange = new Map();\r\n for (const change of changes) {\r\n toChange.set(change.id, change);\r\n }\r\n const applyRemoveAndChange = (whitespaces) => {\r\n let result = [];\r\n for (const whitespace of whitespaces) {\r\n if (toRemove.has(whitespace.id)) {\r\n continue;\r\n }\r\n if (toChange.has(whitespace.id)) {\r\n const change = toChange.get(whitespace.id);\r\n whitespace.afterLineNumber = change.newAfterLineNumber;\r\n whitespace.height = change.newHeight;\r\n }\r\n result.push(whitespace);\r\n }\r\n return result;\r\n };\r\n const result = applyRemoveAndChange(this._arr).concat(applyRemoveAndChange(inserts));\r\n result.sort((a, b) => {\r\n if (a.afterLineNumber === b.afterLineNumber) {\r\n return a.ordinal - b.ordinal;\r\n }\r\n return a.afterLineNumber - b.afterLineNumber;\r\n });\r\n this._arr = result;\r\n this._prefixSumValidIndex = -1;\r\n }\r\n _checkPendingChanges() {\r\n if (this._pendingChanges.mustCommit()) {\r\n this._pendingChanges.commit(this);\r\n }\r\n }\r\n _insertWhitespace(whitespace) {\r\n const insertIndex = LinesLayout.findInsertionIndex(this._arr, whitespace.afterLineNumber, whitespace.ordinal);\r\n this._arr.splice(insertIndex, 0, whitespace);\r\n this._prefixSumValidIndex = Math.min(this._prefixSumValidIndex, insertIndex - 1);\r\n }\r\n _findWhitespaceIndex(id) {\r\n const arr = this._arr;\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i].id === id) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n _changeOneWhitespace(id, newAfterLineNumber, newHeight) {\r\n const index = this._findWhitespaceIndex(id);\r\n if (index === -1) {\r\n return;\r\n }\r\n if (this._arr[index].height !== newHeight) {\r\n this._arr[index].height = newHeight;\r\n this._prefixSumValidIndex = Math.min(this._prefixSumValidIndex, index - 1);\r\n }\r\n if (this._arr[index].afterLineNumber !== newAfterLineNumber) {\r\n // `afterLineNumber` changed for this whitespace\r\n // Record old whitespace\r\n const whitespace = this._arr[index];\r\n // Since changing `afterLineNumber` can trigger a reordering, we're gonna remove this whitespace\r\n this._removeWhitespace(index);\r\n whitespace.afterLineNumber = newAfterLineNumber;\r\n // And add it again\r\n this._insertWhitespace(whitespace);\r\n }\r\n }\r\n _removeWhitespace(removeIndex) {\r\n this._arr.splice(removeIndex, 1);\r\n this._prefixSumValidIndex = Math.min(this._prefixSumValidIndex, removeIndex - 1);\r\n }\r\n /**\r\n * Notify the layouter that lines have been deleted (a continuous zone of lines).\r\n *\r\n * @param fromLineNumber The line number at which the deletion started, inclusive\r\n * @param toLineNumber The line number at which the deletion ended, inclusive\r\n */\r\n onLinesDeleted(fromLineNumber, toLineNumber) {\r\n this._checkPendingChanges();\r\n fromLineNumber = fromLineNumber | 0;\r\n toLineNumber = toLineNumber | 0;\r\n this._lineCount -= (toLineNumber - fromLineNumber + 1);\r\n for (let i = 0, len = this._arr.length; i < len; i++) {\r\n const afterLineNumber = this._arr[i].afterLineNumber;\r\n if (fromLineNumber <= afterLineNumber && afterLineNumber <= toLineNumber) {\r\n // The line this whitespace was after has been deleted\r\n // => move whitespace to before first deleted line\r\n this._arr[i].afterLineNumber = fromLineNumber - 1;\r\n }\r\n else if (afterLineNumber > toLineNumber) {\r\n // The line this whitespace was after has been moved up\r\n // => move whitespace up\r\n this._arr[i].afterLineNumber -= (toLineNumber - fromLineNumber + 1);\r\n }\r\n }\r\n }\r\n /**\r\n * Notify the layouter that lines have been inserted (a continuous zone of lines).\r\n *\r\n * @param fromLineNumber The line number at which the insertion started, inclusive\r\n * @param toLineNumber The line number at which the insertion ended, inclusive.\r\n */\r\n onLinesInserted(fromLineNumber, toLineNumber) {\r\n this._checkPendingChanges();\r\n fromLineNumber = fromLineNumber | 0;\r\n toLineNumber = toLineNumber | 0;\r\n this._lineCount += (toLineNumber - fromLineNumber + 1);\r\n for (let i = 0, len = this._arr.length; i < len; i++) {\r\n const afterLineNumber = this._arr[i].afterLineNumber;\r\n if (fromLineNumber <= afterLineNumber) {\r\n this._arr[i].afterLineNumber += (toLineNumber - fromLineNumber + 1);\r\n }\r\n }\r\n }\r\n /**\r\n * Get the sum of all the whitespaces.\r\n */\r\n getWhitespacesTotalHeight() {\r\n this._checkPendingChanges();\r\n if (this._arr.length === 0) {\r\n return 0;\r\n }\r\n return this.getWhitespacesAccumulatedHeight(this._arr.length - 1);\r\n }\r\n /**\r\n * Return the sum of the heights of the whitespaces at [0..index].\r\n * This includes the whitespace at `index`.\r\n *\r\n * @param index The index of the whitespace.\r\n * @return The sum of the heights of all whitespaces before the one at `index`, including the one at `index`.\r\n */\r\n getWhitespacesAccumulatedHeight(index) {\r\n this._checkPendingChanges();\r\n index = index | 0;\r\n let startIndex = Math.max(0, this._prefixSumValidIndex + 1);\r\n if (startIndex === 0) {\r\n this._arr[0].prefixSum = this._arr[0].height;\r\n startIndex++;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this._arr[i].prefixSum = this._arr[i - 1].prefixSum + this._arr[i].height;\r\n }\r\n this._prefixSumValidIndex = Math.max(this._prefixSumValidIndex, index);\r\n return this._arr[index].prefixSum;\r\n }\r\n /**\r\n * Get the sum of heights for all objects.\r\n *\r\n * @return The sum of heights for all objects.\r\n */\r\n getLinesTotalHeight() {\r\n this._checkPendingChanges();\r\n const linesHeight = this._lineHeight * this._lineCount;\r\n const whitespacesHeight = this.getWhitespacesTotalHeight();\r\n return linesHeight + whitespacesHeight + this._paddingTop + this._paddingBottom;\r\n }\r\n /**\r\n * Returns the accumulated height of whitespaces before the given line number.\r\n *\r\n * @param lineNumber The line number\r\n */\r\n getWhitespaceAccumulatedHeightBeforeLineNumber(lineNumber) {\r\n this._checkPendingChanges();\r\n lineNumber = lineNumber | 0;\r\n const lastWhitespaceBeforeLineNumber = this._findLastWhitespaceBeforeLineNumber(lineNumber);\r\n if (lastWhitespaceBeforeLineNumber === -1) {\r\n return 0;\r\n }\r\n return this.getWhitespacesAccumulatedHeight(lastWhitespaceBeforeLineNumber);\r\n }\r\n _findLastWhitespaceBeforeLineNumber(lineNumber) {\r\n lineNumber = lineNumber | 0;\r\n // Find the whitespace before line number\r\n const arr = this._arr;\r\n let low = 0;\r\n let high = arr.length - 1;\r\n while (low <= high) {\r\n const delta = (high - low) | 0;\r\n const halfDelta = (delta / 2) | 0;\r\n const mid = (low + halfDelta) | 0;\r\n if (arr[mid].afterLineNumber < lineNumber) {\r\n if (mid + 1 >= arr.length || arr[mid + 1].afterLineNumber >= lineNumber) {\r\n return mid;\r\n }\r\n else {\r\n low = (mid + 1) | 0;\r\n }\r\n }\r\n else {\r\n high = (mid - 1) | 0;\r\n }\r\n }\r\n return -1;\r\n }\r\n _findFirstWhitespaceAfterLineNumber(lineNumber) {\r\n lineNumber = lineNumber | 0;\r\n const lastWhitespaceBeforeLineNumber = this._findLastWhitespaceBeforeLineNumber(lineNumber);\r\n const firstWhitespaceAfterLineNumber = lastWhitespaceBeforeLineNumber + 1;\r\n if (firstWhitespaceAfterLineNumber < this._arr.length) {\r\n return firstWhitespaceAfterLineNumber;\r\n }\r\n return -1;\r\n }\r\n /**\r\n * Find the index of the first whitespace which has `afterLineNumber` >= `lineNumber`.\r\n * @return The index of the first whitespace with `afterLineNumber` >= `lineNumber` or -1 if no whitespace is found.\r\n */\r\n getFirstWhitespaceIndexAfterLineNumber(lineNumber) {\r\n this._checkPendingChanges();\r\n lineNumber = lineNumber | 0;\r\n return this._findFirstWhitespaceAfterLineNumber(lineNumber);\r\n }\r\n /**\r\n * Get the vertical offset (the sum of heights for all objects above) a certain line number.\r\n *\r\n * @param lineNumber The line number\r\n * @return The sum of heights for all objects above `lineNumber`.\r\n */\r\n getVerticalOffsetForLineNumber(lineNumber) {\r\n this._checkPendingChanges();\r\n lineNumber = lineNumber | 0;\r\n let previousLinesHeight;\r\n if (lineNumber > 1) {\r\n previousLinesHeight = this._lineHeight * (lineNumber - 1);\r\n }\r\n else {\r\n previousLinesHeight = 0;\r\n }\r\n const previousWhitespacesHeight = this.getWhitespaceAccumulatedHeightBeforeLineNumber(lineNumber);\r\n return previousLinesHeight + previousWhitespacesHeight + this._paddingTop;\r\n }\r\n /**\r\n * The maximum min width for all whitespaces.\r\n */\r\n getWhitespaceMinWidth() {\r\n this._checkPendingChanges();\r\n if (this._minWidth === -1) {\r\n let minWidth = 0;\r\n for (let i = 0, len = this._arr.length; i < len; i++) {\r\n minWidth = Math.max(minWidth, this._arr[i].minWidth);\r\n }\r\n this._minWidth = minWidth;\r\n }\r\n return this._minWidth;\r\n }\r\n /**\r\n * Check if `verticalOffset` is below all lines.\r\n */\r\n isAfterLines(verticalOffset) {\r\n this._checkPendingChanges();\r\n const totalHeight = this.getLinesTotalHeight();\r\n return verticalOffset > totalHeight;\r\n }\r\n /**\r\n * Find the first line number that is at or after vertical offset `verticalOffset`.\r\n * i.e. if getVerticalOffsetForLine(line) is x and getVerticalOffsetForLine(line + 1) is y, then\r\n * getLineNumberAtOrAfterVerticalOffset(i) = line, x <= i < y.\r\n *\r\n * @param verticalOffset The vertical offset to search at.\r\n * @return The line number at or after vertical offset `verticalOffset`.\r\n */\r\n getLineNumberAtOrAfterVerticalOffset(verticalOffset) {\r\n this._checkPendingChanges();\r\n verticalOffset = verticalOffset | 0;\r\n if (verticalOffset < 0) {\r\n return 1;\r\n }\r\n const linesCount = this._lineCount | 0;\r\n const lineHeight = this._lineHeight;\r\n let minLineNumber = 1;\r\n let maxLineNumber = linesCount;\r\n while (minLineNumber < maxLineNumber) {\r\n const midLineNumber = ((minLineNumber + maxLineNumber) / 2) | 0;\r\n const midLineNumberVerticalOffset = this.getVerticalOffsetForLineNumber(midLineNumber) | 0;\r\n if (verticalOffset >= midLineNumberVerticalOffset + lineHeight) {\r\n // vertical offset is after mid line number\r\n minLineNumber = midLineNumber + 1;\r\n }\r\n else if (verticalOffset >= midLineNumberVerticalOffset) {\r\n // Hit\r\n return midLineNumber;\r\n }\r\n else {\r\n // vertical offset is before mid line number, but mid line number could still be what we're searching for\r\n maxLineNumber = midLineNumber;\r\n }\r\n }\r\n if (minLineNumber > linesCount) {\r\n return linesCount;\r\n }\r\n return minLineNumber;\r\n }\r\n /**\r\n * Get all the lines and their relative vertical offsets that are positioned between `verticalOffset1` and `verticalOffset2`.\r\n *\r\n * @param verticalOffset1 The beginning of the viewport.\r\n * @param verticalOffset2 The end of the viewport.\r\n * @return A structure describing the lines positioned between `verticalOffset1` and `verticalOffset2`.\r\n */\r\n getLinesViewportData(verticalOffset1, verticalOffset2) {\r\n this._checkPendingChanges();\r\n verticalOffset1 = verticalOffset1 | 0;\r\n verticalOffset2 = verticalOffset2 | 0;\r\n const lineHeight = this._lineHeight;\r\n // Find first line number\r\n // We don't live in a perfect world, so the line number might start before or after verticalOffset1\r\n const startLineNumber = this.getLineNumberAtOrAfterVerticalOffset(verticalOffset1) | 0;\r\n const startLineNumberVerticalOffset = this.getVerticalOffsetForLineNumber(startLineNumber) | 0;\r\n let endLineNumber = this._lineCount | 0;\r\n // Also keep track of what whitespace we've got\r\n let whitespaceIndex = this.getFirstWhitespaceIndexAfterLineNumber(startLineNumber) | 0;\r\n const whitespaceCount = this.getWhitespacesCount() | 0;\r\n let currentWhitespaceHeight;\r\n let currentWhitespaceAfterLineNumber;\r\n if (whitespaceIndex === -1) {\r\n whitespaceIndex = whitespaceCount;\r\n currentWhitespaceAfterLineNumber = endLineNumber + 1;\r\n currentWhitespaceHeight = 0;\r\n }\r\n else {\r\n currentWhitespaceAfterLineNumber = this.getAfterLineNumberForWhitespaceIndex(whitespaceIndex) | 0;\r\n currentWhitespaceHeight = this.getHeightForWhitespaceIndex(whitespaceIndex) | 0;\r\n }\r\n let currentVerticalOffset = startLineNumberVerticalOffset;\r\n let currentLineRelativeOffset = currentVerticalOffset;\r\n // IE (all versions) cannot handle units above about 1,533,908 px, so every 500k pixels bring numbers down\r\n const STEP_SIZE = 500000;\r\n let bigNumbersDelta = 0;\r\n if (startLineNumberVerticalOffset >= STEP_SIZE) {\r\n // Compute a delta that guarantees that lines are positioned at `lineHeight` increments\r\n bigNumbersDelta = Math.floor(startLineNumberVerticalOffset / STEP_SIZE) * STEP_SIZE;\r\n bigNumbersDelta = Math.floor(bigNumbersDelta / lineHeight) * lineHeight;\r\n currentLineRelativeOffset -= bigNumbersDelta;\r\n }\r\n const linesOffsets = [];\r\n const verticalCenter = verticalOffset1 + (verticalOffset2 - verticalOffset1) / 2;\r\n let centeredLineNumber = -1;\r\n // Figure out how far the lines go\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n if (centeredLineNumber === -1) {\r\n const currentLineTop = currentVerticalOffset;\r\n const currentLineBottom = currentVerticalOffset + lineHeight;\r\n if ((currentLineTop <= verticalCenter && verticalCenter < currentLineBottom) || currentLineTop > verticalCenter) {\r\n centeredLineNumber = lineNumber;\r\n }\r\n }\r\n // Count current line height in the vertical offsets\r\n currentVerticalOffset += lineHeight;\r\n linesOffsets[lineNumber - startLineNumber] = currentLineRelativeOffset;\r\n // Next line starts immediately after this one\r\n currentLineRelativeOffset += lineHeight;\r\n while (currentWhitespaceAfterLineNumber === lineNumber) {\r\n // Push down next line with the height of the current whitespace\r\n currentLineRelativeOffset += currentWhitespaceHeight;\r\n // Count current whitespace in the vertical offsets\r\n currentVerticalOffset += currentWhitespaceHeight;\r\n whitespaceIndex++;\r\n if (whitespaceIndex >= whitespaceCount) {\r\n currentWhitespaceAfterLineNumber = endLineNumber + 1;\r\n }\r\n else {\r\n currentWhitespaceAfterLineNumber = this.getAfterLineNumberForWhitespaceIndex(whitespaceIndex) | 0;\r\n currentWhitespaceHeight = this.getHeightForWhitespaceIndex(whitespaceIndex) | 0;\r\n }\r\n }\r\n if (currentVerticalOffset >= verticalOffset2) {\r\n // We have covered the entire viewport area, time to stop\r\n endLineNumber = lineNumber;\r\n break;\r\n }\r\n }\r\n if (centeredLineNumber === -1) {\r\n centeredLineNumber = endLineNumber;\r\n }\r\n const endLineNumberVerticalOffset = this.getVerticalOffsetForLineNumber(endLineNumber) | 0;\r\n let completelyVisibleStartLineNumber = startLineNumber;\r\n let completelyVisibleEndLineNumber = endLineNumber;\r\n if (completelyVisibleStartLineNumber < completelyVisibleEndLineNumber) {\r\n if (startLineNumberVerticalOffset < verticalOffset1) {\r\n completelyVisibleStartLineNumber++;\r\n }\r\n }\r\n if (completelyVisibleStartLineNumber < completelyVisibleEndLineNumber) {\r\n if (endLineNumberVerticalOffset + lineHeight > verticalOffset2) {\r\n completelyVisibleEndLineNumber--;\r\n }\r\n }\r\n return {\r\n bigNumbersDelta: bigNumbersDelta,\r\n startLineNumber: startLineNumber,\r\n endLineNumber: endLineNumber,\r\n relativeVerticalOffset: linesOffsets,\r\n centeredLineNumber: centeredLineNumber,\r\n completelyVisibleStartLineNumber: completelyVisibleStartLineNumber,\r\n completelyVisibleEndLineNumber: completelyVisibleEndLineNumber\r\n };\r\n }\r\n getVerticalOffsetForWhitespaceIndex(whitespaceIndex) {\r\n this._checkPendingChanges();\r\n whitespaceIndex = whitespaceIndex | 0;\r\n const afterLineNumber = this.getAfterLineNumberForWhitespaceIndex(whitespaceIndex);\r\n let previousLinesHeight;\r\n if (afterLineNumber >= 1) {\r\n previousLinesHeight = this._lineHeight * afterLineNumber;\r\n }\r\n else {\r\n previousLinesHeight = 0;\r\n }\r\n let previousWhitespacesHeight;\r\n if (whitespaceIndex > 0) {\r\n previousWhitespacesHeight = this.getWhitespacesAccumulatedHeight(whitespaceIndex - 1);\r\n }\r\n else {\r\n previousWhitespacesHeight = 0;\r\n }\r\n return previousLinesHeight + previousWhitespacesHeight + this._paddingTop;\r\n }\r\n getWhitespaceIndexAtOrAfterVerticallOffset(verticalOffset) {\r\n this._checkPendingChanges();\r\n verticalOffset = verticalOffset | 0;\r\n let minWhitespaceIndex = 0;\r\n let maxWhitespaceIndex = this.getWhitespacesCount() - 1;\r\n if (maxWhitespaceIndex < 0) {\r\n return -1;\r\n }\r\n // Special case: nothing to be found\r\n const maxWhitespaceVerticalOffset = this.getVerticalOffsetForWhitespaceIndex(maxWhitespaceIndex);\r\n const maxWhitespaceHeight = this.getHeightForWhitespaceIndex(maxWhitespaceIndex);\r\n if (verticalOffset >= maxWhitespaceVerticalOffset + maxWhitespaceHeight) {\r\n return -1;\r\n }\r\n while (minWhitespaceIndex < maxWhitespaceIndex) {\r\n const midWhitespaceIndex = Math.floor((minWhitespaceIndex + maxWhitespaceIndex) / 2);\r\n const midWhitespaceVerticalOffset = this.getVerticalOffsetForWhitespaceIndex(midWhitespaceIndex);\r\n const midWhitespaceHeight = this.getHeightForWhitespaceIndex(midWhitespaceIndex);\r\n if (verticalOffset >= midWhitespaceVerticalOffset + midWhitespaceHeight) {\r\n // vertical offset is after whitespace\r\n minWhitespaceIndex = midWhitespaceIndex + 1;\r\n }\r\n else if (verticalOffset >= midWhitespaceVerticalOffset) {\r\n // Hit\r\n return midWhitespaceIndex;\r\n }\r\n else {\r\n // vertical offset is before whitespace, but midWhitespaceIndex might still be what we're searching for\r\n maxWhitespaceIndex = midWhitespaceIndex;\r\n }\r\n }\r\n return minWhitespaceIndex;\r\n }\r\n /**\r\n * Get exactly the whitespace that is layouted at `verticalOffset`.\r\n *\r\n * @param verticalOffset The vertical offset.\r\n * @return Precisely the whitespace that is layouted at `verticaloffset` or null.\r\n */\r\n getWhitespaceAtVerticalOffset(verticalOffset) {\r\n this._checkPendingChanges();\r\n verticalOffset = verticalOffset | 0;\r\n const candidateIndex = this.getWhitespaceIndexAtOrAfterVerticallOffset(verticalOffset);\r\n if (candidateIndex < 0) {\r\n return null;\r\n }\r\n if (candidateIndex >= this.getWhitespacesCount()) {\r\n return null;\r\n }\r\n const candidateTop = this.getVerticalOffsetForWhitespaceIndex(candidateIndex);\r\n if (candidateTop > verticalOffset) {\r\n return null;\r\n }\r\n const candidateHeight = this.getHeightForWhitespaceIndex(candidateIndex);\r\n const candidateId = this.getIdForWhitespaceIndex(candidateIndex);\r\n const candidateAfterLineNumber = this.getAfterLineNumberForWhitespaceIndex(candidateIndex);\r\n return {\r\n id: candidateId,\r\n afterLineNumber: candidateAfterLineNumber,\r\n verticalOffset: candidateTop,\r\n height: candidateHeight\r\n };\r\n }\r\n /**\r\n * Get a list of whitespaces that are positioned between `verticalOffset1` and `verticalOffset2`.\r\n *\r\n * @param verticalOffset1 The beginning of the viewport.\r\n * @param verticalOffset2 The end of the viewport.\r\n * @return An array with all the whitespaces in the viewport. If no whitespace is in viewport, the array is empty.\r\n */\r\n getWhitespaceViewportData(verticalOffset1, verticalOffset2) {\r\n this._checkPendingChanges();\r\n verticalOffset1 = verticalOffset1 | 0;\r\n verticalOffset2 = verticalOffset2 | 0;\r\n const startIndex = this.getWhitespaceIndexAtOrAfterVerticallOffset(verticalOffset1);\r\n const endIndex = this.getWhitespacesCount() - 1;\r\n if (startIndex < 0) {\r\n return [];\r\n }\r\n let result = [];\r\n for (let i = startIndex; i <= endIndex; i++) {\r\n const top = this.getVerticalOffsetForWhitespaceIndex(i);\r\n const height = this.getHeightForWhitespaceIndex(i);\r\n if (top >= verticalOffset2) {\r\n break;\r\n }\r\n result.push({\r\n id: this.getIdForWhitespaceIndex(i),\r\n afterLineNumber: this.getAfterLineNumberForWhitespaceIndex(i),\r\n verticalOffset: top,\r\n height: height\r\n });\r\n }\r\n return result;\r\n }\r\n /**\r\n * Get all whitespaces.\r\n */\r\n getWhitespaces() {\r\n this._checkPendingChanges();\r\n return this._arr.slice(0);\r\n }\r\n /**\r\n * The number of whitespaces.\r\n */\r\n getWhitespacesCount() {\r\n this._checkPendingChanges();\r\n return this._arr.length;\r\n }\r\n /**\r\n * Get the `id` for whitespace at index `index`.\r\n *\r\n * @param index The index of the whitespace.\r\n * @return `id` of whitespace at `index`.\r\n */\r\n getIdForWhitespaceIndex(index) {\r\n this._checkPendingChanges();\r\n index = index | 0;\r\n return this._arr[index].id;\r\n }\r\n /**\r\n * Get the `afterLineNumber` for whitespace at index `index`.\r\n *\r\n * @param index The index of the whitespace.\r\n * @return `afterLineNumber` of whitespace at `index`.\r\n */\r\n getAfterLineNumberForWhitespaceIndex(index) {\r\n this._checkPendingChanges();\r\n index = index | 0;\r\n return this._arr[index].afterLineNumber;\r\n }\r\n /**\r\n * Get the `height` for whitespace at index `index`.\r\n *\r\n * @param index The index of the whitespace.\r\n * @return `height` of whitespace at `index`.\r\n */\r\n getHeightForWhitespaceIndex(index) {\r\n this._checkPendingChanges();\r\n index = index | 0;\r\n return this._arr[index].height;\r\n }\r\n}\r\nLinesLayout.INSTANCE_COUNT = 0;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Scrollable } from '../../../base/common/scrollable.js';\r\nimport { LinesLayout } from './linesLayout.js';\r\nimport { Viewport } from '../viewModel/viewModel.js';\r\nimport { ContentSizeChangedEvent } from '../viewModel/viewModelEventDispatcher.js';\r\nconst SMOOTH_SCROLLING_TIME = 125;\r\nclass EditorScrollDimensions {\r\n constructor(width, contentWidth, height, contentHeight) {\r\n width = width | 0;\r\n contentWidth = contentWidth | 0;\r\n height = height | 0;\r\n contentHeight = contentHeight | 0;\r\n if (width < 0) {\r\n width = 0;\r\n }\r\n if (contentWidth < 0) {\r\n contentWidth = 0;\r\n }\r\n if (height < 0) {\r\n height = 0;\r\n }\r\n if (contentHeight < 0) {\r\n contentHeight = 0;\r\n }\r\n this.width = width;\r\n this.contentWidth = contentWidth;\r\n this.scrollWidth = Math.max(width, contentWidth);\r\n this.height = height;\r\n this.contentHeight = contentHeight;\r\n this.scrollHeight = Math.max(height, contentHeight);\r\n }\r\n equals(other) {\r\n return (this.width === other.width\r\n && this.contentWidth === other.contentWidth\r\n && this.height === other.height\r\n && this.contentHeight === other.contentHeight);\r\n }\r\n}\r\nclass EditorScrollable extends Disposable {\r\n constructor(smoothScrollDuration, scheduleAtNextAnimationFrame) {\r\n super();\r\n this._onDidContentSizeChange = this._register(new Emitter());\r\n this.onDidContentSizeChange = this._onDidContentSizeChange.event;\r\n this._dimensions = new EditorScrollDimensions(0, 0, 0, 0);\r\n this._scrollable = this._register(new Scrollable(smoothScrollDuration, scheduleAtNextAnimationFrame));\r\n this.onDidScroll = this._scrollable.onScroll;\r\n }\r\n getScrollable() {\r\n return this._scrollable;\r\n }\r\n setSmoothScrollDuration(smoothScrollDuration) {\r\n this._scrollable.setSmoothScrollDuration(smoothScrollDuration);\r\n }\r\n validateScrollPosition(scrollPosition) {\r\n return this._scrollable.validateScrollPosition(scrollPosition);\r\n }\r\n getScrollDimensions() {\r\n return this._dimensions;\r\n }\r\n setScrollDimensions(dimensions) {\r\n if (this._dimensions.equals(dimensions)) {\r\n return;\r\n }\r\n const oldDimensions = this._dimensions;\r\n this._dimensions = dimensions;\r\n this._scrollable.setScrollDimensions({\r\n width: dimensions.width,\r\n scrollWidth: dimensions.scrollWidth,\r\n height: dimensions.height,\r\n scrollHeight: dimensions.scrollHeight\r\n }, true);\r\n const contentWidthChanged = (oldDimensions.contentWidth !== dimensions.contentWidth);\r\n const contentHeightChanged = (oldDimensions.contentHeight !== dimensions.contentHeight);\r\n if (contentWidthChanged || contentHeightChanged) {\r\n this._onDidContentSizeChange.fire(new ContentSizeChangedEvent(oldDimensions.contentWidth, oldDimensions.contentHeight, dimensions.contentWidth, dimensions.contentHeight));\r\n }\r\n }\r\n getFutureScrollPosition() {\r\n return this._scrollable.getFutureScrollPosition();\r\n }\r\n getCurrentScrollPosition() {\r\n return this._scrollable.getCurrentScrollPosition();\r\n }\r\n setScrollPositionNow(update) {\r\n this._scrollable.setScrollPositionNow(update);\r\n }\r\n setScrollPositionSmooth(update) {\r\n this._scrollable.setScrollPositionSmooth(update);\r\n }\r\n}\r\nexport class ViewLayout extends Disposable {\r\n constructor(configuration, lineCount, scheduleAtNextAnimationFrame) {\r\n super();\r\n this._configuration = configuration;\r\n const options = this._configuration.options;\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const padding = options.get(66 /* padding */);\r\n this._linesLayout = new LinesLayout(lineCount, options.get(51 /* lineHeight */), padding.top, padding.bottom);\r\n this._scrollable = this._register(new EditorScrollable(0, scheduleAtNextAnimationFrame));\r\n this._configureSmoothScrollDuration();\r\n this._scrollable.setScrollDimensions(new EditorScrollDimensions(layoutInfo.contentWidth, 0, layoutInfo.height, 0));\r\n this.onDidScroll = this._scrollable.onDidScroll;\r\n this.onDidContentSizeChange = this._scrollable.onDidContentSizeChange;\r\n this._updateHeight();\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n getScrollable() {\r\n return this._scrollable.getScrollable();\r\n }\r\n onHeightMaybeChanged() {\r\n this._updateHeight();\r\n }\r\n _configureSmoothScrollDuration() {\r\n this._scrollable.setSmoothScrollDuration(this._configuration.options.get(94 /* smoothScrolling */) ? SMOOTH_SCROLLING_TIME : 0);\r\n }\r\n // ---- begin view event handlers\r\n onConfigurationChanged(e) {\r\n const options = this._configuration.options;\r\n if (e.hasChanged(51 /* lineHeight */)) {\r\n this._linesLayout.setLineHeight(options.get(51 /* lineHeight */));\r\n }\r\n if (e.hasChanged(66 /* padding */)) {\r\n const padding = options.get(66 /* padding */);\r\n this._linesLayout.setPadding(padding.top, padding.bottom);\r\n }\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const width = layoutInfo.contentWidth;\r\n const height = layoutInfo.height;\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n const contentWidth = scrollDimensions.contentWidth;\r\n this._scrollable.setScrollDimensions(new EditorScrollDimensions(width, scrollDimensions.contentWidth, height, this._getContentHeight(width, height, contentWidth)));\r\n }\r\n else {\r\n this._updateHeight();\r\n }\r\n if (e.hasChanged(94 /* smoothScrolling */)) {\r\n this._configureSmoothScrollDuration();\r\n }\r\n }\r\n onFlushed(lineCount) {\r\n this._linesLayout.onFlushed(lineCount);\r\n }\r\n onLinesDeleted(fromLineNumber, toLineNumber) {\r\n this._linesLayout.onLinesDeleted(fromLineNumber, toLineNumber);\r\n }\r\n onLinesInserted(fromLineNumber, toLineNumber) {\r\n this._linesLayout.onLinesInserted(fromLineNumber, toLineNumber);\r\n }\r\n // ---- end view event handlers\r\n _getHorizontalScrollbarHeight(width, scrollWidth) {\r\n const options = this._configuration.options;\r\n const scrollbar = options.get(84 /* scrollbar */);\r\n if (scrollbar.horizontal === 2 /* Hidden */) {\r\n // horizontal scrollbar not visible\r\n return 0;\r\n }\r\n if (width >= scrollWidth) {\r\n // horizontal scrollbar not visible\r\n return 0;\r\n }\r\n return scrollbar.horizontalScrollbarSize;\r\n }\r\n _getContentHeight(width, height, contentWidth) {\r\n const options = this._configuration.options;\r\n let result = this._linesLayout.getLinesTotalHeight();\r\n if (options.get(86 /* scrollBeyondLastLine */)) {\r\n result += height - options.get(51 /* lineHeight */);\r\n }\r\n else {\r\n result += this._getHorizontalScrollbarHeight(width, contentWidth);\r\n }\r\n return result;\r\n }\r\n _updateHeight() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n const width = scrollDimensions.width;\r\n const height = scrollDimensions.height;\r\n const contentWidth = scrollDimensions.contentWidth;\r\n this._scrollable.setScrollDimensions(new EditorScrollDimensions(width, scrollDimensions.contentWidth, height, this._getContentHeight(width, height, contentWidth)));\r\n }\r\n // ---- Layouting logic\r\n getCurrentViewport() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n const currentScrollPosition = this._scrollable.getCurrentScrollPosition();\r\n return new Viewport(currentScrollPosition.scrollTop, currentScrollPosition.scrollLeft, scrollDimensions.width, scrollDimensions.height);\r\n }\r\n getFutureViewport() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n const currentScrollPosition = this._scrollable.getFutureScrollPosition();\r\n return new Viewport(currentScrollPosition.scrollTop, currentScrollPosition.scrollLeft, scrollDimensions.width, scrollDimensions.height);\r\n }\r\n _computeContentWidth(maxLineWidth) {\r\n const options = this._configuration.options;\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n if (wrappingInfo.isViewportWrapping) {\r\n const layoutInfo = options.get(117 /* layoutInfo */);\r\n const minimap = options.get(56 /* minimap */);\r\n if (maxLineWidth > layoutInfo.contentWidth + fontInfo.typicalHalfwidthCharacterWidth) {\r\n // This is a case where viewport wrapping is on, but the line extends above the viewport\r\n if (minimap.enabled && minimap.side === 'right') {\r\n // We need to accomodate the scrollbar width\r\n return maxLineWidth + layoutInfo.verticalScrollbarWidth;\r\n }\r\n }\r\n return maxLineWidth;\r\n }\r\n else {\r\n const extraHorizontalSpace = options.get(85 /* scrollBeyondLastColumn */) * fontInfo.typicalHalfwidthCharacterWidth;\r\n const whitespaceMinWidth = this._linesLayout.getWhitespaceMinWidth();\r\n return Math.max(maxLineWidth + extraHorizontalSpace, whitespaceMinWidth);\r\n }\r\n }\r\n setMaxLineWidth(maxLineWidth) {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n // const newScrollWidth = ;\r\n this._scrollable.setScrollDimensions(new EditorScrollDimensions(scrollDimensions.width, this._computeContentWidth(maxLineWidth), scrollDimensions.height, scrollDimensions.contentHeight));\r\n // The height might depend on the fact that there is a horizontal scrollbar or not\r\n this._updateHeight();\r\n }\r\n // ---- view state\r\n saveState() {\r\n const currentScrollPosition = this._scrollable.getFutureScrollPosition();\r\n let scrollTop = currentScrollPosition.scrollTop;\r\n let firstLineNumberInViewport = this._linesLayout.getLineNumberAtOrAfterVerticalOffset(scrollTop);\r\n let whitespaceAboveFirstLine = this._linesLayout.getWhitespaceAccumulatedHeightBeforeLineNumber(firstLineNumberInViewport);\r\n return {\r\n scrollTop: scrollTop,\r\n scrollTopWithoutViewZones: scrollTop - whitespaceAboveFirstLine,\r\n scrollLeft: currentScrollPosition.scrollLeft\r\n };\r\n }\r\n // ---- IVerticalLayoutProvider\r\n changeWhitespace(callback) {\r\n const hadAChange = this._linesLayout.changeWhitespace(callback);\r\n if (hadAChange) {\r\n this.onHeightMaybeChanged();\r\n }\r\n return hadAChange;\r\n }\r\n getVerticalOffsetForLineNumber(lineNumber) {\r\n return this._linesLayout.getVerticalOffsetForLineNumber(lineNumber);\r\n }\r\n isAfterLines(verticalOffset) {\r\n return this._linesLayout.isAfterLines(verticalOffset);\r\n }\r\n getLineNumberAtVerticalOffset(verticalOffset) {\r\n return this._linesLayout.getLineNumberAtOrAfterVerticalOffset(verticalOffset);\r\n }\r\n getWhitespaceAtVerticalOffset(verticalOffset) {\r\n return this._linesLayout.getWhitespaceAtVerticalOffset(verticalOffset);\r\n }\r\n getLinesViewportData() {\r\n const visibleBox = this.getCurrentViewport();\r\n return this._linesLayout.getLinesViewportData(visibleBox.top, visibleBox.top + visibleBox.height);\r\n }\r\n getLinesViewportDataAtScrollTop(scrollTop) {\r\n // do some minimal validations on scrollTop\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n if (scrollTop + scrollDimensions.height > scrollDimensions.scrollHeight) {\r\n scrollTop = scrollDimensions.scrollHeight - scrollDimensions.height;\r\n }\r\n if (scrollTop < 0) {\r\n scrollTop = 0;\r\n }\r\n return this._linesLayout.getLinesViewportData(scrollTop, scrollTop + scrollDimensions.height);\r\n }\r\n getWhitespaceViewportData() {\r\n const visibleBox = this.getCurrentViewport();\r\n return this._linesLayout.getWhitespaceViewportData(visibleBox.top, visibleBox.top + visibleBox.height);\r\n }\r\n getWhitespaces() {\r\n return this._linesLayout.getWhitespaces();\r\n }\r\n // ---- IScrollingProvider\r\n getContentWidth() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n return scrollDimensions.contentWidth;\r\n }\r\n getScrollWidth() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n return scrollDimensions.scrollWidth;\r\n }\r\n getContentHeight() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n return scrollDimensions.contentHeight;\r\n }\r\n getScrollHeight() {\r\n const scrollDimensions = this._scrollable.getScrollDimensions();\r\n return scrollDimensions.scrollHeight;\r\n }\r\n getCurrentScrollLeft() {\r\n const currentScrollPosition = this._scrollable.getCurrentScrollPosition();\r\n return currentScrollPosition.scrollLeft;\r\n }\r\n getCurrentScrollTop() {\r\n const currentScrollPosition = this._scrollable.getCurrentScrollPosition();\r\n return currentScrollPosition.scrollTop;\r\n }\r\n validateScrollPosition(scrollPosition) {\r\n return this._scrollable.validateScrollPosition(scrollPosition);\r\n }\r\n setScrollPosition(position, type) {\r\n if (type === 1 /* Immediate */) {\r\n this._scrollable.setScrollPositionNow(position);\r\n }\r\n else {\r\n this._scrollable.setScrollPositionSmooth(position);\r\n }\r\n }\r\n deltaScrollNow(deltaScrollLeft, deltaScrollTop) {\r\n const currentScrollPosition = this._scrollable.getCurrentScrollPosition();\r\n this._scrollable.setScrollPositionNow({\r\n scrollLeft: currentScrollPosition.scrollLeft + deltaScrollLeft,\r\n scrollTop: currentScrollPosition.scrollTop + deltaScrollTop\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { createStringBuilder } from '../core/stringBuilder.js';\r\nimport { LineDecoration, LineDecorationsNormalizer } from './lineDecorations.js';\r\nclass LinePart {\r\n constructor(endIndex, type, metadata) {\r\n this.endIndex = endIndex;\r\n this.type = type;\r\n this.metadata = metadata;\r\n }\r\n isWhitespace() {\r\n return (this.metadata & 1 /* IS_WHITESPACE_MASK */ ? true : false);\r\n }\r\n}\r\nexport class LineRange {\r\n constructor(startIndex, endIndex) {\r\n this.startOffset = startIndex;\r\n this.endOffset = endIndex;\r\n }\r\n equals(otherLineRange) {\r\n return this.startOffset === otherLineRange.startOffset\r\n && this.endOffset === otherLineRange.endOffset;\r\n }\r\n}\r\nexport class RenderLineInput {\r\n constructor(useMonospaceOptimizations, canUseHalfwidthRightwardsArrow, lineContent, continuesWithWrappedLine, isBasicASCII, containsRTL, fauxIndentLength, lineTokens, lineDecorations, tabSize, startVisibleColumn, spaceWidth, middotWidth, wsmiddotWidth, stopRenderingLineAfter, renderWhitespace, renderControlCharacters, fontLigatures, selectionsOnLine) {\r\n this.useMonospaceOptimizations = useMonospaceOptimizations;\r\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\r\n this.lineContent = lineContent;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.isBasicASCII = isBasicASCII;\r\n this.containsRTL = containsRTL;\r\n this.fauxIndentLength = fauxIndentLength;\r\n this.lineTokens = lineTokens;\r\n this.lineDecorations = lineDecorations;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.spaceWidth = spaceWidth;\r\n this.stopRenderingLineAfter = stopRenderingLineAfter;\r\n this.renderWhitespace = (renderWhitespace === 'all'\r\n ? 4 /* All */\r\n : renderWhitespace === 'boundary'\r\n ? 1 /* Boundary */\r\n : renderWhitespace === 'selection'\r\n ? 2 /* Selection */\r\n : renderWhitespace === 'trailing'\r\n ? 3 /* Trailing */\r\n : 0 /* None */);\r\n this.renderControlCharacters = renderControlCharacters;\r\n this.fontLigatures = fontLigatures;\r\n this.selectionsOnLine = selectionsOnLine && selectionsOnLine.sort((a, b) => a.startOffset < b.startOffset ? -1 : 1);\r\n const wsmiddotDiff = Math.abs(wsmiddotWidth - spaceWidth);\r\n const middotDiff = Math.abs(middotWidth - spaceWidth);\r\n if (wsmiddotDiff < middotDiff) {\r\n this.renderSpaceWidth = wsmiddotWidth;\r\n this.renderSpaceCharCode = 0x2E31; // U+2E31 - WORD SEPARATOR MIDDLE DOT\r\n }\r\n else {\r\n this.renderSpaceWidth = middotWidth;\r\n this.renderSpaceCharCode = 0xB7; // U+00B7 - MIDDLE DOT\r\n }\r\n }\r\n sameSelection(otherSelections) {\r\n if (this.selectionsOnLine === null) {\r\n return otherSelections === null;\r\n }\r\n if (otherSelections === null) {\r\n return false;\r\n }\r\n if (otherSelections.length !== this.selectionsOnLine.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < this.selectionsOnLine.length; i++) {\r\n if (!this.selectionsOnLine[i].equals(otherSelections[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n equals(other) {\r\n return (this.useMonospaceOptimizations === other.useMonospaceOptimizations\r\n && this.canUseHalfwidthRightwardsArrow === other.canUseHalfwidthRightwardsArrow\r\n && this.lineContent === other.lineContent\r\n && this.continuesWithWrappedLine === other.continuesWithWrappedLine\r\n && this.isBasicASCII === other.isBasicASCII\r\n && this.containsRTL === other.containsRTL\r\n && this.fauxIndentLength === other.fauxIndentLength\r\n && this.tabSize === other.tabSize\r\n && this.startVisibleColumn === other.startVisibleColumn\r\n && this.spaceWidth === other.spaceWidth\r\n && this.renderSpaceWidth === other.renderSpaceWidth\r\n && this.renderSpaceCharCode === other.renderSpaceCharCode\r\n && this.stopRenderingLineAfter === other.stopRenderingLineAfter\r\n && this.renderWhitespace === other.renderWhitespace\r\n && this.renderControlCharacters === other.renderControlCharacters\r\n && this.fontLigatures === other.fontLigatures\r\n && LineDecoration.equalsArr(this.lineDecorations, other.lineDecorations)\r\n && this.lineTokens.equals(other.lineTokens)\r\n && this.sameSelection(other.selectionsOnLine));\r\n }\r\n}\r\n/**\r\n * Provides a both direction mapping between a line's character and its rendered position.\r\n */\r\nexport class CharacterMapping {\r\n constructor(length, partCount) {\r\n this.length = length;\r\n this._data = new Uint32Array(this.length);\r\n this._absoluteOffsets = new Uint32Array(this.length);\r\n }\r\n static getPartIndex(partData) {\r\n return (partData & 4294901760 /* PART_INDEX_MASK */) >>> 16 /* PART_INDEX_OFFSET */;\r\n }\r\n static getCharIndex(partData) {\r\n return (partData & 65535 /* CHAR_INDEX_MASK */) >>> 0 /* CHAR_INDEX_OFFSET */;\r\n }\r\n setPartData(charOffset, partIndex, charIndex, partAbsoluteOffset) {\r\n let partData = ((partIndex << 16 /* PART_INDEX_OFFSET */)\r\n | (charIndex << 0 /* CHAR_INDEX_OFFSET */)) >>> 0;\r\n this._data[charOffset] = partData;\r\n this._absoluteOffsets[charOffset] = partAbsoluteOffset + charIndex;\r\n }\r\n getAbsoluteOffsets() {\r\n return this._absoluteOffsets;\r\n }\r\n charOffsetToPartData(charOffset) {\r\n if (this.length === 0) {\r\n return 0;\r\n }\r\n if (charOffset < 0) {\r\n return this._data[0];\r\n }\r\n if (charOffset >= this.length) {\r\n return this._data[this.length - 1];\r\n }\r\n return this._data[charOffset];\r\n }\r\n partDataToCharOffset(partIndex, partLength, charIndex) {\r\n if (this.length === 0) {\r\n return 0;\r\n }\r\n let searchEntry = ((partIndex << 16 /* PART_INDEX_OFFSET */)\r\n | (charIndex << 0 /* CHAR_INDEX_OFFSET */)) >>> 0;\r\n let min = 0;\r\n let max = this.length - 1;\r\n while (min + 1 < max) {\r\n let mid = ((min + max) >>> 1);\r\n let midEntry = this._data[mid];\r\n if (midEntry === searchEntry) {\r\n return mid;\r\n }\r\n else if (midEntry > searchEntry) {\r\n max = mid;\r\n }\r\n else {\r\n min = mid;\r\n }\r\n }\r\n if (min === max) {\r\n return min;\r\n }\r\n let minEntry = this._data[min];\r\n let maxEntry = this._data[max];\r\n if (minEntry === searchEntry) {\r\n return min;\r\n }\r\n if (maxEntry === searchEntry) {\r\n return max;\r\n }\r\n let minPartIndex = CharacterMapping.getPartIndex(minEntry);\r\n let minCharIndex = CharacterMapping.getCharIndex(minEntry);\r\n let maxPartIndex = CharacterMapping.getPartIndex(maxEntry);\r\n let maxCharIndex;\r\n if (minPartIndex !== maxPartIndex) {\r\n // sitting between parts\r\n maxCharIndex = partLength;\r\n }\r\n else {\r\n maxCharIndex = CharacterMapping.getCharIndex(maxEntry);\r\n }\r\n let minEntryDistance = charIndex - minCharIndex;\r\n let maxEntryDistance = maxCharIndex - charIndex;\r\n if (minEntryDistance <= maxEntryDistance) {\r\n return min;\r\n }\r\n return max;\r\n }\r\n}\r\nexport class RenderLineOutput {\r\n constructor(characterMapping, containsRTL, containsForeignElements) {\r\n this.characterMapping = characterMapping;\r\n this.containsRTL = containsRTL;\r\n this.containsForeignElements = containsForeignElements;\r\n }\r\n}\r\nexport function renderViewLine(input, sb) {\r\n if (input.lineContent.length === 0) {\r\n let containsForeignElements = 0 /* None */;\r\n let content = '<span><span></span></span>';\r\n if (input.lineDecorations.length > 0) {\r\n // This line is empty, but it contains inline decorations\r\n const beforeClassNames = [];\r\n const afterClassNames = [];\r\n for (let i = 0, len = input.lineDecorations.length; i < len; i++) {\r\n const lineDecoration = input.lineDecorations[i];\r\n if (lineDecoration.type === 1 /* Before */) {\r\n beforeClassNames.push(input.lineDecorations[i].className);\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n if (lineDecoration.type === 2 /* After */) {\r\n afterClassNames.push(input.lineDecorations[i].className);\r\n containsForeignElements |= 2 /* After */;\r\n }\r\n }\r\n if (containsForeignElements !== 0 /* None */) {\r\n const beforeSpan = (beforeClassNames.length > 0 ? `<span class=\"${beforeClassNames.join(' ')}\"></span>` : ``);\r\n const afterSpan = (afterClassNames.length > 0 ? `<span class=\"${afterClassNames.join(' ')}\"></span>` : ``);\r\n content = `<span>${beforeSpan}${afterSpan}</span>`;\r\n }\r\n }\r\n sb.appendASCIIString(content);\r\n return new RenderLineOutput(new CharacterMapping(0, 0), false, containsForeignElements);\r\n }\r\n return _renderLine(resolveRenderLineInput(input), sb);\r\n}\r\nexport class RenderLineOutput2 {\r\n constructor(characterMapping, html, containsRTL, containsForeignElements) {\r\n this.characterMapping = characterMapping;\r\n this.html = html;\r\n this.containsRTL = containsRTL;\r\n this.containsForeignElements = containsForeignElements;\r\n }\r\n}\r\nexport function renderViewLine2(input) {\r\n let sb = createStringBuilder(10000);\r\n let out = renderViewLine(input, sb);\r\n return new RenderLineOutput2(out.characterMapping, sb.build(), out.containsRTL, out.containsForeignElements);\r\n}\r\nclass ResolvedRenderLineInput {\r\n constructor(fontIsMonospace, canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, parts, containsForeignElements, fauxIndentLength, tabSize, startVisibleColumn, containsRTL, spaceWidth, renderSpaceCharCode, renderWhitespace, renderControlCharacters) {\r\n this.fontIsMonospace = fontIsMonospace;\r\n this.canUseHalfwidthRightwardsArrow = canUseHalfwidthRightwardsArrow;\r\n this.lineContent = lineContent;\r\n this.len = len;\r\n this.isOverflowing = isOverflowing;\r\n this.parts = parts;\r\n this.containsForeignElements = containsForeignElements;\r\n this.fauxIndentLength = fauxIndentLength;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.containsRTL = containsRTL;\r\n this.spaceWidth = spaceWidth;\r\n this.renderSpaceCharCode = renderSpaceCharCode;\r\n this.renderWhitespace = renderWhitespace;\r\n this.renderControlCharacters = renderControlCharacters;\r\n //\r\n }\r\n}\r\nfunction resolveRenderLineInput(input) {\r\n const lineContent = input.lineContent;\r\n let isOverflowing;\r\n let len;\r\n if (input.stopRenderingLineAfter !== -1 && input.stopRenderingLineAfter < lineContent.length) {\r\n isOverflowing = true;\r\n len = input.stopRenderingLineAfter;\r\n }\r\n else {\r\n isOverflowing = false;\r\n len = lineContent.length;\r\n }\r\n let tokens = transformAndRemoveOverflowing(input.lineTokens, input.fauxIndentLength, len);\r\n if (input.renderWhitespace === 4 /* All */ ||\r\n input.renderWhitespace === 1 /* Boundary */ ||\r\n (input.renderWhitespace === 2 /* Selection */ && !!input.selectionsOnLine) ||\r\n input.renderWhitespace === 3 /* Trailing */) {\r\n tokens = _applyRenderWhitespace(input, lineContent, len, tokens);\r\n }\r\n let containsForeignElements = 0 /* None */;\r\n if (input.lineDecorations.length > 0) {\r\n for (let i = 0, len = input.lineDecorations.length; i < len; i++) {\r\n const lineDecoration = input.lineDecorations[i];\r\n if (lineDecoration.type === 3 /* RegularAffectingLetterSpacing */) {\r\n // Pretend there are foreign elements... although not 100% accurate.\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n else if (lineDecoration.type === 1 /* Before */) {\r\n containsForeignElements |= 1 /* Before */;\r\n }\r\n else if (lineDecoration.type === 2 /* After */) {\r\n containsForeignElements |= 2 /* After */;\r\n }\r\n }\r\n tokens = _applyInlineDecorations(lineContent, len, tokens, input.lineDecorations);\r\n }\r\n if (!input.containsRTL) {\r\n // We can never split RTL text, as it ruins the rendering\r\n tokens = splitLargeTokens(lineContent, tokens, !input.isBasicASCII || input.fontLigatures);\r\n }\r\n return new ResolvedRenderLineInput(input.useMonospaceOptimizations, input.canUseHalfwidthRightwardsArrow, lineContent, len, isOverflowing, tokens, containsForeignElements, input.fauxIndentLength, input.tabSize, input.startVisibleColumn, input.containsRTL, input.spaceWidth, input.renderSpaceCharCode, input.renderWhitespace, input.renderControlCharacters);\r\n}\r\n/**\r\n * In the rendering phase, characters are always looped until token.endIndex.\r\n * Ensure that all tokens end before `len` and the last one ends precisely at `len`.\r\n */\r\nfunction transformAndRemoveOverflowing(tokens, fauxIndentLength, len) {\r\n let result = [], resultLen = 0;\r\n // The faux indent part of the line should have no token type\r\n if (fauxIndentLength > 0) {\r\n result[resultLen++] = new LinePart(fauxIndentLength, '', 0);\r\n }\r\n for (let tokenIndex = 0, tokensLen = tokens.getCount(); tokenIndex < tokensLen; tokenIndex++) {\r\n const endIndex = tokens.getEndOffset(tokenIndex);\r\n if (endIndex <= fauxIndentLength) {\r\n // The faux indent part of the line should have no token type\r\n continue;\r\n }\r\n const type = tokens.getClassName(tokenIndex);\r\n if (endIndex >= len) {\r\n result[resultLen++] = new LinePart(len, type, 0);\r\n break;\r\n }\r\n result[resultLen++] = new LinePart(endIndex, type, 0);\r\n }\r\n return result;\r\n}\r\n/**\r\n * See https://github.com/Microsoft/vscode/issues/6885.\r\n * It appears that having very large spans causes very slow reading of character positions.\r\n * So here we try to avoid that.\r\n */\r\nfunction splitLargeTokens(lineContent, tokens, onlyAtSpaces) {\r\n let lastTokenEndIndex = 0;\r\n let result = [], resultLen = 0;\r\n if (onlyAtSpaces) {\r\n // Split only at spaces => we need to walk each character\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const token = tokens[i];\r\n const tokenEndIndex = token.endIndex;\r\n if (lastTokenEndIndex + 50 /* LongToken */ < tokenEndIndex) {\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n let lastSpaceOffset = -1;\r\n let currTokenStart = lastTokenEndIndex;\r\n for (let j = lastTokenEndIndex; j < tokenEndIndex; j++) {\r\n if (lineContent.charCodeAt(j) === 32 /* Space */) {\r\n lastSpaceOffset = j;\r\n }\r\n if (lastSpaceOffset !== -1 && j - currTokenStart >= 50 /* LongToken */) {\r\n // Split at `lastSpaceOffset` + 1\r\n result[resultLen++] = new LinePart(lastSpaceOffset + 1, tokenType, tokenMetadata);\r\n currTokenStart = lastSpaceOffset + 1;\r\n lastSpaceOffset = -1;\r\n }\r\n }\r\n if (currTokenStart !== tokenEndIndex) {\r\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = token;\r\n }\r\n lastTokenEndIndex = tokenEndIndex;\r\n }\r\n }\r\n else {\r\n // Split anywhere => we don't need to walk each character\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const token = tokens[i];\r\n const tokenEndIndex = token.endIndex;\r\n let diff = (tokenEndIndex - lastTokenEndIndex);\r\n if (diff > 50 /* LongToken */) {\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n const piecesCount = Math.ceil(diff / 50 /* LongToken */);\r\n for (let j = 1; j < piecesCount; j++) {\r\n let pieceEndIndex = lastTokenEndIndex + (j * 50 /* LongToken */);\r\n result[resultLen++] = new LinePart(pieceEndIndex, tokenType, tokenMetadata);\r\n }\r\n result[resultLen++] = new LinePart(tokenEndIndex, tokenType, tokenMetadata);\r\n }\r\n else {\r\n result[resultLen++] = token;\r\n }\r\n lastTokenEndIndex = tokenEndIndex;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Whitespace is rendered by \"replacing\" tokens with a special-purpose `mtkw` type that is later recognized in the rendering phase.\r\n * Moreover, a token is created for every visual indent because on some fonts the glyphs used for rendering whitespace (→ or ·) do not have the same width as  .\r\n * The rendering phase will generate `style=\"width:...\"` for these tokens.\r\n */\r\nfunction _applyRenderWhitespace(input, lineContent, len, tokens) {\r\n const continuesWithWrappedLine = input.continuesWithWrappedLine;\r\n const fauxIndentLength = input.fauxIndentLength;\r\n const tabSize = input.tabSize;\r\n const startVisibleColumn = input.startVisibleColumn;\r\n const useMonospaceOptimizations = input.useMonospaceOptimizations;\r\n const selections = input.selectionsOnLine;\r\n const onlyBoundary = (input.renderWhitespace === 1 /* Boundary */);\r\n const onlyTrailing = (input.renderWhitespace === 3 /* Trailing */);\r\n const generateLinePartForEachWhitespace = (input.renderSpaceWidth !== input.spaceWidth);\r\n let result = [], resultLen = 0;\r\n let tokenIndex = 0;\r\n let tokenType = tokens[tokenIndex].type;\r\n let tokenEndIndex = tokens[tokenIndex].endIndex;\r\n const tokensLength = tokens.length;\r\n let lineIsEmptyOrWhitespace = false;\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\r\n let lastNonWhitespaceIndex;\r\n if (firstNonWhitespaceIndex === -1) {\r\n lineIsEmptyOrWhitespace = true;\r\n firstNonWhitespaceIndex = len;\r\n lastNonWhitespaceIndex = len;\r\n }\r\n else {\r\n lastNonWhitespaceIndex = strings.lastNonWhitespaceIndex(lineContent);\r\n }\r\n let wasInWhitespace = false;\r\n let currentSelectionIndex = 0;\r\n let currentSelection = selections && selections[currentSelectionIndex];\r\n let tmpIndent = startVisibleColumn % tabSize;\r\n for (let charIndex = fauxIndentLength; charIndex < len; charIndex++) {\r\n const chCode = lineContent.charCodeAt(charIndex);\r\n if (currentSelection && charIndex >= currentSelection.endOffset) {\r\n currentSelectionIndex++;\r\n currentSelection = selections && selections[currentSelectionIndex];\r\n }\r\n let isInWhitespace;\r\n if (charIndex < firstNonWhitespaceIndex || charIndex > lastNonWhitespaceIndex) {\r\n // in leading or trailing whitespace\r\n isInWhitespace = true;\r\n }\r\n else if (chCode === 9 /* Tab */) {\r\n // a tab character is rendered both in all and boundary cases\r\n isInWhitespace = true;\r\n }\r\n else if (chCode === 32 /* Space */) {\r\n // hit a space character\r\n if (onlyBoundary) {\r\n // rendering only boundary whitespace\r\n if (wasInWhitespace) {\r\n isInWhitespace = true;\r\n }\r\n else {\r\n const nextChCode = (charIndex + 1 < len ? lineContent.charCodeAt(charIndex + 1) : 0 /* Null */);\r\n isInWhitespace = (nextChCode === 32 /* Space */ || nextChCode === 9 /* Tab */);\r\n }\r\n }\r\n else {\r\n isInWhitespace = true;\r\n }\r\n }\r\n else {\r\n isInWhitespace = false;\r\n }\r\n // If rendering whitespace on selection, check that the charIndex falls within a selection\r\n if (isInWhitespace && selections) {\r\n isInWhitespace = !!currentSelection && currentSelection.startOffset <= charIndex && currentSelection.endOffset > charIndex;\r\n }\r\n // If rendering only trailing whitespace, check that the charIndex points to trailing whitespace.\r\n if (isInWhitespace && onlyTrailing) {\r\n isInWhitespace = lineIsEmptyOrWhitespace || charIndex > lastNonWhitespaceIndex;\r\n }\r\n if (wasInWhitespace) {\r\n // was in whitespace token\r\n if (!isInWhitespace || (!useMonospaceOptimizations && tmpIndent >= tabSize)) {\r\n // leaving whitespace token or entering a new indent\r\n if (generateLinePartForEachWhitespace) {\r\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\r\n for (let i = lastEndIndex + 1; i <= charIndex; i++) {\r\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(charIndex, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n tmpIndent = tmpIndent % tabSize;\r\n }\r\n }\r\n else {\r\n // was in regular token\r\n if (charIndex === tokenEndIndex || (isInWhitespace && charIndex > fauxIndentLength)) {\r\n result[resultLen++] = new LinePart(charIndex, tokenType, 0);\r\n tmpIndent = tmpIndent % tabSize;\r\n }\r\n }\r\n if (chCode === 9 /* Tab */) {\r\n tmpIndent = tabSize;\r\n }\r\n else if (strings.isFullWidthCharacter(chCode)) {\r\n tmpIndent += 2;\r\n }\r\n else {\r\n tmpIndent++;\r\n }\r\n wasInWhitespace = isInWhitespace;\r\n while (charIndex === tokenEndIndex) {\r\n tokenIndex++;\r\n if (tokenIndex < tokensLength) {\r\n tokenType = tokens[tokenIndex].type;\r\n tokenEndIndex = tokens[tokenIndex].endIndex;\r\n }\r\n }\r\n }\r\n let generateWhitespace = false;\r\n if (wasInWhitespace) {\r\n // was in whitespace token\r\n if (continuesWithWrappedLine && onlyBoundary) {\r\n let lastCharCode = (len > 0 ? lineContent.charCodeAt(len - 1) : 0 /* Null */);\r\n let prevCharCode = (len > 1 ? lineContent.charCodeAt(len - 2) : 0 /* Null */);\r\n let isSingleTrailingSpace = (lastCharCode === 32 /* Space */ && (prevCharCode !== 32 /* Space */ && prevCharCode !== 9 /* Tab */));\r\n if (!isSingleTrailingSpace) {\r\n generateWhitespace = true;\r\n }\r\n }\r\n else {\r\n generateWhitespace = true;\r\n }\r\n }\r\n if (generateWhitespace) {\r\n if (generateLinePartForEachWhitespace) {\r\n const lastEndIndex = (resultLen > 0 ? result[resultLen - 1].endIndex : fauxIndentLength);\r\n for (let i = lastEndIndex + 1; i <= len; i++) {\r\n result[resultLen++] = new LinePart(i, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(len, 'mtkw', 1 /* IS_WHITESPACE */);\r\n }\r\n }\r\n else {\r\n result[resultLen++] = new LinePart(len, tokenType, 0);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Inline decorations are \"merged\" on top of tokens.\r\n * Special care must be taken when multiple inline decorations are at play and they overlap.\r\n */\r\nfunction _applyInlineDecorations(lineContent, len, tokens, _lineDecorations) {\r\n _lineDecorations.sort(LineDecoration.compare);\r\n const lineDecorations = LineDecorationsNormalizer.normalize(lineContent, _lineDecorations);\r\n const lineDecorationsLen = lineDecorations.length;\r\n let lineDecorationIndex = 0;\r\n let result = [], resultLen = 0, lastResultEndIndex = 0;\r\n for (let tokenIndex = 0, len = tokens.length; tokenIndex < len; tokenIndex++) {\r\n const token = tokens[tokenIndex];\r\n const tokenEndIndex = token.endIndex;\r\n const tokenType = token.type;\r\n const tokenMetadata = token.metadata;\r\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset < tokenEndIndex) {\r\n const lineDecoration = lineDecorations[lineDecorationIndex];\r\n if (lineDecoration.startOffset > lastResultEndIndex) {\r\n lastResultEndIndex = lineDecoration.startOffset;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata);\r\n }\r\n if (lineDecoration.endOffset + 1 <= tokenEndIndex) {\r\n // This line decoration ends before this token ends\r\n lastResultEndIndex = lineDecoration.endOffset + 1;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata);\r\n lineDecorationIndex++;\r\n }\r\n else {\r\n // This line decoration continues on to the next token\r\n lastResultEndIndex = tokenEndIndex;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType + ' ' + lineDecoration.className, tokenMetadata | lineDecoration.metadata);\r\n break;\r\n }\r\n }\r\n if (tokenEndIndex > lastResultEndIndex) {\r\n lastResultEndIndex = tokenEndIndex;\r\n result[resultLen++] = new LinePart(lastResultEndIndex, tokenType, tokenMetadata);\r\n }\r\n }\r\n const lastTokenEndIndex = tokens[tokens.length - 1].endIndex;\r\n if (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\r\n let classNames = [];\r\n let metadata = 0;\r\n while (lineDecorationIndex < lineDecorationsLen && lineDecorations[lineDecorationIndex].startOffset === lastTokenEndIndex) {\r\n classNames.push(lineDecorations[lineDecorationIndex].className);\r\n metadata |= lineDecorations[lineDecorationIndex].metadata;\r\n lineDecorationIndex++;\r\n }\r\n result[resultLen++] = new LinePart(lastResultEndIndex, classNames.join(' '), metadata);\r\n }\r\n return result;\r\n}\r\n/**\r\n * This function is on purpose not split up into multiple functions to allow runtime type inference (i.e. performance reasons).\r\n * Notice how all the needed data is fully resolved and passed in (i.e. no other calls).\r\n */\r\nfunction _renderLine(input, sb) {\r\n const fontIsMonospace = input.fontIsMonospace;\r\n const canUseHalfwidthRightwardsArrow = input.canUseHalfwidthRightwardsArrow;\r\n const containsForeignElements = input.containsForeignElements;\r\n const lineContent = input.lineContent;\r\n const len = input.len;\r\n const isOverflowing = input.isOverflowing;\r\n const parts = input.parts;\r\n const fauxIndentLength = input.fauxIndentLength;\r\n const tabSize = input.tabSize;\r\n const startVisibleColumn = input.startVisibleColumn;\r\n const containsRTL = input.containsRTL;\r\n const spaceWidth = input.spaceWidth;\r\n const renderSpaceCharCode = input.renderSpaceCharCode;\r\n const renderWhitespace = input.renderWhitespace;\r\n const renderControlCharacters = input.renderControlCharacters;\r\n const characterMapping = new CharacterMapping(len + 1, parts.length);\r\n let charIndex = 0;\r\n let visibleColumn = startVisibleColumn;\r\n let charOffsetInPart = 0;\r\n let partDisplacement = 0;\r\n let prevPartContentCnt = 0;\r\n let partAbsoluteOffset = 0;\r\n if (containsRTL) {\r\n sb.appendASCIIString('<span dir=\"ltr\">');\r\n }\r\n else {\r\n sb.appendASCIIString('<span>');\r\n }\r\n for (let partIndex = 0, tokensLen = parts.length; partIndex < tokensLen; partIndex++) {\r\n partAbsoluteOffset += prevPartContentCnt;\r\n const part = parts[partIndex];\r\n const partEndIndex = part.endIndex;\r\n const partType = part.type;\r\n const partRendersWhitespace = (renderWhitespace !== 0 /* None */ && part.isWhitespace());\r\n const partRendersWhitespaceWithWidth = partRendersWhitespace && !fontIsMonospace && (partType === 'mtkw' /*only whitespace*/ || !containsForeignElements);\r\n const partIsEmptyAndHasPseudoAfter = (charIndex === partEndIndex && part.metadata === 4 /* PSEUDO_AFTER */);\r\n charOffsetInPart = 0;\r\n sb.appendASCIIString('<span class=\"');\r\n sb.appendASCIIString(partRendersWhitespaceWithWidth ? 'mtkz' : partType);\r\n sb.appendASCII(34 /* DoubleQuote */);\r\n if (partRendersWhitespace) {\r\n let partContentCnt = 0;\r\n {\r\n let _charIndex = charIndex;\r\n let _visibleColumn = visibleColumn;\r\n for (; _charIndex < partEndIndex; _charIndex++) {\r\n const charCode = lineContent.charCodeAt(_charIndex);\r\n const charWidth = (charCode === 9 /* Tab */ ? (tabSize - (_visibleColumn % tabSize)) : 1) | 0;\r\n partContentCnt += charWidth;\r\n if (_charIndex >= fauxIndentLength) {\r\n _visibleColumn += charWidth;\r\n }\r\n }\r\n }\r\n if (partRendersWhitespaceWithWidth) {\r\n sb.appendASCIIString(' style=\"width:');\r\n sb.appendASCIIString(String(spaceWidth * partContentCnt));\r\n sb.appendASCIIString('px\"');\r\n }\r\n sb.appendASCII(62 /* GreaterThan */);\r\n for (; charIndex < partEndIndex; charIndex++) {\r\n characterMapping.setPartData(charIndex, partIndex - partDisplacement, charOffsetInPart, partAbsoluteOffset);\r\n partDisplacement = 0;\r\n const charCode = lineContent.charCodeAt(charIndex);\r\n let charWidth;\r\n if (charCode === 9 /* Tab */) {\r\n charWidth = (tabSize - (visibleColumn % tabSize)) | 0;\r\n if (!canUseHalfwidthRightwardsArrow || charWidth > 1) {\r\n sb.write1(0x2192); // RIGHTWARDS ARROW\r\n }\r\n else {\r\n sb.write1(0xFFEB); // HALFWIDTH RIGHTWARDS ARROW\r\n }\r\n for (let space = 2; space <= charWidth; space++) {\r\n sb.write1(0xA0); //  \r\n }\r\n }\r\n else { // must be CharCode.Space\r\n charWidth = 1;\r\n sb.write1(renderSpaceCharCode); // · or word separator middle dot\r\n }\r\n charOffsetInPart += charWidth;\r\n if (charIndex >= fauxIndentLength) {\r\n visibleColumn += charWidth;\r\n }\r\n }\r\n prevPartContentCnt = partContentCnt;\r\n }\r\n else {\r\n let partContentCnt = 0;\r\n sb.appendASCII(62 /* GreaterThan */);\r\n for (; charIndex < partEndIndex; charIndex++) {\r\n characterMapping.setPartData(charIndex, partIndex - partDisplacement, charOffsetInPart, partAbsoluteOffset);\r\n partDisplacement = 0;\r\n const charCode = lineContent.charCodeAt(charIndex);\r\n let producedCharacters = 1;\r\n let charWidth = 1;\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n producedCharacters = (tabSize - (visibleColumn % tabSize));\r\n charWidth = producedCharacters;\r\n for (let space = 1; space <= producedCharacters; space++) {\r\n sb.write1(0xA0); //  \r\n }\r\n break;\r\n case 32 /* Space */:\r\n sb.write1(0xA0); //  \r\n break;\r\n case 60 /* LessThan */:\r\n sb.appendASCIIString('<');\r\n break;\r\n case 62 /* GreaterThan */:\r\n sb.appendASCIIString('>');\r\n break;\r\n case 38 /* Ampersand */:\r\n sb.appendASCIIString('&');\r\n break;\r\n case 0 /* Null */:\r\n sb.appendASCIIString('�');\r\n break;\r\n case 65279 /* UTF8_BOM */:\r\n case 8232 /* LINE_SEPARATOR */:\r\n case 8233 /* PARAGRAPH_SEPARATOR */:\r\n case 133 /* NEXT_LINE */:\r\n sb.write1(0xFFFD);\r\n break;\r\n default:\r\n if (strings.isFullWidthCharacter(charCode)) {\r\n charWidth++;\r\n }\r\n if (renderControlCharacters && charCode < 32) {\r\n sb.write1(9216 + charCode);\r\n }\r\n else {\r\n sb.write1(charCode);\r\n }\r\n }\r\n charOffsetInPart += producedCharacters;\r\n partContentCnt += producedCharacters;\r\n if (charIndex >= fauxIndentLength) {\r\n visibleColumn += charWidth;\r\n }\r\n }\r\n prevPartContentCnt = partContentCnt;\r\n }\r\n if (partIsEmptyAndHasPseudoAfter) {\r\n partDisplacement++;\r\n }\r\n else {\r\n partDisplacement = 0;\r\n }\r\n sb.appendASCIIString('</span>');\r\n }\r\n // When getting client rects for the last character, we will position the\r\n // text range at the end of the span, insteaf of at the beginning of next span\r\n characterMapping.setPartData(len, parts.length - 1, charOffsetInPart, partAbsoluteOffset);\r\n if (isOverflowing) {\r\n sb.appendASCIIString('<span>…</span>');\r\n }\r\n sb.appendASCIIString('</span>');\r\n return new RenderLineOutput(characterMapping, containsRTL, containsForeignElements);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../core/range.js';\r\n/**\r\n * Contains all data needed to render at a specific viewport.\r\n */\r\nexport class ViewportData {\r\n constructor(selections, partialData, whitespaceViewportData, model) {\r\n this.selections = selections;\r\n this.startLineNumber = partialData.startLineNumber | 0;\r\n this.endLineNumber = partialData.endLineNumber | 0;\r\n this.relativeVerticalOffset = partialData.relativeVerticalOffset;\r\n this.bigNumbersDelta = partialData.bigNumbersDelta | 0;\r\n this.whitespaceViewportData = whitespaceViewportData;\r\n this._model = model;\r\n this.visibleRange = new Range(partialData.startLineNumber, this._model.getLineMinColumn(partialData.startLineNumber), partialData.endLineNumber, this._model.getLineMaxColumn(partialData.endLineNumber));\r\n }\r\n getViewLineRenderingData(lineNumber) {\r\n return this._model.getViewLineRenderingData(this.visibleRange, lineNumber);\r\n }\r\n getDecorationsInViewport() {\r\n return this._model.getDecorationsInViewport(this.visibleRange);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { RGBA8 } from '../core/rgba.js';\r\nimport { TokenizationRegistry } from '../modes.js';\r\nexport class MinimapTokensColorTracker {\r\n constructor() {\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._updateColorMap();\r\n TokenizationRegistry.onDidChange(e => {\r\n if (e.changedColorMap) {\r\n this._updateColorMap();\r\n }\r\n });\r\n }\r\n static getInstance() {\r\n if (!this._INSTANCE) {\r\n this._INSTANCE = new MinimapTokensColorTracker();\r\n }\r\n return this._INSTANCE;\r\n }\r\n _updateColorMap() {\r\n const colorMap = TokenizationRegistry.getColorMap();\r\n if (!colorMap) {\r\n this._colors = [RGBA8.Empty];\r\n this._backgroundIsLight = true;\r\n return;\r\n }\r\n this._colors = [RGBA8.Empty];\r\n for (let colorId = 1; colorId < colorMap.length; colorId++) {\r\n const source = colorMap[colorId].rgba;\r\n // Use a VM friendly data-type\r\n this._colors[colorId] = new RGBA8(source.r, source.g, source.b, Math.round(source.a * 255));\r\n }\r\n let backgroundLuminosity = colorMap[2 /* DefaultBackground */].getRelativeLuminance();\r\n this._backgroundIsLight = backgroundLuminosity >= 0.5;\r\n this._onDidChange.fire(undefined);\r\n }\r\n getColor(colorId) {\r\n if (colorId < 1 || colorId >= this._colors.length) {\r\n // background color (basically invisible)\r\n colorId = 2 /* DefaultBackground */;\r\n }\r\n return this._colors[colorId];\r\n }\r\n backgroundIsLight() {\r\n return this._backgroundIsLight;\r\n }\r\n}\r\nMinimapTokensColorTracker._INSTANCE = null;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nimport { LineBreakData } from './splitLinesCollection.js';\r\nclass WrappingCharacterClassifier extends CharacterClassifier {\r\n constructor(BREAK_BEFORE, BREAK_AFTER) {\r\n super(0 /* NONE */);\r\n for (let i = 0; i < BREAK_BEFORE.length; i++) {\r\n this.set(BREAK_BEFORE.charCodeAt(i), 1 /* BREAK_BEFORE */);\r\n }\r\n for (let i = 0; i < BREAK_AFTER.length; i++) {\r\n this.set(BREAK_AFTER.charCodeAt(i), 2 /* BREAK_AFTER */);\r\n }\r\n }\r\n get(charCode) {\r\n if (charCode >= 0 && charCode < 256) {\r\n return this._asciiMap[charCode];\r\n }\r\n else {\r\n // Initialize CharacterClass.BREAK_IDEOGRAPHIC for these Unicode ranges:\r\n // 1. CJK Unified Ideographs (0x4E00 -- 0x9FFF)\r\n // 2. CJK Unified Ideographs Extension A (0x3400 -- 0x4DBF)\r\n // 3. Hiragana and Katakana (0x3040 -- 0x30FF)\r\n if ((charCode >= 0x3040 && charCode <= 0x30FF)\r\n || (charCode >= 0x3400 && charCode <= 0x4DBF)\r\n || (charCode >= 0x4E00 && charCode <= 0x9FFF)) {\r\n return 3 /* BREAK_IDEOGRAPHIC */;\r\n }\r\n return (this._map.get(charCode) || this._defaultValue);\r\n }\r\n }\r\n}\r\nlet arrPool1 = [];\r\nlet arrPool2 = [];\r\nexport class MonospaceLineBreaksComputerFactory {\r\n constructor(breakBeforeChars, breakAfterChars) {\r\n this.classifier = new WrappingCharacterClassifier(breakBeforeChars, breakAfterChars);\r\n }\r\n static create(options) {\r\n return new MonospaceLineBreaksComputerFactory(options.get(108 /* wordWrapBreakBeforeCharacters */), options.get(107 /* wordWrapBreakAfterCharacters */));\r\n }\r\n createLineBreaksComputer(fontInfo, tabSize, wrappingColumn, wrappingIndent) {\r\n tabSize = tabSize | 0; //@perf\r\n wrappingColumn = +wrappingColumn; //@perf\r\n let requests = [];\r\n let previousBreakingData = [];\r\n return {\r\n addRequest: (lineText, previousLineBreakData) => {\r\n requests.push(lineText);\r\n previousBreakingData.push(previousLineBreakData);\r\n },\r\n finalize: () => {\r\n const columnsForFullWidthChar = fontInfo.typicalFullwidthCharacterWidth / fontInfo.typicalHalfwidthCharacterWidth; //@perf\r\n let result = [];\r\n for (let i = 0, len = requests.length; i < len; i++) {\r\n const previousLineBreakData = previousBreakingData[i];\r\n if (previousLineBreakData) {\r\n result[i] = createLineBreaksFromPreviousLineBreaks(this.classifier, previousLineBreakData, requests[i], tabSize, wrappingColumn, columnsForFullWidthChar, wrappingIndent);\r\n }\r\n else {\r\n result[i] = createLineBreaks(this.classifier, requests[i], tabSize, wrappingColumn, columnsForFullWidthChar, wrappingIndent);\r\n }\r\n }\r\n arrPool1.length = 0;\r\n arrPool2.length = 0;\r\n return result;\r\n }\r\n };\r\n }\r\n}\r\nfunction createLineBreaksFromPreviousLineBreaks(classifier, previousBreakingData, lineText, tabSize, firstLineBreakColumn, columnsForFullWidthChar, wrappingIndent) {\r\n if (firstLineBreakColumn === -1) {\r\n return null;\r\n }\r\n const len = lineText.length;\r\n if (len <= 1) {\r\n return null;\r\n }\r\n const prevBreakingOffsets = previousBreakingData.breakOffsets;\r\n const prevBreakingOffsetsVisibleColumn = previousBreakingData.breakOffsetsVisibleColumn;\r\n const wrappedTextIndentLength = computeWrappedTextIndentLength(lineText, tabSize, firstLineBreakColumn, columnsForFullWidthChar, wrappingIndent);\r\n const wrappedLineBreakColumn = firstLineBreakColumn - wrappedTextIndentLength;\r\n let breakingOffsets = arrPool1;\r\n let breakingOffsetsVisibleColumn = arrPool2;\r\n let breakingOffsetsCount = 0;\r\n let lastBreakingOffset = 0;\r\n let lastBreakingOffsetVisibleColumn = 0;\r\n let breakingColumn = firstLineBreakColumn;\r\n const prevLen = prevBreakingOffsets.length;\r\n let prevIndex = 0;\r\n if (prevIndex >= 0) {\r\n let bestDistance = Math.abs(prevBreakingOffsetsVisibleColumn[prevIndex] - breakingColumn);\r\n while (prevIndex + 1 < prevLen) {\r\n const distance = Math.abs(prevBreakingOffsetsVisibleColumn[prevIndex + 1] - breakingColumn);\r\n if (distance >= bestDistance) {\r\n break;\r\n }\r\n bestDistance = distance;\r\n prevIndex++;\r\n }\r\n }\r\n while (prevIndex < prevLen) {\r\n // Allow for prevIndex to be -1 (for the case where we hit a tab when walking backwards from the first break)\r\n let prevBreakOffset = prevIndex < 0 ? 0 : prevBreakingOffsets[prevIndex];\r\n let prevBreakOffsetVisibleColumn = prevIndex < 0 ? 0 : prevBreakingOffsetsVisibleColumn[prevIndex];\r\n if (lastBreakingOffset > prevBreakOffset) {\r\n prevBreakOffset = lastBreakingOffset;\r\n prevBreakOffsetVisibleColumn = lastBreakingOffsetVisibleColumn;\r\n }\r\n let breakOffset = 0;\r\n let breakOffsetVisibleColumn = 0;\r\n let forcedBreakOffset = 0;\r\n let forcedBreakOffsetVisibleColumn = 0;\r\n // initially, we search as much as possible to the right (if it fits)\r\n if (prevBreakOffsetVisibleColumn <= breakingColumn) {\r\n let visibleColumn = prevBreakOffsetVisibleColumn;\r\n let prevCharCode = prevBreakOffset === 0 ? 0 /* Null */ : lineText.charCodeAt(prevBreakOffset - 1);\r\n let prevCharCodeClass = prevBreakOffset === 0 ? 0 /* NONE */ : classifier.get(prevCharCode);\r\n let entireLineFits = true;\r\n for (let i = prevBreakOffset; i < len; i++) {\r\n const charStartOffset = i;\r\n const charCode = lineText.charCodeAt(i);\r\n let charCodeClass;\r\n let charWidth;\r\n if (strings.isHighSurrogate(charCode)) {\r\n // A surrogate pair must always be considered as a single unit, so it is never to be broken\r\n i++;\r\n charCodeClass = 0 /* NONE */;\r\n charWidth = 2;\r\n }\r\n else {\r\n charCodeClass = classifier.get(charCode);\r\n charWidth = computeCharWidth(charCode, visibleColumn, tabSize, columnsForFullWidthChar);\r\n }\r\n if (charStartOffset > lastBreakingOffset && canBreak(prevCharCode, prevCharCodeClass, charCode, charCodeClass)) {\r\n breakOffset = charStartOffset;\r\n breakOffsetVisibleColumn = visibleColumn;\r\n }\r\n visibleColumn += charWidth;\r\n // check if adding character at `i` will go over the breaking column\r\n if (visibleColumn > breakingColumn) {\r\n // We need to break at least before character at `i`:\r\n if (charStartOffset > lastBreakingOffset) {\r\n forcedBreakOffset = charStartOffset;\r\n forcedBreakOffsetVisibleColumn = visibleColumn - charWidth;\r\n }\r\n else {\r\n // we need to advance at least by one character\r\n forcedBreakOffset = i + 1;\r\n forcedBreakOffsetVisibleColumn = visibleColumn;\r\n }\r\n if (visibleColumn - breakOffsetVisibleColumn > wrappedLineBreakColumn) {\r\n // Cannot break at `breakOffset` => reset it if it was set\r\n breakOffset = 0;\r\n }\r\n entireLineFits = false;\r\n break;\r\n }\r\n prevCharCode = charCode;\r\n prevCharCodeClass = charCodeClass;\r\n }\r\n if (entireLineFits) {\r\n // there is no more need to break => stop the outer loop!\r\n if (breakingOffsetsCount > 0) {\r\n // Add last segment, no need to assign to `lastBreakingOffset` and `lastBreakingOffsetVisibleColumn`\r\n breakingOffsets[breakingOffsetsCount] = prevBreakingOffsets[prevBreakingOffsets.length - 1];\r\n breakingOffsetsVisibleColumn[breakingOffsetsCount] = prevBreakingOffsetsVisibleColumn[prevBreakingOffsets.length - 1];\r\n breakingOffsetsCount++;\r\n }\r\n break;\r\n }\r\n }\r\n if (breakOffset === 0) {\r\n // must search left\r\n let visibleColumn = prevBreakOffsetVisibleColumn;\r\n let charCode = lineText.charCodeAt(prevBreakOffset);\r\n let charCodeClass = classifier.get(charCode);\r\n let hitATabCharacter = false;\r\n for (let i = prevBreakOffset - 1; i >= lastBreakingOffset; i--) {\r\n const charStartOffset = i + 1;\r\n const prevCharCode = lineText.charCodeAt(i);\r\n if (prevCharCode === 9 /* Tab */) {\r\n // cannot determine the width of a tab when going backwards, so we must go forwards\r\n hitATabCharacter = true;\r\n break;\r\n }\r\n let prevCharCodeClass;\r\n let prevCharWidth;\r\n if (strings.isLowSurrogate(prevCharCode)) {\r\n // A surrogate pair must always be considered as a single unit, so it is never to be broken\r\n i--;\r\n prevCharCodeClass = 0 /* NONE */;\r\n prevCharWidth = 2;\r\n }\r\n else {\r\n prevCharCodeClass = classifier.get(prevCharCode);\r\n prevCharWidth = (strings.isFullWidthCharacter(prevCharCode) ? columnsForFullWidthChar : 1);\r\n }\r\n if (visibleColumn <= breakingColumn) {\r\n if (forcedBreakOffset === 0) {\r\n forcedBreakOffset = charStartOffset;\r\n forcedBreakOffsetVisibleColumn = visibleColumn;\r\n }\r\n if (visibleColumn <= breakingColumn - wrappedLineBreakColumn) {\r\n // went too far!\r\n break;\r\n }\r\n if (canBreak(prevCharCode, prevCharCodeClass, charCode, charCodeClass)) {\r\n breakOffset = charStartOffset;\r\n breakOffsetVisibleColumn = visibleColumn;\r\n break;\r\n }\r\n }\r\n visibleColumn -= prevCharWidth;\r\n charCode = prevCharCode;\r\n charCodeClass = prevCharCodeClass;\r\n }\r\n if (breakOffset !== 0) {\r\n const remainingWidthOfNextLine = wrappedLineBreakColumn - (forcedBreakOffsetVisibleColumn - breakOffsetVisibleColumn);\r\n if (remainingWidthOfNextLine <= tabSize) {\r\n const charCodeAtForcedBreakOffset = lineText.charCodeAt(forcedBreakOffset);\r\n let charWidth;\r\n if (strings.isHighSurrogate(charCodeAtForcedBreakOffset)) {\r\n // A surrogate pair must always be considered as a single unit, so it is never to be broken\r\n charWidth = 2;\r\n }\r\n else {\r\n charWidth = computeCharWidth(charCodeAtForcedBreakOffset, forcedBreakOffsetVisibleColumn, tabSize, columnsForFullWidthChar);\r\n }\r\n if (remainingWidthOfNextLine - charWidth < 0) {\r\n // it is not worth it to break at breakOffset, it just introduces an extra needless line!\r\n breakOffset = 0;\r\n }\r\n }\r\n }\r\n if (hitATabCharacter) {\r\n // cannot determine the width of a tab when going backwards, so we must go forwards from the previous break\r\n prevIndex--;\r\n continue;\r\n }\r\n }\r\n if (breakOffset === 0) {\r\n // Could not find a good breaking point\r\n breakOffset = forcedBreakOffset;\r\n breakOffsetVisibleColumn = forcedBreakOffsetVisibleColumn;\r\n }\r\n lastBreakingOffset = breakOffset;\r\n breakingOffsets[breakingOffsetsCount] = breakOffset;\r\n lastBreakingOffsetVisibleColumn = breakOffsetVisibleColumn;\r\n breakingOffsetsVisibleColumn[breakingOffsetsCount] = breakOffsetVisibleColumn;\r\n breakingOffsetsCount++;\r\n breakingColumn = breakOffsetVisibleColumn + wrappedLineBreakColumn;\r\n while (prevIndex < 0 || (prevIndex < prevLen && prevBreakingOffsetsVisibleColumn[prevIndex] < breakOffsetVisibleColumn)) {\r\n prevIndex++;\r\n }\r\n let bestDistance = Math.abs(prevBreakingOffsetsVisibleColumn[prevIndex] - breakingColumn);\r\n while (prevIndex + 1 < prevLen) {\r\n const distance = Math.abs(prevBreakingOffsetsVisibleColumn[prevIndex + 1] - breakingColumn);\r\n if (distance >= bestDistance) {\r\n break;\r\n }\r\n bestDistance = distance;\r\n prevIndex++;\r\n }\r\n }\r\n if (breakingOffsetsCount === 0) {\r\n return null;\r\n }\r\n // Doing here some object reuse which ends up helping a huge deal with GC pauses!\r\n breakingOffsets.length = breakingOffsetsCount;\r\n breakingOffsetsVisibleColumn.length = breakingOffsetsCount;\r\n arrPool1 = previousBreakingData.breakOffsets;\r\n arrPool2 = previousBreakingData.breakOffsetsVisibleColumn;\r\n previousBreakingData.breakOffsets = breakingOffsets;\r\n previousBreakingData.breakOffsetsVisibleColumn = breakingOffsetsVisibleColumn;\r\n previousBreakingData.wrappedTextIndentLength = wrappedTextIndentLength;\r\n return previousBreakingData;\r\n}\r\nfunction createLineBreaks(classifier, lineText, tabSize, firstLineBreakColumn, columnsForFullWidthChar, wrappingIndent) {\r\n if (firstLineBreakColumn === -1) {\r\n return null;\r\n }\r\n const len = lineText.length;\r\n if (len <= 1) {\r\n return null;\r\n }\r\n const wrappedTextIndentLength = computeWrappedTextIndentLength(lineText, tabSize, firstLineBreakColumn, columnsForFullWidthChar, wrappingIndent);\r\n const wrappedLineBreakColumn = firstLineBreakColumn - wrappedTextIndentLength;\r\n let breakingOffsets = [];\r\n let breakingOffsetsVisibleColumn = [];\r\n let breakingOffsetsCount = 0;\r\n let breakOffset = 0;\r\n let breakOffsetVisibleColumn = 0;\r\n let breakingColumn = firstLineBreakColumn;\r\n let prevCharCode = lineText.charCodeAt(0);\r\n let prevCharCodeClass = classifier.get(prevCharCode);\r\n let visibleColumn = computeCharWidth(prevCharCode, 0, tabSize, columnsForFullWidthChar);\r\n let startOffset = 1;\r\n if (strings.isHighSurrogate(prevCharCode)) {\r\n // A surrogate pair must always be considered as a single unit, so it is never to be broken\r\n visibleColumn += 1;\r\n prevCharCode = lineText.charCodeAt(1);\r\n prevCharCodeClass = classifier.get(prevCharCode);\r\n startOffset++;\r\n }\r\n for (let i = startOffset; i < len; i++) {\r\n const charStartOffset = i;\r\n const charCode = lineText.charCodeAt(i);\r\n let charCodeClass;\r\n let charWidth;\r\n if (strings.isHighSurrogate(charCode)) {\r\n // A surrogate pair must always be considered as a single unit, so it is never to be broken\r\n i++;\r\n charCodeClass = 0 /* NONE */;\r\n charWidth = 2;\r\n }\r\n else {\r\n charCodeClass = classifier.get(charCode);\r\n charWidth = computeCharWidth(charCode, visibleColumn, tabSize, columnsForFullWidthChar);\r\n }\r\n if (canBreak(prevCharCode, prevCharCodeClass, charCode, charCodeClass)) {\r\n breakOffset = charStartOffset;\r\n breakOffsetVisibleColumn = visibleColumn;\r\n }\r\n visibleColumn += charWidth;\r\n // check if adding character at `i` will go over the breaking column\r\n if (visibleColumn > breakingColumn) {\r\n // We need to break at least before character at `i`:\r\n if (breakOffset === 0 || visibleColumn - breakOffsetVisibleColumn > wrappedLineBreakColumn) {\r\n // Cannot break at `breakOffset`, must break at `i`\r\n breakOffset = charStartOffset;\r\n breakOffsetVisibleColumn = visibleColumn - charWidth;\r\n }\r\n breakingOffsets[breakingOffsetsCount] = breakOffset;\r\n breakingOffsetsVisibleColumn[breakingOffsetsCount] = breakOffsetVisibleColumn;\r\n breakingOffsetsCount++;\r\n breakingColumn = breakOffsetVisibleColumn + wrappedLineBreakColumn;\r\n breakOffset = 0;\r\n }\r\n prevCharCode = charCode;\r\n prevCharCodeClass = charCodeClass;\r\n }\r\n if (breakingOffsetsCount === 0) {\r\n return null;\r\n }\r\n // Add last segment\r\n breakingOffsets[breakingOffsetsCount] = len;\r\n breakingOffsetsVisibleColumn[breakingOffsetsCount] = visibleColumn;\r\n return new LineBreakData(breakingOffsets, breakingOffsetsVisibleColumn, wrappedTextIndentLength);\r\n}\r\nfunction computeCharWidth(charCode, visibleColumn, tabSize, columnsForFullWidthChar) {\r\n if (charCode === 9 /* Tab */) {\r\n return (tabSize - (visibleColumn % tabSize));\r\n }\r\n if (strings.isFullWidthCharacter(charCode)) {\r\n return columnsForFullWidthChar;\r\n }\r\n return 1;\r\n}\r\nfunction tabCharacterWidth(visibleColumn, tabSize) {\r\n return (tabSize - (visibleColumn % tabSize));\r\n}\r\n/**\r\n * Kinsoku Shori : Don't break after a leading character, like an open bracket\r\n * Kinsoku Shori : Don't break before a trailing character, like a period\r\n */\r\nfunction canBreak(prevCharCode, prevCharCodeClass, charCode, charCodeClass) {\r\n return (charCode !== 32 /* Space */\r\n && ((prevCharCodeClass === 2 /* BREAK_AFTER */)\r\n || (prevCharCodeClass === 3 /* BREAK_IDEOGRAPHIC */ && charCodeClass !== 2 /* BREAK_AFTER */)\r\n || (charCodeClass === 1 /* BREAK_BEFORE */)\r\n || (charCodeClass === 3 /* BREAK_IDEOGRAPHIC */ && prevCharCodeClass !== 1 /* BREAK_BEFORE */)));\r\n}\r\nfunction computeWrappedTextIndentLength(lineText, tabSize, firstLineBreakColumn, columnsForFullWidthChar, wrappingIndent) {\r\n let wrappedTextIndentLength = 0;\r\n if (wrappingIndent !== 0 /* None */) {\r\n const firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineText);\r\n if (firstNonWhitespaceIndex !== -1) {\r\n // Track existing indent\r\n for (let i = 0; i < firstNonWhitespaceIndex; i++) {\r\n const charWidth = (lineText.charCodeAt(i) === 9 /* Tab */ ? tabCharacterWidth(wrappedTextIndentLength, tabSize) : 1);\r\n wrappedTextIndentLength += charWidth;\r\n }\r\n // Increase indent of continuation lines, if desired\r\n const numberOfAdditionalTabs = (wrappingIndent === 3 /* DeepIndent */ ? 2 : wrappingIndent === 2 /* Indent */ ? 1 : 0);\r\n for (let i = 0; i < numberOfAdditionalTabs; i++) {\r\n const charWidth = tabCharacterWidth(wrappedTextIndentLength, tabSize);\r\n wrappedTextIndentLength += charWidth;\r\n }\r\n // Force sticking to beginning of line if no character would fit except for the indentation\r\n if (wrappedTextIndentLength + columnsForFullWidthChar > firstLineBreakColumn) {\r\n wrappedTextIndentLength = 0;\r\n }\r\n }\r\n }\r\n return wrappedTextIndentLength;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint32 } from '../../../base/common/uint.js';\r\nexport class PrefixSumIndexOfResult {\r\n constructor(index, remainder) {\r\n this.index = index;\r\n this.remainder = remainder;\r\n }\r\n}\r\nexport class PrefixSumComputer {\r\n constructor(values) {\r\n this.values = values;\r\n this.prefixSum = new Uint32Array(values.length);\r\n this.prefixSumValidIndex = new Int32Array(1);\r\n this.prefixSumValidIndex[0] = -1;\r\n }\r\n insertValues(insertIndex, insertValues) {\r\n insertIndex = toUint32(insertIndex);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n const insertValuesLen = insertValues.length;\r\n if (insertValuesLen === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\r\n this.values.set(oldValues.subarray(0, insertIndex), 0);\r\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\r\n this.values.set(insertValues, insertIndex);\r\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = insertIndex - 1;\r\n }\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n changeValue(index, value) {\r\n index = toUint32(index);\r\n value = toUint32(value);\r\n if (this.values[index] === value) {\r\n return false;\r\n }\r\n this.values[index] = value;\r\n if (index - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = index - 1;\r\n }\r\n return true;\r\n }\r\n removeValues(startIndex, cnt) {\r\n startIndex = toUint32(startIndex);\r\n cnt = toUint32(cnt);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n if (startIndex >= oldValues.length) {\r\n return false;\r\n }\r\n let maxCnt = oldValues.length - startIndex;\r\n if (cnt >= maxCnt) {\r\n cnt = maxCnt;\r\n }\r\n if (cnt === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length - cnt);\r\n this.values.set(oldValues.subarray(0, startIndex), 0);\r\n this.values.set(oldValues.subarray(startIndex + cnt), startIndex);\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (startIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = startIndex - 1;\r\n }\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n getTotalValue() {\r\n if (this.values.length === 0) {\r\n return 0;\r\n }\r\n return this._getAccumulatedValue(this.values.length - 1);\r\n }\r\n getAccumulatedValue(index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n index = toUint32(index);\r\n return this._getAccumulatedValue(index);\r\n }\r\n _getAccumulatedValue(index) {\r\n if (index <= this.prefixSumValidIndex[0]) {\r\n return this.prefixSum[index];\r\n }\r\n let startIndex = this.prefixSumValidIndex[0] + 1;\r\n if (startIndex === 0) {\r\n this.prefixSum[0] = this.values[0];\r\n startIndex++;\r\n }\r\n if (index >= this.values.length) {\r\n index = this.values.length - 1;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\r\n }\r\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\r\n return this.prefixSum[index];\r\n }\r\n getIndexOf(accumulatedValue) {\r\n accumulatedValue = Math.floor(accumulatedValue); //@perf\r\n // Compute all sums (to get a fully valid prefixSum)\r\n this.getTotalValue();\r\n let low = 0;\r\n let high = this.values.length - 1;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStop = this.prefixSum[mid];\r\n midStart = midStop - this.values[mid];\r\n if (accumulatedValue < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (accumulatedValue >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new PrefixSumIndexOfResult(mid, accumulatedValue - midStart);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { ModelDecorationOptions } from '../model/textModel.js';\r\nimport * as viewEvents from '../view/viewEvents.js';\r\nimport { PrefixSumIndexOfResult } from './prefixSumComputer.js';\r\nimport { ViewLineData } from './viewModel.js';\r\nexport class OutputPosition {\r\n constructor(outputLineIndex, outputOffset) {\r\n this.outputLineIndex = outputLineIndex;\r\n this.outputOffset = outputOffset;\r\n }\r\n}\r\nexport class LineBreakData {\r\n constructor(breakOffsets, breakOffsetsVisibleColumn, wrappedTextIndentLength) {\r\n this.breakOffsets = breakOffsets;\r\n this.breakOffsetsVisibleColumn = breakOffsetsVisibleColumn;\r\n this.wrappedTextIndentLength = wrappedTextIndentLength;\r\n }\r\n static getInputOffsetOfOutputPosition(breakOffsets, outputLineIndex, outputOffset) {\r\n if (outputLineIndex === 0) {\r\n return outputOffset;\r\n }\r\n else {\r\n return breakOffsets[outputLineIndex - 1] + outputOffset;\r\n }\r\n }\r\n static getOutputPositionOfInputOffset(breakOffsets, inputOffset) {\r\n let low = 0;\r\n let high = breakOffsets.length - 1;\r\n let mid = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n const midStop = breakOffsets[mid];\r\n midStart = mid > 0 ? breakOffsets[mid - 1] : 0;\r\n if (inputOffset < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (inputOffset >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new OutputPosition(mid, inputOffset - midStart);\r\n }\r\n}\r\nexport class CoordinatesConverter {\r\n constructor(lines) {\r\n this._lines = lines;\r\n }\r\n // View -> Model conversion and related methods\r\n convertViewPositionToModelPosition(viewPosition) {\r\n return this._lines.convertViewPositionToModelPosition(viewPosition.lineNumber, viewPosition.column);\r\n }\r\n convertViewRangeToModelRange(viewRange) {\r\n return this._lines.convertViewRangeToModelRange(viewRange);\r\n }\r\n validateViewPosition(viewPosition, expectedModelPosition) {\r\n return this._lines.validateViewPosition(viewPosition.lineNumber, viewPosition.column, expectedModelPosition);\r\n }\r\n validateViewRange(viewRange, expectedModelRange) {\r\n return this._lines.validateViewRange(viewRange, expectedModelRange);\r\n }\r\n // Model -> View conversion and related methods\r\n convertModelPositionToViewPosition(modelPosition) {\r\n return this._lines.convertModelPositionToViewPosition(modelPosition.lineNumber, modelPosition.column);\r\n }\r\n convertModelRangeToViewRange(modelRange) {\r\n return this._lines.convertModelRangeToViewRange(modelRange);\r\n }\r\n modelPositionIsVisible(modelPosition) {\r\n return this._lines.modelPositionIsVisible(modelPosition.lineNumber, modelPosition.column);\r\n }\r\n}\r\nclass LineNumberMapper {\r\n constructor(viewLineCounts) {\r\n this._counts = viewLineCounts;\r\n this._isValid = false;\r\n this._validEndIndex = -1;\r\n this._modelToView = [];\r\n this._viewToModel = [];\r\n }\r\n _invalidate(index) {\r\n this._isValid = false;\r\n this._validEndIndex = Math.min(this._validEndIndex, index - 1);\r\n }\r\n _ensureValid() {\r\n if (this._isValid) {\r\n return;\r\n }\r\n for (let i = this._validEndIndex + 1, len = this._counts.length; i < len; i++) {\r\n const viewLineCount = this._counts[i];\r\n const viewLinesAbove = (i > 0 ? this._modelToView[i - 1] : 0);\r\n this._modelToView[i] = viewLinesAbove + viewLineCount;\r\n for (let j = 0; j < viewLineCount; j++) {\r\n this._viewToModel[viewLinesAbove + j] = i;\r\n }\r\n }\r\n // trim things\r\n this._modelToView.length = this._counts.length;\r\n this._viewToModel.length = this._modelToView[this._modelToView.length - 1];\r\n // mark as valid\r\n this._isValid = true;\r\n this._validEndIndex = this._counts.length - 1;\r\n }\r\n changeValue(index, value) {\r\n if (this._counts[index] === value) {\r\n // no change\r\n return;\r\n }\r\n this._counts[index] = value;\r\n this._invalidate(index);\r\n }\r\n removeValues(start, deleteCount) {\r\n this._counts.splice(start, deleteCount);\r\n this._invalidate(start);\r\n }\r\n insertValues(insertIndex, insertArr) {\r\n this._counts = arrays.arrayInsert(this._counts, insertIndex, insertArr);\r\n this._invalidate(insertIndex);\r\n }\r\n getTotalValue() {\r\n this._ensureValid();\r\n return this._viewToModel.length;\r\n }\r\n getAccumulatedValue(index) {\r\n this._ensureValid();\r\n return this._modelToView[index];\r\n }\r\n getIndexOf(accumulatedValue) {\r\n this._ensureValid();\r\n const modelLineIndex = this._viewToModel[accumulatedValue];\r\n const viewLinesAbove = (modelLineIndex > 0 ? this._modelToView[modelLineIndex - 1] : 0);\r\n return new PrefixSumIndexOfResult(modelLineIndex, accumulatedValue - viewLinesAbove);\r\n }\r\n}\r\nexport class SplitLinesCollection {\r\n constructor(model, domLineBreaksComputerFactory, monospaceLineBreaksComputerFactory, fontInfo, tabSize, wrappingStrategy, wrappingColumn, wrappingIndent) {\r\n this.model = model;\r\n this._validModelVersionId = -1;\r\n this._domLineBreaksComputerFactory = domLineBreaksComputerFactory;\r\n this._monospaceLineBreaksComputerFactory = monospaceLineBreaksComputerFactory;\r\n this.fontInfo = fontInfo;\r\n this.tabSize = tabSize;\r\n this.wrappingStrategy = wrappingStrategy;\r\n this.wrappingColumn = wrappingColumn;\r\n this.wrappingIndent = wrappingIndent;\r\n this._constructLines(/*resetHiddenAreas*/ true, null);\r\n }\r\n dispose() {\r\n this.hiddenAreasIds = this.model.deltaDecorations(this.hiddenAreasIds, []);\r\n }\r\n createCoordinatesConverter() {\r\n return new CoordinatesConverter(this);\r\n }\r\n _constructLines(resetHiddenAreas, previousLineBreaks) {\r\n this.lines = [];\r\n if (resetHiddenAreas) {\r\n this.hiddenAreasIds = [];\r\n }\r\n let linesContent = this.model.getLinesContent();\r\n const lineCount = linesContent.length;\r\n const lineBreaksComputer = this.createLineBreaksComputer();\r\n for (let i = 0; i < lineCount; i++) {\r\n lineBreaksComputer.addRequest(linesContent[i], previousLineBreaks ? previousLineBreaks[i] : null);\r\n }\r\n const linesBreaks = lineBreaksComputer.finalize();\r\n let values = [];\r\n let hiddenAreas = this.hiddenAreasIds.map((areaId) => this.model.getDecorationRange(areaId)).sort(Range.compareRangesUsingStarts);\r\n let hiddenAreaStart = 1, hiddenAreaEnd = 0;\r\n let hiddenAreaIdx = -1;\r\n let nextLineNumberToUpdateHiddenArea = (hiddenAreaIdx + 1 < hiddenAreas.length) ? hiddenAreaEnd + 1 : lineCount + 2;\r\n for (let i = 0; i < lineCount; i++) {\r\n let lineNumber = i + 1;\r\n if (lineNumber === nextLineNumberToUpdateHiddenArea) {\r\n hiddenAreaIdx++;\r\n hiddenAreaStart = hiddenAreas[hiddenAreaIdx].startLineNumber;\r\n hiddenAreaEnd = hiddenAreas[hiddenAreaIdx].endLineNumber;\r\n nextLineNumberToUpdateHiddenArea = (hiddenAreaIdx + 1 < hiddenAreas.length) ? hiddenAreaEnd + 1 : lineCount + 2;\r\n }\r\n let isInHiddenArea = (lineNumber >= hiddenAreaStart && lineNumber <= hiddenAreaEnd);\r\n let line = createSplitLine(linesBreaks[i], !isInHiddenArea);\r\n values[i] = line.getViewLineCount();\r\n this.lines[i] = line;\r\n }\r\n this._validModelVersionId = this.model.getVersionId();\r\n this.prefixSumComputer = new LineNumberMapper(values);\r\n }\r\n getHiddenAreas() {\r\n return this.hiddenAreasIds.map((decId) => {\r\n return this.model.getDecorationRange(decId);\r\n });\r\n }\r\n _reduceRanges(_ranges) {\r\n if (_ranges.length === 0) {\r\n return [];\r\n }\r\n let ranges = _ranges.map(r => this.model.validateRange(r)).sort(Range.compareRangesUsingStarts);\r\n let result = [];\r\n let currentRangeStart = ranges[0].startLineNumber;\r\n let currentRangeEnd = ranges[0].endLineNumber;\r\n for (let i = 1, len = ranges.length; i < len; i++) {\r\n let range = ranges[i];\r\n if (range.startLineNumber > currentRangeEnd + 1) {\r\n result.push(new Range(currentRangeStart, 1, currentRangeEnd, 1));\r\n currentRangeStart = range.startLineNumber;\r\n currentRangeEnd = range.endLineNumber;\r\n }\r\n else if (range.endLineNumber > currentRangeEnd) {\r\n currentRangeEnd = range.endLineNumber;\r\n }\r\n }\r\n result.push(new Range(currentRangeStart, 1, currentRangeEnd, 1));\r\n return result;\r\n }\r\n setHiddenAreas(_ranges) {\r\n let newRanges = this._reduceRanges(_ranges);\r\n // BEGIN TODO@Martin: Please stop calling this method on each model change!\r\n let oldRanges = this.hiddenAreasIds.map((areaId) => this.model.getDecorationRange(areaId)).sort(Range.compareRangesUsingStarts);\r\n if (newRanges.length === oldRanges.length) {\r\n let hasDifference = false;\r\n for (let i = 0; i < newRanges.length; i++) {\r\n if (!newRanges[i].equalsRange(oldRanges[i])) {\r\n hasDifference = true;\r\n break;\r\n }\r\n }\r\n if (!hasDifference) {\r\n return false;\r\n }\r\n }\r\n // END TODO@Martin: Please stop calling this method on each model change!\r\n let newDecorations = [];\r\n for (const newRange of newRanges) {\r\n newDecorations.push({\r\n range: newRange,\r\n options: ModelDecorationOptions.EMPTY\r\n });\r\n }\r\n this.hiddenAreasIds = this.model.deltaDecorations(this.hiddenAreasIds, newDecorations);\r\n let hiddenAreas = newRanges;\r\n let hiddenAreaStart = 1, hiddenAreaEnd = 0;\r\n let hiddenAreaIdx = -1;\r\n let nextLineNumberToUpdateHiddenArea = (hiddenAreaIdx + 1 < hiddenAreas.length) ? hiddenAreaEnd + 1 : this.lines.length + 2;\r\n let hasVisibleLine = false;\r\n for (let i = 0; i < this.lines.length; i++) {\r\n let lineNumber = i + 1;\r\n if (lineNumber === nextLineNumberToUpdateHiddenArea) {\r\n hiddenAreaIdx++;\r\n hiddenAreaStart = hiddenAreas[hiddenAreaIdx].startLineNumber;\r\n hiddenAreaEnd = hiddenAreas[hiddenAreaIdx].endLineNumber;\r\n nextLineNumberToUpdateHiddenArea = (hiddenAreaIdx + 1 < hiddenAreas.length) ? hiddenAreaEnd + 1 : this.lines.length + 2;\r\n }\r\n let lineChanged = false;\r\n if (lineNumber >= hiddenAreaStart && lineNumber <= hiddenAreaEnd) {\r\n // Line should be hidden\r\n if (this.lines[i].isVisible()) {\r\n this.lines[i] = this.lines[i].setVisible(false);\r\n lineChanged = true;\r\n }\r\n }\r\n else {\r\n hasVisibleLine = true;\r\n // Line should be visible\r\n if (!this.lines[i].isVisible()) {\r\n this.lines[i] = this.lines[i].setVisible(true);\r\n lineChanged = true;\r\n }\r\n }\r\n if (lineChanged) {\r\n let newOutputLineCount = this.lines[i].getViewLineCount();\r\n this.prefixSumComputer.changeValue(i, newOutputLineCount);\r\n }\r\n }\r\n if (!hasVisibleLine) {\r\n // Cannot have everything be hidden => reveal everything!\r\n this.setHiddenAreas([]);\r\n }\r\n return true;\r\n }\r\n modelPositionIsVisible(modelLineNumber, _modelColumn) {\r\n if (modelLineNumber < 1 || modelLineNumber > this.lines.length) {\r\n // invalid arguments\r\n return false;\r\n }\r\n return this.lines[modelLineNumber - 1].isVisible();\r\n }\r\n setTabSize(newTabSize) {\r\n if (this.tabSize === newTabSize) {\r\n return false;\r\n }\r\n this.tabSize = newTabSize;\r\n this._constructLines(/*resetHiddenAreas*/ false, null);\r\n return true;\r\n }\r\n setWrappingSettings(fontInfo, wrappingStrategy, wrappingColumn, wrappingIndent) {\r\n const equalFontInfo = this.fontInfo.equals(fontInfo);\r\n const equalWrappingStrategy = (this.wrappingStrategy === wrappingStrategy);\r\n const equalWrappingColumn = (this.wrappingColumn === wrappingColumn);\r\n const equalWrappingIndent = (this.wrappingIndent === wrappingIndent);\r\n if (equalFontInfo && equalWrappingStrategy && equalWrappingColumn && equalWrappingIndent) {\r\n return false;\r\n }\r\n const onlyWrappingColumnChanged = (equalFontInfo && equalWrappingStrategy && !equalWrappingColumn && equalWrappingIndent);\r\n this.fontInfo = fontInfo;\r\n this.wrappingStrategy = wrappingStrategy;\r\n this.wrappingColumn = wrappingColumn;\r\n this.wrappingIndent = wrappingIndent;\r\n let previousLineBreaks = null;\r\n if (onlyWrappingColumnChanged) {\r\n previousLineBreaks = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n previousLineBreaks[i] = this.lines[i].getLineBreakData();\r\n }\r\n }\r\n this._constructLines(/*resetHiddenAreas*/ false, previousLineBreaks);\r\n return true;\r\n }\r\n createLineBreaksComputer() {\r\n const lineBreaksComputerFactory = (this.wrappingStrategy === 'advanced'\r\n ? this._domLineBreaksComputerFactory\r\n : this._monospaceLineBreaksComputerFactory);\r\n return lineBreaksComputerFactory.createLineBreaksComputer(this.fontInfo, this.tabSize, this.wrappingColumn, this.wrappingIndent);\r\n }\r\n onModelFlushed() {\r\n this._constructLines(/*resetHiddenAreas*/ true, null);\r\n }\r\n onModelLinesDeleted(versionId, fromLineNumber, toLineNumber) {\r\n if (versionId <= this._validModelVersionId) {\r\n // Here we check for versionId in case the lines were reconstructed in the meantime.\r\n // We don't want to apply stale change events on top of a newer read model state.\r\n return null;\r\n }\r\n let outputFromLineNumber = (fromLineNumber === 1 ? 1 : this.prefixSumComputer.getAccumulatedValue(fromLineNumber - 2) + 1);\r\n let outputToLineNumber = this.prefixSumComputer.getAccumulatedValue(toLineNumber - 1);\r\n this.lines.splice(fromLineNumber - 1, toLineNumber - fromLineNumber + 1);\r\n this.prefixSumComputer.removeValues(fromLineNumber - 1, toLineNumber - fromLineNumber + 1);\r\n return new viewEvents.ViewLinesDeletedEvent(outputFromLineNumber, outputToLineNumber);\r\n }\r\n onModelLinesInserted(versionId, fromLineNumber, _toLineNumber, lineBreaks) {\r\n if (versionId <= this._validModelVersionId) {\r\n // Here we check for versionId in case the lines were reconstructed in the meantime.\r\n // We don't want to apply stale change events on top of a newer read model state.\r\n return null;\r\n }\r\n let hiddenAreas = this.getHiddenAreas();\r\n let isInHiddenArea = false;\r\n let testPosition = new Position(fromLineNumber, 1);\r\n for (const hiddenArea of hiddenAreas) {\r\n if (hiddenArea.containsPosition(testPosition)) {\r\n isInHiddenArea = true;\r\n break;\r\n }\r\n }\r\n let outputFromLineNumber = (fromLineNumber === 1 ? 1 : this.prefixSumComputer.getAccumulatedValue(fromLineNumber - 2) + 1);\r\n let totalOutputLineCount = 0;\r\n let insertLines = [];\r\n let insertPrefixSumValues = [];\r\n for (let i = 0, len = lineBreaks.length; i < len; i++) {\r\n let line = createSplitLine(lineBreaks[i], !isInHiddenArea);\r\n insertLines.push(line);\r\n let outputLineCount = line.getViewLineCount();\r\n totalOutputLineCount += outputLineCount;\r\n insertPrefixSumValues[i] = outputLineCount;\r\n }\r\n // TODO@Alex: use arrays.arrayInsert\r\n this.lines = this.lines.slice(0, fromLineNumber - 1).concat(insertLines).concat(this.lines.slice(fromLineNumber - 1));\r\n this.prefixSumComputer.insertValues(fromLineNumber - 1, insertPrefixSumValues);\r\n return new viewEvents.ViewLinesInsertedEvent(outputFromLineNumber, outputFromLineNumber + totalOutputLineCount - 1);\r\n }\r\n onModelLineChanged(versionId, lineNumber, lineBreakData) {\r\n if (versionId <= this._validModelVersionId) {\r\n // Here we check for versionId in case the lines were reconstructed in the meantime.\r\n // We don't want to apply stale change events on top of a newer read model state.\r\n return [false, null, null, null];\r\n }\r\n let lineIndex = lineNumber - 1;\r\n let oldOutputLineCount = this.lines[lineIndex].getViewLineCount();\r\n let isVisible = this.lines[lineIndex].isVisible();\r\n let line = createSplitLine(lineBreakData, isVisible);\r\n this.lines[lineIndex] = line;\r\n let newOutputLineCount = this.lines[lineIndex].getViewLineCount();\r\n let lineMappingChanged = false;\r\n let changeFrom = 0;\r\n let changeTo = -1;\r\n let insertFrom = 0;\r\n let insertTo = -1;\r\n let deleteFrom = 0;\r\n let deleteTo = -1;\r\n if (oldOutputLineCount > newOutputLineCount) {\r\n changeFrom = (lineNumber === 1 ? 1 : this.prefixSumComputer.getAccumulatedValue(lineNumber - 2) + 1);\r\n changeTo = changeFrom + newOutputLineCount - 1;\r\n deleteFrom = changeTo + 1;\r\n deleteTo = deleteFrom + (oldOutputLineCount - newOutputLineCount) - 1;\r\n lineMappingChanged = true;\r\n }\r\n else if (oldOutputLineCount < newOutputLineCount) {\r\n changeFrom = (lineNumber === 1 ? 1 : this.prefixSumComputer.getAccumulatedValue(lineNumber - 2) + 1);\r\n changeTo = changeFrom + oldOutputLineCount - 1;\r\n insertFrom = changeTo + 1;\r\n insertTo = insertFrom + (newOutputLineCount - oldOutputLineCount) - 1;\r\n lineMappingChanged = true;\r\n }\r\n else {\r\n changeFrom = (lineNumber === 1 ? 1 : this.prefixSumComputer.getAccumulatedValue(lineNumber - 2) + 1);\r\n changeTo = changeFrom + newOutputLineCount - 1;\r\n }\r\n this.prefixSumComputer.changeValue(lineIndex, newOutputLineCount);\r\n const viewLinesChangedEvent = (changeFrom <= changeTo ? new viewEvents.ViewLinesChangedEvent(changeFrom, changeTo) : null);\r\n const viewLinesInsertedEvent = (insertFrom <= insertTo ? new viewEvents.ViewLinesInsertedEvent(insertFrom, insertTo) : null);\r\n const viewLinesDeletedEvent = (deleteFrom <= deleteTo ? new viewEvents.ViewLinesDeletedEvent(deleteFrom, deleteTo) : null);\r\n return [lineMappingChanged, viewLinesChangedEvent, viewLinesInsertedEvent, viewLinesDeletedEvent];\r\n }\r\n acceptVersionId(versionId) {\r\n this._validModelVersionId = versionId;\r\n if (this.lines.length === 1 && !this.lines[0].isVisible()) {\r\n // At least one line must be visible => reset hidden areas\r\n this.setHiddenAreas([]);\r\n }\r\n }\r\n getViewLineCount() {\r\n return this.prefixSumComputer.getTotalValue();\r\n }\r\n _toValidViewLineNumber(viewLineNumber) {\r\n if (viewLineNumber < 1) {\r\n return 1;\r\n }\r\n const viewLineCount = this.getViewLineCount();\r\n if (viewLineNumber > viewLineCount) {\r\n return viewLineCount;\r\n }\r\n return viewLineNumber | 0;\r\n }\r\n getActiveIndentGuide(viewLineNumber, minLineNumber, maxLineNumber) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n minLineNumber = this._toValidViewLineNumber(minLineNumber);\r\n maxLineNumber = this._toValidViewLineNumber(maxLineNumber);\r\n const modelPosition = this.convertViewPositionToModelPosition(viewLineNumber, this.getViewLineMinColumn(viewLineNumber));\r\n const modelMinPosition = this.convertViewPositionToModelPosition(minLineNumber, this.getViewLineMinColumn(minLineNumber));\r\n const modelMaxPosition = this.convertViewPositionToModelPosition(maxLineNumber, this.getViewLineMinColumn(maxLineNumber));\r\n const result = this.model.getActiveIndentGuide(modelPosition.lineNumber, modelMinPosition.lineNumber, modelMaxPosition.lineNumber);\r\n const viewStartPosition = this.convertModelPositionToViewPosition(result.startLineNumber, 1);\r\n const viewEndPosition = this.convertModelPositionToViewPosition(result.endLineNumber, this.model.getLineMaxColumn(result.endLineNumber));\r\n return {\r\n startLineNumber: viewStartPosition.lineNumber,\r\n endLineNumber: viewEndPosition.lineNumber,\r\n indent: result.indent\r\n };\r\n }\r\n getViewLinesIndentGuides(viewStartLineNumber, viewEndLineNumber) {\r\n viewStartLineNumber = this._toValidViewLineNumber(viewStartLineNumber);\r\n viewEndLineNumber = this._toValidViewLineNumber(viewEndLineNumber);\r\n const modelStart = this.convertViewPositionToModelPosition(viewStartLineNumber, this.getViewLineMinColumn(viewStartLineNumber));\r\n const modelEnd = this.convertViewPositionToModelPosition(viewEndLineNumber, this.getViewLineMaxColumn(viewEndLineNumber));\r\n let result = [];\r\n let resultRepeatCount = [];\r\n let resultRepeatOption = [];\r\n const modelStartLineIndex = modelStart.lineNumber - 1;\r\n const modelEndLineIndex = modelEnd.lineNumber - 1;\r\n let reqStart = null;\r\n for (let modelLineIndex = modelStartLineIndex; modelLineIndex <= modelEndLineIndex; modelLineIndex++) {\r\n const line = this.lines[modelLineIndex];\r\n if (line.isVisible()) {\r\n let viewLineStartIndex = line.getViewLineNumberOfModelPosition(0, modelLineIndex === modelStartLineIndex ? modelStart.column : 1);\r\n let viewLineEndIndex = line.getViewLineNumberOfModelPosition(0, this.model.getLineMaxColumn(modelLineIndex + 1));\r\n let count = viewLineEndIndex - viewLineStartIndex + 1;\r\n let option = 0 /* BlockNone */;\r\n if (count > 1 && line.getViewLineMinColumn(this.model, modelLineIndex + 1, viewLineEndIndex) === 1) {\r\n // wrapped lines should block indent guides\r\n option = (viewLineStartIndex === 0 ? 1 /* BlockSubsequent */ : 2 /* BlockAll */);\r\n }\r\n resultRepeatCount.push(count);\r\n resultRepeatOption.push(option);\r\n // merge into previous request\r\n if (reqStart === null) {\r\n reqStart = new Position(modelLineIndex + 1, 0);\r\n }\r\n }\r\n else {\r\n // hit invisible line => flush request\r\n if (reqStart !== null) {\r\n result = result.concat(this.model.getLinesIndentGuides(reqStart.lineNumber, modelLineIndex));\r\n reqStart = null;\r\n }\r\n }\r\n }\r\n if (reqStart !== null) {\r\n result = result.concat(this.model.getLinesIndentGuides(reqStart.lineNumber, modelEnd.lineNumber));\r\n reqStart = null;\r\n }\r\n const viewLineCount = viewEndLineNumber - viewStartLineNumber + 1;\r\n let viewIndents = new Array(viewLineCount);\r\n let currIndex = 0;\r\n for (let i = 0, len = result.length; i < len; i++) {\r\n let value = result[i];\r\n let count = Math.min(viewLineCount - currIndex, resultRepeatCount[i]);\r\n let option = resultRepeatOption[i];\r\n let blockAtIndex;\r\n if (option === 2 /* BlockAll */) {\r\n blockAtIndex = 0;\r\n }\r\n else if (option === 1 /* BlockSubsequent */) {\r\n blockAtIndex = 1;\r\n }\r\n else {\r\n blockAtIndex = count;\r\n }\r\n for (let j = 0; j < count; j++) {\r\n if (j === blockAtIndex) {\r\n value = 0;\r\n }\r\n viewIndents[currIndex++] = value;\r\n }\r\n }\r\n return viewIndents;\r\n }\r\n getViewLineContent(viewLineNumber) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n return this.lines[lineIndex].getViewLineContent(this.model, lineIndex + 1, remainder);\r\n }\r\n getViewLineLength(viewLineNumber) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n return this.lines[lineIndex].getViewLineLength(this.model, lineIndex + 1, remainder);\r\n }\r\n getViewLineMinColumn(viewLineNumber) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n return this.lines[lineIndex].getViewLineMinColumn(this.model, lineIndex + 1, remainder);\r\n }\r\n getViewLineMaxColumn(viewLineNumber) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n return this.lines[lineIndex].getViewLineMaxColumn(this.model, lineIndex + 1, remainder);\r\n }\r\n getViewLineData(viewLineNumber) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n return this.lines[lineIndex].getViewLineData(this.model, lineIndex + 1, remainder);\r\n }\r\n getViewLinesData(viewStartLineNumber, viewEndLineNumber, needed) {\r\n viewStartLineNumber = this._toValidViewLineNumber(viewStartLineNumber);\r\n viewEndLineNumber = this._toValidViewLineNumber(viewEndLineNumber);\r\n let start = this.prefixSumComputer.getIndexOf(viewStartLineNumber - 1);\r\n let viewLineNumber = viewStartLineNumber;\r\n let startModelLineIndex = start.index;\r\n let startRemainder = start.remainder;\r\n let result = [];\r\n for (let modelLineIndex = startModelLineIndex, len = this.model.getLineCount(); modelLineIndex < len; modelLineIndex++) {\r\n let line = this.lines[modelLineIndex];\r\n if (!line.isVisible()) {\r\n continue;\r\n }\r\n let fromViewLineIndex = (modelLineIndex === startModelLineIndex ? startRemainder : 0);\r\n let remainingViewLineCount = line.getViewLineCount() - fromViewLineIndex;\r\n let lastLine = false;\r\n if (viewLineNumber + remainingViewLineCount > viewEndLineNumber) {\r\n lastLine = true;\r\n remainingViewLineCount = viewEndLineNumber - viewLineNumber + 1;\r\n }\r\n let toViewLineIndex = fromViewLineIndex + remainingViewLineCount;\r\n line.getViewLinesData(this.model, modelLineIndex + 1, fromViewLineIndex, toViewLineIndex, viewLineNumber - viewStartLineNumber, needed, result);\r\n viewLineNumber += remainingViewLineCount;\r\n if (lastLine) {\r\n break;\r\n }\r\n }\r\n return result;\r\n }\r\n validateViewPosition(viewLineNumber, viewColumn, expectedModelPosition) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n let line = this.lines[lineIndex];\r\n let minColumn = line.getViewLineMinColumn(this.model, lineIndex + 1, remainder);\r\n let maxColumn = line.getViewLineMaxColumn(this.model, lineIndex + 1, remainder);\r\n if (viewColumn < minColumn) {\r\n viewColumn = minColumn;\r\n }\r\n if (viewColumn > maxColumn) {\r\n viewColumn = maxColumn;\r\n }\r\n let computedModelColumn = line.getModelColumnOfViewPosition(remainder, viewColumn);\r\n let computedModelPosition = this.model.validatePosition(new Position(lineIndex + 1, computedModelColumn));\r\n if (computedModelPosition.equals(expectedModelPosition)) {\r\n return new Position(viewLineNumber, viewColumn);\r\n }\r\n return this.convertModelPositionToViewPosition(expectedModelPosition.lineNumber, expectedModelPosition.column);\r\n }\r\n validateViewRange(viewRange, expectedModelRange) {\r\n const validViewStart = this.validateViewPosition(viewRange.startLineNumber, viewRange.startColumn, expectedModelRange.getStartPosition());\r\n const validViewEnd = this.validateViewPosition(viewRange.endLineNumber, viewRange.endColumn, expectedModelRange.getEndPosition());\r\n return new Range(validViewStart.lineNumber, validViewStart.column, validViewEnd.lineNumber, validViewEnd.column);\r\n }\r\n convertViewPositionToModelPosition(viewLineNumber, viewColumn) {\r\n viewLineNumber = this._toValidViewLineNumber(viewLineNumber);\r\n let r = this.prefixSumComputer.getIndexOf(viewLineNumber - 1);\r\n let lineIndex = r.index;\r\n let remainder = r.remainder;\r\n let inputColumn = this.lines[lineIndex].getModelColumnOfViewPosition(remainder, viewColumn);\r\n // console.log('out -> in ' + viewLineNumber + ',' + viewColumn + ' ===> ' + (lineIndex+1) + ',' + inputColumn);\r\n return this.model.validatePosition(new Position(lineIndex + 1, inputColumn));\r\n }\r\n convertViewRangeToModelRange(viewRange) {\r\n const start = this.convertViewPositionToModelPosition(viewRange.startLineNumber, viewRange.startColumn);\r\n const end = this.convertViewPositionToModelPosition(viewRange.endLineNumber, viewRange.endColumn);\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n convertModelPositionToViewPosition(_modelLineNumber, _modelColumn) {\r\n const validPosition = this.model.validatePosition(new Position(_modelLineNumber, _modelColumn));\r\n const inputLineNumber = validPosition.lineNumber;\r\n const inputColumn = validPosition.column;\r\n let lineIndex = inputLineNumber - 1, lineIndexChanged = false;\r\n while (lineIndex > 0 && !this.lines[lineIndex].isVisible()) {\r\n lineIndex--;\r\n lineIndexChanged = true;\r\n }\r\n if (lineIndex === 0 && !this.lines[lineIndex].isVisible()) {\r\n // Could not reach a real line\r\n // console.log('in -> out ' + inputLineNumber + ',' + inputColumn + ' ===> ' + 1 + ',' + 1);\r\n return new Position(1, 1);\r\n }\r\n const deltaLineNumber = 1 + (lineIndex === 0 ? 0 : this.prefixSumComputer.getAccumulatedValue(lineIndex - 1));\r\n let r;\r\n if (lineIndexChanged) {\r\n r = this.lines[lineIndex].getViewPositionOfModelPosition(deltaLineNumber, this.model.getLineMaxColumn(lineIndex + 1));\r\n }\r\n else {\r\n r = this.lines[inputLineNumber - 1].getViewPositionOfModelPosition(deltaLineNumber, inputColumn);\r\n }\r\n // console.log('in -> out ' + inputLineNumber + ',' + inputColumn + ' ===> ' + r.lineNumber + ',' + r);\r\n return r;\r\n }\r\n convertModelRangeToViewRange(modelRange) {\r\n let start = this.convertModelPositionToViewPosition(modelRange.startLineNumber, modelRange.startColumn);\r\n let end = this.convertModelPositionToViewPosition(modelRange.endLineNumber, modelRange.endColumn);\r\n if (modelRange.startLineNumber === modelRange.endLineNumber && start.lineNumber !== end.lineNumber) {\r\n // This is a single line range that ends up taking more lines due to wrapping\r\n if (end.column === this.getViewLineMinColumn(end.lineNumber)) {\r\n // the end column lands on the first column of the next line\r\n return new Range(start.lineNumber, start.column, end.lineNumber - 1, this.getViewLineMaxColumn(end.lineNumber - 1));\r\n }\r\n }\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n _getViewLineNumberForModelPosition(inputLineNumber, inputColumn) {\r\n let lineIndex = inputLineNumber - 1;\r\n if (this.lines[lineIndex].isVisible()) {\r\n // this model line is visible\r\n const deltaLineNumber = 1 + (lineIndex === 0 ? 0 : this.prefixSumComputer.getAccumulatedValue(lineIndex - 1));\r\n return this.lines[lineIndex].getViewLineNumberOfModelPosition(deltaLineNumber, inputColumn);\r\n }\r\n // this model line is not visible\r\n while (lineIndex > 0 && !this.lines[lineIndex].isVisible()) {\r\n lineIndex--;\r\n }\r\n if (lineIndex === 0 && !this.lines[lineIndex].isVisible()) {\r\n // Could not reach a real line\r\n return 1;\r\n }\r\n const deltaLineNumber = 1 + (lineIndex === 0 ? 0 : this.prefixSumComputer.getAccumulatedValue(lineIndex - 1));\r\n return this.lines[lineIndex].getViewLineNumberOfModelPosition(deltaLineNumber, this.model.getLineMaxColumn(lineIndex + 1));\r\n }\r\n getAllOverviewRulerDecorations(ownerId, filterOutValidation, theme) {\r\n const decorations = this.model.getOverviewRulerDecorations(ownerId, filterOutValidation);\r\n const result = new OverviewRulerDecorations();\r\n for (const decoration of decorations) {\r\n const opts = decoration.options.overviewRuler;\r\n const lane = opts ? opts.position : 0;\r\n if (lane === 0) {\r\n continue;\r\n }\r\n const color = opts.getColor(theme);\r\n const viewStartLineNumber = this._getViewLineNumberForModelPosition(decoration.range.startLineNumber, decoration.range.startColumn);\r\n const viewEndLineNumber = this._getViewLineNumberForModelPosition(decoration.range.endLineNumber, decoration.range.endColumn);\r\n result.accept(color, viewStartLineNumber, viewEndLineNumber, lane);\r\n }\r\n return result.result;\r\n }\r\n getDecorationsInRange(range, ownerId, filterOutValidation) {\r\n const modelStart = this.convertViewPositionToModelPosition(range.startLineNumber, range.startColumn);\r\n const modelEnd = this.convertViewPositionToModelPosition(range.endLineNumber, range.endColumn);\r\n if (modelEnd.lineNumber - modelStart.lineNumber <= range.endLineNumber - range.startLineNumber) {\r\n // most likely there are no hidden lines => fast path\r\n // fetch decorations from column 1 to cover the case of wrapped lines that have whole line decorations at column 1\r\n return this.model.getDecorationsInRange(new Range(modelStart.lineNumber, 1, modelEnd.lineNumber, modelEnd.column), ownerId, filterOutValidation);\r\n }\r\n let result = [];\r\n const modelStartLineIndex = modelStart.lineNumber - 1;\r\n const modelEndLineIndex = modelEnd.lineNumber - 1;\r\n let reqStart = null;\r\n for (let modelLineIndex = modelStartLineIndex; modelLineIndex <= modelEndLineIndex; modelLineIndex++) {\r\n const line = this.lines[modelLineIndex];\r\n if (line.isVisible()) {\r\n // merge into previous request\r\n if (reqStart === null) {\r\n reqStart = new Position(modelLineIndex + 1, modelLineIndex === modelStartLineIndex ? modelStart.column : 1);\r\n }\r\n }\r\n else {\r\n // hit invisible line => flush request\r\n if (reqStart !== null) {\r\n const maxLineColumn = this.model.getLineMaxColumn(modelLineIndex);\r\n result = result.concat(this.model.getDecorationsInRange(new Range(reqStart.lineNumber, reqStart.column, modelLineIndex, maxLineColumn), ownerId, filterOutValidation));\r\n reqStart = null;\r\n }\r\n }\r\n }\r\n if (reqStart !== null) {\r\n result = result.concat(this.model.getDecorationsInRange(new Range(reqStart.lineNumber, reqStart.column, modelEnd.lineNumber, modelEnd.column), ownerId, filterOutValidation));\r\n reqStart = null;\r\n }\r\n result.sort((a, b) => {\r\n const res = Range.compareRangesUsingStarts(a.range, b.range);\r\n if (res === 0) {\r\n if (a.id < b.id) {\r\n return -1;\r\n }\r\n if (a.id > b.id) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n return res;\r\n });\r\n // Eliminate duplicate decorations that might have intersected our visible ranges multiple times\r\n let finalResult = [], finalResultLen = 0;\r\n let prevDecId = null;\r\n for (const dec of result) {\r\n const decId = dec.id;\r\n if (prevDecId === decId) {\r\n // skip\r\n continue;\r\n }\r\n prevDecId = decId;\r\n finalResult[finalResultLen++] = dec;\r\n }\r\n return finalResult;\r\n }\r\n}\r\nclass VisibleIdentitySplitLine {\r\n constructor() { }\r\n isVisible() {\r\n return true;\r\n }\r\n setVisible(isVisible) {\r\n if (isVisible) {\r\n return this;\r\n }\r\n return InvisibleIdentitySplitLine.INSTANCE;\r\n }\r\n getLineBreakData() {\r\n return null;\r\n }\r\n getViewLineCount() {\r\n return 1;\r\n }\r\n getViewLineContent(model, modelLineNumber, _outputLineIndex) {\r\n return model.getLineContent(modelLineNumber);\r\n }\r\n getViewLineLength(model, modelLineNumber, _outputLineIndex) {\r\n return model.getLineLength(modelLineNumber);\r\n }\r\n getViewLineMinColumn(model, modelLineNumber, _outputLineIndex) {\r\n return model.getLineMinColumn(modelLineNumber);\r\n }\r\n getViewLineMaxColumn(model, modelLineNumber, _outputLineIndex) {\r\n return model.getLineMaxColumn(modelLineNumber);\r\n }\r\n getViewLineData(model, modelLineNumber, _outputLineIndex) {\r\n let lineTokens = model.getLineTokens(modelLineNumber);\r\n let lineContent = lineTokens.getLineContent();\r\n return new ViewLineData(lineContent, false, 1, lineContent.length + 1, 0, lineTokens.inflate());\r\n }\r\n getViewLinesData(model, modelLineNumber, _fromOuputLineIndex, _toOutputLineIndex, globalStartIndex, needed, result) {\r\n if (!needed[globalStartIndex]) {\r\n result[globalStartIndex] = null;\r\n return;\r\n }\r\n result[globalStartIndex] = this.getViewLineData(model, modelLineNumber, 0);\r\n }\r\n getModelColumnOfViewPosition(_outputLineIndex, outputColumn) {\r\n return outputColumn;\r\n }\r\n getViewPositionOfModelPosition(deltaLineNumber, inputColumn) {\r\n return new Position(deltaLineNumber, inputColumn);\r\n }\r\n getViewLineNumberOfModelPosition(deltaLineNumber, _inputColumn) {\r\n return deltaLineNumber;\r\n }\r\n}\r\nVisibleIdentitySplitLine.INSTANCE = new VisibleIdentitySplitLine();\r\nclass InvisibleIdentitySplitLine {\r\n constructor() { }\r\n isVisible() {\r\n return false;\r\n }\r\n setVisible(isVisible) {\r\n if (!isVisible) {\r\n return this;\r\n }\r\n return VisibleIdentitySplitLine.INSTANCE;\r\n }\r\n getLineBreakData() {\r\n return null;\r\n }\r\n getViewLineCount() {\r\n return 0;\r\n }\r\n getViewLineContent(_model, _modelLineNumber, _outputLineIndex) {\r\n throw new Error('Not supported');\r\n }\r\n getViewLineLength(_model, _modelLineNumber, _outputLineIndex) {\r\n throw new Error('Not supported');\r\n }\r\n getViewLineMinColumn(_model, _modelLineNumber, _outputLineIndex) {\r\n throw new Error('Not supported');\r\n }\r\n getViewLineMaxColumn(_model, _modelLineNumber, _outputLineIndex) {\r\n throw new Error('Not supported');\r\n }\r\n getViewLineData(_model, _modelLineNumber, _outputLineIndex) {\r\n throw new Error('Not supported');\r\n }\r\n getViewLinesData(_model, _modelLineNumber, _fromOuputLineIndex, _toOutputLineIndex, _globalStartIndex, _needed, _result) {\r\n throw new Error('Not supported');\r\n }\r\n getModelColumnOfViewPosition(_outputLineIndex, _outputColumn) {\r\n throw new Error('Not supported');\r\n }\r\n getViewPositionOfModelPosition(_deltaLineNumber, _inputColumn) {\r\n throw new Error('Not supported');\r\n }\r\n getViewLineNumberOfModelPosition(_deltaLineNumber, _inputColumn) {\r\n throw new Error('Not supported');\r\n }\r\n}\r\nInvisibleIdentitySplitLine.INSTANCE = new InvisibleIdentitySplitLine();\r\nexport class SplitLine {\r\n constructor(lineBreakData, isVisible) {\r\n this._lineBreakData = lineBreakData;\r\n this._isVisible = isVisible;\r\n }\r\n isVisible() {\r\n return this._isVisible;\r\n }\r\n setVisible(isVisible) {\r\n this._isVisible = isVisible;\r\n return this;\r\n }\r\n getLineBreakData() {\r\n return this._lineBreakData;\r\n }\r\n getViewLineCount() {\r\n if (!this._isVisible) {\r\n return 0;\r\n }\r\n return this._lineBreakData.breakOffsets.length;\r\n }\r\n getInputStartOffsetOfOutputLineIndex(outputLineIndex) {\r\n return LineBreakData.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets, outputLineIndex, 0);\r\n }\r\n getInputEndOffsetOfOutputLineIndex(model, modelLineNumber, outputLineIndex) {\r\n if (outputLineIndex + 1 === this._lineBreakData.breakOffsets.length) {\r\n return model.getLineMaxColumn(modelLineNumber) - 1;\r\n }\r\n return LineBreakData.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets, outputLineIndex + 1, 0);\r\n }\r\n getViewLineContent(model, modelLineNumber, outputLineIndex) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n let startOffset = this.getInputStartOffsetOfOutputLineIndex(outputLineIndex);\r\n let endOffset = this.getInputEndOffsetOfOutputLineIndex(model, modelLineNumber, outputLineIndex);\r\n let r = model.getValueInRange({\r\n startLineNumber: modelLineNumber,\r\n startColumn: startOffset + 1,\r\n endLineNumber: modelLineNumber,\r\n endColumn: endOffset + 1\r\n });\r\n if (outputLineIndex > 0) {\r\n r = spaces(this._lineBreakData.wrappedTextIndentLength) + r;\r\n }\r\n return r;\r\n }\r\n getViewLineLength(model, modelLineNumber, outputLineIndex) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n let startOffset = this.getInputStartOffsetOfOutputLineIndex(outputLineIndex);\r\n let endOffset = this.getInputEndOffsetOfOutputLineIndex(model, modelLineNumber, outputLineIndex);\r\n let r = endOffset - startOffset;\r\n if (outputLineIndex > 0) {\r\n r = this._lineBreakData.wrappedTextIndentLength + r;\r\n }\r\n return r;\r\n }\r\n getViewLineMinColumn(_model, _modelLineNumber, outputLineIndex) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n if (outputLineIndex > 0) {\r\n return this._lineBreakData.wrappedTextIndentLength + 1;\r\n }\r\n return 1;\r\n }\r\n getViewLineMaxColumn(model, modelLineNumber, outputLineIndex) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n return this.getViewLineContent(model, modelLineNumber, outputLineIndex).length + 1;\r\n }\r\n getViewLineData(model, modelLineNumber, outputLineIndex) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n let startOffset = this.getInputStartOffsetOfOutputLineIndex(outputLineIndex);\r\n let endOffset = this.getInputEndOffsetOfOutputLineIndex(model, modelLineNumber, outputLineIndex);\r\n let lineContent = model.getValueInRange({\r\n startLineNumber: modelLineNumber,\r\n startColumn: startOffset + 1,\r\n endLineNumber: modelLineNumber,\r\n endColumn: endOffset + 1\r\n });\r\n if (outputLineIndex > 0) {\r\n lineContent = spaces(this._lineBreakData.wrappedTextIndentLength) + lineContent;\r\n }\r\n let minColumn = (outputLineIndex > 0 ? this._lineBreakData.wrappedTextIndentLength + 1 : 1);\r\n let maxColumn = lineContent.length + 1;\r\n let continuesWithWrappedLine = (outputLineIndex + 1 < this.getViewLineCount());\r\n let deltaStartIndex = 0;\r\n if (outputLineIndex > 0) {\r\n deltaStartIndex = this._lineBreakData.wrappedTextIndentLength;\r\n }\r\n let lineTokens = model.getLineTokens(modelLineNumber);\r\n const startVisibleColumn = (outputLineIndex === 0 ? 0 : this._lineBreakData.breakOffsetsVisibleColumn[outputLineIndex - 1]);\r\n return new ViewLineData(lineContent, continuesWithWrappedLine, minColumn, maxColumn, startVisibleColumn, lineTokens.sliceAndInflate(startOffset, endOffset, deltaStartIndex));\r\n }\r\n getViewLinesData(model, modelLineNumber, fromOuputLineIndex, toOutputLineIndex, globalStartIndex, needed, result) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n for (let outputLineIndex = fromOuputLineIndex; outputLineIndex < toOutputLineIndex; outputLineIndex++) {\r\n let globalIndex = globalStartIndex + outputLineIndex - fromOuputLineIndex;\r\n if (!needed[globalIndex]) {\r\n result[globalIndex] = null;\r\n continue;\r\n }\r\n result[globalIndex] = this.getViewLineData(model, modelLineNumber, outputLineIndex);\r\n }\r\n }\r\n getModelColumnOfViewPosition(outputLineIndex, outputColumn) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n let adjustedColumn = outputColumn - 1;\r\n if (outputLineIndex > 0) {\r\n if (adjustedColumn < this._lineBreakData.wrappedTextIndentLength) {\r\n adjustedColumn = 0;\r\n }\r\n else {\r\n adjustedColumn -= this._lineBreakData.wrappedTextIndentLength;\r\n }\r\n }\r\n return LineBreakData.getInputOffsetOfOutputPosition(this._lineBreakData.breakOffsets, outputLineIndex, adjustedColumn) + 1;\r\n }\r\n getViewPositionOfModelPosition(deltaLineNumber, inputColumn) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n let r = LineBreakData.getOutputPositionOfInputOffset(this._lineBreakData.breakOffsets, inputColumn - 1);\r\n let outputLineIndex = r.outputLineIndex;\r\n let outputColumn = r.outputOffset + 1;\r\n if (outputLineIndex > 0) {\r\n outputColumn += this._lineBreakData.wrappedTextIndentLength;\r\n }\r\n //\t\tconsole.log('in -> out ' + deltaLineNumber + ',' + inputColumn + ' ===> ' + (deltaLineNumber+outputLineIndex) + ',' + outputColumn);\r\n return new Position(deltaLineNumber + outputLineIndex, outputColumn);\r\n }\r\n getViewLineNumberOfModelPosition(deltaLineNumber, inputColumn) {\r\n if (!this._isVisible) {\r\n throw new Error('Not supported');\r\n }\r\n const r = LineBreakData.getOutputPositionOfInputOffset(this._lineBreakData.breakOffsets, inputColumn - 1);\r\n return (deltaLineNumber + r.outputLineIndex);\r\n }\r\n}\r\nlet _spaces = [''];\r\nfunction spaces(count) {\r\n if (count >= _spaces.length) {\r\n for (let i = 1; i <= count; i++) {\r\n _spaces[i] = _makeSpaces(i);\r\n }\r\n }\r\n return _spaces[count];\r\n}\r\nfunction _makeSpaces(count) {\r\n return new Array(count + 1).join(' ');\r\n}\r\nfunction createSplitLine(lineBreakData, isVisible) {\r\n if (lineBreakData === null) {\r\n // No mapping needed\r\n if (isVisible) {\r\n return VisibleIdentitySplitLine.INSTANCE;\r\n }\r\n return InvisibleIdentitySplitLine.INSTANCE;\r\n }\r\n else {\r\n return new SplitLine(lineBreakData, isVisible);\r\n }\r\n}\r\nexport class IdentityCoordinatesConverter {\r\n constructor(lines) {\r\n this._lines = lines;\r\n }\r\n _validPosition(pos) {\r\n return this._lines.model.validatePosition(pos);\r\n }\r\n _validRange(range) {\r\n return this._lines.model.validateRange(range);\r\n }\r\n // View -> Model conversion and related methods\r\n convertViewPositionToModelPosition(viewPosition) {\r\n return this._validPosition(viewPosition);\r\n }\r\n convertViewRangeToModelRange(viewRange) {\r\n return this._validRange(viewRange);\r\n }\r\n validateViewPosition(_viewPosition, expectedModelPosition) {\r\n return this._validPosition(expectedModelPosition);\r\n }\r\n validateViewRange(_viewRange, expectedModelRange) {\r\n return this._validRange(expectedModelRange);\r\n }\r\n // Model -> View conversion and related methods\r\n convertModelPositionToViewPosition(modelPosition) {\r\n return this._validPosition(modelPosition);\r\n }\r\n convertModelRangeToViewRange(modelRange) {\r\n return this._validRange(modelRange);\r\n }\r\n modelPositionIsVisible(modelPosition) {\r\n const lineCount = this._lines.model.getLineCount();\r\n if (modelPosition.lineNumber < 1 || modelPosition.lineNumber > lineCount) {\r\n // invalid arguments\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\nexport class IdentityLinesCollection {\r\n constructor(model) {\r\n this.model = model;\r\n }\r\n dispose() {\r\n }\r\n createCoordinatesConverter() {\r\n return new IdentityCoordinatesConverter(this);\r\n }\r\n getHiddenAreas() {\r\n return [];\r\n }\r\n setHiddenAreas(_ranges) {\r\n return false;\r\n }\r\n setTabSize(_newTabSize) {\r\n return false;\r\n }\r\n setWrappingSettings(_fontInfo, _wrappingStrategy, _wrappingColumn, _wrappingIndent) {\r\n return false;\r\n }\r\n createLineBreaksComputer() {\r\n let result = [];\r\n return {\r\n addRequest: (lineText, previousLineBreakData) => {\r\n result.push(null);\r\n },\r\n finalize: () => {\r\n return result;\r\n }\r\n };\r\n }\r\n onModelFlushed() {\r\n }\r\n onModelLinesDeleted(_versionId, fromLineNumber, toLineNumber) {\r\n return new viewEvents.ViewLinesDeletedEvent(fromLineNumber, toLineNumber);\r\n }\r\n onModelLinesInserted(_versionId, fromLineNumber, toLineNumber, lineBreaks) {\r\n return new viewEvents.ViewLinesInsertedEvent(fromLineNumber, toLineNumber);\r\n }\r\n onModelLineChanged(_versionId, lineNumber, lineBreakData) {\r\n return [false, new viewEvents.ViewLinesChangedEvent(lineNumber, lineNumber), null, null];\r\n }\r\n acceptVersionId(_versionId) {\r\n }\r\n getViewLineCount() {\r\n return this.model.getLineCount();\r\n }\r\n getActiveIndentGuide(viewLineNumber, _minLineNumber, _maxLineNumber) {\r\n return {\r\n startLineNumber: viewLineNumber,\r\n endLineNumber: viewLineNumber,\r\n indent: 0\r\n };\r\n }\r\n getViewLinesIndentGuides(viewStartLineNumber, viewEndLineNumber) {\r\n const viewLineCount = viewEndLineNumber - viewStartLineNumber + 1;\r\n let result = new Array(viewLineCount);\r\n for (let i = 0; i < viewLineCount; i++) {\r\n result[i] = 0;\r\n }\r\n return result;\r\n }\r\n getViewLineContent(viewLineNumber) {\r\n return this.model.getLineContent(viewLineNumber);\r\n }\r\n getViewLineLength(viewLineNumber) {\r\n return this.model.getLineLength(viewLineNumber);\r\n }\r\n getViewLineMinColumn(viewLineNumber) {\r\n return this.model.getLineMinColumn(viewLineNumber);\r\n }\r\n getViewLineMaxColumn(viewLineNumber) {\r\n return this.model.getLineMaxColumn(viewLineNumber);\r\n }\r\n getViewLineData(viewLineNumber) {\r\n let lineTokens = this.model.getLineTokens(viewLineNumber);\r\n let lineContent = lineTokens.getLineContent();\r\n return new ViewLineData(lineContent, false, 1, lineContent.length + 1, 0, lineTokens.inflate());\r\n }\r\n getViewLinesData(viewStartLineNumber, viewEndLineNumber, needed) {\r\n const lineCount = this.model.getLineCount();\r\n viewStartLineNumber = Math.min(Math.max(1, viewStartLineNumber), lineCount);\r\n viewEndLineNumber = Math.min(Math.max(1, viewEndLineNumber), lineCount);\r\n let result = [];\r\n for (let lineNumber = viewStartLineNumber; lineNumber <= viewEndLineNumber; lineNumber++) {\r\n let idx = lineNumber - viewStartLineNumber;\r\n if (!needed[idx]) {\r\n result[idx] = null;\r\n }\r\n result[idx] = this.getViewLineData(lineNumber);\r\n }\r\n return result;\r\n }\r\n getAllOverviewRulerDecorations(ownerId, filterOutValidation, theme) {\r\n const decorations = this.model.getOverviewRulerDecorations(ownerId, filterOutValidation);\r\n const result = new OverviewRulerDecorations();\r\n for (const decoration of decorations) {\r\n const opts = decoration.options.overviewRuler;\r\n const lane = opts ? opts.position : 0;\r\n if (lane === 0) {\r\n continue;\r\n }\r\n const color = opts.getColor(theme);\r\n const viewStartLineNumber = decoration.range.startLineNumber;\r\n const viewEndLineNumber = decoration.range.endLineNumber;\r\n result.accept(color, viewStartLineNumber, viewEndLineNumber, lane);\r\n }\r\n return result.result;\r\n }\r\n getDecorationsInRange(range, ownerId, filterOutValidation) {\r\n return this.model.getDecorationsInRange(range, ownerId, filterOutValidation);\r\n }\r\n}\r\nclass OverviewRulerDecorations {\r\n constructor() {\r\n this.result = Object.create(null);\r\n }\r\n accept(color, startLineNumber, endLineNumber, lane) {\r\n let prev = this.result[color];\r\n if (prev) {\r\n const prevLane = prev[prev.length - 3];\r\n const prevEndLineNumber = prev[prev.length - 1];\r\n if (prevLane === lane && prevEndLineNumber + 1 >= startLineNumber) {\r\n // merge into prev\r\n if (endLineNumber > prevEndLineNumber) {\r\n prev[prev.length - 1] = endLineNumber;\r\n }\r\n return;\r\n }\r\n // push\r\n prev.push(lane, startLineNumber, endLineNumber);\r\n }\r\n else {\r\n this.result[color] = [lane, startLineNumber, endLineNumber];\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class ViewEventHandler extends Disposable {\r\n constructor() {\r\n super();\r\n this._shouldRender = true;\r\n }\r\n shouldRender() {\r\n return this._shouldRender;\r\n }\r\n forceShouldRender() {\r\n this._shouldRender = true;\r\n }\r\n setShouldRender() {\r\n this._shouldRender = true;\r\n }\r\n onDidRender() {\r\n this._shouldRender = false;\r\n }\r\n // --- begin event handlers\r\n onConfigurationChanged(e) {\r\n return false;\r\n }\r\n onCursorStateChanged(e) {\r\n return false;\r\n }\r\n onDecorationsChanged(e) {\r\n return false;\r\n }\r\n onFlushed(e) {\r\n return false;\r\n }\r\n onFocusChanged(e) {\r\n return false;\r\n }\r\n onLanguageConfigurationChanged(e) {\r\n return false;\r\n }\r\n onLineMappingChanged(e) {\r\n return false;\r\n }\r\n onLinesChanged(e) {\r\n return false;\r\n }\r\n onLinesDeleted(e) {\r\n return false;\r\n }\r\n onLinesInserted(e) {\r\n return false;\r\n }\r\n onRevealRangeRequest(e) {\r\n return false;\r\n }\r\n onScrollChanged(e) {\r\n return false;\r\n }\r\n onThemeChanged(e) {\r\n return false;\r\n }\r\n onTokensChanged(e) {\r\n return false;\r\n }\r\n onTokensColorsChanged(e) {\r\n return false;\r\n }\r\n onZonesChanged(e) {\r\n return false;\r\n }\r\n // --- end event handlers\r\n handleEvents(events) {\r\n let shouldRender = false;\r\n for (let i = 0, len = events.length; i < len; i++) {\r\n let e = events[i];\r\n switch (e.type) {\r\n case 0 /* ViewConfigurationChanged */:\r\n if (this.onConfigurationChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 1 /* ViewCursorStateChanged */:\r\n if (this.onCursorStateChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 2 /* ViewDecorationsChanged */:\r\n if (this.onDecorationsChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 3 /* ViewFlushed */:\r\n if (this.onFlushed(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 4 /* ViewFocusChanged */:\r\n if (this.onFocusChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 5 /* ViewLanguageConfigurationChanged */:\r\n if (this.onLanguageConfigurationChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 6 /* ViewLineMappingChanged */:\r\n if (this.onLineMappingChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 7 /* ViewLinesChanged */:\r\n if (this.onLinesChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 8 /* ViewLinesDeleted */:\r\n if (this.onLinesDeleted(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 9 /* ViewLinesInserted */:\r\n if (this.onLinesInserted(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 10 /* ViewRevealRangeRequest */:\r\n if (this.onRevealRangeRequest(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 11 /* ViewScrollChanged */:\r\n if (this.onScrollChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 13 /* ViewTokensChanged */:\r\n if (this.onTokensChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 12 /* ViewThemeChanged */:\r\n if (this.onThemeChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 14 /* ViewTokensColorsChanged */:\r\n if (this.onTokensColorsChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n case 15 /* ViewZonesChanged */:\r\n if (this.onZonesChanged(e)) {\r\n shouldRender = true;\r\n }\r\n break;\r\n default:\r\n console.info('View received unknown event: ');\r\n console.info(e);\r\n }\r\n }\r\n if (shouldRender) {\r\n this._shouldRender = true;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nexport class Viewport {\r\n constructor(top, left, width, height) {\r\n this.top = top | 0;\r\n this.left = left | 0;\r\n this.width = width | 0;\r\n this.height = height | 0;\r\n }\r\n}\r\nexport class MinimapLinesRenderingData {\r\n constructor(tabSize, data) {\r\n this.tabSize = tabSize;\r\n this.data = data;\r\n }\r\n}\r\nexport class ViewLineData {\r\n constructor(content, continuesWithWrappedLine, minColumn, maxColumn, startVisibleColumn, tokens) {\r\n this.content = content;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.minColumn = minColumn;\r\n this.maxColumn = maxColumn;\r\n this.startVisibleColumn = startVisibleColumn;\r\n this.tokens = tokens;\r\n }\r\n}\r\nexport class ViewLineRenderingData {\r\n constructor(minColumn, maxColumn, content, continuesWithWrappedLine, mightContainRTL, mightContainNonBasicASCII, tokens, inlineDecorations, tabSize, startVisibleColumn) {\r\n this.minColumn = minColumn;\r\n this.maxColumn = maxColumn;\r\n this.content = content;\r\n this.continuesWithWrappedLine = continuesWithWrappedLine;\r\n this.isBasicASCII = ViewLineRenderingData.isBasicASCII(content, mightContainNonBasicASCII);\r\n this.containsRTL = ViewLineRenderingData.containsRTL(content, this.isBasicASCII, mightContainRTL);\r\n this.tokens = tokens;\r\n this.inlineDecorations = inlineDecorations;\r\n this.tabSize = tabSize;\r\n this.startVisibleColumn = startVisibleColumn;\r\n }\r\n static isBasicASCII(lineContent, mightContainNonBasicASCII) {\r\n if (mightContainNonBasicASCII) {\r\n return strings.isBasicASCII(lineContent);\r\n }\r\n return true;\r\n }\r\n static containsRTL(lineContent, isBasicASCII, mightContainRTL) {\r\n if (!isBasicASCII && mightContainRTL) {\r\n return strings.containsRTL(lineContent);\r\n }\r\n return false;\r\n }\r\n}\r\nexport class InlineDecoration {\r\n constructor(range, inlineClassName, type) {\r\n this.range = range;\r\n this.inlineClassName = inlineClassName;\r\n this.type = type;\r\n }\r\n}\r\nexport class ViewModelDecoration {\r\n constructor(range, options) {\r\n this.range = range;\r\n this.options = options;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { InlineDecoration, ViewModelDecoration } from './viewModel.js';\r\nimport { filterValidationDecorations } from '../config/editorOptions.js';\r\nexport class ViewModelDecorations {\r\n constructor(editorId, model, configuration, linesCollection, coordinatesConverter) {\r\n this.editorId = editorId;\r\n this.model = model;\r\n this.configuration = configuration;\r\n this._linesCollection = linesCollection;\r\n this._coordinatesConverter = coordinatesConverter;\r\n this._decorationsCache = Object.create(null);\r\n this._cachedModelDecorationsResolver = null;\r\n this._cachedModelDecorationsResolverViewRange = null;\r\n }\r\n _clearCachedModelDecorationsResolver() {\r\n this._cachedModelDecorationsResolver = null;\r\n this._cachedModelDecorationsResolverViewRange = null;\r\n }\r\n dispose() {\r\n this._decorationsCache = Object.create(null);\r\n this._clearCachedModelDecorationsResolver();\r\n }\r\n reset() {\r\n this._decorationsCache = Object.create(null);\r\n this._clearCachedModelDecorationsResolver();\r\n }\r\n onModelDecorationsChanged() {\r\n this._decorationsCache = Object.create(null);\r\n this._clearCachedModelDecorationsResolver();\r\n }\r\n onLineMappingChanged() {\r\n this._decorationsCache = Object.create(null);\r\n this._clearCachedModelDecorationsResolver();\r\n }\r\n _getOrCreateViewModelDecoration(modelDecoration) {\r\n const id = modelDecoration.id;\r\n let r = this._decorationsCache[id];\r\n if (!r) {\r\n const modelRange = modelDecoration.range;\r\n const options = modelDecoration.options;\r\n let viewRange;\r\n if (options.isWholeLine) {\r\n const start = this._coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.startLineNumber, 1));\r\n const end = this._coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.endLineNumber, this.model.getLineMaxColumn(modelRange.endLineNumber)));\r\n viewRange = new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n else {\r\n viewRange = this._coordinatesConverter.convertModelRangeToViewRange(modelRange);\r\n }\r\n r = new ViewModelDecoration(viewRange, options);\r\n this._decorationsCache[id] = r;\r\n }\r\n return r;\r\n }\r\n getDecorationsViewportData(viewRange) {\r\n let cacheIsValid = (this._cachedModelDecorationsResolver !== null);\r\n cacheIsValid = cacheIsValid && (viewRange.equalsRange(this._cachedModelDecorationsResolverViewRange));\r\n if (!cacheIsValid) {\r\n this._cachedModelDecorationsResolver = this._getDecorationsViewportData(viewRange);\r\n this._cachedModelDecorationsResolverViewRange = viewRange;\r\n }\r\n return this._cachedModelDecorationsResolver;\r\n }\r\n _getDecorationsViewportData(viewportRange) {\r\n const modelDecorations = this._linesCollection.getDecorationsInRange(viewportRange, this.editorId, filterValidationDecorations(this.configuration.options));\r\n const startLineNumber = viewportRange.startLineNumber;\r\n const endLineNumber = viewportRange.endLineNumber;\r\n let decorationsInViewport = [], decorationsInViewportLen = 0;\r\n let inlineDecorations = [];\r\n for (let j = startLineNumber; j <= endLineNumber; j++) {\r\n inlineDecorations[j - startLineNumber] = [];\r\n }\r\n for (let i = 0, len = modelDecorations.length; i < len; i++) {\r\n let modelDecoration = modelDecorations[i];\r\n let decorationOptions = modelDecoration.options;\r\n let viewModelDecoration = this._getOrCreateViewModelDecoration(modelDecoration);\r\n let viewRange = viewModelDecoration.range;\r\n decorationsInViewport[decorationsInViewportLen++] = viewModelDecoration;\r\n if (decorationOptions.inlineClassName) {\r\n let inlineDecoration = new InlineDecoration(viewRange, decorationOptions.inlineClassName, decorationOptions.inlineClassNameAffectsLetterSpacing ? 3 /* RegularAffectingLetterSpacing */ : 0 /* Regular */);\r\n let intersectedStartLineNumber = Math.max(startLineNumber, viewRange.startLineNumber);\r\n let intersectedEndLineNumber = Math.min(endLineNumber, viewRange.endLineNumber);\r\n for (let j = intersectedStartLineNumber; j <= intersectedEndLineNumber; j++) {\r\n inlineDecorations[j - startLineNumber].push(inlineDecoration);\r\n }\r\n }\r\n if (decorationOptions.beforeContentClassName) {\r\n if (startLineNumber <= viewRange.startLineNumber && viewRange.startLineNumber <= endLineNumber) {\r\n let inlineDecoration = new InlineDecoration(new Range(viewRange.startLineNumber, viewRange.startColumn, viewRange.startLineNumber, viewRange.startColumn), decorationOptions.beforeContentClassName, 1 /* Before */);\r\n inlineDecorations[viewRange.startLineNumber - startLineNumber].push(inlineDecoration);\r\n }\r\n }\r\n if (decorationOptions.afterContentClassName) {\r\n if (startLineNumber <= viewRange.endLineNumber && viewRange.endLineNumber <= endLineNumber) {\r\n let inlineDecoration = new InlineDecoration(new Range(viewRange.endLineNumber, viewRange.endColumn, viewRange.endLineNumber, viewRange.endColumn), decorationOptions.afterContentClassName, 2 /* After */);\r\n inlineDecorations[viewRange.endLineNumber - startLineNumber].push(inlineDecoration);\r\n }\r\n }\r\n }\r\n return {\r\n decorations: decorationsInViewport,\r\n inlineDecorations: inlineDecorations\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class ViewModelEventDispatcher extends Disposable {\r\n constructor() {\r\n super();\r\n this._onEvent = this._register(new Emitter());\r\n this.onEvent = this._onEvent.event;\r\n this._eventHandlers = [];\r\n this._viewEventQueue = null;\r\n this._isConsumingViewEventQueue = false;\r\n this._collector = null;\r\n this._collectorCnt = 0;\r\n this._outgoingEvents = [];\r\n }\r\n emitOutgoingEvent(e) {\r\n this._addOutgoingEvent(e);\r\n this._emitOugoingEvents();\r\n }\r\n _addOutgoingEvent(e) {\r\n for (let i = 0, len = this._outgoingEvents.length; i < len; i++) {\r\n if (this._outgoingEvents[i].kind === e.kind) {\r\n this._outgoingEvents[i] = this._outgoingEvents[i].merge(e);\r\n return;\r\n }\r\n }\r\n // not merged\r\n this._outgoingEvents.push(e);\r\n }\r\n _emitOugoingEvents() {\r\n while (this._outgoingEvents.length > 0) {\r\n if (this._collector || this._isConsumingViewEventQueue) {\r\n // right now collecting or emitting view events, so let's postpone emitting\r\n return;\r\n }\r\n const event = this._outgoingEvents.shift();\r\n if (event.isNoOp()) {\r\n continue;\r\n }\r\n this._onEvent.fire(event);\r\n }\r\n }\r\n addViewEventHandler(eventHandler) {\r\n for (let i = 0, len = this._eventHandlers.length; i < len; i++) {\r\n if (this._eventHandlers[i] === eventHandler) {\r\n console.warn('Detected duplicate listener in ViewEventDispatcher', eventHandler);\r\n }\r\n }\r\n this._eventHandlers.push(eventHandler);\r\n }\r\n removeViewEventHandler(eventHandler) {\r\n for (let i = 0; i < this._eventHandlers.length; i++) {\r\n if (this._eventHandlers[i] === eventHandler) {\r\n this._eventHandlers.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n beginEmitViewEvents() {\r\n this._collectorCnt++;\r\n if (this._collectorCnt === 1) {\r\n this._collector = new ViewModelEventsCollector();\r\n }\r\n return this._collector;\r\n }\r\n endEmitViewEvents() {\r\n this._collectorCnt--;\r\n if (this._collectorCnt === 0) {\r\n const outgoingEvents = this._collector.outgoingEvents;\r\n const viewEvents = this._collector.viewEvents;\r\n this._collector = null;\r\n for (const outgoingEvent of outgoingEvents) {\r\n this._addOutgoingEvent(outgoingEvent);\r\n }\r\n if (viewEvents.length > 0) {\r\n this._emitMany(viewEvents);\r\n }\r\n }\r\n this._emitOugoingEvents();\r\n }\r\n emitSingleViewEvent(event) {\r\n try {\r\n const eventsCollector = this.beginEmitViewEvents();\r\n eventsCollector.emitViewEvent(event);\r\n }\r\n finally {\r\n this.endEmitViewEvents();\r\n }\r\n }\r\n _emitMany(events) {\r\n if (this._viewEventQueue) {\r\n this._viewEventQueue = this._viewEventQueue.concat(events);\r\n }\r\n else {\r\n this._viewEventQueue = events;\r\n }\r\n if (!this._isConsumingViewEventQueue) {\r\n this._consumeViewEventQueue();\r\n }\r\n }\r\n _consumeViewEventQueue() {\r\n try {\r\n this._isConsumingViewEventQueue = true;\r\n this._doConsumeQueue();\r\n }\r\n finally {\r\n this._isConsumingViewEventQueue = false;\r\n }\r\n }\r\n _doConsumeQueue() {\r\n while (this._viewEventQueue) {\r\n // Empty event queue, as events might come in while sending these off\r\n const events = this._viewEventQueue;\r\n this._viewEventQueue = null;\r\n // Use a clone of the event handlers list, as they might remove themselves\r\n const eventHandlers = this._eventHandlers.slice(0);\r\n for (const eventHandler of eventHandlers) {\r\n eventHandler.handleEvents(events);\r\n }\r\n }\r\n }\r\n}\r\nexport class ViewModelEventsCollector {\r\n constructor() {\r\n this.viewEvents = [];\r\n this.outgoingEvents = [];\r\n }\r\n emitViewEvent(event) {\r\n this.viewEvents.push(event);\r\n }\r\n emitOutgoingEvent(e) {\r\n this.outgoingEvents.push(e);\r\n }\r\n}\r\nexport class ContentSizeChangedEvent {\r\n constructor(oldContentWidth, oldContentHeight, contentWidth, contentHeight) {\r\n this.kind = 0 /* ContentSizeChanged */;\r\n this._oldContentWidth = oldContentWidth;\r\n this._oldContentHeight = oldContentHeight;\r\n this.contentWidth = contentWidth;\r\n this.contentHeight = contentHeight;\r\n this.contentWidthChanged = (this._oldContentWidth !== this.contentWidth);\r\n this.contentHeightChanged = (this._oldContentHeight !== this.contentHeight);\r\n }\r\n isNoOp() {\r\n return (!this.contentWidthChanged && !this.contentHeightChanged);\r\n }\r\n merge(other) {\r\n if (other.kind !== 0 /* ContentSizeChanged */) {\r\n return this;\r\n }\r\n return new ContentSizeChangedEvent(this._oldContentWidth, this._oldContentHeight, other.contentWidth, other.contentHeight);\r\n }\r\n}\r\nexport class FocusChangedEvent {\r\n constructor(oldHasFocus, hasFocus) {\r\n this.kind = 1 /* FocusChanged */;\r\n this.oldHasFocus = oldHasFocus;\r\n this.hasFocus = hasFocus;\r\n }\r\n isNoOp() {\r\n return (this.oldHasFocus === this.hasFocus);\r\n }\r\n merge(other) {\r\n if (other.kind !== 1 /* FocusChanged */) {\r\n return this;\r\n }\r\n return new FocusChangedEvent(this.oldHasFocus, other.hasFocus);\r\n }\r\n}\r\nexport class ScrollChangedEvent {\r\n constructor(oldScrollWidth, oldScrollLeft, oldScrollHeight, oldScrollTop, scrollWidth, scrollLeft, scrollHeight, scrollTop) {\r\n this.kind = 2 /* ScrollChanged */;\r\n this._oldScrollWidth = oldScrollWidth;\r\n this._oldScrollLeft = oldScrollLeft;\r\n this._oldScrollHeight = oldScrollHeight;\r\n this._oldScrollTop = oldScrollTop;\r\n this.scrollWidth = scrollWidth;\r\n this.scrollLeft = scrollLeft;\r\n this.scrollHeight = scrollHeight;\r\n this.scrollTop = scrollTop;\r\n this.scrollWidthChanged = (this._oldScrollWidth !== this.scrollWidth);\r\n this.scrollLeftChanged = (this._oldScrollLeft !== this.scrollLeft);\r\n this.scrollHeightChanged = (this._oldScrollHeight !== this.scrollHeight);\r\n this.scrollTopChanged = (this._oldScrollTop !== this.scrollTop);\r\n }\r\n isNoOp() {\r\n return (!this.scrollWidthChanged && !this.scrollLeftChanged && !this.scrollHeightChanged && !this.scrollTopChanged);\r\n }\r\n merge(other) {\r\n if (other.kind !== 2 /* ScrollChanged */) {\r\n return this;\r\n }\r\n return new ScrollChangedEvent(this._oldScrollWidth, this._oldScrollLeft, this._oldScrollHeight, this._oldScrollTop, other.scrollWidth, other.scrollLeft, other.scrollHeight, other.scrollTop);\r\n }\r\n}\r\nexport class ViewZonesChangedEvent {\r\n constructor() {\r\n this.kind = 3 /* ViewZonesChanged */;\r\n }\r\n isNoOp() {\r\n return false;\r\n }\r\n merge(other) {\r\n return this;\r\n }\r\n}\r\nexport class CursorStateChangedEvent {\r\n constructor(oldSelections, selections, oldModelVersionId, modelVersionId, source, reason, reachedMaxCursorCount) {\r\n this.kind = 5 /* CursorStateChanged */;\r\n this.oldSelections = oldSelections;\r\n this.selections = selections;\r\n this.oldModelVersionId = oldModelVersionId;\r\n this.modelVersionId = modelVersionId;\r\n this.source = source;\r\n this.reason = reason;\r\n this.reachedMaxCursorCount = reachedMaxCursorCount;\r\n }\r\n static _selectionsAreEqual(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (!a || !b) {\r\n return false;\r\n }\r\n const aLen = a.length;\r\n const bLen = b.length;\r\n if (aLen !== bLen) {\r\n return false;\r\n }\r\n for (let i = 0; i < aLen; i++) {\r\n if (!a[i].equalsSelection(b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n isNoOp() {\r\n return (CursorStateChangedEvent._selectionsAreEqual(this.oldSelections, this.selections)\r\n && this.oldModelVersionId === this.modelVersionId);\r\n }\r\n merge(other) {\r\n if (other.kind !== 5 /* CursorStateChanged */) {\r\n return this;\r\n }\r\n return new CursorStateChangedEvent(this.oldSelections, other.selections, this.oldModelVersionId, other.modelVersionId, other.source, other.reason, this.reachedMaxCursorCount || other.reachedMaxCursorCount);\r\n }\r\n}\r\nexport class ReadOnlyEditAttemptEvent {\r\n constructor() {\r\n this.kind = 4 /* ReadOnlyEditAttempt */;\r\n }\r\n isNoOp() {\r\n return false;\r\n }\r\n merge(other) {\r\n return this;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { EDITOR_FONT_DEFAULTS, filterValidationDecorations } from '../config/editorOptions.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { TokenizationRegistry } from '../modes.js';\r\nimport { tokenizeLineToHTML } from '../modes/textToHtmlTokenizer.js';\r\nimport { MinimapTokensColorTracker } from './minimapTokensColorTracker.js';\r\nimport * as viewEvents from '../view/viewEvents.js';\r\nimport { ViewLayout } from '../viewLayout/viewLayout.js';\r\nimport { IdentityLinesCollection, SplitLinesCollection } from './splitLinesCollection.js';\r\nimport { MinimapLinesRenderingData, ViewLineRenderingData } from './viewModel.js';\r\nimport { ViewModelDecorations } from './viewModelDecorations.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { Cursor } from '../controller/cursor.js';\r\nimport { CursorConfiguration } from '../controller/cursorCommon.js';\r\nimport { ViewModelEventDispatcher, FocusChangedEvent, ScrollChangedEvent, ViewZonesChangedEvent, ReadOnlyEditAttemptEvent } from './viewModelEventDispatcher.js';\r\nconst USE_IDENTITY_LINES_COLLECTION = true;\r\nexport class ViewModel extends Disposable {\r\n constructor(editorId, configuration, model, domLineBreaksComputerFactory, monospaceLineBreaksComputerFactory, scheduleAtNextAnimationFrame) {\r\n super();\r\n this._editorId = editorId;\r\n this._configuration = configuration;\r\n this.model = model;\r\n this._eventDispatcher = new ViewModelEventDispatcher();\r\n this.onEvent = this._eventDispatcher.onEvent;\r\n this.cursorConfig = new CursorConfiguration(this.model.getLanguageIdentifier(), this.model.getOptions(), this._configuration);\r\n this._tokenizeViewportSoon = this._register(new RunOnceScheduler(() => this.tokenizeViewport(), 50));\r\n this._updateConfigurationViewLineCount = this._register(new RunOnceScheduler(() => this._updateConfigurationViewLineCountNow(), 0));\r\n this._hasFocus = false;\r\n this._viewportStartLine = -1;\r\n this._viewportStartLineTrackedRange = null;\r\n this._viewportStartLineDelta = 0;\r\n if (USE_IDENTITY_LINES_COLLECTION && this.model.isTooLargeForTokenization()) {\r\n this._lines = new IdentityLinesCollection(this.model);\r\n }\r\n else {\r\n const options = this._configuration.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const wrappingStrategy = options.get(112 /* wrappingStrategy */);\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n const wrappingIndent = options.get(111 /* wrappingIndent */);\r\n this._lines = new SplitLinesCollection(this.model, domLineBreaksComputerFactory, monospaceLineBreaksComputerFactory, fontInfo, this.model.getOptions().tabSize, wrappingStrategy, wrappingInfo.wrappingColumn, wrappingIndent);\r\n }\r\n this.coordinatesConverter = this._lines.createCoordinatesConverter();\r\n this._cursor = this._register(new Cursor(model, this, this.coordinatesConverter, this.cursorConfig));\r\n this.viewLayout = this._register(new ViewLayout(this._configuration, this.getLineCount(), scheduleAtNextAnimationFrame));\r\n this._register(this.viewLayout.onDidScroll((e) => {\r\n if (e.scrollTopChanged) {\r\n this._tokenizeViewportSoon.schedule();\r\n }\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewScrollChangedEvent(e));\r\n this._eventDispatcher.emitOutgoingEvent(new ScrollChangedEvent(e.oldScrollWidth, e.oldScrollLeft, e.oldScrollHeight, e.oldScrollTop, e.scrollWidth, e.scrollLeft, e.scrollHeight, e.scrollTop));\r\n }));\r\n this._register(this.viewLayout.onDidContentSizeChange((e) => {\r\n this._eventDispatcher.emitOutgoingEvent(e);\r\n }));\r\n this._decorations = new ViewModelDecorations(this._editorId, this.model, this._configuration, this._lines, this.coordinatesConverter);\r\n this._registerModelEvents();\r\n this._register(this._configuration.onDidChangeFast((e) => {\r\n try {\r\n const eventsCollector = this._eventDispatcher.beginEmitViewEvents();\r\n this._onConfigurationChanged(eventsCollector, e);\r\n }\r\n finally {\r\n this._eventDispatcher.endEmitViewEvents();\r\n }\r\n }));\r\n this._register(MinimapTokensColorTracker.getInstance().onDidChange(() => {\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewTokensColorsChangedEvent());\r\n }));\r\n this._updateConfigurationViewLineCountNow();\r\n }\r\n dispose() {\r\n // First remove listeners, as disposing the lines might end up sending\r\n // model decoration changed events ... and we no longer care about them ...\r\n super.dispose();\r\n this._decorations.dispose();\r\n this._lines.dispose();\r\n this.invalidateMinimapColorCache();\r\n this._viewportStartLineTrackedRange = this.model._setTrackedRange(this._viewportStartLineTrackedRange, null, 1 /* NeverGrowsWhenTypingAtEdges */);\r\n this._eventDispatcher.dispose();\r\n }\r\n addViewEventHandler(eventHandler) {\r\n this._eventDispatcher.addViewEventHandler(eventHandler);\r\n }\r\n removeViewEventHandler(eventHandler) {\r\n this._eventDispatcher.removeViewEventHandler(eventHandler);\r\n }\r\n _updateConfigurationViewLineCountNow() {\r\n this._configuration.setViewLineCount(this._lines.getViewLineCount());\r\n }\r\n tokenizeViewport() {\r\n const linesViewportData = this.viewLayout.getLinesViewportData();\r\n const startPosition = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.startLineNumber, 1));\r\n const endPosition = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(linesViewportData.endLineNumber, 1));\r\n this.model.tokenizeViewport(startPosition.lineNumber, endPosition.lineNumber);\r\n }\r\n setHasFocus(hasFocus) {\r\n this._hasFocus = hasFocus;\r\n this._cursor.setHasFocus(hasFocus);\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewFocusChangedEvent(hasFocus));\r\n this._eventDispatcher.emitOutgoingEvent(new FocusChangedEvent(!hasFocus, hasFocus));\r\n }\r\n onDidColorThemeChange() {\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewThemeChangedEvent());\r\n }\r\n _onConfigurationChanged(eventsCollector, e) {\r\n // We might need to restore the current centered view range, so save it (if available)\r\n let previousViewportStartModelPosition = null;\r\n if (this._viewportStartLine !== -1) {\r\n let previousViewportStartViewPosition = new Position(this._viewportStartLine, this.getLineMinColumn(this._viewportStartLine));\r\n previousViewportStartModelPosition = this.coordinatesConverter.convertViewPositionToModelPosition(previousViewportStartViewPosition);\r\n }\r\n let restorePreviousViewportStart = false;\r\n const options = this._configuration.options;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const wrappingStrategy = options.get(112 /* wrappingStrategy */);\r\n const wrappingInfo = options.get(118 /* wrappingInfo */);\r\n const wrappingIndent = options.get(111 /* wrappingIndent */);\r\n if (this._lines.setWrappingSettings(fontInfo, wrappingStrategy, wrappingInfo.wrappingColumn, wrappingIndent)) {\r\n eventsCollector.emitViewEvent(new viewEvents.ViewFlushedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewLineMappingChangedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewDecorationsChangedEvent(null));\r\n this._cursor.onLineMappingChanged(eventsCollector);\r\n this._decorations.onLineMappingChanged();\r\n this.viewLayout.onFlushed(this.getLineCount());\r\n if (this.viewLayout.getCurrentScrollTop() !== 0) {\r\n // Never change the scroll position from 0 to something else...\r\n restorePreviousViewportStart = true;\r\n }\r\n this._updateConfigurationViewLineCount.schedule();\r\n }\r\n if (e.hasChanged(72 /* readOnly */)) {\r\n // Must read again all decorations due to readOnly filtering\r\n this._decorations.reset();\r\n eventsCollector.emitViewEvent(new viewEvents.ViewDecorationsChangedEvent(null));\r\n }\r\n eventsCollector.emitViewEvent(new viewEvents.ViewConfigurationChangedEvent(e));\r\n this.viewLayout.onConfigurationChanged(e);\r\n if (restorePreviousViewportStart && previousViewportStartModelPosition) {\r\n const viewPosition = this.coordinatesConverter.convertModelPositionToViewPosition(previousViewportStartModelPosition);\r\n const viewPositionTop = this.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber);\r\n this.viewLayout.setScrollPosition({ scrollTop: viewPositionTop + this._viewportStartLineDelta }, 1 /* Immediate */);\r\n }\r\n if (CursorConfiguration.shouldRecreate(e)) {\r\n this.cursorConfig = new CursorConfiguration(this.model.getLanguageIdentifier(), this.model.getOptions(), this._configuration);\r\n this._cursor.updateConfiguration(this.cursorConfig);\r\n }\r\n }\r\n _registerModelEvents() {\r\n this._register(this.model.onDidChangeRawContentFast((e) => {\r\n try {\r\n const eventsCollector = this._eventDispatcher.beginEmitViewEvents();\r\n let hadOtherModelChange = false;\r\n let hadModelLineChangeThatChangedLineMapping = false;\r\n const changes = e.changes;\r\n const versionId = e.versionId;\r\n // Do a first pass to compute line mappings, and a second pass to actually interpret them\r\n const lineBreaksComputer = this._lines.createLineBreaksComputer();\r\n for (const change of changes) {\r\n switch (change.changeType) {\r\n case 4 /* LinesInserted */: {\r\n for (const line of change.detail) {\r\n lineBreaksComputer.addRequest(line, null);\r\n }\r\n break;\r\n }\r\n case 2 /* LineChanged */: {\r\n lineBreaksComputer.addRequest(change.detail, null);\r\n break;\r\n }\r\n }\r\n }\r\n const lineBreaks = lineBreaksComputer.finalize();\r\n let lineBreaksOffset = 0;\r\n for (const change of changes) {\r\n switch (change.changeType) {\r\n case 1 /* Flush */: {\r\n this._lines.onModelFlushed();\r\n eventsCollector.emitViewEvent(new viewEvents.ViewFlushedEvent());\r\n this._decorations.reset();\r\n this.viewLayout.onFlushed(this.getLineCount());\r\n hadOtherModelChange = true;\r\n break;\r\n }\r\n case 3 /* LinesDeleted */: {\r\n const linesDeletedEvent = this._lines.onModelLinesDeleted(versionId, change.fromLineNumber, change.toLineNumber);\r\n if (linesDeletedEvent !== null) {\r\n eventsCollector.emitViewEvent(linesDeletedEvent);\r\n this.viewLayout.onLinesDeleted(linesDeletedEvent.fromLineNumber, linesDeletedEvent.toLineNumber);\r\n }\r\n hadOtherModelChange = true;\r\n break;\r\n }\r\n case 4 /* LinesInserted */: {\r\n const insertedLineBreaks = lineBreaks.slice(lineBreaksOffset, lineBreaksOffset + change.detail.length);\r\n lineBreaksOffset += change.detail.length;\r\n const linesInsertedEvent = this._lines.onModelLinesInserted(versionId, change.fromLineNumber, change.toLineNumber, insertedLineBreaks);\r\n if (linesInsertedEvent !== null) {\r\n eventsCollector.emitViewEvent(linesInsertedEvent);\r\n this.viewLayout.onLinesInserted(linesInsertedEvent.fromLineNumber, linesInsertedEvent.toLineNumber);\r\n }\r\n hadOtherModelChange = true;\r\n break;\r\n }\r\n case 2 /* LineChanged */: {\r\n const changedLineBreakData = lineBreaks[lineBreaksOffset];\r\n lineBreaksOffset++;\r\n const [lineMappingChanged, linesChangedEvent, linesInsertedEvent, linesDeletedEvent] = this._lines.onModelLineChanged(versionId, change.lineNumber, changedLineBreakData);\r\n hadModelLineChangeThatChangedLineMapping = lineMappingChanged;\r\n if (linesChangedEvent) {\r\n eventsCollector.emitViewEvent(linesChangedEvent);\r\n }\r\n if (linesInsertedEvent) {\r\n eventsCollector.emitViewEvent(linesInsertedEvent);\r\n this.viewLayout.onLinesInserted(linesInsertedEvent.fromLineNumber, linesInsertedEvent.toLineNumber);\r\n }\r\n if (linesDeletedEvent) {\r\n eventsCollector.emitViewEvent(linesDeletedEvent);\r\n this.viewLayout.onLinesDeleted(linesDeletedEvent.fromLineNumber, linesDeletedEvent.toLineNumber);\r\n }\r\n break;\r\n }\r\n case 5 /* EOLChanged */: {\r\n // Nothing to do. The new version will be accepted below\r\n break;\r\n }\r\n }\r\n }\r\n this._lines.acceptVersionId(versionId);\r\n this.viewLayout.onHeightMaybeChanged();\r\n if (!hadOtherModelChange && hadModelLineChangeThatChangedLineMapping) {\r\n eventsCollector.emitViewEvent(new viewEvents.ViewLineMappingChangedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewDecorationsChangedEvent(null));\r\n this._cursor.onLineMappingChanged(eventsCollector);\r\n this._decorations.onLineMappingChanged();\r\n }\r\n }\r\n finally {\r\n this._eventDispatcher.endEmitViewEvents();\r\n }\r\n // Update the configuration and reset the centered view line\r\n this._viewportStartLine = -1;\r\n this._configuration.setMaxLineNumber(this.model.getLineCount());\r\n this._updateConfigurationViewLineCountNow();\r\n // Recover viewport\r\n if (!this._hasFocus && this.model.getAttachedEditorCount() >= 2 && this._viewportStartLineTrackedRange) {\r\n const modelRange = this.model._getTrackedRange(this._viewportStartLineTrackedRange);\r\n if (modelRange) {\r\n const viewPosition = this.coordinatesConverter.convertModelPositionToViewPosition(modelRange.getStartPosition());\r\n const viewPositionTop = this.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber);\r\n this.viewLayout.setScrollPosition({ scrollTop: viewPositionTop + this._viewportStartLineDelta }, 1 /* Immediate */);\r\n }\r\n }\r\n try {\r\n const eventsCollector = this._eventDispatcher.beginEmitViewEvents();\r\n this._cursor.onModelContentChanged(eventsCollector, e);\r\n }\r\n finally {\r\n this._eventDispatcher.endEmitViewEvents();\r\n }\r\n }));\r\n this._register(this.model.onDidChangeTokens((e) => {\r\n let viewRanges = [];\r\n for (let j = 0, lenJ = e.ranges.length; j < lenJ; j++) {\r\n const modelRange = e.ranges[j];\r\n const viewStartLineNumber = this.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.fromLineNumber, 1)).lineNumber;\r\n const viewEndLineNumber = this.coordinatesConverter.convertModelPositionToViewPosition(new Position(modelRange.toLineNumber, this.model.getLineMaxColumn(modelRange.toLineNumber))).lineNumber;\r\n viewRanges[j] = {\r\n fromLineNumber: viewStartLineNumber,\r\n toLineNumber: viewEndLineNumber\r\n };\r\n }\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewTokensChangedEvent(viewRanges));\r\n if (e.tokenizationSupportChanged) {\r\n this._tokenizeViewportSoon.schedule();\r\n }\r\n }));\r\n this._register(this.model.onDidChangeLanguageConfiguration((e) => {\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewLanguageConfigurationEvent());\r\n this.cursorConfig = new CursorConfiguration(this.model.getLanguageIdentifier(), this.model.getOptions(), this._configuration);\r\n this._cursor.updateConfiguration(this.cursorConfig);\r\n }));\r\n this._register(this.model.onDidChangeLanguage((e) => {\r\n this.cursorConfig = new CursorConfiguration(this.model.getLanguageIdentifier(), this.model.getOptions(), this._configuration);\r\n this._cursor.updateConfiguration(this.cursorConfig);\r\n }));\r\n this._register(this.model.onDidChangeOptions((e) => {\r\n // A tab size change causes a line mapping changed event => all view parts will repaint OK, no further event needed here\r\n if (this._lines.setTabSize(this.model.getOptions().tabSize)) {\r\n try {\r\n const eventsCollector = this._eventDispatcher.beginEmitViewEvents();\r\n eventsCollector.emitViewEvent(new viewEvents.ViewFlushedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewLineMappingChangedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewDecorationsChangedEvent(null));\r\n this._cursor.onLineMappingChanged(eventsCollector);\r\n this._decorations.onLineMappingChanged();\r\n this.viewLayout.onFlushed(this.getLineCount());\r\n }\r\n finally {\r\n this._eventDispatcher.endEmitViewEvents();\r\n }\r\n this._updateConfigurationViewLineCount.schedule();\r\n }\r\n this.cursorConfig = new CursorConfiguration(this.model.getLanguageIdentifier(), this.model.getOptions(), this._configuration);\r\n this._cursor.updateConfiguration(this.cursorConfig);\r\n }));\r\n this._register(this.model.onDidChangeDecorations((e) => {\r\n this._decorations.onModelDecorationsChanged();\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewDecorationsChangedEvent(e));\r\n }));\r\n }\r\n setHiddenAreas(ranges) {\r\n try {\r\n const eventsCollector = this._eventDispatcher.beginEmitViewEvents();\r\n let lineMappingChanged = this._lines.setHiddenAreas(ranges);\r\n if (lineMappingChanged) {\r\n eventsCollector.emitViewEvent(new viewEvents.ViewFlushedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewLineMappingChangedEvent());\r\n eventsCollector.emitViewEvent(new viewEvents.ViewDecorationsChangedEvent(null));\r\n this._cursor.onLineMappingChanged(eventsCollector);\r\n this._decorations.onLineMappingChanged();\r\n this.viewLayout.onFlushed(this.getLineCount());\r\n this.viewLayout.onHeightMaybeChanged();\r\n }\r\n }\r\n finally {\r\n this._eventDispatcher.endEmitViewEvents();\r\n }\r\n this._updateConfigurationViewLineCount.schedule();\r\n }\r\n getVisibleRangesPlusViewportAboveBelow() {\r\n const layoutInfo = this._configuration.options.get(117 /* layoutInfo */);\r\n const lineHeight = this._configuration.options.get(51 /* lineHeight */);\r\n const linesAround = Math.max(20, Math.round(layoutInfo.height / lineHeight));\r\n const partialData = this.viewLayout.getLinesViewportData();\r\n const startViewLineNumber = Math.max(1, partialData.completelyVisibleStartLineNumber - linesAround);\r\n const endViewLineNumber = Math.min(this.getLineCount(), partialData.completelyVisibleEndLineNumber + linesAround);\r\n return this._toModelVisibleRanges(new Range(startViewLineNumber, this.getLineMinColumn(startViewLineNumber), endViewLineNumber, this.getLineMaxColumn(endViewLineNumber)));\r\n }\r\n getVisibleRanges() {\r\n const visibleViewRange = this.getCompletelyVisibleViewRange();\r\n return this._toModelVisibleRanges(visibleViewRange);\r\n }\r\n _toModelVisibleRanges(visibleViewRange) {\r\n const visibleRange = this.coordinatesConverter.convertViewRangeToModelRange(visibleViewRange);\r\n const hiddenAreas = this._lines.getHiddenAreas();\r\n if (hiddenAreas.length === 0) {\r\n return [visibleRange];\r\n }\r\n let result = [], resultLen = 0;\r\n let startLineNumber = visibleRange.startLineNumber;\r\n let startColumn = visibleRange.startColumn;\r\n let endLineNumber = visibleRange.endLineNumber;\r\n let endColumn = visibleRange.endColumn;\r\n for (let i = 0, len = hiddenAreas.length; i < len; i++) {\r\n const hiddenStartLineNumber = hiddenAreas[i].startLineNumber;\r\n const hiddenEndLineNumber = hiddenAreas[i].endLineNumber;\r\n if (hiddenEndLineNumber < startLineNumber) {\r\n continue;\r\n }\r\n if (hiddenStartLineNumber > endLineNumber) {\r\n continue;\r\n }\r\n if (startLineNumber < hiddenStartLineNumber) {\r\n result[resultLen++] = new Range(startLineNumber, startColumn, hiddenStartLineNumber - 1, this.model.getLineMaxColumn(hiddenStartLineNumber - 1));\r\n }\r\n startLineNumber = hiddenEndLineNumber + 1;\r\n startColumn = 1;\r\n }\r\n if (startLineNumber < endLineNumber || (startLineNumber === endLineNumber && startColumn < endColumn)) {\r\n result[resultLen++] = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n return result;\r\n }\r\n getCompletelyVisibleViewRange() {\r\n const partialData = this.viewLayout.getLinesViewportData();\r\n const startViewLineNumber = partialData.completelyVisibleStartLineNumber;\r\n const endViewLineNumber = partialData.completelyVisibleEndLineNumber;\r\n return new Range(startViewLineNumber, this.getLineMinColumn(startViewLineNumber), endViewLineNumber, this.getLineMaxColumn(endViewLineNumber));\r\n }\r\n getCompletelyVisibleViewRangeAtScrollTop(scrollTop) {\r\n const partialData = this.viewLayout.getLinesViewportDataAtScrollTop(scrollTop);\r\n const startViewLineNumber = partialData.completelyVisibleStartLineNumber;\r\n const endViewLineNumber = partialData.completelyVisibleEndLineNumber;\r\n return new Range(startViewLineNumber, this.getLineMinColumn(startViewLineNumber), endViewLineNumber, this.getLineMaxColumn(endViewLineNumber));\r\n }\r\n saveState() {\r\n const compatViewState = this.viewLayout.saveState();\r\n const scrollTop = compatViewState.scrollTop;\r\n const firstViewLineNumber = this.viewLayout.getLineNumberAtVerticalOffset(scrollTop);\r\n const firstPosition = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(firstViewLineNumber, this.getLineMinColumn(firstViewLineNumber)));\r\n const firstPositionDeltaTop = this.viewLayout.getVerticalOffsetForLineNumber(firstViewLineNumber) - scrollTop;\r\n return {\r\n scrollLeft: compatViewState.scrollLeft,\r\n firstPosition: firstPosition,\r\n firstPositionDeltaTop: firstPositionDeltaTop\r\n };\r\n }\r\n reduceRestoreState(state) {\r\n if (typeof state.firstPosition === 'undefined') {\r\n // This is a view state serialized by an older version\r\n return this._reduceRestoreStateCompatibility(state);\r\n }\r\n const modelPosition = this.model.validatePosition(state.firstPosition);\r\n const viewPosition = this.coordinatesConverter.convertModelPositionToViewPosition(modelPosition);\r\n const scrollTop = this.viewLayout.getVerticalOffsetForLineNumber(viewPosition.lineNumber) - state.firstPositionDeltaTop;\r\n return {\r\n scrollLeft: state.scrollLeft,\r\n scrollTop: scrollTop\r\n };\r\n }\r\n _reduceRestoreStateCompatibility(state) {\r\n return {\r\n scrollLeft: state.scrollLeft,\r\n scrollTop: state.scrollTopWithoutViewZones\r\n };\r\n }\r\n getTabSize() {\r\n return this.model.getOptions().tabSize;\r\n }\r\n getTextModelOptions() {\r\n return this.model.getOptions();\r\n }\r\n getLineCount() {\r\n return this._lines.getViewLineCount();\r\n }\r\n /**\r\n * Gives a hint that a lot of requests are about to come in for these line numbers.\r\n */\r\n setViewport(startLineNumber, endLineNumber, centeredLineNumber) {\r\n this._viewportStartLine = startLineNumber;\r\n let position = this.coordinatesConverter.convertViewPositionToModelPosition(new Position(startLineNumber, this.getLineMinColumn(startLineNumber)));\r\n this._viewportStartLineTrackedRange = this.model._setTrackedRange(this._viewportStartLineTrackedRange, new Range(position.lineNumber, position.column, position.lineNumber, position.column), 1 /* NeverGrowsWhenTypingAtEdges */);\r\n const viewportStartLineTop = this.viewLayout.getVerticalOffsetForLineNumber(startLineNumber);\r\n const scrollTop = this.viewLayout.getCurrentScrollTop();\r\n this._viewportStartLineDelta = scrollTop - viewportStartLineTop;\r\n }\r\n getActiveIndentGuide(lineNumber, minLineNumber, maxLineNumber) {\r\n return this._lines.getActiveIndentGuide(lineNumber, minLineNumber, maxLineNumber);\r\n }\r\n getLinesIndentGuides(startLineNumber, endLineNumber) {\r\n return this._lines.getViewLinesIndentGuides(startLineNumber, endLineNumber);\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines.getViewLineContent(lineNumber);\r\n }\r\n getLineLength(lineNumber) {\r\n return this._lines.getViewLineLength(lineNumber);\r\n }\r\n getLineMinColumn(lineNumber) {\r\n return this._lines.getViewLineMinColumn(lineNumber);\r\n }\r\n getLineMaxColumn(lineNumber) {\r\n return this._lines.getViewLineMaxColumn(lineNumber);\r\n }\r\n getLineFirstNonWhitespaceColumn(lineNumber) {\r\n const result = strings.firstNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 1;\r\n }\r\n getLineLastNonWhitespaceColumn(lineNumber) {\r\n const result = strings.lastNonWhitespaceIndex(this.getLineContent(lineNumber));\r\n if (result === -1) {\r\n return 0;\r\n }\r\n return result + 2;\r\n }\r\n getDecorationsInViewport(visibleRange) {\r\n return this._decorations.getDecorationsViewportData(visibleRange).decorations;\r\n }\r\n getViewLineRenderingData(visibleRange, lineNumber) {\r\n let mightContainRTL = this.model.mightContainRTL();\r\n let mightContainNonBasicASCII = this.model.mightContainNonBasicASCII();\r\n let tabSize = this.getTabSize();\r\n let lineData = this._lines.getViewLineData(lineNumber);\r\n let allInlineDecorations = this._decorations.getDecorationsViewportData(visibleRange).inlineDecorations;\r\n let inlineDecorations = allInlineDecorations[lineNumber - visibleRange.startLineNumber];\r\n return new ViewLineRenderingData(lineData.minColumn, lineData.maxColumn, lineData.content, lineData.continuesWithWrappedLine, mightContainRTL, mightContainNonBasicASCII, lineData.tokens, inlineDecorations, tabSize, lineData.startVisibleColumn);\r\n }\r\n getViewLineData(lineNumber) {\r\n return this._lines.getViewLineData(lineNumber);\r\n }\r\n getMinimapLinesRenderingData(startLineNumber, endLineNumber, needed) {\r\n let result = this._lines.getViewLinesData(startLineNumber, endLineNumber, needed);\r\n return new MinimapLinesRenderingData(this.getTabSize(), result);\r\n }\r\n getAllOverviewRulerDecorations(theme) {\r\n return this._lines.getAllOverviewRulerDecorations(this._editorId, filterValidationDecorations(this._configuration.options), theme);\r\n }\r\n invalidateOverviewRulerColorCache() {\r\n const decorations = this.model.getOverviewRulerDecorations();\r\n for (const decoration of decorations) {\r\n const opts = decoration.options.overviewRuler;\r\n if (opts) {\r\n opts.invalidateCachedColor();\r\n }\r\n }\r\n }\r\n invalidateMinimapColorCache() {\r\n const decorations = this.model.getAllDecorations();\r\n for (const decoration of decorations) {\r\n const opts = decoration.options.minimap;\r\n if (opts) {\r\n opts.invalidateCachedColor();\r\n }\r\n }\r\n }\r\n getValueInRange(range, eol) {\r\n const modelRange = this.coordinatesConverter.convertViewRangeToModelRange(range);\r\n return this.model.getValueInRange(modelRange, eol);\r\n }\r\n getModelLineMaxColumn(modelLineNumber) {\r\n return this.model.getLineMaxColumn(modelLineNumber);\r\n }\r\n validateModelPosition(position) {\r\n return this.model.validatePosition(position);\r\n }\r\n validateModelRange(range) {\r\n return this.model.validateRange(range);\r\n }\r\n deduceModelPositionRelativeToViewPosition(viewAnchorPosition, deltaOffset, lineFeedCnt) {\r\n const modelAnchor = this.coordinatesConverter.convertViewPositionToModelPosition(viewAnchorPosition);\r\n if (this.model.getEOL().length === 2) {\r\n // This model uses CRLF, so the delta must take that into account\r\n if (deltaOffset < 0) {\r\n deltaOffset -= lineFeedCnt;\r\n }\r\n else {\r\n deltaOffset += lineFeedCnt;\r\n }\r\n }\r\n const modelAnchorOffset = this.model.getOffsetAt(modelAnchor);\r\n const resultOffset = modelAnchorOffset + deltaOffset;\r\n return this.model.getPositionAt(resultOffset);\r\n }\r\n getEOL() {\r\n return this.model.getEOL();\r\n }\r\n getPlainTextToCopy(modelRanges, emptySelectionClipboard, forceCRLF) {\r\n const newLineCharacter = forceCRLF ? '\\r\\n' : this.model.getEOL();\r\n modelRanges = modelRanges.slice(0);\r\n modelRanges.sort(Range.compareRangesUsingStarts);\r\n let hasEmptyRange = false;\r\n let hasNonEmptyRange = false;\r\n for (const range of modelRanges) {\r\n if (range.isEmpty()) {\r\n hasEmptyRange = true;\r\n }\r\n else {\r\n hasNonEmptyRange = true;\r\n }\r\n }\r\n if (!hasNonEmptyRange) {\r\n // all ranges are empty\r\n if (!emptySelectionClipboard) {\r\n return '';\r\n }\r\n const modelLineNumbers = modelRanges.map((r) => r.startLineNumber);\r\n let result = '';\r\n for (let i = 0; i < modelLineNumbers.length; i++) {\r\n if (i > 0 && modelLineNumbers[i - 1] === modelLineNumbers[i]) {\r\n continue;\r\n }\r\n result += this.model.getLineContent(modelLineNumbers[i]) + newLineCharacter;\r\n }\r\n return result;\r\n }\r\n if (hasEmptyRange && emptySelectionClipboard) {\r\n // mixed empty selections and non-empty selections\r\n let result = [];\r\n let prevModelLineNumber = 0;\r\n for (const modelRange of modelRanges) {\r\n const modelLineNumber = modelRange.startLineNumber;\r\n if (modelRange.isEmpty()) {\r\n if (modelLineNumber !== prevModelLineNumber) {\r\n result.push(this.model.getLineContent(modelLineNumber));\r\n }\r\n }\r\n else {\r\n result.push(this.model.getValueInRange(modelRange, forceCRLF ? 2 /* CRLF */ : 0 /* TextDefined */));\r\n }\r\n prevModelLineNumber = modelLineNumber;\r\n }\r\n return result.length === 1 ? result[0] : result;\r\n }\r\n let result = [];\r\n for (const modelRange of modelRanges) {\r\n if (!modelRange.isEmpty()) {\r\n result.push(this.model.getValueInRange(modelRange, forceCRLF ? 2 /* CRLF */ : 0 /* TextDefined */));\r\n }\r\n }\r\n return result.length === 1 ? result[0] : result;\r\n }\r\n getRichTextToCopy(modelRanges, emptySelectionClipboard) {\r\n const languageId = this.model.getLanguageIdentifier();\r\n if (languageId.id === 1 /* PlainText */) {\r\n return null;\r\n }\r\n if (modelRanges.length !== 1) {\r\n // no multiple selection support at this time\r\n return null;\r\n }\r\n let range = modelRanges[0];\r\n if (range.isEmpty()) {\r\n if (!emptySelectionClipboard) {\r\n // nothing to copy\r\n return null;\r\n }\r\n const lineNumber = range.startLineNumber;\r\n range = new Range(lineNumber, this.model.getLineMinColumn(lineNumber), lineNumber, this.model.getLineMaxColumn(lineNumber));\r\n }\r\n const fontInfo = this._configuration.options.get(36 /* fontInfo */);\r\n const colorMap = this._getColorMap();\r\n const fontFamily = fontInfo.fontFamily === EDITOR_FONT_DEFAULTS.fontFamily ? fontInfo.fontFamily : `'${fontInfo.fontFamily}', ${EDITOR_FONT_DEFAULTS.fontFamily}`;\r\n return {\r\n mode: languageId.language,\r\n html: (`<div style=\"`\r\n + `color: ${colorMap[1 /* DefaultForeground */]};`\r\n + `background-color: ${colorMap[2 /* DefaultBackground */]};`\r\n + `font-family: ${fontFamily};`\r\n + `font-weight: ${fontInfo.fontWeight};`\r\n + `font-size: ${fontInfo.fontSize}px;`\r\n + `line-height: ${fontInfo.lineHeight}px;`\r\n + `white-space: pre;`\r\n + `\">`\r\n + this._getHTMLToCopy(range, colorMap)\r\n + '</div>')\r\n };\r\n }\r\n _getHTMLToCopy(modelRange, colorMap) {\r\n const startLineNumber = modelRange.startLineNumber;\r\n const startColumn = modelRange.startColumn;\r\n const endLineNumber = modelRange.endLineNumber;\r\n const endColumn = modelRange.endColumn;\r\n const tabSize = this.getTabSize();\r\n let result = '';\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n const lineTokens = this.model.getLineTokens(lineNumber);\r\n const lineContent = lineTokens.getLineContent();\r\n const startOffset = (lineNumber === startLineNumber ? startColumn - 1 : 0);\r\n const endOffset = (lineNumber === endLineNumber ? endColumn - 1 : lineContent.length);\r\n if (lineContent === '') {\r\n result += '<br>';\r\n }\r\n else {\r\n result += tokenizeLineToHTML(lineContent, lineTokens.inflate(), colorMap, startOffset, endOffset, tabSize, platform.isWindows);\r\n }\r\n }\r\n return result;\r\n }\r\n _getColorMap() {\r\n let colorMap = TokenizationRegistry.getColorMap();\r\n let result = ['#000000'];\r\n if (colorMap) {\r\n for (let i = 1, len = colorMap.length; i < len; i++) {\r\n result[i] = Color.Format.CSS.formatHex(colorMap[i]);\r\n }\r\n }\r\n return result;\r\n }\r\n //#region model\r\n pushStackElement() {\r\n this.model.pushStackElement();\r\n }\r\n //#endregion\r\n //#region cursor operations\r\n getPrimaryCursorState() {\r\n return this._cursor.getPrimaryCursorState();\r\n }\r\n getLastAddedCursorIndex() {\r\n return this._cursor.getLastAddedCursorIndex();\r\n }\r\n getCursorStates() {\r\n return this._cursor.getCursorStates();\r\n }\r\n setCursorStates(source, reason, states) {\r\n this._withViewEventsCollector(eventsCollector => this._cursor.setStates(eventsCollector, source, reason, states));\r\n }\r\n getCursorColumnSelectData() {\r\n return this._cursor.getCursorColumnSelectData();\r\n }\r\n setCursorColumnSelectData(columnSelectData) {\r\n this._cursor.setCursorColumnSelectData(columnSelectData);\r\n }\r\n getPrevEditOperationType() {\r\n return this._cursor.getPrevEditOperationType();\r\n }\r\n setPrevEditOperationType(type) {\r\n this._cursor.setPrevEditOperationType(type);\r\n }\r\n getSelection() {\r\n return this._cursor.getSelection();\r\n }\r\n getSelections() {\r\n return this._cursor.getSelections();\r\n }\r\n getPosition() {\r\n return this._cursor.getPrimaryCursorState().modelState.position;\r\n }\r\n setSelections(source, selections) {\r\n this._withViewEventsCollector(eventsCollector => this._cursor.setSelections(eventsCollector, source, selections));\r\n }\r\n saveCursorState() {\r\n return this._cursor.saveState();\r\n }\r\n restoreCursorState(states) {\r\n this._withViewEventsCollector(eventsCollector => this._cursor.restoreState(eventsCollector, states));\r\n }\r\n _executeCursorEdit(callback) {\r\n if (this._cursor.context.cursorConfig.readOnly) {\r\n // we cannot edit when read only...\r\n this._eventDispatcher.emitOutgoingEvent(new ReadOnlyEditAttemptEvent());\r\n return;\r\n }\r\n this._withViewEventsCollector(callback);\r\n }\r\n executeEdits(source, edits, cursorStateComputer) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.executeEdits(eventsCollector, source, edits, cursorStateComputer));\r\n }\r\n startComposition() {\r\n this._cursor.setIsDoingComposition(true);\r\n this._executeCursorEdit(eventsCollector => this._cursor.startComposition(eventsCollector));\r\n }\r\n endComposition(source) {\r\n this._cursor.setIsDoingComposition(false);\r\n this._executeCursorEdit(eventsCollector => this._cursor.endComposition(eventsCollector, source));\r\n }\r\n type(text, source) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.type(eventsCollector, text, source));\r\n }\r\n replacePreviousChar(text, replaceCharCnt, source) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.replacePreviousChar(eventsCollector, text, replaceCharCnt, source));\r\n }\r\n paste(text, pasteOnNewLine, multicursorText, source) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.paste(eventsCollector, text, pasteOnNewLine, multicursorText, source));\r\n }\r\n cut(source) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.cut(eventsCollector, source));\r\n }\r\n executeCommand(command, source) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.executeCommand(eventsCollector, command, source));\r\n }\r\n executeCommands(commands, source) {\r\n this._executeCursorEdit(eventsCollector => this._cursor.executeCommands(eventsCollector, commands, source));\r\n }\r\n revealPrimaryCursor(source, revealHorizontal) {\r\n this._withViewEventsCollector(eventsCollector => this._cursor.revealPrimary(eventsCollector, source, revealHorizontal, 0 /* Smooth */));\r\n }\r\n revealTopMostCursor(source) {\r\n const viewPosition = this._cursor.getTopMostViewPosition();\r\n const viewRange = new Range(viewPosition.lineNumber, viewPosition.column, viewPosition.lineNumber, viewPosition.column);\r\n this._withViewEventsCollector(eventsCollector => eventsCollector.emitViewEvent(new viewEvents.ViewRevealRangeRequestEvent(source, viewRange, null, 0 /* Simple */, true, 0 /* Smooth */)));\r\n }\r\n revealBottomMostCursor(source) {\r\n const viewPosition = this._cursor.getBottomMostViewPosition();\r\n const viewRange = new Range(viewPosition.lineNumber, viewPosition.column, viewPosition.lineNumber, viewPosition.column);\r\n this._withViewEventsCollector(eventsCollector => eventsCollector.emitViewEvent(new viewEvents.ViewRevealRangeRequestEvent(source, viewRange, null, 0 /* Simple */, true, 0 /* Smooth */)));\r\n }\r\n revealRange(source, revealHorizontal, viewRange, verticalType, scrollType) {\r\n this._withViewEventsCollector(eventsCollector => eventsCollector.emitViewEvent(new viewEvents.ViewRevealRangeRequestEvent(source, viewRange, null, verticalType, revealHorizontal, scrollType)));\r\n }\r\n //#endregion\r\n //#region viewLayout\r\n getVerticalOffsetForLineNumber(viewLineNumber) {\r\n return this.viewLayout.getVerticalOffsetForLineNumber(viewLineNumber);\r\n }\r\n getScrollTop() {\r\n return this.viewLayout.getCurrentScrollTop();\r\n }\r\n setScrollTop(newScrollTop, scrollType) {\r\n this.viewLayout.setScrollPosition({ scrollTop: newScrollTop }, scrollType);\r\n }\r\n setScrollPosition(position, type) {\r\n this.viewLayout.setScrollPosition(position, type);\r\n }\r\n deltaScrollNow(deltaScrollLeft, deltaScrollTop) {\r\n this.viewLayout.deltaScrollNow(deltaScrollLeft, deltaScrollTop);\r\n }\r\n changeWhitespace(callback) {\r\n const hadAChange = this.viewLayout.changeWhitespace(callback);\r\n if (hadAChange) {\r\n this._eventDispatcher.emitSingleViewEvent(new viewEvents.ViewZonesChangedEvent());\r\n this._eventDispatcher.emitOutgoingEvent(new ViewZonesChangedEvent());\r\n }\r\n }\r\n setMaxLineWidth(maxLineWidth) {\r\n this.viewLayout.setMaxLineWidth(maxLineWidth);\r\n }\r\n //#endregion\r\n _withViewEventsCollector(callback) {\r\n try {\r\n const eventsCollector = this._eventDispatcher.beginEmitViewEvents();\r\n callback(eventsCollector);\r\n }\r\n finally {\r\n this._eventDispatcher.endEmitViewEvents();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './anchorSelect.css';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { MarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nexport const SelectionAnchorSet = new RawContextKey('selectionAnchorSet', false);\r\nlet SelectionAnchorController = class SelectionAnchorController {\r\n constructor(editor, contextKeyService) {\r\n this.editor = editor;\r\n this.selectionAnchorSetContextKey = SelectionAnchorSet.bindTo(contextKeyService);\r\n this.modelChangeListener = editor.onDidChangeModel(() => this.selectionAnchorSetContextKey.reset());\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SelectionAnchorController.ID);\r\n }\r\n setSelectionAnchor() {\r\n if (this.editor.hasModel()) {\r\n const position = this.editor.getPosition();\r\n const previousDecorations = this.decorationId ? [this.decorationId] : [];\r\n const newDecorationId = this.editor.deltaDecorations(previousDecorations, [{\r\n range: Selection.fromPositions(position, position),\r\n options: {\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n hoverMessage: new MarkdownString().appendText(localize('selectionAnchor', \"Selection Anchor\")),\r\n className: 'selection-anchor'\r\n }\r\n }]);\r\n this.decorationId = newDecorationId[0];\r\n this.selectionAnchorSetContextKey.set(!!this.decorationId);\r\n alert(localize('anchorSet', \"Anchor set at {0}:{1}\", position.lineNumber, position.column));\r\n }\r\n }\r\n goToSelectionAnchor() {\r\n if (this.editor.hasModel() && this.decorationId) {\r\n const anchorPosition = this.editor.getModel().getDecorationRange(this.decorationId);\r\n if (anchorPosition) {\r\n this.editor.setPosition(anchorPosition.getStartPosition());\r\n }\r\n }\r\n }\r\n selectFromAnchorToCursor() {\r\n if (this.editor.hasModel() && this.decorationId) {\r\n const start = this.editor.getModel().getDecorationRange(this.decorationId);\r\n if (start) {\r\n const end = this.editor.getPosition();\r\n this.editor.setSelection(Selection.fromPositions(start.getStartPosition(), end));\r\n this.cancelSelectionAnchor();\r\n }\r\n }\r\n }\r\n cancelSelectionAnchor() {\r\n if (this.decorationId) {\r\n this.editor.deltaDecorations([this.decorationId], []);\r\n this.decorationId = undefined;\r\n this.selectionAnchorSetContextKey.set(false);\r\n }\r\n }\r\n dispose() {\r\n this.cancelSelectionAnchor();\r\n this.modelChangeListener.dispose();\r\n }\r\n};\r\nSelectionAnchorController.ID = 'editor.contrib.selectionAnchorController';\r\nSelectionAnchorController = __decorate([\r\n __param(1, IContextKeyService)\r\n], SelectionAnchorController);\r\nclass SetSelectionAnchor extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.setSelectionAnchor',\r\n label: localize('setSelectionAnchor', \"Set Selection Anchor\"),\r\n alias: 'Set Selection Anchor',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 32 /* KEY_B */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = SelectionAnchorController.get(editor);\r\n controller.setSelectionAnchor();\r\n });\r\n }\r\n}\r\nclass GoToSelectionAnchor extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.goToSelectionAnchor',\r\n label: localize('goToSelectionAnchor', \"Go to Selection Anchor\"),\r\n alias: 'Go to Selection Anchor',\r\n precondition: SelectionAnchorSet,\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = SelectionAnchorController.get(editor);\r\n controller.goToSelectionAnchor();\r\n });\r\n }\r\n}\r\nclass SelectFromAnchorToCursor extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.selectFromAnchorToCursor',\r\n label: localize('selectFromAnchorToCursor', \"Select from Anchor to Cursor\"),\r\n alias: 'Select from Anchor to Cursor',\r\n precondition: SelectionAnchorSet,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 41 /* KEY_K */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = SelectionAnchorController.get(editor);\r\n controller.selectFromAnchorToCursor();\r\n });\r\n }\r\n}\r\nclass CancelSelectionAnchor extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.cancelSelectionAnchor',\r\n label: localize('cancelSelectionAnchor', \"Cancel Selection Anchor\"),\r\n alias: 'Cancel Selection Anchor',\r\n precondition: SelectionAnchorSet,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 9 /* Escape */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const controller = SelectionAnchorController.get(editor);\r\n controller.cancelSelectionAnchor();\r\n });\r\n }\r\n}\r\nregisterEditorContribution(SelectionAnchorController.ID, SelectionAnchorController);\r\nregisterEditorAction(SetSelectionAnchor);\r\nregisterEditorAction(GoToSelectionAnchor);\r\nregisterEditorAction(SelectFromAnchorToCursor);\r\nregisterEditorAction(CancelSelectionAnchor);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './bracketMatching.css';\r\nimport * as nls from '../../../nls.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { editorBracketMatchBackground, editorBracketMatchBorder } from '../../common/view/editorColorRegistry.js';\r\nimport { registerColor } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant, themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { MenuRegistry, MenuId } from '../../../platform/actions/common/actions.js';\r\nconst overviewRulerBracketMatchForeground = registerColor('editorOverviewRuler.bracketMatchForeground', { dark: '#A0A0A0', light: '#A0A0A0', hc: '#A0A0A0' }, nls.localize('overviewRulerBracketMatchForeground', 'Overview ruler marker color for matching brackets.'));\r\nclass JumpToBracketAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.jumpToBracket',\r\n label: nls.localize('smartSelect.jumpBracket', \"Go to Bracket\"),\r\n alias: 'Go to Bracket',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 88 /* US_BACKSLASH */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = BracketMatchingController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n controller.jumpToBracket();\r\n }\r\n}\r\nclass SelectToBracketAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.selectToBracket',\r\n label: nls.localize('smartSelect.selectToBracket', \"Select to Bracket\"),\r\n alias: 'Select to Bracket',\r\n precondition: undefined,\r\n description: {\r\n description: `Select to Bracket`,\r\n args: [{\r\n name: 'args',\r\n schema: {\r\n type: 'object',\r\n properties: {\r\n 'selectBrackets': {\r\n type: 'boolean',\r\n default: true\r\n }\r\n },\r\n }\r\n }]\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n const controller = BracketMatchingController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n let selectBrackets = true;\r\n if (args && args.selectBrackets === false) {\r\n selectBrackets = false;\r\n }\r\n controller.selectToBracket(selectBrackets);\r\n }\r\n}\r\nclass BracketsData {\r\n constructor(position, brackets, options) {\r\n this.position = position;\r\n this.brackets = brackets;\r\n this.options = options;\r\n }\r\n}\r\nexport class BracketMatchingController extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._editor = editor;\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n this._decorations = [];\r\n this._updateBracketsSoon = this._register(new RunOnceScheduler(() => this._updateBrackets(), 50));\r\n this._matchBrackets = this._editor.getOption(55 /* matchBrackets */);\r\n this._updateBracketsSoon.schedule();\r\n this._register(editor.onDidChangeCursorPosition((e) => {\r\n if (this._matchBrackets === 'never') {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n return;\r\n }\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeModelContent((e) => {\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeModel((e) => {\r\n this._lastBracketsData = [];\r\n this._decorations = [];\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeModelLanguageConfiguration((e) => {\r\n this._lastBracketsData = [];\r\n this._updateBracketsSoon.schedule();\r\n }));\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(55 /* matchBrackets */)) {\r\n this._matchBrackets = this._editor.getOption(55 /* matchBrackets */);\r\n this._decorations = this._editor.deltaDecorations(this._decorations, []);\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n this._updateBracketsSoon.schedule();\r\n }\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(BracketMatchingController.ID);\r\n }\r\n jumpToBracket() {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const newSelections = this._editor.getSelections().map(selection => {\r\n const position = selection.getStartPosition();\r\n // find matching brackets if position is on a bracket\r\n const brackets = model.matchBracket(position);\r\n let newCursorPosition = null;\r\n if (brackets) {\r\n if (brackets[0].containsPosition(position)) {\r\n newCursorPosition = brackets[1].getStartPosition();\r\n }\r\n else if (brackets[1].containsPosition(position)) {\r\n newCursorPosition = brackets[0].getStartPosition();\r\n }\r\n }\r\n else {\r\n // find the enclosing brackets if the position isn't on a matching bracket\r\n const enclosingBrackets = model.findEnclosingBrackets(position);\r\n if (enclosingBrackets) {\r\n newCursorPosition = enclosingBrackets[0].getStartPosition();\r\n }\r\n else {\r\n // no enclosing brackets, try the very first next bracket\r\n const nextBracket = model.findNextBracket(position);\r\n if (nextBracket && nextBracket.range) {\r\n newCursorPosition = nextBracket.range.getStartPosition();\r\n }\r\n }\r\n }\r\n if (newCursorPosition) {\r\n return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\r\n }\r\n return new Selection(position.lineNumber, position.column, position.lineNumber, position.column);\r\n });\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealRange(newSelections[0]);\r\n }\r\n selectToBracket(selectBrackets) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const newSelections = [];\r\n this._editor.getSelections().forEach(selection => {\r\n const position = selection.getStartPosition();\r\n let brackets = model.matchBracket(position);\r\n if (!brackets) {\r\n brackets = model.findEnclosingBrackets(position);\r\n if (!brackets) {\r\n const nextBracket = model.findNextBracket(position);\r\n if (nextBracket && nextBracket.range) {\r\n brackets = model.matchBracket(nextBracket.range.getStartPosition());\r\n }\r\n }\r\n }\r\n let selectFrom = null;\r\n let selectTo = null;\r\n if (brackets) {\r\n brackets.sort(Range.compareRangesUsingStarts);\r\n const [open, close] = brackets;\r\n selectFrom = selectBrackets ? open.getStartPosition() : open.getEndPosition();\r\n selectTo = selectBrackets ? close.getEndPosition() : close.getStartPosition();\r\n }\r\n if (selectFrom && selectTo) {\r\n newSelections.push(new Selection(selectFrom.lineNumber, selectFrom.column, selectTo.lineNumber, selectTo.column));\r\n }\r\n });\r\n if (newSelections.length > 0) {\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealRange(newSelections[0]);\r\n }\r\n }\r\n _updateBrackets() {\r\n if (this._matchBrackets === 'never') {\r\n return;\r\n }\r\n this._recomputeBrackets();\r\n let newDecorations = [], newDecorationsLen = 0;\r\n for (const bracketData of this._lastBracketsData) {\r\n let brackets = bracketData.brackets;\r\n if (brackets) {\r\n newDecorations[newDecorationsLen++] = { range: brackets[0], options: bracketData.options };\r\n newDecorations[newDecorationsLen++] = { range: brackets[1], options: bracketData.options };\r\n }\r\n }\r\n this._decorations = this._editor.deltaDecorations(this._decorations, newDecorations);\r\n }\r\n _recomputeBrackets() {\r\n if (!this._editor.hasModel()) {\r\n // no model => no brackets!\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n return;\r\n }\r\n const selections = this._editor.getSelections();\r\n if (selections.length > 100) {\r\n // no bracket matching for high numbers of selections\r\n this._lastBracketsData = [];\r\n this._lastVersionId = 0;\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const versionId = model.getVersionId();\r\n let previousData = [];\r\n if (this._lastVersionId === versionId) {\r\n // use the previous data only if the model is at the same version id\r\n previousData = this._lastBracketsData;\r\n }\r\n let positions = [], positionsLen = 0;\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let selection = selections[i];\r\n if (selection.isEmpty()) {\r\n // will bracket match a cursor only if the selection is collapsed\r\n positions[positionsLen++] = selection.getStartPosition();\r\n }\r\n }\r\n // sort positions for `previousData` cache hits\r\n if (positions.length > 1) {\r\n positions.sort(Position.compare);\r\n }\r\n let newData = [], newDataLen = 0;\r\n let previousIndex = 0, previousLen = previousData.length;\r\n for (let i = 0, len = positions.length; i < len; i++) {\r\n let position = positions[i];\r\n while (previousIndex < previousLen && previousData[previousIndex].position.isBefore(position)) {\r\n previousIndex++;\r\n }\r\n if (previousIndex < previousLen && previousData[previousIndex].position.equals(position)) {\r\n newData[newDataLen++] = previousData[previousIndex];\r\n }\r\n else {\r\n let brackets = model.matchBracket(position);\r\n let options = BracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER;\r\n if (!brackets && this._matchBrackets === 'always') {\r\n brackets = model.findEnclosingBrackets(position, 20 /* give at most 20ms to compute */);\r\n options = BracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER;\r\n }\r\n newData[newDataLen++] = new BracketsData(position, brackets, options);\r\n }\r\n }\r\n this._lastBracketsData = newData;\r\n this._lastVersionId = versionId;\r\n }\r\n}\r\nBracketMatchingController.ID = 'editor.contrib.bracketMatchingController';\r\nBracketMatchingController._DECORATION_OPTIONS_WITH_OVERVIEW_RULER = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'bracket-match',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerBracketMatchForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nBracketMatchingController._DECORATION_OPTIONS_WITHOUT_OVERVIEW_RULER = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'bracket-match'\r\n});\r\nregisterEditorContribution(BracketMatchingController.ID, BracketMatchingController);\r\nregisterEditorAction(SelectToBracketAction);\r\nregisterEditorAction(JumpToBracketAction);\r\nregisterThemingParticipant((theme, collector) => {\r\n const bracketMatchBackground = theme.getColor(editorBracketMatchBackground);\r\n if (bracketMatchBackground) {\r\n collector.addRule(`.monaco-editor .bracket-match { background-color: ${bracketMatchBackground}; }`);\r\n }\r\n const bracketMatchBorder = theme.getColor(editorBracketMatchBorder);\r\n if (bracketMatchBorder) {\r\n collector.addRule(`.monaco-editor .bracket-match { border: 1px solid ${bracketMatchBorder}; }`);\r\n }\r\n});\r\n// Go to menu\r\nMenuRegistry.appendMenuItem(MenuId.MenubarGoMenu, {\r\n group: '5_infile_nav',\r\n command: {\r\n id: 'editor.action.jumpToBracket',\r\n title: nls.localize({ key: 'miGoToBracket', comment: ['&& denotes a mnemonic'] }, \"Go to &&Bracket\")\r\n },\r\n order: 2\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MoveCaretCommand } from './moveCaretCommand.js';\r\nclass MoveCaretAction extends EditorAction {\r\n constructor(left, opts) {\r\n super(opts);\r\n this.left = left;\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let commands = [];\r\n let selections = editor.getSelections();\r\n for (const selection of selections) {\r\n commands.push(new MoveCaretCommand(selection, this.left));\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nclass MoveCaretLeftAction extends MoveCaretAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.moveCarretLeftAction',\r\n label: nls.localize('caret.moveLeft', \"Move Selected Text Left\"),\r\n alias: 'Move Selected Text Left',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nclass MoveCaretRightAction extends MoveCaretAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.moveCarretRightAction',\r\n label: nls.localize('caret.moveRight', \"Move Selected Text Right\"),\r\n alias: 'Move Selected Text Right',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nregisterEditorAction(MoveCaretLeftAction);\r\nregisterEditorAction(MoveCaretRightAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nexport class MoveCaretCommand {\r\n constructor(selection, isMovingLeft) {\r\n this._selection = selection;\r\n this._isMovingLeft = isMovingLeft;\r\n }\r\n getEditOperations(model, builder) {\r\n if (this._selection.startLineNumber !== this._selection.endLineNumber || this._selection.isEmpty()) {\r\n return;\r\n }\r\n const lineNumber = this._selection.startLineNumber;\r\n const startColumn = this._selection.startColumn;\r\n const endColumn = this._selection.endColumn;\r\n if (this._isMovingLeft && startColumn === 1) {\r\n return;\r\n }\r\n if (!this._isMovingLeft && endColumn === model.getLineMaxColumn(lineNumber)) {\r\n return;\r\n }\r\n if (this._isMovingLeft) {\r\n const rangeBefore = new Range(lineNumber, startColumn - 1, lineNumber, startColumn);\r\n const charBefore = model.getValueInRange(rangeBefore);\r\n builder.addEditOperation(rangeBefore, null);\r\n builder.addEditOperation(new Range(lineNumber, endColumn, lineNumber, endColumn), charBefore);\r\n }\r\n else {\r\n const rangeAfter = new Range(lineNumber, endColumn, lineNumber, endColumn + 1);\r\n const charAfter = model.getValueInRange(rangeAfter);\r\n builder.addEditOperation(rangeAfter, null);\r\n builder.addEditOperation(new Range(lineNumber, startColumn, lineNumber, startColumn), charAfter);\r\n }\r\n }\r\n computeCursorState(model, helper) {\r\n if (this._isMovingLeft) {\r\n return new Selection(this._selection.startLineNumber, this._selection.startColumn - 1, this._selection.endLineNumber, this._selection.endColumn - 1);\r\n }\r\n else {\r\n return new Selection(this._selection.startLineNumber, this._selection.startColumn + 1, this._selection.endLineNumber, this._selection.endColumn + 1);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { ReplaceCommand } from '../../common/commands/replaceCommand.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MoveOperations } from '../../common/controller/cursorMoveOperations.js';\r\nclass TransposeLettersAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.transposeLetters',\r\n label: nls.localize('transposeLetters.label', \"Transpose Letters\"),\r\n alias: 'Transpose Letters',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: {\r\n primary: 256 /* WinCtrl */ | 50 /* KEY_T */\r\n },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let model = editor.getModel();\r\n let commands = [];\r\n let selections = editor.getSelections();\r\n for (let selection of selections) {\r\n if (!selection.isEmpty()) {\r\n continue;\r\n }\r\n let lineNumber = selection.startLineNumber;\r\n let column = selection.startColumn;\r\n let lastColumn = model.getLineMaxColumn(lineNumber);\r\n if (lineNumber === 1 && (column === 1 || (column === 2 && lastColumn === 2))) {\r\n // at beginning of file, nothing to do\r\n continue;\r\n }\r\n // handle special case: when at end of line, transpose left two chars\r\n // otherwise, transpose left and right chars\r\n let endPosition = (column === lastColumn) ?\r\n selection.getPosition() :\r\n MoveOperations.rightPosition(model, selection.getPosition().lineNumber, selection.getPosition().column);\r\n let middlePosition = MoveOperations.leftPosition(model, endPosition.lineNumber, endPosition.column);\r\n let beginPosition = MoveOperations.leftPosition(model, middlePosition.lineNumber, middlePosition.column);\r\n let leftChar = model.getValueInRange(Range.fromPositions(beginPosition, middlePosition));\r\n let rightChar = model.getValueInRange(Range.fromPositions(middlePosition, endPosition));\r\n let replaceRange = Range.fromPositions(beginPosition, endPosition);\r\n commands.push(new ReplaceCommand(replaceRange, rightChar + leftChar));\r\n }\r\n if (commands.length > 0) {\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n }\r\n}\r\nregisterEditorAction(TransposeLettersAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as browser from '../../../base/browser/browser.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { CopyOptions, InMemoryClipboardMetadataManager } from '../../browser/controller/textAreaInput.js';\r\nimport { EditorAction, registerEditorAction, MultiCommand } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nconst CLIPBOARD_CONTEXT_MENU_GROUP = '9_cutcopypaste';\r\nconst supportsCut = (platform.isNative || document.queryCommandSupported('cut'));\r\nconst supportsCopy = (platform.isNative || document.queryCommandSupported('copy'));\r\n// IE and Edge have trouble with setting html content in clipboard\r\nconst supportsCopyWithSyntaxHighlighting = (supportsCopy && !browser.isEdge);\r\n// Firefox only supports navigator.clipboard.readText() in browser extensions.\r\n// See https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText#Browser_compatibility\r\nconst supportsPaste = (browser.isFirefox ? document.queryCommandSupported('paste') : true);\r\nfunction registerCommand(command) {\r\n command.register();\r\n return command;\r\n}\r\nexport const CutAction = supportsCut ? registerCommand(new MultiCommand({\r\n id: 'editor.action.clipboardCutAction',\r\n precondition: undefined,\r\n kbOpts: (\r\n // Do not bind cut keybindings in the browser,\r\n // since browsers do that for us and it avoids security prompts\r\n platform.isNative ? {\r\n primary: 2048 /* CtrlCmd */ | 54 /* KEY_X */,\r\n win: { primary: 2048 /* CtrlCmd */ | 54 /* KEY_X */, secondary: [1024 /* Shift */ | 20 /* Delete */] },\r\n weight: 100 /* EditorContrib */\r\n } : undefined),\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '2_ccp',\r\n title: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, \"Cu&&t\"),\r\n order: 1\r\n }, {\r\n menuId: MenuId.EditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\r\n when: EditorContextKeys.writable,\r\n order: 1,\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\r\n order: 1\r\n }]\r\n})) : undefined;\r\nexport const CopyAction = supportsCopy ? registerCommand(new MultiCommand({\r\n id: 'editor.action.clipboardCopyAction',\r\n precondition: undefined,\r\n kbOpts: (\r\n // Do not bind copy keybindings in the browser,\r\n // since browsers do that for us and it avoids security prompts\r\n platform.isNative ? {\r\n primary: 2048 /* CtrlCmd */ | 33 /* KEY_C */,\r\n win: { primary: 2048 /* CtrlCmd */ | 33 /* KEY_C */, secondary: [2048 /* CtrlCmd */ | 19 /* Insert */] },\r\n weight: 100 /* EditorContrib */\r\n } : undefined),\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '2_ccp',\r\n title: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, \"&&Copy\"),\r\n order: 2\r\n }, {\r\n menuId: MenuId.EditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\r\n order: 2,\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\r\n order: 1\r\n }]\r\n})) : undefined;\r\nexport const PasteAction = supportsPaste ? registerCommand(new MultiCommand({\r\n id: 'editor.action.clipboardPasteAction',\r\n precondition: undefined,\r\n kbOpts: (\r\n // Do not bind paste keybindings in the browser,\r\n // since browsers do that for us and it avoids security prompts\r\n platform.isNative ? {\r\n primary: 2048 /* CtrlCmd */ | 52 /* KEY_V */,\r\n win: { primary: 2048 /* CtrlCmd */ | 52 /* KEY_V */, secondary: [1024 /* Shift */ | 19 /* Insert */] },\r\n linux: { primary: 2048 /* CtrlCmd */ | 52 /* KEY_V */, secondary: [1024 /* Shift */ | 19 /* Insert */] },\r\n weight: 100 /* EditorContrib */\r\n } : undefined),\r\n menuOpts: [{\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '2_ccp',\r\n title: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, \"&&Paste\"),\r\n order: 3\r\n }, {\r\n menuId: MenuId.EditorContext,\r\n group: CLIPBOARD_CONTEXT_MENU_GROUP,\r\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\r\n when: EditorContextKeys.writable,\r\n order: 3,\r\n }, {\r\n menuId: MenuId.CommandPalette,\r\n group: '',\r\n title: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\r\n order: 1\r\n }]\r\n})) : undefined;\r\nclass ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',\r\n label: nls.localize('actions.clipboard.copyWithSyntaxHighlightingLabel', \"Copy With Syntax Highlighting\"),\r\n alias: 'Copy With Syntax Highlighting',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const emptySelectionClipboard = editor.getOption(26 /* emptySelectionClipboard */);\r\n if (!emptySelectionClipboard && editor.getSelection().isEmpty()) {\r\n return;\r\n }\r\n CopyOptions.forceCopyWithSyntaxHighlighting = true;\r\n editor.focus();\r\n document.execCommand('copy');\r\n CopyOptions.forceCopyWithSyntaxHighlighting = false;\r\n }\r\n}\r\nfunction registerExecCommandImpl(target, browserCommand) {\r\n if (!target) {\r\n return;\r\n }\r\n // 1. handle case when focus is in editor.\r\n target.addImplementation(10000, (accessor, args) => {\r\n // Only if editor text focus (i.e. not if editor has widget focus).\r\n const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (focusedEditor && focusedEditor.hasTextFocus()) {\r\n // Do not execute if there is no selection and empty selection clipboard is off\r\n const emptySelectionClipboard = focusedEditor.getOption(26 /* emptySelectionClipboard */);\r\n const selection = focusedEditor.getSelection();\r\n if (selection && selection.isEmpty() && !emptySelectionClipboard) {\r\n return true;\r\n }\r\n document.execCommand(browserCommand);\r\n return true;\r\n }\r\n return false;\r\n });\r\n // 2. (default) handle case when focus is somewhere else.\r\n target.addImplementation(0, (accessor, args) => {\r\n document.execCommand(browserCommand);\r\n return true;\r\n });\r\n}\r\nregisterExecCommandImpl(CutAction, 'cut');\r\nregisterExecCommandImpl(CopyAction, 'copy');\r\nif (PasteAction) {\r\n // 1. Paste: handle case when focus is in editor.\r\n PasteAction.addImplementation(10000, (accessor, args) => {\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n const clipboardService = accessor.get(IClipboardService);\r\n // Only if editor text focus (i.e. not if editor has widget focus).\r\n const focusedEditor = codeEditorService.getFocusedCodeEditor();\r\n if (focusedEditor && focusedEditor.hasTextFocus()) {\r\n const result = document.execCommand('paste');\r\n // Use the clipboard service if document.execCommand('paste') was not successful\r\n if (!result && platform.isWeb) {\r\n (() => __awaiter(void 0, void 0, void 0, function* () {\r\n const clipboardText = yield clipboardService.readText();\r\n if (clipboardText !== '') {\r\n const metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);\r\n let pasteOnNewLine = false;\r\n let multicursorText = null;\r\n let mode = null;\r\n if (metadata) {\r\n pasteOnNewLine = (focusedEditor.getOption(26 /* emptySelectionClipboard */) && !!metadata.isFromEmptySelection);\r\n multicursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);\r\n mode = metadata.mode;\r\n }\r\n focusedEditor.trigger('keyboard', \"paste\" /* Paste */, {\r\n text: clipboardText,\r\n pasteOnNewLine,\r\n multicursorText,\r\n mode\r\n });\r\n }\r\n }))();\r\n return true;\r\n }\r\n return true;\r\n }\r\n return false;\r\n });\r\n // 2. Paste: (default) handle case when focus is somewhere else.\r\n PasteAction.addImplementation(0, (accessor, args) => {\r\n document.execCommand('paste');\r\n return true;\r\n });\r\n}\r\nif (supportsCopyWithSyntaxHighlighting) {\r\n registerEditorAction(ExecCommandCopyWithSyntaxHighlightingAction);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { equals, flatten, isNonEmptyArray, mergeSort, coalesce } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument, isPromiseCanceledError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { TextModelCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { registerLanguageCommand } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CodeActionKind, filtersAction, mayIncludeActionsOfKind } from './types.js';\r\nimport { Progress } from '../../../platform/progress/common/progress.js';\r\nexport const codeActionCommandId = 'editor.action.codeAction';\r\nexport const refactorCommandId = 'editor.action.refactor';\r\nexport const sourceActionCommandId = 'editor.action.sourceAction';\r\nexport const organizeImportsCommandId = 'editor.action.organizeImports';\r\nexport const fixAllCommandId = 'editor.action.fixAll';\r\nclass ManagedCodeActionSet extends Disposable {\r\n constructor(actions, documentation, disposables) {\r\n super();\r\n this.documentation = documentation;\r\n this._register(disposables);\r\n this.allActions = mergeSort([...actions], ManagedCodeActionSet.codeActionsComparator);\r\n this.validActions = this.allActions.filter(action => !action.disabled);\r\n }\r\n static codeActionsComparator(a, b) {\r\n if (a.isPreferred && !b.isPreferred) {\r\n return -1;\r\n }\r\n else if (!a.isPreferred && b.isPreferred) {\r\n return 1;\r\n }\r\n if (isNonEmptyArray(a.diagnostics)) {\r\n if (isNonEmptyArray(b.diagnostics)) {\r\n return a.diagnostics[0].message.localeCompare(b.diagnostics[0].message);\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else if (isNonEmptyArray(b.diagnostics)) {\r\n return 1;\r\n }\r\n else {\r\n return 0; // both have no diagnostics\r\n }\r\n }\r\n get hasAutoFix() {\r\n return this.validActions.some(fix => !!fix.kind && CodeActionKind.QuickFix.contains(new CodeActionKind(fix.kind)) && !!fix.isPreferred);\r\n }\r\n}\r\nconst emptyCodeActionsResponse = { actions: [], documentation: undefined };\r\nexport function getCodeActions(model, rangeOrSelection, trigger, progress, token) {\r\n var _a;\r\n const filter = trigger.filter || {};\r\n const codeActionContext = {\r\n only: (_a = filter.include) === null || _a === void 0 ? void 0 : _a.value,\r\n trigger: trigger.type,\r\n };\r\n const cts = new TextModelCancellationTokenSource(model, token);\r\n const providers = getCodeActionProviders(model, filter);\r\n const disposables = new DisposableStore();\r\n const promises = providers.map((provider) => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n progress.report(provider);\r\n const providedCodeActions = yield provider.provideCodeActions(model, rangeOrSelection, codeActionContext, cts.token);\r\n if (providedCodeActions) {\r\n disposables.add(providedCodeActions);\r\n }\r\n if (cts.token.isCancellationRequested) {\r\n return emptyCodeActionsResponse;\r\n }\r\n const filteredActions = ((providedCodeActions === null || providedCodeActions === void 0 ? void 0 : providedCodeActions.actions) || []).filter(action => action && filtersAction(filter, action));\r\n const documentation = getDocumentation(provider, filteredActions, filter.include);\r\n return { actions: filteredActions, documentation };\r\n }\r\n catch (err) {\r\n if (isPromiseCanceledError(err)) {\r\n throw err;\r\n }\r\n onUnexpectedExternalError(err);\r\n return emptyCodeActionsResponse;\r\n }\r\n }));\r\n const listener = modes.CodeActionProviderRegistry.onDidChange(() => {\r\n const newProviders = modes.CodeActionProviderRegistry.all(model);\r\n if (!equals(newProviders, providers)) {\r\n cts.cancel();\r\n }\r\n });\r\n return Promise.all(promises).then(actions => {\r\n const allActions = flatten(actions.map(x => x.actions));\r\n const allDocumentation = coalesce(actions.map(x => x.documentation));\r\n return new ManagedCodeActionSet(allActions, allDocumentation, disposables);\r\n })\r\n .finally(() => {\r\n listener.dispose();\r\n cts.dispose();\r\n });\r\n}\r\nfunction getCodeActionProviders(model, filter) {\r\n return modes.CodeActionProviderRegistry.all(model)\r\n // Don't include providers that we know will not return code actions of interest\r\n .filter(provider => {\r\n if (!provider.providedCodeActionKinds) {\r\n // We don't know what type of actions this provider will return.\r\n return true;\r\n }\r\n return provider.providedCodeActionKinds.some(kind => mayIncludeActionsOfKind(filter, new CodeActionKind(kind)));\r\n });\r\n}\r\nfunction getDocumentation(provider, providedCodeActions, only) {\r\n if (!provider.documentation) {\r\n return undefined;\r\n }\r\n const documentation = provider.documentation.map(entry => ({ kind: new CodeActionKind(entry.kind), command: entry.command }));\r\n if (only) {\r\n let currentBest;\r\n for (const entry of documentation) {\r\n if (entry.kind.contains(only)) {\r\n if (!currentBest) {\r\n currentBest = entry;\r\n }\r\n else {\r\n // Take best match\r\n if (currentBest.kind.contains(entry.kind)) {\r\n currentBest = entry;\r\n }\r\n }\r\n }\r\n }\r\n if (currentBest) {\r\n return currentBest === null || currentBest === void 0 ? void 0 : currentBest.command;\r\n }\r\n }\r\n // Otherwise, check to see if any of the provided actions match.\r\n for (const action of providedCodeActions) {\r\n if (!action.kind) {\r\n continue;\r\n }\r\n for (const entry of documentation) {\r\n if (entry.kind.contains(new CodeActionKind(action.kind))) {\r\n return entry.command;\r\n }\r\n }\r\n }\r\n return undefined;\r\n}\r\nregisterLanguageCommand('_executeCodeActionProvider', function (accessor, args) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const { resource, rangeOrSelection, kind } = args;\r\n if (!(resource instanceof URI)) {\r\n throw illegalArgument();\r\n }\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const validatedRangeOrSelection = Selection.isISelection(rangeOrSelection)\r\n ? Selection.liftSelection(rangeOrSelection)\r\n : Range.isIRange(rangeOrSelection)\r\n ? model.validateRange(rangeOrSelection)\r\n : undefined;\r\n if (!validatedRangeOrSelection) {\r\n throw illegalArgument();\r\n }\r\n const codeActionSet = yield getCodeActions(model, validatedRangeOrSelection, { type: 2 /* Manual */, filter: { includeSourceActions: true, include: kind && kind.value ? new CodeActionKind(kind.value) : undefined } }, Progress.None, CancellationToken.None);\r\n setTimeout(() => codeActionSet.dispose(), 100);\r\n return codeActionSet.validActions;\r\n });\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Lazy } from '../../../base/common/lazy.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { escapeRegExpCharacters } from '../../../base/common/strings.js';\r\nimport { EditorAction, EditorCommand } from '../../browser/editorExtensions.js';\r\nimport { IBulkEditService, ResourceEdit } from '../../browser/services/bulkEditService.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { codeActionCommandId, fixAllCommandId, organizeImportsCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\r\nimport { CodeActionUi } from './codeActionUi.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\r\nimport { CodeActionModel, SUPPORTED_CODE_ACTIONS } from './codeActionModel.js';\r\nimport { CodeActionCommandArgs, CodeActionKind } from './types.js';\r\nfunction contextKeyForSupportedActions(kind) {\r\n return ContextKeyExpr.regex(SUPPORTED_CODE_ACTIONS.keys()[0], new RegExp('(\\\\s|^)' + escapeRegExpCharacters(kind.value) + '\\\\b'));\r\n}\r\nconst argsSchema = {\r\n type: 'object',\r\n defaultSnippets: [{ body: { kind: '' } }],\r\n properties: {\r\n 'kind': {\r\n type: 'string',\r\n description: nls.localize('args.schema.kind', \"Kind of the code action to run.\"),\r\n },\r\n 'apply': {\r\n type: 'string',\r\n description: nls.localize('args.schema.apply', \"Controls when the returned actions are applied.\"),\r\n default: \"ifSingle\" /* IfSingle */,\r\n enum: [\"first\" /* First */, \"ifSingle\" /* IfSingle */, \"never\" /* Never */],\r\n enumDescriptions: [\r\n nls.localize('args.schema.apply.first', \"Always apply the first returned code action.\"),\r\n nls.localize('args.schema.apply.ifSingle', \"Apply the first returned code action if it is the only one.\"),\r\n nls.localize('args.schema.apply.never', \"Do not apply the returned code actions.\"),\r\n ]\r\n },\r\n 'preferred': {\r\n type: 'boolean',\r\n default: false,\r\n description: nls.localize('args.schema.preferred', \"Controls if only preferred code actions should be returned.\"),\r\n }\r\n }\r\n};\r\nlet QuickFixController = class QuickFixController extends Disposable {\r\n constructor(editor, markerService, contextKeyService, progressService, _instantiationService) {\r\n super();\r\n this._instantiationService = _instantiationService;\r\n this._editor = editor;\r\n this._model = this._register(new CodeActionModel(this._editor, markerService, contextKeyService, progressService));\r\n this._register(this._model.onDidChangeState(newState => this.update(newState)));\r\n this._ui = new Lazy(() => this._register(new CodeActionUi(editor, QuickFixAction.Id, AutoFixAction.Id, {\r\n applyCodeAction: (action, retrigger) => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n yield this._applyCodeAction(action);\r\n }\r\n finally {\r\n if (retrigger) {\r\n this._trigger({ type: 1 /* Auto */, filter: {} });\r\n }\r\n }\r\n })\r\n }, this._instantiationService)));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(QuickFixController.ID);\r\n }\r\n update(newState) {\r\n this._ui.getValue().update(newState);\r\n }\r\n showCodeActions(trigger, actions, at) {\r\n return this._ui.getValue().showCodeActionList(trigger, actions, at, { includeDisabledActions: false });\r\n }\r\n manualTriggerAtCurrentPosition(notAvailableMessage, filter, autoApply) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n MessageController.get(this._editor).closeMessage();\r\n const triggerPosition = this._editor.getPosition();\r\n this._trigger({ type: 2 /* Manual */, filter, autoApply, context: { notAvailableMessage, position: triggerPosition } });\r\n }\r\n _trigger(trigger) {\r\n return this._model.trigger(trigger);\r\n }\r\n _applyCodeAction(action) {\r\n return this._instantiationService.invokeFunction(applyCodeAction, action, this._editor);\r\n }\r\n};\r\nQuickFixController.ID = 'editor.contrib.quickFixController';\r\nQuickFixController = __decorate([\r\n __param(1, IMarkerService),\r\n __param(2, IContextKeyService),\r\n __param(3, IEditorProgressService),\r\n __param(4, IInstantiationService)\r\n], QuickFixController);\r\nexport { QuickFixController };\r\nexport function applyCodeAction(accessor, action, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const bulkEditService = accessor.get(IBulkEditService);\r\n const commandService = accessor.get(ICommandService);\r\n const telemetryService = accessor.get(ITelemetryService);\r\n const notificationService = accessor.get(INotificationService);\r\n telemetryService.publicLog2('codeAction.applyCodeAction', {\r\n codeActionTitle: action.title,\r\n codeActionKind: action.kind,\r\n codeActionIsPreferred: !!action.isPreferred,\r\n });\r\n if (action.edit) {\r\n yield bulkEditService.apply(ResourceEdit.convert(action.edit), { editor, label: action.title });\r\n }\r\n if (action.command) {\r\n try {\r\n yield commandService.executeCommand(action.command.id, ...(action.command.arguments || []));\r\n }\r\n catch (err) {\r\n const message = asMessage(err);\r\n notificationService.error(typeof message === 'string'\r\n ? message\r\n : nls.localize('applyCodeActionFailed', \"An unknown error occurred while applying the code action\"));\r\n }\r\n }\r\n });\r\n}\r\nfunction asMessage(err) {\r\n if (typeof err === 'string') {\r\n return err;\r\n }\r\n else if (err instanceof Error && typeof err.message === 'string') {\r\n return err.message;\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction triggerCodeActionsForEditorSelection(editor, notAvailableMessage, filter, autoApply) {\r\n if (editor.hasModel()) {\r\n const controller = QuickFixController.get(editor);\r\n if (controller) {\r\n controller.manualTriggerAtCurrentPosition(notAvailableMessage, filter, autoApply);\r\n }\r\n }\r\n}\r\nexport class QuickFixAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: QuickFixAction.Id,\r\n label: nls.localize('quickfix.trigger.label', \"Quick Fix...\"),\r\n alias: 'Quick Fix...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 84 /* US_DOT */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.quickFix.noneMessage', \"No code actions available\"), undefined, undefined);\r\n }\r\n}\r\nQuickFixAction.Id = 'editor.action.quickFix';\r\nexport class CodeActionCommand extends EditorCommand {\r\n constructor() {\r\n super({\r\n id: codeActionCommandId,\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n description: {\r\n description: 'Trigger a code action',\r\n args: [{ name: 'args', schema: argsSchema, }]\r\n }\r\n });\r\n }\r\n runEditorCommand(_accessor, editor, userArgs) {\r\n const args = CodeActionCommandArgs.fromUser(userArgs, {\r\n kind: CodeActionKind.Empty,\r\n apply: \"ifSingle\" /* IfSingle */,\r\n });\r\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\r\n ? args.preferred\r\n ? nls.localize('editor.action.codeAction.noneMessage.preferred.kind', \"No preferred code actions for '{0}' available\", userArgs.kind)\r\n : nls.localize('editor.action.codeAction.noneMessage.kind', \"No code actions for '{0}' available\", userArgs.kind)\r\n : args.preferred\r\n ? nls.localize('editor.action.codeAction.noneMessage.preferred', \"No preferred code actions available\")\r\n : nls.localize('editor.action.codeAction.noneMessage', \"No code actions available\"), {\r\n include: args.kind,\r\n includeSourceActions: true,\r\n onlyIncludePreferredActions: args.preferred,\r\n }, args.apply);\r\n }\r\n}\r\nexport class RefactorAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: refactorCommandId,\r\n label: nls.localize('refactor.label', \"Refactor...\"),\r\n alias: 'Refactor...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 48 /* KEY_R */,\r\n mac: {\r\n primary: 256 /* WinCtrl */ | 1024 /* Shift */ | 48 /* KEY_R */\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: '1_modification',\r\n order: 2,\r\n when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Refactor)),\r\n },\r\n description: {\r\n description: 'Refactor...',\r\n args: [{ name: 'args', schema: argsSchema }]\r\n }\r\n });\r\n }\r\n run(_accessor, editor, userArgs) {\r\n const args = CodeActionCommandArgs.fromUser(userArgs, {\r\n kind: CodeActionKind.Refactor,\r\n apply: \"never\" /* Never */\r\n });\r\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\r\n ? args.preferred\r\n ? nls.localize('editor.action.refactor.noneMessage.preferred.kind', \"No preferred refactorings for '{0}' available\", userArgs.kind)\r\n : nls.localize('editor.action.refactor.noneMessage.kind', \"No refactorings for '{0}' available\", userArgs.kind)\r\n : args.preferred\r\n ? nls.localize('editor.action.refactor.noneMessage.preferred', \"No preferred refactorings available\")\r\n : nls.localize('editor.action.refactor.noneMessage', \"No refactorings available\"), {\r\n include: CodeActionKind.Refactor.contains(args.kind) ? args.kind : CodeActionKind.None,\r\n onlyIncludePreferredActions: args.preferred,\r\n }, args.apply);\r\n }\r\n}\r\nexport class SourceAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: sourceActionCommandId,\r\n label: nls.localize('source.label', \"Source Action...\"),\r\n alias: 'Source Action...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),\r\n contextMenuOpts: {\r\n group: '1_modification',\r\n order: 2.1,\r\n when: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.Source)),\r\n },\r\n description: {\r\n description: 'Source Action...',\r\n args: [{ name: 'args', schema: argsSchema }]\r\n }\r\n });\r\n }\r\n run(_accessor, editor, userArgs) {\r\n const args = CodeActionCommandArgs.fromUser(userArgs, {\r\n kind: CodeActionKind.Source,\r\n apply: \"never\" /* Never */\r\n });\r\n return triggerCodeActionsForEditorSelection(editor, typeof (userArgs === null || userArgs === void 0 ? void 0 : userArgs.kind) === 'string'\r\n ? args.preferred\r\n ? nls.localize('editor.action.source.noneMessage.preferred.kind', \"No preferred source actions for '{0}' available\", userArgs.kind)\r\n : nls.localize('editor.action.source.noneMessage.kind', \"No source actions for '{0}' available\", userArgs.kind)\r\n : args.preferred\r\n ? nls.localize('editor.action.source.noneMessage.preferred', \"No preferred source actions available\")\r\n : nls.localize('editor.action.source.noneMessage', \"No source actions available\"), {\r\n include: CodeActionKind.Source.contains(args.kind) ? args.kind : CodeActionKind.None,\r\n includeSourceActions: true,\r\n onlyIncludePreferredActions: args.preferred,\r\n }, args.apply);\r\n }\r\n}\r\nexport class OrganizeImportsAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: organizeImportsCommandId,\r\n label: nls.localize('organizeImports.label', \"Organize Imports\"),\r\n alias: 'Organize Imports',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceOrganizeImports)),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 45 /* KEY_O */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.organize.noneMessage', \"No organize imports action available\"), { include: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, \"ifSingle\" /* IfSingle */);\r\n }\r\n}\r\nexport class FixAllAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: fixAllCommandId,\r\n label: nls.localize('fixAll.label', \"Fix All\"),\r\n alias: 'Fix All',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceFixAll))\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('fixAll.noneMessage', \"No fix all action available\"), { include: CodeActionKind.SourceFixAll, includeSourceActions: true }, \"ifSingle\" /* IfSingle */);\r\n }\r\n}\r\nexport class AutoFixAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: AutoFixAction.Id,\r\n label: nls.localize('autoFix.label', \"Auto Fix...\"),\r\n alias: 'Auto Fix...',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.QuickFix)),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 1024 /* Shift */ | 84 /* US_DOT */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 84 /* US_DOT */\r\n },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n return triggerCodeActionsForEditorSelection(editor, nls.localize('editor.action.autoFix.noneMessage', \"No auto fixes available\"), {\r\n include: CodeActionKind.QuickFix,\r\n onlyIncludePreferredActions: true\r\n }, \"ifSingle\" /* IfSingle */);\r\n }\r\n}\r\nAutoFixAction.Id = 'editor.action.autoFix';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { CodeActionCommand, OrganizeImportsAction, QuickFixAction, QuickFixController, RefactorAction, SourceAction, AutoFixAction, FixAllAction } from './codeActionCommands.js';\r\nregisterEditorContribution(QuickFixController.ID, QuickFixController);\r\nregisterEditorAction(QuickFixAction);\r\nregisterEditorAction(RefactorAction);\r\nregisterEditorAction(SourceAction);\r\nregisterEditorAction(OrganizeImportsAction);\r\nregisterEditorAction(AutoFixAction);\r\nregisterEditorAction(FixAllAction);\r\nregisterEditorCommand(new CodeActionCommand());\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { getDomNodePagePosition } from '../../../base/browser/dom.js';\r\nimport { Action, Separator } from '../../../base/common/actions.js';\r\nimport { canceled } from '../../../base/common/errors.js';\r\nimport { Lazy } from '../../../base/common/lazy.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { CodeActionProviderRegistry } from '../../common/modes.js';\r\nimport { codeActionCommandId, fixAllCommandId, organizeImportsCommandId, refactorCommandId, sourceActionCommandId } from './codeAction.js';\r\nimport { CodeActionCommandArgs, CodeActionKind } from './types.js';\r\nimport { IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nclass CodeActionAction extends Action {\r\n constructor(action, callback) {\r\n super(action.command ? action.command.id : action.title, action.title, undefined, !action.disabled, callback);\r\n this.action = action;\r\n }\r\n}\r\nlet CodeActionMenu = class CodeActionMenu extends Disposable {\r\n constructor(_editor, _delegate, _contextMenuService, keybindingService) {\r\n super();\r\n this._editor = _editor;\r\n this._delegate = _delegate;\r\n this._contextMenuService = _contextMenuService;\r\n this._visible = false;\r\n this._showingActions = this._register(new MutableDisposable());\r\n this._keybindingResolver = new CodeActionKeybindingResolver({\r\n getKeybindings: () => keybindingService.getKeybindings()\r\n });\r\n }\r\n get isVisible() {\r\n return this._visible;\r\n }\r\n show(trigger, codeActions, at, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const actionsToShow = options.includeDisabledActions ? codeActions.allActions : codeActions.validActions;\r\n if (!actionsToShow.length) {\r\n this._visible = false;\r\n return;\r\n }\r\n if (!this._editor.getDomNode()) {\r\n // cancel when editor went off-dom\r\n this._visible = false;\r\n throw canceled();\r\n }\r\n this._visible = true;\r\n this._showingActions.value = codeActions;\r\n const menuActions = this.getMenuActions(trigger, actionsToShow, codeActions.documentation);\r\n const anchor = Position.isIPosition(at) ? this._toCoords(at) : at || { x: 0, y: 0 };\r\n const resolver = this._keybindingResolver.getResolver();\r\n this._contextMenuService.showContextMenu({\r\n domForShadowRoot: this._editor.getDomNode(),\r\n getAnchor: () => anchor,\r\n getActions: () => menuActions,\r\n onHide: () => {\r\n this._visible = false;\r\n this._editor.focus();\r\n },\r\n autoSelectFirstItem: true,\r\n getKeyBinding: action => action instanceof CodeActionAction ? resolver(action.action) : undefined,\r\n });\r\n });\r\n }\r\n getMenuActions(trigger, actionsToShow, documentation) {\r\n var _a, _b;\r\n const toCodeActionAction = (action) => new CodeActionAction(action, () => this._delegate.onSelectCodeAction(action));\r\n const result = actionsToShow\r\n .map(toCodeActionAction);\r\n const allDocumentation = [...documentation];\r\n const model = this._editor.getModel();\r\n if (model && result.length) {\r\n for (const provider of CodeActionProviderRegistry.all(model)) {\r\n if (provider._getAdditionalMenuItems) {\r\n allDocumentation.push(...provider._getAdditionalMenuItems({ trigger: trigger.type, only: (_b = (_a = trigger.filter) === null || _a === void 0 ? void 0 : _a.include) === null || _b === void 0 ? void 0 : _b.value }, actionsToShow));\r\n }\r\n }\r\n }\r\n if (allDocumentation.length) {\r\n result.push(new Separator(), ...allDocumentation.map(command => toCodeActionAction({\r\n title: command.title,\r\n command: command,\r\n })));\r\n }\r\n return result;\r\n }\r\n _toCoords(position) {\r\n if (!this._editor.hasModel()) {\r\n return { x: 0, y: 0 };\r\n }\r\n this._editor.revealPosition(position, 1 /* Immediate */);\r\n this._editor.render();\r\n // Translate to absolute editor position\r\n const cursorCoords = this._editor.getScrolledVisiblePosition(position);\r\n const editorCoords = getDomNodePagePosition(this._editor.getDomNode());\r\n const x = editorCoords.left + cursorCoords.left;\r\n const y = editorCoords.top + cursorCoords.top + cursorCoords.height;\r\n return { x, y };\r\n }\r\n};\r\nCodeActionMenu = __decorate([\r\n __param(2, IContextMenuService),\r\n __param(3, IKeybindingService)\r\n], CodeActionMenu);\r\nexport { CodeActionMenu };\r\nexport class CodeActionKeybindingResolver {\r\n constructor(_keybindingProvider) {\r\n this._keybindingProvider = _keybindingProvider;\r\n }\r\n getResolver() {\r\n // Lazy since we may not actually ever read the value\r\n const allCodeActionBindings = new Lazy(() => this._keybindingProvider.getKeybindings()\r\n .filter(item => CodeActionKeybindingResolver.codeActionCommands.indexOf(item.command) >= 0)\r\n .filter(item => item.resolvedKeybinding)\r\n .map((item) => {\r\n // Special case these commands since they come built-in with VS Code and don't use 'commandArgs'\r\n let commandArgs = item.commandArgs;\r\n if (item.command === organizeImportsCommandId) {\r\n commandArgs = { kind: CodeActionKind.SourceOrganizeImports.value };\r\n }\r\n else if (item.command === fixAllCommandId) {\r\n commandArgs = { kind: CodeActionKind.SourceFixAll.value };\r\n }\r\n return Object.assign({ resolvedKeybinding: item.resolvedKeybinding }, CodeActionCommandArgs.fromUser(commandArgs, {\r\n kind: CodeActionKind.None,\r\n apply: \"never\" /* Never */\r\n }));\r\n }));\r\n return (action) => {\r\n if (action.kind) {\r\n const binding = this.bestKeybindingForCodeAction(action, allCodeActionBindings.getValue());\r\n return binding === null || binding === void 0 ? void 0 : binding.resolvedKeybinding;\r\n }\r\n return undefined;\r\n };\r\n }\r\n bestKeybindingForCodeAction(action, candidates) {\r\n if (!action.kind) {\r\n return undefined;\r\n }\r\n const kind = new CodeActionKind(action.kind);\r\n return candidates\r\n .filter(candidate => candidate.kind.contains(kind))\r\n .filter(candidate => {\r\n if (candidate.preferred) {\r\n // If the candidate keybinding only applies to preferred actions, the this action must also be preferred\r\n return action.isPreferred;\r\n }\r\n return true;\r\n })\r\n .reduceRight((currentBest, candidate) => {\r\n if (!currentBest) {\r\n return candidate;\r\n }\r\n // Select the more specific binding\r\n return currentBest.kind.contains(candidate.kind) ? candidate : currentBest;\r\n }, undefined);\r\n }\r\n}\r\nCodeActionKeybindingResolver.codeActionCommands = [\r\n refactorCommandId,\r\n codeActionCommandId,\r\n sourceActionCommandId,\r\n organizeImportsCommandId,\r\n fixAllCommandId\r\n];\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createCancelablePromise, TimeoutTimer } from '../../../base/common/async.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { CodeActionProviderRegistry } from '../../common/modes.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { Progress } from '../../../platform/progress/common/progress.js';\r\nimport { getCodeActions } from './codeAction.js';\r\nimport { isEqual } from '../../../base/common/resources.js';\r\nexport const SUPPORTED_CODE_ACTIONS = new RawContextKey('supportedCodeAction', '');\r\nclass CodeActionOracle extends Disposable {\r\n constructor(_editor, _markerService, _signalChange, _delay = 250) {\r\n super();\r\n this._editor = _editor;\r\n this._markerService = _markerService;\r\n this._signalChange = _signalChange;\r\n this._delay = _delay;\r\n this._autoTriggerTimer = this._register(new TimeoutTimer());\r\n this._register(this._markerService.onMarkerChanged(e => this._onMarkerChanges(e)));\r\n this._register(this._editor.onDidChangeCursorPosition(() => this._onCursorChange()));\r\n }\r\n trigger(trigger) {\r\n const selection = this._getRangeOfSelectionUnlessWhitespaceEnclosed(trigger);\r\n return this._createEventAndSignalChange(trigger, selection);\r\n }\r\n _onMarkerChanges(resources) {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n if (resources.some(resource => isEqual(resource, model.uri))) {\r\n this._autoTriggerTimer.cancelAndSet(() => {\r\n this.trigger({ type: 1 /* Auto */ });\r\n }, this._delay);\r\n }\r\n }\r\n _onCursorChange() {\r\n this._autoTriggerTimer.cancelAndSet(() => {\r\n this.trigger({ type: 1 /* Auto */ });\r\n }, this._delay);\r\n }\r\n _getRangeOfMarker(selection) {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return undefined;\r\n }\r\n for (const marker of this._markerService.read({ resource: model.uri })) {\r\n const markerRange = model.validateRange(marker);\r\n if (Range.intersectRanges(markerRange, selection)) {\r\n return Range.lift(markerRange);\r\n }\r\n }\r\n return undefined;\r\n }\r\n _getRangeOfSelectionUnlessWhitespaceEnclosed(trigger) {\r\n if (!this._editor.hasModel()) {\r\n return undefined;\r\n }\r\n const model = this._editor.getModel();\r\n const selection = this._editor.getSelection();\r\n if (selection.isEmpty() && trigger.type === 1 /* Auto */) {\r\n const { lineNumber, column } = selection.getPosition();\r\n const line = model.getLineContent(lineNumber);\r\n if (line.length === 0) {\r\n // empty line\r\n return undefined;\r\n }\r\n else if (column === 1) {\r\n // look only right\r\n if (/\\s/.test(line[0])) {\r\n return undefined;\r\n }\r\n }\r\n else if (column === model.getLineMaxColumn(lineNumber)) {\r\n // look only left\r\n if (/\\s/.test(line[line.length - 1])) {\r\n return undefined;\r\n }\r\n }\r\n else {\r\n // look left and right\r\n if (/\\s/.test(line[column - 2]) && /\\s/.test(line[column - 1])) {\r\n return undefined;\r\n }\r\n }\r\n }\r\n return selection;\r\n }\r\n _createEventAndSignalChange(trigger, selection) {\r\n const model = this._editor.getModel();\r\n if (!selection || !model) {\r\n // cancel\r\n this._signalChange(undefined);\r\n return undefined;\r\n }\r\n const markerRange = this._getRangeOfMarker(selection);\r\n const position = markerRange ? markerRange.getStartPosition() : selection.getStartPosition();\r\n const e = {\r\n trigger,\r\n selection,\r\n position\r\n };\r\n this._signalChange(e);\r\n return e;\r\n }\r\n}\r\nexport var CodeActionsState;\r\n(function (CodeActionsState) {\r\n CodeActionsState.Empty = { type: 0 /* Empty */ };\r\n class Triggered {\r\n constructor(trigger, rangeOrSelection, position, actions) {\r\n this.trigger = trigger;\r\n this.rangeOrSelection = rangeOrSelection;\r\n this.position = position;\r\n this.actions = actions;\r\n this.type = 1 /* Triggered */;\r\n }\r\n }\r\n CodeActionsState.Triggered = Triggered;\r\n})(CodeActionsState || (CodeActionsState = {}));\r\nexport class CodeActionModel extends Disposable {\r\n constructor(_editor, _markerService, contextKeyService, _progressService) {\r\n super();\r\n this._editor = _editor;\r\n this._markerService = _markerService;\r\n this._progressService = _progressService;\r\n this._codeActionOracle = this._register(new MutableDisposable());\r\n this._state = CodeActionsState.Empty;\r\n this._onDidChangeState = this._register(new Emitter());\r\n this.onDidChangeState = this._onDidChangeState.event;\r\n this._supportedCodeActions = SUPPORTED_CODE_ACTIONS.bindTo(contextKeyService);\r\n this._register(this._editor.onDidChangeModel(() => this._update()));\r\n this._register(this._editor.onDidChangeModelLanguage(() => this._update()));\r\n this._register(CodeActionProviderRegistry.onDidChange(() => this._update()));\r\n this._update();\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.setState(CodeActionsState.Empty, true);\r\n }\r\n _update() {\r\n this._codeActionOracle.value = undefined;\r\n this.setState(CodeActionsState.Empty);\r\n const model = this._editor.getModel();\r\n if (model\r\n && CodeActionProviderRegistry.has(model)\r\n && !this._editor.getOption(72 /* readOnly */)) {\r\n const supportedActions = [];\r\n for (const provider of CodeActionProviderRegistry.all(model)) {\r\n if (Array.isArray(provider.providedCodeActionKinds)) {\r\n supportedActions.push(...provider.providedCodeActionKinds);\r\n }\r\n }\r\n this._supportedCodeActions.set(supportedActions.join(' '));\r\n this._codeActionOracle.value = new CodeActionOracle(this._editor, this._markerService, trigger => {\r\n var _a;\r\n if (!trigger) {\r\n this.setState(CodeActionsState.Empty);\r\n return;\r\n }\r\n const actions = createCancelablePromise(token => getCodeActions(model, trigger.selection, trigger.trigger, Progress.None, token));\r\n if (trigger.trigger.type === 2 /* Manual */) {\r\n (_a = this._progressService) === null || _a === void 0 ? void 0 : _a.showWhile(actions, 250);\r\n }\r\n this.setState(new CodeActionsState.Triggered(trigger.trigger, trigger.selection, trigger.position, actions));\r\n }, undefined);\r\n this._codeActionOracle.value.trigger({ type: 1 /* Auto */ });\r\n }\r\n else {\r\n this._supportedCodeActions.reset();\r\n }\r\n }\r\n trigger(trigger) {\r\n if (this._codeActionOracle.value) {\r\n this._codeActionOracle.value.trigger(trigger);\r\n }\r\n }\r\n setState(newState, skipNotify) {\r\n if (newState === this._state) {\r\n return;\r\n }\r\n // Cancel old request\r\n if (this._state.type === 1 /* Triggered */) {\r\n this._state.actions.cancel();\r\n }\r\n this._state = newState;\r\n if (!skipNotify) {\r\n this._onDidChangeState.fire(newState);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Lazy } from '../../../base/common/lazy.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { CodeActionMenu } from './codeActionMenu.js';\r\nimport { LightBulbWidget } from './lightBulbWidget.js';\r\nlet CodeActionUi = class CodeActionUi extends Disposable {\r\n constructor(_editor, quickFixActionId, preferredFixActionId, delegate, instantiationService) {\r\n super();\r\n this._editor = _editor;\r\n this.delegate = delegate;\r\n this._activeCodeActions = this._register(new MutableDisposable());\r\n this._codeActionWidget = new Lazy(() => {\r\n return this._register(instantiationService.createInstance(CodeActionMenu, this._editor, {\r\n onSelectCodeAction: (action) => __awaiter(this, void 0, void 0, function* () {\r\n this.delegate.applyCodeAction(action, /* retrigger */ true);\r\n })\r\n }));\r\n });\r\n this._lightBulbWidget = new Lazy(() => {\r\n const widget = this._register(instantiationService.createInstance(LightBulbWidget, this._editor, quickFixActionId, preferredFixActionId));\r\n this._register(widget.onClick(e => this.showCodeActionList(e.trigger, e.actions, e, { includeDisabledActions: false })));\r\n return widget;\r\n });\r\n }\r\n update(newState) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (newState.type !== 1 /* Triggered */) {\r\n (_a = this._lightBulbWidget.rawValue) === null || _a === void 0 ? void 0 : _a.hide();\r\n return;\r\n }\r\n let actions;\r\n try {\r\n actions = yield newState.actions;\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n return;\r\n }\r\n this._lightBulbWidget.getValue().update(actions, newState.trigger, newState.position);\r\n if (newState.trigger.type === 2 /* Manual */) {\r\n if ((_b = newState.trigger.filter) === null || _b === void 0 ? void 0 : _b.include) { // Triggered for specific scope\r\n // Check to see if we want to auto apply.\r\n const validActionToApply = this.tryGetValidActionToApply(newState.trigger, actions);\r\n if (validActionToApply) {\r\n try {\r\n yield this.delegate.applyCodeAction(validActionToApply, false);\r\n }\r\n finally {\r\n actions.dispose();\r\n }\r\n return;\r\n }\r\n // Check to see if there is an action that we would have applied were it not invalid\r\n if (newState.trigger.context) {\r\n const invalidAction = this.getInvalidActionThatWouldHaveBeenApplied(newState.trigger, actions);\r\n if (invalidAction && invalidAction.disabled) {\r\n MessageController.get(this._editor).showMessage(invalidAction.disabled, newState.trigger.context.position);\r\n actions.dispose();\r\n return;\r\n }\r\n }\r\n }\r\n const includeDisabledActions = !!((_c = newState.trigger.filter) === null || _c === void 0 ? void 0 : _c.include);\r\n if (newState.trigger.context) {\r\n if (!actions.allActions.length || !includeDisabledActions && !actions.validActions.length) {\r\n MessageController.get(this._editor).showMessage(newState.trigger.context.notAvailableMessage, newState.trigger.context.position);\r\n this._activeCodeActions.value = actions;\r\n actions.dispose();\r\n return;\r\n }\r\n }\r\n this._activeCodeActions.value = actions;\r\n this._codeActionWidget.getValue().show(newState.trigger, actions, newState.position, { includeDisabledActions });\r\n }\r\n else {\r\n // auto magically triggered\r\n if (this._codeActionWidget.getValue().isVisible) {\r\n // TODO: Figure out if we should update the showing menu?\r\n actions.dispose();\r\n }\r\n else {\r\n this._activeCodeActions.value = actions;\r\n }\r\n }\r\n });\r\n }\r\n getInvalidActionThatWouldHaveBeenApplied(trigger, actions) {\r\n if (!actions.allActions.length) {\r\n return undefined;\r\n }\r\n if ((trigger.autoApply === \"first\" /* First */ && actions.validActions.length === 0)\r\n || (trigger.autoApply === \"ifSingle\" /* IfSingle */ && actions.allActions.length === 1)) {\r\n return actions.allActions.find(action => action.disabled);\r\n }\r\n return undefined;\r\n }\r\n tryGetValidActionToApply(trigger, actions) {\r\n if (!actions.validActions.length) {\r\n return undefined;\r\n }\r\n if ((trigger.autoApply === \"first\" /* First */ && actions.validActions.length > 0)\r\n || (trigger.autoApply === \"ifSingle\" /* IfSingle */ && actions.validActions.length === 1)) {\r\n return actions.validActions[0];\r\n }\r\n return undefined;\r\n }\r\n showCodeActionList(trigger, actions, at, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._codeActionWidget.getValue().show(trigger, actions, at, options);\r\n });\r\n }\r\n};\r\nCodeActionUi = __decorate([\r\n __param(4, IInstantiationService)\r\n], CodeActionUi);\r\nexport { CodeActionUi };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../../base/browser/globalMouseMoveMonitor.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport './lightBulbWidget.css';\r\nimport { TextModel } from '../../common/model/textModel.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { editorLightBulbForeground, editorLightBulbAutoFixForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Gesture } from '../../../base/browser/touch.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nvar LightBulbState;\r\n(function (LightBulbState) {\r\n LightBulbState.Hidden = { type: 0 /* Hidden */ };\r\n class Showing {\r\n constructor(actions, trigger, editorPosition, widgetPosition) {\r\n this.actions = actions;\r\n this.trigger = trigger;\r\n this.editorPosition = editorPosition;\r\n this.widgetPosition = widgetPosition;\r\n this.type = 1 /* Showing */;\r\n }\r\n }\r\n LightBulbState.Showing = Showing;\r\n})(LightBulbState || (LightBulbState = {}));\r\nlet LightBulbWidget = class LightBulbWidget extends Disposable {\r\n constructor(_editor, _quickFixActionId, _preferredFixActionId, _keybindingService) {\r\n super();\r\n this._editor = _editor;\r\n this._quickFixActionId = _quickFixActionId;\r\n this._preferredFixActionId = _preferredFixActionId;\r\n this._keybindingService = _keybindingService;\r\n this._onClick = this._register(new Emitter());\r\n this.onClick = this._onClick.event;\r\n this._state = LightBulbState.Hidden;\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = Codicon.lightBulb.classNames;\r\n this._editor.addContentWidget(this);\r\n this._register(this._editor.onDidChangeModelContent(_ => {\r\n // cancel when the line in question has been removed\r\n const editorModel = this._editor.getModel();\r\n if (this.state.type !== 1 /* Showing */ || !editorModel || this.state.editorPosition.lineNumber >= editorModel.getLineCount()) {\r\n this.hide();\r\n }\r\n }));\r\n Gesture.ignoreTarget(this._domNode);\r\n this._register(dom.addStandardDisposableGenericMouseDownListner(this._domNode, e => {\r\n if (this.state.type !== 1 /* Showing */) {\r\n return;\r\n }\r\n // Make sure that focus / cursor location is not lost when clicking widget icon\r\n this._editor.focus();\r\n e.preventDefault();\r\n // a bit of extra work to make sure the menu\r\n // doesn't cover the line-text\r\n const { top, height } = dom.getDomNodePagePosition(this._domNode);\r\n const lineHeight = this._editor.getOption(51 /* lineHeight */);\r\n let pad = Math.floor(lineHeight / 3);\r\n if (this.state.widgetPosition.position !== null && this.state.widgetPosition.position.lineNumber < this.state.editorPosition.lineNumber) {\r\n pad += lineHeight;\r\n }\r\n this._onClick.fire({\r\n x: e.posx,\r\n y: top + height + pad,\r\n actions: this.state.actions,\r\n trigger: this.state.trigger,\r\n });\r\n }));\r\n this._register(dom.addDisposableListener(this._domNode, 'mouseenter', (e) => {\r\n if ((e.buttons & 1) !== 1) {\r\n return;\r\n }\r\n // mouse enters lightbulb while the primary/left button\r\n // is being pressed -> hide the lightbulb and block future\r\n // showings until mouse is released\r\n this.hide();\r\n const monitor = new GlobalMouseMoveMonitor();\r\n monitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, () => { }, () => {\r\n monitor.dispose();\r\n });\r\n }));\r\n this._register(this._editor.onDidChangeConfiguration(e => {\r\n // hide when told to do so\r\n if (e.hasChanged(49 /* lightbulb */) && !this._editor.getOption(49 /* lightbulb */).enabled) {\r\n this.hide();\r\n }\r\n }));\r\n this._updateLightBulbTitleAndIcon();\r\n this._register(this._keybindingService.onDidUpdateKeybindings(this._updateLightBulbTitleAndIcon, this));\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._editor.removeContentWidget(this);\r\n }\r\n getId() {\r\n return 'LightBulbWidget';\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return this._state.type === 1 /* Showing */ ? this._state.widgetPosition : null;\r\n }\r\n update(actions, trigger, atPosition) {\r\n if (actions.validActions.length <= 0) {\r\n return this.hide();\r\n }\r\n const options = this._editor.getOptions();\r\n if (!options.get(49 /* lightbulb */).enabled) {\r\n return this.hide();\r\n }\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return this.hide();\r\n }\r\n const { lineNumber, column } = model.validatePosition(atPosition);\r\n const tabSize = model.getOptions().tabSize;\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const lineContent = model.getLineContent(lineNumber);\r\n const indent = TextModel.computeIndentLevel(lineContent, tabSize);\r\n const lineHasSpace = fontInfo.spaceWidth * indent > 22;\r\n const isFolded = (lineNumber) => {\r\n return lineNumber > 2 && this._editor.getTopForLineNumber(lineNumber) === this._editor.getTopForLineNumber(lineNumber - 1);\r\n };\r\n let effectiveLineNumber = lineNumber;\r\n if (!lineHasSpace) {\r\n if (lineNumber > 1 && !isFolded(lineNumber - 1)) {\r\n effectiveLineNumber -= 1;\r\n }\r\n else if (!isFolded(lineNumber + 1)) {\r\n effectiveLineNumber += 1;\r\n }\r\n else if (column * fontInfo.spaceWidth < 22) {\r\n // cannot show lightbulb above/below and showing\r\n // it inline would overlay the cursor...\r\n return this.hide();\r\n }\r\n }\r\n this.state = new LightBulbState.Showing(actions, trigger, atPosition, {\r\n position: { lineNumber: effectiveLineNumber, column: 1 },\r\n preference: LightBulbWidget._posPref\r\n });\r\n this._editor.layoutContentWidget(this);\r\n }\r\n hide() {\r\n this.state = LightBulbState.Hidden;\r\n this._editor.layoutContentWidget(this);\r\n }\r\n get state() { return this._state; }\r\n set state(value) {\r\n this._state = value;\r\n this._updateLightBulbTitleAndIcon();\r\n }\r\n _updateLightBulbTitleAndIcon() {\r\n if (this.state.type === 1 /* Showing */ && this.state.actions.hasAutoFix) {\r\n // update icon\r\n dom.removeClasses(this._domNode, Codicon.lightBulb.classNames);\r\n dom.addClasses(this._domNode, Codicon.lightbulbAutofix.classNames);\r\n const preferredKb = this._keybindingService.lookupKeybinding(this._preferredFixActionId);\r\n if (preferredKb) {\r\n this.title = nls.localize('prefferedQuickFixWithKb', \"Show Fixes. Preferred Fix Available ({0})\", preferredKb.getLabel());\r\n return;\r\n }\r\n }\r\n // update icon\r\n dom.removeClasses(this._domNode, Codicon.lightbulbAutofix.classNames);\r\n dom.addClasses(this._domNode, Codicon.lightBulb.classNames);\r\n const kb = this._keybindingService.lookupKeybinding(this._quickFixActionId);\r\n if (kb) {\r\n this.title = nls.localize('quickFixWithKb', \"Show Fixes ({0})\", kb.getLabel());\r\n }\r\n else {\r\n this.title = nls.localize('quickFix', \"Show Fixes\");\r\n }\r\n }\r\n set title(value) {\r\n this._domNode.title = value;\r\n }\r\n};\r\nLightBulbWidget._posPref = [0 /* EXACT */];\r\nLightBulbWidget = __decorate([\r\n __param(3, IKeybindingService)\r\n], LightBulbWidget);\r\nexport { LightBulbWidget };\r\nregisterThemingParticipant((theme, collector) => {\r\n // Lightbulb Icon\r\n const editorLightBulbForegroundColor = theme.getColor(editorLightBulbForeground);\r\n if (editorLightBulbForegroundColor) {\r\n collector.addRule(`\n\t\t.monaco-editor .contentWidgets ${Codicon.lightBulb.cssSelector} {\n\t\t\tcolor: ${editorLightBulbForegroundColor};\n\t\t}`);\r\n }\r\n // Lightbulb Auto Fix Icon\r\n const editorLightBulbAutoFixForegroundColor = theme.getColor(editorLightBulbAutoFixForeground);\r\n if (editorLightBulbAutoFixForegroundColor) {\r\n collector.addRule(`\n\t\t.monaco-editor .contentWidgets ${Codicon.lightbulbAutofix.cssSelector} {\n\t\t\tcolor: ${editorLightBulbAutoFixForegroundColor};\n\t\t}`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { startsWith } from '../../../base/common/strings.js';\r\nexport class CodeActionKind {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n equals(other) {\r\n return this.value === other.value;\r\n }\r\n contains(other) {\r\n return this.equals(other) || this.value === '' || startsWith(other.value, this.value + CodeActionKind.sep);\r\n }\r\n intersects(other) {\r\n return this.contains(other) || other.contains(this);\r\n }\r\n append(part) {\r\n return new CodeActionKind(this.value + CodeActionKind.sep + part);\r\n }\r\n}\r\nCodeActionKind.sep = '.';\r\nCodeActionKind.None = new CodeActionKind('@@none@@'); // Special code action that contains nothing\r\nCodeActionKind.Empty = new CodeActionKind('');\r\nCodeActionKind.QuickFix = new CodeActionKind('quickfix');\r\nCodeActionKind.Refactor = new CodeActionKind('refactor');\r\nCodeActionKind.Source = new CodeActionKind('source');\r\nCodeActionKind.SourceOrganizeImports = CodeActionKind.Source.append('organizeImports');\r\nCodeActionKind.SourceFixAll = CodeActionKind.Source.append('fixAll');\r\nexport function mayIncludeActionsOfKind(filter, providedKind) {\r\n // A provided kind may be a subset or superset of our filtered kind.\r\n if (filter.include && !filter.include.intersects(providedKind)) {\r\n return false;\r\n }\r\n if (filter.excludes) {\r\n if (filter.excludes.some(exclude => excludesAction(providedKind, exclude, filter.include))) {\r\n return false;\r\n }\r\n }\r\n // Don't return source actions unless they are explicitly requested\r\n if (!filter.includeSourceActions && CodeActionKind.Source.contains(providedKind)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nexport function filtersAction(filter, action) {\r\n const actionKind = action.kind ? new CodeActionKind(action.kind) : undefined;\r\n // Filter out actions by kind\r\n if (filter.include) {\r\n if (!actionKind || !filter.include.contains(actionKind)) {\r\n return false;\r\n }\r\n }\r\n if (filter.excludes) {\r\n if (actionKind && filter.excludes.some(exclude => excludesAction(actionKind, exclude, filter.include))) {\r\n return false;\r\n }\r\n }\r\n // Don't return source actions unless they are explicitly requested\r\n if (!filter.includeSourceActions) {\r\n if (actionKind && CodeActionKind.Source.contains(actionKind)) {\r\n return false;\r\n }\r\n }\r\n if (filter.onlyIncludePreferredActions) {\r\n if (!action.isPreferred) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction excludesAction(providedKind, exclude, include) {\r\n if (!exclude.contains(providedKind)) {\r\n return false;\r\n }\r\n if (include && exclude.contains(include)) {\r\n // The include is more specific, don't filter out\r\n return false;\r\n }\r\n return true;\r\n}\r\nexport class CodeActionCommandArgs {\r\n constructor(kind, apply, preferred) {\r\n this.kind = kind;\r\n this.apply = apply;\r\n this.preferred = preferred;\r\n }\r\n static fromUser(arg, defaults) {\r\n if (!arg || typeof arg !== 'object') {\r\n return new CodeActionCommandArgs(defaults.kind, defaults.apply, false);\r\n }\r\n return new CodeActionCommandArgs(CodeActionCommandArgs.getKindFromUser(arg, defaults.kind), CodeActionCommandArgs.getApplyFromUser(arg, defaults.apply), CodeActionCommandArgs.getPreferredUser(arg));\r\n }\r\n static getApplyFromUser(arg, defaultAutoApply) {\r\n switch (typeof arg.apply === 'string' ? arg.apply.toLowerCase() : '') {\r\n case 'first': return \"first\" /* First */;\r\n case 'never': return \"never\" /* Never */;\r\n case 'ifsingle': return \"ifSingle\" /* IfSingle */;\r\n default: return defaultAutoApply;\r\n }\r\n }\r\n static getKindFromUser(arg, defaultKind) {\r\n return typeof arg.kind === 'string'\r\n ? new CodeActionKind(arg.kind)\r\n : defaultKind;\r\n }\r\n static getPreferredUser(arg) {\r\n return typeof arg.preferred === 'boolean'\r\n ? arg.preferred\r\n : false;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { CodeLensModel } from './codelens.js';\r\nimport { LRUCache } from '../../../base/common/map.js';\r\nimport { IStorageService, WillSaveStateReason } from '../../../platform/storage/common/storage.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { runWhenIdle } from '../../../base/common/async.js';\r\nimport { once } from '../../../base/common/functional.js';\r\nexport const ICodeLensCache = createDecorator('ICodeLensCache');\r\nclass CacheItem {\r\n constructor(lineCount, data) {\r\n this.lineCount = lineCount;\r\n this.data = data;\r\n }\r\n}\r\nlet CodeLensCache = class CodeLensCache {\r\n constructor(storageService) {\r\n this._fakeProvider = new class {\r\n provideCodeLenses() {\r\n throw new Error('not supported');\r\n }\r\n };\r\n this._cache = new LRUCache(20, 0.75);\r\n // remove old data\r\n const oldkey = 'codelens/cache';\r\n runWhenIdle(() => storageService.remove(oldkey, 1 /* WORKSPACE */));\r\n // restore lens data on start\r\n const key = 'codelens/cache2';\r\n const raw = storageService.get(key, 1 /* WORKSPACE */, '{}');\r\n this._deserialize(raw);\r\n // store lens data on shutdown\r\n once(storageService.onWillSaveState)(e => {\r\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\r\n storageService.store(key, this._serialize(), 1 /* WORKSPACE */);\r\n }\r\n });\r\n }\r\n put(model, data) {\r\n // create a copy of the model that is without command-ids\r\n // but with comand-labels\r\n const copyItems = data.lenses.map(item => {\r\n var _a;\r\n return {\r\n range: item.symbol.range,\r\n command: item.symbol.command && { id: '', title: (_a = item.symbol.command) === null || _a === void 0 ? void 0 : _a.title },\r\n };\r\n });\r\n const copyModel = new CodeLensModel();\r\n copyModel.add({ lenses: copyItems, dispose: () => { } }, this._fakeProvider);\r\n const item = new CacheItem(model.getLineCount(), copyModel);\r\n this._cache.set(model.uri.toString(), item);\r\n }\r\n get(model) {\r\n const item = this._cache.get(model.uri.toString());\r\n return item && item.lineCount === model.getLineCount() ? item.data : undefined;\r\n }\r\n delete(model) {\r\n this._cache.delete(model.uri.toString());\r\n }\r\n // --- persistence\r\n _serialize() {\r\n const data = Object.create(null);\r\n for (const [key, value] of this._cache) {\r\n const lines = new Set();\r\n for (const d of value.data.lenses) {\r\n lines.add(d.symbol.range.startLineNumber);\r\n }\r\n data[key] = {\r\n lineCount: value.lineCount,\r\n lines: [...lines.values()]\r\n };\r\n }\r\n return JSON.stringify(data);\r\n }\r\n _deserialize(raw) {\r\n try {\r\n const data = JSON.parse(raw);\r\n for (const key in data) {\r\n const element = data[key];\r\n const lenses = [];\r\n for (const line of element.lines) {\r\n lenses.push({ range: new Range(line, 1, line, 11) });\r\n }\r\n const model = new CodeLensModel();\r\n model.add({ lenses, dispose() { } }, this._fakeProvider);\r\n this._cache.set(key, new CacheItem(element.lineCount, model));\r\n }\r\n }\r\n catch (_a) {\r\n // ignore...\r\n }\r\n }\r\n};\r\nCodeLensCache = __decorate([\r\n __param(0, IStorageService)\r\n], CodeLensCache);\r\nexport { CodeLensCache };\r\nregisterSingleton(ICodeLensCache, CodeLensCache);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { mergeSort } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { registerLanguageCommand } from '../../browser/editorExtensions.js';\r\nimport { CodeLensProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nexport class CodeLensModel {\r\n constructor() {\r\n this.lenses = [];\r\n this._disposables = new DisposableStore();\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n }\r\n add(list, provider) {\r\n this._disposables.add(list);\r\n for (const symbol of list.lenses) {\r\n this.lenses.push({ symbol, provider });\r\n }\r\n }\r\n}\r\nexport function getCodeLensData(model, token) {\r\n const provider = CodeLensProviderRegistry.ordered(model);\r\n const providerRanks = new Map();\r\n const result = new CodeLensModel();\r\n const promises = provider.map((provider, i) => {\r\n providerRanks.set(provider, i);\r\n return Promise.resolve(provider.provideCodeLenses(model, token))\r\n .then(list => list && result.add(list, provider))\r\n .catch(onUnexpectedExternalError);\r\n });\r\n return Promise.all(promises).then(() => {\r\n result.lenses = mergeSort(result.lenses, (a, b) => {\r\n // sort by lineNumber, provider-rank, and column\r\n if (a.symbol.range.startLineNumber < b.symbol.range.startLineNumber) {\r\n return -1;\r\n }\r\n else if (a.symbol.range.startLineNumber > b.symbol.range.startLineNumber) {\r\n return 1;\r\n }\r\n else if (providerRanks.get(a.provider) < providerRanks.get(b.provider)) {\r\n return -1;\r\n }\r\n else if (providerRanks.get(a.provider) > providerRanks.get(b.provider)) {\r\n return 1;\r\n }\r\n else if (a.symbol.range.startColumn < b.symbol.range.startColumn) {\r\n return -1;\r\n }\r\n else if (a.symbol.range.startColumn > b.symbol.range.startColumn) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n return result;\r\n });\r\n}\r\nregisterLanguageCommand('_executeCodeLensProvider', function (accessor, args) {\r\n let { resource, itemResolveCount } = args;\r\n if (!(resource instanceof URI)) {\r\n throw illegalArgument();\r\n }\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const result = [];\r\n const disposables = new DisposableStore();\r\n return getCodeLensData(model, CancellationToken.None).then(value => {\r\n disposables.add(value);\r\n let resolve = [];\r\n for (const item of value.lenses) {\r\n if (typeof itemResolveCount === 'undefined' || Boolean(item.symbol.command)) {\r\n result.push(item.symbol);\r\n }\r\n else if (itemResolveCount-- > 0 && item.provider.resolveCodeLens) {\r\n resolve.push(Promise.resolve(item.provider.resolveCodeLens(model, item.symbol, CancellationToken.None)).then(symbol => result.push(symbol || item.symbol)));\r\n }\r\n }\r\n return Promise.all(resolve);\r\n }).then(() => {\r\n return result;\r\n }).finally(() => {\r\n // make sure to return results, then (on next tick)\r\n // dispose the results\r\n setTimeout(() => disposables.dispose(), 100);\r\n });\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { RunOnceScheduler, createCancelablePromise, disposableTimeout } from '../../../base/common/async.js';\r\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { toDisposable, DisposableStore, dispose } from '../../../base/common/lifecycle.js';\r\nimport { StableEditorScrollState } from '../../browser/core/editorState.js';\r\nimport { registerEditorContribution, registerEditorAction, EditorAction } from '../../browser/editorExtensions.js';\r\nimport { CodeLensProviderRegistry } from '../../common/modes.js';\r\nimport { getCodeLensData } from './codelens.js';\r\nimport { CodeLensWidget, CodeLensHelper } from './codelensWidget.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { ICodeLensCache } from './codeLensCache.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { hash } from '../../../base/common/hash.js';\r\nimport { IQuickInputService } from '../../../platform/quickinput/common/quickInput.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nlet CodeLensContribution = class CodeLensContribution {\r\n constructor(_editor, _commandService, _notificationService, _codeLensCache) {\r\n this._editor = _editor;\r\n this._commandService = _commandService;\r\n this._notificationService = _notificationService;\r\n this._codeLensCache = _codeLensCache;\r\n this._globalToDispose = new DisposableStore();\r\n this._localToDispose = new DisposableStore();\r\n this._lenses = [];\r\n this._oldCodeLensModels = new DisposableStore();\r\n this._modelChangeCounter = 0;\r\n this._isEnabled = this._editor.getOption(11 /* codeLens */);\r\n this._globalToDispose.add(this._editor.onDidChangeModel(() => this._onModelChange()));\r\n this._globalToDispose.add(this._editor.onDidChangeModelLanguage(() => this._onModelChange()));\r\n this._globalToDispose.add(this._editor.onDidChangeConfiguration(() => {\r\n const prevIsEnabled = this._isEnabled;\r\n this._isEnabled = this._editor.getOption(11 /* codeLens */);\r\n if (prevIsEnabled !== this._isEnabled) {\r\n this._onModelChange();\r\n }\r\n }));\r\n this._globalToDispose.add(CodeLensProviderRegistry.onDidChange(this._onModelChange, this));\r\n this._globalToDispose.add(this._editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(36 /* fontInfo */)) {\r\n this._updateLensStyle();\r\n }\r\n }));\r\n this._onModelChange();\r\n this._styleClassName = '_' + hash(this._editor.getId()).toString(16);\r\n this._styleElement = dom.createStyleSheet(dom.isInShadowDOM(this._editor.getContainerDomNode())\r\n ? this._editor.getContainerDomNode()\r\n : undefined);\r\n this._updateLensStyle();\r\n }\r\n dispose() {\r\n this._localDispose();\r\n this._globalToDispose.dispose();\r\n this._oldCodeLensModels.dispose();\r\n dispose(this._currentCodeLensModel);\r\n }\r\n _updateLensStyle() {\r\n const options = this._editor.getOptions();\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const lineHeight = options.get(51 /* lineHeight */);\r\n const height = Math.round(lineHeight * 1.1);\r\n const fontSize = Math.round(fontInfo.fontSize * 0.9);\r\n const newStyle = `\n\t\t.monaco-editor .codelens-decoration.${this._styleClassName} { height: ${height}px; line-height: ${lineHeight}px; font-size: ${fontSize}px; padding-right: ${Math.round(fontInfo.fontSize * 0.45)}px;}\n\t\t.monaco-editor .codelens-decoration.${this._styleClassName} > a > .codicon { line-height: ${lineHeight}px; font-size: ${fontSize}px; }\n\t\t`;\r\n this._styleElement.textContent = newStyle;\r\n }\r\n _localDispose() {\r\n if (this._currentFindCodeLensSymbolsPromise) {\r\n this._currentFindCodeLensSymbolsPromise.cancel();\r\n this._currentFindCodeLensSymbolsPromise = undefined;\r\n this._modelChangeCounter++;\r\n }\r\n if (this._currentResolveCodeLensSymbolsPromise) {\r\n this._currentResolveCodeLensSymbolsPromise.cancel();\r\n this._currentResolveCodeLensSymbolsPromise = undefined;\r\n }\r\n this._localToDispose.clear();\r\n this._oldCodeLensModels.clear();\r\n dispose(this._currentCodeLensModel);\r\n }\r\n _onModelChange() {\r\n this._localDispose();\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n const cachedLenses = this._codeLensCache.get(model);\r\n if (cachedLenses) {\r\n this._renderCodeLensSymbols(cachedLenses);\r\n }\r\n if (!CodeLensProviderRegistry.has(model)) {\r\n // no provider -> return but check with\r\n // cached lenses. they expire after 30 seconds\r\n if (cachedLenses) {\r\n this._localToDispose.add(disposableTimeout(() => {\r\n const cachedLensesNow = this._codeLensCache.get(model);\r\n if (cachedLenses === cachedLensesNow) {\r\n this._codeLensCache.delete(model);\r\n this._onModelChange();\r\n }\r\n }, 30 * 1000));\r\n }\r\n return;\r\n }\r\n for (const provider of CodeLensProviderRegistry.all(model)) {\r\n if (typeof provider.onDidChange === 'function') {\r\n let registration = provider.onDidChange(() => scheduler.schedule());\r\n this._localToDispose.add(registration);\r\n }\r\n }\r\n const detectVisibleLenses = this._detectVisibleLenses = new RunOnceScheduler(() => this._onViewportChanged(), 250);\r\n const scheduler = new RunOnceScheduler(() => {\r\n const counterValue = ++this._modelChangeCounter;\r\n if (this._currentFindCodeLensSymbolsPromise) {\r\n this._currentFindCodeLensSymbolsPromise.cancel();\r\n }\r\n this._currentFindCodeLensSymbolsPromise = createCancelablePromise(token => getCodeLensData(model, token));\r\n this._currentFindCodeLensSymbolsPromise.then(result => {\r\n if (counterValue === this._modelChangeCounter) { // only the last one wins\r\n if (this._currentCodeLensModel) {\r\n this._oldCodeLensModels.add(this._currentCodeLensModel);\r\n }\r\n this._currentCodeLensModel = result;\r\n // cache model to reduce flicker\r\n this._codeLensCache.put(model, result);\r\n // render lenses\r\n this._renderCodeLensSymbols(result);\r\n detectVisibleLenses.schedule();\r\n }\r\n }, onUnexpectedError);\r\n }, 250);\r\n this._localToDispose.add(scheduler);\r\n this._localToDispose.add(detectVisibleLenses);\r\n this._localToDispose.add(this._editor.onDidChangeModelContent(() => {\r\n this._editor.changeDecorations(decorationsAccessor => {\r\n this._editor.changeViewZones(viewZonesAccessor => {\r\n let toDispose = [];\r\n let lastLensLineNumber = -1;\r\n this._lenses.forEach((lens) => {\r\n if (!lens.isValid() || lastLensLineNumber === lens.getLineNumber()) {\r\n // invalid -> lens collapsed, attach range doesn't exist anymore\r\n // line_number -> lenses should never be on the same line\r\n toDispose.push(lens);\r\n }\r\n else {\r\n lens.update(viewZonesAccessor);\r\n lastLensLineNumber = lens.getLineNumber();\r\n }\r\n });\r\n let helper = new CodeLensHelper();\r\n toDispose.forEach((l) => {\r\n l.dispose(helper, viewZonesAccessor);\r\n this._lenses.splice(this._lenses.indexOf(l), 1);\r\n });\r\n helper.commit(decorationsAccessor);\r\n });\r\n });\r\n // Compute new `visible` code lenses\r\n detectVisibleLenses.schedule();\r\n // Ask for all references again\r\n scheduler.schedule();\r\n }));\r\n this._localToDispose.add(this._editor.onDidScrollChange(e => {\r\n if (e.scrollTopChanged && this._lenses.length > 0) {\r\n detectVisibleLenses.schedule();\r\n }\r\n }));\r\n this._localToDispose.add(this._editor.onDidLayoutChange(() => {\r\n detectVisibleLenses.schedule();\r\n }));\r\n this._localToDispose.add(toDisposable(() => {\r\n if (this._editor.getModel()) {\r\n const scrollState = StableEditorScrollState.capture(this._editor);\r\n this._editor.changeDecorations(decorationsAccessor => {\r\n this._editor.changeViewZones(viewZonesAccessor => {\r\n this._disposeAllLenses(decorationsAccessor, viewZonesAccessor);\r\n });\r\n });\r\n scrollState.restore(this._editor);\r\n }\r\n else {\r\n // No accessors available\r\n this._disposeAllLenses(undefined, undefined);\r\n }\r\n }));\r\n this._localToDispose.add(this._editor.onMouseUp(e => {\r\n if (e.target.type !== 9 /* CONTENT_WIDGET */) {\r\n return;\r\n }\r\n let target = e.target.element;\r\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'SPAN') {\r\n target = target.parentElement;\r\n }\r\n if ((target === null || target === void 0 ? void 0 : target.tagName) === 'A') {\r\n for (const lens of this._lenses) {\r\n let command = lens.getCommand(target);\r\n if (command) {\r\n this._commandService.executeCommand(command.id, ...(command.arguments || [])).catch(err => this._notificationService.error(err));\r\n break;\r\n }\r\n }\r\n }\r\n }));\r\n scheduler.schedule();\r\n }\r\n _disposeAllLenses(decChangeAccessor, viewZoneChangeAccessor) {\r\n const helper = new CodeLensHelper();\r\n for (const lens of this._lenses) {\r\n lens.dispose(helper, viewZoneChangeAccessor);\r\n }\r\n if (decChangeAccessor) {\r\n helper.commit(decChangeAccessor);\r\n }\r\n this._lenses = [];\r\n }\r\n _renderCodeLensSymbols(symbols) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n let maxLineNumber = this._editor.getModel().getLineCount();\r\n let groups = [];\r\n let lastGroup;\r\n for (let symbol of symbols.lenses) {\r\n let line = symbol.symbol.range.startLineNumber;\r\n if (line < 1 || line > maxLineNumber) {\r\n // invalid code lens\r\n continue;\r\n }\r\n else if (lastGroup && lastGroup[lastGroup.length - 1].symbol.range.startLineNumber === line) {\r\n // on same line as previous\r\n lastGroup.push(symbol);\r\n }\r\n else {\r\n // on later line as previous\r\n lastGroup = [symbol];\r\n groups.push(lastGroup);\r\n }\r\n }\r\n const scrollState = StableEditorScrollState.capture(this._editor);\r\n this._editor.changeDecorations(decorationsAccessor => {\r\n this._editor.changeViewZones(viewZoneAccessor => {\r\n const helper = new CodeLensHelper();\r\n let codeLensIndex = 0;\r\n let groupsIndex = 0;\r\n while (groupsIndex < groups.length && codeLensIndex < this._lenses.length) {\r\n let symbolsLineNumber = groups[groupsIndex][0].symbol.range.startLineNumber;\r\n let codeLensLineNumber = this._lenses[codeLensIndex].getLineNumber();\r\n if (codeLensLineNumber < symbolsLineNumber) {\r\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\r\n this._lenses.splice(codeLensIndex, 1);\r\n }\r\n else if (codeLensLineNumber === symbolsLineNumber) {\r\n this._lenses[codeLensIndex].updateCodeLensSymbols(groups[groupsIndex], helper);\r\n groupsIndex++;\r\n codeLensIndex++;\r\n }\r\n else {\r\n this._lenses.splice(codeLensIndex, 0, new CodeLensWidget(groups[groupsIndex], this._editor, this._styleClassName, helper, viewZoneAccessor, () => this._detectVisibleLenses && this._detectVisibleLenses.schedule()));\r\n codeLensIndex++;\r\n groupsIndex++;\r\n }\r\n }\r\n // Delete extra code lenses\r\n while (codeLensIndex < this._lenses.length) {\r\n this._lenses[codeLensIndex].dispose(helper, viewZoneAccessor);\r\n this._lenses.splice(codeLensIndex, 1);\r\n }\r\n // Create extra symbols\r\n while (groupsIndex < groups.length) {\r\n this._lenses.push(new CodeLensWidget(groups[groupsIndex], this._editor, this._styleClassName, helper, viewZoneAccessor, () => this._detectVisibleLenses && this._detectVisibleLenses.schedule()));\r\n groupsIndex++;\r\n }\r\n helper.commit(decorationsAccessor);\r\n });\r\n });\r\n scrollState.restore(this._editor);\r\n }\r\n _onViewportChanged() {\r\n if (this._currentResolveCodeLensSymbolsPromise) {\r\n this._currentResolveCodeLensSymbolsPromise.cancel();\r\n this._currentResolveCodeLensSymbolsPromise = undefined;\r\n }\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n const toResolve = [];\r\n const lenses = [];\r\n this._lenses.forEach((lens) => {\r\n const request = lens.computeIfNecessary(model);\r\n if (request) {\r\n toResolve.push(request);\r\n lenses.push(lens);\r\n }\r\n });\r\n if (toResolve.length === 0) {\r\n return;\r\n }\r\n const resolvePromise = createCancelablePromise(token => {\r\n const promises = toResolve.map((request, i) => {\r\n const resolvedSymbols = new Array(request.length);\r\n const promises = request.map((request, i) => {\r\n if (!request.symbol.command && typeof request.provider.resolveCodeLens === 'function') {\r\n return Promise.resolve(request.provider.resolveCodeLens(model, request.symbol, token)).then(symbol => {\r\n resolvedSymbols[i] = symbol;\r\n }, onUnexpectedExternalError);\r\n }\r\n else {\r\n resolvedSymbols[i] = request.symbol;\r\n return Promise.resolve(undefined);\r\n }\r\n });\r\n return Promise.all(promises).then(() => {\r\n if (!token.isCancellationRequested && !lenses[i].isDisposed()) {\r\n lenses[i].updateCommands(resolvedSymbols);\r\n }\r\n });\r\n });\r\n return Promise.all(promises);\r\n });\r\n this._currentResolveCodeLensSymbolsPromise = resolvePromise;\r\n this._currentResolveCodeLensSymbolsPromise.then(() => {\r\n if (this._currentCodeLensModel) { // update the cached state with new resolved items\r\n this._codeLensCache.put(model, this._currentCodeLensModel);\r\n }\r\n this._oldCodeLensModels.clear(); // dispose old models once we have updated the UI with the current model\r\n if (resolvePromise === this._currentResolveCodeLensSymbolsPromise) {\r\n this._currentResolveCodeLensSymbolsPromise = undefined;\r\n }\r\n }, err => {\r\n onUnexpectedError(err); // can also be cancellation!\r\n if (resolvePromise === this._currentResolveCodeLensSymbolsPromise) {\r\n this._currentResolveCodeLensSymbolsPromise = undefined;\r\n }\r\n });\r\n }\r\n getLenses() {\r\n return this._lenses;\r\n }\r\n};\r\nCodeLensContribution.ID = 'css.editor.codeLens';\r\nCodeLensContribution = __decorate([\r\n __param(1, ICommandService),\r\n __param(2, INotificationService),\r\n __param(3, ICodeLensCache)\r\n], CodeLensContribution);\r\nexport { CodeLensContribution };\r\nregisterEditorContribution(CodeLensContribution.ID, CodeLensContribution);\r\nregisterEditorAction(class ShowLensesInCurrentLine extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'codelens.showLensesInCurrentLine',\r\n precondition: EditorContextKeys.hasCodeLensProvider,\r\n label: localize('showLensOnLine', \"Show CodeLens Commands For Current Line\"),\r\n alias: 'Show CodeLens Commands For Current Line',\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const quickInputService = accessor.get(IQuickInputService);\r\n const commandService = accessor.get(ICommandService);\r\n const notificationService = accessor.get(INotificationService);\r\n const lineNumber = editor.getSelection().positionLineNumber;\r\n const codelensController = editor.getContribution(CodeLensContribution.ID);\r\n const items = [];\r\n for (let lens of codelensController.getLenses()) {\r\n if (lens.getLineNumber() === lineNumber) {\r\n for (let item of lens.getItems()) {\r\n const { command } = item.symbol;\r\n if (command) {\r\n items.push({\r\n label: command.title,\r\n command: command\r\n });\r\n }\r\n }\r\n }\r\n }\r\n if (items.length === 0) {\r\n // We dont want an empty picker\r\n return;\r\n }\r\n const item = yield quickInputService.pick(items, { canPickMany: false });\r\n if (!item) {\r\n // Nothing picked\r\n return;\r\n }\r\n try {\r\n yield commandService.executeCommand(item.command.id, ...(item.command.arguments || []));\r\n }\r\n catch (err) {\r\n notificationService.error(err);\r\n }\r\n });\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './codelensWidget.css';\r\nimport { renderCodicons } from '../../../base/common/codicons.js';\r\nimport { escape } from '../../../base/common/strings.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { editorCodeLensForeground } from '../../common/view/editorColorRegistry.js';\r\nimport { editorActiveLinkForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nclass CodeLensViewZone {\r\n constructor(afterLineNumber, onHeight) {\r\n this.afterLineNumber = afterLineNumber;\r\n this._onHeight = onHeight;\r\n this.heightInLines = 1;\r\n this.suppressMouseDown = true;\r\n this.domNode = document.createElement('div');\r\n }\r\n onComputedHeight(height) {\r\n if (this._lastHeight === undefined) {\r\n this._lastHeight = height;\r\n }\r\n else if (this._lastHeight !== height) {\r\n this._lastHeight = height;\r\n this._onHeight();\r\n }\r\n }\r\n}\r\nclass CodeLensContentWidget {\r\n constructor(editor, className, line) {\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = false;\r\n this.suppressMouseDown = true;\r\n this._commands = new Map();\r\n this._isEmpty = true;\r\n this._editor = editor;\r\n this._id = `codelens.widget-${(CodeLensContentWidget._idPool++)}`;\r\n this.updatePosition(line);\r\n this._domNode = document.createElement('span');\r\n this._domNode.className = `codelens-decoration ${className}`;\r\n }\r\n withCommands(lenses, animate) {\r\n this._commands.clear();\r\n let innerHtml = '';\r\n let hasSymbol = false;\r\n for (let i = 0; i < lenses.length; i++) {\r\n const lens = lenses[i];\r\n if (!lens) {\r\n continue;\r\n }\r\n hasSymbol = true;\r\n if (lens.command) {\r\n const title = renderCodicons(escape(lens.command.title));\r\n if (lens.command.id) {\r\n innerHtml += `<a id=${i}>${title}</a>`;\r\n this._commands.set(String(i), lens.command);\r\n }\r\n else {\r\n innerHtml += `<span>${title}</span>`;\r\n }\r\n if (i + 1 < lenses.length) {\r\n innerHtml += '<span> | </span>';\r\n }\r\n }\r\n }\r\n if (!hasSymbol) {\r\n // symbols but no commands\r\n this._domNode.innerHTML = '<span>no commands</span>';\r\n }\r\n else {\r\n // symbols and commands\r\n if (!innerHtml) {\r\n innerHtml = '\\u00a0';\r\n }\r\n this._domNode.innerHTML = innerHtml;\r\n if (this._isEmpty && animate) {\r\n this._domNode.classList.add('fadein');\r\n }\r\n this._isEmpty = false;\r\n }\r\n }\r\n getCommand(link) {\r\n return link.parentElement === this._domNode\r\n ? this._commands.get(link.id)\r\n : undefined;\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n updatePosition(line) {\r\n const column = this._editor.getModel().getLineFirstNonWhitespaceColumn(line);\r\n this._widgetPosition = {\r\n position: { lineNumber: line, column: column },\r\n preference: [1 /* ABOVE */]\r\n };\r\n }\r\n getPosition() {\r\n return this._widgetPosition || null;\r\n }\r\n}\r\nCodeLensContentWidget._idPool = 0;\r\nexport class CodeLensHelper {\r\n constructor() {\r\n this._removeDecorations = [];\r\n this._addDecorations = [];\r\n this._addDecorationsCallbacks = [];\r\n }\r\n addDecoration(decoration, callback) {\r\n this._addDecorations.push(decoration);\r\n this._addDecorationsCallbacks.push(callback);\r\n }\r\n removeDecoration(decorationId) {\r\n this._removeDecorations.push(decorationId);\r\n }\r\n commit(changeAccessor) {\r\n let resultingDecorations = changeAccessor.deltaDecorations(this._removeDecorations, this._addDecorations);\r\n for (let i = 0, len = resultingDecorations.length; i < len; i++) {\r\n this._addDecorationsCallbacks[i](resultingDecorations[i]);\r\n }\r\n }\r\n}\r\nexport class CodeLensWidget {\r\n constructor(data, editor, className, helper, viewZoneChangeAccessor, updateCallback) {\r\n this._isDisposed = false;\r\n this._editor = editor;\r\n this._className = className;\r\n this._data = data;\r\n // create combined range, track all ranges with decorations,\r\n // check if there is already something to render\r\n this._decorationIds = [];\r\n let range;\r\n let lenses = [];\r\n this._data.forEach((codeLensData, i) => {\r\n if (codeLensData.symbol.command) {\r\n lenses.push(codeLensData.symbol);\r\n }\r\n helper.addDecoration({\r\n range: codeLensData.symbol.range,\r\n options: ModelDecorationOptions.EMPTY\r\n }, id => this._decorationIds[i] = id);\r\n // the range contains all lenses on this line\r\n if (!range) {\r\n range = Range.lift(codeLensData.symbol.range);\r\n }\r\n else {\r\n range = Range.plusRange(range, codeLensData.symbol.range);\r\n }\r\n });\r\n this._viewZone = new CodeLensViewZone(range.startLineNumber - 1, updateCallback);\r\n this._viewZoneId = viewZoneChangeAccessor.addZone(this._viewZone);\r\n if (lenses.length > 0) {\r\n this._createContentWidgetIfNecessary();\r\n this._contentWidget.withCommands(lenses, false);\r\n }\r\n }\r\n _createContentWidgetIfNecessary() {\r\n if (!this._contentWidget) {\r\n this._contentWidget = new CodeLensContentWidget(this._editor, this._className, this._viewZone.afterLineNumber + 1);\r\n this._editor.addContentWidget(this._contentWidget);\r\n }\r\n }\r\n dispose(helper, viewZoneChangeAccessor) {\r\n this._decorationIds.forEach(helper.removeDecoration, helper);\r\n this._decorationIds = [];\r\n if (viewZoneChangeAccessor) {\r\n viewZoneChangeAccessor.removeZone(this._viewZoneId);\r\n }\r\n if (this._contentWidget) {\r\n this._editor.removeContentWidget(this._contentWidget);\r\n this._contentWidget = undefined;\r\n }\r\n this._isDisposed = true;\r\n }\r\n isDisposed() {\r\n return this._isDisposed;\r\n }\r\n isValid() {\r\n return this._decorationIds.some((id, i) => {\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n const symbol = this._data[i].symbol;\r\n return !!(range && Range.isEmpty(symbol.range) === range.isEmpty());\r\n });\r\n }\r\n updateCodeLensSymbols(data, helper) {\r\n this._decorationIds.forEach(helper.removeDecoration, helper);\r\n this._decorationIds = [];\r\n this._data = data;\r\n this._data.forEach((codeLensData, i) => {\r\n helper.addDecoration({\r\n range: codeLensData.symbol.range,\r\n options: ModelDecorationOptions.EMPTY\r\n }, id => this._decorationIds[i] = id);\r\n });\r\n }\r\n computeIfNecessary(model) {\r\n if (!this._viewZone.domNode.hasAttribute('monaco-visible-view-zone')) {\r\n return null;\r\n }\r\n // Read editor current state\r\n for (let i = 0; i < this._decorationIds.length; i++) {\r\n const range = model.getDecorationRange(this._decorationIds[i]);\r\n if (range) {\r\n this._data[i].symbol.range = range;\r\n }\r\n }\r\n return this._data;\r\n }\r\n updateCommands(symbols) {\r\n this._createContentWidgetIfNecessary();\r\n this._contentWidget.withCommands(symbols, true);\r\n for (let i = 0; i < this._data.length; i++) {\r\n const resolved = symbols[i];\r\n if (resolved) {\r\n const { symbol } = this._data[i];\r\n symbol.command = resolved.command || symbol.command;\r\n }\r\n }\r\n }\r\n getCommand(link) {\r\n var _a;\r\n return (_a = this._contentWidget) === null || _a === void 0 ? void 0 : _a.getCommand(link);\r\n }\r\n getLineNumber() {\r\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\r\n if (range) {\r\n return range.startLineNumber;\r\n }\r\n return -1;\r\n }\r\n update(viewZoneChangeAccessor) {\r\n if (this.isValid()) {\r\n const range = this._editor.getModel().getDecorationRange(this._decorationIds[0]);\r\n if (range) {\r\n this._viewZone.afterLineNumber = range.startLineNumber - 1;\r\n viewZoneChangeAccessor.layoutZone(this._viewZoneId);\r\n if (this._contentWidget) {\r\n this._contentWidget.updatePosition(range.startLineNumber);\r\n this._editor.layoutContentWidget(this._contentWidget);\r\n }\r\n }\r\n }\r\n }\r\n getItems() {\r\n return this._data;\r\n }\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const codeLensForeground = theme.getColor(editorCodeLensForeground);\r\n if (codeLensForeground) {\r\n collector.addRule(`.monaco-editor .codelens-decoration { color: ${codeLensForeground}; }`);\r\n collector.addRule(`.monaco-editor .codelens-decoration .codicon { color: ${codeLensForeground}; }`);\r\n }\r\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\r\n if (activeLinkForeground) {\r\n collector.addRule(`.monaco-editor .codelens-decoration > a:hover { color: ${activeLinkForeground} !important; }`);\r\n collector.addRule(`.monaco-editor .codelens-decoration > a:hover .codicon { color: ${activeLinkForeground} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { registerLanguageCommand } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ColorProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nexport function getColors(model, token) {\r\n const colors = [];\r\n const providers = ColorProviderRegistry.ordered(model).reverse();\r\n const promises = providers.map(provider => Promise.resolve(provider.provideDocumentColors(model, token)).then(result => {\r\n if (Array.isArray(result)) {\r\n for (let colorInfo of result) {\r\n colors.push({ colorInfo, provider });\r\n }\r\n }\r\n }));\r\n return Promise.all(promises).then(() => colors);\r\n}\r\nexport function getColorPresentations(model, colorInfo, provider, token) {\r\n return Promise.resolve(provider.provideColorPresentations(model, colorInfo, token));\r\n}\r\nregisterLanguageCommand('_executeDocumentColorProvider', function (accessor, args) {\r\n const { resource } = args;\r\n if (!(resource instanceof URI)) {\r\n throw illegalArgument();\r\n }\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const rawCIs = [];\r\n const providers = ColorProviderRegistry.ordered(model).reverse();\r\n const promises = providers.map(provider => Promise.resolve(provider.provideDocumentColors(model, CancellationToken.None)).then(result => {\r\n if (Array.isArray(result)) {\r\n for (let ci of result) {\r\n rawCIs.push({ range: ci.range, color: [ci.color.red, ci.color.green, ci.color.blue, ci.color.alpha] });\r\n }\r\n }\r\n }));\r\n return Promise.all(promises).then(() => rawCIs);\r\n});\r\nregisterLanguageCommand('_executeColorPresentationProvider', function (accessor, args) {\r\n const { resource, color, range } = args;\r\n if (!(resource instanceof URI) || !Array.isArray(color) || color.length !== 4 || !Range.isIRange(range)) {\r\n throw illegalArgument();\r\n }\r\n const [red, green, blue, alpha] = color;\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument();\r\n }\r\n const colorInfo = {\r\n range,\r\n color: { red, green, blue, alpha }\r\n };\r\n const presentations = [];\r\n const providers = ColorProviderRegistry.ordered(model).reverse();\r\n const promises = providers.map(provider => Promise.resolve(provider.provideColorPresentations(model, colorInfo, CancellationToken.None)).then(result => {\r\n if (Array.isArray(result)) {\r\n presentations.push(...result);\r\n }\r\n }));\r\n return Promise.all(promises).then(() => presentations);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { TimeoutTimer, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { RGBA } from '../../../base/common/color.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { hash } from '../../../base/common/hash.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { ColorProviderRegistry } from '../../common/modes.js';\r\nimport { getColors } from './color.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nconst MAX_DECORATORS = 500;\r\nlet ColorDetector = class ColorDetector extends Disposable {\r\n constructor(_editor, _codeEditorService, _configurationService) {\r\n super();\r\n this._editor = _editor;\r\n this._codeEditorService = _codeEditorService;\r\n this._configurationService = _configurationService;\r\n this._localToDispose = this._register(new DisposableStore());\r\n this._decorationsIds = [];\r\n this._colorDatas = new Map();\r\n this._colorDecoratorIds = [];\r\n this._decorationsTypes = new Set();\r\n this._register(_editor.onDidChangeModel((e) => {\r\n this._isEnabled = this.isEnabled();\r\n this.onModelChanged();\r\n }));\r\n this._register(_editor.onDidChangeModelLanguage((e) => this.onModelChanged()));\r\n this._register(ColorProviderRegistry.onDidChange((e) => this.onModelChanged()));\r\n this._register(_editor.onDidChangeConfiguration((e) => {\r\n let prevIsEnabled = this._isEnabled;\r\n this._isEnabled = this.isEnabled();\r\n if (prevIsEnabled !== this._isEnabled) {\r\n if (this._isEnabled) {\r\n this.onModelChanged();\r\n }\r\n else {\r\n this.removeAllDecorations();\r\n }\r\n }\r\n }));\r\n this._timeoutTimer = null;\r\n this._computePromise = null;\r\n this._isEnabled = this.isEnabled();\r\n this.onModelChanged();\r\n }\r\n isEnabled() {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return false;\r\n }\r\n const languageId = model.getLanguageIdentifier();\r\n // handle deprecated settings. [languageId].colorDecorators.enable\r\n const deprecatedConfig = this._configurationService.getValue(languageId.language);\r\n if (deprecatedConfig) {\r\n const colorDecorators = deprecatedConfig['colorDecorators']; // deprecatedConfig.valueOf('.colorDecorators.enable');\r\n if (colorDecorators && colorDecorators['enable'] !== undefined && !colorDecorators['enable']) {\r\n return colorDecorators['enable'];\r\n }\r\n }\r\n return this._editor.getOption(12 /* colorDecorators */);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(this.ID);\r\n }\r\n dispose() {\r\n this.stop();\r\n this.removeAllDecorations();\r\n super.dispose();\r\n }\r\n onModelChanged() {\r\n this.stop();\r\n if (!this._isEnabled) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n if (!model || !ColorProviderRegistry.has(model)) {\r\n return;\r\n }\r\n this._localToDispose.add(this._editor.onDidChangeModelContent((e) => {\r\n if (!this._timeoutTimer) {\r\n this._timeoutTimer = new TimeoutTimer();\r\n this._timeoutTimer.cancelAndSet(() => {\r\n this._timeoutTimer = null;\r\n this.beginCompute();\r\n }, ColorDetector.RECOMPUTE_TIME);\r\n }\r\n }));\r\n this.beginCompute();\r\n }\r\n beginCompute() {\r\n this._computePromise = createCancelablePromise(token => {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return Promise.resolve([]);\r\n }\r\n return getColors(model, token);\r\n });\r\n this._computePromise.then((colorInfos) => {\r\n this.updateDecorations(colorInfos);\r\n this.updateColorDecorators(colorInfos);\r\n this._computePromise = null;\r\n }, onUnexpectedError);\r\n }\r\n stop() {\r\n if (this._timeoutTimer) {\r\n this._timeoutTimer.cancel();\r\n this._timeoutTimer = null;\r\n }\r\n if (this._computePromise) {\r\n this._computePromise.cancel();\r\n this._computePromise = null;\r\n }\r\n this._localToDispose.clear();\r\n }\r\n updateDecorations(colorDatas) {\r\n const decorations = colorDatas.map(c => ({\r\n range: {\r\n startLineNumber: c.colorInfo.range.startLineNumber,\r\n startColumn: c.colorInfo.range.startColumn,\r\n endLineNumber: c.colorInfo.range.endLineNumber,\r\n endColumn: c.colorInfo.range.endColumn\r\n },\r\n options: ModelDecorationOptions.EMPTY\r\n }));\r\n this._decorationsIds = this._editor.deltaDecorations(this._decorationsIds, decorations);\r\n this._colorDatas = new Map();\r\n this._decorationsIds.forEach((id, i) => this._colorDatas.set(id, colorDatas[i]));\r\n }\r\n updateColorDecorators(colorData) {\r\n let decorations = [];\r\n let newDecorationsTypes = {};\r\n for (let i = 0; i < colorData.length && decorations.length < MAX_DECORATORS; i++) {\r\n const { red, green, blue, alpha } = colorData[i].colorInfo.color;\r\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\r\n let subKey = hash(`rgba(${rgba.r},${rgba.g},${rgba.b},${rgba.a})`).toString(16);\r\n let color = `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\r\n let key = 'colorBox-' + subKey;\r\n if (!this._decorationsTypes.has(key) && !newDecorationsTypes[key]) {\r\n this._codeEditorService.registerDecorationType(key, {\r\n before: {\r\n contentText: ' ',\r\n border: 'solid 0.1em #000',\r\n margin: '0.1em 0.2em 0 0.2em',\r\n width: '0.8em',\r\n height: '0.8em',\r\n backgroundColor: color\r\n },\r\n dark: {\r\n before: {\r\n border: 'solid 0.1em #eee'\r\n }\r\n }\r\n }, undefined, this._editor);\r\n }\r\n newDecorationsTypes[key] = true;\r\n decorations.push({\r\n range: {\r\n startLineNumber: colorData[i].colorInfo.range.startLineNumber,\r\n startColumn: colorData[i].colorInfo.range.startColumn,\r\n endLineNumber: colorData[i].colorInfo.range.endLineNumber,\r\n endColumn: colorData[i].colorInfo.range.endColumn\r\n },\r\n options: this._codeEditorService.resolveDecorationOptions(key, true)\r\n });\r\n }\r\n this._decorationsTypes.forEach(subType => {\r\n if (!newDecorationsTypes[subType]) {\r\n this._codeEditorService.removeDecorationType(subType);\r\n }\r\n });\r\n this._colorDecoratorIds = this._editor.deltaDecorations(this._colorDecoratorIds, decorations);\r\n }\r\n removeAllDecorations() {\r\n this._decorationsIds = this._editor.deltaDecorations(this._decorationsIds, []);\r\n this._colorDecoratorIds = this._editor.deltaDecorations(this._colorDecoratorIds, []);\r\n this._decorationsTypes.forEach(subType => {\r\n this._codeEditorService.removeDecorationType(subType);\r\n });\r\n }\r\n getColorData(position) {\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return null;\r\n }\r\n const decorations = model\r\n .getDecorationsInRange(Range.fromPositions(position, position))\r\n .filter(d => this._colorDatas.has(d.id));\r\n if (decorations.length === 0) {\r\n return null;\r\n }\r\n return this._colorDatas.get(decorations[0].id);\r\n }\r\n};\r\nColorDetector.ID = 'editor.contrib.colorDetector';\r\nColorDetector.RECOMPUTE_TIME = 1000; // ms\r\nColorDetector = __decorate([\r\n __param(1, ICodeEditorService),\r\n __param(2, IConfigurationService)\r\n], ColorDetector);\r\nexport { ColorDetector };\r\nregisterEditorContribution(ColorDetector.ID, ColorDetector);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport class ColorPickerModel {\r\n constructor(color, availableColorPresentations, presentationIndex) {\r\n this.presentationIndex = presentationIndex;\r\n this._onColorFlushed = new Emitter();\r\n this.onColorFlushed = this._onColorFlushed.event;\r\n this._onDidChangeColor = new Emitter();\r\n this.onDidChangeColor = this._onDidChangeColor.event;\r\n this._onDidChangePresentation = new Emitter();\r\n this.onDidChangePresentation = this._onDidChangePresentation.event;\r\n this.originalColor = color;\r\n this._color = color;\r\n this._colorPresentations = availableColorPresentations;\r\n }\r\n get color() {\r\n return this._color;\r\n }\r\n set color(color) {\r\n if (this._color.equals(color)) {\r\n return;\r\n }\r\n this._color = color;\r\n this._onDidChangeColor.fire(color);\r\n }\r\n get presentation() { return this.colorPresentations[this.presentationIndex]; }\r\n get colorPresentations() {\r\n return this._colorPresentations;\r\n }\r\n set colorPresentations(colorPresentations) {\r\n this._colorPresentations = colorPresentations;\r\n if (this.presentationIndex > colorPresentations.length - 1) {\r\n this.presentationIndex = 0;\r\n }\r\n this._onDidChangePresentation.fire(this.presentation);\r\n }\r\n selectNextColorPresentation() {\r\n this.presentationIndex = (this.presentationIndex + 1) % this.colorPresentations.length;\r\n this.flushColor();\r\n this._onDidChangePresentation.fire(this.presentation);\r\n }\r\n guessColorPresentation(color, originalText) {\r\n for (let i = 0; i < this.colorPresentations.length; i++) {\r\n if (originalText.toLowerCase() === this.colorPresentations[i].label) {\r\n this.presentationIndex = i;\r\n this._onDidChangePresentation.fire(this.presentation);\r\n break;\r\n }\r\n }\r\n }\r\n flushColor() {\r\n this._onColorFlushed.fire(this._color);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './colorPicker.css';\r\nimport { onDidChangeZoomLevel } from '../../../base/browser/browser.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { GlobalMouseMoveMonitor, standardMouseMoveMerger } from '../../../base/browser/globalMouseMoveMonitor.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { Color, HSVA, RGBA } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { editorHoverBackground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nconst $ = dom.$;\r\nexport class ColorPickerHeader extends Disposable {\r\n constructor(container, model, themeService) {\r\n super();\r\n this.model = model;\r\n this.domNode = $('.colorpicker-header');\r\n dom.append(container, this.domNode);\r\n this.pickedColorNode = dom.append(this.domNode, $('.picked-color'));\r\n const colorBox = dom.append(this.domNode, $('.original-color'));\r\n colorBox.style.backgroundColor = Color.Format.CSS.format(this.model.originalColor) || '';\r\n this.backgroundColor = themeService.getColorTheme().getColor(editorHoverBackground) || Color.white;\r\n this._register(registerThemingParticipant((theme, collector) => {\r\n this.backgroundColor = theme.getColor(editorHoverBackground) || Color.white;\r\n }));\r\n this._register(dom.addDisposableListener(this.pickedColorNode, dom.EventType.CLICK, () => this.model.selectNextColorPresentation()));\r\n this._register(dom.addDisposableListener(colorBox, dom.EventType.CLICK, () => {\r\n this.model.color = this.model.originalColor;\r\n this.model.flushColor();\r\n }));\r\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\r\n this._register(model.onDidChangePresentation(this.onDidChangePresentation, this));\r\n this.pickedColorNode.style.backgroundColor = Color.Format.CSS.format(model.color) || '';\r\n dom.toggleClass(this.pickedColorNode, 'light', model.color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : model.color.isLighter());\r\n }\r\n onDidChangeColor(color) {\r\n this.pickedColorNode.style.backgroundColor = Color.Format.CSS.format(color) || '';\r\n dom.toggleClass(this.pickedColorNode, 'light', color.rgba.a < 0.5 ? this.backgroundColor.isLighter() : color.isLighter());\r\n this.onDidChangePresentation();\r\n }\r\n onDidChangePresentation() {\r\n this.pickedColorNode.textContent = this.model.presentation ? this.model.presentation.label : '';\r\n }\r\n}\r\nexport class ColorPickerBody extends Disposable {\r\n constructor(container, model, pixelRatio) {\r\n super();\r\n this.model = model;\r\n this.pixelRatio = pixelRatio;\r\n this.domNode = $('.colorpicker-body');\r\n dom.append(container, this.domNode);\r\n this.saturationBox = new SaturationBox(this.domNode, this.model, this.pixelRatio);\r\n this._register(this.saturationBox);\r\n this._register(this.saturationBox.onDidChange(this.onDidSaturationValueChange, this));\r\n this._register(this.saturationBox.onColorFlushed(this.flushColor, this));\r\n this.opacityStrip = new OpacityStrip(this.domNode, this.model);\r\n this._register(this.opacityStrip);\r\n this._register(this.opacityStrip.onDidChange(this.onDidOpacityChange, this));\r\n this._register(this.opacityStrip.onColorFlushed(this.flushColor, this));\r\n this.hueStrip = new HueStrip(this.domNode, this.model);\r\n this._register(this.hueStrip);\r\n this._register(this.hueStrip.onDidChange(this.onDidHueChange, this));\r\n this._register(this.hueStrip.onColorFlushed(this.flushColor, this));\r\n }\r\n flushColor() {\r\n this.model.flushColor();\r\n }\r\n onDidSaturationValueChange({ s, v }) {\r\n const hsva = this.model.color.hsva;\r\n this.model.color = new Color(new HSVA(hsva.h, s, v, hsva.a));\r\n }\r\n onDidOpacityChange(a) {\r\n const hsva = this.model.color.hsva;\r\n this.model.color = new Color(new HSVA(hsva.h, hsva.s, hsva.v, a));\r\n }\r\n onDidHueChange(value) {\r\n const hsva = this.model.color.hsva;\r\n const h = (1 - value) * 360;\r\n this.model.color = new Color(new HSVA(h === 360 ? 0 : h, hsva.s, hsva.v, hsva.a));\r\n }\r\n layout() {\r\n this.saturationBox.layout();\r\n this.opacityStrip.layout();\r\n this.hueStrip.layout();\r\n }\r\n}\r\nclass SaturationBox extends Disposable {\r\n constructor(container, model, pixelRatio) {\r\n super();\r\n this.model = model;\r\n this.pixelRatio = pixelRatio;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onColorFlushed = new Emitter();\r\n this.onColorFlushed = this._onColorFlushed.event;\r\n this.domNode = $('.saturation-wrap');\r\n dom.append(container, this.domNode);\r\n // Create canvas, draw selected color\r\n this.canvas = document.createElement('canvas');\r\n this.canvas.className = 'saturation-box';\r\n dom.append(this.domNode, this.canvas);\r\n // Add selection circle\r\n this.selection = $('.saturation-selection');\r\n dom.append(this.domNode, this.selection);\r\n this.layout();\r\n this._register(dom.addDisposableGenericMouseDownListner(this.domNode, e => this.onMouseDown(e)));\r\n this._register(this.model.onDidChangeColor(this.onDidChangeColor, this));\r\n this.monitor = null;\r\n }\r\n onMouseDown(e) {\r\n this.monitor = this._register(new GlobalMouseMoveMonitor());\r\n const origin = dom.getDomNodePagePosition(this.domNode);\r\n if (e.target !== this.selection) {\r\n this.onDidChangePosition(e.offsetX, e.offsetY);\r\n }\r\n this.monitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, event => this.onDidChangePosition(event.posx - origin.left, event.posy - origin.top), () => null);\r\n const mouseUpListener = dom.addDisposableGenericMouseUpListner(document, () => {\r\n this._onColorFlushed.fire();\r\n mouseUpListener.dispose();\r\n if (this.monitor) {\r\n this.monitor.stopMonitoring(true);\r\n this.monitor = null;\r\n }\r\n }, true);\r\n }\r\n onDidChangePosition(left, top) {\r\n const s = Math.max(0, Math.min(1, left / this.width));\r\n const v = Math.max(0, Math.min(1, 1 - (top / this.height)));\r\n this.paintSelection(s, v);\r\n this._onDidChange.fire({ s, v });\r\n }\r\n layout() {\r\n this.width = this.domNode.offsetWidth;\r\n this.height = this.domNode.offsetHeight;\r\n this.canvas.width = this.width * this.pixelRatio;\r\n this.canvas.height = this.height * this.pixelRatio;\r\n this.paint();\r\n const hsva = this.model.color.hsva;\r\n this.paintSelection(hsva.s, hsva.v);\r\n }\r\n paint() {\r\n const hsva = this.model.color.hsva;\r\n const saturatedColor = new Color(new HSVA(hsva.h, 1, 1, 1));\r\n const ctx = this.canvas.getContext('2d');\r\n const whiteGradient = ctx.createLinearGradient(0, 0, this.canvas.width, 0);\r\n whiteGradient.addColorStop(0, 'rgba(255, 255, 255, 1)');\r\n whiteGradient.addColorStop(0.5, 'rgba(255, 255, 255, 0.5)');\r\n whiteGradient.addColorStop(1, 'rgba(255, 255, 255, 0)');\r\n const blackGradient = ctx.createLinearGradient(0, 0, 0, this.canvas.height);\r\n blackGradient.addColorStop(0, 'rgba(0, 0, 0, 0)');\r\n blackGradient.addColorStop(1, 'rgba(0, 0, 0, 1)');\r\n ctx.rect(0, 0, this.canvas.width, this.canvas.height);\r\n ctx.fillStyle = Color.Format.CSS.format(saturatedColor);\r\n ctx.fill();\r\n ctx.fillStyle = whiteGradient;\r\n ctx.fill();\r\n ctx.fillStyle = blackGradient;\r\n ctx.fill();\r\n }\r\n paintSelection(s, v) {\r\n this.selection.style.left = `${s * this.width}px`;\r\n this.selection.style.top = `${this.height - v * this.height}px`;\r\n }\r\n onDidChangeColor() {\r\n if (this.monitor && this.monitor.isMonitoring()) {\r\n return;\r\n }\r\n this.paint();\r\n }\r\n}\r\nclass Strip extends Disposable {\r\n constructor(container, model) {\r\n super();\r\n this.model = model;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._onColorFlushed = new Emitter();\r\n this.onColorFlushed = this._onColorFlushed.event;\r\n this.domNode = dom.append(container, $('.strip'));\r\n this.overlay = dom.append(this.domNode, $('.overlay'));\r\n this.slider = dom.append(this.domNode, $('.slider'));\r\n this.slider.style.top = `0px`;\r\n this._register(dom.addDisposableGenericMouseDownListner(this.domNode, e => this.onMouseDown(e)));\r\n this.layout();\r\n }\r\n layout() {\r\n this.height = this.domNode.offsetHeight - this.slider.offsetHeight;\r\n const value = this.getValue(this.model.color);\r\n this.updateSliderPosition(value);\r\n }\r\n onMouseDown(e) {\r\n const monitor = this._register(new GlobalMouseMoveMonitor());\r\n const origin = dom.getDomNodePagePosition(this.domNode);\r\n dom.addClass(this.domNode, 'grabbing');\r\n if (e.target !== this.slider) {\r\n this.onDidChangeTop(e.offsetY);\r\n }\r\n monitor.startMonitoring(e.target, e.buttons, standardMouseMoveMerger, event => this.onDidChangeTop(event.posy - origin.top), () => null);\r\n const mouseUpListener = dom.addDisposableGenericMouseUpListner(document, () => {\r\n this._onColorFlushed.fire();\r\n mouseUpListener.dispose();\r\n monitor.stopMonitoring(true);\r\n dom.removeClass(this.domNode, 'grabbing');\r\n }, true);\r\n }\r\n onDidChangeTop(top) {\r\n const value = Math.max(0, Math.min(1, 1 - (top / this.height)));\r\n this.updateSliderPosition(value);\r\n this._onDidChange.fire(value);\r\n }\r\n updateSliderPosition(value) {\r\n this.slider.style.top = `${(1 - value) * this.height}px`;\r\n }\r\n}\r\nclass OpacityStrip extends Strip {\r\n constructor(container, model) {\r\n super(container, model);\r\n dom.addClass(this.domNode, 'opacity-strip');\r\n this._register(model.onDidChangeColor(this.onDidChangeColor, this));\r\n this.onDidChangeColor(this.model.color);\r\n }\r\n onDidChangeColor(color) {\r\n const { r, g, b } = color.rgba;\r\n const opaque = new Color(new RGBA(r, g, b, 1));\r\n const transparent = new Color(new RGBA(r, g, b, 0));\r\n this.overlay.style.background = `linear-gradient(to bottom, ${opaque} 0%, ${transparent} 100%)`;\r\n }\r\n getValue(color) {\r\n return color.hsva.a;\r\n }\r\n}\r\nclass HueStrip extends Strip {\r\n constructor(container, model) {\r\n super(container, model);\r\n dom.addClass(this.domNode, 'hue-strip');\r\n }\r\n getValue(color) {\r\n return 1 - (color.hsva.h / 360);\r\n }\r\n}\r\nexport class ColorPickerWidget extends Widget {\r\n constructor(container, model, pixelRatio, themeService) {\r\n super();\r\n this.model = model;\r\n this.pixelRatio = pixelRatio;\r\n this._register(onDidChangeZoomLevel(() => this.layout()));\r\n const element = $('.colorpicker-widget');\r\n container.appendChild(element);\r\n const header = new ColorPickerHeader(element, this.model, themeService);\r\n this.body = new ColorPickerBody(element, this.model, this.pixelRatio);\r\n this._register(header);\r\n this._register(this.body);\r\n }\r\n layout() {\r\n this.body.layout();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nexport class BlockCommentCommand {\r\n constructor(selection, insertSpace) {\r\n this._selection = selection;\r\n this._insertSpace = insertSpace;\r\n this._usedEndToken = null;\r\n }\r\n static _haystackHasNeedleAtOffset(haystack, needle, offset) {\r\n if (offset < 0) {\r\n return false;\r\n }\r\n const needleLength = needle.length;\r\n const haystackLength = haystack.length;\r\n if (offset + needleLength > haystackLength) {\r\n return false;\r\n }\r\n for (let i = 0; i < needleLength; i++) {\r\n const codeA = haystack.charCodeAt(offset + i);\r\n const codeB = needle.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n if (codeA >= 65 /* A */ && codeA <= 90 /* Z */ && codeA + 32 === codeB) {\r\n // codeA is upper-case variant of codeB\r\n continue;\r\n }\r\n if (codeB >= 65 /* A */ && codeB <= 90 /* Z */ && codeB + 32 === codeA) {\r\n // codeB is upper-case variant of codeA\r\n continue;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n _createOperationsForBlockComment(selection, startToken, endToken, insertSpace, model, builder) {\r\n const startLineNumber = selection.startLineNumber;\r\n const startColumn = selection.startColumn;\r\n const endLineNumber = selection.endLineNumber;\r\n const endColumn = selection.endColumn;\r\n const startLineText = model.getLineContent(startLineNumber);\r\n const endLineText = model.getLineContent(endLineNumber);\r\n let startTokenIndex = startLineText.lastIndexOf(startToken, startColumn - 1 + startToken.length);\r\n let endTokenIndex = endLineText.indexOf(endToken, endColumn - 1 - endToken.length);\r\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\r\n if (startLineNumber === endLineNumber) {\r\n const lineBetweenTokens = startLineText.substring(startTokenIndex + startToken.length, endTokenIndex);\r\n if (lineBetweenTokens.indexOf(endToken) >= 0) {\r\n // force to add a block comment\r\n startTokenIndex = -1;\r\n endTokenIndex = -1;\r\n }\r\n }\r\n else {\r\n const startLineAfterStartToken = startLineText.substring(startTokenIndex + startToken.length);\r\n const endLineBeforeEndToken = endLineText.substring(0, endTokenIndex);\r\n if (startLineAfterStartToken.indexOf(endToken) >= 0 || endLineBeforeEndToken.indexOf(endToken) >= 0) {\r\n // force to add a block comment\r\n startTokenIndex = -1;\r\n endTokenIndex = -1;\r\n }\r\n }\r\n }\r\n let ops;\r\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\r\n // Consider spaces as part of the comment tokens\r\n if (insertSpace && startTokenIndex + startToken.length < startLineText.length && startLineText.charCodeAt(startTokenIndex + startToken.length) === 32 /* Space */) {\r\n // Pretend the start token contains a trailing space\r\n startToken = startToken + ' ';\r\n }\r\n if (insertSpace && endTokenIndex > 0 && endLineText.charCodeAt(endTokenIndex - 1) === 32 /* Space */) {\r\n // Pretend the end token contains a leading space\r\n endToken = ' ' + endToken;\r\n endTokenIndex -= 1;\r\n }\r\n ops = BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\r\n }\r\n else {\r\n ops = BlockCommentCommand._createAddBlockCommentOperations(selection, startToken, endToken, this._insertSpace);\r\n this._usedEndToken = ops.length === 1 ? endToken : null;\r\n }\r\n for (const op of ops) {\r\n builder.addTrackedEditOperation(op.range, op.text);\r\n }\r\n }\r\n static _createRemoveBlockCommentOperations(r, startToken, endToken) {\r\n let res = [];\r\n if (!Range.isEmpty(r)) {\r\n // Remove block comment start\r\n res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.startLineNumber, r.startColumn)));\r\n // Remove block comment end\r\n res.push(EditOperation.delete(new Range(r.endLineNumber, r.endColumn, r.endLineNumber, r.endColumn + endToken.length)));\r\n }\r\n else {\r\n // Remove both continuously\r\n res.push(EditOperation.delete(new Range(r.startLineNumber, r.startColumn - startToken.length, r.endLineNumber, r.endColumn + endToken.length)));\r\n }\r\n return res;\r\n }\r\n static _createAddBlockCommentOperations(r, startToken, endToken, insertSpace) {\r\n let res = [];\r\n if (!Range.isEmpty(r)) {\r\n // Insert block comment start\r\n res.push(EditOperation.insert(new Position(r.startLineNumber, r.startColumn), startToken + (insertSpace ? ' ' : '')));\r\n // Insert block comment end\r\n res.push(EditOperation.insert(new Position(r.endLineNumber, r.endColumn), (insertSpace ? ' ' : '') + endToken));\r\n }\r\n else {\r\n // Insert both continuously\r\n res.push(EditOperation.replace(new Range(r.startLineNumber, r.startColumn, r.endLineNumber, r.endColumn), startToken + ' ' + endToken));\r\n }\r\n return res;\r\n }\r\n getEditOperations(model, builder) {\r\n const startLineNumber = this._selection.startLineNumber;\r\n const startColumn = this._selection.startColumn;\r\n model.tokenizeIfCheap(startLineNumber);\r\n const languageId = model.getLanguageIdAtPosition(startLineNumber, startColumn);\r\n const config = LanguageConfigurationRegistry.getComments(languageId);\r\n if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\r\n // Mode does not support block comments\r\n return;\r\n }\r\n this._createOperationsForBlockComment(this._selection, config.blockCommentStartToken, config.blockCommentEndToken, this._insertSpace, model, builder);\r\n }\r\n computeCursorState(model, helper) {\r\n const inverseEditOperations = helper.getInverseEditOperations();\r\n if (inverseEditOperations.length === 2) {\r\n const startTokenEditOperation = inverseEditOperations[0];\r\n const endTokenEditOperation = inverseEditOperations[1];\r\n return new Selection(startTokenEditOperation.range.endLineNumber, startTokenEditOperation.range.endColumn, endTokenEditOperation.range.startLineNumber, endTokenEditOperation.range.startColumn);\r\n }\r\n else {\r\n const srcRange = inverseEditOperations[0].range;\r\n const deltaColumn = this._usedEndToken ? -this._usedEndToken.length - 1 : 0; // minus 1 space before endToken\r\n return new Selection(srcRange.endLineNumber, srcRange.endColumn + deltaColumn, srcRange.endLineNumber, srcRange.endColumn + deltaColumn);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { BlockCommentCommand } from './blockCommentCommand.js';\r\nimport { LineCommentCommand } from './lineCommentCommand.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nclass CommentLineAction extends EditorAction {\r\n constructor(type, opts) {\r\n super(opts);\r\n this._type = type;\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const model = editor.getModel();\r\n const commands = [];\r\n const selections = editor.getSelections();\r\n const modelOptions = model.getOptions();\r\n const commentsOptions = editor.getOption(14 /* comments */);\r\n for (const selection of selections) {\r\n commands.push(new LineCommentCommand(selection, modelOptions.tabSize, this._type, commentsOptions.insertSpace, commentsOptions.ignoreEmptyLines));\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nclass ToggleCommentLineAction extends CommentLineAction {\r\n constructor() {\r\n super(0 /* Toggle */, {\r\n id: 'editor.action.commentLine',\r\n label: nls.localize('comment.line', \"Toggle Line Comment\"),\r\n alias: 'Toggle Line Comment',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 85 /* US_SLASH */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '5_insert',\r\n title: nls.localize({ key: 'miToggleLineComment', comment: ['&& denotes a mnemonic'] }, \"&&Toggle Line Comment\"),\r\n order: 1\r\n }\r\n });\r\n }\r\n}\r\nclass AddLineCommentAction extends CommentLineAction {\r\n constructor() {\r\n super(1 /* ForceAdd */, {\r\n id: 'editor.action.addCommentLine',\r\n label: nls.localize('comment.line.add', \"Add Line Comment\"),\r\n alias: 'Add Line Comment',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 33 /* KEY_C */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nclass RemoveLineCommentAction extends CommentLineAction {\r\n constructor() {\r\n super(2 /* ForceRemove */, {\r\n id: 'editor.action.removeCommentLine',\r\n label: nls.localize('comment.line.remove', \"Remove Line Comment\"),\r\n alias: 'Remove Line Comment',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 51 /* KEY_U */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nclass BlockCommentAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.blockComment',\r\n label: nls.localize('comment.block', \"Toggle Block Comment\"),\r\n alias: 'Toggle Block Comment',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 31 /* KEY_A */,\r\n linux: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 31 /* KEY_A */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '5_insert',\r\n title: nls.localize({ key: 'miToggleBlockComment', comment: ['&& denotes a mnemonic'] }, \"Toggle &&Block Comment\"),\r\n order: 2\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const commentsOptions = editor.getOption(14 /* comments */);\r\n const commands = [];\r\n const selections = editor.getSelections();\r\n for (const selection of selections) {\r\n commands.push(new BlockCommentCommand(selection, commentsOptions.insertSpace));\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nregisterEditorAction(ToggleCommentLineAction);\r\nregisterEditorAction(AddLineCommentAction);\r\nregisterEditorAction(RemoveLineCommentAction);\r\nregisterEditorAction(BlockCommentAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { BlockCommentCommand } from './blockCommentCommand.js';\r\nexport class LineCommentCommand {\r\n constructor(selection, tabSize, type, insertSpace, ignoreEmptyLines) {\r\n this._selection = selection;\r\n this._tabSize = tabSize;\r\n this._type = type;\r\n this._insertSpace = insertSpace;\r\n this._selectionId = null;\r\n this._deltaColumn = 0;\r\n this._moveEndPositionDown = false;\r\n this._ignoreEmptyLines = ignoreEmptyLines;\r\n }\r\n /**\r\n * Do an initial pass over the lines and gather info about the line comment string.\r\n * Returns null if any of the lines doesn't support a line comment string.\r\n */\r\n static _gatherPreflightCommentStrings(model, startLineNumber, endLineNumber) {\r\n model.tokenizeIfCheap(startLineNumber);\r\n const languageId = model.getLanguageIdAtPosition(startLineNumber, 1);\r\n const config = LanguageConfigurationRegistry.getComments(languageId);\r\n const commentStr = (config ? config.lineCommentToken : null);\r\n if (!commentStr) {\r\n // Mode does not support line comments\r\n return null;\r\n }\r\n let lines = [];\r\n for (let i = 0, lineCount = endLineNumber - startLineNumber + 1; i < lineCount; i++) {\r\n lines[i] = {\r\n ignore: false,\r\n commentStr: commentStr,\r\n commentStrOffset: 0,\r\n commentStrLength: commentStr.length\r\n };\r\n }\r\n return lines;\r\n }\r\n /**\r\n * Analyze lines and decide which lines are relevant and what the toggle should do.\r\n * Also, build up several offsets and lengths useful in the generation of editor operations.\r\n */\r\n static _analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines) {\r\n let onlyWhitespaceLines = true;\r\n let shouldRemoveComments;\r\n if (type === 0 /* Toggle */) {\r\n shouldRemoveComments = true;\r\n }\r\n else if (type === 1 /* ForceAdd */) {\r\n shouldRemoveComments = false;\r\n }\r\n else {\r\n shouldRemoveComments = true;\r\n }\r\n for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\r\n const lineData = lines[i];\r\n const lineNumber = startLineNumber + i;\r\n const lineContent = model.getLineContent(lineNumber);\r\n const lineContentStartOffset = strings.firstNonWhitespaceIndex(lineContent);\r\n if (lineContentStartOffset === -1) {\r\n // Empty or whitespace only line\r\n lineData.ignore = ignoreEmptyLines;\r\n lineData.commentStrOffset = lineContent.length;\r\n continue;\r\n }\r\n onlyWhitespaceLines = false;\r\n lineData.ignore = false;\r\n lineData.commentStrOffset = lineContentStartOffset;\r\n if (shouldRemoveComments && !BlockCommentCommand._haystackHasNeedleAtOffset(lineContent, lineData.commentStr, lineContentStartOffset)) {\r\n if (type === 0 /* Toggle */) {\r\n // Every line so far has been a line comment, but this one is not\r\n shouldRemoveComments = false;\r\n }\r\n else if (type === 1 /* ForceAdd */) {\r\n // Will not happen\r\n }\r\n else {\r\n lineData.ignore = true;\r\n }\r\n }\r\n if (shouldRemoveComments && insertSpace) {\r\n // Remove a following space if present\r\n const commentStrEndOffset = lineContentStartOffset + lineData.commentStrLength;\r\n if (commentStrEndOffset < lineContent.length && lineContent.charCodeAt(commentStrEndOffset) === 32 /* Space */) {\r\n lineData.commentStrLength += 1;\r\n }\r\n }\r\n }\r\n if (type === 0 /* Toggle */ && onlyWhitespaceLines) {\r\n // For only whitespace lines, we insert comments\r\n shouldRemoveComments = false;\r\n // Also, no longer ignore them\r\n for (let i = 0, lineCount = lines.length; i < lineCount; i++) {\r\n lines[i].ignore = false;\r\n }\r\n }\r\n return {\r\n supported: true,\r\n shouldRemoveComments: shouldRemoveComments,\r\n lines: lines\r\n };\r\n }\r\n /**\r\n * Analyze all lines and decide exactly what to do => not supported | insert line comments | remove line comments\r\n */\r\n static _gatherPreflightData(type, insertSpace, model, startLineNumber, endLineNumber, ignoreEmptyLines) {\r\n const lines = LineCommentCommand._gatherPreflightCommentStrings(model, startLineNumber, endLineNumber);\r\n if (lines === null) {\r\n return {\r\n supported: false\r\n };\r\n }\r\n return LineCommentCommand._analyzeLines(type, insertSpace, model, lines, startLineNumber, ignoreEmptyLines);\r\n }\r\n /**\r\n * Given a successful analysis, execute either insert line comments, either remove line comments\r\n */\r\n _executeLineComments(model, builder, data, s) {\r\n let ops;\r\n if (data.shouldRemoveComments) {\r\n ops = LineCommentCommand._createRemoveLineCommentsOperations(data.lines, s.startLineNumber);\r\n }\r\n else {\r\n LineCommentCommand._normalizeInsertionPoint(model, data.lines, s.startLineNumber, this._tabSize);\r\n ops = this._createAddLineCommentsOperations(data.lines, s.startLineNumber);\r\n }\r\n const cursorPosition = new Position(s.positionLineNumber, s.positionColumn);\r\n for (let i = 0, len = ops.length; i < len; i++) {\r\n builder.addEditOperation(ops[i].range, ops[i].text);\r\n if (Range.isEmpty(ops[i].range) && Range.getStartPosition(ops[i].range).equals(cursorPosition)) {\r\n const lineContent = model.getLineContent(cursorPosition.lineNumber);\r\n if (lineContent.length + 1 === cursorPosition.column) {\r\n this._deltaColumn = (ops[i].text || '').length;\r\n }\r\n }\r\n }\r\n this._selectionId = builder.trackSelection(s);\r\n }\r\n _attemptRemoveBlockComment(model, s, startToken, endToken) {\r\n let startLineNumber = s.startLineNumber;\r\n let endLineNumber = s.endLineNumber;\r\n let startTokenAllowedBeforeColumn = endToken.length + Math.max(model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.startColumn);\r\n let startTokenIndex = model.getLineContent(startLineNumber).lastIndexOf(startToken, startTokenAllowedBeforeColumn - 1);\r\n let endTokenIndex = model.getLineContent(endLineNumber).indexOf(endToken, s.endColumn - 1 - startToken.length);\r\n if (startTokenIndex !== -1 && endTokenIndex === -1) {\r\n endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\r\n endLineNumber = startLineNumber;\r\n }\r\n if (startTokenIndex === -1 && endTokenIndex !== -1) {\r\n startTokenIndex = model.getLineContent(endLineNumber).lastIndexOf(startToken, endTokenIndex);\r\n startLineNumber = endLineNumber;\r\n }\r\n if (s.isEmpty() && (startTokenIndex === -1 || endTokenIndex === -1)) {\r\n startTokenIndex = model.getLineContent(startLineNumber).indexOf(startToken);\r\n if (startTokenIndex !== -1) {\r\n endTokenIndex = model.getLineContent(startLineNumber).indexOf(endToken, startTokenIndex + startToken.length);\r\n }\r\n }\r\n // We have to adjust to possible inner white space.\r\n // For Space after startToken, add Space to startToken - range math will work out.\r\n if (startTokenIndex !== -1 && model.getLineContent(startLineNumber).charCodeAt(startTokenIndex + startToken.length) === 32 /* Space */) {\r\n startToken += ' ';\r\n }\r\n // For Space before endToken, add Space before endToken and shift index one left.\r\n if (endTokenIndex !== -1 && model.getLineContent(endLineNumber).charCodeAt(endTokenIndex - 1) === 32 /* Space */) {\r\n endToken = ' ' + endToken;\r\n endTokenIndex -= 1;\r\n }\r\n if (startTokenIndex !== -1 && endTokenIndex !== -1) {\r\n return BlockCommentCommand._createRemoveBlockCommentOperations(new Range(startLineNumber, startTokenIndex + startToken.length + 1, endLineNumber, endTokenIndex + 1), startToken, endToken);\r\n }\r\n return null;\r\n }\r\n /**\r\n * Given an unsuccessful analysis, delegate to the block comment command\r\n */\r\n _executeBlockComment(model, builder, s) {\r\n model.tokenizeIfCheap(s.startLineNumber);\r\n let languageId = model.getLanguageIdAtPosition(s.startLineNumber, 1);\r\n let config = LanguageConfigurationRegistry.getComments(languageId);\r\n if (!config || !config.blockCommentStartToken || !config.blockCommentEndToken) {\r\n // Mode does not support block comments\r\n return;\r\n }\r\n const startToken = config.blockCommentStartToken;\r\n const endToken = config.blockCommentEndToken;\r\n let ops = this._attemptRemoveBlockComment(model, s, startToken, endToken);\r\n if (!ops) {\r\n if (s.isEmpty()) {\r\n const lineContent = model.getLineContent(s.startLineNumber);\r\n let firstNonWhitespaceIndex = strings.firstNonWhitespaceIndex(lineContent);\r\n if (firstNonWhitespaceIndex === -1) {\r\n // Line is empty or contains only whitespace\r\n firstNonWhitespaceIndex = lineContent.length;\r\n }\r\n ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, firstNonWhitespaceIndex + 1, s.startLineNumber, lineContent.length + 1), startToken, endToken, this._insertSpace);\r\n }\r\n else {\r\n ops = BlockCommentCommand._createAddBlockCommentOperations(new Range(s.startLineNumber, model.getLineFirstNonWhitespaceColumn(s.startLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), startToken, endToken, this._insertSpace);\r\n }\r\n if (ops.length === 1) {\r\n // Leave cursor after token and Space\r\n this._deltaColumn = startToken.length + 1;\r\n }\r\n }\r\n this._selectionId = builder.trackSelection(s);\r\n for (const op of ops) {\r\n builder.addEditOperation(op.range, op.text);\r\n }\r\n }\r\n getEditOperations(model, builder) {\r\n let s = this._selection;\r\n this._moveEndPositionDown = false;\r\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\r\n this._moveEndPositionDown = true;\r\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\r\n }\r\n const data = LineCommentCommand._gatherPreflightData(this._type, this._insertSpace, model, s.startLineNumber, s.endLineNumber, this._ignoreEmptyLines);\r\n if (data.supported) {\r\n return this._executeLineComments(model, builder, data, s);\r\n }\r\n return this._executeBlockComment(model, builder, s);\r\n }\r\n computeCursorState(model, helper) {\r\n let result = helper.getTrackedSelection(this._selectionId);\r\n if (this._moveEndPositionDown) {\r\n result = result.setEndPosition(result.endLineNumber + 1, 1);\r\n }\r\n return new Selection(result.selectionStartLineNumber, result.selectionStartColumn + this._deltaColumn, result.positionLineNumber, result.positionColumn + this._deltaColumn);\r\n }\r\n /**\r\n * Generate edit operations in the remove line comment case\r\n */\r\n static _createRemoveLineCommentsOperations(lines, startLineNumber) {\r\n let res = [];\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n const lineData = lines[i];\r\n if (lineData.ignore) {\r\n continue;\r\n }\r\n res.push(EditOperation.delete(new Range(startLineNumber + i, lineData.commentStrOffset + 1, startLineNumber + i, lineData.commentStrOffset + lineData.commentStrLength + 1)));\r\n }\r\n return res;\r\n }\r\n /**\r\n * Generate edit operations in the add line comment case\r\n */\r\n _createAddLineCommentsOperations(lines, startLineNumber) {\r\n let res = [];\r\n const afterCommentStr = this._insertSpace ? ' ' : '';\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n const lineData = lines[i];\r\n if (lineData.ignore) {\r\n continue;\r\n }\r\n res.push(EditOperation.insert(new Position(startLineNumber + i, lineData.commentStrOffset + 1), lineData.commentStr + afterCommentStr));\r\n }\r\n return res;\r\n }\r\n static nextVisibleColumn(currentVisibleColumn, tabSize, isTab, columnSize) {\r\n if (isTab) {\r\n return currentVisibleColumn + (tabSize - (currentVisibleColumn % tabSize));\r\n }\r\n return currentVisibleColumn + columnSize;\r\n }\r\n /**\r\n * Adjust insertion points to have them vertically aligned in the add line comment case\r\n */\r\n static _normalizeInsertionPoint(model, lines, startLineNumber, tabSize) {\r\n let minVisibleColumn = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n let j;\r\n let lenJ;\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n if (lines[i].ignore) {\r\n continue;\r\n }\r\n const lineContent = model.getLineContent(startLineNumber + i);\r\n let currentVisibleColumn = 0;\r\n for (let j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\r\n currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, tabSize, lineContent.charCodeAt(j) === 9 /* Tab */, 1);\r\n }\r\n if (currentVisibleColumn < minVisibleColumn) {\r\n minVisibleColumn = currentVisibleColumn;\r\n }\r\n }\r\n minVisibleColumn = Math.floor(minVisibleColumn / tabSize) * tabSize;\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n if (lines[i].ignore) {\r\n continue;\r\n }\r\n const lineContent = model.getLineContent(startLineNumber + i);\r\n let currentVisibleColumn = 0;\r\n for (j = 0, lenJ = lines[i].commentStrOffset; currentVisibleColumn < minVisibleColumn && j < lenJ; j++) {\r\n currentVisibleColumn = LineCommentCommand.nextVisibleColumn(currentVisibleColumn, tabSize, lineContent.charCodeAt(j) === 9 /* Tab */, 1);\r\n }\r\n if (currentVisibleColumn > minVisibleColumn) {\r\n lines[i].commentStrOffset = j - 1;\r\n }\r\n else {\r\n lines[i].commentStrOffset = j;\r\n }\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Separator, SubmenuAction } from '../../../base/common/actions.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { IMenuService, MenuId, SubmenuItemAction } from '../../../platform/actions/common/actions.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextMenuService, IContextViewService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { ActionViewItem } from '../../../base/browser/ui/actionbar/actionViewItems.js';\r\nlet ContextMenuController = class ContextMenuController {\r\n constructor(editor, _contextMenuService, _contextViewService, _contextKeyService, _keybindingService, _menuService) {\r\n this._contextMenuService = _contextMenuService;\r\n this._contextViewService = _contextViewService;\r\n this._contextKeyService = _contextKeyService;\r\n this._keybindingService = _keybindingService;\r\n this._menuService = _menuService;\r\n this._toDispose = new DisposableStore();\r\n this._contextMenuIsBeingShownCount = 0;\r\n this._editor = editor;\r\n this._toDispose.add(this._editor.onContextMenu((e) => this._onContextMenu(e)));\r\n this._toDispose.add(this._editor.onMouseWheel((e) => {\r\n if (this._contextMenuIsBeingShownCount > 0) {\r\n const view = this._contextViewService.getContextViewElement();\r\n const target = e.srcElement;\r\n // Event triggers on shadow root host first\r\n // Check if the context view is under this host before hiding it #103169\r\n if (!(target.shadowRoot && dom.getShadowRoot(view) === target.shadowRoot)) {\r\n this._contextViewService.hideContextView();\r\n }\r\n }\r\n }));\r\n this._toDispose.add(this._editor.onKeyDown((e) => {\r\n if (e.keyCode === 58 /* ContextMenu */) {\r\n // Chrome is funny like that\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.showContextMenu();\r\n }\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(ContextMenuController.ID);\r\n }\r\n _onContextMenu(e) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n if (!this._editor.getOption(15 /* contextmenu */)) {\r\n this._editor.focus();\r\n // Ensure the cursor is at the position of the mouse click\r\n if (e.target.position && !this._editor.getSelection().containsPosition(e.target.position)) {\r\n this._editor.setPosition(e.target.position);\r\n }\r\n return; // Context menu is turned off through configuration\r\n }\r\n if (e.target.type === 12 /* OVERLAY_WIDGET */) {\r\n return; // allow native menu on widgets to support right click on input field for example in find\r\n }\r\n e.event.preventDefault();\r\n if (e.target.type !== 6 /* CONTENT_TEXT */ && e.target.type !== 7 /* CONTENT_EMPTY */ && e.target.type !== 1 /* TEXTAREA */) {\r\n return; // only support mouse click into text or native context menu key for now\r\n }\r\n // Ensure the editor gets focus if it hasn't, so the right events are being sent to other contributions\r\n this._editor.focus();\r\n // Ensure the cursor is at the position of the mouse click\r\n if (e.target.position) {\r\n let hasSelectionAtPosition = false;\r\n for (const selection of this._editor.getSelections()) {\r\n if (selection.containsPosition(e.target.position)) {\r\n hasSelectionAtPosition = true;\r\n break;\r\n }\r\n }\r\n if (!hasSelectionAtPosition) {\r\n this._editor.setPosition(e.target.position);\r\n }\r\n }\r\n // Unless the user triggerd the context menu through Shift+F10, use the mouse position as menu position\r\n let anchor = null;\r\n if (e.target.type !== 1 /* TEXTAREA */) {\r\n anchor = { x: e.event.posx - 1, width: 2, y: e.event.posy - 1, height: 2 };\r\n }\r\n // Show the context menu\r\n this.showContextMenu(anchor);\r\n }\r\n showContextMenu(anchor) {\r\n if (!this._editor.getOption(15 /* contextmenu */)) {\r\n return; // Context menu is turned off through configuration\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n if (!this._contextMenuService) {\r\n this._editor.focus();\r\n return; // We need the context menu service to function\r\n }\r\n // Find actions available for menu\r\n const menuActions = this._getMenuActions(this._editor.getModel(), MenuId.EditorContext);\r\n // Show menu if we have actions to show\r\n if (menuActions.length > 0) {\r\n this._doShowContextMenu(menuActions, anchor);\r\n }\r\n }\r\n _getMenuActions(model, menuId) {\r\n const result = [];\r\n // get menu groups\r\n const menu = this._menuService.createMenu(menuId, this._contextKeyService);\r\n const groups = menu.getActions({ arg: model.uri });\r\n menu.dispose();\r\n // translate them into other actions\r\n for (let group of groups) {\r\n const [, actions] = group;\r\n let addedItems = 0;\r\n for (const action of actions) {\r\n if (action instanceof SubmenuItemAction) {\r\n const subActions = this._getMenuActions(model, action.item.submenu);\r\n if (subActions.length > 0) {\r\n result.push(new SubmenuAction(action.id, action.label, subActions));\r\n addedItems++;\r\n }\r\n }\r\n else {\r\n result.push(action);\r\n addedItems++;\r\n }\r\n }\r\n if (addedItems) {\r\n result.push(new Separator());\r\n }\r\n }\r\n if (result.length) {\r\n result.pop(); // remove last separator\r\n }\r\n return result;\r\n }\r\n _doShowContextMenu(actions, anchor = null) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n // Disable hover\r\n const oldHoverSetting = this._editor.getOption(46 /* hover */);\r\n this._editor.updateOptions({\r\n hover: {\r\n enabled: false\r\n }\r\n });\r\n if (!anchor) {\r\n // Ensure selection is visible\r\n this._editor.revealPosition(this._editor.getPosition(), 1 /* Immediate */);\r\n this._editor.render();\r\n const cursorCoords = this._editor.getScrolledVisiblePosition(this._editor.getPosition());\r\n // Translate to absolute editor position\r\n const editorCoords = dom.getDomNodePagePosition(this._editor.getDomNode());\r\n const posx = editorCoords.left + cursorCoords.left;\r\n const posy = editorCoords.top + cursorCoords.top + cursorCoords.height;\r\n anchor = { x: posx, y: posy };\r\n }\r\n // Show menu\r\n this._contextMenuIsBeingShownCount++;\r\n this._contextMenuService.showContextMenu({\r\n domForShadowRoot: this._editor.getDomNode(),\r\n getAnchor: () => anchor,\r\n getActions: () => actions,\r\n getActionViewItem: (action) => {\r\n const keybinding = this._keybindingFor(action);\r\n if (keybinding) {\r\n return new ActionViewItem(action, action, { label: true, keybinding: keybinding.getLabel(), isMenu: true });\r\n }\r\n const customActionViewItem = action;\r\n if (typeof customActionViewItem.getActionViewItem === 'function') {\r\n return customActionViewItem.getActionViewItem();\r\n }\r\n return new ActionViewItem(action, action, { icon: true, label: true, isMenu: true });\r\n },\r\n getKeyBinding: (action) => {\r\n return this._keybindingFor(action);\r\n },\r\n onHide: (wasCancelled) => {\r\n this._contextMenuIsBeingShownCount--;\r\n this._editor.focus();\r\n this._editor.updateOptions({\r\n hover: oldHoverSetting\r\n });\r\n }\r\n });\r\n }\r\n _keybindingFor(action) {\r\n return this._keybindingService.lookupKeybinding(action.id);\r\n }\r\n dispose() {\r\n if (this._contextMenuIsBeingShownCount > 0) {\r\n this._contextViewService.hideContextView();\r\n }\r\n this._toDispose.dispose();\r\n }\r\n};\r\nContextMenuController.ID = 'editor.contrib.contextmenu';\r\nContextMenuController = __decorate([\r\n __param(1, IContextMenuService),\r\n __param(2, IContextViewService),\r\n __param(3, IContextKeyService),\r\n __param(4, IKeybindingService),\r\n __param(5, IMenuService)\r\n], ContextMenuController);\r\nexport { ContextMenuController };\r\nclass ShowContextMenu extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.showContextMenu',\r\n label: nls.localize('action.showContextMenu.label', \"Show Editor Context Menu\"),\r\n alias: 'Show Editor Context Menu',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 68 /* F10 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n let contribution = ContextMenuController.get(editor);\r\n contribution.showContextMenu();\r\n }\r\n}\r\nregisterEditorContribution(ContextMenuController.ID, ContextMenuController);\r\nregisterEditorAction(ShowContextMenu);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nclass CursorState {\r\n constructor(selections) {\r\n this.selections = selections;\r\n }\r\n equals(other) {\r\n const thisLen = this.selections.length;\r\n const otherLen = other.selections.length;\r\n if (thisLen !== otherLen) {\r\n return false;\r\n }\r\n for (let i = 0; i < thisLen; i++) {\r\n if (!this.selections[i].equalsSelection(other.selections[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\nclass StackElement {\r\n constructor(cursorState, scrollTop, scrollLeft) {\r\n this.cursorState = cursorState;\r\n this.scrollTop = scrollTop;\r\n this.scrollLeft = scrollLeft;\r\n }\r\n}\r\nexport class CursorUndoRedoController extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._editor = editor;\r\n this._isCursorUndoRedo = false;\r\n this._undoStack = [];\r\n this._redoStack = [];\r\n this._register(editor.onDidChangeModel((e) => {\r\n this._undoStack = [];\r\n this._redoStack = [];\r\n }));\r\n this._register(editor.onDidChangeModelContent((e) => {\r\n this._undoStack = [];\r\n this._redoStack = [];\r\n }));\r\n this._register(editor.onDidChangeCursorSelection((e) => {\r\n if (this._isCursorUndoRedo) {\r\n return;\r\n }\r\n if (!e.oldSelections) {\r\n return;\r\n }\r\n if (e.oldModelVersionId !== e.modelVersionId) {\r\n return;\r\n }\r\n const prevState = new CursorState(e.oldSelections);\r\n const isEqualToLastUndoStack = (this._undoStack.length > 0 && this._undoStack[this._undoStack.length - 1].cursorState.equals(prevState));\r\n if (!isEqualToLastUndoStack) {\r\n this._undoStack.push(new StackElement(prevState, editor.getScrollTop(), editor.getScrollLeft()));\r\n this._redoStack = [];\r\n if (this._undoStack.length > 50) {\r\n // keep the cursor undo stack bounded\r\n this._undoStack.shift();\r\n }\r\n }\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(CursorUndoRedoController.ID);\r\n }\r\n cursorUndo() {\r\n if (!this._editor.hasModel() || this._undoStack.length === 0) {\r\n return;\r\n }\r\n this._redoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\r\n this._applyState(this._undoStack.pop());\r\n }\r\n cursorRedo() {\r\n if (!this._editor.hasModel() || this._redoStack.length === 0) {\r\n return;\r\n }\r\n this._undoStack.push(new StackElement(new CursorState(this._editor.getSelections()), this._editor.getScrollTop(), this._editor.getScrollLeft()));\r\n this._applyState(this._redoStack.pop());\r\n }\r\n _applyState(stackElement) {\r\n this._isCursorUndoRedo = true;\r\n this._editor.setSelections(stackElement.cursorState.selections);\r\n this._editor.setScrollPosition({\r\n scrollTop: stackElement.scrollTop,\r\n scrollLeft: stackElement.scrollLeft\r\n });\r\n this._isCursorUndoRedo = false;\r\n }\r\n}\r\nCursorUndoRedoController.ID = 'editor.contrib.cursorUndoRedoController';\r\nexport class CursorUndo extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'cursorUndo',\r\n label: nls.localize('cursor.undo', \"Cursor Undo\"),\r\n alias: 'Cursor Undo',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 51 /* KEY_U */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n CursorUndoRedoController.get(editor).cursorUndo();\r\n }\r\n}\r\nexport class CursorRedo extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'cursorRedo',\r\n label: nls.localize('cursor.redo', \"Cursor Redo\"),\r\n alias: 'Cursor Redo',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n CursorUndoRedoController.get(editor).cursorRedo();\r\n }\r\n}\r\nregisterEditorContribution(CursorUndoRedoController.ID, CursorUndoRedoController);\r\nregisterEditorAction(CursorUndo);\r\nregisterEditorAction(CursorRedo);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './dnd.css';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { isMacintosh } from '../../../base/common/platform.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { DragAndDropCommand } from './dragAndDropCommand.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nfunction hasTriggerModifier(e) {\r\n if (isMacintosh) {\r\n return e.altKey;\r\n }\r\n else {\r\n return e.ctrlKey;\r\n }\r\n}\r\nexport class DragAndDropController extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._editor = editor;\r\n this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\r\n this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(e)));\r\n this._register(this._editor.onMouseDrag((e) => this._onEditorMouseDrag(e)));\r\n this._register(this._editor.onMouseDrop((e) => this._onEditorMouseDrop(e)));\r\n this._register(this._editor.onKeyDown((e) => this.onEditorKeyDown(e)));\r\n this._register(this._editor.onKeyUp((e) => this.onEditorKeyUp(e)));\r\n this._register(this._editor.onDidBlurEditorWidget(() => this.onEditorBlur()));\r\n this._register(this._editor.onDidBlurEditorText(() => this.onEditorBlur()));\r\n this._dndDecorationIds = [];\r\n this._mouseDown = false;\r\n this._modifierPressed = false;\r\n this._dragSelection = null;\r\n }\r\n onEditorBlur() {\r\n this._removeDecoration();\r\n this._dragSelection = null;\r\n this._mouseDown = false;\r\n this._modifierPressed = false;\r\n }\r\n onEditorKeyDown(e) {\r\n if (!this._editor.getOption(25 /* dragAndDrop */) || this._editor.getOption(13 /* columnSelection */)) {\r\n return;\r\n }\r\n if (hasTriggerModifier(e)) {\r\n this._modifierPressed = true;\r\n }\r\n if (this._mouseDown && hasTriggerModifier(e)) {\r\n this._editor.updateOptions({\r\n mouseStyle: 'copy'\r\n });\r\n }\r\n }\r\n onEditorKeyUp(e) {\r\n if (!this._editor.getOption(25 /* dragAndDrop */) || this._editor.getOption(13 /* columnSelection */)) {\r\n return;\r\n }\r\n if (hasTriggerModifier(e)) {\r\n this._modifierPressed = false;\r\n }\r\n if (this._mouseDown && e.keyCode === DragAndDropController.TRIGGER_KEY_VALUE) {\r\n this._editor.updateOptions({\r\n mouseStyle: 'default'\r\n });\r\n }\r\n }\r\n _onEditorMouseDown(mouseEvent) {\r\n this._mouseDown = true;\r\n }\r\n _onEditorMouseUp(mouseEvent) {\r\n this._mouseDown = false;\r\n // Whenever users release the mouse, the drag and drop operation should finish and the cursor should revert to text.\r\n this._editor.updateOptions({\r\n mouseStyle: 'text'\r\n });\r\n }\r\n _onEditorMouseDrag(mouseEvent) {\r\n let target = mouseEvent.target;\r\n if (this._dragSelection === null) {\r\n const selections = this._editor.getSelections() || [];\r\n let possibleSelections = selections.filter(selection => target.position && selection.containsPosition(target.position));\r\n if (possibleSelections.length === 1) {\r\n this._dragSelection = possibleSelections[0];\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (hasTriggerModifier(mouseEvent.event)) {\r\n this._editor.updateOptions({\r\n mouseStyle: 'copy'\r\n });\r\n }\r\n else {\r\n this._editor.updateOptions({\r\n mouseStyle: 'default'\r\n });\r\n }\r\n if (target.position) {\r\n if (this._dragSelection.containsPosition(target.position)) {\r\n this._removeDecoration();\r\n }\r\n else {\r\n this.showAt(target.position);\r\n }\r\n }\r\n }\r\n _onEditorMouseDrop(mouseEvent) {\r\n if (mouseEvent.target && (this._hitContent(mouseEvent.target) || this._hitMargin(mouseEvent.target)) && mouseEvent.target.position) {\r\n let newCursorPosition = new Position(mouseEvent.target.position.lineNumber, mouseEvent.target.position.column);\r\n if (this._dragSelection === null) {\r\n let newSelections = null;\r\n if (mouseEvent.event.shiftKey) {\r\n let primarySelection = this._editor.getSelection();\r\n if (primarySelection) {\r\n const { selectionStartLineNumber, selectionStartColumn } = primarySelection;\r\n newSelections = [new Selection(selectionStartLineNumber, selectionStartColumn, newCursorPosition.lineNumber, newCursorPosition.column)];\r\n }\r\n }\r\n else {\r\n newSelections = (this._editor.getSelections() || []).map(selection => {\r\n if (selection.containsPosition(newCursorPosition)) {\r\n return new Selection(newCursorPosition.lineNumber, newCursorPosition.column, newCursorPosition.lineNumber, newCursorPosition.column);\r\n }\r\n else {\r\n return selection;\r\n }\r\n });\r\n }\r\n // Use `mouse` as the source instead of `api`.\r\n this._editor.setSelections(newSelections || [], 'mouse');\r\n }\r\n else if (!this._dragSelection.containsPosition(newCursorPosition) ||\r\n ((hasTriggerModifier(mouseEvent.event) ||\r\n this._modifierPressed) && (this._dragSelection.getEndPosition().equals(newCursorPosition) || this._dragSelection.getStartPosition().equals(newCursorPosition)) // we allow users to paste content beside the selection\r\n )) {\r\n this._editor.pushUndoStop();\r\n this._editor.executeCommand(DragAndDropController.ID, new DragAndDropCommand(this._dragSelection, newCursorPosition, hasTriggerModifier(mouseEvent.event) || this._modifierPressed));\r\n this._editor.pushUndoStop();\r\n }\r\n }\r\n this._editor.updateOptions({\r\n mouseStyle: 'text'\r\n });\r\n this._removeDecoration();\r\n this._dragSelection = null;\r\n this._mouseDown = false;\r\n }\r\n showAt(position) {\r\n let newDecorations = [{\r\n range: new Range(position.lineNumber, position.column, position.lineNumber, position.column),\r\n options: DragAndDropController._DECORATION_OPTIONS\r\n }];\r\n this._dndDecorationIds = this._editor.deltaDecorations(this._dndDecorationIds, newDecorations);\r\n this._editor.revealPosition(position, 1 /* Immediate */);\r\n }\r\n _removeDecoration() {\r\n this._dndDecorationIds = this._editor.deltaDecorations(this._dndDecorationIds, []);\r\n }\r\n _hitContent(target) {\r\n return target.type === 6 /* CONTENT_TEXT */ ||\r\n target.type === 7 /* CONTENT_EMPTY */;\r\n }\r\n _hitMargin(target) {\r\n return target.type === 2 /* GUTTER_GLYPH_MARGIN */ ||\r\n target.type === 3 /* GUTTER_LINE_NUMBERS */ ||\r\n target.type === 4 /* GUTTER_LINE_DECORATIONS */;\r\n }\r\n dispose() {\r\n this._removeDecoration();\r\n this._dragSelection = null;\r\n this._mouseDown = false;\r\n this._modifierPressed = false;\r\n super.dispose();\r\n }\r\n}\r\nDragAndDropController.ID = 'editor.contrib.dragAndDrop';\r\nDragAndDropController.TRIGGER_KEY_VALUE = isMacintosh ? 6 /* Alt */ : 5 /* Ctrl */;\r\nDragAndDropController._DECORATION_OPTIONS = ModelDecorationOptions.register({\r\n className: 'dnd-target'\r\n});\r\nregisterEditorContribution(DragAndDropController.ID, DragAndDropController);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { Range } from '../../common/core/range.js';\r\nexport class DragAndDropCommand {\r\n constructor(selection, targetPosition, copy) {\r\n this.selection = selection;\r\n this.targetPosition = targetPosition;\r\n this.copy = copy;\r\n this.targetSelection = null;\r\n }\r\n getEditOperations(model, builder) {\r\n let text = model.getValueInRange(this.selection);\r\n if (!this.copy) {\r\n builder.addEditOperation(this.selection, null);\r\n }\r\n builder.addEditOperation(new Range(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column), text);\r\n if (this.selection.containsPosition(this.targetPosition) && !(this.copy && (this.selection.getEndPosition().equals(this.targetPosition) || this.selection.getStartPosition().equals(this.targetPosition)) // we allow users to paste content beside the selection\r\n )) {\r\n this.targetSelection = this.selection;\r\n return;\r\n }\r\n if (this.copy) {\r\n this.targetSelection = new Selection(this.targetPosition.lineNumber, this.targetPosition.column, this.selection.endLineNumber - this.selection.startLineNumber + this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\r\n this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\r\n this.selection.endColumn);\r\n return;\r\n }\r\n if (this.targetPosition.lineNumber > this.selection.endLineNumber) {\r\n // Drag the selection downwards\r\n this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\r\n this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\r\n this.selection.endColumn);\r\n return;\r\n }\r\n if (this.targetPosition.lineNumber < this.selection.endLineNumber) {\r\n // Drag the selection upwards\r\n this.targetSelection = new Selection(this.targetPosition.lineNumber, this.targetPosition.column, this.targetPosition.lineNumber + this.selection.endLineNumber - this.selection.startLineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\r\n this.targetPosition.column + this.selection.endColumn - this.selection.startColumn :\r\n this.selection.endColumn);\r\n return;\r\n }\r\n // The target position is at the same line as the selection's end position.\r\n if (this.selection.endColumn <= this.targetPosition.column) {\r\n // The target position is after the selection's end position\r\n this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\r\n this.targetPosition.column - this.selection.endColumn + this.selection.startColumn :\r\n this.targetPosition.column - this.selection.endColumn + this.selection.startColumn, this.targetPosition.lineNumber, this.selection.startLineNumber === this.selection.endLineNumber ?\r\n this.targetPosition.column :\r\n this.selection.endColumn);\r\n }\r\n else {\r\n // The target position is before the selection's end position. Since the selection doesn't contain the target position, the selection is one-line and target position is before this selection.\r\n this.targetSelection = new Selection(this.targetPosition.lineNumber - this.selection.endLineNumber + this.selection.startLineNumber, this.targetPosition.column, this.targetPosition.lineNumber, this.targetPosition.column + this.selection.endColumn - this.selection.startColumn);\r\n }\r\n }\r\n computeCursorState(model, helper) {\r\n return this.targetSelection;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { equals } from '../../../base/common/arrays.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { LRUCache } from '../../../base/common/map.js';\r\nimport { DocumentSymbolProviderRegistry } from '../../common/modes.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nimport { MovingAverage } from '../../../base/common/numbers.js';\r\nexport class TreeElement {\r\n remove() {\r\n if (this.parent) {\r\n this.parent.children.delete(this.id);\r\n }\r\n }\r\n static findId(candidate, container) {\r\n // complex id-computation which contains the origin/extension,\r\n // the parent path, and some dedupe logic when names collide\r\n let candidateId;\r\n if (typeof candidate === 'string') {\r\n candidateId = `${container.id}/${candidate}`;\r\n }\r\n else {\r\n candidateId = `${container.id}/${candidate.name}`;\r\n if (container.children.get(candidateId) !== undefined) {\r\n candidateId = `${container.id}/${candidate.name}_${candidate.range.startLineNumber}_${candidate.range.startColumn}`;\r\n }\r\n }\r\n let id = candidateId;\r\n for (let i = 0; container.children.get(id) !== undefined; i++) {\r\n id = `${candidateId}_${i}`;\r\n }\r\n return id;\r\n }\r\n static empty(element) {\r\n return element.children.size === 0;\r\n }\r\n}\r\nexport class OutlineElement extends TreeElement {\r\n constructor(id, parent, symbol) {\r\n super();\r\n this.id = id;\r\n this.parent = parent;\r\n this.symbol = symbol;\r\n this.children = new Map();\r\n }\r\n}\r\nexport class OutlineGroup extends TreeElement {\r\n constructor(id, parent, label, order) {\r\n super();\r\n this.id = id;\r\n this.parent = parent;\r\n this.label = label;\r\n this.order = order;\r\n this.children = new Map();\r\n }\r\n}\r\nexport class OutlineModel extends TreeElement {\r\n constructor(uri) {\r\n super();\r\n this.uri = uri;\r\n this.id = 'root';\r\n this.parent = undefined;\r\n this._groups = new Map();\r\n this.children = new Map();\r\n this.id = 'root';\r\n this.parent = undefined;\r\n }\r\n static create(textModel, token) {\r\n let key = this._keys.for(textModel, true);\r\n let data = OutlineModel._requests.get(key);\r\n if (!data) {\r\n let source = new CancellationTokenSource();\r\n data = {\r\n promiseCnt: 0,\r\n source,\r\n promise: OutlineModel._create(textModel, source.token),\r\n model: undefined,\r\n };\r\n OutlineModel._requests.set(key, data);\r\n // keep moving average of request durations\r\n const now = Date.now();\r\n data.promise.then(() => {\r\n let key = this._keys.for(textModel, false);\r\n let avg = this._requestDurations.get(key);\r\n if (!avg) {\r\n avg = new MovingAverage();\r\n this._requestDurations.set(key, avg);\r\n }\r\n avg.update(Date.now() - now);\r\n });\r\n }\r\n if (data.model) {\r\n // resolved -> return data\r\n return Promise.resolve(data.model);\r\n }\r\n // increase usage counter\r\n data.promiseCnt += 1;\r\n token.onCancellationRequested(() => {\r\n // last -> cancel provider request, remove cached promise\r\n if (--data.promiseCnt === 0) {\r\n data.source.cancel();\r\n OutlineModel._requests.delete(key);\r\n }\r\n });\r\n return new Promise((resolve, reject) => {\r\n data.promise.then(model => {\r\n data.model = model;\r\n resolve(model);\r\n }, err => {\r\n OutlineModel._requests.delete(key);\r\n reject(err);\r\n });\r\n });\r\n }\r\n static _create(textModel, token) {\r\n const cts = new CancellationTokenSource(token);\r\n const result = new OutlineModel(textModel.uri);\r\n const provider = DocumentSymbolProviderRegistry.ordered(textModel);\r\n const promises = provider.map((provider, index) => {\r\n var _a;\r\n let id = TreeElement.findId(`provider_${index}`, result);\r\n let group = new OutlineGroup(id, result, (_a = provider.displayName) !== null && _a !== void 0 ? _a : 'Unknown Outline Provider', index);\r\n return Promise.resolve(provider.provideDocumentSymbols(textModel, cts.token)).then(result => {\r\n for (const info of result || []) {\r\n OutlineModel._makeOutlineElement(info, group);\r\n }\r\n return group;\r\n }, err => {\r\n onUnexpectedExternalError(err);\r\n return group;\r\n }).then(group => {\r\n if (!TreeElement.empty(group)) {\r\n result._groups.set(id, group);\r\n }\r\n else {\r\n group.remove();\r\n }\r\n });\r\n });\r\n const listener = DocumentSymbolProviderRegistry.onDidChange(() => {\r\n const newProvider = DocumentSymbolProviderRegistry.ordered(textModel);\r\n if (!equals(newProvider, provider)) {\r\n cts.cancel();\r\n }\r\n });\r\n return Promise.all(promises).then(() => {\r\n if (cts.token.isCancellationRequested && !token.isCancellationRequested) {\r\n return OutlineModel._create(textModel, token);\r\n }\r\n else {\r\n return result._compact();\r\n }\r\n }).finally(() => {\r\n listener.dispose();\r\n });\r\n }\r\n static _makeOutlineElement(info, container) {\r\n let id = TreeElement.findId(info, container);\r\n let res = new OutlineElement(id, container, info);\r\n if (info.children) {\r\n for (const childInfo of info.children) {\r\n OutlineModel._makeOutlineElement(childInfo, res);\r\n }\r\n }\r\n container.children.set(res.id, res);\r\n }\r\n _compact() {\r\n let count = 0;\r\n for (const [key, group] of this._groups) {\r\n if (group.children.size === 0) { // empty\r\n this._groups.delete(key);\r\n }\r\n else {\r\n count += 1;\r\n }\r\n }\r\n if (count !== 1) {\r\n //\r\n this.children = this._groups;\r\n }\r\n else {\r\n // adopt all elements of the first group\r\n let group = Iterable.first(this._groups.values());\r\n for (let [, child] of group.children) {\r\n child.parent = this;\r\n this.children.set(child.id, child);\r\n }\r\n }\r\n return this;\r\n }\r\n}\r\nOutlineModel._requestDurations = new LRUCache(50, 0.7);\r\nOutlineModel._requests = new LRUCache(9, 0.75);\r\nOutlineModel._keys = new class {\r\n constructor() {\r\n this._counter = 1;\r\n this._data = new WeakMap();\r\n }\r\n for(textModel, version) {\r\n return `${textModel.id}/${version ? textModel.getVersionId() : ''}/${this._hash(DocumentSymbolProviderRegistry.all(textModel))}`;\r\n }\r\n _hash(providers) {\r\n let result = '';\r\n for (const provider of providers) {\r\n let n = this._data.get(provider);\r\n if (typeof n === 'undefined') {\r\n n = this._counter++;\r\n this._data.set(provider, n);\r\n }\r\n result += n;\r\n }\r\n return result;\r\n }\r\n};\r\n","import './media/outlineTree.css';\r\nimport './media/symbol-icons.css';\r\nimport { localize } from '../../../nls.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { registerColor, foreground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport const SYMBOL_ICON_ARRAY_FOREGROUND = registerColor('symbolIcon.arrayForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.arrayForeground', 'The foreground color for array symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_BOOLEAN_FOREGROUND = registerColor('symbolIcon.booleanForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.booleanForeground', 'The foreground color for boolean symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_CLASS_FOREGROUND = registerColor('symbolIcon.classForeground', {\r\n dark: '#EE9D28',\r\n light: '#D67E00',\r\n hc: '#EE9D28'\r\n}, localize('symbolIcon.classForeground', 'The foreground color for class symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_COLOR_FOREGROUND = registerColor('symbolIcon.colorForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.colorForeground', 'The foreground color for color symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_CONSTANT_FOREGROUND = registerColor('symbolIcon.constantForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.constantForeground', 'The foreground color for constant symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_CONSTRUCTOR_FOREGROUND = registerColor('symbolIcon.constructorForeground', {\r\n dark: '#B180D7',\r\n light: '#652D90',\r\n hc: '#B180D7'\r\n}, localize('symbolIcon.constructorForeground', 'The foreground color for constructor symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_ENUMERATOR_FOREGROUND = registerColor('symbolIcon.enumeratorForeground', {\r\n dark: '#EE9D28',\r\n light: '#D67E00',\r\n hc: '#EE9D28'\r\n}, localize('symbolIcon.enumeratorForeground', 'The foreground color for enumerator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND = registerColor('symbolIcon.enumeratorMemberForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.enumeratorMemberForeground', 'The foreground color for enumerator member symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_EVENT_FOREGROUND = registerColor('symbolIcon.eventForeground', {\r\n dark: '#EE9D28',\r\n light: '#D67E00',\r\n hc: '#EE9D28'\r\n}, localize('symbolIcon.eventForeground', 'The foreground color for event symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FIELD_FOREGROUND = registerColor('symbolIcon.fieldForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.fieldForeground', 'The foreground color for field symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FILE_FOREGROUND = registerColor('symbolIcon.fileForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.fileForeground', 'The foreground color for file symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FOLDER_FOREGROUND = registerColor('symbolIcon.folderForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.folderForeground', 'The foreground color for folder symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_FUNCTION_FOREGROUND = registerColor('symbolIcon.functionForeground', {\r\n dark: '#B180D7',\r\n light: '#652D90',\r\n hc: '#B180D7'\r\n}, localize('symbolIcon.functionForeground', 'The foreground color for function symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_INTERFACE_FOREGROUND = registerColor('symbolIcon.interfaceForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.interfaceForeground', 'The foreground color for interface symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_KEY_FOREGROUND = registerColor('symbolIcon.keyForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.keyForeground', 'The foreground color for key symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_KEYWORD_FOREGROUND = registerColor('symbolIcon.keywordForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.keywordForeground', 'The foreground color for keyword symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_METHOD_FOREGROUND = registerColor('symbolIcon.methodForeground', {\r\n dark: '#B180D7',\r\n light: '#652D90',\r\n hc: '#B180D7'\r\n}, localize('symbolIcon.methodForeground', 'The foreground color for method symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_MODULE_FOREGROUND = registerColor('symbolIcon.moduleForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.moduleForeground', 'The foreground color for module symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_NAMESPACE_FOREGROUND = registerColor('symbolIcon.namespaceForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.namespaceForeground', 'The foreground color for namespace symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_NULL_FOREGROUND = registerColor('symbolIcon.nullForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.nullForeground', 'The foreground color for null symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_NUMBER_FOREGROUND = registerColor('symbolIcon.numberForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.numberForeground', 'The foreground color for number symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_OBJECT_FOREGROUND = registerColor('symbolIcon.objectForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.objectForeground', 'The foreground color for object symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_OPERATOR_FOREGROUND = registerColor('symbolIcon.operatorForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.operatorForeground', 'The foreground color for operator symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_PACKAGE_FOREGROUND = registerColor('symbolIcon.packageForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.packageForeground', 'The foreground color for package symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_PROPERTY_FOREGROUND = registerColor('symbolIcon.propertyForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.propertyForeground', 'The foreground color for property symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_REFERENCE_FOREGROUND = registerColor('symbolIcon.referenceForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.referenceForeground', 'The foreground color for reference symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_SNIPPET_FOREGROUND = registerColor('symbolIcon.snippetForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.snippetForeground', 'The foreground color for snippet symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_STRING_FOREGROUND = registerColor('symbolIcon.stringForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.stringForeground', 'The foreground color for string symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_STRUCT_FOREGROUND = registerColor('symbolIcon.structForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.structForeground', 'The foreground color for struct symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_TEXT_FOREGROUND = registerColor('symbolIcon.textForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.textForeground', 'The foreground color for text symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_TYPEPARAMETER_FOREGROUND = registerColor('symbolIcon.typeParameterForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.typeParameterForeground', 'The foreground color for type parameter symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_UNIT_FOREGROUND = registerColor('symbolIcon.unitForeground', {\r\n dark: foreground,\r\n light: foreground,\r\n hc: foreground\r\n}, localize('symbolIcon.unitForeground', 'The foreground color for unit symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nexport const SYMBOL_ICON_VARIABLE_FOREGROUND = registerColor('symbolIcon.variableForeground', {\r\n dark: '#75BEFF',\r\n light: '#007ACC',\r\n hc: '#75BEFF'\r\n}, localize('symbolIcon.variableForeground', 'The foreground color for variable symbols. These symbols appear in the outline, breadcrumb, and suggest widget.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const symbolIconArrayColor = theme.getColor(SYMBOL_ICON_ARRAY_FOREGROUND);\r\n if (symbolIconArrayColor) {\r\n collector.addRule(`${Codicon.symbolArray.cssSelector} { color: ${symbolIconArrayColor}; }`);\r\n }\r\n const symbolIconBooleanColor = theme.getColor(SYMBOL_ICON_BOOLEAN_FOREGROUND);\r\n if (symbolIconBooleanColor) {\r\n collector.addRule(`${Codicon.symbolBoolean.cssSelector} { color: ${symbolIconBooleanColor}; }`);\r\n }\r\n const symbolIconClassColor = theme.getColor(SYMBOL_ICON_CLASS_FOREGROUND);\r\n if (symbolIconClassColor) {\r\n collector.addRule(`${Codicon.symbolClass.cssSelector} { color: ${symbolIconClassColor}; }`);\r\n }\r\n const symbolIconMethodColor = theme.getColor(SYMBOL_ICON_METHOD_FOREGROUND);\r\n if (symbolIconMethodColor) {\r\n collector.addRule(`${Codicon.symbolMethod.cssSelector} { color: ${symbolIconMethodColor}; }`);\r\n }\r\n const symbolIconColorColor = theme.getColor(SYMBOL_ICON_COLOR_FOREGROUND);\r\n if (symbolIconColorColor) {\r\n collector.addRule(`${Codicon.symbolColor.cssSelector} { color: ${symbolIconColorColor}; }`);\r\n }\r\n const symbolIconConstantColor = theme.getColor(SYMBOL_ICON_CONSTANT_FOREGROUND);\r\n if (symbolIconConstantColor) {\r\n collector.addRule(`${Codicon.symbolConstant.cssSelector} { color: ${symbolIconConstantColor}; }`);\r\n }\r\n const symbolIconConstructorColor = theme.getColor(SYMBOL_ICON_CONSTRUCTOR_FOREGROUND);\r\n if (symbolIconConstructorColor) {\r\n collector.addRule(`${Codicon.symbolConstructor.cssSelector} { color: ${symbolIconConstructorColor}; }`);\r\n }\r\n const symbolIconEnumeratorColor = theme.getColor(SYMBOL_ICON_ENUMERATOR_FOREGROUND);\r\n if (symbolIconEnumeratorColor) {\r\n collector.addRule(`\n\t\t\t${Codicon.symbolValue.cssSelector},${Codicon.symbolEnum.cssSelector} { color: ${symbolIconEnumeratorColor}; }`);\r\n }\r\n const symbolIconEnumeratorMemberColor = theme.getColor(SYMBOL_ICON_ENUMERATOR_MEMBER_FOREGROUND);\r\n if (symbolIconEnumeratorMemberColor) {\r\n collector.addRule(`${Codicon.symbolEnumMember.cssSelector} { color: ${symbolIconEnumeratorMemberColor}; }`);\r\n }\r\n const symbolIconEventColor = theme.getColor(SYMBOL_ICON_EVENT_FOREGROUND);\r\n if (symbolIconEventColor) {\r\n collector.addRule(`${Codicon.symbolEvent.cssSelector} { color: ${symbolIconEventColor}; }`);\r\n }\r\n const symbolIconFieldColor = theme.getColor(SYMBOL_ICON_FIELD_FOREGROUND);\r\n if (symbolIconFieldColor) {\r\n collector.addRule(`${Codicon.symbolField.cssSelector} { color: ${symbolIconFieldColor}; }`);\r\n }\r\n const symbolIconFileColor = theme.getColor(SYMBOL_ICON_FILE_FOREGROUND);\r\n if (symbolIconFileColor) {\r\n collector.addRule(`${Codicon.symbolFile.cssSelector} { color: ${symbolIconFileColor}; }`);\r\n }\r\n const symbolIconFolderColor = theme.getColor(SYMBOL_ICON_FOLDER_FOREGROUND);\r\n if (symbolIconFolderColor) {\r\n collector.addRule(`${Codicon.symbolFolder.cssSelector} { color: ${symbolIconFolderColor}; }`);\r\n }\r\n const symbolIconFunctionColor = theme.getColor(SYMBOL_ICON_FUNCTION_FOREGROUND);\r\n if (symbolIconFunctionColor) {\r\n collector.addRule(`${Codicon.symbolFunction.cssSelector} { color: ${symbolIconFunctionColor}; }`);\r\n }\r\n const symbolIconInterfaceColor = theme.getColor(SYMBOL_ICON_INTERFACE_FOREGROUND);\r\n if (symbolIconInterfaceColor) {\r\n collector.addRule(`${Codicon.symbolInterface.cssSelector} { color: ${symbolIconInterfaceColor}; }`);\r\n }\r\n const symbolIconKeyColor = theme.getColor(SYMBOL_ICON_KEY_FOREGROUND);\r\n if (symbolIconKeyColor) {\r\n collector.addRule(`${Codicon.symbolKey.cssSelector} { color: ${symbolIconKeyColor}; }`);\r\n }\r\n const symbolIconKeywordColor = theme.getColor(SYMBOL_ICON_KEYWORD_FOREGROUND);\r\n if (symbolIconKeywordColor) {\r\n collector.addRule(`${Codicon.symbolKeyword.cssSelector} { color: ${symbolIconKeywordColor}; }`);\r\n }\r\n const symbolIconModuleColor = theme.getColor(SYMBOL_ICON_MODULE_FOREGROUND);\r\n if (symbolIconModuleColor) {\r\n collector.addRule(`${Codicon.symbolModule.cssSelector} { color: ${symbolIconModuleColor}; }`);\r\n }\r\n const outlineNamespaceColor = theme.getColor(SYMBOL_ICON_NAMESPACE_FOREGROUND);\r\n if (outlineNamespaceColor) {\r\n collector.addRule(`${Codicon.symbolNamespace.cssSelector} { color: ${outlineNamespaceColor}; }`);\r\n }\r\n const symbolIconNullColor = theme.getColor(SYMBOL_ICON_NULL_FOREGROUND);\r\n if (symbolIconNullColor) {\r\n collector.addRule(`${Codicon.symbolNull.cssSelector} { color: ${symbolIconNullColor}; }`);\r\n }\r\n const symbolIconNumberColor = theme.getColor(SYMBOL_ICON_NUMBER_FOREGROUND);\r\n if (symbolIconNumberColor) {\r\n collector.addRule(`${Codicon.symbolNumber.cssSelector} { color: ${symbolIconNumberColor}; }`);\r\n }\r\n const symbolIconObjectColor = theme.getColor(SYMBOL_ICON_OBJECT_FOREGROUND);\r\n if (symbolIconObjectColor) {\r\n collector.addRule(`${Codicon.symbolObject.cssSelector} { color: ${symbolIconObjectColor}; }`);\r\n }\r\n const symbolIconOperatorColor = theme.getColor(SYMBOL_ICON_OPERATOR_FOREGROUND);\r\n if (symbolIconOperatorColor) {\r\n collector.addRule(`${Codicon.symbolOperator.cssSelector} { color: ${symbolIconOperatorColor}; }`);\r\n }\r\n const symbolIconPackageColor = theme.getColor(SYMBOL_ICON_PACKAGE_FOREGROUND);\r\n if (symbolIconPackageColor) {\r\n collector.addRule(`${Codicon.symbolPackage.cssSelector} { color: ${symbolIconPackageColor}; }`);\r\n }\r\n const symbolIconPropertyColor = theme.getColor(SYMBOL_ICON_PROPERTY_FOREGROUND);\r\n if (symbolIconPropertyColor) {\r\n collector.addRule(`${Codicon.symbolProperty.cssSelector} { color: ${symbolIconPropertyColor}; }`);\r\n }\r\n const symbolIconReferenceColor = theme.getColor(SYMBOL_ICON_REFERENCE_FOREGROUND);\r\n if (symbolIconReferenceColor) {\r\n collector.addRule(`${Codicon.symbolReference.cssSelector} { color: ${symbolIconReferenceColor}; }`);\r\n }\r\n const symbolIconSnippetColor = theme.getColor(SYMBOL_ICON_SNIPPET_FOREGROUND);\r\n if (symbolIconSnippetColor) {\r\n collector.addRule(`${Codicon.symbolSnippet.cssSelector} { color: ${symbolIconSnippetColor}; }`);\r\n }\r\n const symbolIconStringColor = theme.getColor(SYMBOL_ICON_STRING_FOREGROUND);\r\n if (symbolIconStringColor) {\r\n collector.addRule(`${Codicon.symbolString.cssSelector} { color: ${symbolIconStringColor}; }`);\r\n }\r\n const symbolIconStructColor = theme.getColor(SYMBOL_ICON_STRUCT_FOREGROUND);\r\n if (symbolIconStructColor) {\r\n collector.addRule(`${Codicon.symbolStruct.cssSelector} { color: ${symbolIconStructColor}; }`);\r\n }\r\n const symbolIconTextColor = theme.getColor(SYMBOL_ICON_TEXT_FOREGROUND);\r\n if (symbolIconTextColor) {\r\n collector.addRule(`${Codicon.symbolText.cssSelector} { color: ${symbolIconTextColor}; }`);\r\n }\r\n const symbolIconTypeParameterColor = theme.getColor(SYMBOL_ICON_TYPEPARAMETER_FOREGROUND);\r\n if (symbolIconTypeParameterColor) {\r\n collector.addRule(`${Codicon.symbolTypeParameter.cssSelector} { color: ${symbolIconTypeParameterColor}; }`);\r\n }\r\n const symbolIconUnitColor = theme.getColor(SYMBOL_ICON_UNIT_FOREGROUND);\r\n if (symbolIconUnitColor) {\r\n collector.addRule(`${Codicon.symbolUnit.cssSelector} { color: ${symbolIconUnitColor}; }`);\r\n }\r\n const symbolIconVariableColor = theme.getColor(SYMBOL_ICON_VARIABLE_FOREGROUND);\r\n if (symbolIconVariableColor) {\r\n collector.addRule(`${Codicon.symbolVariable.cssSelector} { color: ${symbolIconVariableColor}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { Delayer } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution, MultiEditorAction, registerMultiEditorAction } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_FIND_WIDGET_VISIBLE, FIND_IDS, FindModelBoundToEditorModel, ToggleCaseSensitiveKeybinding, ToggleRegexKeybinding, ToggleSearchScopeKeybinding, ToggleWholeWordKeybinding, CONTEXT_REPLACE_INPUT_FOCUSED } from './findModel.js';\r\nimport { FindOptionsWidget } from './findOptionsWidget.js';\r\nimport { FindReplaceState } from './findState.js';\r\nimport { FindWidget } from './findWidget.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { IContextKeyService, ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextViewService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { IStorageService } from '../../../platform/storage/common/storage.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IStorageKeysSyncRegistryService } from '../../../platform/userDataSync/common/storageKeys.js';\r\nconst SEARCH_STRING_MAX_LENGTH = 524288;\r\nexport function getSelectionSearchString(editor) {\r\n if (!editor.hasModel()) {\r\n return null;\r\n }\r\n const selection = editor.getSelection();\r\n // if selection spans multiple lines, default search string to empty\r\n if (selection.startLineNumber === selection.endLineNumber) {\r\n if (selection.isEmpty()) {\r\n const wordAtPosition = editor.getConfiguredWordAtPosition(selection.getStartPosition());\r\n if (wordAtPosition) {\r\n return wordAtPosition.word;\r\n }\r\n }\r\n else {\r\n if (editor.getModel().getValueLengthInRange(selection) < SEARCH_STRING_MAX_LENGTH) {\r\n return editor.getModel().getValueInRange(selection);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\nlet CommonFindController = class CommonFindController extends Disposable {\r\n constructor(editor, contextKeyService, storageService, clipboardService) {\r\n super();\r\n this._editor = editor;\r\n this._findWidgetVisible = CONTEXT_FIND_WIDGET_VISIBLE.bindTo(contextKeyService);\r\n this._contextKeyService = contextKeyService;\r\n this._storageService = storageService;\r\n this._clipboardService = clipboardService;\r\n this._updateHistoryDelayer = new Delayer(500);\r\n this._state = this._register(new FindReplaceState());\r\n this.loadQueryState();\r\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\r\n this._model = null;\r\n this._register(this._editor.onDidChangeModel(() => {\r\n let shouldRestartFind = (this._editor.getModel() && this._state.isRevealed);\r\n this.disposeModel();\r\n this._state.change({\r\n searchScope: null,\r\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* WORKSPACE */, false),\r\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* WORKSPACE */, false),\r\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* WORKSPACE */, false),\r\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* WORKSPACE */, false)\r\n }, false);\r\n if (shouldRestartFind) {\r\n this._start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: false && this._editor.getOption(29 /* find */).seedSearchStringFromSelection,\r\n seedSearchStringFromGlobalClipboard: false,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: false,\r\n updateSearchScope: false,\r\n loop: this._editor.getOption(29 /* find */).loop\r\n });\r\n }\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(CommonFindController.ID);\r\n }\r\n dispose() {\r\n this.disposeModel();\r\n super.dispose();\r\n }\r\n disposeModel() {\r\n if (this._model) {\r\n this._model.dispose();\r\n this._model = null;\r\n }\r\n }\r\n _onStateChanged(e) {\r\n this.saveQueryState(e);\r\n if (e.isRevealed) {\r\n if (this._state.isRevealed) {\r\n this._findWidgetVisible.set(true);\r\n }\r\n else {\r\n this._findWidgetVisible.reset();\r\n this.disposeModel();\r\n }\r\n }\r\n if (e.searchString) {\r\n this.setGlobalBufferTerm(this._state.searchString);\r\n }\r\n }\r\n saveQueryState(e) {\r\n if (e.isRegex) {\r\n this._storageService.store('editor.isRegex', this._state.actualIsRegex, 1 /* WORKSPACE */);\r\n }\r\n if (e.wholeWord) {\r\n this._storageService.store('editor.wholeWord', this._state.actualWholeWord, 1 /* WORKSPACE */);\r\n }\r\n if (e.matchCase) {\r\n this._storageService.store('editor.matchCase', this._state.actualMatchCase, 1 /* WORKSPACE */);\r\n }\r\n if (e.preserveCase) {\r\n this._storageService.store('editor.preserveCase', this._state.actualPreserveCase, 1 /* WORKSPACE */);\r\n }\r\n }\r\n loadQueryState() {\r\n this._state.change({\r\n matchCase: this._storageService.getBoolean('editor.matchCase', 1 /* WORKSPACE */, this._state.matchCase),\r\n wholeWord: this._storageService.getBoolean('editor.wholeWord', 1 /* WORKSPACE */, this._state.wholeWord),\r\n isRegex: this._storageService.getBoolean('editor.isRegex', 1 /* WORKSPACE */, this._state.isRegex),\r\n preserveCase: this._storageService.getBoolean('editor.preserveCase', 1 /* WORKSPACE */, this._state.preserveCase)\r\n }, false);\r\n }\r\n isFindInputFocused() {\r\n return !!CONTEXT_FIND_INPUT_FOCUSED.getValue(this._contextKeyService);\r\n }\r\n getState() {\r\n return this._state;\r\n }\r\n closeFindWidget() {\r\n this._state.change({\r\n isRevealed: false,\r\n searchScope: null\r\n }, false);\r\n this._editor.focus();\r\n }\r\n toggleCaseSensitive() {\r\n this._state.change({ matchCase: !this._state.matchCase }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n toggleWholeWords() {\r\n this._state.change({ wholeWord: !this._state.wholeWord }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n toggleRegex() {\r\n this._state.change({ isRegex: !this._state.isRegex }, false);\r\n if (!this._state.isRevealed) {\r\n this.highlightFindOptions();\r\n }\r\n }\r\n toggleSearchScope() {\r\n if (this._state.searchScope) {\r\n this._state.change({ searchScope: null }, true);\r\n }\r\n else {\r\n if (this._editor.hasModel()) {\r\n let selections = this._editor.getSelections();\r\n selections.map(selection => {\r\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\r\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\r\n }\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n return null;\r\n }).filter(element => !!element);\r\n if (selections.length) {\r\n this._state.change({ searchScope: selections }, true);\r\n }\r\n }\r\n }\r\n }\r\n setSearchString(searchString) {\r\n if (this._state.isRegex) {\r\n searchString = strings.escapeRegExpCharacters(searchString);\r\n }\r\n this._state.change({ searchString: searchString }, false);\r\n }\r\n highlightFindOptions() {\r\n // overwritten in subclass\r\n }\r\n _start(opts) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.disposeModel();\r\n if (!this._editor.hasModel()) {\r\n // cannot do anything with an editor that doesn't have a model...\r\n return;\r\n }\r\n let stateChanges = {\r\n isRevealed: true\r\n };\r\n if (opts.seedSearchStringFromSelection) {\r\n let selectionSearchString = getSelectionSearchString(this._editor);\r\n if (selectionSearchString) {\r\n if (this._state.isRegex) {\r\n stateChanges.searchString = strings.escapeRegExpCharacters(selectionSearchString);\r\n }\r\n else {\r\n stateChanges.searchString = selectionSearchString;\r\n }\r\n }\r\n }\r\n if (!stateChanges.searchString && opts.seedSearchStringFromGlobalClipboard) {\r\n let selectionSearchString = yield this.getGlobalBufferTerm();\r\n if (!this._editor.hasModel()) {\r\n // the editor has lost its model in the meantime\r\n return;\r\n }\r\n if (selectionSearchString) {\r\n stateChanges.searchString = selectionSearchString;\r\n }\r\n }\r\n // Overwrite isReplaceRevealed\r\n if (opts.forceRevealReplace) {\r\n stateChanges.isReplaceRevealed = true;\r\n }\r\n else if (!this._findWidgetVisible.get()) {\r\n stateChanges.isReplaceRevealed = false;\r\n }\r\n if (opts.updateSearchScope) {\r\n let currentSelections = this._editor.getSelections();\r\n if (currentSelections.some(selection => !selection.isEmpty())) {\r\n stateChanges.searchScope = currentSelections;\r\n }\r\n }\r\n stateChanges.loop = opts.loop;\r\n this._state.change(stateChanges, false);\r\n if (!this._model) {\r\n this._model = new FindModelBoundToEditorModel(this._editor, this._state);\r\n }\r\n });\r\n }\r\n start(opts) {\r\n return this._start(opts);\r\n }\r\n moveToNextMatch() {\r\n if (this._model) {\r\n this._model.moveToNextMatch();\r\n return true;\r\n }\r\n return false;\r\n }\r\n moveToPrevMatch() {\r\n if (this._model) {\r\n this._model.moveToPrevMatch();\r\n return true;\r\n }\r\n return false;\r\n }\r\n replace() {\r\n if (this._model) {\r\n this._model.replace();\r\n return true;\r\n }\r\n return false;\r\n }\r\n replaceAll() {\r\n if (this._model) {\r\n this._model.replaceAll();\r\n return true;\r\n }\r\n return false;\r\n }\r\n selectAllMatches() {\r\n if (this._model) {\r\n this._model.selectAllMatches();\r\n this._editor.focus();\r\n return true;\r\n }\r\n return false;\r\n }\r\n getGlobalBufferTerm() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._editor.getOption(29 /* find */).globalFindClipboard\r\n && this._editor.hasModel()\r\n && !this._editor.getModel().isTooLargeForSyncing()) {\r\n return this._clipboardService.readFindText();\r\n }\r\n return '';\r\n });\r\n }\r\n setGlobalBufferTerm(text) {\r\n if (this._editor.getOption(29 /* find */).globalFindClipboard\r\n && this._editor.hasModel()\r\n && !this._editor.getModel().isTooLargeForSyncing()) {\r\n // intentionally not awaited\r\n this._clipboardService.writeFindText(text);\r\n }\r\n }\r\n};\r\nCommonFindController.ID = 'editor.contrib.findController';\r\nCommonFindController = __decorate([\r\n __param(1, IContextKeyService),\r\n __param(2, IStorageService),\r\n __param(3, IClipboardService)\r\n], CommonFindController);\r\nexport { CommonFindController };\r\nlet FindController = class FindController extends CommonFindController {\r\n constructor(editor, _contextViewService, _contextKeyService, _keybindingService, _themeService, _notificationService, _storageService, _storageKeysSyncRegistryService, clipboardService) {\r\n super(editor, _contextKeyService, _storageService, clipboardService);\r\n this._contextViewService = _contextViewService;\r\n this._keybindingService = _keybindingService;\r\n this._themeService = _themeService;\r\n this._notificationService = _notificationService;\r\n this._storageKeysSyncRegistryService = _storageKeysSyncRegistryService;\r\n this._widget = null;\r\n this._findOptionsWidget = null;\r\n }\r\n _start(opts) {\r\n const _super = Object.create(null, {\r\n _start: { get: () => super._start }\r\n });\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._widget) {\r\n this._createFindWidget();\r\n }\r\n const selection = this._editor.getSelection();\r\n let updateSearchScope = false;\r\n switch (this._editor.getOption(29 /* find */).autoFindInSelection) {\r\n case 'always':\r\n updateSearchScope = true;\r\n break;\r\n case 'never':\r\n updateSearchScope = false;\r\n break;\r\n case 'multiline':\r\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\r\n updateSearchScope = isSelectionMultipleLine;\r\n break;\r\n default:\r\n break;\r\n }\r\n opts.updateSearchScope = updateSearchScope;\r\n yield _super._start.call(this, opts);\r\n if (this._widget) {\r\n if (opts.shouldFocus === 2 /* FocusReplaceInput */) {\r\n this._widget.focusReplaceInput();\r\n }\r\n else if (opts.shouldFocus === 1 /* FocusFindInput */) {\r\n this._widget.focusFindInput();\r\n }\r\n }\r\n });\r\n }\r\n highlightFindOptions() {\r\n if (!this._widget) {\r\n this._createFindWidget();\r\n }\r\n if (this._state.isRevealed) {\r\n this._widget.highlightFindOptions();\r\n }\r\n else {\r\n this._findOptionsWidget.highlightFindOptions();\r\n }\r\n }\r\n _createFindWidget() {\r\n this._widget = this._register(new FindWidget(this._editor, this, this._state, this._contextViewService, this._keybindingService, this._contextKeyService, this._themeService, this._storageService, this._notificationService, this._storageKeysSyncRegistryService));\r\n this._findOptionsWidget = this._register(new FindOptionsWidget(this._editor, this._state, this._keybindingService, this._themeService));\r\n }\r\n};\r\nFindController = __decorate([\r\n __param(1, IContextViewService),\r\n __param(2, IContextKeyService),\r\n __param(3, IKeybindingService),\r\n __param(4, IThemeService),\r\n __param(5, INotificationService),\r\n __param(6, IStorageService),\r\n __param(7, IStorageKeysSyncRegistryService),\r\n __param(8, IClipboardService)\r\n], FindController);\r\nexport { FindController };\r\nexport class StartFindAction extends MultiEditorAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.StartFindAction,\r\n label: nls.localize('startFindAction', \"Find\"),\r\n alias: 'Find',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 36 /* KEY_F */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '3_find',\r\n title: nls.localize({ key: 'miFind', comment: ['&& denotes a mnemonic'] }, \"&&Find\"),\r\n order: 1\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (controller) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: editor.getOption(29 /* find */).seedSearchStringFromSelection,\r\n seedSearchStringFromGlobalClipboard: editor.getOption(29 /* find */).globalFindClipboard,\r\n shouldFocus: 1 /* FocusFindInput */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(29 /* find */).loop\r\n });\r\n }\r\n });\r\n }\r\n}\r\nexport class StartFindWithSelectionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.StartFindWithSelection,\r\n label: nls.localize('startFindWithSelectionAction', \"Find With Selection\"),\r\n alias: 'Find With Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 0,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 35 /* KEY_E */,\r\n },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (controller) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: true,\r\n seedSearchStringFromGlobalClipboard: false,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(29 /* find */).loop\r\n });\r\n controller.setGlobalBufferTerm(controller.getState().searchString);\r\n }\r\n });\r\n }\r\n}\r\nexport class MatchFindAction extends EditorAction {\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (controller && !this._run(controller)) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: (controller.getState().searchString.length === 0) && editor.getOption(29 /* find */).seedSearchStringFromSelection,\r\n seedSearchStringFromGlobalClipboard: true,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(29 /* find */).loop\r\n });\r\n this._run(controller);\r\n }\r\n });\r\n }\r\n}\r\nexport class NextMatchFindAction extends MatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.NextMatchFindAction,\r\n label: nls.localize('findNextMatchAction', \"Find Next\"),\r\n alias: 'Find Next',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 61 /* F3 */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 37 /* KEY_G */, secondary: [61 /* F3 */] },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToNextMatch();\r\n }\r\n}\r\nexport class NextMatchFindAction2 extends MatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.NextMatchFindAction,\r\n label: nls.localize('findNextMatchAction', \"Find Next\"),\r\n alias: 'Find Next',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\r\n primary: 3 /* Enter */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToNextMatch();\r\n }\r\n}\r\nexport class PreviousMatchFindAction extends MatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.PreviousMatchFindAction,\r\n label: nls.localize('findPreviousMatchAction', \"Find Previous\"),\r\n alias: 'Find Previous',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ | 61 /* F3 */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 37 /* KEY_G */, secondary: [1024 /* Shift */ | 61 /* F3 */] },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToPrevMatch();\r\n }\r\n}\r\nexport class PreviousMatchFindAction2 extends MatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.PreviousMatchFindAction,\r\n label: nls.localize('findPreviousMatchAction', \"Find Previous\"),\r\n alias: 'Find Previous',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_FIND_INPUT_FOCUSED),\r\n primary: 1024 /* Shift */ | 3 /* Enter */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToPrevMatch();\r\n }\r\n}\r\nexport class SelectionMatchFindAction extends EditorAction {\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = CommonFindController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n let selectionSearchString = getSelectionSearchString(editor);\r\n if (selectionSearchString) {\r\n controller.setSearchString(selectionSearchString);\r\n }\r\n if (!this._run(controller)) {\r\n yield controller.start({\r\n forceRevealReplace: false,\r\n seedSearchStringFromSelection: editor.getOption(29 /* find */).seedSearchStringFromSelection,\r\n seedSearchStringFromGlobalClipboard: false,\r\n shouldFocus: 0 /* NoFocusChange */,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(29 /* find */).loop\r\n });\r\n this._run(controller);\r\n }\r\n });\r\n }\r\n}\r\nexport class NextSelectionMatchFindAction extends SelectionMatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.NextSelectionMatchFindAction,\r\n label: nls.localize('nextSelectionMatchFindAction', \"Find Next Selection\"),\r\n alias: 'Find Next Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 61 /* F3 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToNextMatch();\r\n }\r\n}\r\nexport class PreviousSelectionMatchFindAction extends SelectionMatchFindAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.PreviousSelectionMatchFindAction,\r\n label: nls.localize('previousSelectionMatchFindAction', \"Find Previous Selection\"),\r\n alias: 'Find Previous Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 61 /* F3 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(controller) {\r\n return controller.moveToPrevMatch();\r\n }\r\n}\r\nexport class StartFindReplaceAction extends MultiEditorAction {\r\n constructor() {\r\n super({\r\n id: FIND_IDS.StartFindReplaceAction,\r\n label: nls.localize('startReplace', \"Replace\"),\r\n alias: 'Replace',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 38 /* KEY_H */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 36 /* KEY_F */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarEditMenu,\r\n group: '3_find',\r\n title: nls.localize({ key: 'miReplace', comment: ['&& denotes a mnemonic'] }, \"&&Replace\"),\r\n order: 2\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!editor.hasModel() || editor.getOption(72 /* readOnly */)) {\r\n return;\r\n }\r\n let controller = CommonFindController.get(editor);\r\n let currentSelection = editor.getSelection();\r\n let findInputFocused = controller.isFindInputFocused();\r\n // we only seed search string from selection when the current selection is single line and not empty,\r\n // + the find input is not focused\r\n let seedSearchStringFromSelection = !currentSelection.isEmpty()\r\n && currentSelection.startLineNumber === currentSelection.endLineNumber && editor.getOption(29 /* find */).seedSearchStringFromSelection\r\n && !findInputFocused;\r\n /*\r\n * if the existing search string in find widget is empty and we don't seed search string from selection, it means the Find Input is still empty, so we should focus the Find Input instead of Replace Input.\r\n \r\n * findInputFocused true -> seedSearchStringFromSelection false, FocusReplaceInput\r\n * findInputFocused false, seedSearchStringFromSelection true FocusReplaceInput\r\n * findInputFocused false seedSearchStringFromSelection false FocusFindInput\r\n */\r\n let shouldFocus = (findInputFocused || seedSearchStringFromSelection) ?\r\n 2 /* FocusReplaceInput */ : 1 /* FocusFindInput */;\r\n if (controller) {\r\n yield controller.start({\r\n forceRevealReplace: true,\r\n seedSearchStringFromSelection: seedSearchStringFromSelection,\r\n seedSearchStringFromGlobalClipboard: editor.getOption(29 /* find */).seedSearchStringFromSelection,\r\n shouldFocus: shouldFocus,\r\n shouldAnimate: true,\r\n updateSearchScope: false,\r\n loop: editor.getOption(29 /* find */).loop\r\n });\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorContribution(CommonFindController.ID, FindController);\r\nexport const EditorStartFindAction = new StartFindAction();\r\nregisterMultiEditorAction(EditorStartFindAction);\r\nregisterEditorAction(StartFindWithSelectionAction);\r\nregisterEditorAction(NextMatchFindAction);\r\nregisterEditorAction(NextMatchFindAction2);\r\nregisterEditorAction(PreviousMatchFindAction);\r\nregisterEditorAction(PreviousMatchFindAction2);\r\nregisterEditorAction(NextSelectionMatchFindAction);\r\nregisterEditorAction(PreviousSelectionMatchFindAction);\r\nexport const EditorStartFindReplaceAction = new StartFindReplaceAction();\r\nregisterMultiEditorAction(EditorStartFindReplaceAction);\r\nconst FindCommand = EditorCommand.bindToContribution(CommonFindController.get);\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.CloseFindWidgetCommand,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.closeFindWidget(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleCaseSensitiveCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleCaseSensitive(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleCaseSensitiveKeybinding.primary,\r\n mac: ToggleCaseSensitiveKeybinding.mac,\r\n win: ToggleCaseSensitiveKeybinding.win,\r\n linux: ToggleCaseSensitiveKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleWholeWordCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleWholeWords(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleWholeWordKeybinding.primary,\r\n mac: ToggleWholeWordKeybinding.mac,\r\n win: ToggleWholeWordKeybinding.win,\r\n linux: ToggleWholeWordKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleRegexCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleRegex(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleRegexKeybinding.primary,\r\n mac: ToggleRegexKeybinding.mac,\r\n win: ToggleRegexKeybinding.win,\r\n linux: ToggleRegexKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ToggleSearchScopeCommand,\r\n precondition: undefined,\r\n handler: x => x.toggleSearchScope(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: ToggleSearchScopeKeybinding.primary,\r\n mac: ToggleSearchScopeKeybinding.mac,\r\n win: ToggleSearchScopeKeybinding.win,\r\n linux: ToggleSearchScopeKeybinding.linux\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceOneAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replace(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 22 /* KEY_1 */\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceOneAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replace(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\r\n primary: 3 /* Enter */\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceAllAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replaceAll(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 3 /* Enter */\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.ReplaceAllAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.replaceAll(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.focus, CONTEXT_REPLACE_INPUT_FOCUSED),\r\n primary: undefined,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 3 /* Enter */,\r\n }\r\n }\r\n}));\r\nregisterEditorCommand(new FindCommand({\r\n id: FIND_IDS.SelectAllMatchesAction,\r\n precondition: CONTEXT_FIND_WIDGET_VISIBLE,\r\n handler: x => x.selectAllMatches(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 5,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 512 /* Alt */ | 3 /* Enter */\r\n }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { OverviewRulerLane, MinimapPosition } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { overviewRulerFindMatchForeground, minimapFindMatch } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nexport class FindDecorations {\r\n constructor(editor) {\r\n this._editor = editor;\r\n this._decorations = [];\r\n this._overviewRulerApproximateDecorations = [];\r\n this._findScopeDecorationIds = [];\r\n this._rangeHighlightDecorationId = null;\r\n this._highlightedDecorationId = null;\r\n this._startPosition = this._editor.getPosition();\r\n }\r\n dispose() {\r\n this._editor.deltaDecorations(this._allDecorations(), []);\r\n this._decorations = [];\r\n this._overviewRulerApproximateDecorations = [];\r\n this._findScopeDecorationIds = [];\r\n this._rangeHighlightDecorationId = null;\r\n this._highlightedDecorationId = null;\r\n }\r\n reset() {\r\n this._decorations = [];\r\n this._overviewRulerApproximateDecorations = [];\r\n this._findScopeDecorationIds = [];\r\n this._rangeHighlightDecorationId = null;\r\n this._highlightedDecorationId = null;\r\n }\r\n getCount() {\r\n return this._decorations.length;\r\n }\r\n /** @deprecated use getFindScopes to support multiple selections */\r\n getFindScope() {\r\n if (this._findScopeDecorationIds[0]) {\r\n return this._editor.getModel().getDecorationRange(this._findScopeDecorationIds[0]);\r\n }\r\n return null;\r\n }\r\n getFindScopes() {\r\n if (this._findScopeDecorationIds.length) {\r\n const scopes = this._findScopeDecorationIds.map(findScopeDecorationId => this._editor.getModel().getDecorationRange(findScopeDecorationId)).filter(element => !!element);\r\n if (scopes.length) {\r\n return scopes;\r\n }\r\n }\r\n return null;\r\n }\r\n getStartPosition() {\r\n return this._startPosition;\r\n }\r\n setStartPosition(newStartPosition) {\r\n this._startPosition = newStartPosition;\r\n this.setCurrentFindMatch(null);\r\n }\r\n _getDecorationIndex(decorationId) {\r\n const index = this._decorations.indexOf(decorationId);\r\n if (index >= 0) {\r\n return index + 1;\r\n }\r\n return 1;\r\n }\r\n getCurrentMatchesPosition(desiredRange) {\r\n let candidates = this._editor.getModel().getDecorationsInRange(desiredRange);\r\n for (const candidate of candidates) {\r\n const candidateOpts = candidate.options;\r\n if (candidateOpts === FindDecorations._FIND_MATCH_DECORATION || candidateOpts === FindDecorations._CURRENT_FIND_MATCH_DECORATION) {\r\n return this._getDecorationIndex(candidate.id);\r\n }\r\n }\r\n // We don't know the current match position, so returns zero to show '?' in find widget\r\n return 0;\r\n }\r\n setCurrentFindMatch(nextMatch) {\r\n let newCurrentDecorationId = null;\r\n let matchPosition = 0;\r\n if (nextMatch) {\r\n for (let i = 0, len = this._decorations.length; i < len; i++) {\r\n let range = this._editor.getModel().getDecorationRange(this._decorations[i]);\r\n if (nextMatch.equalsRange(range)) {\r\n newCurrentDecorationId = this._decorations[i];\r\n matchPosition = (i + 1);\r\n break;\r\n }\r\n }\r\n }\r\n if (this._highlightedDecorationId !== null || newCurrentDecorationId !== null) {\r\n this._editor.changeDecorations((changeAccessor) => {\r\n if (this._highlightedDecorationId !== null) {\r\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._FIND_MATCH_DECORATION);\r\n this._highlightedDecorationId = null;\r\n }\r\n if (newCurrentDecorationId !== null) {\r\n this._highlightedDecorationId = newCurrentDecorationId;\r\n changeAccessor.changeDecorationOptions(this._highlightedDecorationId, FindDecorations._CURRENT_FIND_MATCH_DECORATION);\r\n }\r\n if (this._rangeHighlightDecorationId !== null) {\r\n changeAccessor.removeDecoration(this._rangeHighlightDecorationId);\r\n this._rangeHighlightDecorationId = null;\r\n }\r\n if (newCurrentDecorationId !== null) {\r\n let rng = this._editor.getModel().getDecorationRange(newCurrentDecorationId);\r\n if (rng.startLineNumber !== rng.endLineNumber && rng.endColumn === 1) {\r\n let lineBeforeEnd = rng.endLineNumber - 1;\r\n let lineBeforeEndMaxColumn = this._editor.getModel().getLineMaxColumn(lineBeforeEnd);\r\n rng = new Range(rng.startLineNumber, rng.startColumn, lineBeforeEnd, lineBeforeEndMaxColumn);\r\n }\r\n this._rangeHighlightDecorationId = changeAccessor.addDecoration(rng, FindDecorations._RANGE_HIGHLIGHT_DECORATION);\r\n }\r\n });\r\n }\r\n return matchPosition;\r\n }\r\n set(findMatches, findScopes) {\r\n this._editor.changeDecorations((accessor) => {\r\n let findMatchesOptions = FindDecorations._FIND_MATCH_DECORATION;\r\n let newOverviewRulerApproximateDecorations = [];\r\n if (findMatches.length > 1000) {\r\n // we go into a mode where the overview ruler gets \"approximate\" decorations\r\n // the reason is that the overview ruler paints all the decorations in the file and we don't want to cause freezes\r\n findMatchesOptions = FindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION;\r\n // approximate a distance in lines where matches should be merged\r\n const lineCount = this._editor.getModel().getLineCount();\r\n const height = this._editor.getLayoutInfo().height;\r\n const approxPixelsPerLine = height / lineCount;\r\n const mergeLinesDelta = Math.max(2, Math.ceil(3 / approxPixelsPerLine));\r\n // merge decorations as much as possible\r\n let prevStartLineNumber = findMatches[0].range.startLineNumber;\r\n let prevEndLineNumber = findMatches[0].range.endLineNumber;\r\n for (let i = 1, len = findMatches.length; i < len; i++) {\r\n const range = findMatches[i].range;\r\n if (prevEndLineNumber + mergeLinesDelta >= range.startLineNumber) {\r\n if (range.endLineNumber > prevEndLineNumber) {\r\n prevEndLineNumber = range.endLineNumber;\r\n }\r\n }\r\n else {\r\n newOverviewRulerApproximateDecorations.push({\r\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\r\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\r\n });\r\n prevStartLineNumber = range.startLineNumber;\r\n prevEndLineNumber = range.endLineNumber;\r\n }\r\n }\r\n newOverviewRulerApproximateDecorations.push({\r\n range: new Range(prevStartLineNumber, 1, prevEndLineNumber, 1),\r\n options: FindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION\r\n });\r\n }\r\n // Find matches\r\n let newFindMatchesDecorations = new Array(findMatches.length);\r\n for (let i = 0, len = findMatches.length; i < len; i++) {\r\n newFindMatchesDecorations[i] = {\r\n range: findMatches[i].range,\r\n options: findMatchesOptions\r\n };\r\n }\r\n this._decorations = accessor.deltaDecorations(this._decorations, newFindMatchesDecorations);\r\n // Overview ruler approximate decorations\r\n this._overviewRulerApproximateDecorations = accessor.deltaDecorations(this._overviewRulerApproximateDecorations, newOverviewRulerApproximateDecorations);\r\n // Range highlight\r\n if (this._rangeHighlightDecorationId) {\r\n accessor.removeDecoration(this._rangeHighlightDecorationId);\r\n this._rangeHighlightDecorationId = null;\r\n }\r\n // Find scope\r\n if (this._findScopeDecorationIds.length) {\r\n this._findScopeDecorationIds.forEach(findScopeDecorationId => accessor.removeDecoration(findScopeDecorationId));\r\n this._findScopeDecorationIds = [];\r\n }\r\n if (findScopes === null || findScopes === void 0 ? void 0 : findScopes.length) {\r\n this._findScopeDecorationIds = findScopes.map(findScope => accessor.addDecoration(findScope, FindDecorations._FIND_SCOPE_DECORATION));\r\n }\r\n });\r\n }\r\n matchBeforePosition(position) {\r\n if (this._decorations.length === 0) {\r\n return null;\r\n }\r\n for (let i = this._decorations.length - 1; i >= 0; i--) {\r\n let decorationId = this._decorations[i];\r\n let r = this._editor.getModel().getDecorationRange(decorationId);\r\n if (!r || r.endLineNumber > position.lineNumber) {\r\n continue;\r\n }\r\n if (r.endLineNumber < position.lineNumber) {\r\n return r;\r\n }\r\n if (r.endColumn > position.column) {\r\n continue;\r\n }\r\n return r;\r\n }\r\n return this._editor.getModel().getDecorationRange(this._decorations[this._decorations.length - 1]);\r\n }\r\n matchAfterPosition(position) {\r\n if (this._decorations.length === 0) {\r\n return null;\r\n }\r\n for (let i = 0, len = this._decorations.length; i < len; i++) {\r\n let decorationId = this._decorations[i];\r\n let r = this._editor.getModel().getDecorationRange(decorationId);\r\n if (!r || r.startLineNumber < position.lineNumber) {\r\n continue;\r\n }\r\n if (r.startLineNumber > position.lineNumber) {\r\n return r;\r\n }\r\n if (r.startColumn < position.column) {\r\n continue;\r\n }\r\n return r;\r\n }\r\n return this._editor.getModel().getDecorationRange(this._decorations[0]);\r\n }\r\n _allDecorations() {\r\n let result = [];\r\n result = result.concat(this._decorations);\r\n result = result.concat(this._overviewRulerApproximateDecorations);\r\n if (this._findScopeDecorationIds.length) {\r\n result.push(...this._findScopeDecorationIds);\r\n }\r\n if (this._rangeHighlightDecorationId) {\r\n result.push(this._rangeHighlightDecorationId);\r\n }\r\n return result;\r\n }\r\n}\r\nFindDecorations._CURRENT_FIND_MATCH_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n zIndex: 13,\r\n className: 'currentFindMatch',\r\n showIfCollapsed: true,\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerFindMatchForeground),\r\n position: OverviewRulerLane.Center\r\n },\r\n minimap: {\r\n color: themeColorFromId(minimapFindMatch),\r\n position: MinimapPosition.Inline\r\n }\r\n});\r\nFindDecorations._FIND_MATCH_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'findMatch',\r\n showIfCollapsed: true,\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerFindMatchForeground),\r\n position: OverviewRulerLane.Center\r\n },\r\n minimap: {\r\n color: themeColorFromId(minimapFindMatch),\r\n position: MinimapPosition.Inline\r\n }\r\n});\r\nFindDecorations._FIND_MATCH_NO_OVERVIEW_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'findMatch',\r\n showIfCollapsed: true\r\n});\r\nFindDecorations._FIND_MATCH_ONLY_OVERVIEW_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerFindMatchForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nFindDecorations._RANGE_HIGHLIGHT_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'rangeHighlight',\r\n isWholeLine: true\r\n});\r\nFindDecorations._FIND_SCOPE_DECORATION = ModelDecorationOptions.register({\r\n className: 'findScope',\r\n isWholeLine: true\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RunOnceScheduler, TimeoutTimer } from '../../../base/common/async.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection } from '../../common/commands/replaceCommand.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { SearchParams } from '../../common/model/textModelSearch.js';\r\nimport { FindDecorations } from './findDecorations.js';\r\nimport { ReplaceAllCommand } from './replaceAllCommand.js';\r\nimport { ReplacePattern, parseReplaceString } from './replacePattern.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { findFirstInSorted } from '../../../base/common/arrays.js';\r\nexport const CONTEXT_FIND_WIDGET_VISIBLE = new RawContextKey('findWidgetVisible', false);\r\n// Keep ContextKey use of 'Focussed' to not break when clauses\r\nexport const CONTEXT_FIND_INPUT_FOCUSED = new RawContextKey('findInputFocussed', false);\r\nexport const CONTEXT_REPLACE_INPUT_FOCUSED = new RawContextKey('replaceInputFocussed', false);\r\nexport const ToggleCaseSensitiveKeybinding = {\r\n primary: 512 /* Alt */ | 33 /* KEY_C */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 33 /* KEY_C */ }\r\n};\r\nexport const ToggleWholeWordKeybinding = {\r\n primary: 512 /* Alt */ | 53 /* KEY_W */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 53 /* KEY_W */ }\r\n};\r\nexport const ToggleRegexKeybinding = {\r\n primary: 512 /* Alt */ | 48 /* KEY_R */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 48 /* KEY_R */ }\r\n};\r\nexport const ToggleSearchScopeKeybinding = {\r\n primary: 512 /* Alt */ | 42 /* KEY_L */,\r\n mac: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 42 /* KEY_L */ }\r\n};\r\nexport const FIND_IDS = {\r\n StartFindAction: 'actions.find',\r\n StartFindWithSelection: 'actions.findWithSelection',\r\n NextMatchFindAction: 'editor.action.nextMatchFindAction',\r\n PreviousMatchFindAction: 'editor.action.previousMatchFindAction',\r\n NextSelectionMatchFindAction: 'editor.action.nextSelectionMatchFindAction',\r\n PreviousSelectionMatchFindAction: 'editor.action.previousSelectionMatchFindAction',\r\n StartFindReplaceAction: 'editor.action.startFindReplaceAction',\r\n CloseFindWidgetCommand: 'closeFindWidget',\r\n ToggleCaseSensitiveCommand: 'toggleFindCaseSensitive',\r\n ToggleWholeWordCommand: 'toggleFindWholeWord',\r\n ToggleRegexCommand: 'toggleFindRegex',\r\n ToggleSearchScopeCommand: 'toggleFindInSelection',\r\n TogglePreserveCaseCommand: 'togglePreserveCase',\r\n ReplaceOneAction: 'editor.action.replaceOne',\r\n ReplaceAllAction: 'editor.action.replaceAll',\r\n SelectAllMatchesAction: 'editor.action.selectAllMatches'\r\n};\r\nexport const MATCHES_LIMIT = 19999;\r\nconst RESEARCH_DELAY = 240;\r\nexport class FindModelBoundToEditorModel {\r\n constructor(editor, state) {\r\n this._toDispose = new DisposableStore();\r\n this._editor = editor;\r\n this._state = state;\r\n this._isDisposed = false;\r\n this._startSearchingTimer = new TimeoutTimer();\r\n this._decorations = new FindDecorations(editor);\r\n this._toDispose.add(this._decorations);\r\n this._updateDecorationsScheduler = new RunOnceScheduler(() => this.research(false), 100);\r\n this._toDispose.add(this._updateDecorationsScheduler);\r\n this._toDispose.add(this._editor.onDidChangeCursorPosition((e) => {\r\n if (e.reason === 3 /* Explicit */\r\n || e.reason === 5 /* Undo */\r\n || e.reason === 6 /* Redo */) {\r\n this._decorations.setStartPosition(this._editor.getPosition());\r\n }\r\n }));\r\n this._ignoreModelContentChanged = false;\r\n this._toDispose.add(this._editor.onDidChangeModelContent((e) => {\r\n if (this._ignoreModelContentChanged) {\r\n return;\r\n }\r\n if (e.isFlush) {\r\n // a model.setValue() was called\r\n this._decorations.reset();\r\n }\r\n this._decorations.setStartPosition(this._editor.getPosition());\r\n this._updateDecorationsScheduler.schedule();\r\n }));\r\n this._toDispose.add(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\r\n this.research(false, this._state.searchScope);\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n dispose(this._startSearchingTimer);\r\n this._toDispose.dispose();\r\n }\r\n _onStateChanged(e) {\r\n if (this._isDisposed) {\r\n // The find model is disposed during a find state changed event\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n // The find model will be disposed momentarily\r\n return;\r\n }\r\n if (e.searchString || e.isReplaceRevealed || e.isRegex || e.wholeWord || e.matchCase || e.searchScope) {\r\n let model = this._editor.getModel();\r\n if (model.isTooLargeForSyncing()) {\r\n this._startSearchingTimer.cancel();\r\n this._startSearchingTimer.setIfNotSet(() => {\r\n if (e.searchScope) {\r\n this.research(e.moveCursor, this._state.searchScope);\r\n }\r\n else {\r\n this.research(e.moveCursor);\r\n }\r\n }, RESEARCH_DELAY);\r\n }\r\n else {\r\n if (e.searchScope) {\r\n this.research(e.moveCursor, this._state.searchScope);\r\n }\r\n else {\r\n this.research(e.moveCursor);\r\n }\r\n }\r\n }\r\n }\r\n static _getSearchRange(model, findScope) {\r\n // If we have set now or before a find scope, use it for computing the search range\r\n if (findScope) {\r\n return findScope;\r\n }\r\n return model.getFullModelRange();\r\n }\r\n research(moveCursor, newFindScope) {\r\n let findScopes = null;\r\n if (typeof newFindScope !== 'undefined') {\r\n if (newFindScope !== null) {\r\n if (!Array.isArray(newFindScope)) {\r\n findScopes = [newFindScope];\r\n }\r\n else {\r\n findScopes = newFindScope;\r\n }\r\n }\r\n }\r\n else {\r\n findScopes = this._decorations.getFindScopes();\r\n }\r\n if (findScopes !== null) {\r\n findScopes = findScopes.map(findScope => {\r\n if (findScope.startLineNumber !== findScope.endLineNumber) {\r\n let endLineNumber = findScope.endLineNumber;\r\n if (findScope.endColumn === 1) {\r\n endLineNumber = endLineNumber - 1;\r\n }\r\n return new Range(findScope.startLineNumber, 1, endLineNumber, this._editor.getModel().getLineMaxColumn(endLineNumber));\r\n }\r\n return findScope;\r\n });\r\n }\r\n let findMatches = this._findMatches(findScopes, false, MATCHES_LIMIT);\r\n this._decorations.set(findMatches, findScopes);\r\n const editorSelection = this._editor.getSelection();\r\n let currentMatchesPosition = this._decorations.getCurrentMatchesPosition(editorSelection);\r\n if (currentMatchesPosition === 0 && findMatches.length > 0) {\r\n // current selection is not on top of a match\r\n // try to find its nearest result from the top of the document\r\n const matchAfterSelection = findFirstInSorted(findMatches.map(match => match.range), range => Range.compareRangesUsingStarts(range, editorSelection) >= 0);\r\n currentMatchesPosition = matchAfterSelection > 0 ? matchAfterSelection - 1 + 1 /** match position is one based */ : currentMatchesPosition;\r\n }\r\n this._state.changeMatchInfo(currentMatchesPosition, this._decorations.getCount(), undefined);\r\n if (moveCursor && this._editor.getOption(29 /* find */).cursorMoveOnType) {\r\n this._moveToNextMatch(this._decorations.getStartPosition());\r\n }\r\n }\r\n _hasMatches() {\r\n return (this._state.matchesCount > 0);\r\n }\r\n _cannotFind() {\r\n if (!this._hasMatches()) {\r\n let findScope = this._decorations.getFindScope();\r\n if (findScope) {\r\n // Reveal the selection so user is reminded that 'selection find' is on.\r\n this._editor.revealRangeInCenterIfOutsideViewport(findScope, 0 /* Smooth */);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n _setCurrentFindMatch(match) {\r\n let matchesPosition = this._decorations.setCurrentFindMatch(match);\r\n this._state.changeMatchInfo(matchesPosition, this._decorations.getCount(), match);\r\n this._editor.setSelection(match);\r\n this._editor.revealRangeInCenterIfOutsideViewport(match, 0 /* Smooth */);\r\n }\r\n _prevSearchPosition(before) {\r\n let isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\r\n || this._state.searchString.indexOf('$') >= 0);\r\n let { lineNumber, column } = before;\r\n let model = this._editor.getModel();\r\n if (isUsingLineStops || column === 1) {\r\n if (lineNumber === 1) {\r\n lineNumber = model.getLineCount();\r\n }\r\n else {\r\n lineNumber--;\r\n }\r\n column = model.getLineMaxColumn(lineNumber);\r\n }\r\n else {\r\n column--;\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n _moveToPrevMatch(before, isRecursed = false) {\r\n if (!this._state.canNavigateBack()) {\r\n // we are beyond the first matched find result\r\n // instead of doing nothing, we should refocus the first item\r\n const nextMatchRange = this._decorations.matchAfterPosition(before);\r\n if (nextMatchRange) {\r\n this._setCurrentFindMatch(nextMatchRange);\r\n }\r\n return;\r\n }\r\n if (this._decorations.getCount() < MATCHES_LIMIT) {\r\n let prevMatchRange = this._decorations.matchBeforePosition(before);\r\n if (prevMatchRange && prevMatchRange.isEmpty() && prevMatchRange.getStartPosition().equals(before)) {\r\n before = this._prevSearchPosition(before);\r\n prevMatchRange = this._decorations.matchBeforePosition(before);\r\n }\r\n if (prevMatchRange) {\r\n this._setCurrentFindMatch(prevMatchRange);\r\n }\r\n return;\r\n }\r\n if (this._cannotFind()) {\r\n return;\r\n }\r\n let findScope = this._decorations.getFindScope();\r\n let searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\r\n // ...(----)...|...\r\n if (searchRange.getEndPosition().isBefore(before)) {\r\n before = searchRange.getEndPosition();\r\n }\r\n // ...|...(----)...\r\n if (before.isBefore(searchRange.getStartPosition())) {\r\n before = searchRange.getEndPosition();\r\n }\r\n let { lineNumber, column } = before;\r\n let model = this._editor.getModel();\r\n let position = new Position(lineNumber, column);\r\n let prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, false);\r\n if (prevMatch && prevMatch.range.isEmpty() && prevMatch.range.getStartPosition().equals(position)) {\r\n // Looks like we're stuck at this position, unacceptable!\r\n position = this._prevSearchPosition(position);\r\n prevMatch = model.findPreviousMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, false);\r\n }\r\n if (!prevMatch) {\r\n // there is precisely one match and selection is on top of it\r\n return;\r\n }\r\n if (!isRecursed && !searchRange.containsRange(prevMatch.range)) {\r\n return this._moveToPrevMatch(prevMatch.range.getStartPosition(), true);\r\n }\r\n this._setCurrentFindMatch(prevMatch.range);\r\n }\r\n moveToPrevMatch() {\r\n this._moveToPrevMatch(this._editor.getSelection().getStartPosition());\r\n }\r\n _nextSearchPosition(after) {\r\n let isUsingLineStops = this._state.isRegex && (this._state.searchString.indexOf('^') >= 0\r\n || this._state.searchString.indexOf('$') >= 0);\r\n let { lineNumber, column } = after;\r\n let model = this._editor.getModel();\r\n if (isUsingLineStops || column === model.getLineMaxColumn(lineNumber)) {\r\n if (lineNumber === model.getLineCount()) {\r\n lineNumber = 1;\r\n }\r\n else {\r\n lineNumber++;\r\n }\r\n column = 1;\r\n }\r\n else {\r\n column++;\r\n }\r\n return new Position(lineNumber, column);\r\n }\r\n _moveToNextMatch(after) {\r\n if (!this._state.canNavigateForward()) {\r\n // we are beyond the last matched find result\r\n // instead of doing nothing, we should refocus the last item\r\n const prevMatchRange = this._decorations.matchBeforePosition(after);\r\n if (prevMatchRange) {\r\n this._setCurrentFindMatch(prevMatchRange);\r\n }\r\n return;\r\n }\r\n if (this._decorations.getCount() < MATCHES_LIMIT) {\r\n let nextMatchRange = this._decorations.matchAfterPosition(after);\r\n if (nextMatchRange && nextMatchRange.isEmpty() && nextMatchRange.getStartPosition().equals(after)) {\r\n // Looks like we're stuck at this position, unacceptable!\r\n after = this._nextSearchPosition(after);\r\n nextMatchRange = this._decorations.matchAfterPosition(after);\r\n }\r\n if (nextMatchRange) {\r\n this._setCurrentFindMatch(nextMatchRange);\r\n }\r\n return;\r\n }\r\n let nextMatch = this._getNextMatch(after, false, true);\r\n if (nextMatch) {\r\n this._setCurrentFindMatch(nextMatch.range);\r\n }\r\n }\r\n _getNextMatch(after, captureMatches, forceMove, isRecursed = false) {\r\n if (this._cannotFind()) {\r\n return null;\r\n }\r\n let findScope = this._decorations.getFindScope();\r\n let searchRange = FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), findScope);\r\n // ...(----)...|...\r\n if (searchRange.getEndPosition().isBefore(after)) {\r\n after = searchRange.getStartPosition();\r\n }\r\n // ...|...(----)...\r\n if (after.isBefore(searchRange.getStartPosition())) {\r\n after = searchRange.getStartPosition();\r\n }\r\n let { lineNumber, column } = after;\r\n let model = this._editor.getModel();\r\n let position = new Position(lineNumber, column);\r\n let nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, captureMatches);\r\n if (forceMove && nextMatch && nextMatch.range.isEmpty() && nextMatch.range.getStartPosition().equals(position)) {\r\n // Looks like we're stuck at this position, unacceptable!\r\n position = this._nextSearchPosition(position);\r\n nextMatch = model.findNextMatch(this._state.searchString, position, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, captureMatches);\r\n }\r\n if (!nextMatch) {\r\n // there is precisely one match and selection is on top of it\r\n return null;\r\n }\r\n if (!isRecursed && !searchRange.containsRange(nextMatch.range)) {\r\n return this._getNextMatch(nextMatch.range.getEndPosition(), captureMatches, forceMove, true);\r\n }\r\n return nextMatch;\r\n }\r\n moveToNextMatch() {\r\n this._moveToNextMatch(this._editor.getSelection().getEndPosition());\r\n }\r\n _getReplacePattern() {\r\n if (this._state.isRegex) {\r\n return parseReplaceString(this._state.replaceString);\r\n }\r\n return ReplacePattern.fromStaticValue(this._state.replaceString);\r\n }\r\n replace() {\r\n if (!this._hasMatches()) {\r\n return;\r\n }\r\n let replacePattern = this._getReplacePattern();\r\n let selection = this._editor.getSelection();\r\n let nextMatch = this._getNextMatch(selection.getStartPosition(), true, false);\r\n if (nextMatch) {\r\n if (selection.equalsRange(nextMatch.range)) {\r\n // selection sits on a find match => replace it!\r\n let replaceString = replacePattern.buildReplaceString(nextMatch.matches, this._state.preserveCase);\r\n let command = new ReplaceCommand(selection, replaceString);\r\n this._executeEditorCommand('replace', command);\r\n this._decorations.setStartPosition(new Position(selection.startLineNumber, selection.startColumn + replaceString.length));\r\n this.research(true);\r\n }\r\n else {\r\n this._decorations.setStartPosition(this._editor.getPosition());\r\n this._setCurrentFindMatch(nextMatch.range);\r\n }\r\n }\r\n }\r\n _findMatches(findScopes, captureMatches, limitResultCount) {\r\n const searchRanges = (findScopes || [null]).map((scope) => FindModelBoundToEditorModel._getSearchRange(this._editor.getModel(), scope));\r\n return this._editor.getModel().findMatches(this._state.searchString, searchRanges, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, captureMatches, limitResultCount);\r\n }\r\n replaceAll() {\r\n if (!this._hasMatches()) {\r\n return;\r\n }\r\n const findScopes = this._decorations.getFindScopes();\r\n if (findScopes === null && this._state.matchesCount >= MATCHES_LIMIT) {\r\n // Doing a replace on the entire file that is over ${MATCHES_LIMIT} matches\r\n this._largeReplaceAll();\r\n }\r\n else {\r\n this._regularReplaceAll(findScopes);\r\n }\r\n this.research(false);\r\n }\r\n _largeReplaceAll() {\r\n const searchParams = new SearchParams(this._state.searchString, this._state.isRegex, this._state.matchCase, this._state.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null);\r\n const searchData = searchParams.parseSearchRequest();\r\n if (!searchData) {\r\n return;\r\n }\r\n let searchRegex = searchData.regex;\r\n if (!searchRegex.multiline) {\r\n let mod = 'mu';\r\n if (searchRegex.ignoreCase) {\r\n mod += 'i';\r\n }\r\n if (searchRegex.global) {\r\n mod += 'g';\r\n }\r\n searchRegex = new RegExp(searchRegex.source, mod);\r\n }\r\n const model = this._editor.getModel();\r\n const modelText = model.getValue(1 /* LF */);\r\n const fullModelRange = model.getFullModelRange();\r\n const replacePattern = this._getReplacePattern();\r\n let resultText;\r\n const preserveCase = this._state.preserveCase;\r\n if (replacePattern.hasReplacementPatterns || preserveCase) {\r\n resultText = modelText.replace(searchRegex, function () {\r\n return replacePattern.buildReplaceString(arguments, preserveCase);\r\n });\r\n }\r\n else {\r\n resultText = modelText.replace(searchRegex, replacePattern.buildReplaceString(null, preserveCase));\r\n }\r\n let command = new ReplaceCommandThatPreservesSelection(fullModelRange, resultText, this._editor.getSelection());\r\n this._executeEditorCommand('replaceAll', command);\r\n }\r\n _regularReplaceAll(findScopes) {\r\n const replacePattern = this._getReplacePattern();\r\n // Get all the ranges (even more than the highlighted ones)\r\n let matches = this._findMatches(findScopes, replacePattern.hasReplacementPatterns || this._state.preserveCase, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n let replaceStrings = [];\r\n for (let i = 0, len = matches.length; i < len; i++) {\r\n replaceStrings[i] = replacePattern.buildReplaceString(matches[i].matches, this._state.preserveCase);\r\n }\r\n let command = new ReplaceAllCommand(this._editor.getSelection(), matches.map(m => m.range), replaceStrings);\r\n this._executeEditorCommand('replaceAll', command);\r\n }\r\n selectAllMatches() {\r\n if (!this._hasMatches()) {\r\n return;\r\n }\r\n let findScopes = this._decorations.getFindScopes();\r\n // Get all the ranges (even more than the highlighted ones)\r\n let matches = this._findMatches(findScopes, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n let selections = matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn));\r\n // If one of the ranges is the editor selection, then maintain it as primary\r\n let editorSelection = this._editor.getSelection();\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let sel = selections[i];\r\n if (sel.equalsRange(editorSelection)) {\r\n selections = [editorSelection].concat(selections.slice(0, i)).concat(selections.slice(i + 1));\r\n break;\r\n }\r\n }\r\n this._editor.setSelections(selections);\r\n }\r\n _executeEditorCommand(source, command) {\r\n try {\r\n this._ignoreModelContentChanged = true;\r\n this._editor.pushUndoStop();\r\n this._editor.executeCommand(source, command);\r\n this._editor.pushUndoStop();\r\n }\r\n finally {\r\n this._ignoreModelContentChanged = false;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { CaseSensitiveCheckbox, RegexCheckbox, WholeWordsCheckbox } from '../../../base/browser/ui/findinput/findInputCheckboxes.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { FIND_IDS } from './findModel.js';\r\nimport { contrastBorder, editorWidgetBackground, inputActiveOptionBorder, inputActiveOptionBackground, widgetShadow, editorWidgetForeground, inputActiveOptionForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nexport class FindOptionsWidget extends Widget {\r\n constructor(editor, state, keybindingService, themeService) {\r\n super();\r\n this._hideSoon = this._register(new RunOnceScheduler(() => this._hide(), 2000));\r\n this._isVisible = false;\r\n this._editor = editor;\r\n this._state = state;\r\n this._keybindingService = keybindingService;\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'findOptionsWidget';\r\n this._domNode.style.display = 'none';\r\n this._domNode.style.top = '10px';\r\n this._domNode.setAttribute('role', 'presentation');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n const inputActiveOptionBorderColor = themeService.getColorTheme().getColor(inputActiveOptionBorder);\r\n const inputActiveOptionForegroundColor = themeService.getColorTheme().getColor(inputActiveOptionForeground);\r\n const inputActiveOptionBackgroundColor = themeService.getColorTheme().getColor(inputActiveOptionBackground);\r\n this.caseSensitive = this._register(new CaseSensitiveCheckbox({\r\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\r\n isChecked: this._state.matchCase,\r\n inputActiveOptionBorder: inputActiveOptionBorderColor,\r\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\r\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\r\n }));\r\n this._domNode.appendChild(this.caseSensitive.domNode);\r\n this._register(this.caseSensitive.onChange(() => {\r\n this._state.change({\r\n matchCase: this.caseSensitive.checked\r\n }, false);\r\n }));\r\n this.wholeWords = this._register(new WholeWordsCheckbox({\r\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\r\n isChecked: this._state.wholeWord,\r\n inputActiveOptionBorder: inputActiveOptionBorderColor,\r\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\r\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\r\n }));\r\n this._domNode.appendChild(this.wholeWords.domNode);\r\n this._register(this.wholeWords.onChange(() => {\r\n this._state.change({\r\n wholeWord: this.wholeWords.checked\r\n }, false);\r\n }));\r\n this.regex = this._register(new RegexCheckbox({\r\n appendTitle: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\r\n isChecked: this._state.isRegex,\r\n inputActiveOptionBorder: inputActiveOptionBorderColor,\r\n inputActiveOptionForeground: inputActiveOptionForegroundColor,\r\n inputActiveOptionBackground: inputActiveOptionBackgroundColor\r\n }));\r\n this._domNode.appendChild(this.regex.domNode);\r\n this._register(this.regex.onChange(() => {\r\n this._state.change({\r\n isRegex: this.regex.checked\r\n }, false);\r\n }));\r\n this._editor.addOverlayWidget(this);\r\n this._register(this._state.onFindReplaceStateChange((e) => {\r\n let somethingChanged = false;\r\n if (e.isRegex) {\r\n this.regex.checked = this._state.isRegex;\r\n somethingChanged = true;\r\n }\r\n if (e.wholeWord) {\r\n this.wholeWords.checked = this._state.wholeWord;\r\n somethingChanged = true;\r\n }\r\n if (e.matchCase) {\r\n this.caseSensitive.checked = this._state.matchCase;\r\n somethingChanged = true;\r\n }\r\n if (!this._state.isRevealed && somethingChanged) {\r\n this._revealTemporarily();\r\n }\r\n }));\r\n this._register(dom.addDisposableNonBubblingMouseOutListener(this._domNode, (e) => this._onMouseOut()));\r\n this._register(dom.addDisposableListener(this._domNode, 'mouseover', (e) => this._onMouseOver()));\r\n this._applyTheme(themeService.getColorTheme());\r\n this._register(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n }\r\n _keybindingLabelFor(actionId) {\r\n let kb = this._keybindingService.lookupKeybinding(actionId);\r\n if (!kb) {\r\n return '';\r\n }\r\n return ` (${kb.getLabel()})`;\r\n }\r\n dispose() {\r\n this._editor.removeOverlayWidget(this);\r\n super.dispose();\r\n }\r\n // ----- IOverlayWidget API\r\n getId() {\r\n return FindOptionsWidget.ID;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return {\r\n preference: 0 /* TOP_RIGHT_CORNER */\r\n };\r\n }\r\n highlightFindOptions() {\r\n this._revealTemporarily();\r\n }\r\n _revealTemporarily() {\r\n this._show();\r\n this._hideSoon.schedule();\r\n }\r\n _onMouseOut() {\r\n this._hideSoon.schedule();\r\n }\r\n _onMouseOver() {\r\n this._hideSoon.cancel();\r\n }\r\n _show() {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n this._domNode.style.display = 'block';\r\n }\r\n _hide() {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n this._domNode.style.display = 'none';\r\n }\r\n _applyTheme(theme) {\r\n let inputStyles = {\r\n inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder),\r\n inputActiveOptionForeground: theme.getColor(inputActiveOptionForeground),\r\n inputActiveOptionBackground: theme.getColor(inputActiveOptionBackground)\r\n };\r\n this.caseSensitive.style(inputStyles);\r\n this.wholeWords.style(inputStyles);\r\n this.regex.style(inputStyles);\r\n }\r\n}\r\nFindOptionsWidget.ID = 'editor.contrib.findOptionsWidget';\r\nregisterThemingParticipant((theme, collector) => {\r\n const widgetBackground = theme.getColor(editorWidgetBackground);\r\n if (widgetBackground) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { background-color: ${widgetBackground}; }`);\r\n }\r\n const widgetForeground = theme.getColor(editorWidgetForeground);\r\n if (widgetForeground) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { color: ${widgetForeground}; }`);\r\n }\r\n const widgetShadowColor = theme.getColor(widgetShadow);\r\n if (widgetShadowColor) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { box-shadow: 0 2px 8px ${widgetShadowColor}; }`);\r\n }\r\n const hcBorder = theme.getColor(contrastBorder);\r\n if (hcBorder) {\r\n collector.addRule(`.monaco-editor .findOptionsWidget { border: 2px solid ${hcBorder}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { MATCHES_LIMIT } from './findModel.js';\r\nfunction effectiveOptionValue(override, value) {\r\n if (override === 1 /* True */) {\r\n return true;\r\n }\r\n if (override === 2 /* False */) {\r\n return false;\r\n }\r\n return value;\r\n}\r\nexport class FindReplaceState extends Disposable {\r\n constructor() {\r\n super();\r\n this._onFindReplaceStateChange = this._register(new Emitter());\r\n this.onFindReplaceStateChange = this._onFindReplaceStateChange.event;\r\n this._searchString = '';\r\n this._replaceString = '';\r\n this._isRevealed = false;\r\n this._isReplaceRevealed = false;\r\n this._isRegex = false;\r\n this._isRegexOverride = 0 /* NotSet */;\r\n this._wholeWord = false;\r\n this._wholeWordOverride = 0 /* NotSet */;\r\n this._matchCase = false;\r\n this._matchCaseOverride = 0 /* NotSet */;\r\n this._preserveCase = false;\r\n this._preserveCaseOverride = 0 /* NotSet */;\r\n this._searchScope = null;\r\n this._matchesPosition = 0;\r\n this._matchesCount = 0;\r\n this._currentMatch = null;\r\n this._loop = true;\r\n }\r\n get searchString() { return this._searchString; }\r\n get replaceString() { return this._replaceString; }\r\n get isRevealed() { return this._isRevealed; }\r\n get isReplaceRevealed() { return this._isReplaceRevealed; }\r\n get isRegex() { return effectiveOptionValue(this._isRegexOverride, this._isRegex); }\r\n get wholeWord() { return effectiveOptionValue(this._wholeWordOverride, this._wholeWord); }\r\n get matchCase() { return effectiveOptionValue(this._matchCaseOverride, this._matchCase); }\r\n get preserveCase() { return effectiveOptionValue(this._preserveCaseOverride, this._preserveCase); }\r\n get actualIsRegex() { return this._isRegex; }\r\n get actualWholeWord() { return this._wholeWord; }\r\n get actualMatchCase() { return this._matchCase; }\r\n get actualPreserveCase() { return this._preserveCase; }\r\n get searchScope() { return this._searchScope; }\r\n get matchesPosition() { return this._matchesPosition; }\r\n get matchesCount() { return this._matchesCount; }\r\n get currentMatch() { return this._currentMatch; }\r\n changeMatchInfo(matchesPosition, matchesCount, currentMatch) {\r\n let changeEvent = {\r\n moveCursor: false,\r\n updateHistory: false,\r\n searchString: false,\r\n replaceString: false,\r\n isRevealed: false,\r\n isReplaceRevealed: false,\r\n isRegex: false,\r\n wholeWord: false,\r\n matchCase: false,\r\n preserveCase: false,\r\n searchScope: false,\r\n matchesPosition: false,\r\n matchesCount: false,\r\n currentMatch: false,\r\n loop: false\r\n };\r\n let somethingChanged = false;\r\n if (matchesCount === 0) {\r\n matchesPosition = 0;\r\n }\r\n if (matchesPosition > matchesCount) {\r\n matchesPosition = matchesCount;\r\n }\r\n if (this._matchesPosition !== matchesPosition) {\r\n this._matchesPosition = matchesPosition;\r\n changeEvent.matchesPosition = true;\r\n somethingChanged = true;\r\n }\r\n if (this._matchesCount !== matchesCount) {\r\n this._matchesCount = matchesCount;\r\n changeEvent.matchesCount = true;\r\n somethingChanged = true;\r\n }\r\n if (typeof currentMatch !== 'undefined') {\r\n if (!Range.equalsRange(this._currentMatch, currentMatch)) {\r\n this._currentMatch = currentMatch;\r\n changeEvent.currentMatch = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (somethingChanged) {\r\n this._onFindReplaceStateChange.fire(changeEvent);\r\n }\r\n }\r\n change(newState, moveCursor, updateHistory = true) {\r\n var _a;\r\n let changeEvent = {\r\n moveCursor: moveCursor,\r\n updateHistory: updateHistory,\r\n searchString: false,\r\n replaceString: false,\r\n isRevealed: false,\r\n isReplaceRevealed: false,\r\n isRegex: false,\r\n wholeWord: false,\r\n matchCase: false,\r\n preserveCase: false,\r\n searchScope: false,\r\n matchesPosition: false,\r\n matchesCount: false,\r\n currentMatch: false,\r\n loop: false\r\n };\r\n let somethingChanged = false;\r\n const oldEffectiveIsRegex = this.isRegex;\r\n const oldEffectiveWholeWords = this.wholeWord;\r\n const oldEffectiveMatchCase = this.matchCase;\r\n const oldEffectivePreserveCase = this.preserveCase;\r\n if (typeof newState.searchString !== 'undefined') {\r\n if (this._searchString !== newState.searchString) {\r\n this._searchString = newState.searchString;\r\n changeEvent.searchString = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.replaceString !== 'undefined') {\r\n if (this._replaceString !== newState.replaceString) {\r\n this._replaceString = newState.replaceString;\r\n changeEvent.replaceString = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.isRevealed !== 'undefined') {\r\n if (this._isRevealed !== newState.isRevealed) {\r\n this._isRevealed = newState.isRevealed;\r\n changeEvent.isRevealed = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.isReplaceRevealed !== 'undefined') {\r\n if (this._isReplaceRevealed !== newState.isReplaceRevealed) {\r\n this._isReplaceRevealed = newState.isReplaceRevealed;\r\n changeEvent.isReplaceRevealed = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.isRegex !== 'undefined') {\r\n this._isRegex = newState.isRegex;\r\n }\r\n if (typeof newState.wholeWord !== 'undefined') {\r\n this._wholeWord = newState.wholeWord;\r\n }\r\n if (typeof newState.matchCase !== 'undefined') {\r\n this._matchCase = newState.matchCase;\r\n }\r\n if (typeof newState.preserveCase !== 'undefined') {\r\n this._preserveCase = newState.preserveCase;\r\n }\r\n if (typeof newState.searchScope !== 'undefined') {\r\n if (!((_a = newState.searchScope) === null || _a === void 0 ? void 0 : _a.every((newSearchScope) => {\r\n var _a;\r\n return (_a = this._searchScope) === null || _a === void 0 ? void 0 : _a.some(existingSearchScope => {\r\n return !Range.equalsRange(existingSearchScope, newSearchScope);\r\n });\r\n }))) {\r\n this._searchScope = newState.searchScope;\r\n changeEvent.searchScope = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n if (typeof newState.loop !== 'undefined') {\r\n if (this._loop !== newState.loop) {\r\n this._loop = newState.loop;\r\n changeEvent.loop = true;\r\n somethingChanged = true;\r\n }\r\n }\r\n // Overrides get set when they explicitly come in and get reset anytime something else changes\r\n this._isRegexOverride = (typeof newState.isRegexOverride !== 'undefined' ? newState.isRegexOverride : 0 /* NotSet */);\r\n this._wholeWordOverride = (typeof newState.wholeWordOverride !== 'undefined' ? newState.wholeWordOverride : 0 /* NotSet */);\r\n this._matchCaseOverride = (typeof newState.matchCaseOverride !== 'undefined' ? newState.matchCaseOverride : 0 /* NotSet */);\r\n this._preserveCaseOverride = (typeof newState.preserveCaseOverride !== 'undefined' ? newState.preserveCaseOverride : 0 /* NotSet */);\r\n if (oldEffectiveIsRegex !== this.isRegex) {\r\n somethingChanged = true;\r\n changeEvent.isRegex = true;\r\n }\r\n if (oldEffectiveWholeWords !== this.wholeWord) {\r\n somethingChanged = true;\r\n changeEvent.wholeWord = true;\r\n }\r\n if (oldEffectiveMatchCase !== this.matchCase) {\r\n somethingChanged = true;\r\n changeEvent.matchCase = true;\r\n }\r\n if (oldEffectivePreserveCase !== this.preserveCase) {\r\n somethingChanged = true;\r\n changeEvent.preserveCase = true;\r\n }\r\n if (somethingChanged) {\r\n this._onFindReplaceStateChange.fire(changeEvent);\r\n }\r\n }\r\n canNavigateBack() {\r\n return this.canNavigateInLoop() || (this.matchesPosition !== 1);\r\n }\r\n canNavigateForward() {\r\n return this.canNavigateInLoop() || (this.matchesPosition < this.matchesCount);\r\n }\r\n canNavigateInLoop() {\r\n return this._loop || (this.matchesCount >= MATCHES_LIMIT);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './findWidget.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { alert as alertFn } from '../../../base/browser/ui/aria/aria.js';\r\nimport { Checkbox } from '../../../base/browser/ui/checkbox/checkbox.js';\r\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { Delayer } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { CONTEXT_FIND_INPUT_FOCUSED, CONTEXT_REPLACE_INPUT_FOCUSED, FIND_IDS, MATCHES_LIMIT } from './findModel.js';\r\nimport { contrastBorder, editorFindMatch, editorFindMatchBorder, editorFindMatchHighlight, editorFindMatchHighlightBorder, editorFindRangeHighlight, editorFindRangeHighlightBorder, editorWidgetBackground, editorWidgetBorder, editorWidgetResizeBorder, errorForeground, inputActiveOptionBorder, inputActiveOptionBackground, inputActiveOptionForeground, inputBackground, inputBorder, inputForeground, inputValidationErrorBackground, inputValidationErrorBorder, inputValidationErrorForeground, inputValidationInfoBackground, inputValidationInfoBorder, inputValidationInfoForeground, inputValidationWarningBackground, inputValidationWarningBorder, inputValidationWarningForeground, widgetShadow, editorWidgetForeground, focusBorder } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { ContextScopedFindInput, ContextScopedReplaceInput } from '../../../platform/browser/contextScopedHistoryWidget.js';\r\nimport { Codicon, registerIcon } from '../../../base/common/codicons.js';\r\nconst findSelectionIcon = registerIcon('find-selection', Codicon.selection);\r\nconst findCollapsedIcon = registerIcon('find-collapsed', Codicon.chevronRight);\r\nconst findExpandedIcon = registerIcon('find-expanded', Codicon.chevronDown);\r\nexport const findCloseIcon = registerIcon('find-close', Codicon.close);\r\nexport const findReplaceIcon = registerIcon('find-replace', Codicon.replace);\r\nexport const findReplaceAllIcon = registerIcon('find-replace-all', Codicon.replaceAll);\r\nexport const findPreviousMatchIcon = registerIcon('find-previous-match', Codicon.arrowUp);\r\nexport const findNextMatchIcon = registerIcon('find-next-match', Codicon.arrowDown);\r\nconst NLS_FIND_INPUT_LABEL = nls.localize('label.find', \"Find\");\r\nconst NLS_FIND_INPUT_PLACEHOLDER = nls.localize('placeholder.find', \"Find\");\r\nconst NLS_PREVIOUS_MATCH_BTN_LABEL = nls.localize('label.previousMatchButton', \"Previous match\");\r\nconst NLS_NEXT_MATCH_BTN_LABEL = nls.localize('label.nextMatchButton', \"Next match\");\r\nconst NLS_TOGGLE_SELECTION_FIND_TITLE = nls.localize('label.toggleSelectionFind', \"Find in selection\");\r\nconst NLS_CLOSE_BTN_LABEL = nls.localize('label.closeButton', \"Close\");\r\nconst NLS_REPLACE_INPUT_LABEL = nls.localize('label.replace', \"Replace\");\r\nconst NLS_REPLACE_INPUT_PLACEHOLDER = nls.localize('placeholder.replace', \"Replace\");\r\nconst NLS_REPLACE_BTN_LABEL = nls.localize('label.replaceButton', \"Replace\");\r\nconst NLS_REPLACE_ALL_BTN_LABEL = nls.localize('label.replaceAllButton', \"Replace All\");\r\nconst NLS_TOGGLE_REPLACE_MODE_BTN_LABEL = nls.localize('label.toggleReplaceButton', \"Toggle Replace mode\");\r\nconst NLS_MATCHES_COUNT_LIMIT_TITLE = nls.localize('title.matchesCountLimit', \"Only the first {0} results are highlighted, but all find operations work on the entire text.\", MATCHES_LIMIT);\r\nconst NLS_MATCHES_LOCATION = nls.localize('label.matchesLocation', \"{0} of {1}\");\r\nconst NLS_NO_RESULTS = nls.localize('label.noResults', \"No results\");\r\nconst FIND_WIDGET_INITIAL_WIDTH = 419;\r\nconst PART_WIDTH = 275;\r\nconst FIND_INPUT_AREA_WIDTH = PART_WIDTH - 54;\r\nlet MAX_MATCHES_COUNT_WIDTH = 69;\r\n// let FIND_ALL_CONTROLS_WIDTH = 17/** Find Input margin-left */ + (MAX_MATCHES_COUNT_WIDTH + 3 + 1) /** Match Results */ + 23 /** Button */ * 4 + 2/** sash */;\r\nconst FIND_INPUT_AREA_HEIGHT = 33; // The height of Find Widget when Replace Input is not visible.\r\nconst ctrlEnterReplaceAllWarningPromptedKey = 'ctrlEnterReplaceAll.windows.donotask';\r\nconst ctrlKeyMod = (platform.isMacintosh ? 256 /* WinCtrl */ : 2048 /* CtrlCmd */);\r\nexport class FindWidgetViewZone {\r\n constructor(afterLineNumber) {\r\n this.afterLineNumber = afterLineNumber;\r\n this.heightInPx = FIND_INPUT_AREA_HEIGHT;\r\n this.suppressMouseDown = false;\r\n this.domNode = document.createElement('div');\r\n this.domNode.className = 'dock-find-viewzone';\r\n }\r\n}\r\nfunction stopPropagationForMultiLineUpwards(event, value, textarea) {\r\n const isMultiline = !!value.match(/\\n/);\r\n if (textarea && isMultiline && textarea.selectionStart > 0) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n}\r\nfunction stopPropagationForMultiLineDownwards(event, value, textarea) {\r\n const isMultiline = !!value.match(/\\n/);\r\n if (textarea && isMultiline && textarea.selectionEnd < textarea.value.length) {\r\n event.stopPropagation();\r\n return;\r\n }\r\n}\r\nexport class FindWidget extends Widget {\r\n constructor(codeEditor, controller, state, contextViewProvider, keybindingService, contextKeyService, themeService, storageService, notificationService, storageKeysSyncRegistryService) {\r\n super();\r\n this._cachedHeight = null;\r\n this._codeEditor = codeEditor;\r\n this._controller = controller;\r\n this._state = state;\r\n this._contextViewProvider = contextViewProvider;\r\n this._keybindingService = keybindingService;\r\n this._contextKeyService = contextKeyService;\r\n this._storageService = storageService;\r\n this._notificationService = notificationService;\r\n storageKeysSyncRegistryService.registerStorageKey({ key: ctrlEnterReplaceAllWarningPromptedKey, version: 1 });\r\n this._ctrlEnterReplaceAllWarningPrompted = !!storageService.getBoolean(ctrlEnterReplaceAllWarningPromptedKey, 0 /* GLOBAL */);\r\n this._isVisible = false;\r\n this._isReplaceVisible = false;\r\n this._ignoreChangeEvent = false;\r\n this._updateHistoryDelayer = new Delayer(500);\r\n this._register(toDisposable(() => this._updateHistoryDelayer.cancel()));\r\n this._register(this._state.onFindReplaceStateChange((e) => this._onStateChanged(e)));\r\n this._buildDomNode();\r\n this._updateButtons();\r\n this._tryUpdateWidgetWidth();\r\n this._findInput.inputBox.layout();\r\n this._register(this._codeEditor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(72 /* readOnly */)) {\r\n if (this._codeEditor.getOption(72 /* readOnly */)) {\r\n // Hide replace part if editor becomes read only\r\n this._state.change({ isReplaceRevealed: false }, false);\r\n }\r\n this._updateButtons();\r\n }\r\n if (e.hasChanged(117 /* layoutInfo */)) {\r\n this._tryUpdateWidgetWidth();\r\n }\r\n if (e.hasChanged(2 /* accessibilitySupport */)) {\r\n this.updateAccessibilitySupport();\r\n }\r\n if (e.hasChanged(29 /* find */)) {\r\n const addExtraSpaceOnTop = this._codeEditor.getOption(29 /* find */).addExtraSpaceOnTop;\r\n if (addExtraSpaceOnTop && !this._viewZone) {\r\n this._viewZone = new FindWidgetViewZone(0);\r\n this._showViewZone();\r\n }\r\n if (!addExtraSpaceOnTop && this._viewZone) {\r\n this._removeViewZone();\r\n }\r\n }\r\n }));\r\n this.updateAccessibilitySupport();\r\n this._register(this._codeEditor.onDidChangeCursorSelection(() => {\r\n if (this._isVisible) {\r\n this._updateToggleSelectionFindButton();\r\n }\r\n }));\r\n this._register(this._codeEditor.onDidFocusEditorWidget(() => __awaiter(this, void 0, void 0, function* () {\r\n if (this._isVisible) {\r\n let globalBufferTerm = yield this._controller.getGlobalBufferTerm();\r\n if (globalBufferTerm && globalBufferTerm !== this._state.searchString) {\r\n this._state.change({ searchString: globalBufferTerm }, true);\r\n this._findInput.select();\r\n }\r\n }\r\n })));\r\n this._findInputFocused = CONTEXT_FIND_INPUT_FOCUSED.bindTo(contextKeyService);\r\n this._findFocusTracker = this._register(dom.trackFocus(this._findInput.inputBox.inputElement));\r\n this._register(this._findFocusTracker.onDidFocus(() => {\r\n this._findInputFocused.set(true);\r\n this._updateSearchScope();\r\n }));\r\n this._register(this._findFocusTracker.onDidBlur(() => {\r\n this._findInputFocused.set(false);\r\n }));\r\n this._replaceInputFocused = CONTEXT_REPLACE_INPUT_FOCUSED.bindTo(contextKeyService);\r\n this._replaceFocusTracker = this._register(dom.trackFocus(this._replaceInput.inputBox.inputElement));\r\n this._register(this._replaceFocusTracker.onDidFocus(() => {\r\n this._replaceInputFocused.set(true);\r\n this._updateSearchScope();\r\n }));\r\n this._register(this._replaceFocusTracker.onDidBlur(() => {\r\n this._replaceInputFocused.set(false);\r\n }));\r\n this._codeEditor.addOverlayWidget(this);\r\n if (this._codeEditor.getOption(29 /* find */).addExtraSpaceOnTop) {\r\n this._viewZone = new FindWidgetViewZone(0); // Put it before the first line then users can scroll beyond the first line.\r\n }\r\n this._applyTheme(themeService.getColorTheme());\r\n this._register(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n this._register(this._codeEditor.onDidChangeModel(() => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._viewZoneId = undefined;\r\n }));\r\n this._register(this._codeEditor.onDidScrollChange((e) => {\r\n if (e.scrollTopChanged) {\r\n this._layoutViewZone();\r\n return;\r\n }\r\n // for other scroll changes, layout the viewzone in next tick to avoid ruining current rendering.\r\n setTimeout(() => {\r\n this._layoutViewZone();\r\n }, 0);\r\n }));\r\n }\r\n // ----- IOverlayWidget API\r\n getId() {\r\n return FindWidget.ID;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n if (this._isVisible) {\r\n return {\r\n preference: 0 /* TOP_RIGHT_CORNER */\r\n };\r\n }\r\n return null;\r\n }\r\n // ----- React to state changes\r\n _onStateChanged(e) {\r\n if (e.searchString) {\r\n try {\r\n this._ignoreChangeEvent = true;\r\n this._findInput.setValue(this._state.searchString);\r\n }\r\n finally {\r\n this._ignoreChangeEvent = false;\r\n }\r\n this._updateButtons();\r\n }\r\n if (e.replaceString) {\r\n this._replaceInput.inputBox.value = this._state.replaceString;\r\n }\r\n if (e.isRevealed) {\r\n if (this._state.isRevealed) {\r\n this._reveal();\r\n }\r\n else {\r\n this._hide(true);\r\n }\r\n }\r\n if (e.isReplaceRevealed) {\r\n if (this._state.isReplaceRevealed) {\r\n if (!this._codeEditor.getOption(72 /* readOnly */) && !this._isReplaceVisible) {\r\n this._isReplaceVisible = true;\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n this._updateButtons();\r\n this._replaceInput.inputBox.layout();\r\n }\r\n }\r\n else {\r\n if (this._isReplaceVisible) {\r\n this._isReplaceVisible = false;\r\n this._updateButtons();\r\n }\r\n }\r\n }\r\n if ((e.isRevealed || e.isReplaceRevealed) && (this._state.isRevealed || this._state.isReplaceRevealed)) {\r\n if (this._tryUpdateHeight()) {\r\n this._showViewZone();\r\n }\r\n }\r\n if (e.isRegex) {\r\n this._findInput.setRegex(this._state.isRegex);\r\n }\r\n if (e.wholeWord) {\r\n this._findInput.setWholeWords(this._state.wholeWord);\r\n }\r\n if (e.matchCase) {\r\n this._findInput.setCaseSensitive(this._state.matchCase);\r\n }\r\n if (e.searchScope) {\r\n if (this._state.searchScope) {\r\n this._toggleSelectionFind.checked = true;\r\n }\r\n else {\r\n this._toggleSelectionFind.checked = false;\r\n }\r\n this._updateToggleSelectionFindButton();\r\n }\r\n if (e.searchString || e.matchesCount || e.matchesPosition) {\r\n let showRedOutline = (this._state.searchString.length > 0 && this._state.matchesCount === 0);\r\n dom.toggleClass(this._domNode, 'no-results', showRedOutline);\r\n this._updateMatchesCount();\r\n this._updateButtons();\r\n }\r\n if (e.searchString || e.currentMatch) {\r\n this._layoutViewZone();\r\n }\r\n if (e.updateHistory) {\r\n this._delayedUpdateHistory();\r\n }\r\n if (e.loop) {\r\n this._updateButtons();\r\n }\r\n }\r\n _delayedUpdateHistory() {\r\n this._updateHistoryDelayer.trigger(this._updateHistory.bind(this));\r\n }\r\n _updateHistory() {\r\n if (this._state.searchString) {\r\n this._findInput.inputBox.addToHistory();\r\n }\r\n if (this._state.replaceString) {\r\n this._replaceInput.inputBox.addToHistory();\r\n }\r\n }\r\n _updateMatchesCount() {\r\n this._matchesCount.style.minWidth = MAX_MATCHES_COUNT_WIDTH + 'px';\r\n if (this._state.matchesCount >= MATCHES_LIMIT) {\r\n this._matchesCount.title = NLS_MATCHES_COUNT_LIMIT_TITLE;\r\n }\r\n else {\r\n this._matchesCount.title = '';\r\n }\r\n // remove previous content\r\n if (this._matchesCount.firstChild) {\r\n this._matchesCount.removeChild(this._matchesCount.firstChild);\r\n }\r\n let label;\r\n if (this._state.matchesCount > 0) {\r\n let matchesCount = String(this._state.matchesCount);\r\n if (this._state.matchesCount >= MATCHES_LIMIT) {\r\n matchesCount += '+';\r\n }\r\n let matchesPosition = String(this._state.matchesPosition);\r\n if (matchesPosition === '0') {\r\n matchesPosition = '?';\r\n }\r\n label = strings.format(NLS_MATCHES_LOCATION, matchesPosition, matchesCount);\r\n }\r\n else {\r\n label = NLS_NO_RESULTS;\r\n }\r\n this._matchesCount.appendChild(document.createTextNode(label));\r\n alertFn(this._getAriaLabel(label, this._state.currentMatch, this._state.searchString));\r\n MAX_MATCHES_COUNT_WIDTH = Math.max(MAX_MATCHES_COUNT_WIDTH, this._matchesCount.clientWidth);\r\n }\r\n // ----- actions\r\n _getAriaLabel(label, currentMatch, searchString) {\r\n if (label === NLS_NO_RESULTS) {\r\n return searchString === ''\r\n ? nls.localize('ariaSearchNoResultEmpty', \"{0} found\", label)\r\n : nls.localize('ariaSearchNoResult', \"{0} found for '{1}'\", label, searchString);\r\n }\r\n if (currentMatch) {\r\n const ariaLabel = nls.localize('ariaSearchNoResultWithLineNum', \"{0} found for '{1}', at {2}\", label, searchString, currentMatch.startLineNumber + ':' + currentMatch.startColumn);\r\n const model = this._codeEditor.getModel();\r\n if (model && (currentMatch.startLineNumber <= model.getLineCount()) && (currentMatch.startLineNumber >= 1)) {\r\n const lineContent = model.getLineContent(currentMatch.startLineNumber);\r\n return `${lineContent}, ${ariaLabel}`;\r\n }\r\n return ariaLabel;\r\n }\r\n return nls.localize('ariaSearchNoResultWithLineNumNoCurrentMatch', \"{0} found for '{1}'\", label, searchString);\r\n }\r\n /**\r\n * If 'selection find' is ON we should not disable the button (its function is to cancel 'selection find').\r\n * If 'selection find' is OFF we enable the button only if there is a selection.\r\n */\r\n _updateToggleSelectionFindButton() {\r\n let selection = this._codeEditor.getSelection();\r\n let isSelection = selection ? (selection.startLineNumber !== selection.endLineNumber || selection.startColumn !== selection.endColumn) : false;\r\n let isChecked = this._toggleSelectionFind.checked;\r\n if (this._isVisible && (isChecked || isSelection)) {\r\n this._toggleSelectionFind.enable();\r\n }\r\n else {\r\n this._toggleSelectionFind.disable();\r\n }\r\n }\r\n _updateButtons() {\r\n this._findInput.setEnabled(this._isVisible);\r\n this._replaceInput.setEnabled(this._isVisible && this._isReplaceVisible);\r\n this._updateToggleSelectionFindButton();\r\n this._closeBtn.setEnabled(this._isVisible);\r\n let findInputIsNonEmpty = (this._state.searchString.length > 0);\r\n let matchesCount = this._state.matchesCount ? true : false;\r\n this._prevBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateBack());\r\n this._nextBtn.setEnabled(this._isVisible && findInputIsNonEmpty && matchesCount && this._state.canNavigateForward());\r\n this._replaceBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\r\n this._replaceAllBtn.setEnabled(this._isVisible && this._isReplaceVisible && findInputIsNonEmpty);\r\n dom.toggleClass(this._domNode, 'replaceToggled', this._isReplaceVisible);\r\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\r\n let canReplace = !this._codeEditor.getOption(72 /* readOnly */);\r\n this._toggleReplaceBtn.setEnabled(this._isVisible && canReplace);\r\n }\r\n _reveal() {\r\n if (!this._isVisible) {\r\n this._isVisible = true;\r\n const selection = this._codeEditor.getSelection();\r\n switch (this._codeEditor.getOption(29 /* find */).autoFindInSelection) {\r\n case 'always':\r\n this._toggleSelectionFind.checked = true;\r\n break;\r\n case 'never':\r\n this._toggleSelectionFind.checked = false;\r\n break;\r\n case 'multiline':\r\n const isSelectionMultipleLine = !!selection && selection.startLineNumber !== selection.endLineNumber;\r\n this._toggleSelectionFind.checked = isSelectionMultipleLine;\r\n break;\r\n default:\r\n break;\r\n }\r\n this._tryUpdateWidgetWidth();\r\n this._updateButtons();\r\n setTimeout(() => {\r\n dom.addClass(this._domNode, 'visible');\r\n this._domNode.setAttribute('aria-hidden', 'false');\r\n }, 0);\r\n // validate query again as it's being dismissed when we hide the find widget.\r\n setTimeout(() => {\r\n this._findInput.validate();\r\n }, 200);\r\n this._codeEditor.layoutOverlayWidget(this);\r\n let adjustEditorScrollTop = true;\r\n if (this._codeEditor.getOption(29 /* find */).seedSearchStringFromSelection && selection) {\r\n const domNode = this._codeEditor.getDomNode();\r\n if (domNode) {\r\n const editorCoords = dom.getDomNodePagePosition(domNode);\r\n const startCoords = this._codeEditor.getScrolledVisiblePosition(selection.getStartPosition());\r\n const startLeft = editorCoords.left + (startCoords ? startCoords.left : 0);\r\n const startTop = startCoords ? startCoords.top : 0;\r\n if (this._viewZone && startTop < this._viewZone.heightInPx) {\r\n if (selection.endLineNumber > selection.startLineNumber) {\r\n adjustEditorScrollTop = false;\r\n }\r\n const leftOfFindWidget = dom.getTopLeftOffset(this._domNode).left;\r\n if (startLeft > leftOfFindWidget) {\r\n adjustEditorScrollTop = false;\r\n }\r\n const endCoords = this._codeEditor.getScrolledVisiblePosition(selection.getEndPosition());\r\n const endLeft = editorCoords.left + (endCoords ? endCoords.left : 0);\r\n if (endLeft > leftOfFindWidget) {\r\n adjustEditorScrollTop = false;\r\n }\r\n }\r\n }\r\n }\r\n this._showViewZone(adjustEditorScrollTop);\r\n }\r\n }\r\n _hide(focusTheEditor) {\r\n if (this._isVisible) {\r\n this._isVisible = false;\r\n this._updateButtons();\r\n dom.removeClass(this._domNode, 'visible');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._findInput.clearMessage();\r\n if (focusTheEditor) {\r\n this._codeEditor.focus();\r\n }\r\n this._codeEditor.layoutOverlayWidget(this);\r\n this._removeViewZone();\r\n }\r\n }\r\n _layoutViewZone() {\r\n const addExtraSpaceOnTop = this._codeEditor.getOption(29 /* find */).addExtraSpaceOnTop;\r\n if (!addExtraSpaceOnTop) {\r\n this._removeViewZone();\r\n return;\r\n }\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n const viewZone = this._viewZone;\r\n if (this._viewZoneId !== undefined || !viewZone) {\r\n return;\r\n }\r\n this._codeEditor.changeViewZones((accessor) => {\r\n viewZone.heightInPx = this._getHeight();\r\n this._viewZoneId = accessor.addZone(viewZone);\r\n // scroll top adjust to make sure the editor doesn't scroll when adding viewzone at the beginning.\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + viewZone.heightInPx);\r\n });\r\n }\r\n _showViewZone(adjustScroll = true) {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n const addExtraSpaceOnTop = this._codeEditor.getOption(29 /* find */).addExtraSpaceOnTop;\r\n if (!addExtraSpaceOnTop) {\r\n return;\r\n }\r\n if (this._viewZone === undefined) {\r\n this._viewZone = new FindWidgetViewZone(0);\r\n }\r\n const viewZone = this._viewZone;\r\n this._codeEditor.changeViewZones((accessor) => {\r\n if (this._viewZoneId !== undefined) {\r\n // the view zone already exists, we need to update the height\r\n const newHeight = this._getHeight();\r\n if (newHeight === viewZone.heightInPx) {\r\n return;\r\n }\r\n let scrollAdjustment = newHeight - viewZone.heightInPx;\r\n viewZone.heightInPx = newHeight;\r\n accessor.layoutZone(this._viewZoneId);\r\n if (adjustScroll) {\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\r\n }\r\n return;\r\n }\r\n else {\r\n let scrollAdjustment = this._getHeight();\r\n // if the editor has top padding, factor that into the zone height\r\n scrollAdjustment -= this._codeEditor.getOption(66 /* padding */).top;\r\n if (scrollAdjustment <= 0) {\r\n return;\r\n }\r\n viewZone.heightInPx = scrollAdjustment;\r\n this._viewZoneId = accessor.addZone(viewZone);\r\n if (adjustScroll) {\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() + scrollAdjustment);\r\n }\r\n }\r\n });\r\n }\r\n _removeViewZone() {\r\n this._codeEditor.changeViewZones((accessor) => {\r\n if (this._viewZoneId !== undefined) {\r\n accessor.removeZone(this._viewZoneId);\r\n this._viewZoneId = undefined;\r\n if (this._viewZone) {\r\n this._codeEditor.setScrollTop(this._codeEditor.getScrollTop() - this._viewZone.heightInPx);\r\n this._viewZone = undefined;\r\n }\r\n }\r\n });\r\n }\r\n _applyTheme(theme) {\r\n let inputStyles = {\r\n inputActiveOptionBorder: theme.getColor(inputActiveOptionBorder),\r\n inputActiveOptionBackground: theme.getColor(inputActiveOptionBackground),\r\n inputActiveOptionForeground: theme.getColor(inputActiveOptionForeground),\r\n inputBackground: theme.getColor(inputBackground),\r\n inputForeground: theme.getColor(inputForeground),\r\n inputBorder: theme.getColor(inputBorder),\r\n inputValidationInfoBackground: theme.getColor(inputValidationInfoBackground),\r\n inputValidationInfoForeground: theme.getColor(inputValidationInfoForeground),\r\n inputValidationInfoBorder: theme.getColor(inputValidationInfoBorder),\r\n inputValidationWarningBackground: theme.getColor(inputValidationWarningBackground),\r\n inputValidationWarningForeground: theme.getColor(inputValidationWarningForeground),\r\n inputValidationWarningBorder: theme.getColor(inputValidationWarningBorder),\r\n inputValidationErrorBackground: theme.getColor(inputValidationErrorBackground),\r\n inputValidationErrorForeground: theme.getColor(inputValidationErrorForeground),\r\n inputValidationErrorBorder: theme.getColor(inputValidationErrorBorder),\r\n };\r\n this._findInput.style(inputStyles);\r\n this._replaceInput.style(inputStyles);\r\n this._toggleSelectionFind.style(inputStyles);\r\n }\r\n _tryUpdateWidgetWidth() {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n if (!dom.isInDOM(this._domNode)) {\r\n // the widget is not in the DOM\r\n return;\r\n }\r\n const layoutInfo = this._codeEditor.getLayoutInfo();\r\n const editorContentWidth = layoutInfo.contentWidth;\r\n if (editorContentWidth <= 0) {\r\n // for example, diff view original editor\r\n dom.addClass(this._domNode, 'hiddenEditor');\r\n return;\r\n }\r\n else if (dom.hasClass(this._domNode, 'hiddenEditor')) {\r\n dom.removeClass(this._domNode, 'hiddenEditor');\r\n }\r\n const editorWidth = layoutInfo.width;\r\n const minimapWidth = layoutInfo.minimap.minimapWidth;\r\n let collapsedFindWidget = false;\r\n let reducedFindWidget = false;\r\n let narrowFindWidget = false;\r\n if (this._resized) {\r\n let widgetWidth = dom.getTotalWidth(this._domNode);\r\n if (widgetWidth > FIND_WIDGET_INITIAL_WIDTH) {\r\n // as the widget is resized by users, we may need to change the max width of the widget as the editor width changes.\r\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n return;\r\n }\r\n }\r\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth >= editorWidth) {\r\n reducedFindWidget = true;\r\n }\r\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth) {\r\n narrowFindWidget = true;\r\n }\r\n if (FIND_WIDGET_INITIAL_WIDTH + 28 + minimapWidth - MAX_MATCHES_COUNT_WIDTH >= editorWidth + 50) {\r\n collapsedFindWidget = true;\r\n }\r\n dom.toggleClass(this._domNode, 'collapsed-find-widget', collapsedFindWidget);\r\n dom.toggleClass(this._domNode, 'narrow-find-widget', narrowFindWidget);\r\n dom.toggleClass(this._domNode, 'reduced-find-widget', reducedFindWidget);\r\n if (!narrowFindWidget && !collapsedFindWidget) {\r\n // the minimal left offset of findwidget is 15px.\r\n this._domNode.style.maxWidth = `${editorWidth - 28 - minimapWidth - 15}px`;\r\n }\r\n if (this._resized) {\r\n this._findInput.inputBox.layout();\r\n let findInputWidth = this._findInput.inputBox.element.clientWidth;\r\n if (findInputWidth > 0) {\r\n this._replaceInput.width = findInputWidth;\r\n }\r\n }\r\n else if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n }\r\n }\r\n _getHeight() {\r\n let totalheight = 0;\r\n // find input margin top\r\n totalheight += 4;\r\n // find input height\r\n totalheight += this._findInput.inputBox.height + 2 /** input box border */;\r\n if (this._isReplaceVisible) {\r\n // replace input margin\r\n totalheight += 4;\r\n totalheight += this._replaceInput.inputBox.height + 2 /** input box border */;\r\n }\r\n // margin bottom\r\n totalheight += 4;\r\n return totalheight;\r\n }\r\n _tryUpdateHeight() {\r\n const totalHeight = this._getHeight();\r\n if (this._cachedHeight !== null && this._cachedHeight === totalHeight) {\r\n return false;\r\n }\r\n this._cachedHeight = totalHeight;\r\n this._domNode.style.height = `${totalHeight}px`;\r\n return true;\r\n }\r\n // ----- Public\r\n focusFindInput() {\r\n this._findInput.select();\r\n // Edge browser requires focus() in addition to select()\r\n this._findInput.focus();\r\n }\r\n focusReplaceInput() {\r\n this._replaceInput.select();\r\n // Edge browser requires focus() in addition to select()\r\n this._replaceInput.focus();\r\n }\r\n highlightFindOptions() {\r\n this._findInput.highlightFindOptions();\r\n }\r\n _updateSearchScope() {\r\n if (!this._codeEditor.hasModel()) {\r\n return;\r\n }\r\n if (this._toggleSelectionFind.checked) {\r\n let selections = this._codeEditor.getSelections();\r\n selections.map(selection => {\r\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\r\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\r\n }\r\n const currentMatch = this._state.currentMatch;\r\n if (selection.startLineNumber !== selection.endLineNumber) {\r\n if (!Range.equalsRange(selection, currentMatch)) {\r\n return selection;\r\n }\r\n }\r\n return null;\r\n }).filter(element => !!element);\r\n if (selections.length) {\r\n this._state.change({ searchScope: selections }, true);\r\n }\r\n }\r\n }\r\n _onFindInputMouseDown(e) {\r\n // on linux, middle key does pasting.\r\n if (e.middleButton) {\r\n e.stopPropagation();\r\n }\r\n }\r\n _onFindInputKeyDown(e) {\r\n if (e.equals(ctrlKeyMod | 3 /* Enter */)) {\r\n this._findInput.inputBox.insertAtCursor('\\n');\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.focus();\r\n }\r\n else {\r\n this._findInput.focusOnCaseSensitive();\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2048 /* CtrlCmd */ | 18 /* DownArrow */)) {\r\n this._codeEditor.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(16 /* UpArrow */)) {\r\n return stopPropagationForMultiLineUpwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\r\n }\r\n if (e.equals(18 /* DownArrow */)) {\r\n return stopPropagationForMultiLineDownwards(e, this._findInput.getValue(), this._findInput.domNode.querySelector('textarea'));\r\n }\r\n }\r\n _onReplaceInputKeyDown(e) {\r\n if (e.equals(ctrlKeyMod | 3 /* Enter */)) {\r\n if (platform.isWindows && platform.isNative && !this._ctrlEnterReplaceAllWarningPrompted) {\r\n // this is the first time when users press Ctrl + Enter to replace all\r\n this._notificationService.info(nls.localize('ctrlEnter.keybindingChanged', 'Ctrl+Enter now inserts line break instead of replacing all. You can modify the keybinding for editor.action.replaceAll to override this behavior.'));\r\n this._ctrlEnterReplaceAllWarningPrompted = true;\r\n this._storageService.store(ctrlEnterReplaceAllWarningPromptedKey, true, 0 /* GLOBAL */);\r\n }\r\n this._replaceInput.inputBox.insertAtCursor('\\n');\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2 /* Tab */)) {\r\n this._findInput.focusOnCaseSensitive();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n this._findInput.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(2048 /* CtrlCmd */ | 18 /* DownArrow */)) {\r\n this._codeEditor.focus();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (e.equals(16 /* UpArrow */)) {\r\n return stopPropagationForMultiLineUpwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\r\n }\r\n if (e.equals(18 /* DownArrow */)) {\r\n return stopPropagationForMultiLineDownwards(e, this._replaceInput.inputBox.value, this._replaceInput.inputBox.element.querySelector('textarea'));\r\n }\r\n }\r\n // ----- sash\r\n getVerticalSashLeft(_sash) {\r\n return 0;\r\n }\r\n // ----- initialization\r\n _keybindingLabelFor(actionId) {\r\n let kb = this._keybindingService.lookupKeybinding(actionId);\r\n if (!kb) {\r\n return '';\r\n }\r\n return ` (${kb.getLabel()})`;\r\n }\r\n _buildDomNode() {\r\n const flexibleHeight = true;\r\n const flexibleWidth = true;\r\n // Find input\r\n this._findInput = this._register(new ContextScopedFindInput(null, this._contextViewProvider, {\r\n width: FIND_INPUT_AREA_WIDTH,\r\n label: NLS_FIND_INPUT_LABEL,\r\n placeholder: NLS_FIND_INPUT_PLACEHOLDER,\r\n appendCaseSensitiveLabel: this._keybindingLabelFor(FIND_IDS.ToggleCaseSensitiveCommand),\r\n appendWholeWordsLabel: this._keybindingLabelFor(FIND_IDS.ToggleWholeWordCommand),\r\n appendRegexLabel: this._keybindingLabelFor(FIND_IDS.ToggleRegexCommand),\r\n validation: (value) => {\r\n if (value.length === 0 || !this._findInput.getRegex()) {\r\n return null;\r\n }\r\n try {\r\n // use `g` and `u` which are also used by the TextModel search\r\n new RegExp(value, 'gu');\r\n return null;\r\n }\r\n catch (e) {\r\n return { content: e.message };\r\n }\r\n },\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight: 118\r\n }, this._contextKeyService, true));\r\n this._findInput.setRegex(!!this._state.isRegex);\r\n this._findInput.setCaseSensitive(!!this._state.matchCase);\r\n this._findInput.setWholeWords(!!this._state.wholeWord);\r\n this._register(this._findInput.onKeyDown((e) => this._onFindInputKeyDown(e)));\r\n this._register(this._findInput.inputBox.onDidChange(() => {\r\n if (this._ignoreChangeEvent) {\r\n return;\r\n }\r\n this._state.change({ searchString: this._findInput.getValue() }, true);\r\n }));\r\n this._register(this._findInput.onDidOptionChange(() => {\r\n this._state.change({\r\n isRegex: this._findInput.getRegex(),\r\n wholeWord: this._findInput.getWholeWords(),\r\n matchCase: this._findInput.getCaseSensitive()\r\n }, true);\r\n }));\r\n this._register(this._findInput.onCaseSensitiveKeyDown((e) => {\r\n if (e.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n }));\r\n this._register(this._findInput.onRegexKeyDown((e) => {\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.focusOnPreserve();\r\n e.preventDefault();\r\n }\r\n }\r\n }));\r\n this._register(this._findInput.inputBox.onDidHeightChange((e) => {\r\n if (this._tryUpdateHeight()) {\r\n this._showViewZone();\r\n }\r\n }));\r\n if (platform.isLinux) {\r\n this._register(this._findInput.onMouseDown((e) => this._onFindInputMouseDown(e)));\r\n }\r\n this._matchesCount = document.createElement('div');\r\n this._matchesCount.className = 'matchesCount';\r\n this._updateMatchesCount();\r\n // Previous button\r\n this._prevBtn = this._register(new SimpleButton({\r\n label: NLS_PREVIOUS_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.PreviousMatchFindAction),\r\n className: findPreviousMatchIcon.classNames,\r\n onTrigger: () => {\r\n this._codeEditor.getAction(FIND_IDS.PreviousMatchFindAction).run().then(undefined, onUnexpectedError);\r\n }\r\n }));\r\n // Next button\r\n this._nextBtn = this._register(new SimpleButton({\r\n label: NLS_NEXT_MATCH_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.NextMatchFindAction),\r\n className: findNextMatchIcon.classNames,\r\n onTrigger: () => {\r\n this._codeEditor.getAction(FIND_IDS.NextMatchFindAction).run().then(undefined, onUnexpectedError);\r\n }\r\n }));\r\n let findPart = document.createElement('div');\r\n findPart.className = 'find-part';\r\n findPart.appendChild(this._findInput.domNode);\r\n const actionsContainer = document.createElement('div');\r\n actionsContainer.className = 'find-actions';\r\n findPart.appendChild(actionsContainer);\r\n actionsContainer.appendChild(this._matchesCount);\r\n actionsContainer.appendChild(this._prevBtn.domNode);\r\n actionsContainer.appendChild(this._nextBtn.domNode);\r\n // Toggle selection button\r\n this._toggleSelectionFind = this._register(new Checkbox({\r\n icon: findSelectionIcon,\r\n title: NLS_TOGGLE_SELECTION_FIND_TITLE + this._keybindingLabelFor(FIND_IDS.ToggleSearchScopeCommand),\r\n isChecked: false\r\n }));\r\n this._register(this._toggleSelectionFind.onChange(() => {\r\n if (this._toggleSelectionFind.checked) {\r\n if (this._codeEditor.hasModel()) {\r\n let selections = this._codeEditor.getSelections();\r\n selections.map(selection => {\r\n if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {\r\n selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));\r\n }\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n return null;\r\n }).filter(element => !!element);\r\n if (selections.length) {\r\n this._state.change({ searchScope: selections }, true);\r\n }\r\n }\r\n }\r\n else {\r\n this._state.change({ searchScope: null }, true);\r\n }\r\n }));\r\n actionsContainer.appendChild(this._toggleSelectionFind.domNode);\r\n // Close button\r\n this._closeBtn = this._register(new SimpleButton({\r\n label: NLS_CLOSE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.CloseFindWidgetCommand),\r\n className: findCloseIcon.classNames,\r\n onTrigger: () => {\r\n this._state.change({ isRevealed: false, searchScope: null }, false);\r\n },\r\n onKeyDown: (e) => {\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._isReplaceVisible) {\r\n if (this._replaceBtn.isEnabled()) {\r\n this._replaceBtn.focus();\r\n }\r\n else {\r\n this._codeEditor.focus();\r\n }\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n }));\r\n actionsContainer.appendChild(this._closeBtn.domNode);\r\n // Replace input\r\n this._replaceInput = this._register(new ContextScopedReplaceInput(null, undefined, {\r\n label: NLS_REPLACE_INPUT_LABEL,\r\n placeholder: NLS_REPLACE_INPUT_PLACEHOLDER,\r\n history: [],\r\n flexibleHeight,\r\n flexibleWidth,\r\n flexibleMaxHeight: 118\r\n }, this._contextKeyService, true));\r\n this._replaceInput.setPreserveCase(!!this._state.preserveCase);\r\n this._register(this._replaceInput.onKeyDown((e) => this._onReplaceInputKeyDown(e)));\r\n this._register(this._replaceInput.inputBox.onDidChange(() => {\r\n this._state.change({ replaceString: this._replaceInput.inputBox.value }, false);\r\n }));\r\n this._register(this._replaceInput.inputBox.onDidHeightChange((e) => {\r\n if (this._isReplaceVisible && this._tryUpdateHeight()) {\r\n this._showViewZone();\r\n }\r\n }));\r\n this._register(this._replaceInput.onDidOptionChange(() => {\r\n this._state.change({\r\n preserveCase: this._replaceInput.getPreserveCase()\r\n }, true);\r\n }));\r\n this._register(this._replaceInput.onPreserveCaseKeyDown((e) => {\r\n if (e.equals(2 /* Tab */)) {\r\n if (this._prevBtn.isEnabled()) {\r\n this._prevBtn.focus();\r\n }\r\n else if (this._nextBtn.isEnabled()) {\r\n this._nextBtn.focus();\r\n }\r\n else if (this._toggleSelectionFind.enabled) {\r\n this._toggleSelectionFind.focus();\r\n }\r\n else if (this._closeBtn.isEnabled()) {\r\n this._closeBtn.focus();\r\n }\r\n e.preventDefault();\r\n }\r\n }));\r\n // Replace one button\r\n this._replaceBtn = this._register(new SimpleButton({\r\n label: NLS_REPLACE_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceOneAction),\r\n className: findReplaceIcon.classNames,\r\n onTrigger: () => {\r\n this._controller.replace();\r\n },\r\n onKeyDown: (e) => {\r\n if (e.equals(1024 /* Shift */ | 2 /* Tab */)) {\r\n this._closeBtn.focus();\r\n e.preventDefault();\r\n }\r\n }\r\n }));\r\n // Replace all button\r\n this._replaceAllBtn = this._register(new SimpleButton({\r\n label: NLS_REPLACE_ALL_BTN_LABEL + this._keybindingLabelFor(FIND_IDS.ReplaceAllAction),\r\n className: findReplaceAllIcon.classNames,\r\n onTrigger: () => {\r\n this._controller.replaceAll();\r\n }\r\n }));\r\n let replacePart = document.createElement('div');\r\n replacePart.className = 'replace-part';\r\n replacePart.appendChild(this._replaceInput.domNode);\r\n const replaceActionsContainer = document.createElement('div');\r\n replaceActionsContainer.className = 'replace-actions';\r\n replacePart.appendChild(replaceActionsContainer);\r\n replaceActionsContainer.appendChild(this._replaceBtn.domNode);\r\n replaceActionsContainer.appendChild(this._replaceAllBtn.domNode);\r\n // Toggle replace button\r\n this._toggleReplaceBtn = this._register(new SimpleButton({\r\n label: NLS_TOGGLE_REPLACE_MODE_BTN_LABEL,\r\n className: 'codicon toggle left',\r\n onTrigger: () => {\r\n this._state.change({ isReplaceRevealed: !this._isReplaceVisible }, false);\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n this._replaceInput.inputBox.layout();\r\n }\r\n this._showViewZone();\r\n }\r\n }));\r\n this._toggleReplaceBtn.setExpanded(this._isReplaceVisible);\r\n // Widget\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'editor-widget find-widget';\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n // We need to set this explicitly, otherwise on IE11, the width inheritence of flex doesn't work.\r\n this._domNode.style.width = `${FIND_WIDGET_INITIAL_WIDTH}px`;\r\n this._domNode.appendChild(this._toggleReplaceBtn.domNode);\r\n this._domNode.appendChild(findPart);\r\n this._domNode.appendChild(replacePart);\r\n this._resizeSash = new Sash(this._domNode, this, { orientation: 0 /* VERTICAL */, size: 2 });\r\n this._resized = false;\r\n let originalWidth = FIND_WIDGET_INITIAL_WIDTH;\r\n this._register(this._resizeSash.onDidStart(() => {\r\n originalWidth = dom.getTotalWidth(this._domNode);\r\n }));\r\n this._register(this._resizeSash.onDidChange((evt) => {\r\n this._resized = true;\r\n let width = originalWidth + evt.startX - evt.currentX;\r\n if (width < FIND_WIDGET_INITIAL_WIDTH) {\r\n // narrow down the find widget should be handled by CSS.\r\n return;\r\n }\r\n const maxWidth = parseFloat(dom.getComputedStyle(this._domNode).maxWidth) || 0;\r\n if (width > maxWidth) {\r\n return;\r\n }\r\n this._domNode.style.width = `${width}px`;\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n }\r\n this._findInput.inputBox.layout();\r\n this._tryUpdateHeight();\r\n }));\r\n this._register(this._resizeSash.onDidReset(() => {\r\n // users double click on the sash\r\n const currentWidth = dom.getTotalWidth(this._domNode);\r\n if (currentWidth < FIND_WIDGET_INITIAL_WIDTH) {\r\n // The editor is narrow and the width of the find widget is controlled fully by CSS.\r\n return;\r\n }\r\n let width = FIND_WIDGET_INITIAL_WIDTH;\r\n if (!this._resized || currentWidth === FIND_WIDGET_INITIAL_WIDTH) {\r\n // 1. never resized before, double click should maximizes it\r\n // 2. users resized it already but its width is the same as default\r\n const layoutInfo = this._codeEditor.getLayoutInfo();\r\n width = layoutInfo.width - 28 - layoutInfo.minimap.minimapWidth - 15;\r\n this._resized = true;\r\n }\r\n else {\r\n /**\r\n * no op, the find widget should be shrinked to its default size.\r\n */\r\n }\r\n this._domNode.style.width = `${width}px`;\r\n if (this._isReplaceVisible) {\r\n this._replaceInput.width = dom.getTotalWidth(this._findInput.domNode);\r\n }\r\n this._findInput.inputBox.layout();\r\n }));\r\n }\r\n updateAccessibilitySupport() {\r\n const value = this._codeEditor.getOption(2 /* accessibilitySupport */);\r\n this._findInput.setFocusInputOnOptionClick(value !== 2 /* Enabled */);\r\n }\r\n}\r\nFindWidget.ID = 'editor.contrib.findWidget';\r\nexport class SimpleButton extends Widget {\r\n constructor(opts) {\r\n super();\r\n this._opts = opts;\r\n this._domNode = document.createElement('div');\r\n this._domNode.title = this._opts.label;\r\n this._domNode.tabIndex = 0;\r\n this._domNode.className = 'button ' + this._opts.className;\r\n this._domNode.setAttribute('role', 'button');\r\n this._domNode.setAttribute('aria-label', this._opts.label);\r\n this.onclick(this._domNode, (e) => {\r\n this._opts.onTrigger();\r\n e.preventDefault();\r\n });\r\n this.onkeydown(this._domNode, (e) => {\r\n if (e.equals(10 /* Space */) || e.equals(3 /* Enter */)) {\r\n this._opts.onTrigger();\r\n e.preventDefault();\r\n return;\r\n }\r\n if (this._opts.onKeyDown) {\r\n this._opts.onKeyDown(e);\r\n }\r\n });\r\n }\r\n get domNode() {\r\n return this._domNode;\r\n }\r\n isEnabled() {\r\n return (this._domNode.tabIndex >= 0);\r\n }\r\n focus() {\r\n this._domNode.focus();\r\n }\r\n setEnabled(enabled) {\r\n dom.toggleClass(this._domNode, 'disabled', !enabled);\r\n this._domNode.setAttribute('aria-disabled', String(!enabled));\r\n this._domNode.tabIndex = enabled ? 0 : -1;\r\n }\r\n setExpanded(expanded) {\r\n this._domNode.setAttribute('aria-expanded', String(!!expanded));\r\n if (expanded) {\r\n dom.removeClasses(this._domNode, findCollapsedIcon.classNames);\r\n dom.addClasses(this._domNode, findExpandedIcon.classNames);\r\n }\r\n else {\r\n dom.removeClasses(this._domNode, findExpandedIcon.classNames);\r\n dom.addClasses(this._domNode, findCollapsedIcon.classNames);\r\n }\r\n }\r\n}\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const addBackgroundColorRule = (selector, color) => {\r\n if (color) {\r\n collector.addRule(`.monaco-editor ${selector} { background-color: ${color}; }`);\r\n }\r\n };\r\n addBackgroundColorRule('.findMatch', theme.getColor(editorFindMatchHighlight));\r\n addBackgroundColorRule('.currentFindMatch', theme.getColor(editorFindMatch));\r\n addBackgroundColorRule('.findScope', theme.getColor(editorFindRangeHighlight));\r\n const widgetBackground = theme.getColor(editorWidgetBackground);\r\n addBackgroundColorRule('.find-widget', widgetBackground);\r\n const widgetShadowColor = theme.getColor(widgetShadow);\r\n if (widgetShadowColor) {\r\n collector.addRule(`.monaco-editor .find-widget { box-shadow: 0 2px 8px ${widgetShadowColor}; }`);\r\n }\r\n const findMatchHighlightBorder = theme.getColor(editorFindMatchHighlightBorder);\r\n if (findMatchHighlightBorder) {\r\n collector.addRule(`.monaco-editor .findMatch { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${findMatchHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const findMatchBorder = theme.getColor(editorFindMatchBorder);\r\n if (findMatchBorder) {\r\n collector.addRule(`.monaco-editor .currentFindMatch { border: 2px solid ${findMatchBorder}; padding: 1px; box-sizing: border-box; }`);\r\n }\r\n const findRangeHighlightBorder = theme.getColor(editorFindRangeHighlightBorder);\r\n if (findRangeHighlightBorder) {\r\n collector.addRule(`.monaco-editor .findScope { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${findRangeHighlightBorder}; }`);\r\n }\r\n const hcBorder = theme.getColor(contrastBorder);\r\n if (hcBorder) {\r\n collector.addRule(`.monaco-editor .find-widget { border: 1px solid ${hcBorder}; }`);\r\n }\r\n const foreground = theme.getColor(editorWidgetForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .find-widget { color: ${foreground}; }`);\r\n }\r\n const error = theme.getColor(errorForeground);\r\n if (error) {\r\n collector.addRule(`.monaco-editor .find-widget.no-results .matchesCount { color: ${error}; }`);\r\n }\r\n const resizeBorderBackground = theme.getColor(editorWidgetResizeBorder);\r\n if (resizeBorderBackground) {\r\n collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${resizeBorderBackground}; }`);\r\n }\r\n else {\r\n const border = theme.getColor(editorWidgetBorder);\r\n if (border) {\r\n collector.addRule(`.monaco-editor .find-widget .monaco-sash { background-color: ${border}; }`);\r\n }\r\n }\r\n // This rule is used to override the outline color for synthetic-focus find input.\r\n const focusOutline = theme.getColor(focusBorder);\r\n if (focusOutline) {\r\n collector.addRule(`.monaco-editor .find-widget .monaco-inputbox.synthetic-focus { outline-color: ${focusOutline}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nexport class ReplaceAllCommand {\r\n constructor(editorSelection, ranges, replaceStrings) {\r\n this._editorSelection = editorSelection;\r\n this._ranges = ranges;\r\n this._replaceStrings = replaceStrings;\r\n this._trackedEditorSelectionId = null;\r\n }\r\n getEditOperations(model, builder) {\r\n if (this._ranges.length > 0) {\r\n // Collect all edit operations\r\n let ops = [];\r\n for (let i = 0; i < this._ranges.length; i++) {\r\n ops.push({\r\n range: this._ranges[i],\r\n text: this._replaceStrings[i]\r\n });\r\n }\r\n // Sort them in ascending order by range starts\r\n ops.sort((o1, o2) => {\r\n return Range.compareRangesUsingStarts(o1.range, o2.range);\r\n });\r\n // Merge operations that touch each other\r\n let resultOps = [];\r\n let previousOp = ops[0];\r\n for (let i = 1; i < ops.length; i++) {\r\n if (previousOp.range.endLineNumber === ops[i].range.startLineNumber && previousOp.range.endColumn === ops[i].range.startColumn) {\r\n // These operations are one after another and can be merged\r\n previousOp.range = previousOp.range.plusRange(ops[i].range);\r\n previousOp.text = previousOp.text + ops[i].text;\r\n }\r\n else {\r\n resultOps.push(previousOp);\r\n previousOp = ops[i];\r\n }\r\n }\r\n resultOps.push(previousOp);\r\n for (const op of resultOps) {\r\n builder.addEditOperation(op.range, op.text);\r\n }\r\n }\r\n this._trackedEditorSelectionId = builder.trackSelection(this._editorSelection);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this._trackedEditorSelectionId);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { buildReplaceStringWithCasePreserved } from '../../../base/common/search.js';\r\n/**\r\n * Assigned when the replace pattern is entirely static.\r\n */\r\nclass StaticValueReplacePattern {\r\n constructor(staticValue) {\r\n this.staticValue = staticValue;\r\n this.kind = 0 /* StaticValue */;\r\n }\r\n}\r\n/**\r\n * Assigned when the replace pattern has replacement patterns.\r\n */\r\nclass DynamicPiecesReplacePattern {\r\n constructor(pieces) {\r\n this.pieces = pieces;\r\n this.kind = 1 /* DynamicPieces */;\r\n }\r\n}\r\nexport class ReplacePattern {\r\n constructor(pieces) {\r\n if (!pieces || pieces.length === 0) {\r\n this._state = new StaticValueReplacePattern('');\r\n }\r\n else if (pieces.length === 1 && pieces[0].staticValue !== null) {\r\n this._state = new StaticValueReplacePattern(pieces[0].staticValue);\r\n }\r\n else {\r\n this._state = new DynamicPiecesReplacePattern(pieces);\r\n }\r\n }\r\n static fromStaticValue(value) {\r\n return new ReplacePattern([ReplacePiece.staticValue(value)]);\r\n }\r\n get hasReplacementPatterns() {\r\n return (this._state.kind === 1 /* DynamicPieces */);\r\n }\r\n buildReplaceString(matches, preserveCase) {\r\n if (this._state.kind === 0 /* StaticValue */) {\r\n if (preserveCase) {\r\n return buildReplaceStringWithCasePreserved(matches, this._state.staticValue);\r\n }\r\n else {\r\n return this._state.staticValue;\r\n }\r\n }\r\n let result = '';\r\n for (let i = 0, len = this._state.pieces.length; i < len; i++) {\r\n let piece = this._state.pieces[i];\r\n if (piece.staticValue !== null) {\r\n // static value ReplacePiece\r\n result += piece.staticValue;\r\n continue;\r\n }\r\n // match index ReplacePiece\r\n let match = ReplacePattern._substitute(piece.matchIndex, matches);\r\n if (piece.caseOps !== null && piece.caseOps.length > 0) {\r\n let repl = [];\r\n let lenOps = piece.caseOps.length;\r\n let opIdx = 0;\r\n for (let idx = 0, len = match.length; idx < len; idx++) {\r\n if (opIdx >= lenOps) {\r\n repl.push(match.slice(idx));\r\n break;\r\n }\r\n switch (piece.caseOps[opIdx]) {\r\n case 'U':\r\n repl.push(match[idx].toUpperCase());\r\n break;\r\n case 'u':\r\n repl.push(match[idx].toUpperCase());\r\n opIdx++;\r\n break;\r\n case 'L':\r\n repl.push(match[idx].toLowerCase());\r\n break;\r\n case 'l':\r\n repl.push(match[idx].toLowerCase());\r\n opIdx++;\r\n break;\r\n default:\r\n repl.push(match[idx]);\r\n }\r\n }\r\n match = repl.join('');\r\n }\r\n result += match;\r\n }\r\n return result;\r\n }\r\n static _substitute(matchIndex, matches) {\r\n if (matches === null) {\r\n return '';\r\n }\r\n if (matchIndex === 0) {\r\n return matches[0];\r\n }\r\n let remainder = '';\r\n while (matchIndex > 0) {\r\n if (matchIndex < matches.length) {\r\n // A match can be undefined\r\n let match = (matches[matchIndex] || '');\r\n return match + remainder;\r\n }\r\n remainder = String(matchIndex % 10) + remainder;\r\n matchIndex = Math.floor(matchIndex / 10);\r\n }\r\n return '$' + remainder;\r\n }\r\n}\r\n/**\r\n * A replace piece can either be a static string or an index to a specific match.\r\n */\r\nexport class ReplacePiece {\r\n constructor(staticValue, matchIndex, caseOps) {\r\n this.staticValue = staticValue;\r\n this.matchIndex = matchIndex;\r\n if (!caseOps || caseOps.length === 0) {\r\n this.caseOps = null;\r\n }\r\n else {\r\n this.caseOps = caseOps.slice(0);\r\n }\r\n }\r\n static staticValue(value) {\r\n return new ReplacePiece(value, -1, null);\r\n }\r\n static caseOps(index, caseOps) {\r\n return new ReplacePiece(null, index, caseOps);\r\n }\r\n}\r\nclass ReplacePieceBuilder {\r\n constructor(source) {\r\n this._source = source;\r\n this._lastCharIndex = 0;\r\n this._result = [];\r\n this._resultLen = 0;\r\n this._currentStaticPiece = '';\r\n }\r\n emitUnchanged(toCharIndex) {\r\n this._emitStatic(this._source.substring(this._lastCharIndex, toCharIndex));\r\n this._lastCharIndex = toCharIndex;\r\n }\r\n emitStatic(value, toCharIndex) {\r\n this._emitStatic(value);\r\n this._lastCharIndex = toCharIndex;\r\n }\r\n _emitStatic(value) {\r\n if (value.length === 0) {\r\n return;\r\n }\r\n this._currentStaticPiece += value;\r\n }\r\n emitMatchIndex(index, toCharIndex, caseOps) {\r\n if (this._currentStaticPiece.length !== 0) {\r\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\r\n this._currentStaticPiece = '';\r\n }\r\n this._result[this._resultLen++] = ReplacePiece.caseOps(index, caseOps);\r\n this._lastCharIndex = toCharIndex;\r\n }\r\n finalize() {\r\n this.emitUnchanged(this._source.length);\r\n if (this._currentStaticPiece.length !== 0) {\r\n this._result[this._resultLen++] = ReplacePiece.staticValue(this._currentStaticPiece);\r\n this._currentStaticPiece = '';\r\n }\r\n return new ReplacePattern(this._result);\r\n }\r\n}\r\n/**\r\n * \\n\t\t\t=> inserts a LF\r\n * \\t\t\t\t=> inserts a TAB\r\n * \\\\\t\t\t=> inserts a \"\\\".\r\n * \\u\t\t\t=> upper-cases one character in a match.\r\n * \\U\t\t\t=> upper-cases ALL remaining characters in a match.\r\n * \\l\t\t\t=> lower-cases one character in a match.\r\n * \\L\t\t\t=> lower-cases ALL remaining characters in a match.\r\n * $$\t\t\t=> inserts a \"$\".\r\n * $& and $0\t=> inserts the matched substring.\r\n * $n\t\t\t=> Where n is a non-negative integer lesser than 100, inserts the nth parenthesized submatch string\r\n * everything else stays untouched\r\n *\r\n * Also see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter\r\n */\r\nexport function parseReplaceString(replaceString) {\r\n if (!replaceString || replaceString.length === 0) {\r\n return new ReplacePattern(null);\r\n }\r\n let caseOps = [];\r\n let result = new ReplacePieceBuilder(replaceString);\r\n for (let i = 0, len = replaceString.length; i < len; i++) {\r\n let chCode = replaceString.charCodeAt(i);\r\n if (chCode === 92 /* Backslash */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a \\\r\n break;\r\n }\r\n let nextChCode = replaceString.charCodeAt(i);\r\n // let replaceWithCharacter: string | null = null;\r\n switch (nextChCode) {\r\n case 92 /* Backslash */:\r\n // \\\\ => inserts a \"\\\"\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('\\\\', i + 1);\r\n break;\r\n case 110 /* n */:\r\n // \\n => inserts a LF\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('\\n', i + 1);\r\n break;\r\n case 116 /* t */:\r\n // \\t => inserts a TAB\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('\\t', i + 1);\r\n break;\r\n // Case modification of string replacements, patterned after Boost, but only applied\r\n // to the replacement text, not subsequent content.\r\n case 117 /* u */:\r\n // \\u => upper-cases one character.\r\n case 85 /* U */:\r\n // \\U => upper-cases ALL following characters.\r\n case 108 /* l */:\r\n // \\l => lower-cases one character.\r\n case 76 /* L */:\r\n // \\L => lower-cases ALL following characters.\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('', i + 1);\r\n caseOps.push(String.fromCharCode(nextChCode));\r\n break;\r\n }\r\n continue;\r\n }\r\n if (chCode === 36 /* DollarSign */) {\r\n // move to next char\r\n i++;\r\n if (i >= len) {\r\n // string ends with a $\r\n break;\r\n }\r\n let nextChCode = replaceString.charCodeAt(i);\r\n if (nextChCode === 36 /* DollarSign */) {\r\n // $$ => inserts a \"$\"\r\n result.emitUnchanged(i - 1);\r\n result.emitStatic('$', i + 1);\r\n continue;\r\n }\r\n if (nextChCode === 48 /* Digit0 */ || nextChCode === 38 /* Ampersand */) {\r\n // $& and $0 => inserts the matched substring.\r\n result.emitUnchanged(i - 1);\r\n result.emitMatchIndex(0, i + 1, caseOps);\r\n caseOps.length = 0;\r\n continue;\r\n }\r\n if (49 /* Digit1 */ <= nextChCode && nextChCode <= 57 /* Digit9 */) {\r\n // $n\r\n let matchIndex = nextChCode - 48 /* Digit0 */;\r\n // peek next char to probe for $nn\r\n if (i + 1 < len) {\r\n let nextNextChCode = replaceString.charCodeAt(i + 1);\r\n if (48 /* Digit0 */ <= nextNextChCode && nextNextChCode <= 57 /* Digit9 */) {\r\n // $nn\r\n // move to next char\r\n i++;\r\n matchIndex = matchIndex * 10 + (nextNextChCode - 48 /* Digit0 */);\r\n result.emitUnchanged(i - 2);\r\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\r\n caseOps.length = 0;\r\n continue;\r\n }\r\n }\r\n result.emitUnchanged(i - 1);\r\n result.emitMatchIndex(matchIndex, i + 1, caseOps);\r\n caseOps.length = 0;\r\n continue;\r\n }\r\n }\r\n }\r\n return result.finalize();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './folding.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { escapeRegExpCharacters } from '../../../base/common/strings.js';\r\nimport { RunOnceScheduler, Delayer, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { registerEditorAction, registerEditorContribution, EditorAction, registerInstantiatedEditorAction } from '../../browser/editorExtensions.js';\r\nimport { FoldingModel, setCollapseStateAtLevel, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateForMatchingLines, setCollapseStateForType, toggleCollapseState, setCollapseStateUp } from './foldingModel.js';\r\nimport { FoldingDecorationProvider, foldingCollapsedIcon, foldingExpandedIcon } from './foldingDecorations.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { HiddenRangeModel } from './hiddenRangeModel.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { IndentRangeProvider } from './indentRangeProvider.js';\r\nimport { FoldingRangeProviderRegistry, FoldingRangeKind } from '../../common/modes.js';\r\nimport { SyntaxRangeProvider, ID_SYNTAX_PROVIDER } from './syntaxRangeProvider.js';\r\nimport { InitializingRangeProvider, ID_INIT_PROVIDER } from './intializingRangeProvider.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { registerColor, editorSelectionBackground, transparent, iconForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nconst CONTEXT_FOLDING_ENABLED = new RawContextKey('foldingEnabled', false);\r\nlet FoldingController = class FoldingController extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this.contextKeyService = contextKeyService;\r\n this.localToDispose = this._register(new DisposableStore());\r\n this.editor = editor;\r\n const options = this.editor.getOptions();\r\n this._isEnabled = options.get(31 /* folding */);\r\n this._useFoldingProviders = options.get(32 /* foldingStrategy */) !== 'indentation';\r\n this._unfoldOnClickAfterEndOfLine = options.get(34 /* unfoldOnClickAfterEndOfLine */);\r\n this.foldingModel = null;\r\n this.hiddenRangeModel = null;\r\n this.rangeProvider = null;\r\n this.foldingRegionPromise = null;\r\n this.foldingStateMemento = null;\r\n this.foldingModelPromise = null;\r\n this.updateScheduler = null;\r\n this.cursorChangedScheduler = null;\r\n this.mouseDownInfo = null;\r\n this.foldingDecorationProvider = new FoldingDecorationProvider(editor);\r\n this.foldingDecorationProvider.autoHideFoldingControls = options.get(91 /* showFoldingControls */) === 'mouseover';\r\n this.foldingDecorationProvider.showFoldingHighlights = options.get(33 /* foldingHighlight */);\r\n this.foldingEnabled = CONTEXT_FOLDING_ENABLED.bindTo(this.contextKeyService);\r\n this.foldingEnabled.set(this._isEnabled);\r\n this._register(this.editor.onDidChangeModel(() => this.onModelChanged()));\r\n this._register(this.editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(31 /* folding */)) {\r\n this._isEnabled = this.editor.getOptions().get(31 /* folding */);\r\n this.foldingEnabled.set(this._isEnabled);\r\n this.onModelChanged();\r\n }\r\n if (e.hasChanged(91 /* showFoldingControls */) || e.hasChanged(33 /* foldingHighlight */)) {\r\n const options = this.editor.getOptions();\r\n this.foldingDecorationProvider.autoHideFoldingControls = options.get(91 /* showFoldingControls */) === 'mouseover';\r\n this.foldingDecorationProvider.showFoldingHighlights = options.get(33 /* foldingHighlight */);\r\n this.onModelContentChanged();\r\n }\r\n if (e.hasChanged(32 /* foldingStrategy */)) {\r\n this._useFoldingProviders = this.editor.getOptions().get(32 /* foldingStrategy */) !== 'indentation';\r\n this.onFoldingStrategyChanged();\r\n }\r\n if (e.hasChanged(34 /* unfoldOnClickAfterEndOfLine */)) {\r\n this._unfoldOnClickAfterEndOfLine = this.editor.getOptions().get(34 /* unfoldOnClickAfterEndOfLine */);\r\n }\r\n }));\r\n this.onModelChanged();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(FoldingController.ID);\r\n }\r\n /**\r\n * Store view state.\r\n */\r\n saveViewState() {\r\n let model = this.editor.getModel();\r\n if (!model || !this._isEnabled || model.isTooLargeForTokenization()) {\r\n return {};\r\n }\r\n if (this.foldingModel) { // disposed ?\r\n let collapsedRegions = this.foldingModel.isInitialized ? this.foldingModel.getMemento() : this.hiddenRangeModel.getMemento();\r\n let provider = this.rangeProvider ? this.rangeProvider.id : undefined;\r\n return { collapsedRegions, lineCount: model.getLineCount(), provider };\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Restore view state.\r\n */\r\n restoreViewState(state) {\r\n let model = this.editor.getModel();\r\n if (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {\r\n return;\r\n }\r\n if (!state || !state.collapsedRegions || state.lineCount !== model.getLineCount()) {\r\n return;\r\n }\r\n if (state.provider === ID_SYNTAX_PROVIDER || state.provider === ID_INIT_PROVIDER) {\r\n this.foldingStateMemento = state;\r\n }\r\n const collapsedRegions = state.collapsedRegions;\r\n // set the hidden ranges right away, before waiting for the folding model.\r\n if (this.hiddenRangeModel.applyMemento(collapsedRegions)) {\r\n const foldingModel = this.getFoldingModel();\r\n if (foldingModel) {\r\n foldingModel.then(foldingModel => {\r\n if (foldingModel) {\r\n foldingModel.applyMemento(collapsedRegions);\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n }\r\n }\r\n onModelChanged() {\r\n this.localToDispose.clear();\r\n let model = this.editor.getModel();\r\n if (!this._isEnabled || !model || model.isTooLargeForTokenization()) {\r\n // huge files get no view model, so they cannot support hidden areas\r\n return;\r\n }\r\n this.foldingModel = new FoldingModel(model, this.foldingDecorationProvider);\r\n this.localToDispose.add(this.foldingModel);\r\n this.hiddenRangeModel = new HiddenRangeModel(this.foldingModel);\r\n this.localToDispose.add(this.hiddenRangeModel);\r\n this.localToDispose.add(this.hiddenRangeModel.onDidChange(hr => this.onHiddenRangesChanges(hr)));\r\n this.updateScheduler = new Delayer(200);\r\n this.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);\r\n this.localToDispose.add(this.cursorChangedScheduler);\r\n this.localToDispose.add(FoldingRangeProviderRegistry.onDidChange(() => this.onFoldingStrategyChanged()));\r\n this.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(() => this.onFoldingStrategyChanged())); // covers model language changes as well\r\n this.localToDispose.add(this.editor.onDidChangeModelContent(() => this.onModelContentChanged()));\r\n this.localToDispose.add(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));\r\n this.localToDispose.add(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));\r\n this.localToDispose.add(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));\r\n this.localToDispose.add({\r\n dispose: () => {\r\n if (this.foldingRegionPromise) {\r\n this.foldingRegionPromise.cancel();\r\n this.foldingRegionPromise = null;\r\n }\r\n if (this.updateScheduler) {\r\n this.updateScheduler.cancel();\r\n }\r\n this.updateScheduler = null;\r\n this.foldingModel = null;\r\n this.foldingModelPromise = null;\r\n this.hiddenRangeModel = null;\r\n this.cursorChangedScheduler = null;\r\n this.foldingStateMemento = null;\r\n if (this.rangeProvider) {\r\n this.rangeProvider.dispose();\r\n }\r\n this.rangeProvider = null;\r\n }\r\n });\r\n this.onModelContentChanged();\r\n }\r\n onFoldingStrategyChanged() {\r\n if (this.rangeProvider) {\r\n this.rangeProvider.dispose();\r\n }\r\n this.rangeProvider = null;\r\n this.onModelContentChanged();\r\n }\r\n getRangeProvider(editorModel) {\r\n if (this.rangeProvider) {\r\n return this.rangeProvider;\r\n }\r\n this.rangeProvider = new IndentRangeProvider(editorModel); // fallback\r\n if (this._useFoldingProviders && this.foldingModel) {\r\n let foldingProviders = FoldingRangeProviderRegistry.ordered(this.foldingModel.textModel);\r\n if (foldingProviders.length === 0 && this.foldingStateMemento && this.foldingStateMemento.collapsedRegions) {\r\n const rangeProvider = this.rangeProvider = new InitializingRangeProvider(editorModel, this.foldingStateMemento.collapsedRegions, () => {\r\n // if after 30 the InitializingRangeProvider is still not replaced, force a refresh\r\n this.foldingStateMemento = null;\r\n this.onFoldingStrategyChanged();\r\n }, 30000);\r\n return rangeProvider; // keep memento in case there are still no foldingProviders on the next request.\r\n }\r\n else if (foldingProviders.length > 0) {\r\n this.rangeProvider = new SyntaxRangeProvider(editorModel, foldingProviders);\r\n }\r\n }\r\n this.foldingStateMemento = null;\r\n return this.rangeProvider;\r\n }\r\n getFoldingModel() {\r\n return this.foldingModelPromise;\r\n }\r\n onModelContentChanged() {\r\n if (this.updateScheduler) {\r\n if (this.foldingRegionPromise) {\r\n this.foldingRegionPromise.cancel();\r\n this.foldingRegionPromise = null;\r\n }\r\n this.foldingModelPromise = this.updateScheduler.trigger(() => {\r\n const foldingModel = this.foldingModel;\r\n if (!foldingModel) { // null if editor has been disposed, or folding turned off\r\n return null;\r\n }\r\n let foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => this.getRangeProvider(foldingModel.textModel).compute(token));\r\n return foldingRegionPromise.then(foldingRanges => {\r\n if (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?\r\n // some cursors might have moved into hidden regions, make sure they are in expanded regions\r\n let selections = this.editor.getSelections();\r\n let selectionLineNumbers = selections ? selections.map(s => s.startLineNumber) : [];\r\n foldingModel.update(foldingRanges, selectionLineNumbers);\r\n }\r\n return foldingModel;\r\n });\r\n }).then(undefined, (err) => {\r\n onUnexpectedError(err);\r\n return null;\r\n });\r\n }\r\n }\r\n onHiddenRangesChanges(hiddenRanges) {\r\n if (this.hiddenRangeModel && hiddenRanges.length) {\r\n let selections = this.editor.getSelections();\r\n if (selections) {\r\n if (this.hiddenRangeModel.adjustSelections(selections)) {\r\n this.editor.setSelections(selections);\r\n }\r\n }\r\n }\r\n this.editor.setHiddenAreas(hiddenRanges);\r\n }\r\n onCursorPositionChanged() {\r\n if (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {\r\n this.cursorChangedScheduler.schedule();\r\n }\r\n }\r\n revealCursor() {\r\n const foldingModel = this.getFoldingModel();\r\n if (!foldingModel) {\r\n return;\r\n }\r\n foldingModel.then(foldingModel => {\r\n if (foldingModel) {\r\n let selections = this.editor.getSelections();\r\n if (selections && selections.length > 0) {\r\n let toToggle = [];\r\n for (let selection of selections) {\r\n let lineNumber = selection.selectionStartLineNumber;\r\n if (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {\r\n toToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));\r\n }\r\n }\r\n if (toToggle.length) {\r\n foldingModel.toggleCollapseState(toToggle);\r\n this.reveal(selections[0].getPosition());\r\n }\r\n }\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n onEditorMouseDown(e) {\r\n this.mouseDownInfo = null;\r\n if (!this.hiddenRangeModel || !e.target || !e.target.range) {\r\n return;\r\n }\r\n if (!e.event.leftButton && !e.event.middleButton) {\r\n return;\r\n }\r\n const range = e.target.range;\r\n let iconClicked = false;\r\n switch (e.target.type) {\r\n case 4 /* GUTTER_LINE_DECORATIONS */:\r\n const data = e.target.detail;\r\n const offsetLeftInGutter = e.target.element.offsetLeft;\r\n const gutterOffsetX = data.offsetX - offsetLeftInGutter;\r\n // const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;\r\n // TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff\r\n if (gutterOffsetX < 5) { // the whitespace between the border and the real folding icon border is 5px\r\n return;\r\n }\r\n iconClicked = true;\r\n break;\r\n case 7 /* CONTENT_EMPTY */: {\r\n if (this._unfoldOnClickAfterEndOfLine && this.hiddenRangeModel.hasRanges()) {\r\n const data = e.target.detail;\r\n if (!data.isAfterLines) {\r\n break;\r\n }\r\n }\r\n return;\r\n }\r\n case 6 /* CONTENT_TEXT */: {\r\n if (this.hiddenRangeModel.hasRanges()) {\r\n let model = this.editor.getModel();\r\n if (model && range.startColumn === model.getLineMaxColumn(range.startLineNumber)) {\r\n break;\r\n }\r\n }\r\n return;\r\n }\r\n default:\r\n return;\r\n }\r\n this.mouseDownInfo = { lineNumber: range.startLineNumber, iconClicked };\r\n }\r\n onEditorMouseUp(e) {\r\n const foldingModel = this.getFoldingModel();\r\n if (!foldingModel || !this.mouseDownInfo || !e.target) {\r\n return;\r\n }\r\n let lineNumber = this.mouseDownInfo.lineNumber;\r\n let iconClicked = this.mouseDownInfo.iconClicked;\r\n let range = e.target.range;\r\n if (!range || range.startLineNumber !== lineNumber) {\r\n return;\r\n }\r\n if (iconClicked) {\r\n if (e.target.type !== 4 /* GUTTER_LINE_DECORATIONS */) {\r\n return;\r\n }\r\n }\r\n else {\r\n let model = this.editor.getModel();\r\n if (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {\r\n return;\r\n }\r\n }\r\n foldingModel.then(foldingModel => {\r\n if (foldingModel) {\r\n let region = foldingModel.getRegionAtLine(lineNumber);\r\n if (region && region.startLineNumber === lineNumber) {\r\n let isCollapsed = region.isCollapsed;\r\n if (iconClicked || isCollapsed) {\r\n let toToggle = [];\r\n let recursive = e.event.middleButton || e.event.shiftKey;\r\n if (recursive) {\r\n for (const r of foldingModel.getRegionsInside(region)) {\r\n if (r.isCollapsed === isCollapsed) {\r\n toToggle.push(r);\r\n }\r\n }\r\n }\r\n // when recursive, first only collapse all children. If all are already folded or there are no children, also fold parent.\r\n if (isCollapsed || !recursive || toToggle.length === 0) {\r\n toToggle.push(region);\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n this.reveal({ lineNumber, column: 1 });\r\n }\r\n }\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n reveal(position) {\r\n this.editor.revealPositionInCenterIfOutsideViewport(position, 0 /* Smooth */);\r\n }\r\n};\r\nFoldingController.ID = 'editor.contrib.folding';\r\nFoldingController = __decorate([\r\n __param(1, IContextKeyService)\r\n], FoldingController);\r\nexport { FoldingController };\r\nclass FoldingAction extends EditorAction {\r\n runEditorCommand(accessor, editor, args) {\r\n let foldingController = FoldingController.get(editor);\r\n if (!foldingController) {\r\n return;\r\n }\r\n let foldingModelPromise = foldingController.getFoldingModel();\r\n if (foldingModelPromise) {\r\n this.reportTelemetry(accessor, editor);\r\n return foldingModelPromise.then(foldingModel => {\r\n if (foldingModel) {\r\n this.invoke(foldingController, foldingModel, editor, args);\r\n const selection = editor.getSelection();\r\n if (selection) {\r\n foldingController.reveal(selection.getStartPosition());\r\n }\r\n }\r\n });\r\n }\r\n }\r\n getSelectedLines(editor) {\r\n let selections = editor.getSelections();\r\n return selections ? selections.map(s => s.startLineNumber) : [];\r\n }\r\n getLineNumbers(args, editor) {\r\n if (args && args.selectionLines) {\r\n return args.selectionLines.map(l => l + 1); // to 0-bases line numbers\r\n }\r\n return this.getSelectedLines(editor);\r\n }\r\n run(_accessor, _editor) {\r\n }\r\n}\r\nfunction foldingArgumentsConstraint(args) {\r\n if (!types.isUndefined(args)) {\r\n if (!types.isObject(args)) {\r\n return false;\r\n }\r\n const foldingArgs = args;\r\n if (!types.isUndefined(foldingArgs.levels) && !types.isNumber(foldingArgs.levels)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(foldingArgs.direction) && !types.isString(foldingArgs.direction)) {\r\n return false;\r\n }\r\n if (!types.isUndefined(foldingArgs.selectionLines) && (!types.isArray(foldingArgs.selectionLines) || !foldingArgs.selectionLines.every(types.isNumber))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nclass UnfoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfold',\r\n label: nls.localize('unfoldAction.label', \"Unfold\"),\r\n alias: 'Unfold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 89 /* US_CLOSE_SQUARE_BRACKET */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 89 /* US_CLOSE_SQUARE_BRACKET */\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n description: {\r\n description: 'Unfold the content in the editor',\r\n args: [\r\n {\r\n name: 'Unfold editor argument',\r\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': The start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t`,\r\n constraint: foldingArgumentsConstraint,\r\n schema: {\r\n 'type': 'object',\r\n 'properties': {\r\n 'levels': {\r\n 'type': 'number',\r\n 'default': 1\r\n },\r\n 'direction': {\r\n 'type': 'string',\r\n 'enum': ['up', 'down'],\r\n 'default': 'down'\r\n },\r\n 'selectionLines': {\r\n 'type': 'array',\r\n 'items': {\r\n 'type': 'number'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor, args) {\r\n let levels = args && args.levels || 1;\r\n let lineNumbers = this.getLineNumbers(args, editor);\r\n if (args && args.direction === 'up') {\r\n setCollapseStateLevelsUp(foldingModel, false, levels, lineNumbers);\r\n }\r\n else {\r\n setCollapseStateLevelsDown(foldingModel, false, levels, lineNumbers);\r\n }\r\n }\r\n}\r\nclass UnFoldRecursivelyAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldRecursively',\r\n label: nls.localize('unFoldRecursivelyAction.label', \"Unfold Recursively\"),\r\n alias: 'Unfold Recursively',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 89 /* US_CLOSE_SQUARE_BRACKET */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor, _args) {\r\n setCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));\r\n }\r\n}\r\nclass FoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.fold',\r\n label: nls.localize('foldAction.label', \"Fold\"),\r\n alias: 'Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 87 /* US_OPEN_SQUARE_BRACKET */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 87 /* US_OPEN_SQUARE_BRACKET */\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n description: {\r\n description: 'Fold the content in the editor',\r\n args: [\r\n {\r\n name: 'Fold editor argument',\r\n description: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': The start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t`,\r\n constraint: foldingArgumentsConstraint,\r\n schema: {\r\n 'type': 'object',\r\n 'properties': {\r\n 'levels': {\r\n 'type': 'number',\r\n },\r\n 'direction': {\r\n 'type': 'string',\r\n 'enum': ['up', 'down'],\r\n },\r\n 'selectionLines': {\r\n 'type': 'array',\r\n 'items': {\r\n 'type': 'number'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor, args) {\r\n let lineNumbers = this.getLineNumbers(args, editor);\r\n const levels = args && args.levels;\r\n const direction = args && args.direction;\r\n if (typeof levels !== 'number' && typeof direction !== 'string') {\r\n // fold the region at the location or if already collapsed, the first uncollapsed parent instead.\r\n setCollapseStateUp(foldingModel, true, lineNumbers);\r\n }\r\n else {\r\n if (direction === 'up') {\r\n setCollapseStateLevelsUp(foldingModel, true, levels || 1, lineNumbers);\r\n }\r\n else {\r\n setCollapseStateLevelsDown(foldingModel, true, levels || 1, lineNumbers);\r\n }\r\n }\r\n }\r\n}\r\nclass ToggleFoldAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.toggleFold',\r\n label: nls.localize('toggleFoldAction.label', \"Toggle Fold\"),\r\n alias: 'Toggle Fold',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 42 /* KEY_L */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n toggleCollapseState(foldingModel, 1, selectedLines);\r\n }\r\n}\r\nclass FoldRecursivelyAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldRecursively',\r\n label: nls.localize('foldRecursivelyAction.label', \"Fold Recursively\"),\r\n alias: 'Fold Recursively',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 87 /* US_OPEN_SQUARE_BRACKET */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n let selectedLines = this.getSelectedLines(editor);\r\n setCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);\r\n }\r\n}\r\nclass FoldAllBlockCommentsAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAllBlockComments',\r\n label: nls.localize('foldAllBlockComments.label', \"Fold All Block Comments\"),\r\n alias: 'Fold All Block Comments',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 85 /* US_SLASH */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n if (foldingModel.regions.hasTypes()) {\r\n setCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);\r\n }\r\n else {\r\n const editorModel = editor.getModel();\r\n if (!editorModel) {\r\n return;\r\n }\r\n let comments = LanguageConfigurationRegistry.getComments(editorModel.getLanguageIdentifier().id);\r\n if (comments && comments.blockCommentStartToken) {\r\n let regExp = new RegExp('^\\\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));\r\n setCollapseStateForMatchingLines(foldingModel, regExp, true);\r\n }\r\n }\r\n }\r\n}\r\nclass FoldAllRegionsAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAllMarkerRegions',\r\n label: nls.localize('foldAllMarkerRegions.label', \"Fold All Regions\"),\r\n alias: 'Fold All Regions',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 29 /* KEY_8 */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n if (foldingModel.regions.hasTypes()) {\r\n setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);\r\n }\r\n else {\r\n const editorModel = editor.getModel();\r\n if (!editorModel) {\r\n return;\r\n }\r\n let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editorModel.getLanguageIdentifier().id);\r\n if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\r\n let regExp = new RegExp(foldingRules.markers.start);\r\n setCollapseStateForMatchingLines(foldingModel, regExp, true);\r\n }\r\n }\r\n }\r\n}\r\nclass UnfoldAllRegionsAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldAllMarkerRegions',\r\n label: nls.localize('unfoldAllMarkerRegions.label', \"Unfold All Regions\"),\r\n alias: 'Unfold All Regions',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 30 /* KEY_9 */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n if (foldingModel.regions.hasTypes()) {\r\n setCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);\r\n }\r\n else {\r\n const editorModel = editor.getModel();\r\n if (!editorModel) {\r\n return;\r\n }\r\n let foldingRules = LanguageConfigurationRegistry.getFoldingRules(editorModel.getLanguageIdentifier().id);\r\n if (foldingRules && foldingRules.markers && foldingRules.markers.start) {\r\n let regExp = new RegExp(foldingRules.markers.start);\r\n setCollapseStateForMatchingLines(foldingModel, regExp, false);\r\n }\r\n }\r\n }\r\n}\r\nclass FoldAllAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.foldAll',\r\n label: nls.localize('foldAllAction.label', \"Fold All\"),\r\n alias: 'Fold All',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 21 /* KEY_0 */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, _editor) {\r\n setCollapseStateLevelsDown(foldingModel, true);\r\n }\r\n}\r\nclass UnfoldAllAction extends FoldingAction {\r\n constructor() {\r\n super({\r\n id: 'editor.unfoldAll',\r\n label: nls.localize('unfoldAllAction.label', \"Unfold All\"),\r\n alias: 'Unfold All',\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 40 /* KEY_J */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n invoke(_foldingController, foldingModel, _editor) {\r\n setCollapseStateLevelsDown(foldingModel, false);\r\n }\r\n}\r\nclass FoldLevelAction extends FoldingAction {\r\n getFoldingLevel() {\r\n return parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));\r\n }\r\n invoke(_foldingController, foldingModel, editor) {\r\n setCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));\r\n }\r\n}\r\nFoldLevelAction.ID_PREFIX = 'editor.foldLevel';\r\nFoldLevelAction.ID = (level) => FoldLevelAction.ID_PREFIX + level;\r\nregisterEditorContribution(FoldingController.ID, FoldingController);\r\nregisterEditorAction(UnfoldAction);\r\nregisterEditorAction(UnFoldRecursivelyAction);\r\nregisterEditorAction(FoldAction);\r\nregisterEditorAction(FoldRecursivelyAction);\r\nregisterEditorAction(FoldAllAction);\r\nregisterEditorAction(UnfoldAllAction);\r\nregisterEditorAction(FoldAllBlockCommentsAction);\r\nregisterEditorAction(FoldAllRegionsAction);\r\nregisterEditorAction(UnfoldAllRegionsAction);\r\nregisterEditorAction(ToggleFoldAction);\r\nfor (let i = 1; i <= 7; i++) {\r\n registerInstantiatedEditorAction(new FoldLevelAction({\r\n id: FoldLevelAction.ID(i),\r\n label: nls.localize('foldLevelAction.label', \"Fold Level {0}\", i),\r\n alias: `Fold Level ${i}`,\r\n precondition: CONTEXT_FOLDING_ENABLED,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | (21 /* KEY_0 */ + i)),\r\n weight: 100 /* EditorContrib */\r\n }\r\n }));\r\n}\r\nexport const foldBackgroundBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hc: null }, nls.localize('foldBackgroundBackground', \"Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations.\"), true);\r\nexport const editorFoldForeground = registerColor('editorGutter.foldingControlForeground', { dark: iconForeground, light: iconForeground, hc: iconForeground }, nls.localize('editorGutter.foldingControlForeground', 'Color of the folding control in the editor gutter.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const foldBackground = theme.getColor(foldBackgroundBackground);\r\n if (foldBackground) {\r\n collector.addRule(`.monaco-editor .folded-background { background-color: ${foldBackground}; }`);\r\n }\r\n const editorFoldColor = theme.getColor(editorFoldForeground);\r\n if (editorFoldColor) {\r\n collector.addRule(`\n\t\t.monaco-editor .cldr${foldingExpandedIcon.cssSelector},\n\t\t.monaco-editor .cldr${foldingCollapsedIcon.cssSelector} {\n\t\t\tcolor: ${editorFoldColor} !important;\n\t\t}\n\t\t`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { Codicon, registerIcon } from '../../../base/common/codicons.js';\r\nexport const foldingExpandedIcon = registerIcon('folding-expanded', Codicon.chevronDown);\r\nexport const foldingCollapsedIcon = registerIcon('folding-collapsed', Codicon.chevronRight);\r\nexport class FoldingDecorationProvider {\r\n constructor(editor) {\r\n this.editor = editor;\r\n this.autoHideFoldingControls = true;\r\n this.showFoldingHighlights = true;\r\n }\r\n getDecorationOption(isCollapsed, isHidden) {\r\n if (isHidden) {\r\n return FoldingDecorationProvider.HIDDEN_RANGE_DECORATION;\r\n }\r\n if (isCollapsed) {\r\n return this.showFoldingHighlights ? FoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION : FoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION;\r\n }\r\n else if (this.autoHideFoldingControls) {\r\n return FoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION;\r\n }\r\n else {\r\n return FoldingDecorationProvider.EXPANDED_VISUAL_DECORATION;\r\n }\r\n }\r\n deltaDecorations(oldDecorations, newDecorations) {\r\n return this.editor.deltaDecorations(oldDecorations, newDecorations);\r\n }\r\n changeDecorations(callback) {\r\n return this.editor.changeDecorations(callback);\r\n }\r\n}\r\nFoldingDecorationProvider.COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n afterContentClassName: 'inline-folded',\r\n isWholeLine: true,\r\n firstLineDecorationClassName: foldingCollapsedIcon.classNames\r\n});\r\nFoldingDecorationProvider.COLLAPSED_HIGHLIGHTED_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n afterContentClassName: 'inline-folded',\r\n className: 'folded-background',\r\n isWholeLine: true,\r\n firstLineDecorationClassName: foldingCollapsedIcon.classNames\r\n});\r\nFoldingDecorationProvider.EXPANDED_AUTO_HIDE_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n isWholeLine: true,\r\n firstLineDecorationClassName: foldingExpandedIcon.classNames\r\n});\r\nFoldingDecorationProvider.EXPANDED_VISUAL_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n isWholeLine: true,\r\n firstLineDecorationClassName: 'alwaysShowFoldIcons ' + foldingExpandedIcon.classNames\r\n});\r\nFoldingDecorationProvider.HIDDEN_RANGE_DECORATION = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { FoldingRegions } from './foldingRanges.js';\r\nexport class FoldingModel {\r\n constructor(textModel, decorationProvider) {\r\n this._updateEventEmitter = new Emitter();\r\n this.onDidChange = this._updateEventEmitter.event;\r\n this._textModel = textModel;\r\n this._decorationProvider = decorationProvider;\r\n this._regions = new FoldingRegions(new Uint32Array(0), new Uint32Array(0));\r\n this._editorDecorationIds = [];\r\n this._isInitialized = false;\r\n }\r\n get regions() { return this._regions; }\r\n get textModel() { return this._textModel; }\r\n get isInitialized() { return this._isInitialized; }\r\n toggleCollapseState(toggledRegions) {\r\n if (!toggledRegions.length) {\r\n return;\r\n }\r\n toggledRegions = toggledRegions.sort((r1, r2) => r1.regionIndex - r2.regionIndex);\r\n const processed = {};\r\n this._decorationProvider.changeDecorations(accessor => {\r\n let k = 0; // index from [0 ... this.regions.length]\r\n let dirtyRegionEndLine = -1; // end of the range where decorations need to be updated\r\n let lastHiddenLine = -1; // the end of the last hidden lines\r\n const updateDecorationsUntil = (index) => {\r\n while (k < index) {\r\n const endLineNumber = this._regions.getEndLineNumber(k);\r\n const isCollapsed = this._regions.isCollapsed(k);\r\n if (endLineNumber <= dirtyRegionEndLine) {\r\n accessor.changeDecorationOptions(this._editorDecorationIds[k], this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine));\r\n }\r\n if (isCollapsed && endLineNumber > lastHiddenLine) {\r\n lastHiddenLine = endLineNumber;\r\n }\r\n k++;\r\n }\r\n };\r\n for (let region of toggledRegions) {\r\n let index = region.regionIndex;\r\n let editorDecorationId = this._editorDecorationIds[index];\r\n if (editorDecorationId && !processed[editorDecorationId]) {\r\n processed[editorDecorationId] = true;\r\n updateDecorationsUntil(index); // update all decorations up to current index using the old dirtyRegionEndLine\r\n let newCollapseState = !this._regions.isCollapsed(index);\r\n this._regions.setCollapsed(index, newCollapseState);\r\n dirtyRegionEndLine = Math.max(dirtyRegionEndLine, this._regions.getEndLineNumber(index));\r\n }\r\n }\r\n updateDecorationsUntil(this._regions.length);\r\n });\r\n this._updateEventEmitter.fire({ model: this, collapseStateChanged: toggledRegions });\r\n }\r\n update(newRegions, blockedLineNumers = []) {\r\n let newEditorDecorations = [];\r\n let isBlocked = (startLineNumber, endLineNumber) => {\r\n for (let blockedLineNumber of blockedLineNumers) {\r\n if (startLineNumber < blockedLineNumber && blockedLineNumber <= endLineNumber) { // first line is visible\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n let lastHiddenLine = -1;\r\n let initRange = (index, isCollapsed) => {\r\n const startLineNumber = newRegions.getStartLineNumber(index);\r\n const endLineNumber = newRegions.getEndLineNumber(index);\r\n if (isCollapsed && isBlocked(startLineNumber, endLineNumber)) {\r\n isCollapsed = false;\r\n }\r\n newRegions.setCollapsed(index, isCollapsed);\r\n const maxColumn = this._textModel.getLineMaxColumn(startLineNumber);\r\n const decorationRange = {\r\n startLineNumber: startLineNumber,\r\n startColumn: maxColumn,\r\n endLineNumber: startLineNumber,\r\n endColumn: maxColumn\r\n };\r\n newEditorDecorations.push({ range: decorationRange, options: this._decorationProvider.getDecorationOption(isCollapsed, endLineNumber <= lastHiddenLine) });\r\n if (isCollapsed && endLineNumber > lastHiddenLine) {\r\n lastHiddenLine = endLineNumber;\r\n }\r\n };\r\n let i = 0;\r\n let nextCollapsed = () => {\r\n while (i < this._regions.length) {\r\n let isCollapsed = this._regions.isCollapsed(i);\r\n i++;\r\n if (isCollapsed) {\r\n return i - 1;\r\n }\r\n }\r\n return -1;\r\n };\r\n let k = 0;\r\n let collapsedIndex = nextCollapsed();\r\n while (collapsedIndex !== -1 && k < newRegions.length) {\r\n // get the latest range\r\n let decRange = this._textModel.getDecorationRange(this._editorDecorationIds[collapsedIndex]);\r\n if (decRange) {\r\n let collapsedStartLineNumber = decRange.startLineNumber;\r\n if (this._textModel.getLineMaxColumn(collapsedStartLineNumber) === decRange.startColumn) { // test that the decoration is still at the end otherwise it got deleted\r\n while (k < newRegions.length) {\r\n let startLineNumber = newRegions.getStartLineNumber(k);\r\n if (collapsedStartLineNumber >= startLineNumber) {\r\n initRange(k, collapsedStartLineNumber === startLineNumber);\r\n k++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n collapsedIndex = nextCollapsed();\r\n }\r\n while (k < newRegions.length) {\r\n initRange(k, false);\r\n k++;\r\n }\r\n this._editorDecorationIds = this._decorationProvider.deltaDecorations(this._editorDecorationIds, newEditorDecorations);\r\n this._regions = newRegions;\r\n this._isInitialized = true;\r\n this._updateEventEmitter.fire({ model: this });\r\n }\r\n /**\r\n * Collapse state memento, for persistence only\r\n */\r\n getMemento() {\r\n let collapsedRanges = [];\r\n for (let i = 0; i < this._regions.length; i++) {\r\n if (this._regions.isCollapsed(i)) {\r\n let range = this._textModel.getDecorationRange(this._editorDecorationIds[i]);\r\n if (range) {\r\n let startLineNumber = range.startLineNumber;\r\n let endLineNumber = range.endLineNumber + this._regions.getEndLineNumber(i) - this._regions.getStartLineNumber(i);\r\n collapsedRanges.push({ startLineNumber, endLineNumber });\r\n }\r\n }\r\n }\r\n if (collapsedRanges.length > 0) {\r\n return collapsedRanges;\r\n }\r\n return undefined;\r\n }\r\n /**\r\n * Apply persisted state, for persistence only\r\n */\r\n applyMemento(state) {\r\n if (!Array.isArray(state)) {\r\n return;\r\n }\r\n let toToogle = [];\r\n for (let range of state) {\r\n let region = this.getRegionAtLine(range.startLineNumber);\r\n if (region && !region.isCollapsed) {\r\n toToogle.push(region);\r\n }\r\n }\r\n this.toggleCollapseState(toToogle);\r\n }\r\n dispose() {\r\n this._decorationProvider.deltaDecorations(this._editorDecorationIds, []);\r\n }\r\n getAllRegionsAtLine(lineNumber, filter) {\r\n let result = [];\r\n if (this._regions) {\r\n let index = this._regions.findRange(lineNumber);\r\n let level = 1;\r\n while (index >= 0) {\r\n let current = this._regions.toRegion(index);\r\n if (!filter || filter(current, level)) {\r\n result.push(current);\r\n }\r\n level++;\r\n index = current.parentIndex;\r\n }\r\n }\r\n return result;\r\n }\r\n getRegionAtLine(lineNumber) {\r\n if (this._regions) {\r\n let index = this._regions.findRange(lineNumber);\r\n if (index >= 0) {\r\n return this._regions.toRegion(index);\r\n }\r\n }\r\n return null;\r\n }\r\n getRegionsInside(region, filter) {\r\n let result = [];\r\n let index = region ? region.regionIndex + 1 : 0;\r\n let endLineNumber = region ? region.endLineNumber : Number.MAX_VALUE;\r\n if (filter && filter.length === 2) {\r\n const levelStack = [];\r\n for (let i = index, len = this._regions.length; i < len; i++) {\r\n let current = this._regions.toRegion(i);\r\n if (this._regions.getStartLineNumber(i) < endLineNumber) {\r\n while (levelStack.length > 0 && !current.containedBy(levelStack[levelStack.length - 1])) {\r\n levelStack.pop();\r\n }\r\n levelStack.push(current);\r\n if (filter(current, levelStack.length)) {\r\n result.push(current);\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n for (let i = index, len = this._regions.length; i < len; i++) {\r\n let current = this._regions.toRegion(i);\r\n if (this._regions.getStartLineNumber(i) < endLineNumber) {\r\n if (!filter || filter(current)) {\r\n result.push(current);\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Collapse or expand the regions at the given locations\r\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\r\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\r\n */\r\nexport function toggleCollapseState(foldingModel, levels, lineNumbers) {\r\n let toToggle = [];\r\n for (let lineNumber of lineNumbers) {\r\n let region = foldingModel.getRegionAtLine(lineNumber);\r\n if (region) {\r\n const doCollapse = !region.isCollapsed;\r\n toToggle.push(region);\r\n if (levels > 1) {\r\n let regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\r\n toToggle.push(...regionsInside);\r\n }\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Collapse or expand the regions at the given locations including all children.\r\n * @param doCollapse Wheter to collase or expand\r\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\r\n * @param lineNumbers the location of the regions to collapse or expand, or if not set, all regions in the model.\r\n */\r\nexport function setCollapseStateLevelsDown(foldingModel, doCollapse, levels = Number.MAX_VALUE, lineNumbers) {\r\n let toToggle = [];\r\n if (lineNumbers && lineNumbers.length > 0) {\r\n for (let lineNumber of lineNumbers) {\r\n let region = foldingModel.getRegionAtLine(lineNumber);\r\n if (region) {\r\n if (region.isCollapsed !== doCollapse) {\r\n toToggle.push(region);\r\n }\r\n if (levels > 1) {\r\n let regionsInside = foldingModel.getRegionsInside(region, (r, level) => r.isCollapsed !== doCollapse && level < levels);\r\n toToggle.push(...regionsInside);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n let regionsInside = foldingModel.getRegionsInside(null, (r, level) => r.isCollapsed !== doCollapse && level < levels);\r\n toToggle.push(...regionsInside);\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Collapse or expand the regions at the given locations including all parents.\r\n * @param doCollapse Wheter to collase or expand\r\n * @param levels The number of levels. Use 1 to only impact the regions at the location, use Number.MAX_VALUE for all levels.\r\n * @param lineNumbers the location of the regions to collapse or expand.\r\n */\r\nexport function setCollapseStateLevelsUp(foldingModel, doCollapse, levels, lineNumbers) {\r\n let toToggle = [];\r\n for (let lineNumber of lineNumbers) {\r\n let regions = foldingModel.getAllRegionsAtLine(lineNumber, (region, level) => region.isCollapsed !== doCollapse && level <= levels);\r\n toToggle.push(...regions);\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Collapse or expand a region at the given locations. If the inner most region is already collapsed/expanded, uses the first parent instead.\r\n * @param doCollapse Wheter to collase or expand\r\n * @param lineNumbers the location of the regions to collapse or expand.\r\n */\r\nexport function setCollapseStateUp(foldingModel, doCollapse, lineNumbers) {\r\n let toToggle = [];\r\n for (let lineNumber of lineNumbers) {\r\n let regions = foldingModel.getAllRegionsAtLine(lineNumber, (region) => region.isCollapsed !== doCollapse);\r\n if (regions.length > 0) {\r\n toToggle.push(regions[0]);\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds or unfolds all regions that have a given level, except if they contain one of the blocked lines.\r\n * @param foldLevel level. Level == 1 is the top level\r\n * @param doCollapse Wheter to collase or expand\r\n*/\r\nexport function setCollapseStateAtLevel(foldingModel, foldLevel, doCollapse, blockedLineNumbers) {\r\n let filter = (region, level) => level === foldLevel && region.isCollapsed !== doCollapse && !blockedLineNumbers.some(line => region.containsLine(line));\r\n let toToggle = foldingModel.getRegionsInside(null, filter);\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds all regions for which the lines start with a given regex\r\n * @param foldingModel the folding model\r\n */\r\nexport function setCollapseStateForMatchingLines(foldingModel, regExp, doCollapse) {\r\n let editorModel = foldingModel.textModel;\r\n let regions = foldingModel.regions;\r\n let toToggle = [];\r\n for (let i = regions.length - 1; i >= 0; i--) {\r\n if (doCollapse !== regions.isCollapsed(i)) {\r\n let startLineNumber = regions.getStartLineNumber(i);\r\n if (regExp.test(editorModel.getLineContent(startLineNumber))) {\r\n toToggle.push(regions.toRegion(i));\r\n }\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n/**\r\n * Folds all regions of the given type\r\n * @param foldingModel the folding model\r\n */\r\nexport function setCollapseStateForType(foldingModel, type, doCollapse) {\r\n let regions = foldingModel.regions;\r\n let toToggle = [];\r\n for (let i = regions.length - 1; i >= 0; i--) {\r\n if (doCollapse !== regions.isCollapsed(i) && type === regions.getType(i)) {\r\n toToggle.push(regions.toRegion(i));\r\n }\r\n }\r\n foldingModel.toggleCollapseState(toToggle);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const MAX_FOLDING_REGIONS = 0xFFFF;\r\nexport const MAX_LINE_NUMBER = 0xFFFFFF;\r\nconst MASK_INDENT = 0xFF000000;\r\nexport class FoldingRegions {\r\n constructor(startIndexes, endIndexes, types) {\r\n if (startIndexes.length !== endIndexes.length || startIndexes.length > MAX_FOLDING_REGIONS) {\r\n throw new Error('invalid startIndexes or endIndexes size');\r\n }\r\n this._startIndexes = startIndexes;\r\n this._endIndexes = endIndexes;\r\n this._collapseStates = new Uint32Array(Math.ceil(startIndexes.length / 32));\r\n this._types = types;\r\n this._parentsComputed = false;\r\n }\r\n ensureParentIndices() {\r\n if (!this._parentsComputed) {\r\n this._parentsComputed = true;\r\n let parentIndexes = [];\r\n let isInsideLast = (startLineNumber, endLineNumber) => {\r\n let index = parentIndexes[parentIndexes.length - 1];\r\n return this.getStartLineNumber(index) <= startLineNumber && this.getEndLineNumber(index) >= endLineNumber;\r\n };\r\n for (let i = 0, len = this._startIndexes.length; i < len; i++) {\r\n let startLineNumber = this._startIndexes[i];\r\n let endLineNumber = this._endIndexes[i];\r\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\r\n throw new Error('startLineNumber or endLineNumber must not exceed ' + MAX_LINE_NUMBER);\r\n }\r\n while (parentIndexes.length > 0 && !isInsideLast(startLineNumber, endLineNumber)) {\r\n parentIndexes.pop();\r\n }\r\n let parentIndex = parentIndexes.length > 0 ? parentIndexes[parentIndexes.length - 1] : -1;\r\n parentIndexes.push(i);\r\n this._startIndexes[i] = startLineNumber + ((parentIndex & 0xFF) << 24);\r\n this._endIndexes[i] = endLineNumber + ((parentIndex & 0xFF00) << 16);\r\n }\r\n }\r\n }\r\n get length() {\r\n return this._startIndexes.length;\r\n }\r\n getStartLineNumber(index) {\r\n return this._startIndexes[index] & MAX_LINE_NUMBER;\r\n }\r\n getEndLineNumber(index) {\r\n return this._endIndexes[index] & MAX_LINE_NUMBER;\r\n }\r\n getType(index) {\r\n return this._types ? this._types[index] : undefined;\r\n }\r\n hasTypes() {\r\n return !!this._types;\r\n }\r\n isCollapsed(index) {\r\n let arrayIndex = (index / 32) | 0;\r\n let bit = index % 32;\r\n return (this._collapseStates[arrayIndex] & (1 << bit)) !== 0;\r\n }\r\n setCollapsed(index, newState) {\r\n let arrayIndex = (index / 32) | 0;\r\n let bit = index % 32;\r\n let value = this._collapseStates[arrayIndex];\r\n if (newState) {\r\n this._collapseStates[arrayIndex] = value | (1 << bit);\r\n }\r\n else {\r\n this._collapseStates[arrayIndex] = value & ~(1 << bit);\r\n }\r\n }\r\n toRegion(index) {\r\n return new FoldingRegion(this, index);\r\n }\r\n getParentIndex(index) {\r\n this.ensureParentIndices();\r\n let parent = ((this._startIndexes[index] & MASK_INDENT) >>> 24) + ((this._endIndexes[index] & MASK_INDENT) >>> 16);\r\n if (parent === MAX_FOLDING_REGIONS) {\r\n return -1;\r\n }\r\n return parent;\r\n }\r\n contains(index, line) {\r\n return this.getStartLineNumber(index) <= line && this.getEndLineNumber(index) >= line;\r\n }\r\n findIndex(line) {\r\n let low = 0, high = this._startIndexes.length;\r\n if (high === 0) {\r\n return -1; // no children\r\n }\r\n while (low < high) {\r\n let mid = Math.floor((low + high) / 2);\r\n if (line < this.getStartLineNumber(mid)) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low - 1;\r\n }\r\n findRange(line) {\r\n let index = this.findIndex(line);\r\n if (index >= 0) {\r\n let endLineNumber = this.getEndLineNumber(index);\r\n if (endLineNumber >= line) {\r\n return index;\r\n }\r\n index = this.getParentIndex(index);\r\n while (index !== -1) {\r\n if (this.contains(index, line)) {\r\n return index;\r\n }\r\n index = this.getParentIndex(index);\r\n }\r\n }\r\n return -1;\r\n }\r\n toString() {\r\n let res = [];\r\n for (let i = 0; i < this.length; i++) {\r\n res[i] = `[${this.isCollapsed(i) ? '+' : '-'}] ${this.getStartLineNumber(i)}/${this.getEndLineNumber(i)}`;\r\n }\r\n return res.join(', ');\r\n }\r\n}\r\nexport class FoldingRegion {\r\n constructor(ranges, index) {\r\n this.ranges = ranges;\r\n this.index = index;\r\n }\r\n get startLineNumber() {\r\n return this.ranges.getStartLineNumber(this.index);\r\n }\r\n get endLineNumber() {\r\n return this.ranges.getEndLineNumber(this.index);\r\n }\r\n get regionIndex() {\r\n return this.index;\r\n }\r\n get parentIndex() {\r\n return this.ranges.getParentIndex(this.index);\r\n }\r\n get isCollapsed() {\r\n return this.ranges.isCollapsed(this.index);\r\n }\r\n containedBy(range) {\r\n return range.startLineNumber <= this.startLineNumber && range.endLineNumber >= this.endLineNumber;\r\n }\r\n containsLine(lineNumber) {\r\n return this.startLineNumber <= lineNumber && lineNumber <= this.endLineNumber;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { findFirstInSorted } from '../../../base/common/arrays.js';\r\nexport class HiddenRangeModel {\r\n constructor(model) {\r\n this._updateEventEmitter = new Emitter();\r\n this._foldingModel = model;\r\n this._foldingModelListener = model.onDidChange(_ => this.updateHiddenRanges());\r\n this._hiddenRanges = [];\r\n if (model.regions.length) {\r\n this.updateHiddenRanges();\r\n }\r\n }\r\n get onDidChange() { return this._updateEventEmitter.event; }\r\n get hiddenRanges() { return this._hiddenRanges; }\r\n updateHiddenRanges() {\r\n let updateHiddenAreas = false;\r\n let newHiddenAreas = [];\r\n let i = 0; // index into hidden\r\n let k = 0;\r\n let lastCollapsedStart = Number.MAX_VALUE;\r\n let lastCollapsedEnd = -1;\r\n let ranges = this._foldingModel.regions;\r\n for (; i < ranges.length; i++) {\r\n if (!ranges.isCollapsed(i)) {\r\n continue;\r\n }\r\n let startLineNumber = ranges.getStartLineNumber(i) + 1; // the first line is not hidden\r\n let endLineNumber = ranges.getEndLineNumber(i);\r\n if (lastCollapsedStart <= startLineNumber && endLineNumber <= lastCollapsedEnd) {\r\n // ignore ranges contained in collapsed regions\r\n continue;\r\n }\r\n if (!updateHiddenAreas && k < this._hiddenRanges.length && this._hiddenRanges[k].startLineNumber === startLineNumber && this._hiddenRanges[k].endLineNumber === endLineNumber) {\r\n // reuse the old ranges\r\n newHiddenAreas.push(this._hiddenRanges[k]);\r\n k++;\r\n }\r\n else {\r\n updateHiddenAreas = true;\r\n newHiddenAreas.push(new Range(startLineNumber, 1, endLineNumber, 1));\r\n }\r\n lastCollapsedStart = startLineNumber;\r\n lastCollapsedEnd = endLineNumber;\r\n }\r\n if (updateHiddenAreas || k < this._hiddenRanges.length) {\r\n this.applyHiddenRanges(newHiddenAreas);\r\n }\r\n }\r\n applyMemento(state) {\r\n if (!Array.isArray(state) || state.length === 0) {\r\n return false;\r\n }\r\n let hiddenRanges = [];\r\n for (let r of state) {\r\n if (!r.startLineNumber || !r.endLineNumber) {\r\n return false;\r\n }\r\n hiddenRanges.push(new Range(r.startLineNumber + 1, 1, r.endLineNumber, 1));\r\n }\r\n this.applyHiddenRanges(hiddenRanges);\r\n return true;\r\n }\r\n /**\r\n * Collapse state memento, for persistence only, only used if folding model is not yet initialized\r\n */\r\n getMemento() {\r\n return this._hiddenRanges.map(r => ({ startLineNumber: r.startLineNumber - 1, endLineNumber: r.endLineNumber }));\r\n }\r\n applyHiddenRanges(newHiddenAreas) {\r\n this._hiddenRanges = newHiddenAreas;\r\n this._updateEventEmitter.fire(newHiddenAreas);\r\n }\r\n hasRanges() {\r\n return this._hiddenRanges.length > 0;\r\n }\r\n isHidden(line) {\r\n return findRange(this._hiddenRanges, line) !== null;\r\n }\r\n adjustSelections(selections) {\r\n let hasChanges = false;\r\n let editorModel = this._foldingModel.textModel;\r\n let lastRange = null;\r\n let adjustLine = (line) => {\r\n if (!lastRange || !isInside(line, lastRange)) {\r\n lastRange = findRange(this._hiddenRanges, line);\r\n }\r\n if (lastRange) {\r\n return lastRange.startLineNumber - 1;\r\n }\r\n return null;\r\n };\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let selection = selections[i];\r\n let adjustedStartLine = adjustLine(selection.startLineNumber);\r\n if (adjustedStartLine) {\r\n selection = selection.setStartPosition(adjustedStartLine, editorModel.getLineMaxColumn(adjustedStartLine));\r\n hasChanges = true;\r\n }\r\n let adjustedEndLine = adjustLine(selection.endLineNumber);\r\n if (adjustedEndLine) {\r\n selection = selection.setEndPosition(adjustedEndLine, editorModel.getLineMaxColumn(adjustedEndLine));\r\n hasChanges = true;\r\n }\r\n selections[i] = selection;\r\n }\r\n return hasChanges;\r\n }\r\n dispose() {\r\n if (this.hiddenRanges.length > 0) {\r\n this._hiddenRanges = [];\r\n this._updateEventEmitter.fire(this._hiddenRanges);\r\n }\r\n if (this._foldingModelListener) {\r\n this._foldingModelListener.dispose();\r\n this._foldingModelListener = null;\r\n }\r\n }\r\n}\r\nfunction isInside(line, range) {\r\n return line >= range.startLineNumber && line <= range.endLineNumber;\r\n}\r\nfunction findRange(ranges, line) {\r\n let i = findFirstInSorted(ranges, r => line < r.startLineNumber) - 1;\r\n if (i >= 0 && ranges[i].endLineNumber >= line) {\r\n return ranges[i];\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { FoldingRegions, MAX_LINE_NUMBER } from './foldingRanges.js';\r\nimport { TextModel } from '../../common/model/textModel.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nconst MAX_FOLDING_REGIONS_FOR_INDENT_LIMIT = 5000;\r\nexport const ID_INDENT_PROVIDER = 'indent';\r\nexport class IndentRangeProvider {\r\n constructor(editorModel) {\r\n this.editorModel = editorModel;\r\n this.id = ID_INDENT_PROVIDER;\r\n }\r\n dispose() {\r\n }\r\n compute(cancelationToken) {\r\n let foldingRules = LanguageConfigurationRegistry.getFoldingRules(this.editorModel.getLanguageIdentifier().id);\r\n let offSide = foldingRules && !!foldingRules.offSide;\r\n let markers = foldingRules && foldingRules.markers;\r\n return Promise.resolve(computeRanges(this.editorModel, offSide, markers));\r\n }\r\n}\r\n// public only for testing\r\nexport class RangesCollector {\r\n constructor(foldingRangesLimit) {\r\n this._startIndexes = [];\r\n this._endIndexes = [];\r\n this._indentOccurrences = [];\r\n this._length = 0;\r\n this._foldingRangesLimit = foldingRangesLimit;\r\n }\r\n insertFirst(startLineNumber, endLineNumber, indent) {\r\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\r\n return;\r\n }\r\n let index = this._length;\r\n this._startIndexes[index] = startLineNumber;\r\n this._endIndexes[index] = endLineNumber;\r\n this._length++;\r\n if (indent < 1000) {\r\n this._indentOccurrences[indent] = (this._indentOccurrences[indent] || 0) + 1;\r\n }\r\n }\r\n toIndentRanges(model) {\r\n if (this._length <= this._foldingRangesLimit) {\r\n // reverse and create arrays of the exact length\r\n let startIndexes = new Uint32Array(this._length);\r\n let endIndexes = new Uint32Array(this._length);\r\n for (let i = this._length - 1, k = 0; i >= 0; i--, k++) {\r\n startIndexes[k] = this._startIndexes[i];\r\n endIndexes[k] = this._endIndexes[i];\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes);\r\n }\r\n else {\r\n let entries = 0;\r\n let maxIndent = this._indentOccurrences.length;\r\n for (let i = 0; i < this._indentOccurrences.length; i++) {\r\n let n = this._indentOccurrences[i];\r\n if (n) {\r\n if (n + entries > this._foldingRangesLimit) {\r\n maxIndent = i;\r\n break;\r\n }\r\n entries += n;\r\n }\r\n }\r\n const tabSize = model.getOptions().tabSize;\r\n // reverse and create arrays of the exact length\r\n let startIndexes = new Uint32Array(this._foldingRangesLimit);\r\n let endIndexes = new Uint32Array(this._foldingRangesLimit);\r\n for (let i = this._length - 1, k = 0; i >= 0; i--) {\r\n let startIndex = this._startIndexes[i];\r\n let lineContent = model.getLineContent(startIndex);\r\n let indent = TextModel.computeIndentLevel(lineContent, tabSize);\r\n if (indent < maxIndent || (indent === maxIndent && entries++ < this._foldingRangesLimit)) {\r\n startIndexes[k] = startIndex;\r\n endIndexes[k] = this._endIndexes[i];\r\n k++;\r\n }\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes);\r\n }\r\n }\r\n}\r\nexport function computeRanges(model, offSide, markers, foldingRangesLimit = MAX_FOLDING_REGIONS_FOR_INDENT_LIMIT) {\r\n const tabSize = model.getOptions().tabSize;\r\n let result = new RangesCollector(foldingRangesLimit);\r\n let pattern = undefined;\r\n if (markers) {\r\n pattern = new RegExp(`(${markers.start.source})|(?:${markers.end.source})`);\r\n }\r\n let previousRegions = [];\r\n let line = model.getLineCount() + 1;\r\n previousRegions.push({ indent: -1, endAbove: line, line }); // sentinel, to make sure there's at least one entry\r\n for (let line = model.getLineCount(); line > 0; line--) {\r\n let lineContent = model.getLineContent(line);\r\n let indent = TextModel.computeIndentLevel(lineContent, tabSize);\r\n let previous = previousRegions[previousRegions.length - 1];\r\n if (indent === -1) {\r\n if (offSide) {\r\n // for offSide languages, empty lines are associated to the previous block\r\n // note: the next block is already written to the results, so this only\r\n // impacts the end position of the block before\r\n previous.endAbove = line;\r\n }\r\n continue; // only whitespace\r\n }\r\n let m;\r\n if (pattern && (m = lineContent.match(pattern))) {\r\n // folding pattern match\r\n if (m[1]) { // start pattern match\r\n // discard all regions until the folding pattern\r\n let i = previousRegions.length - 1;\r\n while (i > 0 && previousRegions[i].indent !== -2) {\r\n i--;\r\n }\r\n if (i > 0) {\r\n previousRegions.length = i + 1;\r\n previous = previousRegions[i];\r\n // new folding range from pattern, includes the end line\r\n result.insertFirst(line, previous.line, indent);\r\n previous.line = line;\r\n previous.indent = indent;\r\n previous.endAbove = line;\r\n continue;\r\n }\r\n else {\r\n // no end marker found, treat line as a regular line\r\n }\r\n }\r\n else { // end pattern match\r\n previousRegions.push({ indent: -2, endAbove: line, line });\r\n continue;\r\n }\r\n }\r\n if (previous.indent > indent) {\r\n // discard all regions with larger indent\r\n do {\r\n previousRegions.pop();\r\n previous = previousRegions[previousRegions.length - 1];\r\n } while (previous.indent > indent);\r\n // new folding range\r\n let endLineNumber = previous.endAbove - 1;\r\n if (endLineNumber - line >= 1) { // needs at east size 1\r\n result.insertFirst(line, endLineNumber, indent);\r\n }\r\n }\r\n if (previous.indent === indent) {\r\n previous.endAbove = line;\r\n }\r\n else { // previous.indent < indent\r\n // new region with a bigger indent\r\n previousRegions.push({ indent, endAbove: line, line });\r\n }\r\n }\r\n return result.toIndentRanges(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { sanitizeRanges } from './syntaxRangeProvider.js';\r\nexport const ID_INIT_PROVIDER = 'init';\r\nexport class InitializingRangeProvider {\r\n constructor(editorModel, initialRanges, onTimeout, timeoutTime) {\r\n this.editorModel = editorModel;\r\n this.id = ID_INIT_PROVIDER;\r\n if (initialRanges.length) {\r\n let toDecorationRange = (range) => {\r\n return {\r\n range: {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: 0,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: editorModel.getLineLength(range.endLineNumber)\r\n },\r\n options: {\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */\r\n }\r\n };\r\n };\r\n this.decorationIds = editorModel.deltaDecorations([], initialRanges.map(toDecorationRange));\r\n this.timeout = setTimeout(onTimeout, timeoutTime);\r\n }\r\n }\r\n dispose() {\r\n if (this.decorationIds) {\r\n this.editorModel.deltaDecorations(this.decorationIds, []);\r\n this.decorationIds = undefined;\r\n }\r\n if (typeof this.timeout === 'number') {\r\n clearTimeout(this.timeout);\r\n this.timeout = undefined;\r\n }\r\n }\r\n compute(cancelationToken) {\r\n let foldingRangeData = [];\r\n if (this.decorationIds) {\r\n for (let id of this.decorationIds) {\r\n let range = this.editorModel.getDecorationRange(id);\r\n if (range) {\r\n foldingRangeData.push({ start: range.startLineNumber, end: range.endLineNumber, rank: 1 });\r\n }\r\n }\r\n }\r\n return Promise.resolve(sanitizeRanges(foldingRangeData, Number.MAX_VALUE));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { MAX_LINE_NUMBER, FoldingRegions } from './foldingRanges.js';\r\nconst MAX_FOLDING_REGIONS = 5000;\r\nconst foldingContext = {};\r\nexport const ID_SYNTAX_PROVIDER = 'syntax';\r\nexport class SyntaxRangeProvider {\r\n constructor(editorModel, providers, limit = MAX_FOLDING_REGIONS) {\r\n this.editorModel = editorModel;\r\n this.providers = providers;\r\n this.limit = limit;\r\n this.id = ID_SYNTAX_PROVIDER;\r\n }\r\n compute(cancellationToken) {\r\n return collectSyntaxRanges(this.providers, this.editorModel, cancellationToken).then(ranges => {\r\n if (ranges) {\r\n let res = sanitizeRanges(ranges, this.limit);\r\n return res;\r\n }\r\n return null;\r\n });\r\n }\r\n dispose() {\r\n }\r\n}\r\nfunction collectSyntaxRanges(providers, model, cancellationToken) {\r\n let rangeData = null;\r\n let promises = providers.map((provider, i) => {\r\n return Promise.resolve(provider.provideFoldingRanges(model, foldingContext, cancellationToken)).then(ranges => {\r\n if (cancellationToken.isCancellationRequested) {\r\n return;\r\n }\r\n if (Array.isArray(ranges)) {\r\n if (!Array.isArray(rangeData)) {\r\n rangeData = [];\r\n }\r\n let nLines = model.getLineCount();\r\n for (let r of ranges) {\r\n if (r.start > 0 && r.end > r.start && r.end <= nLines) {\r\n rangeData.push({ start: r.start, end: r.end, rank: i, kind: r.kind });\r\n }\r\n }\r\n }\r\n }, onUnexpectedExternalError);\r\n });\r\n return Promise.all(promises).then(_ => {\r\n return rangeData;\r\n });\r\n}\r\nexport class RangesCollector {\r\n constructor(foldingRangesLimit) {\r\n this._startIndexes = [];\r\n this._endIndexes = [];\r\n this._nestingLevels = [];\r\n this._nestingLevelCounts = [];\r\n this._types = [];\r\n this._length = 0;\r\n this._foldingRangesLimit = foldingRangesLimit;\r\n }\r\n add(startLineNumber, endLineNumber, type, nestingLevel) {\r\n if (startLineNumber > MAX_LINE_NUMBER || endLineNumber > MAX_LINE_NUMBER) {\r\n return;\r\n }\r\n let index = this._length;\r\n this._startIndexes[index] = startLineNumber;\r\n this._endIndexes[index] = endLineNumber;\r\n this._nestingLevels[index] = nestingLevel;\r\n this._types[index] = type;\r\n this._length++;\r\n if (nestingLevel < 30) {\r\n this._nestingLevelCounts[nestingLevel] = (this._nestingLevelCounts[nestingLevel] || 0) + 1;\r\n }\r\n }\r\n toIndentRanges() {\r\n if (this._length <= this._foldingRangesLimit) {\r\n let startIndexes = new Uint32Array(this._length);\r\n let endIndexes = new Uint32Array(this._length);\r\n for (let i = 0; i < this._length; i++) {\r\n startIndexes[i] = this._startIndexes[i];\r\n endIndexes[i] = this._endIndexes[i];\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes, this._types);\r\n }\r\n else {\r\n let entries = 0;\r\n let maxLevel = this._nestingLevelCounts.length;\r\n for (let i = 0; i < this._nestingLevelCounts.length; i++) {\r\n let n = this._nestingLevelCounts[i];\r\n if (n) {\r\n if (n + entries > this._foldingRangesLimit) {\r\n maxLevel = i;\r\n break;\r\n }\r\n entries += n;\r\n }\r\n }\r\n let startIndexes = new Uint32Array(this._foldingRangesLimit);\r\n let endIndexes = new Uint32Array(this._foldingRangesLimit);\r\n let types = [];\r\n for (let i = 0, k = 0; i < this._length; i++) {\r\n let level = this._nestingLevels[i];\r\n if (level < maxLevel || (level === maxLevel && entries++ < this._foldingRangesLimit)) {\r\n startIndexes[k] = this._startIndexes[i];\r\n endIndexes[k] = this._endIndexes[i];\r\n types[k] = this._types[i];\r\n k++;\r\n }\r\n }\r\n return new FoldingRegions(startIndexes, endIndexes, types);\r\n }\r\n }\r\n}\r\nexport function sanitizeRanges(rangeData, limit) {\r\n let sorted = rangeData.sort((d1, d2) => {\r\n let diff = d1.start - d2.start;\r\n if (diff === 0) {\r\n diff = d1.rank - d2.rank;\r\n }\r\n return diff;\r\n });\r\n let collector = new RangesCollector(limit);\r\n let top = undefined;\r\n let previous = [];\r\n for (let entry of sorted) {\r\n if (!top) {\r\n top = entry;\r\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\r\n }\r\n else {\r\n if (entry.start > top.start) {\r\n if (entry.end <= top.end) {\r\n previous.push(top);\r\n top = entry;\r\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\r\n }\r\n else {\r\n if (entry.start > top.end) {\r\n do {\r\n top = previous.pop();\r\n } while (top && entry.start > top.end);\r\n if (top) {\r\n previous.push(top);\r\n }\r\n top = entry;\r\n }\r\n collector.add(entry.start, entry.end, entry.kind && entry.kind.value, previous.length);\r\n }\r\n }\r\n }\r\n }\r\n return collector.toIndentRanges();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { EditorZoom } from '../../common/config/editorZoom.js';\r\nclass EditorFontZoomIn extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.fontZoomIn',\r\n label: nls.localize('EditorFontZoomIn.label', \"Editor Font Zoom In\"),\r\n alias: 'Editor Font Zoom In',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n EditorZoom.setZoomLevel(EditorZoom.getZoomLevel() + 1);\r\n }\r\n}\r\nclass EditorFontZoomOut extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.fontZoomOut',\r\n label: nls.localize('EditorFontZoomOut.label', \"Editor Font Zoom Out\"),\r\n alias: 'Editor Font Zoom Out',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n EditorZoom.setZoomLevel(EditorZoom.getZoomLevel() - 1);\r\n }\r\n}\r\nclass EditorFontZoomReset extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.fontZoomReset',\r\n label: nls.localize('EditorFontZoomReset.label', \"Editor Font Zoom Reset\"),\r\n alias: 'Editor Font Zoom Reset',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n EditorZoom.setZoomLevel(0);\r\n }\r\n}\r\nregisterEditorAction(EditorFontZoomIn);\r\nregisterEditorAction(EditorFontZoomOut);\r\nregisterEditorAction(EditorFontZoomReset);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { asArray, isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { illegalArgument, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { DocumentFormattingEditProviderRegistry, DocumentRangeFormattingEditProviderRegistry, OnTypeFormattingEditProviderRegistry } from '../../common/modes.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { FormattingEdit } from './formattingEdit.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ExtensionIdentifier } from '../../../platform/extensions/common/extensions.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nexport function alertFormattingEdits(edits) {\r\n edits = edits.filter(edit => edit.range);\r\n if (!edits.length) {\r\n return;\r\n }\r\n let { range } = edits[0];\r\n for (let i = 1; i < edits.length; i++) {\r\n range = Range.plusRange(range, edits[i].range);\r\n }\r\n const { startLineNumber, endLineNumber } = range;\r\n if (startLineNumber === endLineNumber) {\r\n if (edits.length === 1) {\r\n alert(nls.localize('hint11', \"Made 1 formatting edit on line {0}\", startLineNumber));\r\n }\r\n else {\r\n alert(nls.localize('hintn1', \"Made {0} formatting edits on line {1}\", edits.length, startLineNumber));\r\n }\r\n }\r\n else {\r\n if (edits.length === 1) {\r\n alert(nls.localize('hint1n', \"Made 1 formatting edit between lines {0} and {1}\", startLineNumber, endLineNumber));\r\n }\r\n else {\r\n alert(nls.localize('hintnn', \"Made {0} formatting edits between lines {1} and {2}\", edits.length, startLineNumber, endLineNumber));\r\n }\r\n }\r\n}\r\nexport function getRealAndSyntheticDocumentFormattersOrdered(model) {\r\n const result = [];\r\n const seen = new Set();\r\n // (1) add all document formatter\r\n const docFormatter = DocumentFormattingEditProviderRegistry.ordered(model);\r\n for (const formatter of docFormatter) {\r\n result.push(formatter);\r\n if (formatter.extensionId) {\r\n seen.add(ExtensionIdentifier.toKey(formatter.extensionId));\r\n }\r\n }\r\n // (2) add all range formatter as document formatter (unless the same extension already did that)\r\n const rangeFormatter = DocumentRangeFormattingEditProviderRegistry.ordered(model);\r\n for (const formatter of rangeFormatter) {\r\n if (formatter.extensionId) {\r\n if (seen.has(ExtensionIdentifier.toKey(formatter.extensionId))) {\r\n continue;\r\n }\r\n seen.add(ExtensionIdentifier.toKey(formatter.extensionId));\r\n }\r\n result.push({\r\n displayName: formatter.displayName,\r\n extensionId: formatter.extensionId,\r\n provideDocumentFormattingEdits(model, options, token) {\r\n return formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\r\n }\r\n });\r\n }\r\n return result;\r\n}\r\nexport class FormattingConflicts {\r\n static select(formatter, document, mode) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (formatter.length === 0) {\r\n return undefined;\r\n }\r\n const selector = Iterable.first(FormattingConflicts._selectors);\r\n if (selector) {\r\n return yield selector(formatter, document, mode);\r\n }\r\n return formatter[0];\r\n });\r\n }\r\n}\r\nFormattingConflicts._selectors = new LinkedList();\r\nexport function formatDocumentRangesWithSelectedProvider(accessor, editorOrModel, rangeOrRanges, mode, progress, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const instaService = accessor.get(IInstantiationService);\r\n const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\r\n const provider = DocumentRangeFormattingEditProviderRegistry.ordered(model);\r\n const selected = yield FormattingConflicts.select(provider, model, mode);\r\n if (selected) {\r\n progress.report(selected);\r\n yield instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token);\r\n }\r\n });\r\n}\r\nexport function formatDocumentRangesWithProvider(accessor, provider, editorOrModel, rangeOrRanges, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const workerService = accessor.get(IEditorWorkerService);\r\n let model;\r\n let cts;\r\n if (isCodeEditor(editorOrModel)) {\r\n model = editorOrModel.getModel();\r\n cts = new EditorStateCancellationTokenSource(editorOrModel, 1 /* Value */ | 4 /* Position */, undefined, token);\r\n }\r\n else {\r\n model = editorOrModel;\r\n cts = new TextModelCancellationTokenSource(editorOrModel, token);\r\n }\r\n // make sure that ranges don't overlap nor touch each other\r\n let ranges = [];\r\n let len = 0;\r\n for (let range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\r\n if (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\r\n ranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\r\n }\r\n else {\r\n len = ranges.push(range);\r\n }\r\n }\r\n const allEdits = [];\r\n for (let range of ranges) {\r\n try {\r\n const rawEdits = yield provider.provideDocumentRangeFormattingEdits(model, range, model.getFormattingOptions(), cts.token);\r\n const minEdits = yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n if (minEdits) {\r\n allEdits.push(...minEdits);\r\n }\r\n if (cts.token.isCancellationRequested) {\r\n return true;\r\n }\r\n }\r\n finally {\r\n cts.dispose();\r\n }\r\n }\r\n if (allEdits.length === 0) {\r\n return false;\r\n }\r\n if (isCodeEditor(editorOrModel)) {\r\n // use editor to apply edits\r\n FormattingEdit.execute(editorOrModel, allEdits, true);\r\n alertFormattingEdits(allEdits);\r\n editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), 1 /* Immediate */);\r\n }\r\n else {\r\n // use model to apply edits\r\n const [{ range }] = allEdits;\r\n const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n model.pushEditOperations([initialSelection], allEdits.map(edit => {\r\n return {\r\n text: edit.text,\r\n range: Range.lift(edit.range),\r\n forceMoveMarkers: true\r\n };\r\n }), undoEdits => {\r\n for (const { range } of undoEdits) {\r\n if (Range.areIntersectingOrTouching(range, initialSelection)) {\r\n return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n return true;\r\n });\r\n}\r\nexport function formatDocumentWithSelectedProvider(accessor, editorOrModel, mode, progress, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const instaService = accessor.get(IInstantiationService);\r\n const model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\r\n const provider = getRealAndSyntheticDocumentFormattersOrdered(model);\r\n const selected = yield FormattingConflicts.select(provider, model, mode);\r\n if (selected) {\r\n progress.report(selected);\r\n yield instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token);\r\n }\r\n });\r\n}\r\nexport function formatDocumentWithProvider(accessor, provider, editorOrModel, mode, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const workerService = accessor.get(IEditorWorkerService);\r\n let model;\r\n let cts;\r\n if (isCodeEditor(editorOrModel)) {\r\n model = editorOrModel.getModel();\r\n cts = new EditorStateCancellationTokenSource(editorOrModel, 1 /* Value */ | 4 /* Position */, undefined, token);\r\n }\r\n else {\r\n model = editorOrModel;\r\n cts = new TextModelCancellationTokenSource(editorOrModel, token);\r\n }\r\n let edits;\r\n try {\r\n const rawEdits = yield provider.provideDocumentFormattingEdits(model, model.getFormattingOptions(), cts.token);\r\n edits = yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n if (cts.token.isCancellationRequested) {\r\n return true;\r\n }\r\n }\r\n finally {\r\n cts.dispose();\r\n }\r\n if (!edits || edits.length === 0) {\r\n return false;\r\n }\r\n if (isCodeEditor(editorOrModel)) {\r\n // use editor to apply edits\r\n FormattingEdit.execute(editorOrModel, edits, mode !== 2 /* Silent */);\r\n if (mode !== 2 /* Silent */) {\r\n alertFormattingEdits(edits);\r\n editorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), 1 /* Immediate */);\r\n }\r\n }\r\n else {\r\n // use model to apply edits\r\n const [{ range }] = edits;\r\n const initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n model.pushEditOperations([initialSelection], edits.map(edit => {\r\n return {\r\n text: edit.text,\r\n range: Range.lift(edit.range),\r\n forceMoveMarkers: true\r\n };\r\n }), undoEdits => {\r\n for (const { range } of undoEdits) {\r\n if (Range.areIntersectingOrTouching(range, initialSelection)) {\r\n return [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n return true;\r\n });\r\n}\r\nexport function getDocumentRangeFormattingEditsUntilResult(workerService, model, range, options, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const providers = DocumentRangeFormattingEditProviderRegistry.ordered(model);\r\n for (const provider of providers) {\r\n let rawEdits = yield Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\r\n if (isNonEmptyArray(rawEdits)) {\r\n return yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n }\r\n }\r\n return undefined;\r\n });\r\n}\r\nexport function getDocumentFormattingEditsUntilResult(workerService, model, options, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const providers = getRealAndSyntheticDocumentFormattersOrdered(model);\r\n for (const provider of providers) {\r\n let rawEdits = yield Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\r\n if (isNonEmptyArray(rawEdits)) {\r\n return yield workerService.computeMoreMinimalEdits(model.uri, rawEdits);\r\n }\r\n }\r\n return undefined;\r\n });\r\n}\r\nexport function getOnTypeFormattingEdits(workerService, model, position, ch, options) {\r\n const providers = OnTypeFormattingEditProviderRegistry.ordered(model);\r\n if (providers.length === 0) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\r\n return Promise.resolve(undefined);\r\n }\r\n return Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, CancellationToken.None)).catch(onUnexpectedExternalError).then(edits => {\r\n return workerService.computeMoreMinimalEdits(model.uri, edits);\r\n });\r\n}\r\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', function (accessor, ...args) {\r\n const [resource, range, options] = args;\r\n assertType(URI.isUri(resource));\r\n assertType(Range.isIRange(range));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument('resource');\r\n }\r\n return getDocumentRangeFormattingEditsUntilResult(accessor.get(IEditorWorkerService), model, Range.lift(range), options, CancellationToken.None);\r\n});\r\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', function (accessor, ...args) {\r\n const [resource, options] = args;\r\n assertType(URI.isUri(resource));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument('resource');\r\n }\r\n return getDocumentFormattingEditsUntilResult(accessor.get(IEditorWorkerService), model, options, CancellationToken.None);\r\n});\r\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', function (accessor, ...args) {\r\n const [resource, position, ch, options] = args;\r\n assertType(URI.isUri(resource));\r\n assertType(Position.isIPosition(position));\r\n assertType(typeof ch === 'string');\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (!model) {\r\n throw illegalArgument('resource');\r\n }\r\n return getOnTypeFormattingEdits(accessor.get(IEditorWorkerService), model, Position.lift(position), ch, options);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { CharacterSet } from '../../common/core/characterClassifier.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { DocumentRangeFormattingEditProviderRegistry, OnTypeFormattingEditProviderRegistry } from '../../common/modes.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { getOnTypeFormattingEdits, alertFormattingEdits, formatDocumentRangesWithSelectedProvider, formatDocumentWithSelectedProvider } from './format.js';\r\nimport { FormattingEdit } from './formattingEdit.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Progress, IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nlet FormatOnType = class FormatOnType {\r\n constructor(editor, _workerService) {\r\n this._workerService = _workerService;\r\n this._callOnDispose = new DisposableStore();\r\n this._callOnModel = new DisposableStore();\r\n this._editor = editor;\r\n this._callOnDispose.add(editor.onDidChangeConfiguration(() => this._update()));\r\n this._callOnDispose.add(editor.onDidChangeModel(() => this._update()));\r\n this._callOnDispose.add(editor.onDidChangeModelLanguage(() => this._update()));\r\n this._callOnDispose.add(OnTypeFormattingEditProviderRegistry.onDidChange(this._update, this));\r\n }\r\n dispose() {\r\n this._callOnDispose.dispose();\r\n this._callOnModel.dispose();\r\n }\r\n _update() {\r\n // clean up\r\n this._callOnModel.clear();\r\n // we are disabled\r\n if (!this._editor.getOption(41 /* formatOnType */)) {\r\n return;\r\n }\r\n // no model\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n // no support\r\n const [support] = OnTypeFormattingEditProviderRegistry.ordered(model);\r\n if (!support || !support.autoFormatTriggerCharacters) {\r\n return;\r\n }\r\n // register typing listeners that will trigger the format\r\n let triggerChars = new CharacterSet();\r\n for (let ch of support.autoFormatTriggerCharacters) {\r\n triggerChars.add(ch.charCodeAt(0));\r\n }\r\n this._callOnModel.add(this._editor.onDidType((text) => {\r\n let lastCharCode = text.charCodeAt(text.length - 1);\r\n if (triggerChars.has(lastCharCode)) {\r\n this._trigger(String.fromCharCode(lastCharCode));\r\n }\r\n }));\r\n }\r\n _trigger(ch) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n if (this._editor.getSelections().length > 1) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const position = this._editor.getPosition();\r\n let canceled = false;\r\n // install a listener that checks if edits happens before the\r\n // position on which we format right now. If so, we won't\r\n // apply the format edits\r\n const unbind = this._editor.onDidChangeModelContent((e) => {\r\n if (e.isFlush) {\r\n // a model.setValue() was called\r\n // cancel only once\r\n canceled = true;\r\n unbind.dispose();\r\n return;\r\n }\r\n for (let i = 0, len = e.changes.length; i < len; i++) {\r\n const change = e.changes[i];\r\n if (change.range.endLineNumber <= position.lineNumber) {\r\n // cancel only once\r\n canceled = true;\r\n unbind.dispose();\r\n return;\r\n }\r\n }\r\n });\r\n getOnTypeFormattingEdits(this._workerService, model, position, ch, model.getFormattingOptions()).then(edits => {\r\n unbind.dispose();\r\n if (canceled) {\r\n return;\r\n }\r\n if (isNonEmptyArray(edits)) {\r\n FormattingEdit.execute(this._editor, edits, true);\r\n alertFormattingEdits(edits);\r\n }\r\n }, (err) => {\r\n unbind.dispose();\r\n throw err;\r\n });\r\n }\r\n};\r\nFormatOnType.ID = 'editor.contrib.autoFormat';\r\nFormatOnType = __decorate([\r\n __param(1, IEditorWorkerService)\r\n], FormatOnType);\r\nlet FormatOnPaste = class FormatOnPaste {\r\n constructor(editor, _instantiationService) {\r\n this.editor = editor;\r\n this._instantiationService = _instantiationService;\r\n this._callOnDispose = new DisposableStore();\r\n this._callOnModel = new DisposableStore();\r\n this._callOnDispose.add(editor.onDidChangeConfiguration(() => this._update()));\r\n this._callOnDispose.add(editor.onDidChangeModel(() => this._update()));\r\n this._callOnDispose.add(editor.onDidChangeModelLanguage(() => this._update()));\r\n this._callOnDispose.add(DocumentRangeFormattingEditProviderRegistry.onDidChange(this._update, this));\r\n }\r\n dispose() {\r\n this._callOnDispose.dispose();\r\n this._callOnModel.dispose();\r\n }\r\n _update() {\r\n // clean up\r\n this._callOnModel.clear();\r\n // we are disabled\r\n if (!this.editor.getOption(40 /* formatOnPaste */)) {\r\n return;\r\n }\r\n // no model\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n // no formatter\r\n if (!DocumentRangeFormattingEditProviderRegistry.has(this.editor.getModel())) {\r\n return;\r\n }\r\n this._callOnModel.add(this.editor.onDidPaste(({ range }) => this._trigger(range)));\r\n }\r\n _trigger(range) {\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n if (this.editor.getSelections().length > 1) {\r\n return;\r\n }\r\n this._instantiationService.invokeFunction(formatDocumentRangesWithSelectedProvider, this.editor, range, 2 /* Silent */, Progress.None, CancellationToken.None).catch(onUnexpectedError);\r\n }\r\n};\r\nFormatOnPaste.ID = 'editor.contrib.formatOnPaste';\r\nFormatOnPaste = __decorate([\r\n __param(1, IInstantiationService)\r\n], FormatOnPaste);\r\nclass FormatDocumentAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.formatDocument',\r\n label: nls.localize('formatDocument.label', \"Format Document\"),\r\n alias: 'Format Document',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.notInCompositeEditor, EditorContextKeys.writable, EditorContextKeys.hasDocumentFormattingProvider),\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.editorTextFocus, EditorContextKeys.hasDocumentFormattingProvider),\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 36 /* KEY_F */,\r\n linux: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 39 /* KEY_I */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n when: EditorContextKeys.hasDocumentFormattingProvider,\r\n group: '1_modification',\r\n order: 1.3\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (editor.hasModel()) {\r\n const instaService = accessor.get(IInstantiationService);\r\n const progressService = accessor.get(IEditorProgressService);\r\n yield progressService.showWhile(instaService.invokeFunction(formatDocumentWithSelectedProvider, editor, 1 /* Explicit */, Progress.None, CancellationToken.None), 250);\r\n }\r\n });\r\n }\r\n}\r\nclass FormatSelectionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.formatSelection',\r\n label: nls.localize('formatSelection.label', \"Format Selection\"),\r\n alias: 'Format Selection',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasDocumentSelectionFormattingProvider),\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.editorTextFocus, EditorContextKeys.hasDocumentSelectionFormattingProvider),\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 36 /* KEY_F */),\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n when: ContextKeyExpr.and(EditorContextKeys.hasDocumentSelectionFormattingProvider, EditorContextKeys.hasNonEmptySelection),\r\n group: '1_modification',\r\n order: 1.31\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const instaService = accessor.get(IInstantiationService);\r\n const model = editor.getModel();\r\n const ranges = editor.getSelections().map(range => {\r\n return range.isEmpty()\r\n ? new Range(range.startLineNumber, 1, range.startLineNumber, model.getLineMaxColumn(range.startLineNumber))\r\n : range;\r\n });\r\n const progressService = accessor.get(IEditorProgressService);\r\n yield progressService.showWhile(instaService.invokeFunction(formatDocumentRangesWithSelectedProvider, editor, ranges, 1 /* Explicit */, Progress.None, CancellationToken.None), 250);\r\n });\r\n }\r\n}\r\nregisterEditorContribution(FormatOnType.ID, FormatOnType);\r\nregisterEditorContribution(FormatOnPaste.ID, FormatOnPaste);\r\nregisterEditorAction(FormatDocumentAction);\r\nregisterEditorAction(FormatSelectionAction);\r\n// this is the old format action that does both (format document OR format selection)\r\n// and we keep it here such that existing keybinding configurations etc will still work\r\nCommandsRegistry.registerCommand('editor.action.format', (accessor) => __awaiter(void 0, void 0, void 0, function* () {\r\n const editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (!editor || !editor.hasModel()) {\r\n return;\r\n }\r\n const commandService = accessor.get(ICommandService);\r\n if (editor.getSelection().isEmpty()) {\r\n yield commandService.executeCommand('editor.action.formatDocument');\r\n }\r\n else {\r\n yield commandService.executeCommand('editor.action.formatSelection');\r\n }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nexport class FormattingEdit {\r\n static _handleEolEdits(editor, edits) {\r\n let newEol = undefined;\r\n let singleEdits = [];\r\n for (let edit of edits) {\r\n if (typeof edit.eol === 'number') {\r\n newEol = edit.eol;\r\n }\r\n if (edit.range && typeof edit.text === 'string') {\r\n singleEdits.push(edit);\r\n }\r\n }\r\n if (typeof newEol === 'number') {\r\n if (editor.hasModel()) {\r\n editor.getModel().pushEOL(newEol);\r\n }\r\n }\r\n return singleEdits;\r\n }\r\n static _isFullModelReplaceEdit(editor, edit) {\r\n if (!editor.hasModel()) {\r\n return false;\r\n }\r\n const model = editor.getModel();\r\n const editRange = model.validateRange(edit.range);\r\n const fullModelRange = model.getFullModelRange();\r\n return fullModelRange.equalsRange(editRange);\r\n }\r\n static execute(editor, _edits, addUndoStops) {\r\n if (addUndoStops) {\r\n editor.pushUndoStop();\r\n }\r\n const edits = FormattingEdit._handleEolEdits(editor, _edits);\r\n if (edits.length === 1 && FormattingEdit._isFullModelReplaceEdit(editor, edits[0])) {\r\n // We use replace semantics and hope that markers stay put...\r\n editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text)));\r\n }\r\n else {\r\n editor.executeEdits('formatEditsCommand', edits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text)));\r\n }\r\n if (addUndoStops) {\r\n editor.pushUndoStop();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { registerEditorAction, registerEditorContribution, EditorAction, EditorCommand, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { MarkerNavigationWidget } from './gotoErrorWidget.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { Codicon, registerIcon } from '../../../base/common/codicons.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IMarkerNavigationService } from './markerNavigationService.js';\r\nlet MarkerController = class MarkerController {\r\n constructor(editor, _markerNavigationService, _contextKeyService, _editorService, _instantiationService) {\r\n this._markerNavigationService = _markerNavigationService;\r\n this._contextKeyService = _contextKeyService;\r\n this._editorService = _editorService;\r\n this._instantiationService = _instantiationService;\r\n this._sessionDispoables = new DisposableStore();\r\n this._editor = editor;\r\n this._widgetVisible = CONTEXT_MARKERS_NAVIGATION_VISIBLE.bindTo(this._contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(MarkerController.ID);\r\n }\r\n dispose() {\r\n this._cleanUp();\r\n this._sessionDispoables.dispose();\r\n }\r\n _cleanUp() {\r\n this._widgetVisible.reset();\r\n this._sessionDispoables.clear();\r\n this._widget = undefined;\r\n this._model = undefined;\r\n }\r\n _getOrCreateModel(uri) {\r\n if (this._model && this._model.matches(uri)) {\r\n return this._model;\r\n }\r\n let reusePosition = false;\r\n if (this._model) {\r\n reusePosition = true;\r\n this._cleanUp();\r\n }\r\n this._model = this._markerNavigationService.getMarkerList(uri);\r\n if (reusePosition) {\r\n this._model.move(true, this._editor.getModel(), this._editor.getPosition());\r\n }\r\n this._widget = this._instantiationService.createInstance(MarkerNavigationWidget, this._editor);\r\n this._widget.onDidClose(() => this.close(), this, this._sessionDispoables);\r\n this._widgetVisible.set(true);\r\n this._sessionDispoables.add(this._model);\r\n this._sessionDispoables.add(this._widget);\r\n // follow cursor\r\n this._sessionDispoables.add(this._editor.onDidChangeCursorPosition(e => {\r\n var _a, _b, _c;\r\n if (!((_a = this._model) === null || _a === void 0 ? void 0 : _a.selected) || !Range.containsPosition((_b = this._model) === null || _b === void 0 ? void 0 : _b.selected.marker, e.position)) {\r\n (_c = this._model) === null || _c === void 0 ? void 0 : _c.resetIndex();\r\n }\r\n }));\r\n // update markers\r\n this._sessionDispoables.add(this._model.onDidChange(() => {\r\n if (!this._widget || !this._widget.position || !this._model) {\r\n return;\r\n }\r\n const info = this._model.find(this._editor.getModel().uri, this._widget.position);\r\n if (info) {\r\n this._widget.updateMarker(info.marker);\r\n }\r\n else {\r\n this._widget.showStale();\r\n }\r\n }));\r\n // open related\r\n this._sessionDispoables.add(this._widget.onDidSelectRelatedInformation(related => {\r\n this._editorService.openCodeEditor({\r\n resource: related.resource,\r\n options: { pinned: true, revealIfOpened: true, selection: Range.lift(related).collapseToStart() }\r\n }, this._editor);\r\n this.close(false);\r\n }));\r\n this._sessionDispoables.add(this._editor.onDidChangeModel(() => this._cleanUp()));\r\n return this._model;\r\n }\r\n close(focusEditor = true) {\r\n this._cleanUp();\r\n if (focusEditor) {\r\n this._editor.focus();\r\n }\r\n }\r\n showAtMarker(marker) {\r\n if (this._editor.hasModel()) {\r\n const model = this._getOrCreateModel(this._editor.getModel().uri);\r\n model.resetIndex();\r\n model.move(true, this._editor.getModel(), new Position(marker.startLineNumber, marker.startColumn));\r\n if (model.selected) {\r\n this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\r\n }\r\n }\r\n }\r\n nagivate(next, multiFile) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._editor.hasModel()) {\r\n const model = this._getOrCreateModel(multiFile ? undefined : this._editor.getModel().uri);\r\n model.move(next, this._editor.getModel(), this._editor.getPosition());\r\n if (!model.selected) {\r\n return;\r\n }\r\n if (model.selected.marker.resource.toString() !== this._editor.getModel().uri.toString()) {\r\n // show in different editor\r\n this._cleanUp();\r\n const otherEditor = yield this._editorService.openCodeEditor({\r\n resource: model.selected.marker.resource,\r\n options: { pinned: false, revealIfOpened: true, selectionRevealType: 2 /* NearTop */, selection: model.selected.marker }\r\n }, this._editor);\r\n if (otherEditor) {\r\n MarkerController.get(otherEditor).close();\r\n MarkerController.get(otherEditor).nagivate(next, multiFile);\r\n }\r\n }\r\n else {\r\n // show in this editor\r\n this._widget.showAtMarker(model.selected.marker, model.selected.index, model.selected.total);\r\n }\r\n }\r\n });\r\n }\r\n};\r\nMarkerController.ID = 'editor.contrib.markerController';\r\nMarkerController = __decorate([\r\n __param(1, IMarkerNavigationService),\r\n __param(2, IContextKeyService),\r\n __param(3, ICodeEditorService),\r\n __param(4, IInstantiationService)\r\n], MarkerController);\r\nexport { MarkerController };\r\nclass MarkerNavigationAction extends EditorAction {\r\n constructor(_next, _multiFile, opts) {\r\n super(opts);\r\n this._next = _next;\r\n this._multiFile = _multiFile;\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (editor.hasModel()) {\r\n MarkerController.get(editor).nagivate(this._next, this._multiFile);\r\n }\r\n });\r\n }\r\n}\r\nexport class NextMarkerAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(true, false, {\r\n id: NextMarkerAction.ID,\r\n label: NextMarkerAction.LABEL,\r\n alias: 'Go to Next Problem (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 512 /* Alt */ | 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MarkerNavigationWidget.TitleMenu,\r\n title: NextMarkerAction.LABEL,\r\n icon: registerIcon('marker-navigation-next', Codicon.chevronDown),\r\n group: 'navigation',\r\n order: 1\r\n }\r\n });\r\n }\r\n}\r\nNextMarkerAction.ID = 'editor.action.marker.next';\r\nNextMarkerAction.LABEL = nls.localize('markerAction.next.label', \"Go to Next Problem (Error, Warning, Info)\");\r\nclass PrevMarkerAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(false, false, {\r\n id: PrevMarkerAction.ID,\r\n label: PrevMarkerAction.LABEL,\r\n alias: 'Go to Previous Problem (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MarkerNavigationWidget.TitleMenu,\r\n title: NextMarkerAction.LABEL,\r\n icon: registerIcon('marker-navigation-previous', Codicon.chevronUp),\r\n group: 'navigation',\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\nPrevMarkerAction.ID = 'editor.action.marker.prev';\r\nPrevMarkerAction.LABEL = nls.localize('markerAction.previous.label', \"Go to Previous Problem (Error, Warning, Info)\");\r\nclass NextMarkerInFilesAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(true, true, {\r\n id: 'editor.action.marker.nextInFiles',\r\n label: nls.localize('markerAction.nextInFiles.label', \"Go to Next Problem in Files (Error, Warning, Info)\"),\r\n alias: 'Go to Next Problem in Files (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n title: nls.localize({ key: 'miGotoNextProblem', comment: ['&& denotes a mnemonic'] }, \"Next &&Problem\"),\r\n group: '6_problem_nav',\r\n order: 1\r\n }\r\n });\r\n }\r\n}\r\nclass PrevMarkerInFilesAction extends MarkerNavigationAction {\r\n constructor() {\r\n super(false, true, {\r\n id: 'editor.action.marker.prevInFiles',\r\n label: nls.localize('markerAction.previousInFiles.label', \"Go to Previous Problem in Files (Error, Warning, Info)\"),\r\n alias: 'Go to Previous Problem in Files (Error, Warning, Info)',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ | 66 /* F8 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n title: nls.localize({ key: 'miGotoPreviousProblem', comment: ['&& denotes a mnemonic'] }, \"Previous &&Problem\"),\r\n group: '6_problem_nav',\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorContribution(MarkerController.ID, MarkerController);\r\nregisterEditorAction(NextMarkerAction);\r\nregisterEditorAction(PrevMarkerAction);\r\nregisterEditorAction(NextMarkerInFilesAction);\r\nregisterEditorAction(PrevMarkerInFilesAction);\r\nconst CONTEXT_MARKERS_NAVIGATION_VISIBLE = new RawContextKey('markersNavigationVisible', false);\r\nconst MarkerCommand = EditorCommand.bindToContribution(MarkerController.get);\r\nregisterEditorCommand(new MarkerCommand({\r\n id: 'closeMarkersNavigation',\r\n precondition: CONTEXT_MARKERS_NAVIGATION_VISIBLE,\r\n handler: x => x.close(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 50,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './media/gotoErrorWidget.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { registerColor, oneOf, textLinkForeground, editorErrorForeground, editorErrorBorder, editorWarningForeground, editorWarningBorder, editorInfoForeground, editorInfoBorder } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { ScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { getBaseLabel, getPathLabel } from '../../../base/common/labels.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { PeekViewWidget, peekViewTitleForeground, peekViewTitleInfoForeground } from '../peekView/peekView.js';\r\nimport { basename } from '../../../base/common/resources.js';\r\nimport { SeverityIcon } from '../../../platform/severityIcon/common/severityIcon.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { MenuId, IMenuService } from '../../../platform/actions/common/actions.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { createAndFillInActionBarActions } from '../../../platform/actions/browser/menuEntryActionViewItem.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nclass MessageWidget {\r\n constructor(parent, editor, onRelatedInformation, _openerService) {\r\n this._openerService = _openerService;\r\n this._lines = 0;\r\n this._longestLineLength = 0;\r\n this._relatedDiagnostics = new WeakMap();\r\n this._disposables = new DisposableStore();\r\n this._editor = editor;\r\n const domNode = document.createElement('div');\r\n domNode.className = 'descriptioncontainer';\r\n this._messageBlock = document.createElement('div');\r\n dom.addClass(this._messageBlock, 'message');\r\n this._messageBlock.setAttribute('aria-live', 'assertive');\r\n this._messageBlock.setAttribute('role', 'alert');\r\n domNode.appendChild(this._messageBlock);\r\n this._relatedBlock = document.createElement('div');\r\n domNode.appendChild(this._relatedBlock);\r\n this._disposables.add(dom.addStandardDisposableListener(this._relatedBlock, 'click', event => {\r\n event.preventDefault();\r\n const related = this._relatedDiagnostics.get(event.target);\r\n if (related) {\r\n onRelatedInformation(related);\r\n }\r\n }));\r\n this._scrollable = new ScrollableElement(domNode, {\r\n horizontal: 1 /* Auto */,\r\n vertical: 1 /* Auto */,\r\n useShadows: false,\r\n horizontalScrollbarSize: 3,\r\n verticalScrollbarSize: 3\r\n });\r\n parent.appendChild(this._scrollable.getDomNode());\r\n this._disposables.add(this._scrollable.onScroll(e => {\r\n domNode.style.left = `-${e.scrollLeft}px`;\r\n domNode.style.top = `-${e.scrollTop}px`;\r\n }));\r\n this._disposables.add(this._scrollable);\r\n }\r\n dispose() {\r\n dispose(this._disposables);\r\n }\r\n update(marker) {\r\n const { source, message, relatedInformation, code } = marker;\r\n let sourceAndCodeLength = ((source === null || source === void 0 ? void 0 : source.length) || 0) + '()'.length;\r\n if (code) {\r\n if (typeof code === 'string') {\r\n sourceAndCodeLength += code.length;\r\n }\r\n else {\r\n sourceAndCodeLength += code.value.length;\r\n }\r\n }\r\n const lines = message.split(/\\r\\n|\\r|\\n/g);\r\n this._lines = lines.length;\r\n this._longestLineLength = 0;\r\n for (const line of lines) {\r\n this._longestLineLength = Math.max(line.length + sourceAndCodeLength, this._longestLineLength);\r\n }\r\n dom.clearNode(this._messageBlock);\r\n this._messageBlock.setAttribute('aria-label', this.getAriaLabel(marker));\r\n this._editor.applyFontInfo(this._messageBlock);\r\n let lastLineElement = this._messageBlock;\r\n for (const line of lines) {\r\n lastLineElement = document.createElement('div');\r\n lastLineElement.innerText = line;\r\n if (line === '') {\r\n lastLineElement.style.height = this._messageBlock.style.lineHeight;\r\n }\r\n this._messageBlock.appendChild(lastLineElement);\r\n }\r\n if (source || code) {\r\n const detailsElement = document.createElement('span');\r\n dom.addClass(detailsElement, 'details');\r\n lastLineElement.appendChild(detailsElement);\r\n if (source) {\r\n const sourceElement = document.createElement('span');\r\n sourceElement.innerText = source;\r\n dom.addClass(sourceElement, 'source');\r\n detailsElement.appendChild(sourceElement);\r\n }\r\n if (code) {\r\n if (typeof code === 'string') {\r\n const codeElement = document.createElement('span');\r\n codeElement.innerText = `(${code})`;\r\n dom.addClass(codeElement, 'code');\r\n detailsElement.appendChild(codeElement);\r\n }\r\n else {\r\n this._codeLink = dom.$('a.code-link');\r\n this._codeLink.setAttribute('href', `${code.target.toString()}`);\r\n this._codeLink.onclick = (e) => {\r\n this._openerService.open(code.target);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n const codeElement = dom.append(this._codeLink, dom.$('span'));\r\n codeElement.innerText = code.value;\r\n detailsElement.appendChild(this._codeLink);\r\n }\r\n }\r\n }\r\n dom.clearNode(this._relatedBlock);\r\n this._editor.applyFontInfo(this._relatedBlock);\r\n if (isNonEmptyArray(relatedInformation)) {\r\n const relatedInformationNode = this._relatedBlock.appendChild(document.createElement('div'));\r\n relatedInformationNode.style.paddingTop = `${Math.floor(this._editor.getOption(51 /* lineHeight */) * 0.66)}px`;\r\n this._lines += 1;\r\n for (const related of relatedInformation) {\r\n let container = document.createElement('div');\r\n let relatedResource = document.createElement('a');\r\n dom.addClass(relatedResource, 'filename');\r\n relatedResource.innerText = `${getBaseLabel(related.resource)}(${related.startLineNumber}, ${related.startColumn}): `;\r\n relatedResource.title = getPathLabel(related.resource, undefined);\r\n this._relatedDiagnostics.set(relatedResource, related);\r\n let relatedMessage = document.createElement('span');\r\n relatedMessage.innerText = related.message;\r\n container.appendChild(relatedResource);\r\n container.appendChild(relatedMessage);\r\n this._lines += 1;\r\n relatedInformationNode.appendChild(container);\r\n }\r\n }\r\n const fontInfo = this._editor.getOption(36 /* fontInfo */);\r\n const scrollWidth = Math.ceil(fontInfo.typicalFullwidthCharacterWidth * this._longestLineLength * 0.75);\r\n const scrollHeight = fontInfo.lineHeight * this._lines;\r\n this._scrollable.setScrollDimensions({ scrollWidth, scrollHeight });\r\n }\r\n layout(height, width) {\r\n this._scrollable.getDomNode().style.height = `${height}px`;\r\n this._scrollable.getDomNode().style.width = `${width}px`;\r\n this._scrollable.setScrollDimensions({ width, height });\r\n }\r\n getHeightInLines() {\r\n return Math.min(17, this._lines);\r\n }\r\n getAriaLabel(marker) {\r\n let severityLabel = '';\r\n switch (marker.severity) {\r\n case MarkerSeverity.Error:\r\n severityLabel = nls.localize('Error', \"Error\");\r\n break;\r\n case MarkerSeverity.Warning:\r\n severityLabel = nls.localize('Warning', \"Warning\");\r\n break;\r\n case MarkerSeverity.Info:\r\n severityLabel = nls.localize('Info', \"Info\");\r\n break;\r\n case MarkerSeverity.Hint:\r\n severityLabel = nls.localize('Hint', \"Hint\");\r\n break;\r\n }\r\n let ariaLabel = nls.localize('marker aria', \"{0} at {1}. \", severityLabel, marker.startLineNumber + ':' + marker.startColumn);\r\n const model = this._editor.getModel();\r\n if (model && (marker.startLineNumber <= model.getLineCount()) && (marker.startLineNumber >= 1)) {\r\n const lineContent = model.getLineContent(marker.startLineNumber);\r\n ariaLabel = `${lineContent}, ${ariaLabel}`;\r\n }\r\n return ariaLabel;\r\n }\r\n}\r\nlet MarkerNavigationWidget = class MarkerNavigationWidget extends PeekViewWidget {\r\n constructor(editor, _themeService, _openerService, _menuService, instantiationService, _contextKeyService) {\r\n super(editor, { showArrow: true, showFrame: true, isAccessible: true }, instantiationService);\r\n this._themeService = _themeService;\r\n this._openerService = _openerService;\r\n this._menuService = _menuService;\r\n this._contextKeyService = _contextKeyService;\r\n this._callOnDispose = new DisposableStore();\r\n this._onDidSelectRelatedInformation = new Emitter();\r\n this.onDidSelectRelatedInformation = this._onDidSelectRelatedInformation.event;\r\n this._severity = MarkerSeverity.Warning;\r\n this._backgroundColor = Color.white;\r\n this._applyTheme(_themeService.getColorTheme());\r\n this._callOnDispose.add(_themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n this.create();\r\n }\r\n _applyTheme(theme) {\r\n this._backgroundColor = theme.getColor(editorMarkerNavigationBackground);\r\n let colorId = editorMarkerNavigationError;\r\n if (this._severity === MarkerSeverity.Warning) {\r\n colorId = editorMarkerNavigationWarning;\r\n }\r\n else if (this._severity === MarkerSeverity.Info) {\r\n colorId = editorMarkerNavigationInfo;\r\n }\r\n const frameColor = theme.getColor(colorId);\r\n this.style({\r\n arrowColor: frameColor,\r\n frameColor: frameColor,\r\n headerBackgroundColor: this._backgroundColor,\r\n primaryHeadingColor: theme.getColor(peekViewTitleForeground),\r\n secondaryHeadingColor: theme.getColor(peekViewTitleInfoForeground)\r\n }); // style() will trigger _applyStyles\r\n }\r\n _applyStyles() {\r\n if (this._parentContainer) {\r\n this._parentContainer.style.backgroundColor = this._backgroundColor ? this._backgroundColor.toString() : '';\r\n }\r\n super._applyStyles();\r\n }\r\n dispose() {\r\n this._callOnDispose.dispose();\r\n super.dispose();\r\n }\r\n _fillHead(container) {\r\n super._fillHead(container);\r\n this._disposables.add(this._actionbarWidget.actionRunner.onDidBeforeRun(e => this.editor.focus()));\r\n const actions = [];\r\n const menu = this._menuService.createMenu(MarkerNavigationWidget.TitleMenu, this._contextKeyService);\r\n createAndFillInActionBarActions(menu, undefined, actions);\r\n this._actionbarWidget.push(actions, { label: false, icon: true, index: 0 });\r\n menu.dispose();\r\n }\r\n _fillTitleIcon(container) {\r\n this._icon = dom.append(container, dom.$(''));\r\n }\r\n _getActionBarOptions() {\r\n return Object.assign(Object.assign({}, super._getActionBarOptions()), { orientation: 0 /* HORIZONTAL */ });\r\n }\r\n _fillBody(container) {\r\n this._parentContainer = container;\r\n dom.addClass(container, 'marker-widget');\r\n this._parentContainer.tabIndex = 0;\r\n this._parentContainer.setAttribute('role', 'tooltip');\r\n this._container = document.createElement('div');\r\n container.appendChild(this._container);\r\n this._message = new MessageWidget(this._container, this.editor, related => this._onDidSelectRelatedInformation.fire(related), this._openerService);\r\n this._disposables.add(this._message);\r\n }\r\n show() {\r\n throw new Error('call showAtMarker');\r\n }\r\n showAtMarker(marker, markerIdx, markerCount) {\r\n // update:\r\n // * title\r\n // * message\r\n this._container.classList.remove('stale');\r\n this._message.update(marker);\r\n // update frame color (only applied on 'show')\r\n this._severity = marker.severity;\r\n this._applyTheme(this._themeService.getColorTheme());\r\n // show\r\n let range = Range.lift(marker);\r\n const editorPosition = this.editor.getPosition();\r\n let position = editorPosition && range.containsPosition(editorPosition) ? editorPosition : range.getStartPosition();\r\n super.show(position, this.computeRequiredHeight());\r\n const model = this.editor.getModel();\r\n if (model) {\r\n const detail = markerCount > 1\r\n ? nls.localize('problems', \"{0} of {1} problems\", markerIdx, markerCount)\r\n : nls.localize('change', \"{0} of {1} problem\", markerIdx, markerCount);\r\n this.setTitle(basename(model.uri), detail);\r\n }\r\n this._icon.className = `codicon ${SeverityIcon.className(MarkerSeverity.toSeverity(this._severity))}`;\r\n this.editor.revealPositionNearTop(position, 0 /* Smooth */);\r\n this.editor.focus();\r\n }\r\n updateMarker(marker) {\r\n this._container.classList.remove('stale');\r\n this._message.update(marker);\r\n }\r\n showStale() {\r\n this._container.classList.add('stale');\r\n this._relayout();\r\n }\r\n _doLayoutBody(heightInPixel, widthInPixel) {\r\n super._doLayoutBody(heightInPixel, widthInPixel);\r\n this._heightInPixel = heightInPixel;\r\n this._message.layout(heightInPixel, widthInPixel);\r\n this._container.style.height = `${heightInPixel}px`;\r\n }\r\n _onWidth(widthInPixel) {\r\n this._message.layout(this._heightInPixel, widthInPixel);\r\n }\r\n _relayout() {\r\n super._relayout(this.computeRequiredHeight());\r\n }\r\n computeRequiredHeight() {\r\n return 3 + this._message.getHeightInLines();\r\n }\r\n};\r\nMarkerNavigationWidget.TitleMenu = new MenuId('gotoErrorTitleMenu');\r\nMarkerNavigationWidget = __decorate([\r\n __param(1, IThemeService),\r\n __param(2, IOpenerService),\r\n __param(3, IMenuService),\r\n __param(4, IInstantiationService),\r\n __param(5, IContextKeyService)\r\n], MarkerNavigationWidget);\r\nexport { MarkerNavigationWidget };\r\n// theming\r\nlet errorDefault = oneOf(editorErrorForeground, editorErrorBorder);\r\nlet warningDefault = oneOf(editorWarningForeground, editorWarningBorder);\r\nlet infoDefault = oneOf(editorInfoForeground, editorInfoBorder);\r\nexport const editorMarkerNavigationError = registerColor('editorMarkerNavigationError.background', { dark: errorDefault, light: errorDefault, hc: errorDefault }, nls.localize('editorMarkerNavigationError', 'Editor marker navigation widget error color.'));\r\nexport const editorMarkerNavigationWarning = registerColor('editorMarkerNavigationWarning.background', { dark: warningDefault, light: warningDefault, hc: warningDefault }, nls.localize('editorMarkerNavigationWarning', 'Editor marker navigation widget warning color.'));\r\nexport const editorMarkerNavigationInfo = registerColor('editorMarkerNavigationInfo.background', { dark: infoDefault, light: infoDefault, hc: infoDefault }, nls.localize('editorMarkerNavigationInfo', 'Editor marker navigation widget info color.'));\r\nexport const editorMarkerNavigationBackground = registerColor('editorMarkerNavigation.background', { dark: '#2D2D30', light: Color.white, hc: '#0C141F' }, nls.localize('editorMarkerNavigationBackground', 'Editor marker navigation widget background.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const linkFg = theme.getColor(textLinkForeground);\r\n if (linkFg) {\r\n collector.addRule(`.monaco-editor .marker-widget a { color: ${linkFg}; }`);\r\n collector.addRule(`.monaco-editor .marker-widget a.code-link span:hover { color: ${linkFg}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IMarkerService, MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { compare } from '../../../base/common/strings.js';\r\nimport { binarySearch } from '../../../base/common/arrays.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nexport class MarkerCoordinate {\r\n constructor(marker, index, total) {\r\n this.marker = marker;\r\n this.index = index;\r\n this.total = total;\r\n }\r\n}\r\nlet MarkerList = class MarkerList {\r\n constructor(resourceFilter, _markerService) {\r\n this._markerService = _markerService;\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._dispoables = new DisposableStore();\r\n this._markers = [];\r\n this._nextIdx = -1;\r\n if (URI.isUri(resourceFilter)) {\r\n this._resourceFilter = uri => uri.toString() === resourceFilter.toString();\r\n }\r\n else if (resourceFilter) {\r\n this._resourceFilter = resourceFilter;\r\n }\r\n const updateMarker = () => {\r\n this._markers = this._markerService.read({\r\n resource: URI.isUri(resourceFilter) ? resourceFilter : undefined,\r\n severities: MarkerSeverity.Error | MarkerSeverity.Warning | MarkerSeverity.Info\r\n });\r\n if (typeof resourceFilter === 'function') {\r\n this._markers = this._markers.filter(m => this._resourceFilter(m.resource));\r\n }\r\n this._markers.sort(MarkerList._compareMarker);\r\n };\r\n updateMarker();\r\n this._dispoables.add(_markerService.onMarkerChanged(uris => {\r\n if (!this._resourceFilter || uris.some(uri => this._resourceFilter(uri))) {\r\n updateMarker();\r\n this._nextIdx = -1;\r\n this._onDidChange.fire();\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._dispoables.dispose();\r\n this._onDidChange.dispose();\r\n }\r\n matches(uri) {\r\n if (!this._resourceFilter && !uri) {\r\n return true;\r\n }\r\n if (!this._resourceFilter || !uri) {\r\n return false;\r\n }\r\n return this._resourceFilter(uri);\r\n }\r\n get selected() {\r\n const marker = this._markers[this._nextIdx];\r\n return marker && new MarkerCoordinate(marker, this._nextIdx + 1, this._markers.length);\r\n }\r\n _initIdx(model, position, fwd) {\r\n let found = false;\r\n let idx = this._markers.findIndex(marker => marker.resource.toString() === model.uri.toString());\r\n if (idx < 0) {\r\n idx = binarySearch(this._markers, { resource: model.uri }, (a, b) => compare(a.resource.toString(), b.resource.toString()));\r\n if (idx < 0) {\r\n idx = ~idx;\r\n }\r\n }\r\n for (let i = idx; i < this._markers.length; i++) {\r\n let range = Range.lift(this._markers[i]);\r\n if (range.isEmpty()) {\r\n const word = model.getWordAtPosition(range.getStartPosition());\r\n if (word) {\r\n range = new Range(range.startLineNumber, word.startColumn, range.startLineNumber, word.endColumn);\r\n }\r\n }\r\n if (position && (range.containsPosition(position) || position.isBeforeOrEqual(range.getStartPosition()))) {\r\n this._nextIdx = i;\r\n found = true;\r\n break;\r\n }\r\n if (this._markers[i].resource.toString() !== model.uri.toString()) {\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n // after the last change\r\n this._nextIdx = fwd ? 0 : this._markers.length - 1;\r\n }\r\n if (this._nextIdx < 0) {\r\n this._nextIdx = this._markers.length - 1;\r\n }\r\n }\r\n resetIndex() {\r\n this._nextIdx = -1;\r\n }\r\n move(fwd, model, position) {\r\n if (this._markers.length === 0) {\r\n return false;\r\n }\r\n let oldIdx = this._nextIdx;\r\n if (this._nextIdx === -1) {\r\n this._initIdx(model, position, fwd);\r\n }\r\n else if (fwd) {\r\n this._nextIdx = (this._nextIdx + 1) % this._markers.length;\r\n }\r\n else if (!fwd) {\r\n this._nextIdx = (this._nextIdx - 1 + this._markers.length) % this._markers.length;\r\n }\r\n if (oldIdx !== this._nextIdx) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n find(uri, position) {\r\n let idx = this._markers.findIndex(marker => marker.resource.toString() === uri.toString());\r\n if (idx < 0) {\r\n return undefined;\r\n }\r\n for (; idx < this._markers.length; idx++) {\r\n if (Range.containsPosition(this._markers[idx], position)) {\r\n return new MarkerCoordinate(this._markers[idx], idx + 1, this._markers.length);\r\n }\r\n }\r\n return undefined;\r\n }\r\n static _compareMarker(a, b) {\r\n let res = compare(a.resource.toString(), b.resource.toString());\r\n if (res === 0) {\r\n res = MarkerSeverity.compare(a.severity, b.severity);\r\n }\r\n if (res === 0) {\r\n res = Range.compareRangesUsingStarts(a, b);\r\n }\r\n return res;\r\n }\r\n};\r\nMarkerList = __decorate([\r\n __param(1, IMarkerService)\r\n], MarkerList);\r\nexport { MarkerList };\r\nexport const IMarkerNavigationService = createDecorator('IMarkerNavigationService');\r\nlet MarkerNavigationService = class MarkerNavigationService {\r\n constructor(_markerService) {\r\n this._markerService = _markerService;\r\n this._provider = new LinkedList();\r\n }\r\n getMarkerList(resource) {\r\n for (let provider of this._provider) {\r\n const result = provider.getMarkerList(resource);\r\n if (result) {\r\n return result;\r\n }\r\n }\r\n // default\r\n return new MarkerList(resource, this._markerService);\r\n }\r\n};\r\nMarkerNavigationService = __decorate([\r\n __param(0, IMarkerService)\r\n], MarkerNavigationService);\r\nregisterSingleton(IMarkerNavigationService, MarkerNavigationService, true);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { ITextModelService } from '../../common/services/resolverService.js';\r\nimport { OutlineModel, OutlineElement } from '../documentSymbols/outlineModel.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nexport function getDocumentSymbols(document, flat, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = yield OutlineModel.create(document, token);\r\n const roots = [];\r\n for (const child of model.children.values()) {\r\n if (child instanceof OutlineElement) {\r\n roots.push(child.symbol);\r\n }\r\n else {\r\n roots.push(...Iterable.map(child.children.values(), child => child.symbol));\r\n }\r\n }\r\n let flatEntries = [];\r\n if (token.isCancellationRequested) {\r\n return flatEntries;\r\n }\r\n if (flat) {\r\n flatten(flatEntries, roots, '');\r\n }\r\n else {\r\n flatEntries = roots;\r\n }\r\n return flatEntries.sort(compareEntriesUsingStart);\r\n });\r\n}\r\nfunction compareEntriesUsingStart(a, b) {\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n}\r\nfunction flatten(bucket, entries, overrideContainerLabel) {\r\n for (let entry of entries) {\r\n bucket.push({\r\n kind: entry.kind,\r\n tags: entry.tags,\r\n name: entry.name,\r\n detail: entry.detail,\r\n containerName: entry.containerName || overrideContainerLabel,\r\n range: entry.range,\r\n selectionRange: entry.selectionRange,\r\n children: undefined,\r\n });\r\n if (entry.children) {\r\n flatten(bucket, entry.children, entry.name);\r\n }\r\n }\r\n}\r\nCommandsRegistry.registerCommand('_executeDocumentSymbolProvider', function (accessor, ...args) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const [resource] = args;\r\n assertType(URI.isUri(resource));\r\n const model = accessor.get(IModelService).getModel(resource);\r\n if (model) {\r\n return getDocumentSymbols(model, false, CancellationToken.None);\r\n }\r\n const reference = yield accessor.get(ITextModelService).createModelReference(resource);\r\n try {\r\n return yield getDocumentSymbols(reference.object.textEditorModel, false, CancellationToken.None);\r\n }\r\n finally {\r\n reference.dispose();\r\n }\r\n });\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar _a, _b, _c, _d, _e, _f, _g, _h;\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { createCancelablePromise, raceCancellation } from '../../../base/common/async.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { isWeb } from '../../../base/common/platform.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport * as corePosition from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { isLocationLink } from '../../common/modes.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport { PeekContext } from '../peekView/peekView.js';\r\nimport { ReferencesController } from './peek/referencesController.js';\r\nimport { ReferencesModel } from './referencesModel.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { MenuId, MenuRegistry } from '../../../platform/actions/common/actions.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { getDefinitionsAtPosition, getImplementationsAtPosition, getTypeDefinitionsAtPosition, getDeclarationsAtPosition, getReferencesAtPosition } from './goToSymbol.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { EditorStateCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { ISymbolNavigationService } from './symbolNavigation.js';\r\nimport { isStandalone } from '../../../base/browser/browser.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../browser/widget/embeddedCodeEditorWidget.js';\r\nMenuRegistry.appendMenuItem(MenuId.EditorContext, {\r\n submenu: MenuId.EditorContextPeek,\r\n title: nls.localize('peek.submenu', \"Peek\"),\r\n group: 'navigation',\r\n order: 100\r\n});\r\nclass SymbolNavigationAction extends EditorAction {\r\n constructor(configuration, opts) {\r\n super(opts);\r\n this._configuration = configuration;\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return Promise.resolve(undefined);\r\n }\r\n const notificationService = accessor.get(INotificationService);\r\n const editorService = accessor.get(ICodeEditorService);\r\n const progressService = accessor.get(IEditorProgressService);\r\n const symbolNavService = accessor.get(ISymbolNavigationService);\r\n const model = editor.getModel();\r\n const pos = editor.getPosition();\r\n const cts = new EditorStateCancellationTokenSource(editor, 1 /* Value */ | 4 /* Position */);\r\n const promise = raceCancellation(this._getLocationModel(model, pos, cts.token), cts.token).then((references) => __awaiter(this, void 0, void 0, function* () {\r\n if (!references || cts.token.isCancellationRequested) {\r\n return;\r\n }\r\n alert(references.ariaMessage);\r\n let altAction;\r\n if (references.referenceAt(model.uri, pos)) {\r\n const altActionId = this._getAlternativeCommand(editor);\r\n if (altActionId !== this.id) {\r\n altAction = editor.getAction(altActionId);\r\n }\r\n }\r\n const referenceCount = references.references.length;\r\n if (referenceCount === 0) {\r\n // no result -> show message\r\n if (!this._configuration.muteMessage) {\r\n const info = model.getWordAtPosition(pos);\r\n MessageController.get(editor).showMessage(this._getNoResultFoundMessage(info), pos);\r\n }\r\n }\r\n else if (referenceCount === 1 && altAction) {\r\n // already at the only result, run alternative\r\n altAction.run();\r\n }\r\n else {\r\n // normal results handling\r\n return this._onResult(editorService, symbolNavService, editor, references);\r\n }\r\n }), (err) => {\r\n // report an error\r\n notificationService.error(err);\r\n }).finally(() => {\r\n cts.dispose();\r\n });\r\n progressService.showWhile(promise, 250);\r\n return promise;\r\n }\r\n _onResult(editorService, symbolNavService, editor, model) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const gotoLocation = this._getGoToPreference(editor);\r\n if (!(editor instanceof EmbeddedCodeEditorWidget) && (this._configuration.openInPeek || (gotoLocation === 'peek' && model.references.length > 1))) {\r\n this._openInPeek(editor, model);\r\n }\r\n else {\r\n const next = model.firstReference();\r\n const peek = model.references.length > 1 && gotoLocation === 'gotoAndPeek';\r\n const targetEditor = yield this._openReference(editor, editorService, next, this._configuration.openToSide, !peek);\r\n if (peek && targetEditor) {\r\n this._openInPeek(targetEditor, model);\r\n }\r\n else {\r\n model.dispose();\r\n }\r\n // keep remaining locations around when using\r\n // 'goto'-mode\r\n if (gotoLocation === 'goto') {\r\n symbolNavService.put(next);\r\n }\r\n }\r\n });\r\n }\r\n _openReference(editor, editorService, reference, sideBySide, highlight) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // range is the target-selection-range when we have one\r\n // and the fallback is the 'full' range\r\n let range = undefined;\r\n if (isLocationLink(reference)) {\r\n range = reference.targetSelectionRange;\r\n }\r\n if (!range) {\r\n range = reference.range;\r\n }\r\n const targetEditor = yield editorService.openCodeEditor({\r\n resource: reference.uri,\r\n options: {\r\n selection: Range.collapseToStart(range),\r\n selectionRevealType: 3 /* NearTopIfOutsideViewport */\r\n }\r\n }, editor, sideBySide);\r\n if (!targetEditor) {\r\n return undefined;\r\n }\r\n if (highlight) {\r\n const modelNow = targetEditor.getModel();\r\n const ids = targetEditor.deltaDecorations([], [{ range, options: { className: 'symbolHighlight' } }]);\r\n setTimeout(() => {\r\n if (targetEditor.getModel() === modelNow) {\r\n targetEditor.deltaDecorations(ids, []);\r\n }\r\n }, 350);\r\n }\r\n return targetEditor;\r\n });\r\n }\r\n _openInPeek(target, model) {\r\n let controller = ReferencesController.get(target);\r\n if (controller && target.hasModel()) {\r\n controller.toggleWidget(target.getSelection(), createCancelablePromise(_ => Promise.resolve(model)), this._configuration.openInPeek);\r\n }\r\n else {\r\n model.dispose();\r\n }\r\n }\r\n}\r\n//#region --- DEFINITION\r\nexport class DefinitionAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getDefinitionsAtPosition(model, position, token), nls.localize('def.title', 'Definitions'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('noResultWord', \"No definition found for '{0}'\", info.word)\r\n : nls.localize('generic.noResults', \"No definition found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(43 /* gotoLocation */).alternativeDefinitionCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(43 /* gotoLocation */).multipleDefinitions;\r\n }\r\n}\r\nconst goToDefinitionKb = isWeb && !isStandalone\r\n ? 2048 /* CtrlCmd */ | 70 /* F12 */\r\n : 70 /* F12 */;\r\nregisterEditorAction((_a = class GoToDefinitionAction extends DefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToDefinitionAction.id,\r\n label: nls.localize('actions.goToDecl.label', \"Go to Definition\"),\r\n alias: 'Go to Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: goToDefinitionKb,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.1\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 2,\r\n title: nls.localize({ key: 'miGotoDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Definition\")\r\n }\r\n });\r\n CommandsRegistry.registerCommandAlias('editor.action.goToDeclaration', GoToDefinitionAction.id);\r\n }\r\n },\r\n _a.id = 'editor.action.revealDefinition',\r\n _a));\r\nregisterEditorAction((_b = class OpenDefinitionToSideAction extends DefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: true,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: OpenDefinitionToSideAction.id,\r\n label: nls.localize('actions.goToDeclToSide.label', \"Open Definition to the Side\"),\r\n alias: 'Open Definition to the Side',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, goToDefinitionKb),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n CommandsRegistry.registerCommandAlias('editor.action.openDeclarationToTheSide', OpenDefinitionToSideAction.id);\r\n }\r\n },\r\n _b.id = 'editor.action.revealDefinitionAside',\r\n _b));\r\nregisterEditorAction((_c = class PeekDefinitionAction extends DefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: PeekDefinitionAction.id,\r\n label: nls.localize('actions.previewDecl.label', \"Peek Definition\"),\r\n alias: 'Peek Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 70 /* F12 */,\r\n linux: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 68 /* F10 */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 2\r\n }\r\n });\r\n CommandsRegistry.registerCommandAlias('editor.action.previewDeclaration', PeekDefinitionAction.id);\r\n }\r\n },\r\n _c.id = 'editor.action.peekDefinition',\r\n _c));\r\n//#endregion\r\n//#region --- DECLARATION\r\nclass DeclarationAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getDeclarationsAtPosition(model, position, token), nls.localize('decl.title', 'Declarations'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\r\n : nls.localize('decl.generic.noResults', \"No declaration found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(43 /* gotoLocation */).alternativeDeclarationCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(43 /* gotoLocation */).multipleDeclarations;\r\n }\r\n}\r\nregisterEditorAction((_d = class GoToDeclarationAction extends DeclarationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToDeclarationAction.id,\r\n label: nls.localize('actions.goToDeclaration.label', \"Go to Declaration\"),\r\n alias: 'Go to Declaration',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.3\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 3,\r\n title: nls.localize({ key: 'miGotoDeclaration', comment: ['&& denotes a mnemonic'] }, \"Go to &&Declaration\")\r\n },\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('decl.noResultWord', \"No declaration found for '{0}'\", info.word)\r\n : nls.localize('decl.generic.noResults', \"No declaration found\");\r\n }\r\n },\r\n _d.id = 'editor.action.revealDeclaration',\r\n _d));\r\nregisterEditorAction(class PeekDeclarationAction extends DeclarationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: 'editor.action.peekDeclaration',\r\n label: nls.localize('actions.peekDecl.label', \"Peek Declaration\"),\r\n alias: 'Peek Declaration',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasDeclarationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 3\r\n }\r\n });\r\n }\r\n});\r\n//#endregion\r\n//#region --- TYPE DEFINITION\r\nclass TypeDefinitionAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getTypeDefinitionsAtPosition(model, position, token), nls.localize('typedef.title', 'Type Definitions'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('goToTypeDefinition.noResultWord', \"No type definition found for '{0}'\", info.word)\r\n : nls.localize('goToTypeDefinition.generic.noResults', \"No type definition found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(43 /* gotoLocation */).alternativeTypeDefinitionCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(43 /* gotoLocation */).multipleTypeDefinitions;\r\n }\r\n}\r\nregisterEditorAction((_e = class GoToTypeDefinitionAction extends TypeDefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToTypeDefinitionAction.ID,\r\n label: nls.localize('actions.goToTypeDefinition.label', \"Go to Type Definition\"),\r\n alias: 'Go to Type Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 0,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.4\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 3,\r\n title: nls.localize({ key: 'miGotoTypeDefinition', comment: ['&& denotes a mnemonic'] }, \"Go to &&Type Definition\")\r\n }\r\n });\r\n }\r\n },\r\n _e.ID = 'editor.action.goToTypeDefinition',\r\n _e));\r\nregisterEditorAction((_f = class PeekTypeDefinitionAction extends TypeDefinitionAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: PeekTypeDefinitionAction.ID,\r\n label: nls.localize('actions.peekTypeDefinition.label', \"Peek Type Definition\"),\r\n alias: 'Peek Type Definition',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasTypeDefinitionProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 4\r\n }\r\n });\r\n }\r\n },\r\n _f.ID = 'editor.action.peekTypeDefinition',\r\n _f));\r\n//#endregion\r\n//#region --- IMPLEMENTATION\r\nclass ImplementationAction extends SymbolNavigationAction {\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getImplementationsAtPosition(model, position, token), nls.localize('impl.title', 'Implementations'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && info.word\r\n ? nls.localize('goToImplementation.noResultWord', \"No implementation found for '{0}'\", info.word)\r\n : nls.localize('goToImplementation.generic.noResults', \"No implementation found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(43 /* gotoLocation */).alternativeImplementationCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(43 /* gotoLocation */).multipleImplementations;\r\n }\r\n}\r\nregisterEditorAction((_g = class GoToImplementationAction extends ImplementationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: GoToImplementationAction.ID,\r\n label: nls.localize('actions.goToImplementation.label', \"Go to Implementations\"),\r\n alias: 'Go to Implementations',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 70 /* F12 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 4,\r\n title: nls.localize({ key: 'miGotoImplementation', comment: ['&& denotes a mnemonic'] }, \"Go to &&Implementations\")\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.45\r\n }\r\n });\r\n }\r\n },\r\n _g.ID = 'editor.action.goToImplementation',\r\n _g));\r\nregisterEditorAction((_h = class PeekImplementationAction extends ImplementationAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: PeekImplementationAction.ID,\r\n label: nls.localize('actions.peekImplementation.label', \"Peek Implementations\"),\r\n alias: 'Peek Implementations',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasImplementationProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 70 /* F12 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 5\r\n }\r\n });\r\n }\r\n },\r\n _h.ID = 'editor.action.peekImplementation',\r\n _h));\r\n//#endregion\r\n//#region --- REFERENCES\r\nclass ReferencesAction extends SymbolNavigationAction {\r\n _getNoResultFoundMessage(info) {\r\n return info\r\n ? nls.localize('references.no', \"No references found for '{0}'\", info.word)\r\n : nls.localize('references.noGeneric', \"No references found\");\r\n }\r\n _getAlternativeCommand(editor) {\r\n return editor.getOption(43 /* gotoLocation */).alternativeReferenceCommand;\r\n }\r\n _getGoToPreference(editor) {\r\n return editor.getOption(43 /* gotoLocation */).multipleReferences;\r\n }\r\n}\r\nregisterEditorAction(class GoToReferencesAction extends ReferencesAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: false,\r\n muteMessage: false\r\n }, {\r\n id: 'editor.action.goToReferences',\r\n label: nls.localize('goToReferences.label', \"Go to References\"),\r\n alias: 'Go to References',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 70 /* F12 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 1.45\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarGoMenu,\r\n group: '4_symbol_nav',\r\n order: 5,\r\n title: nls.localize({ key: 'miGotoReference', comment: ['&& denotes a mnemonic'] }, \"Go to &&References\")\r\n },\r\n });\r\n }\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getReferencesAtPosition(model, position, true, token), nls.localize('ref.title', 'References'));\r\n });\r\n }\r\n});\r\nregisterEditorAction(class PeekReferencesAction extends ReferencesAction {\r\n constructor() {\r\n super({\r\n openToSide: false,\r\n openInPeek: true,\r\n muteMessage: false\r\n }, {\r\n id: 'editor.action.referenceSearch.trigger',\r\n label: nls.localize('references.action.label', \"Peek References\"),\r\n alias: 'Peek References',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.hasReferenceProvider, PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n contextMenuOpts: {\r\n menuId: MenuId.EditorContextPeek,\r\n group: 'peek',\r\n order: 6\r\n }\r\n });\r\n }\r\n _getLocationModel(model, position, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(yield getReferencesAtPosition(model, position, false, token), nls.localize('ref.title', 'References'));\r\n });\r\n }\r\n});\r\n//#endregion\r\n//#region --- GENERIC goto symbols command\r\nclass GenericGoToLocationAction extends SymbolNavigationAction {\r\n constructor(config, _references, _gotoMultipleBehaviour) {\r\n super(config, {\r\n id: 'editor.action.goToLocation',\r\n label: nls.localize('label.generic', \"Go To Any Symbol\"),\r\n alias: 'Go To Any Symbol',\r\n precondition: ContextKeyExpr.and(PeekContext.notInPeekEditor, EditorContextKeys.isInWalkThroughSnippet.toNegated()),\r\n });\r\n this._references = _references;\r\n this._gotoMultipleBehaviour = _gotoMultipleBehaviour;\r\n }\r\n _getLocationModel(_model, _position, _token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new ReferencesModel(this._references, nls.localize('generic.title', 'Locations'));\r\n });\r\n }\r\n _getNoResultFoundMessage(info) {\r\n return info && nls.localize('generic.noResult', \"No results for '{0}'\", info.word) || '';\r\n }\r\n _getGoToPreference(editor) {\r\n var _a;\r\n return (_a = this._gotoMultipleBehaviour) !== null && _a !== void 0 ? _a : editor.getOption(43 /* gotoLocation */).multipleReferences;\r\n }\r\n _getAlternativeCommand() { return ''; }\r\n}\r\nCommandsRegistry.registerCommand({\r\n id: 'editor.action.goToLocations',\r\n description: {\r\n description: 'Go to locations from a position in a file',\r\n args: [\r\n { name: 'uri', description: 'The text document in which to start', constraint: URI },\r\n { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\r\n { name: 'locations', description: 'An array of locations.', constraint: Array },\r\n { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto' },\r\n { name: 'noResultsMessage', description: 'Human readable message that shows when locations is empty.' },\r\n ]\r\n },\r\n handler: (accessor, resource, position, references, multiple, noResultsMessage, openInPeek) => __awaiter(void 0, void 0, void 0, function* () {\r\n assertType(URI.isUri(resource));\r\n assertType(corePosition.Position.isIPosition(position));\r\n assertType(Array.isArray(references));\r\n assertType(typeof multiple === 'undefined' || typeof multiple === 'string');\r\n assertType(typeof openInPeek === 'undefined' || typeof openInPeek === 'boolean');\r\n const editorService = accessor.get(ICodeEditorService);\r\n const editor = yield editorService.openCodeEditor({ resource }, editorService.getFocusedCodeEditor());\r\n if (isCodeEditor(editor)) {\r\n editor.setPosition(position);\r\n editor.revealPositionInCenterIfOutsideViewport(position, 0 /* Smooth */);\r\n return editor.invokeWithinContext(accessor => {\r\n const command = new class extends GenericGoToLocationAction {\r\n _getNoResultFoundMessage(info) {\r\n return noResultsMessage || super._getNoResultFoundMessage(info);\r\n }\r\n }({\r\n muteMessage: !Boolean(noResultsMessage),\r\n openInPeek: Boolean(openInPeek),\r\n openToSide: false\r\n }, references, multiple);\r\n accessor.get(IInstantiationService).invokeFunction(command.run.bind(command), editor);\r\n });\r\n }\r\n })\r\n});\r\nCommandsRegistry.registerCommand({\r\n id: 'editor.action.peekLocations',\r\n description: {\r\n description: 'Peek locations from a position in a file',\r\n args: [\r\n { name: 'uri', description: 'The text document in which to start', constraint: URI },\r\n { name: 'position', description: 'The position at which to start', constraint: corePosition.Position.isIPosition },\r\n { name: 'locations', description: 'An array of locations.', constraint: Array },\r\n { name: 'multiple', description: 'Define what to do when having multiple results, either `peek`, `gotoAndPeek`, or `goto' },\r\n ]\r\n },\r\n handler: (accessor, resource, position, references, multiple) => __awaiter(void 0, void 0, void 0, function* () {\r\n accessor.get(ICommandService).executeCommand('editor.action.goToLocations', resource, position, references, multiple, undefined, true);\r\n })\r\n});\r\n//#endregion\r\n//#region --- REFERENCE search special commands\r\nCommandsRegistry.registerCommand({\r\n id: 'editor.action.findReferences',\r\n handler: (accessor, resource, position) => {\r\n assertType(URI.isUri(resource));\r\n assertType(corePosition.Position.isIPosition(position));\r\n const codeEditorService = accessor.get(ICodeEditorService);\r\n return codeEditorService.openCodeEditor({ resource }, codeEditorService.getFocusedCodeEditor()).then(control => {\r\n if (!isCodeEditor(control) || !control.hasModel()) {\r\n return undefined;\r\n }\r\n const controller = ReferencesController.get(control);\r\n if (!controller) {\r\n return undefined;\r\n }\r\n const references = createCancelablePromise(token => getReferencesAtPosition(control.getModel(), corePosition.Position.lift(position), false, token).then(references => new ReferencesModel(references, nls.localize('ref.title', 'References'))));\r\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n return Promise.resolve(controller.toggleWidget(range, references, false));\r\n });\r\n }\r\n});\r\n// use NEW command\r\nCommandsRegistry.registerCommandAlias('editor.action.showReferences', 'editor.action.peekLocations');\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { DefinitionProviderRegistry, ImplementationProviderRegistry, TypeDefinitionProviderRegistry, DeclarationProviderRegistry, ReferenceProviderRegistry } from '../../common/modes.js';\r\nfunction getLocationLinks(model, position, registry, provide) {\r\n const provider = registry.ordered(model);\r\n // get results\r\n const promises = provider.map((provider) => {\r\n return Promise.resolve(provide(provider, model, position)).then(undefined, err => {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n });\r\n });\r\n return Promise.all(promises).then(values => {\r\n const result = [];\r\n for (let value of values) {\r\n if (Array.isArray(value)) {\r\n result.push(...value);\r\n }\r\n else if (value) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\nexport function getDefinitionsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, DefinitionProviderRegistry, (provider, model, position) => {\r\n return provider.provideDefinition(model, position, token);\r\n });\r\n}\r\nexport function getDeclarationsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, DeclarationProviderRegistry, (provider, model, position) => {\r\n return provider.provideDeclaration(model, position, token);\r\n });\r\n}\r\nexport function getImplementationsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, ImplementationProviderRegistry, (provider, model, position) => {\r\n return provider.provideImplementation(model, position, token);\r\n });\r\n}\r\nexport function getTypeDefinitionsAtPosition(model, position, token) {\r\n return getLocationLinks(model, position, TypeDefinitionProviderRegistry, (provider, model, position) => {\r\n return provider.provideTypeDefinition(model, position, token);\r\n });\r\n}\r\nexport function getReferencesAtPosition(model, position, compact, token) {\r\n return getLocationLinks(model, position, ReferenceProviderRegistry, (provider, model, position) => __awaiter(this, void 0, void 0, function* () {\r\n const result = yield provider.provideReferences(model, position, { includeDeclaration: true }, token);\r\n if (!compact || !result || result.length !== 2) {\r\n return result;\r\n }\r\n const resultWithoutDeclaration = yield provider.provideReferences(model, position, { includeDeclaration: false }, token);\r\n if (resultWithoutDeclaration && resultWithoutDeclaration.length === 1) {\r\n return resultWithoutDeclaration;\r\n }\r\n return result;\r\n }));\r\n}\r\nregisterModelAndPositionCommand('_executeDefinitionProvider', (model, position) => getDefinitionsAtPosition(model, position, CancellationToken.None));\r\nregisterModelAndPositionCommand('_executeDeclarationProvider', (model, position) => getDeclarationsAtPosition(model, position, CancellationToken.None));\r\nregisterModelAndPositionCommand('_executeImplementationProvider', (model, position) => getImplementationsAtPosition(model, position, CancellationToken.None));\r\nregisterModelAndPositionCommand('_executeTypeDefinitionProvider', (model, position) => getTypeDefinitionsAtPosition(model, position, CancellationToken.None));\r\nregisterModelAndPositionCommand('_executeReferenceProvider', (model, position) => getReferencesAtPosition(model, position, false, CancellationToken.None));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../../base/common/event.js';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nfunction hasModifier(e, modifier) {\r\n return !!e[modifier];\r\n}\r\n/**\r\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\r\n */\r\nexport class ClickLinkMouseEvent {\r\n constructor(source, opts) {\r\n this.target = source.target;\r\n this.hasTriggerModifier = hasModifier(source.event, opts.triggerModifier);\r\n this.hasSideBySideModifier = hasModifier(source.event, opts.triggerSideBySideModifier);\r\n this.isNoneOrSingleMouseDown = (source.event.detail <= 1);\r\n }\r\n}\r\n/**\r\n * An event that encapsulates the various trigger modifiers logic needed for go to definition.\r\n */\r\nexport class ClickLinkKeyboardEvent {\r\n constructor(source, opts) {\r\n this.keyCodeIsTriggerKey = (source.keyCode === opts.triggerKey);\r\n this.keyCodeIsSideBySideKey = (source.keyCode === opts.triggerSideBySideKey);\r\n this.hasTriggerModifier = hasModifier(source, opts.triggerModifier);\r\n }\r\n}\r\nexport class ClickLinkOptions {\r\n constructor(triggerKey, triggerModifier, triggerSideBySideKey, triggerSideBySideModifier) {\r\n this.triggerKey = triggerKey;\r\n this.triggerModifier = triggerModifier;\r\n this.triggerSideBySideKey = triggerSideBySideKey;\r\n this.triggerSideBySideModifier = triggerSideBySideModifier;\r\n }\r\n equals(other) {\r\n return (this.triggerKey === other.triggerKey\r\n && this.triggerModifier === other.triggerModifier\r\n && this.triggerSideBySideKey === other.triggerSideBySideKey\r\n && this.triggerSideBySideModifier === other.triggerSideBySideModifier);\r\n }\r\n}\r\nfunction createOptions(multiCursorModifier) {\r\n if (multiCursorModifier === 'altKey') {\r\n if (platform.isMacintosh) {\r\n return new ClickLinkOptions(57 /* Meta */, 'metaKey', 6 /* Alt */, 'altKey');\r\n }\r\n return new ClickLinkOptions(5 /* Ctrl */, 'ctrlKey', 6 /* Alt */, 'altKey');\r\n }\r\n if (platform.isMacintosh) {\r\n return new ClickLinkOptions(6 /* Alt */, 'altKey', 57 /* Meta */, 'metaKey');\r\n }\r\n return new ClickLinkOptions(6 /* Alt */, 'altKey', 5 /* Ctrl */, 'ctrlKey');\r\n}\r\nexport class ClickLinkGesture extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._onMouseMoveOrRelevantKeyDown = this._register(new Emitter());\r\n this.onMouseMoveOrRelevantKeyDown = this._onMouseMoveOrRelevantKeyDown.event;\r\n this._onExecute = this._register(new Emitter());\r\n this.onExecute = this._onExecute.event;\r\n this._onCancel = this._register(new Emitter());\r\n this.onCancel = this._onCancel.event;\r\n this._editor = editor;\r\n this._opts = createOptions(this._editor.getOption(61 /* multiCursorModifier */));\r\n this._lastMouseMoveEvent = null;\r\n this._hasTriggerKeyOnMouseDown = false;\r\n this._lineNumberOnMouseDown = 0;\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(61 /* multiCursorModifier */)) {\r\n const newOpts = createOptions(this._editor.getOption(61 /* multiCursorModifier */));\r\n if (this._opts.equals(newOpts)) {\r\n return;\r\n }\r\n this._opts = newOpts;\r\n this._lastMouseMoveEvent = null;\r\n this._hasTriggerKeyOnMouseDown = false;\r\n this._lineNumberOnMouseDown = 0;\r\n this._onCancel.fire();\r\n }\r\n }));\r\n this._register(this._editor.onMouseMove((e) => this._onEditorMouseMove(new ClickLinkMouseEvent(e, this._opts))));\r\n this._register(this._editor.onMouseDown((e) => this._onEditorMouseDown(new ClickLinkMouseEvent(e, this._opts))));\r\n this._register(this._editor.onMouseUp((e) => this._onEditorMouseUp(new ClickLinkMouseEvent(e, this._opts))));\r\n this._register(this._editor.onKeyDown((e) => this._onEditorKeyDown(new ClickLinkKeyboardEvent(e, this._opts))));\r\n this._register(this._editor.onKeyUp((e) => this._onEditorKeyUp(new ClickLinkKeyboardEvent(e, this._opts))));\r\n this._register(this._editor.onMouseDrag(() => this._resetHandler()));\r\n this._register(this._editor.onDidChangeCursorSelection((e) => this._onDidChangeCursorSelection(e)));\r\n this._register(this._editor.onDidChangeModel((e) => this._resetHandler()));\r\n this._register(this._editor.onDidChangeModelContent(() => this._resetHandler()));\r\n this._register(this._editor.onDidScrollChange((e) => {\r\n if (e.scrollTopChanged || e.scrollLeftChanged) {\r\n this._resetHandler();\r\n }\r\n }));\r\n }\r\n _onDidChangeCursorSelection(e) {\r\n if (e.selection && e.selection.startColumn !== e.selection.endColumn) {\r\n this._resetHandler(); // immediately stop this feature if the user starts to select (https://github.com/Microsoft/vscode/issues/7827)\r\n }\r\n }\r\n _onEditorMouseMove(mouseEvent) {\r\n this._lastMouseMoveEvent = mouseEvent;\r\n this._onMouseMoveOrRelevantKeyDown.fire([mouseEvent, null]);\r\n }\r\n _onEditorMouseDown(mouseEvent) {\r\n // We need to record if we had the trigger key on mouse down because someone might select something in the editor\r\n // holding the mouse down and then while mouse is down start to press Ctrl/Cmd to start a copy operation and then\r\n // release the mouse button without wanting to do the navigation.\r\n // With this flag we prevent goto definition if the mouse was down before the trigger key was pressed.\r\n this._hasTriggerKeyOnMouseDown = mouseEvent.hasTriggerModifier;\r\n this._lineNumberOnMouseDown = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;\r\n }\r\n _onEditorMouseUp(mouseEvent) {\r\n const currentLineNumber = mouseEvent.target.position ? mouseEvent.target.position.lineNumber : 0;\r\n if (this._hasTriggerKeyOnMouseDown && this._lineNumberOnMouseDown && this._lineNumberOnMouseDown === currentLineNumber) {\r\n this._onExecute.fire(mouseEvent);\r\n }\r\n }\r\n _onEditorKeyDown(e) {\r\n if (this._lastMouseMoveEvent\r\n && (e.keyCodeIsTriggerKey // User just pressed Ctrl/Cmd (normal goto definition)\r\n || (e.keyCodeIsSideBySideKey && e.hasTriggerModifier) // User pressed Ctrl/Cmd+Alt (goto definition to the side)\r\n )) {\r\n this._onMouseMoveOrRelevantKeyDown.fire([this._lastMouseMoveEvent, e]);\r\n }\r\n else if (e.hasTriggerModifier) {\r\n this._onCancel.fire(); // remove decorations if user holds another key with ctrl/cmd to prevent accident goto declaration\r\n }\r\n }\r\n _onEditorKeyUp(e) {\r\n if (e.keyCodeIsTriggerKey) {\r\n this._onCancel.fire();\r\n }\r\n }\r\n _resetHandler() {\r\n this._lastMouseMoveEvent = null;\r\n this._hasTriggerKeyOnMouseDown = false;\r\n this._onCancel.fire();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './goToDefinitionAtPosition.css';\r\nimport * as nls from '../../../../nls.js';\r\nimport { createCancelablePromise } from '../../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport { MarkdownString } from '../../../../base/common/htmlContent.js';\r\nimport { IModeService } from '../../../common/services/modeService.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { DefinitionProviderRegistry } from '../../../common/modes.js';\r\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { getDefinitionsAtPosition } from '../goToSymbol.js';\r\nimport { DisposableStore } from '../../../../base/common/lifecycle.js';\r\nimport { ITextModelService } from '../../../common/services/resolverService.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport { editorActiveLinkForeground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { EditorState } from '../../../browser/core/editorState.js';\r\nimport { DefinitionAction } from '../goToCommands.js';\r\nimport { ClickLinkGesture } from './clickLinkGesture.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\r\nimport { PeekContext } from '../../peekView/peekView.js';\r\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\r\nlet GotoDefinitionAtPositionEditorContribution = class GotoDefinitionAtPositionEditorContribution {\r\n constructor(editor, textModelResolverService, modeService) {\r\n this.textModelResolverService = textModelResolverService;\r\n this.modeService = modeService;\r\n this.toUnhook = new DisposableStore();\r\n this.toUnhookForKeyboard = new DisposableStore();\r\n this.linkDecorations = [];\r\n this.currentWordAtPosition = null;\r\n this.previousPromise = null;\r\n this.editor = editor;\r\n let linkGesture = new ClickLinkGesture(editor);\r\n this.toUnhook.add(linkGesture);\r\n this.toUnhook.add(linkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\r\n this.startFindDefinitionFromMouse(mouseEvent, withNullAsUndefined(keyboardEvent));\r\n }));\r\n this.toUnhook.add(linkGesture.onExecute((mouseEvent) => {\r\n if (this.isEnabled(mouseEvent)) {\r\n this.gotoDefinition(mouseEvent.target.position, mouseEvent.hasSideBySideModifier).then(() => {\r\n this.removeLinkDecorations();\r\n }, (error) => {\r\n this.removeLinkDecorations();\r\n onUnexpectedError(error);\r\n });\r\n }\r\n }));\r\n this.toUnhook.add(linkGesture.onCancel(() => {\r\n this.removeLinkDecorations();\r\n this.currentWordAtPosition = null;\r\n }));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(GotoDefinitionAtPositionEditorContribution.ID);\r\n }\r\n startFindDefinitionFromCursor(position) {\r\n // For issue: https://github.com/microsoft/vscode/issues/46257\r\n // equivalent to mouse move with meta/ctrl key\r\n // First find the definition and add decorations\r\n // to the editor to be shown with the content hover widget\r\n return this.startFindDefinition(position).then(() => {\r\n // Add listeners for editor cursor move and key down events\r\n // Dismiss the \"extended\" editor decorations when the user hides\r\n // the hover widget. There is no event for the widget itself so these\r\n // serve as a best effort. After removing the link decorations, the hover\r\n // widget is clean and will only show declarations per next request.\r\n this.toUnhookForKeyboard.add(this.editor.onDidChangeCursorPosition(() => {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n this.toUnhookForKeyboard.clear();\r\n }));\r\n this.toUnhookForKeyboard.add(this.editor.onKeyDown((e) => {\r\n if (e) {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n this.toUnhookForKeyboard.clear();\r\n }\r\n }));\r\n });\r\n }\r\n startFindDefinitionFromMouse(mouseEvent, withKey) {\r\n // check if we are active and on a content widget\r\n if (mouseEvent.target.type === 9 /* CONTENT_WIDGET */ && this.linkDecorations.length > 0) {\r\n return;\r\n }\r\n if (!this.editor.hasModel() || !this.isEnabled(mouseEvent, withKey)) {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n return;\r\n }\r\n const position = mouseEvent.target.position;\r\n this.startFindDefinition(position);\r\n }\r\n startFindDefinition(position) {\r\n var _a;\r\n // Dispose listeners for updating decorations when using keyboard to show definition hover\r\n this.toUnhookForKeyboard.clear();\r\n // Find word at mouse position\r\n const word = position ? (_a = this.editor.getModel()) === null || _a === void 0 ? void 0 : _a.getWordAtPosition(position) : null;\r\n if (!word) {\r\n this.currentWordAtPosition = null;\r\n this.removeLinkDecorations();\r\n return Promise.resolve(0);\r\n }\r\n // Return early if word at position is still the same\r\n if (this.currentWordAtPosition && this.currentWordAtPosition.startColumn === word.startColumn && this.currentWordAtPosition.endColumn === word.endColumn && this.currentWordAtPosition.word === word.word) {\r\n return Promise.resolve(0);\r\n }\r\n this.currentWordAtPosition = word;\r\n // Find definition and decorate word if found\r\n let state = new EditorState(this.editor, 4 /* Position */ | 1 /* Value */ | 2 /* Selection */ | 8 /* Scroll */);\r\n if (this.previousPromise) {\r\n this.previousPromise.cancel();\r\n this.previousPromise = null;\r\n }\r\n this.previousPromise = createCancelablePromise(token => this.findDefinition(position, token));\r\n return this.previousPromise.then(results => {\r\n if (!results || !results.length || !state.validate(this.editor)) {\r\n this.removeLinkDecorations();\r\n return;\r\n }\r\n // Multiple results\r\n if (results.length > 1) {\r\n this.addDecoration(new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn), new MarkdownString().appendText(nls.localize('multipleResults', \"Click to show {0} definitions.\", results.length)));\r\n }\r\n // Single result\r\n else {\r\n let result = results[0];\r\n if (!result.uri) {\r\n return;\r\n }\r\n this.textModelResolverService.createModelReference(result.uri).then(ref => {\r\n if (!ref.object || !ref.object.textEditorModel) {\r\n ref.dispose();\r\n return;\r\n }\r\n const { object: { textEditorModel } } = ref;\r\n const { startLineNumber } = result.range;\r\n if (startLineNumber < 1 || startLineNumber > textEditorModel.getLineCount()) {\r\n // invalid range\r\n ref.dispose();\r\n return;\r\n }\r\n const previewValue = this.getPreviewValue(textEditorModel, startLineNumber, result);\r\n let wordRange;\r\n if (result.originSelectionRange) {\r\n wordRange = Range.lift(result.originSelectionRange);\r\n }\r\n else {\r\n wordRange = new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n }\r\n const modeId = this.modeService.getModeIdByFilepathOrFirstLine(textEditorModel.uri);\r\n this.addDecoration(wordRange, new MarkdownString().appendCodeblock(modeId ? modeId : '', previewValue));\r\n ref.dispose();\r\n });\r\n }\r\n }).then(undefined, onUnexpectedError);\r\n }\r\n getPreviewValue(textEditorModel, startLineNumber, result) {\r\n let rangeToUse = result.targetSelectionRange ? result.range : this.getPreviewRangeBasedOnBrackets(textEditorModel, startLineNumber);\r\n const numberOfLinesInRange = rangeToUse.endLineNumber - rangeToUse.startLineNumber;\r\n if (numberOfLinesInRange >= GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES) {\r\n rangeToUse = this.getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber);\r\n }\r\n const previewValue = this.stripIndentationFromPreviewRange(textEditorModel, startLineNumber, rangeToUse);\r\n return previewValue;\r\n }\r\n stripIndentationFromPreviewRange(textEditorModel, startLineNumber, previewRange) {\r\n const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n let minIndent = startIndent;\r\n for (let endLineNumber = startLineNumber + 1; endLineNumber < previewRange.endLineNumber; endLineNumber++) {\r\n const endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\r\n minIndent = Math.min(minIndent, endIndent);\r\n }\r\n const previewValue = textEditorModel.getValueInRange(previewRange).replace(new RegExp(`^\\\\s{${minIndent - 1}}`, 'gm'), '').trim();\r\n return previewValue;\r\n }\r\n getPreviewRangeBasedOnIndentation(textEditorModel, startLineNumber) {\r\n const startIndent = textEditorModel.getLineFirstNonWhitespaceColumn(startLineNumber);\r\n const maxLineNumber = Math.min(textEditorModel.getLineCount(), startLineNumber + GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES);\r\n let endLineNumber = startLineNumber + 1;\r\n for (; endLineNumber < maxLineNumber; endLineNumber++) {\r\n let endIndent = textEditorModel.getLineFirstNonWhitespaceColumn(endLineNumber);\r\n if (startIndent === endIndent) {\r\n break;\r\n }\r\n }\r\n return new Range(startLineNumber, 1, endLineNumber + 1, 1);\r\n }\r\n getPreviewRangeBasedOnBrackets(textEditorModel, startLineNumber) {\r\n const maxLineNumber = Math.min(textEditorModel.getLineCount(), startLineNumber + GotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES);\r\n const brackets = [];\r\n let ignoreFirstEmpty = true;\r\n let currentBracket = textEditorModel.findNextBracket(new Position(startLineNumber, 1));\r\n while (currentBracket !== null) {\r\n if (brackets.length === 0) {\r\n brackets.push(currentBracket);\r\n }\r\n else {\r\n const lastBracket = brackets[brackets.length - 1];\r\n if (lastBracket.open[0] === currentBracket.open[0] && lastBracket.isOpen && !currentBracket.isOpen) {\r\n brackets.pop();\r\n }\r\n else {\r\n brackets.push(currentBracket);\r\n }\r\n if (brackets.length === 0) {\r\n if (ignoreFirstEmpty) {\r\n ignoreFirstEmpty = false;\r\n }\r\n else {\r\n return new Range(startLineNumber, 1, currentBracket.range.endLineNumber + 1, 1);\r\n }\r\n }\r\n }\r\n const maxColumn = textEditorModel.getLineMaxColumn(startLineNumber);\r\n let nextLineNumber = currentBracket.range.endLineNumber;\r\n let nextColumn = currentBracket.range.endColumn;\r\n if (maxColumn === currentBracket.range.endColumn) {\r\n nextLineNumber++;\r\n nextColumn = 1;\r\n }\r\n if (nextLineNumber > maxLineNumber) {\r\n return new Range(startLineNumber, 1, maxLineNumber + 1, 1);\r\n }\r\n currentBracket = textEditorModel.findNextBracket(new Position(nextLineNumber, nextColumn));\r\n }\r\n return new Range(startLineNumber, 1, maxLineNumber + 1, 1);\r\n }\r\n addDecoration(range, hoverMessage) {\r\n const newDecorations = {\r\n range: range,\r\n options: {\r\n inlineClassName: 'goto-definition-link',\r\n hoverMessage\r\n }\r\n };\r\n this.linkDecorations = this.editor.deltaDecorations(this.linkDecorations, [newDecorations]);\r\n }\r\n removeLinkDecorations() {\r\n if (this.linkDecorations.length > 0) {\r\n this.linkDecorations = this.editor.deltaDecorations(this.linkDecorations, []);\r\n }\r\n }\r\n isEnabled(mouseEvent, withKey) {\r\n return this.editor.hasModel() &&\r\n mouseEvent.isNoneOrSingleMouseDown &&\r\n (mouseEvent.target.type === 6 /* CONTENT_TEXT */) &&\r\n (mouseEvent.hasTriggerModifier || (withKey ? withKey.keyCodeIsTriggerKey : false)) &&\r\n DefinitionProviderRegistry.has(this.editor.getModel());\r\n }\r\n findDefinition(position, token) {\r\n const model = this.editor.getModel();\r\n if (!model) {\r\n return Promise.resolve(null);\r\n }\r\n return getDefinitionsAtPosition(model, position, token);\r\n }\r\n gotoDefinition(position, openToSide) {\r\n this.editor.setPosition(position);\r\n return this.editor.invokeWithinContext((accessor) => {\r\n const canPeek = !openToSide && this.editor.getOption(69 /* definitionLinkOpensInPeek */) && !this.isInPeekEditor(accessor);\r\n const action = new DefinitionAction({ openToSide, openInPeek: canPeek, muteMessage: true }, { alias: '', label: '', id: '', precondition: undefined });\r\n return action.run(accessor, this.editor);\r\n });\r\n }\r\n isInPeekEditor(accessor) {\r\n const contextKeyService = accessor.get(IContextKeyService);\r\n return PeekContext.inPeekEditor.getValue(contextKeyService);\r\n }\r\n dispose() {\r\n this.toUnhook.dispose();\r\n }\r\n};\r\nGotoDefinitionAtPositionEditorContribution.ID = 'editor.contrib.gotodefinitionatposition';\r\nGotoDefinitionAtPositionEditorContribution.MAX_SOURCE_PREVIEW_LINES = 8;\r\nGotoDefinitionAtPositionEditorContribution = __decorate([\r\n __param(1, ITextModelService),\r\n __param(2, IModeService)\r\n], GotoDefinitionAtPositionEditorContribution);\r\nexport { GotoDefinitionAtPositionEditorContribution };\r\nregisterEditorContribution(GotoDefinitionAtPositionEditorContribution.ID, GotoDefinitionAtPositionEditorContribution);\r\nregisterThemingParticipant((theme, collector) => {\r\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\r\n if (activeLinkForeground) {\r\n collector.addRule(`.monaco-editor .goto-definition-link { color: ${activeLinkForeground} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../../nls.js';\r\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\r\nimport { dispose, DisposableStore } from '../../../../base/common/lifecycle.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IContextKeyService, RawContextKey, ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\r\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\r\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\r\nimport { OneReference } from '../referencesModel.js';\r\nimport { ReferenceWidget, LayoutData } from './referencesWidget.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { Position } from '../../../common/core/position.js';\r\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\r\nimport { createCancelablePromise } from '../../../../base/common/async.js';\r\nimport { getOuterEditor, PeekContext } from '../../peekView/peekView.js';\r\nimport { IListService, WorkbenchListFocusContextKey } from '../../../../platform/list/browser/listService.js';\r\nimport { KeybindingsRegistry } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { KeyChord } from '../../../../base/common/keyCodes.js';\r\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\r\nexport const ctxReferenceSearchVisible = new RawContextKey('referenceSearchVisible', false);\r\nlet ReferencesController = class ReferencesController {\r\n constructor(_defaultTreeKeyboardSupport, _editor, contextKeyService, _editorService, _notificationService, _instantiationService, _storageService, _configurationService) {\r\n this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\r\n this._editor = _editor;\r\n this._editorService = _editorService;\r\n this._notificationService = _notificationService;\r\n this._instantiationService = _instantiationService;\r\n this._storageService = _storageService;\r\n this._configurationService = _configurationService;\r\n this._disposables = new DisposableStore();\r\n this._requestIdPool = 0;\r\n this._ignoreModelChangeEvent = false;\r\n this._referenceSearchVisible = ctxReferenceSearchVisible.bindTo(contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(ReferencesController.ID);\r\n }\r\n dispose() {\r\n this._referenceSearchVisible.reset();\r\n this._disposables.dispose();\r\n dispose(this._widget);\r\n dispose(this._model);\r\n this._widget = undefined;\r\n this._model = undefined;\r\n }\r\n toggleWidget(range, modelPromise, peekMode) {\r\n // close current widget and return early is position didn't change\r\n let widgetPosition;\r\n if (this._widget) {\r\n widgetPosition = this._widget.position;\r\n }\r\n this.closeWidget();\r\n if (!!widgetPosition && range.containsPosition(widgetPosition)) {\r\n return;\r\n }\r\n this._peekMode = peekMode;\r\n this._referenceSearchVisible.set(true);\r\n // close the widget on model/mode changes\r\n this._disposables.add(this._editor.onDidChangeModelLanguage(() => { this.closeWidget(); }));\r\n this._disposables.add(this._editor.onDidChangeModel(() => {\r\n if (!this._ignoreModelChangeEvent) {\r\n this.closeWidget();\r\n }\r\n }));\r\n const storageKey = 'peekViewLayout';\r\n const data = LayoutData.fromJSON(this._storageService.get(storageKey, 0 /* GLOBAL */, '{}'));\r\n this._widget = this._instantiationService.createInstance(ReferenceWidget, this._editor, this._defaultTreeKeyboardSupport, data);\r\n this._widget.setTitle(nls.localize('labelLoading', \"Loading...\"));\r\n this._widget.show(range);\r\n this._disposables.add(this._widget.onDidClose(() => {\r\n modelPromise.cancel();\r\n if (this._widget) {\r\n this._storageService.store(storageKey, JSON.stringify(this._widget.layoutData), 0 /* GLOBAL */);\r\n this._widget = undefined;\r\n }\r\n this.closeWidget();\r\n }));\r\n this._disposables.add(this._widget.onDidSelectReference(event => {\r\n let { element, kind } = event;\r\n if (!element) {\r\n return;\r\n }\r\n switch (kind) {\r\n case 'open':\r\n if (event.source !== 'editor' || !this._configurationService.getValue('editor.stablePeek')) {\r\n // when stable peek is configured we don't close\r\n // the peek window on selecting the editor\r\n this.openReference(element, false);\r\n }\r\n break;\r\n case 'side':\r\n this.openReference(element, true);\r\n break;\r\n case 'goto':\r\n if (peekMode) {\r\n this._gotoReference(element);\r\n }\r\n else {\r\n this.openReference(element, false);\r\n }\r\n break;\r\n }\r\n }));\r\n const requestId = ++this._requestIdPool;\r\n modelPromise.then(model => {\r\n // still current request? widget still open?\r\n if (requestId !== this._requestIdPool || !this._widget) {\r\n return undefined;\r\n }\r\n if (this._model) {\r\n this._model.dispose();\r\n }\r\n this._model = model;\r\n // show widget\r\n return this._widget.setModel(this._model).then(() => {\r\n if (this._widget && this._model && this._editor.hasModel()) { // might have been closed\r\n // set title\r\n if (!this._model.isEmpty) {\r\n this._widget.setMetaTitle(nls.localize('metaTitle.N', \"{0} ({1})\", this._model.title, this._model.references.length));\r\n }\r\n else {\r\n this._widget.setMetaTitle('');\r\n }\r\n // set 'best' selection\r\n let uri = this._editor.getModel().uri;\r\n let pos = new Position(range.startLineNumber, range.startColumn);\r\n let selection = this._model.nearestReference(uri, pos);\r\n if (selection) {\r\n return this._widget.setSelection(selection).then(() => {\r\n if (this._widget && this._editor.getOption(68 /* peekWidgetDefaultFocus */) === 'editor') {\r\n this._widget.focusOnPreviewEditor();\r\n }\r\n });\r\n }\r\n }\r\n return undefined;\r\n });\r\n }, error => {\r\n this._notificationService.error(error);\r\n });\r\n }\r\n changeFocusBetweenPreviewAndReferences() {\r\n if (!this._widget) {\r\n // can be called while still resolving...\r\n return;\r\n }\r\n if (this._widget.isPreviewEditorFocused()) {\r\n this._widget.focusOnReferenceTree();\r\n }\r\n else {\r\n this._widget.focusOnPreviewEditor();\r\n }\r\n }\r\n goToNextOrPreviousReference(fwd) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel() || !this._model || !this._widget) {\r\n // can be called while still resolving...\r\n return;\r\n }\r\n const currentPosition = this._widget.position;\r\n if (!currentPosition) {\r\n return;\r\n }\r\n const source = this._model.nearestReference(this._editor.getModel().uri, currentPosition);\r\n if (!source) {\r\n return;\r\n }\r\n const target = this._model.nextOrPreviousReference(source, fwd);\r\n const editorFocus = this._editor.hasTextFocus();\r\n const previewEditorFocus = this._widget.isPreviewEditorFocused();\r\n yield this._widget.setSelection(target);\r\n yield this._gotoReference(target);\r\n if (editorFocus) {\r\n this._editor.focus();\r\n }\r\n else if (this._widget && previewEditorFocus) {\r\n this._widget.focusOnPreviewEditor();\r\n }\r\n });\r\n }\r\n revealReference(reference) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel() || !this._model || !this._widget) {\r\n // can be called while still resolving...\r\n return;\r\n }\r\n yield this._widget.revealReference(reference);\r\n });\r\n }\r\n closeWidget(focusEditor = true) {\r\n dispose(this._widget);\r\n dispose(this._model);\r\n this._referenceSearchVisible.reset();\r\n this._disposables.clear();\r\n this._widget = undefined;\r\n this._model = undefined;\r\n if (focusEditor) {\r\n this._editor.focus();\r\n }\r\n this._requestIdPool += 1; // Cancel pending requests\r\n }\r\n _gotoReference(ref) {\r\n if (this._widget) {\r\n this._widget.hide();\r\n }\r\n this._ignoreModelChangeEvent = true;\r\n const range = Range.lift(ref.range).collapseToStart();\r\n return this._editorService.openCodeEditor({\r\n resource: ref.uri,\r\n options: { selection: range }\r\n }, this._editor).then(openedEditor => {\r\n var _a;\r\n this._ignoreModelChangeEvent = false;\r\n if (!openedEditor || !this._widget) {\r\n // something went wrong...\r\n this.closeWidget();\r\n return;\r\n }\r\n if (this._editor === openedEditor) {\r\n //\r\n this._widget.show(range);\r\n this._widget.focusOnReferenceTree();\r\n }\r\n else {\r\n // we opened a different editor instance which means a different controller instance.\r\n // therefore we stop with this controller and continue with the other\r\n const other = ReferencesController.get(openedEditor);\r\n const model = this._model.clone();\r\n this.closeWidget();\r\n openedEditor.focus();\r\n other.toggleWidget(range, createCancelablePromise(_ => Promise.resolve(model)), (_a = this._peekMode) !== null && _a !== void 0 ? _a : false);\r\n }\r\n }, (err) => {\r\n this._ignoreModelChangeEvent = false;\r\n onUnexpectedError(err);\r\n });\r\n }\r\n openReference(ref, sideBySide) {\r\n // clear stage\r\n if (!sideBySide) {\r\n this.closeWidget();\r\n }\r\n const { uri, range } = ref;\r\n this._editorService.openCodeEditor({\r\n resource: uri,\r\n options: { selection: range }\r\n }, this._editor, sideBySide);\r\n }\r\n};\r\nReferencesController.ID = 'editor.contrib.referencesController';\r\nReferencesController = __decorate([\r\n __param(2, IContextKeyService),\r\n __param(3, ICodeEditorService),\r\n __param(4, INotificationService),\r\n __param(5, IInstantiationService),\r\n __param(6, IStorageService),\r\n __param(7, IConfigurationService)\r\n], ReferencesController);\r\nexport { ReferencesController };\r\nfunction withController(accessor, fn) {\r\n const outerEditor = getOuterEditor(accessor);\r\n if (!outerEditor) {\r\n return;\r\n }\r\n let controller = ReferencesController.get(outerEditor);\r\n if (controller) {\r\n fn(controller);\r\n }\r\n}\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'togglePeekWidgetFocus',\r\n weight: 100 /* EditorContrib */,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 60 /* F2 */),\r\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\r\n handler(accessor) {\r\n withController(accessor, controller => {\r\n controller.changeFocusBetweenPreviewAndReferences();\r\n });\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'goToNextReference',\r\n weight: 100 /* EditorContrib */ - 10,\r\n primary: 62 /* F4 */,\r\n secondary: [70 /* F12 */],\r\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\r\n handler(accessor) {\r\n withController(accessor, controller => {\r\n controller.goToNextOrPreviousReference(true);\r\n });\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'goToPreviousReference',\r\n weight: 100 /* EditorContrib */ - 10,\r\n primary: 1024 /* Shift */ | 62 /* F4 */,\r\n secondary: [1024 /* Shift */ | 70 /* F12 */],\r\n when: ContextKeyExpr.or(ctxReferenceSearchVisible, PeekContext.inPeekEditor),\r\n handler(accessor) {\r\n withController(accessor, controller => {\r\n controller.goToNextOrPreviousReference(false);\r\n });\r\n }\r\n});\r\n// commands that aren't needed anymore because there is now ContextKeyExpr.OR\r\nCommandsRegistry.registerCommandAlias('goToNextReferenceFromEmbeddedEditor', 'goToNextReference');\r\nCommandsRegistry.registerCommandAlias('goToPreviousReferenceFromEmbeddedEditor', 'goToPreviousReference');\r\n// close\r\nCommandsRegistry.registerCommandAlias('closeReferenceSearchEditor', 'closeReferenceSearch');\r\nCommandsRegistry.registerCommand('closeReferenceSearch', accessor => withController(accessor, controller => controller.closeWidget()));\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'closeReferenceSearch',\r\n weight: 100 /* EditorContrib */ - 101,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */],\r\n when: ContextKeyExpr.and(PeekContext.inPeekEditor, ContextKeyExpr.not('config.editor.stablePeek'))\r\n});\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'closeReferenceSearch',\r\n weight: 200 /* WorkbenchContrib */ + 50,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */],\r\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, ContextKeyExpr.not('config.editor.stablePeek'))\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'revealReference',\r\n weight: 200 /* WorkbenchContrib */,\r\n primary: 3 /* Enter */,\r\n mac: {\r\n primary: 3 /* Enter */,\r\n secondary: [2048 /* CtrlCmd */ | 18 /* DownArrow */]\r\n },\r\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey),\r\n handler(accessor) {\r\n var _a;\r\n const listService = accessor.get(IListService);\r\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\r\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\r\n withController(accessor, controller => controller.revealReference(focus[0]));\r\n }\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'openReferenceToSide',\r\n weight: 100 /* EditorContrib */,\r\n primary: 2048 /* CtrlCmd */ | 3 /* Enter */,\r\n mac: {\r\n primary: 256 /* WinCtrl */ | 3 /* Enter */\r\n },\r\n when: ContextKeyExpr.and(ctxReferenceSearchVisible, WorkbenchListFocusContextKey),\r\n handler(accessor) {\r\n var _a;\r\n const listService = accessor.get(IListService);\r\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\r\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\r\n withController(accessor, controller => controller.openReference(focus[0], true));\r\n }\r\n }\r\n});\r\nCommandsRegistry.registerCommand('openReference', (accessor) => {\r\n var _a;\r\n const listService = accessor.get(IListService);\r\n const focus = (_a = listService.lastFocusedList) === null || _a === void 0 ? void 0 : _a.getFocus();\r\n if (Array.isArray(focus) && focus[0] instanceof OneReference) {\r\n withController(accessor, controller => controller.openReference(focus[0], false));\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ReferencesModel, FileReferences, OneReference } from '../referencesModel.js';\r\nimport { ITextModelService } from '../../../common/services/resolverService.js';\r\nimport { IconLabel } from '../../../../base/browser/ui/iconLabel/iconLabel.js';\r\nimport { CountBadge } from '../../../../base/browser/ui/countBadge/countBadge.js';\r\nimport { ILabelService } from '../../../../platform/label/common/label.js';\r\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\r\nimport { attachBadgeStyler } from '../../../../platform/theme/common/styler.js';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { localize } from '../../../../nls.js';\r\nimport { getBaseLabel } from '../../../../base/common/labels.js';\r\nimport { dirname, basename } from '../../../../base/common/resources.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\r\nimport { FuzzyScore, createMatches } from '../../../../base/common/filters.js';\r\nimport { HighlightedLabel } from '../../../../base/browser/ui/highlightedlabel/highlightedLabel.js';\r\nlet DataSource = class DataSource {\r\n constructor(_resolverService) {\r\n this._resolverService = _resolverService;\r\n }\r\n hasChildren(element) {\r\n if (element instanceof ReferencesModel) {\r\n return true;\r\n }\r\n if (element instanceof FileReferences) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n getChildren(element) {\r\n if (element instanceof ReferencesModel) {\r\n return element.groups;\r\n }\r\n if (element instanceof FileReferences) {\r\n return element.resolve(this._resolverService).then(val => {\r\n // if (element.failure) {\r\n // \t// refresh the element on failure so that\r\n // \t// we can update its rendering\r\n // \treturn tree.refresh(element).then(() => val.children);\r\n // }\r\n return val.children;\r\n });\r\n }\r\n throw new Error('bad tree');\r\n }\r\n};\r\nDataSource = __decorate([\r\n __param(0, ITextModelService)\r\n], DataSource);\r\nexport { DataSource };\r\n//#endregion\r\nexport class Delegate {\r\n getHeight() {\r\n return 23;\r\n }\r\n getTemplateId(element) {\r\n if (element instanceof FileReferences) {\r\n return FileReferencesRenderer.id;\r\n }\r\n else {\r\n return OneReferenceRenderer.id;\r\n }\r\n }\r\n}\r\nlet StringRepresentationProvider = class StringRepresentationProvider {\r\n constructor(_keybindingService) {\r\n this._keybindingService = _keybindingService;\r\n }\r\n getKeyboardNavigationLabel(element) {\r\n var _a;\r\n if (element instanceof OneReference) {\r\n const parts = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\r\n if (parts) {\r\n return parts.value;\r\n }\r\n }\r\n // FileReferences or unresolved OneReference\r\n return basename(element.uri);\r\n }\r\n};\r\nStringRepresentationProvider = __decorate([\r\n __param(0, IKeybindingService)\r\n], StringRepresentationProvider);\r\nexport { StringRepresentationProvider };\r\nexport class IdentityProvider {\r\n getId(element) {\r\n return element instanceof OneReference ? element.id : element.uri;\r\n }\r\n}\r\n//#region render: File\r\nlet FileReferencesTemplate = class FileReferencesTemplate extends Disposable {\r\n constructor(container, _uriLabel, themeService) {\r\n super();\r\n this._uriLabel = _uriLabel;\r\n const parent = document.createElement('div');\r\n parent.classList.add('reference-file');\r\n this.file = this._register(new IconLabel(parent, { supportHighlights: true }));\r\n this.badge = new CountBadge(dom.append(parent, dom.$('.count')));\r\n this._register(attachBadgeStyler(this.badge, themeService));\r\n container.appendChild(parent);\r\n }\r\n set(element, matches) {\r\n let parent = dirname(element.uri);\r\n this.file.setLabel(getBaseLabel(element.uri), this._uriLabel.getUriLabel(parent, { relative: true }), { title: this._uriLabel.getUriLabel(element.uri), matches });\r\n const len = element.children.length;\r\n this.badge.setCount(len);\r\n if (len > 1) {\r\n this.badge.setTitleFormat(localize('referencesCount', \"{0} references\", len));\r\n }\r\n else {\r\n this.badge.setTitleFormat(localize('referenceCount', \"{0} reference\", len));\r\n }\r\n }\r\n};\r\nFileReferencesTemplate = __decorate([\r\n __param(1, ILabelService),\r\n __param(2, IThemeService)\r\n], FileReferencesTemplate);\r\nlet FileReferencesRenderer = class FileReferencesRenderer {\r\n constructor(_instantiationService) {\r\n this._instantiationService = _instantiationService;\r\n this.templateId = FileReferencesRenderer.id;\r\n }\r\n renderTemplate(container) {\r\n return this._instantiationService.createInstance(FileReferencesTemplate, container);\r\n }\r\n renderElement(node, index, template) {\r\n template.set(node.element, createMatches(node.filterData));\r\n }\r\n disposeTemplate(templateData) {\r\n templateData.dispose();\r\n }\r\n};\r\nFileReferencesRenderer.id = 'FileReferencesRenderer';\r\nFileReferencesRenderer = __decorate([\r\n __param(0, IInstantiationService)\r\n], FileReferencesRenderer);\r\nexport { FileReferencesRenderer };\r\n//#endregion\r\n//#region render: Reference\r\nclass OneReferenceTemplate {\r\n constructor(container) {\r\n this.label = new HighlightedLabel(container, false);\r\n }\r\n set(element, score) {\r\n var _a;\r\n const preview = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);\r\n if (!preview || !preview.value) {\r\n // this means we FAILED to resolve the document or the value is the empty string\r\n this.label.set(`${basename(element.uri)}:${element.range.startLineNumber + 1}:${element.range.startColumn + 1}`);\r\n }\r\n else {\r\n // render search match as highlight unless\r\n // we have score, then render the score\r\n const { value, highlight } = preview;\r\n if (score && !FuzzyScore.isDefault(score)) {\r\n this.label.element.classList.toggle('referenceMatch', false);\r\n this.label.set(value, createMatches(score));\r\n }\r\n else {\r\n this.label.element.classList.toggle('referenceMatch', true);\r\n this.label.set(value, [highlight]);\r\n }\r\n }\r\n }\r\n}\r\nexport class OneReferenceRenderer {\r\n constructor() {\r\n this.templateId = OneReferenceRenderer.id;\r\n }\r\n renderTemplate(container) {\r\n return new OneReferenceTemplate(container);\r\n }\r\n renderElement(node, index, templateData) {\r\n templateData.set(node.element, node.filterData);\r\n }\r\n disposeTemplate() {\r\n }\r\n}\r\nOneReferenceRenderer.id = 'OneReferenceRenderer';\r\n//#endregion\r\nexport class AccessibilityProvider {\r\n getWidgetAriaLabel() {\r\n return localize('treeAriaLabel', \"References\");\r\n }\r\n getAriaLabel(element) {\r\n return element.ariaMessage;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './referencesWidget.css';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { Color } from '../../../../base/common/color.js';\r\nimport { Emitter, Event } from '../../../../base/common/event.js';\r\nimport { dispose, DisposableStore } from '../../../../base/common/lifecycle.js';\r\nimport { Schemas } from '../../../../base/common/network.js';\r\nimport { basenameOrAuthority, dirname } from '../../../../base/common/resources.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../../browser/widget/embeddedCodeEditorWidget.js';\r\nimport { Range } from '../../../common/core/range.js';\r\nimport { ModelDecorationOptions, TextModel } from '../../../common/model/textModel.js';\r\nimport { ITextModelService } from '../../../common/services/resolverService.js';\r\nimport { AccessibilityProvider, DataSource, Delegate, FileReferencesRenderer, OneReferenceRenderer, StringRepresentationProvider, IdentityProvider } from './referencesTree.js';\r\nimport * as nls from '../../../../nls.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { ILabelService } from '../../../../platform/label/common/label.js';\r\nimport { WorkbenchAsyncDataTree } from '../../../../platform/list/browser/listService.js';\r\nimport { activeContrastBorder } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport * as peekView from '../../peekView/peekView.js';\r\nimport { FileReferences, OneReference } from '../referencesModel.js';\r\nimport { SplitView, Sizing } from '../../../../base/browser/ui/splitview/splitview.js';\r\nimport { IUndoRedoService } from '../../../../platform/undoRedo/common/undoRedo.js';\r\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\r\nclass DecorationsManager {\r\n constructor(_editor, _model) {\r\n this._editor = _editor;\r\n this._model = _model;\r\n this._decorations = new Map();\r\n this._decorationIgnoreSet = new Set();\r\n this._callOnDispose = new DisposableStore();\r\n this._callOnModelChange = new DisposableStore();\r\n this._callOnDispose.add(this._editor.onDidChangeModel(() => this._onModelChanged()));\r\n this._onModelChanged();\r\n }\r\n dispose() {\r\n this._callOnModelChange.dispose();\r\n this._callOnDispose.dispose();\r\n this.removeDecorations();\r\n }\r\n _onModelChanged() {\r\n this._callOnModelChange.clear();\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n for (let ref of this._model.references) {\r\n if (ref.uri.toString() === model.uri.toString()) {\r\n this._addDecorations(ref.parent);\r\n return;\r\n }\r\n }\r\n }\r\n _addDecorations(reference) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n this._callOnModelChange.add(this._editor.getModel().onDidChangeDecorations(() => this._onDecorationChanged()));\r\n const newDecorations = [];\r\n const newDecorationsActualIndex = [];\r\n for (let i = 0, len = reference.children.length; i < len; i++) {\r\n let oneReference = reference.children[i];\r\n if (this._decorationIgnoreSet.has(oneReference.id)) {\r\n continue;\r\n }\r\n if (oneReference.uri.toString() !== this._editor.getModel().uri.toString()) {\r\n continue;\r\n }\r\n newDecorations.push({\r\n range: oneReference.range,\r\n options: DecorationsManager.DecorationOptions\r\n });\r\n newDecorationsActualIndex.push(i);\r\n }\r\n const decorations = this._editor.deltaDecorations([], newDecorations);\r\n for (let i = 0; i < decorations.length; i++) {\r\n this._decorations.set(decorations[i], reference.children[newDecorationsActualIndex[i]]);\r\n }\r\n }\r\n _onDecorationChanged() {\r\n const toRemove = [];\r\n const model = this._editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n for (let [decorationId, reference] of this._decorations) {\r\n const newRange = model.getDecorationRange(decorationId);\r\n if (!newRange) {\r\n continue;\r\n }\r\n let ignore = false;\r\n if (Range.equalsRange(newRange, reference.range)) {\r\n continue;\r\n }\r\n if (Range.spansMultipleLines(newRange)) {\r\n ignore = true;\r\n }\r\n else {\r\n const lineLength = reference.range.endColumn - reference.range.startColumn;\r\n const newLineLength = newRange.endColumn - newRange.startColumn;\r\n if (lineLength !== newLineLength) {\r\n ignore = true;\r\n }\r\n }\r\n if (ignore) {\r\n this._decorationIgnoreSet.add(reference.id);\r\n toRemove.push(decorationId);\r\n }\r\n else {\r\n reference.range = newRange;\r\n }\r\n }\r\n for (let i = 0, len = toRemove.length; i < len; i++) {\r\n this._decorations.delete(toRemove[i]);\r\n }\r\n this._editor.deltaDecorations(toRemove, []);\r\n }\r\n removeDecorations() {\r\n this._editor.deltaDecorations([...this._decorations.keys()], []);\r\n this._decorations.clear();\r\n }\r\n}\r\nDecorationsManager.DecorationOptions = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'reference-decoration'\r\n});\r\nexport class LayoutData {\r\n constructor() {\r\n this.ratio = 0.7;\r\n this.heightInLines = 18;\r\n }\r\n static fromJSON(raw) {\r\n let ratio;\r\n let heightInLines;\r\n try {\r\n const data = JSON.parse(raw);\r\n ratio = data.ratio;\r\n heightInLines = data.heightInLines;\r\n }\r\n catch (_a) {\r\n //\r\n }\r\n return {\r\n ratio: ratio || 0.7,\r\n heightInLines: heightInLines || 18\r\n };\r\n }\r\n}\r\nclass ReferencesTree extends WorkbenchAsyncDataTree {\r\n}\r\n/**\r\n * ZoneWidget that is shown inside the editor\r\n */\r\nlet ReferenceWidget = class ReferenceWidget extends peekView.PeekViewWidget {\r\n constructor(editor, _defaultTreeKeyboardSupport, layoutData, themeService, _textModelResolverService, _instantiationService, _peekViewService, _uriLabel, _undoRedoService, _keybindingService) {\r\n super(editor, { showFrame: false, showArrow: true, isResizeable: true, isAccessible: true }, _instantiationService);\r\n this._defaultTreeKeyboardSupport = _defaultTreeKeyboardSupport;\r\n this.layoutData = layoutData;\r\n this._textModelResolverService = _textModelResolverService;\r\n this._instantiationService = _instantiationService;\r\n this._peekViewService = _peekViewService;\r\n this._uriLabel = _uriLabel;\r\n this._undoRedoService = _undoRedoService;\r\n this._keybindingService = _keybindingService;\r\n this._disposeOnNewModel = new DisposableStore();\r\n this._callOnDispose = new DisposableStore();\r\n this._onDidSelectReference = new Emitter();\r\n this.onDidSelectReference = this._onDidSelectReference.event;\r\n this._dim = { height: 0, width: 0 };\r\n this._applyTheme(themeService.getColorTheme());\r\n this._callOnDispose.add(themeService.onDidColorThemeChange(this._applyTheme.bind(this)));\r\n this._peekViewService.addExclusiveWidget(editor, this);\r\n this.create();\r\n }\r\n dispose() {\r\n this.setModel(undefined);\r\n this._callOnDispose.dispose();\r\n this._disposeOnNewModel.dispose();\r\n dispose(this._preview);\r\n dispose(this._previewNotAvailableMessage);\r\n dispose(this._tree);\r\n dispose(this._previewModelReference);\r\n this._splitView.dispose();\r\n super.dispose();\r\n }\r\n _applyTheme(theme) {\r\n const borderColor = theme.getColor(peekView.peekViewBorder) || Color.transparent;\r\n this.style({\r\n arrowColor: borderColor,\r\n frameColor: borderColor,\r\n headerBackgroundColor: theme.getColor(peekView.peekViewTitleBackground) || Color.transparent,\r\n primaryHeadingColor: theme.getColor(peekView.peekViewTitleForeground),\r\n secondaryHeadingColor: theme.getColor(peekView.peekViewTitleInfoForeground)\r\n });\r\n }\r\n show(where) {\r\n this.editor.revealRangeInCenterIfOutsideViewport(where, 0 /* Smooth */);\r\n super.show(where, this.layoutData.heightInLines || 18);\r\n }\r\n focusOnReferenceTree() {\r\n this._tree.domFocus();\r\n }\r\n focusOnPreviewEditor() {\r\n this._preview.focus();\r\n }\r\n isPreviewEditorFocused() {\r\n return this._preview.hasTextFocus();\r\n }\r\n _onTitleClick(e) {\r\n if (this._preview && this._preview.getModel()) {\r\n this._onDidSelectReference.fire({\r\n element: this._getFocusedReference(),\r\n kind: e.ctrlKey || e.metaKey || e.altKey ? 'side' : 'open',\r\n source: 'title'\r\n });\r\n }\r\n }\r\n _fillBody(containerElement) {\r\n this.setCssClass('reference-zone-widget');\r\n // message pane\r\n this._messageContainer = dom.append(containerElement, dom.$('div.messages'));\r\n dom.hide(this._messageContainer);\r\n this._splitView = new SplitView(containerElement, { orientation: 1 /* HORIZONTAL */ });\r\n // editor\r\n this._previewContainer = dom.append(containerElement, dom.$('div.preview.inline'));\r\n let options = {\r\n scrollBeyondLastLine: false,\r\n scrollbar: {\r\n verticalScrollbarSize: 14,\r\n horizontal: 'auto',\r\n useShadows: true,\r\n verticalHasArrows: false,\r\n horizontalHasArrows: false,\r\n alwaysConsumeMouseWheel: false\r\n },\r\n overviewRulerLanes: 2,\r\n fixedOverflowWidgets: true,\r\n minimap: {\r\n enabled: false\r\n }\r\n };\r\n this._preview = this._instantiationService.createInstance(EmbeddedCodeEditorWidget, this._previewContainer, options, this.editor);\r\n dom.hide(this._previewContainer);\r\n this._previewNotAvailableMessage = new TextModel(nls.localize('missingPreviewMessage', \"no preview available\"), TextModel.DEFAULT_CREATION_OPTIONS, null, null, this._undoRedoService);\r\n // tree\r\n this._treeContainer = dom.append(containerElement, dom.$('div.ref-tree.inline'));\r\n const treeOptions = {\r\n keyboardSupport: this._defaultTreeKeyboardSupport,\r\n accessibilityProvider: new AccessibilityProvider(),\r\n keyboardNavigationLabelProvider: this._instantiationService.createInstance(StringRepresentationProvider),\r\n identityProvider: new IdentityProvider(),\r\n openOnSingleClick: true,\r\n openOnFocus: true,\r\n overrideStyles: {\r\n listBackground: peekView.peekViewResultsBackground\r\n }\r\n };\r\n if (this._defaultTreeKeyboardSupport) {\r\n // the tree will consume `Escape` and prevent the widget from closing\r\n this._callOnDispose.add(dom.addStandardDisposableListener(this._treeContainer, 'keydown', (e) => {\r\n if (e.equals(9 /* Escape */)) {\r\n this._keybindingService.dispatchEvent(e, e.target);\r\n e.stopPropagation();\r\n }\r\n }, true));\r\n }\r\n this._tree = this._instantiationService.createInstance(ReferencesTree, 'ReferencesWidget', this._treeContainer, new Delegate(), [\r\n this._instantiationService.createInstance(FileReferencesRenderer),\r\n this._instantiationService.createInstance(OneReferenceRenderer),\r\n ], this._instantiationService.createInstance(DataSource), treeOptions);\r\n // split stuff\r\n this._splitView.addView({\r\n onDidChange: Event.None,\r\n element: this._previewContainer,\r\n minimumSize: 200,\r\n maximumSize: Number.MAX_VALUE,\r\n layout: (width) => {\r\n this._preview.layout({ height: this._dim.height, width });\r\n }\r\n }, Sizing.Distribute);\r\n this._splitView.addView({\r\n onDidChange: Event.None,\r\n element: this._treeContainer,\r\n minimumSize: 100,\r\n maximumSize: Number.MAX_VALUE,\r\n layout: (width) => {\r\n this._treeContainer.style.height = `${this._dim.height}px`;\r\n this._treeContainer.style.width = `${width}px`;\r\n this._tree.layout(this._dim.height, width);\r\n }\r\n }, Sizing.Distribute);\r\n this._disposables.add(this._splitView.onDidSashChange(() => {\r\n if (this._dim.width) {\r\n this.layoutData.ratio = this._splitView.getViewSize(0) / this._dim.width;\r\n }\r\n }, undefined));\r\n // listen on selection and focus\r\n let onEvent = (element, kind) => {\r\n if (element instanceof OneReference) {\r\n if (kind === 'show') {\r\n this._revealReference(element, false);\r\n }\r\n this._onDidSelectReference.fire({ element, kind, source: 'tree' });\r\n }\r\n };\r\n this._tree.onDidOpen(e => {\r\n if (e.sideBySide) {\r\n onEvent(e.element, 'side');\r\n }\r\n else if (e.editorOptions.pinned) {\r\n onEvent(e.element, 'goto');\r\n }\r\n else {\r\n onEvent(e.element, 'show');\r\n }\r\n });\r\n dom.hide(this._treeContainer);\r\n }\r\n _onWidth(width) {\r\n if (this._dim) {\r\n this._doLayoutBody(this._dim.height, width);\r\n }\r\n }\r\n _doLayoutBody(heightInPixel, widthInPixel) {\r\n super._doLayoutBody(heightInPixel, widthInPixel);\r\n this._dim = { height: heightInPixel, width: widthInPixel };\r\n this.layoutData.heightInLines = this._viewZone ? this._viewZone.heightInLines : this.layoutData.heightInLines;\r\n this._splitView.layout(widthInPixel);\r\n this._splitView.resizeView(0, widthInPixel * this.layoutData.ratio);\r\n }\r\n setSelection(selection) {\r\n return this._revealReference(selection, true).then(() => {\r\n if (!this._model) {\r\n // disposed\r\n return;\r\n }\r\n // show in tree\r\n this._tree.setSelection([selection]);\r\n this._tree.setFocus([selection]);\r\n });\r\n }\r\n setModel(newModel) {\r\n // clean up\r\n this._disposeOnNewModel.clear();\r\n this._model = newModel;\r\n if (this._model) {\r\n return this._onNewModel();\r\n }\r\n return Promise.resolve();\r\n }\r\n _onNewModel() {\r\n if (!this._model) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (this._model.isEmpty) {\r\n this.setTitle('');\r\n this._messageContainer.innerText = nls.localize('noResults', \"No results\");\r\n dom.show(this._messageContainer);\r\n return Promise.resolve(undefined);\r\n }\r\n dom.hide(this._messageContainer);\r\n this._decorationsManager = new DecorationsManager(this._preview, this._model);\r\n this._disposeOnNewModel.add(this._decorationsManager);\r\n // listen on model changes\r\n this._disposeOnNewModel.add(this._model.onDidChangeReferenceRange(reference => this._tree.rerender(reference)));\r\n // listen on editor\r\n this._disposeOnNewModel.add(this._preview.onMouseDown(e => {\r\n const { event, target } = e;\r\n if (event.detail !== 2) {\r\n return;\r\n }\r\n const element = this._getFocusedReference();\r\n if (!element) {\r\n return;\r\n }\r\n this._onDidSelectReference.fire({\r\n element: { uri: element.uri, range: target.range },\r\n kind: (event.ctrlKey || event.metaKey || event.altKey) ? 'side' : 'open',\r\n source: 'editor'\r\n });\r\n }));\r\n // make sure things are rendered\r\n this.container.classList.add('results-loaded');\r\n dom.show(this._treeContainer);\r\n dom.show(this._previewContainer);\r\n this._splitView.layout(this._dim.width);\r\n this.focusOnReferenceTree();\r\n // pick input and a reference to begin with\r\n return this._tree.setInput(this._model.groups.length === 1 ? this._model.groups[0] : this._model);\r\n }\r\n _getFocusedReference() {\r\n const [element] = this._tree.getFocus();\r\n if (element instanceof OneReference) {\r\n return element;\r\n }\r\n else if (element instanceof FileReferences) {\r\n if (element.children.length > 0) {\r\n return element.children[0];\r\n }\r\n }\r\n return undefined;\r\n }\r\n revealReference(reference) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this._revealReference(reference, false);\r\n this._onDidSelectReference.fire({ element: reference, kind: 'goto', source: 'tree' });\r\n });\r\n }\r\n _revealReference(reference, revealParent) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // check if there is anything to do...\r\n if (this._revealedReference === reference) {\r\n return;\r\n }\r\n this._revealedReference = reference;\r\n // Update widget header\r\n if (reference.uri.scheme !== Schemas.inMemory) {\r\n this.setTitle(basenameOrAuthority(reference.uri), this._uriLabel.getUriLabel(dirname(reference.uri)));\r\n }\r\n else {\r\n this.setTitle(nls.localize('peekView.alternateTitle', \"References\"));\r\n }\r\n const promise = this._textModelResolverService.createModelReference(reference.uri);\r\n if (this._tree.getInput() === reference.parent) {\r\n this._tree.reveal(reference);\r\n }\r\n else {\r\n if (revealParent) {\r\n this._tree.reveal(reference.parent);\r\n }\r\n yield this._tree.expand(reference.parent);\r\n this._tree.reveal(reference);\r\n }\r\n const ref = yield promise;\r\n if (!this._model) {\r\n // disposed\r\n ref.dispose();\r\n return;\r\n }\r\n dispose(this._previewModelReference);\r\n // show in editor\r\n const model = ref.object;\r\n if (model) {\r\n const scrollType = this._preview.getModel() === model.textEditorModel ? 0 /* Smooth */ : 1 /* Immediate */;\r\n const sel = Range.lift(reference.range).collapseToStart();\r\n this._previewModelReference = ref;\r\n this._preview.setModel(model.textEditorModel);\r\n this._preview.setSelection(sel);\r\n this._preview.revealRangeInCenter(sel, scrollType);\r\n }\r\n else {\r\n this._preview.setModel(this._previewNotAvailableMessage);\r\n ref.dispose();\r\n }\r\n });\r\n }\r\n};\r\nReferenceWidget = __decorate([\r\n __param(3, IThemeService),\r\n __param(4, ITextModelService),\r\n __param(5, IInstantiationService),\r\n __param(6, peekView.IPeekViewService),\r\n __param(7, ILabelService),\r\n __param(8, IUndoRedoService),\r\n __param(9, IKeybindingService)\r\n], ReferenceWidget);\r\nexport { ReferenceWidget };\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const findMatchHighlightColor = theme.getColor(peekView.peekViewResultsMatchHighlight);\r\n if (findMatchHighlightColor) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { background-color: ${findMatchHighlightColor}; }`);\r\n }\r\n const referenceHighlightColor = theme.getColor(peekView.peekViewEditorMatchHighlight);\r\n if (referenceHighlightColor) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { background-color: ${referenceHighlightColor}; }`);\r\n }\r\n const referenceHighlightBorder = theme.getColor(peekView.peekViewEditorMatchHighlightBorder);\r\n if (referenceHighlightBorder) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .reference-decoration { border: 2px solid ${referenceHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const hcOutline = theme.getColor(activeContrastBorder);\r\n if (hcOutline) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .referenceMatch .highlight { border: 1px dotted ${hcOutline}; box-sizing: border-box; }`);\r\n }\r\n const resultsBackground = theme.getColor(peekView.peekViewResultsBackground);\r\n if (resultsBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree { background-color: ${resultsBackground}; }`);\r\n }\r\n const resultsMatchForeground = theme.getColor(peekView.peekViewResultsMatchForeground);\r\n if (resultsMatchForeground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree { color: ${resultsMatchForeground}; }`);\r\n }\r\n const resultsFileForeground = theme.getColor(peekView.peekViewResultsFileForeground);\r\n if (resultsFileForeground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .reference-file { color: ${resultsFileForeground}; }`);\r\n }\r\n const resultsSelectedBackground = theme.getColor(peekView.peekViewResultsSelectionBackground);\r\n if (resultsSelectedBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { background-color: ${resultsSelectedBackground}; }`);\r\n }\r\n const resultsSelectedForeground = theme.getColor(peekView.peekViewResultsSelectionForeground);\r\n if (resultsSelectedForeground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .ref-tree .monaco-list:focus .monaco-list-rows > .monaco-list-row.selected:not(.highlighted) { color: ${resultsSelectedForeground} !important; }`);\r\n }\r\n const editorBackground = theme.getColor(peekView.peekViewEditorBackground);\r\n if (editorBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .monaco-editor .monaco-editor-background,` +\r\n `.monaco-editor .reference-zone-widget .preview .monaco-editor .inputarea.ime-input {` +\r\n `\tbackground-color: ${editorBackground};` +\r\n `}`);\r\n }\r\n const editorGutterBackground = theme.getColor(peekView.peekViewEditorGutterBackground);\r\n if (editorGutterBackground) {\r\n collector.addRule(`.monaco-editor .reference-zone-widget .preview .monaco-editor .margin {` +\r\n `\tbackground-color: ${editorGutterBackground};` +\r\n `}`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { localize } from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { basename, extUri } from '../../../base/common/resources.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { defaultGenerator } from '../../../base/common/idGenerator.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nexport class OneReference {\r\n constructor(isProviderFirst, parent, uri, _range, _rangeCallback) {\r\n this.isProviderFirst = isProviderFirst;\r\n this.parent = parent;\r\n this.uri = uri;\r\n this._range = _range;\r\n this._rangeCallback = _rangeCallback;\r\n this.id = defaultGenerator.nextId();\r\n }\r\n get range() {\r\n return this._range;\r\n }\r\n set range(value) {\r\n this._range = value;\r\n this._rangeCallback(this);\r\n }\r\n get ariaMessage() {\r\n return localize('aria.oneReference', \"symbol in {0} on line {1} at column {2}\", basename(this.uri), this.range.startLineNumber, this.range.startColumn);\r\n }\r\n}\r\nexport class FilePreview {\r\n constructor(_modelReference) {\r\n this._modelReference = _modelReference;\r\n }\r\n dispose() {\r\n this._modelReference.dispose();\r\n }\r\n preview(range, n = 8) {\r\n const model = this._modelReference.object.textEditorModel;\r\n if (!model) {\r\n return undefined;\r\n }\r\n const { startLineNumber, startColumn, endLineNumber, endColumn } = range;\r\n const word = model.getWordUntilPosition({ lineNumber: startLineNumber, column: startColumn - n });\r\n const beforeRange = new Range(startLineNumber, word.startColumn, startLineNumber, startColumn);\r\n const afterRange = new Range(endLineNumber, endColumn, endLineNumber, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n const before = model.getValueInRange(beforeRange).replace(/^\\s+/, '');\r\n const inside = model.getValueInRange(range);\r\n const after = model.getValueInRange(afterRange).replace(/\\s+$/, '');\r\n return {\r\n value: before + inside + after,\r\n highlight: { start: before.length, end: before.length + inside.length }\r\n };\r\n }\r\n}\r\nexport class FileReferences {\r\n constructor(parent, uri) {\r\n this.parent = parent;\r\n this.uri = uri;\r\n this.children = [];\r\n this._previews = new ResourceMap();\r\n }\r\n dispose() {\r\n dispose(this._previews.values());\r\n this._previews.clear();\r\n }\r\n getPreview(child) {\r\n return this._previews.get(child.uri);\r\n }\r\n get ariaMessage() {\r\n const len = this.children.length;\r\n if (len === 1) {\r\n return localize('aria.fileReferences.1', \"1 symbol in {0}, full path {1}\", basename(this.uri), this.uri.fsPath);\r\n }\r\n else {\r\n return localize('aria.fileReferences.N', \"{0} symbols in {1}, full path {2}\", len, basename(this.uri), this.uri.fsPath);\r\n }\r\n }\r\n resolve(textModelResolverService) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._previews.size !== 0) {\r\n return this;\r\n }\r\n for (let child of this.children) {\r\n if (this._previews.has(child.uri)) {\r\n continue;\r\n }\r\n try {\r\n const ref = yield textModelResolverService.createModelReference(child.uri);\r\n this._previews.set(child.uri, new FilePreview(ref));\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n }\r\n return this;\r\n });\r\n }\r\n}\r\nexport class ReferencesModel {\r\n constructor(links, title) {\r\n this._disposables = new DisposableStore();\r\n this.groups = [];\r\n this.references = [];\r\n this._onDidChangeReferenceRange = new Emitter();\r\n this.onDidChangeReferenceRange = this._onDidChangeReferenceRange.event;\r\n this._links = links;\r\n this._title = title;\r\n // grouping and sorting\r\n const [providersFirst] = links;\r\n links.sort(ReferencesModel._compareReferences);\r\n let current;\r\n for (let link of links) {\r\n if (!current || !extUri.isEqual(current.uri, link.uri, true)) {\r\n // new group\r\n current = new FileReferences(this, link.uri);\r\n this.groups.push(current);\r\n }\r\n // append, check for equality first!\r\n if (current.children.length === 0 || ReferencesModel._compareReferences(link, current.children[current.children.length - 1]) !== 0) {\r\n const oneRef = new OneReference(providersFirst === link, current, link.uri, link.targetSelectionRange || link.range, ref => this._onDidChangeReferenceRange.fire(ref));\r\n this.references.push(oneRef);\r\n current.children.push(oneRef);\r\n }\r\n }\r\n }\r\n dispose() {\r\n dispose(this.groups);\r\n this._disposables.dispose();\r\n this._onDidChangeReferenceRange.dispose();\r\n this.groups.length = 0;\r\n }\r\n clone() {\r\n return new ReferencesModel(this._links, this._title);\r\n }\r\n get title() {\r\n return this._title;\r\n }\r\n get isEmpty() {\r\n return this.groups.length === 0;\r\n }\r\n get ariaMessage() {\r\n if (this.isEmpty) {\r\n return localize('aria.result.0', \"No results found\");\r\n }\r\n else if (this.references.length === 1) {\r\n return localize('aria.result.1', \"Found 1 symbol in {0}\", this.references[0].uri.fsPath);\r\n }\r\n else if (this.groups.length === 1) {\r\n return localize('aria.result.n1', \"Found {0} symbols in {1}\", this.references.length, this.groups[0].uri.fsPath);\r\n }\r\n else {\r\n return localize('aria.result.nm', \"Found {0} symbols in {1} files\", this.references.length, this.groups.length);\r\n }\r\n }\r\n nextOrPreviousReference(reference, next) {\r\n let { parent } = reference;\r\n let idx = parent.children.indexOf(reference);\r\n let childCount = parent.children.length;\r\n let groupCount = parent.parent.groups.length;\r\n if (groupCount === 1 || next && idx + 1 < childCount || !next && idx > 0) {\r\n // cycling within one file\r\n if (next) {\r\n idx = (idx + 1) % childCount;\r\n }\r\n else {\r\n idx = (idx + childCount - 1) % childCount;\r\n }\r\n return parent.children[idx];\r\n }\r\n idx = parent.parent.groups.indexOf(parent);\r\n if (next) {\r\n idx = (idx + 1) % groupCount;\r\n return parent.parent.groups[idx].children[0];\r\n }\r\n else {\r\n idx = (idx + groupCount - 1) % groupCount;\r\n return parent.parent.groups[idx].children[parent.parent.groups[idx].children.length - 1];\r\n }\r\n }\r\n nearestReference(resource, position) {\r\n const nearest = this.references.map((ref, idx) => {\r\n return {\r\n idx,\r\n prefixLen: strings.commonPrefixLength(ref.uri.toString(), resource.toString()),\r\n offsetDist: Math.abs(ref.range.startLineNumber - position.lineNumber) * 100 + Math.abs(ref.range.startColumn - position.column)\r\n };\r\n }).sort((a, b) => {\r\n if (a.prefixLen > b.prefixLen) {\r\n return -1;\r\n }\r\n else if (a.prefixLen < b.prefixLen) {\r\n return 1;\r\n }\r\n else if (a.offsetDist < b.offsetDist) {\r\n return -1;\r\n }\r\n else if (a.offsetDist > b.offsetDist) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n })[0];\r\n if (nearest) {\r\n return this.references[nearest.idx];\r\n }\r\n return undefined;\r\n }\r\n referenceAt(resource, position) {\r\n for (const ref of this.references) {\r\n if (ref.uri.toString() === resource.toString()) {\r\n if (Range.containsPosition(ref.range, position)) {\r\n return ref;\r\n }\r\n }\r\n }\r\n return undefined;\r\n }\r\n firstReference() {\r\n for (const ref of this.references) {\r\n if (ref.isProviderFirst) {\r\n return ref;\r\n }\r\n }\r\n return this.references[0];\r\n }\r\n static _compareReferences(a, b) {\r\n return extUri.compare(a.uri, b.uri) || Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { registerEditorCommand, EditorCommand } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { dispose, combinedDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { isEqual } from '../../../base/common/resources.js';\r\nexport const ctxHasSymbols = new RawContextKey('hasSymbols', false);\r\nexport const ISymbolNavigationService = createDecorator('ISymbolNavigationService');\r\nlet SymbolNavigationService = class SymbolNavigationService {\r\n constructor(contextKeyService, _editorService, _notificationService, _keybindingService) {\r\n this._editorService = _editorService;\r\n this._notificationService = _notificationService;\r\n this._keybindingService = _keybindingService;\r\n this._currentModel = undefined;\r\n this._currentIdx = -1;\r\n this._ignoreEditorChange = false;\r\n this._ctxHasSymbols = ctxHasSymbols.bindTo(contextKeyService);\r\n }\r\n reset() {\r\n this._ctxHasSymbols.reset();\r\n dispose(this._currentState);\r\n dispose(this._currentMessage);\r\n this._currentModel = undefined;\r\n this._currentIdx = -1;\r\n }\r\n put(anchor) {\r\n const refModel = anchor.parent.parent;\r\n if (refModel.references.length <= 1) {\r\n this.reset();\r\n return;\r\n }\r\n this._currentModel = refModel;\r\n this._currentIdx = refModel.references.indexOf(anchor);\r\n this._ctxHasSymbols.set(true);\r\n this._showMessage();\r\n const editorState = new EditorState(this._editorService);\r\n const listener = editorState.onDidChange(_ => {\r\n if (this._ignoreEditorChange) {\r\n return;\r\n }\r\n const editor = this._editorService.getActiveCodeEditor();\r\n if (!editor) {\r\n return;\r\n }\r\n const model = editor.getModel();\r\n const position = editor.getPosition();\r\n if (!model || !position) {\r\n return;\r\n }\r\n let seenUri = false;\r\n let seenPosition = false;\r\n for (const reference of refModel.references) {\r\n if (isEqual(reference.uri, model.uri)) {\r\n seenUri = true;\r\n seenPosition = seenPosition || Range.containsPosition(reference.range, position);\r\n }\r\n else if (seenUri) {\r\n break;\r\n }\r\n }\r\n if (!seenUri || !seenPosition) {\r\n this.reset();\r\n }\r\n });\r\n this._currentState = combinedDisposable(editorState, listener);\r\n }\r\n revealNext(source) {\r\n if (!this._currentModel) {\r\n return Promise.resolve();\r\n }\r\n // get next result and advance\r\n this._currentIdx += 1;\r\n this._currentIdx %= this._currentModel.references.length;\r\n const reference = this._currentModel.references[this._currentIdx];\r\n // status\r\n this._showMessage();\r\n // open editor, ignore events while that happens\r\n this._ignoreEditorChange = true;\r\n return this._editorService.openCodeEditor({\r\n resource: reference.uri,\r\n options: {\r\n selection: Range.collapseToStart(reference.range),\r\n selectionRevealType: 3 /* NearTopIfOutsideViewport */\r\n }\r\n }, source).finally(() => {\r\n this._ignoreEditorChange = false;\r\n });\r\n }\r\n _showMessage() {\r\n dispose(this._currentMessage);\r\n const kb = this._keybindingService.lookupKeybinding('editor.gotoNextSymbolFromResult');\r\n const message = kb\r\n ? localize('location.kb', \"Symbol {0} of {1}, {2} for next\", this._currentIdx + 1, this._currentModel.references.length, kb.getLabel())\r\n : localize('location', \"Symbol {0} of {1}\", this._currentIdx + 1, this._currentModel.references.length);\r\n this._currentMessage = this._notificationService.status(message);\r\n }\r\n};\r\nSymbolNavigationService = __decorate([\r\n __param(0, IContextKeyService),\r\n __param(1, ICodeEditorService),\r\n __param(2, INotificationService),\r\n __param(3, IKeybindingService)\r\n], SymbolNavigationService);\r\nregisterSingleton(ISymbolNavigationService, SymbolNavigationService, true);\r\nregisterEditorCommand(new class extends EditorCommand {\r\n constructor() {\r\n super({\r\n id: 'editor.gotoNextSymbolFromResult',\r\n precondition: ctxHasSymbols,\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */,\r\n primary: 70 /* F12 */\r\n }\r\n });\r\n }\r\n runEditorCommand(accessor, editor) {\r\n return accessor.get(ISymbolNavigationService).revealNext(editor);\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'editor.gotoNextSymbolFromResult.cancel',\r\n weight: 100 /* EditorContrib */,\r\n when: ctxHasSymbols,\r\n primary: 9 /* Escape */,\r\n handler(accessor) {\r\n accessor.get(ISymbolNavigationService).reset();\r\n }\r\n});\r\n//\r\nlet EditorState = class EditorState {\r\n constructor(editorService) {\r\n this._listener = new Map();\r\n this._disposables = new DisposableStore();\r\n this._onDidChange = new Emitter();\r\n this.onDidChange = this._onDidChange.event;\r\n this._disposables.add(editorService.onCodeEditorRemove(this._onDidRemoveEditor, this));\r\n this._disposables.add(editorService.onCodeEditorAdd(this._onDidAddEditor, this));\r\n editorService.listCodeEditors().forEach(this._onDidAddEditor, this);\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._onDidChange.dispose();\r\n dispose(this._listener.values());\r\n }\r\n _onDidAddEditor(editor) {\r\n this._listener.set(editor, combinedDisposable(editor.onDidChangeCursorPosition(_ => this._onDidChange.fire({ editor })), editor.onDidChangeModelContent(_ => this._onDidChange.fire({ editor }))));\r\n }\r\n _onDidRemoveEditor(editor) {\r\n dispose(this._listener.get(editor));\r\n this._listener.delete(editor);\r\n }\r\n};\r\nEditorState = __decorate([\r\n __param(0, ICodeEditorService)\r\n], EditorState);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { coalesce } from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { HoverProviderRegistry } from '../../common/modes.js';\r\nexport function getHover(model, position, token) {\r\n const supports = HoverProviderRegistry.ordered(model);\r\n const promises = supports.map(support => {\r\n return Promise.resolve(support.provideHover(model, position, token)).then(hover => {\r\n return hover && isValid(hover) ? hover : undefined;\r\n }, err => {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n });\r\n });\r\n return Promise.all(promises).then(coalesce);\r\n}\r\nregisterModelAndPositionCommand('_executeHoverProvider', (model, position) => getHover(model, position, CancellationToken.None));\r\nfunction isValid(result) {\r\n const hasRange = (typeof result.range !== 'undefined');\r\n const hasHtmlContent = typeof result.contents !== 'undefined' && result.contents && result.contents.length > 0;\r\n return hasRange && hasHtmlContent;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { ModesContentHoverWidget } from './modesContentHover.js';\r\nimport { ModesGlyphHoverWidget } from './modesGlyphHover.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { editorHoverBackground, editorHoverBorder, editorHoverHighlight, textCodeBlockBackground, textLinkForeground, editorHoverStatusBarBackground, editorHoverForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { IMarkerDecorationsService } from '../../common/services/markersDecorationService.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { GotoDefinitionAtPositionEditorContribution } from '../gotoSymbol/link/goToDefinitionAtPosition.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nlet ModesHoverController = class ModesHoverController {\r\n constructor(_editor, _openerService, _modeService, _markerDecorationsService, _keybindingService, _themeService, _contextKeyService) {\r\n this._editor = _editor;\r\n this._openerService = _openerService;\r\n this._modeService = _modeService;\r\n this._markerDecorationsService = _markerDecorationsService;\r\n this._keybindingService = _keybindingService;\r\n this._themeService = _themeService;\r\n this._toUnhook = new DisposableStore();\r\n this._contentWidget = new MutableDisposable();\r\n this._glyphWidget = new MutableDisposable();\r\n this._isMouseDown = false;\r\n this._hoverClicked = false;\r\n this._hookEvents();\r\n this._didChangeConfigurationHandler = this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(46 /* hover */)) {\r\n this._hideWidgets();\r\n this._unhookEvents();\r\n this._hookEvents();\r\n }\r\n });\r\n this._hoverVisibleKey = EditorContextKeys.hoverVisible.bindTo(_contextKeyService);\r\n }\r\n get contentWidget() {\r\n if (!this._contentWidget.value) {\r\n this._createHoverWidgets();\r\n }\r\n return this._contentWidget.value;\r\n }\r\n get glyphWidget() {\r\n if (!this._glyphWidget.value) {\r\n this._createHoverWidgets();\r\n }\r\n return this._glyphWidget.value;\r\n }\r\n static get(editor) {\r\n return editor.getContribution(ModesHoverController.ID);\r\n }\r\n _hookEvents() {\r\n const hideWidgetsEventHandler = () => this._hideWidgets();\r\n const hoverOpts = this._editor.getOption(46 /* hover */);\r\n this._isHoverEnabled = hoverOpts.enabled;\r\n this._isHoverSticky = hoverOpts.sticky;\r\n if (this._isHoverEnabled) {\r\n this._toUnhook.add(this._editor.onMouseDown((e) => this._onEditorMouseDown(e)));\r\n this._toUnhook.add(this._editor.onMouseUp((e) => this._onEditorMouseUp(e)));\r\n this._toUnhook.add(this._editor.onMouseMove((e) => this._onEditorMouseMove(e)));\r\n this._toUnhook.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\r\n this._toUnhook.add(this._editor.onDidChangeModelDecorations(() => this._onModelDecorationsChanged()));\r\n }\r\n else {\r\n this._toUnhook.add(this._editor.onMouseMove(hideWidgetsEventHandler));\r\n this._toUnhook.add(this._editor.onKeyDown((e) => this._onKeyDown(e)));\r\n }\r\n this._toUnhook.add(this._editor.onMouseLeave(hideWidgetsEventHandler));\r\n this._toUnhook.add(this._editor.onDidChangeModel(hideWidgetsEventHandler));\r\n this._toUnhook.add(this._editor.onDidScrollChange((e) => this._onEditorScrollChanged(e)));\r\n }\r\n _unhookEvents() {\r\n this._toUnhook.clear();\r\n }\r\n _onModelDecorationsChanged() {\r\n this.contentWidget.onModelDecorationsChanged();\r\n this.glyphWidget.onModelDecorationsChanged();\r\n }\r\n _onEditorScrollChanged(e) {\r\n if (e.scrollTopChanged || e.scrollLeftChanged) {\r\n this._hideWidgets();\r\n }\r\n }\r\n _onEditorMouseDown(mouseEvent) {\r\n this._isMouseDown = true;\r\n const targetType = mouseEvent.target.type;\r\n if (targetType === 9 /* CONTENT_WIDGET */ && mouseEvent.target.detail === ModesContentHoverWidget.ID) {\r\n this._hoverClicked = true;\r\n // mouse down on top of content hover widget\r\n return;\r\n }\r\n if (targetType === 12 /* OVERLAY_WIDGET */ && mouseEvent.target.detail === ModesGlyphHoverWidget.ID) {\r\n // mouse down on top of overlay hover widget\r\n return;\r\n }\r\n if (targetType !== 12 /* OVERLAY_WIDGET */ && mouseEvent.target.detail !== ModesGlyphHoverWidget.ID) {\r\n this._hoverClicked = false;\r\n }\r\n this._hideWidgets();\r\n }\r\n _onEditorMouseUp(mouseEvent) {\r\n this._isMouseDown = false;\r\n }\r\n _onEditorMouseMove(mouseEvent) {\r\n let targetType = mouseEvent.target.type;\r\n if (this._isMouseDown && this._hoverClicked && this.contentWidget.isColorPickerVisible()) {\r\n return;\r\n }\r\n if (this._isHoverSticky && targetType === 9 /* CONTENT_WIDGET */ && mouseEvent.target.detail === ModesContentHoverWidget.ID) {\r\n // mouse moved on top of content hover widget\r\n return;\r\n }\r\n if (this._isHoverSticky && targetType === 12 /* OVERLAY_WIDGET */ && mouseEvent.target.detail === ModesGlyphHoverWidget.ID) {\r\n // mouse moved on top of overlay hover widget\r\n return;\r\n }\r\n if (targetType === 7 /* CONTENT_EMPTY */) {\r\n const epsilon = this._editor.getOption(36 /* fontInfo */).typicalHalfwidthCharacterWidth / 2;\r\n const data = mouseEvent.target.detail;\r\n if (data && !data.isAfterLines && typeof data.horizontalDistanceToText === 'number' && data.horizontalDistanceToText < epsilon) {\r\n // Let hover kick in even when the mouse is technically in the empty area after a line, given the distance is small enough\r\n targetType = 6 /* CONTENT_TEXT */;\r\n }\r\n }\r\n if (targetType === 6 /* CONTENT_TEXT */) {\r\n this.glyphWidget.hide();\r\n if (this._isHoverEnabled && mouseEvent.target.range) {\r\n this.contentWidget.startShowingAt(mouseEvent.target.range, 0 /* Delayed */, false);\r\n }\r\n }\r\n else if (targetType === 2 /* GUTTER_GLYPH_MARGIN */) {\r\n this.contentWidget.hide();\r\n if (this._isHoverEnabled && mouseEvent.target.position) {\r\n this.glyphWidget.startShowingAt(mouseEvent.target.position.lineNumber);\r\n }\r\n }\r\n else {\r\n this._hideWidgets();\r\n }\r\n }\r\n _onKeyDown(e) {\r\n if (e.keyCode !== 5 /* Ctrl */ && e.keyCode !== 6 /* Alt */ && e.keyCode !== 57 /* Meta */ && e.keyCode !== 4 /* Shift */) {\r\n // Do not hide hover when a modifier key is pressed\r\n this._hideWidgets();\r\n }\r\n }\r\n _hideWidgets() {\r\n if (!this._glyphWidget.value || !this._contentWidget.value || (this._isMouseDown && this._hoverClicked && this._contentWidget.value.isColorPickerVisible())) {\r\n return;\r\n }\r\n this._glyphWidget.value.hide();\r\n this._contentWidget.value.hide();\r\n }\r\n _createHoverWidgets() {\r\n this._contentWidget.value = new ModesContentHoverWidget(this._editor, this._hoverVisibleKey, this._markerDecorationsService, this._keybindingService, this._themeService, this._modeService, this._openerService);\r\n this._glyphWidget.value = new ModesGlyphHoverWidget(this._editor, this._modeService, this._openerService);\r\n }\r\n showContentHover(range, mode, focus) {\r\n this.contentWidget.startShowingAt(range, mode, focus);\r\n }\r\n dispose() {\r\n this._unhookEvents();\r\n this._toUnhook.dispose();\r\n this._didChangeConfigurationHandler.dispose();\r\n this._glyphWidget.dispose();\r\n this._contentWidget.dispose();\r\n }\r\n};\r\nModesHoverController.ID = 'editor.contrib.hover';\r\nModesHoverController = __decorate([\r\n __param(1, IOpenerService),\r\n __param(2, IModeService),\r\n __param(3, IMarkerDecorationsService),\r\n __param(4, IKeybindingService),\r\n __param(5, IThemeService),\r\n __param(6, IContextKeyService)\r\n], ModesHoverController);\r\nexport { ModesHoverController };\r\nclass ShowHoverAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.showHover',\r\n label: nls.localize({\r\n key: 'showHover',\r\n comment: [\r\n 'Label for action that will trigger the showing of a hover in the editor.',\r\n 'This allows for users to show the hover without using the mouse.'\r\n ]\r\n }, \"Show Hover\"),\r\n alias: 'Show Hover',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 39 /* KEY_I */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let controller = ModesHoverController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n const position = editor.getPosition();\r\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n const focus = editor.getOption(2 /* accessibilitySupport */) === 2 /* Enabled */;\r\n controller.showContentHover(range, 1 /* Immediate */, focus);\r\n }\r\n}\r\nclass ShowDefinitionPreviewHoverAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.showDefinitionPreviewHover',\r\n label: nls.localize({\r\n key: 'showDefinitionPreviewHover',\r\n comment: [\r\n 'Label for action that will trigger the showing of definition preview hover in the editor.',\r\n 'This allows for users to show the definition preview hover without using the mouse.'\r\n ]\r\n }, \"Show Definition Preview Hover\"),\r\n alias: 'Show Definition Preview Hover',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = ModesHoverController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n const position = editor.getPosition();\r\n if (!position) {\r\n return;\r\n }\r\n const range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n const goto = GotoDefinitionAtPositionEditorContribution.get(editor);\r\n const promise = goto.startFindDefinitionFromCursor(position);\r\n if (promise) {\r\n promise.then(() => {\r\n controller.showContentHover(range, 1 /* Immediate */, true);\r\n });\r\n }\r\n else {\r\n controller.showContentHover(range, 1 /* Immediate */, true);\r\n }\r\n }\r\n}\r\nregisterEditorContribution(ModesHoverController.ID, ModesHoverController);\r\nregisterEditorAction(ShowHoverAction);\r\nregisterEditorAction(ShowDefinitionPreviewHoverAction);\r\n// theming\r\nregisterThemingParticipant((theme, collector) => {\r\n const editorHoverHighlightColor = theme.getColor(editorHoverHighlight);\r\n if (editorHoverHighlightColor) {\r\n collector.addRule(`.monaco-editor .hoverHighlight { background-color: ${editorHoverHighlightColor}; }`);\r\n }\r\n const hoverBackground = theme.getColor(editorHoverBackground);\r\n if (hoverBackground) {\r\n collector.addRule(`.monaco-editor .monaco-hover { background-color: ${hoverBackground}; }`);\r\n }\r\n const hoverBorder = theme.getColor(editorHoverBorder);\r\n if (hoverBorder) {\r\n collector.addRule(`.monaco-editor .monaco-hover { border: 1px solid ${hoverBorder}; }`);\r\n collector.addRule(`.monaco-editor .monaco-hover .hover-row:not(:first-child):not(:empty) { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\r\n collector.addRule(`.monaco-editor .monaco-hover hr { border-top: 1px solid ${hoverBorder.transparent(0.5)}; }`);\r\n collector.addRule(`.monaco-editor .monaco-hover hr { border-bottom: 0px solid ${hoverBorder.transparent(0.5)}; }`);\r\n }\r\n const link = theme.getColor(textLinkForeground);\r\n if (link) {\r\n collector.addRule(`.monaco-editor .monaco-hover a { color: ${link}; }`);\r\n }\r\n const hoverForeground = theme.getColor(editorHoverForeground);\r\n if (hoverForeground) {\r\n collector.addRule(`.monaco-editor .monaco-hover { color: ${hoverForeground}; }`);\r\n }\r\n const actionsBackground = theme.getColor(editorHoverStatusBarBackground);\r\n if (actionsBackground) {\r\n collector.addRule(`.monaco-editor .monaco-hover .hover-row .actions { background-color: ${actionsBackground}; }`);\r\n }\r\n const codeBackground = theme.getColor(textCodeBlockBackground);\r\n if (codeBackground) {\r\n collector.addRule(`.monaco-editor .monaco-hover code { background-color: ${codeBackground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RunOnceScheduler, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nexport class HoverOperation {\r\n constructor(computer, success, error, progress, hoverTime) {\r\n this._computer = computer;\r\n this._state = 0 /* IDLE */;\r\n this._hoverTime = hoverTime;\r\n this._firstWaitScheduler = new RunOnceScheduler(() => this._triggerAsyncComputation(), 0);\r\n this._secondWaitScheduler = new RunOnceScheduler(() => this._triggerSyncComputation(), 0);\r\n this._loadingMessageScheduler = new RunOnceScheduler(() => this._showLoadingMessage(), 0);\r\n this._asyncComputationPromise = null;\r\n this._asyncComputationPromiseDone = false;\r\n this._completeCallback = success;\r\n this._errorCallback = error;\r\n this._progressCallback = progress;\r\n }\r\n setHoverTime(hoverTime) {\r\n this._hoverTime = hoverTime;\r\n }\r\n _firstWaitTime() {\r\n return this._hoverTime / 2;\r\n }\r\n _secondWaitTime() {\r\n return this._hoverTime / 2;\r\n }\r\n _loadingMessageTime() {\r\n return 3 * this._hoverTime;\r\n }\r\n _triggerAsyncComputation() {\r\n this._state = 2 /* SECOND_WAIT */;\r\n this._secondWaitScheduler.schedule(this._secondWaitTime());\r\n if (this._computer.computeAsync) {\r\n this._asyncComputationPromiseDone = false;\r\n this._asyncComputationPromise = createCancelablePromise(token => this._computer.computeAsync(token));\r\n this._asyncComputationPromise.then((asyncResult) => {\r\n this._asyncComputationPromiseDone = true;\r\n this._withAsyncResult(asyncResult);\r\n }, (e) => this._onError(e));\r\n }\r\n else {\r\n this._asyncComputationPromiseDone = true;\r\n }\r\n }\r\n _triggerSyncComputation() {\r\n if (this._computer.computeSync) {\r\n this._computer.onResult(this._computer.computeSync(), true);\r\n }\r\n if (this._asyncComputationPromiseDone) {\r\n this._state = 0 /* IDLE */;\r\n this._onComplete(this._computer.getResult());\r\n }\r\n else {\r\n this._state = 3 /* WAITING_FOR_ASYNC_COMPUTATION */;\r\n this._onProgress(this._computer.getResult());\r\n }\r\n }\r\n _showLoadingMessage() {\r\n if (this._state === 3 /* WAITING_FOR_ASYNC_COMPUTATION */) {\r\n this._onProgress(this._computer.getResultWithLoadingMessage());\r\n }\r\n }\r\n _withAsyncResult(asyncResult) {\r\n if (asyncResult) {\r\n this._computer.onResult(asyncResult, false);\r\n }\r\n if (this._state === 3 /* WAITING_FOR_ASYNC_COMPUTATION */) {\r\n this._state = 0 /* IDLE */;\r\n this._onComplete(this._computer.getResult());\r\n }\r\n }\r\n _onComplete(value) {\r\n this._completeCallback(value);\r\n }\r\n _onError(error) {\r\n if (this._errorCallback) {\r\n this._errorCallback(error);\r\n }\r\n else {\r\n onUnexpectedError(error);\r\n }\r\n }\r\n _onProgress(value) {\r\n this._progressCallback(value);\r\n }\r\n start(mode) {\r\n if (mode === 0 /* Delayed */) {\r\n if (this._state === 0 /* IDLE */) {\r\n this._state = 1 /* FIRST_WAIT */;\r\n this._firstWaitScheduler.schedule(this._firstWaitTime());\r\n this._loadingMessageScheduler.schedule(this._loadingMessageTime());\r\n }\r\n }\r\n else {\r\n switch (this._state) {\r\n case 0 /* IDLE */:\r\n this._triggerAsyncComputation();\r\n this._secondWaitScheduler.cancel();\r\n this._triggerSyncComputation();\r\n break;\r\n case 2 /* SECOND_WAIT */:\r\n this._secondWaitScheduler.cancel();\r\n this._triggerSyncComputation();\r\n break;\r\n }\r\n }\r\n }\r\n cancel() {\r\n this._loadingMessageScheduler.cancel();\r\n if (this._state === 1 /* FIRST_WAIT */) {\r\n this._firstWaitScheduler.cancel();\r\n }\r\n if (this._state === 2 /* SECOND_WAIT */) {\r\n this._secondWaitScheduler.cancel();\r\n if (this._asyncComputationPromise) {\r\n this._asyncComputationPromise.cancel();\r\n this._asyncComputationPromise = null;\r\n }\r\n }\r\n if (this._state === 3 /* WAITING_FOR_ASYNC_COMPUTATION */) {\r\n if (this._asyncComputationPromise) {\r\n this._asyncComputationPromise.cancel();\r\n this._asyncComputationPromise = null;\r\n }\r\n }\r\n this._state = 0 /* IDLE */;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Widget } from '../../../base/browser/ui/widget.js';\r\nimport { renderHoverAction, HoverWidget } from '../../../base/browser/ui/hover/hoverWidget.js';\r\nexport class ContentHoverWidget extends Widget {\r\n constructor(id, editor, _hoverVisibleKey, _keybindingService) {\r\n super();\r\n this._hoverVisibleKey = _hoverVisibleKey;\r\n this._keybindingService = _keybindingService;\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this._hover = this._register(new HoverWidget());\r\n this._id = id;\r\n this._editor = editor;\r\n this._isVisible = false;\r\n this._stoleFocus = false;\r\n this.onkeydown(this._hover.containerDomNode, (e) => {\r\n if (e.equals(9 /* Escape */)) {\r\n this.hide();\r\n }\r\n });\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(36 /* fontInfo */)) {\r\n this.updateFont();\r\n }\r\n }));\r\n this._editor.onDidLayoutChange(e => this.layout());\r\n this.layout();\r\n this._editor.addContentWidget(this);\r\n this._showAtPosition = null;\r\n this._showAtRange = null;\r\n this._stoleFocus = false;\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n set isVisible(value) {\r\n this._isVisible = value;\r\n dom.toggleClass(this._hover.containerDomNode, 'hidden', !this._isVisible);\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._hover.containerDomNode;\r\n }\r\n showAt(position, range, focus) {\r\n // Position has changed\r\n this._showAtPosition = position;\r\n this._showAtRange = range;\r\n this._hoverVisibleKey.set(true);\r\n this.isVisible = true;\r\n this._editor.layoutContentWidget(this);\r\n // Simply force a synchronous render on the editor\r\n // such that the widget does not really render with left = '0px'\r\n this._editor.render();\r\n this._stoleFocus = focus;\r\n if (focus) {\r\n this._hover.containerDomNode.focus();\r\n }\r\n }\r\n hide() {\r\n if (!this.isVisible) {\r\n return;\r\n }\r\n setTimeout(() => {\r\n // Give commands a chance to see the key\r\n if (!this.isVisible) {\r\n this._hoverVisibleKey.set(false);\r\n }\r\n }, 0);\r\n this.isVisible = false;\r\n this._editor.layoutContentWidget(this);\r\n if (this._stoleFocus) {\r\n this._editor.focus();\r\n }\r\n }\r\n getPosition() {\r\n if (this.isVisible) {\r\n return {\r\n position: this._showAtPosition,\r\n range: this._showAtRange,\r\n preference: [\r\n 1 /* ABOVE */,\r\n 2 /* BELOW */\r\n ]\r\n };\r\n }\r\n return null;\r\n }\r\n dispose() {\r\n this._editor.removeContentWidget(this);\r\n super.dispose();\r\n }\r\n updateFont() {\r\n const codeClasses = Array.prototype.slice.call(this._hover.contentsDomNode.getElementsByClassName('code'));\r\n codeClasses.forEach(node => this._editor.applyFontInfo(node));\r\n }\r\n updateContents(node) {\r\n this._hover.contentsDomNode.textContent = '';\r\n this._hover.contentsDomNode.appendChild(node);\r\n this.updateFont();\r\n this._editor.layoutContentWidget(this);\r\n this._hover.onContentsChanged();\r\n }\r\n _renderAction(parent, actionOptions) {\r\n const keybinding = this._keybindingService.lookupKeybinding(actionOptions.commandId);\r\n const keybindingLabel = keybinding ? keybinding.getLabel() : null;\r\n return renderHoverAction(parent, actionOptions, keybindingLabel);\r\n }\r\n layout() {\r\n const height = Math.max(this._editor.getLayoutInfo().height / 4, 250);\r\n const { fontSize, lineHeight } = this._editor.getOption(36 /* fontInfo */);\r\n this._hover.contentsDomNode.style.fontSize = `${fontSize}px`;\r\n this._hover.contentsDomNode.style.lineHeight = `${lineHeight}px`;\r\n this._hover.contentsDomNode.style.maxHeight = `${height}px`;\r\n this._hover.contentsDomNode.style.maxWidth = `${Math.max(this._editor.getLayoutInfo().width * 0.66, 500)}px`;\r\n }\r\n}\r\nexport class GlyphHoverWidget extends Widget {\r\n constructor(id, editor) {\r\n super();\r\n this._id = id;\r\n this._editor = editor;\r\n this._isVisible = false;\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'monaco-hover hidden';\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._domNode.setAttribute('role', 'tooltip');\r\n this._showAtLineNumber = -1;\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(36 /* fontInfo */)) {\r\n this.updateFont();\r\n }\r\n }));\r\n this._editor.addOverlayWidget(this);\r\n }\r\n get isVisible() {\r\n return this._isVisible;\r\n }\r\n set isVisible(value) {\r\n this._isVisible = value;\r\n dom.toggleClass(this._domNode, 'hidden', !this._isVisible);\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n showAt(lineNumber) {\r\n this._showAtLineNumber = lineNumber;\r\n if (!this.isVisible) {\r\n this.isVisible = true;\r\n }\r\n const editorLayout = this._editor.getLayoutInfo();\r\n const topForLineNumber = this._editor.getTopForLineNumber(this._showAtLineNumber);\r\n const editorScrollTop = this._editor.getScrollTop();\r\n const lineHeight = this._editor.getOption(51 /* lineHeight */);\r\n const nodeHeight = this._domNode.clientHeight;\r\n const top = topForLineNumber - editorScrollTop - ((nodeHeight - lineHeight) / 2);\r\n this._domNode.style.left = `${editorLayout.glyphMarginLeft + editorLayout.glyphMarginWidth}px`;\r\n this._domNode.style.top = `${Math.max(Math.round(top), 0)}px`;\r\n }\r\n hide() {\r\n if (!this.isVisible) {\r\n return;\r\n }\r\n this.isVisible = false;\r\n }\r\n getPosition() {\r\n return null;\r\n }\r\n dispose() {\r\n this._editor.removeOverlayWidget(this);\r\n super.dispose();\r\n }\r\n updateFont() {\r\n const codeTags = Array.prototype.slice.call(this._domNode.getElementsByTagName('code'));\r\n const codeClasses = Array.prototype.slice.call(this._domNode.getElementsByClassName('code'));\r\n [...codeTags, ...codeClasses].forEach(node => this._editor.applyFontInfo(node));\r\n }\r\n updateContents(node) {\r\n this._domNode.textContent = '';\r\n this._domNode.appendChild(node);\r\n this.updateFont();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { MarkdownString, isEmptyMarkdownString, markedStringsEquals } from '../../../base/common/htmlContent.js';\r\nimport { toDisposable, DisposableStore, combinedDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { HoverProviderRegistry, TokenizationRegistry } from '../../common/modes.js';\r\nimport { getColorPresentations } from '../colorPicker/color.js';\r\nimport { ColorDetector } from '../colorPicker/colorDetector.js';\r\nimport { ColorPickerModel } from '../colorPicker/colorPickerModel.js';\r\nimport { ColorPickerWidget } from '../colorPicker/colorPickerWidget.js';\r\nimport { getHover } from './getHover.js';\r\nimport { HoverOperation } from './hoverOperation.js';\r\nimport { ContentHoverWidget } from './hoverWidgets.js';\r\nimport { MarkdownRenderer } from '../markdown/markdownRenderer.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { coalesce, isNonEmptyArray, asArray } from '../../../base/common/arrays.js';\r\nimport { IMarkerData, MarkerSeverity } from '../../../platform/markers/common/markers.js';\r\nimport { basename } from '../../../base/common/resources.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { NullOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { MarkerController, NextMarkerAction } from '../gotoError/gotoError.js';\r\nimport { createCancelablePromise } from '../../../base/common/async.js';\r\nimport { getCodeActions } from '../codeAction/codeAction.js';\r\nimport { QuickFixAction, QuickFixController } from '../codeAction/codeActionCommands.js';\r\nimport { CodeActionKind } from '../codeAction/types.js';\r\nimport { textLinkForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Progress } from '../../../platform/progress/common/progress.js';\r\nconst $ = dom.$;\r\nclass ColorHover {\r\n constructor(range, color, provider) {\r\n this.range = range;\r\n this.color = color;\r\n this.provider = provider;\r\n }\r\n}\r\nclass MarkerHover {\r\n constructor(range, marker) {\r\n this.range = range;\r\n this.marker = marker;\r\n }\r\n}\r\nclass ModesContentComputer {\r\n constructor(editor, _markerDecorationsService) {\r\n this._markerDecorationsService = _markerDecorationsService;\r\n this._editor = editor;\r\n this._result = [];\r\n }\r\n setRange(range) {\r\n this._range = range;\r\n this._result = [];\r\n }\r\n clearResult() {\r\n this._result = [];\r\n }\r\n computeAsync(token) {\r\n if (!this._editor.hasModel() || !this._range) {\r\n return Promise.resolve([]);\r\n }\r\n const model = this._editor.getModel();\r\n if (!HoverProviderRegistry.has(model)) {\r\n return Promise.resolve([]);\r\n }\r\n return getHover(model, new Position(this._range.startLineNumber, this._range.startColumn), token);\r\n }\r\n computeSync() {\r\n if (!this._editor.hasModel() || !this._range) {\r\n return [];\r\n }\r\n const model = this._editor.getModel();\r\n const lineNumber = this._range.startLineNumber;\r\n if (lineNumber > this._editor.getModel().getLineCount()) {\r\n // Illegal line number => no results\r\n return [];\r\n }\r\n const colorDetector = ColorDetector.get(this._editor);\r\n const maxColumn = model.getLineMaxColumn(lineNumber);\r\n const lineDecorations = this._editor.getLineDecorations(lineNumber);\r\n let didFindColor = false;\r\n const hoverRange = this._range;\r\n const result = lineDecorations.map((d) => {\r\n const startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\r\n const endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\r\n if (startColumn > hoverRange.startColumn || hoverRange.endColumn > endColumn) {\r\n return null;\r\n }\r\n const range = new Range(hoverRange.startLineNumber, startColumn, hoverRange.startLineNumber, endColumn);\r\n const marker = this._markerDecorationsService.getMarker(model, d);\r\n if (marker) {\r\n return new MarkerHover(range, marker);\r\n }\r\n const colorData = colorDetector.getColorData(d.range.getStartPosition());\r\n if (!didFindColor && colorData) {\r\n didFindColor = true;\r\n const { color, range } = colorData.colorInfo;\r\n return new ColorHover(range, color, colorData.provider);\r\n }\r\n else {\r\n if (isEmptyMarkdownString(d.options.hoverMessage)) {\r\n return null;\r\n }\r\n const contents = d.options.hoverMessage ? asArray(d.options.hoverMessage) : [];\r\n return { contents, range };\r\n }\r\n });\r\n return coalesce(result);\r\n }\r\n onResult(result, isFromSynchronousComputation) {\r\n // Always put synchronous messages before asynchronous ones\r\n if (isFromSynchronousComputation) {\r\n this._result = result.concat(this._result.sort((a, b) => {\r\n if (a instanceof ColorHover) { // sort picker messages at to the top\r\n return -1;\r\n }\r\n else if (b instanceof ColorHover) {\r\n return 1;\r\n }\r\n return 0;\r\n }));\r\n }\r\n else {\r\n this._result = this._result.concat(result);\r\n }\r\n }\r\n getResult() {\r\n return this._result.slice(0);\r\n }\r\n getResultWithLoadingMessage() {\r\n return this._result.slice(0).concat([this._getLoadingMessage()]);\r\n }\r\n _getLoadingMessage() {\r\n return {\r\n range: this._range,\r\n contents: [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))]\r\n };\r\n }\r\n}\r\nconst markerCodeActionTrigger = {\r\n type: 2 /* Manual */,\r\n filter: { include: CodeActionKind.QuickFix }\r\n};\r\nexport class ModesContentHoverWidget extends ContentHoverWidget {\r\n constructor(editor, _hoverVisibleKey, markerDecorationsService, keybindingService, _themeService, _modeService, _openerService = NullOpenerService) {\r\n super(ModesContentHoverWidget.ID, editor, _hoverVisibleKey, keybindingService);\r\n this._themeService = _themeService;\r\n this._modeService = _modeService;\r\n this._openerService = _openerService;\r\n this.renderDisposable = this._register(new MutableDisposable());\r\n this._messages = [];\r\n this._lastRange = null;\r\n this._computer = new ModesContentComputer(this._editor, markerDecorationsService);\r\n this._highlightDecorations = [];\r\n this._isChangingDecorations = false;\r\n this._shouldFocus = false;\r\n this._colorPicker = null;\r\n this._hoverOperation = new HoverOperation(this._computer, result => this._withResult(result, true), null, result => this._withResult(result, false), this._editor.getOption(46 /* hover */).delay);\r\n this._register(dom.addStandardDisposableListener(this.getDomNode(), dom.EventType.FOCUS, () => {\r\n if (this._colorPicker) {\r\n dom.addClass(this.getDomNode(), 'colorpicker-hover');\r\n }\r\n }));\r\n this._register(dom.addStandardDisposableListener(this.getDomNode(), dom.EventType.BLUR, () => {\r\n dom.removeClass(this.getDomNode(), 'colorpicker-hover');\r\n }));\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n this._hoverOperation.setHoverTime(this._editor.getOption(46 /* hover */).delay);\r\n }));\r\n this._register(TokenizationRegistry.onDidChange((e) => {\r\n if (this.isVisible && this._lastRange && this._messages.length > 0) {\r\n this._hover.contentsDomNode.textContent = '';\r\n this._renderMessages(this._lastRange, this._messages);\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._hoverOperation.cancel();\r\n super.dispose();\r\n }\r\n onModelDecorationsChanged() {\r\n if (this._isChangingDecorations) {\r\n return;\r\n }\r\n if (this.isVisible) {\r\n // The decorations have changed and the hover is visible,\r\n // we need to recompute the displayed text\r\n this._hoverOperation.cancel();\r\n this._computer.clearResult();\r\n if (!this._colorPicker) { // TODO@Michel ensure that displayed text for other decorations is computed even if color picker is in place\r\n this._hoverOperation.start(0 /* Delayed */);\r\n }\r\n }\r\n }\r\n startShowingAt(range, mode, focus) {\r\n if (this._lastRange && this._lastRange.equalsRange(range)) {\r\n // We have to show the widget at the exact same range as before, so no work is needed\r\n return;\r\n }\r\n this._hoverOperation.cancel();\r\n if (this.isVisible) {\r\n // The range might have changed, but the hover is visible\r\n // Instead of hiding it completely, filter out messages that are still in the new range and\r\n // kick off a new computation\r\n if (!this._showAtPosition || this._showAtPosition.lineNumber !== range.startLineNumber) {\r\n this.hide();\r\n }\r\n else {\r\n let filteredMessages = [];\r\n for (let i = 0, len = this._messages.length; i < len; i++) {\r\n const msg = this._messages[i];\r\n const rng = msg.range;\r\n if (rng && rng.startColumn <= range.startColumn && rng.endColumn >= range.endColumn) {\r\n filteredMessages.push(msg);\r\n }\r\n }\r\n if (filteredMessages.length > 0) {\r\n if (hoverContentsEquals(filteredMessages, this._messages)) {\r\n return;\r\n }\r\n this._renderMessages(range, filteredMessages);\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }\r\n }\r\n this._lastRange = range;\r\n this._computer.setRange(range);\r\n this._shouldFocus = focus;\r\n this._hoverOperation.start(mode);\r\n }\r\n hide() {\r\n this._lastRange = null;\r\n this._hoverOperation.cancel();\r\n super.hide();\r\n this._isChangingDecorations = true;\r\n this._highlightDecorations = this._editor.deltaDecorations(this._highlightDecorations, []);\r\n this._isChangingDecorations = false;\r\n this.renderDisposable.clear();\r\n this._colorPicker = null;\r\n }\r\n isColorPickerVisible() {\r\n if (this._colorPicker) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n _withResult(result, complete) {\r\n this._messages = result;\r\n if (this._lastRange && this._messages.length > 0) {\r\n this._renderMessages(this._lastRange, this._messages);\r\n }\r\n else if (complete) {\r\n this.hide();\r\n }\r\n }\r\n _renderMessages(renderRange, messages) {\r\n this.renderDisposable.dispose();\r\n this._colorPicker = null;\r\n // update column from which to show\r\n let renderColumn = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n let highlightRange = messages[0].range ? Range.lift(messages[0].range) : null;\r\n let fragment = document.createDocumentFragment();\r\n let isEmptyHoverContent = true;\r\n let containColorPicker = false;\r\n const markdownDisposeables = new DisposableStore();\r\n const markerMessages = [];\r\n messages.forEach((msg) => {\r\n if (!msg.range) {\r\n return;\r\n }\r\n renderColumn = Math.min(renderColumn, msg.range.startColumn);\r\n highlightRange = highlightRange ? Range.plusRange(highlightRange, msg.range) : Range.lift(msg.range);\r\n if (msg instanceof ColorHover) {\r\n containColorPicker = true;\r\n const { red, green, blue, alpha } = msg.color;\r\n const rgba = new RGBA(Math.round(red * 255), Math.round(green * 255), Math.round(blue * 255), alpha);\r\n const color = new Color(rgba);\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const editorModel = this._editor.getModel();\r\n let range = new Range(msg.range.startLineNumber, msg.range.startColumn, msg.range.endLineNumber, msg.range.endColumn);\r\n let colorInfo = { range: msg.range, color: msg.color };\r\n // create blank olor picker model and widget first to ensure it's positioned correctly.\r\n const model = new ColorPickerModel(color, [], 0);\r\n const widget = new ColorPickerWidget(fragment, model, this._editor.getOption(115 /* pixelRatio */), this._themeService);\r\n getColorPresentations(editorModel, colorInfo, msg.provider, CancellationToken.None).then(colorPresentations => {\r\n model.colorPresentations = colorPresentations || [];\r\n if (!this._editor.hasModel()) {\r\n // gone...\r\n return;\r\n }\r\n const originalText = this._editor.getModel().getValueInRange(msg.range);\r\n model.guessColorPresentation(color, originalText);\r\n const updateEditorModel = () => {\r\n let textEdits;\r\n let newRange;\r\n if (model.presentation.textEdit) {\r\n textEdits = [model.presentation.textEdit];\r\n newRange = new Range(model.presentation.textEdit.range.startLineNumber, model.presentation.textEdit.range.startColumn, model.presentation.textEdit.range.endLineNumber, model.presentation.textEdit.range.endColumn);\r\n newRange = newRange.setEndPosition(newRange.endLineNumber, newRange.startColumn + model.presentation.textEdit.text.length);\r\n }\r\n else {\r\n textEdits = [{ identifier: null, range, text: model.presentation.label, forceMoveMarkers: false }];\r\n newRange = range.setEndPosition(range.endLineNumber, range.startColumn + model.presentation.label.length);\r\n }\r\n this._editor.pushUndoStop();\r\n this._editor.executeEdits('colorpicker', textEdits);\r\n if (model.presentation.additionalTextEdits) {\r\n textEdits = [...model.presentation.additionalTextEdits];\r\n this._editor.executeEdits('colorpicker', textEdits);\r\n this.hide();\r\n }\r\n this._editor.pushUndoStop();\r\n range = newRange;\r\n };\r\n const updateColorPresentations = (color) => {\r\n return getColorPresentations(editorModel, {\r\n range: range,\r\n color: {\r\n red: color.rgba.r / 255,\r\n green: color.rgba.g / 255,\r\n blue: color.rgba.b / 255,\r\n alpha: color.rgba.a\r\n }\r\n }, msg.provider, CancellationToken.None).then((colorPresentations) => {\r\n model.colorPresentations = colorPresentations || [];\r\n });\r\n };\r\n const colorListener = model.onColorFlushed((color) => {\r\n updateColorPresentations(color).then(updateEditorModel);\r\n });\r\n const colorChangeListener = model.onDidChangeColor(updateColorPresentations);\r\n this._colorPicker = widget;\r\n this.showAt(range.getStartPosition(), range, this._shouldFocus);\r\n this.updateContents(fragment);\r\n this._colorPicker.layout();\r\n this.renderDisposable.value = combinedDisposable(colorListener, colorChangeListener, widget, markdownDisposeables);\r\n });\r\n }\r\n else {\r\n if (msg instanceof MarkerHover) {\r\n markerMessages.push(msg);\r\n isEmptyHoverContent = false;\r\n }\r\n else {\r\n msg.contents\r\n .filter(contents => !isEmptyMarkdownString(contents))\r\n .forEach(contents => {\r\n const markdownHoverElement = $('div.hover-row.markdown-hover');\r\n const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\r\n const renderer = markdownDisposeables.add(new MarkdownRenderer(this._editor, this._modeService, this._openerService));\r\n markdownDisposeables.add(renderer.onDidRenderCodeBlock(() => {\r\n hoverContentsElement.className = 'hover-contents code-hover-contents';\r\n this._hover.onContentsChanged();\r\n }));\r\n const renderedContents = markdownDisposeables.add(renderer.render(contents));\r\n hoverContentsElement.appendChild(renderedContents.element);\r\n fragment.appendChild(markdownHoverElement);\r\n isEmptyHoverContent = false;\r\n });\r\n }\r\n }\r\n });\r\n if (markerMessages.length) {\r\n markerMessages.forEach(msg => fragment.appendChild(this.renderMarkerHover(msg)));\r\n const markerHoverForStatusbar = markerMessages.length === 1 ? markerMessages[0] : markerMessages.sort((a, b) => MarkerSeverity.compare(a.marker.severity, b.marker.severity))[0];\r\n fragment.appendChild(this.renderMarkerStatusbar(markerHoverForStatusbar));\r\n }\r\n // show\r\n if (!containColorPicker && !isEmptyHoverContent) {\r\n this.showAt(new Position(renderRange.startLineNumber, renderColumn), highlightRange, this._shouldFocus);\r\n this.updateContents(fragment);\r\n }\r\n this._isChangingDecorations = true;\r\n this._highlightDecorations = this._editor.deltaDecorations(this._highlightDecorations, highlightRange ? [{\r\n range: highlightRange,\r\n options: ModesContentHoverWidget._DECORATION_OPTIONS\r\n }] : []);\r\n this._isChangingDecorations = false;\r\n }\r\n renderMarkerHover(markerHover) {\r\n const hoverElement = $('div.hover-row');\r\n const markerElement = dom.append(hoverElement, $('div.marker.hover-contents'));\r\n const { source, message, code, relatedInformation } = markerHover.marker;\r\n this._editor.applyFontInfo(markerElement);\r\n const messageElement = dom.append(markerElement, $('span'));\r\n messageElement.style.whiteSpace = 'pre-wrap';\r\n messageElement.innerText = message;\r\n if (source || code) {\r\n // Code has link\r\n if (code && typeof code !== 'string') {\r\n const sourceAndCodeElement = $('span');\r\n if (source) {\r\n const sourceElement = dom.append(sourceAndCodeElement, $('span'));\r\n sourceElement.innerText = source;\r\n }\r\n this._codeLink = dom.append(sourceAndCodeElement, $('a.code-link'));\r\n this._codeLink.setAttribute('href', code.target.toString());\r\n this._codeLink.onclick = (e) => {\r\n this._openerService.open(code.target);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n const codeElement = dom.append(this._codeLink, $('span'));\r\n codeElement.innerText = code.value;\r\n const detailsElement = dom.append(markerElement, sourceAndCodeElement);\r\n detailsElement.style.opacity = '0.6';\r\n detailsElement.style.paddingLeft = '6px';\r\n }\r\n else {\r\n const detailsElement = dom.append(markerElement, $('span'));\r\n detailsElement.style.opacity = '0.6';\r\n detailsElement.style.paddingLeft = '6px';\r\n detailsElement.innerText = source && code ? `${source}(${code})` : source ? source : `(${code})`;\r\n }\r\n }\r\n if (isNonEmptyArray(relatedInformation)) {\r\n for (const { message, resource, startLineNumber, startColumn } of relatedInformation) {\r\n const relatedInfoContainer = dom.append(markerElement, $('div'));\r\n relatedInfoContainer.style.marginTop = '8px';\r\n const a = dom.append(relatedInfoContainer, $('a'));\r\n a.innerText = `${basename(resource)}(${startLineNumber}, ${startColumn}): `;\r\n a.style.cursor = 'pointer';\r\n a.onclick = e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n if (this._openerService) {\r\n this._openerService.open(resource.with({ fragment: `${startLineNumber},${startColumn}` }), { fromUserGesture: true }).catch(onUnexpectedError);\r\n }\r\n };\r\n const messageElement = dom.append(relatedInfoContainer, $('span'));\r\n messageElement.innerText = message;\r\n this._editor.applyFontInfo(messageElement);\r\n }\r\n }\r\n return hoverElement;\r\n }\r\n renderMarkerStatusbar(markerHover) {\r\n const hoverElement = $('div.hover-row.status-bar');\r\n const disposables = new DisposableStore();\r\n const actionsElement = dom.append(hoverElement, $('div.actions'));\r\n if (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) {\r\n disposables.add(this._renderAction(actionsElement, {\r\n label: nls.localize('peek problem', \"Peek Problem\"),\r\n commandId: NextMarkerAction.ID,\r\n run: () => {\r\n this.hide();\r\n MarkerController.get(this._editor).showAtMarker(markerHover.marker);\r\n this._editor.focus();\r\n }\r\n }));\r\n }\r\n if (!this._editor.getOption(72 /* readOnly */)) {\r\n const quickfixPlaceholderElement = dom.append(actionsElement, $('div'));\r\n quickfixPlaceholderElement.style.opacity = '0';\r\n quickfixPlaceholderElement.style.transition = 'opacity 0.2s';\r\n setTimeout(() => quickfixPlaceholderElement.style.opacity = '1', 200);\r\n quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', \"Checking for quick fixes...\");\r\n disposables.add(toDisposable(() => quickfixPlaceholderElement.remove()));\r\n const codeActionsPromise = this.getCodeActions(markerHover.marker);\r\n disposables.add(toDisposable(() => codeActionsPromise.cancel()));\r\n codeActionsPromise.then(actions => {\r\n quickfixPlaceholderElement.style.transition = '';\r\n quickfixPlaceholderElement.style.opacity = '1';\r\n if (!actions.validActions.length) {\r\n actions.dispose();\r\n quickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\r\n return;\r\n }\r\n quickfixPlaceholderElement.remove();\r\n let showing = false;\r\n disposables.add(toDisposable(() => {\r\n if (!showing) {\r\n actions.dispose();\r\n }\r\n }));\r\n disposables.add(this._renderAction(actionsElement, {\r\n label: nls.localize('quick fixes', \"Quick Fix...\"),\r\n commandId: QuickFixAction.Id,\r\n run: (target) => {\r\n showing = true;\r\n const controller = QuickFixController.get(this._editor);\r\n const elementPosition = dom.getDomNodePagePosition(target);\r\n // Hide the hover pre-emptively, otherwise the editor can close the code actions\r\n // context menu as well when using keyboard navigation\r\n this.hide();\r\n controller.showCodeActions(markerCodeActionTrigger, actions, {\r\n x: elementPosition.left + 6,\r\n y: elementPosition.top + elementPosition.height + 6\r\n });\r\n }\r\n }));\r\n });\r\n }\r\n this.renderDisposable.value = disposables;\r\n return hoverElement;\r\n }\r\n getCodeActions(marker) {\r\n return createCancelablePromise(cancellationToken => {\r\n return getCodeActions(this._editor.getModel(), new Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn), markerCodeActionTrigger, Progress.None, cancellationToken);\r\n });\r\n }\r\n}\r\nModesContentHoverWidget.ID = 'editor.contrib.modesContentHoverWidget';\r\nModesContentHoverWidget._DECORATION_OPTIONS = ModelDecorationOptions.register({\r\n className: 'hoverHighlight'\r\n});\r\nfunction hoverContentsEquals(first, second) {\r\n if ((!first && second) || (first && !second) || first.length !== second.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < first.length; i++) {\r\n const firstElement = first[i];\r\n const secondElement = second[i];\r\n if (firstElement instanceof MarkerHover && secondElement instanceof MarkerHover) {\r\n return IMarkerData.makeKey(firstElement.marker) === IMarkerData.makeKey(secondElement.marker);\r\n }\r\n if (firstElement instanceof ColorHover || secondElement instanceof ColorHover) {\r\n return false;\r\n }\r\n if (firstElement instanceof MarkerHover || secondElement instanceof MarkerHover) {\r\n return false;\r\n }\r\n if (!markedStringsEquals(firstElement.contents, secondElement.contents)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nregisterThemingParticipant((theme, collector) => {\r\n const linkFg = theme.getColor(textLinkForeground);\r\n if (linkFg) {\r\n collector.addRule(`.monaco-hover .hover-contents a.code-link span:hover { color: ${linkFg}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { $ } from '../../../base/browser/dom.js';\r\nimport { isEmptyMarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { HoverOperation } from './hoverOperation.js';\r\nimport { GlyphHoverWidget } from './hoverWidgets.js';\r\nimport { MarkdownRenderer } from '../markdown/markdownRenderer.js';\r\nimport { NullOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { asArray } from '../../../base/common/arrays.js';\r\nclass MarginComputer {\r\n constructor(editor) {\r\n this._editor = editor;\r\n this._lineNumber = -1;\r\n this._result = [];\r\n }\r\n setLineNumber(lineNumber) {\r\n this._lineNumber = lineNumber;\r\n this._result = [];\r\n }\r\n clearResult() {\r\n this._result = [];\r\n }\r\n computeSync() {\r\n const toHoverMessage = (contents) => {\r\n return {\r\n value: contents\r\n };\r\n };\r\n const lineDecorations = this._editor.getLineDecorations(this._lineNumber);\r\n const result = [];\r\n if (!lineDecorations) {\r\n return result;\r\n }\r\n for (const d of lineDecorations) {\r\n if (!d.options.glyphMarginClassName) {\r\n continue;\r\n }\r\n const hoverMessage = d.options.glyphMarginHoverMessage;\r\n if (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\r\n continue;\r\n }\r\n result.push(...asArray(hoverMessage).map(toHoverMessage));\r\n }\r\n return result;\r\n }\r\n onResult(result, isFromSynchronousComputation) {\r\n this._result = this._result.concat(result);\r\n }\r\n getResult() {\r\n return this._result;\r\n }\r\n getResultWithLoadingMessage() {\r\n return this.getResult();\r\n }\r\n}\r\nexport class ModesGlyphHoverWidget extends GlyphHoverWidget {\r\n constructor(editor, modeService, openerService = NullOpenerService) {\r\n super(ModesGlyphHoverWidget.ID, editor);\r\n this._renderDisposeables = this._register(new DisposableStore());\r\n this._messages = [];\r\n this._lastLineNumber = -1;\r\n this._markdownRenderer = this._register(new MarkdownRenderer(this._editor, modeService, openerService));\r\n this._computer = new MarginComputer(this._editor);\r\n this._hoverOperation = new HoverOperation(this._computer, (result) => this._withResult(result), undefined, (result) => this._withResult(result), 300);\r\n }\r\n dispose() {\r\n this._hoverOperation.cancel();\r\n super.dispose();\r\n }\r\n onModelDecorationsChanged() {\r\n if (this.isVisible) {\r\n // The decorations have changed and the hover is visible,\r\n // we need to recompute the displayed text\r\n this._hoverOperation.cancel();\r\n this._computer.clearResult();\r\n this._hoverOperation.start(0 /* Delayed */);\r\n }\r\n }\r\n startShowingAt(lineNumber) {\r\n if (this._lastLineNumber === lineNumber) {\r\n // We have to show the widget at the exact same line number as before, so no work is needed\r\n return;\r\n }\r\n this._hoverOperation.cancel();\r\n this.hide();\r\n this._lastLineNumber = lineNumber;\r\n this._computer.setLineNumber(lineNumber);\r\n this._hoverOperation.start(0 /* Delayed */);\r\n }\r\n hide() {\r\n this._lastLineNumber = -1;\r\n this._hoverOperation.cancel();\r\n super.hide();\r\n }\r\n _withResult(result) {\r\n this._messages = result;\r\n if (this._messages.length > 0) {\r\n this._renderMessages(this._lastLineNumber, this._messages);\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }\r\n _renderMessages(lineNumber, messages) {\r\n this._renderDisposeables.clear();\r\n const fragment = document.createDocumentFragment();\r\n for (const msg of messages) {\r\n const renderedContents = this._markdownRenderer.render(msg.value);\r\n this._renderDisposeables.add(renderedContents);\r\n fragment.appendChild($('div.hover-row', undefined, renderedContents.element));\r\n }\r\n this.updateContents(fragment);\r\n this.showAt(lineNumber);\r\n }\r\n}\r\nModesGlyphHoverWidget.ID = 'editor.contrib.modesGlyphHoverWidget';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { registerEditorAction, EditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { InPlaceReplaceCommand } from './inPlaceReplaceCommand.js';\r\nimport { EditorState } from '../../browser/core/editorState.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { editorBracketMatchBorder } from '../../common/view/editorColorRegistry.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { createCancelablePromise, timeout } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nlet InPlaceReplaceController = class InPlaceReplaceController {\r\n constructor(editor, editorWorkerService) {\r\n this.decorationIds = [];\r\n this.editor = editor;\r\n this.editorWorkerService = editorWorkerService;\r\n }\r\n static get(editor) {\r\n return editor.getContribution(InPlaceReplaceController.ID);\r\n }\r\n dispose() {\r\n }\r\n run(source, up) {\r\n // cancel any pending request\r\n if (this.currentRequest) {\r\n this.currentRequest.cancel();\r\n }\r\n const editorSelection = this.editor.getSelection();\r\n const model = this.editor.getModel();\r\n if (!model || !editorSelection) {\r\n return undefined;\r\n }\r\n let selection = editorSelection;\r\n if (selection.startLineNumber !== selection.endLineNumber) {\r\n // Can't accept multiline selection\r\n return undefined;\r\n }\r\n const state = new EditorState(this.editor, 1 /* Value */ | 4 /* Position */);\r\n const modelURI = model.uri;\r\n if (!this.editorWorkerService.canNavigateValueSet(modelURI)) {\r\n return Promise.resolve(undefined);\r\n }\r\n this.currentRequest = createCancelablePromise(token => this.editorWorkerService.navigateValueSet(modelURI, selection, up));\r\n return this.currentRequest.then(result => {\r\n if (!result || !result.range || !result.value) {\r\n // No proper result\r\n return;\r\n }\r\n if (!state.validate(this.editor)) {\r\n // state has changed\r\n return;\r\n }\r\n // Selection\r\n let editRange = Range.lift(result.range);\r\n let highlightRange = result.range;\r\n let diff = result.value.length - (selection.endColumn - selection.startColumn);\r\n // highlight\r\n highlightRange = {\r\n startLineNumber: highlightRange.startLineNumber,\r\n startColumn: highlightRange.startColumn,\r\n endLineNumber: highlightRange.endLineNumber,\r\n endColumn: highlightRange.startColumn + result.value.length\r\n };\r\n if (diff > 1) {\r\n selection = new Selection(selection.startLineNumber, selection.startColumn, selection.endLineNumber, selection.endColumn + diff - 1);\r\n }\r\n // Insert new text\r\n const command = new InPlaceReplaceCommand(editRange, selection, result.value);\r\n this.editor.pushUndoStop();\r\n this.editor.executeCommand(source, command);\r\n this.editor.pushUndoStop();\r\n // add decoration\r\n this.decorationIds = this.editor.deltaDecorations(this.decorationIds, [{\r\n range: highlightRange,\r\n options: InPlaceReplaceController.DECORATION\r\n }]);\r\n // remove decoration after delay\r\n if (this.decorationRemover) {\r\n this.decorationRemover.cancel();\r\n }\r\n this.decorationRemover = timeout(350);\r\n this.decorationRemover.then(() => this.decorationIds = this.editor.deltaDecorations(this.decorationIds, [])).catch(onUnexpectedError);\r\n }).catch(onUnexpectedError);\r\n }\r\n};\r\nInPlaceReplaceController.ID = 'editor.contrib.inPlaceReplaceController';\r\nInPlaceReplaceController.DECORATION = ModelDecorationOptions.register({\r\n className: 'valueSetReplacement'\r\n});\r\nInPlaceReplaceController = __decorate([\r\n __param(1, IEditorWorkerService)\r\n], InPlaceReplaceController);\r\nclass InPlaceReplaceUp extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.inPlaceReplace.up',\r\n label: nls.localize('InPlaceReplaceAction.previous.label', \"Replace with Previous Value\"),\r\n alias: 'Replace with Previous Value',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 82 /* US_COMMA */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const controller = InPlaceReplaceController.get(editor);\r\n if (!controller) {\r\n return Promise.resolve(undefined);\r\n }\r\n return controller.run(this.id, true);\r\n }\r\n}\r\nclass InPlaceReplaceDown extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.inPlaceReplace.down',\r\n label: nls.localize('InPlaceReplaceAction.next.label', \"Replace with Next Value\"),\r\n alias: 'Replace with Next Value',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 84 /* US_DOT */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const controller = InPlaceReplaceController.get(editor);\r\n if (!controller) {\r\n return Promise.resolve(undefined);\r\n }\r\n return controller.run(this.id, false);\r\n }\r\n}\r\nregisterEditorContribution(InPlaceReplaceController.ID, InPlaceReplaceController);\r\nregisterEditorAction(InPlaceReplaceUp);\r\nregisterEditorAction(InPlaceReplaceDown);\r\nregisterThemingParticipant((theme, collector) => {\r\n const border = theme.getColor(editorBracketMatchBorder);\r\n if (border) {\r\n collector.addRule(`.monaco-editor.vs .valueSetReplacement { outline: solid 2px ${border}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Selection } from '../../common/core/selection.js';\r\nexport class InPlaceReplaceCommand {\r\n constructor(editRange, originalSelection, text) {\r\n this._editRange = editRange;\r\n this._originalSelection = originalSelection;\r\n this._text = text;\r\n }\r\n getEditOperations(model, builder) {\r\n builder.addTrackedEditOperation(this._editRange, this._text);\r\n }\r\n computeCursorState(model, helper) {\r\n const inverseEditOperations = helper.getInverseEditOperations();\r\n const srcRange = inverseEditOperations[0].range;\r\n if (!this._originalSelection.isEmpty()) {\r\n // Preserve selection and extends to typed text\r\n return new Selection(srcRange.endLineNumber, srcRange.endColumn - this._text.length, srcRange.endLineNumber, srcRange.endColumn);\r\n }\r\n return new Selection(srcRange.endLineNumber, Math.min(this._originalSelection.positionColumn, srcRange.endColumn), srcRange.endLineNumber, Math.min(this._originalSelection.positionColumn, srcRange.endColumn));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function getSpaceCnt(str, tabSize) {\r\n let spacesCnt = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n if (str.charAt(i) === '\\t') {\r\n spacesCnt += tabSize;\r\n }\r\n else {\r\n spacesCnt++;\r\n }\r\n }\r\n return spacesCnt;\r\n}\r\nexport function generateIndent(spacesCnt, tabSize, insertSpaces) {\r\n spacesCnt = spacesCnt < 0 ? 0 : spacesCnt;\r\n let result = '';\r\n if (!insertSpaces) {\r\n let tabsCnt = Math.floor(spacesCnt / tabSize);\r\n spacesCnt = spacesCnt % tabSize;\r\n for (let i = 0; i < tabsCnt; i++) {\r\n result += '\\t';\r\n }\r\n }\r\n for (let i = 0; i < spacesCnt; i++) {\r\n result += ' ';\r\n }\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ShiftCommand } from '../../common/commands/shiftCommand.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { TextModel } from '../../common/model/textModel.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport * as indentUtils from './indentUtils.js';\r\nimport { IQuickInputService } from '../../../platform/quickinput/common/quickInput.js';\r\nexport function getReindentEditOperations(model, startLineNumber, endLineNumber, inheritedIndent) {\r\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\r\n // Model is empty\r\n return [];\r\n }\r\n let indentationRules = LanguageConfigurationRegistry.getIndentationRules(model.getLanguageIdentifier().id);\r\n if (!indentationRules) {\r\n return [];\r\n }\r\n endLineNumber = Math.min(endLineNumber, model.getLineCount());\r\n // Skip `unIndentedLinePattern` lines\r\n while (startLineNumber <= endLineNumber) {\r\n if (!indentationRules.unIndentedLinePattern) {\r\n break;\r\n }\r\n let text = model.getLineContent(startLineNumber);\r\n if (!indentationRules.unIndentedLinePattern.test(text)) {\r\n break;\r\n }\r\n startLineNumber++;\r\n }\r\n if (startLineNumber > endLineNumber - 1) {\r\n return [];\r\n }\r\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\r\n const shiftIndent = (indentation, count) => {\r\n count = count || 1;\r\n return ShiftCommand.shiftIndent(indentation, indentation.length + count, tabSize, indentSize, insertSpaces);\r\n };\r\n const unshiftIndent = (indentation, count) => {\r\n count = count || 1;\r\n return ShiftCommand.unshiftIndent(indentation, indentation.length + count, tabSize, indentSize, insertSpaces);\r\n };\r\n let indentEdits = [];\r\n // indentation being passed to lines below\r\n let globalIndent;\r\n // Calculate indentation for the first line\r\n // If there is no passed-in indentation, we use the indentation of the first line as base.\r\n let currentLineText = model.getLineContent(startLineNumber);\r\n let adjustedLineContent = currentLineText;\r\n if (inheritedIndent !== undefined && inheritedIndent !== null) {\r\n globalIndent = inheritedIndent;\r\n let oldIndentation = strings.getLeadingWhitespace(currentLineText);\r\n adjustedLineContent = globalIndent + currentLineText.substring(oldIndentation.length);\r\n if (indentationRules.decreaseIndentPattern && indentationRules.decreaseIndentPattern.test(adjustedLineContent)) {\r\n globalIndent = unshiftIndent(globalIndent);\r\n adjustedLineContent = globalIndent + currentLineText.substring(oldIndentation.length);\r\n }\r\n if (currentLineText !== adjustedLineContent) {\r\n indentEdits.push(EditOperation.replace(new Selection(startLineNumber, 1, startLineNumber, oldIndentation.length + 1), TextModel.normalizeIndentation(globalIndent, indentSize, insertSpaces)));\r\n }\r\n }\r\n else {\r\n globalIndent = strings.getLeadingWhitespace(currentLineText);\r\n }\r\n // idealIndentForNextLine doesn't equal globalIndent when there is a line matching `indentNextLinePattern`.\r\n let idealIndentForNextLine = globalIndent;\r\n if (indentationRules.increaseIndentPattern && indentationRules.increaseIndentPattern.test(adjustedLineContent)) {\r\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\r\n globalIndent = shiftIndent(globalIndent);\r\n }\r\n else if (indentationRules.indentNextLinePattern && indentationRules.indentNextLinePattern.test(adjustedLineContent)) {\r\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\r\n }\r\n startLineNumber++;\r\n // Calculate indentation adjustment for all following lines\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n let text = model.getLineContent(lineNumber);\r\n let oldIndentation = strings.getLeadingWhitespace(text);\r\n let adjustedLineContent = idealIndentForNextLine + text.substring(oldIndentation.length);\r\n if (indentationRules.decreaseIndentPattern && indentationRules.decreaseIndentPattern.test(adjustedLineContent)) {\r\n idealIndentForNextLine = unshiftIndent(idealIndentForNextLine);\r\n globalIndent = unshiftIndent(globalIndent);\r\n }\r\n if (oldIndentation !== idealIndentForNextLine) {\r\n indentEdits.push(EditOperation.replace(new Selection(lineNumber, 1, lineNumber, oldIndentation.length + 1), TextModel.normalizeIndentation(idealIndentForNextLine, indentSize, insertSpaces)));\r\n }\r\n // calculate idealIndentForNextLine\r\n if (indentationRules.unIndentedLinePattern && indentationRules.unIndentedLinePattern.test(text)) {\r\n // In reindent phase, if the line matches `unIndentedLinePattern` we inherit indentation from above lines\r\n // but don't change globalIndent and idealIndentForNextLine.\r\n continue;\r\n }\r\n else if (indentationRules.increaseIndentPattern && indentationRules.increaseIndentPattern.test(adjustedLineContent)) {\r\n globalIndent = shiftIndent(globalIndent);\r\n idealIndentForNextLine = globalIndent;\r\n }\r\n else if (indentationRules.indentNextLinePattern && indentationRules.indentNextLinePattern.test(adjustedLineContent)) {\r\n idealIndentForNextLine = shiftIndent(idealIndentForNextLine);\r\n }\r\n else {\r\n idealIndentForNextLine = globalIndent;\r\n }\r\n }\r\n return indentEdits;\r\n}\r\nexport class IndentationToSpacesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: IndentationToSpacesAction.ID,\r\n label: nls.localize('indentationToSpaces', \"Convert Indentation to Spaces\"),\r\n alias: 'Convert Indentation to Spaces',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n run(accessor, editor) {\r\n let model = editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n let modelOpts = model.getOptions();\r\n let selection = editor.getSelection();\r\n if (!selection) {\r\n return;\r\n }\r\n const command = new IndentationToSpacesCommand(selection, modelOpts.tabSize);\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, [command]);\r\n editor.pushUndoStop();\r\n model.updateOptions({\r\n insertSpaces: true\r\n });\r\n }\r\n}\r\nIndentationToSpacesAction.ID = 'editor.action.indentationToSpaces';\r\nexport class IndentationToTabsAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: IndentationToTabsAction.ID,\r\n label: nls.localize('indentationToTabs', \"Convert Indentation to Tabs\"),\r\n alias: 'Convert Indentation to Tabs',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n run(accessor, editor) {\r\n let model = editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n let modelOpts = model.getOptions();\r\n let selection = editor.getSelection();\r\n if (!selection) {\r\n return;\r\n }\r\n const command = new IndentationToTabsCommand(selection, modelOpts.tabSize);\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, [command]);\r\n editor.pushUndoStop();\r\n model.updateOptions({\r\n insertSpaces: false\r\n });\r\n }\r\n}\r\nIndentationToTabsAction.ID = 'editor.action.indentationToTabs';\r\nexport class ChangeIndentationSizeAction extends EditorAction {\r\n constructor(insertSpaces, opts) {\r\n super(opts);\r\n this.insertSpaces = insertSpaces;\r\n }\r\n run(accessor, editor) {\r\n const quickInputService = accessor.get(IQuickInputService);\r\n const modelService = accessor.get(IModelService);\r\n let model = editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n let creationOpts = modelService.getCreationOptions(model.getLanguageIdentifier().language, model.uri, model.isForSimpleWidget);\r\n const picks = [1, 2, 3, 4, 5, 6, 7, 8].map(n => ({\r\n id: n.toString(),\r\n label: n.toString(),\r\n // add description for tabSize value set in the configuration\r\n description: n === creationOpts.tabSize ? nls.localize('configuredTabSize', \"Configured Tab Size\") : undefined\r\n }));\r\n // auto focus the tabSize set for the current editor\r\n const autoFocusIndex = Math.min(model.getOptions().tabSize - 1, 7);\r\n setTimeout(() => {\r\n quickInputService.pick(picks, { placeHolder: nls.localize({ key: 'selectTabWidth', comment: ['Tab corresponds to the tab key'] }, \"Select Tab Size for Current File\"), activeItem: picks[autoFocusIndex] }).then(pick => {\r\n if (pick) {\r\n if (model && !model.isDisposed()) {\r\n model.updateOptions({\r\n tabSize: parseInt(pick.label, 10),\r\n insertSpaces: this.insertSpaces\r\n });\r\n }\r\n }\r\n });\r\n }, 50 /* quick input is sensitive to being opened so soon after another */);\r\n }\r\n}\r\nexport class IndentUsingTabs extends ChangeIndentationSizeAction {\r\n constructor() {\r\n super(false, {\r\n id: IndentUsingTabs.ID,\r\n label: nls.localize('indentUsingTabs', \"Indent Using Tabs\"),\r\n alias: 'Indent Using Tabs',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nIndentUsingTabs.ID = 'editor.action.indentUsingTabs';\r\nexport class IndentUsingSpaces extends ChangeIndentationSizeAction {\r\n constructor() {\r\n super(true, {\r\n id: IndentUsingSpaces.ID,\r\n label: nls.localize('indentUsingSpaces', \"Indent Using Spaces\"),\r\n alias: 'Indent Using Spaces',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nIndentUsingSpaces.ID = 'editor.action.indentUsingSpaces';\r\nexport class DetectIndentation extends EditorAction {\r\n constructor() {\r\n super({\r\n id: DetectIndentation.ID,\r\n label: nls.localize('detectIndentation', \"Detect Indentation from Content\"),\r\n alias: 'Detect Indentation from Content',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n const modelService = accessor.get(IModelService);\r\n let model = editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n let creationOpts = modelService.getCreationOptions(model.getLanguageIdentifier().language, model.uri, model.isForSimpleWidget);\r\n model.detectIndentation(creationOpts.insertSpaces, creationOpts.tabSize);\r\n }\r\n}\r\nDetectIndentation.ID = 'editor.action.detectIndentation';\r\nexport class ReindentLinesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.reindentlines',\r\n label: nls.localize('editor.reindentlines', \"Reindent Lines\"),\r\n alias: 'Reindent Lines',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n run(accessor, editor) {\r\n let model = editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n let edits = getReindentEditOperations(model, 1, model.getLineCount());\r\n if (edits.length > 0) {\r\n editor.pushUndoStop();\r\n editor.executeEdits(this.id, edits);\r\n editor.pushUndoStop();\r\n }\r\n }\r\n}\r\nexport class ReindentSelectedLinesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.reindentselectedlines',\r\n label: nls.localize('editor.reindentselectedlines', \"Reindent Selected Lines\"),\r\n alias: 'Reindent Selected Lines',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n run(accessor, editor) {\r\n let model = editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n let selections = editor.getSelections();\r\n if (selections === null) {\r\n return;\r\n }\r\n let edits = [];\r\n for (let selection of selections) {\r\n let startLineNumber = selection.startLineNumber;\r\n let endLineNumber = selection.endLineNumber;\r\n if (startLineNumber !== endLineNumber && selection.endColumn === 1) {\r\n endLineNumber--;\r\n }\r\n if (startLineNumber === 1) {\r\n if (startLineNumber === endLineNumber) {\r\n continue;\r\n }\r\n }\r\n else {\r\n startLineNumber--;\r\n }\r\n let editOperations = getReindentEditOperations(model, startLineNumber, endLineNumber);\r\n edits.push(...editOperations);\r\n }\r\n if (edits.length > 0) {\r\n editor.pushUndoStop();\r\n editor.executeEdits(this.id, edits);\r\n editor.pushUndoStop();\r\n }\r\n }\r\n}\r\nexport class AutoIndentOnPasteCommand {\r\n constructor(edits, initialSelection) {\r\n this._initialSelection = initialSelection;\r\n this._edits = [];\r\n this._selectionId = null;\r\n for (let edit of edits) {\r\n if (edit.range && typeof edit.text === 'string') {\r\n this._edits.push(edit);\r\n }\r\n }\r\n }\r\n getEditOperations(model, builder) {\r\n for (let edit of this._edits) {\r\n builder.addEditOperation(Range.lift(edit.range), edit.text);\r\n }\r\n let selectionIsSet = false;\r\n if (Array.isArray(this._edits) && this._edits.length === 1 && this._initialSelection.isEmpty()) {\r\n if (this._edits[0].range.startColumn === this._initialSelection.endColumn &&\r\n this._edits[0].range.startLineNumber === this._initialSelection.endLineNumber) {\r\n selectionIsSet = true;\r\n this._selectionId = builder.trackSelection(this._initialSelection, true);\r\n }\r\n else if (this._edits[0].range.endColumn === this._initialSelection.startColumn &&\r\n this._edits[0].range.endLineNumber === this._initialSelection.startLineNumber) {\r\n selectionIsSet = true;\r\n this._selectionId = builder.trackSelection(this._initialSelection, false);\r\n }\r\n }\r\n if (!selectionIsSet) {\r\n this._selectionId = builder.trackSelection(this._initialSelection);\r\n }\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this._selectionId);\r\n }\r\n}\r\nexport class AutoIndentOnPaste {\r\n constructor(editor) {\r\n this.callOnDispose = new DisposableStore();\r\n this.callOnModel = new DisposableStore();\r\n this.editor = editor;\r\n this.callOnDispose.add(editor.onDidChangeConfiguration(() => this.update()));\r\n this.callOnDispose.add(editor.onDidChangeModel(() => this.update()));\r\n this.callOnDispose.add(editor.onDidChangeModelLanguage(() => this.update()));\r\n }\r\n update() {\r\n // clean up\r\n this.callOnModel.clear();\r\n // we are disabled\r\n if (this.editor.getOption(8 /* autoIndent */) < 4 /* Full */ || this.editor.getOption(40 /* formatOnPaste */)) {\r\n return;\r\n }\r\n // no model\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n this.callOnModel.add(this.editor.onDidPaste(({ range }) => {\r\n this.trigger(range);\r\n }));\r\n }\r\n trigger(range) {\r\n let selections = this.editor.getSelections();\r\n if (selections === null || selections.length > 1) {\r\n return;\r\n }\r\n const model = this.editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n if (!model.isCheapToTokenize(range.getStartPosition().lineNumber)) {\r\n return;\r\n }\r\n const autoIndent = this.editor.getOption(8 /* autoIndent */);\r\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\r\n this.editor.pushUndoStop();\r\n let textEdits = [];\r\n let indentConverter = {\r\n shiftIndent: (indentation) => {\r\n return ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\r\n },\r\n unshiftIndent: (indentation) => {\r\n return ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\r\n }\r\n };\r\n let startLineNumber = range.startLineNumber;\r\n while (startLineNumber <= range.endLineNumber) {\r\n if (this.shouldIgnoreLine(model, startLineNumber)) {\r\n startLineNumber++;\r\n continue;\r\n }\r\n break;\r\n }\r\n if (startLineNumber > range.endLineNumber) {\r\n return;\r\n }\r\n let firstLineText = model.getLineContent(startLineNumber);\r\n if (!/\\S/.test(firstLineText.substring(0, range.startColumn - 1))) {\r\n let indentOfFirstLine = LanguageConfigurationRegistry.getGoodIndentForLine(autoIndent, model, model.getLanguageIdentifier().id, startLineNumber, indentConverter);\r\n if (indentOfFirstLine !== null) {\r\n let oldIndentation = strings.getLeadingWhitespace(firstLineText);\r\n let newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\r\n let oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\r\n if (newSpaceCnt !== oldSpaceCnt) {\r\n let newIndent = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\r\n textEdits.push({\r\n range: new Range(startLineNumber, 1, startLineNumber, oldIndentation.length + 1),\r\n text: newIndent\r\n });\r\n firstLineText = newIndent + firstLineText.substr(oldIndentation.length);\r\n }\r\n else {\r\n let indentMetadata = LanguageConfigurationRegistry.getIndentMetadata(model, startLineNumber);\r\n if (indentMetadata === 0 || indentMetadata === 8 /* UNINDENT_MASK */) {\r\n // we paste content into a line where only contains whitespaces\r\n // after pasting, the indentation of the first line is already correct\r\n // the first line doesn't match any indentation rule\r\n // then no-op.\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n const firstLineNumber = startLineNumber;\r\n // ignore empty or ignored lines\r\n while (startLineNumber < range.endLineNumber) {\r\n if (!/\\S/.test(model.getLineContent(startLineNumber + 1))) {\r\n startLineNumber++;\r\n continue;\r\n }\r\n break;\r\n }\r\n if (startLineNumber !== range.endLineNumber) {\r\n let virtualModel = {\r\n getLineTokens: (lineNumber) => {\r\n return model.getLineTokens(lineNumber);\r\n },\r\n getLanguageIdentifier: () => {\r\n return model.getLanguageIdentifier();\r\n },\r\n getLanguageIdAtPosition: (lineNumber, column) => {\r\n return model.getLanguageIdAtPosition(lineNumber, column);\r\n },\r\n getLineContent: (lineNumber) => {\r\n if (lineNumber === firstLineNumber) {\r\n return firstLineText;\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n }\r\n };\r\n let indentOfSecondLine = LanguageConfigurationRegistry.getGoodIndentForLine(autoIndent, virtualModel, model.getLanguageIdentifier().id, startLineNumber + 1, indentConverter);\r\n if (indentOfSecondLine !== null) {\r\n let newSpaceCntOfSecondLine = indentUtils.getSpaceCnt(indentOfSecondLine, tabSize);\r\n let oldSpaceCntOfSecondLine = indentUtils.getSpaceCnt(strings.getLeadingWhitespace(model.getLineContent(startLineNumber + 1)), tabSize);\r\n if (newSpaceCntOfSecondLine !== oldSpaceCntOfSecondLine) {\r\n let spaceCntOffset = newSpaceCntOfSecondLine - oldSpaceCntOfSecondLine;\r\n for (let i = startLineNumber + 1; i <= range.endLineNumber; i++) {\r\n let lineContent = model.getLineContent(i);\r\n let originalIndent = strings.getLeadingWhitespace(lineContent);\r\n let originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\r\n let newSpacesCnt = originalSpacesCnt + spaceCntOffset;\r\n let newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\r\n if (newIndent !== originalIndent) {\r\n textEdits.push({\r\n range: new Range(i, 1, i, originalIndent.length + 1),\r\n text: newIndent\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n let cmd = new AutoIndentOnPasteCommand(textEdits, this.editor.getSelection());\r\n this.editor.executeCommand('autoIndentOnPaste', cmd);\r\n this.editor.pushUndoStop();\r\n }\r\n shouldIgnoreLine(model, lineNumber) {\r\n model.forceTokenization(lineNumber);\r\n let nonWhitespaceColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\r\n if (nonWhitespaceColumn === 0) {\r\n return true;\r\n }\r\n let tokens = model.getLineTokens(lineNumber);\r\n if (tokens.getCount() > 0) {\r\n let firstNonWhitespaceTokenIndex = tokens.findTokenIndexAtOffset(nonWhitespaceColumn);\r\n if (firstNonWhitespaceTokenIndex >= 0 && tokens.getStandardTokenType(firstNonWhitespaceTokenIndex) === 1 /* Comment */) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n dispose() {\r\n this.callOnDispose.dispose();\r\n this.callOnModel.dispose();\r\n }\r\n}\r\nAutoIndentOnPaste.ID = 'editor.contrib.autoIndentOnPaste';\r\nfunction getIndentationEditOperations(model, builder, tabSize, tabsToSpaces) {\r\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\r\n // Model is empty\r\n return;\r\n }\r\n let spaces = '';\r\n for (let i = 0; i < tabSize; i++) {\r\n spaces += ' ';\r\n }\r\n let spacesRegExp = new RegExp(spaces, 'gi');\r\n for (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\r\n let lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\r\n if (lastIndentationColumn === 0) {\r\n lastIndentationColumn = model.getLineMaxColumn(lineNumber);\r\n }\r\n if (lastIndentationColumn === 1) {\r\n continue;\r\n }\r\n const originalIndentationRange = new Range(lineNumber, 1, lineNumber, lastIndentationColumn);\r\n const originalIndentation = model.getValueInRange(originalIndentationRange);\r\n const newIndentation = (tabsToSpaces\r\n ? originalIndentation.replace(/\\t/ig, spaces)\r\n : originalIndentation.replace(spacesRegExp, '\\t'));\r\n builder.addEditOperation(originalIndentationRange, newIndentation);\r\n }\r\n}\r\nexport class IndentationToSpacesCommand {\r\n constructor(selection, tabSize) {\r\n this.selection = selection;\r\n this.tabSize = tabSize;\r\n this.selectionId = null;\r\n }\r\n getEditOperations(model, builder) {\r\n this.selectionId = builder.trackSelection(this.selection);\r\n getIndentationEditOperations(model, builder, this.tabSize, true);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this.selectionId);\r\n }\r\n}\r\nexport class IndentationToTabsCommand {\r\n constructor(selection, tabSize) {\r\n this.selection = selection;\r\n this.tabSize = tabSize;\r\n this.selectionId = null;\r\n }\r\n getEditOperations(model, builder) {\r\n this.selectionId = builder.trackSelection(this.selection);\r\n getIndentationEditOperations(model, builder, this.tabSize, false);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this.selectionId);\r\n }\r\n}\r\nregisterEditorContribution(AutoIndentOnPaste.ID, AutoIndentOnPaste);\r\nregisterEditorAction(IndentationToSpacesAction);\r\nregisterEditorAction(IndentationToTabsAction);\r\nregisterEditorAction(IndentUsingTabs);\r\nregisterEditorAction(IndentUsingSpaces);\r\nregisterEditorAction(DetectIndentation);\r\nregisterEditorAction(ReindentLinesAction);\r\nregisterEditorAction(ReindentSelectedLinesAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nexport class CopyLinesCommand {\r\n constructor(selection, isCopyingDown) {\r\n this._selection = selection;\r\n this._isCopyingDown = isCopyingDown;\r\n this._selectionDirection = 0 /* LTR */;\r\n this._selectionId = null;\r\n this._startLineNumberDelta = 0;\r\n this._endLineNumberDelta = 0;\r\n }\r\n getEditOperations(model, builder) {\r\n let s = this._selection;\r\n this._startLineNumberDelta = 0;\r\n this._endLineNumberDelta = 0;\r\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\r\n this._endLineNumberDelta = 1;\r\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\r\n }\r\n let sourceLines = [];\r\n for (let i = s.startLineNumber; i <= s.endLineNumber; i++) {\r\n sourceLines.push(model.getLineContent(i));\r\n }\r\n const sourceText = sourceLines.join('\\n');\r\n if (sourceText === '') {\r\n // Duplicating empty line\r\n if (this._isCopyingDown) {\r\n this._startLineNumberDelta++;\r\n this._endLineNumberDelta++;\r\n }\r\n }\r\n if (!this._isCopyingDown) {\r\n builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), '\\n' + sourceText);\r\n }\r\n else {\r\n builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), sourceText + '\\n');\r\n }\r\n this._selectionId = builder.trackSelection(s);\r\n this._selectionDirection = this._selection.getDirection();\r\n }\r\n computeCursorState(model, helper) {\r\n let result = helper.getTrackedSelection(this._selectionId);\r\n if (this._startLineNumberDelta !== 0 || this._endLineNumberDelta !== 0) {\r\n let startLineNumber = result.startLineNumber;\r\n let startColumn = result.startColumn;\r\n let endLineNumber = result.endLineNumber;\r\n let endColumn = result.endColumn;\r\n if (this._startLineNumberDelta !== 0) {\r\n startLineNumber = startLineNumber + this._startLineNumberDelta;\r\n startColumn = 1;\r\n }\r\n if (this._endLineNumberDelta !== 0) {\r\n endLineNumber = endLineNumber + this._endLineNumberDelta;\r\n endColumn = 1;\r\n }\r\n result = Selection.createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, this._selectionDirection);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { CoreEditingCommands } from '../../browser/controller/coreCommands.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection, ReplaceCommandThatSelectsText } from '../../common/commands/replaceCommand.js';\r\nimport { TrimTrailingWhitespaceCommand } from '../../common/commands/trimTrailingWhitespaceCommand.js';\r\nimport { TypeOperations } from '../../common/controller/cursorTypeOperations.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { CopyLinesCommand } from './copyLinesCommand.js';\r\nimport { MoveLinesCommand } from './moveLinesCommand.js';\r\nimport { SortLinesCommand } from './sortLinesCommand.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\n// copy lines\r\nclass AbstractCopyLinesAction extends EditorAction {\r\n constructor(down, opts) {\r\n super(opts);\r\n this.down = down;\r\n }\r\n run(_accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const selections = editor.getSelections().map((selection, index) => ({ selection, index, ignore: false }));\r\n selections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\r\n // Remove selections that would result in copying the same line\r\n let prev = selections[0];\r\n for (let i = 1; i < selections.length; i++) {\r\n const curr = selections[i];\r\n if (prev.selection.endLineNumber === curr.selection.startLineNumber) {\r\n // these two selections would copy the same line\r\n if (prev.index < curr.index) {\r\n // prev wins\r\n curr.ignore = true;\r\n }\r\n else {\r\n // curr wins\r\n prev.ignore = true;\r\n prev = curr;\r\n }\r\n }\r\n }\r\n const commands = [];\r\n for (const selection of selections) {\r\n if (selection.ignore) {\r\n continue;\r\n }\r\n commands.push(new CopyLinesCommand(selection.selection, this.down));\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nclass CopyLinesUpAction extends AbstractCopyLinesAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.copyLinesUpAction',\r\n label: nls.localize('lines.copyUp', \"Copy Line Up\"),\r\n alias: 'Copy Line Up',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 1024 /* Shift */ | 16 /* UpArrow */,\r\n linux: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 1024 /* Shift */ | 16 /* UpArrow */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '2_line',\r\n title: nls.localize({ key: 'miCopyLinesUp', comment: ['&& denotes a mnemonic'] }, \"&&Copy Line Up\"),\r\n order: 1\r\n }\r\n });\r\n }\r\n}\r\nclass CopyLinesDownAction extends AbstractCopyLinesAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.copyLinesDownAction',\r\n label: nls.localize('lines.copyDown', \"Copy Line Down\"),\r\n alias: 'Copy Line Down',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 1024 /* Shift */ | 18 /* DownArrow */,\r\n linux: { primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 1024 /* Shift */ | 18 /* DownArrow */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '2_line',\r\n title: nls.localize({ key: 'miCopyLinesDown', comment: ['&& denotes a mnemonic'] }, \"Co&&py Line Down\"),\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\nexport class DuplicateSelectionAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.duplicateSelection',\r\n label: nls.localize('duplicateSelection', \"Duplicate Selection\"),\r\n alias: 'Duplicate Selection',\r\n precondition: EditorContextKeys.writable,\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '2_line',\r\n title: nls.localize({ key: 'miDuplicateSelection', comment: ['&& denotes a mnemonic'] }, \"&&Duplicate Selection\"),\r\n order: 5\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const commands = [];\r\n const selections = editor.getSelections();\r\n const model = editor.getModel();\r\n for (const selection of selections) {\r\n if (selection.isEmpty()) {\r\n commands.push(new CopyLinesCommand(selection, true));\r\n }\r\n else {\r\n const insertSelection = new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn);\r\n commands.push(new ReplaceCommandThatSelectsText(insertSelection, model.getValueInRange(selection)));\r\n }\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\n// move lines\r\nclass AbstractMoveLinesAction extends EditorAction {\r\n constructor(down, opts) {\r\n super(opts);\r\n this.down = down;\r\n }\r\n run(_accessor, editor) {\r\n let commands = [];\r\n let selections = editor.getSelections() || [];\r\n const autoIndent = editor.getOption(8 /* autoIndent */);\r\n for (const selection of selections) {\r\n commands.push(new MoveLinesCommand(selection, this.down, autoIndent));\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nclass MoveLinesUpAction extends AbstractMoveLinesAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.moveLinesUpAction',\r\n label: nls.localize('lines.moveUp', \"Move Line Up\"),\r\n alias: 'Move Line Up',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 16 /* UpArrow */,\r\n linux: { primary: 512 /* Alt */ | 16 /* UpArrow */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '2_line',\r\n title: nls.localize({ key: 'miMoveLinesUp', comment: ['&& denotes a mnemonic'] }, \"Mo&&ve Line Up\"),\r\n order: 3\r\n }\r\n });\r\n }\r\n}\r\nclass MoveLinesDownAction extends AbstractMoveLinesAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.moveLinesDownAction',\r\n label: nls.localize('lines.moveDown', \"Move Line Down\"),\r\n alias: 'Move Line Down',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 512 /* Alt */ | 18 /* DownArrow */,\r\n linux: { primary: 512 /* Alt */ | 18 /* DownArrow */ },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '2_line',\r\n title: nls.localize({ key: 'miMoveLinesDown', comment: ['&& denotes a mnemonic'] }, \"Move &&Line Down\"),\r\n order: 4\r\n }\r\n });\r\n }\r\n}\r\nexport class AbstractSortLinesAction extends EditorAction {\r\n constructor(descending, opts) {\r\n super(opts);\r\n this.descending = descending;\r\n }\r\n run(_accessor, editor) {\r\n const selections = editor.getSelections() || [];\r\n for (const selection of selections) {\r\n if (!SortLinesCommand.canRun(editor.getModel(), selection, this.descending)) {\r\n return;\r\n }\r\n }\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n commands[i] = new SortLinesCommand(selections[i], this.descending);\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class SortLinesAscendingAction extends AbstractSortLinesAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.sortLinesAscending',\r\n label: nls.localize('lines.sortAscending', \"Sort Lines Ascending\"),\r\n alias: 'Sort Lines Ascending',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class SortLinesDescendingAction extends AbstractSortLinesAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.sortLinesDescending',\r\n label: nls.localize('lines.sortDescending', \"Sort Lines Descending\"),\r\n alias: 'Sort Lines Descending',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class TrimTrailingWhitespaceAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: TrimTrailingWhitespaceAction.ID,\r\n label: nls.localize('lines.trimTrailingWhitespace', \"Trim Trailing Whitespace\"),\r\n alias: 'Trim Trailing Whitespace',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 54 /* KEY_X */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor, args) {\r\n let cursors = [];\r\n if (args.reason === 'auto-save') {\r\n // See https://github.com/editorconfig/editorconfig-vscode/issues/47\r\n // It is very convenient for the editor config extension to invoke this action.\r\n // So, if we get a reason:'auto-save' passed in, let's preserve cursor positions.\r\n cursors = (editor.getSelections() || []).map(s => new Position(s.positionLineNumber, s.positionColumn));\r\n }\r\n let selection = editor.getSelection();\r\n if (selection === null) {\r\n return;\r\n }\r\n let command = new TrimTrailingWhitespaceCommand(selection, cursors);\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, [command]);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nTrimTrailingWhitespaceAction.ID = 'editor.action.trimTrailingWhitespace';\r\nexport class DeleteLinesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.deleteLines',\r\n label: nls.localize('lines.delete', \"Delete Line\"),\r\n alias: 'Delete Line',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 41 /* KEY_K */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let ops = this._getLinesToRemove(editor);\r\n let model = editor.getModel();\r\n if (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\r\n // Model is empty\r\n return;\r\n }\r\n let linesDeleted = 0;\r\n let edits = [];\r\n let cursorState = [];\r\n for (let i = 0, len = ops.length; i < len; i++) {\r\n const op = ops[i];\r\n let startLineNumber = op.startLineNumber;\r\n let endLineNumber = op.endLineNumber;\r\n let startColumn = 1;\r\n let endColumn = model.getLineMaxColumn(endLineNumber);\r\n if (endLineNumber < model.getLineCount()) {\r\n endLineNumber += 1;\r\n endColumn = 1;\r\n }\r\n else if (startLineNumber > 1) {\r\n startLineNumber -= 1;\r\n startColumn = model.getLineMaxColumn(startLineNumber);\r\n }\r\n edits.push(EditOperation.replace(new Selection(startLineNumber, startColumn, endLineNumber, endColumn), ''));\r\n cursorState.push(new Selection(startLineNumber - linesDeleted, op.positionColumn, startLineNumber - linesDeleted, op.positionColumn));\r\n linesDeleted += (op.endLineNumber - op.startLineNumber + 1);\r\n }\r\n editor.pushUndoStop();\r\n editor.executeEdits(this.id, edits, cursorState);\r\n editor.pushUndoStop();\r\n }\r\n _getLinesToRemove(editor) {\r\n // Construct delete operations\r\n let operations = editor.getSelections().map((s) => {\r\n let endLineNumber = s.endLineNumber;\r\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\r\n endLineNumber -= 1;\r\n }\r\n return {\r\n startLineNumber: s.startLineNumber,\r\n selectionStartColumn: s.selectionStartColumn,\r\n endLineNumber: endLineNumber,\r\n positionColumn: s.positionColumn\r\n };\r\n });\r\n // Sort delete operations\r\n operations.sort((a, b) => {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n });\r\n // Merge delete operations which are adjacent or overlapping\r\n let mergedOperations = [];\r\n let previousOperation = operations[0];\r\n for (let i = 1; i < operations.length; i++) {\r\n if (previousOperation.endLineNumber + 1 >= operations[i].startLineNumber) {\r\n // Merge current operations into the previous one\r\n previousOperation.endLineNumber = operations[i].endLineNumber;\r\n }\r\n else {\r\n // Push previous operation\r\n mergedOperations.push(previousOperation);\r\n previousOperation = operations[i];\r\n }\r\n }\r\n // Push the last operation\r\n mergedOperations.push(previousOperation);\r\n return mergedOperations;\r\n }\r\n}\r\nexport class IndentLinesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.indentLines',\r\n label: nls.localize('lines.indent', \"Indent Line\"),\r\n alias: 'Indent Line',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 89 /* US_CLOSE_SQUARE_BRACKET */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n const viewModel = editor._getViewModel();\r\n if (!viewModel) {\r\n return;\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, TypeOperations.indent(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\r\n editor.pushUndoStop();\r\n }\r\n}\r\nclass OutdentLinesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.outdentLines',\r\n label: nls.localize('lines.outdent', \"Outdent Line\"),\r\n alias: 'Outdent Line',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 87 /* US_OPEN_SQUARE_BRACKET */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n CoreEditingCommands.Outdent.runEditorCommand(_accessor, editor, null);\r\n }\r\n}\r\nexport class InsertLineBeforeAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.insertLineBefore',\r\n label: nls.localize('lines.insertBefore', \"Insert Line Above\"),\r\n alias: 'Insert Line Above',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 3 /* Enter */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n const viewModel = editor._getViewModel();\r\n if (!viewModel) {\r\n return;\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, TypeOperations.lineInsertBefore(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\r\n }\r\n}\r\nexport class InsertLineAfterAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.insertLineAfter',\r\n label: nls.localize('lines.insertAfter', \"Insert Line Below\"),\r\n alias: 'Insert Line Below',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 3 /* Enter */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n const viewModel = editor._getViewModel();\r\n if (!viewModel) {\r\n return;\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, TypeOperations.lineInsertAfter(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\r\n }\r\n}\r\nexport class AbstractDeleteAllToBoundaryAction extends EditorAction {\r\n run(_accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const primaryCursor = editor.getSelection();\r\n let rangesToDelete = this._getRangesToDelete(editor);\r\n // merge overlapping selections\r\n let effectiveRanges = [];\r\n for (let i = 0, count = rangesToDelete.length - 1; i < count; i++) {\r\n let range = rangesToDelete[i];\r\n let nextRange = rangesToDelete[i + 1];\r\n if (Range.intersectRanges(range, nextRange) === null) {\r\n effectiveRanges.push(range);\r\n }\r\n else {\r\n rangesToDelete[i + 1] = Range.plusRange(range, nextRange);\r\n }\r\n }\r\n effectiveRanges.push(rangesToDelete[rangesToDelete.length - 1]);\r\n let endCursorState = this._getEndCursorState(primaryCursor, effectiveRanges);\r\n let edits = effectiveRanges.map(range => {\r\n return EditOperation.replace(range, '');\r\n });\r\n editor.pushUndoStop();\r\n editor.executeEdits(this.id, edits, endCursorState);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {\r\n constructor() {\r\n super({\r\n id: 'deleteAllLeft',\r\n label: nls.localize('lines.deleteAllLeft', \"Delete All Left\"),\r\n alias: 'Delete All Left',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 2048 /* CtrlCmd */ | 1 /* Backspace */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _getEndCursorState(primaryCursor, rangesToDelete) {\r\n let endPrimaryCursor = null;\r\n let endCursorState = [];\r\n let deletedLines = 0;\r\n rangesToDelete.forEach(range => {\r\n let endCursor;\r\n if (range.endColumn === 1 && deletedLines > 0) {\r\n let newStartLine = range.startLineNumber - deletedLines;\r\n endCursor = new Selection(newStartLine, range.startColumn, newStartLine, range.startColumn);\r\n }\r\n else {\r\n endCursor = new Selection(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\r\n }\r\n deletedLines += range.endLineNumber - range.startLineNumber;\r\n if (range.intersectRanges(primaryCursor)) {\r\n endPrimaryCursor = endCursor;\r\n }\r\n else {\r\n endCursorState.push(endCursor);\r\n }\r\n });\r\n if (endPrimaryCursor) {\r\n endCursorState.unshift(endPrimaryCursor);\r\n }\r\n return endCursorState;\r\n }\r\n _getRangesToDelete(editor) {\r\n let selections = editor.getSelections();\r\n if (selections === null) {\r\n return [];\r\n }\r\n let rangesToDelete = selections;\r\n let model = editor.getModel();\r\n if (model === null) {\r\n return [];\r\n }\r\n rangesToDelete.sort(Range.compareRangesUsingStarts);\r\n rangesToDelete = rangesToDelete.map(selection => {\r\n if (selection.isEmpty()) {\r\n if (selection.startColumn === 1) {\r\n let deleteFromLine = Math.max(1, selection.startLineNumber - 1);\r\n let deleteFromColumn = selection.startLineNumber === 1 ? 1 : model.getLineContent(deleteFromLine).length + 1;\r\n return new Range(deleteFromLine, deleteFromColumn, selection.startLineNumber, 1);\r\n }\r\n else {\r\n return new Range(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn);\r\n }\r\n }\r\n else {\r\n return new Range(selection.startLineNumber, 1, selection.endLineNumber, selection.endColumn);\r\n }\r\n });\r\n return rangesToDelete;\r\n }\r\n}\r\nexport class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {\r\n constructor() {\r\n super({\r\n id: 'deleteAllRight',\r\n label: nls.localize('lines.deleteAllRight', \"Delete All Right\"),\r\n alias: 'Delete All Right',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 41 /* KEY_K */, secondary: [2048 /* CtrlCmd */ | 20 /* Delete */] },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _getEndCursorState(primaryCursor, rangesToDelete) {\r\n let endPrimaryCursor = null;\r\n let endCursorState = [];\r\n for (let i = 0, len = rangesToDelete.length, offset = 0; i < len; i++) {\r\n let range = rangesToDelete[i];\r\n let endCursor = new Selection(range.startLineNumber - offset, range.startColumn, range.startLineNumber - offset, range.startColumn);\r\n if (range.intersectRanges(primaryCursor)) {\r\n endPrimaryCursor = endCursor;\r\n }\r\n else {\r\n endCursorState.push(endCursor);\r\n }\r\n }\r\n if (endPrimaryCursor) {\r\n endCursorState.unshift(endPrimaryCursor);\r\n }\r\n return endCursorState;\r\n }\r\n _getRangesToDelete(editor) {\r\n let model = editor.getModel();\r\n if (model === null) {\r\n return [];\r\n }\r\n let selections = editor.getSelections();\r\n if (selections === null) {\r\n return [];\r\n }\r\n let rangesToDelete = selections.map((sel) => {\r\n if (sel.isEmpty()) {\r\n const maxColumn = model.getLineMaxColumn(sel.startLineNumber);\r\n if (sel.startColumn === maxColumn) {\r\n return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1);\r\n }\r\n else {\r\n return new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn);\r\n }\r\n }\r\n return sel;\r\n });\r\n rangesToDelete.sort(Range.compareRangesUsingStarts);\r\n return rangesToDelete;\r\n }\r\n}\r\nexport class JoinLinesAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.joinLines',\r\n label: nls.localize('lines.joinLines', \"Join Lines\"),\r\n alias: 'Join Lines',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 40 /* KEY_J */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(_accessor, editor) {\r\n let selections = editor.getSelections();\r\n if (selections === null) {\r\n return;\r\n }\r\n let primaryCursor = editor.getSelection();\r\n if (primaryCursor === null) {\r\n return;\r\n }\r\n selections.sort(Range.compareRangesUsingStarts);\r\n let reducedSelections = [];\r\n let lastSelection = selections.reduce((previousValue, currentValue) => {\r\n if (previousValue.isEmpty()) {\r\n if (previousValue.endLineNumber === currentValue.startLineNumber) {\r\n if (primaryCursor.equalsSelection(previousValue)) {\r\n primaryCursor = currentValue;\r\n }\r\n return currentValue;\r\n }\r\n if (currentValue.startLineNumber > previousValue.endLineNumber + 1) {\r\n reducedSelections.push(previousValue);\r\n return currentValue;\r\n }\r\n else {\r\n return new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\r\n }\r\n }\r\n else {\r\n if (currentValue.startLineNumber > previousValue.endLineNumber) {\r\n reducedSelections.push(previousValue);\r\n return currentValue;\r\n }\r\n else {\r\n return new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\r\n }\r\n }\r\n });\r\n reducedSelections.push(lastSelection);\r\n let model = editor.getModel();\r\n if (model === null) {\r\n return;\r\n }\r\n let edits = [];\r\n let endCursorState = [];\r\n let endPrimaryCursor = primaryCursor;\r\n let lineOffset = 0;\r\n for (let i = 0, len = reducedSelections.length; i < len; i++) {\r\n let selection = reducedSelections[i];\r\n let startLineNumber = selection.startLineNumber;\r\n let startColumn = 1;\r\n let columnDeltaOffset = 0;\r\n let endLineNumber, endColumn;\r\n let selectionEndPositionOffset = model.getLineContent(selection.endLineNumber).length - selection.endColumn;\r\n if (selection.isEmpty() || selection.startLineNumber === selection.endLineNumber) {\r\n let position = selection.getStartPosition();\r\n if (position.lineNumber < model.getLineCount()) {\r\n endLineNumber = startLineNumber + 1;\r\n endColumn = model.getLineMaxColumn(endLineNumber);\r\n }\r\n else {\r\n endLineNumber = position.lineNumber;\r\n endColumn = model.getLineMaxColumn(position.lineNumber);\r\n }\r\n }\r\n else {\r\n endLineNumber = selection.endLineNumber;\r\n endColumn = model.getLineMaxColumn(endLineNumber);\r\n }\r\n let trimmedLinesContent = model.getLineContent(startLineNumber);\r\n for (let i = startLineNumber + 1; i <= endLineNumber; i++) {\r\n let lineText = model.getLineContent(i);\r\n let firstNonWhitespaceIdx = model.getLineFirstNonWhitespaceColumn(i);\r\n if (firstNonWhitespaceIdx >= 1) {\r\n let insertSpace = true;\r\n if (trimmedLinesContent === '') {\r\n insertSpace = false;\r\n }\r\n if (insertSpace && (trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === ' ' ||\r\n trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === '\\t')) {\r\n insertSpace = false;\r\n trimmedLinesContent = trimmedLinesContent.replace(/[\\s\\uFEFF\\xA0]+$/g, ' ');\r\n }\r\n let lineTextWithoutIndent = lineText.substr(firstNonWhitespaceIdx - 1);\r\n trimmedLinesContent += (insertSpace ? ' ' : '') + lineTextWithoutIndent;\r\n if (insertSpace) {\r\n columnDeltaOffset = lineTextWithoutIndent.length + 1;\r\n }\r\n else {\r\n columnDeltaOffset = lineTextWithoutIndent.length;\r\n }\r\n }\r\n else {\r\n columnDeltaOffset = 0;\r\n }\r\n }\r\n let deleteSelection = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n if (!deleteSelection.isEmpty()) {\r\n let resultSelection;\r\n if (selection.isEmpty()) {\r\n edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\r\n resultSelection = new Selection(deleteSelection.startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1, startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1);\r\n }\r\n else {\r\n if (selection.startLineNumber === selection.endLineNumber) {\r\n edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\r\n resultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn, selection.endLineNumber - lineOffset, selection.endColumn);\r\n }\r\n else {\r\n edits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\r\n resultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn, selection.startLineNumber - lineOffset, trimmedLinesContent.length - selectionEndPositionOffset);\r\n }\r\n }\r\n if (Range.intersectRanges(deleteSelection, primaryCursor) !== null) {\r\n endPrimaryCursor = resultSelection;\r\n }\r\n else {\r\n endCursorState.push(resultSelection);\r\n }\r\n }\r\n lineOffset += deleteSelection.endLineNumber - deleteSelection.startLineNumber;\r\n }\r\n endCursorState.unshift(endPrimaryCursor);\r\n editor.pushUndoStop();\r\n editor.executeEdits(this.id, edits, endCursorState);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class TransposeAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.transpose',\r\n label: nls.localize('editor.transpose', \"Transpose characters around the cursor\"),\r\n alias: 'Transpose characters around the cursor',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n run(_accessor, editor) {\r\n let selections = editor.getSelections();\r\n if (selections === null) {\r\n return;\r\n }\r\n let model = editor.getModel();\r\n if (model === null) {\r\n return;\r\n }\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let selection = selections[i];\r\n if (!selection.isEmpty()) {\r\n continue;\r\n }\r\n let cursor = selection.getStartPosition();\r\n let maxColumn = model.getLineMaxColumn(cursor.lineNumber);\r\n if (cursor.column >= maxColumn) {\r\n if (cursor.lineNumber === model.getLineCount()) {\r\n continue;\r\n }\r\n // The cursor is at the end of current line and current line is not empty\r\n // then we transpose the character before the cursor and the line break if there is any following line.\r\n let deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1);\r\n let chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\r\n commands.push(new ReplaceCommand(new Selection(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1), chars));\r\n }\r\n else {\r\n let deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber, cursor.column + 1);\r\n let chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\r\n commands.push(new ReplaceCommandThatPreservesSelection(deleteSelection, chars, new Selection(cursor.lineNumber, cursor.column + 1, cursor.lineNumber, cursor.column + 1)));\r\n }\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class AbstractCaseAction extends EditorAction {\r\n run(_accessor, editor) {\r\n let selections = editor.getSelections();\r\n if (selections === null) {\r\n return;\r\n }\r\n let model = editor.getModel();\r\n if (model === null) {\r\n return;\r\n }\r\n let wordSeparators = editor.getOption(105 /* wordSeparators */);\r\n let commands = [];\r\n for (let i = 0, len = selections.length; i < len; i++) {\r\n let selection = selections[i];\r\n if (selection.isEmpty()) {\r\n let cursor = selection.getStartPosition();\r\n const word = editor.getConfiguredWordAtPosition(cursor);\r\n if (!word) {\r\n continue;\r\n }\r\n let wordRange = new Range(cursor.lineNumber, word.startColumn, cursor.lineNumber, word.endColumn);\r\n let text = model.getValueInRange(wordRange);\r\n commands.push(new ReplaceCommandThatPreservesSelection(wordRange, this._modifyText(text, wordSeparators), new Selection(cursor.lineNumber, cursor.column, cursor.lineNumber, cursor.column)));\r\n }\r\n else {\r\n let text = model.getValueInRange(selection);\r\n commands.push(new ReplaceCommandThatPreservesSelection(selection, this._modifyText(text, wordSeparators), selection));\r\n }\r\n }\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class UpperCaseAction extends AbstractCaseAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.transformToUppercase',\r\n label: nls.localize('editor.transformToUppercase', \"Transform to Uppercase\"),\r\n alias: 'Transform to Uppercase',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n _modifyText(text, wordSeparators) {\r\n return text.toLocaleUpperCase();\r\n }\r\n}\r\nexport class LowerCaseAction extends AbstractCaseAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.transformToLowercase',\r\n label: nls.localize('editor.transformToLowercase', \"Transform to Lowercase\"),\r\n alias: 'Transform to Lowercase',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n _modifyText(text, wordSeparators) {\r\n return text.toLocaleLowerCase();\r\n }\r\n}\r\nexport class TitleCaseAction extends AbstractCaseAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.transformToTitlecase',\r\n label: nls.localize('editor.transformToTitlecase', \"Transform to Title Case\"),\r\n alias: 'Transform to Title Case',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n _modifyText(text, wordSeparators) {\r\n const separators = '\\r\\n\\t ' + wordSeparators;\r\n const excludedChars = separators.split('');\r\n let title = '';\r\n let startUpperCase = true;\r\n for (let i = 0; i < text.length; i++) {\r\n let currentChar = text[i];\r\n if (excludedChars.indexOf(currentChar) >= 0) {\r\n startUpperCase = true;\r\n title += currentChar;\r\n }\r\n else if (startUpperCase) {\r\n startUpperCase = false;\r\n title += currentChar.toLocaleUpperCase();\r\n }\r\n else {\r\n title += currentChar.toLocaleLowerCase();\r\n }\r\n }\r\n return title;\r\n }\r\n}\r\nregisterEditorAction(CopyLinesUpAction);\r\nregisterEditorAction(CopyLinesDownAction);\r\nregisterEditorAction(DuplicateSelectionAction);\r\nregisterEditorAction(MoveLinesUpAction);\r\nregisterEditorAction(MoveLinesDownAction);\r\nregisterEditorAction(SortLinesAscendingAction);\r\nregisterEditorAction(SortLinesDescendingAction);\r\nregisterEditorAction(TrimTrailingWhitespaceAction);\r\nregisterEditorAction(DeleteLinesAction);\r\nregisterEditorAction(IndentLinesAction);\r\nregisterEditorAction(OutdentLinesAction);\r\nregisterEditorAction(InsertLineBeforeAction);\r\nregisterEditorAction(InsertLineAfterAction);\r\nregisterEditorAction(DeleteAllLeftAction);\r\nregisterEditorAction(DeleteAllRightAction);\r\nregisterEditorAction(JoinLinesAction);\r\nregisterEditorAction(TransposeAction);\r\nregisterEditorAction(UpperCaseAction);\r\nregisterEditorAction(LowerCaseAction);\r\nregisterEditorAction(TitleCaseAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { ShiftCommand } from '../../common/commands/shiftCommand.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { IndentAction } from '../../common/modes/languageConfiguration.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport * as indentUtils from '../indentation/indentUtils.js';\r\nexport class MoveLinesCommand {\r\n constructor(selection, isMovingDown, autoIndent) {\r\n this._selection = selection;\r\n this._isMovingDown = isMovingDown;\r\n this._autoIndent = autoIndent;\r\n this._selectionId = null;\r\n this._moveEndLineSelectionShrink = false;\r\n }\r\n getEditOperations(model, builder) {\r\n let modelLineCount = model.getLineCount();\r\n if (this._isMovingDown && this._selection.endLineNumber === modelLineCount) {\r\n this._selectionId = builder.trackSelection(this._selection);\r\n return;\r\n }\r\n if (!this._isMovingDown && this._selection.startLineNumber === 1) {\r\n this._selectionId = builder.trackSelection(this._selection);\r\n return;\r\n }\r\n this._moveEndPositionDown = false;\r\n let s = this._selection;\r\n if (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\r\n this._moveEndPositionDown = true;\r\n s = s.setEndPosition(s.endLineNumber - 1, model.getLineMaxColumn(s.endLineNumber - 1));\r\n }\r\n const { tabSize, indentSize, insertSpaces } = model.getOptions();\r\n let indentConverter = this.buildIndentConverter(tabSize, indentSize, insertSpaces);\r\n let virtualModel = {\r\n getLineTokens: (lineNumber) => {\r\n return model.getLineTokens(lineNumber);\r\n },\r\n getLanguageIdentifier: () => {\r\n return model.getLanguageIdentifier();\r\n },\r\n getLanguageIdAtPosition: (lineNumber, column) => {\r\n return model.getLanguageIdAtPosition(lineNumber, column);\r\n },\r\n getLineContent: null,\r\n };\r\n if (s.startLineNumber === s.endLineNumber && model.getLineMaxColumn(s.startLineNumber) === 1) {\r\n // Current line is empty\r\n let lineNumber = s.startLineNumber;\r\n let otherLineNumber = (this._isMovingDown ? lineNumber + 1 : lineNumber - 1);\r\n if (model.getLineMaxColumn(otherLineNumber) === 1) {\r\n // Other line number is empty too, so no editing is needed\r\n // Add a no-op to force running by the model\r\n builder.addEditOperation(new Range(1, 1, 1, 1), null);\r\n }\r\n else {\r\n // Type content from other line number on line number\r\n builder.addEditOperation(new Range(lineNumber, 1, lineNumber, 1), model.getLineContent(otherLineNumber));\r\n // Remove content from other line number\r\n builder.addEditOperation(new Range(otherLineNumber, 1, otherLineNumber, model.getLineMaxColumn(otherLineNumber)), null);\r\n }\r\n // Track selection at the other line number\r\n s = new Selection(otherLineNumber, 1, otherLineNumber, 1);\r\n }\r\n else {\r\n let movingLineNumber;\r\n let movingLineText;\r\n if (this._isMovingDown) {\r\n movingLineNumber = s.endLineNumber + 1;\r\n movingLineText = model.getLineContent(movingLineNumber);\r\n // Delete line that needs to be moved\r\n builder.addEditOperation(new Range(movingLineNumber - 1, model.getLineMaxColumn(movingLineNumber - 1), movingLineNumber, model.getLineMaxColumn(movingLineNumber)), null);\r\n let insertingText = movingLineText;\r\n if (this.shouldAutoIndent(model, s)) {\r\n let movingLineMatchResult = this.matchEnterRule(model, indentConverter, tabSize, movingLineNumber, s.startLineNumber - 1);\r\n // if s.startLineNumber - 1 matches onEnter rule, we still honor that.\r\n if (movingLineMatchResult !== null) {\r\n let oldIndentation = strings.getLeadingWhitespace(model.getLineContent(movingLineNumber));\r\n let newSpaceCnt = movingLineMatchResult + indentUtils.getSpaceCnt(oldIndentation, tabSize);\r\n let newIndentation = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\r\n insertingText = newIndentation + this.trimLeft(movingLineText);\r\n }\r\n else {\r\n // no enter rule matches, let's check indentatin rules then.\r\n virtualModel.getLineContent = (lineNumber) => {\r\n if (lineNumber === s.startLineNumber) {\r\n return model.getLineContent(movingLineNumber);\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n };\r\n let indentOfMovingLine = LanguageConfigurationRegistry.getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(movingLineNumber, 1), s.startLineNumber, indentConverter);\r\n if (indentOfMovingLine !== null) {\r\n let oldIndentation = strings.getLeadingWhitespace(model.getLineContent(movingLineNumber));\r\n let newSpaceCnt = indentUtils.getSpaceCnt(indentOfMovingLine, tabSize);\r\n let oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\r\n if (newSpaceCnt !== oldSpaceCnt) {\r\n let newIndentation = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\r\n insertingText = newIndentation + this.trimLeft(movingLineText);\r\n }\r\n }\r\n }\r\n // add edit operations for moving line first to make sure it's executed after we make indentation change\r\n // to s.startLineNumber\r\n builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), insertingText + '\\n');\r\n let ret = this.matchEnterRule(model, indentConverter, tabSize, s.startLineNumber, s.startLineNumber, insertingText);\r\n // check if the line being moved before matches onEnter rules, if so let's adjust the indentation by onEnter rules.\r\n if (ret !== null) {\r\n if (ret !== 0) {\r\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, ret);\r\n }\r\n }\r\n else {\r\n // it doesn't match onEnter rules, let's check indentation rules then.\r\n virtualModel.getLineContent = (lineNumber) => {\r\n if (lineNumber === s.startLineNumber) {\r\n return insertingText;\r\n }\r\n else if (lineNumber >= s.startLineNumber + 1 && lineNumber <= s.endLineNumber + 1) {\r\n return model.getLineContent(lineNumber - 1);\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n };\r\n let newIndentatOfMovingBlock = LanguageConfigurationRegistry.getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(movingLineNumber, 1), s.startLineNumber + 1, indentConverter);\r\n if (newIndentatOfMovingBlock !== null) {\r\n const oldIndentation = strings.getLeadingWhitespace(model.getLineContent(s.startLineNumber));\r\n const newSpaceCnt = indentUtils.getSpaceCnt(newIndentatOfMovingBlock, tabSize);\r\n const oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\r\n if (newSpaceCnt !== oldSpaceCnt) {\r\n const spaceCntOffset = newSpaceCnt - oldSpaceCnt;\r\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, spaceCntOffset);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // Insert line that needs to be moved before\r\n builder.addEditOperation(new Range(s.startLineNumber, 1, s.startLineNumber, 1), insertingText + '\\n');\r\n }\r\n }\r\n else {\r\n movingLineNumber = s.startLineNumber - 1;\r\n movingLineText = model.getLineContent(movingLineNumber);\r\n // Delete line that needs to be moved\r\n builder.addEditOperation(new Range(movingLineNumber, 1, movingLineNumber + 1, 1), null);\r\n // Insert line that needs to be moved after\r\n builder.addEditOperation(new Range(s.endLineNumber, model.getLineMaxColumn(s.endLineNumber), s.endLineNumber, model.getLineMaxColumn(s.endLineNumber)), '\\n' + movingLineText);\r\n if (this.shouldAutoIndent(model, s)) {\r\n virtualModel.getLineContent = (lineNumber) => {\r\n if (lineNumber === movingLineNumber) {\r\n return model.getLineContent(s.startLineNumber);\r\n }\r\n else {\r\n return model.getLineContent(lineNumber);\r\n }\r\n };\r\n let ret = this.matchEnterRule(model, indentConverter, tabSize, s.startLineNumber, s.startLineNumber - 2);\r\n // check if s.startLineNumber - 2 matches onEnter rules, if so adjust the moving block by onEnter rules.\r\n if (ret !== null) {\r\n if (ret !== 0) {\r\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, ret);\r\n }\r\n }\r\n else {\r\n // it doesn't match any onEnter rule, let's check indentation rules then.\r\n let indentOfFirstLine = LanguageConfigurationRegistry.getGoodIndentForLine(this._autoIndent, virtualModel, model.getLanguageIdAtPosition(s.startLineNumber, 1), movingLineNumber, indentConverter);\r\n if (indentOfFirstLine !== null) {\r\n // adjust the indentation of the moving block\r\n let oldIndent = strings.getLeadingWhitespace(model.getLineContent(s.startLineNumber));\r\n let newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\r\n let oldSpaceCnt = indentUtils.getSpaceCnt(oldIndent, tabSize);\r\n if (newSpaceCnt !== oldSpaceCnt) {\r\n let spaceCntOffset = newSpaceCnt - oldSpaceCnt;\r\n this.getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, spaceCntOffset);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n this._selectionId = builder.trackSelection(s);\r\n }\r\n buildIndentConverter(tabSize, indentSize, insertSpaces) {\r\n return {\r\n shiftIndent: (indentation) => {\r\n return ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\r\n },\r\n unshiftIndent: (indentation) => {\r\n return ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\r\n }\r\n };\r\n }\r\n matchEnterRule(model, indentConverter, tabSize, line, oneLineAbove, oneLineAboveText) {\r\n let validPrecedingLine = oneLineAbove;\r\n while (validPrecedingLine >= 1) {\r\n // ship empty lines as empty lines just inherit indentation\r\n let lineContent;\r\n if (validPrecedingLine === oneLineAbove && oneLineAboveText !== undefined) {\r\n lineContent = oneLineAboveText;\r\n }\r\n else {\r\n lineContent = model.getLineContent(validPrecedingLine);\r\n }\r\n let nonWhitespaceIdx = strings.lastNonWhitespaceIndex(lineContent);\r\n if (nonWhitespaceIdx >= 0) {\r\n break;\r\n }\r\n validPrecedingLine--;\r\n }\r\n if (validPrecedingLine < 1 || line > model.getLineCount()) {\r\n return null;\r\n }\r\n let maxColumn = model.getLineMaxColumn(validPrecedingLine);\r\n let enter = LanguageConfigurationRegistry.getEnterAction(this._autoIndent, model, new Range(validPrecedingLine, maxColumn, validPrecedingLine, maxColumn));\r\n if (enter) {\r\n let enterPrefix = enter.indentation;\r\n if (enter.indentAction === IndentAction.None) {\r\n enterPrefix = enter.indentation + enter.appendText;\r\n }\r\n else if (enter.indentAction === IndentAction.Indent) {\r\n enterPrefix = enter.indentation + enter.appendText;\r\n }\r\n else if (enter.indentAction === IndentAction.IndentOutdent) {\r\n enterPrefix = enter.indentation;\r\n }\r\n else if (enter.indentAction === IndentAction.Outdent) {\r\n enterPrefix = indentConverter.unshiftIndent(enter.indentation) + enter.appendText;\r\n }\r\n let movingLineText = model.getLineContent(line);\r\n if (this.trimLeft(movingLineText).indexOf(this.trimLeft(enterPrefix)) >= 0) {\r\n let oldIndentation = strings.getLeadingWhitespace(model.getLineContent(line));\r\n let newIndentation = strings.getLeadingWhitespace(enterPrefix);\r\n let indentMetadataOfMovelingLine = LanguageConfigurationRegistry.getIndentMetadata(model, line);\r\n if (indentMetadataOfMovelingLine !== null && indentMetadataOfMovelingLine & 2 /* DECREASE_MASK */) {\r\n newIndentation = indentConverter.unshiftIndent(newIndentation);\r\n }\r\n let newSpaceCnt = indentUtils.getSpaceCnt(newIndentation, tabSize);\r\n let oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\r\n return newSpaceCnt - oldSpaceCnt;\r\n }\r\n }\r\n return null;\r\n }\r\n trimLeft(str) {\r\n return str.replace(/^\\s+/, '');\r\n }\r\n shouldAutoIndent(model, selection) {\r\n if (this._autoIndent < 4 /* Full */) {\r\n return false;\r\n }\r\n // if it's not easy to tokenize, we stop auto indent.\r\n if (!model.isCheapToTokenize(selection.startLineNumber)) {\r\n return false;\r\n }\r\n let languageAtSelectionStart = model.getLanguageIdAtPosition(selection.startLineNumber, 1);\r\n let languageAtSelectionEnd = model.getLanguageIdAtPosition(selection.endLineNumber, 1);\r\n if (languageAtSelectionStart !== languageAtSelectionEnd) {\r\n return false;\r\n }\r\n if (LanguageConfigurationRegistry.getIndentRulesSupport(languageAtSelectionStart) === null) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n getIndentEditsOfMovingBlock(model, builder, s, tabSize, insertSpaces, offset) {\r\n for (let i = s.startLineNumber; i <= s.endLineNumber; i++) {\r\n let lineContent = model.getLineContent(i);\r\n let originalIndent = strings.getLeadingWhitespace(lineContent);\r\n let originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\r\n let newSpacesCnt = originalSpacesCnt + offset;\r\n let newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\r\n if (newIndent !== originalIndent) {\r\n builder.addEditOperation(new Range(i, 1, i, originalIndent.length + 1), newIndent);\r\n if (i === s.endLineNumber && s.endColumn <= originalIndent.length + 1 && newIndent === '') {\r\n // as users select part of the original indent white spaces\r\n // when we adjust the indentation of endLine, we should adjust the cursor position as well.\r\n this._moveEndLineSelectionShrink = true;\r\n }\r\n }\r\n }\r\n }\r\n computeCursorState(model, helper) {\r\n let result = helper.getTrackedSelection(this._selectionId);\r\n if (this._moveEndPositionDown) {\r\n result = result.setEndPosition(result.endLineNumber + 1, 1);\r\n }\r\n if (this._moveEndLineSelectionShrink && result.startLineNumber < result.endLineNumber) {\r\n result = result.setEndPosition(result.endLineNumber, 2);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nexport class SortLinesCommand {\r\n constructor(selection, descending) {\r\n this.selection = selection;\r\n this.descending = descending;\r\n this.selectionId = null;\r\n }\r\n static getCollator() {\r\n if (!SortLinesCommand._COLLATOR) {\r\n SortLinesCommand._COLLATOR = new Intl.Collator();\r\n }\r\n return SortLinesCommand._COLLATOR;\r\n }\r\n getEditOperations(model, builder) {\r\n let op = sortLines(model, this.selection, this.descending);\r\n if (op) {\r\n builder.addEditOperation(op.range, op.text);\r\n }\r\n this.selectionId = builder.trackSelection(this.selection);\r\n }\r\n computeCursorState(model, helper) {\r\n return helper.getTrackedSelection(this.selectionId);\r\n }\r\n static canRun(model, selection, descending) {\r\n if (model === null) {\r\n return false;\r\n }\r\n let data = getSortData(model, selection, descending);\r\n if (!data) {\r\n return false;\r\n }\r\n for (let i = 0, len = data.before.length; i < len; i++) {\r\n if (data.before[i] !== data.after[i]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nSortLinesCommand._COLLATOR = null;\r\nfunction getSortData(model, selection, descending) {\r\n let startLineNumber = selection.startLineNumber;\r\n let endLineNumber = selection.endLineNumber;\r\n if (selection.endColumn === 1) {\r\n endLineNumber--;\r\n }\r\n // Nothing to sort if user didn't select anything.\r\n if (startLineNumber >= endLineNumber) {\r\n return null;\r\n }\r\n let linesToSort = [];\r\n // Get the contents of the selection to be sorted.\r\n for (let lineNumber = startLineNumber; lineNumber <= endLineNumber; lineNumber++) {\r\n linesToSort.push(model.getLineContent(lineNumber));\r\n }\r\n let sorted = linesToSort.slice(0);\r\n sorted.sort(SortLinesCommand.getCollator().compare);\r\n // If descending, reverse the order.\r\n if (descending === true) {\r\n sorted = sorted.reverse();\r\n }\r\n return {\r\n startLineNumber: startLineNumber,\r\n endLineNumber: endLineNumber,\r\n before: linesToSort,\r\n after: sorted\r\n };\r\n}\r\n/**\r\n * Generate commands for sorting lines on a model.\r\n */\r\nfunction sortLines(model, selection, descending) {\r\n let data = getSortData(model, selection, descending);\r\n if (!data) {\r\n return null;\r\n }\r\n return EditOperation.replace(new Range(data.startLineNumber, 1, data.endLineNumber, model.getLineMaxColumn(data.endLineNumber)), data.after.join('\\n'));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { LinkProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { isDisposable, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { coalesce } from '../../../base/common/arrays.js';\r\nexport class Link {\r\n constructor(link, provider) {\r\n this._link = link;\r\n this._provider = provider;\r\n }\r\n toJSON() {\r\n return {\r\n range: this.range,\r\n url: this.url,\r\n tooltip: this.tooltip\r\n };\r\n }\r\n get range() {\r\n return this._link.range;\r\n }\r\n get url() {\r\n return this._link.url;\r\n }\r\n get tooltip() {\r\n return this._link.tooltip;\r\n }\r\n resolve(token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._link.url) {\r\n return this._link.url;\r\n }\r\n if (typeof this._provider.resolveLink === 'function') {\r\n return Promise.resolve(this._provider.resolveLink(this._link, token)).then(value => {\r\n this._link = value || this._link;\r\n if (this._link.url) {\r\n // recurse\r\n return this.resolve(token);\r\n }\r\n return Promise.reject(new Error('missing'));\r\n });\r\n }\r\n return Promise.reject(new Error('missing'));\r\n });\r\n }\r\n}\r\nexport class LinksList extends Disposable {\r\n constructor(tuples) {\r\n super();\r\n let links = [];\r\n for (const [list, provider] of tuples) {\r\n // merge all links\r\n const newLinks = list.links.map(link => new Link(link, provider));\r\n links = LinksList._union(links, newLinks);\r\n // register disposables\r\n if (isDisposable(list)) {\r\n this._register(list);\r\n }\r\n }\r\n this.links = links;\r\n }\r\n static _union(oldLinks, newLinks) {\r\n // reunite oldLinks with newLinks and remove duplicates\r\n let result = [];\r\n let oldIndex;\r\n let oldLen;\r\n let newIndex;\r\n let newLen;\r\n for (oldIndex = 0, newIndex = 0, oldLen = oldLinks.length, newLen = newLinks.length; oldIndex < oldLen && newIndex < newLen;) {\r\n const oldLink = oldLinks[oldIndex];\r\n const newLink = newLinks[newIndex];\r\n if (Range.areIntersectingOrTouching(oldLink.range, newLink.range)) {\r\n // Remove the oldLink\r\n oldIndex++;\r\n continue;\r\n }\r\n const comparisonResult = Range.compareRangesUsingStarts(oldLink.range, newLink.range);\r\n if (comparisonResult < 0) {\r\n // oldLink is before\r\n result.push(oldLink);\r\n oldIndex++;\r\n }\r\n else {\r\n // newLink is before\r\n result.push(newLink);\r\n newIndex++;\r\n }\r\n }\r\n for (; oldIndex < oldLen; oldIndex++) {\r\n result.push(oldLinks[oldIndex]);\r\n }\r\n for (; newIndex < newLen; newIndex++) {\r\n result.push(newLinks[newIndex]);\r\n }\r\n return result;\r\n }\r\n}\r\nexport function getLinks(model, token) {\r\n const lists = [];\r\n // ask all providers for links in parallel\r\n const promises = LinkProviderRegistry.ordered(model).reverse().map((provider, i) => {\r\n return Promise.resolve(provider.provideLinks(model, token)).then(result => {\r\n if (result) {\r\n lists[i] = [result, provider];\r\n }\r\n }, onUnexpectedExternalError);\r\n });\r\n return Promise.all(promises).then(() => {\r\n const result = new LinksList(coalesce(lists));\r\n if (!token.isCancellationRequested) {\r\n return result;\r\n }\r\n result.dispose();\r\n return new LinksList([]);\r\n });\r\n}\r\nCommandsRegistry.registerCommand('_executeLinkProvider', (accessor, ...args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const [uri] = args;\r\n if (!(uri instanceof URI)) {\r\n return [];\r\n }\r\n const model = accessor.get(IModelService).getModel(uri);\r\n if (!model) {\r\n return [];\r\n }\r\n const list = yield getLinks(model, CancellationToken.None);\r\n if (!list) {\r\n return [];\r\n }\r\n const result = list.links.slice(0);\r\n list.dispose();\r\n return result;\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './links.css';\r\nimport * as nls from '../../../nls.js';\r\nimport * as async from '../../../base/common/async.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { MarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { LinkProviderRegistry } from '../../common/modes.js';\r\nimport { ClickLinkGesture } from '../gotoSymbol/link/clickLinkGesture.js';\r\nimport { getLinks } from './getLinks.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { editorActiveLinkForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport * as resources from '../../../base/common/resources.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nfunction getHoverMessage(link, useMetaKey) {\r\n const executeCmd = link.url && /^command:/i.test(link.url.toString());\r\n const label = link.tooltip\r\n ? link.tooltip\r\n : executeCmd\r\n ? nls.localize('links.navigate.executeCmd', 'Execute command')\r\n : nls.localize('links.navigate.follow', 'Follow link');\r\n const kb = useMetaKey\r\n ? platform.isMacintosh\r\n ? nls.localize('links.navigate.kb.meta.mac', \"cmd + click\")\r\n : nls.localize('links.navigate.kb.meta', \"ctrl + click\")\r\n : platform.isMacintosh\r\n ? nls.localize('links.navigate.kb.alt.mac', \"option + click\")\r\n : nls.localize('links.navigate.kb.alt', \"alt + click\");\r\n if (link.url) {\r\n const hoverMessage = new MarkdownString('', true).appendMarkdown(`[${label}](${link.url.toString()}) (${kb})`);\r\n return hoverMessage;\r\n }\r\n else {\r\n return new MarkdownString().appendText(`${label} (${kb})`);\r\n }\r\n}\r\nconst decoration = {\r\n general: ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n collapseOnReplaceEdit: true,\r\n inlineClassName: 'detected-link'\r\n }),\r\n active: ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n collapseOnReplaceEdit: true,\r\n inlineClassName: 'detected-link-active'\r\n })\r\n};\r\nclass LinkOccurrence {\r\n constructor(link, decorationId) {\r\n this.link = link;\r\n this.decorationId = decorationId;\r\n }\r\n static decoration(link, useMetaKey) {\r\n return {\r\n range: link.range,\r\n options: LinkOccurrence._getOptions(link, useMetaKey, false)\r\n };\r\n }\r\n static _getOptions(link, useMetaKey, isActive) {\r\n const options = Object.assign({}, (isActive ? decoration.active : decoration.general));\r\n options.hoverMessage = getHoverMessage(link, useMetaKey);\r\n return options;\r\n }\r\n activate(changeAccessor, useMetaKey) {\r\n changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, true));\r\n }\r\n deactivate(changeAccessor, useMetaKey) {\r\n changeAccessor.changeDecorationOptions(this.decorationId, LinkOccurrence._getOptions(this.link, useMetaKey, false));\r\n }\r\n}\r\nlet LinkDetector = class LinkDetector {\r\n constructor(editor, openerService, notificationService) {\r\n this.listenersToRemove = new DisposableStore();\r\n this.editor = editor;\r\n this.openerService = openerService;\r\n this.notificationService = notificationService;\r\n let clickLinkGesture = new ClickLinkGesture(editor);\r\n this.listenersToRemove.add(clickLinkGesture);\r\n this.listenersToRemove.add(clickLinkGesture.onMouseMoveOrRelevantKeyDown(([mouseEvent, keyboardEvent]) => {\r\n this._onEditorMouseMove(mouseEvent, keyboardEvent);\r\n }));\r\n this.listenersToRemove.add(clickLinkGesture.onExecute((e) => {\r\n this.onEditorMouseUp(e);\r\n }));\r\n this.listenersToRemove.add(clickLinkGesture.onCancel((e) => {\r\n this.cleanUpActiveLinkDecoration();\r\n }));\r\n this.enabled = editor.getOption(54 /* links */);\r\n this.listenersToRemove.add(editor.onDidChangeConfiguration((e) => {\r\n const enabled = editor.getOption(54 /* links */);\r\n if (this.enabled === enabled) {\r\n // No change in our configuration option\r\n return;\r\n }\r\n this.enabled = enabled;\r\n // Remove any links (for the getting disabled case)\r\n this.updateDecorations([]);\r\n // Stop any computation (for the getting disabled case)\r\n this.stop();\r\n // Start computing (for the getting enabled case)\r\n this.beginCompute();\r\n }));\r\n this.listenersToRemove.add(editor.onDidChangeModelContent((e) => this.onChange()));\r\n this.listenersToRemove.add(editor.onDidChangeModel((e) => this.onModelChanged()));\r\n this.listenersToRemove.add(editor.onDidChangeModelLanguage((e) => this.onModelModeChanged()));\r\n this.listenersToRemove.add(LinkProviderRegistry.onDidChange((e) => this.onModelModeChanged()));\r\n this.timeout = new async.TimeoutTimer();\r\n this.computePromise = null;\r\n this.activeLinksList = null;\r\n this.currentOccurrences = {};\r\n this.activeLinkDecorationId = null;\r\n this.beginCompute();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(LinkDetector.ID);\r\n }\r\n onModelChanged() {\r\n this.currentOccurrences = {};\r\n this.activeLinkDecorationId = null;\r\n this.stop();\r\n this.beginCompute();\r\n }\r\n onModelModeChanged() {\r\n this.stop();\r\n this.beginCompute();\r\n }\r\n onChange() {\r\n this.timeout.setIfNotSet(() => this.beginCompute(), LinkDetector.RECOMPUTE_TIME);\r\n }\r\n beginCompute() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.editor.hasModel() || !this.enabled) {\r\n return;\r\n }\r\n const model = this.editor.getModel();\r\n if (!LinkProviderRegistry.has(model)) {\r\n return;\r\n }\r\n if (this.activeLinksList) {\r\n this.activeLinksList.dispose();\r\n this.activeLinksList = null;\r\n }\r\n this.computePromise = async.createCancelablePromise(token => getLinks(model, token));\r\n try {\r\n this.activeLinksList = yield this.computePromise;\r\n this.updateDecorations(this.activeLinksList.links);\r\n }\r\n catch (err) {\r\n onUnexpectedError(err);\r\n }\r\n finally {\r\n this.computePromise = null;\r\n }\r\n });\r\n }\r\n updateDecorations(links) {\r\n const useMetaKey = (this.editor.getOption(61 /* multiCursorModifier */) === 'altKey');\r\n let oldDecorations = [];\r\n let keys = Object.keys(this.currentOccurrences);\r\n for (let i = 0, len = keys.length; i < len; i++) {\r\n let decorationId = keys[i];\r\n let occurance = this.currentOccurrences[decorationId];\r\n oldDecorations.push(occurance.decorationId);\r\n }\r\n let newDecorations = [];\r\n if (links) {\r\n // Not sure why this is sometimes null\r\n for (const link of links) {\r\n newDecorations.push(LinkOccurrence.decoration(link, useMetaKey));\r\n }\r\n }\r\n let decorations = this.editor.deltaDecorations(oldDecorations, newDecorations);\r\n this.currentOccurrences = {};\r\n this.activeLinkDecorationId = null;\r\n for (let i = 0, len = decorations.length; i < len; i++) {\r\n let occurance = new LinkOccurrence(links[i], decorations[i]);\r\n this.currentOccurrences[occurance.decorationId] = occurance;\r\n }\r\n }\r\n _onEditorMouseMove(mouseEvent, withKey) {\r\n const useMetaKey = (this.editor.getOption(61 /* multiCursorModifier */) === 'altKey');\r\n if (this.isEnabled(mouseEvent, withKey)) {\r\n this.cleanUpActiveLinkDecoration(); // always remove previous link decoration as their can only be one\r\n const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\r\n if (occurrence) {\r\n this.editor.changeDecorations((changeAccessor) => {\r\n occurrence.activate(changeAccessor, useMetaKey);\r\n this.activeLinkDecorationId = occurrence.decorationId;\r\n });\r\n }\r\n }\r\n else {\r\n this.cleanUpActiveLinkDecoration();\r\n }\r\n }\r\n cleanUpActiveLinkDecoration() {\r\n const useMetaKey = (this.editor.getOption(61 /* multiCursorModifier */) === 'altKey');\r\n if (this.activeLinkDecorationId) {\r\n const occurrence = this.currentOccurrences[this.activeLinkDecorationId];\r\n if (occurrence) {\r\n this.editor.changeDecorations((changeAccessor) => {\r\n occurrence.deactivate(changeAccessor, useMetaKey);\r\n });\r\n }\r\n this.activeLinkDecorationId = null;\r\n }\r\n }\r\n onEditorMouseUp(mouseEvent) {\r\n if (!this.isEnabled(mouseEvent)) {\r\n return;\r\n }\r\n const occurrence = this.getLinkOccurrence(mouseEvent.target.position);\r\n if (!occurrence) {\r\n return;\r\n }\r\n this.openLinkOccurrence(occurrence, mouseEvent.hasSideBySideModifier, true /* from user gesture */);\r\n }\r\n openLinkOccurrence(occurrence, openToSide, fromUserGesture = false) {\r\n if (!this.openerService) {\r\n return;\r\n }\r\n const { link } = occurrence;\r\n link.resolve(CancellationToken.None).then(uri => {\r\n // Support for relative file URIs of the shape file://./relativeFile.txt or file:///./relativeFile.txt\r\n if (typeof uri === 'string' && this.editor.hasModel()) {\r\n const modelUri = this.editor.getModel().uri;\r\n if (modelUri.scheme === Schemas.file && strings.startsWith(uri, 'file:')) {\r\n const parsedUri = URI.parse(uri);\r\n if (parsedUri.scheme === Schemas.file) {\r\n const fsPath = resources.originalFSPath(parsedUri);\r\n let relativePath = null;\r\n if (strings.startsWith(fsPath, '/./')) {\r\n relativePath = `.${fsPath.substr(1)}`;\r\n }\r\n else if (strings.startsWith(fsPath, '//./')) {\r\n relativePath = `.${fsPath.substr(2)}`;\r\n }\r\n if (relativePath) {\r\n uri = resources.joinPath(modelUri, relativePath);\r\n }\r\n }\r\n }\r\n }\r\n return this.openerService.open(uri, { openToSide, fromUserGesture });\r\n }, err => {\r\n const messageOrError = err instanceof Error ? err.message : err;\r\n // different error cases\r\n if (messageOrError === 'invalid') {\r\n this.notificationService.warn(nls.localize('invalid.url', 'Failed to open this link because it is not well-formed: {0}', link.url.toString()));\r\n }\r\n else if (messageOrError === 'missing') {\r\n this.notificationService.warn(nls.localize('missing.url', 'Failed to open this link because its target is missing.'));\r\n }\r\n else {\r\n onUnexpectedError(err);\r\n }\r\n });\r\n }\r\n getLinkOccurrence(position) {\r\n if (!this.editor.hasModel() || !position) {\r\n return null;\r\n }\r\n const decorations = this.editor.getModel().getDecorationsInRange({\r\n startLineNumber: position.lineNumber,\r\n startColumn: position.column,\r\n endLineNumber: position.lineNumber,\r\n endColumn: position.column\r\n }, 0, true);\r\n for (const decoration of decorations) {\r\n const currentOccurrence = this.currentOccurrences[decoration.id];\r\n if (currentOccurrence) {\r\n return currentOccurrence;\r\n }\r\n }\r\n return null;\r\n }\r\n isEnabled(mouseEvent, withKey) {\r\n return Boolean((mouseEvent.target.type === 6 /* CONTENT_TEXT */)\r\n && (mouseEvent.hasTriggerModifier || (withKey && withKey.keyCodeIsTriggerKey)));\r\n }\r\n stop() {\r\n this.timeout.cancel();\r\n if (this.activeLinksList) {\r\n this.activeLinksList.dispose();\r\n }\r\n if (this.computePromise) {\r\n this.computePromise.cancel();\r\n this.computePromise = null;\r\n }\r\n }\r\n dispose() {\r\n this.listenersToRemove.dispose();\r\n this.stop();\r\n this.timeout.dispose();\r\n }\r\n};\r\nLinkDetector.ID = 'editor.linkDetector';\r\nLinkDetector.RECOMPUTE_TIME = 1000; // ms\r\nLinkDetector = __decorate([\r\n __param(1, IOpenerService),\r\n __param(2, INotificationService)\r\n], LinkDetector);\r\nexport { LinkDetector };\r\nclass OpenLinkAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.openLink',\r\n label: nls.localize('label', \"Open Link\"),\r\n alias: 'Open Link',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n let linkDetector = LinkDetector.get(editor);\r\n if (!linkDetector) {\r\n return;\r\n }\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n let selections = editor.getSelections();\r\n for (let sel of selections) {\r\n let link = linkDetector.getLinkOccurrence(sel.getEndPosition());\r\n if (link) {\r\n linkDetector.openLinkOccurrence(link, false);\r\n }\r\n }\r\n }\r\n}\r\nregisterEditorContribution(LinkDetector.ID, LinkDetector);\r\nregisterEditorAction(OpenLinkAction);\r\nregisterThemingParticipant((theme, collector) => {\r\n const activeLinkForeground = theme.getColor(editorActiveLinkForeground);\r\n if (activeLinkForeground) {\r\n collector.addRule(`.monaco-editor .detected-link-active { color: ${activeLinkForeground} !important; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { renderMarkdown } from '../../../base/browser/markdownRenderer.js';\r\nimport { IOpenerService, NullOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { tokenizeToString } from '../../common/modes/textToHtmlTokenizer.js';\r\nimport { optional } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { TokenizationRegistry } from '../../common/modes.js';\r\nlet MarkdownRenderer = class MarkdownRenderer extends Disposable {\r\n constructor(_editor, _modeService, _openerService = NullOpenerService) {\r\n super();\r\n this._editor = _editor;\r\n this._modeService = _modeService;\r\n this._openerService = _openerService;\r\n this._onDidRenderCodeBlock = this._register(new Emitter());\r\n this.onDidRenderCodeBlock = this._onDidRenderCodeBlock.event;\r\n }\r\n getOptions(disposeables) {\r\n return {\r\n codeBlockRenderer: (languageAlias, value) => {\r\n // In markdown,\r\n // it is possible that we stumble upon language aliases (e.g.js instead of javascript)\r\n // it is possible no alias is given in which case we fall back to the current editor lang\r\n let modeId = null;\r\n if (languageAlias) {\r\n modeId = this._modeService.getModeIdForLanguageName(languageAlias);\r\n }\r\n else {\r\n const model = this._editor.getModel();\r\n if (model) {\r\n modeId = model.getLanguageIdentifier().language;\r\n }\r\n }\r\n this._modeService.triggerMode(modeId || '');\r\n return Promise.resolve(true).then(_ => {\r\n const promise = TokenizationRegistry.getPromise(modeId || '');\r\n if (promise) {\r\n return promise.then(support => tokenizeToString(value, support));\r\n }\r\n return tokenizeToString(value, undefined);\r\n }).then(code => {\r\n return `<span style=\"font-family: ${this._editor.getOption(36 /* fontInfo */).fontFamily}\">${code}</span>`;\r\n });\r\n },\r\n codeBlockRenderCallback: () => this._onDidRenderCodeBlock.fire(),\r\n actionHandler: {\r\n callback: (content) => {\r\n this._openerService.open(content, { fromUserGesture: true }).catch(onUnexpectedError);\r\n },\r\n disposeables\r\n }\r\n };\r\n }\r\n render(markdown) {\r\n const disposeables = new DisposableStore();\r\n let element;\r\n if (!markdown) {\r\n element = document.createElement('span');\r\n }\r\n else {\r\n element = renderMarkdown(markdown, this.getOptions(disposeables));\r\n }\r\n return {\r\n element,\r\n dispose: () => disposeables.dispose()\r\n };\r\n }\r\n};\r\nMarkdownRenderer = __decorate([\r\n __param(1, IModeService),\r\n __param(2, optional(IOpenerService))\r\n], MarkdownRenderer);\r\nexport { MarkdownRenderer };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './messageController.css';\r\nimport * as nls from '../../../nls.js';\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport { Disposable, DisposableStore, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { registerEditorContribution, EditorCommand, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { registerThemingParticipant, HIGH_CONTRAST } from '../../../platform/theme/common/themeService.js';\r\nimport { inputValidationInfoBorder, inputValidationInfoBackground, inputValidationInfoForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nlet MessageController = class MessageController extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this._messageWidget = this._register(new MutableDisposable());\r\n this._messageListeners = this._register(new DisposableStore());\r\n this._editor = editor;\r\n this._visible = MessageController.MESSAGE_VISIBLE.bindTo(contextKeyService);\r\n this._register(this._editor.onDidAttemptReadOnlyEdit(() => this._onDidAttemptReadOnlyEdit()));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(MessageController.ID);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._visible.reset();\r\n }\r\n showMessage(message, position) {\r\n alert(message);\r\n this._visible.set(true);\r\n this._messageWidget.clear();\r\n this._messageListeners.clear();\r\n this._messageWidget.value = new MessageWidget(this._editor, position, message);\r\n // close on blur, cursor, model change, dispose\r\n this._messageListeners.add(this._editor.onDidBlurEditorText(() => this.closeMessage()));\r\n this._messageListeners.add(this._editor.onDidChangeCursorPosition(() => this.closeMessage()));\r\n this._messageListeners.add(this._editor.onDidDispose(() => this.closeMessage()));\r\n this._messageListeners.add(this._editor.onDidChangeModel(() => this.closeMessage()));\r\n // 3sec\r\n this._messageListeners.add(new TimeoutTimer(() => this.closeMessage(), 3000));\r\n // close on mouse move\r\n let bounds;\r\n this._messageListeners.add(this._editor.onMouseMove(e => {\r\n // outside the text area\r\n if (!e.target.position) {\r\n return;\r\n }\r\n if (!bounds) {\r\n // define bounding box around position and first mouse occurance\r\n bounds = new Range(position.lineNumber - 3, 1, e.target.position.lineNumber + 3, 1);\r\n }\r\n else if (!bounds.containsPosition(e.target.position)) {\r\n // check if position is still in bounds\r\n this.closeMessage();\r\n }\r\n }));\r\n }\r\n closeMessage() {\r\n this._visible.reset();\r\n this._messageListeners.clear();\r\n if (this._messageWidget.value) {\r\n this._messageListeners.add(MessageWidget.fadeOut(this._messageWidget.value));\r\n }\r\n }\r\n _onDidAttemptReadOnlyEdit() {\r\n if (this._editor.hasModel()) {\r\n this.showMessage(nls.localize('editor.readonly', \"Cannot edit in read-only editor\"), this._editor.getPosition());\r\n }\r\n }\r\n};\r\nMessageController.ID = 'editor.contrib.messageController';\r\nMessageController.MESSAGE_VISIBLE = new RawContextKey('messageVisible', false);\r\nMessageController = __decorate([\r\n __param(1, IContextKeyService)\r\n], MessageController);\r\nexport { MessageController };\r\nconst MessageCommand = EditorCommand.bindToContribution(MessageController.get);\r\nregisterEditorCommand(new MessageCommand({\r\n id: 'leaveEditorMessage',\r\n precondition: MessageController.MESSAGE_VISIBLE,\r\n handler: c => c.closeMessage(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n primary: 9 /* Escape */\r\n }\r\n}));\r\nclass MessageWidget {\r\n constructor(editor, { lineNumber, column }, text) {\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this.suppressMouseDown = false;\r\n this._editor = editor;\r\n this._editor.revealLinesInCenterIfOutsideViewport(lineNumber, lineNumber, 0 /* Smooth */);\r\n this._position = { lineNumber, column: column - 1 };\r\n this._domNode = document.createElement('div');\r\n this._domNode.classList.add('monaco-editor-overlaymessage');\r\n const message = document.createElement('div');\r\n message.classList.add('message');\r\n message.textContent = text;\r\n this._domNode.appendChild(message);\r\n const anchor = document.createElement('div');\r\n anchor.classList.add('anchor');\r\n this._domNode.appendChild(anchor);\r\n this._editor.addContentWidget(this);\r\n this._domNode.classList.add('fadeIn');\r\n }\r\n static fadeOut(messageWidget) {\r\n let handle;\r\n const dispose = () => {\r\n messageWidget.dispose();\r\n clearTimeout(handle);\r\n messageWidget.getDomNode().removeEventListener('animationend', dispose);\r\n };\r\n handle = setTimeout(dispose, 110);\r\n messageWidget.getDomNode().addEventListener('animationend', dispose);\r\n messageWidget.getDomNode().classList.add('fadeOut');\r\n return { dispose };\r\n }\r\n dispose() {\r\n this._editor.removeContentWidget(this);\r\n }\r\n getId() {\r\n return 'messageoverlay';\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return { position: this._position, preference: [1 /* ABOVE */, 2 /* BELOW */] };\r\n }\r\n}\r\nregisterEditorContribution(MessageController.ID, MessageController);\r\nregisterThemingParticipant((theme, collector) => {\r\n const border = theme.getColor(inputValidationInfoBorder);\r\n if (border) {\r\n let borderWidth = theme.type === HIGH_CONTRAST ? 2 : 1;\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .anchor { border-top-color: ${border}; }`);\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { border: ${borderWidth}px solid ${border}; }`);\r\n }\r\n const background = theme.getColor(inputValidationInfoBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { background-color: ${background}; }`);\r\n }\r\n const foreground = theme.getColor(inputValidationInfoForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .monaco-editor-overlaymessage .message { color: ${foreground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { CursorMoveCommands } from '../../common/controller/cursorMoveCommands.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { DocumentHighlightProviderRegistry } from '../../common/modes.js';\r\nimport { CommonFindController } from '../find/findController.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { overviewRulerSelectionHighlightForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nexport class InsertCursorAbove extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.insertCursorAbove',\r\n label: nls.localize('mutlicursor.insertAbove', \"Add Cursor Above\"),\r\n alias: 'Add Cursor Above',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 16 /* UpArrow */,\r\n linux: {\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 16 /* UpArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 16 /* UpArrow */]\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '3_multi',\r\n title: nls.localize({ key: 'miInsertCursorAbove', comment: ['&& denotes a mnemonic'] }, \"&&Add Cursor Above\"),\r\n order: 2\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const useLogicalLine = (args && args.logicalLine === true);\r\n const viewModel = editor._getViewModel();\r\n if (viewModel.cursorConfig.readOnly) {\r\n return;\r\n }\r\n viewModel.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.addCursorUp(viewModel, viewModel.getCursorStates(), useLogicalLine));\r\n viewModel.revealTopMostCursor(args.source);\r\n }\r\n}\r\nexport class InsertCursorBelow extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.insertCursorBelow',\r\n label: nls.localize('mutlicursor.insertBelow', \"Add Cursor Below\"),\r\n alias: 'Add Cursor Below',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 18 /* DownArrow */,\r\n linux: {\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 18 /* DownArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 1024 /* Shift */ | 18 /* DownArrow */]\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '3_multi',\r\n title: nls.localize({ key: 'miInsertCursorBelow', comment: ['&& denotes a mnemonic'] }, \"A&&dd Cursor Below\"),\r\n order: 3\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const useLogicalLine = (args && args.logicalLine === true);\r\n const viewModel = editor._getViewModel();\r\n if (viewModel.cursorConfig.readOnly) {\r\n return;\r\n }\r\n viewModel.pushStackElement();\r\n viewModel.setCursorStates(args.source, 3 /* Explicit */, CursorMoveCommands.addCursorDown(viewModel, viewModel.getCursorStates(), useLogicalLine));\r\n viewModel.revealBottomMostCursor(args.source);\r\n }\r\n}\r\nclass InsertCursorAtEndOfEachLineSelected extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.insertCursorAtEndOfEachLineSelected',\r\n label: nls.localize('mutlicursor.insertAtEndOfEachLineSelected', \"Add Cursors to Line Ends\"),\r\n alias: 'Add Cursors to Line Ends',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 39 /* KEY_I */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '3_multi',\r\n title: nls.localize({ key: 'miInsertCursorAtEndOfEachLineSelected', comment: ['&& denotes a mnemonic'] }, \"Add C&&ursors to Line Ends\"),\r\n order: 4\r\n }\r\n });\r\n }\r\n getCursorsForSelection(selection, model, result) {\r\n if (selection.isEmpty()) {\r\n return;\r\n }\r\n for (let i = selection.startLineNumber; i < selection.endLineNumber; i++) {\r\n let currentLineMaxColumn = model.getLineMaxColumn(i);\r\n result.push(new Selection(i, currentLineMaxColumn, i, currentLineMaxColumn));\r\n }\r\n if (selection.endColumn > 1) {\r\n result.push(new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn));\r\n }\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const model = editor.getModel();\r\n const selections = editor.getSelections();\r\n let newSelections = [];\r\n selections.forEach((sel) => this.getCursorsForSelection(sel, model, newSelections));\r\n if (newSelections.length > 0) {\r\n editor.setSelections(newSelections);\r\n }\r\n }\r\n}\r\nclass InsertCursorAtEndOfLineSelected extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.addCursorsToBottom',\r\n label: nls.localize('mutlicursor.addCursorsToBottom', \"Add Cursors To Bottom\"),\r\n alias: 'Add Cursors To Bottom',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const selections = editor.getSelections();\r\n const lineCount = editor.getModel().getLineCount();\r\n let newSelections = [];\r\n for (let i = selections[0].startLineNumber; i <= lineCount; i++) {\r\n newSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\r\n }\r\n if (newSelections.length > 0) {\r\n editor.setSelections(newSelections);\r\n }\r\n }\r\n}\r\nclass InsertCursorAtTopOfLineSelected extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.addCursorsToTop',\r\n label: nls.localize('mutlicursor.addCursorsToTop', \"Add Cursors To Top\"),\r\n alias: 'Add Cursors To Top',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const selections = editor.getSelections();\r\n let newSelections = [];\r\n for (let i = selections[0].startLineNumber; i >= 1; i--) {\r\n newSelections.push(new Selection(i, selections[0].startColumn, i, selections[0].endColumn));\r\n }\r\n if (newSelections.length > 0) {\r\n editor.setSelections(newSelections);\r\n }\r\n }\r\n}\r\nexport class MultiCursorSessionResult {\r\n constructor(selections, revealRange, revealScrollType) {\r\n this.selections = selections;\r\n this.revealRange = revealRange;\r\n this.revealScrollType = revealScrollType;\r\n }\r\n}\r\nexport class MultiCursorSession {\r\n constructor(_editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch) {\r\n this._editor = _editor;\r\n this.findController = findController;\r\n this.isDisconnectedFromFindController = isDisconnectedFromFindController;\r\n this.searchText = searchText;\r\n this.wholeWord = wholeWord;\r\n this.matchCase = matchCase;\r\n this.currentMatch = currentMatch;\r\n }\r\n static create(editor, findController) {\r\n if (!editor.hasModel()) {\r\n return null;\r\n }\r\n const findState = findController.getState();\r\n // Find widget owns entirely what we search for if:\r\n // - focus is not in the editor (i.e. it is in the find widget)\r\n // - and the search widget is visible\r\n // - and the search string is non-empty\r\n if (!editor.hasTextFocus() && findState.isRevealed && findState.searchString.length > 0) {\r\n // Find widget owns what is searched for\r\n return new MultiCursorSession(editor, findController, false, findState.searchString, findState.wholeWord, findState.matchCase, null);\r\n }\r\n // Otherwise, the selection gives the search text, and the find widget gives the search settings\r\n // The exception is the find state disassociation case: when beginning with a single, collapsed selection\r\n let isDisconnectedFromFindController = false;\r\n let wholeWord;\r\n let matchCase;\r\n const selections = editor.getSelections();\r\n if (selections.length === 1 && selections[0].isEmpty()) {\r\n isDisconnectedFromFindController = true;\r\n wholeWord = true;\r\n matchCase = true;\r\n }\r\n else {\r\n wholeWord = findState.wholeWord;\r\n matchCase = findState.matchCase;\r\n }\r\n // Selection owns what is searched for\r\n const s = editor.getSelection();\r\n let searchText;\r\n let currentMatch = null;\r\n if (s.isEmpty()) {\r\n // selection is empty => expand to current word\r\n const word = editor.getConfiguredWordAtPosition(s.getStartPosition());\r\n if (!word) {\r\n return null;\r\n }\r\n searchText = word.word;\r\n currentMatch = new Selection(s.startLineNumber, word.startColumn, s.startLineNumber, word.endColumn);\r\n }\r\n else {\r\n searchText = editor.getModel().getValueInRange(s).replace(/\\r\\n/g, '\\n');\r\n }\r\n return new MultiCursorSession(editor, findController, isDisconnectedFromFindController, searchText, wholeWord, matchCase, currentMatch);\r\n }\r\n addSelectionToNextFindMatch() {\r\n if (!this._editor.hasModel()) {\r\n return null;\r\n }\r\n const nextMatch = this._getNextMatch();\r\n if (!nextMatch) {\r\n return null;\r\n }\r\n const allSelections = this._editor.getSelections();\r\n return new MultiCursorSessionResult(allSelections.concat(nextMatch), nextMatch, 0 /* Smooth */);\r\n }\r\n moveSelectionToNextFindMatch() {\r\n if (!this._editor.hasModel()) {\r\n return null;\r\n }\r\n const nextMatch = this._getNextMatch();\r\n if (!nextMatch) {\r\n return null;\r\n }\r\n const allSelections = this._editor.getSelections();\r\n return new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(nextMatch), nextMatch, 0 /* Smooth */);\r\n }\r\n _getNextMatch() {\r\n if (!this._editor.hasModel()) {\r\n return null;\r\n }\r\n if (this.currentMatch) {\r\n const result = this.currentMatch;\r\n this.currentMatch = null;\r\n return result;\r\n }\r\n this.findController.highlightFindOptions();\r\n const allSelections = this._editor.getSelections();\r\n const lastAddedSelection = allSelections[allSelections.length - 1];\r\n const nextMatch = this._editor.getModel().findNextMatch(this.searchText, lastAddedSelection.getEndPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, false);\r\n if (!nextMatch) {\r\n return null;\r\n }\r\n return new Selection(nextMatch.range.startLineNumber, nextMatch.range.startColumn, nextMatch.range.endLineNumber, nextMatch.range.endColumn);\r\n }\r\n addSelectionToPreviousFindMatch() {\r\n if (!this._editor.hasModel()) {\r\n return null;\r\n }\r\n const previousMatch = this._getPreviousMatch();\r\n if (!previousMatch) {\r\n return null;\r\n }\r\n const allSelections = this._editor.getSelections();\r\n return new MultiCursorSessionResult(allSelections.concat(previousMatch), previousMatch, 0 /* Smooth */);\r\n }\r\n moveSelectionToPreviousFindMatch() {\r\n if (!this._editor.hasModel()) {\r\n return null;\r\n }\r\n const previousMatch = this._getPreviousMatch();\r\n if (!previousMatch) {\r\n return null;\r\n }\r\n const allSelections = this._editor.getSelections();\r\n return new MultiCursorSessionResult(allSelections.slice(0, allSelections.length - 1).concat(previousMatch), previousMatch, 0 /* Smooth */);\r\n }\r\n _getPreviousMatch() {\r\n if (!this._editor.hasModel()) {\r\n return null;\r\n }\r\n if (this.currentMatch) {\r\n const result = this.currentMatch;\r\n this.currentMatch = null;\r\n return result;\r\n }\r\n this.findController.highlightFindOptions();\r\n const allSelections = this._editor.getSelections();\r\n const lastAddedSelection = allSelections[allSelections.length - 1];\r\n const previousMatch = this._editor.getModel().findPreviousMatch(this.searchText, lastAddedSelection.getStartPosition(), false, this.matchCase, this.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, false);\r\n if (!previousMatch) {\r\n return null;\r\n }\r\n return new Selection(previousMatch.range.startLineNumber, previousMatch.range.startColumn, previousMatch.range.endLineNumber, previousMatch.range.endColumn);\r\n }\r\n selectAll() {\r\n if (!this._editor.hasModel()) {\r\n return [];\r\n }\r\n this.findController.highlightFindOptions();\r\n return this._editor.getModel().findMatches(this.searchText, true, false, this.matchCase, this.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n }\r\n}\r\nexport class MultiCursorSelectionController extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this._sessionDispose = this._register(new DisposableStore());\r\n this._editor = editor;\r\n this._ignoreSelectionChange = false;\r\n this._session = null;\r\n }\r\n static get(editor) {\r\n return editor.getContribution(MultiCursorSelectionController.ID);\r\n }\r\n dispose() {\r\n this._endSession();\r\n super.dispose();\r\n }\r\n _beginSessionIfNeeded(findController) {\r\n if (!this._session) {\r\n // Create a new session\r\n const session = MultiCursorSession.create(this._editor, findController);\r\n if (!session) {\r\n return;\r\n }\r\n this._session = session;\r\n const newState = { searchString: this._session.searchText };\r\n if (this._session.isDisconnectedFromFindController) {\r\n newState.wholeWordOverride = 1 /* True */;\r\n newState.matchCaseOverride = 1 /* True */;\r\n newState.isRegexOverride = 2 /* False */;\r\n }\r\n findController.getState().change(newState, false);\r\n this._sessionDispose.add(this._editor.onDidChangeCursorSelection((e) => {\r\n if (this._ignoreSelectionChange) {\r\n return;\r\n }\r\n this._endSession();\r\n }));\r\n this._sessionDispose.add(this._editor.onDidBlurEditorText(() => {\r\n this._endSession();\r\n }));\r\n this._sessionDispose.add(findController.getState().onFindReplaceStateChange((e) => {\r\n if (e.matchCase || e.wholeWord) {\r\n this._endSession();\r\n }\r\n }));\r\n }\r\n }\r\n _endSession() {\r\n this._sessionDispose.clear();\r\n if (this._session && this._session.isDisconnectedFromFindController) {\r\n const newState = {\r\n wholeWordOverride: 0 /* NotSet */,\r\n matchCaseOverride: 0 /* NotSet */,\r\n isRegexOverride: 0 /* NotSet */,\r\n };\r\n this._session.findController.getState().change(newState, false);\r\n }\r\n this._session = null;\r\n }\r\n _setSelections(selections) {\r\n this._ignoreSelectionChange = true;\r\n this._editor.setSelections(selections);\r\n this._ignoreSelectionChange = false;\r\n }\r\n _expandEmptyToWord(model, selection) {\r\n if (!selection.isEmpty()) {\r\n return selection;\r\n }\r\n const word = this._editor.getConfiguredWordAtPosition(selection.getStartPosition());\r\n if (!word) {\r\n return selection;\r\n }\r\n return new Selection(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\r\n }\r\n _applySessionResult(result) {\r\n if (!result) {\r\n return;\r\n }\r\n this._setSelections(result.selections);\r\n if (result.revealRange) {\r\n this._editor.revealRangeInCenterIfOutsideViewport(result.revealRange, result.revealScrollType);\r\n }\r\n }\r\n getSession(findController) {\r\n return this._session;\r\n }\r\n addSelectionToNextFindMatch(findController) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n if (!this._session) {\r\n // If there are multiple cursors, handle the case where they do not all select the same text.\r\n const allSelections = this._editor.getSelections();\r\n if (allSelections.length > 1) {\r\n const findState = findController.getState();\r\n const matchCase = findState.matchCase;\r\n const selectionsContainSameText = modelRangesContainSameText(this._editor.getModel(), allSelections, matchCase);\r\n if (!selectionsContainSameText) {\r\n const model = this._editor.getModel();\r\n let resultingSelections = [];\r\n for (let i = 0, len = allSelections.length; i < len; i++) {\r\n resultingSelections[i] = this._expandEmptyToWord(model, allSelections[i]);\r\n }\r\n this._editor.setSelections(resultingSelections);\r\n return;\r\n }\r\n }\r\n }\r\n this._beginSessionIfNeeded(findController);\r\n if (this._session) {\r\n this._applySessionResult(this._session.addSelectionToNextFindMatch());\r\n }\r\n }\r\n addSelectionToPreviousFindMatch(findController) {\r\n this._beginSessionIfNeeded(findController);\r\n if (this._session) {\r\n this._applySessionResult(this._session.addSelectionToPreviousFindMatch());\r\n }\r\n }\r\n moveSelectionToNextFindMatch(findController) {\r\n this._beginSessionIfNeeded(findController);\r\n if (this._session) {\r\n this._applySessionResult(this._session.moveSelectionToNextFindMatch());\r\n }\r\n }\r\n moveSelectionToPreviousFindMatch(findController) {\r\n this._beginSessionIfNeeded(findController);\r\n if (this._session) {\r\n this._applySessionResult(this._session.moveSelectionToPreviousFindMatch());\r\n }\r\n }\r\n selectAll(findController) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n let matches = null;\r\n const findState = findController.getState();\r\n // Special case: find widget owns entirely what we search for if:\r\n // - focus is not in the editor (i.e. it is in the find widget)\r\n // - and the search widget is visible\r\n // - and the search string is non-empty\r\n // - and we're searching for a regex\r\n if (findState.isRevealed && findState.searchString.length > 0 && findState.isRegex) {\r\n matches = this._editor.getModel().findMatches(findState.searchString, true, findState.isRegex, findState.matchCase, findState.wholeWord ? this._editor.getOption(105 /* wordSeparators */) : null, false, 1073741824 /* MAX_SAFE_SMALL_INTEGER */);\r\n }\r\n else {\r\n this._beginSessionIfNeeded(findController);\r\n if (!this._session) {\r\n return;\r\n }\r\n matches = this._session.selectAll();\r\n }\r\n if (findState.searchScope) {\r\n const states = findState.searchScope;\r\n let inSelection = [];\r\n matches.forEach((match) => {\r\n states.forEach((state) => {\r\n if (match.range.endLineNumber <= state.endLineNumber && match.range.startLineNumber >= state.startLineNumber) {\r\n inSelection.push(match);\r\n }\r\n });\r\n });\r\n matches = inSelection;\r\n }\r\n if (matches.length > 0) {\r\n const editorSelection = this._editor.getSelection();\r\n // Have the primary cursor remain the one where the action was invoked\r\n for (let i = 0, len = matches.length; i < len; i++) {\r\n const match = matches[i];\r\n const intersection = match.range.intersectRanges(editorSelection);\r\n if (intersection) {\r\n // bingo!\r\n matches[i] = matches[0];\r\n matches[0] = match;\r\n break;\r\n }\r\n }\r\n this._setSelections(matches.map(m => new Selection(m.range.startLineNumber, m.range.startColumn, m.range.endLineNumber, m.range.endColumn)));\r\n }\r\n }\r\n}\r\nMultiCursorSelectionController.ID = 'editor.contrib.multiCursorController';\r\nexport class MultiCursorSelectionControllerAction extends EditorAction {\r\n run(accessor, editor) {\r\n const multiCursorController = MultiCursorSelectionController.get(editor);\r\n if (!multiCursorController) {\r\n return;\r\n }\r\n const findController = CommonFindController.get(editor);\r\n if (!findController) {\r\n return;\r\n }\r\n this._run(multiCursorController, findController);\r\n }\r\n}\r\nexport class AddSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.addSelectionToNextFindMatch',\r\n label: nls.localize('addSelectionToNextFindMatch', \"Add Selection To Next Find Match\"),\r\n alias: 'Add Selection To Next Find Match',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 34 /* KEY_D */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '3_multi',\r\n title: nls.localize({ key: 'miAddSelectionToNextFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add &&Next Occurrence\"),\r\n order: 5\r\n }\r\n });\r\n }\r\n _run(multiCursorController, findController) {\r\n multiCursorController.addSelectionToNextFindMatch(findController);\r\n }\r\n}\r\nexport class AddSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.addSelectionToPreviousFindMatch',\r\n label: nls.localize('addSelectionToPreviousFindMatch', \"Add Selection To Previous Find Match\"),\r\n alias: 'Add Selection To Previous Find Match',\r\n precondition: undefined,\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '3_multi',\r\n title: nls.localize({ key: 'miAddSelectionToPreviousFindMatch', comment: ['&& denotes a mnemonic'] }, \"Add P&&revious Occurrence\"),\r\n order: 6\r\n }\r\n });\r\n }\r\n _run(multiCursorController, findController) {\r\n multiCursorController.addSelectionToPreviousFindMatch(findController);\r\n }\r\n}\r\nexport class MoveSelectionToNextFindMatchAction extends MultiCursorSelectionControllerAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.moveSelectionToNextFindMatch',\r\n label: nls.localize('moveSelectionToNextFindMatch', \"Move Last Selection To Next Find Match\"),\r\n alias: 'Move Last Selection To Next Find Match',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: KeyChord(2048 /* CtrlCmd */ | 41 /* KEY_K */, 2048 /* CtrlCmd */ | 34 /* KEY_D */),\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _run(multiCursorController, findController) {\r\n multiCursorController.moveSelectionToNextFindMatch(findController);\r\n }\r\n}\r\nexport class MoveSelectionToPreviousFindMatchAction extends MultiCursorSelectionControllerAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.moveSelectionToPreviousFindMatch',\r\n label: nls.localize('moveSelectionToPreviousFindMatch', \"Move Last Selection To Previous Find Match\"),\r\n alias: 'Move Last Selection To Previous Find Match',\r\n precondition: undefined\r\n });\r\n }\r\n _run(multiCursorController, findController) {\r\n multiCursorController.moveSelectionToPreviousFindMatch(findController);\r\n }\r\n}\r\nexport class SelectHighlightsAction extends MultiCursorSelectionControllerAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.selectHighlights',\r\n label: nls.localize('selectAllOccurrencesOfFindMatch', \"Select All Occurrences of Find Match\"),\r\n alias: 'Select All Occurrences of Find Match',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 42 /* KEY_L */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '3_multi',\r\n title: nls.localize({ key: 'miSelectHighlights', comment: ['&& denotes a mnemonic'] }, \"Select All &&Occurrences\"),\r\n order: 7\r\n }\r\n });\r\n }\r\n _run(multiCursorController, findController) {\r\n multiCursorController.selectAll(findController);\r\n }\r\n}\r\nexport class CompatChangeAll extends MultiCursorSelectionControllerAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.changeAll',\r\n label: nls.localize('changeAll.label', \"Change All Occurrences\"),\r\n alias: 'Change All Occurrences',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.editorTextFocus),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 60 /* F2 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: '1_modification',\r\n order: 1.2\r\n }\r\n });\r\n }\r\n _run(multiCursorController, findController) {\r\n multiCursorController.selectAll(findController);\r\n }\r\n}\r\nclass SelectionHighlighterState {\r\n constructor(searchText, matchCase, wordSeparators, modelVersionId) {\r\n this.searchText = searchText;\r\n this.matchCase = matchCase;\r\n this.wordSeparators = wordSeparators;\r\n this.modelVersionId = modelVersionId;\r\n }\r\n /**\r\n * Everything equals except for `lastWordUnderCursor`\r\n */\r\n static softEquals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (!a || !b) {\r\n return false;\r\n }\r\n return (a.searchText === b.searchText\r\n && a.matchCase === b.matchCase\r\n && a.wordSeparators === b.wordSeparators\r\n && a.modelVersionId === b.modelVersionId);\r\n }\r\n}\r\nexport class SelectionHighlighter extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this.editor = editor;\r\n this._isEnabled = editor.getOption(89 /* selectionHighlight */);\r\n this.decorations = [];\r\n this.updateSoon = this._register(new RunOnceScheduler(() => this._update(), 300));\r\n this.state = null;\r\n this._register(editor.onDidChangeConfiguration((e) => {\r\n this._isEnabled = editor.getOption(89 /* selectionHighlight */);\r\n }));\r\n this._register(editor.onDidChangeCursorSelection((e) => {\r\n if (!this._isEnabled) {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n return;\r\n }\r\n if (e.selection.isEmpty()) {\r\n if (e.reason === 3 /* Explicit */) {\r\n if (this.state) {\r\n // no longer valid\r\n this._setState(null);\r\n }\r\n this.updateSoon.schedule();\r\n }\r\n else {\r\n this._setState(null);\r\n }\r\n }\r\n else {\r\n this._update();\r\n }\r\n }));\r\n this._register(editor.onDidChangeModel((e) => {\r\n this._setState(null);\r\n }));\r\n this._register(editor.onDidChangeModelContent((e) => {\r\n if (this._isEnabled) {\r\n this.updateSoon.schedule();\r\n }\r\n }));\r\n this._register(CommonFindController.get(editor).getState().onFindReplaceStateChange((e) => {\r\n this._update();\r\n }));\r\n }\r\n _update() {\r\n this._setState(SelectionHighlighter._createState(this._isEnabled, this.editor));\r\n }\r\n static _createState(isEnabled, editor) {\r\n if (!isEnabled) {\r\n return null;\r\n }\r\n if (!editor.hasModel()) {\r\n return null;\r\n }\r\n const s = editor.getSelection();\r\n if (s.startLineNumber !== s.endLineNumber) {\r\n // multiline forbidden for perf reasons\r\n return null;\r\n }\r\n const multiCursorController = MultiCursorSelectionController.get(editor);\r\n if (!multiCursorController) {\r\n return null;\r\n }\r\n const findController = CommonFindController.get(editor);\r\n if (!findController) {\r\n return null;\r\n }\r\n let r = multiCursorController.getSession(findController);\r\n if (!r) {\r\n const allSelections = editor.getSelections();\r\n if (allSelections.length > 1) {\r\n const findState = findController.getState();\r\n const matchCase = findState.matchCase;\r\n const selectionsContainSameText = modelRangesContainSameText(editor.getModel(), allSelections, matchCase);\r\n if (!selectionsContainSameText) {\r\n return null;\r\n }\r\n }\r\n r = MultiCursorSession.create(editor, findController);\r\n }\r\n if (!r) {\r\n return null;\r\n }\r\n if (r.currentMatch) {\r\n // This is an empty selection\r\n // Do not interfere with semantic word highlighting in the no selection case\r\n return null;\r\n }\r\n if (/^[ \\t]+$/.test(r.searchText)) {\r\n // whitespace only selection\r\n return null;\r\n }\r\n if (r.searchText.length > 200) {\r\n // very long selection\r\n return null;\r\n }\r\n // TODO: better handling of this case\r\n const findState = findController.getState();\r\n const caseSensitive = findState.matchCase;\r\n // Return early if the find widget shows the exact same matches\r\n if (findState.isRevealed) {\r\n let findStateSearchString = findState.searchString;\r\n if (!caseSensitive) {\r\n findStateSearchString = findStateSearchString.toLowerCase();\r\n }\r\n let mySearchString = r.searchText;\r\n if (!caseSensitive) {\r\n mySearchString = mySearchString.toLowerCase();\r\n }\r\n if (findStateSearchString === mySearchString && r.matchCase === findState.matchCase && r.wholeWord === findState.wholeWord && !findState.isRegex) {\r\n return null;\r\n }\r\n }\r\n return new SelectionHighlighterState(r.searchText, r.matchCase, r.wholeWord ? editor.getOption(105 /* wordSeparators */) : null, editor.getModel().getVersionId());\r\n }\r\n _setState(state) {\r\n if (SelectionHighlighterState.softEquals(this.state, state)) {\r\n this.state = state;\r\n return;\r\n }\r\n this.state = state;\r\n if (!this.state) {\r\n this.decorations = this.editor.deltaDecorations(this.decorations, []);\r\n return;\r\n }\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n const model = this.editor.getModel();\r\n if (model.isTooLargeForTokenization()) {\r\n // the file is too large, so searching word under cursor in the whole document takes is blocking the UI.\r\n return;\r\n }\r\n const hasFindOccurrences = DocumentHighlightProviderRegistry.has(model) && this.editor.getOption(63 /* occurrencesHighlight */);\r\n let allMatches = model.findMatches(this.state.searchText, true, false, this.state.matchCase, this.state.wordSeparators, false).map(m => m.range);\r\n allMatches.sort(Range.compareRangesUsingStarts);\r\n let selections = this.editor.getSelections();\r\n selections.sort(Range.compareRangesUsingStarts);\r\n // do not overlap with selection (issue #64 and #512)\r\n let matches = [];\r\n for (let i = 0, j = 0, len = allMatches.length, lenJ = selections.length; i < len;) {\r\n const match = allMatches[i];\r\n if (j >= lenJ) {\r\n // finished all editor selections\r\n matches.push(match);\r\n i++;\r\n }\r\n else {\r\n const cmp = Range.compareRangesUsingStarts(match, selections[j]);\r\n if (cmp < 0) {\r\n // match is before sel\r\n if (selections[j].isEmpty() || !Range.areIntersecting(match, selections[j])) {\r\n matches.push(match);\r\n }\r\n i++;\r\n }\r\n else if (cmp > 0) {\r\n // sel is before match\r\n j++;\r\n }\r\n else {\r\n // sel is equal to match\r\n i++;\r\n j++;\r\n }\r\n }\r\n }\r\n const decorations = matches.map(r => {\r\n return {\r\n range: r,\r\n // Show in overviewRuler only if model has no semantic highlighting\r\n options: (hasFindOccurrences ? SelectionHighlighter._SELECTION_HIGHLIGHT : SelectionHighlighter._SELECTION_HIGHLIGHT_OVERVIEW)\r\n };\r\n });\r\n this.decorations = this.editor.deltaDecorations(this.decorations, decorations);\r\n }\r\n dispose() {\r\n this._setState(null);\r\n super.dispose();\r\n }\r\n}\r\nSelectionHighlighter.ID = 'editor.contrib.selectionHighlighter';\r\nSelectionHighlighter._SELECTION_HIGHLIGHT_OVERVIEW = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'selectionHighlight',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerSelectionHighlightForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nSelectionHighlighter._SELECTION_HIGHLIGHT = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'selectionHighlight',\r\n});\r\nfunction modelRangesContainSameText(model, ranges, matchCase) {\r\n const selectedText = getValueInRange(model, ranges[0], !matchCase);\r\n for (let i = 1, len = ranges.length; i < len; i++) {\r\n const range = ranges[i];\r\n if (range.isEmpty()) {\r\n return false;\r\n }\r\n const thisSelectedText = getValueInRange(model, range, !matchCase);\r\n if (selectedText !== thisSelectedText) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction getValueInRange(model, range, toLowerCase) {\r\n const text = model.getValueInRange(range);\r\n return (toLowerCase ? text.toLowerCase() : text);\r\n}\r\nregisterEditorContribution(MultiCursorSelectionController.ID, MultiCursorSelectionController);\r\nregisterEditorContribution(SelectionHighlighter.ID, SelectionHighlighter);\r\nregisterEditorAction(InsertCursorAbove);\r\nregisterEditorAction(InsertCursorBelow);\r\nregisterEditorAction(InsertCursorAtEndOfEachLineSelected);\r\nregisterEditorAction(AddSelectionToNextFindMatchAction);\r\nregisterEditorAction(AddSelectionToPreviousFindMatchAction);\r\nregisterEditorAction(MoveSelectionToNextFindMatchAction);\r\nregisterEditorAction(MoveSelectionToPreviousFindMatchAction);\r\nregisterEditorAction(SelectHighlightsAction);\r\nregisterEditorAction(CompatChangeAll);\r\nregisterEditorAction(InsertCursorAtEndOfLineSelected);\r\nregisterEditorAction(InsertCursorAtTopOfLineSelected);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { registerEditorAction, registerEditorContribution, EditorAction, EditorCommand, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { ParameterHintsWidget } from './parameterHintsWidget.js';\r\nimport { Context } from './provideSignatureHelp.js';\r\nimport * as modes from '../../common/modes.js';\r\nlet ParameterHintsController = class ParameterHintsController extends Disposable {\r\n constructor(editor, instantiationService) {\r\n super();\r\n this.editor = editor;\r\n this.widget = this._register(instantiationService.createInstance(ParameterHintsWidget, this.editor));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(ParameterHintsController.ID);\r\n }\r\n cancel() {\r\n this.widget.cancel();\r\n }\r\n previous() {\r\n this.widget.previous();\r\n }\r\n next() {\r\n this.widget.next();\r\n }\r\n trigger(context) {\r\n this.widget.trigger(context);\r\n }\r\n};\r\nParameterHintsController.ID = 'editor.controller.parameterHints';\r\nParameterHintsController = __decorate([\r\n __param(1, IInstantiationService)\r\n], ParameterHintsController);\r\nexport class TriggerParameterHintsAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.triggerParameterHints',\r\n label: nls.localize('parameterHints.trigger.label', \"Trigger Parameter Hints\"),\r\n alias: 'Trigger Parameter Hints',\r\n precondition: EditorContextKeys.hasSignatureHelpProvider,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 10 /* Space */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const controller = ParameterHintsController.get(editor);\r\n if (controller) {\r\n controller.trigger({\r\n triggerKind: modes.SignatureHelpTriggerKind.Invoke\r\n });\r\n }\r\n }\r\n}\r\nregisterEditorContribution(ParameterHintsController.ID, ParameterHintsController);\r\nregisterEditorAction(TriggerParameterHintsAction);\r\nconst weight = 100 /* EditorContrib */ + 75;\r\nconst ParameterHintsCommand = EditorCommand.bindToContribution(ParameterHintsController.get);\r\nregisterEditorCommand(new ParameterHintsCommand({\r\n id: 'closeParameterHints',\r\n precondition: Context.Visible,\r\n handler: x => x.cancel(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new ParameterHintsCommand({\r\n id: 'showPrevParameterHint',\r\n precondition: ContextKeyExpr.and(Context.Visible, Context.MultipleSignatures),\r\n handler: x => x.previous(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 16 /* UpArrow */,\r\n secondary: [512 /* Alt */ | 16 /* UpArrow */],\r\n mac: { primary: 16 /* UpArrow */, secondary: [512 /* Alt */ | 16 /* UpArrow */, 256 /* WinCtrl */ | 46 /* KEY_P */] }\r\n }\r\n}));\r\nregisterEditorCommand(new ParameterHintsCommand({\r\n id: 'showNextParameterHint',\r\n precondition: ContextKeyExpr.and(Context.Visible, Context.MultipleSignatures),\r\n handler: x => x.next(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 18 /* DownArrow */,\r\n secondary: [512 /* Alt */ | 18 /* DownArrow */],\r\n mac: { primary: 18 /* DownArrow */, secondary: [512 /* Alt */ | 18 /* DownArrow */, 256 /* WinCtrl */ | 44 /* KEY_N */] }\r\n }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { createCancelablePromise, Delayer } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { CharacterSet } from '../../common/core/characterClassifier.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { provideSignatureHelp } from './provideSignatureHelp.js';\r\nvar ParameterHintState;\r\n(function (ParameterHintState) {\r\n ParameterHintState.Default = { type: 0 /* Default */ };\r\n class Pending {\r\n constructor(request) {\r\n this.request = request;\r\n this.type = 2 /* Pending */;\r\n }\r\n }\r\n ParameterHintState.Pending = Pending;\r\n class Active {\r\n constructor(hints) {\r\n this.hints = hints;\r\n this.type = 1 /* Active */;\r\n }\r\n }\r\n ParameterHintState.Active = Active;\r\n})(ParameterHintState || (ParameterHintState = {}));\r\nexport class ParameterHintsModel extends Disposable {\r\n constructor(editor, delay = ParameterHintsModel.DEFAULT_DELAY) {\r\n super();\r\n this._onChangedHints = this._register(new Emitter());\r\n this.onChangedHints = this._onChangedHints.event;\r\n this.triggerOnType = false;\r\n this._state = ParameterHintState.Default;\r\n this._pendingTriggers = [];\r\n this._lastSignatureHelpResult = this._register(new MutableDisposable());\r\n this.triggerChars = new CharacterSet();\r\n this.retriggerChars = new CharacterSet();\r\n this.triggerId = 0;\r\n this.editor = editor;\r\n this.throttledDelayer = new Delayer(delay);\r\n this._register(this.editor.onDidChangeConfiguration(() => this.onEditorConfigurationChange()));\r\n this._register(this.editor.onDidChangeModel(e => this.onModelChanged()));\r\n this._register(this.editor.onDidChangeModelLanguage(_ => this.onModelChanged()));\r\n this._register(this.editor.onDidChangeCursorSelection(e => this.onCursorChange(e)));\r\n this._register(this.editor.onDidChangeModelContent(e => this.onModelContentChange()));\r\n this._register(modes.SignatureHelpProviderRegistry.onDidChange(this.onModelChanged, this));\r\n this._register(this.editor.onDidType(text => this.onDidType(text)));\r\n this.onEditorConfigurationChange();\r\n this.onModelChanged();\r\n }\r\n get state() { return this._state; }\r\n set state(value) {\r\n if (this._state.type === 2 /* Pending */) {\r\n this._state.request.cancel();\r\n }\r\n this._state = value;\r\n }\r\n cancel(silent = false) {\r\n this.state = ParameterHintState.Default;\r\n this.throttledDelayer.cancel();\r\n if (!silent) {\r\n this._onChangedHints.fire(undefined);\r\n }\r\n }\r\n trigger(context, delay) {\r\n const model = this.editor.getModel();\r\n if (!model || !modes.SignatureHelpProviderRegistry.has(model)) {\r\n return;\r\n }\r\n const triggerId = ++this.triggerId;\r\n this._pendingTriggers.push(context);\r\n this.throttledDelayer.trigger(() => {\r\n return this.doTrigger(triggerId);\r\n }, delay)\r\n .catch(onUnexpectedError);\r\n }\r\n next() {\r\n if (this.state.type !== 1 /* Active */) {\r\n return;\r\n }\r\n const length = this.state.hints.signatures.length;\r\n const activeSignature = this.state.hints.activeSignature;\r\n const last = (activeSignature % length) === (length - 1);\r\n const cycle = this.editor.getOption(67 /* parameterHints */).cycle;\r\n // If there is only one signature, or we're on last signature of list\r\n if ((length < 2 || last) && !cycle) {\r\n this.cancel();\r\n return;\r\n }\r\n this.updateActiveSignature(last && cycle ? 0 : activeSignature + 1);\r\n }\r\n previous() {\r\n if (this.state.type !== 1 /* Active */) {\r\n return;\r\n }\r\n const length = this.state.hints.signatures.length;\r\n const activeSignature = this.state.hints.activeSignature;\r\n const first = activeSignature === 0;\r\n const cycle = this.editor.getOption(67 /* parameterHints */).cycle;\r\n // If there is only one signature, or we're on first signature of list\r\n if ((length < 2 || first) && !cycle) {\r\n this.cancel();\r\n return;\r\n }\r\n this.updateActiveSignature(first && cycle ? length - 1 : activeSignature - 1);\r\n }\r\n updateActiveSignature(activeSignature) {\r\n if (this.state.type !== 1 /* Active */) {\r\n return;\r\n }\r\n this.state = new ParameterHintState.Active(Object.assign(Object.assign({}, this.state.hints), { activeSignature }));\r\n this._onChangedHints.fire(this.state.hints);\r\n }\r\n doTrigger(triggerId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const isRetrigger = this.state.type === 1 /* Active */ || this.state.type === 2 /* Pending */;\r\n const activeSignatureHelp = this.state.type === 1 /* Active */ ? this.state.hints : undefined;\r\n this.cancel(true);\r\n if (this._pendingTriggers.length === 0) {\r\n return false;\r\n }\r\n const context = this._pendingTriggers.reduce(mergeTriggerContexts);\r\n this._pendingTriggers = [];\r\n const triggerContext = {\r\n triggerKind: context.triggerKind,\r\n triggerCharacter: context.triggerCharacter,\r\n isRetrigger: isRetrigger,\r\n activeSignatureHelp: activeSignatureHelp\r\n };\r\n if (!this.editor.hasModel()) {\r\n return false;\r\n }\r\n const model = this.editor.getModel();\r\n const position = this.editor.getPosition();\r\n this.state = new ParameterHintState.Pending(createCancelablePromise(token => provideSignatureHelp(model, position, triggerContext, token)));\r\n try {\r\n const result = yield this.state.request;\r\n // Check that we are still resolving the correct signature help\r\n if (triggerId !== this.triggerId) {\r\n result === null || result === void 0 ? void 0 : result.dispose();\r\n return false;\r\n }\r\n if (!result || !result.value.signatures || result.value.signatures.length === 0) {\r\n result === null || result === void 0 ? void 0 : result.dispose();\r\n this._lastSignatureHelpResult.clear();\r\n this.cancel();\r\n return false;\r\n }\r\n else {\r\n this.state = new ParameterHintState.Active(result.value);\r\n this._lastSignatureHelpResult.value = result;\r\n this._onChangedHints.fire(this.state.hints);\r\n return true;\r\n }\r\n }\r\n catch (error) {\r\n if (triggerId === this.triggerId) {\r\n this.state = ParameterHintState.Default;\r\n }\r\n onUnexpectedError(error);\r\n return false;\r\n }\r\n });\r\n }\r\n get isTriggered() {\r\n return this.state.type === 1 /* Active */\r\n || this.state.type === 2 /* Pending */\r\n || this.throttledDelayer.isTriggered();\r\n }\r\n onModelChanged() {\r\n this.cancel();\r\n // Update trigger characters\r\n this.triggerChars = new CharacterSet();\r\n this.retriggerChars = new CharacterSet();\r\n const model = this.editor.getModel();\r\n if (!model) {\r\n return;\r\n }\r\n for (const support of modes.SignatureHelpProviderRegistry.ordered(model)) {\r\n for (const ch of support.signatureHelpTriggerCharacters || []) {\r\n this.triggerChars.add(ch.charCodeAt(0));\r\n // All trigger characters are also considered retrigger characters\r\n this.retriggerChars.add(ch.charCodeAt(0));\r\n }\r\n for (const ch of support.signatureHelpRetriggerCharacters || []) {\r\n this.retriggerChars.add(ch.charCodeAt(0));\r\n }\r\n }\r\n }\r\n onDidType(text) {\r\n if (!this.triggerOnType) {\r\n return;\r\n }\r\n const lastCharIndex = text.length - 1;\r\n const triggerCharCode = text.charCodeAt(lastCharIndex);\r\n if (this.triggerChars.has(triggerCharCode) || this.isTriggered && this.retriggerChars.has(triggerCharCode)) {\r\n this.trigger({\r\n triggerKind: modes.SignatureHelpTriggerKind.TriggerCharacter,\r\n triggerCharacter: text.charAt(lastCharIndex),\r\n });\r\n }\r\n }\r\n onCursorChange(e) {\r\n if (e.source === 'mouse') {\r\n this.cancel();\r\n }\r\n else if (this.isTriggered) {\r\n this.trigger({ triggerKind: modes.SignatureHelpTriggerKind.ContentChange });\r\n }\r\n }\r\n onModelContentChange() {\r\n if (this.isTriggered) {\r\n this.trigger({ triggerKind: modes.SignatureHelpTriggerKind.ContentChange });\r\n }\r\n }\r\n onEditorConfigurationChange() {\r\n this.triggerOnType = this.editor.getOption(67 /* parameterHints */).enabled;\r\n if (!this.triggerOnType) {\r\n this.cancel();\r\n }\r\n }\r\n dispose() {\r\n this.cancel(true);\r\n super.dispose();\r\n }\r\n}\r\nParameterHintsModel.DEFAULT_DELAY = 120; // ms\r\nfunction mergeTriggerContexts(previous, current) {\r\n switch (current.triggerKind) {\r\n case modes.SignatureHelpTriggerKind.Invoke:\r\n // Invoke overrides previous triggers.\r\n return current;\r\n case modes.SignatureHelpTriggerKind.ContentChange:\r\n // Ignore content changes triggers\r\n return previous;\r\n case modes.SignatureHelpTriggerKind.TriggerCharacter:\r\n default:\r\n return current;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { domEvent, stop } from '../../../base/browser/event.js';\r\nimport * as aria from '../../../base/browser/ui/aria/aria.js';\r\nimport { DomScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { Event } from '../../../base/common/event.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport './parameterHints.css';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { MarkdownRenderer } from '../markdown/markdownRenderer.js';\r\nimport { Context } from './provideSignatureHelp.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { editorHoverBackground, editorHoverBorder, textCodeBlockBackground, textLinkForeground, editorHoverForeground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { HIGH_CONTRAST, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { ParameterHintsModel } from './parameterHintsModel.js';\r\nimport { pad } from '../../../base/common/strings.js';\r\nimport { registerIcon, Codicon } from '../../../base/common/codicons.js';\r\nimport { assertIsDefined } from '../../../base/common/types.js';\r\nconst $ = dom.$;\r\nconst parameterHintsNextIcon = registerIcon('parameter-hints-next', Codicon.chevronDown);\r\nconst parameterHintsPreviousIcon = registerIcon('parameter-hints-previous', Codicon.chevronUp);\r\nlet ParameterHintsWidget = class ParameterHintsWidget extends Disposable {\r\n constructor(editor, contextKeyService, openerService, modeService) {\r\n super();\r\n this.editor = editor;\r\n this.renderDisposeables = this._register(new DisposableStore());\r\n this.visible = false;\r\n this.announcedLabel = null;\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this.markdownRenderer = this._register(new MarkdownRenderer(editor, modeService, openerService));\r\n this.model = this._register(new ParameterHintsModel(editor));\r\n this.keyVisible = Context.Visible.bindTo(contextKeyService);\r\n this.keyMultipleSignatures = Context.MultipleSignatures.bindTo(contextKeyService);\r\n this._register(this.model.onChangedHints(newParameterHints => {\r\n if (newParameterHints) {\r\n this.show();\r\n this.render(newParameterHints);\r\n }\r\n else {\r\n this.hide();\r\n }\r\n }));\r\n }\r\n createParamaterHintDOMNodes() {\r\n const element = $('.editor-widget.parameter-hints-widget');\r\n const wrapper = dom.append(element, $('.wrapper'));\r\n wrapper.tabIndex = -1;\r\n const controls = dom.append(wrapper, $('.controls'));\r\n const previous = dom.append(controls, $('.button' + parameterHintsPreviousIcon.cssSelector));\r\n const overloads = dom.append(controls, $('.overloads'));\r\n const next = dom.append(controls, $('.button' + parameterHintsNextIcon.cssSelector));\r\n const onPreviousClick = stop(domEvent(previous, 'click'));\r\n this._register(onPreviousClick(this.previous, this));\r\n const onNextClick = stop(domEvent(next, 'click'));\r\n this._register(onNextClick(this.next, this));\r\n const body = $('.body');\r\n const scrollbar = new DomScrollableElement(body, {});\r\n this._register(scrollbar);\r\n wrapper.appendChild(scrollbar.getDomNode());\r\n const signature = dom.append(body, $('.signature'));\r\n const docs = dom.append(body, $('.docs'));\r\n element.style.userSelect = 'text';\r\n this.domNodes = {\r\n element,\r\n signature,\r\n overloads,\r\n docs,\r\n scrollbar,\r\n };\r\n this.editor.addContentWidget(this);\r\n this.hide();\r\n this._register(this.editor.onDidChangeCursorSelection(e => {\r\n if (this.visible) {\r\n this.editor.layoutContentWidget(this);\r\n }\r\n }));\r\n const updateFont = () => {\r\n if (!this.domNodes) {\r\n return;\r\n }\r\n const fontInfo = this.editor.getOption(36 /* fontInfo */);\r\n this.domNodes.element.style.fontSize = `${fontInfo.fontSize}px`;\r\n };\r\n updateFont();\r\n this._register(Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor))\r\n .filter(e => e.hasChanged(36 /* fontInfo */))\r\n .on(updateFont, null));\r\n this._register(this.editor.onDidLayoutChange(e => this.updateMaxHeight()));\r\n this.updateMaxHeight();\r\n }\r\n show() {\r\n if (this.visible) {\r\n return;\r\n }\r\n if (!this.domNodes) {\r\n this.createParamaterHintDOMNodes();\r\n }\r\n this.keyVisible.set(true);\r\n this.visible = true;\r\n setTimeout(() => {\r\n if (this.domNodes) {\r\n dom.addClass(this.domNodes.element, 'visible');\r\n }\r\n }, 100);\r\n this.editor.layoutContentWidget(this);\r\n }\r\n hide() {\r\n this.renderDisposeables.clear();\r\n if (!this.visible) {\r\n return;\r\n }\r\n this.keyVisible.reset();\r\n this.visible = false;\r\n this.announcedLabel = null;\r\n if (this.domNodes) {\r\n dom.removeClass(this.domNodes.element, 'visible');\r\n }\r\n this.editor.layoutContentWidget(this);\r\n }\r\n getPosition() {\r\n if (this.visible) {\r\n return {\r\n position: this.editor.getPosition(),\r\n preference: [1 /* ABOVE */, 2 /* BELOW */]\r\n };\r\n }\r\n return null;\r\n }\r\n render(hints) {\r\n var _a;\r\n this.renderDisposeables.clear();\r\n if (!this.domNodes) {\r\n return;\r\n }\r\n const multiple = hints.signatures.length > 1;\r\n dom.toggleClass(this.domNodes.element, 'multiple', multiple);\r\n this.keyMultipleSignatures.set(multiple);\r\n this.domNodes.signature.innerText = '';\r\n this.domNodes.docs.innerText = '';\r\n const signature = hints.signatures[hints.activeSignature];\r\n if (!signature) {\r\n return;\r\n }\r\n const code = dom.append(this.domNodes.signature, $('.code'));\r\n const fontInfo = this.editor.getOption(36 /* fontInfo */);\r\n code.style.fontSize = `${fontInfo.fontSize}px`;\r\n code.style.fontFamily = fontInfo.fontFamily;\r\n const hasParameters = signature.parameters.length > 0;\r\n const activeParameterIndex = (_a = signature.activeParameter) !== null && _a !== void 0 ? _a : hints.activeParameter;\r\n if (!hasParameters) {\r\n const label = dom.append(code, $('span'));\r\n label.textContent = signature.label;\r\n }\r\n else {\r\n this.renderParameters(code, signature, activeParameterIndex);\r\n }\r\n const activeParameter = signature.parameters[activeParameterIndex];\r\n if (activeParameter === null || activeParameter === void 0 ? void 0 : activeParameter.documentation) {\r\n const documentation = $('span.documentation');\r\n if (typeof activeParameter.documentation === 'string') {\r\n documentation.textContent = activeParameter.documentation;\r\n }\r\n else {\r\n const renderedContents = this.renderDisposeables.add(this.markdownRenderer.render(activeParameter.documentation));\r\n dom.addClass(renderedContents.element, 'markdown-docs');\r\n documentation.appendChild(renderedContents.element);\r\n }\r\n dom.append(this.domNodes.docs, $('p', {}, documentation));\r\n }\r\n if (signature.documentation === undefined) {\r\n /** no op */\r\n }\r\n else if (typeof signature.documentation === 'string') {\r\n dom.append(this.domNodes.docs, $('p', {}, signature.documentation));\r\n }\r\n else {\r\n const renderedContents = this.renderDisposeables.add(this.markdownRenderer.render(signature.documentation));\r\n dom.addClass(renderedContents.element, 'markdown-docs');\r\n dom.append(this.domNodes.docs, renderedContents.element);\r\n }\r\n const hasDocs = this.hasDocs(signature, activeParameter);\r\n dom.toggleClass(this.domNodes.signature, 'has-docs', hasDocs);\r\n dom.toggleClass(this.domNodes.docs, 'empty', !hasDocs);\r\n this.domNodes.overloads.textContent =\r\n pad(hints.activeSignature + 1, hints.signatures.length.toString().length) + '/' + hints.signatures.length;\r\n if (activeParameter) {\r\n const labelToAnnounce = this.getParameterLabel(signature, activeParameterIndex);\r\n // Select method gets called on every user type while parameter hints are visible.\r\n // We do not want to spam the user with same announcements, so we only announce if the current parameter changed.\r\n if (this.announcedLabel !== labelToAnnounce) {\r\n aria.alert(nls.localize('hint', \"{0}, hint\", labelToAnnounce));\r\n this.announcedLabel = labelToAnnounce;\r\n }\r\n }\r\n this.editor.layoutContentWidget(this);\r\n this.domNodes.scrollbar.scanDomNode();\r\n }\r\n hasDocs(signature, activeParameter) {\r\n if (activeParameter && typeof activeParameter.documentation === 'string' && assertIsDefined(activeParameter.documentation).length > 0) {\r\n return true;\r\n }\r\n if (activeParameter && typeof activeParameter.documentation === 'object' && assertIsDefined(activeParameter.documentation).value.length > 0) {\r\n return true;\r\n }\r\n if (signature.documentation && typeof signature.documentation === 'string' && assertIsDefined(signature.documentation).length > 0) {\r\n return true;\r\n }\r\n if (signature.documentation && typeof signature.documentation === 'object' && assertIsDefined(signature.documentation.value).length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n renderParameters(parent, signature, activeParameterIndex) {\r\n const [start, end] = this.getParameterLabelOffsets(signature, activeParameterIndex);\r\n const beforeSpan = document.createElement('span');\r\n beforeSpan.textContent = signature.label.substring(0, start);\r\n const paramSpan = document.createElement('span');\r\n paramSpan.textContent = signature.label.substring(start, end);\r\n paramSpan.className = 'parameter active';\r\n const afterSpan = document.createElement('span');\r\n afterSpan.textContent = signature.label.substring(end);\r\n dom.append(parent, beforeSpan, paramSpan, afterSpan);\r\n }\r\n getParameterLabel(signature, paramIdx) {\r\n const param = signature.parameters[paramIdx];\r\n if (Array.isArray(param.label)) {\r\n return signature.label.substring(param.label[0], param.label[1]);\r\n }\r\n else {\r\n return param.label;\r\n }\r\n }\r\n getParameterLabelOffsets(signature, paramIdx) {\r\n const param = signature.parameters[paramIdx];\r\n if (!param) {\r\n return [0, 0];\r\n }\r\n else if (Array.isArray(param.label)) {\r\n return param.label;\r\n }\r\n else {\r\n const idx = signature.label.lastIndexOf(param.label);\r\n return idx >= 0\r\n ? [idx, idx + param.label.length]\r\n : [0, 0];\r\n }\r\n }\r\n next() {\r\n this.editor.focus();\r\n this.model.next();\r\n }\r\n previous() {\r\n this.editor.focus();\r\n this.model.previous();\r\n }\r\n cancel() {\r\n this.model.cancel();\r\n }\r\n getDomNode() {\r\n if (!this.domNodes) {\r\n this.createParamaterHintDOMNodes();\r\n }\r\n return this.domNodes.element;\r\n }\r\n getId() {\r\n return ParameterHintsWidget.ID;\r\n }\r\n trigger(context) {\r\n this.model.trigger(context, 0);\r\n }\r\n updateMaxHeight() {\r\n if (!this.domNodes) {\r\n return;\r\n }\r\n const height = Math.max(this.editor.getLayoutInfo().height / 4, 250);\r\n const maxHeight = `${height}px`;\r\n this.domNodes.element.style.maxHeight = maxHeight;\r\n const wrapper = this.domNodes.element.getElementsByClassName('wrapper');\r\n if (wrapper.length) {\r\n wrapper[0].style.maxHeight = maxHeight;\r\n }\r\n }\r\n};\r\nParameterHintsWidget.ID = 'editor.widget.parameterHintsWidget';\r\nParameterHintsWidget = __decorate([\r\n __param(1, IContextKeyService),\r\n __param(2, IOpenerService),\r\n __param(3, IModeService)\r\n], ParameterHintsWidget);\r\nexport { ParameterHintsWidget };\r\nregisterThemingParticipant((theme, collector) => {\r\n const border = theme.getColor(editorHoverBorder);\r\n if (border) {\r\n const borderWidth = theme.type === HIGH_CONTRAST ? 2 : 1;\r\n collector.addRule(`.monaco-editor .parameter-hints-widget { border: ${borderWidth}px solid ${border}; }`);\r\n collector.addRule(`.monaco-editor .parameter-hints-widget.multiple .body { border-left: 1px solid ${border.transparent(0.5)}; }`);\r\n collector.addRule(`.monaco-editor .parameter-hints-widget .signature.has-docs { border-bottom: 1px solid ${border.transparent(0.5)}; }`);\r\n }\r\n const background = theme.getColor(editorHoverBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor .parameter-hints-widget { background-color: ${background}; }`);\r\n }\r\n const link = theme.getColor(textLinkForeground);\r\n if (link) {\r\n collector.addRule(`.monaco-editor .parameter-hints-widget a { color: ${link}; }`);\r\n }\r\n const foreground = theme.getColor(editorHoverForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .parameter-hints-widget { color: ${foreground}; }`);\r\n }\r\n const codeBackground = theme.getColor(textCodeBlockBackground);\r\n if (codeBackground) {\r\n collector.addRule(`.monaco-editor .parameter-hints-widget code { background-color: ${codeBackground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { first } from '../../../base/common/async.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { registerDefaultLanguageCommand } from '../../browser/editorExtensions.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nexport const Context = {\r\n Visible: new RawContextKey('parameterHintsVisible', false),\r\n MultipleSignatures: new RawContextKey('parameterHintsMultipleSignatures', false),\r\n};\r\nexport function provideSignatureHelp(model, position, context, token) {\r\n const supports = modes.SignatureHelpProviderRegistry.ordered(model);\r\n return first(supports.map(support => () => {\r\n return Promise.resolve(support.provideSignatureHelp(model, position, token, context))\r\n .catch(e => onUnexpectedExternalError(e));\r\n }));\r\n}\r\nregisterDefaultLanguageCommand('_executeSignatureHelpProvider', (model, position, args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const result = yield provideSignatureHelp(model, position, {\r\n triggerKind: modes.SignatureHelpTriggerKind.Invoke,\r\n isRetrigger: false,\r\n triggerCharacter: args['triggerCharacter']\r\n }, CancellationToken.None);\r\n if (!result) {\r\n return undefined;\r\n }\r\n setTimeout(() => result.dispose(), 0);\r\n return result.value;\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './media/peekViewWidget.css';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\r\nimport { Action } from '../../../base/common/actions.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { EmbeddedCodeEditorWidget } from '../../browser/widget/embeddedCodeEditorWidget.js';\r\nimport { ZoneWidget } from '../zoneWidget/zoneWidget.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { createDecorator, IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { registerColor, contrastBorder, activeContrastBorder } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nimport { MenuItemAction, SubmenuItemAction } from '../../../platform/actions/common/actions.js';\r\nimport { MenuEntryActionViewItem, SubmenuEntryActionViewItem } from '../../../platform/actions/browser/menuEntryActionViewItem.js';\r\nexport const IPeekViewService = createDecorator('IPeekViewService');\r\nregisterSingleton(IPeekViewService, class {\r\n constructor() {\r\n this._widgets = new Map();\r\n }\r\n addExclusiveWidget(editor, widget) {\r\n const existing = this._widgets.get(editor);\r\n if (existing) {\r\n existing.listener.dispose();\r\n existing.widget.dispose();\r\n }\r\n const remove = () => {\r\n const data = this._widgets.get(editor);\r\n if (data && data.widget === widget) {\r\n data.listener.dispose();\r\n this._widgets.delete(editor);\r\n }\r\n };\r\n this._widgets.set(editor, { widget, listener: widget.onDidClose(remove) });\r\n }\r\n});\r\nexport var PeekContext;\r\n(function (PeekContext) {\r\n PeekContext.inPeekEditor = new RawContextKey('inReferenceSearchEditor', true);\r\n PeekContext.notInPeekEditor = PeekContext.inPeekEditor.toNegated();\r\n})(PeekContext || (PeekContext = {}));\r\nlet PeekContextController = class PeekContextController {\r\n constructor(editor, contextKeyService) {\r\n if (editor instanceof EmbeddedCodeEditorWidget) {\r\n PeekContext.inPeekEditor.bindTo(contextKeyService);\r\n }\r\n }\r\n dispose() { }\r\n};\r\nPeekContextController.ID = 'editor.contrib.referenceController';\r\nPeekContextController = __decorate([\r\n __param(1, IContextKeyService)\r\n], PeekContextController);\r\nregisterEditorContribution(PeekContextController.ID, PeekContextController);\r\nexport function getOuterEditor(accessor) {\r\n let editor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\r\n if (editor instanceof EmbeddedCodeEditorWidget) {\r\n return editor.getParentEditor();\r\n }\r\n return editor;\r\n}\r\nconst defaultOptions = {\r\n headerBackgroundColor: Color.white,\r\n primaryHeadingColor: Color.fromHex('#333333'),\r\n secondaryHeadingColor: Color.fromHex('#6c6c6cb3')\r\n};\r\nlet PeekViewWidget = class PeekViewWidget extends ZoneWidget {\r\n constructor(editor, options, instantiationService) {\r\n super(editor, options);\r\n this.instantiationService = instantiationService;\r\n this._onDidClose = new Emitter();\r\n this.onDidClose = this._onDidClose.event;\r\n objects.mixin(this.options, defaultOptions, false);\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._onDidClose.fire(this);\r\n }\r\n style(styles) {\r\n let options = this.options;\r\n if (styles.headerBackgroundColor) {\r\n options.headerBackgroundColor = styles.headerBackgroundColor;\r\n }\r\n if (styles.primaryHeadingColor) {\r\n options.primaryHeadingColor = styles.primaryHeadingColor;\r\n }\r\n if (styles.secondaryHeadingColor) {\r\n options.secondaryHeadingColor = styles.secondaryHeadingColor;\r\n }\r\n super.style(styles);\r\n }\r\n _applyStyles() {\r\n super._applyStyles();\r\n let options = this.options;\r\n if (this._headElement && options.headerBackgroundColor) {\r\n this._headElement.style.backgroundColor = options.headerBackgroundColor.toString();\r\n }\r\n if (this._primaryHeading && options.primaryHeadingColor) {\r\n this._primaryHeading.style.color = options.primaryHeadingColor.toString();\r\n }\r\n if (this._secondaryHeading && options.secondaryHeadingColor) {\r\n this._secondaryHeading.style.color = options.secondaryHeadingColor.toString();\r\n }\r\n if (this._bodyElement && options.frameColor) {\r\n this._bodyElement.style.borderColor = options.frameColor.toString();\r\n }\r\n }\r\n _fillContainer(container) {\r\n this.setCssClass('peekview-widget');\r\n this._headElement = dom.$('.head');\r\n this._bodyElement = dom.$('.body');\r\n this._fillHead(this._headElement);\r\n this._fillBody(this._bodyElement);\r\n container.appendChild(this._headElement);\r\n container.appendChild(this._bodyElement);\r\n }\r\n _fillHead(container, noCloseAction) {\r\n const titleElement = dom.$('.peekview-title');\r\n dom.append(this._headElement, titleElement);\r\n dom.addStandardDisposableListener(titleElement, 'click', event => this._onTitleClick(event));\r\n this._fillTitleIcon(titleElement);\r\n this._primaryHeading = dom.$('span.filename');\r\n this._secondaryHeading = dom.$('span.dirname');\r\n this._metaHeading = dom.$('span.meta');\r\n dom.append(titleElement, this._primaryHeading, this._secondaryHeading, this._metaHeading);\r\n const actionsContainer = dom.$('.peekview-actions');\r\n dom.append(this._headElement, actionsContainer);\r\n const actionBarOptions = this._getActionBarOptions();\r\n this._actionbarWidget = new ActionBar(actionsContainer, actionBarOptions);\r\n this._disposables.add(this._actionbarWidget);\r\n if (!noCloseAction) {\r\n this._actionbarWidget.push(new Action('peekview.close', nls.localize('label.close', \"Close\"), Codicon.close.classNames, true, () => {\r\n this.dispose();\r\n return Promise.resolve();\r\n }), { label: false, icon: true });\r\n }\r\n }\r\n _fillTitleIcon(container) {\r\n }\r\n _getActionBarOptions() {\r\n return {\r\n actionViewItemProvider: action => {\r\n if (action instanceof MenuItemAction) {\r\n return this.instantiationService.createInstance(MenuEntryActionViewItem, action);\r\n }\r\n else if (action instanceof SubmenuItemAction) {\r\n return this.instantiationService.createInstance(SubmenuEntryActionViewItem, action);\r\n }\r\n return undefined;\r\n }\r\n };\r\n }\r\n _onTitleClick(event) {\r\n // implement me\r\n }\r\n setTitle(primaryHeading, secondaryHeading) {\r\n if (this._primaryHeading && this._secondaryHeading) {\r\n this._primaryHeading.innerText = primaryHeading;\r\n this._primaryHeading.setAttribute('aria-label', primaryHeading);\r\n if (secondaryHeading) {\r\n this._secondaryHeading.innerText = secondaryHeading;\r\n }\r\n else {\r\n dom.clearNode(this._secondaryHeading);\r\n }\r\n }\r\n }\r\n setMetaTitle(value) {\r\n if (this._metaHeading) {\r\n if (value) {\r\n this._metaHeading.innerText = value;\r\n dom.show(this._metaHeading);\r\n }\r\n else {\r\n dom.hide(this._metaHeading);\r\n }\r\n }\r\n }\r\n _doLayout(heightInPixel, widthInPixel) {\r\n if (!this._isShowing && heightInPixel < 0) {\r\n // Looks like the view zone got folded away!\r\n this.dispose();\r\n return;\r\n }\r\n const headHeight = Math.ceil(this.editor.getOption(51 /* lineHeight */) * 1.2);\r\n const bodyHeight = Math.round(heightInPixel - (headHeight + 2 /* the border-top/bottom width*/));\r\n this._doLayoutHead(headHeight, widthInPixel);\r\n this._doLayoutBody(bodyHeight, widthInPixel);\r\n }\r\n _doLayoutHead(heightInPixel, widthInPixel) {\r\n if (this._headElement) {\r\n this._headElement.style.height = `${heightInPixel}px`;\r\n this._headElement.style.lineHeight = this._headElement.style.height;\r\n }\r\n }\r\n _doLayoutBody(heightInPixel, widthInPixel) {\r\n if (this._bodyElement) {\r\n this._bodyElement.style.height = `${heightInPixel}px`;\r\n }\r\n }\r\n};\r\nPeekViewWidget = __decorate([\r\n __param(2, IInstantiationService)\r\n], PeekViewWidget);\r\nexport { PeekViewWidget };\r\nexport const peekViewTitleBackground = registerColor('peekViewTitle.background', { dark: '#1E1E1E', light: '#FFFFFF', hc: '#0C141F' }, nls.localize('peekViewTitleBackground', 'Background color of the peek view title area.'));\r\nexport const peekViewTitleForeground = registerColor('peekViewTitleLabel.foreground', { dark: '#FFFFFF', light: '#333333', hc: '#FFFFFF' }, nls.localize('peekViewTitleForeground', 'Color of the peek view title.'));\r\nexport const peekViewTitleInfoForeground = registerColor('peekViewTitleDescription.foreground', { dark: '#ccccccb3', light: '#616161e6', hc: '#FFFFFF99' }, nls.localize('peekViewTitleInfoForeground', 'Color of the peek view title info.'));\r\nexport const peekViewBorder = registerColor('peekView.border', { dark: '#007acc', light: '#007acc', hc: contrastBorder }, nls.localize('peekViewBorder', 'Color of the peek view borders and arrow.'));\r\nexport const peekViewResultsBackground = registerColor('peekViewResult.background', { dark: '#252526', light: '#F3F3F3', hc: Color.black }, nls.localize('peekViewResultsBackground', 'Background color of the peek view result list.'));\r\nexport const peekViewResultsMatchForeground = registerColor('peekViewResult.lineForeground', { dark: '#bbbbbb', light: '#646465', hc: Color.white }, nls.localize('peekViewResultsMatchForeground', 'Foreground color for line nodes in the peek view result list.'));\r\nexport const peekViewResultsFileForeground = registerColor('peekViewResult.fileForeground', { dark: Color.white, light: '#1E1E1E', hc: Color.white }, nls.localize('peekViewResultsFileForeground', 'Foreground color for file nodes in the peek view result list.'));\r\nexport const peekViewResultsSelectionBackground = registerColor('peekViewResult.selectionBackground', { dark: '#3399ff33', light: '#3399ff33', hc: null }, nls.localize('peekViewResultsSelectionBackground', 'Background color of the selected entry in the peek view result list.'));\r\nexport const peekViewResultsSelectionForeground = registerColor('peekViewResult.selectionForeground', { dark: Color.white, light: '#6C6C6C', hc: Color.white }, nls.localize('peekViewResultsSelectionForeground', 'Foreground color of the selected entry in the peek view result list.'));\r\nexport const peekViewEditorBackground = registerColor('peekViewEditor.background', { dark: '#001F33', light: '#F2F8FC', hc: Color.black }, nls.localize('peekViewEditorBackground', 'Background color of the peek view editor.'));\r\nexport const peekViewEditorGutterBackground = registerColor('peekViewEditorGutter.background', { dark: peekViewEditorBackground, light: peekViewEditorBackground, hc: peekViewEditorBackground }, nls.localize('peekViewEditorGutterBackground', 'Background color of the gutter in the peek view editor.'));\r\nexport const peekViewResultsMatchHighlight = registerColor('peekViewResult.matchHighlightBackground', { dark: '#ea5c004d', light: '#ea5c004d', hc: null }, nls.localize('peekViewResultsMatchHighlight', 'Match highlight color in the peek view result list.'));\r\nexport const peekViewEditorMatchHighlight = registerColor('peekViewEditor.matchHighlightBackground', { dark: '#ff8f0099', light: '#f5d802de', hc: null }, nls.localize('peekViewEditorMatchHighlight', 'Match highlight color in the peek view editor.'));\r\nexport const peekViewEditorMatchHighlightBorder = registerColor('peekViewEditor.matchHighlightBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('peekViewEditorMatchHighlightBorder', 'Match highlight border in the peek view editor.'));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { AbstractCommandsQuickAccessProvider } from '../../../platform/quickinput/browser/commandsQuickAccess.js';\r\nimport { stripCodicons } from '../../../base/common/codicons.js';\r\nexport class AbstractEditorCommandsQuickAccessProvider extends AbstractCommandsQuickAccessProvider {\r\n constructor(options, instantiationService, keybindingService, commandService, telemetryService, notificationService) {\r\n super(options, instantiationService, keybindingService, commandService, telemetryService, notificationService);\r\n }\r\n getCodeEditorCommandPicks() {\r\n const activeTextEditorControl = this.activeTextEditorControl;\r\n if (!activeTextEditorControl) {\r\n return [];\r\n }\r\n const editorCommandPicks = [];\r\n for (const editorAction of activeTextEditorControl.getSupportedActions()) {\r\n editorCommandPicks.push({\r\n commandId: editorAction.id,\r\n commandAlias: editorAction.alias,\r\n label: stripCodicons(editorAction.label) || editorAction.id,\r\n });\r\n }\r\n return editorCommandPicks;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { overviewRulerRangeHighlight } from '../../common/view/editorColorRegistry.js';\r\nimport { DisposableStore, toDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { isDiffEditor, getCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { withNullAsUndefined } from '../../../base/common/types.js';\r\nimport { once } from '../../../base/common/functional.js';\r\n/**\r\n * A reusable quick access provider for the editor with support\r\n * for adding decorations for navigating in the currently active file\r\n * (for example \"Go to line\", \"Go to symbol\").\r\n */\r\nexport class AbstractEditorNavigationQuickAccessProvider {\r\n constructor(options) {\r\n this.options = options;\r\n //#endregion\r\n //#region Decorations Utils\r\n this.rangeHighlightDecorationId = undefined;\r\n }\r\n //#region Provider methods\r\n provide(picker, token) {\r\n var _a;\r\n const disposables = new DisposableStore();\r\n // Apply options if any\r\n picker.canAcceptInBackground = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.canAcceptInBackground);\r\n // Disable filtering & sorting, we control the results\r\n picker.matchOnLabel = picker.matchOnDescription = picker.matchOnDetail = picker.sortByLabel = false;\r\n // Provide based on current active editor\r\n const pickerDisposable = disposables.add(new MutableDisposable());\r\n pickerDisposable.value = this.doProvide(picker, token);\r\n // Re-create whenever the active editor changes\r\n disposables.add(this.onDidActiveTextEditorControlChange(() => {\r\n // Clear old\r\n pickerDisposable.value = undefined;\r\n // Add new\r\n pickerDisposable.value = this.doProvide(picker, token);\r\n }));\r\n return disposables;\r\n }\r\n doProvide(picker, token) {\r\n const disposables = new DisposableStore();\r\n // With text control\r\n const editor = this.activeTextEditorControl;\r\n if (editor && this.canProvideWithTextEditor(editor)) {\r\n // Restore any view state if this picker was closed\r\n // without actually going to a line\r\n const codeEditor = getCodeEditor(editor);\r\n if (codeEditor) {\r\n // Remember view state and update it when the cursor position\r\n // changes even later because it could be that the user has\r\n // configured quick access to remain open when focus is lost and\r\n // we always want to restore the current location.\r\n let lastKnownEditorViewState = withNullAsUndefined(editor.saveViewState());\r\n disposables.add(codeEditor.onDidChangeCursorPosition(() => {\r\n lastKnownEditorViewState = withNullAsUndefined(editor.saveViewState());\r\n }));\r\n disposables.add(once(token.onCancellationRequested)(() => {\r\n if (lastKnownEditorViewState && editor === this.activeTextEditorControl) {\r\n editor.restoreViewState(lastKnownEditorViewState);\r\n }\r\n }));\r\n }\r\n // Clean up decorations on dispose\r\n disposables.add(toDisposable(() => this.clearDecorations(editor)));\r\n // Ask subclass for entries\r\n disposables.add(this.provideWithTextEditor(editor, picker, token));\r\n }\r\n // Without text control\r\n else {\r\n disposables.add(this.provideWithoutTextEditor(picker, token));\r\n }\r\n return disposables;\r\n }\r\n /**\r\n * Subclasses to implement if they can operate on the text editor.\r\n */\r\n canProvideWithTextEditor(editor) {\r\n return true;\r\n }\r\n gotoLocation(editor, options) {\r\n editor.setSelection(options.range);\r\n editor.revealRangeInCenter(options.range, 0 /* Smooth */);\r\n if (!options.preserveFocus) {\r\n editor.focus();\r\n }\r\n }\r\n getModel(editor) {\r\n var _a;\r\n return isDiffEditor(editor) ? (_a = editor.getModel()) === null || _a === void 0 ? void 0 : _a.modified :\r\n editor.getModel();\r\n }\r\n addDecorations(editor, range) {\r\n editor.changeDecorations(changeAccessor => {\r\n // Reset old decorations if any\r\n const deleteDecorations = [];\r\n if (this.rangeHighlightDecorationId) {\r\n deleteDecorations.push(this.rangeHighlightDecorationId.overviewRulerDecorationId);\r\n deleteDecorations.push(this.rangeHighlightDecorationId.rangeHighlightId);\r\n this.rangeHighlightDecorationId = undefined;\r\n }\r\n // Add new decorations for the range\r\n const newDecorations = [\r\n // highlight the entire line on the range\r\n {\r\n range,\r\n options: {\r\n className: 'rangeHighlight',\r\n isWholeLine: true\r\n }\r\n },\r\n // also add overview ruler highlight\r\n {\r\n range,\r\n options: {\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerRangeHighlight),\r\n position: OverviewRulerLane.Full\r\n }\r\n }\r\n }\r\n ];\r\n const [rangeHighlightId, overviewRulerDecorationId] = changeAccessor.deltaDecorations(deleteDecorations, newDecorations);\r\n this.rangeHighlightDecorationId = { rangeHighlightId, overviewRulerDecorationId };\r\n });\r\n }\r\n clearDecorations(editor) {\r\n const rangeHighlightDecorationId = this.rangeHighlightDecorationId;\r\n if (rangeHighlightDecorationId) {\r\n editor.changeDecorations(changeAccessor => {\r\n changeAccessor.deltaDecorations([\r\n rangeHighlightDecorationId.overviewRulerDecorationId,\r\n rangeHighlightDecorationId.rangeHighlightId\r\n ], []);\r\n });\r\n this.rangeHighlightDecorationId = undefined;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { localize } from '../../../nls.js';\r\nimport { DisposableStore, Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { AbstractEditorNavigationQuickAccessProvider } from './editorNavigationQuickAccess.js';\r\nimport { getCodeEditor } from '../../browser/editorBrowser.js';\r\nexport class AbstractGotoLineQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider {\r\n constructor() {\r\n super({ canAcceptInBackground: true });\r\n }\r\n provideWithoutTextEditor(picker) {\r\n const label = localize('cannotRunGotoLine', \"Open a text editor first to go to a line.\");\r\n picker.items = [{ label }];\r\n picker.ariaLabel = label;\r\n return Disposable.None;\r\n }\r\n provideWithTextEditor(editor, picker, token) {\r\n const disposables = new DisposableStore();\r\n // Goto line once picked\r\n disposables.add(picker.onDidAccept(event => {\r\n const [item] = picker.selectedItems;\r\n if (item) {\r\n if (!this.isValidLineNumber(editor, item.lineNumber)) {\r\n return;\r\n }\r\n this.gotoLocation(editor, { range: this.toRange(item.lineNumber, item.column), keyMods: picker.keyMods, preserveFocus: event.inBackground });\r\n if (!event.inBackground) {\r\n picker.hide();\r\n }\r\n }\r\n }));\r\n // React to picker changes\r\n const updatePickerAndEditor = () => {\r\n const position = this.parsePosition(editor, picker.value.trim().substr(AbstractGotoLineQuickAccessProvider.PREFIX.length));\r\n const label = this.getPickLabel(editor, position.lineNumber, position.column);\r\n // Picker\r\n picker.items = [{\r\n lineNumber: position.lineNumber,\r\n column: position.column,\r\n label\r\n }];\r\n // ARIA Label\r\n picker.ariaLabel = label;\r\n // Clear decorations for invalid range\r\n if (!this.isValidLineNumber(editor, position.lineNumber)) {\r\n this.clearDecorations(editor);\r\n return;\r\n }\r\n // Reveal\r\n const range = this.toRange(position.lineNumber, position.column);\r\n editor.revealRangeInCenter(range, 0 /* Smooth */);\r\n // Decorate\r\n this.addDecorations(editor, range);\r\n };\r\n updatePickerAndEditor();\r\n disposables.add(picker.onDidChangeValue(() => updatePickerAndEditor()));\r\n // Adjust line number visibility as needed\r\n const codeEditor = getCodeEditor(editor);\r\n if (codeEditor) {\r\n const options = codeEditor.getOptions();\r\n const lineNumbers = options.get(52 /* lineNumbers */);\r\n if (lineNumbers.renderType === 2 /* Relative */) {\r\n codeEditor.updateOptions({ lineNumbers: 'on' });\r\n disposables.add(toDisposable(() => codeEditor.updateOptions({ lineNumbers: 'relative' })));\r\n }\r\n }\r\n return disposables;\r\n }\r\n toRange(lineNumber = 1, column = 1) {\r\n return {\r\n startLineNumber: lineNumber,\r\n startColumn: column,\r\n endLineNumber: lineNumber,\r\n endColumn: column\r\n };\r\n }\r\n parsePosition(editor, value) {\r\n // Support line-col formats of `line,col`, `line:col`, `line#col`\r\n const numbers = value.split(/,|:|#/).map(part => parseInt(part, 10)).filter(part => !isNaN(part));\r\n const endLine = this.lineCount(editor) + 1;\r\n return {\r\n lineNumber: numbers[0] > 0 ? numbers[0] : endLine + numbers[0],\r\n column: numbers[1]\r\n };\r\n }\r\n getPickLabel(editor, lineNumber, column) {\r\n // Location valid: indicate this as picker label\r\n if (this.isValidLineNumber(editor, lineNumber)) {\r\n if (this.isValidColumn(editor, lineNumber, column)) {\r\n return localize('gotoLineColumnLabel', \"Go to line {0} and column {1}.\", lineNumber, column);\r\n }\r\n return localize('gotoLineLabel', \"Go to line {0}.\", lineNumber);\r\n }\r\n // Location invalid: show generic label\r\n const position = editor.getPosition() || { lineNumber: 1, column: 1 };\r\n const lineCount = this.lineCount(editor);\r\n if (lineCount > 1) {\r\n return localize('gotoLineLabelEmptyWithLimit', \"Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.\", position.lineNumber, position.column, lineCount);\r\n }\r\n return localize('gotoLineLabelEmpty', \"Current Line: {0}, Character: {1}. Type a line number to navigate to.\", position.lineNumber, position.column);\r\n }\r\n isValidLineNumber(editor, lineNumber) {\r\n if (!lineNumber || typeof lineNumber !== 'number') {\r\n return false;\r\n }\r\n return lineNumber > 0 && lineNumber <= this.lineCount(editor);\r\n }\r\n isValidColumn(editor, lineNumber, column) {\r\n if (!column || typeof column !== 'number') {\r\n return false;\r\n }\r\n const model = this.getModel(editor);\r\n if (!model) {\r\n return false;\r\n }\r\n const positionCandidate = { lineNumber, column };\r\n return model.validatePosition(positionCandidate).equals(positionCandidate);\r\n }\r\n lineCount(editor) {\r\n var _a, _b;\r\n return (_b = (_a = this.getModel(editor)) === null || _a === void 0 ? void 0 : _a.getLineCount()) !== null && _b !== void 0 ? _b : 0;\r\n }\r\n}\r\nAbstractGotoLineQuickAccessProvider.PREFIX = ':';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { localize } from '../../../nls.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { DisposableStore, Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { AbstractEditorNavigationQuickAccessProvider } from './editorNavigationQuickAccess.js';\r\nimport { SymbolKinds, DocumentSymbolProviderRegistry } from '../../common/modes.js';\r\nimport { OutlineModel, OutlineElement } from '../documentSymbols/outlineModel.js';\r\nimport { trim, format } from '../../../base/common/strings.js';\r\nimport { prepareQuery, pieceToQuery, scoreFuzzy2 } from '../../../base/common/fuzzyScorer.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport class AbstractGotoSymbolQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider {\r\n constructor(options = Object.create(null)) {\r\n super(options);\r\n this.options = options;\r\n options.canAcceptInBackground = true;\r\n }\r\n provideWithoutTextEditor(picker) {\r\n this.provideLabelPick(picker, localize('cannotRunGotoSymbolWithoutEditor', \"To go to a symbol, first open a text editor with symbol information.\"));\r\n return Disposable.None;\r\n }\r\n provideWithTextEditor(editor, picker, token) {\r\n const model = this.getModel(editor);\r\n if (!model) {\r\n return Disposable.None;\r\n }\r\n // Provide symbols from model if available in registry\r\n if (DocumentSymbolProviderRegistry.has(model)) {\r\n return this.doProvideWithEditorSymbols(editor, model, picker, token);\r\n }\r\n // Otherwise show an entry for a model without registry\r\n // But give a chance to resolve the symbols at a later\r\n // point if possible\r\n return this.doProvideWithoutEditorSymbols(editor, model, picker, token);\r\n }\r\n doProvideWithoutEditorSymbols(editor, model, picker, token) {\r\n const disposables = new DisposableStore();\r\n // Generic pick for not having any symbol information\r\n this.provideLabelPick(picker, localize('cannotRunGotoSymbolWithoutSymbolProvider', \"The active text editor does not provide symbol information.\"));\r\n // Wait for changes to the registry and see if eventually\r\n // we do get symbols. This can happen if the picker is opened\r\n // very early after the model has loaded but before the\r\n // language registry is ready.\r\n // https://github.com/microsoft/vscode/issues/70607\r\n (() => __awaiter(this, void 0, void 0, function* () {\r\n const result = yield this.waitForLanguageSymbolRegistry(model, disposables);\r\n if (!result || token.isCancellationRequested) {\r\n return;\r\n }\r\n disposables.add(this.doProvideWithEditorSymbols(editor, model, picker, token));\r\n }))();\r\n return disposables;\r\n }\r\n provideLabelPick(picker, label) {\r\n picker.items = [{ label, index: 0, kind: 14 /* String */ }];\r\n picker.ariaLabel = label;\r\n }\r\n waitForLanguageSymbolRegistry(model, disposables) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (DocumentSymbolProviderRegistry.has(model)) {\r\n return true;\r\n }\r\n let symbolProviderRegistryPromiseResolve;\r\n const symbolProviderRegistryPromise = new Promise(resolve => symbolProviderRegistryPromiseResolve = resolve);\r\n // Resolve promise when registry knows model\r\n const symbolProviderListener = disposables.add(DocumentSymbolProviderRegistry.onDidChange(() => {\r\n if (DocumentSymbolProviderRegistry.has(model)) {\r\n symbolProviderListener.dispose();\r\n symbolProviderRegistryPromiseResolve(true);\r\n }\r\n }));\r\n // Resolve promise when we get disposed too\r\n disposables.add(toDisposable(() => symbolProviderRegistryPromiseResolve(false)));\r\n return symbolProviderRegistryPromise;\r\n });\r\n }\r\n doProvideWithEditorSymbols(editor, model, picker, token) {\r\n const disposables = new DisposableStore();\r\n // Goto symbol once picked\r\n disposables.add(picker.onDidAccept(event => {\r\n const [item] = picker.selectedItems;\r\n if (item && item.range) {\r\n this.gotoLocation(editor, { range: item.range.selection, keyMods: picker.keyMods, preserveFocus: event.inBackground });\r\n if (!event.inBackground) {\r\n picker.hide();\r\n }\r\n }\r\n }));\r\n // Goto symbol side by side if enabled\r\n disposables.add(picker.onDidTriggerItemButton(({ item }) => {\r\n if (item && item.range) {\r\n this.gotoLocation(editor, { range: item.range.selection, keyMods: picker.keyMods, forceSideBySide: true });\r\n picker.hide();\r\n }\r\n }));\r\n // Resolve symbols from document once and reuse this\r\n // request for all filtering and typing then on\r\n const symbolsPromise = this.getDocumentSymbols(model, true, token);\r\n // Set initial picks and update on type\r\n let picksCts = undefined;\r\n const updatePickerItems = () => __awaiter(this, void 0, void 0, function* () {\r\n // Cancel any previous ask for picks and busy\r\n picksCts === null || picksCts === void 0 ? void 0 : picksCts.dispose(true);\r\n picker.busy = false;\r\n // Create new cancellation source for this run\r\n picksCts = new CancellationTokenSource(token);\r\n // Collect symbol picks\r\n picker.busy = true;\r\n try {\r\n const query = prepareQuery(picker.value.substr(AbstractGotoSymbolQuickAccessProvider.PREFIX.length).trim());\r\n const items = yield this.doGetSymbolPicks(symbolsPromise, query, undefined, picksCts.token);\r\n if (token.isCancellationRequested) {\r\n return;\r\n }\r\n if (items.length > 0) {\r\n picker.items = items;\r\n }\r\n else {\r\n if (query.original.length > 0) {\r\n this.provideLabelPick(picker, localize('noMatchingSymbolResults', \"No matching editor symbols\"));\r\n }\r\n else {\r\n this.provideLabelPick(picker, localize('noSymbolResults', \"No editor symbols\"));\r\n }\r\n }\r\n }\r\n finally {\r\n if (!token.isCancellationRequested) {\r\n picker.busy = false;\r\n }\r\n }\r\n });\r\n disposables.add(picker.onDidChangeValue(() => updatePickerItems()));\r\n updatePickerItems();\r\n // Reveal and decorate when active item changes\r\n // However, ignore the very first event so that\r\n // opening the picker is not immediately revealing\r\n // and decorating the first entry.\r\n let ignoreFirstActiveEvent = true;\r\n disposables.add(picker.onDidChangeActive(() => {\r\n const [item] = picker.activeItems;\r\n if (item && item.range) {\r\n if (ignoreFirstActiveEvent) {\r\n ignoreFirstActiveEvent = false;\r\n return;\r\n }\r\n // Reveal\r\n editor.revealRangeInCenter(item.range.selection, 0 /* Smooth */);\r\n // Decorate\r\n this.addDecorations(editor, item.range.decoration);\r\n }\r\n }));\r\n return disposables;\r\n }\r\n doGetSymbolPicks(symbolsPromise, query, options, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const symbols = yield symbolsPromise;\r\n if (token.isCancellationRequested) {\r\n return [];\r\n }\r\n const filterBySymbolKind = query.original.indexOf(AbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX) === 0;\r\n const filterPos = filterBySymbolKind ? 1 : 0;\r\n // Split between symbol and container query\r\n let symbolQuery;\r\n let containerQuery;\r\n if (query.values && query.values.length > 1) {\r\n symbolQuery = pieceToQuery(query.values[0]); // symbol: only match on first part\r\n containerQuery = pieceToQuery(query.values.slice(1)); // container: match on all but first parts\r\n }\r\n else {\r\n symbolQuery = query;\r\n }\r\n // Convert to symbol picks and apply filtering\r\n const filteredSymbolPicks = [];\r\n for (let index = 0; index < symbols.length; index++) {\r\n const symbol = symbols[index];\r\n const symbolLabel = trim(symbol.name);\r\n const symbolLabelWithIcon = `$(symbol-${SymbolKinds.toString(symbol.kind) || 'property'}) ${symbolLabel}`;\r\n const symbolLabelIconOffset = symbolLabelWithIcon.length - symbolLabel.length;\r\n let containerLabel = symbol.containerName;\r\n if (options === null || options === void 0 ? void 0 : options.extraContainerLabel) {\r\n if (containerLabel) {\r\n containerLabel = `${options.extraContainerLabel} • ${containerLabel}`;\r\n }\r\n else {\r\n containerLabel = options.extraContainerLabel;\r\n }\r\n }\r\n let symbolScore = undefined;\r\n let symbolMatches = undefined;\r\n let containerScore = undefined;\r\n let containerMatches = undefined;\r\n if (query.original.length > filterPos) {\r\n // First: try to score on the entire query, it is possible that\r\n // the symbol matches perfectly (e.g. searching for \"change log\"\r\n // can be a match on a markdown symbol \"change log\"). In that\r\n // case we want to skip the container query altogether.\r\n let skipContainerQuery = false;\r\n if (symbolQuery !== query) {\r\n [symbolScore, symbolMatches] = scoreFuzzy2(symbolLabelWithIcon, Object.assign(Object.assign({}, query), { values: undefined /* disable multi-query support */ }), filterPos, symbolLabelIconOffset);\r\n if (typeof symbolScore === 'number') {\r\n skipContainerQuery = true; // since we consumed the query, skip any container matching\r\n }\r\n }\r\n // Otherwise: score on the symbol query and match on the container later\r\n if (typeof symbolScore !== 'number') {\r\n [symbolScore, symbolMatches] = scoreFuzzy2(symbolLabelWithIcon, symbolQuery, filterPos, symbolLabelIconOffset);\r\n if (typeof symbolScore !== 'number') {\r\n continue;\r\n }\r\n }\r\n // Score by container if specified\r\n if (!skipContainerQuery && containerQuery) {\r\n if (containerLabel && containerQuery.original.length > 0) {\r\n [containerScore, containerMatches] = scoreFuzzy2(containerLabel, containerQuery);\r\n }\r\n if (typeof containerScore !== 'number') {\r\n continue;\r\n }\r\n if (typeof symbolScore === 'number') {\r\n symbolScore += containerScore; // boost symbolScore by containerScore\r\n }\r\n }\r\n }\r\n const deprecated = symbol.tags && symbol.tags.indexOf(1 /* Deprecated */) >= 0;\r\n filteredSymbolPicks.push({\r\n index,\r\n kind: symbol.kind,\r\n score: symbolScore,\r\n label: symbolLabelWithIcon,\r\n ariaLabel: symbolLabel,\r\n description: containerLabel,\r\n highlights: deprecated ? undefined : {\r\n label: symbolMatches,\r\n description: containerMatches\r\n },\r\n range: {\r\n selection: Range.collapseToStart(symbol.selectionRange),\r\n decoration: symbol.range\r\n },\r\n strikethrough: deprecated,\r\n buttons: (() => {\r\n var _a, _b;\r\n const openSideBySideDirection = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.openSideBySideDirection) ? (_b = this.options) === null || _b === void 0 ? void 0 : _b.openSideBySideDirection() : undefined;\r\n if (!openSideBySideDirection) {\r\n return undefined;\r\n }\r\n return [\r\n {\r\n iconClass: openSideBySideDirection === 'right' ? Codicon.splitHorizontal.classNames : Codicon.splitVertical.classNames,\r\n tooltip: openSideBySideDirection === 'right' ? localize('openToSide', \"Open to the Side\") : localize('openToBottom', \"Open to the Bottom\")\r\n }\r\n ];\r\n })()\r\n });\r\n }\r\n // Sort by score\r\n const sortedFilteredSymbolPicks = filteredSymbolPicks.sort((symbolA, symbolB) => filterBySymbolKind ?\r\n this.compareByKindAndScore(symbolA, symbolB) :\r\n this.compareByScore(symbolA, symbolB));\r\n // Add separator for types\r\n // - @ only total number of symbols\r\n // - @: grouped by symbol kind\r\n let symbolPicks = [];\r\n if (filterBySymbolKind) {\r\n let lastSymbolKind = undefined;\r\n let lastSeparator = undefined;\r\n let lastSymbolKindCounter = 0;\r\n function updateLastSeparatorLabel() {\r\n if (lastSeparator && typeof lastSymbolKind === 'number' && lastSymbolKindCounter > 0) {\r\n lastSeparator.label = format(NLS_SYMBOL_KIND_CACHE[lastSymbolKind] || FALLBACK_NLS_SYMBOL_KIND, lastSymbolKindCounter);\r\n }\r\n }\r\n for (const symbolPick of sortedFilteredSymbolPicks) {\r\n // Found new kind\r\n if (lastSymbolKind !== symbolPick.kind) {\r\n // Update last separator with number of symbols we found for kind\r\n updateLastSeparatorLabel();\r\n lastSymbolKind = symbolPick.kind;\r\n lastSymbolKindCounter = 1;\r\n // Add new separator for new kind\r\n lastSeparator = { type: 'separator' };\r\n symbolPicks.push(lastSeparator);\r\n }\r\n // Existing kind, keep counting\r\n else {\r\n lastSymbolKindCounter++;\r\n }\r\n // Add to final result\r\n symbolPicks.push(symbolPick);\r\n }\r\n // Update last separator with number of symbols we found for kind\r\n updateLastSeparatorLabel();\r\n }\r\n else if (sortedFilteredSymbolPicks.length > 0) {\r\n symbolPicks = [\r\n { label: localize('symbols', \"symbols ({0})\", filteredSymbolPicks.length), type: 'separator' },\r\n ...sortedFilteredSymbolPicks\r\n ];\r\n }\r\n return symbolPicks;\r\n });\r\n }\r\n compareByScore(symbolA, symbolB) {\r\n if (typeof symbolA.score !== 'number' && typeof symbolB.score === 'number') {\r\n return 1;\r\n }\r\n else if (typeof symbolA.score === 'number' && typeof symbolB.score !== 'number') {\r\n return -1;\r\n }\r\n if (typeof symbolA.score === 'number' && typeof symbolB.score === 'number') {\r\n if (symbolA.score > symbolB.score) {\r\n return -1;\r\n }\r\n else if (symbolA.score < symbolB.score) {\r\n return 1;\r\n }\r\n }\r\n if (symbolA.index < symbolB.index) {\r\n return -1;\r\n }\r\n else if (symbolA.index > symbolB.index) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n compareByKindAndScore(symbolA, symbolB) {\r\n const kindA = NLS_SYMBOL_KIND_CACHE[symbolA.kind] || FALLBACK_NLS_SYMBOL_KIND;\r\n const kindB = NLS_SYMBOL_KIND_CACHE[symbolB.kind] || FALLBACK_NLS_SYMBOL_KIND;\r\n // Sort by type first if scoped search\r\n const result = kindA.localeCompare(kindB);\r\n if (result === 0) {\r\n return this.compareByScore(symbolA, symbolB);\r\n }\r\n return result;\r\n }\r\n getDocumentSymbols(document, flatten, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = yield OutlineModel.create(document, token);\r\n if (token.isCancellationRequested) {\r\n return [];\r\n }\r\n const roots = [];\r\n for (const child of model.children.values()) {\r\n if (child instanceof OutlineElement) {\r\n roots.push(child.symbol);\r\n }\r\n else {\r\n roots.push(...Iterable.map(child.children.values(), child => child.symbol));\r\n }\r\n }\r\n let flatEntries = [];\r\n if (flatten) {\r\n this.flattenDocumentSymbols(flatEntries, roots, '');\r\n }\r\n else {\r\n flatEntries = roots;\r\n }\r\n return flatEntries.sort((symbolA, symbolB) => Range.compareRangesUsingStarts(symbolA.range, symbolB.range));\r\n });\r\n }\r\n flattenDocumentSymbols(bucket, entries, overrideContainerLabel) {\r\n for (const entry of entries) {\r\n bucket.push({\r\n kind: entry.kind,\r\n tags: entry.tags,\r\n name: entry.name,\r\n detail: entry.detail,\r\n containerName: entry.containerName || overrideContainerLabel,\r\n range: entry.range,\r\n selectionRange: entry.selectionRange,\r\n children: undefined,\r\n });\r\n // Recurse over children\r\n if (entry.children) {\r\n this.flattenDocumentSymbols(bucket, entry.children, entry.name);\r\n }\r\n }\r\n }\r\n}\r\nAbstractGotoSymbolQuickAccessProvider.PREFIX = '@';\r\nAbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX = ':';\r\nAbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY = `${AbstractGotoSymbolQuickAccessProvider.PREFIX}${AbstractGotoSymbolQuickAccessProvider.SCOPE_PREFIX}`;\r\n// #region NLS Helpers\r\nconst FALLBACK_NLS_SYMBOL_KIND = localize('property', \"properties ({0})\");\r\nconst NLS_SYMBOL_KIND_CACHE = {\r\n [5 /* Method */]: localize('method', \"methods ({0})\"),\r\n [11 /* Function */]: localize('function', \"functions ({0})\"),\r\n [8 /* Constructor */]: localize('_constructor', \"constructors ({0})\"),\r\n [12 /* Variable */]: localize('variable', \"variables ({0})\"),\r\n [4 /* Class */]: localize('class', \"classes ({0})\"),\r\n [22 /* Struct */]: localize('struct', \"structs ({0})\"),\r\n [23 /* Event */]: localize('event', \"events ({0})\"),\r\n [24 /* Operator */]: localize('operator', \"operators ({0})\"),\r\n [10 /* Interface */]: localize('interface', \"interfaces ({0})\"),\r\n [2 /* Namespace */]: localize('namespace', \"namespaces ({0})\"),\r\n [3 /* Package */]: localize('package', \"packages ({0})\"),\r\n [25 /* TypeParameter */]: localize('typeParameter', \"type parameters ({0})\"),\r\n [1 /* Module */]: localize('modules', \"modules ({0})\"),\r\n [6 /* Property */]: localize('property', \"properties ({0})\"),\r\n [9 /* Enum */]: localize('enum', \"enumerations ({0})\"),\r\n [21 /* EnumMember */]: localize('enumMember', \"enumeration members ({0})\"),\r\n [14 /* String */]: localize('string', \"strings ({0})\"),\r\n [0 /* File */]: localize('file', \"files ({0})\"),\r\n [17 /* Array */]: localize('array', \"arrays ({0})\"),\r\n [15 /* Number */]: localize('number', \"numbers ({0})\"),\r\n [16 /* Boolean */]: localize('boolean', \"booleans ({0})\"),\r\n [18 /* Object */]: localize('object', \"objects ({0})\"),\r\n [19 /* Key */]: localize('key', \"keys ({0})\"),\r\n [7 /* Field */]: localize('field', \"fields ({0})\"),\r\n [13 /* Constant */]: localize('constant', \"constants ({0})\")\r\n};\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './media/onTypeRename.css';\r\nimport * as nls from '../../../nls.js';\r\nimport { registerEditorContribution, registerModelAndPositionCommand, EditorAction, EditorCommand, registerEditorAction, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { OnTypeRenameProviderRegistry } from '../../common/modes.js';\r\nimport { first, createCancelablePromise, Delayer } from '../../../base/common/async.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { ContextKeyExpr, RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { isPromiseCanceledError, onUnexpectedError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { registerColor } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nexport const CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE = new RawContextKey('onTypeRenameInputVisible', false);\r\nlet OnTypeRenameContribution = class OnTypeRenameContribution extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this._debounceDuration = 200;\r\n this._localToDispose = this._register(new DisposableStore());\r\n this._editor = editor;\r\n this._enabled = false;\r\n this._visibleContextKey = CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\r\n this._currentDecorations = [];\r\n this._languageWordPattern = null;\r\n this._currentWordPattern = null;\r\n this._ignoreChangeEvent = false;\r\n this._localToDispose = this._register(new DisposableStore());\r\n this._rangeUpdateTriggerPromise = null;\r\n this._rangeSyncTriggerPromise = null;\r\n this._currentRequest = null;\r\n this._currentRequestPosition = null;\r\n this._currentRequestModelVersion = null;\r\n this._register(this._editor.onDidChangeModel(() => this.reinitialize()));\r\n this._register(this._editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(73 /* renameOnType */)) {\r\n this.reinitialize();\r\n }\r\n }));\r\n this._register(OnTypeRenameProviderRegistry.onDidChange(() => this.reinitialize()));\r\n this._register(this._editor.onDidChangeModelLanguage(() => this.reinitialize()));\r\n this.reinitialize();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(OnTypeRenameContribution.ID);\r\n }\r\n reinitialize() {\r\n const model = this._editor.getModel();\r\n const isEnabled = model !== null && this._editor.getOption(73 /* renameOnType */) && OnTypeRenameProviderRegistry.has(model);\r\n if (isEnabled === this._enabled) {\r\n return;\r\n }\r\n this._enabled = isEnabled;\r\n this.clearRanges();\r\n this._localToDispose.clear();\r\n if (!isEnabled || model === null) {\r\n return;\r\n }\r\n this._languageWordPattern = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n this._localToDispose.add(model.onDidChangeLanguageConfiguration(() => {\r\n this._languageWordPattern = LanguageConfigurationRegistry.getWordDefinition(model.getLanguageIdentifier().id);\r\n }));\r\n const rangeUpdateScheduler = new Delayer(this._debounceDuration);\r\n const triggerRangeUpdate = () => {\r\n this._rangeUpdateTriggerPromise = rangeUpdateScheduler.trigger(() => this.updateRanges(), this._debounceDuration);\r\n };\r\n const rangeSyncScheduler = new Delayer(0);\r\n const triggerRangeSync = (decorations) => {\r\n this._rangeSyncTriggerPromise = rangeSyncScheduler.trigger(() => this._syncRanges(decorations));\r\n };\r\n this._localToDispose.add(this._editor.onDidChangeCursorPosition(() => {\r\n triggerRangeUpdate();\r\n }));\r\n this._localToDispose.add(this._editor.onDidChangeModelContent((e) => {\r\n if (!this._ignoreChangeEvent) {\r\n if (this._currentDecorations.length > 0) {\r\n const referenceRange = model.getDecorationRange(this._currentDecorations[0]);\r\n if (referenceRange && e.changes.every(c => referenceRange.intersectRanges(c.range))) {\r\n triggerRangeSync(this._currentDecorations);\r\n return;\r\n }\r\n }\r\n }\r\n triggerRangeUpdate();\r\n }));\r\n this._localToDispose.add({\r\n dispose: () => {\r\n rangeUpdateScheduler.cancel();\r\n rangeSyncScheduler.cancel();\r\n }\r\n });\r\n this.updateRanges();\r\n }\r\n _syncRanges(decorations) {\r\n // dalayed invocation, make sure we're still on\r\n if (!this._editor.hasModel() || decorations !== this._currentDecorations || decorations.length === 0) {\r\n // nothing to do\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const referenceRange = model.getDecorationRange(decorations[0]);\r\n if (!referenceRange || referenceRange.startLineNumber !== referenceRange.endLineNumber) {\r\n return this.clearRanges();\r\n }\r\n const referenceValue = model.getValueInRange(referenceRange);\r\n if (this._currentWordPattern) {\r\n const match = referenceValue.match(this._currentWordPattern);\r\n const matchLength = match ? match[0].length : 0;\r\n if (matchLength !== referenceValue.length) {\r\n return this.clearRanges();\r\n }\r\n }\r\n let edits = [];\r\n for (let i = 1, len = decorations.length; i < len; i++) {\r\n const mirrorRange = model.getDecorationRange(decorations[i]);\r\n if (!mirrorRange) {\r\n continue;\r\n }\r\n if (mirrorRange.startLineNumber !== mirrorRange.endLineNumber) {\r\n edits.push({\r\n range: mirrorRange,\r\n text: referenceValue\r\n });\r\n }\r\n else {\r\n let oldValue = model.getValueInRange(mirrorRange);\r\n let newValue = referenceValue;\r\n let rangeStartColumn = mirrorRange.startColumn;\r\n let rangeEndColumn = mirrorRange.endColumn;\r\n const commonPrefixLength = strings.commonPrefixLength(oldValue, newValue);\r\n rangeStartColumn += commonPrefixLength;\r\n oldValue = oldValue.substr(commonPrefixLength);\r\n newValue = newValue.substr(commonPrefixLength);\r\n const commonSuffixLength = strings.commonSuffixLength(oldValue, newValue);\r\n rangeEndColumn -= commonSuffixLength;\r\n oldValue = oldValue.substr(0, oldValue.length - commonSuffixLength);\r\n newValue = newValue.substr(0, newValue.length - commonSuffixLength);\r\n if (rangeStartColumn !== rangeEndColumn || newValue.length !== 0) {\r\n edits.push({\r\n range: new Range(mirrorRange.startLineNumber, rangeStartColumn, mirrorRange.endLineNumber, rangeEndColumn),\r\n text: newValue\r\n });\r\n }\r\n }\r\n }\r\n if (edits.length === 0) {\r\n return;\r\n }\r\n try {\r\n this._ignoreChangeEvent = true;\r\n const prevEditOperationType = this._editor._getViewModel().getPrevEditOperationType();\r\n this._editor.executeEdits('onTypeRename', edits);\r\n this._editor._getViewModel().setPrevEditOperationType(prevEditOperationType);\r\n }\r\n finally {\r\n this._ignoreChangeEvent = false;\r\n }\r\n }\r\n dispose() {\r\n this.clearRanges();\r\n super.dispose();\r\n }\r\n clearRanges() {\r\n this._visibleContextKey.set(false);\r\n this._currentDecorations = this._editor.deltaDecorations(this._currentDecorations, []);\r\n if (this._currentRequest) {\r\n this._currentRequest.cancel();\r\n this._currentRequest = null;\r\n this._currentRequestPosition = null;\r\n }\r\n }\r\n updateRanges(force = false) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._editor.hasModel()) {\r\n this.clearRanges();\r\n return;\r\n }\r\n const position = this._editor.getPosition();\r\n if (!this._enabled && !force || this._editor.getSelections().length > 1) {\r\n // disabled or multicursor\r\n this.clearRanges();\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const modelVersionId = model.getVersionId();\r\n if (this._currentRequestPosition && this._currentRequestModelVersion === modelVersionId) {\r\n if (position.equals(this._currentRequestPosition)) {\r\n return; // same position\r\n }\r\n if (this._currentDecorations && this._currentDecorations.length > 0) {\r\n const range = model.getDecorationRange(this._currentDecorations[0]);\r\n if (range && range.containsPosition(position)) {\r\n return; // just moving inside the existing primary range\r\n }\r\n }\r\n }\r\n this._currentRequestPosition = position;\r\n this._currentRequestModelVersion = modelVersionId;\r\n const request = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n const response = yield getOnTypeRenameRanges(model, position, token);\r\n if (request !== this._currentRequest) {\r\n return;\r\n }\r\n this._currentRequest = null;\r\n if (modelVersionId !== model.getVersionId()) {\r\n return;\r\n }\r\n let ranges = [];\r\n if (response === null || response === void 0 ? void 0 : response.ranges) {\r\n ranges = response.ranges;\r\n }\r\n this._currentWordPattern = (response === null || response === void 0 ? void 0 : response.wordPattern) || this._languageWordPattern;\r\n let foundReferenceRange = false;\r\n for (let i = 0, len = ranges.length; i < len; i++) {\r\n if (Range.containsPosition(ranges[i], position)) {\r\n foundReferenceRange = true;\r\n if (i !== 0) {\r\n const referenceRange = ranges[i];\r\n ranges.splice(i, 1);\r\n ranges.unshift(referenceRange);\r\n }\r\n break;\r\n }\r\n }\r\n if (!foundReferenceRange) {\r\n // Cannot do on type rename if the ranges are not where the cursor is...\r\n this.clearRanges();\r\n return;\r\n }\r\n const decorations = ranges.map(range => ({ range: range, options: OnTypeRenameContribution.DECORATION }));\r\n this._visibleContextKey.set(true);\r\n this._currentDecorations = this._editor.deltaDecorations(this._currentDecorations, decorations);\r\n }\r\n catch (err) {\r\n if (!isPromiseCanceledError(err)) {\r\n onUnexpectedError(err);\r\n }\r\n if (this._currentRequest === request || !this._currentRequest) {\r\n // stop if we are still the latest request\r\n this.clearRanges();\r\n }\r\n }\r\n }));\r\n this._currentRequest = request;\r\n return request;\r\n });\r\n }\r\n};\r\nOnTypeRenameContribution.ID = 'editor.contrib.onTypeRename';\r\nOnTypeRenameContribution.DECORATION = ModelDecorationOptions.register({\r\n stickiness: 0 /* AlwaysGrowsWhenTypingAtEdges */,\r\n className: 'on-type-rename-decoration'\r\n});\r\nOnTypeRenameContribution = __decorate([\r\n __param(1, IContextKeyService)\r\n], OnTypeRenameContribution);\r\nexport { OnTypeRenameContribution };\r\nexport class OnTypeRenameAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.onTypeRename',\r\n label: nls.localize('onTypeRename.label', \"On Type Rename Symbol\"),\r\n alias: 'On Type Rename Symbol',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 60 /* F2 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n runCommand(accessor, args) {\r\n const editorService = accessor.get(ICodeEditorService);\r\n const [uri, pos] = Array.isArray(args) && args || [undefined, undefined];\r\n if (URI.isUri(uri) && Position.isIPosition(pos)) {\r\n return editorService.openCodeEditor({ resource: uri }, editorService.getActiveCodeEditor()).then(editor => {\r\n if (!editor) {\r\n return;\r\n }\r\n editor.setPosition(pos);\r\n editor.invokeWithinContext(accessor => {\r\n this.reportTelemetry(accessor, editor);\r\n return this.run(accessor, editor);\r\n });\r\n }, onUnexpectedError);\r\n }\r\n return super.runCommand(accessor, args);\r\n }\r\n run(_accessor, editor) {\r\n const controller = OnTypeRenameContribution.get(editor);\r\n if (controller) {\r\n return Promise.resolve(controller.updateRanges(true));\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nconst OnTypeRenameCommand = EditorCommand.bindToContribution(OnTypeRenameContribution.get);\r\nregisterEditorCommand(new OnTypeRenameCommand({\r\n id: 'cancelOnTypeRenameInput',\r\n precondition: CONTEXT_ONTYPE_RENAME_INPUT_VISIBLE,\r\n handler: x => x.clearRanges(),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n weight: 100 /* EditorContrib */ + 99,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nexport function getOnTypeRenameRanges(model, position, token) {\r\n const orderedByScore = OnTypeRenameProviderRegistry.ordered(model);\r\n // in order of score ask the occurrences provider\r\n // until someone response with a good result\r\n // (good = none empty array)\r\n return first(orderedByScore.map(provider => () => {\r\n return Promise.resolve(provider.provideOnTypeRenameRanges(model, position, token)).then((res) => {\r\n if (!res) {\r\n return undefined;\r\n }\r\n return {\r\n ranges: res.ranges,\r\n wordPattern: res.wordPattern || provider.wordPattern\r\n };\r\n }, (err) => {\r\n onUnexpectedExternalError(err);\r\n return undefined;\r\n });\r\n }), result => !!result && arrays.isNonEmptyArray(result === null || result === void 0 ? void 0 : result.ranges));\r\n}\r\nexport const editorOnTypeRenameBackground = registerColor('editor.onTypeRenameBackground', { dark: Color.fromHex('#f00').transparent(0.3), light: Color.fromHex('#f00').transparent(0.3), hc: Color.fromHex('#f00').transparent(0.3) }, nls.localize('editorOnTypeRenameBackground', 'Background color when the editor auto renames on type.'));\r\nregisterThemingParticipant((theme, collector) => {\r\n const editorOnTypeRenameBackgroundColor = theme.getColor(editorOnTypeRenameBackground);\r\n if (editorOnTypeRenameBackgroundColor) {\r\n collector.addRule(`.monaco-editor .on-type-rename-decoration { background: ${editorOnTypeRenameBackgroundColor}; border-left-color: ${editorOnTypeRenameBackgroundColor}; }`);\r\n }\r\n});\r\nregisterModelAndPositionCommand('_executeRenameOnTypeProvider', (model, position) => getOnTypeRenameRanges(model, position, CancellationToken.None));\r\nregisterEditorContribution(OnTypeRenameContribution.ID, OnTypeRenameContribution);\r\nregisterEditorAction(OnTypeRenameAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { registerEditorAction, registerEditorContribution, EditorAction, EditorCommand, registerEditorCommand, registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { RenameInputField, CONTEXT_RENAME_INPUT_VISIBLE } from './renameInputField.js';\r\nimport { RenameProviderRegistry } from '../../common/modes.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { MessageController } from '../message/messageController.js';\r\nimport { EditorStateCancellationTokenSource } from '../../browser/core/editorState.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IBulkEditService, ResourceEdit } from '../../browser/services/bulkEditService.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { CancellationToken, CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { IdleValue, raceCancellation } from '../../../base/common/async.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../platform/configuration/common/configurationRegistry.js';\r\nimport { ITextResourceConfigurationService } from '../../common/services/textResourceConfigurationService.js';\r\nimport { assertType } from '../../../base/common/types.js';\r\nclass RenameSkeleton {\r\n constructor(model, position) {\r\n this.model = model;\r\n this.position = position;\r\n this._providerRenameIdx = 0;\r\n this._providers = RenameProviderRegistry.ordered(model);\r\n }\r\n hasProvider() {\r\n return this._providers.length > 0;\r\n }\r\n resolveRenameLocation(token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const rejects = [];\r\n for (this._providerRenameIdx = 0; this._providerRenameIdx < this._providers.length; this._providerRenameIdx++) {\r\n const provider = this._providers[this._providerRenameIdx];\r\n if (!provider.resolveRenameLocation) {\r\n break;\r\n }\r\n let res = yield provider.resolveRenameLocation(this.model, this.position, token);\r\n if (!res) {\r\n continue;\r\n }\r\n if (res.rejectReason) {\r\n rejects.push(res.rejectReason);\r\n continue;\r\n }\r\n return res;\r\n }\r\n const word = this.model.getWordAtPosition(this.position);\r\n if (!word) {\r\n return {\r\n range: Range.fromPositions(this.position),\r\n text: '',\r\n rejectReason: rejects.length > 0 ? rejects.join('\\n') : undefined\r\n };\r\n }\r\n return {\r\n range: new Range(this.position.lineNumber, word.startColumn, this.position.lineNumber, word.endColumn),\r\n text: word.word,\r\n rejectReason: rejects.length > 0 ? rejects.join('\\n') : undefined\r\n };\r\n });\r\n }\r\n provideRenameEdits(newName, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return this._provideRenameEdits(newName, this._providerRenameIdx, [], token);\r\n });\r\n }\r\n _provideRenameEdits(newName, i, rejects, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const provider = this._providers[i];\r\n if (!provider) {\r\n return {\r\n edits: [],\r\n rejectReason: rejects.join('\\n')\r\n };\r\n }\r\n const result = yield provider.provideRenameEdits(this.model, this.position, newName, token);\r\n if (!result) {\r\n return this._provideRenameEdits(newName, i + 1, rejects.concat(nls.localize('no result', \"No result.\")), token);\r\n }\r\n else if (result.rejectReason) {\r\n return this._provideRenameEdits(newName, i + 1, rejects.concat(result.rejectReason), token);\r\n }\r\n return result;\r\n });\r\n }\r\n}\r\nexport function rename(model, position, newName) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const skeleton = new RenameSkeleton(model, position);\r\n const loc = yield skeleton.resolveRenameLocation(CancellationToken.None);\r\n if (loc === null || loc === void 0 ? void 0 : loc.rejectReason) {\r\n return { edits: [], rejectReason: loc.rejectReason };\r\n }\r\n return skeleton.provideRenameEdits(newName, CancellationToken.None);\r\n });\r\n}\r\n// --- register actions and commands\r\nlet RenameController = class RenameController {\r\n constructor(editor, _instaService, _notificationService, _bulkEditService, _progressService, _logService, _configService) {\r\n this.editor = editor;\r\n this._instaService = _instaService;\r\n this._notificationService = _notificationService;\r\n this._bulkEditService = _bulkEditService;\r\n this._progressService = _progressService;\r\n this._logService = _logService;\r\n this._configService = _configService;\r\n this._dispoableStore = new DisposableStore();\r\n this._cts = new CancellationTokenSource();\r\n this._renameInputField = this._dispoableStore.add(new IdleValue(() => this._dispoableStore.add(this._instaService.createInstance(RenameInputField, this.editor, ['acceptRenameInput', 'acceptRenameInputWithPreview']))));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(RenameController.ID);\r\n }\r\n dispose() {\r\n this._dispoableStore.dispose();\r\n this._cts.dispose(true);\r\n }\r\n run() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this._cts.dispose(true);\r\n if (!this.editor.hasModel()) {\r\n return undefined;\r\n }\r\n const position = this.editor.getPosition();\r\n const skeleton = new RenameSkeleton(this.editor.getModel(), position);\r\n if (!skeleton.hasProvider()) {\r\n return undefined;\r\n }\r\n this._cts = new EditorStateCancellationTokenSource(this.editor, 4 /* Position */ | 1 /* Value */);\r\n // resolve rename location\r\n let loc;\r\n try {\r\n const resolveLocationOperation = skeleton.resolveRenameLocation(this._cts.token);\r\n this._progressService.showWhile(resolveLocationOperation, 250);\r\n loc = yield resolveLocationOperation;\r\n }\r\n catch (e) {\r\n MessageController.get(this.editor).showMessage(e || nls.localize('resolveRenameLocationFailed', \"An unknown error occurred while resolving rename location\"), position);\r\n return undefined;\r\n }\r\n if (!loc) {\r\n return undefined;\r\n }\r\n if (loc.rejectReason) {\r\n MessageController.get(this.editor).showMessage(loc.rejectReason, position);\r\n return undefined;\r\n }\r\n if (this._cts.token.isCancellationRequested) {\r\n return undefined;\r\n }\r\n this._cts.dispose();\r\n this._cts = new EditorStateCancellationTokenSource(this.editor, 4 /* Position */ | 1 /* Value */, loc.range);\r\n // do rename at location\r\n let selection = this.editor.getSelection();\r\n let selectionStart = 0;\r\n let selectionEnd = loc.text.length;\r\n if (!Range.isEmpty(selection) && !Range.spansMultipleLines(selection) && Range.containsRange(loc.range, selection)) {\r\n selectionStart = Math.max(0, selection.startColumn - loc.range.startColumn);\r\n selectionEnd = Math.min(loc.range.endColumn, selection.endColumn) - loc.range.startColumn;\r\n }\r\n const supportPreview = this._bulkEditService.hasPreviewHandler() && this._configService.getValue(this.editor.getModel().uri, 'editor.rename.enablePreview');\r\n const inputFieldResult = yield this._renameInputField.value.getInput(loc.range, loc.text, selectionStart, selectionEnd, supportPreview, this._cts.token);\r\n // no result, only hint to focus the editor or not\r\n if (typeof inputFieldResult === 'boolean') {\r\n if (inputFieldResult) {\r\n this.editor.focus();\r\n }\r\n return undefined;\r\n }\r\n this.editor.focus();\r\n const renameOperation = raceCancellation(skeleton.provideRenameEdits(inputFieldResult.newName, this._cts.token), this._cts.token).then((renameResult) => __awaiter(this, void 0, void 0, function* () {\r\n if (!renameResult || !this.editor.hasModel()) {\r\n return;\r\n }\r\n if (renameResult.rejectReason) {\r\n this._notificationService.info(renameResult.rejectReason);\r\n return;\r\n }\r\n this._bulkEditService.apply(ResourceEdit.convert(renameResult), {\r\n editor: this.editor,\r\n showPreview: inputFieldResult.wantsPreview,\r\n label: nls.localize('label', \"Renaming '{0}'\", loc === null || loc === void 0 ? void 0 : loc.text),\r\n quotableLabel: nls.localize('quotableLabel', \"Renaming {0}\", loc === null || loc === void 0 ? void 0 : loc.text),\r\n }).then(result => {\r\n if (result.ariaSummary) {\r\n alert(nls.localize('aria', \"Successfully renamed '{0}' to '{1}'. Summary: {2}\", loc.text, inputFieldResult.newName, result.ariaSummary));\r\n }\r\n }).catch(err => {\r\n this._notificationService.error(nls.localize('rename.failedApply', \"Rename failed to apply edits\"));\r\n this._logService.error(err);\r\n });\r\n }), err => {\r\n this._notificationService.error(nls.localize('rename.failed', \"Rename failed to compute edits\"));\r\n this._logService.error(err);\r\n });\r\n this._progressService.showWhile(renameOperation, 250);\r\n return renameOperation;\r\n });\r\n }\r\n acceptRenameInput(wantsPreview) {\r\n this._renameInputField.value.acceptInput(wantsPreview);\r\n }\r\n cancelRenameInput() {\r\n this._renameInputField.value.cancelInput(true);\r\n }\r\n};\r\nRenameController.ID = 'editor.contrib.renameController';\r\nRenameController = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, INotificationService),\r\n __param(3, IBulkEditService),\r\n __param(4, IEditorProgressService),\r\n __param(5, ILogService),\r\n __param(6, ITextResourceConfigurationService)\r\n], RenameController);\r\n// ---- action implementation\r\nexport class RenameAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.rename',\r\n label: nls.localize('rename.label', \"Rename Symbol\"),\r\n alias: 'Rename Symbol',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 60 /* F2 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: '1_modification',\r\n order: 1.1\r\n }\r\n });\r\n }\r\n runCommand(accessor, args) {\r\n const editorService = accessor.get(ICodeEditorService);\r\n const [uri, pos] = Array.isArray(args) && args || [undefined, undefined];\r\n if (URI.isUri(uri) && Position.isIPosition(pos)) {\r\n return editorService.openCodeEditor({ resource: uri }, editorService.getActiveCodeEditor()).then(editor => {\r\n if (!editor) {\r\n return;\r\n }\r\n editor.setPosition(pos);\r\n editor.invokeWithinContext(accessor => {\r\n this.reportTelemetry(accessor, editor);\r\n return this.run(accessor, editor);\r\n });\r\n }, onUnexpectedError);\r\n }\r\n return super.runCommand(accessor, args);\r\n }\r\n run(accessor, editor) {\r\n const controller = RenameController.get(editor);\r\n if (controller) {\r\n return controller.run();\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nregisterEditorContribution(RenameController.ID, RenameController);\r\nregisterEditorAction(RenameAction);\r\nconst RenameCommand = EditorCommand.bindToContribution(RenameController.get);\r\nregisterEditorCommand(new RenameCommand({\r\n id: 'acceptRenameInput',\r\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\r\n handler: x => x.acceptRenameInput(false),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 99,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 3 /* Enter */\r\n }\r\n}));\r\nregisterEditorCommand(new RenameCommand({\r\n id: 'acceptRenameInputWithPreview',\r\n precondition: ContextKeyExpr.and(CONTEXT_RENAME_INPUT_VISIBLE, ContextKeyExpr.has('config.editor.rename.enablePreview')),\r\n handler: x => x.acceptRenameInput(true),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 99,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 1024 /* Shift */ + 3 /* Enter */\r\n }\r\n}));\r\nregisterEditorCommand(new RenameCommand({\r\n id: 'cancelRenameInput',\r\n precondition: CONTEXT_RENAME_INPUT_VISIBLE,\r\n handler: x => x.cancelRenameInput(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 99,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\n// ---- api bridge command\r\nregisterModelAndPositionCommand('_executeDocumentRenameProvider', function (model, position, ...args) {\r\n const [newName] = args;\r\n assertType(typeof newName === 'string');\r\n return rename(model, position, newName);\r\n});\r\n//todo@joh use editor options world\r\nRegistry.as(Extensions.Configuration).registerConfiguration({\r\n id: 'editor',\r\n properties: {\r\n 'editor.rename.enablePreview': {\r\n scope: 5 /* LANGUAGE_OVERRIDABLE */,\r\n description: nls.localize('enablePreview', \"Enable/disable the ability to preview changes before renaming\"),\r\n default: true,\r\n type: 'boolean'\r\n }\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './renameInputField.css';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { inputBackground, inputBorder, inputForeground, widgetShadow, editorWidgetBackground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nexport const CONTEXT_RENAME_INPUT_VISIBLE = new RawContextKey('renameInputVisible', false);\r\nlet RenameInputField = class RenameInputField {\r\n constructor(_editor, _acceptKeybindings, _themeService, _keybindingService, contextKeyService) {\r\n this._editor = _editor;\r\n this._acceptKeybindings = _acceptKeybindings;\r\n this._themeService = _themeService;\r\n this._keybindingService = _keybindingService;\r\n this._disposables = new DisposableStore();\r\n this.allowEditorOverflow = true;\r\n this._visibleContextKey = CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService);\r\n this._editor.addContentWidget(this);\r\n this._disposables.add(this._editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(36 /* fontInfo */)) {\r\n this._updateFont();\r\n }\r\n }));\r\n this._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles, this));\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._editor.removeContentWidget(this);\r\n }\r\n getId() {\r\n return '__renameInputWidget';\r\n }\r\n getDomNode() {\r\n if (!this._domNode) {\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'monaco-editor rename-box';\r\n this._input = document.createElement('input');\r\n this._input.className = 'rename-input';\r\n this._input.type = 'text';\r\n this._input.setAttribute('aria-label', localize('renameAriaLabel', \"Rename input. Type new name and press Enter to commit.\"));\r\n this._domNode.appendChild(this._input);\r\n this._label = document.createElement('div');\r\n this._label.className = 'rename-label';\r\n this._domNode.appendChild(this._label);\r\n const updateLabel = () => {\r\n var _a, _b;\r\n const [accept, preview] = this._acceptKeybindings;\r\n this._keybindingService.lookupKeybinding(accept);\r\n this._label.innerText = localize({ key: 'label', comment: ['placeholders are keybindings, e.g \"F2 to Rename, Shift+F2 to Preview\"'] }, \"{0} to Rename, {1} to Preview\", (_a = this._keybindingService.lookupKeybinding(accept)) === null || _a === void 0 ? void 0 : _a.getLabel(), (_b = this._keybindingService.lookupKeybinding(preview)) === null || _b === void 0 ? void 0 : _b.getLabel());\r\n };\r\n updateLabel();\r\n this._disposables.add(this._keybindingService.onDidUpdateKeybindings(updateLabel));\r\n this._updateFont();\r\n this._updateStyles(this._themeService.getColorTheme());\r\n }\r\n return this._domNode;\r\n }\r\n _updateStyles(theme) {\r\n var _a, _b, _c, _d;\r\n if (!this._input || !this._domNode) {\r\n return;\r\n }\r\n const widgetShadowColor = theme.getColor(widgetShadow);\r\n this._domNode.style.backgroundColor = String((_a = theme.getColor(editorWidgetBackground)) !== null && _a !== void 0 ? _a : '');\r\n this._domNode.style.boxShadow = widgetShadowColor ? ` 0 2px 8px ${widgetShadowColor}` : '';\r\n this._domNode.style.color = String((_b = theme.getColor(inputForeground)) !== null && _b !== void 0 ? _b : '');\r\n this._input.style.backgroundColor = String((_c = theme.getColor(inputBackground)) !== null && _c !== void 0 ? _c : '');\r\n // this._input.style.color = String(theme.getColor(inputForeground) ?? '');\r\n const border = theme.getColor(inputBorder);\r\n this._input.style.borderWidth = border ? '1px' : '0px';\r\n this._input.style.borderStyle = border ? 'solid' : 'none';\r\n this._input.style.borderColor = (_d = border === null || border === void 0 ? void 0 : border.toString()) !== null && _d !== void 0 ? _d : 'none';\r\n }\r\n _updateFont() {\r\n if (!this._input || !this._label) {\r\n return;\r\n }\r\n const fontInfo = this._editor.getOption(36 /* fontInfo */);\r\n this._input.style.fontFamily = fontInfo.fontFamily;\r\n this._input.style.fontWeight = fontInfo.fontWeight;\r\n this._input.style.fontSize = `${fontInfo.fontSize}px`;\r\n this._label.style.fontSize = `${fontInfo.fontSize * 0.8}px`;\r\n }\r\n getPosition() {\r\n if (!this._visible) {\r\n return null;\r\n }\r\n return {\r\n position: this._position,\r\n preference: [2 /* BELOW */, 1 /* ABOVE */]\r\n };\r\n }\r\n acceptInput(wantsPreview) {\r\n if (this._currentAcceptInput) {\r\n this._currentAcceptInput(wantsPreview);\r\n }\r\n }\r\n cancelInput(focusEditor) {\r\n if (this._currentCancelInput) {\r\n this._currentCancelInput(focusEditor);\r\n }\r\n }\r\n getInput(where, value, selectionStart, selectionEnd, supportPreview, token) {\r\n this._domNode.classList.toggle('preview', supportPreview);\r\n this._position = new Position(where.startLineNumber, where.startColumn);\r\n this._input.value = value;\r\n this._input.setAttribute('selectionStart', selectionStart.toString());\r\n this._input.setAttribute('selectionEnd', selectionEnd.toString());\r\n this._input.size = Math.max((where.endColumn - where.startColumn) * 1.1, 20);\r\n const disposeOnDone = new DisposableStore();\r\n return new Promise(resolve => {\r\n this._currentCancelInput = (focusEditor) => {\r\n this._currentAcceptInput = undefined;\r\n this._currentCancelInput = undefined;\r\n resolve(focusEditor);\r\n return true;\r\n };\r\n this._currentAcceptInput = (wantsPreview) => {\r\n if (this._input.value.trim().length === 0 || this._input.value === value) {\r\n // empty or whitespace only or not changed\r\n this.cancelInput(true);\r\n return;\r\n }\r\n this._currentAcceptInput = undefined;\r\n this._currentCancelInput = undefined;\r\n resolve({\r\n newName: this._input.value,\r\n wantsPreview: supportPreview && wantsPreview\r\n });\r\n };\r\n token.onCancellationRequested(() => this.cancelInput(true));\r\n disposeOnDone.add(this._editor.onDidBlurEditorWidget(() => this.cancelInput(false)));\r\n this._show();\r\n }).finally(() => {\r\n disposeOnDone.dispose();\r\n this._hide();\r\n });\r\n }\r\n _show() {\r\n this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber, 0 /* Smooth */);\r\n this._visible = true;\r\n this._visibleContextKey.set(true);\r\n this._editor.layoutContentWidget(this);\r\n setTimeout(() => {\r\n this._input.focus();\r\n this._input.setSelectionRange(parseInt(this._input.getAttribute('selectionStart')), parseInt(this._input.getAttribute('selectionEnd')));\r\n }, 100);\r\n }\r\n _hide() {\r\n this._visible = false;\r\n this._visibleContextKey.reset();\r\n this._editor.layoutContentWidget(this);\r\n }\r\n};\r\nRenameInputField = __decorate([\r\n __param(2, IThemeService),\r\n __param(3, IKeybindingService),\r\n __param(4, IContextKeyService)\r\n], RenameInputField);\r\nexport { RenameInputField };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nexport class BracketSelectionRangeProvider {\r\n provideSelectionRanges(model, positions) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const result = [];\r\n for (const position of positions) {\r\n const bucket = [];\r\n result.push(bucket);\r\n const ranges = new Map();\r\n yield new Promise(resolve => BracketSelectionRangeProvider._bracketsRightYield(resolve, 0, model, position, ranges));\r\n yield new Promise(resolve => BracketSelectionRangeProvider._bracketsLeftYield(resolve, 0, model, position, ranges, bucket));\r\n }\r\n return result;\r\n });\r\n }\r\n static _bracketsRightYield(resolve, round, model, pos, ranges) {\r\n const counts = new Map();\r\n const t1 = Date.now();\r\n while (true) {\r\n if (round >= BracketSelectionRangeProvider._maxRounds) {\r\n resolve();\r\n break;\r\n }\r\n if (!pos) {\r\n resolve();\r\n break;\r\n }\r\n let bracket = model.findNextBracket(pos);\r\n if (!bracket) {\r\n resolve();\r\n break;\r\n }\r\n let d = Date.now() - t1;\r\n if (d > BracketSelectionRangeProvider._maxDuration) {\r\n setTimeout(() => BracketSelectionRangeProvider._bracketsRightYield(resolve, round + 1, model, pos, ranges));\r\n break;\r\n }\r\n const key = bracket.close[0];\r\n if (bracket.isOpen) {\r\n // wait for closing\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n counts.set(key, val + 1);\r\n }\r\n else {\r\n // process closing\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n val -= 1;\r\n counts.set(key, Math.max(0, val));\r\n if (val < 0) {\r\n let list = ranges.get(key);\r\n if (!list) {\r\n list = new LinkedList();\r\n ranges.set(key, list);\r\n }\r\n list.push(bracket.range);\r\n }\r\n }\r\n pos = bracket.range.getEndPosition();\r\n }\r\n }\r\n static _bracketsLeftYield(resolve, round, model, pos, ranges, bucket) {\r\n const counts = new Map();\r\n const t1 = Date.now();\r\n while (true) {\r\n if (round >= BracketSelectionRangeProvider._maxRounds && ranges.size === 0) {\r\n resolve();\r\n break;\r\n }\r\n if (!pos) {\r\n resolve();\r\n break;\r\n }\r\n let bracket = model.findPrevBracket(pos);\r\n if (!bracket) {\r\n resolve();\r\n break;\r\n }\r\n let d = Date.now() - t1;\r\n if (d > BracketSelectionRangeProvider._maxDuration) {\r\n setTimeout(() => BracketSelectionRangeProvider._bracketsLeftYield(resolve, round + 1, model, pos, ranges, bucket));\r\n break;\r\n }\r\n const key = bracket.close[0];\r\n if (!bracket.isOpen) {\r\n // wait for opening\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n counts.set(key, val + 1);\r\n }\r\n else {\r\n // opening\r\n let val = counts.has(key) ? counts.get(key) : 0;\r\n val -= 1;\r\n counts.set(key, Math.max(0, val));\r\n if (val < 0) {\r\n let list = ranges.get(key);\r\n if (list) {\r\n let closing = list.shift();\r\n if (list.size === 0) {\r\n ranges.delete(key);\r\n }\r\n const innerBracket = Range.fromPositions(bracket.range.getEndPosition(), closing.getStartPosition());\r\n const outerBracket = Range.fromPositions(bracket.range.getStartPosition(), closing.getEndPosition());\r\n bucket.push({ range: innerBracket });\r\n bucket.push({ range: outerBracket });\r\n BracketSelectionRangeProvider._addBracketLeading(model, outerBracket, bucket);\r\n }\r\n }\r\n }\r\n pos = bracket.range.getStartPosition();\r\n }\r\n }\r\n static _addBracketLeading(model, bracket, bucket) {\r\n if (bracket.startLineNumber === bracket.endLineNumber) {\r\n return;\r\n }\r\n // xxxxxxxx {\r\n //\r\n // }\r\n const startLine = bracket.startLineNumber;\r\n const column = model.getLineFirstNonWhitespaceColumn(startLine);\r\n if (column !== 0 && column !== bracket.startColumn) {\r\n bucket.push({ range: Range.fromPositions(new Position(startLine, column), bracket.getEndPosition()) });\r\n bucket.push({ range: Range.fromPositions(new Position(startLine, 1), bracket.getEndPosition()) });\r\n }\r\n // xxxxxxxx\r\n // {\r\n //\r\n // }\r\n const aboveLine = startLine - 1;\r\n if (aboveLine > 0) {\r\n const column = model.getLineFirstNonWhitespaceColumn(aboveLine);\r\n if (column === bracket.startColumn && column !== model.getLineLastNonWhitespaceColumn(aboveLine)) {\r\n bucket.push({ range: Range.fromPositions(new Position(aboveLine, column), bracket.getEndPosition()) });\r\n bucket.push({ range: Range.fromPositions(new Position(aboveLine, 1), bracket.getEndPosition()) });\r\n }\r\n }\r\n }\r\n}\r\nBracketSelectionRangeProvider._maxDuration = 30;\r\nBracketSelectionRangeProvider._maxRounds = 2;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerModelCommand } from '../../browser/editorExtensions.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { dispose } from '../../../base/common/lifecycle.js';\r\nimport { WordSelectionRangeProvider } from './wordSelections.js';\r\nimport { BracketSelectionRangeProvider } from './bracketSelections.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nclass SelectionRanges {\r\n constructor(index, ranges) {\r\n this.index = index;\r\n this.ranges = ranges;\r\n }\r\n mov(fwd) {\r\n let index = this.index + (fwd ? 1 : -1);\r\n if (index < 0 || index >= this.ranges.length) {\r\n return this;\r\n }\r\n const res = new SelectionRanges(index, this.ranges);\r\n if (res.ranges[index].equalsRange(this.ranges[this.index])) {\r\n // next range equals this range, retry with next-next\r\n return res.mov(fwd);\r\n }\r\n return res;\r\n }\r\n}\r\nclass SmartSelectController {\r\n constructor(editor) {\r\n this._ignoreSelection = false;\r\n this._editor = editor;\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SmartSelectController.ID);\r\n }\r\n dispose() {\r\n dispose(this._selectionListener);\r\n }\r\n run(forward) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const selections = this._editor.getSelections();\r\n const model = this._editor.getModel();\r\n if (!modes.SelectionRangeRegistry.has(model)) {\r\n return;\r\n }\r\n let promise = Promise.resolve(undefined);\r\n if (!this._state) {\r\n promise = provideSelectionRanges(model, selections.map(s => s.getPosition()), CancellationToken.None).then(ranges => {\r\n if (!arrays.isNonEmptyArray(ranges) || ranges.length !== selections.length) {\r\n // invalid result\r\n return;\r\n }\r\n if (!this._editor.hasModel() || !arrays.equals(this._editor.getSelections(), selections, (a, b) => a.equalsSelection(b))) {\r\n // invalid editor state\r\n return;\r\n }\r\n for (let i = 0; i < ranges.length; i++) {\r\n ranges[i] = ranges[i].filter(range => {\r\n // filter ranges inside the selection\r\n return range.containsPosition(selections[i].getStartPosition()) && range.containsPosition(selections[i].getEndPosition());\r\n });\r\n // prepend current selection\r\n ranges[i].unshift(selections[i]);\r\n }\r\n this._state = ranges.map(ranges => new SelectionRanges(0, ranges));\r\n // listen to caret move and forget about state\r\n dispose(this._selectionListener);\r\n this._selectionListener = this._editor.onDidChangeCursorPosition(() => {\r\n if (!this._ignoreSelection) {\r\n dispose(this._selectionListener);\r\n this._state = undefined;\r\n }\r\n });\r\n });\r\n }\r\n return promise.then(() => {\r\n if (!this._state) {\r\n // no state\r\n return;\r\n }\r\n this._state = this._state.map(state => state.mov(forward));\r\n const selections = this._state.map(state => Selection.fromPositions(state.ranges[state.index].getStartPosition(), state.ranges[state.index].getEndPosition()));\r\n this._ignoreSelection = true;\r\n try {\r\n this._editor.setSelections(selections);\r\n }\r\n finally {\r\n this._ignoreSelection = false;\r\n }\r\n });\r\n }\r\n}\r\nSmartSelectController.ID = 'editor.contrib.smartSelectController';\r\nclass AbstractSmartSelect extends EditorAction {\r\n constructor(forward, opts) {\r\n super(opts);\r\n this._forward = forward;\r\n }\r\n run(_accessor, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let controller = SmartSelectController.get(editor);\r\n if (controller) {\r\n yield controller.run(this._forward);\r\n }\r\n });\r\n }\r\n}\r\nclass GrowSelectionAction extends AbstractSmartSelect {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.smartSelect.expand',\r\n label: nls.localize('smartSelect.expand', \"Expand Selection\"),\r\n alias: 'Expand Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 17 /* RightArrow */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 256 /* WinCtrl */ | 1024 /* Shift */ | 17 /* RightArrow */,\r\n secondary: [256 /* WinCtrl */ | 1024 /* Shift */ | 17 /* RightArrow */],\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '1_basic',\r\n title: nls.localize({ key: 'miSmartSelectGrow', comment: ['&& denotes a mnemonic'] }, \"&&Expand Selection\"),\r\n order: 2\r\n }\r\n });\r\n }\r\n}\r\n// renamed command id\r\nCommandsRegistry.registerCommandAlias('editor.action.smartSelect.grow', 'editor.action.smartSelect.expand');\r\nclass ShrinkSelectionAction extends AbstractSmartSelect {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.smartSelect.shrink',\r\n label: nls.localize('smartSelect.shrink', \"Shrink Selection\"),\r\n alias: 'Shrink Selection',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 512 /* Alt */ | 15 /* LeftArrow */,\r\n mac: {\r\n primary: 2048 /* CtrlCmd */ | 256 /* WinCtrl */ | 1024 /* Shift */ | 15 /* LeftArrow */,\r\n secondary: [256 /* WinCtrl */ | 1024 /* Shift */ | 15 /* LeftArrow */],\r\n },\r\n weight: 100 /* EditorContrib */\r\n },\r\n menuOpts: {\r\n menuId: MenuId.MenubarSelectionMenu,\r\n group: '1_basic',\r\n title: nls.localize({ key: 'miSmartSelectShrink', comment: ['&& denotes a mnemonic'] }, \"&&Shrink Selection\"),\r\n order: 3\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorContribution(SmartSelectController.ID, SmartSelectController);\r\nregisterEditorAction(GrowSelectionAction);\r\nregisterEditorAction(ShrinkSelectionAction);\r\n// word selection\r\nmodes.SelectionRangeRegistry.register('*', new WordSelectionRangeProvider());\r\nexport function provideSelectionRanges(model, positions, token) {\r\n const providers = modes.SelectionRangeRegistry.all(model);\r\n if (providers.length === 1) {\r\n // add word selection and bracket selection when no provider exists\r\n providers.unshift(new BracketSelectionRangeProvider());\r\n }\r\n let work = [];\r\n let allRawRanges = [];\r\n for (const provider of providers) {\r\n work.push(Promise.resolve(provider.provideSelectionRanges(model, positions, token)).then(allProviderRanges => {\r\n if (arrays.isNonEmptyArray(allProviderRanges) && allProviderRanges.length === positions.length) {\r\n for (let i = 0; i < positions.length; i++) {\r\n if (!allRawRanges[i]) {\r\n allRawRanges[i] = [];\r\n }\r\n for (const oneProviderRanges of allProviderRanges[i]) {\r\n if (Range.isIRange(oneProviderRanges.range) && Range.containsPosition(oneProviderRanges.range, positions[i])) {\r\n allRawRanges[i].push(Range.lift(oneProviderRanges.range));\r\n }\r\n }\r\n }\r\n }\r\n }, onUnexpectedExternalError));\r\n }\r\n return Promise.all(work).then(() => {\r\n return allRawRanges.map(oneRawRanges => {\r\n if (oneRawRanges.length === 0) {\r\n return [];\r\n }\r\n // sort all by start/end position\r\n oneRawRanges.sort((a, b) => {\r\n if (Position.isBefore(a.getStartPosition(), b.getStartPosition())) {\r\n return 1;\r\n }\r\n else if (Position.isBefore(b.getStartPosition(), a.getStartPosition())) {\r\n return -1;\r\n }\r\n else if (Position.isBefore(a.getEndPosition(), b.getEndPosition())) {\r\n return -1;\r\n }\r\n else if (Position.isBefore(b.getEndPosition(), a.getEndPosition())) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n });\r\n // remove ranges that don't contain the former range or that are equal to the\r\n // former range\r\n let oneRanges = [];\r\n let last;\r\n for (const range of oneRawRanges) {\r\n if (!last || (Range.containsRange(range, last) && !Range.equalsRange(range, last))) {\r\n oneRanges.push(range);\r\n last = range;\r\n }\r\n }\r\n // add ranges that expand trivia at line starts and ends whenever a range\r\n // wraps onto the a new line\r\n let oneRangesWithTrivia = [oneRanges[0]];\r\n for (let i = 1; i < oneRanges.length; i++) {\r\n const prev = oneRanges[i - 1];\r\n const cur = oneRanges[i];\r\n if (cur.startLineNumber !== prev.startLineNumber || cur.endLineNumber !== prev.endLineNumber) {\r\n // add line/block range without leading/failing whitespace\r\n const rangeNoWhitespace = new Range(prev.startLineNumber, model.getLineFirstNonWhitespaceColumn(prev.startLineNumber), prev.endLineNumber, model.getLineLastNonWhitespaceColumn(prev.endLineNumber));\r\n if (rangeNoWhitespace.containsRange(prev) && !rangeNoWhitespace.equalsRange(prev) && cur.containsRange(rangeNoWhitespace) && !cur.equalsRange(rangeNoWhitespace)) {\r\n oneRangesWithTrivia.push(rangeNoWhitespace);\r\n }\r\n // add line/block range\r\n const rangeFull = new Range(prev.startLineNumber, 1, prev.endLineNumber, model.getLineMaxColumn(prev.endLineNumber));\r\n if (rangeFull.containsRange(prev) && !rangeFull.equalsRange(rangeNoWhitespace) && cur.containsRange(rangeFull) && !cur.equalsRange(rangeFull)) {\r\n oneRangesWithTrivia.push(rangeFull);\r\n }\r\n }\r\n oneRangesWithTrivia.push(cur);\r\n }\r\n return oneRangesWithTrivia;\r\n });\r\n });\r\n}\r\nregisterModelCommand('_executeSelectionRangeProvider', function (model, ...args) {\r\n const [positions] = args;\r\n return provideSelectionRanges(model, positions, CancellationToken.None);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { isUpperAsciiLetter, isLowerAsciiLetter } from '../../../base/common/strings.js';\r\nexport class WordSelectionRangeProvider {\r\n provideSelectionRanges(model, positions) {\r\n const result = [];\r\n for (const position of positions) {\r\n const bucket = [];\r\n result.push(bucket);\r\n this._addInWordRanges(bucket, model, position);\r\n this._addWordRanges(bucket, model, position);\r\n this._addWhitespaceLine(bucket, model, position);\r\n bucket.push({ range: model.getFullModelRange() });\r\n }\r\n return result;\r\n }\r\n _addInWordRanges(bucket, model, pos) {\r\n const obj = model.getWordAtPosition(pos);\r\n if (!obj) {\r\n return;\r\n }\r\n let { word, startColumn } = obj;\r\n let offset = pos.column - startColumn;\r\n let start = offset;\r\n let end = offset;\r\n let lastCh = 0;\r\n // LEFT anchor (start)\r\n for (; start >= 0; start--) {\r\n let ch = word.charCodeAt(start);\r\n if ((start !== offset) && (ch === 95 /* Underline */ || ch === 45 /* Dash */)) {\r\n // foo-bar OR foo_bar\r\n break;\r\n }\r\n else if (isLowerAsciiLetter(ch) && isUpperAsciiLetter(lastCh)) {\r\n // fooBar\r\n break;\r\n }\r\n lastCh = ch;\r\n }\r\n start += 1;\r\n // RIGHT anchor (end)\r\n for (; end < word.length; end++) {\r\n let ch = word.charCodeAt(end);\r\n if (isUpperAsciiLetter(ch) && isLowerAsciiLetter(lastCh)) {\r\n // fooBar\r\n break;\r\n }\r\n else if (ch === 95 /* Underline */ || ch === 45 /* Dash */) {\r\n // foo-bar OR foo_bar\r\n break;\r\n }\r\n lastCh = ch;\r\n }\r\n if (start < end) {\r\n bucket.push({ range: new Range(pos.lineNumber, startColumn + start, pos.lineNumber, startColumn + end) });\r\n }\r\n }\r\n _addWordRanges(bucket, model, pos) {\r\n const word = model.getWordAtPosition(pos);\r\n if (word) {\r\n bucket.push({ range: new Range(pos.lineNumber, word.startColumn, pos.lineNumber, word.endColumn) });\r\n }\r\n }\r\n _addWhitespaceLine(bucket, model, pos) {\r\n if (model.getLineLength(pos.lineNumber) > 0\r\n && model.getLineFirstNonWhitespaceColumn(pos.lineNumber) === 0\r\n && model.getLineLastNonWhitespaceColumn(pos.lineNumber) === 0) {\r\n bucket.push({ range: new Range(pos.lineNumber, 1, pos.lineNumber, model.getLineMaxColumn(pos.lineNumber)) });\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorCommand, registerEditorCommand, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { showSimpleSuggestions } from '../suggest/suggest.js';\r\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { SnippetSession } from './snippetSession.js';\r\nconst _defaultOptions = {\r\n overwriteBefore: 0,\r\n overwriteAfter: 0,\r\n undoStopBefore: true,\r\n undoStopAfter: true,\r\n adjustWhitespace: true,\r\n clipboardText: undefined,\r\n overtypingCapturer: undefined\r\n};\r\nlet SnippetController2 = class SnippetController2 {\r\n constructor(_editor, _logService, contextKeyService) {\r\n this._editor = _editor;\r\n this._logService = _logService;\r\n this._snippetListener = new DisposableStore();\r\n this._modelVersionId = -1;\r\n this._inSnippet = SnippetController2.InSnippetMode.bindTo(contextKeyService);\r\n this._hasNextTabstop = SnippetController2.HasNextTabstop.bindTo(contextKeyService);\r\n this._hasPrevTabstop = SnippetController2.HasPrevTabstop.bindTo(contextKeyService);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SnippetController2.ID);\r\n }\r\n dispose() {\r\n this._inSnippet.reset();\r\n this._hasPrevTabstop.reset();\r\n this._hasNextTabstop.reset();\r\n dispose(this._session);\r\n this._snippetListener.dispose();\r\n }\r\n insert(template, opts) {\r\n // this is here to find out more about the yet-not-understood\r\n // error that sometimes happens when we fail to inserted a nested\r\n // snippet\r\n try {\r\n this._doInsert(template, typeof opts === 'undefined' ? _defaultOptions : Object.assign(Object.assign({}, _defaultOptions), opts));\r\n }\r\n catch (e) {\r\n this.cancel();\r\n this._logService.error(e);\r\n this._logService.error('snippet_error');\r\n this._logService.error('insert_template=', template);\r\n this._logService.error('existing_template=', this._session ? this._session._logInfo() : '<no_session>');\r\n }\r\n }\r\n _doInsert(template, opts) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n // don't listen while inserting the snippet\r\n // as that is the inflight state causing cancelation\r\n this._snippetListener.clear();\r\n if (opts.undoStopBefore) {\r\n this._editor.getModel().pushStackElement();\r\n }\r\n if (!this._session) {\r\n this._modelVersionId = this._editor.getModel().getAlternativeVersionId();\r\n this._session = new SnippetSession(this._editor, template, opts);\r\n this._session.insert();\r\n }\r\n else {\r\n this._session.merge(template, opts);\r\n }\r\n if (opts.undoStopAfter) {\r\n this._editor.getModel().pushStackElement();\r\n }\r\n this._updateState();\r\n this._snippetListener.add(this._editor.onDidChangeModelContent(e => e.isFlush && this.cancel()));\r\n this._snippetListener.add(this._editor.onDidChangeModel(() => this.cancel()));\r\n this._snippetListener.add(this._editor.onDidChangeCursorSelection(() => this._updateState()));\r\n }\r\n _updateState() {\r\n if (!this._session || !this._editor.hasModel()) {\r\n // canceled in the meanwhile\r\n return;\r\n }\r\n if (this._modelVersionId === this._editor.getModel().getAlternativeVersionId()) {\r\n // undo until the 'before' state happened\r\n // and makes use cancel snippet mode\r\n return this.cancel();\r\n }\r\n if (!this._session.hasPlaceholder) {\r\n // don't listen for selection changes and don't\r\n // update context keys when the snippet is plain text\r\n return this.cancel();\r\n }\r\n if (this._session.isAtLastPlaceholder || !this._session.isSelectionWithinPlaceholders()) {\r\n return this.cancel();\r\n }\r\n this._inSnippet.set(true);\r\n this._hasPrevTabstop.set(!this._session.isAtFirstPlaceholder);\r\n this._hasNextTabstop.set(!this._session.isAtLastPlaceholder);\r\n this._handleChoice();\r\n }\r\n _handleChoice() {\r\n if (!this._session || !this._editor.hasModel()) {\r\n this._currentChoice = undefined;\r\n return;\r\n }\r\n const { choice } = this._session;\r\n if (!choice) {\r\n this._currentChoice = undefined;\r\n return;\r\n }\r\n if (this._currentChoice !== choice) {\r\n this._currentChoice = choice;\r\n this._editor.setSelections(this._editor.getSelections()\r\n .map(s => Selection.fromPositions(s.getStartPosition())));\r\n const [first] = choice.options;\r\n showSimpleSuggestions(this._editor, choice.options.map((option, i) => {\r\n // let before = choice.options.slice(0, i);\r\n // let after = choice.options.slice(i);\r\n return {\r\n kind: 13 /* Value */,\r\n label: option.value,\r\n insertText: option.value,\r\n // insertText: `\\${1|${after.concat(before).join(',')}|}$0`,\r\n // snippetType: 'textmate',\r\n sortText: 'a'.repeat(i + 1),\r\n range: Range.fromPositions(this._editor.getPosition(), this._editor.getPosition().delta(0, first.value.length))\r\n };\r\n }));\r\n }\r\n }\r\n finish() {\r\n while (this._inSnippet.get()) {\r\n this.next();\r\n }\r\n }\r\n cancel(resetSelection = false) {\r\n this._inSnippet.reset();\r\n this._hasPrevTabstop.reset();\r\n this._hasNextTabstop.reset();\r\n this._snippetListener.clear();\r\n dispose(this._session);\r\n this._session = undefined;\r\n this._modelVersionId = -1;\r\n if (resetSelection) {\r\n // reset selection to the primary cursor when being asked\r\n // for. this happens when explicitly cancelling snippet mode,\r\n // e.g. when pressing ESC\r\n this._editor.setSelections([this._editor.getSelection()]);\r\n }\r\n }\r\n prev() {\r\n if (this._session) {\r\n this._session.prev();\r\n }\r\n this._updateState();\r\n }\r\n next() {\r\n if (this._session) {\r\n this._session.next();\r\n }\r\n this._updateState();\r\n }\r\n isInSnippet() {\r\n return Boolean(this._inSnippet.get());\r\n }\r\n};\r\nSnippetController2.ID = 'snippetController2';\r\nSnippetController2.InSnippetMode = new RawContextKey('inSnippetMode', false);\r\nSnippetController2.HasNextTabstop = new RawContextKey('hasNextTabstop', false);\r\nSnippetController2.HasPrevTabstop = new RawContextKey('hasPrevTabstop', false);\r\nSnippetController2 = __decorate([\r\n __param(1, ILogService),\r\n __param(2, IContextKeyService)\r\n], SnippetController2);\r\nexport { SnippetController2 };\r\nregisterEditorContribution(SnippetController2.ID, SnippetController2);\r\nconst CommandCtor = EditorCommand.bindToContribution(SnippetController2.get);\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'jumpToNextSnippetPlaceholder',\r\n precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasNextTabstop),\r\n handler: ctrl => ctrl.next(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'jumpToPrevSnippetPlaceholder',\r\n precondition: ContextKeyExpr.and(SnippetController2.InSnippetMode, SnippetController2.HasPrevTabstop),\r\n handler: ctrl => ctrl.prev(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'leaveSnippet',\r\n precondition: SnippetController2.InSnippetMode,\r\n handler: ctrl => ctrl.cancel(true),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 30,\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new CommandCtor({\r\n id: 'acceptSnippet',\r\n precondition: SnippetController2.InSnippetMode,\r\n handler: ctrl => ctrl.finish(),\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Scanner {\r\n constructor() {\r\n this.value = '';\r\n this.pos = 0;\r\n }\r\n static isDigitCharacter(ch) {\r\n return ch >= 48 /* Digit0 */ && ch <= 57 /* Digit9 */;\r\n }\r\n static isVariableCharacter(ch) {\r\n return ch === 95 /* Underline */\r\n || (ch >= 97 /* a */ && ch <= 122 /* z */)\r\n || (ch >= 65 /* A */ && ch <= 90 /* Z */);\r\n }\r\n text(value) {\r\n this.value = value;\r\n this.pos = 0;\r\n }\r\n tokenText(token) {\r\n return this.value.substr(token.pos, token.len);\r\n }\r\n next() {\r\n if (this.pos >= this.value.length) {\r\n return { type: 14 /* EOF */, pos: this.pos, len: 0 };\r\n }\r\n let pos = this.pos;\r\n let len = 0;\r\n let ch = this.value.charCodeAt(pos);\r\n let type;\r\n // static types\r\n type = Scanner._table[ch];\r\n if (typeof type === 'number') {\r\n this.pos += 1;\r\n return { type, pos, len: 1 };\r\n }\r\n // number\r\n if (Scanner.isDigitCharacter(ch)) {\r\n type = 8 /* Int */;\r\n do {\r\n len += 1;\r\n ch = this.value.charCodeAt(pos + len);\r\n } while (Scanner.isDigitCharacter(ch));\r\n this.pos += len;\r\n return { type, pos, len };\r\n }\r\n // variable name\r\n if (Scanner.isVariableCharacter(ch)) {\r\n type = 9 /* VariableName */;\r\n do {\r\n ch = this.value.charCodeAt(pos + (++len));\r\n } while (Scanner.isVariableCharacter(ch) || Scanner.isDigitCharacter(ch));\r\n this.pos += len;\r\n return { type, pos, len };\r\n }\r\n // format\r\n type = 10 /* Format */;\r\n do {\r\n len += 1;\r\n ch = this.value.charCodeAt(pos + len);\r\n } while (!isNaN(ch)\r\n && typeof Scanner._table[ch] === 'undefined' // not static token\r\n && !Scanner.isDigitCharacter(ch) // not number\r\n && !Scanner.isVariableCharacter(ch) // not variable\r\n );\r\n this.pos += len;\r\n return { type, pos, len };\r\n }\r\n}\r\nScanner._table = {\r\n [36 /* DollarSign */]: 0 /* Dollar */,\r\n [58 /* Colon */]: 1 /* Colon */,\r\n [44 /* Comma */]: 2 /* Comma */,\r\n [123 /* OpenCurlyBrace */]: 3 /* CurlyOpen */,\r\n [125 /* CloseCurlyBrace */]: 4 /* CurlyClose */,\r\n [92 /* Backslash */]: 5 /* Backslash */,\r\n [47 /* Slash */]: 6 /* Forwardslash */,\r\n [124 /* Pipe */]: 7 /* Pipe */,\r\n [43 /* Plus */]: 11 /* Plus */,\r\n [45 /* Dash */]: 12 /* Dash */,\r\n [63 /* QuestionMark */]: 13 /* QuestionMark */,\r\n};\r\nexport class Marker {\r\n constructor() {\r\n this._children = [];\r\n }\r\n appendChild(child) {\r\n if (child instanceof Text && this._children[this._children.length - 1] instanceof Text) {\r\n // this and previous child are text -> merge them\r\n this._children[this._children.length - 1].value += child.value;\r\n }\r\n else {\r\n // normal adoption of child\r\n child.parent = this;\r\n this._children.push(child);\r\n }\r\n return this;\r\n }\r\n replace(child, others) {\r\n const { parent } = child;\r\n const idx = parent.children.indexOf(child);\r\n const newChildren = parent.children.slice(0);\r\n newChildren.splice(idx, 1, ...others);\r\n parent._children = newChildren;\r\n (function _fixParent(children, parent) {\r\n for (const child of children) {\r\n child.parent = parent;\r\n _fixParent(child.children, child);\r\n }\r\n })(others, parent);\r\n }\r\n get children() {\r\n return this._children;\r\n }\r\n get snippet() {\r\n let candidate = this;\r\n while (true) {\r\n if (!candidate) {\r\n return undefined;\r\n }\r\n if (candidate instanceof TextmateSnippet) {\r\n return candidate;\r\n }\r\n candidate = candidate.parent;\r\n }\r\n }\r\n toString() {\r\n return this.children.reduce((prev, cur) => prev + cur.toString(), '');\r\n }\r\n len() {\r\n return 0;\r\n }\r\n}\r\nexport class Text extends Marker {\r\n constructor(value) {\r\n super();\r\n this.value = value;\r\n }\r\n toString() {\r\n return this.value;\r\n }\r\n len() {\r\n return this.value.length;\r\n }\r\n clone() {\r\n return new Text(this.value);\r\n }\r\n}\r\nexport class TransformableMarker extends Marker {\r\n}\r\nexport class Placeholder extends TransformableMarker {\r\n constructor(index) {\r\n super();\r\n this.index = index;\r\n }\r\n static compareByIndex(a, b) {\r\n if (a.index === b.index) {\r\n return 0;\r\n }\r\n else if (a.isFinalTabstop) {\r\n return 1;\r\n }\r\n else if (b.isFinalTabstop) {\r\n return -1;\r\n }\r\n else if (a.index < b.index) {\r\n return -1;\r\n }\r\n else if (a.index > b.index) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n get isFinalTabstop() {\r\n return this.index === 0;\r\n }\r\n get choice() {\r\n return this._children.length === 1 && this._children[0] instanceof Choice\r\n ? this._children[0]\r\n : undefined;\r\n }\r\n clone() {\r\n let ret = new Placeholder(this.index);\r\n if (this.transform) {\r\n ret.transform = this.transform.clone();\r\n }\r\n ret._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n}\r\nexport class Choice extends Marker {\r\n constructor() {\r\n super(...arguments);\r\n this.options = [];\r\n }\r\n appendChild(marker) {\r\n if (marker instanceof Text) {\r\n marker.parent = this;\r\n this.options.push(marker);\r\n }\r\n return this;\r\n }\r\n toString() {\r\n return this.options[0].value;\r\n }\r\n len() {\r\n return this.options[0].len();\r\n }\r\n clone() {\r\n let ret = new Choice();\r\n this.options.forEach(ret.appendChild, ret);\r\n return ret;\r\n }\r\n}\r\nexport class Transform extends Marker {\r\n constructor() {\r\n super(...arguments);\r\n this.regexp = new RegExp('');\r\n }\r\n resolve(value) {\r\n const _this = this;\r\n let didMatch = false;\r\n let ret = value.replace(this.regexp, function () {\r\n didMatch = true;\r\n return _this._replace(Array.prototype.slice.call(arguments, 0, -2));\r\n });\r\n // when the regex didn't match and when the transform has\r\n // else branches, then run those\r\n if (!didMatch && this._children.some(child => child instanceof FormatString && Boolean(child.elseValue))) {\r\n ret = this._replace([]);\r\n }\r\n return ret;\r\n }\r\n _replace(groups) {\r\n let ret = '';\r\n for (const marker of this._children) {\r\n if (marker instanceof FormatString) {\r\n let value = groups[marker.index] || '';\r\n value = marker.resolve(value);\r\n ret += value;\r\n }\r\n else {\r\n ret += marker.toString();\r\n }\r\n }\r\n return ret;\r\n }\r\n toString() {\r\n return '';\r\n }\r\n clone() {\r\n let ret = new Transform();\r\n ret.regexp = new RegExp(this.regexp.source, '' + (this.regexp.ignoreCase ? 'i' : '') + (this.regexp.global ? 'g' : ''));\r\n ret._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n}\r\nexport class FormatString extends Marker {\r\n constructor(index, shorthandName, ifValue, elseValue) {\r\n super();\r\n this.index = index;\r\n this.shorthandName = shorthandName;\r\n this.ifValue = ifValue;\r\n this.elseValue = elseValue;\r\n }\r\n resolve(value) {\r\n if (this.shorthandName === 'upcase') {\r\n return !value ? '' : value.toLocaleUpperCase();\r\n }\r\n else if (this.shorthandName === 'downcase') {\r\n return !value ? '' : value.toLocaleLowerCase();\r\n }\r\n else if (this.shorthandName === 'capitalize') {\r\n return !value ? '' : (value[0].toLocaleUpperCase() + value.substr(1));\r\n }\r\n else if (this.shorthandName === 'pascalcase') {\r\n return !value ? '' : this._toPascalCase(value);\r\n }\r\n else if (Boolean(value) && typeof this.ifValue === 'string') {\r\n return this.ifValue;\r\n }\r\n else if (!Boolean(value) && typeof this.elseValue === 'string') {\r\n return this.elseValue;\r\n }\r\n else {\r\n return value || '';\r\n }\r\n }\r\n _toPascalCase(value) {\r\n const match = value.match(/[a-z]+/gi);\r\n if (!match) {\r\n return value;\r\n }\r\n return match.map(function (word) {\r\n return word.charAt(0).toUpperCase()\r\n + word.substr(1).toLowerCase();\r\n })\r\n .join('');\r\n }\r\n clone() {\r\n let ret = new FormatString(this.index, this.shorthandName, this.ifValue, this.elseValue);\r\n return ret;\r\n }\r\n}\r\nexport class Variable extends TransformableMarker {\r\n constructor(name) {\r\n super();\r\n this.name = name;\r\n }\r\n resolve(resolver) {\r\n let value = resolver.resolve(this);\r\n if (this.transform) {\r\n value = this.transform.resolve(value || '');\r\n }\r\n if (value !== undefined) {\r\n this._children = [new Text(value)];\r\n return true;\r\n }\r\n return false;\r\n }\r\n clone() {\r\n const ret = new Variable(this.name);\r\n if (this.transform) {\r\n ret.transform = this.transform.clone();\r\n }\r\n ret._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n}\r\nfunction walk(marker, visitor) {\r\n const stack = [...marker];\r\n while (stack.length > 0) {\r\n const marker = stack.shift();\r\n const recurse = visitor(marker);\r\n if (!recurse) {\r\n break;\r\n }\r\n stack.unshift(...marker.children);\r\n }\r\n}\r\nexport class TextmateSnippet extends Marker {\r\n get placeholderInfo() {\r\n if (!this._placeholders) {\r\n // fill in placeholders\r\n let all = [];\r\n let last;\r\n this.walk(function (candidate) {\r\n if (candidate instanceof Placeholder) {\r\n all.push(candidate);\r\n last = !last || last.index < candidate.index ? candidate : last;\r\n }\r\n return true;\r\n });\r\n this._placeholders = { all, last };\r\n }\r\n return this._placeholders;\r\n }\r\n get placeholders() {\r\n const { all } = this.placeholderInfo;\r\n return all;\r\n }\r\n offset(marker) {\r\n let pos = 0;\r\n let found = false;\r\n this.walk(candidate => {\r\n if (candidate === marker) {\r\n found = true;\r\n return false;\r\n }\r\n pos += candidate.len();\r\n return true;\r\n });\r\n if (!found) {\r\n return -1;\r\n }\r\n return pos;\r\n }\r\n fullLen(marker) {\r\n let ret = 0;\r\n walk([marker], marker => {\r\n ret += marker.len();\r\n return true;\r\n });\r\n return ret;\r\n }\r\n enclosingPlaceholders(placeholder) {\r\n let ret = [];\r\n let { parent } = placeholder;\r\n while (parent) {\r\n if (parent instanceof Placeholder) {\r\n ret.push(parent);\r\n }\r\n parent = parent.parent;\r\n }\r\n return ret;\r\n }\r\n resolveVariables(resolver) {\r\n this.walk(candidate => {\r\n if (candidate instanceof Variable) {\r\n if (candidate.resolve(resolver)) {\r\n this._placeholders = undefined;\r\n }\r\n }\r\n return true;\r\n });\r\n return this;\r\n }\r\n appendChild(child) {\r\n this._placeholders = undefined;\r\n return super.appendChild(child);\r\n }\r\n replace(child, others) {\r\n this._placeholders = undefined;\r\n return super.replace(child, others);\r\n }\r\n clone() {\r\n let ret = new TextmateSnippet();\r\n this._children = this.children.map(child => child.clone());\r\n return ret;\r\n }\r\n walk(visitor) {\r\n walk(this.children, visitor);\r\n }\r\n}\r\nexport class SnippetParser {\r\n constructor() {\r\n this._scanner = new Scanner();\r\n this._token = { type: 14 /* EOF */, pos: 0, len: 0 };\r\n }\r\n static escape(value) {\r\n return value.replace(/\\$|}|\\\\/g, '\\\\$&');\r\n }\r\n static guessNeedsClipboard(template) {\r\n return /\\${?CLIPBOARD/.test(template);\r\n }\r\n parse(value, insertFinalTabstop, enforceFinalTabstop) {\r\n this._scanner.text(value);\r\n this._token = this._scanner.next();\r\n const snippet = new TextmateSnippet();\r\n while (this._parse(snippet)) {\r\n // nothing\r\n }\r\n // fill in values for placeholders. the first placeholder of an index\r\n // that has a value defines the value for all placeholders with that index\r\n const placeholderDefaultValues = new Map();\r\n const incompletePlaceholders = [];\r\n let placeholderCount = 0;\r\n snippet.walk(marker => {\r\n if (marker instanceof Placeholder) {\r\n placeholderCount += 1;\r\n if (marker.isFinalTabstop) {\r\n placeholderDefaultValues.set(0, undefined);\r\n }\r\n else if (!placeholderDefaultValues.has(marker.index) && marker.children.length > 0) {\r\n placeholderDefaultValues.set(marker.index, marker.children);\r\n }\r\n else {\r\n incompletePlaceholders.push(marker);\r\n }\r\n }\r\n return true;\r\n });\r\n for (const placeholder of incompletePlaceholders) {\r\n const defaultValues = placeholderDefaultValues.get(placeholder.index);\r\n if (defaultValues) {\r\n const clone = new Placeholder(placeholder.index);\r\n clone.transform = placeholder.transform;\r\n for (const child of defaultValues) {\r\n clone.appendChild(child.clone());\r\n }\r\n snippet.replace(placeholder, [clone]);\r\n }\r\n }\r\n if (!enforceFinalTabstop) {\r\n enforceFinalTabstop = placeholderCount > 0 && insertFinalTabstop;\r\n }\r\n if (!placeholderDefaultValues.has(0) && enforceFinalTabstop) {\r\n // the snippet uses placeholders but has no\r\n // final tabstop defined -> insert at the end\r\n snippet.appendChild(new Placeholder(0));\r\n }\r\n return snippet;\r\n }\r\n _accept(type, value) {\r\n if (type === undefined || this._token.type === type) {\r\n let ret = !value ? true : this._scanner.tokenText(this._token);\r\n this._token = this._scanner.next();\r\n return ret;\r\n }\r\n return false;\r\n }\r\n _backTo(token) {\r\n this._scanner.pos = token.pos + token.len;\r\n this._token = token;\r\n return false;\r\n }\r\n _until(type) {\r\n const start = this._token;\r\n while (this._token.type !== type) {\r\n if (this._token.type === 14 /* EOF */) {\r\n return false;\r\n }\r\n else if (this._token.type === 5 /* Backslash */) {\r\n const nextToken = this._scanner.next();\r\n if (nextToken.type !== 0 /* Dollar */\r\n && nextToken.type !== 4 /* CurlyClose */\r\n && nextToken.type !== 5 /* Backslash */) {\r\n return false;\r\n }\r\n }\r\n this._token = this._scanner.next();\r\n }\r\n const value = this._scanner.value.substring(start.pos, this._token.pos).replace(/\\\\(\\$|}|\\\\)/g, '$1');\r\n this._token = this._scanner.next();\r\n return value;\r\n }\r\n _parse(marker) {\r\n return this._parseEscaped(marker)\r\n || this._parseTabstopOrVariableName(marker)\r\n || this._parseComplexPlaceholder(marker)\r\n || this._parseComplexVariable(marker)\r\n || this._parseAnything(marker);\r\n }\r\n // \\$, \\\\, \\} -> just text\r\n _parseEscaped(marker) {\r\n let value;\r\n if (value = this._accept(5 /* Backslash */, true)) {\r\n // saw a backslash, append escaped token or that backslash\r\n value = this._accept(0 /* Dollar */, true)\r\n || this._accept(4 /* CurlyClose */, true)\r\n || this._accept(5 /* Backslash */, true)\r\n || value;\r\n marker.appendChild(new Text(value));\r\n return true;\r\n }\r\n return false;\r\n }\r\n // $foo -> variable, $1 -> tabstop\r\n _parseTabstopOrVariableName(parent) {\r\n let value;\r\n const token = this._token;\r\n const match = this._accept(0 /* Dollar */)\r\n && (value = this._accept(9 /* VariableName */, true) || this._accept(8 /* Int */, true));\r\n if (!match) {\r\n return this._backTo(token);\r\n }\r\n parent.appendChild(/^\\d+$/.test(value)\r\n ? new Placeholder(Number(value))\r\n : new Variable(value));\r\n return true;\r\n }\r\n // ${1:<children>}, ${1} -> placeholder\r\n _parseComplexPlaceholder(parent) {\r\n let index;\r\n const token = this._token;\r\n const match = this._accept(0 /* Dollar */)\r\n && this._accept(3 /* CurlyOpen */)\r\n && (index = this._accept(8 /* Int */, true));\r\n if (!match) {\r\n return this._backTo(token);\r\n }\r\n const placeholder = new Placeholder(Number(index));\r\n if (this._accept(1 /* Colon */)) {\r\n // ${1:<children>}\r\n while (true) {\r\n // ...} -> done\r\n if (this._accept(4 /* CurlyClose */)) {\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n if (this._parse(placeholder)) {\r\n continue;\r\n }\r\n // fallback\r\n parent.appendChild(new Text('${' + index + ':'));\r\n placeholder.children.forEach(parent.appendChild, parent);\r\n return true;\r\n }\r\n }\r\n else if (placeholder.index > 0 && this._accept(7 /* Pipe */)) {\r\n // ${1|one,two,three|}\r\n const choice = new Choice();\r\n while (true) {\r\n if (this._parseChoiceElement(choice)) {\r\n if (this._accept(2 /* Comma */)) {\r\n // opt, -> more\r\n continue;\r\n }\r\n if (this._accept(7 /* Pipe */)) {\r\n placeholder.appendChild(choice);\r\n if (this._accept(4 /* CurlyClose */)) {\r\n // ..|} -> done\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n }\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n }\r\n else if (this._accept(6 /* Forwardslash */)) {\r\n // ${1/<regex>/<format>/<options>}\r\n if (this._parseTransform(placeholder)) {\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n else if (this._accept(4 /* CurlyClose */)) {\r\n // ${1}\r\n parent.appendChild(placeholder);\r\n return true;\r\n }\r\n else {\r\n // ${1 <- missing curly or colon\r\n return this._backTo(token);\r\n }\r\n }\r\n _parseChoiceElement(parent) {\r\n const token = this._token;\r\n const values = [];\r\n while (true) {\r\n if (this._token.type === 2 /* Comma */ || this._token.type === 7 /* Pipe */) {\r\n break;\r\n }\r\n let value;\r\n if (value = this._accept(5 /* Backslash */, true)) {\r\n // \\, \\|, or \\\\\r\n value = this._accept(2 /* Comma */, true)\r\n || this._accept(7 /* Pipe */, true)\r\n || this._accept(5 /* Backslash */, true)\r\n || value;\r\n }\r\n else {\r\n value = this._accept(undefined, true);\r\n }\r\n if (!value) {\r\n // EOF\r\n this._backTo(token);\r\n return false;\r\n }\r\n values.push(value);\r\n }\r\n if (values.length === 0) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n parent.appendChild(new Text(values.join('')));\r\n return true;\r\n }\r\n // ${foo:<children>}, ${foo} -> variable\r\n _parseComplexVariable(parent) {\r\n let name;\r\n const token = this._token;\r\n const match = this._accept(0 /* Dollar */)\r\n && this._accept(3 /* CurlyOpen */)\r\n && (name = this._accept(9 /* VariableName */, true));\r\n if (!match) {\r\n return this._backTo(token);\r\n }\r\n const variable = new Variable(name);\r\n if (this._accept(1 /* Colon */)) {\r\n // ${foo:<children>}\r\n while (true) {\r\n // ...} -> done\r\n if (this._accept(4 /* CurlyClose */)) {\r\n parent.appendChild(variable);\r\n return true;\r\n }\r\n if (this._parse(variable)) {\r\n continue;\r\n }\r\n // fallback\r\n parent.appendChild(new Text('${' + name + ':'));\r\n variable.children.forEach(parent.appendChild, parent);\r\n return true;\r\n }\r\n }\r\n else if (this._accept(6 /* Forwardslash */)) {\r\n // ${foo/<regex>/<format>/<options>}\r\n if (this._parseTransform(variable)) {\r\n parent.appendChild(variable);\r\n return true;\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n else if (this._accept(4 /* CurlyClose */)) {\r\n // ${foo}\r\n parent.appendChild(variable);\r\n return true;\r\n }\r\n else {\r\n // ${foo <- missing curly or colon\r\n return this._backTo(token);\r\n }\r\n }\r\n _parseTransform(parent) {\r\n // ...<regex>/<format>/<options>}\r\n let transform = new Transform();\r\n let regexValue = '';\r\n let regexOptions = '';\r\n // (1) /regex\r\n while (true) {\r\n if (this._accept(6 /* Forwardslash */)) {\r\n break;\r\n }\r\n let escaped;\r\n if (escaped = this._accept(5 /* Backslash */, true)) {\r\n escaped = this._accept(6 /* Forwardslash */, true) || escaped;\r\n regexValue += escaped;\r\n continue;\r\n }\r\n if (this._token.type !== 14 /* EOF */) {\r\n regexValue += this._accept(undefined, true);\r\n continue;\r\n }\r\n return false;\r\n }\r\n // (2) /format\r\n while (true) {\r\n if (this._accept(6 /* Forwardslash */)) {\r\n break;\r\n }\r\n let escaped;\r\n if (escaped = this._accept(5 /* Backslash */, true)) {\r\n escaped = this._accept(5 /* Backslash */, true) || this._accept(6 /* Forwardslash */, true) || escaped;\r\n transform.appendChild(new Text(escaped));\r\n continue;\r\n }\r\n if (this._parseFormatString(transform) || this._parseAnything(transform)) {\r\n continue;\r\n }\r\n return false;\r\n }\r\n // (3) /option\r\n while (true) {\r\n if (this._accept(4 /* CurlyClose */)) {\r\n break;\r\n }\r\n if (this._token.type !== 14 /* EOF */) {\r\n regexOptions += this._accept(undefined, true);\r\n continue;\r\n }\r\n return false;\r\n }\r\n try {\r\n transform.regexp = new RegExp(regexValue, regexOptions);\r\n }\r\n catch (e) {\r\n // invalid regexp\r\n return false;\r\n }\r\n parent.transform = transform;\r\n return true;\r\n }\r\n _parseFormatString(parent) {\r\n const token = this._token;\r\n if (!this._accept(0 /* Dollar */)) {\r\n return false;\r\n }\r\n let complex = false;\r\n if (this._accept(3 /* CurlyOpen */)) {\r\n complex = true;\r\n }\r\n let index = this._accept(8 /* Int */, true);\r\n if (!index) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n else if (!complex) {\r\n // $1\r\n parent.appendChild(new FormatString(Number(index)));\r\n return true;\r\n }\r\n else if (this._accept(4 /* CurlyClose */)) {\r\n // ${1}\r\n parent.appendChild(new FormatString(Number(index)));\r\n return true;\r\n }\r\n else if (!this._accept(1 /* Colon */)) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n if (this._accept(6 /* Forwardslash */)) {\r\n // ${1:/upcase}\r\n let shorthand = this._accept(9 /* VariableName */, true);\r\n if (!shorthand || !this._accept(4 /* CurlyClose */)) {\r\n this._backTo(token);\r\n return false;\r\n }\r\n else {\r\n parent.appendChild(new FormatString(Number(index), shorthand));\r\n return true;\r\n }\r\n }\r\n else if (this._accept(11 /* Plus */)) {\r\n // ${1:+<if>}\r\n let ifValue = this._until(4 /* CurlyClose */);\r\n if (ifValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, ifValue, undefined));\r\n return true;\r\n }\r\n }\r\n else if (this._accept(12 /* Dash */)) {\r\n // ${2:-<else>}\r\n let elseValue = this._until(4 /* CurlyClose */);\r\n if (elseValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\r\n return true;\r\n }\r\n }\r\n else if (this._accept(13 /* QuestionMark */)) {\r\n // ${2:?<if>:<else>}\r\n let ifValue = this._until(1 /* Colon */);\r\n if (ifValue) {\r\n let elseValue = this._until(4 /* CurlyClose */);\r\n if (elseValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, ifValue, elseValue));\r\n return true;\r\n }\r\n }\r\n }\r\n else {\r\n // ${1:<else>}\r\n let elseValue = this._until(4 /* CurlyClose */);\r\n if (elseValue) {\r\n parent.appendChild(new FormatString(Number(index), undefined, undefined, elseValue));\r\n return true;\r\n }\r\n }\r\n this._backTo(token);\r\n return false;\r\n }\r\n _parseAnything(marker) {\r\n if (this._token.type !== 14 /* EOF */) {\r\n marker.appendChild(new Text(this._scanner.tokenText(this._token)));\r\n this._accept(undefined);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { groupBy } from '../../../base/common/arrays.js';\r\nimport { dispose } from '../../../base/common/lifecycle.js';\r\nimport { getLeadingWhitespace } from '../../../base/common/strings.js';\r\nimport './snippetSession.css';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { IWorkspaceContextService } from '../../../platform/workspace/common/workspace.js';\r\nimport { optional } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { Choice, Placeholder, SnippetParser, Text } from './snippetParser.js';\r\nimport { ClipboardBasedVariableResolver, CompositeSnippetVariableResolver, ModelBasedVariableResolver, SelectionBasedVariableResolver, TimeBasedVariableResolver, CommentBasedVariableResolver, WorkspaceBasedVariableResolver, RandomBasedVariableResolver } from './snippetVariables.js';\r\nimport { registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport * as colors from '../../../platform/theme/common/colorRegistry.js';\r\nimport { ILabelService } from '../../../platform/label/common/label.js';\r\nregisterThemingParticipant((theme, collector) => {\r\n function getColorGraceful(name) {\r\n const color = theme.getColor(name);\r\n return color ? color.toString() : 'transparent';\r\n }\r\n collector.addRule(`.monaco-editor .snippet-placeholder { background-color: ${getColorGraceful(colors.snippetTabstopHighlightBackground)}; outline-color: ${getColorGraceful(colors.snippetTabstopHighlightBorder)}; }`);\r\n collector.addRule(`.monaco-editor .finish-snippet-placeholder { background-color: ${getColorGraceful(colors.snippetFinalTabstopHighlightBackground)}; outline-color: ${getColorGraceful(colors.snippetFinalTabstopHighlightBorder)}; }`);\r\n});\r\nexport class OneSnippet {\r\n constructor(editor, snippet, offset) {\r\n this._nestingLevel = 1;\r\n this._editor = editor;\r\n this._snippet = snippet;\r\n this._offset = offset;\r\n this._placeholderGroups = groupBy(snippet.placeholders, Placeholder.compareByIndex);\r\n this._placeholderGroupsIdx = -1;\r\n }\r\n dispose() {\r\n if (this._placeholderDecorations) {\r\n this._editor.deltaDecorations([...this._placeholderDecorations.values()], []);\r\n }\r\n this._placeholderGroups.length = 0;\r\n }\r\n _initDecorations() {\r\n if (this._placeholderDecorations) {\r\n // already initialized\r\n return;\r\n }\r\n this._placeholderDecorations = new Map();\r\n const model = this._editor.getModel();\r\n this._editor.changeDecorations(accessor => {\r\n // create a decoration for each placeholder\r\n for (const placeholder of this._snippet.placeholders) {\r\n const placeholderOffset = this._snippet.offset(placeholder);\r\n const placeholderLen = this._snippet.fullLen(placeholder);\r\n const range = Range.fromPositions(model.getPositionAt(this._offset + placeholderOffset), model.getPositionAt(this._offset + placeholderOffset + placeholderLen));\r\n const options = placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive;\r\n const handle = accessor.addDecoration(range, options);\r\n this._placeholderDecorations.set(placeholder, handle);\r\n }\r\n });\r\n }\r\n move(fwd) {\r\n if (!this._editor.hasModel()) {\r\n return [];\r\n }\r\n this._initDecorations();\r\n // Transform placeholder text if necessary\r\n if (this._placeholderGroupsIdx >= 0) {\r\n let operations = [];\r\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\r\n // Check if the placeholder has a transformation\r\n if (placeholder.transform) {\r\n const id = this._placeholderDecorations.get(placeholder);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n const currentValue = this._editor.getModel().getValueInRange(range);\r\n operations.push(EditOperation.replaceMove(range, placeholder.transform.resolve(currentValue)));\r\n }\r\n }\r\n if (operations.length > 0) {\r\n this._editor.executeEdits('snippet.placeholderTransform', operations);\r\n }\r\n }\r\n let couldSkipThisPlaceholder = false;\r\n if (fwd === true && this._placeholderGroupsIdx < this._placeholderGroups.length - 1) {\r\n this._placeholderGroupsIdx += 1;\r\n couldSkipThisPlaceholder = true;\r\n }\r\n else if (fwd === false && this._placeholderGroupsIdx > 0) {\r\n this._placeholderGroupsIdx -= 1;\r\n couldSkipThisPlaceholder = true;\r\n }\r\n else {\r\n // the selection of the current placeholder might\r\n // not acurate any more -> simply restore it\r\n }\r\n const newSelections = this._editor.getModel().changeDecorations(accessor => {\r\n const activePlaceholders = new Set();\r\n // change stickiness to always grow when typing at its edges\r\n // because these decorations represent the currently active\r\n // tabstop.\r\n // Special case #1: reaching the final tabstop\r\n // Special case #2: placeholders enclosing active placeholders\r\n const selections = [];\r\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\r\n const id = this._placeholderDecorations.get(placeholder);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n selections.push(new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn));\r\n // consider to skip this placeholder index when the decoration\r\n // range is empty but when the placeholder wasn't. that's a strong\r\n // hint that the placeholder has been deleted. (all placeholder must match this)\r\n couldSkipThisPlaceholder = couldSkipThisPlaceholder && this._hasPlaceholderBeenCollapsed(placeholder);\r\n accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\r\n activePlaceholders.add(placeholder);\r\n for (const enclosingPlaceholder of this._snippet.enclosingPlaceholders(placeholder)) {\r\n const id = this._placeholderDecorations.get(enclosingPlaceholder);\r\n accessor.changeDecorationOptions(id, enclosingPlaceholder.isFinalTabstop ? OneSnippet._decor.activeFinal : OneSnippet._decor.active);\r\n activePlaceholders.add(enclosingPlaceholder);\r\n }\r\n }\r\n // change stickness to never grow when typing at its edges\r\n // so that in-active tabstops never grow\r\n for (const [placeholder, id] of this._placeholderDecorations) {\r\n if (!activePlaceholders.has(placeholder)) {\r\n accessor.changeDecorationOptions(id, placeholder.isFinalTabstop ? OneSnippet._decor.inactiveFinal : OneSnippet._decor.inactive);\r\n }\r\n }\r\n return selections;\r\n });\r\n return !couldSkipThisPlaceholder ? newSelections !== null && newSelections !== void 0 ? newSelections : [] : this.move(fwd);\r\n }\r\n _hasPlaceholderBeenCollapsed(placeholder) {\r\n // A placeholder is empty when it wasn't empty when authored but\r\n // when its tracking decoration is empty. This also applies to all\r\n // potential parent placeholders\r\n let marker = placeholder;\r\n while (marker) {\r\n if (marker instanceof Placeholder) {\r\n const id = this._placeholderDecorations.get(marker);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n if (range.isEmpty() && marker.toString().length > 0) {\r\n return true;\r\n }\r\n }\r\n marker = marker.parent;\r\n }\r\n return false;\r\n }\r\n get isAtFirstPlaceholder() {\r\n return this._placeholderGroupsIdx <= 0 || this._placeholderGroups.length === 0;\r\n }\r\n get isAtLastPlaceholder() {\r\n return this._placeholderGroupsIdx === this._placeholderGroups.length - 1;\r\n }\r\n get hasPlaceholder() {\r\n return this._snippet.placeholders.length > 0;\r\n }\r\n computePossibleSelections() {\r\n const result = new Map();\r\n for (const placeholdersWithEqualIndex of this._placeholderGroups) {\r\n let ranges;\r\n for (const placeholder of placeholdersWithEqualIndex) {\r\n if (placeholder.isFinalTabstop) {\r\n // ignore those\r\n break;\r\n }\r\n if (!ranges) {\r\n ranges = [];\r\n result.set(placeholder.index, ranges);\r\n }\r\n const id = this._placeholderDecorations.get(placeholder);\r\n const range = this._editor.getModel().getDecorationRange(id);\r\n if (!range) {\r\n // one of the placeholder lost its decoration and\r\n // therefore we bail out and pretend the placeholder\r\n // (with its mirrors) doesn't exist anymore.\r\n result.delete(placeholder.index);\r\n break;\r\n }\r\n ranges.push(range);\r\n }\r\n }\r\n return result;\r\n }\r\n get choice() {\r\n return this._placeholderGroups[this._placeholderGroupsIdx][0].choice;\r\n }\r\n merge(others) {\r\n const model = this._editor.getModel();\r\n this._nestingLevel *= 10;\r\n this._editor.changeDecorations(accessor => {\r\n // For each active placeholder take one snippet and merge it\r\n // in that the placeholder (can be many for `$1foo$1foo`). Because\r\n // everything is sorted by editor selection we can simply remove\r\n // elements from the beginning of the array\r\n for (const placeholder of this._placeholderGroups[this._placeholderGroupsIdx]) {\r\n const nested = others.shift();\r\n console.assert(!nested._placeholderDecorations);\r\n // Massage placeholder-indicies of the nested snippet to be\r\n // sorted right after the insertion point. This ensures we move\r\n // through the placeholders in the correct order\r\n const indexLastPlaceholder = nested._snippet.placeholderInfo.last.index;\r\n for (const nestedPlaceholder of nested._snippet.placeholderInfo.all) {\r\n if (nestedPlaceholder.isFinalTabstop) {\r\n nestedPlaceholder.index = placeholder.index + ((indexLastPlaceholder + 1) / this._nestingLevel);\r\n }\r\n else {\r\n nestedPlaceholder.index = placeholder.index + (nestedPlaceholder.index / this._nestingLevel);\r\n }\r\n }\r\n this._snippet.replace(placeholder, nested._snippet.children);\r\n // Remove the placeholder at which position are inserting\r\n // the snippet and also remove its decoration.\r\n const id = this._placeholderDecorations.get(placeholder);\r\n accessor.removeDecoration(id);\r\n this._placeholderDecorations.delete(placeholder);\r\n // For each *new* placeholder we create decoration to monitor\r\n // how and if it grows/shrinks.\r\n for (const placeholder of nested._snippet.placeholders) {\r\n const placeholderOffset = nested._snippet.offset(placeholder);\r\n const placeholderLen = nested._snippet.fullLen(placeholder);\r\n const range = Range.fromPositions(model.getPositionAt(nested._offset + placeholderOffset), model.getPositionAt(nested._offset + placeholderOffset + placeholderLen));\r\n const handle = accessor.addDecoration(range, OneSnippet._decor.inactive);\r\n this._placeholderDecorations.set(placeholder, handle);\r\n }\r\n }\r\n // Last, re-create the placeholder groups by sorting placeholders by their index.\r\n this._placeholderGroups = groupBy(this._snippet.placeholders, Placeholder.compareByIndex);\r\n });\r\n }\r\n}\r\nOneSnippet._decor = {\r\n active: ModelDecorationOptions.register({ stickiness: 0 /* AlwaysGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\r\n inactive: ModelDecorationOptions.register({ stickiness: 1 /* NeverGrowsWhenTypingAtEdges */, className: 'snippet-placeholder' }),\r\n activeFinal: ModelDecorationOptions.register({ stickiness: 1 /* NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\r\n inactiveFinal: ModelDecorationOptions.register({ stickiness: 1 /* NeverGrowsWhenTypingAtEdges */, className: 'finish-snippet-placeholder' }),\r\n};\r\nconst _defaultOptions = {\r\n overwriteBefore: 0,\r\n overwriteAfter: 0,\r\n adjustWhitespace: true,\r\n clipboardText: undefined,\r\n overtypingCapturer: undefined\r\n};\r\nexport class SnippetSession {\r\n constructor(editor, template, options = _defaultOptions) {\r\n this._templateMerges = [];\r\n this._snippets = [];\r\n this._editor = editor;\r\n this._template = template;\r\n this._options = options;\r\n }\r\n static adjustWhitespace(model, position, snippet, adjustIndentation, adjustNewlines) {\r\n const line = model.getLineContent(position.lineNumber);\r\n const lineLeadingWhitespace = getLeadingWhitespace(line, 0, position.column - 1);\r\n snippet.walk(marker => {\r\n if (marker instanceof Text && !(marker.parent instanceof Choice)) {\r\n // adjust indentation of text markers, except for choise elements\r\n // which get adjusted when being selected\r\n const lines = marker.value.split(/\\r\\n|\\r|\\n/);\r\n if (adjustIndentation) {\r\n for (let i = 1; i < lines.length; i++) {\r\n let templateLeadingWhitespace = getLeadingWhitespace(lines[i]);\r\n lines[i] = model.normalizeIndentation(lineLeadingWhitespace + templateLeadingWhitespace) + lines[i].substr(templateLeadingWhitespace.length);\r\n }\r\n }\r\n if (adjustNewlines) {\r\n const newValue = lines.join(model.getEOL());\r\n if (newValue !== marker.value) {\r\n marker.parent.replace(marker, [new Text(newValue)]);\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n static adjustSelection(model, selection, overwriteBefore, overwriteAfter) {\r\n if (overwriteBefore !== 0 || overwriteAfter !== 0) {\r\n // overwrite[Before|After] is compute using the position, not the whole\r\n // selection. therefore we adjust the selection around that position\r\n const { positionLineNumber, positionColumn } = selection;\r\n const positionColumnBefore = positionColumn - overwriteBefore;\r\n const positionColumnAfter = positionColumn + overwriteAfter;\r\n const range = model.validateRange({\r\n startLineNumber: positionLineNumber,\r\n startColumn: positionColumnBefore,\r\n endLineNumber: positionLineNumber,\r\n endColumn: positionColumnAfter\r\n });\r\n selection = Selection.createWithDirection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn, selection.getDirection());\r\n }\r\n return selection;\r\n }\r\n static createEditsAndSnippets(editor, template, overwriteBefore, overwriteAfter, enforceFinalTabstop, adjustWhitespace, clipboardText, overtypingCapturer) {\r\n const edits = [];\r\n const snippets = [];\r\n if (!editor.hasModel()) {\r\n return { edits, snippets };\r\n }\r\n const model = editor.getModel();\r\n const workspaceService = editor.invokeWithinContext(accessor => accessor.get(IWorkspaceContextService, optional));\r\n const modelBasedVariableResolver = editor.invokeWithinContext(accessor => new ModelBasedVariableResolver(accessor.get(ILabelService, optional), model));\r\n const readClipboardText = () => clipboardText;\r\n let delta = 0;\r\n // know what text the overwrite[Before|After] extensions\r\n // of the primary curser have selected because only when\r\n // secondary selections extend to the same text we can grow them\r\n let firstBeforeText = model.getValueInRange(SnippetSession.adjustSelection(model, editor.getSelection(), overwriteBefore, 0));\r\n let firstAfterText = model.getValueInRange(SnippetSession.adjustSelection(model, editor.getSelection(), 0, overwriteAfter));\r\n // remember the first non-whitespace column to decide if\r\n // `keepWhitespace` should be overruled for secondary selections\r\n let firstLineFirstNonWhitespace = model.getLineFirstNonWhitespaceColumn(editor.getSelection().positionLineNumber);\r\n // sort selections by their start position but remeber\r\n // the original index. that allows you to create correct\r\n // offset-based selection logic without changing the\r\n // primary selection\r\n const indexedSelections = editor.getSelections()\r\n .map((selection, idx) => ({ selection, idx }))\r\n .sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\r\n for (const { selection, idx } of indexedSelections) {\r\n // extend selection with the `overwriteBefore` and `overwriteAfter` and then\r\n // compare if this matches the extensions of the primary selection\r\n let extensionBefore = SnippetSession.adjustSelection(model, selection, overwriteBefore, 0);\r\n let extensionAfter = SnippetSession.adjustSelection(model, selection, 0, overwriteAfter);\r\n if (firstBeforeText !== model.getValueInRange(extensionBefore)) {\r\n extensionBefore = selection;\r\n }\r\n if (firstAfterText !== model.getValueInRange(extensionAfter)) {\r\n extensionAfter = selection;\r\n }\r\n // merge the before and after selection into one\r\n const snippetSelection = selection\r\n .setStartPosition(extensionBefore.startLineNumber, extensionBefore.startColumn)\r\n .setEndPosition(extensionAfter.endLineNumber, extensionAfter.endColumn);\r\n const snippet = new SnippetParser().parse(template, true, enforceFinalTabstop);\r\n // adjust the template string to match the indentation and\r\n // whitespace rules of this insert location (can be different for each cursor)\r\n // happens when being asked for (default) or when this is a secondary\r\n // cursor and the leading whitespace is different\r\n const start = snippetSelection.getStartPosition();\r\n SnippetSession.adjustWhitespace(model, start, snippet, adjustWhitespace || (idx > 0 && firstLineFirstNonWhitespace !== model.getLineFirstNonWhitespaceColumn(selection.positionLineNumber)), true);\r\n snippet.resolveVariables(new CompositeSnippetVariableResolver([\r\n modelBasedVariableResolver,\r\n new ClipboardBasedVariableResolver(readClipboardText, idx, indexedSelections.length, editor.getOption(62 /* multiCursorPaste */) === 'spread'),\r\n new SelectionBasedVariableResolver(model, selection, idx, overtypingCapturer),\r\n new CommentBasedVariableResolver(model, selection),\r\n new TimeBasedVariableResolver,\r\n new WorkspaceBasedVariableResolver(workspaceService),\r\n new RandomBasedVariableResolver,\r\n ]));\r\n const offset = model.getOffsetAt(start) + delta;\r\n delta += snippet.toString().length - model.getValueLengthInRange(snippetSelection);\r\n // store snippets with the index of their originating selection.\r\n // that ensures the primiary cursor stays primary despite not being\r\n // the one with lowest start position\r\n edits[idx] = EditOperation.replace(snippetSelection, snippet.toString());\r\n edits[idx].identifier = { major: idx, minor: 0 }; // mark the edit so only our undo edits will be used to generate end cursors\r\n snippets[idx] = new OneSnippet(editor, snippet, offset);\r\n }\r\n return { edits, snippets };\r\n }\r\n dispose() {\r\n dispose(this._snippets);\r\n }\r\n _logInfo() {\r\n return `template=\"${this._template}\", merged_templates=\"${this._templateMerges.join(' -> ')}\"`;\r\n }\r\n insert() {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n // make insert edit and start with first selections\r\n const { edits, snippets } = SnippetSession.createEditsAndSnippets(this._editor, this._template, this._options.overwriteBefore, this._options.overwriteAfter, false, this._options.adjustWhitespace, this._options.clipboardText, this._options.overtypingCapturer);\r\n this._snippets = snippets;\r\n this._editor.executeEdits('snippet', edits, undoEdits => {\r\n if (this._snippets[0].hasPlaceholder) {\r\n return this._move(true);\r\n }\r\n else {\r\n return undoEdits\r\n .filter(edit => !!edit.identifier) // only use our undo edits\r\n .map(edit => Selection.fromPositions(edit.range.getEndPosition()));\r\n }\r\n });\r\n this._editor.revealRange(this._editor.getSelections()[0]);\r\n }\r\n merge(template, options = _defaultOptions) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n this._templateMerges.push([this._snippets[0]._nestingLevel, this._snippets[0]._placeholderGroupsIdx, template]);\r\n const { edits, snippets } = SnippetSession.createEditsAndSnippets(this._editor, template, options.overwriteBefore, options.overwriteAfter, true, options.adjustWhitespace, options.clipboardText, options.overtypingCapturer);\r\n this._editor.executeEdits('snippet', edits, undoEdits => {\r\n for (const snippet of this._snippets) {\r\n snippet.merge(snippets);\r\n }\r\n console.assert(snippets.length === 0);\r\n if (this._snippets[0].hasPlaceholder) {\r\n return this._move(undefined);\r\n }\r\n else {\r\n return (undoEdits\r\n .filter(edit => !!edit.identifier) // only use our undo edits\r\n .map(edit => Selection.fromPositions(edit.range.getEndPosition())));\r\n }\r\n });\r\n }\r\n next() {\r\n const newSelections = this._move(true);\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\r\n }\r\n prev() {\r\n const newSelections = this._move(false);\r\n this._editor.setSelections(newSelections);\r\n this._editor.revealPositionInCenterIfOutsideViewport(newSelections[0].getPosition());\r\n }\r\n _move(fwd) {\r\n const selections = [];\r\n for (const snippet of this._snippets) {\r\n const oneSelection = snippet.move(fwd);\r\n selections.push(...oneSelection);\r\n }\r\n return selections;\r\n }\r\n get isAtFirstPlaceholder() {\r\n return this._snippets[0].isAtFirstPlaceholder;\r\n }\r\n get isAtLastPlaceholder() {\r\n return this._snippets[0].isAtLastPlaceholder;\r\n }\r\n get hasPlaceholder() {\r\n return this._snippets[0].hasPlaceholder;\r\n }\r\n get choice() {\r\n return this._snippets[0].choice;\r\n }\r\n isSelectionWithinPlaceholders() {\r\n if (!this.hasPlaceholder) {\r\n return false;\r\n }\r\n const selections = this._editor.getSelections();\r\n if (selections.length < this._snippets.length) {\r\n // this means we started snippet mode with N\r\n // selections and have M (N > M) selections.\r\n // So one snippet is without selection -> cancel\r\n return false;\r\n }\r\n let allPossibleSelections = new Map();\r\n for (const snippet of this._snippets) {\r\n const possibleSelections = snippet.computePossibleSelections();\r\n // for the first snippet find the placeholder (and its ranges)\r\n // that contain at least one selection. for all remaining snippets\r\n // the same placeholder (and their ranges) must be used.\r\n if (allPossibleSelections.size === 0) {\r\n for (const [index, ranges] of possibleSelections) {\r\n ranges.sort(Range.compareRangesUsingStarts);\r\n for (const selection of selections) {\r\n if (ranges[0].containsRange(selection)) {\r\n allPossibleSelections.set(index, []);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (allPossibleSelections.size === 0) {\r\n // return false if we couldn't associate a selection to\r\n // this (the first) snippet\r\n return false;\r\n }\r\n // add selections from 'this' snippet so that we know all\r\n // selections for this placeholder\r\n allPossibleSelections.forEach((array, index) => {\r\n array.push(...possibleSelections.get(index));\r\n });\r\n }\r\n // sort selections (and later placeholder-ranges). then walk both\r\n // arrays and make sure the placeholder-ranges contain the corresponding\r\n // selection\r\n selections.sort(Range.compareRangesUsingStarts);\r\n for (let [index, ranges] of allPossibleSelections) {\r\n if (ranges.length !== selections.length) {\r\n allPossibleSelections.delete(index);\r\n continue;\r\n }\r\n ranges.sort(Range.compareRangesUsingStarts);\r\n for (let i = 0; i < ranges.length; i++) {\r\n if (!ranges[i].containsRange(selections[i])) {\r\n allPossibleSelections.delete(index);\r\n continue;\r\n }\r\n }\r\n }\r\n // from all possible selections we have deleted those\r\n // that don't match with the current selection. if we don't\r\n // have any left, we don't have a selection anymore\r\n return allPossibleSelections.size > 0;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as path from '../../../base/common/path.js';\r\nimport { dirname } from '../../../base/common/resources.js';\r\nimport { Text } from './snippetParser.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { getLeadingWhitespace, commonPrefixLength, isFalsyOrWhitespace } from '../../../base/common/strings.js';\r\nimport { isSingleFolderWorkspaceIdentifier, toWorkspaceIdentifier, WORKSPACE_EXTENSION } from '../../../platform/workspaces/common/workspaces.js';\r\nimport { normalizeDriveLetter } from '../../../base/common/labels.js';\r\nexport class CompositeSnippetVariableResolver {\r\n constructor(_delegates) {\r\n this._delegates = _delegates;\r\n //\r\n }\r\n resolve(variable) {\r\n for (const delegate of this._delegates) {\r\n let value = delegate.resolve(variable);\r\n if (value !== undefined) {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class SelectionBasedVariableResolver {\r\n constructor(_model, _selection, _selectionIdx, _overtypingCapturer) {\r\n this._model = _model;\r\n this._selection = _selection;\r\n this._selectionIdx = _selectionIdx;\r\n this._overtypingCapturer = _overtypingCapturer;\r\n //\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'SELECTION' || name === 'TM_SELECTED_TEXT') {\r\n let value = this._model.getValueInRange(this._selection) || undefined;\r\n let isMultiline = this._selection.startLineNumber !== this._selection.endLineNumber;\r\n // If there was no selected text, try to get last overtyped text\r\n if (!value && this._overtypingCapturer) {\r\n const info = this._overtypingCapturer.getLastOvertypedInfo(this._selectionIdx);\r\n if (info) {\r\n value = info.value;\r\n isMultiline = info.multiline;\r\n }\r\n }\r\n if (value && isMultiline && variable.snippet) {\r\n // Selection is a multiline string which we indentation we now\r\n // need to adjust. We compare the indentation of this variable\r\n // with the indentation at the editor position and add potential\r\n // extra indentation to the value\r\n const line = this._model.getLineContent(this._selection.startLineNumber);\r\n const lineLeadingWhitespace = getLeadingWhitespace(line, 0, this._selection.startColumn - 1);\r\n let varLeadingWhitespace = lineLeadingWhitespace;\r\n variable.snippet.walk(marker => {\r\n if (marker === variable) {\r\n return false;\r\n }\r\n if (marker instanceof Text) {\r\n varLeadingWhitespace = getLeadingWhitespace(marker.value.split(/\\r\\n|\\r|\\n/).pop());\r\n }\r\n return true;\r\n });\r\n const whitespaceCommonLength = commonPrefixLength(varLeadingWhitespace, lineLeadingWhitespace);\r\n value = value.replace(/(\\r\\n|\\r|\\n)(.*)/g, (m, newline, rest) => `${newline}${varLeadingWhitespace.substr(whitespaceCommonLength)}${rest}`);\r\n }\r\n return value;\r\n }\r\n else if (name === 'TM_CURRENT_LINE') {\r\n return this._model.getLineContent(this._selection.positionLineNumber);\r\n }\r\n else if (name === 'TM_CURRENT_WORD') {\r\n const info = this._model.getWordAtPosition({\r\n lineNumber: this._selection.positionLineNumber,\r\n column: this._selection.positionColumn\r\n });\r\n return info && info.word || undefined;\r\n }\r\n else if (name === 'TM_LINE_INDEX') {\r\n return String(this._selection.positionLineNumber - 1);\r\n }\r\n else if (name === 'TM_LINE_NUMBER') {\r\n return String(this._selection.positionLineNumber);\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class ModelBasedVariableResolver {\r\n constructor(_labelService, _model) {\r\n this._labelService = _labelService;\r\n this._model = _model;\r\n //\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'TM_FILENAME') {\r\n return path.basename(this._model.uri.fsPath);\r\n }\r\n else if (name === 'TM_FILENAME_BASE') {\r\n const name = path.basename(this._model.uri.fsPath);\r\n const idx = name.lastIndexOf('.');\r\n if (idx <= 0) {\r\n return name;\r\n }\r\n else {\r\n return name.slice(0, idx);\r\n }\r\n }\r\n else if (name === 'TM_DIRECTORY' && this._labelService) {\r\n if (path.dirname(this._model.uri.fsPath) === '.') {\r\n return '';\r\n }\r\n return this._labelService.getUriLabel(dirname(this._model.uri));\r\n }\r\n else if (name === 'TM_FILEPATH' && this._labelService) {\r\n return this._labelService.getUriLabel(this._model.uri);\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class ClipboardBasedVariableResolver {\r\n constructor(_readClipboardText, _selectionIdx, _selectionCount, _spread) {\r\n this._readClipboardText = _readClipboardText;\r\n this._selectionIdx = _selectionIdx;\r\n this._selectionCount = _selectionCount;\r\n this._spread = _spread;\r\n //\r\n }\r\n resolve(variable) {\r\n if (variable.name !== 'CLIPBOARD') {\r\n return undefined;\r\n }\r\n const clipboardText = this._readClipboardText();\r\n if (!clipboardText) {\r\n return undefined;\r\n }\r\n // `spread` is assigning each cursor a line of the clipboard\r\n // text whenever there the line count equals the cursor count\r\n // and when enabled\r\n if (this._spread) {\r\n const lines = clipboardText.split(/\\r\\n|\\n|\\r/).filter(s => !isFalsyOrWhitespace(s));\r\n if (lines.length === this._selectionCount) {\r\n return lines[this._selectionIdx];\r\n }\r\n }\r\n return clipboardText;\r\n }\r\n}\r\nexport class CommentBasedVariableResolver {\r\n constructor(_model, _selection) {\r\n this._model = _model;\r\n this._selection = _selection;\r\n //\r\n }\r\n resolve(variable) {\r\n const { name } = variable;\r\n const langId = this._model.getLanguageIdAtPosition(this._selection.selectionStartLineNumber, this._selection.selectionStartColumn);\r\n const config = LanguageConfigurationRegistry.getComments(langId);\r\n if (!config) {\r\n return undefined;\r\n }\r\n if (name === 'LINE_COMMENT') {\r\n return config.lineCommentToken || undefined;\r\n }\r\n else if (name === 'BLOCK_COMMENT_START') {\r\n return config.blockCommentStartToken || undefined;\r\n }\r\n else if (name === 'BLOCK_COMMENT_END') {\r\n return config.blockCommentEndToken || undefined;\r\n }\r\n return undefined;\r\n }\r\n}\r\nexport class TimeBasedVariableResolver {\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'CURRENT_YEAR') {\r\n return String(new Date().getFullYear());\r\n }\r\n else if (name === 'CURRENT_YEAR_SHORT') {\r\n return String(new Date().getFullYear()).slice(-2);\r\n }\r\n else if (name === 'CURRENT_MONTH') {\r\n return String(new Date().getMonth().valueOf() + 1).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_DATE') {\r\n return String(new Date().getDate().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_HOUR') {\r\n return String(new Date().getHours().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_MINUTE') {\r\n return String(new Date().getMinutes().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_SECOND') {\r\n return String(new Date().getSeconds().valueOf()).padStart(2, '0');\r\n }\r\n else if (name === 'CURRENT_DAY_NAME') {\r\n return TimeBasedVariableResolver.dayNames[new Date().getDay()];\r\n }\r\n else if (name === 'CURRENT_DAY_NAME_SHORT') {\r\n return TimeBasedVariableResolver.dayNamesShort[new Date().getDay()];\r\n }\r\n else if (name === 'CURRENT_MONTH_NAME') {\r\n return TimeBasedVariableResolver.monthNames[new Date().getMonth()];\r\n }\r\n else if (name === 'CURRENT_MONTH_NAME_SHORT') {\r\n return TimeBasedVariableResolver.monthNamesShort[new Date().getMonth()];\r\n }\r\n else if (name === 'CURRENT_SECONDS_UNIX') {\r\n return String(Math.floor(Date.now() / 1000));\r\n }\r\n return undefined;\r\n }\r\n}\r\nTimeBasedVariableResolver.dayNames = [nls.localize('Sunday', \"Sunday\"), nls.localize('Monday', \"Monday\"), nls.localize('Tuesday', \"Tuesday\"), nls.localize('Wednesday', \"Wednesday\"), nls.localize('Thursday', \"Thursday\"), nls.localize('Friday', \"Friday\"), nls.localize('Saturday', \"Saturday\")];\r\nTimeBasedVariableResolver.dayNamesShort = [nls.localize('SundayShort', \"Sun\"), nls.localize('MondayShort', \"Mon\"), nls.localize('TuesdayShort', \"Tue\"), nls.localize('WednesdayShort', \"Wed\"), nls.localize('ThursdayShort', \"Thu\"), nls.localize('FridayShort', \"Fri\"), nls.localize('SaturdayShort', \"Sat\")];\r\nTimeBasedVariableResolver.monthNames = [nls.localize('January', \"January\"), nls.localize('February', \"February\"), nls.localize('March', \"March\"), nls.localize('April', \"April\"), nls.localize('May', \"May\"), nls.localize('June', \"June\"), nls.localize('July', \"July\"), nls.localize('August', \"August\"), nls.localize('September', \"September\"), nls.localize('October', \"October\"), nls.localize('November', \"November\"), nls.localize('December', \"December\")];\r\nTimeBasedVariableResolver.monthNamesShort = [nls.localize('JanuaryShort', \"Jan\"), nls.localize('FebruaryShort', \"Feb\"), nls.localize('MarchShort', \"Mar\"), nls.localize('AprilShort', \"Apr\"), nls.localize('MayShort', \"May\"), nls.localize('JuneShort', \"Jun\"), nls.localize('JulyShort', \"Jul\"), nls.localize('AugustShort', \"Aug\"), nls.localize('SeptemberShort', \"Sep\"), nls.localize('OctoberShort', \"Oct\"), nls.localize('NovemberShort', \"Nov\"), nls.localize('DecemberShort', \"Dec\")];\r\nexport class WorkspaceBasedVariableResolver {\r\n constructor(_workspaceService) {\r\n this._workspaceService = _workspaceService;\r\n //\r\n }\r\n resolve(variable) {\r\n if (!this._workspaceService) {\r\n return undefined;\r\n }\r\n const workspaceIdentifier = toWorkspaceIdentifier(this._workspaceService.getWorkspace());\r\n if (!workspaceIdentifier) {\r\n return undefined;\r\n }\r\n if (variable.name === 'WORKSPACE_NAME') {\r\n return this._resolveWorkspaceName(workspaceIdentifier);\r\n }\r\n else if (variable.name === 'WORKSPACE_FOLDER') {\r\n return this._resoveWorkspacePath(workspaceIdentifier);\r\n }\r\n return undefined;\r\n }\r\n _resolveWorkspaceName(workspaceIdentifier) {\r\n if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\r\n return path.basename(workspaceIdentifier.path);\r\n }\r\n let filename = path.basename(workspaceIdentifier.configPath.path);\r\n if (filename.endsWith(WORKSPACE_EXTENSION)) {\r\n filename = filename.substr(0, filename.length - WORKSPACE_EXTENSION.length - 1);\r\n }\r\n return filename;\r\n }\r\n _resoveWorkspacePath(workspaceIdentifier) {\r\n if (isSingleFolderWorkspaceIdentifier(workspaceIdentifier)) {\r\n return normalizeDriveLetter(workspaceIdentifier.fsPath);\r\n }\r\n let filename = path.basename(workspaceIdentifier.configPath.path);\r\n let folderpath = workspaceIdentifier.configPath.fsPath;\r\n if (folderpath.endsWith(filename)) {\r\n folderpath = folderpath.substr(0, folderpath.length - filename.length - 1);\r\n }\r\n return (folderpath ? normalizeDriveLetter(folderpath) : '/');\r\n }\r\n}\r\nexport class RandomBasedVariableResolver {\r\n resolve(variable) {\r\n const { name } = variable;\r\n if (name === 'RANDOM') {\r\n return Math.random().toString().slice(-6);\r\n }\r\n else if (name === 'RANDOM_HEX') {\r\n return Math.random().toString(16).slice(-6);\r\n }\r\n return undefined;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { fuzzyScore, fuzzyScoreGracefulAggressive, FuzzyScore, anyScore } from '../../../base/common/filters.js';\r\nimport { compareIgnoreCase } from '../../../base/common/strings.js';\r\nexport class LineContext {\r\n constructor(leadingLineContent, characterCountDelta) {\r\n this.leadingLineContent = leadingLineContent;\r\n this.characterCountDelta = characterCountDelta;\r\n }\r\n}\r\n/**\r\n * Sorted, filtered completion view model\r\n * */\r\nexport class CompletionModel {\r\n constructor(items, column, lineContext, wordDistance, options, snippetSuggestions, clipboardText) {\r\n this.clipboardText = clipboardText;\r\n this._snippetCompareFn = CompletionModel._compareCompletionItems;\r\n this._items = items;\r\n this._column = column;\r\n this._wordDistance = wordDistance;\r\n this._options = options;\r\n this._refilterKind = 1 /* All */;\r\n this._lineContext = lineContext;\r\n if (snippetSuggestions === 'top') {\r\n this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsUp;\r\n }\r\n else if (snippetSuggestions === 'bottom') {\r\n this._snippetCompareFn = CompletionModel._compareCompletionItemsSnippetsDown;\r\n }\r\n }\r\n get lineContext() {\r\n return this._lineContext;\r\n }\r\n set lineContext(value) {\r\n if (this._lineContext.leadingLineContent !== value.leadingLineContent\r\n || this._lineContext.characterCountDelta !== value.characterCountDelta) {\r\n this._refilterKind = this._lineContext.characterCountDelta < value.characterCountDelta && this._filteredItems ? 2 /* Incr */ : 1 /* All */;\r\n this._lineContext = value;\r\n }\r\n }\r\n get items() {\r\n this._ensureCachedState();\r\n return this._filteredItems;\r\n }\r\n get allProvider() {\r\n this._ensureCachedState();\r\n return this._allProvider;\r\n }\r\n get incomplete() {\r\n this._ensureCachedState();\r\n return this._isIncomplete;\r\n }\r\n adopt(except) {\r\n let res = [];\r\n for (let i = 0; i < this._items.length;) {\r\n if (!except.has(this._items[i].provider)) {\r\n res.push(this._items[i]);\r\n // unordered removed\r\n this._items[i] = this._items[this._items.length - 1];\r\n this._items.pop();\r\n }\r\n else {\r\n // continue with next item\r\n i++;\r\n }\r\n }\r\n this._refilterKind = 1 /* All */;\r\n return res;\r\n }\r\n get stats() {\r\n this._ensureCachedState();\r\n return this._stats;\r\n }\r\n _ensureCachedState() {\r\n if (this._refilterKind !== 0 /* Nothing */) {\r\n this._createCachedState();\r\n }\r\n }\r\n _createCachedState() {\r\n this._isIncomplete = new Set();\r\n this._allProvider = new Set();\r\n this._stats = { suggestionCount: 0, snippetCount: 0, textCount: 0 };\r\n const { leadingLineContent, characterCountDelta } = this._lineContext;\r\n let word = '';\r\n let wordLow = '';\r\n // incrementally filter less\r\n const source = this._refilterKind === 1 /* All */ ? this._items : this._filteredItems;\r\n const target = [];\r\n // picks a score function based on the number of\r\n // items that we have to score/filter and based on the\r\n // user-configuration\r\n const scoreFn = (!this._options.filterGraceful || source.length > 2000) ? fuzzyScore : fuzzyScoreGracefulAggressive;\r\n for (let i = 0; i < source.length; i++) {\r\n const item = source[i];\r\n if (item.isInvalid) {\r\n continue; // SKIP invalid items\r\n }\r\n // collect those supports that signaled having\r\n // an incomplete result\r\n if (item.container.incomplete) {\r\n this._isIncomplete.add(item.provider);\r\n }\r\n this._allProvider.add(item.provider);\r\n // 'word' is that remainder of the current line that we\r\n // filter and score against. In theory each suggestion uses a\r\n // different word, but in practice not - that's why we cache\r\n const overwriteBefore = item.position.column - item.editStart.column;\r\n const wordLen = overwriteBefore + characterCountDelta - (item.position.column - this._column);\r\n if (word.length !== wordLen) {\r\n word = wordLen === 0 ? '' : leadingLineContent.slice(-wordLen);\r\n wordLow = word.toLowerCase();\r\n }\r\n // remember the word against which this item was\r\n // scored\r\n item.word = word;\r\n if (wordLen === 0) {\r\n // when there is nothing to score against, don't\r\n // event try to do. Use a const rank and rely on\r\n // the fallback-sort using the initial sort order.\r\n // use a score of `-100` because that is out of the\r\n // bound of values `fuzzyScore` will return\r\n item.score = FuzzyScore.Default;\r\n }\r\n else {\r\n // skip word characters that are whitespace until\r\n // we have hit the replace range (overwriteBefore)\r\n let wordPos = 0;\r\n while (wordPos < overwriteBefore) {\r\n const ch = word.charCodeAt(wordPos);\r\n if (ch === 32 /* Space */ || ch === 9 /* Tab */) {\r\n wordPos += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n const textLabel = typeof item.completion.label === 'string' ? item.completion.label : item.completion.label.name;\r\n if (wordPos >= wordLen) {\r\n // the wordPos at which scoring starts is the whole word\r\n // and therefore the same rules as not having a word apply\r\n item.score = FuzzyScore.Default;\r\n }\r\n else if (typeof item.completion.filterText === 'string') {\r\n // when there is a `filterText` it must match the `word`.\r\n // if it matches we check with the label to compute highlights\r\n // and if that doesn't yield a result we have no highlights,\r\n // despite having the match\r\n let match = scoreFn(word, wordLow, wordPos, item.completion.filterText, item.filterTextLow, 0, false);\r\n if (!match) {\r\n continue; // NO match\r\n }\r\n if (compareIgnoreCase(item.completion.filterText, textLabel) === 0) {\r\n // filterText and label are actually the same -> use good highlights\r\n item.score = match;\r\n }\r\n else {\r\n // re-run the scorer on the label in the hope of a result BUT use the rank\r\n // of the filterText-match\r\n item.score = anyScore(word, wordLow, wordPos, textLabel, item.labelLow, 0);\r\n item.score[0] = match[0]; // use score from filterText\r\n }\r\n }\r\n else {\r\n // by default match `word` against the `label`\r\n let match = scoreFn(word, wordLow, wordPos, textLabel, item.labelLow, 0, false);\r\n if (!match) {\r\n continue; // NO match\r\n }\r\n item.score = match;\r\n }\r\n }\r\n item.idx = i;\r\n item.distance = this._wordDistance.distance(item.position, item.completion);\r\n target.push(item);\r\n // update stats\r\n this._stats.suggestionCount++;\r\n switch (item.completion.kind) {\r\n case 27 /* Snippet */:\r\n this._stats.snippetCount++;\r\n break;\r\n case 18 /* Text */:\r\n this._stats.textCount++;\r\n break;\r\n }\r\n }\r\n this._filteredItems = target.sort(this._snippetCompareFn);\r\n this._refilterKind = 0 /* Nothing */;\r\n }\r\n static _compareCompletionItems(a, b) {\r\n if (a.score[0] > b.score[0]) {\r\n return -1;\r\n }\r\n else if (a.score[0] < b.score[0]) {\r\n return 1;\r\n }\r\n else if (a.distance < b.distance) {\r\n return -1;\r\n }\r\n else if (a.distance > b.distance) {\r\n return 1;\r\n }\r\n else if (a.idx < b.idx) {\r\n return -1;\r\n }\r\n else if (a.idx > b.idx) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n static _compareCompletionItemsSnippetsDown(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n }\r\n return CompletionModel._compareCompletionItems(a, b);\r\n }\r\n static _compareCompletionItemsSnippetsUp(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n }\r\n return CompletionModel._compareCompletionItems(a, b);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { onUnexpectedExternalError, canceled, isPromiseCanceledError } from '../../../base/common/errors.js';\r\nimport { registerDefaultLanguageCommand } from '../../browser/editorExtensions.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { FuzzyScore } from '../../../base/common/filters.js';\r\nimport { isDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { MenuId } from '../../../platform/actions/common/actions.js';\r\nimport { SnippetParser } from '../snippet/snippetParser.js';\r\nexport const Context = {\r\n Visible: new RawContextKey('suggestWidgetVisible', false),\r\n DetailsVisible: new RawContextKey('suggestWidgetDetailsVisible', false),\r\n MultipleSuggestions: new RawContextKey('suggestWidgetMultipleSuggestions', false),\r\n MakesTextEdit: new RawContextKey('suggestionMakesTextEdit', true),\r\n AcceptSuggestionsOnEnter: new RawContextKey('acceptSuggestionOnEnter', true),\r\n HasInsertAndReplaceRange: new RawContextKey('suggestionHasInsertAndReplaceRange', false),\r\n CanResolve: new RawContextKey('suggestionCanResolve', false),\r\n};\r\nexport const suggestWidgetStatusbarMenu = new MenuId('suggestWidgetStatusBar');\r\nexport class CompletionItem {\r\n constructor(position, completion, container, provider) {\r\n this.position = position;\r\n this.completion = completion;\r\n this.container = container;\r\n this.provider = provider;\r\n // validation\r\n this.isInvalid = false;\r\n // sorting, filtering\r\n this.score = FuzzyScore.Default;\r\n this.distance = 0;\r\n this.textLabel = typeof completion.label === 'string'\r\n ? completion.label\r\n : completion.label.name;\r\n // ensure lower-variants (perf)\r\n this.labelLow = this.textLabel.toLowerCase();\r\n // validate label\r\n this.isInvalid = !this.textLabel;\r\n this.sortTextLow = completion.sortText && completion.sortText.toLowerCase();\r\n this.filterTextLow = completion.filterText && completion.filterText.toLowerCase();\r\n // normalize ranges\r\n if (Range.isIRange(completion.range)) {\r\n this.editStart = new Position(completion.range.startLineNumber, completion.range.startColumn);\r\n this.editInsertEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\r\n this.editReplaceEnd = new Position(completion.range.endLineNumber, completion.range.endColumn);\r\n // validate range\r\n this.isInvalid = this.isInvalid\r\n || Range.spansMultipleLines(completion.range) || completion.range.startLineNumber !== position.lineNumber;\r\n }\r\n else {\r\n this.editStart = new Position(completion.range.insert.startLineNumber, completion.range.insert.startColumn);\r\n this.editInsertEnd = new Position(completion.range.insert.endLineNumber, completion.range.insert.endColumn);\r\n this.editReplaceEnd = new Position(completion.range.replace.endLineNumber, completion.range.replace.endColumn);\r\n // validate ranges\r\n this.isInvalid = this.isInvalid\r\n || Range.spansMultipleLines(completion.range.insert) || Range.spansMultipleLines(completion.range.replace)\r\n || completion.range.insert.startLineNumber !== position.lineNumber || completion.range.replace.startLineNumber !== position.lineNumber\r\n || completion.range.insert.startColumn !== completion.range.replace.startColumn;\r\n }\r\n // create the suggestion resolver\r\n if (typeof provider.resolveCompletionItem !== 'function') {\r\n this._resolveCache = Promise.resolve();\r\n this._isResolved = true;\r\n }\r\n }\r\n // ---- resolving\r\n get isResolved() {\r\n return !!this._isResolved;\r\n }\r\n resolve(token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this._resolveCache) {\r\n const sub = token.onCancellationRequested(() => {\r\n this._resolveCache = undefined;\r\n this._isResolved = false;\r\n });\r\n this._resolveCache = Promise.resolve(this.provider.resolveCompletionItem(this.completion, token)).then(value => {\r\n Object.assign(this.completion, value);\r\n this._isResolved = true;\r\n sub.dispose();\r\n }, err => {\r\n if (isPromiseCanceledError(err)) {\r\n // the IPC queue will reject the request with the\r\n // cancellation error -> reset cached\r\n this._resolveCache = undefined;\r\n this._isResolved = false;\r\n }\r\n });\r\n }\r\n return this._resolveCache;\r\n });\r\n }\r\n}\r\nexport class CompletionOptions {\r\n constructor(snippetSortOrder = 2 /* Bottom */, kindFilter = new Set(), providerFilter = new Set()) {\r\n this.snippetSortOrder = snippetSortOrder;\r\n this.kindFilter = kindFilter;\r\n this.providerFilter = providerFilter;\r\n }\r\n}\r\nCompletionOptions.default = new CompletionOptions();\r\nlet _snippetSuggestSupport;\r\nexport function getSnippetSuggestSupport() {\r\n return _snippetSuggestSupport;\r\n}\r\nclass CompletionItemModel {\r\n constructor(items, needsClipboard, dispoables) {\r\n this.items = items;\r\n this.needsClipboard = needsClipboard;\r\n this.dispoables = dispoables;\r\n }\r\n}\r\nexport function provideSuggestionItems(model, position, options = CompletionOptions.default, context = { triggerKind: 0 /* Invoke */ }, token = CancellationToken.None) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // const t1 = Date.now();\r\n position = position.clone();\r\n const word = model.getWordAtPosition(position);\r\n const defaultReplaceRange = word ? new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn) : Range.fromPositions(position);\r\n const defaultRange = { replace: defaultReplaceRange, insert: defaultReplaceRange.setEndPosition(position.lineNumber, position.column) };\r\n const result = [];\r\n const disposables = new DisposableStore();\r\n let needsClipboard = false;\r\n const onCompletionList = (provider, container) => {\r\n if (!container) {\r\n return;\r\n }\r\n for (let suggestion of container.suggestions) {\r\n if (!options.kindFilter.has(suggestion.kind)) {\r\n // fill in default range when missing\r\n if (!suggestion.range) {\r\n suggestion.range = defaultRange;\r\n }\r\n // fill in default sortText when missing\r\n if (!suggestion.sortText) {\r\n suggestion.sortText = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.name;\r\n }\r\n if (!needsClipboard && suggestion.insertTextRules && suggestion.insertTextRules & 4 /* InsertAsSnippet */) {\r\n needsClipboard = SnippetParser.guessNeedsClipboard(suggestion.insertText);\r\n }\r\n result.push(new CompletionItem(position, suggestion, container, provider));\r\n }\r\n }\r\n if (isDisposable(container)) {\r\n disposables.add(container);\r\n }\r\n };\r\n // ask for snippets in parallel to asking \"real\" providers. Only do something if configured to\r\n // do so - no snippet filter, no special-providers-only request\r\n const snippetCompletions = (() => __awaiter(this, void 0, void 0, function* () {\r\n if (!_snippetSuggestSupport || options.kindFilter.has(27 /* Snippet */)) {\r\n return;\r\n }\r\n if (options.providerFilter.size > 0 && !options.providerFilter.has(_snippetSuggestSupport)) {\r\n return;\r\n }\r\n const list = yield _snippetSuggestSupport.provideCompletionItems(model, position, context, token);\r\n onCompletionList(_snippetSuggestSupport, list);\r\n }))();\r\n // add suggestions from contributed providers - providers are ordered in groups of\r\n // equal score and once a group produces a result the process stops\r\n // get provider groups, always add snippet suggestion provider\r\n for (let providerGroup of modes.CompletionProviderRegistry.orderedGroups(model)) {\r\n // for each support in the group ask for suggestions\r\n let lenBefore = result.length;\r\n yield Promise.all(providerGroup.map((provider) => __awaiter(this, void 0, void 0, function* () {\r\n if (options.providerFilter.size > 0 && !options.providerFilter.has(provider)) {\r\n return;\r\n }\r\n try {\r\n const list = yield provider.provideCompletionItems(model, position, context, token);\r\n onCompletionList(provider, list);\r\n }\r\n catch (err) {\r\n onUnexpectedExternalError(err);\r\n }\r\n })));\r\n if (lenBefore !== result.length || token.isCancellationRequested) {\r\n break;\r\n }\r\n }\r\n yield snippetCompletions;\r\n if (token.isCancellationRequested) {\r\n disposables.dispose();\r\n return Promise.reject(canceled());\r\n }\r\n // console.log(`${result.length} items AFTER ${Date.now() - t1}ms`);\r\n return new CompletionItemModel(result.sort(getSuggestionComparator(options.snippetSortOrder)), needsClipboard, disposables);\r\n });\r\n}\r\nfunction defaultComparator(a, b) {\r\n // check with 'sortText'\r\n if (a.sortTextLow && b.sortTextLow) {\r\n if (a.sortTextLow < b.sortTextLow) {\r\n return -1;\r\n }\r\n else if (a.sortTextLow > b.sortTextLow) {\r\n return 1;\r\n }\r\n }\r\n // check with 'label'\r\n if (a.completion.label < b.completion.label) {\r\n return -1;\r\n }\r\n else if (a.completion.label > b.completion.label) {\r\n return 1;\r\n }\r\n // check with 'type'\r\n return a.completion.kind - b.completion.kind;\r\n}\r\nfunction snippetUpComparator(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n }\r\n return defaultComparator(a, b);\r\n}\r\nfunction snippetDownComparator(a, b) {\r\n if (a.completion.kind !== b.completion.kind) {\r\n if (a.completion.kind === 27 /* Snippet */) {\r\n return 1;\r\n }\r\n else if (b.completion.kind === 27 /* Snippet */) {\r\n return -1;\r\n }\r\n }\r\n return defaultComparator(a, b);\r\n}\r\nconst _snippetComparators = new Map();\r\n_snippetComparators.set(0 /* Top */, snippetUpComparator);\r\n_snippetComparators.set(2 /* Bottom */, snippetDownComparator);\r\n_snippetComparators.set(1 /* Inline */, defaultComparator);\r\nexport function getSuggestionComparator(snippetConfig) {\r\n return _snippetComparators.get(snippetConfig);\r\n}\r\nregisterDefaultLanguageCommand('_executeCompletionItemProvider', (model, position, args) => __awaiter(void 0, void 0, void 0, function* () {\r\n const result = {\r\n incomplete: false,\r\n suggestions: []\r\n };\r\n const resolving = [];\r\n const maxItemsToResolve = args['maxItemsToResolve'] || 0;\r\n const completions = yield provideSuggestionItems(model, position);\r\n for (const item of completions.items) {\r\n if (resolving.length < maxItemsToResolve) {\r\n resolving.push(item.resolve(CancellationToken.None));\r\n }\r\n result.incomplete = result.incomplete || item.container.incomplete;\r\n result.suggestions.push(item.completion);\r\n }\r\n try {\r\n yield Promise.all(resolving);\r\n return result;\r\n }\r\n finally {\r\n setTimeout(() => completions.dispoables.dispose(), 100);\r\n }\r\n}));\r\nconst _provider = new class {\r\n constructor() {\r\n this.onlyOnceSuggestions = [];\r\n }\r\n provideCompletionItems() {\r\n let suggestions = this.onlyOnceSuggestions.slice(0);\r\n let result = { suggestions };\r\n this.onlyOnceSuggestions.length = 0;\r\n return result;\r\n }\r\n};\r\nmodes.CompletionProviderRegistry.register('*', _provider);\r\nexport function showSimpleSuggestions(editor, suggestions) {\r\n setTimeout(() => {\r\n _provider.onlyOnceSuggestions.push(...suggestions);\r\n editor.getContribution('editor.contrib.suggestController').triggerSuggest(new Set().add(_provider));\r\n }, 0);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { dispose } from '../../../base/common/lifecycle.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nlet SuggestAlternatives = class SuggestAlternatives {\r\n constructor(_editor, contextKeyService) {\r\n this._editor = _editor;\r\n this._index = 0;\r\n this._ckOtherSuggestions = SuggestAlternatives.OtherSuggestions.bindTo(contextKeyService);\r\n }\r\n dispose() {\r\n this.reset();\r\n }\r\n reset() {\r\n this._ckOtherSuggestions.reset();\r\n dispose(this._listener);\r\n this._model = undefined;\r\n this._acceptNext = undefined;\r\n this._ignore = false;\r\n }\r\n set({ model, index }, acceptNext) {\r\n // no suggestions -> nothing to do\r\n if (model.items.length === 0) {\r\n this.reset();\r\n return;\r\n }\r\n // no alternative suggestions -> nothing to do\r\n let nextIndex = SuggestAlternatives._moveIndex(true, model, index);\r\n if (nextIndex === index) {\r\n this.reset();\r\n return;\r\n }\r\n this._acceptNext = acceptNext;\r\n this._model = model;\r\n this._index = index;\r\n this._listener = this._editor.onDidChangeCursorPosition(() => {\r\n if (!this._ignore) {\r\n this.reset();\r\n }\r\n });\r\n this._ckOtherSuggestions.set(true);\r\n }\r\n static _moveIndex(fwd, model, index) {\r\n let newIndex = index;\r\n while (true) {\r\n newIndex = (newIndex + model.items.length + (fwd ? +1 : -1)) % model.items.length;\r\n if (newIndex === index) {\r\n break;\r\n }\r\n if (!model.items[newIndex].completion.additionalTextEdits) {\r\n break;\r\n }\r\n }\r\n return newIndex;\r\n }\r\n next() {\r\n this._move(true);\r\n }\r\n prev() {\r\n this._move(false);\r\n }\r\n _move(fwd) {\r\n if (!this._model) {\r\n // nothing to reason about\r\n return;\r\n }\r\n try {\r\n this._ignore = true;\r\n this._index = SuggestAlternatives._moveIndex(fwd, this._model, this._index);\r\n this._acceptNext({ index: this._index, item: this._model.items[this._index], model: this._model });\r\n }\r\n finally {\r\n this._ignore = false;\r\n }\r\n }\r\n};\r\nSuggestAlternatives.OtherSuggestions = new RawContextKey('hasOtherSuggestions', false);\r\nSuggestAlternatives = __decorate([\r\n __param(1, IContextKeyService)\r\n], SuggestAlternatives);\r\nexport { SuggestAlternatives };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { CharacterSet } from '../../common/core/characterClassifier.js';\r\nexport class CommitCharacterController {\r\n constructor(editor, widget, accept) {\r\n this._disposables = new DisposableStore();\r\n this._disposables.add(widget.onDidShow(() => this._onItem(widget.getFocusedItem())));\r\n this._disposables.add(widget.onDidFocus(this._onItem, this));\r\n this._disposables.add(widget.onDidHide(this.reset, this));\r\n this._disposables.add(editor.onWillType(text => {\r\n if (this._active && !widget.isFrozen()) {\r\n const ch = text.charCodeAt(text.length - 1);\r\n if (this._active.acceptCharacters.has(ch) && editor.getOption(0 /* acceptSuggestionOnCommitCharacter */)) {\r\n accept(this._active.item);\r\n }\r\n }\r\n }));\r\n }\r\n _onItem(selected) {\r\n if (!selected || !isNonEmptyArray(selected.item.completion.commitCharacters)) {\r\n // no item or no commit characters\r\n this.reset();\r\n return;\r\n }\r\n if (this._active && this._active.item.item === selected.item) {\r\n // still the same item\r\n return;\r\n }\r\n // keep item and its commit characters\r\n const acceptCharacters = new CharacterSet();\r\n for (const ch of selected.item.completion.commitCharacters) {\r\n if (ch.length > 0) {\r\n acceptCharacters.add(ch.charCodeAt(0));\r\n }\r\n }\r\n this._active = { acceptCharacters, item: selected };\r\n }\r\n reset() {\r\n this._active = undefined;\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { isNonEmptyArray } from '../../../base/common/arrays.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { SimpleKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { dispose, DisposableStore, toDisposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { StableEditorScrollState } from '../../browser/core/editorState.js';\r\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { SnippetController2 } from '../snippet/snippetController2.js';\r\nimport { SnippetParser } from '../snippet/snippetParser.js';\r\nimport { ISuggestMemoryService } from './suggestMemory.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { ICommandService, CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\r\nimport { SuggestAlternatives } from './suggestAlternatives.js';\r\nimport { SuggestModel } from './suggestModel.js';\r\nimport { SuggestWidget } from './suggestWidget.js';\r\nimport { WordContextKey } from './wordContextKey.js';\r\nimport { Event } from '../../../base/common/event.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { IdleValue } from '../../../base/common/async.js';\r\nimport { isObject, assertType } from '../../../base/common/types.js';\r\nimport { CommitCharacterController } from './suggestCommitCharacters.js';\r\nimport { OvertypingCapturer } from './suggestOvertypingCapturer.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport * as platform from '../../../base/common/platform.js';\r\nimport { MenuRegistry } from '../../../platform/actions/common/actions.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { ILogService } from '../../../platform/log/common/log.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\n// sticky suggest widget which doesn't disappear on focus out and such\r\nlet _sticky = false;\r\n// _sticky = Boolean(\"true\"); // done \"weirdly\" so that a lint warning prevents you from pushing this\r\nclass LineSuffix {\r\n constructor(_model, _position) {\r\n this._model = _model;\r\n this._position = _position;\r\n // spy on what's happening right of the cursor. two cases:\r\n // 1. end of line -> check that it's still end of line\r\n // 2. mid of line -> add a marker and compute the delta\r\n const maxColumn = _model.getLineMaxColumn(_position.lineNumber);\r\n if (maxColumn !== _position.column) {\r\n const offset = _model.getOffsetAt(_position);\r\n const end = _model.getPositionAt(offset + 1);\r\n this._marker = _model.deltaDecorations([], [{\r\n range: Range.fromPositions(_position, end),\r\n options: { stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ }\r\n }]);\r\n }\r\n }\r\n dispose() {\r\n if (this._marker && !this._model.isDisposed()) {\r\n this._model.deltaDecorations(this._marker, []);\r\n }\r\n }\r\n delta(position) {\r\n if (this._model.isDisposed() || this._position.lineNumber !== position.lineNumber) {\r\n // bail out early if things seems fishy\r\n return 0;\r\n }\r\n // read the marker (in case suggest was triggered at line end) or compare\r\n // the cursor to the line end.\r\n if (this._marker) {\r\n const range = this._model.getDecorationRange(this._marker[0]);\r\n const end = this._model.getOffsetAt(range.getStartPosition());\r\n return end - this._model.getOffsetAt(position);\r\n }\r\n else {\r\n return this._model.getLineMaxColumn(position.lineNumber) - position.column;\r\n }\r\n }\r\n}\r\nlet SuggestController = class SuggestController {\r\n constructor(editor, editorWorker, _memoryService, _commandService, _contextKeyService, _instantiationService, _logService, clipboardService) {\r\n this._memoryService = _memoryService;\r\n this._commandService = _commandService;\r\n this._contextKeyService = _contextKeyService;\r\n this._instantiationService = _instantiationService;\r\n this._logService = _logService;\r\n this._lineSuffix = new MutableDisposable();\r\n this._toDispose = new DisposableStore();\r\n this.editor = editor;\r\n this.model = new SuggestModel(this.editor, editorWorker, clipboardService);\r\n this.widget = this._toDispose.add(new IdleValue(() => {\r\n const widget = this._instantiationService.createInstance(SuggestWidget, this.editor);\r\n this._toDispose.add(widget);\r\n this._toDispose.add(widget.onDidSelect(item => this._insertSuggestion(item, 0), this));\r\n // Wire up logic to accept a suggestion on certain characters\r\n const commitCharacterController = new CommitCharacterController(this.editor, widget, item => this._insertSuggestion(item, 2 /* NoAfterUndoStop */));\r\n this._toDispose.add(commitCharacterController);\r\n this._toDispose.add(this.model.onDidSuggest(e => {\r\n if (e.completionModel.items.length === 0) {\r\n commitCharacterController.reset();\r\n }\r\n }));\r\n // Wire up makes text edit context key\r\n const ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);\r\n const ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);\r\n const ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);\r\n this._toDispose.add(toDisposable(() => {\r\n ctxMakesTextEdit.reset();\r\n ctxHasInsertAndReplace.reset();\r\n ctxCanResolve.reset();\r\n }));\r\n this._toDispose.add(widget.onDidFocus(({ item }) => {\r\n // (ctx: makesTextEdit)\r\n const position = this.editor.getPosition();\r\n const startColumn = item.editStart.column;\r\n const endColumn = position.column;\r\n let value = true;\r\n if (this.editor.getOption(1 /* acceptSuggestionOnEnter */) === 'smart'\r\n && this.model.state === 2 /* Auto */\r\n && !item.completion.command\r\n && !item.completion.additionalTextEdits\r\n && !(item.completion.insertTextRules & 4 /* InsertAsSnippet */)\r\n && endColumn - startColumn === item.completion.insertText.length) {\r\n const oldText = this.editor.getModel().getValueInRange({\r\n startLineNumber: position.lineNumber,\r\n startColumn,\r\n endLineNumber: position.lineNumber,\r\n endColumn\r\n });\r\n value = oldText !== item.completion.insertText;\r\n }\r\n ctxMakesTextEdit.set(value);\r\n // (ctx: hasInsertAndReplaceRange)\r\n ctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));\r\n // (ctx: canResolve)\r\n ctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);\r\n }));\r\n this._toDispose.add(widget.onDetailsKeyDown(e => {\r\n // cmd + c on macOS, ctrl + c on Win / Linux\r\n if (e.toKeybinding().equals(new SimpleKeybinding(true, false, false, false, 33 /* KEY_C */)) ||\r\n (platform.isMacintosh && e.toKeybinding().equals(new SimpleKeybinding(false, false, false, true, 33 /* KEY_C */)))) {\r\n e.stopPropagation();\r\n return;\r\n }\r\n if (!e.toKeybinding().isModifierKey()) {\r\n this.editor.focus();\r\n }\r\n }));\r\n return widget;\r\n }));\r\n // Wire up text overtyping capture\r\n this._overtypingCapturer = this._toDispose.add(new IdleValue(() => {\r\n return this._toDispose.add(new OvertypingCapturer(this.editor, this.model));\r\n }));\r\n this._alternatives = this._toDispose.add(new IdleValue(() => {\r\n return this._toDispose.add(new SuggestAlternatives(this.editor, this._contextKeyService));\r\n }));\r\n this._toDispose.add(_instantiationService.createInstance(WordContextKey, editor));\r\n this._toDispose.add(this.model.onDidTrigger(e => {\r\n this.widget.value.showTriggered(e.auto, e.shy ? 250 : 50);\r\n this._lineSuffix.value = new LineSuffix(this.editor.getModel(), e.position);\r\n }));\r\n this._toDispose.add(this.model.onDidSuggest(e => {\r\n if (!e.shy) {\r\n let index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), e.completionModel.items);\r\n this.widget.value.showSuggestions(e.completionModel, index, e.isFrozen, e.auto);\r\n }\r\n }));\r\n this._toDispose.add(this.model.onDidCancel(e => {\r\n if (!e.retrigger) {\r\n this.widget.value.hideWidget();\r\n }\r\n }));\r\n this._toDispose.add(this.editor.onDidBlurEditorWidget(() => {\r\n if (!_sticky) {\r\n this.model.cancel();\r\n this.model.clear();\r\n }\r\n }));\r\n // Manage the acceptSuggestionsOnEnter context key\r\n let acceptSuggestionsOnEnter = SuggestContext.AcceptSuggestionsOnEnter.bindTo(_contextKeyService);\r\n let updateFromConfig = () => {\r\n const acceptSuggestionOnEnter = this.editor.getOption(1 /* acceptSuggestionOnEnter */);\r\n acceptSuggestionsOnEnter.set(acceptSuggestionOnEnter === 'on' || acceptSuggestionOnEnter === 'smart');\r\n };\r\n this._toDispose.add(this.editor.onDidChangeConfiguration(() => updateFromConfig()));\r\n updateFromConfig();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(SuggestController.ID);\r\n }\r\n dispose() {\r\n this._alternatives.dispose();\r\n this._toDispose.dispose();\r\n this.widget.dispose();\r\n this.model.dispose();\r\n this._lineSuffix.dispose();\r\n }\r\n _insertSuggestion(event, flags) {\r\n if (!event || !event.item) {\r\n this._alternatives.value.reset();\r\n this.model.cancel();\r\n this.model.clear();\r\n return;\r\n }\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n const model = this.editor.getModel();\r\n const modelVersionNow = model.getAlternativeVersionId();\r\n const { item } = event;\r\n //\r\n const tasks = [];\r\n const cts = new CancellationTokenSource();\r\n // pushing undo stops *before* additional text edits and\r\n // *after* the main edit\r\n if (!(flags & 1 /* NoBeforeUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n // compute overwrite[Before|After] deltas BEFORE applying extra edits\r\n const info = this.getOverwriteInfo(item, Boolean(flags & 8 /* AlternativeOverwriteConfig */));\r\n // keep item in memory\r\n this._memoryService.memorize(model, this.editor.getPosition(), item);\r\n if (Array.isArray(item.completion.additionalTextEdits)) {\r\n // sync additional edits\r\n const scrollState = StableEditorScrollState.capture(this.editor);\r\n this.editor.executeEdits('suggestController.additionalTextEdits.sync', item.completion.additionalTextEdits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text)));\r\n scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\r\n }\r\n else if (!item.isResolved) {\r\n // async additional edits\r\n const sw = new StopWatch(true);\r\n let position;\r\n const docListener = model.onDidChangeContent(e => {\r\n if (e.isFlush) {\r\n cts.cancel();\r\n docListener.dispose();\r\n return;\r\n }\r\n for (let change of e.changes) {\r\n const thisPosition = Range.getEndPosition(change.range);\r\n if (!position || Position.isBefore(thisPosition, position)) {\r\n position = thisPosition;\r\n }\r\n }\r\n });\r\n let oldFlags = flags;\r\n flags |= 2 /* NoAfterUndoStop */;\r\n let didType = false;\r\n let typeListener = this.editor.onWillType(() => {\r\n typeListener.dispose();\r\n didType = true;\r\n if (!(oldFlags & 2 /* NoAfterUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n });\r\n tasks.push(item.resolve(cts.token).then(() => {\r\n if (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {\r\n return false;\r\n }\r\n if (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position, Range.getStartPosition(edit.range)))) {\r\n return false;\r\n }\r\n if (didType) {\r\n this.editor.pushUndoStop();\r\n }\r\n const scrollState = StableEditorScrollState.capture(this.editor);\r\n this.editor.executeEdits('suggestController.additionalTextEdits.async', item.completion.additionalTextEdits.map(edit => EditOperation.replace(Range.lift(edit.range), edit.text)));\r\n scrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\r\n if (didType || !(oldFlags & 2 /* NoAfterUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n return true;\r\n }).then(applied => {\r\n this._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);\r\n docListener.dispose();\r\n typeListener.dispose();\r\n }));\r\n }\r\n let { insertText } = item.completion;\r\n if (!(item.completion.insertTextRules & 4 /* InsertAsSnippet */)) {\r\n insertText = SnippetParser.escape(insertText);\r\n }\r\n SnippetController2.get(this.editor).insert(insertText, {\r\n overwriteBefore: info.overwriteBefore,\r\n overwriteAfter: info.overwriteAfter,\r\n undoStopBefore: false,\r\n undoStopAfter: false,\r\n adjustWhitespace: !(item.completion.insertTextRules & 1 /* KeepWhitespace */),\r\n clipboardText: event.model.clipboardText,\r\n overtypingCapturer: this._overtypingCapturer.value\r\n });\r\n if (!(flags & 2 /* NoAfterUndoStop */)) {\r\n this.editor.pushUndoStop();\r\n }\r\n if (!item.completion.command) {\r\n // done\r\n this.model.cancel();\r\n }\r\n else if (item.completion.command.id === TriggerSuggestAction.id) {\r\n // retigger\r\n this.model.trigger({ auto: true, shy: false }, true);\r\n }\r\n else {\r\n // exec command, done\r\n tasks.push(this._commandService.executeCommand(item.completion.command.id, ...(item.completion.command.arguments ? [...item.completion.command.arguments] : [])).catch(onUnexpectedError));\r\n this.model.cancel();\r\n }\r\n if (flags & 4 /* KeepAlternativeSuggestions */) {\r\n this._alternatives.value.set(event, next => {\r\n // cancel resolving of additional edits\r\n cts.cancel();\r\n // this is not so pretty. when inserting the 'next'\r\n // suggestion we undo until we are at the state at\r\n // which we were before inserting the previous suggestion...\r\n while (model.canUndo()) {\r\n if (modelVersionNow !== model.getAlternativeVersionId()) {\r\n model.undo();\r\n }\r\n this._insertSuggestion(next, 1 /* NoBeforeUndoStop */ | 2 /* NoAfterUndoStop */ | (flags & 8 /* AlternativeOverwriteConfig */ ? 8 /* AlternativeOverwriteConfig */ : 0));\r\n break;\r\n }\r\n });\r\n }\r\n this._alertCompletionItem(item);\r\n // clear only now - after all tasks are done\r\n Promise.all(tasks).finally(() => {\r\n this.model.clear();\r\n cts.dispose();\r\n });\r\n }\r\n getOverwriteInfo(item, toggleMode) {\r\n assertType(this.editor.hasModel());\r\n let replace = this.editor.getOption(96 /* suggest */).insertMode === 'replace';\r\n if (toggleMode) {\r\n replace = !replace;\r\n }\r\n const overwriteBefore = item.position.column - item.editStart.column;\r\n const overwriteAfter = (replace ? item.editReplaceEnd.column : item.editInsertEnd.column) - item.position.column;\r\n const columnDelta = this.editor.getPosition().column - item.position.column;\r\n const suffixDelta = this._lineSuffix.value ? this._lineSuffix.value.delta(this.editor.getPosition()) : 0;\r\n return {\r\n overwriteBefore: overwriteBefore + columnDelta,\r\n overwriteAfter: overwriteAfter + suffixDelta\r\n };\r\n }\r\n _alertCompletionItem({ completion: suggestion }) {\r\n const textLabel = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.name;\r\n if (isNonEmptyArray(suggestion.additionalTextEdits)) {\r\n let msg = nls.localize('arai.alert.snippet', \"Accepting '{0}' made {1} additional edits\", textLabel, suggestion.additionalTextEdits.length);\r\n alert(msg);\r\n }\r\n }\r\n triggerSuggest(onlyFrom) {\r\n if (this.editor.hasModel()) {\r\n this.model.trigger({ auto: false, shy: false }, false, onlyFrom);\r\n this.editor.revealLine(this.editor.getPosition().lineNumber, 0 /* Smooth */);\r\n this.editor.focus();\r\n }\r\n }\r\n triggerSuggestAndAcceptBest(arg) {\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n const positionNow = this.editor.getPosition();\r\n const fallback = () => {\r\n if (positionNow.equals(this.editor.getPosition())) {\r\n this._commandService.executeCommand(arg.fallback);\r\n }\r\n };\r\n const makesTextEdit = (item) => {\r\n if (item.completion.insertTextRules & 4 /* InsertAsSnippet */ || item.completion.additionalTextEdits) {\r\n // snippet, other editor -> makes edit\r\n return true;\r\n }\r\n const position = this.editor.getPosition();\r\n const startColumn = item.editStart.column;\r\n const endColumn = position.column;\r\n if (endColumn - startColumn !== item.completion.insertText.length) {\r\n // unequal lengths -> makes edit\r\n return true;\r\n }\r\n const textNow = this.editor.getModel().getValueInRange({\r\n startLineNumber: position.lineNumber,\r\n startColumn,\r\n endLineNumber: position.lineNumber,\r\n endColumn\r\n });\r\n // unequal text -> makes edit\r\n return textNow !== item.completion.insertText;\r\n };\r\n Event.once(this.model.onDidTrigger)(_ => {\r\n // wait for trigger because only then the cancel-event is trustworthy\r\n let listener = [];\r\n Event.any(this.model.onDidTrigger, this.model.onDidCancel)(() => {\r\n // retrigger or cancel -> try to type default text\r\n dispose(listener);\r\n fallback();\r\n }, undefined, listener);\r\n this.model.onDidSuggest(({ completionModel }) => {\r\n dispose(listener);\r\n if (completionModel.items.length === 0) {\r\n fallback();\r\n return;\r\n }\r\n const index = this._memoryService.select(this.editor.getModel(), this.editor.getPosition(), completionModel.items);\r\n const item = completionModel.items[index];\r\n if (!makesTextEdit(item)) {\r\n fallback();\r\n return;\r\n }\r\n this.editor.pushUndoStop();\r\n this._insertSuggestion({ index, item, model: completionModel }, 4 /* KeepAlternativeSuggestions */ | 1 /* NoBeforeUndoStop */ | 2 /* NoAfterUndoStop */);\r\n }, undefined, listener);\r\n });\r\n this.model.trigger({ auto: false, shy: true });\r\n this.editor.revealLine(positionNow.lineNumber, 0 /* Smooth */);\r\n this.editor.focus();\r\n }\r\n acceptSelectedSuggestion(keepAlternativeSuggestions, alternativeOverwriteConfig) {\r\n const item = this.widget.value.getFocusedItem();\r\n let flags = 0;\r\n if (keepAlternativeSuggestions) {\r\n flags |= 4 /* KeepAlternativeSuggestions */;\r\n }\r\n if (alternativeOverwriteConfig) {\r\n flags |= 8 /* AlternativeOverwriteConfig */;\r\n }\r\n this._insertSuggestion(item, flags);\r\n }\r\n acceptNextSuggestion() {\r\n this._alternatives.value.next();\r\n }\r\n acceptPrevSuggestion() {\r\n this._alternatives.value.prev();\r\n }\r\n cancelSuggestWidget() {\r\n this.model.cancel();\r\n this.model.clear();\r\n this.widget.value.hideWidget();\r\n }\r\n selectNextSuggestion() {\r\n this.widget.value.selectNext();\r\n }\r\n selectNextPageSuggestion() {\r\n this.widget.value.selectNextPage();\r\n }\r\n selectLastSuggestion() {\r\n this.widget.value.selectLast();\r\n }\r\n selectPrevSuggestion() {\r\n this.widget.value.selectPrevious();\r\n }\r\n selectPrevPageSuggestion() {\r\n this.widget.value.selectPreviousPage();\r\n }\r\n selectFirstSuggestion() {\r\n this.widget.value.selectFirst();\r\n }\r\n toggleSuggestionDetails() {\r\n this.widget.value.toggleDetails();\r\n }\r\n toggleExplainMode() {\r\n this.widget.value.toggleExplainMode();\r\n }\r\n toggleSuggestionFocus() {\r\n this.widget.value.toggleDetailsFocus();\r\n }\r\n};\r\nSuggestController.ID = 'editor.contrib.suggestController';\r\nSuggestController = __decorate([\r\n __param(1, IEditorWorkerService),\r\n __param(2, ISuggestMemoryService),\r\n __param(3, ICommandService),\r\n __param(4, IContextKeyService),\r\n __param(5, IInstantiationService),\r\n __param(6, ILogService),\r\n __param(7, IClipboardService)\r\n], SuggestController);\r\nexport { SuggestController };\r\nexport class TriggerSuggestAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: TriggerSuggestAction.id,\r\n label: nls.localize('suggest.trigger.label', \"Trigger Suggest\"),\r\n alias: 'Trigger Suggest',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 10 /* Space */,\r\n mac: { primary: 256 /* WinCtrl */ | 10 /* Space */, secondary: [512 /* Alt */ | 9 /* Escape */] },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const controller = SuggestController.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n controller.triggerSuggest();\r\n }\r\n}\r\nTriggerSuggestAction.id = 'editor.action.triggerSuggest';\r\nregisterEditorContribution(SuggestController.ID, SuggestController);\r\nregisterEditorAction(TriggerSuggestAction);\r\nconst weight = 100 /* EditorContrib */ + 90;\r\nconst SuggestCommand = EditorCommand.bindToContribution(SuggestController.get);\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'acceptSelectedSuggestion',\r\n precondition: SuggestContext.Visible,\r\n handler(x) {\r\n x.acceptSelectedSuggestion(true, false);\r\n }\r\n}));\r\n// normal tab\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'acceptSelectedSuggestion',\r\n when: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\r\n primary: 2 /* Tab */,\r\n weight\r\n});\r\n// accept on enter has special rules\r\nKeybindingsRegistry.registerKeybindingRule({\r\n id: 'acceptSelectedSuggestion',\r\n when: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.AcceptSuggestionsOnEnter, SuggestContext.MakesTextEdit),\r\n primary: 3 /* Enter */,\r\n weight,\r\n});\r\nMenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, {\r\n command: { id: 'acceptSelectedSuggestion', title: nls.localize({ key: 'accept.accept', comment: ['{0} will be a keybinding, e.g \"Enter to insert\"'] }, \"{0} to insert\") },\r\n group: 'left',\r\n order: 1,\r\n when: SuggestContext.HasInsertAndReplaceRange.toNegated()\r\n});\r\nMenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, {\r\n command: { id: 'acceptSelectedSuggestion', title: nls.localize({ key: 'accept.insert', comment: ['{0} will be a keybinding, e.g \"Enter to insert\"'] }, \"{0} to insert\") },\r\n group: 'left',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'insert'))\r\n});\r\nMenuRegistry.appendMenuItem(suggestWidgetStatusbarMenu, {\r\n command: { id: 'acceptSelectedSuggestion', title: nls.localize({ key: 'accept.replace', comment: ['{0} will be a keybinding, e.g \"Enter to replace\"'] }, \"{0} to replace\") },\r\n group: 'left',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'replace'))\r\n});\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'acceptAlternativeSelectedSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 3 /* Enter */,\r\n secondary: [1024 /* Shift */ | 2 /* Tab */],\r\n },\r\n handler(x) {\r\n x.acceptSelectedSuggestion(false, true);\r\n },\r\n menuOpts: [{\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'left',\r\n order: 2,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'insert')),\r\n title: nls.localize({ key: 'accept.replace', comment: ['{0} will be a keybinding, e.g \"Enter to replace\"'] }, \"{0} to replace\")\r\n }, {\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'left',\r\n order: 2,\r\n when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, ContextKeyExpr.equals('config.editor.suggest.insertMode', 'replace')),\r\n title: nls.localize({ key: 'accept.insert', comment: ['{0} will be a keybinding, e.g \"Enter to insert\"'] }, \"{0} to insert\")\r\n }]\r\n}));\r\n// continue to support the old command\r\nCommandsRegistry.registerCommandAlias('acceptSelectedSuggestionOnEnter', 'acceptSelectedSuggestion');\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'hideSuggestWidget',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.cancelSuggestWidget(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectNextSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectNextSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 18 /* DownArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 18 /* DownArrow */],\r\n mac: { primary: 18 /* DownArrow */, secondary: [2048 /* CtrlCmd */ | 18 /* DownArrow */, 256 /* WinCtrl */ | 44 /* KEY_N */] }\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectNextPageSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectNextPageSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 12 /* PageDown */,\r\n secondary: [2048 /* CtrlCmd */ | 12 /* PageDown */]\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectLastSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectLastSuggestion()\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectPrevSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectPrevSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 16 /* UpArrow */,\r\n secondary: [2048 /* CtrlCmd */ | 16 /* UpArrow */],\r\n mac: { primary: 16 /* UpArrow */, secondary: [2048 /* CtrlCmd */ | 16 /* UpArrow */, 256 /* WinCtrl */ | 46 /* KEY_P */] }\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectPrevPageSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectPrevPageSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 11 /* PageUp */,\r\n secondary: [2048 /* CtrlCmd */ | 11 /* PageUp */]\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'selectFirstSuggestion',\r\n precondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.MultipleSuggestions),\r\n handler: c => c.selectFirstSuggestion()\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'toggleSuggestionDetails',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.toggleSuggestionDetails(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 10 /* Space */,\r\n mac: { primary: 256 /* WinCtrl */ | 10 /* Space */ }\r\n },\r\n menuOpts: [{\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'right',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),\r\n title: nls.localize('detail.more', \"show less\")\r\n }, {\r\n menuId: suggestWidgetStatusbarMenu,\r\n group: 'right',\r\n order: 1,\r\n when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),\r\n title: nls.localize('detail.less', \"show more\")\r\n }]\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'toggleExplainMode',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.toggleExplainMode(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */,\r\n primary: 2048 /* CtrlCmd */ | 85 /* US_SLASH */,\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'toggleSuggestionFocus',\r\n precondition: SuggestContext.Visible,\r\n handler: x => x.toggleSuggestionFocus(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 512 /* Alt */ | 10 /* Space */,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 10 /* Space */ }\r\n }\r\n}));\r\n//#region tab completions\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'insertBestCompletion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), WordContextKey.AtEnd, SuggestContext.Visible.toNegated(), SuggestAlternatives.OtherSuggestions.toNegated(), SnippetController2.InSnippetMode.toNegated()),\r\n handler: (x, arg) => {\r\n x.triggerSuggestAndAcceptBest(isObject(arg) ? Object.assign({ fallback: 'tab' }, arg) : { fallback: 'tab' });\r\n },\r\n kbOpts: {\r\n weight,\r\n primary: 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'insertNextSuggestion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\r\n handler: x => x.acceptNextSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2 /* Tab */\r\n }\r\n}));\r\nregisterEditorCommand(new SuggestCommand({\r\n id: 'insertPrevSuggestion',\r\n precondition: ContextKeyExpr.and(EditorContextKeys.textInputFocus, ContextKeyExpr.equals('config.editor.tabCompletion', 'on'), SuggestAlternatives.OtherSuggestions, SuggestContext.Visible.toNegated(), SnippetController2.InSnippetMode.toNegated()),\r\n handler: x => x.acceptPrevSuggestion(),\r\n kbOpts: {\r\n weight: weight,\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 1024 /* Shift */ | 2 /* Tab */\r\n }\r\n}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { LRUCache, TernarySearchTree } from '../../../base/common/map.js';\r\nimport { IStorageService, WillSaveStateReason } from '../../../platform/storage/common/storage.js';\r\nimport { completionKindFromString } from '../../common/modes.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { registerSingleton } from '../../../platform/instantiation/common/extensions.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nexport class Memory {\r\n constructor(name) {\r\n this.name = name;\r\n }\r\n select(model, pos, items) {\r\n if (items.length === 0) {\r\n return 0;\r\n }\r\n let topScore = items[0].score[0];\r\n for (let i = 0; i < items.length; i++) {\r\n const { score, completion: suggestion } = items[i];\r\n if (score[0] !== topScore) {\r\n // stop when leaving the group of top matches\r\n break;\r\n }\r\n if (suggestion.preselect) {\r\n // stop when seeing an auto-select-item\r\n return i;\r\n }\r\n }\r\n return 0;\r\n }\r\n}\r\nexport class NoMemory extends Memory {\r\n constructor() {\r\n super('first');\r\n }\r\n memorize(model, pos, item) {\r\n // no-op\r\n }\r\n toJSON() {\r\n return undefined;\r\n }\r\n fromJSON() {\r\n //\r\n }\r\n}\r\nexport class LRUMemory extends Memory {\r\n constructor() {\r\n super('recentlyUsed');\r\n this._cache = new LRUCache(300, 0.66);\r\n this._seq = 0;\r\n }\r\n memorize(model, pos, item) {\r\n const { label } = item.completion;\r\n const key = `${model.getLanguageIdentifier().language}/${label}`;\r\n this._cache.set(key, {\r\n touch: this._seq++,\r\n type: item.completion.kind,\r\n insertText: item.completion.insertText\r\n });\r\n }\r\n select(model, pos, items) {\r\n if (items.length === 0) {\r\n return 0;\r\n }\r\n const lineSuffix = model.getLineContent(pos.lineNumber).substr(pos.column - 10, pos.column - 1);\r\n if (/\\s$/.test(lineSuffix)) {\r\n return super.select(model, pos, items);\r\n }\r\n let topScore = items[0].score[0];\r\n let indexPreselect = -1;\r\n let indexRecency = -1;\r\n let seq = -1;\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].score[0] !== topScore) {\r\n // consider only top items\r\n break;\r\n }\r\n const key = `${model.getLanguageIdentifier().language}/${items[i].completion.label}`;\r\n const item = this._cache.peek(key);\r\n if (item && item.touch > seq && item.type === items[i].completion.kind && item.insertText === items[i].completion.insertText) {\r\n seq = item.touch;\r\n indexRecency = i;\r\n }\r\n if (items[i].completion.preselect && indexPreselect === -1) {\r\n // stop when seeing an auto-select-item\r\n return indexPreselect = i;\r\n }\r\n }\r\n if (indexRecency !== -1) {\r\n return indexRecency;\r\n }\r\n else if (indexPreselect !== -1) {\r\n return indexPreselect;\r\n }\r\n else {\r\n return 0;\r\n }\r\n }\r\n toJSON() {\r\n return this._cache.toJSON();\r\n }\r\n fromJSON(data) {\r\n this._cache.clear();\r\n let seq = 0;\r\n for (const [key, value] of data) {\r\n value.touch = seq;\r\n value.type = typeof value.type === 'number' ? value.type : completionKindFromString(value.type);\r\n this._cache.set(key, value);\r\n }\r\n this._seq = this._cache.size;\r\n }\r\n}\r\nexport class PrefixMemory extends Memory {\r\n constructor() {\r\n super('recentlyUsedByPrefix');\r\n this._trie = TernarySearchTree.forStrings();\r\n this._seq = 0;\r\n }\r\n memorize(model, pos, item) {\r\n const { word } = model.getWordUntilPosition(pos);\r\n const key = `${model.getLanguageIdentifier().language}/${word}`;\r\n this._trie.set(key, {\r\n type: item.completion.kind,\r\n insertText: item.completion.insertText,\r\n touch: this._seq++\r\n });\r\n }\r\n select(model, pos, items) {\r\n let { word } = model.getWordUntilPosition(pos);\r\n if (!word) {\r\n return super.select(model, pos, items);\r\n }\r\n let key = `${model.getLanguageIdentifier().language}/${word}`;\r\n let item = this._trie.get(key);\r\n if (!item) {\r\n item = this._trie.findSubstr(key);\r\n }\r\n if (item) {\r\n for (let i = 0; i < items.length; i++) {\r\n let { kind, insertText } = items[i].completion;\r\n if (kind === item.type && insertText === item.insertText) {\r\n return i;\r\n }\r\n }\r\n }\r\n return super.select(model, pos, items);\r\n }\r\n toJSON() {\r\n let entries = [];\r\n this._trie.forEach((value, key) => entries.push([key, value]));\r\n // sort by last recently used (touch), then\r\n // take the top 200 item and normalize their\r\n // touch\r\n entries\r\n .sort((a, b) => -(a[1].touch - b[1].touch))\r\n .forEach((value, i) => value[1].touch = i);\r\n return entries.slice(0, 200);\r\n }\r\n fromJSON(data) {\r\n this._trie.clear();\r\n if (data.length > 0) {\r\n this._seq = data[0][1].touch + 1;\r\n for (const [key, value] of data) {\r\n value.type = typeof value.type === 'number' ? value.type : completionKindFromString(value.type);\r\n this._trie.set(key, value);\r\n }\r\n }\r\n }\r\n}\r\nlet SuggestMemoryService = class SuggestMemoryService {\r\n constructor(_storageService, _modeService, _configService) {\r\n this._storageService = _storageService;\r\n this._modeService = _modeService;\r\n this._configService = _configService;\r\n this._disposables = new DisposableStore();\r\n this._persistSoon = new RunOnceScheduler(() => this._saveState(), 500);\r\n this._disposables.add(_storageService.onWillSaveState(e => {\r\n if (e.reason === WillSaveStateReason.SHUTDOWN) {\r\n this._saveState();\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n this._persistSoon.dispose();\r\n }\r\n memorize(model, pos, item) {\r\n this._withStrategy(model, pos).memorize(model, pos, item);\r\n this._persistSoon.schedule();\r\n }\r\n select(model, pos, items) {\r\n return this._withStrategy(model, pos).select(model, pos, items);\r\n }\r\n _withStrategy(model, pos) {\r\n var _a, _b;\r\n const mode = this._configService.getValue('editor.suggestSelection', {\r\n overrideIdentifier: (_a = this._modeService.getLanguageIdentifier(model.getLanguageIdAtPosition(pos.lineNumber, pos.column))) === null || _a === void 0 ? void 0 : _a.language,\r\n resource: model.uri\r\n });\r\n if (((_b = this._strategy) === null || _b === void 0 ? void 0 : _b.name) !== mode) {\r\n this._saveState();\r\n const ctor = SuggestMemoryService._strategyCtors.get(mode) || NoMemory;\r\n this._strategy = new ctor();\r\n try {\r\n const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\r\n const scope = share ? 0 /* GLOBAL */ : 1 /* WORKSPACE */;\r\n const raw = this._storageService.get(`${SuggestMemoryService._storagePrefix}/${mode}`, scope);\r\n if (raw) {\r\n this._strategy.fromJSON(JSON.parse(raw));\r\n }\r\n }\r\n catch (e) {\r\n // things can go wrong with JSON...\r\n }\r\n }\r\n return this._strategy;\r\n }\r\n _saveState() {\r\n if (this._strategy) {\r\n const share = this._configService.getValue('editor.suggest.shareSuggestSelections');\r\n const scope = share ? 0 /* GLOBAL */ : 1 /* WORKSPACE */;\r\n const raw = JSON.stringify(this._strategy);\r\n this._storageService.store(`${SuggestMemoryService._storagePrefix}/${this._strategy.name}`, raw, scope);\r\n }\r\n }\r\n};\r\nSuggestMemoryService._strategyCtors = new Map([\r\n ['recentlyUsedByPrefix', PrefixMemory],\r\n ['recentlyUsed', LRUMemory],\r\n ['first', NoMemory]\r\n]);\r\nSuggestMemoryService._storagePrefix = 'suggest/memories';\r\nSuggestMemoryService = __decorate([\r\n __param(0, IStorageService),\r\n __param(1, IModeService),\r\n __param(2, IConfigurationService)\r\n], SuggestMemoryService);\r\nexport { SuggestMemoryService };\r\nexport const ISuggestMemoryService = createDecorator('ISuggestMemories');\r\nregisterSingleton(ISuggestMemoryService, SuggestMemoryService, true);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { dispose, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { CompletionProviderRegistry } from '../../common/modes.js';\r\nimport { CompletionModel } from './completionModel.js';\r\nimport { getSuggestionComparator, provideSuggestionItems, getSnippetSuggestSupport, CompletionOptions } from './suggest.js';\r\nimport { SnippetController2 } from '../snippet/snippetController2.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { WordDistance } from './wordDistance.js';\r\nimport { isLowSurrogate, isHighSurrogate } from '../../../base/common/strings.js';\r\nexport class LineContext {\r\n constructor(model, position, auto, shy) {\r\n this.leadingLineContent = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\r\n this.leadingWord = model.getWordUntilPosition(position);\r\n this.lineNumber = position.lineNumber;\r\n this.column = position.column;\r\n this.auto = auto;\r\n this.shy = shy;\r\n }\r\n static shouldAutoTrigger(editor) {\r\n if (!editor.hasModel()) {\r\n return false;\r\n }\r\n const model = editor.getModel();\r\n const pos = editor.getPosition();\r\n model.tokenizeIfCheap(pos.lineNumber);\r\n const word = model.getWordAtPosition(pos);\r\n if (!word) {\r\n return false;\r\n }\r\n if (word.endColumn !== pos.column) {\r\n return false;\r\n }\r\n if (!isNaN(Number(word.word))) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n}\r\nexport class SuggestModel {\r\n constructor(_editor, _editorWorkerService, _clipboardService) {\r\n this._editor = _editor;\r\n this._editorWorkerService = _editorWorkerService;\r\n this._clipboardService = _clipboardService;\r\n this._toDispose = new DisposableStore();\r\n this._quickSuggestDelay = 10;\r\n this._triggerCharacterListener = new DisposableStore();\r\n this._triggerQuickSuggest = new TimeoutTimer();\r\n this._state = 0 /* Idle */;\r\n this._completionDisposables = new DisposableStore();\r\n this._onDidCancel = new Emitter();\r\n this._onDidTrigger = new Emitter();\r\n this._onDidSuggest = new Emitter();\r\n this.onDidCancel = this._onDidCancel.event;\r\n this.onDidTrigger = this._onDidTrigger.event;\r\n this.onDidSuggest = this._onDidSuggest.event;\r\n this._currentSelection = this._editor.getSelection() || new Selection(1, 1, 1, 1);\r\n // wire up various listeners\r\n this._toDispose.add(this._editor.onDidChangeModel(() => {\r\n this._updateTriggerCharacters();\r\n this.cancel();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeModelLanguage(() => {\r\n this._updateTriggerCharacters();\r\n this.cancel();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeConfiguration(() => {\r\n this._updateTriggerCharacters();\r\n this._updateQuickSuggest();\r\n }));\r\n this._toDispose.add(CompletionProviderRegistry.onDidChange(() => {\r\n this._updateTriggerCharacters();\r\n this._updateActiveSuggestSession();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeCursorSelection(e => {\r\n this._onCursorChange(e);\r\n }));\r\n let editorIsComposing = false;\r\n this._toDispose.add(this._editor.onDidCompositionStart(() => {\r\n editorIsComposing = true;\r\n }));\r\n this._toDispose.add(this._editor.onDidCompositionEnd(() => {\r\n // refilter when composition ends\r\n editorIsComposing = false;\r\n this._refilterCompletionItems();\r\n }));\r\n this._toDispose.add(this._editor.onDidChangeModelContent(() => {\r\n // only filter completions when the editor isn't\r\n // composing a character, e.g. ¨ + u makes ü but just\r\n // ¨ cannot be used for filtering\r\n if (!editorIsComposing) {\r\n this._refilterCompletionItems();\r\n }\r\n }));\r\n this._updateTriggerCharacters();\r\n this._updateQuickSuggest();\r\n }\r\n dispose() {\r\n dispose(this._triggerCharacterListener);\r\n dispose([this._onDidCancel, this._onDidSuggest, this._onDidTrigger, this._triggerQuickSuggest]);\r\n this._toDispose.dispose();\r\n this._completionDisposables.dispose();\r\n this.cancel();\r\n }\r\n // --- handle configuration & precondition changes\r\n _updateQuickSuggest() {\r\n this._quickSuggestDelay = this._editor.getOption(71 /* quickSuggestionsDelay */);\r\n if (isNaN(this._quickSuggestDelay) || (!this._quickSuggestDelay && this._quickSuggestDelay !== 0) || this._quickSuggestDelay < 0) {\r\n this._quickSuggestDelay = 10;\r\n }\r\n }\r\n _updateTriggerCharacters() {\r\n this._triggerCharacterListener.clear();\r\n if (this._editor.getOption(72 /* readOnly */)\r\n || !this._editor.hasModel()\r\n || !this._editor.getOption(99 /* suggestOnTriggerCharacters */)) {\r\n return;\r\n }\r\n const supportsByTriggerCharacter = new Map();\r\n for (const support of CompletionProviderRegistry.all(this._editor.getModel())) {\r\n for (const ch of support.triggerCharacters || []) {\r\n let set = supportsByTriggerCharacter.get(ch);\r\n if (!set) {\r\n set = new Set();\r\n set.add(getSnippetSuggestSupport());\r\n supportsByTriggerCharacter.set(ch, set);\r\n }\r\n set.add(support);\r\n }\r\n }\r\n const checkTriggerCharacter = (text) => {\r\n if (!text) {\r\n // came here from the compositionEnd-event\r\n const position = this._editor.getPosition();\r\n const model = this._editor.getModel();\r\n text = model.getLineContent(position.lineNumber).substr(0, position.column - 1);\r\n }\r\n let lastChar = '';\r\n if (isLowSurrogate(text.charCodeAt(text.length - 1))) {\r\n if (isHighSurrogate(text.charCodeAt(text.length - 2))) {\r\n lastChar = text.substr(text.length - 2);\r\n }\r\n }\r\n else {\r\n lastChar = text.charAt(text.length - 1);\r\n }\r\n const supports = supportsByTriggerCharacter.get(lastChar);\r\n if (supports) {\r\n // keep existing items that where not computed by the\r\n // supports/providers that want to trigger now\r\n const existing = this._completionModel\r\n ? { items: this._completionModel.adopt(supports), clipboardText: this._completionModel.clipboardText }\r\n : undefined;\r\n this.trigger({ auto: true, shy: false, triggerCharacter: lastChar }, Boolean(this._completionModel), supports, existing);\r\n }\r\n };\r\n this._triggerCharacterListener.add(this._editor.onDidType(checkTriggerCharacter));\r\n this._triggerCharacterListener.add(this._editor.onDidCompositionEnd(checkTriggerCharacter));\r\n }\r\n // --- trigger/retrigger/cancel suggest\r\n get state() {\r\n return this._state;\r\n }\r\n cancel(retrigger = false) {\r\n if (this._state !== 0 /* Idle */) {\r\n this._triggerQuickSuggest.cancel();\r\n if (this._requestToken) {\r\n this._requestToken.cancel();\r\n this._requestToken = undefined;\r\n }\r\n this._state = 0 /* Idle */;\r\n this._completionModel = undefined;\r\n this._context = undefined;\r\n this._onDidCancel.fire({ retrigger });\r\n }\r\n }\r\n clear() {\r\n this._completionDisposables.clear();\r\n }\r\n _updateActiveSuggestSession() {\r\n if (this._state !== 0 /* Idle */) {\r\n if (!this._editor.hasModel() || !CompletionProviderRegistry.has(this._editor.getModel())) {\r\n this.cancel();\r\n }\r\n else {\r\n this.trigger({ auto: this._state === 2 /* Auto */, shy: false }, true);\r\n }\r\n }\r\n }\r\n _onCursorChange(e) {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const prevSelection = this._currentSelection;\r\n this._currentSelection = this._editor.getSelection();\r\n if (!e.selection.isEmpty()\r\n || e.reason !== 0 /* NotSet */\r\n || (e.source !== 'keyboard' && e.source !== 'deleteLeft')) {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n this.cancel();\r\n return;\r\n }\r\n if (!CompletionProviderRegistry.has(model)) {\r\n return;\r\n }\r\n if (this._state === 0 /* Idle */) {\r\n if (this._editor.getOption(70 /* quickSuggestions */) === false) {\r\n // not enabled\r\n return;\r\n }\r\n if (!prevSelection.containsRange(this._currentSelection) && !prevSelection.getEndPosition().isBeforeOrEqual(this._currentSelection.getPosition())) {\r\n // cursor didn't move RIGHT\r\n return;\r\n }\r\n if (this._editor.getOption(96 /* suggest */).snippetsPreventQuickSuggestions && SnippetController2.get(this._editor).isInSnippet()) {\r\n // no quick suggestion when in snippet mode\r\n return;\r\n }\r\n this.cancel();\r\n this._triggerQuickSuggest.cancelAndSet(() => {\r\n if (this._state !== 0 /* Idle */) {\r\n return;\r\n }\r\n if (!LineContext.shouldAutoTrigger(this._editor)) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const pos = this._editor.getPosition();\r\n // validate enabled now\r\n const quickSuggestions = this._editor.getOption(70 /* quickSuggestions */);\r\n if (quickSuggestions === false) {\r\n return;\r\n }\r\n else if (quickSuggestions === true) {\r\n // all good\r\n }\r\n else {\r\n // Check the type of the token that triggered this\r\n model.tokenizeIfCheap(pos.lineNumber);\r\n const lineTokens = model.getLineTokens(pos.lineNumber);\r\n const tokenType = lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(pos.column - 1 - 1, 0)));\r\n const inValidScope = quickSuggestions.other && tokenType === 0 /* Other */\r\n || quickSuggestions.comments && tokenType === 1 /* Comment */\r\n || quickSuggestions.strings && tokenType === 2 /* String */;\r\n if (!inValidScope) {\r\n return;\r\n }\r\n }\r\n // we made it till here -> trigger now\r\n this.trigger({ auto: true, shy: false });\r\n }, this._quickSuggestDelay);\r\n }\r\n }\r\n _refilterCompletionItems() {\r\n // Re-filter suggestions. This MUST run async because filtering/scoring\r\n // uses the model content AND the cursor position. The latter is NOT\r\n // updated when the document has changed (the event which drives this method)\r\n // and therefore a little pause (next mirco task) is needed. See:\r\n // https://stackoverflow.com/questions/25915634/difference-between-microtask-and-macrotask-within-an-event-loop-context#25933985\r\n Promise.resolve().then(() => {\r\n if (this._state === 0 /* Idle */) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const position = this._editor.getPosition();\r\n const ctx = new LineContext(model, position, this._state === 2 /* Auto */, false);\r\n this._onNewContext(ctx);\r\n });\r\n }\r\n trigger(context, retrigger = false, onlyFrom, existing) {\r\n var _a;\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const auto = context.auto;\r\n const ctx = new LineContext(model, this._editor.getPosition(), auto, context.shy);\r\n // Cancel previous requests, change state & update UI\r\n this.cancel(retrigger);\r\n this._state = auto ? 2 /* Auto */ : 1 /* Manual */;\r\n this._onDidTrigger.fire({ auto, shy: context.shy, position: this._editor.getPosition() });\r\n // Capture context when request was sent\r\n this._context = ctx;\r\n // Build context for request\r\n let suggestCtx = { triggerKind: (_a = context.triggerKind) !== null && _a !== void 0 ? _a : 0 /* Invoke */ };\r\n if (context.triggerCharacter) {\r\n suggestCtx = {\r\n triggerKind: 1 /* TriggerCharacter */,\r\n triggerCharacter: context.triggerCharacter\r\n };\r\n }\r\n this._requestToken = new CancellationTokenSource();\r\n // kind filter and snippet sort rules\r\n const snippetSuggestions = this._editor.getOption(93 /* snippetSuggestions */);\r\n let snippetSortOrder = 1 /* Inline */;\r\n switch (snippetSuggestions) {\r\n case 'top':\r\n snippetSortOrder = 0 /* Top */;\r\n break;\r\n // \t↓ that's the default anyways...\r\n // case 'inline':\r\n // \tsnippetSortOrder = SnippetSortOrder.Inline;\r\n // \tbreak;\r\n case 'bottom':\r\n snippetSortOrder = 2 /* Bottom */;\r\n break;\r\n }\r\n let itemKindFilter = SuggestModel._createItemKindFilter(this._editor);\r\n let wordDistance = WordDistance.create(this._editorWorkerService, this._editor);\r\n let completions = provideSuggestionItems(model, this._editor.getPosition(), new CompletionOptions(snippetSortOrder, itemKindFilter, onlyFrom), suggestCtx, this._requestToken.token);\r\n Promise.all([completions, wordDistance]).then(([completions, wordDistance]) => __awaiter(this, void 0, void 0, function* () {\r\n dispose(this._requestToken);\r\n if (this._state === 0 /* Idle */) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n let clipboardText = existing === null || existing === void 0 ? void 0 : existing.clipboardText;\r\n if (!clipboardText && completions.needsClipboard) {\r\n clipboardText = yield this._clipboardService.readText();\r\n }\r\n const model = this._editor.getModel();\r\n let items = completions.items;\r\n if (existing) {\r\n const cmpFn = getSuggestionComparator(snippetSortOrder);\r\n items = items.concat(existing.items).sort(cmpFn);\r\n }\r\n const ctx = new LineContext(model, this._editor.getPosition(), auto, context.shy);\r\n this._completionModel = new CompletionModel(items, this._context.column, {\r\n leadingLineContent: ctx.leadingLineContent,\r\n characterCountDelta: ctx.column - this._context.column\r\n }, wordDistance, this._editor.getOption(96 /* suggest */), this._editor.getOption(93 /* snippetSuggestions */), clipboardText);\r\n // store containers so that they can be disposed later\r\n this._completionDisposables.add(completions.dispoables);\r\n this._onNewContext(ctx);\r\n })).catch(onUnexpectedError);\r\n }\r\n static _createItemKindFilter(editor) {\r\n // kind filter and snippet sort rules\r\n const result = new Set();\r\n // snippet setting\r\n const snippetSuggestions = editor.getOption(93 /* snippetSuggestions */);\r\n if (snippetSuggestions === 'none') {\r\n result.add(27 /* Snippet */);\r\n }\r\n // type setting\r\n const suggestOptions = editor.getOption(96 /* suggest */);\r\n if (!suggestOptions.showMethods) {\r\n result.add(0 /* Method */);\r\n }\r\n if (!suggestOptions.showFunctions) {\r\n result.add(1 /* Function */);\r\n }\r\n if (!suggestOptions.showConstructors) {\r\n result.add(2 /* Constructor */);\r\n }\r\n if (!suggestOptions.showFields) {\r\n result.add(3 /* Field */);\r\n }\r\n if (!suggestOptions.showVariables) {\r\n result.add(4 /* Variable */);\r\n }\r\n if (!suggestOptions.showClasses) {\r\n result.add(5 /* Class */);\r\n }\r\n if (!suggestOptions.showStructs) {\r\n result.add(6 /* Struct */);\r\n }\r\n if (!suggestOptions.showInterfaces) {\r\n result.add(7 /* Interface */);\r\n }\r\n if (!suggestOptions.showModules) {\r\n result.add(8 /* Module */);\r\n }\r\n if (!suggestOptions.showProperties) {\r\n result.add(9 /* Property */);\r\n }\r\n if (!suggestOptions.showEvents) {\r\n result.add(10 /* Event */);\r\n }\r\n if (!suggestOptions.showOperators) {\r\n result.add(11 /* Operator */);\r\n }\r\n if (!suggestOptions.showUnits) {\r\n result.add(12 /* Unit */);\r\n }\r\n if (!suggestOptions.showValues) {\r\n result.add(13 /* Value */);\r\n }\r\n if (!suggestOptions.showConstants) {\r\n result.add(14 /* Constant */);\r\n }\r\n if (!suggestOptions.showEnums) {\r\n result.add(15 /* Enum */);\r\n }\r\n if (!suggestOptions.showEnumMembers) {\r\n result.add(16 /* EnumMember */);\r\n }\r\n if (!suggestOptions.showKeywords) {\r\n result.add(17 /* Keyword */);\r\n }\r\n if (!suggestOptions.showWords) {\r\n result.add(18 /* Text */);\r\n }\r\n if (!suggestOptions.showColors) {\r\n result.add(19 /* Color */);\r\n }\r\n if (!suggestOptions.showFiles) {\r\n result.add(20 /* File */);\r\n }\r\n if (!suggestOptions.showReferences) {\r\n result.add(21 /* Reference */);\r\n }\r\n if (!suggestOptions.showColors) {\r\n result.add(22 /* Customcolor */);\r\n }\r\n if (!suggestOptions.showFolders) {\r\n result.add(23 /* Folder */);\r\n }\r\n if (!suggestOptions.showTypeParameters) {\r\n result.add(24 /* TypeParameter */);\r\n }\r\n if (!suggestOptions.showSnippets) {\r\n result.add(27 /* Snippet */);\r\n }\r\n if (!suggestOptions.showUsers) {\r\n result.add(25 /* User */);\r\n }\r\n if (!suggestOptions.showIssues) {\r\n result.add(26 /* Issue */);\r\n }\r\n return result;\r\n }\r\n _onNewContext(ctx) {\r\n if (!this._context) {\r\n // happens when 24x7 IntelliSense is enabled and still in its delay\r\n return;\r\n }\r\n if (ctx.lineNumber !== this._context.lineNumber) {\r\n // e.g. happens when pressing Enter while IntelliSense is computed\r\n this.cancel();\r\n return;\r\n }\r\n if (ctx.leadingWord.startColumn < this._context.leadingWord.startColumn) {\r\n // happens when the current word gets outdented\r\n this.cancel();\r\n return;\r\n }\r\n if (ctx.column < this._context.column) {\r\n // typed -> moved cursor LEFT -> retrigger if still on a word\r\n if (ctx.leadingWord.word) {\r\n this.trigger({ auto: this._context.auto, shy: false }, true);\r\n }\r\n else {\r\n this.cancel();\r\n }\r\n return;\r\n }\r\n if (!this._completionModel) {\r\n // happens when IntelliSense is not yet computed\r\n return;\r\n }\r\n if (ctx.leadingWord.word.length !== 0 && ctx.leadingWord.startColumn > this._context.leadingWord.startColumn) {\r\n // started a new word while IntelliSense shows -> retrigger\r\n // Select those providers have not contributed to this completion model and re-trigger completions for\r\n // them. Also adopt the existing items and merge them into the new completion model\r\n const inactiveProvider = new Set(CompletionProviderRegistry.all(this._editor.getModel()));\r\n this._completionModel.allProvider.forEach(provider => inactiveProvider.delete(provider));\r\n const items = this._completionModel.adopt(new Set());\r\n this.trigger({ auto: this._context.auto, shy: false }, true, inactiveProvider, { items, clipboardText: this._completionModel.clipboardText });\r\n return;\r\n }\r\n if (ctx.column > this._context.column && this._completionModel.incomplete.size > 0 && ctx.leadingWord.word.length !== 0) {\r\n // typed -> moved cursor RIGHT & incomple model & still on a word -> retrigger\r\n const { incomplete } = this._completionModel;\r\n const items = this._completionModel.adopt(incomplete);\r\n this.trigger({ auto: this._state === 2 /* Auto */, shy: false, triggerKind: 2 /* TriggerForIncompleteCompletions */ }, true, incomplete, { items, clipboardText: this._completionModel.clipboardText });\r\n }\r\n else {\r\n // typed -> moved cursor RIGHT -> update UI\r\n let oldLineContext = this._completionModel.lineContext;\r\n let isFrozen = false;\r\n this._completionModel.lineContext = {\r\n leadingLineContent: ctx.leadingLineContent,\r\n characterCountDelta: ctx.column - this._context.column\r\n };\r\n if (this._completionModel.items.length === 0) {\r\n if (LineContext.shouldAutoTrigger(this._editor) && this._context.leadingWord.endColumn < ctx.leadingWord.startColumn) {\r\n // retrigger when heading into a new word\r\n this.trigger({ auto: this._context.auto, shy: false }, true);\r\n return;\r\n }\r\n if (!this._context.auto) {\r\n // freeze when IntelliSense was manually requested\r\n this._completionModel.lineContext = oldLineContext;\r\n isFrozen = this._completionModel.items.length > 0;\r\n if (isFrozen && ctx.leadingWord.word.length === 0) {\r\n // there were results before but now there aren't\r\n // and also we are not on a word anymore -> cancel\r\n this.cancel();\r\n return;\r\n }\r\n }\r\n else {\r\n // nothing left\r\n this.cancel();\r\n return;\r\n }\r\n }\r\n this._onDidSuggest.fire({\r\n completionModel: this._completionModel,\r\n auto: this._context.auto,\r\n shy: this._context.shy,\r\n isFrozen,\r\n });\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nexport class OvertypingCapturer {\r\n constructor(editor, suggestModel) {\r\n this._disposables = new DisposableStore();\r\n this._lastOvertyped = [];\r\n this._empty = true;\r\n this._disposables.add(editor.onWillType(() => {\r\n if (!this._empty) {\r\n return;\r\n }\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const selections = editor.getSelections();\r\n const selectionsLength = selections.length;\r\n // Check if it will overtype any selections\r\n let willOvertype = false;\r\n for (let i = 0; i < selectionsLength; i++) {\r\n if (!selections[i].isEmpty()) {\r\n willOvertype = true;\r\n break;\r\n }\r\n }\r\n if (!willOvertype) {\r\n return;\r\n }\r\n this._lastOvertyped = [];\r\n const model = editor.getModel();\r\n for (let i = 0; i < selectionsLength; i++) {\r\n const selection = selections[i];\r\n // Check for overtyping capturer restrictions\r\n if (model.getValueLengthInRange(selection) > OvertypingCapturer._maxSelectionLength) {\r\n return;\r\n }\r\n this._lastOvertyped[i] = { value: model.getValueInRange(selection), multiline: selection.startLineNumber !== selection.endLineNumber };\r\n }\r\n this._empty = false;\r\n }));\r\n this._disposables.add(suggestModel.onDidCancel(e => {\r\n if (!this._empty) {\r\n this._empty = true;\r\n }\r\n }));\r\n }\r\n getLastOvertypedInfo(idx) {\r\n if (!this._empty && idx >= 0 && idx < this._lastOvertyped.length) {\r\n return this._lastOvertyped[idx];\r\n }\r\n return undefined;\r\n }\r\n dispose() {\r\n this._disposables.dispose();\r\n }\r\n}\r\nOvertypingCapturer._maxSelectionLength = 51200;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport './media/suggest.css';\r\nimport './media/suggestStatusBar.css';\r\nimport '../../../base/browser/ui/codicons/codiconStyles.js'; // The codicon symbol styles are defined here and must be loaded\r\nimport '../documentSymbols/outlineTree.js'; // The codicon symbol colors are defined here and must be loaded\r\nimport * as nls from '../../../nls.js';\r\nimport { createMatches } from '../../../base/common/filters.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { Event, Emitter } from '../../../base/common/event.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { dispose, toDisposable, DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { append, $, hide, show, getDomNodePagePosition, addDisposableListener, addStandardDisposableListener, addClasses } from '../../../base/browser/dom.js';\r\nimport { List } from '../../../base/browser/ui/list/listWidget.js';\r\nimport { DomScrollableElement } from '../../../base/browser/ui/scrollbar/scrollableElement.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { Context as SuggestContext, suggestWidgetStatusbarMenu } from './suggest.js';\r\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\r\nimport { attachListStyler } from '../../../platform/theme/common/styler.js';\r\nimport { IThemeService, registerThemingParticipant } from '../../../platform/theme/common/themeService.js';\r\nimport { registerColor, editorWidgetBackground, listFocusBackground, activeContrastBorder, listHighlightForeground, editorForeground, editorWidgetBorder, focusBorder, textLinkForeground, textCodeBlockBackground } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { IStorageService } from '../../../platform/storage/common/storage.js';\r\nimport { MarkdownRenderer } from '../markdown/markdownRenderer.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { TimeoutTimer, createCancelablePromise, disposableTimeout } from '../../../base/common/async.js';\r\nimport { completionKindToCssClass } from '../../common/modes.js';\r\nimport { IconLabel } from '../../../base/browser/ui/iconLabel/iconLabel.js';\r\nimport { getIconClasses } from '../../common/services/getIconClasses.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { FileKind } from '../../../platform/files/common/files.js';\r\nimport { MarkdownString } from '../../../base/common/htmlContent.js';\r\nimport { flatten, isFalsyOrEmpty } from '../../../base/common/arrays.js';\r\nimport { IMenuService } from '../../../platform/actions/common/actions.js';\r\nimport { ActionBar } from '../../../base/browser/ui/actionbar/actionbar.js';\r\nimport { Codicon, registerIcon } from '../../../base/common/codicons.js';\r\nimport { ActionViewItem } from '../../../base/browser/ui/actionbar/actionViewItems.js';\r\nconst expandSuggestionDocsByDefault = false;\r\nconst suggestMoreInfoIcon = registerIcon('suggest-more-info', Codicon.chevronRight);\r\n/**\r\n * Suggest widget colors\r\n */\r\nexport const editorSuggestWidgetBackground = registerColor('editorSuggestWidget.background', { dark: editorWidgetBackground, light: editorWidgetBackground, hc: editorWidgetBackground }, nls.localize('editorSuggestWidgetBackground', 'Background color of the suggest widget.'));\r\nexport const editorSuggestWidgetBorder = registerColor('editorSuggestWidget.border', { dark: editorWidgetBorder, light: editorWidgetBorder, hc: editorWidgetBorder }, nls.localize('editorSuggestWidgetBorder', 'Border color of the suggest widget.'));\r\nexport const editorSuggestWidgetForeground = registerColor('editorSuggestWidget.foreground', { dark: editorForeground, light: editorForeground, hc: editorForeground }, nls.localize('editorSuggestWidgetForeground', 'Foreground color of the suggest widget.'));\r\nexport const editorSuggestWidgetSelectedBackground = registerColor('editorSuggestWidget.selectedBackground', { dark: listFocusBackground, light: listFocusBackground, hc: listFocusBackground }, nls.localize('editorSuggestWidgetSelectedBackground', 'Background color of the selected entry in the suggest widget.'));\r\nexport const editorSuggestWidgetHighlightForeground = registerColor('editorSuggestWidget.highlightForeground', { dark: listHighlightForeground, light: listHighlightForeground, hc: listHighlightForeground }, nls.localize('editorSuggestWidgetHighlightForeground', 'Color of the match highlights in the suggest widget.'));\r\nconst colorRegExp = /^(#([\\da-f]{3}){1,2}|(rgb|hsl)a\\(\\s*(\\d{1,3}%?\\s*,\\s*){3}(1|0?\\.\\d+)\\)|(rgb|hsl)\\(\\s*\\d{1,3}%?(\\s*,\\s*\\d{1,3}%?){2}\\s*\\))$/i;\r\nfunction extractColor(item, out) {\r\n const label = typeof item.completion.label === 'string'\r\n ? item.completion.label\r\n : item.completion.label.name;\r\n if (label.match(colorRegExp)) {\r\n out[0] = label;\r\n return true;\r\n }\r\n if (typeof item.completion.documentation === 'string' && item.completion.documentation.match(colorRegExp)) {\r\n out[0] = item.completion.documentation;\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction canExpandCompletionItem(item) {\r\n if (!item) {\r\n return false;\r\n }\r\n const suggestion = item.completion;\r\n if (suggestion.documentation) {\r\n return true;\r\n }\r\n return (suggestion.detail && suggestion.detail !== suggestion.label);\r\n}\r\nfunction getAriaId(index) {\r\n return `suggest-aria-id:${index}`;\r\n}\r\nlet ItemRenderer = class ItemRenderer {\r\n constructor(widget, editor, triggerKeybindingLabel, _modelService, _modeService, _themeService) {\r\n this.widget = widget;\r\n this.editor = editor;\r\n this.triggerKeybindingLabel = triggerKeybindingLabel;\r\n this._modelService = _modelService;\r\n this._modeService = _modeService;\r\n this._themeService = _themeService;\r\n }\r\n get templateId() {\r\n return 'suggestion';\r\n }\r\n renderTemplate(container) {\r\n const data = Object.create(null);\r\n data.disposables = new DisposableStore();\r\n data.root = container;\r\n data.root.classList.add('show-file-icons');\r\n data.icon = append(container, $('.icon'));\r\n data.colorspan = append(data.icon, $('span.colorspan'));\r\n const text = append(container, $('.contents'));\r\n const main = append(text, $('.main'));\r\n data.iconContainer = append(main, $('.icon-label.codicon'));\r\n data.left = append(main, $('span.left'));\r\n data.right = append(main, $('span.right'));\r\n data.iconLabel = new IconLabel(data.left, { supportHighlights: true, supportCodicons: true });\r\n data.disposables.add(data.iconLabel);\r\n data.parametersLabel = append(data.left, $('span.signature-label'));\r\n data.qualifierLabel = append(data.left, $('span.qualifier-label'));\r\n data.detailsLabel = append(data.right, $('span.details-label'));\r\n data.readMore = append(data.right, $('span.readMore' + suggestMoreInfoIcon.cssSelector));\r\n data.readMore.title = nls.localize('readMore', \"Read More ({0})\", this.triggerKeybindingLabel);\r\n const configureFont = () => {\r\n const options = this.editor.getOptions();\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const fontFamily = fontInfo.fontFamily;\r\n const fontFeatureSettings = fontInfo.fontFeatureSettings;\r\n const fontSize = options.get(97 /* suggestFontSize */) || fontInfo.fontSize;\r\n const lineHeight = options.get(98 /* suggestLineHeight */) || fontInfo.lineHeight;\r\n const fontWeight = fontInfo.fontWeight;\r\n const fontSizePx = `${fontSize}px`;\r\n const lineHeightPx = `${lineHeight}px`;\r\n data.root.style.fontSize = fontSizePx;\r\n data.root.style.fontWeight = fontWeight;\r\n main.style.fontFamily = fontFamily;\r\n main.style.fontFeatureSettings = fontFeatureSettings;\r\n main.style.lineHeight = lineHeightPx;\r\n data.icon.style.height = lineHeightPx;\r\n data.icon.style.width = lineHeightPx;\r\n data.readMore.style.height = lineHeightPx;\r\n data.readMore.style.width = lineHeightPx;\r\n };\r\n configureFont();\r\n data.disposables.add(Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor))\r\n .filter(e => e.hasChanged(36 /* fontInfo */) || e.hasChanged(97 /* suggestFontSize */) || e.hasChanged(98 /* suggestLineHeight */))\r\n .on(configureFont, null));\r\n return data;\r\n }\r\n renderElement(element, index, templateData) {\r\n const data = templateData;\r\n const suggestion = element.completion;\r\n const textLabel = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.name;\r\n data.root.id = getAriaId(index);\r\n data.colorspan.style.backgroundColor = '';\r\n const labelOptions = {\r\n labelEscapeNewLines: true,\r\n matches: createMatches(element.score)\r\n };\r\n let color = [];\r\n if (suggestion.kind === 19 /* Color */ && extractColor(element, color)) {\r\n // special logic for 'color' completion items\r\n data.icon.className = 'icon customcolor';\r\n data.iconContainer.className = 'icon hide';\r\n data.colorspan.style.backgroundColor = color[0];\r\n }\r\n else if (suggestion.kind === 20 /* File */ && this._themeService.getFileIconTheme().hasFileIcons) {\r\n // special logic for 'file' completion items\r\n data.icon.className = 'icon hide';\r\n data.iconContainer.className = 'icon hide';\r\n const labelClasses = getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: textLabel }), FileKind.FILE);\r\n const detailClasses = getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: suggestion.detail }), FileKind.FILE);\r\n labelOptions.extraClasses = labelClasses.length > detailClasses.length ? labelClasses : detailClasses;\r\n }\r\n else if (suggestion.kind === 23 /* Folder */ && this._themeService.getFileIconTheme().hasFolderIcons) {\r\n // special logic for 'folder' completion items\r\n data.icon.className = 'icon hide';\r\n data.iconContainer.className = 'icon hide';\r\n labelOptions.extraClasses = flatten([\r\n getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: textLabel }), FileKind.FOLDER),\r\n getIconClasses(this._modelService, this._modeService, URI.from({ scheme: 'fake', path: suggestion.detail }), FileKind.FOLDER)\r\n ]);\r\n }\r\n else {\r\n // normal icon\r\n data.icon.className = 'icon hide';\r\n data.iconContainer.className = '';\r\n addClasses(data.iconContainer, `suggest-icon ${completionKindToCssClass(suggestion.kind)}`);\r\n }\r\n if (suggestion.tags && suggestion.tags.indexOf(1 /* Deprecated */) >= 0) {\r\n labelOptions.extraClasses = (labelOptions.extraClasses || []).concat(['deprecated']);\r\n labelOptions.matches = [];\r\n }\r\n data.iconLabel.setLabel(textLabel, undefined, labelOptions);\r\n if (typeof suggestion.label === 'string') {\r\n data.parametersLabel.textContent = '';\r\n data.qualifierLabel.textContent = '';\r\n data.detailsLabel.textContent = (suggestion.detail || '').replace(/\\n.*$/m, '');\r\n data.root.classList.add('string-label');\r\n }\r\n else {\r\n data.parametersLabel.textContent = (suggestion.label.parameters || '').replace(/\\n.*$/m, '');\r\n data.qualifierLabel.textContent = (suggestion.label.qualifier || '').replace(/\\n.*$/m, '');\r\n data.detailsLabel.textContent = (suggestion.label.type || '').replace(/\\n.*$/m, '');\r\n data.root.classList.remove('string-label');\r\n }\r\n if (canExpandCompletionItem(element)) {\r\n data.right.classList.add('can-expand-details');\r\n show(data.readMore);\r\n data.readMore.onmousedown = e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n data.readMore.onclick = e => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.widget.toggleDetails();\r\n };\r\n }\r\n else {\r\n data.right.classList.remove('can-expand-details');\r\n hide(data.readMore);\r\n data.readMore.onmousedown = null;\r\n data.readMore.onclick = null;\r\n }\r\n }\r\n disposeTemplate(templateData) {\r\n templateData.disposables.dispose();\r\n }\r\n};\r\nItemRenderer = __decorate([\r\n __param(3, IModelService),\r\n __param(4, IModeService),\r\n __param(5, IThemeService)\r\n], ItemRenderer);\r\nclass SuggestionDetails {\r\n constructor(container, widget, editor, markdownRenderer, kbToggleDetails) {\r\n this.widget = widget;\r\n this.editor = editor;\r\n this.markdownRenderer = markdownRenderer;\r\n this.kbToggleDetails = kbToggleDetails;\r\n this.borderWidth = 1;\r\n this.disposables = new DisposableStore();\r\n this.el = append(container, $('.details'));\r\n this.disposables.add(toDisposable(() => container.removeChild(this.el)));\r\n this.body = $('.body');\r\n this.scrollbar = new DomScrollableElement(this.body, {});\r\n append(this.el, this.scrollbar.getDomNode());\r\n this.disposables.add(this.scrollbar);\r\n this.header = append(this.body, $('.header'));\r\n this.close = append(this.header, $('span' + Codicon.close.cssSelector));\r\n this.close.title = nls.localize('readLess', \"Read Less ({0})\", this.kbToggleDetails);\r\n this.type = append(this.header, $('p.type'));\r\n this.docs = append(this.body, $('p.docs'));\r\n this.configureFont();\r\n Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor))\r\n .filter(e => e.hasChanged(36 /* fontInfo */))\r\n .on(this.configureFont, this, this.disposables);\r\n markdownRenderer.onDidRenderCodeBlock(() => this.scrollbar.scanDomNode(), this, this.disposables);\r\n }\r\n get element() {\r\n return this.el;\r\n }\r\n renderLoading() {\r\n this.type.textContent = nls.localize('loading', \"Loading...\");\r\n this.docs.textContent = '';\r\n }\r\n renderItem(item, explainMode) {\r\n dispose(this.renderDisposeable);\r\n this.renderDisposeable = undefined;\r\n let { documentation, detail } = item.completion;\r\n // --- documentation\r\n if (explainMode) {\r\n let md = '';\r\n md += `score: ${item.score[0]}${item.word ? `, compared '${item.completion.filterText && (item.completion.filterText + ' (filterText)') || item.completion.label}' with '${item.word}'` : ' (no prefix)'}\\n`;\r\n md += `distance: ${item.distance}, see localityBonus-setting\\n`;\r\n md += `index: ${item.idx}, based on ${item.completion.sortText && `sortText: \"${item.completion.sortText}\"` || 'label'}\\n`;\r\n documentation = new MarkdownString().appendCodeblock('empty', md);\r\n detail = `Provider: ${item.provider._debugDisplayName}`;\r\n }\r\n if (!explainMode && !canExpandCompletionItem(item)) {\r\n this.type.textContent = '';\r\n this.docs.textContent = '';\r\n this.el.classList.add('no-docs');\r\n return;\r\n }\r\n this.el.classList.remove('no-docs');\r\n if (typeof documentation === 'string') {\r\n this.docs.classList.remove('markdown-docs');\r\n this.docs.textContent = documentation;\r\n }\r\n else {\r\n this.docs.classList.add('markdown-docs');\r\n this.docs.innerText = '';\r\n const renderedContents = this.markdownRenderer.render(documentation);\r\n this.renderDisposeable = renderedContents;\r\n this.docs.appendChild(renderedContents.element);\r\n }\r\n // --- details\r\n if (detail) {\r\n this.type.innerText = detail.length > 100000 ? `${detail.substr(0, 100000)}…` : detail;\r\n show(this.type);\r\n }\r\n else {\r\n this.type.innerText = '';\r\n hide(this.type);\r\n }\r\n this.el.style.height = this.header.offsetHeight + this.docs.offsetHeight + (this.borderWidth * 2) + 'px';\r\n this.el.style.userSelect = 'text';\r\n this.el.tabIndex = -1;\r\n this.close.onmousedown = e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n this.close.onclick = e => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.widget.toggleDetails();\r\n };\r\n this.body.scrollTop = 0;\r\n this.scrollbar.scanDomNode();\r\n }\r\n scrollDown(much = 8) {\r\n this.body.scrollTop += much;\r\n }\r\n scrollUp(much = 8) {\r\n this.body.scrollTop -= much;\r\n }\r\n scrollTop() {\r\n this.body.scrollTop = 0;\r\n }\r\n scrollBottom() {\r\n this.body.scrollTop = this.body.scrollHeight;\r\n }\r\n pageDown() {\r\n this.scrollDown(80);\r\n }\r\n pageUp() {\r\n this.scrollUp(80);\r\n }\r\n setBorderWidth(width) {\r\n this.borderWidth = width;\r\n }\r\n configureFont() {\r\n const options = this.editor.getOptions();\r\n const fontInfo = options.get(36 /* fontInfo */);\r\n const fontFamily = fontInfo.fontFamily;\r\n const fontSize = options.get(97 /* suggestFontSize */) || fontInfo.fontSize;\r\n const lineHeight = options.get(98 /* suggestLineHeight */) || fontInfo.lineHeight;\r\n const fontWeight = fontInfo.fontWeight;\r\n const fontSizePx = `${fontSize}px`;\r\n const lineHeightPx = `${lineHeight}px`;\r\n this.el.style.fontSize = fontSizePx;\r\n this.el.style.fontWeight = fontWeight;\r\n this.el.style.fontFeatureSettings = fontInfo.fontFeatureSettings;\r\n this.type.style.fontFamily = fontFamily;\r\n this.close.style.height = lineHeightPx;\r\n this.close.style.width = lineHeightPx;\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n dispose(this.renderDisposeable);\r\n this.renderDisposeable = undefined;\r\n }\r\n}\r\nlet SuggestWidget = class SuggestWidget {\r\n constructor(editor, telemetryService, keybindingService, contextKeyService, themeService, storageService, modeService, openerService, menuService, instantiationService) {\r\n var _a, _b;\r\n this.editor = editor;\r\n this.telemetryService = telemetryService;\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this.suppressMouseDown = false;\r\n this.state = 0 /* Hidden */;\r\n this.isAddedAsContentWidget = false;\r\n this.isAuto = false;\r\n this.loadingTimeout = Disposable.None;\r\n this.currentSuggestionDetails = null;\r\n this.ignoreFocusEvents = false;\r\n this.completionModel = null;\r\n this.showTimeout = new TimeoutTimer();\r\n this.toDispose = new DisposableStore();\r\n this.onDidSelectEmitter = new Emitter();\r\n this.onDidFocusEmitter = new Emitter();\r\n this.onDidHideEmitter = new Emitter();\r\n this.onDidShowEmitter = new Emitter();\r\n this.onDidSelect = this.onDidSelectEmitter.event;\r\n this.onDidFocus = this.onDidFocusEmitter.event;\r\n this.onDidHide = this.onDidHideEmitter.event;\r\n this.onDidShow = this.onDidShowEmitter.event;\r\n this.maxWidgetWidth = 660;\r\n this.listWidth = 330;\r\n this.firstFocusInCurrentList = false;\r\n this.preferDocPositionTop = false;\r\n this.docsPositionPreviousWidgetY = null;\r\n this.explainMode = false;\r\n this._onDetailsKeydown = new Emitter();\r\n this.onDetailsKeyDown = this._onDetailsKeydown.event;\r\n const markdownRenderer = this.toDispose.add(new MarkdownRenderer(editor, modeService, openerService));\r\n const kbToggleDetails = (_b = (_a = keybindingService.lookupKeybinding('toggleSuggestionDetails')) === null || _a === void 0 ? void 0 : _a.getLabel()) !== null && _b !== void 0 ? _b : '';\r\n this.isAuto = false;\r\n this.focusedItem = null;\r\n this.storageService = storageService;\r\n this.element = $('.editor-widget.suggest-widget');\r\n this.toDispose.add(addDisposableListener(this.element, 'click', e => {\r\n if (e.target === this.element) {\r\n this.hideWidget();\r\n }\r\n }));\r\n this.messageElement = append(this.element, $('.message'));\r\n this.listElement = append(this.element, $('.tree'));\r\n const applyStatusBarStyle = () => this.element.classList.toggle('with-status-bar', this.editor.getOption(96 /* suggest */).statusBar.visible);\r\n applyStatusBarStyle();\r\n this.statusBarElement = append(this.element, $('.suggest-status-bar'));\r\n const actionViewItemProvider = (action => {\r\n const kb = keybindingService.lookupKeybindings(action.id);\r\n return new class extends ActionViewItem {\r\n constructor() {\r\n super(undefined, action, { label: true, icon: false });\r\n }\r\n updateLabel() {\r\n if (isFalsyOrEmpty(kb) || !this.label) {\r\n return super.updateLabel();\r\n }\r\n const { label } = this.getAction();\r\n this.label.textContent = /{\\d}/.test(label)\r\n ? strings.format(this.getAction().label, kb[0].getLabel())\r\n : `${this.getAction().label} (${kb[0].getLabel()})`;\r\n }\r\n };\r\n });\r\n const leftActions = new ActionBar(this.statusBarElement, { actionViewItemProvider });\r\n const rightActions = new ActionBar(this.statusBarElement, { actionViewItemProvider });\r\n const menu = menuService.createMenu(suggestWidgetStatusbarMenu, contextKeyService);\r\n const renderMenu = () => {\r\n const left = [];\r\n const right = [];\r\n for (let [group, actions] of menu.getActions()) {\r\n if (group === 'left') {\r\n left.push(...actions);\r\n }\r\n else {\r\n right.push(...actions);\r\n }\r\n }\r\n leftActions.clear();\r\n leftActions.push(left);\r\n rightActions.clear();\r\n rightActions.push(right);\r\n };\r\n this.toDispose.add(menu.onDidChange(() => renderMenu()));\r\n this.toDispose.add(menu);\r\n this.details = instantiationService.createInstance(SuggestionDetails, this.element, this, this.editor, markdownRenderer, kbToggleDetails);\r\n const applyIconStyle = () => this.element.classList.toggle('no-icons', !this.editor.getOption(96 /* suggest */).showIcons);\r\n applyIconStyle();\r\n let renderer = instantiationService.createInstance(ItemRenderer, this, this.editor, kbToggleDetails);\r\n this.list = new List('SuggestWidget', this.listElement, this, [renderer], {\r\n useShadows: false,\r\n mouseSupport: false,\r\n accessibilityProvider: {\r\n getRole: () => 'option',\r\n getAriaLabel: (item) => {\r\n const textLabel = typeof item.completion.label === 'string' ? item.completion.label : item.completion.label.name;\r\n if (item.isResolved && this.expandDocsSettingFromStorage()) {\r\n const { documentation, detail } = item.completion;\r\n const docs = strings.format('{0}{1}', detail || '', documentation ? (typeof documentation === 'string' ? documentation : documentation.value) : '');\r\n return nls.localize('ariaCurrenttSuggestionReadDetails', \"{0}, docs: {1}\", textLabel, docs);\r\n }\r\n else {\r\n return textLabel;\r\n }\r\n },\r\n getWidgetAriaLabel: () => nls.localize('suggest', \"Suggest\"),\r\n getWidgetRole: () => 'listbox'\r\n }\r\n });\r\n this.toDispose.add(attachListStyler(this.list, themeService, {\r\n listInactiveFocusBackground: editorSuggestWidgetSelectedBackground,\r\n listInactiveFocusOutline: activeContrastBorder\r\n }));\r\n this.toDispose.add(themeService.onDidColorThemeChange(t => this.onThemeChange(t)));\r\n this.toDispose.add(editor.onDidLayoutChange(() => this.onEditorLayoutChange()));\r\n this.toDispose.add(this.list.onMouseDown(e => this.onListMouseDownOrTap(e)));\r\n this.toDispose.add(this.list.onTap(e => this.onListMouseDownOrTap(e)));\r\n this.toDispose.add(this.list.onDidChangeSelection(e => this.onListSelection(e)));\r\n this.toDispose.add(this.list.onDidChangeFocus(e => this.onListFocus(e)));\r\n this.toDispose.add(this.editor.onDidChangeCursorSelection(() => this.onCursorSelectionChanged()));\r\n this.toDispose.add(this.editor.onDidChangeConfiguration(e => {\r\n if (e.hasChanged(96 /* suggest */)) {\r\n applyStatusBarStyle();\r\n applyIconStyle();\r\n }\r\n }));\r\n this.ctxSuggestWidgetVisible = SuggestContext.Visible.bindTo(contextKeyService);\r\n this.ctxSuggestWidgetDetailsVisible = SuggestContext.DetailsVisible.bindTo(contextKeyService);\r\n this.ctxSuggestWidgetMultipleSuggestions = SuggestContext.MultipleSuggestions.bindTo(contextKeyService);\r\n this.onThemeChange(themeService.getColorTheme());\r\n this.toDispose.add(addStandardDisposableListener(this.details.element, 'keydown', e => {\r\n this._onDetailsKeydown.fire(e);\r\n }));\r\n this.toDispose.add(this.editor.onMouseDown((e) => this.onEditorMouseDown(e)));\r\n }\r\n onEditorMouseDown(mouseEvent) {\r\n // Clicking inside details\r\n if (this.details.element.contains(mouseEvent.target.element)) {\r\n this.details.element.focus();\r\n }\r\n // Clicking outside details and inside suggest\r\n else {\r\n if (this.element.contains(mouseEvent.target.element)) {\r\n this.editor.focus();\r\n }\r\n }\r\n }\r\n onCursorSelectionChanged() {\r\n if (this.state === 0 /* Hidden */) {\r\n return;\r\n }\r\n this.editor.layoutContentWidget(this);\r\n }\r\n onEditorLayoutChange() {\r\n if ((this.state === 3 /* Open */ || this.state === 5 /* Details */) && this.expandDocsSettingFromStorage()) {\r\n this.expandSideOrBelow();\r\n }\r\n }\r\n onListMouseDownOrTap(e) {\r\n if (typeof e.element === 'undefined' || typeof e.index === 'undefined') {\r\n return;\r\n }\r\n // prevent stealing browser focus from the editor\r\n e.browserEvent.preventDefault();\r\n e.browserEvent.stopPropagation();\r\n this.select(e.element, e.index);\r\n }\r\n onListSelection(e) {\r\n if (!e.elements.length) {\r\n return;\r\n }\r\n this.select(e.elements[0], e.indexes[0]);\r\n }\r\n select(item, index) {\r\n const completionModel = this.completionModel;\r\n if (!completionModel) {\r\n return;\r\n }\r\n this.onDidSelectEmitter.fire({ item, index, model: completionModel });\r\n this.editor.focus();\r\n }\r\n onThemeChange(theme) {\r\n const backgroundColor = theme.getColor(editorSuggestWidgetBackground);\r\n if (backgroundColor) {\r\n this.listElement.style.backgroundColor = backgroundColor.toString();\r\n this.statusBarElement.style.backgroundColor = backgroundColor.toString();\r\n this.details.element.style.backgroundColor = backgroundColor.toString();\r\n this.messageElement.style.backgroundColor = backgroundColor.toString();\r\n }\r\n const borderColor = theme.getColor(editorSuggestWidgetBorder);\r\n if (borderColor) {\r\n this.listElement.style.borderColor = borderColor.toString();\r\n this.statusBarElement.style.borderColor = borderColor.toString();\r\n this.details.element.style.borderColor = borderColor.toString();\r\n this.messageElement.style.borderColor = borderColor.toString();\r\n this.detailsBorderColor = borderColor.toString();\r\n }\r\n const focusBorderColor = theme.getColor(focusBorder);\r\n if (focusBorderColor) {\r\n this.detailsFocusBorderColor = focusBorderColor.toString();\r\n }\r\n this.details.setBorderWidth(theme.type === 'hc' ? 2 : 1);\r\n }\r\n onListFocus(e) {\r\n if (this.ignoreFocusEvents) {\r\n return;\r\n }\r\n if (!e.elements.length) {\r\n if (this.currentSuggestionDetails) {\r\n this.currentSuggestionDetails.cancel();\r\n this.currentSuggestionDetails = null;\r\n this.focusedItem = null;\r\n }\r\n this.editor.setAriaOptions({ activeDescendant: undefined });\r\n return;\r\n }\r\n if (!this.completionModel) {\r\n return;\r\n }\r\n const item = e.elements[0];\r\n const index = e.indexes[0];\r\n this.firstFocusInCurrentList = !this.focusedItem;\r\n if (item !== this.focusedItem) {\r\n if (this.currentSuggestionDetails) {\r\n this.currentSuggestionDetails.cancel();\r\n this.currentSuggestionDetails = null;\r\n }\r\n this.focusedItem = item;\r\n this.list.reveal(index);\r\n this.currentSuggestionDetails = createCancelablePromise((token) => __awaiter(this, void 0, void 0, function* () {\r\n const loading = disposableTimeout(() => this.showDetails(true), 250);\r\n token.onCancellationRequested(() => loading.dispose());\r\n const result = yield item.resolve(token);\r\n loading.dispose();\r\n return result;\r\n }));\r\n this.currentSuggestionDetails.then(() => {\r\n if (index >= this.list.length || item !== this.list.element(index)) {\r\n return;\r\n }\r\n // item can have extra information, so re-render\r\n this.ignoreFocusEvents = true;\r\n this.list.splice(index, 1, [item]);\r\n this.list.setFocus([index]);\r\n this.ignoreFocusEvents = false;\r\n if (this.expandDocsSettingFromStorage()) {\r\n this.showDetails(false);\r\n }\r\n else {\r\n this.element.classList.remove('docs-side');\r\n }\r\n this.editor.setAriaOptions({ activeDescendant: getAriaId(index) });\r\n }).catch(onUnexpectedError);\r\n }\r\n // emit an event\r\n this.onDidFocusEmitter.fire({ item, index, model: this.completionModel });\r\n }\r\n setState(state) {\r\n if (!this.element) {\r\n return;\r\n }\r\n if (!this.isAddedAsContentWidget && state !== 0 /* Hidden */) {\r\n this.isAddedAsContentWidget = true;\r\n this.editor.addContentWidget(this);\r\n }\r\n const stateChanged = this.state !== state;\r\n this.state = state;\r\n this.element.classList.toggle('frozen', state === 4 /* Frozen */);\r\n switch (state) {\r\n case 0 /* Hidden */:\r\n hide(this.messageElement, this.details.element, this.listElement, this.statusBarElement);\r\n this.hide();\r\n this.listHeight = 0;\r\n if (stateChanged) {\r\n this.list.splice(0, this.list.length);\r\n }\r\n this.focusedItem = null;\r\n break;\r\n case 1 /* Loading */:\r\n this.messageElement.textContent = SuggestWidget.LOADING_MESSAGE;\r\n hide(this.listElement, this.details.element, this.statusBarElement);\r\n show(this.messageElement);\r\n this.element.classList.remove('docs-side');\r\n this.show();\r\n this.focusedItem = null;\r\n break;\r\n case 2 /* Empty */:\r\n this.messageElement.textContent = SuggestWidget.NO_SUGGESTIONS_MESSAGE;\r\n hide(this.listElement, this.details.element, this.statusBarElement);\r\n show(this.messageElement);\r\n this.element.classList.remove('docs-side');\r\n this.show();\r\n this.focusedItem = null;\r\n break;\r\n case 3 /* Open */:\r\n hide(this.messageElement);\r\n show(this.listElement, this.statusBarElement);\r\n this.show();\r\n break;\r\n case 4 /* Frozen */:\r\n hide(this.messageElement);\r\n show(this.listElement);\r\n this.show();\r\n break;\r\n case 5 /* Details */:\r\n hide(this.messageElement);\r\n show(this.details.element, this.listElement, this.statusBarElement);\r\n this.show();\r\n break;\r\n }\r\n }\r\n showTriggered(auto, delay) {\r\n if (this.state !== 0 /* Hidden */) {\r\n return;\r\n }\r\n this.isAuto = !!auto;\r\n if (!this.isAuto) {\r\n this.loadingTimeout = disposableTimeout(() => this.setState(1 /* Loading */), delay);\r\n }\r\n }\r\n showSuggestions(completionModel, selectionIndex, isFrozen, isAuto) {\r\n this.preferDocPositionTop = false;\r\n this.docsPositionPreviousWidgetY = null;\r\n this.loadingTimeout.dispose();\r\n if (this.currentSuggestionDetails) {\r\n this.currentSuggestionDetails.cancel();\r\n this.currentSuggestionDetails = null;\r\n }\r\n if (this.completionModel !== completionModel) {\r\n this.completionModel = completionModel;\r\n }\r\n if (isFrozen && this.state !== 2 /* Empty */ && this.state !== 0 /* Hidden */) {\r\n this.setState(4 /* Frozen */);\r\n return;\r\n }\r\n let visibleCount = this.completionModel.items.length;\r\n const isEmpty = visibleCount === 0;\r\n this.ctxSuggestWidgetMultipleSuggestions.set(visibleCount > 1);\r\n if (isEmpty) {\r\n if (isAuto) {\r\n this.setState(0 /* Hidden */);\r\n }\r\n else {\r\n this.setState(2 /* Empty */);\r\n }\r\n this.completionModel = null;\r\n }\r\n else {\r\n if (this.state !== 3 /* Open */) {\r\n const { stats } = this.completionModel;\r\n stats['wasAutomaticallyTriggered'] = !!isAuto;\r\n /* __GDPR__\r\n \"suggestWidget\" : {\r\n \"wasAutomaticallyTriggered\" : { \"classification\": \"SystemMetaData\", \"purpose\": \"FeatureInsight\", \"isMeasurement\": true },\r\n \"${include}\": [\r\n \"${ICompletionStats}\"\r\n ]\r\n }\r\n */\r\n this.telemetryService.publicLog('suggestWidget', Object.assign({}, stats));\r\n }\r\n this.focusedItem = null;\r\n this.list.splice(0, this.list.length, this.completionModel.items);\r\n if (isFrozen) {\r\n this.setState(4 /* Frozen */);\r\n }\r\n else {\r\n this.setState(3 /* Open */);\r\n }\r\n this.list.reveal(selectionIndex, 0);\r\n this.list.setFocus([selectionIndex]);\r\n // Reset focus border\r\n if (this.detailsBorderColor) {\r\n this.details.element.style.borderColor = this.detailsBorderColor;\r\n }\r\n }\r\n }\r\n selectNextPage() {\r\n switch (this.state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this.details.pageDown();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this.isAuto;\r\n default:\r\n this.list.focusNextPage();\r\n return true;\r\n }\r\n }\r\n selectNext() {\r\n switch (this.state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 1 /* Loading */:\r\n return !this.isAuto;\r\n default:\r\n this.list.focusNext(1, true);\r\n return true;\r\n }\r\n }\r\n selectLast() {\r\n switch (this.state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this.details.scrollBottom();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this.isAuto;\r\n default:\r\n this.list.focusLast();\r\n return true;\r\n }\r\n }\r\n selectPreviousPage() {\r\n switch (this.state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this.details.pageUp();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this.isAuto;\r\n default:\r\n this.list.focusPreviousPage();\r\n return true;\r\n }\r\n }\r\n selectPrevious() {\r\n switch (this.state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 1 /* Loading */:\r\n return !this.isAuto;\r\n default:\r\n this.list.focusPrevious(1, true);\r\n return false;\r\n }\r\n }\r\n selectFirst() {\r\n switch (this.state) {\r\n case 0 /* Hidden */:\r\n return false;\r\n case 5 /* Details */:\r\n this.details.scrollTop();\r\n return true;\r\n case 1 /* Loading */:\r\n return !this.isAuto;\r\n default:\r\n this.list.focusFirst();\r\n return true;\r\n }\r\n }\r\n getFocusedItem() {\r\n if (this.state !== 0 /* Hidden */\r\n && this.state !== 2 /* Empty */\r\n && this.state !== 1 /* Loading */\r\n && this.completionModel) {\r\n return {\r\n item: this.list.getFocusedElements()[0],\r\n index: this.list.getFocus()[0],\r\n model: this.completionModel\r\n };\r\n }\r\n return undefined;\r\n }\r\n toggleDetailsFocus() {\r\n if (this.state === 5 /* Details */) {\r\n this.setState(3 /* Open */);\r\n if (this.detailsBorderColor) {\r\n this.details.element.style.borderColor = this.detailsBorderColor;\r\n }\r\n }\r\n else if (this.state === 3 /* Open */ && this.expandDocsSettingFromStorage()) {\r\n this.setState(5 /* Details */);\r\n if (this.detailsFocusBorderColor) {\r\n this.details.element.style.borderColor = this.detailsFocusBorderColor;\r\n }\r\n }\r\n this.telemetryService.publicLog2('suggestWidget:toggleDetailsFocus');\r\n }\r\n toggleDetails() {\r\n if (!canExpandCompletionItem(this.list.getFocusedElements()[0])) {\r\n return;\r\n }\r\n if (this.expandDocsSettingFromStorage()) {\r\n this.ctxSuggestWidgetDetailsVisible.set(false);\r\n this.updateExpandDocsSetting(false);\r\n hide(this.details.element);\r\n this.element.classList.remove('docs-side', 'doc-below');\r\n this.editor.layoutContentWidget(this);\r\n this.telemetryService.publicLog2('suggestWidget:collapseDetails');\r\n }\r\n else {\r\n if (this.state !== 3 /* Open */ && this.state !== 5 /* Details */ && this.state !== 4 /* Frozen */) {\r\n return;\r\n }\r\n this.ctxSuggestWidgetDetailsVisible.set(true);\r\n this.updateExpandDocsSetting(true);\r\n this.showDetails(false);\r\n this.telemetryService.publicLog2('suggestWidget:expandDetails');\r\n }\r\n }\r\n showDetails(loading) {\r\n if (!loading) {\r\n // When loading, don't re-layout docs, as item is not resolved yet #88731\r\n this.expandSideOrBelow();\r\n }\r\n show(this.details.element);\r\n this.details.element.style.maxHeight = this.maxWidgetHeight + 'px';\r\n if (loading) {\r\n this.details.renderLoading();\r\n }\r\n else {\r\n this.details.renderItem(this.list.getFocusedElements()[0], this.explainMode);\r\n }\r\n // Reset margin-top that was set as Fix for #26416\r\n this.listElement.style.marginTop = '0px';\r\n // with docs showing up widget width/height may change, so reposition the widget\r\n this.editor.layoutContentWidget(this);\r\n this.adjustDocsPosition();\r\n this.editor.focus();\r\n }\r\n toggleExplainMode() {\r\n if (this.list.getFocusedElements()[0] && this.expandDocsSettingFromStorage()) {\r\n this.explainMode = !this.explainMode;\r\n this.showDetails(false);\r\n }\r\n }\r\n show() {\r\n const newHeight = this.updateListHeight();\r\n if (newHeight !== this.listHeight) {\r\n this.editor.layoutContentWidget(this);\r\n this.listHeight = newHeight;\r\n }\r\n this.ctxSuggestWidgetVisible.set(true);\r\n this.showTimeout.cancelAndSet(() => {\r\n this.element.classList.add('visible');\r\n this.onDidShowEmitter.fire(this);\r\n }, 100);\r\n }\r\n hide() {\r\n // let the editor know that the widget is hidden\r\n this.editor.layoutContentWidget(this);\r\n this.ctxSuggestWidgetVisible.reset();\r\n this.ctxSuggestWidgetMultipleSuggestions.reset();\r\n this.element.classList.remove('visible');\r\n }\r\n hideWidget() {\r\n this.loadingTimeout.dispose();\r\n this.setState(0 /* Hidden */);\r\n this.onDidHideEmitter.fire(this);\r\n }\r\n getPosition() {\r\n if (this.state === 0 /* Hidden */) {\r\n return null;\r\n }\r\n let preference = [2 /* BELOW */, 1 /* ABOVE */];\r\n if (this.preferDocPositionTop) {\r\n preference = [1 /* ABOVE */];\r\n }\r\n return {\r\n position: this.editor.getPosition(),\r\n preference: preference\r\n };\r\n }\r\n getDomNode() {\r\n return this.element;\r\n }\r\n getId() {\r\n return SuggestWidget.ID;\r\n }\r\n isFrozen() {\r\n return this.state === 4 /* Frozen */;\r\n }\r\n updateListHeight() {\r\n let height = 0;\r\n if (this.state === 2 /* Empty */ || this.state === 1 /* Loading */) {\r\n height = this.unfocusedHeight;\r\n }\r\n else {\r\n const suggestionCount = this.list.contentHeight / this.unfocusedHeight;\r\n const { maxVisibleSuggestions } = this.editor.getOption(96 /* suggest */);\r\n height = Math.min(suggestionCount, maxVisibleSuggestions) * this.unfocusedHeight;\r\n }\r\n this.element.style.lineHeight = `${this.unfocusedHeight}px`;\r\n this.listElement.style.height = `${height}px`;\r\n this.statusBarElement.style.top = `${height}px`;\r\n this.list.layout(height);\r\n return height;\r\n }\r\n /**\r\n * Adds the propert classes, margins when positioning the docs to the side\r\n */\r\n adjustDocsPosition() {\r\n if (!this.editor.hasModel()) {\r\n return;\r\n }\r\n const lineHeight = this.editor.getOption(51 /* lineHeight */);\r\n const cursorCoords = this.editor.getScrolledVisiblePosition(this.editor.getPosition());\r\n const editorCoords = getDomNodePagePosition(this.editor.getDomNode());\r\n const cursorX = editorCoords.left + cursorCoords.left;\r\n const cursorY = editorCoords.top + cursorCoords.top + cursorCoords.height;\r\n const widgetCoords = getDomNodePagePosition(this.element);\r\n const widgetX = widgetCoords.left;\r\n const widgetY = widgetCoords.top;\r\n // Fixes #27649\r\n // Check if the Y changed to the top of the cursor and keep the widget flagged to prefer top\r\n if (this.docsPositionPreviousWidgetY &&\r\n this.docsPositionPreviousWidgetY < widgetY &&\r\n !this.preferDocPositionTop) {\r\n this.preferDocPositionTop = true;\r\n this.adjustDocsPosition();\r\n return;\r\n }\r\n this.docsPositionPreviousWidgetY = widgetY;\r\n if (widgetX < cursorX - this.listWidth) {\r\n // Widget is too far to the left of cursor, swap list and docs\r\n this.element.classList.add('list-right');\r\n }\r\n else {\r\n this.element.classList.remove('list-right');\r\n }\r\n // Compare top of the cursor (cursorY - lineheight) with widgetTop to determine if\r\n // margin-top needs to be applied on list to make it appear right above the cursor\r\n // Cannot compare cursorY directly as it may be a few decimals off due to zoooming\r\n if (this.element.classList.contains('docs-side')\r\n && cursorY - lineHeight > widgetY\r\n && this.details.element.offsetHeight > this.listElement.offsetHeight) {\r\n // Fix for #26416\r\n // Docs is bigger than list and widget is above cursor, apply margin-top so that list appears right above cursor\r\n this.listElement.style.marginTop = `${this.details.element.offsetHeight - this.listElement.offsetHeight}px`;\r\n }\r\n }\r\n /**\r\n * Adds the proper classes for positioning the docs to the side or below depending on item\r\n */\r\n expandSideOrBelow() {\r\n if (!canExpandCompletionItem(this.focusedItem) && this.firstFocusInCurrentList) {\r\n this.element.classList.remove('docs-side', 'docs-below');\r\n return;\r\n }\r\n let matches = this.element.style.maxWidth.match(/(\\d+)px/);\r\n if (!matches || Number(matches[1]) < this.maxWidgetWidth) {\r\n this.element.classList.add('docs-below');\r\n this.element.classList.remove('docs-side');\r\n }\r\n else if (canExpandCompletionItem(this.focusedItem)) {\r\n this.element.classList.add('docs-side');\r\n this.element.classList.remove('docs-below');\r\n }\r\n }\r\n // Heights\r\n get maxWidgetHeight() {\r\n return this.unfocusedHeight * this.editor.getOption(96 /* suggest */).maxVisibleSuggestions;\r\n }\r\n get unfocusedHeight() {\r\n const options = this.editor.getOptions();\r\n return options.get(98 /* suggestLineHeight */) || options.get(36 /* fontInfo */).lineHeight;\r\n }\r\n // IDelegate\r\n getHeight(element) {\r\n return this.unfocusedHeight;\r\n }\r\n getTemplateId(element) {\r\n return 'suggestion';\r\n }\r\n expandDocsSettingFromStorage() {\r\n return this.storageService.getBoolean('expandSuggestionDocs', 0 /* GLOBAL */, expandSuggestionDocsByDefault);\r\n }\r\n updateExpandDocsSetting(value) {\r\n this.storageService.store('expandSuggestionDocs', value, 0 /* GLOBAL */);\r\n }\r\n dispose() {\r\n this.details.dispose();\r\n this.list.dispose();\r\n this.toDispose.dispose();\r\n this.loadingTimeout.dispose();\r\n this.showTimeout.dispose();\r\n this.editor.removeContentWidget(this);\r\n }\r\n};\r\nSuggestWidget.ID = 'editor.widget.suggestWidget';\r\nSuggestWidget.LOADING_MESSAGE = nls.localize('suggestWidget.loading', \"Loading...\");\r\nSuggestWidget.NO_SUGGESTIONS_MESSAGE = nls.localize('suggestWidget.noSuggestions', \"No suggestions.\");\r\nSuggestWidget = __decorate([\r\n __param(1, ITelemetryService),\r\n __param(2, IKeybindingService),\r\n __param(3, IContextKeyService),\r\n __param(4, IThemeService),\r\n __param(5, IStorageService),\r\n __param(6, IModeService),\r\n __param(7, IOpenerService),\r\n __param(8, IMenuService),\r\n __param(9, IInstantiationService)\r\n], SuggestWidget);\r\nexport { SuggestWidget };\r\nregisterThemingParticipant((theme, collector) => {\r\n const matchHighlight = theme.getColor(editorSuggestWidgetHighlightForeground);\r\n if (matchHighlight) {\r\n collector.addRule(`.monaco-editor .suggest-widget .monaco-list .monaco-list-row .monaco-highlighted-label .highlight { color: ${matchHighlight}; }`);\r\n }\r\n const foreground = theme.getColor(editorSuggestWidgetForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .suggest-widget { color: ${foreground}; }`);\r\n }\r\n const link = theme.getColor(textLinkForeground);\r\n if (link) {\r\n collector.addRule(`.monaco-editor .suggest-widget a { color: ${link}; }`);\r\n }\r\n const codeBackground = theme.getColor(textCodeBlockBackground);\r\n if (codeBackground) {\r\n collector.addRule(`.monaco-editor .suggest-widget code { background-color: ${codeBackground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { RawContextKey, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { dispose, Disposable } from '../../../base/common/lifecycle.js';\r\nlet WordContextKey = class WordContextKey extends Disposable {\r\n constructor(_editor, contextKeyService) {\r\n super();\r\n this._editor = _editor;\r\n this._enabled = false;\r\n this._ckAtEnd = WordContextKey.AtEnd.bindTo(contextKeyService);\r\n this._register(this._editor.onDidChangeConfiguration(e => e.hasChanged(101 /* tabCompletion */) && this._update()));\r\n this._update();\r\n }\r\n dispose() {\r\n super.dispose();\r\n dispose(this._selectionListener);\r\n this._ckAtEnd.reset();\r\n }\r\n _update() {\r\n // only update this when tab completions are enabled\r\n const enabled = this._editor.getOption(101 /* tabCompletion */) === 'on';\r\n if (this._enabled === enabled) {\r\n return;\r\n }\r\n this._enabled = enabled;\r\n if (this._enabled) {\r\n const checkForWordEnd = () => {\r\n if (!this._editor.hasModel()) {\r\n this._ckAtEnd.set(false);\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n const selection = this._editor.getSelection();\r\n const word = model.getWordAtPosition(selection.getStartPosition());\r\n if (!word) {\r\n this._ckAtEnd.set(false);\r\n return;\r\n }\r\n this._ckAtEnd.set(word.endColumn === selection.getStartPosition().column);\r\n };\r\n this._selectionListener = this._editor.onDidChangeCursorSelection(checkForWordEnd);\r\n checkForWordEnd();\r\n }\r\n else if (this._selectionListener) {\r\n this._ckAtEnd.reset();\r\n this._selectionListener.dispose();\r\n this._selectionListener = undefined;\r\n }\r\n }\r\n};\r\nWordContextKey.AtEnd = new RawContextKey('atEndOfWord', false);\r\nWordContextKey = __decorate([\r\n __param(1, IContextKeyService)\r\n], WordContextKey);\r\nexport { WordContextKey };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { binarySearch, isFalsyOrEmpty } from '../../../base/common/arrays.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { BracketSelectionRangeProvider } from '../smartSelect/bracketSelections.js';\r\nexport class WordDistance {\r\n static create(service, editor) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!editor.getOption(96 /* suggest */).localityBonus) {\r\n return WordDistance.None;\r\n }\r\n if (!editor.hasModel()) {\r\n return WordDistance.None;\r\n }\r\n const model = editor.getModel();\r\n const position = editor.getPosition();\r\n if (!service.canComputeWordRanges(model.uri)) {\r\n return WordDistance.None;\r\n }\r\n const [ranges] = yield new BracketSelectionRangeProvider().provideSelectionRanges(model, [position]);\r\n if (ranges.length === 0) {\r\n return WordDistance.None;\r\n }\r\n const wordRanges = yield service.computeWordRanges(model.uri, ranges[0].range);\r\n if (!wordRanges) {\r\n return WordDistance.None;\r\n }\r\n // remove current word\r\n const wordUntilPos = model.getWordUntilPosition(position);\r\n delete wordRanges[wordUntilPos.word];\r\n return new class extends WordDistance {\r\n distance(anchor, suggestion) {\r\n if (!position.equals(editor.getPosition())) {\r\n return 0;\r\n }\r\n if (suggestion.kind === 17 /* Keyword */) {\r\n return 2 << 20;\r\n }\r\n let word = typeof suggestion.label === 'string' ? suggestion.label : suggestion.label.name;\r\n let wordLines = wordRanges[word];\r\n if (isFalsyOrEmpty(wordLines)) {\r\n return 2 << 20;\r\n }\r\n let idx = binarySearch(wordLines, Range.fromPositions(anchor), Range.compareRangesUsingStarts);\r\n let bestWordRange = idx >= 0 ? wordLines[idx] : wordLines[Math.max(0, ~idx - 1)];\r\n let blockDistance = ranges.length;\r\n for (const range of ranges) {\r\n if (!Range.containsRange(range.range, bestWordRange)) {\r\n break;\r\n }\r\n blockDistance -= 1;\r\n }\r\n return blockDistance;\r\n }\r\n };\r\n });\r\n }\r\n}\r\nWordDistance.None = new class extends WordDistance {\r\n distance() { return 0; }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { TabFocus } from '../../common/config/commonEditorConfig.js';\r\nexport class ToggleTabFocusModeAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: ToggleTabFocusModeAction.ID,\r\n label: nls.localize({ key: 'toggle.tabMovesFocus', comment: ['Turn on/off use of tab key for moving focus around VS Code'] }, \"Toggle Tab Key Moves Focus\"),\r\n alias: 'Toggle Tab Key Moves Focus',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: null,\r\n primary: 2048 /* CtrlCmd */ | 43 /* KEY_M */,\r\n mac: { primary: 256 /* WinCtrl */ | 1024 /* Shift */ | 43 /* KEY_M */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n const oldValue = TabFocus.getTabFocusMode();\r\n const newValue = !oldValue;\r\n TabFocus.setTabFocusMode(newValue);\r\n if (newValue) {\r\n alert(nls.localize('toggle.tabMovesFocus.on', \"Pressing Tab will now move focus to the next focusable element\"));\r\n }\r\n else {\r\n alert(nls.localize('toggle.tabMovesFocus.off', \"Pressing Tab will now insert the tab character\"));\r\n }\r\n }\r\n}\r\nToggleTabFocusModeAction.ID = 'editor.action.toggleTabFocusMode';\r\nregisterEditorAction(ToggleTabFocusModeAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { EditorAction, registerEditorAction } from '../../browser/editorExtensions.js';\r\nimport { StopWatch } from '../../../base/common/stopwatch.js';\r\nclass ForceRetokenizeAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.forceRetokenize',\r\n label: nls.localize('forceRetokenize', \"Developer: Force Retokenize\"),\r\n alias: 'Developer: Force Retokenize',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const model = editor.getModel();\r\n model.resetTokenization();\r\n const sw = new StopWatch(true);\r\n model.forceTokenization(model.getLineCount());\r\n sw.stop();\r\n console.log(`tokenization took ${sw.elapsed()}`);\r\n }\r\n}\r\nregisterEditorAction(ForceRetokenizeAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { IDialogService } from '../../../platform/dialogs/common/dialogs.js';\r\nconst ignoreUnusualLineTerminators = 'ignoreUnusualLineTerminators';\r\nfunction writeIgnoreState(codeEditorService, model, state) {\r\n codeEditorService.setModelProperty(model.uri, ignoreUnusualLineTerminators, state);\r\n}\r\nfunction readIgnoreState(codeEditorService, model) {\r\n return codeEditorService.getModelProperty(model.uri, ignoreUnusualLineTerminators);\r\n}\r\nlet UnusualLineTerminatorsDetector = class UnusualLineTerminatorsDetector extends Disposable {\r\n constructor(_editor, _dialogService, _codeEditorService) {\r\n super();\r\n this._editor = _editor;\r\n this._dialogService = _dialogService;\r\n this._codeEditorService = _codeEditorService;\r\n this._config = this._editor.getOption(103 /* unusualLineTerminators */);\r\n this._register(this._editor.onDidChangeConfiguration((e) => {\r\n if (e.hasChanged(103 /* unusualLineTerminators */)) {\r\n this._config = this._editor.getOption(103 /* unusualLineTerminators */);\r\n this._checkForUnusualLineTerminators();\r\n }\r\n }));\r\n this._register(this._editor.onDidChangeModel(() => {\r\n this._checkForUnusualLineTerminators();\r\n }));\r\n this._register(this._editor.onDidChangeModelContent((e) => {\r\n if (e.isUndoing) {\r\n // skip checking in case of undoing\r\n return;\r\n }\r\n this._checkForUnusualLineTerminators();\r\n }));\r\n }\r\n _checkForUnusualLineTerminators() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (this._config === 'off') {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n if (!model.mightContainUnusualLineTerminators()) {\r\n return;\r\n }\r\n const ignoreState = readIgnoreState(this._codeEditorService, model);\r\n if (ignoreState === true) {\r\n // this model should be ignored\r\n return;\r\n }\r\n if (this._editor.getOption(72 /* readOnly */)) {\r\n // read only editor => sorry!\r\n return;\r\n }\r\n if (this._config === 'auto') {\r\n // just do it!\r\n model.removeUnusualLineTerminators(this._editor.getSelections());\r\n return;\r\n }\r\n const result = yield this._dialogService.confirm({\r\n title: nls.localize('unusualLineTerminators.title', \"Unusual Line Terminators\"),\r\n message: nls.localize('unusualLineTerminators.message', \"Detected unusual line terminators\"),\r\n detail: nls.localize('unusualLineTerminators.detail', \"This file contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\\n\\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.\"),\r\n primaryButton: nls.localize('unusualLineTerminators.fix', \"Fix this file\"),\r\n secondaryButton: nls.localize('unusualLineTerminators.ignore', \"Ignore problem for this file\")\r\n });\r\n if (!result.confirmed) {\r\n // this model should be ignored\r\n writeIgnoreState(this._codeEditorService, model, true);\r\n return;\r\n }\r\n model.removeUnusualLineTerminators(this._editor.getSelections());\r\n });\r\n }\r\n};\r\nUnusualLineTerminatorsDetector.ID = 'editor.contrib.unusualLineTerminatorsDetector';\r\nUnusualLineTerminatorsDetector = __decorate([\r\n __param(1, IDialogService),\r\n __param(2, ICodeEditorService)\r\n], UnusualLineTerminatorsDetector);\r\nregisterEditorContribution(UnusualLineTerminatorsDetector.ID, UnusualLineTerminatorsDetector);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { RunOnceScheduler, createCancelablePromise } from '../../../base/common/async.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { registerEditorContribution } from '../../browser/editorExtensions.js';\r\nimport { DocumentRangeSemanticTokensProviderRegistry } from '../../common/modes.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { toMultilineTokens2 } from '../../common/services/semanticTokensProviderStyling.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { isSemanticColoringEnabled, SEMANTIC_HIGHLIGHTING_SETTING_ID } from '../../common/services/modelServiceImpl.js';\r\nlet ViewportSemanticTokensContribution = class ViewportSemanticTokensContribution extends Disposable {\r\n constructor(editor, _modelService, _themeService, _configurationService) {\r\n super();\r\n this._modelService = _modelService;\r\n this._themeService = _themeService;\r\n this._configurationService = _configurationService;\r\n this._editor = editor;\r\n this._tokenizeViewport = new RunOnceScheduler(() => this._tokenizeViewportNow(), 100);\r\n this._outstandingRequests = [];\r\n this._register(this._editor.onDidScrollChange(() => {\r\n this._tokenizeViewport.schedule();\r\n }));\r\n this._register(this._editor.onDidChangeModel(() => {\r\n this._cancelAll();\r\n this._tokenizeViewport.schedule();\r\n }));\r\n this._register(this._editor.onDidChangeModelContent((e) => {\r\n this._cancelAll();\r\n this._tokenizeViewport.schedule();\r\n }));\r\n this._register(DocumentRangeSemanticTokensProviderRegistry.onDidChange(() => {\r\n this._cancelAll();\r\n this._tokenizeViewport.schedule();\r\n }));\r\n this._register(this._configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)) {\r\n this._cancelAll();\r\n this._tokenizeViewport.schedule();\r\n }\r\n }));\r\n this._register(this._themeService.onDidColorThemeChange(() => {\r\n this._cancelAll();\r\n this._tokenizeViewport.schedule();\r\n }));\r\n }\r\n static _getSemanticColoringProvider(model) {\r\n const result = DocumentRangeSemanticTokensProviderRegistry.ordered(model);\r\n return (result.length > 0 ? result[0] : null);\r\n }\r\n _cancelAll() {\r\n for (const request of this._outstandingRequests) {\r\n request.cancel();\r\n }\r\n this._outstandingRequests = [];\r\n }\r\n _removeOutstandingRequest(req) {\r\n for (let i = 0, len = this._outstandingRequests.length; i < len; i++) {\r\n if (this._outstandingRequests[i] === req) {\r\n this._outstandingRequests.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n _tokenizeViewportNow() {\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n const model = this._editor.getModel();\r\n if (model.hasSemanticTokens()) {\r\n return;\r\n }\r\n if (!isSemanticColoringEnabled(model, this._themeService, this._configurationService)) {\r\n return;\r\n }\r\n const provider = ViewportSemanticTokensContribution._getSemanticColoringProvider(model);\r\n if (!provider) {\r\n return;\r\n }\r\n const styling = this._modelService.getSemanticTokensProviderStyling(provider);\r\n const visibleRanges = this._editor.getVisibleRangesPlusViewportAboveBelow();\r\n this._outstandingRequests = this._outstandingRequests.concat(visibleRanges.map(range => this._requestRange(model, range, provider, styling)));\r\n }\r\n _requestRange(model, range, provider, styling) {\r\n const requestVersionId = model.getVersionId();\r\n const request = createCancelablePromise(token => Promise.resolve(provider.provideDocumentRangeSemanticTokens(model, range, token)));\r\n request.then((r) => {\r\n if (!r || model.isDisposed() || model.getVersionId() !== requestVersionId) {\r\n return;\r\n }\r\n model.setPartialSemanticTokens(range, toMultilineTokens2(r, styling, model.getLanguageIdentifier()));\r\n }).then(() => this._removeOutstandingRequest(request), () => this._removeOutstandingRequest(request));\r\n return request;\r\n }\r\n};\r\nViewportSemanticTokensContribution.ID = 'editor.contrib.viewportSemanticTokens';\r\nViewportSemanticTokensContribution = __decorate([\r\n __param(1, IModelService),\r\n __param(2, IThemeService),\r\n __param(3, IConfigurationService)\r\n], ViewportSemanticTokensContribution);\r\nregisterEditorContribution(ViewportSemanticTokensContribution.ID, ViewportSemanticTokensContribution);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { createCancelablePromise, first, timeout } from '../../../base/common/async.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../base/common/errors.js';\r\nimport { Disposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution, registerModelAndPositionCommand } from '../../browser/editorExtensions.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { OverviewRulerLane } from '../../common/model.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nimport { DocumentHighlightKind, DocumentHighlightProviderRegistry } from '../../common/modes.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { activeContrastBorder, editorSelectionHighlight, editorSelectionHighlightBorder, overviewRulerSelectionHighlightForeground, registerColor } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant, themeColorFromId } from '../../../platform/theme/common/themeService.js';\r\nimport { alert } from '../../../base/browser/ui/aria/aria.js';\r\nconst editorWordHighlight = registerColor('editor.wordHighlightBackground', { dark: '#575757B8', light: '#57575740', hc: null }, nls.localize('wordHighlight', 'Background color of a symbol during read-access, like reading a variable. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nconst editorWordHighlightStrong = registerColor('editor.wordHighlightStrongBackground', { dark: '#004972B8', light: '#0e639c40', hc: null }, nls.localize('wordHighlightStrong', 'Background color of a symbol during write-access, like writing to a variable. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nconst editorWordHighlightBorder = registerColor('editor.wordHighlightBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('wordHighlightBorder', 'Border color of a symbol during read-access, like reading a variable.'));\r\nconst editorWordHighlightStrongBorder = registerColor('editor.wordHighlightStrongBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('wordHighlightStrongBorder', 'Border color of a symbol during write-access, like writing to a variable.'));\r\nconst overviewRulerWordHighlightForeground = registerColor('editorOverviewRuler.wordHighlightForeground', { dark: '#A0A0A0CC', light: '#A0A0A0CC', hc: '#A0A0A0CC' }, nls.localize('overviewRulerWordHighlightForeground', 'Overview ruler marker color for symbol highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nconst overviewRulerWordHighlightStrongForeground = registerColor('editorOverviewRuler.wordHighlightStrongForeground', { dark: '#C0A0C0CC', light: '#C0A0C0CC', hc: '#C0A0C0CC' }, nls.localize('overviewRulerWordHighlightStrongForeground', 'Overview ruler marker color for write-access symbol highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nconst ctxHasWordHighlights = new RawContextKey('hasWordHighlights', false);\r\nexport function getOccurrencesAtPosition(model, position, token) {\r\n const orderedByScore = DocumentHighlightProviderRegistry.ordered(model);\r\n // in order of score ask the occurrences provider\r\n // until someone response with a good result\r\n // (good = none empty array)\r\n return first(orderedByScore.map(provider => () => {\r\n return Promise.resolve(provider.provideDocumentHighlights(model, position, token))\r\n .then(undefined, onUnexpectedExternalError);\r\n }), arrays.isNonEmptyArray);\r\n}\r\nclass OccurenceAtPositionRequest {\r\n constructor(model, selection, wordSeparators) {\r\n this._wordRange = this._getCurrentWordRange(model, selection);\r\n this.result = createCancelablePromise(token => this._compute(model, selection, wordSeparators, token));\r\n }\r\n _getCurrentWordRange(model, selection) {\r\n const word = model.getWordAtPosition(selection.getPosition());\r\n if (word) {\r\n return new Range(selection.startLineNumber, word.startColumn, selection.startLineNumber, word.endColumn);\r\n }\r\n return null;\r\n }\r\n isValid(model, selection, decorationIds) {\r\n const lineNumber = selection.startLineNumber;\r\n const startColumn = selection.startColumn;\r\n const endColumn = selection.endColumn;\r\n const currentWordRange = this._getCurrentWordRange(model, selection);\r\n let requestIsValid = Boolean(this._wordRange && this._wordRange.equalsRange(currentWordRange));\r\n // Even if we are on a different word, if that word is in the decorations ranges, the request is still valid\r\n // (Same symbol)\r\n for (let i = 0, len = decorationIds.length; !requestIsValid && i < len; i++) {\r\n let range = model.getDecorationRange(decorationIds[i]);\r\n if (range && range.startLineNumber === lineNumber) {\r\n if (range.startColumn <= startColumn && range.endColumn >= endColumn) {\r\n requestIsValid = true;\r\n }\r\n }\r\n }\r\n return requestIsValid;\r\n }\r\n cancel() {\r\n this.result.cancel();\r\n }\r\n}\r\nclass SemanticOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\r\n _compute(model, selection, wordSeparators, token) {\r\n return getOccurrencesAtPosition(model, selection.getPosition(), token).then(value => value || []);\r\n }\r\n}\r\nclass TextualOccurenceAtPositionRequest extends OccurenceAtPositionRequest {\r\n constructor(model, selection, wordSeparators) {\r\n super(model, selection, wordSeparators);\r\n this._selectionIsEmpty = selection.isEmpty();\r\n }\r\n _compute(model, selection, wordSeparators, token) {\r\n return timeout(250, token).then(() => {\r\n if (!selection.isEmpty()) {\r\n return [];\r\n }\r\n const word = model.getWordAtPosition(selection.getPosition());\r\n if (!word || word.word.length > 1000) {\r\n return [];\r\n }\r\n const matches = model.findMatches(word.word, true, false, true, wordSeparators, false);\r\n return matches.map(m => {\r\n return {\r\n range: m.range,\r\n kind: DocumentHighlightKind.Text\r\n };\r\n });\r\n });\r\n }\r\n isValid(model, selection, decorationIds) {\r\n const currentSelectionIsEmpty = selection.isEmpty();\r\n if (this._selectionIsEmpty !== currentSelectionIsEmpty) {\r\n return false;\r\n }\r\n return super.isValid(model, selection, decorationIds);\r\n }\r\n}\r\nfunction computeOccurencesAtPosition(model, selection, wordSeparators) {\r\n if (DocumentHighlightProviderRegistry.has(model)) {\r\n return new SemanticOccurenceAtPositionRequest(model, selection, wordSeparators);\r\n }\r\n return new TextualOccurenceAtPositionRequest(model, selection, wordSeparators);\r\n}\r\nregisterModelAndPositionCommand('_executeDocumentHighlights', (model, position) => getOccurrencesAtPosition(model, position, CancellationToken.None));\r\nclass WordHighlighter {\r\n constructor(editor, contextKeyService) {\r\n this.toUnhook = new DisposableStore();\r\n this.workerRequestTokenId = 0;\r\n this.workerRequestCompleted = false;\r\n this.workerRequestValue = [];\r\n this.lastCursorPositionChangeTime = 0;\r\n this.renderDecorationsTimer = -1;\r\n this.editor = editor;\r\n this._hasWordHighlights = ctxHasWordHighlights.bindTo(contextKeyService);\r\n this._ignorePositionChangeEvent = false;\r\n this.occurrencesHighlight = this.editor.getOption(63 /* occurrencesHighlight */);\r\n this.model = this.editor.getModel();\r\n this.toUnhook.add(editor.onDidChangeCursorPosition((e) => {\r\n if (this._ignorePositionChangeEvent) {\r\n // We are changing the position => ignore this event\r\n return;\r\n }\r\n if (!this.occurrencesHighlight) {\r\n // Early exit if nothing needs to be done!\r\n // Leave some form of early exit check here if you wish to continue being a cursor position change listener ;)\r\n return;\r\n }\r\n this._onPositionChanged(e);\r\n }));\r\n this.toUnhook.add(editor.onDidChangeModelContent((e) => {\r\n this._stopAll();\r\n }));\r\n this.toUnhook.add(editor.onDidChangeConfiguration((e) => {\r\n let newValue = this.editor.getOption(63 /* occurrencesHighlight */);\r\n if (this.occurrencesHighlight !== newValue) {\r\n this.occurrencesHighlight = newValue;\r\n this._stopAll();\r\n }\r\n }));\r\n this._decorationIds = [];\r\n this.workerRequestTokenId = 0;\r\n this.workerRequest = null;\r\n this.workerRequestCompleted = false;\r\n this.lastCursorPositionChangeTime = 0;\r\n this.renderDecorationsTimer = -1;\r\n }\r\n hasDecorations() {\r\n return (this._decorationIds.length > 0);\r\n }\r\n restore() {\r\n if (!this.occurrencesHighlight) {\r\n return;\r\n }\r\n this._run();\r\n }\r\n _getSortedHighlights() {\r\n return arrays.coalesce(this._decorationIds\r\n .map((id) => this.model.getDecorationRange(id))\r\n .sort(Range.compareRangesUsingStarts));\r\n }\r\n moveNext() {\r\n let highlights = this._getSortedHighlights();\r\n let index = arrays.firstIndex(highlights, (range) => range.containsPosition(this.editor.getPosition()));\r\n let newIndex = ((index + 1) % highlights.length);\r\n let dest = highlights[newIndex];\r\n try {\r\n this._ignorePositionChangeEvent = true;\r\n this.editor.setPosition(dest.getStartPosition());\r\n this.editor.revealRangeInCenterIfOutsideViewport(dest);\r\n const word = this._getWord();\r\n if (word) {\r\n const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\r\n alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\r\n }\r\n }\r\n finally {\r\n this._ignorePositionChangeEvent = false;\r\n }\r\n }\r\n moveBack() {\r\n let highlights = this._getSortedHighlights();\r\n let index = arrays.firstIndex(highlights, (range) => range.containsPosition(this.editor.getPosition()));\r\n let newIndex = ((index - 1 + highlights.length) % highlights.length);\r\n let dest = highlights[newIndex];\r\n try {\r\n this._ignorePositionChangeEvent = true;\r\n this.editor.setPosition(dest.getStartPosition());\r\n this.editor.revealRangeInCenterIfOutsideViewport(dest);\r\n const word = this._getWord();\r\n if (word) {\r\n const lineContent = this.editor.getModel().getLineContent(dest.startLineNumber);\r\n alert(`${lineContent}, ${newIndex + 1} of ${highlights.length} for '${word.word}'`);\r\n }\r\n }\r\n finally {\r\n this._ignorePositionChangeEvent = false;\r\n }\r\n }\r\n _removeDecorations() {\r\n if (this._decorationIds.length > 0) {\r\n // remove decorations\r\n this._decorationIds = this.editor.deltaDecorations(this._decorationIds, []);\r\n this._hasWordHighlights.set(false);\r\n }\r\n }\r\n _stopAll() {\r\n // Remove any existing decorations\r\n this._removeDecorations();\r\n // Cancel any renderDecorationsTimer\r\n if (this.renderDecorationsTimer !== -1) {\r\n clearTimeout(this.renderDecorationsTimer);\r\n this.renderDecorationsTimer = -1;\r\n }\r\n // Cancel any worker request\r\n if (this.workerRequest !== null) {\r\n this.workerRequest.cancel();\r\n this.workerRequest = null;\r\n }\r\n // Invalidate any worker request callback\r\n if (!this.workerRequestCompleted) {\r\n this.workerRequestTokenId++;\r\n this.workerRequestCompleted = true;\r\n }\r\n }\r\n _onPositionChanged(e) {\r\n // disabled\r\n if (!this.occurrencesHighlight) {\r\n this._stopAll();\r\n return;\r\n }\r\n // ignore typing & other\r\n if (e.reason !== 3 /* Explicit */) {\r\n this._stopAll();\r\n return;\r\n }\r\n this._run();\r\n }\r\n _getWord() {\r\n let editorSelection = this.editor.getSelection();\r\n let lineNumber = editorSelection.startLineNumber;\r\n let startColumn = editorSelection.startColumn;\r\n return this.model.getWordAtPosition({\r\n lineNumber: lineNumber,\r\n column: startColumn\r\n });\r\n }\r\n _run() {\r\n let editorSelection = this.editor.getSelection();\r\n // ignore multiline selection\r\n if (editorSelection.startLineNumber !== editorSelection.endLineNumber) {\r\n this._stopAll();\r\n return;\r\n }\r\n let startColumn = editorSelection.startColumn;\r\n let endColumn = editorSelection.endColumn;\r\n const word = this._getWord();\r\n // The selection must be inside a word or surround one word at most\r\n if (!word || word.startColumn > startColumn || word.endColumn < endColumn) {\r\n this._stopAll();\r\n return;\r\n }\r\n // All the effort below is trying to achieve this:\r\n // - when cursor is moved to a word, trigger immediately a findOccurrences request\r\n // - 250ms later after the last cursor move event, render the occurrences\r\n // - no flickering!\r\n const workerRequestIsValid = (this.workerRequest && this.workerRequest.isValid(this.model, editorSelection, this._decorationIds));\r\n // There are 4 cases:\r\n // a) old workerRequest is valid & completed, renderDecorationsTimer fired\r\n // b) old workerRequest is valid & completed, renderDecorationsTimer not fired\r\n // c) old workerRequest is valid, but not completed\r\n // d) old workerRequest is not valid\r\n // For a) no action is needed\r\n // For c), member 'lastCursorPositionChangeTime' will be used when installing the timer so no action is needed\r\n this.lastCursorPositionChangeTime = (new Date()).getTime();\r\n if (workerRequestIsValid) {\r\n if (this.workerRequestCompleted && this.renderDecorationsTimer !== -1) {\r\n // case b)\r\n // Delay the firing of renderDecorationsTimer by an extra 250 ms\r\n clearTimeout(this.renderDecorationsTimer);\r\n this.renderDecorationsTimer = -1;\r\n this._beginRenderDecorations();\r\n }\r\n }\r\n else {\r\n // case d)\r\n // Stop all previous actions and start fresh\r\n this._stopAll();\r\n let myRequestId = ++this.workerRequestTokenId;\r\n this.workerRequestCompleted = false;\r\n this.workerRequest = computeOccurencesAtPosition(this.model, this.editor.getSelection(), this.editor.getOption(105 /* wordSeparators */));\r\n this.workerRequest.result.then(data => {\r\n if (myRequestId === this.workerRequestTokenId) {\r\n this.workerRequestCompleted = true;\r\n this.workerRequestValue = data || [];\r\n this._beginRenderDecorations();\r\n }\r\n }, onUnexpectedError);\r\n }\r\n }\r\n _beginRenderDecorations() {\r\n let currentTime = (new Date()).getTime();\r\n let minimumRenderTime = this.lastCursorPositionChangeTime + 250;\r\n if (currentTime >= minimumRenderTime) {\r\n // Synchronous\r\n this.renderDecorationsTimer = -1;\r\n this.renderDecorations();\r\n }\r\n else {\r\n // Asynchronous\r\n this.renderDecorationsTimer = setTimeout(() => {\r\n this.renderDecorations();\r\n }, (minimumRenderTime - currentTime));\r\n }\r\n }\r\n renderDecorations() {\r\n this.renderDecorationsTimer = -1;\r\n let decorations = [];\r\n for (const info of this.workerRequestValue) {\r\n if (info.range) {\r\n decorations.push({\r\n range: info.range,\r\n options: WordHighlighter._getDecorationOptions(info.kind)\r\n });\r\n }\r\n }\r\n this._decorationIds = this.editor.deltaDecorations(this._decorationIds, decorations);\r\n this._hasWordHighlights.set(this.hasDecorations());\r\n }\r\n static _getDecorationOptions(kind) {\r\n if (kind === DocumentHighlightKind.Write) {\r\n return this._WRITE_OPTIONS;\r\n }\r\n else if (kind === DocumentHighlightKind.Text) {\r\n return this._TEXT_OPTIONS;\r\n }\r\n else {\r\n return this._REGULAR_OPTIONS;\r\n }\r\n }\r\n dispose() {\r\n this._stopAll();\r\n this.toUnhook.dispose();\r\n }\r\n}\r\nWordHighlighter._WRITE_OPTIONS = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'wordHighlightStrong',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerWordHighlightStrongForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nWordHighlighter._TEXT_OPTIONS = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'selectionHighlight',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerSelectionHighlightForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nWordHighlighter._REGULAR_OPTIONS = ModelDecorationOptions.register({\r\n stickiness: 1 /* NeverGrowsWhenTypingAtEdges */,\r\n className: 'wordHighlight',\r\n overviewRuler: {\r\n color: themeColorFromId(overviewRulerWordHighlightForeground),\r\n position: OverviewRulerLane.Center\r\n }\r\n});\r\nlet WordHighlighterContribution = class WordHighlighterContribution extends Disposable {\r\n constructor(editor, contextKeyService) {\r\n super();\r\n this.wordHighlighter = null;\r\n const createWordHighlighterIfPossible = () => {\r\n if (editor.hasModel()) {\r\n this.wordHighlighter = new WordHighlighter(editor, contextKeyService);\r\n }\r\n };\r\n this._register(editor.onDidChangeModel((e) => {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.dispose();\r\n this.wordHighlighter = null;\r\n }\r\n createWordHighlighterIfPossible();\r\n }));\r\n createWordHighlighterIfPossible();\r\n }\r\n static get(editor) {\r\n return editor.getContribution(WordHighlighterContribution.ID);\r\n }\r\n saveViewState() {\r\n if (this.wordHighlighter && this.wordHighlighter.hasDecorations()) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n moveNext() {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.moveNext();\r\n }\r\n }\r\n moveBack() {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.moveBack();\r\n }\r\n }\r\n restoreViewState(state) {\r\n if (this.wordHighlighter && state) {\r\n this.wordHighlighter.restore();\r\n }\r\n }\r\n dispose() {\r\n if (this.wordHighlighter) {\r\n this.wordHighlighter.dispose();\r\n this.wordHighlighter = null;\r\n }\r\n super.dispose();\r\n }\r\n};\r\nWordHighlighterContribution.ID = 'editor.contrib.wordHighlighter';\r\nWordHighlighterContribution = __decorate([\r\n __param(1, IContextKeyService)\r\n], WordHighlighterContribution);\r\nclass WordHighlightNavigationAction extends EditorAction {\r\n constructor(next, opts) {\r\n super(opts);\r\n this._isNext = next;\r\n }\r\n run(accessor, editor) {\r\n const controller = WordHighlighterContribution.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n if (this._isNext) {\r\n controller.moveNext();\r\n }\r\n else {\r\n controller.moveBack();\r\n }\r\n }\r\n}\r\nclass NextWordHighlightAction extends WordHighlightNavigationAction {\r\n constructor() {\r\n super(true, {\r\n id: 'editor.action.wordHighlight.next',\r\n label: nls.localize('wordHighlight.next.label', \"Go to Next Symbol Highlight\"),\r\n alias: 'Go to Next Symbol Highlight',\r\n precondition: ctxHasWordHighlights,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nclass PrevWordHighlightAction extends WordHighlightNavigationAction {\r\n constructor() {\r\n super(false, {\r\n id: 'editor.action.wordHighlight.prev',\r\n label: nls.localize('wordHighlight.previous.label', \"Go to Previous Symbol Highlight\"),\r\n alias: 'Go to Previous Symbol Highlight',\r\n precondition: ctxHasWordHighlights,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 1024 /* Shift */ | 65 /* F7 */,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nclass TriggerWordHighlightAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.wordHighlight.trigger',\r\n label: nls.localize('wordHighlight.trigger.label', \"Trigger Symbol Highlight\"),\r\n alias: 'Trigger Symbol Highlight',\r\n precondition: ctxHasWordHighlights.toNegated(),\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.editorTextFocus,\r\n primary: 0,\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor, editor, args) {\r\n const controller = WordHighlighterContribution.get(editor);\r\n if (!controller) {\r\n return;\r\n }\r\n controller.restoreViewState(true);\r\n }\r\n}\r\nregisterEditorContribution(WordHighlighterContribution.ID, WordHighlighterContribution);\r\nregisterEditorAction(NextWordHighlightAction);\r\nregisterEditorAction(PrevWordHighlightAction);\r\nregisterEditorAction(TriggerWordHighlightAction);\r\nregisterThemingParticipant((theme, collector) => {\r\n const selectionHighlight = theme.getColor(editorSelectionHighlight);\r\n if (selectionHighlight) {\r\n collector.addRule(`.monaco-editor .focused .selectionHighlight { background-color: ${selectionHighlight}; }`);\r\n collector.addRule(`.monaco-editor .selectionHighlight { background-color: ${selectionHighlight.transparent(0.5)}; }`);\r\n }\r\n const wordHighlight = theme.getColor(editorWordHighlight);\r\n if (wordHighlight) {\r\n collector.addRule(`.monaco-editor .wordHighlight { background-color: ${wordHighlight}; }`);\r\n }\r\n const wordHighlightStrong = theme.getColor(editorWordHighlightStrong);\r\n if (wordHighlightStrong) {\r\n collector.addRule(`.monaco-editor .wordHighlightStrong { background-color: ${wordHighlightStrong}; }`);\r\n }\r\n const selectionHighlightBorder = theme.getColor(editorSelectionHighlightBorder);\r\n if (selectionHighlightBorder) {\r\n collector.addRule(`.monaco-editor .selectionHighlight { border: 1px ${theme.type === 'hc' ? 'dotted' : 'solid'} ${selectionHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const wordHighlightBorder = theme.getColor(editorWordHighlightBorder);\r\n if (wordHighlightBorder) {\r\n collector.addRule(`.monaco-editor .wordHighlight { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${wordHighlightBorder}; box-sizing: border-box; }`);\r\n }\r\n const wordHighlightStrongBorder = theme.getColor(editorWordHighlightStrongBorder);\r\n if (wordHighlightStrongBorder) {\r\n collector.addRule(`.monaco-editor .wordHighlightStrong { border: 1px ${theme.type === 'hc' ? 'dashed' : 'solid'} ${wordHighlightStrongBorder}; box-sizing: border-box; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorCommand, registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { ReplaceCommand } from '../../common/commands/replaceCommand.js';\r\nimport { CursorState } from '../../common/controller/cursorCommon.js';\r\nimport { WordOperations } from '../../common/controller/cursorWordOperations.js';\r\nimport { getMapForWordSeparators } from '../../common/controller/wordCharacterClassifier.js';\r\nimport { Position } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Selection } from '../../common/core/selection.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { ContextKeyExpr } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { EditorOptions } from '../../common/config/editorOptions.js';\r\nexport class MoveWordCommand extends EditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._inSelectionMode = opts.inSelectionMode;\r\n this._wordNavigationType = opts.wordNavigationType;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const wordSeparators = getMapForWordSeparators(editor.getOption(105 /* wordSeparators */));\r\n const model = editor.getModel();\r\n const selections = editor.getSelections();\r\n const result = selections.map((sel) => {\r\n const inPosition = new Position(sel.positionLineNumber, sel.positionColumn);\r\n const outPosition = this._move(wordSeparators, model, inPosition, this._wordNavigationType);\r\n return this._moveTo(sel, outPosition, this._inSelectionMode);\r\n });\r\n model.pushStackElement();\r\n editor._getViewModel().setCursorStates('moveWordCommand', 0 /* NotSet */, result.map(r => CursorState.fromModelSelection(r)));\r\n if (result.length === 1) {\r\n const pos = new Position(result[0].positionLineNumber, result[0].positionColumn);\r\n editor.revealPosition(pos, 0 /* Smooth */);\r\n }\r\n }\r\n _moveTo(from, to, inSelectionMode) {\r\n if (inSelectionMode) {\r\n // move just position\r\n return new Selection(from.selectionStartLineNumber, from.selectionStartColumn, to.lineNumber, to.column);\r\n }\r\n else {\r\n // move everything\r\n return new Selection(to.lineNumber, to.column, to.lineNumber, to.column);\r\n }\r\n }\r\n}\r\nexport class WordLeftCommand extends MoveWordCommand {\r\n _move(wordSeparators, model, position, wordNavigationType) {\r\n return WordOperations.moveWordLeft(wordSeparators, model, position, wordNavigationType);\r\n }\r\n}\r\nexport class WordRightCommand extends MoveWordCommand {\r\n _move(wordSeparators, model, position, wordNavigationType) {\r\n return WordOperations.moveWordRight(wordSeparators, model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordStartLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartLeft',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndLeft',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 1 /* WordStartFast */,\r\n id: 'cursorWordLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 15 /* LeftArrow */,\r\n mac: { primary: 512 /* Alt */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordStartLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartLeftSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndLeftSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 1 /* WordStartFast */,\r\n id: 'cursorWordLeftSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 15 /* LeftArrow */,\r\n mac: { primary: 512 /* Alt */ | 1024 /* Shift */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\n// Accessibility navigation commands should only be enabled on windows since they are tuned to what NVDA expects\r\nexport class CursorWordAccessibilityLeft extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, CONTEXT_ACCESSIBILITY_MODE_ENABLED),\r\n win: { primary: 2048 /* CtrlCmd */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */ + 1\r\n }\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordAccessibilityLeftSelect extends WordLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityLeftSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, CONTEXT_ACCESSIBILITY_MODE_ENABLED),\r\n win: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */ + 1\r\n }\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordStartRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartRight',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 17 /* RightArrow */,\r\n mac: { primary: 512 /* Alt */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordRight',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordStartRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordStartRightSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordEndRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordEndRightSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 17 /* RightArrow */,\r\n mac: { primary: 512 /* Alt */ | 1024 /* Shift */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordRightSelect',\r\n precondition: undefined\r\n });\r\n }\r\n}\r\nexport class CursorWordAccessibilityRight extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, CONTEXT_ACCESSIBILITY_MODE_ENABLED),\r\n win: { primary: 2048 /* CtrlCmd */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */ + 1\r\n }\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class CursorWordAccessibilityRightSelect extends WordRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 3 /* WordAccessibility */,\r\n id: 'cursorWordAccessibilityRightSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: ContextKeyExpr.and(EditorContextKeys.textInputFocus, CONTEXT_ACCESSIBILITY_MODE_ENABLED),\r\n win: { primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */ + 1\r\n }\r\n });\r\n }\r\n _move(_, model, position, wordNavigationType) {\r\n return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue), model, position, wordNavigationType);\r\n }\r\n}\r\nexport class DeleteWordCommand extends EditorCommand {\r\n constructor(opts) {\r\n super(opts);\r\n this._whitespaceHeuristics = opts.whitespaceHeuristics;\r\n this._wordNavigationType = opts.wordNavigationType;\r\n }\r\n runEditorCommand(accessor, editor, args) {\r\n if (!editor.hasModel()) {\r\n return;\r\n }\r\n const wordSeparators = getMapForWordSeparators(editor.getOption(105 /* wordSeparators */));\r\n const model = editor.getModel();\r\n const selections = editor.getSelections();\r\n const commands = selections.map((sel) => {\r\n const deleteRange = this._delete(wordSeparators, model, sel, this._whitespaceHeuristics, this._wordNavigationType);\r\n return new ReplaceCommand(deleteRange, '');\r\n });\r\n editor.pushUndoStop();\r\n editor.executeCommands(this.id, commands);\r\n editor.pushUndoStop();\r\n }\r\n}\r\nexport class DeleteWordLeftCommand extends DeleteWordCommand {\r\n _delete(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType) {\r\n let r = WordOperations.deleteWordLeft(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType);\r\n if (r) {\r\n return r;\r\n }\r\n return new Range(1, 1, 1, 1);\r\n }\r\n}\r\nexport class DeleteWordRightCommand extends DeleteWordCommand {\r\n _delete(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType) {\r\n let r = WordOperations.deleteWordRight(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType);\r\n if (r) {\r\n return r;\r\n }\r\n const lineCount = model.getLineCount();\r\n const maxColumn = model.getLineMaxColumn(lineCount);\r\n return new Range(lineCount, maxColumn, lineCount, maxColumn);\r\n }\r\n}\r\nexport class DeleteWordStartLeft extends DeleteWordLeftCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordStartLeft',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordEndLeft extends DeleteWordLeftCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordEndLeft',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordLeft extends DeleteWordLeftCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordLeft',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 1 /* Backspace */,\r\n mac: { primary: 512 /* Alt */ | 1 /* Backspace */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class DeleteWordStartRight extends DeleteWordRightCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordStartRight',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordEndRight extends DeleteWordRightCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordEndRight',\r\n precondition: EditorContextKeys.writable\r\n });\r\n }\r\n}\r\nexport class DeleteWordRight extends DeleteWordRightCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordRight',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 2048 /* CtrlCmd */ | 20 /* Delete */,\r\n mac: { primary: 512 /* Alt */ | 20 /* Delete */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorCommand(new CursorWordStartLeft());\r\nregisterEditorCommand(new CursorWordEndLeft());\r\nregisterEditorCommand(new CursorWordLeft());\r\nregisterEditorCommand(new CursorWordStartLeftSelect());\r\nregisterEditorCommand(new CursorWordEndLeftSelect());\r\nregisterEditorCommand(new CursorWordLeftSelect());\r\nregisterEditorCommand(new CursorWordStartRight());\r\nregisterEditorCommand(new CursorWordEndRight());\r\nregisterEditorCommand(new CursorWordRight());\r\nregisterEditorCommand(new CursorWordStartRightSelect());\r\nregisterEditorCommand(new CursorWordEndRightSelect());\r\nregisterEditorCommand(new CursorWordRightSelect());\r\nregisterEditorCommand(new CursorWordAccessibilityLeft());\r\nregisterEditorCommand(new CursorWordAccessibilityLeftSelect());\r\nregisterEditorCommand(new CursorWordAccessibilityRight());\r\nregisterEditorCommand(new CursorWordAccessibilityRightSelect());\r\nregisterEditorCommand(new DeleteWordStartLeft());\r\nregisterEditorCommand(new DeleteWordEndLeft());\r\nregisterEditorCommand(new DeleteWordLeft());\r\nregisterEditorCommand(new DeleteWordStartRight());\r\nregisterEditorCommand(new DeleteWordEndRight());\r\nregisterEditorCommand(new DeleteWordRight());\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { registerEditorCommand } from '../../browser/editorExtensions.js';\r\nimport { WordPartOperations } from '../../common/controller/cursorWordOperations.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { EditorContextKeys } from '../../common/editorContextKeys.js';\r\nimport { DeleteWordCommand, MoveWordCommand } from '../wordOperations/wordOperations.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nexport class DeleteWordPartLeft extends DeleteWordCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'deleteWordPartLeft',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 1 /* Backspace */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _delete(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType) {\r\n let r = WordPartOperations.deleteWordPartLeft(wordSeparators, model, selection, whitespaceHeuristics);\r\n if (r) {\r\n return r;\r\n }\r\n return new Range(1, 1, 1, 1);\r\n }\r\n}\r\nexport class DeleteWordPartRight extends DeleteWordCommand {\r\n constructor() {\r\n super({\r\n whitespaceHeuristics: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'deleteWordPartRight',\r\n precondition: EditorContextKeys.writable,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 20 /* Delete */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n _delete(wordSeparators, model, selection, whitespaceHeuristics, wordNavigationType) {\r\n let r = WordPartOperations.deleteWordPartRight(wordSeparators, model, selection, whitespaceHeuristics);\r\n if (r) {\r\n return r;\r\n }\r\n const lineCount = model.getLineCount();\r\n const maxColumn = model.getLineMaxColumn(lineCount);\r\n return new Range(lineCount, maxColumn, lineCount, maxColumn);\r\n }\r\n}\r\nexport class WordPartLeftCommand extends MoveWordCommand {\r\n _move(wordSeparators, model, position, wordNavigationType) {\r\n return WordPartOperations.moveWordPartLeft(wordSeparators, model, position);\r\n }\r\n}\r\nexport class CursorWordPartLeft extends WordPartLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordPartLeft',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\n// Register previous id for compatibility purposes\r\nCommandsRegistry.registerCommandAlias('cursorWordPartStartLeft', 'cursorWordPartLeft');\r\nexport class CursorWordPartLeftSelect extends WordPartLeftCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 0 /* WordStart */,\r\n id: 'cursorWordPartLeftSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 1024 /* Shift */ | 15 /* LeftArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\n// Register previous id for compatibility purposes\r\nCommandsRegistry.registerCommandAlias('cursorWordPartStartLeftSelect', 'cursorWordPartLeftSelect');\r\nexport class WordPartRightCommand extends MoveWordCommand {\r\n _move(wordSeparators, model, position, wordNavigationType) {\r\n return WordPartOperations.moveWordPartRight(wordSeparators, model, position);\r\n }\r\n}\r\nexport class CursorWordPartRight extends WordPartRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: false,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordPartRight',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nexport class CursorWordPartRightSelect extends WordPartRightCommand {\r\n constructor() {\r\n super({\r\n inSelectionMode: true,\r\n wordNavigationType: 2 /* WordEnd */,\r\n id: 'cursorWordPartRightSelect',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.textInputFocus,\r\n primary: 0,\r\n mac: { primary: 256 /* WinCtrl */ | 512 /* Alt */ | 1024 /* Shift */ | 17 /* RightArrow */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n}\r\nregisterEditorCommand(new DeleteWordPartLeft());\r\nregisterEditorCommand(new DeleteWordPartRight());\r\nregisterEditorCommand(new CursorWordPartLeft());\r\nregisterEditorCommand(new CursorWordPartLeftSelect());\r\nregisterEditorCommand(new CursorWordPartRight());\r\nregisterEditorCommand(new CursorWordPartRightSelect());\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './zoneWidget.css';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Sash } from '../../../base/browser/ui/sash/sash.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { IdGenerator } from '../../../base/common/idGenerator.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { ModelDecorationOptions } from '../../common/model/textModel.js';\r\nconst defaultColor = new Color(new RGBA(0, 122, 204));\r\nconst defaultOptions = {\r\n showArrow: true,\r\n showFrame: true,\r\n className: '',\r\n frameColor: defaultColor,\r\n arrowColor: defaultColor,\r\n keepEditorSelection: false\r\n};\r\nconst WIDGET_ID = 'vs.editor.contrib.zoneWidget';\r\nexport class ViewZoneDelegate {\r\n constructor(domNode, afterLineNumber, afterColumn, heightInLines, onDomNodeTop, onComputedHeight) {\r\n this.id = ''; // A valid zone id should be greater than 0\r\n this.domNode = domNode;\r\n this.afterLineNumber = afterLineNumber;\r\n this.afterColumn = afterColumn;\r\n this.heightInLines = heightInLines;\r\n this._onDomNodeTop = onDomNodeTop;\r\n this._onComputedHeight = onComputedHeight;\r\n }\r\n onDomNodeTop(top) {\r\n this._onDomNodeTop(top);\r\n }\r\n onComputedHeight(height) {\r\n this._onComputedHeight(height);\r\n }\r\n}\r\nexport class OverlayWidgetDelegate {\r\n constructor(id, domNode) {\r\n this._id = id;\r\n this._domNode = domNode;\r\n }\r\n getId() {\r\n return this._id;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return null;\r\n }\r\n}\r\nclass Arrow {\r\n constructor(_editor) {\r\n this._editor = _editor;\r\n this._ruleName = Arrow._IdGenerator.nextId();\r\n this._decorations = [];\r\n this._color = null;\r\n this._height = -1;\r\n //\r\n }\r\n dispose() {\r\n this.hide();\r\n dom.removeCSSRulesContainingSelector(this._ruleName);\r\n }\r\n set color(value) {\r\n if (this._color !== value) {\r\n this._color = value;\r\n this._updateStyle();\r\n }\r\n }\r\n set height(value) {\r\n if (this._height !== value) {\r\n this._height = value;\r\n this._updateStyle();\r\n }\r\n }\r\n _updateStyle() {\r\n dom.removeCSSRulesContainingSelector(this._ruleName);\r\n dom.createCSSRule(`.monaco-editor ${this._ruleName}`, `border-style: solid; border-color: transparent; border-bottom-color: ${this._color}; border-width: ${this._height}px; bottom: -${this._height}px; margin-left: -${this._height}px; `);\r\n }\r\n show(where) {\r\n this._decorations = this._editor.deltaDecorations(this._decorations, [{ range: Range.fromPositions(where), options: { className: this._ruleName, stickiness: 1 /* NeverGrowsWhenTypingAtEdges */ } }]);\r\n }\r\n hide() {\r\n this._editor.deltaDecorations(this._decorations, []);\r\n }\r\n}\r\nArrow._IdGenerator = new IdGenerator('.arrow-decoration-');\r\nexport class ZoneWidget {\r\n constructor(editor, options = {}) {\r\n this._arrow = null;\r\n this._overlayWidget = null;\r\n this._resizeSash = null;\r\n this._positionMarkerId = [];\r\n this._viewZone = null;\r\n this._disposables = new DisposableStore();\r\n this.container = null;\r\n this._isShowing = false;\r\n this.editor = editor;\r\n this.options = objects.deepClone(options);\r\n objects.mixin(this.options, defaultOptions, false);\r\n this.domNode = document.createElement('div');\r\n if (!this.options.isAccessible) {\r\n this.domNode.setAttribute('aria-hidden', 'true');\r\n this.domNode.setAttribute('role', 'presentation');\r\n }\r\n this._disposables.add(this.editor.onDidLayoutChange((info) => {\r\n const width = this._getWidth(info);\r\n this.domNode.style.width = width + 'px';\r\n this.domNode.style.left = this._getLeft(info) + 'px';\r\n this._onWidth(width);\r\n }));\r\n }\r\n dispose() {\r\n if (this._overlayWidget) {\r\n this.editor.removeOverlayWidget(this._overlayWidget);\r\n this._overlayWidget = null;\r\n }\r\n if (this._viewZone) {\r\n this.editor.changeViewZones(accessor => {\r\n if (this._viewZone) {\r\n accessor.removeZone(this._viewZone.id);\r\n }\r\n this._viewZone = null;\r\n });\r\n }\r\n this.editor.deltaDecorations(this._positionMarkerId, []);\r\n this._positionMarkerId = [];\r\n this._disposables.dispose();\r\n }\r\n create() {\r\n this.domNode.classList.add('zone-widget');\r\n if (this.options.className) {\r\n this.domNode.classList.add(this.options.className);\r\n }\r\n this.container = document.createElement('div');\r\n this.container.classList.add('zone-widget-container');\r\n this.domNode.appendChild(this.container);\r\n if (this.options.showArrow) {\r\n this._arrow = new Arrow(this.editor);\r\n this._disposables.add(this._arrow);\r\n }\r\n this._fillContainer(this.container);\r\n this._initSash();\r\n this._applyStyles();\r\n }\r\n style(styles) {\r\n if (styles.frameColor) {\r\n this.options.frameColor = styles.frameColor;\r\n }\r\n if (styles.arrowColor) {\r\n this.options.arrowColor = styles.arrowColor;\r\n }\r\n this._applyStyles();\r\n }\r\n _applyStyles() {\r\n if (this.container && this.options.frameColor) {\r\n let frameColor = this.options.frameColor.toString();\r\n this.container.style.borderTopColor = frameColor;\r\n this.container.style.borderBottomColor = frameColor;\r\n }\r\n if (this._arrow && this.options.arrowColor) {\r\n let arrowColor = this.options.arrowColor.toString();\r\n this._arrow.color = arrowColor;\r\n }\r\n }\r\n _getWidth(info) {\r\n return info.width - info.minimap.minimapWidth - info.verticalScrollbarWidth;\r\n }\r\n _getLeft(info) {\r\n // If minimap is to the left, we move beyond it\r\n if (info.minimap.minimapWidth > 0 && info.minimap.minimapLeft === 0) {\r\n return info.minimap.minimapWidth;\r\n }\r\n return 0;\r\n }\r\n _onViewZoneTop(top) {\r\n this.domNode.style.top = top + 'px';\r\n }\r\n _onViewZoneHeight(height) {\r\n this.domNode.style.height = `${height}px`;\r\n if (this.container) {\r\n let containerHeight = height - this._decoratingElementsHeight();\r\n this.container.style.height = `${containerHeight}px`;\r\n const layoutInfo = this.editor.getLayoutInfo();\r\n this._doLayout(containerHeight, this._getWidth(layoutInfo));\r\n }\r\n if (this._resizeSash) {\r\n this._resizeSash.layout();\r\n }\r\n }\r\n get position() {\r\n const [id] = this._positionMarkerId;\r\n if (!id) {\r\n return undefined;\r\n }\r\n const model = this.editor.getModel();\r\n if (!model) {\r\n return undefined;\r\n }\r\n const range = model.getDecorationRange(id);\r\n if (!range) {\r\n return undefined;\r\n }\r\n return range.getStartPosition();\r\n }\r\n show(rangeOrPos, heightInLines) {\r\n const range = Range.isIRange(rangeOrPos) ? Range.lift(rangeOrPos) : Range.fromPositions(rangeOrPos);\r\n this._isShowing = true;\r\n this._showImpl(range, heightInLines);\r\n this._isShowing = false;\r\n this._positionMarkerId = this.editor.deltaDecorations(this._positionMarkerId, [{ range, options: ModelDecorationOptions.EMPTY }]);\r\n }\r\n hide() {\r\n if (this._viewZone) {\r\n this.editor.changeViewZones(accessor => {\r\n if (this._viewZone) {\r\n accessor.removeZone(this._viewZone.id);\r\n }\r\n });\r\n this._viewZone = null;\r\n }\r\n if (this._overlayWidget) {\r\n this.editor.removeOverlayWidget(this._overlayWidget);\r\n this._overlayWidget = null;\r\n }\r\n if (this._arrow) {\r\n this._arrow.hide();\r\n }\r\n }\r\n _decoratingElementsHeight() {\r\n let lineHeight = this.editor.getOption(51 /* lineHeight */);\r\n let result = 0;\r\n if (this.options.showArrow) {\r\n let arrowHeight = Math.round(lineHeight / 3);\r\n result += 2 * arrowHeight;\r\n }\r\n if (this.options.showFrame) {\r\n let frameThickness = Math.round(lineHeight / 9);\r\n result += 2 * frameThickness;\r\n }\r\n return result;\r\n }\r\n _showImpl(where, heightInLines) {\r\n const position = where.getStartPosition();\r\n const layoutInfo = this.editor.getLayoutInfo();\r\n const width = this._getWidth(layoutInfo);\r\n this.domNode.style.width = `${width}px`;\r\n this.domNode.style.left = this._getLeft(layoutInfo) + 'px';\r\n // Render the widget as zone (rendering) and widget (lifecycle)\r\n const viewZoneDomNode = document.createElement('div');\r\n viewZoneDomNode.style.overflow = 'hidden';\r\n const lineHeight = this.editor.getOption(51 /* lineHeight */);\r\n // adjust heightInLines to viewport\r\n const maxHeightInLines = Math.max(12, (this.editor.getLayoutInfo().height / lineHeight) * 0.8);\r\n heightInLines = Math.min(heightInLines, maxHeightInLines);\r\n let arrowHeight = 0;\r\n let frameThickness = 0;\r\n // Render the arrow one 1/3 of an editor line height\r\n if (this._arrow && this.options.showArrow) {\r\n arrowHeight = Math.round(lineHeight / 3);\r\n this._arrow.height = arrowHeight;\r\n this._arrow.show(position);\r\n }\r\n // Render the frame as 1/9 of an editor line height\r\n if (this.options.showFrame) {\r\n frameThickness = Math.round(lineHeight / 9);\r\n }\r\n // insert zone widget\r\n this.editor.changeViewZones((accessor) => {\r\n if (this._viewZone) {\r\n accessor.removeZone(this._viewZone.id);\r\n }\r\n if (this._overlayWidget) {\r\n this.editor.removeOverlayWidget(this._overlayWidget);\r\n this._overlayWidget = null;\r\n }\r\n this.domNode.style.top = '-1000px';\r\n this._viewZone = new ViewZoneDelegate(viewZoneDomNode, position.lineNumber, position.column, heightInLines, (top) => this._onViewZoneTop(top), (height) => this._onViewZoneHeight(height));\r\n this._viewZone.id = accessor.addZone(this._viewZone);\r\n this._overlayWidget = new OverlayWidgetDelegate(WIDGET_ID + this._viewZone.id, this.domNode);\r\n this.editor.addOverlayWidget(this._overlayWidget);\r\n });\r\n if (this.container && this.options.showFrame) {\r\n const width = this.options.frameWidth ? this.options.frameWidth : frameThickness;\r\n this.container.style.borderTopWidth = width + 'px';\r\n this.container.style.borderBottomWidth = width + 'px';\r\n }\r\n let containerHeight = heightInLines * lineHeight - this._decoratingElementsHeight();\r\n if (this.container) {\r\n this.container.style.top = arrowHeight + 'px';\r\n this.container.style.height = containerHeight + 'px';\r\n this.container.style.overflow = 'hidden';\r\n }\r\n this._doLayout(containerHeight, width);\r\n if (!this.options.keepEditorSelection) {\r\n this.editor.setSelection(where);\r\n }\r\n const model = this.editor.getModel();\r\n if (model) {\r\n const revealLine = where.endLineNumber + 1;\r\n if (revealLine <= model.getLineCount()) {\r\n // reveal line below the zone widget\r\n this.revealLine(revealLine, false);\r\n }\r\n else {\r\n // reveal last line atop\r\n this.revealLine(model.getLineCount(), true);\r\n }\r\n }\r\n }\r\n revealLine(lineNumber, isLastLine) {\r\n if (isLastLine) {\r\n this.editor.revealLineInCenter(lineNumber, 0 /* Smooth */);\r\n }\r\n else {\r\n this.editor.revealLine(lineNumber, 0 /* Smooth */);\r\n }\r\n }\r\n setCssClass(className, classToReplace) {\r\n if (!this.container) {\r\n return;\r\n }\r\n if (classToReplace) {\r\n this.container.classList.remove(classToReplace);\r\n }\r\n dom.addClass(this.container, className);\r\n }\r\n _onWidth(widthInPixel) {\r\n // implement in subclass\r\n }\r\n _doLayout(heightInPixel, widthInPixel) {\r\n // implement in subclass\r\n }\r\n _relayout(newHeightInLines) {\r\n if (this._viewZone && this._viewZone.heightInLines !== newHeightInLines) {\r\n this.editor.changeViewZones(accessor => {\r\n if (this._viewZone) {\r\n this._viewZone.heightInLines = newHeightInLines;\r\n accessor.layoutZone(this._viewZone.id);\r\n }\r\n });\r\n }\r\n }\r\n // --- sash\r\n _initSash() {\r\n if (this._resizeSash) {\r\n return;\r\n }\r\n this._resizeSash = this._disposables.add(new Sash(this.domNode, this, { orientation: 1 /* HORIZONTAL */ }));\r\n if (!this.options.isResizeable) {\r\n this._resizeSash.hide();\r\n this._resizeSash.state = 0 /* Disabled */;\r\n }\r\n let data;\r\n this._disposables.add(this._resizeSash.onDidStart((e) => {\r\n if (this._viewZone) {\r\n data = {\r\n startY: e.startY,\r\n heightInLines: this._viewZone.heightInLines,\r\n };\r\n }\r\n }));\r\n this._disposables.add(this._resizeSash.onDidEnd(() => {\r\n data = undefined;\r\n }));\r\n this._disposables.add(this._resizeSash.onDidChange((evt) => {\r\n if (data) {\r\n let lineDelta = (evt.currentY - data.startY) / this.editor.getOption(51 /* lineHeight */);\r\n let roundedLineDelta = lineDelta < 0 ? Math.ceil(lineDelta) : Math.floor(lineDelta);\r\n let newHeightInLines = data.heightInLines + roundedLineDelta;\r\n if (newHeightInLines > 5 && newHeightInLines < 35) {\r\n this._relayout(newHeightInLines);\r\n }\r\n }\r\n }));\r\n }\r\n getHorizontalSashLeft() {\r\n return 0;\r\n }\r\n getHorizontalSashTop() {\r\n return (this.domNode.style.height === null ? 0 : parseInt(this.domNode.style.height)) - (this._decoratingElementsHeight() / 2);\r\n }\r\n getHorizontalSashWidth() {\r\n const layoutInfo = this.editor.getLayoutInfo();\r\n return layoutInfo.width - layoutInfo.minimap.minimapWidth;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './editor.all.js';\r\nimport './standalone/browser/accessibilityHelp/accessibilityHelp.js';\r\nimport './standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js';\r\nimport './standalone/browser/inspectTokens/inspectTokens.js';\r\nimport './standalone/browser/quickAccess/standaloneHelpQuickAccess.js';\r\nimport './standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js';\r\nimport './standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js';\r\nimport './standalone/browser/quickAccess/standaloneCommandsQuickAccess.js';\r\nimport './standalone/browser/referenceSearch/standaloneReferenceSearch.js';\r\nimport './standalone/browser/toggleHighContrast/toggleHighContrast.js';\r\nexport * from './editor.api.js';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './browser/controller/coreCommands.js';\r\nimport './browser/widget/codeEditorWidget.js';\r\nimport './browser/widget/diffEditorWidget.js';\r\nimport './browser/widget/diffNavigator.js';\r\nimport './contrib/anchorSelect/anchorSelect.js';\r\nimport './contrib/bracketMatching/bracketMatching.js';\r\nimport './contrib/caretOperations/caretOperations.js';\r\nimport './contrib/caretOperations/transpose.js';\r\nimport './contrib/clipboard/clipboard.js';\r\nimport './contrib/codeAction/codeActionContributions.js';\r\nimport './contrib/codelens/codelensController.js';\r\nimport './contrib/colorPicker/colorDetector.js';\r\nimport './contrib/comment/comment.js';\r\nimport './contrib/contextmenu/contextmenu.js';\r\nimport './contrib/cursorUndo/cursorUndo.js';\r\nimport './contrib/dnd/dnd.js';\r\nimport './contrib/find/findController.js';\r\nimport './contrib/folding/folding.js';\r\nimport './contrib/fontZoom/fontZoom.js';\r\nimport './contrib/format/formatActions.js';\r\nimport './contrib/gotoSymbol/documentSymbols.js';\r\nimport './contrib/gotoSymbol/goToCommands.js';\r\nimport './contrib/gotoSymbol/link/goToDefinitionAtPosition.js';\r\nimport './contrib/gotoError/gotoError.js';\r\nimport './contrib/hover/hover.js';\r\nimport './contrib/indentation/indentation.js';\r\nimport './contrib/inPlaceReplace/inPlaceReplace.js';\r\nimport './contrib/linesOperations/linesOperations.js';\r\nimport './contrib/links/links.js';\r\nimport './contrib/multicursor/multicursor.js';\r\nimport './contrib/parameterHints/parameterHints.js';\r\nimport './contrib/rename/onTypeRename.js';\r\nimport './contrib/rename/rename.js';\r\nimport './contrib/smartSelect/smartSelect.js';\r\nimport './contrib/snippet/snippetController2.js';\r\nimport './contrib/suggest/suggestController.js';\r\nimport './contrib/tokenization/tokenization.js';\r\nimport './contrib/toggleTabFocusMode/toggleTabFocusMode.js';\r\nimport './contrib/unusualLineTerminators/unusualLineTerminators.js';\r\nimport './contrib/viewportSemanticTokens/viewportSemanticTokens.js';\r\nimport './contrib/wordHighlighter/wordHighlighter.js';\r\nimport './contrib/wordOperations/wordOperations.js';\r\nimport './contrib/wordPartOperations/wordPartOperations.js';\r\n// Load up these strings even in VSCode, even if they are not used\r\n// in order to get them translated\r\nimport './common/standaloneStrings.js';\r\nimport '../base/browser/ui/codicons/codiconStyles.js'; // The codicons are defined here and must be loaded\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorOptions } from './common/config/editorOptions.js';\r\nimport { createMonacoBaseAPI } from './common/standalone/standaloneBase.js';\r\nimport { createMonacoEditorAPI } from './standalone/browser/standaloneEditor.js';\r\nimport { createMonacoLanguagesAPI } from './standalone/browser/standaloneLanguages.js';\r\nconst global = self;\r\n// Set defaults for standalone editor\r\nEditorOptions.wrappingIndent.defaultValue = 0 /* None */;\r\nEditorOptions.glyphMargin.defaultValue = false;\r\nEditorOptions.autoIndent.defaultValue = 3 /* Advanced */;\r\nEditorOptions.overviewRulerLanes.defaultValue = 2;\r\nconst api = createMonacoBaseAPI();\r\napi.editor = createMonacoEditorAPI();\r\napi.languages = createMonacoLanguagesAPI();\r\nexport const CancellationTokenSource = api.CancellationTokenSource;\r\nexport const Emitter = api.Emitter;\r\nexport const KeyCode = api.KeyCode;\r\nexport const KeyMod = api.KeyMod;\r\nexport const Position = api.Position;\r\nexport const Range = api.Range;\r\nexport const Selection = api.Selection;\r\nexport const SelectionDirection = api.SelectionDirection;\r\nexport const MarkerSeverity = api.MarkerSeverity;\r\nexport const MarkerTag = api.MarkerTag;\r\nexport const Uri = api.Uri;\r\nexport const Token = api.Token;\r\nexport const editor = api.editor;\r\nexport const languages = api.languages;\r\nglobal.monaco = api;\r\nif (typeof global.require !== 'undefined' && typeof global.require.config === 'function') {\r\n global.require.config({\r\n ignoreDuplicateModules: [\r\n 'vscode-languageserver-types',\r\n 'vscode-languageserver-types/main',\r\n 'vscode-languageserver-textdocument',\r\n 'vscode-languageserver-textdocument/main',\r\n 'vscode-nls',\r\n 'vscode-nls/vscode-nls',\r\n 'jsonc-parser',\r\n 'jsonc-parser/main',\r\n 'vscode-uri',\r\n 'vscode-uri/index',\r\n 'vs/basic-languages/typescript/typescript'\r\n ]\r\n });\r\n}\r\n","import '../language/typescript/monaco.contribution';\nimport '../language/css/monaco.contribution';\nimport '../language/json/monaco.contribution';\nimport '../language/html/monaco.contribution';\nimport '../basic-languages/monaco.contribution';\n\nexport * from './edcore.main';","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './accessibilityHelp.css';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { createFastDomNode } from '../../../../base/browser/fastDomNode.js';\r\nimport { renderFormattedText } from '../../../../base/browser/formattedTextRenderer.js';\r\nimport { alert } from '../../../../base/browser/ui/aria/aria.js';\r\nimport { Widget } from '../../../../base/browser/ui/widget.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport * as platform from '../../../../base/common/platform.js';\r\nimport * as strings from '../../../../base/common/strings.js';\r\nimport { URI } from '../../../../base/common/uri.js';\r\nimport { EditorAction, EditorCommand, registerEditorAction, registerEditorCommand, registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\r\nimport { ToggleTabFocusModeAction } from '../../../contrib/toggleTabFocusMode/toggleTabFocusMode.js';\r\nimport { IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\r\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\r\nimport { contrastBorder, editorWidgetBackground, widgetShadow, editorWidgetForeground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport { AccessibilityHelpNLS } from '../../../common/standaloneStrings.js';\r\nconst CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE = new RawContextKey('accessibilityHelpWidgetVisible', false);\r\nlet AccessibilityHelpController = class AccessibilityHelpController extends Disposable {\r\n constructor(editor, instantiationService) {\r\n super();\r\n this._editor = editor;\r\n this._widget = this._register(instantiationService.createInstance(AccessibilityHelpWidget, this._editor));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(AccessibilityHelpController.ID);\r\n }\r\n show() {\r\n this._widget.show();\r\n }\r\n hide() {\r\n this._widget.hide();\r\n }\r\n};\r\nAccessibilityHelpController.ID = 'editor.contrib.accessibilityHelpController';\r\nAccessibilityHelpController = __decorate([\r\n __param(1, IInstantiationService)\r\n], AccessibilityHelpController);\r\nfunction getSelectionLabel(selections, charactersSelected) {\r\n if (!selections || selections.length === 0) {\r\n return AccessibilityHelpNLS.noSelection;\r\n }\r\n if (selections.length === 1) {\r\n if (charactersSelected) {\r\n return strings.format(AccessibilityHelpNLS.singleSelectionRange, selections[0].positionLineNumber, selections[0].positionColumn, charactersSelected);\r\n }\r\n return strings.format(AccessibilityHelpNLS.singleSelection, selections[0].positionLineNumber, selections[0].positionColumn);\r\n }\r\n if (charactersSelected) {\r\n return strings.format(AccessibilityHelpNLS.multiSelectionRange, selections.length, charactersSelected);\r\n }\r\n if (selections.length > 0) {\r\n return strings.format(AccessibilityHelpNLS.multiSelection, selections.length);\r\n }\r\n return '';\r\n}\r\nlet AccessibilityHelpWidget = class AccessibilityHelpWidget extends Widget {\r\n constructor(editor, _contextKeyService, _keybindingService, _openerService) {\r\n super();\r\n this._contextKeyService = _contextKeyService;\r\n this._keybindingService = _keybindingService;\r\n this._openerService = _openerService;\r\n this._editor = editor;\r\n this._isVisibleKey = CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE.bindTo(this._contextKeyService);\r\n this._domNode = createFastDomNode(document.createElement('div'));\r\n this._domNode.setClassName('accessibilityHelpWidget');\r\n this._domNode.setDisplay('none');\r\n this._domNode.setAttribute('role', 'dialog');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._contentDomNode = createFastDomNode(document.createElement('div'));\r\n this._contentDomNode.setAttribute('role', 'document');\r\n this._domNode.appendChild(this._contentDomNode);\r\n this._isVisible = false;\r\n this._register(this._editor.onDidLayoutChange(() => {\r\n if (this._isVisible) {\r\n this._layout();\r\n }\r\n }));\r\n // Intentionally not configurable!\r\n this._register(dom.addStandardDisposableListener(this._contentDomNode.domNode, 'keydown', (e) => {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n if (e.equals(2048 /* CtrlCmd */ | 35 /* KEY_E */)) {\r\n alert(AccessibilityHelpNLS.emergencyConfOn);\r\n this._editor.updateOptions({\r\n accessibilitySupport: 'on'\r\n });\r\n dom.clearNode(this._contentDomNode.domNode);\r\n this._buildContent();\r\n this._contentDomNode.domNode.focus();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n if (e.equals(2048 /* CtrlCmd */ | 38 /* KEY_H */)) {\r\n alert(AccessibilityHelpNLS.openingDocs);\r\n let url = this._editor.getRawOptions().accessibilityHelpUrl;\r\n if (typeof url === 'undefined') {\r\n url = 'https://go.microsoft.com/fwlink/?linkid=852450';\r\n }\r\n this._openerService.open(URI.parse(url));\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }));\r\n this.onblur(this._contentDomNode.domNode, () => {\r\n this.hide();\r\n });\r\n this._editor.addOverlayWidget(this);\r\n }\r\n dispose() {\r\n this._editor.removeOverlayWidget(this);\r\n super.dispose();\r\n }\r\n getId() {\r\n return AccessibilityHelpWidget.ID;\r\n }\r\n getDomNode() {\r\n return this._domNode.domNode;\r\n }\r\n getPosition() {\r\n return {\r\n preference: null\r\n };\r\n }\r\n show() {\r\n if (this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = true;\r\n this._isVisibleKey.set(true);\r\n this._layout();\r\n this._domNode.setDisplay('block');\r\n this._domNode.setAttribute('aria-hidden', 'false');\r\n this._contentDomNode.domNode.tabIndex = 0;\r\n this._buildContent();\r\n this._contentDomNode.domNode.focus();\r\n }\r\n _descriptionForCommand(commandId, msg, noKbMsg) {\r\n let kb = this._keybindingService.lookupKeybinding(commandId);\r\n if (kb) {\r\n return strings.format(msg, kb.getAriaLabel());\r\n }\r\n return strings.format(noKbMsg, commandId);\r\n }\r\n _buildContent() {\r\n const options = this._editor.getOptions();\r\n const selections = this._editor.getSelections();\r\n let charactersSelected = 0;\r\n if (selections) {\r\n const model = this._editor.getModel();\r\n if (model) {\r\n selections.forEach((selection) => {\r\n charactersSelected += model.getValueLengthInRange(selection);\r\n });\r\n }\r\n }\r\n let text = getSelectionLabel(selections, charactersSelected);\r\n if (options.get(47 /* inDiffEditor */)) {\r\n if (options.get(72 /* readOnly */)) {\r\n text += AccessibilityHelpNLS.readonlyDiffEditor;\r\n }\r\n else {\r\n text += AccessibilityHelpNLS.editableDiffEditor;\r\n }\r\n }\r\n else {\r\n if (options.get(72 /* readOnly */)) {\r\n text += AccessibilityHelpNLS.readonlyEditor;\r\n }\r\n else {\r\n text += AccessibilityHelpNLS.editableEditor;\r\n }\r\n }\r\n const turnOnMessage = (platform.isMacintosh\r\n ? AccessibilityHelpNLS.changeConfigToOnMac\r\n : AccessibilityHelpNLS.changeConfigToOnWinLinux);\r\n switch (options.get(2 /* accessibilitySupport */)) {\r\n case 0 /* Unknown */:\r\n text += '\\n\\n - ' + turnOnMessage;\r\n break;\r\n case 2 /* Enabled */:\r\n text += '\\n\\n - ' + AccessibilityHelpNLS.auto_on;\r\n break;\r\n case 1 /* Disabled */:\r\n text += '\\n\\n - ' + AccessibilityHelpNLS.auto_off;\r\n text += ' ' + turnOnMessage;\r\n break;\r\n }\r\n if (options.get(116 /* tabFocusMode */)) {\r\n text += '\\n\\n - ' + this._descriptionForCommand(ToggleTabFocusModeAction.ID, AccessibilityHelpNLS.tabFocusModeOnMsg, AccessibilityHelpNLS.tabFocusModeOnMsgNoKb);\r\n }\r\n else {\r\n text += '\\n\\n - ' + this._descriptionForCommand(ToggleTabFocusModeAction.ID, AccessibilityHelpNLS.tabFocusModeOffMsg, AccessibilityHelpNLS.tabFocusModeOffMsgNoKb);\r\n }\r\n const openDocMessage = (platform.isMacintosh\r\n ? AccessibilityHelpNLS.openDocMac\r\n : AccessibilityHelpNLS.openDocWinLinux);\r\n text += '\\n\\n - ' + openDocMessage;\r\n text += '\\n\\n' + AccessibilityHelpNLS.outroMsg;\r\n this._contentDomNode.domNode.appendChild(renderFormattedText(text));\r\n // Per https://www.w3.org/TR/wai-aria/roles#document, Authors SHOULD provide a title or label for documents\r\n this._contentDomNode.domNode.setAttribute('aria-label', text);\r\n }\r\n hide() {\r\n if (!this._isVisible) {\r\n return;\r\n }\r\n this._isVisible = false;\r\n this._isVisibleKey.reset();\r\n this._domNode.setDisplay('none');\r\n this._domNode.setAttribute('aria-hidden', 'true');\r\n this._contentDomNode.domNode.tabIndex = -1;\r\n dom.clearNode(this._contentDomNode.domNode);\r\n this._editor.focus();\r\n }\r\n _layout() {\r\n let editorLayout = this._editor.getLayoutInfo();\r\n let w = Math.max(5, Math.min(AccessibilityHelpWidget.WIDTH, editorLayout.width - 40));\r\n let h = Math.max(5, Math.min(AccessibilityHelpWidget.HEIGHT, editorLayout.height - 40));\r\n this._domNode.setWidth(w);\r\n this._domNode.setHeight(h);\r\n let top = Math.round((editorLayout.height - h) / 2);\r\n this._domNode.setTop(top);\r\n let left = Math.round((editorLayout.width - w) / 2);\r\n this._domNode.setLeft(left);\r\n }\r\n};\r\nAccessibilityHelpWidget.ID = 'editor.contrib.accessibilityHelpWidget';\r\nAccessibilityHelpWidget.WIDTH = 500;\r\nAccessibilityHelpWidget.HEIGHT = 300;\r\nAccessibilityHelpWidget = __decorate([\r\n __param(1, IContextKeyService),\r\n __param(2, IKeybindingService),\r\n __param(3, IOpenerService)\r\n], AccessibilityHelpWidget);\r\nclass ShowAccessibilityHelpAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.showAccessibilityHelp',\r\n label: AccessibilityHelpNLS.showAccessibilityHelpAction,\r\n alias: 'Show Accessibility Help',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 512 /* Alt */ | 59 /* F1 */,\r\n weight: 100 /* EditorContrib */,\r\n linux: {\r\n primary: 512 /* Alt */ | 1024 /* Shift */ | 59 /* F1 */,\r\n secondary: [512 /* Alt */ | 59 /* F1 */]\r\n }\r\n }\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = AccessibilityHelpController.get(editor);\r\n if (controller) {\r\n controller.show();\r\n }\r\n }\r\n}\r\nregisterEditorContribution(AccessibilityHelpController.ID, AccessibilityHelpController);\r\nregisterEditorAction(ShowAccessibilityHelpAction);\r\nconst AccessibilityHelpCommand = EditorCommand.bindToContribution(AccessibilityHelpController.get);\r\nregisterEditorCommand(new AccessibilityHelpCommand({\r\n id: 'closeAccessibilityHelp',\r\n precondition: CONTEXT_ACCESSIBILITY_WIDGET_VISIBLE,\r\n handler: x => x.hide(),\r\n kbOpts: {\r\n weight: 100 /* EditorContrib */ + 100,\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 9 /* Escape */,\r\n secondary: [1024 /* Shift */ | 9 /* Escape */]\r\n }\r\n}));\r\nregisterThemingParticipant((theme, collector) => {\r\n const widgetBackground = theme.getColor(editorWidgetBackground);\r\n if (widgetBackground) {\r\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { background-color: ${widgetBackground}; }`);\r\n }\r\n const widgetForeground = theme.getColor(editorWidgetForeground);\r\n if (widgetForeground) {\r\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { color: ${widgetForeground}; }`);\r\n }\r\n const widgetShadowColor = theme.getColor(widgetShadow);\r\n if (widgetShadowColor) {\r\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { box-shadow: 0 2px 8px ${widgetShadowColor}; }`);\r\n }\r\n const hcBorder = theme.getColor(contrastBorder);\r\n if (hcBorder) {\r\n collector.addRule(`.monaco-editor .accessibilityHelpWidget { border: 2px solid ${hcBorder}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { TimeoutTimer } from '../../../base/common/async.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport { LineTokens } from '../../common/core/lineTokens.js';\r\nimport { TokenizationRegistry } from '../../common/modes.js';\r\nimport { RenderLineInput, renderViewLine2 as renderViewLine } from '../../common/viewLayout/viewLineRenderer.js';\r\nimport { ViewLineRenderingData } from '../../common/viewModel/viewModel.js';\r\nimport { MonarchTokenizer } from '../common/monarch/monarchLexer.js';\r\nexport class Colorizer {\r\n static colorizeElement(themeService, modeService, domNode, options) {\r\n options = options || {};\r\n let theme = options.theme || 'vs';\r\n let mimeType = options.mimeType || domNode.getAttribute('lang') || domNode.getAttribute('data-lang');\r\n if (!mimeType) {\r\n console.error('Mode not detected');\r\n return Promise.resolve();\r\n }\r\n themeService.setTheme(theme);\r\n let text = domNode.firstChild ? domNode.firstChild.nodeValue : '';\r\n domNode.className += ' ' + theme;\r\n let render = (str) => {\r\n domNode.innerHTML = str;\r\n };\r\n return this.colorize(modeService, text || '', mimeType, options).then(render, (err) => console.error(err));\r\n }\r\n static colorize(modeService, text, mimeType, options) {\r\n let tabSize = 4;\r\n if (options && typeof options.tabSize === 'number') {\r\n tabSize = options.tabSize;\r\n }\r\n if (strings.startsWithUTF8BOM(text)) {\r\n text = text.substr(1);\r\n }\r\n let lines = text.split(/\\r\\n|\\r|\\n/);\r\n let language = modeService.getModeId(mimeType);\r\n if (!language) {\r\n return Promise.resolve(_fakeColorize(lines, tabSize));\r\n }\r\n // Send out the event to create the mode\r\n modeService.triggerMode(language);\r\n const tokenizationSupport = TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n return _colorize(lines, tabSize, tokenizationSupport);\r\n }\r\n const tokenizationSupportPromise = TokenizationRegistry.getPromise(language);\r\n if (tokenizationSupportPromise) {\r\n // A tokenizer will be registered soon\r\n return new Promise((resolve, reject) => {\r\n tokenizationSupportPromise.then(tokenizationSupport => {\r\n _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n return new Promise((resolve, reject) => {\r\n let listener = null;\r\n let timeout = null;\r\n const execute = () => {\r\n if (listener) {\r\n listener.dispose();\r\n listener = null;\r\n }\r\n if (timeout) {\r\n timeout.dispose();\r\n timeout = null;\r\n }\r\n const tokenizationSupport = TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n _colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);\r\n return;\r\n }\r\n resolve(_fakeColorize(lines, tabSize));\r\n };\r\n // wait 500ms for mode to load, then give up\r\n timeout = new TimeoutTimer();\r\n timeout.cancelAndSet(execute, 500);\r\n listener = TokenizationRegistry.onDidChange((e) => {\r\n if (e.changedLanguages.indexOf(language) >= 0) {\r\n execute();\r\n }\r\n });\r\n });\r\n }\r\n static colorizeLine(line, mightContainNonBasicASCII, mightContainRTL, tokens, tabSize = 4) {\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, mightContainNonBasicASCII);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, mightContainRTL);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, tokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n return renderResult.html;\r\n }\r\n static colorizeModelLine(model, lineNumber, tabSize = 4) {\r\n let content = model.getLineContent(lineNumber);\r\n model.forceTokenization(lineNumber);\r\n let tokens = model.getLineTokens(lineNumber);\r\n let inflatedTokens = tokens.inflate();\r\n return this.colorizeLine(content, model.mightContainNonBasicASCII(), model.mightContainRTL(), inflatedTokens, tabSize);\r\n }\r\n}\r\nfunction _colorize(lines, tabSize, tokenizationSupport) {\r\n return new Promise((c, e) => {\r\n const execute = () => {\r\n const result = _actualColorize(lines, tabSize, tokenizationSupport);\r\n if (tokenizationSupport instanceof MonarchTokenizer) {\r\n const status = tokenizationSupport.getLoadStatus();\r\n if (status.loaded === false) {\r\n status.promise.then(execute, e);\r\n return;\r\n }\r\n }\r\n c(result);\r\n };\r\n execute();\r\n });\r\n}\r\nfunction _fakeColorize(lines, tabSize) {\r\n let html = [];\r\n const defaultMetadata = ((0 /* None */ << 11 /* FONT_STYLE_OFFSET */)\r\n | (1 /* DefaultForeground */ << 14 /* FOREGROUND_OFFSET */)\r\n | (2 /* DefaultBackground */ << 23 /* BACKGROUND_OFFSET */)) >>> 0;\r\n const tokens = new Uint32Array(2);\r\n tokens[0] = 0;\r\n tokens[1] = defaultMetadata;\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n let line = lines[i];\r\n tokens[0] = line.length;\r\n const lineTokens = new LineTokens(tokens, line);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens, [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n html = html.concat(renderResult.html);\r\n html.push('<br/>');\r\n }\r\n return html.join('');\r\n}\r\nfunction _actualColorize(lines, tabSize, tokenizationSupport) {\r\n let html = [];\r\n let state = tokenizationSupport.getInitialState();\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n let line = lines[i];\r\n let tokenizeResult = tokenizationSupport.tokenize2(line, state, 0);\r\n LineTokens.convertToEndOffset(tokenizeResult.tokens, line.length);\r\n let lineTokens = new LineTokens(tokenizeResult.tokens, line);\r\n const isBasicASCII = ViewLineRenderingData.isBasicASCII(line, /* check for basic ASCII */ true);\r\n const containsRTL = ViewLineRenderingData.containsRTL(line, isBasicASCII, /* check for RTL */ true);\r\n let renderResult = renderViewLine(new RenderLineInput(false, true, line, false, isBasicASCII, containsRTL, 0, lineTokens.inflate(), [], tabSize, 0, 0, 0, 0, -1, 'none', false, false, null));\r\n html = html.concat(renderResult.html);\r\n html.push('<br/>');\r\n state = tokenizeResult.endState;\r\n }\r\n return html.join('');\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './iPadShowKeyboard.css';\r\nimport * as browser from '../../../../base/browser/browser.js';\r\nimport * as dom from '../../../../base/browser/dom.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nexport class IPadShowKeyboard extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this.editor = editor;\r\n this.widget = null;\r\n if (browser.isIPad) {\r\n this._register(editor.onDidChangeConfiguration(() => this.update()));\r\n this.update();\r\n }\r\n }\r\n update() {\r\n const shouldHaveWidget = (!this.editor.getOption(72 /* readOnly */));\r\n if (!this.widget && shouldHaveWidget) {\r\n this.widget = new ShowKeyboardWidget(this.editor);\r\n }\r\n else if (this.widget && !shouldHaveWidget) {\r\n this.widget.dispose();\r\n this.widget = null;\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this.widget) {\r\n this.widget.dispose();\r\n this.widget = null;\r\n }\r\n }\r\n}\r\nIPadShowKeyboard.ID = 'editor.contrib.iPadShowKeyboard';\r\nclass ShowKeyboardWidget extends Disposable {\r\n constructor(editor) {\r\n super();\r\n this.editor = editor;\r\n this._domNode = document.createElement('textarea');\r\n this._domNode.className = 'iPadShowKeyboard';\r\n this._register(dom.addDisposableListener(this._domNode, 'touchstart', (e) => {\r\n this.editor.focus();\r\n }));\r\n this._register(dom.addDisposableListener(this._domNode, 'focus', (e) => {\r\n this.editor.focus();\r\n }));\r\n this.editor.addOverlayWidget(this);\r\n }\r\n dispose() {\r\n this.editor.removeOverlayWidget(this);\r\n super.dispose();\r\n }\r\n // ----- IOverlayWidget API\r\n getId() {\r\n return ShowKeyboardWidget.ID;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return {\r\n preference: 1 /* BOTTOM_RIGHT_CORNER */\r\n };\r\n }\r\n}\r\nShowKeyboardWidget.ID = 'editor.contrib.ShowKeyboardWidget';\r\nregisterEditorContribution(IPadShowKeyboard.ID, IPadShowKeyboard);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './inspectTokens.css';\r\nimport { $, append, reset } from '../../../../base/browser/dom.js';\r\nimport { Color } from '../../../../base/common/color.js';\r\nimport { Disposable } from '../../../../base/common/lifecycle.js';\r\nimport { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { TokenMetadata, TokenizationRegistry } from '../../../common/modes.js';\r\nimport { NULL_STATE, nullTokenize, nullTokenize2 } from '../../../common/modes/nullMode.js';\r\nimport { IModeService } from '../../../common/services/modeService.js';\r\nimport { IStandaloneThemeService } from '../../common/standaloneThemeService.js';\r\nimport { editorHoverBackground, editorHoverBorder, editorHoverForeground } from '../../../../platform/theme/common/colorRegistry.js';\r\nimport { HIGH_CONTRAST, registerThemingParticipant } from '../../../../platform/theme/common/themeService.js';\r\nimport { InspectTokensNLS } from '../../../common/standaloneStrings.js';\r\nlet InspectTokensController = class InspectTokensController extends Disposable {\r\n constructor(editor, standaloneColorService, modeService) {\r\n super();\r\n this._editor = editor;\r\n this._modeService = modeService;\r\n this._widget = null;\r\n this._register(this._editor.onDidChangeModel((e) => this.stop()));\r\n this._register(this._editor.onDidChangeModelLanguage((e) => this.stop()));\r\n this._register(TokenizationRegistry.onDidChange((e) => this.stop()));\r\n this._register(this._editor.onKeyUp((e) => e.keyCode === 9 /* Escape */ && this.stop()));\r\n }\r\n static get(editor) {\r\n return editor.getContribution(InspectTokensController.ID);\r\n }\r\n dispose() {\r\n this.stop();\r\n super.dispose();\r\n }\r\n launch() {\r\n if (this._widget) {\r\n return;\r\n }\r\n if (!this._editor.hasModel()) {\r\n return;\r\n }\r\n this._widget = new InspectTokensWidget(this._editor, this._modeService);\r\n }\r\n stop() {\r\n if (this._widget) {\r\n this._widget.dispose();\r\n this._widget = null;\r\n }\r\n }\r\n};\r\nInspectTokensController.ID = 'editor.contrib.inspectTokens';\r\nInspectTokensController = __decorate([\r\n __param(1, IStandaloneThemeService),\r\n __param(2, IModeService)\r\n], InspectTokensController);\r\nclass InspectTokens extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.inspectTokens',\r\n label: InspectTokensNLS.inspectTokensAction,\r\n alias: 'Developer: Inspect Tokens',\r\n precondition: undefined\r\n });\r\n }\r\n run(accessor, editor) {\r\n let controller = InspectTokensController.get(editor);\r\n if (controller) {\r\n controller.launch();\r\n }\r\n }\r\n}\r\nfunction renderTokenText(tokenText) {\r\n let result = '';\r\n for (let charIndex = 0, len = tokenText.length; charIndex < len; charIndex++) {\r\n let charCode = tokenText.charCodeAt(charIndex);\r\n switch (charCode) {\r\n case 9 /* Tab */:\r\n result += '\\u2192'; // →\r\n break;\r\n case 32 /* Space */:\r\n result += '\\u00B7'; // ·\r\n break;\r\n default:\r\n result += String.fromCharCode(charCode);\r\n }\r\n }\r\n return result;\r\n}\r\nfunction getSafeTokenizationSupport(languageIdentifier) {\r\n let tokenizationSupport = TokenizationRegistry.get(languageIdentifier.language);\r\n if (tokenizationSupport) {\r\n return tokenizationSupport;\r\n }\r\n return {\r\n getInitialState: () => NULL_STATE,\r\n tokenize: (line, state, deltaOffset) => nullTokenize(languageIdentifier.language, line, state, deltaOffset),\r\n tokenize2: (line, state, deltaOffset) => nullTokenize2(languageIdentifier.id, line, state, deltaOffset)\r\n };\r\n}\r\nclass InspectTokensWidget extends Disposable {\r\n constructor(editor, modeService) {\r\n super();\r\n // Editor.IContentWidget.allowEditorOverflow\r\n this.allowEditorOverflow = true;\r\n this._editor = editor;\r\n this._modeService = modeService;\r\n this._model = this._editor.getModel();\r\n this._domNode = document.createElement('div');\r\n this._domNode.className = 'tokens-inspect-widget';\r\n this._tokenizationSupport = getSafeTokenizationSupport(this._model.getLanguageIdentifier());\r\n this._compute(this._editor.getPosition());\r\n this._register(this._editor.onDidChangeCursorPosition((e) => this._compute(this._editor.getPosition())));\r\n this._editor.addContentWidget(this);\r\n }\r\n dispose() {\r\n this._editor.removeContentWidget(this);\r\n super.dispose();\r\n }\r\n getId() {\r\n return InspectTokensWidget._ID;\r\n }\r\n _compute(position) {\r\n let data = this._getTokensAtLine(position.lineNumber);\r\n let token1Index = 0;\r\n for (let i = data.tokens1.length - 1; i >= 0; i--) {\r\n let t = data.tokens1[i];\r\n if (position.column - 1 >= t.offset) {\r\n token1Index = i;\r\n break;\r\n }\r\n }\r\n let token2Index = 0;\r\n for (let i = (data.tokens2.length >>> 1); i >= 0; i--) {\r\n if (position.column - 1 >= data.tokens2[(i << 1)]) {\r\n token2Index = i;\r\n break;\r\n }\r\n }\r\n let lineContent = this._model.getLineContent(position.lineNumber);\r\n let tokenText = '';\r\n if (token1Index < data.tokens1.length) {\r\n let tokenStartIndex = data.tokens1[token1Index].offset;\r\n let tokenEndIndex = token1Index + 1 < data.tokens1.length ? data.tokens1[token1Index + 1].offset : lineContent.length;\r\n tokenText = lineContent.substring(tokenStartIndex, tokenEndIndex);\r\n }\r\n reset(this._domNode, $('h2.tm-token', undefined, renderTokenText(tokenText), $('span.tm-token-length', undefined, `${tokenText.length} ${tokenText.length === 1 ? 'char' : 'chars'}`)));\r\n append(this._domNode, $('hr.tokens-inspect-separator', { 'style': 'clear:both' }));\r\n const metadata = (token2Index << 1) + 1 < data.tokens2.length ? this._decodeMetadata(data.tokens2[(token2Index << 1) + 1]) : null;\r\n append(this._domNode, $('table.tm-metadata-table', undefined, $('tbody', undefined, $('tr', undefined, $('td.tm-metadata-key', undefined, 'language'), $('td.tm-metadata-value', undefined, `${metadata ? metadata.languageIdentifier.language : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'token type'), $('td.tm-metadata-value', undefined, `${metadata ? this._tokenTypeToString(metadata.tokenType) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'font style'), $('td.tm-metadata-value', undefined, `${metadata ? this._fontStyleToString(metadata.fontStyle) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'foreground'), $('td.tm-metadata-value', undefined, `${metadata ? Color.Format.CSS.formatHex(metadata.foreground) : '-?-'}`)), $('tr', undefined, $('td.tm-metadata-key', undefined, 'background'), $('td.tm-metadata-value', undefined, `${metadata ? Color.Format.CSS.formatHex(metadata.background) : '-?-'}`)))));\r\n append(this._domNode, $('hr.tokens-inspect-separator'));\r\n if (token1Index < data.tokens1.length) {\r\n append(this._domNode, $('span.tm-token-type', undefined, data.tokens1[token1Index].type));\r\n }\r\n this._editor.layoutContentWidget(this);\r\n }\r\n _decodeMetadata(metadata) {\r\n let colorMap = TokenizationRegistry.getColorMap();\r\n let languageId = TokenMetadata.getLanguageId(metadata);\r\n let tokenType = TokenMetadata.getTokenType(metadata);\r\n let fontStyle = TokenMetadata.getFontStyle(metadata);\r\n let foreground = TokenMetadata.getForeground(metadata);\r\n let background = TokenMetadata.getBackground(metadata);\r\n return {\r\n languageIdentifier: this._modeService.getLanguageIdentifier(languageId),\r\n tokenType: tokenType,\r\n fontStyle: fontStyle,\r\n foreground: colorMap[foreground],\r\n background: colorMap[background]\r\n };\r\n }\r\n _tokenTypeToString(tokenType) {\r\n switch (tokenType) {\r\n case 0 /* Other */: return 'Other';\r\n case 1 /* Comment */: return 'Comment';\r\n case 2 /* String */: return 'String';\r\n case 4 /* RegEx */: return 'RegEx';\r\n default: return '??';\r\n }\r\n }\r\n _fontStyleToString(fontStyle) {\r\n let r = '';\r\n if (fontStyle & 1 /* Italic */) {\r\n r += 'italic ';\r\n }\r\n if (fontStyle & 2 /* Bold */) {\r\n r += 'bold ';\r\n }\r\n if (fontStyle & 4 /* Underline */) {\r\n r += 'underline ';\r\n }\r\n if (r.length === 0) {\r\n r = '---';\r\n }\r\n return r;\r\n }\r\n _getTokensAtLine(lineNumber) {\r\n let stateBeforeLine = this._getStateBeforeLine(lineNumber);\r\n let tokenizationResult1 = this._tokenizationSupport.tokenize(this._model.getLineContent(lineNumber), stateBeforeLine, 0);\r\n let tokenizationResult2 = this._tokenizationSupport.tokenize2(this._model.getLineContent(lineNumber), stateBeforeLine, 0);\r\n return {\r\n startState: stateBeforeLine,\r\n tokens1: tokenizationResult1.tokens,\r\n tokens2: tokenizationResult2.tokens,\r\n endState: tokenizationResult1.endState\r\n };\r\n }\r\n _getStateBeforeLine(lineNumber) {\r\n let state = this._tokenizationSupport.getInitialState();\r\n for (let i = 1; i < lineNumber; i++) {\r\n let tokenizationResult = this._tokenizationSupport.tokenize(this._model.getLineContent(i), state, 0);\r\n state = tokenizationResult.endState;\r\n }\r\n return state;\r\n }\r\n getDomNode() {\r\n return this._domNode;\r\n }\r\n getPosition() {\r\n return {\r\n position: this._editor.getPosition(),\r\n preference: [2 /* BELOW */, 1 /* ABOVE */]\r\n };\r\n }\r\n}\r\nInspectTokensWidget._ID = 'editor.contrib.inspectTokensWidget';\r\nregisterEditorContribution(InspectTokensController.ID, InspectTokensController);\r\nregisterEditorAction(InspectTokens);\r\nregisterThemingParticipant((theme, collector) => {\r\n const border = theme.getColor(editorHoverBorder);\r\n if (border) {\r\n let borderWidth = theme.type === HIGH_CONTRAST ? 2 : 1;\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget { border: ${borderWidth}px solid ${border}; }`);\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget .tokens-inspect-separator { background-color: ${border}; }`);\r\n }\r\n const background = theme.getColor(editorHoverBackground);\r\n if (background) {\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget { background-color: ${background}; }`);\r\n }\r\n const foreground = theme.getColor(editorHoverForeground);\r\n if (foreground) {\r\n collector.addRule(`.monaco-editor .tokens-inspect-widget { color: ${foreground}; }`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { Registry } from '../../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\r\nimport { QuickCommandNLS } from '../../../common/standaloneStrings.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { AbstractEditorCommandsQuickAccessProvider } from '../../../contrib/quickAccess/commandsQuickAccess.js';\r\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\r\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\r\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\r\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\r\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\r\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\r\nlet StandaloneCommandsQuickAccessProvider = class StandaloneCommandsQuickAccessProvider extends AbstractEditorCommandsQuickAccessProvider {\r\n constructor(instantiationService, codeEditorService, keybindingService, commandService, telemetryService, notificationService) {\r\n super({ showAlias: false }, instantiationService, keybindingService, commandService, telemetryService, notificationService);\r\n this.codeEditorService = codeEditorService;\r\n }\r\n get activeTextEditorControl() { return withNullAsUndefined(this.codeEditorService.getFocusedCodeEditor()); }\r\n getCommandPicks() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return this.getCodeEditorCommandPicks();\r\n });\r\n }\r\n};\r\nStandaloneCommandsQuickAccessProvider = __decorate([\r\n __param(0, IInstantiationService),\r\n __param(1, ICodeEditorService),\r\n __param(2, IKeybindingService),\r\n __param(3, ICommandService),\r\n __param(4, ITelemetryService),\r\n __param(5, INotificationService)\r\n], StandaloneCommandsQuickAccessProvider);\r\nexport { StandaloneCommandsQuickAccessProvider };\r\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\r\n ctor: StandaloneCommandsQuickAccessProvider,\r\n prefix: StandaloneCommandsQuickAccessProvider.PREFIX,\r\n helpEntries: [{ description: QuickCommandNLS.quickCommandHelp, needsEditor: true }]\r\n});\r\nexport class GotoLineAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.quickCommand',\r\n label: QuickCommandNLS.quickCommandActionLabel,\r\n alias: 'Command Palette',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 59 /* F1 */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'z_commands',\r\n order: 1\r\n }\r\n });\r\n }\r\n run(accessor) {\r\n accessor.get(IQuickInputService).quickAccess.show(StandaloneCommandsQuickAccessProvider.PREFIX);\r\n }\r\n}\r\nregisterEditorAction(GotoLineAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { AbstractGotoLineQuickAccessProvider } from '../../../contrib/quickAccess/gotoLineQuickAccess.js';\r\nimport { Registry } from '../../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\r\nimport { GoToLineNLS } from '../../../common/standaloneStrings.js';\r\nimport { Event } from '../../../../base/common/event.js';\r\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\r\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\r\nlet StandaloneGotoLineQuickAccessProvider = class StandaloneGotoLineQuickAccessProvider extends AbstractGotoLineQuickAccessProvider {\r\n constructor(editorService) {\r\n super();\r\n this.editorService = editorService;\r\n this.onDidActiveTextEditorControlChange = Event.None;\r\n }\r\n get activeTextEditorControl() {\r\n return withNullAsUndefined(this.editorService.getFocusedCodeEditor());\r\n }\r\n};\r\nStandaloneGotoLineQuickAccessProvider = __decorate([\r\n __param(0, ICodeEditorService)\r\n], StandaloneGotoLineQuickAccessProvider);\r\nexport { StandaloneGotoLineQuickAccessProvider };\r\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\r\n ctor: StandaloneGotoLineQuickAccessProvider,\r\n prefix: StandaloneGotoLineQuickAccessProvider.PREFIX,\r\n helpEntries: [{ description: GoToLineNLS.gotoLineActionLabel, needsEditor: true }]\r\n});\r\nexport class GotoLineAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.gotoLine',\r\n label: GoToLineNLS.gotoLineActionLabel,\r\n alias: 'Go to Line/Column...',\r\n precondition: undefined,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 37 /* KEY_G */,\r\n mac: { primary: 256 /* WinCtrl */ | 37 /* KEY_G */ },\r\n weight: 100 /* EditorContrib */\r\n }\r\n });\r\n }\r\n run(accessor) {\r\n accessor.get(IQuickInputService).quickAccess.show(StandaloneGotoLineQuickAccessProvider.PREFIX);\r\n }\r\n}\r\nregisterEditorAction(GotoLineAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { AbstractGotoSymbolQuickAccessProvider } from '../../../contrib/quickAccess/gotoSymbolQuickAccess.js';\r\nimport { Registry } from '../../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { withNullAsUndefined } from '../../../../base/common/types.js';\r\nimport { QuickOutlineNLS } from '../../../common/standaloneStrings.js';\r\nimport { Event } from '../../../../base/common/event.js';\r\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\r\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\r\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\r\nlet StandaloneGotoSymbolQuickAccessProvider = class StandaloneGotoSymbolQuickAccessProvider extends AbstractGotoSymbolQuickAccessProvider {\r\n constructor(editorService) {\r\n super();\r\n this.editorService = editorService;\r\n this.onDidActiveTextEditorControlChange = Event.None;\r\n }\r\n get activeTextEditorControl() {\r\n return withNullAsUndefined(this.editorService.getFocusedCodeEditor());\r\n }\r\n};\r\nStandaloneGotoSymbolQuickAccessProvider = __decorate([\r\n __param(0, ICodeEditorService)\r\n], StandaloneGotoSymbolQuickAccessProvider);\r\nexport { StandaloneGotoSymbolQuickAccessProvider };\r\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\r\n ctor: StandaloneGotoSymbolQuickAccessProvider,\r\n prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX,\r\n helpEntries: [\r\n { description: QuickOutlineNLS.quickOutlineActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX, needsEditor: true },\r\n { description: QuickOutlineNLS.quickOutlineByCategoryActionLabel, prefix: AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY, needsEditor: true }\r\n ]\r\n});\r\nexport class GotoLineAction extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.quickOutline',\r\n label: QuickOutlineNLS.quickOutlineActionLabel,\r\n alias: 'Go to Symbol...',\r\n precondition: EditorContextKeys.hasDocumentSymbolProvider,\r\n kbOpts: {\r\n kbExpr: EditorContextKeys.focus,\r\n primary: 2048 /* CtrlCmd */ | 1024 /* Shift */ | 45 /* KEY_O */,\r\n weight: 100 /* EditorContrib */\r\n },\r\n contextMenuOpts: {\r\n group: 'navigation',\r\n order: 3\r\n }\r\n });\r\n }\r\n run(accessor) {\r\n accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX);\r\n }\r\n}\r\nregisterEditorAction(GotoLineAction);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Registry } from '../../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../../platform/quickinput/common/quickAccess.js';\r\nimport { QuickHelpNLS } from '../../../common/standaloneStrings.js';\r\nimport { HelpQuickAccessProvider } from '../../../../platform/quickinput/browser/helpQuickAccess.js';\r\nRegistry.as(Extensions.Quickaccess).registerQuickAccessProvider({\r\n ctor: HelpQuickAccessProvider,\r\n prefix: '',\r\n helpEntries: [{ description: QuickHelpNLS.helpQuickAccessActionLabel, needsEditor: true }]\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport './standaloneQuickInput.css';\r\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\r\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\r\nimport { IAccessibilityService } from '../../../../platform/accessibility/common/accessibility.js';\r\nimport { ILayoutService } from '../../../../platform/layout/browser/layoutService.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInput.js';\r\nimport { once } from '../../../../base/common/functional.js';\r\nlet EditorScopedQuickInputServiceImpl = class EditorScopedQuickInputServiceImpl extends QuickInputService {\r\n constructor(editor, instantiationService, contextKeyService, themeService, accessibilityService, layoutService) {\r\n super(instantiationService, contextKeyService, themeService, accessibilityService, layoutService);\r\n this.host = undefined;\r\n // Use the passed in code editor as host for the quick input widget\r\n const contribution = QuickInputEditorContribution.get(editor);\r\n this.host = {\r\n _serviceBrand: undefined,\r\n get container() { return contribution.widget.getDomNode(); },\r\n get dimension() { return editor.getLayoutInfo(); },\r\n get onLayout() { return editor.onDidLayoutChange; },\r\n focus: () => editor.focus()\r\n };\r\n }\r\n createController() {\r\n return super.createController(this.host);\r\n }\r\n};\r\nEditorScopedQuickInputServiceImpl = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, IContextKeyService),\r\n __param(3, IThemeService),\r\n __param(4, IAccessibilityService),\r\n __param(5, ILayoutService)\r\n], EditorScopedQuickInputServiceImpl);\r\nexport { EditorScopedQuickInputServiceImpl };\r\nlet StandaloneQuickInputServiceImpl = class StandaloneQuickInputServiceImpl {\r\n constructor(instantiationService, codeEditorService) {\r\n this.instantiationService = instantiationService;\r\n this.codeEditorService = codeEditorService;\r\n this.mapEditorToService = new Map();\r\n }\r\n get activeService() {\r\n const editor = this.codeEditorService.getFocusedCodeEditor();\r\n if (!editor) {\r\n throw new Error('Quick input service needs a focused editor to work.');\r\n }\r\n // Find the quick input implementation for the focused\r\n // editor or create it lazily if not yet created\r\n let quickInputService = this.mapEditorToService.get(editor);\r\n if (!quickInputService) {\r\n const newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputServiceImpl, editor);\r\n this.mapEditorToService.set(editor, quickInputService);\r\n once(editor.onDidDispose)(() => {\r\n newQuickInputService.dispose();\r\n this.mapEditorToService.delete(editor);\r\n });\r\n }\r\n return quickInputService;\r\n }\r\n get quickAccess() { return this.activeService.quickAccess; }\r\n pick(picks, options = {}, token = CancellationToken.None) {\r\n return this.activeService /* TS fail */.pick(picks, options, token);\r\n }\r\n createQuickPick() {\r\n return this.activeService.createQuickPick();\r\n }\r\n};\r\nStandaloneQuickInputServiceImpl = __decorate([\r\n __param(0, IInstantiationService),\r\n __param(1, ICodeEditorService)\r\n], StandaloneQuickInputServiceImpl);\r\nexport { StandaloneQuickInputServiceImpl };\r\nexport class QuickInputEditorContribution {\r\n constructor(editor) {\r\n this.editor = editor;\r\n this.widget = new QuickInputEditorWidget(this.editor);\r\n }\r\n static get(editor) {\r\n return editor.getContribution(QuickInputEditorContribution.ID);\r\n }\r\n dispose() {\r\n this.widget.dispose();\r\n }\r\n}\r\nQuickInputEditorContribution.ID = 'editor.controller.quickInput';\r\nexport class QuickInputEditorWidget {\r\n constructor(codeEditor) {\r\n this.codeEditor = codeEditor;\r\n this.domNode = document.createElement('div');\r\n this.codeEditor.addOverlayWidget(this);\r\n }\r\n getId() {\r\n return QuickInputEditorWidget.ID;\r\n }\r\n getDomNode() {\r\n return this.domNode;\r\n }\r\n getPosition() {\r\n return { preference: 2 /* TOP_CENTER */ };\r\n }\r\n dispose() {\r\n this.codeEditor.removeOverlayWidget(this);\r\n }\r\n}\r\nQuickInputEditorWidget.ID = 'editor.contrib.quickInputWidget';\r\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { registerEditorContribution } from '../../../browser/editorExtensions.js';\r\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\r\nimport { ReferencesController } from '../../../contrib/gotoSymbol/peek/referencesController.js';\r\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\r\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\r\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\r\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\r\nimport { IStorageService } from '../../../../platform/storage/common/storage.js';\r\nlet StandaloneReferencesController = class StandaloneReferencesController extends ReferencesController {\r\n constructor(editor, contextKeyService, editorService, notificationService, instantiationService, storageService, configurationService) {\r\n super(true, editor, contextKeyService, editorService, notificationService, instantiationService, storageService, configurationService);\r\n }\r\n};\r\nStandaloneReferencesController = __decorate([\r\n __param(1, IContextKeyService),\r\n __param(2, ICodeEditorService),\r\n __param(3, INotificationService),\r\n __param(4, IInstantiationService),\r\n __param(5, IStorageService),\r\n __param(6, IConfigurationService)\r\n], StandaloneReferencesController);\r\nexport { StandaloneReferencesController };\r\nregisterEditorContribution(ReferencesController.ID, StandaloneReferencesController);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as strings from '../../../base/common/strings.js';\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { StandardKeyboardEvent } from '../../../base/browser/keyboardEvent.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { SimpleKeybinding, createKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { ImmortalReference, toDisposable, DisposableStore, Disposable } from '../../../base/common/lifecycle.js';\r\nimport { OS, isLinux, isMacintosh } from '../../../base/common/platform.js';\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { isCodeEditor } from '../../browser/editorBrowser.js';\r\nimport { ResourceTextEdit } from '../../browser/services/bulkEditService.js';\r\nimport { isDiffEditorConfigurationKey, isEditorConfigurationKey } from '../../common/config/commonEditorConfig.js';\r\nimport { EditOperation } from '../../common/core/editOperation.js';\r\nimport { Position as Pos } from '../../common/core/position.js';\r\nimport { Range } from '../../common/core/range.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { CommandsRegistry } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { Configuration, ConfigurationModel, DefaultConfigurationModel, ConfigurationChangeEvent } from '../../../platform/configuration/common/configurationModels.js';\r\nimport { AbstractKeybindingService } from '../../../platform/keybinding/common/abstractKeybindingService.js';\r\nimport { KeybindingResolver } from '../../../platform/keybinding/common/keybindingResolver.js';\r\nimport { KeybindingsRegistry } from '../../../platform/keybinding/common/keybindingsRegistry.js';\r\nimport { ResolvedKeybindingItem } from '../../../platform/keybinding/common/resolvedKeybindingItem.js';\r\nimport { USLayoutResolvedKeybinding } from '../../../platform/keybinding/common/usLayoutResolvedKeybinding.js';\r\nimport { NoOpNotification } from '../../../platform/notification/common/notification.js';\r\nimport { WorkspaceFolder } from '../../../platform/workspace/common/workspace.js';\r\nimport { SimpleServicesNLS } from '../../common/standaloneStrings.js';\r\nexport class SimpleModel {\r\n constructor(model) {\r\n this.disposed = false;\r\n this.model = model;\r\n this._onDispose = new Emitter();\r\n }\r\n get textEditorModel() {\r\n return this.model;\r\n }\r\n dispose() {\r\n this.disposed = true;\r\n this._onDispose.fire();\r\n }\r\n}\r\nfunction withTypedEditor(widget, codeEditorCallback, diffEditorCallback) {\r\n if (isCodeEditor(widget)) {\r\n // Single Editor\r\n return codeEditorCallback(widget);\r\n }\r\n else {\r\n // Diff Editor\r\n return diffEditorCallback(widget);\r\n }\r\n}\r\nlet SimpleEditorModelResolverService = class SimpleEditorModelResolverService {\r\n constructor(modelService) {\r\n this.modelService = modelService;\r\n }\r\n setEditor(editor) {\r\n this.editor = editor;\r\n }\r\n createModelReference(resource) {\r\n let model = null;\r\n if (this.editor) {\r\n model = withTypedEditor(this.editor, (editor) => this.findModel(editor, resource), (diffEditor) => this.findModel(diffEditor.getOriginalEditor(), resource) || this.findModel(diffEditor.getModifiedEditor(), resource));\r\n }\r\n if (!model) {\r\n return Promise.reject(new Error(`Model not found`));\r\n }\r\n return Promise.resolve(new ImmortalReference(new SimpleModel(model)));\r\n }\r\n findModel(editor, resource) {\r\n let model = this.modelService.getModel(resource);\r\n if (model && model.uri.toString() !== resource.toString()) {\r\n return null;\r\n }\r\n return model;\r\n }\r\n};\r\nSimpleEditorModelResolverService = __decorate([\r\n __param(0, IModelService)\r\n], SimpleEditorModelResolverService);\r\nexport { SimpleEditorModelResolverService };\r\nexport class SimpleEditorProgressService {\r\n show() {\r\n return SimpleEditorProgressService.NULL_PROGRESS_RUNNER;\r\n }\r\n showWhile(promise, delay) {\r\n return Promise.resolve(undefined);\r\n }\r\n}\r\nSimpleEditorProgressService.NULL_PROGRESS_RUNNER = {\r\n done: () => { },\r\n total: () => { },\r\n worked: () => { }\r\n};\r\nexport class SimpleDialogService {\r\n confirm(confirmation) {\r\n return this.doConfirm(confirmation).then(confirmed => {\r\n return {\r\n confirmed,\r\n checkboxChecked: false // unsupported\r\n };\r\n });\r\n }\r\n doConfirm(confirmation) {\r\n let messageText = confirmation.message;\r\n if (confirmation.detail) {\r\n messageText = messageText + '\\n\\n' + confirmation.detail;\r\n }\r\n return Promise.resolve(window.confirm(messageText));\r\n }\r\n show(severity, message, buttons, options) {\r\n return Promise.resolve({ choice: 0 });\r\n }\r\n}\r\nexport class SimpleNotificationService {\r\n info(message) {\r\n return this.notify({ severity: Severity.Info, message });\r\n }\r\n warn(message) {\r\n return this.notify({ severity: Severity.Warning, message });\r\n }\r\n error(error) {\r\n return this.notify({ severity: Severity.Error, message: error });\r\n }\r\n notify(notification) {\r\n switch (notification.severity) {\r\n case Severity.Error:\r\n console.error(notification.message);\r\n break;\r\n case Severity.Warning:\r\n console.warn(notification.message);\r\n break;\r\n default:\r\n console.log(notification.message);\r\n break;\r\n }\r\n return SimpleNotificationService.NO_OP;\r\n }\r\n status(message, options) {\r\n return Disposable.None;\r\n }\r\n}\r\nSimpleNotificationService.NO_OP = new NoOpNotification();\r\nexport class StandaloneCommandService {\r\n constructor(instantiationService) {\r\n this._onWillExecuteCommand = new Emitter();\r\n this._onDidExecuteCommand = new Emitter();\r\n this._instantiationService = instantiationService;\r\n }\r\n executeCommand(id, ...args) {\r\n const command = CommandsRegistry.getCommand(id);\r\n if (!command) {\r\n return Promise.reject(new Error(`command '${id}' not found`));\r\n }\r\n try {\r\n this._onWillExecuteCommand.fire({ commandId: id, args });\r\n const result = this._instantiationService.invokeFunction.apply(this._instantiationService, [command.handler, ...args]);\r\n this._onDidExecuteCommand.fire({ commandId: id, args });\r\n return Promise.resolve(result);\r\n }\r\n catch (err) {\r\n return Promise.reject(err);\r\n }\r\n }\r\n}\r\nexport class StandaloneKeybindingService extends AbstractKeybindingService {\r\n constructor(contextKeyService, commandService, telemetryService, notificationService, logService, domNode) {\r\n super(contextKeyService, commandService, telemetryService, notificationService, logService);\r\n this._cachedResolver = null;\r\n this._dynamicKeybindings = [];\r\n this._register(dom.addDisposableListener(domNode, dom.EventType.KEY_DOWN, (e) => {\r\n let keyEvent = new StandardKeyboardEvent(e);\r\n let shouldPreventDefault = this._dispatch(keyEvent, keyEvent.target);\r\n if (shouldPreventDefault) {\r\n keyEvent.preventDefault();\r\n keyEvent.stopPropagation();\r\n }\r\n }));\r\n }\r\n addDynamicKeybinding(commandId, _keybinding, handler, when) {\r\n const keybinding = createKeybinding(_keybinding, OS);\r\n const toDispose = new DisposableStore();\r\n if (keybinding) {\r\n this._dynamicKeybindings.push({\r\n keybinding: keybinding,\r\n command: commandId,\r\n when: when,\r\n weight1: 1000,\r\n weight2: 0,\r\n extensionId: null\r\n });\r\n toDispose.add(toDisposable(() => {\r\n for (let i = 0; i < this._dynamicKeybindings.length; i++) {\r\n let kb = this._dynamicKeybindings[i];\r\n if (kb.command === commandId) {\r\n this._dynamicKeybindings.splice(i, 1);\r\n this.updateResolver({ source: 1 /* Default */ });\r\n return;\r\n }\r\n }\r\n }));\r\n }\r\n toDispose.add(CommandsRegistry.registerCommand(commandId, handler));\r\n this.updateResolver({ source: 1 /* Default */ });\r\n return toDispose;\r\n }\r\n updateResolver(event) {\r\n this._cachedResolver = null;\r\n this._onDidUpdateKeybindings.fire(event);\r\n }\r\n _getResolver() {\r\n if (!this._cachedResolver) {\r\n const defaults = this._toNormalizedKeybindingItems(KeybindingsRegistry.getDefaultKeybindings(), true);\r\n const overrides = this._toNormalizedKeybindingItems(this._dynamicKeybindings, false);\r\n this._cachedResolver = new KeybindingResolver(defaults, overrides, (str) => this._log(str));\r\n }\r\n return this._cachedResolver;\r\n }\r\n _documentHasFocus() {\r\n return document.hasFocus();\r\n }\r\n _toNormalizedKeybindingItems(items, isDefault) {\r\n let result = [], resultLen = 0;\r\n for (const item of items) {\r\n const when = item.when || undefined;\r\n const keybinding = item.keybinding;\r\n if (!keybinding) {\r\n // This might be a removal keybinding item in user settings => accept it\r\n result[resultLen++] = new ResolvedKeybindingItem(undefined, item.command, item.commandArgs, when, isDefault, null);\r\n }\r\n else {\r\n const resolvedKeybindings = this.resolveKeybinding(keybinding);\r\n for (const resolvedKeybinding of resolvedKeybindings) {\r\n result[resultLen++] = new ResolvedKeybindingItem(resolvedKeybinding, item.command, item.commandArgs, when, isDefault, null);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n resolveKeybinding(keybinding) {\r\n return [new USLayoutResolvedKeybinding(keybinding, OS)];\r\n }\r\n resolveKeyboardEvent(keyboardEvent) {\r\n let keybinding = new SimpleKeybinding(keyboardEvent.ctrlKey, keyboardEvent.shiftKey, keyboardEvent.altKey, keyboardEvent.metaKey, keyboardEvent.keyCode).toChord();\r\n return new USLayoutResolvedKeybinding(keybinding, OS);\r\n }\r\n}\r\nfunction isConfigurationOverrides(thing) {\r\n return thing\r\n && typeof thing === 'object'\r\n && (!thing.overrideIdentifier || typeof thing.overrideIdentifier === 'string')\r\n && (!thing.resource || thing.resource instanceof URI);\r\n}\r\nexport class SimpleConfigurationService {\r\n constructor() {\r\n this._onDidChangeConfiguration = new Emitter();\r\n this.onDidChangeConfiguration = this._onDidChangeConfiguration.event;\r\n this._configuration = new Configuration(new DefaultConfigurationModel(), new ConfigurationModel());\r\n }\r\n getValue(arg1, arg2) {\r\n const section = typeof arg1 === 'string' ? arg1 : undefined;\r\n const overrides = isConfigurationOverrides(arg1) ? arg1 : isConfigurationOverrides(arg2) ? arg2 : {};\r\n return this._configuration.getValue(section, overrides, undefined);\r\n }\r\n updateValues(values) {\r\n const previous = { data: this._configuration.toData() };\r\n let changedKeys = [];\r\n for (const entry of values) {\r\n const [key, value] = entry;\r\n if (this.getValue(key) === value) {\r\n continue;\r\n }\r\n this._configuration.updateValue(key, value);\r\n changedKeys.push(key);\r\n }\r\n if (changedKeys.length > 0) {\r\n const configurationChangeEvent = new ConfigurationChangeEvent({ keys: changedKeys, overrides: [] }, previous, this._configuration);\r\n configurationChangeEvent.source = 7 /* MEMORY */;\r\n configurationChangeEvent.sourceConfig = null;\r\n this._onDidChangeConfiguration.fire(configurationChangeEvent);\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nexport class SimpleResourceConfigurationService {\r\n constructor(configurationService) {\r\n this.configurationService = configurationService;\r\n this._onDidChangeConfiguration = new Emitter();\r\n this.configurationService.onDidChangeConfiguration((e) => {\r\n this._onDidChangeConfiguration.fire({ affectedKeys: e.affectedKeys, affectsConfiguration: (resource, configuration) => e.affectsConfiguration(configuration) });\r\n });\r\n }\r\n getValue(resource, arg2, arg3) {\r\n const position = Pos.isIPosition(arg2) ? arg2 : null;\r\n const section = position ? (typeof arg3 === 'string' ? arg3 : undefined) : (typeof arg2 === 'string' ? arg2 : undefined);\r\n if (typeof section === 'undefined') {\r\n return this.configurationService.getValue();\r\n }\r\n return this.configurationService.getValue(section);\r\n }\r\n}\r\nlet SimpleResourcePropertiesService = class SimpleResourcePropertiesService {\r\n constructor(configurationService) {\r\n this.configurationService = configurationService;\r\n }\r\n getEOL(resource, language) {\r\n const eol = this.configurationService.getValue('files.eol', { overrideIdentifier: language, resource });\r\n if (eol && eol !== 'auto') {\r\n return eol;\r\n }\r\n return (isLinux || isMacintosh) ? '\\n' : '\\r\\n';\r\n }\r\n};\r\nSimpleResourcePropertiesService = __decorate([\r\n __param(0, IConfigurationService)\r\n], SimpleResourcePropertiesService);\r\nexport { SimpleResourcePropertiesService };\r\nexport class StandaloneTelemetryService {\r\n publicLog(eventName, data) {\r\n return Promise.resolve(undefined);\r\n }\r\n publicLog2(eventName, data) {\r\n return this.publicLog(eventName, data);\r\n }\r\n}\r\nexport class SimpleWorkspaceContextService {\r\n constructor() {\r\n const resource = URI.from({ scheme: SimpleWorkspaceContextService.SCHEME, authority: 'model', path: '/' });\r\n this.workspace = { id: '4064f6ec-cb38-4ad0-af64-ee6467e63c82', folders: [new WorkspaceFolder({ uri: resource, name: '', index: 0 })] };\r\n }\r\n getWorkspace() {\r\n return this.workspace;\r\n }\r\n getWorkspaceFolder(resource) {\r\n return resource && resource.scheme === SimpleWorkspaceContextService.SCHEME ? this.workspace.folders[0] : null;\r\n }\r\n}\r\nSimpleWorkspaceContextService.SCHEME = 'inmemory';\r\nexport function applyConfigurationValues(configurationService, source, isDiffEditor) {\r\n if (!source) {\r\n return;\r\n }\r\n if (!(configurationService instanceof SimpleConfigurationService)) {\r\n return;\r\n }\r\n let toUpdate = [];\r\n Object.keys(source).forEach((key) => {\r\n if (isEditorConfigurationKey(key)) {\r\n toUpdate.push([`editor.${key}`, source[key]]);\r\n }\r\n if (isDiffEditor && isDiffEditorConfigurationKey(key)) {\r\n toUpdate.push([`diffEditor.${key}`, source[key]]);\r\n }\r\n });\r\n if (toUpdate.length > 0) {\r\n configurationService.updateValues(toUpdate);\r\n }\r\n}\r\nexport class SimpleBulkEditService {\r\n constructor(_modelService) {\r\n this._modelService = _modelService;\r\n //\r\n }\r\n hasPreviewHandler() {\r\n return false;\r\n }\r\n apply(edits, _options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const textEdits = new Map();\r\n for (let edit of edits) {\r\n if (!(edit instanceof ResourceTextEdit)) {\r\n throw new Error('bad edit - only text edits are supported');\r\n }\r\n const model = this._modelService.getModel(edit.resource);\r\n if (!model) {\r\n throw new Error('bad edit - model not found');\r\n }\r\n if (typeof edit.versionId === 'number' && model.getVersionId() !== edit.versionId) {\r\n throw new Error('bad state - model changed in the meantime');\r\n }\r\n let array = textEdits.get(model);\r\n if (!array) {\r\n array = [];\r\n textEdits.set(model, array);\r\n }\r\n array.push(EditOperation.replaceMove(Range.lift(edit.textEdit.range), edit.textEdit.text));\r\n }\r\n let totalEdits = 0;\r\n let totalFiles = 0;\r\n for (const [model, edits] of textEdits) {\r\n model.pushStackElement();\r\n model.pushEditOperations([], edits, () => []);\r\n model.pushStackElement();\r\n totalFiles += 1;\r\n totalEdits += edits.length;\r\n }\r\n return {\r\n ariaSummary: strings.format(SimpleServicesNLS.bulkEditServiceSummary, totalEdits, totalFiles)\r\n };\r\n });\r\n }\r\n}\r\nexport class SimpleUriLabelService {\r\n getUriLabel(resource, options) {\r\n if (resource.scheme === 'file') {\r\n return resource.fsPath;\r\n }\r\n return resource.path;\r\n }\r\n}\r\nexport class SimpleLayoutService {\r\n constructor(_codeEditorService, _container) {\r\n this._codeEditorService = _codeEditorService;\r\n this._container = _container;\r\n this.onLayout = Event.None;\r\n }\r\n get dimension() {\r\n if (!this._dimension) {\r\n this._dimension = dom.getClientArea(window.document.body);\r\n }\r\n return this._dimension;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n focus() {\r\n var _a;\r\n (_a = this._codeEditorService.getFocusedCodeEditor()) === null || _a === void 0 ? void 0 : _a.focus();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport * as aria from '../../../base/browser/ui/aria/aria.js';\r\nimport { Disposable, toDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { CodeEditorWidget } from '../../browser/widget/codeEditorWidget.js';\r\nimport { DiffEditorWidget } from '../../browser/widget/diffEditorWidget.js';\r\nimport { InternalEditorAction } from '../../common/editorAction.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { StandaloneKeybindingService, applyConfigurationValues } from './simpleServices.js';\r\nimport { IStandaloneThemeService } from '../common/standaloneThemeService.js';\r\nimport { MenuId, MenuRegistry } from '../../../platform/actions/common/actions.js';\r\nimport { CommandsRegistry, ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { ContextKeyExpr, IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextViewService, IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { StandaloneCodeEditorNLS } from '../../common/standaloneStrings.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nlet LAST_GENERATED_COMMAND_ID = 0;\r\nlet ariaDomNodeCreated = false;\r\nfunction createAriaDomNode() {\r\n if (ariaDomNodeCreated) {\r\n return;\r\n }\r\n ariaDomNodeCreated = true;\r\n aria.setARIAContainer(document.body);\r\n}\r\n/**\r\n * A code editor to be used both by the standalone editor and the standalone diff editor.\r\n */\r\nlet StandaloneCodeEditor = class StandaloneCodeEditor extends CodeEditorWidget {\r\n constructor(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, accessibilityService) {\r\n options = options || {};\r\n options.ariaLabel = options.ariaLabel || StandaloneCodeEditorNLS.editorViewAccessibleLabel;\r\n options.ariaLabel = options.ariaLabel + ';' + (StandaloneCodeEditorNLS.accessibilityHelpMessage);\r\n super(domElement, options, {}, instantiationService, codeEditorService, commandService, contextKeyService, themeService, notificationService, accessibilityService);\r\n if (keybindingService instanceof StandaloneKeybindingService) {\r\n this._standaloneKeybindingService = keybindingService;\r\n }\r\n else {\r\n this._standaloneKeybindingService = null;\r\n }\r\n // Create the ARIA dom node as soon as the first editor is instantiated\r\n createAriaDomNode();\r\n }\r\n addCommand(keybinding, handler, context) {\r\n if (!this._standaloneKeybindingService) {\r\n console.warn('Cannot add command because the editor is configured with an unrecognized KeybindingService');\r\n return null;\r\n }\r\n let commandId = 'DYNAMIC_' + (++LAST_GENERATED_COMMAND_ID);\r\n let whenExpression = ContextKeyExpr.deserialize(context);\r\n this._standaloneKeybindingService.addDynamicKeybinding(commandId, keybinding, handler, whenExpression);\r\n return commandId;\r\n }\r\n createContextKey(key, defaultValue) {\r\n return this._contextKeyService.createKey(key, defaultValue);\r\n }\r\n addAction(_descriptor) {\r\n if ((typeof _descriptor.id !== 'string') || (typeof _descriptor.label !== 'string') || (typeof _descriptor.run !== 'function')) {\r\n throw new Error('Invalid action descriptor, `id`, `label` and `run` are required properties!');\r\n }\r\n if (!this._standaloneKeybindingService) {\r\n console.warn('Cannot add keybinding because the editor is configured with an unrecognized KeybindingService');\r\n return Disposable.None;\r\n }\r\n // Read descriptor options\r\n const id = _descriptor.id;\r\n const label = _descriptor.label;\r\n const precondition = ContextKeyExpr.and(ContextKeyExpr.equals('editorId', this.getId()), ContextKeyExpr.deserialize(_descriptor.precondition));\r\n const keybindings = _descriptor.keybindings;\r\n const keybindingsWhen = ContextKeyExpr.and(precondition, ContextKeyExpr.deserialize(_descriptor.keybindingContext));\r\n const contextMenuGroupId = _descriptor.contextMenuGroupId || null;\r\n const contextMenuOrder = _descriptor.contextMenuOrder || 0;\r\n const run = (accessor, ...args) => {\r\n return Promise.resolve(_descriptor.run(this, ...args));\r\n };\r\n const toDispose = new DisposableStore();\r\n // Generate a unique id to allow the same descriptor.id across multiple editor instances\r\n const uniqueId = this.getId() + ':' + id;\r\n // Register the command\r\n toDispose.add(CommandsRegistry.registerCommand(uniqueId, run));\r\n // Register the context menu item\r\n if (contextMenuGroupId) {\r\n let menuItem = {\r\n command: {\r\n id: uniqueId,\r\n title: label\r\n },\r\n when: precondition,\r\n group: contextMenuGroupId,\r\n order: contextMenuOrder\r\n };\r\n toDispose.add(MenuRegistry.appendMenuItem(MenuId.EditorContext, menuItem));\r\n }\r\n // Register the keybindings\r\n if (Array.isArray(keybindings)) {\r\n for (const kb of keybindings) {\r\n toDispose.add(this._standaloneKeybindingService.addDynamicKeybinding(uniqueId, kb, run, keybindingsWhen));\r\n }\r\n }\r\n // Finally, register an internal editor action\r\n let internalAction = new InternalEditorAction(uniqueId, label, label, precondition, run, this._contextKeyService);\r\n // Store it under the original id, such that trigger with the original id will work\r\n this._actions[id] = internalAction;\r\n toDispose.add(toDisposable(() => {\r\n delete this._actions[id];\r\n }));\r\n return toDispose;\r\n }\r\n};\r\nStandaloneCodeEditor = __decorate([\r\n __param(2, IInstantiationService),\r\n __param(3, ICodeEditorService),\r\n __param(4, ICommandService),\r\n __param(5, IContextKeyService),\r\n __param(6, IKeybindingService),\r\n __param(7, IThemeService),\r\n __param(8, INotificationService),\r\n __param(9, IAccessibilityService)\r\n], StandaloneCodeEditor);\r\nexport { StandaloneCodeEditor };\r\nlet StandaloneEditor = class StandaloneEditor extends StandaloneCodeEditor {\r\n constructor(domElement, options, toDispose, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, contextViewService, themeService, notificationService, configurationService, accessibilityService) {\r\n applyConfigurationValues(configurationService, options, false);\r\n const themeDomRegistration = themeService.registerEditorContainer(domElement);\r\n options = options || {};\r\n if (typeof options.theme === 'string') {\r\n themeService.setTheme(options.theme);\r\n }\r\n let _model = options.model;\r\n delete options.model;\r\n super(domElement, options, instantiationService, codeEditorService, commandService, contextKeyService, keybindingService, themeService, notificationService, accessibilityService);\r\n this._contextViewService = contextViewService;\r\n this._configurationService = configurationService;\r\n this._standaloneThemeService = themeService;\r\n this._register(toDispose);\r\n this._register(themeDomRegistration);\r\n let model;\r\n if (typeof _model === 'undefined') {\r\n model = self.monaco.editor.createModel(options.value || '', options.language || 'text/plain');\r\n this._ownsModel = true;\r\n }\r\n else {\r\n model = _model;\r\n this._ownsModel = false;\r\n }\r\n this._attachModel(model);\r\n if (model) {\r\n let e = {\r\n oldModelUrl: null,\r\n newModelUrl: model.uri\r\n };\r\n this._onDidChangeModel.fire(e);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n updateOptions(newOptions) {\r\n applyConfigurationValues(this._configurationService, newOptions, false);\r\n if (typeof newOptions.theme === 'string') {\r\n this._standaloneThemeService.setTheme(newOptions.theme);\r\n }\r\n super.updateOptions(newOptions);\r\n }\r\n _attachModel(model) {\r\n super._attachModel(model);\r\n if (this._modelData) {\r\n this._contextViewService.setContainer(this._modelData.view.domNode.domNode);\r\n }\r\n }\r\n _postDetachModelCleanup(detachedModel) {\r\n super._postDetachModelCleanup(detachedModel);\r\n if (detachedModel && this._ownsModel) {\r\n detachedModel.dispose();\r\n this._ownsModel = false;\r\n }\r\n }\r\n};\r\nStandaloneEditor = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, ICodeEditorService),\r\n __param(5, ICommandService),\r\n __param(6, IContextKeyService),\r\n __param(7, IKeybindingService),\r\n __param(8, IContextViewService),\r\n __param(9, IStandaloneThemeService),\r\n __param(10, INotificationService),\r\n __param(11, IConfigurationService),\r\n __param(12, IAccessibilityService)\r\n], StandaloneEditor);\r\nexport { StandaloneEditor };\r\nlet StandaloneDiffEditor = class StandaloneDiffEditor extends DiffEditorWidget {\r\n constructor(domElement, options, toDispose, instantiationService, contextKeyService, keybindingService, contextViewService, editorWorkerService, codeEditorService, themeService, notificationService, configurationService, contextMenuService, editorProgressService, clipboardService) {\r\n applyConfigurationValues(configurationService, options, true);\r\n const themeDomRegistration = themeService.registerEditorContainer(domElement);\r\n options = options || {};\r\n if (typeof options.theme === 'string') {\r\n options.theme = themeService.setTheme(options.theme);\r\n }\r\n super(domElement, options, clipboardService, editorWorkerService, contextKeyService, instantiationService, codeEditorService, themeService, notificationService, contextMenuService, editorProgressService);\r\n this._contextViewService = contextViewService;\r\n this._configurationService = configurationService;\r\n this._standaloneThemeService = themeService;\r\n this._register(toDispose);\r\n this._register(themeDomRegistration);\r\n this._contextViewService.setContainer(this._containerDomElement);\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n updateOptions(newOptions) {\r\n applyConfigurationValues(this._configurationService, newOptions, true);\r\n if (typeof newOptions.theme === 'string') {\r\n this._standaloneThemeService.setTheme(newOptions.theme);\r\n }\r\n super.updateOptions(newOptions);\r\n }\r\n _createInnerEditor(instantiationService, container, options) {\r\n return instantiationService.createInstance(StandaloneCodeEditor, container, options);\r\n }\r\n getOriginalEditor() {\r\n return super.getOriginalEditor();\r\n }\r\n getModifiedEditor() {\r\n return super.getModifiedEditor();\r\n }\r\n addCommand(keybinding, handler, context) {\r\n return this.getModifiedEditor().addCommand(keybinding, handler, context);\r\n }\r\n createContextKey(key, defaultValue) {\r\n return this.getModifiedEditor().createContextKey(key, defaultValue);\r\n }\r\n addAction(descriptor) {\r\n return this.getModifiedEditor().addAction(descriptor);\r\n }\r\n};\r\nStandaloneDiffEditor = __decorate([\r\n __param(3, IInstantiationService),\r\n __param(4, IContextKeyService),\r\n __param(5, IKeybindingService),\r\n __param(6, IContextViewService),\r\n __param(7, IEditorWorkerService),\r\n __param(8, ICodeEditorService),\r\n __param(9, IStandaloneThemeService),\r\n __param(10, INotificationService),\r\n __param(11, IConfigurationService),\r\n __param(12, IContextMenuService),\r\n __param(13, IEditorProgressService),\r\n __param(14, IClipboardService)\r\n], StandaloneDiffEditor);\r\nexport { StandaloneDiffEditor };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { windowOpenNoOpener } from '../../../base/browser/dom.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { CodeEditorServiceImpl } from '../../browser/services/codeEditorServiceImpl.js';\r\nexport class StandaloneCodeEditorServiceImpl extends CodeEditorServiceImpl {\r\n getActiveCodeEditor() {\r\n return null; // not supported in the standalone case\r\n }\r\n openCodeEditor(input, source, sideBySide) {\r\n if (!source) {\r\n return Promise.resolve(null);\r\n }\r\n return Promise.resolve(this.doOpenEditor(source, input));\r\n }\r\n doOpenEditor(editor, input) {\r\n const model = this.findModel(editor, input.resource);\r\n if (!model) {\r\n if (input.resource) {\r\n const schema = input.resource.scheme;\r\n if (schema === Schemas.http || schema === Schemas.https) {\r\n // This is a fully qualified http or https URL\r\n windowOpenNoOpener(input.resource.toString());\r\n return editor;\r\n }\r\n }\r\n return null;\r\n }\r\n const selection = (input.options ? input.options.selection : null);\r\n if (selection) {\r\n if (typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {\r\n editor.setSelection(selection);\r\n editor.revealRangeInCenter(selection, 1 /* Immediate */);\r\n }\r\n else {\r\n const pos = {\r\n lineNumber: selection.startLineNumber,\r\n column: selection.startColumn\r\n };\r\n editor.setPosition(pos);\r\n editor.revealPositionInCenter(pos, 1 /* Immediate */);\r\n }\r\n }\r\n return editor;\r\n }\r\n findModel(editor, resource) {\r\n const model = editor.getModel();\r\n if (model && model.uri.toString() !== resource.toString()) {\r\n return null;\r\n }\r\n return model;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './standalone-tokens.css';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { OpenerService } from '../../browser/services/openerService.js';\r\nimport { DiffNavigator } from '../../browser/widget/diffNavigator.js';\r\nimport { EditorOptions, ConfigurationChangedEvent } from '../../common/config/editorOptions.js';\r\nimport { BareFontInfo, FontInfo } from '../../common/config/fontInfo.js';\r\nimport { EditorType } from '../../common/editorCommon.js';\r\nimport { FindMatch, TextModelResolvedOptions } from '../../common/model.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { NULL_STATE, nullTokenize } from '../../common/modes/nullMode.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { ITextModelService } from '../../common/services/resolverService.js';\r\nimport { createWebWorker as actualCreateWebWorker } from '../../common/services/webWorker.js';\r\nimport * as standaloneEnums from '../../common/standalone/standaloneEnums.js';\r\nimport { Colorizer } from './colorizer.js';\r\nimport { SimpleEditorModelResolverService } from './simpleServices.js';\r\nimport { StandaloneDiffEditor, StandaloneEditor } from './standaloneCodeEditor.js';\r\nimport { DynamicStandaloneServices, StaticServices } from './standaloneServices.js';\r\nimport { IStandaloneThemeService } from '../common/standaloneThemeService.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { IContextViewService, IContextMenuService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IOpenerService } from '../../../platform/opener/common/opener.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { clearAllFontInfos } from '../../browser/config/configuration.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nfunction withAllStandaloneServices(domElement, override, callback) {\r\n let services = new DynamicStandaloneServices(domElement, override);\r\n let simpleEditorModelResolverService = null;\r\n if (!services.has(ITextModelService)) {\r\n simpleEditorModelResolverService = new SimpleEditorModelResolverService(StaticServices.modelService.get());\r\n services.set(ITextModelService, simpleEditorModelResolverService);\r\n }\r\n if (!services.has(IOpenerService)) {\r\n services.set(IOpenerService, new OpenerService(services.get(ICodeEditorService), services.get(ICommandService)));\r\n }\r\n let result = callback(services);\r\n if (simpleEditorModelResolverService) {\r\n simpleEditorModelResolverService.setEditor(result);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new editor under `domElement`.\r\n * `domElement` should be empty (not contain other dom nodes).\r\n * The editor will read the size of `domElement`.\r\n */\r\nexport function create(domElement, options, override) {\r\n return withAllStandaloneServices(domElement, override || {}, (services) => {\r\n return new StandaloneEditor(domElement, options, services, services.get(IInstantiationService), services.get(ICodeEditorService), services.get(ICommandService), services.get(IContextKeyService), services.get(IKeybindingService), services.get(IContextViewService), services.get(IStandaloneThemeService), services.get(INotificationService), services.get(IConfigurationService), services.get(IAccessibilityService));\r\n });\r\n}\r\n/**\r\n * Emitted when an editor is created.\r\n * Creating a diff editor might cause this listener to be invoked with the two editors.\r\n * @event\r\n */\r\nexport function onDidCreateEditor(listener) {\r\n return StaticServices.codeEditorService.get().onCodeEditorAdd((editor) => {\r\n listener(editor);\r\n });\r\n}\r\n/**\r\n * Create a new diff editor under `domElement`.\r\n * `domElement` should be empty (not contain other dom nodes).\r\n * The editor will read the size of `domElement`.\r\n */\r\nexport function createDiffEditor(domElement, options, override) {\r\n return withAllStandaloneServices(domElement, override || {}, (services) => {\r\n return new StandaloneDiffEditor(domElement, options, services, services.get(IInstantiationService), services.get(IContextKeyService), services.get(IKeybindingService), services.get(IContextViewService), services.get(IEditorWorkerService), services.get(ICodeEditorService), services.get(IStandaloneThemeService), services.get(INotificationService), services.get(IConfigurationService), services.get(IContextMenuService), services.get(IEditorProgressService), services.get(IClipboardService));\r\n });\r\n}\r\nexport function createDiffNavigator(diffEditor, opts) {\r\n return new DiffNavigator(diffEditor, opts);\r\n}\r\nfunction doCreateModel(value, languageSelection, uri) {\r\n return StaticServices.modelService.get().createModel(value, languageSelection, uri);\r\n}\r\n/**\r\n * Create a new editor model.\r\n * You can specify the language that should be set for this model or let the language be inferred from the `uri`.\r\n */\r\nexport function createModel(value, language, uri) {\r\n value = value || '';\r\n if (!language) {\r\n let firstLF = value.indexOf('\\n');\r\n let firstLine = value;\r\n if (firstLF !== -1) {\r\n firstLine = value.substring(0, firstLF);\r\n }\r\n return doCreateModel(value, StaticServices.modeService.get().createByFilepathOrFirstLine(uri || null, firstLine), uri);\r\n }\r\n return doCreateModel(value, StaticServices.modeService.get().create(language), uri);\r\n}\r\n/**\r\n * Change the language for a model.\r\n */\r\nexport function setModelLanguage(model, languageId) {\r\n StaticServices.modelService.get().setMode(model, StaticServices.modeService.get().create(languageId));\r\n}\r\n/**\r\n * Set the markers for a model.\r\n */\r\nexport function setModelMarkers(model, owner, markers) {\r\n if (model) {\r\n StaticServices.markerService.get().changeOne(owner, model.uri, markers);\r\n }\r\n}\r\n/**\r\n * Get markers for owner and/or resource\r\n *\r\n * @returns list of markers\r\n */\r\nexport function getModelMarkers(filter) {\r\n return StaticServices.markerService.get().read(filter);\r\n}\r\n/**\r\n * Get the model that has `uri` if it exists.\r\n */\r\nexport function getModel(uri) {\r\n return StaticServices.modelService.get().getModel(uri);\r\n}\r\n/**\r\n * Get all the created models.\r\n */\r\nexport function getModels() {\r\n return StaticServices.modelService.get().getModels();\r\n}\r\n/**\r\n * Emitted when a model is created.\r\n * @event\r\n */\r\nexport function onDidCreateModel(listener) {\r\n return StaticServices.modelService.get().onModelAdded(listener);\r\n}\r\n/**\r\n * Emitted right before a model is disposed.\r\n * @event\r\n */\r\nexport function onWillDisposeModel(listener) {\r\n return StaticServices.modelService.get().onModelRemoved(listener);\r\n}\r\n/**\r\n * Emitted when a different language is set to a model.\r\n * @event\r\n */\r\nexport function onDidChangeModelLanguage(listener) {\r\n return StaticServices.modelService.get().onModelModeChanged((e) => {\r\n listener({\r\n model: e.model,\r\n oldLanguage: e.oldModeId\r\n });\r\n });\r\n}\r\n/**\r\n * Create a new web worker that has model syncing capabilities built in.\r\n * Specify an AMD module to load that will `create` an object that will be proxied.\r\n */\r\nexport function createWebWorker(opts) {\r\n return actualCreateWebWorker(StaticServices.modelService.get(), opts);\r\n}\r\n/**\r\n * Colorize the contents of `domNode` using attribute `data-lang`.\r\n */\r\nexport function colorizeElement(domNode, options) {\r\n const themeService = StaticServices.standaloneThemeService.get();\r\n themeService.registerEditorContainer(domNode);\r\n return Colorizer.colorizeElement(themeService, StaticServices.modeService.get(), domNode, options);\r\n}\r\n/**\r\n * Colorize `text` using language `languageId`.\r\n */\r\nexport function colorize(text, languageId, options) {\r\n const themeService = StaticServices.standaloneThemeService.get();\r\n themeService.registerEditorContainer(document.body);\r\n return Colorizer.colorize(StaticServices.modeService.get(), text, languageId, options);\r\n}\r\n/**\r\n * Colorize a line in a model.\r\n */\r\nexport function colorizeModelLine(model, lineNumber, tabSize = 4) {\r\n const themeService = StaticServices.standaloneThemeService.get();\r\n themeService.registerEditorContainer(document.body);\r\n return Colorizer.colorizeModelLine(model, lineNumber, tabSize);\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction getSafeTokenizationSupport(language) {\r\n let tokenizationSupport = modes.TokenizationRegistry.get(language);\r\n if (tokenizationSupport) {\r\n return tokenizationSupport;\r\n }\r\n return {\r\n getInitialState: () => NULL_STATE,\r\n tokenize: (line, state, deltaOffset) => nullTokenize(language, line, state, deltaOffset)\r\n };\r\n}\r\n/**\r\n * Tokenize `text` using language `languageId`\r\n */\r\nexport function tokenize(text, languageId) {\r\n let modeService = StaticServices.modeService.get();\r\n // Needed in order to get the mode registered for subsequent look-ups\r\n modeService.triggerMode(languageId);\r\n let tokenizationSupport = getSafeTokenizationSupport(languageId);\r\n let lines = text.split(/\\r\\n|\\r|\\n/);\r\n let result = [];\r\n let state = tokenizationSupport.getInitialState();\r\n for (let i = 0, len = lines.length; i < len; i++) {\r\n let line = lines[i];\r\n let tokenizationResult = tokenizationSupport.tokenize(line, state, 0);\r\n result[i] = tokenizationResult.tokens;\r\n state = tokenizationResult.endState;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Define a new theme or update an existing theme.\r\n */\r\nexport function defineTheme(themeName, themeData) {\r\n StaticServices.standaloneThemeService.get().defineTheme(themeName, themeData);\r\n}\r\n/**\r\n * Switches to a theme.\r\n */\r\nexport function setTheme(themeName) {\r\n StaticServices.standaloneThemeService.get().setTheme(themeName);\r\n}\r\n/**\r\n * Clears all cached font measurements and triggers re-measurement.\r\n */\r\nexport function remeasureFonts() {\r\n clearAllFontInfos();\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport function createMonacoEditorAPI() {\r\n return {\r\n // methods\r\n create: create,\r\n onDidCreateEditor: onDidCreateEditor,\r\n createDiffEditor: createDiffEditor,\r\n createDiffNavigator: createDiffNavigator,\r\n createModel: createModel,\r\n setModelLanguage: setModelLanguage,\r\n setModelMarkers: setModelMarkers,\r\n getModelMarkers: getModelMarkers,\r\n getModels: getModels,\r\n getModel: getModel,\r\n onDidCreateModel: onDidCreateModel,\r\n onWillDisposeModel: onWillDisposeModel,\r\n onDidChangeModelLanguage: onDidChangeModelLanguage,\r\n createWebWorker: createWebWorker,\r\n colorizeElement: colorizeElement,\r\n colorize: colorize,\r\n colorizeModelLine: colorizeModelLine,\r\n tokenize: tokenize,\r\n defineTheme: defineTheme,\r\n setTheme: setTheme,\r\n remeasureFonts: remeasureFonts,\r\n // enums\r\n AccessibilitySupport: standaloneEnums.AccessibilitySupport,\r\n ContentWidgetPositionPreference: standaloneEnums.ContentWidgetPositionPreference,\r\n CursorChangeReason: standaloneEnums.CursorChangeReason,\r\n DefaultEndOfLine: standaloneEnums.DefaultEndOfLine,\r\n EditorAutoIndentStrategy: standaloneEnums.EditorAutoIndentStrategy,\r\n EditorOption: standaloneEnums.EditorOption,\r\n EndOfLinePreference: standaloneEnums.EndOfLinePreference,\r\n EndOfLineSequence: standaloneEnums.EndOfLineSequence,\r\n MinimapPosition: standaloneEnums.MinimapPosition,\r\n MouseTargetType: standaloneEnums.MouseTargetType,\r\n OverlayWidgetPositionPreference: standaloneEnums.OverlayWidgetPositionPreference,\r\n OverviewRulerLane: standaloneEnums.OverviewRulerLane,\r\n RenderLineNumbersType: standaloneEnums.RenderLineNumbersType,\r\n RenderMinimap: standaloneEnums.RenderMinimap,\r\n ScrollbarVisibility: standaloneEnums.ScrollbarVisibility,\r\n ScrollType: standaloneEnums.ScrollType,\r\n TextEditorCursorBlinkingStyle: standaloneEnums.TextEditorCursorBlinkingStyle,\r\n TextEditorCursorStyle: standaloneEnums.TextEditorCursorStyle,\r\n TrackedRangeStickiness: standaloneEnums.TrackedRangeStickiness,\r\n WrappingIndent: standaloneEnums.WrappingIndent,\r\n // classes\r\n ConfigurationChangedEvent: ConfigurationChangedEvent,\r\n BareFontInfo: BareFontInfo,\r\n FontInfo: FontInfo,\r\n TextModelResolvedOptions: TextModelResolvedOptions,\r\n FindMatch: FindMatch,\r\n // vars\r\n EditorType: EditorType,\r\n EditorOptions: EditorOptions\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Range } from '../../common/core/range.js';\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../../common/core/token.js';\r\nimport * as modes from '../../common/modes.js';\r\nimport { LanguageConfigurationRegistry } from '../../common/modes/languageConfigurationRegistry.js';\r\nimport { ModesRegistry } from '../../common/modes/modesRegistry.js';\r\nimport * as standaloneEnums from '../../common/standalone/standaloneEnums.js';\r\nimport { StaticServices } from './standaloneServices.js';\r\nimport { compile } from '../common/monarch/monarchCompile.js';\r\nimport { createTokenizationSupport } from '../common/monarch/monarchLexer.js';\r\n/**\r\n * Register information about a new language.\r\n */\r\nexport function register(language) {\r\n ModesRegistry.registerLanguage(language);\r\n}\r\n/**\r\n * Get the information of all the registered languages.\r\n */\r\nexport function getLanguages() {\r\n let result = [];\r\n result = result.concat(ModesRegistry.getLanguages());\r\n return result;\r\n}\r\nexport function getEncodedLanguageId(languageId) {\r\n let lid = StaticServices.modeService.get().getLanguageIdentifier(languageId);\r\n return lid ? lid.id : 0;\r\n}\r\n/**\r\n * An event emitted when a language is first time needed (e.g. a model has it set).\r\n * @event\r\n */\r\nexport function onLanguage(languageId, callback) {\r\n let disposable = StaticServices.modeService.get().onDidCreateMode((mode) => {\r\n if (mode.getId() === languageId) {\r\n // stop listening\r\n disposable.dispose();\r\n // invoke actual listener\r\n callback();\r\n }\r\n });\r\n return disposable;\r\n}\r\n/**\r\n * Set the editing configuration for a language.\r\n */\r\nexport function setLanguageConfiguration(languageId, configuration) {\r\n let languageIdentifier = StaticServices.modeService.get().getLanguageIdentifier(languageId);\r\n if (!languageIdentifier) {\r\n throw new Error(`Cannot set configuration for unknown language ${languageId}`);\r\n }\r\n return LanguageConfigurationRegistry.register(languageIdentifier, configuration);\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EncodedTokenizationSupport2Adapter {\r\n constructor(actual) {\r\n this._actual = actual;\r\n }\r\n getInitialState() {\r\n return this._actual.getInitialState();\r\n }\r\n tokenize(line, state, offsetDelta) {\r\n throw new Error('Not supported!');\r\n }\r\n tokenize2(line, state) {\r\n let result = this._actual.tokenizeEncoded(line, state);\r\n return new TokenizationResult2(result.tokens, result.endState);\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class TokenizationSupport2Adapter {\r\n constructor(standaloneThemeService, languageIdentifier, actual) {\r\n this._standaloneThemeService = standaloneThemeService;\r\n this._languageIdentifier = languageIdentifier;\r\n this._actual = actual;\r\n }\r\n getInitialState() {\r\n return this._actual.getInitialState();\r\n }\r\n _toClassicTokens(tokens, language, offsetDelta) {\r\n let result = [];\r\n let previousStartIndex = 0;\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const t = tokens[i];\r\n let startIndex = t.startIndex;\r\n // Prevent issues stemming from a buggy external tokenizer.\r\n if (i === 0) {\r\n // Force first token to start at first index!\r\n startIndex = 0;\r\n }\r\n else if (startIndex < previousStartIndex) {\r\n // Force tokens to be after one another!\r\n startIndex = previousStartIndex;\r\n }\r\n result[i] = new Token(startIndex + offsetDelta, t.scopes, language);\r\n previousStartIndex = startIndex;\r\n }\r\n return result;\r\n }\r\n tokenize(line, state, offsetDelta) {\r\n let actualResult = this._actual.tokenize(line, state);\r\n let tokens = this._toClassicTokens(actualResult.tokens, this._languageIdentifier.language, offsetDelta);\r\n let endState;\r\n // try to save an object if possible\r\n if (actualResult.endState.equals(state)) {\r\n endState = state;\r\n }\r\n else {\r\n endState = actualResult.endState;\r\n }\r\n return new TokenizationResult(tokens, endState);\r\n }\r\n _toBinaryTokens(tokens, offsetDelta) {\r\n const languageId = this._languageIdentifier.id;\r\n const tokenTheme = this._standaloneThemeService.getColorTheme().tokenTheme;\r\n let result = [], resultLen = 0;\r\n let previousStartIndex = 0;\r\n for (let i = 0, len = tokens.length; i < len; i++) {\r\n const t = tokens[i];\r\n const metadata = tokenTheme.match(languageId, t.scopes);\r\n if (resultLen > 0 && result[resultLen - 1] === metadata) {\r\n // same metadata\r\n continue;\r\n }\r\n let startIndex = t.startIndex;\r\n // Prevent issues stemming from a buggy external tokenizer.\r\n if (i === 0) {\r\n // Force first token to start at first index!\r\n startIndex = 0;\r\n }\r\n else if (startIndex < previousStartIndex) {\r\n // Force tokens to be after one another!\r\n startIndex = previousStartIndex;\r\n }\r\n result[resultLen++] = startIndex + offsetDelta;\r\n result[resultLen++] = metadata;\r\n previousStartIndex = startIndex;\r\n }\r\n let actualResult = new Uint32Array(resultLen);\r\n for (let i = 0; i < resultLen; i++) {\r\n actualResult[i] = result[i];\r\n }\r\n return actualResult;\r\n }\r\n tokenize2(line, state, offsetDelta) {\r\n let actualResult = this._actual.tokenize(line, state);\r\n let tokens = this._toBinaryTokens(actualResult.tokens, offsetDelta);\r\n let endState;\r\n // try to save an object if possible\r\n if (actualResult.endState.equals(state)) {\r\n endState = state;\r\n }\r\n else {\r\n endState = actualResult.endState;\r\n }\r\n return new TokenizationResult2(tokens, endState);\r\n }\r\n}\r\nfunction isEncodedTokensProvider(provider) {\r\n return 'tokenizeEncoded' in provider;\r\n}\r\nfunction isThenable(obj) {\r\n return obj && typeof obj.then === 'function';\r\n}\r\n/**\r\n * Set the tokens provider for a language (manual implementation).\r\n */\r\nexport function setTokensProvider(languageId, provider) {\r\n let languageIdentifier = StaticServices.modeService.get().getLanguageIdentifier(languageId);\r\n if (!languageIdentifier) {\r\n throw new Error(`Cannot set tokens provider for unknown language ${languageId}`);\r\n }\r\n const create = (provider) => {\r\n if (isEncodedTokensProvider(provider)) {\r\n return new EncodedTokenizationSupport2Adapter(provider);\r\n }\r\n else {\r\n return new TokenizationSupport2Adapter(StaticServices.standaloneThemeService.get(), languageIdentifier, provider);\r\n }\r\n };\r\n if (isThenable(provider)) {\r\n return modes.TokenizationRegistry.registerPromise(languageId, provider.then(provider => create(provider)));\r\n }\r\n return modes.TokenizationRegistry.register(languageId, create(provider));\r\n}\r\n/**\r\n * Set the tokens provider for a language (monarch implementation).\r\n */\r\nexport function setMonarchTokensProvider(languageId, languageDef) {\r\n const create = (languageDef) => {\r\n return createTokenizationSupport(StaticServices.modeService.get(), StaticServices.standaloneThemeService.get(), languageId, compile(languageId, languageDef));\r\n };\r\n if (isThenable(languageDef)) {\r\n return modes.TokenizationRegistry.registerPromise(languageId, languageDef.then(languageDef => create(languageDef)));\r\n }\r\n return modes.TokenizationRegistry.register(languageId, create(languageDef));\r\n}\r\n/**\r\n * Register a reference provider (used by e.g. reference search).\r\n */\r\nexport function registerReferenceProvider(languageId, provider) {\r\n return modes.ReferenceProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a rename provider (used by e.g. rename symbol).\r\n */\r\nexport function registerRenameProvider(languageId, provider) {\r\n return modes.RenameProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a signature help provider (used by e.g. parameter hints).\r\n */\r\nexport function registerSignatureHelpProvider(languageId, provider) {\r\n return modes.SignatureHelpProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a hover provider (used by e.g. editor hover).\r\n */\r\nexport function registerHoverProvider(languageId, provider) {\r\n return modes.HoverProviderRegistry.register(languageId, {\r\n provideHover: (model, position, token) => {\r\n let word = model.getWordAtPosition(position);\r\n return Promise.resolve(provider.provideHover(model, position, token)).then((value) => {\r\n if (!value) {\r\n return undefined;\r\n }\r\n if (!value.range && word) {\r\n value.range = new Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn);\r\n }\r\n if (!value.range) {\r\n value.range = new Range(position.lineNumber, position.column, position.lineNumber, position.column);\r\n }\r\n return value;\r\n });\r\n }\r\n });\r\n}\r\n/**\r\n * Register a document symbol provider (used by e.g. outline).\r\n */\r\nexport function registerDocumentSymbolProvider(languageId, provider) {\r\n return modes.DocumentSymbolProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document highlight provider (used by e.g. highlight occurrences).\r\n */\r\nexport function registerDocumentHighlightProvider(languageId, provider) {\r\n return modes.DocumentHighlightProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register an on type rename provider.\r\n */\r\nexport function registerOnTypeRenameProvider(languageId, provider) {\r\n return modes.OnTypeRenameProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a definition provider (used by e.g. go to definition).\r\n */\r\nexport function registerDefinitionProvider(languageId, provider) {\r\n return modes.DefinitionProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a implementation provider (used by e.g. go to implementation).\r\n */\r\nexport function registerImplementationProvider(languageId, provider) {\r\n return modes.ImplementationProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a type definition provider (used by e.g. go to type definition).\r\n */\r\nexport function registerTypeDefinitionProvider(languageId, provider) {\r\n return modes.TypeDefinitionProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a code lens provider (used by e.g. inline code lenses).\r\n */\r\nexport function registerCodeLensProvider(languageId, provider) {\r\n return modes.CodeLensProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a code action provider (used by e.g. quick fix).\r\n */\r\nexport function registerCodeActionProvider(languageId, provider) {\r\n return modes.CodeActionProviderRegistry.register(languageId, {\r\n provideCodeActions: (model, range, context, token) => {\r\n let markers = StaticServices.markerService.get().read({ resource: model.uri }).filter(m => {\r\n return Range.areIntersectingOrTouching(m, range);\r\n });\r\n return provider.provideCodeActions(model, range, { markers, only: context.only }, token);\r\n }\r\n });\r\n}\r\n/**\r\n * Register a formatter that can handle only entire models.\r\n */\r\nexport function registerDocumentFormattingEditProvider(languageId, provider) {\r\n return modes.DocumentFormattingEditProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a formatter that can handle a range inside a model.\r\n */\r\nexport function registerDocumentRangeFormattingEditProvider(languageId, provider) {\r\n return modes.DocumentRangeFormattingEditProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a formatter than can do formatting as the user types.\r\n */\r\nexport function registerOnTypeFormattingEditProvider(languageId, provider) {\r\n return modes.OnTypeFormattingEditProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a link provider that can find links in text.\r\n */\r\nexport function registerLinkProvider(languageId, provider) {\r\n return modes.LinkProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a completion item provider (use by e.g. suggestions).\r\n */\r\nexport function registerCompletionItemProvider(languageId, provider) {\r\n return modes.CompletionProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document color provider (used by Color Picker, Color Decorator).\r\n */\r\nexport function registerColorProvider(languageId, provider) {\r\n return modes.ColorProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a folding range provider\r\n */\r\nexport function registerFoldingRangeProvider(languageId, provider) {\r\n return modes.FoldingRangeProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a declaration provider\r\n */\r\nexport function registerDeclarationProvider(languageId, provider) {\r\n return modes.DeclarationProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a selection range provider\r\n */\r\nexport function registerSelectionRangeProvider(languageId, provider) {\r\n return modes.SelectionRangeRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document semantic tokens provider\r\n */\r\nexport function registerDocumentSemanticTokensProvider(languageId, provider) {\r\n return modes.DocumentSemanticTokensProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * Register a document range semantic tokens provider\r\n */\r\nexport function registerDocumentRangeSemanticTokensProvider(languageId, provider) {\r\n return modes.DocumentRangeSemanticTokensProviderRegistry.register(languageId, provider);\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport function createMonacoLanguagesAPI() {\r\n return {\r\n register: register,\r\n getLanguages: getLanguages,\r\n onLanguage: onLanguage,\r\n getEncodedLanguageId: getEncodedLanguageId,\r\n // provider methods\r\n setLanguageConfiguration: setLanguageConfiguration,\r\n setTokensProvider: setTokensProvider,\r\n setMonarchTokensProvider: setMonarchTokensProvider,\r\n registerReferenceProvider: registerReferenceProvider,\r\n registerRenameProvider: registerRenameProvider,\r\n registerCompletionItemProvider: registerCompletionItemProvider,\r\n registerSignatureHelpProvider: registerSignatureHelpProvider,\r\n registerHoverProvider: registerHoverProvider,\r\n registerDocumentSymbolProvider: registerDocumentSymbolProvider,\r\n registerDocumentHighlightProvider: registerDocumentHighlightProvider,\r\n registerOnTypeRenameProvider: registerOnTypeRenameProvider,\r\n registerDefinitionProvider: registerDefinitionProvider,\r\n registerImplementationProvider: registerImplementationProvider,\r\n registerTypeDefinitionProvider: registerTypeDefinitionProvider,\r\n registerCodeLensProvider: registerCodeLensProvider,\r\n registerCodeActionProvider: registerCodeActionProvider,\r\n registerDocumentFormattingEditProvider: registerDocumentFormattingEditProvider,\r\n registerDocumentRangeFormattingEditProvider: registerDocumentRangeFormattingEditProvider,\r\n registerOnTypeFormattingEditProvider: registerOnTypeFormattingEditProvider,\r\n registerLinkProvider: registerLinkProvider,\r\n registerColorProvider: registerColorProvider,\r\n registerFoldingRangeProvider: registerFoldingRangeProvider,\r\n registerDeclarationProvider: registerDeclarationProvider,\r\n registerSelectionRangeProvider: registerSelectionRangeProvider,\r\n registerDocumentSemanticTokensProvider: registerDocumentSemanticTokensProvider,\r\n registerDocumentRangeSemanticTokensProvider: registerDocumentRangeSemanticTokensProvider,\r\n // enums\r\n DocumentHighlightKind: standaloneEnums.DocumentHighlightKind,\r\n CompletionItemKind: standaloneEnums.CompletionItemKind,\r\n CompletionItemTag: standaloneEnums.CompletionItemTag,\r\n CompletionItemInsertTextRule: standaloneEnums.CompletionItemInsertTextRule,\r\n SymbolKind: standaloneEnums.SymbolKind,\r\n SymbolTag: standaloneEnums.SymbolTag,\r\n IndentAction: standaloneEnums.IndentAction,\r\n CompletionTriggerKind: standaloneEnums.CompletionTriggerKind,\r\n SignatureHelpTriggerKind: standaloneEnums.SignatureHelpTriggerKind,\r\n // classes\r\n FoldingRangeKind: modes.FoldingRangeKind,\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { IBulkEditService } from '../../browser/services/bulkEditService.js';\r\nimport { ICodeEditorService } from '../../browser/services/codeEditorService.js';\r\nimport { IEditorWorkerService } from '../../common/services/editorWorkerService.js';\r\nimport { EditorWorkerServiceImpl } from '../../common/services/editorWorkerServiceImpl.js';\r\nimport { IModeService } from '../../common/services/modeService.js';\r\nimport { ModeServiceImpl } from '../../common/services/modeServiceImpl.js';\r\nimport { IModelService } from '../../common/services/modelService.js';\r\nimport { ModelServiceImpl } from '../../common/services/modelServiceImpl.js';\r\nimport { ITextResourceConfigurationService, ITextResourcePropertiesService } from '../../common/services/textResourceConfigurationService.js';\r\nimport { SimpleBulkEditService, SimpleConfigurationService, SimpleDialogService, SimpleNotificationService, SimpleEditorProgressService, SimpleResourceConfigurationService, SimpleResourcePropertiesService, SimpleUriLabelService, SimpleWorkspaceContextService, StandaloneCommandService, StandaloneKeybindingService, StandaloneTelemetryService, SimpleLayoutService } from './simpleServices.js';\r\nimport { StandaloneCodeEditorServiceImpl } from './standaloneCodeServiceImpl.js';\r\nimport { StandaloneThemeServiceImpl } from './standaloneThemeServiceImpl.js';\r\nimport { IStandaloneThemeService } from '../common/standaloneThemeService.js';\r\nimport { IMenuService } from '../../../platform/actions/common/actions.js';\r\nimport { ICommandService } from '../../../platform/commands/common/commands.js';\r\nimport { IConfigurationService } from '../../../platform/configuration/common/configuration.js';\r\nimport { ContextKeyService } from '../../../platform/contextkey/browser/contextKeyService.js';\r\nimport { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';\r\nimport { ContextMenuService } from '../../../platform/contextview/browser/contextMenuService.js';\r\nimport { IContextMenuService, IContextViewService } from '../../../platform/contextview/browser/contextView.js';\r\nimport { ContextViewService } from '../../../platform/contextview/browser/contextViewService.js';\r\nimport { IDialogService } from '../../../platform/dialogs/common/dialogs.js';\r\nimport { IInstantiationService, createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nimport { InstantiationService } from '../../../platform/instantiation/common/instantiationService.js';\r\nimport { ServiceCollection } from '../../../platform/instantiation/common/serviceCollection.js';\r\nimport { IKeybindingService } from '../../../platform/keybinding/common/keybinding.js';\r\nimport { ILabelService } from '../../../platform/label/common/label.js';\r\nimport { IListService, ListService } from '../../../platform/list/browser/listService.js';\r\nimport { ConsoleLogService, ILogService } from '../../../platform/log/common/log.js';\r\nimport { MarkerService } from '../../../platform/markers/common/markerService.js';\r\nimport { IMarkerService } from '../../../platform/markers/common/markers.js';\r\nimport { INotificationService } from '../../../platform/notification/common/notification.js';\r\nimport { IEditorProgressService } from '../../../platform/progress/common/progress.js';\r\nimport { IStorageService, InMemoryStorageService } from '../../../platform/storage/common/storage.js';\r\nimport { ITelemetryService } from '../../../platform/telemetry/common/telemetry.js';\r\nimport { IThemeService } from '../../../platform/theme/common/themeService.js';\r\nimport { IWorkspaceContextService } from '../../../platform/workspace/common/workspace.js';\r\nimport { MenuService } from '../../../platform/actions/common/menuService.js';\r\nimport { IMarkerDecorationsService } from '../../common/services/markersDecorationService.js';\r\nimport { MarkerDecorationsService } from '../../common/services/markerDecorationsServiceImpl.js';\r\nimport { IAccessibilityService } from '../../../platform/accessibility/common/accessibility.js';\r\nimport { ILayoutService } from '../../../platform/layout/browser/layoutService.js';\r\nimport { getSingletonServiceDescriptors } from '../../../platform/instantiation/common/extensions.js';\r\nimport { AccessibilityService } from '../../../platform/accessibility/common/accessibilityService.js';\r\nimport { IClipboardService } from '../../../platform/clipboard/common/clipboardService.js';\r\nimport { BrowserClipboardService } from '../../../platform/clipboard/browser/clipboardService.js';\r\nimport { IUndoRedoService } from '../../../platform/undoRedo/common/undoRedo.js';\r\nimport { UndoRedoService } from '../../../platform/undoRedo/common/undoRedoService.js';\r\nimport { StandaloneQuickInputServiceImpl } from './quickInput/standaloneQuickInputServiceImpl.js';\r\nimport { IQuickInputService } from '../../../platform/quickinput/common/quickInput.js';\r\nimport { IStorageKeysSyncRegistryService, StorageKeysSyncRegistryService } from '../../../platform/userDataSync/common/storageKeys.js';\r\nexport var StaticServices;\r\n(function (StaticServices) {\r\n const _serviceCollection = new ServiceCollection();\r\n class LazyStaticService {\r\n constructor(serviceId, factory) {\r\n this._serviceId = serviceId;\r\n this._factory = factory;\r\n this._value = null;\r\n }\r\n get id() { return this._serviceId; }\r\n get(overrides) {\r\n if (!this._value) {\r\n if (overrides) {\r\n this._value = overrides[this._serviceId.toString()];\r\n }\r\n if (!this._value) {\r\n this._value = this._factory(overrides);\r\n }\r\n if (!this._value) {\r\n throw new Error('Service ' + this._serviceId + ' is missing!');\r\n }\r\n _serviceCollection.set(this._serviceId, this._value);\r\n }\r\n return this._value;\r\n }\r\n }\r\n StaticServices.LazyStaticService = LazyStaticService;\r\n let _all = [];\r\n function define(serviceId, factory) {\r\n let r = new LazyStaticService(serviceId, factory);\r\n _all.push(r);\r\n return r;\r\n }\r\n function init(overrides) {\r\n // Create a fresh service collection\r\n let result = new ServiceCollection();\r\n // make sure to add all services that use `registerSingleton`\r\n for (const [id, descriptor] of getSingletonServiceDescriptors()) {\r\n result.set(id, descriptor);\r\n }\r\n // Initialize the service collection with the overrides\r\n for (let serviceId in overrides) {\r\n if (overrides.hasOwnProperty(serviceId)) {\r\n result.set(createDecorator(serviceId), overrides[serviceId]);\r\n }\r\n }\r\n // Make sure the same static services are present in all service collections\r\n _all.forEach(service => result.set(service.id, service.get(overrides)));\r\n // Ensure the collection gets the correct instantiation service\r\n let instantiationService = new InstantiationService(result, true);\r\n result.set(IInstantiationService, instantiationService);\r\n return [result, instantiationService];\r\n }\r\n StaticServices.init = init;\r\n StaticServices.instantiationService = define(IInstantiationService, () => new InstantiationService(_serviceCollection, true));\r\n const configurationServiceImpl = new SimpleConfigurationService();\r\n StaticServices.configurationService = define(IConfigurationService, () => configurationServiceImpl);\r\n StaticServices.resourceConfigurationService = define(ITextResourceConfigurationService, () => new SimpleResourceConfigurationService(configurationServiceImpl));\r\n StaticServices.resourcePropertiesService = define(ITextResourcePropertiesService, () => new SimpleResourcePropertiesService(configurationServiceImpl));\r\n StaticServices.contextService = define(IWorkspaceContextService, () => new SimpleWorkspaceContextService());\r\n StaticServices.labelService = define(ILabelService, () => new SimpleUriLabelService());\r\n StaticServices.telemetryService = define(ITelemetryService, () => new StandaloneTelemetryService());\r\n StaticServices.dialogService = define(IDialogService, () => new SimpleDialogService());\r\n StaticServices.notificationService = define(INotificationService, () => new SimpleNotificationService());\r\n StaticServices.markerService = define(IMarkerService, () => new MarkerService());\r\n StaticServices.modeService = define(IModeService, (o) => new ModeServiceImpl());\r\n StaticServices.standaloneThemeService = define(IStandaloneThemeService, () => new StandaloneThemeServiceImpl());\r\n StaticServices.logService = define(ILogService, () => new ConsoleLogService());\r\n StaticServices.undoRedoService = define(IUndoRedoService, (o) => new UndoRedoService(StaticServices.dialogService.get(o), StaticServices.notificationService.get(o)));\r\n StaticServices.modelService = define(IModelService, (o) => new ModelServiceImpl(StaticServices.configurationService.get(o), StaticServices.resourcePropertiesService.get(o), StaticServices.standaloneThemeService.get(o), StaticServices.logService.get(o), StaticServices.undoRedoService.get(o)));\r\n StaticServices.markerDecorationsService = define(IMarkerDecorationsService, (o) => new MarkerDecorationsService(StaticServices.modelService.get(o), StaticServices.markerService.get(o)));\r\n StaticServices.codeEditorService = define(ICodeEditorService, (o) => new StandaloneCodeEditorServiceImpl(StaticServices.standaloneThemeService.get(o)));\r\n StaticServices.editorProgressService = define(IEditorProgressService, () => new SimpleEditorProgressService());\r\n StaticServices.storageService = define(IStorageService, () => new InMemoryStorageService());\r\n StaticServices.storageSyncService = define(IStorageKeysSyncRegistryService, () => new StorageKeysSyncRegistryService());\r\n StaticServices.editorWorkerService = define(IEditorWorkerService, (o) => new EditorWorkerServiceImpl(StaticServices.modelService.get(o), StaticServices.resourceConfigurationService.get(o), StaticServices.logService.get(o)));\r\n})(StaticServices || (StaticServices = {}));\r\nexport class DynamicStandaloneServices extends Disposable {\r\n constructor(domElement, overrides) {\r\n super();\r\n const [_serviceCollection, _instantiationService] = StaticServices.init(overrides);\r\n this._serviceCollection = _serviceCollection;\r\n this._instantiationService = _instantiationService;\r\n const configurationService = this.get(IConfigurationService);\r\n const notificationService = this.get(INotificationService);\r\n const telemetryService = this.get(ITelemetryService);\r\n const themeService = this.get(IThemeService);\r\n const logService = this.get(ILogService);\r\n let ensure = (serviceId, factory) => {\r\n let value = null;\r\n if (overrides) {\r\n value = overrides[serviceId.toString()];\r\n }\r\n if (!value) {\r\n value = factory();\r\n }\r\n this._serviceCollection.set(serviceId, value);\r\n return value;\r\n };\r\n let contextKeyService = ensure(IContextKeyService, () => this._register(new ContextKeyService(configurationService)));\r\n ensure(IAccessibilityService, () => new AccessibilityService(contextKeyService, configurationService));\r\n ensure(IListService, () => new ListService(themeService));\r\n let commandService = ensure(ICommandService, () => new StandaloneCommandService(this._instantiationService));\r\n let keybindingService = ensure(IKeybindingService, () => this._register(new StandaloneKeybindingService(contextKeyService, commandService, telemetryService, notificationService, logService, domElement)));\r\n let layoutService = ensure(ILayoutService, () => new SimpleLayoutService(StaticServices.codeEditorService.get(ICodeEditorService), domElement));\r\n ensure(IQuickInputService, () => new StandaloneQuickInputServiceImpl(_instantiationService, StaticServices.codeEditorService.get(ICodeEditorService)));\r\n let contextViewService = ensure(IContextViewService, () => this._register(new ContextViewService(layoutService)));\r\n ensure(IClipboardService, () => new BrowserClipboardService());\r\n ensure(IContextMenuService, () => {\r\n const contextMenuService = new ContextMenuService(telemetryService, notificationService, contextViewService, keybindingService, themeService);\r\n contextMenuService.configure({ blockMouse: false }); // we do not want that in the standalone editor\r\n return this._register(contextMenuService);\r\n });\r\n ensure(IMenuService, () => new MenuService(commandService));\r\n ensure(IBulkEditService, () => new SimpleBulkEditService(StaticServices.modelService.get(IModelService)));\r\n }\r\n get(serviceId) {\r\n let r = this._serviceCollection.get(serviceId);\r\n if (!r) {\r\n throw new Error('Missing service ' + serviceId);\r\n }\r\n return r;\r\n }\r\n set(serviceId, instance) {\r\n this._serviceCollection.set(serviceId, instance);\r\n }\r\n has(serviceId) {\r\n return this._serviceCollection.has(serviceId);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as dom from '../../../base/browser/dom.js';\r\nimport { Color } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { TokenizationRegistry, TokenMetadata } from '../../common/modes.js';\r\nimport { TokenTheme, generateTokensCSSForColorMap } from '../../common/modes/supports/tokenization.js';\r\nimport { hc_black, vs, vs_dark } from '../common/themes.js';\r\nimport { Registry } from '../../../platform/registry/common/platform.js';\r\nimport { Extensions } from '../../../platform/theme/common/colorRegistry.js';\r\nimport { Extensions as ThemingExtensions } from '../../../platform/theme/common/themeService.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { CodiconStyles } from '../../../base/browser/ui/codicons/codiconStyles.js';\r\nconst VS_THEME_NAME = 'vs';\r\nconst VS_DARK_THEME_NAME = 'vs-dark';\r\nconst HC_BLACK_THEME_NAME = 'hc-black';\r\nconst colorRegistry = Registry.as(Extensions.ColorContribution);\r\nconst themingRegistry = Registry.as(ThemingExtensions.ThemingContribution);\r\nclass StandaloneTheme {\r\n constructor(name, standaloneThemeData) {\r\n this.semanticHighlighting = false;\r\n this.themeData = standaloneThemeData;\r\n let base = standaloneThemeData.base;\r\n if (name.length > 0) {\r\n this.id = base + ' ' + name;\r\n this.themeName = name;\r\n }\r\n else {\r\n this.id = base;\r\n this.themeName = base;\r\n }\r\n this.colors = null;\r\n this.defaultColors = Object.create(null);\r\n this._tokenTheme = null;\r\n }\r\n get base() {\r\n return this.themeData.base;\r\n }\r\n notifyBaseUpdated() {\r\n if (this.themeData.inherit) {\r\n this.colors = null;\r\n this._tokenTheme = null;\r\n }\r\n }\r\n getColors() {\r\n if (!this.colors) {\r\n const colors = new Map();\r\n for (let id in this.themeData.colors) {\r\n colors.set(id, Color.fromHex(this.themeData.colors[id]));\r\n }\r\n if (this.themeData.inherit) {\r\n let baseData = getBuiltinRules(this.themeData.base);\r\n for (let id in baseData.colors) {\r\n if (!colors.has(id)) {\r\n colors.set(id, Color.fromHex(baseData.colors[id]));\r\n }\r\n }\r\n }\r\n this.colors = colors;\r\n }\r\n return this.colors;\r\n }\r\n getColor(colorId, useDefault) {\r\n const color = this.getColors().get(colorId);\r\n if (color) {\r\n return color;\r\n }\r\n if (useDefault !== false) {\r\n return this.getDefault(colorId);\r\n }\r\n return undefined;\r\n }\r\n getDefault(colorId) {\r\n let color = this.defaultColors[colorId];\r\n if (color) {\r\n return color;\r\n }\r\n color = colorRegistry.resolveDefaultColor(colorId, this);\r\n this.defaultColors[colorId] = color;\r\n return color;\r\n }\r\n defines(colorId) {\r\n return Object.prototype.hasOwnProperty.call(this.getColors(), colorId);\r\n }\r\n get type() {\r\n switch (this.base) {\r\n case VS_THEME_NAME: return 'light';\r\n case HC_BLACK_THEME_NAME: return 'hc';\r\n default: return 'dark';\r\n }\r\n }\r\n get tokenTheme() {\r\n if (!this._tokenTheme) {\r\n let rules = [];\r\n let encodedTokensColors = [];\r\n if (this.themeData.inherit) {\r\n let baseData = getBuiltinRules(this.themeData.base);\r\n rules = baseData.rules;\r\n if (baseData.encodedTokensColors) {\r\n encodedTokensColors = baseData.encodedTokensColors;\r\n }\r\n }\r\n rules = rules.concat(this.themeData.rules);\r\n if (this.themeData.encodedTokensColors) {\r\n encodedTokensColors = this.themeData.encodedTokensColors;\r\n }\r\n this._tokenTheme = TokenTheme.createFromRawTokenTheme(rules, encodedTokensColors);\r\n }\r\n return this._tokenTheme;\r\n }\r\n getTokenStyleMetadata(type, modifiers, modelLanguage) {\r\n // use theme rules match\r\n const style = this.tokenTheme._match([type].concat(modifiers).join('.'));\r\n const metadata = style.metadata;\r\n const foreground = TokenMetadata.getForeground(metadata);\r\n const fontStyle = TokenMetadata.getFontStyle(metadata);\r\n return {\r\n foreground: foreground,\r\n italic: Boolean(fontStyle & 1 /* Italic */),\r\n bold: Boolean(fontStyle & 2 /* Bold */),\r\n underline: Boolean(fontStyle & 4 /* Underline */)\r\n };\r\n }\r\n}\r\nfunction isBuiltinTheme(themeName) {\r\n return (themeName === VS_THEME_NAME\r\n || themeName === VS_DARK_THEME_NAME\r\n || themeName === HC_BLACK_THEME_NAME);\r\n}\r\nfunction getBuiltinRules(builtinTheme) {\r\n switch (builtinTheme) {\r\n case VS_THEME_NAME:\r\n return vs;\r\n case VS_DARK_THEME_NAME:\r\n return vs_dark;\r\n case HC_BLACK_THEME_NAME:\r\n return hc_black;\r\n }\r\n}\r\nfunction newBuiltInTheme(builtinTheme) {\r\n let themeData = getBuiltinRules(builtinTheme);\r\n return new StandaloneTheme(builtinTheme, themeData);\r\n}\r\nexport class StandaloneThemeServiceImpl extends Disposable {\r\n constructor() {\r\n super();\r\n this._onColorThemeChange = this._register(new Emitter());\r\n this.onDidColorThemeChange = this._onColorThemeChange.event;\r\n this._environment = Object.create(null);\r\n this._knownThemes = new Map();\r\n this._knownThemes.set(VS_THEME_NAME, newBuiltInTheme(VS_THEME_NAME));\r\n this._knownThemes.set(VS_DARK_THEME_NAME, newBuiltInTheme(VS_DARK_THEME_NAME));\r\n this._knownThemes.set(HC_BLACK_THEME_NAME, newBuiltInTheme(HC_BLACK_THEME_NAME));\r\n this._codiconCSS = CodiconStyles.getCSS();\r\n this._themeCSS = '';\r\n this._allCSS = `${this._codiconCSS}\\n${this._themeCSS}`;\r\n this._globalStyleElement = null;\r\n this._styleElements = [];\r\n this.setTheme(VS_THEME_NAME);\r\n CodiconStyles.onDidChange(() => {\r\n this._codiconCSS = CodiconStyles.getCSS();\r\n this._updateCSS();\r\n });\r\n }\r\n registerEditorContainer(domNode) {\r\n if (dom.isInShadowDOM(domNode)) {\r\n return this._registerShadowDomContainer(domNode);\r\n }\r\n return this._registerRegularEditorContainer();\r\n }\r\n _registerRegularEditorContainer() {\r\n if (!this._globalStyleElement) {\r\n this._globalStyleElement = dom.createStyleSheet();\r\n this._globalStyleElement.className = 'monaco-colors';\r\n this._globalStyleElement.innerHTML = this._allCSS;\r\n this._styleElements.push(this._globalStyleElement);\r\n }\r\n return Disposable.None;\r\n }\r\n _registerShadowDomContainer(domNode) {\r\n const styleElement = dom.createStyleSheet(domNode);\r\n styleElement.className = 'monaco-colors';\r\n styleElement.innerHTML = this._allCSS;\r\n this._styleElements.push(styleElement);\r\n return {\r\n dispose: () => {\r\n for (let i = 0; i < this._styleElements.length; i++) {\r\n if (this._styleElements[i] === styleElement) {\r\n this._styleElements.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n };\r\n }\r\n defineTheme(themeName, themeData) {\r\n if (!/^[a-z0-9\\-]+$/i.test(themeName)) {\r\n throw new Error('Illegal theme name!');\r\n }\r\n if (!isBuiltinTheme(themeData.base) && !isBuiltinTheme(themeName)) {\r\n throw new Error('Illegal theme base!');\r\n }\r\n // set or replace theme\r\n this._knownThemes.set(themeName, new StandaloneTheme(themeName, themeData));\r\n if (isBuiltinTheme(themeName)) {\r\n this._knownThemes.forEach(theme => {\r\n if (theme.base === themeName) {\r\n theme.notifyBaseUpdated();\r\n }\r\n });\r\n }\r\n if (this._theme && this._theme.themeName === themeName) {\r\n this.setTheme(themeName); // refresh theme\r\n }\r\n }\r\n getColorTheme() {\r\n return this._theme;\r\n }\r\n setTheme(themeName) {\r\n let theme;\r\n if (this._knownThemes.has(themeName)) {\r\n theme = this._knownThemes.get(themeName);\r\n }\r\n else {\r\n theme = this._knownThemes.get(VS_THEME_NAME);\r\n }\r\n if (this._theme === theme) {\r\n // Nothing to do\r\n return theme.id;\r\n }\r\n this._theme = theme;\r\n let cssRules = [];\r\n let hasRule = {};\r\n let ruleCollector = {\r\n addRule: (rule) => {\r\n if (!hasRule[rule]) {\r\n cssRules.push(rule);\r\n hasRule[rule] = true;\r\n }\r\n }\r\n };\r\n themingRegistry.getThemingParticipants().forEach(p => p(theme, ruleCollector, this._environment));\r\n let tokenTheme = theme.tokenTheme;\r\n let colorMap = tokenTheme.getColorMap();\r\n ruleCollector.addRule(generateTokensCSSForColorMap(colorMap));\r\n this._themeCSS = cssRules.join('\\n');\r\n this._updateCSS();\r\n TokenizationRegistry.setColorMap(colorMap);\r\n this._onColorThemeChange.fire(theme);\r\n return theme.id;\r\n }\r\n _updateCSS() {\r\n this._allCSS = `${this._codiconCSS}\\n${this._themeCSS}`;\r\n this._styleElements.forEach(styleElement => styleElement.innerHTML = this._allCSS);\r\n }\r\n getFileIconTheme() {\r\n return {\r\n hasFileIcons: false,\r\n hasFolderIcons: false,\r\n hidesExplorerArrows: false\r\n };\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { EditorAction, registerEditorAction } from '../../../browser/editorExtensions.js';\r\nimport { IStandaloneThemeService } from '../../common/standaloneThemeService.js';\r\nimport { ToggleHighContrastNLS } from '../../../common/standaloneStrings.js';\r\nclass ToggleHighContrast extends EditorAction {\r\n constructor() {\r\n super({\r\n id: 'editor.action.toggleHighContrast',\r\n label: ToggleHighContrastNLS.toggleHighContrast,\r\n alias: 'Toggle High Contrast Theme',\r\n precondition: undefined\r\n });\r\n this._originalThemeName = null;\r\n }\r\n run(accessor, editor) {\r\n const standaloneThemeService = accessor.get(IStandaloneThemeService);\r\n if (this._originalThemeName) {\r\n // We must toggle back to the integrator's theme\r\n standaloneThemeService.setTheme(this._originalThemeName);\r\n this._originalThemeName = null;\r\n }\r\n else {\r\n this._originalThemeName = standaloneThemeService.getColorTheme().themeName;\r\n standaloneThemeService.setTheme('hc-black');\r\n }\r\n }\r\n}\r\nregisterEditorAction(ToggleHighContrast);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFuzzyActionArr(what) {\r\n return (Array.isArray(what));\r\n}\r\nexport function isFuzzyAction(what) {\r\n return !isFuzzyActionArr(what);\r\n}\r\nexport function isString(what) {\r\n return (typeof what === 'string');\r\n}\r\nexport function isIAction(what) {\r\n return !isString(what);\r\n}\r\n// Small helper functions\r\n/**\r\n * Is a string null, undefined, or empty?\r\n */\r\nexport function empty(s) {\r\n return (s ? false : true);\r\n}\r\n/**\r\n * Puts a string to lower case if 'ignoreCase' is set.\r\n */\r\nexport function fixCase(lexer, str) {\r\n return (lexer.ignoreCase && str ? str.toLowerCase() : str);\r\n}\r\n/**\r\n * Ensures there are no bad characters in a CSS token class.\r\n */\r\nexport function sanitize(s) {\r\n return s.replace(/[&<>'\"_]/g, '-'); // used on all output token CSS classes\r\n}\r\n// Logging\r\n/**\r\n * Logs a message.\r\n */\r\nexport function log(lexer, msg) {\r\n console.log(`${lexer.languageId}: ${msg}`);\r\n}\r\n// Throwing errors\r\nexport function createError(lexer, msg) {\r\n return new Error(`${lexer.languageId}: ${msg}`);\r\n}\r\n// Helper functions for rule finding and substitution\r\n/**\r\n * substituteMatches is used on lexer strings and can substitutes predefined patterns:\r\n * \t\t$$ => $\r\n * \t\t$# => id\r\n * \t\t$n => matched entry n\r\n * \t\t@attr => contents of lexer[attr]\r\n *\r\n * See documentation for more info\r\n */\r\nexport function substituteMatches(lexer, str, id, matches, state) {\r\n const re = /\\$((\\$)|(#)|(\\d\\d?)|[sS](\\d\\d?)|@(\\w+))/g;\r\n let stateMatches = null;\r\n return str.replace(re, function (full, sub, dollar, hash, n, s, attr, ofs, total) {\r\n if (!empty(dollar)) {\r\n return '$'; // $$\r\n }\r\n if (!empty(hash)) {\r\n return fixCase(lexer, id); // default $#\r\n }\r\n if (!empty(n) && n < matches.length) {\r\n return fixCase(lexer, matches[n]); // $n\r\n }\r\n if (!empty(attr) && lexer && typeof (lexer[attr]) === 'string') {\r\n return lexer[attr]; //@attribute\r\n }\r\n if (stateMatches === null) { // split state on demand\r\n stateMatches = state.split('.');\r\n stateMatches.unshift(state);\r\n }\r\n if (!empty(s) && s < stateMatches.length) {\r\n return fixCase(lexer, stateMatches[s]); //$Sn\r\n }\r\n return '';\r\n });\r\n}\r\n/**\r\n * Find the tokenizer rules for a specific state (i.e. next action)\r\n */\r\nexport function findRules(lexer, inState) {\r\n let state = inState;\r\n while (state && state.length > 0) {\r\n const rules = lexer.tokenizer[state];\r\n if (rules) {\r\n return rules;\r\n }\r\n const idx = state.lastIndexOf('.');\r\n if (idx < 0) {\r\n state = null; // no further parent\r\n }\r\n else {\r\n state = state.substr(0, idx);\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Is a certain state defined? In contrast to 'findRules' this works on a ILexerMin.\r\n * This is used during compilation where we may know the defined states\r\n * but not yet whether the corresponding rules are correct.\r\n */\r\nexport function stateExists(lexer, inState) {\r\n let state = inState;\r\n while (state && state.length > 0) {\r\n const exist = lexer.stateNames[state];\r\n if (exist) {\r\n return true;\r\n }\r\n const idx = state.lastIndexOf('.');\r\n if (idx < 0) {\r\n state = null; // no further parent\r\n }\r\n else {\r\n state = state.substr(0, idx);\r\n }\r\n }\r\n return false;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/*\r\n * This module only exports 'compile' which compiles a JSON language definition\r\n * into a typed and checked ILexer definition.\r\n */\r\nimport * as monarchCommon from './monarchCommon.js';\r\n/*\r\n * Type helpers\r\n *\r\n * Note: this is just for sanity checks on the JSON description which is\r\n * helpful for the programmer. No checks are done anymore once the lexer is\r\n * already 'compiled and checked'.\r\n *\r\n */\r\nfunction isArrayOf(elemType, obj) {\r\n if (!obj) {\r\n return false;\r\n }\r\n if (!(Array.isArray(obj))) {\r\n return false;\r\n }\r\n for (const el of obj) {\r\n if (!(elemType(el))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction bool(prop, defValue) {\r\n if (typeof prop === 'boolean') {\r\n return prop;\r\n }\r\n return defValue;\r\n}\r\nfunction string(prop, defValue) {\r\n if (typeof (prop) === 'string') {\r\n return prop;\r\n }\r\n return defValue;\r\n}\r\nfunction arrayToHash(array) {\r\n const result = {};\r\n for (const e of array) {\r\n result[e] = true;\r\n }\r\n return result;\r\n}\r\nfunction createKeywordMatcher(arr, caseInsensitive = false) {\r\n if (caseInsensitive) {\r\n arr = arr.map(function (x) { return x.toLowerCase(); });\r\n }\r\n const hash = arrayToHash(arr);\r\n if (caseInsensitive) {\r\n return function (word) {\r\n return hash[word.toLowerCase()] !== undefined && hash.hasOwnProperty(word.toLowerCase());\r\n };\r\n }\r\n else {\r\n return function (word) {\r\n return hash[word] !== undefined && hash.hasOwnProperty(word);\r\n };\r\n }\r\n}\r\n// Lexer helpers\r\n/**\r\n * Compiles a regular expression string, adding the 'i' flag if 'ignoreCase' is set, and the 'u' flag if 'unicode' is set.\r\n * Also replaces @\\w+ or sequences with the content of the specified attribute\r\n */\r\nfunction compileRegExp(lexer, str) {\r\n let n = 0;\r\n while (str.indexOf('@') >= 0 && n < 5) { // at most 5 expansions\r\n n++;\r\n str = str.replace(/@(\\w+)/g, function (s, attr) {\r\n let sub = '';\r\n if (typeof (lexer[attr]) === 'string') {\r\n sub = lexer[attr];\r\n }\r\n else if (lexer[attr] && lexer[attr] instanceof RegExp) {\r\n sub = lexer[attr].source;\r\n }\r\n else {\r\n if (lexer[attr] === undefined) {\r\n throw monarchCommon.createError(lexer, 'language definition does not contain attribute \\'' + attr + '\\', used at: ' + str);\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'attribute reference \\'' + attr + '\\' must be a string, used at: ' + str);\r\n }\r\n }\r\n return (monarchCommon.empty(sub) ? '' : '(?:' + sub + ')');\r\n });\r\n }\r\n let flags = (lexer.ignoreCase ? 'i' : '') + (lexer.unicode ? 'u' : '');\r\n return new RegExp(str, flags);\r\n}\r\n/**\r\n * Compiles guard functions for case matches.\r\n * This compiles 'cases' attributes into efficient match functions.\r\n *\r\n */\r\nfunction selectScrutinee(id, matches, state, num) {\r\n if (num < 0) {\r\n return id;\r\n }\r\n if (num < matches.length) {\r\n return matches[num];\r\n }\r\n if (num >= 100) {\r\n num = num - 100;\r\n let parts = state.split('.');\r\n parts.unshift(state);\r\n if (num < parts.length) {\r\n return parts[num];\r\n }\r\n }\r\n return null;\r\n}\r\nfunction createGuard(lexer, ruleName, tkey, val) {\r\n // get the scrutinee and pattern\r\n let scrut = -1; // -1: $!, 0-99: $n, 100+n: $Sn\r\n let oppat = tkey;\r\n let matches = tkey.match(/^\\$(([sS]?)(\\d\\d?)|#)(.*)$/);\r\n if (matches) {\r\n if (matches[3]) { // if digits\r\n scrut = parseInt(matches[3]);\r\n if (matches[2]) {\r\n scrut = scrut + 100; // if [sS] present\r\n }\r\n }\r\n oppat = matches[4];\r\n }\r\n // get operator\r\n let op = '~';\r\n let pat = oppat;\r\n if (!oppat || oppat.length === 0) {\r\n op = '!=';\r\n pat = '';\r\n }\r\n else if (/^\\w*$/.test(pat)) { // just a word\r\n op = '==';\r\n }\r\n else {\r\n matches = oppat.match(/^(@|!@|~|!~|==|!=)(.*)$/);\r\n if (matches) {\r\n op = matches[1];\r\n pat = matches[2];\r\n }\r\n }\r\n // set the tester function\r\n let tester;\r\n // special case a regexp that matches just words\r\n if ((op === '~' || op === '!~') && /^(\\w|\\|)*$/.test(pat)) {\r\n let inWords = createKeywordMatcher(pat.split('|'), lexer.ignoreCase);\r\n tester = function (s) { return (op === '~' ? inWords(s) : !inWords(s)); };\r\n }\r\n else if (op === '@' || op === '!@') {\r\n let words = lexer[pat];\r\n if (!words) {\r\n throw monarchCommon.createError(lexer, 'the @ match target \\'' + pat + '\\' is not defined, in rule: ' + ruleName);\r\n }\r\n if (!(isArrayOf(function (elem) { return (typeof (elem) === 'string'); }, words))) {\r\n throw monarchCommon.createError(lexer, 'the @ match target \\'' + pat + '\\' must be an array of strings, in rule: ' + ruleName);\r\n }\r\n let inWords = createKeywordMatcher(words, lexer.ignoreCase);\r\n tester = function (s) { return (op === '@' ? inWords(s) : !inWords(s)); };\r\n }\r\n else if (op === '~' || op === '!~') {\r\n if (pat.indexOf('$') < 0) {\r\n // precompile regular expression\r\n let re = compileRegExp(lexer, '^' + pat + '$');\r\n tester = function (s) { return (op === '~' ? re.test(s) : !re.test(s)); };\r\n }\r\n else {\r\n tester = function (s, id, matches, state) {\r\n let re = compileRegExp(lexer, '^' + monarchCommon.substituteMatches(lexer, pat, id, matches, state) + '$');\r\n return re.test(s);\r\n };\r\n }\r\n }\r\n else { // if (op==='==' || op==='!=') {\r\n if (pat.indexOf('$') < 0) {\r\n let patx = monarchCommon.fixCase(lexer, pat);\r\n tester = function (s) { return (op === '==' ? s === patx : s !== patx); };\r\n }\r\n else {\r\n let patx = monarchCommon.fixCase(lexer, pat);\r\n tester = function (s, id, matches, state, eos) {\r\n let patexp = monarchCommon.substituteMatches(lexer, patx, id, matches, state);\r\n return (op === '==' ? s === patexp : s !== patexp);\r\n };\r\n }\r\n }\r\n // return the branch object\r\n if (scrut === -1) {\r\n return {\r\n name: tkey, value: val, test: function (id, matches, state, eos) {\r\n return tester(id, id, matches, state, eos);\r\n }\r\n };\r\n }\r\n else {\r\n return {\r\n name: tkey, value: val, test: function (id, matches, state, eos) {\r\n let scrutinee = selectScrutinee(id, matches, state, scrut);\r\n return tester(!scrutinee ? '' : scrutinee, id, matches, state, eos);\r\n }\r\n };\r\n }\r\n}\r\n/**\r\n * Compiles an action: i.e. optimize regular expressions and case matches\r\n * and do many sanity checks.\r\n *\r\n * This is called only during compilation but if the lexer definition\r\n * contains user functions as actions (which is usually not allowed), then this\r\n * may be called during lexing. It is important therefore to compile common cases efficiently\r\n */\r\nfunction compileAction(lexer, ruleName, action) {\r\n if (!action) {\r\n return { token: '' };\r\n }\r\n else if (typeof (action) === 'string') {\r\n return action; // { token: action };\r\n }\r\n else if (action.token || action.token === '') {\r\n if (typeof (action.token) !== 'string') {\r\n throw monarchCommon.createError(lexer, 'a \\'token\\' attribute must be of type string, in rule: ' + ruleName);\r\n }\r\n else {\r\n // only copy specific typed fields (only happens once during compile Lexer)\r\n let newAction = { token: action.token };\r\n if (action.token.indexOf('$') >= 0) {\r\n newAction.tokenSubst = true;\r\n }\r\n if (typeof (action.bracket) === 'string') {\r\n if (action.bracket === '@open') {\r\n newAction.bracket = 1 /* Open */;\r\n }\r\n else if (action.bracket === '@close') {\r\n newAction.bracket = -1 /* Close */;\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'a \\'bracket\\' attribute must be either \\'@open\\' or \\'@close\\', in rule: ' + ruleName);\r\n }\r\n }\r\n if (action.next) {\r\n if (typeof (action.next) !== 'string') {\r\n throw monarchCommon.createError(lexer, 'the next state must be a string value in rule: ' + ruleName);\r\n }\r\n else {\r\n let next = action.next;\r\n if (!/^(@pop|@push|@popall)$/.test(next)) {\r\n if (next[0] === '@') {\r\n next = next.substr(1); // peel off starting @ sign\r\n }\r\n if (next.indexOf('$') < 0) { // no dollar substitution, we can check if the state exists\r\n if (!monarchCommon.stateExists(lexer, monarchCommon.substituteMatches(lexer, next, '', [], ''))) {\r\n throw monarchCommon.createError(lexer, 'the next state \\'' + action.next + '\\' is not defined in rule: ' + ruleName);\r\n }\r\n }\r\n }\r\n newAction.next = next;\r\n }\r\n }\r\n if (typeof (action.goBack) === 'number') {\r\n newAction.goBack = action.goBack;\r\n }\r\n if (typeof (action.switchTo) === 'string') {\r\n newAction.switchTo = action.switchTo;\r\n }\r\n if (typeof (action.log) === 'string') {\r\n newAction.log = action.log;\r\n }\r\n if (typeof (action.nextEmbedded) === 'string') {\r\n newAction.nextEmbedded = action.nextEmbedded;\r\n lexer.usesEmbedded = true;\r\n }\r\n return newAction;\r\n }\r\n }\r\n else if (Array.isArray(action)) {\r\n let results = [];\r\n for (let i = 0, len = action.length; i < len; i++) {\r\n results[i] = compileAction(lexer, ruleName, action[i]);\r\n }\r\n return { group: results };\r\n }\r\n else if (action.cases) {\r\n // build an array of test cases\r\n let cases = [];\r\n // for each case, push a test function and result value\r\n for (let tkey in action.cases) {\r\n if (action.cases.hasOwnProperty(tkey)) {\r\n const val = compileAction(lexer, ruleName, action.cases[tkey]);\r\n // what kind of case\r\n if (tkey === '@default' || tkey === '@' || tkey === '') {\r\n cases.push({ test: undefined, value: val, name: tkey });\r\n }\r\n else if (tkey === '@eos') {\r\n cases.push({ test: function (id, matches, state, eos) { return eos; }, value: val, name: tkey });\r\n }\r\n else {\r\n cases.push(createGuard(lexer, ruleName, tkey, val)); // call separate function to avoid local variable capture\r\n }\r\n }\r\n }\r\n // create a matching function\r\n const def = lexer.defaultToken;\r\n return {\r\n test: function (id, matches, state, eos) {\r\n for (const _case of cases) {\r\n const didmatch = (!_case.test || _case.test(id, matches, state, eos));\r\n if (didmatch) {\r\n return _case.value;\r\n }\r\n }\r\n return def;\r\n }\r\n };\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'an action must be a string, an object with a \\'token\\' or \\'cases\\' attribute, or an array of actions; in rule: ' + ruleName);\r\n }\r\n}\r\n/**\r\n * Helper class for creating matching rules\r\n */\r\nclass Rule {\r\n constructor(name) {\r\n this.regex = new RegExp('');\r\n this.action = { token: '' };\r\n this.matchOnlyAtLineStart = false;\r\n this.name = '';\r\n this.name = name;\r\n }\r\n setRegex(lexer, re) {\r\n let sregex;\r\n if (typeof (re) === 'string') {\r\n sregex = re;\r\n }\r\n else if (re instanceof RegExp) {\r\n sregex = re.source;\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'rules must start with a match string or regular expression: ' + this.name);\r\n }\r\n this.matchOnlyAtLineStart = (sregex.length > 0 && sregex[0] === '^');\r\n this.name = this.name + ': ' + sregex;\r\n this.regex = compileRegExp(lexer, '^(?:' + (this.matchOnlyAtLineStart ? sregex.substr(1) : sregex) + ')');\r\n }\r\n setAction(lexer, act) {\r\n this.action = compileAction(lexer, this.name, act);\r\n }\r\n}\r\n/**\r\n * Compiles a json description function into json where all regular expressions,\r\n * case matches etc, are compiled and all include rules are expanded.\r\n * We also compile the bracket definitions, supply defaults, and do many sanity checks.\r\n * If the 'jsonStrict' parameter is 'false', we allow at certain locations\r\n * regular expression objects and functions that get called during lexing.\r\n * (Currently we have no samples that need this so perhaps we should always have\r\n * jsonStrict to true).\r\n */\r\nexport function compile(languageId, json) {\r\n if (!json || typeof (json) !== 'object') {\r\n throw new Error('Monarch: expecting a language definition object');\r\n }\r\n // Create our lexer\r\n let lexer = {};\r\n lexer.languageId = languageId;\r\n lexer.noThrow = false; // raise exceptions during compilation\r\n lexer.maxStack = 100;\r\n // Set standard fields: be defensive about types\r\n lexer.start = (typeof json.start === 'string' ? json.start : null);\r\n lexer.ignoreCase = bool(json.ignoreCase, false);\r\n lexer.unicode = bool(json.unicode, false);\r\n lexer.tokenPostfix = string(json.tokenPostfix, '.' + lexer.languageId);\r\n lexer.defaultToken = string(json.defaultToken, 'source');\r\n lexer.usesEmbedded = false; // becomes true if we find a nextEmbedded action\r\n // For calling compileAction later on\r\n let lexerMin = json;\r\n lexerMin.languageId = languageId;\r\n lexerMin.ignoreCase = lexer.ignoreCase;\r\n lexerMin.unicode = lexer.unicode;\r\n lexerMin.noThrow = lexer.noThrow;\r\n lexerMin.usesEmbedded = lexer.usesEmbedded;\r\n lexerMin.stateNames = json.tokenizer;\r\n lexerMin.defaultToken = lexer.defaultToken;\r\n // Compile an array of rules into newrules where RegExp objects are created.\r\n function addRules(state, newrules, rules) {\r\n for (const rule of rules) {\r\n let include = rule.include;\r\n if (include) {\r\n if (typeof (include) !== 'string') {\r\n throw monarchCommon.createError(lexer, 'an \\'include\\' attribute must be a string at: ' + state);\r\n }\r\n if (include[0] === '@') {\r\n include = include.substr(1); // peel off starting @\r\n }\r\n if (!json.tokenizer[include]) {\r\n throw monarchCommon.createError(lexer, 'include target \\'' + include + '\\' is not defined at: ' + state);\r\n }\r\n addRules(state + '.' + include, newrules, json.tokenizer[include]);\r\n }\r\n else {\r\n const newrule = new Rule(state);\r\n // Set up new rule attributes\r\n if (Array.isArray(rule) && rule.length >= 1 && rule.length <= 3) {\r\n newrule.setRegex(lexerMin, rule[0]);\r\n if (rule.length >= 3) {\r\n if (typeof (rule[1]) === 'string') {\r\n newrule.setAction(lexerMin, { token: rule[1], next: rule[2] });\r\n }\r\n else if (typeof (rule[1]) === 'object') {\r\n const rule1 = rule[1];\r\n rule1.next = rule[2];\r\n newrule.setAction(lexerMin, rule1);\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'a next state as the last element of a rule can only be given if the action is either an object or a string, at: ' + state);\r\n }\r\n }\r\n else {\r\n newrule.setAction(lexerMin, rule[1]);\r\n }\r\n }\r\n else {\r\n if (!rule.regex) {\r\n throw monarchCommon.createError(lexer, 'a rule must either be an array, or an object with a \\'regex\\' or \\'include\\' field at: ' + state);\r\n }\r\n if (rule.name) {\r\n if (typeof rule.name === 'string') {\r\n newrule.name = rule.name;\r\n }\r\n }\r\n if (rule.matchOnlyAtStart) {\r\n newrule.matchOnlyAtLineStart = bool(rule.matchOnlyAtLineStart, false);\r\n }\r\n newrule.setRegex(lexerMin, rule.regex);\r\n newrule.setAction(lexerMin, rule.action);\r\n }\r\n newrules.push(newrule);\r\n }\r\n }\r\n }\r\n // compile the tokenizer rules\r\n if (!json.tokenizer || typeof (json.tokenizer) !== 'object') {\r\n throw monarchCommon.createError(lexer, 'a language definition must define the \\'tokenizer\\' attribute as an object');\r\n }\r\n lexer.tokenizer = [];\r\n for (let key in json.tokenizer) {\r\n if (json.tokenizer.hasOwnProperty(key)) {\r\n if (!lexer.start) {\r\n lexer.start = key;\r\n }\r\n const rules = json.tokenizer[key];\r\n lexer.tokenizer[key] = new Array();\r\n addRules('tokenizer.' + key, lexer.tokenizer[key], rules);\r\n }\r\n }\r\n lexer.usesEmbedded = lexerMin.usesEmbedded; // can be set during compileAction\r\n // Set simple brackets\r\n if (json.brackets) {\r\n if (!(Array.isArray(json.brackets))) {\r\n throw monarchCommon.createError(lexer, 'the \\'brackets\\' attribute must be defined as an array');\r\n }\r\n }\r\n else {\r\n json.brackets = [\r\n { open: '{', close: '}', token: 'delimiter.curly' },\r\n { open: '[', close: ']', token: 'delimiter.square' },\r\n { open: '(', close: ')', token: 'delimiter.parenthesis' },\r\n { open: '<', close: '>', token: 'delimiter.angle' }\r\n ];\r\n }\r\n let brackets = [];\r\n for (let el of json.brackets) {\r\n let desc = el;\r\n if (desc && Array.isArray(desc) && desc.length === 3) {\r\n desc = { token: desc[2], open: desc[0], close: desc[1] };\r\n }\r\n if (desc.open === desc.close) {\r\n throw monarchCommon.createError(lexer, 'open and close brackets in a \\'brackets\\' attribute must be different: ' + desc.open +\r\n '\\n hint: use the \\'bracket\\' attribute if matching on equal brackets is required.');\r\n }\r\n if (typeof desc.open === 'string' && typeof desc.token === 'string' && typeof desc.close === 'string') {\r\n brackets.push({\r\n token: desc.token + lexer.tokenPostfix,\r\n open: monarchCommon.fixCase(lexer, desc.open),\r\n close: monarchCommon.fixCase(lexer, desc.close)\r\n });\r\n }\r\n else {\r\n throw monarchCommon.createError(lexer, 'every element in the \\'brackets\\' array must be a \\'{open,close,token}\\' object or array');\r\n }\r\n }\r\n lexer.brackets = brackets;\r\n // Disable throw so the syntax highlighter goes, no matter what\r\n lexer.noThrow = true;\r\n return lexer;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Token, TokenizationResult, TokenizationResult2 } from '../../../common/core/token.js';\r\nimport * as modes from '../../../common/modes.js';\r\nimport { NULL_MODE_ID, NULL_STATE } from '../../../common/modes/nullMode.js';\r\nimport * as monarchCommon from './monarchCommon.js';\r\nconst CACHE_STACK_DEPTH = 5;\r\n/**\r\n * Reuse the same stack elements up to a certain depth.\r\n */\r\nclass MonarchStackElementFactory {\r\n constructor(maxCacheDepth) {\r\n this._maxCacheDepth = maxCacheDepth;\r\n this._entries = Object.create(null);\r\n }\r\n static create(parent, state) {\r\n return this._INSTANCE.create(parent, state);\r\n }\r\n create(parent, state) {\r\n if (parent !== null && parent.depth >= this._maxCacheDepth) {\r\n // no caching above a certain depth\r\n return new MonarchStackElement(parent, state);\r\n }\r\n let stackElementId = MonarchStackElement.getStackElementId(parent);\r\n if (stackElementId.length > 0) {\r\n stackElementId += '|';\r\n }\r\n stackElementId += state;\r\n let result = this._entries[stackElementId];\r\n if (result) {\r\n return result;\r\n }\r\n result = new MonarchStackElement(parent, state);\r\n this._entries[stackElementId] = result;\r\n return result;\r\n }\r\n}\r\nMonarchStackElementFactory._INSTANCE = new MonarchStackElementFactory(CACHE_STACK_DEPTH);\r\nclass MonarchStackElement {\r\n constructor(parent, state) {\r\n this.parent = parent;\r\n this.state = state;\r\n this.depth = (this.parent ? this.parent.depth : 0) + 1;\r\n }\r\n static getStackElementId(element) {\r\n let result = '';\r\n while (element !== null) {\r\n if (result.length > 0) {\r\n result += '|';\r\n }\r\n result += element.state;\r\n element = element.parent;\r\n }\r\n return result;\r\n }\r\n static _equals(a, b) {\r\n while (a !== null && b !== null) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a.state !== b.state) {\r\n return false;\r\n }\r\n a = a.parent;\r\n b = b.parent;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n equals(other) {\r\n return MonarchStackElement._equals(this, other);\r\n }\r\n push(state) {\r\n return MonarchStackElementFactory.create(this, state);\r\n }\r\n pop() {\r\n return this.parent;\r\n }\r\n popall() {\r\n let result = this;\r\n while (result.parent) {\r\n result = result.parent;\r\n }\r\n return result;\r\n }\r\n switchTo(state) {\r\n return MonarchStackElementFactory.create(this.parent, state);\r\n }\r\n}\r\nclass EmbeddedModeData {\r\n constructor(modeId, state) {\r\n this.modeId = modeId;\r\n this.state = state;\r\n }\r\n equals(other) {\r\n return (this.modeId === other.modeId\r\n && this.state.equals(other.state));\r\n }\r\n clone() {\r\n let stateClone = this.state.clone();\r\n // save an object\r\n if (stateClone === this.state) {\r\n return this;\r\n }\r\n return new EmbeddedModeData(this.modeId, this.state);\r\n }\r\n}\r\n/**\r\n * Reuse the same line states up to a certain depth.\r\n */\r\nclass MonarchLineStateFactory {\r\n constructor(maxCacheDepth) {\r\n this._maxCacheDepth = maxCacheDepth;\r\n this._entries = Object.create(null);\r\n }\r\n static create(stack, embeddedModeData) {\r\n return this._INSTANCE.create(stack, embeddedModeData);\r\n }\r\n create(stack, embeddedModeData) {\r\n if (embeddedModeData !== null) {\r\n // no caching when embedding\r\n return new MonarchLineState(stack, embeddedModeData);\r\n }\r\n if (stack !== null && stack.depth >= this._maxCacheDepth) {\r\n // no caching above a certain depth\r\n return new MonarchLineState(stack, embeddedModeData);\r\n }\r\n let stackElementId = MonarchStackElement.getStackElementId(stack);\r\n let result = this._entries[stackElementId];\r\n if (result) {\r\n return result;\r\n }\r\n result = new MonarchLineState(stack, null);\r\n this._entries[stackElementId] = result;\r\n return result;\r\n }\r\n}\r\nMonarchLineStateFactory._INSTANCE = new MonarchLineStateFactory(CACHE_STACK_DEPTH);\r\nclass MonarchLineState {\r\n constructor(stack, embeddedModeData) {\r\n this.stack = stack;\r\n this.embeddedModeData = embeddedModeData;\r\n }\r\n clone() {\r\n let embeddedModeDataClone = this.embeddedModeData ? this.embeddedModeData.clone() : null;\r\n // save an object\r\n if (embeddedModeDataClone === this.embeddedModeData) {\r\n return this;\r\n }\r\n return MonarchLineStateFactory.create(this.stack, this.embeddedModeData);\r\n }\r\n equals(other) {\r\n if (!(other instanceof MonarchLineState)) {\r\n return false;\r\n }\r\n if (!this.stack.equals(other.stack)) {\r\n return false;\r\n }\r\n if (this.embeddedModeData === null && other.embeddedModeData === null) {\r\n return true;\r\n }\r\n if (this.embeddedModeData === null || other.embeddedModeData === null) {\r\n return false;\r\n }\r\n return this.embeddedModeData.equals(other.embeddedModeData);\r\n }\r\n}\r\nclass MonarchClassicTokensCollector {\r\n constructor() {\r\n this._tokens = [];\r\n this._language = null;\r\n this._lastTokenType = null;\r\n this._lastTokenLanguage = null;\r\n }\r\n enterMode(startOffset, modeId) {\r\n this._language = modeId;\r\n }\r\n emit(startOffset, type) {\r\n if (this._lastTokenType === type && this._lastTokenLanguage === this._language) {\r\n return;\r\n }\r\n this._lastTokenType = type;\r\n this._lastTokenLanguage = this._language;\r\n this._tokens.push(new Token(startOffset, type, this._language));\r\n }\r\n nestedModeTokenize(embeddedModeLine, embeddedModeData, offsetDelta) {\r\n const nestedModeId = embeddedModeData.modeId;\r\n const embeddedModeState = embeddedModeData.state;\r\n const nestedModeTokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (!nestedModeTokenizationSupport) {\r\n this.enterMode(offsetDelta, nestedModeId);\r\n this.emit(offsetDelta, '');\r\n return embeddedModeState;\r\n }\r\n let nestedResult = nestedModeTokenizationSupport.tokenize(embeddedModeLine, embeddedModeState, offsetDelta);\r\n this._tokens = this._tokens.concat(nestedResult.tokens);\r\n this._lastTokenType = null;\r\n this._lastTokenLanguage = null;\r\n this._language = null;\r\n return nestedResult.endState;\r\n }\r\n finalize(endState) {\r\n return new TokenizationResult(this._tokens, endState);\r\n }\r\n}\r\nclass MonarchModernTokensCollector {\r\n constructor(modeService, theme) {\r\n this._modeService = modeService;\r\n this._theme = theme;\r\n this._prependTokens = null;\r\n this._tokens = [];\r\n this._currentLanguageId = 0 /* Null */;\r\n this._lastTokenMetadata = 0;\r\n }\r\n enterMode(startOffset, modeId) {\r\n this._currentLanguageId = this._modeService.getLanguageIdentifier(modeId).id;\r\n }\r\n emit(startOffset, type) {\r\n let metadata = this._theme.match(this._currentLanguageId, type);\r\n if (this._lastTokenMetadata === metadata) {\r\n return;\r\n }\r\n this._lastTokenMetadata = metadata;\r\n this._tokens.push(startOffset);\r\n this._tokens.push(metadata);\r\n }\r\n static _merge(a, b, c) {\r\n let aLen = (a !== null ? a.length : 0);\r\n let bLen = b.length;\r\n let cLen = (c !== null ? c.length : 0);\r\n if (aLen === 0 && bLen === 0 && cLen === 0) {\r\n return new Uint32Array(0);\r\n }\r\n if (aLen === 0 && bLen === 0) {\r\n return c;\r\n }\r\n if (bLen === 0 && cLen === 0) {\r\n return a;\r\n }\r\n let result = new Uint32Array(aLen + bLen + cLen);\r\n if (a !== null) {\r\n result.set(a);\r\n }\r\n for (let i = 0; i < bLen; i++) {\r\n result[aLen + i] = b[i];\r\n }\r\n if (c !== null) {\r\n result.set(c, aLen + bLen);\r\n }\r\n return result;\r\n }\r\n nestedModeTokenize(embeddedModeLine, embeddedModeData, offsetDelta) {\r\n const nestedModeId = embeddedModeData.modeId;\r\n const embeddedModeState = embeddedModeData.state;\r\n const nestedModeTokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (!nestedModeTokenizationSupport) {\r\n this.enterMode(offsetDelta, nestedModeId);\r\n this.emit(offsetDelta, '');\r\n return embeddedModeState;\r\n }\r\n let nestedResult = nestedModeTokenizationSupport.tokenize2(embeddedModeLine, embeddedModeState, offsetDelta);\r\n this._prependTokens = MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, nestedResult.tokens);\r\n this._tokens = [];\r\n this._currentLanguageId = 0;\r\n this._lastTokenMetadata = 0;\r\n return nestedResult.endState;\r\n }\r\n finalize(endState) {\r\n return new TokenizationResult2(MonarchModernTokensCollector._merge(this._prependTokens, this._tokens, null), endState);\r\n }\r\n}\r\nexport class MonarchTokenizer {\r\n constructor(modeService, standaloneThemeService, modeId, lexer) {\r\n this._modeService = modeService;\r\n this._standaloneThemeService = standaloneThemeService;\r\n this._modeId = modeId;\r\n this._lexer = lexer;\r\n this._embeddedModes = Object.create(null);\r\n this.embeddedLoaded = Promise.resolve(undefined);\r\n // Set up listening for embedded modes\r\n let emitting = false;\r\n this._tokenizationRegistryListener = modes.TokenizationRegistry.onDidChange((e) => {\r\n if (emitting) {\r\n return;\r\n }\r\n let isOneOfMyEmbeddedModes = false;\r\n for (let i = 0, len = e.changedLanguages.length; i < len; i++) {\r\n let language = e.changedLanguages[i];\r\n if (this._embeddedModes[language]) {\r\n isOneOfMyEmbeddedModes = true;\r\n break;\r\n }\r\n }\r\n if (isOneOfMyEmbeddedModes) {\r\n emitting = true;\r\n modes.TokenizationRegistry.fire([this._modeId]);\r\n emitting = false;\r\n }\r\n });\r\n }\r\n dispose() {\r\n this._tokenizationRegistryListener.dispose();\r\n }\r\n getLoadStatus() {\r\n let promises = [];\r\n for (let nestedModeId in this._embeddedModes) {\r\n const tokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (tokenizationSupport) {\r\n // The nested mode is already loaded\r\n if (tokenizationSupport instanceof MonarchTokenizer) {\r\n const nestedModeStatus = tokenizationSupport.getLoadStatus();\r\n if (nestedModeStatus.loaded === false) {\r\n promises.push(nestedModeStatus.promise);\r\n }\r\n }\r\n continue;\r\n }\r\n const tokenizationSupportPromise = modes.TokenizationRegistry.getPromise(nestedModeId);\r\n if (tokenizationSupportPromise) {\r\n // The nested mode is in the process of being loaded\r\n promises.push(tokenizationSupportPromise);\r\n }\r\n }\r\n if (promises.length === 0) {\r\n return {\r\n loaded: true\r\n };\r\n }\r\n return {\r\n loaded: false,\r\n promise: Promise.all(promises).then(_ => undefined)\r\n };\r\n }\r\n getInitialState() {\r\n let rootState = MonarchStackElementFactory.create(null, this._lexer.start);\r\n return MonarchLineStateFactory.create(rootState, null);\r\n }\r\n tokenize(line, lineState, offsetDelta) {\r\n let tokensCollector = new MonarchClassicTokensCollector();\r\n let endLineState = this._tokenize(line, lineState, offsetDelta, tokensCollector);\r\n return tokensCollector.finalize(endLineState);\r\n }\r\n tokenize2(line, lineState, offsetDelta) {\r\n let tokensCollector = new MonarchModernTokensCollector(this._modeService, this._standaloneThemeService.getColorTheme().tokenTheme);\r\n let endLineState = this._tokenize(line, lineState, offsetDelta, tokensCollector);\r\n return tokensCollector.finalize(endLineState);\r\n }\r\n _tokenize(line, lineState, offsetDelta, collector) {\r\n if (lineState.embeddedModeData) {\r\n return this._nestedTokenize(line, lineState, offsetDelta, collector);\r\n }\r\n else {\r\n return this._myTokenize(line, lineState, offsetDelta, collector);\r\n }\r\n }\r\n _findLeavingNestedModeOffset(line, state) {\r\n let rules = this._lexer.tokenizer[state.stack.state];\r\n if (!rules) {\r\n rules = monarchCommon.findRules(this._lexer, state.stack.state); // do parent matching\r\n if (!rules) {\r\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state.stack.state);\r\n }\r\n }\r\n let popOffset = -1;\r\n let hasEmbeddedPopRule = false;\r\n for (const rule of rules) {\r\n if (!monarchCommon.isIAction(rule.action) || rule.action.nextEmbedded !== '@pop') {\r\n continue;\r\n }\r\n hasEmbeddedPopRule = true;\r\n let regex = rule.regex;\r\n let regexSource = rule.regex.source;\r\n if (regexSource.substr(0, 4) === '^(?:' && regexSource.substr(regexSource.length - 1, 1) === ')') {\r\n let flags = (regex.ignoreCase ? 'i' : '') + (regex.unicode ? 'u' : '');\r\n regex = new RegExp(regexSource.substr(4, regexSource.length - 5), flags);\r\n }\r\n let result = line.search(regex);\r\n if (result === -1 || (result !== 0 && rule.matchOnlyAtLineStart)) {\r\n continue;\r\n }\r\n if (popOffset === -1 || result < popOffset) {\r\n popOffset = result;\r\n }\r\n }\r\n if (!hasEmbeddedPopRule) {\r\n throw monarchCommon.createError(this._lexer, 'no rule containing nextEmbedded: \"@pop\" in tokenizer embedded state: ' + state.stack.state);\r\n }\r\n return popOffset;\r\n }\r\n _nestedTokenize(line, lineState, offsetDelta, tokensCollector) {\r\n let popOffset = this._findLeavingNestedModeOffset(line, lineState);\r\n if (popOffset === -1) {\r\n // tokenization will not leave nested mode\r\n let nestedEndState = tokensCollector.nestedModeTokenize(line, lineState.embeddedModeData, offsetDelta);\r\n return MonarchLineStateFactory.create(lineState.stack, new EmbeddedModeData(lineState.embeddedModeData.modeId, nestedEndState));\r\n }\r\n let nestedModeLine = line.substring(0, popOffset);\r\n if (nestedModeLine.length > 0) {\r\n // tokenize with the nested mode\r\n tokensCollector.nestedModeTokenize(nestedModeLine, lineState.embeddedModeData, offsetDelta);\r\n }\r\n let restOfTheLine = line.substring(popOffset);\r\n return this._myTokenize(restOfTheLine, lineState, offsetDelta + popOffset, tokensCollector);\r\n }\r\n _safeRuleName(rule) {\r\n if (rule) {\r\n return rule.name;\r\n }\r\n return '(unknown)';\r\n }\r\n _myTokenize(line, lineState, offsetDelta, tokensCollector) {\r\n tokensCollector.enterMode(offsetDelta, this._modeId);\r\n const lineLength = line.length;\r\n let embeddedModeData = lineState.embeddedModeData;\r\n let stack = lineState.stack;\r\n let pos = 0;\r\n let groupMatching = null;\r\n // See https://github.com/Microsoft/monaco-editor/issues/1235:\r\n // Evaluate rules at least once for an empty line\r\n let forceEvaluation = true;\r\n while (forceEvaluation || pos < lineLength) {\r\n const pos0 = pos;\r\n const stackLen0 = stack.depth;\r\n const groupLen0 = groupMatching ? groupMatching.groups.length : 0;\r\n const state = stack.state;\r\n let matches = null;\r\n let matched = null;\r\n let action = null;\r\n let rule = null;\r\n let enteringEmbeddedMode = null;\r\n // check if we need to process group matches first\r\n if (groupMatching) {\r\n matches = groupMatching.matches;\r\n const groupEntry = groupMatching.groups.shift();\r\n matched = groupEntry.matched;\r\n action = groupEntry.action;\r\n rule = groupMatching.rule;\r\n // cleanup if necessary\r\n if (groupMatching.groups.length === 0) {\r\n groupMatching = null;\r\n }\r\n }\r\n else {\r\n // otherwise we match on the token stream\r\n if (!forceEvaluation && pos >= lineLength) {\r\n // nothing to do\r\n break;\r\n }\r\n forceEvaluation = false;\r\n // get the rules for this state\r\n let rules = this._lexer.tokenizer[state];\r\n if (!rules) {\r\n rules = monarchCommon.findRules(this._lexer, state); // do parent matching\r\n if (!rules) {\r\n throw monarchCommon.createError(this._lexer, 'tokenizer state is not defined: ' + state);\r\n }\r\n }\r\n // try each rule until we match\r\n let restOfLine = line.substr(pos);\r\n for (const rule of rules) {\r\n if (pos === 0 || !rule.matchOnlyAtLineStart) {\r\n matches = restOfLine.match(rule.regex);\r\n if (matches) {\r\n matched = matches[0];\r\n action = rule.action;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n // We matched 'rule' with 'matches' and 'action'\r\n if (!matches) {\r\n matches = [''];\r\n matched = '';\r\n }\r\n if (!action) {\r\n // bad: we didn't match anything, and there is no action to take\r\n // we need to advance the stream or we get progress trouble\r\n if (pos < lineLength) {\r\n matches = [line.charAt(pos)];\r\n matched = matches[0];\r\n }\r\n action = this._lexer.defaultToken;\r\n }\r\n if (matched === null) {\r\n // should never happen, needed for strict null checking\r\n break;\r\n }\r\n // advance stream\r\n pos += matched.length;\r\n // maybe call action function (used for 'cases')\r\n while (monarchCommon.isFuzzyAction(action) && monarchCommon.isIAction(action) && action.test) {\r\n action = action.test(matched, matches, state, pos === lineLength);\r\n }\r\n let result = null;\r\n // set the result: either a string or an array of actions\r\n if (typeof action === 'string' || Array.isArray(action)) {\r\n result = action;\r\n }\r\n else if (action.group) {\r\n result = action.group;\r\n }\r\n else if (action.token !== null && action.token !== undefined) {\r\n // do $n replacements?\r\n if (action.tokenSubst) {\r\n result = monarchCommon.substituteMatches(this._lexer, action.token, matched, matches, state);\r\n }\r\n else {\r\n result = action.token;\r\n }\r\n // enter embedded mode?\r\n if (action.nextEmbedded) {\r\n if (action.nextEmbedded === '@pop') {\r\n if (!embeddedModeData) {\r\n throw monarchCommon.createError(this._lexer, 'cannot pop embedded mode if not inside one');\r\n }\r\n embeddedModeData = null;\r\n }\r\n else if (embeddedModeData) {\r\n throw monarchCommon.createError(this._lexer, 'cannot enter embedded mode from within an embedded mode');\r\n }\r\n else {\r\n enteringEmbeddedMode = monarchCommon.substituteMatches(this._lexer, action.nextEmbedded, matched, matches, state);\r\n }\r\n }\r\n // state transformations\r\n if (action.goBack) { // back up the stream..\r\n pos = Math.max(0, pos - action.goBack);\r\n }\r\n if (action.switchTo && typeof action.switchTo === 'string') {\r\n let nextState = monarchCommon.substituteMatches(this._lexer, action.switchTo, matched, matches, state); // switch state without a push...\r\n if (nextState[0] === '@') {\r\n nextState = nextState.substr(1); // peel off starting '@'\r\n }\r\n if (!monarchCommon.findRules(this._lexer, nextState)) {\r\n throw monarchCommon.createError(this._lexer, 'trying to switch to a state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.switchTo(nextState);\r\n }\r\n }\r\n else if (action.transform && typeof action.transform === 'function') {\r\n throw monarchCommon.createError(this._lexer, 'action.transform not supported');\r\n }\r\n else if (action.next) {\r\n if (action.next === '@push') {\r\n if (stack.depth >= this._lexer.maxStack) {\r\n throw monarchCommon.createError(this._lexer, 'maximum tokenizer stack size reached: [' +\r\n stack.state + ',' + stack.parent.state + ',...]');\r\n }\r\n else {\r\n stack = stack.push(state);\r\n }\r\n }\r\n else if (action.next === '@pop') {\r\n if (stack.depth <= 1) {\r\n throw monarchCommon.createError(this._lexer, 'trying to pop an empty stack in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.pop();\r\n }\r\n }\r\n else if (action.next === '@popall') {\r\n stack = stack.popall();\r\n }\r\n else {\r\n let nextState = monarchCommon.substituteMatches(this._lexer, action.next, matched, matches, state);\r\n if (nextState[0] === '@') {\r\n nextState = nextState.substr(1); // peel off starting '@'\r\n }\r\n if (!monarchCommon.findRules(this._lexer, nextState)) {\r\n throw monarchCommon.createError(this._lexer, 'trying to set a next state \\'' + nextState + '\\' that is undefined in rule: ' + this._safeRuleName(rule));\r\n }\r\n else {\r\n stack = stack.push(nextState);\r\n }\r\n }\r\n }\r\n if (action.log && typeof (action.log) === 'string') {\r\n monarchCommon.log(this._lexer, this._lexer.languageId + ': ' + monarchCommon.substituteMatches(this._lexer, action.log, matched, matches, state));\r\n }\r\n }\r\n // check result\r\n if (result === null) {\r\n throw monarchCommon.createError(this._lexer, 'lexer rule has no well-defined action in rule: ' + this._safeRuleName(rule));\r\n }\r\n const computeNewStateForEmbeddedMode = (enteringEmbeddedMode) => {\r\n // substitute language alias to known modes to support syntax highlighting\r\n let enteringEmbeddedModeId = this._modeService.getModeIdForLanguageName(enteringEmbeddedMode);\r\n if (enteringEmbeddedModeId) {\r\n enteringEmbeddedMode = enteringEmbeddedModeId;\r\n }\r\n const embeddedModeData = this._getNestedEmbeddedModeData(enteringEmbeddedMode);\r\n if (pos < lineLength) {\r\n // there is content from the embedded mode on this line\r\n const restOfLine = line.substr(pos);\r\n return this._nestedTokenize(restOfLine, MonarchLineStateFactory.create(stack, embeddedModeData), offsetDelta + pos, tokensCollector);\r\n }\r\n else {\r\n return MonarchLineStateFactory.create(stack, embeddedModeData);\r\n }\r\n };\r\n // is the result a group match?\r\n if (Array.isArray(result)) {\r\n if (groupMatching && groupMatching.groups.length > 0) {\r\n throw monarchCommon.createError(this._lexer, 'groups cannot be nested: ' + this._safeRuleName(rule));\r\n }\r\n if (matches.length !== result.length + 1) {\r\n throw monarchCommon.createError(this._lexer, 'matched number of groups does not match the number of actions in rule: ' + this._safeRuleName(rule));\r\n }\r\n let totalLen = 0;\r\n for (let i = 1; i < matches.length; i++) {\r\n totalLen += matches[i].length;\r\n }\r\n if (totalLen !== matched.length) {\r\n throw monarchCommon.createError(this._lexer, 'with groups, all characters should be matched in consecutive groups in rule: ' + this._safeRuleName(rule));\r\n }\r\n groupMatching = {\r\n rule: rule,\r\n matches: matches,\r\n groups: []\r\n };\r\n for (let i = 0; i < result.length; i++) {\r\n groupMatching.groups[i] = {\r\n action: result[i],\r\n matched: matches[i + 1]\r\n };\r\n }\r\n pos -= matched.length;\r\n // call recursively to initiate first result match\r\n continue;\r\n }\r\n else {\r\n // regular result\r\n // check for '@rematch'\r\n if (result === '@rematch') {\r\n pos -= matched.length;\r\n matched = ''; // better set the next state too..\r\n matches = null;\r\n result = '';\r\n // Even though `@rematch` was specified, if `nextEmbedded` also specified,\r\n // a state transition should occur.\r\n if (enteringEmbeddedMode !== null) {\r\n return computeNewStateForEmbeddedMode(enteringEmbeddedMode);\r\n }\r\n }\r\n // check progress\r\n if (matched.length === 0) {\r\n if (lineLength === 0 || stackLen0 !== stack.depth || state !== stack.state || (!groupMatching ? 0 : groupMatching.groups.length) !== groupLen0) {\r\n continue;\r\n }\r\n else {\r\n throw monarchCommon.createError(this._lexer, 'no progress in tokenizer in rule: ' + this._safeRuleName(rule));\r\n }\r\n }\r\n // return the result (and check for brace matching)\r\n // todo: for efficiency we could pre-sanitize tokenPostfix and substitutions\r\n let tokenType = null;\r\n if (monarchCommon.isString(result) && result.indexOf('@brackets') === 0) {\r\n let rest = result.substr('@brackets'.length);\r\n let bracket = findBracket(this._lexer, matched);\r\n if (!bracket) {\r\n throw monarchCommon.createError(this._lexer, '@brackets token returned but no bracket defined as: ' + matched);\r\n }\r\n tokenType = monarchCommon.sanitize(bracket.token + rest);\r\n }\r\n else {\r\n let token = (result === '' ? '' : result + this._lexer.tokenPostfix);\r\n tokenType = monarchCommon.sanitize(token);\r\n }\r\n tokensCollector.emit(pos0 + offsetDelta, tokenType);\r\n }\r\n if (enteringEmbeddedMode !== null) {\r\n return computeNewStateForEmbeddedMode(enteringEmbeddedMode);\r\n }\r\n }\r\n return MonarchLineStateFactory.create(stack, embeddedModeData);\r\n }\r\n _getNestedEmbeddedModeData(mimetypeOrModeId) {\r\n let nestedModeId = this._locateMode(mimetypeOrModeId);\r\n if (nestedModeId) {\r\n let tokenizationSupport = modes.TokenizationRegistry.get(nestedModeId);\r\n if (tokenizationSupport) {\r\n return new EmbeddedModeData(nestedModeId, tokenizationSupport.getInitialState());\r\n }\r\n }\r\n return new EmbeddedModeData(nestedModeId || NULL_MODE_ID, NULL_STATE);\r\n }\r\n _locateMode(mimetypeOrModeId) {\r\n if (!mimetypeOrModeId || !this._modeService.isRegisteredMode(mimetypeOrModeId)) {\r\n return null;\r\n }\r\n if (mimetypeOrModeId === this._modeId) {\r\n // embedding myself...\r\n return mimetypeOrModeId;\r\n }\r\n let modeId = this._modeService.getModeId(mimetypeOrModeId);\r\n if (modeId) {\r\n // Fire mode loading event\r\n this._modeService.triggerMode(modeId);\r\n this._embeddedModes[modeId] = true;\r\n }\r\n return modeId;\r\n }\r\n}\r\n/**\r\n * Searches for a bracket in the 'brackets' attribute that matches the input.\r\n */\r\nfunction findBracket(lexer, matched) {\r\n if (!matched) {\r\n return null;\r\n }\r\n matched = monarchCommon.fixCase(lexer, matched);\r\n let brackets = lexer.brackets;\r\n for (const bracket of brackets) {\r\n if (bracket.open === matched) {\r\n return { token: bracket.token, bracketType: 1 /* Open */ };\r\n }\r\n else if (bracket.close === matched) {\r\n return { token: bracket.token, bracketType: -1 /* Close */ };\r\n }\r\n }\r\n return null;\r\n}\r\nexport function createTokenizationSupport(modeService, standaloneThemeService, modeId, lexer) {\r\n return new MonarchTokenizer(modeService, standaloneThemeService, modeId, lexer);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../../platform/instantiation/common/instantiation.js';\r\nexport const IStandaloneThemeService = createDecorator('themeService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { editorActiveIndentGuides, editorIndentGuides } from '../../common/view/editorColorRegistry.js';\r\nimport { editorBackground, editorForeground, editorInactiveSelection, editorSelectionHighlight } from '../../../platform/theme/common/colorRegistry.js';\r\n/* -------------------------------- Begin vs theme -------------------------------- */\r\nexport const vs = {\r\n base: 'vs',\r\n inherit: false,\r\n rules: [\r\n { token: '', foreground: '000000', background: 'fffffe' },\r\n { token: 'invalid', foreground: 'cd3131' },\r\n { token: 'emphasis', fontStyle: 'italic' },\r\n { token: 'strong', fontStyle: 'bold' },\r\n { token: 'variable', foreground: '001188' },\r\n { token: 'variable.predefined', foreground: '4864AA' },\r\n { token: 'constant', foreground: 'dd0000' },\r\n { token: 'comment', foreground: '008000' },\r\n { token: 'number', foreground: '098658' },\r\n { token: 'number.hex', foreground: '3030c0' },\r\n { token: 'regexp', foreground: '800000' },\r\n { token: 'annotation', foreground: '808080' },\r\n { token: 'type', foreground: '008080' },\r\n { token: 'delimiter', foreground: '000000' },\r\n { token: 'delimiter.html', foreground: '383838' },\r\n { token: 'delimiter.xml', foreground: '0000FF' },\r\n { token: 'tag', foreground: '800000' },\r\n { token: 'tag.id.pug', foreground: '4F76AC' },\r\n { token: 'tag.class.pug', foreground: '4F76AC' },\r\n { token: 'meta.scss', foreground: '800000' },\r\n { token: 'metatag', foreground: 'e00000' },\r\n { token: 'metatag.content.html', foreground: 'FF0000' },\r\n { token: 'metatag.html', foreground: '808080' },\r\n { token: 'metatag.xml', foreground: '808080' },\r\n { token: 'metatag.php', fontStyle: 'bold' },\r\n { token: 'key', foreground: '863B00' },\r\n { token: 'string.key.json', foreground: 'A31515' },\r\n { token: 'string.value.json', foreground: '0451A5' },\r\n { token: 'attribute.name', foreground: 'FF0000' },\r\n { token: 'attribute.value', foreground: '0451A5' },\r\n { token: 'attribute.value.number', foreground: '098658' },\r\n { token: 'attribute.value.unit', foreground: '098658' },\r\n { token: 'attribute.value.html', foreground: '0000FF' },\r\n { token: 'attribute.value.xml', foreground: '0000FF' },\r\n { token: 'string', foreground: 'A31515' },\r\n { token: 'string.html', foreground: '0000FF' },\r\n { token: 'string.sql', foreground: 'FF0000' },\r\n { token: 'string.yaml', foreground: '0451A5' },\r\n { token: 'keyword', foreground: '0000FF' },\r\n { token: 'keyword.json', foreground: '0451A5' },\r\n { token: 'keyword.flow', foreground: 'AF00DB' },\r\n { token: 'keyword.flow.scss', foreground: '0000FF' },\r\n { token: 'operator.scss', foreground: '666666' },\r\n { token: 'operator.sql', foreground: '778899' },\r\n { token: 'operator.swift', foreground: '666666' },\r\n { token: 'predefined.sql', foreground: 'FF00FF' },\r\n ],\r\n colors: {\r\n [editorBackground]: '#FFFFFE',\r\n [editorForeground]: '#000000',\r\n [editorInactiveSelection]: '#E5EBF1',\r\n [editorIndentGuides]: '#D3D3D3',\r\n [editorActiveIndentGuides]: '#939393',\r\n [editorSelectionHighlight]: '#ADD6FF4D'\r\n }\r\n};\r\n/* -------------------------------- End vs theme -------------------------------- */\r\n/* -------------------------------- Begin vs-dark theme -------------------------------- */\r\nexport const vs_dark = {\r\n base: 'vs-dark',\r\n inherit: false,\r\n rules: [\r\n { token: '', foreground: 'D4D4D4', background: '1E1E1E' },\r\n { token: 'invalid', foreground: 'f44747' },\r\n { token: 'emphasis', fontStyle: 'italic' },\r\n { token: 'strong', fontStyle: 'bold' },\r\n { token: 'variable', foreground: '74B0DF' },\r\n { token: 'variable.predefined', foreground: '4864AA' },\r\n { token: 'variable.parameter', foreground: '9CDCFE' },\r\n { token: 'constant', foreground: '569CD6' },\r\n { token: 'comment', foreground: '608B4E' },\r\n { token: 'number', foreground: 'B5CEA8' },\r\n { token: 'number.hex', foreground: '5BB498' },\r\n { token: 'regexp', foreground: 'B46695' },\r\n { token: 'annotation', foreground: 'cc6666' },\r\n { token: 'type', foreground: '3DC9B0' },\r\n { token: 'delimiter', foreground: 'DCDCDC' },\r\n { token: 'delimiter.html', foreground: '808080' },\r\n { token: 'delimiter.xml', foreground: '808080' },\r\n { token: 'tag', foreground: '569CD6' },\r\n { token: 'tag.id.pug', foreground: '4F76AC' },\r\n { token: 'tag.class.pug', foreground: '4F76AC' },\r\n { token: 'meta.scss', foreground: 'A79873' },\r\n { token: 'meta.tag', foreground: 'CE9178' },\r\n { token: 'metatag', foreground: 'DD6A6F' },\r\n { token: 'metatag.content.html', foreground: '9CDCFE' },\r\n { token: 'metatag.html', foreground: '569CD6' },\r\n { token: 'metatag.xml', foreground: '569CD6' },\r\n { token: 'metatag.php', fontStyle: 'bold' },\r\n { token: 'key', foreground: '9CDCFE' },\r\n { token: 'string.key.json', foreground: '9CDCFE' },\r\n { token: 'string.value.json', foreground: 'CE9178' },\r\n { token: 'attribute.name', foreground: '9CDCFE' },\r\n { token: 'attribute.value', foreground: 'CE9178' },\r\n { token: 'attribute.value.number.css', foreground: 'B5CEA8' },\r\n { token: 'attribute.value.unit.css', foreground: 'B5CEA8' },\r\n { token: 'attribute.value.hex.css', foreground: 'D4D4D4' },\r\n { token: 'string', foreground: 'CE9178' },\r\n { token: 'string.sql', foreground: 'FF0000' },\r\n { token: 'keyword', foreground: '569CD6' },\r\n { token: 'keyword.flow', foreground: 'C586C0' },\r\n { token: 'keyword.json', foreground: 'CE9178' },\r\n { token: 'keyword.flow.scss', foreground: '569CD6' },\r\n { token: 'operator.scss', foreground: '909090' },\r\n { token: 'operator.sql', foreground: '778899' },\r\n { token: 'operator.swift', foreground: '909090' },\r\n { token: 'predefined.sql', foreground: 'FF00FF' },\r\n ],\r\n colors: {\r\n [editorBackground]: '#1E1E1E',\r\n [editorForeground]: '#D4D4D4',\r\n [editorInactiveSelection]: '#3A3D41',\r\n [editorIndentGuides]: '#404040',\r\n [editorActiveIndentGuides]: '#707070',\r\n [editorSelectionHighlight]: '#ADD6FF26'\r\n }\r\n};\r\n/* -------------------------------- End vs-dark theme -------------------------------- */\r\n/* -------------------------------- Begin hc-black theme -------------------------------- */\r\nexport const hc_black = {\r\n base: 'hc-black',\r\n inherit: false,\r\n rules: [\r\n { token: '', foreground: 'FFFFFF', background: '000000' },\r\n { token: 'invalid', foreground: 'f44747' },\r\n { token: 'emphasis', fontStyle: 'italic' },\r\n { token: 'strong', fontStyle: 'bold' },\r\n { token: 'variable', foreground: '1AEBFF' },\r\n { token: 'variable.parameter', foreground: '9CDCFE' },\r\n { token: 'constant', foreground: '569CD6' },\r\n { token: 'comment', foreground: '608B4E' },\r\n { token: 'number', foreground: 'FFFFFF' },\r\n { token: 'regexp', foreground: 'C0C0C0' },\r\n { token: 'annotation', foreground: '569CD6' },\r\n { token: 'type', foreground: '3DC9B0' },\r\n { token: 'delimiter', foreground: 'FFFF00' },\r\n { token: 'delimiter.html', foreground: 'FFFF00' },\r\n { token: 'tag', foreground: '569CD6' },\r\n { token: 'tag.id.pug', foreground: '4F76AC' },\r\n { token: 'tag.class.pug', foreground: '4F76AC' },\r\n { token: 'meta', foreground: 'D4D4D4' },\r\n { token: 'meta.tag', foreground: 'CE9178' },\r\n { token: 'metatag', foreground: '569CD6' },\r\n { token: 'metatag.content.html', foreground: '1AEBFF' },\r\n { token: 'metatag.html', foreground: '569CD6' },\r\n { token: 'metatag.xml', foreground: '569CD6' },\r\n { token: 'metatag.php', fontStyle: 'bold' },\r\n { token: 'key', foreground: '9CDCFE' },\r\n { token: 'string.key', foreground: '9CDCFE' },\r\n { token: 'string.value', foreground: 'CE9178' },\r\n { token: 'attribute.name', foreground: '569CD6' },\r\n { token: 'attribute.value', foreground: '3FF23F' },\r\n { token: 'string', foreground: 'CE9178' },\r\n { token: 'string.sql', foreground: 'FF0000' },\r\n { token: 'keyword', foreground: '569CD6' },\r\n { token: 'keyword.flow', foreground: 'C586C0' },\r\n { token: 'operator.sql', foreground: '778899' },\r\n { token: 'operator.swift', foreground: '909090' },\r\n { token: 'predefined.sql', foreground: 'FF00FF' },\r\n ],\r\n colors: {\r\n [editorBackground]: '#000000',\r\n [editorForeground]: '#FFFFFF',\r\n [editorIndentGuides]: '#FFFFFF',\r\n [editorActiveIndentGuides]: '#FFFFFF',\r\n }\r\n};\r\n/* -------------------------------- End hc-black theme -------------------------------- */\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport * from '../../../editor/editor.api.js';\n","import '../../editor/editor.api.js';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { languages, Emitter } from './fillers/monaco-editor-core.js';\n// --- CSS configuration and defaults ---------\nvar LanguageServiceDefaultsImpl = /** @class */ (function () {\n function LanguageServiceDefaultsImpl(languageId, diagnosticsOptions, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setDiagnosticsOptions(diagnosticsOptions);\n this.setModeConfiguration(modeConfiguration);\n }\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"onDidChange\", {\n get: function () {\n return this._onDidChange.event;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"modeConfiguration\", {\n get: function () {\n return this._modeConfiguration;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"diagnosticsOptions\", {\n get: function () {\n return this._diagnosticsOptions;\n },\n enumerable: false,\n configurable: true\n });\n LanguageServiceDefaultsImpl.prototype.setDiagnosticsOptions = function (options) {\n this._diagnosticsOptions = options || Object.create(null);\n this._onDidChange.fire(this);\n };\n LanguageServiceDefaultsImpl.prototype.setModeConfiguration = function (modeConfiguration) {\n this._modeConfiguration = modeConfiguration || Object.create(null);\n this._onDidChange.fire(this);\n };\n return LanguageServiceDefaultsImpl;\n}());\nvar diagnosticDefault = {\n validate: true,\n lint: {\n compatibleVendorPrefixes: 'ignore',\n vendorPrefix: 'warning',\n duplicateProperties: 'warning',\n emptyRules: 'warning',\n importStatement: 'ignore',\n boxModel: 'ignore',\n universalSelector: 'ignore',\n zeroUnits: 'ignore',\n fontFaceProperties: 'warning',\n hexColorLength: 'error',\n argumentsInColorFunction: 'error',\n unknownProperties: 'warning',\n ieHack: 'ignore',\n unknownVendorSpecificProperties: 'ignore',\n propertyIgnoredDueToDisplay: 'warning',\n important: 'ignore',\n float: 'ignore',\n idSelector: 'ignore'\n }\n};\nvar modeConfigurationDefault = {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n definitions: true,\n references: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true\n};\nexport var cssDefaults = new LanguageServiceDefaultsImpl('css', diagnosticDefault, modeConfigurationDefault);\nexport var scssDefaults = new LanguageServiceDefaultsImpl('scss', diagnosticDefault, modeConfigurationDefault);\nexport var lessDefaults = new LanguageServiceDefaultsImpl('less', diagnosticDefault, modeConfigurationDefault);\n// export to the global based API\nlanguages.css = { cssDefaults: cssDefaults, lessDefaults: lessDefaults, scssDefaults: scssDefaults };\n// --- Registration to monaco editor ---\nfunction getMode() {\n return import('./cssMode.js');\n}\nlanguages.onLanguage('less', function () {\n getMode().then(function (mode) { return mode.setupMode(lessDefaults); });\n});\nlanguages.onLanguage('scss', function () {\n getMode().then(function (mode) { return mode.setupMode(scssDefaults); });\n});\nlanguages.onLanguage('css', function () {\n getMode().then(function (mode) { return mode.setupMode(cssDefaults); });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport * from '../../../editor/editor.api.js';\n","import '../../editor/editor.api.js';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { languages, Emitter } from './fillers/monaco-editor-core.js';\n// --- HTML configuration and defaults ---------\nvar LanguageServiceDefaultsImpl = /** @class */ (function () {\n function LanguageServiceDefaultsImpl(languageId, options, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setOptions(options);\n this.setModeConfiguration(modeConfiguration);\n }\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"onDidChange\", {\n get: function () {\n return this._onDidChange.event;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"options\", {\n get: function () {\n return this._options;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"modeConfiguration\", {\n get: function () {\n return this._modeConfiguration;\n },\n enumerable: false,\n configurable: true\n });\n LanguageServiceDefaultsImpl.prototype.setOptions = function (options) {\n this._options = options || Object.create(null);\n this._onDidChange.fire(this);\n };\n LanguageServiceDefaultsImpl.prototype.setModeConfiguration = function (modeConfiguration) {\n this._modeConfiguration = modeConfiguration || Object.create(null);\n this._onDidChange.fire(this);\n };\n return LanguageServiceDefaultsImpl;\n}());\nvar formatDefaults = {\n tabSize: 4,\n insertSpaces: false,\n wrapLineLength: 120,\n unformatted: 'default\": \"a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var',\n contentUnformatted: 'pre',\n indentInnerHtml: false,\n preserveNewLines: true,\n maxPreserveNewLines: null,\n indentHandlebars: false,\n endWithNewline: false,\n extraLiners: 'head, body, /html',\n wrapAttributes: 'auto'\n};\nvar htmlOptionsDefault = {\n format: formatDefaults,\n suggest: { html5: true, angular1: true, ionic: true }\n};\nvar handlebarOptionsDefault = {\n format: formatDefaults,\n suggest: { html5: true }\n};\nvar razorOptionsDefault = {\n format: formatDefaults,\n suggest: { html5: true, razor: true }\n};\nfunction getConfigurationDefault(languageId) {\n return {\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n links: true,\n documentHighlights: true,\n rename: true,\n colors: true,\n foldingRanges: true,\n selectionRanges: true,\n diagnostics: languageId === htmlLanguageId,\n documentFormattingEdits: languageId === htmlLanguageId,\n documentRangeFormattingEdits: languageId === htmlLanguageId // turned off for Razor and Handlebar\n };\n}\nvar htmlLanguageId = 'html';\nvar handlebarsLanguageId = 'handlebars';\nvar razorLanguageId = 'razor';\nexport var htmlDefaults = new LanguageServiceDefaultsImpl(htmlLanguageId, htmlOptionsDefault, getConfigurationDefault(htmlLanguageId));\nexport var handlebarDefaults = new LanguageServiceDefaultsImpl(handlebarsLanguageId, handlebarOptionsDefault, getConfigurationDefault(handlebarsLanguageId));\nexport var razorDefaults = new LanguageServiceDefaultsImpl(razorLanguageId, razorOptionsDefault, getConfigurationDefault(razorLanguageId));\n// export to the global based API\nlanguages.html = { htmlDefaults: htmlDefaults, razorDefaults: razorDefaults, handlebarDefaults: handlebarDefaults };\n// --- Registration to monaco editor ---\nfunction getMode() {\n return import('./htmlMode.js');\n}\nlanguages.onLanguage(htmlLanguageId, function () {\n getMode().then(function (mode) { return mode.setupMode(htmlDefaults); });\n});\nlanguages.onLanguage(handlebarsLanguageId, function () {\n getMode().then(function (mode) { return mode.setupMode(handlebarDefaults); });\n});\nlanguages.onLanguage(razorLanguageId, function () {\n getMode().then(function (mode) { return mode.setupMode(razorDefaults); });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport * from '../../../editor/editor.api.js';\n","import '../../editor/editor.api.js';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Emitter, languages } from './fillers/monaco-editor-core.js';\nvar LanguageServiceDefaultsImpl = /** @class */ (function () {\n function LanguageServiceDefaultsImpl(languageId, diagnosticsOptions, modeConfiguration) {\n this._onDidChange = new Emitter();\n this._languageId = languageId;\n this.setDiagnosticsOptions(diagnosticsOptions);\n this.setModeConfiguration(modeConfiguration);\n }\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"onDidChange\", {\n get: function () {\n return this._onDidChange.event;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"modeConfiguration\", {\n get: function () {\n return this._modeConfiguration;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"diagnosticsOptions\", {\n get: function () {\n return this._diagnosticsOptions;\n },\n enumerable: false,\n configurable: true\n });\n LanguageServiceDefaultsImpl.prototype.setDiagnosticsOptions = function (options) {\n this._diagnosticsOptions = options || Object.create(null);\n this._onDidChange.fire(this);\n };\n LanguageServiceDefaultsImpl.prototype.setModeConfiguration = function (modeConfiguration) {\n this._modeConfiguration = modeConfiguration || Object.create(null);\n this._onDidChange.fire(this);\n };\n return LanguageServiceDefaultsImpl;\n}());\nvar diagnosticDefault = {\n validate: true,\n allowComments: true,\n schemas: [],\n enableSchemaRequest: false\n};\nvar modeConfigurationDefault = {\n documentFormattingEdits: true,\n documentRangeFormattingEdits: true,\n completionItems: true,\n hovers: true,\n documentSymbols: true,\n tokens: true,\n colors: true,\n foldingRanges: true,\n diagnostics: true,\n selectionRanges: true\n};\nexport var jsonDefaults = new LanguageServiceDefaultsImpl('json', diagnosticDefault, modeConfigurationDefault);\n// export to the global based API\nlanguages.json = { jsonDefaults: jsonDefaults };\n// --- Registration to monaco editor ---\nfunction getMode() {\n return import('./jsonMode.js');\n}\nlanguages.register({\n id: 'json',\n extensions: ['.json', '.bowerrc', '.jshintrc', '.jscsrc', '.eslintrc', '.babelrc', '.har'],\n aliases: ['JSON', 'json'],\n mimetypes: ['application/json']\n});\nlanguages.onLanguage('json', function () {\n getMode().then(function (mode) { return mode.setupMode(jsonDefaults); });\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nexport * from '../../../editor/editor.api.js';\n","//\n// **NOTE**: Do not edit directly! This file is generated using `npm run import-typescript`\n//\nexport var typescriptVersion = \"4.0.3\";\n","import '../../editor/editor.api.js';\n/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { typescriptVersion as tsversion } from './lib/typescriptServicesMetadata.js'; // do not import the whole typescriptServices here\nimport { languages, Emitter } from './fillers/monaco-editor-core.js';\n//#region enums copied from typescript to prevent loading the entire typescriptServices ---\nexport var ModuleKind;\n(function (ModuleKind) {\n ModuleKind[ModuleKind[\"None\"] = 0] = \"None\";\n ModuleKind[ModuleKind[\"CommonJS\"] = 1] = \"CommonJS\";\n ModuleKind[ModuleKind[\"AMD\"] = 2] = \"AMD\";\n ModuleKind[ModuleKind[\"UMD\"] = 3] = \"UMD\";\n ModuleKind[ModuleKind[\"System\"] = 4] = \"System\";\n ModuleKind[ModuleKind[\"ES2015\"] = 5] = \"ES2015\";\n ModuleKind[ModuleKind[\"ESNext\"] = 99] = \"ESNext\";\n})(ModuleKind || (ModuleKind = {}));\nexport var JsxEmit;\n(function (JsxEmit) {\n JsxEmit[JsxEmit[\"None\"] = 0] = \"None\";\n JsxEmit[JsxEmit[\"Preserve\"] = 1] = \"Preserve\";\n JsxEmit[JsxEmit[\"React\"] = 2] = \"React\";\n JsxEmit[JsxEmit[\"ReactNative\"] = 3] = \"ReactNative\";\n})(JsxEmit || (JsxEmit = {}));\nexport var NewLineKind;\n(function (NewLineKind) {\n NewLineKind[NewLineKind[\"CarriageReturnLineFeed\"] = 0] = \"CarriageReturnLineFeed\";\n NewLineKind[NewLineKind[\"LineFeed\"] = 1] = \"LineFeed\";\n})(NewLineKind || (NewLineKind = {}));\nexport var ScriptTarget;\n(function (ScriptTarget) {\n ScriptTarget[ScriptTarget[\"ES3\"] = 0] = \"ES3\";\n ScriptTarget[ScriptTarget[\"ES5\"] = 1] = \"ES5\";\n ScriptTarget[ScriptTarget[\"ES2015\"] = 2] = \"ES2015\";\n ScriptTarget[ScriptTarget[\"ES2016\"] = 3] = \"ES2016\";\n ScriptTarget[ScriptTarget[\"ES2017\"] = 4] = \"ES2017\";\n ScriptTarget[ScriptTarget[\"ES2018\"] = 5] = \"ES2018\";\n ScriptTarget[ScriptTarget[\"ES2019\"] = 6] = \"ES2019\";\n ScriptTarget[ScriptTarget[\"ES2020\"] = 7] = \"ES2020\";\n ScriptTarget[ScriptTarget[\"ESNext\"] = 99] = \"ESNext\";\n ScriptTarget[ScriptTarget[\"JSON\"] = 100] = \"JSON\";\n ScriptTarget[ScriptTarget[\"Latest\"] = 99] = \"Latest\";\n})(ScriptTarget || (ScriptTarget = {}));\nexport var ModuleResolutionKind;\n(function (ModuleResolutionKind) {\n ModuleResolutionKind[ModuleResolutionKind[\"Classic\"] = 1] = \"Classic\";\n ModuleResolutionKind[ModuleResolutionKind[\"NodeJs\"] = 2] = \"NodeJs\";\n})(ModuleResolutionKind || (ModuleResolutionKind = {}));\n// --- TypeScript configuration and defaults ---------\nvar LanguageServiceDefaultsImpl = /** @class */ (function () {\n function LanguageServiceDefaultsImpl(compilerOptions, diagnosticsOptions, workerOptions) {\n this._onDidChange = new Emitter();\n this._onDidExtraLibsChange = new Emitter();\n this._extraLibs = Object.create(null);\n this._removedExtraLibs = Object.create(null);\n this._eagerModelSync = false;\n this.setCompilerOptions(compilerOptions);\n this.setDiagnosticsOptions(diagnosticsOptions);\n this.setWorkerOptions(workerOptions);\n this._onDidExtraLibsChangeTimeout = -1;\n }\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"onDidChange\", {\n get: function () {\n return this._onDidChange.event;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"onDidExtraLibsChange\", {\n get: function () {\n return this._onDidExtraLibsChange.event;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(LanguageServiceDefaultsImpl.prototype, \"workerOptions\", {\n get: function () {\n return this._workerOptions;\n },\n enumerable: false,\n configurable: true\n });\n LanguageServiceDefaultsImpl.prototype.getExtraLibs = function () {\n return this._extraLibs;\n };\n LanguageServiceDefaultsImpl.prototype.addExtraLib = function (content, _filePath) {\n var _this = this;\n var filePath;\n if (typeof _filePath === 'undefined') {\n filePath = \"ts:extralib-\" + Math.random().toString(36).substring(2, 15);\n }\n else {\n filePath = _filePath;\n }\n if (this._extraLibs[filePath] && this._extraLibs[filePath].content === content) {\n // no-op, there already exists an extra lib with this content\n return {\n dispose: function () { }\n };\n }\n var myVersion = 1;\n if (this._removedExtraLibs[filePath]) {\n myVersion = this._removedExtraLibs[filePath] + 1;\n }\n if (this._extraLibs[filePath]) {\n myVersion = this._extraLibs[filePath].version + 1;\n }\n this._extraLibs[filePath] = {\n content: content,\n version: myVersion\n };\n this._fireOnDidExtraLibsChangeSoon();\n return {\n dispose: function () {\n var extraLib = _this._extraLibs[filePath];\n if (!extraLib) {\n return;\n }\n if (extraLib.version !== myVersion) {\n return;\n }\n delete _this._extraLibs[filePath];\n _this._removedExtraLibs[filePath] = myVersion;\n _this._fireOnDidExtraLibsChangeSoon();\n }\n };\n };\n LanguageServiceDefaultsImpl.prototype.setExtraLibs = function (libs) {\n for (var filePath in this._extraLibs) {\n this._removedExtraLibs[filePath] = this._extraLibs[filePath].version;\n }\n // clear out everything\n this._extraLibs = Object.create(null);\n if (libs && libs.length > 0) {\n for (var _i = 0, libs_1 = libs; _i < libs_1.length; _i++) {\n var lib = libs_1[_i];\n var filePath = lib.filePath || \"ts:extralib-\" + Math.random().toString(36).substring(2, 15);\n var content = lib.content;\n var myVersion = 1;\n if (this._removedExtraLibs[filePath]) {\n myVersion = this._removedExtraLibs[filePath] + 1;\n }\n this._extraLibs[filePath] = {\n content: content,\n version: myVersion\n };\n }\n }\n this._fireOnDidExtraLibsChangeSoon();\n };\n LanguageServiceDefaultsImpl.prototype._fireOnDidExtraLibsChangeSoon = function () {\n var _this = this;\n if (this._onDidExtraLibsChangeTimeout !== -1) {\n // already scheduled\n return;\n }\n this._onDidExtraLibsChangeTimeout = setTimeout(function () {\n _this._onDidExtraLibsChangeTimeout = -1;\n _this._onDidExtraLibsChange.fire(undefined);\n }, 0);\n };\n LanguageServiceDefaultsImpl.prototype.getCompilerOptions = function () {\n return this._compilerOptions;\n };\n LanguageServiceDefaultsImpl.prototype.setCompilerOptions = function (options) {\n this._compilerOptions = options || Object.create(null);\n this._onDidChange.fire(undefined);\n };\n LanguageServiceDefaultsImpl.prototype.getDiagnosticsOptions = function () {\n return this._diagnosticsOptions;\n };\n LanguageServiceDefaultsImpl.prototype.setDiagnosticsOptions = function (options) {\n this._diagnosticsOptions = options || Object.create(null);\n this._onDidChange.fire(undefined);\n };\n LanguageServiceDefaultsImpl.prototype.setWorkerOptions = function (options) {\n this._workerOptions = options || Object.create(null);\n this._onDidChange.fire(undefined);\n };\n LanguageServiceDefaultsImpl.prototype.setMaximumWorkerIdleTime = function (value) { };\n LanguageServiceDefaultsImpl.prototype.setEagerModelSync = function (value) {\n // doesn't fire an event since no\n // worker restart is required here\n this._eagerModelSync = value;\n };\n LanguageServiceDefaultsImpl.prototype.getEagerModelSync = function () {\n return this._eagerModelSync;\n };\n return LanguageServiceDefaultsImpl;\n}());\nexport var typescriptVersion = tsversion;\nexport var typescriptDefaults = new LanguageServiceDefaultsImpl({ allowNonTsExtensions: true, target: ScriptTarget.Latest }, { noSemanticValidation: false, noSyntaxValidation: false }, {});\nexport var javascriptDefaults = new LanguageServiceDefaultsImpl({ allowNonTsExtensions: true, allowJs: true, target: ScriptTarget.Latest }, { noSemanticValidation: true, noSyntaxValidation: false }, {});\nexport var getTypeScriptWorker = function () {\n return getMode().then(function (mode) { return mode.getTypeScriptWorker(); });\n};\nexport var getJavaScriptWorker = function () {\n return getMode().then(function (mode) { return mode.getJavaScriptWorker(); });\n};\n// export to the global based API\nlanguages.typescript = {\n ModuleKind: ModuleKind,\n JsxEmit: JsxEmit,\n NewLineKind: NewLineKind,\n ScriptTarget: ScriptTarget,\n ModuleResolutionKind: ModuleResolutionKind,\n typescriptVersion: typescriptVersion,\n typescriptDefaults: typescriptDefaults,\n javascriptDefaults: javascriptDefaults,\n getTypeScriptWorker: getTypeScriptWorker,\n getJavaScriptWorker: getJavaScriptWorker\n};\n// --- Registration to monaco editor ---\nfunction getMode() {\n return import('./tsMode.js');\n}\nlanguages.onLanguage('typescript', function () {\n return getMode().then(function (mode) { return mode.setupTypeScript(typescriptDefaults); });\n});\nlanguages.onLanguage('javascript', function () {\n return getMode().then(function (mode) { return mode.setupJavaScript(javascriptDefaults); });\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nfunction _format(message, args) {\r\n let result;\r\n if (args.length === 0) {\r\n result = message;\r\n }\r\n else {\r\n result = message.replace(/\\{(\\d+)\\}/g, function (match, rest) {\r\n const index = rest[0];\r\n return typeof args[index] !== 'undefined' ? args[index] : match;\r\n });\r\n }\r\n return result;\r\n}\r\nexport function localize(data, message, ...args) {\r\n return _format(message, args);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { RawContextKey } from '../../contextkey/common/contextkey.js';\r\nexport const IAccessibilityService = createDecorator('accessibilityService');\r\nexport const CONTEXT_ACCESSIBILITY_MODE_ENABLED = new RawContextKey('accessibilityModeEnabled', false);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { CONTEXT_ACCESSIBILITY_MODE_ENABLED } from './accessibility.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\r\nlet AccessibilityService = class AccessibilityService extends Disposable {\r\n constructor(_contextKeyService, _configurationService) {\r\n super();\r\n this._contextKeyService = _contextKeyService;\r\n this._configurationService = _configurationService;\r\n this._accessibilitySupport = 0 /* Unknown */;\r\n this._onDidChangeScreenReaderOptimized = new Emitter();\r\n this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);\r\n const updateContextKey = () => this._accessibilityModeEnabledContext.set(this.isScreenReaderOptimized());\r\n this._register(this._configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration('editor.accessibilitySupport')) {\r\n updateContextKey();\r\n this._onDidChangeScreenReaderOptimized.fire();\r\n }\r\n }));\r\n updateContextKey();\r\n this.onDidChangeScreenReaderOptimized(() => updateContextKey());\r\n }\r\n get onDidChangeScreenReaderOptimized() {\r\n return this._onDidChangeScreenReaderOptimized.event;\r\n }\r\n isScreenReaderOptimized() {\r\n const config = this._configurationService.getValue('editor.accessibilitySupport');\r\n return config === 'on' || (config === 'auto' && this._accessibilitySupport === 2 /* Enabled */);\r\n }\r\n getAccessibilitySupport() {\r\n return this._accessibilitySupport;\r\n }\r\n};\r\nAccessibilityService = __decorate([\r\n __param(0, IContextKeyService),\r\n __param(1, IConfigurationService)\r\n], AccessibilityService);\r\nexport { AccessibilityService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { addClasses, createCSSRule, removeClasses, asCSSUrl } from '../../../base/browser/dom.js';\r\nimport { domEvent } from '../../../base/browser/event.js';\r\nimport { Separator } from '../../../base/common/actions.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { IdGenerator } from '../../../base/common/idGenerator.js';\r\nimport { toDisposable, MutableDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { isLinux, isWindows } from '../../../base/common/platform.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { MenuItemAction } from '../common/actions.js';\r\nimport { IContextMenuService } from '../../contextview/browser/contextView.js';\r\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { ThemeIcon } from '../../theme/common/themeService.js';\r\nimport { ActionViewItem } from '../../../base/browser/ui/actionbar/actionViewItems.js';\r\nimport { DropdownMenuActionViewItem } from '../../../base/browser/ui/dropdown/dropdownActionViewItem.js';\r\n// The alternative key on all platforms is alt. On windows we also support shift as an alternative key #44136\r\nclass AlternativeKeyEmitter extends Emitter {\r\n constructor(contextMenuService) {\r\n super();\r\n this._subscriptions = new DisposableStore();\r\n this._isPressed = false;\r\n this._suppressAltKeyUp = false;\r\n this._subscriptions.add(domEvent(document.body, 'keydown')(e => {\r\n this.isPressed = e.altKey || ((isWindows || isLinux) && e.shiftKey);\r\n }));\r\n this._subscriptions.add(domEvent(document.body, 'keyup')(e => {\r\n if (this.isPressed) {\r\n if (this._suppressAltKeyUp) {\r\n e.preventDefault();\r\n }\r\n }\r\n this._suppressAltKeyUp = false;\r\n this.isPressed = false;\r\n }));\r\n this._subscriptions.add(domEvent(document.body, 'mouseleave')(e => this.isPressed = false));\r\n this._subscriptions.add(domEvent(document.body, 'blur')(e => this.isPressed = false));\r\n // Workaround since we do not get any events while a context menu is shown\r\n this._subscriptions.add(contextMenuService.onDidContextMenu(() => this.isPressed = false));\r\n }\r\n get isPressed() {\r\n return this._isPressed;\r\n }\r\n set isPressed(value) {\r\n this._isPressed = value;\r\n this.fire(this._isPressed);\r\n }\r\n suppressAltKeyUp() {\r\n // Sometimes the native alt behavior needs to be suppresed since the alt was already used as an alternative key\r\n // Example: windows behavior to toggle tha top level menu #44396\r\n this._suppressAltKeyUp = true;\r\n }\r\n static getInstance(contextMenuService) {\r\n if (!AlternativeKeyEmitter.instance) {\r\n AlternativeKeyEmitter.instance = new AlternativeKeyEmitter(contextMenuService);\r\n }\r\n return AlternativeKeyEmitter.instance;\r\n }\r\n dispose() {\r\n super.dispose();\r\n this._subscriptions.dispose();\r\n }\r\n}\r\nexport function createAndFillInActionBarActions(menu, options, target, isPrimaryGroup) {\r\n const groups = menu.getActions(options);\r\n // Action bars handle alternative actions on their own so the alternative actions should be ignored\r\n fillInActions(groups, target, false, isPrimaryGroup);\r\n return asDisposable(groups);\r\n}\r\nfunction asDisposable(groups) {\r\n const disposables = new DisposableStore();\r\n for (const [, actions] of groups) {\r\n for (const action of actions) {\r\n disposables.add(action);\r\n }\r\n }\r\n return disposables;\r\n}\r\nfunction fillInActions(groups, target, useAlternativeActions, isPrimaryGroup = group => group === 'navigation') {\r\n for (let tuple of groups) {\r\n let [group, actions] = tuple;\r\n if (useAlternativeActions) {\r\n actions = actions.map(a => (a instanceof MenuItemAction) && !!a.alt ? a.alt : a);\r\n }\r\n if (isPrimaryGroup(group)) {\r\n const to = Array.isArray(target) ? target : target.primary;\r\n to.unshift(...actions);\r\n }\r\n else {\r\n const to = Array.isArray(target) ? target : target.secondary;\r\n if (to.length > 0) {\r\n to.push(new Separator());\r\n }\r\n to.push(...actions);\r\n }\r\n }\r\n}\r\nconst ids = new IdGenerator('menu-item-action-item-icon-');\r\nconst ICON_PATH_TO_CSS_RULES = new Map();\r\nlet MenuEntryActionViewItem = class MenuEntryActionViewItem extends ActionViewItem {\r\n constructor(_action, _keybindingService, _notificationService, _contextMenuService) {\r\n super(undefined, _action, { icon: !!(_action.class || _action.item.icon), label: !_action.class && !_action.item.icon });\r\n this._action = _action;\r\n this._keybindingService = _keybindingService;\r\n this._notificationService = _notificationService;\r\n this._wantsAltCommand = false;\r\n this._itemClassDispose = this._register(new MutableDisposable());\r\n this._altKey = AlternativeKeyEmitter.getInstance(_contextMenuService);\r\n }\r\n get _commandAction() {\r\n return this._wantsAltCommand && this._action.alt || this._action;\r\n }\r\n onClick(event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this._altKey.isPressed) {\r\n this._altKey.suppressAltKeyUp();\r\n }\r\n this.actionRunner.run(this._commandAction, this._context)\r\n .then(undefined, err => this._notificationService.error(err));\r\n }\r\n render(container) {\r\n super.render(container);\r\n this._updateItemClass(this._action.item);\r\n let mouseOver = false;\r\n let alternativeKeyDown = this._altKey.isPressed;\r\n const updateAltState = () => {\r\n const wantsAltCommand = mouseOver && alternativeKeyDown;\r\n if (wantsAltCommand !== this._wantsAltCommand) {\r\n this._wantsAltCommand = wantsAltCommand;\r\n this.updateLabel();\r\n this.updateTooltip();\r\n this.updateClass();\r\n }\r\n };\r\n if (this._action.alt) {\r\n this._register(this._altKey.event(value => {\r\n alternativeKeyDown = value;\r\n updateAltState();\r\n }));\r\n }\r\n this._register(domEvent(container, 'mouseleave')(_ => {\r\n mouseOver = false;\r\n updateAltState();\r\n }));\r\n this._register(domEvent(container, 'mouseenter')(e => {\r\n mouseOver = true;\r\n updateAltState();\r\n }));\r\n }\r\n updateLabel() {\r\n if (this.options.label && this.label) {\r\n this.label.textContent = this._commandAction.label;\r\n }\r\n }\r\n updateTooltip() {\r\n if (this.label) {\r\n const keybinding = this._keybindingService.lookupKeybinding(this._commandAction.id);\r\n const keybindingLabel = keybinding && keybinding.getLabel();\r\n const tooltip = this._commandAction.tooltip || this._commandAction.label;\r\n this.label.title = keybindingLabel\r\n ? localize('titleAndKb', \"{0} ({1})\", tooltip, keybindingLabel)\r\n : tooltip;\r\n }\r\n }\r\n updateClass() {\r\n if (this.options.icon) {\r\n if (this._commandAction !== this._action) {\r\n if (this._action.alt) {\r\n this._updateItemClass(this._action.alt.item);\r\n }\r\n }\r\n else if (this._action.alt) {\r\n this._updateItemClass(this._action.item);\r\n }\r\n }\r\n }\r\n _updateItemClass(item) {\r\n var _a, _b;\r\n this._itemClassDispose.value = undefined;\r\n const icon = this._commandAction.checked && ((_a = item.toggled) === null || _a === void 0 ? void 0 : _a.icon) ? item.toggled.icon : item.icon;\r\n if (ThemeIcon.isThemeIcon(icon)) {\r\n // theme icons\r\n const iconClass = ThemeIcon.asClassName(icon);\r\n if (this.label && iconClass) {\r\n addClasses(this.label, iconClass);\r\n this._itemClassDispose.value = toDisposable(() => {\r\n if (this.label) {\r\n removeClasses(this.label, iconClass);\r\n }\r\n });\r\n }\r\n }\r\n else if (icon) {\r\n // icon path\r\n let iconClass;\r\n if ((_b = icon.dark) === null || _b === void 0 ? void 0 : _b.scheme) {\r\n const iconPathMapKey = icon.dark.toString();\r\n if (ICON_PATH_TO_CSS_RULES.has(iconPathMapKey)) {\r\n iconClass = ICON_PATH_TO_CSS_RULES.get(iconPathMapKey);\r\n }\r\n else {\r\n iconClass = ids.nextId();\r\n createCSSRule(`.icon.${iconClass}`, `background-image: ${asCSSUrl(icon.light || icon.dark)}`);\r\n createCSSRule(`.vs-dark .icon.${iconClass}, .hc-black .icon.${iconClass}`, `background-image: ${asCSSUrl(icon.dark)}`);\r\n ICON_PATH_TO_CSS_RULES.set(iconPathMapKey, iconClass);\r\n }\r\n if (this.label) {\r\n addClasses(this.label, 'icon', iconClass);\r\n this._itemClassDispose.value = toDisposable(() => {\r\n if (this.label) {\r\n removeClasses(this.label, 'icon', iconClass);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n};\r\nMenuEntryActionViewItem = __decorate([\r\n __param(1, IKeybindingService),\r\n __param(2, INotificationService),\r\n __param(3, IContextMenuService)\r\n], MenuEntryActionViewItem);\r\nexport { MenuEntryActionViewItem };\r\nlet SubmenuEntryActionViewItem = class SubmenuEntryActionViewItem extends DropdownMenuActionViewItem {\r\n constructor(action, _notificationService, _contextMenuService) {\r\n var _a;\r\n const classNames = [];\r\n if (action.item.icon) {\r\n if (ThemeIcon.isThemeIcon(action.item.icon)) {\r\n classNames.push(ThemeIcon.asClassName(action.item.icon));\r\n }\r\n else if ((_a = action.item.icon.dark) === null || _a === void 0 ? void 0 : _a.scheme) {\r\n const iconPathMapKey = action.item.icon.dark.toString();\r\n if (ICON_PATH_TO_CSS_RULES.has(iconPathMapKey)) {\r\n classNames.push('icon', ICON_PATH_TO_CSS_RULES.get(iconPathMapKey));\r\n }\r\n else {\r\n const className = ids.nextId();\r\n classNames.push('icon', className);\r\n createCSSRule(`.icon.${className}`, `background-image: ${asCSSUrl(action.item.icon.light || action.item.icon.dark)}`);\r\n createCSSRule(`.vs-dark .icon.${className}, .hc-black .icon.${className}`, `background-image: ${asCSSUrl(action.item.icon.dark)}`);\r\n ICON_PATH_TO_CSS_RULES.set(iconPathMapKey, className);\r\n }\r\n }\r\n }\r\n super(action, action.actions, _contextMenuService, { classNames });\r\n }\r\n};\r\nSubmenuEntryActionViewItem = __decorate([\r\n __param(1, INotificationService),\r\n __param(2, IContextMenuService)\r\n], SubmenuEntryActionViewItem);\r\nexport { SubmenuEntryActionViewItem };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Action, Separator, SubmenuAction } from '../../../base/common/actions.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nimport { ICommandService } from '../../commands/common/commands.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nexport function isIMenuItem(item) {\r\n return item.command !== undefined;\r\n}\r\nexport class MenuId {\r\n constructor(debugName) {\r\n this.id = MenuId._idPool++;\r\n this._debugName = debugName;\r\n }\r\n}\r\nMenuId._idPool = 0;\r\nMenuId.CommandPalette = new MenuId('CommandPalette');\r\nMenuId.EditorContext = new MenuId('EditorContext');\r\nMenuId.EditorContextPeek = new MenuId('EditorContextPeek');\r\nMenuId.MenubarEditMenu = new MenuId('MenubarEditMenu');\r\nMenuId.MenubarGoMenu = new MenuId('MenubarGoMenu');\r\nMenuId.MenubarSelectionMenu = new MenuId('MenubarSelectionMenu');\r\nexport const IMenuService = createDecorator('menuService');\r\nexport const MenuRegistry = new class {\r\n constructor() {\r\n this._commands = new Map();\r\n this._menuItems = new Map();\r\n this._onDidChangeMenu = new Emitter();\r\n this.onDidChangeMenu = this._onDidChangeMenu.event;\r\n this._commandPaletteChangeEvent = {\r\n has: id => id === MenuId.CommandPalette\r\n };\r\n }\r\n addCommand(command) {\r\n return this.addCommands(Iterable.single(command));\r\n }\r\n addCommands(commands) {\r\n for (const command of commands) {\r\n this._commands.set(command.id, command);\r\n }\r\n this._onDidChangeMenu.fire(this._commandPaletteChangeEvent);\r\n return toDisposable(() => {\r\n let didChange = false;\r\n for (const command of commands) {\r\n didChange = this._commands.delete(command.id) || didChange;\r\n }\r\n if (didChange) {\r\n this._onDidChangeMenu.fire(this._commandPaletteChangeEvent);\r\n }\r\n });\r\n }\r\n getCommand(id) {\r\n return this._commands.get(id);\r\n }\r\n getCommands() {\r\n const map = new Map();\r\n this._commands.forEach((value, key) => map.set(key, value));\r\n return map;\r\n }\r\n appendMenuItem(id, item) {\r\n return this.appendMenuItems(Iterable.single({ id, item }));\r\n }\r\n appendMenuItems(items) {\r\n const changedIds = new Set();\r\n const toRemove = new LinkedList();\r\n for (const { id, item } of items) {\r\n let list = this._menuItems.get(id);\r\n if (!list) {\r\n list = new LinkedList();\r\n this._menuItems.set(id, list);\r\n }\r\n toRemove.push(list.push(item));\r\n changedIds.add(id);\r\n }\r\n this._onDidChangeMenu.fire(changedIds);\r\n return toDisposable(() => {\r\n if (toRemove.size > 0) {\r\n for (let fn of toRemove) {\r\n fn();\r\n }\r\n this._onDidChangeMenu.fire(changedIds);\r\n toRemove.clear();\r\n }\r\n });\r\n }\r\n getMenuItems(id) {\r\n let result;\r\n if (this._menuItems.has(id)) {\r\n result = [...this._menuItems.get(id)];\r\n }\r\n else {\r\n result = [];\r\n }\r\n if (id === MenuId.CommandPalette) {\r\n // CommandPalette is special because it shows\r\n // all commands by default\r\n this._appendImplicitItems(result);\r\n }\r\n return result;\r\n }\r\n _appendImplicitItems(result) {\r\n const set = new Set();\r\n for (const item of result) {\r\n if (isIMenuItem(item)) {\r\n set.add(item.command.id);\r\n if (item.alt) {\r\n set.add(item.alt.id);\r\n }\r\n }\r\n }\r\n this._commands.forEach((command, id) => {\r\n if (!set.has(id)) {\r\n result.push({ command });\r\n }\r\n });\r\n }\r\n};\r\nlet ExecuteCommandAction = class ExecuteCommandAction extends Action {\r\n constructor(id, label, _commandService) {\r\n super(id, label);\r\n this._commandService = _commandService;\r\n }\r\n run(...args) {\r\n return this._commandService.executeCommand(this.id, ...args);\r\n }\r\n};\r\nExecuteCommandAction = __decorate([\r\n __param(2, ICommandService)\r\n], ExecuteCommandAction);\r\nexport { ExecuteCommandAction };\r\nexport class SubmenuItemAction extends SubmenuAction {\r\n constructor(item, menuService, contextKeyService, options) {\r\n super(`submenuitem.${item.submenu.id}`, typeof item.title === 'string' ? item.title : item.title.value, () => {\r\n const result = [];\r\n const menu = menuService.createMenu(item.submenu, contextKeyService);\r\n const groups = menu.getActions(options);\r\n menu.dispose();\r\n for (let group of groups) {\r\n const [, actions] = group;\r\n if (actions.length > 0) {\r\n result.push(...actions);\r\n result.push(new Separator());\r\n }\r\n }\r\n if (result.length) {\r\n result.pop(); // remove last separator\r\n }\r\n return result;\r\n }, 'submenu');\r\n this.item = item;\r\n }\r\n}\r\nlet MenuItemAction = class MenuItemAction extends ExecuteCommandAction {\r\n constructor(item, alt, options, contextKeyService, commandService) {\r\n typeof item.title === 'string' ? super(item.id, item.title, commandService) : super(item.id, item.title.value, commandService);\r\n this._cssClass = undefined;\r\n this._enabled = !item.precondition || contextKeyService.contextMatchesRules(item.precondition);\r\n this._tooltip = item.tooltip ? typeof item.tooltip === 'string' ? item.tooltip : item.tooltip.value : undefined;\r\n if (item.toggled) {\r\n const toggled = (item.toggled.condition ? item.toggled : { condition: item.toggled });\r\n this._checked = contextKeyService.contextMatchesRules(toggled.condition);\r\n if (this._checked && toggled.tooltip) {\r\n this._tooltip = typeof toggled.tooltip === 'string' ? toggled.tooltip : toggled.tooltip.value;\r\n }\r\n }\r\n this._options = options || {};\r\n this.item = item;\r\n this.alt = alt ? new MenuItemAction(alt, undefined, this._options, contextKeyService, commandService) : undefined;\r\n }\r\n dispose() {\r\n if (this.alt) {\r\n this.alt.dispose();\r\n }\r\n super.dispose();\r\n }\r\n run(...args) {\r\n let runArgs = [];\r\n if (this._options.arg) {\r\n runArgs = [...runArgs, this._options.arg];\r\n }\r\n if (this._options.shouldForwardArgs) {\r\n runArgs = [...runArgs, ...args];\r\n }\r\n return super.run(...runArgs);\r\n }\r\n};\r\nMenuItemAction = __decorate([\r\n __param(3, IContextKeyService),\r\n __param(4, ICommandService)\r\n], MenuItemAction);\r\nexport { MenuItemAction };\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { IMenuService, isIMenuItem, MenuItemAction, MenuRegistry, SubmenuItemAction } from './actions.js';\r\nimport { ICommandService } from '../../commands/common/commands.js';\r\nimport { IContextKeyService } from '../../contextkey/common/contextkey.js';\r\nlet MenuService = class MenuService {\r\n constructor(_commandService) {\r\n this._commandService = _commandService;\r\n //\r\n }\r\n createMenu(id, contextKeyService) {\r\n return new Menu(id, this._commandService, contextKeyService, this);\r\n }\r\n};\r\nMenuService = __decorate([\r\n __param(0, ICommandService)\r\n], MenuService);\r\nexport { MenuService };\r\nlet Menu = class Menu {\r\n constructor(_id, _commandService, _contextKeyService, _menuService) {\r\n this._id = _id;\r\n this._commandService = _commandService;\r\n this._contextKeyService = _contextKeyService;\r\n this._menuService = _menuService;\r\n this._onDidChange = new Emitter();\r\n this._dispoables = new DisposableStore();\r\n this._menuGroups = [];\r\n this._contextKeys = new Set();\r\n this._build();\r\n // rebuild this menu whenever the menu registry reports an\r\n // event for this MenuId\r\n this._dispoables.add(Event.debounce(Event.filter(MenuRegistry.onDidChangeMenu, set => set.has(this._id)), () => { }, 50)(this._build, this));\r\n // when context keys change we need to check if the menu also\r\n // has changed\r\n this._dispoables.add(Event.debounce(this._contextKeyService.onDidChangeContext, (last, event) => last || event.affectsSome(this._contextKeys), 50)(e => e && this._onDidChange.fire(undefined), this));\r\n }\r\n dispose() {\r\n this._dispoables.dispose();\r\n this._onDidChange.dispose();\r\n }\r\n _build() {\r\n // reset\r\n this._menuGroups.length = 0;\r\n this._contextKeys.clear();\r\n const menuItems = MenuRegistry.getMenuItems(this._id);\r\n let group;\r\n menuItems.sort(Menu._compareMenuItems);\r\n for (let item of menuItems) {\r\n // group by groupId\r\n const groupName = item.group || '';\r\n if (!group || group[0] !== groupName) {\r\n group = [groupName, []];\r\n this._menuGroups.push(group);\r\n }\r\n group[1].push(item);\r\n // keep keys for eventing\r\n Menu._fillInKbExprKeys(item.when, this._contextKeys);\r\n // keep precondition keys for event if applicable\r\n if (isIMenuItem(item) && item.command.precondition) {\r\n Menu._fillInKbExprKeys(item.command.precondition, this._contextKeys);\r\n }\r\n // keep toggled keys for event if applicable\r\n if (isIMenuItem(item) && item.command.toggled) {\r\n const toggledExpression = item.command.toggled.condition || item.command.toggled;\r\n Menu._fillInKbExprKeys(toggledExpression, this._contextKeys);\r\n }\r\n }\r\n this._onDidChange.fire(this);\r\n }\r\n get onDidChange() {\r\n return this._onDidChange.event;\r\n }\r\n getActions(options) {\r\n const result = [];\r\n for (let group of this._menuGroups) {\r\n const [id, items] = group;\r\n const activeActions = [];\r\n for (const item of items) {\r\n if (this._contextKeyService.contextMatchesRules(item.when)) {\r\n const action = isIMenuItem(item)\r\n ? new MenuItemAction(item.command, item.alt, options, this._contextKeyService, this._commandService)\r\n : new SubmenuItemAction(item, this._menuService, this._contextKeyService, options);\r\n activeActions.push(action);\r\n }\r\n }\r\n if (activeActions.length > 0) {\r\n result.push([id, activeActions]);\r\n }\r\n }\r\n return result;\r\n }\r\n static _fillInKbExprKeys(exp, set) {\r\n if (exp) {\r\n for (let key of exp.keys()) {\r\n set.add(key);\r\n }\r\n }\r\n }\r\n static _compareMenuItems(a, b) {\r\n let aGroup = a.group;\r\n let bGroup = b.group;\r\n if (aGroup !== bGroup) {\r\n // Falsy groups come last\r\n if (!aGroup) {\r\n return 1;\r\n }\r\n else if (!bGroup) {\r\n return -1;\r\n }\r\n // 'navigation' group comes first\r\n if (aGroup === 'navigation') {\r\n return -1;\r\n }\r\n else if (bGroup === 'navigation') {\r\n return 1;\r\n }\r\n // lexical sort for groups\r\n let value = aGroup.localeCompare(bGroup);\r\n if (value !== 0) {\r\n return value;\r\n }\r\n }\r\n // sort on priority - default is 0\r\n let aPrio = a.order || 0;\r\n let bPrio = b.order || 0;\r\n if (aPrio < bPrio) {\r\n return -1;\r\n }\r\n else if (aPrio > bPrio) {\r\n return 1;\r\n }\r\n // sort on titles\r\n return Menu._compareTitles(isIMenuItem(a) ? a.command.title : a.title, isIMenuItem(b) ? b.command.title : b.title);\r\n }\r\n static _compareTitles(a, b) {\r\n const aStr = typeof a === 'string' ? a : a.value;\r\n const bStr = typeof b === 'string' ? b : b.value;\r\n return aStr.localeCompare(bStr);\r\n }\r\n};\r\nMenu = __decorate([\r\n __param(1, ICommandService),\r\n __param(2, IContextKeyService),\r\n __param(3, IMenuService)\r\n], Menu);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IContextKeyService, ContextKeyExpr, RawContextKey } from '../contextkey/common/contextkey.js';\r\nimport { FindInput } from '../../base/browser/ui/findinput/findInput.js';\r\nimport { KeybindingsRegistry } from '../keybinding/common/keybindingsRegistry.js';\r\nimport { ReplaceInput } from '../../base/browser/ui/findinput/replaceInput.js';\r\nexport const HistoryNavigationWidgetContext = 'historyNavigationWidget';\r\nexport const HistoryNavigationEnablementContext = 'historyNavigationEnabled';\r\nfunction bindContextScopedWidget(contextKeyService, widget, contextKey) {\r\n new RawContextKey(contextKey, widget).bindTo(contextKeyService);\r\n}\r\nfunction createWidgetScopedContextKeyService(contextKeyService, widget) {\r\n return contextKeyService.createScoped(widget.target);\r\n}\r\nfunction getContextScopedWidget(contextKeyService, contextKey) {\r\n return contextKeyService.getContext(document.activeElement).getValue(contextKey);\r\n}\r\nexport function createAndBindHistoryNavigationWidgetScopedContextKeyService(contextKeyService, widget) {\r\n const scopedContextKeyService = createWidgetScopedContextKeyService(contextKeyService, widget);\r\n bindContextScopedWidget(scopedContextKeyService, widget, HistoryNavigationWidgetContext);\r\n const historyNavigationEnablement = new RawContextKey(HistoryNavigationEnablementContext, true).bindTo(scopedContextKeyService);\r\n return { scopedContextKeyService, historyNavigationEnablement };\r\n}\r\nlet ContextScopedFindInput = class ContextScopedFindInput extends FindInput {\r\n constructor(container, contextViewProvider, options, contextKeyService, showFindOptions = false) {\r\n super(container, contextViewProvider, showFindOptions, options);\r\n this._register(createAndBindHistoryNavigationWidgetScopedContextKeyService(contextKeyService, { target: this.inputBox.element, historyNavigator: this.inputBox }).scopedContextKeyService);\r\n }\r\n};\r\nContextScopedFindInput = __decorate([\r\n __param(3, IContextKeyService)\r\n], ContextScopedFindInput);\r\nexport { ContextScopedFindInput };\r\nlet ContextScopedReplaceInput = class ContextScopedReplaceInput extends ReplaceInput {\r\n constructor(container, contextViewProvider, options, contextKeyService, showReplaceOptions = false) {\r\n super(container, contextViewProvider, showReplaceOptions, options);\r\n this._register(createAndBindHistoryNavigationWidgetScopedContextKeyService(contextKeyService, { target: this.inputBox.element, historyNavigator: this.inputBox }).scopedContextKeyService);\r\n }\r\n};\r\nContextScopedReplaceInput = __decorate([\r\n __param(3, IContextKeyService)\r\n], ContextScopedReplaceInput);\r\nexport { ContextScopedReplaceInput };\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'history.showPrevious',\r\n weight: 200 /* WorkbenchContrib */,\r\n when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetContext), ContextKeyExpr.equals(HistoryNavigationEnablementContext, true)),\r\n primary: 16 /* UpArrow */,\r\n secondary: [512 /* Alt */ | 16 /* UpArrow */],\r\n handler: (accessor, arg2) => {\r\n const widget = getContextScopedWidget(accessor.get(IContextKeyService), HistoryNavigationWidgetContext);\r\n if (widget) {\r\n const historyInputBox = widget.historyNavigator;\r\n historyInputBox.showPreviousValue();\r\n }\r\n }\r\n});\r\nKeybindingsRegistry.registerCommandAndKeybindingRule({\r\n id: 'history.showNext',\r\n weight: 200 /* WorkbenchContrib */,\r\n when: ContextKeyExpr.and(ContextKeyExpr.has(HistoryNavigationWidgetContext), ContextKeyExpr.equals(HistoryNavigationEnablementContext, true)),\r\n primary: 18 /* DownArrow */,\r\n secondary: [512 /* Alt */ | 18 /* DownArrow */],\r\n handler: (accessor, arg2) => {\r\n const widget = getContextScopedWidget(accessor.get(IContextKeyService), HistoryNavigationWidgetContext);\r\n if (widget) {\r\n const historyInputBox = widget.historyNavigator;\r\n historyInputBox.showNextValue();\r\n }\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { $ } from '../../../base/browser/dom.js';\r\nexport class BrowserClipboardService {\r\n constructor() {\r\n this.mapTextToType = new Map(); // unsupported in web (only in-memory)\r\n this.findText = ''; // unsupported in web (only in-memory)\r\n }\r\n writeText(text, type) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // With type: only in-memory is supported\r\n if (type) {\r\n this.mapTextToType.set(type, text);\r\n return;\r\n }\r\n // Guard access to navigator.clipboard with try/catch\r\n // as we have seen DOMExceptions in certain browsers\r\n // due to security policies.\r\n try {\r\n return yield navigator.clipboard.writeText(text);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n }\r\n // Fallback to textarea and execCommand solution\r\n const activeElement = document.activeElement;\r\n const textArea = document.body.appendChild($('textarea', { 'aria-hidden': true }));\r\n textArea.style.height = '1px';\r\n textArea.style.width = '1px';\r\n textArea.style.position = 'absolute';\r\n textArea.value = text;\r\n textArea.focus();\r\n textArea.select();\r\n document.execCommand('copy');\r\n if (activeElement instanceof HTMLElement) {\r\n activeElement.focus();\r\n }\r\n document.body.removeChild(textArea);\r\n return;\r\n });\r\n }\r\n readText(type) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // With type: only in-memory is supported\r\n if (type) {\r\n return this.mapTextToType.get(type) || '';\r\n }\r\n // Guard access to navigator.clipboard with try/catch\r\n // as we have seen DOMExceptions in certain browsers\r\n // due to security policies.\r\n try {\r\n return yield navigator.clipboard.readText();\r\n }\r\n catch (error) {\r\n console.error(error);\r\n return '';\r\n }\r\n });\r\n }\r\n readFindText() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return this.findText;\r\n });\r\n }\r\n writeFindText(text) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.findText = text;\r\n });\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IClipboardService = createDecorator('clipboardService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { validateConstraints } from '../../../base/common/types.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { LinkedList } from '../../../base/common/linkedList.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nexport const ICommandService = createDecorator('commandService');\r\nexport const CommandsRegistry = new class {\r\n constructor() {\r\n this._commands = new Map();\r\n this._onDidRegisterCommand = new Emitter();\r\n this.onDidRegisterCommand = this._onDidRegisterCommand.event;\r\n }\r\n registerCommand(idOrCommand, handler) {\r\n if (!idOrCommand) {\r\n throw new Error(`invalid command`);\r\n }\r\n if (typeof idOrCommand === 'string') {\r\n if (!handler) {\r\n throw new Error(`invalid command`);\r\n }\r\n return this.registerCommand({ id: idOrCommand, handler });\r\n }\r\n // add argument validation if rich command metadata is provided\r\n if (idOrCommand.description) {\r\n const constraints = [];\r\n for (let arg of idOrCommand.description.args) {\r\n constraints.push(arg.constraint);\r\n }\r\n const actualHandler = idOrCommand.handler;\r\n idOrCommand.handler = function (accessor, ...args) {\r\n validateConstraints(args, constraints);\r\n return actualHandler(accessor, ...args);\r\n };\r\n }\r\n // find a place to store the command\r\n const { id } = idOrCommand;\r\n let commands = this._commands.get(id);\r\n if (!commands) {\r\n commands = new LinkedList();\r\n this._commands.set(id, commands);\r\n }\r\n let removeFn = commands.unshift(idOrCommand);\r\n let ret = toDisposable(() => {\r\n removeFn();\r\n const command = this._commands.get(id);\r\n if (command === null || command === void 0 ? void 0 : command.isEmpty()) {\r\n this._commands.delete(id);\r\n }\r\n });\r\n // tell the world about this command\r\n this._onDidRegisterCommand.fire(id);\r\n return ret;\r\n }\r\n registerCommandAlias(oldId, newId) {\r\n return CommandsRegistry.registerCommand(oldId, (accessor, ...args) => accessor.get(ICommandService).executeCommand(newId, ...args));\r\n }\r\n getCommand(id) {\r\n const list = this._commands.get(id);\r\n if (!list || list.isEmpty()) {\r\n return undefined;\r\n }\r\n return Iterable.first(list);\r\n }\r\n getCommands() {\r\n const result = new Map();\r\n for (const key of this._commands.keys()) {\r\n const command = this.getCommand(key);\r\n if (command) {\r\n result.set(key, command);\r\n }\r\n }\r\n return result;\r\n }\r\n};\r\n","import { Registry } from '../../registry/common/platform.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Extensions } from './configurationRegistry.js';\r\nexport const IConfigurationService = createDecorator('configurationService');\r\nexport function toValuesTree(properties, conflictReporter) {\r\n const root = Object.create(null);\r\n for (let key in properties) {\r\n addToValueTree(root, key, properties[key], conflictReporter);\r\n }\r\n return root;\r\n}\r\nexport function addToValueTree(settingsTreeRoot, key, value, conflictReporter) {\r\n const segments = key.split('.');\r\n const last = segments.pop();\r\n let curr = settingsTreeRoot;\r\n for (let i = 0; i < segments.length; i++) {\r\n let s = segments[i];\r\n let obj = curr[s];\r\n switch (typeof obj) {\r\n case 'undefined':\r\n obj = curr[s] = Object.create(null);\r\n break;\r\n case 'object':\r\n break;\r\n default:\r\n conflictReporter(`Ignoring ${key} as ${segments.slice(0, i + 1).join('.')} is ${JSON.stringify(obj)}`);\r\n return;\r\n }\r\n curr = obj;\r\n }\r\n if (typeof curr === 'object' && curr !== null) {\r\n try {\r\n curr[last] = value; // workaround https://github.com/Microsoft/vscode/issues/13606\r\n }\r\n catch (e) {\r\n conflictReporter(`Ignoring ${key} as ${segments.join('.')} is ${JSON.stringify(curr)}`);\r\n }\r\n }\r\n else {\r\n conflictReporter(`Ignoring ${key} as ${segments.join('.')} is ${JSON.stringify(curr)}`);\r\n }\r\n}\r\nexport function removeFromValueTree(valueTree, key) {\r\n const segments = key.split('.');\r\n doRemoveFromValueTree(valueTree, segments);\r\n}\r\nfunction doRemoveFromValueTree(valueTree, segments) {\r\n const first = segments.shift();\r\n if (segments.length === 0) {\r\n // Reached last segment\r\n delete valueTree[first];\r\n return;\r\n }\r\n if (Object.keys(valueTree).indexOf(first) !== -1) {\r\n const value = valueTree[first];\r\n if (typeof value === 'object' && !Array.isArray(value)) {\r\n doRemoveFromValueTree(value, segments);\r\n if (Object.keys(value).length === 0) {\r\n delete valueTree[first];\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * A helper function to get the configuration value with a specific settings path (e.g. config.some.setting)\r\n */\r\nexport function getConfigurationValue(config, settingPath, defaultValue) {\r\n function accessSetting(config, path) {\r\n let current = config;\r\n for (const component of path) {\r\n if (typeof current !== 'object' || current === null) {\r\n return undefined;\r\n }\r\n current = current[component];\r\n }\r\n return current;\r\n }\r\n const path = settingPath.split('.');\r\n const result = accessSetting(config, path);\r\n return typeof result === 'undefined' ? defaultValue : result;\r\n}\r\nexport function getConfigurationKeys() {\r\n const properties = Registry.as(Extensions.Configuration).getConfigurationProperties();\r\n return Object.keys(properties);\r\n}\r\nexport function getDefaultValues() {\r\n const valueTreeRoot = Object.create(null);\r\n const properties = Registry.as(Extensions.Configuration).getConfigurationProperties();\r\n for (let key in properties) {\r\n let value = properties[key].default;\r\n addToValueTree(valueTreeRoot, key, value, message => console.error(`Conflict in default settings: ${message}`));\r\n }\r\n return valueTreeRoot;\r\n}\r\n","import { ResourceMap } from '../../../base/common/map.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport * as objects from '../../../base/common/objects.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { OVERRIDE_PROPERTY_PATTERN, overrideIdentifierFromKey } from './configurationRegistry.js';\r\nimport { addToValueTree, toValuesTree, getConfigurationValue, getDefaultValues, getConfigurationKeys, removeFromValueTree } from './configuration.js';\r\nexport class ConfigurationModel {\r\n constructor(_contents = {}, _keys = [], _overrides = []) {\r\n this._contents = _contents;\r\n this._keys = _keys;\r\n this._overrides = _overrides;\r\n this.isFrozen = false;\r\n }\r\n get contents() {\r\n return this.checkAndFreeze(this._contents);\r\n }\r\n get overrides() {\r\n return this.checkAndFreeze(this._overrides);\r\n }\r\n get keys() {\r\n return this.checkAndFreeze(this._keys);\r\n }\r\n isEmpty() {\r\n return this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\r\n }\r\n getValue(section) {\r\n return section ? getConfigurationValue(this.contents, section) : this.contents;\r\n }\r\n override(identifier) {\r\n const overrideContents = this.getContentsForOverrideIdentifer(identifier);\r\n if (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\r\n // If there are no valid overrides, return self\r\n return this;\r\n }\r\n let contents = {};\r\n for (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\r\n let contentsForKey = this.contents[key];\r\n let overrideContentsForKey = overrideContents[key];\r\n // If there are override contents for the key, clone and merge otherwise use base contents\r\n if (overrideContentsForKey) {\r\n // Clone and merge only if base contents and override contents are of type object otherwise just override\r\n if (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\r\n contentsForKey = objects.deepClone(contentsForKey);\r\n this.mergeContents(contentsForKey, overrideContentsForKey);\r\n }\r\n else {\r\n contentsForKey = overrideContentsForKey;\r\n }\r\n }\r\n contents[key] = contentsForKey;\r\n }\r\n return new ConfigurationModel(contents, this.keys, this.overrides);\r\n }\r\n merge(...others) {\r\n const contents = objects.deepClone(this.contents);\r\n const overrides = objects.deepClone(this.overrides);\r\n const keys = [...this.keys];\r\n for (const other of others) {\r\n this.mergeContents(contents, other.contents);\r\n for (const otherOverride of other.overrides) {\r\n const [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\r\n if (override) {\r\n this.mergeContents(override.contents, otherOverride.contents);\r\n }\r\n else {\r\n overrides.push(objects.deepClone(otherOverride));\r\n }\r\n }\r\n for (const key of other.keys) {\r\n if (keys.indexOf(key) === -1) {\r\n keys.push(key);\r\n }\r\n }\r\n }\r\n return new ConfigurationModel(contents, keys, overrides);\r\n }\r\n freeze() {\r\n this.isFrozen = true;\r\n return this;\r\n }\r\n mergeContents(source, target) {\r\n for (const key of Object.keys(target)) {\r\n if (key in source) {\r\n if (types.isObject(source[key]) && types.isObject(target[key])) {\r\n this.mergeContents(source[key], target[key]);\r\n continue;\r\n }\r\n }\r\n source[key] = objects.deepClone(target[key]);\r\n }\r\n }\r\n checkAndFreeze(data) {\r\n if (this.isFrozen && !Object.isFrozen(data)) {\r\n return objects.deepFreeze(data);\r\n }\r\n return data;\r\n }\r\n getContentsForOverrideIdentifer(identifier) {\r\n for (const override of this.overrides) {\r\n if (override.identifiers.indexOf(identifier) !== -1) {\r\n return override.contents;\r\n }\r\n }\r\n return null;\r\n }\r\n toJSON() {\r\n return {\r\n contents: this.contents,\r\n overrides: this.overrides,\r\n keys: this.keys\r\n };\r\n }\r\n // Update methods\r\n setValue(key, value) {\r\n this.addKey(key);\r\n addToValueTree(this.contents, key, value, e => { throw new Error(e); });\r\n }\r\n removeValue(key) {\r\n if (this.removeKey(key)) {\r\n removeFromValueTree(this.contents, key);\r\n }\r\n }\r\n addKey(key) {\r\n let index = this.keys.length;\r\n for (let i = 0; i < index; i++) {\r\n if (key.indexOf(this.keys[i]) === 0) {\r\n index = i;\r\n }\r\n }\r\n this.keys.splice(index, 1, key);\r\n }\r\n removeKey(key) {\r\n let index = this.keys.indexOf(key);\r\n if (index !== -1) {\r\n this.keys.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nexport class DefaultConfigurationModel extends ConfigurationModel {\r\n constructor() {\r\n const contents = getDefaultValues();\r\n const keys = getConfigurationKeys();\r\n const overrides = [];\r\n for (const key of Object.keys(contents)) {\r\n if (OVERRIDE_PROPERTY_PATTERN.test(key)) {\r\n overrides.push({\r\n identifiers: [overrideIdentifierFromKey(key).trim()],\r\n keys: Object.keys(contents[key]),\r\n contents: toValuesTree(contents[key], message => console.error(`Conflict in default settings file: ${message}`)),\r\n });\r\n }\r\n }\r\n super(contents, keys, overrides);\r\n }\r\n}\r\nexport class Configuration {\r\n constructor(_defaultConfiguration, _localUserConfiguration, _remoteUserConfiguration = new ConfigurationModel(), _workspaceConfiguration = new ConfigurationModel(), _folderConfigurations = new ResourceMap(), _memoryConfiguration = new ConfigurationModel(), _memoryConfigurationByResource = new ResourceMap(), _freeze = true) {\r\n this._defaultConfiguration = _defaultConfiguration;\r\n this._localUserConfiguration = _localUserConfiguration;\r\n this._remoteUserConfiguration = _remoteUserConfiguration;\r\n this._workspaceConfiguration = _workspaceConfiguration;\r\n this._folderConfigurations = _folderConfigurations;\r\n this._memoryConfiguration = _memoryConfiguration;\r\n this._memoryConfigurationByResource = _memoryConfigurationByResource;\r\n this._freeze = _freeze;\r\n this._workspaceConsolidatedConfiguration = null;\r\n this._foldersConsolidatedConfigurations = new ResourceMap();\r\n this._userConfiguration = null;\r\n }\r\n getValue(section, overrides, workspace) {\r\n const consolidateConfigurationModel = this.getConsolidateConfigurationModel(overrides, workspace);\r\n return consolidateConfigurationModel.getValue(section);\r\n }\r\n updateValue(key, value, overrides = {}) {\r\n let memoryConfiguration;\r\n if (overrides.resource) {\r\n memoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\r\n if (!memoryConfiguration) {\r\n memoryConfiguration = new ConfigurationModel();\r\n this._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\r\n }\r\n }\r\n else {\r\n memoryConfiguration = this._memoryConfiguration;\r\n }\r\n if (value === undefined) {\r\n memoryConfiguration.removeValue(key);\r\n }\r\n else {\r\n memoryConfiguration.setValue(key, value);\r\n }\r\n if (!overrides.resource) {\r\n this._workspaceConsolidatedConfiguration = null;\r\n }\r\n }\r\n get userConfiguration() {\r\n if (!this._userConfiguration) {\r\n this._userConfiguration = this._remoteUserConfiguration.isEmpty() ? this._localUserConfiguration : this._localUserConfiguration.merge(this._remoteUserConfiguration);\r\n if (this._freeze) {\r\n this._userConfiguration.freeze();\r\n }\r\n }\r\n return this._userConfiguration;\r\n }\r\n getConsolidateConfigurationModel(overrides, workspace) {\r\n let configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\r\n return overrides.overrideIdentifier ? configurationModel.override(overrides.overrideIdentifier) : configurationModel;\r\n }\r\n getConsolidatedConfigurationModelForResource({ resource }, workspace) {\r\n let consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\r\n if (workspace && resource) {\r\n const root = workspace.getFolder(resource);\r\n if (root) {\r\n consolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\r\n }\r\n const memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\r\n if (memoryConfigurationForResource) {\r\n consolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\r\n }\r\n }\r\n return consolidateConfiguration;\r\n }\r\n getWorkspaceConsolidatedConfiguration() {\r\n if (!this._workspaceConsolidatedConfiguration) {\r\n this._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\r\n if (this._freeze) {\r\n this._workspaceConfiguration = this._workspaceConfiguration.freeze();\r\n }\r\n }\r\n return this._workspaceConsolidatedConfiguration;\r\n }\r\n getFolderConsolidatedConfiguration(folder) {\r\n let folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\r\n if (!folderConsolidatedConfiguration) {\r\n const workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\r\n const folderConfiguration = this._folderConfigurations.get(folder);\r\n if (folderConfiguration) {\r\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\r\n if (this._freeze) {\r\n folderConsolidatedConfiguration = folderConsolidatedConfiguration.freeze();\r\n }\r\n this._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\r\n }\r\n else {\r\n folderConsolidatedConfiguration = workspaceConsolidateConfiguration;\r\n }\r\n }\r\n return folderConsolidatedConfiguration;\r\n }\r\n toData() {\r\n return {\r\n defaults: {\r\n contents: this._defaultConfiguration.contents,\r\n overrides: this._defaultConfiguration.overrides,\r\n keys: this._defaultConfiguration.keys\r\n },\r\n user: {\r\n contents: this.userConfiguration.contents,\r\n overrides: this.userConfiguration.overrides,\r\n keys: this.userConfiguration.keys\r\n },\r\n workspace: {\r\n contents: this._workspaceConfiguration.contents,\r\n overrides: this._workspaceConfiguration.overrides,\r\n keys: this._workspaceConfiguration.keys\r\n },\r\n folders: [...this._folderConfigurations.keys()].reduce((result, folder) => {\r\n const { contents, overrides, keys } = this._folderConfigurations.get(folder);\r\n result.push([folder, { contents, overrides, keys }]);\r\n return result;\r\n }, [])\r\n };\r\n }\r\n static parse(data) {\r\n const defaultConfiguration = this.parseConfigurationModel(data.defaults);\r\n const userConfiguration = this.parseConfigurationModel(data.user);\r\n const workspaceConfiguration = this.parseConfigurationModel(data.workspace);\r\n const folders = data.folders.reduce((result, value) => {\r\n result.set(URI.revive(value[0]), this.parseConfigurationModel(value[1]));\r\n return result;\r\n }, new ResourceMap());\r\n return new Configuration(defaultConfiguration, userConfiguration, new ConfigurationModel(), workspaceConfiguration, folders, new ConfigurationModel(), new ResourceMap(), false);\r\n }\r\n static parseConfigurationModel(model) {\r\n return new ConfigurationModel(model.contents, model.keys, model.overrides).freeze();\r\n }\r\n}\r\nexport class ConfigurationChangeEvent {\r\n constructor(change, previous, currentConfiguraiton, currentWorkspace) {\r\n this.change = change;\r\n this.previous = previous;\r\n this.currentConfiguraiton = currentConfiguraiton;\r\n this.currentWorkspace = currentWorkspace;\r\n this._previousConfiguration = undefined;\r\n const keysSet = new Set();\r\n change.keys.forEach(key => keysSet.add(key));\r\n change.overrides.forEach(([, keys]) => keys.forEach(key => keysSet.add(key)));\r\n this.affectedKeys = [...keysSet.values()];\r\n const configurationModel = new ConfigurationModel();\r\n this.affectedKeys.forEach(key => configurationModel.setValue(key, {}));\r\n this.affectedKeysTree = configurationModel.contents;\r\n }\r\n get previousConfiguration() {\r\n if (!this._previousConfiguration && this.previous) {\r\n this._previousConfiguration = Configuration.parse(this.previous.data);\r\n }\r\n return this._previousConfiguration;\r\n }\r\n affectsConfiguration(section, overrides) {\r\n var _a;\r\n if (this.doesAffectedKeysTreeContains(this.affectedKeysTree, section)) {\r\n if (overrides) {\r\n const value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, (_a = this.previous) === null || _a === void 0 ? void 0 : _a.workspace) : undefined;\r\n const value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\r\n return !objects.equals(value1, value2);\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n doesAffectedKeysTreeContains(affectedKeysTree, section) {\r\n let requestedTree = toValuesTree({ [section]: true }, () => { });\r\n let key;\r\n while (typeof requestedTree === 'object' && (key = Object.keys(requestedTree)[0])) { // Only one key should present, since we added only one property\r\n affectedKeysTree = affectedKeysTree[key];\r\n if (!affectedKeysTree) {\r\n return false; // Requested tree is not found\r\n }\r\n requestedTree = requestedTree[key];\r\n }\r\n return true;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport * as types from '../../../base/common/types.js';\r\nimport { Extensions as JSONExtensions } from '../../jsonschemas/common/jsonContributionRegistry.js';\r\nexport const Extensions = {\r\n Configuration: 'base.contributions.configuration'\r\n};\r\nexport const allSettings = { properties: {}, patternProperties: {} };\r\nexport const applicationSettings = { properties: {}, patternProperties: {} };\r\nexport const machineSettings = { properties: {}, patternProperties: {} };\r\nexport const machineOverridableSettings = { properties: {}, patternProperties: {} };\r\nexport const windowSettings = { properties: {}, patternProperties: {} };\r\nexport const resourceSettings = { properties: {}, patternProperties: {} };\r\nexport const resourceLanguageSettingsSchemaId = 'vscode://schemas/settings/resourceLanguage';\r\nconst contributionRegistry = Registry.as(JSONExtensions.JSONContribution);\r\nclass ConfigurationRegistry {\r\n constructor() {\r\n this.overrideIdentifiers = new Set();\r\n this._onDidSchemaChange = new Emitter();\r\n this._onDidUpdateConfiguration = new Emitter();\r\n this.defaultValues = {};\r\n this.defaultLanguageConfigurationOverridesNode = {\r\n id: 'defaultOverrides',\r\n title: nls.localize('defaultLanguageConfigurationOverrides.title', \"Default Language Configuration Overrides\"),\r\n properties: {}\r\n };\r\n this.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];\r\n this.resourceLanguageSettingsSchema = { properties: {}, patternProperties: {}, additionalProperties: false, errorMessage: 'Unknown editor configuration setting', allowTrailingCommas: true, allowComments: true };\r\n this.configurationProperties = {};\r\n this.excludedConfigurationProperties = {};\r\n contributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\r\n }\r\n registerConfiguration(configuration, validate = true) {\r\n this.registerConfigurations([configuration], validate);\r\n }\r\n registerConfigurations(configurations, validate = true) {\r\n const properties = [];\r\n configurations.forEach(configuration => {\r\n properties.push(...this.validateAndRegisterProperties(configuration, validate)); // fills in defaults\r\n this.configurationContributors.push(configuration);\r\n this.registerJSONConfiguration(configuration);\r\n });\r\n contributionRegistry.registerSchema(resourceLanguageSettingsSchemaId, this.resourceLanguageSettingsSchema);\r\n this._onDidSchemaChange.fire();\r\n this._onDidUpdateConfiguration.fire(properties);\r\n }\r\n registerOverrideIdentifiers(overrideIdentifiers) {\r\n for (const overrideIdentifier of overrideIdentifiers) {\r\n this.overrideIdentifiers.add(overrideIdentifier);\r\n }\r\n this.updateOverridePropertyPatternKey();\r\n }\r\n validateAndRegisterProperties(configuration, validate = true, scope = 3 /* WINDOW */) {\r\n scope = types.isUndefinedOrNull(configuration.scope) ? scope : configuration.scope;\r\n let propertyKeys = [];\r\n let properties = configuration.properties;\r\n if (properties) {\r\n for (let key in properties) {\r\n if (validate && validateProperty(key)) {\r\n delete properties[key];\r\n continue;\r\n }\r\n const property = properties[key];\r\n // update default value\r\n this.updatePropertyDefaultValue(key, property);\r\n // update scope\r\n if (OVERRIDE_PROPERTY_PATTERN.test(key)) {\r\n property.scope = undefined; // No scope for overridable properties `[${identifier}]`\r\n }\r\n else {\r\n property.scope = types.isUndefinedOrNull(property.scope) ? scope : property.scope;\r\n }\r\n // Add to properties maps\r\n // Property is included by default if 'included' is unspecified\r\n if (properties[key].hasOwnProperty('included') && !properties[key].included) {\r\n this.excludedConfigurationProperties[key] = properties[key];\r\n delete properties[key];\r\n continue;\r\n }\r\n else {\r\n this.configurationProperties[key] = properties[key];\r\n }\r\n if (!properties[key].deprecationMessage && properties[key].markdownDeprecationMessage) {\r\n // If not set, default deprecationMessage to the markdown source\r\n properties[key].deprecationMessage = properties[key].markdownDeprecationMessage;\r\n }\r\n propertyKeys.push(key);\r\n }\r\n }\r\n let subNodes = configuration.allOf;\r\n if (subNodes) {\r\n for (let node of subNodes) {\r\n propertyKeys.push(...this.validateAndRegisterProperties(node, validate, scope));\r\n }\r\n }\r\n return propertyKeys;\r\n }\r\n getConfigurationProperties() {\r\n return this.configurationProperties;\r\n }\r\n registerJSONConfiguration(configuration) {\r\n const register = (configuration) => {\r\n let properties = configuration.properties;\r\n if (properties) {\r\n for (const key in properties) {\r\n this.updateSchema(key, properties[key]);\r\n }\r\n }\r\n let subNodes = configuration.allOf;\r\n if (subNodes) {\r\n subNodes.forEach(register);\r\n }\r\n };\r\n register(configuration);\r\n }\r\n updateSchema(key, property) {\r\n allSettings.properties[key] = property;\r\n switch (property.scope) {\r\n case 1 /* APPLICATION */:\r\n applicationSettings.properties[key] = property;\r\n break;\r\n case 2 /* MACHINE */:\r\n machineSettings.properties[key] = property;\r\n break;\r\n case 6 /* MACHINE_OVERRIDABLE */:\r\n machineOverridableSettings.properties[key] = property;\r\n break;\r\n case 3 /* WINDOW */:\r\n windowSettings.properties[key] = property;\r\n break;\r\n case 4 /* RESOURCE */:\r\n resourceSettings.properties[key] = property;\r\n break;\r\n case 5 /* LANGUAGE_OVERRIDABLE */:\r\n resourceSettings.properties[key] = property;\r\n this.resourceLanguageSettingsSchema.properties[key] = property;\r\n break;\r\n }\r\n }\r\n updateOverridePropertyPatternKey() {\r\n for (const overrideIdentifier of this.overrideIdentifiers.values()) {\r\n const overrideIdentifierProperty = `[${overrideIdentifier}]`;\r\n const resourceLanguagePropertiesSchema = {\r\n type: 'object',\r\n description: nls.localize('overrideSettings.defaultDescription', \"Configure editor settings to be overridden for a language.\"),\r\n errorMessage: nls.localize('overrideSettings.errorMessage', \"This setting does not support per-language configuration.\"),\r\n $ref: resourceLanguageSettingsSchemaId,\r\n };\r\n this.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);\r\n allSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n applicationSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n machineSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n machineOverridableSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n windowSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n resourceSettings.properties[overrideIdentifierProperty] = resourceLanguagePropertiesSchema;\r\n }\r\n this._onDidSchemaChange.fire();\r\n }\r\n updatePropertyDefaultValue(key, property) {\r\n let defaultValue = this.defaultValues[key];\r\n if (types.isUndefined(defaultValue)) {\r\n defaultValue = property.default;\r\n }\r\n if (types.isUndefined(defaultValue)) {\r\n defaultValue = getDefaultValue(property.type);\r\n }\r\n property.default = defaultValue;\r\n }\r\n}\r\nconst OVERRIDE_PROPERTY = '\\\\[.*\\\\]$';\r\nexport const OVERRIDE_PROPERTY_PATTERN = new RegExp(OVERRIDE_PROPERTY);\r\nexport function overrideIdentifierFromKey(key) {\r\n return key.substring(1, key.length - 1);\r\n}\r\nexport function getDefaultValue(type) {\r\n const t = Array.isArray(type) ? type[0] : type;\r\n switch (t) {\r\n case 'boolean':\r\n return false;\r\n case 'integer':\r\n case 'number':\r\n return 0;\r\n case 'string':\r\n return '';\r\n case 'array':\r\n return [];\r\n case 'object':\r\n return {};\r\n default:\r\n return null;\r\n }\r\n}\r\nconst configurationRegistry = new ConfigurationRegistry();\r\nRegistry.add(Extensions.Configuration, configurationRegistry);\r\nexport function validateProperty(property) {\r\n if (OVERRIDE_PROPERTY_PATTERN.test(property)) {\r\n return nls.localize('config.property.languageDefault', \"Cannot register '{0}'. This matches property pattern '\\\\\\\\[.*\\\\\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.\", property);\r\n }\r\n if (configurationRegistry.getConfigurationProperties()[property] !== undefined) {\r\n return nls.localize('config.property.duplicate', \"Cannot register '{0}'. This property is already registered.\", property);\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { Event, PauseableEmitter } from '../../../base/common/event.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { CommandsRegistry } from '../../commands/common/commands.js';\r\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\r\nimport { IContextKeyService, SET_CONTEXT_COMMAND_ID } from '../common/contextkey.js';\r\nimport { KeybindingResolver } from '../../keybinding/common/keybindingResolver.js';\r\nconst KEYBINDING_CONTEXT_ATTR = 'data-keybinding-context';\r\nexport class Context {\r\n constructor(id, parent) {\r\n this._id = id;\r\n this._parent = parent;\r\n this._value = Object.create(null);\r\n this._value['_contextId'] = id;\r\n }\r\n setValue(key, value) {\r\n // console.log('SET ' + key + ' = ' + value + ' ON ' + this._id);\r\n if (this._value[key] !== value) {\r\n this._value[key] = value;\r\n return true;\r\n }\r\n return false;\r\n }\r\n removeValue(key) {\r\n // console.log('REMOVE ' + key + ' FROM ' + this._id);\r\n if (key in this._value) {\r\n delete this._value[key];\r\n return true;\r\n }\r\n return false;\r\n }\r\n getValue(key) {\r\n const ret = this._value[key];\r\n if (typeof ret === 'undefined' && this._parent) {\r\n return this._parent.getValue(key);\r\n }\r\n return ret;\r\n }\r\n}\r\nclass NullContext extends Context {\r\n constructor() {\r\n super(-1, null);\r\n }\r\n setValue(key, value) {\r\n return false;\r\n }\r\n removeValue(key) {\r\n return false;\r\n }\r\n getValue(key) {\r\n return undefined;\r\n }\r\n}\r\nNullContext.INSTANCE = new NullContext();\r\nclass ConfigAwareContextValuesContainer extends Context {\r\n constructor(id, _configurationService, emitter) {\r\n super(id, null);\r\n this._configurationService = _configurationService;\r\n this._values = new Map();\r\n this._listener = this._configurationService.onDidChangeConfiguration(event => {\r\n if (event.source === 6 /* DEFAULT */) {\r\n // new setting, reset everything\r\n const allKeys = Array.from(this._values.keys());\r\n this._values.clear();\r\n emitter.fire(new ArrayContextKeyChangeEvent(allKeys));\r\n }\r\n else {\r\n const changedKeys = [];\r\n for (const configKey of event.affectedKeys) {\r\n const contextKey = `config.${configKey}`;\r\n if (this._values.has(contextKey)) {\r\n this._values.delete(contextKey);\r\n changedKeys.push(contextKey);\r\n }\r\n }\r\n emitter.fire(new ArrayContextKeyChangeEvent(changedKeys));\r\n }\r\n });\r\n }\r\n dispose() {\r\n this._listener.dispose();\r\n }\r\n getValue(key) {\r\n if (key.indexOf(ConfigAwareContextValuesContainer._keyPrefix) !== 0) {\r\n return super.getValue(key);\r\n }\r\n if (this._values.has(key)) {\r\n return this._values.get(key);\r\n }\r\n const configKey = key.substr(ConfigAwareContextValuesContainer._keyPrefix.length);\r\n const configValue = this._configurationService.getValue(configKey);\r\n let value = undefined;\r\n switch (typeof configValue) {\r\n case 'number':\r\n case 'boolean':\r\n case 'string':\r\n value = configValue;\r\n break;\r\n default:\r\n if (Array.isArray(configValue)) {\r\n value = JSON.stringify(configValue);\r\n }\r\n }\r\n this._values.set(key, value);\r\n return value;\r\n }\r\n setValue(key, value) {\r\n return super.setValue(key, value);\r\n }\r\n removeValue(key) {\r\n return super.removeValue(key);\r\n }\r\n}\r\nConfigAwareContextValuesContainer._keyPrefix = 'config.';\r\nclass ContextKey {\r\n constructor(service, key, defaultValue) {\r\n this._service = service;\r\n this._key = key;\r\n this._defaultValue = defaultValue;\r\n this.reset();\r\n }\r\n set(value) {\r\n this._service.setContext(this._key, value);\r\n }\r\n reset() {\r\n if (typeof this._defaultValue === 'undefined') {\r\n this._service.removeContext(this._key);\r\n }\r\n else {\r\n this._service.setContext(this._key, this._defaultValue);\r\n }\r\n }\r\n get() {\r\n return this._service.getContextKeyValue(this._key);\r\n }\r\n}\r\nclass SimpleContextKeyChangeEvent {\r\n constructor(key) {\r\n this.key = key;\r\n }\r\n affectsSome(keys) {\r\n return keys.has(this.key);\r\n }\r\n}\r\nclass ArrayContextKeyChangeEvent {\r\n constructor(keys) {\r\n this.keys = keys;\r\n }\r\n affectsSome(keys) {\r\n for (const key of this.keys) {\r\n if (keys.has(key)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nclass CompositeContextKeyChangeEvent {\r\n constructor(events) {\r\n this.events = events;\r\n }\r\n affectsSome(keys) {\r\n for (const e of this.events) {\r\n if (e.affectsSome(keys)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\nexport class AbstractContextKeyService {\r\n constructor(myContextId) {\r\n this._onDidChangeContext = new PauseableEmitter({ merge: input => new CompositeContextKeyChangeEvent(input) });\r\n this._isDisposed = false;\r\n this._myContextId = myContextId;\r\n }\r\n createKey(key, defaultValue) {\r\n if (this._isDisposed) {\r\n throw new Error(`AbstractContextKeyService has been disposed`);\r\n }\r\n return new ContextKey(this, key, defaultValue);\r\n }\r\n get onDidChangeContext() {\r\n return this._onDidChangeContext.event;\r\n }\r\n bufferChangeEvents(callback) {\r\n this._onDidChangeContext.pause();\r\n try {\r\n callback();\r\n }\r\n finally {\r\n this._onDidChangeContext.resume();\r\n }\r\n }\r\n createScoped(domNode) {\r\n if (this._isDisposed) {\r\n throw new Error(`AbstractContextKeyService has been disposed`);\r\n }\r\n return new ScopedContextKeyService(this, domNode);\r\n }\r\n contextMatchesRules(rules) {\r\n if (this._isDisposed) {\r\n throw new Error(`AbstractContextKeyService has been disposed`);\r\n }\r\n const context = this.getContextValuesContainer(this._myContextId);\r\n const result = KeybindingResolver.contextMatchesRules(context, rules);\r\n // console.group(rules.serialize() + ' -> ' + result);\r\n // rules.keys().forEach(key => { console.log(key, ctx[key]); });\r\n // console.groupEnd();\r\n return result;\r\n }\r\n getContextKeyValue(key) {\r\n if (this._isDisposed) {\r\n return undefined;\r\n }\r\n return this.getContextValuesContainer(this._myContextId).getValue(key);\r\n }\r\n setContext(key, value) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n const myContext = this.getContextValuesContainer(this._myContextId);\r\n if (!myContext) {\r\n return;\r\n }\r\n if (myContext.setValue(key, value)) {\r\n this._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\r\n }\r\n }\r\n removeContext(key) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n if (this.getContextValuesContainer(this._myContextId).removeValue(key)) {\r\n this._onDidChangeContext.fire(new SimpleContextKeyChangeEvent(key));\r\n }\r\n }\r\n getContext(target) {\r\n if (this._isDisposed) {\r\n return NullContext.INSTANCE;\r\n }\r\n return this.getContextValuesContainer(findContextAttr(target));\r\n }\r\n}\r\nlet ContextKeyService = class ContextKeyService extends AbstractContextKeyService {\r\n constructor(configurationService) {\r\n super(0);\r\n this._contexts = new Map();\r\n this._toDispose = new DisposableStore();\r\n this._lastContextId = 0;\r\n const myContext = new ConfigAwareContextValuesContainer(this._myContextId, configurationService, this._onDidChangeContext);\r\n this._contexts.set(this._myContextId, myContext);\r\n this._toDispose.add(myContext);\r\n // Uncomment this to see the contexts continuously logged\r\n // let lastLoggedValue: string | null = null;\r\n // setInterval(() => {\r\n // \tlet values = Object.keys(this._contexts).map((key) => this._contexts[key]);\r\n // \tlet logValue = values.map(v => JSON.stringify(v._value, null, '\\t')).join('\\n');\r\n // \tif (lastLoggedValue !== logValue) {\r\n // \t\tlastLoggedValue = logValue;\r\n // \t\tconsole.log(lastLoggedValue);\r\n // \t}\r\n // }, 2000);\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n this._toDispose.dispose();\r\n }\r\n getContextValuesContainer(contextId) {\r\n if (this._isDisposed) {\r\n return NullContext.INSTANCE;\r\n }\r\n return this._contexts.get(contextId) || NullContext.INSTANCE;\r\n }\r\n createChildContext(parentContextId = this._myContextId) {\r\n if (this._isDisposed) {\r\n throw new Error(`ContextKeyService has been disposed`);\r\n }\r\n let id = (++this._lastContextId);\r\n this._contexts.set(id, new Context(id, this.getContextValuesContainer(parentContextId)));\r\n return id;\r\n }\r\n disposeContext(contextId) {\r\n if (!this._isDisposed) {\r\n this._contexts.delete(contextId);\r\n }\r\n }\r\n};\r\nContextKeyService = __decorate([\r\n __param(0, IConfigurationService)\r\n], ContextKeyService);\r\nexport { ContextKeyService };\r\nclass ScopedContextKeyService extends AbstractContextKeyService {\r\n constructor(parent, domNode) {\r\n super(parent.createChildContext());\r\n this._parent = parent;\r\n if (domNode) {\r\n this._domNode = domNode;\r\n this._domNode.setAttribute(KEYBINDING_CONTEXT_ATTR, String(this._myContextId));\r\n }\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n this._parent.disposeContext(this._myContextId);\r\n if (this._domNode) {\r\n this._domNode.removeAttribute(KEYBINDING_CONTEXT_ATTR);\r\n this._domNode = undefined;\r\n }\r\n }\r\n get onDidChangeContext() {\r\n return Event.any(this._parent.onDidChangeContext, this._onDidChangeContext.event);\r\n }\r\n getContextValuesContainer(contextId) {\r\n if (this._isDisposed) {\r\n return NullContext.INSTANCE;\r\n }\r\n return this._parent.getContextValuesContainer(contextId);\r\n }\r\n createChildContext(parentContextId = this._myContextId) {\r\n if (this._isDisposed) {\r\n throw new Error(`ScopedContextKeyService has been disposed`);\r\n }\r\n return this._parent.createChildContext(parentContextId);\r\n }\r\n disposeContext(contextId) {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n this._parent.disposeContext(contextId);\r\n }\r\n}\r\nfunction findContextAttr(domNode) {\r\n while (domNode) {\r\n if (domNode.hasAttribute(KEYBINDING_CONTEXT_ATTR)) {\r\n const attr = domNode.getAttribute(KEYBINDING_CONTEXT_ATTR);\r\n if (attr) {\r\n return parseInt(attr, 10);\r\n }\r\n return NaN;\r\n }\r\n domNode = domNode.parentElement;\r\n }\r\n return 0;\r\n}\r\nCommandsRegistry.registerCommand(SET_CONTEXT_COMMAND_ID, function (accessor, contextKey, contextValue) {\r\n accessor.get(IContextKeyService).createKey(String(contextKey), contextValue);\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isFalsyOrWhitespace } from '../../../base/common/strings.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { isMacintosh, isLinux, isWindows, isWeb } from '../../../base/common/platform.js';\r\nconst STATIC_VALUES = new Map();\r\nSTATIC_VALUES.set('false', false);\r\nSTATIC_VALUES.set('true', true);\r\nSTATIC_VALUES.set('isMac', isMacintosh);\r\nSTATIC_VALUES.set('isLinux', isLinux);\r\nSTATIC_VALUES.set('isWindows', isWindows);\r\nSTATIC_VALUES.set('isWeb', isWeb);\r\nSTATIC_VALUES.set('isMacNative', isMacintosh && !isWeb);\r\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\r\nexport class ContextKeyExpr {\r\n static has(key) {\r\n return ContextKeyDefinedExpr.create(key);\r\n }\r\n static equals(key, value) {\r\n return ContextKeyEqualsExpr.create(key, value);\r\n }\r\n static regex(key, value) {\r\n return ContextKeyRegexExpr.create(key, value);\r\n }\r\n static not(key) {\r\n return ContextKeyNotExpr.create(key);\r\n }\r\n static and(...expr) {\r\n return ContextKeyAndExpr.create(expr);\r\n }\r\n static or(...expr) {\r\n return ContextKeyOrExpr.create(expr);\r\n }\r\n static deserialize(serialized, strict = false) {\r\n if (!serialized) {\r\n return undefined;\r\n }\r\n return this._deserializeOrExpression(serialized, strict);\r\n }\r\n static _deserializeOrExpression(serialized, strict) {\r\n let pieces = serialized.split('||');\r\n return ContextKeyOrExpr.create(pieces.map(p => this._deserializeAndExpression(p, strict)));\r\n }\r\n static _deserializeAndExpression(serialized, strict) {\r\n let pieces = serialized.split('&&');\r\n return ContextKeyAndExpr.create(pieces.map(p => this._deserializeOne(p, strict)));\r\n }\r\n static _deserializeOne(serializedOne, strict) {\r\n serializedOne = serializedOne.trim();\r\n if (serializedOne.indexOf('!=') >= 0) {\r\n let pieces = serializedOne.split('!=');\r\n return ContextKeyNotEqualsExpr.create(pieces[0].trim(), this._deserializeValue(pieces[1], strict));\r\n }\r\n if (serializedOne.indexOf('==') >= 0) {\r\n let pieces = serializedOne.split('==');\r\n return ContextKeyEqualsExpr.create(pieces[0].trim(), this._deserializeValue(pieces[1], strict));\r\n }\r\n if (serializedOne.indexOf('=~') >= 0) {\r\n let pieces = serializedOne.split('=~');\r\n return ContextKeyRegexExpr.create(pieces[0].trim(), this._deserializeRegexValue(pieces[1], strict));\r\n }\r\n if (serializedOne.indexOf(' in ') >= 0) {\r\n let pieces = serializedOne.split(' in ');\r\n return ContextKeyInExpr.create(pieces[0].trim(), pieces[1].trim());\r\n }\r\n if (/^\\!\\s*/.test(serializedOne)) {\r\n return ContextKeyNotExpr.create(serializedOne.substr(1).trim());\r\n }\r\n return ContextKeyDefinedExpr.create(serializedOne);\r\n }\r\n static _deserializeValue(serializedValue, strict) {\r\n serializedValue = serializedValue.trim();\r\n if (serializedValue === 'true') {\r\n return true;\r\n }\r\n if (serializedValue === 'false') {\r\n return false;\r\n }\r\n let m = /^'([^']*)'$/.exec(serializedValue);\r\n if (m) {\r\n return m[1].trim();\r\n }\r\n return serializedValue;\r\n }\r\n static _deserializeRegexValue(serializedValue, strict) {\r\n if (isFalsyOrWhitespace(serializedValue)) {\r\n if (strict) {\r\n throw new Error('missing regexp-value for =~-expression');\r\n }\r\n else {\r\n console.warn('missing regexp-value for =~-expression');\r\n }\r\n return null;\r\n }\r\n let start = serializedValue.indexOf('/');\r\n let end = serializedValue.lastIndexOf('/');\r\n if (start === end || start < 0 /* || to < 0 */) {\r\n if (strict) {\r\n throw new Error(`bad regexp-value '${serializedValue}', missing /-enclosure`);\r\n }\r\n else {\r\n console.warn(`bad regexp-value '${serializedValue}', missing /-enclosure`);\r\n }\r\n return null;\r\n }\r\n let value = serializedValue.slice(start + 1, end);\r\n let caseIgnoreFlag = serializedValue[end + 1] === 'i' ? 'i' : '';\r\n try {\r\n return new RegExp(value, caseIgnoreFlag);\r\n }\r\n catch (e) {\r\n if (strict) {\r\n throw new Error(`bad regexp-value '${serializedValue}', parse error: ${e}`);\r\n }\r\n else {\r\n console.warn(`bad regexp-value '${serializedValue}', parse error: ${e}`);\r\n }\r\n return null;\r\n }\r\n }\r\n}\r\nfunction cmp(a, b) {\r\n return a.cmp(b);\r\n}\r\nexport class ContextKeyFalseExpr {\r\n constructor() {\r\n this.type = 0 /* False */;\r\n }\r\n cmp(other) {\r\n return this.type - other.type;\r\n }\r\n equals(other) {\r\n return (other.type === this.type);\r\n }\r\n evaluate(context) {\r\n return false;\r\n }\r\n serialize() {\r\n return 'false';\r\n }\r\n keys() {\r\n return [];\r\n }\r\n negate() {\r\n return ContextKeyTrueExpr.INSTANCE;\r\n }\r\n}\r\nContextKeyFalseExpr.INSTANCE = new ContextKeyFalseExpr();\r\nexport class ContextKeyTrueExpr {\r\n constructor() {\r\n this.type = 1 /* True */;\r\n }\r\n cmp(other) {\r\n return this.type - other.type;\r\n }\r\n equals(other) {\r\n return (other.type === this.type);\r\n }\r\n evaluate(context) {\r\n return true;\r\n }\r\n serialize() {\r\n return 'true';\r\n }\r\n keys() {\r\n return [];\r\n }\r\n negate() {\r\n return ContextKeyFalseExpr.INSTANCE;\r\n }\r\n}\r\nContextKeyTrueExpr.INSTANCE = new ContextKeyTrueExpr();\r\nexport class ContextKeyDefinedExpr {\r\n constructor(key) {\r\n this.key = key;\r\n this.type = 2 /* Defined */;\r\n }\r\n static create(key) {\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n return staticValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE;\r\n }\r\n return new ContextKeyDefinedExpr(key);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (!!context.getValue(this.key));\r\n }\r\n serialize() {\r\n return this.key;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyNotExpr.create(this.key);\r\n }\r\n}\r\nexport class ContextKeyEqualsExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 4 /* Equals */;\r\n }\r\n static create(key, value) {\r\n if (typeof value === 'boolean') {\r\n return (value ? ContextKeyDefinedExpr.create(key) : ContextKeyNotExpr.create(key));\r\n }\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n const trueValue = staticValue ? 'true' : 'false';\r\n return (value === trueValue ? ContextKeyTrueExpr.INSTANCE : ContextKeyFalseExpr.INSTANCE);\r\n }\r\n return new ContextKeyEqualsExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n if (this.value < other.value) {\r\n return -1;\r\n }\r\n if (this.value > other.value) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n // Intentional ==\r\n // eslint-disable-next-line eqeqeq\r\n return (context.getValue(this.key) == this.value);\r\n }\r\n serialize() {\r\n return this.key + ' == \\'' + this.value + '\\'';\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyNotEqualsExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeyInExpr {\r\n constructor(key, valueKey) {\r\n this.key = key;\r\n this.valueKey = valueKey;\r\n this.type = 10 /* In */;\r\n }\r\n static create(key, valueKey) {\r\n return new ContextKeyInExpr(key, valueKey);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n if (this.valueKey < other.valueKey) {\r\n return -1;\r\n }\r\n if (this.valueKey > other.valueKey) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.valueKey === other.valueKey);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n const source = context.getValue(this.valueKey);\r\n const item = context.getValue(this.key);\r\n if (Array.isArray(source)) {\r\n return (source.indexOf(item) >= 0);\r\n }\r\n if (typeof item === 'string' && typeof source === 'object' && source !== null) {\r\n return hasOwnProperty.call(source, item);\r\n }\r\n return false;\r\n }\r\n serialize() {\r\n return this.key + ' in \\'' + this.valueKey + '\\'';\r\n }\r\n keys() {\r\n return [this.key, this.valueKey];\r\n }\r\n negate() {\r\n return ContextKeyNotInExpr.create(this);\r\n }\r\n}\r\nexport class ContextKeyNotInExpr {\r\n constructor(_actual) {\r\n this._actual = _actual;\r\n this.type = 11 /* NotIn */;\r\n //\r\n }\r\n static create(actual) {\r\n return new ContextKeyNotInExpr(actual);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return this._actual.cmp(other._actual);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return this._actual.equals(other._actual);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return !this._actual.evaluate(context);\r\n }\r\n serialize() {\r\n throw new Error('Method not implemented.');\r\n }\r\n keys() {\r\n return this._actual.keys();\r\n }\r\n negate() {\r\n return this._actual;\r\n }\r\n}\r\nexport class ContextKeyNotEqualsExpr {\r\n constructor(key, value) {\r\n this.key = key;\r\n this.value = value;\r\n this.type = 5 /* NotEquals */;\r\n }\r\n static create(key, value) {\r\n if (typeof value === 'boolean') {\r\n if (value) {\r\n return ContextKeyNotExpr.create(key);\r\n }\r\n return ContextKeyDefinedExpr.create(key);\r\n }\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n const falseValue = staticValue ? 'true' : 'false';\r\n return (value === falseValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\r\n }\r\n return new ContextKeyNotEqualsExpr(key, value);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n if (this.value < other.value) {\r\n return -1;\r\n }\r\n if (this.value > other.value) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key && this.value === other.value);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n // Intentional !=\r\n // eslint-disable-next-line eqeqeq\r\n return (context.getValue(this.key) != this.value);\r\n }\r\n serialize() {\r\n return this.key + ' != \\'' + this.value + '\\'';\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyEqualsExpr.create(this.key, this.value);\r\n }\r\n}\r\nexport class ContextKeyNotExpr {\r\n constructor(key) {\r\n this.key = key;\r\n this.type = 3 /* Not */;\r\n }\r\n static create(key) {\r\n const staticValue = STATIC_VALUES.get(key);\r\n if (typeof staticValue === 'boolean') {\r\n return (staticValue ? ContextKeyFalseExpr.INSTANCE : ContextKeyTrueExpr.INSTANCE);\r\n }\r\n return new ContextKeyNotExpr(key);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return (this.key === other.key);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return (!context.getValue(this.key));\r\n }\r\n serialize() {\r\n return '!' + this.key;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyDefinedExpr.create(this.key);\r\n }\r\n}\r\nexport class ContextKeyRegexExpr {\r\n constructor(key, regexp) {\r\n this.key = key;\r\n this.regexp = regexp;\r\n this.type = 7 /* Regex */;\r\n //\r\n }\r\n static create(key, regexp) {\r\n return new ContextKeyRegexExpr(key, regexp);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.key < other.key) {\r\n return -1;\r\n }\r\n if (this.key > other.key) {\r\n return 1;\r\n }\r\n const thisSource = this.regexp ? this.regexp.source : '';\r\n const otherSource = other.regexp ? other.regexp.source : '';\r\n if (thisSource < otherSource) {\r\n return -1;\r\n }\r\n if (thisSource > otherSource) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n const thisSource = this.regexp ? this.regexp.source : '';\r\n const otherSource = other.regexp ? other.regexp.source : '';\r\n return (this.key === other.key && thisSource === otherSource);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n let value = context.getValue(this.key);\r\n return this.regexp ? this.regexp.test(value) : false;\r\n }\r\n serialize() {\r\n const value = this.regexp\r\n ? `/${this.regexp.source}/${this.regexp.ignoreCase ? 'i' : ''}`\r\n : '/invalid/';\r\n return `${this.key} =~ ${value}`;\r\n }\r\n keys() {\r\n return [this.key];\r\n }\r\n negate() {\r\n return ContextKeyNotRegexExpr.create(this);\r\n }\r\n}\r\nexport class ContextKeyNotRegexExpr {\r\n constructor(_actual) {\r\n this._actual = _actual;\r\n this.type = 8 /* NotRegex */;\r\n //\r\n }\r\n static create(actual) {\r\n return new ContextKeyNotRegexExpr(actual);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n return this._actual.cmp(other._actual);\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n return this._actual.equals(other._actual);\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n return !this._actual.evaluate(context);\r\n }\r\n serialize() {\r\n throw new Error('Method not implemented.');\r\n }\r\n keys() {\r\n return this._actual.keys();\r\n }\r\n negate() {\r\n return this._actual;\r\n }\r\n}\r\nexport class ContextKeyAndExpr {\r\n constructor(expr) {\r\n this.expr = expr;\r\n this.type = 6 /* And */;\r\n }\r\n static create(_expr) {\r\n return ContextKeyAndExpr._normalizeArr(_expr);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.expr.length < other.expr.length) {\r\n return -1;\r\n }\r\n if (this.expr.length > other.expr.length) {\r\n return 1;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n const r = cmp(this.expr[i], other.expr[i]);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n if (this.expr.length !== other.expr.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (!this.expr[i].equals(other.expr[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (!this.expr[i].evaluate(context)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n static _normalizeArr(arr) {\r\n const expr = [];\r\n let hasTrue = false;\r\n for (const e of arr) {\r\n if (!e) {\r\n continue;\r\n }\r\n if (e.type === 1 /* True */) {\r\n // anything && true ==> anything\r\n hasTrue = true;\r\n continue;\r\n }\r\n if (e.type === 0 /* False */) {\r\n // anything && false ==> false\r\n return ContextKeyFalseExpr.INSTANCE;\r\n }\r\n if (e.type === 6 /* And */) {\r\n expr.push(...e.expr);\r\n continue;\r\n }\r\n expr.push(e);\r\n }\r\n if (expr.length === 0 && hasTrue) {\r\n return ContextKeyTrueExpr.INSTANCE;\r\n }\r\n if (expr.length === 0) {\r\n return undefined;\r\n }\r\n if (expr.length === 1) {\r\n return expr[0];\r\n }\r\n expr.sort(cmp);\r\n // We must distribute any OR expression because we don't support parens\r\n // OR extensions will be at the end (due to sorting rules)\r\n while (expr.length > 1) {\r\n const lastElement = expr[expr.length - 1];\r\n if (lastElement.type !== 9 /* Or */) {\r\n break;\r\n }\r\n // pop the last element\r\n expr.pop();\r\n // pop the second to last element\r\n const secondToLastElement = expr.pop();\r\n // distribute `lastElement` over `secondToLastElement`\r\n const resultElement = ContextKeyOrExpr.create(lastElement.expr.map(el => ContextKeyAndExpr.create([el, secondToLastElement])));\r\n if (resultElement) {\r\n expr.push(resultElement);\r\n expr.sort(cmp);\r\n }\r\n }\r\n return new ContextKeyAndExpr(expr);\r\n }\r\n serialize() {\r\n return this.expr.map(e => e.serialize()).join(' && ');\r\n }\r\n keys() {\r\n const result = [];\r\n for (let expr of this.expr) {\r\n result.push(...expr.keys());\r\n }\r\n return result;\r\n }\r\n negate() {\r\n let result = [];\r\n for (let expr of this.expr) {\r\n result.push(expr.negate());\r\n }\r\n return ContextKeyOrExpr.create(result);\r\n }\r\n}\r\nexport class ContextKeyOrExpr {\r\n constructor(expr) {\r\n this.expr = expr;\r\n this.type = 9 /* Or */;\r\n }\r\n static create(_expr) {\r\n const expr = ContextKeyOrExpr._normalizeArr(_expr);\r\n if (expr.length === 0) {\r\n return undefined;\r\n }\r\n if (expr.length === 1) {\r\n return expr[0];\r\n }\r\n return new ContextKeyOrExpr(expr);\r\n }\r\n cmp(other) {\r\n if (other.type !== this.type) {\r\n return this.type - other.type;\r\n }\r\n if (this.expr.length < other.expr.length) {\r\n return -1;\r\n }\r\n if (this.expr.length > other.expr.length) {\r\n return 1;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n const r = cmp(this.expr[i], other.expr[i]);\r\n if (r !== 0) {\r\n return r;\r\n }\r\n }\r\n return 0;\r\n }\r\n equals(other) {\r\n if (other.type === this.type) {\r\n if (this.expr.length !== other.expr.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (!this.expr[i].equals(other.expr[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n evaluate(context) {\r\n for (let i = 0, len = this.expr.length; i < len; i++) {\r\n if (this.expr[i].evaluate(context)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n static _normalizeArr(arr) {\r\n let expr = [];\r\n let hasFalse = false;\r\n if (arr) {\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n const e = arr[i];\r\n if (!e) {\r\n continue;\r\n }\r\n if (e.type === 0 /* False */) {\r\n // anything || false ==> anything\r\n hasFalse = true;\r\n continue;\r\n }\r\n if (e.type === 1 /* True */) {\r\n // anything || true ==> true\r\n return [ContextKeyTrueExpr.INSTANCE];\r\n }\r\n if (e.type === 9 /* Or */) {\r\n expr = expr.concat(e.expr);\r\n continue;\r\n }\r\n expr.push(e);\r\n }\r\n if (expr.length === 0 && hasFalse) {\r\n return [ContextKeyFalseExpr.INSTANCE];\r\n }\r\n expr.sort(cmp);\r\n }\r\n return expr;\r\n }\r\n serialize() {\r\n return this.expr.map(e => e.serialize()).join(' || ');\r\n }\r\n keys() {\r\n const result = [];\r\n for (let expr of this.expr) {\r\n result.push(...expr.keys());\r\n }\r\n return result;\r\n }\r\n negate() {\r\n let result = [];\r\n for (let expr of this.expr) {\r\n result.push(expr.negate());\r\n }\r\n const terminals = (node) => {\r\n if (node.type === 9 /* Or */) {\r\n return node.expr;\r\n }\r\n return [node];\r\n };\r\n // We don't support parens, so here we distribute the AND over the OR terminals\r\n // We always take the first 2 AND pairs and distribute them\r\n while (result.length > 1) {\r\n const LEFT = result.shift();\r\n const RIGHT = result.shift();\r\n const all = [];\r\n for (const left of terminals(LEFT)) {\r\n for (const right of terminals(RIGHT)) {\r\n all.push(ContextKeyExpr.and(left, right));\r\n }\r\n }\r\n result.unshift(ContextKeyExpr.or(...all));\r\n }\r\n return result[0];\r\n }\r\n}\r\nexport class RawContextKey extends ContextKeyDefinedExpr {\r\n constructor(key, defaultValue) {\r\n super(key);\r\n this._defaultValue = defaultValue;\r\n }\r\n bindTo(target) {\r\n return target.createKey(this.key, this._defaultValue);\r\n }\r\n getValue(target) {\r\n return target.getContextKeyValue(this.key);\r\n }\r\n toNegated() {\r\n return ContextKeyExpr.not(this.key);\r\n }\r\n}\r\nexport const IContextKeyService = createDecorator('contextKeyService');\r\nexport const SET_CONTEXT_COMMAND_ID = 'setContext';\r\n","export const InputFocusedContextKey = 'inputFocus';\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport './contextMenuHandler.css';\r\nimport { ActionRunner } from '../../../base/common/actions.js';\r\nimport { combinedDisposable, DisposableStore } from '../../../base/common/lifecycle.js';\r\nimport { Menu } from '../../../base/browser/ui/menu/menu.js';\r\nimport { EventType, $, removeNode, isHTMLElement } from '../../../base/browser/dom.js';\r\nimport { attachMenuStyler } from '../../theme/common/styler.js';\r\nimport { domEvent } from '../../../base/browser/event.js';\r\nimport { StandardMouseEvent } from '../../../base/browser/mouseEvent.js';\r\nexport class ContextMenuHandler {\r\n constructor(contextViewService, telemetryService, notificationService, keybindingService, themeService) {\r\n this.contextViewService = contextViewService;\r\n this.telemetryService = telemetryService;\r\n this.notificationService = notificationService;\r\n this.keybindingService = keybindingService;\r\n this.themeService = themeService;\r\n this.focusToReturn = null;\r\n this.block = null;\r\n this.options = { blockMouse: true };\r\n }\r\n configure(options) {\r\n this.options = options;\r\n }\r\n showContextMenu(delegate) {\r\n const actions = delegate.getActions();\r\n if (!actions.length) {\r\n return; // Don't render an empty context menu\r\n }\r\n this.focusToReturn = document.activeElement;\r\n let menu;\r\n let shadowRootElement = isHTMLElement(delegate.domForShadowRoot) ? delegate.domForShadowRoot : undefined;\r\n this.contextViewService.showContextView({\r\n getAnchor: () => delegate.getAnchor(),\r\n canRelayout: false,\r\n anchorAlignment: delegate.anchorAlignment,\r\n render: (container) => {\r\n let className = delegate.getMenuClassName ? delegate.getMenuClassName() : '';\r\n if (className) {\r\n container.className += ' ' + className;\r\n }\r\n // Render invisible div to block mouse interaction in the rest of the UI\r\n if (this.options.blockMouse) {\r\n this.block = container.appendChild($('.context-view-block'));\r\n this.block.style.position = 'fixed';\r\n this.block.style.cursor = 'initial';\r\n this.block.style.left = '0';\r\n this.block.style.top = '0';\r\n this.block.style.width = '100%';\r\n this.block.style.height = '100%';\r\n this.block.style.zIndex = '-1';\r\n domEvent(this.block, EventType.MOUSE_DOWN)((e) => e.stopPropagation());\r\n }\r\n const menuDisposables = new DisposableStore();\r\n const actionRunner = delegate.actionRunner || new ActionRunner();\r\n actionRunner.onDidBeforeRun(this.onActionRun, this, menuDisposables);\r\n actionRunner.onDidRun(this.onDidActionRun, this, menuDisposables);\r\n menu = new Menu(container, actions, {\r\n actionViewItemProvider: delegate.getActionViewItem,\r\n context: delegate.getActionsContext ? delegate.getActionsContext() : null,\r\n actionRunner,\r\n getKeyBinding: delegate.getKeyBinding ? delegate.getKeyBinding : action => this.keybindingService.lookupKeybinding(action.id)\r\n });\r\n menuDisposables.add(attachMenuStyler(menu, this.themeService));\r\n menu.onDidCancel(() => this.contextViewService.hideContextView(true), null, menuDisposables);\r\n menu.onDidBlur(() => this.contextViewService.hideContextView(true), null, menuDisposables);\r\n domEvent(window, EventType.BLUR)(() => { this.contextViewService.hideContextView(true); }, null, menuDisposables);\r\n domEvent(window, EventType.MOUSE_DOWN)((e) => {\r\n if (e.defaultPrevented) {\r\n return;\r\n }\r\n let event = new StandardMouseEvent(e);\r\n let element = event.target;\r\n // Don't do anything as we are likely creating a context menu\r\n if (event.rightButton) {\r\n return;\r\n }\r\n while (element) {\r\n if (element === container) {\r\n return;\r\n }\r\n element = element.parentElement;\r\n }\r\n this.contextViewService.hideContextView(true);\r\n }, null, menuDisposables);\r\n return combinedDisposable(menuDisposables, menu);\r\n },\r\n focus: () => {\r\n if (menu) {\r\n menu.focus(!!delegate.autoSelectFirstItem);\r\n }\r\n },\r\n onHide: (didCancel) => {\r\n if (delegate.onHide) {\r\n delegate.onHide(!!didCancel);\r\n }\r\n if (this.block) {\r\n removeNode(this.block);\r\n this.block = null;\r\n }\r\n if (this.focusToReturn) {\r\n this.focusToReturn.focus();\r\n }\r\n }\r\n }, shadowRootElement, !!shadowRootElement);\r\n }\r\n onActionRun(e) {\r\n if (this.telemetryService) {\r\n this.telemetryService.publicLog2('workbenchActionExecuted', { id: e.action.id, from: 'contextMenu' });\r\n }\r\n this.contextViewService.hideContextView(false);\r\n // Restore focus here\r\n if (this.focusToReturn) {\r\n this.focusToReturn.focus();\r\n }\r\n }\r\n onDidActionRun(e) {\r\n if (e.error && this.notificationService) {\r\n this.notificationService.error(e.error);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ContextMenuHandler } from './contextMenuHandler.js';\r\nimport { IContextViewService } from './contextView.js';\r\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { IThemeService } from '../../theme/common/themeService.js';\r\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nlet ContextMenuService = class ContextMenuService extends Disposable {\r\n constructor(telemetryService, notificationService, contextViewService, keybindingService, themeService) {\r\n super();\r\n this._onDidContextMenu = this._register(new Emitter());\r\n this.onDidContextMenu = this._onDidContextMenu.event;\r\n this.contextMenuHandler = new ContextMenuHandler(contextViewService, telemetryService, notificationService, keybindingService, themeService);\r\n }\r\n configure(options) {\r\n this.contextMenuHandler.configure(options);\r\n }\r\n // ContextMenu\r\n showContextMenu(delegate) {\r\n this.contextMenuHandler.showContextMenu(delegate);\r\n this._onDidContextMenu.fire();\r\n }\r\n};\r\nContextMenuService = __decorate([\r\n __param(0, ITelemetryService),\r\n __param(1, INotificationService),\r\n __param(2, IContextViewService),\r\n __param(3, IKeybindingService),\r\n __param(4, IThemeService)\r\n], ContextMenuService);\r\nexport { ContextMenuService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IContextViewService = createDecorator('contextViewService');\r\nexport const IContextMenuService = createDecorator('contextMenuService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ContextView } from '../../../base/browser/ui/contextview/contextview.js';\r\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\r\nlet ContextViewService = class ContextViewService extends Disposable {\r\n constructor(layoutService) {\r\n super();\r\n this.layoutService = layoutService;\r\n this.currentViewDisposable = Disposable.None;\r\n this.container = layoutService.container;\r\n this.contextView = this._register(new ContextView(this.container, 1 /* ABSOLUTE */));\r\n this.layout();\r\n this._register(layoutService.onLayout(() => this.layout()));\r\n }\r\n // ContextView\r\n setContainer(container, domPosition) {\r\n this.contextView.setContainer(container, domPosition || 1 /* ABSOLUTE */);\r\n }\r\n showContextView(delegate, container, shadowRoot) {\r\n if (container) {\r\n if (container !== this.container) {\r\n this.container = container;\r\n this.setContainer(container, shadowRoot ? 3 /* FIXED_SHADOW */ : 2 /* FIXED */);\r\n }\r\n }\r\n else {\r\n if (this.container !== this.layoutService.container) {\r\n this.container = this.layoutService.container;\r\n this.setContainer(this.container, 1 /* ABSOLUTE */);\r\n }\r\n }\r\n this.contextView.show(delegate);\r\n const disposable = toDisposable(() => {\r\n if (this.currentViewDisposable === disposable) {\r\n this.hideContextView();\r\n }\r\n });\r\n this.currentViewDisposable = disposable;\r\n return disposable;\r\n }\r\n getContextViewElement() {\r\n return this.contextView.getViewElement();\r\n }\r\n layout() {\r\n this.contextView.layout();\r\n }\r\n hideContextView(data) {\r\n this.contextView.hide(data);\r\n }\r\n};\r\nContextViewService = __decorate([\r\n __param(0, ILayoutService)\r\n], ContextViewService);\r\nexport { ContextViewService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IDialogService = createDecorator('dialogService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var EditorOpenContext;\r\n(function (EditorOpenContext) {\r\n /**\r\n * Default: the editor is opening via a programmatic call\r\n * to the editor service API.\r\n */\r\n EditorOpenContext[EditorOpenContext[\"API\"] = 0] = \"API\";\r\n /**\r\n * Indicates that a user action triggered the opening, e.g.\r\n * via mouse or keyboard use.\r\n */\r\n EditorOpenContext[EditorOpenContext[\"USER\"] = 1] = \"USER\";\r\n})(EditorOpenContext || (EditorOpenContext = {}));\r\n","/**\r\n * **!Do not construct directly!**\r\n *\r\n * **!Only static methods because it gets serialized!**\r\n *\r\n * This represents the \"canonical\" version for an extension identifier. Extension ids\r\n * have to be case-insensitive (due to the marketplace), but we must ensure case\r\n * preservation because the extension API is already public at this time.\r\n *\r\n * For example, given an extension with the publisher `\"Hello\"` and the name `\"World\"`,\r\n * its canonical extension identifier is `\"Hello.World\"`. This extension could be\r\n * referenced in some other extension's dependencies using the string `\"hello.world\"`.\r\n *\r\n * To make matters more complicated, an extension can optionally have an UUID. When two\r\n * extensions have the same UUID, they are considered equal even if their identifier is different.\r\n */\r\nexport class ExtensionIdentifier {\r\n constructor(value) {\r\n this.value = value;\r\n this._lower = value.toLowerCase();\r\n }\r\n /**\r\n * Gives the value by which to index (for equality).\r\n */\r\n static toKey(id) {\r\n if (typeof id === 'string') {\r\n return id.toLowerCase();\r\n }\r\n return id._lower;\r\n }\r\n}\r\n","export var FileKind;\r\n(function (FileKind) {\r\n FileKind[FileKind[\"FILE\"] = 0] = \"FILE\";\r\n FileKind[FileKind[\"FOLDER\"] = 1] = \"FOLDER\";\r\n FileKind[FileKind[\"ROOT_FOLDER\"] = 2] = \"ROOT_FOLDER\";\r\n})(FileKind || (FileKind = {}));\r\n","export class SyncDescriptor {\r\n constructor(ctor, staticArguments = [], supportsDelayedInstantiation = false) {\r\n this.ctor = ctor;\r\n this.staticArguments = staticArguments;\r\n this.supportsDelayedInstantiation = supportsDelayedInstantiation;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { SyncDescriptor } from './descriptors.js';\r\nconst _registry = [];\r\nexport function registerSingleton(id, ctor, supportsDelayedInstantiation) {\r\n _registry.push([id, new SyncDescriptor(ctor, [], supportsDelayedInstantiation)]);\r\n}\r\nexport function getSingletonServiceDescriptors() {\r\n return _registry;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Node {\r\n constructor(data) {\r\n this.incoming = new Map();\r\n this.outgoing = new Map();\r\n this.data = data;\r\n }\r\n}\r\nexport class Graph {\r\n constructor(_hashFn) {\r\n this._hashFn = _hashFn;\r\n this._nodes = new Map();\r\n // empty\r\n }\r\n roots() {\r\n const ret = [];\r\n for (let node of this._nodes.values()) {\r\n if (node.outgoing.size === 0) {\r\n ret.push(node);\r\n }\r\n }\r\n return ret;\r\n }\r\n insertEdge(from, to) {\r\n const fromNode = this.lookupOrInsertNode(from);\r\n const toNode = this.lookupOrInsertNode(to);\r\n fromNode.outgoing.set(this._hashFn(to), toNode);\r\n toNode.incoming.set(this._hashFn(from), fromNode);\r\n }\r\n removeNode(data) {\r\n const key = this._hashFn(data);\r\n this._nodes.delete(key);\r\n for (let node of this._nodes.values()) {\r\n node.outgoing.delete(key);\r\n node.incoming.delete(key);\r\n }\r\n }\r\n lookupOrInsertNode(data) {\r\n const key = this._hashFn(data);\r\n let node = this._nodes.get(key);\r\n if (!node) {\r\n node = new Node(data);\r\n this._nodes.set(key, node);\r\n }\r\n return node;\r\n }\r\n isEmpty() {\r\n return this._nodes.size === 0;\r\n }\r\n toString() {\r\n let data = [];\r\n for (let [key, value] of this._nodes) {\r\n data.push(`${key}, (incoming)[${[...value.incoming.keys()].join(', ')}], (outgoing)[${[...value.outgoing.keys()].join(',')}]`);\r\n }\r\n return data.join('\\n');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// ------ internal util\r\nexport var _util;\r\n(function (_util) {\r\n _util.serviceIds = new Map();\r\n _util.DI_TARGET = '$di$target';\r\n _util.DI_DEPENDENCIES = '$di$dependencies';\r\n function getServiceDependencies(ctor) {\r\n return ctor[_util.DI_DEPENDENCIES] || [];\r\n }\r\n _util.getServiceDependencies = getServiceDependencies;\r\n})(_util || (_util = {}));\r\nexport const IInstantiationService = createDecorator('instantiationService');\r\nfunction storeServiceDependency(id, target, index, optional) {\r\n if (target[_util.DI_TARGET] === target) {\r\n target[_util.DI_DEPENDENCIES].push({ id, index, optional });\r\n }\r\n else {\r\n target[_util.DI_DEPENDENCIES] = [{ id, index, optional }];\r\n target[_util.DI_TARGET] = target;\r\n }\r\n}\r\n/**\r\n * The *only* valid way to create a {{ServiceIdentifier}}.\r\n */\r\nexport function createDecorator(serviceId) {\r\n if (_util.serviceIds.has(serviceId)) {\r\n return _util.serviceIds.get(serviceId);\r\n }\r\n const id = function (target, key, index) {\r\n if (arguments.length !== 3) {\r\n throw new Error('@IServiceName-decorator can only be used to decorate a parameter');\r\n }\r\n storeServiceDependency(id, target, index, false);\r\n };\r\n id.toString = () => serviceId;\r\n _util.serviceIds.set(serviceId, id);\r\n return id;\r\n}\r\n/**\r\n * Mark a service dependency as optional.\r\n */\r\nexport function optional(serviceIdentifier) {\r\n return function (target, key, index) {\r\n if (arguments.length !== 3) {\r\n throw new Error('@optional-decorator can only be used to decorate a parameter');\r\n }\r\n storeServiceDependency(serviceIdentifier, target, index, true);\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalState } from '../../../base/common/errors.js';\r\nimport { Graph } from './graph.js';\r\nimport { SyncDescriptor } from './descriptors.js';\r\nimport { IInstantiationService, _util, optional } from './instantiation.js';\r\nimport { ServiceCollection } from './serviceCollection.js';\r\nimport { IdleValue } from '../../../base/common/async.js';\r\n// TRACING\r\nconst _enableTracing = false;\r\nclass CyclicDependencyError extends Error {\r\n constructor(graph) {\r\n super('cyclic dependency between services');\r\n this.message = graph.toString();\r\n }\r\n}\r\nexport class InstantiationService {\r\n constructor(services = new ServiceCollection(), strict = false, parent) {\r\n this._services = services;\r\n this._strict = strict;\r\n this._parent = parent;\r\n this._services.set(IInstantiationService, this);\r\n }\r\n createChild(services) {\r\n return new InstantiationService(services, this._strict, this);\r\n }\r\n invokeFunction(fn, ...args) {\r\n let _trace = Trace.traceInvocation(fn);\r\n let _done = false;\r\n try {\r\n const accessor = {\r\n get: (id, isOptional) => {\r\n if (_done) {\r\n throw illegalState('service accessor is only valid during the invocation of its target method');\r\n }\r\n const result = this._getOrCreateServiceInstance(id, _trace);\r\n if (!result && isOptional !== optional) {\r\n throw new Error(`[invokeFunction] unknown service '${id}'`);\r\n }\r\n return result;\r\n }\r\n };\r\n return fn(accessor, ...args);\r\n }\r\n finally {\r\n _done = true;\r\n _trace.stop();\r\n }\r\n }\r\n createInstance(ctorOrDescriptor, ...rest) {\r\n let _trace;\r\n let result;\r\n if (ctorOrDescriptor instanceof SyncDescriptor) {\r\n _trace = Trace.traceCreation(ctorOrDescriptor.ctor);\r\n result = this._createInstance(ctorOrDescriptor.ctor, ctorOrDescriptor.staticArguments.concat(rest), _trace);\r\n }\r\n else {\r\n _trace = Trace.traceCreation(ctorOrDescriptor);\r\n result = this._createInstance(ctorOrDescriptor, rest, _trace);\r\n }\r\n _trace.stop();\r\n return result;\r\n }\r\n _createInstance(ctor, args = [], _trace) {\r\n // arguments defined by service decorators\r\n let serviceDependencies = _util.getServiceDependencies(ctor).sort((a, b) => a.index - b.index);\r\n let serviceArgs = [];\r\n for (const dependency of serviceDependencies) {\r\n let service = this._getOrCreateServiceInstance(dependency.id, _trace);\r\n if (!service && this._strict && !dependency.optional) {\r\n throw new Error(`[createInstance] ${ctor.name} depends on UNKNOWN service ${dependency.id}.`);\r\n }\r\n serviceArgs.push(service);\r\n }\r\n let firstServiceArgPos = serviceDependencies.length > 0 ? serviceDependencies[0].index : args.length;\r\n // check for argument mismatches, adjust static args if needed\r\n if (args.length !== firstServiceArgPos) {\r\n console.warn(`[createInstance] First service dependency of ${ctor.name} at position ${firstServiceArgPos + 1} conflicts with ${args.length} static arguments`);\r\n let delta = firstServiceArgPos - args.length;\r\n if (delta > 0) {\r\n args = args.concat(new Array(delta));\r\n }\r\n else {\r\n args = args.slice(0, firstServiceArgPos);\r\n }\r\n }\r\n // now create the instance\r\n return new ctor(...[...args, ...serviceArgs]);\r\n }\r\n _setServiceInstance(id, instance) {\r\n if (this._services.get(id) instanceof SyncDescriptor) {\r\n this._services.set(id, instance);\r\n }\r\n else if (this._parent) {\r\n this._parent._setServiceInstance(id, instance);\r\n }\r\n else {\r\n throw new Error('illegalState - setting UNKNOWN service instance');\r\n }\r\n }\r\n _getServiceInstanceOrDescriptor(id) {\r\n let instanceOrDesc = this._services.get(id);\r\n if (!instanceOrDesc && this._parent) {\r\n return this._parent._getServiceInstanceOrDescriptor(id);\r\n }\r\n else {\r\n return instanceOrDesc;\r\n }\r\n }\r\n _getOrCreateServiceInstance(id, _trace) {\r\n let thing = this._getServiceInstanceOrDescriptor(id);\r\n if (thing instanceof SyncDescriptor) {\r\n return this._createAndCacheServiceInstance(id, thing, _trace.branch(id, true));\r\n }\r\n else {\r\n _trace.branch(id, false);\r\n return thing;\r\n }\r\n }\r\n _createAndCacheServiceInstance(id, desc, _trace) {\r\n const graph = new Graph(data => data.id.toString());\r\n let cycleCount = 0;\r\n const stack = [{ id, desc, _trace }];\r\n while (stack.length) {\r\n const item = stack.pop();\r\n graph.lookupOrInsertNode(item);\r\n // a weak but working heuristic for cycle checks\r\n if (cycleCount++ > 1000) {\r\n throw new CyclicDependencyError(graph);\r\n }\r\n // check all dependencies for existence and if they need to be created first\r\n for (let dependency of _util.getServiceDependencies(item.desc.ctor)) {\r\n let instanceOrDesc = this._getServiceInstanceOrDescriptor(dependency.id);\r\n if (!instanceOrDesc && !dependency.optional) {\r\n console.warn(`[createInstance] ${id} depends on ${dependency.id} which is NOT registered.`);\r\n }\r\n if (instanceOrDesc instanceof SyncDescriptor) {\r\n const d = { id: dependency.id, desc: instanceOrDesc, _trace: item._trace.branch(dependency.id, true) };\r\n graph.insertEdge(item, d);\r\n stack.push(d);\r\n }\r\n }\r\n }\r\n while (true) {\r\n const roots = graph.roots();\r\n // if there is no more roots but still\r\n // nodes in the graph we have a cycle\r\n if (roots.length === 0) {\r\n if (!graph.isEmpty()) {\r\n throw new CyclicDependencyError(graph);\r\n }\r\n break;\r\n }\r\n for (const { data } of roots) {\r\n // create instance and overwrite the service collections\r\n const instance = this._createServiceInstanceWithOwner(data.id, data.desc.ctor, data.desc.staticArguments, data.desc.supportsDelayedInstantiation, data._trace);\r\n this._setServiceInstance(data.id, instance);\r\n graph.removeNode(data);\r\n }\r\n }\r\n return this._getServiceInstanceOrDescriptor(id);\r\n }\r\n _createServiceInstanceWithOwner(id, ctor, args = [], supportsDelayedInstantiation, _trace) {\r\n if (this._services.get(id) instanceof SyncDescriptor) {\r\n return this._createServiceInstance(ctor, args, supportsDelayedInstantiation, _trace);\r\n }\r\n else if (this._parent) {\r\n return this._parent._createServiceInstanceWithOwner(id, ctor, args, supportsDelayedInstantiation, _trace);\r\n }\r\n else {\r\n throw new Error(`illegalState - creating UNKNOWN service instance ${ctor.name}`);\r\n }\r\n }\r\n _createServiceInstance(ctor, args = [], _supportsDelayedInstantiation, _trace) {\r\n if (!_supportsDelayedInstantiation) {\r\n // eager instantiation\r\n return this._createInstance(ctor, args, _trace);\r\n }\r\n else {\r\n // Return a proxy object that's backed by an idle value. That\r\n // strategy is to instantiate services in our idle time or when actually\r\n // needed but not when injected into a consumer\r\n const idle = new IdleValue(() => this._createInstance(ctor, args, _trace));\r\n return new Proxy(Object.create(null), {\r\n get(target, key) {\r\n if (key in target) {\r\n return target[key];\r\n }\r\n let obj = idle.value;\r\n let prop = obj[key];\r\n if (typeof prop !== 'function') {\r\n return prop;\r\n }\r\n prop = prop.bind(obj);\r\n target[key] = prop;\r\n return prop;\r\n },\r\n set(_target, p, value) {\r\n idle.value[p] = value;\r\n return true;\r\n }\r\n });\r\n }\r\n }\r\n}\r\nclass Trace {\r\n constructor(type, name) {\r\n this.type = type;\r\n this.name = name;\r\n this._start = Date.now();\r\n this._dep = [];\r\n }\r\n static traceInvocation(ctor) {\r\n return !_enableTracing ? Trace._None : new Trace(1 /* Invocation */, ctor.name || ctor.toString().substring(0, 42).replace(/\\n/g, ''));\r\n }\r\n static traceCreation(ctor) {\r\n return !_enableTracing ? Trace._None : new Trace(0 /* Creation */, ctor.name);\r\n }\r\n branch(id, first) {\r\n let child = new Trace(2 /* Branch */, id.toString());\r\n this._dep.push([id, first, child]);\r\n return child;\r\n }\r\n stop() {\r\n let dur = Date.now() - this._start;\r\n Trace._totals += dur;\r\n let causedCreation = false;\r\n function printChild(n, trace) {\r\n let res = [];\r\n let prefix = new Array(n + 1).join('\\t');\r\n for (const [id, first, child] of trace._dep) {\r\n if (first && child) {\r\n causedCreation = true;\r\n res.push(`${prefix}CREATES -> ${id}`);\r\n let nested = printChild(n + 1, child);\r\n if (nested) {\r\n res.push(nested);\r\n }\r\n }\r\n else {\r\n res.push(`${prefix}uses -> ${id}`);\r\n }\r\n }\r\n return res.join('\\n');\r\n }\r\n let lines = [\r\n `${this.type === 0 /* Creation */ ? 'CREATE' : 'CALL'} ${this.name}`,\r\n `${printChild(1, this)}`,\r\n `DONE, took ${dur.toFixed(2)}ms (grand total ${Trace._totals.toFixed(2)}ms)`\r\n ];\r\n if (dur > 2 || causedCreation) {\r\n console.log(lines.join('\\n'));\r\n }\r\n }\r\n}\r\nTrace._None = new class extends Trace {\r\n constructor() { super(-1, null); }\r\n stop() { }\r\n branch() { return this; }\r\n};\r\nTrace._totals = 0;\r\n//#endregion\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ServiceCollection {\r\n constructor(...entries) {\r\n this._entries = new Map();\r\n for (let [id, service] of entries) {\r\n this.set(id, service);\r\n }\r\n }\r\n set(id, instanceOrDescriptor) {\r\n const result = this._entries.get(id);\r\n this._entries.set(id, instanceOrDescriptor);\r\n return result;\r\n }\r\n has(id) {\r\n return this._entries.has(id);\r\n }\r\n get(id) {\r\n return this._entries.get(id);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as platform from '../../registry/common/platform.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const Extensions = {\r\n JSONContribution: 'base.contributions.json'\r\n};\r\nfunction normalizeId(id) {\r\n if (id.length > 0 && id.charAt(id.length - 1) === '#') {\r\n return id.substring(0, id.length - 1);\r\n }\r\n return id;\r\n}\r\nclass JSONContributionRegistry {\r\n constructor() {\r\n this._onDidChangeSchema = new Emitter();\r\n this.schemasById = {};\r\n }\r\n registerSchema(uri, unresolvedSchemaContent) {\r\n this.schemasById[normalizeId(uri)] = unresolvedSchemaContent;\r\n this._onDidChangeSchema.fire(uri);\r\n }\r\n notifySchemaChanged(uri) {\r\n this._onDidChangeSchema.fire(uri);\r\n }\r\n}\r\nconst jsonContributionRegistry = new JSONContributionRegistry();\r\nplatform.Registry.add(Extensions.JSONContribution, jsonContributionRegistry);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as nls from '../../../nls.js';\r\nimport * as arrays from '../../../base/common/arrays.js';\r\nimport { IntervalTimer } from '../../../base/common/async.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nexport class AbstractKeybindingService extends Disposable {\r\n constructor(_contextKeyService, _commandService, _telemetryService, _notificationService, _logService) {\r\n super();\r\n this._contextKeyService = _contextKeyService;\r\n this._commandService = _commandService;\r\n this._telemetryService = _telemetryService;\r\n this._notificationService = _notificationService;\r\n this._logService = _logService;\r\n this._onDidUpdateKeybindings = this._register(new Emitter());\r\n this._currentChord = null;\r\n this._currentChordChecker = new IntervalTimer();\r\n this._currentChordStatusMessage = null;\r\n this._logging = false;\r\n }\r\n get onDidUpdateKeybindings() {\r\n return this._onDidUpdateKeybindings ? this._onDidUpdateKeybindings.event : Event.None; // Sinon stubbing walks properties on prototype\r\n }\r\n dispose() {\r\n super.dispose();\r\n }\r\n _log(str) {\r\n if (this._logging) {\r\n this._logService.info(`[KeybindingService]: ${str}`);\r\n }\r\n }\r\n getKeybindings() {\r\n return this._getResolver().getKeybindings();\r\n }\r\n lookupKeybindings(commandId) {\r\n return arrays.coalesce(this._getResolver().lookupKeybindings(commandId).map(item => item.resolvedKeybinding));\r\n }\r\n lookupKeybinding(commandId) {\r\n const result = this._getResolver().lookupPrimaryKeybinding(commandId);\r\n if (!result) {\r\n return undefined;\r\n }\r\n return result.resolvedKeybinding;\r\n }\r\n dispatchEvent(e, target) {\r\n return this._dispatch(e, target);\r\n }\r\n softDispatch(e, target) {\r\n const keybinding = this.resolveKeyboardEvent(e);\r\n if (keybinding.isChord()) {\r\n console.warn('Unexpected keyboard event mapped to a chord');\r\n return null;\r\n }\r\n const [firstPart,] = keybinding.getDispatchParts();\r\n if (firstPart === null) {\r\n // cannot be dispatched, probably only modifier keys\r\n return null;\r\n }\r\n const contextValue = this._contextKeyService.getContext(target);\r\n const currentChord = this._currentChord ? this._currentChord.keypress : null;\r\n return this._getResolver().resolve(contextValue, currentChord, firstPart);\r\n }\r\n _enterChordMode(firstPart, keypressLabel) {\r\n this._currentChord = {\r\n keypress: firstPart,\r\n label: keypressLabel\r\n };\r\n this._currentChordStatusMessage = this._notificationService.status(nls.localize('first.chord', \"({0}) was pressed. Waiting for second key of chord...\", keypressLabel));\r\n const chordEnterTime = Date.now();\r\n this._currentChordChecker.cancelAndSet(() => {\r\n if (!this._documentHasFocus()) {\r\n // Focus has been lost => leave chord mode\r\n this._leaveChordMode();\r\n return;\r\n }\r\n if (Date.now() - chordEnterTime > 5000) {\r\n // 5 seconds elapsed => leave chord mode\r\n this._leaveChordMode();\r\n }\r\n }, 500);\r\n }\r\n _leaveChordMode() {\r\n if (this._currentChordStatusMessage) {\r\n this._currentChordStatusMessage.dispose();\r\n this._currentChordStatusMessage = null;\r\n }\r\n this._currentChordChecker.cancel();\r\n this._currentChord = null;\r\n }\r\n _dispatch(e, target) {\r\n return this._doDispatch(this.resolveKeyboardEvent(e), target);\r\n }\r\n _doDispatch(keybinding, target) {\r\n let shouldPreventDefault = false;\r\n if (keybinding.isChord()) {\r\n console.warn('Unexpected keyboard event mapped to a chord');\r\n return false;\r\n }\r\n const [firstPart,] = keybinding.getDispatchParts();\r\n if (firstPart === null) {\r\n this._log(`\\\\ Keyboard event cannot be dispatched.`);\r\n // cannot be dispatched, probably only modifier keys\r\n return shouldPreventDefault;\r\n }\r\n const contextValue = this._contextKeyService.getContext(target);\r\n const currentChord = this._currentChord ? this._currentChord.keypress : null;\r\n const keypressLabel = keybinding.getLabel();\r\n const resolveResult = this._getResolver().resolve(contextValue, currentChord, firstPart);\r\n this._logService.trace('KeybindingService#dispatch', keypressLabel, resolveResult === null || resolveResult === void 0 ? void 0 : resolveResult.commandId);\r\n if (resolveResult && resolveResult.enterChord) {\r\n shouldPreventDefault = true;\r\n this._enterChordMode(firstPart, keypressLabel);\r\n return shouldPreventDefault;\r\n }\r\n if (this._currentChord) {\r\n if (!resolveResult || !resolveResult.commandId) {\r\n this._notificationService.status(nls.localize('missing.chord', \"The key combination ({0}, {1}) is not a command.\", this._currentChord.label, keypressLabel), { hideAfter: 10 * 1000 /* 10s */ });\r\n shouldPreventDefault = true;\r\n }\r\n }\r\n this._leaveChordMode();\r\n if (resolveResult && resolveResult.commandId) {\r\n if (!resolveResult.bubble) {\r\n shouldPreventDefault = true;\r\n }\r\n if (typeof resolveResult.commandArgs === 'undefined') {\r\n this._commandService.executeCommand(resolveResult.commandId).then(undefined, err => this._notificationService.warn(err));\r\n }\r\n else {\r\n this._commandService.executeCommand(resolveResult.commandId, resolveResult.commandArgs).then(undefined, err => this._notificationService.warn(err));\r\n }\r\n this._telemetryService.publicLog2('workbenchActionExecuted', { id: resolveResult.commandId, from: 'keybinding' });\r\n }\r\n return shouldPreventDefault;\r\n }\r\n mightProducePrintableCharacter(event) {\r\n if (event.ctrlKey || event.metaKey) {\r\n // ignore ctrl/cmd-combination but not shift/alt-combinatios\r\n return false;\r\n }\r\n // weak check for certain ranges. this is properly implemented in a subclass\r\n // with access to the KeyboardMapperFactory.\r\n if ((event.keyCode >= 31 /* KEY_A */ && event.keyCode <= 56 /* KEY_Z */)\r\n || (event.keyCode >= 21 /* KEY_0 */ && event.keyCode <= 30 /* KEY_9 */)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from '../../../base/common/errors.js';\r\nimport { UILabelProvider, AriaLabelProvider } from '../../../base/common/keybindingLabels.js';\r\nimport { ResolvedKeybinding, ResolvedKeybindingPart } from '../../../base/common/keyCodes.js';\r\nexport class BaseResolvedKeybinding extends ResolvedKeybinding {\r\n constructor(os, parts) {\r\n super();\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this._os = os;\r\n this._parts = parts;\r\n }\r\n getLabel() {\r\n return UILabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getLabel(keybinding));\r\n }\r\n getAriaLabel() {\r\n return AriaLabelProvider.toLabel(this._os, this._parts, (keybinding) => this._getAriaLabel(keybinding));\r\n }\r\n isChord() {\r\n return (this._parts.length > 1);\r\n }\r\n getParts() {\r\n return this._parts.map((keybinding) => this._getPart(keybinding));\r\n }\r\n _getPart(keybinding) {\r\n return new ResolvedKeybindingPart(keybinding.ctrlKey, keybinding.shiftKey, keybinding.altKey, keybinding.metaKey, this._getLabel(keybinding), this._getAriaLabel(keybinding));\r\n }\r\n getDispatchParts() {\r\n return this._parts.map((keybinding) => this._getDispatchPart(keybinding));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IKeybindingService = createDecorator('keybindingService');\r\n","export class KeybindingResolver {\r\n constructor(defaultKeybindings, overrides, log) {\r\n this._log = log;\r\n this._defaultKeybindings = defaultKeybindings;\r\n this._defaultBoundCommands = new Map();\r\n for (let i = 0, len = defaultKeybindings.length; i < len; i++) {\r\n const command = defaultKeybindings[i].command;\r\n if (command) {\r\n this._defaultBoundCommands.set(command, true);\r\n }\r\n }\r\n this._map = new Map();\r\n this._lookupMap = new Map();\r\n this._keybindings = KeybindingResolver.combine(defaultKeybindings, overrides);\r\n for (let i = 0, len = this._keybindings.length; i < len; i++) {\r\n let k = this._keybindings[i];\r\n if (k.keypressParts.length === 0) {\r\n // unbound\r\n continue;\r\n }\r\n if (k.when && k.when.type === 0 /* False */) {\r\n // when condition is false\r\n continue;\r\n }\r\n // TODO@chords\r\n this._addKeyPress(k.keypressParts[0], k);\r\n }\r\n }\r\n static _isTargetedForRemoval(defaultKb, keypressFirstPart, keypressChordPart, command, when) {\r\n if (defaultKb.command !== command) {\r\n return false;\r\n }\r\n // TODO@chords\r\n if (keypressFirstPart && defaultKb.keypressParts[0] !== keypressFirstPart) {\r\n return false;\r\n }\r\n // TODO@chords\r\n if (keypressChordPart && defaultKb.keypressParts[1] !== keypressChordPart) {\r\n return false;\r\n }\r\n if (when) {\r\n if (!defaultKb.when) {\r\n return false;\r\n }\r\n if (!when.equals(defaultKb.when)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Looks for rules containing -command in `overrides` and removes them directly from `defaults`.\r\n */\r\n static combine(defaults, rawOverrides) {\r\n defaults = defaults.slice(0);\r\n let overrides = [];\r\n for (const override of rawOverrides) {\r\n if (!override.command || override.command.length === 0 || override.command.charAt(0) !== '-') {\r\n overrides.push(override);\r\n continue;\r\n }\r\n const command = override.command.substr(1);\r\n // TODO@chords\r\n const keypressFirstPart = override.keypressParts[0];\r\n const keypressChordPart = override.keypressParts[1];\r\n const when = override.when;\r\n for (let j = defaults.length - 1; j >= 0; j--) {\r\n if (this._isTargetedForRemoval(defaults[j], keypressFirstPart, keypressChordPart, command, when)) {\r\n defaults.splice(j, 1);\r\n }\r\n }\r\n }\r\n return defaults.concat(overrides);\r\n }\r\n _addKeyPress(keypress, item) {\r\n const conflicts = this._map.get(keypress);\r\n if (typeof conflicts === 'undefined') {\r\n // There is no conflict so far\r\n this._map.set(keypress, [item]);\r\n this._addToLookupMap(item);\r\n return;\r\n }\r\n for (let i = conflicts.length - 1; i >= 0; i--) {\r\n let conflict = conflicts[i];\r\n if (conflict.command === item.command) {\r\n continue;\r\n }\r\n const conflictIsChord = (conflict.keypressParts.length > 1);\r\n const itemIsChord = (item.keypressParts.length > 1);\r\n // TODO@chords\r\n if (conflictIsChord && itemIsChord && conflict.keypressParts[1] !== item.keypressParts[1]) {\r\n // The conflict only shares the chord start with this command\r\n continue;\r\n }\r\n if (KeybindingResolver.whenIsEntirelyIncluded(conflict.when, item.when)) {\r\n // `item` completely overwrites `conflict`\r\n // Remove conflict from the lookupMap\r\n this._removeFromLookupMap(conflict);\r\n }\r\n }\r\n conflicts.push(item);\r\n this._addToLookupMap(item);\r\n }\r\n _addToLookupMap(item) {\r\n if (!item.command) {\r\n return;\r\n }\r\n let arr = this._lookupMap.get(item.command);\r\n if (typeof arr === 'undefined') {\r\n arr = [item];\r\n this._lookupMap.set(item.command, arr);\r\n }\r\n else {\r\n arr.push(item);\r\n }\r\n }\r\n _removeFromLookupMap(item) {\r\n if (!item.command) {\r\n return;\r\n }\r\n let arr = this._lookupMap.get(item.command);\r\n if (typeof arr === 'undefined') {\r\n return;\r\n }\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i] === item) {\r\n arr.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n /**\r\n * Returns true if it is provable `a` implies `b`.\r\n */\r\n static whenIsEntirelyIncluded(a, b) {\r\n if (!b) {\r\n return true;\r\n }\r\n if (!a) {\r\n return false;\r\n }\r\n return this._implies(a, b);\r\n }\r\n /**\r\n * Returns true if it is provable `p` implies `q`.\r\n */\r\n static _implies(p, q) {\r\n const notP = p.negate();\r\n const terminals = (node) => {\r\n if (node.type === 9 /* Or */) {\r\n return node.expr;\r\n }\r\n return [node];\r\n };\r\n let expr = terminals(notP).concat(terminals(q));\r\n for (let i = 0; i < expr.length; i++) {\r\n const a = expr[i];\r\n const notA = a.negate();\r\n for (let j = i + 1; j < expr.length; j++) {\r\n const b = expr[j];\r\n if (notA.equals(b)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n getKeybindings() {\r\n return this._keybindings;\r\n }\r\n lookupKeybindings(commandId) {\r\n let items = this._lookupMap.get(commandId);\r\n if (typeof items === 'undefined' || items.length === 0) {\r\n return [];\r\n }\r\n // Reverse to get the most specific item first\r\n let result = [], resultLen = 0;\r\n for (let i = items.length - 1; i >= 0; i--) {\r\n result[resultLen++] = items[i];\r\n }\r\n return result;\r\n }\r\n lookupPrimaryKeybinding(commandId) {\r\n let items = this._lookupMap.get(commandId);\r\n if (typeof items === 'undefined' || items.length === 0) {\r\n return null;\r\n }\r\n return items[items.length - 1];\r\n }\r\n resolve(context, currentChord, keypress) {\r\n this._log(`| Resolving ${keypress}${currentChord ? ` chorded from ${currentChord}` : ``}`);\r\n let lookupMap = null;\r\n if (currentChord !== null) {\r\n // Fetch all chord bindings for `currentChord`\r\n const candidates = this._map.get(currentChord);\r\n if (typeof candidates === 'undefined') {\r\n // No chords starting with `currentChord`\r\n this._log(`\\\\ No keybinding entries.`);\r\n return null;\r\n }\r\n lookupMap = [];\r\n for (let i = 0, len = candidates.length; i < len; i++) {\r\n let candidate = candidates[i];\r\n // TODO@chords\r\n if (candidate.keypressParts[1] === keypress) {\r\n lookupMap.push(candidate);\r\n }\r\n }\r\n }\r\n else {\r\n const candidates = this._map.get(keypress);\r\n if (typeof candidates === 'undefined') {\r\n // No bindings with `keypress`\r\n this._log(`\\\\ No keybinding entries.`);\r\n return null;\r\n }\r\n lookupMap = candidates;\r\n }\r\n let result = this._findCommand(context, lookupMap);\r\n if (!result) {\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, no when clauses matched the context.`);\r\n return null;\r\n }\r\n // TODO@chords\r\n if (currentChord === null && result.keypressParts.length > 1 && result.keypressParts[1] !== null) {\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched chord, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\r\n return {\r\n enterChord: true,\r\n leaveChord: false,\r\n commandId: null,\r\n commandArgs: null,\r\n bubble: false\r\n };\r\n }\r\n this._log(`\\\\ From ${lookupMap.length} keybinding entries, matched ${result.command}, when: ${printWhenExplanation(result.when)}, source: ${printSourceExplanation(result)}.`);\r\n return {\r\n enterChord: false,\r\n leaveChord: result.keypressParts.length > 1,\r\n commandId: result.command,\r\n commandArgs: result.commandArgs,\r\n bubble: result.bubble\r\n };\r\n }\r\n _findCommand(context, matches) {\r\n for (let i = matches.length - 1; i >= 0; i--) {\r\n let k = matches[i];\r\n if (!KeybindingResolver.contextMatchesRules(context, k.when)) {\r\n continue;\r\n }\r\n return k;\r\n }\r\n return null;\r\n }\r\n static contextMatchesRules(context, rules) {\r\n if (!rules) {\r\n return true;\r\n }\r\n return rules.evaluate(context);\r\n }\r\n}\r\nfunction printWhenExplanation(when) {\r\n if (!when) {\r\n return `no when condition`;\r\n }\r\n return `${when.serialize()}`;\r\n}\r\nfunction printSourceExplanation(kb) {\r\n if (kb.isDefault) {\r\n if (kb.extensionId) {\r\n return `built-in extension ${kb.extensionId}`;\r\n }\r\n return `built-in`;\r\n }\r\n if (kb.extensionId) {\r\n return `user extension ${kb.extensionId}`;\r\n }\r\n return `user`;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createKeybinding } from '../../../base/common/keyCodes.js';\r\nimport { OS } from '../../../base/common/platform.js';\r\nimport { CommandsRegistry } from '../../commands/common/commands.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nclass KeybindingsRegistryImpl {\r\n constructor() {\r\n this._coreKeybindings = [];\r\n this._extensionKeybindings = [];\r\n this._cachedMergedKeybindings = null;\r\n }\r\n /**\r\n * Take current platform into account and reduce to primary & secondary.\r\n */\r\n static bindToCurrentPlatform(kb) {\r\n if (OS === 1 /* Windows */) {\r\n if (kb && kb.win) {\r\n return kb.win;\r\n }\r\n }\r\n else if (OS === 2 /* Macintosh */) {\r\n if (kb && kb.mac) {\r\n return kb.mac;\r\n }\r\n }\r\n else {\r\n if (kb && kb.linux) {\r\n return kb.linux;\r\n }\r\n }\r\n return kb;\r\n }\r\n registerKeybindingRule(rule) {\r\n const actualKb = KeybindingsRegistryImpl.bindToCurrentPlatform(rule);\r\n if (actualKb && actualKb.primary) {\r\n const kk = createKeybinding(actualKb.primary, OS);\r\n if (kk) {\r\n this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, 0, rule.when);\r\n }\r\n }\r\n if (actualKb && Array.isArray(actualKb.secondary)) {\r\n for (let i = 0, len = actualKb.secondary.length; i < len; i++) {\r\n const k = actualKb.secondary[i];\r\n const kk = createKeybinding(k, OS);\r\n if (kk) {\r\n this._registerDefaultKeybinding(kk, rule.id, rule.args, rule.weight, -i - 1, rule.when);\r\n }\r\n }\r\n }\r\n }\r\n registerCommandAndKeybindingRule(desc) {\r\n this.registerKeybindingRule(desc);\r\n CommandsRegistry.registerCommand(desc);\r\n }\r\n static _mightProduceChar(keyCode) {\r\n if (keyCode >= 21 /* KEY_0 */ && keyCode <= 30 /* KEY_9 */) {\r\n return true;\r\n }\r\n if (keyCode >= 31 /* KEY_A */ && keyCode <= 56 /* KEY_Z */) {\r\n return true;\r\n }\r\n return (keyCode === 80 /* US_SEMICOLON */\r\n || keyCode === 81 /* US_EQUAL */\r\n || keyCode === 82 /* US_COMMA */\r\n || keyCode === 83 /* US_MINUS */\r\n || keyCode === 84 /* US_DOT */\r\n || keyCode === 85 /* US_SLASH */\r\n || keyCode === 86 /* US_BACKTICK */\r\n || keyCode === 110 /* ABNT_C1 */\r\n || keyCode === 111 /* ABNT_C2 */\r\n || keyCode === 87 /* US_OPEN_SQUARE_BRACKET */\r\n || keyCode === 88 /* US_BACKSLASH */\r\n || keyCode === 89 /* US_CLOSE_SQUARE_BRACKET */\r\n || keyCode === 90 /* US_QUOTE */\r\n || keyCode === 91 /* OEM_8 */\r\n || keyCode === 92 /* OEM_102 */);\r\n }\r\n _assertNoCtrlAlt(keybinding, commandId) {\r\n if (keybinding.ctrlKey && keybinding.altKey && !keybinding.metaKey) {\r\n if (KeybindingsRegistryImpl._mightProduceChar(keybinding.keyCode)) {\r\n console.warn('Ctrl+Alt+ keybindings should not be used by default under Windows. Offender: ', keybinding, ' for ', commandId);\r\n }\r\n }\r\n }\r\n _registerDefaultKeybinding(keybinding, commandId, commandArgs, weight1, weight2, when) {\r\n if (OS === 1 /* Windows */) {\r\n this._assertNoCtrlAlt(keybinding.parts[0], commandId);\r\n }\r\n this._coreKeybindings.push({\r\n keybinding: keybinding,\r\n command: commandId,\r\n commandArgs: commandArgs,\r\n when: when,\r\n weight1: weight1,\r\n weight2: weight2,\r\n extensionId: null\r\n });\r\n this._cachedMergedKeybindings = null;\r\n }\r\n getDefaultKeybindings() {\r\n if (!this._cachedMergedKeybindings) {\r\n this._cachedMergedKeybindings = [].concat(this._coreKeybindings).concat(this._extensionKeybindings);\r\n this._cachedMergedKeybindings.sort(sorter);\r\n }\r\n return this._cachedMergedKeybindings.slice(0);\r\n }\r\n}\r\nexport const KeybindingsRegistry = new KeybindingsRegistryImpl();\r\n// Define extension point ids\r\nexport const Extensions = {\r\n EditorModes: 'platform.keybindingsRegistry'\r\n};\r\nRegistry.add(Extensions.EditorModes, KeybindingsRegistry);\r\nfunction sorter(a, b) {\r\n if (a.weight1 !== b.weight1) {\r\n return a.weight1 - b.weight1;\r\n }\r\n if (a.command < b.command) {\r\n return -1;\r\n }\r\n if (a.command > b.command) {\r\n return 1;\r\n }\r\n return a.weight2 - b.weight2;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class ResolvedKeybindingItem {\r\n constructor(resolvedKeybinding, command, commandArgs, when, isDefault, extensionId) {\r\n this.resolvedKeybinding = resolvedKeybinding;\r\n this.keypressParts = resolvedKeybinding ? removeElementsAfterNulls(resolvedKeybinding.getDispatchParts()) : [];\r\n this.bubble = (command ? command.charCodeAt(0) === 94 /* Caret */ : false);\r\n this.command = this.bubble ? command.substr(1) : command;\r\n this.commandArgs = commandArgs;\r\n this.when = when;\r\n this.isDefault = isDefault;\r\n this.extensionId = extensionId;\r\n }\r\n}\r\nexport function removeElementsAfterNulls(arr) {\r\n let result = [];\r\n for (let i = 0, len = arr.length; i < len; i++) {\r\n const element = arr[i];\r\n if (!element) {\r\n // stop processing at first encountered null\r\n return result;\r\n }\r\n result.push(element);\r\n }\r\n return result;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { KeyCodeUtils } from '../../../base/common/keyCodes.js';\r\nimport { BaseResolvedKeybinding } from './baseResolvedKeybinding.js';\r\n/**\r\n * Do not instantiate. Use KeybindingService to get a ResolvedKeybinding seeded with information about the current kb layout.\r\n */\r\nexport class USLayoutResolvedKeybinding extends BaseResolvedKeybinding {\r\n constructor(actual, os) {\r\n super(os, actual.parts);\r\n }\r\n _keyCodeToUILabel(keyCode) {\r\n if (this._os === 2 /* Macintosh */) {\r\n switch (keyCode) {\r\n case 15 /* LeftArrow */:\r\n return '←';\r\n case 16 /* UpArrow */:\r\n return '↑';\r\n case 17 /* RightArrow */:\r\n return '→';\r\n case 18 /* DownArrow */:\r\n return '↓';\r\n }\r\n }\r\n return KeyCodeUtils.toString(keyCode);\r\n }\r\n _getLabel(keybinding) {\r\n if (keybinding.isDuplicateModifierCase()) {\r\n return '';\r\n }\r\n return this._keyCodeToUILabel(keybinding.keyCode);\r\n }\r\n _getAriaLabel(keybinding) {\r\n if (keybinding.isDuplicateModifierCase()) {\r\n return '';\r\n }\r\n return KeyCodeUtils.toString(keybinding.keyCode);\r\n }\r\n _getDispatchPart(keybinding) {\r\n return USLayoutResolvedKeybinding.getDispatchStr(keybinding);\r\n }\r\n static getDispatchStr(keybinding) {\r\n if (keybinding.isModifierKey()) {\r\n return null;\r\n }\r\n let result = '';\r\n if (keybinding.ctrlKey) {\r\n result += 'ctrl+';\r\n }\r\n if (keybinding.shiftKey) {\r\n result += 'shift+';\r\n }\r\n if (keybinding.altKey) {\r\n result += 'alt+';\r\n }\r\n if (keybinding.metaKey) {\r\n result += 'meta+';\r\n }\r\n result += KeyCodeUtils.toString(keybinding.keyCode);\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const ILabelService = createDecorator('labelService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const ILayoutService = createDecorator('layoutService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { createStyleSheet } from '../../../base/browser/dom.js';\r\nimport { PagedList } from '../../../base/browser/ui/list/listPaging.js';\r\nimport { DefaultStyleController, isSelectionRangeChangeEvent, isSelectionSingleChangeEvent, List } from '../../../base/browser/ui/list/listWidget.js';\r\nimport { Emitter, Event } from '../../../base/common/event.js';\r\nimport { Disposable, dispose, toDisposable, DisposableStore, combinedDisposable } from '../../../base/common/lifecycle.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\r\nimport { Extensions as ConfigurationExtensions } from '../../configuration/common/configurationRegistry.js';\r\nimport { ContextKeyExpr, IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport { attachListStyler, computeStyles, defaultListStyles } from '../../theme/common/styler.js';\r\nimport { IThemeService } from '../../theme/common/themeService.js';\r\nimport { InputFocusedContextKey } from '../../contextkey/common/contextkeys.js';\r\nimport { ObjectTree, CompressibleObjectTree } from '../../../base/browser/ui/tree/objectTree.js';\r\nimport { AsyncDataTree, CompressibleAsyncDataTree } from '../../../base/browser/ui/tree/asyncDataTree.js';\r\nimport { DataTree } from '../../../base/browser/ui/tree/dataTree.js';\r\nimport { IAccessibilityService } from '../../accessibility/common/accessibility.js';\r\nexport const IListService = createDecorator('listService');\r\nlet ListService = class ListService {\r\n constructor(_themeService) {\r\n this._themeService = _themeService;\r\n this.disposables = new DisposableStore();\r\n this.lists = [];\r\n this._lastFocusedWidget = undefined;\r\n this._hasCreatedStyleController = false;\r\n }\r\n get lastFocusedList() {\r\n return this._lastFocusedWidget;\r\n }\r\n register(widget, extraContextKeys) {\r\n if (!this._hasCreatedStyleController) {\r\n this._hasCreatedStyleController = true;\r\n // create a shared default tree style sheet for performance reasons\r\n const styleController = new DefaultStyleController(createStyleSheet(), '');\r\n this.disposables.add(attachListStyler(styleController, this._themeService));\r\n }\r\n if (this.lists.some(l => l.widget === widget)) {\r\n throw new Error('Cannot register the same widget multiple times');\r\n }\r\n // Keep in our lists list\r\n const registeredList = { widget, extraContextKeys };\r\n this.lists.push(registeredList);\r\n // Check for currently being focused\r\n if (widget.getHTMLElement() === document.activeElement) {\r\n this._lastFocusedWidget = widget;\r\n }\r\n return combinedDisposable(widget.onDidFocus(() => this._lastFocusedWidget = widget), toDisposable(() => this.lists.splice(this.lists.indexOf(registeredList), 1)), widget.onDidDispose(() => {\r\n this.lists = this.lists.filter(l => l !== registeredList);\r\n if (this._lastFocusedWidget === widget) {\r\n this._lastFocusedWidget = undefined;\r\n }\r\n }));\r\n }\r\n dispose() {\r\n this.disposables.dispose();\r\n }\r\n};\r\nListService = __decorate([\r\n __param(0, IThemeService)\r\n], ListService);\r\nexport { ListService };\r\nconst RawWorkbenchListFocusContextKey = new RawContextKey('listFocus', true);\r\nexport const WorkbenchListSupportsMultiSelectContextKey = new RawContextKey('listSupportsMultiselect', true);\r\nexport const WorkbenchListFocusContextKey = ContextKeyExpr.and(RawWorkbenchListFocusContextKey, ContextKeyExpr.not(InputFocusedContextKey));\r\nexport const WorkbenchListHasSelectionOrFocus = new RawContextKey('listHasSelectionOrFocus', false);\r\nexport const WorkbenchListDoubleSelection = new RawContextKey('listDoubleSelection', false);\r\nexport const WorkbenchListMultiSelection = new RawContextKey('listMultiSelection', false);\r\nexport const WorkbenchListSupportsKeyboardNavigation = new RawContextKey('listSupportsKeyboardNavigation', true);\r\nexport const WorkbenchListAutomaticKeyboardNavigationKey = 'listAutomaticKeyboardNavigation';\r\nexport const WorkbenchListAutomaticKeyboardNavigation = new RawContextKey(WorkbenchListAutomaticKeyboardNavigationKey, true);\r\nexport let didBindWorkbenchListAutomaticKeyboardNavigation = false;\r\nfunction createScopedContextKeyService(contextKeyService, widget) {\r\n const result = contextKeyService.createScoped(widget.getHTMLElement());\r\n RawWorkbenchListFocusContextKey.bindTo(result);\r\n return result;\r\n}\r\nexport const multiSelectModifierSettingKey = 'workbench.list.multiSelectModifier';\r\nexport const openModeSettingKey = 'workbench.list.openMode';\r\nexport const horizontalScrollingKey = 'workbench.list.horizontalScrolling';\r\nexport const keyboardNavigationSettingKey = 'workbench.list.keyboardNavigation';\r\nexport const automaticKeyboardNavigationSettingKey = 'workbench.list.automaticKeyboardNavigation';\r\nconst treeIndentKey = 'workbench.tree.indent';\r\nconst treeRenderIndentGuidesKey = 'workbench.tree.renderIndentGuides';\r\nconst listSmoothScrolling = 'workbench.list.smoothScrolling';\r\nfunction useAltAsMultipleSelectionModifier(configurationService) {\r\n return configurationService.getValue(multiSelectModifierSettingKey) === 'alt';\r\n}\r\nclass MultipleSelectionController extends Disposable {\r\n constructor(configurationService) {\r\n super();\r\n this.configurationService = configurationService;\r\n this.useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this._register(this.configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\r\n this.useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(this.configurationService);\r\n }\r\n }));\r\n }\r\n isSelectionSingleChangeEvent(event) {\r\n if (this.useAltAsMultipleSelectionModifier) {\r\n return event.browserEvent.altKey;\r\n }\r\n return isSelectionSingleChangeEvent(event);\r\n }\r\n isSelectionRangeChangeEvent(event) {\r\n return isSelectionRangeChangeEvent(event);\r\n }\r\n}\r\nfunction toWorkbenchListOptions(options, configurationService, keybindingService) {\r\n const disposables = new DisposableStore();\r\n const result = Object.assign({}, options);\r\n if (options.multipleSelectionSupport !== false && !options.multipleSelectionController) {\r\n const multipleSelectionController = new MultipleSelectionController(configurationService);\r\n result.multipleSelectionController = multipleSelectionController;\r\n disposables.add(multipleSelectionController);\r\n }\r\n result.keyboardNavigationDelegate = {\r\n mightProducePrintableCharacter(e) {\r\n return keybindingService.mightProducePrintableCharacter(e);\r\n }\r\n };\r\n result.smoothScrolling = configurationService.getValue(listSmoothScrolling);\r\n return [result, disposables];\r\n}\r\nlet WorkbenchList = class WorkbenchList extends List {\r\n constructor(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, keybindingService) {\r\n const horizontalScrolling = typeof options.horizontalScrolling !== 'undefined' ? options.horizontalScrolling : configurationService.getValue(horizontalScrollingKey);\r\n const [workbenchListOptions, workbenchListOptionsDisposable] = toWorkbenchListOptions(options, configurationService, keybindingService);\r\n super(user, container, delegate, renderers, Object.assign(Object.assign(Object.assign({ keyboardSupport: false }, computeStyles(themeService.getColorTheme(), defaultListStyles)), workbenchListOptions), { horizontalScrolling }));\r\n this.disposables.add(workbenchListOptionsDisposable);\r\n this.contextKeyService = createScopedContextKeyService(contextKeyService, this);\r\n this.themeService = themeService;\r\n const listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\r\n listSupportsMultiSelect.set(!(options.multipleSelectionSupport === false));\r\n this.listHasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService);\r\n this.listDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService);\r\n this.listMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService);\r\n this.horizontalScrolling = options.horizontalScrolling;\r\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n this.disposables.add(this.contextKeyService);\r\n this.disposables.add(listService.register(this));\r\n if (options.overrideStyles) {\r\n this.updateStyles(options.overrideStyles);\r\n }\r\n this.disposables.add(this.onDidChangeSelection(() => {\r\n const selection = this.getSelection();\r\n const focus = this.getFocus();\r\n this.contextKeyService.bufferChangeEvents(() => {\r\n this.listHasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\r\n this.listMultiSelection.set(selection.length > 1);\r\n this.listDoubleSelection.set(selection.length === 2);\r\n });\r\n }));\r\n this.disposables.add(this.onDidChangeFocus(() => {\r\n const selection = this.getSelection();\r\n const focus = this.getFocus();\r\n this.listHasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\r\n }));\r\n this.disposables.add(configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\r\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n }\r\n let options = {};\r\n if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {\r\n const horizontalScrolling = configurationService.getValue(horizontalScrollingKey);\r\n options = Object.assign(Object.assign({}, options), { horizontalScrolling });\r\n }\r\n if (e.affectsConfiguration(listSmoothScrolling)) {\r\n const smoothScrolling = configurationService.getValue(listSmoothScrolling);\r\n options = Object.assign(Object.assign({}, options), { smoothScrolling });\r\n }\r\n if (Object.keys(options).length > 0) {\r\n this.updateOptions(options);\r\n }\r\n }));\r\n }\r\n updateOptions(options) {\r\n super.updateOptions(options);\r\n if (options.overrideStyles) {\r\n this.updateStyles(options.overrideStyles);\r\n }\r\n }\r\n dispose() {\r\n super.dispose();\r\n if (this._styler) {\r\n this._styler.dispose();\r\n }\r\n }\r\n updateStyles(styles) {\r\n if (this._styler) {\r\n this._styler.dispose();\r\n }\r\n this._styler = attachListStyler(this, this.themeService, styles);\r\n }\r\n};\r\nWorkbenchList = __decorate([\r\n __param(5, IContextKeyService),\r\n __param(6, IListService),\r\n __param(7, IThemeService),\r\n __param(8, IConfigurationService),\r\n __param(9, IKeybindingService)\r\n], WorkbenchList);\r\nexport { WorkbenchList };\r\nlet WorkbenchPagedList = class WorkbenchPagedList extends PagedList {\r\n constructor(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, keybindingService) {\r\n const horizontalScrolling = typeof options.horizontalScrolling !== 'undefined' ? options.horizontalScrolling : configurationService.getValue(horizontalScrollingKey);\r\n const [workbenchListOptions, workbenchListOptionsDisposable] = toWorkbenchListOptions(options, configurationService, keybindingService);\r\n super(user, container, delegate, renderers, Object.assign(Object.assign(Object.assign({ keyboardSupport: false }, computeStyles(themeService.getColorTheme(), defaultListStyles)), workbenchListOptions), { horizontalScrolling }));\r\n this.disposables = new DisposableStore();\r\n this.disposables.add(workbenchListOptionsDisposable);\r\n this.contextKeyService = createScopedContextKeyService(contextKeyService, this);\r\n this.horizontalScrolling = options.horizontalScrolling;\r\n const listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\r\n listSupportsMultiSelect.set(!(options.multipleSelectionSupport === false));\r\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n this.disposables.add(this.contextKeyService);\r\n this.disposables.add(listService.register(this));\r\n if (options.overrideStyles) {\r\n this.disposables.add(attachListStyler(this, themeService, options.overrideStyles));\r\n }\r\n this.disposables.add(configurationService.onDidChangeConfiguration(e => {\r\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\r\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n }\r\n let options = {};\r\n if (e.affectsConfiguration(horizontalScrollingKey) && this.horizontalScrolling === undefined) {\r\n const horizontalScrolling = configurationService.getValue(horizontalScrollingKey);\r\n options = Object.assign(Object.assign({}, options), { horizontalScrolling });\r\n }\r\n if (e.affectsConfiguration(listSmoothScrolling)) {\r\n const smoothScrolling = configurationService.getValue(listSmoothScrolling);\r\n options = Object.assign(Object.assign({}, options), { smoothScrolling });\r\n }\r\n if (Object.keys(options).length > 0) {\r\n this.updateOptions(options);\r\n }\r\n }));\r\n }\r\n dispose() {\r\n super.dispose();\r\n this.disposables.dispose();\r\n }\r\n};\r\nWorkbenchPagedList = __decorate([\r\n __param(5, IContextKeyService),\r\n __param(6, IListService),\r\n __param(7, IThemeService),\r\n __param(8, IConfigurationService),\r\n __param(9, IKeybindingService)\r\n], WorkbenchPagedList);\r\nexport { WorkbenchPagedList };\r\nclass ResourceNavigator extends Disposable {\r\n constructor(widget, options) {\r\n var _a, _b;\r\n super();\r\n this.widget = widget;\r\n this._onDidOpen = new Emitter();\r\n this.onDidOpen = this._onDidOpen.event;\r\n this.openOnFocus = (_a = options === null || options === void 0 ? void 0 : options.openOnFocus) !== null && _a !== void 0 ? _a : false;\r\n this._register(Event.filter(this.widget.onDidChangeSelection, e => e.browserEvent instanceof KeyboardEvent)(e => this.onSelectionFromKeyboard(e)));\r\n this._register(this.widget.onPointer((e) => this.onPointer(e.browserEvent)));\r\n this._register(this.widget.onMouseDblClick((e) => this.onMouseDblClick(e.browserEvent)));\r\n if (this.openOnFocus) {\r\n this._register(Event.filter(this.widget.onDidChangeFocus, e => e.browserEvent instanceof KeyboardEvent)(e => this.onFocusFromKeyboard(e)));\r\n }\r\n if (typeof (options === null || options === void 0 ? void 0 : options.openOnSingleClick) !== 'boolean' && (options === null || options === void 0 ? void 0 : options.configurationService)) {\r\n this.openOnSingleClick = (options === null || options === void 0 ? void 0 : options.configurationService.getValue(openModeSettingKey)) !== 'doubleClick';\r\n this._register(options === null || options === void 0 ? void 0 : options.configurationService.onDidChangeConfiguration(() => {\r\n this.openOnSingleClick = (options === null || options === void 0 ? void 0 : options.configurationService.getValue(openModeSettingKey)) !== 'doubleClick';\r\n }));\r\n }\r\n else {\r\n this.openOnSingleClick = (_b = options === null || options === void 0 ? void 0 : options.openOnSingleClick) !== null && _b !== void 0 ? _b : true;\r\n }\r\n }\r\n onFocusFromKeyboard(event) {\r\n const focus = this.widget.getFocus();\r\n this.widget.setSelection(focus, event.browserEvent);\r\n const preserveFocus = typeof event.browserEvent.preserveFocus === 'boolean' ? event.browserEvent.preserveFocus : true;\r\n const pinned = false;\r\n const sideBySide = false;\r\n this._open(preserveFocus, pinned, sideBySide, event.browserEvent);\r\n }\r\n onSelectionFromKeyboard(event) {\r\n if (event.elements.length !== 1) {\r\n return;\r\n }\r\n const preserveFocus = typeof event.browserEvent.preserveFocus === 'boolean' ? event.browserEvent.preserveFocus : true;\r\n const pinned = false;\r\n const sideBySide = false;\r\n this._open(preserveFocus, pinned, sideBySide, event.browserEvent);\r\n }\r\n onPointer(browserEvent) {\r\n if (!this.openOnSingleClick) {\r\n return;\r\n }\r\n const isDoubleClick = browserEvent.detail === 2;\r\n if (isDoubleClick) {\r\n return;\r\n }\r\n const isMiddleClick = browserEvent.button === 1;\r\n const preserveFocus = true;\r\n const pinned = isMiddleClick;\r\n const sideBySide = browserEvent.ctrlKey || browserEvent.metaKey || browserEvent.altKey;\r\n this._open(preserveFocus, pinned, sideBySide, browserEvent);\r\n }\r\n onMouseDblClick(browserEvent) {\r\n if (!browserEvent) {\r\n return;\r\n }\r\n const preserveFocus = false;\r\n const pinned = true;\r\n const sideBySide = (browserEvent.ctrlKey || browserEvent.metaKey || browserEvent.altKey);\r\n this._open(preserveFocus, pinned, sideBySide, browserEvent);\r\n }\r\n _open(preserveFocus, pinned, sideBySide, browserEvent) {\r\n this._onDidOpen.fire({\r\n editorOptions: {\r\n preserveFocus,\r\n pinned,\r\n revealIfVisible: true\r\n },\r\n sideBySide,\r\n element: this.widget.getSelection()[0],\r\n browserEvent\r\n });\r\n }\r\n}\r\nclass TreeResourceNavigator extends ResourceNavigator {\r\n constructor(tree, options) {\r\n super(tree, options);\r\n }\r\n}\r\nfunction createKeyboardNavigationEventFilter(container, keybindingService) {\r\n let inChord = false;\r\n return event => {\r\n if (inChord) {\r\n inChord = false;\r\n return false;\r\n }\r\n const result = keybindingService.softDispatch(event, container);\r\n if (result && result.enterChord) {\r\n inChord = true;\r\n return false;\r\n }\r\n inChord = false;\r\n return true;\r\n };\r\n}\r\nlet WorkbenchObjectTree = class WorkbenchObjectTree extends ObjectTree {\r\n constructor(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService) {\r\n const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);\r\n super(user, container, delegate, renderers, treeOptions);\r\n this.disposables.add(disposable);\r\n this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);\r\n this.disposables.add(this.internals);\r\n }\r\n};\r\nWorkbenchObjectTree = __decorate([\r\n __param(5, IContextKeyService),\r\n __param(6, IListService),\r\n __param(7, IThemeService),\r\n __param(8, IConfigurationService),\r\n __param(9, IKeybindingService),\r\n __param(10, IAccessibilityService)\r\n], WorkbenchObjectTree);\r\nexport { WorkbenchObjectTree };\r\nlet WorkbenchCompressibleObjectTree = class WorkbenchCompressibleObjectTree extends CompressibleObjectTree {\r\n constructor(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService) {\r\n const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);\r\n super(user, container, delegate, renderers, treeOptions);\r\n this.disposables.add(disposable);\r\n this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);\r\n this.disposables.add(this.internals);\r\n }\r\n updateOptions(options = {}) {\r\n super.updateOptions(options);\r\n if (options.overrideStyles) {\r\n this.internals.updateStyleOverrides(options.overrideStyles);\r\n }\r\n }\r\n};\r\nWorkbenchCompressibleObjectTree = __decorate([\r\n __param(5, IContextKeyService),\r\n __param(6, IListService),\r\n __param(7, IThemeService),\r\n __param(8, IConfigurationService),\r\n __param(9, IKeybindingService),\r\n __param(10, IAccessibilityService)\r\n], WorkbenchCompressibleObjectTree);\r\nexport { WorkbenchCompressibleObjectTree };\r\nlet WorkbenchDataTree = class WorkbenchDataTree extends DataTree {\r\n constructor(user, container, delegate, renderers, dataSource, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService) {\r\n const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);\r\n super(user, container, delegate, renderers, dataSource, treeOptions);\r\n this.disposables.add(disposable);\r\n this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);\r\n this.disposables.add(this.internals);\r\n }\r\n updateOptions(options = {}) {\r\n super.updateOptions(options);\r\n if (options.overrideStyles) {\r\n this.internals.updateStyleOverrides(options.overrideStyles);\r\n }\r\n }\r\n};\r\nWorkbenchDataTree = __decorate([\r\n __param(6, IContextKeyService),\r\n __param(7, IListService),\r\n __param(8, IThemeService),\r\n __param(9, IConfigurationService),\r\n __param(10, IKeybindingService),\r\n __param(11, IAccessibilityService)\r\n], WorkbenchDataTree);\r\nexport { WorkbenchDataTree };\r\nlet WorkbenchAsyncDataTree = class WorkbenchAsyncDataTree extends AsyncDataTree {\r\n constructor(user, container, delegate, renderers, dataSource, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService) {\r\n const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);\r\n super(user, container, delegate, renderers, dataSource, treeOptions);\r\n this.disposables.add(disposable);\r\n this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);\r\n this.disposables.add(this.internals);\r\n }\r\n get onDidOpen() { return this.internals.onDidOpen; }\r\n updateOptions(options = {}) {\r\n super.updateOptions(options);\r\n if (options.overrideStyles) {\r\n this.internals.updateStyleOverrides(options.overrideStyles);\r\n }\r\n }\r\n};\r\nWorkbenchAsyncDataTree = __decorate([\r\n __param(6, IContextKeyService),\r\n __param(7, IListService),\r\n __param(8, IThemeService),\r\n __param(9, IConfigurationService),\r\n __param(10, IKeybindingService),\r\n __param(11, IAccessibilityService)\r\n], WorkbenchAsyncDataTree);\r\nexport { WorkbenchAsyncDataTree };\r\nlet WorkbenchCompressibleAsyncDataTree = class WorkbenchCompressibleAsyncDataTree extends CompressibleAsyncDataTree {\r\n constructor(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService) {\r\n const { options: treeOptions, getAutomaticKeyboardNavigation, disposable } = workbenchTreeDataPreamble(container, options, contextKeyService, configurationService, keybindingService, accessibilityService);\r\n super(user, container, virtualDelegate, compressionDelegate, renderers, dataSource, treeOptions);\r\n this.disposables.add(disposable);\r\n this.internals = new WorkbenchTreeInternals(this, options, getAutomaticKeyboardNavigation, options.overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService);\r\n this.disposables.add(this.internals);\r\n }\r\n};\r\nWorkbenchCompressibleAsyncDataTree = __decorate([\r\n __param(7, IContextKeyService),\r\n __param(8, IListService),\r\n __param(9, IThemeService),\r\n __param(10, IConfigurationService),\r\n __param(11, IKeybindingService),\r\n __param(12, IAccessibilityService)\r\n], WorkbenchCompressibleAsyncDataTree);\r\nexport { WorkbenchCompressibleAsyncDataTree };\r\nfunction workbenchTreeDataPreamble(container, options, contextKeyService, configurationService, keybindingService, accessibilityService) {\r\n WorkbenchListSupportsKeyboardNavigation.bindTo(contextKeyService);\r\n if (!didBindWorkbenchListAutomaticKeyboardNavigation) {\r\n WorkbenchListAutomaticKeyboardNavigation.bindTo(contextKeyService);\r\n didBindWorkbenchListAutomaticKeyboardNavigation = true;\r\n }\r\n const getAutomaticKeyboardNavigation = () => {\r\n // give priority to the context key value to disable this completely\r\n let automaticKeyboardNavigation = contextKeyService.getContextKeyValue(WorkbenchListAutomaticKeyboardNavigationKey);\r\n if (automaticKeyboardNavigation) {\r\n automaticKeyboardNavigation = configurationService.getValue(automaticKeyboardNavigationSettingKey);\r\n }\r\n return automaticKeyboardNavigation;\r\n };\r\n const accessibilityOn = accessibilityService.isScreenReaderOptimized();\r\n const keyboardNavigation = accessibilityOn ? 'simple' : configurationService.getValue(keyboardNavigationSettingKey);\r\n const horizontalScrolling = options.horizontalScrolling !== undefined ? options.horizontalScrolling : configurationService.getValue(horizontalScrollingKey);\r\n const [workbenchListOptions, disposable] = toWorkbenchListOptions(options, configurationService, keybindingService);\r\n const additionalScrollHeight = options.additionalScrollHeight;\r\n return {\r\n getAutomaticKeyboardNavigation,\r\n disposable,\r\n options: Object.assign(Object.assign({ \r\n // ...options, // TODO@Joao why is this not splatted here?\r\n keyboardSupport: false }, workbenchListOptions), { indent: configurationService.getValue(treeIndentKey), renderIndentGuides: configurationService.getValue(treeRenderIndentGuidesKey), smoothScrolling: configurationService.getValue(listSmoothScrolling), automaticKeyboardNavigation: getAutomaticKeyboardNavigation(), simpleKeyboardNavigation: keyboardNavigation === 'simple', filterOnType: keyboardNavigation === 'filter', horizontalScrolling, keyboardNavigationEventFilter: createKeyboardNavigationEventFilter(container, keybindingService), additionalScrollHeight, hideTwistiesOfChildlessElements: options.hideTwistiesOfChildlessElements, expandOnlyOnDoubleClick: configurationService.getValue(openModeSettingKey) === 'doubleClick' })\r\n };\r\n}\r\nlet WorkbenchTreeInternals = class WorkbenchTreeInternals {\r\n constructor(tree, options, getAutomaticKeyboardNavigation, overrideStyles, contextKeyService, listService, themeService, configurationService, accessibilityService) {\r\n this.tree = tree;\r\n this.themeService = themeService;\r\n this.disposables = [];\r\n this.contextKeyService = createScopedContextKeyService(contextKeyService, tree);\r\n const listSupportsMultiSelect = WorkbenchListSupportsMultiSelectContextKey.bindTo(this.contextKeyService);\r\n listSupportsMultiSelect.set(!(options.multipleSelectionSupport === false));\r\n this.hasSelectionOrFocus = WorkbenchListHasSelectionOrFocus.bindTo(this.contextKeyService);\r\n this.hasDoubleSelection = WorkbenchListDoubleSelection.bindTo(this.contextKeyService);\r\n this.hasMultiSelection = WorkbenchListMultiSelection.bindTo(this.contextKeyService);\r\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n const interestingContextKeys = new Set();\r\n interestingContextKeys.add(WorkbenchListAutomaticKeyboardNavigationKey);\r\n const updateKeyboardNavigation = () => {\r\n const accessibilityOn = accessibilityService.isScreenReaderOptimized();\r\n const keyboardNavigation = accessibilityOn ? 'simple' : configurationService.getValue(keyboardNavigationSettingKey);\r\n tree.updateOptions({\r\n simpleKeyboardNavigation: keyboardNavigation === 'simple',\r\n filterOnType: keyboardNavigation === 'filter'\r\n });\r\n };\r\n this.updateStyleOverrides(overrideStyles);\r\n this.disposables.push(this.contextKeyService, listService.register(tree), tree.onDidChangeSelection(() => {\r\n const selection = tree.getSelection();\r\n const focus = tree.getFocus();\r\n this.contextKeyService.bufferChangeEvents(() => {\r\n this.hasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\r\n this.hasMultiSelection.set(selection.length > 1);\r\n this.hasDoubleSelection.set(selection.length === 2);\r\n });\r\n }), tree.onDidChangeFocus(() => {\r\n const selection = tree.getSelection();\r\n const focus = tree.getFocus();\r\n this.hasSelectionOrFocus.set(selection.length > 0 || focus.length > 0);\r\n }), configurationService.onDidChangeConfiguration(e => {\r\n let newOptions = {};\r\n if (e.affectsConfiguration(multiSelectModifierSettingKey)) {\r\n this._useAltAsMultipleSelectionModifier = useAltAsMultipleSelectionModifier(configurationService);\r\n }\r\n if (e.affectsConfiguration(treeIndentKey)) {\r\n const indent = configurationService.getValue(treeIndentKey);\r\n newOptions = Object.assign(Object.assign({}, newOptions), { indent });\r\n }\r\n if (e.affectsConfiguration(treeRenderIndentGuidesKey)) {\r\n const renderIndentGuides = configurationService.getValue(treeRenderIndentGuidesKey);\r\n newOptions = Object.assign(Object.assign({}, newOptions), { renderIndentGuides });\r\n }\r\n if (e.affectsConfiguration(listSmoothScrolling)) {\r\n const smoothScrolling = configurationService.getValue(listSmoothScrolling);\r\n newOptions = Object.assign(Object.assign({}, newOptions), { smoothScrolling });\r\n }\r\n if (e.affectsConfiguration(keyboardNavigationSettingKey)) {\r\n updateKeyboardNavigation();\r\n }\r\n if (e.affectsConfiguration(automaticKeyboardNavigationSettingKey)) {\r\n newOptions = Object.assign(Object.assign({}, newOptions), { automaticKeyboardNavigation: getAutomaticKeyboardNavigation() });\r\n }\r\n if (e.affectsConfiguration(horizontalScrollingKey) && options.horizontalScrolling === undefined) {\r\n const horizontalScrolling = configurationService.getValue(horizontalScrollingKey);\r\n newOptions = Object.assign(Object.assign({}, newOptions), { horizontalScrolling });\r\n }\r\n if (e.affectsConfiguration(openModeSettingKey)) {\r\n newOptions = Object.assign(Object.assign({}, newOptions), { expandOnlyOnDoubleClick: configurationService.getValue(openModeSettingKey) === 'doubleClick' });\r\n }\r\n if (Object.keys(newOptions).length > 0) {\r\n tree.updateOptions(newOptions);\r\n }\r\n }), this.contextKeyService.onDidChangeContext(e => {\r\n if (e.affectsSome(interestingContextKeys)) {\r\n tree.updateOptions({ automaticKeyboardNavigation: getAutomaticKeyboardNavigation() });\r\n }\r\n }), accessibilityService.onDidChangeScreenReaderOptimized(() => updateKeyboardNavigation()));\r\n this.navigator = new TreeResourceNavigator(tree, Object.assign({ configurationService }, options));\r\n this.disposables.push(this.navigator);\r\n }\r\n get onDidOpen() { return this.navigator.onDidOpen; }\r\n updateStyleOverrides(overrideStyles) {\r\n dispose(this.styler);\r\n this.styler = overrideStyles ? attachListStyler(this.tree, this.themeService, overrideStyles) : Disposable.None;\r\n }\r\n dispose() {\r\n this.disposables = dispose(this.disposables);\r\n dispose(this.styler);\r\n this.styler = undefined;\r\n }\r\n};\r\nWorkbenchTreeInternals = __decorate([\r\n __param(4, IContextKeyService),\r\n __param(5, IListService),\r\n __param(6, IThemeService),\r\n __param(7, IConfigurationService),\r\n __param(8, IAccessibilityService)\r\n], WorkbenchTreeInternals);\r\nconst configurationRegistry = Registry.as(ConfigurationExtensions.Configuration);\r\nconfigurationRegistry.registerConfiguration({\r\n 'id': 'workbench',\r\n 'order': 7,\r\n 'title': localize('workbenchConfigurationTitle', \"Workbench\"),\r\n 'type': 'object',\r\n 'properties': {\r\n [multiSelectModifierSettingKey]: {\r\n 'type': 'string',\r\n 'enum': ['ctrlCmd', 'alt'],\r\n 'enumDescriptions': [\r\n localize('multiSelectModifier.ctrlCmd', \"Maps to `Control` on Windows and Linux and to `Command` on macOS.\"),\r\n localize('multiSelectModifier.alt', \"Maps to `Alt` on Windows and Linux and to `Option` on macOS.\")\r\n ],\r\n 'default': 'ctrlCmd',\r\n 'description': localize({\r\n key: 'multiSelectModifier',\r\n comment: [\r\n '- `ctrlCmd` refers to a value the setting can take and should not be localized.',\r\n '- `Control` and `Command` refer to the modifier keys Ctrl or Cmd on the keyboard and can be localized.'\r\n ]\r\n }, \"The modifier to be used to add an item in trees and lists to a multi-selection with the mouse (for example in the explorer, open editors and scm view). The 'Open to Side' mouse gestures - if supported - will adapt such that they do not conflict with the multiselect modifier.\")\r\n },\r\n [openModeSettingKey]: {\r\n 'type': 'string',\r\n 'enum': ['singleClick', 'doubleClick'],\r\n 'default': 'singleClick',\r\n 'description': localize({\r\n key: 'openModeModifier',\r\n comment: ['`singleClick` and `doubleClick` refers to a value the setting can take and should not be localized.']\r\n }, \"Controls how to open items in trees and lists using the mouse (if supported). For parents with children in trees, this setting will control if a single click expands the parent or a double click. Note that some trees and lists might choose to ignore this setting if it is not applicable. \")\r\n },\r\n [horizontalScrollingKey]: {\r\n 'type': 'boolean',\r\n 'default': false,\r\n 'description': localize('horizontalScrolling setting', \"Controls whether lists and trees support horizontal scrolling in the workbench. Warning: turning on this setting has a performance implication.\")\r\n },\r\n [treeIndentKey]: {\r\n 'type': 'number',\r\n 'default': 8,\r\n minimum: 0,\r\n maximum: 40,\r\n 'description': localize('tree indent setting', \"Controls tree indentation in pixels.\")\r\n },\r\n [treeRenderIndentGuidesKey]: {\r\n type: 'string',\r\n enum: ['none', 'onHover', 'always'],\r\n default: 'onHover',\r\n description: localize('render tree indent guides', \"Controls whether the tree should render indent guides.\")\r\n },\r\n [listSmoothScrolling]: {\r\n type: 'boolean',\r\n default: false,\r\n description: localize('list smoothScrolling setting', \"Controls whether lists and trees have smooth scrolling.\"),\r\n },\r\n [keyboardNavigationSettingKey]: {\r\n 'type': 'string',\r\n 'enum': ['simple', 'highlight', 'filter'],\r\n 'enumDescriptions': [\r\n localize('keyboardNavigationSettingKey.simple', \"Simple keyboard navigation focuses elements which match the keyboard input. Matching is done only on prefixes.\"),\r\n localize('keyboardNavigationSettingKey.highlight', \"Highlight keyboard navigation highlights elements which match the keyboard input. Further up and down navigation will traverse only the highlighted elements.\"),\r\n localize('keyboardNavigationSettingKey.filter', \"Filter keyboard navigation will filter out and hide all the elements which do not match the keyboard input.\")\r\n ],\r\n 'default': 'highlight',\r\n 'description': localize('keyboardNavigationSettingKey', \"Controls the keyboard navigation style for lists and trees in the workbench. Can be simple, highlight and filter.\")\r\n },\r\n [automaticKeyboardNavigationSettingKey]: {\r\n 'type': 'boolean',\r\n 'default': true,\r\n markdownDescription: localize('automatic keyboard navigation setting', \"Controls whether keyboard navigation in lists and trees is automatically triggered simply by typing. If set to `false`, keyboard navigation is only triggered when executing the `list.toggleKeyboardNavigation` command, for which you can assign a keyboard shortcut.\")\r\n }\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator as createServiceDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const ILogService = createServiceDecorator('logService');\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n LogLevel[LogLevel[\"Off\"] = 6] = \"Off\";\r\n})(LogLevel || (LogLevel = {}));\r\nexport const DEFAULT_LOG_LEVEL = LogLevel.Info;\r\nexport class AbstractLogService extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this.level = DEFAULT_LOG_LEVEL;\r\n this._onDidChangeLogLevel = this._register(new Emitter());\r\n }\r\n setLevel(level) {\r\n if (this.level !== level) {\r\n this.level = level;\r\n this._onDidChangeLogLevel.fire(this.level);\r\n }\r\n }\r\n getLevel() {\r\n return this.level;\r\n }\r\n}\r\nexport class ConsoleLogService extends AbstractLogService {\r\n constructor(logLevel = DEFAULT_LOG_LEVEL) {\r\n super();\r\n this.setLevel(logLevel);\r\n }\r\n trace(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Trace) {\r\n console.log('%cTRACE', 'color: #888', message, ...args);\r\n }\r\n }\r\n info(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Info) {\r\n console.log('%c INFO', 'color: #33f', message, ...args);\r\n }\r\n }\r\n error(message, ...args) {\r\n if (this.getLevel() <= LogLevel.Error) {\r\n console.log('%c ERR', 'color: #f33', message, ...args);\r\n }\r\n }\r\n dispose() {\r\n // noop\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isFalsyOrEmpty } from '../../../base/common/arrays.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Event, Emitter } from '../../../base/common/event.js';\r\nimport { MarkerSeverity } from './markers.js';\r\nimport { ResourceMap } from '../../../base/common/map.js';\r\nimport { Iterable } from '../../../base/common/iterator.js';\r\nclass DoubleResourceMap {\r\n constructor() {\r\n this._byResource = new ResourceMap();\r\n this._byOwner = new Map();\r\n }\r\n set(resource, owner, value) {\r\n let ownerMap = this._byResource.get(resource);\r\n if (!ownerMap) {\r\n ownerMap = new Map();\r\n this._byResource.set(resource, ownerMap);\r\n }\r\n ownerMap.set(owner, value);\r\n let resourceMap = this._byOwner.get(owner);\r\n if (!resourceMap) {\r\n resourceMap = new ResourceMap();\r\n this._byOwner.set(owner, resourceMap);\r\n }\r\n resourceMap.set(resource, value);\r\n }\r\n get(resource, owner) {\r\n let ownerMap = this._byResource.get(resource);\r\n return ownerMap === null || ownerMap === void 0 ? void 0 : ownerMap.get(owner);\r\n }\r\n delete(resource, owner) {\r\n let removedA = false;\r\n let removedB = false;\r\n let ownerMap = this._byResource.get(resource);\r\n if (ownerMap) {\r\n removedA = ownerMap.delete(owner);\r\n }\r\n let resourceMap = this._byOwner.get(owner);\r\n if (resourceMap) {\r\n removedB = resourceMap.delete(resource);\r\n }\r\n if (removedA !== removedB) {\r\n throw new Error('illegal state');\r\n }\r\n return removedA && removedB;\r\n }\r\n values(key) {\r\n var _a, _b, _c, _d;\r\n if (typeof key === 'string') {\r\n return (_b = (_a = this._byOwner.get(key)) === null || _a === void 0 ? void 0 : _a.values()) !== null && _b !== void 0 ? _b : Iterable.empty();\r\n }\r\n if (URI.isUri(key)) {\r\n return (_d = (_c = this._byResource.get(key)) === null || _c === void 0 ? void 0 : _c.values()) !== null && _d !== void 0 ? _d : Iterable.empty();\r\n }\r\n return Iterable.map(Iterable.concat(...this._byOwner.values()), map => map[1]);\r\n }\r\n}\r\nclass MarkerStats {\r\n constructor(service) {\r\n this.errors = 0;\r\n this.infos = 0;\r\n this.warnings = 0;\r\n this.unknowns = 0;\r\n this._data = new ResourceMap();\r\n this._service = service;\r\n this._subscription = service.onMarkerChanged(this._update, this);\r\n }\r\n dispose() {\r\n this._subscription.dispose();\r\n }\r\n _update(resources) {\r\n for (const resource of resources) {\r\n const oldStats = this._data.get(resource);\r\n if (oldStats) {\r\n this._substract(oldStats);\r\n }\r\n const newStats = this._resourceStats(resource);\r\n this._add(newStats);\r\n this._data.set(resource, newStats);\r\n }\r\n }\r\n _resourceStats(resource) {\r\n const result = { errors: 0, warnings: 0, infos: 0, unknowns: 0 };\r\n // TODO this is a hack\r\n if (resource.scheme === Schemas.inMemory || resource.scheme === Schemas.walkThrough || resource.scheme === Schemas.walkThroughSnippet) {\r\n return result;\r\n }\r\n for (const { severity } of this._service.read({ resource })) {\r\n if (severity === MarkerSeverity.Error) {\r\n result.errors += 1;\r\n }\r\n else if (severity === MarkerSeverity.Warning) {\r\n result.warnings += 1;\r\n }\r\n else if (severity === MarkerSeverity.Info) {\r\n result.infos += 1;\r\n }\r\n else {\r\n result.unknowns += 1;\r\n }\r\n }\r\n return result;\r\n }\r\n _substract(op) {\r\n this.errors -= op.errors;\r\n this.warnings -= op.warnings;\r\n this.infos -= op.infos;\r\n this.unknowns -= op.unknowns;\r\n }\r\n _add(op) {\r\n this.errors += op.errors;\r\n this.warnings += op.warnings;\r\n this.infos += op.infos;\r\n this.unknowns += op.unknowns;\r\n }\r\n}\r\nexport class MarkerService {\r\n constructor() {\r\n this._onMarkerChanged = new Emitter();\r\n this.onMarkerChanged = Event.debounce(this._onMarkerChanged.event, MarkerService._debouncer, 0);\r\n this._data = new DoubleResourceMap();\r\n this._stats = new MarkerStats(this);\r\n }\r\n dispose() {\r\n this._stats.dispose();\r\n }\r\n remove(owner, resources) {\r\n for (const resource of resources || []) {\r\n this.changeOne(owner, resource, []);\r\n }\r\n }\r\n changeOne(owner, resource, markerData) {\r\n if (isFalsyOrEmpty(markerData)) {\r\n // remove marker for this (owner,resource)-tuple\r\n const removed = this._data.delete(resource, owner);\r\n if (removed) {\r\n this._onMarkerChanged.fire([resource]);\r\n }\r\n }\r\n else {\r\n // insert marker for this (owner,resource)-tuple\r\n const markers = [];\r\n for (const data of markerData) {\r\n const marker = MarkerService._toMarker(owner, resource, data);\r\n if (marker) {\r\n markers.push(marker);\r\n }\r\n }\r\n this._data.set(resource, owner, markers);\r\n this._onMarkerChanged.fire([resource]);\r\n }\r\n }\r\n static _toMarker(owner, resource, data) {\r\n let { code, severity, message, source, startLineNumber, startColumn, endLineNumber, endColumn, relatedInformation, tags, } = data;\r\n if (!message) {\r\n return undefined;\r\n }\r\n // santize data\r\n startLineNumber = startLineNumber > 0 ? startLineNumber : 1;\r\n startColumn = startColumn > 0 ? startColumn : 1;\r\n endLineNumber = endLineNumber >= startLineNumber ? endLineNumber : startLineNumber;\r\n endColumn = endColumn > 0 ? endColumn : startColumn;\r\n return {\r\n resource,\r\n owner,\r\n code,\r\n severity,\r\n message,\r\n source,\r\n startLineNumber,\r\n startColumn,\r\n endLineNumber,\r\n endColumn,\r\n relatedInformation,\r\n tags,\r\n };\r\n }\r\n read(filter = Object.create(null)) {\r\n let { owner, resource, severities, take } = filter;\r\n if (!take || take < 0) {\r\n take = -1;\r\n }\r\n if (owner && resource) {\r\n // exactly one owner AND resource\r\n const data = this._data.get(resource, owner);\r\n if (!data) {\r\n return [];\r\n }\r\n else {\r\n const result = [];\r\n for (const marker of data) {\r\n if (MarkerService._accept(marker, severities)) {\r\n const newLen = result.push(marker);\r\n if (take > 0 && newLen === take) {\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n else if (!owner && !resource) {\r\n // all\r\n const result = [];\r\n for (let markers of this._data.values()) {\r\n for (let data of markers) {\r\n if (MarkerService._accept(data, severities)) {\r\n const newLen = result.push(data);\r\n if (take > 0 && newLen === take) {\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n else {\r\n // of one resource OR owner\r\n const iterable = this._data.values(resource !== null && resource !== void 0 ? resource : owner);\r\n const result = [];\r\n for (const markers of iterable) {\r\n for (const data of markers) {\r\n if (MarkerService._accept(data, severities)) {\r\n const newLen = result.push(data);\r\n if (take > 0 && newLen === take) {\r\n return result;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n static _accept(marker, severities) {\r\n return severities === undefined || (severities & marker.severity) === marker.severity;\r\n }\r\n static _debouncer(last, event) {\r\n if (!last) {\r\n MarkerService._dedupeMap = new ResourceMap();\r\n last = [];\r\n }\r\n for (const uri of event) {\r\n if (!MarkerService._dedupeMap.has(uri)) {\r\n MarkerService._dedupeMap.set(uri, true);\r\n last.push(uri);\r\n }\r\n }\r\n return last;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { localize } from '../../../nls.js';\r\nimport Severity from '../../../base/common/severity.js';\r\nexport var MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\n(function (MarkerSeverity) {\r\n function compare(a, b) {\r\n return b - a;\r\n }\r\n MarkerSeverity.compare = compare;\r\n const _displayStrings = Object.create(null);\r\n _displayStrings[MarkerSeverity.Error] = localize('sev.error', \"Error\");\r\n _displayStrings[MarkerSeverity.Warning] = localize('sev.warning', \"Warning\");\r\n _displayStrings[MarkerSeverity.Info] = localize('sev.info', \"Info\");\r\n function toString(a) {\r\n return _displayStrings[a] || '';\r\n }\r\n MarkerSeverity.toString = toString;\r\n function fromSeverity(severity) {\r\n switch (severity) {\r\n case Severity.Error: return MarkerSeverity.Error;\r\n case Severity.Warning: return MarkerSeverity.Warning;\r\n case Severity.Info: return MarkerSeverity.Info;\r\n case Severity.Ignore: return MarkerSeverity.Hint;\r\n }\r\n }\r\n MarkerSeverity.fromSeverity = fromSeverity;\r\n function toSeverity(severity) {\r\n switch (severity) {\r\n case MarkerSeverity.Error: return Severity.Error;\r\n case MarkerSeverity.Warning: return Severity.Warning;\r\n case MarkerSeverity.Info: return Severity.Info;\r\n case MarkerSeverity.Hint: return Severity.Ignore;\r\n }\r\n }\r\n MarkerSeverity.toSeverity = toSeverity;\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nexport var IMarkerData;\r\n(function (IMarkerData) {\r\n const emptyString = '';\r\n function makeKey(markerData) {\r\n return makeKeyOptionalMessage(markerData, true);\r\n }\r\n IMarkerData.makeKey = makeKey;\r\n function makeKeyOptionalMessage(markerData, useMessage) {\r\n let result = [emptyString];\r\n if (markerData.source) {\r\n result.push(markerData.source.replace('¦', '\\\\¦'));\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n if (markerData.code) {\r\n if (typeof markerData.code === 'string') {\r\n result.push(markerData.code.replace('¦', '\\\\¦'));\r\n }\r\n else {\r\n result.push(markerData.code.value.replace('¦', '\\\\¦'));\r\n }\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n if (markerData.severity !== undefined && markerData.severity !== null) {\r\n result.push(MarkerSeverity.toString(markerData.severity));\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n // Modifed to not include the message as part of the marker key to work around\r\n // https://github.com/microsoft/vscode/issues/77475\r\n if (markerData.message && useMessage) {\r\n result.push(markerData.message.replace('¦', '\\\\¦'));\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n if (markerData.startLineNumber !== undefined && markerData.startLineNumber !== null) {\r\n result.push(markerData.startLineNumber.toString());\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n if (markerData.startColumn !== undefined && markerData.startColumn !== null) {\r\n result.push(markerData.startColumn.toString());\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n if (markerData.endLineNumber !== undefined && markerData.endLineNumber !== null) {\r\n result.push(markerData.endLineNumber.toString());\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n if (markerData.endColumn !== undefined && markerData.endColumn !== null) {\r\n result.push(markerData.endColumn.toString());\r\n }\r\n else {\r\n result.push(emptyString);\r\n }\r\n result.push(emptyString);\r\n return result.join('¦');\r\n }\r\n IMarkerData.makeKeyOptionalMessage = makeKeyOptionalMessage;\r\n})(IMarkerData || (IMarkerData = {}));\r\nexport const IMarkerService = createDecorator('markerService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport BaseSeverity from '../../../base/common/severity.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport var Severity = BaseSeverity;\r\nexport const INotificationService = createDecorator('notificationService');\r\nexport class NoOpNotification {\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { equalsIgnoreCase, startsWithIgnoreCase } from '../../../base/common/strings.js';\r\nexport const IOpenerService = createDecorator('openerService');\r\nexport const NullOpenerService = Object.freeze({\r\n _serviceBrand: undefined,\r\n registerOpener() { return Disposable.None; },\r\n registerValidator() { return Disposable.None; },\r\n registerExternalUriResolver() { return Disposable.None; },\r\n setExternalOpener() { },\r\n open() {\r\n return __awaiter(this, void 0, void 0, function* () { return false; });\r\n },\r\n resolveExternalUri(uri) {\r\n return __awaiter(this, void 0, void 0, function* () { return { resolved: uri, dispose() { } }; });\r\n },\r\n});\r\nexport function matchesScheme(target, scheme) {\r\n if (URI.isUri(target)) {\r\n return equalsIgnoreCase(target.scheme, scheme);\r\n }\r\n else {\r\n return startsWithIgnoreCase(target, scheme + ':');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport class Progress {\r\n constructor(callback) {\r\n this.callback = callback;\r\n }\r\n report(item) {\r\n this._value = item;\r\n this.callback(this._value);\r\n }\r\n}\r\nProgress.None = Object.freeze({ report() { } });\r\nexport const IEditorProgressService = createDecorator('editorProgressService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { localize } from '../../../nls.js';\r\nimport { PickerQuickAccessProvider } from './pickerQuickAccess.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { or, matchesPrefix, matchesWords, matchesContiguousSubString } from '../../../base/common/filters.js';\r\nimport { withNullAsUndefined } from '../../../base/common/types.js';\r\nimport { LRUCache } from '../../../base/common/map.js';\r\nimport { IStorageService } from '../../storage/common/storage.js';\r\nimport { IConfigurationService } from '../../configuration/common/configuration.js';\r\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\r\nimport { IKeybindingService } from '../../keybinding/common/keybinding.js';\r\nimport { ICommandService } from '../../commands/common/commands.js';\r\nimport { ITelemetryService } from '../../telemetry/common/telemetry.js';\r\nimport { isPromiseCanceledError } from '../../../base/common/errors.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { toErrorMessage } from '../../../base/common/errorMessage.js';\r\nimport { IStorageKeysSyncRegistryService } from '../../userDataSync/common/storageKeys.js';\r\nlet AbstractCommandsQuickAccessProvider = class AbstractCommandsQuickAccessProvider extends PickerQuickAccessProvider {\r\n constructor(options, instantiationService, keybindingService, commandService, telemetryService, notificationService) {\r\n super(AbstractCommandsQuickAccessProvider.PREFIX, options);\r\n this.options = options;\r\n this.instantiationService = instantiationService;\r\n this.keybindingService = keybindingService;\r\n this.commandService = commandService;\r\n this.telemetryService = telemetryService;\r\n this.notificationService = notificationService;\r\n this.commandsHistory = this._register(this.instantiationService.createInstance(CommandsHistory));\r\n }\r\n getPicks(filter, disposables, token) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // Ask subclass for all command picks\r\n const allCommandPicks = yield this.getCommandPicks(disposables, token);\r\n if (token.isCancellationRequested) {\r\n return [];\r\n }\r\n // Filter\r\n const filteredCommandPicks = [];\r\n for (const commandPick of allCommandPicks) {\r\n const labelHighlights = withNullAsUndefined(AbstractCommandsQuickAccessProvider.WORD_FILTER(filter, commandPick.label));\r\n const aliasHighlights = commandPick.commandAlias ? withNullAsUndefined(AbstractCommandsQuickAccessProvider.WORD_FILTER(filter, commandPick.commandAlias)) : undefined;\r\n // Add if matching in label or alias\r\n if (labelHighlights || aliasHighlights) {\r\n commandPick.highlights = {\r\n label: labelHighlights,\r\n detail: this.options.showAlias ? aliasHighlights : undefined\r\n };\r\n filteredCommandPicks.push(commandPick);\r\n }\r\n // Also add if we have a 100% command ID match\r\n else if (filter === commandPick.commandId) {\r\n filteredCommandPicks.push(commandPick);\r\n }\r\n }\r\n // Add description to commands that have duplicate labels\r\n const mapLabelToCommand = new Map();\r\n for (const commandPick of filteredCommandPicks) {\r\n const existingCommandForLabel = mapLabelToCommand.get(commandPick.label);\r\n if (existingCommandForLabel) {\r\n commandPick.description = commandPick.commandId;\r\n existingCommandForLabel.description = existingCommandForLabel.commandId;\r\n }\r\n else {\r\n mapLabelToCommand.set(commandPick.label, commandPick);\r\n }\r\n }\r\n // Sort by MRU order and fallback to name otherwise\r\n filteredCommandPicks.sort((commandPickA, commandPickB) => {\r\n const commandACounter = this.commandsHistory.peek(commandPickA.commandId);\r\n const commandBCounter = this.commandsHistory.peek(commandPickB.commandId);\r\n if (commandACounter && commandBCounter) {\r\n return commandACounter > commandBCounter ? -1 : 1; // use more recently used command before older\r\n }\r\n if (commandACounter) {\r\n return -1; // first command was used, so it wins over the non used one\r\n }\r\n if (commandBCounter) {\r\n return 1; // other command was used so it wins over the command\r\n }\r\n // both commands were never used, so we sort by name\r\n return commandPickA.label.localeCompare(commandPickB.label);\r\n });\r\n const commandPicks = [];\r\n let addSeparator = false;\r\n for (let i = 0; i < filteredCommandPicks.length; i++) {\r\n const commandPick = filteredCommandPicks[i];\r\n const keybinding = this.keybindingService.lookupKeybinding(commandPick.commandId);\r\n const ariaLabel = keybinding ?\r\n localize('commandPickAriaLabelWithKeybinding', \"{0}, {1}\", commandPick.label, keybinding.getAriaLabel()) :\r\n commandPick.label;\r\n // Separator: recently used\r\n if (i === 0 && this.commandsHistory.peek(commandPick.commandId)) {\r\n commandPicks.push({ type: 'separator', label: localize('recentlyUsed', \"recently used\") });\r\n addSeparator = true;\r\n }\r\n // Separator: other commands\r\n if (i !== 0 && addSeparator && !this.commandsHistory.peek(commandPick.commandId)) {\r\n commandPicks.push({ type: 'separator', label: localize('morecCommands', \"other commands\") });\r\n addSeparator = false; // only once\r\n }\r\n // Command\r\n commandPicks.push(Object.assign(Object.assign({}, commandPick), { ariaLabel, detail: this.options.showAlias && commandPick.commandAlias !== commandPick.label ? commandPick.commandAlias : undefined, keybinding, accept: () => __awaiter(this, void 0, void 0, function* () {\r\n // Add to history\r\n this.commandsHistory.push(commandPick.commandId);\r\n // Telementry\r\n this.telemetryService.publicLog2('workbenchActionExecuted', {\r\n id: commandPick.commandId,\r\n from: 'quick open'\r\n });\r\n // Run\r\n try {\r\n yield this.commandService.executeCommand(commandPick.commandId);\r\n }\r\n catch (error) {\r\n if (!isPromiseCanceledError(error)) {\r\n this.notificationService.error(localize('canNotRun', \"Command '{0}' resulted in an error ({1})\", commandPick.label, toErrorMessage(error)));\r\n }\r\n }\r\n }) }));\r\n }\r\n return commandPicks;\r\n });\r\n }\r\n};\r\nAbstractCommandsQuickAccessProvider.PREFIX = '>';\r\nAbstractCommandsQuickAccessProvider.WORD_FILTER = or(matchesPrefix, matchesWords, matchesContiguousSubString);\r\nAbstractCommandsQuickAccessProvider = __decorate([\r\n __param(1, IInstantiationService),\r\n __param(2, IKeybindingService),\r\n __param(3, ICommandService),\r\n __param(4, ITelemetryService),\r\n __param(5, INotificationService)\r\n], AbstractCommandsQuickAccessProvider);\r\nexport { AbstractCommandsQuickAccessProvider };\r\nlet CommandsHistory = class CommandsHistory extends Disposable {\r\n constructor(storageService, configurationService, storageKeysSyncRegistryService) {\r\n super();\r\n this.storageService = storageService;\r\n this.configurationService = configurationService;\r\n this.configuredCommandsHistoryLength = 0;\r\n // opt-in to syncing\r\n storageKeysSyncRegistryService.registerStorageKey({ key: CommandsHistory.PREF_KEY_CACHE, version: 1 });\r\n storageKeysSyncRegistryService.registerStorageKey({ key: CommandsHistory.PREF_KEY_COUNTER, version: 1 });\r\n this.updateConfiguration();\r\n this.load();\r\n this.registerListeners();\r\n }\r\n registerListeners() {\r\n this._register(this.configurationService.onDidChangeConfiguration(() => this.updateConfiguration()));\r\n }\r\n updateConfiguration() {\r\n this.configuredCommandsHistoryLength = CommandsHistory.getConfiguredCommandHistoryLength(this.configurationService);\r\n if (CommandsHistory.cache && CommandsHistory.cache.limit !== this.configuredCommandsHistoryLength) {\r\n CommandsHistory.cache.limit = this.configuredCommandsHistoryLength;\r\n CommandsHistory.saveState(this.storageService);\r\n }\r\n }\r\n load() {\r\n const raw = this.storageService.get(CommandsHistory.PREF_KEY_CACHE, 0 /* GLOBAL */);\r\n let serializedCache;\r\n if (raw) {\r\n try {\r\n serializedCache = JSON.parse(raw);\r\n }\r\n catch (error) {\r\n // invalid data\r\n }\r\n }\r\n const cache = CommandsHistory.cache = new LRUCache(this.configuredCommandsHistoryLength, 1);\r\n if (serializedCache) {\r\n let entries;\r\n if (serializedCache.usesLRU) {\r\n entries = serializedCache.entries;\r\n }\r\n else {\r\n entries = serializedCache.entries.sort((a, b) => a.value - b.value);\r\n }\r\n entries.forEach(entry => cache.set(entry.key, entry.value));\r\n }\r\n CommandsHistory.counter = this.storageService.getNumber(CommandsHistory.PREF_KEY_COUNTER, 0 /* GLOBAL */, CommandsHistory.counter);\r\n }\r\n push(commandId) {\r\n if (!CommandsHistory.cache) {\r\n return;\r\n }\r\n CommandsHistory.cache.set(commandId, CommandsHistory.counter++); // set counter to command\r\n CommandsHistory.saveState(this.storageService);\r\n }\r\n peek(commandId) {\r\n var _a;\r\n return (_a = CommandsHistory.cache) === null || _a === void 0 ? void 0 : _a.peek(commandId);\r\n }\r\n static saveState(storageService) {\r\n if (!CommandsHistory.cache) {\r\n return;\r\n }\r\n const serializedCache = { usesLRU: true, entries: [] };\r\n CommandsHistory.cache.forEach((value, key) => serializedCache.entries.push({ key, value }));\r\n storageService.store(CommandsHistory.PREF_KEY_CACHE, JSON.stringify(serializedCache), 0 /* GLOBAL */);\r\n storageService.store(CommandsHistory.PREF_KEY_COUNTER, CommandsHistory.counter, 0 /* GLOBAL */);\r\n }\r\n static getConfiguredCommandHistoryLength(configurationService) {\r\n var _a, _b;\r\n const config = configurationService.getValue();\r\n const configuredCommandHistoryLength = (_b = (_a = config.workbench) === null || _a === void 0 ? void 0 : _a.commandPalette) === null || _b === void 0 ? void 0 : _b.history;\r\n if (typeof configuredCommandHistoryLength === 'number') {\r\n return configuredCommandHistoryLength;\r\n }\r\n return CommandsHistory.DEFAULT_COMMANDS_HISTORY_LENGTH;\r\n }\r\n};\r\nCommandsHistory.DEFAULT_COMMANDS_HISTORY_LENGTH = 50;\r\nCommandsHistory.PREF_KEY_CACHE = 'commandPalette.mru.cache';\r\nCommandsHistory.PREF_KEY_COUNTER = 'commandPalette.mru.counter';\r\nCommandsHistory.counter = 1;\r\nCommandsHistory = __decorate([\r\n __param(0, IStorageService),\r\n __param(1, IConfigurationService),\r\n __param(2, IStorageKeysSyncRegistryService)\r\n], CommandsHistory);\r\nexport { CommandsHistory };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IQuickInputService } from '../common/quickInput.js';\r\nimport { Extensions } from '../common/quickAccess.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport { localize } from '../../../nls.js';\r\nimport { DisposableStore } from '../../../base/common/lifecycle.js';\r\nlet HelpQuickAccessProvider = class HelpQuickAccessProvider {\r\n constructor(quickInputService) {\r\n this.quickInputService = quickInputService;\r\n this.registry = Registry.as(Extensions.Quickaccess);\r\n }\r\n provide(picker) {\r\n const disposables = new DisposableStore();\r\n // Open a picker with the selected value if picked\r\n disposables.add(picker.onDidAccept(() => {\r\n const [item] = picker.selectedItems;\r\n if (item) {\r\n this.quickInputService.quickAccess.show(item.prefix, { preserveValue: true });\r\n }\r\n }));\r\n // Also open a picker when we detect the user typed the exact\r\n // name of a provider (e.g. `?term` for terminals)\r\n disposables.add(picker.onDidChangeValue(value => {\r\n const providerDescriptor = this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider.PREFIX.length));\r\n if (providerDescriptor && providerDescriptor.prefix && providerDescriptor.prefix !== HelpQuickAccessProvider.PREFIX) {\r\n this.quickInputService.quickAccess.show(providerDescriptor.prefix, { preserveValue: true });\r\n }\r\n }));\r\n // Fill in all providers separated by editor/global scope\r\n const { editorProviders, globalProviders } = this.getQuickAccessProviders();\r\n picker.items = editorProviders.length === 0 || globalProviders.length === 0 ?\r\n // Without groups\r\n [\r\n ...(editorProviders.length === 0 ? globalProviders : editorProviders)\r\n ] :\r\n // With groups\r\n [\r\n { label: localize('globalCommands', \"global commands\"), type: 'separator' },\r\n ...globalProviders,\r\n { label: localize('editorCommands', \"editor commands\"), type: 'separator' },\r\n ...editorProviders\r\n ];\r\n return disposables;\r\n }\r\n getQuickAccessProviders() {\r\n const globalProviders = [];\r\n const editorProviders = [];\r\n for (const provider of this.registry.getQuickAccessProviders().sort((providerA, providerB) => providerA.prefix.localeCompare(providerB.prefix))) {\r\n if (provider.prefix === HelpQuickAccessProvider.PREFIX) {\r\n continue; // exclude help which is already active\r\n }\r\n for (const helpEntry of provider.helpEntries) {\r\n const prefix = helpEntry.prefix || provider.prefix;\r\n const label = prefix || '\\u2026' /* ... */;\r\n (helpEntry.needsEditor ? editorProviders : globalProviders).push({\r\n prefix,\r\n label,\r\n ariaLabel: localize('helpPickAriaLabel', \"{0}, {1}\", label, helpEntry.description),\r\n description: helpEntry.description\r\n });\r\n }\r\n }\r\n return { editorProviders, globalProviders };\r\n }\r\n};\r\nHelpQuickAccessProvider.PREFIX = '?';\r\nHelpQuickAccessProvider = __decorate([\r\n __param(0, IQuickInputService)\r\n], HelpQuickAccessProvider);\r\nexport { HelpQuickAccessProvider };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { DisposableStore, Disposable, MutableDisposable } from '../../../base/common/lifecycle.js';\r\nimport { timeout } from '../../../base/common/async.js';\r\nexport var TriggerAction;\r\n(function (TriggerAction) {\r\n /**\r\n * Do nothing after the button was clicked.\r\n */\r\n TriggerAction[TriggerAction[\"NO_ACTION\"] = 0] = \"NO_ACTION\";\r\n /**\r\n * Close the picker.\r\n */\r\n TriggerAction[TriggerAction[\"CLOSE_PICKER\"] = 1] = \"CLOSE_PICKER\";\r\n /**\r\n * Update the results of the picker.\r\n */\r\n TriggerAction[TriggerAction[\"REFRESH_PICKER\"] = 2] = \"REFRESH_PICKER\";\r\n /**\r\n * Remove the item from the picker.\r\n */\r\n TriggerAction[TriggerAction[\"REMOVE_ITEM\"] = 3] = \"REMOVE_ITEM\";\r\n})(TriggerAction || (TriggerAction = {}));\r\nfunction isPicksWithActive(obj) {\r\n const candidate = obj;\r\n return Array.isArray(candidate.items);\r\n}\r\nfunction isFastAndSlowPicks(obj) {\r\n const candidate = obj;\r\n return !!candidate.picks && candidate.additionalPicks instanceof Promise;\r\n}\r\nexport class PickerQuickAccessProvider extends Disposable {\r\n constructor(prefix, options) {\r\n super();\r\n this.prefix = prefix;\r\n this.options = options;\r\n }\r\n provide(picker, token) {\r\n var _a;\r\n const disposables = new DisposableStore();\r\n // Apply options if any\r\n picker.canAcceptInBackground = !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.canAcceptInBackground);\r\n // Disable filtering & sorting, we control the results\r\n picker.matchOnLabel = picker.matchOnDescription = picker.matchOnDetail = picker.sortByLabel = false;\r\n // Set initial picks and update on type\r\n let picksCts = undefined;\r\n const picksDisposable = disposables.add(new MutableDisposable());\r\n const updatePickerItems = () => __awaiter(this, void 0, void 0, function* () {\r\n const picksDisposables = picksDisposable.value = new DisposableStore();\r\n // Cancel any previous ask for picks and busy\r\n picksCts === null || picksCts === void 0 ? void 0 : picksCts.dispose(true);\r\n picker.busy = false;\r\n // Create new cancellation source for this run\r\n picksCts = new CancellationTokenSource(token);\r\n // Collect picks and support both long running and short or combined\r\n const picksToken = picksCts.token;\r\n const picksFilter = picker.value.substr(this.prefix.length).trim();\r\n const providedPicks = this.getPicks(picksFilter, picksDisposables, picksToken);\r\n const applyPicks = (picks, skipEmpty) => {\r\n var _a;\r\n let items;\r\n let activeItem = undefined;\r\n if (isPicksWithActive(picks)) {\r\n items = picks.items;\r\n activeItem = picks.active;\r\n }\r\n else {\r\n items = picks;\r\n }\r\n if (items.length === 0) {\r\n if (skipEmpty) {\r\n return false;\r\n }\r\n if (picksFilter.length > 0 && ((_a = this.options) === null || _a === void 0 ? void 0 : _a.noResultsPick)) {\r\n items = [this.options.noResultsPick];\r\n }\r\n }\r\n picker.items = items;\r\n if (activeItem) {\r\n picker.activeItems = [activeItem];\r\n }\r\n return true;\r\n };\r\n // No Picks\r\n if (providedPicks === null) {\r\n // Ignore\r\n }\r\n // Fast and Slow Picks\r\n else if (isFastAndSlowPicks(providedPicks)) {\r\n let fastPicksApplied = false;\r\n let slowPicksApplied = false;\r\n yield Promise.all([\r\n // Fast Picks: to reduce amount of flicker, we race against\r\n // the slow picks over 500ms and then set the fast picks.\r\n // If the slow picks are faster, we reduce the flicker by\r\n // only setting the items once.\r\n (() => __awaiter(this, void 0, void 0, function* () {\r\n yield timeout(PickerQuickAccessProvider.FAST_PICKS_RACE_DELAY);\r\n if (picksToken.isCancellationRequested) {\r\n return;\r\n }\r\n if (!slowPicksApplied) {\r\n fastPicksApplied = applyPicks(providedPicks.picks, true /* skip over empty to reduce flicker */);\r\n }\r\n }))(),\r\n // Slow Picks: we await the slow picks and then set them at\r\n // once together with the fast picks, but only if we actually\r\n // have additional results.\r\n (() => __awaiter(this, void 0, void 0, function* () {\r\n picker.busy = true;\r\n try {\r\n const awaitedAdditionalPicks = yield providedPicks.additionalPicks;\r\n if (picksToken.isCancellationRequested) {\r\n return;\r\n }\r\n let picks;\r\n let activePick = undefined;\r\n if (isPicksWithActive(providedPicks.picks)) {\r\n picks = providedPicks.picks.items;\r\n activePick = providedPicks.picks.active;\r\n }\r\n else {\r\n picks = providedPicks.picks;\r\n }\r\n let additionalPicks;\r\n let additionalActivePick = undefined;\r\n if (isPicksWithActive(awaitedAdditionalPicks)) {\r\n additionalPicks = awaitedAdditionalPicks.items;\r\n additionalActivePick = awaitedAdditionalPicks.active;\r\n }\r\n else {\r\n additionalPicks = awaitedAdditionalPicks;\r\n }\r\n if (additionalPicks.length > 0 || !fastPicksApplied) {\r\n // If we do not have any activePick or additionalActivePick\r\n // we try to preserve the currently active pick from the\r\n // fast results. This fixes an issue where the user might\r\n // have made a pick active before the additional results\r\n // kick in.\r\n // See https://github.com/microsoft/vscode/issues/102480\r\n let fallbackActivePick = undefined;\r\n if (!activePick && !additionalActivePick) {\r\n const fallbackActivePickCandidate = picker.activeItems[0];\r\n if (fallbackActivePickCandidate && picks.indexOf(fallbackActivePickCandidate) !== -1) {\r\n fallbackActivePick = fallbackActivePickCandidate;\r\n }\r\n }\r\n applyPicks({\r\n items: [...picks, ...additionalPicks],\r\n active: activePick || additionalActivePick || fallbackActivePick\r\n });\r\n }\r\n }\r\n finally {\r\n if (!picksToken.isCancellationRequested) {\r\n picker.busy = false;\r\n }\r\n slowPicksApplied = true;\r\n }\r\n }))()\r\n ]);\r\n }\r\n // Fast Picks\r\n else if (!(providedPicks instanceof Promise)) {\r\n applyPicks(providedPicks);\r\n }\r\n // Slow Picks\r\n else {\r\n picker.busy = true;\r\n try {\r\n const awaitedPicks = yield providedPicks;\r\n if (picksToken.isCancellationRequested) {\r\n return;\r\n }\r\n applyPicks(awaitedPicks);\r\n }\r\n finally {\r\n if (!picksToken.isCancellationRequested) {\r\n picker.busy = false;\r\n }\r\n }\r\n }\r\n });\r\n disposables.add(picker.onDidChangeValue(() => updatePickerItems()));\r\n updatePickerItems();\r\n // Accept the pick on accept and hide picker\r\n disposables.add(picker.onDidAccept(event => {\r\n const [item] = picker.selectedItems;\r\n if (typeof (item === null || item === void 0 ? void 0 : item.accept) === 'function') {\r\n if (!event.inBackground) {\r\n picker.hide(); // hide picker unless we accept in background\r\n }\r\n item.accept(picker.keyMods, event);\r\n }\r\n }));\r\n // Trigger the pick with button index if button triggered\r\n disposables.add(picker.onDidTriggerItemButton(({ button, item }) => __awaiter(this, void 0, void 0, function* () {\r\n var _b, _c;\r\n if (typeof item.trigger === 'function') {\r\n const buttonIndex = (_c = (_b = item.buttons) === null || _b === void 0 ? void 0 : _b.indexOf(button)) !== null && _c !== void 0 ? _c : -1;\r\n if (buttonIndex >= 0) {\r\n const result = item.trigger(buttonIndex, picker.keyMods);\r\n const action = (typeof result === 'number') ? result : yield result;\r\n if (token.isCancellationRequested) {\r\n return;\r\n }\r\n switch (action) {\r\n case TriggerAction.NO_ACTION:\r\n break;\r\n case TriggerAction.CLOSE_PICKER:\r\n picker.hide();\r\n break;\r\n case TriggerAction.REFRESH_PICKER:\r\n updatePickerItems();\r\n break;\r\n case TriggerAction.REMOVE_ITEM:\r\n const index = picker.items.indexOf(item);\r\n if (index !== -1) {\r\n const items = picker.items.slice();\r\n items.splice(index, 1);\r\n picker.items = items;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n })));\r\n return disposables;\r\n }\r\n}\r\nPickerQuickAccessProvider.FAST_PICKS_RACE_DELAY = 200; // timeout before we accept fast results before slow results are present\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { IQuickInputService, ItemActivation } from '../common/quickInput.js';\r\nimport { Disposable, DisposableStore, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { Extensions, DefaultQuickAccessFilterValue } from '../common/quickAccess.js';\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\r\nimport { once } from '../../../base/common/functional.js';\r\nlet QuickAccessController = class QuickAccessController extends Disposable {\r\n constructor(quickInputService, instantiationService) {\r\n super();\r\n this.quickInputService = quickInputService;\r\n this.instantiationService = instantiationService;\r\n this.registry = Registry.as(Extensions.Quickaccess);\r\n this.mapProviderToDescriptor = new Map();\r\n this.lastAcceptedPickerValues = new Map();\r\n this.visibleQuickAccess = undefined;\r\n }\r\n show(value = '', options) {\r\n var _a;\r\n // Find provider for the value to show\r\n const [provider, descriptor] = this.getOrInstantiateProvider(value);\r\n // Return early if quick access is already showing on that same prefix\r\n const visibleQuickAccess = this.visibleQuickAccess;\r\n const visibleDescriptor = visibleQuickAccess === null || visibleQuickAccess === void 0 ? void 0 : visibleQuickAccess.descriptor;\r\n if (visibleQuickAccess && descriptor && visibleDescriptor === descriptor) {\r\n // Apply value only if it is more specific than the prefix\r\n // from the provider and we are not instructed to preserve\r\n if (value !== descriptor.prefix && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\r\n visibleQuickAccess.picker.value = value;\r\n }\r\n // Always adjust selection\r\n this.adjustValueSelection(visibleQuickAccess.picker, descriptor, options);\r\n return;\r\n }\r\n // Rewrite the filter value based on certain rules unless disabled\r\n if (descriptor && !(options === null || options === void 0 ? void 0 : options.preserveValue)) {\r\n let newValue = undefined;\r\n // If we have a visible provider with a value, take it's filter value but\r\n // rewrite to new provider prefix in case they differ\r\n if (visibleQuickAccess && visibleDescriptor && visibleDescriptor !== descriptor) {\r\n const newValueCandidateWithoutPrefix = visibleQuickAccess.value.substr(visibleDescriptor.prefix.length);\r\n if (newValueCandidateWithoutPrefix) {\r\n newValue = `${descriptor.prefix}${newValueCandidateWithoutPrefix}`;\r\n }\r\n }\r\n // Otherwise, take a default value as instructed\r\n if (!newValue) {\r\n const defaultFilterValue = provider === null || provider === void 0 ? void 0 : provider.defaultFilterValue;\r\n if (defaultFilterValue === DefaultQuickAccessFilterValue.LAST) {\r\n newValue = this.lastAcceptedPickerValues.get(descriptor);\r\n }\r\n else if (typeof defaultFilterValue === 'string') {\r\n newValue = `${descriptor.prefix}${defaultFilterValue}`;\r\n }\r\n }\r\n if (typeof newValue === 'string') {\r\n value = newValue;\r\n }\r\n }\r\n // Create a picker for the provider to use with the initial value\r\n // and adjust the filtering to exclude the prefix from filtering\r\n const disposables = new DisposableStore();\r\n const picker = disposables.add(this.quickInputService.createQuickPick());\r\n picker.value = value;\r\n this.adjustValueSelection(picker, descriptor, options);\r\n picker.placeholder = descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\r\n picker.quickNavigate = options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration;\r\n picker.hideInput = !!picker.quickNavigate && !visibleQuickAccess; // only hide input if there was no picker opened already\r\n if (typeof (options === null || options === void 0 ? void 0 : options.itemActivation) === 'number' || (options === null || options === void 0 ? void 0 : options.quickNavigateConfiguration)) {\r\n picker.itemActivation = (_a = options === null || options === void 0 ? void 0 : options.itemActivation) !== null && _a !== void 0 ? _a : ItemActivation.SECOND /* quick nav is always second */;\r\n }\r\n picker.contextKey = descriptor === null || descriptor === void 0 ? void 0 : descriptor.contextKey;\r\n picker.filterValue = (value) => value.substring(descriptor ? descriptor.prefix.length : 0);\r\n if (descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder) {\r\n picker.ariaLabel = descriptor === null || descriptor === void 0 ? void 0 : descriptor.placeholder;\r\n }\r\n // Register listeners\r\n const cancellationToken = this.registerPickerListeners(picker, provider, descriptor, value, disposables);\r\n // Ask provider to fill the picker as needed if we have one\r\n if (provider) {\r\n disposables.add(provider.provide(picker, cancellationToken));\r\n }\r\n // Finally, show the picker. This is important because a provider\r\n // may not call this and then our disposables would leak that rely\r\n // on the onDidHide event.\r\n picker.show();\r\n }\r\n adjustValueSelection(picker, descriptor, options) {\r\n var _a;\r\n let valueSelection;\r\n // Preserve: just always put the cursor at the end\r\n if (options === null || options === void 0 ? void 0 : options.preserveValue) {\r\n valueSelection = [picker.value.length, picker.value.length];\r\n }\r\n // Otherwise: select the value up until the prefix\r\n else {\r\n valueSelection = [(_a = descriptor === null || descriptor === void 0 ? void 0 : descriptor.prefix.length) !== null && _a !== void 0 ? _a : 0, picker.value.length];\r\n }\r\n picker.valueSelection = valueSelection;\r\n }\r\n registerPickerListeners(picker, provider, descriptor, value, disposables) {\r\n // Remember as last visible picker and clean up once picker get's disposed\r\n const visibleQuickAccess = this.visibleQuickAccess = { picker, descriptor, value };\r\n disposables.add(toDisposable(() => {\r\n if (visibleQuickAccess === this.visibleQuickAccess) {\r\n this.visibleQuickAccess = undefined;\r\n }\r\n }));\r\n // Whenever the value changes, check if the provider has\r\n // changed and if so - re-create the picker from the beginning\r\n disposables.add(picker.onDidChangeValue(value => {\r\n const [providerForValue] = this.getOrInstantiateProvider(value);\r\n if (providerForValue !== provider) {\r\n this.show(value, { preserveValue: true } /* do not rewrite value from user typing! */);\r\n }\r\n else {\r\n visibleQuickAccess.value = value; // remember the value in our visible one\r\n }\r\n }));\r\n // Remember picker input for future use when accepting\r\n if (descriptor) {\r\n disposables.add(picker.onDidAccept(() => {\r\n this.lastAcceptedPickerValues.set(descriptor, picker.value);\r\n }));\r\n }\r\n // Create a cancellation token source that is valid as long as the\r\n // picker has not been closed without picking an item\r\n const cts = disposables.add(new CancellationTokenSource());\r\n once(picker.onDidHide)(() => {\r\n if (picker.selectedItems.length === 0) {\r\n cts.cancel();\r\n }\r\n // Start to dispose once picker hides\r\n disposables.dispose();\r\n });\r\n return cts.token;\r\n }\r\n getOrInstantiateProvider(value) {\r\n const providerDescriptor = this.registry.getQuickAccessProvider(value);\r\n if (!providerDescriptor) {\r\n return [undefined, undefined];\r\n }\r\n let provider = this.mapProviderToDescriptor.get(providerDescriptor);\r\n if (!provider) {\r\n provider = this.instantiationService.createInstance(providerDescriptor.ctor);\r\n this.mapProviderToDescriptor.set(providerDescriptor, provider);\r\n }\r\n return [provider, providerDescriptor];\r\n }\r\n};\r\nQuickAccessController = __decorate([\r\n __param(0, IQuickInputService),\r\n __param(1, IInstantiationService)\r\n], QuickAccessController);\r\nexport { QuickAccessController };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nimport { ILayoutService } from '../../layout/browser/layoutService.js';\r\nimport { IInstantiationService } from '../../instantiation/common/instantiation.js';\r\nimport { IThemeService, Themable } from '../../theme/common/themeService.js';\r\nimport { inputBackground, inputForeground, inputBorder, inputValidationInfoBackground, inputValidationInfoForeground, inputValidationInfoBorder, inputValidationWarningBackground, inputValidationWarningForeground, inputValidationWarningBorder, inputValidationErrorBackground, inputValidationErrorForeground, inputValidationErrorBorder, badgeBackground, badgeForeground, contrastBorder, buttonForeground, buttonBackground, buttonHoverBackground, progressBarBackground, widgetShadow, listFocusForeground, listFocusBackground, activeContrastBorder, pickerGroupBorder, pickerGroupForeground, quickInputForeground, quickInputBackground, quickInputTitleBackground } from '../../theme/common/colorRegistry.js';\r\nimport { CancellationToken } from '../../../base/common/cancellation.js';\r\nimport { computeStyles } from '../../theme/common/styler.js';\r\nimport { IContextKeyService, RawContextKey } from '../../contextkey/common/contextkey.js';\r\nimport { IAccessibilityService } from '../../accessibility/common/accessibility.js';\r\nimport { QuickInputController } from '../../../base/parts/quickinput/browser/quickInput.js';\r\nimport { WorkbenchList } from '../../list/browser/listService.js';\r\nimport { QuickAccessController } from './quickAccess.js';\r\nlet QuickInputService = class QuickInputService extends Themable {\r\n constructor(instantiationService, contextKeyService, themeService, accessibilityService, layoutService) {\r\n super(themeService);\r\n this.instantiationService = instantiationService;\r\n this.contextKeyService = contextKeyService;\r\n this.accessibilityService = accessibilityService;\r\n this.layoutService = layoutService;\r\n this.contexts = new Map();\r\n }\r\n get controller() {\r\n if (!this._controller) {\r\n this._controller = this._register(this.createController());\r\n }\r\n return this._controller;\r\n }\r\n get quickAccess() {\r\n if (!this._quickAccess) {\r\n this._quickAccess = this._register(this.instantiationService.createInstance(QuickAccessController));\r\n }\r\n return this._quickAccess;\r\n }\r\n createController(host = this.layoutService, options) {\r\n var _a, _b;\r\n const defaultOptions = {\r\n idPrefix: 'quickInput_',\r\n container: host.container,\r\n ignoreFocusOut: () => false,\r\n isScreenReaderOptimized: () => this.accessibilityService.isScreenReaderOptimized(),\r\n backKeybindingLabel: () => undefined,\r\n setContextKey: (id) => this.setContextKey(id),\r\n returnFocus: () => host.focus(),\r\n createList: (user, container, delegate, renderers, options) => this.instantiationService.createInstance(WorkbenchList, user, container, delegate, renderers, options),\r\n styles: this.computeStyles()\r\n };\r\n const controller = this._register(new QuickInputController(Object.assign(Object.assign({}, defaultOptions), options)));\r\n controller.layout(host.dimension, (_b = (_a = host.offset) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0);\r\n // Layout changes\r\n this._register(host.onLayout(dimension => { var _a, _b; return controller.layout(dimension, (_b = (_a = host.offset) === null || _a === void 0 ? void 0 : _a.top) !== null && _b !== void 0 ? _b : 0); }));\r\n // Context keys\r\n this._register(controller.onShow(() => this.resetContextKeys()));\r\n this._register(controller.onHide(() => this.resetContextKeys()));\r\n return controller;\r\n }\r\n setContextKey(id) {\r\n let key;\r\n if (id) {\r\n key = this.contexts.get(id);\r\n if (!key) {\r\n key = new RawContextKey(id, false)\r\n .bindTo(this.contextKeyService);\r\n this.contexts.set(id, key);\r\n }\r\n }\r\n if (key && key.get()) {\r\n return; // already active context\r\n }\r\n this.resetContextKeys();\r\n if (key) {\r\n key.set(true);\r\n }\r\n }\r\n resetContextKeys() {\r\n this.contexts.forEach(context => {\r\n if (context.get()) {\r\n context.reset();\r\n }\r\n });\r\n }\r\n pick(picks, options = {}, token = CancellationToken.None) {\r\n return this.controller.pick(picks, options, token);\r\n }\r\n createQuickPick() {\r\n return this.controller.createQuickPick();\r\n }\r\n updateStyles() {\r\n this.controller.applyStyles(this.computeStyles());\r\n }\r\n computeStyles() {\r\n return {\r\n widget: Object.assign({}, computeStyles(this.theme, {\r\n quickInputBackground,\r\n quickInputForeground,\r\n quickInputTitleBackground,\r\n contrastBorder,\r\n widgetShadow\r\n })),\r\n inputBox: computeStyles(this.theme, {\r\n inputForeground,\r\n inputBackground,\r\n inputBorder,\r\n inputValidationInfoBackground,\r\n inputValidationInfoForeground,\r\n inputValidationInfoBorder,\r\n inputValidationWarningBackground,\r\n inputValidationWarningForeground,\r\n inputValidationWarningBorder,\r\n inputValidationErrorBackground,\r\n inputValidationErrorForeground,\r\n inputValidationErrorBorder\r\n }),\r\n countBadge: computeStyles(this.theme, {\r\n badgeBackground,\r\n badgeForeground,\r\n badgeBorder: contrastBorder\r\n }),\r\n button: computeStyles(this.theme, {\r\n buttonForeground,\r\n buttonBackground,\r\n buttonHoverBackground,\r\n buttonBorder: contrastBorder\r\n }),\r\n progressBar: computeStyles(this.theme, {\r\n progressBarBackground\r\n }),\r\n list: computeStyles(this.theme, {\r\n listBackground: quickInputBackground,\r\n // Look like focused when inactive.\r\n listInactiveFocusForeground: listFocusForeground,\r\n listInactiveFocusBackground: listFocusBackground,\r\n listFocusOutline: activeContrastBorder,\r\n listInactiveFocusOutline: activeContrastBorder,\r\n pickerGroupBorder,\r\n pickerGroupForeground\r\n })\r\n };\r\n }\r\n};\r\nQuickInputService = __decorate([\r\n __param(0, IInstantiationService),\r\n __param(1, IContextKeyService),\r\n __param(2, IThemeService),\r\n __param(3, IAccessibilityService),\r\n __param(4, ILayoutService)\r\n], QuickInputService);\r\nexport { QuickInputService };\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Registry } from '../../registry/common/platform.js';\r\nimport { coalesce } from '../../../base/common/arrays.js';\r\nimport { toDisposable } from '../../../base/common/lifecycle.js';\r\nexport var DefaultQuickAccessFilterValue;\r\n(function (DefaultQuickAccessFilterValue) {\r\n /**\r\n * Keep the value as it is given to quick access.\r\n */\r\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"PRESERVE\"] = 0] = \"PRESERVE\";\r\n /**\r\n * Use the value that was used last time something was accepted from the picker.\r\n */\r\n DefaultQuickAccessFilterValue[DefaultQuickAccessFilterValue[\"LAST\"] = 1] = \"LAST\";\r\n})(DefaultQuickAccessFilterValue || (DefaultQuickAccessFilterValue = {}));\r\nexport const Extensions = {\r\n Quickaccess: 'workbench.contributions.quickaccess'\r\n};\r\nexport class QuickAccessRegistry {\r\n constructor() {\r\n this.providers = [];\r\n this.defaultProvider = undefined;\r\n }\r\n registerQuickAccessProvider(provider) {\r\n // Extract the default provider when no prefix is present\r\n if (provider.prefix.length === 0) {\r\n this.defaultProvider = provider;\r\n }\r\n else {\r\n this.providers.push(provider);\r\n }\r\n // sort the providers by decreasing prefix length, such that longer\r\n // prefixes take priority: 'ext' vs 'ext install' - the latter should win\r\n this.providers.sort((providerA, providerB) => providerB.prefix.length - providerA.prefix.length);\r\n return toDisposable(() => {\r\n this.providers.splice(this.providers.indexOf(provider), 1);\r\n if (this.defaultProvider === provider) {\r\n this.defaultProvider = undefined;\r\n }\r\n });\r\n }\r\n getQuickAccessProviders() {\r\n return coalesce([this.defaultProvider, ...this.providers]);\r\n }\r\n getQuickAccessProvider(prefix) {\r\n const result = prefix ? (this.providers.find(provider => prefix.startsWith(provider.prefix)) || undefined) : undefined;\r\n return result || this.defaultProvider;\r\n }\r\n}\r\nRegistry.add(Extensions.Quickaccess, new QuickAccessRegistry());\r\n","import { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport * from '../../../base/parts/quickinput/common/quickInput.js';\r\nexport const IQuickInputService = createDecorator('quickInputService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as Types from '../../../base/common/types.js';\r\nimport * as Assert from '../../../base/common/assert.js';\r\nclass RegistryImpl {\r\n constructor() {\r\n this.data = new Map();\r\n }\r\n add(id, data) {\r\n Assert.ok(Types.isString(id));\r\n Assert.ok(Types.isObject(data));\r\n Assert.ok(!this.data.has(id), 'There is already an extension with this id');\r\n this.data.set(id, data);\r\n }\r\n as(id) {\r\n return this.data.get(id) || null;\r\n }\r\n}\r\nexport const Registry = new RegistryImpl();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { registerThemingParticipant } from '../../theme/common/themeService.js';\r\nimport { problemsErrorIconForeground, problemsInfoIconForeground, problemsWarningIconForeground } from '../../theme/common/colorRegistry.js';\r\nimport { Codicon } from '../../../base/common/codicons.js';\r\nexport var SeverityIcon;\r\n(function (SeverityIcon) {\r\n function className(severity) {\r\n switch (severity) {\r\n case Severity.Ignore:\r\n return 'severity-ignore ' + Codicon.info.classNames;\r\n case Severity.Info:\r\n return Codicon.info.classNames;\r\n case Severity.Warning:\r\n return Codicon.warning.classNames;\r\n case Severity.Error:\r\n return Codicon.error.classNames;\r\n default:\r\n return '';\r\n }\r\n }\r\n SeverityIcon.className = className;\r\n})(SeverityIcon || (SeverityIcon = {}));\r\nregisterThemingParticipant((theme, collector) => {\r\n const errorIconForeground = theme.getColor(problemsErrorIconForeground);\r\n if (errorIconForeground) {\r\n const errorCodiconSelector = Codicon.error.cssSelector;\r\n collector.addRule(`\n\t\t\t.monaco-editor .zone-widget ${errorCodiconSelector},\n\t\t\t.markers-panel .marker-icon${errorCodiconSelector},\n\t\t\t.extensions-viewlet > .extensions ${errorCodiconSelector} {\n\t\t\t\tcolor: ${errorIconForeground};\n\t\t\t}\n\t\t`);\r\n }\r\n const warningIconForeground = theme.getColor(problemsWarningIconForeground);\r\n if (warningIconForeground) {\r\n const warningCodiconSelector = Codicon.warning.cssSelector;\r\n collector.addRule(`\n\t\t\t.monaco-editor .zone-widget ${warningCodiconSelector},\n\t\t\t.markers-panel .marker-icon${warningCodiconSelector},\n\t\t\t.extensions-viewlet > .extensions ${warningCodiconSelector},\n\t\t\t.extension-editor ${warningCodiconSelector} {\n\t\t\t\tcolor: ${warningIconForeground};\n\t\t\t}\n\t\t`);\r\n }\r\n const infoIconForeground = theme.getColor(problemsInfoIconForeground);\r\n if (infoIconForeground) {\r\n const infoCodiconSelector = Codicon.info.cssSelector;\r\n collector.addRule(`\n\t\t\t.monaco-editor .zone-widget ${infoCodiconSelector},\n\t\t\t.markers-panel .marker-icon${infoCodiconSelector},\n\t\t\t.extensions-viewlet > .extensions ${infoCodiconSelector},\n\t\t\t.extension-editor ${infoCodiconSelector} {\n\t\t\t\tcolor: ${infoIconForeground};\n\t\t\t}\n\t\t`);\r\n }\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable } from '../../../base/common/lifecycle.js';\r\nimport { isUndefinedOrNull } from '../../../base/common/types.js';\r\nexport const IStorageService = createDecorator('storageService');\r\nexport var WillSaveStateReason;\r\n(function (WillSaveStateReason) {\r\n WillSaveStateReason[WillSaveStateReason[\"NONE\"] = 0] = \"NONE\";\r\n WillSaveStateReason[WillSaveStateReason[\"SHUTDOWN\"] = 1] = \"SHUTDOWN\";\r\n})(WillSaveStateReason || (WillSaveStateReason = {}));\r\nexport class InMemoryStorageService extends Disposable {\r\n constructor() {\r\n super(...arguments);\r\n this._onDidChangeStorage = this._register(new Emitter());\r\n this._onWillSaveState = this._register(new Emitter());\r\n this.onWillSaveState = this._onWillSaveState.event;\r\n this.globalCache = new Map();\r\n this.workspaceCache = new Map();\r\n }\r\n getCache(scope) {\r\n return scope === 0 /* GLOBAL */ ? this.globalCache : this.workspaceCache;\r\n }\r\n get(key, scope, fallbackValue) {\r\n const value = this.getCache(scope).get(key);\r\n if (isUndefinedOrNull(value)) {\r\n return fallbackValue;\r\n }\r\n return value;\r\n }\r\n getBoolean(key, scope, fallbackValue) {\r\n const value = this.getCache(scope).get(key);\r\n if (isUndefinedOrNull(value)) {\r\n return fallbackValue;\r\n }\r\n return value === 'true';\r\n }\r\n getNumber(key, scope, fallbackValue) {\r\n const value = this.getCache(scope).get(key);\r\n if (isUndefinedOrNull(value)) {\r\n return fallbackValue;\r\n }\r\n return parseInt(value, 10);\r\n }\r\n store(key, value, scope) {\r\n // We remove the key for undefined/null values\r\n if (isUndefinedOrNull(value)) {\r\n return this.remove(key, scope);\r\n }\r\n // Otherwise, convert to String and store\r\n const valueStr = String(value);\r\n // Return early if value already set\r\n const currentValue = this.getCache(scope).get(key);\r\n if (currentValue === valueStr) {\r\n return Promise.resolve();\r\n }\r\n // Update in cache\r\n this.getCache(scope).set(key, valueStr);\r\n // Events\r\n this._onDidChangeStorage.fire({ scope, key });\r\n return Promise.resolve();\r\n }\r\n remove(key, scope) {\r\n const wasDeleted = this.getCache(scope).delete(key);\r\n if (!wasDeleted) {\r\n return Promise.resolve(); // Return early if value already deleted\r\n }\r\n // Events\r\n this._onDidChangeStorage.fire({ scope, key });\r\n return Promise.resolve();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const ITelemetryService = createDecorator('telemetryService');\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as platform from '../../registry/common/platform.js';\r\nimport { Color, RGBA } from '../../../base/common/color.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport * as nls from '../../../nls.js';\r\nimport { Extensions as JSONExtensions } from '../../jsonschemas/common/jsonContributionRegistry.js';\r\nimport { RunOnceScheduler } from '../../../base/common/async.js';\r\n// color registry\r\nexport const Extensions = {\r\n ColorContribution: 'base.contributions.colors'\r\n};\r\nclass ColorRegistry {\r\n constructor() {\r\n this._onDidChangeSchema = new Emitter();\r\n this.onDidChangeSchema = this._onDidChangeSchema.event;\r\n this.colorSchema = { type: 'object', properties: {} };\r\n this.colorReferenceSchema = { type: 'string', enum: [], enumDescriptions: [] };\r\n this.colorsById = {};\r\n }\r\n registerColor(id, defaults, description, needsTransparency = false, deprecationMessage) {\r\n let colorContribution = { id, description, defaults, needsTransparency, deprecationMessage };\r\n this.colorsById[id] = colorContribution;\r\n let propertySchema = { type: 'string', description, format: 'color-hex', defaultSnippets: [{ body: '${1:#ff0000}' }] };\r\n if (deprecationMessage) {\r\n propertySchema.deprecationMessage = deprecationMessage;\r\n }\r\n this.colorSchema.properties[id] = propertySchema;\r\n this.colorReferenceSchema.enum.push(id);\r\n this.colorReferenceSchema.enumDescriptions.push(description);\r\n this._onDidChangeSchema.fire();\r\n return id;\r\n }\r\n resolveDefaultColor(id, theme) {\r\n const colorDesc = this.colorsById[id];\r\n if (colorDesc && colorDesc.defaults) {\r\n const colorValue = colorDesc.defaults[theme.type];\r\n return resolveColorValue(colorValue, theme);\r\n }\r\n return undefined;\r\n }\r\n getColorSchema() {\r\n return this.colorSchema;\r\n }\r\n toString() {\r\n let sorter = (a, b) => {\r\n let cat1 = a.indexOf('.') === -1 ? 0 : 1;\r\n let cat2 = b.indexOf('.') === -1 ? 0 : 1;\r\n if (cat1 !== cat2) {\r\n return cat1 - cat2;\r\n }\r\n return a.localeCompare(b);\r\n };\r\n return Object.keys(this.colorsById).sort(sorter).map(k => `- \\`${k}\\`: ${this.colorsById[k].description}`).join('\\n');\r\n }\r\n}\r\nconst colorRegistry = new ColorRegistry();\r\nplatform.Registry.add(Extensions.ColorContribution, colorRegistry);\r\nexport function registerColor(id, defaults, description, needsTransparency, deprecationMessage) {\r\n return colorRegistry.registerColor(id, defaults, description, needsTransparency, deprecationMessage);\r\n}\r\n// ----- base colors\r\nexport const foreground = registerColor('foreground', { dark: '#CCCCCC', light: '#616161', hc: '#FFFFFF' }, nls.localize('foreground', \"Overall foreground color. This color is only used if not overridden by a component.\"));\r\nexport const errorForeground = registerColor('errorForeground', { dark: '#F48771', light: '#A1260D', hc: '#F48771' }, nls.localize('errorForeground', \"Overall foreground color for error messages. This color is only used if not overridden by a component.\"));\r\nexport const iconForeground = registerColor('icon.foreground', { dark: '#C5C5C5', light: '#424242', hc: '#FFFFFF' }, nls.localize('iconForeground', \"The default color for icons in the workbench.\"));\r\nexport const focusBorder = registerColor('focusBorder', { dark: '#007FD4', light: '#0090F1', hc: '#F38518' }, nls.localize('focusBorder', \"Overall border color for focused elements. This color is only used if not overridden by a component.\"));\r\nexport const contrastBorder = registerColor('contrastBorder', { light: null, dark: null, hc: '#6FC3DF' }, nls.localize('contrastBorder', \"An extra border around elements to separate them from others for greater contrast.\"));\r\nexport const activeContrastBorder = registerColor('contrastActiveBorder', { light: null, dark: null, hc: focusBorder }, nls.localize('activeContrastBorder', \"An extra border around active elements to separate them from others for greater contrast.\"));\r\nexport const textLinkForeground = registerColor('textLink.foreground', { light: '#006AB1', dark: '#3794FF', hc: '#3794FF' }, nls.localize('textLinkForeground', \"Foreground color for links in text.\"));\r\nexport const textCodeBlockBackground = registerColor('textCodeBlock.background', { light: '#dcdcdc66', dark: '#0a0a0a66', hc: Color.black }, nls.localize('textCodeBlockBackground', \"Background color for code blocks in text.\"));\r\n// ----- widgets\r\nexport const widgetShadow = registerColor('widget.shadow', { dark: '#000000', light: '#A8A8A8', hc: null }, nls.localize('widgetShadow', 'Shadow color of widgets such as find/replace inside the editor.'));\r\nexport const inputBackground = registerColor('input.background', { dark: '#3C3C3C', light: Color.white, hc: Color.black }, nls.localize('inputBoxBackground', \"Input box background.\"));\r\nexport const inputForeground = registerColor('input.foreground', { dark: foreground, light: foreground, hc: foreground }, nls.localize('inputBoxForeground', \"Input box foreground.\"));\r\nexport const inputBorder = registerColor('input.border', { dark: null, light: null, hc: contrastBorder }, nls.localize('inputBoxBorder', \"Input box border.\"));\r\nexport const inputActiveOptionBorder = registerColor('inputOption.activeBorder', { dark: '#007ACC00', light: '#007ACC00', hc: contrastBorder }, nls.localize('inputBoxActiveOptionBorder', \"Border color of activated options in input fields.\"));\r\nexport const inputActiveOptionBackground = registerColor('inputOption.activeBackground', { dark: transparent(focusBorder, 0.4), light: transparent(focusBorder, 0.2), hc: Color.transparent }, nls.localize('inputOption.activeBackground', \"Background color of activated options in input fields.\"));\r\nexport const inputActiveOptionForeground = registerColor('inputOption.activeForeground', { dark: Color.white, light: Color.black, hc: null }, nls.localize('inputOption.activeForeground', \"Foreground color of activated options in input fields.\"));\r\nexport const inputValidationInfoBackground = registerColor('inputValidation.infoBackground', { dark: '#063B49', light: '#D6ECF2', hc: Color.black }, nls.localize('inputValidationInfoBackground', \"Input validation background color for information severity.\"));\r\nexport const inputValidationInfoForeground = registerColor('inputValidation.infoForeground', { dark: null, light: null, hc: null }, nls.localize('inputValidationInfoForeground', \"Input validation foreground color for information severity.\"));\r\nexport const inputValidationInfoBorder = registerColor('inputValidation.infoBorder', { dark: '#007acc', light: '#007acc', hc: contrastBorder }, nls.localize('inputValidationInfoBorder', \"Input validation border color for information severity.\"));\r\nexport const inputValidationWarningBackground = registerColor('inputValidation.warningBackground', { dark: '#352A05', light: '#F6F5D2', hc: Color.black }, nls.localize('inputValidationWarningBackground', \"Input validation background color for warning severity.\"));\r\nexport const inputValidationWarningForeground = registerColor('inputValidation.warningForeground', { dark: null, light: null, hc: null }, nls.localize('inputValidationWarningForeground', \"Input validation foreground color for warning severity.\"));\r\nexport const inputValidationWarningBorder = registerColor('inputValidation.warningBorder', { dark: '#B89500', light: '#B89500', hc: contrastBorder }, nls.localize('inputValidationWarningBorder', \"Input validation border color for warning severity.\"));\r\nexport const inputValidationErrorBackground = registerColor('inputValidation.errorBackground', { dark: '#5A1D1D', light: '#F2DEDE', hc: Color.black }, nls.localize('inputValidationErrorBackground', \"Input validation background color for error severity.\"));\r\nexport const inputValidationErrorForeground = registerColor('inputValidation.errorForeground', { dark: null, light: null, hc: null }, nls.localize('inputValidationErrorForeground', \"Input validation foreground color for error severity.\"));\r\nexport const inputValidationErrorBorder = registerColor('inputValidation.errorBorder', { dark: '#BE1100', light: '#BE1100', hc: contrastBorder }, nls.localize('inputValidationErrorBorder', \"Input validation border color for error severity.\"));\r\nexport const selectBackground = registerColor('dropdown.background', { dark: '#3C3C3C', light: Color.white, hc: Color.black }, nls.localize('dropdownBackground', \"Dropdown background.\"));\r\nexport const selectForeground = registerColor('dropdown.foreground', { dark: '#F0F0F0', light: null, hc: Color.white }, nls.localize('dropdownForeground', \"Dropdown foreground.\"));\r\nexport const buttonForeground = registerColor('button.foreground', { dark: Color.white, light: Color.white, hc: Color.white }, nls.localize('buttonForeground', \"Button foreground color.\"));\r\nexport const buttonBackground = registerColor('button.background', { dark: '#0E639C', light: '#007ACC', hc: null }, nls.localize('buttonBackground', \"Button background color.\"));\r\nexport const buttonHoverBackground = registerColor('button.hoverBackground', { dark: lighten(buttonBackground, 0.2), light: darken(buttonBackground, 0.2), hc: null }, nls.localize('buttonHoverBackground', \"Button background color when hovering.\"));\r\nexport const badgeBackground = registerColor('badge.background', { dark: '#4D4D4D', light: '#C4C4C4', hc: Color.black }, nls.localize('badgeBackground', \"Badge background color. Badges are small information labels, e.g. for search results count.\"));\r\nexport const badgeForeground = registerColor('badge.foreground', { dark: Color.white, light: '#333', hc: Color.white }, nls.localize('badgeForeground', \"Badge foreground color. Badges are small information labels, e.g. for search results count.\"));\r\nexport const scrollbarShadow = registerColor('scrollbar.shadow', { dark: '#000000', light: '#DDDDDD', hc: null }, nls.localize('scrollbarShadow', \"Scrollbar shadow to indicate that the view is scrolled.\"));\r\nexport const scrollbarSliderBackground = registerColor('scrollbarSlider.background', { dark: Color.fromHex('#797979').transparent(0.4), light: Color.fromHex('#646464').transparent(0.4), hc: transparent(contrastBorder, 0.6) }, nls.localize('scrollbarSliderBackground', \"Scrollbar slider background color.\"));\r\nexport const scrollbarSliderHoverBackground = registerColor('scrollbarSlider.hoverBackground', { dark: Color.fromHex('#646464').transparent(0.7), light: Color.fromHex('#646464').transparent(0.7), hc: transparent(contrastBorder, 0.8) }, nls.localize('scrollbarSliderHoverBackground', \"Scrollbar slider background color when hovering.\"));\r\nexport const scrollbarSliderActiveBackground = registerColor('scrollbarSlider.activeBackground', { dark: Color.fromHex('#BFBFBF').transparent(0.4), light: Color.fromHex('#000000').transparent(0.6), hc: contrastBorder }, nls.localize('scrollbarSliderActiveBackground', \"Scrollbar slider background color when clicked on.\"));\r\nexport const progressBarBackground = registerColor('progressBar.background', { dark: Color.fromHex('#0E70C0'), light: Color.fromHex('#0E70C0'), hc: contrastBorder }, nls.localize('progressBarBackground', \"Background color of the progress bar that can show for long running operations.\"));\r\nexport const editorErrorForeground = registerColor('editorError.foreground', { dark: '#F48771', light: '#E51400', hc: null }, nls.localize('editorError.foreground', 'Foreground color of error squigglies in the editor.'));\r\nexport const editorErrorBorder = registerColor('editorError.border', { dark: null, light: null, hc: Color.fromHex('#E47777').transparent(0.8) }, nls.localize('errorBorder', 'Border color of error boxes in the editor.'));\r\nexport const editorWarningForeground = registerColor('editorWarning.foreground', { dark: '#CCA700', light: '#E9A700', hc: null }, nls.localize('editorWarning.foreground', 'Foreground color of warning squigglies in the editor.'));\r\nexport const editorWarningBorder = registerColor('editorWarning.border', { dark: null, light: null, hc: Color.fromHex('#FFCC00').transparent(0.8) }, nls.localize('warningBorder', 'Border color of warning boxes in the editor.'));\r\nexport const editorInfoForeground = registerColor('editorInfo.foreground', { dark: '#75BEFF', light: '#75BEFF', hc: null }, nls.localize('editorInfo.foreground', 'Foreground color of info squigglies in the editor.'));\r\nexport const editorInfoBorder = registerColor('editorInfo.border', { dark: null, light: null, hc: Color.fromHex('#75BEFF').transparent(0.8) }, nls.localize('infoBorder', 'Border color of info boxes in the editor.'));\r\nexport const editorHintForeground = registerColor('editorHint.foreground', { dark: Color.fromHex('#eeeeee').transparent(0.7), light: '#6c6c6c', hc: null }, nls.localize('editorHint.foreground', 'Foreground color of hint squigglies in the editor.'));\r\nexport const editorHintBorder = registerColor('editorHint.border', { dark: null, light: null, hc: Color.fromHex('#eeeeee').transparent(0.8) }, nls.localize('hintBorder', 'Border color of hint boxes in the editor.'));\r\n/**\r\n * Editor background color.\r\n * Because of bug https://monacotools.visualstudio.com/DefaultCollection/Monaco/_workitems/edit/13254\r\n * we are *not* using the color white (or #ffffff, rgba(255,255,255)) but something very close to white.\r\n */\r\nexport const editorBackground = registerColor('editor.background', { light: '#fffffe', dark: '#1E1E1E', hc: Color.black }, nls.localize('editorBackground', \"Editor background color.\"));\r\n/**\r\n * Editor foreground color.\r\n */\r\nexport const editorForeground = registerColor('editor.foreground', { light: '#333333', dark: '#BBBBBB', hc: Color.white }, nls.localize('editorForeground', \"Editor default foreground color.\"));\r\n/**\r\n * Editor widgets\r\n */\r\nexport const editorWidgetBackground = registerColor('editorWidget.background', { dark: '#252526', light: '#F3F3F3', hc: '#0C141F' }, nls.localize('editorWidgetBackground', 'Background color of editor widgets, such as find/replace.'));\r\nexport const editorWidgetForeground = registerColor('editorWidget.foreground', { dark: foreground, light: foreground, hc: foreground }, nls.localize('editorWidgetForeground', 'Foreground color of editor widgets, such as find/replace.'));\r\nexport const editorWidgetBorder = registerColor('editorWidget.border', { dark: '#454545', light: '#C8C8C8', hc: contrastBorder }, nls.localize('editorWidgetBorder', 'Border color of editor widgets. The color is only used if the widget chooses to have a border and if the color is not overridden by a widget.'));\r\nexport const editorWidgetResizeBorder = registerColor('editorWidget.resizeBorder', { light: null, dark: null, hc: null }, nls.localize('editorWidgetResizeBorder', \"Border color of the resize bar of editor widgets. The color is only used if the widget chooses to have a resize border and if the color is not overridden by a widget.\"));\r\n/**\r\n * Quick pick widget\r\n */\r\nexport const quickInputBackground = registerColor('quickInput.background', { dark: editorWidgetBackground, light: editorWidgetBackground, hc: editorWidgetBackground }, nls.localize('pickerBackground', \"Quick picker background color. The quick picker widget is the container for pickers like the command palette.\"));\r\nexport const quickInputForeground = registerColor('quickInput.foreground', { dark: editorWidgetForeground, light: editorWidgetForeground, hc: editorWidgetForeground }, nls.localize('pickerForeground', \"Quick picker foreground color. The quick picker widget is the container for pickers like the command palette.\"));\r\nexport const quickInputTitleBackground = registerColor('quickInputTitle.background', { dark: new Color(new RGBA(255, 255, 255, 0.105)), light: new Color(new RGBA(0, 0, 0, 0.06)), hc: '#000000' }, nls.localize('pickerTitleBackground', \"Quick picker title background color. The quick picker widget is the container for pickers like the command palette.\"));\r\nexport const pickerGroupForeground = registerColor('pickerGroup.foreground', { dark: '#3794FF', light: '#0066BF', hc: Color.white }, nls.localize('pickerGroupForeground', \"Quick picker color for grouping labels.\"));\r\nexport const pickerGroupBorder = registerColor('pickerGroup.border', { dark: '#3F3F46', light: '#CCCEDB', hc: Color.white }, nls.localize('pickerGroupBorder', \"Quick picker color for grouping borders.\"));\r\n/**\r\n * Editor selection colors.\r\n */\r\nexport const editorSelectionBackground = registerColor('editor.selectionBackground', { light: '#ADD6FF', dark: '#264F78', hc: '#f3f518' }, nls.localize('editorSelectionBackground', \"Color of the editor selection.\"));\r\nexport const editorSelectionForeground = registerColor('editor.selectionForeground', { light: null, dark: null, hc: '#000000' }, nls.localize('editorSelectionForeground', \"Color of the selected text for high contrast.\"));\r\nexport const editorInactiveSelection = registerColor('editor.inactiveSelectionBackground', { light: transparent(editorSelectionBackground, 0.5), dark: transparent(editorSelectionBackground, 0.5), hc: transparent(editorSelectionBackground, 0.5) }, nls.localize('editorInactiveSelection', \"Color of the selection in an inactive editor. The color must not be opaque so as not to hide underlying decorations.\"), true);\r\nexport const editorSelectionHighlight = registerColor('editor.selectionHighlightBackground', { light: lessProminent(editorSelectionBackground, editorBackground, 0.3, 0.6), dark: lessProminent(editorSelectionBackground, editorBackground, 0.3, 0.6), hc: null }, nls.localize('editorSelectionHighlight', 'Color for regions with the same content as the selection. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const editorSelectionHighlightBorder = registerColor('editor.selectionHighlightBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('editorSelectionHighlightBorder', \"Border color for regions with the same content as the selection.\"));\r\n/**\r\n * Editor find match colors.\r\n */\r\nexport const editorFindMatch = registerColor('editor.findMatchBackground', { light: '#A8AC94', dark: '#515C6A', hc: null }, nls.localize('editorFindMatch', \"Color of the current search match.\"));\r\nexport const editorFindMatchHighlight = registerColor('editor.findMatchHighlightBackground', { light: '#EA5C0055', dark: '#EA5C0055', hc: null }, nls.localize('findMatchHighlight', \"Color of the other search matches. The color must not be opaque so as not to hide underlying decorations.\"), true);\r\nexport const editorFindRangeHighlight = registerColor('editor.findRangeHighlightBackground', { dark: '#3a3d4166', light: '#b4b4b44d', hc: null }, nls.localize('findRangeHighlight', \"Color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.\"), true);\r\nexport const editorFindMatchBorder = registerColor('editor.findMatchBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('editorFindMatchBorder', \"Border color of the current search match.\"));\r\nexport const editorFindMatchHighlightBorder = registerColor('editor.findMatchHighlightBorder', { light: null, dark: null, hc: activeContrastBorder }, nls.localize('findMatchHighlightBorder', \"Border color of the other search matches.\"));\r\nexport const editorFindRangeHighlightBorder = registerColor('editor.findRangeHighlightBorder', { dark: null, light: null, hc: transparent(activeContrastBorder, 0.4) }, nls.localize('findRangeHighlightBorder', \"Border color of the range limiting the search. The color must not be opaque so as not to hide underlying decorations.\"), true);\r\n/**\r\n * Editor hover\r\n */\r\nexport const editorHoverHighlight = registerColor('editor.hoverHighlightBackground', { light: '#ADD6FF26', dark: '#264f7840', hc: '#ADD6FF26' }, nls.localize('hoverHighlight', 'Highlight below the word for which a hover is shown. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const editorHoverBackground = registerColor('editorHoverWidget.background', { light: editorWidgetBackground, dark: editorWidgetBackground, hc: editorWidgetBackground }, nls.localize('hoverBackground', 'Background color of the editor hover.'));\r\nexport const editorHoverForeground = registerColor('editorHoverWidget.foreground', { light: editorWidgetForeground, dark: editorWidgetForeground, hc: editorWidgetForeground }, nls.localize('hoverForeground', 'Foreground color of the editor hover.'));\r\nexport const editorHoverBorder = registerColor('editorHoverWidget.border', { light: editorWidgetBorder, dark: editorWidgetBorder, hc: editorWidgetBorder }, nls.localize('hoverBorder', 'Border color of the editor hover.'));\r\nexport const editorHoverStatusBarBackground = registerColor('editorHoverWidget.statusBarBackground', { dark: lighten(editorHoverBackground, 0.2), light: darken(editorHoverBackground, 0.05), hc: editorWidgetBackground }, nls.localize('statusBarBackground', \"Background color of the editor hover status bar.\"));\r\n/**\r\n * Editor link colors\r\n */\r\nexport const editorActiveLinkForeground = registerColor('editorLink.activeForeground', { dark: '#4E94CE', light: Color.blue, hc: Color.cyan }, nls.localize('activeLinkForeground', 'Color of active links.'));\r\n/**\r\n * Editor lighbulb icon colors\r\n */\r\nexport const editorLightBulbForeground = registerColor('editorLightBulb.foreground', { dark: '#FFCC00', light: '#DDB100', hc: '#FFCC00' }, nls.localize('editorLightBulbForeground', \"The color used for the lightbulb actions icon.\"));\r\nexport const editorLightBulbAutoFixForeground = registerColor('editorLightBulbAutoFix.foreground', { dark: '#75BEFF', light: '#007ACC', hc: '#75BEFF' }, nls.localize('editorLightBulbAutoFixForeground', \"The color used for the lightbulb auto fix actions icon.\"));\r\n/**\r\n * Diff Editor Colors\r\n */\r\nexport const defaultInsertColor = new Color(new RGBA(155, 185, 85, 0.2));\r\nexport const defaultRemoveColor = new Color(new RGBA(255, 0, 0, 0.2));\r\nexport const diffInserted = registerColor('diffEditor.insertedTextBackground', { dark: defaultInsertColor, light: defaultInsertColor, hc: null }, nls.localize('diffEditorInserted', 'Background color for text that got inserted. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const diffRemoved = registerColor('diffEditor.removedTextBackground', { dark: defaultRemoveColor, light: defaultRemoveColor, hc: null }, nls.localize('diffEditorRemoved', 'Background color for text that got removed. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const diffInsertedOutline = registerColor('diffEditor.insertedTextBorder', { dark: null, light: null, hc: '#33ff2eff' }, nls.localize('diffEditorInsertedOutline', 'Outline color for the text that got inserted.'));\r\nexport const diffRemovedOutline = registerColor('diffEditor.removedTextBorder', { dark: null, light: null, hc: '#FF008F' }, nls.localize('diffEditorRemovedOutline', 'Outline color for text that got removed.'));\r\nexport const diffBorder = registerColor('diffEditor.border', { dark: null, light: null, hc: contrastBorder }, nls.localize('diffEditorBorder', 'Border color between the two text editors.'));\r\nexport const diffDiagonalFill = registerColor('diffEditor.diagonalFill', { dark: '#cccccc33', light: '#22222233', hc: null }, nls.localize('diffDiagonalFill', \"Color of the diff editor's diagonal fill. The diagonal fill is used in side-by-side diff views.\"));\r\n/**\r\n * List and tree colors\r\n */\r\nexport const listFocusBackground = registerColor('list.focusBackground', { dark: '#062F4A', light: '#D6EBFF', hc: null }, nls.localize('listFocusBackground', \"List/Tree background color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listFocusForeground = registerColor('list.focusForeground', { dark: null, light: null, hc: null }, nls.localize('listFocusForeground', \"List/Tree foreground color for the focused item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listActiveSelectionBackground = registerColor('list.activeSelectionBackground', { dark: '#094771', light: '#0074E8', hc: null }, nls.localize('listActiveSelectionBackground', \"List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listActiveSelectionForeground = registerColor('list.activeSelectionForeground', { dark: Color.white, light: Color.white, hc: null }, nls.localize('listActiveSelectionForeground', \"List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listInactiveSelectionBackground = registerColor('list.inactiveSelectionBackground', { dark: '#37373D', light: '#E4E6F1', hc: null }, nls.localize('listInactiveSelectionBackground', \"List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listInactiveSelectionForeground = registerColor('list.inactiveSelectionForeground', { dark: null, light: null, hc: null }, nls.localize('listInactiveSelectionForeground', \"List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listInactiveFocusBackground = registerColor('list.inactiveFocusBackground', { dark: null, light: null, hc: null }, nls.localize('listInactiveFocusBackground', \"List/Tree background color for the focused item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.\"));\r\nexport const listHoverBackground = registerColor('list.hoverBackground', { dark: '#2A2D2E', light: '#F0F0F0', hc: null }, nls.localize('listHoverBackground', \"List/Tree background when hovering over items using the mouse.\"));\r\nexport const listHoverForeground = registerColor('list.hoverForeground', { dark: null, light: null, hc: null }, nls.localize('listHoverForeground', \"List/Tree foreground when hovering over items using the mouse.\"));\r\nexport const listDropBackground = registerColor('list.dropBackground', { dark: listFocusBackground, light: listFocusBackground, hc: null }, nls.localize('listDropBackground', \"List/Tree drag and drop background when moving items around using the mouse.\"));\r\nexport const listHighlightForeground = registerColor('list.highlightForeground', { dark: '#0097fb', light: '#0066BF', hc: focusBorder }, nls.localize('highlight', 'List/Tree foreground color of the match highlights when searching inside the list/tree.'));\r\nexport const listFilterWidgetBackground = registerColor('listFilterWidget.background', { light: '#efc1ad', dark: '#653723', hc: Color.black }, nls.localize('listFilterWidgetBackground', 'Background color of the type filter widget in lists and trees.'));\r\nexport const listFilterWidgetOutline = registerColor('listFilterWidget.outline', { dark: Color.transparent, light: Color.transparent, hc: '#f38518' }, nls.localize('listFilterWidgetOutline', 'Outline color of the type filter widget in lists and trees.'));\r\nexport const listFilterWidgetNoMatchesOutline = registerColor('listFilterWidget.noMatchesOutline', { dark: '#BE1100', light: '#BE1100', hc: contrastBorder }, nls.localize('listFilterWidgetNoMatchesOutline', 'Outline color of the type filter widget in lists and trees, when there are no matches.'));\r\nexport const treeIndentGuidesStroke = registerColor('tree.indentGuidesStroke', { dark: '#585858', light: '#a9a9a9', hc: '#a9a9a9' }, nls.localize('treeIndentGuidesStroke', \"Tree stroke color for the indentation guides.\"));\r\n/**\r\n * Menu colors\r\n */\r\nexport const menuBorder = registerColor('menu.border', { dark: null, light: null, hc: contrastBorder }, nls.localize('menuBorder', \"Border color of menus.\"));\r\nexport const menuForeground = registerColor('menu.foreground', { dark: selectForeground, light: foreground, hc: selectForeground }, nls.localize('menuForeground', \"Foreground color of menu items.\"));\r\nexport const menuBackground = registerColor('menu.background', { dark: selectBackground, light: selectBackground, hc: selectBackground }, nls.localize('menuBackground', \"Background color of menu items.\"));\r\nexport const menuSelectionForeground = registerColor('menu.selectionForeground', { dark: listActiveSelectionForeground, light: listActiveSelectionForeground, hc: listActiveSelectionForeground }, nls.localize('menuSelectionForeground', \"Foreground color of the selected menu item in menus.\"));\r\nexport const menuSelectionBackground = registerColor('menu.selectionBackground', { dark: listActiveSelectionBackground, light: listActiveSelectionBackground, hc: listActiveSelectionBackground }, nls.localize('menuSelectionBackground', \"Background color of the selected menu item in menus.\"));\r\nexport const menuSelectionBorder = registerColor('menu.selectionBorder', { dark: null, light: null, hc: activeContrastBorder }, nls.localize('menuSelectionBorder', \"Border color of the selected menu item in menus.\"));\r\nexport const menuSeparatorBackground = registerColor('menu.separatorBackground', { dark: '#BBBBBB', light: '#888888', hc: contrastBorder }, nls.localize('menuSeparatorBackground', \"Color of a separator menu item in menus.\"));\r\n/**\r\n * Snippet placeholder colors\r\n */\r\nexport const snippetTabstopHighlightBackground = registerColor('editor.snippetTabstopHighlightBackground', { dark: new Color(new RGBA(124, 124, 124, 0.3)), light: new Color(new RGBA(10, 50, 100, 0.2)), hc: new Color(new RGBA(124, 124, 124, 0.3)) }, nls.localize('snippetTabstopHighlightBackground', \"Highlight background color of a snippet tabstop.\"));\r\nexport const snippetTabstopHighlightBorder = registerColor('editor.snippetTabstopHighlightBorder', { dark: null, light: null, hc: null }, nls.localize('snippetTabstopHighlightBorder', \"Highlight border color of a snippet tabstop.\"));\r\nexport const snippetFinalTabstopHighlightBackground = registerColor('editor.snippetFinalTabstopHighlightBackground', { dark: null, light: null, hc: null }, nls.localize('snippetFinalTabstopHighlightBackground', \"Highlight background color of the final tabstop of a snippet.\"));\r\nexport const snippetFinalTabstopHighlightBorder = registerColor('editor.snippetFinalTabstopHighlightBorder', { dark: '#525252', light: new Color(new RGBA(10, 50, 100, 0.5)), hc: '#525252' }, nls.localize('snippetFinalTabstopHighlightBorder', \"Highlight border color of the final tabstop of a snippet.\"));\r\nexport const overviewRulerFindMatchForeground = registerColor('editorOverviewRuler.findMatchForeground', { dark: '#d186167e', light: '#d186167e', hc: '#AB5A00' }, nls.localize('overviewRulerFindMatchForeground', 'Overview ruler marker color for find matches. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const overviewRulerSelectionHighlightForeground = registerColor('editorOverviewRuler.selectionHighlightForeground', { dark: '#A0A0A0CC', light: '#A0A0A0CC', hc: '#A0A0A0CC' }, nls.localize('overviewRulerSelectionHighlightForeground', 'Overview ruler marker color for selection highlights. The color must not be opaque so as not to hide underlying decorations.'), true);\r\nexport const minimapFindMatch = registerColor('minimap.findMatchHighlight', { light: '#d18616', dark: '#d18616', hc: '#AB5A00' }, nls.localize('minimapFindMatchHighlight', 'Minimap marker color for find matches.'), true);\r\nexport const minimapSelection = registerColor('minimap.selectionHighlight', { light: '#ADD6FF', dark: '#264F78', hc: '#ffffff' }, nls.localize('minimapSelectionHighlight', 'Minimap marker color for the editor selection.'), true);\r\nexport const minimapError = registerColor('minimap.errorHighlight', { dark: new Color(new RGBA(255, 18, 18, 0.7)), light: new Color(new RGBA(255, 18, 18, 0.7)), hc: new Color(new RGBA(255, 50, 50, 1)) }, nls.localize('minimapError', 'Minimap marker color for errors.'));\r\nexport const minimapWarning = registerColor('minimap.warningHighlight', { dark: editorWarningForeground, light: editorWarningForeground, hc: editorWarningBorder }, nls.localize('overviewRuleWarning', 'Minimap marker color for warnings.'));\r\nexport const minimapBackground = registerColor('minimap.background', { dark: null, light: null, hc: null }, nls.localize('minimapBackground', \"Minimap background color.\"));\r\nexport const minimapSliderBackground = registerColor('minimapSlider.background', { light: transparent(scrollbarSliderBackground, 0.5), dark: transparent(scrollbarSliderBackground, 0.5), hc: transparent(scrollbarSliderBackground, 0.5) }, nls.localize('minimapSliderBackground', \"Minimap slider background color.\"));\r\nexport const minimapSliderHoverBackground = registerColor('minimapSlider.hoverBackground', { light: transparent(scrollbarSliderHoverBackground, 0.5), dark: transparent(scrollbarSliderHoverBackground, 0.5), hc: transparent(scrollbarSliderHoverBackground, 0.5) }, nls.localize('minimapSliderHoverBackground', \"Minimap slider background color when hovering.\"));\r\nexport const minimapSliderActiveBackground = registerColor('minimapSlider.activeBackground', { light: transparent(scrollbarSliderActiveBackground, 0.5), dark: transparent(scrollbarSliderActiveBackground, 0.5), hc: transparent(scrollbarSliderActiveBackground, 0.5) }, nls.localize('minimapSliderActiveBackground', \"Minimap slider background color when clicked on.\"));\r\nexport const problemsErrorIconForeground = registerColor('problemsErrorIcon.foreground', { dark: editorErrorForeground, light: editorErrorForeground, hc: editorErrorForeground }, nls.localize('problemsErrorIconForeground', \"The color used for the problems error icon.\"));\r\nexport const problemsWarningIconForeground = registerColor('problemsWarningIcon.foreground', { dark: editorWarningForeground, light: editorWarningForeground, hc: editorWarningForeground }, nls.localize('problemsWarningIconForeground', \"The color used for the problems warning icon.\"));\r\nexport const problemsInfoIconForeground = registerColor('problemsInfoIcon.foreground', { dark: editorInfoForeground, light: editorInfoForeground, hc: editorInfoForeground }, nls.localize('problemsInfoIconForeground', \"The color used for the problems info icon.\"));\r\n// ----- color functions\r\nexport function darken(colorValue, factor) {\r\n return (theme) => {\r\n let color = resolveColorValue(colorValue, theme);\r\n if (color) {\r\n return color.darken(factor);\r\n }\r\n return undefined;\r\n };\r\n}\r\nexport function lighten(colorValue, factor) {\r\n return (theme) => {\r\n let color = resolveColorValue(colorValue, theme);\r\n if (color) {\r\n return color.lighten(factor);\r\n }\r\n return undefined;\r\n };\r\n}\r\nexport function transparent(colorValue, factor) {\r\n return (theme) => {\r\n let color = resolveColorValue(colorValue, theme);\r\n if (color) {\r\n return color.transparent(factor);\r\n }\r\n return undefined;\r\n };\r\n}\r\nexport function oneOf(...colorValues) {\r\n return (theme) => {\r\n for (let colorValue of colorValues) {\r\n let color = resolveColorValue(colorValue, theme);\r\n if (color) {\r\n return color;\r\n }\r\n }\r\n return undefined;\r\n };\r\n}\r\nfunction lessProminent(colorValue, backgroundColorValue, factor, transparency) {\r\n return (theme) => {\r\n let from = resolveColorValue(colorValue, theme);\r\n if (from) {\r\n let backgroundColor = resolveColorValue(backgroundColorValue, theme);\r\n if (backgroundColor) {\r\n if (from.isDarkerThan(backgroundColor)) {\r\n return Color.getLighterColor(from, backgroundColor, factor).transparent(transparency);\r\n }\r\n return Color.getDarkerColor(from, backgroundColor, factor).transparent(transparency);\r\n }\r\n return from.transparent(factor * transparency);\r\n }\r\n return undefined;\r\n };\r\n}\r\n// ----- implementation\r\n/**\r\n * @param colorValue Resolve a color value in the context of a theme\r\n */\r\nexport function resolveColorValue(colorValue, theme) {\r\n if (colorValue === null) {\r\n return undefined;\r\n }\r\n else if (typeof colorValue === 'string') {\r\n if (colorValue[0] === '#') {\r\n return Color.fromHex(colorValue);\r\n }\r\n return theme.getColor(colorValue);\r\n }\r\n else if (colorValue instanceof Color) {\r\n return colorValue;\r\n }\r\n else if (typeof colorValue === 'function') {\r\n return colorValue(theme);\r\n }\r\n return undefined;\r\n}\r\nexport const workbenchColorsSchemaId = 'vscode://schemas/workbench-colors';\r\nlet schemaRegistry = platform.Registry.as(JSONExtensions.JSONContribution);\r\nschemaRegistry.registerSchema(workbenchColorsSchemaId, colorRegistry.getColorSchema());\r\nconst delayer = new RunOnceScheduler(() => schemaRegistry.notifySchemaChanged(workbenchColorsSchemaId), 200);\r\ncolorRegistry.onDidChangeSchema(() => {\r\n if (!delayer.isScheduled()) {\r\n delayer.schedule();\r\n }\r\n});\r\n// setTimeout(_ => console.log(colorRegistry.toString()), 5000);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { contrastBorder, listFocusBackground, listFocusForeground, listActiveSelectionBackground, listActiveSelectionForeground, listInactiveSelectionForeground, listInactiveSelectionBackground, listInactiveFocusBackground, listHoverBackground, listHoverForeground, listDropBackground, widgetShadow, activeContrastBorder, badgeBackground, badgeForeground, menuForeground, menuBackground, menuSelectionForeground, menuSelectionBackground, menuSelectionBorder, menuBorder, menuSeparatorBackground, darken, listFilterWidgetOutline, listFilterWidgetNoMatchesOutline, listFilterWidgetBackground, treeIndentGuidesStroke, resolveColorValue } from './colorRegistry.js';\r\nexport function computeStyles(theme, styleMap) {\r\n const styles = Object.create(null);\r\n for (let key in styleMap) {\r\n const value = styleMap[key];\r\n if (value) {\r\n styles[key] = resolveColorValue(value, theme);\r\n }\r\n }\r\n return styles;\r\n}\r\nexport function attachStyler(themeService, styleMap, widgetOrCallback) {\r\n function applyStyles(theme) {\r\n const styles = computeStyles(themeService.getColorTheme(), styleMap);\r\n if (typeof widgetOrCallback === 'function') {\r\n widgetOrCallback(styles);\r\n }\r\n else {\r\n widgetOrCallback.style(styles);\r\n }\r\n }\r\n applyStyles(themeService.getColorTheme());\r\n return themeService.onDidColorThemeChange(applyStyles);\r\n}\r\nexport function attachBadgeStyler(widget, themeService, style) {\r\n return attachStyler(themeService, {\r\n badgeBackground: (style && style.badgeBackground) || badgeBackground,\r\n badgeForeground: (style && style.badgeForeground) || badgeForeground,\r\n badgeBorder: contrastBorder\r\n }, widget);\r\n}\r\nexport function attachListStyler(widget, themeService, overrides) {\r\n return attachStyler(themeService, Object.assign(Object.assign({}, defaultListStyles), (overrides || {})), widget);\r\n}\r\nexport const defaultListStyles = {\r\n listFocusBackground: listFocusBackground,\r\n listFocusForeground: listFocusForeground,\r\n listActiveSelectionBackground: darken(listActiveSelectionBackground, 0.1),\r\n listActiveSelectionForeground: listActiveSelectionForeground,\r\n listFocusAndSelectionBackground: listActiveSelectionBackground,\r\n listFocusAndSelectionForeground: listActiveSelectionForeground,\r\n listInactiveSelectionBackground: listInactiveSelectionBackground,\r\n listInactiveSelectionForeground: listInactiveSelectionForeground,\r\n listInactiveFocusBackground: listInactiveFocusBackground,\r\n listHoverBackground: listHoverBackground,\r\n listHoverForeground: listHoverForeground,\r\n listDropBackground: listDropBackground,\r\n listFocusOutline: activeContrastBorder,\r\n listSelectionOutline: activeContrastBorder,\r\n listHoverOutline: activeContrastBorder,\r\n listFilterWidgetBackground: listFilterWidgetBackground,\r\n listFilterWidgetOutline: listFilterWidgetOutline,\r\n listFilterWidgetNoMatchesOutline: listFilterWidgetNoMatchesOutline,\r\n listMatchesShadow: widgetShadow,\r\n treeIndentGuidesStroke: treeIndentGuidesStroke\r\n};\r\nexport const defaultMenuStyles = {\r\n shadowColor: widgetShadow,\r\n borderColor: menuBorder,\r\n foregroundColor: menuForeground,\r\n backgroundColor: menuBackground,\r\n selectionForegroundColor: menuSelectionForeground,\r\n selectionBackgroundColor: menuSelectionBackground,\r\n selectionBorderColor: menuSelectionBorder,\r\n separatorColor: menuSeparatorBackground\r\n};\r\nexport function attachMenuStyler(widget, themeService, style) {\r\n return attachStyler(themeService, Object.assign(Object.assign({}, defaultMenuStyles), style), widget);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { toDisposable, Disposable } from '../../../base/common/lifecycle.js';\r\nimport * as platform from '../../registry/common/platform.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nexport const IThemeService = createDecorator('themeService');\r\nexport function themeColorFromId(id) {\r\n return { id };\r\n}\r\nexport var ThemeIcon;\r\n(function (ThemeIcon) {\r\n function isThemeIcon(obj) {\r\n return obj && typeof obj === 'object' && typeof obj.id === 'string';\r\n }\r\n ThemeIcon.isThemeIcon = isThemeIcon;\r\n const _regexFromString = /^\\$\\(([a-z.]+\\/)?([a-z-~]+)\\)$/i;\r\n function fromString(str) {\r\n const match = _regexFromString.exec(str);\r\n if (!match) {\r\n return undefined;\r\n }\r\n let [, owner, name] = match;\r\n if (!owner) {\r\n owner = `codicon/`;\r\n }\r\n return { id: owner + name };\r\n }\r\n ThemeIcon.fromString = fromString;\r\n const _regexAsClassName = /^(codicon\\/)?([a-z-]+)(~[a-z]+)?$/i;\r\n function asClassName(icon) {\r\n // todo@martin,joh -> this should go into the ThemeService\r\n const match = _regexAsClassName.exec(icon.id);\r\n if (!match) {\r\n return undefined;\r\n }\r\n let [, , name, modifier] = match;\r\n let className = `codicon codicon-${name}`;\r\n if (modifier) {\r\n className += ` ${modifier.substr(1)}`;\r\n }\r\n return className;\r\n }\r\n ThemeIcon.asClassName = asClassName;\r\n})(ThemeIcon || (ThemeIcon = {}));\r\n// base themes\r\nexport const DARK = 'dark';\r\nexport const HIGH_CONTRAST = 'hc';\r\nexport function getThemeTypeSelector(type) {\r\n switch (type) {\r\n case DARK: return 'vs-dark';\r\n case HIGH_CONTRAST: return 'hc-black';\r\n default: return 'vs';\r\n }\r\n}\r\n// static theming participant\r\nexport const Extensions = {\r\n ThemingContribution: 'base.contributions.theming'\r\n};\r\nclass ThemingRegistry {\r\n constructor() {\r\n this.themingParticipants = [];\r\n this.themingParticipants = [];\r\n this.onThemingParticipantAddedEmitter = new Emitter();\r\n }\r\n onColorThemeChange(participant) {\r\n this.themingParticipants.push(participant);\r\n this.onThemingParticipantAddedEmitter.fire(participant);\r\n return toDisposable(() => {\r\n const idx = this.themingParticipants.indexOf(participant);\r\n this.themingParticipants.splice(idx, 1);\r\n });\r\n }\r\n getThemingParticipants() {\r\n return this.themingParticipants;\r\n }\r\n}\r\nlet themingRegistry = new ThemingRegistry();\r\nplatform.Registry.add(Extensions.ThemingContribution, themingRegistry);\r\nexport function registerThemingParticipant(participant) {\r\n return themingRegistry.onColorThemeChange(participant);\r\n}\r\n/**\r\n * Utility base class for all themable components.\r\n */\r\nexport class Themable extends Disposable {\r\n constructor(themeService) {\r\n super();\r\n this.themeService = themeService;\r\n this.theme = themeService.getColorTheme();\r\n // Hook up to theme changes\r\n this._register(this.themeService.onDidColorThemeChange(theme => this.onThemeChange(theme)));\r\n }\r\n onThemeChange(theme) {\r\n this.theme = theme;\r\n this.updateStyles();\r\n }\r\n updateStyles() {\r\n // Subclasses to override\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IUndoRedoService = createDecorator('undoRedoService');\r\nexport class ResourceEditStackSnapshot {\r\n constructor(resource, elements) {\r\n this.resource = resource;\r\n this.elements = elements;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport * as nls from '../../../nls.js';\r\nimport { IUndoRedoService, ResourceEditStackSnapshot } from './undoRedo.js';\r\nimport { onUnexpectedError } from '../../../base/common/errors.js';\r\nimport { registerSingleton } from '../../instantiation/common/extensions.js';\r\nimport { IDialogService } from '../../dialogs/common/dialogs.js';\r\nimport Severity from '../../../base/common/severity.js';\r\nimport { Schemas } from '../../../base/common/network.js';\r\nimport { INotificationService } from '../../notification/common/notification.js';\r\nimport { Disposable, isDisposable } from '../../../base/common/lifecycle.js';\r\nconst DEBUG = false;\r\nfunction getResourceLabel(resource) {\r\n return resource.scheme === Schemas.file ? resource.fsPath : resource.path;\r\n}\r\nlet stackElementCounter = 0;\r\nclass ResourceStackElement {\r\n constructor(actual, resourceLabel, strResource) {\r\n this.id = (++stackElementCounter);\r\n this.type = 0 /* Resource */;\r\n this.actual = actual;\r\n this.label = actual.label;\r\n this.resourceLabel = resourceLabel;\r\n this.strResource = strResource;\r\n this.resourceLabels = [this.resourceLabel];\r\n this.strResources = [this.strResource];\r\n this.isValid = true;\r\n }\r\n setValid(isValid) {\r\n this.isValid = isValid;\r\n }\r\n toString() {\r\n return `[${this.id}] [${this.isValid ? 'VALID' : 'INVALID'}] ${this.actual}`;\r\n }\r\n}\r\nclass ResourceReasonPair {\r\n constructor(resourceLabel, reason) {\r\n this.resourceLabel = resourceLabel;\r\n this.reason = reason;\r\n }\r\n}\r\nclass RemovedResources {\r\n constructor() {\r\n this.elements = new Map();\r\n }\r\n createMessage() {\r\n const externalRemoval = [];\r\n const noParallelUniverses = [];\r\n for (const [, element] of this.elements) {\r\n const dest = (element.reason === 0 /* ExternalRemoval */\r\n ? externalRemoval\r\n : noParallelUniverses);\r\n dest.push(element.resourceLabel);\r\n }\r\n let messages = [];\r\n if (externalRemoval.length > 0) {\r\n messages.push(nls.localize({ key: 'externalRemoval', comment: ['{0} is a list of filenames'] }, \"The following files have been closed and modified on disk: {0}.\", externalRemoval.join(', ')));\r\n }\r\n if (noParallelUniverses.length > 0) {\r\n messages.push(nls.localize({ key: 'noParallelUniverses', comment: ['{0} is a list of filenames'] }, \"The following files have been modified in an incompatible way: {0}.\", noParallelUniverses.join(', ')));\r\n }\r\n return messages.join('\\n');\r\n }\r\n get size() {\r\n return this.elements.size;\r\n }\r\n has(strResource) {\r\n return this.elements.has(strResource);\r\n }\r\n set(strResource, value) {\r\n this.elements.set(strResource, value);\r\n }\r\n delete(strResource) {\r\n return this.elements.delete(strResource);\r\n }\r\n}\r\nclass WorkspaceStackElement {\r\n constructor(actual, resourceLabels, strResources) {\r\n this.id = (++stackElementCounter);\r\n this.type = 1 /* Workspace */;\r\n this.actual = actual;\r\n this.label = actual.label;\r\n this.resourceLabels = resourceLabels;\r\n this.strResources = strResources;\r\n this.removedResources = null;\r\n this.invalidatedResources = null;\r\n }\r\n canSplit() {\r\n return (typeof this.actual.split === 'function');\r\n }\r\n removeResource(resourceLabel, strResource, reason) {\r\n if (!this.removedResources) {\r\n this.removedResources = new RemovedResources();\r\n }\r\n if (!this.removedResources.has(strResource)) {\r\n this.removedResources.set(strResource, new ResourceReasonPair(resourceLabel, reason));\r\n }\r\n }\r\n setValid(resourceLabel, strResource, isValid) {\r\n if (isValid) {\r\n if (this.invalidatedResources) {\r\n this.invalidatedResources.delete(strResource);\r\n if (this.invalidatedResources.size === 0) {\r\n this.invalidatedResources = null;\r\n }\r\n }\r\n }\r\n else {\r\n if (!this.invalidatedResources) {\r\n this.invalidatedResources = new RemovedResources();\r\n }\r\n if (!this.invalidatedResources.has(strResource)) {\r\n this.invalidatedResources.set(strResource, new ResourceReasonPair(resourceLabel, 0 /* ExternalRemoval */));\r\n }\r\n }\r\n }\r\n toString() {\r\n return `[${this.id}] [${this.invalidatedResources ? 'INVALID' : 'VALID'}] ${this.actual}`;\r\n }\r\n}\r\nclass ResourceEditStack {\r\n constructor(resourceLabel, strResource) {\r\n this.resourceLabel = resourceLabel;\r\n this.strResource = strResource;\r\n this._past = [];\r\n this._future = [];\r\n this.locked = false;\r\n this.versionId = 1;\r\n }\r\n dispose() {\r\n for (const element of this._past) {\r\n if (element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n for (const element of this._future) {\r\n if (element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n this.versionId++;\r\n }\r\n toString() {\r\n let result = [];\r\n result.push(`* ${this.strResource}:`);\r\n for (let i = 0; i < this._past.length; i++) {\r\n result.push(` * [UNDO] ${this._past[i]}`);\r\n }\r\n for (let i = this._future.length - 1; i >= 0; i--) {\r\n result.push(` * [REDO] ${this._future[i]}`);\r\n }\r\n return result.join('\\n');\r\n }\r\n flushAllElements() {\r\n this._past = [];\r\n this._future = [];\r\n this.versionId++;\r\n }\r\n _setElementValidFlag(element, isValid) {\r\n if (element.type === 1 /* Workspace */) {\r\n element.setValid(this.resourceLabel, this.strResource, isValid);\r\n }\r\n else {\r\n element.setValid(isValid);\r\n }\r\n }\r\n setElementsValidFlag(isValid, filter) {\r\n for (const element of this._past) {\r\n if (filter(element.actual)) {\r\n this._setElementValidFlag(element, isValid);\r\n }\r\n }\r\n for (const element of this._future) {\r\n if (filter(element.actual)) {\r\n this._setElementValidFlag(element, isValid);\r\n }\r\n }\r\n }\r\n pushElement(element) {\r\n // remove the future\r\n for (const futureElement of this._future) {\r\n if (futureElement.type === 1 /* Workspace */) {\r\n futureElement.removeResource(this.resourceLabel, this.strResource, 1 /* NoParallelUniverses */);\r\n }\r\n }\r\n this._future = [];\r\n if (this._past.length > 0) {\r\n const lastElement = this._past[this._past.length - 1];\r\n if (lastElement.type === 0 /* Resource */ && !lastElement.isValid) {\r\n // clear undo stack\r\n this._past = [];\r\n }\r\n }\r\n this._past.push(element);\r\n this.versionId++;\r\n }\r\n createSnapshot(resource) {\r\n const elements = [];\r\n for (let i = 0, len = this._past.length; i < len; i++) {\r\n elements.push(this._past[i].id);\r\n }\r\n for (let i = this._future.length - 1; i >= 0; i--) {\r\n elements.push(this._future[i].id);\r\n }\r\n return new ResourceEditStackSnapshot(resource, elements);\r\n }\r\n restoreSnapshot(snapshot) {\r\n const snapshotLength = snapshot.elements.length;\r\n let isOK = true;\r\n let snapshotIndex = 0;\r\n let removePastAfter = -1;\r\n for (let i = 0, len = this._past.length; i < len; i++, snapshotIndex++) {\r\n const element = this._past[i];\r\n if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) {\r\n isOK = false;\r\n removePastAfter = 0;\r\n }\r\n if (!isOK && element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n let removeFutureBefore = -1;\r\n for (let i = this._future.length - 1; i >= 0; i--, snapshotIndex++) {\r\n const element = this._future[i];\r\n if (isOK && (snapshotIndex >= snapshotLength || element.id !== snapshot.elements[snapshotIndex])) {\r\n isOK = false;\r\n removeFutureBefore = i;\r\n }\r\n if (!isOK && element.type === 1 /* Workspace */) {\r\n element.removeResource(this.resourceLabel, this.strResource, 0 /* ExternalRemoval */);\r\n }\r\n }\r\n if (removePastAfter !== -1) {\r\n this._past = this._past.slice(0, removePastAfter);\r\n }\r\n if (removeFutureBefore !== -1) {\r\n this._future = this._future.slice(removeFutureBefore + 1);\r\n }\r\n this.versionId++;\r\n }\r\n getElements() {\r\n const past = [];\r\n const future = [];\r\n for (const element of this._past) {\r\n past.push(element.actual);\r\n }\r\n for (const element of this._future) {\r\n future.push(element.actual);\r\n }\r\n return { past, future };\r\n }\r\n getClosestPastElement() {\r\n if (this._past.length === 0) {\r\n return null;\r\n }\r\n return this._past[this._past.length - 1];\r\n }\r\n getClosestFutureElement() {\r\n if (this._future.length === 0) {\r\n return null;\r\n }\r\n return this._future[this._future.length - 1];\r\n }\r\n hasPastElements() {\r\n return (this._past.length > 0);\r\n }\r\n hasFutureElements() {\r\n return (this._future.length > 0);\r\n }\r\n splitPastWorkspaceElement(toRemove, individualMap) {\r\n for (let j = this._past.length - 1; j >= 0; j--) {\r\n if (this._past[j] === toRemove) {\r\n if (individualMap.has(this.strResource)) {\r\n // gets replaced\r\n this._past[j] = individualMap.get(this.strResource);\r\n }\r\n else {\r\n // gets deleted\r\n this._past.splice(j, 1);\r\n }\r\n break;\r\n }\r\n }\r\n this.versionId++;\r\n }\r\n splitFutureWorkspaceElement(toRemove, individualMap) {\r\n for (let j = this._future.length - 1; j >= 0; j--) {\r\n if (this._future[j] === toRemove) {\r\n if (individualMap.has(this.strResource)) {\r\n // gets replaced\r\n this._future[j] = individualMap.get(this.strResource);\r\n }\r\n else {\r\n // gets deleted\r\n this._future.splice(j, 1);\r\n }\r\n break;\r\n }\r\n }\r\n this.versionId++;\r\n }\r\n moveBackward(element) {\r\n this._past.pop();\r\n this._future.push(element);\r\n this.versionId++;\r\n }\r\n moveForward(element) {\r\n this._future.pop();\r\n this._past.push(element);\r\n this.versionId++;\r\n }\r\n}\r\nclass EditStackSnapshot {\r\n constructor(editStacks) {\r\n this.editStacks = editStacks;\r\n this._versionIds = [];\r\n for (let i = 0, len = this.editStacks.length; i < len; i++) {\r\n this._versionIds[i] = this.editStacks[i].versionId;\r\n }\r\n }\r\n isValid() {\r\n for (let i = 0, len = this.editStacks.length; i < len; i++) {\r\n if (this._versionIds[i] !== this.editStacks[i].versionId) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\nconst missingEditStack = new ResourceEditStack('', '');\r\nmissingEditStack.locked = true;\r\nlet UndoRedoService = class UndoRedoService {\r\n constructor(_dialogService, _notificationService) {\r\n this._dialogService = _dialogService;\r\n this._notificationService = _notificationService;\r\n this._editStacks = new Map();\r\n this._uriComparisonKeyComputers = [];\r\n }\r\n getUriComparisonKey(resource) {\r\n for (const uriComparisonKeyComputer of this._uriComparisonKeyComputers) {\r\n if (uriComparisonKeyComputer[0] === resource.scheme) {\r\n return uriComparisonKeyComputer[1].getComparisonKey(resource);\r\n }\r\n }\r\n return resource.toString();\r\n }\r\n _print(label) {\r\n console.log(`------------------------------------`);\r\n console.log(`AFTER ${label}: `);\r\n let str = [];\r\n for (const element of this._editStacks) {\r\n str.push(element[1].toString());\r\n }\r\n console.log(str.join('\\n'));\r\n }\r\n pushElement(element) {\r\n if (element.type === 0 /* Resource */) {\r\n const resourceLabel = getResourceLabel(element.resource);\r\n const strResource = this.getUriComparisonKey(element.resource);\r\n this._pushElement(new ResourceStackElement(element, resourceLabel, strResource));\r\n }\r\n else {\r\n const seen = new Set();\r\n const resourceLabels = [];\r\n const strResources = [];\r\n for (const resource of element.resources) {\r\n const resourceLabel = getResourceLabel(resource);\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (seen.has(strResource)) {\r\n continue;\r\n }\r\n seen.add(strResource);\r\n resourceLabels.push(resourceLabel);\r\n strResources.push(strResource);\r\n }\r\n if (resourceLabels.length === 1) {\r\n this._pushElement(new ResourceStackElement(element, resourceLabels[0], strResources[0]));\r\n }\r\n else {\r\n this._pushElement(new WorkspaceStackElement(element, resourceLabels, strResources));\r\n }\r\n }\r\n if (DEBUG) {\r\n this._print('pushElement');\r\n }\r\n }\r\n _pushElement(element) {\r\n for (let i = 0, len = element.strResources.length; i < len; i++) {\r\n const resourceLabel = element.resourceLabels[i];\r\n const strResource = element.strResources[i];\r\n let editStack;\r\n if (this._editStacks.has(strResource)) {\r\n editStack = this._editStacks.get(strResource);\r\n }\r\n else {\r\n editStack = new ResourceEditStack(resourceLabel, strResource);\r\n this._editStacks.set(strResource, editStack);\r\n }\r\n editStack.pushElement(element);\r\n }\r\n }\r\n getLastElement(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n if (editStack.hasFutureElements()) {\r\n return null;\r\n }\r\n const closestPastElement = editStack.getClosestPastElement();\r\n return closestPastElement ? closestPastElement.actual : null;\r\n }\r\n return null;\r\n }\r\n _splitPastWorkspaceElement(toRemove, ignoreResources) {\r\n const individualArr = toRemove.actual.split();\r\n const individualMap = new Map();\r\n for (const _element of individualArr) {\r\n const resourceLabel = getResourceLabel(_element.resource);\r\n const strResource = this.getUriComparisonKey(_element.resource);\r\n const element = new ResourceStackElement(_element, resourceLabel, strResource);\r\n individualMap.set(element.strResource, element);\r\n }\r\n for (const strResource of toRemove.strResources) {\r\n if (ignoreResources && ignoreResources.has(strResource)) {\r\n continue;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.splitPastWorkspaceElement(toRemove, individualMap);\r\n }\r\n }\r\n _splitFutureWorkspaceElement(toRemove, ignoreResources) {\r\n const individualArr = toRemove.actual.split();\r\n const individualMap = new Map();\r\n for (const _element of individualArr) {\r\n const resourceLabel = getResourceLabel(_element.resource);\r\n const strResource = this.getUriComparisonKey(_element.resource);\r\n const element = new ResourceStackElement(_element, resourceLabel, strResource);\r\n individualMap.set(element.strResource, element);\r\n }\r\n for (const strResource of toRemove.strResources) {\r\n if (ignoreResources && ignoreResources.has(strResource)) {\r\n continue;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.splitFutureWorkspaceElement(toRemove, individualMap);\r\n }\r\n }\r\n removeElements(resource) {\r\n const strResource = typeof resource === 'string' ? resource : this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.dispose();\r\n this._editStacks.delete(strResource);\r\n }\r\n if (DEBUG) {\r\n this._print('removeElements');\r\n }\r\n }\r\n setElementsValidFlag(resource, isValid, filter) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.setElementsValidFlag(isValid, filter);\r\n }\r\n if (DEBUG) {\r\n this._print('setElementsValidFlag');\r\n }\r\n }\r\n createSnapshot(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.createSnapshot(resource);\r\n }\r\n return new ResourceEditStackSnapshot(resource, []);\r\n }\r\n restoreSnapshot(snapshot) {\r\n const strResource = this.getUriComparisonKey(snapshot.resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n editStack.restoreSnapshot(snapshot);\r\n if (!editStack.hasPastElements() && !editStack.hasFutureElements()) {\r\n // the edit stack is now empty, just remove it entirely\r\n editStack.dispose();\r\n this._editStacks.delete(strResource);\r\n }\r\n }\r\n if (DEBUG) {\r\n this._print('restoreSnapshot');\r\n }\r\n }\r\n getElements(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.getElements();\r\n }\r\n return { past: [], future: [] };\r\n }\r\n canUndo(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.hasPastElements();\r\n }\r\n return false;\r\n }\r\n _onError(err, element) {\r\n onUnexpectedError(err);\r\n // An error occured while undoing or redoing => drop the undo/redo stack for all affected resources\r\n for (const strResource of element.strResources) {\r\n this.removeElements(strResource);\r\n }\r\n this._notificationService.error(err);\r\n }\r\n _acquireLocks(editStackSnapshot) {\r\n // first, check if all locks can be acquired\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.locked) {\r\n throw new Error('Cannot acquire edit stack lock');\r\n }\r\n }\r\n // can acquire all locks\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.locked = true;\r\n }\r\n return () => {\r\n // release all locks\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.locked = false;\r\n }\r\n };\r\n }\r\n _safeInvokeWithLocks(element, invoke, editStackSnapshot, cleanup = Disposable.None) {\r\n const releaseLocks = this._acquireLocks(editStackSnapshot);\r\n let result;\r\n try {\r\n result = invoke();\r\n }\r\n catch (err) {\r\n releaseLocks();\r\n cleanup.dispose();\r\n return this._onError(err, element);\r\n }\r\n if (result) {\r\n // result is Promise<void>\r\n return result.then(() => {\r\n releaseLocks();\r\n cleanup.dispose();\r\n }, (err) => {\r\n releaseLocks();\r\n cleanup.dispose();\r\n return this._onError(err, element);\r\n });\r\n }\r\n else {\r\n // result is void\r\n releaseLocks();\r\n cleanup.dispose();\r\n }\r\n }\r\n _invokeWorkspacePrepare(element) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof element.actual.prepareUndoRedo === 'undefined') {\r\n return Disposable.None;\r\n }\r\n const result = element.actual.prepareUndoRedo();\r\n if (typeof result === 'undefined') {\r\n return Disposable.None;\r\n }\r\n return result;\r\n });\r\n }\r\n _invokeResourcePrepare(element, callback) {\r\n if (element.actual.type !== 1 /* Workspace */ || typeof element.actual.prepareUndoRedo === 'undefined') {\r\n // no preparation needed\r\n callback(Disposable.None);\r\n return;\r\n }\r\n const r = element.actual.prepareUndoRedo();\r\n if (!r) {\r\n // nothing to clean up\r\n callback(Disposable.None);\r\n return;\r\n }\r\n if (isDisposable(r)) {\r\n callback(r);\r\n return;\r\n }\r\n return r.then((disposable) => {\r\n callback(disposable);\r\n });\r\n }\r\n _getAffectedEditStacks(element) {\r\n const affectedEditStacks = [];\r\n for (const strResource of element.strResources) {\r\n affectedEditStacks.push(this._editStacks.get(strResource) || missingEditStack);\r\n }\r\n return new EditStackSnapshot(affectedEditStacks);\r\n }\r\n _tryToSplitAndUndo(strResource, element, ignoreResources, message) {\r\n if (element.canSplit()) {\r\n this._splitPastWorkspaceElement(element, ignoreResources);\r\n this._notificationService.info(message);\r\n return new WorkspaceVerificationError(this.undo(strResource));\r\n }\r\n else {\r\n // Cannot safely split this workspace element => flush all undo/redo stacks\r\n for (const strResource of element.strResources) {\r\n this.removeElements(strResource);\r\n }\r\n this._notificationService.info(message);\r\n return new WorkspaceVerificationError();\r\n }\r\n }\r\n _checkWorkspaceUndo(strResource, element, editStackSnapshot, checkInvalidatedResources) {\r\n if (element.removedResources) {\r\n return this._tryToSplitAndUndo(strResource, element, element.removedResources, nls.localize({ key: 'cannotWorkspaceUndo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not undo '{0}' across all files. {1}\", element.label, element.removedResources.createMessage()));\r\n }\r\n if (checkInvalidatedResources && element.invalidatedResources) {\r\n return this._tryToSplitAndUndo(strResource, element, element.invalidatedResources, nls.localize({ key: 'cannotWorkspaceUndo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not undo '{0}' across all files. {1}\", element.label, element.invalidatedResources.createMessage()));\r\n }\r\n // this must be the last past element in all the impacted resources!\r\n const cannotUndoDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.getClosestPastElement() !== element) {\r\n cannotUndoDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotUndoDueToResources.length > 0) {\r\n return this._tryToSplitAndUndo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceUndoDueToChanges', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not undo '{0}' across all files because changes were made to {1}\", element.label, cannotUndoDueToResources.join(', ')));\r\n }\r\n const cannotLockDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.locked) {\r\n cannotLockDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotLockDueToResources.length > 0) {\r\n return this._tryToSplitAndUndo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceUndoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not undo '{0}' across all files because there is already an undo or redo operation running on {1}\", element.label, cannotLockDueToResources.join(', ')));\r\n }\r\n // check if new stack elements were added in the meantime...\r\n if (!editStackSnapshot.isValid()) {\r\n return this._tryToSplitAndUndo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceUndoDueToInMeantimeUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not undo '{0}' across all files because an undo or redo operation occurred in the meantime\", element.label));\r\n }\r\n return null;\r\n }\r\n _workspaceUndo(strResource, element) {\r\n const affectedEditStacks = this._getAffectedEditStacks(element);\r\n const verificationError = this._checkWorkspaceUndo(strResource, element, affectedEditStacks, /*invalidated resources will be checked after the prepare call*/ false);\r\n if (verificationError) {\r\n return verificationError.returnValue;\r\n }\r\n return this._confirmAndExecuteWorkspaceUndo(strResource, element, affectedEditStacks);\r\n }\r\n _confirmAndExecuteWorkspaceUndo(strResource, element, editStackSnapshot) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (element.canSplit()) {\r\n // this element can be split\r\n const result = yield this._dialogService.show(Severity.Info, nls.localize('confirmWorkspace', \"Would you like to undo '{0}' across all files?\", element.label), [\r\n nls.localize({ key: 'ok', comment: ['{0} denotes a number that is > 1'] }, \"Undo in {0} Files\", editStackSnapshot.editStacks.length),\r\n nls.localize('nok', \"Undo this File\"),\r\n nls.localize('cancel', \"Cancel\"),\r\n ], {\r\n cancelId: 2\r\n });\r\n if (result.choice === 2) {\r\n // choice: cancel\r\n return;\r\n }\r\n if (result.choice === 1) {\r\n // choice: undo this file\r\n this._splitPastWorkspaceElement(element, null);\r\n return this.undo(strResource);\r\n }\r\n // choice: undo in all files\r\n // At this point, it is possible that the element has been made invalid in the meantime (due to the confirmation await)\r\n const verificationError1 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*invalidated resources will be checked after the prepare call*/ false);\r\n if (verificationError1) {\r\n return verificationError1.returnValue;\r\n }\r\n }\r\n // prepare\r\n let cleanup;\r\n try {\r\n cleanup = yield this._invokeWorkspacePrepare(element);\r\n }\r\n catch (err) {\r\n return this._onError(err, element);\r\n }\r\n // At this point, it is possible that the element has been made invalid in the meantime (due to the prepare await)\r\n const verificationError2 = this._checkWorkspaceUndo(strResource, element, editStackSnapshot, /*now also check that there are no more invalidated resources*/ true);\r\n if (verificationError2) {\r\n cleanup.dispose();\r\n return verificationError2.returnValue;\r\n }\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.moveBackward(element);\r\n }\r\n return this._safeInvokeWithLocks(element, () => element.actual.undo(), editStackSnapshot, cleanup);\r\n });\r\n }\r\n _resourceUndo(editStack, element) {\r\n if (!element.isValid) {\r\n // invalid element => immediately flush edit stack!\r\n editStack.flushAllElements();\r\n return;\r\n }\r\n if (editStack.locked) {\r\n const message = nls.localize({ key: 'cannotResourceUndoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation.'] }, \"Could not undo '{0}' because there is already an undo or redo operation running.\", element.label);\r\n this._notificationService.info(message);\r\n return;\r\n }\r\n return this._invokeResourcePrepare(element, (cleanup) => {\r\n editStack.moveBackward(element);\r\n return this._safeInvokeWithLocks(element, () => element.actual.undo(), new EditStackSnapshot([editStack]), cleanup);\r\n });\r\n }\r\n undo(resource) {\r\n const strResource = typeof resource === 'string' ? resource : this.getUriComparisonKey(resource);\r\n if (!this._editStacks.has(strResource)) {\r\n return;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n const element = editStack.getClosestPastElement();\r\n if (!element) {\r\n return;\r\n }\r\n try {\r\n if (element.type === 1 /* Workspace */) {\r\n return this._workspaceUndo(strResource, element);\r\n }\r\n else {\r\n return this._resourceUndo(editStack, element);\r\n }\r\n }\r\n finally {\r\n if (DEBUG) {\r\n this._print('undo');\r\n }\r\n }\r\n }\r\n canRedo(resource) {\r\n const strResource = this.getUriComparisonKey(resource);\r\n if (this._editStacks.has(strResource)) {\r\n const editStack = this._editStacks.get(strResource);\r\n return editStack.hasFutureElements();\r\n }\r\n return false;\r\n }\r\n _tryToSplitAndRedo(strResource, element, ignoreResources, message) {\r\n if (element.canSplit()) {\r\n this._splitFutureWorkspaceElement(element, ignoreResources);\r\n this._notificationService.info(message);\r\n return new WorkspaceVerificationError(this.redo(strResource));\r\n }\r\n else {\r\n // Cannot safely split this workspace element => flush all undo/redo stacks\r\n for (const strResource of element.strResources) {\r\n this.removeElements(strResource);\r\n }\r\n this._notificationService.info(message);\r\n return new WorkspaceVerificationError();\r\n }\r\n }\r\n _checkWorkspaceRedo(strResource, element, editStackSnapshot, checkInvalidatedResources) {\r\n if (element.removedResources) {\r\n return this._tryToSplitAndRedo(strResource, element, element.removedResources, nls.localize({ key: 'cannotWorkspaceRedo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not redo '{0}' across all files. {1}\", element.label, element.removedResources.createMessage()));\r\n }\r\n if (checkInvalidatedResources && element.invalidatedResources) {\r\n return this._tryToSplitAndRedo(strResource, element, element.invalidatedResources, nls.localize({ key: 'cannotWorkspaceRedo', comment: ['{0} is a label for an operation. {1} is another message.'] }, \"Could not redo '{0}' across all files. {1}\", element.label, element.invalidatedResources.createMessage()));\r\n }\r\n // this must be the last future element in all the impacted resources!\r\n const cannotRedoDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.getClosestFutureElement() !== element) {\r\n cannotRedoDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotRedoDueToResources.length > 0) {\r\n return this._tryToSplitAndRedo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceRedoDueToChanges', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not redo '{0}' across all files because changes were made to {1}\", element.label, cannotRedoDueToResources.join(', ')));\r\n }\r\n const cannotLockDueToResources = [];\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n if (editStack.locked) {\r\n cannotLockDueToResources.push(editStack.resourceLabel);\r\n }\r\n }\r\n if (cannotLockDueToResources.length > 0) {\r\n return this._tryToSplitAndRedo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceRedoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not redo '{0}' across all files because there is already an undo or redo operation running on {1}\", element.label, cannotLockDueToResources.join(', ')));\r\n }\r\n // check if new stack elements were added in the meantime...\r\n if (!editStackSnapshot.isValid()) {\r\n return this._tryToSplitAndRedo(strResource, element, null, nls.localize({ key: 'cannotWorkspaceRedoDueToInMeantimeUndoRedo', comment: ['{0} is a label for an operation. {1} is a list of filenames.'] }, \"Could not redo '{0}' across all files because an undo or redo operation occurred in the meantime\", element.label));\r\n }\r\n return null;\r\n }\r\n _workspaceRedo(strResource, element) {\r\n const affectedEditStacks = this._getAffectedEditStacks(element);\r\n const verificationError = this._checkWorkspaceRedo(strResource, element, affectedEditStacks, /*invalidated resources will be checked after the prepare call*/ false);\r\n if (verificationError) {\r\n return verificationError.returnValue;\r\n }\r\n return this._executeWorkspaceRedo(strResource, element, affectedEditStacks);\r\n }\r\n _executeWorkspaceRedo(strResource, element, editStackSnapshot) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // prepare\r\n let cleanup;\r\n try {\r\n cleanup = yield this._invokeWorkspacePrepare(element);\r\n }\r\n catch (err) {\r\n return this._onError(err, element);\r\n }\r\n // At this point, it is possible that the element has been made invalid in the meantime (due to the prepare await)\r\n const verificationError = this._checkWorkspaceRedo(strResource, element, editStackSnapshot, /*now also check that there are no more invalidated resources*/ true);\r\n if (verificationError) {\r\n cleanup.dispose();\r\n return verificationError.returnValue;\r\n }\r\n for (const editStack of editStackSnapshot.editStacks) {\r\n editStack.moveForward(element);\r\n }\r\n return this._safeInvokeWithLocks(element, () => element.actual.redo(), editStackSnapshot, cleanup);\r\n });\r\n }\r\n _resourceRedo(editStack, element) {\r\n if (!element.isValid) {\r\n // invalid element => immediately flush edit stack!\r\n editStack.flushAllElements();\r\n return;\r\n }\r\n if (editStack.locked) {\r\n const message = nls.localize({ key: 'cannotResourceRedoDueToInProgressUndoRedo', comment: ['{0} is a label for an operation.'] }, \"Could not redo '{0}' because there is already an undo or redo operation running.\", element.label);\r\n this._notificationService.info(message);\r\n return;\r\n }\r\n return this._invokeResourcePrepare(element, (cleanup) => {\r\n editStack.moveForward(element);\r\n return this._safeInvokeWithLocks(element, () => element.actual.redo(), new EditStackSnapshot([editStack]), cleanup);\r\n });\r\n }\r\n redo(resource) {\r\n const strResource = typeof resource === 'string' ? resource : this.getUriComparisonKey(resource);\r\n if (!this._editStacks.has(strResource)) {\r\n return;\r\n }\r\n const editStack = this._editStacks.get(strResource);\r\n const element = editStack.getClosestFutureElement();\r\n if (!element) {\r\n return;\r\n }\r\n try {\r\n if (element.type === 1 /* Workspace */) {\r\n return this._workspaceRedo(strResource, element);\r\n }\r\n else {\r\n return this._resourceRedo(editStack, element);\r\n }\r\n }\r\n finally {\r\n if (DEBUG) {\r\n this._print('redo');\r\n }\r\n }\r\n }\r\n};\r\nUndoRedoService = __decorate([\r\n __param(0, IDialogService),\r\n __param(1, INotificationService)\r\n], UndoRedoService);\r\nexport { UndoRedoService };\r\nclass WorkspaceVerificationError {\r\n constructor(returnValue) {\r\n this.returnValue = returnValue;\r\n }\r\n}\r\nregisterSingleton(IUndoRedoService, UndoRedoService);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { Disposable, toDisposable } from '../../../base/common/lifecycle.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nexport const IStorageKeysSyncRegistryService = createDecorator('IStorageKeysSyncRegistryService');\r\nexport class StorageKeysSyncRegistryService extends Disposable {\r\n constructor() {\r\n super();\r\n this._storageKeys = new Map();\r\n this._onDidChangeStorageKeys = this._register(new Emitter());\r\n this._register(toDisposable(() => this._storageKeys.clear()));\r\n }\r\n get storageKeys() { return [...this._storageKeys.values()]; }\r\n registerStorageKey(storageKey) {\r\n if (!this._storageKeys.has(storageKey.key)) {\r\n this._storageKeys.set(storageKey.key, storageKey);\r\n this._onDidChangeStorageKeys.fire(this.storageKeys);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport * as resources from '../../../base/common/resources.js';\r\nimport { createDecorator } from '../../instantiation/common/instantiation.js';\r\nimport { TernarySearchTree } from '../../../base/common/map.js';\r\nexport const IWorkspaceContextService = createDecorator('contextService');\r\nexport var IWorkspace;\r\n(function (IWorkspace) {\r\n function isIWorkspace(thing) {\r\n return !!(thing && typeof thing === 'object'\r\n && typeof thing.id === 'string'\r\n && Array.isArray(thing.folders));\r\n }\r\n IWorkspace.isIWorkspace = isIWorkspace;\r\n})(IWorkspace || (IWorkspace = {}));\r\nexport var IWorkspaceFolder;\r\n(function (IWorkspaceFolder) {\r\n function isIWorkspaceFolder(thing) {\r\n return !!(thing && typeof thing === 'object'\r\n && URI.isUri(thing.uri)\r\n && typeof thing.name === 'string'\r\n && typeof thing.toResource === 'function');\r\n }\r\n IWorkspaceFolder.isIWorkspaceFolder = isIWorkspaceFolder;\r\n})(IWorkspaceFolder || (IWorkspaceFolder = {}));\r\nexport class Workspace {\r\n constructor(_id, folders = [], _configuration = null) {\r\n this._id = _id;\r\n this._configuration = _configuration;\r\n this._foldersMap = TernarySearchTree.forUris();\r\n this.folders = folders;\r\n }\r\n get folders() {\r\n return this._folders;\r\n }\r\n set folders(folders) {\r\n this._folders = folders;\r\n this.updateFoldersMap();\r\n }\r\n get id() {\r\n return this._id;\r\n }\r\n get configuration() {\r\n return this._configuration;\r\n }\r\n set configuration(configuration) {\r\n this._configuration = configuration;\r\n }\r\n getFolder(resource) {\r\n if (!resource) {\r\n return null;\r\n }\r\n return this._foldersMap.findSubstr(resource.with({\r\n scheme: resource.scheme,\r\n authority: resource.authority,\r\n path: resource.path\r\n })) || null;\r\n }\r\n updateFoldersMap() {\r\n this._foldersMap = TernarySearchTree.forUris();\r\n for (const folder of this.folders) {\r\n this._foldersMap.set(folder.uri, folder);\r\n }\r\n }\r\n toJSON() {\r\n return { id: this.id, folders: this.folders, configuration: this.configuration };\r\n }\r\n}\r\nexport class WorkspaceFolder {\r\n constructor(data, raw) {\r\n this.raw = raw;\r\n this.uri = data.uri;\r\n this.index = data.index;\r\n this.name = data.name;\r\n }\r\n toResource(relativePath) {\r\n return resources.joinPath(this.uri, relativePath);\r\n }\r\n toJSON() {\r\n return { uri: this.uri, name: this.name, index: this.index };\r\n }\r\n}\r\n","import { URI } from '../../../base/common/uri.js';\r\nexport const WORKSPACE_EXTENSION = 'code-workspace';\r\nexport function isSingleFolderWorkspaceIdentifier(obj) {\r\n return obj instanceof URI;\r\n}\r\nexport function toWorkspaceIdentifier(workspace) {\r\n if (workspace.configuration) {\r\n return {\r\n configPath: workspace.configuration,\r\n id: workspace.id\r\n };\r\n }\r\n if (workspace.folders.length === 1) {\r\n return workspace.folders[0].uri;\r\n }\r\n // Empty workspace\r\n return undefined;\r\n}\r\n//#endregion\r\n","export default function (str, loose) {\n\tif (str instanceof RegExp) return { keys:false, pattern:str };\n\tvar c, o, tmp, ext, keys=[], pattern='', arr = str.split('/');\n\tarr[0] || arr.shift();\n\n\twhile (tmp = arr.shift()) {\n\t\tc = tmp[0];\n\t\tif (c === '*') {\n\t\t\tkeys.push('wild');\n\t\t\tpattern += '/(.*)';\n\t\t} else if (c === ':') {\n\t\t\to = tmp.indexOf('?', 1);\n\t\t\text = tmp.indexOf('.', 1);\n\t\t\tkeys.push( tmp.substring(1, !!~o ? o : !!~ext ? ext : tmp.length) );\n\t\t\tpattern += !!~o && !~ext ? '(?:/([^/]+?))?' : '/([^/]+?)';\n\t\t\tif (!!~ext) pattern += (!!~o ? '?' : '') + '\\\\' + tmp.substring(ext);\n\t\t} else {\n\t\t\tpattern += '/' + tmp;\n\t\t}\n\t}\n\n\treturn {\n\t\tkeys: keys,\n\t\tpattern: new RegExp('^' + pattern + (loose ? '(?=$|\\/)' : '\\/?$'), 'i')\n\t};\n}\n","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./actionbar.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./aria.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./button.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./checkbox.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon-animations.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon-modifications.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../../css-loader/dist/cjs.js!./codicon.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./contextview.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./countBadge.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./dropdown.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./findInput.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./hover.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./iconlabel.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./inputBox.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./keybindingLabel.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./list.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./mouseCursor.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./progressbar.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./sash.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../../css-loader/dist/cjs.js!./scrollbars.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./splitview.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../../css-loader/dist/cjs.js!./tree.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../../css-loader/dist/cjs.js!./quickInput.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./textAreaHandler.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./currentLineHighlight.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./decorations.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./glyphMargin.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./indentGuides.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./lineNumbers.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./viewLines.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./linesDecorations.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./marginDecorations.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./minimap.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./overlayWidgets.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./rulers.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./scrollDecoration.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./selections.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./viewCursors.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./diffEditor.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./diffReview.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./editor.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./anchorSelect.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./bracketMatching.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./lightBulbWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./codelensWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./colorPicker.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./dnd.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./outlineTree.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./symbol-icons.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./findWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./folding.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./gotoErrorWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./goToDefinitionAtPosition.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./referencesWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./links.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./messageController.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./parameterHints.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./peekViewWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./onTypeRename.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./renameInputField.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./snippetSession.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./suggest.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./suggestStatusBar.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./zoneWidget.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./accessibilityHelp.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./iPadShowKeyboard.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./inspectTokens.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../../css-loader/dist/cjs.js!./standaloneQuickInput.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./standalone-tokens.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../css-loader/dist/cjs.js!./contextMenuHandler.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/Card.svelte.2.css!./Card.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/Config.svelte.4.css!./Config.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/Editor.svelte.7.css!./Editor.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/Error.svelte.8.css!./Error.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/Links.svelte.5.css!./Links.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/Tag.svelte.6.css!./Tag.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/components/View.svelte.3.css!./View.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/routes/Edit.svelte.1.css!./Edit.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/svelte-loader/index.js?cssPath=/Users/sidv/dev/mermaid-live-editor/src/routes/View.svelte.0.css!./View.svelte\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {/* eslint-disable */\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? (module['exports'] = factory(null)) :\n\t\ttypeof define === 'function' && define['amd'] ? define(factory(null)) :\n\t\t\t(window['stylis'] = factory(null))\n}(/** @param {*=} options */function factory (options) {/* eslint-disable */\n\n\t'use strict'\n\n\t/**\n\t * Notes\n\t *\n\t * The ['<method name>'] pattern is used to support closure compiler\n\t * the jsdoc signatures are also used to the same effect\n\t *\n\t * ----\n\t *\n\t * int + int + int === n4 [faster]\n\t *\n\t * vs\n\t *\n\t * int === n1 && int === n2 && int === n3\n\t *\n\t * ----\n\t *\n\t * switch (int) { case ints...} [faster]\n\t *\n\t * vs\n\t *\n\t * if (int == 1 && int === 2 ...)\n\t *\n\t * ----\n\t *\n\t * The (first*n1 + second*n2 + third*n3) format used in the property parser\n\t * is a simple way to hash the sequence of characters\n\t * taking into account the index they occur in\n\t * since any number of 3 character sequences could produce duplicates.\n\t *\n\t * On the other hand sequences that are directly tied to the index of the character\n\t * resolve a far more accurate measure, it's also faster\n\t * to evaluate one condition in a switch statement\n\t * than three in an if statement regardless of the added math.\n\t *\n\t * This allows the vendor prefixer to be both small and fast.\n\t */\n\n\tvar nullptn = /^\\0+/g /* matches leading null characters */\n\tvar formatptn = /[\\0\\r\\f]/g /* matches new line, null and formfeed characters */\n\tvar colonptn = /: */g /* splits animation rules */\n\tvar cursorptn = /zoo|gra/ /* assert cursor varient */\n\tvar transformptn = /([,: ])(transform)/g /* vendor prefix transform, older webkit */\n\tvar animationptn = /,+\\s*(?![^(]*[)])/g /* splits multiple shorthand notation animations */\n\tvar propertiesptn = / +\\s*(?![^(]*[)])/g /* animation properties */\n\tvar elementptn = / *[\\0] */g /* selector elements */\n\tvar selectorptn = /,\\r+?/g /* splits selectors */\n\tvar andptn = /([\\t\\r\\n ])*\\f?&/g /* match & */\n\tvar escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g /* matches :global(.*) */\n\tvar invalidptn = /\\W+/g /* removes invalid characters from keyframes */\n\tvar keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/ /* matches @keyframes $1 */\n\tvar plcholdrptn = /::(place)/g /* match ::placeholder varient */\n\tvar readonlyptn = /:(read-only)/g /* match :read-only varient */\n\tvar beforeptn = /\\s+(?=[{\\];=:>])/g /* matches \\s before ] ; = : */\n\tvar afterptn = /([[}=:>])\\s+/g /* matches \\s after characters [ } = : */\n\tvar tailptn = /(\\{[^{]+?);(?=\\})/g /* matches tail semi-colons ;} */\n\tvar whiteptn = /\\s{2,}/g /* matches repeating whitespace */\n\tvar pseudoptn = /([^\\(])(:+) */g /* pseudo element */\n\tvar writingptn = /[svh]\\w+-[tblr]{2}/ /* match writing mode property values */\n\tvar gradientptn = /([\\w-]+t\\()/g /* match *gradient property */\n\tvar supportsptn = /\\(\\s*(.*)\\s*\\)/g /* match supports (groups) */\n\tvar propertyptn = /([\\s\\S]*?);/g /* match properties leading semicolon */\n\tvar selfptn = /-self|flex-/g /* match flex- and -self in align-self: flex-*; */\n\tvar pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/ /* extrats :readonly or :placholder from selector */\n\tvar trimptn = /[ \\t]+$/ /* match tail whitspace */\n\tvar dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/ /* match max/min/fit-content, fill-available */\n\tvar imgsrcptn = /([^-])(image-set\\()/\n\n\t/* vendors */\n\tvar webkit = '-webkit-'\n\tvar moz = '-moz-'\n\tvar ms = '-ms-'\n\n\t/* character codes */\n\tvar SEMICOLON = 59 /* ; */\n\tvar CLOSEBRACES = 125 /* } */\n\tvar OPENBRACES = 123 /* { */\n\tvar OPENPARENTHESES = 40 /* ( */\n\tvar CLOSEPARENTHESES = 41 /* ) */\n\tvar OPENBRACKET = 91 /* [ */\n\tvar CLOSEBRACKET = 93 /* ] */\n\tvar NEWLINE = 10 /* \\n */\n\tvar CARRIAGE = 13 /* \\r */\n\tvar TAB = 9 /* \\t */\n\tvar AT = 64 /* @ */\n\tvar SPACE = 32 /* */\n\tvar AND = 38 /* & */\n\tvar DASH = 45 /* - */\n\tvar UNDERSCORE = 95 /* _ */\n\tvar STAR = 42 /* * */\n\tvar COMMA = 44 /* , */\n\tvar COLON = 58 /* : */\n\tvar SINGLEQUOTE = 39 /* ' */\n\tvar DOUBLEQUOTE = 34 /* \" */\n\tvar FOWARDSLASH = 47 /* / */\n\tvar GREATERTHAN = 62 /* > */\n\tvar PLUS = 43 /* + */\n\tvar TILDE = 126 /* ~ */\n\tvar NULL = 0 /* \\0 */\n\tvar FORMFEED = 12 /* \\f */\n\tvar VERTICALTAB = 11 /* \\v */\n\n\t/* special identifiers */\n\tvar KEYFRAME = 107 /* k */\n\tvar MEDIA = 109 /* m */\n\tvar SUPPORTS = 115 /* s */\n\tvar PLACEHOLDER = 112 /* p */\n\tvar READONLY = 111 /* o */\n\tvar IMPORT = 105 /* <at>i */\n\tvar CHARSET = 99 /* <at>c */\n\tvar DOCUMENT = 100 /* <at>d */\n\tvar PAGE = 112 /* <at>p */\n\n\tvar column = 1 /* current column */\n\tvar line = 1 /* current line numebr */\n\tvar pattern = 0 /* :pattern */\n\n\tvar cascade = 1 /* #id h1 h2 vs h1#id h2#id */\n\tvar prefix = 1 /* vendor prefix */\n\tvar escape = 1 /* escape :global() pattern */\n\tvar compress = 0 /* compress output */\n\tvar semicolon = 0 /* no/semicolon option */\n\tvar preserve = 0 /* preserve empty selectors */\n\n\t/* empty reference */\n\tvar array = []\n\n\t/* plugins */\n\tvar plugins = []\n\tvar plugged = 0\n\tvar should = null\n\n\t/* plugin context */\n\tvar POSTS = -2\n\tvar PREPS = -1\n\tvar UNKWN = 0\n\tvar PROPS = 1\n\tvar BLCKS = 2\n\tvar ATRUL = 3\n\n\t/* plugin newline context */\n\tvar unkwn = 0\n\n\t/* keyframe animation */\n\tvar keyed = 1\n\tvar key = ''\n\n\t/* selector namespace */\n\tvar nscopealt = ''\n\tvar nscope = ''\n\n\t/**\n\t * Compile\n\t *\n\t * @param {Array<string>} parent\n\t * @param {Array<string>} current\n\t * @param {string} body\n\t * @param {number} id\n\t * @param {number} depth\n\t * @return {string}\n\t */\n\tfunction compile (parent, current, body, id, depth) {\n\t\tvar bracket = 0 /* brackets [] */\n\t\tvar comment = 0 /* comments /* // or /* */\n\t\tvar parentheses = 0 /* functions () */\n\t\tvar quote = 0 /* quotes '', \"\" */\n\n\t\tvar first = 0 /* first character code */\n\t\tvar second = 0 /* second character code */\n\t\tvar code = 0 /* current character code */\n\t\tvar tail = 0 /* previous character code */\n\t\tvar trail = 0 /* character before previous code */\n\t\tvar peak = 0 /* previous non-whitespace code */\n\n\t\tvar counter = 0 /* count sequence termination */\n\t\tvar context = 0 /* track current context */\n\t\tvar atrule = 0 /* track @at-rule context */\n\t\tvar pseudo = 0 /* track pseudo token index */\n\t\tvar caret = 0 /* current character index */\n\t\tvar format = 0 /* control character formating context */\n\t\tvar insert = 0 /* auto semicolon insertion */\n\t\tvar invert = 0 /* inverted selector pattern */\n\t\tvar length = 0 /* generic length address */\n\t\tvar eof = body.length /* end of file(length) */\n\t\tvar eol = eof - 1 /* end of file(characters) */\n\n\t\tvar char = '' /* current character */\n\t\tvar chars = '' /* current buffer of characters */\n\t\tvar child = '' /* next buffer of characters */\n\t\tvar out = '' /* compiled body */\n\t\tvar children = '' /* compiled children */\n\t\tvar flat = '' /* compiled leafs */\n\t\tvar selector /* generic selector address */\n\t\tvar result /* generic address */\n\n\t\t// ...build body\n\t\twhile (caret < eof) {\n\t\t\tcode = body.charCodeAt(caret)\n\n\t\t\t// eof varient\n\t\t\tif (caret === eol) {\n\t\t\t\t// last character + noop context, add synthetic padding for noop context to terminate\n\t\t\t\tif (comment + quote + parentheses + bracket !== 0) {\n\t\t\t\t\tif (comment !== 0) {\n\t\t\t\t\t\tcode = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH\n\t\t\t\t\t}\n\n\t\t\t\t\tquote = parentheses = bracket = 0\n\t\t\t\t\teof++\n\t\t\t\t\teol++\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t// eof varient\n\t\t\t\tif (caret === eol) {\n\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t}\n\n\t\t\t\t\tif (chars.trim().length > 0) {\n\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchars += body.charAt(caret)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode = SEMICOLON\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// auto semicolon insertion\n\t\t\t\tif (insert === 1) {\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t// false flags\n\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\tcase OPENPARENTHESES:\n\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// valid\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\tfirst = code\n\t\t\t\t\t\t\tcaret--\n\t\t\t\t\t\t\tcode = SEMICOLON\n\n\t\t\t\t\t\t\twhile (length < eof) {\n\t\t\t\t\t\t\t\tswitch (body.charCodeAt(length++)) {\n\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\tcase CARRIAGE:\n\t\t\t\t\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\t\t\t++caret\n\t\t\t\t\t\t\t\t\t\t\tcode = first\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\t\tlength = eof\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// token varient\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\tchars = chars.trim()\n\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\tcounter = 1\n\t\t\t\t\t\tlength = ++caret\n\n\t\t\t\t\t\twhile (caret < eof) {\n\t\t\t\t\t\t\tswitch (code = body.charCodeAt(caret)) {\n\t\t\t\t\t\t\t\tcase OPENBRACES: {\n\t\t\t\t\t\t\t\t\tcounter++\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\t\tcounter--\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\tswitch (second = body.charCodeAt(caret + 1)) {\n\t\t\t\t\t\t\t\t\t\t// /*, //\n\t\t\t\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\t\t\t\t\tcaret = delimited(second, caret, eol, body)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\t\t\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tcode++\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// quote tail delimiter is identical to the head delimiter hence noop,\n\t\t\t\t\t\t\t\t// fallthrough clauses have been shifted to the correct tail delimiter\n\t\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\t\t\twhile (caret++ < eol) {\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(caret) === code) {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (counter === 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcaret++\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchild = body.substring(length, caret)\n\n\t\t\t\t\t\tif (first === NULL) {\n\t\t\t\t\t\t\tfirst = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t// @at-rule\n\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\tif (format > 0) {\n\t\t\t\t\t\t\t\t\tchars = chars.replace(formatptn, '')\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\tcase SUPPORTS:\n\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\tselector = current\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tselector = array\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tchild = compile(current, selector, child, second, depth+1)\n\t\t\t\t\t\t\t\tlength = child.length\n\n\t\t\t\t\t\t\t\t// preserve empty @at-rule\n\t\t\t\t\t\t\t\tif (preserve > 0 && length === 0) {\n\t\t\t\t\t\t\t\t\tlength = chars.length\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// execute plugins, @at-rule context\n\t\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\t\tselector = select(array, chars, invert)\n\t\t\t\t\t\t\t\t\tresult = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id)\n\t\t\t\t\t\t\t\t\tchars = selector.join('')\n\n\t\t\t\t\t\t\t\t\tif (result !== void 0) {\n\t\t\t\t\t\t\t\t\t\tif ((length = (child = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\t\tsecond = 0\n\t\t\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (length > 0) {\n\t\t\t\t\t\t\t\t\tswitch (second) {\n\t\t\t\t\t\t\t\t\t\tcase SUPPORTS: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(supportsptn, supports)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase DOCUMENT:\n\t\t\t\t\t\t\t\t\t\tcase MEDIA:\n\t\t\t\t\t\t\t\t\t\tcase DASH: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcase KEYFRAME: {\n\t\t\t\t\t\t\t\t\t\t\tchars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''))\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + '{' + child + '}'\n\n\t\t\t\t\t\t\t\t\t\t\tif (prefix === 1 || (prefix === 2 && vendor('@'+child, 3))) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + webkit + child + '@' + child\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = '@' + child\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tchild = chars + child\n\n\t\t\t\t\t\t\t\t\t\t\tif (id === PAGE) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild = (out += child, '')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// selector\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tchild = compile(current, select(current, chars, invert), child, id, depth+1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tchildren += child\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tatrule = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tchild = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\tcase SEMICOLON: {\n\t\t\t\t\t\tchars = (format > 0 ? chars.replace(formatptn, '') : chars).trim()\n\n\t\t\t\t\t\tif ((length = chars.length) > 1) {\n\t\t\t\t\t\t\t// monkey-patch missing colon\n\t\t\t\t\t\t\tif (pseudo === 0) {\n\t\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\n\t\t\t\t\t\t\t\t// first character is a letter or dash, buffer has a space character\n\t\t\t\t\t\t\t\tif ((first === DASH || first > 96 && first < 123)) {\n\t\t\t\t\t\t\t\t\tlength = (chars = chars.replace(' ', ':')).length\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// execute plugins, property context\n\t\t\t\t\t\t\tif (plugged > 0) {\n\t\t\t\t\t\t\t\tif ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n\t\t\t\t\t\t\t\t\tif ((length = (chars = result.trim()).length) === 0) {\n\t\t\t\t\t\t\t\t\t\tchars = '\\0\\0'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfirst = chars.charCodeAt(0)\n\t\t\t\t\t\t\tsecond = chars.charCodeAt(1)\n\n\t\t\t\t\t\t\tswitch (first) {\n\t\t\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\t\t\tif (second === IMPORT || second === CHARSET) {\n\t\t\t\t\t\t\t\t\t\tflat += chars + body.charAt(caret)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\tif (chars.charCodeAt(length-1) === COLON) {\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tout += property(chars, first, second, chars.charCodeAt(2))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// reset\n\t\t\t\t\t\tcontext = 0\n\t\t\t\t\t\tinsert = 0\n\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\tformat = 0\n\t\t\t\t\t\tinvert = 0\n\t\t\t\t\t\tchars = ''\n\t\t\t\t\t\tcode = body.charCodeAt(++caret)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// parse characters\n\t\t\tswitch (code) {\n\t\t\t\tcase CARRIAGE:\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\t// auto insert semicolon\n\t\t\t\t\tif (comment + quote + parentheses + bracket + semicolon === 0) {\n\t\t\t\t\t\t// valid non-whitespace characters that\n\t\t\t\t\t\t// may precede a newline\n\t\t\t\t\t\tswitch (peak) {\n\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\tcase SINGLEQUOTE:\n\t\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\t\tcase AT:\n\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\tcase FOWARDSLASH:\n\t\t\t\t\t\t\tcase DASH:\n\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t// current buffer has a colon\n\t\t\t\t\t\t\t\tif (pseudo > 0) {\n\t\t\t\t\t\t\t\t\tinsert = 1\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// terminate line comment\n\t\t\t\t\tif (comment === FOWARDSLASH) {\n\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t} else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\tchars += '\\0'\n\t\t\t\t\t}\n\n\t\t\t\t\t// execute plugins, newline context\n\t\t\t\t\tif (plugged * unkwn > 0) {\n\t\t\t\t\t\tproxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id)\n\t\t\t\t\t}\n\n\t\t\t\t\t// next line, reset column position\n\t\t\t\t\tcolumn = 1\n\t\t\t\t\tline++\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tcase SEMICOLON:\n\t\t\t\tcase CLOSEBRACES: {\n\t\t\t\t\tif (comment + quote + parentheses + bracket === 0) {\n\t\t\t\t\t\tcolumn++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\t// increment column position\n\t\t\t\t\tcolumn++\n\n\t\t\t\t\t// current character\n\t\t\t\t\tchar = body.charAt(caret)\n\n\t\t\t\t\t// remove comments, escape functions, strings, attributes and prepare selectors\n\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\tif (quote + bracket + comment === 0) {\n\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\tcase COLON:\n\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\tif (code !== SPACE) {\n\t\t\t\t\t\t\t\t\t\t\tchar = ' '\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// escape breaking control characters\n\t\t\t\t\t\tcase NULL: {\n\t\t\t\t\t\t\tchar = '\\\\0'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase FORMFEED: {\n\t\t\t\t\t\t\tchar = '\\\\f'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase VERTICALTAB: {\n\t\t\t\t\t\t\tchar = '\\\\v'\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// &\n\t\t\t\t\t\tcase AND: {\n\t\t\t\t\t\t\t// inverted selector pattern i.e html &\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0 && cascade > 0) {\n\t\t\t\t\t\t\t\tinvert = 1\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar = '\\f' + char\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ::p<l>aceholder, l\n\t\t\t\t\t\t// :read-on<l>y, l\n\t\t\t\t\t\tcase 108: {\n\t\t\t\t\t\t\tif (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n\t\t\t\t\t\t\t\tswitch (caret - pseudo) {\n\t\t\t\t\t\t\t\t\t// ::placeholder\n\t\t\t\t\t\t\t\t\tcase 2: {\n\t\t\t\t\t\t\t\t\t\tif (tail === PLACEHOLDER && body.charCodeAt(caret-3) === COLON) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = tail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t// :read-only\n\t\t\t\t\t\t\t\t\tcase 8: {\n\t\t\t\t\t\t\t\t\t\tif (trail === READONLY) {\n\t\t\t\t\t\t\t\t\t\t\tpattern = trail\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// :<pattern>\n\t\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tpseudo = caret\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// selectors\n\t\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket === 0) {\n\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\tchar += '\\r'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// quotes\n\t\t\t\t\t\tcase DOUBLEQUOTE:\n\t\t\t\t\t\tcase SINGLEQUOTE: {\n\t\t\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t\t\tquote = quote === code ? 0 : (quote === 0 ? code : quote)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// attributes\n\t\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase CLOSEBRACKET: {\n\t\t\t\t\t\t\tif (quote + comment + parentheses === 0) {\n\t\t\t\t\t\t\t\tbracket--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// functions\n\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tparentheses--\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tif (quote + comment + bracket === 0) {\n\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\tswitch (tail*2 + trail*3) {\n\t\t\t\t\t\t\t\t\t\t// :matches\n\t\t\t\t\t\t\t\t\t\tcase 533: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// :global, :not, :nth-child etc...\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tcounter = 0\n\t\t\t\t\t\t\t\t\t\t\tcontext = 1\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tparentheses++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase AT: {\n\t\t\t\t\t\t\tif (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n\t\t\t\t\t\t\t\tatrule = 1\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// block/line comments\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\t\t\tif (quote + bracket + parentheses > 0) {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (comment) {\n\t\t\t\t\t\t\t\t// initialize line/block comment context\n\t\t\t\t\t\t\t\tcase 0: {\n\t\t\t\t\t\t\t\t\tswitch (code*2 + body.charCodeAt(caret+1)*3) {\n\t\t\t\t\t\t\t\t\t\t// //\n\t\t\t\t\t\t\t\t\t\tcase 235: {\n\t\t\t\t\t\t\t\t\t\t\tcomment = FOWARDSLASH\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t// /*\n\t\t\t\t\t\t\t\t\t\tcase 220: {\n\t\t\t\t\t\t\t\t\t\t\tlength = caret\n\t\t\t\t\t\t\t\t\t\t\tcomment = STAR\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// end block comment context\n\t\t\t\t\t\t\t\tcase STAR: {\n\t\t\t\t\t\t\t\t\tif (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n\t\t\t\t\t\t\t\t\t\t// /*<!> ... */, !\n\t\t\t\t\t\t\t\t\t\tif (body.charCodeAt(length+2) === 33) {\n\t\t\t\t\t\t\t\t\t\t\tout += body.substring(length, caret+1)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchar = ''\n\t\t\t\t\t\t\t\t\t\tcomment = 0\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// ignore comment blocks\n\t\t\t\t\tif (comment === 0) {\n\t\t\t\t\t\t// aggressive isolation mode, divide each individual selector\n\t\t\t\t\t\t// including selectors in :not function but excluding selectors in :global function\n\t\t\t\t\t\tif (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t// outside of an isolated context i.e nth-child(<...>)\n\t\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = char + '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t\tchar = '\\0' + char + (code === COMMA ? '' : '\\0')\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// within an isolated context, sleep untill it's terminated\n\t\t\t\t\t\t\t\t\t\tswitch (code) {\n\t\t\t\t\t\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\t// :globa<l>(\n\t\t\t\t\t\t\t\t\t\t\t\tif (pseudo + 7 === caret && tail === 108) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tpseudo = 0\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcontext = ++counter\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tcase CLOSEPARENTHESES: {\n\t\t\t\t\t\t\t\t\t\t\t\tif ((context = --counter) === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\tcase SPACE: {\n\t\t\t\t\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\t\t\t\t\tcase NULL:\n\t\t\t\t\t\t\t\t\t\tcase OPENBRACES:\n\t\t\t\t\t\t\t\t\t\tcase CLOSEBRACES:\n\t\t\t\t\t\t\t\t\t\tcase SEMICOLON:\n\t\t\t\t\t\t\t\t\t\tcase COMMA:\n\t\t\t\t\t\t\t\t\t\tcase FORMFEED:\n\t\t\t\t\t\t\t\t\t\tcase TAB:\n\t\t\t\t\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\t\t\t\t\tcase NEWLINE:\n\t\t\t\t\t\t\t\t\t\tcase CARRIAGE: {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\t// ignore in isolated contexts\n\t\t\t\t\t\t\t\t\t\t\tif (context === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tformat = 1\n\t\t\t\t\t\t\t\t\t\t\t\tchar += '\\0'\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// concat buffer of characters\n\t\t\t\t\t\tchars += char\n\n\t\t\t\t\t\t// previous non-whitespace character code\n\t\t\t\t\t\tif (code !== SPACE && code !== TAB) {\n\t\t\t\t\t\t\tpeak = code\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// tail character codes\n\t\t\ttrail = tail\n\t\t\ttail = code\n\n\t\t\t// visit every character\n\t\t\tcaret++\n\t\t}\n\n\t\tlength = out.length\n\n\t\t// preserve empty selector\n \t\tif (preserve > 0) {\n \t\t\tif (length === 0 && children.length === 0 && (current[0].length === 0) === false) {\n \t\t\t\tif (id !== MEDIA || (current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0])) {\n\t\t\t\t\tlength = current.join(',').length + 2\n \t\t\t\t}\n \t\t\t}\n\t\t}\n\n\t\tif (length > 0) {\n\t\t\t// cascade isolation mode?\n\t\t\tselector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current\n\n\t\t\t// execute plugins, block context\n\t\t\tif (plugged > 0) {\n\t\t\t\tresult = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id)\n\n\t\t\t\tif (result !== void 0 && (out = result).length === 0) {\n\t\t\t\t\treturn flat + out + children\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout = selector.join(',') + '{' + out + '}'\n\n\t\t\tif (prefix*pattern !== 0) {\n\t\t\t\tif (prefix === 2 && !vendor(out, 2))\n\t\t\t\t\tpattern = 0\n\n\t\t\t\tswitch (pattern) {\n\t\t\t\t\t// ::read-only\n\t\t\t\t\tcase READONLY: {\n\t\t\t\t\t\tout = out.replace(readonlyptn, ':'+moz+'$1')+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// ::placeholder\n\t\t\t\t\tcase PLACEHOLDER: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + webkit + 'input-$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, '::' + moz + '$1') +\n\t\t\t\t\t\t\tout.replace(plcholdrptn, ':' + ms + 'input-$1') + out\n\t\t\t\t\t\t)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tpattern = 0\n\t\t\t}\n\t\t}\n\n\t\treturn flat + out + children\n\t}\n\n\t/**\n\t * Select\n\t *\n\t * @param {Array<string>} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @return {Array<string>}\n\t */\n\tfunction select (parent, current, invert) {\n\t\tvar selectors = current.trim().split(selectorptn)\n\t\tvar out = selectors\n\n\t\tvar length = selectors.length\n\t\tvar l = parent.length\n\n\t\tswitch (l) {\n\t\t\t// 0-1 parent selectors\n\t\t\tcase 0:\n\t\t\tcase 1: {\n\t\t\t\tfor (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n\t\t\t\t\tout[i] = scope(selector, out[i], invert, l).trim()\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// >2 parent selectors, nested\n\t\t\tdefault: {\n\t\t\t\tfor (var i = 0, j = 0, out = []; i < length; ++i) {\n\t\t\t\t\tfor (var k = 0; k < l; ++k) {\n\t\t\t\t\t\tout[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Scope\n\t *\n\t * @param {string} parent\n\t * @param {string} current\n\t * @param {number} invert\n\t * @param {number} level\n\t * @return {string}\n\t */\n\tfunction scope (parent, current, invert, level) {\n\t\tvar selector = current\n\t\tvar code = selector.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (selector = selector.trim()).charCodeAt(0)\n\t\t}\n\n\t\tswitch (code) {\n\t\t\t// &\n\t\t\tcase AND: {\n\t\t\t\tswitch (cascade + level) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\tcase 1: {\n\t\t\t\t\t\tif (parent.trim().length === 0) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// :\n\t\t\tcase COLON: {\n\t\t\t\tswitch (selector.charCodeAt(1)) {\n\t\t\t\t\t// g in :global\n\t\t\t\t\tcase 103: {\n\t\t\t\t\t\tif (escape > 0 && cascade > 0) {\n\t\t\t\t\t\t\treturn selector.replace(escapeptn, '$1').replace(andptn, '$1'+nscope)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\t// :hover\n\t\t\t\t\t\treturn parent.trim() + selector.replace(andptn, '$1'+parent.trim())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// html &\n\t\t\t\tif (invert*cascade > 0 && selector.indexOf('\\f') > 0) {\n\t\t\t\t\treturn selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1')+parent.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn parent + selector\n\t}\n\n\t/**\n\t * Property\n\t *\n\t * @param {string} input\n\t * @param {number} first\n\t * @param {number} second\n\t * @param {number} third\n\t * @return {string}\n\t */\n\tfunction property (input, first, second, third) {\n\t\tvar index = 0\n\t\tvar out = input + ';'\n\t\tvar hash = (first*2) + (second*3) + (third*4)\n\t\tvar cache\n\n\t\t// animation: a, n, i characters\n\t\tif (hash === 944) {\n\t\t\treturn animation(out)\n\t\t} else if (prefix === 0 || (prefix === 2 && !vendor(out, 1))) {\n\t\t\treturn out\n\t\t}\n\n\t\t// vendor prefix\n\t\tswitch (hash) {\n\t\t\t// text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n\t\t\tcase 1015: {\n\t\t\t\t// text-shadow/text-align/text-transform, a\n\t\t\t\treturn out.charCodeAt(10) === 97 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// filter/fill f, i, l\n\t\t\tcase 951: {\n\t\t\t\t// filter, t\n\t\t\t\treturn out.charCodeAt(3) === 116 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// color/column, c, o, l\n\t\t\tcase 963: {\n\t\t\t\t// column, n\n\t\t\t\treturn out.charCodeAt(5) === 110 ? webkit + out + out : out\n\t\t\t}\n\t\t\t// box-decoration-break, b, o, x\n\t\t\tcase 1009: {\n\t\t\t\tif (out.charCodeAt(4) !== 100) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// mask, m, a, s\n\t\t\t// clip-path, c, l, i\n\t\t\tcase 969:\n\t\t\tcase 942: {\n\t\t\t\treturn webkit + out + out\n\t\t\t}\n\t\t\t// appearance: a, p, p\n\t\t\tcase 978: {\n\t\t\t\treturn webkit + out + moz + out + out\n\t\t\t}\n\t\t\t// hyphens: h, y, p\n\t\t\t// user-select: u, s, e\n\t\t\tcase 1019:\n\t\t\tcase 983: {\n\t\t\t\treturn webkit + out + moz + out + ms + out + out\n\t\t\t}\n\t\t\t// background/backface-visibility, b, a, c\n\t\t\tcase 883: {\n\t\t\t\t// backface-visibility, -\n\t\t\t\tif (out.charCodeAt(8) === DASH) {\n\t\t\t\t\treturn webkit + out + out\n\t\t\t\t}\n\n\t\t\t\t// image-set(...)\n\t\t\t\tif (out.indexOf('image-set(', 11) > 0) {\n\t\t\t\t\treturn out.replace(imgsrcptn, '$1'+webkit+'$2') + out\n\t\t\t\t}\n\n\t\t\t\treturn out\n\t\t\t}\n\t\t\t// flex: f, l, e\n\t\t\tcase 932: {\n\t\t\t\tif (out.charCodeAt(4) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(5)) {\n\t\t\t\t\t\t// flex-grow, g\n\t\t\t\t\t\tcase 103: {\n\t\t\t\t\t\t\treturn webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-shrink, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('shrink', 'negative') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// flex-basis, b\n\t\t\t\t\t\tcase 98: {\n\t\t\t\t\t\t\treturn webkit + out + ms + out.replace('basis', 'preferred-size') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + out + out\n\t\t\t}\n\t\t\t// order: o, r, d\n\t\t\tcase 964: {\n\t\t\t\treturn webkit + out + ms + 'flex' + '-' + out + out\n\t\t\t}\n\t\t\t// justify-items/justify-content, j, u, s\n\t\t\tcase 1023: {\n\t\t\t\t// justify-content, c\n\t\t\t\tif (out.charCodeAt(8) !== 99) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tcache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify')\n\t\t\t\treturn webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out\n\t\t\t}\n\t\t\t// cursor, c, u, r\n\t\t\tcase 1005: {\n\t\t\t\treturn cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out\n\t\t\t}\n\t\t\t// writing-mode, w, r, i\n\t\t\tcase 1000: {\n\t\t\t\tcache = out.substring(13).trim()\n\t\t\t\tindex = cache.indexOf('-') + 1\n\n\t\t\t\tswitch (cache.charCodeAt(0)+cache.charCodeAt(index)) {\n\t\t\t\t\t// vertical-lr\n\t\t\t\t\tcase 226: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// vertical-rl\n\t\t\t\t\tcase 232: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'tb-rl')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal-tb\n\t\t\t\t\tcase 220: {\n\t\t\t\t\t\tcache = out.replace(writingptn, 'lr')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn out\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn webkit + out + ms + cache + out\n\t\t\t}\n\t\t\t// position: sticky\n\t\t\tcase 1017: {\n\t\t\t\tif (out.indexOf('sticky', 9) === -1) {\n\t\t\t\t\treturn out\n\t\t\t\t}\n\t\t\t}\n\t\t\t// display(flex/inline-flex/inline-box): d, i, s\n\t\t\tcase 975: {\n\t\t\t\tindex = (out = input).length - 10\n\t\t\t\tcache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim()\n\n\t\t\t\tswitch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7)|0)) {\n\t\t\t\t\t// inline-\n\t\t\t\t\tcase 203: {\n\t\t\t\t\t\t// inline-box\n\t\t\t\t\t\tif (cache.charCodeAt(8) < 111) {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// inline-box/sticky\n\t\t\t\t\tcase 115: {\n\t\t\t\t\t\tout = out.replace(cache, webkit+cache)+';'+out\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\t// inline-flex\n\t\t\t\t\t// flex\n\t\t\t\t\tcase 207:\n\t\t\t\t\tcase 102: {\n\t\t\t\t\t\tout = (\n\t\t\t\t\t\t\tout.replace(cache, webkit+(hash > 102 ? 'inline-' : '')+'box')+';'+\n\t\t\t\t\t\t\tout.replace(cache, webkit+cache)+';'+\n\t\t\t\t\t\t\tout.replace(cache, ms+cache+'box')+';'+\n\t\t\t\t\t\t\tout\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn out + ';'\n\t\t\t}\n\t\t\t// align-items, align-center, align-self: a, l, i, -\n\t\t\tcase 938: {\n\t\t\t\tif (out.charCodeAt(5) === DASH) {\n\t\t\t\t\tswitch (out.charCodeAt(6)) {\n\t\t\t\t\t\t// align-items, i\n\t\t\t\t\t\tcase 105: {\n\t\t\t\t\t\t\tcache = out.replace('-items', '')\n\t\t\t\t\t\t\treturn webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-self, s\n\t\t\t\t\t\tcase 115: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// align-content\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\treturn webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// min/max\n\t\t\tcase 973:\n\t\t\tcase 989: {\n\t\t\t\t// min-/max- height/width/block-size/inline-size\n\t\t\t\tif (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// height/width: min-content / width: max-content\n\t\t\tcase 931:\n\t\t\tcase 953: {\n\t\t\t\tif (dimensionptn.test(input) === true) {\n\t\t\t\t\t// stretch\n\t\t\t\t\tif ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115)\n\t\t\t\t\t\treturn property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch')\n\t\t\t\t\telse\n\t\t\t\t\t\treturn out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// transform, transition: t, r, a\n\t\t\tcase 962: {\n\t\t\t\tout = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out\n\n\t\t\t\t// transitions\n\t\t\t\tif (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n\t\t\t\t\treturn out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Vendor\n\t *\n\t * @param {string} content\n\t * @param {number} context\n\t * @return {boolean}\n\t */\n\tfunction vendor (content, context) {\n\t\tvar index = content.indexOf(context === 1 ? ':' : '{')\n\t\tvar key = content.substring(0, context !== 3 ? index : 10)\n\t\tvar value = content.substring(index + 1, content.length - 1)\n\n\t\treturn should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context)\n\t}\n\n\t/**\n\t * Supports\n\t *\n\t * @param {string} match\n\t * @param {string} group\n\t * @return {string}\n\t */\n\tfunction supports (match, group) {\n\t\tvar out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2))\n\n\t\treturn out !== group+';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '('+group+')'\n\t}\n\n\t/**\n\t * Animation\n\t *\n\t * @param {string} input\n\t * @return {string}\n\t */\n\tfunction animation (input) {\n\t\tvar length = input.length\n\t\tvar index = input.indexOf(':', 9) + 1\n\t\tvar declare = input.substring(0, index).trim()\n\t\tvar out = input.substring(index, length-1).trim()\n\n\t\tswitch (input.charCodeAt(9)*keyed) {\n\t\t\tcase 0: {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// animation-*, -\n\t\t\tcase DASH: {\n\t\t\t\t// animation-name, n\n\t\t\t\tif (input.charCodeAt(10) !== 110) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\t// animation/animation-name\n\t\t\tdefault: {\n\t\t\t\t// split in case of multiple animations\n\t\t\t\tvar list = out.split((out = '', animationptn))\n\n\t\t\t\tfor (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n\t\t\t\t\tvar value = list[i]\n\t\t\t\t\tvar items = value.split(propertiesptn)\n\n\t\t\t\t\twhile (value = items[index]) {\n\t\t\t\t\t\tvar peak = value.charCodeAt(0)\n\n\t\t\t\t\t\tif (keyed === 1 && (\n\t\t\t\t\t\t\t// letters\n\t\t\t\t\t\t\t(peak > AT && peak < 90) || (peak > 96 && peak < 123) || peak === UNDERSCORE ||\n\t\t\t\t\t\t\t// dash but not in sequence i.e --\n\t\t\t\t\t\t\t(peak === DASH && value.charCodeAt(1) !== DASH)\n\t\t\t\t\t\t)) {\n\t\t\t\t\t\t\t// not a number/function\n\t\t\t\t\t\t\tswitch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n\t\t\t\t\t\t\t\tcase 1: {\n\t\t\t\t\t\t\t\t\tswitch (value) {\n\t\t\t\t\t\t\t\t\t\t// not a valid reserved keyword\n\t\t\t\t\t\t\t\t\t\tcase 'infinite': case 'alternate': case 'backwards': case 'running':\n\t\t\t\t\t\t\t\t\t\tcase 'normal': case 'forwards': case 'both': case 'none': case 'linear':\n\t\t\t\t\t\t\t\t\t\tcase 'ease': case 'ease-in': case 'ease-out': case 'ease-in-out':\n\t\t\t\t\t\t\t\t\t\tcase 'paused': case 'reverse': case 'alternate-reverse': case 'inherit':\n\t\t\t\t\t\t\t\t\t\tcase 'initial': case 'unset': case 'step-start': case 'step-end': {\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\t\t\t\tvalue += key\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titems[index++] = value\n\t\t\t\t\t}\n\n\t\t\t\t\tout += (i === 0 ? '' : ',') + items.join(' ')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tout = declare + out + ';'\n\n\t\tif (prefix === 1 || (prefix === 2 && vendor(out, 1)))\n\t\t\treturn webkit + out + out\n\n\t\treturn out\n\t}\n\n\t/**\n\t * Isolate\n\t *\n\t * @param {Array<string>} current\n\t */\n\tfunction isolate (current) {\n\t\tfor (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n\t\t\t// split individual elements in a selector i.e h1 h2 === [h1, h2]\n\t\t\tvar elements = current[i].split(elementptn)\n\t\t\tvar out = ''\n\n\t\t\tfor (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n\t\t\t\t// empty element\n\t\t\t\tif ((size = (element = elements[j]).length) === 0 && l > 1) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\ttail = out.charCodeAt(out.length-1)\n\t\t\t\tcode = element.charCodeAt(0)\n\t\t\t\tpadding = ''\n\n\t\t\t\tif (j !== 0) {\n\t\t\t\t\t// determine if we need padding\n\t\t\t\t\tswitch (tail) {\n\t\t\t\t\t\tcase STAR:\n\t\t\t\t\t\tcase TILDE:\n\t\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\t\tcase PLUS:\n\t\t\t\t\t\tcase SPACE:\n\t\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tpadding = ' '\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (code) {\n\t\t\t\t\tcase AND: {\n\t\t\t\t\t\telement = padding + nscopealt\n\t\t\t\t\t}\n\t\t\t\t\tcase TILDE:\n\t\t\t\t\tcase GREATERTHAN:\n\t\t\t\t\tcase PLUS:\n\t\t\t\t\tcase SPACE:\n\t\t\t\t\tcase CLOSEPARENTHESES:\n\t\t\t\t\tcase OPENPARENTHESES: {\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase OPENBRACKET: {\n\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COLON: {\n\t\t\t\t\t\tswitch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) {\n\t\t\t\t\t\t\t// :global\n\t\t\t\t\t\t\tcase 530: {\n\t\t\t\t\t\t\t\tif (escape > 0) {\n\t\t\t\t\t\t\t\t\telement = padding + element.substring(8, size - 1)\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// :hover, :nth-child(), ...\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\tif (j < 1 || elements[j-1].length < 1) {\n\t\t\t\t\t\t\t\t\telement = padding + nscopealt + element\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase COMMA: {\n\t\t\t\t\t\tpadding = ''\n\t\t\t\t\t}\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tif (size > 1 && element.indexOf(':') > 0) {\n\t\t\t\t\t\t\telement = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\telement = padding + element + nscopealt\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tout += element\n\t\t\t}\n\n\t\t\tselector[i] = out.replace(formatptn, '').trim()\n\t\t}\n\n\t\treturn selector\n\t}\n\n\t/**\n\t * Proxy\n\t *\n\t * @param {number} context\n\t * @param {string} content\n\t * @param {Array<string>} selectors\n\t * @param {Array<string>} parents\n\t * @param {number} line\n\t * @param {number} column\n\t * @param {number} length\n\t * @param {number} id\n\t * @param {number} depth\n\t * @param {number} at\n\t * @return {(string|void|*)}\n\t */\n\tfunction proxy (context, content, selectors, parents, line, column, length, id, depth, at) {\n\t\tfor (var i = 0, out = content, next; i < plugged; ++i) {\n\t\t\tswitch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n\t\t\t\tcase void 0:\n\t\t\t\tcase false:\n\t\t\t\tcase true:\n\t\t\t\tcase null: {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tout = next\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (out !== content) {\n\t\t return out\n\t\t}\n\t}\n\n\t/**\n\t * @param {number} code\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction delimited (code, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\t// /*\n\t\t\t\tcase FOWARDSLASH: {\n\t\t\t\t\tif (code === STAR) {\n\t\t\t\t\t\tif (body.charCodeAt(i - 1) === STAR && index + 2 !== i) {\n\t\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// //\n\t\t\t\tcase NEWLINE: {\n\t\t\t\t\tif (code === FOWARDSLASH) {\n\t\t\t\t\t\treturn i + 1\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * @param {number} type\n\t * @param {number} index\n\t * @param {number} length\n\t * @param {number} find\n\t * @param {string} body\n\t * @return {number}\n\t */\n\tfunction match (type, index, length, body) {\n\t\tfor (var i = index + 1; i < length; ++i) {\n\t\t\tswitch (body.charCodeAt(i)) {\n\t\t\t\tcase type: {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn i\n\t}\n\n\t/**\n\t * Minify\n\t *\n\t * @param {(string|*)} output\n\t * @return {string}\n\t */\n\tfunction minify (output) {\n\t\treturn output\n\t\t\t.replace(formatptn, '')\n\t\t\t.replace(beforeptn, '')\n\t\t\t.replace(afterptn, '$1')\n\t\t\t.replace(tailptn, '$1')\n\t\t\t.replace(whiteptn, ' ')\n\t}\n\n\t/**\n\t * Use\n\t *\n\t * @param {(Array<function(...?)>|function(...?)|number|void)?} plugin\n\t */\n\tfunction use (plugin) {\n\t\tswitch (plugin) {\n\t\t\tcase void 0:\n\t\t\tcase null: {\n\t\t\t\tplugged = plugins.length = 0\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tif (typeof plugin === 'function') {\n\t\t\t\t\tplugins[plugged++] = plugin\n\t\t\t\t}\telse if (typeof plugin === 'object') {\n\t\t\t\t\tfor (var i = 0, length = plugin.length; i < length; ++i) {\n\t\t\t\t\t\tuse(plugin[i])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tunkwn = !!plugin|0\n\t\t\t\t}\n\t\t\t}\n \t\t}\n\n \t\treturn use\n\t}\n\n\t/**\n\t * Set\n\t *\n\t * @param {*} options\n\t */\n\tfunction set (options) {\n\t\tfor (var name in options) {\n\t\t\tvar value = options[name]\n\t\t\tswitch (name) {\n\t\t\t\tcase 'keyframe': keyed = value|0; break\n\t\t\t\tcase 'global': escape = value|0; break\n\t\t\t\tcase 'cascade': cascade = value|0; break\n\t\t\t\tcase 'compress': compress = value|0; break\n\t\t\t\tcase 'semicolon': semicolon = value|0; break\n\t\t\t\tcase 'preserve': preserve = value|0; break\n\t\t\t\tcase 'prefix':\n\t\t\t\t\tshould = null\n\n\t\t\t\t\tif (!value) {\n\t\t\t\t\t\tprefix = 0\n\t\t\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\t\t\tprefix = 1\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprefix = 2\n\t\t\t\t\t\tshould = value\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn set\n\t}\n\n\t/**\n\t * Stylis\n\t *\n\t * @param {string} selector\n\t * @param {string} input\n\t * @return {*}\n\t */\n\tfunction stylis (selector, input) {\n\t\tif (this !== void 0 && this.constructor === stylis) {\n\t\t\treturn factory(selector)\n\t\t}\n\n\t\t// setup\n\t\tvar ns = selector\n\t\tvar code = ns.charCodeAt(0)\n\n\t\t// trim leading whitespace\n\t\tif (code < 33) {\n\t\t\tcode = (ns = ns.trim()).charCodeAt(0)\n\t\t}\n\n\t\t// keyframe/animation namespace\n\t\tif (keyed > 0) {\n\t\t\tkey = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-')\n\t\t}\n\n\t\t// reset, used to assert if a plugin is moneky-patching the return value\n\t\tcode = 1\n\n\t\t// cascade/isolate\n\t\tif (cascade === 1) {\n\t\t\tnscope = ns\n\t\t} else {\n\t\t\tnscopealt = ns\n\t\t}\n\n\t\tvar selectors = [nscope]\n\t\tvar result\n\n\t\t// execute plugins, pre-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0)\n\n\t\t\tif (result !== void 0 && typeof result === 'string') {\n\t\t\t\tinput = result\n\t\t\t}\n\t\t}\n\n\t\t// build\n\t\tvar output = compile(array, selectors, input, 0, 0)\n\n\t\t// execute plugins, post-process context\n\t\tif (plugged > 0) {\n\t\t\tresult = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0)\n\n\t\t\t// bypass minification\n\t\t\tif (result !== void 0 && typeof(output = result) !== 'string') {\n\t\t\t\tcode = 0\n\t\t\t}\n\t\t}\n\n\t\t// reset\n\t\tkey = ''\n\t\tnscope = ''\n\t\tnscopealt = ''\n\t\tpattern = 0\n\t\tline = 1\n\t\tcolumn = 1\n\n\t\treturn compress*code === 0 ? output : minify(output)\n\t}\n\n\tstylis['use'] = use\n\tstylis['set'] = set\n\n\tif (options !== void 0) {\n\t\tset(options)\n\t}\n\n\treturn stylis\n}));\n","/* eslint-env browser */\n\nimport { createProxy, hasFatalError } from './proxy.js'\n\nconst logPrefix = '[HMR:Svelte]'\n\n// eslint-disable-next-line no-console\nconst log = (...args) => console.log(logPrefix, ...args)\n\nconst domReload = () => {\n // eslint-disable-next-line no-undef\n const win = typeof window !== 'undefined' && window\n if (win && win.location && win.location.reload) {\n log('Reload')\n win.location.reload()\n } else {\n log('Full reload required')\n }\n}\n\nconst replaceCss = (previousId, newId) => {\n if (typeof document === 'undefined') return false\n if (!previousId) return false\n if (!newId) return false\n // svelte-xxx-style => svelte-xxx\n const previousClass = previousId.slice(0, -6)\n const newClass = newId.slice(0, -6)\n // eslint-disable-next-line no-undef\n document.querySelectorAll('.' + previousClass).forEach(el => {\n el.classList.remove(previousClass)\n el.classList.add(newClass)\n })\n return true\n}\n\nconst removeStylesheet = cssId => {\n if (cssId == null) return\n if (typeof document === 'undefined') return\n // eslint-disable-next-line no-undef\n const el = document.getElementById(cssId)\n if (el) el.remove()\n return\n}\n\nconst defaultArgs = {\n reload: domReload,\n}\n\nexport const makeApplyHmr = transformArgs => args => {\n const allArgs = transformArgs({ ...defaultArgs, ...args })\n return applyHmr(allArgs)\n}\n\nlet needsReload = false\n\nfunction applyHmr(args) {\n const {\n id,\n cssId,\n nonCssHash,\n reload = domReload,\n // normalized hot API (must conform to rollup-plugin-hot)\n hot,\n hotOptions,\n Component,\n acceptable, // some types of components are impossible to HMR correctly\n ProxyAdapter,\n ignoreCss,\n } = args\n\n const existing = hot.data && hot.data.record\n\n const canAccept = acceptable && (!existing || existing.current.canAccept)\n\n const r =\n existing || createProxy(ProxyAdapter, id, Component, hotOptions, canAccept)\n\n const cssOnly =\n hotOptions.injectCss &&\n existing &&\n nonCssHash &&\n existing.current.nonCssHash === nonCssHash\n\n r.update({\n Component,\n hotOptions,\n canAccept,\n nonCssHash,\n cssId,\n previousCssId: r.current.cssId,\n cssOnly,\n })\n\n hot.dispose(data => {\n // handle previous fatal errors\n if (needsReload || hasFatalError()) {\n if (hotOptions && hotOptions.noReload) {\n log('Full reload required')\n } else {\n reload()\n }\n }\n\n // 2020-09-21 Snowpack master doesn't pass data as arg to dispose handler\n data = data || hot.data\n\n data.record = r\n\n if (!ignoreCss && r.current.cssId !== cssId) {\n if (hotOptions.cssEjectDelay) {\n setTimeout(() => removeStylesheet(cssId), hotOptions.cssEjectDelay)\n } else {\n removeStylesheet(cssId)\n }\n }\n })\n\n if (canAccept) {\n hot.accept(async arg => {\n const { bubbled } = arg || {}\n\n if (!ignoreCss) {\n // NOTE Snowpack registers accept handlers only once, so we can NOT rely\n // on the surrounding scope variables -- they're not the last module!\n const { cssId: newCssId, previousCssId } = r.current\n const cssChanged = newCssId !== previousCssId\n // ensure old style sheet has been removed by now\n if (cssChanged) removeStylesheet(previousCssId)\n // guard: css only change\n if (\n // NOTE bubbled is provided only by rollup-plugin-hot, and we\n // can't safely assume a CSS only change without it... this means we\n // can't support CSS only injection with Nollup or Webpack currently\n bubbled === false && // WARNING check false, not falsy!\n r.current.cssOnly &&\n (!cssChanged || replaceCss(previousCssId, newCssId))\n ) {\n return\n }\n }\n\n const success = await r.reload()\n\n if (hasFatalError() || (!success && !hotOptions.optimistic)) {\n needsReload = true\n }\n })\n }\n\n // well, endgame... we won't be able to render next updates, even successful,\n // if we don't have proxies in svelte's tree\n //\n // since we won't return the proxy and the app will expect a svelte component,\n // it's gonna crash... so it's best to report the real cause\n //\n // full reload required\n //\n const proxyOk = r && r.proxy\n if (!proxyOk) {\n throw new Error(`Failed to create HMR proxy for Svelte component ${id}`)\n }\n\n return r.proxy\n}\n","export { makeApplyHmr } from './hot-api.js'\n","const removeElement = el => el && el.parentNode && el.parentNode.removeChild(el)\n\nconst ErrorOverlay = () => {\n let errors = []\n let compileError = null\n\n const errorsTitle = 'Failed to init component'\n const compileErrorTitle = 'Failed to compile'\n\n const style = {\n section: `\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n padding: 32px;\n background: rgba(0, 0, 0, .85);\n font-family: Menlo, Consolas, monospace;\n font-size: large;\n color: rgb(232, 232, 232);\n overflow: auto;\n z-index: 2147483647;\n `,\n h1: `\n margin-top: 0;\n color: #E36049;\n font-size: large;\n font-weight: normal;\n `,\n h2: `\n margin: 32px 0 0;\n font-size: large;\n font-weight: normal;\n `,\n pre: ``,\n }\n\n const createOverlay = () => {\n const h1 = document.createElement('h1')\n h1.style = style.h1\n const section = document.createElement('section')\n section.appendChild(h1)\n section.style = style.section\n const body = document.createElement('div')\n section.appendChild(body)\n return { h1, el: section, body }\n }\n\n const setTitle = title => {\n overlay.h1.textContent = title\n }\n\n const show = () => {\n const { el } = overlay\n if (!el.parentNode) {\n const target = document.body\n target.appendChild(overlay.el)\n }\n }\n\n const hide = () => {\n const { el } = overlay\n if (el.parentNode) {\n overlay.el.remove()\n }\n }\n\n const update = () => {\n if (compileError) {\n overlay.body.innerHTML = ''\n setTitle(compileErrorTitle)\n const errorEl = renderError(compileError)\n overlay.body.appendChild(errorEl)\n show()\n } else if (errors.length > 0) {\n overlay.body.innerHTML = ''\n setTitle(errorsTitle)\n errors.forEach(({ title, message }) => {\n const errorEl = renderError(message, title)\n overlay.body.appendChild(errorEl)\n })\n show()\n } else {\n hide()\n }\n }\n\n const renderError = (message, title) => {\n const div = document.createElement('div')\n if (title) {\n const h2 = document.createElement('h2')\n h2.textContent = title\n h2.style = style.h2\n div.appendChild(h2)\n }\n const pre = document.createElement('pre')\n pre.textContent = message\n div.appendChild(pre)\n return div\n }\n\n const addError = (error, title) => {\n const message = (error && error.stack) || error\n errors.push({ title, message })\n update()\n }\n\n const clearErrors = () => {\n errors.forEach(({ element }) => {\n removeElement(element)\n })\n errors = []\n update()\n }\n\n const setCompileError = message => {\n compileError = message\n update()\n }\n\n const overlay = createOverlay()\n\n return {\n addError,\n clearErrors,\n setCompileError,\n }\n}\n\nexport default ErrorOverlay\n","/* global window, document */\nimport ErrorOverlay from './overlay.js'\n\nconst removeElement = el => el && el.parentNode && el.parentNode.removeChild(el)\n\nexport default class ProxyAdapterDom {\n constructor(instance) {\n this.instance = instance\n this.insertionPoint = null\n\n this.afterMount = this.afterMount.bind(this)\n this.rerender = this.rerender.bind(this)\n\n this._noOverlay = !!instance.hotOptions.noOverlay\n }\n\n // NOTE overlay is only created before being actually shown to help test\n // runner (it won't have to account for error overlay when running assertions\n // about the contents of the rendered page)\n static getErrorOverlay(noCreate = false) {\n if (!noCreate && !this.errorOverlay) {\n this.errorOverlay = ErrorOverlay()\n }\n return this.errorOverlay\n }\n\n // TODO this is probably unused now: remove in next breaking release\n static renderCompileError(message) {\n const noCreate = !message\n const overlay = this.getErrorOverlay(noCreate)\n if (!overlay) return\n overlay.setCompileError(message)\n }\n\n dispose() {\n // Component is being destroyed, detaching is not optional in Svelte3's\n // component API, so we can dispose of the insertion point in every case.\n if (this.insertionPoint) {\n removeElement(this.insertionPoint)\n this.insertionPoint = null\n }\n this.clearError()\n }\n\n // NOTE afterMount CAN be called multiple times (e.g. keyed list)\n afterMount(target, anchor) {\n const {\n instance: { debugName },\n } = this\n if (!this.insertionPoint) {\n this.insertionPoint = document.createComment(debugName)\n }\n target.insertBefore(this.insertionPoint, anchor)\n }\n\n rerender() {\n this.clearError()\n const {\n instance: { refreshComponent },\n insertionPoint,\n } = this\n if (!insertionPoint) {\n throw new Error('Cannot rerender: missing insertion point')\n }\n refreshComponent(insertionPoint.parentNode, insertionPoint)\n }\n\n renderError(err) {\n if (this._noOverlay) return\n const {\n instance: { debugName },\n } = this\n const title = debugName || err.moduleName || 'Error'\n this.constructor.getErrorOverlay().addError(err, title)\n }\n\n clearError() {\n if (this._noOverlay) return\n const overlay = this.constructor.getErrorOverlay(true)\n if (!overlay) return\n overlay.clearErrors()\n }\n}\n\n// TODO this is probably unused now: remove in next breaking release\nif (typeof window !== 'undefined') {\n window.__SVELTE_HMR_ADAPTER = ProxyAdapterDom\n}\n","/**\n * The HMR proxy is a component-like object whose task is to sit in the\n * component tree in place of the proxied component, and rerender each\n * successive versions of said component.\n */\n\nimport { createProxiedComponent } from './svelte-hooks.js'\n\nconst handledMethods = ['constructor', '$destroy']\nconst forwardedMethods = ['$set', '$on']\n\nconst logError = (msg, err) => {\n // eslint-disable-next-line no-console\n console.error('[HMR][Svelte]', msg)\n if (err) {\n // NOTE avoid too much wrapping around user errors\n // eslint-disable-next-line no-console\n console.error(err)\n }\n}\n\nconst posixify = file => file.replace(/[/\\\\]/g, '/')\n\nconst getBaseName = id =>\n id\n .split('/')\n .pop()\n .split('.')\n .slice(0, -1)\n .join('.')\n\nconst capitalize = str => str[0].toUpperCase() + str.slice(1)\n\nconst getFriendlyName = id => capitalize(getBaseName(posixify(id)))\n\nconst getDebugName = id => `<${getFriendlyName(id)}>`\n\nconst relayCalls = (getTarget, names, dest = {}) => {\n for (const key of names) {\n dest[key] = function(...args) {\n const target = getTarget()\n if (!target) {\n return\n }\n return target[key] && target[key].call(this, ...args)\n }\n }\n return dest\n}\n\nconst isInternal = key => key !== '$$' && key.substr(0, 2) === '$$'\n\n// This is intented as a somewhat generic / prospective fix to the situation\n// that arised with the introduction of $$set in Svelte 3.24.1 -- trying to\n// avoid giving full knowledge (like its name) of this implementation detail\n// to the proxy. The $$set method can be present or not on the component, and\n// its presence impacts the behaviour (but with HMR it will be tested if it is\n// present _on the proxy_). So the idea here is to expose exactly the same $$\n// props as the current version of the component and, for those that are\n// functions, proxy the calls to the current component.\nconst relayInternalMethods = (proxy, cmp) => {\n // delete any previously added $$ prop\n Object.keys(proxy)\n .filter(isInternal)\n .forEach(key => {\n delete proxy[key]\n })\n // guard: no component\n if (!cmp) return\n // proxy current $$ props to the actual component\n Object.keys(cmp)\n .filter(isInternal)\n .forEach(key => {\n Object.defineProperty(proxy, key, {\n configurable: true,\n get() {\n const value = cmp[key]\n if (typeof value !== 'function') return value\n return (\n value &&\n function(...args) {\n return value.apply(this, args)\n }\n )\n },\n })\n })\n}\n\nconst copyComponentProperties = (proxy, cmp, previous) => {\n //proxy custom methods\n const props = Object.getOwnPropertyNames(Object.getPrototypeOf(cmp))\n if (previous) {\n previous.forEach(prop => {\n delete proxy[prop]\n })\n }\n return props.filter(prop => {\n if (!handledMethods.includes(prop) && !forwardedMethods.includes(prop)) {\n Object.defineProperty(proxy, prop, {\n configurable: true,\n get() {\n return cmp[prop]\n },\n set(value) {\n // we're changing it on the real component first to see what it\n // gives... if it throws an error, we want to throw the same error in\n // order to most closely follow non-hmr behaviour.\n cmp[prop] = value\n // who knows? maybe the value has been transformed somehow\n proxy[prop] = cmp[prop]\n },\n })\n return true\n }\n })\n}\n\n// everything in the constructor!\n//\n// so we don't polute the component class with new members\n//\nclass ProxyComponent {\n constructor(\n {\n Adapter,\n id,\n debugName,\n current, // { Component, hotOptions: { preserveLocalState, ... } }\n register,\n },\n options // { target, anchor, ... }\n ) {\n let cmp\n let disposed = false\n let lastError = null\n\n const setComponent = _cmp => {\n cmp = _cmp\n relayInternalMethods(this, cmp)\n }\n\n const getComponent = () => cmp\n\n const destroyComponent = () => {\n // destroyComponent is tolerant (don't crash on no cmp) because it\n // is possible that reload/rerender is called after a previous\n // createComponent has failed (hence we have a proxy, but no cmp)\n if (cmp) {\n cmp.$destroy()\n setComponent(null)\n }\n }\n\n const refreshComponent = (target, anchor, conservativeDestroy) => {\n if (lastError) {\n lastError = null\n adapter.rerender()\n } else {\n try {\n const preserveLocalState = current.hotOptions.preserveLocalState\n const replaceOptions = { target, anchor, preserveLocalState }\n if (conservativeDestroy) {\n replaceOptions.conservativeDestroy = true\n }\n setComponent(cmp.$replace(current.Component, replaceOptions))\n } catch (err) {\n setError(err, target, anchor)\n if (\n !current.hotOptions.optimistic ||\n // non acceptable components (that is components that have to defer\n // to their parent for rerender -- e.g. accessors, named exports)\n // are most tricky, and they havent been considered when most of the\n // code has been written... as a result, they are especially tricky\n // to deal with, it's better to consider any error with them to be\n // fatal to avoid odities\n !current.canAccept ||\n (err && err.hmrFatal)\n ) {\n throw err\n } else {\n // const errString = String((err && err.stack) || err)\n logError(`Error during component init: ${debugName}`, err)\n }\n }\n }\n }\n\n const setError = err => {\n lastError = err\n adapter.renderError(err)\n }\n\n const instance = {\n hotOptions: current.hotOptions,\n proxy: this,\n id,\n debugName,\n refreshComponent,\n }\n\n const adapter = new Adapter(instance)\n\n const { afterMount, rerender } = adapter\n\n // $destroy is not called when a child component is disposed, so we\n // need to hook from fragment.\n const onDestroy = () => {\n // NOTE do NOT call $destroy on the cmp from here; the cmp is already\n // dead, this would not work\n if (!disposed) {\n disposed = true\n adapter.dispose()\n unregister()\n }\n }\n\n // ---- register proxy instance ----\n\n const unregister = register(rerender)\n\n // ---- augmented methods ----\n\n this.$destroy = () => {\n destroyComponent()\n onDestroy()\n }\n\n // ---- forwarded methods ----\n\n relayCalls(getComponent, forwardedMethods, this)\n\n // ---- create & mount target component instance ---\n\n try {\n let lastProperties\n const _cmp = createProxiedComponent(current.Component, options, {\n onDestroy,\n onMount: afterMount,\n onInstance: comp => {\n // WARNING the proxy MUST use the same $$ object as its component\n // instance, because a lot of wiring happens during component\n // initialisation... lots of references to $$ and $$.fragment have\n // already been distributed around when the component constructor\n // returns, before we have a chance to wrap them (and so we can't\n // wrap them no more, because existing references would become\n // invalid)\n this.$$ = comp.$$\n lastProperties = copyComponentProperties(this, comp, lastProperties)\n },\n })\n setComponent(_cmp)\n } catch (err) {\n const { target, anchor } = options\n setError(err, target, anchor)\n throw err\n }\n }\n}\n\n// TODO we should probably delete statics that were added on the previous\n// iteration, to avoid the case where something removed in the code would\n// remain available, and HMR would produce a different result than non-HMR --\n// namely, we'd expect a crash if a static method is still used somewhere but\n// removed from the code, and HMR would hide that until next reload\nconst copyStatics = (component, proxy) => {\n //forward static properties and methods\n for (const key in component) {\n proxy[key] = component[key]\n }\n}\n\nconst globalListeners = {}\n\nconst onGlobal = (event, fn) => {\n event = event.toLowerCase()\n if (!globalListeners[event]) globalListeners[event] = []\n globalListeners[event].push(fn)\n}\n\nconst fireGlobal = (event, ...args) => {\n const listeners = globalListeners[event]\n if (!listeners) return\n for (const fn of listeners) {\n fn(...args)\n }\n}\n\nconst fireBeforeUpdate = () => fireGlobal('beforeupdate')\n\nconst fireAfterUpdate = () => fireGlobal('afterupdate')\n\nif (typeof window !== 'undefined') {\n // eslint-disable-next-line no-undef\n window.__SVELTE_HMR = {\n on: onGlobal,\n }\n}\n\nlet fatalError = false\n\nexport const hasFatalError = () => fatalError\n\n/**\n * Creates a HMR proxy and its associated `reload` function that pushes a new\n * version to all existing instances of the component.\n */\nexport function createProxy(Adapter, id, Component, hotOptions, canAccept) {\n const debugName = getDebugName(id)\n const instances = []\n\n // current object will be updated, proxy instances will keep a ref\n const current = {\n Component,\n hotOptions,\n canAccept,\n }\n\n const name = `Proxy${debugName}`\n\n // this trick gives the dynamic name Proxy<MyComponent> to the concrete\n // proxy class... unfortunately, this doesn't shows in dev tools, but\n // it stills allow to inspect cmp.constructor.name to confirm an instance\n // is a proxy\n const proxy = {\n [name]: class extends ProxyComponent {\n constructor(options) {\n try {\n super(\n {\n Adapter,\n id,\n debugName,\n current,\n register: rerender => {\n instances.push(rerender)\n const unregister = () => {\n const i = instances.indexOf(rerender)\n instances.splice(i, 1)\n }\n return unregister\n },\n },\n options\n )\n } catch (err) {\n // If we fail to create a proxy instance, any instance, that means\n // that we won't be able to fix this instance when it is updated.\n // Recovering to normal state will be impossible. HMR's dead.\n //\n // Fatal error will trigger a full reload on next update (reloading\n // right now is kinda pointless since buggy code still exists).\n //\n // NOTE Only report first error to avoid too much polution -- following\n // errors are probably caused by the first one, or they will show up\n // in turn when the first one is fixed ¯\\_(ツ)_/¯\n //\n if (!fatalError) {\n fatalError = true\n logError(\n `Unrecoverable error in ${debugName}: next update will trigger a ` +\n `full reload`\n )\n }\n throw err\n }\n }\n },\n }[name]\n\n // initialize static members\n copyStatics(current.Component, proxy)\n\n const update = newState => Object.assign(current, newState)\n\n // reload all existing instances of this component\n const reload = () => {\n fireBeforeUpdate()\n\n // copy statics before doing anything because a static prop/method\n // could be used somewhere in the create/render call\n copyStatics(current.Component, proxy)\n\n const errors = []\n\n instances.forEach(rerender => {\n try {\n rerender()\n } catch (err) {\n logError(`Failed to rerender ${debugName}`, err)\n errors.push(err)\n }\n })\n\n if (errors.length > 0) {\n return false\n }\n\n fireAfterUpdate()\n\n return true\n }\n\n const hasFatalError = () => fatalError\n\n return { id, proxy, update, reload, hasFatalError, current }\n}\n","/**\n * Emulates forthcoming HMR hooks in Svelte.\n *\n * All references to private component state ($$) are now isolated in this\n * module.\n */\nimport {\n current_component,\n get_current_component,\n set_current_component,\n} from 'svelte/internal'\n\nconst captureState = cmp => {\n // sanity check: propper behaviour here is to crash noisily so that\n // user knows that they're looking at something broken\n if (!cmp) {\n throw new Error('Missing component')\n }\n if (!cmp.$$) {\n throw new Error('Invalid component')\n }\n\n const {\n $$: { callbacks, bound, ctx },\n } = cmp\n\n const state = cmp.$capture_state()\n\n // capturing current value of props (or we'll recreate the component with the\n // initial prop values, that may have changed -- and would not be reflected in\n // options.props)\n const props = Object.assign({}, cmp.$$.props)\n Object.keys(cmp.$$.props).forEach(prop => {\n props[prop] = ctx[props[prop]]\n })\n\n return { ctx, callbacks, bound, state, props }\n}\n\n// restoreState\n//\n// It is too late to restore context at this point because component instance\n// function has already been called (and so context has already been read).\n// Instead, we rely on setting current_component to the same value it has when\n// the component was first rendered -- which fix support for context, and is\n// also generally more respectful of normal operation.\n//\nconst restoreState = (cmp, restore) => {\n if (!restore) {\n return\n }\n const { callbacks, bound } = restore\n if (callbacks) {\n cmp.$$.callbacks = callbacks\n }\n if (bound) {\n cmp.$$.bound = bound\n }\n // props, props.$$slots are restored at component creation (works\n // better -- well, at all actually)\n}\n\nconst get_current_component_safe = () => {\n // NOTE relying on dynamic bindings (current_component) makes us dependent on\n // bundler config (and apparently it does not work in demo-svelte-nollup)\n try {\n // unfortunately, unlike current_component, get_current_component() can\n // crash in the normal path (when there is really no parent)\n return get_current_component()\n } catch (err) {\n // ... so we need to consider that this error means that there is no parent\n //\n // that makes us tightly coupled to the error message but, at least, we\n // won't mute an unexpected error, which is quite a horrible thing to do\n if (err.message === 'Function called outside component initialization') {\n // who knows...\n return current_component\n } else {\n throw err\n }\n }\n}\n\nexport const createProxiedComponent = (\n Component,\n initialOptions,\n { onInstance, onMount, onDestroy }\n) => {\n let cmp\n let last\n let options = initialOptions\n\n const isCurrent = _cmp => cmp === _cmp\n\n const assignOptions = (target, anchor, restore, preserveLocalState) => {\n const props = Object.assign({}, options.props)\n\n // Filtering props to avoid \"unexpected prop\" warning\n // NOTE this is based on props present in initial options, but it should\n // always works, because props that are passed from the parent can't\n // change without a code change to the parent itself -- hence, the\n // child component will be fully recreated, and initial options should\n // always represent props that are currnetly passed by the parent\n if (options.props && restore.props) {\n for (const prop of Object.keys(options.props)) {\n if (restore.props.hasOwnProperty(prop)) {\n props[prop] = restore.props[prop]\n }\n }\n }\n\n if (preserveLocalState && restore.state) {\n if (Array.isArray(preserveLocalState)) {\n // form ['a', 'b'] => preserve only 'a' and 'b'\n props.$$inject = {}\n for (const key of preserveLocalState) {\n props.$$inject[key] = restore.state[key]\n }\n } else {\n props.$$inject = restore.state\n }\n } else {\n delete props.$$inject\n }\n options = Object.assign({}, initialOptions, {\n target,\n anchor,\n props,\n hydrate: false,\n })\n }\n\n const instrument = targetCmp => {\n const createComponent = (Component, restore, previousCmp) => {\n set_current_component(parentComponent || previousCmp)\n const comp = new Component(options)\n restoreState(comp, restore)\n instrument(comp)\n return comp\n }\n\n // `conservative: true` means we want to be sure that the new component has\n // actually been successfuly created before destroying the old instance.\n // This could be useful for preventing runtime errors in component init to\n // bring down the whole HMR. Unfortunately the implementation bellow is\n // broken (FIXME), but that remains an interesting target for when HMR hooks\n // will actually land in Svelte itself.\n //\n // The goal would be to render an error inplace in case of error, to avoid\n // losing the navigation stack (especially annoying in native, that is not\n // based on URL navigation, so we lose the current page on each error).\n //\n targetCmp.$replace = (\n Component,\n {\n target = options.target,\n anchor = options.anchor,\n preserveLocalState,\n conservative = false,\n }\n ) => {\n const restore = captureState(targetCmp)\n assignOptions(target, anchor, restore, preserveLocalState)\n const previous = cmp\n if (conservative) {\n try {\n const next = createComponent(Component, restore, previous)\n // prevents on_destroy from firing on non-final cmp instance\n cmp = null\n previous.$destroy()\n cmp = next\n } catch (err) {\n cmp = previous\n throw err\n }\n } else {\n // prevents on_destroy from firing on non-final cmp instance\n cmp = null\n if (previous) {\n // previous can be null if last constructor has crashed\n previous.$destroy()\n }\n cmp = createComponent(Component, restore, last)\n last = cmp\n }\n return cmp\n }\n\n // NOTE onMount must provide target & anchor (for us to be able to determinate\n // \t\t\tactual DOM insertion point)\n //\n // \t\t\tAnd also, to support keyed list, it needs to be called each time the\n // \t\t\tcomponent is moved (same as $$.fragment.m)\n if (onMount) {\n const m = targetCmp.$$.fragment.m\n targetCmp.$$.fragment.m = (...args) => {\n const result = m(...args)\n onMount(...args)\n return result\n }\n }\n\n // NOTE onDestroy must be called even if the call doesn't pass through the\n // component's $destroy method (that we can hook onto by ourselves, since\n // it's public API) -- this happens a lot in svelte's internals, that\n // manipulates cmp.$$.fragment directly, often binding to fragment.d,\n // for example\n if (onDestroy) {\n targetCmp.$$.on_destroy.push(() => {\n if (isCurrent(targetCmp)) {\n onDestroy()\n }\n })\n }\n\n if (onInstance) {\n onInstance(targetCmp)\n }\n\n // Svelte 3 creates and mount components from their constructor if\n // options.target is present.\n //\n // This means that at this point, the component's `fragment.c` and,\n // most notably, `fragment.m` will already have been called _from inside\n // createComponent_. That is: before we have a chance to hook on it.\n //\n // Proxy's constructor\n // -> createComponent\n // -> component constructor\n // -> component.$$.fragment.c(...) (or l, if hydrate:true)\n // -> component.$$.fragment.m(...)\n //\n // -> you are here <-\n //\n if (onMount) {\n const { target, anchor } = options\n if (target) {\n onMount(target, anchor)\n }\n }\n }\n\n const parentComponent = get_current_component_safe()\n\n cmp = new Component(options)\n\n instrument(cmp)\n\n return cmp\n}\n","<script context=\"module\">\nimport {readable, derived} from 'svelte/store'\nimport {tick} from 'svelte'\nimport {wrap as _wrap} from './wrap'\n\n/**\n * Wraps a component to add route pre-conditions.\n * @deprecated Use `wrap` from `svelte-spa-router/wrap` instead. This function will be removed in a later version.\n * \n * @param {SvelteComponent} component - Svelte component for the route\n * @param {object} [userData] - Optional object that will be passed to each `conditionsFailed` event\n * @param {...function(RouteDetail): boolean} conditions - Route pre-conditions to add, which will be executed in order\n * @returns {WrappedComponent} Wrapped component\n */\nexport function wrap(component, userData, ...conditions) {\n // Use the new wrap method and show a deprecation warning\n // eslint-disable-next-line no-console\n console.warn('Method `wrap` from `svelte-spa-router` is deprecated and will be removed in a future version. Please use `svelte-spa-router/wrap` instead. See http://bit.ly/svelte-spa-router-upgrading')\n return _wrap({\n component,\n userData,\n conditions\n })\n}\n\n/**\n * @typedef {Object} Location\n * @property {string} location - Location (page/view), for example `/book`\n * @property {string} [querystring] - Querystring from the hash, as a string not parsed\n */\n/**\n * Returns the current location from the hash.\n *\n * @returns {Location} Location object\n * @private\n */\nfunction getLocation() {\n const hashPosition = window.location.href.indexOf('#/')\n let location = (hashPosition > -1) ? window.location.href.substr(hashPosition + 1) : '/'\n\n // Check if there's a querystring\n const qsPosition = location.indexOf('?')\n let querystring = ''\n if (qsPosition > -1) {\n querystring = location.substr(qsPosition + 1)\n location = location.substr(0, qsPosition)\n }\n\n return {location, querystring}\n}\n\n/**\n * Readable store that returns the current full location (incl. querystring)\n */\nexport const loc = readable(\n null,\n // eslint-disable-next-line prefer-arrow-callback\n function start(set) {\n set(getLocation())\n\n const update = () => {\n set(getLocation())\n }\n window.addEventListener('hashchange', update, false)\n\n return function stop() {\n window.removeEventListener('hashchange', update, false)\n }\n }\n)\n\n/**\n * Readable store that returns the current location\n */\nexport const location = derived(\n loc,\n ($loc) => $loc.location\n)\n\n/**\n * Readable store that returns the current querystring\n */\nexport const querystring = derived(\n loc,\n ($loc) => $loc.querystring\n)\n\n/**\n * Navigates to a new page programmatically.\n *\n * @param {string} location - Path to navigate to (must start with `/` or '#/')\n * @return {Promise<void>} Promise that resolves after the page navigation has completed\n */\nexport async function push(location) {\n if (!location || location.length < 1 || (location.charAt(0) != '/' && location.indexOf('#/') !== 0)) {\n throw Error('Invalid parameter location')\n }\n\n // Execute this code when the current call stack is complete\n await tick()\n\n // Note: this will include scroll state in history even when restoreScrollState is false\n history.replaceState({scrollX: window.scrollX, scrollY: window.scrollY}, undefined, undefined) \n window.location.hash = (location.charAt(0) == '#' ? '' : '#') + location\n}\n\n/**\n * Navigates back in history (equivalent to pressing the browser's back button).\n * \n * @return {Promise<void>} Promise that resolves after the page navigation has completed\n */\nexport async function pop() {\n // Execute this code when the current call stack is complete\n await tick()\n\n window.history.back()\n}\n\n/**\n * Replaces the current page but without modifying the history stack.\n *\n * @param {string} location - Path to navigate to (must start with `/` or '#/')\n * @return {Promise<void>} Promise that resolves after the page navigation has completed\n */\nexport async function replace(location) {\n if (!location || location.length < 1 || (location.charAt(0) != '/' && location.indexOf('#/') !== 0)) {\n throw Error('Invalid parameter location')\n }\n\n // Execute this code when the current call stack is complete\n await tick()\n\n const dest = (location.charAt(0) == '#' ? '' : '#') + location\n try {\n window.history.replaceState(undefined, undefined, dest)\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.warn('Caught exception while replacing the current page. If you\\'re running this in the Svelte REPL, please note that the `replace` method might not work in this environment.')\n }\n\n // The method above doesn't trigger the hashchange event, so let's do that manually\n window.dispatchEvent(new Event('hashchange'))\n}\n\n/**\n * Svelte Action that enables a link element (`<a>`) to use our history management.\n *\n * For example:\n *\n * ````html\n * <a href=\"/books\" use:link>View books</a>\n * ````\n *\n * @param {HTMLElement} node - The target node (automatically set by Svelte). Must be an anchor tag (`<a>`) with a href attribute starting in `/`\n * @param {string} hrefVar - A string to use in place of the link's href attribute. Using this allows for updating link's targets reactively.\n */\nexport function link(node, hrefVar) {\n // Only apply to <a> tags\n if (!node || !node.tagName || node.tagName.toLowerCase() != 'a') {\n throw Error('Action \"link\" can only be used with <a> tags')\n }\n\n updateLink(node, hrefVar || node.getAttribute('href'))\n\n return {\n update(updated) {\n updateLink(node, updated)\n }\n }\n}\n\n// Internal function used by the link function\nfunction updateLink(node, href) {\n // Destination must start with '/'\n if (!href || href.length < 1 || href.charAt(0) != '/') {\n throw Error('Invalid value for \"href\" attribute: ' + href)\n }\n\n // Add # to the href attribute\n node.setAttribute('href', '#' + href)\n node.addEventListener('click', scrollstateHistoryHandler)\n}\n\n/**\n * The handler attached to an anchor tag responsible for updating the\n * current history state with the current scroll state\n *\n * @param {HTMLElementEventMap} event - an onclick event attached to an anchor tag\n */\nfunction scrollstateHistoryHandler(event) {\n // Prevent default anchor onclick behaviour\n event.preventDefault()\n const href = event.currentTarget.getAttribute('href')\n // Setting the url (3rd arg) to href will break clicking for reasons, so don't try to do that\n history.replaceState({scrollX: window.scrollX, scrollY: window.scrollY}, undefined, undefined)\n // This will force an update as desired, but this time our scroll state will be attached\n window.location.hash = href\n}\n</script>\n\n{#if componentParams}\n <svelte:component\n this=\"{component}\"\n params=\"{componentParams}\"\n on:routeEvent\n {...props}\n />\n{:else}\n <svelte:component\n this=\"{component}\"\n on:routeEvent\n {...props}\n />\n{/if}\n\n<script>\nimport {createEventDispatcher, afterUpdate} from 'svelte'\nimport regexparam from 'regexparam'\n\n/**\n * Dictionary of all routes, in the format `'/path': component`.\n *\n * For example:\n * ````js\n * import HomeRoute from './routes/HomeRoute.svelte'\n * import BooksRoute from './routes/BooksRoute.svelte'\n * import NotFoundRoute from './routes/NotFoundRoute.svelte'\n * routes = {\n * '/': HomeRoute,\n * '/books': BooksRoute,\n * '*': NotFoundRoute\n * }\n * ````\n */\nexport let routes = {}\n\n/**\n * Optional prefix for the routes in this router. This is useful for example in the case of nested routers.\n */\nexport let prefix = ''\n\n/**\n * If set to true, the router will restore scroll positions on back navigation\n * and scroll to top on forward navigation.\n */\nexport let restoreScrollState = false\n\n/**\n * Container for a route: path, component\n */\nclass RouteItem {\n /**\n * Initializes the object and creates a regular expression from the path, using regexparam.\n *\n * @param {string} path - Path to the route (must start with '/' or '*')\n * @param {SvelteComponent|WrappedComponent} component - Svelte component for the route, optionally wrapped\n */\n constructor(path, component) {\n if (!component || (typeof component != 'function' && (typeof component != 'object' || component._sveltesparouter !== true))) {\n throw Error('Invalid component object')\n }\n\n // Path must be a regular or expression, or a string starting with '/' or '*'\n if (!path || \n (typeof path == 'string' && (path.length < 1 || (path.charAt(0) != '/' && path.charAt(0) != '*'))) ||\n (typeof path == 'object' && !(path instanceof RegExp))\n ) {\n throw Error('Invalid value for \"path\" argument - strings must start with / or *')\n }\n\n const {pattern, keys} = regexparam(path)\n\n this.path = path\n\n // Check if the component is wrapped and we have conditions\n if (typeof component == 'object' && component._sveltesparouter === true) {\n this.component = component.component\n this.conditions = component.conditions || []\n this.userData = component.userData\n this.props = component.props || {}\n }\n else {\n // Convert the component to a function that returns a Promise, to normalize it\n this.component = () => Promise.resolve(component)\n this.conditions = []\n this.props = {}\n }\n\n this._pattern = pattern\n this._keys = keys\n }\n\n /**\n * Checks if `path` matches the current route.\n * If there's a match, will return the list of parameters from the URL (if any).\n * In case of no match, the method will return `null`.\n *\n * @param {string} path - Path to test\n * @returns {null|Object.<string, string>} List of paramters from the URL if there's a match, or `null` otherwise.\n */\n match(path) {\n // If there's a prefix, check if it matches the start of the path.\n // If not, bail early, else remove it before we run the matching.\n if (prefix) {\n if (typeof prefix == 'string') {\n if (path.startsWith(prefix)) {\n path = path.substr(prefix.length) || '/'\n }\n else {\n return null\n }\n }\n else if (prefix instanceof RegExp) {\n const match = path.match(prefix)\n if (match && match[0]) {\n path = path.substr(match[0].length) || '/'\n }\n else {\n return null\n }\n }\n }\n\n // Check if the pattern matches\n const matches = this._pattern.exec(path)\n if (matches === null) {\n return null\n }\n\n // If the input was a regular expression, this._keys would be false, so return matches as is\n if (this._keys === false) {\n return matches\n }\n\n const out = {}\n let i = 0\n while (i < this._keys.length) {\n // In the match parameters, URL-decode all values\n try {\n out[this._keys[i]] = decodeURIComponent(matches[i + 1] || '') || null\n }\n catch (e) {\n out[this._keys[i]] = null\n }\n i++\n }\n return out\n }\n\n /**\n * Dictionary with route details passed to the pre-conditions functions, as well as the `routeLoading`, `routeLoaded` and `conditionsFailed` events\n * @typedef {Object} RouteDetail\n * @property {string|RegExp} route - Route matched as defined in the route definition (could be a string or a reguar expression object)\n * @property {string} location - Location path\n * @property {string} querystring - Querystring from the hash\n * @property {object} [userData] - Custom data passed by the user\n * @property {SvelteComponent} [component] - Svelte component (only in `routeLoaded` events)\n * @property {string} [name] - Name of the Svelte component (only in `routeLoaded` events)\n */\n\n /**\n * Executes all conditions (if any) to control whether the route can be shown. Conditions are executed in the order they are defined, and if a condition fails, the following ones aren't executed.\n * \n * @param {RouteDetail} detail - Route detail\n * @returns {bool} Returns true if all the conditions succeeded\n */\n async checkConditions(detail) {\n for (let i = 0; i < this.conditions.length; i++) {\n if (!(await this.conditions[i](detail))) {\n return false\n }\n }\n\n return true\n }\n}\n\n// Set up all routes\nconst routesList = []\nif (routes instanceof Map) {\n // If it's a map, iterate on it right away\n routes.forEach((route, path) => {\n routesList.push(new RouteItem(path, route))\n })\n}\nelse {\n // We have an object, so iterate on its own properties\n Object.keys(routes).forEach((path) => {\n routesList.push(new RouteItem(path, routes[path]))\n })\n}\n\n// Props for the component to render\nlet component = null\nlet componentParams = null\nlet props = {}\n\n// Event dispatcher from Svelte\nconst dispatch = createEventDispatcher()\n\n// Just like dispatch, but executes on the next iteration of the event loop\nasync function dispatchNextTick(name, detail) {\n // Execute this code when the current call stack is complete\n await tick()\n dispatch(name, detail)\n}\n\n// If this is set, then that means we have popped into this var the state of our last scroll position\nlet previousScrollState = null\n\n// Update history.scrollRestoration depending on restoreScrollState\n$: history.scrollRestoration = restoreScrollState ? 'manual' : 'auto'\n\nif (restoreScrollState) {\n window.addEventListener('popstate', (event) => {\n // If this event was from our history.replaceState, event.state will contain\n // our scroll history. Otherwise, event.state will be null (like on forward\n // navigation)\n if (event.state && event.state.scrollY) {\n previousScrollState = event.state\n }\n else {\n previousScrollState = null\n }\n })\n\n afterUpdate(() => {\n // If this exists, then this is a back navigation: restore the scroll position\n if (previousScrollState) {\n window.scrollTo(previousScrollState.scrollX, previousScrollState.scrollY)\n }\n else {\n // Otherwise this is a forward navigation: scroll to top\n window.scrollTo(0, 0)\n }\n })\n}\n\n// Always have the latest value of loc\nlet lastLoc = null\n\n// Current object of the component loaded\nlet componentObj = null\n\n// Handle hash change events\n// Listen to changes in the $loc store and update the page\n// Do not use the $: syntax because it gets triggered by too many things\nloc.subscribe(async (newLoc) => {\n lastLoc = newLoc\n\n // Find a route matching the location\n let i = 0\n while (i < routesList.length) {\n const match = routesList[i].match(newLoc.location)\n if (!match) {\n i++\n continue\n }\n\n const detail = {\n route: routesList[i].path,\n location: newLoc.location,\n querystring: newLoc.querystring,\n userData: routesList[i].userData\n }\n\n // Check if the route can be loaded - if all conditions succeed\n if (!(await routesList[i].checkConditions(detail))) {\n // Don't display anything\n component = null\n componentObj = null\n // Trigger an event to notify the user, then exit\n dispatchNextTick('conditionsFailed', detail)\n return\n }\n \n // Trigger an event to alert that we're loading the route\n // We need to clone the object on every event invocation so we don't risk the object to be modified in the next tick\n dispatchNextTick('routeLoading', Object.assign({}, detail))\n\n // If there's a component to show while we're loading the route, display it\n const obj = routesList[i].component\n // Do not replace the component if we're loading the same one as before, to avoid the route being unmounted and re-mounted\n if (componentObj != obj) {\n if (obj.loading) {\n component = obj.loading\n componentObj = obj\n componentParams = obj.loadingParams\n props = {}\n\n // Trigger the routeLoaded event for the loading component\n // Create a copy of detail so we don't modify the object for the dynamic route (and the dynamic route doesn't modify our object too)\n dispatchNextTick('routeLoaded', Object.assign({}, detail, {\n component: component,\n name: component.name\n }))\n }\n else {\n component = null\n componentObj = null\n }\n\n // Invoke the Promise\n const loaded = await obj()\n\n // Now that we're here, after the promise resolved, check if we still want this component, as the user might have navigated to another page in the meanwhile\n if (newLoc != lastLoc) {\n // Don't update the component, just exit\n return\n }\n\n // If there is a \"default\" property, which is used by async routes, then pick that\n component = (loaded && loaded.default) || loaded\n componentObj = obj\n }\n\n // Set componentParams only if we have a match, to avoid a warning similar to `<Component> was created with unknown prop 'params'`\n // Of course, this assumes that developers always add a \"params\" prop when they are expecting parameters\n if (match && typeof match == 'object' && Object.keys(match).length) {\n componentParams = match\n }\n else {\n componentParams = null\n }\n\n // Set static props, if any\n props = routesList[i].props\n\n // Dispatch the routeLoaded event then exit\n // We need to clone the object on every event invocation so we don't risk the object to be modified in the next tick\n dispatchNextTick('routeLoaded', Object.assign({}, detail, {\n component: component,\n name: component.name\n }))\n return\n }\n\n // If we're still here, there was no match, so show the empty component\n component = null\n componentObj = null\n})\n</script>\n","<script>\n import Router from 'svelte-spa-router';\n // Used for SSR. A falsy value is ignored by the Router.\n import Edit from './routes/Edit.svelte';\n import View from './routes/View.svelte';\n\n const routes = {\n // Exact path\n '/': Edit,\n\n // Using named parameters, with last being optional\n '/edit/:data': Edit,\n\n // Wildcard parameter\n '/view/:data': View,\n\n // Catch-all\n // This is optional, but if present it must be the last\n '*': Edit,\n };\n</script>\n\n<style>\n</style>\n\n<svelte:head>\n <link\n href=\"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;0,800;0,900;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\"\n rel=\"stylesheet\" />\n</svelte:head>\n<Router {routes} />\n","<script>\n export let title = '';\n export let noPadding = false;\n let contentClass = 'padding';\n if (noPadding) {\n contentClass = '';\n }\n</script>\n\n<style>\n #card {\n border: 1px solid lightgray;\n margin-bottom: 16px;\n }\n #title {\n font-family: 'Playfair Display', serif;\n font-weight: 400;\n border-bottom: 1px solid lightgray;\n font-size: 1.25rem;\n background-color: #1e60ab;\n color: #eaebef;\n }\n #content {\n padding-top: 8px;\n }\n .padding {\n padding: 8px;\n }\n</style>\n\n<div id=\"card\">\n <div id=\"title\" class=\"padding\">{title}</div>\n <div id=\"content\" class={contentClass}>\n <slot />\n </div>\n</div>\n","<script>\n import { codeStore, updateConfig } from '../code-store.js';\n import { configErrorStore } from '../error-store.js';\n import { onMount } from 'svelte';\n import Error from './Error.svelte';\n import { getResizeHandler, initEditor } from './editor-utils';\n import { watchResize } from 'svelte-watch-resize';\n import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js';\n\n let edit;\n\n let resizeHandler = () => {};\n\n const handleConfUpdate = (conf, updateEditor) => {\n console.log(conf);\n if (updateEditor && edit) {\n edit.setValue(JSON.stringify(conf, null, 2));\n }\n updateConfig(conf, false);\n configErrorStore.set(undefined);\n };\n\n const unsubscribe = codeStore.subscribe((state) => {\n console.log(state.mermaid, state.updateEditor);\n if (state.updateEditor) {\n handleConfUpdate(state.mermaid, true);\n }\n });\n\n onMount(async () => {\n console.log('Mounting config');\n const editorElem = document.getElementById('editor-conf');\n edit = monaco.editor.create(editorElem, {\n value: '',\n theme: 'myCoolTheme',\n language: 'json',\n });\n resizeHandler = getResizeHandler(edit);\n edit.onDidChangeModelContent(function (e) {\n try {\n const conf = JSON.parse(edit.getValue());\n handleConfUpdate(conf, false);\n } catch (err) {\n console.log('Error in parsed', err);\n configErrorStore.set(err);\n }\n });\n\n initEditor(monaco);\n });\n</script>\n\n<style>\n #editor-conf {\n width: 100%;\n height: 200px;\n max-height: 300px;\n flex: 1;\n }\n</style>\n\n<div id=\"editor-container\">\n <div id=\"editor-conf\" use:watchResize={resizeHandler} />\n <Error errorStore={configErrorStore} />\n</div>\n","<script>\n import { codeStore, updateCode } from '../code-store.js';\n import { codeErrorStore } from '../error-store.js';\n import { onMount } from 'svelte';\n import mermaid from '@mermaid';\n import Error from './Error.svelte';\n import { getResizeHandler, initEditor } from './editor-utils';\n import * as monaco from 'monaco-editor';\n import { watchResize } from 'svelte-watch-resize';\n\n let edit;\n\n const decArr = [];\n let editorElem = null;\n let resizeHandler = () => {};\n const handleCodeUpdate = (updatedCode, updateEditor) => {\n try {\n mermaid.parse(updatedCode);\n if (edit) {\n if (updateEditor) {\n edit.setValue(updatedCode);\n }\n decArr.forEach((decor) => {\n edit.deltaDecorations(decor, []);\n });\n }\n updateCode(updatedCode, false);\n codeErrorStore.set(undefined);\n } catch (e) {\n codeErrorStore.set('Syntax Error');\n console.log('Error in parsed', e.hash);\n const l = e.hash.line;\n decArr.push(\n edit.deltaDecorations(\n [],\n [\n {\n range: new monaco.Range(\n e.hash.loc.first_line,\n e.hash.loc.last_line,\n e.hash.loc.first_column,\n e.hash.loc.last_column\n ),\n options: { inlineClassName: 'myInlineDecoration' },\n },\n ]\n )\n );\n }\n };\n\n const unsubscribe = codeStore.subscribe((state) => {\n if (state.updateEditor) {\n handleCodeUpdate(state.code, true);\n }\n });\n\n onMount(async () => {\n initEditor(monaco);\n editorElem = document.getElementById('editor');\n edit = monaco.editor.create(editorElem, {\n value: '',\n theme: 'myCoolTheme',\n language: 'mermaid',\n });\n resizeHandler = getResizeHandler(edit);\n edit.onDidChangeModelContent(function (e) {\n handleCodeUpdate(edit.getValue(), false);\n });\n\n initEditor(monaco);\n });\n</script>\n\n<style>\n #editor {\n width: 100%;\n height: 400px;\n max-height: 300px;\n flex: 1;\n }\n</style>\n\n<div id=\"editor-container\">\n <div id=\"editor\" use:watchResize={resizeHandler} />\n <Error errorStore={codeErrorStore} />\n</div>\n","<script>\n export let classes = '';\n export let errorStore;\n let error;\n errorStore.subscribe((_error) => {\n if (_error) {\n error = _error.toString();\n } else {\n error = false;\n }\n });\n</script>\n\n<style>\n #error {\n background: darkred;\n color: white;\n flex: 1;\n padding: 10px;\n }\n .invisible {\n display: none;\n }\n .visible {\n display: block;\n }\n</style>\n\n{#if error}\n <div id=\"error\" class={classes}>{error}</div>\n{/if}\n","<script>\n import { Base64 } from 'js-base64';\n import moment from 'moment';\n import { codeStore } from '../code-store.js';\n\n const getBase64SVG = () => {\n const container = document.getElementById('container');\n const svg = container.innerHTML.replaceAll('<br>', '<br/>');\n return Base64.encode(svg);\n };\n\n const exportImage = (event, exporter) => {\n const canvas = document.createElement('canvas');\n const svg = document.querySelector('#container svg');\n const box = svg.getBoundingClientRect();\n canvas.width = box.width;\n canvas.height = box.height;\n if (imagemodeselected === 'width') {\n const ratio = box.height / box.width;\n canvas.width = userimagewidth;\n canvas.height = userimagewidth * ratio;\n } else if (imagemodeselected === 'height') {\n const ratio = box.width / box.height;\n canvas.width = userimageheight * ratio;\n canvas.height = userimageheight;\n }\n const context = canvas.getContext('2d');\n context.fillStyle = 'white';\n context.fillRect(0, 0, canvas.width, canvas.height);\n\n const image = new Image();\n image.onload = exporter(canvas, context, image);\n\n console.log('SVG', getBase64SVG());\n image.src = `data:image/svg+xml;base64,${getBase64SVG()}`;\n event.stopPropagation();\n event.preventDefault();\n };\n\n const downloadImage = (canvas, context, image) => {\n return () => {\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n\n const a = document.createElement('a');\n a.download = `mermaid-diagram-${moment().format('YYYYMMDDHHmmss')}.png`;\n a.href = canvas\n .toDataURL('image/png')\n .replace('image/png', 'image/octet-stream');\n a.click();\n };\n };\n\n const isClipboardAvailable = () => {\n return window.hasOwnProperty('ClipboardItem');\n };\n\n const clipboardCopy = (canvas, context, image) => {\n return () => {\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n\n canvas.toBlob((blob) => {\n try {\n navigator.clipboard.write([\n new ClipboardItem({\n [blob.type]: blob,\n }),\n ]);\n } catch (error) {\n console.error(error);\n }\n });\n };\n };\n\n const onCopyClipboard = (event) => {\n exportImage(event, clipboardCopy);\n };\n\n const onDownloadPNG = (event) => {\n exportImage(event, downloadImage);\n };\n\n const onDownloadSVG = (event) => {\n console.log('event', event.target);\n event.target.href = `data:image/svg+xml;base64,${getBase64SVG()}`;\n event.target.download = `mermaid-diagram-${moment().format(\n 'YYYYMMDDHHmmss'\n )}.svg`;\n console.log('event', event);\n };\n\n const onCopyMarkdown = (event) => {\n event.target.select();\n document.execCommand('Copy');\n };\n\n let url;\n let b64Code;\n let iUrl;\n let svgUrl;\n let mdCode;\n let imagemodeselected = 'auto';\n let userimagewidth = 1920;\n let userimageheight = 1080;\n\n const unsubscribe = codeStore.subscribe((state) => {\n b64Code = Base64.encodeURI(JSON.stringify(state));\n url = `${window.location.pathname.split('#')[0]}#/view/${b64Code}`;\n iUrl = `https://mermaid.ink/img/${b64Code}`;\n svgUrl = `https://mermaid.ink/svg/${b64Code}`;\n mdCode = `[![](${iUrl})](${window.location.protocol}//${window.location.host}${window.location.pathname}#/edit/${b64Code})`;\n });\n</script>\n\n<style>\n #links {\n margin-bottom: 1rem;\n padding-bottom: 0.5rem;\n border-bottom: 1px solid lightgray;\n }\n #markdown {\n padding: 7px;\n font-family: monospace;\n font-size: 14px;\n width: 95%;\n margin: 1rem 0;\n border: 1px solid lightgray;\n }\n label[for='markdown'] {\n cursor: pointer;\n margin: 0 auto;\n }\n /*\n @media (prefers-color-scheme: dark) {\n label[for=\"markdown\"] {\n color: #d8d8d8;\n }\n } */\n .button-style {\n background-color: #a2d9e2;\n color: #33a2c4;\n border-radius: 0.25rem;\n padding: 0.5rem;\n border: 1px solid #a2d9e2;\n margin: 0.25rem;\n }\n .button-style:hover {\n background-color: #fff;\n color: #33a2c4;\n border: 1px solid #33a2c4;\n }\n .button-style:focus {\n outline: none;\n }\n .link-style {\n text-decoration: none;\n color: #33a2c4;\n }\n #copy-section {\n padding-top: 1rem;\n text-align: center;\n }\n</style>\n\n<div id=\"links\">\n {#if isClipboardAvailable()}\n <button class=\"button-style\">\n <a class=\"link-style\" href={url} download=\"\" on:click={onCopyClipboard}>\n Copy Image\n </a>\n </button>\n {/if}\n <button class=\"button-style\">\n <a class=\"link-style\" href={url} download=\"\" on:click={onDownloadPNG}>\n Download PNG\n </a>\n </button>\n <button class=\"button-style\">\n <a class=\"link-style\" href={url}>Link to view</a>\n </button>\n <button class=\"button-style\">\n <a class=\"link-style\" href={url} download=\"\" on:click={onDownloadSVG}>\n Download SVG\n </a>\n </button>\n <button class=\"button-style\">\n <a class=\"link-style\" href={iUrl}>Link to Image</a>\n </button>\n <button class=\"button-style\">\n <a class=\"link-style\" href={svgUrl}>Link to SVG</a>\n </button>\n (markdown is base64 encoded for these urls)\n</div>\n<div id=\"copy-section\">\n <label for=\"markdown\" class=\"button-style\">Copy Markdown</label>\n <br />\n <input id=\"markdown\" type=\"text\" value={mdCode} on:click={onCopyMarkdown} />\n</div>\n\nPNG size:\n<br />\n<input type=\"radio\" value=\"auto\" id=\"autosize\" bind:group={imagemodeselected} />\n<label for=\"autosize\">auto</label><br />\n<input\n type=\"radio\"\n value=\"width\"\n id=\"width-active\"\n bind:group={imagemodeselected} />\n<label for=\"width\">width</label>\n<input\n id=\"width\"\n type=\"number\"\n min=\"3\"\n max=\"10000\"\n bind:value={userimagewidth}\n disabled={imagemodeselected !== 'width'} /><br />\n<input\n type=\"radio\"\n value=\"height\"\n id=\"height-active\"\n bind:group={imagemodeselected} />\n<label for=\"height\">height</label>\n<input\n id=\"height\"\n type=\"number\"\n min=\"3\"\n max=\"10000\"\n bind:value={userimageheight}\n disabled={imagemodeselected !== 'height'} /><br />\n","<script>\n import { codeStore } from '../code-store.js';\n import { codeErrorStore, configErrorStore } from '../error-store.js';\n import { onMount } from 'svelte';\n import mermaid from '@mermaid';\n\n const detectType = (text) => {\n text = text.replace(/^\\s*%%.*\\n/g, '\\n');\n console.debug('Detecting diagram type based on the text ' + text);\n if (text.match(/^\\s*sequenceDiagram/)) {\n return 'sequence';\n }\n\n if (text.match(/^\\s*gantt/)) {\n return 'gantt';\n }\n\n if (text.match(/^\\s*classDiagram/)) {\n return 'class';\n }\n\n if (text.match(/^\\s*stateDiagram/)) {\n return 'state';\n }\n\n if (text.match(/^\\s*gitGraph/)) {\n return 'git';\n }\n if (text.match(/^\\s*flowchart/)) {\n return 'flowchart';\n }\n\n if (text.match(/^\\s*info/)) {\n return 'info';\n }\n if (text.match(/^\\s*pie/)) {\n return 'pie';\n }\n\n return 'flowchart';\n };\n\n // manual debounce\n let timeout;\n const saveStatistcs = (graphType) => {\n clearTimeout(timeout);\n // Only save statistcs after a 5 sec delay\n timeout = setTimeout(function () {\n console.log('ga:', 'send', 'event', 'render', graphType, graphType);\n ga('send', 'event', graphType, 'render', 'render');\n }, 5000);\n };\n\n let container;\n\n export let code = '';\n export let configClasses = '';\n export let codeClasses = '';\n\n onMount(async () => {\n const unsubscribe = codeStore.subscribe((state) => {\n try {\n if (container && state) {\n // Replacing special characters '<' and '>' with encoded '<' and '>'\n code = state.code.replace(/</g, '<').replace(/>/g, '>');\n\n container.innerHTML = code;\n saveStatistcs(detectType(code));\n delete container.dataset.processed;\n mermaid.initialize(Object.assign({}, state.mermaid));\n mermaid.init(undefined, container);\n if (code) mermaid.render('graph-div', code, insertSvg);\n }\n } catch (e) {\n console.log('view fail', e);\n }\n });\n const unsubscribeError = codeErrorStore.subscribe((_error) => {\n if (typeof _error === 'undefined') {\n codeClasses = '';\n } else {\n codeClasses = 'error';\n console.log('code error: ', _error);\n }\n });\n const unsubscribeConfigError = configErrorStore.subscribe((_error) => {\n if (typeof _error === 'undefined') {\n configClasses = '';\n } else {\n configClasses = 'error';\n console.log('conf error: ', _error);\n }\n });\n });\n\n let insertSvg = function (svgCode, bindFunctions) {};\n</script>\n\n<style>\n #view {\n border: 1px solor darkred;\n flex: 1;\n }\n #container {\n overflow-x: auto;\n }\n .error {\n opacity: 0.5;\n }\n</style>\n\n<div id=\"view\" class=\"{codeClasses} {configClasses}\">\n <div id=\"container\" bind:this={container} />\n</div>\n","<script>\n import { onMount } from 'svelte';\n import { codeStore, updateCode, updateCodeStore } from '../code-store.js';\n import Editor from '../components/Editor.svelte';\n import Config from '../components/Config.svelte';\n import View from '../components/View.svelte';\n import Card from '../components/Card.svelte';\n import Tag from '../components/Tag.svelte';\n import Links from '../components/Links.svelte';\n import { fromUrl } from '../code-store.js';\n import pkg from '@mermaid/package.json';\n import moment from 'moment';\n export let mermaidVersion = pkg.version;\n let historyList = [];\n onMount(async () => {\n ga('send', 'pageview');\n ga('send', 'event', 'version', mermaidVersion, mermaidVersion);\n\n const historyListKey = '_mermaid_history_';\n historyList = JSON.parse(localStorage.getItem(historyListKey) || '[]');\n let hisCode =\n historyList.length > 0 ? historyList[historyList.length - 1] : null;\n\n if (params.data) {\n fromUrl(params.data);\n } else if (hisCode) {\n updateCodeStore({\n code: hisCode.code,\n mermaid: {},\n updateEditor: true,\n });\n } else {\n loadSampleDiagram('Flow Chart');\n }\n\n let code = null;\n codeStore.subscribe((state) => {\n code = (state && state.code) || code;\n });\n\n setInterval(() => {\n if (code != hisCode) {\n //save history\n historyList.unshift({\n time: new Date().toISOString(),\n code: (hisCode = code),\n });\n if (historyList.length > 10) {\n historyList.pop();\n }\n localStorage.setItem(historyListKey, JSON.stringify(historyList));\n }\n historyList = historyList; //triggered update\n }, 1 * 60 * 1000);\n });\n\n export let params = {};\n const samples = {\n 'Flow Chart': `graph TD\n A[Christmas] -->|Get money| B(Go shopping)\n B --> C{Let me think}\n C -->|One| D[Laptop]\n C -->|Two| E[iPhone]\n C -->|Three| F[fa:fa-car Car]`,\n 'Sequence Diagram': `sequenceDiagram\n Alice->>+John: Hello John, how are you?\n Alice->>+John: John, can you hear me?\n John-->>-Alice: Hi Alice, I can hear you!\n John-->>-Alice: I feel great!\n `,\n 'Class Diagram': `classDiagram\n Animal <|-- Duck\n Animal <|-- Fish\n Animal <|-- Zebra\n Animal : +int age\n Animal : +String gender\n Animal: +isMammal()\n Animal: +mate()\n class Duck{\n +String beakColor\n +swim()\n +quack()\n }\n class Fish{\n -int sizeInFeet\n -canEat()\n }\n class Zebra{\n +bool is_wild\n +run()\n }\n `,\n 'State Diagram': `stateDiagram-v2\n [*] --> Still\n Still --> [*]\n Still --> Moving\n Moving --> Still\n Moving --> Crash\n Crash --> [*]\n `,\n 'Gantt Chart': `gantt\n title A Gantt Diagram\n dateFormat YYYY-MM-DD\n section Section\n A task :a1, 2014-01-01, 30d\n Another task :after a1 , 20d\n section Another\n Task in sec :2014-01-12 , 12d\n another task : 24d\n `,\n 'Pie Chart': `pie title Pets adopted by volunteers\n \"Dogs\" : 386\n \"Cats\" : 85\n \"Rats\" : 15\n `,\n 'ER Diagram': `erDiagram\n CUSTOMER }|..|{ DELIVERY-ADDRESS : has\n CUSTOMER ||--o{ ORDER : places\n CUSTOMER ||--o{ INVOICE : \"liable for\"\n DELIVERY-ADDRESS ||--o{ ORDER : receives\n INVOICE ||--|{ ORDER : covers\n ORDER ||--|{ ORDER-ITEM : includes\n PRODUCT-CATEGORY ||--|{ PRODUCT : contains\n PRODUCT ||--o{ ORDER-ITEM : \"ordered in\"\n `,\n };\n\n function loadSampleDiagram(diagramType) {\n toUpdateCodeStore(samples[diagramType]);\n }\n\n function toUpdateCodeStore(code) {\n if (!code) return;\n updateCode(code, true);\n }\n\n function relativeTime(t) {\n return `${moment(t).fromNow()} (${new Date(t).toLocaleString()})`;\n }\n</script>\n\n<style>\n #body {\n font-family: 'Roboto', sans-serif;\n background-color: #fcfbfc;\n }\n #editor-root {\n display: flex;\n height: 100%;\n }\n #col1 {\n width: 35%;\n }\n #col2 {\n width: 65%;\n padding-left: 32px;\n }\n #link-root {\n display: flex;\n height: fit-content;\n }\n #link-col1 {\n width: 50%;\n }\n #link-col2 {\n width: 50%;\n padding-left: 32px;\n }\n #app-title {\n font-family: 'Playfair Display', serif;\n font-size: 32px;\n font-weight: 700;\n margin: 0;\n color: #1e60ab;\n opacity: 0.8;\n }\n #title-container {\n width: fit-content;\n margin: 0 auto 8px;\n }\n #power {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n height: 4rem;\n }\n #sampleLoader {\n padding-left: 10px;\n border-bottom: 1px solid lightgray;\n }\n #historyLoaderSubTitle {\n display: inline-block;\n color: #33a2c4;\n font-size: small;\n font-style: italic;\n }\n .button-container {\n display: flex;\n align-items: center;\n flex-direction: row;\n flex-wrap: wrap;\n }\n .button-style {\n background-color: #a2d9e2;\n color: #33a2c4;\n border-radius: 0.25rem;\n padding: 0.5rem;\n border: 1px solid #a2d9e2;\n margin: 0.25rem;\n }\n .button-style:hover {\n background-color: #fff;\n color: #33a2c4;\n border: 1px solid #33a2c4;\n }\n .button-style:focus {\n outline: none;\n }\n .link-style {\n text-decoration: none;\n color: #33a2c4;\n }\n</style>\n\n<div id=\"body\">\n <div id=\"title-container\">\n <h1 id=\"app-title\">Mermaid Live Editor</h1>\n </div>\n <div id=\"sampleLoader\">\n <div class=\"button-container\">\n <span id=\"sampleLoaderTitle\"><strong>Diagram presets:</strong></span>\n {#each Object.keys(samples) as diagramType, i}\n <button\n class=\"button-style\"\n on:click={(e) => loadSampleDiagram(diagramType)}>\n {diagramType}\n </button>\n {/each}\n </div>\n </div>\n <div id=\"editor-root\">\n <div id=\"col1\">\n <Card title=\"Code\" noPadding=\"true\">\n <Editor data={params.data} />\n </Card>\n <Card title=\"Mermaid Configuration\">\n <Config />\n </Card>\n </div>\n <div id=\"col2\">\n <Card title=\"Preview\">\n <View />\n </Card>\n <div id=\"link-root\">\n <div id=\"link-col1\">\n <Card title=\"Editing history\">\n <span id=\"historyLoaderSubTitle\"\n >Automatically saves once every minute, up to 10 records.</span>\n <br />\n <div id=\"historyList\" class=\"button-container\">\n {#if historyList.length > 0}\n {#each historyList as item, i}\n <button\n class=\"button-style\"\n on:click={(e) => toUpdateCodeStore(item.code)}>\n {relativeTime(item.time)}\n </button>\n {/each}\n {:else}No records.{/if}\n </div>\n </Card>\n <Card title=\"Links\">\n <div class=\"button-container\">\n <button class=\"button-style\">\n <a\n href=\"https://mermaid-js.github.io/mermaid/#/n00b-gettingStarted\"\n target=\"_blank\"\n class=\"link-style\">\n Mermaid Documentation\n </a>\n </button>\n <button class=\"button-style\">\n <a\n href=\"https://github.com/mermaid-js/mermaid/blob/master/docs/getting-started/Tutorials.md\"\n target=\"_blank\"\n class=\"link-style\">\n Live Editor Video Tutorials\n </a>\n </button>\n <button class=\"button-style\">\n <a\n href=\"https://github.com/mermaid-js/mermaid\"\n target=\"_blank\"\n class=\"link-style\">\n Mermaid on GitHub\n </a>\n </button>\n <button class=\"button-style\">\n <a\n href=\"https://github.com/mermaid-js/mermaid-live-editor\"\n target=\"_blank\"\n class=\"link-style\">\n Live Editor on GitHub\n </a>\n </button>\n <button class=\"button-style\">\n <a\n href=\"https://github.com/mermaid-js/mermaid-cli\"\n target=\"_blank\"\n class=\"link-style\">\n Mermaid CLI\n </a>\n </button>\n </div>\n </Card>\n </div>\n <div id=\"link-col2\">\n <Card title=\"Actions\">\n <Links />\n </Card>\n </div>\n </div>\n </div>\n </div>\n <div id=\"power\">\n Powered by mermaid\n <Tag color=\"green\">{mermaidVersion}</Tag>\n </div>\n</div>\n","<script>\n import { onMount } from 'svelte';\n import View from '../components/View.svelte';\n\n onMount(async () => {\n ga('send', 'pageview');\n });\n</script>\n\n<style>\n #view-page {\n display: flex;\n height: 100%;\n }\n</style>\n\n<div id=\"view-page\">\n <View />\n</div>\n","import { makeApplyHmr } from 'svelte-hmr/runtime';\n\n// eslint-disable-next-line no-undef\nconst g = typeof window !== 'undefined' ? window : global;\n\nconst globalKey =\n\ttypeof Symbol !== 'undefined'\n\t\t? Symbol('SVELTE_LOADER_HOT')\n\t\t: '__SVELTE_LOADER_HOT';\n\nif (!g[globalKey]) {\n\t// do updating refs counting to know when a full update has been applied\n\tlet updatingCount = 0;\n\n\tconst notifyStart = () => {\n\t\tupdatingCount++;\n\t};\n\n\tconst notifyError = reload => err => {\n\t\tconst errString = (err && err.stack) || err;\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(\n\t\t\t'[HMR] Failed to accept update (nollup compat mode)',\n\t\t\terrString\n\t\t);\n\t\treload();\n\t\tnotifyEnd();\n\t};\n\n\tconst notifyEnd = () => {\n\t\tupdatingCount--;\n\t\tif (updatingCount === 0) {\n\t\t\t// NOTE this message is important for timing in tests\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.log('[HMR:Svelte] Up to date');\n\t\t}\n\t};\n\n\tg[globalKey] = {\n\t\thotStates: {},\n\t\tnotifyStart,\n\t\tnotifyError,\n\t\tnotifyEnd,\n\t};\n}\n\nconst runAcceptHandlers = acceptHandlers => {\n\tconst queue = [...acceptHandlers];\n\tconst next = () => {\n\t\tconst cur = queue.shift();\n\t\tif (cur) {\n\t\t\treturn cur(null).then(next);\n\t\t} else {\n\t\t\treturn Promise.resolve(null);\n\t\t}\n\t};\n\treturn next();\n};\n\nexport const applyHmr = makeApplyHmr(args => {\n\tconst { notifyStart, notifyError, notifyEnd } = g[globalKey];\n\tconst { m, reload } = args;\n\n\tlet acceptHandlers = (m.hot.data && m.hot.data.acceptHandlers) || [];\n\tlet nextAcceptHandlers = [];\n\n\tm.hot.dispose(data => {\n\t\tdata.acceptHandlers = nextAcceptHandlers;\n\t});\n\n\tconst dispose = (...args) => m.hot.dispose(...args);\n\n\tconst accept = handler => {\n\t\tif (nextAcceptHandlers.length === 0) {\n\t\t\tm.hot.accept();\n\t\t}\n\t\tnextAcceptHandlers.push(handler);\n\t};\n\n\tconst check = status => {\n\t\tif (status === 'ready') {\n\t\t\tnotifyStart();\n\t\t} else if (status === 'idle') {\n\t\t\trunAcceptHandlers(acceptHandlers)\n\t\t\t\t.then(notifyEnd)\n\t\t\t\t.catch(notifyError(reload));\n\t\t}\n\t};\n\n\tm.hot.addStatusHandler(check);\n\n\tm.hot.dispose(() => {\n\t\tm.hot.removeStatusHandler(check);\n\t});\n\n\tconst hot = {\n\t\tdata: m.hot.data,\n\t\tdispose,\n\t\taccept,\n\t};\n\n\treturn { ...args, hot };\n});\n","/**\n * @typedef {Object} WrappedComponent Object returned by the `wrap` method\n * @property {SvelteComponent} component - Component to load (this is always asynchronous)\n * @property {RoutePrecondition[]} [conditions] - Route pre-conditions to validate\n * @property {Object} [props] - Optional dictionary of static props\n * @property {Object} [userData] - Optional user data dictionary\n * @property {bool} _sveltesparouter - Internal flag; always set to true\n */\n\n/**\n * @callback AsyncSvelteComponent\n * @returns {Promise<SvelteComponent>} Returns a Promise that resolves with a Svelte component\n */\n\n/**\n * @callback RoutePrecondition\n * @param {RouteDetail} detail - Route detail object\n * @returns {boolean|Promise<boolean>} If the callback returns a false-y value, it's interpreted as the precondition failed, so it aborts loading the component (and won't process other pre-condition callbacks)\n */\n\n/**\n * @typedef {Object} WrapOptions Options object for the call to `wrap`\n * @property {SvelteComponent} [component] - Svelte component to load (this is incompatible with `asyncComponent`)\n * @property {AsyncSvelteComponent} [asyncComponent] - Function that returns a Promise that fulfills with a Svelte component (e.g. `{asyncComponent: () => import('Foo.svelte')}`)\n * @property {SvelteComponent} [loadingComponent] - Svelte component to be displayed while the async route is loading (as a placeholder); when unset or false-y, no component is shown while component\n * @property {object} [loadingParams] - Optional dictionary passed to the `loadingComponent` component as params (for an exported prop called `params`)\n * @property {object} [userData] - Optional object that will be passed to events such as `routeLoading`, `routeLoaded`, `conditionsFailed`\n * @property {object} [props] - Optional key-value dictionary of static props that will be passed to the component. The props are expanded with {...props}, so the key in the dictionary becomes the name of the prop.\n * @property {RoutePrecondition[]|RoutePrecondition} [conditions] - Route pre-conditions to add, which will be executed in order\n */\n\n/**\n * Wraps a component to enable multiple capabilities:\n * 1. Using dynamically-imported component, with (e.g. `{asyncComponent: () => import('Foo.svelte')}`), which also allows bundlers to do code-splitting.\n * 2. Adding route pre-conditions (e.g. `{conditions: [...]}`)\n * 3. Adding static props that are passed to the component\n * 4. Adding custom userData, which is passed to route events (e.g. route loaded events) or to route pre-conditions (e.g. `{userData: {foo: 'bar}}`)\n * \n * @param {WrapOptions} args - Arguments object\n * @returns {WrappedComponent} Wrapped component\n */\nexport function wrap(args) {\n if (!args) {\n throw Error('Parameter args is required')\n }\n\n // We need to have one and only one of component and asyncComponent\n // This does a \"XNOR\"\n if (!args.component == !args.asyncComponent) {\n throw Error('One and only one of component and asyncComponent is required')\n }\n\n // If the component is not async, wrap it into a function returning a Promise\n if (args.component) {\n args.asyncComponent = () => Promise.resolve(args.component)\n }\n\n // Parameter asyncComponent and each item of conditions must be functions\n if (typeof args.asyncComponent != 'function') {\n throw Error('Parameter asyncComponent must be a function')\n }\n if (args.conditions) {\n // Ensure it's an array\n if (!Array.isArray(args.conditions)) {\n args.conditions = [args.conditions]\n }\n for (let i = 0; i < args.conditions.length; i++) {\n if (!args.conditions[i] || typeof args.conditions[i] != 'function') {\n throw Error('Invalid parameter conditions[' + i + ']')\n }\n }\n }\n\n // Check if we have a placeholder component\n if (args.loadingComponent) {\n args.asyncComponent.loading = args.loadingComponent\n args.asyncComponent.loadingParams = args.loadingParams || undefined\n }\n\n // Returns an object that contains all the functions to execute too\n // The _sveltesparouter flag is to confirm the object was created by this router\n const obj = {\n component: args.asyncComponent,\n userData: args.userData,\n conditions: (args.conditions && args.conditions.length) ? args.conditions : undefined,\n props: (args.props && Object.keys(args.props).length) ? args.props : {},\n _sveltesparouter: true\n }\n\n return obj\n}\n\nexport default wrap\n","import elementResizeDetectorMaker from 'element-resize-detector';\n\nvar erd = elementResizeDetectorMaker({ strategy: \"scroll\" });\r\nfunction watchResize(element, handler) {\r\n erd.listenTo(element, handler);\r\n var currentHandler = handler;\r\n return {\r\n update: function (newHandler) {\r\n erd.removeListener(element, currentHandler);\r\n erd.listenTo(element, newHandler);\r\n currentHandler = newHandler;\r\n },\r\n destroy: function () {\r\n erd.removeListener(element, currentHandler);\r\n },\r\n };\r\n}\n\nexport { watchResize };\n","export { SvelteComponentDev as SvelteComponent, SvelteComponentTyped, afterUpdate, beforeUpdate, createEventDispatcher, getContext, hasContext, onDestroy, onMount, setContext, tick } from './internal/index.mjs';\n","function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot_spread(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_spread_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_spread_changes_fn(dirty) | get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nconst nodes_to_detach = new Set();\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n for (const node of nodes_to_detach) {\n node.parentNode.removeChild(node);\n }\n nodes_to_detach.clear();\n}\nfunction append(target, node) {\n if (is_hydrating) {\n nodes_to_detach.delete(node);\n }\n if (node.parentNode !== target) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n if (is_hydrating) {\n nodes_to_detach.delete(node);\n }\n if (node.parentNode !== target || (anchor && node.nextSibling !== anchor)) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n if (is_hydrating) {\n nodes_to_detach.add(node);\n }\n else if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n while (nodes.length > 0) {\n const node = nodes.shift();\n if (node.nodeName === name) {\n let j = 0;\n const remove = [];\n while (j < node.attributes.length) {\n const attribute = node.attributes[j++];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n for (let k = 0; k < remove.length; k++) {\n node.removeAttribute(remove[k]);\n }\n return node;\n }\n else {\n detach(node);\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(anchor = null) {\n this.a = anchor;\n this.e = this.n = null;\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.h(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = node.ownerDocument;\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${String(value).replace(/\"/g, '"').replace(/'/g, ''')}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : context || []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : options.context || []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.38.1' }, detail)));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * <script lang=\"ts\">\n * \timport { MyComponent } from \"component-library\";\n * </script>\n * <MyComponent foo={'bar'} />\n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to seperate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_custom_elements_slots, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_await_block_branch, update_keyed_each, update_slot, update_slot_spread, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import { writable, get } from 'svelte/store';\nimport { Base64 } from 'js-base64';\nimport { replace, location } from 'svelte-spa-router';\n\nconst isDarkMode =\n window.matchMedia('(prefers-color-scheme: dark)').matches && false;\nconst defaultState = {\n code: `graph TD\nA[Christmas] -->|Get money| B(Go shopping)\nB --> C{Let me think}\nC -->|One| D[Laptop]\nC -->|Two| E[iPhone]\nC -->|Three| F[fa:fa-car Car]\n `,\n mermaid: { theme: isDarkMode ? 'dark' : 'default' },\n};\nexport const codeStore = writable(defaultState);\nexport const fromUrl = (data) => {\n let state;\n try {\n const stateStr = Base64.decode(data);\n console.log('state from url', stateStr);\n state = JSON.parse(stateStr);\n } catch (e) {\n console.error('Init error', e);\n state = defaultState;\n }\n codeStore.set({ ...state, updateEditor: true });\n};\nexport const updateCodeStore = (newState) => {\n codeStore.set(newState);\n};\nexport const updateCode = (code, updateEditor) => {\n const state = get(codeStore);\n codeStore.set({ ...state, code, updateEditor });\n};\nexport const updateConfig = (config, updateEditor) => {\n const state = get(codeStore);\n codeStore.set({ ...state, mermaid: config, updateEditor });\n};\n\nconst unsubscribe = codeStore.subscribe((state) => {\n const currentLocation = get(location).split('/')[1];\n replace(\n `/${currentLocation || 'edit'}/` + Base64.encodeURI(JSON.stringify(state))\n );\n});\n","export const initEditor = (monaco) => {\n monaco.languages.register({ id: 'mermaid' });\n\n // Register a tokens provider for the language\n monaco.languages.setMonarchTokensProvider('mermaid', {\n typeKeywords: [\n 'graph',\n 'stateDiagram',\n 'sequenceDiagram',\n 'classDiagram',\n 'pie',\n 'flowchart',\n 'gantt',\n ],\n keywords: ['patricipant', 'as'],\n arrows: ['---', '===', '-->', '==>'],\n\n tokenizer: {\n root: [\n [/[{}]/, 'delimiter.bracket'],\n [\n /[a-z_$][\\w$]*/,\n { cases: { '@typeKeywords': 'keyword', '@keywords': 'keyword' } },\n ],\n [/[-=>ox]+/, { cases: { '@arrows': 'transition' } }],\n [/[\\[\\{\\(}]+.+?[\\)\\]\\}]+/, 'string'],\n [/\\\".*\\\"/, 'string'],\n ],\n },\n whitespace: [\n [/[ \\t\\r\\n]+/, 'white'],\n [/\\%\\%.*$/, 'comment'],\n ],\n });\n\n monaco.editor.defineTheme('myCoolTheme', {\n base: 'vs',\n inherit: false,\n rules: [\n { token: 'keyword', foreground: '880000', fontStyle: 'bold' },\n { token: 'custom-error', foreground: 'ff0000', fontStyle: 'bold' },\n { token: 'string', foreground: 'AA8500' },\n { token: 'transition', foreground: '008800', fontStyle: 'bold' },\n { token: 'delimiter.bracket', foreground: '000000', fontStyle: 'bold' },\n ],\n });\n\n // Register a completion item provider for the new language\n monaco.languages.registerCompletionItemProvider('mermaid', {\n provideCompletionItems: () => {\n var suggestions = [\n {\n label: 'simpleText',\n kind: monaco.languages.CompletionItemKind.Text,\n insertText: 'simpleText',\n },\n {\n label: 'testing',\n kind: monaco.languages.CompletionItemKind.Keyword,\n insertText: 'testing(${1:condition})',\n insertTextRules:\n monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n },\n {\n label: 'ifelse',\n kind: monaco.languages.CompletionItemKind.Snippet,\n insertText: [\n 'if (${1:condition}) {',\n '\\t$0',\n '} else {',\n '\\t',\n '}',\n ].join('\\n'),\n insertTextRules:\n monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,\n documentation: 'If-Else Statement',\n },\n ];\n return { suggestions: suggestions };\n },\n });\n};\n\nexport const getResizeHandler = (editor) => {\n return (node) => editor && editor.layout();\n};\n","import { writable } from 'svelte/store';\n\nexport const codeErrorStore = writable(undefined);\nexport const configErrorStore = writable(undefined);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + chunkId + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mermaid-live-editor:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"bundle\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmermaid_live_editor\"] = self[\"webpackChunkmermaid_live_editor\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import App from './App.svelte';\n\nconst app = new App({\n target: document.body,\n props: {},\n});\n\nwindow.app = app;\n\nexport default app;\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/dist/codicon.ttf b/docs/dist/codicon.ttf deleted file mode 100644 index 82acc8995b8d7ee0338bc65547844f5f99b953ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61024 zcmeFacYqt^nLqx%Gb*dzrIobOsH~(d(iUkYZI#x$>)zIFy>9DXunpK?uqiU##ty`^ zI1~d(=nesg0GHrR!X@M&1uhpLm&73rE+JBIxWuIFd57QUop;w>bGh%Y{QJALKAO>J z=GDCIc|K2h$Al6>4CHzul9riEmi2``6}y@c+K!`37cOZ|_uex5N_@TzpNBSHynfe* z2k#yyMDsU79D`eTUbSV*6L0>Mkeas$`Np-|Hm~30z4@^bock*vw+#oh|E{jb{wPqp z?czQA{_}I#BlJB&)XtrkZe0IV_fPSAzFC9_w_Ut`-!5St`4@a&jgvx`tiO13_^D|( z5OQh|-|Kf>dikE6?!F=+@2n=oCKBAc_&zI-y?^{);s@-=)IU01IfA3hY+pLC*3$hE zG4Lx+b+^oAXY%dGW8w$m@A0vU2ou-i8eIJnu_>R~Q9b_QXU>0*&n=`tgn=3JmJ;*M z^?NQMKBAiP{nUNB^P;WmQ9g=Qpi<7HI6{eL@~HS9^bVrNCyT&Z>^8oozap&^cOVe8 zh@=1DZ*a@>O{BNHuJT2tb}Lbr$ucL-X2<^*|Jw%tI|lxD4E*mHP=q3rvrL{Q0Z3|< zifa!+#!)7tlh{Jy<G4!r5k8w0?Vu^&TE4CPYWcgB1(h#;3~f+eS3X=mQvPoF2bDqg zdCDKfH6vsL`4RaM{V|S<<n!b|$ZyEa<ZT*(p8J@*NJWyRJ>(2IOa6;&CvoxySx-Jg zzC=<qOooV=c9T71Bl#uyXL6E^(nfLzDUn-gjGD=2Dp4(UQzxyW9vY-xYA1)OiTa@^ zRL~+CqQxESPzM7s5)-jPm)VJfbdw%vts?0o{lrOJ#7#V;n)pc#36LO>NQi_<ghWX# ziID`UBlV<#G@><{NHb|AX_6srBuDb3opg{HWG0zK=8%PC5m`)@kfmf9Sx$z@3bK-{ zBCE+7)PF5mhc?(mwvcV)BC?ZQOfDgpl3ipsxr|&+t{_*Ey<{J`id;>uA=i@q<T`Ra z&bfiyNNysxkOSlp`4lwa?c@l#liWq_Cijq|<g?^nav!;$JV1_-2gyU^bL0!;5%M^B ziX10jBu|rP$g|`G`7(Kqyg>eme3g6+n*8hJ8|0hhW%6zE3VD@$k9?o}fV@urmHd$W z8+zzX@)r4b@)Pn?@-uRZ{G7Z)egPKqYw|96kNlSWj=WEPPs*f1{y<KXKavm0f093u zKa;<bzmdO_F)~hMN+_iQRZ%t7Q9U(KBehT~wNVFk(Q4|WH8e_VX`Ci#9j&JgG)Ysm zi8j*~+DbFDjb>?%=4m_aq+PT?i?o+cqkXiW4v<I5W8?|)B<Us7$UHKiEFc3kK<1J` zGMjV}FIdM{$X2q0e43^)axG*!d6;~Qd_Y6wHFA*rg?vQ5Lp9{P<j16wc7U@y4-&%o z!T;a?jI04H^LR6W?O`r+Fu71(&w)8h${RQ^dr5gC2j(#;Z{om=Cgsf><ZW!XaA1~` z@>UMUYs=d>7>g`l#6e!fb~^{80V(g`AX#j8azH|m^2HpG6{LI#2c!lmU&;abLCU*0 zAW2AhHwR=2DPP6`=|akvb3o3J@*WOI98$i51G0yd!TA|T3fsLLkVmAvj{}m4l&|7| zj3Z@mcm_x-Qoe=*a*LF&<$weu<q`*E87c4QfK(&p>o_3aNcnmWW-pX);DF2{<r_I5 z{Yd#H4#+`LX6+7;Td}=`gT}BuzyT>q$_F_J>mPO=KqYJsb5Jd|pW>iyY;WVBPHc~G z&?;=%Zv)hW?VTJni0xe*)Qj!i9FWAMd=Cd<zr)%WpeAgOazIX#@@F|9u}S$}4yKFB z_i->=pnN|EWAx<*I3U?c`4|VYDasFWK-!b?LmW(Zl^^DS1|a3naX=T4^5;3A6-fCD z9MBJ>{0IlLddiP-KxdHhV;s;Pr2IGs^av?G!2yjz%1?4Yw~+Ev9MCePe4GRNhLpd^ z0nJ0oPjf&Akun=|0JIS)Kf?jNM9R-{Ktqx82@dEgQvNarv=%8p#{vCC%3tAtCL`tN zIiS->`2`MWH&T9)gM_gCCk|*lQvNCjbRQ{yjRRVclwab2J|tx}MgeF>Qf6ZmfQ}^P zuX8|KlJYk=pf^eRn;g)fr2H}mbSWwSGY8`y<!^C7zmoE|IiP7t`4tZ6TvGlH2edCK z{|g87Fe$&v0gX(`-{pXACgmS+KueSI>m1P6r2Ga4G&d>#D+hEqDgTfI+MJaCjRSg} zlz+ql4NuB%azNLU@>?9x`lS3e2lPKF|Cj?zfRz881Dt@Af5HKFK*~Sm08b$0pK*XO zkn$-Ga0gQUIR{t-DZj%3K0(UA-~h8A<zI4uW03N%IKVbY`PUra9i;pl4zdp0cR9dC zNclYuuo6=K4-W7XQvNLmm<lQXjsu*9l;7t7dm-iDbAY3ea+w2+hLkHD;5MZE2M(|t zQvQGge20`zbAb7f@*g?Cfk^p74zM9o{!b3@B2xYn2N)75|Cs|^iImT9fHjfwM;zc! zr2H2SFey_0D+f3gDgTWF?245C&H<i9%3~bldTjrTL#fwU>;qt7q&&_6K1Rwi2bdWt zf6M`n23o`cwni$H1H6q?1P(AbQV}`8<w!-v0aiyUY7X!_QqgdL>5+<-1DuaksyM*@ zNJYm19!M&B4lqJeF>rtzl8TW7ERj@99N>$jV&(vIBozw>I3%f9Ilv}K#l`_%Nh)>@ zFicW$aFEYo>*N6IBo!A2_$R5jIlx3o#lrzkN-EVHV5g+w<p5756(0u}E2;Q7z+FkD zh65~?R015}v!oK_0J9|(i31#$R6-nJyQC840PiK02nQH2sYE%zg-NBB1FV=-VjSSd zq!Q-<Qzn%J2RJjS)NzoPv90F-k0zA{4lrs`Y2*O6CY2-yST?DoIKa0_rHKQ~n^c-P zz`;qSg#&DyR9ZQ}%Sk280ftU084hrDQfcD=YbTW~2lzXw<T$|ONhQw#PERWB9ANjP z(!l|qPb!@pVEm-g#R2Y5D%~8g0!XEY1NH!^6gbGQuq|@HMj(}54p<AMGK~Xv1F7_J zz=9x^eh%0Yq%yz(tAbRfbHKhJl^GncG)QG82b)}#SsbuFNM$w$>=06!!vTwgROWKP zHX)UH9I#SIWj+V&6;fHi0n3F{2038Ekjf$sSTm%um;-hVsVw1ug+nS!IbiFM$}$cj zV>`rwX-_K4IVe6<hB=t$va*7Ms<2(jLD{@t#X)u0uI8Y6Y}as51GXa^)QIg`4r;-6 z9S5~yyPkvEu-(8x9oTN<plptA;$Xhz%4QDg!*&Y?Wpi#T2aRI8jf2)=dl3hXW4oP$ zCa~SXLF=&H$wBL}y_kbGV0#G%O=5c~2W4|&7YAi?VmAkE#`ZD}+Jf!n9JCeNJsdQH z?G+r9&4VjBD4Pd+IVhV4`#30@2Ul@0zkcOv4%&(BH5`<U{cAZW8{;Jo%EtJ94$8*( zbsUt9@#{G#8{;={P&USI<bd5uDmQV!f+dxkIbh3@$}JqQYDwh)2kcu?ImkiSZ{5lP zo0n7$alrZ|mBSpcgGuF69I%K<<u(q&e)o0`SjnXFX%5)Sq;iA<mNTi`!2uhZRPN+} zHBBmaalo!7mAg4$VUx-|9I&-X<ue?xx=H0I2kdWB`78%vzj-eQY;sb$kAwM@D))21 zPA8QIIAF1p$}tYu?xgY{2dsEfd5D92fGztDpdoBO#{nCkR6frEYoAoUzyZ6TR371g z2Y^&q9{}V#*s?wVm=~b(I0yU#q{8|GfTw^|SbqS7jgzN1;5{If;~elKkjfW1m`4GB z-=cQ-HCEGW=}~%u{(%05{!K6owL(F-QuvEFDBdXk0?xDn)i2aUeYN_G<~8l(RpzSN zs>`Zwt$L{H#i}=|KGbP+PF=fhi|!uXFZ8SRcj^CNNE&7so;KQzml*FczGfn(Ueh+y z{iY|)IrF0yjb*3hQOox%?^*t0t+KkUP1b^Sll2cajqO_7UAAA@tL<s~Hv5hC$L%lK z#~iheLC0N=C!Gc79_QzrvMc18<J#qV$n~=8x9*^OvHNQGare(WRi1s-LUnibjn%*P zws{}*seFCDV}7@Pi~pq>q2`jBdum>*DF^lijs;#0{3h5Qye#;n6p?-ystsKd8VlbQ zDMW6Jc1GW-y+4+WT^2hK`(f;F@k0E`csWs%*q-=dou+Q2?xlKj{p$KV>fdiT-teo& z#f>i~Rmm;M<H@&DeW{Vu{-&m;IZc-}9dC9wzt&RQva;ns%hN4CZq>K$Z@stmOu9C` zJ$)kmr%W=lA#+dWdu{f%zP2A`>vGB5&fJsv>imuQ-?rDaZ)*QR`>#6O9qT$i*D>1h zhfZtfJ)J-4+S&D!?!N95J+(cXdT#6aL&03ADSTMmS-hvWrgv9wdD`%_=laZjeSQ1; ze$zj%|M~vY1Jwha16L2cHt?tE4b!(x|IrNhjMXzv&m5Wg^I3JXo|*OG?DXu1W|!w| zpY!QCC+2=@9+_7&Z`Qoy^WK=Rn!jLyYC+S2T?@Xt;8zQs3%eIyJ=i<AfAIN5WYM=4 zonE|u@#vDaCF_<vv^27G-O}SrKU~(n?C`SZhg3t!p^>4hhkm}id-<P++lFTh4-ao2 zzIOPxE1FguSn<+I>&kmqmRE&VZCdrpYU}C^t8ZQX^y)vX39b3UnpZ}SjeNMaz%1yG zKNjDIpF09eXD(x_v@H=wz*R^xJd+!A%Sy4fa3)43u|XLI=+jo_4AK3h;_()bSl z%v6lG6=*(}4hl}Q5NV>cEt_bf%6YgV(bgnH%mOP=`KQsEDaywWW!v)jKFyB0oEq`{ zf&Sfl<PZ1k?jLArT0*H^FKShVBS()E8tI~@7TGv`S|LwWx=2&LKblz^i#YY_{0;Az z{7ES=qdV#MHTCrOG|^Y6rM)f~wVK?v2(9fKTDQEnR;RNX{U%#9nCP(3o^YhQbK{oN zTQ+uf_tB3IUa`AxV4!dJ6$f{1-Y|nwvsO^68j{I|5S_VUv;30F6|b_;P**Zyk4K|T z{$Qe>z99{CC(Zcf?irm;K3__HlTxvHanNnmo8A8Ww3g+)vDmcbE#W}e>+zZOR!?wI zvmo{?7#!ZqewO|ImCGMy9t}9WpB9h9Mu()JZZu6iQ4pI1z9ZywK|!mIupUv`FU?v^ z=_T>FFm2CFYRs?7()M+iZ|>CuL%PAMXS8oy*ht5poj<KNmPo{Ur`^|AjN`A^C)_c! zv``ZYYI@dPwxL^{8R;+x(=VGwY2(6e?GiiVz6-8lw+2a!``dy0GvI?OY>V2$*|05R z6L-jm3i2Vkw;*JSY+Iyz<wI;t;r!z`-vp0{n`s0Z*19|yn<t#NW%5}qE_YE|*d~Tu zVe#<Uw<P=tCnPB}GTthj9$zHvF0tao<Drw%_#g0{Q#yI9R2qMSo{^3CnaO)PB0Rx# zgTtduWb+<vIFa|bw2A!afz-*9sRP39gKT?{zIZS>nmn02Z~$+kNeKSQ>o<rym><Xi zr*eX#TJ$@#JxM!~@_11mr!UH{D*M81<9nF9ak3o}>>3?h)p?4F&`+EvCgfL>@@q*d z7Qo>quZb`pQw)x4Ek&KFN6652`Lz@k$M*=g%V(1}<CpN;$`6D6@au#Jh12Y}s5Xk4 zp~3UQgU6D`8n+g=(jOc<mfS*D%a3lIIQMJ93FTbg60Wd^9zAv}wN*KV&V8`)!6YvG z#JNgqp$-Y5h7~72N>^_cPF#5I<UQmwXl1mKmUiGCSYg6q_5;dA6ZM>EPaWL%9*X;= z;)cn_C{pngb!MJpjFX)hCoXuTLTDc`o5@DAYFEZ3YJx&0oGu77Z_8ucX!Bu@xarTu zqWoIn&sBo0#wP5x;!W<?madZTxPBcyvHm{#ld%G&g}=(R=1`5*S`(sgm=I-<|62a9 z(UbTo<@eaQ?19H-8QK+6O&ew63Sz2>X3@%+SUpscNNhKw(JHe}5mo`})M_j=oQOBm zbS6h}bJ?gfC{U-FHbHTxgH%lEEivhoBbI9Q_)HGRDJgDLS9whio3CL;bJplJX^qC_ zdPhX(s8X4{!m!t16g&p2{FdHp*Ozp5FMT;Pv}Gtm)5`m3v2jOZbyKZFr?=aisvCEt zz4hV4bJLRF<85?09BDz&>FUi%PjmKAyt$@*`t<Njiy(hTZ+Dr^F1udXotZ2vGc-~E zi^ON)=ZiD`M&ms+*CZt3W<l$6TBs+3>ac2M@@h>ap3S(mF{M3n`2zI>MVutjusBdn z>la+q)nD3>rPZ<EDMz%awK?KE6_j7Jx5Y}-AwS`%Nyh6ox3w%OhG>mv{BgQu_PkQp zt`+TCZNrMI`VP;VbxA{YQ`CV=s~d(KF`v(|W5(j4!`b!G+OS5Gn!TcB|MEqkdP<)O ze-u;jox7P&GG>Fyfuhg`Dc+-^E0fM;+oB0&6K|xn<44=JXHsoFyS5&_t!w)JPha2O zUnuS$6?QLMoa}d)7v`6)qqV>8%I@yVHMKRfA%PjD$g3Uj>w3^O5wuPNe2i)4AEaRm z0#9Kr#-JyYhx}rnY?xg*Zp(+&Q4Cfff%h1;TIG`~Djt@fa@W_p<R>MG&H>$^b3$^X z!3mMl*i7${Uvuk{v{5#m<bT5MQT`|H(ACxHr12wCE++}Q$L}}jgiQ1JS)ESsCQHSW z#Zmk#;2&<8>x~q~a}|p$C^xCYd=V2-tt~8?#@~=~2(t<K;=4`n(ld~zXWw#BN&dA< zOpeFSo@I$M>T`8B!ISMr3)iEhXf^?XjZ&Dvj-g6wmo|%1T?tH1Oi-H#(mbEVPaXbQ zNPbN^B}rm3H2(V77(Fv4oeYi97fbT1W74QJCY&CTq!CFrq8-kR6bmi4NuiK*BsE$n zjL~UF+>+${wEV3Joxx;5Jv^%$nP&}=z03qHfF8`UfmjflM6(#A9+%VYaWx4!s)=G0 zB%<kPE2u;djR0-AE}C|;+3Ij=u`LK}a+?LW2UH_o5HN5OW}I2TSuR@Jw7q@H@@45v z;j%fRzhhz0Giyg_|JHs-XnwoJvgsDzFfHjosr#vDQDG<M>+!{Oi)!rQS|J*0ymIeQ zAeyoVRMR$ZDr}*(Z7~LMyA;Z#mkw`U_~{)!QS`@kp^L7+Vdo4_&76y`yLNL(=cqM_ zwU58~&*N|D9yHmhN~JSBXgBWn#bUnwMjdTQHw2>^Y00Xk;bb^8y!Xm_b!{-YeTfuV zo~1Y`gY%}!Gc7bT(}Q7;4NB1FfohFGtdF2m(C1PCI@QjAAuw)-Iz9a}sL?Y8n66wV zK8AMB!+KnTR?oII(TJG_Xf&bqFbXJ9HpZE#^yEF91bXt2ltl_*oyX*BruhU^I_Mun zU;v?Z%ulVt0U5h1QsK$gW$Tx<wrz`TrXfmiIA~1@SI73K>bG6CrCzl+cCC=I(pzt& zG$d?{ZIh2id#3k9*9tXm*X&j6SIu_0YXsq6Yg?DK;#G@6#GzGoyVxcS&lInTU7>1j zOE;<Z#rBJ{RtjyR-M(f>+z{JZ8|{wbRht#(ES=royEdI(+uJ{T=^RuTo)2ZdA4i)x zFyq;%k0LhFh*&}f?a+l-Og~29T;{*WT!^~Dz{G42G5NDh?N3a054H}>5VmEL-+`^? zfA}ooxOjL?Q8pGZDbP7Z-Yw{wBZY~-Qt|v>Y4RYp=Z=dz*a;HvN6@8Ap(ww~Btn6< z^UVv&2A}y34o~(o(|rT5d|}Tco~|{kpvo|B&`oi4Cj>tul}$o4g6`95JkFpRv>d`8 z3^d;)D(8wCc0N0eaeKzzSpYuA?Ep+Iw}qNTR}iBhh^tU2CUH=O0l^qQh!*H$#zjS| zJ!Ug|oi?Yp>R=*fGU%vD?=m=yHFk@=KIN?o_+owyxKjI~wL329$mK(lFInfUp@QCB zZT1@t=K5-13*`6qWsP%cd{&D_?Y7kFEgG*$@)@kO%BpiaOw?lfy}34K4LBV-yFu%z zk*Y0vhs_*$Q2xd1AQGS{pVv~Y*6y*J1>KGDdW*%RF<1=_gD2>y3)md4n7_ssPx+)! z+ohN6ShuLtW~Ef4@yES^I%~MbZ}J!nX8C;$>;<c@b6IkvttH#s>h(H9)~McQ@Ji-t zjiJh+xBDcUGiv_5*+Q#K9+%E!^+*Aa*353kBm6~v2YvTCi-1qzC^~pv;5z}A0@sda zX~F|xh*lLnXi4-=f{~WVZorPxNjVQp1sGCpv&y5G3e0RPi20ldwa(`1xhtX(a2ZTe zi~vSn(1nRMr8JC-2)<#~87l$8R<YQG0FAssJBsozl5f-n^d`T#+HIh;#+yj`rBFWC znd@lFj?^cDHLQ({KBvtesH<*jh*)c=$>FwJsLo)DB@R}39S(=rY_kXJ!a<k5N~bpk zEJl-2Yq0Aa`f4dwYyQ2-!Y<K)YT69O8mrN#vFK~f9<|0|_4(&EF5BJ=YjQS?VBo(Y zzmxo2jowgg@&`iJx_~$4*J`QNUK6aVTbIprW;@&Rv9?B+!xx~`pQyJ4>g-ar({49t zOcqOh{6?K%M)zyA@>>SC<kXwBMw7`BFdB4KCLIQ($%0;sCIUXY!Cqz1_>Am3JJm-m z5r@~?+?s94tW7TK^jV>Rx!v;sxQZ4`BEvjYpj2X1%;X&qqD3)7U72iK9McPyoYtjG z4Z)=~i=bWLFZl%Kiwkr#8fg;RKtJhQ?E~NI{q8{a3UTp^iv>{>=-;~g`|Qq0*r4|o zBesCcusfWRES6v@5btu_Z1b+R)Fj+CpF^+J8|ZU)3+C}Z-AzNfU;a|3v&$EE{&`@w zN@G@QdtB9ePp!|Ya)uh4Fw&#pi#4Jt?ny{Cz0KqI>R_!*aQXw{G!{?S(S(?HQ1QU{ zAJhMqd5Qj2tR6oi(uP|3uL9iQRf<e~3igx+mX2Am`vQmqH$p2h<0TK`=u-Zv@y>u& zNob*Bly5x~pUTN;$>eZywPNQnTW<>fn!FTWB`@ZuJitE*KkRF47*5)YB}m9pfv&hD zIoz0(r==Q)lk(fRpfNd7j|Sl;UJnnZeV+cAS`+fm6Y@K8dO6#D2l{TZ&caRTL#57I zSZtp2C(yshe@xI?_Bwa&39*6Y7=U=eB1}->O63$3jeMplKVqG1&lK!5<@^M!PA#P$ z$sbM>DStTi;>q)8i?f;Ct)m|N1bRV-i@q+un}?<i<mGpjH}>(2a_oXHaF3H5F$Kwj zUv(%(w=E1h3@rpsm>NF<mian8Gg%*T2lk;PDU_bLV|)>40@TNZT-t$lVdX%BPL>qQ zF!AKdurkvHc@C`MLk0R`5yrZ3V*GU>gP(b!Sdixyh0Nq{2&aWVGM_O`E8+!Y0n#R- zXcRW=p;73WNT_#>U8l2+^o9nMUAr~hQPV4&*4fweO4Iqb*bNQz*0e{g_Q`uh*{6}W z!7{x_EM1_S%{YTJ4>JvJDb7+7^vuBJ{r#8U%HDpLoI5->sk}WhHgODJj3p-yCg)y1 zQGcdCU9eO!s&Vg-i%hNI&LM~un=wPdOQBiKq8h?f5xw*b^YwIfP57FW9XLsv8U<_q z)+0A>$O@;M8pl86`{MCQpVava<hgyNj9_g}X?rfZWfu0wKji!8xchPRNC$F8=Cb?& zZmNKphqD=wwaEs6jS_|8HB+<%4rXELO@67-Mw^(D0dY>dov`~vzG=&aCwI7yMj<S3 z95HwGcSa(e{hi^_QmG~q#$KePyyIY(`3vT*u#lDyMLHsQovdN+5qb~bDmDnCK4<?t zd1(aY2&eBrsmcY)Wdj|NsNWyO7@E91+8&9tNBKLt`dr;p3iEX!(*-f97ziqusUlXG zYX(C&tY#Y*-h|!BO`Fo&x2HF4N^Tn8F77z{8HPy-^ESR^C+ygf-h=@=RyY+Zo>YeZ zgj|0ReP4}imS&a_5`zm2vOEED$Ojl}Uzkf78|(|X?V5x<)xuc<`IgDkNzX}wzBo$H z6hmu@kq%U`Z>1!if^iUa3HDHJz%0;{{l)&&RjGaQhU8Vrfx<v?zmP5+3l(@<7D6x! zg)ygJYnEyyo8S)H$G<#47sy}fPhNEuZP}L^ke{Oq22yAru8Vd+9vd(hLM$VPD(%8Z zd>*2lnF>)CvljAQf``pt516gsPp%kF4&${Vxq{7OMm#ZhAzH_ZC3()6JeR&e|Cn5X zulafOvjxn0Mo-adMHqgg@?88rWt}9dMKzOM^jxoKJ@m|b$@eB-^tH)79GZ|-C&V_z z79k*xjD9fQ7|j+0v~wZ~athj#fC^=YgGm2$MI(&1FxRuEfFo4#lX>7V6DneSz+db2 z*7^tH;e05R4|iy*=4@T%a%OCHsT0jtyP!pqnukJ(>iEjerl!DkcWjftwYV^tI+%p_ zFyO0QzpmC7DAGvBw2lba@f>qoOS3^;?GCRQZY##4$vwLk7^)2Yvz%MyeT(T*`I$j@ z8Cli2++}s?U>RIf>e7hG_kUL#Fm9zXqT+B%!1Z=PWv;#Uf2_{2W2jDxsn$DxwNjlC z)Fyc#dGP;9ZL&uSbvYZa&8v&$FVRJV$%6-{)}@9;xTe%4nstRg(fncNKl+D#mARk} za_ST9K1^R^9-(k&<RA3X`P--T!e+moxsV`3V7Fe-J8bx|ju7uvbUE{Gz>lgpio@7= z@=UQOX#BCqk|$5n-z3>~{8&3}Zx=rG*kh^D<Y-FS$S>CjyKAP*ClMtn(uNV5|8X8= znC}?g$bUS6UM#XN{=u}F7&lDMI5BGpRjA@8o&L7-y5|$>MTsfwRs0#5^s?puNS~a2 zOE}HG`vG%$Ownt0c)k+Q>v?$4;R%Ir%LB6m)|y9+#>(Vva0%Hwc^rbIb0x-#v$8N^ zh0{`Dd~igfhxV|K%*`|QGy1}aG>gWID`vWn!Rr$W$-jf(2>oo28z;8o<7-l3Y)nee znjBll6*=WZec5khTps3V6X9WlgoP(di4YvieuX|6D$3j42SUe$)8Y<k{B`M=`#DL- zjDMg%uq&i+n2Fc}_yyxB%(hpU46M#D4M#LCo5l^daxQCYqKY-X<D3O<_tnyvPdM#^ z2j}flNjL$ahfX{b^T~64wY5I_qBjO=gCV8JHsQnsPr@jm9W3qvriA5w%9z_No<RR4 zU;}g`XK)y;3R<IZ9fj&BOeddn1ZjrR9hhYZ^}sJhJzB(mV2-h!0^<?X9n&&z3Zwz7 z?<kL;X(8_5&HD4|i+8NsaE(UW-11MCY+twWYOSWJ<+_FqnKgq8Qq42>KYZU+1;ax6 z<<vootz&wtx~^a9G<Yp)x7VVf?q-YB)ToPoDOQ&pEQF<|s6DdevTHlU%{{D`uU=U6 z`0F)6+MHT2xMtCj4N}9lqYr<I{vdf!>aWwZPH(qcF4dw`v)bjmt2t5MooVX5cVNCH z49SE2?A80$whGYB6Jw3}D}B(S187K)q&R#Ha27;uO7o<_{fdah<YVWD_<4E-mUxbD zHB%cnojaEoQ_E(|K0bTKGOQ^ObwhpAADZ4bq!THXUz=HIi%3$Wt?=o|9Xd@=1;d%H zPj_X)L6y*PU0>gI9ipjmrpxVi&1}?;zwM3{Y<9b?5OWKS+SM@6T@m;+tX7N18F6{c zw(-lV;1@7kEM}L(Rz=?qhXf%Mo{$fZVI0ShshVY3z7+igHO0JWU<dG^F{uOAm17DR z!BZCM09k<(GTN3y02QYvvKcRyL}X(yC0@&$mhN0?$|q;(iba)aFge{jYjBo#dUDXD zDi-v!#t`SqKdPRQPR~$}2`TvqRm&y%LcXo9uZ>+)D2l<rqU7{YZEa|Ja#281^%Qio zlKDg;Kh`=^rJC6~f|VBS^40SAynmwRmnS*HFAxjnb?E*7S_j-cs$h#li2R?bp)UNl zYHXF4(GBCj2}D}xi}?&{(w>^BD;88z&D5HxyNkM+DWxXqnQHaS^cq@hlRupEE4p01 z(y6D9O{^^y{w(}iu>}GwYZ)8?)J%Za7!wbkWbC{1tYZLrQTu_b=IFY2-@JEjRmZ0I znk8+Th6Sq@Wi*L*nPXmfC9dn*g;T1!cHO*Be$}U~Td-zHT2(i1)#5kdd*fq!!uGJT zJZ<JfJ;$*faGK|Vsa8kF*chDS=gkfIwc-TfRJem6!;azX3HmCWXCXk)fQ#i{-f;&F z-|@|FZ`knd^}=Zs@)Z6iWYV~D4MrX!p<!YCPWe~tWccLA#xVbQxy(Mo@>s~Euz_Y0 z%wvD~Z!d=kdqKYMdlTjGa|m^?Yh|NwS{|IdUQABdfW)B_vf$cZhvA!-zx&KH&(M!p zOjG{up=X|b7N<{ez?5=6!HhgZJLFg8*TfWiM}C!}pM^gOe?lMeHiOJ#f>6jM&?lG- zF5#6JYxjL~tGagIyzhnu_+wqQZ;p<Ao~P}cQ79>O<8h4V#OGk21>t#_&vK?|J}e0~ zivZtr0t&zu*J40w;qiiz;87!B4Bm_0*DzWD<1h|_oR35KVQR873J4H*Agj%A+q8+8 zu~GOnJvkcF2=g_qqS&gD|J6f#$G;s43-lXTsCD*{&qkh>e~H<rFBH@lOj&iI$R?jM zrI$I|+d`wdsCtaeUh!F0()d?2twL3}TIiAgt%}kXjr_zOLzR8a{n0PIl4o<ETP;nU z%|R6k#2jFAq{eA*H`gTO_oJ;NYtoq7XnW3mm|hj3lMvx@WNcA~jYea(V<RJ{gv^uj zn=tR~!n@-Edil#TLID#p>^8_}2e?Nk%W#Kx7+nl04Z&-n;MkDQY%hT=%k*HLe{OK0 zkzo5O5-!j3L|_&(Csq-vOd~GQIhG}sc?03;p{RcyHLv%Z%|f5S(fQAvj&wd9bIY%- zNvzqkCb2rP-XCx{md2NPJEg=7|N7^>?X7W_OF2{cTfmEA96EzwHv8Ahe_H2{hNcgC zl`mcHSUN91yDqW*iuLjJC}u`n>hdm&FLO9)jeq^H-WA6$Il8{p>0o1%&xL=T9Lp4~ zqa*-$M@Hz2BNJ{BxJKBylVdA|7SbucEm&BNY*?d3dxTwRBfP=ZWCnE;>=leDHg=gc zViwSVL8!FpI&ncDF6ZcoRVSZhhNo~}$FQ^G;+-{p*Z8uHhi{%`-*o%6fmX*t<Tps6 z(WoDp6~Ryej+)~5?Q?c-N+i-*|82ePvD~${Z*fka=4?FYPZ6&XceC{uh(rreBHADv zx(cU2*er@jT{g<BQZdl6<@(Yl-}30qPdt6={NBrtK6togr1{idY0EWNt%Ypr+cW47 zE$)sE?rN;v{=o3UJGQr(=N2y?YaYqXbcY9bv9{pjYTo&A1<joiZ8Q_JiSsb9#@~2? zram#S_%)xxHAcj686%tOiiuH$Scdad%}AQCTd|FmH|mxD(kZ`!Ip5t$_426v3hl;v z!84OSf=Gvh*7+8UKfAzB>pl_|$v>HpU%Sz9#!vjt1qDwjVqz?a?EYBqGEb)x?wz<H zL~{SZO$ha${N>4VQ2Pn_YNIg|9fJp~ktXH0&?o`A=bJBoi;q3=TJajRMI9SSY^*2& z6!0L(8)n{u=O9#)IPbASlU+QLdwAuBFJ|*qbcAXLd#BAEoZc7zvix7&^x*j>5pEcJ zxOdL*yoGD6=7C+|a4gm{(jy1Xx9Y_2>oL#uV910rN37zjkS^#LwDXz1$3`COJ98}D z33mlbfSGmAnf^!VO>*hc{xd&?*){Rae=9QzNq__pFdfI#&OTq}@cA;u;~(`sBJZa+ zKGOHmxNS<I7;oH;zGkwmkfY&(vkJ5dLMQ_vgd7dV6cM7!Px`YIy(?bx4;$+QRdvf( z{l96fbN9e}DHr%qOTy^|<If0-mC=5Bd>wOxPsoaQ!J#O!pQa;%xRLd+8tR1U8?eCy zv<cgFYn@uIevo*9<4gfHQzlI(RFD!o#dQc7Fkws85HZ}@q{aY6bPn}a=%ivn+(Dc7 zHypUB@w)38Z@IaF-q3z!!!E3#rFTEzXcIo&aI322iW~Mes}3~WCZrt?+>Pb6mpAO~ zZeM%Z+79`C+E6#JXnGyJPZ&QdglKhjWBt}$TN@gxz4V7-=(@&(H#b~&T?5|fyA3E; z+_>H461&8$i&S?s98zUFyK`z3tXi~5=oVeB9cxu6yP<tuJ6;Vax~^{EE|qHenx*q+ z<#Qc~=FOVFblqg%G9Be&nH~A8lGlc8B*pejKw*RVoEw~;vCd$1m0JGYWaN}?k&fN+ zU}|e&Yw}pJU_i*vfs6@B8vjO-zQ=6CW65pEw73{wPs*+1;6BU~;KHa!LIa=XS&USc z(&0enlz7eeLr9yDgmmcp&7di8k&m4`DZG5;EwF9pNK)yFAl)o~2Ik(Y+ryWh>u**E z6XsF~t3VYG36I0)Gl-ERQ^Xc+rcn!xdLkO9JDqEbtI?h3rbT`#QxqQjKndAPA7tI5 zZrLTAKIP7SA?rRhVzS$Pb~`nmAH0#wP+G|o$_$CA$=lBAbmRBZGrC+(S8(70pMyIa zmHA&}$wmAc+&h=c%pRM_AD|QY0}j?2&|+98&y07Y1mB)K7YTS%+_y^1da?|b8_3Fl zG?~mnU}YdVhVknRGj&GbDPTeC0-^$g$QT?Q#p_%?!gyMEwsf+1@+8Y^;rGRSAgoLl zYnXChYDABt*$Xlo=ow@SUU+XMb_7LzqO9ukWw9KI3na#rBIQF!o0@2<b5+L8qt0(k zG&q`ZqHI=o5%+1qm|`)LDfcSumR~zHwcbdRM2h4@4hF09C+-hXjHz`+AEe;moN{O5 z_R=UL*{tPQ+9Y$NgPqSE9UD72;d?j^PQ&|?XEwm2!*3}Mj>CE)HhG8GXP-+F?ZD`M zRVu<v7(+h#IS<X)m}m+q14{xaDHJEh*!Tyf60;{1KZuwYuV8CP9SYBYL=Fmw+j}U4 zlA_9(pw6C>PCeAsaQU8PQm9crnWEG42m(7UnLBIN+<a2paY`z7Hio37d-gQQqbWL& zpF3;zoJ)}3=FB%<H?<FSilsmhz|)GJSRTPSW=m6#*tKf>tp4s{#Nh?i*$+lm<u0XX zE)|cDpEb)L58tg9RIA2UpIj-iqf^UcvH)WO3ZHwolnhlRaS_pzd^Ri|56TTe`ISK6 zp@48j@a&tgmd4*$8>BA?izVt02IZ=N{2##}UCA6k$ao5@JvZidBHmSn@_lF<7FA)< z6*as&2(v(zJ2iY~jOFrVVlcmI+iF?%Q2WGzGf4AkLz)kBN3o=$b35nd=5dTV_*K|U zg>A|D5=;z^e4e0^Rl0dhnP-KQNC9FQwZKs(Uxd@j1U&mZ9fptVMY!)n<BK4JC&uH0 z$Px6z3*V2nQKJ7!{)Xawfp%&_J^?zK`Lx(SmN$TZU@Z6toy4?~IH~MlM+v@JGx~BR zzqh5O*f)Fr%(=b&8#}a~*8Sag?I>j1>+2jYbw0EH`eOIA^p0AmDEK>eweL3_O&*<m ziO1E^Q1;+g=gb@^bjIt<7K5QSap`UMPd~P}K7RIXODK}bbrg&9KAl;wQ(LUH3vMVD z`ns;37Ix5w9!ws4u<_WjMkLOndJ{Iz^O&<)B?oi`Y8Zv~g^z|AFP=;sL56s<06pAH zvqcy>9>{PB<4lXZCJFg19_F;MFw;;2j}1#JV_UfF&bb#n5Cg)z6TurwL!bTZQ0a!? zjp1syT@bV_rM9Kcd+u>AZ7a0|<^=F@i6dsvudMaoJ5;)UZ(^D$=u^j=!lK_}H#VfK zGfJr|E}ds@T(f)U97nu{wu{Hvi4rf`A6;qC#~e$h6n4)&%15mr*xl9P8>Q<@L!VF8 z8topx7;cKIeL?Gjm7UKfT=lE3xOBFye&uC5Hx`Q%oMn>VOyuG+?>1wF|7Q<(saW`* zecUBx?;}6yA33_YpOmdT;Ch4SU@?nbQJpNh%+f0%rIpVVpP6}(0Z=0CK%uYVr#sFL z6=^$r6~`B`>~r`P7;prRhU1fGF=sr2+<RI2Fni%lb^><chL{)=Oo!Xxvt`dIBk;R> zIJ0!a_GiOe4G$f5;k-j$3>>$L8xKKw4U#nwdr(8zH8Y`yY$v$C&fLB=z3k%6!*H<| zyE`^+8GmzAOIsn;cqrC7)E4Wl9&H@A)6fg?7_>Q(YV<wzMU%10);5$Dcg#(8w81~W zS&17LMmp|VF#W3LQuDOzP^+){*`)BS{Dr5yV9E8fI^rGbb`_;4la1|3y_td@u4QZC z9aEN8M3q`7;RIAeA(Whf<j;Ajz(a~%xY-Z4Z0zVRB1SO$JywCy)}d{TG;AAcMIe$J z0=VnF``Br$a{H8evhz2i0?LWFqw_pv>b)ID?7W+;K|>-FQVg?5KZa8q4pL;GL6|g& zAiFG+8uZvKBoIsD>qc0bwJi#37Pb=fSl9)3X_o$^ac0J!r}614H?ACr<C!ou-t2OR z<TeD`W-OSIHN(;E4%|=!{{oDE#g7nA3o9>qG=ItR`Qz`H{bqWZt$ptDl;7XFav%|# zz9QrIr<TX&M@-TBl&5ZbHW<uCIt!lqh}H$~LOQOLla9NDT6xZ+kLH&zr?WN)YV~82 z`7ewMFdMQO8Zm($=pwzSsYI2mOe70q6erY9p0OO!c-qp=2(!+!S{J;7B9q|AbA@?u z;VHsrUPngoAQEWbm3xpWEI&Tf(6lt!l<Vtz_1@Nt+R{t!O=q^XP8(`$TAE@<#m~Rt z8UMm0PZlyK$FG{!b4_2*@+V^r-*+_{j>-=;95pn$zQ16fa(w8?b25P4zY+c)pW-n+ zcjwxS;y{C6Lxi#D@)Qv=hKQVUXXa4^eudqqq`zL4y!F=PzT}}p$;+nP$k<7Y_%qTe zx&E@$q2#T}_kdfIm$9*dyc7&x#`kRSoYuhmTn`?N+-pY|q{5ZSHVaBvD2r7EQ8g#+ zHiV!cw=pCjnxkQ?{(#r1EzSsbiSCt774@&X<sjngqx40@_m=bg<4|!+a`r9BdaB8+ z+bsW}@X$3#(g#Uq6r^y-^M-CBTlVCrBp*V1@0G?j&AFxiX8EJ^x;4dPrx*kGfuzAn zpxiU-Z!_-N3!h^HBnON3z*EW-#@R4cZeN@As1epeNGl<-Koq0JStW}dS$rVK={D#N zXwgOp7<Ue?qnumo##hKEXX71bh#OFw0BAUBRu~%{zZ4b<mdhYb92C>&Z0w8HI;$gA zYvku<Gfk)a`ke8_PH!!xHmoS1Jq<hidW1JoJNYTv&T5LZ^K&(X7^EGeg_EIRjorSw zv-3K0t+Oe0lA7FmX|&o0pJ9B~$w)KmI}uxhoD?xS8rc&z92mXG0}ms+OOew&aL7I( zRXhx<$E9X9EV672q#K~}T9(KPJ?i(-&ES@ckQ)xSLk;^>l%Mqb-lNy}-usTv4_W@? zw4b1Q$9xE+7K0&cvl3lAhIpT3Z9)j}8f){(mgbX9*5c?G?Z6H4`}-p9Pmlbw8f7gN zzb&RoXx4#%BGgJaj~jz_%X^^Q*(i>hMNbrBCy!N_PllwkZ{m(R-1O^IzB22Ue@B;t z6U*B@S@{e#W*=MDeE3Lmc&NHDY^OzE>$F;CdmT|aL^r;2gbwF)EEd?K&yMCk8fyGh z@^ES?b%q-~(P^2W;?CgyL^gK#cn`5>o+wfR-EG4hLxdG~j5#Mx40e`u%w#0H*=$Cc zb*Dy8VT__B-^I)uk>}!`UqB18#aPA1QjcHqwTZb`V3Tf)dP8F;<<~;|Jb63aJ92W@ z<Eh7(xdj%9KV^Lv%iQ~9CiHAJ4?Q*u7h){U85|SQHzbcJv=jbv8?*2*PZPMsJO*rb z%C-wG8+9H;0<t7yJBDGa%d++wL;inOR|-i5yh?>4h{So&>vN-7eE~)e7E0vgVJ6C? z()bbjsjP>3j!76n$Hwir1lQmlLyEu6%2A{I5jt%fJvylmxlFcTL`=*}HW68avIv7m zTrrwNR2K`_3I#BP4)A5+=O-OV%x1@szjk^IR_Wx}`V9CAdpewlSv-hUPb7sa(Q!`{ zg~EWqA`w=$@KY3vMGo|@-QUiSZroUsjiU&9!=un~QhXoZjNjJX{f%z=*Nq!tSnie& zbQdAoC;VNEi)gt;sd%NcicNxXAs&a30oJm&MB9<hzhj&HW48W^Hf)3W0Ww1yES8Bf z`Y^uQSnN5L$SH}voSkctn#7iHvVTbW<vZ|E3tHx@2YZJj3dWU&v3M=>uf-7>0kerG zV92o|T=*)E%Y?3QjUgI{Yn!UHc0(xIcTu}Y)fyy1OG!KOZEY^K+LoL?>~nfdISTJe zEVOS<DW?ib4G~kK$8Isz*ozT&LvTQQK)Wztrm9@4WOa@dTWZ$?s;AZVwl}3}QZ1$> zSM^(*u3#`8t&iC~)sb*rZ9}BK^|nVBxogzOZNGZuz_6Zv#oM?z7+9A!x5qoKYzqd| zjVu3U&Yr_n{qyQVwCkeKoH;8mV#A#K6ZfHQH0ViKek`3b6XP3kAI5@wC`oT;ugP7p zlw#8=C138I+?g!r=E-s#EIAWqDc=+u!7ukF<tvl&?sL0>FUjn$B)#M8-zWDb%c&NZ zPTUVn5t>0+9#)!A`P<(U)QH#kZ$6e2@@c%pC4c){oJpc_JVG%+?eb|R_dXuSQ+anl zdj`2&X5tubL`C3*-5$lI2B~~b@}09)94vr?tSlz^0ulMj920oG8j}o(1|gWZK=e(G zk$(L%=^GX&kPwRG4!30m6MEqw(@MJM6w&wd3j(I6UyXffTFcPnoctl~)uiO55oCHe zkVcnaGFfYLFiqmZZNpurh7SsgV?=m1_*ihJBp=1SA#sEnb8c9zzjbFn2o{9B<9Ba+ z&z+^)OCI`S;#erln38a3PFK=p-7kNhw(D{ey!gCcz|2*COc4Z3C*fBTtf{i>*WvFU zh6H&PGAAYVg0y(uIeHihz|9o^)>Vor<!2!Ccgv;`x>uJg=$XL6_?py_$KlazhyRx` z-2^IwHnvcgvW7;Ys21E7MVeJs&Llj{SavDSVXV1<b*V%j^O*}g=h{hnBXme}Lye`5 z#ipZ29gEVXw0EwA_eJ(Qjye`+O4ZU$rR7JDE-&3AJsY~IG<@{v;?m9DXX59Xd#Ogr zqZHo8^^4P`B#OiJiygRrN^!qFx~O!McS;e@Dh11P&hz?pJR@@ocVz2l2Jz%4go<bs zvL&ks9_Ac~EA9csQNUK0D484<>V!Exv95-BV6(6Su%v`ZoymVn8VD0hFj~$ZWA*{$ zlZU0>VkuyhT`bPq1XIXp(mTx>EVOiBv3EyfvK?DfO^wN=(`r;|QBZ9{ubr0Uxy&RS z#RY;|P-#>;wMnJZcr|)m$c`18g(|ht9zwpqS7WegRR)y?`6Mbq{Q|RSX@_vy<}!NY zSgN8H)JBvcR#~S_vuZ?@Lv6Qc%~dwN*XXjb1SKUq37J7Aqe*KQt)fP((&G1!t3p)< zzujQ7T5Sfq-=G}Psqs^8jZJGZB6E_hcAjWk#*H0_oz*MrlL&O|#FQ4Wf*za;X|4$u zg4q~FVT_*1h=D7i31E>Hf(BS^5YCQ{spVf|TEFXlUFVH4`T&h{ssIl!xNcF2$2{dI zVI3osOQ}Q67AWc7@H`xId!<uYrZ`rV#*p2`&P4ieB<1iHi}sLN`{L;6gd7w81pQde zo`eWD7w*fYtkq)-p7m#e#?kT2mS#&)*g_QygS_yJx3{*?wzO4DF3K1SeqT?l#v~0U zE^SUYOk%hrVzo$JNiX$z1mT1?q#hfq>Rx%#nqI@$n9AVIH*Q?}UY!ApgTgZk4H`k9 z)yd96hf5LjOfHUzUlzXzzkCuI0jroUoS=LNP9q15Wm@4r*ch@o-5Jqc5Mal{rvtAS z)E~>mVs~z1+#E3)w#FRxz2Fij*A(I``o>_xEw>~WUM_Vet5f}s*n$>3CZL+m$mbJZ zuIX>qI;?H&bq2TaU{e@(>R-MF=OnzrTw>3{B)f2r)RC-qd+S^(lQo;KHyDiB(ZR-B zlDDK5Rwp|ox=P=-W;jbxv#wD4kU@SDc9+VbZSJqBb{Xp0+vF{}a2=Yf*51Enx!<Ot zs}lLaB(6^mdXk;e__IPys@3Ij<6K`LbWTQHBK{t^sWb2_y7fwbDH9Znfmuf}vs?>z z0H&BtgJwWL89oj)O(LuK_gH+niK?*=Bb{ZViEx4-XB7c&xL{f5qmMoC1d9cBXLgM^ z?c#wdiz(U0Y7uT;h<j}cdh2Q(xaF+T(j9M|*E78;J!?U4oO;K9@3Yx8E&YD1Fsf_U z*R-%|Vhxt5jsDo0YOd884E1@xE2uXM>ICb1lUY0c;%S1$zOXsmiLsJJ8|&nM*4S8M zvn1b8ur{qdIz1t265YY7<Um4d|Ax_XzH{hvA=XEFQ&(T3yv1hH1>HW@6S~?a3}*0k zjH9P9j>53%i)b%6kr@}#A_a{two(QPq}G%HC9)``nY96HPtl!0ZU7U8=f;+j==a|T z7n5`jScB|Lb}?P+OX{3b#^$3Y`{25TXt5LqS?$6WsVh}YXB$&KSKO~xX)qA1X7TRo z8eh^YSd<~>5*}&_yQ?Y94zp&c^9J*Y%O}QM^Fq5Z>e1S5tloyISW`-PKH(76@~fJt zFVP$hCbP5+m+5F>a`>e>LoMT{JwAJ=-c^GE?QypWW~)EdhP}yg=<bx1&RsL?n=%kn z3)_+bY5aR03|Y6aj`!VUtdu?X!U(Cs*I>e;#EKvu0K}36EgsAe&BM$WJq|3dr1>bg zLPiUG<MZ{uS426|PwC3x!*pHKmQ34MI*xQ4`N|bPm+#&F#qbM1T2{Ib_7IEah2$S! z^5FOzKc(AttXdb7UmK=-N9DUegxy=1h+{l1ev>^5P+7dHVe5vO(;n;Nk-(v7Beu>J z9fNMSK#(Cu4<3w;=T9_|FzT@=S-C>PM4Yl#lI@`PnfikBm~HaecpeAYLS)9iGwdKl zA>4*JoFVS)nBTSCVe#6qKGHEW*%_?OYW0H7<E(A)+<M5pJg%b#ZA~B&>`2YF*sP-6 zYwt|f2JJr4R%J4&RBAzV8aytOOXIS5kVL1h-rhafq0^WhTB}!TX#LdTmWGhmrga2F z)4-~u^SkWf+yhvPXL_Kz$(GhRyy>oWv%4gJXN^i{4vLY8m<@D!CI5`*+Rn7kscW@2 zdLBj~(zM)Y)cdUw(OG2_)l~+)(Fn3{@M;4lho;J4Nj11T7u>aKpl(sbqM`<~6pe;0 zMyj$bhWMFi@83iIY{Licl5{e4?q+MemFAmhK(r#7hChCWwO($b@z`Q-Jc@?3sN$wo zIw<48+Eeya07a7FD|De7ne>cPB;xeXx9-6sUQ!JYthec^;vv5q(_Ev{oApLr0FPyG zJ1hoWuvLnv{9CfK+O$-}dOx$Hx+a{S*VPvaR6EQDofmA-9}VOir&)A*n{Ctm%LMkg z8a%Y7Z}*;CcWfBBJtF9|h9R9wH0sR;qu%GhkKkDk)T}p~(rVFC=QpOhZ(7jd^fWe5 zQDrc>Ef%-Qpb}}JPpp{{TiM>?wO1M4-q2x#RSX~b=62<_C+wDQVvIV;t&^?x$-HnZ zg~;X+jbS1OaTyF<Gz_bJBeD?%aIhv3d#riTZpzSQjm}a}%}hA4FWFILktuU=v(<?3 zP$})FG%;&&=tU;_5Om$Xt*21v*|vRbaz~}AGE$?ZE*@&pgBH1*piCMOT3KcC`#gpX z8w}MxpGhS^FKE<=fw_$O=1{y2&%kgs)f&_$i(RJ{LDTeACViFKkO}JbPGgn0s()G_ z7;MikUiOV;i}UTlU|?GRD)Ac^{IqfpXJ0l}?Q|wgDzm9IoM;H-T?V7iXED<%qgm_6 zvKeC)HCuc>qrsIA)YpYuO=gw8#%!QIdzIO!6+}U!(rS!mtF8v=QvIk*pucZ;<=5xU zZN%T)d0$^S+}9sqPjZ1F!#J4}e$qJnU_FSG&4VUg&YrN!$K@whhN+<wAq3b8+$c-v z&cM%?!#?<{2m6RR#j)zP6<ju#H&a;JILyR^CyFkLLqbH|c@4A21;?c$t8?w`xz!`@ ztX-YU=X0yq($57q78>kNQq$ck(=px8MAd()sO24Pm8V^FICRE#_cVJ$VWU)SG95FC zzI$r-&+opjC-k+@DXC{csa8CGL22)x{QTcLm%A4Zk6JA)O||}FK?<n?J#aYo7DA^s z4hfVFZ5&?cUfx-3T9@kS_0^8eSZiI<KWEjdRU4LA*Up%<^WH}rRfDx6^hWbp*g#RU zfN%rz39*1^7Zzm1q6wCyIr-RvDBRz4?+pi%gC`qjHZ;s^l%xcR)X7CDT6m&JYm=jP z_-UALW~?wOTzNzCU}}&y%v?6Bp_p5cUz8jxI!-3p3H0r(ypCmWOxoDTkrSrm?=S<C z{S%M#6=32HVK-bz=l#&{!xm>NSbeaj*^@wEqh^uAf#=X50~f2Nm^X_uM~^KL#Tp3~ zs5*CiM4Wf_%|b~kAy;Gst2`!lV7T%lr6NN1&zGj=RS1g|_u+0l4d4wSJ^l<51Q;V% zLRh#H{0S!}@)TK?0efNr!8&?4;y9G}@5DasC@Ftqd?TimEgq-D{#a4m*Uo)nE?D3J z#n;YaMJNFa1fhG`6F#`-8Q}>0%H(5BCJ!<<HH%t|ltxBMFcQW}Cr=`G1J3DE33&(; zpKu4_app$D8EfF|J6R}Ufo|#KSV?(+3A-8Yi#aat1g}E#Guqh1#FIr(v?ojQ(&8~d z@To8{mcu6<2svU`5N~NrCS?PO#2A?Pg{q(@G_<<0E+p31i=n#4)kC2sOBJ;QJ#;tS z?XgId&M=1Llk!Vex541HRu}t=)ytMu7qGGE-Bc}nJ(zQcqjp<BRbQ_P*zD18vJfnE z!tHQ`?sogLh0v@<6hNn26Ah`xgcZV!6@YiEGm&zmTPExDJmTjOv@D5Du)YftG0h-{ zEJ-uROnu~Mit~CJ>$>~C^V5^<1?kkGhQp6NvVTA|_ol}ly#+bnU;D-Dw<n(~=zcr@ z>)%*7wA#39<S6nbX0NSjy5zp6KC>+z-7+_@@mkmLJ*nqD7;~S$hkM1l;a^6606bg? zj9T_nc()+|4Os#(5@9de5`qDqt|A_@RRW4|d%ah}Q(H=7;$8C5WQV*B5fnV!g?<)~ z#o8{Pk{9B`Df;DiC;S{K<Wm{Yd+b>`7?bb`W9Tq%usXw34;%nFW(zO{#E#}QZ1Ed9 z45@D#1b4#pu1w|;yy%9GL8H;9*HFFP;PmMY_qVN*boy=EToxDA=;pIH2Xm=C@`!xs zkw+fYAk)k0w1>Ppn?{rmJ&;vhP0bF!)##GHh~Vvc|2kW(*-d(twI-~-u#Z_IC<~mJ z*$hh=FWe%_)nze7Wc9N3M+o^RG}^2N8R1HXT>{g9IkpA+m=u=q`u4HhF)1WTq41c+ zPL&J|yZPs`@mOe=`?*`9>H0;1WN6u{rJ;|J)L$&Z<8YnSgNA+DeYEZ?*t^v|vnpU? zxg9=hO_luhQTfiQL)YmasMXV|>R>7qjfRfHwLK|EnXb`c<_DQ9g7+GkYa)BX3lbCH zyvi^K6H75egoEV@Jrj_VfoJiIAN#}2ej2E0{5<`Nzwz(Q{x3gDpG3BgkN(2#l3V2; zhhAD>vCc18=P$4b^o5B&eF|%rm<`{`{#ONN0kZy5rXo7BNi2YgGj^d63+7l*tVCpd zKq7e1{X+GegKY~W$>p5UyL#ou%`5vhcW4_|l<u4pEM8LAZL|4&{XJiJYSyCVx@|-4 z`|DXszxZU;wA_O2TQAzVd|^YqD7Mt@zU{MjUcD@)J^PNaKRsv7%HdT5g}l49{ls^k zXqN2s??smNKj~|G8nM=9__`6wN0b(KR;28X&1~c~v0G*Li)z62%@!AUl%#cJ7RE3E zqBca>=-aCX=QXtm-NtBi)|^+?ubVS(u0fy6pV+*9#mcT^)2AN3XKQ_E!>1R~n--_u z9!g!Dl>dg<!)PiwZ~p4;O(U!O`qLgyaoXsn^^2Eoph81(ak6i|u6Wh`50z$6`sU)~ zkC&%*7U5Qr=VD1Qzwg(?=aGlVBrt;a%ni$Ov^^O-;0W^-dXdd047nKm4s6j%B9lcB z95sQ1u=INMoxV%&dHANqRR!(p&wlm9!Dza3Dc#K;7ek+2+L?(SI`Os7uF@1{-|&U| z_txBA{e2;`w6iex(l*D?fx$HoUsRL3X8G0C-}@qBe}%`tTT@zoZ8os|^J}EVcdUn4 zncvyDl*ti(pS#7~;5j@dOIXg2!qm~ah)}Z0t*m3iavJO^2R&|<67IsyU${VREnlFv zf8I+^Y&9-DwtB_j;w>7?FxtRwTTJwvU&yAx3N*H)ZNvB*S@YuiUwV9#T9v5350@;V zuds*RU|=eOt^z+Y=0r>zX5Ef|4z`w#MiD$yoQ$H9t081G^6OPimTH5;af8iT)1ajx zO)VaC;k?mil8!o^f<|xk_0ezT117iL>8#Q>OqUA<o7tg1r=xbDpD-U{@T6m=<zsAC zpdpY2k}Ha8_;#b1kKh4$$PG61ltpVu=k;LC&ik@kS`n;wQhl99tF5v&HZ@wSw0g0Q z>OBp?m9mRIEv*f_C93r%@3dKwU^Uq9j{|F^OGET?)lbBiJI!W1y3%H|;wf-C=Zf0L ztL1e;`Z?+HnOcq2=&dnZs*M)&%*!RT3D>DRpi^hFr@k|yg`NVhY}GK@i5<vbgq%Gv zs_=5*phnpb3JNQOTMT|y)|t$T5I{juL-yPf_%HIUIlLGv#SX|D%1*!%!z;_qQ}&w# zrFi(rG%k%IJkS~f`xW-Xbgw1=zlu&2#VRu%+Mv<ctu~`kTZIEUeM3Hg17R<GNK{j0 zkt9o%h6+Ki&5r-~FOYB0f8simM!62oAmzGhEKvExbsDj$$J5~V`u#b-!xph<3)(89 z$x5vbf8Ou&`Wih2voGxMI9zpg_S)*|T3cOxgR7>=P&Iyg!PDr2HzhxLq1MDN%+>h3 z{svs=jj#*r6Uv45#KeW@10@efXhR<uFmn(ojIs4*(1KXb>0rE<xyeNS05a6|-^`Jq zL$H|Ltu?wlR+?Ur?RTqQu+)TuI<ui6O+(6e_`ZWD2~PeNe4Jm#JSedLdqR=e>;XX$ zB&jJeTBiDuB$F?QOmJtIYY$&*JX-WB*MN|h$Vq_`#Oiu5E}9d*Gk=fUWic<>)7Owl zS9gcjfE^$zg}cpfy!y^ST@^J*gFEu+g(*rc8u^tH!uSjF(Rh7)rpF*!;Gt0NSbWsF zectpL)3$U_W0zrs#rp4b(|lvHclTgGPFMHF@;euXjfTRCOk-U{{>~<LN>OL=ecKe3 z9D>!t+Jtjp#olU0R!9e|tzKnq5=3Gcq$Z39Z$a89lMzZN0l|rk`Y`hMAcv-WgXGJ2 z0t@=0dG;+*Njz}Z;DC77=7N$7R@hvvvn<}U*s2R``*x|iR4ruiR{Hj~fX=#T^CGKm z{Ftk`!F0^1#)D=K&zI-Ur-uuri(D=Breg+XkRS{_R&43)Y$+nnYkV-Bevsvl^CN2w zwA$%ha#U``3ZvJLju@+5$U>i}+fO0KSRNeX_RJ3kYe}&v5)KwoMzqL*2$JZ?i?J!k zk+sWg3aL;$=(wV;V!yKPvA4T^JbvTkQE?s;M36Nk+{x&ZyROkOel^~N{o^mVgt>K7 zznsc5*cu%sV414Kq=z_lB((Vi)+}VSOgG_yd+siHvoM{Nr|l^^mW?hrvLF<h`vnWk z&p&ojTD(Y_yE+_MHFrzTI?ok`s^Kb|R<kM65|QefC{5VginHVM`tYDyw~4-}Jou7l zsLQVwi|g99Y-yu*(_rUetuYj!E#Xb61;NCY_IZ6$Tg>@?_4Xd{aaLFQu<!d$?|n2H zX^Nzoku)=EBWYCZ8C&kQT(EJ+!YU(6R%J$V1JN;U!IXq%6G{?_389l>k-(Ay2_*?3 zY%tkuHk&|}EJ-#A3Br2!d(M4lBoo;EXW8HHQ<-^tx#iq*&w0*saC&HQM`v3-I$1&X z)k0S)=ROG8Bu8>*?m;2D3J=O1NBmtHnwx~5`pcQuZMOE6)t37!<6*cSSBKXvSrUq{ z_ygDIHGLXA`@U~uw6Ca2r}}T6qVEnoq&}Y)mA6+aOF}UbVQzxYacLe2+5t=`yO;;@ zpJ_rIfznOd8DsZJPr<iHlcpIt$^kfywbG6_yDvRA4#g2MbQWrdV1}@7nHXu*B%5j6 z<Mtb}dJ#8b1e_VlCLega_)##>gBmf#88cv7CJZBJ5>vD>%<Rv#b+@+mwEBFNhytlv zR`p!f^2(LXja%!%r`atyo3_-qcDFr;Bk<?<;{b*O`9Wg5t-H;L&FRWzRYvToTwY~N zZq}w$?Yo+cxa{e)y8WC+T59cXHQ~S%oomDm@MUU-rXk}N3*16Lql8E&qv-*hR_wqG z!D$eLdLGIJv&>fdLjx`7C-di-QP#jngm7jEXIk-(7@he5f8jksfX<+grpZDuCs*b< ztCEx@#?B!uAe@!W1jJQ^06v*J4bke5kld+8`UW%r%spWch9oVg)=zuY1PK+0jWXe+ z5ilwDA~IZaJR`TC5%v*nQOMJ0qthJqMB{E4DL5e$IxPQQEGTpejoaumxin%zgtt-! zE0sc2rl(pXFft<K9gbzQ-fq&0$^<BOVFFeNqCzn11tkrtN<k13dZo$XvTKZLCDV)I zHpj_pY)VW^PNtbvRGO`NeUVnB(z&(RsZt0`1dc<{X;sQqWwGZ(g~hJZy0uD`4jgR; zQ6nfB40>v<Mr4(OsKVF{icuwQW;d&KFy5(*dcDm|y5l?^mFzC4S0L)=>NO2h$16Mz z@{!rIK3cDZ`J2o&CEGj}P+On~sKP%4V>yq!dX#fcai%b+k@0jIpc_oN2zmpoKD84K zeV{*{dA&kx1lO@;=0<`x(WJCMP)6TpFff7<0?2}o{o{@@^%w#*<%PW7{9V{;$@bOE zQS=}OQ(^`lmKzA%2PB6uA58)?6{bdm)&xaMJqOG{)5^!F3kw&r4bo!^i`G}R*TPZI zz8GHaEtlQ9CA#)M-aWYS*0vSCrOVn^H=OfUW%u@GRs5{3EzPRRjYVyZ0Y!0rYa%EX ziT9LBAGFPu=9ofdcSdX0Il--d({Qu!(}~BwF{Ws3UDKTolxo%Qm#C}H>e<?)sNUGM z<u!}KQ{RTuJ-EnxIbJJ%9k#JD%=l%-soj*JDR1+XnUp~UFDMDl%V!FhhC$<K;E+Zh z6b#pgowQ1>KtolAVx%k(O(hE)RQAFakz4uy#+u6hWHI>+Dub&eU@A4zxAYt<vV)M( zt~3@kl^E^1N=&YqQdguec3X9fh0d~>T~3|apjK<EE450t*x~h7dcE(vgD!W#{aHD> zs@rCULtAYMSjsH<1@UVtgAa7lE`!Qg%D<<b<ywP51+L0wmtN^8o(>fo^+h@*i1Uoa zA?d4@5|vh~(CC8}ht=xPH_~k?y=jZv9dsA578ygz7UM4F^1@xp>AqCPe9k5OLA(~W zn;>kDNt7)KcCNA66LubL;Z9<v=u+!RsT15#E74X^jB{;A_+t6424PutDaOZdm3^yH zi2PKkY&aXj+;{ig@L1QMy~C9#)khmjbr+T_TNGCKTRYl9$`WyLd4w&^E?c!wI*%P) zxT;}SEx--HbT`MOXV}tMbHmogBW8YHG|}NumbNZi7!pd89qn^6oG^`q<zGPZjhvVe zbTaleB!kXN!AC%7jd+?<A3$e<^)(+>MS`Bho{*SYnp?*3e*qAU=*S1A8@4sz4-8c7 zz?@t;0;ytvhK+lHkr;N7kP>EOT%B7*1VupFMHmL0vuEq<Z#N0A&DxfGga*%Y@yG`f zrWfoFU;jaGue6+90C(25Gv$?<qx>)u$na4fjR25|GELXZV}zySVYY7eA6Q!<MvDEX z6lbqVzhe#mS<ppJfa{OYf*7w6eGeu`m%ScJDO!FAifcJQUe{f=OEI?gJb`UGQdchs zn!|^l{)+IZw3l^CPqNNR=`D8q(VGlwPMv!C>ACkVf)$uE+t@=eM~BEdK*1_*_!6MI zCqqiBa!M4dtEJ1d4J%hR+H{u`|3qLFO*I<nE#Z5!&BBtO1ZUq4_Les}Y>g``f@OzZ zQfs_bnv&w1rrGyi%<CF%u?9UH_@xkfunM<;OTWO!j9wd2MeqTK6Q3Y9yWGiy8r(V< z>tu#YvJd!#q$}wT5t=>O%wa#m_0gV&w&Bf{3bB6Ah08k^Ev^U`6>V-<CfEQANXA0p zxG$kGwl?T>E`O8%{Jk3&FIvXLK*x^S-J1;3Us@}YCf^o+vD^D^0E8$iH;uF|zqqHl zv^3eav7<TB##kGeYEo^<o>HG8Seket8mu|1e$Q}a<m%0}JC+6&ifH^dYuj25dR%Mr z<@pY5nECOE)UrbGl=#l+qWOQ}QM6HjHuGg;5<6jYT7-IqYuXL$KEO99d&oQZ&d}t6 zxgpz=0%9HzQ+O?FK?z8rpYMXUCfslYtX#{Opweng)kU>M;iBz2t<6#$uPy^|=h83f zbwy^Cr7Bi!wP|%b+~FeOJ4cShmoF}1c6&w0QPEo5;7N8wlgU`LBIrxh)HeFdDteYl z@97O?VOvqWCgBTKgzJ;ZXh#bo-16`G5OiZJbW+5mVQxq{83?ip6C#jk821n|M#>Z5 zN}RTQdy09SS6$@<BG529C0vFm7CEeDDlh{C6?;lERWqfXIoTD+^Pg~?R|l(B2-jCq z+f>4pAF?a0Ay@|K(=Nkrf-q_km?kI`vCGVL;Gj8NYhsrz15W=zpupMo1MxfVi1kTV z_r~rx7Te1%5Kqh$%|2H=GgB<2i)LoO{WJFGQ;$FKGs*DJ$XpRU7Q?}P_&65bJNK?M z-a8Qog9v*Tf`Gt83ML6RFnEC9!6%$l1N+_Bgvx*?2TsjMoGAgX-QtqArfz_!wEeaC zeH*KL?X5RYu_D(!?z@4c_^EV)ZDrepBlq7gO|aJ16<c&VwP)-+k9W(8v))zq_6b78 zvXWG)WLd?fM=n27kmukQknOh=6+)56<xW`mKn#eclR)@!q+BG@2wo_#oaZ4*!o?%0 z;rP9=d!-xV!>N(jy|Kqf-gsjqe$PE@GyjT@yusEEzwyR!?B09XZ({P2^ylI9aO|Gg zy|-aAzK09;aIzs2&kAvu1@IJHwm~O_P6nqN6zzP70ud&1o%aBz?m9k2^ndKB(|?4( z{1f6tqhR<Xmd`cfHSkld1(O$iJD5P{vE>1%OzD|?d%I7(3wCQO*+A@=K*IL`2ZWu# z<j}QX*~A+Y-ZAO!`tl!|oB!}-|L?#3ZP)SR!k+lZNPKuWMt{PizjJ}N{tte%y|=z4 zeD-<m%=_3;IAX58hk!k!cu0&r_IxxXx1aiD;5wQ)!e7B&hM;@64k`MW-SWDMnD)t; zIK!43pF*Szg&;rmriYS_0A%_CdkU&4T!?e?FS<t=N{_q9aD8|+2#o>+X%lrHKF6b5 z1=V0e<hSYa+ZsIVb&PF1@{-8drIrQ}nMrW3lc^Rp#nn>$fP<J)VZ+Yrk0*pDP+t^@ z1Mev;H+k+NcNhjexaeIptB8bPSSt_0c<e+g0<YO3c2jlV&K6a43;+C4>C*O~Eyh0q zk1|TLd*gTA70*B~XclfLDIA7_owi{6($X0JoVvhh?~mVAaaSyp3{TCsAK6Bc_dpin zlqrsSPGd$RJ~LSPC@0sXpi}%Km>868^rGhh7>OZ1O*G|r-NO5di-27w4%6KzUkn&< z0&;B``XSA_@D&NeF^<7gW~O$5bsE2ovaOYmL(rh1F2V;eH&8+5iiN2AL}5Yf(F=+q zz1i-?R6kT(K2Tm8idXu*fPfS!1pUgE#{O;0wY|Twl}T&Hnm2^wrCtZ9rQP*yi(2d5 z6&|0XB_7_8{EIgNkVW_}-f$Q$eBlajdHW(Lol3LK4@3vh9e$gcu%3(B%e|dLS8iDC z_j>)SH(WU+Wi`f7^=5xtkzK7;;76^tH>5X3L*V|mwVu^F_m?l5ck_KW1pFtD#sIZe zkhe7ovxgG~es%aapcm4lfh_T4n<tVuGBr*MkEDG;>4g>2tLVvydlas!EEBw8liqf7 z>}LP!m5okAJXqlg0-Xh8Y7=l|&Pv!Jq^C>(*w1cXkrpsVL)_ujg2U37PJ3^Pf5xfx zG_PC@cg}}m9^dG8*2hccun`Y&e0Md+1CJu-_dUp!{WR*8AeH3kP^s~N^w2J7u1Tm5 z^q^|E11OX>i8^eC_Na1@pPP&~WV}d;?fgw)_edZJK~{?qL<k%f2Vo_E&Vo1xt|BY~ zdJ3hP&Vm}+oaE#xPKX6)B8zBrCcH%?;S&k7g{&qj0=~!~$FN!s)pn?aR&QQ6UKmo8 zl$4vw$Rx?lv`0&px~(Q%sjIlfVKyn8HlLP9hRyypoApP%72u|;a^;Hj8yzKJLSnC2 zDqY81RX!`L0PLt}3J2hiS!+^Et;{IZsS^8fFvW|Ho;MEcaf$sby*uZm!$ZZ<*{_$@ z68^EtpNz<p6ye(rrLP5=x1zMQquqW?Cz{CKYSdLX7;UN|YrG}|grvh<Ssl{%X))bk z_Tt%}repr|Sj2mkt14hEDQ6{)Yadgp*{v3!7yMPO?|38ZM!(x4Dym9u#9`lYRY`yS zp;CkA`{9d@5(cc4PCArUD<8WSYvm=(5~y-r<qe}R$AlmH5yh={)s?_ARfv!)%;De3 z`?!K!CveIF65MwrIP?EB9dMs9?-t_-#W@OFDiL}UjWkRli0PB1NZ}hHH0jenPN&5f zMFG*z>1|?c3Mv|uv@>K%94(T##o!0$8i_JQ8VLn+r_oa}W3Yx0N~mrUirL<(BIy$8 z5_g#O8)nLWGTlD=ICU2Iom(zUi}5|B(oWytppV^Gx+k47wlvtK>{hmS^JeMxt*pQ7 z9?M;HU)kny1F)iHut6@zT_a7bsYX<Xq5C0y7X&xQv5|HxBD)dC$)ZK8?T}O)_0|Ye z0r#EIln&bCb*rRTn8{mii!^`J>;0wCT2Wy&vc@V=g{%T4PL%|91D#Q=x1^RRR0h3D z`L8-1GXq;6^qaJ%-!s+o3f8dRURF%T`|wLAOV*YA(x^6@)wswtrc$>_Fcy^xTU163 zOg~n``t<CJN<pO(l>e$N)-ucECWp0DWAX=ek6~Jqe?Q^}P~i<x)I4<-f>!WavhkP8 zY`n_fLleNRim}p|^ufUx3w#=q0JfxX`l(OL5Kw3<!efxJ8no70Zm($oK9@W+d2$v` z*lQ<WT3+731P+ghEN(z03Lyg+7Z8V(jz+dOGcY*hsT<})CZc!v5~V^2$?Ez7G3E^k z%$Inl#BqnC1R)1~N{u)qdv?;quU*DCtG4vEFX8*5w^F##AFJ`-z$(38#0Kft4>^$1 zpw#iut4g(6`6}K+_WivGz1Lpgd&XD*@<2D@T8LNEjcKA1b2oL92>6T=8zSPjn$P*r zx~b7GO2?M4kQhjuWtr(}I?pTpsz_7rRy5c>4B^qpw(_cbS5<w7D)8QtA7Ub0AMA2n zqz&7>G4n%A8EA3TXzNb{MkGJOXHb@Q?#Dpif_cm7X5>GBa3&9_8C0iggp?tQxXCT- zZT(68aP)C$=G-@q*OnWK?z+0@QSTE9qeeaTj|-E*KbTI6C)`Kwa2v|v4@)1uaa+}3 z-K$BR@!tc*Z6#CRFnASTE?)JO{5V<Qt!U$Ovrp9|MI#C-^65A$CfF+JtIdx*^6B|1 zgq?4`wRdu&P>z-25K0uXl$iUN6*Qm2(iDuQe_}_ZKM3%A%jJ#ySSMf+;Cd;M^U_ol z!Zjr<!u*sB4R*rhFM>%OGT`ZSm%p_S0<*8x-<6trzG`d`&@EOXo|r~(@$d@GGtX#N z45v={5zu`}r7PCeIz1hNAe++zF<++GL_bGefC(K_;Br`|(BsQt3CBbWjHWcI5)^kn zK^N3+_*oju1?RGsUo<ZN{^GXHN|7m)o7k<lEZ<lcZCcW^=A3k*Ewl3M=0z9(>@%Mc ztkTI}*lcd&FJ2O?OPk|Mje=@<^RlzqPamp}ulwaU8spFt=WM%Y>ZW-viGqg8nTRmH zM4+H^lnQhT0`$<73;qE(11Q#$`~;7Z@hMHDPbX()fLFsOe#9X@9LW}WP;{n2gPxiK zo{f}OxxJf2lWgHW(_(Z=o-Y{?vi3BQ0Pzs?*J<uFUzVshnX8AR`p$e}P|25*1Cw|g z&(x`r=>mfx$MYdPcAf(W&xmL=(zFe@d>&&>b6^`*#Bx0YzW@bd+Y??SC211=^}N)? z>V>Nxf6-sFa`EIY-@m~3c0lT8P0}Az?gyoRWM7rua;NkCO3u+&jr>qBlR*i?FYjFQ zi73_9d79pNi>)0hJAfF1nus%Cx&|!3fi^-`K`3Fs=|HZAiHDiJ&QYzv>6`&;9ql3_ zW1<~Cxp93>ZEel^jS8!?q^;N;FbnIfCan%JUK*3mWpEhRnze2NlHMI#y;?l+(aR8? zwS~>vYj8d;bjB40vsJ4%Xe**_vj-7g3WHT^^%=c}VxP6jZz?u;O@VNArSx5dK+E;K zU%Uh(1m<H@22RW}_?QQO4}l_@ku>j<wz}D~`x{$y)~Z!b_qG)~x;L&r#%5`Yt!kyy zy;a__N;IxLYx`lbB2ZDYcE>drKYIDaJ98i3l5g)1qTNuAix5y+%Yi%Ix?m@tBPL;! zgZD29)DtQQUnq8LB77TEUd#?0DmxHu=$&rbLM#JnyBcV+h`k0=E=)231&4IzU9|=- za&^Lu?tPLq*2h7)(i*RC>|oK#cpw<`$11DYKhshm9*IV4;`L2U{Gbm+yGHv)Yn^mo zed`+zy|aks1>IVMLS@k!Z91FM+B|i3%acjr+GQ8k$67yo&u3d>br&vc*&B(Mp0)KX zUo5iszZS&&8|B6Ez3ka|-Gx_OSjP{2tE@z$l1e?p!yfia(5PCVd{>Er(TX5Cqt2|p z>=1HNQ2UqlPqKOFA*bpv9srb#(HVV!)K0{t&$VJ7nhSn0g#x+__^LvnrJE>TNDH8X z<LnYtxOwKJY3b@6YgSfPDQn_uI-l6EuD(H=)@;7$#>1<Xizilf5qVQZ#jU}1XWYMO z=VpJ*weWNDHi%g=3ova%{kjcLbgqflD61-0uGz6_VzF}d;Ttd7tobWY9yt5XVs|W9 zRuPO9dGC~Q9~F2n6TKYwW&KaN%N8)sb&ilW*aSG&Iawq~=HZ{*o8;>vQy*b_DZd|; z3&}$QZYA@}@UESOXZ8q>a-1T~0O41YBkl1GK}NxlPlIX=j(SA%V;i8oX;gq1=cMUi zuVPQZBLcGqP4%Y<35m~XKJh0fZhrnR>&!HE8(^(lhI*1crex^wG5e<)#z8d687t{y z)u&P|56nl*3W-mxUCOZnzkqGZ1Ak5kUbAK}1g2nFUjbVOY=K~Okl&M1S;**SvH;ri zEQkP=1^KXmxhrS|0P)P%4)<2(Ym(Sz%h{_(Yq!4Ot?}Y76pF2iMpwmN*jjt^*U~uh zuiOxn#@RaQiQljr%F6CPB0b)*^o9IS2fmjsz4qGGV)fD5ZQk0ZT5pF?vv%9s8Ud%D zzCS29%gScoEn`2zRc7A}E@eM@;WyHTj-^XGmI}v~zOeMW$ZIdl$4TfbL2hv+^hkn+ z2k3kl1PJboVE}${^f2;-11ieS**F@l7&^9X*I64Hn@dVdQcJekRt?s=w_nk@^ze>K z^RlEGBo`@hZN=sHKXg@Rb>*tnPi{Rsy||>kXy0|W99jk}(j}MY!fgOe=kGs?`^)T( zpb6sUMU<FqVI)g}kX>{)dBE;obhrPWd;E7x2qG1Sp6_Yt?r!OMKL0JfO5Ap`{P>M{ z1Llr|Z*C-BN2&;Jc?m+u0@1;#DnCN>O>vO2p9`Q1GHj~d5wgofTEz81U-{`jvgN^m zbozPej$lyu(#nG?Rvf&JK2|jCY--xMZ%0$pj^xgrUZ50UX4$z@JQ|Sha9Nmt_UXn< z^^zq);o6{dD1Q!4lv<j04ADvWxNHZ`OSPqN9!SmP`iMaO<#`T3ljj6o6+-=+m>Bus zg9zskn3kk4aR{)Rz%(HJi8lJcG{9{5E9em5u|p3f1E(A@febbU&JdEXX88N!m@}<g z(1Wa<7b8099~Rt<<D0n}NDx8PLBa`*f%HEz<st7z(#_2>&T^Vip_GtCs*#i4I-47C zC}26s1|YMYE>*dT##V46)ys=%)>x*-yeom@n({|BH@O><P4FZ)!jRMyE-#}CgwAl@ z$;(#ZbyHojugI+r!8dFwG8x?(4U=lFs7fa)Zob)IZLhkNt*UG{nvHr_eW=du07DdV z2x|1s!&N4)!(AJ0aB2O<_DT;D*BMPu`z&U7ufk@7H&Ppub_3D?W%3nxG?D%YCUaOP zmXyXKRSj<Y`-96(NUP>3LU55Zb469Et0Do;KbxTo_k4J$Qz@#e?WHPBqsPa5?FO@( zA^V&-J6()bPoqZVb5yIeon;6MNAf`Cw64>|jjW`ulo@L^P4UWl1X##?XcV3f3p`ff zD8-K)KSJ{Z3)*o5IPW%6mMA-#q#9K~AWniwMU)Bn?x=oH3z#xk!Hv>b&~GqfgoY!^ z<xeq-PAXyyE)7ZNoYw$y>c#7?i7vJo&pkJsWXsqjvj#)4aCsOc;V@~~G-icPudrw> zj^?78rX?%dEA6flUqzX(*n?DzoJCIdD+tnc*GAKQMhAi~BYhpmOVf>Y$%@OQmv%Yb zr5d#fxfC_p63Jj<OPdz1Wcrjfw7A0B&Ia?oVhl}J=iBbE*aLqDq%4`oVG}O+=Ey`E z1!2cEAAT5nVgDsNwhq*%OG+>7>$=f$26;~&OeEb;EU|A5PN$*$f@{JwAH`JSk~ z6E_uM;};_0Ys-Qi+*%DUT2qi*^iG74yI~t3Xe`7Yg?p0X3&9P(AyVk&VHQdV5`~h~ zj>y6tU4)cKE1(h3O?cs=`2)+?R1PlkmuIB+VLsGoD*O(Y#iG;L)PVH}YMVwUECsiZ zpBVP!AFK7Gb=@h@{REDu(v;DpH4vbH&914b6nL->pz|_oz-f2PemR&lYElY~RjUmk z&zeSYVTwWni02bioV6!UcEPcYIHXhx!*~mZ@vBoHlVvIH4#~?GiX#dW?!GWYHSuAJ zv<T3f!AMKG284c-6_5}&8XZ_J^0d(0?e*_M4^ebYPtU$Q{gT6r42_PLUUF6XEf#;J zt1ou=3-N=gi((H=MIVh}vIF*5SOm$Z02^t*Uc%BavpR)MIKj%K*J6iveIa@f!t3W3 zM!&S>g4ko!{uT6r9OGlCvo`1!@MjaG5lCDz{Q^}9RT<I*aYynd*hMf&29}gt-)Qv0 z-jIw+sbM@Om{y#?@shTTo*@o(^sF;C*J(8mKdjNQnkK`_u9b$S8gJ2wx#b5vURKpO zdo<7Oxs{Z|#t<~Zyn#q~uYQ$g(Vk8E4y{?SbGyQ#>oBa}olfswZ|LyG4cj*v)_0{+ zUF!{-wis%?%k)dDIXft;n0*Helnt2uIgbs->vAB8_yyEWHRdXHJTjsKcyM5-D4|af zBoQ=raRnIYKr-C%JX%yw1o}<{5#5HCT2KmsVuz}TnuCv!H(G!<$Sg}~eP*9QVo9|q zswr2Wl^d-!YCmeFXLcOQApc>1MYSAYM=y*%Hv3ekZQ6z$xGBkS3bo0^x%MaKYtvzO z2CTEsvmcmcJuwhFn7#-NKx*p(5tBSFQ@ab{?P}2W7UI2v2yaE#lQHZn>ULbRk;_kh zjigms=Ja4f11_~f3q<b%>0amT=L!w(r9u;&77}Qar~Jr%2pCy}H^Rqa5K`g^D;nnP zm+3vzj5k8LJx-;;Dzc7Ab?k?hwDhw=GkmO(Yy?~ebABy3ib9qi3m7<O^D-m<;3P8g z+2`{jBZOBV&4u2AYkc_%fG6#9Tq00MktG7vfkrDVBY6N@0P-&8MS{N*GJzcs?14hh zmmhz=>x&np5!Ho$1>+F!{SQ)6=lhO4hjMVgvE0uwU4&@joY}y#IFn?ez@$nxQ%KvN zXhPDbTi7kLw&Q^#E_w*+yGQ+xBN-HoD31{EFED<DNz!+@3FTw=sh}GDq&!e)d@vSJ zaX?&R`IGWO!C-S7rW^dpcjXzPa97F@g>l)inC+)H#QA!m_jAI_>PKH`0Ar(U-+-GK zlE7ULv_KM_qPdAB;Ie|-H0k6tpAhT3|G<~uRPJPmm>{XqEM9Z$*aiEg(|#@HL#~s7 zk@ULLKmKB8x|sD9@7(ytPnuU|58eGaU0>(<oxht(3EfWf;&oB;l1|tx)}==RC*cj7 zNooB|JaECWW769jcN9y<iqoB6T=n{fb%#6qbf3HX(0MDTVSQph4|GQP$%T3%P9-1a zx{a7y00%2`@*(6+q>y3&8^a(Rf({3uhg(H*3=@8s38ALWsjTWVr(KCO9PVH~+UH*h z`lWY^Y$rY=-G*$<E><i(08X|)u`=dOu5V_^^~tIBz5|)Iw#<RP_EXW7(I|!ER<EiS zy5A+Tx8o6M4af-Cfg+~{v`o#Pw@N=pOz-+6hWCYi?R0K?d*%%u#9O^;%gQK;Y*}s- zXA|*3HY`|7ZGyZ<%}LCM)cj>+HY>#GLDLiejyIC&{iIuqY^W+}KP&dRTyy+Z!BXP8 zYW|<!NT&KL4YIEQlkU=i=;~f;5ngik{r}es$#Y!Fg`-4kD+j8oya^C)(J7}uC6ZZE zO4L{<n-W$b3!utj7CV(4$Q+Nx(hao_k5625_Ue^Y(R5?|mhIEnDQrl`qQ^4>xr-;p zAFgefNk^+zu09)lto4lrUk%v+<*X$OkbavZeUOWp;2$Ay)2G>8ady`aTvE6DRgk=2 z|0uisQR(^z&Xe92BCrPD6@OKydlkYv``BaWohSWA-v4t2>V@pm!1QXF)vjgsCS<K* z!im|}Qj{FxPWGIX7UJwz(qYjsJA`<4^X$+%D7>xfq{C<QcQcnNVbm=Va-G4ZM^t*i zq#*ZPQ^Kh%w}Jr_=nC=fF6ZpK{$m_Na6B+G`!X!o^_`F-u!w5AKo7>=Su1vQ=>o?& z(g5<t0nBdV*=IZJL0OLW+@+oB%#R@_#QQO~D}w$)8XfU3;{M1thucE^rAS$#V1%Iv zfih+>k`@t13y%qW1CI~b1O5Rg80M#;Wu*k|4`7nLrAv?=)VftCt9Ps18UUFd2rSVx zuqE~4X9wbrK;z)d3^_FccKi!etElvV#;xqCKB>mB+okrDZ%;kzfd52pCnS@!u-qbg z0MEr8{dx9SdOWgViA#6uxb;_f6>s?7+Hn}Ar^LH=yJqW&ERkoH|NL68!b6VB;}3BP z63)$p_E$nJka!AdV8?Wv)HH%<$pV(fm>{;mtbjbhdFSgiX4%si_)os+PY2!vnJZ1r zL5Ge&Oe|oZJfdSDnY*7n_jF)>NSu;{$|0vOAs=CY7V#1&T?Fr7A%X}#DsQCibS6$6 zhh&8KxpO)_b?0ouRLU>ddGZB{rl*`)*c_O;)1RLGGLB459rt$utOL^e-LU-0a^n%i zL(#0Avf>ivfJ{j6zrqX=fl)Lik{uc{gfnB=p~t~CA*Thyl!npd(N1`O1QM1pWWf-N zy$vdd_CIR=qao_pc;U@Aji(h}|GA&L|I*}<Lu)k)kr8aIrY%*xJltL{&6JfkFjX1A zstZL=^~gkXD<W<5CiSnX-flVinTyYISNB}C*5fI%X|`OyBq%+>Y4Q%PRktDanDnD! z$VpXwdw4lhNHg^daTUlyc`pAZ_)=_Cj<TwXmI$ziSR<5wqUBvUKl9LL|5EAE8n&_R z=#7UvZLyvsYdbsAp-3c@?znvk;%yK+vqXGn^lLA6N|#l$3u?-W&%W@c>qi&O9u0@j zIOO(@bQoQ<(2kx!+m!K=r6^;>xRZV&2Yfog&I@ILbp0UN`mG5i+8BIL)Th*l<lsL- z`{~Qq?<cf0J793xbo*ytC$GLxRl8g=EU!fyqp(z@l5G_l3~n31+jQ*gD^tQFr+<7B zUYYr4p*BsJwi@81w=C$A=OMC=i}nN)4bp=0N)MAQrkQXDFpDF(A|cP<qKe4rILcIi z=V9cCfx8Ikw<zJbu+(Zbw)@*evCZFZvZO4=_CUKR;=^cJ?~Rm{M7(SrHWrRBr{`A+ zN0a~-CG9&2lpWX;k5A3MyiBDpYc8`=@=d*R`EsS61d<h-^r~gY?Q~7A^x0)9U62lv zHy2LH9|UMS?tO;dspfq!iMX!KC?h~G!OsgU9`*RSf7}H&x%@s(J<O|ZZa<QyQ^pj` zq`3g%W_0Sq{Qo#aG6;!Jk@kpR5Kg2~M0}eR&2OMR>~%TpEWi)L21Hf(PX-WO2n-?p zKyyQ$m1#fzFnxfYMn6Cq@?*dgoB!c9ez~s`hrAp0zl<|4<Glz}_z@mO)VP?GxfT%< z_=#MMA=o;|UrBz_X18n#;j=`s{o#juj^14My|SB+_RKGS{=WO%dlnvTF56tze01R+ z_eWQyf2@c`mPD5H?X2`|vblU!frhxlES&$hSK$|w?)c=3<gfWb5w4Wj;HW#d`?H2B zaHi>sYB5e|sS}6~a+xm24U*S00t6k1knQM?L5li>cCO5S%XVY13q!(&klO-o9RQ** z(4qI90xWFm1&`+ikMs!tdXpD3Y>@1|?|MAn^&IEbAPz|{l%+}o@C~Oy7|33qLTDBy zO8$1gzg@5c;y0Baza9dIKzPAASVtCw2nD?e{*x3)|B@(M{Q5*Z7_z=A5Q3`WuxV_> z%u}%lSU#C<h}0iAr!YSPav?uES0@CqZui!;EiexRTbi1R$|I?CRfXMF)R=_2Yq7L+ zZt1F%Zf7O+W#t=yB@c(<8<sVAF+mLkI$F)<5`ROT-|I^)4zQg>C%3fG81Q?iHkPK> zZ0$|9FM1)MFn~DAXw#}}TD`?-Py}9B)Sm3yx;kAdeDy?Q@3wH|GM~ro_V|{q+uqxF z0?}8dkXCI1s6uD67aK+CKS3c^UER@c{Cr_7|1#>xjS-i$oF*iXAU(&5?1N3H1X_gV zBSKbz`qY_+MGKFm{Fov^!nahu<xf51{3Uzp!<m`qShMsJ2Sf{}S?W4JdeQ|Y!@iXN zx-{Z;OE%1=Hw#P7p8Y1fFC}B4c@yCuXFh{d?#6S^fB>YqXP^lJ1SMp{fAb9NR_R67 zgv%d`38%YLx%r1UFMY#D9%3ln7ri}x48GF5zV)Q|1h+v(VLPKynGd^wL2<qJ<0Jxe zIa8b=qE+KY7s3a^eMv3^7-m`bZ(qC2Jougc*}X%TtJMvSM>fCs)VOiy1DT%fyUtUo zqOtGDo-~9@b9>9F#vPvK;Nk1``&){3iF-P%1K)c0wae7%M1o&q_H!+!9ru6l$#Er4 zeUL7~QU&Wu{`&*g9QUPGh@EL~U0dGHLSqo|X3Km*W!yUqume!kFml7L3at`d4jI-c zLL~yDC|HBQag>LE13C3Hy4h3423RdIwt+%t-WE!({?_!G*hR66<EsHfn4Z2vSN|Mj z<jJWSIgLdN&LWW7NiYiiVRh`Hi()YIKra551e@18@HNRXTCm1Ln!&LPf2JCyIW^MM z^TZ3-V#RhK(J=d<;86HHQ$jve2L`gT@LWB>5h|O(#35F@e#gpyxxL!5uzad)i6_iS z6*nx4YJBbC@WOzqvSY)FT2oPTm=0LjZ4al)XE%Fd4N*^WUGgOU@yE7d&V(i5#`xMw zb<?J89mYV2dE6|nsRs{aD71L}s(Oudxu$N#`i@FPV9~lY%?5vXMXNHp^cS9(2Y=yY za`q5Da1}NxUv<9ClMXFoD;98T0!p8dhV)OKO{n6Jz=z36vw7MO3cTf8$<aywXXxU8 za~)z2CqvrYb#SJ9&KVcsNl50daSgomk1qHc+I<-sJi$}dP(|=dj0|vzw37882^&K> zELrf~2VI~dm01KKH7VX2zhsBtfhFiR_=N%siZ{-60uVUCTq%i01lK4dTRpl7PJ|CG z&CqYK=H_!t;v(b+;%WrE<-dR>!paY!TSHuM@YQgfBJO|;#<GsYc8Lm2Lts^(+16ZA zE-Wkes6pgb(NJ`;MdgU3%9+W)?rA)CWl$-`Fa+!LpmNjb^iFr#B9pczv@pD-dQr5@ zY=!?R%sSO7UA)96-4ra^$QH&U#kv=@76m9VEJlkXW!Ed2wXUneGO|i(RvS#AMz3Ae ziwXqbmDTzddZQ&~wH6#?I+aIfHkrdVXF#cQma57G!Kv^_Yh{?MxRm)Kn@SFL76sjU zHPeKOLw2JlC}>NAs`&D-!N!E}+MdMfHm%R(@T&p;Fe=mm7}#4^FAO{3^ofV+ik-Sp zGn>7wp|q}8S5zVR;~ip)8crjXyI7-x8)AjpU$$a5Al{<Nva&p&Qn=RHtNieBY0ci4 z+vY4%7U@(Vmec3}(hIu6YrWd4=Gy9bh#i!Zvr&7U$0}%nnl|$Yx&=(nP?RD13))3I zUQo$H@ZAw`=5FunlOAE#ek8-x^)uV)-!SXOjg6axr1U%Kz0cIteCA-y!GkqIH(M=z z<;T+Fue`$6{}>ok>4Psxe`H^4x#gCwTXyfhmF~@XRCwGDG>Z9q{_Pz;dMTVI>t6Ca z)eN~#C?hYP(H^2dH@w=wy$0D0eSK_`^j^R8zVv=SLgSvogMFrkbxXhd=oNpv`_|pJ zJScsT?=OS}5TVbIH4XywQ$heR-}wBeas3PDA!+BQ_V^d(YcwtpXVU^ZnKGfmCy=Uy z%YIl(yZrv+$T5Ed+%zy$!kW9$Po@EQIG_&`+>Gi*p7)XcMvbzVi$(;D50t3fr3LGV zJX|NCtIq`|ilDClughXz`&#UBw%|{f)52wcWCsdyih})3?8NUCEQOu;z3k0=eclF{ z8Q?KfgmIF!MC4ZC$|B;GFoa?1&Q~G-$ip51qdBaiNw@Ir*!^cmv(k4br{XhHv6aYV zx;cK|=GX)rlB#Dar}(cF*!c1$cJ=+Sv$Gp=@u`{k)GFx~e{l1C@y!!6zUw1Xk&`%% z-LUCpN;jP!Umq5~gn8y_$j@C1`ru*Sk0*n<AJjEmAcDOa4osJugAJOw*$hZGfOa4X z$%g~ok@$G<4R<0*ym@pQ!6IcAmia-h0REX%Ixu2VNCKi}|FrF%^OrIq=-(bJKc_?V zm+9R_b>aQ}y=@B@w)OTO5a4KIqTX2Mc9(fNR(5#wKC{-q5-`<$pA2$jv+G|Zdwd#0 zCuLudwARBNIPBFt@VBsEe6ZvEd$xJwZkI9W7nkfVFFz+(p`aVR*Wc5&@br%?dV7Vj zY}c+bu-kYH1`!ma?*8p(HzX1bXK#OL8*V5}a5kBcR40EkzpM|X<ki;;?k6hiLVuQH z<Oy2@TfZC&FGq?6!9^0Z!r(*jNcx{W3o~H&yE%9gZFdT`I84>xb&&TL>;>{1otUnC zK&X-yjM*pn=wv(#R3tL>2a_VM9wHzM_sWol^fX-90777nfoscQz~tIxuX@Og080=B z3dmmXX`nLm3K0$HX-^0-Y1mb0L-I3FE<X7g!0AZ#Mks0Ixqx#BLMEb?AH>QNkJ1(= z{z?2`-ot~CXP|UlJ@X3>08bQ?%pV4-13eAdHn@V8f1Z@bbEbmEr@nu}<K+8vDf*e7 z%S=qsfU!dlDv!8D2B)ydUTuB3@#?X-w6yQC&X(Uk$)0)p<(GdVURmDzlYLUls^9PQ zA~N_zD1Cqr&DYxyu2<lOM6@G{RGA1t;|Vn>lL&0IE1N>%mC_5X(%SNJ)`Dd3<+Hy* zT&Kq`{fynsDx9DixkY&O_^G7y>z3oET9A3U<R5-B)p+?2ZjyfX{Xb9V<udu*<or-) z<WfOZGB_0hSk0#?;xY``peS1rPdh{?RiVoOqao6n0tY)+4i5{zg9SFkdo&bNnsEd1 z1w{t2I8abOf~FB(ZSGp6c@Cb?bQ+$}=QPXr=FUl|7WTA8$=kqP4)CLHX`b`Cw(h9W zFX_weNlI69zXJD5;NFGtmZGR*uo`qNxD-#|N<zPazZWVMlpqKVF0x(rW;dZcVKO3N zk$35b%HTS7=JhAwRj?1v$D|8e(5Uzoa0;Bmsz?~X&@`yhlP*M^Vz$Gt!DUmT!Oxn& zBOQh?!z`FRAE*el*<DUSu-k3TzT$dEDy6QoIxIe2ksx?=*sVu4r($Hd@goaeaYcjP zr7^9m3!6caU+D__wc2)2CRt)Wq1fQJx-3Sc*S}cMlm==M+wBY4%MB%v5@r*~QA)ge z5Y8^H@d$#enk}+3R#J?hRsSLnC<<)0FG=Mt6@0VIWGs&+s?AoTsU#Gt@|#!Mtje|S zGJ)x|F0WqcH-YiVhq;(jttt7Dr`}<;JzE(tn80QgF<V6KaS)UgDOWjM40o+@$88pi z&9YiyVcx{j@?aWvi~=`@Y@05$VVOYyV+@}<K@O2D;&?@TGguQT;*fITV0r|@KJlhb zkqR!oKnQ5aAMAi`j}}Nv5K}N^P=5qW29zs^y5!@lEc2*M7w)@&B8BJsj#U|FMi4EE zotz(vtjvg?gSC!&j`SA>798oH&=avHyf;1FEM47n@+25*W`FSjTYCE&k3W9z&mUl$ zZl``Kx4B1gFAXe~R>&c^x$sslil0m(4kH*!!_@x~V>EREgvdeW2H?&}9a%}z_rP#@ z`Ox+C`}cLIn|gBtOVst7%g<h0s|v5&w6;c7Ar8%mdbV=*y^-q?xQk$@)HJ&>sBP@o zzi+WB(UTjH{=G;QT5)z~jiO@3<~4bF^nc@v%aeT4%rQ>~06rY}68}$pap*mNCtq9< z+TZ`3F3xKRB2B^nuXJ%?uMw0*g)xD2X}R6gxWoVR=Gi7_kND?qABY#>Q5tcG#|S_4 zf#CSLHOk?O6j20Woa<YUK|iM}M`0yhp2vzqq+xnbR7D`9hgRg~OkWfPiKuifMm>54 z?hraNOdBY12uAQaz?w%>P{>1`>4CyG2}=AVSWFx?m#3lukxA~LNoz1UT?S@yotB=6 zvUSXsy7SJ|@#E4Rv9Yn(*l2ugEI#_YE}Dqyw2Go|G+ZPmRR*0yqYxDevqPs+suk>~ zc)`yb0|1wV4W@?j;;7DezQXFV0lALk6ghrjDMgn}T@W9YuZfGZ$)b{yB1g2`=`4?W z4JvSxD^xm%S%GV79A6;;Ap6=LKs<{VnhAL_5G)E@7%*IfhoNB6CM)LBi0Xp#QC75J z9wXITcr<M@0_)~K={MRI8EsGpo<1j*9gEHW@SGj7u`J>ujdtk)qYWuijBLBzi0oy% z;@Q|(eAo8)7}6ffy8T0(Cm5`KNel~|s+5lm7>1x%yOStYn&(4%#TO@TH_;B-1``2b z`lvX#B*`v-Q(zi^dn^2itIF)t6d!oqD%dPd<*i3jkta8N)#_xGVW+3*!uDV8D`nqX z+~}~@xV#$Ej&lc_bqbTlsk0b*-Z$Cnhhq+_&#$=mt~(uzZPt>_Wm7+_?X8KVond{k z^{X46jMNYJhMneev+LJAUa_v+XsNll-EP`;?qI7WWCQ?8cg|nUT9?LWwD>x!9gaKi zx|igv{JwIoaW5nv*ZGhPlM`;p?VH*-{X<9trN+Z>Bm<;7n55Cf^NJ<_V3hcchlWxe z7RC?KOXSS%#Hh-nO>qy3#0SYSL*Ky+i6h?&-{kHfRr5F|UXOr<?T=~r8lXkO>wr%h zR{-AxZUsrYF|xc8IQ`jz??L{?y=9yg>6T<4qKt^`;3eEO|8`J|tp6`$t6PT0*2{3& zNLd8dAGA9eDEo0#YXUA1S?z}V>EAvPtNO)INQSwh<H;D;w?6_@g+807P^Xw7<hXnG zzr&v{0&bN6tO>T;T7a*Pd=z;~{>gd&GL?fJ8eM>NIy?GF5R*k3tJUO+fLDe}zbSa; z%9-zjsRRvJs9hvEr)YtbsP2=bSIavviql3gC*;59?u|Z7b8R_?2#u_0N@!yEB*>+# z<Wr6<CCFQwlA#2{ydw!rDEva|DR_`E8yAh3iXRVr-)xuOE<J9xGf%1X{_fosJAb@$ z=bLYW0EPm%&@u^YiO8-?i|;I%+U-4FIwk#c%jTBGWLLBFR?oIQC=Xe#{7M|hIL|%b zGQTwXGnIfF#(KLOggVq)Y5MFFfkaiat#w<z|Kx~bP3@(1m)5Qmx83l?*Xy@DcYmL< zv;MN$%j#CEHePz0R2&t46BUJ6Qos94nKgBnTwb?+(?4twXCJDGEB1V0&$_xx+2wU> zIxk(X6Ar~^*VN?u-LJ$6c>Sqd=I%-MK=OKrI1@<(sUcwZb5m&kRQ`s_j*%-b9}Xs} zuDJW2i`NPdt>aI&MqEAhxx0=;6Xj!9Trrqpzs%or`GK=ae47@9R_zId`)?fEP<Qzy zb!*PLvA?=x=ZaAKI#1b_gD9GO+57~3#s)hB6hO?wm=mT3;<F(0CXAZu0=yU%20dE~ z;17Irkb^*BFtJsdc7fS{Y5bbhwdb!_iyiH$nmU5G*2mx1DlU}XVVAI?lrP8xb?f#_ z?b}*$NGqKilcui?cI1{@EGsUETt8|7l+}5~pOxAR;bpn>oBj<^i#f45p>n(p$VFi; zO!x)avJd18tQ;U^4g!XO=1l)TXMNSuljqjvguhDc1~x{V7KMLdIcutu{v{W^W?+h_ z_zU{q0LFNV^z)*J&>WO_JwX!8{}6Rb>BbSH%Ufm=Y@ce;UQX^Au{<e!v*L2oD<R#_ zD|B~P#I1K4%s<y#0mQo2UAFw>^0LXJqj#8|S-n5CfB8P~gjxE2#SU}vIr^dw^FXMh zxMELnh4l62)~3$eH{P~E`mZ!wkdiKyUU_DQbx0rnX}(?xHgj0>3KE*jF!+4&_Gflg zDSGNu^qccy`Sfe#4!=M4X85i6w{XFH8S+?B%Es!!6-5YOcS2Mr-9XLq<q!rgn3{id z^X9;HWm|6ESy#`#*7ss}?T_kuq{r8&z%#f3K*p<g?P3RhcH{`VZT6L;N8kK~)n>K* zVy-RC^FN|3@!<qEe#9yaok{#i!JSiZu;8yS7LnX8p*Z0XS>)5edVu4K#?eF&QE-Sn zfcmMTPQiy;v_LMkFi`_UB+2vi0xTb7TfA<M#klaxu1Jxn%a&+kUZDoqewL`%D&6ea zq&5n+SY=G5QW({*1ec2nlU2pe_ifReV6U0|(SD1qz2quKDCYP}rw4ZV^0z7)q=($X zSC~d!*Sm9<9`XD_wDdNOMW<xD5st5WOUFaN3i`t^-hmLX1S2y;A%HoI6o&F3;hG8G z&zkMTzD2(@uO)9Vd_iSuED}T;D1PB)dIiIxGhSi#M|g#Ximhzq6W>5B9m&6eIK*Fo zIV<A!zw$SzI0fZzt7~?RMqS^#gTDZ)mR~^nJYM6Jj_bVgm_c!j74QeHfmXU}K@RUh zLXqagd`j&`(ZjR{CzbpLkP$*tGmHdqR&i~qIf;FQX2dIV1u6v=YYaPyq%uMMsFs-p z3cvxaUDEA>#~CgTuy>Qs1CtfV8u3`&<!di7R7GpI1}Z|f=fB|;1+T$x^SPHF9@`r2 z+P1WU&6-4=Rx7I2s)dvLc4%G3KMIXr4_V&APP;MDQEtiZug=ZxJ~tMvR+yd$H7at! z8--=N*{jw6=<(Q_JQn@8qt7c;s7no~UPP1Ovd$~(O)OMawxc`t?01UGDvFHYu68Ur zJhsyoTDH9|Hv2jFR+LHv&o7xA-fnQ~X4uy&I*Q4%7}=L7YxGV=_n&uZygE8qGO1_^ zedQ<TuDDq`xB9!@HN_6SUTu7#`n$+Xs1y+0s#oO4XVSf7*&~mV3pj3va95;sQB#4C zCGu|akhx*5CRi{1BS~PI2EFujMe#H&YlsU+*q^ip;(&qyIq9Yx^^%6a6d4Ujt!Tg* z1)?aDFN{7!kU7yzn4+Xv`BbrR(j(oS5UwjPlO8G@gIp&=bPODmYStw06NidtmwVWr zME*L3V~EQGgU31OhFc3)D_jRzUHH8iQ359Bt{@*=c%BpDMjmg7UM^3E&_ZMz4RmU< z)I`uwYQ#lwzwxOKdJ&oqerup@bMjWo)}wAtiYM&xVrb(2y4u4lR<B)sU24@eE!As1 z7Ogel_cc{I!?BQ4uLNzRv8?*+fyQQ0D5>vQv&^%oNmp6gTrZsV*4hn*=E3^qZ7mxd zP}VCokyvG!+bf7#RiLijkDP=aM9jqFZf7*Ov;=L^sS7V|DDim>fdIILK_)Hh9kPwi z&M}P?`vwDJ#0jVq5spQWE*&9Yg#QQr0|-kZ--0^<yI{n7BOS}ebMe%|{5M-^{q?V{ z(#*-PPe1pp^ggXH-LogBpFJs@HIs^+my4x8_&OHGvshr;7JucL#pzpbO)q}>8;eu7 z-In@@ZhmI28F+Q<cqlL-<MIC9Y%@w6F2BPQm&7{Lov};AikYeDY3?saJUn9c^J^Gz z(HuMDm&Ptd)X1f=PU&6dS{J)?3KNUJ%|i1}%q{(UXY|rb2&W*+)FI5t$W{%s2FO_; zUlL@6!5lC@Wl__l0#Mefl{>a9HZQSk%AViXiYWt3;PA|oMm-hZ&}1%N6kWJ8YFRP7 z=p)8!3d)jgL9*}63Z0c$l0Jza4Pp&$TRCuBT~2H8Z$RQ9dkSB2{S9l{jfuKA`0K;5 zx&*r*=!@gW7n}l{y}qVI`1<c%r(bjY9w6rei`rD@(Y9E_fr}5+$J(!7o9M2LFTQhe zymC*XDPB|5?4itug>n22@iu5JwTN}<#(0UL8#&*bB5(_#6#+*CiAyrK92hGYIYBaj zkqq#8m`Dk21uqM5E=?F(MM}2mASOhbQa7d)k;X_pWO;qKOhxEW_Vf7AErH=7|7}C@ zfjffx_66_IU8z2IxAsc+IeT1}>(A}hUS8C7&Qhg{wFm}<+2yx-!*0F7=Cr6(NrTmC zHGl$HuhBYf4awxjVgIeev7y`j`}PHH8;T9z>Q7zaI=9PpMBCM+J>u#**L8*V+;iCh zjYB7hz9OC70;r)4c22+7<J4>QzA{U(+wCqg>2z8n$h@Q%lZ8H3D39j<eQBWVFvh9> z&Q~?Yev5=7vA^$C27XI<MhbN%`wjKL5C`#;9DITp9>{YzSqhV*GZq1^MFM#u@xzRJ zCIts&S86&<U+Gh@-XnwJZYWPPm<6rzr%z6$k(u2OhX!O$KKHbJL4c!t;oO;vk)@FZ z1B{II!DOS^&R^b5I7(lT;FAI0%rwX*g^EwgEe&Ag11@Bwn|(R4r!tlHgW%%APfjbH z?^Ew!?4alPq<G!Jv&hlba;Sr-IwM>cdMTtKDIgF|AAiC}mgSam%39FUHf&2Iwq>>^ zKy$Cz=|!mS-4w0sB_!wHKJWwibFRuQg*`g4tq-Se?cdtKe!im^Cmv6E5w}}tSM$%$ zBW*rbj{p6$|J~2~zj{Wwem~^7#qH?-nC*Wg2D(tD$cYOrjnI0~urRZQa+ZQJ?T$D< z;kn9?+1=tX8Z~9{l4zzbFu&IJ947mpP=vPN-yWGiuk3>hVCj_QHtF-+Zz-dFV7`Qj z2et+)p>^a?A+~)Q)GllrN5{WMZug^ps4 X1|Ou=Q(*tda06I>Ma-t5~M?57D~u< zu*W&sPm}C6@9CGl2$(n~yeK`73`QqrSxpU0MLie^(1G$}G3i_?cpV9~O~$QqCngj` z&kt#dxI&ujLV^-Oe_5d+0#(_S>RNsF*{hLiIse6OnQugJiylA8YN~I1;Ku4J{r)TE z1$5kf^X(Jw!F2)QJ>0**$J~S<Ihc3b8LT0MD29`q-?N<&3>2i454306SzD&PE5%w; z(_IMQ!Cx2YcSGrRitT|D1hz8i1s<ux5mIN`zz7pw4*T+I<R{od?F7?gTo`QuNKV|^ z%(z1hF}Os7PuWy4wxTGA+MB<Bq`nTRWWq$GQqSjM4L~{sL!4ZQvRkPWY2u3)W2w{$ zwclM_V)uEqhGbHsag|tuiE^vv9FtS21ZAB;?+ceWz`&?diK0@g3pj1;Y)bYwtEyRg zN89mbb<0_64t6CN8UM97W-v0XRd4yWR9B(bnzi2AbjarmtBdVchsN)AS}n-U0`7ZP z#BI=6^hT@nM0(~T_DyNYMgQ_8YBRFlRj>nMdLy?$x#cy{T$Bf@$=GpDG{oB;rRI2a zb{uiyn3EQ4XeVHaP9U=Q+yz%G_$*2h1%mS7-o_MzBa-@<3T22n9V}^$2pHnj=;(By z9YD#2YQVC9Gi2u_A(>^fiW<Xi4fvo)YxM~b$do`2-bYY9!gC2rHwJEyYeM;@`oeSo z@k!*S&qGqx!T&T`OTuoaMlI+};R+jD=qz<Av^s^ev?5?g>l;BwXR#=e_*A3P>R1M9 zovX;M)wH(hZCXQ7g-4}oR~xK$i$O(SR-Ib<j@DUX*E?0-_S!P51+<B-fJtfeDzpxy zMOP^G!p{)Oh=$#BY3!+|VpHs}Xfdhv$ki??g$^y)I~`iVTx1UTQ9CA+>)xW!fLX7z zYt>3Yqca*bf`YAfhTP1g)*h42x0;ortFp*j;wf?k96F{oJM}?i+C|uEiS#UJd^MJp z3XC<8gwI=B=0L8Y7L^VL2#vyFv>>!p!iaaZ|C0DqF+5A5&L0vVhi#*ZGD9&Ja-ynf zZVE6ZN*EQS<~DiMAXSKp$Jr*i5P(S%l_&gOQ59wSnDqXlTW`B)l{z(f%dv|(rN>(K zR*F@zaA<MIZ5@jV#JsrUS3G1<7+88?qx61^=@VgJ*VV^w?2mePUMXE1trRK;TGkap zIuNfBip&sp9)>5mZ5E!B;++1j=M>TN{uj@;nW$j?H;;$$fqIT*!FS}DAwJ2P&S)d# zxf;LnvK+A_FDtOsncq&aXC?V%6}Ct6%Q{#&Yx2uvi{60}U<xg^m=+A@mjx^z&M%8t zzAC@0!168mWhL~cFXWdg8|c^b%Q{#pUdS)&7lfIwcdT!)cWiW1X7A*1cQ(J4|Js_# z<_5<`1NAj^`7J9mqnT{?M5Zs$b10D8zqesxqCe1|9UBR(7#p3)3=fY5#<OGlGQATu z0}~VDZMC)i`Rz5mV<QWCk$Jpt!65%01tKc5VDExSyjM4JFno01N7uIE$SmwDgE)T_ z`cXZ~sP1phSczjs`ElI~Ch*;d<9d(}C4lqx<30`8I<cT1>;1Ua7?4;2aM;lG=;&em zj$z9<-?tB2da=C*8J_8^am3!&;<x{Aj<4a*Fv9DcS3T^lpZLR;Gvp;<3Z`T#^fC>M z!aAT84a|rhXJ!^=WuQ4_4p;+Ru;>;s52y^htOV>L#K|526tN5pdf-D~VVH7}<Aznk zzZ_$6*pg~l9jj*z80Q-i#MlgLd<*7xZ9qdW1Za$i6BmPMvV$!JtHpA*f~{n$*lM<h zt!16?X|87**hY31+r&1rv)LBn2WQ*a4z`o+V&|~ktc#t?_ONc&!+KdC%dmd7mkqE% zwvP?5VK%}>*%%u~iqb60u?etd><571AUnhkv-8;nY>HjTE@BtMrhO^9j9t#IU`N=M z>?(FOyM|rM{()V`u4hMKe!h|2#BOGvVV^}n>#giIc00R+9b?DYo$Pb$E+BmFVfV7n zvoEkOvisQm>;d*5JHZ}eUt$llFSAG3qwF#EID3LU$({lY+*jCF+1J?D*-19do?+i$ z-(=6S=h#28=h?T|x7l~tci9U7AbpR0pS{FhX0NbU*$>zc!4C8q`!Rc+{e->2{)zpR zy~$3ox7g3vKeL~+e__8s@a-?zzp-DjU$eK_JM1^?-`TtDx9mUId+c}Y_v{bsKiMDI zpV*(-`|L05uj~Uh!#-rE*({UTe+dhaVn(3EHv*_h1+}0Nw1Q613kJc6xw%=e2yk`^ zcEKSy1()C!iUf~PEO><yp%k*%F9d|3P$rZM6+%b|3lX7Gs1mA$s1Ot4n3dEDbwa(+ zAS8rFp-E^Kl0u8nDzpjh!a`vYfJkX!v9Ltw5S9wdgyq7D1?ukJ-m%Hi2}gJD#NdAP z=6Fvw(>*jkHaI$w6TAER)DQ#%gZneO?re7KK)h#cVj#cRH+En&zc`%fpU}$(WC!;S zOjzXQ+(<Xb&FQ$0Y@nm9XCA@NF`c<(a$F;?PL8X3@I0BUrUw!Q*P2k!f}&?^xDOv= zLmK)R>CO&md$NO>{@(6f21{ezeOQ`MW9dLHlNEa=_iB2(hclyn-B}|RhU0^y5JH2a zd*!vU$%(yq<-I04Kc35s<_1w58D;N4rguooKZgf%69z2p&%)VH?=-hU?_(_N;qRg= ztWA#ND2T*Nymxpkmoev8M!F9Ujtm~2UmqOh>!$qvY$i7`mdzM@2eZAynRx%;@NlNj zlwZTM4iAoI4EfdEaCdHiA2~TVf%@sr_GxiacQ%gKRP_!Ij*lP02Hc%CDEX2JpObz3 zErwB426=UIoL1<F$vy>yJZ>>IJls7lpQ*#jST;U_?KTwMNM>{*-Zz-*oy^g=pw4g7 z_hvJFc#d8?hN2Horlk-5RGPl-iS8bhuemRS`oPmn#CZ$R&aFq}rTHcp$8dzp;RfBq z@yXHsne1TyV5YC+e>yJkv7L0|GtPE?;sF&O+uA=licW#rp1-l@zdgwRu|30Md(Sx2 z@k#qX{vMN~xykYIu`GsFqkINRAU8IgG0m+_4317_Eb=N<z}V<0##p_)VZ3`Xm$A#s z)QY;Z6Y>6R_edsxwfr_$;Ruu{su$PbS9Qyqaa!*XKP%3~LMH$4XKY7D%s;~X#{47j zo962{H<1~S_uy)0u0ynp<zI*IM}t0d_ZXf@S9p-IaV1~G&2mE%W8-se7Vo%!uosVx zcguFi_Yd}E#_*13Y%8pdjP(o-XLNmo{rzzWv`n9YFAnY<MHfRU({{9K-mv6d*~|zY zB7a;qGm2ZFG2=Kjl{d9)YU4)wK#v&iK7=>WKq?K6=LU0z%*gn}q4<HpQ3wfT22wMt z&K&F=p6tu$G6%=INBgKBVsV0`3@TTbIg}R<eIgb${h3T36`3C09^!a#v^#r9%a^H7 z>i7~KXs}zu7svbhO?)9Y*@M@Z9L~7p)k7l?6GP~uSu~Ha>>=w%Hq(lHfy0C23R+Xr zM^1&$iA+}6Ka985_Cw6_B3JXJNgRnSM*7G=z|feHDXfi+Lm})_$@>(0A%PTo2Qe<} zh2Vrpg<zP_?IqCw;W0>?`QmtYHlw9wRO8-^g_g!AA)m9E^Cr=Ljo2_S*~4!&HcIF7 zwc!bKesPe50(y%|URUlN9_z{I_Kw9T#z<~v)O)ktJw13Ke2))c4e~IPweHQ1O`>HU z!hQPV6Nkn#$^ks^gn9rEi?UJ-KxUf<#<GKl(KR4@vM5(2Zap@k931T#JE#~O?H@A? z=5mvTx--cu*-XA1_-alyh_eTKRr{!)9a8Mejg6XyGCkcraeC}Q3`OEl=8!nteLy`t z*po$7TZd@`?U@|LOHWRW^$#A@&TTRB8l|R_g+Nr$nx4ibdQ)t}fwVl_Jz?NWV_DP^ z1`fWG%M7C(pux#UO=L3}dB-IB0Y6SRjM|Ln22dkv8VN8SYKF&pyXhna7KXGV-Gfv! z-F*sL($KI=BcXOAvloRsHkwh>ut107ds4}(R69b=Y63e|BZJf%3?mS47@qi`prD>+ z8JQfO7#v4ymwQc4F)}%k(Trve@G8{t1>WRzqd?hZ4$%0g7#+hgV`$p_-MtwDm3n+U z3jvThU>M8p?H(OG%%5C^&N)6gp&mz<>fW2tjCVu+^mdOb#=CPl71{!-L>wO+RpB4) zS3i#a9GAyd1uf%aa<36rh8}_9Aq7F5zmH`+i(#AkKs<NeBo$kJ!lOhJ&Sf;b1*0^S z=S|{S^;r}twaWvjDHI~FjGP|56XhRAE6AzjWgXfi>TR?)lT%|6cOFn?GkY@!%_Nwh zqCt#cD9&VYJgxJu{kVPx&kK<V@q+XCGR_+xK7<R7kC6s4n!zQo*guxVapRM@0Xm7V z4`urBP*|qkS6IpoC}<mQKtmGF<!==49q1n23sI3po5)PqvSVXtb+Sm18^8XHO=32e zQ)DN54ym(~qx5W=TsI1g9#US&Dd=0DgMdI4_T%=({4yHmNcXTlho0Fx5JwvtSINsZ zUKiPTW_14`)G=ywru-(<0Lm?g15sO9V=gm+k!^1-PVz`oSX1Q&1~bEb>Kq0EXo4F4 zjdr5SQDZ%1&f#sTG4*Eps2WVUu}La08YZ)2!<O9mFvQfnbTG*q3O!nb#(<Wd8P?HI z80X`GmM_xF$x8#>!~J@CqkK~{<PMEMr;S7F?LK76uRyhhA~#yt*9%QAH@8CCm^ptS z=?D|uqZ79LIy&D71nLOnp8kwYg>y6eQDB7?=u^Xeg`-GfTJmS0n`E-ow{-apXrhHD z!{Pz7T4R3CNM>SSZ0;f>7$gf9p|LZEu7@&|Ul30QC9b#d<Y+IjA&g}U$749a8Mtxb z0MsWAnK)E<ToT0D!o_l<B+VxZkCB_mqOJ><!rEl-#AG&8xYYjc>|l4#a0Zte?TzQh ze+8|G6Wx0?6WzHXl9XE5E;3N7#xoi`2j&Rf!`O5XV;D4c-NXQzDO8$l4vUi`JvkD9 z8hLSYTseU%%PA+aq?6-m&`%)M=#cp}nl6~;_VM|Ger|PgTs?7MZ~`}0O=5%@?z2yh zer&A5E)vK1A~~s>S5Gx)f?SWG1+H9Z_mAX<X&sjGx*{#2wUZR3MfA&2l$)@BM17z; xON+__-4ne7x&s4)6LRfg5lt~pb*_?Sw3e3R2Qa9r508zFP%q-&xGt<7{~rZr@2&s< diff --git a/docs/dist/editor.worker.js b/docs/dist/editor.worker.js deleted file mode 100644 index 5b5761e8..00000000 --- a/docs/dist/editor.worker.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const t=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout((()=>{if(e.stack)throw new Error(e.message+"\n\n"+e.stack);throw e}),0)}}emit(e){this.listeners.forEach((t=>{t(e)}))}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}};function n(e){var n;(n=e)instanceof Error&&n.name===r&&n.message===r||t.onUnexpectedError(e)}function i(e){if(e instanceof Error){let{name:t,message:n}=e;return{$isError:!0,name:t,message:n,stack:e.stacktrace||e.stack}}return e}const r="Canceled";var s;function o(e){}!function(e){e.is=function(e){return e&&"object"==typeof e&&"function"==typeof e[Symbol.iterator]};const t=Object.freeze([]);e.empty=function(){return t},e.single=function*(e){yield e},e.from=function(e){return e||t},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){for(const n of e)if(t(n))return!0;return!1},e.filter=function*(e,t){for(const n of e)t(n)&&(yield n)},e.map=function*(e,t){for(const n of e)yield t(n)},e.concat=function*(...e){for(const t of e)for(const e of t)yield e},e.consume=function(t,n=Number.POSITIVE_INFINITY){const i=[];if(0===n)return[i,t];const r=t[Symbol.iterator]();for(let t=0;t<n;t++){const t=r.next();if(t.done)return[i,e.empty()];i.push(t.value)}return[i,{[Symbol.iterator]:()=>r}]}}(s||(s={}));class a extends Error{constructor(e){super(`Encounter errors while disposing of store. Errors: [${e.join(", ")}]`),this.errors=e}}function l(e){if(s.is(e)){let t=[];for(const n of e)if(n)try{n.dispose()}catch(e){t.push(e)}if(1===t.length)throw t[0];if(t.length>1)throw new a(t);return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}class u{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}clear(){try{l(this._toDispose.values())}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?u.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}u.DISABLE_DISPOSED_WARNING=!1;class h{constructor(){this._store=new u}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}h.None=Object.freeze({dispose(){}});const d="en";let c,f,m,g=!1,_=!1,p=!1,C=!1,b=!1,L=!1,N=null;const S="undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.electron&&"renderer"===process.type;if("object"!=typeof navigator||S){if("object"==typeof process){g="win32"===process.platform,_="darwin"===process.platform,p="linux"===process.platform,c=d,N=d;const e=process.env.VSCODE_NLS_CONFIG;if(e)try{const t=JSON.parse(e),n=t.availableLanguages["*"];c=t.locale,N=n||d,f=t._translationsConfigFile}catch(e){}C=!0}}else m=navigator.userAgent,g=m.indexOf("Windows")>=0,_=m.indexOf("Macintosh")>=0,(m.indexOf("Macintosh")>=0||m.indexOf("iPad")>=0||m.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,p=m.indexOf("Linux")>=0,!0,c=navigator.language,N=c;let E=0;_?E=1:g?E=3:p&&(E=2);const A=g,y=_,w="object"==typeof self?self:"object"==typeof e.g?e.g:{},v=function(){if(w.setImmediate)return w.setImmediate.bind(w);if("function"==typeof w.postMessage&&!w.importScripts){let e=[];w.addEventListener("message",(t=>{if(t.data&&t.data.vscodeSetImmediateId)for(let n=0,i=e.length;n<i;n++){const i=e[n];if(i.id===t.data.vscodeSetImmediateId)return e.splice(n,1),void i.callback()}}));let t=0;return n=>{const i=++t;e.push({id:i,callback:n}),w.postMessage({vscodeSetImmediateId:i},"*")}}if("undefined"!=typeof process&&"function"==typeof process.nextTick)return process.nextTick.bind(process);const e=Promise.resolve();return t=>e.then(t)}();function T(e){const t=[];for(const n of function(e){let t=[],n=Object.getPrototypeOf(e);for(;Object.prototype!==n;)t=t.concat(Object.getOwnPropertyNames(n)),n=Object.getPrototypeOf(n);return t}(e))"function"==typeof e[n]&&t.push(n);return t}function O(e,t){const n=e=>function(){const n=Array.prototype.slice.call(arguments,0);return t(e,n)};let i={};for(const t of e)i[t]=n(t);return i}class I{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null)}setWorkerId(e){this._workerId=e}sendMessage(e,t){let n=String(++this._lastSentReq);return new Promise(((i,r)=>{this._pendingReplies[n]={resolve:i,reject:r},this._send({vsWorker:this._workerId,req:n,method:e,args:t})}))}handleMessage(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}_handleMessage(e){if(e.seq){let t=e;if(!this._pendingReplies[t.seq])return void console.warn("Got reply to unknown seq");let n=this._pendingReplies[t.seq];if(delete this._pendingReplies[t.seq],t.err){let e=t.err;return t.err.$isError&&(e=new Error,e.name=t.err.name,e.message=t.err.message,e.stack=t.err.stack),void n.reject(e)}return void n.resolve(t.res)}let t=e,n=t.req;this._handler.handleMessage(t.method,t.args).then((e=>{this._send({vsWorker:this._workerId,seq:n,res:e,err:void 0})}),(e=>{e.detail instanceof Error&&(e.detail=i(e.detail)),this._send({vsWorker:this._workerId,seq:n,res:void 0,err:i(e)})}))}_send(e){let t=[];if(e.req){const n=e;for(let e=0;e<n.args.length;e++)n.args[e]instanceof ArrayBuffer&&t.push(n.args[e])}else{const n=e;n.res instanceof ArrayBuffer&&t.push(n.res)}this._handler.sendMessage(e,t)}}class M{constructor(e,t){this._requestHandlerFactory=t,this._requestHandler=null,this._protocol=new I({sendMessage:(t,n)=>{e(t,n)},handleMessage:(e,t)=>this._handleMessage(e,t)})}onmessage(e){this._protocol.handleMessage(e)}_handleMessage(e,t){if("$initialize"===e)return this.initialize(t[0],t[1],t[2],t[3]);if(!this._requestHandler||"function"!=typeof this._requestHandler[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._requestHandler[e].apply(this._requestHandler,t))}catch(e){return Promise.reject(e)}}initialize(e,t,n,i){this._protocol.setWorkerId(e);const r=O(i,((e,t)=>this._protocol.sendMessage(e,t)));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(r),Promise.resolve(T(this._requestHandler))):(t&&(void 0!==t.baseUrl&&delete t.baseUrl,void 0!==t.paths&&void 0!==t.paths.vs&&delete t.paths.vs,t.catchError=!0,self.require.config(t)),new Promise(((e,t)=>{self.require([n],(n=>{this._requestHandler=n.create(r),this._requestHandler?e(T(this._requestHandler)):t(new Error("No RequestHandler!"))}),t)})))}}function x(e,t){return R(e,t,0,e.length-1,[]),e}function R(e,t,n,i,r){if(i<=n)return;const s=n+(i-n)/2|0;R(e,t,n,s,r),R(e,t,s+1,i,r),t(e[s],e[s+1])<=0||function(e,t,n,i,r,s){let o=n,a=i+1;for(let t=n;t<=r;t++)s[t]=e[t];for(let l=n;l<=r;l++)o>i?e[l]=s[a++]:a>r?e[l]=s[o++]:t(s[a],s[o])<0?e[l]=s[a++]:e[l]=s[o++]}(e,t,n,s,i,r)}class P{constructor(e,t,n,i){this.originalStart=e,this.originalLength=t,this.modifiedStart=n,this.modifiedLength=i}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}function U(e){return 55296<=e&&e<=56319}function k(e){return 56320<=e&&e<=57343}String.fromCharCode(65279);class D{constructor(){this._data=JSON.parse("[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]")}static getInstance(){return D._INSTANCE||(D._INSTANCE=new D),D._INSTANCE}getGraphemeBreakType(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;const t=this._data,n=t.length/3;let i=1;for(;i<=n;)if(e<t[3*i])i*=2;else{if(!(e>t[3*i+1]))return t[3*i+2];i=2*i+1}return 0}}function F(e,t){return(t<<5)-t+e|0}function K(e,t){t=F(149417,t);for(let n=0,i=e.length;n<i;n++)t=F(e.charCodeAt(n),t);return t}function B(e,t,n=32){const i=n-t;return(e<<t|(~((1<<i)-1)&e)>>>i)>>>0}function W(e,t=0,n=e.byteLength,i=0){for(let r=0;r<n;r++)e[t+r]=i}function q(e,t=32){return function(e,t,n="0"){for(;e.length<t;)e=n+e;return e}((e>>>0).toString(16),t/4)}D._INSTANCE=null;class H{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(0===t)return;const n=this._buff;let i,r,s=this._buffLen,o=this._leftoverHighSurrogate;for(0!==o?(i=o,r=-1,o=0):(i=e.charCodeAt(0),r=0);;){let a=i;if(U(i)){if(!(r+1<t)){o=i;break}{const t=e.charCodeAt(r+1);k(t)?(r++,a=t-56320+(i-55296<<10)+65536):a=65533}}else k(i)&&(a=65533);if(s=this._push(n,s,a),r++,!(r<t))break;i=e.charCodeAt(r)}this._buffLen=s,this._leftoverHighSurrogate=o}_push(e,t,n){return n<128?e[t++]=n:n<2048?(e[t++]=192|(1984&n)>>>6,e[t++]=128|(63&n)>>>0):n<65536?(e[t++]=224|(61440&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0):(e[t++]=240|(1835008&n)>>>18,e[t++]=128|(258048&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),q(this._h0)+q(this._h1)+q(this._h2)+q(this._h3)+q(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,W(this._buff,this._buffLen),this._buffLen>56&&(this._step(),W(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=H._bigBlock32,t=this._buffDV;for(let n=0;n<64;n+=4)e.setUint32(n,t.getUint32(n,!1),!1);for(let t=64;t<320;t+=4)e.setUint32(t,B(e.getUint32(t-12,!1)^e.getUint32(t-32,!1)^e.getUint32(t-56,!1)^e.getUint32(t-64,!1),1),!1);let n,i,r,s=this._h0,o=this._h1,a=this._h2,l=this._h3,u=this._h4;for(let t=0;t<80;t++)t<20?(n=o&a|~o&l,i=1518500249):t<40?(n=o^a^l,i=1859775393):t<60?(n=o&a|o&l|a&l,i=2400959708):(n=o^a^l,i=3395469782),r=B(s,5)+n+u+i+e.getUint32(4*t,!1)&4294967295,u=l,l=a,a=B(o,30),o=s,s=r;this._h0=this._h0+s&4294967295,this._h1=this._h1+o&4294967295,this._h2=this._h2+a&4294967295,this._h3=this._h3+l&4294967295,this._h4=this._h4+u&4294967295}}H._bigBlock32=new DataView(new ArrayBuffer(320));class V{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let n=0,i=e.length;n<i;n++)t[n]=e.charCodeAt(n);return t}}function Y(e,t,n){return new z(new V(e),new V(t)).ComputeDiff(n).changes}class ${static Assert(e,t){if(!e)throw new Error(t)}}class j{static Copy(e,t,n,i,r){for(let s=0;s<r;s++)n[i+s]=e[t+s]}static Copy2(e,t,n,i,r){for(let s=0;s<r;s++)n[i+s]=e[t+s]}}class G{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new P(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class z{constructor(e,t,n=null){this.ContinueProcessingPredicate=n;const[i,r,s]=z._getElements(e),[o,a,l]=z._getElements(t);this._hasStrings=s&&l,this._originalStringElements=i,this._originalElementsOrHash=r,this._modifiedStringElements=o,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&"string"==typeof e[0]}static _getElements(e){const t=e.getElements();if(z._isStringArray(t)){const e=new Int32Array(t.length);for(let n=0,i=t.length;n<i;n++)e[n]=K(t[n],0);return[t,e,!0]}return t instanceof Int32Array?[[],t,!1]:[[],new Int32Array(t),!1]}ElementsAreEqual(e,t){return this._originalElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._modifiedStringElements[t])}OriginalElementsAreEqual(e,t){return this._originalElementsOrHash[e]===this._originalElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._originalStringElements[t])}ModifiedElementsAreEqual(e,t){return this._modifiedElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._modifiedStringElements[e]===this._modifiedStringElements[t])}ComputeDiff(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}_ComputeDiff(e,t,n,i,r){const s=[!1];let o=this.ComputeDiffRecursive(e,t,n,i,s);return r&&(o=this.PrettifyChanges(o)),{quitEarly:s[0],changes:o}}ComputeDiffRecursive(e,t,n,i,r){for(r[0]=!1;e<=t&&n<=i&&this.ElementsAreEqual(e,n);)e++,n++;for(;t>=e&&i>=n&&this.ElementsAreEqual(t,i);)t--,i--;if(e>t||n>i){let r;return n<=i?($.Assert(e===t+1,"originalStart should only be one more than originalEnd"),r=[new P(e,0,n,i-n+1)]):e<=t?($.Assert(n===i+1,"modifiedStart should only be one more than modifiedEnd"),r=[new P(e,t-e+1,n,0)]):($.Assert(e===t+1,"originalStart should only be one more than originalEnd"),$.Assert(n===i+1,"modifiedStart should only be one more than modifiedEnd"),r=[]),r}const s=[0],o=[0],a=this.ComputeRecursionPoint(e,t,n,i,s,o,r),l=s[0],u=o[0];if(null!==a)return a;if(!r[0]){const s=this.ComputeDiffRecursive(e,l,n,u,r);let o=[];return o=r[0]?[new P(l+1,t-(l+1)+1,u+1,i-(u+1)+1)]:this.ComputeDiffRecursive(l+1,t,u+1,i,r),this.ConcatenateChanges(s,o)}return[new P(e,t-e+1,n,i-n+1)]}WALKTRACE(e,t,n,i,r,s,o,a,l,u,h,d,c,f,m,g,_,p){let C=null,b=null,L=new G,N=t,S=n,E=c[0]-g[0]-i,A=-1073741824,y=this.m_forwardHistory.length-1;do{const t=E+e;t===N||t<S&&l[t-1]<l[t+1]?(f=(h=l[t+1])-E-i,h<A&&L.MarkNextChange(),A=h,L.AddModifiedElement(h+1,f),E=t+1-e):(f=(h=l[t-1]+1)-E-i,h<A&&L.MarkNextChange(),A=h-1,L.AddOriginalElement(h,f+1),E=t-1-e),y>=0&&(e=(l=this.m_forwardHistory[y])[0],N=1,S=l.length-1)}while(--y>=-1);if(C=L.getReverseChanges(),p[0]){let e=c[0]+1,t=g[0]+1;if(null!==C&&C.length>0){const n=C[C.length-1];e=Math.max(e,n.getOriginalEnd()),t=Math.max(t,n.getModifiedEnd())}b=[new P(e,d-e+1,t,m-t+1)]}else{L=new G,N=s,S=o,E=c[0]-g[0]-a,A=1073741824,y=_?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const e=E+r;e===N||e<S&&u[e-1]>=u[e+1]?(f=(h=u[e+1]-1)-E-a,h>A&&L.MarkNextChange(),A=h+1,L.AddOriginalElement(h+1,f+1),E=e+1-r):(f=(h=u[e-1])-E-a,h>A&&L.MarkNextChange(),A=h,L.AddModifiedElement(h+1,f+1),E=e-1-r),y>=0&&(r=(u=this.m_reverseHistory[y])[0],N=1,S=u.length-1)}while(--y>=-1);b=L.getChanges()}return this.ConcatenateChanges(C,b)}ComputeRecursionPoint(e,t,n,i,r,s,o){let a=0,l=0,u=0,h=0,d=0,c=0;e--,n--,r[0]=0,s[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const f=t-e+(i-n),m=f+1,g=new Int32Array(m),_=new Int32Array(m),p=i-n,C=t-e,b=e-n,L=t-i,N=(C-p)%2==0;g[p]=e,_[C]=t,o[0]=!1;for(let S=1;S<=f/2+1;S++){let f=0,E=0;u=this.ClipDiagonalBound(p-S,S,p,m),h=this.ClipDiagonalBound(p+S,S,p,m);for(let e=u;e<=h;e+=2){a=e===u||e<h&&g[e-1]<g[e+1]?g[e+1]:g[e-1]+1,l=a-(e-p)-b;const n=a;for(;a<t&&l<i&&this.ElementsAreEqual(a+1,l+1);)a++,l++;if(g[e]=a,a+l>f+E&&(f=a,E=l),!N&&Math.abs(e-C)<=S-1&&a>=_[e])return r[0]=a,s[0]=l,n<=_[e]&&S<=1448?this.WALKTRACE(p,u,h,b,C,d,c,L,g,_,a,t,r,l,i,s,N,o):null}const A=(f-e+(E-n)-S)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(f,A))return o[0]=!0,r[0]=f,s[0]=E,A>0&&S<=1448?this.WALKTRACE(p,u,h,b,C,d,c,L,g,_,a,t,r,l,i,s,N,o):(e++,n++,[new P(e,t-e+1,n,i-n+1)]);d=this.ClipDiagonalBound(C-S,S,C,m),c=this.ClipDiagonalBound(C+S,S,C,m);for(let f=d;f<=c;f+=2){a=f===d||f<c&&_[f-1]>=_[f+1]?_[f+1]-1:_[f-1],l=a-(f-C)-L;const m=a;for(;a>e&&l>n&&this.ElementsAreEqual(a,l);)a--,l--;if(_[f]=a,N&&Math.abs(f-p)<=S&&a<=g[f])return r[0]=a,s[0]=l,m>=g[f]&&S<=1448?this.WALKTRACE(p,u,h,b,C,d,c,L,g,_,a,t,r,l,i,s,N,o):null}if(S<=1447){let e=new Int32Array(h-u+2);e[0]=p-u+1,j.Copy2(g,u,e,1,h-u+1),this.m_forwardHistory.push(e),e=new Int32Array(c-d+2),e[0]=C-d+1,j.Copy2(_,d,e,1,c-d+1),this.m_reverseHistory.push(e)}}return this.WALKTRACE(p,u,h,b,C,d,c,L,g,_,a,t,r,l,i,s,N,o)}PrettifyChanges(e){for(let t=0;t<e.length;t++){const n=e[t],i=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,r=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,s=n.originalLength>0,o=n.modifiedLength>0;for(;n.originalStart+n.originalLength<i&&n.modifiedStart+n.modifiedLength<r&&(!s||this.OriginalElementsAreEqual(n.originalStart,n.originalStart+n.originalLength))&&(!o||this.ModifiedElementsAreEqual(n.modifiedStart,n.modifiedStart+n.modifiedLength));)n.originalStart++,n.modifiedStart++;let a=[null];t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],a)&&(e[t]=a[0],e.splice(t+1,1),t--)}for(let t=e.length-1;t>=0;t--){const n=e[t];let i=0,r=0;if(t>0){const n=e[t-1];n.originalLength>0&&(i=n.originalStart+n.originalLength),n.modifiedLength>0&&(r=n.modifiedStart+n.modifiedLength)}const s=n.originalLength>0,o=n.modifiedLength>0;let a=0,l=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength);for(let e=1;;e++){const t=n.originalStart-e,u=n.modifiedStart-e;if(t<i||u<r)break;if(s&&!this.OriginalElementsAreEqual(t,t+n.originalLength))break;if(o&&!this.ModifiedElementsAreEqual(u,u+n.modifiedLength))break;const h=this._boundaryScore(t,n.originalLength,u,n.modifiedLength);h>l&&(l=h,a=e)}n.originalStart-=a,n.modifiedStart-=a}return e}_OriginalIsBoundary(e){return e<=0||e>=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1}_boundaryScore(e,t,n,i){return(this._OriginalRegionIsBoundary(e,t)?1:0)+(this._ModifiedRegionIsBoundary(n,i)?1:0)}ConcatenateChanges(e,t){let n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){const i=new Array(e.length+t.length-1);return j.Copy(e,0,i,0,e.length-1),i[e.length-1]=n[0],j.Copy(t,1,i,e.length,t.length-1),i}{const n=new Array(e.length+t.length);return j.Copy(e,0,n,0,e.length),j.Copy(t,0,n,e.length,t.length),n}}ChangesOverlap(e,t,n){if($.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),$.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const i=e.originalStart;let r=e.originalLength;const s=e.modifiedStart;let o=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(r=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(o=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new P(i,r,s,o),!0}return n[0]=null,!1}ClipDiagonalBound(e,t,n,i){if(e>=0&&e<i)return e;const r=t%2==0;return e<0?r===(n%2==0)?0:1:r===((i-n-1)%2==0)?i-1:i-2}}const Q="undefined"==typeof process?{cwd:()=>"/",env:Object.create(null),get platform(){return A?"win32":y?"darwin":"linux"},nextTick:e=>v(e)}:process,X=Q.cwd,Z=Q.env,J=Q.platform,ee=46,te=47,ne=92,ie=58;class re extends Error{constructor(e,t,n){let i;"string"==typeof t&&0===t.indexOf("not ")?(i="must not be",t=t.replace(/^not /,"")):i="must be";const r=-1!==e.indexOf(".")?"property":"argument";let s=`The "${e}" ${r} ${i} of type ${t}`;s+=". Received type "+typeof n,super(s),this.code="ERR_INVALID_ARG_TYPE"}}function se(e,t){if("string"!=typeof e)throw new re(t,"string",e)}function oe(e){return e===te||e===ne}function ae(e){return e===te}function le(e){return e>=65&&e<=90||e>=97&&e<=122}function ue(e,t,n,i){let r="",s=0,o=-1,a=0,l=0;for(let u=0;u<=e.length;++u){if(u<e.length)l=e.charCodeAt(u);else{if(i(l))break;l=te}if(i(l)){if(o===u-1||1===a);else if(2===a){if(r.length<2||2!==s||r.charCodeAt(r.length-1)!==ee||r.charCodeAt(r.length-2)!==ee){if(r.length>2){const e=r.lastIndexOf(n);-1===e?(r="",s=0):(r=r.slice(0,e),s=r.length-1-r.lastIndexOf(n)),o=u,a=0;continue}if(0!==r.length){r="",s=0,o=u,a=0;continue}}t&&(r+=r.length>0?`${n}..`:"..",s=2)}else r.length>0?r+=`${n}${e.slice(o+1,u)}`:r=e.slice(o+1,u),s=u-o-1;o=u,a=0}else l===ee&&-1!==a?++a:a=-1}return r}function he(e,t){if(null===t||"object"!=typeof t)throw new re("pathObject","Object",t);const n=t.dir||t.root,i=t.base||`${t.name||""}${t.ext||""}`;return n?n===t.root?`${n}${i}`:`${n}${e}${i}`:i}const de={resolve(...e){let t="",n="",i=!1;for(let r=e.length-1;r>=-1;r--){let s;if(r>=0){if(s=e[r],se(s,"path"),0===s.length)continue}else 0===t.length?s=X():(s=Z[`=${t}`]||X(),(void 0===s||s.slice(0,2).toLowerCase()!==t.toLowerCase()&&s.charCodeAt(2)===ne)&&(s=`${t}\\`));const o=s.length;let a=0,l="",u=!1;const h=s.charCodeAt(0);if(1===o)oe(h)&&(a=1,u=!0);else if(oe(h))if(u=!0,oe(s.charCodeAt(1))){let e=2,t=e;for(;e<o&&!oe(s.charCodeAt(e));)e++;if(e<o&&e!==t){const n=s.slice(t,e);for(t=e;e<o&&oe(s.charCodeAt(e));)e++;if(e<o&&e!==t){for(t=e;e<o&&!oe(s.charCodeAt(e));)e++;e!==o&&e===t||(l=`\\\\${n}\\${s.slice(t,e)}`,a=e)}}}else a=1;else le(h)&&s.charCodeAt(1)===ie&&(l=s.slice(0,2),a=2,o>2&&oe(s.charCodeAt(2))&&(u=!0,a=3));if(l.length>0)if(t.length>0){if(l.toLowerCase()!==t.toLowerCase())continue}else t=l;if(i){if(t.length>0)break}else if(n=`${s.slice(a)}\\${n}`,i=u,u&&t.length>0)break}return n=ue(n,!i,"\\",oe),i?`${t}\\${n}`:`${t}${n}`||"."},normalize(e){se(e,"path");const t=e.length;if(0===t)return".";let n,i=0,r=!1;const s=e.charCodeAt(0);if(1===t)return ae(s)?"\\":e;if(oe(s))if(r=!0,oe(e.charCodeAt(1))){let r=2,s=r;for(;r<t&&!oe(e.charCodeAt(r));)r++;if(r<t&&r!==s){const o=e.slice(s,r);for(s=r;r<t&&oe(e.charCodeAt(r));)r++;if(r<t&&r!==s){for(s=r;r<t&&!oe(e.charCodeAt(r));)r++;if(r===t)return`\\\\${o}\\${e.slice(s)}\\`;r!==s&&(n=`\\\\${o}\\${e.slice(s,r)}`,i=r)}}}else i=1;else le(s)&&e.charCodeAt(1)===ie&&(n=e.slice(0,2),i=2,t>2&&oe(e.charCodeAt(2))&&(r=!0,i=3));let o=i<t?ue(e.slice(i),!r,"\\",oe):"";return 0!==o.length||r||(o="."),o.length>0&&oe(e.charCodeAt(t-1))&&(o+="\\"),void 0===n?r?`\\${o}`:o:r?`${n}\\${o}`:`${n}${o}`},isAbsolute(e){se(e,"path");const t=e.length;if(0===t)return!1;const n=e.charCodeAt(0);return oe(n)||t>2&&le(n)&&e.charCodeAt(1)===ie&&oe(e.charCodeAt(2))},join(...e){if(0===e.length)return".";let t,n;for(let i=0;i<e.length;++i){const r=e[i];se(r,"path"),r.length>0&&(void 0===t?t=n=r:t+=`\\${r}`)}if(void 0===t)return".";let i=!0,r=0;if("string"==typeof n&&oe(n.charCodeAt(0))){++r;const e=n.length;e>1&&oe(n.charCodeAt(1))&&(++r,e>2&&(oe(n.charCodeAt(2))?++r:i=!1))}if(i){for(;r<t.length&&oe(t.charCodeAt(r));)r++;r>=2&&(t=`\\${t.slice(r)}`)}return de.normalize(t)},relative(e,t){if(se(e,"from"),se(t,"to"),e===t)return"";const n=de.resolve(e),i=de.resolve(t);if(n===i)return"";if((e=n.toLowerCase())===(t=i.toLowerCase()))return"";let r=0;for(;r<e.length&&e.charCodeAt(r)===ne;)r++;let s=e.length;for(;s-1>r&&e.charCodeAt(s-1)===ne;)s--;const o=s-r;let a=0;for(;a<t.length&&t.charCodeAt(a)===ne;)a++;let l=t.length;for(;l-1>a&&t.charCodeAt(l-1)===ne;)l--;const u=l-a,h=o<u?o:u;let d=-1,c=0;for(;c<h;c++){const n=e.charCodeAt(r+c);if(n!==t.charCodeAt(a+c))break;n===ne&&(d=c)}if(c!==h){if(-1===d)return i}else{if(u>h){if(t.charCodeAt(a+c)===ne)return i.slice(a+c+1);if(2===c)return i.slice(a+c)}o>h&&(e.charCodeAt(r+c)===ne?d=c:2===c&&(d=3)),-1===d&&(d=0)}let f="";for(c=r+d+1;c<=s;++c)c!==s&&e.charCodeAt(c)!==ne||(f+=0===f.length?"..":"\\..");return a+=d,f.length>0?`${f}${i.slice(a,l)}`:(i.charCodeAt(a)===ne&&++a,i.slice(a,l))},toNamespacedPath(e){if("string"!=typeof e)return e;if(0===e.length)return"";const t=de.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===ne){if(t.charCodeAt(1)===ne){const e=t.charCodeAt(2);if(63!==e&&e!==ee)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(le(t.charCodeAt(0))&&t.charCodeAt(1)===ie&&t.charCodeAt(2)===ne)return`\\\\?\\${t}`;return e},dirname(e){se(e,"path");const t=e.length;if(0===t)return".";let n=-1,i=0;const r=e.charCodeAt(0);if(1===t)return oe(r)?e:".";if(oe(r)){if(n=i=1,oe(e.charCodeAt(1))){let r=2,s=r;for(;r<t&&!oe(e.charCodeAt(r));)r++;if(r<t&&r!==s){for(s=r;r<t&&oe(e.charCodeAt(r));)r++;if(r<t&&r!==s){for(s=r;r<t&&!oe(e.charCodeAt(r));)r++;if(r===t)return e;r!==s&&(n=i=r+1)}}}}else le(r)&&e.charCodeAt(1)===ie&&(n=t>2&&oe(e.charCodeAt(2))?3:2,i=n);let s=-1,o=!0;for(let n=t-1;n>=i;--n)if(oe(e.charCodeAt(n))){if(!o){s=n;break}}else o=!1;if(-1===s){if(-1===n)return".";s=n}return e.slice(0,s)},basename(e,t){void 0!==t&&se(t,"ext"),se(e,"path");let n,i=0,r=-1,s=!0;if(e.length>=2&&le(e.charCodeAt(0))&&e.charCodeAt(1)===ie&&(i=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,a=-1;for(n=e.length-1;n>=i;--n){const l=e.charCodeAt(n);if(oe(l)){if(!s){i=n+1;break}}else-1===a&&(s=!1,a=n+1),o>=0&&(l===t.charCodeAt(o)?-1==--o&&(r=n):(o=-1,r=a))}return i===r?r=a:-1===r&&(r=e.length),e.slice(i,r)}for(n=e.length-1;n>=i;--n)if(oe(e.charCodeAt(n))){if(!s){i=n+1;break}}else-1===r&&(s=!1,r=n+1);return-1===r?"":e.slice(i,r)},extname(e){se(e,"path");let t=0,n=-1,i=0,r=-1,s=!0,o=0;e.length>=2&&e.charCodeAt(1)===ie&&le(e.charCodeAt(0))&&(t=i=2);for(let a=e.length-1;a>=t;--a){const t=e.charCodeAt(a);if(oe(t)){if(!s){i=a+1;break}}else-1===r&&(s=!1,r=a+1),t===ee?-1===n?n=a:1!==o&&(o=1):-1!==n&&(o=-1)}return-1===n||-1===r||0===o||1===o&&n===r-1&&n===i+1?"":e.slice(n,r)},format:he.bind(null,"\\"),parse(e){se(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const n=e.length;let i=0,r=e.charCodeAt(0);if(1===n)return oe(r)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(oe(r)){if(i=1,oe(e.charCodeAt(1))){let t=2,r=t;for(;t<n&&!oe(e.charCodeAt(t));)t++;if(t<n&&t!==r){for(r=t;t<n&&oe(e.charCodeAt(t));)t++;if(t<n&&t!==r){for(r=t;t<n&&!oe(e.charCodeAt(t));)t++;t===n?i=t:t!==r&&(i=t+1)}}}}else if(le(r)&&e.charCodeAt(1)===ie){if(n<=2)return t.root=t.dir=e,t;if(i=2,oe(e.charCodeAt(2))){if(3===n)return t.root=t.dir=e,t;i=3}}i>0&&(t.root=e.slice(0,i));let s=-1,o=i,a=-1,l=!0,u=e.length-1,h=0;for(;u>=i;--u)if(r=e.charCodeAt(u),oe(r)){if(!l){o=u+1;break}}else-1===a&&(l=!1,a=u+1),r===ee?-1===s?s=u:1!==h&&(h=1):-1!==s&&(h=-1);return-1!==a&&(-1===s||0===h||1===h&&s===a-1&&s===o+1?t.base=t.name=e.slice(o,a):(t.name=e.slice(o,s),t.base=e.slice(o,a),t.ext=e.slice(s,a))),t.dir=o>0&&o!==i?e.slice(0,o-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},ce={resolve(...e){let t="",n=!1;for(let i=e.length-1;i>=-1&&!n;i--){const r=i>=0?e[i]:X();se(r,"path"),0!==r.length&&(t=`${r}/${t}`,n=r.charCodeAt(0)===te)}return t=ue(t,!n,"/",ae),n?`/${t}`:t.length>0?t:"."},normalize(e){if(se(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===te,n=e.charCodeAt(e.length-1)===te;return 0===(e=ue(e,!t,"/",ae)).length?t?"/":n?"./":".":(n&&(e+="/"),t?`/${e}`:e)},isAbsolute:e=>(se(e,"path"),e.length>0&&e.charCodeAt(0)===te),join(...e){if(0===e.length)return".";let t;for(let n=0;n<e.length;++n){const i=e[n];se(i,"path"),i.length>0&&(void 0===t?t=i:t+=`/${i}`)}return void 0===t?".":ce.normalize(t)},relative(e,t){if(se(e,"from"),se(t,"to"),e===t)return"";if((e=ce.resolve(e))===(t=ce.resolve(t)))return"";const n=e.length,i=n-1,r=t.length-1,s=i<r?i:r;let o=-1,a=0;for(;a<s;a++){const n=e.charCodeAt(1+a);if(n!==t.charCodeAt(1+a))break;n===te&&(o=a)}if(a===s)if(r>s){if(t.charCodeAt(1+a)===te)return t.slice(1+a+1);if(0===a)return t.slice(1+a)}else i>s&&(e.charCodeAt(1+a)===te?o=a:0===a&&(o=0));let l="";for(a=1+o+1;a<=n;++a)a!==n&&e.charCodeAt(a)!==te||(l+=0===l.length?"..":"/..");return`${l}${t.slice(1+o)}`},toNamespacedPath:e=>e,dirname(e){if(se(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===te;let n=-1,i=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===te){if(!i){n=t;break}}else i=!1;return-1===n?t?"/":".":t&&1===n?"//":e.slice(0,n)},basename(e,t){void 0!==t&&se(t,"ext"),se(e,"path");let n,i=0,r=-1,s=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let o=t.length-1,a=-1;for(n=e.length-1;n>=0;--n){const l=e.charCodeAt(n);if(l===te){if(!s){i=n+1;break}}else-1===a&&(s=!1,a=n+1),o>=0&&(l===t.charCodeAt(o)?-1==--o&&(r=n):(o=-1,r=a))}return i===r?r=a:-1===r&&(r=e.length),e.slice(i,r)}for(n=e.length-1;n>=0;--n)if(e.charCodeAt(n)===te){if(!s){i=n+1;break}}else-1===r&&(s=!1,r=n+1);return-1===r?"":e.slice(i,r)},extname(e){se(e,"path");let t=-1,n=0,i=-1,r=!0,s=0;for(let o=e.length-1;o>=0;--o){const a=e.charCodeAt(o);if(a!==te)-1===i&&(r=!1,i=o+1),a===ee?-1===t?t=o:1!==s&&(s=1):-1!==t&&(s=-1);else if(!r){n=o+1;break}}return-1===t||-1===i||0===s||1===s&&t===i-1&&t===n+1?"":e.slice(t,i)},format:he.bind(null,"/"),parse(e){se(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const n=e.charCodeAt(0)===te;let i;n?(t.root="/",i=1):i=0;let r=-1,s=0,o=-1,a=!0,l=e.length-1,u=0;for(;l>=i;--l){const t=e.charCodeAt(l);if(t!==te)-1===o&&(a=!1,o=l+1),t===ee?-1===r?r=l:1!==u&&(u=1):-1!==r&&(u=-1);else if(!a){s=l+1;break}}if(-1!==o){const i=0===s&&n?1:s;-1===r||0===u||1===u&&r===o-1&&r===s+1?t.base=t.name=e.slice(i,o):(t.name=e.slice(i,r),t.base=e.slice(i,o),t.ext=e.slice(r,o))}return s>0?t.dir=e.slice(0,s-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};ce.win32=de.win32=de,ce.posix=de.posix=ce,"win32"===J?de.normalize:ce.normalize,"win32"===J?de.resolve:ce.resolve,"win32"===J?de.relative:ce.relative,"win32"===J?de.dirname:ce.dirname,"win32"===J?de.basename:ce.basename,"win32"===J?de.extname:ce.extname,"win32"===J?de.sep:ce.sep;const fe=/^\w[\w\d+.-]*$/,me=/^\//,ge=/^\/\//,_e="",pe="/",Ce=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class be{constructor(e,t,n,i,r,s=!1){"object"==typeof e?(this.scheme=e.scheme||_e,this.authority=e.authority||_e,this.path=e.path||_e,this.query=e.query||_e,this.fragment=e.fragment||_e):(this.scheme=function(e,t){return e||t?e:"file"}(e,s),this.authority=t||_e,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==pe&&(t=pe+t):t=pe}return t}(this.scheme,n||_e),this.query=i||_e,this.fragment=r||_e,function(e,t){if(!e.scheme&&t)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!fe.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!me.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(ge.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,s))}static isUri(e){return e instanceof be||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"function"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}get fsPath(){return ye(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:i,query:r,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=_e),void 0===n?n=this.authority:null===n&&(n=_e),void 0===i?i=this.path:null===i&&(i=_e),void 0===r?r=this.query:null===r&&(r=_e),void 0===s?s=this.fragment:null===s&&(s=_e),t===this.scheme&&n===this.authority&&i===this.path&&r===this.query&&s===this.fragment?this:new Ne(t,n,i,r,s)}static parse(e,t=!1){const n=Ce.exec(e);return n?new Ne(n[2]||_e,Oe(n[4]||_e),Oe(n[5]||_e),Oe(n[7]||_e),Oe(n[9]||_e),t):new Ne(_e,_e,_e,_e,_e)}static file(e){let t=_e;if(A&&(e=e.replace(/\\/g,pe)),e[0]===pe&&e[1]===pe){const n=e.indexOf(pe,2);-1===n?(t=e.substring(2),e=pe):(t=e.substring(2,n),e=e.substring(n)||pe)}return new Ne("file",t,e,_e,_e)}static from(e){return new Ne(e.scheme,e.authority,e.path,e.query,e.fragment)}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPaths on URI without path");let n;return n=A&&"file"===e.scheme?be.file(de.join(ye(e,!0),...t)).path:ce.join(e.path,...t),e.with({path:n})}toString(e=!1){return we(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof be)return e;{const t=new Ne(e);return t._formatted=e.external,t._fsPath=e._sep===Le?e.fsPath:null,t}}return e}}const Le=A?1:void 0;class Ne extends be{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=ye(this,!1)),this._fsPath}toString(e=!1){return e?we(this,!0):(this._formatted||(this._formatted=we(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Le),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const Se={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function Ee(e,t){let n,i=-1;for(let r=0;r<e.length;r++){const s=e.charCodeAt(r);if(s>=97&&s<=122||s>=65&&s<=90||s>=48&&s<=57||45===s||46===s||95===s||126===s||t&&47===s)-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),void 0!==n&&(n+=e.charAt(r));else{void 0===n&&(n=e.substr(0,r));const t=Se[s];void 0!==t?(-1!==i&&(n+=encodeURIComponent(e.substring(i,r)),i=-1),n+=t):-1===i&&(i=r)}}return-1!==i&&(n+=encodeURIComponent(e.substring(i))),void 0!==n?n:e}function Ae(e){let t;for(let n=0;n<e.length;n++){const i=e.charCodeAt(n);35===i||63===i?(void 0===t&&(t=e.substr(0,n)),t+=Se[i]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function ye(e,t){let n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,A&&(n=n.replace(/\//g,"\\")),n}function we(e,t){const n=t?Ae:Ee;let i="",{scheme:r,authority:s,path:o,query:a,fragment:l}=e;if(r&&(i+=r,i+=":"),(s||"file"===r)&&(i+=pe,i+=pe),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.indexOf(":"),-1===e?i+=n(t,!1):(i+=n(t.substr(0,e),!1),i+=":",i+=n(t.substr(e+1),!1)),i+="@"}s=s.toLowerCase(),e=s.indexOf(":"),-1===e?i+=n(s,!1):(i+=n(s.substr(0,e),!1),i+=s.substr(e))}if(o){if(o.length>=3&&47===o.charCodeAt(0)&&58===o.charCodeAt(2)){const e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&58===o.charCodeAt(1)){const e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}i+=n(o,!0)}return a&&(i+="?",i+=n(a,!1)),l&&(i+="#",i+=t?l:Ee(l,!1)),i}function ve(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+ve(e.substr(3)):e}}const Te=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Oe(e){return e.match(Te)?e.replace(Te,(e=>ve(e))):e}class Ie{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new Ie(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return Ie.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return Ie.isBefore(this,e)}static isBefore(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<t.column}isBeforeOrEqual(e){return Ie.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<=t.column}static compare(e,t){let n=0|e.lineNumber,i=0|t.lineNumber;return n===i?(0|e.column)-(0|t.column):n-i}clone(){return new Ie(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new Ie(e.lineNumber,e.column)}static isIPosition(e){return e&&"number"==typeof e.lineNumber&&"number"==typeof e.column}}class Me{constructor(e,t,n,i){e>n||e===n&&t>i?(this.startLineNumber=n,this.startColumn=i,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=i)}isEmpty(){return Me.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return Me.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<e.startColumn||t.lineNumber===e.endLineNumber&&t.column>e.endColumn)}containsRange(e){return Me.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)}strictContainsRange(e){return Me.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)}plusRange(e){return Me.plusRange(this,e)}static plusRange(e,t){let n,i,r,s;return t.startLineNumber<e.startLineNumber?(n=t.startLineNumber,i=t.startColumn):t.startLineNumber===e.startLineNumber?(n=t.startLineNumber,i=Math.min(t.startColumn,e.startColumn)):(n=e.startLineNumber,i=e.startColumn),t.endLineNumber>e.endLineNumber?(r=t.endLineNumber,s=t.endColumn):t.endLineNumber===e.endLineNumber?(r=t.endLineNumber,s=Math.max(t.endColumn,e.endColumn)):(r=e.endLineNumber,s=e.endColumn),new Me(n,i,r,s)}intersectRanges(e){return Me.intersectRanges(this,e)}static intersectRanges(e,t){let n=e.startLineNumber,i=e.startColumn,r=e.endLineNumber,s=e.endColumn,o=t.startLineNumber,a=t.startColumn,l=t.endLineNumber,u=t.endColumn;return n<o?(n=o,i=a):n===o&&(i=Math.max(i,a)),r>l?(r=l,s=u):r===l&&(s=Math.min(s,u)),n>r||n===r&&i>s?null:new Me(n,i,r,s)}equalsRange(e){return Me.equalsRange(this,e)}static equalsRange(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return Me.getEndPosition(this)}static getEndPosition(e){return new Ie(e.endLineNumber,e.endColumn)}getStartPosition(){return Me.getStartPosition(this)}static getStartPosition(e){return new Ie(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new Me(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new Me(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return Me.collapseToStart(this)}static collapseToStart(e){return new Me(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}static fromPositions(e,t=e){return new Me(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new Me(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"==typeof e.startLineNumber&&"number"==typeof e.startColumn&&"number"==typeof e.endLineNumber&&"number"==typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}static areIntersecting(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,t){if(e&&t){const n=0|e.startLineNumber,i=0|t.startLineNumber;if(n===i){const n=0|e.startColumn,i=0|t.startColumn;if(n===i){const n=0|e.endLineNumber,i=0|t.endLineNumber;return n===i?(0|e.endColumn)-(0|t.endColumn):n-i}return n-i}return n-i}return(e?1:0)-(t?1:0)}static compareRangesUsingEnds(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}}function xe(e,t,n,i){return new z(e,t,n).ComputeDiff(i)}class Re{constructor(e){const t=[],n=[];for(let i=0,r=e.length;i<r;i++)t[i]=Fe(e[i],1),n[i]=Ke(e[i],1);this.lines=e,this._startColumns=t,this._endColumns=n}getElements(){const e=[];for(let t=0,n=this.lines.length;t<n;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}getStartLineNumber(e){return e+1}getEndLineNumber(e){return e+1}createCharSequence(e,t,n){const i=[],r=[],s=[];let o=0;for(let a=t;a<=n;a++){const t=this.lines[a],n=e?this._startColumns[a]:1,l=e?this._endColumns[a]:t.length+1;for(let e=n;e<l;e++)i[o]=t.charCodeAt(e-1),r[o]=a+1,s[o]=e,o++}return new Pe(i,r,s)}}class Pe{constructor(e,t,n){this._charCodes=e,this._lineNumbers=t,this._columns=n}getElements(){return this._charCodes}getStartLineNumber(e){return this._lineNumbers[e]}getStartColumn(e){return this._columns[e]}getEndLineNumber(e){return this._lineNumbers[e]}getEndColumn(e){return this._columns[e]+1}}class Ue{constructor(e,t,n,i,r,s,o,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=n,this.originalEndColumn=i,this.modifiedStartLineNumber=r,this.modifiedStartColumn=s,this.modifiedEndLineNumber=o,this.modifiedEndColumn=a}static createFromDiffChange(e,t,n){let i,r,s,o,a,l,u,h;return 0===e.originalLength?(i=0,r=0,s=0,o=0):(i=t.getStartLineNumber(e.originalStart),r=t.getStartColumn(e.originalStart),s=t.getEndLineNumber(e.originalStart+e.originalLength-1),o=t.getEndColumn(e.originalStart+e.originalLength-1)),0===e.modifiedLength?(a=0,l=0,u=0,h=0):(a=n.getStartLineNumber(e.modifiedStart),l=n.getStartColumn(e.modifiedStart),u=n.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),h=n.getEndColumn(e.modifiedStart+e.modifiedLength-1)),new Ue(i,r,s,o,a,l,u,h)}}class ke{constructor(e,t,n,i,r){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=n,this.modifiedEndLineNumber=i,this.charChanges=r}static createFromDiffResult(e,t,n,i,r,s,o){let a,l,u,h,d;if(0===t.originalLength?(a=n.getStartLineNumber(t.originalStart)-1,l=0):(a=n.getStartLineNumber(t.originalStart),l=n.getEndLineNumber(t.originalStart+t.originalLength-1)),0===t.modifiedLength?(u=i.getStartLineNumber(t.modifiedStart)-1,h=0):(u=i.getStartLineNumber(t.modifiedStart),h=i.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),s&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&r()){const s=n.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=i.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);let l=xe(s,a,r,!0).changes;o&&(l=function(e){if(e.length<=1)return e;const t=[e[0]];let n=t[0];for(let i=1,r=e.length;i<r;i++){const r=e[i],s=r.originalStart-(n.originalStart+n.originalLength),o=r.modifiedStart-(n.modifiedStart+n.modifiedLength);Math.min(s,o)<3?(n.originalLength=r.originalStart+r.originalLength-n.originalStart,n.modifiedLength=r.modifiedStart+r.modifiedLength-n.modifiedStart):(t.push(r),n=r)}return t}(l)),d=[];for(let e=0,t=l.length;e<t;e++)d.push(Ue.createFromDiffChange(l[e],s,a))}return new ke(a,l,u,h,d)}}class De{constructor(e,t,n){this.shouldComputeCharChanges=n.shouldComputeCharChanges,this.shouldPostProcessCharChanges=n.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=n.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=n.shouldMakePrettyDiff,this.originalLines=e,this.modifiedLines=t,this.original=new Re(e),this.modified=new Re(t),this.continueLineDiff=Be(n.maxComputationTime),this.continueCharDiff=Be(0===n.maxComputationTime?0:Math.min(n.maxComputationTime,5e3))}computeDiff(){if(1===this.original.lines.length&&0===this.original.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};if(1===this.modified.lines.length&&0===this.modified.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};const e=xe(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,n=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){const e=[];for(let n=0,i=t.length;n<i;n++)e.push(ke.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[n],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:n,changes:e}}const i=[];let r=0,s=0;for(let e=-1,n=t.length;e<n;e++){const o=e+1<n?t[e+1]:null,a=o?o.originalStart:this.originalLines.length,l=o?o.modifiedStart:this.modifiedLines.length;for(;r<a&&s<l;){const e=this.originalLines[r],t=this.modifiedLines[s];if(e!==t){{let n=Fe(e,1),o=Fe(t,1);for(;n>1&&o>1&&e.charCodeAt(n-2)===t.charCodeAt(o-2);)n--,o--;(n>1||o>1)&&this._pushTrimWhitespaceCharChange(i,r+1,1,n,s+1,1,o)}{let n=Ke(e,1),o=Ke(t,1);const a=e.length+1,l=t.length+1;for(;n<a&&o<l&&e.charCodeAt(n-1)===e.charCodeAt(o-1);)n++,o++;(n<a||o<l)&&this._pushTrimWhitespaceCharChange(i,r+1,n,a,s+1,o,l)}}r++,s++}o&&(i.push(ke.createFromDiffResult(this.shouldIgnoreTrimWhitespace,o,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),r+=o.originalLength,s+=o.modifiedLength)}return{quitEarly:n,changes:i}}_pushTrimWhitespaceCharChange(e,t,n,i,r,s,o){if(this._mergeTrimWhitespaceCharChange(e,t,n,i,r,s,o))return;let a;this.shouldComputeCharChanges&&(a=[new Ue(t,n,t,i,r,s,r,o)]),e.push(new ke(t,t,r,r,a))}_mergeTrimWhitespaceCharChange(e,t,n,i,r,s,o){const a=e.length;if(0===a)return!1;const l=e[a-1];return 0!==l.originalEndLineNumber&&0!==l.modifiedEndLineNumber&&l.originalEndLineNumber+1===t&&l.modifiedEndLineNumber+1===r&&(l.originalEndLineNumber=t,l.modifiedEndLineNumber=r,this.shouldComputeCharChanges&&l.charChanges&&l.charChanges.push(new Ue(t,n,t,i,r,s,r,o)),!0)}}function Fe(e,t){const n=function(e){for(let t=0,n=e.length;t<n;t++){const n=e.charCodeAt(t);if(32!==n&&9!==n)return t}return-1}(e);return-1===n?t:n+1}function Ke(e,t){const n=function(e,t=e.length-1){for(let n=t;n>=0;n--){const t=e.charCodeAt(n);if(32!==t&&9!==t)return n}return-1}(e);return-1===n?t:n+2}function Be(e){if(0===e)return()=>!0;const t=Date.now();return()=>Date.now()-t<e}function We(e){return e<0?0:e>255?255:0|e}function qe(e){return e<0?0:e>4294967295?4294967295:0|e}class He{constructor(e,t){this.index=e,this.remainder=t}}class Ve{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=qe(e);const n=this.values,i=this.prefixSum,r=t.length;return 0!==r&&(this.values=new Uint32Array(n.length+r),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e),e+r),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}changeValue(e,t){return e=qe(e),t=qe(t),this.values[e]!==t&&(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}removeValues(e,t){e=qe(e),t=qe(t);const n=this.values,i=this.prefixSum;if(e>=n.length)return!1;let r=n.length-e;return t>=r&&(t=r),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(i.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalValue(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)}getAccumulatedValue(e){return e<0?0:(e=qe(e),this._getAccumulatedValue(e))}_getAccumulatedValue(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalValue();let t=0,n=this.values.length-1,i=0,r=0,s=0;for(;t<=n;)if(i=t+(n-t)/2|0,r=this.prefixSum[i],s=r-this.values[i],e<s)n=i-1;else{if(!(e>=r))break;t=i+1}return new He(i,e-s)}}const Ye=function(e=""){let t="(-?\\d*\\.\\d\\w*)|([^";for(const n of"`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?")e.indexOf(n)>=0||(t+="\\"+n);return t+="\\s]+)",new RegExp(t,"g")}(),$e={maxLen:1e3,windowSize:15,timeBudget:150};function je(e,t,n,i,r=$e){if(n.length>r.maxLen){let s=e-r.maxLen/2;return s<0?(i+=e,s=0):i+=s,je(e,t,n=n.substring(s,e+r.maxLen/2),i,r)}Date.now();const s=e-1-i;let o=-1,a=null;for(let e=1;;e++){Date.now(),r.timeBudget;const i=s-r.windowSize*e;t.lastIndex=Math.max(0,i);const l=Ge(t,n,s,o);if(!l&&a)break;if(a=l,i<=0)break;o=i}if(a){let e={word:a[0],startColumn:i+1+a.index,endColumn:i+1+a.index+a[0].length};return t.lastIndex=0,e}return null}function Ge(e,t,n,i){let r;for(;r=e.exec(t);){const t=r.index||0;if(t<=n&&e.lastIndex>=n)return r;if(i>0&&t>i)return null}return null}class ze{constructor(e){let t=We(e);this._defaultValue=t,this._asciiMap=ze._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){let t=new Uint8Array(256);for(let n=0;n<256;n++)t[n]=e;return t}set(e,t){let n=We(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}}class Qe{constructor(e,t,n){const i=new Uint8Array(e*t);for(let r=0,s=e*t;r<s;r++)i[r]=n;this._data=i,this.rows=e,this.cols=t}get(e,t){return this._data[e*this.cols+t]}set(e,t,n){this._data[e*this.cols+t]=n}}class Xe{constructor(e){let t=0,n=0;for(let i=0,r=e.length;i<r;i++){let[r,s,o]=e[i];s>t&&(t=s),r>n&&(n=r),o>n&&(n=o)}t++,n++;let i=new Qe(n,t,0);for(let t=0,n=e.length;t<n;t++){let[n,r,s]=e[t];i.set(n,r,s)}this._states=i,this._maxCharCode=t}nextState(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}let Ze=null,Je=null;class et{static _createLink(e,t,n,i,r){let s=r-1;do{const n=t.charCodeAt(s);if(2!==e.get(n))break;s--}while(s>i);if(i>0){const e=t.charCodeAt(i-1),n=t.charCodeAt(s);(40===e&&41===n||91===e&&93===n||123===e&&125===n)&&s--}return{range:{startLineNumber:n,startColumn:i+1,endLineNumber:n,endColumn:s+2},url:t.substring(i,s+1)}}static computeLinks(e,t=function(){return null===Ze&&(Ze=new Xe([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),Ze}()){const n=function(){if(null===Je){Je=new ze(0);const e=" \t<>'\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…";for(let t=0;t<e.length;t++)Je.set(e.charCodeAt(t),1);const t=".,;";for(let e=0;e<t.length;e++)Je.set(t.charCodeAt(e),2)}return Je}();let i=[];for(let r=1,s=e.getLineCount();r<=s;r++){const s=e.getLineContent(r),o=s.length;let a=0,l=0,u=0,h=1,d=!1,c=!1,f=!1,m=!1;for(;a<o;){let e=!1;const o=s.charCodeAt(a);if(13===h){let t;switch(o){case 40:d=!0,t=0;break;case 41:t=d?0:1;break;case 91:f=!0,c=!0,t=0;break;case 93:f=!1,t=c?0:1;break;case 123:m=!0,t=0;break;case 125:t=m?0:1;break;case 39:t=34===u||96===u?0:1;break;case 34:t=39===u||96===u?0:1;break;case 96:t=39===u||34===u?0:1;break;case 42:t=42===u?1:0;break;case 124:t=124===u?1:0;break;case 32:t=f?0:1;break;default:t=n.get(o)}1===t&&(i.push(et._createLink(n,s,r,l,a)),e=!0)}else if(12===h){let t;91===o?(c=!0,t=0):t=n.get(o),1===t?e=!0:h=13}else h=t.nextState(h,o),0===h&&(e=!0);e&&(h=1,d=!1,c=!1,m=!1,l=a+1,u=o),a++}13===h&&i.push(et._createLink(n,s,r,l,o))}return i}}class tt{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,n,i,r){if(e&&t){let n=this.doNavigateValueSet(t,r);if(n)return{range:e,value:n}}if(n&&i){let e=this.doNavigateValueSet(i,r);if(e)return{range:n,value:e}}return null}doNavigateValueSet(e,t){let n=this.numberReplace(e,t);return null!==n?n:this.textReplace(e,t)}numberReplace(e,t){let n=Math.pow(10,e.length-(e.lastIndexOf(".")+1)),i=Number(e),r=parseFloat(e);return isNaN(i)||isNaN(r)||i!==r?null:0!==i||t?(i=Math.floor(i*n),i+=t?n:-n,String(i/n)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,n){let i=null;for(let r=0,s=e.length;null===i&&r<s;r++)i=this.valueSetReplace(e[r],t,n);return i}valueSetReplace(e,t,n){let i=e.indexOf(t);return i>=0?(i+=n?1:-1,i<0?i=e.length-1:i%=e.length,e[i]):null}}tt.INSTANCE=new tt;class nt{constructor(e){this.element=e,this.next=nt.Undefined,this.prev=nt.Undefined}}nt.Undefined=new nt(void 0);class it{constructor(){this._first=nt.Undefined,this._last=nt.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===nt.Undefined}clear(){this._first=nt.Undefined,this._last=nt.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const n=new nt(e);if(this._first===nt.Undefined)this._first=n,this._last=n;else if(t){const e=this._last;this._last=n,n.prev=e,e.next=n}else{const e=this._first;this._first=n,n.next=e,e.prev=n}this._size+=1;let i=!1;return()=>{i||(i=!0,this._remove(n))}}shift(){if(this._first!==nt.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==nt.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==nt.Undefined&&e.next!==nt.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===nt.Undefined&&e.next===nt.Undefined?(this._first=nt.Undefined,this._last=nt.Undefined):e.next===nt.Undefined?(this._last=this._last.prev,this._last.next=nt.Undefined):e.prev===nt.Undefined&&(this._first=this._first.next,this._first.prev=nt.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==nt.Undefined;)yield e.element,e=e.next}toArray(){const e=[];for(let t=this._first;t!==nt.Undefined;t=t.next)e.push(t.element);return e}}var rt;!function(e){function t(e){return(t,n=null,i)=>{let r,s=!1;return r=e((e=>{if(!s)return r?r.dispose():s=!0,t.call(n,e)}),null,i),s&&r.dispose(),r}}function n(e,t){return a(((n,i=null,r)=>e((e=>n.call(i,t(e))),null,r)))}function i(e,t){return a(((n,i=null,r)=>e((e=>{t(e),n.call(i,e)}),null,r)))}function r(e,t){return a(((n,i=null,r)=>e((e=>t(e)&&n.call(i,e)),null,r)))}function s(e,t,i){let r=i;return n(e,(e=>(r=t(r,e),r)))}function a(e){let t;const n=new st({onFirstListenerAdd(){t=e(n.fire,n)},onLastListenerRemove(){t.dispose()}});return n.event}function u(e,t,n=100,i=!1,r){let s,o,a,l=0;const u=new st({leakWarningThreshold:r,onFirstListenerAdd(){s=e((e=>{l++,o=t(o,e),i&&!a&&(u.fire(o),o=void 0),clearTimeout(a),a=setTimeout((()=>{const e=o;o=void 0,a=void 0,(!i||l>1)&&u.fire(e),l=0}),n)}))},onLastListenerRemove(){s.dispose()}});return u.event}function d(e){let t,n=!0;return r(e,(e=>{const i=n||e!==t;return n=!1,t=e,i}))}e.None=()=>h.None,e.once=t,e.map=n,e.forEach=i,e.filter=r,e.signal=function(e){return e},e.any=function(...e){return(t,n=null,i)=>function(...e){return e.forEach(o),{dispose:()=>l(e)}}(...e.map((e=>e((e=>t.call(n,e)),null,i))))},e.reduce=s,e.snapshot=a,e.debounce=u,e.stopwatch=function(e){const i=(new Date).getTime();return n(t(e),(e=>(new Date).getTime()-i))},e.latch=d,e.buffer=function(e,t=!1,n=[]){let i=n.slice(),r=e((e=>{i?i.push(e):o.fire(e)}));const s=()=>{i&&i.forEach((e=>o.fire(e))),i=null},o=new st({onFirstListenerAdd(){r||(r=e((e=>o.fire(e))))},onFirstListenerDidAdd(){i&&(t?setTimeout(s):s())},onLastListenerRemove(){r&&r.dispose(),r=null}});return o.event};class c{constructor(e){this.event=e}map(e){return new c(n(this.event,e))}forEach(e){return new c(i(this.event,e))}filter(e){return new c(r(this.event,e))}reduce(e,t){return new c(s(this.event,e,t))}latch(){return new c(d(this.event))}debounce(e,t=100,n=!1,i){return new c(u(this.event,e,t,n,i))}on(e,t,n){return this.event(e,t,n)}once(e,n,i){return t(this.event)(e,n,i)}}e.chain=function(e){return new c(e)},e.fromNodeEventEmitter=function(e,t,n=(e=>e)){const i=(...e)=>r.fire(n(...e)),r=new st({onFirstListenerAdd:()=>e.on(t,i),onLastListenerRemove:()=>e.removeListener(t,i)});return r.event},e.fromDOMEventEmitter=function(e,t,n=(e=>e)){const i=(...e)=>r.fire(n(...e)),r=new st({onFirstListenerAdd:()=>e.addEventListener(t,i),onLastListenerRemove:()=>e.removeEventListener(t,i)});return r.event},e.fromPromise=function(e){const t=new st;let n=!1;return e.then(void 0,(()=>null)).then((()=>{n?t.fire(void 0):setTimeout((()=>t.fire(void 0)),0)})),n=!0,t.event},e.toPromise=function(e){return new Promise((n=>t(e)(n)))}}(rt||(rt={}));class st{constructor(e){this._disposed=!1,this._options=e,this._leakageMon=void 0}get event(){return this._event||(this._event=(e,t,n)=>{this._listeners||(this._listeners=new it);const i=this._listeners.isEmpty();i&&this._options&&this._options.onFirstListenerAdd&&this._options.onFirstListenerAdd(this);const r=this._listeners.push(t?[e,t]:e);let s,o;return i&&this._options&&this._options.onFirstListenerDidAdd&&this._options.onFirstListenerDidAdd(this),this._options&&this._options.onListenerDidAdd&&this._options.onListenerDidAdd(this,e,t),this._leakageMon&&(s=this._leakageMon.check(this._listeners.size)),o={dispose:()=>{s&&s(),o.dispose=st._noop,!this._disposed&&(r(),this._options&&this._options.onLastListenerRemove)&&(this._listeners&&!this._listeners.isEmpty()||this._options.onLastListenerRemove(this))}},n instanceof u?n.add(o):Array.isArray(n)&&n.push(o),o}),this._event}fire(e){if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new it);for(let t of this._listeners)this._deliveryQueue.push([t,e]);for(;this._deliveryQueue.size>0;){const[e,t]=this._deliveryQueue.shift();try{"function"==typeof e?e.call(void 0,t):e[0].call(e[1],t)}catch(e){n(e)}}}}dispose(){this._listeners&&this._listeners.clear(),this._deliveryQueue&&this._deliveryQueue.clear(),this._leakageMon&&this._leakageMon.dispose(),this._disposed=!0}}st._noop=function(){};const ot=Object.freeze((function(e,t){const n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}}));var at;!function(e){e.isCancellationToken=function(t){return t===e.None||t===e.Cancelled||t instanceof lt||!(!t||"object"!=typeof t)&&"boolean"==typeof t.isCancellationRequested&&"function"==typeof t.onCancellationRequested},e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:rt.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:ot})}(at||(at={}));class lt{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?ot:(this._emitter||(this._emitter=new st),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class ut{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const ht=new ut,dt=new ut,ct=new ut;var ft,mt,gt,_t,pt,Ct,bt,Lt,Nt,St,Et,At,yt,wt,vt,Tt,Ot,It,Mt,xt,Rt,Pt,Ut,kt,Dt,Ft,Kt,Bt,Wt,qt,Ht,Vt,Yt,$t;!function(){function e(e,t,n=t,i=n){ht.define(e,t),dt.define(e,n),ct.define(e,i)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")}(),function(e){e.toString=function(e){return ht.keyCodeToStr(e)},e.fromString=function(e){return ht.strToKeyCode(e)},e.toUserSettingsUS=function(e){return dt.keyCodeToStr(e)},e.toUserSettingsGeneral=function(e){return ct.keyCodeToStr(e)},e.fromUserSettings=function(e){return dt.strToKeyCode(e)||ct.strToKeyCode(e)}}(ft||(ft={}));class jt extends Me{constructor(e,t,n,i){super(e,t,n,i),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=n,this.positionColumn=i}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return jt.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new jt(this.startLineNumber,this.startColumn,e,t):new jt(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new Ie(this.positionLineNumber,this.positionColumn)}setStartPosition(e,t){return 0===this.getDirection()?new jt(e,t,this.endLineNumber,this.endColumn):new jt(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new jt(e.lineNumber,e.column,t.lineNumber,t.column)}static liftSelection(e){return new jt(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let n=0,i=e.length;n<i;n++)if(!this.selectionsEqual(e[n],t[n]))return!1;return!0}static isISelection(e){return e&&"number"==typeof e.selectionStartLineNumber&&"number"==typeof e.selectionStartColumn&&"number"==typeof e.positionLineNumber&&"number"==typeof e.positionColumn}static createWithDirection(e,t,n,i,r){return 0===r?new jt(e,t,n,i):new jt(n,i,e,t)}}!function(e){e[e.Unknown=0]="Unknown",e[e.Disabled=1]="Disabled",e[e.Enabled=2]="Enabled"}(mt||(mt={})),function(e){e[e.KeepWhitespace=1]="KeepWhitespace",e[e.InsertAsSnippet=4]="InsertAsSnippet"}(gt||(gt={})),function(e){e[e.Method=0]="Method",e[e.Function=1]="Function",e[e.Constructor=2]="Constructor",e[e.Field=3]="Field",e[e.Variable=4]="Variable",e[e.Class=5]="Class",e[e.Struct=6]="Struct",e[e.Interface=7]="Interface",e[e.Module=8]="Module",e[e.Property=9]="Property",e[e.Event=10]="Event",e[e.Operator=11]="Operator",e[e.Unit=12]="Unit",e[e.Value=13]="Value",e[e.Constant=14]="Constant",e[e.Enum=15]="Enum",e[e.EnumMember=16]="EnumMember",e[e.Keyword=17]="Keyword",e[e.Text=18]="Text",e[e.Color=19]="Color",e[e.File=20]="File",e[e.Reference=21]="Reference",e[e.Customcolor=22]="Customcolor",e[e.Folder=23]="Folder",e[e.TypeParameter=24]="TypeParameter",e[e.User=25]="User",e[e.Issue=26]="Issue",e[e.Snippet=27]="Snippet"}(_t||(_t={})),function(e){e[e.Deprecated=1]="Deprecated"}(pt||(pt={})),function(e){e[e.Invoke=0]="Invoke",e[e.TriggerCharacter=1]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"}(Ct||(Ct={})),function(e){e[e.EXACT=0]="EXACT",e[e.ABOVE=1]="ABOVE",e[e.BELOW=2]="BELOW"}(bt||(bt={})),function(e){e[e.NotSet=0]="NotSet",e[e.ContentFlush=1]="ContentFlush",e[e.RecoverFromMarkers=2]="RecoverFromMarkers",e[e.Explicit=3]="Explicit",e[e.Paste=4]="Paste",e[e.Undo=5]="Undo",e[e.Redo=6]="Redo"}(Lt||(Lt={})),function(e){e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(Nt||(Nt={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(St||(St={})),function(e){e[e.None=0]="None",e[e.Keep=1]="Keep",e[e.Brackets=2]="Brackets",e[e.Advanced=3]="Advanced",e[e.Full=4]="Full"}(Et||(Et={})),function(e){e[e.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",e[e.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",e[e.accessibilitySupport=2]="accessibilitySupport",e[e.accessibilityPageSize=3]="accessibilityPageSize",e[e.ariaLabel=4]="ariaLabel",e[e.autoClosingBrackets=5]="autoClosingBrackets",e[e.autoClosingOvertype=6]="autoClosingOvertype",e[e.autoClosingQuotes=7]="autoClosingQuotes",e[e.autoIndent=8]="autoIndent",e[e.automaticLayout=9]="automaticLayout",e[e.autoSurround=10]="autoSurround",e[e.codeLens=11]="codeLens",e[e.colorDecorators=12]="colorDecorators",e[e.columnSelection=13]="columnSelection",e[e.comments=14]="comments",e[e.contextmenu=15]="contextmenu",e[e.copyWithSyntaxHighlighting=16]="copyWithSyntaxHighlighting",e[e.cursorBlinking=17]="cursorBlinking",e[e.cursorSmoothCaretAnimation=18]="cursorSmoothCaretAnimation",e[e.cursorStyle=19]="cursorStyle",e[e.cursorSurroundingLines=20]="cursorSurroundingLines",e[e.cursorSurroundingLinesStyle=21]="cursorSurroundingLinesStyle",e[e.cursorWidth=22]="cursorWidth",e[e.disableLayerHinting=23]="disableLayerHinting",e[e.disableMonospaceOptimizations=24]="disableMonospaceOptimizations",e[e.dragAndDrop=25]="dragAndDrop",e[e.emptySelectionClipboard=26]="emptySelectionClipboard",e[e.extraEditorClassName=27]="extraEditorClassName",e[e.fastScrollSensitivity=28]="fastScrollSensitivity",e[e.find=29]="find",e[e.fixedOverflowWidgets=30]="fixedOverflowWidgets",e[e.folding=31]="folding",e[e.foldingStrategy=32]="foldingStrategy",e[e.foldingHighlight=33]="foldingHighlight",e[e.unfoldOnClickAfterEndOfLine=34]="unfoldOnClickAfterEndOfLine",e[e.fontFamily=35]="fontFamily",e[e.fontInfo=36]="fontInfo",e[e.fontLigatures=37]="fontLigatures",e[e.fontSize=38]="fontSize",e[e.fontWeight=39]="fontWeight",e[e.formatOnPaste=40]="formatOnPaste",e[e.formatOnType=41]="formatOnType",e[e.glyphMargin=42]="glyphMargin",e[e.gotoLocation=43]="gotoLocation",e[e.hideCursorInOverviewRuler=44]="hideCursorInOverviewRuler",e[e.highlightActiveIndentGuide=45]="highlightActiveIndentGuide",e[e.hover=46]="hover",e[e.inDiffEditor=47]="inDiffEditor",e[e.letterSpacing=48]="letterSpacing",e[e.lightbulb=49]="lightbulb",e[e.lineDecorationsWidth=50]="lineDecorationsWidth",e[e.lineHeight=51]="lineHeight",e[e.lineNumbers=52]="lineNumbers",e[e.lineNumbersMinChars=53]="lineNumbersMinChars",e[e.links=54]="links",e[e.matchBrackets=55]="matchBrackets",e[e.minimap=56]="minimap",e[e.mouseStyle=57]="mouseStyle",e[e.mouseWheelScrollSensitivity=58]="mouseWheelScrollSensitivity",e[e.mouseWheelZoom=59]="mouseWheelZoom",e[e.multiCursorMergeOverlapping=60]="multiCursorMergeOverlapping",e[e.multiCursorModifier=61]="multiCursorModifier",e[e.multiCursorPaste=62]="multiCursorPaste",e[e.occurrencesHighlight=63]="occurrencesHighlight",e[e.overviewRulerBorder=64]="overviewRulerBorder",e[e.overviewRulerLanes=65]="overviewRulerLanes",e[e.padding=66]="padding",e[e.parameterHints=67]="parameterHints",e[e.peekWidgetDefaultFocus=68]="peekWidgetDefaultFocus",e[e.definitionLinkOpensInPeek=69]="definitionLinkOpensInPeek",e[e.quickSuggestions=70]="quickSuggestions",e[e.quickSuggestionsDelay=71]="quickSuggestionsDelay",e[e.readOnly=72]="readOnly",e[e.renameOnType=73]="renameOnType",e[e.renderControlCharacters=74]="renderControlCharacters",e[e.renderIndentGuides=75]="renderIndentGuides",e[e.renderFinalNewline=76]="renderFinalNewline",e[e.renderLineHighlight=77]="renderLineHighlight",e[e.renderLineHighlightOnlyWhenFocus=78]="renderLineHighlightOnlyWhenFocus",e[e.renderValidationDecorations=79]="renderValidationDecorations",e[e.renderWhitespace=80]="renderWhitespace",e[e.revealHorizontalRightPadding=81]="revealHorizontalRightPadding",e[e.roundedSelection=82]="roundedSelection",e[e.rulers=83]="rulers",e[e.scrollbar=84]="scrollbar",e[e.scrollBeyondLastColumn=85]="scrollBeyondLastColumn",e[e.scrollBeyondLastLine=86]="scrollBeyondLastLine",e[e.scrollPredominantAxis=87]="scrollPredominantAxis",e[e.selectionClipboard=88]="selectionClipboard",e[e.selectionHighlight=89]="selectionHighlight",e[e.selectOnLineNumbers=90]="selectOnLineNumbers",e[e.showFoldingControls=91]="showFoldingControls",e[e.showUnused=92]="showUnused",e[e.snippetSuggestions=93]="snippetSuggestions",e[e.smoothScrolling=94]="smoothScrolling",e[e.stopRenderingLineAfter=95]="stopRenderingLineAfter",e[e.suggest=96]="suggest",e[e.suggestFontSize=97]="suggestFontSize",e[e.suggestLineHeight=98]="suggestLineHeight",e[e.suggestOnTriggerCharacters=99]="suggestOnTriggerCharacters",e[e.suggestSelection=100]="suggestSelection",e[e.tabCompletion=101]="tabCompletion",e[e.tabIndex=102]="tabIndex",e[e.unusualLineTerminators=103]="unusualLineTerminators",e[e.useTabStops=104]="useTabStops",e[e.wordSeparators=105]="wordSeparators",e[e.wordWrap=106]="wordWrap",e[e.wordWrapBreakAfterCharacters=107]="wordWrapBreakAfterCharacters",e[e.wordWrapBreakBeforeCharacters=108]="wordWrapBreakBeforeCharacters",e[e.wordWrapColumn=109]="wordWrapColumn",e[e.wordWrapMinified=110]="wordWrapMinified",e[e.wrappingIndent=111]="wrappingIndent",e[e.wrappingStrategy=112]="wrappingStrategy",e[e.showDeprecated=113]="showDeprecated",e[e.editorClassName=114]="editorClassName",e[e.pixelRatio=115]="pixelRatio",e[e.tabFocusMode=116]="tabFocusMode",e[e.layoutInfo=117]="layoutInfo",e[e.wrappingInfo=118]="wrappingInfo"}(At||(At={})),function(e){e[e.TextDefined=0]="TextDefined",e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(yt||(yt={})),function(e){e[e.LF=0]="LF",e[e.CRLF=1]="CRLF"}(wt||(wt={})),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(vt||(vt={})),function(e){e[e.Unknown=0]="Unknown",e[e.Backspace=1]="Backspace",e[e.Tab=2]="Tab",e[e.Enter=3]="Enter",e[e.Shift=4]="Shift",e[e.Ctrl=5]="Ctrl",e[e.Alt=6]="Alt",e[e.PauseBreak=7]="PauseBreak",e[e.CapsLock=8]="CapsLock",e[e.Escape=9]="Escape",e[e.Space=10]="Space",e[e.PageUp=11]="PageUp",e[e.PageDown=12]="PageDown",e[e.End=13]="End",e[e.Home=14]="Home",e[e.LeftArrow=15]="LeftArrow",e[e.UpArrow=16]="UpArrow",e[e.RightArrow=17]="RightArrow",e[e.DownArrow=18]="DownArrow",e[e.Insert=19]="Insert",e[e.Delete=20]="Delete",e[e.KEY_0=21]="KEY_0",e[e.KEY_1=22]="KEY_1",e[e.KEY_2=23]="KEY_2",e[e.KEY_3=24]="KEY_3",e[e.KEY_4=25]="KEY_4",e[e.KEY_5=26]="KEY_5",e[e.KEY_6=27]="KEY_6",e[e.KEY_7=28]="KEY_7",e[e.KEY_8=29]="KEY_8",e[e.KEY_9=30]="KEY_9",e[e.KEY_A=31]="KEY_A",e[e.KEY_B=32]="KEY_B",e[e.KEY_C=33]="KEY_C",e[e.KEY_D=34]="KEY_D",e[e.KEY_E=35]="KEY_E",e[e.KEY_F=36]="KEY_F",e[e.KEY_G=37]="KEY_G",e[e.KEY_H=38]="KEY_H",e[e.KEY_I=39]="KEY_I",e[e.KEY_J=40]="KEY_J",e[e.KEY_K=41]="KEY_K",e[e.KEY_L=42]="KEY_L",e[e.KEY_M=43]="KEY_M",e[e.KEY_N=44]="KEY_N",e[e.KEY_O=45]="KEY_O",e[e.KEY_P=46]="KEY_P",e[e.KEY_Q=47]="KEY_Q",e[e.KEY_R=48]="KEY_R",e[e.KEY_S=49]="KEY_S",e[e.KEY_T=50]="KEY_T",e[e.KEY_U=51]="KEY_U",e[e.KEY_V=52]="KEY_V",e[e.KEY_W=53]="KEY_W",e[e.KEY_X=54]="KEY_X",e[e.KEY_Y=55]="KEY_Y",e[e.KEY_Z=56]="KEY_Z",e[e.Meta=57]="Meta",e[e.ContextMenu=58]="ContextMenu",e[e.F1=59]="F1",e[e.F2=60]="F2",e[e.F3=61]="F3",e[e.F4=62]="F4",e[e.F5=63]="F5",e[e.F6=64]="F6",e[e.F7=65]="F7",e[e.F8=66]="F8",e[e.F9=67]="F9",e[e.F10=68]="F10",e[e.F11=69]="F11",e[e.F12=70]="F12",e[e.F13=71]="F13",e[e.F14=72]="F14",e[e.F15=73]="F15",e[e.F16=74]="F16",e[e.F17=75]="F17",e[e.F18=76]="F18",e[e.F19=77]="F19",e[e.NumLock=78]="NumLock",e[e.ScrollLock=79]="ScrollLock",e[e.US_SEMICOLON=80]="US_SEMICOLON",e[e.US_EQUAL=81]="US_EQUAL",e[e.US_COMMA=82]="US_COMMA",e[e.US_MINUS=83]="US_MINUS",e[e.US_DOT=84]="US_DOT",e[e.US_SLASH=85]="US_SLASH",e[e.US_BACKTICK=86]="US_BACKTICK",e[e.US_OPEN_SQUARE_BRACKET=87]="US_OPEN_SQUARE_BRACKET",e[e.US_BACKSLASH=88]="US_BACKSLASH",e[e.US_CLOSE_SQUARE_BRACKET=89]="US_CLOSE_SQUARE_BRACKET",e[e.US_QUOTE=90]="US_QUOTE",e[e.OEM_8=91]="OEM_8",e[e.OEM_102=92]="OEM_102",e[e.NUMPAD_0=93]="NUMPAD_0",e[e.NUMPAD_1=94]="NUMPAD_1",e[e.NUMPAD_2=95]="NUMPAD_2",e[e.NUMPAD_3=96]="NUMPAD_3",e[e.NUMPAD_4=97]="NUMPAD_4",e[e.NUMPAD_5=98]="NUMPAD_5",e[e.NUMPAD_6=99]="NUMPAD_6",e[e.NUMPAD_7=100]="NUMPAD_7",e[e.NUMPAD_8=101]="NUMPAD_8",e[e.NUMPAD_9=102]="NUMPAD_9",e[e.NUMPAD_MULTIPLY=103]="NUMPAD_MULTIPLY",e[e.NUMPAD_ADD=104]="NUMPAD_ADD",e[e.NUMPAD_SEPARATOR=105]="NUMPAD_SEPARATOR",e[e.NUMPAD_SUBTRACT=106]="NUMPAD_SUBTRACT",e[e.NUMPAD_DECIMAL=107]="NUMPAD_DECIMAL",e[e.NUMPAD_DIVIDE=108]="NUMPAD_DIVIDE",e[e.KEY_IN_COMPOSITION=109]="KEY_IN_COMPOSITION",e[e.ABNT_C1=110]="ABNT_C1",e[e.ABNT_C2=111]="ABNT_C2",e[e.MAX_VALUE=112]="MAX_VALUE"}(Tt||(Tt={})),function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(Ot||(Ot={})),function(e){e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated"}(It||(It={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(Mt||(Mt={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TEXTAREA=1]="TEXTAREA",e[e.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",e[e.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",e[e.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",e[e.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",e[e.CONTENT_TEXT=6]="CONTENT_TEXT",e[e.CONTENT_EMPTY=7]="CONTENT_EMPTY",e[e.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",e[e.CONTENT_WIDGET=9]="CONTENT_WIDGET",e[e.OVERVIEW_RULER=10]="OVERVIEW_RULER",e[e.SCROLLBAR=11]="SCROLLBAR",e[e.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",e[e.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"}(xt||(xt={})),function(e){e[e.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",e[e.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",e[e.TOP_CENTER=2]="TOP_CENTER"}(Rt||(Rt={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(Pt||(Pt={})),function(e){e[e.Off=0]="Off",e[e.On=1]="On",e[e.Relative=2]="Relative",e[e.Interval=3]="Interval",e[e.Custom=4]="Custom"}(Ut||(Ut={})),function(e){e[e.None=0]="None",e[e.Text=1]="Text",e[e.Blocks=2]="Blocks"}(kt||(kt={})),function(e){e[e.Smooth=0]="Smooth",e[e.Immediate=1]="Immediate"}(Dt||(Dt={})),function(e){e[e.Auto=1]="Auto",e[e.Hidden=2]="Hidden",e[e.Visible=3]="Visible"}(Ft||(Ft={})),function(e){e[e.LTR=0]="LTR",e[e.RTL=1]="RTL"}(Kt||(Kt={})),function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(Bt||(Bt={})),function(e){e[e.File=0]="File",e[e.Module=1]="Module",e[e.Namespace=2]="Namespace",e[e.Package=3]="Package",e[e.Class=4]="Class",e[e.Method=5]="Method",e[e.Property=6]="Property",e[e.Field=7]="Field",e[e.Constructor=8]="Constructor",e[e.Enum=9]="Enum",e[e.Interface=10]="Interface",e[e.Function=11]="Function",e[e.Variable=12]="Variable",e[e.Constant=13]="Constant",e[e.String=14]="String",e[e.Number=15]="Number",e[e.Boolean=16]="Boolean",e[e.Array=17]="Array",e[e.Object=18]="Object",e[e.Key=19]="Key",e[e.Null=20]="Null",e[e.EnumMember=21]="EnumMember",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter"}(Wt||(Wt={})),function(e){e[e.Deprecated=1]="Deprecated"}(qt||(qt={})),function(e){e[e.Hidden=0]="Hidden",e[e.Blink=1]="Blink",e[e.Smooth=2]="Smooth",e[e.Phase=3]="Phase",e[e.Expand=4]="Expand",e[e.Solid=5]="Solid"}(Ht||(Ht={})),function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(Vt||(Vt={})),function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",e[e.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",e[e.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",e[e.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"}(Yt||(Yt={})),function(e){e[e.None=0]="None",e[e.Same=1]="Same",e[e.Indent=2]="Indent",e[e.DeepIndent=3]="DeepIndent"}($t||($t={}));class Gt{static chord(e,t){return function(e,t){return(e|(65535&t)<<16>>>0)>>>0}(e,t)}}Gt.CtrlCmd=2048,Gt.Shift=1024,Gt.Alt=512,Gt.WinCtrl=256;var zt=function(e,t,n,i){return new(n||(n=Promise))((function(r,s){function o(e){try{l(i.next(e))}catch(e){s(e)}}function a(e){try{l(i.throw(e))}catch(e){s(e)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,a)}l((i=i.apply(e,t||[])).next())}))};class Qt extends class{constructor(e,t,n,i){this._uri=e,this._lines=t,this._eol=n,this._versionId=i,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}getText(){return null===this._cachedTextValue&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const e of t)this._acceptDeleteRange(e.range),this._acceptInsertText(new Ie(e.range.startLineNumber,e.range.startColumn),e.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,n=new Uint32Array(t);for(let i=0;i<t;i++)n[i]=this._lines[i].length+e;this._lineStarts=new Ve(n)}}_setLineText(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.changeValue(e,this._lines[e].length+this._eol.length)}_acceptDeleteRange(e){if(e.startLineNumber!==e.endLineNumber)this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber);else{if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1))}}_acceptInsertText(e,t){if(0===t.length)return;let n=t.split(/\r\n|\r|\n/);if(1===n.length)return void this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+n[0]+this._lines[e.lineNumber-1].substring(e.column-1));n[n.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+n[0]);let i=new Uint32Array(n.length-1);for(let t=1;t<n.length;t++)this._lines.splice(e.lineNumber+t-1,0,n[t]),i[t-1]=n[t].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,i)}}{get uri(){return this._uri}get version(){return this._versionId}get eol(){return this._eol}getValue(){return this.getText()}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(e){return this._lines[e-1]}getWordAtPosition(e,t){let n=je(e.column,function(e){let t=Ye;if(e&&e instanceof RegExp)if(e.global)t=e;else{let n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}(t),this._lines[e.lineNumber-1],0);return n?new Me(e.lineNumber,n.startColumn,e.lineNumber,n.endColumn):null}words(e){const t=this._lines,n=this._wordenize.bind(this);let i=0,r="",s=0,o=[];return{*[Symbol.iterator](){for(;;)if(s<o.length){const e=r.substring(o[s].start,o[s].end);s+=1,yield e}else{if(!(i<t.length))break;r=t[i],o=n(r,e),s=0,i+=1}}}}getLineWords(e,t){let n=this._lines[e-1],i=this._wordenize(n,t),r=[];for(const e of i)r.push({word:n.substring(e.start,e.end),startColumn:e.start+1,endColumn:e.end+1});return r}_wordenize(e,t){const n=[];let i;for(t.lastIndex=0;(i=t.exec(e))&&0!==i[0].length;)n.push({start:i.index,end:i.index+i[0].length});return n}getValueInRange(e){if((e=this._validateRange(e)).startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);let t=this._eol,n=e.startLineNumber-1,i=e.endLineNumber-1,r=[];r.push(this._lines[n].substring(e.startColumn-1));for(let e=n+1;e<i;e++)r.push(this._lines[e]);return r.push(this._lines[i].substring(0,e.endColumn-1)),r.join(t)}offsetAt(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getAccumulatedValue(e.lineNumber-2)+(e.column-1)}positionAt(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();let t=this._lineStarts.getIndexOf(e),n=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,n)}}_validateRange(e){const t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),n=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||n.lineNumber!==e.endLineNumber||n.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:n.lineNumber,endColumn:n.column}:e}_validatePosition(e){if(!Ie.isIPosition(e))throw new Error("bad position");let{lineNumber:t,column:n}=e,i=!1;if(t<1)t=1,n=1,i=!0;else if(t>this._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,i=!0;else{let e=this._lines[t-1].length+1;n<1?(n=1,i=!0):n>e&&(n=e,i=!0)}return i?{lineNumber:t,column:n}:e}}class Xt{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){let e=[];return Object.keys(this._models).forEach((t=>e.push(this._models[t]))),e}acceptNewModel(e){this._models[e.url]=new Qt(be.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){this._models[e]&&this._models[e].onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}computeDiff(e,t,n,i){return zt(this,void 0,void 0,(function*(){const r=this._getModel(e),s=this._getModel(t);if(!r||!s)return null;const o=r.getLinesContent(),a=s.getLinesContent(),l=new De(o,a,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:n,shouldMakePrettyDiff:!0,maxComputationTime:i}).computeDiff(),u=!(l.changes.length>0)&&this._modelsAreIdentical(r,s);return{quitEarly:l.quitEarly,identical:u,changes:l.changes}}))}_modelsAreIdentical(e,t){const n=e.getLineCount();if(n!==t.getLineCount())return!1;for(let i=1;i<=n;i++)if(e.getLineContent(i)!==t.getLineContent(i))return!1;return!0}computeMoreMinimalEdits(e,t){return zt(this,void 0,void 0,(function*(){const n=this._getModel(e);if(!n)return t;const i=[];let r;t=x(t,((e,t)=>e.range&&t.range?Me.compareRangesUsingStarts(e.range,t.range):(e.range?0:1)-(t.range?0:1)));for(let{range:e,text:s,eol:o}of t){if("number"==typeof o&&(r=o),Me.isEmpty(e)&&!s)continue;const t=n.getValueInRange(e);if(s=s.replace(/\r\n|\n|\r/g,n.eol),t===s)continue;if(Math.max(s.length,t.length)>Xt._diffLimit){i.push({range:e,text:s});continue}const a=Y(t,s,!1),l=n.offsetAt(Me.lift(e).getStartPosition());for(const e of a){const t=n.positionAt(l+e.originalStart),r=n.positionAt(l+e.originalStart+e.originalLength),o={text:s.substr(e.modifiedStart,e.modifiedLength),range:{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:r.lineNumber,endColumn:r.column}};n.getValueInRange(o.range)!==o.text&&i.push(o)}}return"number"==typeof r&&i.push({eol:r,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),i}))}computeLinks(e){return zt(this,void 0,void 0,(function*(){let t=this._getModel(e);return t?function(e){return e&&"function"==typeof e.getLineCount&&"function"==typeof e.getLineContent?et.computeLinks(e):[]}(t):null}))}textualSuggest(e,t,n,i){return zt(this,void 0,void 0,(function*(){const r=this._getModel(e);if(!r)return null;const s=[],o=new Set,a=new RegExp(n,i),l=r.getWordAtPosition(t,a);l&&o.add(r.getValueInRange(l));for(let e of r.words(a))if(!o.has(e)&&(o.add(e),isNaN(Number(e))&&(s.push(e),o.size>Xt._suggestionsLimit)))break;return s}))}computeWordRanges(e,t,n,i){return zt(this,void 0,void 0,(function*(){let r=this._getModel(e);if(!r)return Object.create(null);const s=new RegExp(n,i),o=Object.create(null);for(let e=t.startLineNumber;e<t.endLineNumber;e++){let t=r.getLineWords(e,s);for(const n of t){if(!isNaN(Number(n.word)))continue;let t=o[n.word];t||(t=[],o[n.word]=t),t.push({startLineNumber:e,startColumn:n.startColumn,endLineNumber:e,endColumn:n.endColumn})}}return o}))}navigateValueSet(e,t,n,i,r){return zt(this,void 0,void 0,(function*(){let s=this._getModel(e);if(!s)return null;let o=new RegExp(i,r);t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1});let a=s.getValueInRange(t),l=s.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},o);if(!l)return null;let u=s.getValueInRange(l);return tt.INSTANCE.navigateValueSet(t,a,l,u,n)}))}loadForeignModule(e,t,n){let i={host:O(n,((e,t)=>this._host.fhr(e,t))),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(i,t),Promise.resolve(T(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||"function"!=typeof this._foreignModule[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(e){return Promise.reject(e)}}}Xt._diffLimit=1e5,Xt._suggestionsLimit=1e4,"function"==typeof importScripts&&(w.monaco={editor:void 0,languages:void 0,CancellationTokenSource:class{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new lt),this._token}cancel(){this._token?this._token instanceof lt&&this._token.cancel():this._token=at.Cancelled}dispose(e=!1){e&&this.cancel(),this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof lt&&this._token.dispose():this._token=at.None}},Emitter:st,KeyCode:Tt,KeyMod:Gt,Position:Ie,Range:Me,Selection:jt,SelectionDirection:Kt,MarkerSeverity:Ot,MarkerTag:It,Uri:be,Token:class{constructor(e,t,n){this.offset=0|e,this.type=t,this.language=n}toString(){return"("+this.offset+", "+this.type+")"}}});let Zt=!1;self.onmessage=e=>{Zt||function(e){if(Zt)return;Zt=!0;const t=new M((e=>{self.postMessage(e)}),(e=>new Xt(e,null)));self.onmessage=e=>{t.onmessage(e.data)}}()}})(); \ No newline at end of file diff --git a/docs/dist/editor.worker.js.map b/docs/dist/editor.worker.js.map deleted file mode 100644 index 49be73c7..00000000 --- a/docs/dist/editor.worker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/arrays.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/errors.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/event.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/hash.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/iterator.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/path.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/platform.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/process.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/strings.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/types.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/uint.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/uri.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/position.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/range.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/token.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js","webpack://mermaid-live-editor/webpack/bootstrap","webpack://mermaid-live-editor/webpack/runtime/define property getters","webpack://mermaid-live-editor/webpack/runtime/global","webpack://mermaid-live-editor/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid-live-editor/webpack/runtime/make namespace object","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.worker.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AC1PA;AACA;AACA;AACA;AAC4C;AAC5C;AACA;AACA,YAAY,YAAY,sBAAsB,EAAE;AAChD,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iDAAU;AAC3C,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8CAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AAC6C;AACL;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sDAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAA4C;AAChF;AACA;AACA;AACA;AACA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACtyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,8CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2CAA2C,KAAK;AAChD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACgD;AACiC;AACpC;AACtC;AACP;AACA,uBAAuB,0DAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,SAAS,4BAA4B,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,iEAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,UAAU,6CAA6C,cAAc,8CAA8C,SAAS;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AACtB;AACP;AACA;AACA;AACA,+BAA+B,sDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,0DAAe;AACjD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7kBA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACO;AACP;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAuB;AACvC;AACA;AACA,wBAAwB,uDAAsB;AAC9C;AACA,oCAAoC,yDAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;;;;;;;;;;;;;;AC9P5D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB,iBAAiB,EAAE,EAAE;AACtE;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;AC9E7B;AACA;AACA;AACA;AAC8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AAC9B;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,2DAAe;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;;;;;;;;;;;;;;;;;;;;;;;AC1PyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA,qEAAqE,kBAAkB;AACvF;AACA;AACA;AACO;AACP;AACA;AACO;AACP,QAAQ,qDAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,4BAA4B,sCAAsC;AAClE;AACO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY,EAAE,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;;;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC,4BAA4B;AAC5B,4BAA4B;AAC5B,4BAA4B;AAC5B,6BAA6B;AAC7B,oBAAoB;AACpB,8BAA8B;AAC9B,+BAA+B;AAC/B,sBAAsB;AACtB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,KAAK,IAAI,KAAK,GAAG,WAAW,WAAW,SAAS;AAC1E,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,UAAU;AACzD;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU,EAAE,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB,EAAE,qBAAqB;AACxD;AACA;AACA;AACA,wCAAwC,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE,KAAK;AAC3E;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAW,KAAK,eAAe,MAAM,4CAAW;AACvE;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,UAAU,IAAI,oBAAoB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB,IAAI,aAAa;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe,IAAI,aAAa;AAC/C,eAAe,eAAe,EAAE,aAAa;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,UAAU,IAAI,iBAAiB;AACzE;AACA;AACA;AACA,4CAA4C,UAAU,IAAI,oBAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,KAAK;AAC1C;AACA,+BAA+B,OAAO,IAAI,KAAK,OAAO,OAAO,EAAE,KAAK;AACpE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI,EAAE,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,iBAAiB;AACjB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E,oDAAoD,4CAAW;AAC/D;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK,GAAG,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,KAAK;AACrC,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,IAAI,EAAE,kCAAkC;AAC1D,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,iDAAgB;AACnC,iBAAiB,iDAAgB;AACjC,kBAAkB,iDAAgB;AAClC,iBAAiB,iDAAgB;AACjC,kBAAkB,iDAAgB;AAClC,iBAAiB,iDAAgB;AACjC,aAAa,iDAAgB;;;;;;;;;;;;;;;;;;;;;;;;ACl2CpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACP,2DAA2D,qBAAM,gBAAgB,qBAAM,KAAK;AACrF;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjHA;AACA;AACA;AACA;AACqE;AACrE;AACA,WAAW,YAAY,EAAE;AACzB;AACA,oBAAoB,QAAQ,mDAAS,aAAa,qDAAW,sBAAsB,EAAE;AACrF,wBAAwB,QAAQ,0DAAY,WAAW;AACvD,CAAC;AACM;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA,8BAA8B,EAAE;AAChC;AACA,iCAAiC,EAAE;AACnC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kCAAkC;AAClC,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mCAAmC,EAAE;AACrC;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yDAAyD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,UAAU,gCAAgC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP,UAAU,gCAAgC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO,kDAAkD;AACzD;AACA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,kBAAkB,sBAAsB,kBAAkB;AAC1D;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5uBA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA,6DAA6D,KAAK;AAClE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACO;AACP;AACA;AACA,0EAA0E,WAAW;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;AC1IA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AAC0C;AACP;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0BAA0B,cAAc,YAAY,SAAS,aAAa,UAAU,gBAAgB,aAAa,EAAE;AAC5K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,YAAY;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2CAA2C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAS;AACrB,+BAA+B,gDAAgB;AAC/C;AACA;AACA,sBAAsB,gDAAgB;AACtC;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,qBAAqB,cAAc,EAAE,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2CAA2C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B,GAAG,eAAe,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAA+B,GAAG,eAAe,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC1kBA;AACA;AACA;AACA;AAC8D;AACjB;AACN;AACF;AACrC;AACA;AACO;AACP,SAAS,+CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,0EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA,qBAAqB,0EAA8B;AACnD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,qDAAU;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAuB;AAC/C,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAuB;AACjD;AACA;AACA;AACA,mCAAmC,wDAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAuB;AAC/C,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AClRA;AACA;AACA;AACA;AACuD;AACvD;AACA;AACA;AACO;AACP;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;AACyC;AACzC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvWA;AACA;AACA;AACA;AACyC;AACN;AACnC;AACA;AACA;AACA;AACO,wBAAwB,4CAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5HA;AACA;AACA;AACA;AACO;AACP;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AAC4D;AACD;AAC3D;AACA;AACA,yBAAyB,8DAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,4EAA+B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpYA;AACA;AACA;AACA;AAC+C;AACuB;AAC/D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA,mCAAmC,8EAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACO,gDAAgD,EAAE,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI,MAAM;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACqE;AAC9D;AACP;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6EAAmB;AAC7C;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA,+CAA+C;AAC/C,uBAAuB,uCAAuC;AAC9D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACvQA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,sBAAsB;AACtB,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4BAA4B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2D;AACI;AACJ;AACT;AACH;AACN;AACc;AAC0B;AACC;AAC1B;AACyB;AACX;AACf;AACvD;AACA;AACA;AACA,0BAA0B,sEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAa,kBAAkB,+EAAyB;AACjF;AACA,uBAAuB,iDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAyD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,+DAA+D;AAC7G,4CAA4C,2DAA2D;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mEAAoB;AACjC;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAY;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAS;AAC7B;AACA,2BAA2B,0EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA,oBAAoB,yDAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA,gCAAgC,qEAAU;AAC1C,kDAAkD,sDAAU;AAC5D;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iCAAiC,qEAAqE,EAAE;AACrI;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oEAAY;AAC/B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAA+D;AACpH;AACA;AACA;AACA;AACA,yBAAyB,oHAA6C;AACtE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qEAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qEAAuB;AAC1D;AACA;AACA;AACA,mDAAmD,gCAAgC;AACnF;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,IAAI,oEAAc,GAAG,mFAAmB;AACxC;;;;;;;;;;;;;;;;;;;;;;;;;ACzeA;AACA;AACA;AACA;AAC+E;AACvB;AACI;AACV;AACH;AACN;AACQ;AACR;AACe;AACjD;AACP;AACA,eAAe,kEAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,iFAAuB;AACxD,iBAAiB,0DAAO;AACxB,iBAAiB,wDAAuB;AACxC;AACA,kBAAkB,uDAAQ;AAC1B,eAAe,iDAAK;AACpB,mBAAmB,yDAAS;AAC5B,4BAA4B,mEAAkC;AAC9D,wBAAwB,+DAA8B;AACtD,mBAAmB,0DAAyB;AAC5C,aAAa,oDAAG;AAChB,eAAe,iDAAK;AACpB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AAC9D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AACpB;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AAChD;AACP;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AAChC;AACP;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE;AACvE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;;;;;;;;;;;;;;;;;ACvyBzC;AACA;AACA;AACA;AACwD;AACjD;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAQ;AAC7B,cAAc,8DAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;UCtIA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AAC2E;AACE;AAC7E;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,mFAAkB;AAC/C;AACA,KAAK,gBAAgB,sFAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"editor.worker.js","sourcesContent":["/**\r\n * Returns the last element of an array.\r\n * @param array The array.\r\n * @param n Which element from the end (default is zero).\r\n */\r\nexport function tail(array, n = 0) {\r\n return array[array.length - (1 + n)];\r\n}\r\nexport function tail2(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function equals(one, other, itemEquals = (a, b) => a === b) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (!one || !other) {\r\n return false;\r\n }\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = one.length; i < len; i++) {\r\n if (!itemEquals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexport function binarySearch(array, key, comparator) {\r\n let low = 0, high = array.length - 1;\r\n while (low <= high) {\r\n const mid = ((low + high) / 2) | 0;\r\n const comp = comparator(array[mid], key);\r\n if (comp < 0) {\r\n low = mid + 1;\r\n }\r\n else if (comp > 0) {\r\n high = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -(low + 1);\r\n}\r\n/**\r\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\r\n * are located before all elements where p(x) is true.\r\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\r\n */\r\nexport function findFirstInSorted(array, p) {\r\n let low = 0, high = array.length;\r\n if (high === 0) {\r\n return 0; // no children\r\n }\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n if (p(array[mid])) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n}\r\n/**\r\n * Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort`\r\n * so only use this when actually needing stable sort.\r\n */\r\nexport function mergeSort(data, compare) {\r\n _sort(data, compare, 0, data.length - 1, []);\r\n return data;\r\n}\r\nfunction _merge(a, compare, lo, mid, hi, aux) {\r\n let leftIdx = lo, rightIdx = mid + 1;\r\n for (let i = lo; i <= hi; i++) {\r\n aux[i] = a[i];\r\n }\r\n for (let i = lo; i <= hi; i++) {\r\n if (leftIdx > mid) {\r\n // left side consumed\r\n a[i] = aux[rightIdx++];\r\n }\r\n else if (rightIdx > hi) {\r\n // right side consumed\r\n a[i] = aux[leftIdx++];\r\n }\r\n else if (compare(aux[rightIdx], aux[leftIdx]) < 0) {\r\n // right element is less -> comes first\r\n a[i] = aux[rightIdx++];\r\n }\r\n else {\r\n // left element comes first (less or equal)\r\n a[i] = aux[leftIdx++];\r\n }\r\n }\r\n}\r\nfunction _sort(a, compare, lo, hi, aux) {\r\n if (hi <= lo) {\r\n return;\r\n }\r\n const mid = lo + ((hi - lo) / 2) | 0;\r\n _sort(a, compare, lo, mid, aux);\r\n _sort(a, compare, mid + 1, hi, aux);\r\n if (compare(a[mid], a[mid + 1]) <= 0) {\r\n // left and right are sorted and if the last-left element is less\r\n // or equals than the first-right element there is nothing else\r\n // to do\r\n return;\r\n }\r\n _merge(a, compare, lo, mid, hi, aux);\r\n}\r\nexport function groupBy(data, compare) {\r\n const result = [];\r\n let currentGroup = undefined;\r\n for (const element of mergeSort(data.slice(0), compare)) {\r\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\r\n currentGroup = [element];\r\n result.push(currentGroup);\r\n }\r\n else {\r\n currentGroup.push(element);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @returns New array with all falsy values removed. The original array IS NOT modified.\r\n */\r\nexport function coalesce(array) {\r\n return array.filter(e => !!e);\r\n}\r\n/**\r\n * @returns false if the provided object is an array and not empty.\r\n */\r\nexport function isFalsyOrEmpty(obj) {\r\n return !Array.isArray(obj) || obj.length === 0;\r\n}\r\nexport function isNonEmptyArray(obj) {\r\n return Array.isArray(obj) && obj.length > 0;\r\n}\r\n/**\r\n * Removes duplicates from the given array. The optional keyFn allows to specify\r\n * how elements are checked for equalness by returning a unique string for each.\r\n */\r\nexport function distinct(array, keyFn) {\r\n if (!keyFn) {\r\n return array.filter((element, position) => {\r\n return array.indexOf(element) === position;\r\n });\r\n }\r\n const seen = Object.create(null);\r\n return array.filter((elem) => {\r\n const key = keyFn(elem);\r\n if (seen[key]) {\r\n return false;\r\n }\r\n seen[key] = true;\r\n return true;\r\n });\r\n}\r\nexport function distinctES6(array) {\r\n const seen = new Set();\r\n return array.filter(element => {\r\n if (seen.has(element)) {\r\n return false;\r\n }\r\n seen.add(element);\r\n return true;\r\n });\r\n}\r\n/**\r\n * @deprecated ES6: use `Array.findIndex`\r\n */\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function first(array, fn, notFoundValue = undefined) {\r\n const index = firstIndex(array, fn);\r\n return index < 0 ? notFoundValue : array[index];\r\n}\r\nexport function firstOrDefault(array, notFoundValue) {\r\n return array.length > 0 ? array[0] : notFoundValue;\r\n}\r\nexport function flatten(arr) {\r\n return [].concat(...arr);\r\n}\r\nexport function range(arg, to) {\r\n let from = typeof to === 'number' ? arg : 0;\r\n if (typeof to === 'number') {\r\n from = arg;\r\n }\r\n else {\r\n from = 0;\r\n to = arg;\r\n }\r\n const result = [];\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Insert `insertArr` inside `target` at `insertIndex`.\r\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\r\n */\r\nexport function arrayInsert(target, insertIndex, insertArr) {\r\n const before = target.slice(0, insertIndex);\r\n const after = target.slice(insertIndex);\r\n return before.concat(insertArr, after);\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function asArray(x) {\r\n return Array.isArray(x) ? x : [x];\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter, Event } from './event.js';\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n const handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nexport var CancellationToken;\r\n(function (CancellationToken) {\r\n function isCancellationToken(thing) {\r\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\r\n return true;\r\n }\r\n if (thing instanceof MutableToken) {\r\n return true;\r\n }\r\n if (!thing || typeof thing !== 'object') {\r\n return false;\r\n }\r\n return typeof thing.isCancellationRequested === 'boolean'\r\n && typeof thing.onCancellationRequested === 'function';\r\n }\r\n CancellationToken.isCancellationToken = isCancellationToken;\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: shortcutEvent\r\n });\r\n})(CancellationToken || (CancellationToken = {}));\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n this._emitter = null;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = null;\r\n }\r\n }\r\n}\r\nexport class CancellationTokenSource {\r\n constructor(parent) {\r\n this._token = undefined;\r\n this._parentListener = undefined;\r\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\r\n }\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually cancel\r\n this._token.cancel();\r\n }\r\n }\r\n dispose(cancel = false) {\r\n if (cancel) {\r\n this.cancel();\r\n }\r\n if (this._parentListener) {\r\n this._parentListener.dispose();\r\n }\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DiffChange } from './diffChange.js';\r\nimport { stringHash } from '../hash.js';\r\nexport class StringDiffSequence {\r\n constructor(source) {\r\n this.source = source;\r\n }\r\n getElements() {\r\n const source = this.source;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n return characters;\r\n }\r\n}\r\nexport function stringDiff(original, modified, pretty) {\r\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\r\n}\r\n//\r\n// The code below has been ported from a C# implementation in VS\r\n//\r\nexport class Debug {\r\n static Assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n }\r\n}\r\nexport class MyArray {\r\n /**\r\n * Copies a range of elements from an Array starting at the specified source index and pastes\r\n * them to another Array starting at the specified destination index. The length and the indexes\r\n * are specified as 64-bit integers.\r\n * sourceArray:\r\n *\t\tThe Array that contains the data to copy.\r\n * sourceIndex:\r\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\r\n * destinationArray:\r\n *\t\tThe Array that receives the data.\r\n * destinationIndex:\r\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\r\n * length:\r\n *\t\tA 64-bit integer that represents the number of elements to copy.\r\n */\r\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n}\r\n/**\r\n * A utility class which helps to create the set of DiffChanges from\r\n * a difference operation. This class accepts original DiffElements and\r\n * modified DiffElements that are involved in a particular change. The\r\n * MarktNextChange() method can be called to mark the separation between\r\n * distinct changes. At the end, the Changes property can be called to retrieve\r\n * the constructed changes.\r\n */\r\nclass DiffChangeHelper {\r\n /**\r\n * Constructs a new DiffChangeHelper for the given DiffSequences.\r\n */\r\n constructor() {\r\n this.m_changes = [];\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n }\r\n /**\r\n * Marks the beginning of the next change in the set of differences.\r\n */\r\n MarkNextChange() {\r\n // Only add to the list if there is something to add\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Add the new change to our list\r\n this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\r\n }\r\n // Reset for the next change\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n /**\r\n * Adds the original element at the given position to the elements\r\n * affected by the current change. The modified index gives context\r\n * to the change position with respect to the original sequence.\r\n * @param originalIndex The index of the original element to add.\r\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\r\n */\r\n AddOriginalElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_originalCount++;\r\n }\r\n /**\r\n * Adds the modified element at the given position to the elements\r\n * affected by the current change. The original index gives context\r\n * to the change position with respect to the modified sequence.\r\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\r\n * @param modifiedIndex The index of the modified element to add.\r\n */\r\n AddModifiedElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_modifiedCount++;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class.\r\n */\r\n getChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n return this.m_changes;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class in the reverse order\r\n */\r\n getReverseChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n this.m_changes.reverse();\r\n return this.m_changes;\r\n }\r\n}\r\n/**\r\n * An implementation of the difference algorithm described in\r\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\r\n */\r\nexport class LcsDiff {\r\n /**\r\n * Constructs the DiffFinder\r\n */\r\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\r\n this.ContinueProcessingPredicate = continueProcessingPredicate;\r\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\r\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\r\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\r\n this._originalStringElements = originalStringElements;\r\n this._originalElementsOrHash = originalElementsOrHash;\r\n this._modifiedStringElements = modifiedStringElements;\r\n this._modifiedElementsOrHash = modifiedElementsOrHash;\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n }\r\n static _isStringArray(arr) {\r\n return (arr.length > 0 && typeof arr[0] === 'string');\r\n }\r\n static _getElements(sequence) {\r\n const elements = sequence.getElements();\r\n if (LcsDiff._isStringArray(elements)) {\r\n const hashes = new Int32Array(elements.length);\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n hashes[i] = stringHash(elements[i], 0);\r\n }\r\n return [elements, hashes, true];\r\n }\r\n if (elements instanceof Int32Array) {\r\n return [[], elements, false];\r\n }\r\n return [[], new Int32Array(elements), false];\r\n }\r\n ElementsAreEqual(originalIndex, newIndex) {\r\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\r\n }\r\n OriginalElementsAreEqual(index1, index2) {\r\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\r\n }\r\n ModifiedElementsAreEqual(index1, index2) {\r\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\r\n }\r\n ComputeDiff(pretty) {\r\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\r\n }\r\n /**\r\n * Computes the differences between the original and modified input\r\n * sequences on the bounded range.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\r\n const quitEarlyArr = [false];\r\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\r\n if (pretty) {\r\n // We have to clean up the computed diff to be more intuitive\r\n // but it turns out this cannot be done correctly until the entire set\r\n // of diffs have been computed\r\n changes = this.PrettifyChanges(changes);\r\n }\r\n return {\r\n quitEarly: quitEarlyArr[0],\r\n changes: changes\r\n };\r\n }\r\n /**\r\n * Private helper method which computes the differences on the bounded range\r\n * recursively.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\r\n quitEarlyArr[0] = false;\r\n // Find the start of the differences\r\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\r\n originalStart++;\r\n modifiedStart++;\r\n }\r\n // Find the end of the differences\r\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\r\n originalEnd--;\r\n modifiedEnd--;\r\n }\r\n // In the special case where we either have all insertions or all deletions or the sequences are identical\r\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\r\n let changes;\r\n if (modifiedStart <= modifiedEnd) {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n // All insertions\r\n changes = [\r\n new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n else if (originalStart <= originalEnd) {\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // All deletions\r\n changes = [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\r\n ];\r\n }\r\n else {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // Identical sequences - No differences\r\n changes = [];\r\n }\r\n return changes;\r\n }\r\n // This problem can be solved using the Divide-And-Conquer technique.\r\n const midOriginalArr = [0];\r\n const midModifiedArr = [0];\r\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\r\n const midOriginal = midOriginalArr[0];\r\n const midModified = midModifiedArr[0];\r\n if (result !== null) {\r\n // Result is not-null when there was enough memory to compute the changes while\r\n // searching for the recursion point\r\n return result;\r\n }\r\n else if (!quitEarlyArr[0]) {\r\n // We can break the problem down recursively by finding the changes in the\r\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\r\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\r\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\r\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\r\n let rightChanges = [];\r\n if (!quitEarlyArr[0]) {\r\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\r\n }\r\n else {\r\n // We did't have time to finish the first half, so we don't have time to compute this half.\r\n // Consider the entire rest of the sequence different.\r\n rightChanges = [\r\n new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\r\n ];\r\n }\r\n return this.ConcatenateChanges(leftChanges, rightChanges);\r\n }\r\n // If we hit here, we quit early, and so can't return anything meaningful\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\r\n let forwardChanges = null;\r\n let reverseChanges = null;\r\n // First, walk backward through the forward diagonals history\r\n let changeHelper = new DiffChangeHelper();\r\n let diagonalMin = diagonalForwardStart;\r\n let diagonalMax = diagonalForwardEnd;\r\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\r\n let lastOriginalIndex = -1073741824 /* MIN_SAFE_SMALL_INTEGER */;\r\n let historyIndex = this.m_forwardHistory.length - 1;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalForwardBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n // Vertical line (the element is an insert)\r\n originalIndex = forwardPoints[diagonal + 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\r\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Horizontal line (the element is a deletion)\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex - 1;\r\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n forwardPoints = this.m_forwardHistory[historyIndex];\r\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = forwardPoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // Ironically, we get the forward changes as the reverse of the\r\n // order we added them since we technically added them backwards\r\n forwardChanges = changeHelper.getReverseChanges();\r\n if (quitEarlyArr[0]) {\r\n // TODO: Calculate a partial from the reverse diagonals.\r\n // For now, just assume everything after the midOriginal/midModified point is a diff\r\n let originalStartPoint = midOriginalArr[0] + 1;\r\n let modifiedStartPoint = midModifiedArr[0] + 1;\r\n if (forwardChanges !== null && forwardChanges.length > 0) {\r\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\r\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\r\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\r\n }\r\n reverseChanges = [\r\n new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\r\n ];\r\n }\r\n else {\r\n // Now walk backward through the reverse diagonals history\r\n changeHelper = new DiffChangeHelper();\r\n diagonalMin = diagonalReverseStart;\r\n diagonalMax = diagonalReverseEnd;\r\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\r\n lastOriginalIndex = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalReverseBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n // Horizontal line (the element is a deletion))\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex + 1;\r\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Vertical line (the element is an insertion)\r\n originalIndex = reversePoints[diagonal - 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n reversePoints = this.m_reverseHistory[historyIndex];\r\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = reversePoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // There are cases where the reverse history will find diffs that\r\n // are correct, but not intuitive, so we need shift them.\r\n reverseChanges = changeHelper.getChanges();\r\n }\r\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\r\n }\r\n /**\r\n * Given the range to compute the diff on, this method finds the point:\r\n * (midOriginal, midModified)\r\n * that exists in the middle of the LCS of the two sequences and\r\n * is the point at which the LCS problem may be broken down recursively.\r\n * This method will try to keep the LCS trace in memory. If the LCS recursion\r\n * point is calculated and the full trace is available in memory, then this method\r\n * will return the change list.\r\n * @param originalStart The start bound of the original sequence range\r\n * @param originalEnd The end bound of the original sequence range\r\n * @param modifiedStart The start bound of the modified sequence range\r\n * @param modifiedEnd The end bound of the modified sequence range\r\n * @param midOriginal The middle point of the original sequence range\r\n * @param midModified The middle point of the modified sequence range\r\n * @returns The diff changes, if available, otherwise null\r\n */\r\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\r\n let originalIndex = 0, modifiedIndex = 0;\r\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\r\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\r\n // To traverse the edit graph and produce the proper LCS, our actual\r\n // start position is just outside the given boundary\r\n originalStart--;\r\n modifiedStart--;\r\n // We set these up to make the compiler happy, but they will\r\n // be replaced before we return with the actual recursion point\r\n midOriginalArr[0] = 0;\r\n midModifiedArr[0] = 0;\r\n // Clear out the history\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\r\n // The integer value in the cell represents the originalIndex of the furthest\r\n // reaching point found so far that ends in that diagonal.\r\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\r\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\r\n const numDiagonals = maxDifferences + 1;\r\n const forwardPoints = new Int32Array(numDiagonals);\r\n const reversePoints = new Int32Array(numDiagonals);\r\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\r\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\r\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\r\n const diagonalReverseBase = (originalEnd - originalStart);\r\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalForwardBase)\r\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalReverseBase)\r\n const diagonalForwardOffset = (originalStart - modifiedStart);\r\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\r\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\r\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\r\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\r\n const delta = diagonalReverseBase - diagonalForwardBase;\r\n const deltaIsEven = (delta % 2 === 0);\r\n // Here we set up the start and end points as the furthest points found so far\r\n // in both the forward and reverse directions, respectively\r\n forwardPoints[diagonalForwardBase] = originalStart;\r\n reversePoints[diagonalReverseBase] = originalEnd;\r\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\r\n quitEarlyArr[0] = false;\r\n // A couple of points:\r\n // --With this method, we iterate on the number of differences between the two sequences.\r\n // The more differences there actually are, the longer this will take.\r\n // --Also, as the number of differences increases, we have to search on diagonals further\r\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\r\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\r\n // is even and odd diagonals only when numDifferences is odd.\r\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\r\n let furthestOriginalIndex = 0;\r\n let furthestModifiedIndex = 0;\r\n // Run the algorithm in the forward direction\r\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalStart, modifiedStart)\r\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n originalIndex = forwardPoints[diagonal + 1];\r\n }\r\n else {\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\r\n // Save the current originalIndex so we can test for false overlap in step 3\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // so long as the elements are equal.\r\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\r\n originalIndex++;\r\n modifiedIndex++;\r\n }\r\n forwardPoints[diagonal] = originalIndex;\r\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\r\n furthestOriginalIndex = originalIndex;\r\n furthestModifiedIndex = modifiedIndex;\r\n }\r\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\r\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\r\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\r\n // then check for overlap.\r\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\r\n if (originalIndex >= reversePoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Check to see if we should be quitting early, before moving on to the next iteration.\r\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\r\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\r\n // We can't finish, so skip ahead to generating a result from what we have.\r\n quitEarlyArr[0] = true;\r\n // Use the furthest distance we got in the forward direction.\r\n midOriginalArr[0] = furthestOriginalIndex;\r\n midModifiedArr[0] = furthestModifiedIndex;\r\n if (matchLengthOfLongest > 0 && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // Enough of the history is in memory to walk it backwards\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // We didn't actually remember enough of the history.\r\n //Since we are quiting the diff early, we need to shift back the originalStart and modified start\r\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\r\n originalStart++;\r\n modifiedStart++;\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n }\r\n // Run the algorithm in the reverse direction\r\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalEnd, modifiedEnd)\r\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n }\r\n else {\r\n originalIndex = reversePoints[diagonal - 1];\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\r\n // Save the current originalIndex so we can test for false overlap\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // as long as the elements are equal.\r\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\r\n originalIndex--;\r\n modifiedIndex--;\r\n }\r\n reversePoints[diagonal] = originalIndex;\r\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\r\n // and diagonal is in the range of forward diagonals computed for numDifferences\r\n // then check for overlap.\r\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\r\n if (originalIndex <= forwardPoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Save current vectors to history before the next iteration\r\n if (numDifferences <= 1447 /* MaxDifferencesHistory */) {\r\n // We are allocating space for one extra int, which we fill with\r\n // the index of the diagonal base index\r\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\r\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\r\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\r\n this.m_forwardHistory.push(temp);\r\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\r\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\r\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\r\n this.m_reverseHistory.push(temp);\r\n }\r\n }\r\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\r\n // NOTE: This part is a bit messy\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n /**\r\n * Shifts the given changes to provide a more intuitive diff.\r\n * While the first element in a diff matches the first element after the diff,\r\n * we shift the diff down.\r\n *\r\n * @param changes The list of changes to shift\r\n * @returns The shifted changes\r\n */\r\n PrettifyChanges(changes) {\r\n // Shift all the changes down first\r\n for (let i = 0; i < changes.length; i++) {\r\n const change = changes[i];\r\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\r\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n while (change.originalStart + change.originalLength < originalStop &&\r\n change.modifiedStart + change.modifiedLength < modifiedStop &&\r\n (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) &&\r\n (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\r\n change.originalStart++;\r\n change.modifiedStart++;\r\n }\r\n let mergedChangeArr = [null];\r\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\r\n changes[i] = mergedChangeArr[0];\r\n changes.splice(i + 1, 1);\r\n i--;\r\n continue;\r\n }\r\n }\r\n // Shift changes back up until we hit empty or whitespace-only lines\r\n for (let i = changes.length - 1; i >= 0; i--) {\r\n const change = changes[i];\r\n let originalStop = 0;\r\n let modifiedStop = 0;\r\n if (i > 0) {\r\n const prevChange = changes[i - 1];\r\n if (prevChange.originalLength > 0) {\r\n originalStop = prevChange.originalStart + prevChange.originalLength;\r\n }\r\n if (prevChange.modifiedLength > 0) {\r\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\r\n }\r\n }\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n let bestDelta = 0;\r\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\r\n for (let delta = 1;; delta++) {\r\n const originalStart = change.originalStart - delta;\r\n const modifiedStart = change.modifiedStart - delta;\r\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\r\n break;\r\n }\r\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\r\n break;\r\n }\r\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\r\n break;\r\n }\r\n const score = this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength);\r\n if (score > bestScore) {\r\n bestScore = score;\r\n bestDelta = delta;\r\n }\r\n }\r\n change.originalStart -= bestDelta;\r\n change.modifiedStart -= bestDelta;\r\n }\r\n return changes;\r\n }\r\n _OriginalIsBoundary(index) {\r\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\r\n }\r\n _OriginalRegionIsBoundary(originalStart, originalLength) {\r\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\r\n return true;\r\n }\r\n if (originalLength > 0) {\r\n const originalEnd = originalStart + originalLength;\r\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _ModifiedIsBoundary(index) {\r\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\r\n }\r\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\r\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\r\n return true;\r\n }\r\n if (modifiedLength > 0) {\r\n const modifiedEnd = modifiedStart + modifiedLength;\r\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\r\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\r\n return (originalScore + modifiedScore);\r\n }\r\n /**\r\n * Concatenates the two input DiffChange lists and returns the resulting\r\n * list.\r\n * @param The left changes\r\n * @param The right changes\r\n * @returns The concatenated list\r\n */\r\n ConcatenateChanges(left, right) {\r\n let mergedChangeArr = [];\r\n if (left.length === 0 || right.length === 0) {\r\n return (right.length > 0) ? right : left;\r\n }\r\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\r\n // Since we break the problem down recursively, it is possible that we\r\n // might recurse in the middle of a change thereby splitting it into\r\n // two changes. Here in the combining stage, we detect and fuse those\r\n // changes back together\r\n const result = new Array(left.length + right.length - 1);\r\n MyArray.Copy(left, 0, result, 0, left.length - 1);\r\n result[left.length - 1] = mergedChangeArr[0];\r\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\r\n return result;\r\n }\r\n else {\r\n const result = new Array(left.length + right.length);\r\n MyArray.Copy(left, 0, result, 0, left.length);\r\n MyArray.Copy(right, 0, result, left.length, right.length);\r\n return result;\r\n }\r\n }\r\n /**\r\n * Returns true if the two changes overlap and can be merged into a single\r\n * change\r\n * @param left The left change\r\n * @param right The right change\r\n * @param mergedChange The merged change if the two overlap, null otherwise\r\n * @returns True if the two changes overlap\r\n */\r\n ChangesOverlap(left, right, mergedChangeArr) {\r\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\r\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\r\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n const originalStart = left.originalStart;\r\n let originalLength = left.originalLength;\r\n const modifiedStart = left.modifiedStart;\r\n let modifiedLength = left.modifiedLength;\r\n if (left.originalStart + left.originalLength >= right.originalStart) {\r\n originalLength = right.originalStart + right.originalLength - left.originalStart;\r\n }\r\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\r\n }\r\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\r\n return true;\r\n }\r\n else {\r\n mergedChangeArr[0] = null;\r\n return false;\r\n }\r\n }\r\n /**\r\n * Helper method used to clip a diagonal index to the range of valid\r\n * diagonals. This also decides whether or not the diagonal index,\r\n * if it exceeds the boundary, should be clipped to the boundary or clipped\r\n * one inside the boundary depending on the Even/Odd status of the boundary\r\n * and numDifferences.\r\n * @param diagonal The index of the diagonal to clip.\r\n * @param numDifferences The current number of differences being iterated upon.\r\n * @param diagonalBaseIndex The base reference diagonal.\r\n * @param numDiagonals The total number of diagonals.\r\n * @returns The clipped diagonal index.\r\n */\r\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\r\n if (diagonal >= 0 && diagonal < numDiagonals) {\r\n // Nothing to clip, its in range\r\n return diagonal;\r\n }\r\n // diagonalsBelow: The number of diagonals below the reference diagonal\r\n // diagonalsAbove: The number of diagonals above the reference diagonal\r\n const diagonalsBelow = diagonalBaseIndex;\r\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\r\n const diffEven = (numDifferences % 2 === 0);\r\n if (diagonal < 0) {\r\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\r\n return (diffEven === lowerBoundEven) ? 0 : 1;\r\n }\r\n else {\r\n const upperBoundEven = (diagonalsAbove % 2 === 0);\r\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Represents information about a specific difference between two sequences.\r\n */\r\nexport class DiffChange {\r\n /**\r\n * Constructs a new DiffChange with the given sequence information\r\n * and content.\r\n */\r\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\r\n this.originalStart = originalStart;\r\n this.originalLength = originalLength;\r\n this.modifiedStart = modifiedStart;\r\n this.modifiedLength = modifiedLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the original sequence.\r\n */\r\n getOriginalEnd() {\r\n return this.originalStart + this.originalLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the modified sequence.\r\n */\r\n getModifiedEnd() {\r\n return this.modifiedStart + this.modifiedLength;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\r\nexport class ErrorHandler {\r\n constructor() {\r\n this.listeners = [];\r\n this.unexpectedErrorHandler = function (e) {\r\n setTimeout(() => {\r\n if (e.stack) {\r\n throw new Error(e.message + '\\n\\n' + e.stack);\r\n }\r\n throw e;\r\n }, 0);\r\n };\r\n }\r\n emit(e) {\r\n this.listeners.forEach((listener) => {\r\n listener(e);\r\n });\r\n }\r\n onUnexpectedError(e) {\r\n this.unexpectedErrorHandler(e);\r\n this.emit(e);\r\n }\r\n // For external errors, we don't want the listeners to be called\r\n onUnexpectedExternalError(e) {\r\n this.unexpectedErrorHandler(e);\r\n }\r\n}\r\nexport const errorHandler = new ErrorHandler();\r\nexport function onUnexpectedError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function onUnexpectedExternalError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedExternalError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function transformErrorForSerialization(error) {\r\n if (error instanceof Error) {\r\n let { name, message } = error;\r\n const stack = error.stacktrace || error.stack;\r\n return {\r\n $isError: true,\r\n name,\r\n message,\r\n stack\r\n };\r\n }\r\n // return as is\r\n return error;\r\n}\r\nconst canceledName = 'Canceled';\r\n/**\r\n * Checks if the given error is a promise in canceled state\r\n */\r\nexport function isPromiseCanceledError(error) {\r\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\r\n}\r\n/**\r\n * Returns an error that signals cancellation.\r\n */\r\nexport function canceled() {\r\n const error = new Error(canceledName);\r\n error.name = error.message;\r\n return error;\r\n}\r\nexport function illegalArgument(name) {\r\n if (name) {\r\n return new Error(`Illegal argument: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal argument');\r\n }\r\n}\r\nexport function illegalState(name) {\r\n if (name) {\r\n return new Error(`Illegal state: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal state');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from './errors.js';\r\nimport { Disposable, combinedDisposable, DisposableStore } from './lifecycle.js';\r\nimport { LinkedList } from './linkedList.js';\r\nexport var Event;\r\n(function (Event) {\r\n Event.None = () => Disposable.None;\r\n /**\r\n * Given an event, returns another event which only fires once.\r\n */\r\n function once(event) {\r\n return (listener, thisArgs = null, disposables) => {\r\n // we need this, in case the event fires during the listener call\r\n let didFire = false;\r\n let result;\r\n result = event(e => {\r\n if (didFire) {\r\n return;\r\n }\r\n else if (result) {\r\n result.dispose();\r\n }\r\n else {\r\n didFire = true;\r\n }\r\n return listener.call(thisArgs, e);\r\n }, null, disposables);\r\n if (didFire) {\r\n result.dispose();\r\n }\r\n return result;\r\n };\r\n }\r\n Event.once = once;\r\n /**\r\n * Given an event and a `map` function, returns another event which maps each element\r\n * through the mapping function.\r\n */\r\n function map(event, map) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables));\r\n }\r\n Event.map = map;\r\n /**\r\n * Given an event and an `each` function, returns another identical event and calls\r\n * the `each` function per each element.\r\n */\r\n function forEach(event, each) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables));\r\n }\r\n Event.forEach = forEach;\r\n function filter(event, filter) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables));\r\n }\r\n Event.filter = filter;\r\n /**\r\n * Given an event, returns the same event but typed as `Event<void>`.\r\n */\r\n function signal(event) {\r\n return event;\r\n }\r\n Event.signal = signal;\r\n function any(...events) {\r\n return (listener, thisArgs = null, disposables) => combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\r\n }\r\n Event.any = any;\r\n /**\r\n * Given an event and a `merge` function, returns another event which maps each element\r\n * and the cumulative result through the `merge` function. Similar to `map`, but with memory.\r\n */\r\n function reduce(event, merge, initial) {\r\n let output = initial;\r\n return map(event, e => {\r\n output = merge(output, e);\r\n return output;\r\n });\r\n }\r\n Event.reduce = reduce;\r\n /**\r\n * Given a chain of event processing functions (filter, map, etc), each\r\n * function will be invoked per event & per listener. Snapshotting an event\r\n * chain allows each function to be invoked just once per event.\r\n */\r\n function snapshot(event) {\r\n let listener;\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n listener = event(emitter.fire, emitter);\r\n },\r\n onLastListenerRemove() {\r\n listener.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.snapshot = snapshot;\r\n function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {\r\n let subscription;\r\n let output = undefined;\r\n let handle = undefined;\r\n let numDebouncedCalls = 0;\r\n const emitter = new Emitter({\r\n leakWarningThreshold,\r\n onFirstListenerAdd() {\r\n subscription = event(cur => {\r\n numDebouncedCalls++;\r\n output = merge(output, cur);\r\n if (leading && !handle) {\r\n emitter.fire(output);\r\n output = undefined;\r\n }\r\n clearTimeout(handle);\r\n handle = setTimeout(() => {\r\n const _output = output;\r\n output = undefined;\r\n handle = undefined;\r\n if (!leading || numDebouncedCalls > 1) {\r\n emitter.fire(_output);\r\n }\r\n numDebouncedCalls = 0;\r\n }, delay);\r\n });\r\n },\r\n onLastListenerRemove() {\r\n subscription.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.debounce = debounce;\r\n /**\r\n * Given an event, it returns another event which fires only once and as soon as\r\n * the input event emits. The event data is the number of millis it took for the\r\n * event to fire.\r\n */\r\n function stopwatch(event) {\r\n const start = new Date().getTime();\r\n return map(once(event), _ => new Date().getTime() - start);\r\n }\r\n Event.stopwatch = stopwatch;\r\n /**\r\n * Given an event, it returns another event which fires only when the event\r\n * element changes.\r\n */\r\n function latch(event) {\r\n let firstCall = true;\r\n let cache;\r\n return filter(event, value => {\r\n const shouldEmit = firstCall || value !== cache;\r\n firstCall = false;\r\n cache = value;\r\n return shouldEmit;\r\n });\r\n }\r\n Event.latch = latch;\r\n /**\r\n * Buffers the provided event until a first listener comes\r\n * along, at which point fire all the events at once and\r\n * pipe the event from then on.\r\n *\r\n * ```typescript\r\n * const emitter = new Emitter<number>();\r\n * const event = emitter.event;\r\n * const bufferedEvent = buffer(event);\r\n *\r\n * emitter.fire(1);\r\n * emitter.fire(2);\r\n * emitter.fire(3);\r\n * // nothing...\r\n *\r\n * const listener = bufferedEvent(num => console.log(num));\r\n * // 1, 2, 3\r\n *\r\n * emitter.fire(4);\r\n * // 4\r\n * ```\r\n */\r\n function buffer(event, nextTick = false, _buffer = []) {\r\n let buffer = _buffer.slice();\r\n let listener = event(e => {\r\n if (buffer) {\r\n buffer.push(e);\r\n }\r\n else {\r\n emitter.fire(e);\r\n }\r\n });\r\n const flush = () => {\r\n if (buffer) {\r\n buffer.forEach(e => emitter.fire(e));\r\n }\r\n buffer = null;\r\n };\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n if (!listener) {\r\n listener = event(e => emitter.fire(e));\r\n }\r\n },\r\n onFirstListenerDidAdd() {\r\n if (buffer) {\r\n if (nextTick) {\r\n setTimeout(flush);\r\n }\r\n else {\r\n flush();\r\n }\r\n }\r\n },\r\n onLastListenerRemove() {\r\n if (listener) {\r\n listener.dispose();\r\n }\r\n listener = null;\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.buffer = buffer;\r\n class ChainableEvent {\r\n constructor(event) {\r\n this.event = event;\r\n }\r\n map(fn) {\r\n return new ChainableEvent(map(this.event, fn));\r\n }\r\n forEach(fn) {\r\n return new ChainableEvent(forEach(this.event, fn));\r\n }\r\n filter(fn) {\r\n return new ChainableEvent(filter(this.event, fn));\r\n }\r\n reduce(merge, initial) {\r\n return new ChainableEvent(reduce(this.event, merge, initial));\r\n }\r\n latch() {\r\n return new ChainableEvent(latch(this.event));\r\n }\r\n debounce(merge, delay = 100, leading = false, leakWarningThreshold) {\r\n return new ChainableEvent(debounce(this.event, merge, delay, leading, leakWarningThreshold));\r\n }\r\n on(listener, thisArgs, disposables) {\r\n return this.event(listener, thisArgs, disposables);\r\n }\r\n once(listener, thisArgs, disposables) {\r\n return once(this.event)(listener, thisArgs, disposables);\r\n }\r\n }\r\n function chain(event) {\r\n return new ChainableEvent(event);\r\n }\r\n Event.chain = chain;\r\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\r\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\r\n function fromPromise(promise) {\r\n const emitter = new Emitter();\r\n let shouldEmit = false;\r\n promise\r\n .then(undefined, () => null)\r\n .then(() => {\r\n if (!shouldEmit) {\r\n setTimeout(() => emitter.fire(undefined), 0);\r\n }\r\n else {\r\n emitter.fire(undefined);\r\n }\r\n });\r\n shouldEmit = true;\r\n return emitter.event;\r\n }\r\n Event.fromPromise = fromPromise;\r\n function toPromise(event) {\r\n return new Promise(c => once(event)(c));\r\n }\r\n Event.toPromise = toPromise;\r\n})(Event || (Event = {}));\r\nlet _globalLeakWarningThreshold = -1;\r\nclass LeakageMonitor {\r\n constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {\r\n this.customThreshold = customThreshold;\r\n this.name = name;\r\n this._warnCountdown = 0;\r\n }\r\n dispose() {\r\n if (this._stacks) {\r\n this._stacks.clear();\r\n }\r\n }\r\n check(listenerCount) {\r\n let threshold = _globalLeakWarningThreshold;\r\n if (typeof this.customThreshold === 'number') {\r\n threshold = this.customThreshold;\r\n }\r\n if (threshold <= 0 || listenerCount < threshold) {\r\n return undefined;\r\n }\r\n if (!this._stacks) {\r\n this._stacks = new Map();\r\n }\r\n const stack = new Error().stack.split('\\n').slice(3).join('\\n');\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count + 1);\r\n this._warnCountdown -= 1;\r\n if (this._warnCountdown <= 0) {\r\n // only warn on first exceed and then every time the limit\r\n // is exceeded by 50% again\r\n this._warnCountdown = threshold * 0.5;\r\n // find most frequent listener and print warning\r\n let topStack;\r\n let topCount = 0;\r\n for (const [stack, count] of this._stacks) {\r\n if (!topStack || topCount < count) {\r\n topStack = stack;\r\n topCount = count;\r\n }\r\n }\r\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\r\n console.warn(topStack);\r\n }\r\n return () => {\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count - 1);\r\n };\r\n }\r\n}\r\n/**\r\n * The Emitter can be used to expose an Event to the public\r\n * to fire it from the insides.\r\n * Sample:\r\n class Document {\r\n\r\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\r\n\r\n public onDidChange = this._onDidChange.event;\r\n\r\n // getter-style\r\n // get onDidChange(): Event<(value:string)=>any> {\r\n // \treturn this._onDidChange.event;\r\n // }\r\n\r\n private _doIt() {\r\n //...\r\n this._onDidChange.fire(value);\r\n }\r\n }\r\n */\r\nexport class Emitter {\r\n constructor(options) {\r\n this._disposed = false;\r\n this._options = options;\r\n this._leakageMon = _globalLeakWarningThreshold > 0\r\n ? new LeakageMonitor(this._options && this._options.leakWarningThreshold)\r\n : undefined;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n if (!this._listeners) {\r\n this._listeners = new LinkedList();\r\n }\r\n const firstListener = this._listeners.isEmpty();\r\n if (firstListener && this._options && this._options.onFirstListenerAdd) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);\r\n if (firstListener && this._options && this._options.onFirstListenerDidAdd) {\r\n this._options.onFirstListenerDidAdd(this);\r\n }\r\n if (this._options && this._options.onListenerDidAdd) {\r\n this._options.onListenerDidAdd(this, listener, thisArgs);\r\n }\r\n // check and record this emitter for potential leakage\r\n let removeMonitor;\r\n if (this._leakageMon) {\r\n removeMonitor = this._leakageMon.check(this._listeners.size);\r\n }\r\n let result;\r\n result = {\r\n dispose: () => {\r\n if (removeMonitor) {\r\n removeMonitor();\r\n }\r\n result.dispose = Emitter._noop;\r\n if (!this._disposed) {\r\n remove();\r\n if (this._options && this._options.onLastListenerRemove) {\r\n const hasListeners = (this._listeners && !this._listeners.isEmpty());\r\n if (!hasListeners) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n if (disposables instanceof DisposableStore) {\r\n disposables.add(result);\r\n }\r\n else if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n if (this._listeners) {\r\n // put all [listener,event]-pairs into delivery queue\r\n // then emit all event. an inner/nested event might be\r\n // the driver of this\r\n if (!this._deliveryQueue) {\r\n this._deliveryQueue = new LinkedList();\r\n }\r\n for (let listener of this._listeners) {\r\n this._deliveryQueue.push([listener, event]);\r\n }\r\n while (this._deliveryQueue.size > 0) {\r\n const [listener, event] = this._deliveryQueue.shift();\r\n try {\r\n if (typeof listener === 'function') {\r\n listener.call(undefined, event);\r\n }\r\n else {\r\n listener[0].call(listener[1], event);\r\n }\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n }\r\n }\r\n dispose() {\r\n if (this._listeners) {\r\n this._listeners.clear();\r\n }\r\n if (this._deliveryQueue) {\r\n this._deliveryQueue.clear();\r\n }\r\n if (this._leakageMon) {\r\n this._leakageMon.dispose();\r\n }\r\n this._disposed = true;\r\n }\r\n}\r\nEmitter._noop = function () { };\r\nexport class PauseableEmitter extends Emitter {\r\n constructor(options) {\r\n super(options);\r\n this._isPaused = 0;\r\n this._eventQueue = new LinkedList();\r\n this._mergeFn = options && options.merge;\r\n }\r\n pause() {\r\n this._isPaused++;\r\n }\r\n resume() {\r\n if (this._isPaused !== 0 && --this._isPaused === 0) {\r\n if (this._mergeFn) {\r\n // use the merge function to create a single composite\r\n // event. make a copy in case firing pauses this emitter\r\n const events = this._eventQueue.toArray();\r\n this._eventQueue.clear();\r\n super.fire(this._mergeFn(events));\r\n }\r\n else {\r\n // no merging, fire each event individually and test\r\n // that this emitter isn't paused halfway through\r\n while (!this._isPaused && this._eventQueue.size !== 0) {\r\n super.fire(this._eventQueue.shift());\r\n }\r\n }\r\n }\r\n }\r\n fire(event) {\r\n if (this._listeners) {\r\n if (this._isPaused !== 0) {\r\n this._eventQueue.push(event);\r\n }\r\n else {\r\n super.fire(event);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The EventBufferer is useful in situations in which you want\r\n * to delay firing your events during some code.\r\n * You can wrap that code and be sure that the event will not\r\n * be fired during that wrap.\r\n *\r\n * ```\r\n * const emitter: Emitter;\r\n * const delayer = new EventDelayer();\r\n * const delayedEvent = delayer.wrapEvent(emitter.event);\r\n *\r\n * delayedEvent(console.log);\r\n *\r\n * delayer.bufferEvents(() => {\r\n * emitter.fire(); // event will not be fired yet\r\n * });\r\n *\r\n * // event will only be fired at this point\r\n * ```\r\n */\r\nexport class EventBufferer {\r\n constructor() {\r\n this.buffers = [];\r\n }\r\n wrapEvent(event) {\r\n return (listener, thisArgs, disposables) => {\r\n return event(i => {\r\n const buffer = this.buffers[this.buffers.length - 1];\r\n if (buffer) {\r\n buffer.push(() => listener.call(thisArgs, i));\r\n }\r\n else {\r\n listener.call(thisArgs, i);\r\n }\r\n }, undefined, disposables);\r\n };\r\n }\r\n bufferEvents(fn) {\r\n const buffer = [];\r\n this.buffers.push(buffer);\r\n const r = fn();\r\n this.buffers.pop();\r\n buffer.forEach(flush => flush());\r\n return r;\r\n }\r\n}\r\n/**\r\n * A Relay is an event forwarder which functions as a replugabble event pipe.\r\n * Once created, you can connect an input event to it and it will simply forward\r\n * events from that input event through its own `event` property. The `input`\r\n * can be changed at any point in time.\r\n */\r\nexport class Relay {\r\n constructor() {\r\n this.listening = false;\r\n this.inputEvent = Event.None;\r\n this.inputEventListener = Disposable.None;\r\n this.emitter = new Emitter({\r\n onFirstListenerDidAdd: () => {\r\n this.listening = true;\r\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\r\n },\r\n onLastListenerRemove: () => {\r\n this.listening = false;\r\n this.inputEventListener.dispose();\r\n }\r\n });\r\n this.event = this.emitter.event;\r\n }\r\n set input(event) {\r\n this.inputEvent = event;\r\n if (this.listening) {\r\n this.inputEventListener.dispose();\r\n this.inputEventListener = event(this.emitter.fire, this.emitter);\r\n }\r\n }\r\n dispose() {\r\n this.inputEventListener.dispose();\r\n this.emitter.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\n/**\r\n * Return a hash value for an object.\r\n */\r\nexport function hash(obj) {\r\n return doHash(obj, 0);\r\n}\r\nexport function doHash(obj, hashVal) {\r\n switch (typeof obj) {\r\n case 'object':\r\n if (obj === null) {\r\n return numberHash(349, hashVal);\r\n }\r\n else if (Array.isArray(obj)) {\r\n return arrayHash(obj, hashVal);\r\n }\r\n return objectHash(obj, hashVal);\r\n case 'string':\r\n return stringHash(obj, hashVal);\r\n case 'boolean':\r\n return booleanHash(obj, hashVal);\r\n case 'number':\r\n return numberHash(obj, hashVal);\r\n case 'undefined':\r\n return numberHash(937, hashVal);\r\n default:\r\n return numberHash(617, hashVal);\r\n }\r\n}\r\nfunction numberHash(val, initialHashVal) {\r\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\r\n}\r\nfunction booleanHash(b, initialHashVal) {\r\n return numberHash(b ? 433 : 863, initialHashVal);\r\n}\r\nexport function stringHash(s, hashVal) {\r\n hashVal = numberHash(149417, hashVal);\r\n for (let i = 0, length = s.length; i < length; i++) {\r\n hashVal = numberHash(s.charCodeAt(i), hashVal);\r\n }\r\n return hashVal;\r\n}\r\nfunction arrayHash(arr, initialHashVal) {\r\n initialHashVal = numberHash(104579, initialHashVal);\r\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\r\n}\r\nfunction objectHash(obj, initialHashVal) {\r\n initialHashVal = numberHash(181387, initialHashVal);\r\n return Object.keys(obj).sort().reduce((hashVal, key) => {\r\n hashVal = stringHash(key, hashVal);\r\n return doHash(obj[key], hashVal);\r\n }, initialHashVal);\r\n}\r\nfunction leftRotate(value, bits, totalBits = 32) {\r\n // delta + bits = totalBits\r\n const delta = totalBits - bits;\r\n // All ones, expect `delta` zeros aligned to the right\r\n const mask = ~((1 << delta) - 1);\r\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\r\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\r\n}\r\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\r\n for (let i = 0; i < count; i++) {\r\n dest[index + i] = value;\r\n }\r\n}\r\nfunction leftPad(value, length, char = '0') {\r\n while (value.length < length) {\r\n value = char + value;\r\n }\r\n return value;\r\n}\r\nfunction toHexString(value, bitsize = 32) {\r\n return leftPad((value >>> 0).toString(16), bitsize / 4);\r\n}\r\n/**\r\n * A SHA1 implementation that works with strings and does not allocate.\r\n */\r\nexport class StringSHA1 {\r\n constructor() {\r\n this._h0 = 0x67452301;\r\n this._h1 = 0xEFCDAB89;\r\n this._h2 = 0x98BADCFE;\r\n this._h3 = 0x10325476;\r\n this._h4 = 0xC3D2E1F0;\r\n this._buff = new Uint8Array(64 /* BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\r\n this._buffDV = new DataView(this._buff.buffer);\r\n this._buffLen = 0;\r\n this._totalLen = 0;\r\n this._leftoverHighSurrogate = 0;\r\n this._finished = false;\r\n }\r\n update(str) {\r\n const strLen = str.length;\r\n if (strLen === 0) {\r\n return;\r\n }\r\n const buff = this._buff;\r\n let buffLen = this._buffLen;\r\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\r\n let charCode;\r\n let offset;\r\n if (leftoverHighSurrogate !== 0) {\r\n charCode = leftoverHighSurrogate;\r\n offset = -1;\r\n leftoverHighSurrogate = 0;\r\n }\r\n else {\r\n charCode = str.charCodeAt(0);\r\n offset = 0;\r\n }\r\n while (true) {\r\n let codePoint = charCode;\r\n if (strings.isHighSurrogate(charCode)) {\r\n if (offset + 1 < strLen) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (strings.isLowSurrogate(nextCharCode)) {\r\n offset++;\r\n codePoint = strings.computeCodePoint(charCode, nextCharCode);\r\n }\r\n else {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n }\r\n else {\r\n // last character is a surrogate pair\r\n leftoverHighSurrogate = charCode;\r\n break;\r\n }\r\n }\r\n else if (strings.isLowSurrogate(charCode)) {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n buffLen = this._push(buff, buffLen, codePoint);\r\n offset++;\r\n if (offset < strLen) {\r\n charCode = str.charCodeAt(offset);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this._buffLen = buffLen;\r\n this._leftoverHighSurrogate = leftoverHighSurrogate;\r\n }\r\n _push(buff, buffLen, codePoint) {\r\n if (codePoint < 0x0080) {\r\n buff[buffLen++] = codePoint;\r\n }\r\n else if (codePoint < 0x0800) {\r\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else if (codePoint < 0x10000) {\r\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else {\r\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n if (buffLen >= 64 /* BLOCK_SIZE */) {\r\n this._step();\r\n buffLen -= 64 /* BLOCK_SIZE */;\r\n this._totalLen += 64 /* BLOCK_SIZE */;\r\n // take last 3 in case of UTF8 overflow\r\n buff[0] = buff[64 /* BLOCK_SIZE */ + 0];\r\n buff[1] = buff[64 /* BLOCK_SIZE */ + 1];\r\n buff[2] = buff[64 /* BLOCK_SIZE */ + 2];\r\n }\r\n return buffLen;\r\n }\r\n digest() {\r\n if (!this._finished) {\r\n this._finished = true;\r\n if (this._leftoverHighSurrogate) {\r\n // illegal => unicode replacement character\r\n this._leftoverHighSurrogate = 0;\r\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */);\r\n }\r\n this._totalLen += this._buffLen;\r\n this._wrapUp();\r\n }\r\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\r\n }\r\n _wrapUp() {\r\n this._buff[this._buffLen++] = 0x80;\r\n fill(this._buff, this._buffLen);\r\n if (this._buffLen > 56) {\r\n this._step();\r\n fill(this._buff);\r\n }\r\n // this will fit because the mantissa can cover up to 52 bits\r\n const ml = 8 * this._totalLen;\r\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\r\n this._buffDV.setUint32(60, ml % 4294967296, false);\r\n this._step();\r\n }\r\n _step() {\r\n const bigBlock32 = StringSHA1._bigBlock32;\r\n const data = this._buffDV;\r\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\r\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\r\n }\r\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\r\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\r\n }\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f, k;\r\n let temp;\r\n for (let j = 0; j < 80; j++) {\r\n if (j < 20) {\r\n f = (b & c) | ((~b) & d);\r\n k = 0x5A827999;\r\n }\r\n else if (j < 40) {\r\n f = b ^ c ^ d;\r\n k = 0x6ED9EBA1;\r\n }\r\n else if (j < 60) {\r\n f = (b & c) | (b & d) | (c & d);\r\n k = 0x8F1BBCDC;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xCA62C1D6;\r\n }\r\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = leftRotate(b, 30);\r\n b = a;\r\n a = temp;\r\n }\r\n this._h0 = (this._h0 + a) & 0xffffffff;\r\n this._h1 = (this._h1 + b) & 0xffffffff;\r\n this._h2 = (this._h2 + c) & 0xffffffff;\r\n this._h3 = (this._h3 + d) & 0xffffffff;\r\n this._h4 = (this._h4 + e) & 0xffffffff;\r\n }\r\n}\r\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Iterable;\r\n(function (Iterable) {\r\n function is(thing) {\r\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\r\n }\r\n Iterable.is = is;\r\n const _empty = Object.freeze([]);\r\n function empty() {\r\n return _empty;\r\n }\r\n Iterable.empty = empty;\r\n function* single(element) {\r\n yield element;\r\n }\r\n Iterable.single = single;\r\n function from(iterable) {\r\n return iterable || _empty;\r\n }\r\n Iterable.from = from;\r\n function first(iterable) {\r\n return iterable[Symbol.iterator]().next().value;\r\n }\r\n Iterable.first = first;\r\n function some(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n Iterable.some = some;\r\n function* filter(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.filter = filter;\r\n function* map(iterable, fn) {\r\n for (const element of iterable) {\r\n yield fn(element);\r\n }\r\n }\r\n Iterable.map = map;\r\n function* concat(...iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concat = concat;\r\n /**\r\n * Consumes `atMost` elements from iterable and returns the consumed elements,\r\n * and an iterable for the rest of the elements.\r\n */\r\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\r\n const consumed = [];\r\n if (atMost === 0) {\r\n return [consumed, iterable];\r\n }\r\n const iterator = iterable[Symbol.iterator]();\r\n for (let i = 0; i < atMost; i++) {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return [consumed, Iterable.empty()];\r\n }\r\n consumed.push(next.value);\r\n }\r\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\r\n }\r\n Iterable.consume = consume;\r\n})(Iterable || (Iterable = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from './errors.js';\r\nclass KeyCodeStrMap {\r\n constructor() {\r\n this._keyCodeToStr = [];\r\n this._strToKeyCode = Object.create(null);\r\n }\r\n define(keyCode, str) {\r\n this._keyCodeToStr[keyCode] = str;\r\n this._strToKeyCode[str.toLowerCase()] = keyCode;\r\n }\r\n keyCodeToStr(keyCode) {\r\n return this._keyCodeToStr[keyCode];\r\n }\r\n strToKeyCode(str) {\r\n return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;\r\n }\r\n}\r\nconst uiMap = new KeyCodeStrMap();\r\nconst userSettingsUSMap = new KeyCodeStrMap();\r\nconst userSettingsGeneralMap = new KeyCodeStrMap();\r\n(function () {\r\n function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {\r\n uiMap.define(keyCode, uiLabel);\r\n userSettingsUSMap.define(keyCode, usUserSettingsLabel);\r\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);\r\n }\r\n define(0 /* Unknown */, 'unknown');\r\n define(1 /* Backspace */, 'Backspace');\r\n define(2 /* Tab */, 'Tab');\r\n define(3 /* Enter */, 'Enter');\r\n define(4 /* Shift */, 'Shift');\r\n define(5 /* Ctrl */, 'Ctrl');\r\n define(6 /* Alt */, 'Alt');\r\n define(7 /* PauseBreak */, 'PauseBreak');\r\n define(8 /* CapsLock */, 'CapsLock');\r\n define(9 /* Escape */, 'Escape');\r\n define(10 /* Space */, 'Space');\r\n define(11 /* PageUp */, 'PageUp');\r\n define(12 /* PageDown */, 'PageDown');\r\n define(13 /* End */, 'End');\r\n define(14 /* Home */, 'Home');\r\n define(15 /* LeftArrow */, 'LeftArrow', 'Left');\r\n define(16 /* UpArrow */, 'UpArrow', 'Up');\r\n define(17 /* RightArrow */, 'RightArrow', 'Right');\r\n define(18 /* DownArrow */, 'DownArrow', 'Down');\r\n define(19 /* Insert */, 'Insert');\r\n define(20 /* Delete */, 'Delete');\r\n define(21 /* KEY_0 */, '0');\r\n define(22 /* KEY_1 */, '1');\r\n define(23 /* KEY_2 */, '2');\r\n define(24 /* KEY_3 */, '3');\r\n define(25 /* KEY_4 */, '4');\r\n define(26 /* KEY_5 */, '5');\r\n define(27 /* KEY_6 */, '6');\r\n define(28 /* KEY_7 */, '7');\r\n define(29 /* KEY_8 */, '8');\r\n define(30 /* KEY_9 */, '9');\r\n define(31 /* KEY_A */, 'A');\r\n define(32 /* KEY_B */, 'B');\r\n define(33 /* KEY_C */, 'C');\r\n define(34 /* KEY_D */, 'D');\r\n define(35 /* KEY_E */, 'E');\r\n define(36 /* KEY_F */, 'F');\r\n define(37 /* KEY_G */, 'G');\r\n define(38 /* KEY_H */, 'H');\r\n define(39 /* KEY_I */, 'I');\r\n define(40 /* KEY_J */, 'J');\r\n define(41 /* KEY_K */, 'K');\r\n define(42 /* KEY_L */, 'L');\r\n define(43 /* KEY_M */, 'M');\r\n define(44 /* KEY_N */, 'N');\r\n define(45 /* KEY_O */, 'O');\r\n define(46 /* KEY_P */, 'P');\r\n define(47 /* KEY_Q */, 'Q');\r\n define(48 /* KEY_R */, 'R');\r\n define(49 /* KEY_S */, 'S');\r\n define(50 /* KEY_T */, 'T');\r\n define(51 /* KEY_U */, 'U');\r\n define(52 /* KEY_V */, 'V');\r\n define(53 /* KEY_W */, 'W');\r\n define(54 /* KEY_X */, 'X');\r\n define(55 /* KEY_Y */, 'Y');\r\n define(56 /* KEY_Z */, 'Z');\r\n define(57 /* Meta */, 'Meta');\r\n define(58 /* ContextMenu */, 'ContextMenu');\r\n define(59 /* F1 */, 'F1');\r\n define(60 /* F2 */, 'F2');\r\n define(61 /* F3 */, 'F3');\r\n define(62 /* F4 */, 'F4');\r\n define(63 /* F5 */, 'F5');\r\n define(64 /* F6 */, 'F6');\r\n define(65 /* F7 */, 'F7');\r\n define(66 /* F8 */, 'F8');\r\n define(67 /* F9 */, 'F9');\r\n define(68 /* F10 */, 'F10');\r\n define(69 /* F11 */, 'F11');\r\n define(70 /* F12 */, 'F12');\r\n define(71 /* F13 */, 'F13');\r\n define(72 /* F14 */, 'F14');\r\n define(73 /* F15 */, 'F15');\r\n define(74 /* F16 */, 'F16');\r\n define(75 /* F17 */, 'F17');\r\n define(76 /* F18 */, 'F18');\r\n define(77 /* F19 */, 'F19');\r\n define(78 /* NumLock */, 'NumLock');\r\n define(79 /* ScrollLock */, 'ScrollLock');\r\n define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');\r\n define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');\r\n define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');\r\n define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');\r\n define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');\r\n define(85 /* US_SLASH */, '/', '/', 'OEM_2');\r\n define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');\r\n define(110 /* ABNT_C1 */, 'ABNT_C1');\r\n define(111 /* ABNT_C2 */, 'ABNT_C2');\r\n define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');\r\n define(88 /* US_BACKSLASH */, '\\\\', '\\\\', 'OEM_5');\r\n define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');\r\n define(90 /* US_QUOTE */, '\\'', '\\'', 'OEM_7');\r\n define(91 /* OEM_8 */, 'OEM_8');\r\n define(92 /* OEM_102 */, 'OEM_102');\r\n define(93 /* NUMPAD_0 */, 'NumPad0');\r\n define(94 /* NUMPAD_1 */, 'NumPad1');\r\n define(95 /* NUMPAD_2 */, 'NumPad2');\r\n define(96 /* NUMPAD_3 */, 'NumPad3');\r\n define(97 /* NUMPAD_4 */, 'NumPad4');\r\n define(98 /* NUMPAD_5 */, 'NumPad5');\r\n define(99 /* NUMPAD_6 */, 'NumPad6');\r\n define(100 /* NUMPAD_7 */, 'NumPad7');\r\n define(101 /* NUMPAD_8 */, 'NumPad8');\r\n define(102 /* NUMPAD_9 */, 'NumPad9');\r\n define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');\r\n define(104 /* NUMPAD_ADD */, 'NumPad_Add');\r\n define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');\r\n define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');\r\n define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');\r\n define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');\r\n})();\r\nexport var KeyCodeUtils;\r\n(function (KeyCodeUtils) {\r\n function toString(keyCode) {\r\n return uiMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toString = toString;\r\n function fromString(key) {\r\n return uiMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromString = fromString;\r\n function toUserSettingsUS(keyCode) {\r\n return userSettingsUSMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\r\n function toUserSettingsGeneral(keyCode) {\r\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\r\n function fromUserSettings(key) {\r\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromUserSettings = fromUserSettings;\r\n})(KeyCodeUtils || (KeyCodeUtils = {}));\r\nexport function KeyChord(firstPart, secondPart) {\r\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\r\n return (firstPart | chordPart) >>> 0;\r\n}\r\nexport function createKeybinding(keybinding, OS) {\r\n if (keybinding === 0) {\r\n return null;\r\n }\r\n const firstPart = (keybinding & 0x0000FFFF) >>> 0;\r\n const chordPart = (keybinding & 0xFFFF0000) >>> 16;\r\n if (chordPart !== 0) {\r\n return new ChordKeybinding([\r\n createSimpleKeybinding(firstPart, OS),\r\n createSimpleKeybinding(chordPart, OS)\r\n ]);\r\n }\r\n return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);\r\n}\r\nexport function createSimpleKeybinding(keybinding, OS) {\r\n const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);\r\n const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);\r\n const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);\r\n const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);\r\n const altKey = (keybinding & 512 /* Alt */ ? true : false);\r\n const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);\r\n const keyCode = (keybinding & 255 /* KeyCode */);\r\n return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);\r\n}\r\nexport class SimpleKeybinding {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyCode = keyCode;\r\n }\r\n equals(other) {\r\n return (this.ctrlKey === other.ctrlKey\r\n && this.shiftKey === other.shiftKey\r\n && this.altKey === other.altKey\r\n && this.metaKey === other.metaKey\r\n && this.keyCode === other.keyCode);\r\n }\r\n isModifierKey() {\r\n return (this.keyCode === 0 /* Unknown */\r\n || this.keyCode === 5 /* Ctrl */\r\n || this.keyCode === 57 /* Meta */\r\n || this.keyCode === 6 /* Alt */\r\n || this.keyCode === 4 /* Shift */);\r\n }\r\n toChord() {\r\n return new ChordKeybinding([this]);\r\n }\r\n /**\r\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\r\n */\r\n isDuplicateModifierCase() {\r\n return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)\r\n || (this.shiftKey && this.keyCode === 4 /* Shift */)\r\n || (this.altKey && this.keyCode === 6 /* Alt */)\r\n || (this.metaKey && this.keyCode === 57 /* Meta */));\r\n }\r\n}\r\nexport class ChordKeybinding {\r\n constructor(parts) {\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this.parts = parts;\r\n }\r\n}\r\nexport class ResolvedKeybindingPart {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyLabel = kbLabel;\r\n this.keyAriaLabel = kbAriaLabel;\r\n }\r\n}\r\n/**\r\n * A resolved keybinding. Can be a simple keybinding or a chord keybinding.\r\n */\r\nexport class ResolvedKeybinding {\r\n}\r\n","import { Iterable } from './iterator.js';\r\n/**\r\n * Enables logging of potentially leaked disposables.\r\n *\r\n * A disposable is considered leaked if it is not disposed or not registered as the child of\r\n * another disposable. This tracking is very simple an only works for classes that either\r\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\r\n */\r\nconst TRACK_DISPOSABLES = false;\r\nconst __is_disposable_tracked__ = '__is_disposable_tracked__';\r\nfunction markTracked(x) {\r\n if (!TRACK_DISPOSABLES) {\r\n return;\r\n }\r\n if (x && x !== Disposable.None) {\r\n try {\r\n x[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n}\r\nfunction trackDisposable(x) {\r\n if (!TRACK_DISPOSABLES) {\r\n return x;\r\n }\r\n const stack = new Error('Potentially leaked disposable').stack;\r\n setTimeout(() => {\r\n if (!x[__is_disposable_tracked__]) {\r\n console.log(stack);\r\n }\r\n }, 3000);\r\n return x;\r\n}\r\nexport class MultiDisposeError extends Error {\r\n constructor(errors) {\r\n super(`Encounter errors while disposing of store. Errors: [${errors.join(', ')}]`);\r\n this.errors = errors;\r\n }\r\n}\r\nexport function isDisposable(thing) {\r\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\r\n}\r\nexport function dispose(arg) {\r\n if (Iterable.is(arg)) {\r\n let errors = [];\r\n for (const d of arg) {\r\n if (d) {\r\n markTracked(d);\r\n try {\r\n d.dispose();\r\n }\r\n catch (e) {\r\n errors.push(e);\r\n }\r\n }\r\n }\r\n if (errors.length === 1) {\r\n throw errors[0];\r\n }\r\n else if (errors.length > 1) {\r\n throw new MultiDisposeError(errors);\r\n }\r\n return Array.isArray(arg) ? [] : arg;\r\n }\r\n else if (arg) {\r\n markTracked(arg);\r\n arg.dispose();\r\n return arg;\r\n }\r\n}\r\nexport function combinedDisposable(...disposables) {\r\n disposables.forEach(markTracked);\r\n return trackDisposable({ dispose: () => dispose(disposables) });\r\n}\r\nexport function toDisposable(fn) {\r\n const self = trackDisposable({\r\n dispose: () => {\r\n markTracked(self);\r\n fn();\r\n }\r\n });\r\n return self;\r\n}\r\nexport class DisposableStore {\r\n constructor() {\r\n this._toDispose = new Set();\r\n this._isDisposed = false;\r\n }\r\n /**\r\n * Dispose of all registered disposables and mark this object as disposed.\r\n *\r\n * Any future disposables added to this object will be disposed of on `add`.\r\n */\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n markTracked(this);\r\n this._isDisposed = true;\r\n this.clear();\r\n }\r\n /**\r\n * Dispose of all registered disposables but do not mark this object as disposed.\r\n */\r\n clear() {\r\n try {\r\n dispose(this._toDispose.values());\r\n }\r\n finally {\r\n this._toDispose.clear();\r\n }\r\n }\r\n add(t) {\r\n if (!t) {\r\n return t;\r\n }\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n markTracked(t);\r\n if (this._isDisposed) {\r\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\r\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\r\n }\r\n }\r\n else {\r\n this._toDispose.add(t);\r\n }\r\n return t;\r\n }\r\n}\r\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\r\nexport class Disposable {\r\n constructor() {\r\n this._store = new DisposableStore();\r\n trackDisposable(this);\r\n }\r\n dispose() {\r\n markTracked(this);\r\n this._store.dispose();\r\n }\r\n _register(t) {\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n return this._store.add(t);\r\n }\r\n}\r\nDisposable.None = Object.freeze({ dispose() { } });\r\n/**\r\n * Manages the lifecycle of a disposable value that may be changed.\r\n *\r\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\r\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\r\n */\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n get value() {\r\n return this._isDisposed ? undefined : this._value;\r\n }\r\n set value(value) {\r\n if (this._isDisposed || value === this._value) {\r\n return;\r\n }\r\n if (this._value) {\r\n this._value.dispose();\r\n }\r\n if (value) {\r\n markTracked(value);\r\n }\r\n this._value = value;\r\n }\r\n clear() {\r\n this.value = undefined;\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n markTracked(this);\r\n if (this._value) {\r\n this._value.dispose();\r\n }\r\n this._value = undefined;\r\n }\r\n}\r\nexport class ImmortalReference {\r\n constructor(object) {\r\n this.object = object;\r\n }\r\n dispose() { }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Node {\r\n constructor(element) {\r\n this.element = element;\r\n this.next = Node.Undefined;\r\n this.prev = Node.Undefined;\r\n }\r\n}\r\nNode.Undefined = new Node(undefined);\r\nexport class LinkedList {\r\n constructor() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n isEmpty() {\r\n return this._first === Node.Undefined;\r\n }\r\n clear() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n unshift(element) {\r\n return this._insert(element, false);\r\n }\r\n push(element) {\r\n return this._insert(element, true);\r\n }\r\n _insert(element, atTheEnd) {\r\n const newNode = new Node(element);\r\n if (this._first === Node.Undefined) {\r\n this._first = newNode;\r\n this._last = newNode;\r\n }\r\n else if (atTheEnd) {\r\n // push\r\n const oldLast = this._last;\r\n this._last = newNode;\r\n newNode.prev = oldLast;\r\n oldLast.next = newNode;\r\n }\r\n else {\r\n // unshift\r\n const oldFirst = this._first;\r\n this._first = newNode;\r\n newNode.next = oldFirst;\r\n oldFirst.prev = newNode;\r\n }\r\n this._size += 1;\r\n let didRemove = false;\r\n return () => {\r\n if (!didRemove) {\r\n didRemove = true;\r\n this._remove(newNode);\r\n }\r\n };\r\n }\r\n shift() {\r\n if (this._first === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._first.element;\r\n this._remove(this._first);\r\n return res;\r\n }\r\n }\r\n pop() {\r\n if (this._last === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._last.element;\r\n this._remove(this._last);\r\n return res;\r\n }\r\n }\r\n _remove(node) {\r\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\r\n // middle\r\n const anchor = node.prev;\r\n anchor.next = node.next;\r\n node.next.prev = anchor;\r\n }\r\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\r\n // only node\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n }\r\n else if (node.next === Node.Undefined) {\r\n // last\r\n this._last = this._last.prev;\r\n this._last.next = Node.Undefined;\r\n }\r\n else if (node.prev === Node.Undefined) {\r\n // first\r\n this._first = this._first.next;\r\n this._first.prev = Node.Undefined;\r\n }\r\n // done\r\n this._size -= 1;\r\n }\r\n *[Symbol.iterator]() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n yield node.element;\r\n node = node.next;\r\n }\r\n }\r\n toArray() {\r\n const result = [];\r\n for (let node = this._first; node !== Node.Undefined; node = node.next) {\r\n result.push(node.element);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\r\n// Copied from: https://github.com/nodejs/node/blob/v12.8.1/lib/path.js\r\n/**\r\n * Copyright Joyent, Inc. and other Node contributors.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a\r\n * copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to permit\r\n * persons to whom the Software is furnished to do so, subject to the\r\n * following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included\r\n * in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\nimport * as process from './process.js';\r\nconst CHAR_UPPERCASE_A = 65; /* A */\r\nconst CHAR_LOWERCASE_A = 97; /* a */\r\nconst CHAR_UPPERCASE_Z = 90; /* Z */\r\nconst CHAR_LOWERCASE_Z = 122; /* z */\r\nconst CHAR_DOT = 46; /* . */\r\nconst CHAR_FORWARD_SLASH = 47; /* / */\r\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\r\nconst CHAR_COLON = 58; /* : */\r\nconst CHAR_QUESTION_MARK = 63; /* ? */\r\nclass ErrorInvalidArgType extends Error {\r\n constructor(name, expected, actual) {\r\n // determiner: 'must be' or 'must not be'\r\n let determiner;\r\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\r\n determiner = 'must not be';\r\n expected = expected.replace(/^not /, '');\r\n }\r\n else {\r\n determiner = 'must be';\r\n }\r\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\r\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\r\n msg += `. Received type ${typeof actual}`;\r\n super(msg);\r\n this.code = 'ERR_INVALID_ARG_TYPE';\r\n }\r\n}\r\nfunction validateString(value, name) {\r\n if (typeof value !== 'string') {\r\n throw new ErrorInvalidArgType(name, 'string', value);\r\n }\r\n}\r\nfunction isPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\r\n}\r\nfunction isPosixPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH;\r\n}\r\nfunction isWindowsDeviceRoot(code) {\r\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\r\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\r\n}\r\n// Resolves . and .. elements in a path with directory names\r\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\r\n let res = '';\r\n let lastSegmentLength = 0;\r\n let lastSlash = -1;\r\n let dots = 0;\r\n let code = 0;\r\n for (let i = 0; i <= path.length; ++i) {\r\n if (i < path.length) {\r\n code = path.charCodeAt(i);\r\n }\r\n else if (isPathSeparator(code)) {\r\n break;\r\n }\r\n else {\r\n code = CHAR_FORWARD_SLASH;\r\n }\r\n if (isPathSeparator(code)) {\r\n if (lastSlash === i - 1 || dots === 1) {\r\n // NOOP\r\n }\r\n else if (dots === 2) {\r\n if (res.length < 2 || lastSegmentLength !== 2 ||\r\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\r\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\r\n if (res.length > 2) {\r\n const lastSlashIndex = res.lastIndexOf(separator);\r\n if (lastSlashIndex === -1) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n }\r\n else {\r\n res = res.slice(0, lastSlashIndex);\r\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n else if (res.length !== 0) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n }\r\n if (allowAboveRoot) {\r\n res += res.length > 0 ? `${separator}..` : '..';\r\n lastSegmentLength = 2;\r\n }\r\n }\r\n else {\r\n if (res.length > 0) {\r\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\r\n }\r\n else {\r\n res = path.slice(lastSlash + 1, i);\r\n }\r\n lastSegmentLength = i - lastSlash - 1;\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n }\r\n else if (code === CHAR_DOT && dots !== -1) {\r\n ++dots;\r\n }\r\n else {\r\n dots = -1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction _format(sep, pathObject) {\r\n if (pathObject === null || typeof pathObject !== 'object') {\r\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\r\n }\r\n const dir = pathObject.dir || pathObject.root;\r\n const base = pathObject.base ||\r\n `${pathObject.name || ''}${pathObject.ext || ''}`;\r\n if (!dir) {\r\n return base;\r\n }\r\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\r\n}\r\nexport const win32 = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedDevice = '';\r\n let resolvedTail = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1; i--) {\r\n let path;\r\n if (i >= 0) {\r\n path = pathSegments[i];\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n }\r\n else if (resolvedDevice.length === 0) {\r\n path = process.cwd();\r\n }\r\n else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive, or the process cwd if\r\n // the drive cwd is not available. We're sure the device is not\r\n // a UNC path at this points, because UNC paths are always absolute.\r\n path = process.env[`=${resolvedDevice}`] || process.cwd();\r\n // Verify that a cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (path === undefined ||\r\n path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\r\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n path = `${resolvedDevice}\\\\`;\r\n }\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let device = '';\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator\r\n rootEnd = 1;\r\n isAbsolute = true;\r\n }\r\n }\r\n else if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an\r\n // absolute path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len || j !== last) {\r\n // We matched a UNC root\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n if (device.length > 0) {\r\n if (resolvedDevice.length > 0) {\r\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n }\r\n else {\r\n resolvedDevice = device;\r\n }\r\n }\r\n if (resolvedAbsolute) {\r\n if (resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n else {\r\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\r\n resolvedAbsolute = isAbsolute;\r\n if (isAbsolute && resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n }\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n // Normalize the tail path\r\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\r\n return resolvedAbsolute ?\r\n `${resolvedDevice}\\\\${resolvedTail}` :\r\n `${resolvedDevice}${resolvedTail}` || '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = 0;\r\n let device;\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n // `path` contains just a single char, exit early to avoid\r\n // unnecessary work\r\n return isPosixPathSeparator(code) ? '\\\\' : path;\r\n }\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an absolute\r\n // path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n // Return the normalized version of the UNC root since there\r\n // is nothing left to process\r\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n let tail = rootEnd < len ?\r\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\r\n '';\r\n if (tail.length === 0 && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\r\n tail += '\\\\';\r\n }\r\n if (device === undefined) {\r\n return isAbsolute ? `\\\\${tail}` : tail;\r\n }\r\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const code = path.charCodeAt(0);\r\n return isPathSeparator(code) ||\r\n // Possible device root\r\n len > 2 &&\r\n isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isPathSeparator(path.charCodeAt(2));\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n let firstPart;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = firstPart = arg;\r\n }\r\n else {\r\n joined += `\\\\${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\r\n let needsReplace = true;\r\n let slashCount = 0;\r\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\r\n ++slashCount;\r\n const firstLen = firstPart.length;\r\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\r\n ++slashCount;\r\n if (firstLen > 2) {\r\n if (isPathSeparator(firstPart.charCodeAt(2))) {\r\n ++slashCount;\r\n }\r\n else {\r\n // We matched a UNC path in the first part\r\n needsReplace = false;\r\n }\r\n }\r\n }\r\n }\r\n if (needsReplace) {\r\n // Find any more consecutive slashes we need to replace\r\n while (slashCount < joined.length &&\r\n isPathSeparator(joined.charCodeAt(slashCount))) {\r\n slashCount++;\r\n }\r\n // Replace the slashes if needed\r\n if (slashCount >= 2) {\r\n joined = `\\\\${joined.slice(slashCount)}`;\r\n }\r\n }\r\n return win32.normalize(joined);\r\n },\r\n // It will solve the relative path from `from` to `to`, for instance:\r\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromOrig = win32.resolve(from);\r\n const toOrig = win32.resolve(to);\r\n if (fromOrig === toOrig) {\r\n return '';\r\n }\r\n from = fromOrig.toLowerCase();\r\n to = toOrig.toLowerCase();\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim any leading backslashes\r\n let fromStart = 0;\r\n while (fromStart < from.length &&\r\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\r\n fromStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let fromEnd = from.length;\r\n while (fromEnd - 1 > fromStart &&\r\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n fromEnd--;\r\n }\r\n const fromLen = fromEnd - fromStart;\r\n // Trim any leading backslashes\r\n let toStart = 0;\r\n while (toStart < to.length &&\r\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n toStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let toEnd = to.length;\r\n while (toEnd - 1 > toStart &&\r\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n toEnd--;\r\n }\r\n const toLen = toEnd - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = fromLen < toLen ? fromLen : toLen;\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_BACKWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n // We found a mismatch before the first common path separator was seen, so\r\n // return the original `to`.\r\n if (i !== length) {\r\n if (lastCommonSep === -1) {\r\n return toOrig;\r\n }\r\n }\r\n else {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\r\n return toOrig.slice(toStart + i + 1);\r\n }\r\n if (i === 2) {\r\n // We get here if `from` is the device root.\r\n // For example: from='C:\\\\'; to='C:\\\\foo'\r\n return toOrig.slice(toStart + i);\r\n }\r\n }\r\n if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 2) {\r\n // We get here if `to` is the device root.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\r\n lastCommonSep = 3;\r\n }\r\n }\r\n if (lastCommonSep === -1) {\r\n lastCommonSep = 0;\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to` and\r\n // `from`\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '\\\\..';\r\n }\r\n }\r\n toStart += lastCommonSep;\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts\r\n if (out.length > 0) {\r\n return `${out}${toOrig.slice(toStart, toEnd)}`;\r\n }\r\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n ++toStart;\r\n }\r\n return toOrig.slice(toStart, toEnd);\r\n },\r\n toNamespacedPath(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (typeof path !== 'string') {\r\n return path;\r\n }\r\n if (path.length === 0) {\r\n return '';\r\n }\r\n const resolvedPath = win32.resolve(path);\r\n if (resolvedPath.length <= 2) {\r\n return path;\r\n }\r\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\r\n // Possible UNC root\r\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\r\n const code = resolvedPath.charCodeAt(2);\r\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\r\n // Matched non-long UNC root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\r\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\r\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n // Matched device root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\${resolvedPath}`;\r\n }\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = -1;\r\n let offset = 0;\r\n const code = path.charCodeAt(0);\r\n if (len === 1) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work or a dot.\r\n return isPathSeparator(code) ? path : '.';\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = offset = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n return path;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n // Offset by 1 to include the separator after the UNC root to\r\n // treat it as a \"normal root\" on top of a (UNC) root\r\n rootEnd = offset = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n // Possible device root\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\r\n offset = rootEnd;\r\n }\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = len - 1; i >= offset; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n if (rootEnd === -1) {\r\n return '.';\r\n }\r\n end = rootEnd;\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n start = 2;\r\n }\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= start; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let start = 0;\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isWindowsDeviceRoot(path.charCodeAt(0))) {\r\n start = startPart = 2;\r\n }\r\n for (let i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '\\\\'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let code = path.charCodeAt(0);\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n ret.base = ret.name = path;\r\n return ret;\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n rootEnd = j;\r\n }\r\n else if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n rootEnd = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n if (len <= 2) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 2;\r\n if (isPathSeparator(path.charCodeAt(2))) {\r\n if (len === 3) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 3;\r\n }\r\n }\r\n if (rootEnd > 0) {\r\n ret.root = path.slice(0, rootEnd);\r\n }\r\n let startDot = -1;\r\n let startPart = rootEnd;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= rootEnd; --i) {\r\n code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(startPart, end);\r\n }\r\n else {\r\n ret.name = path.slice(startPart, startDot);\r\n ret.base = path.slice(startPart, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n // If the directory is the root, use the entire root as the `dir` including\r\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\r\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\r\n if (startPart > 0 && startPart !== rootEnd) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else {\r\n ret.dir = ret.root;\r\n }\r\n return ret;\r\n },\r\n sep: '\\\\',\r\n delimiter: ';',\r\n win32: null,\r\n posix: null\r\n};\r\nexport const posix = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedPath = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n const path = i >= 0 ? pathSegments[i] : process.cwd();\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n resolvedPath = `${path}/${resolvedPath}`;\r\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n }\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n // Normalize the path\r\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\r\n if (resolvedAbsolute) {\r\n return `/${resolvedPath}`;\r\n }\r\n return resolvedPath.length > 0 ? resolvedPath : '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\r\n // Normalize the path\r\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\r\n if (path.length === 0) {\r\n if (isAbsolute) {\r\n return '/';\r\n }\r\n return trailingSeparator ? './' : '.';\r\n }\r\n if (trailingSeparator) {\r\n path += '/';\r\n }\r\n return isAbsolute ? `/${path}` : path;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = arg;\r\n }\r\n else {\r\n joined += `/${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n return posix.normalize(joined);\r\n },\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim leading forward slashes.\r\n from = posix.resolve(from);\r\n to = posix.resolve(to);\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromStart = 1;\r\n const fromEnd = from.length;\r\n const fromLen = fromEnd - fromStart;\r\n const toStart = 1;\r\n const toLen = to.length - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = (fromLen < toLen ? fromLen : toLen);\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_FORWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n if (i === length) {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='/foo/bar'; to='/foo/bar/baz'\r\n return to.slice(toStart + i + 1);\r\n }\r\n if (i === 0) {\r\n // We get here if `from` is the root\r\n // For example: from='/'; to='/foo'\r\n return to.slice(toStart + i);\r\n }\r\n }\r\n else if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='/foo/bar/baz'; to='/foo/bar'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 0) {\r\n // We get here if `to` is the root.\r\n // For example: from='/foo/bar'; to='/'\r\n lastCommonSep = 0;\r\n }\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to`\r\n // and `from`.\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '/..';\r\n }\r\n }\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts.\r\n return `${out}${to.slice(toStart + lastCommonSep)}`;\r\n },\r\n toNamespacedPath(path) {\r\n // Non-op on posix systems\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = path.length - 1; i >= 1; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n return hasRoot ? '/' : '.';\r\n }\r\n if (hasRoot && end === 1) {\r\n return '//';\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= 0; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n for (let i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '/'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let start;\r\n if (isAbsolute) {\r\n ret.root = '/';\r\n start = 1;\r\n }\r\n else {\r\n start = 0;\r\n }\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(start, end);\r\n }\r\n else {\r\n ret.name = path.slice(start, startDot);\r\n ret.base = path.slice(start, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n if (startPart > 0) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else if (isAbsolute) {\r\n ret.dir = '/';\r\n }\r\n return ret;\r\n },\r\n sep: '/',\r\n delimiter: ':',\r\n win32: null,\r\n posix: null\r\n};\r\nposix.win32 = win32.win32 = win32;\r\nposix.posix = win32.posix = posix;\r\nexport const normalize = (process.platform === 'win32' ? win32.normalize : posix.normalize);\r\nexport const resolve = (process.platform === 'win32' ? win32.resolve : posix.resolve);\r\nexport const relative = (process.platform === 'win32' ? win32.relative : posix.relative);\r\nexport const dirname = (process.platform === 'win32' ? win32.dirname : posix.dirname);\r\nexport const basename = (process.platform === 'win32' ? win32.basename : posix.basename);\r\nexport const extname = (process.platform === 'win32' ? win32.extname : posix.extname);\r\nexport const sep = (process.platform === 'win32' ? win32.sep : posix.sep);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst LANGUAGE_DEFAULT = 'en';\r\nlet _isWindows = false;\r\nlet _isMacintosh = false;\r\nlet _isLinux = false;\r\nlet _isNative = false;\r\nlet _isWeb = false;\r\nlet _isIOS = false;\r\nlet _locale = undefined;\r\nlet _language = LANGUAGE_DEFAULT;\r\nlet _translationsConfigFile = undefined;\r\nlet _userAgent = undefined;\r\nconst isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer');\r\n// OS detection\r\nif (typeof navigator === 'object' && !isElectronRenderer) {\r\n _userAgent = navigator.userAgent;\r\n _isWindows = _userAgent.indexOf('Windows') >= 0;\r\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\r\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\r\n _isLinux = _userAgent.indexOf('Linux') >= 0;\r\n _isWeb = true;\r\n _locale = navigator.language;\r\n _language = _locale;\r\n}\r\nelse if (typeof process === 'object') {\r\n _isWindows = (process.platform === 'win32');\r\n _isMacintosh = (process.platform === 'darwin');\r\n _isLinux = (process.platform === 'linux');\r\n _locale = LANGUAGE_DEFAULT;\r\n _language = LANGUAGE_DEFAULT;\r\n const rawNlsConfig = process.env['VSCODE_NLS_CONFIG'];\r\n if (rawNlsConfig) {\r\n try {\r\n const nlsConfig = JSON.parse(rawNlsConfig);\r\n const resolved = nlsConfig.availableLanguages['*'];\r\n _locale = nlsConfig.locale;\r\n // VSCode's default language is 'en'\r\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\r\n _translationsConfigFile = nlsConfig._translationsConfigFile;\r\n }\r\n catch (e) {\r\n }\r\n }\r\n _isNative = true;\r\n}\r\nlet _platform = 0 /* Web */;\r\nif (_isMacintosh) {\r\n _platform = 1 /* Mac */;\r\n}\r\nelse if (_isWindows) {\r\n _platform = 3 /* Windows */;\r\n}\r\nelse if (_isLinux) {\r\n _platform = 2 /* Linux */;\r\n}\r\nexport const isWindows = _isWindows;\r\nexport const isMacintosh = _isMacintosh;\r\nexport const isLinux = _isLinux;\r\nexport const isNative = _isNative;\r\nexport const isWeb = _isWeb;\r\nexport const isIOS = _isIOS;\r\nconst _globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});\r\nexport const globals = _globals;\r\nexport const setImmediate = (function defineSetImmediate() {\r\n if (globals.setImmediate) {\r\n return globals.setImmediate.bind(globals);\r\n }\r\n if (typeof globals.postMessage === 'function' && !globals.importScripts) {\r\n let pending = [];\r\n globals.addEventListener('message', (e) => {\r\n if (e.data && e.data.vscodeSetImmediateId) {\r\n for (let i = 0, len = pending.length; i < len; i++) {\r\n const candidate = pending[i];\r\n if (candidate.id === e.data.vscodeSetImmediateId) {\r\n pending.splice(i, 1);\r\n candidate.callback();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n let lastId = 0;\r\n return (callback) => {\r\n const myId = ++lastId;\r\n pending.push({\r\n id: myId,\r\n callback: callback\r\n });\r\n globals.postMessage({ vscodeSetImmediateId: myId }, '*');\r\n };\r\n }\r\n if (typeof process !== 'undefined' && typeof process.nextTick === 'function') {\r\n return process.nextTick.bind(process);\r\n }\r\n const _promise = Promise.resolve();\r\n return (callback) => _promise.then(callback);\r\n})();\r\nexport const OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\r\nlet _isLittleEndian = true;\r\nlet _isLittleEndianComputed = false;\r\nexport function isLittleEndian() {\r\n if (!_isLittleEndianComputed) {\r\n _isLittleEndianComputed = true;\r\n const test = new Uint8Array(2);\r\n test[0] = 1;\r\n test[1] = 2;\r\n const view = new Uint16Array(test.buffer);\r\n _isLittleEndian = (view[0] === (2 << 8) + 1);\r\n }\r\n return _isLittleEndian;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows, isMacintosh, setImmediate } from './platform.js';\r\nconst safeProcess = (typeof process === 'undefined') ? {\r\n cwd() { return '/'; },\r\n env: Object.create(null),\r\n get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; },\r\n nextTick(callback) { return setImmediate(callback); }\r\n} : process;\r\nexport const cwd = safeProcess.cwd;\r\nexport const env = safeProcess.env;\r\nexport const platform = safeProcess.platform;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFalsyOrWhitespace(str) {\r\n if (!str || typeof str !== 'string') {\r\n return true;\r\n }\r\n return str.trim().length === 0;\r\n}\r\n/**\r\n * @deprecated ES6: use `String.padStart`\r\n */\r\nexport function pad(n, l, char = '0') {\r\n const str = '' + n;\r\n const r = [str];\r\n for (let i = str.length; i < l; i++) {\r\n r.push(char);\r\n }\r\n return r.reverse().join('');\r\n}\r\nconst _formatRegexp = /{(\\d+)}/g;\r\n/**\r\n * Helper to produce a string with a variable number of arguments. Insert variable segments\r\n * into the string using the {n} notation where N is the index of the argument following the string.\r\n * @param value string to which formatting is applied\r\n * @param args replacements for {n}-entries\r\n */\r\nexport function format(value, ...args) {\r\n if (args.length === 0) {\r\n return value;\r\n }\r\n return value.replace(_formatRegexp, function (match, group) {\r\n const idx = parseInt(group, 10);\r\n return isNaN(idx) || idx < 0 || idx >= args.length ?\r\n match :\r\n args[idx];\r\n });\r\n}\r\n/**\r\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\r\n * being used e.g. in HTMLElement.innerHTML.\r\n */\r\nexport function escape(html) {\r\n return html.replace(/[<>&]/g, function (match) {\r\n switch (match) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n default: return match;\r\n }\r\n });\r\n}\r\n/**\r\n * Escapes regular expression characters in a given string\r\n */\r\nexport function escapeRegExpCharacters(value) {\r\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning and end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim (default is a blank)\r\n */\r\nexport function trim(haystack, needle = ' ') {\r\n const trimmed = ltrim(haystack, needle);\r\n return rtrim(trimmed, needle);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function ltrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length;\r\n if (needleLen === 0 || haystack.length === 0) {\r\n return haystack;\r\n }\r\n let offset = 0;\r\n while (haystack.indexOf(needle, offset) === offset) {\r\n offset = offset + needleLen;\r\n }\r\n return haystack.substring(offset);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function rtrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length, haystackLen = haystack.length;\r\n if (needleLen === 0 || haystackLen === 0) {\r\n return haystack;\r\n }\r\n let offset = haystackLen, idx = -1;\r\n while (true) {\r\n idx = haystack.lastIndexOf(needle, offset - 1);\r\n if (idx === -1 || idx + needleLen !== offset) {\r\n break;\r\n }\r\n if (idx === 0) {\r\n return '';\r\n }\r\n offset = idx;\r\n }\r\n return haystack.substring(0, offset);\r\n}\r\nexport function convertSimple2RegExpPattern(pattern) {\r\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\r\n}\r\nexport function stripWildcards(pattern) {\r\n return pattern.replace(/\\*/g, '');\r\n}\r\n/**\r\n * @deprecated ES6: use `String.startsWith`\r\n */\r\nexport function startsWith(haystack, needle) {\r\n if (haystack.length < needle.length) {\r\n return false;\r\n }\r\n if (haystack === needle) {\r\n return true;\r\n }\r\n for (let i = 0; i < needle.length; i++) {\r\n if (haystack[i] !== needle[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * @deprecated ES6: use `String.endsWith`\r\n */\r\nexport function endsWith(haystack, needle) {\r\n const diff = haystack.length - needle.length;\r\n if (diff > 0) {\r\n return haystack.indexOf(needle, diff) === diff;\r\n }\r\n else if (diff === 0) {\r\n return haystack === needle;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nexport function createRegExp(searchString, isRegex, options = {}) {\r\n if (!searchString) {\r\n throw new Error('Cannot create regex from empty string');\r\n }\r\n if (!isRegex) {\r\n searchString = escapeRegExpCharacters(searchString);\r\n }\r\n if (options.wholeWord) {\r\n if (!/\\B/.test(searchString.charAt(0))) {\r\n searchString = '\\\\b' + searchString;\r\n }\r\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\r\n searchString = searchString + '\\\\b';\r\n }\r\n }\r\n let modifiers = '';\r\n if (options.global) {\r\n modifiers += 'g';\r\n }\r\n if (!options.matchCase) {\r\n modifiers += 'i';\r\n }\r\n if (options.multiline) {\r\n modifiers += 'm';\r\n }\r\n if (options.unicode) {\r\n modifiers += 'u';\r\n }\r\n return new RegExp(searchString, modifiers);\r\n}\r\nexport function regExpLeadsToEndlessLoop(regexp) {\r\n // Exit early if it's one of these special cases which are meant to match\r\n // against an empty string\r\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\r\n return false;\r\n }\r\n // We check against an empty string. If the regular expression doesn't advance\r\n // (e.g. ends in an endless loop) it will match an empty string.\r\n const match = regexp.exec('');\r\n return !!(match && regexp.lastIndex === 0);\r\n}\r\nexport function regExpFlags(regexp) {\r\n return (regexp.global ? 'g' : '')\r\n + (regexp.ignoreCase ? 'i' : '')\r\n + (regexp.multiline ? 'm' : '')\r\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\r\n}\r\n/**\r\n * Returns first index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function firstNonWhitespaceIndex(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Returns the leading whitespace of the string.\r\n * If the string contains only whitespaces, returns entire string\r\n */\r\nexport function getLeadingWhitespace(str, start = 0, end = str.length) {\r\n for (let i = start; i < end; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return str.substring(start, i);\r\n }\r\n }\r\n return str.substring(start, end);\r\n}\r\n/**\r\n * Returns last index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\r\n for (let i = startIndex; i >= 0; i--) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function compare(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nexport function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA < codeB) {\r\n return -1;\r\n }\r\n else if (codeA > codeB) {\r\n return 1;\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function compareIgnoreCase(a, b) {\r\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\r\n}\r\nexport function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA === codeB) {\r\n // equal\r\n continue;\r\n }\r\n const diff = codeA - codeB;\r\n if (diff === 32 && isUpperAsciiLetter(codeB)) { //codeB =[65-90] && codeA =[97-122]\r\n continue;\r\n }\r\n else if (diff === -32 && isUpperAsciiLetter(codeA)) { //codeB =[97-122] && codeA =[65-90]\r\n continue;\r\n }\r\n if (isLowerAsciiLetter(codeA) && isLowerAsciiLetter(codeB)) {\r\n //\r\n return diff;\r\n }\r\n else {\r\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function isLowerAsciiLetter(code) {\r\n return code >= 97 /* a */ && code <= 122 /* z */;\r\n}\r\nexport function isUpperAsciiLetter(code) {\r\n return code >= 65 /* A */ && code <= 90 /* Z */;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\r\n}\r\nexport function equalsIgnoreCase(a, b) {\r\n return a.length === b.length && doEqualsIgnoreCase(a, b);\r\n}\r\nfunction doEqualsIgnoreCase(a, b, stopAt = a.length) {\r\n for (let i = 0; i < stopAt; i++) {\r\n const codeA = a.charCodeAt(i);\r\n const codeB = b.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n // a-z A-Z\r\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\r\n const diff = Math.abs(codeA - codeB);\r\n if (diff !== 0 && diff !== 32) {\r\n return false;\r\n }\r\n }\r\n // Any other charcode\r\n else {\r\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function startsWithIgnoreCase(str, candidate) {\r\n const candidateLength = candidate.length;\r\n if (candidate.length > str.length) {\r\n return false;\r\n }\r\n return doEqualsIgnoreCase(str, candidate, candidateLength);\r\n}\r\n/**\r\n * @returns the length of the common prefix of the two strings.\r\n */\r\nexport function commonPrefixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * @returns the length of the common suffix of the two strings.\r\n */\r\nexport function commonSuffixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n const aLastIndex = a.length - 1;\r\n const bLastIndex = b.length - 1;\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isHighSurrogate(charCode) {\r\n return (0xD800 <= charCode && charCode <= 0xDBFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isLowSurrogate(charCode) {\r\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function computeCodePoint(highSurrogate, lowSurrogate) {\r\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\r\n}\r\n/**\r\n * get the code point that begins at offset `offset`\r\n */\r\nexport function getNextCodePoint(str, len, offset) {\r\n const charCode = str.charCodeAt(offset);\r\n if (isHighSurrogate(charCode) && offset + 1 < len) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (isLowSurrogate(nextCharCode)) {\r\n return computeCodePoint(charCode, nextCharCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\n/**\r\n * get the code point that ends right before offset `offset`\r\n */\r\nfunction getPrevCodePoint(str, offset) {\r\n const charCode = str.charCodeAt(offset - 1);\r\n if (isLowSurrogate(charCode) && offset > 1) {\r\n const prevCharCode = str.charCodeAt(offset - 2);\r\n if (isHighSurrogate(prevCharCode)) {\r\n return computeCodePoint(prevCharCode, charCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\nexport function nextCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const len = str.length;\r\n const initialCodePoint = getNextCodePoint(str, len, offset);\r\n offset += (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset < len) {\r\n const nextCodePoint = getNextCodePoint(str, len, offset);\r\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(nextCodePoint);\r\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n offset += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n return (offset - initialOffset);\r\n}\r\nexport function prevCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const initialCodePoint = getPrevCodePoint(str, offset);\r\n offset -= (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset > 0) {\r\n const prevCodePoint = getPrevCodePoint(str, offset);\r\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(prevCodePoint);\r\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\r\n break;\r\n }\r\n offset -= (prevCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = prevGraphemeBreakType;\r\n }\r\n return (initialOffset - offset);\r\n}\r\n/**\r\n * A manual decoding of a UTF8 string.\r\n * Use only in environments which do not offer native conversion methods!\r\n */\r\nexport function decodeUTF8(buffer) {\r\n // https://en.wikipedia.org/wiki/UTF-8\r\n const len = buffer.byteLength;\r\n const result = [];\r\n let offset = 0;\r\n while (offset < len) {\r\n const v0 = buffer[offset];\r\n let codePoint;\r\n if (v0 >= 0b11110000 && offset + 3 < len) {\r\n // 4 bytes\r\n codePoint = ((((buffer[offset++] & 0b00000111) << 18) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11100000 && offset + 2 < len) {\r\n // 3 bytes\r\n codePoint = ((((buffer[offset++] & 0b00001111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11000000 && offset + 1 < len) {\r\n // 2 bytes\r\n codePoint = ((((buffer[offset++] & 0b00011111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else {\r\n // 1 byte\r\n codePoint = buffer[offset++];\r\n }\r\n if ((codePoint >= 0 && codePoint <= 0xD7FF) || (codePoint >= 0xE000 && codePoint <= 0xFFFF)) {\r\n // Basic Multilingual Plane\r\n result.push(String.fromCharCode(codePoint));\r\n }\r\n else if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\r\n // Supplementary Planes\r\n const uPrime = codePoint - 0x10000;\r\n const w1 = 0xD800 + ((uPrime & 0b11111111110000000000) >>> 10);\r\n const w2 = 0xDC00 + ((uPrime & 0b00000000001111111111) >>> 0);\r\n result.push(String.fromCharCode(w1));\r\n result.push(String.fromCharCode(w2));\r\n }\r\n else {\r\n // illegal code point\r\n result.push(String.fromCharCode(0xFFFD));\r\n }\r\n }\r\n return result.join('');\r\n}\r\n/**\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-rtl-test.js\r\n */\r\nconst CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\r\n/**\r\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\r\n */\r\nexport function containsRTL(str) {\r\n return CONTAINS_RTL.test(str);\r\n}\r\n/**\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nconst CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD00-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE82\\uDE90-\\uDE95])/;\r\nexport function containsEmoji(str) {\r\n return CONTAINS_EMOJI.test(str);\r\n}\r\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\r\n/**\r\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\r\n */\r\nexport function isBasicASCII(str) {\r\n return IS_BASIC_ASCII.test(str);\r\n}\r\nexport const UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\r\n/**\r\n * Returns true if `str` contains unusual line terminators, like LS or PS\r\n */\r\nexport function containsUnusualLineTerminators(str) {\r\n return UNUSUAL_LINE_TERMINATORS.test(str);\r\n}\r\nexport function containsFullWidthCharacter(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n if (isFullWidthCharacter(str.charCodeAt(i))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isFullWidthCharacter(charCode) {\r\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\r\n // http://jrgraphix.net/research/unicode_blocks.php\r\n // 2E80 — 2EFF CJK Radicals Supplement\r\n // 2F00 — 2FDF Kangxi Radicals\r\n // 2FF0 — 2FFF Ideographic Description Characters\r\n // 3000 — 303F CJK Symbols and Punctuation\r\n // 3040 — 309F Hiragana\r\n // 30A0 — 30FF Katakana\r\n // 3100 — 312F Bopomofo\r\n // 3130 — 318F Hangul Compatibility Jamo\r\n // 3190 — 319F Kanbun\r\n // 31A0 — 31BF Bopomofo Extended\r\n // 31F0 — 31FF Katakana Phonetic Extensions\r\n // 3200 — 32FF Enclosed CJK Letters and Months\r\n // 3300 — 33FF CJK Compatibility\r\n // 3400 — 4DBF CJK Unified Ideographs Extension A\r\n // 4DC0 — 4DFF Yijing Hexagram Symbols\r\n // 4E00 — 9FFF CJK Unified Ideographs\r\n // A000 — A48F Yi Syllables\r\n // A490 — A4CF Yi Radicals\r\n // AC00 — D7AF Hangul Syllables\r\n // [IGNORE] D800 — DB7F High Surrogates\r\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\r\n // [IGNORE] DC00 — DFFF Low Surrogates\r\n // [IGNORE] E000 — F8FF Private Use Area\r\n // F900 — FAFF CJK Compatibility Ideographs\r\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\r\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\r\n // [IGNORE] FE00 — FE0F Variation Selectors\r\n // [IGNORE] FE20 — FE2F Combining Half Marks\r\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\r\n // [IGNORE] FE50 — FE6F Small Form Variants\r\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\r\n // FF00 — FFEF Halfwidth and Fullwidth Forms\r\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\r\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\r\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\r\n // [IGNORE] FFF0 — FFFF Specials\r\n charCode = +charCode; // @perf\r\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\r\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\r\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\r\n}\r\n/**\r\n * A fast function (therefore imprecise) to check if code points are emojis.\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nexport function isEmojiImprecise(x) {\r\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x >= 9728 && x <= 10175) || (x >= 127744 && x <= 128591)\r\n || (x >= 128640 && x <= 128764) || (x >= 128992 && x <= 129003) || (x >= 129280 && x <= 129535)\r\n || (x >= 129648 && x <= 129651) || (x >= 129656 && x <= 129666) || (x >= 129680 && x <= 129685));\r\n}\r\n// -- UTF-8 BOM\r\nexport const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\r\nexport function startsWithUTF8BOM(str) {\r\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\r\n}\r\nexport function containsUppercaseCharacter(target, ignoreEscapedChars = false) {\r\n if (!target) {\r\n return false;\r\n }\r\n if (ignoreEscapedChars) {\r\n target = target.replace(/\\\\./g, '');\r\n }\r\n return target.toLowerCase() !== target;\r\n}\r\n/**\r\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\r\n */\r\nexport function singleLetterHash(n) {\r\n const LETTERS_CNT = (90 /* Z */ - 65 /* A */ + 1);\r\n n = n % (2 * LETTERS_CNT);\r\n if (n < LETTERS_CNT) {\r\n return String.fromCharCode(97 /* a */ + n);\r\n }\r\n return String.fromCharCode(65 /* A */ + n - LETTERS_CNT);\r\n}\r\n//#region Unicode Grapheme Break\r\nexport function getGraphemeBreakType(codePoint) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n return graphemeBreakTree.getGraphemeBreakType(codePoint);\r\n}\r\nexport function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\r\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\r\n // !!! Let's make the common case a bit faster\r\n if (breakTypeA === 0 /* Other */) {\r\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\r\n return (breakTypeB !== 5 /* Extend */ && breakTypeB !== 7 /* SpacingMark */);\r\n }\r\n // Do not break between a CR and LF. Otherwise, break before and after controls.\r\n // GB3 CR × LF\r\n // GB4 (Control | CR | LF) ÷\r\n // GB5 ÷ (Control | CR | LF)\r\n if (breakTypeA === 2 /* CR */) {\r\n if (breakTypeB === 3 /* LF */) {\r\n return false; // GB3\r\n }\r\n }\r\n if (breakTypeA === 4 /* Control */ || breakTypeA === 2 /* CR */ || breakTypeA === 3 /* LF */) {\r\n return true; // GB4\r\n }\r\n if (breakTypeB === 4 /* Control */ || breakTypeB === 2 /* CR */ || breakTypeB === 3 /* LF */) {\r\n return true; // GB5\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6 L × (L | V | LV | LVT)\r\n // GB7 (LV | V) × (V | T)\r\n // GB8 (LVT | T) × T\r\n if (breakTypeA === 8 /* L */) {\r\n if (breakTypeB === 8 /* L */ || breakTypeB === 9 /* V */ || breakTypeB === 11 /* LV */ || breakTypeB === 12 /* LVT */) {\r\n return false; // GB6\r\n }\r\n }\r\n if (breakTypeA === 11 /* LV */ || breakTypeA === 9 /* V */) {\r\n if (breakTypeB === 9 /* V */ || breakTypeB === 10 /* T */) {\r\n return false; // GB7\r\n }\r\n }\r\n if (breakTypeA === 12 /* LVT */ || breakTypeA === 10 /* T */) {\r\n if (breakTypeB === 10 /* T */) {\r\n return false; // GB8\r\n }\r\n }\r\n // Do not break before extending characters or ZWJ.\r\n // GB9 × (Extend | ZWJ)\r\n if (breakTypeB === 5 /* Extend */ || breakTypeB === 13 /* ZWJ */) {\r\n return false; // GB9\r\n }\r\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a × SpacingMark\r\n // GB9b Prepend ×\r\n if (breakTypeB === 7 /* SpacingMark */) {\r\n return false; // GB9a\r\n }\r\n if (breakTypeA === 1 /* Prepend */) {\r\n return false; // GB9b\r\n }\r\n // Do not break within emoji modifier sequences or emoji zwj sequences.\r\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\r\n if (breakTypeA === 13 /* ZWJ */ && breakTypeB === 14 /* Extended_Pictographic */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB11\r\n }\r\n // GB12 sot (RI RI)* RI × RI\r\n // GB13 [^RI] (RI RI)* RI × RI\r\n if (breakTypeA === 6 /* Regional_Indicator */ && breakTypeB === 6 /* Regional_Indicator */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB12 & GB13\r\n }\r\n // GB999 Any ÷ Any\r\n return true;\r\n}\r\nclass GraphemeBreakTree {\r\n constructor() {\r\n this._data = getGraphemeBreakRawData();\r\n }\r\n static getInstance() {\r\n if (!GraphemeBreakTree._INSTANCE) {\r\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\r\n }\r\n return GraphemeBreakTree._INSTANCE;\r\n }\r\n getGraphemeBreakType(codePoint) {\r\n // !!! Let's make 7bit ASCII a bit faster: 0..31\r\n if (codePoint < 32) {\r\n if (codePoint === 10 /* LineFeed */) {\r\n return 3 /* LF */;\r\n }\r\n if (codePoint === 13 /* CarriageReturn */) {\r\n return 2 /* CR */;\r\n }\r\n return 4 /* Control */;\r\n }\r\n // !!! Let's make 7bit ASCII a bit faster: 32..126\r\n if (codePoint < 127) {\r\n return 0 /* Other */;\r\n }\r\n const data = this._data;\r\n const nodeCount = data.length / 3;\r\n let nodeIndex = 1;\r\n while (nodeIndex <= nodeCount) {\r\n if (codePoint < data[3 * nodeIndex]) {\r\n // go left\r\n nodeIndex = 2 * nodeIndex;\r\n }\r\n else if (codePoint > data[3 * nodeIndex + 1]) {\r\n // go right\r\n nodeIndex = 2 * nodeIndex + 1;\r\n }\r\n else {\r\n // hit\r\n return data[3 * nodeIndex + 2];\r\n }\r\n }\r\n return 0 /* Other */;\r\n }\r\n}\r\nGraphemeBreakTree._INSTANCE = null;\r\nfunction getGraphemeBreakRawData() {\r\n // generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-grapheme-break.js\r\n return JSON.parse('[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]');\r\n}\r\n//#endregion\r\n","/**\r\n * @returns whether the provided parameter is a JavaScript Array or not.\r\n */\r\nexport function isArray(array) {\r\n return Array.isArray(array);\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript String or not.\r\n */\r\nexport function isString(str) {\r\n return (typeof str === 'string');\r\n}\r\n/**\r\n *\r\n * @returns whether the provided parameter is of type `object` but **not**\r\n *\t`null`, an `array`, a `regexp`, nor a `date`.\r\n */\r\nexport function isObject(obj) {\r\n // The method can't do a type cast since there are type (like strings) which\r\n // are subclasses of any put not positvely matched by the function. Hence type\r\n // narrowing results in wrong results.\r\n return typeof obj === 'object'\r\n && obj !== null\r\n && !Array.isArray(obj)\r\n && !(obj instanceof RegExp)\r\n && !(obj instanceof Date);\r\n}\r\n/**\r\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\r\n * @returns whether the provided parameter is a JavaScript Number or not.\r\n */\r\nexport function isNumber(obj) {\r\n return (typeof obj === 'number' && !isNaN(obj));\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Boolean or not.\r\n */\r\nexport function isBoolean(obj) {\r\n return (obj === true || obj === false);\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined.\r\n */\r\nexport function isUndefined(obj) {\r\n return (typeof obj === 'undefined');\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined or null.\r\n */\r\nexport function isUndefinedOrNull(obj) {\r\n return (isUndefined(obj) || obj === null);\r\n}\r\nexport function assertType(condition, type) {\r\n if (!condition) {\r\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\r\n }\r\n}\r\n/**\r\n * Asserts that the argument passed in is neither undefined nor null.\r\n */\r\nexport function assertIsDefined(arg) {\r\n if (isUndefinedOrNull(arg)) {\r\n throw new Error('Assertion Failed: argument is undefined or null');\r\n }\r\n return arg;\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Function or not.\r\n */\r\nexport function isFunction(obj) {\r\n return (typeof obj === 'function');\r\n}\r\nexport function validateConstraints(args, constraints) {\r\n const len = Math.min(args.length, constraints.length);\r\n for (let i = 0; i < len; i++) {\r\n validateConstraint(args[i], constraints[i]);\r\n }\r\n}\r\nexport function validateConstraint(arg, constraint) {\r\n if (isString(constraint)) {\r\n if (typeof arg !== constraint) {\r\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\r\n }\r\n }\r\n else if (isFunction(constraint)) {\r\n try {\r\n if (arg instanceof constraint) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // ignore\r\n }\r\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\r\n return;\r\n }\r\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\r\n return;\r\n }\r\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\r\n }\r\n}\r\nexport function getAllPropertyNames(obj) {\r\n let res = [];\r\n let proto = Object.getPrototypeOf(obj);\r\n while (Object.prototype !== proto) {\r\n res = res.concat(Object.getOwnPropertyNames(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return res;\r\n}\r\nexport function getAllMethodNames(obj) {\r\n const methods = [];\r\n for (const prop of getAllPropertyNames(obj)) {\r\n if (typeof obj[prop] === 'function') {\r\n methods.push(prop);\r\n }\r\n }\r\n return methods;\r\n}\r\nexport function createProxyObject(methodNames, invoke) {\r\n const createProxyMethod = (method) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return invoke(method, args);\r\n };\r\n };\r\n let result = {};\r\n for (const methodName of methodNames) {\r\n result[methodName] = createProxyMethod(methodName);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Converts null to undefined, passes all other values through.\r\n */\r\nexport function withNullAsUndefined(x) {\r\n return x === null ? undefined : x;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function toUint8(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 255 /* MAX_UINT_8 */) {\r\n return 255 /* MAX_UINT_8 */;\r\n }\r\n return v | 0;\r\n}\r\nexport function toUint32(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 4294967295 /* MAX_UINT_32 */) {\r\n return 4294967295 /* MAX_UINT_32 */;\r\n }\r\n return v | 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport * as paths from './path.js';\r\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\r\nconst _singleSlashStart = /^\\//;\r\nconst _doubleSlashStart = /^\\/\\//;\r\nfunction _validateUri(ret, _strict) {\r\n // scheme, must be set\r\n if (!ret.scheme && _strict) {\r\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\r\n }\r\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\r\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\r\n throw new Error('[UriError]: Scheme contains illegal characters.');\r\n }\r\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\r\n // If a URI contains an authority component, then the path component\r\n // must either be empty or begin with a slash (\"/\") character. If a URI\r\n // does not contain an authority component, then the path cannot begin\r\n // with two slash characters (\"//\").\r\n if (ret.path) {\r\n if (ret.authority) {\r\n if (!_singleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\r\n }\r\n }\r\n else {\r\n if (_doubleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\r\n }\r\n }\r\n }\r\n}\r\n// for a while we allowed uris *without* schemes and this is the migration\r\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\r\n// back to the file-scheme. that should cause the least carnage and still be a\r\n// clear warning\r\nfunction _schemeFix(scheme, _strict) {\r\n if (!scheme && !_strict) {\r\n return 'file';\r\n }\r\n return scheme;\r\n}\r\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\r\nfunction _referenceResolution(scheme, path) {\r\n // the slash-character is our 'default base' as we don't\r\n // support constructing URIs relative to other URIs. This\r\n // also means that we alter and potentially break paths.\r\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\r\n switch (scheme) {\r\n case 'https':\r\n case 'http':\r\n case 'file':\r\n if (!path) {\r\n path = _slash;\r\n }\r\n else if (path[0] !== _slash) {\r\n path = _slash + path;\r\n }\r\n break;\r\n }\r\n return path;\r\n}\r\nconst _empty = '';\r\nconst _slash = '/';\r\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\r\n/**\r\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\r\n * This class is a simple parser which creates the basic component parts\r\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\r\n * and encoding.\r\n *\r\n * ```txt\r\n * foo://example.com:8042/over/there?name=ferret#nose\r\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\r\n * | | | | |\r\n * scheme authority path query fragment\r\n * | _____________________|__\r\n * / \\ / \\\r\n * urn:example:animal:ferret:nose\r\n * ```\r\n */\r\nexport class URI {\r\n /**\r\n * @internal\r\n */\r\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\r\n if (typeof schemeOrData === 'object') {\r\n this.scheme = schemeOrData.scheme || _empty;\r\n this.authority = schemeOrData.authority || _empty;\r\n this.path = schemeOrData.path || _empty;\r\n this.query = schemeOrData.query || _empty;\r\n this.fragment = schemeOrData.fragment || _empty;\r\n // no validation because it's this URI\r\n // that creates uri components.\r\n // _validateUri(this);\r\n }\r\n else {\r\n this.scheme = _schemeFix(schemeOrData, _strict);\r\n this.authority = authority || _empty;\r\n this.path = _referenceResolution(this.scheme, path || _empty);\r\n this.query = query || _empty;\r\n this.fragment = fragment || _empty;\r\n _validateUri(this, _strict);\r\n }\r\n }\r\n static isUri(thing) {\r\n if (thing instanceof URI) {\r\n return true;\r\n }\r\n if (!thing) {\r\n return false;\r\n }\r\n return typeof thing.authority === 'string'\r\n && typeof thing.fragment === 'string'\r\n && typeof thing.path === 'string'\r\n && typeof thing.query === 'string'\r\n && typeof thing.scheme === 'string'\r\n && typeof thing.fsPath === 'function'\r\n && typeof thing.with === 'function'\r\n && typeof thing.toString === 'function';\r\n }\r\n // ---- filesystem path -----------------------\r\n /**\r\n * Returns a string representing the corresponding file system path of this URI.\r\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\r\n * platform specific path separator.\r\n *\r\n * * Will *not* validate the path for invalid characters and semantics.\r\n * * Will *not* look at the scheme of this URI.\r\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\r\n *\r\n *\r\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\r\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\r\n *\r\n * ```ts\r\n const u = URI.parse('file://server/c$/folder/file.txt')\r\n u.authority === 'server'\r\n u.path === '/shares/c$/file.txt'\r\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\r\n ```\r\n *\r\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\r\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\r\n * with URIs that represent files on disk (`file` scheme).\r\n */\r\n get fsPath() {\r\n // if (this.scheme !== 'file') {\r\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\r\n // }\r\n return uriToFsPath(this, false);\r\n }\r\n // ---- modify to new -------------------------\r\n with(change) {\r\n if (!change) {\r\n return this;\r\n }\r\n let { scheme, authority, path, query, fragment } = change;\r\n if (scheme === undefined) {\r\n scheme = this.scheme;\r\n }\r\n else if (scheme === null) {\r\n scheme = _empty;\r\n }\r\n if (authority === undefined) {\r\n authority = this.authority;\r\n }\r\n else if (authority === null) {\r\n authority = _empty;\r\n }\r\n if (path === undefined) {\r\n path = this.path;\r\n }\r\n else if (path === null) {\r\n path = _empty;\r\n }\r\n if (query === undefined) {\r\n query = this.query;\r\n }\r\n else if (query === null) {\r\n query = _empty;\r\n }\r\n if (fragment === undefined) {\r\n fragment = this.fragment;\r\n }\r\n else if (fragment === null) {\r\n fragment = _empty;\r\n }\r\n if (scheme === this.scheme\r\n && authority === this.authority\r\n && path === this.path\r\n && query === this.query\r\n && fragment === this.fragment) {\r\n return this;\r\n }\r\n return new Uri(scheme, authority, path, query, fragment);\r\n }\r\n // ---- parse & validate ------------------------\r\n /**\r\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\r\n * `file:///usr/home`, or `scheme:with/path`.\r\n *\r\n * @param value A string which represents an URI (see `URI#toString`).\r\n */\r\n static parse(value, _strict = false) {\r\n const match = _regexp.exec(value);\r\n if (!match) {\r\n return new Uri(_empty, _empty, _empty, _empty, _empty);\r\n }\r\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\r\n }\r\n /**\r\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\r\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\r\n *\r\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\r\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\r\n * `URI.parse('file://' + path)` because the path might contain characters that are\r\n * interpreted (# and ?). See the following sample:\r\n * ```ts\r\n const good = URI.file('/coding/c#/project1');\r\n good.scheme === 'file';\r\n good.path === '/coding/c#/project1';\r\n good.fragment === '';\r\n const bad = URI.parse('file://' + '/coding/c#/project1');\r\n bad.scheme === 'file';\r\n bad.path === '/coding/c'; // path is now broken\r\n bad.fragment === '/project1';\r\n ```\r\n *\r\n * @param path A file system path (see `URI#fsPath`)\r\n */\r\n static file(path) {\r\n let authority = _empty;\r\n // normalize to fwd-slashes on windows,\r\n // on other systems bwd-slashes are valid\r\n // filename character, eg /f\\oo/ba\\r.txt\r\n if (isWindows) {\r\n path = path.replace(/\\\\/g, _slash);\r\n }\r\n // check for authority as used in UNC shares\r\n // or use the path as given\r\n if (path[0] === _slash && path[1] === _slash) {\r\n const idx = path.indexOf(_slash, 2);\r\n if (idx === -1) {\r\n authority = path.substring(2);\r\n path = _slash;\r\n }\r\n else {\r\n authority = path.substring(2, idx);\r\n path = path.substring(idx) || _slash;\r\n }\r\n }\r\n return new Uri('file', authority, path, _empty, _empty);\r\n }\r\n static from(components) {\r\n return new Uri(components.scheme, components.authority, components.path, components.query, components.fragment);\r\n }\r\n /**\r\n * Join a URI path with path fragments and normalizes the resulting path.\r\n *\r\n * @param uri The input URI.\r\n * @param pathFragment The path fragment to add to the URI path.\r\n * @returns The resulting URI.\r\n */\r\n static joinPath(uri, ...pathFragment) {\r\n if (!uri.path) {\r\n throw new Error(`[UriError]: cannot call joinPaths on URI without path`);\r\n }\r\n let newPath;\r\n if (isWindows && uri.scheme === 'file') {\r\n newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\r\n }\r\n else {\r\n newPath = paths.posix.join(uri.path, ...pathFragment);\r\n }\r\n return uri.with({ path: newPath });\r\n }\r\n // ---- printing/externalize ---------------------------\r\n /**\r\n * Creates a string representation for this URI. It's guaranteed that calling\r\n * `URI.parse` with the result of this function creates an URI which is equal\r\n * to this URI.\r\n *\r\n * * The result shall *not* be used for display purposes but for externalization or transport.\r\n * * The result will be encoded using the percentage encoding and encoding happens mostly\r\n * ignore the scheme-specific encoding rules.\r\n *\r\n * @param skipEncoding Do not encode the result, default is `false`\r\n */\r\n toString(skipEncoding = false) {\r\n return _asFormatted(this, skipEncoding);\r\n }\r\n toJSON() {\r\n return this;\r\n }\r\n static revive(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n else if (data instanceof URI) {\r\n return data;\r\n }\r\n else {\r\n const result = new Uri(data);\r\n result._formatted = data.external;\r\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\r\n return result;\r\n }\r\n }\r\n}\r\nconst _pathSepMarker = isWindows ? 1 : undefined;\r\n// This class exists so that URI is compatibile with vscode.Uri (API).\r\nclass Uri extends URI {\r\n constructor() {\r\n super(...arguments);\r\n this._formatted = null;\r\n this._fsPath = null;\r\n }\r\n get fsPath() {\r\n if (!this._fsPath) {\r\n this._fsPath = uriToFsPath(this, false);\r\n }\r\n return this._fsPath;\r\n }\r\n toString(skipEncoding = false) {\r\n if (!skipEncoding) {\r\n if (!this._formatted) {\r\n this._formatted = _asFormatted(this, false);\r\n }\r\n return this._formatted;\r\n }\r\n else {\r\n // we don't cache that\r\n return _asFormatted(this, true);\r\n }\r\n }\r\n toJSON() {\r\n const res = {\r\n $mid: 1\r\n };\r\n // cached state\r\n if (this._fsPath) {\r\n res.fsPath = this._fsPath;\r\n res._sep = _pathSepMarker;\r\n }\r\n if (this._formatted) {\r\n res.external = this._formatted;\r\n }\r\n // uri components\r\n if (this.path) {\r\n res.path = this.path;\r\n }\r\n if (this.scheme) {\r\n res.scheme = this.scheme;\r\n }\r\n if (this.authority) {\r\n res.authority = this.authority;\r\n }\r\n if (this.query) {\r\n res.query = this.query;\r\n }\r\n if (this.fragment) {\r\n res.fragment = this.fragment;\r\n }\r\n return res;\r\n }\r\n}\r\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\r\nconst encodeTable = {\r\n [58 /* Colon */]: '%3A',\r\n [47 /* Slash */]: '%2F',\r\n [63 /* QuestionMark */]: '%3F',\r\n [35 /* Hash */]: '%23',\r\n [91 /* OpenSquareBracket */]: '%5B',\r\n [93 /* CloseSquareBracket */]: '%5D',\r\n [64 /* AtSign */]: '%40',\r\n [33 /* ExclamationMark */]: '%21',\r\n [36 /* DollarSign */]: '%24',\r\n [38 /* Ampersand */]: '%26',\r\n [39 /* SingleQuote */]: '%27',\r\n [40 /* OpenParen */]: '%28',\r\n [41 /* CloseParen */]: '%29',\r\n [42 /* Asterisk */]: '%2A',\r\n [43 /* Plus */]: '%2B',\r\n [44 /* Comma */]: '%2C',\r\n [59 /* Semicolon */]: '%3B',\r\n [61 /* Equals */]: '%3D',\r\n [32 /* Space */]: '%20',\r\n};\r\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\r\n let res = undefined;\r\n let nativeEncodePos = -1;\r\n for (let pos = 0; pos < uriComponent.length; pos++) {\r\n const code = uriComponent.charCodeAt(pos);\r\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\r\n if ((code >= 97 /* a */ && code <= 122 /* z */)\r\n || (code >= 65 /* A */ && code <= 90 /* Z */)\r\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\r\n || code === 45 /* Dash */\r\n || code === 46 /* Period */\r\n || code === 95 /* Underline */\r\n || code === 126 /* Tilde */\r\n || (allowSlash && code === 47 /* Slash */)) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // check if we write into a new string (by default we try to return the param)\r\n if (res !== undefined) {\r\n res += uriComponent.charAt(pos);\r\n }\r\n }\r\n else {\r\n // encoding needed, we need to allocate a new string\r\n if (res === undefined) {\r\n res = uriComponent.substr(0, pos);\r\n }\r\n // check with default table first\r\n const escaped = encodeTable[code];\r\n if (escaped !== undefined) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // append escaped variant to result\r\n res += escaped;\r\n }\r\n else if (nativeEncodePos === -1) {\r\n // use native encode only when needed\r\n nativeEncodePos = pos;\r\n }\r\n }\r\n }\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\r\n }\r\n return res !== undefined ? res : uriComponent;\r\n}\r\nfunction encodeURIComponentMinimal(path) {\r\n let res = undefined;\r\n for (let pos = 0; pos < path.length; pos++) {\r\n const code = path.charCodeAt(pos);\r\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\r\n if (res === undefined) {\r\n res = path.substr(0, pos);\r\n }\r\n res += encodeTable[code];\r\n }\r\n else {\r\n if (res !== undefined) {\r\n res += path[pos];\r\n }\r\n }\r\n }\r\n return res !== undefined ? res : path;\r\n}\r\n/**\r\n * Compute `fsPath` for the given uri\r\n */\r\nexport function uriToFsPath(uri, keepDriveLetterCasing) {\r\n let value;\r\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\r\n // unc path: file://shares/c$/far/boo\r\n value = `//${uri.authority}${uri.path}`;\r\n }\r\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\r\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\r\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\r\n if (!keepDriveLetterCasing) {\r\n // windows drive letter: file:///c:/far/boo\r\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\r\n }\r\n else {\r\n value = uri.path.substr(1);\r\n }\r\n }\r\n else {\r\n // other path\r\n value = uri.path;\r\n }\r\n if (isWindows) {\r\n value = value.replace(/\\//g, '\\\\');\r\n }\r\n return value;\r\n}\r\n/**\r\n * Create the external version of a uri\r\n */\r\nfunction _asFormatted(uri, skipEncoding) {\r\n const encoder = !skipEncoding\r\n ? encodeURIComponentFast\r\n : encodeURIComponentMinimal;\r\n let res = '';\r\n let { scheme, authority, path, query, fragment } = uri;\r\n if (scheme) {\r\n res += scheme;\r\n res += ':';\r\n }\r\n if (authority || scheme === 'file') {\r\n res += _slash;\r\n res += _slash;\r\n }\r\n if (authority) {\r\n let idx = authority.indexOf('@');\r\n if (idx !== -1) {\r\n // <user>@<auth>\r\n const userinfo = authority.substr(0, idx);\r\n authority = authority.substr(idx + 1);\r\n idx = userinfo.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(userinfo, false);\r\n }\r\n else {\r\n // <user>:<pass>@<auth>\r\n res += encoder(userinfo.substr(0, idx), false);\r\n res += ':';\r\n res += encoder(userinfo.substr(idx + 1), false);\r\n }\r\n res += '@';\r\n }\r\n authority = authority.toLowerCase();\r\n idx = authority.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(authority, false);\r\n }\r\n else {\r\n // <auth>:<port>\r\n res += encoder(authority.substr(0, idx), false);\r\n res += authority.substr(idx);\r\n }\r\n }\r\n if (path) {\r\n // lower-case windows drive letters in /C:/fff or C:/fff\r\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\r\n const code = path.charCodeAt(1);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\r\n const code = path.charCodeAt(0);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n // encode the rest of the path\r\n res += encoder(path, true);\r\n }\r\n if (query) {\r\n res += '?';\r\n res += encoder(query, false);\r\n }\r\n if (fragment) {\r\n res += '#';\r\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\r\n }\r\n return res;\r\n}\r\n// --- decode\r\nfunction decodeURIComponentGraceful(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n }\r\n catch (_a) {\r\n if (str.length > 3) {\r\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n}\r\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\r\nfunction percentDecode(str) {\r\n if (!str.match(_rEncodedAsHex)) {\r\n return str;\r\n }\r\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { transformErrorForSerialization } from '../errors.js';\r\nimport { Disposable } from '../lifecycle.js';\r\nimport { isWeb } from '../platform.js';\r\nimport * as types from '../types.js';\r\nconst INITIALIZE = '$initialize';\r\nlet webWorkerWarningLogged = false;\r\nexport function logOnceWebWorkerWarning(err) {\r\n if (!isWeb) {\r\n // running tests\r\n return;\r\n }\r\n if (!webWorkerWarningLogged) {\r\n webWorkerWarningLogged = true;\r\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq');\r\n }\r\n console.warn(err.message);\r\n}\r\nclass SimpleWorkerProtocol {\r\n constructor(handler) {\r\n this._workerId = -1;\r\n this._handler = handler;\r\n this._lastSentReq = 0;\r\n this._pendingReplies = Object.create(null);\r\n }\r\n setWorkerId(workerId) {\r\n this._workerId = workerId;\r\n }\r\n sendMessage(method, args) {\r\n let req = String(++this._lastSentReq);\r\n return new Promise((resolve, reject) => {\r\n this._pendingReplies[req] = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n this._send({\r\n vsWorker: this._workerId,\r\n req: req,\r\n method: method,\r\n args: args\r\n });\r\n });\r\n }\r\n handleMessage(message) {\r\n if (!message || !message.vsWorker) {\r\n return;\r\n }\r\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\r\n return;\r\n }\r\n this._handleMessage(message);\r\n }\r\n _handleMessage(msg) {\r\n if (msg.seq) {\r\n let replyMessage = msg;\r\n if (!this._pendingReplies[replyMessage.seq]) {\r\n console.warn('Got reply to unknown seq');\r\n return;\r\n }\r\n let reply = this._pendingReplies[replyMessage.seq];\r\n delete this._pendingReplies[replyMessage.seq];\r\n if (replyMessage.err) {\r\n let err = replyMessage.err;\r\n if (replyMessage.err.$isError) {\r\n err = new Error();\r\n err.name = replyMessage.err.name;\r\n err.message = replyMessage.err.message;\r\n err.stack = replyMessage.err.stack;\r\n }\r\n reply.reject(err);\r\n return;\r\n }\r\n reply.resolve(replyMessage.res);\r\n return;\r\n }\r\n let requestMessage = msg;\r\n let req = requestMessage.req;\r\n let result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\r\n result.then((r) => {\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: r,\r\n err: undefined\r\n });\r\n }, (e) => {\r\n if (e.detail instanceof Error) {\r\n // Loading errors have a detail property that points to the actual error\r\n e.detail = transformErrorForSerialization(e.detail);\r\n }\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: undefined,\r\n err: transformErrorForSerialization(e)\r\n });\r\n });\r\n }\r\n _send(msg) {\r\n let transfer = [];\r\n if (msg.req) {\r\n const m = msg;\r\n for (let i = 0; i < m.args.length; i++) {\r\n if (m.args[i] instanceof ArrayBuffer) {\r\n transfer.push(m.args[i]);\r\n }\r\n }\r\n }\r\n else {\r\n const m = msg;\r\n if (m.res instanceof ArrayBuffer) {\r\n transfer.push(m.res);\r\n }\r\n }\r\n this._handler.sendMessage(msg, transfer);\r\n }\r\n}\r\n/**\r\n * Main thread side\r\n */\r\nexport class SimpleWorkerClient extends Disposable {\r\n constructor(workerFactory, moduleId, host) {\r\n super();\r\n let lazyProxyReject = null;\r\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\r\n this._protocol.handleMessage(msg);\r\n }, (err) => {\r\n // in Firefox, web workers fail lazily :(\r\n // we will reject the proxy\r\n if (lazyProxyReject) {\r\n lazyProxyReject(err);\r\n }\r\n }));\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n this._worker.postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => {\r\n if (typeof host[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\r\n }\r\n try {\r\n return Promise.resolve(host[method].apply(host, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n });\r\n this._protocol.setWorkerId(this._worker.getId());\r\n // Gather loader configuration\r\n let loaderConfiguration = null;\r\n if (typeof self.require !== 'undefined' && typeof self.require.getConfig === 'function') {\r\n // Get the configuration from the Monaco AMD Loader\r\n loaderConfiguration = self.require.getConfig();\r\n }\r\n else if (typeof self.requirejs !== 'undefined') {\r\n // Get the configuration from requirejs\r\n loaderConfiguration = self.requirejs.s.contexts._.config;\r\n }\r\n const hostMethods = types.getAllMethodNames(host);\r\n // Send initialize message\r\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\r\n this._worker.getId(),\r\n JSON.parse(JSON.stringify(loaderConfiguration)),\r\n moduleId,\r\n hostMethods,\r\n ]);\r\n // Create proxy to loaded code\r\n const proxyMethodRequest = (method, args) => {\r\n return this._request(method, args);\r\n };\r\n this._lazyProxy = new Promise((resolve, reject) => {\r\n lazyProxyReject = reject;\r\n this._onModuleLoaded.then((availableMethods) => {\r\n resolve(types.createProxyObject(availableMethods, proxyMethodRequest));\r\n }, (e) => {\r\n reject(e);\r\n this._onError('Worker failed to load ' + moduleId, e);\r\n });\r\n });\r\n }\r\n getProxyObject() {\r\n return this._lazyProxy;\r\n }\r\n _request(method, args) {\r\n return new Promise((resolve, reject) => {\r\n this._onModuleLoaded.then(() => {\r\n this._protocol.sendMessage(method, args).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n _onError(message, error) {\r\n console.error(message);\r\n console.info(error);\r\n }\r\n}\r\n/**\r\n * Worker side\r\n */\r\nexport class SimpleWorkerServer {\r\n constructor(postMessage, requestHandlerFactory) {\r\n this._requestHandlerFactory = requestHandlerFactory;\r\n this._requestHandler = null;\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => this._handleMessage(method, args)\r\n });\r\n }\r\n onmessage(msg) {\r\n this._protocol.handleMessage(msg);\r\n }\r\n _handleMessage(method, args) {\r\n if (method === INITIALIZE) {\r\n return this.initialize(args[0], args[1], args[2], args[3]);\r\n }\r\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\r\n this._protocol.setWorkerId(workerId);\r\n const proxyMethodRequest = (method, args) => {\r\n return this._protocol.sendMessage(method, args);\r\n };\r\n const hostProxy = types.createProxyObject(hostMethods, proxyMethodRequest);\r\n if (this._requestHandlerFactory) {\r\n // static request handler\r\n this._requestHandler = this._requestHandlerFactory(hostProxy);\r\n return Promise.resolve(types.getAllMethodNames(this._requestHandler));\r\n }\r\n if (loaderConfig) {\r\n // Remove 'baseUrl', handling it is beyond scope for now\r\n if (typeof loaderConfig.baseUrl !== 'undefined') {\r\n delete loaderConfig['baseUrl'];\r\n }\r\n if (typeof loaderConfig.paths !== 'undefined') {\r\n if (typeof loaderConfig.paths.vs !== 'undefined') {\r\n delete loaderConfig.paths['vs'];\r\n }\r\n }\r\n // Since this is in a web worker, enable catching errors\r\n loaderConfig.catchError = true;\r\n self.require.config(loaderConfig);\r\n }\r\n return new Promise((resolve, reject) => {\r\n // Use the global require to be sure to get the global config\r\n self.require([moduleId], (module) => {\r\n this._requestHandler = module.create(hostProxy);\r\n if (!this._requestHandler) {\r\n reject(new Error(`No RequestHandler!`));\r\n return;\r\n }\r\n resolve(types.getAllMethodNames(this._requestHandler));\r\n }, reject);\r\n });\r\n }\r\n}\r\n/**\r\n * Called on the worker side\r\n */\r\nexport function create(postMessage) {\r\n return new SimpleWorkerServer(postMessage, null);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint8 } from '../../../base/common/uint.js';\r\n/**\r\n * A fast character classifier that uses a compact array for ASCII values.\r\n */\r\nexport class CharacterClassifier {\r\n constructor(_defaultValue) {\r\n let defaultValue = toUint8(_defaultValue);\r\n this._defaultValue = defaultValue;\r\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\r\n this._map = new Map();\r\n }\r\n static _createAsciiMap(defaultValue) {\r\n let asciiMap = new Uint8Array(256);\r\n for (let i = 0; i < 256; i++) {\r\n asciiMap[i] = defaultValue;\r\n }\r\n return asciiMap;\r\n }\r\n set(charCode, _value) {\r\n let value = toUint8(_value);\r\n if (charCode >= 0 && charCode < 256) {\r\n this._asciiMap[charCode] = value;\r\n }\r\n else {\r\n this._map.set(charCode, value);\r\n }\r\n }\r\n get(charCode) {\r\n if (charCode >= 0 && charCode < 256) {\r\n return this._asciiMap[charCode];\r\n }\r\n else {\r\n return (this._map.get(charCode) || this._defaultValue);\r\n }\r\n }\r\n}\r\nexport class CharacterSet {\r\n constructor() {\r\n this._actual = new CharacterClassifier(0 /* False */);\r\n }\r\n add(charCode) {\r\n this._actual.set(charCode, 1 /* True */);\r\n }\r\n has(charCode) {\r\n return (this._actual.get(charCode) === 1 /* True */);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * A position in the editor.\r\n */\r\nexport class Position {\r\n constructor(lineNumber, column) {\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n }\r\n /**\r\n * Create a new position from this position.\r\n *\r\n * @param newLineNumber new line number\r\n * @param newColumn new column\r\n */\r\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\r\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\r\n return this;\r\n }\r\n else {\r\n return new Position(newLineNumber, newColumn);\r\n }\r\n }\r\n /**\r\n * Derive a new position from this position.\r\n *\r\n * @param deltaLineNumber line number delta\r\n * @param deltaColumn column delta\r\n */\r\n delta(deltaLineNumber = 0, deltaColumn = 0) {\r\n return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn);\r\n }\r\n /**\r\n * Test if this position equals other position\r\n */\r\n equals(other) {\r\n return Position.equals(this, other);\r\n }\r\n /**\r\n * Test if position `a` equals position `b`\r\n */\r\n static equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n return (!!a &&\r\n !!b &&\r\n a.lineNumber === b.lineNumber &&\r\n a.column === b.column);\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n isBefore(other) {\r\n return Position.isBefore(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n static isBefore(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column < b.column;\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n isBeforeOrEqual(other) {\r\n return Position.isBeforeOrEqual(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n static isBeforeOrEqual(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column <= b.column;\r\n }\r\n /**\r\n * A function that compares positions, useful for sorting\r\n */\r\n static compare(a, b) {\r\n let aLineNumber = a.lineNumber | 0;\r\n let bLineNumber = b.lineNumber | 0;\r\n if (aLineNumber === bLineNumber) {\r\n let aColumn = a.column | 0;\r\n let bColumn = b.column | 0;\r\n return aColumn - bColumn;\r\n }\r\n return aLineNumber - bLineNumber;\r\n }\r\n /**\r\n * Clone this position.\r\n */\r\n clone() {\r\n return new Position(this.lineNumber, this.column);\r\n }\r\n /**\r\n * Convert to a human-readable representation.\r\n */\r\n toString() {\r\n return '(' + this.lineNumber + ',' + this.column + ')';\r\n }\r\n // ---\r\n /**\r\n * Create a `Position` from an `IPosition`.\r\n */\r\n static lift(pos) {\r\n return new Position(pos.lineNumber, pos.column);\r\n }\r\n /**\r\n * Test if `obj` is an `IPosition`.\r\n */\r\n static isIPosition(obj) {\r\n return (obj\r\n && (typeof obj.lineNumber === 'number')\r\n && (typeof obj.column === 'number'));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\n/**\r\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\r\n */\r\nexport class Range {\r\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\r\n if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) {\r\n this.startLineNumber = endLineNumber;\r\n this.startColumn = endColumn;\r\n this.endLineNumber = startLineNumber;\r\n this.endColumn = startColumn;\r\n }\r\n else {\r\n this.startLineNumber = startLineNumber;\r\n this.startColumn = startColumn;\r\n this.endLineNumber = endLineNumber;\r\n this.endColumn = endColumn;\r\n }\r\n }\r\n /**\r\n * Test if this range is empty.\r\n */\r\n isEmpty() {\r\n return Range.isEmpty(this);\r\n }\r\n /**\r\n * Test if `range` is empty.\r\n */\r\n static isEmpty(range) {\r\n return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn);\r\n }\r\n /**\r\n * Test if position is in this range. If the position is at the edges, will return true.\r\n */\r\n containsPosition(position) {\r\n return Range.containsPosition(this, position);\r\n }\r\n /**\r\n * Test if `position` is in `range`. If the position is at the edges, will return true.\r\n */\r\n static containsPosition(range, position) {\r\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if range is in this range. If the range is equal to this range, will return true.\r\n */\r\n containsRange(range) {\r\n return Range.containsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\r\n */\r\n static containsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\r\n */\r\n strictContainsRange(range) {\r\n return Range.strictContainsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is strinctly in `range` (must start after, and end before). If the ranges are equal, will return false.\r\n */\r\n static strictContainsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n plusRange(range) {\r\n return Range.plusRange(this, range);\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n static plusRange(a, b) {\r\n let startLineNumber;\r\n let startColumn;\r\n let endLineNumber;\r\n let endColumn;\r\n if (b.startLineNumber < a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = b.startColumn;\r\n }\r\n else if (b.startLineNumber === a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = Math.min(b.startColumn, a.startColumn);\r\n }\r\n else {\r\n startLineNumber = a.startLineNumber;\r\n startColumn = a.startColumn;\r\n }\r\n if (b.endLineNumber > a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = b.endColumn;\r\n }\r\n else if (b.endLineNumber === a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = Math.max(b.endColumn, a.endColumn);\r\n }\r\n else {\r\n endLineNumber = a.endLineNumber;\r\n endColumn = a.endColumn;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n intersectRanges(range) {\r\n return Range.intersectRanges(this, range);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n static intersectRanges(a, b) {\r\n let resultStartLineNumber = a.startLineNumber;\r\n let resultStartColumn = a.startColumn;\r\n let resultEndLineNumber = a.endLineNumber;\r\n let resultEndColumn = a.endColumn;\r\n let otherStartLineNumber = b.startLineNumber;\r\n let otherStartColumn = b.startColumn;\r\n let otherEndLineNumber = b.endLineNumber;\r\n let otherEndColumn = b.endColumn;\r\n if (resultStartLineNumber < otherStartLineNumber) {\r\n resultStartLineNumber = otherStartLineNumber;\r\n resultStartColumn = otherStartColumn;\r\n }\r\n else if (resultStartLineNumber === otherStartLineNumber) {\r\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\r\n }\r\n if (resultEndLineNumber > otherEndLineNumber) {\r\n resultEndLineNumber = otherEndLineNumber;\r\n resultEndColumn = otherEndColumn;\r\n }\r\n else if (resultEndLineNumber === otherEndLineNumber) {\r\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\r\n }\r\n // Check if selection is now empty\r\n if (resultStartLineNumber > resultEndLineNumber) {\r\n return null;\r\n }\r\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) {\r\n return null;\r\n }\r\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\r\n }\r\n /**\r\n * Test if this range equals other.\r\n */\r\n equalsRange(other) {\r\n return Range.equalsRange(this, other);\r\n }\r\n /**\r\n * Test if range `a` equals `b`.\r\n */\r\n static equalsRange(a, b) {\r\n return (!!a &&\r\n !!b &&\r\n a.startLineNumber === b.startLineNumber &&\r\n a.startColumn === b.startColumn &&\r\n a.endLineNumber === b.endLineNumber &&\r\n a.endColumn === b.endColumn);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n getEndPosition() {\r\n return Range.getEndPosition(this);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n static getEndPosition(range) {\r\n return new Position(range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n getStartPosition() {\r\n return Range.getStartPosition(this);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n static getStartPosition(range) {\r\n return new Position(range.startLineNumber, range.startColumn);\r\n }\r\n /**\r\n * Transform to a user presentable string representation.\r\n */\r\n toString() {\r\n return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']';\r\n }\r\n /**\r\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n collapseToStart() {\r\n return Range.collapseToStart(this);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n static collapseToStart(range) {\r\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\r\n }\r\n // ---\r\n static fromPositions(start, end = start) {\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n static lift(range) {\r\n if (!range) {\r\n return null;\r\n }\r\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Test if `obj` is an `IRange`.\r\n */\r\n static isIRange(obj) {\r\n return (obj\r\n && (typeof obj.startLineNumber === 'number')\r\n && (typeof obj.startColumn === 'number')\r\n && (typeof obj.endLineNumber === 'number')\r\n && (typeof obj.endColumn === 'number'));\r\n }\r\n /**\r\n * Test if the two ranges are touching in any way.\r\n */\r\n static areIntersectingOrTouching(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\r\n */\r\n static areIntersecting(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the startPosition and then on the endPosition\r\n */\r\n static compareRangesUsingStarts(a, b) {\r\n if (a && b) {\r\n const aStartLineNumber = a.startLineNumber | 0;\r\n const bStartLineNumber = b.startLineNumber | 0;\r\n if (aStartLineNumber === bStartLineNumber) {\r\n const aStartColumn = a.startColumn | 0;\r\n const bStartColumn = b.startColumn | 0;\r\n if (aStartColumn === bStartColumn) {\r\n const aEndLineNumber = a.endLineNumber | 0;\r\n const bEndLineNumber = b.endLineNumber | 0;\r\n if (aEndLineNumber === bEndLineNumber) {\r\n const aEndColumn = a.endColumn | 0;\r\n const bEndColumn = b.endColumn | 0;\r\n return aEndColumn - bEndColumn;\r\n }\r\n return aEndLineNumber - bEndLineNumber;\r\n }\r\n return aStartColumn - bStartColumn;\r\n }\r\n return aStartLineNumber - bStartLineNumber;\r\n }\r\n const aExists = (a ? 1 : 0);\r\n const bExists = (b ? 1 : 0);\r\n return aExists - bExists;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the endPosition and then on the startPosition\r\n */\r\n static compareRangesUsingEnds(a, b) {\r\n if (a.endLineNumber === b.endLineNumber) {\r\n if (a.endColumn === b.endColumn) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.endColumn - b.endColumn;\r\n }\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n /**\r\n * Test if the range spans multiple lines.\r\n */\r\n static spansMultipleLines(range) {\r\n return range.endLineNumber > range.startLineNumber;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\nimport { Range } from './range.js';\r\n/**\r\n * A selection in the editor.\r\n * The selection is a range that has an orientation.\r\n */\r\nexport class Selection extends Range {\r\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\r\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\r\n this.selectionStartLineNumber = selectionStartLineNumber;\r\n this.selectionStartColumn = selectionStartColumn;\r\n this.positionLineNumber = positionLineNumber;\r\n this.positionColumn = positionColumn;\r\n }\r\n /**\r\n * Transform to a human-readable representation.\r\n */\r\n toString() {\r\n return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']';\r\n }\r\n /**\r\n * Test if equals other selection.\r\n */\r\n equalsSelection(other) {\r\n return (Selection.selectionsEqual(this, other));\r\n }\r\n /**\r\n * Test if the two selections are equal.\r\n */\r\n static selectionsEqual(a, b) {\r\n return (a.selectionStartLineNumber === b.selectionStartLineNumber &&\r\n a.selectionStartColumn === b.selectionStartColumn &&\r\n a.positionLineNumber === b.positionLineNumber &&\r\n a.positionColumn === b.positionColumn);\r\n }\r\n /**\r\n * Get directions (LTR or RTL).\r\n */\r\n getDirection() {\r\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) {\r\n return 0 /* LTR */;\r\n }\r\n return 1 /* RTL */;\r\n }\r\n /**\r\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\r\n }\r\n /**\r\n * Get the position at `positionLineNumber` and `positionColumn`.\r\n */\r\n getPosition() {\r\n return new Position(this.positionLineNumber, this.positionColumn);\r\n }\r\n /**\r\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\r\n }\r\n // ----\r\n /**\r\n * Create a `Selection` from one or two positions\r\n */\r\n static fromPositions(start, end = start) {\r\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n /**\r\n * Create a `Selection` from an `ISelection`.\r\n */\r\n static liftSelection(sel) {\r\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\r\n }\r\n /**\r\n * `a` equals `b`.\r\n */\r\n static selectionsArrEqual(a, b) {\r\n if (a && !b || !a && b) {\r\n return false;\r\n }\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (!this.selectionsEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `obj` is an `ISelection`.\r\n */\r\n static isISelection(obj) {\r\n return (obj\r\n && (typeof obj.selectionStartLineNumber === 'number')\r\n && (typeof obj.selectionStartColumn === 'number')\r\n && (typeof obj.positionLineNumber === 'number')\r\n && (typeof obj.positionColumn === 'number'));\r\n }\r\n /**\r\n * Create with a direction.\r\n */\r\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\r\n if (direction === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Token {\r\n constructor(offset, type, language) {\r\n this.offset = offset | 0; // @perf\r\n this.type = type;\r\n this.language = language;\r\n }\r\n toString() {\r\n return '(' + this.offset + ', ' + this.type + ')';\r\n }\r\n}\r\nexport class TokenizationResult {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\nexport class TokenizationResult2 {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\r\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\r\n const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\r\n return diffAlgo.ComputeDiff(pretty);\r\n}\r\nclass LineSequence {\r\n constructor(lines) {\r\n const startColumns = [];\r\n const endColumns = [];\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\r\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\r\n }\r\n this.lines = lines;\r\n this._startColumns = startColumns;\r\n this._endColumns = endColumns;\r\n }\r\n getElements() {\r\n const elements = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\r\n }\r\n return elements;\r\n }\r\n getStartLineNumber(i) {\r\n return i + 1;\r\n }\r\n getEndLineNumber(i) {\r\n return i + 1;\r\n }\r\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\r\n const charCodes = [];\r\n const lineNumbers = [];\r\n const columns = [];\r\n let len = 0;\r\n for (let index = startIndex; index <= endIndex; index++) {\r\n const lineContent = this.lines[index];\r\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\r\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\r\n for (let col = startColumn; col < endColumn; col++) {\r\n charCodes[len] = lineContent.charCodeAt(col - 1);\r\n lineNumbers[len] = index + 1;\r\n columns[len] = col;\r\n len++;\r\n }\r\n }\r\n return new CharSequence(charCodes, lineNumbers, columns);\r\n }\r\n}\r\nclass CharSequence {\r\n constructor(charCodes, lineNumbers, columns) {\r\n this._charCodes = charCodes;\r\n this._lineNumbers = lineNumbers;\r\n this._columns = columns;\r\n }\r\n getElements() {\r\n return this._charCodes;\r\n }\r\n getStartLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getStartColumn(i) {\r\n return this._columns[i];\r\n }\r\n getEndLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getEndColumn(i) {\r\n return this._columns[i] + 1;\r\n }\r\n}\r\nclass CharChange {\r\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalStartColumn = originalStartColumn;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.originalEndColumn = originalEndColumn;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedStartColumn = modifiedStartColumn;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.modifiedEndColumn = modifiedEndColumn;\r\n }\r\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\r\n let originalStartLineNumber;\r\n let originalStartColumn;\r\n let originalEndLineNumber;\r\n let originalEndColumn;\r\n let modifiedStartLineNumber;\r\n let modifiedStartColumn;\r\n let modifiedEndLineNumber;\r\n let modifiedEndColumn;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = 0;\r\n originalStartColumn = 0;\r\n originalEndLineNumber = 0;\r\n originalEndColumn = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\r\n originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\r\n originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = 0;\r\n modifiedStartColumn = 0;\r\n modifiedEndLineNumber = 0;\r\n modifiedEndColumn = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\r\n }\r\n}\r\nfunction postProcessCharChanges(rawChanges) {\r\n if (rawChanges.length <= 1) {\r\n return rawChanges;\r\n }\r\n const result = [rawChanges[0]];\r\n let prevChange = result[0];\r\n for (let i = 1, len = rawChanges.length; i < len; i++) {\r\n const currChange = rawChanges[i];\r\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\r\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\r\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\r\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\r\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\r\n // Merge the current change into the previous one\r\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\r\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\r\n }\r\n else {\r\n // Add the current change\r\n result.push(currChange);\r\n prevChange = currChange;\r\n }\r\n }\r\n return result;\r\n}\r\nclass LineChange {\r\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.charChanges = charChanges;\r\n }\r\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\r\n let originalStartLineNumber;\r\n let originalEndLineNumber;\r\n let modifiedStartLineNumber;\r\n let modifiedEndLineNumber;\r\n let charChanges = undefined;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\r\n originalEndLineNumber = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\r\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\r\n modifiedEndLineNumber = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\r\n // Compute character changes for diff chunks of at most 20 lines...\r\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\r\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\r\n if (shouldPostProcessCharChanges) {\r\n rawChanges = postProcessCharChanges(rawChanges);\r\n }\r\n charChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\r\n }\r\n }\r\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\r\n }\r\n}\r\nexport class DiffComputer {\r\n constructor(originalLines, modifiedLines, opts) {\r\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\r\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\r\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\r\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\r\n this.originalLines = originalLines;\r\n this.modifiedLines = modifiedLines;\r\n this.original = new LineSequence(originalLines);\r\n this.modified = new LineSequence(modifiedLines);\r\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\r\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\r\n }\r\n computeDiff() {\r\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\r\n // empty original => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: 1,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: this.modified.lines.length,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n // empty modified => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: this.original.lines.length,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: 1,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\r\n const rawChanges = diffResult.changes;\r\n const quitEarly = diffResult.quitEarly;\r\n // The diff is always computed with ignoring trim whitespace\r\n // This ensures we get the prettiest diff\r\n if (this.shouldIgnoreTrimWhitespace) {\r\n const lineChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: lineChanges\r\n };\r\n }\r\n // Need to post-process and introduce changes where the trim whitespace is different\r\n // Note that we are looping starting at -1 to also cover the lines before the first change\r\n const result = [];\r\n let originalLineIndex = 0;\r\n let modifiedLineIndex = 0;\r\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\r\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\r\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\r\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\r\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\r\n const originalLine = this.originalLines[originalLineIndex];\r\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\r\n if (originalLine !== modifiedLine) {\r\n // These lines differ only in trim whitespace\r\n // Check the leading whitespace\r\n {\r\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\r\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\r\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\r\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\r\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalStartColumn--;\r\n modifiedStartColumn--;\r\n }\r\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\r\n }\r\n }\r\n // Check the trailing whitespace\r\n {\r\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\r\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\r\n const originalMaxColumn = originalLine.length + 1;\r\n const modifiedMaxColumn = modifiedLine.length + 1;\r\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\r\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\r\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalEndColumn++;\r\n modifiedEndColumn++;\r\n }\r\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\r\n }\r\n }\r\n }\r\n originalLineIndex++;\r\n modifiedLineIndex++;\r\n }\r\n if (nextChange) {\r\n // Emit the actual change\r\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n originalLineIndex += nextChange.originalLength;\r\n modifiedLineIndex += nextChange.modifiedLength;\r\n }\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: result\r\n };\r\n }\r\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\r\n // Merged into previous\r\n return;\r\n }\r\n let charChanges = undefined;\r\n if (this.shouldComputeCharChanges) {\r\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\r\n }\r\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\r\n }\r\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n const len = result.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const prevChange = result[len - 1];\r\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\r\n // Don't merge with inserts/deletes\r\n return false;\r\n }\r\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\r\n prevChange.originalEndLineNumber = originalLineNumber;\r\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\r\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\r\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction getFirstNonBlankColumn(txt, defaultValue) {\r\n const r = strings.firstNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 1;\r\n}\r\nfunction getLastNonBlankColumn(txt, defaultValue) {\r\n const r = strings.lastNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 2;\r\n}\r\nfunction createContinueProcessingPredicate(maximumRuntime) {\r\n if (maximumRuntime === 0) {\r\n return () => true;\r\n }\r\n const startTime = Date.now();\r\n return () => {\r\n return Date.now() - startTime < maximumRuntime;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from '../core/position.js';\r\nimport { PrefixSumComputer } from '../viewModel/prefixSumComputer.js';\r\nexport class MirrorTextModel {\r\n constructor(uri, lines, eol, versionId) {\r\n this._uri = uri;\r\n this._lines = lines;\r\n this._eol = eol;\r\n this._versionId = versionId;\r\n this._lineStarts = null;\r\n this._cachedTextValue = null;\r\n }\r\n dispose() {\r\n this._lines.length = 0;\r\n }\r\n getText() {\r\n if (this._cachedTextValue === null) {\r\n this._cachedTextValue = this._lines.join(this._eol);\r\n }\r\n return this._cachedTextValue;\r\n }\r\n onEvents(e) {\r\n if (e.eol && e.eol !== this._eol) {\r\n this._eol = e.eol;\r\n this._lineStarts = null;\r\n }\r\n // Update my lines\r\n const changes = e.changes;\r\n for (const change of changes) {\r\n this._acceptDeleteRange(change.range);\r\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\r\n }\r\n this._versionId = e.versionId;\r\n this._cachedTextValue = null;\r\n }\r\n _ensureLineStarts() {\r\n if (!this._lineStarts) {\r\n const eolLength = this._eol.length;\r\n const linesLength = this._lines.length;\r\n const lineStartValues = new Uint32Array(linesLength);\r\n for (let i = 0; i < linesLength; i++) {\r\n lineStartValues[i] = this._lines[i].length + eolLength;\r\n }\r\n this._lineStarts = new PrefixSumComputer(lineStartValues);\r\n }\r\n }\r\n /**\r\n * All changes to a line's text go through this method\r\n */\r\n _setLineText(lineIndex, newValue) {\r\n this._lines[lineIndex] = newValue;\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.changeValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\r\n }\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n // Delete text on the affected line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\r\n return;\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\r\n // Delete middle lines\r\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n }\r\n _acceptInsertText(position, insertText) {\r\n if (insertText.length === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n let insertLines = insertText.split(/\\r\\n|\\r|\\n/);\r\n if (insertLines.length === 1) {\r\n // Inserting text on one line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]\r\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\r\n return;\r\n }\r\n // Append overflowing text from first line to the end of text to insert\r\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\r\n // Delete overflowing text from first line and insert text on first line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]);\r\n // Insert new lines & store lengths\r\n let newLengths = new Uint32Array(insertLines.length - 1);\r\n for (let i = 1; i < insertLines.length; i++) {\r\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\r\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\r\n }\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.insertValues(position.lineNumber, newLengths);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\r\n/**\r\n * Create a word definition regular expression based on default word separators.\r\n * Optionally provide allowed separators that should be included in words.\r\n *\r\n * The default would look like this:\r\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\r\n */\r\nfunction createWordRegExp(allowInWords = '') {\r\n let source = '(-?\\\\d*\\\\.\\\\d\\\\w*)|([^';\r\n for (const sep of USUAL_WORD_SEPARATORS) {\r\n if (allowInWords.indexOf(sep) >= 0) {\r\n continue;\r\n }\r\n source += '\\\\' + sep;\r\n }\r\n source += '\\\\s]+)';\r\n return new RegExp(source, 'g');\r\n}\r\n// catches numbers (including floating numbers) in the first group, and alphanum in the second\r\nexport const DEFAULT_WORD_REGEXP = createWordRegExp();\r\nexport function ensureValidWordDefinition(wordDefinition) {\r\n let result = DEFAULT_WORD_REGEXP;\r\n if (wordDefinition && (wordDefinition instanceof RegExp)) {\r\n if (!wordDefinition.global) {\r\n let flags = 'g';\r\n if (wordDefinition.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (wordDefinition.multiline) {\r\n flags += 'm';\r\n }\r\n if (wordDefinition.unicode) {\r\n flags += 'u';\r\n }\r\n result = new RegExp(wordDefinition.source, flags);\r\n }\r\n else {\r\n result = wordDefinition;\r\n }\r\n }\r\n result.lastIndex = 0;\r\n return result;\r\n}\r\nconst _defaultConfig = {\r\n maxLen: 1000,\r\n windowSize: 15,\r\n timeBudget: 150\r\n};\r\nexport function getWordAtText(column, wordDefinition, text, textOffset, config = _defaultConfig) {\r\n if (text.length > config.maxLen) {\r\n // don't throw strings that long at the regexp\r\n // but use a sub-string in which a word must occur\r\n let start = column - config.maxLen / 2;\r\n if (start < 0) {\r\n textOffset += column;\r\n start = 0;\r\n }\r\n else {\r\n textOffset += start;\r\n }\r\n text = text.substring(start, column + config.maxLen / 2);\r\n return getWordAtText(column, wordDefinition, text, textOffset, config);\r\n }\r\n const t1 = Date.now();\r\n const pos = column - 1 - textOffset;\r\n let prevRegexIndex = -1;\r\n let match = null;\r\n for (let i = 1;; i++) {\r\n // check time budget\r\n if (Date.now() - t1 >= config.timeBudget) {\r\n // break;\r\n }\r\n // reset the index at which the regexp should start matching, also know where it\r\n // should stop so that subsequent search don't repeat previous searches\r\n const regexIndex = pos - config.windowSize * i;\r\n wordDefinition.lastIndex = Math.max(0, regexIndex);\r\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\r\n if (!thisMatch && match) {\r\n // stop: we have something\r\n break;\r\n }\r\n match = thisMatch;\r\n // stop: searched at start\r\n if (regexIndex <= 0) {\r\n break;\r\n }\r\n prevRegexIndex = regexIndex;\r\n }\r\n if (match) {\r\n let result = {\r\n word: match[0],\r\n startColumn: textOffset + 1 + match.index,\r\n endColumn: textOffset + 1 + match.index + match[0].length\r\n };\r\n wordDefinition.lastIndex = 0;\r\n return result;\r\n }\r\n return null;\r\n}\r\nfunction _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\r\n let match;\r\n while (match = wordDefinition.exec(text)) {\r\n const matchIndex = match.index || 0;\r\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) {\r\n return match;\r\n }\r\n else if (stopPos > 0 && matchIndex > stopPos) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class Uint8Matrix {\r\n constructor(rows, cols, defaultValue) {\r\n const data = new Uint8Array(rows * cols);\r\n for (let i = 0, len = rows * cols; i < len; i++) {\r\n data[i] = defaultValue;\r\n }\r\n this._data = data;\r\n this.rows = rows;\r\n this.cols = cols;\r\n }\r\n get(row, col) {\r\n return this._data[row * this.cols + col];\r\n }\r\n set(row, col, value) {\r\n this._data[row * this.cols + col] = value;\r\n }\r\n}\r\nexport class StateMachine {\r\n constructor(edges) {\r\n let maxCharCode = 0;\r\n let maxState = 0 /* Invalid */;\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n if (chCode > maxCharCode) {\r\n maxCharCode = chCode;\r\n }\r\n if (from > maxState) {\r\n maxState = from;\r\n }\r\n if (to > maxState) {\r\n maxState = to;\r\n }\r\n }\r\n maxCharCode++;\r\n maxState++;\r\n let states = new Uint8Matrix(maxState, maxCharCode, 0 /* Invalid */);\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n states.set(from, chCode, to);\r\n }\r\n this._states = states;\r\n this._maxCharCode = maxCharCode;\r\n }\r\n nextState(currentState, chCode) {\r\n if (chCode < 0 || chCode >= this._maxCharCode) {\r\n return 0 /* Invalid */;\r\n }\r\n return this._states.get(currentState, chCode);\r\n }\r\n}\r\n// State machine for http:// or https:// or file://\r\nlet _stateMachine = null;\r\nfunction getStateMachine() {\r\n if (_stateMachine === null) {\r\n _stateMachine = new StateMachine([\r\n [1 /* Start */, 104 /* h */, 2 /* H */],\r\n [1 /* Start */, 72 /* H */, 2 /* H */],\r\n [1 /* Start */, 102 /* f */, 6 /* F */],\r\n [1 /* Start */, 70 /* F */, 6 /* F */],\r\n [2 /* H */, 116 /* t */, 3 /* HT */],\r\n [2 /* H */, 84 /* T */, 3 /* HT */],\r\n [3 /* HT */, 116 /* t */, 4 /* HTT */],\r\n [3 /* HT */, 84 /* T */, 4 /* HTT */],\r\n [4 /* HTT */, 112 /* p */, 5 /* HTTP */],\r\n [4 /* HTT */, 80 /* P */, 5 /* HTTP */],\r\n [5 /* HTTP */, 115 /* s */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 83 /* S */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 58 /* Colon */, 10 /* AfterColon */],\r\n [6 /* F */, 105 /* i */, 7 /* FI */],\r\n [6 /* F */, 73 /* I */, 7 /* FI */],\r\n [7 /* FI */, 108 /* l */, 8 /* FIL */],\r\n [7 /* FI */, 76 /* L */, 8 /* FIL */],\r\n [8 /* FIL */, 101 /* e */, 9 /* BeforeColon */],\r\n [8 /* FIL */, 69 /* E */, 9 /* BeforeColon */],\r\n [9 /* BeforeColon */, 58 /* Colon */, 10 /* AfterColon */],\r\n [10 /* AfterColon */, 47 /* Slash */, 11 /* AlmostThere */],\r\n [11 /* AlmostThere */, 47 /* Slash */, 12 /* End */],\r\n ]);\r\n }\r\n return _stateMachine;\r\n}\r\nlet _classifier = null;\r\nfunction getClassifier() {\r\n if (_classifier === null) {\r\n _classifier = new CharacterClassifier(0 /* None */);\r\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…';\r\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\r\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* ForceTermination */);\r\n }\r\n const CANNOT_END_WITH_CHARACTERS = '.,;';\r\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\r\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CannotEndIn */);\r\n }\r\n }\r\n return _classifier;\r\n}\r\nexport class LinkComputer {\r\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\r\n // Do not allow to end link in certain characters...\r\n let lastIncludedCharIndex = linkEndIndex - 1;\r\n do {\r\n const chCode = line.charCodeAt(lastIncludedCharIndex);\r\n const chClass = classifier.get(chCode);\r\n if (chClass !== 2 /* CannotEndIn */) {\r\n break;\r\n }\r\n lastIncludedCharIndex--;\r\n } while (lastIncludedCharIndex > linkBeginIndex);\r\n // Handle links enclosed in parens, square brackets and curlys.\r\n if (linkBeginIndex > 0) {\r\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\r\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\r\n if ((charCodeBeforeLink === 40 /* OpenParen */ && lastCharCodeInLink === 41 /* CloseParen */)\r\n || (charCodeBeforeLink === 91 /* OpenSquareBracket */ && lastCharCodeInLink === 93 /* CloseSquareBracket */)\r\n || (charCodeBeforeLink === 123 /* OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CloseCurlyBrace */)) {\r\n // Do not end in ) if ( is before the link start\r\n // Do not end in ] if [ is before the link start\r\n // Do not end in } if { is before the link start\r\n lastIncludedCharIndex--;\r\n }\r\n }\r\n return {\r\n range: {\r\n startLineNumber: lineNumber,\r\n startColumn: linkBeginIndex + 1,\r\n endLineNumber: lineNumber,\r\n endColumn: lastIncludedCharIndex + 2\r\n },\r\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\r\n };\r\n }\r\n static computeLinks(model, stateMachine = getStateMachine()) {\r\n const classifier = getClassifier();\r\n let result = [];\r\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\r\n const line = model.getLineContent(i);\r\n const len = line.length;\r\n let j = 0;\r\n let linkBeginIndex = 0;\r\n let linkBeginChCode = 0;\r\n let state = 1 /* Start */;\r\n let hasOpenParens = false;\r\n let hasOpenSquareBracket = false;\r\n let inSquareBrackets = false;\r\n let hasOpenCurlyBracket = false;\r\n while (j < len) {\r\n let resetStateMachine = false;\r\n const chCode = line.charCodeAt(j);\r\n if (state === 13 /* Accept */) {\r\n let chClass;\r\n switch (chCode) {\r\n case 40 /* OpenParen */:\r\n hasOpenParens = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 41 /* CloseParen */:\r\n chClass = (hasOpenParens ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 91 /* OpenSquareBracket */:\r\n inSquareBrackets = true;\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 93 /* CloseSquareBracket */:\r\n inSquareBrackets = false;\r\n chClass = (hasOpenSquareBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 123 /* OpenCurlyBrace */:\r\n hasOpenCurlyBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 125 /* CloseCurlyBrace */:\r\n chClass = (hasOpenCurlyBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link began with a different one */\r\n case 39 /* SingleQuote */:\r\n chClass = (linkBeginChCode === 34 /* DoubleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 34 /* DoubleQuote */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 96 /* BackTick */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 34 /* DoubleQuote */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 42 /* Asterisk */:\r\n // `*` terminates a link if the link began with `*`\r\n chClass = (linkBeginChCode === 42 /* Asterisk */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 124 /* Pipe */:\r\n // `|` terminates a link if the link began with `|`\r\n chClass = (linkBeginChCode === 124 /* Pipe */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 32 /* Space */:\r\n // ` ` allow space in between [ and ]\r\n chClass = (inSquareBrackets ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n default:\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\r\n resetStateMachine = true;\r\n }\r\n }\r\n else if (state === 12 /* End */) {\r\n let chClass;\r\n if (chCode === 91 /* OpenSquareBracket */) {\r\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n }\r\n else {\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n resetStateMachine = true;\r\n }\r\n else {\r\n state = 13 /* Accept */;\r\n }\r\n }\r\n else {\r\n state = stateMachine.nextState(state, chCode);\r\n if (state === 0 /* Invalid */) {\r\n resetStateMachine = true;\r\n }\r\n }\r\n if (resetStateMachine) {\r\n state = 1 /* Start */;\r\n hasOpenParens = false;\r\n hasOpenSquareBracket = false;\r\n hasOpenCurlyBracket = false;\r\n // Record where the link started\r\n linkBeginIndex = j + 1;\r\n linkBeginChCode = chCode;\r\n }\r\n j++;\r\n }\r\n if (state === 13 /* Accept */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Returns an array of all links contains in the provided\r\n * document. *Note* that this operation is computational\r\n * expensive and should not run in the UI thread.\r\n */\r\nexport function computeLinks(model) {\r\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\r\n // Unknown caller!\r\n return [];\r\n }\r\n return LinkComputer.computeLinks(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class BasicInplaceReplace {\r\n constructor() {\r\n this._defaultValueSet = [\r\n ['true', 'false'],\r\n ['True', 'False'],\r\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\r\n ['public', 'protected', 'private'],\r\n ];\r\n }\r\n navigateValueSet(range1, text1, range2, text2, up) {\r\n if (range1 && text1) {\r\n let result = this.doNavigateValueSet(text1, up);\r\n if (result) {\r\n return {\r\n range: range1,\r\n value: result\r\n };\r\n }\r\n }\r\n if (range2 && text2) {\r\n let result = this.doNavigateValueSet(text2, up);\r\n if (result) {\r\n return {\r\n range: range2,\r\n value: result\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n doNavigateValueSet(text, up) {\r\n let numberResult = this.numberReplace(text, up);\r\n if (numberResult !== null) {\r\n return numberResult;\r\n }\r\n return this.textReplace(text, up);\r\n }\r\n numberReplace(value, up) {\r\n let precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\r\n let n1 = Number(value);\r\n let n2 = parseFloat(value);\r\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\r\n if (n1 === 0 && !up) {\r\n return null; // don't do negative\r\n //\t\t\t} else if(n1 === 9 && up) {\r\n //\t\t\t\treturn null; // don't insert 10 into a number\r\n }\r\n else {\r\n n1 = Math.floor(n1 * precision);\r\n n1 += up ? precision : -precision;\r\n return String(n1 / precision);\r\n }\r\n }\r\n return null;\r\n }\r\n textReplace(value, up) {\r\n return this.valueSetsReplace(this._defaultValueSet, value, up);\r\n }\r\n valueSetsReplace(valueSets, value, up) {\r\n let result = null;\r\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\r\n result = this.valueSetReplace(valueSets[i], value, up);\r\n }\r\n return result;\r\n }\r\n valueSetReplace(valueSet, value, up) {\r\n let idx = valueSet.indexOf(value);\r\n if (idx >= 0) {\r\n idx += up ? +1 : -1;\r\n if (idx < 0) {\r\n idx = valueSet.length - 1;\r\n }\r\n else {\r\n idx %= valueSet.length;\r\n }\r\n return valueSet[idx];\r\n }\r\n return null;\r\n }\r\n}\r\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { mergeSort } from '../../../base/common/arrays.js';\r\nimport { stringDiff } from '../../../base/common/diff/diff.js';\r\nimport { globals } from '../../../base/common/platform.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { DiffComputer } from '../diff/diffComputer.js';\r\nimport { MirrorTextModel as BaseMirrorModel } from '../model/mirrorTextModel.js';\r\nimport { ensureValidWordDefinition, getWordAtText } from '../model/wordHelper.js';\r\nimport { computeLinks } from '../modes/linkComputer.js';\r\nimport { BasicInplaceReplace } from '../modes/supports/inplaceReplaceSupport.js';\r\nimport { createMonacoBaseAPI } from '../standalone/standaloneBase.js';\r\nimport * as types from '../../../base/common/types.js';\r\n/**\r\n * @internal\r\n */\r\nclass MirrorModel extends BaseMirrorModel {\r\n get uri() {\r\n return this._uri;\r\n }\r\n get version() {\r\n return this._versionId;\r\n }\r\n get eol() {\r\n return this._eol;\r\n }\r\n getValue() {\r\n return this.getText();\r\n }\r\n getLinesContent() {\r\n return this._lines.slice(0);\r\n }\r\n getLineCount() {\r\n return this._lines.length;\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines[lineNumber - 1];\r\n }\r\n getWordAtPosition(position, wordDefinition) {\r\n let wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\r\n if (wordAtText) {\r\n return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\r\n }\r\n return null;\r\n }\r\n words(wordDefinition) {\r\n const lines = this._lines;\r\n const wordenize = this._wordenize.bind(this);\r\n let lineNumber = 0;\r\n let lineText = '';\r\n let wordRangesIdx = 0;\r\n let wordRanges = [];\r\n return {\r\n *[Symbol.iterator]() {\r\n while (true) {\r\n if (wordRangesIdx < wordRanges.length) {\r\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\r\n wordRangesIdx += 1;\r\n yield value;\r\n }\r\n else {\r\n if (lineNumber < lines.length) {\r\n lineText = lines[lineNumber];\r\n wordRanges = wordenize(lineText, wordDefinition);\r\n wordRangesIdx = 0;\r\n lineNumber += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLineWords(lineNumber, wordDefinition) {\r\n let content = this._lines[lineNumber - 1];\r\n let ranges = this._wordenize(content, wordDefinition);\r\n let words = [];\r\n for (const range of ranges) {\r\n words.push({\r\n word: content.substring(range.start, range.end),\r\n startColumn: range.start + 1,\r\n endColumn: range.end + 1\r\n });\r\n }\r\n return words;\r\n }\r\n _wordenize(content, wordDefinition) {\r\n const result = [];\r\n let match;\r\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\r\n while (match = wordDefinition.exec(content)) {\r\n if (match[0].length === 0) {\r\n // it did match the empty string\r\n break;\r\n }\r\n result.push({ start: match.index, end: match.index + match[0].length });\r\n }\r\n return result;\r\n }\r\n getValueInRange(range) {\r\n range = this._validateRange(range);\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\r\n }\r\n let lineEnding = this._eol;\r\n let startLineIndex = range.startLineNumber - 1;\r\n let endLineIndex = range.endLineNumber - 1;\r\n let resultLines = [];\r\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\r\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\r\n resultLines.push(this._lines[i]);\r\n }\r\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\r\n return resultLines.join(lineEnding);\r\n }\r\n offsetAt(position) {\r\n position = this._validatePosition(position);\r\n this._ensureLineStarts();\r\n return this._lineStarts.getAccumulatedValue(position.lineNumber - 2) + (position.column - 1);\r\n }\r\n positionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n this._ensureLineStarts();\r\n let out = this._lineStarts.getIndexOf(offset);\r\n let lineLength = this._lines[out.index].length;\r\n // Ensure we return a valid position\r\n return {\r\n lineNumber: 1 + out.index,\r\n column: 1 + Math.min(out.remainder, lineLength)\r\n };\r\n }\r\n _validateRange(range) {\r\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\r\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\r\n if (start.lineNumber !== range.startLineNumber\r\n || start.column !== range.startColumn\r\n || end.lineNumber !== range.endLineNumber\r\n || end.column !== range.endColumn) {\r\n return {\r\n startLineNumber: start.lineNumber,\r\n startColumn: start.column,\r\n endLineNumber: end.lineNumber,\r\n endColumn: end.column\r\n };\r\n }\r\n return range;\r\n }\r\n _validatePosition(position) {\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('bad position');\r\n }\r\n let { lineNumber, column } = position;\r\n let hasChanged = false;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (lineNumber > this._lines.length) {\r\n lineNumber = this._lines.length;\r\n column = this._lines[lineNumber - 1].length + 1;\r\n hasChanged = true;\r\n }\r\n else {\r\n let maxCharacter = this._lines[lineNumber - 1].length + 1;\r\n if (column < 1) {\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (column > maxCharacter) {\r\n column = maxCharacter;\r\n hasChanged = true;\r\n }\r\n }\r\n if (!hasChanged) {\r\n return position;\r\n }\r\n else {\r\n return { lineNumber, column };\r\n }\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorSimpleWorker {\r\n constructor(host, foreignModuleFactory) {\r\n this._host = host;\r\n this._models = Object.create(null);\r\n this._foreignModuleFactory = foreignModuleFactory;\r\n this._foreignModule = null;\r\n }\r\n dispose() {\r\n this._models = Object.create(null);\r\n }\r\n _getModel(uri) {\r\n return this._models[uri];\r\n }\r\n _getModels() {\r\n let all = [];\r\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\r\n return all;\r\n }\r\n acceptNewModel(data) {\r\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\r\n }\r\n acceptModelChanged(strURL, e) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n let model = this._models[strURL];\r\n model.onEvents(e);\r\n }\r\n acceptRemovedModel(strURL) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n delete this._models[strURL];\r\n }\r\n // ---- BEGIN diff --------------------------------------------------------------------------\r\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const original = this._getModel(originalUrl);\r\n const modified = this._getModel(modifiedUrl);\r\n if (!original || !modified) {\r\n return null;\r\n }\r\n const originalLines = original.getLinesContent();\r\n const modifiedLines = modified.getLinesContent();\r\n const diffComputer = new DiffComputer(originalLines, modifiedLines, {\r\n shouldComputeCharChanges: true,\r\n shouldPostProcessCharChanges: true,\r\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\r\n shouldMakePrettyDiff: true,\r\n maxComputationTime: maxComputationTime\r\n });\r\n const diffResult = diffComputer.computeDiff();\r\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(original, modified));\r\n return {\r\n quitEarly: diffResult.quitEarly,\r\n identical: identical,\r\n changes: diffResult.changes\r\n };\r\n });\r\n }\r\n _modelsAreIdentical(original, modified) {\r\n const originalLineCount = original.getLineCount();\r\n const modifiedLineCount = modified.getLineCount();\r\n if (originalLineCount !== modifiedLineCount) {\r\n return false;\r\n }\r\n for (let line = 1; line <= originalLineCount; line++) {\r\n const originalLine = original.getLineContent(line);\r\n const modifiedLine = modified.getLineContent(line);\r\n if (originalLine !== modifiedLine) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n computeMoreMinimalEdits(modelUrl, edits) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return edits;\r\n }\r\n const result = [];\r\n let lastEol = undefined;\r\n edits = mergeSort(edits, (a, b) => {\r\n if (a.range && b.range) {\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n // eol only changes should go to the end\r\n let aRng = a.range ? 0 : 1;\r\n let bRng = b.range ? 0 : 1;\r\n return aRng - bRng;\r\n });\r\n for (let { range, text, eol } of edits) {\r\n if (typeof eol === 'number') {\r\n lastEol = eol;\r\n }\r\n if (Range.isEmpty(range) && !text) {\r\n // empty change\r\n continue;\r\n }\r\n const original = model.getValueInRange(range);\r\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\r\n if (original === text) {\r\n // noop\r\n continue;\r\n }\r\n // make sure diff won't take too long\r\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\r\n result.push({ range, text });\r\n continue;\r\n }\r\n // compute diff between original and edit.text\r\n const changes = stringDiff(original, text, false);\r\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\r\n for (const change of changes) {\r\n const start = model.positionAt(editOffset + change.originalStart);\r\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\r\n const newEdit = {\r\n text: text.substr(change.modifiedStart, change.modifiedLength),\r\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\r\n };\r\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\r\n result.push(newEdit);\r\n }\r\n }\r\n }\r\n if (typeof lastEol === 'number') {\r\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\r\n }\r\n return result;\r\n });\r\n }\r\n // ---- END minimal edits ---------------------------------------------------------------\r\n computeLinks(modelUrl) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n return computeLinks(model);\r\n });\r\n }\r\n textualSuggest(modelUrl, position, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n const words = [];\r\n const seen = new Set();\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const wordAt = model.getWordAtPosition(position, wordDefRegExp);\r\n if (wordAt) {\r\n seen.add(model.getValueInRange(wordAt));\r\n }\r\n for (let word of model.words(wordDefRegExp)) {\r\n if (seen.has(word)) {\r\n continue;\r\n }\r\n seen.add(word);\r\n if (!isNaN(Number(word))) {\r\n continue;\r\n }\r\n words.push(word);\r\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\r\n break;\r\n }\r\n }\r\n return words;\r\n });\r\n }\r\n // ---- END suggest --------------------------------------------------------------------------\r\n //#region -- word ranges --\r\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return Object.create(null);\r\n }\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const result = Object.create(null);\r\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\r\n let words = model.getLineWords(line, wordDefRegExp);\r\n for (const word of words) {\r\n if (!isNaN(Number(word.word))) {\r\n continue;\r\n }\r\n let array = result[word.word];\r\n if (!array) {\r\n array = [];\r\n result[word.word] = array;\r\n }\r\n array.push({\r\n startLineNumber: line,\r\n startColumn: word.startColumn,\r\n endLineNumber: line,\r\n endColumn: word.endColumn\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n //#endregion\r\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n if (range.startColumn === range.endColumn) {\r\n range = {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: range.startColumn,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: range.endColumn + 1\r\n };\r\n }\r\n let selectionText = model.getValueInRange(range);\r\n let wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\r\n if (!wordRange) {\r\n return null;\r\n }\r\n let word = model.getValueInRange(wordRange);\r\n let result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\r\n return result;\r\n });\r\n }\r\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\r\n loadForeignModule(moduleId, createData, foreignHostMethods) {\r\n const proxyMethodRequest = (method, args) => {\r\n return this._host.fhr(method, args);\r\n };\r\n const foreignHost = types.createProxyObject(foreignHostMethods, proxyMethodRequest);\r\n let ctx = {\r\n host: foreignHost,\r\n getMirrorModels: () => {\r\n return this._getModels();\r\n }\r\n };\r\n if (this._foreignModuleFactory) {\r\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\r\n // static foreing module\r\n return Promise.resolve(types.getAllMethodNames(this._foreignModule));\r\n }\r\n // ESM-comment-begin\r\n // \t\treturn new Promise<any>((resolve, reject) => {\r\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\r\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\r\n // \r\n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\r\n // \r\n // \t\t\t}, reject);\r\n // \t\t});\r\n // ESM-comment-end\r\n // ESM-uncomment-begin\r\n return Promise.reject(new Error(`Unexpected usage`));\r\n // ESM-uncomment-end\r\n }\r\n // foreign method request\r\n fmr(method, args) {\r\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n// ---- END diff --------------------------------------------------------------------------\r\n// ---- BEGIN minimal edits ---------------------------------------------------------------\r\nEditorSimpleWorker._diffLimit = 100000;\r\n// ---- BEGIN suggest --------------------------------------------------------------------------\r\nEditorSimpleWorker._suggestionsLimit = 10000;\r\n/**\r\n * Called on the worker side\r\n * @internal\r\n */\r\nexport function create(host) {\r\n return new EditorSimpleWorker(host, null);\r\n}\r\nif (typeof importScripts === 'function') {\r\n // Running in a web worker\r\n globals.monaco = createMonacoBaseAPI();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { Token } from '../core/token.js';\r\nimport * as standaloneEnums from './standaloneEnums.js';\r\nexport class KeyMod {\r\n static chord(firstPart, secondPart) {\r\n return KeyChord(firstPart, secondPart);\r\n }\r\n}\r\nKeyMod.CtrlCmd = 2048 /* CtrlCmd */;\r\nKeyMod.Shift = 1024 /* Shift */;\r\nKeyMod.Alt = 512 /* Alt */;\r\nKeyMod.WinCtrl = 256 /* WinCtrl */;\r\nexport function createMonacoBaseAPI() {\r\n return {\r\n editor: undefined,\r\n languages: undefined,\r\n CancellationTokenSource: CancellationTokenSource,\r\n Emitter: Emitter,\r\n KeyCode: standaloneEnums.KeyCode,\r\n KeyMod: KeyMod,\r\n Position: Position,\r\n Range: Range,\r\n Selection: Selection,\r\n SelectionDirection: standaloneEnums.SelectionDirection,\r\n MarkerSeverity: standaloneEnums.MarkerSeverity,\r\n MarkerTag: standaloneEnums.MarkerTag,\r\n Uri: URI,\r\n Token: Token\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.\r\nexport var AccessibilitySupport;\r\n(function (AccessibilitySupport) {\r\n /**\r\n * This should be the browser case where it is not known if a screen reader is attached or no.\r\n */\r\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\r\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\r\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\r\n})(AccessibilitySupport || (AccessibilitySupport = {}));\r\nexport var CompletionItemInsertTextRule;\r\n(function (CompletionItemInsertTextRule) {\r\n /**\r\n * Adjust whitespace/indentation of multiline insert texts to\r\n * match the current line indentation.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\r\n /**\r\n * `insertText` is a snippet.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\r\n})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\r\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\r\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\r\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\r\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\r\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\r\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\r\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\r\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\r\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\r\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\r\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\r\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\r\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\r\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\r\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\r\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\r\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\r\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\r\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\r\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\r\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\r\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\r\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\r\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\r\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\r\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\r\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 27] = \"Snippet\";\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * How a suggest provider was triggered.\r\n */\r\nexport var CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\r\n})(CompletionTriggerKind || (CompletionTriggerKind = {}));\r\n/**\r\n * A positioning preference for rendering content widgets.\r\n */\r\nexport var ContentWidgetPositionPreference;\r\n(function (ContentWidgetPositionPreference) {\r\n /**\r\n * Place the content widget exactly at a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\r\n /**\r\n * Place the content widget above a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\r\n /**\r\n * Place the content widget below a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\r\n})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\r\n/**\r\n * Describes the reason the cursor has changed its position.\r\n */\r\nexport var CursorChangeReason;\r\n(function (CursorChangeReason) {\r\n /**\r\n * Unknown or not set.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\r\n /**\r\n * A `model.setValue()` was called.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\r\n /**\r\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\r\n /**\r\n * There was an explicit user gesture.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\r\n /**\r\n * There was a Paste.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\r\n /**\r\n * There was an Undo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\r\n /**\r\n * There was a Redo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\r\n})(CursorChangeReason || (CursorChangeReason = {}));\r\n/**\r\n * The default end of line to use when instantiating models.\r\n */\r\nexport var DefaultEndOfLine;\r\n(function (DefaultEndOfLine) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\r\n})(DefaultEndOfLine || (DefaultEndOfLine = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * Configuration options for auto indentation in the editor\r\n */\r\nexport var EditorAutoIndentStrategy;\r\n(function (EditorAutoIndentStrategy) {\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\r\n})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\r\nexport var EditorOption;\r\n(function (EditorOption) {\r\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\r\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\r\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\r\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\r\n EditorOption[EditorOption[\"ariaLabel\"] = 4] = \"ariaLabel\";\r\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 5] = \"autoClosingBrackets\";\r\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 6] = \"autoClosingOvertype\";\r\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 7] = \"autoClosingQuotes\";\r\n EditorOption[EditorOption[\"autoIndent\"] = 8] = \"autoIndent\";\r\n EditorOption[EditorOption[\"automaticLayout\"] = 9] = \"automaticLayout\";\r\n EditorOption[EditorOption[\"autoSurround\"] = 10] = \"autoSurround\";\r\n EditorOption[EditorOption[\"codeLens\"] = 11] = \"codeLens\";\r\n EditorOption[EditorOption[\"colorDecorators\"] = 12] = \"colorDecorators\";\r\n EditorOption[EditorOption[\"columnSelection\"] = 13] = \"columnSelection\";\r\n EditorOption[EditorOption[\"comments\"] = 14] = \"comments\";\r\n EditorOption[EditorOption[\"contextmenu\"] = 15] = \"contextmenu\";\r\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 16] = \"copyWithSyntaxHighlighting\";\r\n EditorOption[EditorOption[\"cursorBlinking\"] = 17] = \"cursorBlinking\";\r\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 18] = \"cursorSmoothCaretAnimation\";\r\n EditorOption[EditorOption[\"cursorStyle\"] = 19] = \"cursorStyle\";\r\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 20] = \"cursorSurroundingLines\";\r\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 21] = \"cursorSurroundingLinesStyle\";\r\n EditorOption[EditorOption[\"cursorWidth\"] = 22] = \"cursorWidth\";\r\n EditorOption[EditorOption[\"disableLayerHinting\"] = 23] = \"disableLayerHinting\";\r\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 24] = \"disableMonospaceOptimizations\";\r\n EditorOption[EditorOption[\"dragAndDrop\"] = 25] = \"dragAndDrop\";\r\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 26] = \"emptySelectionClipboard\";\r\n EditorOption[EditorOption[\"extraEditorClassName\"] = 27] = \"extraEditorClassName\";\r\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 28] = \"fastScrollSensitivity\";\r\n EditorOption[EditorOption[\"find\"] = 29] = \"find\";\r\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 30] = \"fixedOverflowWidgets\";\r\n EditorOption[EditorOption[\"folding\"] = 31] = \"folding\";\r\n EditorOption[EditorOption[\"foldingStrategy\"] = 32] = \"foldingStrategy\";\r\n EditorOption[EditorOption[\"foldingHighlight\"] = 33] = \"foldingHighlight\";\r\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 34] = \"unfoldOnClickAfterEndOfLine\";\r\n EditorOption[EditorOption[\"fontFamily\"] = 35] = \"fontFamily\";\r\n EditorOption[EditorOption[\"fontInfo\"] = 36] = \"fontInfo\";\r\n EditorOption[EditorOption[\"fontLigatures\"] = 37] = \"fontLigatures\";\r\n EditorOption[EditorOption[\"fontSize\"] = 38] = \"fontSize\";\r\n EditorOption[EditorOption[\"fontWeight\"] = 39] = \"fontWeight\";\r\n EditorOption[EditorOption[\"formatOnPaste\"] = 40] = \"formatOnPaste\";\r\n EditorOption[EditorOption[\"formatOnType\"] = 41] = \"formatOnType\";\r\n EditorOption[EditorOption[\"glyphMargin\"] = 42] = \"glyphMargin\";\r\n EditorOption[EditorOption[\"gotoLocation\"] = 43] = \"gotoLocation\";\r\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 44] = \"hideCursorInOverviewRuler\";\r\n EditorOption[EditorOption[\"highlightActiveIndentGuide\"] = 45] = \"highlightActiveIndentGuide\";\r\n EditorOption[EditorOption[\"hover\"] = 46] = \"hover\";\r\n EditorOption[EditorOption[\"inDiffEditor\"] = 47] = \"inDiffEditor\";\r\n EditorOption[EditorOption[\"letterSpacing\"] = 48] = \"letterSpacing\";\r\n EditorOption[EditorOption[\"lightbulb\"] = 49] = \"lightbulb\";\r\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 50] = \"lineDecorationsWidth\";\r\n EditorOption[EditorOption[\"lineHeight\"] = 51] = \"lineHeight\";\r\n EditorOption[EditorOption[\"lineNumbers\"] = 52] = \"lineNumbers\";\r\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 53] = \"lineNumbersMinChars\";\r\n EditorOption[EditorOption[\"links\"] = 54] = \"links\";\r\n EditorOption[EditorOption[\"matchBrackets\"] = 55] = \"matchBrackets\";\r\n EditorOption[EditorOption[\"minimap\"] = 56] = \"minimap\";\r\n EditorOption[EditorOption[\"mouseStyle\"] = 57] = \"mouseStyle\";\r\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 58] = \"mouseWheelScrollSensitivity\";\r\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 59] = \"mouseWheelZoom\";\r\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 60] = \"multiCursorMergeOverlapping\";\r\n EditorOption[EditorOption[\"multiCursorModifier\"] = 61] = \"multiCursorModifier\";\r\n EditorOption[EditorOption[\"multiCursorPaste\"] = 62] = \"multiCursorPaste\";\r\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 63] = \"occurrencesHighlight\";\r\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 64] = \"overviewRulerBorder\";\r\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 65] = \"overviewRulerLanes\";\r\n EditorOption[EditorOption[\"padding\"] = 66] = \"padding\";\r\n EditorOption[EditorOption[\"parameterHints\"] = 67] = \"parameterHints\";\r\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 68] = \"peekWidgetDefaultFocus\";\r\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 69] = \"definitionLinkOpensInPeek\";\r\n EditorOption[EditorOption[\"quickSuggestions\"] = 70] = \"quickSuggestions\";\r\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 71] = \"quickSuggestionsDelay\";\r\n EditorOption[EditorOption[\"readOnly\"] = 72] = \"readOnly\";\r\n EditorOption[EditorOption[\"renameOnType\"] = 73] = \"renameOnType\";\r\n EditorOption[EditorOption[\"renderControlCharacters\"] = 74] = \"renderControlCharacters\";\r\n EditorOption[EditorOption[\"renderIndentGuides\"] = 75] = \"renderIndentGuides\";\r\n EditorOption[EditorOption[\"renderFinalNewline\"] = 76] = \"renderFinalNewline\";\r\n EditorOption[EditorOption[\"renderLineHighlight\"] = 77] = \"renderLineHighlight\";\r\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 78] = \"renderLineHighlightOnlyWhenFocus\";\r\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 79] = \"renderValidationDecorations\";\r\n EditorOption[EditorOption[\"renderWhitespace\"] = 80] = \"renderWhitespace\";\r\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 81] = \"revealHorizontalRightPadding\";\r\n EditorOption[EditorOption[\"roundedSelection\"] = 82] = \"roundedSelection\";\r\n EditorOption[EditorOption[\"rulers\"] = 83] = \"rulers\";\r\n EditorOption[EditorOption[\"scrollbar\"] = 84] = \"scrollbar\";\r\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 85] = \"scrollBeyondLastColumn\";\r\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 86] = \"scrollBeyondLastLine\";\r\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 87] = \"scrollPredominantAxis\";\r\n EditorOption[EditorOption[\"selectionClipboard\"] = 88] = \"selectionClipboard\";\r\n EditorOption[EditorOption[\"selectionHighlight\"] = 89] = \"selectionHighlight\";\r\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 90] = \"selectOnLineNumbers\";\r\n EditorOption[EditorOption[\"showFoldingControls\"] = 91] = \"showFoldingControls\";\r\n EditorOption[EditorOption[\"showUnused\"] = 92] = \"showUnused\";\r\n EditorOption[EditorOption[\"snippetSuggestions\"] = 93] = \"snippetSuggestions\";\r\n EditorOption[EditorOption[\"smoothScrolling\"] = 94] = \"smoothScrolling\";\r\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 95] = \"stopRenderingLineAfter\";\r\n EditorOption[EditorOption[\"suggest\"] = 96] = \"suggest\";\r\n EditorOption[EditorOption[\"suggestFontSize\"] = 97] = \"suggestFontSize\";\r\n EditorOption[EditorOption[\"suggestLineHeight\"] = 98] = \"suggestLineHeight\";\r\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 99] = \"suggestOnTriggerCharacters\";\r\n EditorOption[EditorOption[\"suggestSelection\"] = 100] = \"suggestSelection\";\r\n EditorOption[EditorOption[\"tabCompletion\"] = 101] = \"tabCompletion\";\r\n EditorOption[EditorOption[\"tabIndex\"] = 102] = \"tabIndex\";\r\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 103] = \"unusualLineTerminators\";\r\n EditorOption[EditorOption[\"useTabStops\"] = 104] = \"useTabStops\";\r\n EditorOption[EditorOption[\"wordSeparators\"] = 105] = \"wordSeparators\";\r\n EditorOption[EditorOption[\"wordWrap\"] = 106] = \"wordWrap\";\r\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 107] = \"wordWrapBreakAfterCharacters\";\r\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 108] = \"wordWrapBreakBeforeCharacters\";\r\n EditorOption[EditorOption[\"wordWrapColumn\"] = 109] = \"wordWrapColumn\";\r\n EditorOption[EditorOption[\"wordWrapMinified\"] = 110] = \"wordWrapMinified\";\r\n EditorOption[EditorOption[\"wrappingIndent\"] = 111] = \"wrappingIndent\";\r\n EditorOption[EditorOption[\"wrappingStrategy\"] = 112] = \"wrappingStrategy\";\r\n EditorOption[EditorOption[\"showDeprecated\"] = 113] = \"showDeprecated\";\r\n EditorOption[EditorOption[\"editorClassName\"] = 114] = \"editorClassName\";\r\n EditorOption[EditorOption[\"pixelRatio\"] = 115] = \"pixelRatio\";\r\n EditorOption[EditorOption[\"tabFocusMode\"] = 116] = \"tabFocusMode\";\r\n EditorOption[EditorOption[\"layoutInfo\"] = 117] = \"layoutInfo\";\r\n EditorOption[EditorOption[\"wrappingInfo\"] = 118] = \"wrappingInfo\";\r\n})(EditorOption || (EditorOption = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLinePreference;\r\n(function (EndOfLinePreference) {\r\n /**\r\n * Use the end of line character identified in the text buffer.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\r\n})(EndOfLinePreference || (EndOfLinePreference = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLineSequence;\r\n(function (EndOfLineSequence) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\r\n})(EndOfLineSequence || (EndOfLineSequence = {}));\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\n/**\r\n * Virtual Key Codes, the value does not hold any inherent meaning.\r\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\r\n * But these are \"more general\", as they should work across browsers & OS`s.\r\n */\r\nexport var KeyCode;\r\n(function (KeyCode) {\r\n /**\r\n * Placed first to cover the 0 value of the enum.\r\n */\r\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\r\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\r\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\r\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\r\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\r\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\r\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\r\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\r\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\r\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\r\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\r\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\r\n KeyCode[KeyCode[\"KEY_0\"] = 21] = \"KEY_0\";\r\n KeyCode[KeyCode[\"KEY_1\"] = 22] = \"KEY_1\";\r\n KeyCode[KeyCode[\"KEY_2\"] = 23] = \"KEY_2\";\r\n KeyCode[KeyCode[\"KEY_3\"] = 24] = \"KEY_3\";\r\n KeyCode[KeyCode[\"KEY_4\"] = 25] = \"KEY_4\";\r\n KeyCode[KeyCode[\"KEY_5\"] = 26] = \"KEY_5\";\r\n KeyCode[KeyCode[\"KEY_6\"] = 27] = \"KEY_6\";\r\n KeyCode[KeyCode[\"KEY_7\"] = 28] = \"KEY_7\";\r\n KeyCode[KeyCode[\"KEY_8\"] = 29] = \"KEY_8\";\r\n KeyCode[KeyCode[\"KEY_9\"] = 30] = \"KEY_9\";\r\n KeyCode[KeyCode[\"KEY_A\"] = 31] = \"KEY_A\";\r\n KeyCode[KeyCode[\"KEY_B\"] = 32] = \"KEY_B\";\r\n KeyCode[KeyCode[\"KEY_C\"] = 33] = \"KEY_C\";\r\n KeyCode[KeyCode[\"KEY_D\"] = 34] = \"KEY_D\";\r\n KeyCode[KeyCode[\"KEY_E\"] = 35] = \"KEY_E\";\r\n KeyCode[KeyCode[\"KEY_F\"] = 36] = \"KEY_F\";\r\n KeyCode[KeyCode[\"KEY_G\"] = 37] = \"KEY_G\";\r\n KeyCode[KeyCode[\"KEY_H\"] = 38] = \"KEY_H\";\r\n KeyCode[KeyCode[\"KEY_I\"] = 39] = \"KEY_I\";\r\n KeyCode[KeyCode[\"KEY_J\"] = 40] = \"KEY_J\";\r\n KeyCode[KeyCode[\"KEY_K\"] = 41] = \"KEY_K\";\r\n KeyCode[KeyCode[\"KEY_L\"] = 42] = \"KEY_L\";\r\n KeyCode[KeyCode[\"KEY_M\"] = 43] = \"KEY_M\";\r\n KeyCode[KeyCode[\"KEY_N\"] = 44] = \"KEY_N\";\r\n KeyCode[KeyCode[\"KEY_O\"] = 45] = \"KEY_O\";\r\n KeyCode[KeyCode[\"KEY_P\"] = 46] = \"KEY_P\";\r\n KeyCode[KeyCode[\"KEY_Q\"] = 47] = \"KEY_Q\";\r\n KeyCode[KeyCode[\"KEY_R\"] = 48] = \"KEY_R\";\r\n KeyCode[KeyCode[\"KEY_S\"] = 49] = \"KEY_S\";\r\n KeyCode[KeyCode[\"KEY_T\"] = 50] = \"KEY_T\";\r\n KeyCode[KeyCode[\"KEY_U\"] = 51] = \"KEY_U\";\r\n KeyCode[KeyCode[\"KEY_V\"] = 52] = \"KEY_V\";\r\n KeyCode[KeyCode[\"KEY_W\"] = 53] = \"KEY_W\";\r\n KeyCode[KeyCode[\"KEY_X\"] = 54] = \"KEY_X\";\r\n KeyCode[KeyCode[\"KEY_Y\"] = 55] = \"KEY_Y\";\r\n KeyCode[KeyCode[\"KEY_Z\"] = 56] = \"KEY_Z\";\r\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\r\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\r\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\r\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\r\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\r\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\r\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\r\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\r\n KeyCode[KeyCode[\"NumLock\"] = 78] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 79] = \"ScrollLock\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ';:' key\r\n */\r\n KeyCode[KeyCode[\"US_SEMICOLON\"] = 80] = \"US_SEMICOLON\";\r\n /**\r\n * For any country/region, the '+' key\r\n * For the US standard keyboard, the '=+' key\r\n */\r\n KeyCode[KeyCode[\"US_EQUAL\"] = 81] = \"US_EQUAL\";\r\n /**\r\n * For any country/region, the ',' key\r\n * For the US standard keyboard, the ',<' key\r\n */\r\n KeyCode[KeyCode[\"US_COMMA\"] = 82] = \"US_COMMA\";\r\n /**\r\n * For any country/region, the '-' key\r\n * For the US standard keyboard, the '-_' key\r\n */\r\n KeyCode[KeyCode[\"US_MINUS\"] = 83] = \"US_MINUS\";\r\n /**\r\n * For any country/region, the '.' key\r\n * For the US standard keyboard, the '.>' key\r\n */\r\n KeyCode[KeyCode[\"US_DOT\"] = 84] = \"US_DOT\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '/?' key\r\n */\r\n KeyCode[KeyCode[\"US_SLASH\"] = 85] = \"US_SLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '`~' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKTICK\"] = 86] = \"US_BACKTICK\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '[{' key\r\n */\r\n KeyCode[KeyCode[\"US_OPEN_SQUARE_BRACKET\"] = 87] = \"US_OPEN_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '\\|' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKSLASH\"] = 88] = \"US_BACKSLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ']}' key\r\n */\r\n KeyCode[KeyCode[\"US_CLOSE_SQUARE_BRACKET\"] = 89] = \"US_CLOSE_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ''\"' key\r\n */\r\n KeyCode[KeyCode[\"US_QUOTE\"] = 90] = \"US_QUOTE\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_8\"] = 91] = \"OEM_8\";\r\n /**\r\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_102\"] = 92] = \"OEM_102\";\r\n KeyCode[KeyCode[\"NUMPAD_0\"] = 93] = \"NUMPAD_0\";\r\n KeyCode[KeyCode[\"NUMPAD_1\"] = 94] = \"NUMPAD_1\";\r\n KeyCode[KeyCode[\"NUMPAD_2\"] = 95] = \"NUMPAD_2\";\r\n KeyCode[KeyCode[\"NUMPAD_3\"] = 96] = \"NUMPAD_3\";\r\n KeyCode[KeyCode[\"NUMPAD_4\"] = 97] = \"NUMPAD_4\";\r\n KeyCode[KeyCode[\"NUMPAD_5\"] = 98] = \"NUMPAD_5\";\r\n KeyCode[KeyCode[\"NUMPAD_6\"] = 99] = \"NUMPAD_6\";\r\n KeyCode[KeyCode[\"NUMPAD_7\"] = 100] = \"NUMPAD_7\";\r\n KeyCode[KeyCode[\"NUMPAD_8\"] = 101] = \"NUMPAD_8\";\r\n KeyCode[KeyCode[\"NUMPAD_9\"] = 102] = \"NUMPAD_9\";\r\n KeyCode[KeyCode[\"NUMPAD_MULTIPLY\"] = 103] = \"NUMPAD_MULTIPLY\";\r\n KeyCode[KeyCode[\"NUMPAD_ADD\"] = 104] = \"NUMPAD_ADD\";\r\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 105] = \"NUMPAD_SEPARATOR\";\r\n KeyCode[KeyCode[\"NUMPAD_SUBTRACT\"] = 106] = \"NUMPAD_SUBTRACT\";\r\n KeyCode[KeyCode[\"NUMPAD_DECIMAL\"] = 107] = \"NUMPAD_DECIMAL\";\r\n KeyCode[KeyCode[\"NUMPAD_DIVIDE\"] = 108] = \"NUMPAD_DIVIDE\";\r\n /**\r\n * Cover all key codes when IME is processing input.\r\n */\r\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 109] = \"KEY_IN_COMPOSITION\";\r\n KeyCode[KeyCode[\"ABNT_C1\"] = 110] = \"ABNT_C1\";\r\n KeyCode[KeyCode[\"ABNT_C2\"] = 111] = \"ABNT_C2\";\r\n /**\r\n * Placed last to cover the length of the enum.\r\n * Please do not depend on this value!\r\n */\r\n KeyCode[KeyCode[\"MAX_VALUE\"] = 112] = \"MAX_VALUE\";\r\n})(KeyCode || (KeyCode = {}));\r\nexport var MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nexport var MarkerTag;\r\n(function (MarkerTag) {\r\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\r\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\r\n})(MarkerTag || (MarkerTag = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\n/**\r\n * Type of hit element with the mouse in the editor.\r\n */\r\nexport var MouseTargetType;\r\n(function (MouseTargetType) {\r\n /**\r\n * Mouse is on top of an unknown element.\r\n */\r\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n /**\r\n * Mouse is on top of the textarea used for input.\r\n */\r\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\r\n /**\r\n * Mouse is on top of the glyph margin\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\r\n /**\r\n * Mouse is on top of the line numbers\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\r\n /**\r\n * Mouse is on top of the line decorations\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\r\n /**\r\n * Mouse is on top of the whitespace left in the gutter by a view zone.\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of text in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\r\n /**\r\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\r\n /**\r\n * Mouse is on top of a view zone in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of a content widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\r\n /**\r\n * Mouse is on top of the decorations overview ruler.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\r\n /**\r\n * Mouse is on top of a scrollbar.\r\n */\r\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\r\n /**\r\n * Mouse is on top of an overlay widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\r\n /**\r\n * Mouse is outside of the editor.\r\n */\r\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\r\n})(MouseTargetType || (MouseTargetType = {}));\r\n/**\r\n * A positioning preference for rendering overlay widgets.\r\n */\r\nexport var OverlayWidgetPositionPreference;\r\n(function (OverlayWidgetPositionPreference) {\r\n /**\r\n * Position the overlay widget in the top right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the bottom right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the top center\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\r\n})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\r\n/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\nexport var RenderLineNumbersType;\r\n(function (RenderLineNumbersType) {\r\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\r\n})(RenderLineNumbersType || (RenderLineNumbersType = {}));\r\nexport var RenderMinimap;\r\n(function (RenderMinimap) {\r\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\r\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\r\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\r\n})(RenderMinimap || (RenderMinimap = {}));\r\nexport var ScrollType;\r\n(function (ScrollType) {\r\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\r\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\r\n})(ScrollType || (ScrollType = {}));\r\nexport var ScrollbarVisibility;\r\n(function (ScrollbarVisibility) {\r\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\r\n})(ScrollbarVisibility || (ScrollbarVisibility = {}));\r\n/**\r\n * The direction of a selection.\r\n */\r\nexport var SelectionDirection;\r\n(function (SelectionDirection) {\r\n /**\r\n * The selection starts above where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\r\n /**\r\n * The selection starts below where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\r\n})(SelectionDirection || (SelectionDirection = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\r\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\r\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\r\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\r\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\r\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\r\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\r\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\r\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\r\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\r\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\r\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\r\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\r\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\r\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\r\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\r\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\r\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\r\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\r\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\r\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\r\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\r\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\r\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\r\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\r\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\r\n})(SymbolKind || (SymbolKind = {}));\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(SymbolTag || (SymbolTag = {}));\r\n/**\r\n * The kind of animation in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorBlinkingStyle;\r\n(function (TextEditorCursorBlinkingStyle) {\r\n /**\r\n * Hidden\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\r\n /**\r\n * Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\r\n /**\r\n * Blinking with smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\r\n /**\r\n * Blinking with prolonged filled state and smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\r\n /**\r\n * Expand collapse animation on the y axis\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\r\n /**\r\n * No-Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\r\n})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\n/**\r\n * Describes the behavior of decorations when typing/editing near their edges.\r\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\r\n */\r\nexport var TrackedRangeStickiness;\r\n(function (TrackedRangeStickiness) {\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\r\n})(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\r\n/**\r\n * Describes how to indent wrapped lines.\r\n */\r\nexport var WrappingIndent;\r\n(function (WrappingIndent) {\r\n /**\r\n * No indentation => wrapped lines begin at column 1.\r\n */\r\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\r\n /**\r\n * Same => wrapped lines get the same indentation as the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\r\n /**\r\n * Indent => wrapped lines get +1 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\r\n /**\r\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\r\n})(WrappingIndent || (WrappingIndent = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint32 } from '../../../base/common/uint.js';\r\nexport class PrefixSumIndexOfResult {\r\n constructor(index, remainder) {\r\n this.index = index;\r\n this.remainder = remainder;\r\n }\r\n}\r\nexport class PrefixSumComputer {\r\n constructor(values) {\r\n this.values = values;\r\n this.prefixSum = new Uint32Array(values.length);\r\n this.prefixSumValidIndex = new Int32Array(1);\r\n this.prefixSumValidIndex[0] = -1;\r\n }\r\n insertValues(insertIndex, insertValues) {\r\n insertIndex = toUint32(insertIndex);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n const insertValuesLen = insertValues.length;\r\n if (insertValuesLen === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\r\n this.values.set(oldValues.subarray(0, insertIndex), 0);\r\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\r\n this.values.set(insertValues, insertIndex);\r\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = insertIndex - 1;\r\n }\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n changeValue(index, value) {\r\n index = toUint32(index);\r\n value = toUint32(value);\r\n if (this.values[index] === value) {\r\n return false;\r\n }\r\n this.values[index] = value;\r\n if (index - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = index - 1;\r\n }\r\n return true;\r\n }\r\n removeValues(startIndex, cnt) {\r\n startIndex = toUint32(startIndex);\r\n cnt = toUint32(cnt);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n if (startIndex >= oldValues.length) {\r\n return false;\r\n }\r\n let maxCnt = oldValues.length - startIndex;\r\n if (cnt >= maxCnt) {\r\n cnt = maxCnt;\r\n }\r\n if (cnt === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length - cnt);\r\n this.values.set(oldValues.subarray(0, startIndex), 0);\r\n this.values.set(oldValues.subarray(startIndex + cnt), startIndex);\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (startIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = startIndex - 1;\r\n }\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n getTotalValue() {\r\n if (this.values.length === 0) {\r\n return 0;\r\n }\r\n return this._getAccumulatedValue(this.values.length - 1);\r\n }\r\n getAccumulatedValue(index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n index = toUint32(index);\r\n return this._getAccumulatedValue(index);\r\n }\r\n _getAccumulatedValue(index) {\r\n if (index <= this.prefixSumValidIndex[0]) {\r\n return this.prefixSum[index];\r\n }\r\n let startIndex = this.prefixSumValidIndex[0] + 1;\r\n if (startIndex === 0) {\r\n this.prefixSum[0] = this.values[0];\r\n startIndex++;\r\n }\r\n if (index >= this.values.length) {\r\n index = this.values.length - 1;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\r\n }\r\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\r\n return this.prefixSum[index];\r\n }\r\n getIndexOf(accumulatedValue) {\r\n accumulatedValue = Math.floor(accumulatedValue); //@perf\r\n // Compute all sums (to get a fully valid prefixSum)\r\n this.getTotalValue();\r\n let low = 0;\r\n let high = this.values.length - 1;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStop = this.prefixSum[mid];\r\n midStart = midStop - this.values[mid];\r\n if (accumulatedValue < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (accumulatedValue >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new PrefixSumIndexOfResult(mid, accumulatedValue - midStart);\r\n }\r\n}\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { SimpleWorkerServer } from '../base/common/worker/simpleWorker.js';\r\nimport { EditorSimpleWorker } from './common/services/editorSimpleWorker.js';\r\nlet initialized = false;\r\nexport function initialize(foreignModule) {\r\n if (initialized) {\r\n return;\r\n }\r\n initialized = true;\r\n const simpleWorker = new SimpleWorkerServer((msg) => {\r\n self.postMessage(msg);\r\n }, (host) => new EditorSimpleWorker(host, foreignModule));\r\n self.onmessage = (e) => {\r\n simpleWorker.onmessage(e.data);\r\n };\r\n}\r\nself.onmessage = (e) => {\r\n // Ignore first message in this case and initialize if not yet initialized\r\n if (!initialized) {\r\n initialize(null);\r\n }\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/dist/json.worker.js b/docs/dist/json.worker.js deleted file mode 100644 index 650fc3cf..00000000 --- a/docs/dist/json.worker.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={};e.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}();const t=new class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout((()=>{if(e.stack)throw new Error(e.message+"\n\n"+e.stack);throw e}),0)}}emit(e){this.listeners.forEach((t=>{t(e)}))}onUnexpectedError(e){this.unexpectedErrorHandler(e),this.emit(e)}onUnexpectedExternalError(e){this.unexpectedErrorHandler(e)}};function n(e){var n;(n=e)instanceof Error&&n.name===i&&n.message===i||t.onUnexpectedError(e)}function r(e){if(e instanceof Error){let{name:t,message:n}=e;return{$isError:!0,name:t,message:n,stack:e.stacktrace||e.stack}}return e}const i="Canceled";var o;function s(e){}!function(e){e.is=function(e){return e&&"object"==typeof e&&"function"==typeof e[Symbol.iterator]};const t=Object.freeze([]);e.empty=function(){return t},e.single=function*(e){yield e},e.from=function(e){return e||t},e.first=function(e){return e[Symbol.iterator]().next().value},e.some=function(e,t){for(const n of e)if(t(n))return!0;return!1},e.filter=function*(e,t){for(const n of e)t(n)&&(yield n)},e.map=function*(e,t){for(const n of e)yield t(n)},e.concat=function*(...e){for(const t of e)for(const e of t)yield e},e.consume=function(t,n=Number.POSITIVE_INFINITY){const r=[];if(0===n)return[r,t];const i=t[Symbol.iterator]();for(let t=0;t<n;t++){const t=i.next();if(t.done)return[r,e.empty()];r.push(t.value)}return[r,{[Symbol.iterator]:()=>i}]}}(o||(o={}));class a extends Error{constructor(e){super(`Encounter errors while disposing of store. Errors: [${e.join(", ")}]`),this.errors=e}}function u(e){if(o.is(e)){let t=[];for(const n of e)if(n)try{n.dispose()}catch(e){t.push(e)}if(1===t.length)throw t[0];if(t.length>1)throw new a(t);return Array.isArray(e)?[]:e}if(e)return e.dispose(),e}class l{constructor(){this._toDispose=new Set,this._isDisposed=!1}dispose(){this._isDisposed||(this._isDisposed=!0,this.clear())}clear(){try{u(this._toDispose.values())}finally{this._toDispose.clear()}}add(e){if(!e)return e;if(e===this)throw new Error("Cannot register a disposable on itself!");return this._isDisposed?l.DISABLE_DISPOSED_WARNING||console.warn(new Error("Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!").stack):this._toDispose.add(e),e}}l.DISABLE_DISPOSED_WARNING=!1;class c{constructor(){this._store=new l}dispose(){this._store.dispose()}_register(e){if(e===this)throw new Error("Cannot register a disposable on itself!");return this._store.add(e)}}c.None=Object.freeze({dispose(){}});const h="en";let f,d,m,g=!1,p=!1,v=!1,y=!1,b=!1,C=!1,_=null;const S="undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.electron&&"renderer"===process.type;if("object"!=typeof navigator||S){if("object"==typeof process){g="win32"===process.platform,p="darwin"===process.platform,v="linux"===process.platform,f=h,_=h;const e=process.env.VSCODE_NLS_CONFIG;if(e)try{const t=JSON.parse(e),n=t.availableLanguages["*"];f=t.locale,_=n||h,d=t._translationsConfigFile}catch(e){}y=!0}}else m=navigator.userAgent,g=m.indexOf("Windows")>=0,p=m.indexOf("Macintosh")>=0,(m.indexOf("Macintosh")>=0||m.indexOf("iPad")>=0||m.indexOf("iPhone")>=0)&&!!navigator.maxTouchPoints&&navigator.maxTouchPoints>0,v=m.indexOf("Linux")>=0,!0,f=navigator.language,_=f;let E=0;p?E=1:g?E=3:v&&(E=2);const A=g,x=p,N="object"==typeof self?self:"object"==typeof e.g?e.g:{},L=function(){if(N.setImmediate)return N.setImmediate.bind(N);if("function"==typeof N.postMessage&&!N.importScripts){let e=[];N.addEventListener("message",(t=>{if(t.data&&t.data.vscodeSetImmediateId)for(let n=0,r=e.length;n<r;n++){const r=e[n];if(r.id===t.data.vscodeSetImmediateId)return e.splice(n,1),void r.callback()}}));let t=0;return n=>{const r=++t;e.push({id:r,callback:n}),N.postMessage({vscodeSetImmediateId:r},"*")}}if("undefined"!=typeof process&&"function"==typeof process.nextTick)return process.nextTick.bind(process);const e=Promise.resolve();return t=>e.then(t)}();function w(e){const t=[];for(const n of function(e){let t=[],n=Object.getPrototypeOf(e);for(;Object.prototype!==n;)t=t.concat(Object.getOwnPropertyNames(n)),n=Object.getPrototypeOf(n);return t}(e))"function"==typeof e[n]&&t.push(n);return t}function T(e,t){const n=e=>function(){const n=Array.prototype.slice.call(arguments,0);return t(e,n)};let r={};for(const t of e)r[t]=n(t);return r}class k{constructor(e){this._workerId=-1,this._handler=e,this._lastSentReq=0,this._pendingReplies=Object.create(null)}setWorkerId(e){this._workerId=e}sendMessage(e,t){let n=String(++this._lastSentReq);return new Promise(((r,i)=>{this._pendingReplies[n]={resolve:r,reject:i},this._send({vsWorker:this._workerId,req:n,method:e,args:t})}))}handleMessage(e){e&&e.vsWorker&&(-1!==this._workerId&&e.vsWorker!==this._workerId||this._handleMessage(e))}_handleMessage(e){if(e.seq){let t=e;if(!this._pendingReplies[t.seq])return void console.warn("Got reply to unknown seq");let n=this._pendingReplies[t.seq];if(delete this._pendingReplies[t.seq],t.err){let e=t.err;return t.err.$isError&&(e=new Error,e.name=t.err.name,e.message=t.err.message,e.stack=t.err.stack),void n.reject(e)}return void n.resolve(t.res)}let t=e,n=t.req;this._handler.handleMessage(t.method,t.args).then((e=>{this._send({vsWorker:this._workerId,seq:n,res:e,err:void 0})}),(e=>{e.detail instanceof Error&&(e.detail=r(e.detail)),this._send({vsWorker:this._workerId,seq:n,res:void 0,err:r(e)})}))}_send(e){let t=[];if(e.req){const n=e;for(let e=0;e<n.args.length;e++)n.args[e]instanceof ArrayBuffer&&t.push(n.args[e])}else{const n=e;n.res instanceof ArrayBuffer&&t.push(n.res)}this._handler.sendMessage(e,t)}}class O{constructor(e,t){this._requestHandlerFactory=t,this._requestHandler=null,this._protocol=new k({sendMessage:(t,n)=>{e(t,n)},handleMessage:(e,t)=>this._handleMessage(e,t)})}onmessage(e){this._protocol.handleMessage(e)}_handleMessage(e,t){if("$initialize"===e)return this.initialize(t[0],t[1],t[2],t[3]);if(!this._requestHandler||"function"!=typeof this._requestHandler[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._requestHandler[e].apply(this._requestHandler,t))}catch(e){return Promise.reject(e)}}initialize(e,t,n,r){this._protocol.setWorkerId(e);const i=T(r,((e,t)=>this._protocol.sendMessage(e,t)));return this._requestHandlerFactory?(this._requestHandler=this._requestHandlerFactory(i),Promise.resolve(w(this._requestHandler))):(t&&(void 0!==t.baseUrl&&delete t.baseUrl,void 0!==t.paths&&void 0!==t.paths.vs&&delete t.paths.vs,t.catchError=!0,self.require.config(t)),new Promise(((e,t)=>{self.require([n],(n=>{this._requestHandler=n.create(i),this._requestHandler?e(w(this._requestHandler)):t(new Error("No RequestHandler!"))}),t)})))}}function I(e,t){return M(e,t,0,e.length-1,[]),e}function M(e,t,n,r,i){if(r<=n)return;const o=n+(r-n)/2|0;M(e,t,n,o,i),M(e,t,o+1,r,i),t(e[o],e[o+1])<=0||function(e,t,n,r,i,o){let s=n,a=r+1;for(let t=n;t<=i;t++)o[t]=e[t];for(let u=n;u<=i;u++)s>r?e[u]=o[a++]:a>i?e[u]=o[s++]:t(o[a],o[s])<0?e[u]=o[a++]:e[u]=o[s++]}(e,t,n,o,r,i)}class P{constructor(e,t,n,r){this.originalStart=e,this.originalLength=t,this.modifiedStart=n,this.modifiedLength=r}getOriginalEnd(){return this.originalStart+this.originalLength}getModifiedEnd(){return this.modifiedStart+this.modifiedLength}}function R(e){return 55296<=e&&e<=56319}function D(e){return 56320<=e&&e<=57343}String.fromCharCode(65279);class F{constructor(){this._data=JSON.parse("[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]")}static getInstance(){return F._INSTANCE||(F._INSTANCE=new F),F._INSTANCE}getGraphemeBreakType(e){if(e<32)return 10===e?3:13===e?2:4;if(e<127)return 0;const t=this._data,n=t.length/3;let r=1;for(;r<=n;)if(e<t[3*r])r*=2;else{if(!(e>t[3*r+1]))return t[3*r+2];r=2*r+1}return 0}}function j(e,t){return(t<<5)-t+e|0}function U(e,t){t=j(149417,t);for(let n=0,r=e.length;n<r;n++)t=j(e.charCodeAt(n),t);return t}function V(e,t,n=32){const r=n-t;return(e<<t|(~((1<<r)-1)&e)>>>r)>>>0}function $(e,t=0,n=e.byteLength,r=0){for(let i=0;i<n;i++)e[t+i]=r}function W(e,t=32){return function(e,t,n="0"){for(;e.length<t;)e=n+e;return e}((e>>>0).toString(16),t/4)}F._INSTANCE=null;class q{constructor(){this._h0=1732584193,this._h1=4023233417,this._h2=2562383102,this._h3=271733878,this._h4=3285377520,this._buff=new Uint8Array(67),this._buffDV=new DataView(this._buff.buffer),this._buffLen=0,this._totalLen=0,this._leftoverHighSurrogate=0,this._finished=!1}update(e){const t=e.length;if(0===t)return;const n=this._buff;let r,i,o=this._buffLen,s=this._leftoverHighSurrogate;for(0!==s?(r=s,i=-1,s=0):(r=e.charCodeAt(0),i=0);;){let a=r;if(R(r)){if(!(i+1<t)){s=r;break}{const t=e.charCodeAt(i+1);D(t)?(i++,a=t-56320+(r-55296<<10)+65536):a=65533}}else D(r)&&(a=65533);if(o=this._push(n,o,a),i++,!(i<t))break;r=e.charCodeAt(i)}this._buffLen=o,this._leftoverHighSurrogate=s}_push(e,t,n){return n<128?e[t++]=n:n<2048?(e[t++]=192|(1984&n)>>>6,e[t++]=128|(63&n)>>>0):n<65536?(e[t++]=224|(61440&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0):(e[t++]=240|(1835008&n)>>>18,e[t++]=128|(258048&n)>>>12,e[t++]=128|(4032&n)>>>6,e[t++]=128|(63&n)>>>0),t>=64&&(this._step(),t-=64,this._totalLen+=64,e[0]=e[64],e[1]=e[65],e[2]=e[66]),t}digest(){return this._finished||(this._finished=!0,this._leftoverHighSurrogate&&(this._leftoverHighSurrogate=0,this._buffLen=this._push(this._buff,this._buffLen,65533)),this._totalLen+=this._buffLen,this._wrapUp()),W(this._h0)+W(this._h1)+W(this._h2)+W(this._h3)+W(this._h4)}_wrapUp(){this._buff[this._buffLen++]=128,$(this._buff,this._buffLen),this._buffLen>56&&(this._step(),$(this._buff));const e=8*this._totalLen;this._buffDV.setUint32(56,Math.floor(e/4294967296),!1),this._buffDV.setUint32(60,e%4294967296,!1),this._step()}_step(){const e=q._bigBlock32,t=this._buffDV;for(let n=0;n<64;n+=4)e.setUint32(n,t.getUint32(n,!1),!1);for(let t=64;t<320;t+=4)e.setUint32(t,V(e.getUint32(t-12,!1)^e.getUint32(t-32,!1)^e.getUint32(t-56,!1)^e.getUint32(t-64,!1),1),!1);let n,r,i,o=this._h0,s=this._h1,a=this._h2,u=this._h3,l=this._h4;for(let t=0;t<80;t++)t<20?(n=s&a|~s&u,r=1518500249):t<40?(n=s^a^u,r=1859775393):t<60?(n=s&a|s&u|a&u,r=2400959708):(n=s^a^u,r=3395469782),i=V(o,5)+n+l+r+e.getUint32(4*t,!1)&4294967295,l=u,u=a,a=V(s,30),s=o,o=i;this._h0=this._h0+o&4294967295,this._h1=this._h1+s&4294967295,this._h2=this._h2+a&4294967295,this._h3=this._h3+u&4294967295,this._h4=this._h4+l&4294967295}}q._bigBlock32=new DataView(new ArrayBuffer(320));class K{constructor(e){this.source=e}getElements(){const e=this.source,t=new Int32Array(e.length);for(let n=0,r=e.length;n<r;n++)t[n]=e.charCodeAt(n);return t}}function B(e,t,n){return new z(new K(e),new K(t)).ComputeDiff(n).changes}class H{static Assert(e,t){if(!e)throw new Error(t)}}class Y{static Copy(e,t,n,r,i){for(let o=0;o<i;o++)n[r+o]=e[t+o]}static Copy2(e,t,n,r,i){for(let o=0;o<i;o++)n[r+o]=e[t+o]}}class G{constructor(){this.m_changes=[],this.m_originalStart=1073741824,this.m_modifiedStart=1073741824,this.m_originalCount=0,this.m_modifiedCount=0}MarkNextChange(){(this.m_originalCount>0||this.m_modifiedCount>0)&&this.m_changes.push(new P(this.m_originalStart,this.m_originalCount,this.m_modifiedStart,this.m_modifiedCount)),this.m_originalCount=0,this.m_modifiedCount=0,this.m_originalStart=1073741824,this.m_modifiedStart=1073741824}AddOriginalElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_originalCount++}AddModifiedElement(e,t){this.m_originalStart=Math.min(this.m_originalStart,e),this.m_modifiedStart=Math.min(this.m_modifiedStart,t),this.m_modifiedCount++}getChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes}getReverseChanges(){return(this.m_originalCount>0||this.m_modifiedCount>0)&&this.MarkNextChange(),this.m_changes.reverse(),this.m_changes}}class z{constructor(e,t,n=null){this.ContinueProcessingPredicate=n;const[r,i,o]=z._getElements(e),[s,a,u]=z._getElements(t);this._hasStrings=o&&u,this._originalStringElements=r,this._originalElementsOrHash=i,this._modifiedStringElements=s,this._modifiedElementsOrHash=a,this.m_forwardHistory=[],this.m_reverseHistory=[]}static _isStringArray(e){return e.length>0&&"string"==typeof e[0]}static _getElements(e){const t=e.getElements();if(z._isStringArray(t)){const e=new Int32Array(t.length);for(let n=0,r=t.length;n<r;n++)e[n]=U(t[n],0);return[t,e,!0]}return t instanceof Int32Array?[[],t,!1]:[[],new Int32Array(t),!1]}ElementsAreEqual(e,t){return this._originalElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._modifiedStringElements[t])}OriginalElementsAreEqual(e,t){return this._originalElementsOrHash[e]===this._originalElementsOrHash[t]&&(!this._hasStrings||this._originalStringElements[e]===this._originalStringElements[t])}ModifiedElementsAreEqual(e,t){return this._modifiedElementsOrHash[e]===this._modifiedElementsOrHash[t]&&(!this._hasStrings||this._modifiedStringElements[e]===this._modifiedStringElements[t])}ComputeDiff(e){return this._ComputeDiff(0,this._originalElementsOrHash.length-1,0,this._modifiedElementsOrHash.length-1,e)}_ComputeDiff(e,t,n,r,i){const o=[!1];let s=this.ComputeDiffRecursive(e,t,n,r,o);return i&&(s=this.PrettifyChanges(s)),{quitEarly:o[0],changes:s}}ComputeDiffRecursive(e,t,n,r,i){for(i[0]=!1;e<=t&&n<=r&&this.ElementsAreEqual(e,n);)e++,n++;for(;t>=e&&r>=n&&this.ElementsAreEqual(t,r);)t--,r--;if(e>t||n>r){let i;return n<=r?(H.Assert(e===t+1,"originalStart should only be one more than originalEnd"),i=[new P(e,0,n,r-n+1)]):e<=t?(H.Assert(n===r+1,"modifiedStart should only be one more than modifiedEnd"),i=[new P(e,t-e+1,n,0)]):(H.Assert(e===t+1,"originalStart should only be one more than originalEnd"),H.Assert(n===r+1,"modifiedStart should only be one more than modifiedEnd"),i=[]),i}const o=[0],s=[0],a=this.ComputeRecursionPoint(e,t,n,r,o,s,i),u=o[0],l=s[0];if(null!==a)return a;if(!i[0]){const o=this.ComputeDiffRecursive(e,u,n,l,i);let s=[];return s=i[0]?[new P(u+1,t-(u+1)+1,l+1,r-(l+1)+1)]:this.ComputeDiffRecursive(u+1,t,l+1,r,i),this.ConcatenateChanges(o,s)}return[new P(e,t-e+1,n,r-n+1)]}WALKTRACE(e,t,n,r,i,o,s,a,u,l,c,h,f,d,m,g,p,v){let y=null,b=null,C=new G,_=t,S=n,E=f[0]-g[0]-r,A=-1073741824,x=this.m_forwardHistory.length-1;do{const t=E+e;t===_||t<S&&u[t-1]<u[t+1]?(d=(c=u[t+1])-E-r,c<A&&C.MarkNextChange(),A=c,C.AddModifiedElement(c+1,d),E=t+1-e):(d=(c=u[t-1]+1)-E-r,c<A&&C.MarkNextChange(),A=c-1,C.AddOriginalElement(c,d+1),E=t-1-e),x>=0&&(e=(u=this.m_forwardHistory[x])[0],_=1,S=u.length-1)}while(--x>=-1);if(y=C.getReverseChanges(),v[0]){let e=f[0]+1,t=g[0]+1;if(null!==y&&y.length>0){const n=y[y.length-1];e=Math.max(e,n.getOriginalEnd()),t=Math.max(t,n.getModifiedEnd())}b=[new P(e,h-e+1,t,m-t+1)]}else{C=new G,_=o,S=s,E=f[0]-g[0]-a,A=1073741824,x=p?this.m_reverseHistory.length-1:this.m_reverseHistory.length-2;do{const e=E+i;e===_||e<S&&l[e-1]>=l[e+1]?(d=(c=l[e+1]-1)-E-a,c>A&&C.MarkNextChange(),A=c+1,C.AddOriginalElement(c+1,d+1),E=e+1-i):(d=(c=l[e-1])-E-a,c>A&&C.MarkNextChange(),A=c,C.AddModifiedElement(c+1,d+1),E=e-1-i),x>=0&&(i=(l=this.m_reverseHistory[x])[0],_=1,S=l.length-1)}while(--x>=-1);b=C.getChanges()}return this.ConcatenateChanges(y,b)}ComputeRecursionPoint(e,t,n,r,i,o,s){let a=0,u=0,l=0,c=0,h=0,f=0;e--,n--,i[0]=0,o[0]=0,this.m_forwardHistory=[],this.m_reverseHistory=[];const d=t-e+(r-n),m=d+1,g=new Int32Array(m),p=new Int32Array(m),v=r-n,y=t-e,b=e-n,C=t-r,_=(y-v)%2==0;g[v]=e,p[y]=t,s[0]=!1;for(let S=1;S<=d/2+1;S++){let d=0,E=0;l=this.ClipDiagonalBound(v-S,S,v,m),c=this.ClipDiagonalBound(v+S,S,v,m);for(let e=l;e<=c;e+=2){a=e===l||e<c&&g[e-1]<g[e+1]?g[e+1]:g[e-1]+1,u=a-(e-v)-b;const n=a;for(;a<t&&u<r&&this.ElementsAreEqual(a+1,u+1);)a++,u++;if(g[e]=a,a+u>d+E&&(d=a,E=u),!_&&Math.abs(e-y)<=S-1&&a>=p[e])return i[0]=a,o[0]=u,n<=p[e]&&S<=1448?this.WALKTRACE(v,l,c,b,y,h,f,C,g,p,a,t,i,u,r,o,_,s):null}const A=(d-e+(E-n)-S)/2;if(null!==this.ContinueProcessingPredicate&&!this.ContinueProcessingPredicate(d,A))return s[0]=!0,i[0]=d,o[0]=E,A>0&&S<=1448?this.WALKTRACE(v,l,c,b,y,h,f,C,g,p,a,t,i,u,r,o,_,s):(e++,n++,[new P(e,t-e+1,n,r-n+1)]);h=this.ClipDiagonalBound(y-S,S,y,m),f=this.ClipDiagonalBound(y+S,S,y,m);for(let d=h;d<=f;d+=2){a=d===h||d<f&&p[d-1]>=p[d+1]?p[d+1]-1:p[d-1],u=a-(d-y)-C;const m=a;for(;a>e&&u>n&&this.ElementsAreEqual(a,u);)a--,u--;if(p[d]=a,_&&Math.abs(d-v)<=S&&a<=g[d])return i[0]=a,o[0]=u,m>=g[d]&&S<=1448?this.WALKTRACE(v,l,c,b,y,h,f,C,g,p,a,t,i,u,r,o,_,s):null}if(S<=1447){let e=new Int32Array(c-l+2);e[0]=v-l+1,Y.Copy2(g,l,e,1,c-l+1),this.m_forwardHistory.push(e),e=new Int32Array(f-h+2),e[0]=y-h+1,Y.Copy2(p,h,e,1,f-h+1),this.m_reverseHistory.push(e)}}return this.WALKTRACE(v,l,c,b,y,h,f,C,g,p,a,t,i,u,r,o,_,s)}PrettifyChanges(e){for(let t=0;t<e.length;t++){const n=e[t],r=t<e.length-1?e[t+1].originalStart:this._originalElementsOrHash.length,i=t<e.length-1?e[t+1].modifiedStart:this._modifiedElementsOrHash.length,o=n.originalLength>0,s=n.modifiedLength>0;for(;n.originalStart+n.originalLength<r&&n.modifiedStart+n.modifiedLength<i&&(!o||this.OriginalElementsAreEqual(n.originalStart,n.originalStart+n.originalLength))&&(!s||this.ModifiedElementsAreEqual(n.modifiedStart,n.modifiedStart+n.modifiedLength));)n.originalStart++,n.modifiedStart++;let a=[null];t<e.length-1&&this.ChangesOverlap(e[t],e[t+1],a)&&(e[t]=a[0],e.splice(t+1,1),t--)}for(let t=e.length-1;t>=0;t--){const n=e[t];let r=0,i=0;if(t>0){const n=e[t-1];n.originalLength>0&&(r=n.originalStart+n.originalLength),n.modifiedLength>0&&(i=n.modifiedStart+n.modifiedLength)}const o=n.originalLength>0,s=n.modifiedLength>0;let a=0,u=this._boundaryScore(n.originalStart,n.originalLength,n.modifiedStart,n.modifiedLength);for(let e=1;;e++){const t=n.originalStart-e,l=n.modifiedStart-e;if(t<r||l<i)break;if(o&&!this.OriginalElementsAreEqual(t,t+n.originalLength))break;if(s&&!this.ModifiedElementsAreEqual(l,l+n.modifiedLength))break;const c=this._boundaryScore(t,n.originalLength,l,n.modifiedLength);c>u&&(u=c,a=e)}n.originalStart-=a,n.modifiedStart-=a}return e}_OriginalIsBoundary(e){return e<=0||e>=this._originalElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._originalStringElements[e])}_OriginalRegionIsBoundary(e,t){if(this._OriginalIsBoundary(e)||this._OriginalIsBoundary(e-1))return!0;if(t>0){const n=e+t;if(this._OriginalIsBoundary(n-1)||this._OriginalIsBoundary(n))return!0}return!1}_ModifiedIsBoundary(e){return e<=0||e>=this._modifiedElementsOrHash.length-1||this._hasStrings&&/^\s*$/.test(this._modifiedStringElements[e])}_ModifiedRegionIsBoundary(e,t){if(this._ModifiedIsBoundary(e)||this._ModifiedIsBoundary(e-1))return!0;if(t>0){const n=e+t;if(this._ModifiedIsBoundary(n-1)||this._ModifiedIsBoundary(n))return!0}return!1}_boundaryScore(e,t,n,r){return(this._OriginalRegionIsBoundary(e,t)?1:0)+(this._ModifiedRegionIsBoundary(n,r)?1:0)}ConcatenateChanges(e,t){let n=[];if(0===e.length||0===t.length)return t.length>0?t:e;if(this.ChangesOverlap(e[e.length-1],t[0],n)){const r=new Array(e.length+t.length-1);return Y.Copy(e,0,r,0,e.length-1),r[e.length-1]=n[0],Y.Copy(t,1,r,e.length,t.length-1),r}{const n=new Array(e.length+t.length);return Y.Copy(e,0,n,0,e.length),Y.Copy(t,0,n,e.length,t.length),n}}ChangesOverlap(e,t,n){if(H.Assert(e.originalStart<=t.originalStart,"Left change is not less than or equal to right change"),H.Assert(e.modifiedStart<=t.modifiedStart,"Left change is not less than or equal to right change"),e.originalStart+e.originalLength>=t.originalStart||e.modifiedStart+e.modifiedLength>=t.modifiedStart){const r=e.originalStart;let i=e.originalLength;const o=e.modifiedStart;let s=e.modifiedLength;return e.originalStart+e.originalLength>=t.originalStart&&(i=t.originalStart+t.originalLength-e.originalStart),e.modifiedStart+e.modifiedLength>=t.modifiedStart&&(s=t.modifiedStart+t.modifiedLength-e.modifiedStart),n[0]=new P(r,i,o,s),!0}return n[0]=null,!1}ClipDiagonalBound(e,t,n,r){if(e>=0&&e<r)return e;const i=t%2==0;return e<0?i===(n%2==0)?0:1:i===((r-n-1)%2==0)?r-1:r-2}}const J="undefined"==typeof process?{cwd:()=>"/",env:Object.create(null),get platform(){return A?"win32":x?"darwin":"linux"},nextTick:e=>L(e)}:process,Q=J.cwd,Z=J.env,X=J.platform,ee=46,te=47,ne=92,re=58;class ie extends Error{constructor(e,t,n){let r;"string"==typeof t&&0===t.indexOf("not ")?(r="must not be",t=t.replace(/^not /,"")):r="must be";const i=-1!==e.indexOf(".")?"property":"argument";let o=`The "${e}" ${i} ${r} of type ${t}`;o+=". Received type "+typeof n,super(o),this.code="ERR_INVALID_ARG_TYPE"}}function oe(e,t){if("string"!=typeof e)throw new ie(t,"string",e)}function se(e){return e===te||e===ne}function ae(e){return e===te}function ue(e){return e>=65&&e<=90||e>=97&&e<=122}function le(e,t,n,r){let i="",o=0,s=-1,a=0,u=0;for(let l=0;l<=e.length;++l){if(l<e.length)u=e.charCodeAt(l);else{if(r(u))break;u=te}if(r(u)){if(s===l-1||1===a);else if(2===a){if(i.length<2||2!==o||i.charCodeAt(i.length-1)!==ee||i.charCodeAt(i.length-2)!==ee){if(i.length>2){const e=i.lastIndexOf(n);-1===e?(i="",o=0):(i=i.slice(0,e),o=i.length-1-i.lastIndexOf(n)),s=l,a=0;continue}if(0!==i.length){i="",o=0,s=l,a=0;continue}}t&&(i+=i.length>0?`${n}..`:"..",o=2)}else i.length>0?i+=`${n}${e.slice(s+1,l)}`:i=e.slice(s+1,l),o=l-s-1;s=l,a=0}else u===ee&&-1!==a?++a:a=-1}return i}function ce(e,t){if(null===t||"object"!=typeof t)throw new ie("pathObject","Object",t);const n=t.dir||t.root,r=t.base||`${t.name||""}${t.ext||""}`;return n?n===t.root?`${n}${r}`:`${n}${e}${r}`:r}const he={resolve(...e){let t="",n="",r=!1;for(let i=e.length-1;i>=-1;i--){let o;if(i>=0){if(o=e[i],oe(o,"path"),0===o.length)continue}else 0===t.length?o=Q():(o=Z[`=${t}`]||Q(),(void 0===o||o.slice(0,2).toLowerCase()!==t.toLowerCase()&&o.charCodeAt(2)===ne)&&(o=`${t}\\`));const s=o.length;let a=0,u="",l=!1;const c=o.charCodeAt(0);if(1===s)se(c)&&(a=1,l=!0);else if(se(c))if(l=!0,se(o.charCodeAt(1))){let e=2,t=e;for(;e<s&&!se(o.charCodeAt(e));)e++;if(e<s&&e!==t){const n=o.slice(t,e);for(t=e;e<s&&se(o.charCodeAt(e));)e++;if(e<s&&e!==t){for(t=e;e<s&&!se(o.charCodeAt(e));)e++;e!==s&&e===t||(u=`\\\\${n}\\${o.slice(t,e)}`,a=e)}}}else a=1;else ue(c)&&o.charCodeAt(1)===re&&(u=o.slice(0,2),a=2,s>2&&se(o.charCodeAt(2))&&(l=!0,a=3));if(u.length>0)if(t.length>0){if(u.toLowerCase()!==t.toLowerCase())continue}else t=u;if(r){if(t.length>0)break}else if(n=`${o.slice(a)}\\${n}`,r=l,l&&t.length>0)break}return n=le(n,!r,"\\",se),r?`${t}\\${n}`:`${t}${n}`||"."},normalize(e){oe(e,"path");const t=e.length;if(0===t)return".";let n,r=0,i=!1;const o=e.charCodeAt(0);if(1===t)return ae(o)?"\\":e;if(se(o))if(i=!0,se(e.charCodeAt(1))){let i=2,o=i;for(;i<t&&!se(e.charCodeAt(i));)i++;if(i<t&&i!==o){const s=e.slice(o,i);for(o=i;i<t&&se(e.charCodeAt(i));)i++;if(i<t&&i!==o){for(o=i;i<t&&!se(e.charCodeAt(i));)i++;if(i===t)return`\\\\${s}\\${e.slice(o)}\\`;i!==o&&(n=`\\\\${s}\\${e.slice(o,i)}`,r=i)}}}else r=1;else ue(o)&&e.charCodeAt(1)===re&&(n=e.slice(0,2),r=2,t>2&&se(e.charCodeAt(2))&&(i=!0,r=3));let s=r<t?le(e.slice(r),!i,"\\",se):"";return 0!==s.length||i||(s="."),s.length>0&&se(e.charCodeAt(t-1))&&(s+="\\"),void 0===n?i?`\\${s}`:s:i?`${n}\\${s}`:`${n}${s}`},isAbsolute(e){oe(e,"path");const t=e.length;if(0===t)return!1;const n=e.charCodeAt(0);return se(n)||t>2&&ue(n)&&e.charCodeAt(1)===re&&se(e.charCodeAt(2))},join(...e){if(0===e.length)return".";let t,n;for(let r=0;r<e.length;++r){const i=e[r];oe(i,"path"),i.length>0&&(void 0===t?t=n=i:t+=`\\${i}`)}if(void 0===t)return".";let r=!0,i=0;if("string"==typeof n&&se(n.charCodeAt(0))){++i;const e=n.length;e>1&&se(n.charCodeAt(1))&&(++i,e>2&&(se(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i<t.length&&se(t.charCodeAt(i));)i++;i>=2&&(t=`\\${t.slice(i)}`)}return he.normalize(t)},relative(e,t){if(oe(e,"from"),oe(t,"to"),e===t)return"";const n=he.resolve(e),r=he.resolve(t);if(n===r)return"";if((e=n.toLowerCase())===(t=r.toLowerCase()))return"";let i=0;for(;i<e.length&&e.charCodeAt(i)===ne;)i++;let o=e.length;for(;o-1>i&&e.charCodeAt(o-1)===ne;)o--;const s=o-i;let a=0;for(;a<t.length&&t.charCodeAt(a)===ne;)a++;let u=t.length;for(;u-1>a&&t.charCodeAt(u-1)===ne;)u--;const l=u-a,c=s<l?s:l;let h=-1,f=0;for(;f<c;f++){const n=e.charCodeAt(i+f);if(n!==t.charCodeAt(a+f))break;n===ne&&(h=f)}if(f!==c){if(-1===h)return r}else{if(l>c){if(t.charCodeAt(a+f)===ne)return r.slice(a+f+1);if(2===f)return r.slice(a+f)}s>c&&(e.charCodeAt(i+f)===ne?h=f:2===f&&(h=3)),-1===h&&(h=0)}let d="";for(f=i+h+1;f<=o;++f)f!==o&&e.charCodeAt(f)!==ne||(d+=0===d.length?"..":"\\..");return a+=h,d.length>0?`${d}${r.slice(a,u)}`:(r.charCodeAt(a)===ne&&++a,r.slice(a,u))},toNamespacedPath(e){if("string"!=typeof e)return e;if(0===e.length)return"";const t=he.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===ne){if(t.charCodeAt(1)===ne){const e=t.charCodeAt(2);if(63!==e&&e!==ee)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(ue(t.charCodeAt(0))&&t.charCodeAt(1)===re&&t.charCodeAt(2)===ne)return`\\\\?\\${t}`;return e},dirname(e){oe(e,"path");const t=e.length;if(0===t)return".";let n=-1,r=0;const i=e.charCodeAt(0);if(1===t)return se(i)?e:".";if(se(i)){if(n=r=1,se(e.charCodeAt(1))){let i=2,o=i;for(;i<t&&!se(e.charCodeAt(i));)i++;if(i<t&&i!==o){for(o=i;i<t&&se(e.charCodeAt(i));)i++;if(i<t&&i!==o){for(o=i;i<t&&!se(e.charCodeAt(i));)i++;if(i===t)return e;i!==o&&(n=r=i+1)}}}}else ue(i)&&e.charCodeAt(1)===re&&(n=t>2&&se(e.charCodeAt(2))?3:2,r=n);let o=-1,s=!0;for(let n=t-1;n>=r;--n)if(se(e.charCodeAt(n))){if(!s){o=n;break}}else s=!1;if(-1===o){if(-1===n)return".";o=n}return e.slice(0,o)},basename(e,t){void 0!==t&&oe(t,"ext"),oe(e,"path");let n,r=0,i=-1,o=!0;if(e.length>=2&&ue(e.charCodeAt(0))&&e.charCodeAt(1)===re&&(r=2),void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let s=t.length-1,a=-1;for(n=e.length-1;n>=r;--n){const u=e.charCodeAt(n);if(se(u)){if(!o){r=n+1;break}}else-1===a&&(o=!1,a=n+1),s>=0&&(u===t.charCodeAt(s)?-1==--s&&(i=n):(s=-1,i=a))}return r===i?i=a:-1===i&&(i=e.length),e.slice(r,i)}for(n=e.length-1;n>=r;--n)if(se(e.charCodeAt(n))){if(!o){r=n+1;break}}else-1===i&&(o=!1,i=n+1);return-1===i?"":e.slice(r,i)},extname(e){oe(e,"path");let t=0,n=-1,r=0,i=-1,o=!0,s=0;e.length>=2&&e.charCodeAt(1)===re&&ue(e.charCodeAt(0))&&(t=r=2);for(let a=e.length-1;a>=t;--a){const t=e.charCodeAt(a);if(se(t)){if(!o){r=a+1;break}}else-1===i&&(o=!1,i=a+1),t===ee?-1===n?n=a:1!==s&&(s=1):-1!==n&&(s=-1)}return-1===n||-1===i||0===s||1===s&&n===i-1&&n===r+1?"":e.slice(n,i)},format:ce.bind(null,"\\"),parse(e){oe(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const n=e.length;let r=0,i=e.charCodeAt(0);if(1===n)return se(i)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(se(i)){if(r=1,se(e.charCodeAt(1))){let t=2,i=t;for(;t<n&&!se(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&se(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&!se(e.charCodeAt(t));)t++;t===n?r=t:t!==i&&(r=t+1)}}}}else if(ue(i)&&e.charCodeAt(1)===re){if(n<=2)return t.root=t.dir=e,t;if(r=2,se(e.charCodeAt(2))){if(3===n)return t.root=t.dir=e,t;r=3}}r>0&&(t.root=e.slice(0,r));let o=-1,s=r,a=-1,u=!0,l=e.length-1,c=0;for(;l>=r;--l)if(i=e.charCodeAt(l),se(i)){if(!u){s=l+1;break}}else-1===a&&(u=!1,a=l+1),i===ee?-1===o?o=l:1!==c&&(c=1):-1!==o&&(c=-1);return-1!==a&&(-1===o||0===c||1===c&&o===a-1&&o===s+1?t.base=t.name=e.slice(s,a):(t.name=e.slice(s,o),t.base=e.slice(s,a),t.ext=e.slice(o,a))),t.dir=s>0&&s!==r?e.slice(0,s-1):t.root,t},sep:"\\",delimiter:";",win32:null,posix:null},fe={resolve(...e){let t="",n=!1;for(let r=e.length-1;r>=-1&&!n;r--){const i=r>=0?e[r]:Q();oe(i,"path"),0!==i.length&&(t=`${i}/${t}`,n=i.charCodeAt(0)===te)}return t=le(t,!n,"/",ae),n?`/${t}`:t.length>0?t:"."},normalize(e){if(oe(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===te,n=e.charCodeAt(e.length-1)===te;return 0===(e=le(e,!t,"/",ae)).length?t?"/":n?"./":".":(n&&(e+="/"),t?`/${e}`:e)},isAbsolute:e=>(oe(e,"path"),e.length>0&&e.charCodeAt(0)===te),join(...e){if(0===e.length)return".";let t;for(let n=0;n<e.length;++n){const r=e[n];oe(r,"path"),r.length>0&&(void 0===t?t=r:t+=`/${r}`)}return void 0===t?".":fe.normalize(t)},relative(e,t){if(oe(e,"from"),oe(t,"to"),e===t)return"";if((e=fe.resolve(e))===(t=fe.resolve(t)))return"";const n=e.length,r=n-1,i=t.length-1,o=r<i?r:i;let s=-1,a=0;for(;a<o;a++){const n=e.charCodeAt(1+a);if(n!==t.charCodeAt(1+a))break;n===te&&(s=a)}if(a===o)if(i>o){if(t.charCodeAt(1+a)===te)return t.slice(1+a+1);if(0===a)return t.slice(1+a)}else r>o&&(e.charCodeAt(1+a)===te?s=a:0===a&&(s=0));let u="";for(a=1+s+1;a<=n;++a)a!==n&&e.charCodeAt(a)!==te||(u+=0===u.length?"..":"/..");return`${u}${t.slice(1+s)}`},toNamespacedPath:e=>e,dirname(e){if(oe(e,"path"),0===e.length)return".";const t=e.charCodeAt(0)===te;let n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===te){if(!r){n=t;break}}else r=!1;return-1===n?t?"/":".":t&&1===n?"//":e.slice(0,n)},basename(e,t){void 0!==t&&oe(t,"ext"),oe(e,"path");let n,r=0,i=-1,o=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t===e)return"";let s=t.length-1,a=-1;for(n=e.length-1;n>=0;--n){const u=e.charCodeAt(n);if(u===te){if(!o){r=n+1;break}}else-1===a&&(o=!1,a=n+1),s>=0&&(u===t.charCodeAt(s)?-1==--s&&(i=n):(s=-1,i=a))}return r===i?i=a:-1===i&&(i=e.length),e.slice(r,i)}for(n=e.length-1;n>=0;--n)if(e.charCodeAt(n)===te){if(!o){r=n+1;break}}else-1===i&&(o=!1,i=n+1);return-1===i?"":e.slice(r,i)},extname(e){oe(e,"path");let t=-1,n=0,r=-1,i=!0,o=0;for(let s=e.length-1;s>=0;--s){const a=e.charCodeAt(s);if(a!==te)-1===r&&(i=!1,r=s+1),a===ee?-1===t?t=s:1!==o&&(o=1):-1!==t&&(o=-1);else if(!i){n=s+1;break}}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)},format:ce.bind(null,"/"),parse(e){oe(e,"path");const t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;const n=e.charCodeAt(0)===te;let r;n?(t.root="/",r=1):r=0;let i=-1,o=0,s=-1,a=!0,u=e.length-1,l=0;for(;u>=r;--u){const t=e.charCodeAt(u);if(t!==te)-1===s&&(a=!1,s=u+1),t===ee?-1===i?i=u:1!==l&&(l=1):-1!==i&&(l=-1);else if(!a){o=u+1;break}}if(-1!==s){const r=0===o&&n?1:o;-1===i||0===l||1===l&&i===s-1&&i===o+1?t.base=t.name=e.slice(r,s):(t.name=e.slice(r,i),t.base=e.slice(r,s),t.ext=e.slice(i,s))}return o>0?t.dir=e.slice(0,o-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};fe.win32=he.win32=he,fe.posix=he.posix=fe,"win32"===X?he.normalize:fe.normalize,"win32"===X?he.resolve:fe.resolve,"win32"===X?he.relative:fe.relative,"win32"===X?he.dirname:fe.dirname,"win32"===X?he.basename:fe.basename,"win32"===X?he.extname:fe.extname,"win32"===X?he.sep:fe.sep;const de=/^\w[\w\d+.-]*$/,me=/^\//,ge=/^\/\//,pe="",ve="/",ye=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class be{constructor(e,t,n,r,i,o=!1){"object"==typeof e?(this.scheme=e.scheme||pe,this.authority=e.authority||pe,this.path=e.path||pe,this.query=e.query||pe,this.fragment=e.fragment||pe):(this.scheme=function(e,t){return e||t?e:"file"}(e,o),this.authority=t||pe,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==ve&&(t=ve+t):t=ve}return t}(this.scheme,n||pe),this.query=r||pe,this.fragment=i||pe,function(e,t){if(!e.scheme&&t)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!de.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!me.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(ge.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,o))}static isUri(e){return e instanceof be||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"function"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}get fsPath(){return xe(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:o}=e;return void 0===t?t=this.scheme:null===t&&(t=pe),void 0===n?n=this.authority:null===n&&(n=pe),void 0===r?r=this.path:null===r&&(r=pe),void 0===i?i=this.query:null===i&&(i=pe),void 0===o?o=this.fragment:null===o&&(o=pe),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new _e(t,n,r,i,o)}static parse(e,t=!1){const n=ye.exec(e);return n?new _e(n[2]||pe,Te(n[4]||pe),Te(n[5]||pe),Te(n[7]||pe),Te(n[9]||pe),t):new _e(pe,pe,pe,pe,pe)}static file(e){let t=pe;if(A&&(e=e.replace(/\\/g,ve)),e[0]===ve&&e[1]===ve){const n=e.indexOf(ve,2);-1===n?(t=e.substring(2),e=ve):(t=e.substring(2,n),e=e.substring(n)||ve)}return new _e("file",t,e,pe,pe)}static from(e){return new _e(e.scheme,e.authority,e.path,e.query,e.fragment)}static joinPath(e,...t){if(!e.path)throw new Error("[UriError]: cannot call joinPaths on URI without path");let n;return n=A&&"file"===e.scheme?be.file(he.join(xe(e,!0),...t)).path:fe.join(e.path,...t),e.with({path:n})}toString(e=!1){return Ne(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof be)return e;{const t=new _e(e);return t._formatted=e.external,t._fsPath=e._sep===Ce?e.fsPath:null,t}}return e}}const Ce=A?1:void 0;class _e extends be{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||(this._fsPath=xe(this,!1)),this._fsPath}toString(e=!1){return e?Ne(this,!0):(this._formatted||(this._formatted=Ne(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Ce),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const Se={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function Ee(e,t){let n,r=-1;for(let i=0;i<e.length;i++){const o=e.charCodeAt(i);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));const t=Se[o];void 0!==t?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=t):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function Ae(e){let t;for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=Se[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function xe(e,t){let n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?`//${e.authority}${e.path}`:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,A&&(n=n.replace(/\//g,"\\")),n}function Ne(e,t){const n=t?Ae:Ee;let r="",{scheme:i,authority:o,path:s,query:a,fragment:u}=e;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=ve,r+=ve),o){let e=o.indexOf("@");if(-1!==e){const t=o.substr(0,e);o=o.substr(e+1),e=t.indexOf(":"),-1===e?r+=n(t,!1):(r+=n(t.substr(0,e),!1),r+=":",r+=n(t.substr(e+1),!1)),r+="@"}o=o.toLowerCase(),e=o.indexOf(":"),-1===e?r+=n(o,!1):(r+=n(o.substr(0,e),!1),r+=o.substr(e))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2)){const e=s.charCodeAt(1);e>=65&&e<=90&&(s=`/${String.fromCharCode(e+32)}:${s.substr(3)}`)}else if(s.length>=2&&58===s.charCodeAt(1)){const e=s.charCodeAt(0);e>=65&&e<=90&&(s=`${String.fromCharCode(e+32)}:${s.substr(2)}`)}r+=n(s,!0)}return a&&(r+="?",r+=n(a,!1)),u&&(r+="#",r+=t?u:Ee(u,!1)),r}function Le(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+Le(e.substr(3)):e}}const we=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Te(e){return e.match(we)?e.replace(we,(e=>Le(e))):e}class ke{constructor(e,t){this.lineNumber=e,this.column=t}with(e=this.lineNumber,t=this.column){return e===this.lineNumber&&t===this.column?this:new ke(e,t)}delta(e=0,t=0){return this.with(this.lineNumber+e,this.column+t)}equals(e){return ke.equals(this,e)}static equals(e,t){return!e&&!t||!!e&&!!t&&e.lineNumber===t.lineNumber&&e.column===t.column}isBefore(e){return ke.isBefore(this,e)}static isBefore(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<t.column}isBeforeOrEqual(e){return ke.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,t){return e.lineNumber<t.lineNumber||!(t.lineNumber<e.lineNumber)&&e.column<=t.column}static compare(e,t){let n=0|e.lineNumber,r=0|t.lineNumber;return n===r?(0|e.column)-(0|t.column):n-r}clone(){return new ke(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new ke(e.lineNumber,e.column)}static isIPosition(e){return e&&"number"==typeof e.lineNumber&&"number"==typeof e.column}}class Oe{constructor(e,t,n,r){e>n||e===n&&t>r?(this.startLineNumber=n,this.startColumn=r,this.endLineNumber=e,this.endColumn=t):(this.startLineNumber=e,this.startColumn=t,this.endLineNumber=n,this.endColumn=r)}isEmpty(){return Oe.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return Oe.containsPosition(this,e)}static containsPosition(e,t){return!(t.lineNumber<e.startLineNumber||t.lineNumber>e.endLineNumber||t.lineNumber===e.startLineNumber&&t.column<e.startColumn||t.lineNumber===e.endLineNumber&&t.column>e.endColumn)}containsRange(e){return Oe.containsRange(this,e)}static containsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>e.endColumn)}strictContainsRange(e){return Oe.strictContainsRange(this,e)}static strictContainsRange(e,t){return!(t.startLineNumber<e.startLineNumber||t.endLineNumber<e.startLineNumber||t.startLineNumber>e.endLineNumber||t.endLineNumber>e.endLineNumber||t.startLineNumber===e.startLineNumber&&t.startColumn<=e.startColumn||t.endLineNumber===e.endLineNumber&&t.endColumn>=e.endColumn)}plusRange(e){return Oe.plusRange(this,e)}static plusRange(e,t){let n,r,i,o;return t.startLineNumber<e.startLineNumber?(n=t.startLineNumber,r=t.startColumn):t.startLineNumber===e.startLineNumber?(n=t.startLineNumber,r=Math.min(t.startColumn,e.startColumn)):(n=e.startLineNumber,r=e.startColumn),t.endLineNumber>e.endLineNumber?(i=t.endLineNumber,o=t.endColumn):t.endLineNumber===e.endLineNumber?(i=t.endLineNumber,o=Math.max(t.endColumn,e.endColumn)):(i=e.endLineNumber,o=e.endColumn),new Oe(n,r,i,o)}intersectRanges(e){return Oe.intersectRanges(this,e)}static intersectRanges(e,t){let n=e.startLineNumber,r=e.startColumn,i=e.endLineNumber,o=e.endColumn,s=t.startLineNumber,a=t.startColumn,u=t.endLineNumber,l=t.endColumn;return n<s?(n=s,r=a):n===s&&(r=Math.max(r,a)),i>u?(i=u,o=l):i===u&&(o=Math.min(o,l)),n>i||n===i&&r>o?null:new Oe(n,r,i,o)}equalsRange(e){return Oe.equalsRange(this,e)}static equalsRange(e,t){return!!e&&!!t&&e.startLineNumber===t.startLineNumber&&e.startColumn===t.startColumn&&e.endLineNumber===t.endLineNumber&&e.endColumn===t.endColumn}getEndPosition(){return Oe.getEndPosition(this)}static getEndPosition(e){return new ke(e.endLineNumber,e.endColumn)}getStartPosition(){return Oe.getStartPosition(this)}static getStartPosition(e){return new ke(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,t){return new Oe(this.startLineNumber,this.startColumn,e,t)}setStartPosition(e,t){return new Oe(e,t,this.endLineNumber,this.endColumn)}collapseToStart(){return Oe.collapseToStart(this)}static collapseToStart(e){return new Oe(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}static fromPositions(e,t=e){return new Oe(e.lineNumber,e.column,t.lineNumber,t.column)}static lift(e){return e?new Oe(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&"number"==typeof e.startLineNumber&&"number"==typeof e.startColumn&&"number"==typeof e.endLineNumber&&"number"==typeof e.endColumn}static areIntersectingOrTouching(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<e.startColumn)}static areIntersecting(e,t){return!(e.endLineNumber<t.startLineNumber||e.endLineNumber===t.startLineNumber&&e.endColumn<=t.startColumn||t.endLineNumber<e.startLineNumber||t.endLineNumber===e.startLineNumber&&t.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,t){if(e&&t){const n=0|e.startLineNumber,r=0|t.startLineNumber;if(n===r){const n=0|e.startColumn,r=0|t.startColumn;if(n===r){const n=0|e.endLineNumber,r=0|t.endLineNumber;return n===r?(0|e.endColumn)-(0|t.endColumn):n-r}return n-r}return n-r}return(e?1:0)-(t?1:0)}static compareRangesUsingEnds(e,t){return e.endLineNumber===t.endLineNumber?e.endColumn===t.endColumn?e.startLineNumber===t.startLineNumber?e.startColumn-t.startColumn:e.startLineNumber-t.startLineNumber:e.endColumn-t.endColumn:e.endLineNumber-t.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}}function Ie(e,t,n,r){return new z(e,t,n).ComputeDiff(r)}class Me{constructor(e){const t=[],n=[];for(let r=0,i=e.length;r<i;r++)t[r]=je(e[r],1),n[r]=Ue(e[r],1);this.lines=e,this._startColumns=t,this._endColumns=n}getElements(){const e=[];for(let t=0,n=this.lines.length;t<n;t++)e[t]=this.lines[t].substring(this._startColumns[t]-1,this._endColumns[t]-1);return e}getStartLineNumber(e){return e+1}getEndLineNumber(e){return e+1}createCharSequence(e,t,n){const r=[],i=[],o=[];let s=0;for(let a=t;a<=n;a++){const t=this.lines[a],n=e?this._startColumns[a]:1,u=e?this._endColumns[a]:t.length+1;for(let e=n;e<u;e++)r[s]=t.charCodeAt(e-1),i[s]=a+1,o[s]=e,s++}return new Pe(r,i,o)}}class Pe{constructor(e,t,n){this._charCodes=e,this._lineNumbers=t,this._columns=n}getElements(){return this._charCodes}getStartLineNumber(e){return this._lineNumbers[e]}getStartColumn(e){return this._columns[e]}getEndLineNumber(e){return this._lineNumbers[e]}getEndColumn(e){return this._columns[e]+1}}class Re{constructor(e,t,n,r,i,o,s,a){this.originalStartLineNumber=e,this.originalStartColumn=t,this.originalEndLineNumber=n,this.originalEndColumn=r,this.modifiedStartLineNumber=i,this.modifiedStartColumn=o,this.modifiedEndLineNumber=s,this.modifiedEndColumn=a}static createFromDiffChange(e,t,n){let r,i,o,s,a,u,l,c;return 0===e.originalLength?(r=0,i=0,o=0,s=0):(r=t.getStartLineNumber(e.originalStart),i=t.getStartColumn(e.originalStart),o=t.getEndLineNumber(e.originalStart+e.originalLength-1),s=t.getEndColumn(e.originalStart+e.originalLength-1)),0===e.modifiedLength?(a=0,u=0,l=0,c=0):(a=n.getStartLineNumber(e.modifiedStart),u=n.getStartColumn(e.modifiedStart),l=n.getEndLineNumber(e.modifiedStart+e.modifiedLength-1),c=n.getEndColumn(e.modifiedStart+e.modifiedLength-1)),new Re(r,i,o,s,a,u,l,c)}}class De{constructor(e,t,n,r,i){this.originalStartLineNumber=e,this.originalEndLineNumber=t,this.modifiedStartLineNumber=n,this.modifiedEndLineNumber=r,this.charChanges=i}static createFromDiffResult(e,t,n,r,i,o,s){let a,u,l,c,h;if(0===t.originalLength?(a=n.getStartLineNumber(t.originalStart)-1,u=0):(a=n.getStartLineNumber(t.originalStart),u=n.getEndLineNumber(t.originalStart+t.originalLength-1)),0===t.modifiedLength?(l=r.getStartLineNumber(t.modifiedStart)-1,c=0):(l=r.getStartLineNumber(t.modifiedStart),c=r.getEndLineNumber(t.modifiedStart+t.modifiedLength-1)),o&&t.originalLength>0&&t.originalLength<20&&t.modifiedLength>0&&t.modifiedLength<20&&i()){const o=n.createCharSequence(e,t.originalStart,t.originalStart+t.originalLength-1),a=r.createCharSequence(e,t.modifiedStart,t.modifiedStart+t.modifiedLength-1);let u=Ie(o,a,i,!0).changes;s&&(u=function(e){if(e.length<=1)return e;const t=[e[0]];let n=t[0];for(let r=1,i=e.length;r<i;r++){const i=e[r],o=i.originalStart-(n.originalStart+n.originalLength),s=i.modifiedStart-(n.modifiedStart+n.modifiedLength);Math.min(o,s)<3?(n.originalLength=i.originalStart+i.originalLength-n.originalStart,n.modifiedLength=i.modifiedStart+i.modifiedLength-n.modifiedStart):(t.push(i),n=i)}return t}(u)),h=[];for(let e=0,t=u.length;e<t;e++)h.push(Re.createFromDiffChange(u[e],o,a))}return new De(a,u,l,c,h)}}class Fe{constructor(e,t,n){this.shouldComputeCharChanges=n.shouldComputeCharChanges,this.shouldPostProcessCharChanges=n.shouldPostProcessCharChanges,this.shouldIgnoreTrimWhitespace=n.shouldIgnoreTrimWhitespace,this.shouldMakePrettyDiff=n.shouldMakePrettyDiff,this.originalLines=e,this.modifiedLines=t,this.original=new Me(e),this.modified=new Me(t),this.continueLineDiff=Ve(n.maxComputationTime),this.continueCharDiff=Ve(0===n.maxComputationTime?0:Math.min(n.maxComputationTime,5e3))}computeDiff(){if(1===this.original.lines.length&&0===this.original.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:1,modifiedStartLineNumber:1,modifiedEndLineNumber:this.modified.lines.length,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};if(1===this.modified.lines.length&&0===this.modified.lines[0].length)return{quitEarly:!1,changes:[{originalStartLineNumber:1,originalEndLineNumber:this.original.lines.length,modifiedStartLineNumber:1,modifiedEndLineNumber:1,charChanges:[{modifiedEndColumn:0,modifiedEndLineNumber:0,modifiedStartColumn:0,modifiedStartLineNumber:0,originalEndColumn:0,originalEndLineNumber:0,originalStartColumn:0,originalStartLineNumber:0}]}]};const e=Ie(this.original,this.modified,this.continueLineDiff,this.shouldMakePrettyDiff),t=e.changes,n=e.quitEarly;if(this.shouldIgnoreTrimWhitespace){const e=[];for(let n=0,r=t.length;n<r;n++)e.push(De.createFromDiffResult(this.shouldIgnoreTrimWhitespace,t[n],this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges));return{quitEarly:n,changes:e}}const r=[];let i=0,o=0;for(let e=-1,n=t.length;e<n;e++){const s=e+1<n?t[e+1]:null,a=s?s.originalStart:this.originalLines.length,u=s?s.modifiedStart:this.modifiedLines.length;for(;i<a&&o<u;){const e=this.originalLines[i],t=this.modifiedLines[o];if(e!==t){{let n=je(e,1),s=je(t,1);for(;n>1&&s>1&&e.charCodeAt(n-2)===t.charCodeAt(s-2);)n--,s--;(n>1||s>1)&&this._pushTrimWhitespaceCharChange(r,i+1,1,n,o+1,1,s)}{let n=Ue(e,1),s=Ue(t,1);const a=e.length+1,u=t.length+1;for(;n<a&&s<u&&e.charCodeAt(n-1)===e.charCodeAt(s-1);)n++,s++;(n<a||s<u)&&this._pushTrimWhitespaceCharChange(r,i+1,n,a,o+1,s,u)}}i++,o++}s&&(r.push(De.createFromDiffResult(this.shouldIgnoreTrimWhitespace,s,this.original,this.modified,this.continueCharDiff,this.shouldComputeCharChanges,this.shouldPostProcessCharChanges)),i+=s.originalLength,o+=s.modifiedLength)}return{quitEarly:n,changes:r}}_pushTrimWhitespaceCharChange(e,t,n,r,i,o,s){if(this._mergeTrimWhitespaceCharChange(e,t,n,r,i,o,s))return;let a;this.shouldComputeCharChanges&&(a=[new Re(t,n,t,r,i,o,i,s)]),e.push(new De(t,t,i,i,a))}_mergeTrimWhitespaceCharChange(e,t,n,r,i,o,s){const a=e.length;if(0===a)return!1;const u=e[a-1];return 0!==u.originalEndLineNumber&&0!==u.modifiedEndLineNumber&&u.originalEndLineNumber+1===t&&u.modifiedEndLineNumber+1===i&&(u.originalEndLineNumber=t,u.modifiedEndLineNumber=i,this.shouldComputeCharChanges&&u.charChanges&&u.charChanges.push(new Re(t,n,t,r,i,o,i,s)),!0)}}function je(e,t){const n=function(e){for(let t=0,n=e.length;t<n;t++){const n=e.charCodeAt(t);if(32!==n&&9!==n)return t}return-1}(e);return-1===n?t:n+1}function Ue(e,t){const n=function(e,t=e.length-1){for(let n=t;n>=0;n--){const t=e.charCodeAt(n);if(32!==t&&9!==t)return n}return-1}(e);return-1===n?t:n+2}function Ve(e){if(0===e)return()=>!0;const t=Date.now();return()=>Date.now()-t<e}function $e(e){return e<0?0:e>255?255:0|e}function We(e){return e<0?0:e>4294967295?4294967295:0|e}class qe{constructor(e,t){this.index=e,this.remainder=t}}class Ke{constructor(e){this.values=e,this.prefixSum=new Uint32Array(e.length),this.prefixSumValidIndex=new Int32Array(1),this.prefixSumValidIndex[0]=-1}insertValues(e,t){e=We(e);const n=this.values,r=this.prefixSum,i=t.length;return 0!==i&&(this.values=new Uint32Array(n.length+i),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e),e+i),this.values.set(t,e),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSum=new Uint32Array(this.values.length),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}changeValue(e,t){return e=We(e),t=We(t),this.values[e]!==t&&(this.values[e]=t,e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),!0)}removeValues(e,t){e=We(e),t=We(t);const n=this.values,r=this.prefixSum;if(e>=n.length)return!1;let i=n.length-e;return t>=i&&(t=i),0!==t&&(this.values=new Uint32Array(n.length-t),this.values.set(n.subarray(0,e),0),this.values.set(n.subarray(e+t),e),this.prefixSum=new Uint32Array(this.values.length),e-1<this.prefixSumValidIndex[0]&&(this.prefixSumValidIndex[0]=e-1),this.prefixSumValidIndex[0]>=0&&this.prefixSum.set(r.subarray(0,this.prefixSumValidIndex[0]+1)),!0)}getTotalValue(){return 0===this.values.length?0:this._getAccumulatedValue(this.values.length-1)}getAccumulatedValue(e){return e<0?0:(e=We(e),this._getAccumulatedValue(e))}_getAccumulatedValue(e){if(e<=this.prefixSumValidIndex[0])return this.prefixSum[e];let t=this.prefixSumValidIndex[0]+1;0===t&&(this.prefixSum[0]=this.values[0],t++),e>=this.values.length&&(e=this.values.length-1);for(let n=t;n<=e;n++)this.prefixSum[n]=this.prefixSum[n-1]+this.values[n];return this.prefixSumValidIndex[0]=Math.max(this.prefixSumValidIndex[0],e),this.prefixSum[e]}getIndexOf(e){e=Math.floor(e),this.getTotalValue();let t=0,n=this.values.length-1,r=0,i=0,o=0;for(;t<=n;)if(r=t+(n-t)/2|0,i=this.prefixSum[r],o=i-this.values[r],e<o)n=r-1;else{if(!(e>=i))break;t=r+1}return new qe(r,e-o)}}const Be=function(e=""){let t="(-?\\d*\\.\\d\\w*)|([^";for(const n of"`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?")e.indexOf(n)>=0||(t+="\\"+n);return t+="\\s]+)",new RegExp(t,"g")}(),He={maxLen:1e3,windowSize:15,timeBudget:150};function Ye(e,t,n,r,i=He){if(n.length>i.maxLen){let o=e-i.maxLen/2;return o<0?(r+=e,o=0):r+=o,Ye(e,t,n=n.substring(o,e+i.maxLen/2),r,i)}Date.now();const o=e-1-r;let s=-1,a=null;for(let e=1;;e++){Date.now(),i.timeBudget;const r=o-i.windowSize*e;t.lastIndex=Math.max(0,r);const u=Ge(t,n,o,s);if(!u&&a)break;if(a=u,r<=0)break;s=r}if(a){let e={word:a[0],startColumn:r+1+a.index,endColumn:r+1+a.index+a[0].length};return t.lastIndex=0,e}return null}function Ge(e,t,n,r){let i;for(;i=e.exec(t);){const t=i.index||0;if(t<=n&&e.lastIndex>=n)return i;if(r>0&&t>r)return null}return null}class ze{constructor(e){let t=$e(e);this._defaultValue=t,this._asciiMap=ze._createAsciiMap(t),this._map=new Map}static _createAsciiMap(e){let t=new Uint8Array(256);for(let n=0;n<256;n++)t[n]=e;return t}set(e,t){let n=$e(t);e>=0&&e<256?this._asciiMap[e]=n:this._map.set(e,n)}get(e){return e>=0&&e<256?this._asciiMap[e]:this._map.get(e)||this._defaultValue}}class Je{constructor(e,t,n){const r=new Uint8Array(e*t);for(let i=0,o=e*t;i<o;i++)r[i]=n;this._data=r,this.rows=e,this.cols=t}get(e,t){return this._data[e*this.cols+t]}set(e,t,n){this._data[e*this.cols+t]=n}}class Qe{constructor(e){let t=0,n=0;for(let r=0,i=e.length;r<i;r++){let[i,o,s]=e[r];o>t&&(t=o),i>n&&(n=i),s>n&&(n=s)}t++,n++;let r=new Je(n,t,0);for(let t=0,n=e.length;t<n;t++){let[n,i,o]=e[t];r.set(n,i,o)}this._states=r,this._maxCharCode=t}nextState(e,t){return t<0||t>=this._maxCharCode?0:this._states.get(e,t)}}let Ze=null,Xe=null;class et{static _createLink(e,t,n,r,i){let o=i-1;do{const n=t.charCodeAt(o);if(2!==e.get(n))break;o--}while(o>r);if(r>0){const e=t.charCodeAt(r-1),n=t.charCodeAt(o);(40===e&&41===n||91===e&&93===n||123===e&&125===n)&&o--}return{range:{startLineNumber:n,startColumn:r+1,endLineNumber:n,endColumn:o+2},url:t.substring(r,o+1)}}static computeLinks(e,t=function(){return null===Ze&&(Ze=new Qe([[1,104,2],[1,72,2],[1,102,6],[1,70,6],[2,116,3],[2,84,3],[3,116,4],[3,84,4],[4,112,5],[4,80,5],[5,115,9],[5,83,9],[5,58,10],[6,105,7],[6,73,7],[7,108,8],[7,76,8],[8,101,9],[8,69,9],[9,58,10],[10,47,11],[11,47,12]])),Ze}()){const n=function(){if(null===Xe){Xe=new ze(0);const e=" \t<>'\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…";for(let t=0;t<e.length;t++)Xe.set(e.charCodeAt(t),1);const t=".,;";for(let e=0;e<t.length;e++)Xe.set(t.charCodeAt(e),2)}return Xe}();let r=[];for(let i=1,o=e.getLineCount();i<=o;i++){const o=e.getLineContent(i),s=o.length;let a=0,u=0,l=0,c=1,h=!1,f=!1,d=!1,m=!1;for(;a<s;){let e=!1;const s=o.charCodeAt(a);if(13===c){let t;switch(s){case 40:h=!0,t=0;break;case 41:t=h?0:1;break;case 91:d=!0,f=!0,t=0;break;case 93:d=!1,t=f?0:1;break;case 123:m=!0,t=0;break;case 125:t=m?0:1;break;case 39:t=34===l||96===l?0:1;break;case 34:t=39===l||96===l?0:1;break;case 96:t=39===l||34===l?0:1;break;case 42:t=42===l?1:0;break;case 124:t=124===l?1:0;break;case 32:t=d?0:1;break;default:t=n.get(s)}1===t&&(r.push(et._createLink(n,o,i,u,a)),e=!0)}else if(12===c){let t;91===s?(f=!0,t=0):t=n.get(s),1===t?e=!0:c=13}else c=t.nextState(c,s),0===c&&(e=!0);e&&(c=1,h=!1,f=!1,m=!1,u=a+1,l=s),a++}13===c&&r.push(et._createLink(n,o,i,u,s))}return r}}class tt{constructor(){this._defaultValueSet=[["true","false"],["True","False"],["Private","Public","Friend","ReadOnly","Partial","Protected","WriteOnly"],["public","protected","private"]]}navigateValueSet(e,t,n,r,i){if(e&&t){let n=this.doNavigateValueSet(t,i);if(n)return{range:e,value:n}}if(n&&r){let e=this.doNavigateValueSet(r,i);if(e)return{range:n,value:e}}return null}doNavigateValueSet(e,t){let n=this.numberReplace(e,t);return null!==n?n:this.textReplace(e,t)}numberReplace(e,t){let n=Math.pow(10,e.length-(e.lastIndexOf(".")+1)),r=Number(e),i=parseFloat(e);return isNaN(r)||isNaN(i)||r!==i?null:0!==r||t?(r=Math.floor(r*n),r+=t?n:-n,String(r/n)):null}textReplace(e,t){return this.valueSetsReplace(this._defaultValueSet,e,t)}valueSetsReplace(e,t,n){let r=null;for(let i=0,o=e.length;null===r&&i<o;i++)r=this.valueSetReplace(e[i],t,n);return r}valueSetReplace(e,t,n){let r=e.indexOf(t);return r>=0?(r+=n?1:-1,r<0?r=e.length-1:r%=e.length,e[r]):null}}tt.INSTANCE=new tt;class nt{constructor(e){this.element=e,this.next=nt.Undefined,this.prev=nt.Undefined}}nt.Undefined=new nt(void 0);class rt{constructor(){this._first=nt.Undefined,this._last=nt.Undefined,this._size=0}get size(){return this._size}isEmpty(){return this._first===nt.Undefined}clear(){this._first=nt.Undefined,this._last=nt.Undefined,this._size=0}unshift(e){return this._insert(e,!1)}push(e){return this._insert(e,!0)}_insert(e,t){const n=new nt(e);if(this._first===nt.Undefined)this._first=n,this._last=n;else if(t){const e=this._last;this._last=n,n.prev=e,e.next=n}else{const e=this._first;this._first=n,n.next=e,e.prev=n}this._size+=1;let r=!1;return()=>{r||(r=!0,this._remove(n))}}shift(){if(this._first!==nt.Undefined){const e=this._first.element;return this._remove(this._first),e}}pop(){if(this._last!==nt.Undefined){const e=this._last.element;return this._remove(this._last),e}}_remove(e){if(e.prev!==nt.Undefined&&e.next!==nt.Undefined){const t=e.prev;t.next=e.next,e.next.prev=t}else e.prev===nt.Undefined&&e.next===nt.Undefined?(this._first=nt.Undefined,this._last=nt.Undefined):e.next===nt.Undefined?(this._last=this._last.prev,this._last.next=nt.Undefined):e.prev===nt.Undefined&&(this._first=this._first.next,this._first.prev=nt.Undefined);this._size-=1}*[Symbol.iterator](){let e=this._first;for(;e!==nt.Undefined;)yield e.element,e=e.next}toArray(){const e=[];for(let t=this._first;t!==nt.Undefined;t=t.next)e.push(t.element);return e}}var it;!function(e){function t(e){return(t,n=null,r)=>{let i,o=!1;return i=e((e=>{if(!o)return i?i.dispose():o=!0,t.call(n,e)}),null,r),o&&i.dispose(),i}}function n(e,t){return a(((n,r=null,i)=>e((e=>n.call(r,t(e))),null,i)))}function r(e,t){return a(((n,r=null,i)=>e((e=>{t(e),n.call(r,e)}),null,i)))}function i(e,t){return a(((n,r=null,i)=>e((e=>t(e)&&n.call(r,e)),null,i)))}function o(e,t,r){let i=r;return n(e,(e=>(i=t(i,e),i)))}function a(e){let t;const n=new ot({onFirstListenerAdd(){t=e(n.fire,n)},onLastListenerRemove(){t.dispose()}});return n.event}function l(e,t,n=100,r=!1,i){let o,s,a,u=0;const l=new ot({leakWarningThreshold:i,onFirstListenerAdd(){o=e((e=>{u++,s=t(s,e),r&&!a&&(l.fire(s),s=void 0),clearTimeout(a),a=setTimeout((()=>{const e=s;s=void 0,a=void 0,(!r||u>1)&&l.fire(e),u=0}),n)}))},onLastListenerRemove(){o.dispose()}});return l.event}function h(e){let t,n=!0;return i(e,(e=>{const r=n||e!==t;return n=!1,t=e,r}))}e.None=()=>c.None,e.once=t,e.map=n,e.forEach=r,e.filter=i,e.signal=function(e){return e},e.any=function(...e){return(t,n=null,r)=>function(...e){return e.forEach(s),{dispose:()=>u(e)}}(...e.map((e=>e((e=>t.call(n,e)),null,r))))},e.reduce=o,e.snapshot=a,e.debounce=l,e.stopwatch=function(e){const r=(new Date).getTime();return n(t(e),(e=>(new Date).getTime()-r))},e.latch=h,e.buffer=function(e,t=!1,n=[]){let r=n.slice(),i=e((e=>{r?r.push(e):s.fire(e)}));const o=()=>{r&&r.forEach((e=>s.fire(e))),r=null},s=new ot({onFirstListenerAdd(){i||(i=e((e=>s.fire(e))))},onFirstListenerDidAdd(){r&&(t?setTimeout(o):o())},onLastListenerRemove(){i&&i.dispose(),i=null}});return s.event};class f{constructor(e){this.event=e}map(e){return new f(n(this.event,e))}forEach(e){return new f(r(this.event,e))}filter(e){return new f(i(this.event,e))}reduce(e,t){return new f(o(this.event,e,t))}latch(){return new f(h(this.event))}debounce(e,t=100,n=!1,r){return new f(l(this.event,e,t,n,r))}on(e,t,n){return this.event(e,t,n)}once(e,n,r){return t(this.event)(e,n,r)}}e.chain=function(e){return new f(e)},e.fromNodeEventEmitter=function(e,t,n=(e=>e)){const r=(...e)=>i.fire(n(...e)),i=new ot({onFirstListenerAdd:()=>e.on(t,r),onLastListenerRemove:()=>e.removeListener(t,r)});return i.event},e.fromDOMEventEmitter=function(e,t,n=(e=>e)){const r=(...e)=>i.fire(n(...e)),i=new ot({onFirstListenerAdd:()=>e.addEventListener(t,r),onLastListenerRemove:()=>e.removeEventListener(t,r)});return i.event},e.fromPromise=function(e){const t=new ot;let n=!1;return e.then(void 0,(()=>null)).then((()=>{n?t.fire(void 0):setTimeout((()=>t.fire(void 0)),0)})),n=!0,t.event},e.toPromise=function(e){return new Promise((n=>t(e)(n)))}}(it||(it={}));class ot{constructor(e){this._disposed=!1,this._options=e,this._leakageMon=void 0}get event(){return this._event||(this._event=(e,t,n)=>{this._listeners||(this._listeners=new rt);const r=this._listeners.isEmpty();r&&this._options&&this._options.onFirstListenerAdd&&this._options.onFirstListenerAdd(this);const i=this._listeners.push(t?[e,t]:e);let o,s;return r&&this._options&&this._options.onFirstListenerDidAdd&&this._options.onFirstListenerDidAdd(this),this._options&&this._options.onListenerDidAdd&&this._options.onListenerDidAdd(this,e,t),this._leakageMon&&(o=this._leakageMon.check(this._listeners.size)),s={dispose:()=>{o&&o(),s.dispose=ot._noop,!this._disposed&&(i(),this._options&&this._options.onLastListenerRemove)&&(this._listeners&&!this._listeners.isEmpty()||this._options.onLastListenerRemove(this))}},n instanceof l?n.add(s):Array.isArray(n)&&n.push(s),s}),this._event}fire(e){if(this._listeners){this._deliveryQueue||(this._deliveryQueue=new rt);for(let t of this._listeners)this._deliveryQueue.push([t,e]);for(;this._deliveryQueue.size>0;){const[e,t]=this._deliveryQueue.shift();try{"function"==typeof e?e.call(void 0,t):e[0].call(e[1],t)}catch(e){n(e)}}}}dispose(){this._listeners&&this._listeners.clear(),this._deliveryQueue&&this._deliveryQueue.clear(),this._leakageMon&&this._leakageMon.dispose(),this._disposed=!0}}ot._noop=function(){};const st=Object.freeze((function(e,t){const n=setTimeout(e.bind(t),0);return{dispose(){clearTimeout(n)}}}));var at;!function(e){e.isCancellationToken=function(t){return t===e.None||t===e.Cancelled||t instanceof ut||!(!t||"object"!=typeof t)&&"boolean"==typeof t.isCancellationRequested&&"function"==typeof t.onCancellationRequested},e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:it.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:st})}(at||(at={}));class ut{constructor(){this._isCancelled=!1,this._emitter=null}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?st:(this._emitter||(this._emitter=new ot),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=null)}}class lt{constructor(){this._keyCodeToStr=[],this._strToKeyCode=Object.create(null)}define(e,t){this._keyCodeToStr[e]=t,this._strToKeyCode[t.toLowerCase()]=e}keyCodeToStr(e){return this._keyCodeToStr[e]}strToKeyCode(e){return this._strToKeyCode[e.toLowerCase()]||0}}const ct=new lt,ht=new lt,ft=new lt;var dt,mt,gt,pt,vt,yt,bt,Ct,_t,St,Et,At,xt,Nt,Lt,wt,Tt,kt,Ot,It,Mt,Pt,Rt,Dt,Ft,jt,Ut,Vt,$t,Wt,qt,Kt,Bt,Ht;!function(){function e(e,t,n=t,r=n){ct.define(e,t),ht.define(e,n),ft.define(e,r)}e(0,"unknown"),e(1,"Backspace"),e(2,"Tab"),e(3,"Enter"),e(4,"Shift"),e(5,"Ctrl"),e(6,"Alt"),e(7,"PauseBreak"),e(8,"CapsLock"),e(9,"Escape"),e(10,"Space"),e(11,"PageUp"),e(12,"PageDown"),e(13,"End"),e(14,"Home"),e(15,"LeftArrow","Left"),e(16,"UpArrow","Up"),e(17,"RightArrow","Right"),e(18,"DownArrow","Down"),e(19,"Insert"),e(20,"Delete"),e(21,"0"),e(22,"1"),e(23,"2"),e(24,"3"),e(25,"4"),e(26,"5"),e(27,"6"),e(28,"7"),e(29,"8"),e(30,"9"),e(31,"A"),e(32,"B"),e(33,"C"),e(34,"D"),e(35,"E"),e(36,"F"),e(37,"G"),e(38,"H"),e(39,"I"),e(40,"J"),e(41,"K"),e(42,"L"),e(43,"M"),e(44,"N"),e(45,"O"),e(46,"P"),e(47,"Q"),e(48,"R"),e(49,"S"),e(50,"T"),e(51,"U"),e(52,"V"),e(53,"W"),e(54,"X"),e(55,"Y"),e(56,"Z"),e(57,"Meta"),e(58,"ContextMenu"),e(59,"F1"),e(60,"F2"),e(61,"F3"),e(62,"F4"),e(63,"F5"),e(64,"F6"),e(65,"F7"),e(66,"F8"),e(67,"F9"),e(68,"F10"),e(69,"F11"),e(70,"F12"),e(71,"F13"),e(72,"F14"),e(73,"F15"),e(74,"F16"),e(75,"F17"),e(76,"F18"),e(77,"F19"),e(78,"NumLock"),e(79,"ScrollLock"),e(80,";",";","OEM_1"),e(81,"=","=","OEM_PLUS"),e(82,",",",","OEM_COMMA"),e(83,"-","-","OEM_MINUS"),e(84,".",".","OEM_PERIOD"),e(85,"/","/","OEM_2"),e(86,"`","`","OEM_3"),e(110,"ABNT_C1"),e(111,"ABNT_C2"),e(87,"[","[","OEM_4"),e(88,"\\","\\","OEM_5"),e(89,"]","]","OEM_6"),e(90,"'","'","OEM_7"),e(91,"OEM_8"),e(92,"OEM_102"),e(93,"NumPad0"),e(94,"NumPad1"),e(95,"NumPad2"),e(96,"NumPad3"),e(97,"NumPad4"),e(98,"NumPad5"),e(99,"NumPad6"),e(100,"NumPad7"),e(101,"NumPad8"),e(102,"NumPad9"),e(103,"NumPad_Multiply"),e(104,"NumPad_Add"),e(105,"NumPad_Separator"),e(106,"NumPad_Subtract"),e(107,"NumPad_Decimal"),e(108,"NumPad_Divide")}(),function(e){e.toString=function(e){return ct.keyCodeToStr(e)},e.fromString=function(e){return ct.strToKeyCode(e)},e.toUserSettingsUS=function(e){return ht.keyCodeToStr(e)},e.toUserSettingsGeneral=function(e){return ft.keyCodeToStr(e)},e.fromUserSettings=function(e){return ht.strToKeyCode(e)||ft.strToKeyCode(e)}}(dt||(dt={}));class Yt extends Oe{constructor(e,t,n,r){super(e,t,n,r),this.selectionStartLineNumber=e,this.selectionStartColumn=t,this.positionLineNumber=n,this.positionColumn=r}toString(){return"["+this.selectionStartLineNumber+","+this.selectionStartColumn+" -> "+this.positionLineNumber+","+this.positionColumn+"]"}equalsSelection(e){return Yt.selectionsEqual(this,e)}static selectionsEqual(e,t){return e.selectionStartLineNumber===t.selectionStartLineNumber&&e.selectionStartColumn===t.selectionStartColumn&&e.positionLineNumber===t.positionLineNumber&&e.positionColumn===t.positionColumn}getDirection(){return this.selectionStartLineNumber===this.startLineNumber&&this.selectionStartColumn===this.startColumn?0:1}setEndPosition(e,t){return 0===this.getDirection()?new Yt(this.startLineNumber,this.startColumn,e,t):new Yt(e,t,this.startLineNumber,this.startColumn)}getPosition(){return new ke(this.positionLineNumber,this.positionColumn)}setStartPosition(e,t){return 0===this.getDirection()?new Yt(e,t,this.endLineNumber,this.endColumn):new Yt(this.endLineNumber,this.endColumn,e,t)}static fromPositions(e,t=e){return new Yt(e.lineNumber,e.column,t.lineNumber,t.column)}static liftSelection(e){return new Yt(e.selectionStartLineNumber,e.selectionStartColumn,e.positionLineNumber,e.positionColumn)}static selectionsArrEqual(e,t){if(e&&!t||!e&&t)return!1;if(!e&&!t)return!0;if(e.length!==t.length)return!1;for(let n=0,r=e.length;n<r;n++)if(!this.selectionsEqual(e[n],t[n]))return!1;return!0}static isISelection(e){return e&&"number"==typeof e.selectionStartLineNumber&&"number"==typeof e.selectionStartColumn&&"number"==typeof e.positionLineNumber&&"number"==typeof e.positionColumn}static createWithDirection(e,t,n,r,i){return 0===i?new Yt(e,t,n,r):new Yt(n,r,e,t)}}!function(e){e[e.Unknown=0]="Unknown",e[e.Disabled=1]="Disabled",e[e.Enabled=2]="Enabled"}(mt||(mt={})),function(e){e[e.KeepWhitespace=1]="KeepWhitespace",e[e.InsertAsSnippet=4]="InsertAsSnippet"}(gt||(gt={})),function(e){e[e.Method=0]="Method",e[e.Function=1]="Function",e[e.Constructor=2]="Constructor",e[e.Field=3]="Field",e[e.Variable=4]="Variable",e[e.Class=5]="Class",e[e.Struct=6]="Struct",e[e.Interface=7]="Interface",e[e.Module=8]="Module",e[e.Property=9]="Property",e[e.Event=10]="Event",e[e.Operator=11]="Operator",e[e.Unit=12]="Unit",e[e.Value=13]="Value",e[e.Constant=14]="Constant",e[e.Enum=15]="Enum",e[e.EnumMember=16]="EnumMember",e[e.Keyword=17]="Keyword",e[e.Text=18]="Text",e[e.Color=19]="Color",e[e.File=20]="File",e[e.Reference=21]="Reference",e[e.Customcolor=22]="Customcolor",e[e.Folder=23]="Folder",e[e.TypeParameter=24]="TypeParameter",e[e.User=25]="User",e[e.Issue=26]="Issue",e[e.Snippet=27]="Snippet"}(pt||(pt={})),function(e){e[e.Deprecated=1]="Deprecated"}(vt||(vt={})),function(e){e[e.Invoke=0]="Invoke",e[e.TriggerCharacter=1]="TriggerCharacter",e[e.TriggerForIncompleteCompletions=2]="TriggerForIncompleteCompletions"}(yt||(yt={})),function(e){e[e.EXACT=0]="EXACT",e[e.ABOVE=1]="ABOVE",e[e.BELOW=2]="BELOW"}(bt||(bt={})),function(e){e[e.NotSet=0]="NotSet",e[e.ContentFlush=1]="ContentFlush",e[e.RecoverFromMarkers=2]="RecoverFromMarkers",e[e.Explicit=3]="Explicit",e[e.Paste=4]="Paste",e[e.Undo=5]="Undo",e[e.Redo=6]="Redo"}(Ct||(Ct={})),function(e){e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(_t||(_t={})),function(e){e[e.Text=0]="Text",e[e.Read=1]="Read",e[e.Write=2]="Write"}(St||(St={})),function(e){e[e.None=0]="None",e[e.Keep=1]="Keep",e[e.Brackets=2]="Brackets",e[e.Advanced=3]="Advanced",e[e.Full=4]="Full"}(Et||(Et={})),function(e){e[e.acceptSuggestionOnCommitCharacter=0]="acceptSuggestionOnCommitCharacter",e[e.acceptSuggestionOnEnter=1]="acceptSuggestionOnEnter",e[e.accessibilitySupport=2]="accessibilitySupport",e[e.accessibilityPageSize=3]="accessibilityPageSize",e[e.ariaLabel=4]="ariaLabel",e[e.autoClosingBrackets=5]="autoClosingBrackets",e[e.autoClosingOvertype=6]="autoClosingOvertype",e[e.autoClosingQuotes=7]="autoClosingQuotes",e[e.autoIndent=8]="autoIndent",e[e.automaticLayout=9]="automaticLayout",e[e.autoSurround=10]="autoSurround",e[e.codeLens=11]="codeLens",e[e.colorDecorators=12]="colorDecorators",e[e.columnSelection=13]="columnSelection",e[e.comments=14]="comments",e[e.contextmenu=15]="contextmenu",e[e.copyWithSyntaxHighlighting=16]="copyWithSyntaxHighlighting",e[e.cursorBlinking=17]="cursorBlinking",e[e.cursorSmoothCaretAnimation=18]="cursorSmoothCaretAnimation",e[e.cursorStyle=19]="cursorStyle",e[e.cursorSurroundingLines=20]="cursorSurroundingLines",e[e.cursorSurroundingLinesStyle=21]="cursorSurroundingLinesStyle",e[e.cursorWidth=22]="cursorWidth",e[e.disableLayerHinting=23]="disableLayerHinting",e[e.disableMonospaceOptimizations=24]="disableMonospaceOptimizations",e[e.dragAndDrop=25]="dragAndDrop",e[e.emptySelectionClipboard=26]="emptySelectionClipboard",e[e.extraEditorClassName=27]="extraEditorClassName",e[e.fastScrollSensitivity=28]="fastScrollSensitivity",e[e.find=29]="find",e[e.fixedOverflowWidgets=30]="fixedOverflowWidgets",e[e.folding=31]="folding",e[e.foldingStrategy=32]="foldingStrategy",e[e.foldingHighlight=33]="foldingHighlight",e[e.unfoldOnClickAfterEndOfLine=34]="unfoldOnClickAfterEndOfLine",e[e.fontFamily=35]="fontFamily",e[e.fontInfo=36]="fontInfo",e[e.fontLigatures=37]="fontLigatures",e[e.fontSize=38]="fontSize",e[e.fontWeight=39]="fontWeight",e[e.formatOnPaste=40]="formatOnPaste",e[e.formatOnType=41]="formatOnType",e[e.glyphMargin=42]="glyphMargin",e[e.gotoLocation=43]="gotoLocation",e[e.hideCursorInOverviewRuler=44]="hideCursorInOverviewRuler",e[e.highlightActiveIndentGuide=45]="highlightActiveIndentGuide",e[e.hover=46]="hover",e[e.inDiffEditor=47]="inDiffEditor",e[e.letterSpacing=48]="letterSpacing",e[e.lightbulb=49]="lightbulb",e[e.lineDecorationsWidth=50]="lineDecorationsWidth",e[e.lineHeight=51]="lineHeight",e[e.lineNumbers=52]="lineNumbers",e[e.lineNumbersMinChars=53]="lineNumbersMinChars",e[e.links=54]="links",e[e.matchBrackets=55]="matchBrackets",e[e.minimap=56]="minimap",e[e.mouseStyle=57]="mouseStyle",e[e.mouseWheelScrollSensitivity=58]="mouseWheelScrollSensitivity",e[e.mouseWheelZoom=59]="mouseWheelZoom",e[e.multiCursorMergeOverlapping=60]="multiCursorMergeOverlapping",e[e.multiCursorModifier=61]="multiCursorModifier",e[e.multiCursorPaste=62]="multiCursorPaste",e[e.occurrencesHighlight=63]="occurrencesHighlight",e[e.overviewRulerBorder=64]="overviewRulerBorder",e[e.overviewRulerLanes=65]="overviewRulerLanes",e[e.padding=66]="padding",e[e.parameterHints=67]="parameterHints",e[e.peekWidgetDefaultFocus=68]="peekWidgetDefaultFocus",e[e.definitionLinkOpensInPeek=69]="definitionLinkOpensInPeek",e[e.quickSuggestions=70]="quickSuggestions",e[e.quickSuggestionsDelay=71]="quickSuggestionsDelay",e[e.readOnly=72]="readOnly",e[e.renameOnType=73]="renameOnType",e[e.renderControlCharacters=74]="renderControlCharacters",e[e.renderIndentGuides=75]="renderIndentGuides",e[e.renderFinalNewline=76]="renderFinalNewline",e[e.renderLineHighlight=77]="renderLineHighlight",e[e.renderLineHighlightOnlyWhenFocus=78]="renderLineHighlightOnlyWhenFocus",e[e.renderValidationDecorations=79]="renderValidationDecorations",e[e.renderWhitespace=80]="renderWhitespace",e[e.revealHorizontalRightPadding=81]="revealHorizontalRightPadding",e[e.roundedSelection=82]="roundedSelection",e[e.rulers=83]="rulers",e[e.scrollbar=84]="scrollbar",e[e.scrollBeyondLastColumn=85]="scrollBeyondLastColumn",e[e.scrollBeyondLastLine=86]="scrollBeyondLastLine",e[e.scrollPredominantAxis=87]="scrollPredominantAxis",e[e.selectionClipboard=88]="selectionClipboard",e[e.selectionHighlight=89]="selectionHighlight",e[e.selectOnLineNumbers=90]="selectOnLineNumbers",e[e.showFoldingControls=91]="showFoldingControls",e[e.showUnused=92]="showUnused",e[e.snippetSuggestions=93]="snippetSuggestions",e[e.smoothScrolling=94]="smoothScrolling",e[e.stopRenderingLineAfter=95]="stopRenderingLineAfter",e[e.suggest=96]="suggest",e[e.suggestFontSize=97]="suggestFontSize",e[e.suggestLineHeight=98]="suggestLineHeight",e[e.suggestOnTriggerCharacters=99]="suggestOnTriggerCharacters",e[e.suggestSelection=100]="suggestSelection",e[e.tabCompletion=101]="tabCompletion",e[e.tabIndex=102]="tabIndex",e[e.unusualLineTerminators=103]="unusualLineTerminators",e[e.useTabStops=104]="useTabStops",e[e.wordSeparators=105]="wordSeparators",e[e.wordWrap=106]="wordWrap",e[e.wordWrapBreakAfterCharacters=107]="wordWrapBreakAfterCharacters",e[e.wordWrapBreakBeforeCharacters=108]="wordWrapBreakBeforeCharacters",e[e.wordWrapColumn=109]="wordWrapColumn",e[e.wordWrapMinified=110]="wordWrapMinified",e[e.wrappingIndent=111]="wrappingIndent",e[e.wrappingStrategy=112]="wrappingStrategy",e[e.showDeprecated=113]="showDeprecated",e[e.editorClassName=114]="editorClassName",e[e.pixelRatio=115]="pixelRatio",e[e.tabFocusMode=116]="tabFocusMode",e[e.layoutInfo=117]="layoutInfo",e[e.wrappingInfo=118]="wrappingInfo"}(At||(At={})),function(e){e[e.TextDefined=0]="TextDefined",e[e.LF=1]="LF",e[e.CRLF=2]="CRLF"}(xt||(xt={})),function(e){e[e.LF=0]="LF",e[e.CRLF=1]="CRLF"}(Nt||(Nt={})),function(e){e[e.None=0]="None",e[e.Indent=1]="Indent",e[e.IndentOutdent=2]="IndentOutdent",e[e.Outdent=3]="Outdent"}(Lt||(Lt={})),function(e){e[e.Unknown=0]="Unknown",e[e.Backspace=1]="Backspace",e[e.Tab=2]="Tab",e[e.Enter=3]="Enter",e[e.Shift=4]="Shift",e[e.Ctrl=5]="Ctrl",e[e.Alt=6]="Alt",e[e.PauseBreak=7]="PauseBreak",e[e.CapsLock=8]="CapsLock",e[e.Escape=9]="Escape",e[e.Space=10]="Space",e[e.PageUp=11]="PageUp",e[e.PageDown=12]="PageDown",e[e.End=13]="End",e[e.Home=14]="Home",e[e.LeftArrow=15]="LeftArrow",e[e.UpArrow=16]="UpArrow",e[e.RightArrow=17]="RightArrow",e[e.DownArrow=18]="DownArrow",e[e.Insert=19]="Insert",e[e.Delete=20]="Delete",e[e.KEY_0=21]="KEY_0",e[e.KEY_1=22]="KEY_1",e[e.KEY_2=23]="KEY_2",e[e.KEY_3=24]="KEY_3",e[e.KEY_4=25]="KEY_4",e[e.KEY_5=26]="KEY_5",e[e.KEY_6=27]="KEY_6",e[e.KEY_7=28]="KEY_7",e[e.KEY_8=29]="KEY_8",e[e.KEY_9=30]="KEY_9",e[e.KEY_A=31]="KEY_A",e[e.KEY_B=32]="KEY_B",e[e.KEY_C=33]="KEY_C",e[e.KEY_D=34]="KEY_D",e[e.KEY_E=35]="KEY_E",e[e.KEY_F=36]="KEY_F",e[e.KEY_G=37]="KEY_G",e[e.KEY_H=38]="KEY_H",e[e.KEY_I=39]="KEY_I",e[e.KEY_J=40]="KEY_J",e[e.KEY_K=41]="KEY_K",e[e.KEY_L=42]="KEY_L",e[e.KEY_M=43]="KEY_M",e[e.KEY_N=44]="KEY_N",e[e.KEY_O=45]="KEY_O",e[e.KEY_P=46]="KEY_P",e[e.KEY_Q=47]="KEY_Q",e[e.KEY_R=48]="KEY_R",e[e.KEY_S=49]="KEY_S",e[e.KEY_T=50]="KEY_T",e[e.KEY_U=51]="KEY_U",e[e.KEY_V=52]="KEY_V",e[e.KEY_W=53]="KEY_W",e[e.KEY_X=54]="KEY_X",e[e.KEY_Y=55]="KEY_Y",e[e.KEY_Z=56]="KEY_Z",e[e.Meta=57]="Meta",e[e.ContextMenu=58]="ContextMenu",e[e.F1=59]="F1",e[e.F2=60]="F2",e[e.F3=61]="F3",e[e.F4=62]="F4",e[e.F5=63]="F5",e[e.F6=64]="F6",e[e.F7=65]="F7",e[e.F8=66]="F8",e[e.F9=67]="F9",e[e.F10=68]="F10",e[e.F11=69]="F11",e[e.F12=70]="F12",e[e.F13=71]="F13",e[e.F14=72]="F14",e[e.F15=73]="F15",e[e.F16=74]="F16",e[e.F17=75]="F17",e[e.F18=76]="F18",e[e.F19=77]="F19",e[e.NumLock=78]="NumLock",e[e.ScrollLock=79]="ScrollLock",e[e.US_SEMICOLON=80]="US_SEMICOLON",e[e.US_EQUAL=81]="US_EQUAL",e[e.US_COMMA=82]="US_COMMA",e[e.US_MINUS=83]="US_MINUS",e[e.US_DOT=84]="US_DOT",e[e.US_SLASH=85]="US_SLASH",e[e.US_BACKTICK=86]="US_BACKTICK",e[e.US_OPEN_SQUARE_BRACKET=87]="US_OPEN_SQUARE_BRACKET",e[e.US_BACKSLASH=88]="US_BACKSLASH",e[e.US_CLOSE_SQUARE_BRACKET=89]="US_CLOSE_SQUARE_BRACKET",e[e.US_QUOTE=90]="US_QUOTE",e[e.OEM_8=91]="OEM_8",e[e.OEM_102=92]="OEM_102",e[e.NUMPAD_0=93]="NUMPAD_0",e[e.NUMPAD_1=94]="NUMPAD_1",e[e.NUMPAD_2=95]="NUMPAD_2",e[e.NUMPAD_3=96]="NUMPAD_3",e[e.NUMPAD_4=97]="NUMPAD_4",e[e.NUMPAD_5=98]="NUMPAD_5",e[e.NUMPAD_6=99]="NUMPAD_6",e[e.NUMPAD_7=100]="NUMPAD_7",e[e.NUMPAD_8=101]="NUMPAD_8",e[e.NUMPAD_9=102]="NUMPAD_9",e[e.NUMPAD_MULTIPLY=103]="NUMPAD_MULTIPLY",e[e.NUMPAD_ADD=104]="NUMPAD_ADD",e[e.NUMPAD_SEPARATOR=105]="NUMPAD_SEPARATOR",e[e.NUMPAD_SUBTRACT=106]="NUMPAD_SUBTRACT",e[e.NUMPAD_DECIMAL=107]="NUMPAD_DECIMAL",e[e.NUMPAD_DIVIDE=108]="NUMPAD_DIVIDE",e[e.KEY_IN_COMPOSITION=109]="KEY_IN_COMPOSITION",e[e.ABNT_C1=110]="ABNT_C1",e[e.ABNT_C2=111]="ABNT_C2",e[e.MAX_VALUE=112]="MAX_VALUE"}(wt||(wt={})),function(e){e[e.Hint=1]="Hint",e[e.Info=2]="Info",e[e.Warning=4]="Warning",e[e.Error=8]="Error"}(Tt||(Tt={})),function(e){e[e.Unnecessary=1]="Unnecessary",e[e.Deprecated=2]="Deprecated"}(kt||(kt={})),function(e){e[e.Inline=1]="Inline",e[e.Gutter=2]="Gutter"}(Ot||(Ot={})),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.TEXTAREA=1]="TEXTAREA",e[e.GUTTER_GLYPH_MARGIN=2]="GUTTER_GLYPH_MARGIN",e[e.GUTTER_LINE_NUMBERS=3]="GUTTER_LINE_NUMBERS",e[e.GUTTER_LINE_DECORATIONS=4]="GUTTER_LINE_DECORATIONS",e[e.GUTTER_VIEW_ZONE=5]="GUTTER_VIEW_ZONE",e[e.CONTENT_TEXT=6]="CONTENT_TEXT",e[e.CONTENT_EMPTY=7]="CONTENT_EMPTY",e[e.CONTENT_VIEW_ZONE=8]="CONTENT_VIEW_ZONE",e[e.CONTENT_WIDGET=9]="CONTENT_WIDGET",e[e.OVERVIEW_RULER=10]="OVERVIEW_RULER",e[e.SCROLLBAR=11]="SCROLLBAR",e[e.OVERLAY_WIDGET=12]="OVERLAY_WIDGET",e[e.OUTSIDE_EDITOR=13]="OUTSIDE_EDITOR"}(It||(It={})),function(e){e[e.TOP_RIGHT_CORNER=0]="TOP_RIGHT_CORNER",e[e.BOTTOM_RIGHT_CORNER=1]="BOTTOM_RIGHT_CORNER",e[e.TOP_CENTER=2]="TOP_CENTER"}(Mt||(Mt={})),function(e){e[e.Left=1]="Left",e[e.Center=2]="Center",e[e.Right=4]="Right",e[e.Full=7]="Full"}(Pt||(Pt={})),function(e){e[e.Off=0]="Off",e[e.On=1]="On",e[e.Relative=2]="Relative",e[e.Interval=3]="Interval",e[e.Custom=4]="Custom"}(Rt||(Rt={})),function(e){e[e.None=0]="None",e[e.Text=1]="Text",e[e.Blocks=2]="Blocks"}(Dt||(Dt={})),function(e){e[e.Smooth=0]="Smooth",e[e.Immediate=1]="Immediate"}(Ft||(Ft={})),function(e){e[e.Auto=1]="Auto",e[e.Hidden=2]="Hidden",e[e.Visible=3]="Visible"}(jt||(jt={})),function(e){e[e.LTR=0]="LTR",e[e.RTL=1]="RTL"}(Ut||(Ut={})),function(e){e[e.Invoke=1]="Invoke",e[e.TriggerCharacter=2]="TriggerCharacter",e[e.ContentChange=3]="ContentChange"}(Vt||(Vt={})),function(e){e[e.File=0]="File",e[e.Module=1]="Module",e[e.Namespace=2]="Namespace",e[e.Package=3]="Package",e[e.Class=4]="Class",e[e.Method=5]="Method",e[e.Property=6]="Property",e[e.Field=7]="Field",e[e.Constructor=8]="Constructor",e[e.Enum=9]="Enum",e[e.Interface=10]="Interface",e[e.Function=11]="Function",e[e.Variable=12]="Variable",e[e.Constant=13]="Constant",e[e.String=14]="String",e[e.Number=15]="Number",e[e.Boolean=16]="Boolean",e[e.Array=17]="Array",e[e.Object=18]="Object",e[e.Key=19]="Key",e[e.Null=20]="Null",e[e.EnumMember=21]="EnumMember",e[e.Struct=22]="Struct",e[e.Event=23]="Event",e[e.Operator=24]="Operator",e[e.TypeParameter=25]="TypeParameter"}($t||($t={})),function(e){e[e.Deprecated=1]="Deprecated"}(Wt||(Wt={})),function(e){e[e.Hidden=0]="Hidden",e[e.Blink=1]="Blink",e[e.Smooth=2]="Smooth",e[e.Phase=3]="Phase",e[e.Expand=4]="Expand",e[e.Solid=5]="Solid"}(qt||(qt={})),function(e){e[e.Line=1]="Line",e[e.Block=2]="Block",e[e.Underline=3]="Underline",e[e.LineThin=4]="LineThin",e[e.BlockOutline=5]="BlockOutline",e[e.UnderlineThin=6]="UnderlineThin"}(Kt||(Kt={})),function(e){e[e.AlwaysGrowsWhenTypingAtEdges=0]="AlwaysGrowsWhenTypingAtEdges",e[e.NeverGrowsWhenTypingAtEdges=1]="NeverGrowsWhenTypingAtEdges",e[e.GrowsOnlyWhenTypingBefore=2]="GrowsOnlyWhenTypingBefore",e[e.GrowsOnlyWhenTypingAfter=3]="GrowsOnlyWhenTypingAfter"}(Bt||(Bt={})),function(e){e[e.None=0]="None",e[e.Same=1]="Same",e[e.Indent=2]="Indent",e[e.DeepIndent=3]="DeepIndent"}(Ht||(Ht={}));class Gt{static chord(e,t){return function(e,t){return(e|(65535&t)<<16>>>0)>>>0}(e,t)}}Gt.CtrlCmd=2048,Gt.Shift=1024,Gt.Alt=512,Gt.WinCtrl=256;var zt=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};class Jt extends class{constructor(e,t,n,r){this._uri=e,this._lines=t,this._eol=n,this._versionId=r,this._lineStarts=null,this._cachedTextValue=null}dispose(){this._lines.length=0}getText(){return null===this._cachedTextValue&&(this._cachedTextValue=this._lines.join(this._eol)),this._cachedTextValue}onEvents(e){e.eol&&e.eol!==this._eol&&(this._eol=e.eol,this._lineStarts=null);const t=e.changes;for(const e of t)this._acceptDeleteRange(e.range),this._acceptInsertText(new ke(e.range.startLineNumber,e.range.startColumn),e.text);this._versionId=e.versionId,this._cachedTextValue=null}_ensureLineStarts(){if(!this._lineStarts){const e=this._eol.length,t=this._lines.length,n=new Uint32Array(t);for(let r=0;r<t;r++)n[r]=this._lines[r].length+e;this._lineStarts=new Ke(n)}}_setLineText(e,t){this._lines[e]=t,this._lineStarts&&this._lineStarts.changeValue(e,this._lines[e].length+this._eol.length)}_acceptDeleteRange(e){if(e.startLineNumber!==e.endLineNumber)this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.endLineNumber-1].substring(e.endColumn-1)),this._lines.splice(e.startLineNumber,e.endLineNumber-e.startLineNumber),this._lineStarts&&this._lineStarts.removeValues(e.startLineNumber,e.endLineNumber-e.startLineNumber);else{if(e.startColumn===e.endColumn)return;this._setLineText(e.startLineNumber-1,this._lines[e.startLineNumber-1].substring(0,e.startColumn-1)+this._lines[e.startLineNumber-1].substring(e.endColumn-1))}}_acceptInsertText(e,t){if(0===t.length)return;let n=t.split(/\r\n|\r|\n/);if(1===n.length)return void this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+n[0]+this._lines[e.lineNumber-1].substring(e.column-1));n[n.length-1]+=this._lines[e.lineNumber-1].substring(e.column-1),this._setLineText(e.lineNumber-1,this._lines[e.lineNumber-1].substring(0,e.column-1)+n[0]);let r=new Uint32Array(n.length-1);for(let t=1;t<n.length;t++)this._lines.splice(e.lineNumber+t-1,0,n[t]),r[t-1]=n[t].length+this._eol.length;this._lineStarts&&this._lineStarts.insertValues(e.lineNumber,r)}}{get uri(){return this._uri}get version(){return this._versionId}get eol(){return this._eol}getValue(){return this.getText()}getLinesContent(){return this._lines.slice(0)}getLineCount(){return this._lines.length}getLineContent(e){return this._lines[e-1]}getWordAtPosition(e,t){let n=Ye(e.column,function(e){let t=Be;if(e&&e instanceof RegExp)if(e.global)t=e;else{let n="g";e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.unicode&&(n+="u"),t=new RegExp(e.source,n)}return t.lastIndex=0,t}(t),this._lines[e.lineNumber-1],0);return n?new Oe(e.lineNumber,n.startColumn,e.lineNumber,n.endColumn):null}words(e){const t=this._lines,n=this._wordenize.bind(this);let r=0,i="",o=0,s=[];return{*[Symbol.iterator](){for(;;)if(o<s.length){const e=i.substring(s[o].start,s[o].end);o+=1,yield e}else{if(!(r<t.length))break;i=t[r],s=n(i,e),o=0,r+=1}}}}getLineWords(e,t){let n=this._lines[e-1],r=this._wordenize(n,t),i=[];for(const e of r)i.push({word:n.substring(e.start,e.end),startColumn:e.start+1,endColumn:e.end+1});return i}_wordenize(e,t){const n=[];let r;for(t.lastIndex=0;(r=t.exec(e))&&0!==r[0].length;)n.push({start:r.index,end:r.index+r[0].length});return n}getValueInRange(e){if((e=this._validateRange(e)).startLineNumber===e.endLineNumber)return this._lines[e.startLineNumber-1].substring(e.startColumn-1,e.endColumn-1);let t=this._eol,n=e.startLineNumber-1,r=e.endLineNumber-1,i=[];i.push(this._lines[n].substring(e.startColumn-1));for(let e=n+1;e<r;e++)i.push(this._lines[e]);return i.push(this._lines[r].substring(0,e.endColumn-1)),i.join(t)}offsetAt(e){return e=this._validatePosition(e),this._ensureLineStarts(),this._lineStarts.getAccumulatedValue(e.lineNumber-2)+(e.column-1)}positionAt(e){e=Math.floor(e),e=Math.max(0,e),this._ensureLineStarts();let t=this._lineStarts.getIndexOf(e),n=this._lines[t.index].length;return{lineNumber:1+t.index,column:1+Math.min(t.remainder,n)}}_validateRange(e){const t=this._validatePosition({lineNumber:e.startLineNumber,column:e.startColumn}),n=this._validatePosition({lineNumber:e.endLineNumber,column:e.endColumn});return t.lineNumber!==e.startLineNumber||t.column!==e.startColumn||n.lineNumber!==e.endLineNumber||n.column!==e.endColumn?{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:n.lineNumber,endColumn:n.column}:e}_validatePosition(e){if(!ke.isIPosition(e))throw new Error("bad position");let{lineNumber:t,column:n}=e,r=!1;if(t<1)t=1,n=1,r=!0;else if(t>this._lines.length)t=this._lines.length,n=this._lines[t-1].length+1,r=!0;else{let e=this._lines[t-1].length+1;n<1?(n=1,r=!0):n>e&&(n=e,r=!0)}return r?{lineNumber:t,column:n}:e}}class Qt{constructor(e,t){this._host=e,this._models=Object.create(null),this._foreignModuleFactory=t,this._foreignModule=null}dispose(){this._models=Object.create(null)}_getModel(e){return this._models[e]}_getModels(){let e=[];return Object.keys(this._models).forEach((t=>e.push(this._models[t]))),e}acceptNewModel(e){this._models[e.url]=new Jt(be.parse(e.url),e.lines,e.EOL,e.versionId)}acceptModelChanged(e,t){this._models[e]&&this._models[e].onEvents(t)}acceptRemovedModel(e){this._models[e]&&delete this._models[e]}computeDiff(e,t,n,r){return zt(this,void 0,void 0,(function*(){const i=this._getModel(e),o=this._getModel(t);if(!i||!o)return null;const s=i.getLinesContent(),a=o.getLinesContent(),u=new Fe(s,a,{shouldComputeCharChanges:!0,shouldPostProcessCharChanges:!0,shouldIgnoreTrimWhitespace:n,shouldMakePrettyDiff:!0,maxComputationTime:r}).computeDiff(),l=!(u.changes.length>0)&&this._modelsAreIdentical(i,o);return{quitEarly:u.quitEarly,identical:l,changes:u.changes}}))}_modelsAreIdentical(e,t){const n=e.getLineCount();if(n!==t.getLineCount())return!1;for(let r=1;r<=n;r++)if(e.getLineContent(r)!==t.getLineContent(r))return!1;return!0}computeMoreMinimalEdits(e,t){return zt(this,void 0,void 0,(function*(){const n=this._getModel(e);if(!n)return t;const r=[];let i;t=I(t,((e,t)=>e.range&&t.range?Oe.compareRangesUsingStarts(e.range,t.range):(e.range?0:1)-(t.range?0:1)));for(let{range:e,text:o,eol:s}of t){if("number"==typeof s&&(i=s),Oe.isEmpty(e)&&!o)continue;const t=n.getValueInRange(e);if(o=o.replace(/\r\n|\n|\r/g,n.eol),t===o)continue;if(Math.max(o.length,t.length)>Qt._diffLimit){r.push({range:e,text:o});continue}const a=B(t,o,!1),u=n.offsetAt(Oe.lift(e).getStartPosition());for(const e of a){const t=n.positionAt(u+e.originalStart),i=n.positionAt(u+e.originalStart+e.originalLength),s={text:o.substr(e.modifiedStart,e.modifiedLength),range:{startLineNumber:t.lineNumber,startColumn:t.column,endLineNumber:i.lineNumber,endColumn:i.column}};n.getValueInRange(s.range)!==s.text&&r.push(s)}}return"number"==typeof i&&r.push({eol:i,text:"",range:{startLineNumber:0,startColumn:0,endLineNumber:0,endColumn:0}}),r}))}computeLinks(e){return zt(this,void 0,void 0,(function*(){let t=this._getModel(e);return t?function(e){return e&&"function"==typeof e.getLineCount&&"function"==typeof e.getLineContent?et.computeLinks(e):[]}(t):null}))}textualSuggest(e,t,n,r){return zt(this,void 0,void 0,(function*(){const i=this._getModel(e);if(!i)return null;const o=[],s=new Set,a=new RegExp(n,r),u=i.getWordAtPosition(t,a);u&&s.add(i.getValueInRange(u));for(let e of i.words(a))if(!s.has(e)&&(s.add(e),isNaN(Number(e))&&(o.push(e),s.size>Qt._suggestionsLimit)))break;return o}))}computeWordRanges(e,t,n,r){return zt(this,void 0,void 0,(function*(){let i=this._getModel(e);if(!i)return Object.create(null);const o=new RegExp(n,r),s=Object.create(null);for(let e=t.startLineNumber;e<t.endLineNumber;e++){let t=i.getLineWords(e,o);for(const n of t){if(!isNaN(Number(n.word)))continue;let t=s[n.word];t||(t=[],s[n.word]=t),t.push({startLineNumber:e,startColumn:n.startColumn,endLineNumber:e,endColumn:n.endColumn})}}return s}))}navigateValueSet(e,t,n,r,i){return zt(this,void 0,void 0,(function*(){let o=this._getModel(e);if(!o)return null;let s=new RegExp(r,i);t.startColumn===t.endColumn&&(t={startLineNumber:t.startLineNumber,startColumn:t.startColumn,endLineNumber:t.endLineNumber,endColumn:t.endColumn+1});let a=o.getValueInRange(t),u=o.getWordAtPosition({lineNumber:t.startLineNumber,column:t.startColumn},s);if(!u)return null;let l=o.getValueInRange(u);return tt.INSTANCE.navigateValueSet(t,a,u,l,n)}))}loadForeignModule(e,t,n){let r={host:T(n,((e,t)=>this._host.fhr(e,t))),getMirrorModels:()=>this._getModels()};return this._foreignModuleFactory?(this._foreignModule=this._foreignModuleFactory(r,t),Promise.resolve(w(this._foreignModule))):Promise.reject(new Error("Unexpected usage"))}fmr(e,t){if(!this._foreignModule||"function"!=typeof this._foreignModule[e])return Promise.reject(new Error("Missing requestHandler or method: "+e));try{return Promise.resolve(this._foreignModule[e].apply(this._foreignModule,t))}catch(e){return Promise.reject(e)}}}Qt._diffLimit=1e5,Qt._suggestionsLimit=1e4,"function"==typeof importScripts&&(N.monaco={editor:void 0,languages:void 0,CancellationTokenSource:class{constructor(e){this._token=void 0,this._parentListener=void 0,this._parentListener=e&&e.onCancellationRequested(this.cancel,this)}get token(){return this._token||(this._token=new ut),this._token}cancel(){this._token?this._token instanceof ut&&this._token.cancel():this._token=at.Cancelled}dispose(e=!1){e&&this.cancel(),this._parentListener&&this._parentListener.dispose(),this._token?this._token instanceof ut&&this._token.dispose():this._token=at.None}},Emitter:ot,KeyCode:wt,KeyMod:Gt,Position:ke,Range:Oe,Selection:Yt,SelectionDirection:Ut,MarkerSeverity:Tt,MarkerTag:kt,Uri:be,Token:class{constructor(e,t,n){this.offset=0|e,this.type=t,this.language=n}toString(){return"("+this.offset+", "+this.type+")"}}});let Zt=!1;function Xt(e){if(Zt)return;Zt=!0;const t=new O((e=>{self.postMessage(e)}),(t=>new Qt(t,e)));self.onmessage=e=>{t.onmessage(e.data)}}function en(e,t){void 0===t&&(t=!1);var n=e.length,r=0,i="",o=0,s=16,a=0,u=0,l=0,c=0,h=0;function f(t,n){for(var i=0,o=0;i<t||!n;){var s=e.charCodeAt(r);if(s>=48&&s<=57)o=16*o+s-48;else if(s>=65&&s<=70)o=16*o+s-65+10;else{if(!(s>=97&&s<=102))break;o=16*o+s-97+10}r++,i++}return i<t&&(o=-1),o}function d(){if(i="",h=0,o=r,u=a,c=l,r>=n)return o=n,s=17;var t=e.charCodeAt(r);if(tn(t)){do{r++,i+=String.fromCharCode(t),t=e.charCodeAt(r)}while(tn(t));return s=15}if(nn(t))return r++,i+=String.fromCharCode(t),13===t&&10===e.charCodeAt(r)&&(r++,i+="\n"),a++,l=r,s=14;switch(t){case 123:return r++,s=1;case 125:return r++,s=2;case 91:return r++,s=3;case 93:return r++,s=4;case 58:return r++,s=6;case 44:return r++,s=5;case 34:return r++,i=function(){for(var t="",i=r;;){if(r>=n){t+=e.substring(i,r),h=2;break}var o=e.charCodeAt(r);if(34===o){t+=e.substring(i,r),r++;break}if(92!==o){if(o>=0&&o<=31){if(nn(o)){t+=e.substring(i,r),h=2;break}h=6}r++}else{if(t+=e.substring(i,r),++r>=n){h=2;break}switch(e.charCodeAt(r++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:var s=f(4,!0);s>=0?t+=String.fromCharCode(s):h=4;break;default:h=5}i=r}}return t}(),s=10;case 47:var d=r-1;if(47===e.charCodeAt(r+1)){for(r+=2;r<n&&!nn(e.charCodeAt(r));)r++;return i=e.substring(d,r),s=12}if(42===e.charCodeAt(r+1)){r+=2;for(var g=n-1,p=!1;r<g;){var v=e.charCodeAt(r);if(42===v&&47===e.charCodeAt(r+1)){r+=2,p=!0;break}r++,nn(v)&&(13===v&&10===e.charCodeAt(r)&&r++,a++,l=r)}return p||(r++,h=1),i=e.substring(d,r),s=13}return i+=String.fromCharCode(t),r++,s=16;case 45:if(i+=String.fromCharCode(t),++r===n||!rn(e.charCodeAt(r)))return s=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return i+=function(){var t=r;if(48===e.charCodeAt(r))r++;else for(r++;r<e.length&&rn(e.charCodeAt(r));)r++;if(r<e.length&&46===e.charCodeAt(r)){if(!(++r<e.length&&rn(e.charCodeAt(r))))return h=3,e.substring(t,r);for(r++;r<e.length&&rn(e.charCodeAt(r));)r++}var n=r;if(r<e.length&&(69===e.charCodeAt(r)||101===e.charCodeAt(r)))if((++r<e.length&&43===e.charCodeAt(r)||45===e.charCodeAt(r))&&r++,r<e.length&&rn(e.charCodeAt(r))){for(r++;r<e.length&&rn(e.charCodeAt(r));)r++;n=r}else h=3;return e.substring(t,n)}(),s=11;default:for(;r<n&&m(t);)r++,t=e.charCodeAt(r);if(o!==r){switch(i=e.substring(o,r)){case"true":return s=8;case"false":return s=9;case"null":return s=7}return s=16}return i+=String.fromCharCode(t),r++,s=16}}function m(e){if(tn(e)||nn(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){r=e,i="",o=0,s=16,h=0},getPosition:function(){return r},scan:t?function(){var e;do{e=d()}while(e>=12&&e<=15);return e}:d,getToken:function(){return s},getTokenValue:function(){return i},getTokenOffset:function(){return o},getTokenLength:function(){return r-o},getTokenStartLine:function(){return u},getTokenStartCharacter:function(){return o-c},getTokenError:function(){return h}}}function tn(e){return 32===e||9===e||11===e||12===e||160===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function nn(e){return 10===e||13===e||8232===e||8233===e}function rn(e){return e>=48&&e<=57}function on(e,t){for(var n="",r=0;r<t;r++)n+=e;return n}function sn(e,t){return-1!=="\r\n".indexOf(e.charAt(t))}var an;self.onmessage=e=>{Zt||Xt(null)},function(e){e.DEFAULT={allowTrailingComma:!1}}(an||(an={}));var un,ln,cn,hn,fn,dn,mn,gn,pn,vn,yn,bn,Cn,_n,Sn,En,An,xn,Nn,Ln,wn=en,Tn=function(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=an.DEFAULT);var r=null,i=[],o=[];function s(e){Array.isArray(i)?i.push(e):null!==r&&(i[r]=e)}return function(e,t,n){void 0===n&&(n=an.DEFAULT);var r=en(e,!1);function i(e){return e?function(){return e(r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}function o(e){return e?function(t){return e(t,r.getTokenOffset(),r.getTokenLength(),r.getTokenStartLine(),r.getTokenStartCharacter())}:function(){return!0}}var s=i(t.onObjectBegin),a=o(t.onObjectProperty),u=i(t.onObjectEnd),l=i(t.onArrayBegin),c=i(t.onArrayEnd),h=o(t.onLiteralValue),f=o(t.onSeparator),d=i(t.onComment),m=o(t.onError),g=n&&n.disallowComments,p=n&&n.allowTrailingComma;function v(){for(;;){var e=r.scan();switch(r.getTokenError()){case 4:y(14);break;case 5:y(15);break;case 3:y(13);break;case 1:g||y(11);break;case 2:y(12);break;case 6:y(16)}switch(e){case 12:case 13:g?y(10):d();break;case 16:y(1);break;case 15:case 14:break;default:return e}}}function y(e,t,n){if(void 0===t&&(t=[]),void 0===n&&(n=[]),m(e),t.length+n.length>0)for(var i=r.getToken();17!==i;){if(-1!==t.indexOf(i)){v();break}if(-1!==n.indexOf(i))break;i=v()}}function b(e){var t=r.getTokenValue();return e?h(t):a(t),v(),!0}v(),17===r.getToken()?!!n.allowEmptyContent||y(4,[],[]):function e(){switch(r.getToken()){case 3:return function(){l(),v();for(var t=!1;4!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),f(","),v(),4===r.getToken()&&p)break}else t&&y(6,[],[]);e()||y(4,[],[4,5]),t=!0}return c(),4!==r.getToken()?y(8,[4],[]):v(),!0}();case 1:return function(){s(),v();for(var t=!1;2!==r.getToken()&&17!==r.getToken();){if(5===r.getToken()){if(t||y(4,[],[]),f(","),v(),2===r.getToken()&&p)break}else t&&y(6,[],[]);(10!==r.getToken()?(y(3,[],[2,5]),0):(b(!1),6===r.getToken()?(f(":"),v(),e()||y(4,[],[2,5])):y(5,[],[2,5]),1))||y(4,[],[2,5]),t=!0}return u(),2!==r.getToken()?y(7,[2],[]):v(),!0}();case 10:return b(!0);default:return function(){switch(r.getToken()){case 11:var e=0;try{"number"!=typeof(e=JSON.parse(r.getTokenValue()))&&(y(2),e=0)}catch(e){y(2)}h(e);break;case 7:h(null);break;case 8:h(!0);break;case 9:h(!1);break;default:return!1}return v(),!0}()}}()?17!==r.getToken()&&y(9,[],[]):y(4,[],[])}(e,{onObjectBegin:function(){var e={};s(e),o.push(i),i=e,r=null},onObjectProperty:function(e){r=e},onObjectEnd:function(){i=o.pop()},onArrayBegin:function(){var e=[];s(e),o.push(i),i=e,r=null},onArrayEnd:function(){i=o.pop()},onLiteralValue:s,onError:function(e,n,r){t.push({error:e,offset:n,length:r})}},n),i[0]},kn=function e(t,n,r){if(void 0===r&&(r=!1),function(e,t,n){return void 0===n&&(n=!1),t>=e.offset&&t<e.offset+e.length||n&&t===e.offset+e.length}(t,n,r)){var i=t.children;if(Array.isArray(i))for(var o=0;o<i.length&&i[o].offset<=n;o++){var s=e(i[o],n,r);if(s)return s}return t}},On=function e(t){if(!t.parent||!t.parent.children)return[];var n=e(t.parent);if("property"===t.parent.type){var r=t.parent.children[0].value;n.push(r)}else if("array"===t.parent.type){var i=t.parent.children.indexOf(t);-1!==i&&n.push(i)}return n},In=function e(t){switch(t.type){case"array":return t.children.map(e);case"object":for(var n=Object.create(null),r=0,i=t.children;r<i.length;r++){var o=i[r],s=o.children[1];s&&(n[o.children[0].value]=e(s))}return n;case"null":case"string":case"number":case"boolean":return t.value;default:return}};function Mn(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;if(Array.isArray(e)!==Array.isArray(t))return!1;var n,r;if(Array.isArray(e)){if(e.length!==t.length)return!1;for(n=0;n<e.length;n++)if(!Mn(e[n],t[n]))return!1}else{var i=[];for(r in e)i.push(r);i.sort();var o=[];for(r in t)o.push(r);if(o.sort(),!Mn(i,o))return!1;for(n=0;n<i.length;n++)if(!Mn(e[i[n]],t[i[n]]))return!1}return!0}function Pn(e){return"number"==typeof e}function Rn(e){return void 0!==e}function Dn(e){return"boolean"==typeof e}!function(e){e.create=function(e,t){return{line:e,character:t}},e.is=function(e){var t=e;return fr.objectLiteral(t)&&fr.number(t.line)&&fr.number(t.character)}}(un||(un={})),function(e){e.create=function(e,t,n,r){if(fr.number(e)&&fr.number(t)&&fr.number(n)&&fr.number(r))return{start:un.create(e,t),end:un.create(n,r)};if(un.is(e)&&un.is(t))return{start:e,end:t};throw new Error("Range#create called with invalid arguments["+e+", "+t+", "+n+", "+r+"]")},e.is=function(e){var t=e;return fr.objectLiteral(t)&&un.is(t.start)&&un.is(t.end)}}(ln||(ln={})),function(e){e.create=function(e,t){return{uri:e,range:t}},e.is=function(e){var t=e;return fr.defined(t)&&ln.is(t.range)&&(fr.string(t.uri)||fr.undefined(t.uri))}}(cn||(cn={})),function(e){e.create=function(e,t,n,r){return{targetUri:e,targetRange:t,targetSelectionRange:n,originSelectionRange:r}},e.is=function(e){var t=e;return fr.defined(t)&&ln.is(t.targetRange)&&fr.string(t.targetUri)&&(ln.is(t.targetSelectionRange)||fr.undefined(t.targetSelectionRange))&&(ln.is(t.originSelectionRange)||fr.undefined(t.originSelectionRange))}}(hn||(hn={})),function(e){e.create=function(e,t,n,r){return{red:e,green:t,blue:n,alpha:r}},e.is=function(e){var t=e;return fr.number(t.red)&&fr.number(t.green)&&fr.number(t.blue)&&fr.number(t.alpha)}}(fn||(fn={})),function(e){e.create=function(e,t){return{range:e,color:t}},e.is=function(e){var t=e;return ln.is(t.range)&&fn.is(t.color)}}(dn||(dn={})),function(e){e.create=function(e,t,n){return{label:e,textEdit:t,additionalTextEdits:n}},e.is=function(e){var t=e;return fr.string(t.label)&&(fr.undefined(t.textEdit)||Sn.is(t))&&(fr.undefined(t.additionalTextEdits)||fr.typedArray(t.additionalTextEdits,Sn.is))}}(mn||(mn={})),function(e){e.Comment="comment",e.Imports="imports",e.Region="region"}(gn||(gn={})),function(e){e.create=function(e,t,n,r,i){var o={startLine:e,endLine:t};return fr.defined(n)&&(o.startCharacter=n),fr.defined(r)&&(o.endCharacter=r),fr.defined(i)&&(o.kind=i),o},e.is=function(e){var t=e;return fr.number(t.startLine)&&fr.number(t.startLine)&&(fr.undefined(t.startCharacter)||fr.number(t.startCharacter))&&(fr.undefined(t.endCharacter)||fr.number(t.endCharacter))&&(fr.undefined(t.kind)||fr.string(t.kind))}}(pn||(pn={})),function(e){e.create=function(e,t){return{location:e,message:t}},e.is=function(e){var t=e;return fr.defined(t)&&cn.is(t.location)&&fr.string(t.message)}}(vn||(vn={})),function(e){e.Error=1,e.Warning=2,e.Information=3,e.Hint=4}(yn||(yn={})),function(e){e.Unnecessary=1,e.Deprecated=2}(bn||(bn={})),function(e){e.create=function(e,t,n,r,i,o){var s={range:e,message:t};return fr.defined(n)&&(s.severity=n),fr.defined(r)&&(s.code=r),fr.defined(i)&&(s.source=i),fr.defined(o)&&(s.relatedInformation=o),s},e.is=function(e){var t=e;return fr.defined(t)&&ln.is(t.range)&&fr.string(t.message)&&(fr.number(t.severity)||fr.undefined(t.severity))&&(fr.number(t.code)||fr.string(t.code)||fr.undefined(t.code))&&(fr.string(t.source)||fr.undefined(t.source))&&(fr.undefined(t.relatedInformation)||fr.typedArray(t.relatedInformation,vn.is))}}(Cn||(Cn={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={title:e,command:t};return fr.defined(n)&&n.length>0&&(i.arguments=n),i},e.is=function(e){var t=e;return fr.defined(t)&&fr.string(t.title)&&fr.string(t.command)}}(_n||(_n={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){var t=e;return fr.objectLiteral(t)&&fr.string(t.newText)&&ln.is(t.range)}}(Sn||(Sn={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return fr.defined(t)&&jn.is(t.textDocument)&&Array.isArray(t.edits)}}(En||(En={})),function(e){e.create=function(e,t){var n={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(n.options=t),n},e.is=function(e){var t=e;return t&&"create"===t.kind&&fr.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||fr.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||fr.boolean(t.options.ignoreIfExists)))}}(An||(An={})),function(e){e.create=function(e,t,n){var r={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(r.options=n),r},e.is=function(e){var t=e;return t&&"rename"===t.kind&&fr.string(t.oldUri)&&fr.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||fr.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||fr.boolean(t.options.ignoreIfExists)))}}(xn||(xn={})),function(e){e.create=function(e,t){var n={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(n.options=t),n},e.is=function(e){var t=e;return t&&"delete"===t.kind&&fr.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||fr.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||fr.boolean(t.options.ignoreIfNotExists)))}}(Nn||(Nn={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return fr.string(e.kind)?An.is(e)||xn.is(e)||Nn.is(e):En.is(e)})))}}(Ln||(Ln={}));var Fn,jn,Un,Vn,$n,Wn,qn,Kn,Bn,Hn,Yn,Gn,zn,Jn,Qn,Zn,Xn,er,tr,nr,rr,ir,or,sr,ar,ur,lr,cr,hr=function(){function e(e){this.edits=e}return e.prototype.insert=function(e,t){this.edits.push(Sn.insert(e,t))},e.prototype.replace=function(e,t){this.edits.push(Sn.replace(e,t))},e.prototype.delete=function(e){this.edits.push(Sn.del(e))},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),e&&(this._workspaceEdit=e,e.documentChanges?e.documentChanges.forEach((function(e){if(En.is(e)){var n=new hr(e.edits);t._textEditChanges[e.textDocument.uri]=n}})):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new hr(e.changes[n]);t._textEditChanges[n]=r})))}Object.defineProperty(e.prototype,"edit",{get:function(){return this._workspaceEdit},enumerable:!0,configurable:!0}),e.prototype.getTextEditChange=function(e){if(jn.is(e)){if(this._workspaceEdit||(this._workspaceEdit={documentChanges:[]}),!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t=e;if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new hr(i),this._textEditChanges[t.uri]=r}return r}if(this._workspaceEdit||(this._workspaceEdit={changes:Object.create(null)}),!this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new hr(i),this._textEditChanges[e]=r}return r},e.prototype.createFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(An.create(e,t))},e.prototype.renameFile=function(e,t,n){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(xn.create(e,t,n))},e.prototype.deleteFile=function(e,t){this.checkDocumentChanges(),this._workspaceEdit.documentChanges.push(Nn.create(e,t))},e.prototype.checkDocumentChanges=function(){if(!this._workspaceEdit||!this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.")}}(),function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return fr.defined(t)&&fr.string(t.uri)}}(Fn||(Fn={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return fr.defined(t)&&fr.string(t.uri)&&(null===t.version||fr.number(t.version))}}(jn||(jn={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){var t=e;return fr.defined(t)&&fr.string(t.uri)&&fr.string(t.languageId)&&fr.number(t.version)&&fr.string(t.text)}}(Un||(Un={})),function(e){e.PlainText="plaintext",e.Markdown="markdown"}(Vn||(Vn={})),function(e){e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(Vn||(Vn={})),function(e){e.is=function(e){var t=e;return fr.objectLiteral(e)&&Vn.is(t.kind)&&fr.string(t.value)}}($n||($n={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(Wn||(Wn={})),function(e){e.PlainText=1,e.Snippet=2}(qn||(qn={})),function(e){e.Deprecated=1}(Kn||(Kn={})),function(e){e.create=function(e){return{label:e}}}(Bn||(Bn={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(Hn||(Hn={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return fr.string(t)||fr.objectLiteral(t)&&fr.string(t.language)&&fr.string(t.value)}}(Yn||(Yn={})),function(e){e.is=function(e){var t=e;return!!t&&fr.objectLiteral(t)&&($n.is(t.contents)||Yn.is(t.contents)||fr.typedArray(t.contents,Yn.is))&&(void 0===e.range||ln.is(e.range))}}(Gn||(Gn={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(zn||(zn={})),function(e){e.create=function(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];var i={label:e};return fr.defined(t)&&(i.documentation=t),fr.defined(n)?i.parameters=n:i.parameters=[],i}}(Jn||(Jn={})),function(e){e.Text=1,e.Read=2,e.Write=3}(Qn||(Qn={})),function(e){e.create=function(e,t){var n={range:e};return fr.number(t)&&(n.kind=t),n}}(Zn||(Zn={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(Xn||(Xn={})),function(e){e.Deprecated=1}(er||(er={})),function(e){e.create=function(e,t,n,r,i){var o={name:e,kind:t,location:{uri:r,range:n}};return i&&(o.containerName=i),o}}(tr||(tr={})),function(e){e.create=function(e,t,n,r,i,o){var s={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==o&&(s.children=o),s},e.is=function(e){var t=e;return t&&fr.string(t.name)&&fr.number(t.kind)&&ln.is(t.range)&&ln.is(t.selectionRange)&&(void 0===t.detail||fr.string(t.detail))&&(void 0===t.deprecated||fr.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))}}(nr||(nr={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(rr||(rr={})),function(e){e.create=function(e,t){var n={diagnostics:e};return null!=t&&(n.only=t),n},e.is=function(e){var t=e;return fr.defined(t)&&fr.typedArray(t.diagnostics,Cn.is)&&(void 0===t.only||fr.typedArray(t.only,fr.string))}}(ir||(ir={})),function(e){e.create=function(e,t,n){var r={title:e};return _n.is(t)?r.command=t:r.edit=t,void 0!==n&&(r.kind=n),r},e.is=function(e){var t=e;return t&&fr.string(t.title)&&(void 0===t.diagnostics||fr.typedArray(t.diagnostics,Cn.is))&&(void 0===t.kind||fr.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||_n.is(t.command))&&(void 0===t.isPreferred||fr.boolean(t.isPreferred))&&(void 0===t.edit||Ln.is(t.edit))}}(or||(or={})),function(e){e.create=function(e,t){var n={range:e};return fr.defined(t)&&(n.data=t),n},e.is=function(e){var t=e;return fr.defined(t)&&ln.is(t.range)&&(fr.undefined(t.command)||_n.is(t.command))}}(sr||(sr={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){var t=e;return fr.defined(t)&&fr.number(t.tabSize)&&fr.boolean(t.insertSpaces)}}(ar||(ar={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){var t=e;return fr.defined(t)&&ln.is(t.range)&&(fr.undefined(t.target)||fr.string(t.target))}}(ur||(ur={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){var n=t;return void 0!==n&&ln.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(lr||(lr={})),function(e){function t(e,n){if(e.length<=1)return e;var r=e.length/2|0,i=e.slice(0,r),o=e.slice(r);t(i,n),t(o,n);for(var s=0,a=0,u=0;s<i.length&&a<o.length;){var l=n(i[s],o[a]);e[u++]=l<=0?i[s++]:o[a++]}for(;s<i.length;)e[u++]=i[s++];for(;a<o.length;)e[u++]=o[a++];return e}e.create=function(e,t,n,r){return new dr(e,t,n,r)},e.is=function(e){var t=e;return!!(fr.defined(t)&&fr.string(t.uri)&&(fr.undefined(t.languageId)||fr.string(t.languageId))&&fr.number(t.lineCount)&&fr.func(t.getText)&&fr.func(t.positionAt)&&fr.func(t.offsetAt))},e.applyEdits=function(e,n){for(var r=e.getText(),i=t(n,(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),o=r.length,s=i.length-1;s>=0;s--){var a=i[s],u=e.offsetAt(a.range.start),l=e.offsetAt(a.range.end);if(!(l<=o))throw new Error("Overlapping edit");r=r.substring(0,u)+a.newText+r.substring(l,r.length),o=u}return r}}(cr||(cr={}));var fr,dr=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r<t.length;r++){n&&(e.push(r),n=!1);var i=t.charAt(r);n="\r"===i||"\n"===i,"\r"===i&&r+1<t.length&&"\n"===t.charAt(r+1)&&r++}n&&t.length>0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return un.create(0,e);for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return un.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e}();!function(e){var t=Object.prototype.toString;e.defined=function(e){return void 0!==e},e.undefined=function(e){return void 0===e},e.boolean=function(e){return!0===e||!1===e},e.string=function(e){return"[object String]"===t.call(e)},e.number=function(e){return"[object Number]"===t.call(e)},e.func=function(e){return"[object Function]"===t.call(e)},e.objectLiteral=function(e){return null!==e&&"object"==typeof e},e.typedArray=function(e,t){return Array.isArray(e)&&e.every(t)}}(fr||(fr={}));var mr,gr,pr,vr=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!0,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(t,n){for(var r=0,i=t;r<i.length;r++){var o=i[r];if(e.isIncremental(o)){var s=Cr(o.range),a=this.offsetAt(s.start),u=this.offsetAt(s.end);this._content=this._content.substring(0,a)+o.text+this._content.substring(u,this._content.length);var l=Math.max(s.start.line,0),c=Math.max(s.end.line,0),h=this._lineOffsets,f=br(o.text,!1,a);if(c-l===f.length)for(var d=0,m=f.length;d<m;d++)h[d+l+1]=f[d];else f.length<1e4?h.splice.apply(h,[l+1,c-l].concat(f)):this._lineOffsets=h=h.slice(0,l+1).concat(f,h.slice(c+1));var g=o.text.length-(u-a);if(0!==g)for(d=l+1+f.length,m=h.length;d<m;d++)h[d]=h[d]+g}else{if(!e.isFull(o))throw new Error("Unknown change event received");this._content=o.text,this._lineOffsets=void 0}}this._version=n},e.prototype.getLineOffsets=function(){return void 0===this._lineOffsets&&(this._lineOffsets=br(this._content,!0)),this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return{line:0,character:e};for(;n<r;){var i=Math.floor((n+r)/2);t[i]>e?r=i:n=i+1}var o=n-1;return{line:o,character:e-t[o]}},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+1<t.length?t[e.line+1]:this._content.length;return Math.max(Math.min(n+e.character,r),n)},Object.defineProperty(e.prototype,"lineCount",{get:function(){return this.getLineOffsets().length},enumerable:!0,configurable:!0}),e.isIncremental=function(e){var t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)},e.isFull=function(e){var t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength},e}();function yr(e,t){if(e.length<=1)return e;var n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);yr(r,t),yr(i,t);for(var o=0,s=0,a=0;o<r.length&&s<i.length;){var u=t(r[o],i[s]);e[a++]=u<=0?r[o++]:i[s++]}for(;o<r.length;)e[a++]=r[o++];for(;s<i.length;)e[a++]=i[s++];return e}function br(e,t,n){void 0===n&&(n=0);for(var r=t?[n]:[],i=0;i<e.length;i++){var o=e.charCodeAt(i);13!==o&&10!==o||(13===o&&i+1<e.length&&10===e.charCodeAt(i+1)&&i++,r.push(n+i+1))}return r}function Cr(e){var t=e.start,n=e.end;return t.line>n.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function _r(e){var t=Cr(e.range);return t!==e.range?{newText:e.newText,range:t}:e}function Sr(e,t){return 0===t.length?e:e.replace(/\{(\d+)\}/g,(function(e,n){var r=n[0];return void 0!==t[r]?t[r]:e}))}function Er(e,t){for(var n=[],r=2;r<arguments.length;r++)n[r-2]=arguments[r];return Sr(t,n)}function Ar(e){return Er}!function(e){e.create=function(e,t,n,r){return new vr(e,t,n,r)},e.update=function(e,t,n){if(e instanceof vr)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){for(var n=e.getText(),r=0,i=[],o=0,s=yr(t.map(_r),(function(e,t){var n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}));o<s.length;o++){var a=s[o],u=e.offsetAt(a.range.start);if(u<r)throw new Error("Overlapping edit");u>r&&i.push(n.substring(r,u)),a.newText.length&&i.push(a.newText),r=e.offsetAt(a.range.end)}return i.push(n.substr(r)),i.join("")}}(mr||(mr={})),function(e){e[e.Undefined=0]="Undefined",e[e.EnumValueMismatch=1]="EnumValueMismatch",e[e.UnexpectedEndOfComment=257]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=258]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=259]="UnexpectedEndOfNumber",e[e.InvalidUnicode=260]="InvalidUnicode",e[e.InvalidEscapeCharacter=261]="InvalidEscapeCharacter",e[e.InvalidCharacter=262]="InvalidCharacter",e[e.PropertyExpected=513]="PropertyExpected",e[e.CommaExpected=514]="CommaExpected",e[e.ColonExpected=515]="ColonExpected",e[e.ValueExpected=516]="ValueExpected",e[e.CommaOrCloseBacketExpected=517]="CommaOrCloseBacketExpected",e[e.CommaOrCloseBraceExpected=518]="CommaOrCloseBraceExpected",e[e.TrailingComma=519]="TrailingComma",e[e.DuplicateKey=520]="DuplicateKey",e[e.CommentNotPermitted=521]="CommentNotPermitted",e[e.SchemaResolveError=768]="SchemaResolveError"}(gr||(gr={})),function(e){e.LATEST={textDocument:{completion:{completionItem:{documentationFormat:[Vn.Markdown,Vn.PlainText],commitCharactersSupport:!0}}}}}(pr||(pr={}));var xr,Nr,Lr=(xr=function(e,t){return(xr=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}xr(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),wr=Ar(),Tr={"color-hex":{errorMessage:wr("colorHexFormatWarning","Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA."),pattern:/^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/},"date-time":{errorMessage:wr("dateTimeFormatWarning","String is not a RFC3339 date-time."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},date:{errorMessage:wr("dateFormatWarning","String is not a RFC3339 date."),pattern:/^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i},time:{errorMessage:wr("timeFormatWarning","String is not a RFC3339 time."),pattern:/^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(Z|(\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i},email:{errorMessage:wr("emailFormatWarning","String is not an e-mail address."),pattern:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/}},kr=function(){function e(e,t,n){void 0===n&&(n=0),this.offset=t,this.length=n,this.parent=e}return Object.defineProperty(e.prototype,"children",{get:function(){return[]},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return"type: "+this.type+" ("+this.offset+"/"+this.length+")"+(this.parent?" parent: {"+this.parent.toString()+"}":"")},e}(),Or=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="null",r.value=null,r}return Lr(t,e),t}(kr),Ir=function(e){function t(t,n,r){var i=e.call(this,t,r)||this;return i.type="boolean",i.value=n,i}return Lr(t,e),t}(kr),Mr=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="array",r.items=[],r}return Lr(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.items},enumerable:!1,configurable:!0}),t}(kr),Pr=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="number",r.isInteger=!0,r.value=Number.NaN,r}return Lr(t,e),t}(kr),Rr=function(e){function t(t,n,r){var i=e.call(this,t,n,r)||this;return i.type="string",i.value="",i}return Lr(t,e),t}(kr),Dr=function(e){function t(t,n,r){var i=e.call(this,t,n)||this;return i.type="property",i.colonOffset=-1,i.keyNode=r,i}return Lr(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.valueNode?[this.keyNode,this.valueNode]:[this.keyNode]},enumerable:!1,configurable:!0}),t}(kr),Fr=function(e){function t(t,n){var r=e.call(this,t,n)||this;return r.type="object",r.properties=[],r}return Lr(t,e),Object.defineProperty(t.prototype,"children",{get:function(){return this.properties},enumerable:!1,configurable:!0}),t}(kr);function jr(e){return Dn(e)?e?{}:{not:{}}:e}!function(e){e[e.Key=0]="Key",e[e.Enum=1]="Enum"}(Nr||(Nr={}));var Ur=function(){function e(e,t){void 0===e&&(e=-1),this.focusOffset=e,this.exclude=t,this.schemas=[]}return e.prototype.add=function(e){this.schemas.push(e)},e.prototype.merge=function(e){Array.prototype.push.apply(this.schemas,e.schemas)},e.prototype.include=function(e){return(-1===this.focusOffset||Kr(e,this.focusOffset))&&e!==this.exclude},e.prototype.newSub=function(){return new e(-1,this.exclude)},e}(),Vr=function(){function e(){}return Object.defineProperty(e.prototype,"schemas",{get:function(){return[]},enumerable:!1,configurable:!0}),e.prototype.add=function(e){},e.prototype.merge=function(e){},e.prototype.include=function(e){return!0},e.prototype.newSub=function(){return this},e.instance=new e,e}(),$r=function(){function e(){this.problems=[],this.propertiesMatches=0,this.propertiesValueMatches=0,this.primaryValueMatches=0,this.enumValueMatch=!1,this.enumValues=void 0}return e.prototype.hasProblems=function(){return!!this.problems.length},e.prototype.mergeAll=function(e){for(var t=0,n=e;t<n.length;t++){var r=n[t];this.merge(r)}},e.prototype.merge=function(e){this.problems=this.problems.concat(e.problems)},e.prototype.mergeEnumValues=function(e){if(!this.enumValueMatch&&!e.enumValueMatch&&this.enumValues&&e.enumValues){this.enumValues=this.enumValues.concat(e.enumValues);for(var t=0,n=this.problems;t<n.length;t++){var r=n[t];r.code===gr.EnumValueMismatch&&(r.message=wr("enumWarning","Value is not accepted. Valid values: {0}.",this.enumValues.map((function(e){return JSON.stringify(e)})).join(", ")))}}},e.prototype.mergePropertyMatch=function(e){this.merge(e),this.propertiesMatches++,(e.enumValueMatch||!e.hasProblems()&&e.propertiesMatches)&&this.propertiesValueMatches++,e.enumValueMatch&&e.enumValues&&1===e.enumValues.length&&this.primaryValueMatches++},e.prototype.compare=function(e){var t=this.hasProblems();return t!==e.hasProblems()?t?-1:1:this.enumValueMatch!==e.enumValueMatch?e.enumValueMatch?-1:1:this.primaryValueMatches!==e.primaryValueMatches?this.primaryValueMatches-e.primaryValueMatches:this.propertiesValueMatches!==e.propertiesValueMatches?this.propertiesValueMatches-e.propertiesValueMatches:this.propertiesMatches-e.propertiesMatches},e}();function Wr(e){return In(e)}function qr(e){return On(e)}function Kr(e,t,n){return void 0===n&&(n=!1),t>=e.offset&&t<e.offset+e.length||n&&t===e.offset+e.length}var Br=function(){function e(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=[]),this.root=e,this.syntaxErrors=t,this.comments=n}return e.prototype.getNodeFromOffset=function(e,t){if(void 0===t&&(t=!1),this.root)return kn(this.root,e,t)},e.prototype.visit=function(e){if(this.root){var t=function(n){var r=e(n),i=n.children;if(Array.isArray(i))for(var o=0;o<i.length&&r;o++)r=t(i[o]);return r};t(this.root)}},e.prototype.validate=function(e,t){if(this.root&&t){var n=new $r;return Hr(this.root,t,n,Vr.instance),n.problems.map((function(t){var n=ln.create(e.positionAt(t.location.offset),e.positionAt(t.location.offset+t.location.length));return Cn.create(n,t.message,t.severity,t.code)}))}},e.prototype.getMatchingSchemas=function(e,t,n){void 0===t&&(t=-1);var r=new Ur(t,n);return this.root&&e&&Hr(this.root,e,new $r,r),r.schemas},e}();function Hr(e,t,n,r){if(e&&r.include(e)){var i=e;switch(i.type){case"object":!function(e,t,n,r){for(var i=Object.create(null),o=[],s=0,a=e.properties;s<a.length;s++)i[U=(p=a[s]).keyNode.value]=p.valueNode,o.push(U);if(Array.isArray(t.required))for(var u=0,l=t.required;u<l.length;u++)if(!i[E=l[u]]){var c=e.parent&&"property"===e.parent.type&&e.parent.keyNode,h=c?{offset:c.offset,length:c.length}:{offset:e.offset,length:1};n.problems.push({location:h,severity:yn.Warning,message:wr("MissingRequiredPropWarning",'Missing property "{0}".',E)})}var f=function(e){for(var t=o.indexOf(e);t>=0;)o.splice(t,1),t=o.indexOf(e)};if(t.properties)for(var d=0,m=Object.keys(t.properties);d<m.length;d++){f(E=m[d]);var g=t.properties[E];if(T=i[E])if(Dn(g))if(g)n.propertiesMatches++,n.propertiesValueMatches++;else{var p=T.parent;n.problems.push({location:{offset:p.keyNode.offset,length:p.keyNode.length},severity:yn.Warning,message:t.errorMessage||wr("DisallowedExtraPropWarning","Property {0} is not allowed.",E)})}else Hr(T,g,N=new $r,r),n.mergePropertyMatch(N)}if(t.patternProperties)for(var v=0,y=Object.keys(t.patternProperties);v<y.length;v++)for(var b=y[v],C=new RegExp(b),_=0,S=o.slice(0);_<S.length;_++){var E=S[_];C.test(E)&&(f(E),(T=i[E])&&(Dn(g=t.patternProperties[b])?g?(n.propertiesMatches++,n.propertiesValueMatches++):(p=T.parent,n.problems.push({location:{offset:p.keyNode.offset,length:p.keyNode.length},severity:yn.Warning,message:t.errorMessage||wr("DisallowedExtraPropWarning","Property {0} is not allowed.",E)})):(Hr(T,g,N=new $r,r),n.mergePropertyMatch(N))))}if("object"==typeof t.additionalProperties){for(var A=0,x=o;A<x.length;A++)if(T=i[E=x[A]]){var N=new $r;Hr(T,t.additionalProperties,N,r),n.mergePropertyMatch(N)}}else if(!1===t.additionalProperties&&o.length>0)for(var L=0,w=o;L<w.length;L++){var T;(T=i[E=w[L]])&&(p=T.parent,n.problems.push({location:{offset:p.keyNode.offset,length:p.keyNode.length},severity:yn.Warning,message:t.errorMessage||wr("DisallowedExtraPropWarning","Property {0} is not allowed.",E)}))}if(Pn(t.maxProperties)&&e.properties.length>t.maxProperties&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("MaxPropWarning","Object has more properties than limit of {0}.",t.maxProperties)}),Pn(t.minProperties)&&e.properties.length<t.minProperties&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("MinPropWarning","Object has fewer properties than the required number of {0}",t.minProperties)}),t.dependencies)for(var k=0,O=Object.keys(t.dependencies);k<O.length;k++)if(i[U=O[k]]){var I=t.dependencies[U];if(Array.isArray(I))for(var M=0,P=I;M<P.length;M++){var R=P[M];i[R]?n.propertiesValueMatches++:n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("RequiredDependentPropWarning","Object is missing property {0} required by property {1}.",R,U)})}else(g=jr(I))&&(Hr(e,g,N=new $r,r),n.mergePropertyMatch(N))}var D=jr(t.propertyNames);if(D)for(var F=0,j=e.properties;F<j.length;F++){var U;(U=j[F].keyNode)&&Hr(U,D,n,Vr.instance)}}(i,t,n,r);break;case"array":!function(e,t,n,r){if(Array.isArray(t.items)){for(var i=t.items,o=0;o<i.length;o++){var s=jr(i[o]),a=new $r;(f=e.items[o])?(Hr(f,s,a,r),n.mergePropertyMatch(a)):e.items.length>=i.length&&n.propertiesValueMatches++}if(e.items.length>i.length)if("object"==typeof t.additionalItems)for(var u=i.length;u<e.items.length;u++)a=new $r,Hr(e.items[u],t.additionalItems,a,r),n.mergePropertyMatch(a);else!1===t.additionalItems&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("additionalItemsWarning","Array has too many items according to schema. Expected {0} or fewer.",i.length)})}else{var l=jr(t.items);if(l)for(var c=0,h=e.items;c<h.length;c++){var f;Hr(f=h[c],l,a=new $r,r),n.mergePropertyMatch(a)}}var d=jr(t.contains);if(d&&(e.items.some((function(e){var t=new $r;return Hr(e,d,t,Vr.instance),!t.hasProblems()}))||n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:t.errorMessage||wr("requiredItemMissingWarning","Array does not contain required item.")})),Pn(t.minItems)&&e.items.length<t.minItems&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("minItemsWarning","Array has too few items. Expected {0} or more.",t.minItems)}),Pn(t.maxItems)&&e.items.length>t.maxItems&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("maxItemsWarning","Array has too many items. Expected {0} or fewer.",t.maxItems)}),!0===t.uniqueItems){var m=Wr(e);m.some((function(e,t){return t!==m.lastIndexOf(e)}))&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("uniqueItemsWarning","Array has duplicate items.")})}}(i,t,n,r);break;case"string":!function(e,t,n,r){if(Pn(t.minLength)&&e.value.length<t.minLength&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("minLengthWarning","String is shorter than the minimum length of {0}.",t.minLength)}),Pn(t.maxLength)&&e.value.length>t.maxLength&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("maxLengthWarning","String is longer than the maximum length of {0}.",t.maxLength)}),"string"==typeof t.pattern&&(new RegExp(t.pattern).test(e.value)||n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:t.patternErrorMessage||t.errorMessage||wr("patternWarning",'String does not match the pattern of "{0}".',t.pattern)})),t.format)switch(t.format){case"uri":case"uri-reference":var i=void 0;if(e.value){var o=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/.exec(e.value);o?o[2]||"uri"!==t.format||(i=wr("uriSchemeMissing","URI with a scheme is expected.")):i=wr("uriMissing","URI is expected.")}else i=wr("uriEmpty","URI expected.");i&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:t.patternErrorMessage||t.errorMessage||wr("uriFormatWarning","String is not a URI: {0}",i)});break;case"color-hex":case"date-time":case"date":case"time":case"email":var s=Tr[t.format];e.value&&s.pattern.exec(e.value)||n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:t.patternErrorMessage||t.errorMessage||s.errorMessage})}}(i,t,n);break;case"number":!function(e,t,n,r){var i=e.value;function o(e){var t,n=/^(-?\d+)(?:\.(\d+))?(?:e([-+]\d+))?$/.exec(e.toString());return n&&{value:Number(n[1]+(n[2]||"")),multiplier:((null===(t=n[2])||void 0===t?void 0:t.length)||0)-(parseInt(n[3])||0)}}if(Pn(t.multipleOf)){var s=-1;if(Number.isInteger(t.multipleOf))s=i%t.multipleOf;else{var a=o(t.multipleOf),u=o(i);if(a&&u){var l=Math.pow(10,Math.abs(u.multiplier-a.multiplier));u.multiplier<a.multiplier?u.value*=l:a.value*=l,s=u.value%a.value}}0!==s&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("multipleOfWarning","Value is not divisible by {0}.",t.multipleOf)})}function c(e,t){return Pn(t)?t:Dn(t)&&t?e:void 0}function h(e,t){if(!Dn(t)||!t)return e}var f=c(t.minimum,t.exclusiveMinimum);Pn(f)&&i<=f&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("exclusiveMinimumWarning","Value is below the exclusive minimum of {0}.",f)});var d=c(t.maximum,t.exclusiveMaximum);Pn(d)&&i>=d&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("exclusiveMaximumWarning","Value is above the exclusive maximum of {0}.",d)});var m=h(t.minimum,t.exclusiveMinimum);Pn(m)&&i<m&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("minimumWarning","Value is below the minimum of {0}.",m)});var g=h(t.maximum,t.exclusiveMaximum);Pn(g)&&i>g&&n.problems.push({location:{offset:e.offset,length:e.length},severity:yn.Warning,message:wr("maximumWarning","Value is above the maximum of {0}.",g)})}(i,t,n);break;case"property":return Hr(i.valueNode,t,n,r)}!function(){function e(e){return i.type===e||"integer"===e&&"number"===i.type&&i.isInteger}if(Array.isArray(t.type)?t.type.some(e)||n.problems.push({location:{offset:i.offset,length:i.length},severity:yn.Warning,message:t.errorMessage||wr("typeArrayMismatchWarning","Incorrect type. Expected one of {0}.",t.type.join(", "))}):t.type&&(e(t.type)||n.problems.push({location:{offset:i.offset,length:i.length},severity:yn.Warning,message:t.errorMessage||wr("typeMismatchWarning",'Incorrect type. Expected "{0}".',t.type)})),Array.isArray(t.allOf))for(var o=0,s=t.allOf;o<s.length;o++){var a=s[o];Hr(i,jr(a),n,r)}var u=jr(t.not);if(u){var l=new $r,c=r.newSub();Hr(i,u,l,c),l.hasProblems()||n.problems.push({location:{offset:i.offset,length:i.length},severity:yn.Warning,message:wr("notSchemaWarning","Matches a schema that is not allowed.")});for(var h=0,f=c.schemas;h<f.length;h++){var d=f[h];d.inverted=!d.inverted,r.add(d)}}var m=function(e,t){for(var o=[],s=void 0,a=0,u=e;a<u.length;a++){var l=jr(u[a]),c=new $r,h=r.newSub();if(Hr(i,l,c,h),c.hasProblems()||o.push(l),s)if(t||c.hasProblems()||s.validationResult.hasProblems()){var f=c.compare(s.validationResult);f>0?s={schema:l,validationResult:c,matchingSchemas:h}:0===f&&(s.matchingSchemas.merge(h),s.validationResult.mergeEnumValues(c))}else s.matchingSchemas.merge(h),s.validationResult.propertiesMatches+=c.propertiesMatches,s.validationResult.propertiesValueMatches+=c.propertiesValueMatches;else s={schema:l,validationResult:c,matchingSchemas:h}}return o.length>1&&t&&n.problems.push({location:{offset:i.offset,length:1},severity:yn.Warning,message:wr("oneOfWarning","Matches multiple schemas when only one must validate.")}),s&&(n.merge(s.validationResult),n.propertiesMatches+=s.validationResult.propertiesMatches,n.propertiesValueMatches+=s.validationResult.propertiesValueMatches,r.merge(s.matchingSchemas)),o.length};Array.isArray(t.anyOf)&&m(t.anyOf,!1),Array.isArray(t.oneOf)&&m(t.oneOf,!0);var g=function(e){var t=new $r,o=r.newSub();Hr(i,jr(e),t,o),n.merge(t),n.propertiesMatches+=t.propertiesMatches,n.propertiesValueMatches+=t.propertiesValueMatches,r.merge(o)},p=jr(t.if);if(p&&function(e,t,n){var o=jr(e),s=new $r,a=r.newSub();Hr(i,o,s,a),r.merge(a),s.hasProblems()?n&&g(n):t&&g(t)}(p,jr(t.then),jr(t.else)),Array.isArray(t.enum)){for(var v=Wr(i),y=!1,b=0,C=t.enum;b<C.length;b++){if(Mn(v,C[b])){y=!0;break}}n.enumValues=t.enum,n.enumValueMatch=y,y||n.problems.push({location:{offset:i.offset,length:i.length},severity:yn.Warning,code:gr.EnumValueMismatch,message:t.errorMessage||wr("enumWarning","Value is not accepted. Valid values: {0}.",t.enum.map((function(e){return JSON.stringify(e)})).join(", "))})}Rn(t.const)&&(Mn(v=Wr(i),t.const)?n.enumValueMatch=!0:(n.problems.push({location:{offset:i.offset,length:i.length},severity:yn.Warning,code:gr.EnumValueMismatch,message:t.errorMessage||wr("constWarning","Value must be {0}.",JSON.stringify(t.const))}),n.enumValueMatch=!1),n.enumValues=[t.const]),t.deprecationMessage&&i.parent&&n.problems.push({location:{offset:i.parent.offset,length:i.parent.length},severity:yn.Warning,message:t.deprecationMessage})}(),r.add({node:i,schema:t})}}function Yr(e,t,n){if(null!==e&&"object"==typeof e){var r=t+"\t";if(Array.isArray(e)){if(0===e.length)return"[]";for(var i="[\n",o=0;o<e.length;o++)i+=r+Yr(e[o],r,n),o<e.length-1&&(i+=","),i+="\n";return i+(t+"]")}var s=Object.keys(e);if(0===s.length)return"{}";for(i="{\n",o=0;o<s.length;o++){var a=s[o];i+=r+JSON.stringify(a)+": "+Yr(e[a],r,n),o<s.length-1&&(i+=","),i+="\n"}return i+(t+"}")}return n(e)}function Gr(e,t){var n=e.length-t.length;return n>0?e.lastIndexOf(t)===n:0===n&&e===t}function zr(e){return e.replace(/[\-\\\{\}\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&").replace(/[\*]/g,".*")}var Jr=Ar(),Qr=function(){function e(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=Promise),void 0===r&&(r={}),this.schemaService=e,this.contributions=t,this.promiseConstructor=n,this.clientCapabilities=r}return e.prototype.doResolve=function(e){for(var t=this.contributions.length-1;t>=0;t--){var n=this.contributions[t].resolveCompletion;if(n){var r=n(e);if(r)return r}}return this.promiseConstructor.resolve(e)},e.prototype.doComplete=function(e,t,n){var r=this,i={items:[],isIncomplete:!1},o=e.getText(),s=e.offsetAt(t),a=n.getNodeFromOffset(s,!0);if(this.isInComment(e,a?a.offset:0,s))return Promise.resolve(i);if(a&&s===a.offset+a.length&&s>0){var u=o[s-1];("object"===a.type&&"}"===u||"array"===a.type&&"]"===u)&&(a=a.parent)}var l,c=this.getCurrentWord(e,s);if(!a||"string"!==a.type&&"number"!==a.type&&"boolean"!==a.type&&"null"!==a.type){var h=s-c.length;h>0&&'"'===o[h-1]&&h--,l=ln.create(e.positionAt(h),t)}else l=ln.create(e.positionAt(a.offset),e.positionAt(a.offset+a.length));var f={},d={add:function(e){var t=e.label,n=f[t];if(n)n.documentation||(n.documentation=e.documentation);else{if((t=t.replace(/[\n]/g,"↵")).length>60){var r=t.substr(0,57).trim()+"...";f[r]||(t=r)}l&&void 0!==e.insertText&&(e.textEdit=Sn.replace(l,e.insertText)),e.label=t,f[t]=e,i.items.push(e)}},setAsIncomplete:function(){i.isIncomplete=!0},error:function(e){console.error(e)},log:function(e){console.log(e)},getNumberOfProposals:function(){return i.items.length}};return this.schemaService.getSchemaForResource(e.uri,n).then((function(t){var u=[],h=!0,m="",g=void 0;if(a&&"string"===a.type){var p=a.parent;p&&"property"===p.type&&p.keyNode===a&&(h=!p.valueNode,g=p,m=o.substr(a.offset+1,a.length-2),p&&(a=p.parent))}if(a&&"object"===a.type){if(a.offset===s)return i;a.properties.forEach((function(e){g&&g===e||(f[e.keyNode.value]=Bn.create("__"))}));var v="";h&&(v=r.evaluateSeparatorAfter(e,e.offsetAt(l.end))),t?r.getPropertyCompletions(t,n,a,h,v,d):r.getSchemaLessPropertyCompletions(n,a,m,d);var y=qr(a);r.contributions.forEach((function(t){var n=t.collectPropertyCompletions(e.uri,y,c,h,""===v,d);n&&u.push(n)})),!t&&c.length>0&&'"'!==o.charAt(s-c.length-1)&&(d.add({kind:Wn.Property,label:r.getLabelForValue(c),insertText:r.getInsertTextForProperty(c,void 0,!1,v),insertTextFormat:qn.Snippet,documentation:""}),d.setAsIncomplete())}var b={};return t?r.getValueCompletions(t,n,a,s,e,d,b):r.getSchemaLessValueCompletions(n,a,s,e,d),r.contributions.length>0&&r.getContributedValueCompletions(n,a,s,e,d,u),r.promiseConstructor.all(u).then((function(){if(0===d.getNumberOfProposals()){var t=s;!a||"string"!==a.type&&"number"!==a.type&&"boolean"!==a.type&&"null"!==a.type||(t=a.offset+a.length);var n=r.evaluateSeparatorAfter(e,t);r.addFillerValueCompletions(b,n,d)}return i}))}))},e.prototype.getPropertyCompletions=function(e,t,n,r,i,o){var s=this;t.getMatchingSchemas(e.schema,n.offset).forEach((function(e){if(e.node===n&&!e.inverted){var t=e.schema.properties;t&&Object.keys(t).forEach((function(e){var n=t[e];if("object"==typeof n&&!n.deprecationMessage&&!n.doNotSuggest){var a={kind:Wn.Property,label:e,insertText:s.getInsertTextForProperty(e,n,r,i),insertTextFormat:qn.Snippet,filterText:s.getFilterTextForValue(e),documentation:s.fromMarkup(n.markdownDescription)||n.description||""};void 0!==n.suggestSortText&&(a.sortText=n.suggestSortText),a.insertText&&Gr(a.insertText,"$1"+i)&&(a.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(a)}}));var a=e.schema.propertyNames;if("object"==typeof a&&!a.deprecationMessage&&!a.doNotSuggest){var u=function(e,t){void 0===t&&(t=void 0);var n={kind:Wn.Property,label:e,insertText:s.getInsertTextForProperty(e,void 0,r,i),insertTextFormat:qn.Snippet,filterText:s.getFilterTextForValue(e),documentation:t||s.fromMarkup(a.markdownDescription)||a.description||""};void 0!==a.suggestSortText&&(n.sortText=a.suggestSortText),n.insertText&&Gr(n.insertText,"$1"+i)&&(n.command={title:"Suggest",command:"editor.action.triggerSuggest"}),o.add(n)};if(a.enum)for(var l=0;l<a.enum.length;l++){var c=void 0;a.markdownEnumDescriptions&&l<a.markdownEnumDescriptions.length?c=s.fromMarkup(a.markdownEnumDescriptions[l]):a.enumDescriptions&&l<a.enumDescriptions.length&&(c=a.enumDescriptions[l]),u(a.enum[l],c)}a.const&&u(a.const)}}}))},e.prototype.getSchemaLessPropertyCompletions=function(e,t,n,r){var i=this,o=function(e){e.properties.forEach((function(e){var t=e.keyNode.value;r.add({kind:Wn.Property,label:t,insertText:i.getInsertTextForValue(t,""),insertTextFormat:qn.Snippet,filterText:i.getFilterTextForValue(t),documentation:""})}))};if(t.parent)if("property"===t.parent.type){var s=t.parent.keyNode.value;e.visit((function(e){return"property"===e.type&&e!==t.parent&&e.keyNode.value===s&&e.valueNode&&"object"===e.valueNode.type&&o(e.valueNode),!0}))}else"array"===t.parent.type&&t.parent.items.forEach((function(e){"object"===e.type&&e!==t&&o(e)}));else"object"===t.type&&r.add({kind:Wn.Property,label:"$schema",insertText:this.getInsertTextForProperty("$schema",void 0,!0,""),insertTextFormat:qn.Snippet,documentation:"",filterText:this.getFilterTextForValue("$schema")})},e.prototype.getSchemaLessValueCompletions=function(e,t,n,r,i){var o=this,s=n;if(!t||"string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(s=t.offset+t.length,t=t.parent),!t)return i.add({kind:this.getSuggestionKind("object"),label:"Empty object",insertText:this.getInsertTextForValue({},""),insertTextFormat:qn.Snippet,documentation:""}),void i.add({kind:this.getSuggestionKind("array"),label:"Empty array",insertText:this.getInsertTextForValue([],""),insertTextFormat:qn.Snippet,documentation:""});var a=this.evaluateSeparatorAfter(r,s),u=function(e){e.parent&&!Kr(e.parent,n,!0)&&i.add({kind:o.getSuggestionKind(e.type),label:o.getLabelTextForMatchingNode(e,r),insertText:o.getInsertTextForMatchingNode(e,r,a),insertTextFormat:qn.Snippet,documentation:""}),"boolean"===e.type&&o.addBooleanValueCompletion(!e.value,a,i)};if("property"===t.type&&n>(t.colonOffset||0)){var l=t.valueNode;if(l&&(n>l.offset+l.length||"object"===l.type||"array"===l.type))return;var c=t.keyNode.value;e.visit((function(e){return"property"===e.type&&e.keyNode.value===c&&e.valueNode&&u(e.valueNode),!0})),"$schema"===c&&t.parent&&!t.parent.parent&&this.addDollarSchemaCompletions(a,i)}if("array"===t.type)if(t.parent&&"property"===t.parent.type){var h=t.parent.keyNode.value;e.visit((function(e){return"property"===e.type&&e.keyNode.value===h&&e.valueNode&&"array"===e.valueNode.type&&e.valueNode.items.forEach(u),!0}))}else t.items.forEach(u)},e.prototype.getValueCompletions=function(e,t,n,r,i,o,s){var a=r,u=void 0,l=void 0;if(!n||"string"!==n.type&&"number"!==n.type&&"boolean"!==n.type&&"null"!==n.type||(a=n.offset+n.length,l=n,n=n.parent),n){if("property"===n.type&&r>(n.colonOffset||0)){var c=n.valueNode;if(c&&r>c.offset+c.length)return;u=n.keyNode.value,n=n.parent}if(n&&(void 0!==u||"array"===n.type)){for(var h=this.evaluateSeparatorAfter(i,a),f=0,d=t.getMatchingSchemas(e.schema,n.offset,l);f<d.length;f++){var m=d[f];if(m.node===n&&!m.inverted&&m.schema){if("array"===n.type&&m.schema.items)if(Array.isArray(m.schema.items)){var g=this.findItemAtOffset(n,i,r);g<m.schema.items.length&&this.addSchemaValueCompletions(m.schema.items[g],h,o,s)}else this.addSchemaValueCompletions(m.schema.items,h,o,s);if(void 0!==u){var p=!1;if(m.schema.properties&&(C=m.schema.properties[u])&&(p=!0,this.addSchemaValueCompletions(C,h,o,s)),m.schema.patternProperties&&!p)for(var v=0,y=Object.keys(m.schema.patternProperties);v<y.length;v++){var b=y[v];if(new RegExp(b).test(u)){p=!0;var C=m.schema.patternProperties[b];this.addSchemaValueCompletions(C,h,o,s)}}m.schema.additionalProperties&&!p&&(C=m.schema.additionalProperties,this.addSchemaValueCompletions(C,h,o,s))}}}"$schema"!==u||n.parent||this.addDollarSchemaCompletions(h,o),s.boolean&&(this.addBooleanValueCompletion(!0,h,o),this.addBooleanValueCompletion(!1,h,o)),s.null&&this.addNullValueCompletion(h,o)}}else this.addSchemaValueCompletions(e.schema,"",o,s)},e.prototype.getContributedValueCompletions=function(e,t,n,r,i,o){if(t){if("string"!==t.type&&"number"!==t.type&&"boolean"!==t.type&&"null"!==t.type||(t=t.parent),t&&"property"===t.type&&n>(t.colonOffset||0)){var s=t.keyNode.value,a=t.valueNode;if((!a||n<=a.offset+a.length)&&t.parent){var u=qr(t.parent);this.contributions.forEach((function(e){var t=e.collectValueCompletions(r.uri,u,s,i);t&&o.push(t)}))}}}else this.contributions.forEach((function(e){var t=e.collectDefaultCompletions(r.uri,i);t&&o.push(t)}))},e.prototype.addSchemaValueCompletions=function(e,t,n,r){var i=this;"object"==typeof e&&(this.addEnumValueCompletions(e,t,n),this.addDefaultValueCompletions(e,t,n),this.collectTypes(e,r),Array.isArray(e.allOf)&&e.allOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,n,r)})),Array.isArray(e.anyOf)&&e.anyOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,n,r)})),Array.isArray(e.oneOf)&&e.oneOf.forEach((function(e){return i.addSchemaValueCompletions(e,t,n,r)})))},e.prototype.addDefaultValueCompletions=function(e,t,n,r){var i=this;void 0===r&&(r=0);var o=!1;if(Rn(e.default)){for(var s=e.type,a=e.default,u=r;u>0;u--)a=[a],s="array";n.add({kind:this.getSuggestionKind(s),label:this.getLabelForValue(a),insertText:this.getInsertTextForValue(a,t),insertTextFormat:qn.Snippet,detail:Jr("json.suggest.default","Default value")}),o=!0}Array.isArray(e.examples)&&e.examples.forEach((function(s){for(var a=e.type,u=s,l=r;l>0;l--)u=[u],a="array";n.add({kind:i.getSuggestionKind(a),label:i.getLabelForValue(u),insertText:i.getInsertTextForValue(u,t),insertTextFormat:qn.Snippet}),o=!0})),Array.isArray(e.defaultSnippets)&&e.defaultSnippets.forEach((function(s){var a,u,l=e.type,c=s.body,h=s.label;if(Rn(c)){e.type;for(var f=r;f>0;f--)c=[c];a=i.getInsertTextForSnippetValue(c,t),u=i.getFilterTextForSnippetValue(c),h=h||i.getLabelForSnippetValue(c)}else{if("string"!=typeof s.bodyText)return;var d="",m="",g="";for(f=r;f>0;f--)d=d+g+"[\n",m=m+"\n"+g+"]",g+="\t",l="array";a=d+g+s.bodyText.split("\n").join("\n"+g)+m+t,h=h||a,u=a.replace(/[\n]/g,"")}n.add({kind:i.getSuggestionKind(l),label:h,documentation:i.fromMarkup(s.markdownDescription)||s.description,insertText:a,insertTextFormat:qn.Snippet,filterText:u}),o=!0})),!o&&"object"==typeof e.items&&!Array.isArray(e.items)&&r<5&&this.addDefaultValueCompletions(e.items,t,n,r+1)},e.prototype.addEnumValueCompletions=function(e,t,n){if(Rn(e.const)&&n.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(e.const),insertText:this.getInsertTextForValue(e.const,t),insertTextFormat:qn.Snippet,documentation:this.fromMarkup(e.markdownDescription)||e.description}),Array.isArray(e.enum))for(var r=0,i=e.enum.length;r<i;r++){var o=e.enum[r],s=this.fromMarkup(e.markdownDescription)||e.description;e.markdownEnumDescriptions&&r<e.markdownEnumDescriptions.length&&this.doesSupportMarkdown()?s=this.fromMarkup(e.markdownEnumDescriptions[r]):e.enumDescriptions&&r<e.enumDescriptions.length&&(s=e.enumDescriptions[r]),n.add({kind:this.getSuggestionKind(e.type),label:this.getLabelForValue(o),insertText:this.getInsertTextForValue(o,t),insertTextFormat:qn.Snippet,documentation:s})}},e.prototype.collectTypes=function(e,t){if(!Array.isArray(e.enum)&&!Rn(e.const)){var n=e.type;Array.isArray(n)?n.forEach((function(e){return t[e]=!0})):n&&(t[n]=!0)}},e.prototype.addFillerValueCompletions=function(e,t,n){e.object&&n.add({kind:this.getSuggestionKind("object"),label:"{}",insertText:this.getInsertTextForGuessedValue({},t),insertTextFormat:qn.Snippet,detail:Jr("defaults.object","New object"),documentation:""}),e.array&&n.add({kind:this.getSuggestionKind("array"),label:"[]",insertText:this.getInsertTextForGuessedValue([],t),insertTextFormat:qn.Snippet,detail:Jr("defaults.array","New array"),documentation:""})},e.prototype.addBooleanValueCompletion=function(e,t,n){n.add({kind:this.getSuggestionKind("boolean"),label:e?"true":"false",insertText:this.getInsertTextForValue(e,t),insertTextFormat:qn.Snippet,documentation:""})},e.prototype.addNullValueCompletion=function(e,t){t.add({kind:this.getSuggestionKind("null"),label:"null",insertText:"null"+e,insertTextFormat:qn.Snippet,documentation:""})},e.prototype.addDollarSchemaCompletions=function(e,t){var n=this;this.schemaService.getRegisteredSchemaIds((function(e){return"http"===e||"https"===e})).forEach((function(r){return t.add({kind:Wn.Module,label:n.getLabelForValue(r),filterText:n.getFilterTextForValue(r),insertText:n.getInsertTextForValue(r,e),insertTextFormat:qn.Snippet,documentation:""})}))},e.prototype.getLabelForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForValue=function(e){return JSON.stringify(e)},e.prototype.getFilterTextForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getLabelForSnippetValue=function(e){return JSON.stringify(e).replace(/\$\{\d+:([^}]+)\}|\$\d+/g,"$1")},e.prototype.getInsertTextForPlainText=function(e){return e.replace(/[\\\$\}]/g,"\\$&")},e.prototype.getInsertTextForValue=function(e,t){var n=JSON.stringify(e,null,"\t");return"{}"===n?"{$1}"+t:"[]"===n?"[$1]"+t:this.getInsertTextForPlainText(n+t)},e.prototype.getInsertTextForSnippetValue=function(e,t){return Yr(e,"",(function(e){return"string"==typeof e&&"^"===e[0]?e.substr(1):JSON.stringify(e)}))+t},e.prototype.getInsertTextForGuessedValue=function(e,t){switch(typeof e){case"object":return null===e?"${1:null}"+t:this.getInsertTextForValue(e,t);case"string":var n=JSON.stringify(e);return n=n.substr(1,n.length-2),'"${1:'+(n=this.getInsertTextForPlainText(n))+'}"'+t;case"number":case"boolean":return"${1:"+JSON.stringify(e)+"}"+t}return this.getInsertTextForValue(e,t)},e.prototype.getSuggestionKind=function(e){if(Array.isArray(e)){var t=e;e=t.length>0?t[0]:void 0}if(!e)return Wn.Value;switch(e){case"string":return Wn.Value;case"object":return Wn.Module;case"property":return Wn.Property;default:return Wn.Value}},e.prototype.getLabelTextForMatchingNode=function(e,t){switch(e.type){case"array":return"[]";case"object":return"{}";default:return t.getText().substr(e.offset,e.length)}},e.prototype.getInsertTextForMatchingNode=function(e,t,n){switch(e.type){case"array":return this.getInsertTextForValue([],n);case"object":return this.getInsertTextForValue({},n);default:var r=t.getText().substr(e.offset,e.length)+n;return this.getInsertTextForPlainText(r)}},e.prototype.getInsertTextForProperty=function(e,t,n,r){var i=this.getInsertTextForValue(e,"");if(!n)return i;var o,s=i+": ",a=0;if(t){if(Array.isArray(t.defaultSnippets)){if(1===t.defaultSnippets.length){var u=t.defaultSnippets[0].body;Rn(u)&&(o=this.getInsertTextForSnippetValue(u,""))}a+=t.defaultSnippets.length}if(t.enum&&(o||1!==t.enum.length||(o=this.getInsertTextForGuessedValue(t.enum[0],"")),a+=t.enum.length),Rn(t.default)&&(o||(o=this.getInsertTextForGuessedValue(t.default,"")),a++),Array.isArray(t.examples)&&t.examples.length&&(o||(o=this.getInsertTextForGuessedValue(t.examples[0],"")),a+=t.examples.length),0===a){var l=Array.isArray(t.type)?t.type[0]:t.type;switch(l||(t.properties?l="object":t.items&&(l="array")),l){case"boolean":o="$1";break;case"string":o='"$1"';break;case"object":o="{$1}";break;case"array":o="[$1]";break;case"number":case"integer":o="${1:0}";break;case"null":o="${1:null}";break;default:return i}}}return(!o||a>1)&&(o="$1"),s+o+r},e.prototype.getCurrentWord=function(e,t){for(var n=t-1,r=e.getText();n>=0&&-1===' \t\n\r\v":{[,]}'.indexOf(r.charAt(n));)n--;return r.substring(n+1,t)},e.prototype.evaluateSeparatorAfter=function(e,t){var n=wn(e.getText(),!0);switch(n.setPosition(t),n.scan()){case 5:case 2:case 4:case 17:return"";default:return","}},e.prototype.findItemAtOffset=function(e,t,n){for(var r=wn(t.getText(),!0),i=e.items,o=i.length-1;o>=0;o--){var s=i[o];if(n>s.offset+s.length)return r.setPosition(s.offset+s.length),5===r.scan()&&n>=r.getTokenOffset()+r.getTokenLength()?o+1:o;if(n>=s.offset)return o}return 0},e.prototype.isInComment=function(e,t,n){var r=wn(e.getText(),!1);r.setPosition(t);for(var i=r.scan();17!==i&&r.getTokenOffset()+r.getTokenLength()<n;)i=r.scan();return(12===i||13===i)&&r.getTokenOffset()<=n},e.prototype.fromMarkup=function(e){if(e&&this.doesSupportMarkdown())return{kind:Vn.Markdown,value:e}},e.prototype.doesSupportMarkdown=function(){if(!Rn(this.supportsMarkdown)){var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsMarkdown=e&&e.completionItem&&Array.isArray(e.completionItem.documentationFormat)&&-1!==e.completionItem.documentationFormat.indexOf(Vn.Markdown)}return this.supportsMarkdown},e.prototype.doesSupportsCommitCharacters=function(){if(!Rn(this.supportsCommitCharacters)){var e=this.clientCapabilities.textDocument&&this.clientCapabilities.textDocument.completion;this.supportsCommitCharacters=e&&e.completionItem&&!!e.completionItem.commitCharactersSupport}return this.supportsCommitCharacters},e}(),Zr=function(){function e(e,t,n){void 0===t&&(t=[]),this.schemaService=e,this.contributions=t,this.promise=n||Promise}return e.prototype.doHover=function(e,t,n){var r=e.offsetAt(t),i=n.getNodeFromOffset(r);if(!i||("object"===i.type||"array"===i.type)&&r>i.offset+1&&r<i.offset+i.length-1)return this.promise.resolve(null);var o=i;if("string"===i.type){var s=i.parent;if(s&&"property"===s.type&&s.keyNode===i&&!(i=s.valueNode))return this.promise.resolve(null)}for(var a=ln.create(e.positionAt(o.offset),e.positionAt(o.offset+o.length)),u=function(e){return{contents:e,range:a}},l=qr(i),c=this.contributions.length-1;c>=0;c--){var h=this.contributions[c].getInfoContribution(e.uri,l);if(h)return h.then((function(e){return u(e)}))}return this.schemaService.getSchemaForResource(e.uri,n).then((function(e){if(e&&i){var t=n.getMatchingSchemas(e.schema,i.offset),r=void 0,o=void 0,s=void 0,a=void 0;t.every((function(e){if(e.node===i&&!e.inverted&&e.schema&&(r=r||e.schema.title,o=o||e.schema.markdownDescription||Xr(e.schema.description),e.schema.enum)){var t=e.schema.enum.indexOf(Wr(i));e.schema.markdownEnumDescriptions?s=e.schema.markdownEnumDescriptions[t]:e.schema.enumDescriptions&&(s=Xr(e.schema.enumDescriptions[t])),s&&"string"!=typeof(a=e.schema.enum[t])&&(a=JSON.stringify(a))}return!0}));var l="";return r&&(l=Xr(r)),o&&(l.length>0&&(l+="\n\n"),l+=o),s&&(l.length>0&&(l+="\n\n"),l+="`"+((-1!==(c=a).indexOf("`")?"`` "+c+" ``":c)+"`: ")+s),u([l])}var c;return null}))},e}();function Xr(e){if(e)return e.replace(/([^\n\r])(\r?\n)([^\n\r])/gm,"$1\n\n$3").replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}var ei,ti,ni=function(){var e=function(t,n){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(t,n)};return function(t,n){function r(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}}();if("object"==typeof process)ti="win32"===process.platform;else if("object"==typeof navigator){var ri=navigator.userAgent;ti=ri.indexOf("Windows")>=0}var ii=/^\w[\w\d+.-]*$/,oi=/^\//,si=/^\/\//,ai="",ui="/",li=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,ci=function(){function e(e,t,n,r,i,o){void 0===o&&(o=!1),"object"==typeof e?(this.scheme=e.scheme||ai,this.authority=e.authority||ai,this.path=e.path||ai,this.query=e.query||ai,this.fragment=e.fragment||ai):(this.scheme=function(e,t){return e||t?e:"file"}(e,o),this.authority=t||ai,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==ui&&(t=ui+t):t=ui}return t}(this.scheme,n||ai),this.query=r||ai,this.fragment=i||ai,function(e,t){if(!e.scheme&&t)throw new Error('[UriError]: Scheme is missing: {scheme: "", authority: "'+e.authority+'", path: "'+e.path+'", query: "'+e.query+'", fragment: "'+e.fragment+'"}');if(e.scheme&&!ii.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!oi.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(si.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}(this,o))}return e.isUri=function(t){return t instanceof e||!!t&&"string"==typeof t.authority&&"string"==typeof t.fragment&&"string"==typeof t.path&&"string"==typeof t.query&&"string"==typeof t.scheme&&"function"==typeof t.fsPath&&"function"==typeof t.with&&"function"==typeof t.toString},Object.defineProperty(e.prototype,"fsPath",{get:function(){return pi(this,!1)},enumerable:!0,configurable:!0}),e.prototype.with=function(e){if(!e)return this;var t=e.scheme,n=e.authority,r=e.path,i=e.query,o=e.fragment;return void 0===t?t=this.scheme:null===t&&(t=ai),void 0===n?n=this.authority:null===n&&(n=ai),void 0===r?r=this.path:null===r&&(r=ai),void 0===i?i=this.query:null===i&&(i=ai),void 0===o?o=this.fragment:null===o&&(o=ai),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&o===this.fragment?this:new fi(t,n,r,i,o)},e.parse=function(e,t){void 0===t&&(t=!1);var n=li.exec(e);return n?new fi(n[2]||ai,Ci(n[4]||ai),Ci(n[5]||ai),Ci(n[7]||ai),Ci(n[9]||ai),t):new fi(ai,ai,ai,ai,ai)},e.file=function(e){var t=ai;if(ti&&(e=e.replace(/\\/g,ui)),e[0]===ui&&e[1]===ui){var n=e.indexOf(ui,2);-1===n?(t=e.substring(2),e=ui):(t=e.substring(2,n),e=e.substring(n)||ui)}return new fi("file",t,e,ai,ai)},e.from=function(e){return new fi(e.scheme,e.authority,e.path,e.query,e.fragment)},e.prototype.toString=function(e){return void 0===e&&(e=!1),vi(this,e)},e.prototype.toJSON=function(){return this},e.revive=function(t){if(t){if(t instanceof e)return t;var n=new fi(t);return n._formatted=t.external,n._fsPath=t._sep===hi?t.fsPath:null,n}return t},e}(),hi=ti?1:void 0,fi=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._formatted=null,t._fsPath=null,t}return ni(t,e),Object.defineProperty(t.prototype,"fsPath",{get:function(){return this._fsPath||(this._fsPath=pi(this,!1)),this._fsPath},enumerable:!0,configurable:!0}),t.prototype.toString=function(e){return void 0===e&&(e=!1),e?vi(this,!0):(this._formatted||(this._formatted=vi(this,!1)),this._formatted)},t.prototype.toJSON=function(){var e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=hi),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e},t}(ci),di=((ei={})[58]="%3A",ei[47]="%2F",ei[63]="%3F",ei[35]="%23",ei[91]="%5B",ei[93]="%5D",ei[64]="%40",ei[33]="%21",ei[36]="%24",ei[38]="%26",ei[39]="%27",ei[40]="%28",ei[41]="%29",ei[42]="%2A",ei[43]="%2B",ei[44]="%2C",ei[59]="%3B",ei[61]="%3D",ei[32]="%20",ei);function mi(e,t){for(var n=void 0,r=-1,i=0;i<e.length;i++){var o=e.charCodeAt(i);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||45===o||46===o||95===o||126===o||t&&47===o)-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),void 0!==n&&(n+=e.charAt(i));else{void 0===n&&(n=e.substr(0,i));var s=di[o];void 0!==s?(-1!==r&&(n+=encodeURIComponent(e.substring(r,i)),r=-1),n+=s):-1===r&&(r=i)}}return-1!==r&&(n+=encodeURIComponent(e.substring(r))),void 0!==n?n:e}function gi(e){for(var t=void 0,n=0;n<e.length;n++){var r=e.charCodeAt(n);35===r||63===r?(void 0===t&&(t=e.substr(0,n)),t+=di[r]):void 0!==t&&(t+=e[n])}return void 0!==t?t:e}function pi(e,t){var n;return n=e.authority&&e.path.length>1&&"file"===e.scheme?"//"+e.authority+e.path:47===e.path.charCodeAt(0)&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&58===e.path.charCodeAt(2)?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,ti&&(n=n.replace(/\//g,"\\")),n}function vi(e,t){var n=t?gi:mi,r="",i=e.scheme,o=e.authority,s=e.path,a=e.query,u=e.fragment;if(i&&(r+=i,r+=":"),(o||"file"===i)&&(r+=ui,r+=ui),o){var l=o.indexOf("@");if(-1!==l){var c=o.substr(0,l);o=o.substr(l+1),-1===(l=c.indexOf(":"))?r+=n(c,!1):(r+=n(c.substr(0,l),!1),r+=":",r+=n(c.substr(l+1),!1)),r+="@"}-1===(l=(o=o.toLowerCase()).indexOf(":"))?r+=n(o,!1):(r+=n(o.substr(0,l),!1),r+=o.substr(l))}if(s){if(s.length>=3&&47===s.charCodeAt(0)&&58===s.charCodeAt(2))(h=s.charCodeAt(1))>=65&&h<=90&&(s="/"+String.fromCharCode(h+32)+":"+s.substr(3));else if(s.length>=2&&58===s.charCodeAt(1)){var h;(h=s.charCodeAt(0))>=65&&h<=90&&(s=String.fromCharCode(h+32)+":"+s.substr(2))}r+=n(s,!0)}return a&&(r+="?",r+=n(a,!1)),u&&(r+="#",r+=t?u:mi(u,!1)),r}function yi(e){try{return decodeURIComponent(e)}catch(t){return e.length>3?e.substr(0,3)+yi(e.substr(3)):e}}var bi=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function Ci(e){return e.match(bi)?e.replace(bi,(function(e){return yi(e)})):e}var _i=Ar(),Si=function(){function e(e,t){this.patternRegExps=[],this.isInclude=[];try{for(var n=0,r=e;n<r.length;n++){var i=r[n],o="!"!==i[0];o||(i=i.substring(1)),this.patternRegExps.push(new RegExp(zr(i)+"$")),this.isInclude.push(o)}this.uris=t}catch(e){this.patternRegExps.length=0,this.isInclude.length=0,this.uris=[]}}return e.prototype.matchesPattern=function(e){for(var t=!1,n=0;n<this.patternRegExps.length;n++)this.patternRegExps[n].test(e)&&(t=this.isInclude[n]);return t},e.prototype.getURIs=function(){return this.uris},e}(),Ei=function(){function e(e,t,n){this.service=e,this.url=t,this.dependencies={},n&&(this.unresolvedSchema=this.service.promise.resolve(new Ai(n)))}return e.prototype.getUnresolvedSchema=function(){return this.unresolvedSchema||(this.unresolvedSchema=this.service.loadSchema(this.url)),this.unresolvedSchema},e.prototype.getResolvedSchema=function(){var e=this;return this.resolvedSchema||(this.resolvedSchema=this.getUnresolvedSchema().then((function(t){return e.service.resolveSchemaContent(t,e.url,e.dependencies)}))),this.resolvedSchema},e.prototype.clearSchema=function(){this.resolvedSchema=void 0,this.unresolvedSchema=void 0,this.dependencies={}},e}(),Ai=function(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t},xi=function(){function e(e,t){void 0===t&&(t=[]),this.schema=e,this.errors=t}return e.prototype.getSection=function(e){var t=this.getSectionRecursive(e,this.schema);if(t)return jr(t)},e.prototype.getSectionRecursive=function(e,t){if(!t||"boolean"==typeof t||0===e.length)return t;var n=e.shift();if(t.properties&&(t.properties[n],1))return this.getSectionRecursive(e,t.properties[n]);if(t.patternProperties)for(var r=0,i=Object.keys(t.patternProperties);r<i.length;r++){var o=i[r];if(new RegExp(o).test(n))return this.getSectionRecursive(e,t.patternProperties[o])}else{if("object"==typeof t.additionalProperties)return this.getSectionRecursive(e,t.additionalProperties);if(n.match("[0-9]+"))if(Array.isArray(t.items)){var s=parseInt(n,10);if(!isNaN(s)&&t.items[s])return this.getSectionRecursive(e,t.items[s])}else if(t.items)return this.getSectionRecursive(e,t.items)}},e}(),Ni=function(){function e(e,t,n){this.contextService=t,this.requestService=e,this.promiseConstructor=n||Promise,this.callOnDispose=[],this.contributionSchemas={},this.contributionAssociations=[],this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={}}return e.prototype.getRegisteredSchemaIds=function(e){return Object.keys(this.registeredSchemasIds).filter((function(t){var n=ci.parse(t).scheme;return"schemaservice"!==n&&(!e||e(n))}))},Object.defineProperty(e.prototype,"promise",{get:function(){return this.promiseConstructor},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(;this.callOnDispose.length>0;)this.callOnDispose.pop()()},e.prototype.onResourceChange=function(e){for(var t=this,n=!1,r=[e=wi(e)],i=Object.keys(this.schemasById).map((function(e){return t.schemasById[e]}));r.length;)for(var o=r.pop(),s=0;s<i.length;s++){var a=i[s];a&&(a.url===o||a.dependencies[o])&&(a.url!==o&&r.push(a.url),a.clearSchema(),i[s]=void 0,n=!0)}return n},e.prototype.setSchemaContributions=function(e){if(e.schemas){var t=e.schemas;for(var n in t){var r=wi(n);this.contributionSchemas[r]=this.addSchemaHandle(r,t[n])}}if(Array.isArray(e.schemaAssociations))for(var i=0,o=e.schemaAssociations;i<o.length;i++){var s=o[i],a=s.uris.map(wi),u=this.addFilePatternAssociation(s.pattern,a);this.contributionAssociations.push(u)}},e.prototype.addSchemaHandle=function(e,t){var n=new Ei(this,e,t);return this.schemasById[e]=n,n},e.prototype.getOrAddSchemaHandle=function(e,t){return this.schemasById[e]||this.addSchemaHandle(e,t)},e.prototype.addFilePatternAssociation=function(e,t){var n=new Si(e,t);return this.filePatternAssociations.push(n),n},e.prototype.registerExternalSchema=function(e,t,n){var r=wi(e);return this.registeredSchemasIds[r]=!0,this.cachedSchemaForResource=void 0,t&&this.addFilePatternAssociation(t,[e]),n?this.addSchemaHandle(r,n):this.getOrAddSchemaHandle(r)},e.prototype.clearExternalSchemas=function(){for(var e in this.schemasById={},this.filePatternAssociations=[],this.registeredSchemasIds={},this.cachedSchemaForResource=void 0,this.contributionSchemas)this.schemasById[e]=this.contributionSchemas[e],this.registeredSchemasIds[e]=!0;for(var t=0,n=this.contributionAssociations;t<n.length;t++){var r=n[t];this.filePatternAssociations.push(r)}},e.prototype.getResolvedSchema=function(e){var t=wi(e),n=this.schemasById[t];return n?n.getResolvedSchema():this.promise.resolve(void 0)},e.prototype.loadSchema=function(e){if(!this.requestService){var t=_i("json.schema.norequestservice","Unable to load schema from '{0}'. No schema request service available",Ti(e));return this.promise.resolve(new Ai({},[t]))}return this.requestService(e).then((function(t){if(!t){var n=_i("json.schema.nocontent","Unable to load schema from '{0}': No content.",Ti(e));return new Ai({},[n])}var r,i=[];r=Tn(t,i);var o=i.length?[_i("json.schema.invalidFormat","Unable to parse content from '{0}': Parse error at offset {1}.",Ti(e),i[0].offset)]:[];return new Ai(r,o)}),(function(t){var n=t.toString(),r=t.toString().split("Error: ");return r.length>1&&(n=r[1]),Gr(n,".")&&(n=n.substr(0,n.length-1)),new Ai({},[_i("json.schema.nocontent","Unable to load schema from '{0}': {1}.",Ti(e),n)])}))},e.prototype.resolveSchemaContent=function(e,t,n){var r=this,i=e.errors.slice(0),o=e.schema;if(o.$schema){var s=wi(o.$schema);if("http://json-schema.org/draft-03/schema"===s)return this.promise.resolve(new xi({},[_i("json.schema.draft03.notsupported","Draft-03 schemas are not supported.")]));"https://json-schema.org/draft/2019-09/schema"===s&&i.push(_i("json.schema.draft201909.notsupported","Draft 2019-09 schemas are not yet fully supported."))}var a=this.contextService,u=function(e,t,n,r){var o=r?decodeURIComponent(r):void 0,s=function(e,t){if(!t)return e;var n=e;return"/"===t[0]&&(t=t.substr(1)),t.split("/").some((function(e){return!(n=n[e])})),n}(t,o);if(s)for(var a in s)s.hasOwnProperty(a)&&!e.hasOwnProperty(a)&&(e[a]=s[a]);else i.push(_i("json.schema.invalidref","$ref '{0}' in '{1}' can not be resolved.",o,n))},l=function(e,t,n,o,s){a&&!/^\w+:\/\/.*/.test(t)&&(t=a.resolveRelativePath(t,o)),t=wi(t);var l=r.getOrAddSchemaHandle(t);return l.getUnresolvedSchema().then((function(r){if(s[t]=!0,r.errors.length){var o=n?t+"#"+n:t;i.push(_i("json.schema.problemloadingref","Problems loading reference '{0}': {1}",o,r.errors[0]))}return u(e,r.schema,t,n),c(e,r.schema,t,l.dependencies)}))},c=function(e,t,n,i){if(!e||"object"!=typeof e)return Promise.resolve(null);for(var o=[e],s=[],a=[],c=function(e){for(var r=[];e.$ref;){var s=e.$ref,c=s.split("#",2);if(delete e.$ref,c[0].length>0)return void a.push(l(e,c[0],c[1],n,i));-1===r.indexOf(s)&&(u(e,t,n,c[1]),r.push(s))}!function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,r=e;n<r.length;n++){var i=r[n];"object"==typeof i&&o.push(i)}}(e.items,e.additionalItems,e.additionalProperties,e.not,e.contains,e.propertyNames,e.if,e.then,e.else),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,r=e;n<r.length;n++){var i=r[n];if("object"==typeof i)for(var s in i){var a=i[s];"object"==typeof a&&o.push(a)}}}(e.definitions,e.properties,e.patternProperties,e.dependencies),function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=0,r=e;n<r.length;n++){var i=r[n];if(Array.isArray(i))for(var s=0,a=i;s<a.length;s++){var u=a[s];"object"==typeof u&&o.push(u)}}}(e.anyOf,e.allOf,e.oneOf,e.items)};o.length;){var h=o.pop();s.indexOf(h)>=0||(s.push(h),c(h))}return r.promise.all(a)};return c(o,o,t,n).then((function(e){return new xi(o,i)}))},e.prototype.getSchemaForResource=function(e,t){if(t&&t.root&&"object"===t.root.type){var n=t.root.properties.filter((function(e){return"$schema"===e.keyNode.value&&e.valueNode&&"string"===e.valueNode.type}));if(n.length>0){var r=n[0].valueNode;if(r&&"string"===r.type){var i=Wr(r);if(i&&function(e,t){if(e.length<".".length)return!1;for(var n=0;n<".".length;n++)if(e[n]!=="."[n])return!1;return!0}(i)&&this.contextService&&(i=this.contextService.resolveRelativePath(i,e)),i){var o=wi(i);return this.getOrAddSchemaHandle(o).getResolvedSchema()}}}}if(this.cachedSchemaForResource&&this.cachedSchemaForResource.resource===e)return this.cachedSchemaForResource.resolvedSchema;for(var s=Object.create(null),a=[],u=0,l=this.filePatternAssociations;u<l.length;u++){var c=l[u];if(c.matchesPattern(e))for(var h=0,f=c.getURIs();h<f.length;h++){var d=f[h];s[d]||(a.push(d),s[d]=!0)}}var m=a.length>0?this.createCombinedSchema(e,a).getResolvedSchema():this.promise.resolve(void 0);return this.cachedSchemaForResource={resource:e,resolvedSchema:m},m},e.prototype.createCombinedSchema=function(e,t){if(1===t.length)return this.getOrAddSchemaHandle(t[0]);var n="schemaservice://combinedSchema/"+encodeURIComponent(e),r={allOf:t.map((function(e){return{$ref:e}}))};return this.addSchemaHandle(n,r)},e.prototype.getMatchingSchemas=function(e,t,n){if(n){var r=n.id||"schemaservice://untitled/matchingSchemas/"+Li++;return this.resolveSchemaContent(new Ai(n),r,{}).then((function(e){return t.getMatchingSchemas(e.schema).filter((function(e){return!e.inverted}))}))}return this.getSchemaForResource(e.uri,t).then((function(e){return e?t.getMatchingSchemas(e.schema).filter((function(e){return!e.inverted})):[]}))},e}(),Li=0;function wi(e){try{return ci.parse(e).toString()}catch(t){return e}}function Ti(e){try{var t=ci.parse(e);if("file"===t.scheme)return t.fsPath}catch(e){}return e}var ki=Ar(),Oi=function(){function e(e,t){this.jsonSchemaService=e,this.promise=t,this.validationEnabled=!0}return e.prototype.configure=function(e){e&&(this.validationEnabled=e.validate,this.commentSeverity=e.allowComments?void 0:yn.Error)},e.prototype.doValidation=function(e,t,n,r){var i=this;if(!this.validationEnabled)return this.promise.resolve([]);var o=[],s={},a=function(e){var t=e.range.start.line+" "+e.range.start.character+" "+e.message;s[t]||(s[t]=!0,o.push(e))},u=function(r){var s=n?Ri(n.trailingCommas):yn.Error,u=n?Ri(n.comments):i.commentSeverity;if(r){if(r.errors.length&&t.root){var l=t.root,c="object"===l.type?l.properties[0]:void 0;if(c&&"$schema"===c.keyNode.value){var h=c.valueNode||c,f=ln.create(e.positionAt(h.offset),e.positionAt(h.offset+h.length));a(Cn.create(f,r.errors[0],yn.Warning,gr.SchemaResolveError))}else f=ln.create(e.positionAt(l.offset),e.positionAt(l.offset+1)),a(Cn.create(f,r.errors[0],yn.Warning,gr.SchemaResolveError))}else{var d=t.validate(e,r.schema);d&&d.forEach(a)}Mi(r.schema)&&(u=void 0),Pi(r.schema)&&(s=void 0)}for(var m=0,g=t.syntaxErrors;m<g.length;m++){var p=g[m];if(p.code===gr.TrailingComma){if("number"!=typeof s)continue;p.severity=s}a(p)}if("number"==typeof u){var v=ki("InvalidCommentToken","Comments are not permitted in JSON.");t.comments.forEach((function(e){a(Cn.create(e,v,u,gr.CommentNotPermitted))}))}return o};if(r){var l=r.id||"schemaservice://untitled/"+Ii++;return this.jsonSchemaService.resolveSchemaContent(new Ai(r),l,{}).then((function(e){return u(e)}))}return this.jsonSchemaService.getSchemaForResource(e.uri,t).then((function(e){return u(e)}))},e}(),Ii=0;function Mi(e){if(e&&"object"==typeof e){if(Dn(e.allowComments))return e.allowComments;if(e.allOf)for(var t=0,n=e.allOf;t<n.length;t++){var r=Mi(n[t]);if(Dn(r))return r}}}function Pi(e){if(e&&"object"==typeof e){if(Dn(e.allowTrailingCommas))return e.allowTrailingCommas;var t=e;if(Dn(t.allowsTrailingCommas))return t.allowsTrailingCommas;if(e.allOf)for(var n=0,r=e.allOf;n<r.length;n++){var i=Pi(r[n]);if(Dn(i))return i}}}function Ri(e){switch(e){case"error":return yn.Error;case"warning":return yn.Warning;case"ignore":return}}function Di(e){return e<48?0:e<=57?e-48:(e<97&&(e+=32),e>=97&&e<=102?e-97+10:0)}function Fi(e){if("#"===e[0])switch(e.length){case 4:return{red:17*Di(e.charCodeAt(1))/255,green:17*Di(e.charCodeAt(2))/255,blue:17*Di(e.charCodeAt(3))/255,alpha:1};case 5:return{red:17*Di(e.charCodeAt(1))/255,green:17*Di(e.charCodeAt(2))/255,blue:17*Di(e.charCodeAt(3))/255,alpha:17*Di(e.charCodeAt(4))/255};case 7:return{red:(16*Di(e.charCodeAt(1))+Di(e.charCodeAt(2)))/255,green:(16*Di(e.charCodeAt(3))+Di(e.charCodeAt(4)))/255,blue:(16*Di(e.charCodeAt(5))+Di(e.charCodeAt(6)))/255,alpha:1};case 9:return{red:(16*Di(e.charCodeAt(1))+Di(e.charCodeAt(2)))/255,green:(16*Di(e.charCodeAt(3))+Di(e.charCodeAt(4)))/255,blue:(16*Di(e.charCodeAt(5))+Di(e.charCodeAt(6)))/255,alpha:(16*Di(e.charCodeAt(7))+Di(e.charCodeAt(8)))/255}}}var ji=function(){function e(e){this.schemaService=e}return e.prototype.findDocumentSymbols=function(e,t,n){var r=this;void 0===n&&(n={resultLimit:Number.MAX_VALUE});var i=t.root;if(!i)return[];var o=n.resultLimit||Number.MAX_VALUE,s=e.uri;if(("vscode://defaultsettings/keybindings.json"===s||Gr(s.toLowerCase(),"/user/keybindings.json"))&&"array"===i.type){for(var a=[],u=0,l=i.items;u<l.length;u++){var c=l[u];if("object"===c.type)for(var h=0,f=c.properties;h<f.length;h++){var d=f[h];if("key"===d.keyNode.value&&d.valueNode){var m=cn.create(e.uri,Ui(e,c));if(a.push({name:Wr(d.valueNode),kind:Xn.Function,location:m}),--o<=0)return n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(s),a}}}return a}for(var g=[{node:i,containerName:""}],p=0,v=!1,y=[],b=function(t,n){"array"===t.type?t.items.forEach((function(e){e&&g.push({node:e,containerName:n})})):"object"===t.type&&t.properties.forEach((function(t){var i=t.valueNode;if(i)if(o>0){o--;var s=cn.create(e.uri,Ui(e,t)),a=n?n+"."+t.keyNode.value:t.keyNode.value;y.push({name:r.getKeyLabel(t),kind:r.getSymbolKind(i.type),location:s,containerName:n}),g.push({node:i,containerName:a})}else v=!0}))};p<g.length;){var C=g[p++];b(C.node,C.containerName)}return v&&n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(s),y},e.prototype.findDocumentSymbols2=function(e,t,n){var r=this;void 0===n&&(n={resultLimit:Number.MAX_VALUE});var i=t.root;if(!i)return[];var o=n.resultLimit||Number.MAX_VALUE,s=e.uri;if(("vscode://defaultsettings/keybindings.json"===s||Gr(s.toLowerCase(),"/user/keybindings.json"))&&"array"===i.type){for(var a=[],u=0,l=i.items;u<l.length;u++){var c=l[u];if("object"===c.type)for(var h=0,f=c.properties;h<f.length;h++){var d=f[h];if("key"===d.keyNode.value&&d.valueNode){var m=Ui(e,c),g=Ui(e,d.keyNode);if(a.push({name:Wr(d.valueNode),kind:Xn.Function,range:m,selectionRange:g}),--o<=0)return n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(s),a}}}return a}for(var p=[],v=[{node:i,result:p}],y=0,b=!1,C=function(t,n){"array"===t.type?t.items.forEach((function(t,i){if(t)if(o>0){o--;var s=Ui(e,t),a=s,u={name:String(i),kind:r.getSymbolKind(t.type),range:s,selectionRange:a,children:[]};n.push(u),v.push({result:u.children,node:t})}else b=!0})):"object"===t.type&&t.properties.forEach((function(t){var i=t.valueNode;if(i)if(o>0){o--;var s=Ui(e,t),a=Ui(e,t.keyNode),u={name:r.getKeyLabel(t),kind:r.getSymbolKind(i.type),range:s,selectionRange:a,children:[]};n.push(u),v.push({result:u.children,node:i})}else b=!0}))};y<v.length;){var _=v[y++];C(_.node,_.result)}return b&&n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(s),p},e.prototype.getSymbolKind=function(e){switch(e){case"object":return Xn.Module;case"string":return Xn.String;case"number":return Xn.Number;case"array":return Xn.Array;case"boolean":return Xn.Boolean;default:return Xn.Variable}},e.prototype.getKeyLabel=function(e){var t=e.keyNode.value;return t&&(t=t.replace(/[\n]/g,"↵")),t&&t.trim()?t:'"'+t+'"'},e.prototype.findDocumentColors=function(e,t,n){return this.schemaService.getSchemaForResource(e.uri,t).then((function(r){var i=[];if(r)for(var o=n&&"number"==typeof n.resultLimit?n.resultLimit:Number.MAX_VALUE,s={},a=0,u=t.getMatchingSchemas(r.schema);a<u.length;a++){var l=u[a];if(!l.inverted&&l.schema&&("color"===l.schema.format||"color-hex"===l.schema.format)&&l.node&&"string"===l.node.type){var c=String(l.node.offset);if(!s[c]){var h=Fi(Wr(l.node));if(h){var f=Ui(e,l.node);i.push({color:h,range:f})}if(s[c]=!0,--o<=0)return n&&n.onResultLimitExceeded&&n.onResultLimitExceeded(e.uri),i}}}return i}))},e.prototype.getColorPresentations=function(e,t,n,r){var i,o=[],s=Math.round(255*n.red),a=Math.round(255*n.green),u=Math.round(255*n.blue);function l(e){var t=e.toString(16);return 2!==t.length?"0"+t:t}return i=1===n.alpha?"#"+l(s)+l(a)+l(u):"#"+l(s)+l(a)+l(u)+l(Math.round(255*n.alpha)),o.push({label:i,textEdit:Sn.replace(r,JSON.stringify(i))}),o},e}();function Ui(e,t){return ln.create(e.positionAt(t.offset),e.positionAt(t.offset+t.length))}var Vi=Ar(),$i={schemaAssociations:[],schemas:{"http://json-schema.org/schema#":{$ref:"http://json-schema.org/draft-07/schema#"},"http://json-schema.org/draft-04/schema#":{title:Vi("schema.json","Describes a JSON file using a schema. See json-schema.org for more info."),$schema:"http://json-schema.org/draft-04/schema#",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},positiveInteger:{type:"integer",minimum:0},positiveIntegerDefault0:{allOf:[{$ref:"#/definitions/positiveInteger"},{default:0}]},simpleTypes:{type:"string",enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},minItems:1,uniqueItems:!0}},type:"object",properties:{id:{type:"string",format:"uri"},$schema:{type:"string",format:"uri"},title:{type:"string"},description:{type:"string"},default:{},multipleOf:{type:"number",minimum:0,exclusiveMinimum:!0},maximum:{type:"number"},exclusiveMaximum:{type:"boolean",default:!1},minimum:{type:"number"},exclusiveMinimum:{type:"boolean",default:!1},maxLength:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minLength:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},pattern:{type:"string",format:"regex"},additionalItems:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:{}},maxItems:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minItems:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},uniqueItems:{type:"boolean",default:!1},maxProperties:{allOf:[{$ref:"#/definitions/positiveInteger"}]},minProperties:{allOf:[{$ref:"#/definitions/positiveIntegerDefault0"}]},required:{allOf:[{$ref:"#/definitions/stringArray"}]},additionalProperties:{anyOf:[{type:"boolean"},{$ref:"#"}],default:{}},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},enum:{type:"array",minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{anyOf:[{type:"string",enum:["date-time","uri","email","hostname","ipv4","ipv6","regex"]},{type:"string"}]},allOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},anyOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},oneOf:{allOf:[{$ref:"#/definitions/schemaArray"}]},not:{allOf:[{$ref:"#"}]}},dependencies:{exclusiveMaximum:["maximum"],exclusiveMinimum:["minimum"]},default:{}},"http://json-schema.org/draft-07/schema#":{title:Vi("schema.json","Describes a JSON file using a schema. See json-schema.org for more info."),definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}}},Wi={id:Vi("schema.json.id","A unique identifier for the schema."),$schema:Vi("schema.json.$schema","The schema to verify this document against."),title:Vi("schema.json.title","A descriptive title of the element."),description:Vi("schema.json.description","A long description of the element. Used in hover menus and suggestions."),default:Vi("schema.json.default","A default value. Used by suggestions."),multipleOf:Vi("schema.json.multipleOf","A number that should cleanly divide the current value (i.e. have no remainder)."),maximum:Vi("schema.json.maximum","The maximum numerical value, inclusive by default."),exclusiveMaximum:Vi("schema.json.exclusiveMaximum","Makes the maximum property exclusive."),minimum:Vi("schema.json.minimum","The minimum numerical value, inclusive by default."),exclusiveMinimum:Vi("schema.json.exclusiveMininum","Makes the minimum property exclusive."),maxLength:Vi("schema.json.maxLength","The maximum length of a string."),minLength:Vi("schema.json.minLength","The minimum length of a string."),pattern:Vi("schema.json.pattern","A regular expression to match the string against. It is not implicitly anchored."),additionalItems:Vi("schema.json.additionalItems","For arrays, only when items is set as an array. If it is a schema, then this schema validates items after the ones specified by the items array. If it is false, then additional items will cause validation to fail."),items:Vi("schema.json.items","For arrays. Can either be a schema to validate every element against or an array of schemas to validate each item against in order (the first schema will validate the first element, the second schema will validate the second element, and so on."),maxItems:Vi("schema.json.maxItems","The maximum number of items that can be inside an array. Inclusive."),minItems:Vi("schema.json.minItems","The minimum number of items that can be inside an array. Inclusive."),uniqueItems:Vi("schema.json.uniqueItems","If all of the items in the array must be unique. Defaults to false."),maxProperties:Vi("schema.json.maxProperties","The maximum number of properties an object can have. Inclusive."),minProperties:Vi("schema.json.minProperties","The minimum number of properties an object can have. Inclusive."),required:Vi("schema.json.required","An array of strings that lists the names of all properties required on this object."),additionalProperties:Vi("schema.json.additionalProperties","Either a schema or a boolean. If a schema, then used to validate all properties not matched by 'properties' or 'patternProperties'. If false, then any properties not matched by either will cause this schema to fail."),definitions:Vi("schema.json.definitions","Not used for validation. Place subschemas here that you wish to reference inline with $ref."),properties:Vi("schema.json.properties","A map of property names to schemas for each property."),patternProperties:Vi("schema.json.patternProperties","A map of regular expressions on property names to schemas for matching properties."),dependencies:Vi("schema.json.dependencies","A map of property names to either an array of property names or a schema. An array of property names means the property named in the key depends on the properties in the array being present in the object in order to be valid. If the value is a schema, then the schema is only applied to the object if the property in the key exists on the object."),enum:Vi("schema.json.enum","The set of literal values that are valid."),type:Vi("schema.json.type","Either a string of one of the basic schema types (number, integer, null, array, object, boolean, string) or an array of strings specifying a subset of those types."),format:Vi("schema.json.format","Describes the format expected for the value."),allOf:Vi("schema.json.allOf","An array of schemas, all of which must match."),anyOf:Vi("schema.json.anyOf","An array of schemas, where at least one must match."),oneOf:Vi("schema.json.oneOf","An array of schemas, exactly one of which must match."),not:Vi("schema.json.not","A schema which must not match."),$id:Vi("schema.json.$id","A unique identifier for the schema."),$ref:Vi("schema.json.$ref","Reference a definition hosted on any location."),$comment:Vi("schema.json.$comment","Comments from schema authors to readers or maintainers of the schema."),readOnly:Vi("schema.json.readOnly","Indicates that the value of the instance is managed exclusively by the owning authority."),examples:Vi("schema.json.examples","Sample JSON values associated with a particular schema, for the purpose of illustrating usage."),contains:Vi("schema.json.contains",'An array instance is valid against "contains" if at least one of its elements is valid against the given schema.'),propertyNames:Vi("schema.json.propertyNames","If the instance is an object, this keyword validates if every property name in the instance validates against the provided schema."),const:Vi("schema.json.const","An instance validates successfully against this keyword if its value is equal to the value of the keyword."),contentMediaType:Vi("schema.json.contentMediaType","Describes the media type of a string property."),contentEncoding:Vi("schema.json.contentEncoding","Describes the content encoding of a string property."),if:Vi("schema.json.if",'The validation outcome of the "if" subschema controls which of the "then" or "else" keywords are evaluated.'),then:Vi("schema.json.then",'The "if" subschema is used for validation when the "if" subschema succeeds.'),else:Vi("schema.json.else",'The "else" subschema is used for validation when the "if" subschema fails.')};for(var qi in $i.schemas){var Ki=$i.schemas[qi];for(var Bi in Ki.properties){var Hi=Ki.properties[Bi];"boolean"==typeof Hi&&(Hi=Ki.properties[Bi]={});var Yi=Wi[Bi];Yi?Hi.description=Yi:console.log(Bi+": localize('schema.json."+Bi+'\', "")')}}function Gi(e,t){var n=[],r=[],i=[],o=-1,s=wn(e.getText(),!1),a=s.scan();function u(e){n.push(e),r.push(i.length)}for(;17!==a;){switch(a){case 1:case 3:var l={startLine:f=e.positionAt(s.getTokenOffset()).line,endLine:f,kind:1===a?"object":"array"};i.push(l);break;case 2:case 4:var c=2===a?"object":"array";if(i.length>0&&i[i.length-1].kind===c){l=i.pop();var h=e.positionAt(s.getTokenOffset()).line;l&&h>l.startLine+1&&o!==l.startLine&&(l.endLine=h-1,u(l),o=l.startLine)}break;case 13:var f=e.positionAt(s.getTokenOffset()).line,d=e.positionAt(s.getTokenOffset()+s.getTokenLength()).line;1===s.getTokenError()&&f+1<e.lineCount?s.setPosition(e.offsetAt(un.create(f+1,0))):f<d&&(u({startLine:f,endLine:d,kind:gn.Comment}),o=f);break;case 12:var m=e.getText().substr(s.getTokenOffset(),s.getTokenLength()).match(/^\/\/\s*#(region\b)|(endregion\b)/);if(m)if(h=e.positionAt(s.getTokenOffset()).line,m[1])l={startLine:h,endLine:h,kind:gn.Region},i.push(l);else{for(var g=i.length-1;g>=0&&i[g].kind!==gn.Region;)g--;g>=0&&(l=i[g],i.length=g,h>l.startLine&&o!==l.startLine&&(l.endLine=h,u(l),o=l.startLine))}}a=s.scan()}var p=t&&t.rangeLimit;if("number"!=typeof p||n.length<=p)return n;t&&t.onRangeLimitExceeded&&t.onRangeLimitExceeded(e.uri);for(var v=[],y=0,b=r;y<b.length;y++)(A=b[y])<30&&(v[A]=(v[A]||0)+1);var C=0,_=0;for(g=0;g<v.length;g++){var S=v[g];if(S){if(S+C>p){_=g;break}C+=S}}var E=[];for(g=0;g<n.length;g++){var A;"number"==typeof(A=r[g])&&(A<_||A===_&&C++<p)&&E.push(n[g])}return E}function zi(e,t,n){function r(t,n){return ln.create(e.positionAt(t),e.positionAt(n))}var i=wn(e.getText(),!0);function o(e,t){return i.setPosition(e),i.scan()===t?i.getTokenOffset()+i.getTokenLength():-1}return t.map((function(t){for(var i=e.offsetAt(t),s=n.getNodeFromOffset(i,!0),a=[];s;){switch(s.type){case"string":case"object":case"array":var u=s.offset+1,l=s.offset+s.length-1;u<l&&i>=u&&i<=l&&a.push(r(u,l)),a.push(r(s.offset,s.offset+s.length));break;case"number":case"boolean":case"null":case"property":a.push(r(s.offset,s.offset+s.length))}if("property"===s.type||s.parent&&"array"===s.parent.type){var c=o(s.offset+s.length,5);-1!==c&&a.push(r(s.offset,c))}s=s.parent}for(var h=void 0,f=a.length-1;f>=0;f--)h=lr.create(a[f],h);return h||(h=lr.create(ln.create(t,t))),h}))}function Ji(e,t,n){var r=e.offsetAt(t),i=n.getNodeFromOffset(r,!0);if(!i||!function(e){return"string"===e.type&&e.parent&&"property"===e.parent.type&&e.parent.valueNode===e&&"$ref"===e.parent.keyNode.value||!1}(i))return Promise.resolve([]);var o=i.parent.valueNode,s=function(e,t){var n=function(e){return"#"===e?[]:"#"!==e[0]||"/"!==e[1]?null:e.substring(2).split(/\//).map(Xi)}(t);return n?Zi(n,e.root):null}(n,o.value);if(!s)return Promise.resolve([]);var a={targetUri:e.uri,originSelectionRange:Qi(e,o),targetRange:Qi(e,s),targetSelectionRange:Qi(e,s)};return Promise.resolve([a])}function Qi(e,t){return ln.create(e.positionAt(t.offset),e.positionAt(t.offset+t.length))}function Zi(e,t){if(!t)return null;if(0===e.length)return t;var n=e.shift();if(t&&"object"===t.type){var r=t.properties.find((function(e){return e.keyNode.value===n}));return r?Zi(e,r.valueNode):null}if(t&&"array"===t.type&&n.match(/^(0|[1-9][0-9]*)$/)){var i=Number.parseInt(n),o=t.items[i];return o?Zi(e,o):null}return null}function Xi(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function eo(e){var t=e.promiseConstructor||Promise,n=new Ni(e.schemaRequestService,e.workspaceContext,t);n.setSchemaContributions($i);var r=new Qr(n,e.contributions,t,e.clientCapabilities),i=new Zr(n,e.contributions,t),o=new ji(n),s=new Oi(n,t);return{configure:function(e){n.clearExternalSchemas(),e.schemas&&e.schemas.forEach((function(e){n.registerExternalSchema(e.uri,e.fileMatch,e.schema)})),s.configure(e)},resetSchema:function(e){return n.onResourceChange(e)},doValidation:s.doValidation.bind(s),parseJSONDocument:function(e){return function(e,t){var n=[],r=-1,i=e.getText(),o=wn(i,!1),s=t&&t.collectComments?[]:void 0;function a(){for(;;){var t=o.scan();switch(c(),t){case 12:case 13:Array.isArray(s)&&s.push(ln.create(e.positionAt(o.getTokenOffset()),e.positionAt(o.getTokenOffset()+o.getTokenLength())));break;case 15:case 14:break;default:return t}}}function u(t,i,o,s,a){if(void 0===a&&(a=yn.Error),0===n.length||o!==r){var u=ln.create(e.positionAt(o),e.positionAt(s));n.push(Cn.create(u,t,a,i,e.languageId)),r=o}}function l(e,t,n,r,s){void 0===n&&(n=void 0),void 0===r&&(r=[]),void 0===s&&(s=[]);var l=o.getTokenOffset(),c=o.getTokenOffset()+o.getTokenLength();if(l===c&&l>0){for(l--;l>0&&/\s/.test(i.charAt(l));)l--;c=l+1}if(u(e,t,l,c),n&&h(n,!1),r.length+s.length>0)for(var f=o.getToken();17!==f;){if(-1!==r.indexOf(f)){a();break}if(-1!==s.indexOf(f))break;f=a()}return n}function c(){switch(o.getTokenError()){case 4:return l(wr("InvalidUnicode","Invalid unicode sequence in string."),gr.InvalidUnicode),!0;case 5:return l(wr("InvalidEscapeCharacter","Invalid escape character in string."),gr.InvalidEscapeCharacter),!0;case 3:return l(wr("UnexpectedEndOfNumber","Unexpected end of number."),gr.UnexpectedEndOfNumber),!0;case 1:return l(wr("UnexpectedEndOfComment","Unexpected end of comment."),gr.UnexpectedEndOfComment),!0;case 2:return l(wr("UnexpectedEndOfString","Unexpected end of string."),gr.UnexpectedEndOfString),!0;case 6:return l(wr("InvalidCharacter","Invalid characters in string. Control characters must be escaped."),gr.InvalidCharacter),!0}return!1}function h(e,t){return e.length=o.getTokenOffset()+o.getTokenLength()-e.offset,t&&a(),e}var f=new Rr(void 0,0,0);function d(t,n){var r=new Dr(t,o.getTokenOffset(),f),i=m(r);if(!i){if(16!==o.getToken())return;l(wr("DoubleQuotesExpected","Property keys must be doublequoted"),gr.Undefined);var s=new Rr(r,o.getTokenOffset(),o.getTokenLength());s.value=o.getTokenValue(),i=s,a()}r.keyNode=i;var c=n[i.value];if(c?(u(wr("DuplicateKeyWarning","Duplicate object key"),gr.DuplicateKey,r.keyNode.offset,r.keyNode.offset+r.keyNode.length,yn.Warning),"object"==typeof c&&u(wr("DuplicateKeyWarning","Duplicate object key"),gr.DuplicateKey,c.keyNode.offset,c.keyNode.offset+c.keyNode.length,yn.Warning),n[i.value]=!0):n[i.value]=r,6===o.getToken())r.colonOffset=o.getTokenOffset(),a();else if(l(wr("ColonExpected","Colon expected"),gr.ColonExpected),10===o.getToken()&&e.positionAt(i.offset+i.length).line<e.positionAt(o.getTokenOffset()).line)return r.length=i.length,r;var h=g(r);return h?(r.valueNode=h,r.length=h.offset+h.length-r.offset,r):l(wr("ValueExpected","Value expected"),gr.ValueExpected,r,[],[2,5])}function m(e){if(10===o.getToken()){var t=new Rr(e,o.getTokenOffset());return t.value=o.getTokenValue(),h(t,!0)}}function g(e){return function(e){if(3===o.getToken()){var t=new Mr(e,o.getTokenOffset());a();for(var n=!1;4!==o.getToken()&&17!==o.getToken();){if(5===o.getToken()){n||l(wr("ValueExpected","Value expected"),gr.ValueExpected);var r=o.getTokenOffset();if(a(),4===o.getToken()){n&&u(wr("TrailingComma","Trailing comma"),gr.TrailingComma,r,r+1);continue}}else n&&l(wr("ExpectedComma","Expected comma"),gr.CommaExpected);var i=g(t);i?t.items.push(i):l(wr("PropertyExpected","Value expected"),gr.ValueExpected,void 0,[],[4,5]),n=!0}return 4!==o.getToken()?l(wr("ExpectedCloseBracket","Expected comma or closing bracket"),gr.CommaOrCloseBacketExpected,t):h(t,!0)}}(e)||function(e){if(1===o.getToken()){var t=new Fr(e,o.getTokenOffset()),n=Object.create(null);a();for(var r=!1;2!==o.getToken()&&17!==o.getToken();){if(5===o.getToken()){r||l(wr("PropertyExpected","Property expected"),gr.PropertyExpected);var i=o.getTokenOffset();if(a(),2===o.getToken()){r&&u(wr("TrailingComma","Trailing comma"),gr.TrailingComma,i,i+1);continue}}else r&&l(wr("ExpectedComma","Expected comma"),gr.CommaExpected);var s=d(t,n);s?t.properties.push(s):l(wr("PropertyExpected","Property expected"),gr.PropertyExpected,void 0,[],[2,5]),r=!0}return 2!==o.getToken()?l(wr("ExpectedCloseBrace","Expected comma or closing brace"),gr.CommaOrCloseBraceExpected,t):h(t,!0)}}(e)||m(e)||function(e){if(11===o.getToken()){var t=new Pr(e,o.getTokenOffset());if(0===o.getTokenError()){var n=o.getTokenValue();try{var r=JSON.parse(n);if(!Pn(r))return l(wr("InvalidNumberFormat","Invalid number format."),gr.Undefined,t);t.value=r}catch(e){return l(wr("InvalidNumberFormat","Invalid number format."),gr.Undefined,t)}t.isInteger=-1===n.indexOf(".")}return h(t,!0)}}(e)||function(e){switch(o.getToken()){case 7:return h(new Or(e,o.getTokenOffset()),!0);case 8:return h(new Ir(e,!0,o.getTokenOffset()),!0);case 9:return h(new Ir(e,!1,o.getTokenOffset()),!0);default:return}}(e)}var p=void 0;return 17!==a()&&((p=g(p))?17!==o.getToken()&&l(wr("End of file expected","End of file expected."),gr.Undefined):l(wr("Invalid symbol","Expected a JSON object, array or literal."),gr.Undefined)),new Br(p,n,s)}(e,{collectComments:!0})},newJSONDocument:function(e,t){return function(e,t){return void 0===t&&(t=[]),new Br(e,t,[])}(e,t)},getMatchingSchemas:n.getMatchingSchemas.bind(n),doResolve:r.doResolve.bind(r),doComplete:r.doComplete.bind(r),findDocumentSymbols:o.findDocumentSymbols.bind(o),findDocumentSymbols2:o.findDocumentSymbols2.bind(o),findColorSymbols:function(e,t){return o.findDocumentColors(e,t).then((function(e){return e.map((function(e){return e.range}))}))},findDocumentColors:o.findDocumentColors.bind(o),getColorPresentations:o.getColorPresentations.bind(o),doHover:i.doHover.bind(i),getFoldingRanges:Gi,getSelectionRanges:zi,findDefinition:Ji,format:function(e,t,n){var r=void 0;if(t){var i=e.offsetAt(t.start);r={offset:i,length:e.offsetAt(t.end)-i}}var o={tabSize:n?n.tabSize:4,insertSpaces:!n||n.insertSpaces,eol:"\n"};return function(e,t,n){return function(e,t,n){var r,i,o,s,a;if(t){for(s=t.offset,a=s+t.length,o=s;o>0&&!sn(e,o-1);)o--;for(var u=a;u<e.length&&!sn(e,u);)u++;i=e.substring(o,u),r=function(e,t){for(var n=0,r=0,i=t.tabSize||4;n<e.length;){var o=e.charAt(n);if(" "===o)r++;else{if("\t"!==o)break;r+=i}n++}return Math.floor(r/i)}(i,n)}else i=e,r=0,o=0,s=0,a=e.length;var l,c=function(e,t){for(var n=0;n<t.length;n++){var r=t.charAt(n);if("\r"===r)return n+1<t.length&&"\n"===t.charAt(n+1)?"\r\n":"\r";if("\n"===r)return"\n"}return e&&e.eol||"\n"}(n,e),h=!1,f=0;l=n.insertSpaces?on(" ",n.tabSize||4):"\t";var d=en(i,!1),m=!1;function g(){return c+on(l,r+f)}function p(){var e=d.scan();for(h=!1;15===e||14===e;)h=h||14===e,e=d.scan();return m=16===e||0!==d.getTokenError(),e}var v=[];function y(t,n,r){!m&&n<a&&r>s&&e.substring(n,r)!==t&&v.push({offset:n,length:r-n,content:t})}var b=p();if(17!==b){var C=d.getTokenOffset()+o;y(on(l,r),o,C)}for(;17!==b;){for(var _=d.getTokenOffset()+d.getTokenLength()+o,S=p(),E="";!h&&(12===S||13===S);)y(" ",_,d.getTokenOffset()+o),_=d.getTokenOffset()+d.getTokenLength()+o,E=12===S?g():"",S=p();if(2===S)1!==b&&(f--,E=g());else if(4===S)3!==b&&(f--,E=g());else{switch(b){case 3:case 1:f++,E=g();break;case 5:case 12:E=g();break;case 13:E=h?g():" ";break;case 6:E=" ";break;case 10:if(6===S){E="";break}case 7:case 8:case 9:case 11:case 2:case 4:12===S||13===S?E=" ":5!==S&&17!==S&&(m=!0);break;case 16:m=!0}!h||12!==S&&13!==S||(E=g())}y(E,_,d.getTokenOffset()+o),b=S}return v}(e,t,n)}(e.getText(),r,o).map((function(t){return Sn.replace(ln.create(e.positionAt(t.offset),e.positionAt(t.offset+t.length)),t.content)}))}}}var to,no=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))},ro=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]<i[3])){s.label=o[1];break}if(6===o[0]&&s.label<i[1]){s.label=i[1],i=o;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(o);break}i[2]&&s.ops.pop(),s.trys.pop();continue}o=t.call(e,s)}catch(e){o=[6,e],r=0}finally{n=i=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,a])}}};"undefined"!=typeof fetch&&(to=function(e){return fetch(e).then((function(e){return e.text()}))});var io=function(){function e(e,t){this._ctx=e,this._languageSettings=t.languageSettings,this._languageId=t.languageId,this._languageService=eo({workspaceContext:{resolveRelativePath:function(e,t){return function(e,t){if(function(e){return e.charCodeAt(0)===oo}(t)){var n=ci.parse(e),r=t.split("/");return n.with({path:ao(r)}).toString()}return function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var r=ci.parse(e),i=r.path.split("/"),o=0,s=t;o<s.length;o++){var a=s[o];i.push.apply(i,a.split("/"))}return r.with({path:ao(i)}).toString()}(e,t)}(t.substr(0,t.lastIndexOf("/")+1),e)}},schemaRequestService:t.enableSchemaRequest&&to}),this._languageService.configure(this._languageSettings)}return e.prototype.doValidation=function(e){return no(this,void 0,void 0,(function(){var t,n;return ro(this,(function(r){return(t=this._getTextDocument(e))?(n=this._languageService.parseJSONDocument(t),[2,this._languageService.doValidation(t,n)]):[2,Promise.resolve([])]}))}))},e.prototype.doComplete=function(e,t){return no(this,void 0,void 0,(function(){var n,r;return ro(this,(function(i){return n=this._getTextDocument(e),r=this._languageService.parseJSONDocument(n),[2,this._languageService.doComplete(n,t,r)]}))}))},e.prototype.doResolve=function(e){return no(this,void 0,void 0,(function(){return ro(this,(function(t){return[2,this._languageService.doResolve(e)]}))}))},e.prototype.doHover=function(e,t){return no(this,void 0,void 0,(function(){var n,r;return ro(this,(function(i){return n=this._getTextDocument(e),r=this._languageService.parseJSONDocument(n),[2,this._languageService.doHover(n,t,r)]}))}))},e.prototype.format=function(e,t,n){return no(this,void 0,void 0,(function(){var r,i;return ro(this,(function(o){return r=this._getTextDocument(e),i=this._languageService.format(r,t,n),[2,Promise.resolve(i)]}))}))},e.prototype.resetSchema=function(e){return no(this,void 0,void 0,(function(){return ro(this,(function(t){return[2,Promise.resolve(this._languageService.resetSchema(e))]}))}))},e.prototype.findDocumentSymbols=function(e){return no(this,void 0,void 0,(function(){var t,n,r;return ro(this,(function(i){return t=this._getTextDocument(e),n=this._languageService.parseJSONDocument(t),r=this._languageService.findDocumentSymbols(t,n),[2,Promise.resolve(r)]}))}))},e.prototype.findDocumentColors=function(e){return no(this,void 0,void 0,(function(){var t,n,r;return ro(this,(function(i){return t=this._getTextDocument(e),n=this._languageService.parseJSONDocument(t),r=this._languageService.findDocumentColors(t,n),[2,Promise.resolve(r)]}))}))},e.prototype.getColorPresentations=function(e,t,n){return no(this,void 0,void 0,(function(){var r,i,o;return ro(this,(function(s){return r=this._getTextDocument(e),i=this._languageService.parseJSONDocument(r),o=this._languageService.getColorPresentations(r,i,t,n),[2,Promise.resolve(o)]}))}))},e.prototype.getFoldingRanges=function(e,t){return no(this,void 0,void 0,(function(){var n,r;return ro(this,(function(i){return n=this._getTextDocument(e),r=this._languageService.getFoldingRanges(n,t),[2,Promise.resolve(r)]}))}))},e.prototype.getSelectionRanges=function(e,t){return no(this,void 0,void 0,(function(){var n,r,i;return ro(this,(function(o){return n=this._getTextDocument(e),r=this._languageService.parseJSONDocument(n),i=this._languageService.getSelectionRanges(n,t,r),[2,Promise.resolve(i)]}))}))},e.prototype._getTextDocument=function(e){for(var t=0,n=this._ctx.getMirrorModels();t<n.length;t++){var r=n[t];if(r.uri.toString()===e)return mr.create(e,this._languageId,r.version,r.getValue())}return null},e}(),oo="/".charCodeAt(0),so=".".charCodeAt(0);function ao(e){for(var t=[],n=0,r=e;n<r.length;n++){var i=r[n];0===i.length||1===i.length&&i.charCodeAt(0)===so||(2===i.length&&i.charCodeAt(0)===so&&i.charCodeAt(1)===so?t.pop():t.push(i))}e.length>1&&0===e[e.length-1].length&&t.push("");var o=t.join("/");return 0===e[0].length&&(o="/"+o),o}self.onmessage=function(){Xt((function(e,t){return new io(e,t)}))}})(); \ No newline at end of file diff --git a/docs/dist/json.worker.js.map b/docs/dist/json.worker.js.map deleted file mode 100644 index 8195c779..00000000 --- a/docs/dist/json.worker.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/arrays.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/cancellation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/diff/diff.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/diff/diffChange.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/errors.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/event.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/hash.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/iterator.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/keyCodes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/lifecycle.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/linkedList.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/path.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/platform.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/process.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/strings.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/types.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/uint.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/uri.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/base/common/worker/simpleWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/characterClassifier.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/position.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/range.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/selection.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/core/token.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/diff/diffComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/mirrorTextModel.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/model/wordHelper.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/linkComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/modes/supports/inplaceReplaceSupport.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/services/editorSimpleWorker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneBase.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/standalone/standaloneEnums.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/common/viewModel/prefixSumComputer.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/editor/editor.worker.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/impl/edit.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/impl/format.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/impl/parser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/impl/scanner.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/jsonc-parser/main.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/jsonLanguageService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/jsonLanguageTypes.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/parser/jsonParser.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/configuration.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonCompletion.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonDefinition.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonDocumentSymbols.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonFolding.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonHover.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonSchemaService.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonSelectionRanges.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/services/jsonValidation.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/colors.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/json.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/objects.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-json-languageservice/utils/strings.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-languageserver-textdocument/lib/esm/main.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-languageserver-types/main.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/_deps/vscode-uri/index.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/fillers/vscode-nls.js","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/jsonWorker.js","webpack://mermaid-live-editor/webpack/bootstrap","webpack://mermaid-live-editor/webpack/runtime/define property getters","webpack://mermaid-live-editor/webpack/runtime/global","webpack://mermaid-live-editor/webpack/runtime/hasOwnProperty shorthand","webpack://mermaid-live-editor/webpack/runtime/make namespace object","webpack://mermaid-live-editor/./node_modules/monaco-editor/esm/vs/language/json/json.worker.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AC1PA;AACA;AACA;AACA;AAC4C;AAC5C;AACA;AACA,YAAY,YAAY,sBAAsB,EAAE;AAChD,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iDAAU;AAC3C,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8CAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AAC6C;AACL;AACjC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,SAAS;AAC3D,4BAA4B,oDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAU;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sDAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4CAA4C;AAChF;AACA;AACA;AACA;AACA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sDAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gCAAgC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACtyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA,8CAA8C,KAAK;AACnD;AACA;AACA;AACA;AACA;AACO;AACP;AACA,2CAA2C,KAAK;AAChD;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC1FA;AACA;AACA;AACA;AACgD;AACiC;AACpC;AACtC;AACP;AACA,uBAAuB,0DAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,SAAS,4BAA4B,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,iEAAkB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,UAAU,6CAA6C,cAAc,8CAA8C,SAAS;AACzJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0DAAe;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sDAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AACtB;AACP;AACA;AACA;AACA,+BAA+B,sDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kCAAkC,0DAAe;AACjD;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC7kBA;AACA;AACA;AACA;AACwC;AACxC;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACO;AACP;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAuB;AACvC;AACA;AACA,wBAAwB,uDAAsB;AAC9C;AACA,oCAAoC,yDAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uDAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;;;;;;;;;;;;;;AC9P5D;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sBAAsB,iBAAiB,EAAE,EAAE;AACtE;AACA;AACA,CAAC,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;AC9E7B;AACA;AACA;AACA;AAC8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AAC9B;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kBAAkB,2DAAe;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;;;;;;;;;;;;;;;;;;;;;;;AC1PyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA,qEAAqE,kBAAkB;AACvF;AACA;AACA;AACO;AACP;AACA;AACO;AACP,QAAQ,qDAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,4BAA4B,sCAAsC;AAClE;AACO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY,EAAE,EAAE;AACjD;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe;AACf;;;;;;;;;;;;;;;AClMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwC;AACxC,4BAA4B;AAC5B,4BAA4B;AAC5B,4BAA4B;AAC5B,6BAA6B;AAC7B,oBAAoB;AACpB,8BAA8B;AAC9B,+BAA+B;AAC/B,sBAAsB;AACtB,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,KAAK,IAAI,KAAK,GAAG,WAAW,WAAW,SAAS;AAC1E,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,UAAU;AACzD;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU,EAAE,6BAA6B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB,EAAE,qBAAqB;AACxD;AACA;AACA;AACA,wCAAwC,IAAI,EAAE,KAAK,OAAO,IAAI,EAAE,IAAI,EAAE,KAAK;AAC3E;AACO;AACP;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4CAAW,KAAK,eAAe,MAAM,4CAAW;AACvE;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,UAAU,IAAI,oBAAoB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB,IAAI,aAAa;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe,IAAI,aAAa;AAC/C,eAAe,eAAe,EAAE,aAAa;AAC7C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,UAAU,IAAI,iBAAiB;AACzE;AACA;AACA;AACA,4CAA4C,UAAU,IAAI,oBAAoB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,KAAK;AAC1C;AACA,+BAA+B,OAAO,IAAI,KAAK,OAAO,OAAO,EAAE,KAAK;AACpE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI,EAAE,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,iBAAiB;AACjB;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E,oDAAoD,4CAAW;AAC/D;AACA;AACA;AACA;AACA;AACA,8BAA8B,KAAK,GAAG,aAAa;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,aAAa;AACpC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,KAAK;AACrC,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAkB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,IAAI;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,cAAc;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,IAAI,EAAE,kCAAkC;AAC1D,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,YAAY;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACO,mBAAmB,iDAAgB;AACnC,iBAAiB,iDAAgB;AACjC,kBAAkB,iDAAgB;AAClC,iBAAiB,iDAAgB;AACjC,kBAAkB,iDAAgB;AAClC,iBAAiB,iDAAgB;AACjC,aAAa,iDAAgB;;;;;;;;;;;;;;;;;;;;;;;;ACl2CpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACA;AACA;AACA;AACA;AACP,2DAA2D,qBAAM,gBAAgB,qBAAM,KAAK;AACrF;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,iCAAiC,6BAA6B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjHA;AACA;AACA;AACA;AACqE;AACrE;AACA,WAAW,YAAY,EAAE;AACzB;AACA,oBAAoB,QAAQ,mDAAS,aAAa,qDAAW,sBAAsB,EAAE;AACrF,wBAAwB,QAAQ,0DAAY,WAAW;AACvD,CAAC;AACM;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA,wBAAwB,MAAM;AAC9B;AACA;AACA,8BAA8B,EAAE;AAChC;AACA,iCAAiC,EAAE;AACnC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kCAAkC;AAClC,kCAAkC;AAClC,mCAAmC;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACO;AACP,+BAA+B,EAAE;AACjC;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mCAAmC,EAAE;AACrC;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yDAAyD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,UAAU,gCAAgC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP,UAAU,gCAAgC;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO,kDAAkD;AACzD;AACA;AACA;AACO;AACP;AACA;AACO;AACP,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,kBAAkB,sBAAsB,kBAAkB;AAC1D;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5uBA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA,6DAA6D,KAAK;AAClE;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACO;AACP;AACA;AACA,0EAA0E,WAAW;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;AC1IA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AAC0C;AACP;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0BAA0B,cAAc,YAAY,SAAS,aAAa,UAAU,gBAAgB,aAAa,EAAE;AAC5K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,YAAY;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2CAA2C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mDAAS;AACrB,+BAA+B,gDAAgB;AAC/C;AACA;AACA,sBAAsB,gDAAgB;AACtC;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,qBAAqB,cAAc,EAAE,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mDAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2CAA2C;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B,GAAG,eAAe,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAA+B,GAAG,eAAe,EAAE;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC1kBA;AACA;AACA;AACA;AAC8D;AACjB;AACN;AACF;AACrC;AACA;AACO;AACP,SAAS,+CAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2BAA2B,0EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA,qBAAqB,0EAA8B;AACnD,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,qDAAU;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wDAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAuB;AAC/C,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAuB;AACjD;AACA;AACA;AACA,mCAAmC,wDAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wDAAuB;AAC/C,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;AClRA;AACA;AACA;AACA;AACuD;AACvD;AACA;AACA;AACO;AACP;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACrIA;AACA;AACA;AACA;AACyC;AACzC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvWA;AACA;AACA;AACA;AACyC;AACN;AACnC;AACA;AACA;AACA;AACO,wBAAwB,4CAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kDAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5HA;AACA;AACA;AACA;AACO;AACP;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AAC4D;AACD;AAC3D;AACA;AACA,yBAAyB,8DAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mBAAmB;AACvD;AACA;AACA;AACA,uCAAuC,iBAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,YAAY;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,4EAA+B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,2EAA8B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACpYA;AACA;AACA;AACA;AAC+C;AACuB;AAC/D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA,mCAAmC,8EAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACO,gDAAgD,EAAE,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI,MAAM;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACA;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACpHA;AACA;AACA;AACA;AACqE;AAC9D;AACP;AACA;AACA,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6EAAmB;AAC7C;AACA,uBAAuB,yCAAyC;AAChE;AACA;AACA,+CAA+C;AAC/C,uBAAuB,uCAAuC;AAC9D;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACvQA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,sBAAsB;AACtB,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,4BAA4B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AAC2D;AACI;AACJ;AACT;AACH;AACN;AACc;AAC0B;AACC;AAC1B;AACyB;AACX;AACf;AACvD;AACA;AACA;AACA,0BAA0B,sEAAe;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAa,kBAAkB,+EAAyB;AACjF;AACA,uBAAuB,iDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAyD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,+DAA+D;AAC7G,4CAA4C,2DAA2D;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mEAAoB;AACjC;AACA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,0DAAS;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAY;AACjD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2BAA2B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAS;AAC7B;AACA,2BAA2B,0EAA8B;AACzD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA,oBAAoB,yDAAa;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA,gCAAgC,qEAAU;AAC1C,kDAAkD,sDAAU;AAC5D;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iCAAiC,qEAAqE,EAAE;AACrI;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oEAAY;AAC/B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,+DAA+D;AACpH;AACA;AACA;AACA;AACA,yBAAyB,oHAA6C;AACtE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qEAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,qEAAuB;AAC1D;AACA;AACA;AACA,mDAAmD,gCAAgC;AACnF;AACA;AACA;AACA;AACA,eAAe;AACf,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,IAAI,oEAAc,GAAG,mFAAmB;AACxC;;;;;;;;;;;;;;;;;;;;;;;;;ACzeA;AACA;AACA;AACA;AAC+E;AACvB;AACI;AACV;AACH;AACN;AACQ;AACR;AACe;AACjD;AACP;AACA,eAAe,kEAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iCAAiC,iFAAuB;AACxD,iBAAiB,0DAAO;AACxB,iBAAiB,wDAAuB;AACxC;AACA,kBAAkB,uDAAQ;AAC1B,eAAe,iDAAK;AACpB,mBAAmB,yDAAS;AAC5B,4BAA4B,mEAAkC;AAC9D,wBAAwB,+DAA8B;AACtD,mBAAmB,0DAAyB;AAC5C,aAAa,oDAAG;AAChB,eAAe,iDAAK;AACpB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AAC9D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AACtD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC,4CAA4C;AAC5C;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AACpB;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AAChD;AACP;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AAChC;AACP;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA,CAAC,kDAAkD;AACnD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AAC1C;AACP;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sEAAsE;AACvE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;;;;;;;;;;;;;;;;;ACvyBzC;AACA;AACA;AACA;AACwD;AACjD;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,8DAAQ;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAQ;AAC7B,cAAc,8DAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACtIA;AACA;AACA;AACA;AAC2E;AACE;AAC7E;AACO;AACP;AACA;AACA;AACA;AACA,6BAA6B,mFAAkB;AAC/C;AACA,KAAK,gBAAgB,sFAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACa;AAC+B;AACgB;AACrD;AACP;AACA;AACO;AACP;AACA;AACA;AACA,eAAe,qDAAS;AACxB;AACA;AACA;AACA;AACA,iBAAiB,8DAAkB;AACnC;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,qCAAqC,iGAAiG;AACtI;AACA;AACA,uBAAuB,8DAAkB;AACzC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oEAAoE;AACjH;AACA;AACA;AACA,6CAA6C,mFAAmF;AAChI;AACA;AACA;AACA,mCAAmC;AACnC,0BAA0B;AAC1B;AACA;AACA,gHAAgH,4BAA4B,EAAE;AAC9I;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,6BAA6B,iDAAK;AAClC;AACA;AACA,wCAAwC,iDAAK;AAC7C;AACA;AACA;AACA,gBAAgB,kDAAM,WAAW,qCAAqC;AACtE;AACA,kCAAkC,QAAQ;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4EAA4E;AACzF;AACO;AACP;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;ACzLA;AACA;AACA;AACA;AACa;AACgC;AACtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0DAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,sEAAsE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,WAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjMA;AACA;AACA;AACA;AACa;AACgC;AAC7C;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACO;AACP,sBAAsB;AACtB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2CAA2C;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,aAAa;AACzC,6BAA6B,gCAAgC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,+CAA+C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,4BAA4B,aAAa;AACzC,6BAA6B,gCAAgC;AAC7D,yBAAyB,0EAA0E;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kFAAkF;AACvH,SAAS;AACT;AACA,qCAAqC,oFAAoF;AACzH,yCAAyC,qFAAqF;AAC9H,SAAS;AACT;AACA,oDAAoD;AACpD;AACA;AACA;AACA,SAAS;AACT;AACA,qCAAqC,iFAAiF;AACtH,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,qBAAqB,gGAAgG;AACrH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,yBAAyB,+CAA+C;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,mCAAmC,oBAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA;AACO;AACP,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA,2BAA2B,qDAAqD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,gCAAgC;AAC7D,mBAAmB,0DAAa;AAChC;AACA,4CAA4C,6IAA6I,EAAE,gBAAgB,aAAa;AACxN;AACA;AACA,+CAA+C,kJAAkJ,EAAE,gBAAgB,aAAa;AAChO;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mBAAmB,0DAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACjnBA;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA;AACO;AACP,kCAAkC,sBAAsB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,kCAAkC,YAAY,EAAE;AAChD;AACA,+BAA+B,cAAc,EAAE;AAC/C,oCAAoC,cAAc,EAAE;AACpD,qCAAqC,oBAAoB,EAAE;AAC3D,qCAAqC,0BAA0B,EAAE;AACjE,wCAAwC,wBAAwB,EAAE;AAClE,6CAA6C,+CAA+C,EAAE;AAC9F,oCAAoC,kBAAkB,EAAE;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1WA;AACA;AACA;AACA;AACa;AACiC;AACP;AACM;AACF;AAC3C;AACA;AACA;AACA;AACO,oBAAoB,2DAAqB;AAChD;AACA;AACA;AACO,kBAAkB,wDAAkB;AAC3C;AACA;AACA;AACA;AACO,YAAY,kDAAY;AAC/B;AACA;AACA;AACO,gBAAgB,sDAAgB;AACvC;AACA;AACA;AACO,yBAAyB,+DAAyB;AACzD;AACA;AACA;AACO,uBAAuB,6DAAuB;AACrD;AACA;AACA;AACO,kBAAkB,wDAAkB;AAC3C;AACA;AACA;AACO,mBAAmB,yDAAmB;AAC7C;AACA;AACA;AACO,YAAY,kDAAY;AAC/B;AACA;AACA;AACA;AACA;AACO,oBAAoB,0DAAoB;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,mDAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,sDAAgB;AAC3B;AACA;AACA;AACA;AACO;AACP,kCAAkC,QAAQ;AAC1C,eAAe,oDAAc;AAC7B;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnHA;AACA;AACA;AACA;AAC8D;AACV;AACU;AACU;AACK;AACX;AACE;AACP;AACU;AACR;AACN;AACK;AACvB;AAChC;AACP;AACA,gCAAgC,6EAAiB;AACjD,6CAA6C,2EAAmB;AAChE,6BAA6B,uEAAc;AAC3C,wBAAwB,6DAAS;AACjC,kCAAkC,iFAAmB;AACrD,6BAA6B,uEAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT,qCAAqC,gDAAgD,EAAE;AACvF;AACA,gDAAgD,QAAQ,4DAAS,YAAY,wBAAwB,EAAE,EAAE;AACzG,uDAAuD,QAAQ,sEAAe,oBAAoB,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA,2CAA2C,wEAAwE,4BAA4B,gBAAgB,EAAE,EAAE,EAAE,EAAE,EAAE;AACzK;AACA;AACA;AACA,0BAA0B,sEAAgB;AAC1C,4BAA4B,gFAAkB;AAC9C,wBAAwB,wEAAc;AACtC;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,2BAA2B;AAC3B,mBAAmB,6DAAU;AAC7B,uBAAuB,oEAAgB,CAAC,gEAAY;AACpD,aAAa;AACb;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AACA;AACA;AACiZ;AAC5T;AAC4R;AACjX;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AACxB;AACP;AACA;AACA;AACA;AACA;AACA,0CAA0C,qFAAmB,EAAE,sFAAoB;AACnF;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CjD;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACkD;AACoC;AACI;AACrC;AACtD,eAAe,qEAAqB;AACpC;AACA,kBAAkB,2IAA2I,IAAI,cAAc,EAAE,EAAE,IAAI,KAAK;AAC5L,kBAAkB,uGAAuG,EAAE,mJAAmJ;AAC9Q,aAAa,8FAA8F,EAAE,+CAA+C;AAC5J,aAAa,kMAAkM;AAC/M,cAAc,+GAA+G,yBAAyB,6BAA6B,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,IAAI,gCAAgC,GAAG;AAC9P;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,+GAA+G,+BAA+B;AAC9I;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC6B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AAC2B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AAC8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AAC4B;AACtB;AACP,QAAQ,4DAAS;AACjB,0BAA0B,IAAI,UAAU;AACxC;AACA;AACA;AACO;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,0BAA0B,WAAW,EAAE;AACvC;AACA;AACA,KAAK;AACL,2DAA2D;AAC3D,4DAA4D;AAC5D,6DAA6D,aAAa;AAC1E,wDAAwD,aAAa;AACrE;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,iCAAiC;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;AAChE;AACA,mCAAmC,8EAA2B;AAC9D,mGAAmG,EAAE,sCAAsC,0BAA0B,EAAE;AACvK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AACrB;AACP,iCAAiC,kBAAkB;AACnD;AACA;AACO;AACP,WAAW,+DAAiB;AAC5B;AACO;AACP,WAAW,8DAAgB;AAC3B;AACO;AACP,uCAAuC,2BAA2B;AAClE;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD,kCAAkC,eAAe;AACjD;AACA;AACA;AACA;AACA;AACA,2CAA2C,2BAA2B;AACtE;AACA,mBAAmB,mEAAqB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAY;AACxC,uBAAuB,oEAAiB;AACxC,aAAa;AACb;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,2HAA2H,EAAE;AAC7H,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,gHAAgH,EAAE;AAClH,iBAAiB;AACjB;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD;AACA,iBAAiB;AACjB;AACA,6DAA6D,gBAAgB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,4BAA4B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE,8BAA8B,6EAA0B;AACxD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA,oBAAoB,yDAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,0BAA0B,8EAA2B;AACrD,mHAAmH,EAAE,kCAAkC,0BAA0B,EAAE;AACnL,iBAAiB;AACjB;AACA;AACA,YAAY,4DAAS;AACrB;AACA,iBAAiB,yDAAM;AACvB;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,0BAA0B,8EAA2B;AACrD,6FAA6F,EAAE;AAC/F,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yDAAyD;AACpF,0BAA0B,6EAA0B;AACpD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,uFAAuF,EAAE;AACzF,iBAAiB;AACjB;AACA;AACA;AACA,gBAAgB,2DAAQ;AACxB;AACA;AACA,gBAAgB,4DAAS;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB,4DAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,uGAAuG,EAAE;AACzG,aAAa;AACb;AACA;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,uGAAuG,EAAE;AACzG,aAAa;AACb;AACA;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,oFAAoF,EAAE;AACtF,aAAa;AACb;AACA;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,oFAAoF,EAAE;AACtF,aAAa;AACb;AACA;AACA;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,qGAAqG,EAAE;AACvG,aAAa;AACb;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,oGAAoG,EAAE;AACtG,aAAa;AACb;AACA,YAAY,2DAAQ;AACpB;AACA;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,qJAAqJ,EAAE;AACvJ,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,2CAA2C;AACtF,0CAA0C,6EAA0B;AACpE,kJAAkJ,EAAE;AACpJ,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,2CAA2C;AAClF,sCAAsC,6EAA0B;AAChE;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uBAAuB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,2CAA2C;AAC9E,kCAAkC,6EAA0B;AAC5D,6HAA6H,EAAE;AAC/H,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD;AACA,iBAAiB;AACjB;AACA;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,yFAAyF,EAAE;AAC3F,aAAa;AACb;AACA,YAAY,2DAAQ;AACpB;AACA,2BAA2B,2CAA2C;AACtE,0BAA0B,6EAA0B;AACpD,0FAA0F,EAAE;AAC5F,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA,8CAA8C,iDAAiD,IAAI;AACnG;AACA;AACA,kCAAkC,6EAA0B;AAC5D,4FAA4F,EAAE;AAC9F,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gBAAgB;AACjF;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAS;AACjC;AACA;AACA;AACA,2CAA2C,2EAA2E;AACtH,0CAA0C,6EAA0B;AACpE,kHAAkH,EAAE;AACpH,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,gBAAgB;AACxF;AACA;AACA,qEAAqE,gBAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAS;AACzC;AACA;AACA;AACA,mDAAmD,2EAA2E;AAC9H,kDAAkD,6EAA0B;AAC5E,0HAA0H,EAAE;AAC5H,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,qCAAqC;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,qCAAqC;AACtH;AACA;AACA;AACA;AACA;AACA,uCAAuC,2EAA2E;AAClH,sCAAsC,6EAA0B;AAChE,8GAA8G,EAAE;AAChH,yBAAyB;AACzB;AACA;AACA;AACA;AACA,YAAY,2DAAQ;AACpB;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,mGAAmG,EAAE;AACrG,iBAAiB;AACjB;AACA;AACA,YAAY,2DAAQ;AACpB;AACA;AACA,+BAA+B,2CAA2C;AAC1E,8BAA8B,6EAA0B;AACxD,kHAAkH,EAAE;AACpH,iBAAiB;AACjB;AACA;AACA;AACA,mEAAmE,gBAAgB;AACnF;AACA;AACA;AACA;AACA;AACA,qEAAqE,2BAA2B;AAChG;AACA;AACA;AACA,+CAA+C,2CAA2C;AAC1F,8CAA8C,6EAA0B;AACxE,mHAAmH,EAAE,uBAAuB,EAAE;AAC9I,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,kBAAkB,gEAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+DAAY;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY,2EAAwB,CAAC;AACvE;AACA,wBAAwB,+DAAY;AACpC,0BAA0B,oEAAiB;AAC3C;AACA;AACA;AACA;AACA,8BAA8B,kBAAkB;AAChD,wCAAwC,qBAAqB;AAC7D,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,2EAAwB;AAClH;AACA;AACA,kGAAkG,mFAAgC;AAClI;AACA;AACA,uFAAuF,kFAA+B;AACtH;AACA;AACA,yFAAyF,mFAAgC;AACzH;AACA;AACA,uFAAuF,kFAA+B;AACtH;AACA;AACA,0HAA0H,6EAA0B;AACpJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,wEAAwE,0EAAuB;AAC/F;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,mFAAmF,0EAAuB;AAC1G;AACA;AACA;AACA;AACA;AACA,oEAAoE,0EAAuB;AAC3F;AACA;AACA;AACA,uEAAuE,0EAAuB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG,uFAAoC;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,sEAAmB;AAClH;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,yEAAsB,kEAAkE,6EAA0B;AACrM;AACA,uFAAuF,yEAAsB,kEAAkE,6EAA0B;AACzM;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,gEAAgE,0EAAuB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,0EAAuB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,8EAA8E,6EAA0B;AACxG;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,mFAAmF,0EAAuB;AAC1G;AACA;AACA;AACA;AACA;AACA,oEAAoE,0EAAuB;AAC3F;AACA;AACA;AACA,0EAA0E,6EAA0B;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,sFAAmC;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2DAAQ;AAC7B,6FAA6F,sEAAmB;AAChH;AACA;AACA;AACA;AACA,yFAAyF,sEAAmB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,sEAAmB;AAC/G;AACA;AACA,8EAA8E,sEAAmB;AACjG;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACjtCA;AACA;AACA;AACA;AACsD;AACtD,eAAe,qEAAqB;AAC7B;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yBAAyB,6CAA6C;AACtE,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB,8BAA8B,6CAA6C;AAC3E,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA,iBAAiB;AACjB,oCAAoC,cAAc;AAClD;AACA;AACA,yBAAyB,cAAc;AACvC,yBAAyB;AACzB;AACA;AACA,iBAAiB;AACjB,6BAA6B,6CAA6C;AAC1E,6BAA6B,qDAAqD;AAClF;AACA;AACA;AACA,iBAAiB;AACjB,6BAA6B,cAAc;AAC3C,kCAAkC,6CAA6C;AAC/E,kCAAkC,qDAAqD;AACvF,6BAA6B,sCAAsC;AACnE,yCAAyC,cAAc;AACvD;AACA;AACA,6CAA6C,cAAc;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA,6CAA6C,cAAc;AAC3D;AACA,iBAAiB;AACjB;AACA;AACA,6CAA6C,cAAc;AAC3D,sCAAsC,oBAAoB;AAC1D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C,6BAA6B;AAC7B;AACA;AACA,iBAAiB;AACjB,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yBAAyB,sCAAsC;AAC/D;AACA;AACA,sCAAsC,sCAAsC;AAC5E;AACA;AACA;AACA;AACA,iBAAiB;AACjB,2BAA2B,mBAAmB;AAC9C,qCAAqC,mBAAmB;AACxD,oCAAoC,mBAAmB;AACvD,uBAAuB,cAAc;AACrC,yBAAyB,cAAc;AACvC,yBAAyB,cAAc;AACvC,0BAA0B,sCAAsC;AAChE,0BAA0B,sCAAsC;AAChE,0BAA0B,sCAAsC;AAChE,wBAAwB;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACjhBA;AACA;AACA;AACA;AACkD;AACC;AACA;AACJ;AACC;AAC4E;AACtE;AACtD,eAAe,qEAAqB;AACpC,oCAAoC;AACpC;AACA;AACA;AACA,uCAAuC,oBAAoB;AAC3D,4CAA4C,8BAA8B;AAC1E,4CAA4C,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAAY;AACzC;AACA,6CAA6C,uCAAuC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,mEAAgB;AAC9D;AACA;AACA,0EAA0E,8EAA2B;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,wEAAqB;AACzE;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,8DAAkB;AACnD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,8BAA8B,8EAA2B;AACzD;AACA;AACA,0CAA0C,2EAAwB;AAClE,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,8EAA2B;AACjE;AACA;AACA,kDAAkD,2EAAwB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,2DAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,yDAAyD,6BAA6B;AACtF;AACA,kCAAkC,8EAA2B;AAC7D;AACA;AACA,8CAA8C,2EAAwB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,2DAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uCAAuC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8EAA2B;AACrD;AACA;AACA,sCAAsC,2EAAwB;AAC9D;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,sBAAsB,8EAA2B;AACjD;AACA;AACA,kCAAkC,2EAAwB;AAC1D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,kCAAkC,2EAAwB;AAC1D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kCAAkC,2EAAwB;AAC1D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,2DAAe;AAChD;AACA;AACA;AACA;AACA,sCAAsC,2EAAwB;AAC9D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,+BAA+B;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,gBAAgB;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8DAAkB;AACvD;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6EAA6E,EAAE;AAClI;AACA;AACA,mDAAmD,6EAA6E,EAAE;AAClI;AACA;AACA,mDAAmD,6EAA6E,EAAE;AAClI;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;AACpD;AACA,YAAY,4DAAS;AACrB;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2EAAwB;AAC1D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,2EAAwB;AAC9D,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAS;AAC7B;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,2EAAwB;AAC9D;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAS;AACrB;AACA;AACA;AACA;AACA,kCAAkC,2EAAwB;AAC1D;AACA,aAAa;AACb;AACA;AACA,wDAAwD,YAAY;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,2EAAwB;AAC9D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0CAA0C,4DAAS;AACnD;AACA;AACA;AACA;AACA,uCAAuC,wBAAwB,EAAE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,gEAAgE;AAChE,kCAAkC,2EAAwB;AAC1D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2EAAwB;AAC1D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2EAAwB;AACtD;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,2EAAwB;AACtD;AACA,SAAS;AACT;AACA;AACA;AACA,qFAAqF,gDAAgD,EAAE;AACvI,+CAA+C;AAC/C,kBAAkB,4EAAyB;AAC3C;AACA;AACA;AACA,8BAA8B,2EAAwB;AACtD,SAAS,EAAE,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,QAAQ,KAAK;AAC/D;AACA;AACA;AACA,kCAAkC,QAAQ,KAAK;AAC/C;AACA;AACA,oCAAoC,aAAa,qB;AACjD;AACA;AACA;AACA,wBAAwB;AACxB,qBAAqB,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAe;AAC9B;AACA;AACA;AACA;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA,+EAA+E;AAC/E,4EAA4E;AAC5E,2BAA2B,uBAAuB;AAClD;AACA;AACA,0BAA0B,gCAAgC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2EAAwB;AAC3C;AACA;AACA,kCAAkC,2EAAwB;AAC1D,kCAAkC,4EAAyB;AAC3D,oCAAoC,8EAA2B;AAC/D,4BAA4B,2EAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,GAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA;AACA,sBAAsB,gEAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gEAAkB;AACxC;AACA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gEAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,sEAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4DAAS;AACtB;AACA,qMAAqM,sEAAmB;AACxN;AACA;AACA;AACA;AACA,aAAa,4DAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;;;;;;;;;;;;;;;;ACh6B1B;AACA;AACA;AACA;AACgD;AACzC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+DAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,6CAA6C,EAAE;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACkD;AACH;AACG;AAC8B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY,iCAAiC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,uDAAgB;AAChG;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA,8DAA8D,gBAAgB;AAC9E;AACA;AACA,+CAA+C,kEAAe;AAC9D,+CAA+C,OAAO,+DAAmB,4BAA4B,sEAAmB,sBAAsB;AAC9I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,2CAA2C;AACjF;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,kEAAe;AAC1D;AACA,yCAAyC,iIAAiI;AAC1K,0CAA0C,qDAAqD;AAC/F;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY,iCAAiC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,uDAAgB;AAChG;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA,8DAA8D,gBAAgB;AAC9E;AACA;AACA;AACA;AACA,+CAA+C,OAAO,+DAAmB,4BAA4B,sEAAmB,gDAAgD;AACxK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,0CAA0C,sCAAsC;AAChF;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,0CAA0C,2CAA2C;AACrF;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oEAAiB;AACxC;AACA,uBAAuB,oEAAiB;AACxC;AACA,uBAAuB,oEAAiB;AACxC;AACA,uBAAuB,mEAAgB;AACvC;AACA,uBAAuB,qEAAkB;AACzC;AACA,uBAAuB,sEAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,+BAA+B;AACpG;AACA;AACA;AACA;AACA,wCAAwC,8DAAY,CAAC,+DAAmB;AACxE;AACA;AACA,6CAA6C,6BAA6B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,yBAAyB,mEAAgB,gCAAgC;AAC9F;AACA;AACA;AACA,CAAC;AAC8B;AAC/B;AACA,WAAW,+DAAY;AACvB;;;;;;;;;;;;;;;;;ACnQA;AACA;AACA;AACA;AAC2D;AACU;AAC9D;AACP;AACA;AACA;AACA;AACA,kBAAkB,oEAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,kEAAe;AACzE;AACA;AACA;AACA,kCAAkC,+CAA+C,2EAAwB,EAAE;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,qCAAqC,uCAAuC,0EAAuB;AACnG;AACA;AACA;AACA;AACA,2DAA2D,0EAAuB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6BAA6B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxHA;AACA;AACA;AACA;AACkD;AACF;AAChD;AACA;AACA,uCAAuC,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAkB;AACzC,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA,4DAA4D,iCAAiC,EAAE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,+DAAmB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACoB;AACrB;AACA;AACA,2EAA2E;AAC3E,oCAAoC,wBAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC/GA;AACA;AACA;AACA;AACmD;AACH;AACD;AACG;AACI;AACtD,eAAe,qEAAqB;AACpC;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA;AACA;AACA;AACA,oDAAoD,0EAAmC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gCAAgC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,2DAAe;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,gBAAgB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2DAAS;AAClC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,+BAA+B,EAAE;AACrG;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,kCAAkC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,EAAE;AACzG,+DAA+D;AAC/D;AACA;AACA;AACA,oGAAoG,EAAE;AACtG,8CAA8C;AAC9C;AACA;AACA;AACA,4BAA4B,wDAAU;AACtC,qHAAqH,EAAE,2BAA2B,EAAE;AACpJ;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAgB;AAChC;AACA;AACA,0CAA0C,oEAAoE,EAAE,KAAK,EAAE;AACvH,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,EAAE,SAAS,EAAE;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gHAAgH,EAAE,KAAK,EAAE;AACzH;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,+CAA+C,oBAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,mDAAmD,sBAAsB;AACzE;AACA;AACA,yDAAyD,qBAAqB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,kDAAkD,EAAE;AAC3I;AACA;AACA;AACA;AACA,iFAAiF,wFAAwF,EAAE;AAC3K;AACA;AACA;AACA,mCAAmC,+DAAmB;AACtD,oCAAoC,yDAAkB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,gBAAgB;AAC3E;AACA;AACA,sDAAsD,gBAAgB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,UAAU,iBAAiB,EAAE,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF;AACjF,mGAAmG,oBAAoB,EAAE;AACzH,aAAa;AACb;AACA;AACA;AACA,2FAA2F,oBAAoB,EAAE;AACjH;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AAC4B;AAC7B;AACA;AACA;AACA;AACA,eAAe,2DAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjgBA;AACA;AACA;AACA;AACgE;AACL;AACpD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,YAAY;AACvD,sBAAsB,wEAAqB;AAC3C;AACA;AACA,sBAAsB,wEAAqB,CAAC,+DAAY;AACxD;AACA;AACA;AACA;AACA,eAAe,+DAAY;AAC3B;AACA,kBAAkB,oEAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5DA;AACA;AACA;AACA;AAC0D;AACiC;AACrC;AACN;AAChD,eAAe,qEAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,2EAAwB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mHAAmH,2EAAwB;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+DAAY;AAChD,mCAAmC,oEAAiB,0BAA0B,6EAA0B,EAAE,+EAA4B;AACtI;AACA;AACA,oCAAoC,+DAAY;AAChD,mCAAmC,oEAAiB,0BAA0B,6EAA0B,EAAE,+EAA4B;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA,+BAA+B,0EAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,oEAAiB,gCAAgC,gFAA6B;AAC7G,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,mEAAmE,mEAAgB,gBAAgB;AACnG;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;AACyB;AAC1B;AACA;AACA;AACA,YAAY,4DAAS;AACrB;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA,oBAAoB,4DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAS;AACrB;AACA;AACA;AACA,YAAY,4DAAS,0CAA0C;AAC/D;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA;AACA,oBAAoB,4DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2EAAwB;AACrD,+BAA+B,6EAA0B;AACzD;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,2BAA2B,aAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;ACpEA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,2BAA2B;AAC3B,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACzCA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;AChEA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,mCAAmC,EAAE;AACrC;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;AC3CA;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,SAAS;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,mGAAmG,SAAS;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5QA;AACA;AACA;AACA;AACa;AACb;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oEAAoE;AACrE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AACtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC0B;AAC3B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0EAA0E;AAC3E;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AAC1B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;AACjD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sBAAsB;AACvB;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAA6C,IAAI;AACjF;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oDAAoD;AACrD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AACxB;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AACzC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AACxC;AACP;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;AACjC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wCAAwC;AAClC;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gBAAgB;;;;;;;;;;;;;;;;ACt/CjB;AACA;AACA;AACA;AACa;AACb,iBAAiB,SAAI,IAAI,SAAI;AAC7B;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,iJAAiJ;AAC1M;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,YAAY;AAClF;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,gBAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,sCAAsC,sBAAsB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF;AACnF;AACA;AACA;AACA;AACA;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,0CAA0C,EAAE;AACrG;;;;;;;;;;;;;;;;ACloBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA,iBAAiB,SAAI,IAAI,SAAI;AAC7B,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA,mBAAmB,SAAI,IAAI,SAAI;AAC/B,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;AAC0F;AACxC;AAClD;AACA;AACA;AACA,oDAAoD,wBAAwB,EAAE;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wGAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,2CAA2C,sBAAsB;AACjE;AACA;AACA,uBAAuB,yGAA+B;AACtD;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,gEAAS;AAC3B;AACA,yBAAyB,6BAA6B;AACtD;AACA;AACA;AACA;AACA;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,cAAc,gEAAS;AACvB;AACA,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA,qBAAqB,6BAA6B;AAClD;AACO;AACP;AACA;;;;;;;UChPA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,wCAAwC,yCAAyC;WACjF;WACA;WACA,E;;;;;WCPA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA,CAAC,I;;;;;WCPD,wF;;;;;WCAA;WACA;WACA;WACA,sDAAsD,kBAAkB;WACxE;WACA,+CAA+C,cAAc;WAC7D,E;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACwD;AACX;AAC7C;AACA;AACA,IAAI,gEAAiB;AACrB,mBAAmB,sDAAU;AAC7B,KAAK;AACL","file":"json.worker.js","sourcesContent":["/**\r\n * Returns the last element of an array.\r\n * @param array The array.\r\n * @param n Which element from the end (default is zero).\r\n */\r\nexport function tail(array, n = 0) {\r\n return array[array.length - (1 + n)];\r\n}\r\nexport function tail2(arr) {\r\n if (arr.length === 0) {\r\n throw new Error('Invalid tail call');\r\n }\r\n return [arr.slice(0, arr.length - 1), arr[arr.length - 1]];\r\n}\r\nexport function equals(one, other, itemEquals = (a, b) => a === b) {\r\n if (one === other) {\r\n return true;\r\n }\r\n if (!one || !other) {\r\n return false;\r\n }\r\n if (one.length !== other.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = one.length; i < len; i++) {\r\n if (!itemEquals(one[i], other[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexport function binarySearch(array, key, comparator) {\r\n let low = 0, high = array.length - 1;\r\n while (low <= high) {\r\n const mid = ((low + high) / 2) | 0;\r\n const comp = comparator(array[mid], key);\r\n if (comp < 0) {\r\n low = mid + 1;\r\n }\r\n else if (comp > 0) {\r\n high = mid - 1;\r\n }\r\n else {\r\n return mid;\r\n }\r\n }\r\n return -(low + 1);\r\n}\r\n/**\r\n * Takes a sorted array and a function p. The array is sorted in such a way that all elements where p(x) is false\r\n * are located before all elements where p(x) is true.\r\n * @returns the least x for which p(x) is true or array.length if no element fullfills the given function.\r\n */\r\nexport function findFirstInSorted(array, p) {\r\n let low = 0, high = array.length;\r\n if (high === 0) {\r\n return 0; // no children\r\n }\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n if (p(array[mid])) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n return low;\r\n}\r\n/**\r\n * Like `Array#sort` but always stable. Usually runs a little slower `than Array#sort`\r\n * so only use this when actually needing stable sort.\r\n */\r\nexport function mergeSort(data, compare) {\r\n _sort(data, compare, 0, data.length - 1, []);\r\n return data;\r\n}\r\nfunction _merge(a, compare, lo, mid, hi, aux) {\r\n let leftIdx = lo, rightIdx = mid + 1;\r\n for (let i = lo; i <= hi; i++) {\r\n aux[i] = a[i];\r\n }\r\n for (let i = lo; i <= hi; i++) {\r\n if (leftIdx > mid) {\r\n // left side consumed\r\n a[i] = aux[rightIdx++];\r\n }\r\n else if (rightIdx > hi) {\r\n // right side consumed\r\n a[i] = aux[leftIdx++];\r\n }\r\n else if (compare(aux[rightIdx], aux[leftIdx]) < 0) {\r\n // right element is less -> comes first\r\n a[i] = aux[rightIdx++];\r\n }\r\n else {\r\n // left element comes first (less or equal)\r\n a[i] = aux[leftIdx++];\r\n }\r\n }\r\n}\r\nfunction _sort(a, compare, lo, hi, aux) {\r\n if (hi <= lo) {\r\n return;\r\n }\r\n const mid = lo + ((hi - lo) / 2) | 0;\r\n _sort(a, compare, lo, mid, aux);\r\n _sort(a, compare, mid + 1, hi, aux);\r\n if (compare(a[mid], a[mid + 1]) <= 0) {\r\n // left and right are sorted and if the last-left element is less\r\n // or equals than the first-right element there is nothing else\r\n // to do\r\n return;\r\n }\r\n _merge(a, compare, lo, mid, hi, aux);\r\n}\r\nexport function groupBy(data, compare) {\r\n const result = [];\r\n let currentGroup = undefined;\r\n for (const element of mergeSort(data.slice(0), compare)) {\r\n if (!currentGroup || compare(currentGroup[0], element) !== 0) {\r\n currentGroup = [element];\r\n result.push(currentGroup);\r\n }\r\n else {\r\n currentGroup.push(element);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @returns New array with all falsy values removed. The original array IS NOT modified.\r\n */\r\nexport function coalesce(array) {\r\n return array.filter(e => !!e);\r\n}\r\n/**\r\n * @returns false if the provided object is an array and not empty.\r\n */\r\nexport function isFalsyOrEmpty(obj) {\r\n return !Array.isArray(obj) || obj.length === 0;\r\n}\r\nexport function isNonEmptyArray(obj) {\r\n return Array.isArray(obj) && obj.length > 0;\r\n}\r\n/**\r\n * Removes duplicates from the given array. The optional keyFn allows to specify\r\n * how elements are checked for equalness by returning a unique string for each.\r\n */\r\nexport function distinct(array, keyFn) {\r\n if (!keyFn) {\r\n return array.filter((element, position) => {\r\n return array.indexOf(element) === position;\r\n });\r\n }\r\n const seen = Object.create(null);\r\n return array.filter((elem) => {\r\n const key = keyFn(elem);\r\n if (seen[key]) {\r\n return false;\r\n }\r\n seen[key] = true;\r\n return true;\r\n });\r\n}\r\nexport function distinctES6(array) {\r\n const seen = new Set();\r\n return array.filter(element => {\r\n if (seen.has(element)) {\r\n return false;\r\n }\r\n seen.add(element);\r\n return true;\r\n });\r\n}\r\n/**\r\n * @deprecated ES6: use `Array.findIndex`\r\n */\r\nexport function firstIndex(array, fn) {\r\n for (let i = 0; i < array.length; i++) {\r\n const element = array[i];\r\n if (fn(element)) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function first(array, fn, notFoundValue = undefined) {\r\n const index = firstIndex(array, fn);\r\n return index < 0 ? notFoundValue : array[index];\r\n}\r\nexport function firstOrDefault(array, notFoundValue) {\r\n return array.length > 0 ? array[0] : notFoundValue;\r\n}\r\nexport function flatten(arr) {\r\n return [].concat(...arr);\r\n}\r\nexport function range(arg, to) {\r\n let from = typeof to === 'number' ? arg : 0;\r\n if (typeof to === 'number') {\r\n from = arg;\r\n }\r\n else {\r\n from = 0;\r\n to = arg;\r\n }\r\n const result = [];\r\n if (from <= to) {\r\n for (let i = from; i < to; i++) {\r\n result.push(i);\r\n }\r\n }\r\n else {\r\n for (let i = from; i > to; i--) {\r\n result.push(i);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Insert `insertArr` inside `target` at `insertIndex`.\r\n * Please don't touch unless you understand https://jsperf.com/inserting-an-array-within-an-array\r\n */\r\nexport function arrayInsert(target, insertIndex, insertArr) {\r\n const before = target.slice(0, insertIndex);\r\n const after = target.slice(insertIndex);\r\n return before.concat(insertArr, after);\r\n}\r\n/**\r\n * Pushes an element to the start of the array, if found.\r\n */\r\nexport function pushToStart(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.unshift(value);\r\n }\r\n}\r\n/**\r\n * Pushes an element to the end of the array, if found.\r\n */\r\nexport function pushToEnd(arr, value) {\r\n const index = arr.indexOf(value);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n arr.push(value);\r\n }\r\n}\r\nexport function asArray(x) {\r\n return Array.isArray(x) ? x : [x];\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Emitter, Event } from './event.js';\r\nconst shortcutEvent = Object.freeze(function (callback, context) {\r\n const handle = setTimeout(callback.bind(context), 0);\r\n return { dispose() { clearTimeout(handle); } };\r\n});\r\nexport var CancellationToken;\r\n(function (CancellationToken) {\r\n function isCancellationToken(thing) {\r\n if (thing === CancellationToken.None || thing === CancellationToken.Cancelled) {\r\n return true;\r\n }\r\n if (thing instanceof MutableToken) {\r\n return true;\r\n }\r\n if (!thing || typeof thing !== 'object') {\r\n return false;\r\n }\r\n return typeof thing.isCancellationRequested === 'boolean'\r\n && typeof thing.onCancellationRequested === 'function';\r\n }\r\n CancellationToken.isCancellationToken = isCancellationToken;\r\n CancellationToken.None = Object.freeze({\r\n isCancellationRequested: false,\r\n onCancellationRequested: Event.None\r\n });\r\n CancellationToken.Cancelled = Object.freeze({\r\n isCancellationRequested: true,\r\n onCancellationRequested: shortcutEvent\r\n });\r\n})(CancellationToken || (CancellationToken = {}));\r\nclass MutableToken {\r\n constructor() {\r\n this._isCancelled = false;\r\n this._emitter = null;\r\n }\r\n cancel() {\r\n if (!this._isCancelled) {\r\n this._isCancelled = true;\r\n if (this._emitter) {\r\n this._emitter.fire(undefined);\r\n this.dispose();\r\n }\r\n }\r\n }\r\n get isCancellationRequested() {\r\n return this._isCancelled;\r\n }\r\n get onCancellationRequested() {\r\n if (this._isCancelled) {\r\n return shortcutEvent;\r\n }\r\n if (!this._emitter) {\r\n this._emitter = new Emitter();\r\n }\r\n return this._emitter.event;\r\n }\r\n dispose() {\r\n if (this._emitter) {\r\n this._emitter.dispose();\r\n this._emitter = null;\r\n }\r\n }\r\n}\r\nexport class CancellationTokenSource {\r\n constructor(parent) {\r\n this._token = undefined;\r\n this._parentListener = undefined;\r\n this._parentListener = parent && parent.onCancellationRequested(this.cancel, this);\r\n }\r\n get token() {\r\n if (!this._token) {\r\n // be lazy and create the token only when\r\n // actually needed\r\n this._token = new MutableToken();\r\n }\r\n return this._token;\r\n }\r\n cancel() {\r\n if (!this._token) {\r\n // save an object by returning the default\r\n // cancelled token when cancellation happens\r\n // before someone asks for the token\r\n this._token = CancellationToken.Cancelled;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually cancel\r\n this._token.cancel();\r\n }\r\n }\r\n dispose(cancel = false) {\r\n if (cancel) {\r\n this.cancel();\r\n }\r\n if (this._parentListener) {\r\n this._parentListener.dispose();\r\n }\r\n if (!this._token) {\r\n // ensure to initialize with an empty token if we had none\r\n this._token = CancellationToken.None;\r\n }\r\n else if (this._token instanceof MutableToken) {\r\n // actually dispose\r\n this._token.dispose();\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { DiffChange } from './diffChange.js';\r\nimport { stringHash } from '../hash.js';\r\nexport class StringDiffSequence {\r\n constructor(source) {\r\n this.source = source;\r\n }\r\n getElements() {\r\n const source = this.source;\r\n const characters = new Int32Array(source.length);\r\n for (let i = 0, len = source.length; i < len; i++) {\r\n characters[i] = source.charCodeAt(i);\r\n }\r\n return characters;\r\n }\r\n}\r\nexport function stringDiff(original, modified, pretty) {\r\n return new LcsDiff(new StringDiffSequence(original), new StringDiffSequence(modified)).ComputeDiff(pretty).changes;\r\n}\r\n//\r\n// The code below has been ported from a C# implementation in VS\r\n//\r\nexport class Debug {\r\n static Assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message);\r\n }\r\n }\r\n}\r\nexport class MyArray {\r\n /**\r\n * Copies a range of elements from an Array starting at the specified source index and pastes\r\n * them to another Array starting at the specified destination index. The length and the indexes\r\n * are specified as 64-bit integers.\r\n * sourceArray:\r\n *\t\tThe Array that contains the data to copy.\r\n * sourceIndex:\r\n *\t\tA 64-bit integer that represents the index in the sourceArray at which copying begins.\r\n * destinationArray:\r\n *\t\tThe Array that receives the data.\r\n * destinationIndex:\r\n *\t\tA 64-bit integer that represents the index in the destinationArray at which storing begins.\r\n * length:\r\n *\t\tA 64-bit integer that represents the number of elements to copy.\r\n */\r\n static Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n static Copy2(sourceArray, sourceIndex, destinationArray, destinationIndex, length) {\r\n for (let i = 0; i < length; i++) {\r\n destinationArray[destinationIndex + i] = sourceArray[sourceIndex + i];\r\n }\r\n }\r\n}\r\n/**\r\n * A utility class which helps to create the set of DiffChanges from\r\n * a difference operation. This class accepts original DiffElements and\r\n * modified DiffElements that are involved in a particular change. The\r\n * MarktNextChange() method can be called to mark the separation between\r\n * distinct changes. At the end, the Changes property can be called to retrieve\r\n * the constructed changes.\r\n */\r\nclass DiffChangeHelper {\r\n /**\r\n * Constructs a new DiffChangeHelper for the given DiffSequences.\r\n */\r\n constructor() {\r\n this.m_changes = [];\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n }\r\n /**\r\n * Marks the beginning of the next change in the set of differences.\r\n */\r\n MarkNextChange() {\r\n // Only add to the list if there is something to add\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Add the new change to our list\r\n this.m_changes.push(new DiffChange(this.m_originalStart, this.m_originalCount, this.m_modifiedStart, this.m_modifiedCount));\r\n }\r\n // Reset for the next change\r\n this.m_originalCount = 0;\r\n this.m_modifiedCount = 0;\r\n this.m_originalStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n this.m_modifiedStart = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n }\r\n /**\r\n * Adds the original element at the given position to the elements\r\n * affected by the current change. The modified index gives context\r\n * to the change position with respect to the original sequence.\r\n * @param originalIndex The index of the original element to add.\r\n * @param modifiedIndex The index of the modified element that provides corresponding position in the modified sequence.\r\n */\r\n AddOriginalElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_originalCount++;\r\n }\r\n /**\r\n * Adds the modified element at the given position to the elements\r\n * affected by the current change. The original index gives context\r\n * to the change position with respect to the modified sequence.\r\n * @param originalIndex The index of the original element that provides corresponding position in the original sequence.\r\n * @param modifiedIndex The index of the modified element to add.\r\n */\r\n AddModifiedElement(originalIndex, modifiedIndex) {\r\n // The 'true' start index is the smallest of the ones we've seen\r\n this.m_originalStart = Math.min(this.m_originalStart, originalIndex);\r\n this.m_modifiedStart = Math.min(this.m_modifiedStart, modifiedIndex);\r\n this.m_modifiedCount++;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class.\r\n */\r\n getChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n return this.m_changes;\r\n }\r\n /**\r\n * Retrieves all of the changes marked by the class in the reverse order\r\n */\r\n getReverseChanges() {\r\n if (this.m_originalCount > 0 || this.m_modifiedCount > 0) {\r\n // Finish up on whatever is left\r\n this.MarkNextChange();\r\n }\r\n this.m_changes.reverse();\r\n return this.m_changes;\r\n }\r\n}\r\n/**\r\n * An implementation of the difference algorithm described in\r\n * \"An O(ND) Difference Algorithm and its variations\" by Eugene W. Myers\r\n */\r\nexport class LcsDiff {\r\n /**\r\n * Constructs the DiffFinder\r\n */\r\n constructor(originalSequence, modifiedSequence, continueProcessingPredicate = null) {\r\n this.ContinueProcessingPredicate = continueProcessingPredicate;\r\n const [originalStringElements, originalElementsOrHash, originalHasStrings] = LcsDiff._getElements(originalSequence);\r\n const [modifiedStringElements, modifiedElementsOrHash, modifiedHasStrings] = LcsDiff._getElements(modifiedSequence);\r\n this._hasStrings = (originalHasStrings && modifiedHasStrings);\r\n this._originalStringElements = originalStringElements;\r\n this._originalElementsOrHash = originalElementsOrHash;\r\n this._modifiedStringElements = modifiedStringElements;\r\n this._modifiedElementsOrHash = modifiedElementsOrHash;\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n }\r\n static _isStringArray(arr) {\r\n return (arr.length > 0 && typeof arr[0] === 'string');\r\n }\r\n static _getElements(sequence) {\r\n const elements = sequence.getElements();\r\n if (LcsDiff._isStringArray(elements)) {\r\n const hashes = new Int32Array(elements.length);\r\n for (let i = 0, len = elements.length; i < len; i++) {\r\n hashes[i] = stringHash(elements[i], 0);\r\n }\r\n return [elements, hashes, true];\r\n }\r\n if (elements instanceof Int32Array) {\r\n return [[], elements, false];\r\n }\r\n return [[], new Int32Array(elements), false];\r\n }\r\n ElementsAreEqual(originalIndex, newIndex) {\r\n if (this._originalElementsOrHash[originalIndex] !== this._modifiedElementsOrHash[newIndex]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[originalIndex] === this._modifiedStringElements[newIndex] : true);\r\n }\r\n OriginalElementsAreEqual(index1, index2) {\r\n if (this._originalElementsOrHash[index1] !== this._originalElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._originalStringElements[index1] === this._originalStringElements[index2] : true);\r\n }\r\n ModifiedElementsAreEqual(index1, index2) {\r\n if (this._modifiedElementsOrHash[index1] !== this._modifiedElementsOrHash[index2]) {\r\n return false;\r\n }\r\n return (this._hasStrings ? this._modifiedStringElements[index1] === this._modifiedStringElements[index2] : true);\r\n }\r\n ComputeDiff(pretty) {\r\n return this._ComputeDiff(0, this._originalElementsOrHash.length - 1, 0, this._modifiedElementsOrHash.length - 1, pretty);\r\n }\r\n /**\r\n * Computes the differences between the original and modified input\r\n * sequences on the bounded range.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n _ComputeDiff(originalStart, originalEnd, modifiedStart, modifiedEnd, pretty) {\r\n const quitEarlyArr = [false];\r\n let changes = this.ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr);\r\n if (pretty) {\r\n // We have to clean up the computed diff to be more intuitive\r\n // but it turns out this cannot be done correctly until the entire set\r\n // of diffs have been computed\r\n changes = this.PrettifyChanges(changes);\r\n }\r\n return {\r\n quitEarly: quitEarlyArr[0],\r\n changes: changes\r\n };\r\n }\r\n /**\r\n * Private helper method which computes the differences on the bounded range\r\n * recursively.\r\n * @returns An array of the differences between the two input sequences.\r\n */\r\n ComputeDiffRecursive(originalStart, originalEnd, modifiedStart, modifiedEnd, quitEarlyArr) {\r\n quitEarlyArr[0] = false;\r\n // Find the start of the differences\r\n while (originalStart <= originalEnd && modifiedStart <= modifiedEnd && this.ElementsAreEqual(originalStart, modifiedStart)) {\r\n originalStart++;\r\n modifiedStart++;\r\n }\r\n // Find the end of the differences\r\n while (originalEnd >= originalStart && modifiedEnd >= modifiedStart && this.ElementsAreEqual(originalEnd, modifiedEnd)) {\r\n originalEnd--;\r\n modifiedEnd--;\r\n }\r\n // In the special case where we either have all insertions or all deletions or the sequences are identical\r\n if (originalStart > originalEnd || modifiedStart > modifiedEnd) {\r\n let changes;\r\n if (modifiedStart <= modifiedEnd) {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n // All insertions\r\n changes = [\r\n new DiffChange(originalStart, 0, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n else if (originalStart <= originalEnd) {\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // All deletions\r\n changes = [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, 0)\r\n ];\r\n }\r\n else {\r\n Debug.Assert(originalStart === originalEnd + 1, 'originalStart should only be one more than originalEnd');\r\n Debug.Assert(modifiedStart === modifiedEnd + 1, 'modifiedStart should only be one more than modifiedEnd');\r\n // Identical sequences - No differences\r\n changes = [];\r\n }\r\n return changes;\r\n }\r\n // This problem can be solved using the Divide-And-Conquer technique.\r\n const midOriginalArr = [0];\r\n const midModifiedArr = [0];\r\n const result = this.ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr);\r\n const midOriginal = midOriginalArr[0];\r\n const midModified = midModifiedArr[0];\r\n if (result !== null) {\r\n // Result is not-null when there was enough memory to compute the changes while\r\n // searching for the recursion point\r\n return result;\r\n }\r\n else if (!quitEarlyArr[0]) {\r\n // We can break the problem down recursively by finding the changes in the\r\n // First Half: (originalStart, modifiedStart) to (midOriginal, midModified)\r\n // Second Half: (midOriginal + 1, minModified + 1) to (originalEnd, modifiedEnd)\r\n // NOTE: ComputeDiff() is inclusive, therefore the second range starts on the next point\r\n const leftChanges = this.ComputeDiffRecursive(originalStart, midOriginal, modifiedStart, midModified, quitEarlyArr);\r\n let rightChanges = [];\r\n if (!quitEarlyArr[0]) {\r\n rightChanges = this.ComputeDiffRecursive(midOriginal + 1, originalEnd, midModified + 1, modifiedEnd, quitEarlyArr);\r\n }\r\n else {\r\n // We did't have time to finish the first half, so we don't have time to compute this half.\r\n // Consider the entire rest of the sequence different.\r\n rightChanges = [\r\n new DiffChange(midOriginal + 1, originalEnd - (midOriginal + 1) + 1, midModified + 1, modifiedEnd - (midModified + 1) + 1)\r\n ];\r\n }\r\n return this.ConcatenateChanges(leftChanges, rightChanges);\r\n }\r\n // If we hit here, we quit early, and so can't return anything meaningful\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr) {\r\n let forwardChanges = null;\r\n let reverseChanges = null;\r\n // First, walk backward through the forward diagonals history\r\n let changeHelper = new DiffChangeHelper();\r\n let diagonalMin = diagonalForwardStart;\r\n let diagonalMax = diagonalForwardEnd;\r\n let diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalForwardOffset;\r\n let lastOriginalIndex = -1073741824 /* MIN_SAFE_SMALL_INTEGER */;\r\n let historyIndex = this.m_forwardHistory.length - 1;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalForwardBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n // Vertical line (the element is an insert)\r\n originalIndex = forwardPoints[diagonal + 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex);\r\n diagonalRelative = (diagonal + 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Horizontal line (the element is a deletion)\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalForwardOffset;\r\n if (originalIndex < lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex - 1;\r\n changeHelper.AddOriginalElement(originalIndex, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalForwardBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n forwardPoints = this.m_forwardHistory[historyIndex];\r\n diagonalForwardBase = forwardPoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = forwardPoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // Ironically, we get the forward changes as the reverse of the\r\n // order we added them since we technically added them backwards\r\n forwardChanges = changeHelper.getReverseChanges();\r\n if (quitEarlyArr[0]) {\r\n // TODO: Calculate a partial from the reverse diagonals.\r\n // For now, just assume everything after the midOriginal/midModified point is a diff\r\n let originalStartPoint = midOriginalArr[0] + 1;\r\n let modifiedStartPoint = midModifiedArr[0] + 1;\r\n if (forwardChanges !== null && forwardChanges.length > 0) {\r\n const lastForwardChange = forwardChanges[forwardChanges.length - 1];\r\n originalStartPoint = Math.max(originalStartPoint, lastForwardChange.getOriginalEnd());\r\n modifiedStartPoint = Math.max(modifiedStartPoint, lastForwardChange.getModifiedEnd());\r\n }\r\n reverseChanges = [\r\n new DiffChange(originalStartPoint, originalEnd - originalStartPoint + 1, modifiedStartPoint, modifiedEnd - modifiedStartPoint + 1)\r\n ];\r\n }\r\n else {\r\n // Now walk backward through the reverse diagonals history\r\n changeHelper = new DiffChangeHelper();\r\n diagonalMin = diagonalReverseStart;\r\n diagonalMax = diagonalReverseEnd;\r\n diagonalRelative = (midOriginalArr[0] - midModifiedArr[0]) - diagonalReverseOffset;\r\n lastOriginalIndex = 1073741824 /* MAX_SAFE_SMALL_INTEGER */;\r\n historyIndex = (deltaIsEven) ? this.m_reverseHistory.length - 1 : this.m_reverseHistory.length - 2;\r\n do {\r\n // Get the diagonal index from the relative diagonal number\r\n const diagonal = diagonalRelative + diagonalReverseBase;\r\n // Figure out where we came from\r\n if (diagonal === diagonalMin || (diagonal < diagonalMax && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n // Horizontal line (the element is a deletion))\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex + 1;\r\n changeHelper.AddOriginalElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal + 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n else {\r\n // Vertical line (the element is an insertion)\r\n originalIndex = reversePoints[diagonal - 1];\r\n modifiedIndex = originalIndex - diagonalRelative - diagonalReverseOffset;\r\n if (originalIndex > lastOriginalIndex) {\r\n changeHelper.MarkNextChange();\r\n }\r\n lastOriginalIndex = originalIndex;\r\n changeHelper.AddModifiedElement(originalIndex + 1, modifiedIndex + 1);\r\n diagonalRelative = (diagonal - 1) - diagonalReverseBase; //Setup for the next iteration\r\n }\r\n if (historyIndex >= 0) {\r\n reversePoints = this.m_reverseHistory[historyIndex];\r\n diagonalReverseBase = reversePoints[0]; //We stored this in the first spot\r\n diagonalMin = 1;\r\n diagonalMax = reversePoints.length - 1;\r\n }\r\n } while (--historyIndex >= -1);\r\n // There are cases where the reverse history will find diffs that\r\n // are correct, but not intuitive, so we need shift them.\r\n reverseChanges = changeHelper.getChanges();\r\n }\r\n return this.ConcatenateChanges(forwardChanges, reverseChanges);\r\n }\r\n /**\r\n * Given the range to compute the diff on, this method finds the point:\r\n * (midOriginal, midModified)\r\n * that exists in the middle of the LCS of the two sequences and\r\n * is the point at which the LCS problem may be broken down recursively.\r\n * This method will try to keep the LCS trace in memory. If the LCS recursion\r\n * point is calculated and the full trace is available in memory, then this method\r\n * will return the change list.\r\n * @param originalStart The start bound of the original sequence range\r\n * @param originalEnd The end bound of the original sequence range\r\n * @param modifiedStart The start bound of the modified sequence range\r\n * @param modifiedEnd The end bound of the modified sequence range\r\n * @param midOriginal The middle point of the original sequence range\r\n * @param midModified The middle point of the modified sequence range\r\n * @returns The diff changes, if available, otherwise null\r\n */\r\n ComputeRecursionPoint(originalStart, originalEnd, modifiedStart, modifiedEnd, midOriginalArr, midModifiedArr, quitEarlyArr) {\r\n let originalIndex = 0, modifiedIndex = 0;\r\n let diagonalForwardStart = 0, diagonalForwardEnd = 0;\r\n let diagonalReverseStart = 0, diagonalReverseEnd = 0;\r\n // To traverse the edit graph and produce the proper LCS, our actual\r\n // start position is just outside the given boundary\r\n originalStart--;\r\n modifiedStart--;\r\n // We set these up to make the compiler happy, but they will\r\n // be replaced before we return with the actual recursion point\r\n midOriginalArr[0] = 0;\r\n midModifiedArr[0] = 0;\r\n // Clear out the history\r\n this.m_forwardHistory = [];\r\n this.m_reverseHistory = [];\r\n // Each cell in the two arrays corresponds to a diagonal in the edit graph.\r\n // The integer value in the cell represents the originalIndex of the furthest\r\n // reaching point found so far that ends in that diagonal.\r\n // The modifiedIndex can be computed mathematically from the originalIndex and the diagonal number.\r\n const maxDifferences = (originalEnd - originalStart) + (modifiedEnd - modifiedStart);\r\n const numDiagonals = maxDifferences + 1;\r\n const forwardPoints = new Int32Array(numDiagonals);\r\n const reversePoints = new Int32Array(numDiagonals);\r\n // diagonalForwardBase: Index into forwardPoints of the diagonal which passes through (originalStart, modifiedStart)\r\n // diagonalReverseBase: Index into reversePoints of the diagonal which passes through (originalEnd, modifiedEnd)\r\n const diagonalForwardBase = (modifiedEnd - modifiedStart);\r\n const diagonalReverseBase = (originalEnd - originalStart);\r\n // diagonalForwardOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalForwardBase)\r\n // diagonalReverseOffset: Geometric offset which allows modifiedIndex to be computed from originalIndex and the\r\n // diagonal number (relative to diagonalReverseBase)\r\n const diagonalForwardOffset = (originalStart - modifiedStart);\r\n const diagonalReverseOffset = (originalEnd - modifiedEnd);\r\n // delta: The difference between the end diagonal and the start diagonal. This is used to relate diagonal numbers\r\n // relative to the start diagonal with diagonal numbers relative to the end diagonal.\r\n // The Even/Oddn-ness of this delta is important for determining when we should check for overlap\r\n const delta = diagonalReverseBase - diagonalForwardBase;\r\n const deltaIsEven = (delta % 2 === 0);\r\n // Here we set up the start and end points as the furthest points found so far\r\n // in both the forward and reverse directions, respectively\r\n forwardPoints[diagonalForwardBase] = originalStart;\r\n reversePoints[diagonalReverseBase] = originalEnd;\r\n // Remember if we quit early, and thus need to do a best-effort result instead of a real result.\r\n quitEarlyArr[0] = false;\r\n // A couple of points:\r\n // --With this method, we iterate on the number of differences between the two sequences.\r\n // The more differences there actually are, the longer this will take.\r\n // --Also, as the number of differences increases, we have to search on diagonals further\r\n // away from the reference diagonal (which is diagonalForwardBase for forward, diagonalReverseBase for reverse).\r\n // --We extend on even diagonals (relative to the reference diagonal) only when numDifferences\r\n // is even and odd diagonals only when numDifferences is odd.\r\n for (let numDifferences = 1; numDifferences <= (maxDifferences / 2) + 1; numDifferences++) {\r\n let furthestOriginalIndex = 0;\r\n let furthestModifiedIndex = 0;\r\n // Run the algorithm in the forward direction\r\n diagonalForwardStart = this.ClipDiagonalBound(diagonalForwardBase - numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n diagonalForwardEnd = this.ClipDiagonalBound(diagonalForwardBase + numDifferences, numDifferences, diagonalForwardBase, numDiagonals);\r\n for (let diagonal = diagonalForwardStart; diagonal <= diagonalForwardEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalStart, modifiedStart)\r\n if (diagonal === diagonalForwardStart || (diagonal < diagonalForwardEnd && forwardPoints[diagonal - 1] < forwardPoints[diagonal + 1])) {\r\n originalIndex = forwardPoints[diagonal + 1];\r\n }\r\n else {\r\n originalIndex = forwardPoints[diagonal - 1] + 1;\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalForwardBase) - diagonalForwardOffset;\r\n // Save the current originalIndex so we can test for false overlap in step 3\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // so long as the elements are equal.\r\n while (originalIndex < originalEnd && modifiedIndex < modifiedEnd && this.ElementsAreEqual(originalIndex + 1, modifiedIndex + 1)) {\r\n originalIndex++;\r\n modifiedIndex++;\r\n }\r\n forwardPoints[diagonal] = originalIndex;\r\n if (originalIndex + modifiedIndex > furthestOriginalIndex + furthestModifiedIndex) {\r\n furthestOriginalIndex = originalIndex;\r\n furthestModifiedIndex = modifiedIndex;\r\n }\r\n // STEP 3: If delta is odd (overlap first happens on forward when delta is odd)\r\n // and diagonal is in the range of reverse diagonals computed for numDifferences-1\r\n // (the previous iteration; we haven't computed reverse diagonals for numDifferences yet)\r\n // then check for overlap.\r\n if (!deltaIsEven && Math.abs(diagonal - diagonalReverseBase) <= (numDifferences - 1)) {\r\n if (originalIndex >= reversePoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex <= reversePoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Check to see if we should be quitting early, before moving on to the next iteration.\r\n const matchLengthOfLongest = ((furthestOriginalIndex - originalStart) + (furthestModifiedIndex - modifiedStart) - numDifferences) / 2;\r\n if (this.ContinueProcessingPredicate !== null && !this.ContinueProcessingPredicate(furthestOriginalIndex, matchLengthOfLongest)) {\r\n // We can't finish, so skip ahead to generating a result from what we have.\r\n quitEarlyArr[0] = true;\r\n // Use the furthest distance we got in the forward direction.\r\n midOriginalArr[0] = furthestOriginalIndex;\r\n midModifiedArr[0] = furthestModifiedIndex;\r\n if (matchLengthOfLongest > 0 && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // Enough of the history is in memory to walk it backwards\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // We didn't actually remember enough of the history.\r\n //Since we are quiting the diff early, we need to shift back the originalStart and modified start\r\n //back into the boundary limits since we decremented their value above beyond the boundary limit.\r\n originalStart++;\r\n modifiedStart++;\r\n return [\r\n new DiffChange(originalStart, originalEnd - originalStart + 1, modifiedStart, modifiedEnd - modifiedStart + 1)\r\n ];\r\n }\r\n }\r\n // Run the algorithm in the reverse direction\r\n diagonalReverseStart = this.ClipDiagonalBound(diagonalReverseBase - numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n diagonalReverseEnd = this.ClipDiagonalBound(diagonalReverseBase + numDifferences, numDifferences, diagonalReverseBase, numDiagonals);\r\n for (let diagonal = diagonalReverseStart; diagonal <= diagonalReverseEnd; diagonal += 2) {\r\n // STEP 1: We extend the furthest reaching point in the present diagonal\r\n // by looking at the diagonals above and below and picking the one whose point\r\n // is further away from the start point (originalEnd, modifiedEnd)\r\n if (diagonal === diagonalReverseStart || (diagonal < diagonalReverseEnd && reversePoints[diagonal - 1] >= reversePoints[diagonal + 1])) {\r\n originalIndex = reversePoints[diagonal + 1] - 1;\r\n }\r\n else {\r\n originalIndex = reversePoints[diagonal - 1];\r\n }\r\n modifiedIndex = originalIndex - (diagonal - diagonalReverseBase) - diagonalReverseOffset;\r\n // Save the current originalIndex so we can test for false overlap\r\n const tempOriginalIndex = originalIndex;\r\n // STEP 2: We can continue to extend the furthest reaching point in the present diagonal\r\n // as long as the elements are equal.\r\n while (originalIndex > originalStart && modifiedIndex > modifiedStart && this.ElementsAreEqual(originalIndex, modifiedIndex)) {\r\n originalIndex--;\r\n modifiedIndex--;\r\n }\r\n reversePoints[diagonal] = originalIndex;\r\n // STEP 4: If delta is even (overlap first happens on reverse when delta is even)\r\n // and diagonal is in the range of forward diagonals computed for numDifferences\r\n // then check for overlap.\r\n if (deltaIsEven && Math.abs(diagonal - diagonalForwardBase) <= numDifferences) {\r\n if (originalIndex <= forwardPoints[diagonal]) {\r\n midOriginalArr[0] = originalIndex;\r\n midModifiedArr[0] = modifiedIndex;\r\n if (tempOriginalIndex >= forwardPoints[diagonal] && 1447 /* MaxDifferencesHistory */ > 0 && numDifferences <= (1447 /* MaxDifferencesHistory */ + 1)) {\r\n // BINGO! We overlapped, and we have the full trace in memory!\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n else {\r\n // Either false overlap, or we didn't have enough memory for the full trace\r\n // Just return the recursion point\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n // Save current vectors to history before the next iteration\r\n if (numDifferences <= 1447 /* MaxDifferencesHistory */) {\r\n // We are allocating space for one extra int, which we fill with\r\n // the index of the diagonal base index\r\n let temp = new Int32Array(diagonalForwardEnd - diagonalForwardStart + 2);\r\n temp[0] = diagonalForwardBase - diagonalForwardStart + 1;\r\n MyArray.Copy2(forwardPoints, diagonalForwardStart, temp, 1, diagonalForwardEnd - diagonalForwardStart + 1);\r\n this.m_forwardHistory.push(temp);\r\n temp = new Int32Array(diagonalReverseEnd - diagonalReverseStart + 2);\r\n temp[0] = diagonalReverseBase - diagonalReverseStart + 1;\r\n MyArray.Copy2(reversePoints, diagonalReverseStart, temp, 1, diagonalReverseEnd - diagonalReverseStart + 1);\r\n this.m_reverseHistory.push(temp);\r\n }\r\n }\r\n // If we got here, then we have the full trace in history. We just have to convert it to a change list\r\n // NOTE: This part is a bit messy\r\n return this.WALKTRACE(diagonalForwardBase, diagonalForwardStart, diagonalForwardEnd, diagonalForwardOffset, diagonalReverseBase, diagonalReverseStart, diagonalReverseEnd, diagonalReverseOffset, forwardPoints, reversePoints, originalIndex, originalEnd, midOriginalArr, modifiedIndex, modifiedEnd, midModifiedArr, deltaIsEven, quitEarlyArr);\r\n }\r\n /**\r\n * Shifts the given changes to provide a more intuitive diff.\r\n * While the first element in a diff matches the first element after the diff,\r\n * we shift the diff down.\r\n *\r\n * @param changes The list of changes to shift\r\n * @returns The shifted changes\r\n */\r\n PrettifyChanges(changes) {\r\n // Shift all the changes down first\r\n for (let i = 0; i < changes.length; i++) {\r\n const change = changes[i];\r\n const originalStop = (i < changes.length - 1) ? changes[i + 1].originalStart : this._originalElementsOrHash.length;\r\n const modifiedStop = (i < changes.length - 1) ? changes[i + 1].modifiedStart : this._modifiedElementsOrHash.length;\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n while (change.originalStart + change.originalLength < originalStop &&\r\n change.modifiedStart + change.modifiedLength < modifiedStop &&\r\n (!checkOriginal || this.OriginalElementsAreEqual(change.originalStart, change.originalStart + change.originalLength)) &&\r\n (!checkModified || this.ModifiedElementsAreEqual(change.modifiedStart, change.modifiedStart + change.modifiedLength))) {\r\n change.originalStart++;\r\n change.modifiedStart++;\r\n }\r\n let mergedChangeArr = [null];\r\n if (i < changes.length - 1 && this.ChangesOverlap(changes[i], changes[i + 1], mergedChangeArr)) {\r\n changes[i] = mergedChangeArr[0];\r\n changes.splice(i + 1, 1);\r\n i--;\r\n continue;\r\n }\r\n }\r\n // Shift changes back up until we hit empty or whitespace-only lines\r\n for (let i = changes.length - 1; i >= 0; i--) {\r\n const change = changes[i];\r\n let originalStop = 0;\r\n let modifiedStop = 0;\r\n if (i > 0) {\r\n const prevChange = changes[i - 1];\r\n if (prevChange.originalLength > 0) {\r\n originalStop = prevChange.originalStart + prevChange.originalLength;\r\n }\r\n if (prevChange.modifiedLength > 0) {\r\n modifiedStop = prevChange.modifiedStart + prevChange.modifiedLength;\r\n }\r\n }\r\n const checkOriginal = change.originalLength > 0;\r\n const checkModified = change.modifiedLength > 0;\r\n let bestDelta = 0;\r\n let bestScore = this._boundaryScore(change.originalStart, change.originalLength, change.modifiedStart, change.modifiedLength);\r\n for (let delta = 1;; delta++) {\r\n const originalStart = change.originalStart - delta;\r\n const modifiedStart = change.modifiedStart - delta;\r\n if (originalStart < originalStop || modifiedStart < modifiedStop) {\r\n break;\r\n }\r\n if (checkOriginal && !this.OriginalElementsAreEqual(originalStart, originalStart + change.originalLength)) {\r\n break;\r\n }\r\n if (checkModified && !this.ModifiedElementsAreEqual(modifiedStart, modifiedStart + change.modifiedLength)) {\r\n break;\r\n }\r\n const score = this._boundaryScore(originalStart, change.originalLength, modifiedStart, change.modifiedLength);\r\n if (score > bestScore) {\r\n bestScore = score;\r\n bestDelta = delta;\r\n }\r\n }\r\n change.originalStart -= bestDelta;\r\n change.modifiedStart -= bestDelta;\r\n }\r\n return changes;\r\n }\r\n _OriginalIsBoundary(index) {\r\n if (index <= 0 || index >= this._originalElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._originalStringElements[index]));\r\n }\r\n _OriginalRegionIsBoundary(originalStart, originalLength) {\r\n if (this._OriginalIsBoundary(originalStart) || this._OriginalIsBoundary(originalStart - 1)) {\r\n return true;\r\n }\r\n if (originalLength > 0) {\r\n const originalEnd = originalStart + originalLength;\r\n if (this._OriginalIsBoundary(originalEnd - 1) || this._OriginalIsBoundary(originalEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _ModifiedIsBoundary(index) {\r\n if (index <= 0 || index >= this._modifiedElementsOrHash.length - 1) {\r\n return true;\r\n }\r\n return (this._hasStrings && /^\\s*$/.test(this._modifiedStringElements[index]));\r\n }\r\n _ModifiedRegionIsBoundary(modifiedStart, modifiedLength) {\r\n if (this._ModifiedIsBoundary(modifiedStart) || this._ModifiedIsBoundary(modifiedStart - 1)) {\r\n return true;\r\n }\r\n if (modifiedLength > 0) {\r\n const modifiedEnd = modifiedStart + modifiedLength;\r\n if (this._ModifiedIsBoundary(modifiedEnd - 1) || this._ModifiedIsBoundary(modifiedEnd)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n _boundaryScore(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n const originalScore = (this._OriginalRegionIsBoundary(originalStart, originalLength) ? 1 : 0);\r\n const modifiedScore = (this._ModifiedRegionIsBoundary(modifiedStart, modifiedLength) ? 1 : 0);\r\n return (originalScore + modifiedScore);\r\n }\r\n /**\r\n * Concatenates the two input DiffChange lists and returns the resulting\r\n * list.\r\n * @param The left changes\r\n * @param The right changes\r\n * @returns The concatenated list\r\n */\r\n ConcatenateChanges(left, right) {\r\n let mergedChangeArr = [];\r\n if (left.length === 0 || right.length === 0) {\r\n return (right.length > 0) ? right : left;\r\n }\r\n else if (this.ChangesOverlap(left[left.length - 1], right[0], mergedChangeArr)) {\r\n // Since we break the problem down recursively, it is possible that we\r\n // might recurse in the middle of a change thereby splitting it into\r\n // two changes. Here in the combining stage, we detect and fuse those\r\n // changes back together\r\n const result = new Array(left.length + right.length - 1);\r\n MyArray.Copy(left, 0, result, 0, left.length - 1);\r\n result[left.length - 1] = mergedChangeArr[0];\r\n MyArray.Copy(right, 1, result, left.length, right.length - 1);\r\n return result;\r\n }\r\n else {\r\n const result = new Array(left.length + right.length);\r\n MyArray.Copy(left, 0, result, 0, left.length);\r\n MyArray.Copy(right, 0, result, left.length, right.length);\r\n return result;\r\n }\r\n }\r\n /**\r\n * Returns true if the two changes overlap and can be merged into a single\r\n * change\r\n * @param left The left change\r\n * @param right The right change\r\n * @param mergedChange The merged change if the two overlap, null otherwise\r\n * @returns True if the two changes overlap\r\n */\r\n ChangesOverlap(left, right, mergedChangeArr) {\r\n Debug.Assert(left.originalStart <= right.originalStart, 'Left change is not less than or equal to right change');\r\n Debug.Assert(left.modifiedStart <= right.modifiedStart, 'Left change is not less than or equal to right change');\r\n if (left.originalStart + left.originalLength >= right.originalStart || left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n const originalStart = left.originalStart;\r\n let originalLength = left.originalLength;\r\n const modifiedStart = left.modifiedStart;\r\n let modifiedLength = left.modifiedLength;\r\n if (left.originalStart + left.originalLength >= right.originalStart) {\r\n originalLength = right.originalStart + right.originalLength - left.originalStart;\r\n }\r\n if (left.modifiedStart + left.modifiedLength >= right.modifiedStart) {\r\n modifiedLength = right.modifiedStart + right.modifiedLength - left.modifiedStart;\r\n }\r\n mergedChangeArr[0] = new DiffChange(originalStart, originalLength, modifiedStart, modifiedLength);\r\n return true;\r\n }\r\n else {\r\n mergedChangeArr[0] = null;\r\n return false;\r\n }\r\n }\r\n /**\r\n * Helper method used to clip a diagonal index to the range of valid\r\n * diagonals. This also decides whether or not the diagonal index,\r\n * if it exceeds the boundary, should be clipped to the boundary or clipped\r\n * one inside the boundary depending on the Even/Odd status of the boundary\r\n * and numDifferences.\r\n * @param diagonal The index of the diagonal to clip.\r\n * @param numDifferences The current number of differences being iterated upon.\r\n * @param diagonalBaseIndex The base reference diagonal.\r\n * @param numDiagonals The total number of diagonals.\r\n * @returns The clipped diagonal index.\r\n */\r\n ClipDiagonalBound(diagonal, numDifferences, diagonalBaseIndex, numDiagonals) {\r\n if (diagonal >= 0 && diagonal < numDiagonals) {\r\n // Nothing to clip, its in range\r\n return diagonal;\r\n }\r\n // diagonalsBelow: The number of diagonals below the reference diagonal\r\n // diagonalsAbove: The number of diagonals above the reference diagonal\r\n const diagonalsBelow = diagonalBaseIndex;\r\n const diagonalsAbove = numDiagonals - diagonalBaseIndex - 1;\r\n const diffEven = (numDifferences % 2 === 0);\r\n if (diagonal < 0) {\r\n const lowerBoundEven = (diagonalsBelow % 2 === 0);\r\n return (diffEven === lowerBoundEven) ? 0 : 1;\r\n }\r\n else {\r\n const upperBoundEven = (diagonalsAbove % 2 === 0);\r\n return (diffEven === upperBoundEven) ? numDiagonals - 1 : numDiagonals - 2;\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * Represents information about a specific difference between two sequences.\r\n */\r\nexport class DiffChange {\r\n /**\r\n * Constructs a new DiffChange with the given sequence information\r\n * and content.\r\n */\r\n constructor(originalStart, originalLength, modifiedStart, modifiedLength) {\r\n //Debug.Assert(originalLength > 0 || modifiedLength > 0, \"originalLength and modifiedLength cannot both be <= 0\");\r\n this.originalStart = originalStart;\r\n this.originalLength = originalLength;\r\n this.modifiedStart = modifiedStart;\r\n this.modifiedLength = modifiedLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the original sequence.\r\n */\r\n getOriginalEnd() {\r\n return this.originalStart + this.originalLength;\r\n }\r\n /**\r\n * The end point (exclusive) of the change in the modified sequence.\r\n */\r\n getModifiedEnd() {\r\n return this.modifiedStart + this.modifiedLength;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// Avoid circular dependency on EventEmitter by implementing a subset of the interface.\r\nexport class ErrorHandler {\r\n constructor() {\r\n this.listeners = [];\r\n this.unexpectedErrorHandler = function (e) {\r\n setTimeout(() => {\r\n if (e.stack) {\r\n throw new Error(e.message + '\\n\\n' + e.stack);\r\n }\r\n throw e;\r\n }, 0);\r\n };\r\n }\r\n emit(e) {\r\n this.listeners.forEach((listener) => {\r\n listener(e);\r\n });\r\n }\r\n onUnexpectedError(e) {\r\n this.unexpectedErrorHandler(e);\r\n this.emit(e);\r\n }\r\n // For external errors, we don't want the listeners to be called\r\n onUnexpectedExternalError(e) {\r\n this.unexpectedErrorHandler(e);\r\n }\r\n}\r\nexport const errorHandler = new ErrorHandler();\r\nexport function onUnexpectedError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function onUnexpectedExternalError(e) {\r\n // ignore errors from cancelled promises\r\n if (!isPromiseCanceledError(e)) {\r\n errorHandler.onUnexpectedExternalError(e);\r\n }\r\n return undefined;\r\n}\r\nexport function transformErrorForSerialization(error) {\r\n if (error instanceof Error) {\r\n let { name, message } = error;\r\n const stack = error.stacktrace || error.stack;\r\n return {\r\n $isError: true,\r\n name,\r\n message,\r\n stack\r\n };\r\n }\r\n // return as is\r\n return error;\r\n}\r\nconst canceledName = 'Canceled';\r\n/**\r\n * Checks if the given error is a promise in canceled state\r\n */\r\nexport function isPromiseCanceledError(error) {\r\n return error instanceof Error && error.name === canceledName && error.message === canceledName;\r\n}\r\n/**\r\n * Returns an error that signals cancellation.\r\n */\r\nexport function canceled() {\r\n const error = new Error(canceledName);\r\n error.name = error.message;\r\n return error;\r\n}\r\nexport function illegalArgument(name) {\r\n if (name) {\r\n return new Error(`Illegal argument: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal argument');\r\n }\r\n}\r\nexport function illegalState(name) {\r\n if (name) {\r\n return new Error(`Illegal state: ${name}`);\r\n }\r\n else {\r\n return new Error('Illegal state');\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { onUnexpectedError } from './errors.js';\r\nimport { Disposable, combinedDisposable, DisposableStore } from './lifecycle.js';\r\nimport { LinkedList } from './linkedList.js';\r\nexport var Event;\r\n(function (Event) {\r\n Event.None = () => Disposable.None;\r\n /**\r\n * Given an event, returns another event which only fires once.\r\n */\r\n function once(event) {\r\n return (listener, thisArgs = null, disposables) => {\r\n // we need this, in case the event fires during the listener call\r\n let didFire = false;\r\n let result;\r\n result = event(e => {\r\n if (didFire) {\r\n return;\r\n }\r\n else if (result) {\r\n result.dispose();\r\n }\r\n else {\r\n didFire = true;\r\n }\r\n return listener.call(thisArgs, e);\r\n }, null, disposables);\r\n if (didFire) {\r\n result.dispose();\r\n }\r\n return result;\r\n };\r\n }\r\n Event.once = once;\r\n /**\r\n * Given an event and a `map` function, returns another event which maps each element\r\n * through the mapping function.\r\n */\r\n function map(event, map) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => listener.call(thisArgs, map(i)), null, disposables));\r\n }\r\n Event.map = map;\r\n /**\r\n * Given an event and an `each` function, returns another identical event and calls\r\n * the `each` function per each element.\r\n */\r\n function forEach(event, each) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(i => { each(i); listener.call(thisArgs, i); }, null, disposables));\r\n }\r\n Event.forEach = forEach;\r\n function filter(event, filter) {\r\n return snapshot((listener, thisArgs = null, disposables) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables));\r\n }\r\n Event.filter = filter;\r\n /**\r\n * Given an event, returns the same event but typed as `Event<void>`.\r\n */\r\n function signal(event) {\r\n return event;\r\n }\r\n Event.signal = signal;\r\n function any(...events) {\r\n return (listener, thisArgs = null, disposables) => combinedDisposable(...events.map(event => event(e => listener.call(thisArgs, e), null, disposables)));\r\n }\r\n Event.any = any;\r\n /**\r\n * Given an event and a `merge` function, returns another event which maps each element\r\n * and the cumulative result through the `merge` function. Similar to `map`, but with memory.\r\n */\r\n function reduce(event, merge, initial) {\r\n let output = initial;\r\n return map(event, e => {\r\n output = merge(output, e);\r\n return output;\r\n });\r\n }\r\n Event.reduce = reduce;\r\n /**\r\n * Given a chain of event processing functions (filter, map, etc), each\r\n * function will be invoked per event & per listener. Snapshotting an event\r\n * chain allows each function to be invoked just once per event.\r\n */\r\n function snapshot(event) {\r\n let listener;\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n listener = event(emitter.fire, emitter);\r\n },\r\n onLastListenerRemove() {\r\n listener.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.snapshot = snapshot;\r\n function debounce(event, merge, delay = 100, leading = false, leakWarningThreshold) {\r\n let subscription;\r\n let output = undefined;\r\n let handle = undefined;\r\n let numDebouncedCalls = 0;\r\n const emitter = new Emitter({\r\n leakWarningThreshold,\r\n onFirstListenerAdd() {\r\n subscription = event(cur => {\r\n numDebouncedCalls++;\r\n output = merge(output, cur);\r\n if (leading && !handle) {\r\n emitter.fire(output);\r\n output = undefined;\r\n }\r\n clearTimeout(handle);\r\n handle = setTimeout(() => {\r\n const _output = output;\r\n output = undefined;\r\n handle = undefined;\r\n if (!leading || numDebouncedCalls > 1) {\r\n emitter.fire(_output);\r\n }\r\n numDebouncedCalls = 0;\r\n }, delay);\r\n });\r\n },\r\n onLastListenerRemove() {\r\n subscription.dispose();\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.debounce = debounce;\r\n /**\r\n * Given an event, it returns another event which fires only once and as soon as\r\n * the input event emits. The event data is the number of millis it took for the\r\n * event to fire.\r\n */\r\n function stopwatch(event) {\r\n const start = new Date().getTime();\r\n return map(once(event), _ => new Date().getTime() - start);\r\n }\r\n Event.stopwatch = stopwatch;\r\n /**\r\n * Given an event, it returns another event which fires only when the event\r\n * element changes.\r\n */\r\n function latch(event) {\r\n let firstCall = true;\r\n let cache;\r\n return filter(event, value => {\r\n const shouldEmit = firstCall || value !== cache;\r\n firstCall = false;\r\n cache = value;\r\n return shouldEmit;\r\n });\r\n }\r\n Event.latch = latch;\r\n /**\r\n * Buffers the provided event until a first listener comes\r\n * along, at which point fire all the events at once and\r\n * pipe the event from then on.\r\n *\r\n * ```typescript\r\n * const emitter = new Emitter<number>();\r\n * const event = emitter.event;\r\n * const bufferedEvent = buffer(event);\r\n *\r\n * emitter.fire(1);\r\n * emitter.fire(2);\r\n * emitter.fire(3);\r\n * // nothing...\r\n *\r\n * const listener = bufferedEvent(num => console.log(num));\r\n * // 1, 2, 3\r\n *\r\n * emitter.fire(4);\r\n * // 4\r\n * ```\r\n */\r\n function buffer(event, nextTick = false, _buffer = []) {\r\n let buffer = _buffer.slice();\r\n let listener = event(e => {\r\n if (buffer) {\r\n buffer.push(e);\r\n }\r\n else {\r\n emitter.fire(e);\r\n }\r\n });\r\n const flush = () => {\r\n if (buffer) {\r\n buffer.forEach(e => emitter.fire(e));\r\n }\r\n buffer = null;\r\n };\r\n const emitter = new Emitter({\r\n onFirstListenerAdd() {\r\n if (!listener) {\r\n listener = event(e => emitter.fire(e));\r\n }\r\n },\r\n onFirstListenerDidAdd() {\r\n if (buffer) {\r\n if (nextTick) {\r\n setTimeout(flush);\r\n }\r\n else {\r\n flush();\r\n }\r\n }\r\n },\r\n onLastListenerRemove() {\r\n if (listener) {\r\n listener.dispose();\r\n }\r\n listener = null;\r\n }\r\n });\r\n return emitter.event;\r\n }\r\n Event.buffer = buffer;\r\n class ChainableEvent {\r\n constructor(event) {\r\n this.event = event;\r\n }\r\n map(fn) {\r\n return new ChainableEvent(map(this.event, fn));\r\n }\r\n forEach(fn) {\r\n return new ChainableEvent(forEach(this.event, fn));\r\n }\r\n filter(fn) {\r\n return new ChainableEvent(filter(this.event, fn));\r\n }\r\n reduce(merge, initial) {\r\n return new ChainableEvent(reduce(this.event, merge, initial));\r\n }\r\n latch() {\r\n return new ChainableEvent(latch(this.event));\r\n }\r\n debounce(merge, delay = 100, leading = false, leakWarningThreshold) {\r\n return new ChainableEvent(debounce(this.event, merge, delay, leading, leakWarningThreshold));\r\n }\r\n on(listener, thisArgs, disposables) {\r\n return this.event(listener, thisArgs, disposables);\r\n }\r\n once(listener, thisArgs, disposables) {\r\n return once(this.event)(listener, thisArgs, disposables);\r\n }\r\n }\r\n function chain(event) {\r\n return new ChainableEvent(event);\r\n }\r\n Event.chain = chain;\r\n function fromNodeEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.on(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromNodeEventEmitter = fromNodeEventEmitter;\r\n function fromDOMEventEmitter(emitter, eventName, map = id => id) {\r\n const fn = (...args) => result.fire(map(...args));\r\n const onFirstListenerAdd = () => emitter.addEventListener(eventName, fn);\r\n const onLastListenerRemove = () => emitter.removeEventListener(eventName, fn);\r\n const result = new Emitter({ onFirstListenerAdd, onLastListenerRemove });\r\n return result.event;\r\n }\r\n Event.fromDOMEventEmitter = fromDOMEventEmitter;\r\n function fromPromise(promise) {\r\n const emitter = new Emitter();\r\n let shouldEmit = false;\r\n promise\r\n .then(undefined, () => null)\r\n .then(() => {\r\n if (!shouldEmit) {\r\n setTimeout(() => emitter.fire(undefined), 0);\r\n }\r\n else {\r\n emitter.fire(undefined);\r\n }\r\n });\r\n shouldEmit = true;\r\n return emitter.event;\r\n }\r\n Event.fromPromise = fromPromise;\r\n function toPromise(event) {\r\n return new Promise(c => once(event)(c));\r\n }\r\n Event.toPromise = toPromise;\r\n})(Event || (Event = {}));\r\nlet _globalLeakWarningThreshold = -1;\r\nclass LeakageMonitor {\r\n constructor(customThreshold, name = Math.random().toString(18).slice(2, 5)) {\r\n this.customThreshold = customThreshold;\r\n this.name = name;\r\n this._warnCountdown = 0;\r\n }\r\n dispose() {\r\n if (this._stacks) {\r\n this._stacks.clear();\r\n }\r\n }\r\n check(listenerCount) {\r\n let threshold = _globalLeakWarningThreshold;\r\n if (typeof this.customThreshold === 'number') {\r\n threshold = this.customThreshold;\r\n }\r\n if (threshold <= 0 || listenerCount < threshold) {\r\n return undefined;\r\n }\r\n if (!this._stacks) {\r\n this._stacks = new Map();\r\n }\r\n const stack = new Error().stack.split('\\n').slice(3).join('\\n');\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count + 1);\r\n this._warnCountdown -= 1;\r\n if (this._warnCountdown <= 0) {\r\n // only warn on first exceed and then every time the limit\r\n // is exceeded by 50% again\r\n this._warnCountdown = threshold * 0.5;\r\n // find most frequent listener and print warning\r\n let topStack;\r\n let topCount = 0;\r\n for (const [stack, count] of this._stacks) {\r\n if (!topStack || topCount < count) {\r\n topStack = stack;\r\n topCount = count;\r\n }\r\n }\r\n console.warn(`[${this.name}] potential listener LEAK detected, having ${listenerCount} listeners already. MOST frequent listener (${topCount}):`);\r\n console.warn(topStack);\r\n }\r\n return () => {\r\n const count = (this._stacks.get(stack) || 0);\r\n this._stacks.set(stack, count - 1);\r\n };\r\n }\r\n}\r\n/**\r\n * The Emitter can be used to expose an Event to the public\r\n * to fire it from the insides.\r\n * Sample:\r\n class Document {\r\n\r\n private readonly _onDidChange = new Emitter<(value:string)=>any>();\r\n\r\n public onDidChange = this._onDidChange.event;\r\n\r\n // getter-style\r\n // get onDidChange(): Event<(value:string)=>any> {\r\n // \treturn this._onDidChange.event;\r\n // }\r\n\r\n private _doIt() {\r\n //...\r\n this._onDidChange.fire(value);\r\n }\r\n }\r\n */\r\nexport class Emitter {\r\n constructor(options) {\r\n this._disposed = false;\r\n this._options = options;\r\n this._leakageMon = _globalLeakWarningThreshold > 0\r\n ? new LeakageMonitor(this._options && this._options.leakWarningThreshold)\r\n : undefined;\r\n }\r\n /**\r\n * For the public to allow to subscribe\r\n * to events from this Emitter\r\n */\r\n get event() {\r\n if (!this._event) {\r\n this._event = (listener, thisArgs, disposables) => {\r\n if (!this._listeners) {\r\n this._listeners = new LinkedList();\r\n }\r\n const firstListener = this._listeners.isEmpty();\r\n if (firstListener && this._options && this._options.onFirstListenerAdd) {\r\n this._options.onFirstListenerAdd(this);\r\n }\r\n const remove = this._listeners.push(!thisArgs ? listener : [listener, thisArgs]);\r\n if (firstListener && this._options && this._options.onFirstListenerDidAdd) {\r\n this._options.onFirstListenerDidAdd(this);\r\n }\r\n if (this._options && this._options.onListenerDidAdd) {\r\n this._options.onListenerDidAdd(this, listener, thisArgs);\r\n }\r\n // check and record this emitter for potential leakage\r\n let removeMonitor;\r\n if (this._leakageMon) {\r\n removeMonitor = this._leakageMon.check(this._listeners.size);\r\n }\r\n let result;\r\n result = {\r\n dispose: () => {\r\n if (removeMonitor) {\r\n removeMonitor();\r\n }\r\n result.dispose = Emitter._noop;\r\n if (!this._disposed) {\r\n remove();\r\n if (this._options && this._options.onLastListenerRemove) {\r\n const hasListeners = (this._listeners && !this._listeners.isEmpty());\r\n if (!hasListeners) {\r\n this._options.onLastListenerRemove(this);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n if (disposables instanceof DisposableStore) {\r\n disposables.add(result);\r\n }\r\n else if (Array.isArray(disposables)) {\r\n disposables.push(result);\r\n }\r\n return result;\r\n };\r\n }\r\n return this._event;\r\n }\r\n /**\r\n * To be kept private to fire an event to\r\n * subscribers\r\n */\r\n fire(event) {\r\n if (this._listeners) {\r\n // put all [listener,event]-pairs into delivery queue\r\n // then emit all event. an inner/nested event might be\r\n // the driver of this\r\n if (!this._deliveryQueue) {\r\n this._deliveryQueue = new LinkedList();\r\n }\r\n for (let listener of this._listeners) {\r\n this._deliveryQueue.push([listener, event]);\r\n }\r\n while (this._deliveryQueue.size > 0) {\r\n const [listener, event] = this._deliveryQueue.shift();\r\n try {\r\n if (typeof listener === 'function') {\r\n listener.call(undefined, event);\r\n }\r\n else {\r\n listener[0].call(listener[1], event);\r\n }\r\n }\r\n catch (e) {\r\n onUnexpectedError(e);\r\n }\r\n }\r\n }\r\n }\r\n dispose() {\r\n if (this._listeners) {\r\n this._listeners.clear();\r\n }\r\n if (this._deliveryQueue) {\r\n this._deliveryQueue.clear();\r\n }\r\n if (this._leakageMon) {\r\n this._leakageMon.dispose();\r\n }\r\n this._disposed = true;\r\n }\r\n}\r\nEmitter._noop = function () { };\r\nexport class PauseableEmitter extends Emitter {\r\n constructor(options) {\r\n super(options);\r\n this._isPaused = 0;\r\n this._eventQueue = new LinkedList();\r\n this._mergeFn = options && options.merge;\r\n }\r\n pause() {\r\n this._isPaused++;\r\n }\r\n resume() {\r\n if (this._isPaused !== 0 && --this._isPaused === 0) {\r\n if (this._mergeFn) {\r\n // use the merge function to create a single composite\r\n // event. make a copy in case firing pauses this emitter\r\n const events = this._eventQueue.toArray();\r\n this._eventQueue.clear();\r\n super.fire(this._mergeFn(events));\r\n }\r\n else {\r\n // no merging, fire each event individually and test\r\n // that this emitter isn't paused halfway through\r\n while (!this._isPaused && this._eventQueue.size !== 0) {\r\n super.fire(this._eventQueue.shift());\r\n }\r\n }\r\n }\r\n }\r\n fire(event) {\r\n if (this._listeners) {\r\n if (this._isPaused !== 0) {\r\n this._eventQueue.push(event);\r\n }\r\n else {\r\n super.fire(event);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The EventBufferer is useful in situations in which you want\r\n * to delay firing your events during some code.\r\n * You can wrap that code and be sure that the event will not\r\n * be fired during that wrap.\r\n *\r\n * ```\r\n * const emitter: Emitter;\r\n * const delayer = new EventDelayer();\r\n * const delayedEvent = delayer.wrapEvent(emitter.event);\r\n *\r\n * delayedEvent(console.log);\r\n *\r\n * delayer.bufferEvents(() => {\r\n * emitter.fire(); // event will not be fired yet\r\n * });\r\n *\r\n * // event will only be fired at this point\r\n * ```\r\n */\r\nexport class EventBufferer {\r\n constructor() {\r\n this.buffers = [];\r\n }\r\n wrapEvent(event) {\r\n return (listener, thisArgs, disposables) => {\r\n return event(i => {\r\n const buffer = this.buffers[this.buffers.length - 1];\r\n if (buffer) {\r\n buffer.push(() => listener.call(thisArgs, i));\r\n }\r\n else {\r\n listener.call(thisArgs, i);\r\n }\r\n }, undefined, disposables);\r\n };\r\n }\r\n bufferEvents(fn) {\r\n const buffer = [];\r\n this.buffers.push(buffer);\r\n const r = fn();\r\n this.buffers.pop();\r\n buffer.forEach(flush => flush());\r\n return r;\r\n }\r\n}\r\n/**\r\n * A Relay is an event forwarder which functions as a replugabble event pipe.\r\n * Once created, you can connect an input event to it and it will simply forward\r\n * events from that input event through its own `event` property. The `input`\r\n * can be changed at any point in time.\r\n */\r\nexport class Relay {\r\n constructor() {\r\n this.listening = false;\r\n this.inputEvent = Event.None;\r\n this.inputEventListener = Disposable.None;\r\n this.emitter = new Emitter({\r\n onFirstListenerDidAdd: () => {\r\n this.listening = true;\r\n this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);\r\n },\r\n onLastListenerRemove: () => {\r\n this.listening = false;\r\n this.inputEventListener.dispose();\r\n }\r\n });\r\n this.event = this.emitter.event;\r\n }\r\n set input(event) {\r\n this.inputEvent = event;\r\n if (this.listening) {\r\n this.inputEventListener.dispose();\r\n this.inputEventListener = event(this.emitter.fire, this.emitter);\r\n }\r\n }\r\n dispose() {\r\n this.inputEventListener.dispose();\r\n this.emitter.dispose();\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport * as strings from './strings.js';\r\n/**\r\n * Return a hash value for an object.\r\n */\r\nexport function hash(obj) {\r\n return doHash(obj, 0);\r\n}\r\nexport function doHash(obj, hashVal) {\r\n switch (typeof obj) {\r\n case 'object':\r\n if (obj === null) {\r\n return numberHash(349, hashVal);\r\n }\r\n else if (Array.isArray(obj)) {\r\n return arrayHash(obj, hashVal);\r\n }\r\n return objectHash(obj, hashVal);\r\n case 'string':\r\n return stringHash(obj, hashVal);\r\n case 'boolean':\r\n return booleanHash(obj, hashVal);\r\n case 'number':\r\n return numberHash(obj, hashVal);\r\n case 'undefined':\r\n return numberHash(937, hashVal);\r\n default:\r\n return numberHash(617, hashVal);\r\n }\r\n}\r\nfunction numberHash(val, initialHashVal) {\r\n return (((initialHashVal << 5) - initialHashVal) + val) | 0; // hashVal * 31 + ch, keep as int32\r\n}\r\nfunction booleanHash(b, initialHashVal) {\r\n return numberHash(b ? 433 : 863, initialHashVal);\r\n}\r\nexport function stringHash(s, hashVal) {\r\n hashVal = numberHash(149417, hashVal);\r\n for (let i = 0, length = s.length; i < length; i++) {\r\n hashVal = numberHash(s.charCodeAt(i), hashVal);\r\n }\r\n return hashVal;\r\n}\r\nfunction arrayHash(arr, initialHashVal) {\r\n initialHashVal = numberHash(104579, initialHashVal);\r\n return arr.reduce((hashVal, item) => doHash(item, hashVal), initialHashVal);\r\n}\r\nfunction objectHash(obj, initialHashVal) {\r\n initialHashVal = numberHash(181387, initialHashVal);\r\n return Object.keys(obj).sort().reduce((hashVal, key) => {\r\n hashVal = stringHash(key, hashVal);\r\n return doHash(obj[key], hashVal);\r\n }, initialHashVal);\r\n}\r\nfunction leftRotate(value, bits, totalBits = 32) {\r\n // delta + bits = totalBits\r\n const delta = totalBits - bits;\r\n // All ones, expect `delta` zeros aligned to the right\r\n const mask = ~((1 << delta) - 1);\r\n // Join (value left-shifted `bits` bits) with (masked value right-shifted `delta` bits)\r\n return ((value << bits) | ((mask & value) >>> delta)) >>> 0;\r\n}\r\nfunction fill(dest, index = 0, count = dest.byteLength, value = 0) {\r\n for (let i = 0; i < count; i++) {\r\n dest[index + i] = value;\r\n }\r\n}\r\nfunction leftPad(value, length, char = '0') {\r\n while (value.length < length) {\r\n value = char + value;\r\n }\r\n return value;\r\n}\r\nfunction toHexString(value, bitsize = 32) {\r\n return leftPad((value >>> 0).toString(16), bitsize / 4);\r\n}\r\n/**\r\n * A SHA1 implementation that works with strings and does not allocate.\r\n */\r\nexport class StringSHA1 {\r\n constructor() {\r\n this._h0 = 0x67452301;\r\n this._h1 = 0xEFCDAB89;\r\n this._h2 = 0x98BADCFE;\r\n this._h3 = 0x10325476;\r\n this._h4 = 0xC3D2E1F0;\r\n this._buff = new Uint8Array(64 /* BLOCK_SIZE */ + 3 /* to fit any utf-8 */);\r\n this._buffDV = new DataView(this._buff.buffer);\r\n this._buffLen = 0;\r\n this._totalLen = 0;\r\n this._leftoverHighSurrogate = 0;\r\n this._finished = false;\r\n }\r\n update(str) {\r\n const strLen = str.length;\r\n if (strLen === 0) {\r\n return;\r\n }\r\n const buff = this._buff;\r\n let buffLen = this._buffLen;\r\n let leftoverHighSurrogate = this._leftoverHighSurrogate;\r\n let charCode;\r\n let offset;\r\n if (leftoverHighSurrogate !== 0) {\r\n charCode = leftoverHighSurrogate;\r\n offset = -1;\r\n leftoverHighSurrogate = 0;\r\n }\r\n else {\r\n charCode = str.charCodeAt(0);\r\n offset = 0;\r\n }\r\n while (true) {\r\n let codePoint = charCode;\r\n if (strings.isHighSurrogate(charCode)) {\r\n if (offset + 1 < strLen) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (strings.isLowSurrogate(nextCharCode)) {\r\n offset++;\r\n codePoint = strings.computeCodePoint(charCode, nextCharCode);\r\n }\r\n else {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n }\r\n else {\r\n // last character is a surrogate pair\r\n leftoverHighSurrogate = charCode;\r\n break;\r\n }\r\n }\r\n else if (strings.isLowSurrogate(charCode)) {\r\n // illegal => unicode replacement character\r\n codePoint = 65533 /* UNICODE_REPLACEMENT */;\r\n }\r\n buffLen = this._push(buff, buffLen, codePoint);\r\n offset++;\r\n if (offset < strLen) {\r\n charCode = str.charCodeAt(offset);\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this._buffLen = buffLen;\r\n this._leftoverHighSurrogate = leftoverHighSurrogate;\r\n }\r\n _push(buff, buffLen, codePoint) {\r\n if (codePoint < 0x0080) {\r\n buff[buffLen++] = codePoint;\r\n }\r\n else if (codePoint < 0x0800) {\r\n buff[buffLen++] = 0b11000000 | ((codePoint & 0b00000000000000000000011111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else if (codePoint < 0x10000) {\r\n buff[buffLen++] = 0b11100000 | ((codePoint & 0b00000000000000001111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n else {\r\n buff[buffLen++] = 0b11110000 | ((codePoint & 0b00000000000111000000000000000000) >>> 18);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000111111000000000000) >>> 12);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000111111000000) >>> 6);\r\n buff[buffLen++] = 0b10000000 | ((codePoint & 0b00000000000000000000000000111111) >>> 0);\r\n }\r\n if (buffLen >= 64 /* BLOCK_SIZE */) {\r\n this._step();\r\n buffLen -= 64 /* BLOCK_SIZE */;\r\n this._totalLen += 64 /* BLOCK_SIZE */;\r\n // take last 3 in case of UTF8 overflow\r\n buff[0] = buff[64 /* BLOCK_SIZE */ + 0];\r\n buff[1] = buff[64 /* BLOCK_SIZE */ + 1];\r\n buff[2] = buff[64 /* BLOCK_SIZE */ + 2];\r\n }\r\n return buffLen;\r\n }\r\n digest() {\r\n if (!this._finished) {\r\n this._finished = true;\r\n if (this._leftoverHighSurrogate) {\r\n // illegal => unicode replacement character\r\n this._leftoverHighSurrogate = 0;\r\n this._buffLen = this._push(this._buff, this._buffLen, 65533 /* UNICODE_REPLACEMENT */);\r\n }\r\n this._totalLen += this._buffLen;\r\n this._wrapUp();\r\n }\r\n return toHexString(this._h0) + toHexString(this._h1) + toHexString(this._h2) + toHexString(this._h3) + toHexString(this._h4);\r\n }\r\n _wrapUp() {\r\n this._buff[this._buffLen++] = 0x80;\r\n fill(this._buff, this._buffLen);\r\n if (this._buffLen > 56) {\r\n this._step();\r\n fill(this._buff);\r\n }\r\n // this will fit because the mantissa can cover up to 52 bits\r\n const ml = 8 * this._totalLen;\r\n this._buffDV.setUint32(56, Math.floor(ml / 4294967296), false);\r\n this._buffDV.setUint32(60, ml % 4294967296, false);\r\n this._step();\r\n }\r\n _step() {\r\n const bigBlock32 = StringSHA1._bigBlock32;\r\n const data = this._buffDV;\r\n for (let j = 0; j < 64 /* 16*4 */; j += 4) {\r\n bigBlock32.setUint32(j, data.getUint32(j, false), false);\r\n }\r\n for (let j = 64; j < 320 /* 80*4 */; j += 4) {\r\n bigBlock32.setUint32(j, leftRotate((bigBlock32.getUint32(j - 12, false) ^ bigBlock32.getUint32(j - 32, false) ^ bigBlock32.getUint32(j - 56, false) ^ bigBlock32.getUint32(j - 64, false)), 1), false);\r\n }\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f, k;\r\n let temp;\r\n for (let j = 0; j < 80; j++) {\r\n if (j < 20) {\r\n f = (b & c) | ((~b) & d);\r\n k = 0x5A827999;\r\n }\r\n else if (j < 40) {\r\n f = b ^ c ^ d;\r\n k = 0x6ED9EBA1;\r\n }\r\n else if (j < 60) {\r\n f = (b & c) | (b & d) | (c & d);\r\n k = 0x8F1BBCDC;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xCA62C1D6;\r\n }\r\n temp = (leftRotate(a, 5) + f + e + k + bigBlock32.getUint32(j * 4, false)) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = leftRotate(b, 30);\r\n b = a;\r\n a = temp;\r\n }\r\n this._h0 = (this._h0 + a) & 0xffffffff;\r\n this._h1 = (this._h1 + b) & 0xffffffff;\r\n this._h2 = (this._h2 + c) & 0xffffffff;\r\n this._h3 = (this._h3 + d) & 0xffffffff;\r\n this._h4 = (this._h4 + e) & 0xffffffff;\r\n }\r\n}\r\nStringSHA1._bigBlock32 = new DataView(new ArrayBuffer(320)); // 80 * 4 = 320\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport var Iterable;\r\n(function (Iterable) {\r\n function is(thing) {\r\n return thing && typeof thing === 'object' && typeof thing[Symbol.iterator] === 'function';\r\n }\r\n Iterable.is = is;\r\n const _empty = Object.freeze([]);\r\n function empty() {\r\n return _empty;\r\n }\r\n Iterable.empty = empty;\r\n function* single(element) {\r\n yield element;\r\n }\r\n Iterable.single = single;\r\n function from(iterable) {\r\n return iterable || _empty;\r\n }\r\n Iterable.from = from;\r\n function first(iterable) {\r\n return iterable[Symbol.iterator]().next().value;\r\n }\r\n Iterable.first = first;\r\n function some(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n Iterable.some = some;\r\n function* filter(iterable, predicate) {\r\n for (const element of iterable) {\r\n if (predicate(element)) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.filter = filter;\r\n function* map(iterable, fn) {\r\n for (const element of iterable) {\r\n yield fn(element);\r\n }\r\n }\r\n Iterable.map = map;\r\n function* concat(...iterables) {\r\n for (const iterable of iterables) {\r\n for (const element of iterable) {\r\n yield element;\r\n }\r\n }\r\n }\r\n Iterable.concat = concat;\r\n /**\r\n * Consumes `atMost` elements from iterable and returns the consumed elements,\r\n * and an iterable for the rest of the elements.\r\n */\r\n function consume(iterable, atMost = Number.POSITIVE_INFINITY) {\r\n const consumed = [];\r\n if (atMost === 0) {\r\n return [consumed, iterable];\r\n }\r\n const iterator = iterable[Symbol.iterator]();\r\n for (let i = 0; i < atMost; i++) {\r\n const next = iterator.next();\r\n if (next.done) {\r\n return [consumed, Iterable.empty()];\r\n }\r\n consumed.push(next.value);\r\n }\r\n return [consumed, { [Symbol.iterator]() { return iterator; } }];\r\n }\r\n Iterable.consume = consume;\r\n})(Iterable || (Iterable = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { illegalArgument } from './errors.js';\r\nclass KeyCodeStrMap {\r\n constructor() {\r\n this._keyCodeToStr = [];\r\n this._strToKeyCode = Object.create(null);\r\n }\r\n define(keyCode, str) {\r\n this._keyCodeToStr[keyCode] = str;\r\n this._strToKeyCode[str.toLowerCase()] = keyCode;\r\n }\r\n keyCodeToStr(keyCode) {\r\n return this._keyCodeToStr[keyCode];\r\n }\r\n strToKeyCode(str) {\r\n return this._strToKeyCode[str.toLowerCase()] || 0 /* Unknown */;\r\n }\r\n}\r\nconst uiMap = new KeyCodeStrMap();\r\nconst userSettingsUSMap = new KeyCodeStrMap();\r\nconst userSettingsGeneralMap = new KeyCodeStrMap();\r\n(function () {\r\n function define(keyCode, uiLabel, usUserSettingsLabel = uiLabel, generalUserSettingsLabel = usUserSettingsLabel) {\r\n uiMap.define(keyCode, uiLabel);\r\n userSettingsUSMap.define(keyCode, usUserSettingsLabel);\r\n userSettingsGeneralMap.define(keyCode, generalUserSettingsLabel);\r\n }\r\n define(0 /* Unknown */, 'unknown');\r\n define(1 /* Backspace */, 'Backspace');\r\n define(2 /* Tab */, 'Tab');\r\n define(3 /* Enter */, 'Enter');\r\n define(4 /* Shift */, 'Shift');\r\n define(5 /* Ctrl */, 'Ctrl');\r\n define(6 /* Alt */, 'Alt');\r\n define(7 /* PauseBreak */, 'PauseBreak');\r\n define(8 /* CapsLock */, 'CapsLock');\r\n define(9 /* Escape */, 'Escape');\r\n define(10 /* Space */, 'Space');\r\n define(11 /* PageUp */, 'PageUp');\r\n define(12 /* PageDown */, 'PageDown');\r\n define(13 /* End */, 'End');\r\n define(14 /* Home */, 'Home');\r\n define(15 /* LeftArrow */, 'LeftArrow', 'Left');\r\n define(16 /* UpArrow */, 'UpArrow', 'Up');\r\n define(17 /* RightArrow */, 'RightArrow', 'Right');\r\n define(18 /* DownArrow */, 'DownArrow', 'Down');\r\n define(19 /* Insert */, 'Insert');\r\n define(20 /* Delete */, 'Delete');\r\n define(21 /* KEY_0 */, '0');\r\n define(22 /* KEY_1 */, '1');\r\n define(23 /* KEY_2 */, '2');\r\n define(24 /* KEY_3 */, '3');\r\n define(25 /* KEY_4 */, '4');\r\n define(26 /* KEY_5 */, '5');\r\n define(27 /* KEY_6 */, '6');\r\n define(28 /* KEY_7 */, '7');\r\n define(29 /* KEY_8 */, '8');\r\n define(30 /* KEY_9 */, '9');\r\n define(31 /* KEY_A */, 'A');\r\n define(32 /* KEY_B */, 'B');\r\n define(33 /* KEY_C */, 'C');\r\n define(34 /* KEY_D */, 'D');\r\n define(35 /* KEY_E */, 'E');\r\n define(36 /* KEY_F */, 'F');\r\n define(37 /* KEY_G */, 'G');\r\n define(38 /* KEY_H */, 'H');\r\n define(39 /* KEY_I */, 'I');\r\n define(40 /* KEY_J */, 'J');\r\n define(41 /* KEY_K */, 'K');\r\n define(42 /* KEY_L */, 'L');\r\n define(43 /* KEY_M */, 'M');\r\n define(44 /* KEY_N */, 'N');\r\n define(45 /* KEY_O */, 'O');\r\n define(46 /* KEY_P */, 'P');\r\n define(47 /* KEY_Q */, 'Q');\r\n define(48 /* KEY_R */, 'R');\r\n define(49 /* KEY_S */, 'S');\r\n define(50 /* KEY_T */, 'T');\r\n define(51 /* KEY_U */, 'U');\r\n define(52 /* KEY_V */, 'V');\r\n define(53 /* KEY_W */, 'W');\r\n define(54 /* KEY_X */, 'X');\r\n define(55 /* KEY_Y */, 'Y');\r\n define(56 /* KEY_Z */, 'Z');\r\n define(57 /* Meta */, 'Meta');\r\n define(58 /* ContextMenu */, 'ContextMenu');\r\n define(59 /* F1 */, 'F1');\r\n define(60 /* F2 */, 'F2');\r\n define(61 /* F3 */, 'F3');\r\n define(62 /* F4 */, 'F4');\r\n define(63 /* F5 */, 'F5');\r\n define(64 /* F6 */, 'F6');\r\n define(65 /* F7 */, 'F7');\r\n define(66 /* F8 */, 'F8');\r\n define(67 /* F9 */, 'F9');\r\n define(68 /* F10 */, 'F10');\r\n define(69 /* F11 */, 'F11');\r\n define(70 /* F12 */, 'F12');\r\n define(71 /* F13 */, 'F13');\r\n define(72 /* F14 */, 'F14');\r\n define(73 /* F15 */, 'F15');\r\n define(74 /* F16 */, 'F16');\r\n define(75 /* F17 */, 'F17');\r\n define(76 /* F18 */, 'F18');\r\n define(77 /* F19 */, 'F19');\r\n define(78 /* NumLock */, 'NumLock');\r\n define(79 /* ScrollLock */, 'ScrollLock');\r\n define(80 /* US_SEMICOLON */, ';', ';', 'OEM_1');\r\n define(81 /* US_EQUAL */, '=', '=', 'OEM_PLUS');\r\n define(82 /* US_COMMA */, ',', ',', 'OEM_COMMA');\r\n define(83 /* US_MINUS */, '-', '-', 'OEM_MINUS');\r\n define(84 /* US_DOT */, '.', '.', 'OEM_PERIOD');\r\n define(85 /* US_SLASH */, '/', '/', 'OEM_2');\r\n define(86 /* US_BACKTICK */, '`', '`', 'OEM_3');\r\n define(110 /* ABNT_C1 */, 'ABNT_C1');\r\n define(111 /* ABNT_C2 */, 'ABNT_C2');\r\n define(87 /* US_OPEN_SQUARE_BRACKET */, '[', '[', 'OEM_4');\r\n define(88 /* US_BACKSLASH */, '\\\\', '\\\\', 'OEM_5');\r\n define(89 /* US_CLOSE_SQUARE_BRACKET */, ']', ']', 'OEM_6');\r\n define(90 /* US_QUOTE */, '\\'', '\\'', 'OEM_7');\r\n define(91 /* OEM_8 */, 'OEM_8');\r\n define(92 /* OEM_102 */, 'OEM_102');\r\n define(93 /* NUMPAD_0 */, 'NumPad0');\r\n define(94 /* NUMPAD_1 */, 'NumPad1');\r\n define(95 /* NUMPAD_2 */, 'NumPad2');\r\n define(96 /* NUMPAD_3 */, 'NumPad3');\r\n define(97 /* NUMPAD_4 */, 'NumPad4');\r\n define(98 /* NUMPAD_5 */, 'NumPad5');\r\n define(99 /* NUMPAD_6 */, 'NumPad6');\r\n define(100 /* NUMPAD_7 */, 'NumPad7');\r\n define(101 /* NUMPAD_8 */, 'NumPad8');\r\n define(102 /* NUMPAD_9 */, 'NumPad9');\r\n define(103 /* NUMPAD_MULTIPLY */, 'NumPad_Multiply');\r\n define(104 /* NUMPAD_ADD */, 'NumPad_Add');\r\n define(105 /* NUMPAD_SEPARATOR */, 'NumPad_Separator');\r\n define(106 /* NUMPAD_SUBTRACT */, 'NumPad_Subtract');\r\n define(107 /* NUMPAD_DECIMAL */, 'NumPad_Decimal');\r\n define(108 /* NUMPAD_DIVIDE */, 'NumPad_Divide');\r\n})();\r\nexport var KeyCodeUtils;\r\n(function (KeyCodeUtils) {\r\n function toString(keyCode) {\r\n return uiMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toString = toString;\r\n function fromString(key) {\r\n return uiMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromString = fromString;\r\n function toUserSettingsUS(keyCode) {\r\n return userSettingsUSMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsUS = toUserSettingsUS;\r\n function toUserSettingsGeneral(keyCode) {\r\n return userSettingsGeneralMap.keyCodeToStr(keyCode);\r\n }\r\n KeyCodeUtils.toUserSettingsGeneral = toUserSettingsGeneral;\r\n function fromUserSettings(key) {\r\n return userSettingsUSMap.strToKeyCode(key) || userSettingsGeneralMap.strToKeyCode(key);\r\n }\r\n KeyCodeUtils.fromUserSettings = fromUserSettings;\r\n})(KeyCodeUtils || (KeyCodeUtils = {}));\r\nexport function KeyChord(firstPart, secondPart) {\r\n const chordPart = ((secondPart & 0x0000FFFF) << 16) >>> 0;\r\n return (firstPart | chordPart) >>> 0;\r\n}\r\nexport function createKeybinding(keybinding, OS) {\r\n if (keybinding === 0) {\r\n return null;\r\n }\r\n const firstPart = (keybinding & 0x0000FFFF) >>> 0;\r\n const chordPart = (keybinding & 0xFFFF0000) >>> 16;\r\n if (chordPart !== 0) {\r\n return new ChordKeybinding([\r\n createSimpleKeybinding(firstPart, OS),\r\n createSimpleKeybinding(chordPart, OS)\r\n ]);\r\n }\r\n return new ChordKeybinding([createSimpleKeybinding(firstPart, OS)]);\r\n}\r\nexport function createSimpleKeybinding(keybinding, OS) {\r\n const ctrlCmd = (keybinding & 2048 /* CtrlCmd */ ? true : false);\r\n const winCtrl = (keybinding & 256 /* WinCtrl */ ? true : false);\r\n const ctrlKey = (OS === 2 /* Macintosh */ ? winCtrl : ctrlCmd);\r\n const shiftKey = (keybinding & 1024 /* Shift */ ? true : false);\r\n const altKey = (keybinding & 512 /* Alt */ ? true : false);\r\n const metaKey = (OS === 2 /* Macintosh */ ? ctrlCmd : winCtrl);\r\n const keyCode = (keybinding & 255 /* KeyCode */);\r\n return new SimpleKeybinding(ctrlKey, shiftKey, altKey, metaKey, keyCode);\r\n}\r\nexport class SimpleKeybinding {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, keyCode) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyCode = keyCode;\r\n }\r\n equals(other) {\r\n return (this.ctrlKey === other.ctrlKey\r\n && this.shiftKey === other.shiftKey\r\n && this.altKey === other.altKey\r\n && this.metaKey === other.metaKey\r\n && this.keyCode === other.keyCode);\r\n }\r\n isModifierKey() {\r\n return (this.keyCode === 0 /* Unknown */\r\n || this.keyCode === 5 /* Ctrl */\r\n || this.keyCode === 57 /* Meta */\r\n || this.keyCode === 6 /* Alt */\r\n || this.keyCode === 4 /* Shift */);\r\n }\r\n toChord() {\r\n return new ChordKeybinding([this]);\r\n }\r\n /**\r\n * Does this keybinding refer to the key code of a modifier and it also has the modifier flag?\r\n */\r\n isDuplicateModifierCase() {\r\n return ((this.ctrlKey && this.keyCode === 5 /* Ctrl */)\r\n || (this.shiftKey && this.keyCode === 4 /* Shift */)\r\n || (this.altKey && this.keyCode === 6 /* Alt */)\r\n || (this.metaKey && this.keyCode === 57 /* Meta */));\r\n }\r\n}\r\nexport class ChordKeybinding {\r\n constructor(parts) {\r\n if (parts.length === 0) {\r\n throw illegalArgument(`parts`);\r\n }\r\n this.parts = parts;\r\n }\r\n}\r\nexport class ResolvedKeybindingPart {\r\n constructor(ctrlKey, shiftKey, altKey, metaKey, kbLabel, kbAriaLabel) {\r\n this.ctrlKey = ctrlKey;\r\n this.shiftKey = shiftKey;\r\n this.altKey = altKey;\r\n this.metaKey = metaKey;\r\n this.keyLabel = kbLabel;\r\n this.keyAriaLabel = kbAriaLabel;\r\n }\r\n}\r\n/**\r\n * A resolved keybinding. Can be a simple keybinding or a chord keybinding.\r\n */\r\nexport class ResolvedKeybinding {\r\n}\r\n","import { Iterable } from './iterator.js';\r\n/**\r\n * Enables logging of potentially leaked disposables.\r\n *\r\n * A disposable is considered leaked if it is not disposed or not registered as the child of\r\n * another disposable. This tracking is very simple an only works for classes that either\r\n * extend Disposable or use a DisposableStore. This means there are a lot of false positives.\r\n */\r\nconst TRACK_DISPOSABLES = false;\r\nconst __is_disposable_tracked__ = '__is_disposable_tracked__';\r\nfunction markTracked(x) {\r\n if (!TRACK_DISPOSABLES) {\r\n return;\r\n }\r\n if (x && x !== Disposable.None) {\r\n try {\r\n x[__is_disposable_tracked__] = true;\r\n }\r\n catch (_a) {\r\n // noop\r\n }\r\n }\r\n}\r\nfunction trackDisposable(x) {\r\n if (!TRACK_DISPOSABLES) {\r\n return x;\r\n }\r\n const stack = new Error('Potentially leaked disposable').stack;\r\n setTimeout(() => {\r\n if (!x[__is_disposable_tracked__]) {\r\n console.log(stack);\r\n }\r\n }, 3000);\r\n return x;\r\n}\r\nexport class MultiDisposeError extends Error {\r\n constructor(errors) {\r\n super(`Encounter errors while disposing of store. Errors: [${errors.join(', ')}]`);\r\n this.errors = errors;\r\n }\r\n}\r\nexport function isDisposable(thing) {\r\n return typeof thing.dispose === 'function' && thing.dispose.length === 0;\r\n}\r\nexport function dispose(arg) {\r\n if (Iterable.is(arg)) {\r\n let errors = [];\r\n for (const d of arg) {\r\n if (d) {\r\n markTracked(d);\r\n try {\r\n d.dispose();\r\n }\r\n catch (e) {\r\n errors.push(e);\r\n }\r\n }\r\n }\r\n if (errors.length === 1) {\r\n throw errors[0];\r\n }\r\n else if (errors.length > 1) {\r\n throw new MultiDisposeError(errors);\r\n }\r\n return Array.isArray(arg) ? [] : arg;\r\n }\r\n else if (arg) {\r\n markTracked(arg);\r\n arg.dispose();\r\n return arg;\r\n }\r\n}\r\nexport function combinedDisposable(...disposables) {\r\n disposables.forEach(markTracked);\r\n return trackDisposable({ dispose: () => dispose(disposables) });\r\n}\r\nexport function toDisposable(fn) {\r\n const self = trackDisposable({\r\n dispose: () => {\r\n markTracked(self);\r\n fn();\r\n }\r\n });\r\n return self;\r\n}\r\nexport class DisposableStore {\r\n constructor() {\r\n this._toDispose = new Set();\r\n this._isDisposed = false;\r\n }\r\n /**\r\n * Dispose of all registered disposables and mark this object as disposed.\r\n *\r\n * Any future disposables added to this object will be disposed of on `add`.\r\n */\r\n dispose() {\r\n if (this._isDisposed) {\r\n return;\r\n }\r\n markTracked(this);\r\n this._isDisposed = true;\r\n this.clear();\r\n }\r\n /**\r\n * Dispose of all registered disposables but do not mark this object as disposed.\r\n */\r\n clear() {\r\n try {\r\n dispose(this._toDispose.values());\r\n }\r\n finally {\r\n this._toDispose.clear();\r\n }\r\n }\r\n add(t) {\r\n if (!t) {\r\n return t;\r\n }\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n markTracked(t);\r\n if (this._isDisposed) {\r\n if (!DisposableStore.DISABLE_DISPOSED_WARNING) {\r\n console.warn(new Error('Trying to add a disposable to a DisposableStore that has already been disposed of. The added object will be leaked!').stack);\r\n }\r\n }\r\n else {\r\n this._toDispose.add(t);\r\n }\r\n return t;\r\n }\r\n}\r\nDisposableStore.DISABLE_DISPOSED_WARNING = false;\r\nexport class Disposable {\r\n constructor() {\r\n this._store = new DisposableStore();\r\n trackDisposable(this);\r\n }\r\n dispose() {\r\n markTracked(this);\r\n this._store.dispose();\r\n }\r\n _register(t) {\r\n if (t === this) {\r\n throw new Error('Cannot register a disposable on itself!');\r\n }\r\n return this._store.add(t);\r\n }\r\n}\r\nDisposable.None = Object.freeze({ dispose() { } });\r\n/**\r\n * Manages the lifecycle of a disposable value that may be changed.\r\n *\r\n * This ensures that when the disposable value is changed, the previously held disposable is disposed of. You can\r\n * also register a `MutableDisposable` on a `Disposable` to ensure it is automatically cleaned up.\r\n */\r\nexport class MutableDisposable {\r\n constructor() {\r\n this._isDisposed = false;\r\n trackDisposable(this);\r\n }\r\n get value() {\r\n return this._isDisposed ? undefined : this._value;\r\n }\r\n set value(value) {\r\n if (this._isDisposed || value === this._value) {\r\n return;\r\n }\r\n if (this._value) {\r\n this._value.dispose();\r\n }\r\n if (value) {\r\n markTracked(value);\r\n }\r\n this._value = value;\r\n }\r\n clear() {\r\n this.value = undefined;\r\n }\r\n dispose() {\r\n this._isDisposed = true;\r\n markTracked(this);\r\n if (this._value) {\r\n this._value.dispose();\r\n }\r\n this._value = undefined;\r\n }\r\n}\r\nexport class ImmortalReference {\r\n constructor(object) {\r\n this.object = object;\r\n }\r\n dispose() { }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nclass Node {\r\n constructor(element) {\r\n this.element = element;\r\n this.next = Node.Undefined;\r\n this.prev = Node.Undefined;\r\n }\r\n}\r\nNode.Undefined = new Node(undefined);\r\nexport class LinkedList {\r\n constructor() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n get size() {\r\n return this._size;\r\n }\r\n isEmpty() {\r\n return this._first === Node.Undefined;\r\n }\r\n clear() {\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n this._size = 0;\r\n }\r\n unshift(element) {\r\n return this._insert(element, false);\r\n }\r\n push(element) {\r\n return this._insert(element, true);\r\n }\r\n _insert(element, atTheEnd) {\r\n const newNode = new Node(element);\r\n if (this._first === Node.Undefined) {\r\n this._first = newNode;\r\n this._last = newNode;\r\n }\r\n else if (atTheEnd) {\r\n // push\r\n const oldLast = this._last;\r\n this._last = newNode;\r\n newNode.prev = oldLast;\r\n oldLast.next = newNode;\r\n }\r\n else {\r\n // unshift\r\n const oldFirst = this._first;\r\n this._first = newNode;\r\n newNode.next = oldFirst;\r\n oldFirst.prev = newNode;\r\n }\r\n this._size += 1;\r\n let didRemove = false;\r\n return () => {\r\n if (!didRemove) {\r\n didRemove = true;\r\n this._remove(newNode);\r\n }\r\n };\r\n }\r\n shift() {\r\n if (this._first === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._first.element;\r\n this._remove(this._first);\r\n return res;\r\n }\r\n }\r\n pop() {\r\n if (this._last === Node.Undefined) {\r\n return undefined;\r\n }\r\n else {\r\n const res = this._last.element;\r\n this._remove(this._last);\r\n return res;\r\n }\r\n }\r\n _remove(node) {\r\n if (node.prev !== Node.Undefined && node.next !== Node.Undefined) {\r\n // middle\r\n const anchor = node.prev;\r\n anchor.next = node.next;\r\n node.next.prev = anchor;\r\n }\r\n else if (node.prev === Node.Undefined && node.next === Node.Undefined) {\r\n // only node\r\n this._first = Node.Undefined;\r\n this._last = Node.Undefined;\r\n }\r\n else if (node.next === Node.Undefined) {\r\n // last\r\n this._last = this._last.prev;\r\n this._last.next = Node.Undefined;\r\n }\r\n else if (node.prev === Node.Undefined) {\r\n // first\r\n this._first = this._first.next;\r\n this._first.prev = Node.Undefined;\r\n }\r\n // done\r\n this._size -= 1;\r\n }\r\n *[Symbol.iterator]() {\r\n let node = this._first;\r\n while (node !== Node.Undefined) {\r\n yield node.element;\r\n node = node.next;\r\n }\r\n }\r\n toArray() {\r\n const result = [];\r\n for (let node = this._first; node !== Node.Undefined; node = node.next) {\r\n result.push(node.element);\r\n }\r\n return result;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// NOTE: VSCode's copy of nodejs path library to be usable in common (non-node) namespace\r\n// Copied from: https://github.com/nodejs/node/blob/v12.8.1/lib/path.js\r\n/**\r\n * Copyright Joyent, Inc. and other Node contributors.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a\r\n * copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to permit\r\n * persons to whom the Software is furnished to do so, subject to the\r\n * following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be included\r\n * in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\r\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\r\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\r\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\r\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\r\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n */\r\nimport * as process from './process.js';\r\nconst CHAR_UPPERCASE_A = 65; /* A */\r\nconst CHAR_LOWERCASE_A = 97; /* a */\r\nconst CHAR_UPPERCASE_Z = 90; /* Z */\r\nconst CHAR_LOWERCASE_Z = 122; /* z */\r\nconst CHAR_DOT = 46; /* . */\r\nconst CHAR_FORWARD_SLASH = 47; /* / */\r\nconst CHAR_BACKWARD_SLASH = 92; /* \\ */\r\nconst CHAR_COLON = 58; /* : */\r\nconst CHAR_QUESTION_MARK = 63; /* ? */\r\nclass ErrorInvalidArgType extends Error {\r\n constructor(name, expected, actual) {\r\n // determiner: 'must be' or 'must not be'\r\n let determiner;\r\n if (typeof expected === 'string' && expected.indexOf('not ') === 0) {\r\n determiner = 'must not be';\r\n expected = expected.replace(/^not /, '');\r\n }\r\n else {\r\n determiner = 'must be';\r\n }\r\n const type = name.indexOf('.') !== -1 ? 'property' : 'argument';\r\n let msg = `The \"${name}\" ${type} ${determiner} of type ${expected}`;\r\n msg += `. Received type ${typeof actual}`;\r\n super(msg);\r\n this.code = 'ERR_INVALID_ARG_TYPE';\r\n }\r\n}\r\nfunction validateString(value, name) {\r\n if (typeof value !== 'string') {\r\n throw new ErrorInvalidArgType(name, 'string', value);\r\n }\r\n}\r\nfunction isPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\r\n}\r\nfunction isPosixPathSeparator(code) {\r\n return code === CHAR_FORWARD_SLASH;\r\n}\r\nfunction isWindowsDeviceRoot(code) {\r\n return code >= CHAR_UPPERCASE_A && code <= CHAR_UPPERCASE_Z ||\r\n code >= CHAR_LOWERCASE_A && code <= CHAR_LOWERCASE_Z;\r\n}\r\n// Resolves . and .. elements in a path with directory names\r\nfunction normalizeString(path, allowAboveRoot, separator, isPathSeparator) {\r\n let res = '';\r\n let lastSegmentLength = 0;\r\n let lastSlash = -1;\r\n let dots = 0;\r\n let code = 0;\r\n for (let i = 0; i <= path.length; ++i) {\r\n if (i < path.length) {\r\n code = path.charCodeAt(i);\r\n }\r\n else if (isPathSeparator(code)) {\r\n break;\r\n }\r\n else {\r\n code = CHAR_FORWARD_SLASH;\r\n }\r\n if (isPathSeparator(code)) {\r\n if (lastSlash === i - 1 || dots === 1) {\r\n // NOOP\r\n }\r\n else if (dots === 2) {\r\n if (res.length < 2 || lastSegmentLength !== 2 ||\r\n res.charCodeAt(res.length - 1) !== CHAR_DOT ||\r\n res.charCodeAt(res.length - 2) !== CHAR_DOT) {\r\n if (res.length > 2) {\r\n const lastSlashIndex = res.lastIndexOf(separator);\r\n if (lastSlashIndex === -1) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n }\r\n else {\r\n res = res.slice(0, lastSlashIndex);\r\n lastSegmentLength = res.length - 1 - res.lastIndexOf(separator);\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n else if (res.length !== 0) {\r\n res = '';\r\n lastSegmentLength = 0;\r\n lastSlash = i;\r\n dots = 0;\r\n continue;\r\n }\r\n }\r\n if (allowAboveRoot) {\r\n res += res.length > 0 ? `${separator}..` : '..';\r\n lastSegmentLength = 2;\r\n }\r\n }\r\n else {\r\n if (res.length > 0) {\r\n res += `${separator}${path.slice(lastSlash + 1, i)}`;\r\n }\r\n else {\r\n res = path.slice(lastSlash + 1, i);\r\n }\r\n lastSegmentLength = i - lastSlash - 1;\r\n }\r\n lastSlash = i;\r\n dots = 0;\r\n }\r\n else if (code === CHAR_DOT && dots !== -1) {\r\n ++dots;\r\n }\r\n else {\r\n dots = -1;\r\n }\r\n }\r\n return res;\r\n}\r\nfunction _format(sep, pathObject) {\r\n if (pathObject === null || typeof pathObject !== 'object') {\r\n throw new ErrorInvalidArgType('pathObject', 'Object', pathObject);\r\n }\r\n const dir = pathObject.dir || pathObject.root;\r\n const base = pathObject.base ||\r\n `${pathObject.name || ''}${pathObject.ext || ''}`;\r\n if (!dir) {\r\n return base;\r\n }\r\n return dir === pathObject.root ? `${dir}${base}` : `${dir}${sep}${base}`;\r\n}\r\nexport const win32 = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedDevice = '';\r\n let resolvedTail = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1; i--) {\r\n let path;\r\n if (i >= 0) {\r\n path = pathSegments[i];\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n }\r\n else if (resolvedDevice.length === 0) {\r\n path = process.cwd();\r\n }\r\n else {\r\n // Windows has the concept of drive-specific current working\r\n // directories. If we've resolved a drive letter but not yet an\r\n // absolute path, get cwd for that drive, or the process cwd if\r\n // the drive cwd is not available. We're sure the device is not\r\n // a UNC path at this points, because UNC paths are always absolute.\r\n path = process.env[`=${resolvedDevice}`] || process.cwd();\r\n // Verify that a cwd was found and that it actually points\r\n // to our drive. If not, default to the drive's root.\r\n if (path === undefined ||\r\n path.slice(0, 2).toLowerCase() !== resolvedDevice.toLowerCase() &&\r\n path.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n path = `${resolvedDevice}\\\\`;\r\n }\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let device = '';\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator\r\n rootEnd = 1;\r\n isAbsolute = true;\r\n }\r\n }\r\n else if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an\r\n // absolute path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len || j !== last) {\r\n // We matched a UNC root\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n if (device.length > 0) {\r\n if (resolvedDevice.length > 0) {\r\n if (device.toLowerCase() !== resolvedDevice.toLowerCase()) {\r\n // This path points to another device so it is not applicable\r\n continue;\r\n }\r\n }\r\n else {\r\n resolvedDevice = device;\r\n }\r\n }\r\n if (resolvedAbsolute) {\r\n if (resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n else {\r\n resolvedTail = `${path.slice(rootEnd)}\\\\${resolvedTail}`;\r\n resolvedAbsolute = isAbsolute;\r\n if (isAbsolute && resolvedDevice.length > 0) {\r\n break;\r\n }\r\n }\r\n }\r\n // At this point the path should be resolved to a full absolute path,\r\n // but handle relative paths to be safe (might happen when process.cwd()\r\n // fails)\r\n // Normalize the tail path\r\n resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, '\\\\', isPathSeparator);\r\n return resolvedAbsolute ?\r\n `${resolvedDevice}\\\\${resolvedTail}` :\r\n `${resolvedDevice}${resolvedTail}` || '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = 0;\r\n let device;\r\n let isAbsolute = false;\r\n const code = path.charCodeAt(0);\r\n // Try to match a root\r\n if (len === 1) {\r\n // `path` contains just a single char, exit early to avoid\r\n // unnecessary work\r\n return isPosixPathSeparator(code) ? '\\\\' : path;\r\n }\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n // If we started with a separator, we know we at least have an absolute\r\n // path of some kind (UNC or otherwise)\r\n isAbsolute = true;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n const firstPart = path.slice(last, j);\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n // Return the normalized version of the UNC root since there\r\n // is nothing left to process\r\n return `\\\\\\\\${firstPart}\\\\${path.slice(last)}\\\\`;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n device = `\\\\\\\\${firstPart}\\\\${path.slice(last, j)}`;\r\n rootEnd = j;\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n rootEnd = 1;\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n device = path.slice(0, 2);\r\n rootEnd = 2;\r\n if (len > 2 && isPathSeparator(path.charCodeAt(2))) {\r\n // Treat separator following drive name as an absolute path\r\n // indicator\r\n isAbsolute = true;\r\n rootEnd = 3;\r\n }\r\n }\r\n let tail = rootEnd < len ?\r\n normalizeString(path.slice(rootEnd), !isAbsolute, '\\\\', isPathSeparator) :\r\n '';\r\n if (tail.length === 0 && !isAbsolute) {\r\n tail = '.';\r\n }\r\n if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) {\r\n tail += '\\\\';\r\n }\r\n if (device === undefined) {\r\n return isAbsolute ? `\\\\${tail}` : tail;\r\n }\r\n return isAbsolute ? `${device}\\\\${tail}` : `${device}${tail}`;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const code = path.charCodeAt(0);\r\n return isPathSeparator(code) ||\r\n // Possible device root\r\n len > 2 &&\r\n isWindowsDeviceRoot(code) &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isPathSeparator(path.charCodeAt(2));\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n let firstPart;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = firstPart = arg;\r\n }\r\n else {\r\n joined += `\\\\${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n // Make sure that the joined path doesn't start with two slashes, because\r\n // normalize() will mistake it for an UNC path then.\r\n //\r\n // This step is skipped when it is very clear that the user actually\r\n // intended to point at an UNC path. This is assumed when the first\r\n // non-empty string arguments starts with exactly two slashes followed by\r\n // at least one more non-slash character.\r\n //\r\n // Note that for normalize() to treat a path as an UNC path it needs to\r\n // have at least 2 components, so we don't filter for that here.\r\n // This means that the user can use join to construct UNC paths from\r\n // a server name and a share name; for example:\r\n // path.join('//server', 'share') -> '\\\\\\\\server\\\\share\\\\')\r\n let needsReplace = true;\r\n let slashCount = 0;\r\n if (typeof firstPart === 'string' && isPathSeparator(firstPart.charCodeAt(0))) {\r\n ++slashCount;\r\n const firstLen = firstPart.length;\r\n if (firstLen > 1 && isPathSeparator(firstPart.charCodeAt(1))) {\r\n ++slashCount;\r\n if (firstLen > 2) {\r\n if (isPathSeparator(firstPart.charCodeAt(2))) {\r\n ++slashCount;\r\n }\r\n else {\r\n // We matched a UNC path in the first part\r\n needsReplace = false;\r\n }\r\n }\r\n }\r\n }\r\n if (needsReplace) {\r\n // Find any more consecutive slashes we need to replace\r\n while (slashCount < joined.length &&\r\n isPathSeparator(joined.charCodeAt(slashCount))) {\r\n slashCount++;\r\n }\r\n // Replace the slashes if needed\r\n if (slashCount >= 2) {\r\n joined = `\\\\${joined.slice(slashCount)}`;\r\n }\r\n }\r\n return win32.normalize(joined);\r\n },\r\n // It will solve the relative path from `from` to `to`, for instance:\r\n // from = 'C:\\\\orandea\\\\test\\\\aaa'\r\n // to = 'C:\\\\orandea\\\\impl\\\\bbb'\r\n // The output of the function should be: '..\\\\..\\\\impl\\\\bbb'\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromOrig = win32.resolve(from);\r\n const toOrig = win32.resolve(to);\r\n if (fromOrig === toOrig) {\r\n return '';\r\n }\r\n from = fromOrig.toLowerCase();\r\n to = toOrig.toLowerCase();\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim any leading backslashes\r\n let fromStart = 0;\r\n while (fromStart < from.length &&\r\n from.charCodeAt(fromStart) === CHAR_BACKWARD_SLASH) {\r\n fromStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let fromEnd = from.length;\r\n while (fromEnd - 1 > fromStart &&\r\n from.charCodeAt(fromEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n fromEnd--;\r\n }\r\n const fromLen = fromEnd - fromStart;\r\n // Trim any leading backslashes\r\n let toStart = 0;\r\n while (toStart < to.length &&\r\n to.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n toStart++;\r\n }\r\n // Trim trailing backslashes (applicable to UNC paths only)\r\n let toEnd = to.length;\r\n while (toEnd - 1 > toStart &&\r\n to.charCodeAt(toEnd - 1) === CHAR_BACKWARD_SLASH) {\r\n toEnd--;\r\n }\r\n const toLen = toEnd - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = fromLen < toLen ? fromLen : toLen;\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_BACKWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n // We found a mismatch before the first common path separator was seen, so\r\n // return the original `to`.\r\n if (i !== length) {\r\n if (lastCommonSep === -1) {\r\n return toOrig;\r\n }\r\n }\r\n else {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo\\\\bar\\\\baz'\r\n return toOrig.slice(toStart + i + 1);\r\n }\r\n if (i === 2) {\r\n // We get here if `from` is the device root.\r\n // For example: from='C:\\\\'; to='C:\\\\foo'\r\n return toOrig.slice(toStart + i);\r\n }\r\n }\r\n if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_BACKWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\foo'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 2) {\r\n // We get here if `to` is the device root.\r\n // For example: from='C:\\\\foo\\\\bar'; to='C:\\\\'\r\n lastCommonSep = 3;\r\n }\r\n }\r\n if (lastCommonSep === -1) {\r\n lastCommonSep = 0;\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to` and\r\n // `from`\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_BACKWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '\\\\..';\r\n }\r\n }\r\n toStart += lastCommonSep;\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts\r\n if (out.length > 0) {\r\n return `${out}${toOrig.slice(toStart, toEnd)}`;\r\n }\r\n if (toOrig.charCodeAt(toStart) === CHAR_BACKWARD_SLASH) {\r\n ++toStart;\r\n }\r\n return toOrig.slice(toStart, toEnd);\r\n },\r\n toNamespacedPath(path) {\r\n // Note: this will *probably* throw somewhere.\r\n if (typeof path !== 'string') {\r\n return path;\r\n }\r\n if (path.length === 0) {\r\n return '';\r\n }\r\n const resolvedPath = win32.resolve(path);\r\n if (resolvedPath.length <= 2) {\r\n return path;\r\n }\r\n if (resolvedPath.charCodeAt(0) === CHAR_BACKWARD_SLASH) {\r\n // Possible UNC root\r\n if (resolvedPath.charCodeAt(1) === CHAR_BACKWARD_SLASH) {\r\n const code = resolvedPath.charCodeAt(2);\r\n if (code !== CHAR_QUESTION_MARK && code !== CHAR_DOT) {\r\n // Matched non-long UNC root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\UNC\\\\${resolvedPath.slice(2)}`;\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0)) &&\r\n resolvedPath.charCodeAt(1) === CHAR_COLON &&\r\n resolvedPath.charCodeAt(2) === CHAR_BACKWARD_SLASH) {\r\n // Matched device root, convert the path to a long UNC path\r\n return `\\\\\\\\?\\\\${resolvedPath}`;\r\n }\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n const len = path.length;\r\n if (len === 0) {\r\n return '.';\r\n }\r\n let rootEnd = -1;\r\n let offset = 0;\r\n const code = path.charCodeAt(0);\r\n if (len === 1) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work or a dot.\r\n return isPathSeparator(code) ? path : '.';\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = offset = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n return path;\r\n }\r\n if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n // Offset by 1 to include the separator after the UNC root to\r\n // treat it as a \"normal root\" on top of a (UNC) root\r\n rootEnd = offset = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n // Possible device root\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2;\r\n offset = rootEnd;\r\n }\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = len - 1; i >= offset; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n if (rootEnd === -1) {\r\n return '.';\r\n }\r\n end = rootEnd;\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n isWindowsDeviceRoot(path.charCodeAt(0)) &&\r\n path.charCodeAt(1) === CHAR_COLON) {\r\n start = 2;\r\n }\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= start; --i) {\r\n if (isPathSeparator(path.charCodeAt(i))) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let start = 0;\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Check for a drive letter prefix so as not to mistake the following\r\n // path separator as an extra separator at the end of the path that can be\r\n // disregarded\r\n if (path.length >= 2 &&\r\n path.charCodeAt(1) === CHAR_COLON &&\r\n isWindowsDeviceRoot(path.charCodeAt(0))) {\r\n start = startPart = 2;\r\n }\r\n for (let i = path.length - 1; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '\\\\'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const len = path.length;\r\n let rootEnd = 0;\r\n let code = path.charCodeAt(0);\r\n if (len === 1) {\r\n if (isPathSeparator(code)) {\r\n // `path` contains just a path separator, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n ret.base = ret.name = path;\r\n return ret;\r\n }\r\n // Try to match a root\r\n if (isPathSeparator(code)) {\r\n // Possible UNC root\r\n rootEnd = 1;\r\n if (isPathSeparator(path.charCodeAt(1))) {\r\n // Matched double path separator at beginning\r\n let j = 2;\r\n let last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more path separators\r\n while (j < len && isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j < len && j !== last) {\r\n // Matched!\r\n last = j;\r\n // Match 1 or more non-path separators\r\n while (j < len && !isPathSeparator(path.charCodeAt(j))) {\r\n j++;\r\n }\r\n if (j === len) {\r\n // We matched a UNC root only\r\n rootEnd = j;\r\n }\r\n else if (j !== last) {\r\n // We matched a UNC root with leftovers\r\n rootEnd = j + 1;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) {\r\n // Possible device root\r\n if (len <= 2) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 2;\r\n if (isPathSeparator(path.charCodeAt(2))) {\r\n if (len === 3) {\r\n // `path` contains just a drive root, exit early to avoid\r\n // unnecessary work\r\n ret.root = ret.dir = path;\r\n return ret;\r\n }\r\n rootEnd = 3;\r\n }\r\n }\r\n if (rootEnd > 0) {\r\n ret.root = path.slice(0, rootEnd);\r\n }\r\n let startDot = -1;\r\n let startPart = rootEnd;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= rootEnd; --i) {\r\n code = path.charCodeAt(i);\r\n if (isPathSeparator(code)) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(startPart, end);\r\n }\r\n else {\r\n ret.name = path.slice(startPart, startDot);\r\n ret.base = path.slice(startPart, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n // If the directory is the root, use the entire root as the `dir` including\r\n // the trailing slash if any (`C:\\abc` -> `C:\\`). Otherwise, strip out the\r\n // trailing slash (`C:\\abc\\def` -> `C:\\abc`).\r\n if (startPart > 0 && startPart !== rootEnd) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else {\r\n ret.dir = ret.root;\r\n }\r\n return ret;\r\n },\r\n sep: '\\\\',\r\n delimiter: ';',\r\n win32: null,\r\n posix: null\r\n};\r\nexport const posix = {\r\n // path.resolve([from ...], to)\r\n resolve(...pathSegments) {\r\n let resolvedPath = '';\r\n let resolvedAbsolute = false;\r\n for (let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\r\n const path = i >= 0 ? pathSegments[i] : process.cwd();\r\n validateString(path, 'path');\r\n // Skip empty entries\r\n if (path.length === 0) {\r\n continue;\r\n }\r\n resolvedPath = `${path}/${resolvedPath}`;\r\n resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n }\r\n // At this point the path should be resolved to a full absolute path, but\r\n // handle relative paths to be safe (might happen when process.cwd() fails)\r\n // Normalize the path\r\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, '/', isPosixPathSeparator);\r\n if (resolvedAbsolute) {\r\n return `/${resolvedPath}`;\r\n }\r\n return resolvedPath.length > 0 ? resolvedPath : '.';\r\n },\r\n normalize(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n const trailingSeparator = path.charCodeAt(path.length - 1) === CHAR_FORWARD_SLASH;\r\n // Normalize the path\r\n path = normalizeString(path, !isAbsolute, '/', isPosixPathSeparator);\r\n if (path.length === 0) {\r\n if (isAbsolute) {\r\n return '/';\r\n }\r\n return trailingSeparator ? './' : '.';\r\n }\r\n if (trailingSeparator) {\r\n path += '/';\r\n }\r\n return isAbsolute ? `/${path}` : path;\r\n },\r\n isAbsolute(path) {\r\n validateString(path, 'path');\r\n return path.length > 0 && path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n },\r\n join(...paths) {\r\n if (paths.length === 0) {\r\n return '.';\r\n }\r\n let joined;\r\n for (let i = 0; i < paths.length; ++i) {\r\n const arg = paths[i];\r\n validateString(arg, 'path');\r\n if (arg.length > 0) {\r\n if (joined === undefined) {\r\n joined = arg;\r\n }\r\n else {\r\n joined += `/${arg}`;\r\n }\r\n }\r\n }\r\n if (joined === undefined) {\r\n return '.';\r\n }\r\n return posix.normalize(joined);\r\n },\r\n relative(from, to) {\r\n validateString(from, 'from');\r\n validateString(to, 'to');\r\n if (from === to) {\r\n return '';\r\n }\r\n // Trim leading forward slashes.\r\n from = posix.resolve(from);\r\n to = posix.resolve(to);\r\n if (from === to) {\r\n return '';\r\n }\r\n const fromStart = 1;\r\n const fromEnd = from.length;\r\n const fromLen = fromEnd - fromStart;\r\n const toStart = 1;\r\n const toLen = to.length - toStart;\r\n // Compare paths to find the longest common path from root\r\n const length = (fromLen < toLen ? fromLen : toLen);\r\n let lastCommonSep = -1;\r\n let i = 0;\r\n for (; i < length; i++) {\r\n const fromCode = from.charCodeAt(fromStart + i);\r\n if (fromCode !== to.charCodeAt(toStart + i)) {\r\n break;\r\n }\r\n else if (fromCode === CHAR_FORWARD_SLASH) {\r\n lastCommonSep = i;\r\n }\r\n }\r\n if (i === length) {\r\n if (toLen > length) {\r\n if (to.charCodeAt(toStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `from` is the exact base path for `to`.\r\n // For example: from='/foo/bar'; to='/foo/bar/baz'\r\n return to.slice(toStart + i + 1);\r\n }\r\n if (i === 0) {\r\n // We get here if `from` is the root\r\n // For example: from='/'; to='/foo'\r\n return to.slice(toStart + i);\r\n }\r\n }\r\n else if (fromLen > length) {\r\n if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {\r\n // We get here if `to` is the exact base path for `from`.\r\n // For example: from='/foo/bar/baz'; to='/foo/bar'\r\n lastCommonSep = i;\r\n }\r\n else if (i === 0) {\r\n // We get here if `to` is the root.\r\n // For example: from='/foo/bar'; to='/'\r\n lastCommonSep = 0;\r\n }\r\n }\r\n }\r\n let out = '';\r\n // Generate the relative path based on the path difference between `to`\r\n // and `from`.\r\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\r\n if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n out += out.length === 0 ? '..' : '/..';\r\n }\r\n }\r\n // Lastly, append the rest of the destination (`to`) path that comes after\r\n // the common path parts.\r\n return `${out}${to.slice(toStart + lastCommonSep)}`;\r\n },\r\n toNamespacedPath(path) {\r\n // Non-op on posix systems\r\n return path;\r\n },\r\n dirname(path) {\r\n validateString(path, 'path');\r\n if (path.length === 0) {\r\n return '.';\r\n }\r\n const hasRoot = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let end = -1;\r\n let matchedSlash = true;\r\n for (let i = path.length - 1; i >= 1; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n if (!matchedSlash) {\r\n end = i;\r\n break;\r\n }\r\n }\r\n else {\r\n // We saw the first non-path separator\r\n matchedSlash = false;\r\n }\r\n }\r\n if (end === -1) {\r\n return hasRoot ? '/' : '.';\r\n }\r\n if (hasRoot && end === 1) {\r\n return '//';\r\n }\r\n return path.slice(0, end);\r\n },\r\n basename(path, ext) {\r\n if (ext !== undefined) {\r\n validateString(ext, 'ext');\r\n }\r\n validateString(path, 'path');\r\n let start = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i;\r\n if (ext !== undefined && ext.length > 0 && ext.length <= path.length) {\r\n if (ext === path) {\r\n return '';\r\n }\r\n let extIdx = ext.length - 1;\r\n let firstNonSlashEnd = -1;\r\n for (i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else {\r\n if (firstNonSlashEnd === -1) {\r\n // We saw the first non-path separator, remember this index in case\r\n // we need it if the extension ends up not matching\r\n matchedSlash = false;\r\n firstNonSlashEnd = i + 1;\r\n }\r\n if (extIdx >= 0) {\r\n // Try to match the explicit extension\r\n if (code === ext.charCodeAt(extIdx)) {\r\n if (--extIdx === -1) {\r\n // We matched the extension, so mark this as the end of our path\r\n // component\r\n end = i;\r\n }\r\n }\r\n else {\r\n // Extension does not match, so our result is the entire path\r\n // component\r\n extIdx = -1;\r\n end = firstNonSlashEnd;\r\n }\r\n }\r\n }\r\n }\r\n if (start === end) {\r\n end = firstNonSlashEnd;\r\n }\r\n else if (end === -1) {\r\n end = path.length;\r\n }\r\n return path.slice(start, end);\r\n }\r\n for (i = path.length - 1; i >= 0; --i) {\r\n if (path.charCodeAt(i) === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n start = i + 1;\r\n break;\r\n }\r\n }\r\n else if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // path component\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n }\r\n if (end === -1) {\r\n return '';\r\n }\r\n return path.slice(start, end);\r\n },\r\n extname(path) {\r\n validateString(path, 'path');\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n for (let i = path.length - 1; i >= 0; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (startDot === -1 ||\r\n end === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n return '';\r\n }\r\n return path.slice(startDot, end);\r\n },\r\n format: _format.bind(null, '/'),\r\n parse(path) {\r\n validateString(path, 'path');\r\n const ret = { root: '', dir: '', base: '', ext: '', name: '' };\r\n if (path.length === 0) {\r\n return ret;\r\n }\r\n const isAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH;\r\n let start;\r\n if (isAbsolute) {\r\n ret.root = '/';\r\n start = 1;\r\n }\r\n else {\r\n start = 0;\r\n }\r\n let startDot = -1;\r\n let startPart = 0;\r\n let end = -1;\r\n let matchedSlash = true;\r\n let i = path.length - 1;\r\n // Track the state of characters (if any) we see before our first dot and\r\n // after any path separator we find\r\n let preDotState = 0;\r\n // Get non-dir info\r\n for (; i >= start; --i) {\r\n const code = path.charCodeAt(i);\r\n if (code === CHAR_FORWARD_SLASH) {\r\n // If we reached a path separator that was not part of a set of path\r\n // separators at the end of the string, stop now\r\n if (!matchedSlash) {\r\n startPart = i + 1;\r\n break;\r\n }\r\n continue;\r\n }\r\n if (end === -1) {\r\n // We saw the first non-path separator, mark this as the end of our\r\n // extension\r\n matchedSlash = false;\r\n end = i + 1;\r\n }\r\n if (code === CHAR_DOT) {\r\n // If this is our first dot, mark it as the start of our extension\r\n if (startDot === -1) {\r\n startDot = i;\r\n }\r\n else if (preDotState !== 1) {\r\n preDotState = 1;\r\n }\r\n }\r\n else if (startDot !== -1) {\r\n // We saw a non-dot and non-path separator before our dot, so we should\r\n // have a good chance at having a non-empty extension\r\n preDotState = -1;\r\n }\r\n }\r\n if (end !== -1) {\r\n const start = startPart === 0 && isAbsolute ? 1 : startPart;\r\n if (startDot === -1 ||\r\n // We saw a non-dot character immediately before the dot\r\n preDotState === 0 ||\r\n // The (right-most) trimmed path component is exactly '..'\r\n (preDotState === 1 &&\r\n startDot === end - 1 &&\r\n startDot === startPart + 1)) {\r\n ret.base = ret.name = path.slice(start, end);\r\n }\r\n else {\r\n ret.name = path.slice(start, startDot);\r\n ret.base = path.slice(start, end);\r\n ret.ext = path.slice(startDot, end);\r\n }\r\n }\r\n if (startPart > 0) {\r\n ret.dir = path.slice(0, startPart - 1);\r\n }\r\n else if (isAbsolute) {\r\n ret.dir = '/';\r\n }\r\n return ret;\r\n },\r\n sep: '/',\r\n delimiter: ':',\r\n win32: null,\r\n posix: null\r\n};\r\nposix.win32 = win32.win32 = win32;\r\nposix.posix = win32.posix = posix;\r\nexport const normalize = (process.platform === 'win32' ? win32.normalize : posix.normalize);\r\nexport const resolve = (process.platform === 'win32' ? win32.resolve : posix.resolve);\r\nexport const relative = (process.platform === 'win32' ? win32.relative : posix.relative);\r\nexport const dirname = (process.platform === 'win32' ? win32.dirname : posix.dirname);\r\nexport const basename = (process.platform === 'win32' ? win32.basename : posix.basename);\r\nexport const extname = (process.platform === 'win32' ? win32.extname : posix.extname);\r\nexport const sep = (process.platform === 'win32' ? win32.sep : posix.sep);\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nconst LANGUAGE_DEFAULT = 'en';\r\nlet _isWindows = false;\r\nlet _isMacintosh = false;\r\nlet _isLinux = false;\r\nlet _isNative = false;\r\nlet _isWeb = false;\r\nlet _isIOS = false;\r\nlet _locale = undefined;\r\nlet _language = LANGUAGE_DEFAULT;\r\nlet _translationsConfigFile = undefined;\r\nlet _userAgent = undefined;\r\nconst isElectronRenderer = (typeof process !== 'undefined' && typeof process.versions !== 'undefined' && typeof process.versions.electron !== 'undefined' && process.type === 'renderer');\r\n// OS detection\r\nif (typeof navigator === 'object' && !isElectronRenderer) {\r\n _userAgent = navigator.userAgent;\r\n _isWindows = _userAgent.indexOf('Windows') >= 0;\r\n _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;\r\n _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;\r\n _isLinux = _userAgent.indexOf('Linux') >= 0;\r\n _isWeb = true;\r\n _locale = navigator.language;\r\n _language = _locale;\r\n}\r\nelse if (typeof process === 'object') {\r\n _isWindows = (process.platform === 'win32');\r\n _isMacintosh = (process.platform === 'darwin');\r\n _isLinux = (process.platform === 'linux');\r\n _locale = LANGUAGE_DEFAULT;\r\n _language = LANGUAGE_DEFAULT;\r\n const rawNlsConfig = process.env['VSCODE_NLS_CONFIG'];\r\n if (rawNlsConfig) {\r\n try {\r\n const nlsConfig = JSON.parse(rawNlsConfig);\r\n const resolved = nlsConfig.availableLanguages['*'];\r\n _locale = nlsConfig.locale;\r\n // VSCode's default language is 'en'\r\n _language = resolved ? resolved : LANGUAGE_DEFAULT;\r\n _translationsConfigFile = nlsConfig._translationsConfigFile;\r\n }\r\n catch (e) {\r\n }\r\n }\r\n _isNative = true;\r\n}\r\nlet _platform = 0 /* Web */;\r\nif (_isMacintosh) {\r\n _platform = 1 /* Mac */;\r\n}\r\nelse if (_isWindows) {\r\n _platform = 3 /* Windows */;\r\n}\r\nelse if (_isLinux) {\r\n _platform = 2 /* Linux */;\r\n}\r\nexport const isWindows = _isWindows;\r\nexport const isMacintosh = _isMacintosh;\r\nexport const isLinux = _isLinux;\r\nexport const isNative = _isNative;\r\nexport const isWeb = _isWeb;\r\nexport const isIOS = _isIOS;\r\nconst _globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});\r\nexport const globals = _globals;\r\nexport const setImmediate = (function defineSetImmediate() {\r\n if (globals.setImmediate) {\r\n return globals.setImmediate.bind(globals);\r\n }\r\n if (typeof globals.postMessage === 'function' && !globals.importScripts) {\r\n let pending = [];\r\n globals.addEventListener('message', (e) => {\r\n if (e.data && e.data.vscodeSetImmediateId) {\r\n for (let i = 0, len = pending.length; i < len; i++) {\r\n const candidate = pending[i];\r\n if (candidate.id === e.data.vscodeSetImmediateId) {\r\n pending.splice(i, 1);\r\n candidate.callback();\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n let lastId = 0;\r\n return (callback) => {\r\n const myId = ++lastId;\r\n pending.push({\r\n id: myId,\r\n callback: callback\r\n });\r\n globals.postMessage({ vscodeSetImmediateId: myId }, '*');\r\n };\r\n }\r\n if (typeof process !== 'undefined' && typeof process.nextTick === 'function') {\r\n return process.nextTick.bind(process);\r\n }\r\n const _promise = Promise.resolve();\r\n return (callback) => _promise.then(callback);\r\n})();\r\nexport const OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));\r\nlet _isLittleEndian = true;\r\nlet _isLittleEndianComputed = false;\r\nexport function isLittleEndian() {\r\n if (!_isLittleEndianComputed) {\r\n _isLittleEndianComputed = true;\r\n const test = new Uint8Array(2);\r\n test[0] = 1;\r\n test[1] = 2;\r\n const view = new Uint16Array(test.buffer);\r\n _isLittleEndian = (view[0] === (2 << 8) + 1);\r\n }\r\n return _isLittleEndian;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows, isMacintosh, setImmediate } from './platform.js';\r\nconst safeProcess = (typeof process === 'undefined') ? {\r\n cwd() { return '/'; },\r\n env: Object.create(null),\r\n get platform() { return isWindows ? 'win32' : isMacintosh ? 'darwin' : 'linux'; },\r\n nextTick(callback) { return setImmediate(callback); }\r\n} : process;\r\nexport const cwd = safeProcess.cwd;\r\nexport const env = safeProcess.env;\r\nexport const platform = safeProcess.platform;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function isFalsyOrWhitespace(str) {\r\n if (!str || typeof str !== 'string') {\r\n return true;\r\n }\r\n return str.trim().length === 0;\r\n}\r\n/**\r\n * @deprecated ES6: use `String.padStart`\r\n */\r\nexport function pad(n, l, char = '0') {\r\n const str = '' + n;\r\n const r = [str];\r\n for (let i = str.length; i < l; i++) {\r\n r.push(char);\r\n }\r\n return r.reverse().join('');\r\n}\r\nconst _formatRegexp = /{(\\d+)}/g;\r\n/**\r\n * Helper to produce a string with a variable number of arguments. Insert variable segments\r\n * into the string using the {n} notation where N is the index of the argument following the string.\r\n * @param value string to which formatting is applied\r\n * @param args replacements for {n}-entries\r\n */\r\nexport function format(value, ...args) {\r\n if (args.length === 0) {\r\n return value;\r\n }\r\n return value.replace(_formatRegexp, function (match, group) {\r\n const idx = parseInt(group, 10);\r\n return isNaN(idx) || idx < 0 || idx >= args.length ?\r\n match :\r\n args[idx];\r\n });\r\n}\r\n/**\r\n * Converts HTML characters inside the string to use entities instead. Makes the string safe from\r\n * being used e.g. in HTMLElement.innerHTML.\r\n */\r\nexport function escape(html) {\r\n return html.replace(/[<>&]/g, function (match) {\r\n switch (match) {\r\n case '<': return '<';\r\n case '>': return '>';\r\n case '&': return '&';\r\n default: return match;\r\n }\r\n });\r\n}\r\n/**\r\n * Escapes regular expression characters in a given string\r\n */\r\nexport function escapeRegExpCharacters(value) {\r\n return value.replace(/[\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\[\\]\\(\\)]/g, '\\\\$&');\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning and end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim (default is a blank)\r\n */\r\nexport function trim(haystack, needle = ' ') {\r\n const trimmed = ltrim(haystack, needle);\r\n return rtrim(trimmed, needle);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the beginning of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function ltrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length;\r\n if (needleLen === 0 || haystack.length === 0) {\r\n return haystack;\r\n }\r\n let offset = 0;\r\n while (haystack.indexOf(needle, offset) === offset) {\r\n offset = offset + needleLen;\r\n }\r\n return haystack.substring(offset);\r\n}\r\n/**\r\n * Removes all occurrences of needle from the end of haystack.\r\n * @param haystack string to trim\r\n * @param needle the thing to trim\r\n */\r\nexport function rtrim(haystack, needle) {\r\n if (!haystack || !needle) {\r\n return haystack;\r\n }\r\n const needleLen = needle.length, haystackLen = haystack.length;\r\n if (needleLen === 0 || haystackLen === 0) {\r\n return haystack;\r\n }\r\n let offset = haystackLen, idx = -1;\r\n while (true) {\r\n idx = haystack.lastIndexOf(needle, offset - 1);\r\n if (idx === -1 || idx + needleLen !== offset) {\r\n break;\r\n }\r\n if (idx === 0) {\r\n return '';\r\n }\r\n offset = idx;\r\n }\r\n return haystack.substring(0, offset);\r\n}\r\nexport function convertSimple2RegExpPattern(pattern) {\r\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\r\n}\r\nexport function stripWildcards(pattern) {\r\n return pattern.replace(/\\*/g, '');\r\n}\r\n/**\r\n * @deprecated ES6: use `String.startsWith`\r\n */\r\nexport function startsWith(haystack, needle) {\r\n if (haystack.length < needle.length) {\r\n return false;\r\n }\r\n if (haystack === needle) {\r\n return true;\r\n }\r\n for (let i = 0; i < needle.length; i++) {\r\n if (haystack[i] !== needle[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * @deprecated ES6: use `String.endsWith`\r\n */\r\nexport function endsWith(haystack, needle) {\r\n const diff = haystack.length - needle.length;\r\n if (diff > 0) {\r\n return haystack.indexOf(needle, diff) === diff;\r\n }\r\n else if (diff === 0) {\r\n return haystack === needle;\r\n }\r\n else {\r\n return false;\r\n }\r\n}\r\nexport function createRegExp(searchString, isRegex, options = {}) {\r\n if (!searchString) {\r\n throw new Error('Cannot create regex from empty string');\r\n }\r\n if (!isRegex) {\r\n searchString = escapeRegExpCharacters(searchString);\r\n }\r\n if (options.wholeWord) {\r\n if (!/\\B/.test(searchString.charAt(0))) {\r\n searchString = '\\\\b' + searchString;\r\n }\r\n if (!/\\B/.test(searchString.charAt(searchString.length - 1))) {\r\n searchString = searchString + '\\\\b';\r\n }\r\n }\r\n let modifiers = '';\r\n if (options.global) {\r\n modifiers += 'g';\r\n }\r\n if (!options.matchCase) {\r\n modifiers += 'i';\r\n }\r\n if (options.multiline) {\r\n modifiers += 'm';\r\n }\r\n if (options.unicode) {\r\n modifiers += 'u';\r\n }\r\n return new RegExp(searchString, modifiers);\r\n}\r\nexport function regExpLeadsToEndlessLoop(regexp) {\r\n // Exit early if it's one of these special cases which are meant to match\r\n // against an empty string\r\n if (regexp.source === '^' || regexp.source === '^$' || regexp.source === '$' || regexp.source === '^\\\\s*$') {\r\n return false;\r\n }\r\n // We check against an empty string. If the regular expression doesn't advance\r\n // (e.g. ends in an endless loop) it will match an empty string.\r\n const match = regexp.exec('');\r\n return !!(match && regexp.lastIndex === 0);\r\n}\r\nexport function regExpFlags(regexp) {\r\n return (regexp.global ? 'g' : '')\r\n + (regexp.ignoreCase ? 'i' : '')\r\n + (regexp.multiline ? 'm' : '')\r\n + (regexp /* standalone editor compilation */.unicode ? 'u' : '');\r\n}\r\n/**\r\n * Returns first index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function firstNonWhitespaceIndex(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Returns the leading whitespace of the string.\r\n * If the string contains only whitespaces, returns entire string\r\n */\r\nexport function getLeadingWhitespace(str, start = 0, end = str.length) {\r\n for (let i = start; i < end; i++) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return str.substring(start, i);\r\n }\r\n }\r\n return str.substring(start, end);\r\n}\r\n/**\r\n * Returns last index of the string that is not whitespace.\r\n * If string is empty or contains only whitespaces, returns -1\r\n */\r\nexport function lastNonWhitespaceIndex(str, startIndex = str.length - 1) {\r\n for (let i = startIndex; i >= 0; i--) {\r\n const chCode = str.charCodeAt(i);\r\n if (chCode !== 32 /* Space */ && chCode !== 9 /* Tab */) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\nexport function compare(a, b) {\r\n if (a < b) {\r\n return -1;\r\n }\r\n else if (a > b) {\r\n return 1;\r\n }\r\n else {\r\n return 0;\r\n }\r\n}\r\nexport function compareSubstring(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA < codeB) {\r\n return -1;\r\n }\r\n else if (codeA > codeB) {\r\n return 1;\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function compareIgnoreCase(a, b) {\r\n return compareSubstringIgnoreCase(a, b, 0, a.length, 0, b.length);\r\n}\r\nexport function compareSubstringIgnoreCase(a, b, aStart = 0, aEnd = a.length, bStart = 0, bEnd = b.length) {\r\n for (; aStart < aEnd && bStart < bEnd; aStart++, bStart++) {\r\n let codeA = a.charCodeAt(aStart);\r\n let codeB = b.charCodeAt(bStart);\r\n if (codeA === codeB) {\r\n // equal\r\n continue;\r\n }\r\n const diff = codeA - codeB;\r\n if (diff === 32 && isUpperAsciiLetter(codeB)) { //codeB =[65-90] && codeA =[97-122]\r\n continue;\r\n }\r\n else if (diff === -32 && isUpperAsciiLetter(codeA)) { //codeB =[97-122] && codeA =[65-90]\r\n continue;\r\n }\r\n if (isLowerAsciiLetter(codeA) && isLowerAsciiLetter(codeB)) {\r\n //\r\n return diff;\r\n }\r\n else {\r\n return compareSubstring(a.toLowerCase(), b.toLowerCase(), aStart, aEnd, bStart, bEnd);\r\n }\r\n }\r\n const aLen = aEnd - aStart;\r\n const bLen = bEnd - bStart;\r\n if (aLen < bLen) {\r\n return -1;\r\n }\r\n else if (aLen > bLen) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\nexport function isLowerAsciiLetter(code) {\r\n return code >= 97 /* a */ && code <= 122 /* z */;\r\n}\r\nexport function isUpperAsciiLetter(code) {\r\n return code >= 65 /* A */ && code <= 90 /* Z */;\r\n}\r\nfunction isAsciiLetter(code) {\r\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\r\n}\r\nexport function equalsIgnoreCase(a, b) {\r\n return a.length === b.length && doEqualsIgnoreCase(a, b);\r\n}\r\nfunction doEqualsIgnoreCase(a, b, stopAt = a.length) {\r\n for (let i = 0; i < stopAt; i++) {\r\n const codeA = a.charCodeAt(i);\r\n const codeB = b.charCodeAt(i);\r\n if (codeA === codeB) {\r\n continue;\r\n }\r\n // a-z A-Z\r\n if (isAsciiLetter(codeA) && isAsciiLetter(codeB)) {\r\n const diff = Math.abs(codeA - codeB);\r\n if (diff !== 0 && diff !== 32) {\r\n return false;\r\n }\r\n }\r\n // Any other charcode\r\n else {\r\n if (String.fromCharCode(codeA).toLowerCase() !== String.fromCharCode(codeB).toLowerCase()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\nexport function startsWithIgnoreCase(str, candidate) {\r\n const candidateLength = candidate.length;\r\n if (candidate.length > str.length) {\r\n return false;\r\n }\r\n return doEqualsIgnoreCase(str, candidate, candidateLength);\r\n}\r\n/**\r\n * @returns the length of the common prefix of the two strings.\r\n */\r\nexport function commonPrefixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(i) !== b.charCodeAt(i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * @returns the length of the common suffix of the two strings.\r\n */\r\nexport function commonSuffixLength(a, b) {\r\n let i, len = Math.min(a.length, b.length);\r\n const aLastIndex = a.length - 1;\r\n const bLastIndex = b.length - 1;\r\n for (i = 0; i < len; i++) {\r\n if (a.charCodeAt(aLastIndex - i) !== b.charCodeAt(bLastIndex - i)) {\r\n return i;\r\n }\r\n }\r\n return len;\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isHighSurrogate(charCode) {\r\n return (0xD800 <= charCode && charCode <= 0xDBFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function isLowSurrogate(charCode) {\r\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\r\n}\r\n/**\r\n * See http://en.wikipedia.org/wiki/Surrogate_pair\r\n */\r\nexport function computeCodePoint(highSurrogate, lowSurrogate) {\r\n return ((highSurrogate - 0xD800) << 10) + (lowSurrogate - 0xDC00) + 0x10000;\r\n}\r\n/**\r\n * get the code point that begins at offset `offset`\r\n */\r\nexport function getNextCodePoint(str, len, offset) {\r\n const charCode = str.charCodeAt(offset);\r\n if (isHighSurrogate(charCode) && offset + 1 < len) {\r\n const nextCharCode = str.charCodeAt(offset + 1);\r\n if (isLowSurrogate(nextCharCode)) {\r\n return computeCodePoint(charCode, nextCharCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\n/**\r\n * get the code point that ends right before offset `offset`\r\n */\r\nfunction getPrevCodePoint(str, offset) {\r\n const charCode = str.charCodeAt(offset - 1);\r\n if (isLowSurrogate(charCode) && offset > 1) {\r\n const prevCharCode = str.charCodeAt(offset - 2);\r\n if (isHighSurrogate(prevCharCode)) {\r\n return computeCodePoint(prevCharCode, charCode);\r\n }\r\n }\r\n return charCode;\r\n}\r\nexport function nextCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const len = str.length;\r\n const initialCodePoint = getNextCodePoint(str, len, offset);\r\n offset += (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset < len) {\r\n const nextCodePoint = getNextCodePoint(str, len, offset);\r\n const nextGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(nextCodePoint);\r\n if (breakBetweenGraphemeBreakType(graphemeBreakType, nextGraphemeBreakType)) {\r\n break;\r\n }\r\n offset += (nextCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = nextGraphemeBreakType;\r\n }\r\n return (offset - initialOffset);\r\n}\r\nexport function prevCharLength(str, offset) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n const initialOffset = offset;\r\n const initialCodePoint = getPrevCodePoint(str, offset);\r\n offset -= (initialCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n let graphemeBreakType = graphemeBreakTree.getGraphemeBreakType(initialCodePoint);\r\n while (offset > 0) {\r\n const prevCodePoint = getPrevCodePoint(str, offset);\r\n const prevGraphemeBreakType = graphemeBreakTree.getGraphemeBreakType(prevCodePoint);\r\n if (breakBetweenGraphemeBreakType(prevGraphemeBreakType, graphemeBreakType)) {\r\n break;\r\n }\r\n offset -= (prevCodePoint >= 65536 /* UNICODE_SUPPLEMENTARY_PLANE_BEGIN */ ? 2 : 1);\r\n graphemeBreakType = prevGraphemeBreakType;\r\n }\r\n return (initialOffset - offset);\r\n}\r\n/**\r\n * A manual decoding of a UTF8 string.\r\n * Use only in environments which do not offer native conversion methods!\r\n */\r\nexport function decodeUTF8(buffer) {\r\n // https://en.wikipedia.org/wiki/UTF-8\r\n const len = buffer.byteLength;\r\n const result = [];\r\n let offset = 0;\r\n while (offset < len) {\r\n const v0 = buffer[offset];\r\n let codePoint;\r\n if (v0 >= 0b11110000 && offset + 3 < len) {\r\n // 4 bytes\r\n codePoint = ((((buffer[offset++] & 0b00000111) << 18) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11100000 && offset + 2 < len) {\r\n // 3 bytes\r\n codePoint = ((((buffer[offset++] & 0b00001111) << 12) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else if (v0 >= 0b11000000 && offset + 1 < len) {\r\n // 2 bytes\r\n codePoint = ((((buffer[offset++] & 0b00011111) << 6) >>> 0)\r\n | (((buffer[offset++] & 0b00111111) << 0) >>> 0));\r\n }\r\n else {\r\n // 1 byte\r\n codePoint = buffer[offset++];\r\n }\r\n if ((codePoint >= 0 && codePoint <= 0xD7FF) || (codePoint >= 0xE000 && codePoint <= 0xFFFF)) {\r\n // Basic Multilingual Plane\r\n result.push(String.fromCharCode(codePoint));\r\n }\r\n else if (codePoint >= 0x010000 && codePoint <= 0x10FFFF) {\r\n // Supplementary Planes\r\n const uPrime = codePoint - 0x10000;\r\n const w1 = 0xD800 + ((uPrime & 0b11111111110000000000) >>> 10);\r\n const w2 = 0xDC00 + ((uPrime & 0b00000000001111111111) >>> 0);\r\n result.push(String.fromCharCode(w1));\r\n result.push(String.fromCharCode(w2));\r\n }\r\n else {\r\n // illegal code point\r\n result.push(String.fromCharCode(0xFFFD));\r\n }\r\n }\r\n return result.join('');\r\n}\r\n/**\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-rtl-test.js\r\n */\r\nconst CONTAINS_RTL = /(?:[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05F4\\u0608\\u060B\\u060D\\u061B-\\u064A\\u066D-\\u066F\\u0671-\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1-\\u07EA\\u07F4\\u07F5\\u07FA-\\u0815\\u081A\\u0824\\u0828\\u0830-\\u0858\\u085E-\\u08BD\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFD3D\\uFD50-\\uFDFC\\uFE70-\\uFEFC]|\\uD802[\\uDC00-\\uDD1B\\uDD20-\\uDE00\\uDE10-\\uDE33\\uDE40-\\uDEE4\\uDEEB-\\uDF35\\uDF40-\\uDFFF]|\\uD803[\\uDC00-\\uDCFF]|\\uD83A[\\uDC00-\\uDCCF\\uDD00-\\uDD43\\uDD50-\\uDFFF]|\\uD83B[\\uDC00-\\uDEBB])/;\r\n/**\r\n * Returns true if `str` contains any Unicode character that is classified as \"R\" or \"AL\".\r\n */\r\nexport function containsRTL(str) {\r\n return CONTAINS_RTL.test(str);\r\n}\r\n/**\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nconst CONTAINS_EMOJI = /(?:[\\u231A\\u231B\\u23F0\\u23F3\\u2600-\\u27BF\\u2B50\\u2B55]|\\uD83C[\\uDDE6-\\uDDFF\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDE4F\\uDE80-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD00-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE82\\uDE90-\\uDE95])/;\r\nexport function containsEmoji(str) {\r\n return CONTAINS_EMOJI.test(str);\r\n}\r\nconst IS_BASIC_ASCII = /^[\\t\\n\\r\\x20-\\x7E]*$/;\r\n/**\r\n * Returns true if `str` contains only basic ASCII characters in the range 32 - 126 (including 32 and 126) or \\n, \\r, \\t\r\n */\r\nexport function isBasicASCII(str) {\r\n return IS_BASIC_ASCII.test(str);\r\n}\r\nexport const UNUSUAL_LINE_TERMINATORS = /[\\u2028\\u2029]/; // LINE SEPARATOR (LS) or PARAGRAPH SEPARATOR (PS)\r\n/**\r\n * Returns true if `str` contains unusual line terminators, like LS or PS\r\n */\r\nexport function containsUnusualLineTerminators(str) {\r\n return UNUSUAL_LINE_TERMINATORS.test(str);\r\n}\r\nexport function containsFullWidthCharacter(str) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n if (isFullWidthCharacter(str.charCodeAt(i))) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nexport function isFullWidthCharacter(charCode) {\r\n // Do a cheap trick to better support wrapping of wide characters, treat them as 2 columns\r\n // http://jrgraphix.net/research/unicode_blocks.php\r\n // 2E80 — 2EFF CJK Radicals Supplement\r\n // 2F00 — 2FDF Kangxi Radicals\r\n // 2FF0 — 2FFF Ideographic Description Characters\r\n // 3000 — 303F CJK Symbols and Punctuation\r\n // 3040 — 309F Hiragana\r\n // 30A0 — 30FF Katakana\r\n // 3100 — 312F Bopomofo\r\n // 3130 — 318F Hangul Compatibility Jamo\r\n // 3190 — 319F Kanbun\r\n // 31A0 — 31BF Bopomofo Extended\r\n // 31F0 — 31FF Katakana Phonetic Extensions\r\n // 3200 — 32FF Enclosed CJK Letters and Months\r\n // 3300 — 33FF CJK Compatibility\r\n // 3400 — 4DBF CJK Unified Ideographs Extension A\r\n // 4DC0 — 4DFF Yijing Hexagram Symbols\r\n // 4E00 — 9FFF CJK Unified Ideographs\r\n // A000 — A48F Yi Syllables\r\n // A490 — A4CF Yi Radicals\r\n // AC00 — D7AF Hangul Syllables\r\n // [IGNORE] D800 — DB7F High Surrogates\r\n // [IGNORE] DB80 — DBFF High Private Use Surrogates\r\n // [IGNORE] DC00 — DFFF Low Surrogates\r\n // [IGNORE] E000 — F8FF Private Use Area\r\n // F900 — FAFF CJK Compatibility Ideographs\r\n // [IGNORE] FB00 — FB4F Alphabetic Presentation Forms\r\n // [IGNORE] FB50 — FDFF Arabic Presentation Forms-A\r\n // [IGNORE] FE00 — FE0F Variation Selectors\r\n // [IGNORE] FE20 — FE2F Combining Half Marks\r\n // [IGNORE] FE30 — FE4F CJK Compatibility Forms\r\n // [IGNORE] FE50 — FE6F Small Form Variants\r\n // [IGNORE] FE70 — FEFF Arabic Presentation Forms-B\r\n // FF00 — FFEF Halfwidth and Fullwidth Forms\r\n // [https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms]\r\n // of which FF01 - FF5E fullwidth ASCII of 21 to 7E\r\n // [IGNORE] and FF65 - FFDC halfwidth of Katakana and Hangul\r\n // [IGNORE] FFF0 — FFFF Specials\r\n charCode = +charCode; // @perf\r\n return ((charCode >= 0x2E80 && charCode <= 0xD7AF)\r\n || (charCode >= 0xF900 && charCode <= 0xFAFF)\r\n || (charCode >= 0xFF01 && charCode <= 0xFF5E));\r\n}\r\n/**\r\n * A fast function (therefore imprecise) to check if code points are emojis.\r\n * Generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-emoji-test.js\r\n */\r\nexport function isEmojiImprecise(x) {\r\n return ((x >= 0x1F1E6 && x <= 0x1F1FF) || (x >= 9728 && x <= 10175) || (x >= 127744 && x <= 128591)\r\n || (x >= 128640 && x <= 128764) || (x >= 128992 && x <= 129003) || (x >= 129280 && x <= 129535)\r\n || (x >= 129648 && x <= 129651) || (x >= 129656 && x <= 129666) || (x >= 129680 && x <= 129685));\r\n}\r\n// -- UTF-8 BOM\r\nexport const UTF8_BOM_CHARACTER = String.fromCharCode(65279 /* UTF8_BOM */);\r\nexport function startsWithUTF8BOM(str) {\r\n return !!(str && str.length > 0 && str.charCodeAt(0) === 65279 /* UTF8_BOM */);\r\n}\r\nexport function containsUppercaseCharacter(target, ignoreEscapedChars = false) {\r\n if (!target) {\r\n return false;\r\n }\r\n if (ignoreEscapedChars) {\r\n target = target.replace(/\\\\./g, '');\r\n }\r\n return target.toLowerCase() !== target;\r\n}\r\n/**\r\n * Produces 'a'-'z', followed by 'A'-'Z'... followed by 'a'-'z', etc.\r\n */\r\nexport function singleLetterHash(n) {\r\n const LETTERS_CNT = (90 /* Z */ - 65 /* A */ + 1);\r\n n = n % (2 * LETTERS_CNT);\r\n if (n < LETTERS_CNT) {\r\n return String.fromCharCode(97 /* a */ + n);\r\n }\r\n return String.fromCharCode(65 /* A */ + n - LETTERS_CNT);\r\n}\r\n//#region Unicode Grapheme Break\r\nexport function getGraphemeBreakType(codePoint) {\r\n const graphemeBreakTree = GraphemeBreakTree.getInstance();\r\n return graphemeBreakTree.getGraphemeBreakType(codePoint);\r\n}\r\nexport function breakBetweenGraphemeBreakType(breakTypeA, breakTypeB) {\r\n // http://www.unicode.org/reports/tr29/#Grapheme_Cluster_Boundary_Rules\r\n // !!! Let's make the common case a bit faster\r\n if (breakTypeA === 0 /* Other */) {\r\n // see https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakTest-13.0.0d10.html#table\r\n return (breakTypeB !== 5 /* Extend */ && breakTypeB !== 7 /* SpacingMark */);\r\n }\r\n // Do not break between a CR and LF. Otherwise, break before and after controls.\r\n // GB3 CR × LF\r\n // GB4 (Control | CR | LF) ÷\r\n // GB5 ÷ (Control | CR | LF)\r\n if (breakTypeA === 2 /* CR */) {\r\n if (breakTypeB === 3 /* LF */) {\r\n return false; // GB3\r\n }\r\n }\r\n if (breakTypeA === 4 /* Control */ || breakTypeA === 2 /* CR */ || breakTypeA === 3 /* LF */) {\r\n return true; // GB4\r\n }\r\n if (breakTypeB === 4 /* Control */ || breakTypeB === 2 /* CR */ || breakTypeB === 3 /* LF */) {\r\n return true; // GB5\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6 L × (L | V | LV | LVT)\r\n // GB7 (LV | V) × (V | T)\r\n // GB8 (LVT | T) × T\r\n if (breakTypeA === 8 /* L */) {\r\n if (breakTypeB === 8 /* L */ || breakTypeB === 9 /* V */ || breakTypeB === 11 /* LV */ || breakTypeB === 12 /* LVT */) {\r\n return false; // GB6\r\n }\r\n }\r\n if (breakTypeA === 11 /* LV */ || breakTypeA === 9 /* V */) {\r\n if (breakTypeB === 9 /* V */ || breakTypeB === 10 /* T */) {\r\n return false; // GB7\r\n }\r\n }\r\n if (breakTypeA === 12 /* LVT */ || breakTypeA === 10 /* T */) {\r\n if (breakTypeB === 10 /* T */) {\r\n return false; // GB8\r\n }\r\n }\r\n // Do not break before extending characters or ZWJ.\r\n // GB9 × (Extend | ZWJ)\r\n if (breakTypeB === 5 /* Extend */ || breakTypeB === 13 /* ZWJ */) {\r\n return false; // GB9\r\n }\r\n // The GB9a and GB9b rules only apply to extended grapheme clusters:\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a × SpacingMark\r\n // GB9b Prepend ×\r\n if (breakTypeB === 7 /* SpacingMark */) {\r\n return false; // GB9a\r\n }\r\n if (breakTypeA === 1 /* Prepend */) {\r\n return false; // GB9b\r\n }\r\n // Do not break within emoji modifier sequences or emoji zwj sequences.\r\n // GB11 \\p{Extended_Pictographic} Extend* ZWJ × \\p{Extended_Pictographic}\r\n if (breakTypeA === 13 /* ZWJ */ && breakTypeB === 14 /* Extended_Pictographic */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB11\r\n }\r\n // GB12 sot (RI RI)* RI × RI\r\n // GB13 [^RI] (RI RI)* RI × RI\r\n if (breakTypeA === 6 /* Regional_Indicator */ && breakTypeB === 6 /* Regional_Indicator */) {\r\n // Note: we are not implementing the rule entirely here to avoid introducing states\r\n return false; // GB12 & GB13\r\n }\r\n // GB999 Any ÷ Any\r\n return true;\r\n}\r\nclass GraphemeBreakTree {\r\n constructor() {\r\n this._data = getGraphemeBreakRawData();\r\n }\r\n static getInstance() {\r\n if (!GraphemeBreakTree._INSTANCE) {\r\n GraphemeBreakTree._INSTANCE = new GraphemeBreakTree();\r\n }\r\n return GraphemeBreakTree._INSTANCE;\r\n }\r\n getGraphemeBreakType(codePoint) {\r\n // !!! Let's make 7bit ASCII a bit faster: 0..31\r\n if (codePoint < 32) {\r\n if (codePoint === 10 /* LineFeed */) {\r\n return 3 /* LF */;\r\n }\r\n if (codePoint === 13 /* CarriageReturn */) {\r\n return 2 /* CR */;\r\n }\r\n return 4 /* Control */;\r\n }\r\n // !!! Let's make 7bit ASCII a bit faster: 32..126\r\n if (codePoint < 127) {\r\n return 0 /* Other */;\r\n }\r\n const data = this._data;\r\n const nodeCount = data.length / 3;\r\n let nodeIndex = 1;\r\n while (nodeIndex <= nodeCount) {\r\n if (codePoint < data[3 * nodeIndex]) {\r\n // go left\r\n nodeIndex = 2 * nodeIndex;\r\n }\r\n else if (codePoint > data[3 * nodeIndex + 1]) {\r\n // go right\r\n nodeIndex = 2 * nodeIndex + 1;\r\n }\r\n else {\r\n // hit\r\n return data[3 * nodeIndex + 2];\r\n }\r\n }\r\n return 0 /* Other */;\r\n }\r\n}\r\nGraphemeBreakTree._INSTANCE = null;\r\nfunction getGraphemeBreakRawData() {\r\n // generated using https://github.com/alexandrudima/unicode-utils/blob/master/generate-grapheme-break.js\r\n return JSON.parse('[0,0,0,51592,51592,11,44424,44424,11,72251,72254,5,7150,7150,7,48008,48008,11,55176,55176,11,128420,128420,14,3276,3277,5,9979,9980,14,46216,46216,11,49800,49800,11,53384,53384,11,70726,70726,5,122915,122916,5,129320,129327,14,2558,2558,5,5906,5908,5,9762,9763,14,43360,43388,8,45320,45320,11,47112,47112,11,48904,48904,11,50696,50696,11,52488,52488,11,54280,54280,11,70082,70083,1,71350,71350,7,73111,73111,5,127892,127893,14,128726,128727,14,129473,129474,14,2027,2035,5,2901,2902,5,3784,3789,5,6754,6754,5,8418,8420,5,9877,9877,14,11088,11088,14,44008,44008,5,44872,44872,11,45768,45768,11,46664,46664,11,47560,47560,11,48456,48456,11,49352,49352,11,50248,50248,11,51144,51144,11,52040,52040,11,52936,52936,11,53832,53832,11,54728,54728,11,69811,69814,5,70459,70460,5,71096,71099,7,71998,71998,5,72874,72880,5,119149,119149,7,127374,127374,14,128335,128335,14,128482,128482,14,128765,128767,14,129399,129400,14,129680,129685,14,1476,1477,5,2377,2380,7,2759,2760,5,3137,3140,7,3458,3459,7,4153,4154,5,6432,6434,5,6978,6978,5,7675,7679,5,9723,9726,14,9823,9823,14,9919,9923,14,10035,10036,14,42736,42737,5,43596,43596,5,44200,44200,11,44648,44648,11,45096,45096,11,45544,45544,11,45992,45992,11,46440,46440,11,46888,46888,11,47336,47336,11,47784,47784,11,48232,48232,11,48680,48680,11,49128,49128,11,49576,49576,11,50024,50024,11,50472,50472,11,50920,50920,11,51368,51368,11,51816,51816,11,52264,52264,11,52712,52712,11,53160,53160,11,53608,53608,11,54056,54056,11,54504,54504,11,54952,54952,11,68108,68111,5,69933,69940,5,70197,70197,7,70498,70499,7,70845,70845,5,71229,71229,5,71727,71735,5,72154,72155,5,72344,72345,5,73023,73029,5,94095,94098,5,121403,121452,5,126981,127182,14,127538,127546,14,127990,127990,14,128391,128391,14,128445,128449,14,128500,128505,14,128752,128752,14,129160,129167,14,129356,129356,14,129432,129442,14,129648,129651,14,129751,131069,14,173,173,4,1757,1757,1,2274,2274,1,2494,2494,5,2641,2641,5,2876,2876,5,3014,3016,7,3262,3262,7,3393,3396,5,3570,3571,7,3968,3972,5,4228,4228,7,6086,6086,5,6679,6680,5,6912,6915,5,7080,7081,5,7380,7392,5,8252,8252,14,9096,9096,14,9748,9749,14,9784,9786,14,9833,9850,14,9890,9894,14,9938,9938,14,9999,9999,14,10085,10087,14,12349,12349,14,43136,43137,7,43454,43456,7,43755,43755,7,44088,44088,11,44312,44312,11,44536,44536,11,44760,44760,11,44984,44984,11,45208,45208,11,45432,45432,11,45656,45656,11,45880,45880,11,46104,46104,11,46328,46328,11,46552,46552,11,46776,46776,11,47000,47000,11,47224,47224,11,47448,47448,11,47672,47672,11,47896,47896,11,48120,48120,11,48344,48344,11,48568,48568,11,48792,48792,11,49016,49016,11,49240,49240,11,49464,49464,11,49688,49688,11,49912,49912,11,50136,50136,11,50360,50360,11,50584,50584,11,50808,50808,11,51032,51032,11,51256,51256,11,51480,51480,11,51704,51704,11,51928,51928,11,52152,52152,11,52376,52376,11,52600,52600,11,52824,52824,11,53048,53048,11,53272,53272,11,53496,53496,11,53720,53720,11,53944,53944,11,54168,54168,11,54392,54392,11,54616,54616,11,54840,54840,11,55064,55064,11,65438,65439,5,69633,69633,5,69837,69837,1,70018,70018,7,70188,70190,7,70368,70370,7,70465,70468,7,70712,70719,5,70835,70840,5,70850,70851,5,71132,71133,5,71340,71340,7,71458,71461,5,71985,71989,7,72002,72002,7,72193,72202,5,72281,72283,5,72766,72766,7,72885,72886,5,73104,73105,5,92912,92916,5,113824,113827,4,119173,119179,5,121505,121519,5,125136,125142,5,127279,127279,14,127489,127490,14,127570,127743,14,127900,127901,14,128254,128254,14,128369,128370,14,128400,128400,14,128425,128432,14,128468,128475,14,128489,128494,14,128715,128720,14,128745,128745,14,128759,128760,14,129004,129023,14,129296,129304,14,129340,129342,14,129388,129392,14,129404,129407,14,129454,129455,14,129485,129487,14,129659,129663,14,129719,129727,14,917536,917631,5,13,13,2,1160,1161,5,1564,1564,4,1807,1807,1,2085,2087,5,2363,2363,7,2402,2403,5,2507,2508,7,2622,2624,7,2691,2691,7,2786,2787,5,2881,2884,5,3006,3006,5,3072,3072,5,3170,3171,5,3267,3268,7,3330,3331,7,3406,3406,1,3538,3540,5,3655,3662,5,3897,3897,5,4038,4038,5,4184,4185,5,4352,4447,8,6068,6069,5,6155,6157,5,6448,6449,7,6742,6742,5,6783,6783,5,6966,6970,5,7042,7042,7,7143,7143,7,7212,7219,5,7412,7412,5,8206,8207,4,8294,8303,4,8596,8601,14,9410,9410,14,9742,9742,14,9757,9757,14,9770,9770,14,9794,9794,14,9828,9828,14,9855,9855,14,9882,9882,14,9900,9903,14,9929,9933,14,9963,9967,14,9987,9988,14,10006,10006,14,10062,10062,14,10175,10175,14,11744,11775,5,42607,42607,5,43043,43044,7,43263,43263,5,43444,43445,7,43569,43570,5,43698,43700,5,43766,43766,5,44032,44032,11,44144,44144,11,44256,44256,11,44368,44368,11,44480,44480,11,44592,44592,11,44704,44704,11,44816,44816,11,44928,44928,11,45040,45040,11,45152,45152,11,45264,45264,11,45376,45376,11,45488,45488,11,45600,45600,11,45712,45712,11,45824,45824,11,45936,45936,11,46048,46048,11,46160,46160,11,46272,46272,11,46384,46384,11,46496,46496,11,46608,46608,11,46720,46720,11,46832,46832,11,46944,46944,11,47056,47056,11,47168,47168,11,47280,47280,11,47392,47392,11,47504,47504,11,47616,47616,11,47728,47728,11,47840,47840,11,47952,47952,11,48064,48064,11,48176,48176,11,48288,48288,11,48400,48400,11,48512,48512,11,48624,48624,11,48736,48736,11,48848,48848,11,48960,48960,11,49072,49072,11,49184,49184,11,49296,49296,11,49408,49408,11,49520,49520,11,49632,49632,11,49744,49744,11,49856,49856,11,49968,49968,11,50080,50080,11,50192,50192,11,50304,50304,11,50416,50416,11,50528,50528,11,50640,50640,11,50752,50752,11,50864,50864,11,50976,50976,11,51088,51088,11,51200,51200,11,51312,51312,11,51424,51424,11,51536,51536,11,51648,51648,11,51760,51760,11,51872,51872,11,51984,51984,11,52096,52096,11,52208,52208,11,52320,52320,11,52432,52432,11,52544,52544,11,52656,52656,11,52768,52768,11,52880,52880,11,52992,52992,11,53104,53104,11,53216,53216,11,53328,53328,11,53440,53440,11,53552,53552,11,53664,53664,11,53776,53776,11,53888,53888,11,54000,54000,11,54112,54112,11,54224,54224,11,54336,54336,11,54448,54448,11,54560,54560,11,54672,54672,11,54784,54784,11,54896,54896,11,55008,55008,11,55120,55120,11,64286,64286,5,66272,66272,5,68900,68903,5,69762,69762,7,69817,69818,5,69927,69931,5,70003,70003,5,70070,70078,5,70094,70094,7,70194,70195,7,70206,70206,5,70400,70401,5,70463,70463,7,70475,70477,7,70512,70516,5,70722,70724,5,70832,70832,5,70842,70842,5,70847,70848,5,71088,71089,7,71102,71102,7,71219,71226,5,71231,71232,5,71342,71343,7,71453,71455,5,71463,71467,5,71737,71738,5,71995,71996,5,72000,72000,7,72145,72147,7,72160,72160,5,72249,72249,7,72273,72278,5,72330,72342,5,72752,72758,5,72850,72871,5,72882,72883,5,73018,73018,5,73031,73031,5,73109,73109,5,73461,73462,7,94031,94031,5,94192,94193,7,119142,119142,7,119155,119162,4,119362,119364,5,121476,121476,5,122888,122904,5,123184,123190,5,126976,126979,14,127184,127231,14,127344,127345,14,127405,127461,14,127514,127514,14,127561,127567,14,127778,127779,14,127896,127896,14,127985,127986,14,127995,127999,5,128326,128328,14,128360,128366,14,128378,128378,14,128394,128397,14,128405,128406,14,128422,128423,14,128435,128443,14,128453,128464,14,128479,128480,14,128484,128487,14,128496,128498,14,128640,128709,14,128723,128724,14,128736,128741,14,128747,128748,14,128755,128755,14,128762,128762,14,128981,128991,14,129096,129103,14,129292,129292,14,129311,129311,14,129329,129330,14,129344,129349,14,129360,129374,14,129394,129394,14,129402,129402,14,129413,129425,14,129445,129450,14,129466,129471,14,129483,129483,14,129511,129535,14,129653,129655,14,129667,129670,14,129705,129711,14,129731,129743,14,917505,917505,4,917760,917999,5,10,10,3,127,159,4,768,879,5,1471,1471,5,1536,1541,1,1648,1648,5,1767,1768,5,1840,1866,5,2070,2073,5,2137,2139,5,2307,2307,7,2366,2368,7,2382,2383,7,2434,2435,7,2497,2500,5,2519,2519,5,2563,2563,7,2631,2632,5,2677,2677,5,2750,2752,7,2763,2764,7,2817,2817,5,2879,2879,5,2891,2892,7,2914,2915,5,3008,3008,5,3021,3021,5,3076,3076,5,3146,3149,5,3202,3203,7,3264,3265,7,3271,3272,7,3298,3299,5,3390,3390,5,3402,3404,7,3426,3427,5,3535,3535,5,3544,3550,7,3635,3635,7,3763,3763,7,3893,3893,5,3953,3966,5,3981,3991,5,4145,4145,7,4157,4158,5,4209,4212,5,4237,4237,5,4520,4607,10,5970,5971,5,6071,6077,5,6089,6099,5,6277,6278,5,6439,6440,5,6451,6456,7,6683,6683,5,6744,6750,5,6765,6770,7,6846,6846,5,6964,6964,5,6972,6972,5,7019,7027,5,7074,7077,5,7083,7085,5,7146,7148,7,7154,7155,7,7222,7223,5,7394,7400,5,7416,7417,5,8204,8204,5,8233,8233,4,8288,8292,4,8413,8416,5,8482,8482,14,8986,8987,14,9193,9203,14,9654,9654,14,9733,9733,14,9745,9745,14,9752,9752,14,9760,9760,14,9766,9766,14,9774,9775,14,9792,9792,14,9800,9811,14,9825,9826,14,9831,9831,14,9852,9853,14,9872,9873,14,9880,9880,14,9885,9887,14,9896,9897,14,9906,9916,14,9926,9927,14,9936,9936,14,9941,9960,14,9974,9974,14,9982,9985,14,9992,9997,14,10002,10002,14,10017,10017,14,10055,10055,14,10071,10071,14,10145,10145,14,11013,11015,14,11503,11505,5,12334,12335,5,12951,12951,14,42612,42621,5,43014,43014,5,43047,43047,7,43204,43205,5,43335,43345,5,43395,43395,7,43450,43451,7,43561,43566,5,43573,43574,5,43644,43644,5,43710,43711,5,43758,43759,7,44005,44005,5,44012,44012,7,44060,44060,11,44116,44116,11,44172,44172,11,44228,44228,11,44284,44284,11,44340,44340,11,44396,44396,11,44452,44452,11,44508,44508,11,44564,44564,11,44620,44620,11,44676,44676,11,44732,44732,11,44788,44788,11,44844,44844,11,44900,44900,11,44956,44956,11,45012,45012,11,45068,45068,11,45124,45124,11,45180,45180,11,45236,45236,11,45292,45292,11,45348,45348,11,45404,45404,11,45460,45460,11,45516,45516,11,45572,45572,11,45628,45628,11,45684,45684,11,45740,45740,11,45796,45796,11,45852,45852,11,45908,45908,11,45964,45964,11,46020,46020,11,46076,46076,11,46132,46132,11,46188,46188,11,46244,46244,11,46300,46300,11,46356,46356,11,46412,46412,11,46468,46468,11,46524,46524,11,46580,46580,11,46636,46636,11,46692,46692,11,46748,46748,11,46804,46804,11,46860,46860,11,46916,46916,11,46972,46972,11,47028,47028,11,47084,47084,11,47140,47140,11,47196,47196,11,47252,47252,11,47308,47308,11,47364,47364,11,47420,47420,11,47476,47476,11,47532,47532,11,47588,47588,11,47644,47644,11,47700,47700,11,47756,47756,11,47812,47812,11,47868,47868,11,47924,47924,11,47980,47980,11,48036,48036,11,48092,48092,11,48148,48148,11,48204,48204,11,48260,48260,11,48316,48316,11,48372,48372,11,48428,48428,11,48484,48484,11,48540,48540,11,48596,48596,11,48652,48652,11,48708,48708,11,48764,48764,11,48820,48820,11,48876,48876,11,48932,48932,11,48988,48988,11,49044,49044,11,49100,49100,11,49156,49156,11,49212,49212,11,49268,49268,11,49324,49324,11,49380,49380,11,49436,49436,11,49492,49492,11,49548,49548,11,49604,49604,11,49660,49660,11,49716,49716,11,49772,49772,11,49828,49828,11,49884,49884,11,49940,49940,11,49996,49996,11,50052,50052,11,50108,50108,11,50164,50164,11,50220,50220,11,50276,50276,11,50332,50332,11,50388,50388,11,50444,50444,11,50500,50500,11,50556,50556,11,50612,50612,11,50668,50668,11,50724,50724,11,50780,50780,11,50836,50836,11,50892,50892,11,50948,50948,11,51004,51004,11,51060,51060,11,51116,51116,11,51172,51172,11,51228,51228,11,51284,51284,11,51340,51340,11,51396,51396,11,51452,51452,11,51508,51508,11,51564,51564,11,51620,51620,11,51676,51676,11,51732,51732,11,51788,51788,11,51844,51844,11,51900,51900,11,51956,51956,11,52012,52012,11,52068,52068,11,52124,52124,11,52180,52180,11,52236,52236,11,52292,52292,11,52348,52348,11,52404,52404,11,52460,52460,11,52516,52516,11,52572,52572,11,52628,52628,11,52684,52684,11,52740,52740,11,52796,52796,11,52852,52852,11,52908,52908,11,52964,52964,11,53020,53020,11,53076,53076,11,53132,53132,11,53188,53188,11,53244,53244,11,53300,53300,11,53356,53356,11,53412,53412,11,53468,53468,11,53524,53524,11,53580,53580,11,53636,53636,11,53692,53692,11,53748,53748,11,53804,53804,11,53860,53860,11,53916,53916,11,53972,53972,11,54028,54028,11,54084,54084,11,54140,54140,11,54196,54196,11,54252,54252,11,54308,54308,11,54364,54364,11,54420,54420,11,54476,54476,11,54532,54532,11,54588,54588,11,54644,54644,11,54700,54700,11,54756,54756,11,54812,54812,11,54868,54868,11,54924,54924,11,54980,54980,11,55036,55036,11,55092,55092,11,55148,55148,11,55216,55238,9,65056,65071,5,65529,65531,4,68097,68099,5,68159,68159,5,69446,69456,5,69688,69702,5,69808,69810,7,69815,69816,7,69821,69821,1,69888,69890,5,69932,69932,7,69957,69958,7,70016,70017,5,70067,70069,7,70079,70080,7,70089,70092,5,70095,70095,5,70191,70193,5,70196,70196,5,70198,70199,5,70367,70367,5,70371,70378,5,70402,70403,7,70462,70462,5,70464,70464,5,70471,70472,7,70487,70487,5,70502,70508,5,70709,70711,7,70720,70721,7,70725,70725,7,70750,70750,5,70833,70834,7,70841,70841,7,70843,70844,7,70846,70846,7,70849,70849,7,71087,71087,5,71090,71093,5,71100,71101,5,71103,71104,5,71216,71218,7,71227,71228,7,71230,71230,7,71339,71339,5,71341,71341,5,71344,71349,5,71351,71351,5,71456,71457,7,71462,71462,7,71724,71726,7,71736,71736,7,71984,71984,5,71991,71992,7,71997,71997,7,71999,71999,1,72001,72001,1,72003,72003,5,72148,72151,5,72156,72159,7,72164,72164,7,72243,72248,5,72250,72250,1,72263,72263,5,72279,72280,7,72324,72329,1,72343,72343,7,72751,72751,7,72760,72765,5,72767,72767,5,72873,72873,7,72881,72881,7,72884,72884,7,73009,73014,5,73020,73021,5,73030,73030,1,73098,73102,7,73107,73108,7,73110,73110,7,73459,73460,5,78896,78904,4,92976,92982,5,94033,94087,7,94180,94180,5,113821,113822,5,119141,119141,5,119143,119145,5,119150,119154,5,119163,119170,5,119210,119213,5,121344,121398,5,121461,121461,5,121499,121503,5,122880,122886,5,122907,122913,5,122918,122922,5,123628,123631,5,125252,125258,5,126980,126980,14,127183,127183,14,127245,127247,14,127340,127343,14,127358,127359,14,127377,127386,14,127462,127487,6,127491,127503,14,127535,127535,14,127548,127551,14,127568,127569,14,127744,127777,14,127780,127891,14,127894,127895,14,127897,127899,14,127902,127984,14,127987,127989,14,127991,127994,14,128000,128253,14,128255,128317,14,128329,128334,14,128336,128359,14,128367,128368,14,128371,128377,14,128379,128390,14,128392,128393,14,128398,128399,14,128401,128404,14,128407,128419,14,128421,128421,14,128424,128424,14,128433,128434,14,128444,128444,14,128450,128452,14,128465,128467,14,128476,128478,14,128481,128481,14,128483,128483,14,128488,128488,14,128495,128495,14,128499,128499,14,128506,128591,14,128710,128714,14,128721,128722,14,128725,128725,14,128728,128735,14,128742,128744,14,128746,128746,14,128749,128751,14,128753,128754,14,128756,128758,14,128761,128761,14,128763,128764,14,128884,128895,14,128992,129003,14,129036,129039,14,129114,129119,14,129198,129279,14,129293,129295,14,129305,129310,14,129312,129319,14,129328,129328,14,129331,129338,14,129343,129343,14,129351,129355,14,129357,129359,14,129375,129387,14,129393,129393,14,129395,129398,14,129401,129401,14,129403,129403,14,129408,129412,14,129426,129431,14,129443,129444,14,129451,129453,14,129456,129465,14,129472,129472,14,129475,129482,14,129484,129484,14,129488,129510,14,129536,129647,14,129652,129652,14,129656,129658,14,129664,129666,14,129671,129679,14,129686,129704,14,129712,129718,14,129728,129730,14,129744,129750,14,917504,917504,4,917506,917535,4,917632,917759,4,918000,921599,4,0,9,4,11,12,4,14,31,4,169,169,14,174,174,14,1155,1159,5,1425,1469,5,1473,1474,5,1479,1479,5,1552,1562,5,1611,1631,5,1750,1756,5,1759,1764,5,1770,1773,5,1809,1809,5,1958,1968,5,2045,2045,5,2075,2083,5,2089,2093,5,2259,2273,5,2275,2306,5,2362,2362,5,2364,2364,5,2369,2376,5,2381,2381,5,2385,2391,5,2433,2433,5,2492,2492,5,2495,2496,7,2503,2504,7,2509,2509,5,2530,2531,5,2561,2562,5,2620,2620,5,2625,2626,5,2635,2637,5,2672,2673,5,2689,2690,5,2748,2748,5,2753,2757,5,2761,2761,7,2765,2765,5,2810,2815,5,2818,2819,7,2878,2878,5,2880,2880,7,2887,2888,7,2893,2893,5,2903,2903,5,2946,2946,5,3007,3007,7,3009,3010,7,3018,3020,7,3031,3031,5,3073,3075,7,3134,3136,5,3142,3144,5,3157,3158,5,3201,3201,5,3260,3260,5,3263,3263,5,3266,3266,5,3270,3270,5,3274,3275,7,3285,3286,5,3328,3329,5,3387,3388,5,3391,3392,7,3398,3400,7,3405,3405,5,3415,3415,5,3457,3457,5,3530,3530,5,3536,3537,7,3542,3542,5,3551,3551,5,3633,3633,5,3636,3642,5,3761,3761,5,3764,3772,5,3864,3865,5,3895,3895,5,3902,3903,7,3967,3967,7,3974,3975,5,3993,4028,5,4141,4144,5,4146,4151,5,4155,4156,7,4182,4183,7,4190,4192,5,4226,4226,5,4229,4230,5,4253,4253,5,4448,4519,9,4957,4959,5,5938,5940,5,6002,6003,5,6070,6070,7,6078,6085,7,6087,6088,7,6109,6109,5,6158,6158,4,6313,6313,5,6435,6438,7,6441,6443,7,6450,6450,5,6457,6459,5,6681,6682,7,6741,6741,7,6743,6743,7,6752,6752,5,6757,6764,5,6771,6780,5,6832,6845,5,6847,6848,5,6916,6916,7,6965,6965,5,6971,6971,7,6973,6977,7,6979,6980,7,7040,7041,5,7073,7073,7,7078,7079,7,7082,7082,7,7142,7142,5,7144,7145,5,7149,7149,5,7151,7153,5,7204,7211,7,7220,7221,7,7376,7378,5,7393,7393,7,7405,7405,5,7415,7415,7,7616,7673,5,8203,8203,4,8205,8205,13,8232,8232,4,8234,8238,4,8265,8265,14,8293,8293,4,8400,8412,5,8417,8417,5,8421,8432,5,8505,8505,14,8617,8618,14,9000,9000,14,9167,9167,14,9208,9210,14,9642,9643,14,9664,9664,14,9728,9732,14,9735,9741,14,9743,9744,14,9746,9746,14,9750,9751,14,9753,9756,14,9758,9759,14,9761,9761,14,9764,9765,14,9767,9769,14,9771,9773,14,9776,9783,14,9787,9791,14,9793,9793,14,9795,9799,14,9812,9822,14,9824,9824,14,9827,9827,14,9829,9830,14,9832,9832,14,9851,9851,14,9854,9854,14,9856,9861,14,9874,9876,14,9878,9879,14,9881,9881,14,9883,9884,14,9888,9889,14,9895,9895,14,9898,9899,14,9904,9905,14,9917,9918,14,9924,9925,14,9928,9928,14,9934,9935,14,9937,9937,14,9939,9940,14,9961,9962,14,9968,9973,14,9975,9978,14,9981,9981,14,9986,9986,14,9989,9989,14,9998,9998,14,10000,10001,14,10004,10004,14,10013,10013,14,10024,10024,14,10052,10052,14,10060,10060,14,10067,10069,14,10083,10084,14,10133,10135,14,10160,10160,14,10548,10549,14,11035,11036,14,11093,11093,14,11647,11647,5,12330,12333,5,12336,12336,14,12441,12442,5,12953,12953,14,42608,42610,5,42654,42655,5,43010,43010,5,43019,43019,5,43045,43046,5,43052,43052,5,43188,43203,7,43232,43249,5,43302,43309,5,43346,43347,7,43392,43394,5,43443,43443,5,43446,43449,5,43452,43453,5,43493,43493,5,43567,43568,7,43571,43572,7,43587,43587,5,43597,43597,7,43696,43696,5,43703,43704,5,43713,43713,5,43756,43757,5,43765,43765,7,44003,44004,7,44006,44007,7,44009,44010,7,44013,44013,5,44033,44059,12,44061,44087,12,44089,44115,12,44117,44143,12,44145,44171,12,44173,44199,12,44201,44227,12,44229,44255,12,44257,44283,12,44285,44311,12,44313,44339,12,44341,44367,12,44369,44395,12,44397,44423,12,44425,44451,12,44453,44479,12,44481,44507,12,44509,44535,12,44537,44563,12,44565,44591,12,44593,44619,12,44621,44647,12,44649,44675,12,44677,44703,12,44705,44731,12,44733,44759,12,44761,44787,12,44789,44815,12,44817,44843,12,44845,44871,12,44873,44899,12,44901,44927,12,44929,44955,12,44957,44983,12,44985,45011,12,45013,45039,12,45041,45067,12,45069,45095,12,45097,45123,12,45125,45151,12,45153,45179,12,45181,45207,12,45209,45235,12,45237,45263,12,45265,45291,12,45293,45319,12,45321,45347,12,45349,45375,12,45377,45403,12,45405,45431,12,45433,45459,12,45461,45487,12,45489,45515,12,45517,45543,12,45545,45571,12,45573,45599,12,45601,45627,12,45629,45655,12,45657,45683,12,45685,45711,12,45713,45739,12,45741,45767,12,45769,45795,12,45797,45823,12,45825,45851,12,45853,45879,12,45881,45907,12,45909,45935,12,45937,45963,12,45965,45991,12,45993,46019,12,46021,46047,12,46049,46075,12,46077,46103,12,46105,46131,12,46133,46159,12,46161,46187,12,46189,46215,12,46217,46243,12,46245,46271,12,46273,46299,12,46301,46327,12,46329,46355,12,46357,46383,12,46385,46411,12,46413,46439,12,46441,46467,12,46469,46495,12,46497,46523,12,46525,46551,12,46553,46579,12,46581,46607,12,46609,46635,12,46637,46663,12,46665,46691,12,46693,46719,12,46721,46747,12,46749,46775,12,46777,46803,12,46805,46831,12,46833,46859,12,46861,46887,12,46889,46915,12,46917,46943,12,46945,46971,12,46973,46999,12,47001,47027,12,47029,47055,12,47057,47083,12,47085,47111,12,47113,47139,12,47141,47167,12,47169,47195,12,47197,47223,12,47225,47251,12,47253,47279,12,47281,47307,12,47309,47335,12,47337,47363,12,47365,47391,12,47393,47419,12,47421,47447,12,47449,47475,12,47477,47503,12,47505,47531,12,47533,47559,12,47561,47587,12,47589,47615,12,47617,47643,12,47645,47671,12,47673,47699,12,47701,47727,12,47729,47755,12,47757,47783,12,47785,47811,12,47813,47839,12,47841,47867,12,47869,47895,12,47897,47923,12,47925,47951,12,47953,47979,12,47981,48007,12,48009,48035,12,48037,48063,12,48065,48091,12,48093,48119,12,48121,48147,12,48149,48175,12,48177,48203,12,48205,48231,12,48233,48259,12,48261,48287,12,48289,48315,12,48317,48343,12,48345,48371,12,48373,48399,12,48401,48427,12,48429,48455,12,48457,48483,12,48485,48511,12,48513,48539,12,48541,48567,12,48569,48595,12,48597,48623,12,48625,48651,12,48653,48679,12,48681,48707,12,48709,48735,12,48737,48763,12,48765,48791,12,48793,48819,12,48821,48847,12,48849,48875,12,48877,48903,12,48905,48931,12,48933,48959,12,48961,48987,12,48989,49015,12,49017,49043,12,49045,49071,12,49073,49099,12,49101,49127,12,49129,49155,12,49157,49183,12,49185,49211,12,49213,49239,12,49241,49267,12,49269,49295,12,49297,49323,12,49325,49351,12,49353,49379,12,49381,49407,12,49409,49435,12,49437,49463,12,49465,49491,12,49493,49519,12,49521,49547,12,49549,49575,12,49577,49603,12,49605,49631,12,49633,49659,12,49661,49687,12,49689,49715,12,49717,49743,12,49745,49771,12,49773,49799,12,49801,49827,12,49829,49855,12,49857,49883,12,49885,49911,12,49913,49939,12,49941,49967,12,49969,49995,12,49997,50023,12,50025,50051,12,50053,50079,12,50081,50107,12,50109,50135,12,50137,50163,12,50165,50191,12,50193,50219,12,50221,50247,12,50249,50275,12,50277,50303,12,50305,50331,12,50333,50359,12,50361,50387,12,50389,50415,12,50417,50443,12,50445,50471,12,50473,50499,12,50501,50527,12,50529,50555,12,50557,50583,12,50585,50611,12,50613,50639,12,50641,50667,12,50669,50695,12,50697,50723,12,50725,50751,12,50753,50779,12,50781,50807,12,50809,50835,12,50837,50863,12,50865,50891,12,50893,50919,12,50921,50947,12,50949,50975,12,50977,51003,12,51005,51031,12,51033,51059,12,51061,51087,12,51089,51115,12,51117,51143,12,51145,51171,12,51173,51199,12,51201,51227,12,51229,51255,12,51257,51283,12,51285,51311,12,51313,51339,12,51341,51367,12,51369,51395,12,51397,51423,12,51425,51451,12,51453,51479,12,51481,51507,12,51509,51535,12,51537,51563,12,51565,51591,12,51593,51619,12,51621,51647,12,51649,51675,12,51677,51703,12,51705,51731,12,51733,51759,12,51761,51787,12,51789,51815,12,51817,51843,12,51845,51871,12,51873,51899,12,51901,51927,12,51929,51955,12,51957,51983,12,51985,52011,12,52013,52039,12,52041,52067,12,52069,52095,12,52097,52123,12,52125,52151,12,52153,52179,12,52181,52207,12,52209,52235,12,52237,52263,12,52265,52291,12,52293,52319,12,52321,52347,12,52349,52375,12,52377,52403,12,52405,52431,12,52433,52459,12,52461,52487,12,52489,52515,12,52517,52543,12,52545,52571,12,52573,52599,12,52601,52627,12,52629,52655,12,52657,52683,12,52685,52711,12,52713,52739,12,52741,52767,12,52769,52795,12,52797,52823,12,52825,52851,12,52853,52879,12,52881,52907,12,52909,52935,12,52937,52963,12,52965,52991,12,52993,53019,12,53021,53047,12,53049,53075,12,53077,53103,12,53105,53131,12,53133,53159,12,53161,53187,12,53189,53215,12,53217,53243,12,53245,53271,12,53273,53299,12,53301,53327,12,53329,53355,12,53357,53383,12,53385,53411,12,53413,53439,12,53441,53467,12,53469,53495,12,53497,53523,12,53525,53551,12,53553,53579,12,53581,53607,12,53609,53635,12,53637,53663,12,53665,53691,12,53693,53719,12,53721,53747,12,53749,53775,12,53777,53803,12,53805,53831,12,53833,53859,12,53861,53887,12,53889,53915,12,53917,53943,12,53945,53971,12,53973,53999,12,54001,54027,12,54029,54055,12,54057,54083,12,54085,54111,12,54113,54139,12,54141,54167,12,54169,54195,12,54197,54223,12,54225,54251,12,54253,54279,12,54281,54307,12,54309,54335,12,54337,54363,12,54365,54391,12,54393,54419,12,54421,54447,12,54449,54475,12,54477,54503,12,54505,54531,12,54533,54559,12,54561,54587,12,54589,54615,12,54617,54643,12,54645,54671,12,54673,54699,12,54701,54727,12,54729,54755,12,54757,54783,12,54785,54811,12,54813,54839,12,54841,54867,12,54869,54895,12,54897,54923,12,54925,54951,12,54953,54979,12,54981,55007,12,55009,55035,12,55037,55063,12,55065,55091,12,55093,55119,12,55121,55147,12,55149,55175,12,55177,55203,12,55243,55291,10,65024,65039,5,65279,65279,4,65520,65528,4,66045,66045,5,66422,66426,5,68101,68102,5,68152,68154,5,68325,68326,5,69291,69292,5,69632,69632,7,69634,69634,7,69759,69761,5]');\r\n}\r\n//#endregion\r\n","/**\r\n * @returns whether the provided parameter is a JavaScript Array or not.\r\n */\r\nexport function isArray(array) {\r\n return Array.isArray(array);\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript String or not.\r\n */\r\nexport function isString(str) {\r\n return (typeof str === 'string');\r\n}\r\n/**\r\n *\r\n * @returns whether the provided parameter is of type `object` but **not**\r\n *\t`null`, an `array`, a `regexp`, nor a `date`.\r\n */\r\nexport function isObject(obj) {\r\n // The method can't do a type cast since there are type (like strings) which\r\n // are subclasses of any put not positvely matched by the function. Hence type\r\n // narrowing results in wrong results.\r\n return typeof obj === 'object'\r\n && obj !== null\r\n && !Array.isArray(obj)\r\n && !(obj instanceof RegExp)\r\n && !(obj instanceof Date);\r\n}\r\n/**\r\n * In **contrast** to just checking `typeof` this will return `false` for `NaN`.\r\n * @returns whether the provided parameter is a JavaScript Number or not.\r\n */\r\nexport function isNumber(obj) {\r\n return (typeof obj === 'number' && !isNaN(obj));\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Boolean or not.\r\n */\r\nexport function isBoolean(obj) {\r\n return (obj === true || obj === false);\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined.\r\n */\r\nexport function isUndefined(obj) {\r\n return (typeof obj === 'undefined');\r\n}\r\n/**\r\n * @returns whether the provided parameter is undefined or null.\r\n */\r\nexport function isUndefinedOrNull(obj) {\r\n return (isUndefined(obj) || obj === null);\r\n}\r\nexport function assertType(condition, type) {\r\n if (!condition) {\r\n throw new Error(type ? `Unexpected type, expected '${type}'` : 'Unexpected type');\r\n }\r\n}\r\n/**\r\n * Asserts that the argument passed in is neither undefined nor null.\r\n */\r\nexport function assertIsDefined(arg) {\r\n if (isUndefinedOrNull(arg)) {\r\n throw new Error('Assertion Failed: argument is undefined or null');\r\n }\r\n return arg;\r\n}\r\n/**\r\n * @returns whether the provided parameter is a JavaScript Function or not.\r\n */\r\nexport function isFunction(obj) {\r\n return (typeof obj === 'function');\r\n}\r\nexport function validateConstraints(args, constraints) {\r\n const len = Math.min(args.length, constraints.length);\r\n for (let i = 0; i < len; i++) {\r\n validateConstraint(args[i], constraints[i]);\r\n }\r\n}\r\nexport function validateConstraint(arg, constraint) {\r\n if (isString(constraint)) {\r\n if (typeof arg !== constraint) {\r\n throw new Error(`argument does not match constraint: typeof ${constraint}`);\r\n }\r\n }\r\n else if (isFunction(constraint)) {\r\n try {\r\n if (arg instanceof constraint) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // ignore\r\n }\r\n if (!isUndefinedOrNull(arg) && arg.constructor === constraint) {\r\n return;\r\n }\r\n if (constraint.length === 1 && constraint.call(undefined, arg) === true) {\r\n return;\r\n }\r\n throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);\r\n }\r\n}\r\nexport function getAllPropertyNames(obj) {\r\n let res = [];\r\n let proto = Object.getPrototypeOf(obj);\r\n while (Object.prototype !== proto) {\r\n res = res.concat(Object.getOwnPropertyNames(proto));\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n return res;\r\n}\r\nexport function getAllMethodNames(obj) {\r\n const methods = [];\r\n for (const prop of getAllPropertyNames(obj)) {\r\n if (typeof obj[prop] === 'function') {\r\n methods.push(prop);\r\n }\r\n }\r\n return methods;\r\n}\r\nexport function createProxyObject(methodNames, invoke) {\r\n const createProxyMethod = (method) => {\r\n return function () {\r\n const args = Array.prototype.slice.call(arguments, 0);\r\n return invoke(method, args);\r\n };\r\n };\r\n let result = {};\r\n for (const methodName of methodNames) {\r\n result[methodName] = createProxyMethod(methodName);\r\n }\r\n return result;\r\n}\r\n/**\r\n * Converts null to undefined, passes all other values through.\r\n */\r\nexport function withNullAsUndefined(x) {\r\n return x === null ? undefined : x;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport function toUint8(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 255 /* MAX_UINT_8 */) {\r\n return 255 /* MAX_UINT_8 */;\r\n }\r\n return v | 0;\r\n}\r\nexport function toUint32(v) {\r\n if (v < 0) {\r\n return 0;\r\n }\r\n if (v > 4294967295 /* MAX_UINT_32 */) {\r\n return 4294967295 /* MAX_UINT_32 */;\r\n }\r\n return v | 0;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { isWindows } from './platform.js';\r\nimport * as paths from './path.js';\r\nconst _schemePattern = /^\\w[\\w\\d+.-]*$/;\r\nconst _singleSlashStart = /^\\//;\r\nconst _doubleSlashStart = /^\\/\\//;\r\nfunction _validateUri(ret, _strict) {\r\n // scheme, must be set\r\n if (!ret.scheme && _strict) {\r\n throw new Error(`[UriError]: Scheme is missing: {scheme: \"\", authority: \"${ret.authority}\", path: \"${ret.path}\", query: \"${ret.query}\", fragment: \"${ret.fragment}\"}`);\r\n }\r\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\r\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\r\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\r\n throw new Error('[UriError]: Scheme contains illegal characters.');\r\n }\r\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\r\n // If a URI contains an authority component, then the path component\r\n // must either be empty or begin with a slash (\"/\") character. If a URI\r\n // does not contain an authority component, then the path cannot begin\r\n // with two slash characters (\"//\").\r\n if (ret.path) {\r\n if (ret.authority) {\r\n if (!_singleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\r\n }\r\n }\r\n else {\r\n if (_doubleSlashStart.test(ret.path)) {\r\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\r\n }\r\n }\r\n }\r\n}\r\n// for a while we allowed uris *without* schemes and this is the migration\r\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\r\n// back to the file-scheme. that should cause the least carnage and still be a\r\n// clear warning\r\nfunction _schemeFix(scheme, _strict) {\r\n if (!scheme && !_strict) {\r\n return 'file';\r\n }\r\n return scheme;\r\n}\r\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\r\nfunction _referenceResolution(scheme, path) {\r\n // the slash-character is our 'default base' as we don't\r\n // support constructing URIs relative to other URIs. This\r\n // also means that we alter and potentially break paths.\r\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\r\n switch (scheme) {\r\n case 'https':\r\n case 'http':\r\n case 'file':\r\n if (!path) {\r\n path = _slash;\r\n }\r\n else if (path[0] !== _slash) {\r\n path = _slash + path;\r\n }\r\n break;\r\n }\r\n return path;\r\n}\r\nconst _empty = '';\r\nconst _slash = '/';\r\nconst _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\r\n/**\r\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\r\n * This class is a simple parser which creates the basic component parts\r\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\r\n * and encoding.\r\n *\r\n * ```txt\r\n * foo://example.com:8042/over/there?name=ferret#nose\r\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\r\n * | | | | |\r\n * scheme authority path query fragment\r\n * | _____________________|__\r\n * / \\ / \\\r\n * urn:example:animal:ferret:nose\r\n * ```\r\n */\r\nexport class URI {\r\n /**\r\n * @internal\r\n */\r\n constructor(schemeOrData, authority, path, query, fragment, _strict = false) {\r\n if (typeof schemeOrData === 'object') {\r\n this.scheme = schemeOrData.scheme || _empty;\r\n this.authority = schemeOrData.authority || _empty;\r\n this.path = schemeOrData.path || _empty;\r\n this.query = schemeOrData.query || _empty;\r\n this.fragment = schemeOrData.fragment || _empty;\r\n // no validation because it's this URI\r\n // that creates uri components.\r\n // _validateUri(this);\r\n }\r\n else {\r\n this.scheme = _schemeFix(schemeOrData, _strict);\r\n this.authority = authority || _empty;\r\n this.path = _referenceResolution(this.scheme, path || _empty);\r\n this.query = query || _empty;\r\n this.fragment = fragment || _empty;\r\n _validateUri(this, _strict);\r\n }\r\n }\r\n static isUri(thing) {\r\n if (thing instanceof URI) {\r\n return true;\r\n }\r\n if (!thing) {\r\n return false;\r\n }\r\n return typeof thing.authority === 'string'\r\n && typeof thing.fragment === 'string'\r\n && typeof thing.path === 'string'\r\n && typeof thing.query === 'string'\r\n && typeof thing.scheme === 'string'\r\n && typeof thing.fsPath === 'function'\r\n && typeof thing.with === 'function'\r\n && typeof thing.toString === 'function';\r\n }\r\n // ---- filesystem path -----------------------\r\n /**\r\n * Returns a string representing the corresponding file system path of this URI.\r\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\r\n * platform specific path separator.\r\n *\r\n * * Will *not* validate the path for invalid characters and semantics.\r\n * * Will *not* look at the scheme of this URI.\r\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\r\n *\r\n *\r\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\r\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\r\n *\r\n * ```ts\r\n const u = URI.parse('file://server/c$/folder/file.txt')\r\n u.authority === 'server'\r\n u.path === '/shares/c$/file.txt'\r\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\r\n ```\r\n *\r\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\r\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\r\n * with URIs that represent files on disk (`file` scheme).\r\n */\r\n get fsPath() {\r\n // if (this.scheme !== 'file') {\r\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\r\n // }\r\n return uriToFsPath(this, false);\r\n }\r\n // ---- modify to new -------------------------\r\n with(change) {\r\n if (!change) {\r\n return this;\r\n }\r\n let { scheme, authority, path, query, fragment } = change;\r\n if (scheme === undefined) {\r\n scheme = this.scheme;\r\n }\r\n else if (scheme === null) {\r\n scheme = _empty;\r\n }\r\n if (authority === undefined) {\r\n authority = this.authority;\r\n }\r\n else if (authority === null) {\r\n authority = _empty;\r\n }\r\n if (path === undefined) {\r\n path = this.path;\r\n }\r\n else if (path === null) {\r\n path = _empty;\r\n }\r\n if (query === undefined) {\r\n query = this.query;\r\n }\r\n else if (query === null) {\r\n query = _empty;\r\n }\r\n if (fragment === undefined) {\r\n fragment = this.fragment;\r\n }\r\n else if (fragment === null) {\r\n fragment = _empty;\r\n }\r\n if (scheme === this.scheme\r\n && authority === this.authority\r\n && path === this.path\r\n && query === this.query\r\n && fragment === this.fragment) {\r\n return this;\r\n }\r\n return new Uri(scheme, authority, path, query, fragment);\r\n }\r\n // ---- parse & validate ------------------------\r\n /**\r\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\r\n * `file:///usr/home`, or `scheme:with/path`.\r\n *\r\n * @param value A string which represents an URI (see `URI#toString`).\r\n */\r\n static parse(value, _strict = false) {\r\n const match = _regexp.exec(value);\r\n if (!match) {\r\n return new Uri(_empty, _empty, _empty, _empty, _empty);\r\n }\r\n return new Uri(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\r\n }\r\n /**\r\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\r\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\r\n *\r\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\r\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\r\n * `URI.parse('file://' + path)` because the path might contain characters that are\r\n * interpreted (# and ?). See the following sample:\r\n * ```ts\r\n const good = URI.file('/coding/c#/project1');\r\n good.scheme === 'file';\r\n good.path === '/coding/c#/project1';\r\n good.fragment === '';\r\n const bad = URI.parse('file://' + '/coding/c#/project1');\r\n bad.scheme === 'file';\r\n bad.path === '/coding/c'; // path is now broken\r\n bad.fragment === '/project1';\r\n ```\r\n *\r\n * @param path A file system path (see `URI#fsPath`)\r\n */\r\n static file(path) {\r\n let authority = _empty;\r\n // normalize to fwd-slashes on windows,\r\n // on other systems bwd-slashes are valid\r\n // filename character, eg /f\\oo/ba\\r.txt\r\n if (isWindows) {\r\n path = path.replace(/\\\\/g, _slash);\r\n }\r\n // check for authority as used in UNC shares\r\n // or use the path as given\r\n if (path[0] === _slash && path[1] === _slash) {\r\n const idx = path.indexOf(_slash, 2);\r\n if (idx === -1) {\r\n authority = path.substring(2);\r\n path = _slash;\r\n }\r\n else {\r\n authority = path.substring(2, idx);\r\n path = path.substring(idx) || _slash;\r\n }\r\n }\r\n return new Uri('file', authority, path, _empty, _empty);\r\n }\r\n static from(components) {\r\n return new Uri(components.scheme, components.authority, components.path, components.query, components.fragment);\r\n }\r\n /**\r\n * Join a URI path with path fragments and normalizes the resulting path.\r\n *\r\n * @param uri The input URI.\r\n * @param pathFragment The path fragment to add to the URI path.\r\n * @returns The resulting URI.\r\n */\r\n static joinPath(uri, ...pathFragment) {\r\n if (!uri.path) {\r\n throw new Error(`[UriError]: cannot call joinPaths on URI without path`);\r\n }\r\n let newPath;\r\n if (isWindows && uri.scheme === 'file') {\r\n newPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\r\n }\r\n else {\r\n newPath = paths.posix.join(uri.path, ...pathFragment);\r\n }\r\n return uri.with({ path: newPath });\r\n }\r\n // ---- printing/externalize ---------------------------\r\n /**\r\n * Creates a string representation for this URI. It's guaranteed that calling\r\n * `URI.parse` with the result of this function creates an URI which is equal\r\n * to this URI.\r\n *\r\n * * The result shall *not* be used for display purposes but for externalization or transport.\r\n * * The result will be encoded using the percentage encoding and encoding happens mostly\r\n * ignore the scheme-specific encoding rules.\r\n *\r\n * @param skipEncoding Do not encode the result, default is `false`\r\n */\r\n toString(skipEncoding = false) {\r\n return _asFormatted(this, skipEncoding);\r\n }\r\n toJSON() {\r\n return this;\r\n }\r\n static revive(data) {\r\n if (!data) {\r\n return data;\r\n }\r\n else if (data instanceof URI) {\r\n return data;\r\n }\r\n else {\r\n const result = new Uri(data);\r\n result._formatted = data.external;\r\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\r\n return result;\r\n }\r\n }\r\n}\r\nconst _pathSepMarker = isWindows ? 1 : undefined;\r\n// This class exists so that URI is compatibile with vscode.Uri (API).\r\nclass Uri extends URI {\r\n constructor() {\r\n super(...arguments);\r\n this._formatted = null;\r\n this._fsPath = null;\r\n }\r\n get fsPath() {\r\n if (!this._fsPath) {\r\n this._fsPath = uriToFsPath(this, false);\r\n }\r\n return this._fsPath;\r\n }\r\n toString(skipEncoding = false) {\r\n if (!skipEncoding) {\r\n if (!this._formatted) {\r\n this._formatted = _asFormatted(this, false);\r\n }\r\n return this._formatted;\r\n }\r\n else {\r\n // we don't cache that\r\n return _asFormatted(this, true);\r\n }\r\n }\r\n toJSON() {\r\n const res = {\r\n $mid: 1\r\n };\r\n // cached state\r\n if (this._fsPath) {\r\n res.fsPath = this._fsPath;\r\n res._sep = _pathSepMarker;\r\n }\r\n if (this._formatted) {\r\n res.external = this._formatted;\r\n }\r\n // uri components\r\n if (this.path) {\r\n res.path = this.path;\r\n }\r\n if (this.scheme) {\r\n res.scheme = this.scheme;\r\n }\r\n if (this.authority) {\r\n res.authority = this.authority;\r\n }\r\n if (this.query) {\r\n res.query = this.query;\r\n }\r\n if (this.fragment) {\r\n res.fragment = this.fragment;\r\n }\r\n return res;\r\n }\r\n}\r\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\r\nconst encodeTable = {\r\n [58 /* Colon */]: '%3A',\r\n [47 /* Slash */]: '%2F',\r\n [63 /* QuestionMark */]: '%3F',\r\n [35 /* Hash */]: '%23',\r\n [91 /* OpenSquareBracket */]: '%5B',\r\n [93 /* CloseSquareBracket */]: '%5D',\r\n [64 /* AtSign */]: '%40',\r\n [33 /* ExclamationMark */]: '%21',\r\n [36 /* DollarSign */]: '%24',\r\n [38 /* Ampersand */]: '%26',\r\n [39 /* SingleQuote */]: '%27',\r\n [40 /* OpenParen */]: '%28',\r\n [41 /* CloseParen */]: '%29',\r\n [42 /* Asterisk */]: '%2A',\r\n [43 /* Plus */]: '%2B',\r\n [44 /* Comma */]: '%2C',\r\n [59 /* Semicolon */]: '%3B',\r\n [61 /* Equals */]: '%3D',\r\n [32 /* Space */]: '%20',\r\n};\r\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\r\n let res = undefined;\r\n let nativeEncodePos = -1;\r\n for (let pos = 0; pos < uriComponent.length; pos++) {\r\n const code = uriComponent.charCodeAt(pos);\r\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\r\n if ((code >= 97 /* a */ && code <= 122 /* z */)\r\n || (code >= 65 /* A */ && code <= 90 /* Z */)\r\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\r\n || code === 45 /* Dash */\r\n || code === 46 /* Period */\r\n || code === 95 /* Underline */\r\n || code === 126 /* Tilde */\r\n || (allowSlash && code === 47 /* Slash */)) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // check if we write into a new string (by default we try to return the param)\r\n if (res !== undefined) {\r\n res += uriComponent.charAt(pos);\r\n }\r\n }\r\n else {\r\n // encoding needed, we need to allocate a new string\r\n if (res === undefined) {\r\n res = uriComponent.substr(0, pos);\r\n }\r\n // check with default table first\r\n const escaped = encodeTable[code];\r\n if (escaped !== undefined) {\r\n // check if we are delaying native encode\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\r\n nativeEncodePos = -1;\r\n }\r\n // append escaped variant to result\r\n res += escaped;\r\n }\r\n else if (nativeEncodePos === -1) {\r\n // use native encode only when needed\r\n nativeEncodePos = pos;\r\n }\r\n }\r\n }\r\n if (nativeEncodePos !== -1) {\r\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\r\n }\r\n return res !== undefined ? res : uriComponent;\r\n}\r\nfunction encodeURIComponentMinimal(path) {\r\n let res = undefined;\r\n for (let pos = 0; pos < path.length; pos++) {\r\n const code = path.charCodeAt(pos);\r\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\r\n if (res === undefined) {\r\n res = path.substr(0, pos);\r\n }\r\n res += encodeTable[code];\r\n }\r\n else {\r\n if (res !== undefined) {\r\n res += path[pos];\r\n }\r\n }\r\n }\r\n return res !== undefined ? res : path;\r\n}\r\n/**\r\n * Compute `fsPath` for the given uri\r\n */\r\nexport function uriToFsPath(uri, keepDriveLetterCasing) {\r\n let value;\r\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\r\n // unc path: file://shares/c$/far/boo\r\n value = `//${uri.authority}${uri.path}`;\r\n }\r\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\r\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\r\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\r\n if (!keepDriveLetterCasing) {\r\n // windows drive letter: file:///c:/far/boo\r\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\r\n }\r\n else {\r\n value = uri.path.substr(1);\r\n }\r\n }\r\n else {\r\n // other path\r\n value = uri.path;\r\n }\r\n if (isWindows) {\r\n value = value.replace(/\\//g, '\\\\');\r\n }\r\n return value;\r\n}\r\n/**\r\n * Create the external version of a uri\r\n */\r\nfunction _asFormatted(uri, skipEncoding) {\r\n const encoder = !skipEncoding\r\n ? encodeURIComponentFast\r\n : encodeURIComponentMinimal;\r\n let res = '';\r\n let { scheme, authority, path, query, fragment } = uri;\r\n if (scheme) {\r\n res += scheme;\r\n res += ':';\r\n }\r\n if (authority || scheme === 'file') {\r\n res += _slash;\r\n res += _slash;\r\n }\r\n if (authority) {\r\n let idx = authority.indexOf('@');\r\n if (idx !== -1) {\r\n // <user>@<auth>\r\n const userinfo = authority.substr(0, idx);\r\n authority = authority.substr(idx + 1);\r\n idx = userinfo.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(userinfo, false);\r\n }\r\n else {\r\n // <user>:<pass>@<auth>\r\n res += encoder(userinfo.substr(0, idx), false);\r\n res += ':';\r\n res += encoder(userinfo.substr(idx + 1), false);\r\n }\r\n res += '@';\r\n }\r\n authority = authority.toLowerCase();\r\n idx = authority.indexOf(':');\r\n if (idx === -1) {\r\n res += encoder(authority, false);\r\n }\r\n else {\r\n // <auth>:<port>\r\n res += encoder(authority.substr(0, idx), false);\r\n res += authority.substr(idx);\r\n }\r\n }\r\n if (path) {\r\n // lower-case windows drive letters in /C:/fff or C:/fff\r\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\r\n const code = path.charCodeAt(1);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `/${String.fromCharCode(code + 32)}:${path.substr(3)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\r\n const code = path.charCodeAt(0);\r\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\r\n path = `${String.fromCharCode(code + 32)}:${path.substr(2)}`; // \"/c:\".length === 3\r\n }\r\n }\r\n // encode the rest of the path\r\n res += encoder(path, true);\r\n }\r\n if (query) {\r\n res += '?';\r\n res += encoder(query, false);\r\n }\r\n if (fragment) {\r\n res += '#';\r\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\r\n }\r\n return res;\r\n}\r\n// --- decode\r\nfunction decodeURIComponentGraceful(str) {\r\n try {\r\n return decodeURIComponent(str);\r\n }\r\n catch (_a) {\r\n if (str.length > 3) {\r\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\r\n }\r\n else {\r\n return str;\r\n }\r\n }\r\n}\r\nconst _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\r\nfunction percentDecode(str) {\r\n if (!str.match(_rEncodedAsHex)) {\r\n return str;\r\n }\r\n return str.replace(_rEncodedAsHex, (match) => decodeURIComponentGraceful(match));\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { transformErrorForSerialization } from '../errors.js';\r\nimport { Disposable } from '../lifecycle.js';\r\nimport { isWeb } from '../platform.js';\r\nimport * as types from '../types.js';\r\nconst INITIALIZE = '$initialize';\r\nlet webWorkerWarningLogged = false;\r\nexport function logOnceWebWorkerWarning(err) {\r\n if (!isWeb) {\r\n // running tests\r\n return;\r\n }\r\n if (!webWorkerWarningLogged) {\r\n webWorkerWarningLogged = true;\r\n console.warn('Could not create web worker(s). Falling back to loading web worker code in main thread, which might cause UI freezes. Please see https://github.com/Microsoft/monaco-editor#faq');\r\n }\r\n console.warn(err.message);\r\n}\r\nclass SimpleWorkerProtocol {\r\n constructor(handler) {\r\n this._workerId = -1;\r\n this._handler = handler;\r\n this._lastSentReq = 0;\r\n this._pendingReplies = Object.create(null);\r\n }\r\n setWorkerId(workerId) {\r\n this._workerId = workerId;\r\n }\r\n sendMessage(method, args) {\r\n let req = String(++this._lastSentReq);\r\n return new Promise((resolve, reject) => {\r\n this._pendingReplies[req] = {\r\n resolve: resolve,\r\n reject: reject\r\n };\r\n this._send({\r\n vsWorker: this._workerId,\r\n req: req,\r\n method: method,\r\n args: args\r\n });\r\n });\r\n }\r\n handleMessage(message) {\r\n if (!message || !message.vsWorker) {\r\n return;\r\n }\r\n if (this._workerId !== -1 && message.vsWorker !== this._workerId) {\r\n return;\r\n }\r\n this._handleMessage(message);\r\n }\r\n _handleMessage(msg) {\r\n if (msg.seq) {\r\n let replyMessage = msg;\r\n if (!this._pendingReplies[replyMessage.seq]) {\r\n console.warn('Got reply to unknown seq');\r\n return;\r\n }\r\n let reply = this._pendingReplies[replyMessage.seq];\r\n delete this._pendingReplies[replyMessage.seq];\r\n if (replyMessage.err) {\r\n let err = replyMessage.err;\r\n if (replyMessage.err.$isError) {\r\n err = new Error();\r\n err.name = replyMessage.err.name;\r\n err.message = replyMessage.err.message;\r\n err.stack = replyMessage.err.stack;\r\n }\r\n reply.reject(err);\r\n return;\r\n }\r\n reply.resolve(replyMessage.res);\r\n return;\r\n }\r\n let requestMessage = msg;\r\n let req = requestMessage.req;\r\n let result = this._handler.handleMessage(requestMessage.method, requestMessage.args);\r\n result.then((r) => {\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: r,\r\n err: undefined\r\n });\r\n }, (e) => {\r\n if (e.detail instanceof Error) {\r\n // Loading errors have a detail property that points to the actual error\r\n e.detail = transformErrorForSerialization(e.detail);\r\n }\r\n this._send({\r\n vsWorker: this._workerId,\r\n seq: req,\r\n res: undefined,\r\n err: transformErrorForSerialization(e)\r\n });\r\n });\r\n }\r\n _send(msg) {\r\n let transfer = [];\r\n if (msg.req) {\r\n const m = msg;\r\n for (let i = 0; i < m.args.length; i++) {\r\n if (m.args[i] instanceof ArrayBuffer) {\r\n transfer.push(m.args[i]);\r\n }\r\n }\r\n }\r\n else {\r\n const m = msg;\r\n if (m.res instanceof ArrayBuffer) {\r\n transfer.push(m.res);\r\n }\r\n }\r\n this._handler.sendMessage(msg, transfer);\r\n }\r\n}\r\n/**\r\n * Main thread side\r\n */\r\nexport class SimpleWorkerClient extends Disposable {\r\n constructor(workerFactory, moduleId, host) {\r\n super();\r\n let lazyProxyReject = null;\r\n this._worker = this._register(workerFactory.create('vs/base/common/worker/simpleWorker', (msg) => {\r\n this._protocol.handleMessage(msg);\r\n }, (err) => {\r\n // in Firefox, web workers fail lazily :(\r\n // we will reject the proxy\r\n if (lazyProxyReject) {\r\n lazyProxyReject(err);\r\n }\r\n }));\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n this._worker.postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => {\r\n if (typeof host[method] !== 'function') {\r\n return Promise.reject(new Error('Missing method ' + method + ' on main thread host.'));\r\n }\r\n try {\r\n return Promise.resolve(host[method].apply(host, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n });\r\n this._protocol.setWorkerId(this._worker.getId());\r\n // Gather loader configuration\r\n let loaderConfiguration = null;\r\n if (typeof self.require !== 'undefined' && typeof self.require.getConfig === 'function') {\r\n // Get the configuration from the Monaco AMD Loader\r\n loaderConfiguration = self.require.getConfig();\r\n }\r\n else if (typeof self.requirejs !== 'undefined') {\r\n // Get the configuration from requirejs\r\n loaderConfiguration = self.requirejs.s.contexts._.config;\r\n }\r\n const hostMethods = types.getAllMethodNames(host);\r\n // Send initialize message\r\n this._onModuleLoaded = this._protocol.sendMessage(INITIALIZE, [\r\n this._worker.getId(),\r\n JSON.parse(JSON.stringify(loaderConfiguration)),\r\n moduleId,\r\n hostMethods,\r\n ]);\r\n // Create proxy to loaded code\r\n const proxyMethodRequest = (method, args) => {\r\n return this._request(method, args);\r\n };\r\n this._lazyProxy = new Promise((resolve, reject) => {\r\n lazyProxyReject = reject;\r\n this._onModuleLoaded.then((availableMethods) => {\r\n resolve(types.createProxyObject(availableMethods, proxyMethodRequest));\r\n }, (e) => {\r\n reject(e);\r\n this._onError('Worker failed to load ' + moduleId, e);\r\n });\r\n });\r\n }\r\n getProxyObject() {\r\n return this._lazyProxy;\r\n }\r\n _request(method, args) {\r\n return new Promise((resolve, reject) => {\r\n this._onModuleLoaded.then(() => {\r\n this._protocol.sendMessage(method, args).then(resolve, reject);\r\n }, reject);\r\n });\r\n }\r\n _onError(message, error) {\r\n console.error(message);\r\n console.info(error);\r\n }\r\n}\r\n/**\r\n * Worker side\r\n */\r\nexport class SimpleWorkerServer {\r\n constructor(postMessage, requestHandlerFactory) {\r\n this._requestHandlerFactory = requestHandlerFactory;\r\n this._requestHandler = null;\r\n this._protocol = new SimpleWorkerProtocol({\r\n sendMessage: (msg, transfer) => {\r\n postMessage(msg, transfer);\r\n },\r\n handleMessage: (method, args) => this._handleMessage(method, args)\r\n });\r\n }\r\n onmessage(msg) {\r\n this._protocol.handleMessage(msg);\r\n }\r\n _handleMessage(method, args) {\r\n if (method === INITIALIZE) {\r\n return this.initialize(args[0], args[1], args[2], args[3]);\r\n }\r\n if (!this._requestHandler || typeof this._requestHandler[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._requestHandler[method].apply(this._requestHandler, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n initialize(workerId, loaderConfig, moduleId, hostMethods) {\r\n this._protocol.setWorkerId(workerId);\r\n const proxyMethodRequest = (method, args) => {\r\n return this._protocol.sendMessage(method, args);\r\n };\r\n const hostProxy = types.createProxyObject(hostMethods, proxyMethodRequest);\r\n if (this._requestHandlerFactory) {\r\n // static request handler\r\n this._requestHandler = this._requestHandlerFactory(hostProxy);\r\n return Promise.resolve(types.getAllMethodNames(this._requestHandler));\r\n }\r\n if (loaderConfig) {\r\n // Remove 'baseUrl', handling it is beyond scope for now\r\n if (typeof loaderConfig.baseUrl !== 'undefined') {\r\n delete loaderConfig['baseUrl'];\r\n }\r\n if (typeof loaderConfig.paths !== 'undefined') {\r\n if (typeof loaderConfig.paths.vs !== 'undefined') {\r\n delete loaderConfig.paths['vs'];\r\n }\r\n }\r\n // Since this is in a web worker, enable catching errors\r\n loaderConfig.catchError = true;\r\n self.require.config(loaderConfig);\r\n }\r\n return new Promise((resolve, reject) => {\r\n // Use the global require to be sure to get the global config\r\n self.require([moduleId], (module) => {\r\n this._requestHandler = module.create(hostProxy);\r\n if (!this._requestHandler) {\r\n reject(new Error(`No RequestHandler!`));\r\n return;\r\n }\r\n resolve(types.getAllMethodNames(this._requestHandler));\r\n }, reject);\r\n });\r\n }\r\n}\r\n/**\r\n * Called on the worker side\r\n */\r\nexport function create(postMessage) {\r\n return new SimpleWorkerServer(postMessage, null);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint8 } from '../../../base/common/uint.js';\r\n/**\r\n * A fast character classifier that uses a compact array for ASCII values.\r\n */\r\nexport class CharacterClassifier {\r\n constructor(_defaultValue) {\r\n let defaultValue = toUint8(_defaultValue);\r\n this._defaultValue = defaultValue;\r\n this._asciiMap = CharacterClassifier._createAsciiMap(defaultValue);\r\n this._map = new Map();\r\n }\r\n static _createAsciiMap(defaultValue) {\r\n let asciiMap = new Uint8Array(256);\r\n for (let i = 0; i < 256; i++) {\r\n asciiMap[i] = defaultValue;\r\n }\r\n return asciiMap;\r\n }\r\n set(charCode, _value) {\r\n let value = toUint8(_value);\r\n if (charCode >= 0 && charCode < 256) {\r\n this._asciiMap[charCode] = value;\r\n }\r\n else {\r\n this._map.set(charCode, value);\r\n }\r\n }\r\n get(charCode) {\r\n if (charCode >= 0 && charCode < 256) {\r\n return this._asciiMap[charCode];\r\n }\r\n else {\r\n return (this._map.get(charCode) || this._defaultValue);\r\n }\r\n }\r\n}\r\nexport class CharacterSet {\r\n constructor() {\r\n this._actual = new CharacterClassifier(0 /* False */);\r\n }\r\n add(charCode) {\r\n this._actual.set(charCode, 1 /* True */);\r\n }\r\n has(charCode) {\r\n return (this._actual.get(charCode) === 1 /* True */);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/**\r\n * A position in the editor.\r\n */\r\nexport class Position {\r\n constructor(lineNumber, column) {\r\n this.lineNumber = lineNumber;\r\n this.column = column;\r\n }\r\n /**\r\n * Create a new position from this position.\r\n *\r\n * @param newLineNumber new line number\r\n * @param newColumn new column\r\n */\r\n with(newLineNumber = this.lineNumber, newColumn = this.column) {\r\n if (newLineNumber === this.lineNumber && newColumn === this.column) {\r\n return this;\r\n }\r\n else {\r\n return new Position(newLineNumber, newColumn);\r\n }\r\n }\r\n /**\r\n * Derive a new position from this position.\r\n *\r\n * @param deltaLineNumber line number delta\r\n * @param deltaColumn column delta\r\n */\r\n delta(deltaLineNumber = 0, deltaColumn = 0) {\r\n return this.with(this.lineNumber + deltaLineNumber, this.column + deltaColumn);\r\n }\r\n /**\r\n * Test if this position equals other position\r\n */\r\n equals(other) {\r\n return Position.equals(this, other);\r\n }\r\n /**\r\n * Test if position `a` equals position `b`\r\n */\r\n static equals(a, b) {\r\n if (!a && !b) {\r\n return true;\r\n }\r\n return (!!a &&\r\n !!b &&\r\n a.lineNumber === b.lineNumber &&\r\n a.column === b.column);\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n isBefore(other) {\r\n return Position.isBefore(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be false.\r\n */\r\n static isBefore(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column < b.column;\r\n }\r\n /**\r\n * Test if this position is before other position.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n isBeforeOrEqual(other) {\r\n return Position.isBeforeOrEqual(this, other);\r\n }\r\n /**\r\n * Test if position `a` is before position `b`.\r\n * If the two positions are equal, the result will be true.\r\n */\r\n static isBeforeOrEqual(a, b) {\r\n if (a.lineNumber < b.lineNumber) {\r\n return true;\r\n }\r\n if (b.lineNumber < a.lineNumber) {\r\n return false;\r\n }\r\n return a.column <= b.column;\r\n }\r\n /**\r\n * A function that compares positions, useful for sorting\r\n */\r\n static compare(a, b) {\r\n let aLineNumber = a.lineNumber | 0;\r\n let bLineNumber = b.lineNumber | 0;\r\n if (aLineNumber === bLineNumber) {\r\n let aColumn = a.column | 0;\r\n let bColumn = b.column | 0;\r\n return aColumn - bColumn;\r\n }\r\n return aLineNumber - bLineNumber;\r\n }\r\n /**\r\n * Clone this position.\r\n */\r\n clone() {\r\n return new Position(this.lineNumber, this.column);\r\n }\r\n /**\r\n * Convert to a human-readable representation.\r\n */\r\n toString() {\r\n return '(' + this.lineNumber + ',' + this.column + ')';\r\n }\r\n // ---\r\n /**\r\n * Create a `Position` from an `IPosition`.\r\n */\r\n static lift(pos) {\r\n return new Position(pos.lineNumber, pos.column);\r\n }\r\n /**\r\n * Test if `obj` is an `IPosition`.\r\n */\r\n static isIPosition(obj) {\r\n return (obj\r\n && (typeof obj.lineNumber === 'number')\r\n && (typeof obj.column === 'number'));\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\n/**\r\n * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)\r\n */\r\nexport class Range {\r\n constructor(startLineNumber, startColumn, endLineNumber, endColumn) {\r\n if ((startLineNumber > endLineNumber) || (startLineNumber === endLineNumber && startColumn > endColumn)) {\r\n this.startLineNumber = endLineNumber;\r\n this.startColumn = endColumn;\r\n this.endLineNumber = startLineNumber;\r\n this.endColumn = startColumn;\r\n }\r\n else {\r\n this.startLineNumber = startLineNumber;\r\n this.startColumn = startColumn;\r\n this.endLineNumber = endLineNumber;\r\n this.endColumn = endColumn;\r\n }\r\n }\r\n /**\r\n * Test if this range is empty.\r\n */\r\n isEmpty() {\r\n return Range.isEmpty(this);\r\n }\r\n /**\r\n * Test if `range` is empty.\r\n */\r\n static isEmpty(range) {\r\n return (range.startLineNumber === range.endLineNumber && range.startColumn === range.endColumn);\r\n }\r\n /**\r\n * Test if position is in this range. If the position is at the edges, will return true.\r\n */\r\n containsPosition(position) {\r\n return Range.containsPosition(this, position);\r\n }\r\n /**\r\n * Test if `position` is in `range`. If the position is at the edges, will return true.\r\n */\r\n static containsPosition(range, position) {\r\n if (position.lineNumber < range.startLineNumber || position.lineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.startLineNumber && position.column < range.startColumn) {\r\n return false;\r\n }\r\n if (position.lineNumber === range.endLineNumber && position.column > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if range is in this range. If the range is equal to this range, will return true.\r\n */\r\n containsRange(range) {\r\n return Range.containsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is in `range`. If the ranges are equal, will return true.\r\n */\r\n static containsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn < range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn > range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.\r\n */\r\n strictContainsRange(range) {\r\n return Range.strictContainsRange(this, range);\r\n }\r\n /**\r\n * Test if `otherRange` is strinctly in `range` (must start after, and end before). If the ranges are equal, will return false.\r\n */\r\n static strictContainsRange(range, otherRange) {\r\n if (otherRange.startLineNumber < range.startLineNumber || otherRange.endLineNumber < range.startLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber > range.endLineNumber || otherRange.endLineNumber > range.endLineNumber) {\r\n return false;\r\n }\r\n if (otherRange.startLineNumber === range.startLineNumber && otherRange.startColumn <= range.startColumn) {\r\n return false;\r\n }\r\n if (otherRange.endLineNumber === range.endLineNumber && otherRange.endColumn >= range.endColumn) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n plusRange(range) {\r\n return Range.plusRange(this, range);\r\n }\r\n /**\r\n * A reunion of the two ranges.\r\n * The smallest position will be used as the start point, and the largest one as the end point.\r\n */\r\n static plusRange(a, b) {\r\n let startLineNumber;\r\n let startColumn;\r\n let endLineNumber;\r\n let endColumn;\r\n if (b.startLineNumber < a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = b.startColumn;\r\n }\r\n else if (b.startLineNumber === a.startLineNumber) {\r\n startLineNumber = b.startLineNumber;\r\n startColumn = Math.min(b.startColumn, a.startColumn);\r\n }\r\n else {\r\n startLineNumber = a.startLineNumber;\r\n startColumn = a.startColumn;\r\n }\r\n if (b.endLineNumber > a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = b.endColumn;\r\n }\r\n else if (b.endLineNumber === a.endLineNumber) {\r\n endLineNumber = b.endLineNumber;\r\n endColumn = Math.max(b.endColumn, a.endColumn);\r\n }\r\n else {\r\n endLineNumber = a.endLineNumber;\r\n endColumn = a.endColumn;\r\n }\r\n return new Range(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n intersectRanges(range) {\r\n return Range.intersectRanges(this, range);\r\n }\r\n /**\r\n * A intersection of the two ranges.\r\n */\r\n static intersectRanges(a, b) {\r\n let resultStartLineNumber = a.startLineNumber;\r\n let resultStartColumn = a.startColumn;\r\n let resultEndLineNumber = a.endLineNumber;\r\n let resultEndColumn = a.endColumn;\r\n let otherStartLineNumber = b.startLineNumber;\r\n let otherStartColumn = b.startColumn;\r\n let otherEndLineNumber = b.endLineNumber;\r\n let otherEndColumn = b.endColumn;\r\n if (resultStartLineNumber < otherStartLineNumber) {\r\n resultStartLineNumber = otherStartLineNumber;\r\n resultStartColumn = otherStartColumn;\r\n }\r\n else if (resultStartLineNumber === otherStartLineNumber) {\r\n resultStartColumn = Math.max(resultStartColumn, otherStartColumn);\r\n }\r\n if (resultEndLineNumber > otherEndLineNumber) {\r\n resultEndLineNumber = otherEndLineNumber;\r\n resultEndColumn = otherEndColumn;\r\n }\r\n else if (resultEndLineNumber === otherEndLineNumber) {\r\n resultEndColumn = Math.min(resultEndColumn, otherEndColumn);\r\n }\r\n // Check if selection is now empty\r\n if (resultStartLineNumber > resultEndLineNumber) {\r\n return null;\r\n }\r\n if (resultStartLineNumber === resultEndLineNumber && resultStartColumn > resultEndColumn) {\r\n return null;\r\n }\r\n return new Range(resultStartLineNumber, resultStartColumn, resultEndLineNumber, resultEndColumn);\r\n }\r\n /**\r\n * Test if this range equals other.\r\n */\r\n equalsRange(other) {\r\n return Range.equalsRange(this, other);\r\n }\r\n /**\r\n * Test if range `a` equals `b`.\r\n */\r\n static equalsRange(a, b) {\r\n return (!!a &&\r\n !!b &&\r\n a.startLineNumber === b.startLineNumber &&\r\n a.startColumn === b.startColumn &&\r\n a.endLineNumber === b.endLineNumber &&\r\n a.endColumn === b.endColumn);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n getEndPosition() {\r\n return Range.getEndPosition(this);\r\n }\r\n /**\r\n * Return the end position (which will be after or equal to the start position)\r\n */\r\n static getEndPosition(range) {\r\n return new Position(range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n getStartPosition() {\r\n return Range.getStartPosition(this);\r\n }\r\n /**\r\n * Return the start position (which will be before or equal to the end position)\r\n */\r\n static getStartPosition(range) {\r\n return new Position(range.startLineNumber, range.startColumn);\r\n }\r\n /**\r\n * Transform to a user presentable string representation.\r\n */\r\n toString() {\r\n return '[' + this.startLineNumber + ',' + this.startColumn + ' -> ' + this.endLineNumber + ',' + this.endColumn + ']';\r\n }\r\n /**\r\n * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n return new Range(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n /**\r\n * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n return new Range(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n collapseToStart() {\r\n return Range.collapseToStart(this);\r\n }\r\n /**\r\n * Create a new empty range using this range's start position.\r\n */\r\n static collapseToStart(range) {\r\n return new Range(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\r\n }\r\n // ---\r\n static fromPositions(start, end = start) {\r\n return new Range(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n static lift(range) {\r\n if (!range) {\r\n return null;\r\n }\r\n return new Range(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\r\n }\r\n /**\r\n * Test if `obj` is an `IRange`.\r\n */\r\n static isIRange(obj) {\r\n return (obj\r\n && (typeof obj.startLineNumber === 'number')\r\n && (typeof obj.startColumn === 'number')\r\n && (typeof obj.endLineNumber === 'number')\r\n && (typeof obj.endColumn === 'number'));\r\n }\r\n /**\r\n * Test if the two ranges are touching in any way.\r\n */\r\n static areIntersectingOrTouching(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn < b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn < a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * Test if the two ranges are intersecting. If the ranges are touching it returns true.\r\n */\r\n static areIntersecting(a, b) {\r\n // Check if `a` is before `b`\r\n if (a.endLineNumber < b.startLineNumber || (a.endLineNumber === b.startLineNumber && a.endColumn <= b.startColumn)) {\r\n return false;\r\n }\r\n // Check if `b` is before `a`\r\n if (b.endLineNumber < a.startLineNumber || (b.endLineNumber === a.startLineNumber && b.endColumn <= a.startColumn)) {\r\n return false;\r\n }\r\n // These ranges must intersect\r\n return true;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the startPosition and then on the endPosition\r\n */\r\n static compareRangesUsingStarts(a, b) {\r\n if (a && b) {\r\n const aStartLineNumber = a.startLineNumber | 0;\r\n const bStartLineNumber = b.startLineNumber | 0;\r\n if (aStartLineNumber === bStartLineNumber) {\r\n const aStartColumn = a.startColumn | 0;\r\n const bStartColumn = b.startColumn | 0;\r\n if (aStartColumn === bStartColumn) {\r\n const aEndLineNumber = a.endLineNumber | 0;\r\n const bEndLineNumber = b.endLineNumber | 0;\r\n if (aEndLineNumber === bEndLineNumber) {\r\n const aEndColumn = a.endColumn | 0;\r\n const bEndColumn = b.endColumn | 0;\r\n return aEndColumn - bEndColumn;\r\n }\r\n return aEndLineNumber - bEndLineNumber;\r\n }\r\n return aStartColumn - bStartColumn;\r\n }\r\n return aStartLineNumber - bStartLineNumber;\r\n }\r\n const aExists = (a ? 1 : 0);\r\n const bExists = (b ? 1 : 0);\r\n return aExists - bExists;\r\n }\r\n /**\r\n * A function that compares ranges, useful for sorting ranges\r\n * It will first compare ranges on the endPosition and then on the startPosition\r\n */\r\n static compareRangesUsingEnds(a, b) {\r\n if (a.endLineNumber === b.endLineNumber) {\r\n if (a.endColumn === b.endColumn) {\r\n if (a.startLineNumber === b.startLineNumber) {\r\n return a.startColumn - b.startColumn;\r\n }\r\n return a.startLineNumber - b.startLineNumber;\r\n }\r\n return a.endColumn - b.endColumn;\r\n }\r\n return a.endLineNumber - b.endLineNumber;\r\n }\r\n /**\r\n * Test if the range spans multiple lines.\r\n */\r\n static spansMultipleLines(range) {\r\n return range.endLineNumber > range.startLineNumber;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from './position.js';\r\nimport { Range } from './range.js';\r\n/**\r\n * A selection in the editor.\r\n * The selection is a range that has an orientation.\r\n */\r\nexport class Selection extends Range {\r\n constructor(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn) {\r\n super(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn);\r\n this.selectionStartLineNumber = selectionStartLineNumber;\r\n this.selectionStartColumn = selectionStartColumn;\r\n this.positionLineNumber = positionLineNumber;\r\n this.positionColumn = positionColumn;\r\n }\r\n /**\r\n * Transform to a human-readable representation.\r\n */\r\n toString() {\r\n return '[' + this.selectionStartLineNumber + ',' + this.selectionStartColumn + ' -> ' + this.positionLineNumber + ',' + this.positionColumn + ']';\r\n }\r\n /**\r\n * Test if equals other selection.\r\n */\r\n equalsSelection(other) {\r\n return (Selection.selectionsEqual(this, other));\r\n }\r\n /**\r\n * Test if the two selections are equal.\r\n */\r\n static selectionsEqual(a, b) {\r\n return (a.selectionStartLineNumber === b.selectionStartLineNumber &&\r\n a.selectionStartColumn === b.selectionStartColumn &&\r\n a.positionLineNumber === b.positionLineNumber &&\r\n a.positionColumn === b.positionColumn);\r\n }\r\n /**\r\n * Get directions (LTR or RTL).\r\n */\r\n getDirection() {\r\n if (this.selectionStartLineNumber === this.startLineNumber && this.selectionStartColumn === this.startColumn) {\r\n return 0 /* LTR */;\r\n }\r\n return 1 /* RTL */;\r\n }\r\n /**\r\n * Create a new selection with a different `positionLineNumber` and `positionColumn`.\r\n */\r\n setEndPosition(endLineNumber, endColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(this.startLineNumber, this.startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, this.startLineNumber, this.startColumn);\r\n }\r\n /**\r\n * Get the position at `positionLineNumber` and `positionColumn`.\r\n */\r\n getPosition() {\r\n return new Position(this.positionLineNumber, this.positionColumn);\r\n }\r\n /**\r\n * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.\r\n */\r\n setStartPosition(startLineNumber, startColumn) {\r\n if (this.getDirection() === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, this.endLineNumber, this.endColumn);\r\n }\r\n return new Selection(this.endLineNumber, this.endColumn, startLineNumber, startColumn);\r\n }\r\n // ----\r\n /**\r\n * Create a `Selection` from one or two positions\r\n */\r\n static fromPositions(start, end = start) {\r\n return new Selection(start.lineNumber, start.column, end.lineNumber, end.column);\r\n }\r\n /**\r\n * Create a `Selection` from an `ISelection`.\r\n */\r\n static liftSelection(sel) {\r\n return new Selection(sel.selectionStartLineNumber, sel.selectionStartColumn, sel.positionLineNumber, sel.positionColumn);\r\n }\r\n /**\r\n * `a` equals `b`.\r\n */\r\n static selectionsArrEqual(a, b) {\r\n if (a && !b || !a && b) {\r\n return false;\r\n }\r\n if (!a && !b) {\r\n return true;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (let i = 0, len = a.length; i < len; i++) {\r\n if (!this.selectionsEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n /**\r\n * Test if `obj` is an `ISelection`.\r\n */\r\n static isISelection(obj) {\r\n return (obj\r\n && (typeof obj.selectionStartLineNumber === 'number')\r\n && (typeof obj.selectionStartColumn === 'number')\r\n && (typeof obj.positionLineNumber === 'number')\r\n && (typeof obj.positionColumn === 'number'));\r\n }\r\n /**\r\n * Create with a direction.\r\n */\r\n static createWithDirection(startLineNumber, startColumn, endLineNumber, endColumn, direction) {\r\n if (direction === 0 /* LTR */) {\r\n return new Selection(startLineNumber, startColumn, endLineNumber, endColumn);\r\n }\r\n return new Selection(endLineNumber, endColumn, startLineNumber, startColumn);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class Token {\r\n constructor(offset, type, language) {\r\n this.offset = offset | 0; // @perf\r\n this.type = type;\r\n this.language = language;\r\n }\r\n toString() {\r\n return '(' + this.offset + ', ' + this.type + ')';\r\n }\r\n}\r\nexport class TokenizationResult {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\nexport class TokenizationResult2 {\r\n constructor(tokens, endState) {\r\n this.tokens = tokens;\r\n this.endState = endState;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { LcsDiff } from '../../../base/common/diff/diff.js';\r\nimport * as strings from '../../../base/common/strings.js';\r\nconst MINIMUM_MATCHING_CHARACTER_LENGTH = 3;\r\nfunction computeDiff(originalSequence, modifiedSequence, continueProcessingPredicate, pretty) {\r\n const diffAlgo = new LcsDiff(originalSequence, modifiedSequence, continueProcessingPredicate);\r\n return diffAlgo.ComputeDiff(pretty);\r\n}\r\nclass LineSequence {\r\n constructor(lines) {\r\n const startColumns = [];\r\n const endColumns = [];\r\n for (let i = 0, length = lines.length; i < length; i++) {\r\n startColumns[i] = getFirstNonBlankColumn(lines[i], 1);\r\n endColumns[i] = getLastNonBlankColumn(lines[i], 1);\r\n }\r\n this.lines = lines;\r\n this._startColumns = startColumns;\r\n this._endColumns = endColumns;\r\n }\r\n getElements() {\r\n const elements = [];\r\n for (let i = 0, len = this.lines.length; i < len; i++) {\r\n elements[i] = this.lines[i].substring(this._startColumns[i] - 1, this._endColumns[i] - 1);\r\n }\r\n return elements;\r\n }\r\n getStartLineNumber(i) {\r\n return i + 1;\r\n }\r\n getEndLineNumber(i) {\r\n return i + 1;\r\n }\r\n createCharSequence(shouldIgnoreTrimWhitespace, startIndex, endIndex) {\r\n const charCodes = [];\r\n const lineNumbers = [];\r\n const columns = [];\r\n let len = 0;\r\n for (let index = startIndex; index <= endIndex; index++) {\r\n const lineContent = this.lines[index];\r\n const startColumn = (shouldIgnoreTrimWhitespace ? this._startColumns[index] : 1);\r\n const endColumn = (shouldIgnoreTrimWhitespace ? this._endColumns[index] : lineContent.length + 1);\r\n for (let col = startColumn; col < endColumn; col++) {\r\n charCodes[len] = lineContent.charCodeAt(col - 1);\r\n lineNumbers[len] = index + 1;\r\n columns[len] = col;\r\n len++;\r\n }\r\n }\r\n return new CharSequence(charCodes, lineNumbers, columns);\r\n }\r\n}\r\nclass CharSequence {\r\n constructor(charCodes, lineNumbers, columns) {\r\n this._charCodes = charCodes;\r\n this._lineNumbers = lineNumbers;\r\n this._columns = columns;\r\n }\r\n getElements() {\r\n return this._charCodes;\r\n }\r\n getStartLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getStartColumn(i) {\r\n return this._columns[i];\r\n }\r\n getEndLineNumber(i) {\r\n return this._lineNumbers[i];\r\n }\r\n getEndColumn(i) {\r\n return this._columns[i] + 1;\r\n }\r\n}\r\nclass CharChange {\r\n constructor(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalStartColumn = originalStartColumn;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.originalEndColumn = originalEndColumn;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedStartColumn = modifiedStartColumn;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.modifiedEndColumn = modifiedEndColumn;\r\n }\r\n static createFromDiffChange(diffChange, originalCharSequence, modifiedCharSequence) {\r\n let originalStartLineNumber;\r\n let originalStartColumn;\r\n let originalEndLineNumber;\r\n let originalEndColumn;\r\n let modifiedStartLineNumber;\r\n let modifiedStartColumn;\r\n let modifiedEndLineNumber;\r\n let modifiedEndColumn;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = 0;\r\n originalStartColumn = 0;\r\n originalEndLineNumber = 0;\r\n originalEndColumn = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalCharSequence.getStartLineNumber(diffChange.originalStart);\r\n originalStartColumn = originalCharSequence.getStartColumn(diffChange.originalStart);\r\n originalEndLineNumber = originalCharSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n originalEndColumn = originalCharSequence.getEndColumn(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = 0;\r\n modifiedStartColumn = 0;\r\n modifiedEndLineNumber = 0;\r\n modifiedEndColumn = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedCharSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedStartColumn = modifiedCharSequence.getStartColumn(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedCharSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n modifiedEndColumn = modifiedCharSequence.getEndColumn(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n return new CharChange(originalStartLineNumber, originalStartColumn, originalEndLineNumber, originalEndColumn, modifiedStartLineNumber, modifiedStartColumn, modifiedEndLineNumber, modifiedEndColumn);\r\n }\r\n}\r\nfunction postProcessCharChanges(rawChanges) {\r\n if (rawChanges.length <= 1) {\r\n return rawChanges;\r\n }\r\n const result = [rawChanges[0]];\r\n let prevChange = result[0];\r\n for (let i = 1, len = rawChanges.length; i < len; i++) {\r\n const currChange = rawChanges[i];\r\n const originalMatchingLength = currChange.originalStart - (prevChange.originalStart + prevChange.originalLength);\r\n const modifiedMatchingLength = currChange.modifiedStart - (prevChange.modifiedStart + prevChange.modifiedLength);\r\n // Both of the above should be equal, but the continueProcessingPredicate may prevent this from being true\r\n const matchingLength = Math.min(originalMatchingLength, modifiedMatchingLength);\r\n if (matchingLength < MINIMUM_MATCHING_CHARACTER_LENGTH) {\r\n // Merge the current change into the previous one\r\n prevChange.originalLength = (currChange.originalStart + currChange.originalLength) - prevChange.originalStart;\r\n prevChange.modifiedLength = (currChange.modifiedStart + currChange.modifiedLength) - prevChange.modifiedStart;\r\n }\r\n else {\r\n // Add the current change\r\n result.push(currChange);\r\n prevChange = currChange;\r\n }\r\n }\r\n return result;\r\n}\r\nclass LineChange {\r\n constructor(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges) {\r\n this.originalStartLineNumber = originalStartLineNumber;\r\n this.originalEndLineNumber = originalEndLineNumber;\r\n this.modifiedStartLineNumber = modifiedStartLineNumber;\r\n this.modifiedEndLineNumber = modifiedEndLineNumber;\r\n this.charChanges = charChanges;\r\n }\r\n static createFromDiffResult(shouldIgnoreTrimWhitespace, diffChange, originalLineSequence, modifiedLineSequence, continueCharDiff, shouldComputeCharChanges, shouldPostProcessCharChanges) {\r\n let originalStartLineNumber;\r\n let originalEndLineNumber;\r\n let modifiedStartLineNumber;\r\n let modifiedEndLineNumber;\r\n let charChanges = undefined;\r\n if (diffChange.originalLength === 0) {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart) - 1;\r\n originalEndLineNumber = 0;\r\n }\r\n else {\r\n originalStartLineNumber = originalLineSequence.getStartLineNumber(diffChange.originalStart);\r\n originalEndLineNumber = originalLineSequence.getEndLineNumber(diffChange.originalStart + diffChange.originalLength - 1);\r\n }\r\n if (diffChange.modifiedLength === 0) {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart) - 1;\r\n modifiedEndLineNumber = 0;\r\n }\r\n else {\r\n modifiedStartLineNumber = modifiedLineSequence.getStartLineNumber(diffChange.modifiedStart);\r\n modifiedEndLineNumber = modifiedLineSequence.getEndLineNumber(diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n }\r\n if (shouldComputeCharChanges && diffChange.originalLength > 0 && diffChange.originalLength < 20 && diffChange.modifiedLength > 0 && diffChange.modifiedLength < 20 && continueCharDiff()) {\r\n // Compute character changes for diff chunks of at most 20 lines...\r\n const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);\r\n const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);\r\n let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueCharDiff, true).changes;\r\n if (shouldPostProcessCharChanges) {\r\n rawChanges = postProcessCharChanges(rawChanges);\r\n }\r\n charChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n charChanges.push(CharChange.createFromDiffChange(rawChanges[i], originalCharSequence, modifiedCharSequence));\r\n }\r\n }\r\n return new LineChange(originalStartLineNumber, originalEndLineNumber, modifiedStartLineNumber, modifiedEndLineNumber, charChanges);\r\n }\r\n}\r\nexport class DiffComputer {\r\n constructor(originalLines, modifiedLines, opts) {\r\n this.shouldComputeCharChanges = opts.shouldComputeCharChanges;\r\n this.shouldPostProcessCharChanges = opts.shouldPostProcessCharChanges;\r\n this.shouldIgnoreTrimWhitespace = opts.shouldIgnoreTrimWhitespace;\r\n this.shouldMakePrettyDiff = opts.shouldMakePrettyDiff;\r\n this.originalLines = originalLines;\r\n this.modifiedLines = modifiedLines;\r\n this.original = new LineSequence(originalLines);\r\n this.modified = new LineSequence(modifiedLines);\r\n this.continueLineDiff = createContinueProcessingPredicate(opts.maxComputationTime);\r\n this.continueCharDiff = createContinueProcessingPredicate(opts.maxComputationTime === 0 ? 0 : Math.min(opts.maxComputationTime, 5000)); // never run after 5s for character changes...\r\n }\r\n computeDiff() {\r\n if (this.original.lines.length === 1 && this.original.lines[0].length === 0) {\r\n // empty original => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: 1,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: this.modified.lines.length,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n if (this.modified.lines.length === 1 && this.modified.lines[0].length === 0) {\r\n // empty modified => fast path\r\n return {\r\n quitEarly: false,\r\n changes: [{\r\n originalStartLineNumber: 1,\r\n originalEndLineNumber: this.original.lines.length,\r\n modifiedStartLineNumber: 1,\r\n modifiedEndLineNumber: 1,\r\n charChanges: [{\r\n modifiedEndColumn: 0,\r\n modifiedEndLineNumber: 0,\r\n modifiedStartColumn: 0,\r\n modifiedStartLineNumber: 0,\r\n originalEndColumn: 0,\r\n originalEndLineNumber: 0,\r\n originalStartColumn: 0,\r\n originalStartLineNumber: 0\r\n }]\r\n }]\r\n };\r\n }\r\n const diffResult = computeDiff(this.original, this.modified, this.continueLineDiff, this.shouldMakePrettyDiff);\r\n const rawChanges = diffResult.changes;\r\n const quitEarly = diffResult.quitEarly;\r\n // The diff is always computed with ignoring trim whitespace\r\n // This ensures we get the prettiest diff\r\n if (this.shouldIgnoreTrimWhitespace) {\r\n const lineChanges = [];\r\n for (let i = 0, length = rawChanges.length; i < length; i++) {\r\n lineChanges.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, rawChanges[i], this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: lineChanges\r\n };\r\n }\r\n // Need to post-process and introduce changes where the trim whitespace is different\r\n // Note that we are looping starting at -1 to also cover the lines before the first change\r\n const result = [];\r\n let originalLineIndex = 0;\r\n let modifiedLineIndex = 0;\r\n for (let i = -1 /* !!!! */, len = rawChanges.length; i < len; i++) {\r\n const nextChange = (i + 1 < len ? rawChanges[i + 1] : null);\r\n const originalStop = (nextChange ? nextChange.originalStart : this.originalLines.length);\r\n const modifiedStop = (nextChange ? nextChange.modifiedStart : this.modifiedLines.length);\r\n while (originalLineIndex < originalStop && modifiedLineIndex < modifiedStop) {\r\n const originalLine = this.originalLines[originalLineIndex];\r\n const modifiedLine = this.modifiedLines[modifiedLineIndex];\r\n if (originalLine !== modifiedLine) {\r\n // These lines differ only in trim whitespace\r\n // Check the leading whitespace\r\n {\r\n let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);\r\n let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);\r\n while (originalStartColumn > 1 && modifiedStartColumn > 1) {\r\n const originalChar = originalLine.charCodeAt(originalStartColumn - 2);\r\n const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalStartColumn--;\r\n modifiedStartColumn--;\r\n }\r\n if (originalStartColumn > 1 || modifiedStartColumn > 1) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, 1, originalStartColumn, modifiedLineIndex + 1, 1, modifiedStartColumn);\r\n }\r\n }\r\n // Check the trailing whitespace\r\n {\r\n let originalEndColumn = getLastNonBlankColumn(originalLine, 1);\r\n let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);\r\n const originalMaxColumn = originalLine.length + 1;\r\n const modifiedMaxColumn = modifiedLine.length + 1;\r\n while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {\r\n const originalChar = originalLine.charCodeAt(originalEndColumn - 1);\r\n const modifiedChar = originalLine.charCodeAt(modifiedEndColumn - 1);\r\n if (originalChar !== modifiedChar) {\r\n break;\r\n }\r\n originalEndColumn++;\r\n modifiedEndColumn++;\r\n }\r\n if (originalEndColumn < originalMaxColumn || modifiedEndColumn < modifiedMaxColumn) {\r\n this._pushTrimWhitespaceCharChange(result, originalLineIndex + 1, originalEndColumn, originalMaxColumn, modifiedLineIndex + 1, modifiedEndColumn, modifiedMaxColumn);\r\n }\r\n }\r\n }\r\n originalLineIndex++;\r\n modifiedLineIndex++;\r\n }\r\n if (nextChange) {\r\n // Emit the actual change\r\n result.push(LineChange.createFromDiffResult(this.shouldIgnoreTrimWhitespace, nextChange, this.original, this.modified, this.continueCharDiff, this.shouldComputeCharChanges, this.shouldPostProcessCharChanges));\r\n originalLineIndex += nextChange.originalLength;\r\n modifiedLineIndex += nextChange.modifiedLength;\r\n }\r\n }\r\n return {\r\n quitEarly: quitEarly,\r\n changes: result\r\n };\r\n }\r\n _pushTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n if (this._mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn)) {\r\n // Merged into previous\r\n return;\r\n }\r\n let charChanges = undefined;\r\n if (this.shouldComputeCharChanges) {\r\n charChanges = [new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn)];\r\n }\r\n result.push(new LineChange(originalLineNumber, originalLineNumber, modifiedLineNumber, modifiedLineNumber, charChanges));\r\n }\r\n _mergeTrimWhitespaceCharChange(result, originalLineNumber, originalStartColumn, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedEndColumn) {\r\n const len = result.length;\r\n if (len === 0) {\r\n return false;\r\n }\r\n const prevChange = result[len - 1];\r\n if (prevChange.originalEndLineNumber === 0 || prevChange.modifiedEndLineNumber === 0) {\r\n // Don't merge with inserts/deletes\r\n return false;\r\n }\r\n if (prevChange.originalEndLineNumber + 1 === originalLineNumber && prevChange.modifiedEndLineNumber + 1 === modifiedLineNumber) {\r\n prevChange.originalEndLineNumber = originalLineNumber;\r\n prevChange.modifiedEndLineNumber = modifiedLineNumber;\r\n if (this.shouldComputeCharChanges && prevChange.charChanges) {\r\n prevChange.charChanges.push(new CharChange(originalLineNumber, originalStartColumn, originalLineNumber, originalEndColumn, modifiedLineNumber, modifiedStartColumn, modifiedLineNumber, modifiedEndColumn));\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\nfunction getFirstNonBlankColumn(txt, defaultValue) {\r\n const r = strings.firstNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 1;\r\n}\r\nfunction getLastNonBlankColumn(txt, defaultValue) {\r\n const r = strings.lastNonWhitespaceIndex(txt);\r\n if (r === -1) {\r\n return defaultValue;\r\n }\r\n return r + 2;\r\n}\r\nfunction createContinueProcessingPredicate(maximumRuntime) {\r\n if (maximumRuntime === 0) {\r\n return () => true;\r\n }\r\n const startTime = Date.now();\r\n return () => {\r\n return Date.now() - startTime < maximumRuntime;\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Position } from '../core/position.js';\r\nimport { PrefixSumComputer } from '../viewModel/prefixSumComputer.js';\r\nexport class MirrorTextModel {\r\n constructor(uri, lines, eol, versionId) {\r\n this._uri = uri;\r\n this._lines = lines;\r\n this._eol = eol;\r\n this._versionId = versionId;\r\n this._lineStarts = null;\r\n this._cachedTextValue = null;\r\n }\r\n dispose() {\r\n this._lines.length = 0;\r\n }\r\n getText() {\r\n if (this._cachedTextValue === null) {\r\n this._cachedTextValue = this._lines.join(this._eol);\r\n }\r\n return this._cachedTextValue;\r\n }\r\n onEvents(e) {\r\n if (e.eol && e.eol !== this._eol) {\r\n this._eol = e.eol;\r\n this._lineStarts = null;\r\n }\r\n // Update my lines\r\n const changes = e.changes;\r\n for (const change of changes) {\r\n this._acceptDeleteRange(change.range);\r\n this._acceptInsertText(new Position(change.range.startLineNumber, change.range.startColumn), change.text);\r\n }\r\n this._versionId = e.versionId;\r\n this._cachedTextValue = null;\r\n }\r\n _ensureLineStarts() {\r\n if (!this._lineStarts) {\r\n const eolLength = this._eol.length;\r\n const linesLength = this._lines.length;\r\n const lineStartValues = new Uint32Array(linesLength);\r\n for (let i = 0; i < linesLength; i++) {\r\n lineStartValues[i] = this._lines[i].length + eolLength;\r\n }\r\n this._lineStarts = new PrefixSumComputer(lineStartValues);\r\n }\r\n }\r\n /**\r\n * All changes to a line's text go through this method\r\n */\r\n _setLineText(lineIndex, newValue) {\r\n this._lines[lineIndex] = newValue;\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.changeValue(lineIndex, this._lines[lineIndex].length + this._eol.length);\r\n }\r\n }\r\n _acceptDeleteRange(range) {\r\n if (range.startLineNumber === range.endLineNumber) {\r\n if (range.startColumn === range.endColumn) {\r\n // Nothing to delete\r\n return;\r\n }\r\n // Delete text on the affected line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.startLineNumber - 1].substring(range.endColumn - 1));\r\n return;\r\n }\r\n // Take remaining text on last line and append it to remaining text on first line\r\n this._setLineText(range.startLineNumber - 1, this._lines[range.startLineNumber - 1].substring(0, range.startColumn - 1)\r\n + this._lines[range.endLineNumber - 1].substring(range.endColumn - 1));\r\n // Delete middle lines\r\n this._lines.splice(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.removeValues(range.startLineNumber, range.endLineNumber - range.startLineNumber);\r\n }\r\n }\r\n _acceptInsertText(position, insertText) {\r\n if (insertText.length === 0) {\r\n // Nothing to insert\r\n return;\r\n }\r\n let insertLines = insertText.split(/\\r\\n|\\r|\\n/);\r\n if (insertLines.length === 1) {\r\n // Inserting text on one line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]\r\n + this._lines[position.lineNumber - 1].substring(position.column - 1));\r\n return;\r\n }\r\n // Append overflowing text from first line to the end of text to insert\r\n insertLines[insertLines.length - 1] += this._lines[position.lineNumber - 1].substring(position.column - 1);\r\n // Delete overflowing text from first line and insert text on first line\r\n this._setLineText(position.lineNumber - 1, this._lines[position.lineNumber - 1].substring(0, position.column - 1)\r\n + insertLines[0]);\r\n // Insert new lines & store lengths\r\n let newLengths = new Uint32Array(insertLines.length - 1);\r\n for (let i = 1; i < insertLines.length; i++) {\r\n this._lines.splice(position.lineNumber + i - 1, 0, insertLines[i]);\r\n newLengths[i - 1] = insertLines[i].length + this._eol.length;\r\n }\r\n if (this._lineStarts) {\r\n // update prefix sum\r\n this._lineStarts.insertValues(position.lineNumber, newLengths);\r\n }\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport const USUAL_WORD_SEPARATORS = '`~!@#$%^&*()-=+[{]}\\\\|;:\\'\",.<>/?';\r\n/**\r\n * Create a word definition regular expression based on default word separators.\r\n * Optionally provide allowed separators that should be included in words.\r\n *\r\n * The default would look like this:\r\n * /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g\r\n */\r\nfunction createWordRegExp(allowInWords = '') {\r\n let source = '(-?\\\\d*\\\\.\\\\d\\\\w*)|([^';\r\n for (const sep of USUAL_WORD_SEPARATORS) {\r\n if (allowInWords.indexOf(sep) >= 0) {\r\n continue;\r\n }\r\n source += '\\\\' + sep;\r\n }\r\n source += '\\\\s]+)';\r\n return new RegExp(source, 'g');\r\n}\r\n// catches numbers (including floating numbers) in the first group, and alphanum in the second\r\nexport const DEFAULT_WORD_REGEXP = createWordRegExp();\r\nexport function ensureValidWordDefinition(wordDefinition) {\r\n let result = DEFAULT_WORD_REGEXP;\r\n if (wordDefinition && (wordDefinition instanceof RegExp)) {\r\n if (!wordDefinition.global) {\r\n let flags = 'g';\r\n if (wordDefinition.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (wordDefinition.multiline) {\r\n flags += 'm';\r\n }\r\n if (wordDefinition.unicode) {\r\n flags += 'u';\r\n }\r\n result = new RegExp(wordDefinition.source, flags);\r\n }\r\n else {\r\n result = wordDefinition;\r\n }\r\n }\r\n result.lastIndex = 0;\r\n return result;\r\n}\r\nconst _defaultConfig = {\r\n maxLen: 1000,\r\n windowSize: 15,\r\n timeBudget: 150\r\n};\r\nexport function getWordAtText(column, wordDefinition, text, textOffset, config = _defaultConfig) {\r\n if (text.length > config.maxLen) {\r\n // don't throw strings that long at the regexp\r\n // but use a sub-string in which a word must occur\r\n let start = column - config.maxLen / 2;\r\n if (start < 0) {\r\n textOffset += column;\r\n start = 0;\r\n }\r\n else {\r\n textOffset += start;\r\n }\r\n text = text.substring(start, column + config.maxLen / 2);\r\n return getWordAtText(column, wordDefinition, text, textOffset, config);\r\n }\r\n const t1 = Date.now();\r\n const pos = column - 1 - textOffset;\r\n let prevRegexIndex = -1;\r\n let match = null;\r\n for (let i = 1;; i++) {\r\n // check time budget\r\n if (Date.now() - t1 >= config.timeBudget) {\r\n // break;\r\n }\r\n // reset the index at which the regexp should start matching, also know where it\r\n // should stop so that subsequent search don't repeat previous searches\r\n const regexIndex = pos - config.windowSize * i;\r\n wordDefinition.lastIndex = Math.max(0, regexIndex);\r\n const thisMatch = _findRegexMatchEnclosingPosition(wordDefinition, text, pos, prevRegexIndex);\r\n if (!thisMatch && match) {\r\n // stop: we have something\r\n break;\r\n }\r\n match = thisMatch;\r\n // stop: searched at start\r\n if (regexIndex <= 0) {\r\n break;\r\n }\r\n prevRegexIndex = regexIndex;\r\n }\r\n if (match) {\r\n let result = {\r\n word: match[0],\r\n startColumn: textOffset + 1 + match.index,\r\n endColumn: textOffset + 1 + match.index + match[0].length\r\n };\r\n wordDefinition.lastIndex = 0;\r\n return result;\r\n }\r\n return null;\r\n}\r\nfunction _findRegexMatchEnclosingPosition(wordDefinition, text, pos, stopPos) {\r\n let match;\r\n while (match = wordDefinition.exec(text)) {\r\n const matchIndex = match.index || 0;\r\n if (matchIndex <= pos && wordDefinition.lastIndex >= pos) {\r\n return match;\r\n }\r\n else if (stopPos > 0 && matchIndex > stopPos) {\r\n return null;\r\n }\r\n }\r\n return null;\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CharacterClassifier } from '../core/characterClassifier.js';\r\nexport class Uint8Matrix {\r\n constructor(rows, cols, defaultValue) {\r\n const data = new Uint8Array(rows * cols);\r\n for (let i = 0, len = rows * cols; i < len; i++) {\r\n data[i] = defaultValue;\r\n }\r\n this._data = data;\r\n this.rows = rows;\r\n this.cols = cols;\r\n }\r\n get(row, col) {\r\n return this._data[row * this.cols + col];\r\n }\r\n set(row, col, value) {\r\n this._data[row * this.cols + col] = value;\r\n }\r\n}\r\nexport class StateMachine {\r\n constructor(edges) {\r\n let maxCharCode = 0;\r\n let maxState = 0 /* Invalid */;\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n if (chCode > maxCharCode) {\r\n maxCharCode = chCode;\r\n }\r\n if (from > maxState) {\r\n maxState = from;\r\n }\r\n if (to > maxState) {\r\n maxState = to;\r\n }\r\n }\r\n maxCharCode++;\r\n maxState++;\r\n let states = new Uint8Matrix(maxState, maxCharCode, 0 /* Invalid */);\r\n for (let i = 0, len = edges.length; i < len; i++) {\r\n let [from, chCode, to] = edges[i];\r\n states.set(from, chCode, to);\r\n }\r\n this._states = states;\r\n this._maxCharCode = maxCharCode;\r\n }\r\n nextState(currentState, chCode) {\r\n if (chCode < 0 || chCode >= this._maxCharCode) {\r\n return 0 /* Invalid */;\r\n }\r\n return this._states.get(currentState, chCode);\r\n }\r\n}\r\n// State machine for http:// or https:// or file://\r\nlet _stateMachine = null;\r\nfunction getStateMachine() {\r\n if (_stateMachine === null) {\r\n _stateMachine = new StateMachine([\r\n [1 /* Start */, 104 /* h */, 2 /* H */],\r\n [1 /* Start */, 72 /* H */, 2 /* H */],\r\n [1 /* Start */, 102 /* f */, 6 /* F */],\r\n [1 /* Start */, 70 /* F */, 6 /* F */],\r\n [2 /* H */, 116 /* t */, 3 /* HT */],\r\n [2 /* H */, 84 /* T */, 3 /* HT */],\r\n [3 /* HT */, 116 /* t */, 4 /* HTT */],\r\n [3 /* HT */, 84 /* T */, 4 /* HTT */],\r\n [4 /* HTT */, 112 /* p */, 5 /* HTTP */],\r\n [4 /* HTT */, 80 /* P */, 5 /* HTTP */],\r\n [5 /* HTTP */, 115 /* s */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 83 /* S */, 9 /* BeforeColon */],\r\n [5 /* HTTP */, 58 /* Colon */, 10 /* AfterColon */],\r\n [6 /* F */, 105 /* i */, 7 /* FI */],\r\n [6 /* F */, 73 /* I */, 7 /* FI */],\r\n [7 /* FI */, 108 /* l */, 8 /* FIL */],\r\n [7 /* FI */, 76 /* L */, 8 /* FIL */],\r\n [8 /* FIL */, 101 /* e */, 9 /* BeforeColon */],\r\n [8 /* FIL */, 69 /* E */, 9 /* BeforeColon */],\r\n [9 /* BeforeColon */, 58 /* Colon */, 10 /* AfterColon */],\r\n [10 /* AfterColon */, 47 /* Slash */, 11 /* AlmostThere */],\r\n [11 /* AlmostThere */, 47 /* Slash */, 12 /* End */],\r\n ]);\r\n }\r\n return _stateMachine;\r\n}\r\nlet _classifier = null;\r\nfunction getClassifier() {\r\n if (_classifier === null) {\r\n _classifier = new CharacterClassifier(0 /* None */);\r\n const FORCE_TERMINATION_CHARACTERS = ' \\t<>\\'\\\"、。。、,.:;‘“〈《「『【〔([{「」}])〕】』」》〉”’`~…';\r\n for (let i = 0; i < FORCE_TERMINATION_CHARACTERS.length; i++) {\r\n _classifier.set(FORCE_TERMINATION_CHARACTERS.charCodeAt(i), 1 /* ForceTermination */);\r\n }\r\n const CANNOT_END_WITH_CHARACTERS = '.,;';\r\n for (let i = 0; i < CANNOT_END_WITH_CHARACTERS.length; i++) {\r\n _classifier.set(CANNOT_END_WITH_CHARACTERS.charCodeAt(i), 2 /* CannotEndIn */);\r\n }\r\n }\r\n return _classifier;\r\n}\r\nexport class LinkComputer {\r\n static _createLink(classifier, line, lineNumber, linkBeginIndex, linkEndIndex) {\r\n // Do not allow to end link in certain characters...\r\n let lastIncludedCharIndex = linkEndIndex - 1;\r\n do {\r\n const chCode = line.charCodeAt(lastIncludedCharIndex);\r\n const chClass = classifier.get(chCode);\r\n if (chClass !== 2 /* CannotEndIn */) {\r\n break;\r\n }\r\n lastIncludedCharIndex--;\r\n } while (lastIncludedCharIndex > linkBeginIndex);\r\n // Handle links enclosed in parens, square brackets and curlys.\r\n if (linkBeginIndex > 0) {\r\n const charCodeBeforeLink = line.charCodeAt(linkBeginIndex - 1);\r\n const lastCharCodeInLink = line.charCodeAt(lastIncludedCharIndex);\r\n if ((charCodeBeforeLink === 40 /* OpenParen */ && lastCharCodeInLink === 41 /* CloseParen */)\r\n || (charCodeBeforeLink === 91 /* OpenSquareBracket */ && lastCharCodeInLink === 93 /* CloseSquareBracket */)\r\n || (charCodeBeforeLink === 123 /* OpenCurlyBrace */ && lastCharCodeInLink === 125 /* CloseCurlyBrace */)) {\r\n // Do not end in ) if ( is before the link start\r\n // Do not end in ] if [ is before the link start\r\n // Do not end in } if { is before the link start\r\n lastIncludedCharIndex--;\r\n }\r\n }\r\n return {\r\n range: {\r\n startLineNumber: lineNumber,\r\n startColumn: linkBeginIndex + 1,\r\n endLineNumber: lineNumber,\r\n endColumn: lastIncludedCharIndex + 2\r\n },\r\n url: line.substring(linkBeginIndex, lastIncludedCharIndex + 1)\r\n };\r\n }\r\n static computeLinks(model, stateMachine = getStateMachine()) {\r\n const classifier = getClassifier();\r\n let result = [];\r\n for (let i = 1, lineCount = model.getLineCount(); i <= lineCount; i++) {\r\n const line = model.getLineContent(i);\r\n const len = line.length;\r\n let j = 0;\r\n let linkBeginIndex = 0;\r\n let linkBeginChCode = 0;\r\n let state = 1 /* Start */;\r\n let hasOpenParens = false;\r\n let hasOpenSquareBracket = false;\r\n let inSquareBrackets = false;\r\n let hasOpenCurlyBracket = false;\r\n while (j < len) {\r\n let resetStateMachine = false;\r\n const chCode = line.charCodeAt(j);\r\n if (state === 13 /* Accept */) {\r\n let chClass;\r\n switch (chCode) {\r\n case 40 /* OpenParen */:\r\n hasOpenParens = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 41 /* CloseParen */:\r\n chClass = (hasOpenParens ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 91 /* OpenSquareBracket */:\r\n inSquareBrackets = true;\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 93 /* CloseSquareBracket */:\r\n inSquareBrackets = false;\r\n chClass = (hasOpenSquareBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n case 123 /* OpenCurlyBrace */:\r\n hasOpenCurlyBracket = true;\r\n chClass = 0 /* None */;\r\n break;\r\n case 125 /* CloseCurlyBrace */:\r\n chClass = (hasOpenCurlyBracket ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n /* The following three rules make it that ' or \" or ` are allowed inside links if the link began with a different one */\r\n case 39 /* SingleQuote */:\r\n chClass = (linkBeginChCode === 34 /* DoubleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 34 /* DoubleQuote */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 96 /* BackTick */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 96 /* BackTick */:\r\n chClass = (linkBeginChCode === 39 /* SingleQuote */ || linkBeginChCode === 34 /* DoubleQuote */) ? 0 /* None */ : 1 /* ForceTermination */;\r\n break;\r\n case 42 /* Asterisk */:\r\n // `*` terminates a link if the link began with `*`\r\n chClass = (linkBeginChCode === 42 /* Asterisk */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 124 /* Pipe */:\r\n // `|` terminates a link if the link began with `|`\r\n chClass = (linkBeginChCode === 124 /* Pipe */) ? 1 /* ForceTermination */ : 0 /* None */;\r\n break;\r\n case 32 /* Space */:\r\n // ` ` allow space in between [ and ]\r\n chClass = (inSquareBrackets ? 0 /* None */ : 1 /* ForceTermination */);\r\n break;\r\n default:\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, j));\r\n resetStateMachine = true;\r\n }\r\n }\r\n else if (state === 12 /* End */) {\r\n let chClass;\r\n if (chCode === 91 /* OpenSquareBracket */) {\r\n // Allow for the authority part to contain ipv6 addresses which contain [ and ]\r\n hasOpenSquareBracket = true;\r\n chClass = 0 /* None */;\r\n }\r\n else {\r\n chClass = classifier.get(chCode);\r\n }\r\n // Check if character terminates link\r\n if (chClass === 1 /* ForceTermination */) {\r\n resetStateMachine = true;\r\n }\r\n else {\r\n state = 13 /* Accept */;\r\n }\r\n }\r\n else {\r\n state = stateMachine.nextState(state, chCode);\r\n if (state === 0 /* Invalid */) {\r\n resetStateMachine = true;\r\n }\r\n }\r\n if (resetStateMachine) {\r\n state = 1 /* Start */;\r\n hasOpenParens = false;\r\n hasOpenSquareBracket = false;\r\n hasOpenCurlyBracket = false;\r\n // Record where the link started\r\n linkBeginIndex = j + 1;\r\n linkBeginChCode = chCode;\r\n }\r\n j++;\r\n }\r\n if (state === 13 /* Accept */) {\r\n result.push(LinkComputer._createLink(classifier, line, i, linkBeginIndex, len));\r\n }\r\n }\r\n return result;\r\n }\r\n}\r\n/**\r\n * Returns an array of all links contains in the provided\r\n * document. *Note* that this operation is computational\r\n * expensive and should not run in the UI thread.\r\n */\r\nexport function computeLinks(model) {\r\n if (!model || typeof model.getLineCount !== 'function' || typeof model.getLineContent !== 'function') {\r\n // Unknown caller!\r\n return [];\r\n }\r\n return LinkComputer.computeLinks(model);\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nexport class BasicInplaceReplace {\r\n constructor() {\r\n this._defaultValueSet = [\r\n ['true', 'false'],\r\n ['True', 'False'],\r\n ['Private', 'Public', 'Friend', 'ReadOnly', 'Partial', 'Protected', 'WriteOnly'],\r\n ['public', 'protected', 'private'],\r\n ];\r\n }\r\n navigateValueSet(range1, text1, range2, text2, up) {\r\n if (range1 && text1) {\r\n let result = this.doNavigateValueSet(text1, up);\r\n if (result) {\r\n return {\r\n range: range1,\r\n value: result\r\n };\r\n }\r\n }\r\n if (range2 && text2) {\r\n let result = this.doNavigateValueSet(text2, up);\r\n if (result) {\r\n return {\r\n range: range2,\r\n value: result\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n doNavigateValueSet(text, up) {\r\n let numberResult = this.numberReplace(text, up);\r\n if (numberResult !== null) {\r\n return numberResult;\r\n }\r\n return this.textReplace(text, up);\r\n }\r\n numberReplace(value, up) {\r\n let precision = Math.pow(10, value.length - (value.lastIndexOf('.') + 1));\r\n let n1 = Number(value);\r\n let n2 = parseFloat(value);\r\n if (!isNaN(n1) && !isNaN(n2) && n1 === n2) {\r\n if (n1 === 0 && !up) {\r\n return null; // don't do negative\r\n //\t\t\t} else if(n1 === 9 && up) {\r\n //\t\t\t\treturn null; // don't insert 10 into a number\r\n }\r\n else {\r\n n1 = Math.floor(n1 * precision);\r\n n1 += up ? precision : -precision;\r\n return String(n1 / precision);\r\n }\r\n }\r\n return null;\r\n }\r\n textReplace(value, up) {\r\n return this.valueSetsReplace(this._defaultValueSet, value, up);\r\n }\r\n valueSetsReplace(valueSets, value, up) {\r\n let result = null;\r\n for (let i = 0, len = valueSets.length; result === null && i < len; i++) {\r\n result = this.valueSetReplace(valueSets[i], value, up);\r\n }\r\n return result;\r\n }\r\n valueSetReplace(valueSet, value, up) {\r\n let idx = valueSet.indexOf(value);\r\n if (idx >= 0) {\r\n idx += up ? +1 : -1;\r\n if (idx < 0) {\r\n idx = valueSet.length - 1;\r\n }\r\n else {\r\n idx %= valueSet.length;\r\n }\r\n return valueSet[idx];\r\n }\r\n return null;\r\n }\r\n}\r\nBasicInplaceReplace.INSTANCE = new BasicInplaceReplace();\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nimport { mergeSort } from '../../../base/common/arrays.js';\r\nimport { stringDiff } from '../../../base/common/diff/diff.js';\r\nimport { globals } from '../../../base/common/platform.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { DiffComputer } from '../diff/diffComputer.js';\r\nimport { MirrorTextModel as BaseMirrorModel } from '../model/mirrorTextModel.js';\r\nimport { ensureValidWordDefinition, getWordAtText } from '../model/wordHelper.js';\r\nimport { computeLinks } from '../modes/linkComputer.js';\r\nimport { BasicInplaceReplace } from '../modes/supports/inplaceReplaceSupport.js';\r\nimport { createMonacoBaseAPI } from '../standalone/standaloneBase.js';\r\nimport * as types from '../../../base/common/types.js';\r\n/**\r\n * @internal\r\n */\r\nclass MirrorModel extends BaseMirrorModel {\r\n get uri() {\r\n return this._uri;\r\n }\r\n get version() {\r\n return this._versionId;\r\n }\r\n get eol() {\r\n return this._eol;\r\n }\r\n getValue() {\r\n return this.getText();\r\n }\r\n getLinesContent() {\r\n return this._lines.slice(0);\r\n }\r\n getLineCount() {\r\n return this._lines.length;\r\n }\r\n getLineContent(lineNumber) {\r\n return this._lines[lineNumber - 1];\r\n }\r\n getWordAtPosition(position, wordDefinition) {\r\n let wordAtText = getWordAtText(position.column, ensureValidWordDefinition(wordDefinition), this._lines[position.lineNumber - 1], 0);\r\n if (wordAtText) {\r\n return new Range(position.lineNumber, wordAtText.startColumn, position.lineNumber, wordAtText.endColumn);\r\n }\r\n return null;\r\n }\r\n words(wordDefinition) {\r\n const lines = this._lines;\r\n const wordenize = this._wordenize.bind(this);\r\n let lineNumber = 0;\r\n let lineText = '';\r\n let wordRangesIdx = 0;\r\n let wordRanges = [];\r\n return {\r\n *[Symbol.iterator]() {\r\n while (true) {\r\n if (wordRangesIdx < wordRanges.length) {\r\n const value = lineText.substring(wordRanges[wordRangesIdx].start, wordRanges[wordRangesIdx].end);\r\n wordRangesIdx += 1;\r\n yield value;\r\n }\r\n else {\r\n if (lineNumber < lines.length) {\r\n lineText = lines[lineNumber];\r\n wordRanges = wordenize(lineText, wordDefinition);\r\n wordRangesIdx = 0;\r\n lineNumber += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n getLineWords(lineNumber, wordDefinition) {\r\n let content = this._lines[lineNumber - 1];\r\n let ranges = this._wordenize(content, wordDefinition);\r\n let words = [];\r\n for (const range of ranges) {\r\n words.push({\r\n word: content.substring(range.start, range.end),\r\n startColumn: range.start + 1,\r\n endColumn: range.end + 1\r\n });\r\n }\r\n return words;\r\n }\r\n _wordenize(content, wordDefinition) {\r\n const result = [];\r\n let match;\r\n wordDefinition.lastIndex = 0; // reset lastIndex just to be sure\r\n while (match = wordDefinition.exec(content)) {\r\n if (match[0].length === 0) {\r\n // it did match the empty string\r\n break;\r\n }\r\n result.push({ start: match.index, end: match.index + match[0].length });\r\n }\r\n return result;\r\n }\r\n getValueInRange(range) {\r\n range = this._validateRange(range);\r\n if (range.startLineNumber === range.endLineNumber) {\r\n return this._lines[range.startLineNumber - 1].substring(range.startColumn - 1, range.endColumn - 1);\r\n }\r\n let lineEnding = this._eol;\r\n let startLineIndex = range.startLineNumber - 1;\r\n let endLineIndex = range.endLineNumber - 1;\r\n let resultLines = [];\r\n resultLines.push(this._lines[startLineIndex].substring(range.startColumn - 1));\r\n for (let i = startLineIndex + 1; i < endLineIndex; i++) {\r\n resultLines.push(this._lines[i]);\r\n }\r\n resultLines.push(this._lines[endLineIndex].substring(0, range.endColumn - 1));\r\n return resultLines.join(lineEnding);\r\n }\r\n offsetAt(position) {\r\n position = this._validatePosition(position);\r\n this._ensureLineStarts();\r\n return this._lineStarts.getAccumulatedValue(position.lineNumber - 2) + (position.column - 1);\r\n }\r\n positionAt(offset) {\r\n offset = Math.floor(offset);\r\n offset = Math.max(0, offset);\r\n this._ensureLineStarts();\r\n let out = this._lineStarts.getIndexOf(offset);\r\n let lineLength = this._lines[out.index].length;\r\n // Ensure we return a valid position\r\n return {\r\n lineNumber: 1 + out.index,\r\n column: 1 + Math.min(out.remainder, lineLength)\r\n };\r\n }\r\n _validateRange(range) {\r\n const start = this._validatePosition({ lineNumber: range.startLineNumber, column: range.startColumn });\r\n const end = this._validatePosition({ lineNumber: range.endLineNumber, column: range.endColumn });\r\n if (start.lineNumber !== range.startLineNumber\r\n || start.column !== range.startColumn\r\n || end.lineNumber !== range.endLineNumber\r\n || end.column !== range.endColumn) {\r\n return {\r\n startLineNumber: start.lineNumber,\r\n startColumn: start.column,\r\n endLineNumber: end.lineNumber,\r\n endColumn: end.column\r\n };\r\n }\r\n return range;\r\n }\r\n _validatePosition(position) {\r\n if (!Position.isIPosition(position)) {\r\n throw new Error('bad position');\r\n }\r\n let { lineNumber, column } = position;\r\n let hasChanged = false;\r\n if (lineNumber < 1) {\r\n lineNumber = 1;\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (lineNumber > this._lines.length) {\r\n lineNumber = this._lines.length;\r\n column = this._lines[lineNumber - 1].length + 1;\r\n hasChanged = true;\r\n }\r\n else {\r\n let maxCharacter = this._lines[lineNumber - 1].length + 1;\r\n if (column < 1) {\r\n column = 1;\r\n hasChanged = true;\r\n }\r\n else if (column > maxCharacter) {\r\n column = maxCharacter;\r\n hasChanged = true;\r\n }\r\n }\r\n if (!hasChanged) {\r\n return position;\r\n }\r\n else {\r\n return { lineNumber, column };\r\n }\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nexport class EditorSimpleWorker {\r\n constructor(host, foreignModuleFactory) {\r\n this._host = host;\r\n this._models = Object.create(null);\r\n this._foreignModuleFactory = foreignModuleFactory;\r\n this._foreignModule = null;\r\n }\r\n dispose() {\r\n this._models = Object.create(null);\r\n }\r\n _getModel(uri) {\r\n return this._models[uri];\r\n }\r\n _getModels() {\r\n let all = [];\r\n Object.keys(this._models).forEach((key) => all.push(this._models[key]));\r\n return all;\r\n }\r\n acceptNewModel(data) {\r\n this._models[data.url] = new MirrorModel(URI.parse(data.url), data.lines, data.EOL, data.versionId);\r\n }\r\n acceptModelChanged(strURL, e) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n let model = this._models[strURL];\r\n model.onEvents(e);\r\n }\r\n acceptRemovedModel(strURL) {\r\n if (!this._models[strURL]) {\r\n return;\r\n }\r\n delete this._models[strURL];\r\n }\r\n // ---- BEGIN diff --------------------------------------------------------------------------\r\n computeDiff(originalUrl, modifiedUrl, ignoreTrimWhitespace, maxComputationTime) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const original = this._getModel(originalUrl);\r\n const modified = this._getModel(modifiedUrl);\r\n if (!original || !modified) {\r\n return null;\r\n }\r\n const originalLines = original.getLinesContent();\r\n const modifiedLines = modified.getLinesContent();\r\n const diffComputer = new DiffComputer(originalLines, modifiedLines, {\r\n shouldComputeCharChanges: true,\r\n shouldPostProcessCharChanges: true,\r\n shouldIgnoreTrimWhitespace: ignoreTrimWhitespace,\r\n shouldMakePrettyDiff: true,\r\n maxComputationTime: maxComputationTime\r\n });\r\n const diffResult = diffComputer.computeDiff();\r\n const identical = (diffResult.changes.length > 0 ? false : this._modelsAreIdentical(original, modified));\r\n return {\r\n quitEarly: diffResult.quitEarly,\r\n identical: identical,\r\n changes: diffResult.changes\r\n };\r\n });\r\n }\r\n _modelsAreIdentical(original, modified) {\r\n const originalLineCount = original.getLineCount();\r\n const modifiedLineCount = modified.getLineCount();\r\n if (originalLineCount !== modifiedLineCount) {\r\n return false;\r\n }\r\n for (let line = 1; line <= originalLineCount; line++) {\r\n const originalLine = original.getLineContent(line);\r\n const modifiedLine = modified.getLineContent(line);\r\n if (originalLine !== modifiedLine) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n computeMoreMinimalEdits(modelUrl, edits) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return edits;\r\n }\r\n const result = [];\r\n let lastEol = undefined;\r\n edits = mergeSort(edits, (a, b) => {\r\n if (a.range && b.range) {\r\n return Range.compareRangesUsingStarts(a.range, b.range);\r\n }\r\n // eol only changes should go to the end\r\n let aRng = a.range ? 0 : 1;\r\n let bRng = b.range ? 0 : 1;\r\n return aRng - bRng;\r\n });\r\n for (let { range, text, eol } of edits) {\r\n if (typeof eol === 'number') {\r\n lastEol = eol;\r\n }\r\n if (Range.isEmpty(range) && !text) {\r\n // empty change\r\n continue;\r\n }\r\n const original = model.getValueInRange(range);\r\n text = text.replace(/\\r\\n|\\n|\\r/g, model.eol);\r\n if (original === text) {\r\n // noop\r\n continue;\r\n }\r\n // make sure diff won't take too long\r\n if (Math.max(text.length, original.length) > EditorSimpleWorker._diffLimit) {\r\n result.push({ range, text });\r\n continue;\r\n }\r\n // compute diff between original and edit.text\r\n const changes = stringDiff(original, text, false);\r\n const editOffset = model.offsetAt(Range.lift(range).getStartPosition());\r\n for (const change of changes) {\r\n const start = model.positionAt(editOffset + change.originalStart);\r\n const end = model.positionAt(editOffset + change.originalStart + change.originalLength);\r\n const newEdit = {\r\n text: text.substr(change.modifiedStart, change.modifiedLength),\r\n range: { startLineNumber: start.lineNumber, startColumn: start.column, endLineNumber: end.lineNumber, endColumn: end.column }\r\n };\r\n if (model.getValueInRange(newEdit.range) !== newEdit.text) {\r\n result.push(newEdit);\r\n }\r\n }\r\n }\r\n if (typeof lastEol === 'number') {\r\n result.push({ eol: lastEol, text: '', range: { startLineNumber: 0, startColumn: 0, endLineNumber: 0, endColumn: 0 } });\r\n }\r\n return result;\r\n });\r\n }\r\n // ---- END minimal edits ---------------------------------------------------------------\r\n computeLinks(modelUrl) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n return computeLinks(model);\r\n });\r\n }\r\n textualSuggest(modelUrl, position, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n const words = [];\r\n const seen = new Set();\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const wordAt = model.getWordAtPosition(position, wordDefRegExp);\r\n if (wordAt) {\r\n seen.add(model.getValueInRange(wordAt));\r\n }\r\n for (let word of model.words(wordDefRegExp)) {\r\n if (seen.has(word)) {\r\n continue;\r\n }\r\n seen.add(word);\r\n if (!isNaN(Number(word))) {\r\n continue;\r\n }\r\n words.push(word);\r\n if (seen.size > EditorSimpleWorker._suggestionsLimit) {\r\n break;\r\n }\r\n }\r\n return words;\r\n });\r\n }\r\n // ---- END suggest --------------------------------------------------------------------------\r\n //#region -- word ranges --\r\n computeWordRanges(modelUrl, range, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return Object.create(null);\r\n }\r\n const wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n const result = Object.create(null);\r\n for (let line = range.startLineNumber; line < range.endLineNumber; line++) {\r\n let words = model.getLineWords(line, wordDefRegExp);\r\n for (const word of words) {\r\n if (!isNaN(Number(word.word))) {\r\n continue;\r\n }\r\n let array = result[word.word];\r\n if (!array) {\r\n array = [];\r\n result[word.word] = array;\r\n }\r\n array.push({\r\n startLineNumber: line,\r\n startColumn: word.startColumn,\r\n endLineNumber: line,\r\n endColumn: word.endColumn\r\n });\r\n }\r\n }\r\n return result;\r\n });\r\n }\r\n //#endregion\r\n navigateValueSet(modelUrl, range, up, wordDef, wordDefFlags) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n let model = this._getModel(modelUrl);\r\n if (!model) {\r\n return null;\r\n }\r\n let wordDefRegExp = new RegExp(wordDef, wordDefFlags);\r\n if (range.startColumn === range.endColumn) {\r\n range = {\r\n startLineNumber: range.startLineNumber,\r\n startColumn: range.startColumn,\r\n endLineNumber: range.endLineNumber,\r\n endColumn: range.endColumn + 1\r\n };\r\n }\r\n let selectionText = model.getValueInRange(range);\r\n let wordRange = model.getWordAtPosition({ lineNumber: range.startLineNumber, column: range.startColumn }, wordDefRegExp);\r\n if (!wordRange) {\r\n return null;\r\n }\r\n let word = model.getValueInRange(wordRange);\r\n let result = BasicInplaceReplace.INSTANCE.navigateValueSet(range, selectionText, wordRange, word, up);\r\n return result;\r\n });\r\n }\r\n // ---- BEGIN foreign module support --------------------------------------------------------------------------\r\n loadForeignModule(moduleId, createData, foreignHostMethods) {\r\n const proxyMethodRequest = (method, args) => {\r\n return this._host.fhr(method, args);\r\n };\r\n const foreignHost = types.createProxyObject(foreignHostMethods, proxyMethodRequest);\r\n let ctx = {\r\n host: foreignHost,\r\n getMirrorModels: () => {\r\n return this._getModels();\r\n }\r\n };\r\n if (this._foreignModuleFactory) {\r\n this._foreignModule = this._foreignModuleFactory(ctx, createData);\r\n // static foreing module\r\n return Promise.resolve(types.getAllMethodNames(this._foreignModule));\r\n }\r\n // ESM-comment-begin\r\n // \t\treturn new Promise<any>((resolve, reject) => {\r\n // \t\t\trequire([moduleId], (foreignModule: { create: IForeignModuleFactory }) => {\r\n // \t\t\t\tthis._foreignModule = foreignModule.create(ctx, createData);\r\n // \r\n // \t\t\t\tresolve(types.getAllMethodNames(this._foreignModule));\r\n // \r\n // \t\t\t}, reject);\r\n // \t\t});\r\n // ESM-comment-end\r\n // ESM-uncomment-begin\r\n return Promise.reject(new Error(`Unexpected usage`));\r\n // ESM-uncomment-end\r\n }\r\n // foreign method request\r\n fmr(method, args) {\r\n if (!this._foreignModule || typeof this._foreignModule[method] !== 'function') {\r\n return Promise.reject(new Error('Missing requestHandler or method: ' + method));\r\n }\r\n try {\r\n return Promise.resolve(this._foreignModule[method].apply(this._foreignModule, args));\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n}\r\n// ---- END diff --------------------------------------------------------------------------\r\n// ---- BEGIN minimal edits ---------------------------------------------------------------\r\nEditorSimpleWorker._diffLimit = 100000;\r\n// ---- BEGIN suggest --------------------------------------------------------------------------\r\nEditorSimpleWorker._suggestionsLimit = 10000;\r\n/**\r\n * Called on the worker side\r\n * @internal\r\n */\r\nexport function create(host) {\r\n return new EditorSimpleWorker(host, null);\r\n}\r\nif (typeof importScripts === 'function') {\r\n // Running in a web worker\r\n globals.monaco = createMonacoBaseAPI();\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { CancellationTokenSource } from '../../../base/common/cancellation.js';\r\nimport { Emitter } from '../../../base/common/event.js';\r\nimport { KeyChord } from '../../../base/common/keyCodes.js';\r\nimport { URI } from '../../../base/common/uri.js';\r\nimport { Position } from '../core/position.js';\r\nimport { Range } from '../core/range.js';\r\nimport { Selection } from '../core/selection.js';\r\nimport { Token } from '../core/token.js';\r\nimport * as standaloneEnums from './standaloneEnums.js';\r\nexport class KeyMod {\r\n static chord(firstPart, secondPart) {\r\n return KeyChord(firstPart, secondPart);\r\n }\r\n}\r\nKeyMod.CtrlCmd = 2048 /* CtrlCmd */;\r\nKeyMod.Shift = 1024 /* Shift */;\r\nKeyMod.Alt = 512 /* Alt */;\r\nKeyMod.WinCtrl = 256 /* WinCtrl */;\r\nexport function createMonacoBaseAPI() {\r\n return {\r\n editor: undefined,\r\n languages: undefined,\r\n CancellationTokenSource: CancellationTokenSource,\r\n Emitter: Emitter,\r\n KeyCode: standaloneEnums.KeyCode,\r\n KeyMod: KeyMod,\r\n Position: Position,\r\n Range: Range,\r\n Selection: Selection,\r\n SelectionDirection: standaloneEnums.SelectionDirection,\r\n MarkerSeverity: standaloneEnums.MarkerSeverity,\r\n MarkerTag: standaloneEnums.MarkerTag,\r\n Uri: URI,\r\n Token: Token\r\n };\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.\r\nexport var AccessibilitySupport;\r\n(function (AccessibilitySupport) {\r\n /**\r\n * This should be the browser case where it is not known if a screen reader is attached or no.\r\n */\r\n AccessibilitySupport[AccessibilitySupport[\"Unknown\"] = 0] = \"Unknown\";\r\n AccessibilitySupport[AccessibilitySupport[\"Disabled\"] = 1] = \"Disabled\";\r\n AccessibilitySupport[AccessibilitySupport[\"Enabled\"] = 2] = \"Enabled\";\r\n})(AccessibilitySupport || (AccessibilitySupport = {}));\r\nexport var CompletionItemInsertTextRule;\r\n(function (CompletionItemInsertTextRule) {\r\n /**\r\n * Adjust whitespace/indentation of multiline insert texts to\r\n * match the current line indentation.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"KeepWhitespace\"] = 1] = \"KeepWhitespace\";\r\n /**\r\n * `insertText` is a snippet.\r\n */\r\n CompletionItemInsertTextRule[CompletionItemInsertTextRule[\"InsertAsSnippet\"] = 4] = \"InsertAsSnippet\";\r\n})(CompletionItemInsertTextRule || (CompletionItemInsertTextRule = {}));\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind[CompletionItemKind[\"Method\"] = 0] = \"Method\";\r\n CompletionItemKind[CompletionItemKind[\"Function\"] = 1] = \"Function\";\r\n CompletionItemKind[CompletionItemKind[\"Constructor\"] = 2] = \"Constructor\";\r\n CompletionItemKind[CompletionItemKind[\"Field\"] = 3] = \"Field\";\r\n CompletionItemKind[CompletionItemKind[\"Variable\"] = 4] = \"Variable\";\r\n CompletionItemKind[CompletionItemKind[\"Class\"] = 5] = \"Class\";\r\n CompletionItemKind[CompletionItemKind[\"Struct\"] = 6] = \"Struct\";\r\n CompletionItemKind[CompletionItemKind[\"Interface\"] = 7] = \"Interface\";\r\n CompletionItemKind[CompletionItemKind[\"Module\"] = 8] = \"Module\";\r\n CompletionItemKind[CompletionItemKind[\"Property\"] = 9] = \"Property\";\r\n CompletionItemKind[CompletionItemKind[\"Event\"] = 10] = \"Event\";\r\n CompletionItemKind[CompletionItemKind[\"Operator\"] = 11] = \"Operator\";\r\n CompletionItemKind[CompletionItemKind[\"Unit\"] = 12] = \"Unit\";\r\n CompletionItemKind[CompletionItemKind[\"Value\"] = 13] = \"Value\";\r\n CompletionItemKind[CompletionItemKind[\"Constant\"] = 14] = \"Constant\";\r\n CompletionItemKind[CompletionItemKind[\"Enum\"] = 15] = \"Enum\";\r\n CompletionItemKind[CompletionItemKind[\"EnumMember\"] = 16] = \"EnumMember\";\r\n CompletionItemKind[CompletionItemKind[\"Keyword\"] = 17] = \"Keyword\";\r\n CompletionItemKind[CompletionItemKind[\"Text\"] = 18] = \"Text\";\r\n CompletionItemKind[CompletionItemKind[\"Color\"] = 19] = \"Color\";\r\n CompletionItemKind[CompletionItemKind[\"File\"] = 20] = \"File\";\r\n CompletionItemKind[CompletionItemKind[\"Reference\"] = 21] = \"Reference\";\r\n CompletionItemKind[CompletionItemKind[\"Customcolor\"] = 22] = \"Customcolor\";\r\n CompletionItemKind[CompletionItemKind[\"Folder\"] = 23] = \"Folder\";\r\n CompletionItemKind[CompletionItemKind[\"TypeParameter\"] = 24] = \"TypeParameter\";\r\n CompletionItemKind[CompletionItemKind[\"User\"] = 25] = \"User\";\r\n CompletionItemKind[CompletionItemKind[\"Issue\"] = 26] = \"Issue\";\r\n CompletionItemKind[CompletionItemKind[\"Snippet\"] = 27] = \"Snippet\";\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n CompletionItemTag[CompletionItemTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * How a suggest provider was triggered.\r\n */\r\nexport var CompletionTriggerKind;\r\n(function (CompletionTriggerKind) {\r\n CompletionTriggerKind[CompletionTriggerKind[\"Invoke\"] = 0] = \"Invoke\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerCharacter\"] = 1] = \"TriggerCharacter\";\r\n CompletionTriggerKind[CompletionTriggerKind[\"TriggerForIncompleteCompletions\"] = 2] = \"TriggerForIncompleteCompletions\";\r\n})(CompletionTriggerKind || (CompletionTriggerKind = {}));\r\n/**\r\n * A positioning preference for rendering content widgets.\r\n */\r\nexport var ContentWidgetPositionPreference;\r\n(function (ContentWidgetPositionPreference) {\r\n /**\r\n * Place the content widget exactly at a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"EXACT\"] = 0] = \"EXACT\";\r\n /**\r\n * Place the content widget above a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"ABOVE\"] = 1] = \"ABOVE\";\r\n /**\r\n * Place the content widget below a position\r\n */\r\n ContentWidgetPositionPreference[ContentWidgetPositionPreference[\"BELOW\"] = 2] = \"BELOW\";\r\n})(ContentWidgetPositionPreference || (ContentWidgetPositionPreference = {}));\r\n/**\r\n * Describes the reason the cursor has changed its position.\r\n */\r\nexport var CursorChangeReason;\r\n(function (CursorChangeReason) {\r\n /**\r\n * Unknown or not set.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"NotSet\"] = 0] = \"NotSet\";\r\n /**\r\n * A `model.setValue()` was called.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"ContentFlush\"] = 1] = \"ContentFlush\";\r\n /**\r\n * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"RecoverFromMarkers\"] = 2] = \"RecoverFromMarkers\";\r\n /**\r\n * There was an explicit user gesture.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Explicit\"] = 3] = \"Explicit\";\r\n /**\r\n * There was a Paste.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Paste\"] = 4] = \"Paste\";\r\n /**\r\n * There was an Undo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Undo\"] = 5] = \"Undo\";\r\n /**\r\n * There was a Redo.\r\n */\r\n CursorChangeReason[CursorChangeReason[\"Redo\"] = 6] = \"Redo\";\r\n})(CursorChangeReason || (CursorChangeReason = {}));\r\n/**\r\n * The default end of line to use when instantiating models.\r\n */\r\nexport var DefaultEndOfLine;\r\n(function (DefaultEndOfLine) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n DefaultEndOfLine[DefaultEndOfLine[\"CRLF\"] = 2] = \"CRLF\";\r\n})(DefaultEndOfLine || (DefaultEndOfLine = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Text\"] = 0] = \"Text\";\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Read\"] = 1] = \"Read\";\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind[DocumentHighlightKind[\"Write\"] = 2] = \"Write\";\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * Configuration options for auto indentation in the editor\r\n */\r\nexport var EditorAutoIndentStrategy;\r\n(function (EditorAutoIndentStrategy) {\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"None\"] = 0] = \"None\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Keep\"] = 1] = \"Keep\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Brackets\"] = 2] = \"Brackets\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Advanced\"] = 3] = \"Advanced\";\r\n EditorAutoIndentStrategy[EditorAutoIndentStrategy[\"Full\"] = 4] = \"Full\";\r\n})(EditorAutoIndentStrategy || (EditorAutoIndentStrategy = {}));\r\nexport var EditorOption;\r\n(function (EditorOption) {\r\n EditorOption[EditorOption[\"acceptSuggestionOnCommitCharacter\"] = 0] = \"acceptSuggestionOnCommitCharacter\";\r\n EditorOption[EditorOption[\"acceptSuggestionOnEnter\"] = 1] = \"acceptSuggestionOnEnter\";\r\n EditorOption[EditorOption[\"accessibilitySupport\"] = 2] = \"accessibilitySupport\";\r\n EditorOption[EditorOption[\"accessibilityPageSize\"] = 3] = \"accessibilityPageSize\";\r\n EditorOption[EditorOption[\"ariaLabel\"] = 4] = \"ariaLabel\";\r\n EditorOption[EditorOption[\"autoClosingBrackets\"] = 5] = \"autoClosingBrackets\";\r\n EditorOption[EditorOption[\"autoClosingOvertype\"] = 6] = \"autoClosingOvertype\";\r\n EditorOption[EditorOption[\"autoClosingQuotes\"] = 7] = \"autoClosingQuotes\";\r\n EditorOption[EditorOption[\"autoIndent\"] = 8] = \"autoIndent\";\r\n EditorOption[EditorOption[\"automaticLayout\"] = 9] = \"automaticLayout\";\r\n EditorOption[EditorOption[\"autoSurround\"] = 10] = \"autoSurround\";\r\n EditorOption[EditorOption[\"codeLens\"] = 11] = \"codeLens\";\r\n EditorOption[EditorOption[\"colorDecorators\"] = 12] = \"colorDecorators\";\r\n EditorOption[EditorOption[\"columnSelection\"] = 13] = \"columnSelection\";\r\n EditorOption[EditorOption[\"comments\"] = 14] = \"comments\";\r\n EditorOption[EditorOption[\"contextmenu\"] = 15] = \"contextmenu\";\r\n EditorOption[EditorOption[\"copyWithSyntaxHighlighting\"] = 16] = \"copyWithSyntaxHighlighting\";\r\n EditorOption[EditorOption[\"cursorBlinking\"] = 17] = \"cursorBlinking\";\r\n EditorOption[EditorOption[\"cursorSmoothCaretAnimation\"] = 18] = \"cursorSmoothCaretAnimation\";\r\n EditorOption[EditorOption[\"cursorStyle\"] = 19] = \"cursorStyle\";\r\n EditorOption[EditorOption[\"cursorSurroundingLines\"] = 20] = \"cursorSurroundingLines\";\r\n EditorOption[EditorOption[\"cursorSurroundingLinesStyle\"] = 21] = \"cursorSurroundingLinesStyle\";\r\n EditorOption[EditorOption[\"cursorWidth\"] = 22] = \"cursorWidth\";\r\n EditorOption[EditorOption[\"disableLayerHinting\"] = 23] = \"disableLayerHinting\";\r\n EditorOption[EditorOption[\"disableMonospaceOptimizations\"] = 24] = \"disableMonospaceOptimizations\";\r\n EditorOption[EditorOption[\"dragAndDrop\"] = 25] = \"dragAndDrop\";\r\n EditorOption[EditorOption[\"emptySelectionClipboard\"] = 26] = \"emptySelectionClipboard\";\r\n EditorOption[EditorOption[\"extraEditorClassName\"] = 27] = \"extraEditorClassName\";\r\n EditorOption[EditorOption[\"fastScrollSensitivity\"] = 28] = \"fastScrollSensitivity\";\r\n EditorOption[EditorOption[\"find\"] = 29] = \"find\";\r\n EditorOption[EditorOption[\"fixedOverflowWidgets\"] = 30] = \"fixedOverflowWidgets\";\r\n EditorOption[EditorOption[\"folding\"] = 31] = \"folding\";\r\n EditorOption[EditorOption[\"foldingStrategy\"] = 32] = \"foldingStrategy\";\r\n EditorOption[EditorOption[\"foldingHighlight\"] = 33] = \"foldingHighlight\";\r\n EditorOption[EditorOption[\"unfoldOnClickAfterEndOfLine\"] = 34] = \"unfoldOnClickAfterEndOfLine\";\r\n EditorOption[EditorOption[\"fontFamily\"] = 35] = \"fontFamily\";\r\n EditorOption[EditorOption[\"fontInfo\"] = 36] = \"fontInfo\";\r\n EditorOption[EditorOption[\"fontLigatures\"] = 37] = \"fontLigatures\";\r\n EditorOption[EditorOption[\"fontSize\"] = 38] = \"fontSize\";\r\n EditorOption[EditorOption[\"fontWeight\"] = 39] = \"fontWeight\";\r\n EditorOption[EditorOption[\"formatOnPaste\"] = 40] = \"formatOnPaste\";\r\n EditorOption[EditorOption[\"formatOnType\"] = 41] = \"formatOnType\";\r\n EditorOption[EditorOption[\"glyphMargin\"] = 42] = \"glyphMargin\";\r\n EditorOption[EditorOption[\"gotoLocation\"] = 43] = \"gotoLocation\";\r\n EditorOption[EditorOption[\"hideCursorInOverviewRuler\"] = 44] = \"hideCursorInOverviewRuler\";\r\n EditorOption[EditorOption[\"highlightActiveIndentGuide\"] = 45] = \"highlightActiveIndentGuide\";\r\n EditorOption[EditorOption[\"hover\"] = 46] = \"hover\";\r\n EditorOption[EditorOption[\"inDiffEditor\"] = 47] = \"inDiffEditor\";\r\n EditorOption[EditorOption[\"letterSpacing\"] = 48] = \"letterSpacing\";\r\n EditorOption[EditorOption[\"lightbulb\"] = 49] = \"lightbulb\";\r\n EditorOption[EditorOption[\"lineDecorationsWidth\"] = 50] = \"lineDecorationsWidth\";\r\n EditorOption[EditorOption[\"lineHeight\"] = 51] = \"lineHeight\";\r\n EditorOption[EditorOption[\"lineNumbers\"] = 52] = \"lineNumbers\";\r\n EditorOption[EditorOption[\"lineNumbersMinChars\"] = 53] = \"lineNumbersMinChars\";\r\n EditorOption[EditorOption[\"links\"] = 54] = \"links\";\r\n EditorOption[EditorOption[\"matchBrackets\"] = 55] = \"matchBrackets\";\r\n EditorOption[EditorOption[\"minimap\"] = 56] = \"minimap\";\r\n EditorOption[EditorOption[\"mouseStyle\"] = 57] = \"mouseStyle\";\r\n EditorOption[EditorOption[\"mouseWheelScrollSensitivity\"] = 58] = \"mouseWheelScrollSensitivity\";\r\n EditorOption[EditorOption[\"mouseWheelZoom\"] = 59] = \"mouseWheelZoom\";\r\n EditorOption[EditorOption[\"multiCursorMergeOverlapping\"] = 60] = \"multiCursorMergeOverlapping\";\r\n EditorOption[EditorOption[\"multiCursorModifier\"] = 61] = \"multiCursorModifier\";\r\n EditorOption[EditorOption[\"multiCursorPaste\"] = 62] = \"multiCursorPaste\";\r\n EditorOption[EditorOption[\"occurrencesHighlight\"] = 63] = \"occurrencesHighlight\";\r\n EditorOption[EditorOption[\"overviewRulerBorder\"] = 64] = \"overviewRulerBorder\";\r\n EditorOption[EditorOption[\"overviewRulerLanes\"] = 65] = \"overviewRulerLanes\";\r\n EditorOption[EditorOption[\"padding\"] = 66] = \"padding\";\r\n EditorOption[EditorOption[\"parameterHints\"] = 67] = \"parameterHints\";\r\n EditorOption[EditorOption[\"peekWidgetDefaultFocus\"] = 68] = \"peekWidgetDefaultFocus\";\r\n EditorOption[EditorOption[\"definitionLinkOpensInPeek\"] = 69] = \"definitionLinkOpensInPeek\";\r\n EditorOption[EditorOption[\"quickSuggestions\"] = 70] = \"quickSuggestions\";\r\n EditorOption[EditorOption[\"quickSuggestionsDelay\"] = 71] = \"quickSuggestionsDelay\";\r\n EditorOption[EditorOption[\"readOnly\"] = 72] = \"readOnly\";\r\n EditorOption[EditorOption[\"renameOnType\"] = 73] = \"renameOnType\";\r\n EditorOption[EditorOption[\"renderControlCharacters\"] = 74] = \"renderControlCharacters\";\r\n EditorOption[EditorOption[\"renderIndentGuides\"] = 75] = \"renderIndentGuides\";\r\n EditorOption[EditorOption[\"renderFinalNewline\"] = 76] = \"renderFinalNewline\";\r\n EditorOption[EditorOption[\"renderLineHighlight\"] = 77] = \"renderLineHighlight\";\r\n EditorOption[EditorOption[\"renderLineHighlightOnlyWhenFocus\"] = 78] = \"renderLineHighlightOnlyWhenFocus\";\r\n EditorOption[EditorOption[\"renderValidationDecorations\"] = 79] = \"renderValidationDecorations\";\r\n EditorOption[EditorOption[\"renderWhitespace\"] = 80] = \"renderWhitespace\";\r\n EditorOption[EditorOption[\"revealHorizontalRightPadding\"] = 81] = \"revealHorizontalRightPadding\";\r\n EditorOption[EditorOption[\"roundedSelection\"] = 82] = \"roundedSelection\";\r\n EditorOption[EditorOption[\"rulers\"] = 83] = \"rulers\";\r\n EditorOption[EditorOption[\"scrollbar\"] = 84] = \"scrollbar\";\r\n EditorOption[EditorOption[\"scrollBeyondLastColumn\"] = 85] = \"scrollBeyondLastColumn\";\r\n EditorOption[EditorOption[\"scrollBeyondLastLine\"] = 86] = \"scrollBeyondLastLine\";\r\n EditorOption[EditorOption[\"scrollPredominantAxis\"] = 87] = \"scrollPredominantAxis\";\r\n EditorOption[EditorOption[\"selectionClipboard\"] = 88] = \"selectionClipboard\";\r\n EditorOption[EditorOption[\"selectionHighlight\"] = 89] = \"selectionHighlight\";\r\n EditorOption[EditorOption[\"selectOnLineNumbers\"] = 90] = \"selectOnLineNumbers\";\r\n EditorOption[EditorOption[\"showFoldingControls\"] = 91] = \"showFoldingControls\";\r\n EditorOption[EditorOption[\"showUnused\"] = 92] = \"showUnused\";\r\n EditorOption[EditorOption[\"snippetSuggestions\"] = 93] = \"snippetSuggestions\";\r\n EditorOption[EditorOption[\"smoothScrolling\"] = 94] = \"smoothScrolling\";\r\n EditorOption[EditorOption[\"stopRenderingLineAfter\"] = 95] = \"stopRenderingLineAfter\";\r\n EditorOption[EditorOption[\"suggest\"] = 96] = \"suggest\";\r\n EditorOption[EditorOption[\"suggestFontSize\"] = 97] = \"suggestFontSize\";\r\n EditorOption[EditorOption[\"suggestLineHeight\"] = 98] = \"suggestLineHeight\";\r\n EditorOption[EditorOption[\"suggestOnTriggerCharacters\"] = 99] = \"suggestOnTriggerCharacters\";\r\n EditorOption[EditorOption[\"suggestSelection\"] = 100] = \"suggestSelection\";\r\n EditorOption[EditorOption[\"tabCompletion\"] = 101] = \"tabCompletion\";\r\n EditorOption[EditorOption[\"tabIndex\"] = 102] = \"tabIndex\";\r\n EditorOption[EditorOption[\"unusualLineTerminators\"] = 103] = \"unusualLineTerminators\";\r\n EditorOption[EditorOption[\"useTabStops\"] = 104] = \"useTabStops\";\r\n EditorOption[EditorOption[\"wordSeparators\"] = 105] = \"wordSeparators\";\r\n EditorOption[EditorOption[\"wordWrap\"] = 106] = \"wordWrap\";\r\n EditorOption[EditorOption[\"wordWrapBreakAfterCharacters\"] = 107] = \"wordWrapBreakAfterCharacters\";\r\n EditorOption[EditorOption[\"wordWrapBreakBeforeCharacters\"] = 108] = \"wordWrapBreakBeforeCharacters\";\r\n EditorOption[EditorOption[\"wordWrapColumn\"] = 109] = \"wordWrapColumn\";\r\n EditorOption[EditorOption[\"wordWrapMinified\"] = 110] = \"wordWrapMinified\";\r\n EditorOption[EditorOption[\"wrappingIndent\"] = 111] = \"wrappingIndent\";\r\n EditorOption[EditorOption[\"wrappingStrategy\"] = 112] = \"wrappingStrategy\";\r\n EditorOption[EditorOption[\"showDeprecated\"] = 113] = \"showDeprecated\";\r\n EditorOption[EditorOption[\"editorClassName\"] = 114] = \"editorClassName\";\r\n EditorOption[EditorOption[\"pixelRatio\"] = 115] = \"pixelRatio\";\r\n EditorOption[EditorOption[\"tabFocusMode\"] = 116] = \"tabFocusMode\";\r\n EditorOption[EditorOption[\"layoutInfo\"] = 117] = \"layoutInfo\";\r\n EditorOption[EditorOption[\"wrappingInfo\"] = 118] = \"wrappingInfo\";\r\n})(EditorOption || (EditorOption = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLinePreference;\r\n(function (EndOfLinePreference) {\r\n /**\r\n * Use the end of line character identified in the text buffer.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"TextDefined\"] = 0] = \"TextDefined\";\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"LF\"] = 1] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLinePreference[EndOfLinePreference[\"CRLF\"] = 2] = \"CRLF\";\r\n})(EndOfLinePreference || (EndOfLinePreference = {}));\r\n/**\r\n * End of line character preference.\r\n */\r\nexport var EndOfLineSequence;\r\n(function (EndOfLineSequence) {\r\n /**\r\n * Use line feed (\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"LF\"] = 0] = \"LF\";\r\n /**\r\n * Use carriage return and line feed (\\r\\n) as the end of line character.\r\n */\r\n EndOfLineSequence[EndOfLineSequence[\"CRLF\"] = 1] = \"CRLF\";\r\n})(EndOfLineSequence || (EndOfLineSequence = {}));\r\n/**\r\n * Describes what to do with the indentation when pressing Enter.\r\n */\r\nexport var IndentAction;\r\n(function (IndentAction) {\r\n /**\r\n * Insert new line and copy the previous line's indentation.\r\n */\r\n IndentAction[IndentAction[\"None\"] = 0] = \"None\";\r\n /**\r\n * Insert new line and indent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Indent\"] = 1] = \"Indent\";\r\n /**\r\n * Insert two new lines:\r\n * - the first one indented which will hold the cursor\r\n * - the second one at the same indentation level\r\n */\r\n IndentAction[IndentAction[\"IndentOutdent\"] = 2] = \"IndentOutdent\";\r\n /**\r\n * Insert new line and outdent once (relative to the previous line's indentation).\r\n */\r\n IndentAction[IndentAction[\"Outdent\"] = 3] = \"Outdent\";\r\n})(IndentAction || (IndentAction = {}));\r\n/**\r\n * Virtual Key Codes, the value does not hold any inherent meaning.\r\n * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx\r\n * But these are \"more general\", as they should work across browsers & OS`s.\r\n */\r\nexport var KeyCode;\r\n(function (KeyCode) {\r\n /**\r\n * Placed first to cover the 0 value of the enum.\r\n */\r\n KeyCode[KeyCode[\"Unknown\"] = 0] = \"Unknown\";\r\n KeyCode[KeyCode[\"Backspace\"] = 1] = \"Backspace\";\r\n KeyCode[KeyCode[\"Tab\"] = 2] = \"Tab\";\r\n KeyCode[KeyCode[\"Enter\"] = 3] = \"Enter\";\r\n KeyCode[KeyCode[\"Shift\"] = 4] = \"Shift\";\r\n KeyCode[KeyCode[\"Ctrl\"] = 5] = \"Ctrl\";\r\n KeyCode[KeyCode[\"Alt\"] = 6] = \"Alt\";\r\n KeyCode[KeyCode[\"PauseBreak\"] = 7] = \"PauseBreak\";\r\n KeyCode[KeyCode[\"CapsLock\"] = 8] = \"CapsLock\";\r\n KeyCode[KeyCode[\"Escape\"] = 9] = \"Escape\";\r\n KeyCode[KeyCode[\"Space\"] = 10] = \"Space\";\r\n KeyCode[KeyCode[\"PageUp\"] = 11] = \"PageUp\";\r\n KeyCode[KeyCode[\"PageDown\"] = 12] = \"PageDown\";\r\n KeyCode[KeyCode[\"End\"] = 13] = \"End\";\r\n KeyCode[KeyCode[\"Home\"] = 14] = \"Home\";\r\n KeyCode[KeyCode[\"LeftArrow\"] = 15] = \"LeftArrow\";\r\n KeyCode[KeyCode[\"UpArrow\"] = 16] = \"UpArrow\";\r\n KeyCode[KeyCode[\"RightArrow\"] = 17] = \"RightArrow\";\r\n KeyCode[KeyCode[\"DownArrow\"] = 18] = \"DownArrow\";\r\n KeyCode[KeyCode[\"Insert\"] = 19] = \"Insert\";\r\n KeyCode[KeyCode[\"Delete\"] = 20] = \"Delete\";\r\n KeyCode[KeyCode[\"KEY_0\"] = 21] = \"KEY_0\";\r\n KeyCode[KeyCode[\"KEY_1\"] = 22] = \"KEY_1\";\r\n KeyCode[KeyCode[\"KEY_2\"] = 23] = \"KEY_2\";\r\n KeyCode[KeyCode[\"KEY_3\"] = 24] = \"KEY_3\";\r\n KeyCode[KeyCode[\"KEY_4\"] = 25] = \"KEY_4\";\r\n KeyCode[KeyCode[\"KEY_5\"] = 26] = \"KEY_5\";\r\n KeyCode[KeyCode[\"KEY_6\"] = 27] = \"KEY_6\";\r\n KeyCode[KeyCode[\"KEY_7\"] = 28] = \"KEY_7\";\r\n KeyCode[KeyCode[\"KEY_8\"] = 29] = \"KEY_8\";\r\n KeyCode[KeyCode[\"KEY_9\"] = 30] = \"KEY_9\";\r\n KeyCode[KeyCode[\"KEY_A\"] = 31] = \"KEY_A\";\r\n KeyCode[KeyCode[\"KEY_B\"] = 32] = \"KEY_B\";\r\n KeyCode[KeyCode[\"KEY_C\"] = 33] = \"KEY_C\";\r\n KeyCode[KeyCode[\"KEY_D\"] = 34] = \"KEY_D\";\r\n KeyCode[KeyCode[\"KEY_E\"] = 35] = \"KEY_E\";\r\n KeyCode[KeyCode[\"KEY_F\"] = 36] = \"KEY_F\";\r\n KeyCode[KeyCode[\"KEY_G\"] = 37] = \"KEY_G\";\r\n KeyCode[KeyCode[\"KEY_H\"] = 38] = \"KEY_H\";\r\n KeyCode[KeyCode[\"KEY_I\"] = 39] = \"KEY_I\";\r\n KeyCode[KeyCode[\"KEY_J\"] = 40] = \"KEY_J\";\r\n KeyCode[KeyCode[\"KEY_K\"] = 41] = \"KEY_K\";\r\n KeyCode[KeyCode[\"KEY_L\"] = 42] = \"KEY_L\";\r\n KeyCode[KeyCode[\"KEY_M\"] = 43] = \"KEY_M\";\r\n KeyCode[KeyCode[\"KEY_N\"] = 44] = \"KEY_N\";\r\n KeyCode[KeyCode[\"KEY_O\"] = 45] = \"KEY_O\";\r\n KeyCode[KeyCode[\"KEY_P\"] = 46] = \"KEY_P\";\r\n KeyCode[KeyCode[\"KEY_Q\"] = 47] = \"KEY_Q\";\r\n KeyCode[KeyCode[\"KEY_R\"] = 48] = \"KEY_R\";\r\n KeyCode[KeyCode[\"KEY_S\"] = 49] = \"KEY_S\";\r\n KeyCode[KeyCode[\"KEY_T\"] = 50] = \"KEY_T\";\r\n KeyCode[KeyCode[\"KEY_U\"] = 51] = \"KEY_U\";\r\n KeyCode[KeyCode[\"KEY_V\"] = 52] = \"KEY_V\";\r\n KeyCode[KeyCode[\"KEY_W\"] = 53] = \"KEY_W\";\r\n KeyCode[KeyCode[\"KEY_X\"] = 54] = \"KEY_X\";\r\n KeyCode[KeyCode[\"KEY_Y\"] = 55] = \"KEY_Y\";\r\n KeyCode[KeyCode[\"KEY_Z\"] = 56] = \"KEY_Z\";\r\n KeyCode[KeyCode[\"Meta\"] = 57] = \"Meta\";\r\n KeyCode[KeyCode[\"ContextMenu\"] = 58] = \"ContextMenu\";\r\n KeyCode[KeyCode[\"F1\"] = 59] = \"F1\";\r\n KeyCode[KeyCode[\"F2\"] = 60] = \"F2\";\r\n KeyCode[KeyCode[\"F3\"] = 61] = \"F3\";\r\n KeyCode[KeyCode[\"F4\"] = 62] = \"F4\";\r\n KeyCode[KeyCode[\"F5\"] = 63] = \"F5\";\r\n KeyCode[KeyCode[\"F6\"] = 64] = \"F6\";\r\n KeyCode[KeyCode[\"F7\"] = 65] = \"F7\";\r\n KeyCode[KeyCode[\"F8\"] = 66] = \"F8\";\r\n KeyCode[KeyCode[\"F9\"] = 67] = \"F9\";\r\n KeyCode[KeyCode[\"F10\"] = 68] = \"F10\";\r\n KeyCode[KeyCode[\"F11\"] = 69] = \"F11\";\r\n KeyCode[KeyCode[\"F12\"] = 70] = \"F12\";\r\n KeyCode[KeyCode[\"F13\"] = 71] = \"F13\";\r\n KeyCode[KeyCode[\"F14\"] = 72] = \"F14\";\r\n KeyCode[KeyCode[\"F15\"] = 73] = \"F15\";\r\n KeyCode[KeyCode[\"F16\"] = 74] = \"F16\";\r\n KeyCode[KeyCode[\"F17\"] = 75] = \"F17\";\r\n KeyCode[KeyCode[\"F18\"] = 76] = \"F18\";\r\n KeyCode[KeyCode[\"F19\"] = 77] = \"F19\";\r\n KeyCode[KeyCode[\"NumLock\"] = 78] = \"NumLock\";\r\n KeyCode[KeyCode[\"ScrollLock\"] = 79] = \"ScrollLock\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ';:' key\r\n */\r\n KeyCode[KeyCode[\"US_SEMICOLON\"] = 80] = \"US_SEMICOLON\";\r\n /**\r\n * For any country/region, the '+' key\r\n * For the US standard keyboard, the '=+' key\r\n */\r\n KeyCode[KeyCode[\"US_EQUAL\"] = 81] = \"US_EQUAL\";\r\n /**\r\n * For any country/region, the ',' key\r\n * For the US standard keyboard, the ',<' key\r\n */\r\n KeyCode[KeyCode[\"US_COMMA\"] = 82] = \"US_COMMA\";\r\n /**\r\n * For any country/region, the '-' key\r\n * For the US standard keyboard, the '-_' key\r\n */\r\n KeyCode[KeyCode[\"US_MINUS\"] = 83] = \"US_MINUS\";\r\n /**\r\n * For any country/region, the '.' key\r\n * For the US standard keyboard, the '.>' key\r\n */\r\n KeyCode[KeyCode[\"US_DOT\"] = 84] = \"US_DOT\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '/?' key\r\n */\r\n KeyCode[KeyCode[\"US_SLASH\"] = 85] = \"US_SLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '`~' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKTICK\"] = 86] = \"US_BACKTICK\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '[{' key\r\n */\r\n KeyCode[KeyCode[\"US_OPEN_SQUARE_BRACKET\"] = 87] = \"US_OPEN_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the '\\|' key\r\n */\r\n KeyCode[KeyCode[\"US_BACKSLASH\"] = 88] = \"US_BACKSLASH\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ']}' key\r\n */\r\n KeyCode[KeyCode[\"US_CLOSE_SQUARE_BRACKET\"] = 89] = \"US_CLOSE_SQUARE_BRACKET\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n * For the US standard keyboard, the ''\"' key\r\n */\r\n KeyCode[KeyCode[\"US_QUOTE\"] = 90] = \"US_QUOTE\";\r\n /**\r\n * Used for miscellaneous characters; it can vary by keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_8\"] = 91] = \"OEM_8\";\r\n /**\r\n * Either the angle bracket key or the backslash key on the RT 102-key keyboard.\r\n */\r\n KeyCode[KeyCode[\"OEM_102\"] = 92] = \"OEM_102\";\r\n KeyCode[KeyCode[\"NUMPAD_0\"] = 93] = \"NUMPAD_0\";\r\n KeyCode[KeyCode[\"NUMPAD_1\"] = 94] = \"NUMPAD_1\";\r\n KeyCode[KeyCode[\"NUMPAD_2\"] = 95] = \"NUMPAD_2\";\r\n KeyCode[KeyCode[\"NUMPAD_3\"] = 96] = \"NUMPAD_3\";\r\n KeyCode[KeyCode[\"NUMPAD_4\"] = 97] = \"NUMPAD_4\";\r\n KeyCode[KeyCode[\"NUMPAD_5\"] = 98] = \"NUMPAD_5\";\r\n KeyCode[KeyCode[\"NUMPAD_6\"] = 99] = \"NUMPAD_6\";\r\n KeyCode[KeyCode[\"NUMPAD_7\"] = 100] = \"NUMPAD_7\";\r\n KeyCode[KeyCode[\"NUMPAD_8\"] = 101] = \"NUMPAD_8\";\r\n KeyCode[KeyCode[\"NUMPAD_9\"] = 102] = \"NUMPAD_9\";\r\n KeyCode[KeyCode[\"NUMPAD_MULTIPLY\"] = 103] = \"NUMPAD_MULTIPLY\";\r\n KeyCode[KeyCode[\"NUMPAD_ADD\"] = 104] = \"NUMPAD_ADD\";\r\n KeyCode[KeyCode[\"NUMPAD_SEPARATOR\"] = 105] = \"NUMPAD_SEPARATOR\";\r\n KeyCode[KeyCode[\"NUMPAD_SUBTRACT\"] = 106] = \"NUMPAD_SUBTRACT\";\r\n KeyCode[KeyCode[\"NUMPAD_DECIMAL\"] = 107] = \"NUMPAD_DECIMAL\";\r\n KeyCode[KeyCode[\"NUMPAD_DIVIDE\"] = 108] = \"NUMPAD_DIVIDE\";\r\n /**\r\n * Cover all key codes when IME is processing input.\r\n */\r\n KeyCode[KeyCode[\"KEY_IN_COMPOSITION\"] = 109] = \"KEY_IN_COMPOSITION\";\r\n KeyCode[KeyCode[\"ABNT_C1\"] = 110] = \"ABNT_C1\";\r\n KeyCode[KeyCode[\"ABNT_C2\"] = 111] = \"ABNT_C2\";\r\n /**\r\n * Placed last to cover the length of the enum.\r\n * Please do not depend on this value!\r\n */\r\n KeyCode[KeyCode[\"MAX_VALUE\"] = 112] = \"MAX_VALUE\";\r\n})(KeyCode || (KeyCode = {}));\r\nexport var MarkerSeverity;\r\n(function (MarkerSeverity) {\r\n MarkerSeverity[MarkerSeverity[\"Hint\"] = 1] = \"Hint\";\r\n MarkerSeverity[MarkerSeverity[\"Info\"] = 2] = \"Info\";\r\n MarkerSeverity[MarkerSeverity[\"Warning\"] = 4] = \"Warning\";\r\n MarkerSeverity[MarkerSeverity[\"Error\"] = 8] = \"Error\";\r\n})(MarkerSeverity || (MarkerSeverity = {}));\r\nexport var MarkerTag;\r\n(function (MarkerTag) {\r\n MarkerTag[MarkerTag[\"Unnecessary\"] = 1] = \"Unnecessary\";\r\n MarkerTag[MarkerTag[\"Deprecated\"] = 2] = \"Deprecated\";\r\n})(MarkerTag || (MarkerTag = {}));\r\n/**\r\n * Position in the minimap to render the decoration.\r\n */\r\nexport var MinimapPosition;\r\n(function (MinimapPosition) {\r\n MinimapPosition[MinimapPosition[\"Inline\"] = 1] = \"Inline\";\r\n MinimapPosition[MinimapPosition[\"Gutter\"] = 2] = \"Gutter\";\r\n})(MinimapPosition || (MinimapPosition = {}));\r\n/**\r\n * Type of hit element with the mouse in the editor.\r\n */\r\nexport var MouseTargetType;\r\n(function (MouseTargetType) {\r\n /**\r\n * Mouse is on top of an unknown element.\r\n */\r\n MouseTargetType[MouseTargetType[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\r\n /**\r\n * Mouse is on top of the textarea used for input.\r\n */\r\n MouseTargetType[MouseTargetType[\"TEXTAREA\"] = 1] = \"TEXTAREA\";\r\n /**\r\n * Mouse is on top of the glyph margin\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_GLYPH_MARGIN\"] = 2] = \"GUTTER_GLYPH_MARGIN\";\r\n /**\r\n * Mouse is on top of the line numbers\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_NUMBERS\"] = 3] = \"GUTTER_LINE_NUMBERS\";\r\n /**\r\n * Mouse is on top of the line decorations\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_LINE_DECORATIONS\"] = 4] = \"GUTTER_LINE_DECORATIONS\";\r\n /**\r\n * Mouse is on top of the whitespace left in the gutter by a view zone.\r\n */\r\n MouseTargetType[MouseTargetType[\"GUTTER_VIEW_ZONE\"] = 5] = \"GUTTER_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of text in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_TEXT\"] = 6] = \"CONTENT_TEXT\";\r\n /**\r\n * Mouse is on top of empty space in the content (e.g. after line text or below last line)\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_EMPTY\"] = 7] = \"CONTENT_EMPTY\";\r\n /**\r\n * Mouse is on top of a view zone in the content.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_VIEW_ZONE\"] = 8] = \"CONTENT_VIEW_ZONE\";\r\n /**\r\n * Mouse is on top of a content widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"CONTENT_WIDGET\"] = 9] = \"CONTENT_WIDGET\";\r\n /**\r\n * Mouse is on top of the decorations overview ruler.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERVIEW_RULER\"] = 10] = \"OVERVIEW_RULER\";\r\n /**\r\n * Mouse is on top of a scrollbar.\r\n */\r\n MouseTargetType[MouseTargetType[\"SCROLLBAR\"] = 11] = \"SCROLLBAR\";\r\n /**\r\n * Mouse is on top of an overlay widget.\r\n */\r\n MouseTargetType[MouseTargetType[\"OVERLAY_WIDGET\"] = 12] = \"OVERLAY_WIDGET\";\r\n /**\r\n * Mouse is outside of the editor.\r\n */\r\n MouseTargetType[MouseTargetType[\"OUTSIDE_EDITOR\"] = 13] = \"OUTSIDE_EDITOR\";\r\n})(MouseTargetType || (MouseTargetType = {}));\r\n/**\r\n * A positioning preference for rendering overlay widgets.\r\n */\r\nexport var OverlayWidgetPositionPreference;\r\n(function (OverlayWidgetPositionPreference) {\r\n /**\r\n * Position the overlay widget in the top right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_RIGHT_CORNER\"] = 0] = \"TOP_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the bottom right corner\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"BOTTOM_RIGHT_CORNER\"] = 1] = \"BOTTOM_RIGHT_CORNER\";\r\n /**\r\n * Position the overlay widget in the top center\r\n */\r\n OverlayWidgetPositionPreference[OverlayWidgetPositionPreference[\"TOP_CENTER\"] = 2] = \"TOP_CENTER\";\r\n})(OverlayWidgetPositionPreference || (OverlayWidgetPositionPreference = {}));\r\n/**\r\n * Vertical Lane in the overview ruler of the editor.\r\n */\r\nexport var OverviewRulerLane;\r\n(function (OverviewRulerLane) {\r\n OverviewRulerLane[OverviewRulerLane[\"Left\"] = 1] = \"Left\";\r\n OverviewRulerLane[OverviewRulerLane[\"Center\"] = 2] = \"Center\";\r\n OverviewRulerLane[OverviewRulerLane[\"Right\"] = 4] = \"Right\";\r\n OverviewRulerLane[OverviewRulerLane[\"Full\"] = 7] = \"Full\";\r\n})(OverviewRulerLane || (OverviewRulerLane = {}));\r\nexport var RenderLineNumbersType;\r\n(function (RenderLineNumbersType) {\r\n RenderLineNumbersType[RenderLineNumbersType[\"Off\"] = 0] = \"Off\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"On\"] = 1] = \"On\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Relative\"] = 2] = \"Relative\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Interval\"] = 3] = \"Interval\";\r\n RenderLineNumbersType[RenderLineNumbersType[\"Custom\"] = 4] = \"Custom\";\r\n})(RenderLineNumbersType || (RenderLineNumbersType = {}));\r\nexport var RenderMinimap;\r\n(function (RenderMinimap) {\r\n RenderMinimap[RenderMinimap[\"None\"] = 0] = \"None\";\r\n RenderMinimap[RenderMinimap[\"Text\"] = 1] = \"Text\";\r\n RenderMinimap[RenderMinimap[\"Blocks\"] = 2] = \"Blocks\";\r\n})(RenderMinimap || (RenderMinimap = {}));\r\nexport var ScrollType;\r\n(function (ScrollType) {\r\n ScrollType[ScrollType[\"Smooth\"] = 0] = \"Smooth\";\r\n ScrollType[ScrollType[\"Immediate\"] = 1] = \"Immediate\";\r\n})(ScrollType || (ScrollType = {}));\r\nexport var ScrollbarVisibility;\r\n(function (ScrollbarVisibility) {\r\n ScrollbarVisibility[ScrollbarVisibility[\"Auto\"] = 1] = \"Auto\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Hidden\"] = 2] = \"Hidden\";\r\n ScrollbarVisibility[ScrollbarVisibility[\"Visible\"] = 3] = \"Visible\";\r\n})(ScrollbarVisibility || (ScrollbarVisibility = {}));\r\n/**\r\n * The direction of a selection.\r\n */\r\nexport var SelectionDirection;\r\n(function (SelectionDirection) {\r\n /**\r\n * The selection starts above where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"LTR\"] = 0] = \"LTR\";\r\n /**\r\n * The selection starts below where it ends.\r\n */\r\n SelectionDirection[SelectionDirection[\"RTL\"] = 1] = \"RTL\";\r\n})(SelectionDirection || (SelectionDirection = {}));\r\nexport var SignatureHelpTriggerKind;\r\n(function (SignatureHelpTriggerKind) {\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"Invoke\"] = 1] = \"Invoke\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"TriggerCharacter\"] = 2] = \"TriggerCharacter\";\r\n SignatureHelpTriggerKind[SignatureHelpTriggerKind[\"ContentChange\"] = 3] = \"ContentChange\";\r\n})(SignatureHelpTriggerKind || (SignatureHelpTriggerKind = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind[SymbolKind[\"File\"] = 0] = \"File\";\r\n SymbolKind[SymbolKind[\"Module\"] = 1] = \"Module\";\r\n SymbolKind[SymbolKind[\"Namespace\"] = 2] = \"Namespace\";\r\n SymbolKind[SymbolKind[\"Package\"] = 3] = \"Package\";\r\n SymbolKind[SymbolKind[\"Class\"] = 4] = \"Class\";\r\n SymbolKind[SymbolKind[\"Method\"] = 5] = \"Method\";\r\n SymbolKind[SymbolKind[\"Property\"] = 6] = \"Property\";\r\n SymbolKind[SymbolKind[\"Field\"] = 7] = \"Field\";\r\n SymbolKind[SymbolKind[\"Constructor\"] = 8] = \"Constructor\";\r\n SymbolKind[SymbolKind[\"Enum\"] = 9] = \"Enum\";\r\n SymbolKind[SymbolKind[\"Interface\"] = 10] = \"Interface\";\r\n SymbolKind[SymbolKind[\"Function\"] = 11] = \"Function\";\r\n SymbolKind[SymbolKind[\"Variable\"] = 12] = \"Variable\";\r\n SymbolKind[SymbolKind[\"Constant\"] = 13] = \"Constant\";\r\n SymbolKind[SymbolKind[\"String\"] = 14] = \"String\";\r\n SymbolKind[SymbolKind[\"Number\"] = 15] = \"Number\";\r\n SymbolKind[SymbolKind[\"Boolean\"] = 16] = \"Boolean\";\r\n SymbolKind[SymbolKind[\"Array\"] = 17] = \"Array\";\r\n SymbolKind[SymbolKind[\"Object\"] = 18] = \"Object\";\r\n SymbolKind[SymbolKind[\"Key\"] = 19] = \"Key\";\r\n SymbolKind[SymbolKind[\"Null\"] = 20] = \"Null\";\r\n SymbolKind[SymbolKind[\"EnumMember\"] = 21] = \"EnumMember\";\r\n SymbolKind[SymbolKind[\"Struct\"] = 22] = \"Struct\";\r\n SymbolKind[SymbolKind[\"Event\"] = 23] = \"Event\";\r\n SymbolKind[SymbolKind[\"Operator\"] = 24] = \"Operator\";\r\n SymbolKind[SymbolKind[\"TypeParameter\"] = 25] = \"TypeParameter\";\r\n})(SymbolKind || (SymbolKind = {}));\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n SymbolTag[SymbolTag[\"Deprecated\"] = 1] = \"Deprecated\";\r\n})(SymbolTag || (SymbolTag = {}));\r\n/**\r\n * The kind of animation in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorBlinkingStyle;\r\n(function (TextEditorCursorBlinkingStyle) {\r\n /**\r\n * Hidden\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Hidden\"] = 0] = \"Hidden\";\r\n /**\r\n * Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Blink\"] = 1] = \"Blink\";\r\n /**\r\n * Blinking with smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Smooth\"] = 2] = \"Smooth\";\r\n /**\r\n * Blinking with prolonged filled state and smooth fading\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Phase\"] = 3] = \"Phase\";\r\n /**\r\n * Expand collapse animation on the y axis\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Expand\"] = 4] = \"Expand\";\r\n /**\r\n * No-Blinking\r\n */\r\n TextEditorCursorBlinkingStyle[TextEditorCursorBlinkingStyle[\"Solid\"] = 5] = \"Solid\";\r\n})(TextEditorCursorBlinkingStyle || (TextEditorCursorBlinkingStyle = {}));\r\n/**\r\n * The style in which the editor's cursor should be rendered.\r\n */\r\nexport var TextEditorCursorStyle;\r\n(function (TextEditorCursorStyle) {\r\n /**\r\n * As a vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Line\"] = 1] = \"Line\";\r\n /**\r\n * As a block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Block\"] = 2] = \"Block\";\r\n /**\r\n * As a horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"Underline\"] = 3] = \"Underline\";\r\n /**\r\n * As a thin vertical line (sitting between two characters).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"LineThin\"] = 4] = \"LineThin\";\r\n /**\r\n * As an outlined block (sitting on top of a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"BlockOutline\"] = 5] = \"BlockOutline\";\r\n /**\r\n * As a thin horizontal line (sitting under a character).\r\n */\r\n TextEditorCursorStyle[TextEditorCursorStyle[\"UnderlineThin\"] = 6] = \"UnderlineThin\";\r\n})(TextEditorCursorStyle || (TextEditorCursorStyle = {}));\r\n/**\r\n * Describes the behavior of decorations when typing/editing near their edges.\r\n * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`\r\n */\r\nexport var TrackedRangeStickiness;\r\n(function (TrackedRangeStickiness) {\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"AlwaysGrowsWhenTypingAtEdges\"] = 0] = \"AlwaysGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"NeverGrowsWhenTypingAtEdges\"] = 1] = \"NeverGrowsWhenTypingAtEdges\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingBefore\"] = 2] = \"GrowsOnlyWhenTypingBefore\";\r\n TrackedRangeStickiness[TrackedRangeStickiness[\"GrowsOnlyWhenTypingAfter\"] = 3] = \"GrowsOnlyWhenTypingAfter\";\r\n})(TrackedRangeStickiness || (TrackedRangeStickiness = {}));\r\n/**\r\n * Describes how to indent wrapped lines.\r\n */\r\nexport var WrappingIndent;\r\n(function (WrappingIndent) {\r\n /**\r\n * No indentation => wrapped lines begin at column 1.\r\n */\r\n WrappingIndent[WrappingIndent[\"None\"] = 0] = \"None\";\r\n /**\r\n * Same => wrapped lines get the same indentation as the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Same\"] = 1] = \"Same\";\r\n /**\r\n * Indent => wrapped lines get +1 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"Indent\"] = 2] = \"Indent\";\r\n /**\r\n * DeepIndent => wrapped lines get +2 indentation toward the parent.\r\n */\r\n WrappingIndent[WrappingIndent[\"DeepIndent\"] = 3] = \"DeepIndent\";\r\n})(WrappingIndent || (WrappingIndent = {}));\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { toUint32 } from '../../../base/common/uint.js';\r\nexport class PrefixSumIndexOfResult {\r\n constructor(index, remainder) {\r\n this.index = index;\r\n this.remainder = remainder;\r\n }\r\n}\r\nexport class PrefixSumComputer {\r\n constructor(values) {\r\n this.values = values;\r\n this.prefixSum = new Uint32Array(values.length);\r\n this.prefixSumValidIndex = new Int32Array(1);\r\n this.prefixSumValidIndex[0] = -1;\r\n }\r\n insertValues(insertIndex, insertValues) {\r\n insertIndex = toUint32(insertIndex);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n const insertValuesLen = insertValues.length;\r\n if (insertValuesLen === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length + insertValuesLen);\r\n this.values.set(oldValues.subarray(0, insertIndex), 0);\r\n this.values.set(oldValues.subarray(insertIndex), insertIndex + insertValuesLen);\r\n this.values.set(insertValues, insertIndex);\r\n if (insertIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = insertIndex - 1;\r\n }\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n changeValue(index, value) {\r\n index = toUint32(index);\r\n value = toUint32(value);\r\n if (this.values[index] === value) {\r\n return false;\r\n }\r\n this.values[index] = value;\r\n if (index - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = index - 1;\r\n }\r\n return true;\r\n }\r\n removeValues(startIndex, cnt) {\r\n startIndex = toUint32(startIndex);\r\n cnt = toUint32(cnt);\r\n const oldValues = this.values;\r\n const oldPrefixSum = this.prefixSum;\r\n if (startIndex >= oldValues.length) {\r\n return false;\r\n }\r\n let maxCnt = oldValues.length - startIndex;\r\n if (cnt >= maxCnt) {\r\n cnt = maxCnt;\r\n }\r\n if (cnt === 0) {\r\n return false;\r\n }\r\n this.values = new Uint32Array(oldValues.length - cnt);\r\n this.values.set(oldValues.subarray(0, startIndex), 0);\r\n this.values.set(oldValues.subarray(startIndex + cnt), startIndex);\r\n this.prefixSum = new Uint32Array(this.values.length);\r\n if (startIndex - 1 < this.prefixSumValidIndex[0]) {\r\n this.prefixSumValidIndex[0] = startIndex - 1;\r\n }\r\n if (this.prefixSumValidIndex[0] >= 0) {\r\n this.prefixSum.set(oldPrefixSum.subarray(0, this.prefixSumValidIndex[0] + 1));\r\n }\r\n return true;\r\n }\r\n getTotalValue() {\r\n if (this.values.length === 0) {\r\n return 0;\r\n }\r\n return this._getAccumulatedValue(this.values.length - 1);\r\n }\r\n getAccumulatedValue(index) {\r\n if (index < 0) {\r\n return 0;\r\n }\r\n index = toUint32(index);\r\n return this._getAccumulatedValue(index);\r\n }\r\n _getAccumulatedValue(index) {\r\n if (index <= this.prefixSumValidIndex[0]) {\r\n return this.prefixSum[index];\r\n }\r\n let startIndex = this.prefixSumValidIndex[0] + 1;\r\n if (startIndex === 0) {\r\n this.prefixSum[0] = this.values[0];\r\n startIndex++;\r\n }\r\n if (index >= this.values.length) {\r\n index = this.values.length - 1;\r\n }\r\n for (let i = startIndex; i <= index; i++) {\r\n this.prefixSum[i] = this.prefixSum[i - 1] + this.values[i];\r\n }\r\n this.prefixSumValidIndex[0] = Math.max(this.prefixSumValidIndex[0], index);\r\n return this.prefixSum[index];\r\n }\r\n getIndexOf(accumulatedValue) {\r\n accumulatedValue = Math.floor(accumulatedValue); //@perf\r\n // Compute all sums (to get a fully valid prefixSum)\r\n this.getTotalValue();\r\n let low = 0;\r\n let high = this.values.length - 1;\r\n let mid = 0;\r\n let midStop = 0;\r\n let midStart = 0;\r\n while (low <= high) {\r\n mid = low + ((high - low) / 2) | 0;\r\n midStop = this.prefixSum[mid];\r\n midStart = midStop - this.values[mid];\r\n if (accumulatedValue < midStart) {\r\n high = mid - 1;\r\n }\r\n else if (accumulatedValue >= midStop) {\r\n low = mid + 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return new PrefixSumIndexOfResult(mid, accumulatedValue - midStart);\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { SimpleWorkerServer } from '../base/common/worker/simpleWorker.js';\r\nimport { EditorSimpleWorker } from './common/services/editorSimpleWorker.js';\r\nlet initialized = false;\r\nexport function initialize(foreignModule) {\r\n if (initialized) {\r\n return;\r\n }\r\n initialized = true;\r\n const simpleWorker = new SimpleWorkerServer((msg) => {\r\n self.postMessage(msg);\r\n }, (host) => new EditorSimpleWorker(host, foreignModule));\r\n self.onmessage = (e) => {\r\n simpleWorker.onmessage(e.data);\r\n };\r\n}\r\nself.onmessage = (e) => {\r\n // Ignore first message in this case and initialize if not yet initialized\r\n if (!initialized) {\r\n initialize(null);\r\n }\r\n};\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { format, isEOL } from './format.js';\nimport { parseTree, findNodeAtLocation } from './parser.js';\nexport function removeProperty(text, path, options) {\n return setProperty(text, path, void 0, options);\n}\nexport function setProperty(text, originalPath, value, options) {\n var _a;\n var path = originalPath.slice();\n var errors = [];\n var root = parseTree(text, errors);\n var parent = void 0;\n var lastSegment = void 0;\n while (path.length > 0) {\n lastSegment = path.pop();\n parent = findNodeAtLocation(root, path);\n if (parent === void 0 && value !== void 0) {\n if (typeof lastSegment === 'string') {\n value = (_a = {}, _a[lastSegment] = value, _a);\n }\n else {\n value = [value];\n }\n }\n else {\n break;\n }\n }\n if (!parent) {\n // empty document\n if (value === void 0) { // delete\n throw new Error('Can not delete in empty document');\n }\n return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);\n }\n else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {\n var existing = findNodeAtLocation(parent, [lastSegment]);\n if (existing !== void 0) {\n if (value === void 0) { // delete\n if (!existing.parent) {\n throw new Error('Malformed AST');\n }\n var propertyIndex = parent.children.indexOf(existing.parent);\n var removeBegin = void 0;\n var removeEnd = existing.parent.offset + existing.parent.length;\n if (propertyIndex > 0) {\n // remove the comma of the previous node\n var previous = parent.children[propertyIndex - 1];\n removeBegin = previous.offset + previous.length;\n }\n else {\n removeBegin = parent.offset + 1;\n if (parent.children.length > 1) {\n // remove the comma of the next node\n var next = parent.children[1];\n removeEnd = next.offset;\n }\n }\n return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);\n }\n else {\n // set value of existing property\n return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);\n }\n }\n else {\n if (value === void 0) { // delete\n return []; // property does not exist, nothing to do\n }\n var newProperty = JSON.stringify(lastSegment) + \": \" + JSON.stringify(value);\n var index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(function (p) { return p.children[0].value; })) : parent.children.length;\n var edit = void 0;\n if (index > 0) {\n var previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n else if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };\n }\n return withFormatting(text, edit, options);\n }\n }\n else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {\n var insertIndex = lastSegment;\n if (insertIndex === -1) {\n // Insert\n var newProperty = \"\" + JSON.stringify(value);\n var edit = void 0;\n if (parent.children.length === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: newProperty };\n }\n else {\n var previous = parent.children[parent.children.length - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else if (value === void 0 && parent.children.length >= 0) {\n // Removal\n var removalIndex = lastSegment;\n var toRemove = parent.children[removalIndex];\n var edit = void 0;\n if (parent.children.length === 1) {\n // only item\n edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };\n }\n else if (parent.children.length - 1 === removalIndex) {\n // last item\n var previous = parent.children[removalIndex - 1];\n var offset = previous.offset + previous.length;\n var parentEndOffset = parent.offset + parent.length;\n edit = { offset: offset, length: parentEndOffset - 2 - offset, content: '' };\n }\n else {\n edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };\n }\n return withFormatting(text, edit, options);\n }\n else if (value !== void 0) {\n var edit = void 0;\n var newProperty = \"\" + JSON.stringify(value);\n if (!options.isArrayInsertion && parent.children.length > lastSegment) {\n var toModify = parent.children[lastSegment];\n edit = { offset: toModify.offset, length: toModify.length, content: newProperty };\n }\n else if (parent.children.length === 0 || lastSegment === 0) {\n edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };\n }\n else {\n var index = lastSegment > parent.children.length ? parent.children.length : lastSegment;\n var previous = parent.children[index - 1];\n edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };\n }\n return withFormatting(text, edit, options);\n }\n else {\n throw new Error(\"Can not \" + (value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')) + \" Array index \" + insertIndex + \" as length is not sufficient\");\n }\n }\n else {\n throw new Error(\"Can not add \" + (typeof lastSegment !== 'number' ? 'index' : 'property') + \" to parent of type \" + parent.type);\n }\n}\nfunction withFormatting(text, edit, options) {\n if (!options.formattingOptions) {\n return [edit];\n }\n // apply the edit\n var newText = applyEdit(text, edit);\n // format the new text\n var begin = edit.offset;\n var end = edit.offset + edit.content.length;\n if (edit.length === 0 || edit.content.length === 0) { // insert or remove\n while (begin > 0 && !isEOL(newText, begin - 1)) {\n begin--;\n }\n while (end < newText.length && !isEOL(newText, end)) {\n end++;\n }\n }\n var edits = format(newText, { offset: begin, length: end - begin }, options.formattingOptions);\n // apply the formatting edits and track the begin and end offsets of the changes\n for (var i = edits.length - 1; i >= 0; i--) {\n var edit_1 = edits[i];\n newText = applyEdit(newText, edit_1);\n begin = Math.min(begin, edit_1.offset);\n end = Math.max(end, edit_1.offset + edit_1.length);\n end += edit_1.content.length - edit_1.length;\n }\n // create a single edit with all changes\n var editLength = text.length - (newText.length - end) - begin;\n return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];\n}\nexport function applyEdit(text, edit) {\n return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);\n}\nexport function isWS(text, offset) {\n return '\\r\\n \\t'.indexOf(text.charAt(offset)) !== -1;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner.js';\nexport function format(documentText, range, options) {\n var initialIndentLevel;\n var formatText;\n var formatTextStart;\n var rangeStart;\n var rangeEnd;\n if (range) {\n rangeStart = range.offset;\n rangeEnd = rangeStart + range.length;\n formatTextStart = rangeStart;\n while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {\n formatTextStart--;\n }\n var endOffset = rangeEnd;\n while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {\n endOffset++;\n }\n formatText = documentText.substring(formatTextStart, endOffset);\n initialIndentLevel = computeIndentLevel(formatText, options);\n }\n else {\n formatText = documentText;\n initialIndentLevel = 0;\n formatTextStart = 0;\n rangeStart = 0;\n rangeEnd = documentText.length;\n }\n var eol = getEOL(options, documentText);\n var lineBreak = false;\n var indentLevel = 0;\n var indentValue;\n if (options.insertSpaces) {\n indentValue = repeat(' ', options.tabSize || 4);\n }\n else {\n indentValue = '\\t';\n }\n var scanner = createScanner(formatText, false);\n var hasError = false;\n function newLineAndIndent() {\n return eol + repeat(indentValue, initialIndentLevel + indentLevel);\n }\n function scanNext() {\n var token = scanner.scan();\n lineBreak = false;\n while (token === 15 /* Trivia */ || token === 14 /* LineBreakTrivia */) {\n lineBreak = lineBreak || (token === 14 /* LineBreakTrivia */);\n token = scanner.scan();\n }\n hasError = token === 16 /* Unknown */ || scanner.getTokenError() !== 0 /* None */;\n return token;\n }\n var editOperations = [];\n function addEdit(text, startOffset, endOffset) {\n if (!hasError && startOffset < rangeEnd && endOffset > rangeStart && documentText.substring(startOffset, endOffset) !== text) {\n editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });\n }\n }\n var firstToken = scanNext();\n if (firstToken !== 17 /* EOF */) {\n var firstTokenStart = scanner.getTokenOffset() + formatTextStart;\n var initialIndent = repeat(indentValue, initialIndentLevel);\n addEdit(initialIndent, formatTextStart, firstTokenStart);\n }\n while (firstToken !== 17 /* EOF */) {\n var firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n var secondToken = scanNext();\n var replaceContent = '';\n while (!lineBreak && (secondToken === 12 /* LineCommentTrivia */ || secondToken === 13 /* BlockCommentTrivia */)) {\n // comments on the same line: keep them on the same line, but ignore them otherwise\n var commentTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(' ', firstTokenEnd, commentTokenStart);\n firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;\n replaceContent = secondToken === 12 /* LineCommentTrivia */ ? newLineAndIndent() : '';\n secondToken = scanNext();\n }\n if (secondToken === 2 /* CloseBraceToken */) {\n if (firstToken !== 1 /* OpenBraceToken */) {\n indentLevel--;\n replaceContent = newLineAndIndent();\n }\n }\n else if (secondToken === 4 /* CloseBracketToken */) {\n if (firstToken !== 3 /* OpenBracketToken */) {\n indentLevel--;\n replaceContent = newLineAndIndent();\n }\n }\n else {\n switch (firstToken) {\n case 3 /* OpenBracketToken */:\n case 1 /* OpenBraceToken */:\n indentLevel++;\n replaceContent = newLineAndIndent();\n break;\n case 5 /* CommaToken */:\n case 12 /* LineCommentTrivia */:\n replaceContent = newLineAndIndent();\n break;\n case 13 /* BlockCommentTrivia */:\n if (lineBreak) {\n replaceContent = newLineAndIndent();\n }\n else {\n // symbol following comment on the same line: keep on same line, separate with ' '\n replaceContent = ' ';\n }\n break;\n case 6 /* ColonToken */:\n replaceContent = ' ';\n break;\n case 10 /* StringLiteral */:\n if (secondToken === 6 /* ColonToken */) {\n replaceContent = '';\n break;\n }\n // fall through\n case 7 /* NullKeyword */:\n case 8 /* TrueKeyword */:\n case 9 /* FalseKeyword */:\n case 11 /* NumericLiteral */:\n case 2 /* CloseBraceToken */:\n case 4 /* CloseBracketToken */:\n if (secondToken === 12 /* LineCommentTrivia */ || secondToken === 13 /* BlockCommentTrivia */) {\n replaceContent = ' ';\n }\n else if (secondToken !== 5 /* CommaToken */ && secondToken !== 17 /* EOF */) {\n hasError = true;\n }\n break;\n case 16 /* Unknown */:\n hasError = true;\n break;\n }\n if (lineBreak && (secondToken === 12 /* LineCommentTrivia */ || secondToken === 13 /* BlockCommentTrivia */)) {\n replaceContent = newLineAndIndent();\n }\n }\n var secondTokenStart = scanner.getTokenOffset() + formatTextStart;\n addEdit(replaceContent, firstTokenEnd, secondTokenStart);\n firstToken = secondToken;\n }\n return editOperations;\n}\nfunction repeat(s, count) {\n var result = '';\n for (var i = 0; i < count; i++) {\n result += s;\n }\n return result;\n}\nfunction computeIndentLevel(content, options) {\n var i = 0;\n var nChars = 0;\n var tabSize = options.tabSize || 4;\n while (i < content.length) {\n var ch = content.charAt(i);\n if (ch === ' ') {\n nChars++;\n }\n else if (ch === '\\t') {\n nChars += tabSize;\n }\n else {\n break;\n }\n i++;\n }\n return Math.floor(nChars / tabSize);\n}\nfunction getEOL(options, text) {\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch === '\\r') {\n if (i + 1 < text.length && text.charAt(i + 1) === '\\n') {\n return '\\r\\n';\n }\n return '\\r';\n }\n else if (ch === '\\n') {\n return '\\n';\n }\n }\n return (options && options.eol) || '\\n';\n}\nexport function isEOL(text, offset) {\n return '\\r\\n'.indexOf(text.charAt(offset)) !== -1;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport { createScanner } from './scanner.js';\nvar ParseOptions;\n(function (ParseOptions) {\n ParseOptions.DEFAULT = {\n allowTrailingComma: false\n };\n})(ParseOptions || (ParseOptions = {}));\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport function getLocation(text, position) {\n var segments = []; // strings or numbers\n var earlyReturnException = new Object();\n var previousNode = undefined;\n var previousNodeInst = {\n value: {},\n offset: 0,\n length: 0,\n type: 'object',\n parent: undefined\n };\n var isAtPropertyKey = false;\n function setPreviousNode(value, offset, length, type) {\n previousNodeInst.value = value;\n previousNodeInst.offset = offset;\n previousNodeInst.length = length;\n previousNodeInst.type = type;\n previousNodeInst.colonOffset = undefined;\n previousNode = previousNodeInst;\n }\n try {\n visit(text, {\n onObjectBegin: function (offset, length) {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n isAtPropertyKey = position > offset;\n segments.push(''); // push a placeholder (will be replaced)\n },\n onObjectProperty: function (name, offset, length) {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(name, offset, length, 'property');\n segments[segments.length - 1] = name;\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onObjectEnd: function (offset, length) {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onArrayBegin: function (offset, length) {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.push(0);\n },\n onArrayEnd: function (offset, length) {\n if (position <= offset) {\n throw earlyReturnException;\n }\n previousNode = undefined;\n segments.pop();\n },\n onLiteralValue: function (value, offset, length) {\n if (position < offset) {\n throw earlyReturnException;\n }\n setPreviousNode(value, offset, length, getNodeType(value));\n if (position <= offset + length) {\n throw earlyReturnException;\n }\n },\n onSeparator: function (sep, offset, length) {\n if (position <= offset) {\n throw earlyReturnException;\n }\n if (sep === ':' && previousNode && previousNode.type === 'property') {\n previousNode.colonOffset = offset;\n isAtPropertyKey = false;\n previousNode = undefined;\n }\n else if (sep === ',') {\n var last = segments[segments.length - 1];\n if (typeof last === 'number') {\n segments[segments.length - 1] = last + 1;\n }\n else {\n isAtPropertyKey = true;\n segments[segments.length - 1] = '';\n }\n previousNode = undefined;\n }\n }\n });\n }\n catch (e) {\n if (e !== earlyReturnException) {\n throw e;\n }\n }\n return {\n path: segments,\n previousNode: previousNode,\n isAtPropertyKey: isAtPropertyKey,\n matches: function (pattern) {\n var k = 0;\n for (var i = 0; k < pattern.length && i < segments.length; i++) {\n if (pattern[k] === segments[i] || pattern[k] === '*') {\n k++;\n }\n else if (pattern[k] !== '**') {\n return false;\n }\n }\n return k === pattern.length;\n }\n };\n}\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore always check the errors list to find out if the input was valid.\n */\nexport function parse(text, errors, options) {\n if (errors === void 0) { errors = []; }\n if (options === void 0) { options = ParseOptions.DEFAULT; }\n var currentProperty = null;\n var currentParent = [];\n var previousParents = [];\n function onValue(value) {\n if (Array.isArray(currentParent)) {\n currentParent.push(value);\n }\n else if (currentProperty !== null) {\n currentParent[currentProperty] = value;\n }\n }\n var visitor = {\n onObjectBegin: function () {\n var object = {};\n onValue(object);\n previousParents.push(currentParent);\n currentParent = object;\n currentProperty = null;\n },\n onObjectProperty: function (name) {\n currentProperty = name;\n },\n onObjectEnd: function () {\n currentParent = previousParents.pop();\n },\n onArrayBegin: function () {\n var array = [];\n onValue(array);\n previousParents.push(currentParent);\n currentParent = array;\n currentProperty = null;\n },\n onArrayEnd: function () {\n currentParent = previousParents.pop();\n },\n onLiteralValue: onValue,\n onError: function (error, offset, length) {\n errors.push({ error: error, offset: offset, length: length });\n }\n };\n visit(text, visitor, options);\n return currentParent[0];\n}\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport function parseTree(text, errors, options) {\n if (errors === void 0) { errors = []; }\n if (options === void 0) { options = ParseOptions.DEFAULT; }\n var currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root\n function ensurePropertyComplete(endOffset) {\n if (currentParent.type === 'property') {\n currentParent.length = endOffset - currentParent.offset;\n currentParent = currentParent.parent;\n }\n }\n function onValue(valueNode) {\n currentParent.children.push(valueNode);\n return valueNode;\n }\n var visitor = {\n onObjectBegin: function (offset) {\n currentParent = onValue({ type: 'object', offset: offset, length: -1, parent: currentParent, children: [] });\n },\n onObjectProperty: function (name, offset, length) {\n currentParent = onValue({ type: 'property', offset: offset, length: -1, parent: currentParent, children: [] });\n currentParent.children.push({ type: 'string', value: name, offset: offset, length: length, parent: currentParent });\n },\n onObjectEnd: function (offset, length) {\n ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onArrayBegin: function (offset, length) {\n currentParent = onValue({ type: 'array', offset: offset, length: -1, parent: currentParent, children: [] });\n },\n onArrayEnd: function (offset, length) {\n currentParent.length = offset + length - currentParent.offset;\n currentParent = currentParent.parent;\n ensurePropertyComplete(offset + length);\n },\n onLiteralValue: function (value, offset, length) {\n onValue({ type: getNodeType(value), offset: offset, length: length, parent: currentParent, value: value });\n ensurePropertyComplete(offset + length);\n },\n onSeparator: function (sep, offset, length) {\n if (currentParent.type === 'property') {\n if (sep === ':') {\n currentParent.colonOffset = offset;\n }\n else if (sep === ',') {\n ensurePropertyComplete(offset);\n }\n }\n },\n onError: function (error, offset, length) {\n errors.push({ error: error, offset: offset, length: length });\n }\n };\n visit(text, visitor, options);\n var result = currentParent.children[0];\n if (result) {\n delete result.parent;\n }\n return result;\n}\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport function findNodeAtLocation(root, path) {\n if (!root) {\n return undefined;\n }\n var node = root;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var segment = path_1[_i];\n if (typeof segment === 'string') {\n if (node.type !== 'object' || !Array.isArray(node.children)) {\n return undefined;\n }\n var found = false;\n for (var _a = 0, _b = node.children; _a < _b.length; _a++) {\n var propertyNode = _b[_a];\n if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment) {\n node = propertyNode.children[1];\n found = true;\n break;\n }\n }\n if (!found) {\n return undefined;\n }\n }\n else {\n var index = segment;\n if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {\n return undefined;\n }\n node = node.children[index];\n }\n }\n return node;\n}\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport function getNodePath(node) {\n if (!node.parent || !node.parent.children) {\n return [];\n }\n var path = getNodePath(node.parent);\n if (node.parent.type === 'property') {\n var key = node.parent.children[0].value;\n path.push(key);\n }\n else if (node.parent.type === 'array') {\n var index = node.parent.children.indexOf(node);\n if (index !== -1) {\n path.push(index);\n }\n }\n return path;\n}\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport function getNodeValue(node) {\n switch (node.type) {\n case 'array':\n return node.children.map(getNodeValue);\n case 'object':\n var obj = Object.create(null);\n for (var _i = 0, _a = node.children; _i < _a.length; _i++) {\n var prop = _a[_i];\n var valueNode = prop.children[1];\n if (valueNode) {\n obj[prop.children[0].value] = getNodeValue(valueNode);\n }\n }\n return obj;\n case 'null':\n case 'string':\n case 'number':\n case 'boolean':\n return node.value;\n default:\n return undefined;\n }\n}\nexport function contains(node, offset, includeRightBound) {\n if (includeRightBound === void 0) { includeRightBound = false; }\n return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));\n}\n/**\n * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport function findNodeAtOffset(node, offset, includeRightBound) {\n if (includeRightBound === void 0) { includeRightBound = false; }\n if (contains(node, offset, includeRightBound)) {\n var children = node.children;\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length && children[i].offset <= offset; i++) {\n var item = findNodeAtOffset(children[i], offset, includeRightBound);\n if (item) {\n return item;\n }\n }\n }\n return node;\n }\n return undefined;\n}\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport function visit(text, visitor, options) {\n if (options === void 0) { options = ParseOptions.DEFAULT; }\n var _scanner = createScanner(text, false);\n function toNoArgVisit(visitFunction) {\n return visitFunction ? function () { return visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()); } : function () { return true; };\n }\n function toOneArgVisit(visitFunction) {\n return visitFunction ? function (arg) { return visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()); } : function () { return true; };\n }\n var onObjectBegin = toNoArgVisit(visitor.onObjectBegin), onObjectProperty = toOneArgVisit(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisit(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisit(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);\n var disallowComments = options && options.disallowComments;\n var allowTrailingComma = options && options.allowTrailingComma;\n function scanNext() {\n while (true) {\n var token = _scanner.scan();\n switch (_scanner.getTokenError()) {\n case 4 /* InvalidUnicode */:\n handleError(14 /* InvalidUnicode */);\n break;\n case 5 /* InvalidEscapeCharacter */:\n handleError(15 /* InvalidEscapeCharacter */);\n break;\n case 3 /* UnexpectedEndOfNumber */:\n handleError(13 /* UnexpectedEndOfNumber */);\n break;\n case 1 /* UnexpectedEndOfComment */:\n if (!disallowComments) {\n handleError(11 /* UnexpectedEndOfComment */);\n }\n break;\n case 2 /* UnexpectedEndOfString */:\n handleError(12 /* UnexpectedEndOfString */);\n break;\n case 6 /* InvalidCharacter */:\n handleError(16 /* InvalidCharacter */);\n break;\n }\n switch (token) {\n case 12 /* LineCommentTrivia */:\n case 13 /* BlockCommentTrivia */:\n if (disallowComments) {\n handleError(10 /* InvalidCommentToken */);\n }\n else {\n onComment();\n }\n break;\n case 16 /* Unknown */:\n handleError(1 /* InvalidSymbol */);\n break;\n case 15 /* Trivia */:\n case 14 /* LineBreakTrivia */:\n break;\n default:\n return token;\n }\n }\n }\n function handleError(error, skipUntilAfter, skipUntil) {\n if (skipUntilAfter === void 0) { skipUntilAfter = []; }\n if (skipUntil === void 0) { skipUntil = []; }\n onError(error);\n if (skipUntilAfter.length + skipUntil.length > 0) {\n var token = _scanner.getToken();\n while (token !== 17 /* EOF */) {\n if (skipUntilAfter.indexOf(token) !== -1) {\n scanNext();\n break;\n }\n else if (skipUntil.indexOf(token) !== -1) {\n break;\n }\n token = scanNext();\n }\n }\n }\n function parseString(isValue) {\n var value = _scanner.getTokenValue();\n if (isValue) {\n onLiteralValue(value);\n }\n else {\n onObjectProperty(value);\n }\n scanNext();\n return true;\n }\n function parseLiteral() {\n switch (_scanner.getToken()) {\n case 11 /* NumericLiteral */:\n var value = 0;\n try {\n value = JSON.parse(_scanner.getTokenValue());\n if (typeof value !== 'number') {\n handleError(2 /* InvalidNumberFormat */);\n value = 0;\n }\n }\n catch (e) {\n handleError(2 /* InvalidNumberFormat */);\n }\n onLiteralValue(value);\n break;\n case 7 /* NullKeyword */:\n onLiteralValue(null);\n break;\n case 8 /* TrueKeyword */:\n onLiteralValue(true);\n break;\n case 9 /* FalseKeyword */:\n onLiteralValue(false);\n break;\n default:\n return false;\n }\n scanNext();\n return true;\n }\n function parseProperty() {\n if (_scanner.getToken() !== 10 /* StringLiteral */) {\n handleError(3 /* PropertyNameExpected */, [], [2 /* CloseBraceToken */, 5 /* CommaToken */]);\n return false;\n }\n parseString(false);\n if (_scanner.getToken() === 6 /* ColonToken */) {\n onSeparator(':');\n scanNext(); // consume colon\n if (!parseValue()) {\n handleError(4 /* ValueExpected */, [], [2 /* CloseBraceToken */, 5 /* CommaToken */]);\n }\n }\n else {\n handleError(5 /* ColonExpected */, [], [2 /* CloseBraceToken */, 5 /* CommaToken */]);\n }\n return true;\n }\n function parseObject() {\n onObjectBegin();\n scanNext(); // consume open brace\n var needsComma = false;\n while (_scanner.getToken() !== 2 /* CloseBraceToken */ && _scanner.getToken() !== 17 /* EOF */) {\n if (_scanner.getToken() === 5 /* CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 2 /* CloseBraceToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* CommaExpected */, [], []);\n }\n if (!parseProperty()) {\n handleError(4 /* ValueExpected */, [], [2 /* CloseBraceToken */, 5 /* CommaToken */]);\n }\n needsComma = true;\n }\n onObjectEnd();\n if (_scanner.getToken() !== 2 /* CloseBraceToken */) {\n handleError(7 /* CloseBraceExpected */, [2 /* CloseBraceToken */], []);\n }\n else {\n scanNext(); // consume close brace\n }\n return true;\n }\n function parseArray() {\n onArrayBegin();\n scanNext(); // consume open bracket\n var needsComma = false;\n while (_scanner.getToken() !== 4 /* CloseBracketToken */ && _scanner.getToken() !== 17 /* EOF */) {\n if (_scanner.getToken() === 5 /* CommaToken */) {\n if (!needsComma) {\n handleError(4 /* ValueExpected */, [], []);\n }\n onSeparator(',');\n scanNext(); // consume comma\n if (_scanner.getToken() === 4 /* CloseBracketToken */ && allowTrailingComma) {\n break;\n }\n }\n else if (needsComma) {\n handleError(6 /* CommaExpected */, [], []);\n }\n if (!parseValue()) {\n handleError(4 /* ValueExpected */, [], [4 /* CloseBracketToken */, 5 /* CommaToken */]);\n }\n needsComma = true;\n }\n onArrayEnd();\n if (_scanner.getToken() !== 4 /* CloseBracketToken */) {\n handleError(8 /* CloseBracketExpected */, [4 /* CloseBracketToken */], []);\n }\n else {\n scanNext(); // consume close bracket\n }\n return true;\n }\n function parseValue() {\n switch (_scanner.getToken()) {\n case 3 /* OpenBracketToken */:\n return parseArray();\n case 1 /* OpenBraceToken */:\n return parseObject();\n case 10 /* StringLiteral */:\n return parseString(true);\n default:\n return parseLiteral();\n }\n }\n scanNext();\n if (_scanner.getToken() === 17 /* EOF */) {\n if (options.allowEmptyContent) {\n return true;\n }\n handleError(4 /* ValueExpected */, [], []);\n return false;\n }\n if (!parseValue()) {\n handleError(4 /* ValueExpected */, [], []);\n return false;\n }\n if (_scanner.getToken() !== 17 /* EOF */) {\n handleError(9 /* EndOfFileExpected */, [], []);\n }\n return true;\n}\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport function stripComments(text, replaceCh) {\n var _scanner = createScanner(text), parts = [], kind, offset = 0, pos;\n do {\n pos = _scanner.getPosition();\n kind = _scanner.scan();\n switch (kind) {\n case 12 /* LineCommentTrivia */:\n case 13 /* BlockCommentTrivia */:\n case 17 /* EOF */:\n if (offset !== pos) {\n parts.push(text.substring(offset, pos));\n }\n if (replaceCh !== undefined) {\n parts.push(_scanner.getTokenValue().replace(/[^\\r\\n]/g, replaceCh));\n }\n offset = _scanner.getPosition();\n break;\n }\n } while (kind !== 17 /* EOF */);\n return parts.join('');\n}\nexport function getNodeType(value) {\n switch (typeof value) {\n case 'boolean': return 'boolean';\n case 'number': return 'number';\n case 'string': return 'string';\n case 'object': {\n if (!value) {\n return 'null';\n }\n else if (Array.isArray(value)) {\n return 'array';\n }\n return 'object';\n }\n default: return 'null';\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport function createScanner(text, ignoreTrivia) {\n if (ignoreTrivia === void 0) { ignoreTrivia = false; }\n var len = text.length;\n var pos = 0, value = '', tokenOffset = 0, token = 16 /* Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* None */;\n function scanHexDigits(count, exact) {\n var digits = 0;\n var value = 0;\n while (digits < count || !exact) {\n var ch = text.charCodeAt(pos);\n if (ch >= 48 /* _0 */ && ch <= 57 /* _9 */) {\n value = value * 16 + ch - 48 /* _0 */;\n }\n else if (ch >= 65 /* A */ && ch <= 70 /* F */) {\n value = value * 16 + ch - 65 /* A */ + 10;\n }\n else if (ch >= 97 /* a */ && ch <= 102 /* f */) {\n value = value * 16 + ch - 97 /* a */ + 10;\n }\n else {\n break;\n }\n pos++;\n digits++;\n }\n if (digits < count) {\n value = -1;\n }\n return value;\n }\n function setPosition(newPosition) {\n pos = newPosition;\n value = '';\n tokenOffset = 0;\n token = 16 /* Unknown */;\n scanError = 0 /* None */;\n }\n function scanNumber() {\n var start = pos;\n if (text.charCodeAt(pos) === 48 /* _0 */) {\n pos++;\n }\n else {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n if (pos < text.length && text.charCodeAt(pos) === 46 /* dot */) {\n pos++;\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n }\n else {\n scanError = 3 /* UnexpectedEndOfNumber */;\n return text.substring(start, pos);\n }\n }\n var end = pos;\n if (pos < text.length && (text.charCodeAt(pos) === 69 /* E */ || text.charCodeAt(pos) === 101 /* e */)) {\n pos++;\n if (pos < text.length && text.charCodeAt(pos) === 43 /* plus */ || text.charCodeAt(pos) === 45 /* minus */) {\n pos++;\n }\n if (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n while (pos < text.length && isDigit(text.charCodeAt(pos))) {\n pos++;\n }\n end = pos;\n }\n else {\n scanError = 3 /* UnexpectedEndOfNumber */;\n }\n }\n return text.substring(start, end);\n }\n function scanString() {\n var result = '', start = pos;\n while (true) {\n if (pos >= len) {\n result += text.substring(start, pos);\n scanError = 2 /* UnexpectedEndOfString */;\n break;\n }\n var ch = text.charCodeAt(pos);\n if (ch === 34 /* doubleQuote */) {\n result += text.substring(start, pos);\n pos++;\n break;\n }\n if (ch === 92 /* backslash */) {\n result += text.substring(start, pos);\n pos++;\n if (pos >= len) {\n scanError = 2 /* UnexpectedEndOfString */;\n break;\n }\n var ch2 = text.charCodeAt(pos++);\n switch (ch2) {\n case 34 /* doubleQuote */:\n result += '\\\"';\n break;\n case 92 /* backslash */:\n result += '\\\\';\n break;\n case 47 /* slash */:\n result += '/';\n break;\n case 98 /* b */:\n result += '\\b';\n break;\n case 102 /* f */:\n result += '\\f';\n break;\n case 110 /* n */:\n result += '\\n';\n break;\n case 114 /* r */:\n result += '\\r';\n break;\n case 116 /* t */:\n result += '\\t';\n break;\n case 117 /* u */:\n var ch3 = scanHexDigits(4, true);\n if (ch3 >= 0) {\n result += String.fromCharCode(ch3);\n }\n else {\n scanError = 4 /* InvalidUnicode */;\n }\n break;\n default:\n scanError = 5 /* InvalidEscapeCharacter */;\n }\n start = pos;\n continue;\n }\n if (ch >= 0 && ch <= 0x1f) {\n if (isLineBreak(ch)) {\n result += text.substring(start, pos);\n scanError = 2 /* UnexpectedEndOfString */;\n break;\n }\n else {\n scanError = 6 /* InvalidCharacter */;\n // mark as error but continue with string\n }\n }\n pos++;\n }\n return result;\n }\n function scanNext() {\n value = '';\n scanError = 0 /* None */;\n tokenOffset = pos;\n lineStartOffset = lineNumber;\n prevTokenLineStartOffset = tokenLineStartOffset;\n if (pos >= len) {\n // at the end\n tokenOffset = len;\n return token = 17 /* EOF */;\n }\n var code = text.charCodeAt(pos);\n // trivia: whitespace\n if (isWhiteSpace(code)) {\n do {\n pos++;\n value += String.fromCharCode(code);\n code = text.charCodeAt(pos);\n } while (isWhiteSpace(code));\n return token = 15 /* Trivia */;\n }\n // trivia: newlines\n if (isLineBreak(code)) {\n pos++;\n value += String.fromCharCode(code);\n if (code === 13 /* carriageReturn */ && text.charCodeAt(pos) === 10 /* lineFeed */) {\n pos++;\n value += '\\n';\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n return token = 14 /* LineBreakTrivia */;\n }\n switch (code) {\n // tokens: []{}:,\n case 123 /* openBrace */:\n pos++;\n return token = 1 /* OpenBraceToken */;\n case 125 /* closeBrace */:\n pos++;\n return token = 2 /* CloseBraceToken */;\n case 91 /* openBracket */:\n pos++;\n return token = 3 /* OpenBracketToken */;\n case 93 /* closeBracket */:\n pos++;\n return token = 4 /* CloseBracketToken */;\n case 58 /* colon */:\n pos++;\n return token = 6 /* ColonToken */;\n case 44 /* comma */:\n pos++;\n return token = 5 /* CommaToken */;\n // strings\n case 34 /* doubleQuote */:\n pos++;\n value = scanString();\n return token = 10 /* StringLiteral */;\n // comments\n case 47 /* slash */:\n var start = pos - 1;\n // Single-line comment\n if (text.charCodeAt(pos + 1) === 47 /* slash */) {\n pos += 2;\n while (pos < len) {\n if (isLineBreak(text.charCodeAt(pos))) {\n break;\n }\n pos++;\n }\n value = text.substring(start, pos);\n return token = 12 /* LineCommentTrivia */;\n }\n // Multi-line comment\n if (text.charCodeAt(pos + 1) === 42 /* asterisk */) {\n pos += 2;\n var safeLength = len - 1; // For lookahead.\n var commentClosed = false;\n while (pos < safeLength) {\n var ch = text.charCodeAt(pos);\n if (ch === 42 /* asterisk */ && text.charCodeAt(pos + 1) === 47 /* slash */) {\n pos += 2;\n commentClosed = true;\n break;\n }\n pos++;\n if (isLineBreak(ch)) {\n if (ch === 13 /* carriageReturn */ && text.charCodeAt(pos) === 10 /* lineFeed */) {\n pos++;\n }\n lineNumber++;\n tokenLineStartOffset = pos;\n }\n }\n if (!commentClosed) {\n pos++;\n scanError = 1 /* UnexpectedEndOfComment */;\n }\n value = text.substring(start, pos);\n return token = 13 /* BlockCommentTrivia */;\n }\n // just a single slash\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* Unknown */;\n // numbers\n case 45 /* minus */:\n value += String.fromCharCode(code);\n pos++;\n if (pos === len || !isDigit(text.charCodeAt(pos))) {\n return token = 16 /* Unknown */;\n }\n // found a minus, followed by a number so\n // we fall through to proceed with scanning\n // numbers\n case 48 /* _0 */:\n case 49 /* _1 */:\n case 50 /* _2 */:\n case 51 /* _3 */:\n case 52 /* _4 */:\n case 53 /* _5 */:\n case 54 /* _6 */:\n case 55 /* _7 */:\n case 56 /* _8 */:\n case 57 /* _9 */:\n value += scanNumber();\n return token = 11 /* NumericLiteral */;\n // literals and unknown symbols\n default:\n // is a literal? Read the full word.\n while (pos < len && isUnknownContentCharacter(code)) {\n pos++;\n code = text.charCodeAt(pos);\n }\n if (tokenOffset !== pos) {\n value = text.substring(tokenOffset, pos);\n // keywords: true, false, null\n switch (value) {\n case 'true': return token = 8 /* TrueKeyword */;\n case 'false': return token = 9 /* FalseKeyword */;\n case 'null': return token = 7 /* NullKeyword */;\n }\n return token = 16 /* Unknown */;\n }\n // some\n value += String.fromCharCode(code);\n pos++;\n return token = 16 /* Unknown */;\n }\n }\n function isUnknownContentCharacter(code) {\n if (isWhiteSpace(code) || isLineBreak(code)) {\n return false;\n }\n switch (code) {\n case 125 /* closeBrace */:\n case 93 /* closeBracket */:\n case 123 /* openBrace */:\n case 91 /* openBracket */:\n case 34 /* doubleQuote */:\n case 58 /* colon */:\n case 44 /* comma */:\n case 47 /* slash */:\n return false;\n }\n return true;\n }\n function scanNextNonTrivia() {\n var result;\n do {\n result = scanNext();\n } while (result >= 12 /* LineCommentTrivia */ && result <= 15 /* Trivia */);\n return result;\n }\n return {\n setPosition: setPosition,\n getPosition: function () { return pos; },\n scan: ignoreTrivia ? scanNextNonTrivia : scanNext,\n getToken: function () { return token; },\n getTokenValue: function () { return value; },\n getTokenOffset: function () { return tokenOffset; },\n getTokenLength: function () { return pos - tokenOffset; },\n getTokenStartLine: function () { return lineStartOffset; },\n getTokenStartCharacter: function () { return tokenOffset - prevTokenLineStartOffset; },\n getTokenError: function () { return scanError; },\n };\n}\nfunction isWhiteSpace(ch) {\n return ch === 32 /* space */ || ch === 9 /* tab */ || ch === 11 /* verticalTab */ || ch === 12 /* formFeed */ ||\n ch === 160 /* nonBreakingSpace */ || ch === 5760 /* ogham */ || ch >= 8192 /* enQuad */ && ch <= 8203 /* zeroWidthSpace */ ||\n ch === 8239 /* narrowNoBreakSpace */ || ch === 8287 /* mathematicalSpace */ || ch === 12288 /* ideographicSpace */ || ch === 65279 /* byteOrderMark */;\n}\nfunction isLineBreak(ch) {\n return ch === 10 /* lineFeed */ || ch === 13 /* carriageReturn */ || ch === 8232 /* lineSeparator */ || ch === 8233 /* paragraphSeparator */;\n}\nfunction isDigit(ch) {\n return ch >= 48 /* _0 */ && ch <= 57 /* _9 */;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nimport * as formatter from './impl/format.js';\nimport * as edit from './impl/edit.js';\nimport * as scanner from './impl/scanner.js';\nimport * as parser from './impl/parser.js';\n/**\n * Creates a JSON scanner on the given text.\n * If ignoreTrivia is set, whitespaces or comments are ignored.\n */\nexport var createScanner = scanner.createScanner;\n/**\n * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.\n */\nexport var getLocation = parser.getLocation;\n/**\n * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n * Therefore, always check the errors list to find out if the input was valid.\n */\nexport var parse = parser.parse;\n/**\n * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.\n */\nexport var parseTree = parser.parseTree;\n/**\n * Finds the node at the given path in a JSON DOM.\n */\nexport var findNodeAtLocation = parser.findNodeAtLocation;\n/**\n * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.\n */\nexport var findNodeAtOffset = parser.findNodeAtOffset;\n/**\n * Gets the JSON path of the given JSON DOM node\n */\nexport var getNodePath = parser.getNodePath;\n/**\n * Evaluates the JavaScript object of the given JSON DOM node\n */\nexport var getNodeValue = parser.getNodeValue;\n/**\n * Parses the given text and invokes the visitor functions for each object, array and literal reached.\n */\nexport var visit = parser.visit;\n/**\n * Takes JSON with JavaScript-style comments and remove\n * them. Optionally replaces every none-newline character\n * of comments with a replaceCharacter\n */\nexport var stripComments = parser.stripComments;\nexport function printParseErrorCode(code) {\n switch (code) {\n case 1 /* InvalidSymbol */: return 'InvalidSymbol';\n case 2 /* InvalidNumberFormat */: return 'InvalidNumberFormat';\n case 3 /* PropertyNameExpected */: return 'PropertyNameExpected';\n case 4 /* ValueExpected */: return 'ValueExpected';\n case 5 /* ColonExpected */: return 'ColonExpected';\n case 6 /* CommaExpected */: return 'CommaExpected';\n case 7 /* CloseBraceExpected */: return 'CloseBraceExpected';\n case 8 /* CloseBracketExpected */: return 'CloseBracketExpected';\n case 9 /* EndOfFileExpected */: return 'EndOfFileExpected';\n case 10 /* InvalidCommentToken */: return 'InvalidCommentToken';\n case 11 /* UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';\n case 12 /* UnexpectedEndOfString */: return 'UnexpectedEndOfString';\n case 13 /* UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';\n case 14 /* InvalidUnicode */: return 'InvalidUnicode';\n case 15 /* InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';\n case 16 /* InvalidCharacter */: return 'InvalidCharacter';\n }\n return '<unknown ParseErrorCode>';\n}\n/**\n * Computes the edits needed to format a JSON document.\n *\n * @param documentText The input text\n * @param range The range to format or `undefined` to format the full content\n * @param options The formatting options\n * @returns A list of edit operations describing the formatting changes to the original document. Edits can be either inserts, replacements or\n * removals of text segments. All offsets refer to the original state of the document. No two edits must change or remove the same range of\n * text in the original document. However, multiple edits can have\n * the same offset, for example multiple inserts, or an insert followed by a remove or replace. The order in the array defines which edit is applied first.\n * To apply edits to an input, you can use `applyEdits`.\n */\nexport function format(documentText, range, options) {\n return formatter.format(documentText, range, options);\n}\n/**\n * Computes the edits needed to modify a value in the JSON document.\n *\n * @param documentText The input text\n * @param path The path of the value to change. The path represents either to the document root, a property or an array item.\n * If the path points to an non-existing property or item, it will be created.\n * @param value The new value for the specified property or item. If the value is undefined,\n * the property or item will be removed.\n * @param options Options\n * @returns A list of edit operations describing the formatting changes to the original document. Edits can be either inserts, replacements or\n * removals of text segments. All offsets refer to the original state of the document. No two edits must change or remove the same range of\n * text in the original document. However, multiple edits can have\n * the same offset, for example multiple inserts, or an insert followed by a remove or replace. The order in the array defines which edit is applied first.\n * To apply edits to an input, you can use `applyEdits`.\n */\nexport function modify(text, path, value, options) {\n return edit.setProperty(text, path, value, options);\n}\n/**\n * Applies edits to a input string.\n */\nexport function applyEdits(text, edits) {\n for (var i = edits.length - 1; i >= 0; i--) {\n text = edit.applyEdit(text, edits[i]);\n }\n return text;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { JSONCompletion } from './services/jsonCompletion.js';\nimport { JSONHover } from './services/jsonHover.js';\nimport { JSONValidation } from './services/jsonValidation.js';\nimport { JSONDocumentSymbols } from './services/jsonDocumentSymbols.js';\nimport { parse as parseJSON, newJSONDocument } from './parser/jsonParser.js';\nimport { schemaContributions } from './services/configuration.js';\nimport { JSONSchemaService } from './services/jsonSchemaService.js';\nimport { getFoldingRanges } from './services/jsonFolding.js';\nimport { getSelectionRanges } from './services/jsonSelectionRanges.js';\nimport { format as formatJSON } from '../jsonc-parser/main.js';\nimport { Range, TextEdit } from './jsonLanguageTypes.js';\nimport { findDefinition } from './services/jsonDefinition.js';\nexport * from './jsonLanguageTypes.js';\nexport function getLanguageService(params) {\n var promise = params.promiseConstructor || Promise;\n var jsonSchemaService = new JSONSchemaService(params.schemaRequestService, params.workspaceContext, promise);\n jsonSchemaService.setSchemaContributions(schemaContributions);\n var jsonCompletion = new JSONCompletion(jsonSchemaService, params.contributions, promise, params.clientCapabilities);\n var jsonHover = new JSONHover(jsonSchemaService, params.contributions, promise);\n var jsonDocumentSymbols = new JSONDocumentSymbols(jsonSchemaService);\n var jsonValidation = new JSONValidation(jsonSchemaService, promise);\n return {\n configure: function (settings) {\n jsonSchemaService.clearExternalSchemas();\n if (settings.schemas) {\n settings.schemas.forEach(function (settings) {\n jsonSchemaService.registerExternalSchema(settings.uri, settings.fileMatch, settings.schema);\n });\n }\n jsonValidation.configure(settings);\n },\n resetSchema: function (uri) { return jsonSchemaService.onResourceChange(uri); },\n doValidation: jsonValidation.doValidation.bind(jsonValidation),\n parseJSONDocument: function (document) { return parseJSON(document, { collectComments: true }); },\n newJSONDocument: function (root, diagnostics) { return newJSONDocument(root, diagnostics); },\n getMatchingSchemas: jsonSchemaService.getMatchingSchemas.bind(jsonSchemaService),\n doResolve: jsonCompletion.doResolve.bind(jsonCompletion),\n doComplete: jsonCompletion.doComplete.bind(jsonCompletion),\n findDocumentSymbols: jsonDocumentSymbols.findDocumentSymbols.bind(jsonDocumentSymbols),\n findDocumentSymbols2: jsonDocumentSymbols.findDocumentSymbols2.bind(jsonDocumentSymbols),\n findColorSymbols: function (d, s) { return jsonDocumentSymbols.findDocumentColors(d, s).then(function (s) { return s.map(function (s) { return s.range; }); }); },\n findDocumentColors: jsonDocumentSymbols.findDocumentColors.bind(jsonDocumentSymbols),\n getColorPresentations: jsonDocumentSymbols.getColorPresentations.bind(jsonDocumentSymbols),\n doHover: jsonHover.doHover.bind(jsonHover),\n getFoldingRanges: getFoldingRanges,\n getSelectionRanges: getSelectionRanges,\n findDefinition: findDefinition,\n format: function (d, r, o) {\n var range = undefined;\n if (r) {\n var offset = d.offsetAt(r.start);\n var length = d.offsetAt(r.end) - offset;\n range = { offset: offset, length: length };\n }\n var options = { tabSize: o ? o.tabSize : 4, insertSpaces: o ? o.insertSpaces : true, eol: '\\n' };\n return formatJSON(d.getText(), range, options).map(function (e) {\n return TextEdit.replace(Range.create(d.positionAt(e.offset), d.positionAt(e.offset + e.length)), e.content);\n });\n }\n };\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range, TextEdit, Color, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind, MarkupKind, SelectionRange, Diagnostic, DiagnosticSeverity, CompletionItem, CompletionItemKind, CompletionList, Position, InsertTextFormat, MarkupContent, SymbolInformation, SymbolKind, DocumentSymbol, Location, Hover, MarkedString, FormattingOptions } from '../vscode-languageserver-types/main.js';\nimport { TextDocument } from '../vscode-languageserver-textdocument/lib/esm/main.js';\nexport { TextDocument, Range, TextEdit, Color, ColorInformation, ColorPresentation, FoldingRange, FoldingRangeKind, SelectionRange, Diagnostic, DiagnosticSeverity, CompletionItem, CompletionItemKind, CompletionList, Position, InsertTextFormat, MarkupContent, MarkupKind, SymbolInformation, SymbolKind, DocumentSymbol, Location, Hover, MarkedString, FormattingOptions };\n/**\n * Error codes used by diagnostics\n */\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[ErrorCode[\"Undefined\"] = 0] = \"Undefined\";\n ErrorCode[ErrorCode[\"EnumValueMismatch\"] = 1] = \"EnumValueMismatch\";\n ErrorCode[ErrorCode[\"UnexpectedEndOfComment\"] = 257] = \"UnexpectedEndOfComment\";\n ErrorCode[ErrorCode[\"UnexpectedEndOfString\"] = 258] = \"UnexpectedEndOfString\";\n ErrorCode[ErrorCode[\"UnexpectedEndOfNumber\"] = 259] = \"UnexpectedEndOfNumber\";\n ErrorCode[ErrorCode[\"InvalidUnicode\"] = 260] = \"InvalidUnicode\";\n ErrorCode[ErrorCode[\"InvalidEscapeCharacter\"] = 261] = \"InvalidEscapeCharacter\";\n ErrorCode[ErrorCode[\"InvalidCharacter\"] = 262] = \"InvalidCharacter\";\n ErrorCode[ErrorCode[\"PropertyExpected\"] = 513] = \"PropertyExpected\";\n ErrorCode[ErrorCode[\"CommaExpected\"] = 514] = \"CommaExpected\";\n ErrorCode[ErrorCode[\"ColonExpected\"] = 515] = \"ColonExpected\";\n ErrorCode[ErrorCode[\"ValueExpected\"] = 516] = \"ValueExpected\";\n ErrorCode[ErrorCode[\"CommaOrCloseBacketExpected\"] = 517] = \"CommaOrCloseBacketExpected\";\n ErrorCode[ErrorCode[\"CommaOrCloseBraceExpected\"] = 518] = \"CommaOrCloseBraceExpected\";\n ErrorCode[ErrorCode[\"TrailingComma\"] = 519] = \"TrailingComma\";\n ErrorCode[ErrorCode[\"DuplicateKey\"] = 520] = \"DuplicateKey\";\n ErrorCode[ErrorCode[\"CommentNotPermitted\"] = 521] = \"CommentNotPermitted\";\n ErrorCode[ErrorCode[\"SchemaResolveError\"] = 768] = \"SchemaResolveError\";\n})(ErrorCode || (ErrorCode = {}));\nexport var ClientCapabilities;\n(function (ClientCapabilities) {\n ClientCapabilities.LATEST = {\n textDocument: {\n completion: {\n completionItem: {\n documentationFormat: [MarkupKind.Markdown, MarkupKind.PlainText],\n commitCharactersSupport: true\n }\n }\n }\n };\n})(ClientCapabilities || (ClientCapabilities = {}));\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as Json from '../../jsonc-parser/main.js';\nimport { isNumber, equals, isBoolean, isString, isDefined } from '../utils/objects.js';\nimport { ErrorCode, Diagnostic, DiagnosticSeverity, Range } from '../jsonLanguageTypes.js';\nimport * as nls from '../../../fillers/vscode-nls.js';\nvar localize = nls.loadMessageBundle();\nvar formats = {\n 'color-hex': { errorMessage: localize('colorHexFormatWarning', 'Invalid color format. Use #RGB, #RGBA, #RRGGBB or #RRGGBBAA.'), pattern: /^#([0-9A-Fa-f]{3,4}|([0-9A-Fa-f]{2}){3,4})$/ },\n 'date-time': { errorMessage: localize('dateTimeFormatWarning', 'String is not a RFC3339 date-time.'), pattern: /^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(Z|(\\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i },\n 'date': { errorMessage: localize('dateFormatWarning', 'String is not a RFC3339 date.'), pattern: /^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/i },\n 'time': { errorMessage: localize('timeFormatWarning', 'String is not a RFC3339 time.'), pattern: /^([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(Z|(\\+|-)([01][0-9]|2[0-3]):([0-5][0-9]))$/i },\n 'email': { errorMessage: localize('emailFormatWarning', 'String is not an e-mail address.'), pattern: /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/ }\n};\nvar ASTNodeImpl = /** @class */ (function () {\n function ASTNodeImpl(parent, offset, length) {\n if (length === void 0) { length = 0; }\n this.offset = offset;\n this.length = length;\n this.parent = parent;\n }\n Object.defineProperty(ASTNodeImpl.prototype, \"children\", {\n get: function () {\n return [];\n },\n enumerable: false,\n configurable: true\n });\n ASTNodeImpl.prototype.toString = function () {\n return 'type: ' + this.type + ' (' + this.offset + '/' + this.length + ')' + (this.parent ? ' parent: {' + this.parent.toString() + '}' : '');\n };\n return ASTNodeImpl;\n}());\nexport { ASTNodeImpl };\nvar NullASTNodeImpl = /** @class */ (function (_super) {\n __extends(NullASTNodeImpl, _super);\n function NullASTNodeImpl(parent, offset) {\n var _this = _super.call(this, parent, offset) || this;\n _this.type = 'null';\n _this.value = null;\n return _this;\n }\n return NullASTNodeImpl;\n}(ASTNodeImpl));\nexport { NullASTNodeImpl };\nvar BooleanASTNodeImpl = /** @class */ (function (_super) {\n __extends(BooleanASTNodeImpl, _super);\n function BooleanASTNodeImpl(parent, boolValue, offset) {\n var _this = _super.call(this, parent, offset) || this;\n _this.type = 'boolean';\n _this.value = boolValue;\n return _this;\n }\n return BooleanASTNodeImpl;\n}(ASTNodeImpl));\nexport { BooleanASTNodeImpl };\nvar ArrayASTNodeImpl = /** @class */ (function (_super) {\n __extends(ArrayASTNodeImpl, _super);\n function ArrayASTNodeImpl(parent, offset) {\n var _this = _super.call(this, parent, offset) || this;\n _this.type = 'array';\n _this.items = [];\n return _this;\n }\n Object.defineProperty(ArrayASTNodeImpl.prototype, \"children\", {\n get: function () {\n return this.items;\n },\n enumerable: false,\n configurable: true\n });\n return ArrayASTNodeImpl;\n}(ASTNodeImpl));\nexport { ArrayASTNodeImpl };\nvar NumberASTNodeImpl = /** @class */ (function (_super) {\n __extends(NumberASTNodeImpl, _super);\n function NumberASTNodeImpl(parent, offset) {\n var _this = _super.call(this, parent, offset) || this;\n _this.type = 'number';\n _this.isInteger = true;\n _this.value = Number.NaN;\n return _this;\n }\n return NumberASTNodeImpl;\n}(ASTNodeImpl));\nexport { NumberASTNodeImpl };\nvar StringASTNodeImpl = /** @class */ (function (_super) {\n __extends(StringASTNodeImpl, _super);\n function StringASTNodeImpl(parent, offset, length) {\n var _this = _super.call(this, parent, offset, length) || this;\n _this.type = 'string';\n _this.value = '';\n return _this;\n }\n return StringASTNodeImpl;\n}(ASTNodeImpl));\nexport { StringASTNodeImpl };\nvar PropertyASTNodeImpl = /** @class */ (function (_super) {\n __extends(PropertyASTNodeImpl, _super);\n function PropertyASTNodeImpl(parent, offset, keyNode) {\n var _this = _super.call(this, parent, offset) || this;\n _this.type = 'property';\n _this.colonOffset = -1;\n _this.keyNode = keyNode;\n return _this;\n }\n Object.defineProperty(PropertyASTNodeImpl.prototype, \"children\", {\n get: function () {\n return this.valueNode ? [this.keyNode, this.valueNode] : [this.keyNode];\n },\n enumerable: false,\n configurable: true\n });\n return PropertyASTNodeImpl;\n}(ASTNodeImpl));\nexport { PropertyASTNodeImpl };\nvar ObjectASTNodeImpl = /** @class */ (function (_super) {\n __extends(ObjectASTNodeImpl, _super);\n function ObjectASTNodeImpl(parent, offset) {\n var _this = _super.call(this, parent, offset) || this;\n _this.type = 'object';\n _this.properties = [];\n return _this;\n }\n Object.defineProperty(ObjectASTNodeImpl.prototype, \"children\", {\n get: function () {\n return this.properties;\n },\n enumerable: false,\n configurable: true\n });\n return ObjectASTNodeImpl;\n}(ASTNodeImpl));\nexport { ObjectASTNodeImpl };\nexport function asSchema(schema) {\n if (isBoolean(schema)) {\n return schema ? {} : { \"not\": {} };\n }\n return schema;\n}\nexport var EnumMatch;\n(function (EnumMatch) {\n EnumMatch[EnumMatch[\"Key\"] = 0] = \"Key\";\n EnumMatch[EnumMatch[\"Enum\"] = 1] = \"Enum\";\n})(EnumMatch || (EnumMatch = {}));\nvar SchemaCollector = /** @class */ (function () {\n function SchemaCollector(focusOffset, exclude) {\n if (focusOffset === void 0) { focusOffset = -1; }\n this.focusOffset = focusOffset;\n this.exclude = exclude;\n this.schemas = [];\n }\n SchemaCollector.prototype.add = function (schema) {\n this.schemas.push(schema);\n };\n SchemaCollector.prototype.merge = function (other) {\n Array.prototype.push.apply(this.schemas, other.schemas);\n };\n SchemaCollector.prototype.include = function (node) {\n return (this.focusOffset === -1 || contains(node, this.focusOffset)) && (node !== this.exclude);\n };\n SchemaCollector.prototype.newSub = function () {\n return new SchemaCollector(-1, this.exclude);\n };\n return SchemaCollector;\n}());\nvar NoOpSchemaCollector = /** @class */ (function () {\n function NoOpSchemaCollector() {\n }\n Object.defineProperty(NoOpSchemaCollector.prototype, \"schemas\", {\n get: function () { return []; },\n enumerable: false,\n configurable: true\n });\n NoOpSchemaCollector.prototype.add = function (schema) { };\n NoOpSchemaCollector.prototype.merge = function (other) { };\n NoOpSchemaCollector.prototype.include = function (node) { return true; };\n NoOpSchemaCollector.prototype.newSub = function () { return this; };\n NoOpSchemaCollector.instance = new NoOpSchemaCollector();\n return NoOpSchemaCollector;\n}());\nvar ValidationResult = /** @class */ (function () {\n function ValidationResult() {\n this.problems = [];\n this.propertiesMatches = 0;\n this.propertiesValueMatches = 0;\n this.primaryValueMatches = 0;\n this.enumValueMatch = false;\n this.enumValues = undefined;\n }\n ValidationResult.prototype.hasProblems = function () {\n return !!this.problems.length;\n };\n ValidationResult.prototype.mergeAll = function (validationResults) {\n for (var _i = 0, validationResults_1 = validationResults; _i < validationResults_1.length; _i++) {\n var validationResult = validationResults_1[_i];\n this.merge(validationResult);\n }\n };\n ValidationResult.prototype.merge = function (validationResult) {\n this.problems = this.problems.concat(validationResult.problems);\n };\n ValidationResult.prototype.mergeEnumValues = function (validationResult) {\n if (!this.enumValueMatch && !validationResult.enumValueMatch && this.enumValues && validationResult.enumValues) {\n this.enumValues = this.enumValues.concat(validationResult.enumValues);\n for (var _i = 0, _a = this.problems; _i < _a.length; _i++) {\n var error = _a[_i];\n if (error.code === ErrorCode.EnumValueMismatch) {\n error.message = localize('enumWarning', 'Value is not accepted. Valid values: {0}.', this.enumValues.map(function (v) { return JSON.stringify(v); }).join(', '));\n }\n }\n }\n };\n ValidationResult.prototype.mergePropertyMatch = function (propertyValidationResult) {\n this.merge(propertyValidationResult);\n this.propertiesMatches++;\n if (propertyValidationResult.enumValueMatch || !propertyValidationResult.hasProblems() && propertyValidationResult.propertiesMatches) {\n this.propertiesValueMatches++;\n }\n if (propertyValidationResult.enumValueMatch && propertyValidationResult.enumValues && propertyValidationResult.enumValues.length === 1) {\n this.primaryValueMatches++;\n }\n };\n ValidationResult.prototype.compare = function (other) {\n var hasProblems = this.hasProblems();\n if (hasProblems !== other.hasProblems()) {\n return hasProblems ? -1 : 1;\n }\n if (this.enumValueMatch !== other.enumValueMatch) {\n return other.enumValueMatch ? -1 : 1;\n }\n if (this.primaryValueMatches !== other.primaryValueMatches) {\n return this.primaryValueMatches - other.primaryValueMatches;\n }\n if (this.propertiesValueMatches !== other.propertiesValueMatches) {\n return this.propertiesValueMatches - other.propertiesValueMatches;\n }\n return this.propertiesMatches - other.propertiesMatches;\n };\n return ValidationResult;\n}());\nexport { ValidationResult };\nexport function newJSONDocument(root, diagnostics) {\n if (diagnostics === void 0) { diagnostics = []; }\n return new JSONDocument(root, diagnostics, []);\n}\nexport function getNodeValue(node) {\n return Json.getNodeValue(node);\n}\nexport function getNodePath(node) {\n return Json.getNodePath(node);\n}\nexport function contains(node, offset, includeRightBound) {\n if (includeRightBound === void 0) { includeRightBound = false; }\n return offset >= node.offset && offset < (node.offset + node.length) || includeRightBound && offset === (node.offset + node.length);\n}\nvar JSONDocument = /** @class */ (function () {\n function JSONDocument(root, syntaxErrors, comments) {\n if (syntaxErrors === void 0) { syntaxErrors = []; }\n if (comments === void 0) { comments = []; }\n this.root = root;\n this.syntaxErrors = syntaxErrors;\n this.comments = comments;\n }\n JSONDocument.prototype.getNodeFromOffset = function (offset, includeRightBound) {\n if (includeRightBound === void 0) { includeRightBound = false; }\n if (this.root) {\n return Json.findNodeAtOffset(this.root, offset, includeRightBound);\n }\n return undefined;\n };\n JSONDocument.prototype.visit = function (visitor) {\n if (this.root) {\n var doVisit_1 = function (node) {\n var ctn = visitor(node);\n var children = node.children;\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length && ctn; i++) {\n ctn = doVisit_1(children[i]);\n }\n }\n return ctn;\n };\n doVisit_1(this.root);\n }\n };\n JSONDocument.prototype.validate = function (textDocument, schema) {\n if (this.root && schema) {\n var validationResult = new ValidationResult();\n validate(this.root, schema, validationResult, NoOpSchemaCollector.instance);\n return validationResult.problems.map(function (p) {\n var range = Range.create(textDocument.positionAt(p.location.offset), textDocument.positionAt(p.location.offset + p.location.length));\n return Diagnostic.create(range, p.message, p.severity, p.code);\n });\n }\n return undefined;\n };\n JSONDocument.prototype.getMatchingSchemas = function (schema, focusOffset, exclude) {\n if (focusOffset === void 0) { focusOffset = -1; }\n var matchingSchemas = new SchemaCollector(focusOffset, exclude);\n if (this.root && schema) {\n validate(this.root, schema, new ValidationResult(), matchingSchemas);\n }\n return matchingSchemas.schemas;\n };\n return JSONDocument;\n}());\nexport { JSONDocument };\nfunction validate(n, schema, validationResult, matchingSchemas) {\n if (!n || !matchingSchemas.include(n)) {\n return;\n }\n var node = n;\n switch (node.type) {\n case 'object':\n _validateObjectNode(node, schema, validationResult, matchingSchemas);\n break;\n case 'array':\n _validateArrayNode(node, schema, validationResult, matchingSchemas);\n break;\n case 'string':\n _validateStringNode(node, schema, validationResult, matchingSchemas);\n break;\n case 'number':\n _validateNumberNode(node, schema, validationResult, matchingSchemas);\n break;\n case 'property':\n return validate(node.valueNode, schema, validationResult, matchingSchemas);\n }\n _validateNode();\n matchingSchemas.add({ node: node, schema: schema });\n function _validateNode() {\n function matchesType(type) {\n return node.type === type || (type === 'integer' && node.type === 'number' && node.isInteger);\n }\n if (Array.isArray(schema.type)) {\n if (!schema.type.some(matchesType)) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.errorMessage || localize('typeArrayMismatchWarning', 'Incorrect type. Expected one of {0}.', schema.type.join(', '))\n });\n }\n }\n else if (schema.type) {\n if (!matchesType(schema.type)) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.errorMessage || localize('typeMismatchWarning', 'Incorrect type. Expected \"{0}\".', schema.type)\n });\n }\n }\n if (Array.isArray(schema.allOf)) {\n for (var _i = 0, _a = schema.allOf; _i < _a.length; _i++) {\n var subSchemaRef = _a[_i];\n validate(node, asSchema(subSchemaRef), validationResult, matchingSchemas);\n }\n }\n var notSchema = asSchema(schema.not);\n if (notSchema) {\n var subValidationResult = new ValidationResult();\n var subMatchingSchemas = matchingSchemas.newSub();\n validate(node, notSchema, subValidationResult, subMatchingSchemas);\n if (!subValidationResult.hasProblems()) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('notSchemaWarning', \"Matches a schema that is not allowed.\")\n });\n }\n for (var _b = 0, _c = subMatchingSchemas.schemas; _b < _c.length; _b++) {\n var ms = _c[_b];\n ms.inverted = !ms.inverted;\n matchingSchemas.add(ms);\n }\n }\n var testAlternatives = function (alternatives, maxOneMatch) {\n var matches = [];\n // remember the best match that is used for error messages\n var bestMatch = undefined;\n for (var _i = 0, alternatives_1 = alternatives; _i < alternatives_1.length; _i++) {\n var subSchemaRef = alternatives_1[_i];\n var subSchema = asSchema(subSchemaRef);\n var subValidationResult = new ValidationResult();\n var subMatchingSchemas = matchingSchemas.newSub();\n validate(node, subSchema, subValidationResult, subMatchingSchemas);\n if (!subValidationResult.hasProblems()) {\n matches.push(subSchema);\n }\n if (!bestMatch) {\n bestMatch = { schema: subSchema, validationResult: subValidationResult, matchingSchemas: subMatchingSchemas };\n }\n else {\n if (!maxOneMatch && !subValidationResult.hasProblems() && !bestMatch.validationResult.hasProblems()) {\n // no errors, both are equally good matches\n bestMatch.matchingSchemas.merge(subMatchingSchemas);\n bestMatch.validationResult.propertiesMatches += subValidationResult.propertiesMatches;\n bestMatch.validationResult.propertiesValueMatches += subValidationResult.propertiesValueMatches;\n }\n else {\n var compareResult = subValidationResult.compare(bestMatch.validationResult);\n if (compareResult > 0) {\n // our node is the best matching so far\n bestMatch = { schema: subSchema, validationResult: subValidationResult, matchingSchemas: subMatchingSchemas };\n }\n else if (compareResult === 0) {\n // there's already a best matching but we are as good\n bestMatch.matchingSchemas.merge(subMatchingSchemas);\n bestMatch.validationResult.mergeEnumValues(subValidationResult);\n }\n }\n }\n }\n if (matches.length > 1 && maxOneMatch) {\n validationResult.problems.push({\n location: { offset: node.offset, length: 1 },\n severity: DiagnosticSeverity.Warning,\n message: localize('oneOfWarning', \"Matches multiple schemas when only one must validate.\")\n });\n }\n if (bestMatch) {\n validationResult.merge(bestMatch.validationResult);\n validationResult.propertiesMatches += bestMatch.validationResult.propertiesMatches;\n validationResult.propertiesValueMatches += bestMatch.validationResult.propertiesValueMatches;\n matchingSchemas.merge(bestMatch.matchingSchemas);\n }\n return matches.length;\n };\n if (Array.isArray(schema.anyOf)) {\n testAlternatives(schema.anyOf, false);\n }\n if (Array.isArray(schema.oneOf)) {\n testAlternatives(schema.oneOf, true);\n }\n var testBranch = function (schema) {\n var subValidationResult = new ValidationResult();\n var subMatchingSchemas = matchingSchemas.newSub();\n validate(node, asSchema(schema), subValidationResult, subMatchingSchemas);\n validationResult.merge(subValidationResult);\n validationResult.propertiesMatches += subValidationResult.propertiesMatches;\n validationResult.propertiesValueMatches += subValidationResult.propertiesValueMatches;\n matchingSchemas.merge(subMatchingSchemas);\n };\n var testCondition = function (ifSchema, thenSchema, elseSchema) {\n var subSchema = asSchema(ifSchema);\n var subValidationResult = new ValidationResult();\n var subMatchingSchemas = matchingSchemas.newSub();\n validate(node, subSchema, subValidationResult, subMatchingSchemas);\n matchingSchemas.merge(subMatchingSchemas);\n if (!subValidationResult.hasProblems()) {\n if (thenSchema) {\n testBranch(thenSchema);\n }\n }\n else if (elseSchema) {\n testBranch(elseSchema);\n }\n };\n var ifSchema = asSchema(schema.if);\n if (ifSchema) {\n testCondition(ifSchema, asSchema(schema.then), asSchema(schema.else));\n }\n if (Array.isArray(schema.enum)) {\n var val = getNodeValue(node);\n var enumValueMatch = false;\n for (var _d = 0, _e = schema.enum; _d < _e.length; _d++) {\n var e = _e[_d];\n if (equals(val, e)) {\n enumValueMatch = true;\n break;\n }\n }\n validationResult.enumValues = schema.enum;\n validationResult.enumValueMatch = enumValueMatch;\n if (!enumValueMatch) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n code: ErrorCode.EnumValueMismatch,\n message: schema.errorMessage || localize('enumWarning', 'Value is not accepted. Valid values: {0}.', schema.enum.map(function (v) { return JSON.stringify(v); }).join(', '))\n });\n }\n }\n if (isDefined(schema.const)) {\n var val = getNodeValue(node);\n if (!equals(val, schema.const)) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n code: ErrorCode.EnumValueMismatch,\n message: schema.errorMessage || localize('constWarning', 'Value must be {0}.', JSON.stringify(schema.const))\n });\n validationResult.enumValueMatch = false;\n }\n else {\n validationResult.enumValueMatch = true;\n }\n validationResult.enumValues = [schema.const];\n }\n if (schema.deprecationMessage && node.parent) {\n validationResult.problems.push({\n location: { offset: node.parent.offset, length: node.parent.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.deprecationMessage\n });\n }\n }\n function _validateNumberNode(node, schema, validationResult, matchingSchemas) {\n var val = node.value;\n function normalizeFloats(float) {\n var _a;\n var parts = /^(-?\\d+)(?:\\.(\\d+))?(?:e([-+]\\d+))?$/.exec(float.toString());\n return parts && {\n value: Number(parts[1] + (parts[2] || '')),\n multiplier: (((_a = parts[2]) === null || _a === void 0 ? void 0 : _a.length) || 0) - (parseInt(parts[3]) || 0)\n };\n }\n ;\n if (isNumber(schema.multipleOf)) {\n var remainder = -1;\n if (Number.isInteger(schema.multipleOf)) {\n remainder = val % schema.multipleOf;\n }\n else {\n var normMultipleOf = normalizeFloats(schema.multipleOf);\n var normValue = normalizeFloats(val);\n if (normMultipleOf && normValue) {\n var multiplier = Math.pow(10, Math.abs(normValue.multiplier - normMultipleOf.multiplier));\n if (normValue.multiplier < normMultipleOf.multiplier) {\n normValue.value *= multiplier;\n }\n else {\n normMultipleOf.value *= multiplier;\n }\n remainder = normValue.value % normMultipleOf.value;\n }\n }\n if (remainder !== 0) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('multipleOfWarning', 'Value is not divisible by {0}.', schema.multipleOf)\n });\n }\n }\n function getExclusiveLimit(limit, exclusive) {\n if (isNumber(exclusive)) {\n return exclusive;\n }\n if (isBoolean(exclusive) && exclusive) {\n return limit;\n }\n return undefined;\n }\n function getLimit(limit, exclusive) {\n if (!isBoolean(exclusive) || !exclusive) {\n return limit;\n }\n return undefined;\n }\n var exclusiveMinimum = getExclusiveLimit(schema.minimum, schema.exclusiveMinimum);\n if (isNumber(exclusiveMinimum) && val <= exclusiveMinimum) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('exclusiveMinimumWarning', 'Value is below the exclusive minimum of {0}.', exclusiveMinimum)\n });\n }\n var exclusiveMaximum = getExclusiveLimit(schema.maximum, schema.exclusiveMaximum);\n if (isNumber(exclusiveMaximum) && val >= exclusiveMaximum) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('exclusiveMaximumWarning', 'Value is above the exclusive maximum of {0}.', exclusiveMaximum)\n });\n }\n var minimum = getLimit(schema.minimum, schema.exclusiveMinimum);\n if (isNumber(minimum) && val < minimum) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('minimumWarning', 'Value is below the minimum of {0}.', minimum)\n });\n }\n var maximum = getLimit(schema.maximum, schema.exclusiveMaximum);\n if (isNumber(maximum) && val > maximum) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('maximumWarning', 'Value is above the maximum of {0}.', maximum)\n });\n }\n }\n function _validateStringNode(node, schema, validationResult, matchingSchemas) {\n if (isNumber(schema.minLength) && node.value.length < schema.minLength) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('minLengthWarning', 'String is shorter than the minimum length of {0}.', schema.minLength)\n });\n }\n if (isNumber(schema.maxLength) && node.value.length > schema.maxLength) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('maxLengthWarning', 'String is longer than the maximum length of {0}.', schema.maxLength)\n });\n }\n if (isString(schema.pattern)) {\n var regex = new RegExp(schema.pattern);\n if (!regex.test(node.value)) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.patternErrorMessage || schema.errorMessage || localize('patternWarning', 'String does not match the pattern of \"{0}\".', schema.pattern)\n });\n }\n }\n if (schema.format) {\n switch (schema.format) {\n case 'uri':\n case 'uri-reference':\n {\n var errorMessage = void 0;\n if (!node.value) {\n errorMessage = localize('uriEmpty', 'URI expected.');\n }\n else {\n var match = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/.exec(node.value);\n if (!match) {\n errorMessage = localize('uriMissing', 'URI is expected.');\n }\n else if (!match[2] && schema.format === 'uri') {\n errorMessage = localize('uriSchemeMissing', 'URI with a scheme is expected.');\n }\n }\n if (errorMessage) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.patternErrorMessage || schema.errorMessage || localize('uriFormatWarning', 'String is not a URI: {0}', errorMessage)\n });\n }\n }\n break;\n case 'color-hex':\n case 'date-time':\n case 'date':\n case 'time':\n case 'email':\n var format = formats[schema.format];\n if (!node.value || !format.pattern.exec(node.value)) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.patternErrorMessage || schema.errorMessage || format.errorMessage\n });\n }\n default:\n }\n }\n }\n function _validateArrayNode(node, schema, validationResult, matchingSchemas) {\n if (Array.isArray(schema.items)) {\n var subSchemas = schema.items;\n for (var index = 0; index < subSchemas.length; index++) {\n var subSchemaRef = subSchemas[index];\n var subSchema = asSchema(subSchemaRef);\n var itemValidationResult = new ValidationResult();\n var item = node.items[index];\n if (item) {\n validate(item, subSchema, itemValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(itemValidationResult);\n }\n else if (node.items.length >= subSchemas.length) {\n validationResult.propertiesValueMatches++;\n }\n }\n if (node.items.length > subSchemas.length) {\n if (typeof schema.additionalItems === 'object') {\n for (var i = subSchemas.length; i < node.items.length; i++) {\n var itemValidationResult = new ValidationResult();\n validate(node.items[i], schema.additionalItems, itemValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(itemValidationResult);\n }\n }\n else if (schema.additionalItems === false) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('additionalItemsWarning', 'Array has too many items according to schema. Expected {0} or fewer.', subSchemas.length)\n });\n }\n }\n }\n else {\n var itemSchema = asSchema(schema.items);\n if (itemSchema) {\n for (var _i = 0, _a = node.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var itemValidationResult = new ValidationResult();\n validate(item, itemSchema, itemValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(itemValidationResult);\n }\n }\n }\n var containsSchema = asSchema(schema.contains);\n if (containsSchema) {\n var doesContain = node.items.some(function (item) {\n var itemValidationResult = new ValidationResult();\n validate(item, containsSchema, itemValidationResult, NoOpSchemaCollector.instance);\n return !itemValidationResult.hasProblems();\n });\n if (!doesContain) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.errorMessage || localize('requiredItemMissingWarning', 'Array does not contain required item.')\n });\n }\n }\n if (isNumber(schema.minItems) && node.items.length < schema.minItems) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('minItemsWarning', 'Array has too few items. Expected {0} or more.', schema.minItems)\n });\n }\n if (isNumber(schema.maxItems) && node.items.length > schema.maxItems) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('maxItemsWarning', 'Array has too many items. Expected {0} or fewer.', schema.maxItems)\n });\n }\n if (schema.uniqueItems === true) {\n var values_1 = getNodeValue(node);\n var duplicates = values_1.some(function (value, index) {\n return index !== values_1.lastIndexOf(value);\n });\n if (duplicates) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('uniqueItemsWarning', 'Array has duplicate items.')\n });\n }\n }\n }\n function _validateObjectNode(node, schema, validationResult, matchingSchemas) {\n var seenKeys = Object.create(null);\n var unprocessedProperties = [];\n for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {\n var propertyNode = _a[_i];\n var key = propertyNode.keyNode.value;\n seenKeys[key] = propertyNode.valueNode;\n unprocessedProperties.push(key);\n }\n if (Array.isArray(schema.required)) {\n for (var _b = 0, _c = schema.required; _b < _c.length; _b++) {\n var propertyName = _c[_b];\n if (!seenKeys[propertyName]) {\n var keyNode = node.parent && node.parent.type === 'property' && node.parent.keyNode;\n var location = keyNode ? { offset: keyNode.offset, length: keyNode.length } : { offset: node.offset, length: 1 };\n validationResult.problems.push({\n location: location,\n severity: DiagnosticSeverity.Warning,\n message: localize('MissingRequiredPropWarning', 'Missing property \"{0}\".', propertyName)\n });\n }\n }\n }\n var propertyProcessed = function (prop) {\n var index = unprocessedProperties.indexOf(prop);\n while (index >= 0) {\n unprocessedProperties.splice(index, 1);\n index = unprocessedProperties.indexOf(prop);\n }\n };\n if (schema.properties) {\n for (var _d = 0, _e = Object.keys(schema.properties); _d < _e.length; _d++) {\n var propertyName = _e[_d];\n propertyProcessed(propertyName);\n var propertySchema = schema.properties[propertyName];\n var child = seenKeys[propertyName];\n if (child) {\n if (isBoolean(propertySchema)) {\n if (!propertySchema) {\n var propertyNode = child.parent;\n validationResult.problems.push({\n location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.errorMessage || localize('DisallowedExtraPropWarning', 'Property {0} is not allowed.', propertyName)\n });\n }\n else {\n validationResult.propertiesMatches++;\n validationResult.propertiesValueMatches++;\n }\n }\n else {\n var propertyValidationResult = new ValidationResult();\n validate(child, propertySchema, propertyValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(propertyValidationResult);\n }\n }\n }\n }\n if (schema.patternProperties) {\n for (var _f = 0, _g = Object.keys(schema.patternProperties); _f < _g.length; _f++) {\n var propertyPattern = _g[_f];\n var regex = new RegExp(propertyPattern);\n for (var _h = 0, _j = unprocessedProperties.slice(0); _h < _j.length; _h++) {\n var propertyName = _j[_h];\n if (regex.test(propertyName)) {\n propertyProcessed(propertyName);\n var child = seenKeys[propertyName];\n if (child) {\n var propertySchema = schema.patternProperties[propertyPattern];\n if (isBoolean(propertySchema)) {\n if (!propertySchema) {\n var propertyNode = child.parent;\n validationResult.problems.push({\n location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.errorMessage || localize('DisallowedExtraPropWarning', 'Property {0} is not allowed.', propertyName)\n });\n }\n else {\n validationResult.propertiesMatches++;\n validationResult.propertiesValueMatches++;\n }\n }\n else {\n var propertyValidationResult = new ValidationResult();\n validate(child, propertySchema, propertyValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(propertyValidationResult);\n }\n }\n }\n }\n }\n }\n if (typeof schema.additionalProperties === 'object') {\n for (var _k = 0, unprocessedProperties_1 = unprocessedProperties; _k < unprocessedProperties_1.length; _k++) {\n var propertyName = unprocessedProperties_1[_k];\n var child = seenKeys[propertyName];\n if (child) {\n var propertyValidationResult = new ValidationResult();\n validate(child, schema.additionalProperties, propertyValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(propertyValidationResult);\n }\n }\n }\n else if (schema.additionalProperties === false) {\n if (unprocessedProperties.length > 0) {\n for (var _l = 0, unprocessedProperties_2 = unprocessedProperties; _l < unprocessedProperties_2.length; _l++) {\n var propertyName = unprocessedProperties_2[_l];\n var child = seenKeys[propertyName];\n if (child) {\n var propertyNode = child.parent;\n validationResult.problems.push({\n location: { offset: propertyNode.keyNode.offset, length: propertyNode.keyNode.length },\n severity: DiagnosticSeverity.Warning,\n message: schema.errorMessage || localize('DisallowedExtraPropWarning', 'Property {0} is not allowed.', propertyName)\n });\n }\n }\n }\n }\n if (isNumber(schema.maxProperties)) {\n if (node.properties.length > schema.maxProperties) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('MaxPropWarning', 'Object has more properties than limit of {0}.', schema.maxProperties)\n });\n }\n }\n if (isNumber(schema.minProperties)) {\n if (node.properties.length < schema.minProperties) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('MinPropWarning', 'Object has fewer properties than the required number of {0}', schema.minProperties)\n });\n }\n }\n if (schema.dependencies) {\n for (var _m = 0, _o = Object.keys(schema.dependencies); _m < _o.length; _m++) {\n var key = _o[_m];\n var prop = seenKeys[key];\n if (prop) {\n var propertyDep = schema.dependencies[key];\n if (Array.isArray(propertyDep)) {\n for (var _p = 0, propertyDep_1 = propertyDep; _p < propertyDep_1.length; _p++) {\n var requiredProp = propertyDep_1[_p];\n if (!seenKeys[requiredProp]) {\n validationResult.problems.push({\n location: { offset: node.offset, length: node.length },\n severity: DiagnosticSeverity.Warning,\n message: localize('RequiredDependentPropWarning', 'Object is missing property {0} required by property {1}.', requiredProp, key)\n });\n }\n else {\n validationResult.propertiesValueMatches++;\n }\n }\n }\n else {\n var propertySchema = asSchema(propertyDep);\n if (propertySchema) {\n var propertyValidationResult = new ValidationResult();\n validate(node, propertySchema, propertyValidationResult, matchingSchemas);\n validationResult.mergePropertyMatch(propertyValidationResult);\n }\n }\n }\n }\n }\n var propertyNames = asSchema(schema.propertyNames);\n if (propertyNames) {\n for (var _q = 0, _r = node.properties; _q < _r.length; _q++) {\n var f = _r[_q];\n var key = f.keyNode;\n if (key) {\n validate(key, propertyNames, validationResult, NoOpSchemaCollector.instance);\n }\n }\n }\n }\n}\nexport function parse(textDocument, config) {\n var problems = [];\n var lastProblemOffset = -1;\n var text = textDocument.getText();\n var scanner = Json.createScanner(text, false);\n var commentRanges = config && config.collectComments ? [] : undefined;\n function _scanNext() {\n while (true) {\n var token_1 = scanner.scan();\n _checkScanError();\n switch (token_1) {\n case 12 /* LineCommentTrivia */:\n case 13 /* BlockCommentTrivia */:\n if (Array.isArray(commentRanges)) {\n commentRanges.push(Range.create(textDocument.positionAt(scanner.getTokenOffset()), textDocument.positionAt(scanner.getTokenOffset() + scanner.getTokenLength())));\n }\n break;\n case 15 /* Trivia */:\n case 14 /* LineBreakTrivia */:\n break;\n default:\n return token_1;\n }\n }\n }\n function _accept(token) {\n if (scanner.getToken() === token) {\n _scanNext();\n return true;\n }\n return false;\n }\n function _errorAtRange(message, code, startOffset, endOffset, severity) {\n if (severity === void 0) { severity = DiagnosticSeverity.Error; }\n if (problems.length === 0 || startOffset !== lastProblemOffset) {\n var range = Range.create(textDocument.positionAt(startOffset), textDocument.positionAt(endOffset));\n problems.push(Diagnostic.create(range, message, severity, code, textDocument.languageId));\n lastProblemOffset = startOffset;\n }\n }\n function _error(message, code, node, skipUntilAfter, skipUntil) {\n if (node === void 0) { node = undefined; }\n if (skipUntilAfter === void 0) { skipUntilAfter = []; }\n if (skipUntil === void 0) { skipUntil = []; }\n var start = scanner.getTokenOffset();\n var end = scanner.getTokenOffset() + scanner.getTokenLength();\n if (start === end && start > 0) {\n start--;\n while (start > 0 && /\\s/.test(text.charAt(start))) {\n start--;\n }\n end = start + 1;\n }\n _errorAtRange(message, code, start, end);\n if (node) {\n _finalize(node, false);\n }\n if (skipUntilAfter.length + skipUntil.length > 0) {\n var token_2 = scanner.getToken();\n while (token_2 !== 17 /* EOF */) {\n if (skipUntilAfter.indexOf(token_2) !== -1) {\n _scanNext();\n break;\n }\n else if (skipUntil.indexOf(token_2) !== -1) {\n break;\n }\n token_2 = _scanNext();\n }\n }\n return node;\n }\n function _checkScanError() {\n switch (scanner.getTokenError()) {\n case 4 /* InvalidUnicode */:\n _error(localize('InvalidUnicode', 'Invalid unicode sequence in string.'), ErrorCode.InvalidUnicode);\n return true;\n case 5 /* InvalidEscapeCharacter */:\n _error(localize('InvalidEscapeCharacter', 'Invalid escape character in string.'), ErrorCode.InvalidEscapeCharacter);\n return true;\n case 3 /* UnexpectedEndOfNumber */:\n _error(localize('UnexpectedEndOfNumber', 'Unexpected end of number.'), ErrorCode.UnexpectedEndOfNumber);\n return true;\n case 1 /* UnexpectedEndOfComment */:\n _error(localize('UnexpectedEndOfComment', 'Unexpected end of comment.'), ErrorCode.UnexpectedEndOfComment);\n return true;\n case 2 /* UnexpectedEndOfString */:\n _error(localize('UnexpectedEndOfString', 'Unexpected end of string.'), ErrorCode.UnexpectedEndOfString);\n return true;\n case 6 /* InvalidCharacter */:\n _error(localize('InvalidCharacter', 'Invalid characters in string. Control characters must be escaped.'), ErrorCode.InvalidCharacter);\n return true;\n }\n return false;\n }\n function _finalize(node, scanNext) {\n node.length = scanner.getTokenOffset() + scanner.getTokenLength() - node.offset;\n if (scanNext) {\n _scanNext();\n }\n return node;\n }\n function _parseArray(parent) {\n if (scanner.getToken() !== 3 /* OpenBracketToken */) {\n return undefined;\n }\n var node = new ArrayASTNodeImpl(parent, scanner.getTokenOffset());\n _scanNext(); // consume OpenBracketToken\n var count = 0;\n var needsComma = false;\n while (scanner.getToken() !== 4 /* CloseBracketToken */ && scanner.getToken() !== 17 /* EOF */) {\n if (scanner.getToken() === 5 /* CommaToken */) {\n if (!needsComma) {\n _error(localize('ValueExpected', 'Value expected'), ErrorCode.ValueExpected);\n }\n var commaOffset = scanner.getTokenOffset();\n _scanNext(); // consume comma\n if (scanner.getToken() === 4 /* CloseBracketToken */) {\n if (needsComma) {\n _errorAtRange(localize('TrailingComma', 'Trailing comma'), ErrorCode.TrailingComma, commaOffset, commaOffset + 1);\n }\n continue;\n }\n }\n else if (needsComma) {\n _error(localize('ExpectedComma', 'Expected comma'), ErrorCode.CommaExpected);\n }\n var item = _parseValue(node);\n if (!item) {\n _error(localize('PropertyExpected', 'Value expected'), ErrorCode.ValueExpected, undefined, [], [4 /* CloseBracketToken */, 5 /* CommaToken */]);\n }\n else {\n node.items.push(item);\n }\n needsComma = true;\n }\n if (scanner.getToken() !== 4 /* CloseBracketToken */) {\n return _error(localize('ExpectedCloseBracket', 'Expected comma or closing bracket'), ErrorCode.CommaOrCloseBacketExpected, node);\n }\n return _finalize(node, true);\n }\n var keyPlaceholder = new StringASTNodeImpl(undefined, 0, 0);\n function _parseProperty(parent, keysSeen) {\n var node = new PropertyASTNodeImpl(parent, scanner.getTokenOffset(), keyPlaceholder);\n var key = _parseString(node);\n if (!key) {\n if (scanner.getToken() === 16 /* Unknown */) {\n // give a more helpful error message\n _error(localize('DoubleQuotesExpected', 'Property keys must be doublequoted'), ErrorCode.Undefined);\n var keyNode = new StringASTNodeImpl(node, scanner.getTokenOffset(), scanner.getTokenLength());\n keyNode.value = scanner.getTokenValue();\n key = keyNode;\n _scanNext(); // consume Unknown\n }\n else {\n return undefined;\n }\n }\n node.keyNode = key;\n var seen = keysSeen[key.value];\n if (seen) {\n _errorAtRange(localize('DuplicateKeyWarning', \"Duplicate object key\"), ErrorCode.DuplicateKey, node.keyNode.offset, node.keyNode.offset + node.keyNode.length, DiagnosticSeverity.Warning);\n if (typeof seen === 'object') {\n _errorAtRange(localize('DuplicateKeyWarning', \"Duplicate object key\"), ErrorCode.DuplicateKey, seen.keyNode.offset, seen.keyNode.offset + seen.keyNode.length, DiagnosticSeverity.Warning);\n }\n keysSeen[key.value] = true; // if the same key is duplicate again, avoid duplicate error reporting\n }\n else {\n keysSeen[key.value] = node;\n }\n if (scanner.getToken() === 6 /* ColonToken */) {\n node.colonOffset = scanner.getTokenOffset();\n _scanNext(); // consume ColonToken\n }\n else {\n _error(localize('ColonExpected', 'Colon expected'), ErrorCode.ColonExpected);\n if (scanner.getToken() === 10 /* StringLiteral */ && textDocument.positionAt(key.offset + key.length).line < textDocument.positionAt(scanner.getTokenOffset()).line) {\n node.length = key.length;\n return node;\n }\n }\n var value = _parseValue(node);\n if (!value) {\n return _error(localize('ValueExpected', 'Value expected'), ErrorCode.ValueExpected, node, [], [2 /* CloseBraceToken */, 5 /* CommaToken */]);\n }\n node.valueNode = value;\n node.length = value.offset + value.length - node.offset;\n return node;\n }\n function _parseObject(parent) {\n if (scanner.getToken() !== 1 /* OpenBraceToken */) {\n return undefined;\n }\n var node = new ObjectASTNodeImpl(parent, scanner.getTokenOffset());\n var keysSeen = Object.create(null);\n _scanNext(); // consume OpenBraceToken\n var needsComma = false;\n while (scanner.getToken() !== 2 /* CloseBraceToken */ && scanner.getToken() !== 17 /* EOF */) {\n if (scanner.getToken() === 5 /* CommaToken */) {\n if (!needsComma) {\n _error(localize('PropertyExpected', 'Property expected'), ErrorCode.PropertyExpected);\n }\n var commaOffset = scanner.getTokenOffset();\n _scanNext(); // consume comma\n if (scanner.getToken() === 2 /* CloseBraceToken */) {\n if (needsComma) {\n _errorAtRange(localize('TrailingComma', 'Trailing comma'), ErrorCode.TrailingComma, commaOffset, commaOffset + 1);\n }\n continue;\n }\n }\n else if (needsComma) {\n _error(localize('ExpectedComma', 'Expected comma'), ErrorCode.CommaExpected);\n }\n var property = _parseProperty(node, keysSeen);\n if (!property) {\n _error(localize('PropertyExpected', 'Property expected'), ErrorCode.PropertyExpected, undefined, [], [2 /* CloseBraceToken */, 5 /* CommaToken */]);\n }\n else {\n node.properties.push(property);\n }\n needsComma = true;\n }\n if (scanner.getToken() !== 2 /* CloseBraceToken */) {\n return _error(localize('ExpectedCloseBrace', 'Expected comma or closing brace'), ErrorCode.CommaOrCloseBraceExpected, node);\n }\n return _finalize(node, true);\n }\n function _parseString(parent) {\n if (scanner.getToken() !== 10 /* StringLiteral */) {\n return undefined;\n }\n var node = new StringASTNodeImpl(parent, scanner.getTokenOffset());\n node.value = scanner.getTokenValue();\n return _finalize(node, true);\n }\n function _parseNumber(parent) {\n if (scanner.getToken() !== 11 /* NumericLiteral */) {\n return undefined;\n }\n var node = new NumberASTNodeImpl(parent, scanner.getTokenOffset());\n if (scanner.getTokenError() === 0 /* None */) {\n var tokenValue = scanner.getTokenValue();\n try {\n var numberValue = JSON.parse(tokenValue);\n if (!isNumber(numberValue)) {\n return _error(localize('InvalidNumberFormat', 'Invalid number format.'), ErrorCode.Undefined, node);\n }\n node.value = numberValue;\n }\n catch (e) {\n return _error(localize('InvalidNumberFormat', 'Invalid number format.'), ErrorCode.Undefined, node);\n }\n node.isInteger = tokenValue.indexOf('.') === -1;\n }\n return _finalize(node, true);\n }\n function _parseLiteral(parent) {\n var node;\n switch (scanner.getToken()) {\n case 7 /* NullKeyword */:\n return _finalize(new NullASTNodeImpl(parent, scanner.getTokenOffset()), true);\n case 8 /* TrueKeyword */:\n return _finalize(new BooleanASTNodeImpl(parent, true, scanner.getTokenOffset()), true);\n case 9 /* FalseKeyword */:\n return _finalize(new BooleanASTNodeImpl(parent, false, scanner.getTokenOffset()), true);\n default:\n return undefined;\n }\n }\n function _parseValue(parent) {\n return _parseArray(parent) || _parseObject(parent) || _parseString(parent) || _parseNumber(parent) || _parseLiteral(parent);\n }\n var _root = undefined;\n var token = _scanNext();\n if (token !== 17 /* EOF */) {\n _root = _parseValue(_root);\n if (!_root) {\n _error(localize('Invalid symbol', 'Expected a JSON object, array or literal.'), ErrorCode.Undefined);\n }\n else if (scanner.getToken() !== 17 /* EOF */) {\n _error(localize('End of file expected', 'End of file expected.'), ErrorCode.Undefined);\n }\n }\n return new JSONDocument(_root, problems, commentRanges);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as nls from '../../../fillers/vscode-nls.js';\nvar localize = nls.loadMessageBundle();\nexport var schemaContributions = {\n schemaAssociations: [],\n schemas: {\n // refer to the latest schema\n 'http://json-schema.org/schema#': {\n $ref: 'http://json-schema.org/draft-07/schema#'\n },\n // bundle the schema-schema to include (localized) descriptions\n 'http://json-schema.org/draft-04/schema#': {\n 'title': localize('schema.json', 'Describes a JSON file using a schema. See json-schema.org for more info.'),\n '$schema': 'http://json-schema.org/draft-04/schema#',\n 'definitions': {\n 'schemaArray': {\n 'type': 'array',\n 'minItems': 1,\n 'items': {\n '$ref': '#'\n }\n },\n 'positiveInteger': {\n 'type': 'integer',\n 'minimum': 0\n },\n 'positiveIntegerDefault0': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveInteger'\n },\n {\n 'default': 0\n }\n ]\n },\n 'simpleTypes': {\n 'type': 'string',\n 'enum': [\n 'array',\n 'boolean',\n 'integer',\n 'null',\n 'number',\n 'object',\n 'string'\n ]\n },\n 'stringArray': {\n 'type': 'array',\n 'items': {\n 'type': 'string'\n },\n 'minItems': 1,\n 'uniqueItems': true\n }\n },\n 'type': 'object',\n 'properties': {\n 'id': {\n 'type': 'string',\n 'format': 'uri'\n },\n '$schema': {\n 'type': 'string',\n 'format': 'uri'\n },\n 'title': {\n 'type': 'string'\n },\n 'description': {\n 'type': 'string'\n },\n 'default': {},\n 'multipleOf': {\n 'type': 'number',\n 'minimum': 0,\n 'exclusiveMinimum': true\n },\n 'maximum': {\n 'type': 'number'\n },\n 'exclusiveMaximum': {\n 'type': 'boolean',\n 'default': false\n },\n 'minimum': {\n 'type': 'number'\n },\n 'exclusiveMinimum': {\n 'type': 'boolean',\n 'default': false\n },\n 'maxLength': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveInteger'\n }\n ]\n },\n 'minLength': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveIntegerDefault0'\n }\n ]\n },\n 'pattern': {\n 'type': 'string',\n 'format': 'regex'\n },\n 'additionalItems': {\n 'anyOf': [\n {\n 'type': 'boolean'\n },\n {\n '$ref': '#'\n }\n ],\n 'default': {}\n },\n 'items': {\n 'anyOf': [\n {\n '$ref': '#'\n },\n {\n '$ref': '#/definitions/schemaArray'\n }\n ],\n 'default': {}\n },\n 'maxItems': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveInteger'\n }\n ]\n },\n 'minItems': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveIntegerDefault0'\n }\n ]\n },\n 'uniqueItems': {\n 'type': 'boolean',\n 'default': false\n },\n 'maxProperties': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveInteger'\n }\n ]\n },\n 'minProperties': {\n 'allOf': [\n {\n '$ref': '#/definitions/positiveIntegerDefault0'\n }\n ]\n },\n 'required': {\n 'allOf': [\n {\n '$ref': '#/definitions/stringArray'\n }\n ]\n },\n 'additionalProperties': {\n 'anyOf': [\n {\n 'type': 'boolean'\n },\n {\n '$ref': '#'\n }\n ],\n 'default': {}\n },\n 'definitions': {\n 'type': 'object',\n 'additionalProperties': {\n '$ref': '#'\n },\n 'default': {}\n },\n 'properties': {\n 'type': 'object',\n 'additionalProperties': {\n '$ref': '#'\n },\n 'default': {}\n },\n 'patternProperties': {\n 'type': 'object',\n 'additionalProperties': {\n '$ref': '#'\n },\n 'default': {}\n },\n 'dependencies': {\n 'type': 'object',\n 'additionalProperties': {\n 'anyOf': [\n {\n '$ref': '#'\n },\n {\n '$ref': '#/definitions/stringArray'\n }\n ]\n }\n },\n 'enum': {\n 'type': 'array',\n 'minItems': 1,\n 'uniqueItems': true\n },\n 'type': {\n 'anyOf': [\n {\n '$ref': '#/definitions/simpleTypes'\n },\n {\n 'type': 'array',\n 'items': {\n '$ref': '#/definitions/simpleTypes'\n },\n 'minItems': 1,\n 'uniqueItems': true\n }\n ]\n },\n 'format': {\n 'anyOf': [\n {\n 'type': 'string',\n 'enum': [\n 'date-time',\n 'uri',\n 'email',\n 'hostname',\n 'ipv4',\n 'ipv6',\n 'regex'\n ]\n },\n {\n 'type': 'string'\n }\n ]\n },\n 'allOf': {\n 'allOf': [\n {\n '$ref': '#/definitions/schemaArray'\n }\n ]\n },\n 'anyOf': {\n 'allOf': [\n {\n '$ref': '#/definitions/schemaArray'\n }\n ]\n },\n 'oneOf': {\n 'allOf': [\n {\n '$ref': '#/definitions/schemaArray'\n }\n ]\n },\n 'not': {\n 'allOf': [\n {\n '$ref': '#'\n }\n ]\n }\n },\n 'dependencies': {\n 'exclusiveMaximum': [\n 'maximum'\n ],\n 'exclusiveMinimum': [\n 'minimum'\n ]\n },\n 'default': {}\n },\n 'http://json-schema.org/draft-07/schema#': {\n 'title': localize('schema.json', 'Describes a JSON file using a schema. See json-schema.org for more info.'),\n 'definitions': {\n 'schemaArray': {\n 'type': 'array',\n 'minItems': 1,\n 'items': { '$ref': '#' }\n },\n 'nonNegativeInteger': {\n 'type': 'integer',\n 'minimum': 0\n },\n 'nonNegativeIntegerDefault0': {\n 'allOf': [\n { '$ref': '#/definitions/nonNegativeInteger' },\n { 'default': 0 }\n ]\n },\n 'simpleTypes': {\n 'enum': [\n 'array',\n 'boolean',\n 'integer',\n 'null',\n 'number',\n 'object',\n 'string'\n ]\n },\n 'stringArray': {\n 'type': 'array',\n 'items': { 'type': 'string' },\n 'uniqueItems': true,\n 'default': []\n }\n },\n 'type': ['object', 'boolean'],\n 'properties': {\n '$id': {\n 'type': 'string',\n 'format': 'uri-reference'\n },\n '$schema': {\n 'type': 'string',\n 'format': 'uri'\n },\n '$ref': {\n 'type': 'string',\n 'format': 'uri-reference'\n },\n '$comment': {\n 'type': 'string'\n },\n 'title': {\n 'type': 'string'\n },\n 'description': {\n 'type': 'string'\n },\n 'default': true,\n 'readOnly': {\n 'type': 'boolean',\n 'default': false\n },\n 'examples': {\n 'type': 'array',\n 'items': true\n },\n 'multipleOf': {\n 'type': 'number',\n 'exclusiveMinimum': 0\n },\n 'maximum': {\n 'type': 'number'\n },\n 'exclusiveMaximum': {\n 'type': 'number'\n },\n 'minimum': {\n 'type': 'number'\n },\n 'exclusiveMinimum': {\n 'type': 'number'\n },\n 'maxLength': { '$ref': '#/definitions/nonNegativeInteger' },\n 'minLength': { '$ref': '#/definitions/nonNegativeIntegerDefault0' },\n 'pattern': {\n 'type': 'string',\n 'format': 'regex'\n },\n 'additionalItems': { '$ref': '#' },\n 'items': {\n 'anyOf': [\n { '$ref': '#' },\n { '$ref': '#/definitions/schemaArray' }\n ],\n 'default': true\n },\n 'maxItems': { '$ref': '#/definitions/nonNegativeInteger' },\n 'minItems': { '$ref': '#/definitions/nonNegativeIntegerDefault0' },\n 'uniqueItems': {\n 'type': 'boolean',\n 'default': false\n },\n 'contains': { '$ref': '#' },\n 'maxProperties': { '$ref': '#/definitions/nonNegativeInteger' },\n 'minProperties': { '$ref': '#/definitions/nonNegativeIntegerDefault0' },\n 'required': { '$ref': '#/definitions/stringArray' },\n 'additionalProperties': { '$ref': '#' },\n 'definitions': {\n 'type': 'object',\n 'additionalProperties': { '$ref': '#' },\n 'default': {}\n },\n 'properties': {\n 'type': 'object',\n 'additionalProperties': { '$ref': '#' },\n 'default': {}\n },\n 'patternProperties': {\n 'type': 'object',\n 'additionalProperties': { '$ref': '#' },\n 'propertyNames': { 'format': 'regex' },\n 'default': {}\n },\n 'dependencies': {\n 'type': 'object',\n 'additionalProperties': {\n 'anyOf': [\n { '$ref': '#' },\n { '$ref': '#/definitions/stringArray' }\n ]\n }\n },\n 'propertyNames': { '$ref': '#' },\n 'const': true,\n 'enum': {\n 'type': 'array',\n 'items': true,\n 'minItems': 1,\n 'uniqueItems': true\n },\n 'type': {\n 'anyOf': [\n { '$ref': '#/definitions/simpleTypes' },\n {\n 'type': 'array',\n 'items': { '$ref': '#/definitions/simpleTypes' },\n 'minItems': 1,\n 'uniqueItems': true\n }\n ]\n },\n 'format': { 'type': 'string' },\n 'contentMediaType': { 'type': 'string' },\n 'contentEncoding': { 'type': 'string' },\n 'if': { '$ref': '#' },\n 'then': { '$ref': '#' },\n 'else': { '$ref': '#' },\n 'allOf': { '$ref': '#/definitions/schemaArray' },\n 'anyOf': { '$ref': '#/definitions/schemaArray' },\n 'oneOf': { '$ref': '#/definitions/schemaArray' },\n 'not': { '$ref': '#' }\n },\n 'default': true\n }\n }\n};\nvar descriptions = {\n id: localize('schema.json.id', \"A unique identifier for the schema.\"),\n $schema: localize('schema.json.$schema', \"The schema to verify this document against.\"),\n title: localize('schema.json.title', \"A descriptive title of the element.\"),\n description: localize('schema.json.description', \"A long description of the element. Used in hover menus and suggestions.\"),\n default: localize('schema.json.default', \"A default value. Used by suggestions.\"),\n multipleOf: localize('schema.json.multipleOf', \"A number that should cleanly divide the current value (i.e. have no remainder).\"),\n maximum: localize('schema.json.maximum', \"The maximum numerical value, inclusive by default.\"),\n exclusiveMaximum: localize('schema.json.exclusiveMaximum', \"Makes the maximum property exclusive.\"),\n minimum: localize('schema.json.minimum', \"The minimum numerical value, inclusive by default.\"),\n exclusiveMinimum: localize('schema.json.exclusiveMininum', \"Makes the minimum property exclusive.\"),\n maxLength: localize('schema.json.maxLength', \"The maximum length of a string.\"),\n minLength: localize('schema.json.minLength', \"The minimum length of a string.\"),\n pattern: localize('schema.json.pattern', \"A regular expression to match the string against. It is not implicitly anchored.\"),\n additionalItems: localize('schema.json.additionalItems', \"For arrays, only when items is set as an array. If it is a schema, then this schema validates items after the ones specified by the items array. If it is false, then additional items will cause validation to fail.\"),\n items: localize('schema.json.items', \"For arrays. Can either be a schema to validate every element against or an array of schemas to validate each item against in order (the first schema will validate the first element, the second schema will validate the second element, and so on.\"),\n maxItems: localize('schema.json.maxItems', \"The maximum number of items that can be inside an array. Inclusive.\"),\n minItems: localize('schema.json.minItems', \"The minimum number of items that can be inside an array. Inclusive.\"),\n uniqueItems: localize('schema.json.uniqueItems', \"If all of the items in the array must be unique. Defaults to false.\"),\n maxProperties: localize('schema.json.maxProperties', \"The maximum number of properties an object can have. Inclusive.\"),\n minProperties: localize('schema.json.minProperties', \"The minimum number of properties an object can have. Inclusive.\"),\n required: localize('schema.json.required', \"An array of strings that lists the names of all properties required on this object.\"),\n additionalProperties: localize('schema.json.additionalProperties', \"Either a schema or a boolean. If a schema, then used to validate all properties not matched by 'properties' or 'patternProperties'. If false, then any properties not matched by either will cause this schema to fail.\"),\n definitions: localize('schema.json.definitions', \"Not used for validation. Place subschemas here that you wish to reference inline with $ref.\"),\n properties: localize('schema.json.properties', \"A map of property names to schemas for each property.\"),\n patternProperties: localize('schema.json.patternProperties', \"A map of regular expressions on property names to schemas for matching properties.\"),\n dependencies: localize('schema.json.dependencies', \"A map of property names to either an array of property names or a schema. An array of property names means the property named in the key depends on the properties in the array being present in the object in order to be valid. If the value is a schema, then the schema is only applied to the object if the property in the key exists on the object.\"),\n enum: localize('schema.json.enum', \"The set of literal values that are valid.\"),\n type: localize('schema.json.type', \"Either a string of one of the basic schema types (number, integer, null, array, object, boolean, string) or an array of strings specifying a subset of those types.\"),\n format: localize('schema.json.format', \"Describes the format expected for the value.\"),\n allOf: localize('schema.json.allOf', \"An array of schemas, all of which must match.\"),\n anyOf: localize('schema.json.anyOf', \"An array of schemas, where at least one must match.\"),\n oneOf: localize('schema.json.oneOf', \"An array of schemas, exactly one of which must match.\"),\n not: localize('schema.json.not', \"A schema which must not match.\"),\n $id: localize('schema.json.$id', \"A unique identifier for the schema.\"),\n $ref: localize('schema.json.$ref', \"Reference a definition hosted on any location.\"),\n $comment: localize('schema.json.$comment', \"Comments from schema authors to readers or maintainers of the schema.\"),\n readOnly: localize('schema.json.readOnly', \"Indicates that the value of the instance is managed exclusively by the owning authority.\"),\n examples: localize('schema.json.examples', \"Sample JSON values associated with a particular schema, for the purpose of illustrating usage.\"),\n contains: localize('schema.json.contains', \"An array instance is valid against \\\"contains\\\" if at least one of its elements is valid against the given schema.\"),\n propertyNames: localize('schema.json.propertyNames', \"If the instance is an object, this keyword validates if every property name in the instance validates against the provided schema.\"),\n const: localize('schema.json.const', \"An instance validates successfully against this keyword if its value is equal to the value of the keyword.\"),\n contentMediaType: localize('schema.json.contentMediaType', \"Describes the media type of a string property.\"),\n contentEncoding: localize('schema.json.contentEncoding', \"Describes the content encoding of a string property.\"),\n if: localize('schema.json.if', \"The validation outcome of the \\\"if\\\" subschema controls which of the \\\"then\\\" or \\\"else\\\" keywords are evaluated.\"),\n then: localize('schema.json.then', \"The \\\"if\\\" subschema is used for validation when the \\\"if\\\" subschema succeeds.\"),\n else: localize('schema.json.else', \"The \\\"else\\\" subschema is used for validation when the \\\"if\\\" subschema fails.\")\n};\nfor (var schemaName in schemaContributions.schemas) {\n var schema = schemaContributions.schemas[schemaName];\n for (var property in schema.properties) {\n var propertyObject = schema.properties[property];\n if (typeof propertyObject === 'boolean') {\n propertyObject = schema.properties[property] = {};\n }\n var description = descriptions[property];\n if (description) {\n propertyObject['description'] = description;\n }\n else {\n console.log(property + \": localize('schema.json.\" + property + \"', \\\"\\\")\");\n }\n }\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Parser from '../parser/jsonParser.js';\nimport * as Json from '../../jsonc-parser/main.js';\nimport { stringifyObject } from '../utils/json.js';\nimport { endsWith } from '../utils/strings.js';\nimport { isDefined } from '../utils/objects.js';\nimport { CompletionItem, CompletionItemKind, Range, TextEdit, InsertTextFormat, MarkupKind } from '../jsonLanguageTypes.js';\nimport * as nls from '../../../fillers/vscode-nls.js';\nvar localize = nls.loadMessageBundle();\nvar valueCommitCharacters = [',', '}', ']'];\nvar propertyCommitCharacters = [':'];\nvar JSONCompletion = /** @class */ (function () {\n function JSONCompletion(schemaService, contributions, promiseConstructor, clientCapabilities) {\n if (contributions === void 0) { contributions = []; }\n if (promiseConstructor === void 0) { promiseConstructor = Promise; }\n if (clientCapabilities === void 0) { clientCapabilities = {}; }\n this.schemaService = schemaService;\n this.contributions = contributions;\n this.promiseConstructor = promiseConstructor;\n this.clientCapabilities = clientCapabilities;\n }\n JSONCompletion.prototype.doResolve = function (item) {\n for (var i = this.contributions.length - 1; i >= 0; i--) {\n var resolveCompletion = this.contributions[i].resolveCompletion;\n if (resolveCompletion) {\n var resolver = resolveCompletion(item);\n if (resolver) {\n return resolver;\n }\n }\n }\n return this.promiseConstructor.resolve(item);\n };\n JSONCompletion.prototype.doComplete = function (document, position, doc) {\n var _this = this;\n var result = {\n items: [],\n isIncomplete: false\n };\n var text = document.getText();\n var offset = document.offsetAt(position);\n var node = doc.getNodeFromOffset(offset, true);\n if (this.isInComment(document, node ? node.offset : 0, offset)) {\n return Promise.resolve(result);\n }\n if (node && (offset === node.offset + node.length) && offset > 0) {\n var ch = text[offset - 1];\n if (node.type === 'object' && ch === '}' || node.type === 'array' && ch === ']') {\n // after ] or }\n node = node.parent;\n }\n }\n var currentWord = this.getCurrentWord(document, offset);\n var overwriteRange;\n if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {\n overwriteRange = Range.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length));\n }\n else {\n var overwriteStart = offset - currentWord.length;\n if (overwriteStart > 0 && text[overwriteStart - 1] === '\"') {\n overwriteStart--;\n }\n overwriteRange = Range.create(document.positionAt(overwriteStart), position);\n }\n var supportsCommitCharacters = false; //this.doesSupportsCommitCharacters(); disabled for now, waiting for new API: https://github.com/microsoft/vscode/issues/42544\n var proposed = {};\n var collector = {\n add: function (suggestion) {\n var label = suggestion.label;\n var existing = proposed[label];\n if (!existing) {\n label = label.replace(/[\\n]/g, '↵');\n if (label.length > 60) {\n var shortendedLabel = label.substr(0, 57).trim() + '...';\n if (!proposed[shortendedLabel]) {\n label = shortendedLabel;\n }\n }\n if (overwriteRange && suggestion.insertText !== undefined) {\n suggestion.textEdit = TextEdit.replace(overwriteRange, suggestion.insertText);\n }\n if (supportsCommitCharacters) {\n suggestion.commitCharacters = suggestion.kind === CompletionItemKind.Property ? propertyCommitCharacters : valueCommitCharacters;\n }\n suggestion.label = label;\n proposed[label] = suggestion;\n result.items.push(suggestion);\n }\n else if (!existing.documentation) {\n existing.documentation = suggestion.documentation;\n }\n },\n setAsIncomplete: function () {\n result.isIncomplete = true;\n },\n error: function (message) {\n console.error(message);\n },\n log: function (message) {\n console.log(message);\n },\n getNumberOfProposals: function () {\n return result.items.length;\n }\n };\n return this.schemaService.getSchemaForResource(document.uri, doc).then(function (schema) {\n var collectionPromises = [];\n var addValue = true;\n var currentKey = '';\n var currentProperty = undefined;\n if (node) {\n if (node.type === 'string') {\n var parent = node.parent;\n if (parent && parent.type === 'property' && parent.keyNode === node) {\n addValue = !parent.valueNode;\n currentProperty = parent;\n currentKey = text.substr(node.offset + 1, node.length - 2);\n if (parent) {\n node = parent.parent;\n }\n }\n }\n }\n // proposals for properties\n if (node && node.type === 'object') {\n // don't suggest keys when the cursor is just before the opening curly brace\n if (node.offset === offset) {\n return result;\n }\n // don't suggest properties that are already present\n var properties = node.properties;\n properties.forEach(function (p) {\n if (!currentProperty || currentProperty !== p) {\n proposed[p.keyNode.value] = CompletionItem.create('__');\n }\n });\n var separatorAfter_1 = '';\n if (addValue) {\n separatorAfter_1 = _this.evaluateSeparatorAfter(document, document.offsetAt(overwriteRange.end));\n }\n if (schema) {\n // property proposals with schema\n _this.getPropertyCompletions(schema, doc, node, addValue, separatorAfter_1, collector);\n }\n else {\n // property proposals without schema\n _this.getSchemaLessPropertyCompletions(doc, node, currentKey, collector);\n }\n var location_1 = Parser.getNodePath(node);\n _this.contributions.forEach(function (contribution) {\n var collectPromise = contribution.collectPropertyCompletions(document.uri, location_1, currentWord, addValue, separatorAfter_1 === '', collector);\n if (collectPromise) {\n collectionPromises.push(collectPromise);\n }\n });\n if ((!schema && currentWord.length > 0 && text.charAt(offset - currentWord.length - 1) !== '\"')) {\n collector.add({\n kind: CompletionItemKind.Property,\n label: _this.getLabelForValue(currentWord),\n insertText: _this.getInsertTextForProperty(currentWord, undefined, false, separatorAfter_1),\n insertTextFormat: InsertTextFormat.Snippet, documentation: '',\n });\n collector.setAsIncomplete();\n }\n }\n // proposals for values\n var types = {};\n if (schema) {\n // value proposals with schema\n _this.getValueCompletions(schema, doc, node, offset, document, collector, types);\n }\n else {\n // value proposals without schema\n _this.getSchemaLessValueCompletions(doc, node, offset, document, collector);\n }\n if (_this.contributions.length > 0) {\n _this.getContributedValueCompletions(doc, node, offset, document, collector, collectionPromises);\n }\n return _this.promiseConstructor.all(collectionPromises).then(function () {\n if (collector.getNumberOfProposals() === 0) {\n var offsetForSeparator = offset;\n if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {\n offsetForSeparator = node.offset + node.length;\n }\n var separatorAfter = _this.evaluateSeparatorAfter(document, offsetForSeparator);\n _this.addFillerValueCompletions(types, separatorAfter, collector);\n }\n return result;\n });\n });\n };\n JSONCompletion.prototype.getPropertyCompletions = function (schema, doc, node, addValue, separatorAfter, collector) {\n var _this = this;\n var matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset);\n matchingSchemas.forEach(function (s) {\n if (s.node === node && !s.inverted) {\n var schemaProperties_1 = s.schema.properties;\n if (schemaProperties_1) {\n Object.keys(schemaProperties_1).forEach(function (key) {\n var propertySchema = schemaProperties_1[key];\n if (typeof propertySchema === 'object' && !propertySchema.deprecationMessage && !propertySchema.doNotSuggest) {\n var proposal = {\n kind: CompletionItemKind.Property,\n label: key,\n insertText: _this.getInsertTextForProperty(key, propertySchema, addValue, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n filterText: _this.getFilterTextForValue(key),\n documentation: _this.fromMarkup(propertySchema.markdownDescription) || propertySchema.description || '',\n };\n if (propertySchema.suggestSortText !== undefined) {\n proposal.sortText = propertySchema.suggestSortText;\n }\n if (proposal.insertText && endsWith(proposal.insertText, \"$1\" + separatorAfter)) {\n proposal.command = {\n title: 'Suggest',\n command: 'editor.action.triggerSuggest'\n };\n }\n collector.add(proposal);\n }\n });\n }\n var schemaPropertyNames_1 = s.schema.propertyNames;\n if (typeof schemaPropertyNames_1 === 'object' && !schemaPropertyNames_1.deprecationMessage && !schemaPropertyNames_1.doNotSuggest) {\n var propertyNameCompletionItem = function (name, enumDescription) {\n if (enumDescription === void 0) { enumDescription = undefined; }\n var proposal = {\n kind: CompletionItemKind.Property,\n label: name,\n insertText: _this.getInsertTextForProperty(name, undefined, addValue, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n filterText: _this.getFilterTextForValue(name),\n documentation: enumDescription || _this.fromMarkup(schemaPropertyNames_1.markdownDescription) || schemaPropertyNames_1.description || '',\n };\n if (schemaPropertyNames_1.suggestSortText !== undefined) {\n proposal.sortText = schemaPropertyNames_1.suggestSortText;\n }\n if (proposal.insertText && endsWith(proposal.insertText, \"$1\" + separatorAfter)) {\n proposal.command = {\n title: 'Suggest',\n command: 'editor.action.triggerSuggest'\n };\n }\n collector.add(proposal);\n };\n if (schemaPropertyNames_1.enum) {\n for (var i = 0; i < schemaPropertyNames_1.enum.length; i++) {\n var enumDescription = undefined;\n if (schemaPropertyNames_1.markdownEnumDescriptions && i < schemaPropertyNames_1.markdownEnumDescriptions.length) {\n enumDescription = _this.fromMarkup(schemaPropertyNames_1.markdownEnumDescriptions[i]);\n }\n else if (schemaPropertyNames_1.enumDescriptions && i < schemaPropertyNames_1.enumDescriptions.length) {\n enumDescription = schemaPropertyNames_1.enumDescriptions[i];\n }\n propertyNameCompletionItem(schemaPropertyNames_1.enum[i], enumDescription);\n }\n }\n if (schemaPropertyNames_1.const) {\n propertyNameCompletionItem(schemaPropertyNames_1.const);\n }\n }\n }\n });\n };\n JSONCompletion.prototype.getSchemaLessPropertyCompletions = function (doc, node, currentKey, collector) {\n var _this = this;\n var collectCompletionsForSimilarObject = function (obj) {\n obj.properties.forEach(function (p) {\n var key = p.keyNode.value;\n collector.add({\n kind: CompletionItemKind.Property,\n label: key,\n insertText: _this.getInsertTextForValue(key, ''),\n insertTextFormat: InsertTextFormat.Snippet,\n filterText: _this.getFilterTextForValue(key),\n documentation: ''\n });\n });\n };\n if (node.parent) {\n if (node.parent.type === 'property') {\n // if the object is a property value, check the tree for other objects that hang under a property of the same name\n var parentKey_1 = node.parent.keyNode.value;\n doc.visit(function (n) {\n if (n.type === 'property' && n !== node.parent && n.keyNode.value === parentKey_1 && n.valueNode && n.valueNode.type === 'object') {\n collectCompletionsForSimilarObject(n.valueNode);\n }\n return true;\n });\n }\n else if (node.parent.type === 'array') {\n // if the object is in an array, use all other array elements as similar objects\n node.parent.items.forEach(function (n) {\n if (n.type === 'object' && n !== node) {\n collectCompletionsForSimilarObject(n);\n }\n });\n }\n }\n else if (node.type === 'object') {\n collector.add({\n kind: CompletionItemKind.Property,\n label: '$schema',\n insertText: this.getInsertTextForProperty('$schema', undefined, true, ''),\n insertTextFormat: InsertTextFormat.Snippet, documentation: '',\n filterText: this.getFilterTextForValue(\"$schema\")\n });\n }\n };\n JSONCompletion.prototype.getSchemaLessValueCompletions = function (doc, node, offset, document, collector) {\n var _this = this;\n var offsetForSeparator = offset;\n if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {\n offsetForSeparator = node.offset + node.length;\n node = node.parent;\n }\n if (!node) {\n collector.add({\n kind: this.getSuggestionKind('object'),\n label: 'Empty object',\n insertText: this.getInsertTextForValue({}, ''),\n insertTextFormat: InsertTextFormat.Snippet,\n documentation: ''\n });\n collector.add({\n kind: this.getSuggestionKind('array'),\n label: 'Empty array',\n insertText: this.getInsertTextForValue([], ''),\n insertTextFormat: InsertTextFormat.Snippet,\n documentation: ''\n });\n return;\n }\n var separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);\n var collectSuggestionsForValues = function (value) {\n if (value.parent && !Parser.contains(value.parent, offset, true)) {\n collector.add({\n kind: _this.getSuggestionKind(value.type),\n label: _this.getLabelTextForMatchingNode(value, document),\n insertText: _this.getInsertTextForMatchingNode(value, document, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet, documentation: ''\n });\n }\n if (value.type === 'boolean') {\n _this.addBooleanValueCompletion(!value.value, separatorAfter, collector);\n }\n };\n if (node.type === 'property') {\n if (offset > (node.colonOffset || 0)) {\n var valueNode = node.valueNode;\n if (valueNode && (offset > (valueNode.offset + valueNode.length) || valueNode.type === 'object' || valueNode.type === 'array')) {\n return;\n }\n // suggest values at the same key\n var parentKey_2 = node.keyNode.value;\n doc.visit(function (n) {\n if (n.type === 'property' && n.keyNode.value === parentKey_2 && n.valueNode) {\n collectSuggestionsForValues(n.valueNode);\n }\n return true;\n });\n if (parentKey_2 === '$schema' && node.parent && !node.parent.parent) {\n this.addDollarSchemaCompletions(separatorAfter, collector);\n }\n }\n }\n if (node.type === 'array') {\n if (node.parent && node.parent.type === 'property') {\n // suggest items of an array at the same key\n var parentKey_3 = node.parent.keyNode.value;\n doc.visit(function (n) {\n if (n.type === 'property' && n.keyNode.value === parentKey_3 && n.valueNode && n.valueNode.type === 'array') {\n n.valueNode.items.forEach(collectSuggestionsForValues);\n }\n return true;\n });\n }\n else {\n // suggest items in the same array\n node.items.forEach(collectSuggestionsForValues);\n }\n }\n };\n JSONCompletion.prototype.getValueCompletions = function (schema, doc, node, offset, document, collector, types) {\n var offsetForSeparator = offset;\n var parentKey = undefined;\n var valueNode = undefined;\n if (node && (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null')) {\n offsetForSeparator = node.offset + node.length;\n valueNode = node;\n node = node.parent;\n }\n if (!node) {\n this.addSchemaValueCompletions(schema.schema, '', collector, types);\n return;\n }\n if ((node.type === 'property') && offset > (node.colonOffset || 0)) {\n var valueNode_1 = node.valueNode;\n if (valueNode_1 && offset > (valueNode_1.offset + valueNode_1.length)) {\n return; // we are past the value node\n }\n parentKey = node.keyNode.value;\n node = node.parent;\n }\n if (node && (parentKey !== undefined || node.type === 'array')) {\n var separatorAfter = this.evaluateSeparatorAfter(document, offsetForSeparator);\n var matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset, valueNode);\n for (var _i = 0, matchingSchemas_1 = matchingSchemas; _i < matchingSchemas_1.length; _i++) {\n var s = matchingSchemas_1[_i];\n if (s.node === node && !s.inverted && s.schema) {\n if (node.type === 'array' && s.schema.items) {\n if (Array.isArray(s.schema.items)) {\n var index = this.findItemAtOffset(node, document, offset);\n if (index < s.schema.items.length) {\n this.addSchemaValueCompletions(s.schema.items[index], separatorAfter, collector, types);\n }\n }\n else {\n this.addSchemaValueCompletions(s.schema.items, separatorAfter, collector, types);\n }\n }\n if (parentKey !== undefined) {\n var propertyMatched = false;\n if (s.schema.properties) {\n var propertySchema = s.schema.properties[parentKey];\n if (propertySchema) {\n propertyMatched = true;\n this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types);\n }\n }\n if (s.schema.patternProperties && !propertyMatched) {\n for (var _a = 0, _b = Object.keys(s.schema.patternProperties); _a < _b.length; _a++) {\n var pattern = _b[_a];\n var regex = new RegExp(pattern);\n if (regex.test(parentKey)) {\n propertyMatched = true;\n var propertySchema = s.schema.patternProperties[pattern];\n this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types);\n }\n }\n }\n if (s.schema.additionalProperties && !propertyMatched) {\n var propertySchema = s.schema.additionalProperties;\n this.addSchemaValueCompletions(propertySchema, separatorAfter, collector, types);\n }\n }\n }\n }\n if (parentKey === '$schema' && !node.parent) {\n this.addDollarSchemaCompletions(separatorAfter, collector);\n }\n if (types['boolean']) {\n this.addBooleanValueCompletion(true, separatorAfter, collector);\n this.addBooleanValueCompletion(false, separatorAfter, collector);\n }\n if (types['null']) {\n this.addNullValueCompletion(separatorAfter, collector);\n }\n }\n };\n JSONCompletion.prototype.getContributedValueCompletions = function (doc, node, offset, document, collector, collectionPromises) {\n if (!node) {\n this.contributions.forEach(function (contribution) {\n var collectPromise = contribution.collectDefaultCompletions(document.uri, collector);\n if (collectPromise) {\n collectionPromises.push(collectPromise);\n }\n });\n }\n else {\n if (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null') {\n node = node.parent;\n }\n if (node && (node.type === 'property') && offset > (node.colonOffset || 0)) {\n var parentKey_4 = node.keyNode.value;\n var valueNode = node.valueNode;\n if ((!valueNode || offset <= (valueNode.offset + valueNode.length)) && node.parent) {\n var location_2 = Parser.getNodePath(node.parent);\n this.contributions.forEach(function (contribution) {\n var collectPromise = contribution.collectValueCompletions(document.uri, location_2, parentKey_4, collector);\n if (collectPromise) {\n collectionPromises.push(collectPromise);\n }\n });\n }\n }\n }\n };\n JSONCompletion.prototype.addSchemaValueCompletions = function (schema, separatorAfter, collector, types) {\n var _this = this;\n if (typeof schema === 'object') {\n this.addEnumValueCompletions(schema, separatorAfter, collector);\n this.addDefaultValueCompletions(schema, separatorAfter, collector);\n this.collectTypes(schema, types);\n if (Array.isArray(schema.allOf)) {\n schema.allOf.forEach(function (s) { return _this.addSchemaValueCompletions(s, separatorAfter, collector, types); });\n }\n if (Array.isArray(schema.anyOf)) {\n schema.anyOf.forEach(function (s) { return _this.addSchemaValueCompletions(s, separatorAfter, collector, types); });\n }\n if (Array.isArray(schema.oneOf)) {\n schema.oneOf.forEach(function (s) { return _this.addSchemaValueCompletions(s, separatorAfter, collector, types); });\n }\n }\n };\n JSONCompletion.prototype.addDefaultValueCompletions = function (schema, separatorAfter, collector, arrayDepth) {\n var _this = this;\n if (arrayDepth === void 0) { arrayDepth = 0; }\n var hasProposals = false;\n if (isDefined(schema.default)) {\n var type = schema.type;\n var value = schema.default;\n for (var i = arrayDepth; i > 0; i--) {\n value = [value];\n type = 'array';\n }\n collector.add({\n kind: this.getSuggestionKind(type),\n label: this.getLabelForValue(value),\n insertText: this.getInsertTextForValue(value, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n detail: localize('json.suggest.default', 'Default value')\n });\n hasProposals = true;\n }\n if (Array.isArray(schema.examples)) {\n schema.examples.forEach(function (example) {\n var type = schema.type;\n var value = example;\n for (var i = arrayDepth; i > 0; i--) {\n value = [value];\n type = 'array';\n }\n collector.add({\n kind: _this.getSuggestionKind(type),\n label: _this.getLabelForValue(value),\n insertText: _this.getInsertTextForValue(value, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet\n });\n hasProposals = true;\n });\n }\n if (Array.isArray(schema.defaultSnippets)) {\n schema.defaultSnippets.forEach(function (s) {\n var type = schema.type;\n var value = s.body;\n var label = s.label;\n var insertText;\n var filterText;\n if (isDefined(value)) {\n var type_1 = schema.type;\n for (var i = arrayDepth; i > 0; i--) {\n value = [value];\n type_1 = 'array';\n }\n insertText = _this.getInsertTextForSnippetValue(value, separatorAfter);\n filterText = _this.getFilterTextForSnippetValue(value);\n label = label || _this.getLabelForSnippetValue(value);\n }\n else if (typeof s.bodyText === 'string') {\n var prefix = '', suffix = '', indent = '';\n for (var i = arrayDepth; i > 0; i--) {\n prefix = prefix + indent + '[\\n';\n suffix = suffix + '\\n' + indent + ']';\n indent += '\\t';\n type = 'array';\n }\n insertText = prefix + indent + s.bodyText.split('\\n').join('\\n' + indent) + suffix + separatorAfter;\n label = label || insertText,\n filterText = insertText.replace(/[\\n]/g, ''); // remove new lines\n }\n else {\n return;\n }\n collector.add({\n kind: _this.getSuggestionKind(type),\n label: label,\n documentation: _this.fromMarkup(s.markdownDescription) || s.description,\n insertText: insertText,\n insertTextFormat: InsertTextFormat.Snippet,\n filterText: filterText\n });\n hasProposals = true;\n });\n }\n if (!hasProposals && typeof schema.items === 'object' && !Array.isArray(schema.items) && arrayDepth < 5 /* beware of recursion */) {\n this.addDefaultValueCompletions(schema.items, separatorAfter, collector, arrayDepth + 1);\n }\n };\n JSONCompletion.prototype.addEnumValueCompletions = function (schema, separatorAfter, collector) {\n if (isDefined(schema.const)) {\n collector.add({\n kind: this.getSuggestionKind(schema.type),\n label: this.getLabelForValue(schema.const),\n insertText: this.getInsertTextForValue(schema.const, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n documentation: this.fromMarkup(schema.markdownDescription) || schema.description\n });\n }\n if (Array.isArray(schema.enum)) {\n for (var i = 0, length = schema.enum.length; i < length; i++) {\n var enm = schema.enum[i];\n var documentation = this.fromMarkup(schema.markdownDescription) || schema.description;\n if (schema.markdownEnumDescriptions && i < schema.markdownEnumDescriptions.length && this.doesSupportMarkdown()) {\n documentation = this.fromMarkup(schema.markdownEnumDescriptions[i]);\n }\n else if (schema.enumDescriptions && i < schema.enumDescriptions.length) {\n documentation = schema.enumDescriptions[i];\n }\n collector.add({\n kind: this.getSuggestionKind(schema.type),\n label: this.getLabelForValue(enm),\n insertText: this.getInsertTextForValue(enm, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n documentation: documentation\n });\n }\n }\n };\n JSONCompletion.prototype.collectTypes = function (schema, types) {\n if (Array.isArray(schema.enum) || isDefined(schema.const)) {\n return;\n }\n var type = schema.type;\n if (Array.isArray(type)) {\n type.forEach(function (t) { return types[t] = true; });\n }\n else if (type) {\n types[type] = true;\n }\n };\n JSONCompletion.prototype.addFillerValueCompletions = function (types, separatorAfter, collector) {\n if (types['object']) {\n collector.add({\n kind: this.getSuggestionKind('object'),\n label: '{}',\n insertText: this.getInsertTextForGuessedValue({}, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n detail: localize('defaults.object', 'New object'),\n documentation: ''\n });\n }\n if (types['array']) {\n collector.add({\n kind: this.getSuggestionKind('array'),\n label: '[]',\n insertText: this.getInsertTextForGuessedValue([], separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n detail: localize('defaults.array', 'New array'),\n documentation: ''\n });\n }\n };\n JSONCompletion.prototype.addBooleanValueCompletion = function (value, separatorAfter, collector) {\n collector.add({\n kind: this.getSuggestionKind('boolean'),\n label: value ? 'true' : 'false',\n insertText: this.getInsertTextForValue(value, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet,\n documentation: ''\n });\n };\n JSONCompletion.prototype.addNullValueCompletion = function (separatorAfter, collector) {\n collector.add({\n kind: this.getSuggestionKind('null'),\n label: 'null',\n insertText: 'null' + separatorAfter,\n insertTextFormat: InsertTextFormat.Snippet,\n documentation: ''\n });\n };\n JSONCompletion.prototype.addDollarSchemaCompletions = function (separatorAfter, collector) {\n var _this = this;\n var schemaIds = this.schemaService.getRegisteredSchemaIds(function (schema) { return schema === 'http' || schema === 'https'; });\n schemaIds.forEach(function (schemaId) { return collector.add({\n kind: CompletionItemKind.Module,\n label: _this.getLabelForValue(schemaId),\n filterText: _this.getFilterTextForValue(schemaId),\n insertText: _this.getInsertTextForValue(schemaId, separatorAfter),\n insertTextFormat: InsertTextFormat.Snippet, documentation: ''\n }); });\n };\n JSONCompletion.prototype.getLabelForValue = function (value) {\n return JSON.stringify(value);\n };\n JSONCompletion.prototype.getFilterTextForValue = function (value) {\n return JSON.stringify(value);\n };\n JSONCompletion.prototype.getFilterTextForSnippetValue = function (value) {\n return JSON.stringify(value).replace(/\\$\\{\\d+:([^}]+)\\}|\\$\\d+/g, '$1');\n };\n JSONCompletion.prototype.getLabelForSnippetValue = function (value) {\n var label = JSON.stringify(value);\n return label.replace(/\\$\\{\\d+:([^}]+)\\}|\\$\\d+/g, '$1');\n };\n JSONCompletion.prototype.getInsertTextForPlainText = function (text) {\n return text.replace(/[\\\\\\$\\}]/g, '\\\\$&'); // escape $, \\ and } \n };\n JSONCompletion.prototype.getInsertTextForValue = function (value, separatorAfter) {\n var text = JSON.stringify(value, null, '\\t');\n if (text === '{}') {\n return '{$1}' + separatorAfter;\n }\n else if (text === '[]') {\n return '[$1]' + separatorAfter;\n }\n return this.getInsertTextForPlainText(text + separatorAfter);\n };\n JSONCompletion.prototype.getInsertTextForSnippetValue = function (value, separatorAfter) {\n var replacer = function (value) {\n if (typeof value === 'string') {\n if (value[0] === '^') {\n return value.substr(1);\n }\n }\n return JSON.stringify(value);\n };\n return stringifyObject(value, '', replacer) + separatorAfter;\n };\n JSONCompletion.prototype.getInsertTextForGuessedValue = function (value, separatorAfter) {\n switch (typeof value) {\n case 'object':\n if (value === null) {\n return '${1:null}' + separatorAfter;\n }\n return this.getInsertTextForValue(value, separatorAfter);\n case 'string':\n var snippetValue = JSON.stringify(value);\n snippetValue = snippetValue.substr(1, snippetValue.length - 2); // remove quotes\n snippetValue = this.getInsertTextForPlainText(snippetValue); // escape \\ and }\n return '\"${1:' + snippetValue + '}\"' + separatorAfter;\n case 'number':\n case 'boolean':\n return '${1:' + JSON.stringify(value) + '}' + separatorAfter;\n }\n return this.getInsertTextForValue(value, separatorAfter);\n };\n JSONCompletion.prototype.getSuggestionKind = function (type) {\n if (Array.isArray(type)) {\n var array = type;\n type = array.length > 0 ? array[0] : undefined;\n }\n if (!type) {\n return CompletionItemKind.Value;\n }\n switch (type) {\n case 'string': return CompletionItemKind.Value;\n case 'object': return CompletionItemKind.Module;\n case 'property': return CompletionItemKind.Property;\n default: return CompletionItemKind.Value;\n }\n };\n JSONCompletion.prototype.getLabelTextForMatchingNode = function (node, document) {\n switch (node.type) {\n case 'array':\n return '[]';\n case 'object':\n return '{}';\n default:\n var content = document.getText().substr(node.offset, node.length);\n return content;\n }\n };\n JSONCompletion.prototype.getInsertTextForMatchingNode = function (node, document, separatorAfter) {\n switch (node.type) {\n case 'array':\n return this.getInsertTextForValue([], separatorAfter);\n case 'object':\n return this.getInsertTextForValue({}, separatorAfter);\n default:\n var content = document.getText().substr(node.offset, node.length) + separatorAfter;\n return this.getInsertTextForPlainText(content);\n }\n };\n JSONCompletion.prototype.getInsertTextForProperty = function (key, propertySchema, addValue, separatorAfter) {\n var propertyText = this.getInsertTextForValue(key, '');\n if (!addValue) {\n return propertyText;\n }\n var resultText = propertyText + ': ';\n var value;\n var nValueProposals = 0;\n if (propertySchema) {\n if (Array.isArray(propertySchema.defaultSnippets)) {\n if (propertySchema.defaultSnippets.length === 1) {\n var body = propertySchema.defaultSnippets[0].body;\n if (isDefined(body)) {\n value = this.getInsertTextForSnippetValue(body, '');\n }\n }\n nValueProposals += propertySchema.defaultSnippets.length;\n }\n if (propertySchema.enum) {\n if (!value && propertySchema.enum.length === 1) {\n value = this.getInsertTextForGuessedValue(propertySchema.enum[0], '');\n }\n nValueProposals += propertySchema.enum.length;\n }\n if (isDefined(propertySchema.default)) {\n if (!value) {\n value = this.getInsertTextForGuessedValue(propertySchema.default, '');\n }\n nValueProposals++;\n }\n if (Array.isArray(propertySchema.examples) && propertySchema.examples.length) {\n if (!value) {\n value = this.getInsertTextForGuessedValue(propertySchema.examples[0], '');\n }\n nValueProposals += propertySchema.examples.length;\n }\n if (nValueProposals === 0) {\n var type = Array.isArray(propertySchema.type) ? propertySchema.type[0] : propertySchema.type;\n if (!type) {\n if (propertySchema.properties) {\n type = 'object';\n }\n else if (propertySchema.items) {\n type = 'array';\n }\n }\n switch (type) {\n case 'boolean':\n value = '$1';\n break;\n case 'string':\n value = '\"$1\"';\n break;\n case 'object':\n value = '{$1}';\n break;\n case 'array':\n value = '[$1]';\n break;\n case 'number':\n case 'integer':\n value = '${1:0}';\n break;\n case 'null':\n value = '${1:null}';\n break;\n default:\n return propertyText;\n }\n }\n }\n if (!value || nValueProposals > 1) {\n value = '$1';\n }\n return resultText + value + separatorAfter;\n };\n JSONCompletion.prototype.getCurrentWord = function (document, offset) {\n var i = offset - 1;\n var text = document.getText();\n while (i >= 0 && ' \\t\\n\\r\\v\":{[,]}'.indexOf(text.charAt(i)) === -1) {\n i--;\n }\n return text.substring(i + 1, offset);\n };\n JSONCompletion.prototype.evaluateSeparatorAfter = function (document, offset) {\n var scanner = Json.createScanner(document.getText(), true);\n scanner.setPosition(offset);\n var token = scanner.scan();\n switch (token) {\n case 5 /* CommaToken */:\n case 2 /* CloseBraceToken */:\n case 4 /* CloseBracketToken */:\n case 17 /* EOF */:\n return '';\n default:\n return ',';\n }\n };\n JSONCompletion.prototype.findItemAtOffset = function (node, document, offset) {\n var scanner = Json.createScanner(document.getText(), true);\n var children = node.items;\n for (var i = children.length - 1; i >= 0; i--) {\n var child = children[i];\n if (offset > child.offset + child.length) {\n scanner.setPosition(child.offset + child.length);\n var token = scanner.scan();\n if (token === 5 /* CommaToken */ && offset >= scanner.getTokenOffset() + scanner.getTokenLength()) {\n return i + 1;\n }\n return i;\n }\n else if (offset >= child.offset) {\n return i;\n }\n }\n return 0;\n };\n JSONCompletion.prototype.isInComment = function (document, start, offset) {\n var scanner = Json.createScanner(document.getText(), false);\n scanner.setPosition(start);\n var token = scanner.scan();\n while (token !== 17 /* EOF */ && (scanner.getTokenOffset() + scanner.getTokenLength() < offset)) {\n token = scanner.scan();\n }\n return (token === 12 /* LineCommentTrivia */ || token === 13 /* BlockCommentTrivia */) && scanner.getTokenOffset() <= offset;\n };\n JSONCompletion.prototype.fromMarkup = function (markupString) {\n if (markupString && this.doesSupportMarkdown()) {\n return {\n kind: MarkupKind.Markdown,\n value: markupString\n };\n }\n return undefined;\n };\n JSONCompletion.prototype.doesSupportMarkdown = function () {\n if (!isDefined(this.supportsMarkdown)) {\n var completion = this.clientCapabilities.textDocument && this.clientCapabilities.textDocument.completion;\n this.supportsMarkdown = completion && completion.completionItem && Array.isArray(completion.completionItem.documentationFormat) && completion.completionItem.documentationFormat.indexOf(MarkupKind.Markdown) !== -1;\n }\n return this.supportsMarkdown;\n };\n JSONCompletion.prototype.doesSupportsCommitCharacters = function () {\n if (!isDefined(this.supportsCommitCharacters)) {\n var completion = this.clientCapabilities.textDocument && this.clientCapabilities.textDocument.completion;\n this.supportsCommitCharacters = completion && completion.completionItem && !!completion.completionItem.commitCharactersSupport;\n }\n return this.supportsCommitCharacters;\n };\n return JSONCompletion;\n}());\nexport { JSONCompletion };\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range } from '../jsonLanguageTypes.js';\nexport function findDefinition(document, position, doc) {\n var offset = document.offsetAt(position);\n var node = doc.getNodeFromOffset(offset, true);\n if (!node || !isRef(node)) {\n return Promise.resolve([]);\n }\n var propertyNode = node.parent;\n var valueNode = propertyNode.valueNode;\n var path = valueNode.value;\n var targetNode = findTargetNode(doc, path);\n if (!targetNode) {\n return Promise.resolve([]);\n }\n var definition = {\n targetUri: document.uri,\n originSelectionRange: createRange(document, valueNode),\n targetRange: createRange(document, targetNode),\n targetSelectionRange: createRange(document, targetNode)\n };\n return Promise.resolve([definition]);\n}\nfunction createRange(document, node) {\n return Range.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length));\n}\nfunction isRef(node) {\n return node.type === 'string' &&\n node.parent &&\n node.parent.type === 'property' &&\n node.parent.valueNode === node &&\n node.parent.keyNode.value === \"$ref\" ||\n false;\n}\nfunction findTargetNode(doc, path) {\n var tokens = parseJSONPointer(path);\n if (!tokens) {\n return null;\n }\n return findNode(tokens, doc.root);\n}\nfunction findNode(pointer, node) {\n if (!node) {\n return null;\n }\n if (pointer.length === 0) {\n return node;\n }\n var token = pointer.shift();\n if (node && node.type === 'object') {\n var propertyNode = node.properties.find(function (propertyNode) { return propertyNode.keyNode.value === token; });\n if (!propertyNode) {\n return null;\n }\n return findNode(pointer, propertyNode.valueNode);\n }\n else if (node && node.type === 'array') {\n if (token.match(/^(0|[1-9][0-9]*)$/)) {\n var index = Number.parseInt(token);\n var arrayItem = node.items[index];\n if (!arrayItem) {\n return null;\n }\n return findNode(pointer, arrayItem);\n }\n }\n return null;\n}\nfunction parseJSONPointer(path) {\n if (path === \"#\") {\n return [];\n }\n if (path[0] !== '#' || path[1] !== '/') {\n return null;\n }\n return path.substring(2).split(/\\//).map(unescape);\n}\nfunction unescape(str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Parser from '../parser/jsonParser.js';\nimport * as Strings from '../utils/strings.js';\nimport { colorFromHex } from '../utils/colors.js';\nimport { Range, TextEdit, SymbolKind, Location } from \"../jsonLanguageTypes.js\";\nvar JSONDocumentSymbols = /** @class */ (function () {\n function JSONDocumentSymbols(schemaService) {\n this.schemaService = schemaService;\n }\n JSONDocumentSymbols.prototype.findDocumentSymbols = function (document, doc, context) {\n var _this = this;\n if (context === void 0) { context = { resultLimit: Number.MAX_VALUE }; }\n var root = doc.root;\n if (!root) {\n return [];\n }\n var limit = context.resultLimit || Number.MAX_VALUE;\n // special handling for key bindings\n var resourceString = document.uri;\n if ((resourceString === 'vscode://defaultsettings/keybindings.json') || Strings.endsWith(resourceString.toLowerCase(), '/user/keybindings.json')) {\n if (root.type === 'array') {\n var result_1 = [];\n for (var _i = 0, _a = root.items; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.type === 'object') {\n for (var _b = 0, _c = item.properties; _b < _c.length; _b++) {\n var property = _c[_b];\n if (property.keyNode.value === 'key' && property.valueNode) {\n var location = Location.create(document.uri, getRange(document, item));\n result_1.push({ name: Parser.getNodeValue(property.valueNode), kind: SymbolKind.Function, location: location });\n limit--;\n if (limit <= 0) {\n if (context && context.onResultLimitExceeded) {\n context.onResultLimitExceeded(resourceString);\n }\n return result_1;\n }\n }\n }\n }\n }\n return result_1;\n }\n }\n var toVisit = [\n { node: root, containerName: '' }\n ];\n var nextToVisit = 0;\n var limitExceeded = false;\n var result = [];\n var collectOutlineEntries = function (node, containerName) {\n if (node.type === 'array') {\n node.items.forEach(function (node) {\n if (node) {\n toVisit.push({ node: node, containerName: containerName });\n }\n });\n }\n else if (node.type === 'object') {\n node.properties.forEach(function (property) {\n var valueNode = property.valueNode;\n if (valueNode) {\n if (limit > 0) {\n limit--;\n var location = Location.create(document.uri, getRange(document, property));\n var childContainerName = containerName ? containerName + '.' + property.keyNode.value : property.keyNode.value;\n result.push({ name: _this.getKeyLabel(property), kind: _this.getSymbolKind(valueNode.type), location: location, containerName: containerName });\n toVisit.push({ node: valueNode, containerName: childContainerName });\n }\n else {\n limitExceeded = true;\n }\n }\n });\n }\n };\n // breath first traversal\n while (nextToVisit < toVisit.length) {\n var next = toVisit[nextToVisit++];\n collectOutlineEntries(next.node, next.containerName);\n }\n if (limitExceeded && context && context.onResultLimitExceeded) {\n context.onResultLimitExceeded(resourceString);\n }\n return result;\n };\n JSONDocumentSymbols.prototype.findDocumentSymbols2 = function (document, doc, context) {\n var _this = this;\n if (context === void 0) { context = { resultLimit: Number.MAX_VALUE }; }\n var root = doc.root;\n if (!root) {\n return [];\n }\n var limit = context.resultLimit || Number.MAX_VALUE;\n // special handling for key bindings\n var resourceString = document.uri;\n if ((resourceString === 'vscode://defaultsettings/keybindings.json') || Strings.endsWith(resourceString.toLowerCase(), '/user/keybindings.json')) {\n if (root.type === 'array') {\n var result_2 = [];\n for (var _i = 0, _a = root.items; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.type === 'object') {\n for (var _b = 0, _c = item.properties; _b < _c.length; _b++) {\n var property = _c[_b];\n if (property.keyNode.value === 'key' && property.valueNode) {\n var range = getRange(document, item);\n var selectionRange = getRange(document, property.keyNode);\n result_2.push({ name: Parser.getNodeValue(property.valueNode), kind: SymbolKind.Function, range: range, selectionRange: selectionRange });\n limit--;\n if (limit <= 0) {\n if (context && context.onResultLimitExceeded) {\n context.onResultLimitExceeded(resourceString);\n }\n return result_2;\n }\n }\n }\n }\n }\n return result_2;\n }\n }\n var result = [];\n var toVisit = [\n { node: root, result: result }\n ];\n var nextToVisit = 0;\n var limitExceeded = false;\n var collectOutlineEntries = function (node, result) {\n if (node.type === 'array') {\n node.items.forEach(function (node, index) {\n if (node) {\n if (limit > 0) {\n limit--;\n var range = getRange(document, node);\n var selectionRange = range;\n var name = String(index);\n var symbol = { name: name, kind: _this.getSymbolKind(node.type), range: range, selectionRange: selectionRange, children: [] };\n result.push(symbol);\n toVisit.push({ result: symbol.children, node: node });\n }\n else {\n limitExceeded = true;\n }\n }\n });\n }\n else if (node.type === 'object') {\n node.properties.forEach(function (property) {\n var valueNode = property.valueNode;\n if (valueNode) {\n if (limit > 0) {\n limit--;\n var range = getRange(document, property);\n var selectionRange = getRange(document, property.keyNode);\n var symbol = { name: _this.getKeyLabel(property), kind: _this.getSymbolKind(valueNode.type), range: range, selectionRange: selectionRange, children: [] };\n result.push(symbol);\n toVisit.push({ result: symbol.children, node: valueNode });\n }\n else {\n limitExceeded = true;\n }\n }\n });\n }\n };\n // breath first traversal\n while (nextToVisit < toVisit.length) {\n var next = toVisit[nextToVisit++];\n collectOutlineEntries(next.node, next.result);\n }\n if (limitExceeded && context && context.onResultLimitExceeded) {\n context.onResultLimitExceeded(resourceString);\n }\n return result;\n };\n JSONDocumentSymbols.prototype.getSymbolKind = function (nodeType) {\n switch (nodeType) {\n case 'object':\n return SymbolKind.Module;\n case 'string':\n return SymbolKind.String;\n case 'number':\n return SymbolKind.Number;\n case 'array':\n return SymbolKind.Array;\n case 'boolean':\n return SymbolKind.Boolean;\n default: // 'null'\n return SymbolKind.Variable;\n }\n };\n JSONDocumentSymbols.prototype.getKeyLabel = function (property) {\n var name = property.keyNode.value;\n if (name) {\n name = name.replace(/[\\n]/g, '↵');\n }\n if (name && name.trim()) {\n return name;\n }\n return \"\\\"\" + name + \"\\\"\";\n };\n JSONDocumentSymbols.prototype.findDocumentColors = function (document, doc, context) {\n return this.schemaService.getSchemaForResource(document.uri, doc).then(function (schema) {\n var result = [];\n if (schema) {\n var limit = context && typeof context.resultLimit === 'number' ? context.resultLimit : Number.MAX_VALUE;\n var matchingSchemas = doc.getMatchingSchemas(schema.schema);\n var visitedNode = {};\n for (var _i = 0, matchingSchemas_1 = matchingSchemas; _i < matchingSchemas_1.length; _i++) {\n var s = matchingSchemas_1[_i];\n if (!s.inverted && s.schema && (s.schema.format === 'color' || s.schema.format === 'color-hex') && s.node && s.node.type === 'string') {\n var nodeId = String(s.node.offset);\n if (!visitedNode[nodeId]) {\n var color = colorFromHex(Parser.getNodeValue(s.node));\n if (color) {\n var range = getRange(document, s.node);\n result.push({ color: color, range: range });\n }\n visitedNode[nodeId] = true;\n limit--;\n if (limit <= 0) {\n if (context && context.onResultLimitExceeded) {\n context.onResultLimitExceeded(document.uri);\n }\n return result;\n }\n }\n }\n }\n }\n return result;\n });\n };\n JSONDocumentSymbols.prototype.getColorPresentations = function (document, doc, color, range) {\n var result = [];\n var red256 = Math.round(color.red * 255), green256 = Math.round(color.green * 255), blue256 = Math.round(color.blue * 255);\n function toTwoDigitHex(n) {\n var r = n.toString(16);\n return r.length !== 2 ? '0' + r : r;\n }\n var label;\n if (color.alpha === 1) {\n label = \"#\" + toTwoDigitHex(red256) + toTwoDigitHex(green256) + toTwoDigitHex(blue256);\n }\n else {\n label = \"#\" + toTwoDigitHex(red256) + toTwoDigitHex(green256) + toTwoDigitHex(blue256) + toTwoDigitHex(Math.round(color.alpha * 255));\n }\n result.push({ label: label, textEdit: TextEdit.replace(range, JSON.stringify(label)) });\n return result;\n };\n return JSONDocumentSymbols;\n}());\nexport { JSONDocumentSymbols };\nfunction getRange(document, node) {\n return Range.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length));\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { createScanner } from '../../jsonc-parser/main.js';\nimport { FoldingRangeKind, Position } from '../jsonLanguageTypes.js';\nexport function getFoldingRanges(document, context) {\n var ranges = [];\n var nestingLevels = [];\n var stack = [];\n var prevStart = -1;\n var scanner = createScanner(document.getText(), false);\n var token = scanner.scan();\n function addRange(range) {\n ranges.push(range);\n nestingLevels.push(stack.length);\n }\n while (token !== 17 /* EOF */) {\n switch (token) {\n case 1 /* OpenBraceToken */:\n case 3 /* OpenBracketToken */: {\n var startLine = document.positionAt(scanner.getTokenOffset()).line;\n var range = { startLine: startLine, endLine: startLine, kind: token === 1 /* OpenBraceToken */ ? 'object' : 'array' };\n stack.push(range);\n break;\n }\n case 2 /* CloseBraceToken */:\n case 4 /* CloseBracketToken */: {\n var kind = token === 2 /* CloseBraceToken */ ? 'object' : 'array';\n if (stack.length > 0 && stack[stack.length - 1].kind === kind) {\n var range = stack.pop();\n var line = document.positionAt(scanner.getTokenOffset()).line;\n if (range && line > range.startLine + 1 && prevStart !== range.startLine) {\n range.endLine = line - 1;\n addRange(range);\n prevStart = range.startLine;\n }\n }\n break;\n }\n case 13 /* BlockCommentTrivia */: {\n var startLine = document.positionAt(scanner.getTokenOffset()).line;\n var endLine = document.positionAt(scanner.getTokenOffset() + scanner.getTokenLength()).line;\n if (scanner.getTokenError() === 1 /* UnexpectedEndOfComment */ && startLine + 1 < document.lineCount) {\n scanner.setPosition(document.offsetAt(Position.create(startLine + 1, 0)));\n }\n else {\n if (startLine < endLine) {\n addRange({ startLine: startLine, endLine: endLine, kind: FoldingRangeKind.Comment });\n prevStart = startLine;\n }\n }\n break;\n }\n case 12 /* LineCommentTrivia */: {\n var text = document.getText().substr(scanner.getTokenOffset(), scanner.getTokenLength());\n var m = text.match(/^\\/\\/\\s*#(region\\b)|(endregion\\b)/);\n if (m) {\n var line = document.positionAt(scanner.getTokenOffset()).line;\n if (m[1]) { // start pattern match\n var range = { startLine: line, endLine: line, kind: FoldingRangeKind.Region };\n stack.push(range);\n }\n else {\n var i = stack.length - 1;\n while (i >= 0 && stack[i].kind !== FoldingRangeKind.Region) {\n i--;\n }\n if (i >= 0) {\n var range = stack[i];\n stack.length = i;\n if (line > range.startLine && prevStart !== range.startLine) {\n range.endLine = line;\n addRange(range);\n prevStart = range.startLine;\n }\n }\n }\n }\n break;\n }\n }\n token = scanner.scan();\n }\n var rangeLimit = context && context.rangeLimit;\n if (typeof rangeLimit !== 'number' || ranges.length <= rangeLimit) {\n return ranges;\n }\n if (context && context.onRangeLimitExceeded) {\n context.onRangeLimitExceeded(document.uri);\n }\n var counts = [];\n for (var _i = 0, nestingLevels_1 = nestingLevels; _i < nestingLevels_1.length; _i++) {\n var level = nestingLevels_1[_i];\n if (level < 30) {\n counts[level] = (counts[level] || 0) + 1;\n }\n }\n var entries = 0;\n var maxLevel = 0;\n for (var i = 0; i < counts.length; i++) {\n var n = counts[i];\n if (n) {\n if (n + entries > rangeLimit) {\n maxLevel = i;\n break;\n }\n entries += n;\n }\n }\n var result = [];\n for (var i = 0; i < ranges.length; i++) {\n var level = nestingLevels[i];\n if (typeof level === 'number') {\n if (level < maxLevel || (level === maxLevel && entries++ < rangeLimit)) {\n result.push(ranges[i]);\n }\n }\n }\n return result;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Parser from '../parser/jsonParser.js';\nimport { Range } from '../jsonLanguageTypes.js';\nvar JSONHover = /** @class */ (function () {\n function JSONHover(schemaService, contributions, promiseConstructor) {\n if (contributions === void 0) { contributions = []; }\n this.schemaService = schemaService;\n this.contributions = contributions;\n this.promise = promiseConstructor || Promise;\n }\n JSONHover.prototype.doHover = function (document, position, doc) {\n var offset = document.offsetAt(position);\n var node = doc.getNodeFromOffset(offset);\n if (!node || (node.type === 'object' || node.type === 'array') && offset > node.offset + 1 && offset < node.offset + node.length - 1) {\n return this.promise.resolve(null);\n }\n var hoverRangeNode = node;\n // use the property description when hovering over an object key\n if (node.type === 'string') {\n var parent = node.parent;\n if (parent && parent.type === 'property' && parent.keyNode === node) {\n node = parent.valueNode;\n if (!node) {\n return this.promise.resolve(null);\n }\n }\n }\n var hoverRange = Range.create(document.positionAt(hoverRangeNode.offset), document.positionAt(hoverRangeNode.offset + hoverRangeNode.length));\n var createHover = function (contents) {\n var result = {\n contents: contents,\n range: hoverRange\n };\n return result;\n };\n var location = Parser.getNodePath(node);\n for (var i = this.contributions.length - 1; i >= 0; i--) {\n var contribution = this.contributions[i];\n var promise = contribution.getInfoContribution(document.uri, location);\n if (promise) {\n return promise.then(function (htmlContent) { return createHover(htmlContent); });\n }\n }\n return this.schemaService.getSchemaForResource(document.uri, doc).then(function (schema) {\n if (schema && node) {\n var matchingSchemas = doc.getMatchingSchemas(schema.schema, node.offset);\n var title_1 = undefined;\n var markdownDescription_1 = undefined;\n var markdownEnumValueDescription_1 = undefined, enumValue_1 = undefined;\n matchingSchemas.every(function (s) {\n if (s.node === node && !s.inverted && s.schema) {\n title_1 = title_1 || s.schema.title;\n markdownDescription_1 = markdownDescription_1 || s.schema.markdownDescription || toMarkdown(s.schema.description);\n if (s.schema.enum) {\n var idx = s.schema.enum.indexOf(Parser.getNodeValue(node));\n if (s.schema.markdownEnumDescriptions) {\n markdownEnumValueDescription_1 = s.schema.markdownEnumDescriptions[idx];\n }\n else if (s.schema.enumDescriptions) {\n markdownEnumValueDescription_1 = toMarkdown(s.schema.enumDescriptions[idx]);\n }\n if (markdownEnumValueDescription_1) {\n enumValue_1 = s.schema.enum[idx];\n if (typeof enumValue_1 !== 'string') {\n enumValue_1 = JSON.stringify(enumValue_1);\n }\n }\n }\n }\n return true;\n });\n var result = '';\n if (title_1) {\n result = toMarkdown(title_1);\n }\n if (markdownDescription_1) {\n if (result.length > 0) {\n result += \"\\n\\n\";\n }\n result += markdownDescription_1;\n }\n if (markdownEnumValueDescription_1) {\n if (result.length > 0) {\n result += \"\\n\\n\";\n }\n result += \"`\" + toMarkdownCodeBlock(enumValue_1) + \"`: \" + markdownEnumValueDescription_1;\n }\n return createHover([result]);\n }\n return null;\n });\n };\n return JSONHover;\n}());\nexport { JSONHover };\nfunction toMarkdown(plain) {\n if (plain) {\n var res = plain.replace(/([^\\n\\r])(\\r?\\n)([^\\n\\r])/gm, '$1\\n\\n$3'); // single new lines to \\n\\n (Markdown paragraph)\n return res.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, \"\\\\$&\"); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\n }\n return undefined;\n}\nfunction toMarkdownCodeBlock(content) {\n // see https://daringfireball.net/projects/markdown/syntax#precode\n if (content.indexOf('`') !== -1) {\n return '`` ' + content + ' ``';\n }\n return content;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as Json from '../../jsonc-parser/main.js';\nimport { URI } from '../../vscode-uri/index.js';\nimport * as Strings from '../utils/strings.js';\nimport * as Parser from '../parser/jsonParser.js';\nimport * as nls from '../../../fillers/vscode-nls.js';\nvar localize = nls.loadMessageBundle();\nvar FilePatternAssociation = /** @class */ (function () {\n function FilePatternAssociation(pattern, uris) {\n this.patternRegExps = [];\n this.isInclude = [];\n try {\n for (var _i = 0, pattern_1 = pattern; _i < pattern_1.length; _i++) {\n var p = pattern_1[_i];\n var include = p[0] !== '!';\n if (!include) {\n p = p.substring(1);\n }\n this.patternRegExps.push(new RegExp(Strings.convertSimple2RegExpPattern(p) + '$'));\n this.isInclude.push(include);\n }\n this.uris = uris;\n }\n catch (e) {\n // invalid pattern\n this.patternRegExps.length = 0;\n this.isInclude.length = 0;\n this.uris = [];\n }\n }\n FilePatternAssociation.prototype.matchesPattern = function (fileName) {\n var match = false;\n for (var i = 0; i < this.patternRegExps.length; i++) {\n var regExp = this.patternRegExps[i];\n if (regExp.test(fileName)) {\n match = this.isInclude[i];\n }\n }\n return match;\n };\n FilePatternAssociation.prototype.getURIs = function () {\n return this.uris;\n };\n return FilePatternAssociation;\n}());\nvar SchemaHandle = /** @class */ (function () {\n function SchemaHandle(service, url, unresolvedSchemaContent) {\n this.service = service;\n this.url = url;\n this.dependencies = {};\n if (unresolvedSchemaContent) {\n this.unresolvedSchema = this.service.promise.resolve(new UnresolvedSchema(unresolvedSchemaContent));\n }\n }\n SchemaHandle.prototype.getUnresolvedSchema = function () {\n if (!this.unresolvedSchema) {\n this.unresolvedSchema = this.service.loadSchema(this.url);\n }\n return this.unresolvedSchema;\n };\n SchemaHandle.prototype.getResolvedSchema = function () {\n var _this = this;\n if (!this.resolvedSchema) {\n this.resolvedSchema = this.getUnresolvedSchema().then(function (unresolved) {\n return _this.service.resolveSchemaContent(unresolved, _this.url, _this.dependencies);\n });\n }\n return this.resolvedSchema;\n };\n SchemaHandle.prototype.clearSchema = function () {\n this.resolvedSchema = undefined;\n this.unresolvedSchema = undefined;\n this.dependencies = {};\n };\n return SchemaHandle;\n}());\nvar UnresolvedSchema = /** @class */ (function () {\n function UnresolvedSchema(schema, errors) {\n if (errors === void 0) { errors = []; }\n this.schema = schema;\n this.errors = errors;\n }\n return UnresolvedSchema;\n}());\nexport { UnresolvedSchema };\nvar ResolvedSchema = /** @class */ (function () {\n function ResolvedSchema(schema, errors) {\n if (errors === void 0) { errors = []; }\n this.schema = schema;\n this.errors = errors;\n }\n ResolvedSchema.prototype.getSection = function (path) {\n var schemaRef = this.getSectionRecursive(path, this.schema);\n if (schemaRef) {\n return Parser.asSchema(schemaRef);\n }\n return undefined;\n };\n ResolvedSchema.prototype.getSectionRecursive = function (path, schema) {\n if (!schema || typeof schema === 'boolean' || path.length === 0) {\n return schema;\n }\n var next = path.shift();\n if (schema.properties && typeof schema.properties[next]) {\n return this.getSectionRecursive(path, schema.properties[next]);\n }\n else if (schema.patternProperties) {\n for (var _i = 0, _a = Object.keys(schema.patternProperties); _i < _a.length; _i++) {\n var pattern = _a[_i];\n var regex = new RegExp(pattern);\n if (regex.test(next)) {\n return this.getSectionRecursive(path, schema.patternProperties[pattern]);\n }\n }\n }\n else if (typeof schema.additionalProperties === 'object') {\n return this.getSectionRecursive(path, schema.additionalProperties);\n }\n else if (next.match('[0-9]+')) {\n if (Array.isArray(schema.items)) {\n var index = parseInt(next, 10);\n if (!isNaN(index) && schema.items[index]) {\n return this.getSectionRecursive(path, schema.items[index]);\n }\n }\n else if (schema.items) {\n return this.getSectionRecursive(path, schema.items);\n }\n }\n return undefined;\n };\n return ResolvedSchema;\n}());\nexport { ResolvedSchema };\nvar JSONSchemaService = /** @class */ (function () {\n function JSONSchemaService(requestService, contextService, promiseConstructor) {\n this.contextService = contextService;\n this.requestService = requestService;\n this.promiseConstructor = promiseConstructor || Promise;\n this.callOnDispose = [];\n this.contributionSchemas = {};\n this.contributionAssociations = [];\n this.schemasById = {};\n this.filePatternAssociations = [];\n this.registeredSchemasIds = {};\n }\n JSONSchemaService.prototype.getRegisteredSchemaIds = function (filter) {\n return Object.keys(this.registeredSchemasIds).filter(function (id) {\n var scheme = URI.parse(id).scheme;\n return scheme !== 'schemaservice' && (!filter || filter(scheme));\n });\n };\n Object.defineProperty(JSONSchemaService.prototype, \"promise\", {\n get: function () {\n return this.promiseConstructor;\n },\n enumerable: false,\n configurable: true\n });\n JSONSchemaService.prototype.dispose = function () {\n while (this.callOnDispose.length > 0) {\n this.callOnDispose.pop()();\n }\n };\n JSONSchemaService.prototype.onResourceChange = function (uri) {\n var _this = this;\n var hasChanges = false;\n uri = normalizeId(uri);\n var toWalk = [uri];\n var all = Object.keys(this.schemasById).map(function (key) { return _this.schemasById[key]; });\n while (toWalk.length) {\n var curr = toWalk.pop();\n for (var i = 0; i < all.length; i++) {\n var handle = all[i];\n if (handle && (handle.url === curr || handle.dependencies[curr])) {\n if (handle.url !== curr) {\n toWalk.push(handle.url);\n }\n handle.clearSchema();\n all[i] = undefined;\n hasChanges = true;\n }\n }\n }\n return hasChanges;\n };\n JSONSchemaService.prototype.setSchemaContributions = function (schemaContributions) {\n if (schemaContributions.schemas) {\n var schemas = schemaContributions.schemas;\n for (var id in schemas) {\n var normalizedId = normalizeId(id);\n this.contributionSchemas[normalizedId] = this.addSchemaHandle(normalizedId, schemas[id]);\n }\n }\n if (Array.isArray(schemaContributions.schemaAssociations)) {\n var schemaAssociations = schemaContributions.schemaAssociations;\n for (var _i = 0, schemaAssociations_1 = schemaAssociations; _i < schemaAssociations_1.length; _i++) {\n var schemaAssociation = schemaAssociations_1[_i];\n var uris = schemaAssociation.uris.map(normalizeId);\n var association = this.addFilePatternAssociation(schemaAssociation.pattern, uris);\n this.contributionAssociations.push(association);\n }\n }\n };\n JSONSchemaService.prototype.addSchemaHandle = function (id, unresolvedSchemaContent) {\n var schemaHandle = new SchemaHandle(this, id, unresolvedSchemaContent);\n this.schemasById[id] = schemaHandle;\n return schemaHandle;\n };\n JSONSchemaService.prototype.getOrAddSchemaHandle = function (id, unresolvedSchemaContent) {\n return this.schemasById[id] || this.addSchemaHandle(id, unresolvedSchemaContent);\n };\n JSONSchemaService.prototype.addFilePatternAssociation = function (pattern, uris) {\n var fpa = new FilePatternAssociation(pattern, uris);\n this.filePatternAssociations.push(fpa);\n return fpa;\n };\n JSONSchemaService.prototype.registerExternalSchema = function (uri, filePatterns, unresolvedSchemaContent) {\n var id = normalizeId(uri);\n this.registeredSchemasIds[id] = true;\n this.cachedSchemaForResource = undefined;\n if (filePatterns) {\n this.addFilePatternAssociation(filePatterns, [uri]);\n }\n return unresolvedSchemaContent ? this.addSchemaHandle(id, unresolvedSchemaContent) : this.getOrAddSchemaHandle(id);\n };\n JSONSchemaService.prototype.clearExternalSchemas = function () {\n this.schemasById = {};\n this.filePatternAssociations = [];\n this.registeredSchemasIds = {};\n this.cachedSchemaForResource = undefined;\n for (var id in this.contributionSchemas) {\n this.schemasById[id] = this.contributionSchemas[id];\n this.registeredSchemasIds[id] = true;\n }\n for (var _i = 0, _a = this.contributionAssociations; _i < _a.length; _i++) {\n var contributionAssociation = _a[_i];\n this.filePatternAssociations.push(contributionAssociation);\n }\n };\n JSONSchemaService.prototype.getResolvedSchema = function (schemaId) {\n var id = normalizeId(schemaId);\n var schemaHandle = this.schemasById[id];\n if (schemaHandle) {\n return schemaHandle.getResolvedSchema();\n }\n return this.promise.resolve(undefined);\n };\n JSONSchemaService.prototype.loadSchema = function (url) {\n if (!this.requestService) {\n var errorMessage = localize('json.schema.norequestservice', 'Unable to load schema from \\'{0}\\'. No schema request service available', toDisplayString(url));\n return this.promise.resolve(new UnresolvedSchema({}, [errorMessage]));\n }\n return this.requestService(url).then(function (content) {\n if (!content) {\n var errorMessage = localize('json.schema.nocontent', 'Unable to load schema from \\'{0}\\': No content.', toDisplayString(url));\n return new UnresolvedSchema({}, [errorMessage]);\n }\n var schemaContent = {};\n var jsonErrors = [];\n schemaContent = Json.parse(content, jsonErrors);\n var errors = jsonErrors.length ? [localize('json.schema.invalidFormat', 'Unable to parse content from \\'{0}\\': Parse error at offset {1}.', toDisplayString(url), jsonErrors[0].offset)] : [];\n return new UnresolvedSchema(schemaContent, errors);\n }, function (error) {\n var errorMessage = error.toString();\n var errorSplit = error.toString().split('Error: ');\n if (errorSplit.length > 1) {\n // more concise error message, URL and context are attached by caller anyways\n errorMessage = errorSplit[1];\n }\n if (Strings.endsWith(errorMessage, '.')) {\n errorMessage = errorMessage.substr(0, errorMessage.length - 1);\n }\n return new UnresolvedSchema({}, [localize('json.schema.nocontent', 'Unable to load schema from \\'{0}\\': {1}.', toDisplayString(url), errorMessage)]);\n });\n };\n JSONSchemaService.prototype.resolveSchemaContent = function (schemaToResolve, schemaURL, dependencies) {\n var _this = this;\n var resolveErrors = schemaToResolve.errors.slice(0);\n var schema = schemaToResolve.schema;\n if (schema.$schema) {\n var id = normalizeId(schema.$schema);\n if (id === 'http://json-schema.org/draft-03/schema') {\n return this.promise.resolve(new ResolvedSchema({}, [localize('json.schema.draft03.notsupported', \"Draft-03 schemas are not supported.\")]));\n }\n else if (id === 'https://json-schema.org/draft/2019-09/schema') {\n resolveErrors.push(localize('json.schema.draft201909.notsupported', \"Draft 2019-09 schemas are not yet fully supported.\"));\n }\n }\n var contextService = this.contextService;\n var findSection = function (schema, path) {\n if (!path) {\n return schema;\n }\n var current = schema;\n if (path[0] === '/') {\n path = path.substr(1);\n }\n path.split('/').some(function (part) {\n current = current[part];\n return !current;\n });\n return current;\n };\n var merge = function (target, sourceRoot, sourceURI, refSegment) {\n var path = refSegment ? decodeURIComponent(refSegment) : undefined;\n var section = findSection(sourceRoot, path);\n if (section) {\n for (var key in section) {\n if (section.hasOwnProperty(key) && !target.hasOwnProperty(key)) {\n target[key] = section[key];\n }\n }\n }\n else {\n resolveErrors.push(localize('json.schema.invalidref', '$ref \\'{0}\\' in \\'{1}\\' can not be resolved.', path, sourceURI));\n }\n };\n var resolveExternalLink = function (node, uri, refSegment, parentSchemaURL, parentSchemaDependencies) {\n if (contextService && !/^\\w+:\\/\\/.*/.test(uri)) {\n uri = contextService.resolveRelativePath(uri, parentSchemaURL);\n }\n uri = normalizeId(uri);\n var referencedHandle = _this.getOrAddSchemaHandle(uri);\n return referencedHandle.getUnresolvedSchema().then(function (unresolvedSchema) {\n parentSchemaDependencies[uri] = true;\n if (unresolvedSchema.errors.length) {\n var loc = refSegment ? uri + '#' + refSegment : uri;\n resolveErrors.push(localize('json.schema.problemloadingref', 'Problems loading reference \\'{0}\\': {1}', loc, unresolvedSchema.errors[0]));\n }\n merge(node, unresolvedSchema.schema, uri, refSegment);\n return resolveRefs(node, unresolvedSchema.schema, uri, referencedHandle.dependencies);\n });\n };\n var resolveRefs = function (node, parentSchema, parentSchemaURL, parentSchemaDependencies) {\n if (!node || typeof node !== 'object') {\n return Promise.resolve(null);\n }\n var toWalk = [node];\n var seen = [];\n var openPromises = [];\n var collectEntries = function () {\n var entries = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n entries[_i] = arguments[_i];\n }\n for (var _a = 0, entries_1 = entries; _a < entries_1.length; _a++) {\n var entry = entries_1[_a];\n if (typeof entry === 'object') {\n toWalk.push(entry);\n }\n }\n };\n var collectMapEntries = function () {\n var maps = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n maps[_i] = arguments[_i];\n }\n for (var _a = 0, maps_1 = maps; _a < maps_1.length; _a++) {\n var map = maps_1[_a];\n if (typeof map === 'object') {\n for (var k in map) {\n var key = k;\n var entry = map[key];\n if (typeof entry === 'object') {\n toWalk.push(entry);\n }\n }\n }\n }\n };\n var collectArrayEntries = function () {\n var arrays = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arrays[_i] = arguments[_i];\n }\n for (var _a = 0, arrays_1 = arrays; _a < arrays_1.length; _a++) {\n var array = arrays_1[_a];\n if (Array.isArray(array)) {\n for (var _b = 0, array_1 = array; _b < array_1.length; _b++) {\n var entry = array_1[_b];\n if (typeof entry === 'object') {\n toWalk.push(entry);\n }\n }\n }\n }\n };\n var handleRef = function (next) {\n var seenRefs = [];\n while (next.$ref) {\n var ref = next.$ref;\n var segments = ref.split('#', 2);\n delete next.$ref;\n if (segments[0].length > 0) {\n openPromises.push(resolveExternalLink(next, segments[0], segments[1], parentSchemaURL, parentSchemaDependencies));\n return;\n }\n else {\n if (seenRefs.indexOf(ref) === -1) {\n merge(next, parentSchema, parentSchemaURL, segments[1]); // can set next.$ref again, use seenRefs to avoid circle\n seenRefs.push(ref);\n }\n }\n }\n collectEntries(next.items, next.additionalItems, next.additionalProperties, next.not, next.contains, next.propertyNames, next.if, next.then, next.else);\n collectMapEntries(next.definitions, next.properties, next.patternProperties, next.dependencies);\n collectArrayEntries(next.anyOf, next.allOf, next.oneOf, next.items);\n };\n while (toWalk.length) {\n var next = toWalk.pop();\n if (seen.indexOf(next) >= 0) {\n continue;\n }\n seen.push(next);\n handleRef(next);\n }\n return _this.promise.all(openPromises);\n };\n return resolveRefs(schema, schema, schemaURL, dependencies).then(function (_) { return new ResolvedSchema(schema, resolveErrors); });\n };\n JSONSchemaService.prototype.getSchemaForResource = function (resource, document) {\n // first use $schema if present\n if (document && document.root && document.root.type === 'object') {\n var schemaProperties = document.root.properties.filter(function (p) { return (p.keyNode.value === '$schema') && p.valueNode && p.valueNode.type === 'string'; });\n if (schemaProperties.length > 0) {\n var valueNode = schemaProperties[0].valueNode;\n if (valueNode && valueNode.type === 'string') {\n var schemeId = Parser.getNodeValue(valueNode);\n if (schemeId && Strings.startsWith(schemeId, '.') && this.contextService) {\n schemeId = this.contextService.resolveRelativePath(schemeId, resource);\n }\n if (schemeId) {\n var id = normalizeId(schemeId);\n return this.getOrAddSchemaHandle(id).getResolvedSchema();\n }\n }\n }\n }\n if (this.cachedSchemaForResource && this.cachedSchemaForResource.resource === resource) {\n return this.cachedSchemaForResource.resolvedSchema;\n }\n var seen = Object.create(null);\n var schemas = [];\n for (var _i = 0, _a = this.filePatternAssociations; _i < _a.length; _i++) {\n var entry = _a[_i];\n if (entry.matchesPattern(resource)) {\n for (var _b = 0, _c = entry.getURIs(); _b < _c.length; _b++) {\n var schemaId = _c[_b];\n if (!seen[schemaId]) {\n schemas.push(schemaId);\n seen[schemaId] = true;\n }\n }\n }\n }\n var resolvedSchema = schemas.length > 0 ? this.createCombinedSchema(resource, schemas).getResolvedSchema() : this.promise.resolve(undefined);\n this.cachedSchemaForResource = { resource: resource, resolvedSchema: resolvedSchema };\n return resolvedSchema;\n };\n JSONSchemaService.prototype.createCombinedSchema = function (resource, schemaIds) {\n if (schemaIds.length === 1) {\n return this.getOrAddSchemaHandle(schemaIds[0]);\n }\n else {\n var combinedSchemaId = 'schemaservice://combinedSchema/' + encodeURIComponent(resource);\n var combinedSchema = {\n allOf: schemaIds.map(function (schemaId) { return ({ $ref: schemaId }); })\n };\n return this.addSchemaHandle(combinedSchemaId, combinedSchema);\n }\n };\n JSONSchemaService.prototype.getMatchingSchemas = function (document, jsonDocument, schema) {\n if (schema) {\n var id = schema.id || ('schemaservice://untitled/matchingSchemas/' + idCounter++);\n return this.resolveSchemaContent(new UnresolvedSchema(schema), id, {}).then(function (resolvedSchema) {\n return jsonDocument.getMatchingSchemas(resolvedSchema.schema).filter(function (s) { return !s.inverted; });\n });\n }\n return this.getSchemaForResource(document.uri, jsonDocument).then(function (schema) {\n if (schema) {\n return jsonDocument.getMatchingSchemas(schema.schema).filter(function (s) { return !s.inverted; });\n }\n return [];\n });\n };\n return JSONSchemaService;\n}());\nexport { JSONSchemaService };\nvar idCounter = 0;\nfunction normalizeId(id) {\n // remove trailing '#', normalize drive capitalization\n try {\n return URI.parse(id).toString();\n }\n catch (e) {\n return id;\n }\n}\nfunction toDisplayString(url) {\n try {\n var uri = URI.parse(url);\n if (uri.scheme === 'file') {\n return uri.fsPath;\n }\n }\n catch (e) {\n // ignore\n }\n return url;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { Range, SelectionRange } from '../jsonLanguageTypes.js';\nimport { createScanner } from '../../jsonc-parser/main.js';\nexport function getSelectionRanges(document, positions, doc) {\n function getSelectionRange(position) {\n var offset = document.offsetAt(position);\n var node = doc.getNodeFromOffset(offset, true);\n var result = [];\n while (node) {\n switch (node.type) {\n case 'string':\n case 'object':\n case 'array':\n // range without \", [ or {\n var cStart = node.offset + 1, cEnd = node.offset + node.length - 1;\n if (cStart < cEnd && offset >= cStart && offset <= cEnd) {\n result.push(newRange(cStart, cEnd));\n }\n result.push(newRange(node.offset, node.offset + node.length));\n break;\n case 'number':\n case 'boolean':\n case 'null':\n case 'property':\n result.push(newRange(node.offset, node.offset + node.length));\n break;\n }\n if (node.type === 'property' || node.parent && node.parent.type === 'array') {\n var afterCommaOffset = getOffsetAfterNextToken(node.offset + node.length, 5 /* CommaToken */);\n if (afterCommaOffset !== -1) {\n result.push(newRange(node.offset, afterCommaOffset));\n }\n }\n node = node.parent;\n }\n var current = undefined;\n for (var index = result.length - 1; index >= 0; index--) {\n current = SelectionRange.create(result[index], current);\n }\n if (!current) {\n current = SelectionRange.create(Range.create(position, position));\n }\n return current;\n }\n function newRange(start, end) {\n return Range.create(document.positionAt(start), document.positionAt(end));\n }\n var scanner = createScanner(document.getText(), true);\n function getOffsetAfterNextToken(offset, expectedToken) {\n scanner.setPosition(offset);\n var token = scanner.scan();\n if (token === expectedToken) {\n return scanner.getTokenOffset() + scanner.getTokenLength();\n }\n return -1;\n }\n return positions.map(getSelectionRange);\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { UnresolvedSchema } from './jsonSchemaService.js';\nimport { ErrorCode, Diagnostic, DiagnosticSeverity, Range } from '../jsonLanguageTypes.js';\nimport * as nls from '../../../fillers/vscode-nls.js';\nimport { isBoolean } from '../utils/objects.js';\nvar localize = nls.loadMessageBundle();\nvar JSONValidation = /** @class */ (function () {\n function JSONValidation(jsonSchemaService, promiseConstructor) {\n this.jsonSchemaService = jsonSchemaService;\n this.promise = promiseConstructor;\n this.validationEnabled = true;\n }\n JSONValidation.prototype.configure = function (raw) {\n if (raw) {\n this.validationEnabled = raw.validate;\n this.commentSeverity = raw.allowComments ? undefined : DiagnosticSeverity.Error;\n }\n };\n JSONValidation.prototype.doValidation = function (textDocument, jsonDocument, documentSettings, schema) {\n var _this = this;\n if (!this.validationEnabled) {\n return this.promise.resolve([]);\n }\n var diagnostics = [];\n var added = {};\n var addProblem = function (problem) {\n // remove duplicated messages\n var signature = problem.range.start.line + ' ' + problem.range.start.character + ' ' + problem.message;\n if (!added[signature]) {\n added[signature] = true;\n diagnostics.push(problem);\n }\n };\n var getDiagnostics = function (schema) {\n var trailingCommaSeverity = documentSettings ? toDiagnosticSeverity(documentSettings.trailingCommas) : DiagnosticSeverity.Error;\n var commentSeverity = documentSettings ? toDiagnosticSeverity(documentSettings.comments) : _this.commentSeverity;\n if (schema) {\n if (schema.errors.length && jsonDocument.root) {\n var astRoot = jsonDocument.root;\n var property = astRoot.type === 'object' ? astRoot.properties[0] : undefined;\n if (property && property.keyNode.value === '$schema') {\n var node = property.valueNode || property;\n var range = Range.create(textDocument.positionAt(node.offset), textDocument.positionAt(node.offset + node.length));\n addProblem(Diagnostic.create(range, schema.errors[0], DiagnosticSeverity.Warning, ErrorCode.SchemaResolveError));\n }\n else {\n var range = Range.create(textDocument.positionAt(astRoot.offset), textDocument.positionAt(astRoot.offset + 1));\n addProblem(Diagnostic.create(range, schema.errors[0], DiagnosticSeverity.Warning, ErrorCode.SchemaResolveError));\n }\n }\n else {\n var semanticErrors = jsonDocument.validate(textDocument, schema.schema);\n if (semanticErrors) {\n semanticErrors.forEach(addProblem);\n }\n }\n if (schemaAllowsComments(schema.schema)) {\n commentSeverity = undefined;\n }\n if (schemaAllowsTrailingCommas(schema.schema)) {\n trailingCommaSeverity = undefined;\n }\n }\n for (var _i = 0, _a = jsonDocument.syntaxErrors; _i < _a.length; _i++) {\n var p = _a[_i];\n if (p.code === ErrorCode.TrailingComma) {\n if (typeof trailingCommaSeverity !== 'number') {\n continue;\n }\n p.severity = trailingCommaSeverity;\n }\n addProblem(p);\n }\n if (typeof commentSeverity === 'number') {\n var message_1 = localize('InvalidCommentToken', 'Comments are not permitted in JSON.');\n jsonDocument.comments.forEach(function (c) {\n addProblem(Diagnostic.create(c, message_1, commentSeverity, ErrorCode.CommentNotPermitted));\n });\n }\n return diagnostics;\n };\n if (schema) {\n var id = schema.id || ('schemaservice://untitled/' + idCounter++);\n return this.jsonSchemaService.resolveSchemaContent(new UnresolvedSchema(schema), id, {}).then(function (resolvedSchema) {\n return getDiagnostics(resolvedSchema);\n });\n }\n return this.jsonSchemaService.getSchemaForResource(textDocument.uri, jsonDocument).then(function (schema) {\n return getDiagnostics(schema);\n });\n };\n return JSONValidation;\n}());\nexport { JSONValidation };\nvar idCounter = 0;\nfunction schemaAllowsComments(schemaRef) {\n if (schemaRef && typeof schemaRef === 'object') {\n if (isBoolean(schemaRef.allowComments)) {\n return schemaRef.allowComments;\n }\n if (schemaRef.allOf) {\n for (var _i = 0, _a = schemaRef.allOf; _i < _a.length; _i++) {\n var schema = _a[_i];\n var allow = schemaAllowsComments(schema);\n if (isBoolean(allow)) {\n return allow;\n }\n }\n }\n }\n return undefined;\n}\nfunction schemaAllowsTrailingCommas(schemaRef) {\n if (schemaRef && typeof schemaRef === 'object') {\n if (isBoolean(schemaRef.allowTrailingCommas)) {\n return schemaRef.allowTrailingCommas;\n }\n var deprSchemaRef = schemaRef;\n if (isBoolean(deprSchemaRef['allowsTrailingCommas'])) { // deprecated\n return deprSchemaRef['allowsTrailingCommas'];\n }\n if (schemaRef.allOf) {\n for (var _i = 0, _a = schemaRef.allOf; _i < _a.length; _i++) {\n var schema = _a[_i];\n var allow = schemaAllowsTrailingCommas(schema);\n if (isBoolean(allow)) {\n return allow;\n }\n }\n }\n }\n return undefined;\n}\nfunction toDiagnosticSeverity(severityLevel) {\n switch (severityLevel) {\n case 'error': return DiagnosticSeverity.Error;\n case 'warning': return DiagnosticSeverity.Warning;\n case 'ignore': return undefined;\n }\n return undefined;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar Digit0 = 48;\nvar Digit9 = 57;\nvar A = 65;\nvar a = 97;\nvar f = 102;\nexport function hexDigit(charCode) {\n if (charCode < Digit0) {\n return 0;\n }\n if (charCode <= Digit9) {\n return charCode - Digit0;\n }\n if (charCode < a) {\n charCode += (a - A);\n }\n if (charCode >= a && charCode <= f) {\n return charCode - a + 10;\n }\n return 0;\n}\nexport function colorFromHex(text) {\n if (text[0] !== '#') {\n return undefined;\n }\n switch (text.length) {\n case 4:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x11) / 255.0,\n green: (hexDigit(text.charCodeAt(2)) * 0x11) / 255.0,\n blue: (hexDigit(text.charCodeAt(3)) * 0x11) / 255.0,\n alpha: 1\n };\n case 5:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x11) / 255.0,\n green: (hexDigit(text.charCodeAt(2)) * 0x11) / 255.0,\n blue: (hexDigit(text.charCodeAt(3)) * 0x11) / 255.0,\n alpha: (hexDigit(text.charCodeAt(4)) * 0x11) / 255.0,\n };\n case 7:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x10 + hexDigit(text.charCodeAt(2))) / 255.0,\n green: (hexDigit(text.charCodeAt(3)) * 0x10 + hexDigit(text.charCodeAt(4))) / 255.0,\n blue: (hexDigit(text.charCodeAt(5)) * 0x10 + hexDigit(text.charCodeAt(6))) / 255.0,\n alpha: 1\n };\n case 9:\n return {\n red: (hexDigit(text.charCodeAt(1)) * 0x10 + hexDigit(text.charCodeAt(2))) / 255.0,\n green: (hexDigit(text.charCodeAt(3)) * 0x10 + hexDigit(text.charCodeAt(4))) / 255.0,\n blue: (hexDigit(text.charCodeAt(5)) * 0x10 + hexDigit(text.charCodeAt(6))) / 255.0,\n alpha: (hexDigit(text.charCodeAt(7)) * 0x10 + hexDigit(text.charCodeAt(8))) / 255.0\n };\n }\n return undefined;\n}\nexport function colorFrom256RGB(red, green, blue, alpha) {\n if (alpha === void 0) { alpha = 1.0; }\n return {\n red: red / 255.0,\n green: green / 255.0,\n blue: blue / 255.0,\n alpha: alpha\n };\n}\n","/*---------------------------------------------------------------------------------------------\n* Copyright (c) Microsoft Corporation. All rights reserved.\n* Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\nexport function stringifyObject(obj, indent, stringifyLiteral) {\n if (obj !== null && typeof obj === 'object') {\n var newIndent = indent + '\\t';\n if (Array.isArray(obj)) {\n if (obj.length === 0) {\n return '[]';\n }\n var result = '[\\n';\n for (var i = 0; i < obj.length; i++) {\n result += newIndent + stringifyObject(obj[i], newIndent, stringifyLiteral);\n if (i < obj.length - 1) {\n result += ',';\n }\n result += '\\n';\n }\n result += indent + ']';\n return result;\n }\n else {\n var keys = Object.keys(obj);\n if (keys.length === 0) {\n return '{}';\n }\n var result = '{\\n';\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n result += newIndent + JSON.stringify(key) + ': ' + stringifyObject(obj[key], newIndent, stringifyLiteral);\n if (i < keys.length - 1) {\n result += ',';\n }\n result += '\\n';\n }\n result += indent + '}';\n return result;\n }\n }\n return stringifyLiteral(obj);\n}\n","/*---------------------------------------------------------------------------------------------\n* Copyright (c) Microsoft Corporation. All rights reserved.\n* Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\nexport function equals(one, other) {\n if (one === other) {\n return true;\n }\n if (one === null || one === undefined || other === null || other === undefined) {\n return false;\n }\n if (typeof one !== typeof other) {\n return false;\n }\n if (typeof one !== 'object') {\n return false;\n }\n if ((Array.isArray(one)) !== (Array.isArray(other))) {\n return false;\n }\n var i, key;\n if (Array.isArray(one)) {\n if (one.length !== other.length) {\n return false;\n }\n for (i = 0; i < one.length; i++) {\n if (!equals(one[i], other[i])) {\n return false;\n }\n }\n }\n else {\n var oneKeys = [];\n for (key in one) {\n oneKeys.push(key);\n }\n oneKeys.sort();\n var otherKeys = [];\n for (key in other) {\n otherKeys.push(key);\n }\n otherKeys.sort();\n if (!equals(oneKeys, otherKeys)) {\n return false;\n }\n for (i = 0; i < oneKeys.length; i++) {\n if (!equals(one[oneKeys[i]], other[oneKeys[i]])) {\n return false;\n }\n }\n }\n return true;\n}\nexport function isNumber(val) {\n return typeof val === 'number';\n}\nexport function isDefined(val) {\n return typeof val !== 'undefined';\n}\nexport function isBoolean(val) {\n return typeof val === 'boolean';\n}\nexport function isString(val) {\n return typeof val === 'string';\n}\n","/*---------------------------------------------------------------------------------------------\n* Copyright (c) Microsoft Corporation. All rights reserved.\n* Licensed under the MIT License. See License.txt in the project root for license information.\n*--------------------------------------------------------------------------------------------*/\nexport function startsWith(haystack, needle) {\n if (haystack.length < needle.length) {\n return false;\n }\n for (var i = 0; i < needle.length; i++) {\n if (haystack[i] !== needle[i]) {\n return false;\n }\n }\n return true;\n}\n/**\n * Determines if haystack ends with needle.\n */\nexport function endsWith(haystack, needle) {\n var diff = haystack.length - needle.length;\n if (diff > 0) {\n return haystack.lastIndexOf(needle) === diff;\n }\n else if (diff === 0) {\n return haystack === needle;\n }\n else {\n return false;\n }\n}\nexport function convertSimple2RegExpPattern(pattern) {\n return pattern.replace(/[\\-\\\\\\{\\}\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&').replace(/[\\*]/g, '.*');\n}\nexport function repeat(value, count) {\n var s = '';\n while (count > 0) {\n if ((count & 1) === 1) {\n s += value;\n }\n value += value;\n count = count >>> 1;\n }\n return s;\n}\n","/* --------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n * ------------------------------------------------------------------------------------------ */\n'use strict';\nvar FullTextDocument = /** @class */ (function () {\n function FullTextDocument(uri, languageId, version, content) {\n this._uri = uri;\n this._languageId = languageId;\n this._version = version;\n this._content = content;\n this._lineOffsets = undefined;\n }\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\n get: function () {\n return this._uri;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\n get: function () {\n return this._languageId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\n get: function () {\n return this._version;\n },\n enumerable: true,\n configurable: true\n });\n FullTextDocument.prototype.getText = function (range) {\n if (range) {\n var start = this.offsetAt(range.start);\n var end = this.offsetAt(range.end);\n return this._content.substring(start, end);\n }\n return this._content;\n };\n FullTextDocument.prototype.update = function (changes, version) {\n for (var _i = 0, changes_1 = changes; _i < changes_1.length; _i++) {\n var change = changes_1[_i];\n if (FullTextDocument.isIncremental(change)) {\n // makes sure start is before end\n var range = getWellformedRange(change.range);\n // update content\n var startOffset = this.offsetAt(range.start);\n var endOffset = this.offsetAt(range.end);\n this._content = this._content.substring(0, startOffset) + change.text + this._content.substring(endOffset, this._content.length);\n // update the offsets\n var startLine = Math.max(range.start.line, 0);\n var endLine = Math.max(range.end.line, 0);\n var lineOffsets = this._lineOffsets;\n var addedLineOffsets = computeLineOffsets(change.text, false, startOffset);\n if (endLine - startLine === addedLineOffsets.length) {\n for (var i = 0, len = addedLineOffsets.length; i < len; i++) {\n lineOffsets[i + startLine + 1] = addedLineOffsets[i];\n }\n }\n else {\n if (addedLineOffsets.length < 10000) {\n lineOffsets.splice.apply(lineOffsets, [startLine + 1, endLine - startLine].concat(addedLineOffsets));\n }\n else { // avoid too many arguments for splice\n this._lineOffsets = lineOffsets = lineOffsets.slice(0, startLine + 1).concat(addedLineOffsets, lineOffsets.slice(endLine + 1));\n }\n }\n var diff = change.text.length - (endOffset - startOffset);\n if (diff !== 0) {\n for (var i = startLine + 1 + addedLineOffsets.length, len = lineOffsets.length; i < len; i++) {\n lineOffsets[i] = lineOffsets[i] + diff;\n }\n }\n }\n else if (FullTextDocument.isFull(change)) {\n this._content = change.text;\n this._lineOffsets = undefined;\n }\n else {\n throw new Error('Unknown change event received');\n }\n }\n this._version = version;\n };\n FullTextDocument.prototype.getLineOffsets = function () {\n if (this._lineOffsets === undefined) {\n this._lineOffsets = computeLineOffsets(this._content, true);\n }\n return this._lineOffsets;\n };\n FullTextDocument.prototype.positionAt = function (offset) {\n offset = Math.max(Math.min(offset, this._content.length), 0);\n var lineOffsets = this.getLineOffsets();\n var low = 0, high = lineOffsets.length;\n if (high === 0) {\n return { line: 0, character: offset };\n }\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (lineOffsets[mid] > offset) {\n high = mid;\n }\n else {\n low = mid + 1;\n }\n }\n // low is the least x for which the line offset is larger than the current offset\n // or array.length if no line offset is larger than the current offset\n var line = low - 1;\n return { line: line, character: offset - lineOffsets[line] };\n };\n FullTextDocument.prototype.offsetAt = function (position) {\n var lineOffsets = this.getLineOffsets();\n if (position.line >= lineOffsets.length) {\n return this._content.length;\n }\n else if (position.line < 0) {\n return 0;\n }\n var lineOffset = lineOffsets[position.line];\n var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\n };\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\n get: function () {\n return this.getLineOffsets().length;\n },\n enumerable: true,\n configurable: true\n });\n FullTextDocument.isIncremental = function (event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range !== undefined &&\n (candidate.rangeLength === undefined || typeof candidate.rangeLength === 'number');\n };\n FullTextDocument.isFull = function (event) {\n var candidate = event;\n return candidate !== undefined && candidate !== null &&\n typeof candidate.text === 'string' && candidate.range === undefined && candidate.rangeLength === undefined;\n };\n return FullTextDocument;\n}());\nexport var TextDocument;\n(function (TextDocument) {\n /**\n * Creates a new text document.\n *\n * @param uri The document's uri.\n * @param languageId The document's language Id.\n * @param version The document's initial version number.\n * @param content The document's content.\n */\n function create(uri, languageId, version, content) {\n return new FullTextDocument(uri, languageId, version, content);\n }\n TextDocument.create = create;\n /**\n * Updates a TextDocument by modifing its content.\n *\n * @param document the document to update. Only documents created by TextDocument.create are valid inputs.\n * @param changes the changes to apply to the document.\n * @returns The updated TextDocument. Note: That's the same document instance passed in as first parameter.\n *\n */\n function update(document, changes, version) {\n if (document instanceof FullTextDocument) {\n document.update(changes, version);\n return document;\n }\n else {\n throw new Error('TextDocument.update: document must be created by TextDocument.create');\n }\n }\n TextDocument.update = update;\n function applyEdits(document, edits) {\n var text = document.getText();\n var sortedEdits = mergeSort(edits.map(getWellformedEdit), function (a, b) {\n var diff = a.range.start.line - b.range.start.line;\n if (diff === 0) {\n return a.range.start.character - b.range.start.character;\n }\n return diff;\n });\n var lastModifiedOffset = 0;\n var spans = [];\n for (var _i = 0, sortedEdits_1 = sortedEdits; _i < sortedEdits_1.length; _i++) {\n var e = sortedEdits_1[_i];\n var startOffset = document.offsetAt(e.range.start);\n if (startOffset < lastModifiedOffset) {\n throw new Error('Overlapping edit');\n }\n else if (startOffset > lastModifiedOffset) {\n spans.push(text.substring(lastModifiedOffset, startOffset));\n }\n if (e.newText.length) {\n spans.push(e.newText);\n }\n lastModifiedOffset = document.offsetAt(e.range.end);\n }\n spans.push(text.substr(lastModifiedOffset));\n return spans.join('');\n }\n TextDocument.applyEdits = applyEdits;\n})(TextDocument || (TextDocument = {}));\nfunction mergeSort(data, compare) {\n if (data.length <= 1) {\n // sorted\n return data;\n }\n var p = (data.length / 2) | 0;\n var left = data.slice(0, p);\n var right = data.slice(p);\n mergeSort(left, compare);\n mergeSort(right, compare);\n var leftIdx = 0;\n var rightIdx = 0;\n var i = 0;\n while (leftIdx < left.length && rightIdx < right.length) {\n var ret = compare(left[leftIdx], right[rightIdx]);\n if (ret <= 0) {\n // smaller_equal -> take left to preserve order\n data[i++] = left[leftIdx++];\n }\n else {\n // greater -> take right\n data[i++] = right[rightIdx++];\n }\n }\n while (leftIdx < left.length) {\n data[i++] = left[leftIdx++];\n }\n while (rightIdx < right.length) {\n data[i++] = right[rightIdx++];\n }\n return data;\n}\nfunction computeLineOffsets(text, isAtLineStart, textOffset) {\n if (textOffset === void 0) { textOffset = 0; }\n var result = isAtLineStart ? [textOffset] : [];\n for (var i = 0; i < text.length; i++) {\n var ch = text.charCodeAt(i);\n if (ch === 13 /* CarriageReturn */ || ch === 10 /* LineFeed */) {\n if (ch === 13 /* CarriageReturn */ && i + 1 < text.length && text.charCodeAt(i + 1) === 10 /* LineFeed */) {\n i++;\n }\n result.push(textOffset + i + 1);\n }\n }\n return result;\n}\nfunction getWellformedRange(range) {\n var start = range.start;\n var end = range.end;\n if (start.line > end.line || (start.line === end.line && start.character > end.character)) {\n return { start: end, end: start };\n }\n return range;\n}\nfunction getWellformedEdit(textEdit) {\n var range = getWellformedRange(textEdit.range);\n if (range !== textEdit.range) {\n return { newText: textEdit.newText, range: range };\n }\n return textEdit;\n}\n","/* --------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n * ------------------------------------------------------------------------------------------ */\r\n'use strict';\r\n/**\r\n * The Position namespace provides helper functions to work with\r\n * [Position](#Position) literals.\r\n */\r\nexport var Position;\r\n(function (Position) {\r\n /**\r\n * Creates a new Position literal from the given line and character.\r\n * @param line The position's line.\r\n * @param character The position's character.\r\n */\r\n function create(line, character) {\r\n return { line: line, character: character };\r\n }\r\n Position.create = create;\r\n /**\r\n * Checks whether the given liternal conforms to the [Position](#Position) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(candidate) && Is.number(candidate.line) && Is.number(candidate.character);\r\n }\r\n Position.is = is;\r\n})(Position || (Position = {}));\r\n/**\r\n * The Range namespace provides helper functions to work with\r\n * [Range](#Range) literals.\r\n */\r\nexport var Range;\r\n(function (Range) {\r\n function create(one, two, three, four) {\r\n if (Is.number(one) && Is.number(two) && Is.number(three) && Is.number(four)) {\r\n return { start: Position.create(one, two), end: Position.create(three, four) };\r\n }\r\n else if (Position.is(one) && Position.is(two)) {\r\n return { start: one, end: two };\r\n }\r\n else {\r\n throw new Error(\"Range#create called with invalid arguments[\" + one + \", \" + two + \", \" + three + \", \" + four + \"]\");\r\n }\r\n }\r\n Range.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Range](#Range) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(candidate) && Position.is(candidate.start) && Position.is(candidate.end);\r\n }\r\n Range.is = is;\r\n})(Range || (Range = {}));\r\n/**\r\n * The Location namespace provides helper functions to work with\r\n * [Location](#Location) literals.\r\n */\r\nexport var Location;\r\n(function (Location) {\r\n /**\r\n * Creates a Location literal.\r\n * @param uri The location's uri.\r\n * @param range The location's range.\r\n */\r\n function create(uri, range) {\r\n return { uri: uri, range: range };\r\n }\r\n Location.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Location](#Location) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.string(candidate.uri) || Is.undefined(candidate.uri));\r\n }\r\n Location.is = is;\r\n})(Location || (Location = {}));\r\n/**\r\n * The LocationLink namespace provides helper functions to work with\r\n * [LocationLink](#LocationLink) literals.\r\n */\r\nexport var LocationLink;\r\n(function (LocationLink) {\r\n /**\r\n * Creates a LocationLink literal.\r\n * @param targetUri The definition's uri.\r\n * @param targetRange The full range of the definition.\r\n * @param targetSelectionRange The span of the symbol definition at the target.\r\n * @param originSelectionRange The span of the symbol being defined in the originating source file.\r\n */\r\n function create(targetUri, targetRange, targetSelectionRange, originSelectionRange) {\r\n return { targetUri: targetUri, targetRange: targetRange, targetSelectionRange: targetSelectionRange, originSelectionRange: originSelectionRange };\r\n }\r\n LocationLink.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [LocationLink](#LocationLink) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.targetRange) && Is.string(candidate.targetUri)\r\n && (Range.is(candidate.targetSelectionRange) || Is.undefined(candidate.targetSelectionRange))\r\n && (Range.is(candidate.originSelectionRange) || Is.undefined(candidate.originSelectionRange));\r\n }\r\n LocationLink.is = is;\r\n})(LocationLink || (LocationLink = {}));\r\n/**\r\n * The Color namespace provides helper functions to work with\r\n * [Color](#Color) literals.\r\n */\r\nexport var Color;\r\n(function (Color) {\r\n /**\r\n * Creates a new Color literal.\r\n */\r\n function create(red, green, blue, alpha) {\r\n return {\r\n red: red,\r\n green: green,\r\n blue: blue,\r\n alpha: alpha,\r\n };\r\n }\r\n Color.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Color](#Color) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.number(candidate.red)\r\n && Is.number(candidate.green)\r\n && Is.number(candidate.blue)\r\n && Is.number(candidate.alpha);\r\n }\r\n Color.is = is;\r\n})(Color || (Color = {}));\r\n/**\r\n * The ColorInformation namespace provides helper functions to work with\r\n * [ColorInformation](#ColorInformation) literals.\r\n */\r\nexport var ColorInformation;\r\n(function (ColorInformation) {\r\n /**\r\n * Creates a new ColorInformation literal.\r\n */\r\n function create(range, color) {\r\n return {\r\n range: range,\r\n color: color,\r\n };\r\n }\r\n ColorInformation.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Range.is(candidate.range) && Color.is(candidate.color);\r\n }\r\n ColorInformation.is = is;\r\n})(ColorInformation || (ColorInformation = {}));\r\n/**\r\n * The Color namespace provides helper functions to work with\r\n * [ColorPresentation](#ColorPresentation) literals.\r\n */\r\nexport var ColorPresentation;\r\n(function (ColorPresentation) {\r\n /**\r\n * Creates a new ColorInformation literal.\r\n */\r\n function create(label, textEdit, additionalTextEdits) {\r\n return {\r\n label: label,\r\n textEdit: textEdit,\r\n additionalTextEdits: additionalTextEdits,\r\n };\r\n }\r\n ColorPresentation.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [ColorInformation](#ColorInformation) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.string(candidate.label)\r\n && (Is.undefined(candidate.textEdit) || TextEdit.is(candidate))\r\n && (Is.undefined(candidate.additionalTextEdits) || Is.typedArray(candidate.additionalTextEdits, TextEdit.is));\r\n }\r\n ColorPresentation.is = is;\r\n})(ColorPresentation || (ColorPresentation = {}));\r\n/**\r\n * Enum of known range kinds\r\n */\r\nexport var FoldingRangeKind;\r\n(function (FoldingRangeKind) {\r\n /**\r\n * Folding range for a comment\r\n */\r\n FoldingRangeKind[\"Comment\"] = \"comment\";\r\n /**\r\n * Folding range for a imports or includes\r\n */\r\n FoldingRangeKind[\"Imports\"] = \"imports\";\r\n /**\r\n * Folding range for a region (e.g. `#region`)\r\n */\r\n FoldingRangeKind[\"Region\"] = \"region\";\r\n})(FoldingRangeKind || (FoldingRangeKind = {}));\r\n/**\r\n * The folding range namespace provides helper functions to work with\r\n * [FoldingRange](#FoldingRange) literals.\r\n */\r\nexport var FoldingRange;\r\n(function (FoldingRange) {\r\n /**\r\n * Creates a new FoldingRange literal.\r\n */\r\n function create(startLine, endLine, startCharacter, endCharacter, kind) {\r\n var result = {\r\n startLine: startLine,\r\n endLine: endLine\r\n };\r\n if (Is.defined(startCharacter)) {\r\n result.startCharacter = startCharacter;\r\n }\r\n if (Is.defined(endCharacter)) {\r\n result.endCharacter = endCharacter;\r\n }\r\n if (Is.defined(kind)) {\r\n result.kind = kind;\r\n }\r\n return result;\r\n }\r\n FoldingRange.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [FoldingRange](#FoldingRange) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.number(candidate.startLine) && Is.number(candidate.startLine)\r\n && (Is.undefined(candidate.startCharacter) || Is.number(candidate.startCharacter))\r\n && (Is.undefined(candidate.endCharacter) || Is.number(candidate.endCharacter))\r\n && (Is.undefined(candidate.kind) || Is.string(candidate.kind));\r\n }\r\n FoldingRange.is = is;\r\n})(FoldingRange || (FoldingRange = {}));\r\n/**\r\n * The DiagnosticRelatedInformation namespace provides helper functions to work with\r\n * [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) literals.\r\n */\r\nexport var DiagnosticRelatedInformation;\r\n(function (DiagnosticRelatedInformation) {\r\n /**\r\n * Creates a new DiagnosticRelatedInformation literal.\r\n */\r\n function create(location, message) {\r\n return {\r\n location: location,\r\n message: message\r\n };\r\n }\r\n DiagnosticRelatedInformation.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [DiagnosticRelatedInformation](#DiagnosticRelatedInformation) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Location.is(candidate.location) && Is.string(candidate.message);\r\n }\r\n DiagnosticRelatedInformation.is = is;\r\n})(DiagnosticRelatedInformation || (DiagnosticRelatedInformation = {}));\r\n/**\r\n * The diagnostic's severity.\r\n */\r\nexport var DiagnosticSeverity;\r\n(function (DiagnosticSeverity) {\r\n /**\r\n * Reports an error.\r\n */\r\n DiagnosticSeverity.Error = 1;\r\n /**\r\n * Reports a warning.\r\n */\r\n DiagnosticSeverity.Warning = 2;\r\n /**\r\n * Reports an information.\r\n */\r\n DiagnosticSeverity.Information = 3;\r\n /**\r\n * Reports a hint.\r\n */\r\n DiagnosticSeverity.Hint = 4;\r\n})(DiagnosticSeverity || (DiagnosticSeverity = {}));\r\n/**\r\n * The diagnostic tags.\r\n *\r\n * @since 3.15.0\r\n */\r\nexport var DiagnosticTag;\r\n(function (DiagnosticTag) {\r\n /**\r\n * Unused or unnecessary code.\r\n *\r\n * Clients are allowed to render diagnostics with this tag faded out instead of having\r\n * an error squiggle.\r\n */\r\n DiagnosticTag.Unnecessary = 1;\r\n /**\r\n * Deprecated or obsolete code.\r\n *\r\n * Clients are allowed to rendered diagnostics with this tag strike through.\r\n */\r\n DiagnosticTag.Deprecated = 2;\r\n})(DiagnosticTag || (DiagnosticTag = {}));\r\n/**\r\n * The Diagnostic namespace provides helper functions to work with\r\n * [Diagnostic](#Diagnostic) literals.\r\n */\r\nexport var Diagnostic;\r\n(function (Diagnostic) {\r\n /**\r\n * Creates a new Diagnostic literal.\r\n */\r\n function create(range, message, severity, code, source, relatedInformation) {\r\n var result = { range: range, message: message };\r\n if (Is.defined(severity)) {\r\n result.severity = severity;\r\n }\r\n if (Is.defined(code)) {\r\n result.code = code;\r\n }\r\n if (Is.defined(source)) {\r\n result.source = source;\r\n }\r\n if (Is.defined(relatedInformation)) {\r\n result.relatedInformation = relatedInformation;\r\n }\r\n return result;\r\n }\r\n Diagnostic.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Diagnostic](#Diagnostic) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate)\r\n && Range.is(candidate.range)\r\n && Is.string(candidate.message)\r\n && (Is.number(candidate.severity) || Is.undefined(candidate.severity))\r\n && (Is.number(candidate.code) || Is.string(candidate.code) || Is.undefined(candidate.code))\r\n && (Is.string(candidate.source) || Is.undefined(candidate.source))\r\n && (Is.undefined(candidate.relatedInformation) || Is.typedArray(candidate.relatedInformation, DiagnosticRelatedInformation.is));\r\n }\r\n Diagnostic.is = is;\r\n})(Diagnostic || (Diagnostic = {}));\r\n/**\r\n * The Command namespace provides helper functions to work with\r\n * [Command](#Command) literals.\r\n */\r\nexport var Command;\r\n(function (Command) {\r\n /**\r\n * Creates a new Command literal.\r\n */\r\n function create(title, command) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n var result = { title: title, command: command };\r\n if (Is.defined(args) && args.length > 0) {\r\n result.arguments = args;\r\n }\r\n return result;\r\n }\r\n Command.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [Command](#Command) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.title) && Is.string(candidate.command);\r\n }\r\n Command.is = is;\r\n})(Command || (Command = {}));\r\n/**\r\n * The TextEdit namespace provides helper function to create replace,\r\n * insert and delete edits more easily.\r\n */\r\nexport var TextEdit;\r\n(function (TextEdit) {\r\n /**\r\n * Creates a replace text edit.\r\n * @param range The range of text to be replaced.\r\n * @param newText The new text.\r\n */\r\n function replace(range, newText) {\r\n return { range: range, newText: newText };\r\n }\r\n TextEdit.replace = replace;\r\n /**\r\n * Creates a insert text edit.\r\n * @param position The position to insert the text at.\r\n * @param newText The text to be inserted.\r\n */\r\n function insert(position, newText) {\r\n return { range: { start: position, end: position }, newText: newText };\r\n }\r\n TextEdit.insert = insert;\r\n /**\r\n * Creates a delete text edit.\r\n * @param range The range of text to be deleted.\r\n */\r\n function del(range) {\r\n return { range: range, newText: '' };\r\n }\r\n TextEdit.del = del;\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(candidate)\r\n && Is.string(candidate.newText)\r\n && Range.is(candidate.range);\r\n }\r\n TextEdit.is = is;\r\n})(TextEdit || (TextEdit = {}));\r\n/**\r\n * The TextDocumentEdit namespace provides helper function to create\r\n * an edit that manipulates a text document.\r\n */\r\nexport var TextDocumentEdit;\r\n(function (TextDocumentEdit) {\r\n /**\r\n * Creates a new `TextDocumentEdit`\r\n */\r\n function create(textDocument, edits) {\r\n return { textDocument: textDocument, edits: edits };\r\n }\r\n TextDocumentEdit.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate)\r\n && VersionedTextDocumentIdentifier.is(candidate.textDocument)\r\n && Array.isArray(candidate.edits);\r\n }\r\n TextDocumentEdit.is = is;\r\n})(TextDocumentEdit || (TextDocumentEdit = {}));\r\nexport var CreateFile;\r\n(function (CreateFile) {\r\n function create(uri, options) {\r\n var result = {\r\n kind: 'create',\r\n uri: uri\r\n };\r\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\r\n result.options = options;\r\n }\r\n return result;\r\n }\r\n CreateFile.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && candidate.kind === 'create' && Is.string(candidate.uri) &&\r\n (candidate.options === void 0 ||\r\n ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))));\r\n }\r\n CreateFile.is = is;\r\n})(CreateFile || (CreateFile = {}));\r\nexport var RenameFile;\r\n(function (RenameFile) {\r\n function create(oldUri, newUri, options) {\r\n var result = {\r\n kind: 'rename',\r\n oldUri: oldUri,\r\n newUri: newUri\r\n };\r\n if (options !== void 0 && (options.overwrite !== void 0 || options.ignoreIfExists !== void 0)) {\r\n result.options = options;\r\n }\r\n return result;\r\n }\r\n RenameFile.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && candidate.kind === 'rename' && Is.string(candidate.oldUri) && Is.string(candidate.newUri) &&\r\n (candidate.options === void 0 ||\r\n ((candidate.options.overwrite === void 0 || Is.boolean(candidate.options.overwrite)) && (candidate.options.ignoreIfExists === void 0 || Is.boolean(candidate.options.ignoreIfExists))));\r\n }\r\n RenameFile.is = is;\r\n})(RenameFile || (RenameFile = {}));\r\nexport var DeleteFile;\r\n(function (DeleteFile) {\r\n function create(uri, options) {\r\n var result = {\r\n kind: 'delete',\r\n uri: uri\r\n };\r\n if (options !== void 0 && (options.recursive !== void 0 || options.ignoreIfNotExists !== void 0)) {\r\n result.options = options;\r\n }\r\n return result;\r\n }\r\n DeleteFile.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && candidate.kind === 'delete' && Is.string(candidate.uri) &&\r\n (candidate.options === void 0 ||\r\n ((candidate.options.recursive === void 0 || Is.boolean(candidate.options.recursive)) && (candidate.options.ignoreIfNotExists === void 0 || Is.boolean(candidate.options.ignoreIfNotExists))));\r\n }\r\n DeleteFile.is = is;\r\n})(DeleteFile || (DeleteFile = {}));\r\nexport var WorkspaceEdit;\r\n(function (WorkspaceEdit) {\r\n function is(value) {\r\n var candidate = value;\r\n return candidate &&\r\n (candidate.changes !== void 0 || candidate.documentChanges !== void 0) &&\r\n (candidate.documentChanges === void 0 || candidate.documentChanges.every(function (change) {\r\n if (Is.string(change.kind)) {\r\n return CreateFile.is(change) || RenameFile.is(change) || DeleteFile.is(change);\r\n }\r\n else {\r\n return TextDocumentEdit.is(change);\r\n }\r\n }));\r\n }\r\n WorkspaceEdit.is = is;\r\n})(WorkspaceEdit || (WorkspaceEdit = {}));\r\nvar TextEditChangeImpl = /** @class */ (function () {\r\n function TextEditChangeImpl(edits) {\r\n this.edits = edits;\r\n }\r\n TextEditChangeImpl.prototype.insert = function (position, newText) {\r\n this.edits.push(TextEdit.insert(position, newText));\r\n };\r\n TextEditChangeImpl.prototype.replace = function (range, newText) {\r\n this.edits.push(TextEdit.replace(range, newText));\r\n };\r\n TextEditChangeImpl.prototype.delete = function (range) {\r\n this.edits.push(TextEdit.del(range));\r\n };\r\n TextEditChangeImpl.prototype.add = function (edit) {\r\n this.edits.push(edit);\r\n };\r\n TextEditChangeImpl.prototype.all = function () {\r\n return this.edits;\r\n };\r\n TextEditChangeImpl.prototype.clear = function () {\r\n this.edits.splice(0, this.edits.length);\r\n };\r\n return TextEditChangeImpl;\r\n}());\r\n/**\r\n * A workspace change helps constructing changes to a workspace.\r\n */\r\nvar WorkspaceChange = /** @class */ (function () {\r\n function WorkspaceChange(workspaceEdit) {\r\n var _this = this;\r\n this._textEditChanges = Object.create(null);\r\n if (workspaceEdit) {\r\n this._workspaceEdit = workspaceEdit;\r\n if (workspaceEdit.documentChanges) {\r\n workspaceEdit.documentChanges.forEach(function (change) {\r\n if (TextDocumentEdit.is(change)) {\r\n var textEditChange = new TextEditChangeImpl(change.edits);\r\n _this._textEditChanges[change.textDocument.uri] = textEditChange;\r\n }\r\n });\r\n }\r\n else if (workspaceEdit.changes) {\r\n Object.keys(workspaceEdit.changes).forEach(function (key) {\r\n var textEditChange = new TextEditChangeImpl(workspaceEdit.changes[key]);\r\n _this._textEditChanges[key] = textEditChange;\r\n });\r\n }\r\n }\r\n }\r\n Object.defineProperty(WorkspaceChange.prototype, \"edit\", {\r\n /**\r\n * Returns the underlying [WorkspaceEdit](#WorkspaceEdit) literal\r\n * use to be returned from a workspace edit operation like rename.\r\n */\r\n get: function () {\r\n return this._workspaceEdit;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n WorkspaceChange.prototype.getTextEditChange = function (key) {\r\n if (VersionedTextDocumentIdentifier.is(key)) {\r\n if (!this._workspaceEdit) {\r\n this._workspaceEdit = {\r\n documentChanges: []\r\n };\r\n }\r\n if (!this._workspaceEdit.documentChanges) {\r\n throw new Error('Workspace edit is not configured for document changes.');\r\n }\r\n var textDocument = key;\r\n var result = this._textEditChanges[textDocument.uri];\r\n if (!result) {\r\n var edits = [];\r\n var textDocumentEdit = {\r\n textDocument: textDocument,\r\n edits: edits\r\n };\r\n this._workspaceEdit.documentChanges.push(textDocumentEdit);\r\n result = new TextEditChangeImpl(edits);\r\n this._textEditChanges[textDocument.uri] = result;\r\n }\r\n return result;\r\n }\r\n else {\r\n if (!this._workspaceEdit) {\r\n this._workspaceEdit = {\r\n changes: Object.create(null)\r\n };\r\n }\r\n if (!this._workspaceEdit.changes) {\r\n throw new Error('Workspace edit is not configured for normal text edit changes.');\r\n }\r\n var result = this._textEditChanges[key];\r\n if (!result) {\r\n var edits = [];\r\n this._workspaceEdit.changes[key] = edits;\r\n result = new TextEditChangeImpl(edits);\r\n this._textEditChanges[key] = result;\r\n }\r\n return result;\r\n }\r\n };\r\n WorkspaceChange.prototype.createFile = function (uri, options) {\r\n this.checkDocumentChanges();\r\n this._workspaceEdit.documentChanges.push(CreateFile.create(uri, options));\r\n };\r\n WorkspaceChange.prototype.renameFile = function (oldUri, newUri, options) {\r\n this.checkDocumentChanges();\r\n this._workspaceEdit.documentChanges.push(RenameFile.create(oldUri, newUri, options));\r\n };\r\n WorkspaceChange.prototype.deleteFile = function (uri, options) {\r\n this.checkDocumentChanges();\r\n this._workspaceEdit.documentChanges.push(DeleteFile.create(uri, options));\r\n };\r\n WorkspaceChange.prototype.checkDocumentChanges = function () {\r\n if (!this._workspaceEdit || !this._workspaceEdit.documentChanges) {\r\n throw new Error('Workspace edit is not configured for document changes.');\r\n }\r\n };\r\n return WorkspaceChange;\r\n}());\r\nexport { WorkspaceChange };\r\n/**\r\n * The TextDocumentIdentifier namespace provides helper functions to work with\r\n * [TextDocumentIdentifier](#TextDocumentIdentifier) literals.\r\n */\r\nexport var TextDocumentIdentifier;\r\n(function (TextDocumentIdentifier) {\r\n /**\r\n * Creates a new TextDocumentIdentifier literal.\r\n * @param uri The document's uri.\r\n */\r\n function create(uri) {\r\n return { uri: uri };\r\n }\r\n TextDocumentIdentifier.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [TextDocumentIdentifier](#TextDocumentIdentifier) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri);\r\n }\r\n TextDocumentIdentifier.is = is;\r\n})(TextDocumentIdentifier || (TextDocumentIdentifier = {}));\r\n/**\r\n * The VersionedTextDocumentIdentifier namespace provides helper functions to work with\r\n * [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) literals.\r\n */\r\nexport var VersionedTextDocumentIdentifier;\r\n(function (VersionedTextDocumentIdentifier) {\r\n /**\r\n * Creates a new VersionedTextDocumentIdentifier literal.\r\n * @param uri The document's uri.\r\n * @param uri The document's text.\r\n */\r\n function create(uri, version) {\r\n return { uri: uri, version: version };\r\n }\r\n VersionedTextDocumentIdentifier.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [VersionedTextDocumentIdentifier](#VersionedTextDocumentIdentifier) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri) && (candidate.version === null || Is.number(candidate.version));\r\n }\r\n VersionedTextDocumentIdentifier.is = is;\r\n})(VersionedTextDocumentIdentifier || (VersionedTextDocumentIdentifier = {}));\r\n/**\r\n * The TextDocumentItem namespace provides helper functions to work with\r\n * [TextDocumentItem](#TextDocumentItem) literals.\r\n */\r\nexport var TextDocumentItem;\r\n(function (TextDocumentItem) {\r\n /**\r\n * Creates a new TextDocumentItem literal.\r\n * @param uri The document's uri.\r\n * @param languageId The document's language identifier.\r\n * @param version The document's version number.\r\n * @param text The document's text.\r\n */\r\n function create(uri, languageId, version, text) {\r\n return { uri: uri, languageId: languageId, version: version, text: text };\r\n }\r\n TextDocumentItem.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [TextDocumentItem](#TextDocumentItem) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri) && Is.string(candidate.languageId) && Is.number(candidate.version) && Is.string(candidate.text);\r\n }\r\n TextDocumentItem.is = is;\r\n})(TextDocumentItem || (TextDocumentItem = {}));\r\n/**\r\n * Describes the content type that a client supports in various\r\n * result literals like `Hover`, `ParameterInfo` or `CompletionItem`.\r\n *\r\n * Please note that `MarkupKinds` must not start with a `$`. This kinds\r\n * are reserved for internal usage.\r\n */\r\nexport var MarkupKind;\r\n(function (MarkupKind) {\r\n /**\r\n * Plain text is supported as a content format\r\n */\r\n MarkupKind.PlainText = 'plaintext';\r\n /**\r\n * Markdown is supported as a content format\r\n */\r\n MarkupKind.Markdown = 'markdown';\r\n})(MarkupKind || (MarkupKind = {}));\r\n(function (MarkupKind) {\r\n /**\r\n * Checks whether the given value is a value of the [MarkupKind](#MarkupKind) type.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return candidate === MarkupKind.PlainText || candidate === MarkupKind.Markdown;\r\n }\r\n MarkupKind.is = is;\r\n})(MarkupKind || (MarkupKind = {}));\r\nexport var MarkupContent;\r\n(function (MarkupContent) {\r\n /**\r\n * Checks whether the given value conforms to the [MarkupContent](#MarkupContent) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.objectLiteral(value) && MarkupKind.is(candidate.kind) && Is.string(candidate.value);\r\n }\r\n MarkupContent.is = is;\r\n})(MarkupContent || (MarkupContent = {}));\r\n/**\r\n * The kind of a completion entry.\r\n */\r\nexport var CompletionItemKind;\r\n(function (CompletionItemKind) {\r\n CompletionItemKind.Text = 1;\r\n CompletionItemKind.Method = 2;\r\n CompletionItemKind.Function = 3;\r\n CompletionItemKind.Constructor = 4;\r\n CompletionItemKind.Field = 5;\r\n CompletionItemKind.Variable = 6;\r\n CompletionItemKind.Class = 7;\r\n CompletionItemKind.Interface = 8;\r\n CompletionItemKind.Module = 9;\r\n CompletionItemKind.Property = 10;\r\n CompletionItemKind.Unit = 11;\r\n CompletionItemKind.Value = 12;\r\n CompletionItemKind.Enum = 13;\r\n CompletionItemKind.Keyword = 14;\r\n CompletionItemKind.Snippet = 15;\r\n CompletionItemKind.Color = 16;\r\n CompletionItemKind.File = 17;\r\n CompletionItemKind.Reference = 18;\r\n CompletionItemKind.Folder = 19;\r\n CompletionItemKind.EnumMember = 20;\r\n CompletionItemKind.Constant = 21;\r\n CompletionItemKind.Struct = 22;\r\n CompletionItemKind.Event = 23;\r\n CompletionItemKind.Operator = 24;\r\n CompletionItemKind.TypeParameter = 25;\r\n})(CompletionItemKind || (CompletionItemKind = {}));\r\n/**\r\n * Defines whether the insert text in a completion item should be interpreted as\r\n * plain text or a snippet.\r\n */\r\nexport var InsertTextFormat;\r\n(function (InsertTextFormat) {\r\n /**\r\n * The primary text to be inserted is treated as a plain string.\r\n */\r\n InsertTextFormat.PlainText = 1;\r\n /**\r\n * The primary text to be inserted is treated as a snippet.\r\n *\r\n * A snippet can define tab stops and placeholders with `$1`, `$2`\r\n * and `${3:foo}`. `$0` defines the final tab stop, it defaults to\r\n * the end of the snippet. Placeholders with equal identifiers are linked,\r\n * that is typing in one will update others too.\r\n *\r\n * See also: https://github.com/Microsoft/vscode/blob/master/src/vs/editor/contrib/snippet/common/snippet.md\r\n */\r\n InsertTextFormat.Snippet = 2;\r\n})(InsertTextFormat || (InsertTextFormat = {}));\r\n/**\r\n * Completion item tags are extra annotations that tweak the rendering of a completion\r\n * item.\r\n *\r\n * @since 3.15.0\r\n */\r\nexport var CompletionItemTag;\r\n(function (CompletionItemTag) {\r\n /**\r\n * Render a completion as obsolete, usually using a strike-out.\r\n */\r\n CompletionItemTag.Deprecated = 1;\r\n})(CompletionItemTag || (CompletionItemTag = {}));\r\n/**\r\n * The CompletionItem namespace provides functions to deal with\r\n * completion items.\r\n */\r\nexport var CompletionItem;\r\n(function (CompletionItem) {\r\n /**\r\n * Create a completion item and seed it with a label.\r\n * @param label The completion item's label\r\n */\r\n function create(label) {\r\n return { label: label };\r\n }\r\n CompletionItem.create = create;\r\n})(CompletionItem || (CompletionItem = {}));\r\n/**\r\n * The CompletionList namespace provides functions to deal with\r\n * completion lists.\r\n */\r\nexport var CompletionList;\r\n(function (CompletionList) {\r\n /**\r\n * Creates a new completion list.\r\n *\r\n * @param items The completion items.\r\n * @param isIncomplete The list is not complete.\r\n */\r\n function create(items, isIncomplete) {\r\n return { items: items ? items : [], isIncomplete: !!isIncomplete };\r\n }\r\n CompletionList.create = create;\r\n})(CompletionList || (CompletionList = {}));\r\nexport var MarkedString;\r\n(function (MarkedString) {\r\n /**\r\n * Creates a marked string from plain text.\r\n *\r\n * @param plainText The plain text.\r\n */\r\n function fromPlainText(plainText) {\r\n return plainText.replace(/[\\\\`*_{}[\\]()#+\\-.!]/g, '\\\\$&'); // escape markdown syntax tokens: http://daringfireball.net/projects/markdown/syntax#backslash\r\n }\r\n MarkedString.fromPlainText = fromPlainText;\r\n /**\r\n * Checks whether the given value conforms to the [MarkedString](#MarkedString) type.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.string(candidate) || (Is.objectLiteral(candidate) && Is.string(candidate.language) && Is.string(candidate.value));\r\n }\r\n MarkedString.is = is;\r\n})(MarkedString || (MarkedString = {}));\r\nexport var Hover;\r\n(function (Hover) {\r\n /**\r\n * Checks whether the given value conforms to the [Hover](#Hover) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return !!candidate && Is.objectLiteral(candidate) && (MarkupContent.is(candidate.contents) ||\r\n MarkedString.is(candidate.contents) ||\r\n Is.typedArray(candidate.contents, MarkedString.is)) && (value.range === void 0 || Range.is(value.range));\r\n }\r\n Hover.is = is;\r\n})(Hover || (Hover = {}));\r\n/**\r\n * The ParameterInformation namespace provides helper functions to work with\r\n * [ParameterInformation](#ParameterInformation) literals.\r\n */\r\nexport var ParameterInformation;\r\n(function (ParameterInformation) {\r\n /**\r\n * Creates a new parameter information literal.\r\n *\r\n * @param label A label string.\r\n * @param documentation A doc string.\r\n */\r\n function create(label, documentation) {\r\n return documentation ? { label: label, documentation: documentation } : { label: label };\r\n }\r\n ParameterInformation.create = create;\r\n})(ParameterInformation || (ParameterInformation = {}));\r\n/**\r\n * The SignatureInformation namespace provides helper functions to work with\r\n * [SignatureInformation](#SignatureInformation) literals.\r\n */\r\nexport var SignatureInformation;\r\n(function (SignatureInformation) {\r\n function create(label, documentation) {\r\n var parameters = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n parameters[_i - 2] = arguments[_i];\r\n }\r\n var result = { label: label };\r\n if (Is.defined(documentation)) {\r\n result.documentation = documentation;\r\n }\r\n if (Is.defined(parameters)) {\r\n result.parameters = parameters;\r\n }\r\n else {\r\n result.parameters = [];\r\n }\r\n return result;\r\n }\r\n SignatureInformation.create = create;\r\n})(SignatureInformation || (SignatureInformation = {}));\r\n/**\r\n * A document highlight kind.\r\n */\r\nexport var DocumentHighlightKind;\r\n(function (DocumentHighlightKind) {\r\n /**\r\n * A textual occurrence.\r\n */\r\n DocumentHighlightKind.Text = 1;\r\n /**\r\n * Read-access of a symbol, like reading a variable.\r\n */\r\n DocumentHighlightKind.Read = 2;\r\n /**\r\n * Write-access of a symbol, like writing to a variable.\r\n */\r\n DocumentHighlightKind.Write = 3;\r\n})(DocumentHighlightKind || (DocumentHighlightKind = {}));\r\n/**\r\n * DocumentHighlight namespace to provide helper functions to work with\r\n * [DocumentHighlight](#DocumentHighlight) literals.\r\n */\r\nexport var DocumentHighlight;\r\n(function (DocumentHighlight) {\r\n /**\r\n * Create a DocumentHighlight object.\r\n * @param range The range the highlight applies to.\r\n */\r\n function create(range, kind) {\r\n var result = { range: range };\r\n if (Is.number(kind)) {\r\n result.kind = kind;\r\n }\r\n return result;\r\n }\r\n DocumentHighlight.create = create;\r\n})(DocumentHighlight || (DocumentHighlight = {}));\r\n/**\r\n * A symbol kind.\r\n */\r\nexport var SymbolKind;\r\n(function (SymbolKind) {\r\n SymbolKind.File = 1;\r\n SymbolKind.Module = 2;\r\n SymbolKind.Namespace = 3;\r\n SymbolKind.Package = 4;\r\n SymbolKind.Class = 5;\r\n SymbolKind.Method = 6;\r\n SymbolKind.Property = 7;\r\n SymbolKind.Field = 8;\r\n SymbolKind.Constructor = 9;\r\n SymbolKind.Enum = 10;\r\n SymbolKind.Interface = 11;\r\n SymbolKind.Function = 12;\r\n SymbolKind.Variable = 13;\r\n SymbolKind.Constant = 14;\r\n SymbolKind.String = 15;\r\n SymbolKind.Number = 16;\r\n SymbolKind.Boolean = 17;\r\n SymbolKind.Array = 18;\r\n SymbolKind.Object = 19;\r\n SymbolKind.Key = 20;\r\n SymbolKind.Null = 21;\r\n SymbolKind.EnumMember = 22;\r\n SymbolKind.Struct = 23;\r\n SymbolKind.Event = 24;\r\n SymbolKind.Operator = 25;\r\n SymbolKind.TypeParameter = 26;\r\n})(SymbolKind || (SymbolKind = {}));\r\n/**\r\n * Symbol tags are extra annotations that tweak the rendering of a symbol.\r\n * @since 3.15\r\n */\r\nexport var SymbolTag;\r\n(function (SymbolTag) {\r\n /**\r\n * Render a symbol as obsolete, usually using a strike-out.\r\n */\r\n SymbolTag.Deprecated = 1;\r\n})(SymbolTag || (SymbolTag = {}));\r\nexport var SymbolInformation;\r\n(function (SymbolInformation) {\r\n /**\r\n * Creates a new symbol information literal.\r\n *\r\n * @param name The name of the symbol.\r\n * @param kind The kind of the symbol.\r\n * @param range The range of the location of the symbol.\r\n * @param uri The resource of the location of symbol, defaults to the current document.\r\n * @param containerName The name of the symbol containing the symbol.\r\n */\r\n function create(name, kind, range, uri, containerName) {\r\n var result = {\r\n name: name,\r\n kind: kind,\r\n location: { uri: uri, range: range }\r\n };\r\n if (containerName) {\r\n result.containerName = containerName;\r\n }\r\n return result;\r\n }\r\n SymbolInformation.create = create;\r\n})(SymbolInformation || (SymbolInformation = {}));\r\nexport var DocumentSymbol;\r\n(function (DocumentSymbol) {\r\n /**\r\n * Creates a new symbol information literal.\r\n *\r\n * @param name The name of the symbol.\r\n * @param detail The detail of the symbol.\r\n * @param kind The kind of the symbol.\r\n * @param range The range of the symbol.\r\n * @param selectionRange The selectionRange of the symbol.\r\n * @param children Children of the symbol.\r\n */\r\n function create(name, detail, kind, range, selectionRange, children) {\r\n var result = {\r\n name: name,\r\n detail: detail,\r\n kind: kind,\r\n range: range,\r\n selectionRange: selectionRange\r\n };\r\n if (children !== void 0) {\r\n result.children = children;\r\n }\r\n return result;\r\n }\r\n DocumentSymbol.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [DocumentSymbol](#DocumentSymbol) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return candidate &&\r\n Is.string(candidate.name) && Is.number(candidate.kind) &&\r\n Range.is(candidate.range) && Range.is(candidate.selectionRange) &&\r\n (candidate.detail === void 0 || Is.string(candidate.detail)) &&\r\n (candidate.deprecated === void 0 || Is.boolean(candidate.deprecated)) &&\r\n (candidate.children === void 0 || Array.isArray(candidate.children));\r\n }\r\n DocumentSymbol.is = is;\r\n})(DocumentSymbol || (DocumentSymbol = {}));\r\n/**\r\n * A set of predefined code action kinds\r\n */\r\nexport var CodeActionKind;\r\n(function (CodeActionKind) {\r\n /**\r\n * Empty kind.\r\n */\r\n CodeActionKind.Empty = '';\r\n /**\r\n * Base kind for quickfix actions: 'quickfix'\r\n */\r\n CodeActionKind.QuickFix = 'quickfix';\r\n /**\r\n * Base kind for refactoring actions: 'refactor'\r\n */\r\n CodeActionKind.Refactor = 'refactor';\r\n /**\r\n * Base kind for refactoring extraction actions: 'refactor.extract'\r\n *\r\n * Example extract actions:\r\n *\r\n * - Extract method\r\n * - Extract function\r\n * - Extract variable\r\n * - Extract interface from class\r\n * - ...\r\n */\r\n CodeActionKind.RefactorExtract = 'refactor.extract';\r\n /**\r\n * Base kind for refactoring inline actions: 'refactor.inline'\r\n *\r\n * Example inline actions:\r\n *\r\n * - Inline function\r\n * - Inline variable\r\n * - Inline constant\r\n * - ...\r\n */\r\n CodeActionKind.RefactorInline = 'refactor.inline';\r\n /**\r\n * Base kind for refactoring rewrite actions: 'refactor.rewrite'\r\n *\r\n * Example rewrite actions:\r\n *\r\n * - Convert JavaScript function to class\r\n * - Add or remove parameter\r\n * - Encapsulate field\r\n * - Make method static\r\n * - Move method to base class\r\n * - ...\r\n */\r\n CodeActionKind.RefactorRewrite = 'refactor.rewrite';\r\n /**\r\n * Base kind for source actions: `source`\r\n *\r\n * Source code actions apply to the entire file.\r\n */\r\n CodeActionKind.Source = 'source';\r\n /**\r\n * Base kind for an organize imports source action: `source.organizeImports`\r\n */\r\n CodeActionKind.SourceOrganizeImports = 'source.organizeImports';\r\n /**\r\n * Base kind for auto-fix source actions: `source.fixAll`.\r\n *\r\n * Fix all actions automatically fix errors that have a clear fix that do not require user input.\r\n * They should not suppress errors or perform unsafe fixes such as generating new types or classes.\r\n *\r\n * @since 3.15.0\r\n */\r\n CodeActionKind.SourceFixAll = 'source.fixAll';\r\n})(CodeActionKind || (CodeActionKind = {}));\r\n/**\r\n * The CodeActionContext namespace provides helper functions to work with\r\n * [CodeActionContext](#CodeActionContext) literals.\r\n */\r\nexport var CodeActionContext;\r\n(function (CodeActionContext) {\r\n /**\r\n * Creates a new CodeActionContext literal.\r\n */\r\n function create(diagnostics, only) {\r\n var result = { diagnostics: diagnostics };\r\n if (only !== void 0 && only !== null) {\r\n result.only = only;\r\n }\r\n return result;\r\n }\r\n CodeActionContext.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [CodeActionContext](#CodeActionContext) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.typedArray(candidate.diagnostics, Diagnostic.is) && (candidate.only === void 0 || Is.typedArray(candidate.only, Is.string));\r\n }\r\n CodeActionContext.is = is;\r\n})(CodeActionContext || (CodeActionContext = {}));\r\nexport var CodeAction;\r\n(function (CodeAction) {\r\n function create(title, commandOrEdit, kind) {\r\n var result = { title: title };\r\n if (Command.is(commandOrEdit)) {\r\n result.command = commandOrEdit;\r\n }\r\n else {\r\n result.edit = commandOrEdit;\r\n }\r\n if (kind !== void 0) {\r\n result.kind = kind;\r\n }\r\n return result;\r\n }\r\n CodeAction.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate && Is.string(candidate.title) &&\r\n (candidate.diagnostics === void 0 || Is.typedArray(candidate.diagnostics, Diagnostic.is)) &&\r\n (candidate.kind === void 0 || Is.string(candidate.kind)) &&\r\n (candidate.edit !== void 0 || candidate.command !== void 0) &&\r\n (candidate.command === void 0 || Command.is(candidate.command)) &&\r\n (candidate.isPreferred === void 0 || Is.boolean(candidate.isPreferred)) &&\r\n (candidate.edit === void 0 || WorkspaceEdit.is(candidate.edit));\r\n }\r\n CodeAction.is = is;\r\n})(CodeAction || (CodeAction = {}));\r\n/**\r\n * The CodeLens namespace provides helper functions to work with\r\n * [CodeLens](#CodeLens) literals.\r\n */\r\nexport var CodeLens;\r\n(function (CodeLens) {\r\n /**\r\n * Creates a new CodeLens literal.\r\n */\r\n function create(range, data) {\r\n var result = { range: range };\r\n if (Is.defined(data)) {\r\n result.data = data;\r\n }\r\n return result;\r\n }\r\n CodeLens.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [CodeLens](#CodeLens) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.command) || Command.is(candidate.command));\r\n }\r\n CodeLens.is = is;\r\n})(CodeLens || (CodeLens = {}));\r\n/**\r\n * The FormattingOptions namespace provides helper functions to work with\r\n * [FormattingOptions](#FormattingOptions) literals.\r\n */\r\nexport var FormattingOptions;\r\n(function (FormattingOptions) {\r\n /**\r\n * Creates a new FormattingOptions literal.\r\n */\r\n function create(tabSize, insertSpaces) {\r\n return { tabSize: tabSize, insertSpaces: insertSpaces };\r\n }\r\n FormattingOptions.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [FormattingOptions](#FormattingOptions) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.number(candidate.tabSize) && Is.boolean(candidate.insertSpaces);\r\n }\r\n FormattingOptions.is = is;\r\n})(FormattingOptions || (FormattingOptions = {}));\r\n/**\r\n * The DocumentLink namespace provides helper functions to work with\r\n * [DocumentLink](#DocumentLink) literals.\r\n */\r\nexport var DocumentLink;\r\n(function (DocumentLink) {\r\n /**\r\n * Creates a new DocumentLink literal.\r\n */\r\n function create(range, target, data) {\r\n return { range: range, target: target, data: data };\r\n }\r\n DocumentLink.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [DocumentLink](#DocumentLink) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Range.is(candidate.range) && (Is.undefined(candidate.target) || Is.string(candidate.target));\r\n }\r\n DocumentLink.is = is;\r\n})(DocumentLink || (DocumentLink = {}));\r\n/**\r\n * The SelectionRange namespace provides helper function to work with\r\n * SelectionRange literals.\r\n */\r\nexport var SelectionRange;\r\n(function (SelectionRange) {\r\n /**\r\n * Creates a new SelectionRange\r\n * @param range the range.\r\n * @param parent an optional parent.\r\n */\r\n function create(range, parent) {\r\n return { range: range, parent: parent };\r\n }\r\n SelectionRange.create = create;\r\n function is(value) {\r\n var candidate = value;\r\n return candidate !== undefined && Range.is(candidate.range) && (candidate.parent === undefined || SelectionRange.is(candidate.parent));\r\n }\r\n SelectionRange.is = is;\r\n})(SelectionRange || (SelectionRange = {}));\r\nexport var EOL = ['\\n', '\\r\\n', '\\r'];\r\n/**\r\n * @deprecated Use the text document from the new vscode-languageserver-textdocument package.\r\n */\r\nexport var TextDocument;\r\n(function (TextDocument) {\r\n /**\r\n * Creates a new ITextDocument literal from the given uri and content.\r\n * @param uri The document's uri.\r\n * @param languageId The document's language Id.\r\n * @param content The document's content.\r\n */\r\n function create(uri, languageId, version, content) {\r\n return new FullTextDocument(uri, languageId, version, content);\r\n }\r\n TextDocument.create = create;\r\n /**\r\n * Checks whether the given literal conforms to the [ITextDocument](#ITextDocument) interface.\r\n */\r\n function is(value) {\r\n var candidate = value;\r\n return Is.defined(candidate) && Is.string(candidate.uri) && (Is.undefined(candidate.languageId) || Is.string(candidate.languageId)) && Is.number(candidate.lineCount)\r\n && Is.func(candidate.getText) && Is.func(candidate.positionAt) && Is.func(candidate.offsetAt) ? true : false;\r\n }\r\n TextDocument.is = is;\r\n function applyEdits(document, edits) {\r\n var text = document.getText();\r\n var sortedEdits = mergeSort(edits, function (a, b) {\r\n var diff = a.range.start.line - b.range.start.line;\r\n if (diff === 0) {\r\n return a.range.start.character - b.range.start.character;\r\n }\r\n return diff;\r\n });\r\n var lastModifiedOffset = text.length;\r\n for (var i = sortedEdits.length - 1; i >= 0; i--) {\r\n var e = sortedEdits[i];\r\n var startOffset = document.offsetAt(e.range.start);\r\n var endOffset = document.offsetAt(e.range.end);\r\n if (endOffset <= lastModifiedOffset) {\r\n text = text.substring(0, startOffset) + e.newText + text.substring(endOffset, text.length);\r\n }\r\n else {\r\n throw new Error('Overlapping edit');\r\n }\r\n lastModifiedOffset = startOffset;\r\n }\r\n return text;\r\n }\r\n TextDocument.applyEdits = applyEdits;\r\n function mergeSort(data, compare) {\r\n if (data.length <= 1) {\r\n // sorted\r\n return data;\r\n }\r\n var p = (data.length / 2) | 0;\r\n var left = data.slice(0, p);\r\n var right = data.slice(p);\r\n mergeSort(left, compare);\r\n mergeSort(right, compare);\r\n var leftIdx = 0;\r\n var rightIdx = 0;\r\n var i = 0;\r\n while (leftIdx < left.length && rightIdx < right.length) {\r\n var ret = compare(left[leftIdx], right[rightIdx]);\r\n if (ret <= 0) {\r\n // smaller_equal -> take left to preserve order\r\n data[i++] = left[leftIdx++];\r\n }\r\n else {\r\n // greater -> take right\r\n data[i++] = right[rightIdx++];\r\n }\r\n }\r\n while (leftIdx < left.length) {\r\n data[i++] = left[leftIdx++];\r\n }\r\n while (rightIdx < right.length) {\r\n data[i++] = right[rightIdx++];\r\n }\r\n return data;\r\n }\r\n})(TextDocument || (TextDocument = {}));\r\nvar FullTextDocument = /** @class */ (function () {\r\n function FullTextDocument(uri, languageId, version, content) {\r\n this._uri = uri;\r\n this._languageId = languageId;\r\n this._version = version;\r\n this._content = content;\r\n this._lineOffsets = undefined;\r\n }\r\n Object.defineProperty(FullTextDocument.prototype, \"uri\", {\r\n get: function () {\r\n return this._uri;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FullTextDocument.prototype, \"languageId\", {\r\n get: function () {\r\n return this._languageId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(FullTextDocument.prototype, \"version\", {\r\n get: function () {\r\n return this._version;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FullTextDocument.prototype.getText = function (range) {\r\n if (range) {\r\n var start = this.offsetAt(range.start);\r\n var end = this.offsetAt(range.end);\r\n return this._content.substring(start, end);\r\n }\r\n return this._content;\r\n };\r\n FullTextDocument.prototype.update = function (event, version) {\r\n this._content = event.text;\r\n this._version = version;\r\n this._lineOffsets = undefined;\r\n };\r\n FullTextDocument.prototype.getLineOffsets = function () {\r\n if (this._lineOffsets === undefined) {\r\n var lineOffsets = [];\r\n var text = this._content;\r\n var isLineStart = true;\r\n for (var i = 0; i < text.length; i++) {\r\n if (isLineStart) {\r\n lineOffsets.push(i);\r\n isLineStart = false;\r\n }\r\n var ch = text.charAt(i);\r\n isLineStart = (ch === '\\r' || ch === '\\n');\r\n if (ch === '\\r' && i + 1 < text.length && text.charAt(i + 1) === '\\n') {\r\n i++;\r\n }\r\n }\r\n if (isLineStart && text.length > 0) {\r\n lineOffsets.push(text.length);\r\n }\r\n this._lineOffsets = lineOffsets;\r\n }\r\n return this._lineOffsets;\r\n };\r\n FullTextDocument.prototype.positionAt = function (offset) {\r\n offset = Math.max(Math.min(offset, this._content.length), 0);\r\n var lineOffsets = this.getLineOffsets();\r\n var low = 0, high = lineOffsets.length;\r\n if (high === 0) {\r\n return Position.create(0, offset);\r\n }\r\n while (low < high) {\r\n var mid = Math.floor((low + high) / 2);\r\n if (lineOffsets[mid] > offset) {\r\n high = mid;\r\n }\r\n else {\r\n low = mid + 1;\r\n }\r\n }\r\n // low is the least x for which the line offset is larger than the current offset\r\n // or array.length if no line offset is larger than the current offset\r\n var line = low - 1;\r\n return Position.create(line, offset - lineOffsets[line]);\r\n };\r\n FullTextDocument.prototype.offsetAt = function (position) {\r\n var lineOffsets = this.getLineOffsets();\r\n if (position.line >= lineOffsets.length) {\r\n return this._content.length;\r\n }\r\n else if (position.line < 0) {\r\n return 0;\r\n }\r\n var lineOffset = lineOffsets[position.line];\r\n var nextLineOffset = (position.line + 1 < lineOffsets.length) ? lineOffsets[position.line + 1] : this._content.length;\r\n return Math.max(Math.min(lineOffset + position.character, nextLineOffset), lineOffset);\r\n };\r\n Object.defineProperty(FullTextDocument.prototype, \"lineCount\", {\r\n get: function () {\r\n return this.getLineOffsets().length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FullTextDocument;\r\n}());\r\nvar Is;\r\n(function (Is) {\r\n var toString = Object.prototype.toString;\r\n function defined(value) {\r\n return typeof value !== 'undefined';\r\n }\r\n Is.defined = defined;\r\n function undefined(value) {\r\n return typeof value === 'undefined';\r\n }\r\n Is.undefined = undefined;\r\n function boolean(value) {\r\n return value === true || value === false;\r\n }\r\n Is.boolean = boolean;\r\n function string(value) {\r\n return toString.call(value) === '[object String]';\r\n }\r\n Is.string = string;\r\n function number(value) {\r\n return toString.call(value) === '[object Number]';\r\n }\r\n Is.number = number;\r\n function func(value) {\r\n return toString.call(value) === '[object Function]';\r\n }\r\n Is.func = func;\r\n function objectLiteral(value) {\r\n // Strictly speaking class instances pass this check as well. Since the LSP\r\n // doesn't use classes we ignore this for now. If we do we need to add something\r\n // like this: `Object.getPrototypeOf(Object.getPrototypeOf(x)) === null`\r\n return value !== null && typeof value === 'object';\r\n }\r\n Is.objectLiteral = objectLiteral;\r\n function typedArray(value, check) {\r\n return Array.isArray(value) && value.every(check);\r\n }\r\n Is.typedArray = typedArray;\r\n})(Is || (Is = {}));\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a;\nvar isWindows;\nif (typeof process === 'object') {\n isWindows = process.platform === 'win32';\n}\nelse if (typeof navigator === 'object') {\n var userAgent = navigator.userAgent;\n isWindows = userAgent.indexOf('Windows') >= 0;\n}\nfunction isHighSurrogate(charCode) {\n return (0xD800 <= charCode && charCode <= 0xDBFF);\n}\nfunction isLowSurrogate(charCode) {\n return (0xDC00 <= charCode && charCode <= 0xDFFF);\n}\nfunction isLowerAsciiHex(code) {\n return code >= 97 /* a */ && code <= 102 /* f */;\n}\nfunction isLowerAsciiLetter(code) {\n return code >= 97 /* a */ && code <= 122 /* z */;\n}\nfunction isUpperAsciiLetter(code) {\n return code >= 65 /* A */ && code <= 90 /* Z */;\n}\nfunction isAsciiLetter(code) {\n return isLowerAsciiLetter(code) || isUpperAsciiLetter(code);\n}\n//#endregion\nvar _schemePattern = /^\\w[\\w\\d+.-]*$/;\nvar _singleSlashStart = /^\\//;\nvar _doubleSlashStart = /^\\/\\//;\nfunction _validateUri(ret, _strict) {\n // scheme, must be set\n if (!ret.scheme && _strict) {\n throw new Error(\"[UriError]: Scheme is missing: {scheme: \\\"\\\", authority: \\\"\" + ret.authority + \"\\\", path: \\\"\" + ret.path + \"\\\", query: \\\"\" + ret.query + \"\\\", fragment: \\\"\" + ret.fragment + \"\\\"}\");\n }\n // scheme, https://tools.ietf.org/html/rfc3986#section-3.1\n // ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\n if (ret.scheme && !_schemePattern.test(ret.scheme)) {\n throw new Error('[UriError]: Scheme contains illegal characters.');\n }\n // path, http://tools.ietf.org/html/rfc3986#section-3.3\n // If a URI contains an authority component, then the path component\n // must either be empty or begin with a slash (\"/\") character. If a URI\n // does not contain an authority component, then the path cannot begin\n // with two slash characters (\"//\").\n if (ret.path) {\n if (ret.authority) {\n if (!_singleSlashStart.test(ret.path)) {\n throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash (\"/\") character');\n }\n }\n else {\n if (_doubleSlashStart.test(ret.path)) {\n throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters (\"//\")');\n }\n }\n }\n}\n// for a while we allowed uris *without* schemes and this is the migration\n// for them, e.g. an uri without scheme and without strict-mode warns and falls\n// back to the file-scheme. that should cause the least carnage and still be a\n// clear warning\nfunction _schemeFix(scheme, _strict) {\n if (!scheme && !_strict) {\n return 'file';\n }\n return scheme;\n}\n// implements a bit of https://tools.ietf.org/html/rfc3986#section-5\nfunction _referenceResolution(scheme, path) {\n // the slash-character is our 'default base' as we don't\n // support constructing URIs relative to other URIs. This\n // also means that we alter and potentially break paths.\n // see https://tools.ietf.org/html/rfc3986#section-5.1.4\n switch (scheme) {\n case 'https':\n case 'http':\n case 'file':\n if (!path) {\n path = _slash;\n }\n else if (path[0] !== _slash) {\n path = _slash + path;\n }\n break;\n }\n return path;\n}\nvar _empty = '';\nvar _slash = '/';\nvar _regexp = /^(([^:/?#]+?):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\n/**\n * Uniform Resource Identifier (URI) http://tools.ietf.org/html/rfc3986.\n * This class is a simple parser which creates the basic component parts\n * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation\n * and encoding.\n *\n * ```txt\n * foo://example.com:8042/over/there?name=ferret#nose\n * \\_/ \\______________/\\_________/ \\_________/ \\__/\n * | | | | |\n * scheme authority path query fragment\n * | _____________________|__\n * / \\ / \\\n * urn:example:animal:ferret:nose\n * ```\n */\nvar URI = /** @class */ (function () {\n /**\n * @internal\n */\n function URI(schemeOrData, authority, path, query, fragment, _strict) {\n if (_strict === void 0) { _strict = false; }\n if (typeof schemeOrData === 'object') {\n this.scheme = schemeOrData.scheme || _empty;\n this.authority = schemeOrData.authority || _empty;\n this.path = schemeOrData.path || _empty;\n this.query = schemeOrData.query || _empty;\n this.fragment = schemeOrData.fragment || _empty;\n // no validation because it's this URI\n // that creates uri components.\n // _validateUri(this);\n }\n else {\n this.scheme = _schemeFix(schemeOrData, _strict);\n this.authority = authority || _empty;\n this.path = _referenceResolution(this.scheme, path || _empty);\n this.query = query || _empty;\n this.fragment = fragment || _empty;\n _validateUri(this, _strict);\n }\n }\n URI.isUri = function (thing) {\n if (thing instanceof URI) {\n return true;\n }\n if (!thing) {\n return false;\n }\n return typeof thing.authority === 'string'\n && typeof thing.fragment === 'string'\n && typeof thing.path === 'string'\n && typeof thing.query === 'string'\n && typeof thing.scheme === 'string'\n && typeof thing.fsPath === 'function'\n && typeof thing.with === 'function'\n && typeof thing.toString === 'function';\n };\n Object.defineProperty(URI.prototype, \"fsPath\", {\n // ---- filesystem path -----------------------\n /**\n * Returns a string representing the corresponding file system path of this URI.\n * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the\n * platform specific path separator.\n *\n * * Will *not* validate the path for invalid characters and semantics.\n * * Will *not* look at the scheme of this URI.\n * * The result shall *not* be used for display purposes but for accessing a file on disk.\n *\n *\n * The *difference* to `URI#path` is the use of the platform specific separator and the handling\n * of UNC paths. See the below sample of a file-uri with an authority (UNC path).\n *\n * ```ts\n const u = URI.parse('file://server/c$/folder/file.txt')\n u.authority === 'server'\n u.path === '/shares/c$/file.txt'\n u.fsPath === '\\\\server\\c$\\folder\\file.txt'\n ```\n *\n * Using `URI#path` to read a file (using fs-apis) would not be enough because parts of the path,\n * namely the server name, would be missing. Therefore `URI#fsPath` exists - it's sugar to ease working\n * with URIs that represent files on disk (`file` scheme).\n */\n get: function () {\n // if (this.scheme !== 'file') {\n // \tconsole.warn(`[UriError] calling fsPath with scheme ${this.scheme}`);\n // }\n return uriToFsPath(this, false);\n },\n enumerable: true,\n configurable: true\n });\n // ---- modify to new -------------------------\n URI.prototype.with = function (change) {\n if (!change) {\n return this;\n }\n var scheme = change.scheme, authority = change.authority, path = change.path, query = change.query, fragment = change.fragment;\n if (scheme === undefined) {\n scheme = this.scheme;\n }\n else if (scheme === null) {\n scheme = _empty;\n }\n if (authority === undefined) {\n authority = this.authority;\n }\n else if (authority === null) {\n authority = _empty;\n }\n if (path === undefined) {\n path = this.path;\n }\n else if (path === null) {\n path = _empty;\n }\n if (query === undefined) {\n query = this.query;\n }\n else if (query === null) {\n query = _empty;\n }\n if (fragment === undefined) {\n fragment = this.fragment;\n }\n else if (fragment === null) {\n fragment = _empty;\n }\n if (scheme === this.scheme\n && authority === this.authority\n && path === this.path\n && query === this.query\n && fragment === this.fragment) {\n return this;\n }\n return new _URI(scheme, authority, path, query, fragment);\n };\n // ---- parse & validate ------------------------\n /**\n * Creates a new URI from a string, e.g. `http://www.msft.com/some/path`,\n * `file:///usr/home`, or `scheme:with/path`.\n *\n * @param value A string which represents an URI (see `URI#toString`).\n */\n URI.parse = function (value, _strict) {\n if (_strict === void 0) { _strict = false; }\n var match = _regexp.exec(value);\n if (!match) {\n return new _URI(_empty, _empty, _empty, _empty, _empty);\n }\n return new _URI(match[2] || _empty, percentDecode(match[4] || _empty), percentDecode(match[5] || _empty), percentDecode(match[7] || _empty), percentDecode(match[9] || _empty), _strict);\n };\n /**\n * Creates a new URI from a file system path, e.g. `c:\\my\\files`,\n * `/usr/home`, or `\\\\server\\share\\some\\path`.\n *\n * The *difference* between `URI#parse` and `URI#file` is that the latter treats the argument\n * as path, not as stringified-uri. E.g. `URI.file(path)` is **not the same as**\n * `URI.parse('file://' + path)` because the path might contain characters that are\n * interpreted (# and ?). See the following sample:\n * ```ts\n const good = URI.file('/coding/c#/project1');\n good.scheme === 'file';\n good.path === '/coding/c#/project1';\n good.fragment === '';\n const bad = URI.parse('file://' + '/coding/c#/project1');\n bad.scheme === 'file';\n bad.path === '/coding/c'; // path is now broken\n bad.fragment === '/project1';\n ```\n *\n * @param path A file system path (see `URI#fsPath`)\n */\n URI.file = function (path) {\n var authority = _empty;\n // normalize to fwd-slashes on windows,\n // on other systems bwd-slashes are valid\n // filename character, eg /f\\oo/ba\\r.txt\n if (isWindows) {\n path = path.replace(/\\\\/g, _slash);\n }\n // check for authority as used in UNC shares\n // or use the path as given\n if (path[0] === _slash && path[1] === _slash) {\n var idx = path.indexOf(_slash, 2);\n if (idx === -1) {\n authority = path.substring(2);\n path = _slash;\n }\n else {\n authority = path.substring(2, idx);\n path = path.substring(idx) || _slash;\n }\n }\n return new _URI('file', authority, path, _empty, _empty);\n };\n URI.from = function (components) {\n return new _URI(components.scheme, components.authority, components.path, components.query, components.fragment);\n };\n // /**\n // * Join a URI path with path fragments and normalizes the resulting path.\n // *\n // * @param uri The input URI.\n // * @param pathFragment The path fragment to add to the URI path.\n // * @returns The resulting URI.\n // */\n // static joinPath(uri: URI, ...pathFragment: string[]): URI {\n // \tif (!uri.path) {\n // \t\tthrow new Error(`[UriError]: cannot call joinPaths on URI without path`);\n // \t}\n // \tlet newPath: string;\n // \tif (isWindows && uri.scheme === 'file') {\n // \t\tnewPath = URI.file(paths.win32.join(uriToFsPath(uri, true), ...pathFragment)).path;\n // \t} else {\n // \t\tnewPath = paths.posix.join(uri.path, ...pathFragment);\n // \t}\n // \treturn uri.with({ path: newPath });\n // }\n // ---- printing/externalize ---------------------------\n /**\n * Creates a string representation for this URI. It's guaranteed that calling\n * `URI.parse` with the result of this function creates an URI which is equal\n * to this URI.\n *\n * * The result shall *not* be used for display purposes but for externalization or transport.\n * * The result will be encoded using the percentage encoding and encoding happens mostly\n * ignore the scheme-specific encoding rules.\n *\n * @param skipEncoding Do not encode the result, default is `false`\n */\n URI.prototype.toString = function (skipEncoding) {\n if (skipEncoding === void 0) { skipEncoding = false; }\n return _asFormatted(this, skipEncoding);\n };\n URI.prototype.toJSON = function () {\n return this;\n };\n URI.revive = function (data) {\n if (!data) {\n return data;\n }\n else if (data instanceof URI) {\n return data;\n }\n else {\n var result = new _URI(data);\n result._formatted = data.external;\n result._fsPath = data._sep === _pathSepMarker ? data.fsPath : null;\n return result;\n }\n };\n return URI;\n}());\nexport { URI };\nvar _pathSepMarker = isWindows ? 1 : undefined;\n// eslint-disable-next-line @typescript-eslint/class-name-casing\nvar _URI = /** @class */ (function (_super) {\n __extends(_URI, _super);\n function _URI() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._formatted = null;\n _this._fsPath = null;\n return _this;\n }\n Object.defineProperty(_URI.prototype, \"fsPath\", {\n get: function () {\n if (!this._fsPath) {\n this._fsPath = uriToFsPath(this, false);\n }\n return this._fsPath;\n },\n enumerable: true,\n configurable: true\n });\n _URI.prototype.toString = function (skipEncoding) {\n if (skipEncoding === void 0) { skipEncoding = false; }\n if (!skipEncoding) {\n if (!this._formatted) {\n this._formatted = _asFormatted(this, false);\n }\n return this._formatted;\n }\n else {\n // we don't cache that\n return _asFormatted(this, true);\n }\n };\n _URI.prototype.toJSON = function () {\n var res = {\n $mid: 1\n };\n // cached state\n if (this._fsPath) {\n res.fsPath = this._fsPath;\n res._sep = _pathSepMarker;\n }\n if (this._formatted) {\n res.external = this._formatted;\n }\n // uri components\n if (this.path) {\n res.path = this.path;\n }\n if (this.scheme) {\n res.scheme = this.scheme;\n }\n if (this.authority) {\n res.authority = this.authority;\n }\n if (this.query) {\n res.query = this.query;\n }\n if (this.fragment) {\n res.fragment = this.fragment;\n }\n return res;\n };\n return _URI;\n}(URI));\n// reserved characters: https://tools.ietf.org/html/rfc3986#section-2.2\nvar encodeTable = (_a = {},\n _a[58 /* Colon */] = '%3A',\n _a[47 /* Slash */] = '%2F',\n _a[63 /* QuestionMark */] = '%3F',\n _a[35 /* Hash */] = '%23',\n _a[91 /* OpenSquareBracket */] = '%5B',\n _a[93 /* CloseSquareBracket */] = '%5D',\n _a[64 /* AtSign */] = '%40',\n _a[33 /* ExclamationMark */] = '%21',\n _a[36 /* DollarSign */] = '%24',\n _a[38 /* Ampersand */] = '%26',\n _a[39 /* SingleQuote */] = '%27',\n _a[40 /* OpenParen */] = '%28',\n _a[41 /* CloseParen */] = '%29',\n _a[42 /* Asterisk */] = '%2A',\n _a[43 /* Plus */] = '%2B',\n _a[44 /* Comma */] = '%2C',\n _a[59 /* Semicolon */] = '%3B',\n _a[61 /* Equals */] = '%3D',\n _a[32 /* Space */] = '%20',\n _a);\nfunction encodeURIComponentFast(uriComponent, allowSlash) {\n var res = undefined;\n var nativeEncodePos = -1;\n for (var pos = 0; pos < uriComponent.length; pos++) {\n var code = uriComponent.charCodeAt(pos);\n // unreserved characters: https://tools.ietf.org/html/rfc3986#section-2.3\n if ((code >= 97 /* a */ && code <= 122 /* z */)\n || (code >= 65 /* A */ && code <= 90 /* Z */)\n || (code >= 48 /* Digit0 */ && code <= 57 /* Digit9 */)\n || code === 45 /* Dash */\n || code === 46 /* Period */\n || code === 95 /* Underline */\n || code === 126 /* Tilde */\n || (allowSlash && code === 47 /* Slash */)) {\n // check if we are delaying native encode\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n // check if we write into a new string (by default we try to return the param)\n if (res !== undefined) {\n res += uriComponent.charAt(pos);\n }\n }\n else {\n // encoding needed, we need to allocate a new string\n if (res === undefined) {\n res = uriComponent.substr(0, pos);\n }\n // check with default table first\n var escaped = encodeTable[code];\n if (escaped !== undefined) {\n // check if we are delaying native encode\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos, pos));\n nativeEncodePos = -1;\n }\n // append escaped variant to result\n res += escaped;\n }\n else if (nativeEncodePos === -1) {\n // use native encode only when needed\n nativeEncodePos = pos;\n }\n }\n }\n if (nativeEncodePos !== -1) {\n res += encodeURIComponent(uriComponent.substring(nativeEncodePos));\n }\n return res !== undefined ? res : uriComponent;\n}\nfunction encodeURIComponentMinimal(path) {\n var res = undefined;\n for (var pos = 0; pos < path.length; pos++) {\n var code = path.charCodeAt(pos);\n if (code === 35 /* Hash */ || code === 63 /* QuestionMark */) {\n if (res === undefined) {\n res = path.substr(0, pos);\n }\n res += encodeTable[code];\n }\n else {\n if (res !== undefined) {\n res += path[pos];\n }\n }\n }\n return res !== undefined ? res : path;\n}\n/**\n * Compute `fsPath` for the given uri\n */\nexport function uriToFsPath(uri, keepDriveLetterCasing) {\n var value;\n if (uri.authority && uri.path.length > 1 && uri.scheme === 'file') {\n // unc path: file://shares/c$/far/boo\n value = \"//\" + uri.authority + uri.path;\n }\n else if (uri.path.charCodeAt(0) === 47 /* Slash */\n && (uri.path.charCodeAt(1) >= 65 /* A */ && uri.path.charCodeAt(1) <= 90 /* Z */ || uri.path.charCodeAt(1) >= 97 /* a */ && uri.path.charCodeAt(1) <= 122 /* z */)\n && uri.path.charCodeAt(2) === 58 /* Colon */) {\n if (!keepDriveLetterCasing) {\n // windows drive letter: file:///c:/far/boo\n value = uri.path[1].toLowerCase() + uri.path.substr(2);\n }\n else {\n value = uri.path.substr(1);\n }\n }\n else {\n // other path\n value = uri.path;\n }\n if (isWindows) {\n value = value.replace(/\\//g, '\\\\');\n }\n return value;\n}\n/**\n * Create the external version of a uri\n */\nfunction _asFormatted(uri, skipEncoding) {\n var encoder = !skipEncoding\n ? encodeURIComponentFast\n : encodeURIComponentMinimal;\n var res = '';\n var scheme = uri.scheme, authority = uri.authority, path = uri.path, query = uri.query, fragment = uri.fragment;\n if (scheme) {\n res += scheme;\n res += ':';\n }\n if (authority || scheme === 'file') {\n res += _slash;\n res += _slash;\n }\n if (authority) {\n var idx = authority.indexOf('@');\n if (idx !== -1) {\n // <user>@<auth>\n var userinfo = authority.substr(0, idx);\n authority = authority.substr(idx + 1);\n idx = userinfo.indexOf(':');\n if (idx === -1) {\n res += encoder(userinfo, false);\n }\n else {\n // <user>:<pass>@<auth>\n res += encoder(userinfo.substr(0, idx), false);\n res += ':';\n res += encoder(userinfo.substr(idx + 1), false);\n }\n res += '@';\n }\n authority = authority.toLowerCase();\n idx = authority.indexOf(':');\n if (idx === -1) {\n res += encoder(authority, false);\n }\n else {\n // <auth>:<port>\n res += encoder(authority.substr(0, idx), false);\n res += authority.substr(idx);\n }\n }\n if (path) {\n // lower-case windows drive letters in /C:/fff or C:/fff\n if (path.length >= 3 && path.charCodeAt(0) === 47 /* Slash */ && path.charCodeAt(2) === 58 /* Colon */) {\n var code = path.charCodeAt(1);\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\n path = \"/\" + String.fromCharCode(code + 32) + \":\" + path.substr(3); // \"/c:\".length === 3\n }\n }\n else if (path.length >= 2 && path.charCodeAt(1) === 58 /* Colon */) {\n var code = path.charCodeAt(0);\n if (code >= 65 /* A */ && code <= 90 /* Z */) {\n path = String.fromCharCode(code + 32) + \":\" + path.substr(2); // \"/c:\".length === 3\n }\n }\n // encode the rest of the path\n res += encoder(path, true);\n }\n if (query) {\n res += '?';\n res += encoder(query, false);\n }\n if (fragment) {\n res += '#';\n res += !skipEncoding ? encodeURIComponentFast(fragment, false) : fragment;\n }\n return res;\n}\n// --- decode\nfunction decodeURIComponentGraceful(str) {\n try {\n return decodeURIComponent(str);\n }\n catch (_a) {\n if (str.length > 3) {\n return str.substr(0, 3) + decodeURIComponentGraceful(str.substr(3));\n }\n else {\n return str;\n }\n }\n}\nvar _rEncodedAsHex = /(%[0-9A-Za-z][0-9A-Za-z])+/g;\nfunction percentDecode(str) {\n if (!str.match(_rEncodedAsHex)) {\n return str;\n }\n return str.replace(_rEncodedAsHex, function (match) { return decodeURIComponentGraceful(match); });\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nfunction format(message, args) {\n var result;\n if (args.length === 0) {\n result = message;\n }\n else {\n result = message.replace(/\\{(\\d+)\\}/g, function (match, rest) {\n var index = rest[0];\n return typeof args[index] !== 'undefined' ? args[index] : match;\n });\n }\n return result;\n}\nfunction localize(key, message) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n return format(message, args);\n}\nexport function loadMessageBundle(file) {\n return localize;\n}\nexport function config(opt) {\n return loadMessageBundle;\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport * as jsonService from './_deps/vscode-json-languageservice/jsonLanguageService.js';\nimport { URI } from './_deps/vscode-uri/index.js';\nvar defaultSchemaRequestService;\nif (typeof fetch !== 'undefined') {\n defaultSchemaRequestService = function (url) {\n return fetch(url).then(function (response) { return response.text(); });\n };\n}\nvar JSONWorker = /** @class */ (function () {\n function JSONWorker(ctx, createData) {\n this._ctx = ctx;\n this._languageSettings = createData.languageSettings;\n this._languageId = createData.languageId;\n this._languageService = jsonService.getLanguageService({\n workspaceContext: {\n resolveRelativePath: function (relativePath, resource) {\n var base = resource.substr(0, resource.lastIndexOf('/') + 1);\n return resolvePath(base, relativePath);\n }\n },\n schemaRequestService: createData.enableSchemaRequest && defaultSchemaRequestService\n });\n this._languageService.configure(this._languageSettings);\n }\n JSONWorker.prototype.doValidation = function (uri) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n if (document) {\n jsonDocument = this._languageService.parseJSONDocument(document);\n return [2 /*return*/, this._languageService.doValidation(document, jsonDocument)];\n }\n return [2 /*return*/, Promise.resolve([])];\n });\n });\n };\n JSONWorker.prototype.doComplete = function (uri, position) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n jsonDocument = this._languageService.parseJSONDocument(document);\n return [2 /*return*/, this._languageService.doComplete(document, position, jsonDocument)];\n });\n });\n };\n JSONWorker.prototype.doResolve = function (item) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._languageService.doResolve(item)];\n });\n });\n };\n JSONWorker.prototype.doHover = function (uri, position) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n jsonDocument = this._languageService.parseJSONDocument(document);\n return [2 /*return*/, this._languageService.doHover(document, position, jsonDocument)];\n });\n });\n };\n JSONWorker.prototype.format = function (uri, range, options) {\n return __awaiter(this, void 0, void 0, function () {\n var document, textEdits;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n textEdits = this._languageService.format(document, range, options);\n return [2 /*return*/, Promise.resolve(textEdits)];\n });\n });\n };\n JSONWorker.prototype.resetSchema = function (uri) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.resolve(this._languageService.resetSchema(uri))];\n });\n });\n };\n JSONWorker.prototype.findDocumentSymbols = function (uri) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument, symbols;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n jsonDocument = this._languageService.parseJSONDocument(document);\n symbols = this._languageService.findDocumentSymbols(document, jsonDocument);\n return [2 /*return*/, Promise.resolve(symbols)];\n });\n });\n };\n JSONWorker.prototype.findDocumentColors = function (uri) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument, colorSymbols;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n jsonDocument = this._languageService.parseJSONDocument(document);\n colorSymbols = this._languageService.findDocumentColors(document, jsonDocument);\n return [2 /*return*/, Promise.resolve(colorSymbols)];\n });\n });\n };\n JSONWorker.prototype.getColorPresentations = function (uri, color, range) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument, colorPresentations;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n jsonDocument = this._languageService.parseJSONDocument(document);\n colorPresentations = this._languageService.getColorPresentations(document, jsonDocument, color, range);\n return [2 /*return*/, Promise.resolve(colorPresentations)];\n });\n });\n };\n JSONWorker.prototype.getFoldingRanges = function (uri, context) {\n return __awaiter(this, void 0, void 0, function () {\n var document, ranges;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n ranges = this._languageService.getFoldingRanges(document, context);\n return [2 /*return*/, Promise.resolve(ranges)];\n });\n });\n };\n JSONWorker.prototype.getSelectionRanges = function (uri, positions) {\n return __awaiter(this, void 0, void 0, function () {\n var document, jsonDocument, ranges;\n return __generator(this, function (_a) {\n document = this._getTextDocument(uri);\n jsonDocument = this._languageService.parseJSONDocument(document);\n ranges = this._languageService.getSelectionRanges(document, positions, jsonDocument);\n return [2 /*return*/, Promise.resolve(ranges)];\n });\n });\n };\n JSONWorker.prototype._getTextDocument = function (uri) {\n var models = this._ctx.getMirrorModels();\n for (var _i = 0, models_1 = models; _i < models_1.length; _i++) {\n var model = models_1[_i];\n if (model.uri.toString() === uri) {\n return jsonService.TextDocument.create(uri, this._languageId, model.version, model.getValue());\n }\n }\n return null;\n };\n return JSONWorker;\n}());\nexport { JSONWorker };\n// URI path utilities, will (hopefully) move to vscode-uri\nvar Slash = '/'.charCodeAt(0);\nvar Dot = '.'.charCodeAt(0);\nfunction isAbsolutePath(path) {\n return path.charCodeAt(0) === Slash;\n}\nfunction resolvePath(uriString, path) {\n if (isAbsolutePath(path)) {\n var uri = URI.parse(uriString);\n var parts = path.split('/');\n return uri.with({ path: normalizePath(parts) }).toString();\n }\n return joinPath(uriString, path);\n}\nfunction normalizePath(parts) {\n var newParts = [];\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\n var part = parts_1[_i];\n if (part.length === 0 || (part.length === 1 && part.charCodeAt(0) === Dot)) {\n // ignore\n }\n else if (part.length === 2 && part.charCodeAt(0) === Dot && part.charCodeAt(1) === Dot) {\n newParts.pop();\n }\n else {\n newParts.push(part);\n }\n }\n if (parts.length > 1 && parts[parts.length - 1].length === 0) {\n newParts.push('');\n }\n var res = newParts.join('/');\n if (parts[0].length === 0) {\n res = '/' + res;\n }\n return res;\n}\nfunction joinPath(uriString) {\n var paths = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n paths[_i - 1] = arguments[_i];\n }\n var uri = URI.parse(uriString);\n var parts = uri.path.split('/');\n for (var _a = 0, paths_1 = paths; _a < paths_1.length; _a++) {\n var path = paths_1[_a];\n parts.push.apply(parts, path.split('/'));\n }\n return uri.with({ path: normalizePath(parts) }).toString();\n}\nexport function create(ctx, createData) {\n return new JSONWorker(ctx, createData);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport * as worker from '../../editor/editor.worker.js';\nimport { JSONWorker } from './jsonWorker.js';\nself.onmessage = function () {\n // ignore the first message\n worker.initialize(function (ctx, createData) {\n return new JSONWorker(ctx, createData);\n });\n};\n"],"sourceRoot":""} \ No newline at end of file